<?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>226280</bug_id>
          
          <creation_ts>2021-05-26 11:00:17 -0700</creation_ts>
          <short_desc>Next step toward using std::optional directly instead of through WTF::Optional typedef</short_desc>
          <delta_ts>2021-05-27 18:27:24 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>alecflett</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1763975</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-26 11:00:17 -0700</bug_when>
    <thetext>Next step toward using std::optional directly instead of through WTF::Optional typedef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764214</commentid>
    <comment_count>1</comment_count>
      <attachid>429844</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-26 21:54:08 -0700</bug_when>
    <thetext>Created attachment 429844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764217</commentid>
    <comment_count>2</comment_count>
      <attachid>429845</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-26 22:26:00 -0700</bug_when>
    <thetext>Created attachment 429845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764218</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-26 22:27:44 -0700</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 https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API

This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764231</commentid>
    <comment_count>4</comment_count>
      <attachid>429845</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 23:11:18 -0700</bug_when>
    <thetext>Comment on attachment 429845
Patch

I see you couldn’t resist and did some refactoring in this already very large patch :) r=me once the bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764358</commentid>
    <comment_count>5</comment_count>
      <attachid>429887</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-27 09:30:02 -0700</bug_when>
    <thetext>Created attachment 429887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764512</commentid>
    <comment_count>6</comment_count>
      <attachid>429932</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-27 14:54:46 -0700</bug_when>
    <thetext>Created attachment 429932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764620</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-27 18:26:56 -0700</bug_when>
    <thetext>Committed r278185 (238228@main): &lt;https://commits.webkit.org/238228@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764621</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-27 18:27:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/78598141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429844</attachid>
            <date>2021-05-26 21:54:08 -0700</date>
            <delta_ts>2021-05-26 22:25:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226280-20210526215406.patch</filename>
            <type>text/plain</type>
            <size>2524066</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OTNiZWEyNWE3ZWZkMDViM2M0Nzk2MmY2ZmJlZWUzYTQ0N2QwNTllLi5hYWI5MDgwY2M2NTQyYWVk
NjMxM2E4NWNlM2UwMTg0OTIwYmFkOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhl
IHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB5YXJyL1lh
cnJTeW50YXhDaGVja2VyLmNwcDogU2luY2UgdGhlIHN0eWxlIGNoZWNrZXIgY29tcGxhaW5lZCBh
Ym91dCB0aGlzIGZpbGUsCisgICAgICAgIHR3ZWFrZWQgc3R5bGUgdG8gbWFrZSBpdCBoYXBweSBh
ZnRlciB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZSwgYW5kCisgICAgICAg
IGFsc28gaGFuZC11cGRhdGVkIE9wdGlvbmFsIHRvIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3
ZSB3ZXJlIHRvdWNoaW5nIGl0LgorCiAyMDIxLTA1LTI2ICBUYWRldSBaYWdhbGxvICA8dHphZ2Fs
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IEFTU0VSVElPTiBGQUlMRUQ6ICFp
c0NvbXBpbGF0aW9uVGhyZWFkKCkgaW4gSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZENvbXBp
bGF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMDk5NzMyYzI4OTJhM2UwOTBkM2E3ODlhM2YwYTQyMzFiYmMzNmZmZi4u
NTk3NTdiMGRlZWM0ZTE1YjQzYmY4YWMzZmIxM2FjOGVhOWViMzFhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQg
b2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFt
aW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB3dGYvT3B0aW9uYWwu
aDogUmVtb3ZlIFdURjo6bnVsbG9wdF90IGFuZCBXVEY6Om1ha2VPcHRpb25hbC4KKworICAgICAg
ICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6bWFwSG9z
dE5hbWUpOiBDb252ZXJ0IGZyb20gbnVsbG9wdCB0byBzdGQ6Om51bGxvcHQuCisKIDIwMjEtMDUt
MjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgdGltaW5n
c2FmZV9iY21wKCkgaW4gV1RGOjpjb25zdGFudFRpbWVNZW1jbXAoKSB3aGVuIGF2YWlsYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDNmMWJkN2EzOTI5NmYyZjRkM2VjOThiNGFjYTcwZjM1NDQyM2NjY2QuLjg3
NjE2MTg3NzU5MGY2ZTVhMTA4OTIwMjdiNWIyOWE3NTY1ZTQ5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhl
IHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oOiBTaW5jZSBzdHlsZSBjaGVj
a2VyIGNvbXBsYWluZWQKKyAgICAgICAgYWJvdXQgdGhlIG5hbWVzIG9mIHNvbWUgYXJndW1lbnRz
LCBmaXhlZCB0aGVtLCBhbmQgYWxzbyBoYW5kLXVwZGF0ZWQgT3B0aW9uYWwgdG8KKyAgICAgICAg
c3RkOjpvcHRpb25hbCBhcyBsb25nIGFzIHdlIHdlcmUgdG91Y2hpbmcgaXQuCisKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDogU2luY2Ugc3R5bGUgY2hlY2tlciBjb21wbGFpbmVk
IGFib3V0IHRoZSBtaXggb2YKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYW5kIGlubGluZWQgZnVu
Y3Rpb25zLCBtb3ZlZCB0aGVtIG91dCBvZiBsaW5lLCBhbmQKKyAgICAgICAgYWxzbyBoYW5kLXVw
ZGF0ZWQgT3B0aW9uYWwgdG8gc3RkOjpvcHRpb25hbCBhcyBsb25nIGFzIHdlIHdlcmUgdG91Y2hp
bmcgaXQuCisgICAgICAgIEFsc28gcmVtb3ZlZCBpczxFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Pigp
LgorICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6IERpdHRvLgorCiAy
MDIxLTA1LTI2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBNZWRpYVNlc3Npb24gcmVhZHlzdGF0ZSBlbnVtcyBhbGwgbG93ZXJjYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA2NjRiNDRhMDlkZmU0NDViMjJmZjA4NzA2NDkwNDUyODMxOTkxMGYyLi44
OWVlNzY0Yjg5MTg4YzI2MWQ4NDdiYTg5NDdlZGM2N2QxYzAwZjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRp
cmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBB
Y2NlcHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUt
MjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IGEgUEFMIHNvZnRsaW5raW5nIGhlYWRlciBmb3IgdGhlIFJldmVhbCBmcmFtZXdvcmsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZGI1Y2QyNmY1Y2E4ZGE2MTcwZDlkOWYwYjAwMWNmMTFkMDY5N2NiZC4uZGQxZjI5MzI5
N2JmYmYyYzZmM2FhOWM1OWZmMmNmY2Q0ZmIxYzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2Yg
dGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5n
IGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjYgIEplYW4tWXZlcyBBdmVu
YXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE1lZGlhU2Vzc2lvbiByZWFkeXN0
YXRlIGVudW1zIGFsbCBsb3dlcmNhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggN2E1YTFjYWU0
YzExYjg2NTAzZGY2MWMwYTg5MzRmOTkwZjE1MGM0Mi4uNzhlODM2NTAyZTdiMjJkNDgxOGI1ZjYw
OTY5OGExYjgzNGY4NjI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4
dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhy
b3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4pOiBBY2NlcHQgdGhl
IHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjQgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmdCdWlsZGVy
OjphcHBlbmRMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMTk3ODYxOTYz
MDI1ZGQ4NTJlZTAyZGYzMjJiMjMyZTAyOGZjZTA4OS4uYTM1NTVjZTNlNTM4OTAwZTFiNWUxMDQ1
ODkxOGM0YmUxMmRlYTcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDIxLTA1LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkgaW5zdGVh
ZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwgdHlwZWRlZgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVu
YW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZS4KKwogMjAyMS0wNS0yNSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaXJ0dWFsaXplIEdyYXBo
aWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGY5NmE2YzRkOWRmNGI0
MGNkY2JlYjc2NWY3N2U2NGU4MDNhYmU2NDguLjI5ZGU4YzAzYzdkYzhiZmU5ZTQ1ZjNhYWRkNjFm
NWIyOTI1ZmJiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2Yg
dGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5n
IGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjUgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlydHVhbGl6ZSBHcmFwaGljc0Nv
bnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHAKaW5kZXggMDVhMWZlZDY1NzYwOGQzZmM1MWQ5ZTM1MzhhNmYzODUwODBj
ODllYi4uNjBlZDIyMTQyNjM4NTcwNmJhMTEyNWYxYjkwZWI0YTg0NzJkMzY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3BlY3RvclNlcnZlci5j
cHAKQEAgLTM1LDYgKzM1LDYgQEAgdWludDE2X3QgSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXJTdGFy
dChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KQogICAgIGlmICghc2VydmVyLnN0
YXJ0KGFkZHJlc3MsIHBvcnQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzZXJ2
ZXIuZ2V0UG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHNlcnZlci5nZXRQb3J0KCkudmFs
dWVfb3IoMCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcAppbmRleCBiZTU3YTJlMWI3ZjA3
NDg5ODY4MDlmM2I1NzdlMTAwYWRjNTllMDVmLi5hNGUxYjU0MmJmZmM0OTY3ZWFlNzlkOTQ4OWQy
Yzg0MDcwZDM5NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDQ2xhc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFz
cy5jcHAKQEAgLTY5OCw3ICs2OTgsNyBAQCBKU0NWYWx1ZSoganNjX2NsYXNzX2FkZF9jb25zdHJ1
Y3Rvcl92YXJpYWRpYyhKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5hbQogICAgIGlm
ICghbmFtZSkKICAgICAgICAgbmFtZSA9IHByaXYtPm5hbWUuZGF0YSgpOwogCi0gICAgcmV0dXJu
IGpzY0NsYXNzQ3JlYXRlQ29uc3RydWN0b3IoanNjQ2xhc3MsIG5hbWUgPyBuYW1lIDogcHJpdi0+
bmFtZS5kYXRhKCksIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSwgcmV0dXJuVHlw
ZSwgV1RGOjpudWxsb3B0KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIGpzY0NsYXNzQ3JlYXRlQ29u
c3RydWN0b3IoanNjQ2xhc3MsIG5hbWUgPyBuYW1lIDogcHJpdi0+bmFtZS5kYXRhKCksIGNhbGxi
YWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSwgcmV0dXJuVHlwZSwgc3RkOjpudWxsb3B0KS5s
ZWFrUmVmKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGpzY0NsYXNzQWRkTWV0aG9kKEpTQ0NsYXNzKiBq
c2NDbGFzcywgY29uc3QgY2hhciogbmFtZSwgR0NhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1
c2VyRGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeSwgR1R5cGUgcmV0dXJuVHlwZSwg
T3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQpAQCAtODIzLDcgKzgyMyw3IEBA
IHZvaWQganNjX2NsYXNzX2FkZF9tZXRob2RfdmFyaWFkaWMoSlNDQ2xhc3MqIGpzY0NsYXNzLCBj
b25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhCiAgICAgZ19yZXR1cm5faWZfZmFpbChjYWxsYmFjayk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChqc2NDbGFzcy0+cHJpdi0+Y29udGV4dCk7CiAKLSAgICBq
c2NDbGFzc0FkZE1ldGhvZChqc2NDbGFzcywgbmFtZSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0
cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBXVEY6Om51bGxvcHQpOworICAgIGpzY0NsYXNzQWRkTWV0
aG9kKGpzY0NsYXNzLCBuYW1lLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnksIHJl
dHVyblR5cGUsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKaW5kZXggMTkwY2I4ODVmYzRhNThkMjFlODEzMjQ2OTRi
NWE2MGRlYTZkOGJmMy4uMzU5MWJiNzkyNDQ0NTI1MWM1OTI3ZWFjYjJmZTI4ODkyYWZjNTA2YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwCkBAIC0xMjY3
LDcgKzEyNjcsNyBAQCBKU0NWYWx1ZSoganNjX3ZhbHVlX25ld19mdW5jdGlvbl92YXJpYWRpYyhK
U0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLAogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEpTQ19JU19DT05URVhUKGNvbnRleHQpLCBudWxscHRyKTsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjYWxsYmFjaywgbnVsbHB0cik7CiAKLSAgICByZXR1cm4ganNjVmFsdWVGdW5j
dGlvbkNyZWF0ZShjb250ZXh0LCBuYW1lLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3Rp
ZnksIHJldHVyblR5cGUsIFdURjo6bnVsbG9wdCkubGVha1JlZigpOworICAgIHJldHVybiBqc2NW
YWx1ZUZ1bmN0aW9uQ3JlYXRlKGNvbnRleHQsIG5hbWUsIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVz
dHJveU5vdGlmeSwgcmV0dXJuVHlwZSwgc3RkOjpudWxsb3B0KS5sZWFrUmVmKCk7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQppbmRleCA3NGM5Njk0ZjE1YmE5NDE4MTcwNjY2
YzI1MTcyNjI5Nzc5ZGZkNzk0Li40OThhMjhlMmE0ODFlMzQ0OTI0NGEwN2FiNDAyY2ZlNGI0YTA5
ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5z
L2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtODUsNyArODUsNyBAQCAke21h
Y3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUNMQVJFX0JV
SUxUSU5fR0VORVJBVE9SKQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50Q291bnQpIFxcCiBKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwK
IHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNTb3VyY2UoKSwgV1RGOjpudWxsb3B0LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwK
KyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxl
KCktPmxpbmsodm0sIG51bGxwdHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMj
U291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCiB9CiAk
e21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFU
T1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC05Niw3ICs5Niw3IEBAICR7
bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRP
UikKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5h
bWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1
cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmso
dm0sIG51bGxwdHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCks
IFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZt
LmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBu
dWxscHRyLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJB
VE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTA4LDcgKzEwOCw3IEBA
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklO
RV9CVUlMVElOX0dFTkVSQVRPUikKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMj
R2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVu
dERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAot
ICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCBjbGll
bnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2Rl
TmFtZSMjU291cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBc
XAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1l
TEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCBj
bGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5j
b2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMp
OyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxU
SU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtMTIwLDcg
KzEyMCw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERhdGEqIGNsaWVudERhdGEg
PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOyBcXAotICAgIHJl
dHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRp
bnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCBjbGllbnREYXRh
LT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMj
U291cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAorICAg
IHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFt
ZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcXAog
fQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAppbmRleCBlNTE3
NTdlOWI4ZmM2NDI4NzgyN2MxNmQwMmQyMWNjMjE4ZmIxMzI2Li44MTVkY2Y4NzM3NGFhM2IzNTc5
ODlkZjY3ZmU3MmJhOTQwYjMzYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaApAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZEFscmVhZHlEaXNhc3NlbWJsZSgpIHsgbV9hbHJlYWR5RGlzYXNzZW1ibGVkID0gdHJ1ZTsgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2xlYXJQcm9maWxlU3RhdGlzdGlj
cygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlU3RhdGlz
dGljcyhPcHRpb25hbDxQcmludFN0cmVhbSo+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3RpY3MoT3B0aW9uYWw8UHJp
bnRTdHJlYW0qPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgYWRkTWFpblRocmVhZEZpbmFsaXphdGlvblRhc2soY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNGZlZDVkZTgzMmIwY2E1OGJkZmI5ZDNiYTAwNzI5
YmJmMjMzZGUxOS4uNTdkNWI5NGY3Yjg1MjRkMTkxMjM2YzFlZGVlOWQ5Zjg1ZGUwYTdkMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTTY0LmgKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVy
biBQb3NpdGl2ZU9yWmVybzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCBlNDQ5
ZWY3OGNkOTc3ODJmMjAxZjgxZWQ3ODE4YTUyYjVjZTAyMTQ2Li40OGU5NTBlOWM4ZTQxY2RjYmQ2
ZjU0NzNkZjYzZjQ1OGE1YTkxODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0zMTIxLDcgKzMx
MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNp
YWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcAppbmRl
eCBlZTMzYzIxNDk3Yjk1MmM5ZDIzNmRiNGQzNTc2ZTliYTg5NjNjNjVhLi5jMjdmYjRjMTM0YTE0
NmVlOGJlODE5OTRkMmMxMmE5ZTMyNjM0Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBPcHRpb25hbDx1bnNpZ25l
ZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0JiBpbnN0KQogewogICAg
IGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnJhbmNoRGVmID0gaGlkZGVuQnJhbmNoKGluc3QpLnNo
b3VsZFRyeUFsaWFzaW5nRGVmKCkpCiAgICAgICAgIHJldHVybiAqYnJhbmNoRGVmICsgMTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEND
YWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXRlKEluc3QmIGluc3QsIENDYWxs
SGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb21tb24uY3BwCmluZGV4IGU4NTNhMjAyYzI0ODAyMmE3NmE3ZTAzNDNjYTQwMDM2
OTdiODYwOTUuLmIwZWJhNWE0MTMyMGRlODc2ODM4N2M0ODkxODdiZjczZGFlM2UyYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBPcHRpb25h
bDxHUFJSZWc+IHBpbm5lZEV4dGVuZGVkT2Zmc2V0QWRkclJlZ2lzdGVyKCkKICNpZiBDUFUoQVJN
NjQpCiAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVtcFJlZ2lzdGVyOwogI2VsaWYg
Q1BVKFg4Nl82NCkKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAjZWxzZQogI2Vycm9yIFVuaGFuZGxlZCBhcmNoaXRlY3R1cmUuCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggODdlZmI5NzZjMGVi
YWMxYTQ5MWUxNzEyMjdhNmFjOGIxM2MxMTg5NS4uYjk3YjI4NTA3MmY1M2U3YTVkNDk1ZWQwMTY0
Mjc2M2M0NGIwZjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAKQEAgLTUwMSwxMiArNTAxLDEyIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Ci0gICAg
T3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGwsIEludCBvZmZzZXQsIE9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkKKyAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gc2NhbGVGb3JTaGwoVmFsdWUqIHNobCwgSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdp
ZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNobC0+b3Bjb2RlKCkgIT0g
U2hsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghc2hsLT5jaGlsZCgxKS0+aGFzSW50MzIoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB1bnNpZ25lZCBsb2dTY2FsZSA9IHNobC0+Y2hpbGQoMSktPmFz
SW50MzIoKTsKICAgICAgICAgaWYgKHNobC0+dHlwZSgpID09IEludDMyKQogICAgICAgICAgICAg
bG9nU2NhbGUgJj0gMzE7CkBAIC01MTYsMTAgKzUxNiwxMCBAQCBwcml2YXRlOgogICAgICAgICAv
LyB0byBzaWduZWQgc2luY2UgdGhhdCdzIHdoYXQgYWxsIG9mIG91ciBBUElzIHdhbnQuCiAgICAg
ICAgIGludDY0X3QgYmlnU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGxvZ1NjYWxlKTsKICAgICAgICAgaWYgKCFpc1JlcHJlc2VudGFibGVB
czxpbnQzMl90PihiaWdTY2FsZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdW5zaWduZWQgc2NhbGUg
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihiaWdTY2FsZSk7CiAgICAgICAgIGlmICghQXJnOjppc1Zh
bGlkSW5kZXhGb3JtKHNjYWxlLCBvZmZzZXQsIHdpZHRoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gc2NhbGU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5j
cHAKaW5kZXggNmNmZDhhOWYyZmM4NzViZjM5NDNmNzk3Y2NmZGExYmYxZmIzYjI2OS4uN2MyZmEw
YzA5MjQ4Y2E3ZmNhNGY0NzY1ZTAyNmU0YjJlZjQ5MjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGNvZGUuY3BwCkBAIC00NiwxOSArNDYsMTkgQEAgT3B0aW9uYWw8T3Bjb2RlPiBpbnZl
cnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgTGVzc1RoYW46
CiAgICAgICAgIGlmICh0eXBlLmlzSW50KCkpCiAgICAgICAgICAgICByZXR1cm4gR3JlYXRlckVx
dWFsOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGlmICh0eXBlLmlzSW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gTGVzc0VxdWFsOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgTGVzc0VxdWFsOgog
ICAgICAgICBpZiAodHlwZS5pc0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFu
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNhc2UgR3JlYXRlckVxdWFsOgogICAgICAgICBpZiAodHlwZS5pc0ludCgpKQog
ICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgQWJvdmU6CiAgICAgICAg
IHJldHVybiBCZWxvd0VxdWFsOwogICAgIGNhc2UgQmVsb3c6CkBAIC02OCw3ICs2OCw3IEBAIE9w
dGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkK
ICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgICAgIHJldHVybiBBYm92ZTsKICAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UGF0Y2hwb2ludFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwCmluZGV4IDk0ZjU4YTM3M2U4MmQ3NDRiNmU4YzQzNmZmODA3OTFmY2Rh
ODU4NDYuLmY4ZGMzNjUxZjk0Y2U1ODFkOTQwNmRiMzMxYTg5ODQzMDE4YzkwMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgdm9pZCBQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZyhJbnN0JiBpbnN0
LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0MKICAgICAgICAgY2FsbGJhY2soaW5z
dC5hcmdzW2FyZ0luZGV4XSwgcm9sZSwgYmFua0ZvclR5cGUoYXJnVHlwZSksIHdpZHRoRm9yVHlw
ZShhcmdUeXBlKSk7CiAgICAgfQogCi0gICAgZm9yRWFjaEFyZ0ltcGwoMCwgYXJnSW5kZXgsIGlu
c3QsIFNhbWVBc1JlcCwgV1RGOjpudWxsb3B0LCBjYWxsYmFjaywgV1RGOjpudWxsb3B0KTsKKyAg
ICBmb3JFYWNoQXJnSW1wbCgwLCBhcmdJbmRleCwgaW5zdCwgU2FtZUFzUmVwLCBzdGQ6Om51bGxv
cHQsIGNhbGxiYWNrLCBzdGQ6Om51bGxvcHQpOwogICAgIGFyZ0luZGV4ICs9IGluc3Qub3JpZ2lu
LT5udW1DaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gcGF0Y2hwb2ludC0+bnVt
R1BTY3JhdGNoUmVnaXN0ZXJzOyBpLS07KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmgKaW5kZXggYTBkYTcxODg3Y2QyNjg1ZGU5OTYzMWU5MWE0NDc2MjZhM2MwYzQ4YS4uNWYwYTNh
NDlkNGFiZTMzOWQ3Nzk5MzIxZWVkM2ViOGQ3NzMwMmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFyZy5oCkBAIC01ODYsNyArNTg2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IC8vIElmIHlvdSBkb24ndCBwYXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1pc3RpY2FsbHkgYXNzdW1l
cyB0aGF0IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lkdGguCi0gICAgc3RhdGljIGJvb2wgaXNW
YWxpZFNjYWxlKHVuc2lnbmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBXVEY6Om51
bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2lnbmVkIHNjYWxlLCBPcHRp
b25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KHNjYWxlKSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTExODIsNyArMTE4Miw3IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6Oklz
TGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oSW50IG9m
ZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gV1RGOjpudWxsb3B0KQorICAgIHN0YXRpYyBi
b29sIGlzVmFsaWRBZGRyRm9ybShJbnQgb2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBz
dGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoaXNYODYoKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+
PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbmRleEZvcm0odW5zaWduZWQgc2NhbGUsIEludCBv
ZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBPcHRpb25h
bDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoIWlzVmFs
aWRTY2FsZShzY2FsZSwgd2lkdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIy
Miw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIC8vIElmIHlvdSBkb24ndCBwYXNzIGEgd2lkdGgg
dGhlbiB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhlIHJp
Z2h0IHdpZHRoLiBCdXQKICAgICAvLyB0aGUgd2lkdGggaXMgcmVsZXZhbnQgdG8gdmFsaWRpdHks
IHNvIHBhc3NpbmcgYSBudWxsIHdpZHRoIGlzIG9ubHkgdXNlZnVsIGZvciBhc3NlcnRpb25zLiBE
b24ndAogICAgIC8vIHBhc3MgbnVsbCB3aWR0aHMgd2hlbiBjYXNjYWRpbmcgdGhyb3VnaCBBcmdz
IGluIHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciEKLSAgICBib29sIGlzVmFsaWRGb3JtKE9wdGlv
bmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3QKKyAgICBib29sIGlzVmFsaWRG
b3JtKE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW52YWxpZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDkwNDE4MWI1Nzk1M2M5ZDcyNGYy
NWY2NTgxNDQ4NTE5OTlkZmQzZjEuLmMwNGYwOTVjZGQ2MzdhY2UzNjYyN2IyZTQxOGE4YmI0NDU2
NjgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtMjE3
LDcgKzIxNyw3IEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBDb2RlOjplbnRyeXBvaW50SW5kZXgoQmFz
aWNCbG9jayogYmxvY2spIGNvbnN0CiAgICAgICAgIGlmIChtX2VudHJ5cG9pbnRzW2ldLmJsb2Nr
KCkgPT0gYmxvY2spCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIENvZGU6OnNl
dENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdChSZWdpc3RlckF0T2Zmc2V0TGlzdCYmIHJl
Z2lzdGVyQXRPZmZzZXRMaXN0LCBTdGFja1Nsb3QqIHNsb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCBjMWIwMzE3
MjdiY2Q4OWQ3ODZmNTgwMDI2OGI1MmJhODFmYzAxNWYzLi45NzUwYWRmN2Y0OTBmMDkxNzc1OTMx
ZTUxMzFkYTQ3M2FmMDZmOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTUwOSwxNCArNTA5LDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBpZiAoYXJnLmlzUmVnKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y29uc3QgUmVnQ29uc3QqIGFsaWFzID0gZ2V0UmVnQ29uc3QoYXJnLnJlZygpKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXJnLmlzU3RhY2soKSkgewogICAgICAgICAg
ICAgICAgIGlmIChjb25zdCBTbG90Q29uc3QqIGFsaWFzID0gZ2V0U2xvdENvbnN0KGFyZy5zdGFj
a1Nsb3QoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlhcy0+Y29uc3RhbnQ7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGNsb2JiZXIoY29uc3QgQXJnJiBhcmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKaW5kZXggYWYwZDIwMzlkZDg2NThlMzBhZTFm
OTFmOTVjMWZmMTYxNjljZWQ1NS4uZGFhODk1MzA0YTRjYzgzMmI3MWU0YzQ3YmUxYzNhNTllMGUy
MzM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMu
aApAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSBib29sIEluc3Q6OmFkbWl0c0V4dGVuZGVkT2Zm
c2V0QWRkcihBcmcmIGFyZykKIGlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxk
VHJ5QWxpYXNpbmdEZWYoKQogewogICAgIGlmICghaXNYODYoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAo
a2luZC5vcGNvZGUpIHsKICAgICBjYXNlIEFkZDMyOgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIGlubGlu
ZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQogICAgIGNh
c2UgTXVsRmxvYXQ6CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKICAgICAgICAgaWYgKE1h
Y3JvQXNzZW1ibGVyOjpzdXBwb3J0c0FWWCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAgICAg
aWYgKGFyZ3Muc2l6ZSgpID09IDMpCiAgICAgICAgICAgICByZXR1cm4gMjsKQEAgLTE3OCw3ICsx
NzgsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5n
RGVmKCkKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgYm9vbCBp
c1NoaWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwZWNpYWwuY3BwCmluZGV4IGMwYzAxMzY5YTlhYWEyNGVjNjZhNmUxMmQ5ZDkwODBj
NGVkNzYzODIuLjk1NWU4YTk3MDE1MmM3YjAyNjM2ZDM4YWMxMTkwMGQ1ZTM3NDI1OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcApAQCAtNTIsNyArNTIs
NyBAQCBDU3RyaW5nIFNwZWNpYWw6Om5hbWUoKSBjb25zdAogCiBPcHRpb25hbDx1bnNpZ25lZD4g
U3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYpCiB7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFNwZWNpYWw6Omlz
VGVybWluYWwoSW5zdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDY2NDE3YzQxMzIxZDI0NzliNTY4ODhmYWFm
YWRkYTljY2Q5YzNlYzMuLmU4ZTc1ZjZkMTY5NDhmZjM1ODM4MDY5ZDk1Mjk0MTJhYTFhNGZmM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhl
Y3V0YWJsZXMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBz
b3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50
LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5
LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgcHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKICAg
ICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAK
aW5kZXggMmE3NTg4ZDZkNWNjN2EzNThlOGNjMWM4OTMzMWNiOTIxZjc5Yjc5YS4uMzM5Y2FhOTRh
MzQzNDk3YzI3ZTJkOTczM2NlZDZiNzRmOGMwNGY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cApAQCAtMTE5LDEwICsxMTksMTAgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiBPcHRpb25hbDxCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIGlmICghaWRlbnQuaXNQcml2YXRlTmFtZSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRl
bnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdkZjA1ZTEwYmM5MGI2NTZm
MzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjFjZjkzMmI2NWY1OTVlMWJlMDE1ZThiYjlmODZiODkz
ZTVlMTI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2Vk
Q29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgIGlmIChzaG91bGRVcGRhdGVGdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCiAgICAgICAgICAgICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVk
Q2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5r
ZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwotICAgICAgICBtX2Z1bmN0
aW9uRGVjbHNbaV0uc2V0KHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsodm0sIHRv
cExldmVsRXhlY3V0YWJsZSwgb3duZXJFeGVjdXRhYmxlLT5zb3VyY2UoKSwgV1RGOjpudWxsb3B0
LCBOb0ludHJpbnNpYywgb3duZXJFeGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KSkpOworICAgICAgICBtX2Z1bmN0aW9uRGVjbHNbaV0uc2V0KHZtLCB0aGlzLCB1bmxpbmtlZEV4
ZWN1dGFibGUtPmxpbmsodm0sIHRvcExldmVsRXhlY3V0YWJsZSwgb3duZXJFeGVjdXRhYmxlLT5z
b3VyY2UoKSwgc3RkOjpudWxsb3B0LCBOb0ludHJpbnNpYywgb3duZXJFeGVjdXRhYmxlLT5pc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24oKSkpOwogICAgIH0KIAogICAgIG1fZnVuY3Rpb25FeHBycyA9
IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+Pih1bmxpbmtlZENv
ZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkV4cHJzKCkpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIGJv
b2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25FeHByKGkp
OwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKQogICAg
ICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRS
YW5nZShvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGlu
Z0VuZE9mZnNldCgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCh2bSwgdGhpcywg
dW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhl
Y3V0YWJsZS0+c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0
YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKKyAgICAgICAgbV9mdW5jdGlvbkV4
cHJzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZl
bEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIHN0ZDo6bnVsbG9wdCwgTm9J
bnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsK
ICAgICB9CiAKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFu
ZGxlcnMoKSkgewpAQCAtMzQ2NSw3ICszNDY1LDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29k
ZUJsb2NrOjpmaW5kUEModm9pZCogcGMpCiAgICAgaWYgKE9wdGlvbmFsPENvZGVPcmlnaW4+IGNv
ZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYykpCiAgICAgICAgIHJldHVybiBj
b2RlT3JpZ2luOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
Y3BwCmluZGV4IDFjNTk5MzczMzEzYmY4ODEwM2M5NWJmNmRlMmUyYzRkOTExNDkwMWIuLjE5YTM1
NTZjZGUxYTQyNzc4MWMxM2UwNmUwYzU1MjVlYTZkZjRlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcApAQCAtNTI3LDIxICs1MjcsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFByb3RvdHlwZUNo
YWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamUKICAg
ICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkg
ewogICAgICAgICAgICAgaWYgKCFjdXJyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAgICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5oYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhc09i
amVjdChjdXJyZW50KSk7CiAgICAgICAgICAgICBmbGF0dGVuZWREaWN0aW9uYXJ5ID0gdHJ1ZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5pc1Byb3h5
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50ID09IHRhcmdl
dCkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNh
Y2hpbmcoSlNHbG9iYWxPYmplCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgICAgICBp
ZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHVzZXNQb2x5UHJvdG8gPSB0cnVlOwog
ICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLT5wcm90b3R5cGVGb3JMb29rdXAoZ2xv
YmFsT2JqZWN0LCBjdXJyZW50KTsKICAgICAgICAgfSBlbHNlCkBAIC01NjgsNyArNTY4LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWlu
Rm9yQ2FjaGluZyhKU0dsb2JhbE9iamUKICAgICB9CiAKICAgICBpZiAoIWZvdW5kICYmICEhdGFy
Z2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzIHJlc3VsdDsKICAgICBy
ZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRleCA1OWZhNjU2Yzc1ZjE2
ZTYxYjNlMWRlY2UzNDU0MWNiNmJmMzAzMjljLi44NTI3OTQwYmYwNTQ2N2EzZDFkYzY0Y2I5MTMy
MTM4NTYxYWQ4YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKQEAgLTcxOCw3ICs3MTgsNyBAQCBPcHRpb25hbDxTcGVjdWxhdGVk
VHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQogICAgIGNhc2UgRGF0YVZp
ZXdUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0OwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IDAwNDRhNjJkYzI1N2Q3
YTk2ZTlmNWVhY2EwMDIxNDQ3N2YzMjIzMDkuLmQxNjkyZTE3NmUxMGU4MWFiMDU5YTJkYmVlYjE2
Y2Y3NjM5N2Q2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAg
cHVibGljOgogICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogCiAgICAgU291cmNlQ29k
ZSBsaW5rZWRTb3VyY2VDb2RlKGNvbnN0IFNvdXJjZUNvZGUmKSBjb25zdDsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBTY3JpcHRFeGVjdXRhYmxl
KiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNvdXJjZSwgT3B0
aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBXVEY6Om51bGxvcHQsIEludHJpbnNpYyA9
IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBTY3JpcHRF
eGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNv
dXJjZSwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBzdGQ6Om51bGxvcHQsIElu
dHJpbnNpYyA9IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZh
bHNlKTsKIAogICAgIHZvaWQgY2xlYXJDb2RlKFZNJiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGJkYmFhMjE0OTVlMDEzZTk3Y2Y1OWRkNTRlNzUzZWM4YjA5MjMwZTQuLjVkYTY1Mjc4
ZDdmMGY3MGNhMmE0MjIwNjk4M2JlNWM1MzJjMTYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0z
MDI1LDcgKzMwMjUsNyBAQCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbQogICAgIH0KIAogICAgIGlm
ICghcmVzdWx0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDYwLDcg
KzQ0NjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFRlbXBsYXRl
T2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcAogICAgICAgICBBU1NFUlQoc3RyaW5n
LT5yYXcoKSk7CiAgICAgICAgIHJhd1N0cmluZ3MuYXBwZW5kKHN0cmluZy0+cmF3KCktPmltcGwo
KSk7CiAgICAgICAgIGlmICghc3RyaW5nLT5jb29rZWQoKSkKLSAgICAgICAgICAgIGNvb2tlZFN0
cmluZ3MuYXBwZW5kKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjb29rZWRTdHJpbmdzLmFw
cGVuZChzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb29rZWRTdHJp
bmdzLmFwcGVuZChzdHJpbmctPmNvb2tlZCgpLT5pbXBsKCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBh
NDljYTcwNzQ1NjlmY2E1ZGU2YzllZGEyZjBhNmJmYmZkNWYzZjI5Li43YzE4YjgxM2RmZTYzNmRk
NjRjYzU5OThkNTJmMTRlYjYxZTczNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMDI2LDcgKzMwMjYsNyBAQCBS
ZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMy
KCkgJiYgdmFsdWUuYXNJbnQzMigpID49IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBV
SW50MzJSZXN1bHQ6OkNvbnN0YW50OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH07CiAgICAgICAgIGF1dG8gbGVmdFJlc3VsdCA9IGlzVUludDMyKG1fZXhwcjEpOwogICAgICAg
ICBhdXRvIHJpZ2h0UmVzdWx0ID0gaXNVSW50MzIobV9leHByMik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAppbmRleCA3ZmNi
NTg1MDAwMzY2MDkyNGI0Yjc5OTRmY2E3ZjEwNmYwODBiNmZjLi41NjhmZTMzOGFhMDY3NTFmMjc2
ZDM1NGUyYjhlMDAxZGEzYWUzNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgT3B0aW9u
YWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2Nh
dGlvbkZvckxpbmVDb2x1bW4KICAgICAgICAgcmV0dXJuIGEucG9zaXRpb24ubGluZSA8IGIucG9z
aXRpb24ubGluZTsKICAgICB9KTsKICAgICBpZiAoaXQgPT0gbV9wb3NpdGlvbnMuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAobGluZSA9PSBpdC0+cG9zaXRpb24ubGluZSAmJiBjb2x1bW4gPT0gaXQtPnBv
c2l0aW9uLmNvbHVtbigpKSB7CiAgICAgICAgIC8vIEZvdW5kIGFuIGV4YWN0IHBvc2l0aW9uIG1h
dGNoLiBSb2xsIGZvcndhcmQgaWYgdGhpcyB3YXMgYSBmdW5jdGlvbiBFbnRyeS4KQEAgLTk5LDcg
Kzk5LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6
OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4KICAgICB9CiAKICAgICAvLyBObyBwYXVz
ZSBwb3NpdGlvbnMgZm91bmQuCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6OnNvcnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKaW5kZXggODdlOTlhOTRmNjNj
N2VhMzU2ZDNkYzFlYmQyMzhmNTc1YmFmZDgzNy4uMjQ0OTgwMWZmMGI0ZTExNmJkNGJlNDk5YjUz
Y2Q2NGUzOGRhMzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3Bw
CkBAIC0yMzMsNyArMjMzLDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBD
KENvZGVCbG9jayosIHZvaWQqIHBjKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEpJVENvZGU6
OmZpbmFsaXplT1NSRW50cnlwb2ludHMoVmVjdG9yPE9TUkVudHJ5RGF0YT4mJiBvc3JFbnRyeSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGUzMzY5
OGU4ZTY1MWEzNjkzMTQ5YmMwODI5YzU2MzliYmRjNTMxOTMuLjc1MTNiNGQ0YmUwZDA5ZmExMDNm
NThiMTc3ZTNhZmJlYzk4MGEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcApAQCAtMTgyMiw3ICsxODIyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwog
fQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhT
aXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE4MzgsNyArMTgzOCw3
IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQxNkFycmF5V2l0aE9u
ZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
ICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciog
dmVjdG9yKSkKQEAgLTE4NTQsNyArMTg1NCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBX
VEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDMyQXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQog
CiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE4NzAsNyArMTg3MCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50OEFycmF5V2l0aE9uZUFy
Z3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFs
dWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAo
SgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhD
bGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBA
IC0xOTAyLDcgKzE5MDIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVf
Q0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9w
dCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmlj
VHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3Ip
KQpAQCAtMTkzNCw3ICsxOTM0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0
MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpu
dWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUs
IGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTk1MCw3ICsxOTUwLDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVB
cmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVk
VmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKQEAgLTE5NjYsNyArMTk2Niw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xv
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
Y29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ0ludDY0QXJy
YXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9w
dCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWludDY0
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xOTgy
LDcgKzE5ODIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnVWlu
dDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnVWludDY0QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnVWludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRvciwgSlNDZWxsKiwgKFZN
KiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCmluZGV4IGM0YzgyOGY0ZmYxZDljYTQ2NTFhMzc2Y2FkZTJkMDJkNWViNTkw
NjkuLmQyOTNlYzc0ODFmOTIzODI0ZjdmOGNjN2UxN2RmYmZmYTAyOWUwMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNjc4LDcgKzY3OCw3IEBAIHZvaWQgUGxhbjo6
Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKQogCiAgICAgZm9yICh1bnNpZ25lZCBs
b2NhbCA9IG1fbXVzdEhhbmRsZVZhbHVlcy5udW1iZXJPZkxvY2FscygpOyBsb2NhbC0tOykgewog
ICAgICAgICBpZiAoIWxpdmVuZXNzW2xvY2FsXSkKLSAgICAgICAgICAgIG1fbXVzdEhhbmRsZVZh
bHVlcy5sb2NhbChsb2NhbCkgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX211c3RIYW5k
bGVWYWx1ZXMubG9jYWwobG9jYWwpID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDk4
MWU4NmNkN2RkYjAxY2E0OTU0M2I0ZTUzNzYwMDFiZTgxNjAxMjYuLmU1MDA5NWJiNmFmZWY4N2Y3
YTFlMTI5NjdkMTI0Yjg4NDg1MjdmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
ICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBtX3N0cmVhbUluZGV4OwogICAgICAg
ICBqaXQtPm1fb3JpZ2luID0gbV9vcmlnaW47CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwoaml0
KTsKLSAgICAgICAgaml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmIChBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIGppdC0+bV9qaXQuYWJvcnRXaXRo
UmVhc29uKERGR1Nsb3dQYXRoR2VuZXJhdG9yRmVsbFRocm91Z2gpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNmOTEx
NGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhmOC4uMzVkN2ZlNWJhMjU1Y2YxMTA0ODk1
MzVmODEzM2U3ODVmYjNkZjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyJiBwY1Rv
Q29kZU9yaQogICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0gc2xvd1BhdGhMYW1iZGEu
c3RyZWFtSW5kZXg7CiAgICAgICAgIHBjVG9Db2RlT3JpZ2luTWFwQnVpbGRlci5hcHBlbmRJdGVt
KG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBjdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKICAgICAgICAgc2xvd1BhdGhMYW1iZGEuZ2VuZXJhdG9yKCk7Ci0gICAgICAgIG1f
b3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fb3V0T2ZMaW5l
U3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC05MTI2LDcgKzkxMjYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQog
ICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgbGVuZ3RoR1BSKTsKIAogICAgICAg
ICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICAgICAgZW1pdFBvcHVsYXRl
U2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBXVEY6Om51bGxv
cHQsIGxlbmd0aEdQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUlu
ZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiksIHN0ZDo6bnVsbG9wdCwgbGVu
Z3RoR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92ZShs
ZW5ndGhHUFIsIHRlbXBHUFIpOwogCkBAIC05MTM2LDcgKzkxMzYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXBTdGFydEluZGV4KHRoaXMpOwogICAgICAgICAg
ICAgR1BSUmVnIHN0YXJ0R1BSID0gdGVtcFN0YXJ0SW5kZXguZ3ByKCk7Ci0gICAgICAgICAgICBl
bWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSks
IFdURjo6bnVsbG9wdCwgbGVuZ3RoR1BSLCBzdGFydEdQUik7CisgICAgICAgICAgICBlbWl0UG9w
dWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIHN0ZDo6
bnVsbG9wdCwgbGVuZ3RoR1BSLCBzdGFydEdQUik7CiAKICAgICAgICAgICAgIGF1dG8gdG9vQmln
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzdGFydEdQUiwgdGVtcEdQ
Uik7CiAgICAgICAgICAgICBtX2ppdC5zdWIzMihzdGFydEdQUiwgdGVtcEdQUik7IC8vIHRoZSBz
aXplIG9mIHRoZSBhcnJheSB3ZSdsbCBtYWtlLgpAQCAtOTIyNiwxMCArOTIyNiwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCB0ZW1wVmFsdWUpOwogICAg
ICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICAgICAgZW1pdFBvcHVs
YXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBXVEY6Om51
bGxvcHQsIHRlbXBWYWx1ZSwgdGVtcEdQUik7CisgICAgICAgICAgICBlbWl0UG9wdWxhdGVTbGlj
ZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiksIHN0ZDo6bnVsbG9wdCwg
dGVtcFZhbHVlLCB0ZW1wR1BSKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9qaXQubW92
ZSh0ZW1wVmFsdWUsIHRlbXBHUFIpOwotICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIFdURjo6bnVsbG9wdCwgdGVtcFZhbHVl
LCBsb2FkSW5kZXgpOworICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIHN0ZDo6bnVsbG9wdCwgdGVtcFZhbHVlLCBsb2FkSW5k
ZXgpOwogICAgIH0KIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wNSh0aGlzKTsKQEAgLTkyODMsNyAr
OTI4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSog
bm9kZSkKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
UiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgbGVuZ3RoR1BSKTsKIAogICAg
IGlmIChub2RlLT5udW1DaGlsZHJlbigpID09IDQpCi0gICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNl
SW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwgV1RGOjpudWxsb3B0LCBs
ZW5ndGhHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxvcHQsIGxlbmd0aEdQUiwg
aW5kZXhHUFIpOwogICAgIGVsc2UKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IGluZGV4R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKaW5k
ZXggYmYzNjQ0MWE3MzVhYTVlNTg3ZDI5OTBmY2FlMTY5N2U4YmZmNjJjZi4uMGM2NWI5NjA3ZDI5
MzVhZDAxZTFjYTAxNDc4YTc0NWI3YWE4YTIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4g
SklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lkKiBwYykKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAppbmRleCBhNzFiNzAyZjZmNmJjMGNjMDhlYThjM2MxM2UxODA4ODQ0ZWU5ZTQ4
Li5kMjFlNzE2YjI4NmJmYWM5YTc2NTU3MzQ5NjQ1MjU5ODk2ZTVlOTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjM0MCw3ICsyMzQwLDcgQEAgdm9pZCBIZWFwOjpkaWRG
aW5pc2hDb2xsZWN0aW9uKCkKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29sbGVjdGlvblNjb3Bl
KTsKICAgICBtX2xhc3RDb2xsZWN0aW9uU2NvcGUgPSBtX2NvbGxlY3Rpb25TY29wZTsKLSAgICBt
X2NvbGxlY3Rpb25TY29wZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NvbGxlY3Rpb25TY29wZSA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykK
ICAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0KHNjb3BlKTsKQEAgLTI5MzMsNyAr
MjkzMyw3IEBAIHZvaWQgSGVhcDo6bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkKICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7ICptX3Ro
cmVhZExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3JlcXVlc3RzLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMuYXBwZW5kKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0cy5hcHBl
bmQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xhc3RHcmFu
dGVkVGlja2V0Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV90aHJlYWRDb25kaXRp
b24tPm5vdGlmeU9uZShsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGU5OTc3MjNkMWZjN2Y1NDc1ZGFkOWJhYTk2NTgyZTNk
MzY3YTdkY2IuLjNhZDc4MWFjYzgxOTAwNThiNDAyYTcyMDgzODBkZWM1MDFkYjIzYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE5MCw4ICsxOTAsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBzaG91bGRDb2xsZWN0SGV1cmlzdGljKCk7CiAgICAgCiAgICAgLy8gUXVldWUgdXAgYSBj
b2xsZWN0aW9uLiBSZXR1cm5zIGltbWVkaWF0ZWx5LiBUaGlzIHdpbGwgbm90IHF1ZXVlIGEgY29s
bGVjdGlvbiBpZiBhIGNvbGxlY3Rpb24KLSAgICAvLyBvZiBlcXVhbCBvciBncmVhdGVyIHN0cmVu
Z3RoIGV4aXN0cy4gRnVsbCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBXVEY6Om51bGxv
cHQgY29sbGVjdGlvbnMKLSAgICAvLyBhbmQgV1RGOjpudWxsb3B0IGNvbGxlY3Rpb25zIGFyZSBz
dHJvbmdlciB0aGFuIEVkZW4gY29sbGVjdGlvbnMuIFdURjo6bnVsbG9wdCBtZWFucyB0aGF0IHRo
ZSBHQyBjYW4KKyAgICAvLyBvZiBlcXVhbCBvciBncmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVs
bCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBzdGQ6Om51bGxvcHQgY29sbGVjdGlvbnMK
KyAgICAvLyBhbmQgc3RkOjpudWxsb3B0IGNvbGxlY3Rpb25zIGFyZSBzdHJvbmdlciB0aGFuIEVk
ZW4gY29sbGVjdGlvbnMuIHN0ZDo6bnVsbG9wdCBtZWFucyB0aGF0IHRoZSBHQyBjYW4KICAgICAv
LyBjaG9vc2UgRWRlbiBvciBGdWxsLiBUaGlzIGltcGxpZXMgdGhhdCBpZiB5b3UgcmVxdWVzdCBh
IEdDIHdoaWxlIHRoYXQgR0MgaXMgb25nb2luZywgbm90aGluZwogICAgIC8vIHdpbGwgaGFwcGVu
LgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFzeW5jKEdDUmVxdWVzdCA9IEdD
UmVxdWVzdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
bmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3Bw
CmluZGV4IDE0YTNiYTAzMjAwZTFhNzFiNTZjZGU3ZTliMDMwYmY2OWRlNmQ3MDkuLmZlNDQ3ZGY3
N2EyMWE2OWM0OGEzNmQ0ODZhYzI1MjIxODAxOGNjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIE9wdGlvbmFsPEhl
YXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwoSlNDZWxsKiBjZWxsKQog
ICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICByZXR1cm4gbV9wcmV2aW91cy0+bm9kZUZvckNl
bGwoY2VsbCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9k
ZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRpZmllcikKQEAgLTE2Miwx
NiArMTYyLDE2IEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9k
ZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0CiAgICAgaWYgKGlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAobV9wcmV2aW91cykKICAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3Vz
LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihvYmplY3RJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA+IG1fbGFzdE9iamVjdElkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA8IG1fZmlyc3RPYmplY3RJZGVudGlmaWVyKSB7CiAg
ICAgICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMtPm5v
ZGVGb3JPYmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IGZvciAoYXV0byYgbm9kZSA6IG1fbm9kZXMpIHsKQEAgLTE3OSw3ICsxNzksNyBAQCBPcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVy
KHVuc2lnbmVkIG9iamVjdAogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEhlYXBTbmFwc2hv
dE5vZGU+KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAKaW5k
ZXggYmI1NWI5Y2JlMjYwMGM3OTJjODVkZWIxMTVkMWFjMjViOWJjMDUxMC4uNmM3ZmE2YzA4ZmUw
OWMwZDg1OTc5OGRhYjVlY2I0YjAyMjVlNjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcApAQCAtOTEsNyArOTEs
NyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpkcmFpbihCaXRWZWN0b3ImIHVuZXhl
Y3V0ZWQpCiAgICAgYXV0byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25l
ZD4oKT4oCiAgICAgICAgIFsmXSAoKSAtPiBPcHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICAg
ICAgaWYgKGl0ZXIgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVy
biAqaXRlcisrOwogICAgICAgICB9KTsKICAgICBleGVjdXRlKE5leHRDb25zdHJhaW50Rmlyc3Qs
IHBpY2tOZXh0KTsKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgTWFya2luZ0NvbnN0cmFpbnRT
b2x2ZXI6OmNvbnZlcmdlKGNvbnN0IFZlY3RvcjxNYXJraW5nQ29uc3RyYWludCo+JiBvcmRlcikK
ICAgICBhdXRvIHBpY2tOZXh0ID0gc2NvcGVkTGFtYmRhPE9wdGlvbmFsPHVuc2lnbmVkPigpPigK
ICAgICAgICAgWyZdICgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CiAgICAgICAgICAgICBpZiAo
ZGlkVmlzaXRTb21ldGhpbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlci5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBNYXJraW5nQ29uc3RyYWludCYgY29uc3RyYWludCA9
ICpvcmRlcltpbmRleCsrXTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJhaW50LmluZGV4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IDAzM2ExYjQ3MTMzNTI3NzdlZTBkZTVl
ZDUzZTY0ZjgzOTFmOWQ3NGYuLjQ2MDQ2ZWRiMDEzYjQ3MDAyMDFlMjUzMTI3N2MxNWFmNjg0MDE0
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p
ZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
IHsKICAgICAgICAgLy8gSW4gY2FzZSB0aGlzIGlzIGEgcmUtZW50cmFudCBjYWxsIGZyb20gYSBu
ZXN0ZWQgcnVuIGxvb3AsIHdlIGRvbid0IHdhbnQgdG8gbG9zZQogICAgICAgICAvLyB0aGUgb3V0
ZXIgcmVxdWVzdCdzIGlkIGp1c3QgYmVjYXVzZSB0aGUgaW5uZXIgcmVxdWVzdCBpcyBib2d1cy4K
LSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8bG9uZz4+IHNjb3BlZFJlcXVlc3RJZChtX2N1
cnJlbnRSZXF1ZXN0SWQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIFNldEZvclNjb3BlPE9wdGlv
bmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBzdGQ6Om51bGxv
cHQpOwogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpTT046OlZhbHVlOjpwYXJzZUpT
T04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewpAQCAtMjY4LDcgKzI2
OCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICBt
X2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwog
CiAgICAgbV9wcm90b2NvbEVycm9ycy5jbGVhcigpOwotICAgIG1fY3VycmVudFJlcXVlc3RJZCA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBzdGQ6Om51bGxvcHQ7CiB9
CiAgICAgCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90b2NvbEVycm9yKENvbW1v
bkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlci5oCmluZGV4IDhhNWVmYjMxNmU5ZDA5MzM3YWRhMjMyM2RjNmY5MjYwNTZh
OWMyZjkuLjIxN2IzMTkzZTU4ZjNmMTFjZGE2ZTY4YTgyOWE5YjhhOWMxMDFmNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
Rm9yIHN5bmNocm9ub3VzbHkgaGFuZGxlZCByZXF1ZXN0cywgYXZvaWQgcGx1bWJpbmcgcmVxdWVz
dElkIHRocm91Z2ggZXZlcnkKICAgICAvLyBjYWxsIHRoYXQgY291bGQgcG90ZW50aWFsbHkgZmFp
bCB3aXRoIGEgcHJvdG9jb2wgZXJyb3IuCi0gICAgT3B0aW9uYWw8bG9uZz4gbV9jdXJyZW50UmVx
dWVzdElkIHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8bG9uZz4gbV9jdXJyZW50UmVx
dWVzdElkIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggOTMzNTMxMzM2NDkzODlhMGEy
NTI3ZTkzZGRmYTVmOTYyYjZhODc4OC4uZjJkOTQ0M2Q1Y2FiOWQ0NTJmM2IwZjFmZDQxYzU3YWEw
ZWQ5MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgc3RhdGljIE9wdGlvbmFsPEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlPiBicmVh
a3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm8KICAgICBhdXRvIHR5cGUgPSBQcm90b2NvbDo6
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludEFjdGlvbjo6VHlwZT4odHlwZVN0cmluZyk7CiAgICAgaWYgKCF0eXBlKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBicmVha3BvaW50IGFjdGlvbiB0
eXBlOiAiX3MsIHR5cGVTdHJpbmcpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHN3aXRjaCAoKnR5cGUpIHsK
QEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEpTQzo6QnJlYWtwb2ludDo6QWN0aW9u
OjpUeXBlPiBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm8KICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTI5LDE2ICsx
MjksMTYgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKIAogICAgICAgICAgICAgICAgIC8vIFNw
ZWNpZnlpbmcgYW4gaWRlbnRpZmllciBpcyBvcHRpb25hbC4gVGhleSBhcmUgdXNlZCB0byBjb3Jy
ZWxhdGUgcHJvYmUgc2FtcGxlcwogICAgICAgICAgICAgICAgIC8vIGluIHRoZSBmcm9udGVuZCBh
Y3Jvc3MgbXVsdGlwbGUgYmFja2VuZCBwcm9iZSBhY3Rpb25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0
IGdyb3Vwcy4KLSAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmplY3QtPmdldElu
dGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjppZEtleSkudmFsdWVP
cihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQg
PSBhY3Rpb25PYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjppZEtleSkudmFsdWVfb3IoSlNDOjpub0JyZWFrcG9pbnRBY3Rpb25JRCk7CiAKLSAg
ICAgICAgICAgICAgICBhY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5n
ZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVz
ZXJHZXN0dXJlS2V5KS52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5KS52YWx1ZV9vcihm
YWxzZSk7CiAKICAgICAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGFjdGlvbikp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0b0NvbnRpbnVlID0gb3B0
aW9ucy0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjph
dXRvQ29udGludWVLZXkpLnZhbHVlT3IoZmFsc2UpOwotICAgICAgICBpZ25vcmVDb3VudCA9IG9w
dGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6
aWdub3JlQ291bnRLZXkpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG9Db250aW51ZSA9IG9wdGlv
bnMtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YXV0
b0NvbnRpbnVlS2V5KS52YWx1ZV9vcihmYWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0
aW9ucy0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpp
Z25vcmVDb3VudEtleSkudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNhbGxiYWNr
KGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7
CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWREaXNw
YXRjaEFzeW5jQ2FsbCgpCiAgICAgYXV0byYgYXN5bmNTdGFja1RyYWNlID0gaXQtPnZhbHVlOwog
ICAgIGFzeW5jU3RhY2tUcmFjZS0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKIAotICAgIG1fY3Vy
cmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50QXN5
bmNDYWxsSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghYXN5bmNTdGFja1Ry
YWNlLT5pc1BlbmRpbmcoKSkKICAgICAgICAgbV9wZW5kaW5nQXN5bmNDYWxscy5yZW1vdmUoaWRl
bnRpZmllcik7CkBAIC01MzQsOCArNTM0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNvdXJjZUlEID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIpLnZhbHVlT3Io
MCk7Ci0gICAgY29sdW1uTnVtYmVyID0gbG9jYXRpb24uZ2V0SW50ZWdlcihQcm90b2NvbDo6RGVi
dWdnZXI6OkxvY2F0aW9uOjpjb2x1bW5OdW1iZXJLZXkpLnZhbHVlT3IoMCk7CisgICAgc291cmNl
SUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxKU0M6OlNvdXJjZUlEPihzY3Jp
cHRJRFN0cikudmFsdWVfb3IoMCk7CisgICAgY29sdW1uTnVtYmVyID0gbG9jYXRpb24uZ2V0SW50
ZWdlcihQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjb2x1bW5OdW1iZXJLZXkpLnZhbHVl
X29yKDApOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01NDYsNyArNTQ2LDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRJZCwgUmVmPEpTT046OkEKIAogICAgIFByb3RvY29sOjpFcnJvclN0cmluZyBlcnJvclN0cmlu
ZzsKIAotICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpm
cm9tUGF5bG9hZChlcnJvclN0cmluZywgISF1cmwgPyB1cmwgOiB1cmxSZWdleCwgISF1cmxSZWdl
eCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLnZhbHVlT3IoMCksIFdURk1vdmUob3B0aW9ucykp
OworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpmcm9t
UGF5bG9hZChlcnJvclN0cmluZywgISF1cmwgPyB1cmwgOiB1cmxSZWdleCwgISF1cmxSZWdleCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLnZhbHVlX29yKDApLCBXVEZNb3ZlKG9wdGlvbnMpKTsK
ICAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGVycm9yU3RyaW5nKTsKIApAQCAtNzMwLDE2ICs3MzAsMTYgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9u
KFJlZjxKU08KIAogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2VhcmNoSW5Db250ZW50KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmIHNj
cmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBPcHRpb25hbDxib29sPiYmIGNhc2VTZW5zaXRp
dmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKLSAgICBhdXRvIGl0ID0gbV9zY3JpcHRz
LmZpbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2Ny
aXB0SWQpLnZhbHVlT3IoMCkpOworICAgIGF1dG8gaXQgPSBtX3NjcmlwdHMuZmluZChwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxKU0M6OlNvdXJjZUlEPihzY3JpcHRJZCkudmFsdWVf
b3IoMCkpOwogICAgIGlmIChpdCA9PSBtX3NjcmlwdHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiTWlzc2luZyBzY3JpcHQgZm9yIGdpdmVuIHNjcmlwdElkIl9zKTsKIAot
ICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJblRleHRCeUxpbmVzKGl0
LT52YWx1ZS5zb3VyY2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLnZhbHVlT3IoZmFsc2UpLCBpc1Jl
Z2V4LnZhbHVlT3IoZmFsc2UpKTsKKyAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6
c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+dmFsdWUuc291cmNlLCBxdWVyeSwgY2FzZVNlbnNpdGl2
ZS52YWx1ZV9vcihmYWxzZSksIGlzUmVnZXgudmFsdWVfb3IoZmFsc2UpKTsKIH0KIAogUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRTY3Jp
cHRTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpTY3JpcHRJZCYgc2NyaXB0SWQpCiB7
Ci0gICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52YWx1ZU9yKDApKTsKKyAgICBhdXRvIGl0
ID0gbV9zY3JpcHRzLmZpbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpT
b3VyY2VJRD4oc2NyaXB0SWQpLnZhbHVlX29yKDApKTsKICAgICBpZiAoaXQgPT0gbV9zY3JpcHRz
LmVuZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3Npbmcgc2NyaXB0IGZv
ciBnaXZlbiBzY3JpcHRJZCIpOwogCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
PiwgT3B0aW9uYQogICAgIE9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsKICAgICBPcHRpb25hbDxp
bnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKLSAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2Fs
bEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCksIGNhbGxGcmFtZUlk
LCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVlT3Io
ZmFsc2UpLCByZXR1cm5CeVZhbHVlLnZhbHVlT3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFs
dWVPcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVPcihmYWxzZSksIHJlc3VsdCwgd2FzVGhyb3du
LCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmplY3RlZFNjcmlwdC5ldmFsdWF0ZU9uQ2FsbEZy
YW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCksIGNhbGxGcmFtZUlkLCBl
eHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVlX29yKGZh
bHNlKSwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1
ZV9vcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93
biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKICAgICBpZiAocGF1c2VBbmRNdXRlKQogICAgICAgICB1
bm11dGVDb25zb2xlKCk7CkBAIC0xMDMxLDggKzEwMzEsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTaG91bGRCbGFja2JveFVSTChj
b25zdAogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIlVSTCBtdXN0IG5vdCBiZSBlbXB0eSJfcyk7CiAKLSAgICBib29sIGNhc2VTZW5zaXRpdmUg
PSBvcHRpb25hbENhc2VTZW5zaXRpdmUudmFsdWVPcihmYWxzZSk7Ci0gICAgYm9vbCBpc1JlZ2V4
ID0gb3B0aW9uYWxJc1JlZ2V4LnZhbHVlT3IoZmFsc2UpOworICAgIGJvb2wgY2FzZVNlbnNpdGl2
ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZS52YWx1ZV9vcihmYWxzZSk7CisgICAgYm9vbCBpc1Jl
Z2V4ID0gb3B0aW9uYWxJc1JlZ2V4LnZhbHVlX29yKGZhbHNlKTsKIAogICAgIGlmICghY2FzZVNl
bnNpdGl2ZSAmJiAhaXNSZWdleCAmJiBpc1dlYktpdEluamVjdGVkU2NyaXB0KHVybCkpCiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQmxhY2tib3hpbmcgb2YgaW50ZXJuYWwgc2NyaXB0
cyBpcyBjb250cm9sbGVkIGJ5ICdEZWJ1Z2dlci5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyci
X3MpOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMKIAogICAg
IG1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPSBzaG91bGRQYXVzZTsKIAotICAgIGF1dG8gYmxh
Y2tib3hUeXBlID0gIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPyBPcHRpb25hbDxKU0M6OkRl
YnVnZ2VyOjpCbGFja2JveFR5cGU+KEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZTo6SWdub3Jl
ZCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBibGFja2JveFR5cGUgPSAhbV9wYXVzZUZvcklu
dGVybmFsU2NyaXB0cyA/IE9wdGlvbmFsPEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlwZT4oSlND
OjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25vcmVkKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBm
b3IgKGF1dG8mIFtzb3VyY2VJRCwgc2NyaXB0XSA6IG1fc2NyaXB0cykgewogICAgICAgICBpZiAo
IWlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoc2NyaXB0LnNvdXJjZVVSTCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNs
ZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpCiB7CiAgICAgbV9wZW5kaW5nQXN5bmNDYWxscy5jbGVh
cigpOwotICAgIG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGRp
ZENsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAK
aW5kZXggODVjZWQ5ZjNkZjYyMjMwMWI5NWUzM2U0OTM1Y2JiZjE2MmI3ZTMzMC4uY2YyY2Q4ZmZj
OWU4OTE1YTg0YjE2ODkzODM3ZDJlOWJlOWU3NDk3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQu
Y3BwCkBAIC0xNTcsMTkgKzE1NywxOSBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBJbnNw
ZWN0b3JIZWFwQWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmllcihQcm90bwogICAgIEhl
YXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0gbV9lbnZpcm9ubWVudC52bSgpLmhlYXBQcm9maWxl
cigpOwogICAgIGlmICghaGVhcFByb2ZpbGVyKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5v
IGhlYXAgc25hcHNob3QiX3M7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgSGVhcFNuYXBzaG90KiBzbmFwc2hv
dCA9IGhlYXBQcm9maWxlci0+bW9zdFJlY2VudFNuYXBzaG90KCk7CiAgICAgaWYgKCFzbmFwc2hv
dCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJObyBoZWFwIHNuYXBzaG90Il9zOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IG9wdGlvbmFsTm9kZSA9
IHNuYXBzaG90LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihoZWFwT2JqZWN0SWRlbnRpZmllcik7
CiAgICAgaWYgKCFvcHRpb25hbE5vZGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gb2Jq
ZWN0IGZvciBpZGVudGlmaWVyLCBpdCBtYXkgaGF2ZSBiZWVuIGNvbGxlY3RlZCJfczsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICByZXR1cm4gb3B0aW9uYWxOb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHAKaW5kZXggNDA0MzcyMTFmMTMyZWE5NTc0ODA4NmI1ZWEzZWQyODY4MzQxZTc2Ni4uMDRk
MmYzMWY5MzE2YWM0ODI2MTU3MmFkYzY5ZDAxYTdiNjY0OGQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0
aW9uYQogCiAgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJl
YWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9kZWJ1Z2dl
cik7CiAKLSAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZS52YWx1ZU9yKGZhbHNlKTsKKyAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1ZV9vcihmYWxzZSk7CiAgICAgaWYg
KHBhdXNlQW5kTXV0ZSkgewogICAgICAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVh
a3BvaW50cy5yZXBsYWNlKCk7CiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCi0gICAg
aW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXJyb3JTdHJpbmcsIGV4cHJlc3Npb24sIG9iamVjdEdy
b3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkudmFsdWVPcihmYWxzZSksIHJldHVybkJ5VmFsdWUu
dmFsdWVPcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZU9yKGZhbHNlKSwgc2F2ZVJlc3Vs
dC52YWx1ZU9yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwor
ICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmpl
Y3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVlX29yKGZhbHNlKSwgcmV0dXJuQnlW
YWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHNh
dmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJ
bmRleCk7CiAKICAgICBpZiAocGF1c2VBbmRNdXRlKQogICAgICAgICB1bm11dGVDb25zb2xlKCk7
CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmF3YWl0UHJv
bWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0SWQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGluamVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9taXNlT2Jq
ZWN0SWQsIHJldHVybkJ5VmFsdWUudmFsdWVPcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1
ZU9yKGZhbHNlKSwgc2F2ZVJlc3VsdC52YWx1ZU9yKGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8
UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+
JiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJbmRleCkgeworICAgIGlu
amVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUu
dmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVz
dWx0LnZhbHVlX29yKGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChQcm90
b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYgd2FzVGhyb3duLCBPcHRp
b25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJbmRleCkgewogICAgICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvclN0cmluZyk7CiAgICAgICAgIGVs
c2UKQEAgLTE4MSwxMyArMTgxLDEzIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVw
bGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBPcHRpb25hCiAKICAgICBK
U0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyB0ZW1w
b3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVnZ2VyKTsKIAotICAgIGJv
b2wgcGF1c2VBbmRNdXRlID0gZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLnZh
bHVlT3IoZmFsc2UpOworICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLnZhbHVlX29yKGZhbHNlKTsKICAgICBpZiAocGF1c2VBbmRNdXRl
KSB7CiAgICAgICAgIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzLnJlcGxh
Y2UoKTsKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAgICBpbmplY3RlZFNjcmlw
dC5jYWxsRnVuY3Rpb25PbihlcnJvclN0cmluZywgb2JqZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRp
b24sIGFyZ3VtZW50cyA/IGFyZ3VtZW50cy0+dG9KU09OU3RyaW5nKCkgOiBudWxsU3RyaW5nKCks
IHJldHVybkJ5VmFsdWUudmFsdWVPcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZU9yKGZh
bHNlKSwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlv
bk9uKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZnVuY3Rpb25EZWNsYXJhdGlvbiwgYXJndW1lbnRz
ID8gYXJndW1lbnRzLT50b0pTT05TdHJpbmcoKSA6IG51bGxTdHJpbmcoKSwgcmV0dXJuQnlWYWx1
ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHJlc3Vs
dCwgd2FzVGhyb3duKTsKIAogICAgIGlmIChwYXVzZUFuZE11dGUpCiAgICAgICAgIHVubXV0ZUNv
bnNvbGUoKTsKQEAgLTIzMSwxMSArMjMxLDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0
ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5CiAg
ICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gb2JqZWN0SWQiX3Mp
OwogCi0gICAgaW50IHN0YXJ0ID0gZmV0Y2hTdGFydC52YWx1ZU9yKDApOworICAgIGludCBzdGFy
dCA9IGZldGNoU3RhcnQudmFsdWVfb3IoMCk7CiAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJmZXRjaFN0YXJ0IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7
CiAKLSAgICBpbnQgY291bnQgPSBmZXRjaENvdW50LnZhbHVlT3IoMCk7CisgICAgaW50IGNvdW50
ID0gZmV0Y2hDb3VudC52YWx1ZV9vcigwKTsKICAgICBpZiAoY291bnQgPCAwKQogICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoImZldGNoQ291bnQgY2Fubm90IGJlIG5lZ2F0aXZlIl9zKTsK
IApAQCAtMjQ3LDExICsyNDcsMTEgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBs
ZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHkKIAogICAgIG11
dGVDb25zb2xlKCk7CiAKLSAgICBpbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVzKGVycm9yU3Ry
aW5nLCBvYmplY3RJZCwgb3duUHJvcGVydGllcy52YWx1ZU9yKGZhbHNlKSwgc3RhcnQsIGNvdW50
LCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHByb3BlcnRpZXMpOworICAgIGluamVj
dGVkU2NyaXB0LmdldFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBvd25Qcm9wZXJ0
aWVzLnZhbHVlX29yKGZhbHNlKSwgc3RhcnQsIGNvdW50LCBnZW5lcmF0ZVByZXZpZXcudmFsdWVf
b3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKIAogICAgIC8vIE9ubHkgaW5jbHVkZSBpbnRlcm5hbCBw
cm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgaWYgKCFzdGFydCkKLSAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJ
ZCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlT3IoZmFsc2UpLCBpbnRlcm5hbFByb3BlcnRpZXMpOwor
ICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMoZXJyb3JTdHJpbmcs
IG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBpbnRlcm5hbFByb3Bl
cnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgpOwogCkBAIC0yNjksMTEgKzI2OSwxMSBAQCBQ
cm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3Jp
cHQgZm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAotICAgIGludCBzdGFydCA9IGZldGNoU3RhcnQu
dmFsdWVPcigwKTsKKyAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlX29yKDApOwogICAg
IGlmIChzdGFydCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hTdGFy
dCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCi0gICAgaW50IGNvdW50ID0gZmV0Y2hDb3VudC52
YWx1ZU9yKDApOworICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVfb3IoMCk7CiAgICAg
aWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJmZXRjaENvdW50
IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7CiAKQEAgLTI4NSwxMSArMjg1LDExIEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlByb3BlcnR5CiAKICAgICBtdXRlQ29uc29sZSgpOwogCi0gICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgc3RhcnQs
IGNvdW50LCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHByb3BlcnRpZXMpOworICAg
IGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhlcnJvclN0cmluZywgb2Jq
ZWN0SWQsIHN0YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgcHJv
cGVydGllcyk7CiAKICAgICAvLyBPbmx5IGluY2x1ZGUgaW50ZXJuYWwgcHJvcGVydGllcyBmb3Ig
dGhlIGZpcnN0IGZldGNoLgogICAgIGlmICghc3RhcnQpCi0gICAgICAgIGluamVjdGVkU2NyaXB0
LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGdlbmVyYXRlUHJl
dmlldy52YWx1ZU9yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKKyAgICAgICAgaW5qZWN0
ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZ2Vu
ZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKIAogICAg
IHVubXV0ZUNvbnNvbGUoKTsKIApAQCAtMzA3LDExICszMDcsMTEgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25F
bnRyeT4+PgogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9i
amVjdElkIl9zKTsKIAotICAgIGludCBzdGFydCA9IGZldGNoU3RhcnQudmFsdWVPcigwKTsKKyAg
ICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlX29yKDApOwogICAgIGlmIChzdGFydCA8IDAp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hTdGFydCBjYW5ub3QgYmUgbmVn
YXRpdmUiX3MpOwogCi0gICAgaW50IGNvdW50ID0gZmV0Y2hDb3VudC52YWx1ZU9yKDApOworICAg
IGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVfb3IoMCk7CiAgICAgaWYgKGNvdW50IDwgMCkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJmZXRjaENvdW50IGNhbm5vdCBiZSBuZWdh
dGl2ZSJfcyk7CiAKQEAgLTM5Miw5ICszOTIsOSBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxS
ZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4+CiAg
ICAgICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
IlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGluIGxvY2F0aW9ucyJfcyk7CiAKLSAgICAgICAg
YXV0byBkZXNjcmlwdG9yID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJvdG9jb2w6OlJ1bnRpbWU6
OlR5cGVMb2NhdGlvbjo6dHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcktleSkudmFsdWVPcihUeXBl
UHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsKTsKKyAgICAgICAgYXV0byBkZXNjcmlwdG9y
ID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6
dHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcktleSkudmFsdWVfb3IoVHlwZVByb2ZpbGVyU2VhcmNo
RGVzY3JpcHRvck5vcm1hbCk7CiAgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcgPSBsb2NhdGlv
bi0+Z2V0U3RyaW5nKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnNvdXJjZUlES2V5
KTsKLSAgICAgICAgYXV0byBkaXZvdCA9IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFByb3RvY29sOjpS
dW50aW1lOjpUeXBlTG9jYXRpb246OmRpdm90S2V5KS52YWx1ZU9yKDApOworICAgICAgICBhdXRv
IGRpdm90ID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2Nh
dGlvbjo6ZGl2b3RLZXkpLnZhbHVlX29yKDApOwogCiAgICAgICAgIGF1dG8gdHlwZUxvY2F0aW9u
ID0gbV92bS50eXBlUHJvZmlsZXIoKS0+ZmluZExvY2F0aW9uKGRpdm90LCBwYXJzZUludGVnZXI8
dWludHB0cl90Pihzb3VyY2VJRFN0cmluZykudmFsdWUoKSwgc3RhdGljX2Nhc3Q8VHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvcj4oZGVzY3JpcHRvciksIG1fdm0pOwogCkBAIC01MDMsNyArNTAz
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlJ1bnRpbWU6OkJhc2ljQmxvY2s+Pj4gSW5zcGUKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJWTSBoYXMgbm8gY29udHJvbCBmbG93IGluZm9ybWF0aW9uIl9zKTsKIAogICAgIGF1dG8g
YmFzaWNCbG9ja3MgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pjo6Y3JlYXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IG1fdm0uY29udHJvbEZs
b3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2Nrc0ZvclNvdXJjZUlEKHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVpbnRwdHJfdD4oc291cmNlSUQpLnZhbHVlT3IoMCksIG1fdm0pKSB7
CisgICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IG1fdm0uY29udHJvbEZsb3dQcm9maWxlcigp
LT5nZXRCYXNpY0Jsb2Nrc0ZvclNvdXJjZUlEKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPHVpbnRwdHJfdD4oc291cmNlSUQpLnZhbHVlX29yKDApLCBtX3ZtKSkgewogICAgICAgICBh
dXRvIGxvY2F0aW9uID0gUHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s6OmNyZWF0ZSgpCiAg
ICAgICAgICAgICAuc2V0U3RhcnRPZmZzZXQoYmxvY2subV9zdGFydE9mZnNldCkKICAgICAgICAg
ICAgIC5zZXRFbmRPZmZzZXQoYmxvY2subV9lbmRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0LmNwcAppbmRleCBlMDZmYmQ5OTk1YmFlYTZkNTg3MGEzY2JiYjUyNjg3M2Vh
OTZjNmExLi5jNTRmZmUwYTY2ZDg0M2U4MmM2N2I5MzMzZWY5MzJiOThkODc5ZTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgYm9vbCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9u
LCBib29sIGF1dG9tYXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVy
KCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJ
ZGVudGlmaWVyKCkudmFsdWVfb3IoMCk7CiAKICAgICBpZiAoIW1fdGFyZ2V0IHx8ICFtX3Rhcmdl
dC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewogICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNp
bmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIpOwpAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRDbG9zZWQoKQogCiBPcHRp
b25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90
YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1f
dGFyZ2V0ID8gT3B0aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkp
IDogc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3Iu
Y3BwCmluZGV4IGQxZDk1MmM5NDQ1OTY3YWE4YTExZjEyNDM4MmFiYTJhMmI5ZTczOWUuLjFjYzQw
OTM0NjM1ZmVmNTQ5MWFjZjRhY2ZiZTdiZjgyNzIxMTAwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNw
cApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yOjp1cGRhdGVDbGllbnRD
YXBhYmlsaXRpZXMoKQogICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7
CiAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmlsaXRpZXMgdXBkYXRlZENh
cGFiaWxpdGllcyA9IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5yZW1vdGVBdXRvbWF0aW9uQWxs
b3dlZCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRD
b2NvYS5tbQppbmRleCA4YjJhN2ZhMzhhYTA2OGU0NTM0M2YzNGE0NzJjZjFhZTA1MGFlMDg2Li5l
ODI0NWUxZTc5MWNjNThmYjgwMzM0YmFiN2RjMWVjZmJlNzZmZGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtMTIzLDcgKzEy
Myw3IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6flJlbW90ZUNvbm5lY3Rpb25Ub1Rhcmdl
dCgpCiAKIE9wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnRhcmdl
dElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPFRh
cmdldElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElk
ZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QKQEAgLTE2Myw3ICsxNjMs
NyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAoYm9vbCBpc0F1dG9tYXRp
Y0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgIGlmICghbV90YXJnZXQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRoaXMtPnRhcmdl
dElkZW50aWZpZXIoKS52YWx1ZU9yKDApOworICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmllciA9IHRo
aXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZV9vcigwKTsKIAogICAgIGRpc3BhdGNoQXN5bmNP
blRhcmdldChbdGhpcywgdGFyZ2V0SWRlbnRpZmllciwgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBh
dXRvbWF0aWNhbGx5UGF1c2UsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CiAgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29u
bmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKaW5kZXggNWUzODc5
OGVhMGIxODU1NDkwYmU1YzZmOWMzODFhNWM1YTRlMmFkNi4uN2U5ZGZmMzgzYTE3YmQ2ODdmNWRm
ZWZkNjBkNmQxMDlhNDE5M2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcApAQCAtODgsMjMgKzg4LDIzIEBAIHZvaWQg
UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0
b3JTb2NrZXRFbmRwb2ludCYsCiBPcHRpb25hbDxSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xp
ZW50OjpFdmVudD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZXh0cmFjdEV2ZW50
KENvbm5lY3Rpb25JRCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKICAgICBp
ZiAoZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcganNvbkRhdGEgPSBTdHJpbmc6OmZy
b21VVEY4KGRhdGEpOwogCiAgICAgYXV0byBtZXNzYWdlVmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFy
c2VKU09OKGpzb25EYXRhKTsKICAgICBpZiAoIW1lc3NhZ2VWYWx1ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
bWVzc2FnZU9iamVjdCA9IG1lc3NhZ2VWYWx1ZS0+YXNPYmplY3QoKTsKICAgICBpZiAoIW1lc3Nh
Z2VPYmplY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBFdmVudCBldmVudDsKIAogICAgIGV2ZW50Lm1ldGhvZE5hbWUg
PSBtZXNzYWdlT2JqZWN0LT5nZXRTdHJpbmcoImV2ZW50Il9zKTsKICAgICBpZiAoIWV2ZW50Lm1l
dGhvZE5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBldmVudC5jbGllbnRJRCA9IGNsaWVudElEOwogCkBAIC0xMjMs
MTEgKzEyMywxMSBAQCBPcHRpb25hbDxWZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+PiBSZW1vdGVJ
bnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpwYXJzZVRhcmdldAogewogICAgIGF1dG8gbWVzc2Fn
ZVZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsKICAgICBpZiAoIW1lc3Nh
Z2VWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbWVzc2FnZUFycmF5ID0gbWVzc2FnZVZhbHVlLT5hc0Fy
cmF5KCk7CiAgICAgaWYgKCFtZXNzYWdlQXJyYXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8UmVmPEpTT046
Ok9iamVjdD4+IHRhcmdldExpc3Q7CiAgICAgZm9yIChhdXRvJiBpdGVtVmFsdWUgOiAqbWVzc2Fn
ZUFycmF5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCmlu
ZGV4IGYyYjQ4MGY5MGFjNGM5MTgzZjU2ZDlhZDcxYTJlM2NiYWNmMjE3MGUuLjYyMDRkNDFkMzhk
NDZhMTk3MjlmYzgyODAyNGZkNTI4NDY2NDI3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGJvb2wgUmVtb3RlSW5zcGVj
dG9yU2VydmVyOjpzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KQogT3B0
aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Z2V0UG9ydCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFpc1J1bm5pbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IGF1dG8mIGVuZHBvaW50ID0g
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6c2luZ2xldG9uKCk7CiAg
ICAgcmV0dXJuIGVuZHBvaW50LmdldFBvcnQobV9zZXJ2ZXIudmFsdWUoKSk7CkBAIC03NSw3ICs3
NSw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkb0Fj
Y2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwCiAgICAgYXV0byYgaW5zcGVjdG9yID0gUmVt
b3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKTsKICAgICBpZiAoaW5zcGVjdG9yLmlzQ29ubmVjdGVk
KCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZW1vdGVJbnNwZWN0b3IgY2FuIGFjY2VwdCBvbmx5
IDEgY2xpZW50Iik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbmV3SUQgPSBlbmRwb2ludC5j
cmVhdGVDbGllbnQoc29ja2V0LCBpbnNwZWN0b3IpKSB7CkBAIC04Myw3ICs4Myw3IEBAIE9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpkb0FjY2VwdChSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwCiAgICAgICAgIHJldHVybiBuZXdJRDsKICAgICB9CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29j
a2V0LmNwcAppbmRleCBlMzA1OGY1MDFkYzcwOWZiMjhlNjg2NWI2OTUzM2E2YjU5Yzg2NWQ2Li5k
ODVmMGNiZmEwOWQwYmQwMzE5NzA3MDNhMmVjOTczZjMzYmVmZDU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBD
b25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkpOwogCi0gICAgbV9jbGll
bnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbPV0gewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXggYTUwYzk0MjA4MmFhZTRh
ZDRhNjRkNDM5ZTc5Yjc1YmYxODUwY2MxYi4uZTQ1MDFkZjVkYjc4MDUyMTFkMWVjNWE0MWYyOTA5
MGE5NmJlZmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25J
RD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJbmV0KGNvbnN0IGNoYXIq
IHNlCiB7CiAgICAgaWYgKGF1dG8gc29ja2V0ID0gU29ja2V0Ojpjb25uZWN0KHNlcnZlckFkZHJl
c3MsIHNlcnZlclBvcnQpKQogICAgICAgICByZXR1cm4gY3JlYXRlQ2xpZW50KCpzb2NrZXQsIGNs
aWVudCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQxNl90IHBvcnQsIExpc3Rl
bmVyJiBsaXN0ZW5lcikKQEAgLTkzLDcgKzkzLDcgQEAgT3B0aW9uYWw8Q29ubmVjdGlvbklEPiBS
ZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVuSW5ldChjb25zdCBjaGFyKiBhZGQK
ICAgICBhdXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAgICBhdXRvIGNvbm5lY3Rp
b24gPSBtYWtlVW5pcXVlPExpc3RlbmVyQ29ubmVjdGlvbj4oaWQsIGxpc3RlbmVyLCBhZGRyZXNz
LCBwb3J0KTsKICAgICBpZiAoIWNvbm5lY3Rpb24tPmlzTGlzdGVuaW5nKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBt
X2xpc3RlbmVycy5hZGQoaWQsIFdURk1vdmUoY29ubmVjdGlvbikpOwogICAgIHdha2V1cFdvcmtl
clRocmVhZCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQbGF0Zm9ybVNvY2tlCiAg
ICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAgYXV0byBjb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxDbGllbnRDb25uZWN0aW9uPihpZCwgc29ja2V0LCBjbGllbnQpOwogICAg
IGlmICghU29ja2V0Ojppc1ZhbGlkKGNvbm5lY3Rpb24tPnNvY2tldCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX2Ns
aWVudHMuYWRkKGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKICAgICB3YWtldXBXb3JrZXJUaHJl
YWQoKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gUmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVjdGlvbklEIGlkKSBjb25zdAogICAgIGlm
IChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChpZCkpCiAgICAgICAgIHJl
dHVybiBTb2NrZXQ6OmdldFBvcnQoY29ubmVjdGlvbi0+c29ja2V0KTsKIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZW1vdGVJ
bnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklmRW5hYmxlZChDb25uZWN0aW9uSUQgaWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
cG9zaXgvUmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBP
U0lYLmNwcAppbmRleCA3ZmU2Nzg2NThiZDVkNzUyYzZiZWY3YjY5NzBiZGRjNzIzYjg3MzFmLi5k
YTY4NTE4OWQ1MmYwNjY0YzU0MWQzNWE2NDI5YWE0MGIwMTcxNGIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgvUmVtb3RlSW5z
cGVjdG9yU29ja2V0UE9TSVguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQT1NJWC5jcHAKQEAg
LTU1LDE0ICs1NSwxNCBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29u
c3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUAogICAgIGludCBmZCA9IHNv
Y2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwogICAgIGlmIChmZCA8IDAp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNvY2tldCBmb3IgJXM6JWQs
IGVycm5vID0gJWQiLCBzZXJ2ZXJBZGRyZXNzLCBzZXJ2ZXJQb3J0LCBlcnJubyk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaW50IGVycm9yID0gOjpjb25uZWN0KGZkLCAoc3RydWN0IHNvY2thZGRyKikmYWRk
cmVzcywgc2l6ZW9mKGFkZHJlc3MpKTsKICAgICBpZiAoZXJyb3IgPCAwKSB7CiAgICAgICAgIExP
R19FUlJPUigiRmFpbGVkIHRvIGNvbm5lY3QgdG8gJXM6JXUsIGVycm5vID0gJWQiLCBzZXJ2ZXJB
ZGRyZXNzLCBzZXJ2ZXJQb3J0LCBlcnJubyk7CiAgICAgICAgIDo6Y2xvc2UoZmQpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIHJldHVybiBmZDsKQEAgLTc1LDcgKzc1LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1T
b2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkK
ICAgICBpbnQgZmRMaXN0ZW4gPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9f
VENQKTsKICAgICBpZiAoZmRMaXN0ZW4gPCAwKSB7CiAgICAgICAgIExPR19FUlJPUigic29ja2V0
KCkgZmFpbGVkLCBlcnJubyA9ICVkIiwgZXJybm8pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0IGlu
dCBlbmFibGVkID0gMTsKQEAgLTgzLDIxICs4MywyMSBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tl
dFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1aW50MTZfdCBwb3J0KQogICAg
IGlmIChlcnJvciA8IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJzZXRzb2Nrb3B0KCkgU09fUkVV
U0VBRERSLCBlcnJubyA9ICVkIiwgZXJybm8pOwogICAgICAgICA6OmNsb3NlKGZkTGlzdGVuKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBlcnJvciA9IHNldHNvY2tvcHQoZmRMaXN0ZW4sIFNPTF9TT0NLRVQs
IFNPX1JFVVNFUE9SVCwgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSk7CiAgICAgaWYgKGVycm9y
IDwgMCkgewogICAgICAgICBMT0dfRVJST1IoInNldHNvY2tvcHQoKSBTT19SRVVTRVBPUlQsIGVy
cm5vID0gJWQiLCBlcnJubyk7CiAgICAgICAgIDo6Y2xvc2UoZmRMaXN0ZW4pOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIGlmIChzZXRzb2Nrb3B0KGZkTGlzdGVu
LCBTT0xfU09DS0VULCBTT19VU0VfREVWTEFOLCAmZW5hYmxlZCwgc2l6ZW9mKGVuYWJsZWQpKSA8
IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJzZXRzb2NrZXRvcHQoKSBTT19VU0VfREVWTEFOLCBl
cnJubyA9ICVkIiwgZXJybm8pOwogICAgICAgICA6OmNsb3NlKGZkTGlzdGVuKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAjZW5kaWYKIApAQCAtMTEyLDE0ICsxMTIsMTQgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRU
eXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKICAgICBp
ZiAoZXJyb3IgPCAwKSB7CiAgICAgICAgIExPR19FUlJPUigiYmluZCgpIGZhaWxlZCwgZXJybm8g
PSAlZCIsIGVycm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgZXJyb3IgPSA6Omxpc3RlbihmZExpc3RlbiwgMSk7CiAgICAgaWYgKGVycm9yIDwgMCkgewog
ICAgICAgICBMT0dfRVJST1IoImxpc3RlbigpIGZhaWxlZCwgZXJybm8gPSAlZCIsIGVycm5vKTsK
ICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIGZkTGlz
dGVuOwpAQCAtMTM1LDcgKzEzNSw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gYWNj
ZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgICAgIHJldHVybiBmZDsKIAogICAg
IExPR19FUlJPUigiYWNjZXB0KGluZXQpIGVycm9yIChlcnJubyA9ICVkKSIsIGVycm5vKTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9w
dGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCkBA
IC0xNDMsNyArMTQzLDcgQEAgT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUs
IDI+PiBjcmVhdGVQYWlyKCkKICAgICBzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4g
c29ja2V0czsKIAogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCAm
c29ja2V0c1swXSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc29ja2V0czsKIH0KQEAgLTE5Nyw3ICsxOTcs
NyBAQCBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0
KQogICAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YoYWRkcmVzcyk7CiAgICAgaWYgKGdldHNvY2tu
YW1lKHNvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgc29ja2FkZHIqPigmYWRkcmVzcyks
ICZsZW4pKSB7CiAgICAgICAgIExPR19FUlJPUigiZ2V0c29ja25hbWUoKSBlcnJvciAoZXJybm8g
PSAlZCkiLCBlcnJubyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBhZGRyZXNzLnNpbl9wb3J0Owog
fQpAQCAtMjExLDcgKzIxMSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tl
dFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWFkU2l6ZSk7CiAKICAgICBMT0dfRVJST1IoInJlYWQg
ZXJyb3IgKGVycm5vID0gJWQpIiwgZXJybm8pOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0
Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKQEAgLTIy
Myw3ICsyMjMsNyBAQCBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSBz
b2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih3cml0ZVNpemUpOwogCiAgICAgTE9HX0VSUk9SKCJ3cml0ZSBlcnJvciAo
ZXJybm8gPSAlZCkiLCBlcnJubyk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIGNsb3NlKFBsYXRmb3JtU29ja2V0VHlwZSYgc29j
a2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
c29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRX
aW4uY3BwCmluZGV4IDA1ZjI4YTEwNDdlNTkyMTExZTNhMGE3Y2YxZWVkYjc5YjBiNGY2OTcuLjZl
ZDgwZWJiN2JhZDQ2MTZkNmNiMjNkMWFjMmQ5ZjhmZThiZjY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVj
dG9yU29ja2V0V2luLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9zb2NrZXQvd2luL1JlbW90ZUluc3BlY3RvclNvY2tldFdpbi5jcHAKQEAgLTE2OCw3ICsx
NjgsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5lY3QoY29uc3QgY2hhciog
c2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUAogICAgIGF1dG8gc29ja2V0ID0gY29ubmVj
dFRvKGFkZHJlc3MpOwogICAgIGlmICghaXNWYWxpZChzb2NrZXQpKSB7CiAgICAgICAgIExPR19F
UlJPUigiY29ubmVjdGluZyB0byAlczoldSBmYWlsZWQgKGVycm5vID0gJWQpIiwgc2VydmVyQWRk
cmVzcywgc2VydmVyUG9ydCwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBzb2NrZXQ7CkBAIC0xODcsNyArMTg3LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRU
eXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKIAogICAg
IGF1dG8gc29ja2V0ID0gYmluZEFuZExpc3RlbihhZGRyZXNzKTsKICAgICBpZiAoIWlzVmFsaWQo
c29ja2V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzb2NrZXQ7CiB9CkBAIC0yMDIsNyArMjAyLDcgQEAg
T3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNv
Y2tldCkKICAgICAgICAgcmV0dXJuIGZkOwogCiAgICAgTE9HX0VSUk9SKCJmYWlsZWQgKGVycm5v
ID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9y
bVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKQEAgLTIxNCwxMSArMjE0LDExIEBAIE9wdGlv
bmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCiAKICAg
ICBTb2NrZXQgc2VydmVyKGJpbmRBbmRMaXN0ZW4oYWRkcmVzcykpOwogICAgIGlmICghc2VydmVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHNlcnZlclBvcnQgPSBnZXRQb3J0KHNlcnZl
cik7CiAgICAgaWYgKCFzZXJ2ZXJQb3J0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYWRkcmVzcy5zaW5fcG9ydCA9IGh0
b25zKCpzZXJ2ZXJQb3J0KTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIE9wdGlvbmFsPHN0ZDo6YXJy
YXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCiAgICAgc29ja2V0c1swXSA9
IGNvbm5lY3RUbyhhZGRyZXNzKTsKICAgICBpZiAoIWlzVmFsaWQoc29ja2V0c1swXSkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJjb25uZWN0aW5nIGZhaWxlZCAoZXJybm8gPSAlZCkiLCBXU0FHZXRM
YXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc29ja2V0ID0gYWNjZXB0KHNl
cnZlcikpIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3Jt
U29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogICAgICAgICByZXR1cm4gc29ja2V0czsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIGJvb2wgc2V0dXAoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKQEAgLTI3Miw3ICsy
NzIsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNvY2tldFR5cGUgc29j
a2V0KQogICAgIGludCBsZW4gPSBzaXplb2YoYWRkcmVzcyk7CiAgICAgaWYgKGdldHNvY2tuYW1l
KHNvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgc29ja2FkZHIqPigmYWRkcmVzcyksICZs
ZW4pKSB7CiAgICAgICAgIExPR19FUlJPUigiZ2V0c29ja25hbWUoKSBmYWlsZWQgKGVycm5vID0g
JWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gbnRvaHMoYWRk
cmVzcy5zaW5fcG9ydCk7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBy
ZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZlciwgaW50IGJ1ZmZlclNp
emUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlYWRTaXplKTsKIAogICAg
IExPR19FUlJPUigicmVjdigpIGZhaWxlZCAoZXJybm8gPSAlZCkiLCBXU0FHZXRMYXN0RXJyb3Io
KSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIGNv
bnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQpAQCAtMjk4LDcgKzI5OCw3IEBAIE9wdGlvbmFsPHNp
emVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwg
aW50IHNpemUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHdyaXRlU2l6ZSk7
CiAKICAgICBMT0dfRVJST1IoInNlbmQoKSBmYWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFz
dEVycm9yKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBjbG9zZShQbGF0Zm9ybVNvY2tldFR5cGUmIHNvY2tldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCA0NTJmYzcwMWU4NGZmYzFkZmMxMjA2Mzc1
NjdmMDdhOGU0ZTFlN2FkLi5jZDg5Mzk2NWNiN2NjYTA3YmNiMmQ2YzgyYWI5NzBlYjI1ZjNkYzUy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
Y3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAg
Y2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKENwcEdlbmVyYXRv
cik6CiAgICAgICAgICAgICAgICAgJyAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1f
Y29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSknLAogICAgICAgICAgICAgICAgICcg
ICAgICAgICAgICByZXR1cm4gKCVzKWNvbnN0YW50VmFsdWVzW2ldOycgJSBjcHBfcHJvdG9jb2xf
dHlwZSwKICAgICAgICAgICAgICAgICAnJywKLSAgICAgICAgICAgICAgICAnICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7JywKKyAgICAgICAgICAgICAgICAnICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
JywKICAgICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICBdKQogICAgICAgICAgICAgcmV0
dXJuICdcbicuam9pbihib2R5X2xpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBl
X2NvbnZlcnNpb25zX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19o
ZWFkZXIucHkKaW5kZXggODVmMGZjYzkxMzJkNjljNTk3ZjFhNjhiMGEzYjkwMTU2MzY0Y2FkYi4u
YTZhNjQzZmM4ODUzMzJmMWIwYmRkOGI3NThlMjg0MDhmZWY1ZjUxNiAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CkBAIC0xNjgsNiArMTY4LDYgQEAgY2xhc3MgT2Jq
Q1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgog
ICAgICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3ZhbHVlKQogICAgICAgICAg
ICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiAlcyVzOycgJSAob2JqY19lbnVtX25hbWUs
IEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gc3RkOjpudWxsb3B0OycpCiAgICAgICAgIGxpbmVzLmFw
cGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDhmNjdk
YTQ2YTgwNTA0YTJiNDYxNWMwYzVmZWFmZGVmMTI0Y2U5YzYuLjJkNDkyODZjMTdiN2Q3ZDMwYWFj
NGMzMWVjMWQxNTQyN2FiZWE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCkBAIC0yNTQsMTYgKzI1NCwxNiBAQCBTdGFja1Zp
c2l0b3I6OkZyYW1lOjpDb2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNv
bnN0CiBPcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gU3RhY2tWaXNpdG9yOjpGcmFtZTo6
Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2luZGluZygpCiB7CiAgICAgaWYgKCFOVU1CRVJfT0Zf
Q0FMTEVFX1NBVkVTX1JFR0lTVEVSUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc0lubGluZWRGcmFtZSgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChpc1dhc21GcmFtZSgpKSB7CiAg
ICAgICAgIGlmIChjYWxsZWUoKS5pc0NlbGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNXZWJBc3NlbWJseU1vZHVsZShjYWxsZWUoKS5hc0NlbGwoKSkpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICAgICAgV2FzbTo6Q2FsbGVlKiB3YXNtQ2FsbGVlID0gY2FsbGVlKCkuYXNX
YXNtQ2FsbGVlKCk7CiAgICAgICAgIHJldHVybiAqd2FzbUNhbGxlZS0+Y2FsbGVlU2F2ZVJlZ2lz
dGVycygpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIE9wdGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0
PiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kCiAgICAg
aWYgKENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJl
dHVybiAqY29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KEFTU0VNQkxFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVj
dXRhYmxlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKaW5kZXggNjE5NDU1YjFmNmRiYWNhNGE3ZGRhYzdjYmY2ZDljOTJmYTE2
Y2EyZC4uZWU1ZTM4YTI4MzRlY2JhODQ1ZTYyOTFkYzc2NWM1MjA3YjJmMDc5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC03
ODksNyArNzg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnRwdHJfdCBlbmQgPSB0aGlz
LT5lbmQoKTsKICAgICAgICAgICAgIGlmIChpc2xhbmRCZWdpbigpIDw9IGlzbGFuZCAmJiBpc2xh
bmQgPCBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuICgoZW5kIC0gaXNsYW5kKSAvIGlzbGFu
ZFNpemVJbkJ5dGVzKSAtIDE7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQg
ZnJlZUlzbGFuZCh1aW50cHRyX3QgaXNsYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAppbmRleCA2ZmE3MjQ0ZWYwYTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4NzE5MDZmLi44NTU3ZDBl
ZTVkOGFkOGIxNDQyZDgzMGU0ZDY3NzFmZjBjYThiMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgdmlydHVhbCBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0
aW9uSGFuZGxpbmdDYWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KTsKLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgeyBV
TlVTRURfUEFSQU0ocGMpOyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRp
b25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BB
UkFNKHBjKTsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogI2VuZGlmCiAKICAgICBJbnRyaW5zaWMg
aW50cmluc2ljKCkgeyByZXR1cm4gbV9pbnRyaW5zaWM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKaW5kZXggMjY0NzE4ZDk3Yzc4NGJjMmZh
Nzc0MDMxYWZjZGIwODA5OWQxZTU5My4uMGIzN2E0MTk1OTdkMzM1NjMyNmZhNjQ1ZjllYzI3NjQy
NTdlNTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9y
aWdpbk1hcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdp
bk1hcC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBPcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29k
ZU9yaWdpbk1hcDo6ZmluZFBDKHZvaWQqIHBjKSBjb25zdAogewogICAgIHVpbnRwdHJfdCBwY0Fz
SW50ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocGMpOwogICAgIGlmICghKG1fcGNSYW5nZVN0
YXJ0IDw9IHBjQXNJbnQgJiYgcGNBc0ludCA8PSBtX3BjUmFuZ2VFbmQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWlu
dHB0cl90IGN1cnJlbnRQQyA9IDA7CiAgICAgQnl0ZWNvZGVJbmRleCBjdXJyZW50Qnl0ZWNvZGVJ
bmRleCA9IEJ5dGVjb2RlSW5kZXgoMCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgT3B0aW9uYWw8Q29k
ZU9yaWdpbj4gUENUb0NvZGVPcmlnaW5NYXA6OmZpbmRQQyh2b2lkKiBwYykgY29uc3QKICAgICB9
CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGZmOGY1N2U0NmFmYzEx
NDVmNzZlNGM1OWM2YjhjNGZiYzQ1OTBiMDguLjY3MzAzOTQyNjNmMzJmMWI1MzU0YzIwZDU0ZGUy
NDMwNDcyOTliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0x
NTM5LDcgKzE1MzksNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlSGV4KCkg
LT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgZG8gewogICAgICAgICBpZiAobV9j
dXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGln
aXQocGVlaygxKSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgfQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVy
PFQ+OjpwYXJzZUhleCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIHdoaWxl
IChpc0FTQ0lJSGV4RGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlIZXhE
aWdpdChwZWVrKDEpKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzaGlmdCgp
OwogICAgICAgICB9CkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4
ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAg
ZG8gewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAg
QUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpIC0+IE9wdGlvbmFsPE51
bWJlclBhcnNlUmVzdWx0PgogICAgIHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXRPclNlcGFyYXRv
cihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlCaW5hcnlEaWdpdChwZWVrKDEpKSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CkBAIC0xNjMwLDcg
KzE2MzAsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4g
T3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJl
c3VsdCB7IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkp
IH07CiAKICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
TnVtYmVyUGFyc2VSZXN1bHQgeyBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1f
YnVmZmVyOC5zaXplKCksIDIpIH07CiB9CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBBTFdBWVNfSU5M
SU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJl
c3VsdD4KICAgICBkbyB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWsoMSkpIHx8IGlzTGVnYWN5
TGl0ZXJhbCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICB9CkBAIC0xNjczLDcgKzE2NzMsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46
OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB3aGlsZSAo
aXNBU0NJSU9jdGFsRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlPY3Rh
bERpZ2l0KHBlZWsoMSkpIHx8IGlzTGVnYWN5TGl0ZXJhbCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CkBAIC0xNjg2LDcgKzE2ODYsNyBAQCBB
TFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1i
ZXJQYXJzZVJlc3VsdD4KICAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgbWFrZUlk
ZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkgfTsKIAogICAgIGlm
IChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBOdW1iZXJQYXJzZVJl
c3VsdCB7IHBhcnNlSW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUo
KSwgOCkgfTsKIH0KQEAgLTE3MTIsNyArMTcxMiw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhl
cjxUPjo6cGFyc2VEZWNpbWFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAg
ICAgIGRvIHsKICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJRGlnaXQocGVlaygxKSkgfHwgaXNMZWdhY3lMaXRl
cmFsKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgICAgIHNoaWZ0
KCk7CiAgICAgICAgICAgICB9CkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBBTFdBWVNfSU5MSU5FIGF1
dG8gTGV4ZXI8VD46OnBhcnNlRGVjaW1hbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0
PgogICAgIHdoaWxlIChpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlz
QVNDSUlEaWdpdChwZWVrKDEpKSB8fCBpc0xlZ2FjeUxpdGVyYWwpKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTc0NSw3ICsxNzQ1LDcg
QEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBPcHRpb25h
bDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICduJyAm
JiAhaXNMZWdhY3lMaXRlcmFsKSkKICAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsg
bWFrZUlkZW50aWZpZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkgfTsKIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApp
bmRleCAwOWFjN2MyNGRhNDVhNGU1NjRhMDY3MDU0MTAyZTg5OTVmODE3ODJhLi4zZjVkM2M5YTU2
MzEzMDQyYTBmNzM3NTU1ZjVjZjljMmJhZDdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTk5Miw3ICs5OTIsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqID0gbnVs
bHB0ciwgY29uc3QgRml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElk
ZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFt
ZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25z
dCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMjc2LDcgKzEy
NzYsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAobV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5h
bWVTY29wZSgpKQogICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkp
OwogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgU2NvcGVSZWYgcHJpdmF0ZU5hbWVTY29wZSgpCkBAIC0xNzQ5
LDkgKzE3NDksOSBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9y
dGVkLCBOb3RFeHBvcnRlZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBl
ID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBE
ZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCk7CiAgICAgZW51bSBjbGFzcyBGdW5j
dGlvbkRlY2xhcmF0aW9uVHlwZSB7IERlY2xhcmF0aW9uLCBTdGF0ZW1lbnQgfTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xh
cmF0aW9uKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlvbkRl
Y2xhcmF0aW9uVHlwZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RF
eHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENv
bnRleHQ6OlN0YW5kYXJkLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvbkRlY2xhcmF0aW9uVHlwZSA9IEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlOjpE
ZWNsYXJhdGlvbiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJh
dGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQs
IE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChUcmVlQnVpbGRlciYsIGJv
b2wgcGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9u
RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhw
b3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250
ZXh0OjpTdGFuZGFyZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1
aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9u
RGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3Rk
OjpudWxsb3B0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRGVjbGFyYXRpb25UeXBl
LCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYpOwpAQCAtMTgyMSw3ICsxODIxLDcg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJ
TkUgVHJlZUV4cHJlc3Npb24gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKFRyZWVCdWlsZGVy
JiwgY29uc3QgSWRlbnRpZmllciosIGJvb2wgaXNFdmFsLCBjb25zdCBKU1RleHRQb3NpdGlvbiYs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlIHsgRXhwcmVzc2lvbiwgRGVjbGFyYXRpb24sIE1ldGhvZCB9OwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbklu
Zm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXIm
LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUs
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBl
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24g
PSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
QUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
KTsKICAgICAKQEAgLTIyNDEsNyArMjI0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlm
IChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2Vy
PExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9y
S2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2Vk
Tm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250
ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50
U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5vZGU8UGFyc2Vk
Tm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0s
IHN0ZDo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlv
bnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAg
ICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6
OkJ1aWx0aW4pIHsKQEAgLTIyNTQsNyArMjI1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3Vs
ZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BM
ZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9y
LCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6
IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0
ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBh
cnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQ
YXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBzdGQ6Om51bGxv
cHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKICAgICAg
ICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
S2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAppbmRl
eCA2NDIzMjcwZDhhZTA5MWE3MzAxY2E4Yzg1MzU5MGI4YTM3YmNhNDY5Li40YjNiM2JlMzAzZWJl
YWRjODY0MDA5N2M3Zjg4NTdlMTdhNGVkYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGVLZXkuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICA6IG1fc291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgICAgICAgICAgLCBtX25hbWUobmFt
ZSkKICAgICAgICAgICAgICwgbV9mbGFncyhjb2RlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNv
bnRleHQsIGNvZGVHZW5lcmF0aW9uTW9kZSkKLSAgICAgICAgICAgICwgbV9mdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJz
RW5kUG9zaXRpb24udmFsdWVPcigtMSkpCisgICAgICAgICAgICAsIG1fZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLnZhbHVlX29yKC0xKSkKICAgICAgICAgICAgICwgbV9oYXNoKHNvdXJjZUNvZGUu
aGFzaCgpIF4gbV9mbGFncy5iaXRzKCkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCA1
ZTc2MjMyOWQ1ZGI2YWRkMDFiNjZmNWRhM2E2NGYxMGZmMGE4ZDExLi43YmY1YzNlMDFiY2MwMDE2
NmY3MDQxNWY4MzNjZDE3MmRmNWQ1NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xMDcsNyArMTA3LDcg
QEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0
cmluZ0ltcGwqIGxvY2FsTmFtZSkgLT4gT3AKIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0g
bV9pbXBvcnRFbnRyaWVzLmZpbmQobG9jYWxOYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9p
bXBvcnRFbnRyaWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBPcHRpb25hbDxJbXBvcnRFbnRyeT4o
aXRlcmF0b3ItPnZhbHVlKTsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIGF1dG8gQWJzdHJhY3RN
b2R1bGVSZWNvcmQ6OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnRO
YW1lKSAtPiBPCiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5m
aW5kKGV4cG9ydE5hbWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIE9wdGlvbmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUp
OwogfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5
R2V0Q2FjaGVkUmVzb2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKIHsKICAg
ICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9yZXNvbHV0aW9uQ2FjaGUuZmluZChleHBvcnROYW1l
KTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9yZXNvbHV0aW9uQ2FjaGUuZW5kKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIE9wdGlvbmFsPFJlc29sdXRpb24+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA1ZDVjMGE4
YzZiNjE1Njg5ODhmYjNiNGIzYjFmNmJmMDBmMzZkMjU2Li5jYjFmOWZmMDdhM2YyNzZiNDQ5YmM4
M2E5ODAwZTJhN2EzYThjMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgYXV0byBpdCA9IG1fcHRyVG9PZmZzZXRNYXAuZmluZChwdHIpOwogICAgICAgICBpZiAoaXQg
PT0gbV9wdHJUb09mZnNldE1hcC5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyBp
dC0+dmFsdWUgfTsKICAgICB9CiAKQEAgLTMxNCwxMSArMzE0LDExIEBAIHZvaWQgRGVjb2Rlcjo6
Y2FjaGVPZmZzZXQocHRyZGlmZl90IG9mZnNldCwgdm9pZCogcHRyKQogICAgIG1fb2Zmc2V0VG9Q
dHJNYXAuYWRkKG9mZnNldCwgcHRyKTsKIH0KIAotV1RGOjpPcHRpb25hbDx2b2lkKj4gRGVjb2Rl
cjo6Y2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZfdCBvZmZzZXQpCitzdGQ6Om9wdGlvbmFsPHZv
aWQqPiBEZWNvZGVyOjpjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90IG9mZnNldCkKIHsKICAg
ICBhdXRvIGl0ID0gbV9vZmZzZXRUb1B0ck1hcC5maW5kKG9mZnNldCk7CiAgICAgaWYgKGl0ID09
IG1fb2Zmc2V0VG9QdHJNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgaXQtPnZhbHVlIH07CiB9
CiAKQEAgLTgzNiw3ICs4MzYsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8U291cmNlVHlwZTxU
Pj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAodGhp
cy0+aXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHsgdGhpcy0+dGVtcGxh
dGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKSB9OwogICAgIH0KQEAgLTg0OSw3ICs4NDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPFNvdXJjZVR5cGU8VD4+JiBzb3VyY2UpCiAgICAgewogICAgICAgICBpZiAo
IXNvdXJjZSkKLSAgICAgICAgICAgIGVuY29kZShlbmNvZGVyLCBXVEY6Om51bGxvcHQpOworICAg
ICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgKaW5kZXggNmI5NmI1Mjk0ZDY0M2U3
MzI0MjBlYjA3OGVjZDgzNDBkOTcxMTY2Yi4uNTk0NTg3MzMwMmNjMjI1NDkxYjNlYWM4ZWVjOTYz
NDExNDVhMGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBl
cy5oCkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHB0cmRpZmZfdCBvZmZzZXRPZihj
b25zdCB2b2lkKik7CiAgICAgdm9pZCBjYWNoZU9mZnNldChwdHJkaWZmX3QsIHZvaWQqKTsKLSAg
ICBXVEY6Ok9wdGlvbmFsPHZvaWQqPiBjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90KTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHZvaWQqPiBjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90KTsKICAg
ICBjb25zdCB2b2lkKiBwdHJGb3JPZmZzZXRGcm9tQmFzZShwdHJkaWZmX3QpOwogICAgIENvbXBh
Y3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlIGhhbmRsZUZvclREWkVudmlyb25tZW50KENvbXBh
Y3RURFpFbnZpcm9ubWVudCopIGNvbnN0OwogICAgIHZvaWQgc2V0SGFuZGxlRm9yVERaRW52aXJv
bm1lbnQoQ29tcGFjdFREWkVudmlyb25tZW50KiwgY29uc3QgQ29tcGFjdFREWkVudmlyb25tZW50
TWFwOjpIYW5kbGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCmluZGV4IDI2ZTUyMmZkNWE2MmZkMzkyZjkzMjk1YTY2MTM4MjQwYzc0MGJkOTkuLjE0OTRj
N2U4Y2ZjZmM4N2E3NTAxYTQ5Yzg2YjcyZTFmMzMyN2ZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2Vk
Q29kZUJsb2NrVHlwZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbENvZGVCbG9jayhWTSYg
dm0sIEV4ZWN1dGFibGVUCiAgICAgU291cmNlQ29kZUtleSBrZXkoCiAgICAgICAgIHNvdXJjZSwg
U3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIAogICAgICAgICBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxD
b250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29kZUdlbmVyYXRpb25Nb2RlLAot
ICAgICAgICBXVEY6Om51bGxvcHQpOworICAgICAgICBzdGQ6Om51bGxvcHQpOwogICAgIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBtX3NvdXJjZUNvZGUuZmluZENh
Y2hlQW5kVXBkYXRlQWdlPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSk7CiAgICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrICYmIE9wdGlvbnM6OnVzZUNvZGVDYWNoZSgpKSB7CiAgICAgICAg
IHVuc2lnbmVkIGxpbmVDb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5saW5lQ291bnQoKTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpn
ZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8vIFRoZSBGdW5j
dGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28g
bm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAgICAgLy8gaW4g
dGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNr
IGFjY2Vzc2VzIGZyb20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0g
Y29uc3RydWN0QWJpbGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtl
ZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNs
YXNzaWMsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBO
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpO
b25lKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0
YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlw
ZTo6Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1
aXJlbWVudDo6Tm9uZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxE
aXJlY3RpdmUoKS5pc051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3Vy
Y2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsK
QEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9y
U2VyaWFsaXplZEJ5dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIHJldHVybiBT
b3VyY2VDb2RlS2V5KAogICAgICAgICBzb3VyY2VDb2RlLCBTdHJpbmcoKSwgY29kZVR5cGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsCiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwg
RXZhbENvbnRleHRUeXBlOjpOb25lLCBmYWxzZSwgY29kZUdlbmVyYXRpb25Nb2RlLAotICAgICAg
ICBXVEY6Om51bGxvcHQpOworICAgICAgICBzdGQ6Om51bGxvcHQpOwogfQogCiBTb3VyY2VDb2Rl
S2V5IHNvdXJjZUNvZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbShWTSYgdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db25jdXJyZW50SlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25jdXJyZW50SlNMb2NrLmgKaW5kZXggODYzMTE3ZDg5MTVjNDNlNGE2NzcyMDgyYjliYzU1YjM5
YTJkMWNhMS4uMjJmNDY2MTdkYjc0NjdmNzdiMDJkZGQzMzAxMTk3ZjQxMTFiMjgwMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaApAQCAt
MTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrZXIoTm9Mb2NraW5n
TmVjZXNzYXJ5VGFnKQogICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UoTm9Mb2NraW5n
TmVjZXNzYXJ5KQogI2lmICFkZWZpbmVkKE5ERUJVRykKLSAgICAgICAgLCBtX2Rpc2FsbG93R0Mo
V1RGOjpudWxsb3B0KQorICAgICAgICAsIG1fZGlzYWxsb3dHQyhzdGQ6Om51bGxvcHQpCiAjZW5k
aWYKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCBjMGJjNzNlMDdhMTU0NzA3ODJl
ODJkODcwMDgzNjg3YmIwYzIzNWEyLi5mM2I4ZTkxNDE5NDIyZjIwN2M0ZjYxMTg1OWE0YWVkNDU2
NmM3NTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
ZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAg
ICBPcHRpb25hbDxib29sPiB3cml0YWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhh
c1dyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShX
cml0YWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghaGFzQ29uZmlndXJhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJpU3RhdGU6OlRy
dWU7CiAgICAgfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGJv
b2w+IGVudW1lcmFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNFbnVtZXJhYmxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxl
U2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkODNjNTEwMDYzNTIz
MzNmY2M5MGE3NDAyM2VjZGVhMzZlM2Y3MzJkLi4xOWRiNmNjZGZkYWQ3MDAyZjMwYzViNjBmMzhj
YmMzMmRiNTQ0NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEVycm9yQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBl
KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5FcnJv
ci5zdHJpbmcoKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKICAgICAvLyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBlcnJv
clByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGlt
aXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCgpLT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZU9yKE9w
dGlvbnM6OmRlZmF1bHRFcnJvclN0YWNrVHJhY2VMaW1pdCgpKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVyKGds
b2JhbE9iamVjdCgpLT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZV9vcihPcHRpb25zOjpkZWZhdWx0
RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlB
dHRyaWJ1dGU6Ok5vbmUpKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKQEAgLTgyLDcgKzgyLDcgQEAg
Ym9vbCBFcnJvckNvbnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU4KICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3Rk
OjptaW4oZWZmZWN0aXZlTGltaXQsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxP
YmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihlZmZlY3Rp
dmVMaW1pdCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPmdsb2Jh
bE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoc3RkOjpudWxs
b3B0KTsKICAgICB9CiAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wg
RXJyb3JDb25zdHJ1Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0CiAgICAgRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpz
Q2FzdDxFcnJvckNvbnN0cnVjdG9yKj4oY2VsbCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09
IHZtLnByb3BlcnR5TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKLSAgICAgICAgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAg
ICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0ZDo6bnVs
bG9wdCk7CiAKICAgICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCAxN2JjMjQ2
MTQ5NTE5YzBlMzA1YWM4MmVkOTQzNmYyYzFjNDU2NzAwLi5kMjNkZmY5OWJlYTk5MGQxMDUwYzhh
ZWUxMTFiZmRkN2ZhODIzZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICAvLyBI
b3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIg
Y29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwotICAgIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsK
KyAgICBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQogICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxu
fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmFkY2I3ODUw
ZmI2ZjkzNjU1NmNlNDljMjYxNjAyYzU5NTlkNGZkYS4uYWU4MjQ2NGU5NjJiYzM1MTNjMGE4OTIy
NDQzYzQxZWNmOWE5MTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBpZiAob3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xKSB7CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkobV9yYXJlRGF0YSkpCi0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9v
dmVycmlkZUxpbmVOdW1iZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9vdmVycmlkZUxpbmVOdW1iZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX292ZXJyaWRlTGlu
ZU51bWJlciA9IG92ZXJyaWRlTGluZU51bWJlcjsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9yYXJlRGF0YSkpCiAgICAgICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9vdmVycmlkZUxpbmVOdW1iZXI7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
aW50IGxpbmVDb3VudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5jcHAKaW5kZXggNWFiNWQ5YThhNjUxN2Y3NzQ1ZjVmM2Qy
MzkxNTg2NDk4ODczMzlmYi4uM2MwNDg5Zjg4NjdkYzFmODc2OWQ5NzAxN2UxNjFmZDE5ZGY5NjMx
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGlj
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRp
Y3Rpb25zLmNwcApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gRnV6
emVyUHJlZGljdGlvbnM6OnByZWRpY3Rpb25Gb3IoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAg
YXV0byBpdCA9IG1fcHJlZGljdGlvbnMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBtX3ByZWRp
Y3Rpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaAppbmRleCBi
NzM0ZGZkMmVhNzMxM2FmNDQ4YmU5ZTY4MTNmM2NkMDQ0NmRkMmJmLi43MjBlNjhlOGI2YWIzZmZl
NGMwYTIwNWU5ZjgyZWQxZTc3NDU1MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgRW50cnkmIGVudHJ5ID0gYml0d2lzZV9jYXN0PEVudHJ5Kj4odGhpcylbaW5k
ZXhdOwogICAgICAgICBpZiAoZW50cnkuc3RydWN0dXJlSUQgPT0gaWQgJiYgZW50cnkuaW1wbC5n
ZXQoKSA9PSBpbXBsKQogICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlc3VsdDsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdHJ5QWRkKFZNJiB2bSwgUHJvcGVydHlTbG90JiBz
bG90LCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcE5hbWUsIGJvb2wgcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGlu
ZXMuaAppbmRleCBhMzYzYjVkMDZiNWE0ZTJkYmEwOWY4ZmY5ZjlmOGNhOGYzMTdmYWVkLi5mMTFm
MGE1YjRjNmE5NWZiODQ4OWU3NTUwZTAyYjY2MWMxMWI4OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaApAQCAtMTIzLDEwICsx
MjMsMTAgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gY29uY3VycmVudEpTTWFw
SGFzaChKU1ZhbHVlIGtleSkKICAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNT
dHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0
aCgpID4gMTAgKiAxMDI0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGlt
cGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICBpZiAoIWltcGwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIGltcGwtPmNvbmN1cnJlbnRIYXNoKCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggYWU2ZGJiMGY4
ZjU5MjM1MGE0Y2YyZTQxMGRmMGJkMmRhYmM3OGEwOS4uMTcxNGI4YWRkNWRiOWRlNjVlNWMxNjM5
OTkwNGJjMzMxZGUzNmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaApAQCAtNDIsMzggKzQyLDM4IEBAIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMy
X3Q+IHBhcnNlSW5kZXgoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkCiB7CiAg
ICAgLy8gQW4gZW1wdHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBk
aWdpdC4KICAgICB1aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7CiAgICAgaWYg
KHZhbHVlID4gOSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENoZWNrIGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUg
Zmlyc3QgY2hhcmFjaGVyIGlzIDAsIHRoZW4gdGhlCiAgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJp
bmcgbXVzdCBiZSBvbmUgLSBlLmcuICIwNDIiIGlzIG5vdCBlcXVhbCB0byAiNDIiLgogICAgIGlm
ICghdmFsdWUgJiYgbGVuZ3RoID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHdoaWxlICgtLWxlbmd0aCkgewogICAg
ICAgICAvLyBNdWx0aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBv
ZiAzMiBiaXRzLgogICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHZhbHVlICo9IDEwOwogCiAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFy
YWN0ZXIsIHR1cm5pbmcgaXQgaW50byBhIGRpZ2l0LgogICAgICAgICB1aW50MzJfdCBuZXdWYWx1
ZSA9ICooKytjaGFyYWN0ZXJzKSAtICcwJzsKICAgICAgICAgaWYgKG5ld1ZhbHVlID4gOSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBmb3Ig
b3ZlcmZsb3cgb3V0IG9mIDMyIGJpdHMuCiAgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOwogICAg
ICAgICBpZiAobmV3VmFsdWUgPCB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA9IG5l
d1ZhbHVlOwogICAgIH0KIAogICAgIGlmICghaXNJbmRleCh2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCkBAIC0yNzYsOSArMjc2LDkgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1
aW50MzJfdD4gcGFyc2VJbmRleChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAg
IGF1dG8gdWlkID0gaWRlbnRpZmllci5pbXBsKCk7CiAgICAgaWYgKCF1aWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJbmRleCgqdWlkKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cAppbmRleCBkNzljMzQxNzhhMmJiZWRhODk3MjcyY2ExODhhYjc3NTg4MGRmN2NkLi40ZmRkYWYx
NWYzZmY3MDRlZDBlN2MwMTAyMjM4NTAwNDM5Yjg4NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxl
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5h
cnJvdyJfcywgU3R5bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsg
ImxvbmciX3MsIFN0eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93
XCIsIFwic2hvcnRcIiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgYXV0byB0eXBlID0gaW50bE9wdGlv
bjxPcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3Ms
IFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5j
eSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdl
XCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgV1RGOjpudWxs
b3B0KTsKKyAgICBhdXRvIHR5cGUgPSBpbnRsT3B0aW9uPE9wdGlvbmFsPFR5cGU+PihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3Ms
IFR5cGU6Okxhbmd1YWdlIH0sIHsgInJlZ2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlw
dCJfcywgVHlwZTo6U2NyaXB0IH0sIHsgImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9IH0s
ICJ0eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRc
Iiwgb3IgXCJjdXJyZW5jeVwiIl9zLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCF0eXBlKSB7CiAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJf
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IGFmZTQ2MDY2MDNlNDRkNzBlODMwNGE5NTlmNjhhNzJiMGM5MGQ2M2UuLjVl
MjRjOTQ1MzBhMmQ3YTVhYzg5ODE1MDM0ZmEwYzQ5NTczNTU1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMTYsNyAr
MjE2LDcgQEAgc3RhdGljIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBzYW5jdGlvbmVkU2ltcGxlVW5p
dElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnQKICAgICAgICAgfSk7CiAgICAgaWYgKGl0
ZXJhdG9yICE9IHN0ZDo6ZW5kKHNpbXBsZVVuaXRzKSAmJiBpdGVyYXRvci0+c3ViVHlwZSA9PSB1
bml0SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuICppdGVyYXRvcjsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0cnVjdCBXZWxsRm9y
bWVkVW5pdCB7CkBAIC0yNDYsMjEgKzI0NiwyMSBAQCBzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1l
ZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaQog
ICAgIGF1dG8gcGVyID0gU3RyaW5nVmlldygiLXBlci0iX3MpOwogICAgIGF1dG8gcG9zaXRpb24g
PSB1bml0SWRlbnRpZmllci5maW5kKHBlcik7CiAgICAgaWYgKHBvc2l0aW9uID09IFdURjo6bm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKHVuaXRJZGVudGlmaWVyLmZpbmQocGVyLCBwb3NpdGlvbiArIHBl
ci5sZW5ndGgoKSkgIT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSByZXN1bHQg
b2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwg
dGhlbiByZXR1cm4gZmFsc2UuCiAgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5z
dWJzdHJpbmcoMCwgcG9zaXRpb24pOwogICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9IHNhbmN0aW9u
ZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpOwogICAgIGlmICghbnVtZXJhdG9yVW5p
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElk
ZW50aWZpZXIoZGVub21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICBh
dXRvIGRlbm9taW5hdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgcGVy
Lmxlbmd0aCgpKTsKICAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVV
bml0SWRlbnRpZmllcihkZW5vbWluYXRvcik7CiAgICAgaWYgKCFkZW5vbWluYXRvclVuaXQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1ZSgpLCBkZW5v
bWluYXRvclVuaXQudmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCmluZGV4IGM2N2Q1NDJmMmI5ZDE4MzZlZjNhYjVjY2IzZTc4YjJiMzQx
YTUwOWMuLjdjZjljODY3MDZiZjY1NTQzZjhkZTlhMzE0OTNmZWVjMTAyOGMxMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNDQ4LDEyICsx
NDQ4LDEyIEBAIE9wdGlvbmFsPFZlY3RvcjxjaGFyLCAzMj4+IGNhbm9uaWNhbGl6ZUxvY2FsZUlE
V2l0aG91dE51bGxUZXJtaW5hdG9yKGNvbnN0IGNoYXIqCiAgICAgLy8gaHR0cHM6Ly91bmljb2Rl
LW9yZy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9JQ1UtMjE1MDYKICAgICBhdXRvIHN0YXR1cyA9IGNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1YWxvY19jYW5vbmljYWxGb3JtLCBsb2NhbGVJRCwg
YnVmZmVyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKICNlbHNlCiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24o
dWxvY19jYW5vbmljYWxpemUsIGxvY2FsZUlELCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYnVmZmVyOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
CmluZGV4IGI4OWNhZTg2NjJhMTA2NjkxNmFkZGM3YzNiMWRhNTYzN2YzNWM4YzcuLjYyYzQ4OGYw
NTQzN2FmMjMwM2ViZGQ0ZGZhNDhlNjE0YzNiODdkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0y
MjgsNyArMjI4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFVSZWxhdGl2ZURhdGVUaW1lVW5pdD4gcmVs
YXRpdmVUaW1lVW5pdFR5cGUoU3RyaW5nVmlldyB1bml0KQogICAgIGlmIChzaW5ndWxhciA9PSAi
eWVhciIpCiAgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX1lFQVI7CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDE0NGJhM2NjNmE2N2ZkYjYw
YmM0ODAxZGUzYmE3YmIyZmQwNjY0MjkuLmQ0YWI0OWFhMWM0NWVmNjQ0MjEwMzU0MzU2YjE5OTBm
ZDRlODIwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNw
cApAQCAtMzU3LDcgKzM1Nyw3IEBAIE9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25L
aW5kRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgY2FzZSBUeXBlZEFycmF5
RW50cmllc0ludHJpbnNpYzoKICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKaW5kZXggNTFjYWJh
ZmIyZDA5OGQ3OThhNmJjNWIwZTNmNzA1ZTdmMTFhMWUwYi4uNzdjOTJlY2Y4YTVlZDU3YTI4MDFh
MjAxZDM1ODZjYmVkM2YyNTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTQ1LDMxICs0NSwzMSBA
QCBPcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3coSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGJvb2wgaXNWYWxpZCA9IHNwZWNpZXNXYXRj
aHBvaW50SXNWYWxpZCh2bSwgdGhpc09iamVjdCwgbW9kZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICBpZiAoTElLRUxZKGlzVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSlNWYWx1ZSBj
b25zdHJ1Y3RvciA9IHRoaXNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBXVEY6Om51
bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgaWYgKGNvbnN0cnVjdG9yLmlzQ29uc3RydWN0b3Iodm0pKSB7CiAgICAgICAgIEpTT2JqZWN0
KiBjb25zdHJ1Y3Rvck9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNvbnN0cnVjdG9yKTsKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZyb21Db25zdHJ1Y3RvciA9IGNvbnN0
cnVjdG9yT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICBib29sIGlzQXJyYXlCdWZm
ZXJDb25zdHJ1Y3RvckZyb21Bbm90aGVyUmVhbG0gPSBnbG9iYWxPYmplY3QgIT0gZ2xvYmFsT2Jq
ZWN0RnJvbUNvbnN0cnVjdG9yCiAgICAgICAgICAgICAmJiBjb25zdHJ1Y3Rvck9iamVjdCA9PSBn
bG9iYWxPYmplY3RGcm9tQ29uc3RydWN0b3ItPmFycmF5QnVmZmVyQ29uc3RydWN0b3IobW9kZSk7
CiAgICAgICAgIGlmIChpc0FycmF5QnVmZmVyQ29uc3RydWN0b3JGcm9tQW5vdGhlclJlYWxtKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBu
b3QgYmUgbnVsbCJfcyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBzcGVjaWVzID0gY29uc3Ry
dWN0b3IuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzdGQ6Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIHNwZWNp
ZXMuaXNVbmRlZmluZWRPck51bGwoKSA/IFdURjo6bnVsbG9wdCA6IG1ha2VPcHRpb25hbChzcGVj
aWVzKTsKKyAgICByZXR1cm4gc3BlY2llcy5pc1VuZGVmaW5lZE9yTnVsbCgpID8gc3RkOjpudWxs
b3B0IDogc3RkOjptYWtlX29wdGlvbmFsKHNwZWNpZXMpOwogfQogCiBlbnVtIGNsYXNzIFNwZWNp
ZXNDb25zdHJ1Y3RSZXN1bHQgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oCmlu
ZGV4IGEwMjljNzM3ZWNlNjYwMTA3ZTFlMDk1M2ViNWQzM2UwMWI2ZjRiZWMuLjViYTgzZWFhODUy
MDJiN2FkOGU1ODNhZDE4M2RjMGJjZTNiMTZlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMu
aApAQCAtNTgsNyArNTgsNyBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPEpTVmFsdWU+IGFycmF5
QnVmZmVyU3BlY2llc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIGJvb2wgaXNW
YWxpZCA9IHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZCh2bSwgdGhpc09iamVjdCwgbW9kZSk7CiAg
ICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoTElLRUxZKGlzVmFsaWQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcnJheUJ1ZmZlclNwZWNpZXNDb25z
dHJ1Y3RvclNsb3coZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBtb2RlKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggNGM0MmM4NjdlMDNjNWI2
ZmI4NmU1ZGIzNTA5MTY3N2FkYzdlNGE1OS4uMDBhYmI5OTI1ZjcxNjMyNGU0ODJlMTc2YThmNGM3
OWZkZmVjMGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNC
aWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cApAQCAtMjcxMSwxMyArMjcxMSwxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4K
IE9wdGlvbmFsPEpTQmlnSW50OjpEaWdpdD4gSlNCaWdJbnQ6OnRvU2hpZnRBbW91bnQoQmlnSW50
SW1wbCB4KQogewogICAgIGlmICh4Lmxlbmd0aCgpID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBEaWdpdCB2
YWx1ZSA9IHguZGlnaXQoMCk7CiAgICAgc3RhdGljX2Fzc2VydChtYXhMZW5ndGhCaXRzIDwgc3Rk
OjpudW1lcmljX2xpbWl0czxEaWdpdD46Om1heCgpLCAibWF4TGVuZ3RoQml0cyBuZWVkcyB0byBi
ZSBsZXNzIHRoYW4gZGlnaXQiKTsKICAgICAKICAgICBpZiAodmFsdWUgPiBtYXhMZW5ndGhCaXRz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMzA3OCw3ICszMDc4LDcgQEAgT3B0aW9u
YWw8dW5zaWduZWQ+IEpTQmlnSW50Ojpjb25jdXJyZW50SGFzaCgpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBKU0JpZ0ludDo6Y29uY3VycmVudEhhc2ggYnkgaW5zZXJ0aW5nIHJpZ2h0IHN0
b3JlIGJhcnJpZXJzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY4MDEKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHVuc2lnbmVkIEpTQmlnSW50OjpoYXNoU2xvdygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGM3NTk0YTg0OTJjZTY3NGMy
NDRmMWFlMmEzYWMxNDcxNTU4MzEyNTQuLmE5NzRkOTVjN2M3MmI0MDRmYzdhMzZiZjBjZjFlZTY2
YTRmODlhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiBPcHRpb25hbDxkb3VibGU+IEpTVmFs
dWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGFzTnVtYmVyKCk7CiAgICAg
aWYgKGlzQm9vbGVhbigpKQpAQCAtODcsNyArODcsNyBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFs
dWU6OnRvTnVtYmVyRnJvbVByaW1pdGl2ZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBQTmFOOwog
ICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLXRvYmlnaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBhOGRlNDkzYzBiMGFhMjJiNjRlNDdhYzk0ZGUx
MTk4YmRlMWUzOWIwLi44ODM0ZGQ4NzA5NWJjMmRiYzdkNDQyMDU3ZGI1MGNkMTdlMWEzMDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6
OnRyeUdldEFzVWludDMySW5kZXgoKQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihh
c1VpbnQpID09IG51bWJlciAmJiBpc0luZGV4KGFzVWludCkpCiAgICAgICAgICAgICByZXR1cm4g
YXNVaW50OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGlubGluZSBPcHRpb25hbDxpbnQzMl90PiBKU1ZhbHVlOjp0cnlHZXRB
c0ludDMyKCkKQEAgLTEzMiw3ICsxMzIsNyBAQCBpbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNW
YWx1ZTo6dHJ5R2V0QXNJbnQzMigpCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGFz
SW50KSA9PSBudW1iZXIpCiAgICAgICAgICAgICByZXR1cm4gYXNJbnQ7CiAgICAgfQotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5l
IEpTVmFsdWUganNOYU4oKQpAQCAtODU3LDcgKzg1Nyw3IEBAIEFMV0FZU19JTkxJTkUgT3B0aW9u
YWw8dWludDMyX3Q+IEpTVmFsdWU6OnRvVUludDMyQWZ0ZXJUb051bWVyaWMoSlNHbG9iYWxPYmpl
Y3QqCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoTElLRUxZ
KHJlc3VsdC5pc0ludDMyKCkpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHJlc3VsdC5hc0ludDMyKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmln
SW50T3JJbnQzMihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAppbmRleCA5NzY3Y2M3NjA3YmY1MThhODhiNzUxNTk1
Mzg3NDJkNzczN2E0ZDdkLi5jY2ZmNGE4YjYwZTlhYmUzYTRjNzdlNWYxMjNmNTVhYWI2ZTdmMjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtMTQ5LDcgKzE0OSw3
IEBAIGlubGluZSBib29sIGluaGVyaXRzSlNUeXBlSW1wbChWTSYgdm0sIEZyb20qIGZyb20sIEpT
VHlwZVJhbmdlIHJhbmdlKQogLy8gd2F5IHRvIHNheSB0aGF0IHdlIGFyZSBvdmVybG9hZGluZyBq
dXN0IHRoZSBmaXJzdCB0eXBlIGluIGEgdGVtcGxhdGUgbGlzdC4uLgogdGVtcGxhdGU8dHlwZW5h
bWUgVGFyZ2V0Pgogc3RydWN0IEluaGVyaXRzVHJhaXRzIHsKLSAgICBzdGF0aWMgY29uc3RleHBy
IE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBz
dGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBzdGQ6Om51
bGxvcHQgfTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgogICAgIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpbmhlcml0cyhWTSYgdm0sIEZyb20qIGZyb20pIHsgcmV0dXJuIEZpbmFsVHlwZURpc3Bh
dGNoZXI8c3RkOjppc19maW5hbDxUYXJnZXQ+Ojp2YWx1ZT46OnRlbXBsYXRlIGluaGVyaXRzR2Vu
ZXJpYzxUYXJnZXQ+KHZtLCBmcm9tKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaAppbmRleCBmZWEzMTg3ZmY4
N2E3N2IyZmJkYjYwOWIzNGVhYmMzYWFlNTBkNjM1Li4yMzhiOWEwMzA1ZDk3OTQ2MzYxMWU3OGQz
ZjZkMmVhOWNhYmJlZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5j
dGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBD
dXN0b21GdW5jdGlvblBvaW50ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+ID0g
V1RGOjpudWxsb3B0KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21HZXR0
ZXJGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5h
bWUmLCBDdXN0b21GdW5jdGlvblBvaW50ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRp
b24+ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDZkNGU5Zjli
YmIxMWQ3YTFmOWJhNzE5MmU5YTAxZmFmOGQxMzYxNjkuLmU5ZGY4NDM1ZTY5OGUyYzA4NTE2NmJl
Y2E3NTVmZDhkNmRlYTJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaApAQCAtMjc2LDcgKzI3Niw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoK
IAogICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gMDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVu
Z3RoID0gV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJz
dFZhbHVlKSAmJiBhcmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDJlMDJiYTNkNjQwNWVlNzJk
ZDRhZGUwYmE2N2NiOTU4ZjFhNjQ2MGIuLjZmYmFhMDcyYjAzMDlkYjMxNTk4YjY5ZmQyYWNiYWJi
NTZmYzFkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05OCw3
ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX2hhc093bmVyVGhyZWFkKQog
ICAgICAgICAgICAgcmV0dXJuIG1fb3duZXJUaHJlYWQ7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGJvb2wgY3Vy
cmVudFRocmVhZElzSG9sZGluZ0xvY2soKSB7IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1f
b3duZXJUaHJlYWQuZ2V0KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCBmMzU0NmE4
ODM0NTMzZmVkN2Y4ODFlNWRkNTJlNjUyZWZjZjY4ZThjLi4yMWQwYmNmYjMwM2EwNjYwMzY1MzVm
N2EyZmFhMWE1MGNmODdlMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1J1bkxvb3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNSdW5Mb29wVGltZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgT3B0aW9uYWw8U2Vjb25k
cz4gSlNSdW5Mb29wVGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRpbEZpcmUoSlNSdW5Mb29wVGltZXIm
IHRpbWVyKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRp
ZEZpcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGlu
ZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0
LmgKaW5kZXggODZiMzZjYTIyZjcwNjI1ZTc3ZDhmNmZmZWZiMDI4MjlkNmIyN2M5NC4uZGQyOWIw
M2VjY2E5OGM2MGYzYWJmZTI0YmJlZGUxZTJhYWQ5MzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCkBAIC00NTQsMTIgKzQ1NCwxMiBAQCBp
bmxpbmUgT3B0aW9uYWw8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQ
dHJUYWc+PiBpbnN0cnVjdGlvblBvaQogICAgIHZvaWQqIHZhbHVlID0gaW5zdHJ1Y3Rpb25Qb2lu
dGVySW1wbChjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOwogI2VuZGlmCiAg
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4obnVsbHB0cikpOworICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJl
Z2lzdGVyc1BDUHRyVGFnPihudWxscHRyKSk7CiAgICAgaWYgKCF1c2VzUG9pbnRlclRhZ2dpbmco
KSkKLSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxh
dGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9vcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRh
Zz4odmFsdWUpKTsKICAgICBpZiAoaXNUYWdnZWRXaXRoPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJU
YWc+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPih2YWx1ZSkpOworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRlcihQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVncywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0
clRhZz4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoQ29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgK
aW5kZXggYTIyNDdkNWJjY2M2MTUzZmVjZTY5ODkyODk3OThmODVkZTYxOTk3MS4uNjMxNzE3Zjkw
YTQ5MTMwNmU0NTRjMjcxMTczOGJmMmVlYTRmMDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhDb21tb24uaApAQCAtMTgyLDExICsxODIsMTEgQEAgaW5saW5lIE9wdGlv
bmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGRvdWJsZSBjb25zdGFudCkK
IHsKICAgICAvLyBObyAid2VpcmQiIG51bWJlcnMgKE5hTiwgRGVub3JtYWwsIGV0YykuCiAgICAg
aWYgKCFjb25zdGFudCB8fCAhc3RkOjppc25vcm1hbChjb25zdGFudCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQg
ZXhwb25lbnQ7CiAgICAgaWYgKHN0ZDo6ZnJleHAoY29uc3RhbnQsICZleHBvbmVudCkgIT0gMC41
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gTm90ZSB0aGF0IGZyZXhwKCkgcmV0dXJucyB0aGUgdmFsdWUgZGl2aWRl
ZCBieSB0d28KICAgICAvLyBzbyB3ZSB0byBvZmZzZXQgdGhpcyBleHBvbmVudCBieSBvbmUuCkBA
IC0xOTUsNyArMTk1LDcgQEAgaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxG
b3JEaXZCeUNvbnN0KGRvdWJsZSBjb25zdGFudCkKICAgICAvLyBBIGRvdWJsZSBleHBvbmVudCBp
cyBiZXR3ZWVuIC0xMDIyIGFuZCAxMDIzLgogICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvIHRvIGlu
dmVydCAxMDIzLgogICAgIGlmIChleHBvbmVudCA9PSAxMDIzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHJl
Y2lwcm9jYWwgPSBzdGQ6OmxkZXhwKDEsIC1leHBvbmVudCk7CiAgICAgQVNTRVJUKHN0ZDo6aXNu
b3JtYWwocmVjaXByb2NhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDBjNmE5Yzc0MWY2NjI1MjE1YjdkNTcwNGM3
YWRmMGY5NWE3Mjg0YTguLmIxN2Y1OTM2ZmVmYzk2MzhlY2Y0OWFlZWJlYzg3MGMwODY0Y2ViYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2Jq
ZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIChKU0dsb2JhbE9iamVjdAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9i
YWxPYmplY3QsIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9w
ZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0KSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3Qs
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZTo6SW5jbHVkZSwgc3RkOjpudWxsb3B0KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0Q29uc3RydWN0b3JLZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAppbmRleCBhMDExODNmN2RmYmJmN2Q1NWVkZDUzMDE2MDFlOGI0ODlmYjJjYTYzLi5j
Y2M5MzBjM2Y5NjFkZWM1Nzk3MmJlMWY1YWFkNmQ3MjJmNzJmNDg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxP
cHRpb25zU3RvcmFnZTo6Qm9vbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAiZmFsc2UiKSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIp
IHx8ICFzdHJjbXAoc3RyaW5nLCAiMCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0
ZTw+CkBAIC03Nyw3ICs3Nyw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFy
c2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIGludDMyX3QgdmFsdWU7CiAgICAgaWYgKHNzY2Fu
ZihzdHJpbmcsICIlZCIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8PgpAQCAtODYsNyArODYsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6VW5zaWdu
ZWQ+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICB1bnNpZ25lZCB2YWx1ZTsKICAgICBp
ZiAoc3NjYW5mKHN0cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxKQogICAgICAgICByZXR1cm4gdmFs
dWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiAjaWYgQ1BVKEFERFJFU1M2NCkgfHwgT1MoREFSV0lOKQpAQCAtOTYsNyArOTYsNyBAQCBP
cHRpb25hbDxPcHRpb25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQog
ICAgIHNpemVfdCB2YWx1ZTsKICAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkg
PT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBDUFUoQUREUkVTUzY0KSB8fCBP
UyhEQVJXSU4pCiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6
RG91YmxlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgZG91YmxlIHZhbHVlOwogICAg
IGlmIChzc2NhbmYoc3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxKQogICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB0ZW1wbGF0ZTw+CkBAIC0xMTUsNyArMTE1LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0
b3JhZ2U6Ok9wdGlvblJhbmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgT3B0aW9u
UmFuZ2UgcmFuZ2U7CiAgICAgaWYgKHJhbmdlLmluaXQoc3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IHJhbmdlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdGVtcGxhdGU8PgpAQCAtMTQzLDcgKzE0Myw3IEBAIE9wdGlvbmFsPE9wdGlvbnNT
dG9yYWdlOjpHQ0xvZ0xldmVsPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInZlcmJvc2UiKSB8fCAhc3RyY21w
KHN0cmluZywgIjIiKSkKICAgICAgICAgcmV0dXJuIEdDTG9nZ2luZzo6VmVyYm9zZTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9v
bCBPcHRpb25zOjppc0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZhaWxhYmls
aXR5IGF2YWlsYWJpbGl0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlOYW1lLmgKaW5kZXggZmViNTJlNmNmMGE4ODJjMTkwZjVmOThlNWVjYzkxZmUzNmFhODViNS4u
OWQ0MDUxYzVmMmYyYTQwZGEzYmU2M2VmZjgwOWU1MDg1ZmI5NWU4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTEyNiw5ICsxMjYsOSBAQCBB
TFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAg
aWYgKCF1aWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFy
c2VJbmRleCgqdWlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eVNsb3QuaAppbmRleCBjMTBjNjUwNzk5ZGQ2MWY3NmQ0NzM5MDIwNmQwODMwMTEwYjFiN2U1
Li41YjA2NDIyY2JkYWQzMjcwMGE0MzU3OTM5MDkwMDlhODE1YzRlYTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtMTkyLDcgKzE5Miw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX2FkZGl0aW9uYWxEYXRhVHlwZSA9PSBBZGRp
dGlvbmFsRGF0YVR5cGU6OkRPTUF0dHJpYnV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0
aW9uYWxEYXRhLmRvbUF0dHJpYnV0ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdHJ1Y3QgTW9kdWxlTmFt
ZXNwYWNlU2xvdCB7CkBAIC0yMDQsNyArMjA0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
aWYgKG1fYWRkaXRpb25hbERhdGFUeXBlID09IEFkZGl0aW9uYWxEYXRhVHlwZTo6TW9kdWxlTmFt
ZXNwYWNlKQogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGEubW9kdWxlTmFtZXNw
YWNlU2xvdDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICB2b2lkIHNldFZhbHVlKEpTT2JqZWN0KiBzbG90QmFz
ZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNDExOTJjY2IzN2U4MmZk
ZmRkZTdiNmYxOTViNGM0MTdkNjFlMGI4OS4uZTVmOGQ1NDM3YTk2NWIwOGViNzkzNTUyM2Y1MjIx
MTA5NjA2NDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVm
bGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVj
dE9iamVjdC5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVmbGVjdE9iamVjdE93bktleXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIGpz
Q2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1i
b2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUs
IHN0ZDo6bnVsbG9wdCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5wcmV2ZW50ZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggMDgyODc4MDcyMjU1ZDg5NzM3
MDgyNTk4MmNmZTdlMmU1MDQ5OGJiZS4uZTAwMmM2NDZiODA2ZWNkZGJjZWRhOTBlMDBjZjY4Zjc2
ODEzODEwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQ
cm90b3R5cGUuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5n
KCkgOiBhcmcwLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgIGF1dG8gZmxhZ3Mg
PSBhcmcxLmlzVW5kZWZpbmVkKCkgPyBtYWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlhcnI6OkZsYWdz
PiB7IH0pIDogWWFycjo6cGFyc2VGbGFncyhhcmcxLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkp
OworICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgpID8gc3RkOjptYWtlX29w
dGlvbmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJn
MS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghZmxhZ3MpCiAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRh
eEVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiJfcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCA1MGE3MDUyMjBlZmFmYmM3ZTk1YzYxM2UxYjBiYmIy
NDgzNTdkMjc5Li41Mzg1MjM4ZjcwMmJiZDQ1OWY2Y2Q4NzdlZDE1ODhjNzMzN2JhNjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNw
cApAQCAtMTE1Niw3ICsxMTU2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BC
eXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgYXV0byBmcmFtZURlc2NyaXB0aW9u
ID0gbWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2Nh
dGlvbihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7
CiAgICAgICAgIGlmIChPcHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9u
LCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7
CiAgICAgICAgICAgICBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZURlc2NyaXB0
aW9uLCAiIDwtLSAiLAotICAgICAgICAgICAgICAgIG1hY2hpbmVMb2NhdGlvbi0+c2Vjb25kLT5p
bmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24obWFjaGluZUxvY2F0
aW9uLT5maXJzdCwgV1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0
aW9uLT5zZWNvbmQtPmluZmVycmVkTmFtZSgpLmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlv
bihtYWNoaW5lTG9jYXRpb24tPmZpcnN0LCBzdGQ6Om51bGxvcHQpKTsKICAgICAgICAgfQogICAg
ICAgICBieXRlY29kZUNvdW50cy5hZGQoZnJhbWVEZXNjcmlwdGlvbiwgMCkuaXRlcmF0b3ItPnZh
bHVlKys7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCAyNzA2NTVlOWMzMTA5ZTEyZGM1M2YzODJiYzM0YzI0
ODhiYTIzY2IxLi4yZWVkMTljYWE1N2JjZDEzMzM1YzlkZDljYjhkMzU1NzU1OGVjYjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNw
cApAQCAtNTAxLDcgKzUwMSw3IEBAIE9wdGlvbmFsPGludD4gU2NyaXB0RXhlY3V0YWJsZTo6b3Zl
cnJpZGVMaW5lTnVtYmVyKFZNJiB2bSkgY29uc3QKIHsKICAgICBpZiAoaW5oZXJpdHM8RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgRnVuY3Rpb25F
eGVjdXRhYmxlKj4odGhpcyktPm92ZXJyaWRlTGluZU51bWJlcigpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdW5zaWduZWQgU2NyaXB0
RXhlY3V0YWJsZTo6dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KFZNJiB2bSkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGFmNTI2MTE3Mzcw
ZDk1MjkwNTczNDQyM2I2NzdlMTk5NWU1YjBiMDYuLjdkMGY1OTg2Nzg2YjlhYzQxZjNmMzhhZjVm
ODc5NGMyOGQwNGMzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcApAQCAtMTUwMiw3ICsxNTAyLDcgQEAgYXV0byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0
eUhhc2hFbnRyeShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdCAtPiBPcHRpb24KICAg
ICAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlIYXNoRW50cnkgeyBwcm9wSGFzaFRhYmxlLCBl
bnRyeSB9OwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5k
VHJhbnNpdGlvbkZyb21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFVuaXF1ZWRTdHJpbmdJbXBsKiBicmFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmgKaW5kZXggYmIyOGNjODBhZDNhZTIxZGU3YzZm
YjY3NTNlODRkMGIyMzY4NDgzNi4uYmI3ZjFjNThhMDY0YzM0YzVmZmQ4NWNjMDk4MWY2NDY5MDVk
YzA4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVG
cm9tVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZy
b21WYWx1ZS5oCkBAIC02MSwxNCArNjEsMTQgQEAgT3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6
VHlwZT4gdG9OYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ0ludDY0QWRhcHRv
cj4gfHwgc3RkOjppc19zYW1lX3Y8QWRhcHRvciwgQmlnVWludDY0QWRhcHRvcj4pIHsKICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIGNvbnN0ZXhw
ciAoc3RkOjppc19zYW1lX3Y8QWRhcHRvciwgQmlnSW50NjRBZGFwdG9yPikKICAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6dG9CaWdJbnQ2NCh2YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6dG9CaWdVSW50NjQodmFsdWUpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvTmF0aXZlRnJv
bUludDMyV2l0aG91dENvZXJjaW9uKHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgIHJldHVybiBB
ZGFwdG9yOjp0b05hdGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24odmFsdWUuYXNEb3VibGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
QWRhcHRvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFw
dG9ycy5oCmluZGV4IDNkOWIzZTQ3ZmMwNWJlOTcyOTY0Mzc3YTA3MTY2OGE0ZTIyNzQwN2QuLjUz
NDlkZjE2YTJlYzQ0MWVlNDYxMmUzYzk2NjQ4ZmY4M2QzNmVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCkBAIC04MSwxNCAr
ODEsMTQgQEAgc3RydWN0IEludGVncmFsVHlwZWRBcnJheUFkYXB0b3IgewogICAgIHN0YXRpYyBP
cHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZh
bHVlKQogICAgIHsKICAgICAgICAgaWYgKCh2YWx1ZSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih2YWx1ZSkgPiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4VmFsdWUpKSB8fCB2YWx1ZSA8
IHN0YXRpY19jYXN0PGludDMyX3Q+KG1pblZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBPcHRpb25h
bDxUeXBlPiB0b05hdGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24odWludDMyX3QgdmFsdWUp
CiAgICAgewogICAgICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4VmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVl
KTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFw
dG9yIHsKICAgICB7CiAgICAgICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZh
bHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICAgICAgcmV0dXJu
IHRvTmF0aXZlRnJvbUludDMyV2l0aG91dENvZXJjaW9uKHN0YXRpY19jYXN0PGludDMyX3Q+KHZh
bHVlKSk7CkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBzdHJ1Y3QgRmxvYXRUeXBlZEFycmF5QWRhcHRv
ciB7CiAgICAgICAgIFR5cGUgdmFsdWVSZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7
CiAKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWVSZXN1bHQpICE9IHZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHZhbHVlIDwgbWluVmFsdWUgfHwgdmFsdWUgPiBt
YXhWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDsKICAgICB9
CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3IgewogICAgIHN0
YXRpYyBPcHRpb25hbDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQz
Ml90IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlID4gbWF4VmFsdWUgfHwgdmFsdWUg
PCBtaW5WYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBl
Pih2YWx1ZSk7CiAgICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0cnVjdCBVaW50OENsYW1wZWRB
ZGFwdG9yIHsKICAgICB7CiAgICAgICAgIHVpbnQ4X3QgaW50ZWdlciA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikg
IT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gaW50ZWdlcjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4IDliNDQwNmIxMTU2
M2RhZjU3MzllYjMzOGFmODI1OWE1ZTE4YTQxNTkuLmZkZWM2YmYxMjM0MjMzY2FhZTAyNDhhYjg1
ZWFhYzE1YjIyZmE2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMu
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1
Y3Rpb25Qb2ludGVyID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3Rl
cnMpOwogICAgICAgICBpZiAoIWluc3RydWN0aW9uUG9pbnRlcikKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gU2lnbmFsQ29udGV4dChyZWdpc3RlcnMsICppbnN0cnVjdGlvblBvaW50ZXIpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENy
YXNoQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNo
QW5hbHl6ZXIuY3BwCmluZGV4IDBlNDMyY2IzZTlhMTIyNjZhN2YyMjhjMDZlZTc0N2U2YzliZmRh
NjAuLjE3YzJhNWYzOGM0NDVkZGIwNGY3NjA0NGI2ZGNlOTY4OTczYzBmODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAg
LTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBpbnN0cnVjdGlvblBv
aW50ZXIgPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycyk7CiAg
ICAgICAgIGlmICghaW5zdHJ1Y3Rpb25Qb2ludGVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biBTaWduYWxDb250ZXh0KHJlZ2lzdGVycywgKmluc3RydWN0aW9uUG9pbnRlcik7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
aW5kZXggNTFiZjViMDZjNjA1OWFkZWI4MWQ1ODFmOWJjYjhhYjUzYzQxZTBlMS4uMTU4NzhlMzYz
NDBkMjRhMWY5MTI1MjEyMGZlYzFmMGI0OTI5NDdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKSB7IH0KICAgICB2b2lkIGRp
ZFBvcFZhbHVlRnJvbVN0YWNrKCkgeyB9CiAKLSAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUs
IHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQpOworICAgIFZh
bHVlKiBjb25zdGFudChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgVmFsdWUqIGZyYW1lUG9pbnRlcigpOwogICAgIHZvaWQgaW5z
ZXJ0Q29uc3RhbnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApp
bmRleCA4MDdhZGI4ZTcwNWQ4Zjc1MjlhNTRjOGYyNDMxMzBjZGVhY2ZmNDUyLi5mYTk2YjM0ZDg0
YjE3MDc2MmZkNjk3YTUxNzU2ZmM5MDlkNWUwZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZvcm1hdC5oCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RydWN0IEVsZW1lbnQgewogICAg
IHsgfQogCiAgICAgRWxlbWVudChFbGVtZW50OjpLaW5kIGtpbmQsIFRhYmxlRWxlbWVudFR5cGUg
ZWxlbVR5cGUpCi0gICAgICAgIDogRWxlbWVudChraW5kLCBlbGVtVHlwZSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQpCisgICAgICAgIDogRWxlbWVudChraW5kLCBlbGVtVHlwZSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQpCiAgICAgeyB9CiAKICAgICB1aW50MzJfdCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBmdW5jdGlvbkluZGljZXMuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oCmluZGV4IGJjMmViZGZjMTEwMzMwNDY4ZmIx
NjgxMDEwOTc1YmVkYTJlNzZkNWYuLjY4OWEwOWZkYzNjYzg5MjkxOGQyMTJmMzY2MmY3NmZiY2Rh
YTNjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2Vj
dGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5o
CkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBOYW1lU2VjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxOYW1lU2VjdGlvbj4gewogcHVibGljOgogICAgIE5hbWVTZWN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIHNldEhhc2goV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0SGFzaChzdGQ6
Om51bGxvcHQpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8TmFtZVNlY3Rpb24+IGNyZWF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAK
aW5kZXggZWZmOGJjMWM5OTdmMDIyOWEyZWJjODM3NmJlMjE3NDljNzJmYjMxNi4uYmZkYTliM2Iw
ZWZlNDYwMjRlNGM3ZWE2YWVlM2FjMzI5NjVhNTViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtNzc2LDcgKzc3Niw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VEYXRhKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZGF0YUJ5dGVMZW5ndGgpLCAi
Y2FuJ3QgZ2V0ICIsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQncyBkYXRhIGJ5dGUg
bGVuZ3RoIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGRhdGFCeXRlTGVuZ3Ro
ID4gbWF4TW9kdWxlU2l6ZSwgc2VnbWVudE51bWJlciwgInRoIERhdGEgc2VnbWVudCdzIGRhdGEg
Ynl0ZSBsZW5ndGggaXMgdG9vIGJpZyAiLCBkYXRhQnl0ZUxlbmd0aCwgIiBtYXhpbXVtICIsIG1h
eE1vZHVsZVNpemUpOwogCi0gICAgICAgICAgICBhdXRvIHNlZ21lbnQgPSBTZWdtZW50OjpjcmVh
dGUoV1RGOjpudWxsb3B0LCBkYXRhQnl0ZUxlbmd0aCwgU2VnbWVudDo6S2luZDo6UGFzc2l2ZSk7
CisgICAgICAgICAgICBhdXRvIHNlZ21lbnQgPSBTZWdtZW50OjpjcmVhdGUoc3RkOjpudWxsb3B0
LCBkYXRhQnl0ZUxlbmd0aCwgU2VnbWVudDo6S2luZDo6UGFzc2l2ZSk7CiAgICAgICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFzZWdtZW50LCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9y
eSBmb3IgIiwgc2VnbWVudE51bWJlciwgInRoIERhdGEgc2VnbWVudCBvZiBzaXplICIsIGRhdGFC
eXRlTGVuZ3RoKTsKICAgICAgICAgICAgIGZvciAodWludDMyX3QgZGF0YUJ5dGUgPSAwOyBkYXRh
Qnl0ZSA8IGRhdGFCeXRlTGVuZ3RoOyArK2RhdGFCeXRlKSB7CiAgICAgICAgICAgICAgICAgdWlu
dDhfdCBieXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0
cmVhbWluZ1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFt
aW5nUGFyc2VyLmNwcAppbmRleCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgy
MmE4Li5mM2I1MTRmMDA4ZGFlYWJjZTVjN2JkODY1MmFkYmE1YzUwN2Y2YmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDco
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsCiAgICAgdWludDhfdCByZXN1bHQg
PSBkYXRhW29mZnNldCsrXTsKICAgICBpZiAocmVzdWx0IDwgMHg4MCkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgpAQCAtMjEwLDcgKzIxMCw3IEBA
IGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgaWYgKHRvdGFsRGF0YVNpemUgPCByZXF1aXJl
ZFNpemUpIHsKICAgICAgICAgbV9yZW1haW5pbmcuYXBwZW5kKGJ5dGVzICsgb2Zmc2V0SW5CeXRl
cywgYnl0ZXNSZW1haW5pbmdTaXplKTsKICAgICAgICAgb2Zmc2V0SW5CeXRlcyA9IGJ5dGVzU2l6
ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICBzaXplX3QgdXNlZFNpemUgPSByZXF1aXJlZFNpemUgLSBtX3Jl
bWFpbmluZy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcApp
bmRleCBmYTI2NmQyOTdiMWI2ZDVlYWM3NDg2YjdhNTE4YjliM2NlMjcwZTQ4Li45YWE2NzAyMzBl
ZTcxNzllOGViMThhNGNhZDU3YjQ5ZjkxODA2M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21UYWJsZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBPcHRpb25hbDx1aW50MzJfdD4g
VGFibGU6Omdyb3codWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogICAgIG5l
d0xlbmd0aENoZWNrZWQgKz0gZGVsdGE7CiAgICAgdWludDMyX3QgbmV3TGVuZ3RoOwogICAgIGlm
IChuZXdMZW5ndGhDaGVja2VkLnNhZmVHZXQobmV3TGVuZ3RoKSA9PSBDaGVja2VkU3RhdGU6OkRp
ZE92ZXJmbG93KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1heGltdW0oKSAmJiBuZXdMZW5ndGggPiAqbWF4aW11
bSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghaXNWYWxpZExlbmd0aChuZXdMZW5ndGgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byBjaGVja2VkR3JvdyA9IFsmXSAoYXV0byYgY29udGFpbmVyLCBhdXRvIGluaXRpYWxpemVyKSB7
CiAgICAgICAgIGlmIChuZXdMZW5ndGhDaGVja2VkLnVuc2FmZUdldCgpID4gYWxsb2NhdGVkTGVu
Z3RoKG1fbGVuZ3RoKSkgewpAQCAtMTE4LDEzICsxMTgsMTMgQEAgT3B0aW9uYWw8dWludDMyX3Q+
IFRhYmxlOjpncm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKIAogICAg
IGlmIChhdXRvKiBmdW5jUmVmVGFibGUgPSBhc0Z1bmNyZWZUYWJsZSgpKSB7CiAgICAgICAgIGlm
ICghY2hlY2tlZEdyb3coZnVuY1JlZlRhYmxlLT5tX2ltcG9ydGFibGVGdW5jdGlvbnMsIFtdIChh
dXRvJikgeyB9KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWNoZWNrZWRHcm93KGZ1bmNSZWZU
YWJsZS0+bV9pbnN0YW5jZXMsIFtdIChhdXRvJikgeyB9KSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIGlmICghY2hlY2tlZEdyb3cobV9qc1ZhbHVlcywgW2RlZmF1bHRWYWx1ZV0gKFdyaXRlQmFy
cmllcjxVbmtub3duPiYgc2xvdCkgeyBzbG90LnNldFN0YXJ0aW5nVmFsdWUoZGVmYXVsdFZhbHVl
KTsgfSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBzZXRMZW5ndGgobmV3TGVuZ3RoKTsKICAgICByZXR1cm4gbmV3TGVu
Z3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDU4ZThjZDAwMDY4MjNkZWFmNGVlNjg3M2ExNzE4
YWQ1NzgzNmY1YjMuLjlmYjFlOTNiNmY5MWI5NTA1M2I5YmIxMDAwMWU2YTdmNjM1MTg2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpsaW5rSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogaQogCiAgICAgYm9vbCBoYXNTdGFydCA9ICEhbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5j
dGlvbkluZGV4U3BhY2U7CiAgICAgaWYgKGhhc1N0YXJ0KSB7Ci0gICAgICAgIGF1dG8gc3RhcnRG
dW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhT
cGFjZS52YWx1ZU9yKDApOworICAgICAgICBhdXRvIHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlID0g
bW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UudmFsdWVfb3IoMCk7CiAg
ICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWdu
YXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2Up
OwogICAgICAgICBjb25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25h
dHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAvLyBUaGUgc3Rh
cnQgZnVuY3Rpb24gbXVzdCBub3QgdGFrZSBhbnkgYXJndW1lbnRzIG9yIHJldHVybiBhbnl0aGlu
Zy4gVGhpcyBpcyBlbmZvcmNlZCBieSB0aGUgcGFyc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJGbGFncy5jcHAKaW5kZXggMTc1MDRmYmExNmU5MGRiY2YwZDViOWY2MzgwZGZiMDIx
OTg2NTE0YS4uMjk3MDFmNjFmZDk3ODhkMTBmZGQ2MDRkMGYyMGVlYzliODBmMDA5MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCkBAIC0zOSw1MiArMzksNTIgQEAg
T3B0aW9uYWw8T3B0aW9uU2V0PEZsYWdzPj4gcGFyc2VGbGFncyhTdHJpbmdWaWV3IHN0cmluZykK
ICAgICAgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAg
ICAgICBpZiAoZmxhZ3MuY29udGFpbnMoRmxhZ3M6Okhhc0luZGljZXMpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6SGFzSW5kaWNlcyk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGlmIChmbGFncy5j
b250YWlucyhGbGFnczo6R2xvYmFsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBm
bGFncy5hZGQoRmxhZ3M6Okdsb2JhbCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlICdpJzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFnczo6SWdub3JlQ2Fz
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZmxhZ3MuYWRkKEZsYWdzOjpJZ25v
cmVDYXNlKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ20nOgogICAgICAg
ICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpNdWx0aWxpbmUpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6TXVsdGlsaW5lKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNv
bnRhaW5zKEZsYWdzOjpEb3RBbGwpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZs
YWdzLmFkZChGbGFnczo6RG90QWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdz
OjpVbmljb2RlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxh
Z3M6OlVuaWNvZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgJ3knOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpTdGlj
a3kpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6U3Rp
Y2t5KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwoZmxhZ3MpOworICAg
IHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoZmxhZ3MpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6WWFycgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFycklu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKaW5kZXggY2JiNmM1Njk1YTc5ZTJjOGU3ZjViYzM4N2E4ZjM0YTQ5YTA3MjA4Yy4uZGU2
Mjc1YmRmOGFhYTU0MDcxOWNkOWI4ZjM2MmI0YWY3NzE5NWE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0yMTc2LDcgKzIxNzYsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXBEaXNqdW5jdGlvbihCeXRlRGlz
anVuY3Rpb24qIGRpc2p1bmN0aW9uLCB1bnNpZ25lZCBuZXN0aW5nID0gMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJKSVQuaAppbmRleCA1ZjRmZGY5MGNkN2NlZDhkNGQzZjhiYjFhN2E4OWE3
MTIwY2IxNjI0Li4zYThlNWYyM2ZiMjg5OGE5NTQ3ZmYwODk0NTc4MWYzZDkyZDI2YzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGlj
OgogICAgICAgICBtX3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRh
Zz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJN
YXRjaE9ubHk4Qml0UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKLSAgICAgICAgbV9mYWls
dXJlUmVhc29uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyclBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhcnNlci5oCmluZGV4IDk3YWUzY2Y3YWI0ZjQ3ODU2ZDQxYzI0YmZjNzdlNGJmMGI4NTc0ZDYu
LmZlYWZhYWNiYWYxMzdmZDE1NDg3ODM0N2YyNGU2Y2Q1MTFhZDUxYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKQEAgLTExMjEsNyArMTEyMSw3IEBAIHByaXZhdGU6
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0cnlDb25zdW1lR3JvdXBOYW1lKCkKICAgICB7CiAgICAg
ICAgIGlmIChhdEVuZE9mUGF0dGVybigpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUGFyc2VTdGF0
ZSBzdGF0ZSA9IHNhdmVTdGF0ZSgpOwogICAgICAgICAKQEAgLTExNDUsMTQgKzExNDUsMTQgQEAg
cHJpdmF0ZToKIAogICAgICAgICByZXN0b3JlU3RhdGUoc3RhdGUpOwogCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJv
cGVydHlFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8
ICFpc1VuaWNvZGVQcm9wZXJ0eVZhbHVlRXhwcmVzc2lvbkNoYXIocGVlaygpKSkgewogICAgICAg
ICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHBy
ZXNzaW9uOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGV4
cHJlc3Npb25CdWlsZGVyOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBjb25zdW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykgewogICAgICAg
ICAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9w
ZXJ0eUV4cHJlc3Npb247Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGZvdW5kRXF1YWxzKSB7CkBAIC0xMTk5LDcgKzEx
OTksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJv
ckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IGVudW0gY2xhc3MgUGFyZW50aGVzZXNUeXBlIDogdWludDhfdCB7IFN1YnBhdHRlcm4sIEFzc2Vy
dGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRl
cm4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4
IGExMTNhYWMzMmZlYTM1MjBlYTk0MjZkZWU4YjUxMjA5NTI2MDUwODguLjllMzYxNzA4NWQxYThh
ZTc3ZWJmNjhkZjM0ZTQ4MTdkYjVlZGMwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
cGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld0NoYXJhY3Rl
ckNsYXNzKSk7CiAgICAgfQogCi0gICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVn
aW4oYm9vbCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBvcHRHcm91cE5hbWUgPSBX
VEY6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9v
bCBjYXB0dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBvcHRHcm91cE5hbWUgPSBzdGQ6Om51
bGxvcHQpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSBtX3BhdHRlcm4u
bV9udW1TdWJwYXR0ZXJucyArIDE7CiAgICAgICAgIGlmIChjYXB0dXJlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKaW5kZXggM2M3YTVk
YzM0ODJmZjJlNzMxZGQ3ZjgyZWY2Y2Q2ZjA1ODMyNDAwYS4uM2ZlNTg1N2FhNjU0MTE0OGYzOWZm
YWFkYjhiMWMxNzE3MjdmMDkyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyclN5bnRheENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJTeW50YXhDaGVja2VyLmNwcApAQCAtMjgsMzEgKzI4LDMwIEBACiAKICNpbmNsdWRlICJZ
YXJyRmxhZ3MuaCIKICNpbmNsdWRlICJZYXJyUGFyc2VyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKIGNsYXNzIFN5bnRh
eENoZWNrZXIgewogcHVibGljOgotICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkge30KLSAgICB2b2lk
IGFzc2VydGlvbkVPTCgpIHt9Ci0gICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRhcnkoYm9vbCkg
e30KLSAgICB2b2lkIGF0b21QYXR0ZXJuQ2hhcmFjdGVyKFVDaGFyMzIpIHt9Ci0gICAgdm9pZCBh
dG9tQnVpbHRJbkNoYXJhY3RlckNsYXNzKEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lELCBib29sKSB7
fQotICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzQmVnaW4oYm9vbCA9IGZhbHNlKSB7fQotICAg
IHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzQXRvbShVQ2hhcikge30KLSAgICB2b2lkIGF0b21DaGFy
YWN0ZXJDbGFzc1JhbmdlKFVDaGFyLCBVQ2hhcikge30KLSAgICB2b2lkIGF0b21DaGFyYWN0ZXJD
bGFzc0J1aWx0SW4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wpIHt9Ci0gICAgdm9pZCBh
dG9tQ2hhcmFjdGVyQ2xhc3NFbmQoKSB7fQotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0
dGVybkJlZ2luKGJvb2wgPSB0cnVlLCBPcHRpb25hbDxTdHJpbmc+ID0gV1RGOjpudWxsb3B0KSB7
fQotICAgIHZvaWQgYXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihib29sID0gZmFsc2Up
IHt9Ci0gICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7fQotICAgIHZvaWQgYXRvbUJhY2tS
ZWZlcmVuY2UodW5zaWduZWQpIHt9Ci0gICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYpIHt9Ci0gICAgdm9pZCBhdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0
IFN0cmluZyYpIHt9Ci0gICAgdm9pZCBxdWFudGlmeUF0b20odW5zaWduZWQsIHVuc2lnbmVkLCBi
b29sKSB7fQotICAgIHZvaWQgZGlzanVuY3Rpb24oKSB7fQotICAgIHZvaWQgcmVzZXRGb3JSZXBh
cnNpbmcoKSB7fQorICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkgeyB9CisgICAgdm9pZCBhc3NlcnRp
b25FT0woKSB7IH0KKyAgICB2b2lkIGFzc2VydGlvbldvcmRCb3VuZGFyeShib29sKSB7IH0KKyAg
ICB2b2lkIGF0b21QYXR0ZXJuQ2hhcmFjdGVyKFVDaGFyMzIpIHsgfQorICAgIHZvaWQgYXRvbUJ1
aWx0SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkgeyB9Cisg
ICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCZWdpbihib29sID0gZmFsc2UpIHsgfQorICAgIHZv
aWQgYXRvbUNoYXJhY3RlckNsYXNzQXRvbShVQ2hhcikgeyB9CisgICAgdm9pZCBhdG9tQ2hhcmFj
dGVyQ2xhc3NSYW5nZShVQ2hhciwgVUNoYXIpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJhY3RlckNs
YXNzQnVpbHRJbihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkgeyB9CisgICAgdm9pZCBh
dG9tQ2hhcmFjdGVyQ2xhc3NFbmQoKSB7IH0KKyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBh
dHRlcm5CZWdpbihib29sID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxs
b3B0KSB7IH0KKyAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCA9
IGZhbHNlKSB7IH0KKyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpIHsgfQorICAgIHZvaWQg
YXRvbUJhY2tSZWZlcmVuY2UodW5zaWduZWQpIHsgfQorICAgIHZvaWQgYXRvbU5hbWVkQmFja1Jl
ZmVyZW5jZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZl
cmVuY2UoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdm9pZCBxdWFudGlmeUF0b20odW5zaWduZWQs
IHVuc2lnbmVkLCBib29sKSB7IH0KKyAgICB2b2lkIGRpc2p1bmN0aW9uKCkgeyB9CisgICAgdm9p
ZCByZXNldEZvclJlcGFyc2luZygpIHsgfQogfTsKIAogRXJyb3JDb2RlIGNoZWNrU3ludGF4KGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFncykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwCmluZGV4IDMy
MWU5OGY4MjgxZWM4MDc1ODdlMmNiNWQzMTg5YjYzM2M2ZWQyMGUuLjAwYjhhYmQyY2I4OTBmZGI2
NGQ3N2MxOWYwM2RhYjZhZjJhOGQ5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcApAQCAtODQsNyArODQsNyBAQCBPcHRp
b25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShX
VEY6OlN0cmluZyB1bmljb2RlUAogICAgICAgICBwcm9wZXJ0eUluZGV4ID0gZ2VuZXJhbENhdGVn
b3J5SGFzaFRhYmxlLmVudHJ5KHVuaWNvZGVQcm9wZXJ0eVZhbHVlKTsKIAogICAgIGlmIChwcm9w
ZXJ0eUluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0
ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nh
c3Q8aW50PihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRDo6QmFzZVVuaWNvZGVQcm9wZXJ0eUlEKSAr
IHByb3BlcnR5SW5kZXgpKTsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgT3B0aW9uYWw8QnVpbHRJbkNo
YXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nIHVuaWNvZGVQ
cm9wZXIKICAgICAgICAgcHJvcGVydHlJbmRleCA9IGdlbmVyYWxDYXRlZ29yeUhhc2hUYWJsZS5l
bnRyeSh1bmljb2RlUHJvcGVydHlWYWx1ZSk7CiAgICAgCiAgICAgaWYgKHByb3BlcnR5SW5kZXgg
PT0gLTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+
KHN0YXRpY19jYXN0PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1
aWx0SW5DaGFyYWN0ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQpICsgcHJvcGVydHlJ
bmRleCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYWEzYjc4M2U2MmQ1
MmUyODVhMDMwZDkxZjc2ZDYyOGRkYmZkNDM1Zi4uNjgwYWFlYzk0YWFjNDg5YTRkZDQzMmM4N2I4
ODI3MDRiODliNjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBAIC0xNTksNyAr
MTU5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIE9wdGlvbmFsPFQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c3RhdGljIE9wdGlvbmFsPFQ+IGNvcHkoVSYmIHNvdXJjZSkKICAgICB7CiAgICAgICAgIGlmICgh
c291cmNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBDcm9zc1RocmVhZENvcGllcjxUPjo6
Y29weShzdGQ6OmZvcndhcmQ8VT4oc291cmNlKS52YWx1ZSgpKTsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1h
dGguY3BwCmluZGV4IDFlMTI4ZmI5ZjIwYjUwYjY4NzRhODg2NTY5MDdiYjRjMDU5YmMyMjkuLjBm
ZjhkZTNiNmYwZjE3MmY3MDczZTFkMGIyZjFkYTM4NDY1NWZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAK
QEAgLTgxNyw3ICs4MTcsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hh
cmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBpc0xvYwogICAgICAgICAgICAg
aWYgKCpuZXdQb3NTdHIgIT0gJzonKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgICAgICAgICAgLy8gVGhlcmUgd2Fz
IG5vIHllYXI7IHRoZSBudW1iZXIgd2FzIHRoZSBob3VyLgotICAgICAgICAgICAgeWVhciA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHllYXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBpbiB0aGUgbm9ybWFsIGNhc2UgKHdlIHBhcnNlZCB0aGUg
eWVhciksIGFkdmFuY2UgdG8gdGhlIG5leHQgbnVtYmVyCiAgICAgICAgICAgICBkYXRlU3RyaW5n
ID0gKytuZXdQb3NTdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDI0NzBlNDg1OWZmN2U0ODYw
MjlkN2M5NTMxMTMwOTFkOWQ1NTk1YTguLjQ4MzFiMDQ3ZDU4OTk5YmU3NmJhOTUwN2U0ZDA1MDVl
MjEzZWQzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgT3B0aW9u
YWw8dWludDY0X3Q+IGZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBzdGQ6OmVycm9y
X2NvZGUgZWM7CiAgICAgYXV0byBzaXplID0gc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3NpemUodG9T
dGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
c2l6ZTsKIH0KIApAQCAtNjA5LDcgKzYwOSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVG
cmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAg
ICBhdXRvIHNwYWNlSW5mbyA9IHN0ZDo6ZmlsZXN5c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc3BhY2VJbmZvLmF2
YWlsYWJsZTsKIH0KIApAQCAtNjQ1LDcgKzY0NSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXJk
TGlua0NvdW50KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7
CiAgICAgdWludDY0X3QgbGlua0NvdW50ID0gc3RkOjpmaWxlc3lzdGVtOjpoYXJkX2xpbmtfY291
bnQodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwotICAgIHJldHVybiBlYyA/IFdURjo6
bnVsbG9wdCA6IG1ha2VPcHRpb25hbChsaW5rQ291bnQpOworICAgIHJldHVybiBlYyA/IHN0ZDo6
bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChsaW5rQ291bnQpOwogfQogCiBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTY2MCw3ICs2NjAsNyBA
QCBPcHRpb25hbDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUg
PSBzdGQ6OmZpbGVzeXN0ZW06Omxhc3Rfd3JpdGVfdGltZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBh
dGgpLCBlYyk7CiAgICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB0b1dhbGxUaW1lKG1vZGlmaWNh
dGlvblRpbWUpOwogfQogCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEZpbGVU
eXBlPiBmaWxlVHlwZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5nJiBw
YXQKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBzdGF0dXMgPSBzaG91bGRGb2xs
b3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IHN0ZDo6
ZmlsZXN5c3RlbTo6c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKSA6IHN0ZDo6
ZmlsZXN5c3RlbTo6c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMp
OwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzd2l0Y2ggKHN0YXR1cy50eXBlKCkpIHsKICAgICBjYXNl
IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV90eXBlOjpkaXJlY3Rvcnk6CiAgICAgICAgIHJldHVybiBG
aWxlVHlwZTo6RGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVl
cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRleCAzZDI1NmJlZjJkYTkx
MTQ4MzI5YTUwM2FmMmI0YjY3N2ViNTIxOWNjLi5lYzllNTM0MWIzYmFkYTEzN2UzMGExN2ExNGYx
NWZhN2ZlZDc5ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNTY5LDIxICs1NjksMjEgQEAg
U3RyaW5nIFZhbHVlOjp0b0pTT05TdHJpbmcoKSBjb25zdAogT3B0aW9uYWw8Ym9vbD4gVmFsdWU6
OmFzQm9vbGVhbigpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpCb29sZWFuKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBtX3ZhbHVlLmJvb2xlYW47CiB9CiAKIE9wdGlvbmFsPGRvdWJsZT4gVmFs
dWU6OmFzRG91YmxlKCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkRvdWJsZSAm
JiB0eXBlKCkgIT0gVHlwZTo6SW50ZWdlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5udW1iZXI7
CiB9CiAKIE9wdGlvbmFsPGludD4gVmFsdWU6OmFzSW50ZWdlcigpIGNvbnN0CiB7CiAgICAgaWYg
KHR5cGUoKSAhPSBUeXBlOjpEb3VibGUgJiYgdHlwZSgpICE9IFR5cGU6OkludGVnZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obV92YWx1ZS5udW1iZXIpOwogfQogCkBAIC02NTIs
NyArNjUyLDcgQEAgT3B0aW9uYWw8Ym9vbD4gT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdldFZhbHVlKG5hbWUpOwog
ICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4oKTsKIH0KIApA
QCAtNjYwLDcgKzY2MCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91Ymxl
KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gZ2V0VmFsdWUo
bmFtZSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmFsdWUtPmFzRG91YmxlKCk7
CiB9CiAKQEAgLTY2OCw3ICs2NjgsNyBAQCBPcHRpb25hbDxpbnQ+IE9iamVjdEJhc2U6OmdldElu
dGVnZXIoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRW
YWx1ZShuYW1lKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZS0+YXNJbnRl
Z2VyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oIGIv
U291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKaW5kZXggNTQyYzIzNGZhZmZmNTE4ZmRmYjVi
ZGNhODhkMzkzZmRmN2JiNDEzZi4uNWM4MmZlNmJkOWY2MTZiYTZjZGVkZDYzYTE2YmUxOTA2Yzk1
MDcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKKysrIGIvU291
cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAg
IH0KICNlbHNlIC8vIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAKLSNkZWZpbmUgTE9HSURFTlRJRklF
UiAoV1RGOjpudWxsb3B0KQorI2RlZmluZSBMT0dJREVOVElGSUVSIChzdGQ6Om51bGxvcHQpCiAK
ICNkZWZpbmUgQUxXQVlTX0xPRyhjaGFubmVsTmFtZSwgLi4uKSAgKFVOVVNFRF9QQVJBTShjaGFu
bmVsTmFtZSkpCiAjZGVmaW5lIEVSUk9SX0xPRyhjaGFubmVsTmFtZSwgLi4uKSAgIChVTlVTRURf
UEFSQU0oY2hhbm5lbE5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFya2FibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKaW5kZXggODg1YzA1ZWIwNzRhNmVjZTE0YWMz
M2VjYjg2ZmQ1MjVkYTRlNzhkNi4uYzM5ZGQzNjZlZjc4OGU0NDRmZTY0NjY4Nzg4NjhmZWQ5ZTcy
ZTg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9NYXJrYWJsZS5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBt
X3ZhbHVlKFRyYWl0czo6ZW1wdHlWYWx1ZSgpKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1h
cmthYmxlKFdURjo6bnVsbG9wdF90KQorICAgIGNvbnN0ZXhwciBNYXJrYWJsZShzdGQ6Om51bGxv
cHRfdCkKICAgICAgICAgOiBNYXJrYWJsZSgpCiAgICAgeyB9CiAKQEAgLTEzMiwxNCArMTMyLDE0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChib29sKCp0aGlzKSkKICAgICAgICAgICAg
IHJldHVybiBXVEZNb3ZlKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIG9wZXJhdG9yIE9wdGlv
bmFsPFQ+KCkgY29uc3QmCiAgICAgewogICAgICAgICBpZiAoYm9vbCgqdGhpcykpCiAgICAgICAg
ICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxUPiBhc09wdGlv
bmFsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4
IDFmODZiOGQzOTc5MTI1ODVjY2Y1MDY2N2YyMWRiMmYyMzBhZjkyMjguLjllMDg4MjRiZTU1ODM2
Nzk2NTkwMDEzNTBhYjQyN2YwMTMzNzYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIE9wdGlvbmFsPHNpemVfdD4gTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjp0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCkKICAgICBjYXNlIFdlYnNh
bVByb2Nlc3NTdGF0ZTo6QWN0aXZlOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgc2l6
ZV90IHRocmVzaG9sZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9Nb25v
dG9uaWNUaW1lLmgKaW5kZXggMWEzZTg2ZjBhYWFlZmUzM2E4MmRhMGE2MzFiMTI3NDdiY2M1YmRi
NC4uNTQ0YWE0NzdjMDI1ZmI0MTQ1ZjJlNjZiMDFjZjUwYTc4OTFmMDQ0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01vbm90
b25pY1RpbWUuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8
ZG91YmxlPiB0aW1lOwogICAgICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgICAgIGlmICghdGlt
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29u
ZHMoKnRpbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRl
bnRpZmllci5oIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IDdkODg4
OTgxNjIwYTg2ZTU5YzViMzU3NTgxOWZjZjFkMWE0MzA0YTMuLmIwOGYwNTQ4NDU1YTY0ZTNlZDZm
YjRlOGE4ODBmYmMyMmExNDVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmll
cjsKICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZp
ZXIgfHwgIWlzVmFsaWRJZGVudGlmaWVyKCppZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gT2JqZWN0SWRlbnRpZmllciB7ICppZGVudGlmaWVyIH07CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlv
blNldC5oCmluZGV4IDM2YmNjMDRkNzVmZGY0MjVhYjllYjlmOWVkMzE2ZTljNzIxMWQ4MzYuLjc3
ZTYyODliYzUwNjNkNDczYWRmN2JhOTkyNTVlNjZmNTQ3OTVkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBA
IC0yMDgsNyArMjA4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3RleHByIE9wdGlvbmFsPEU+IHRv
U2luZ2xlVmFsdWUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVC
aXRTZXQoKSA/IE9wdGlvbmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gaGFzRXhhY3RseU9uZUJpdFNldCgpID8gT3B0aW9uYWw8
RT4oc3RhdGljX2Nhc3Q8RT4obV9zdG9yYWdlKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9u
U2V0IHJocykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9PcHRpb25hbC5oCmluZGV4IGU5NThhYzM2OTc5NGQ2MmZiMGM3YjJiZWJlZjliOTMz
NDdmNjhkMjYuLjc5ZGU5MjY2NjcwZWEzZGJkZWVmNjJjMDgwZWYxMzVkZTc3OTIyMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0
aW9uYWwuaApAQCAtMjUsMjMgKzI1LDYgQEAKIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiB1c2luZyBPcHRpb25hbCA9IHN0ZDo6b3B0aW9uYWw8VD47Ci1jb25zdGV4cHIg
YXV0byBudWxsb3B0ID0gc3RkOjpudWxsb3B0OwotdXNpbmcgbnVsbG9wdF90ID0gc3RkOjpudWxs
b3B0X3Q7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+
IGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPHN0ZDo6ZGVjYXlfdDxUPj4gbWFrZU9wdGlvbmFsKFQm
JiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsPHN0ZDo6ZGVjYXlfdDxU
Pj4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+IGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPFQ+IG1ha2VP
cHRpb25hbChBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKQotewotICAgIHJldHVybiBzdGQ6
Om1ha2Vfb3B0aW9uYWw8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50VHlwZXM+KGFyZ3VtZW50cyku
Li4pOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBB
cmd1bWVudFR5cGVzPiBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxUPiBtYWtlT3B0aW9uYWwoc3Rk
Ojppbml0aWFsaXplcl9saXN0PFU+IGxpc3QsIEFyZ3VtZW50VHlwZXMmJi4uLiBhcmd1bWVudHMp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbDxUPihsaXN0LCBzdGQ6OmZvcndhcmQ8
QXJndW1lbnRUeXBlcz4oYXJndW1lbnRzKS4uLik7Ci19CiAKIC8vIEZJWE1FOiBXZSBwcm9iYWJs
eSBkb24ndCBuZWVkIHRoaXM7IGl0J3Mgb25seSB1c2VkIGluIDUgcGxhY2VzLgogdGVtcGxhdGU8
dHlwZW5hbWUgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0
ZShPcHRpb25hbFR5cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBP
cHRpb25hbFR5cGU6OnZhbHVlX3R5cGUKQEAgLTUyLDkgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRp
b25hbFR5cGUKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9wdGlvbmFsOwotdXNp
bmcgV1RGOjptYWtlT3B0aW9uYWw7CiB1c2luZyBXVEY6OnZhbHVlT3JDb21wdXRlOwogCi0vLyBG
SVhNRTogVGhlc2UgbWFjcm9zIGFyZSBhIHdvcmthcm91bmQgdG8gYWxsb3cgdXMgdG8gdXNlIHN0
ZDo6b3B0aW9uYWwgd2l0aG91dCBhIGdsb2JhbCByZXBsYWNlOyB0aGV5IGNhbiBiZSByZW1vdmVk
IGFmdGVyIHNhaWQgZ2xvYmFsIHJlcGxhY2UuCisvLyBGSVhNRTogVGhpcyBtYWNybyBpcyBhIHdv
cmthcm91bmQgdG8gYWxsb3cgdXMgdG8gdXNlIHN0ZDo6b3B0aW9uYWwgd2l0aG91dCBhIGdsb2Jh
bCByZXBsYWNlOyBpdCBjYW4gYmUgcmVtb3ZlZCBhZnRlciB0aGUgZ2xvYmFsIHJlcGxhY2UuCiAj
ZGVmaW5lIGhhc1ZhbHVlIGhhc192YWx1ZQotI2RlZmluZSB2YWx1ZU9yIHZhbHVlX29yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRz
LmgKaW5kZXggNTNiY2JjNjU5OWRjNTMwYzg3Zjg1NzZjNmE5ZGFkY2IzYTA2MjEzNi4uODVmMDM3
MjgyNTk3NjA3MjdlOWE0MmVkMTRiZjk1NzY1Njk3OGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjM0LDcg
KzIzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBzZWNvbmRzOwogICAg
ICAgICBkZWNvZGVyID4+IHNlY29uZHM7CiAgICAgICAgIGlmICghc2Vjb25kcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gU2Vjb25kcygqc2Vjb25kcyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93dGYvU29ydGVk
QXJyYXlNYXAuaAppbmRleCBmMDdlYTI2ZTZlODM5MzI3Y2I3ZWViMzA0OTVmYWZhN2ZlNWRhOTUw
Li5mOTI4MTJiYTkyNDY3MmU0YmI5OGUxZTJjYTEwY2Y5NDkzNjljNzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRl
ZEFycmF5TWFwLmgKQEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheVR5
cGU+IHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYXV0byBTb3J0ZWRBcgog
ICAgICAgICBpZiBjb25zdGV4cHIgKEhhc1BhcnNlTWVtYmVyPEtleVR5cGU+KQogICAgICAgICAg
ICAgcmV0dXJuIEtleVR5cGU6OnBhcnNlKGtleSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHJldHVybiBtYWtlT3B0aW9uYWwoa2V5KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
b3B0aW9uYWwoa2V5KTsKICAgICB9KCk7CiAgICAgaWYgKCFwYXJzZWRLZXkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGlubGluZSBib29sIFNvcnRlZEFy
CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoSGFzUGFyc2VNZW1iZXI8S2V5VHlwZT4pCiAgICAgICAg
ICAgICByZXR1cm4gS2V5VHlwZTo6cGFyc2Uoa2V5KTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VPcHRpb25hbChrZXkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9vcHRpb25hbChrZXkpOwogICAgIH0oKTsKICAgICBpZiAoIXBhcnNlZEtleSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzQ0LDEyICszNDQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3Rv
cmFnZUludGVnZXI+IHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+IGNvbnN0ZXhwciBTdG9yYWdlSW50
ZWcKIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBhdXRvIFBhY2tlZEFTQ0lJTG93
ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj46OnBhcnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBPcHRp
b25hbDxQYWNrZWRBU0NJSUxvd2VyQ29kZXM+CiB7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+
IHNpemVvZihTdG9yYWdlSW50ZWdlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3RvcmFnZUludGVnZXIgcmVzdWx0ID0g
MDsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBzdHJpbmcubGVuZ3RoKCk7
ICsraW5kZXgpIHsKICAgICAgICAgVUNoYXIgY29kZSA9IHN0cmluZ1tpbmRleF07CiAgICAgICAg
IGlmICghaXNBU0NJSShjb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQgfD0gc3RhdGlj
X2Nhc3Q8U3RvcmFnZUludGVnZXI+KHRvQVNDSUlMb3dlcihjb2RlKSkgPDwgKChzaXplb2YoU3Rv
cmFnZUludGVnZXIpIC0gaW5kZXggLSAxKSAqIDgpOwogICAgIH0KICAgICByZXR1cm4gUGFja2Vk
QVNDSUlMb3dlckNvZGVzKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1RyYWNlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwCmluZGV4IDdiZjA5ODg3
NDcxZTk5ZWM0MmI0MzBlZGM2NzIzNjA0NzIxZDQ3MzEuLmZmNjFlNjZiMzQzZmFiZGM3YTdiMTk3
ZDc5MzFjYzQ2YjcwMGMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwCkBAIC0xMDQsNyArMTA0LDcg
QEAgYXV0byBTdGFja1RyYWNlOjpkZW1hbmdsZSh2b2lkKiBwYykgLT4gT3B0aW9uYWw8RGVtYW5n
bGVFbnRyeT4KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBjKTsKICNlbmRpZgotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTdGFj
a1RyYWNlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIGluZGVudFN0cmluZykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGFmMDhjYmU3YjVkODkzODgwN2E3ZTEwOTJiZmZm
OTI3ZjBhMjhhYWYuLjMxN2E0NmZjMjA0ZTk3NGRhYmRiNTAzZTgyMzJhM2E0YmUyMDI4ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90
PiBzdGFja1NpemUoVGhyZWFkVHlwZSB0aHJlYWRUeXBlKQogICAgIHJldHVybiAxICogTUI7CiAj
ZWxzZQogICAgIC8vIFVzZSB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IHN0YWNrIHNpemUKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5jcHAKaW5kZXggZWUzY2VkNGJmNjFiZWMzZjIwZTQ5NThlZDQ1NmE4NmUxNWMzZGI3OC4uNzU4
MTM3ODE0NTZlOTEzZmJkZjQzYzdlOGU4ZDc4ODY5OWFjMWY2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogCiBPcHRpb25hbDx1aW50MTZf
dD4gVVJMOjpwb3J0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJ
bnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5k
ICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBtX3Bv
cnRMZW5ndGggPyBwYXJzZUludGVnZXI8dWludDE2X3Q+KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1
YnN0cmluZyhtX2hvc3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxKSkgOiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIFN0cmluZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKQEAgLTE1OSwxMSArMTU5LDEx
IEBAIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogc3RhdGljIE9wdGlv
bmFsPExDaGFyPiBkZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25l
ZCBpbmRleCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGgg
fHwgaW5wdXRbaW5kZXhdICE9ICclJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4
ICsgMV07CiAgICAgYXV0byBkaWdpdDIgPSBpbnB1dFtpbmRleCArIDJdOwogICAgIGlmICghaXNB
U0NJSUhleERpZ2l0KGRpZ2l0MSkgfHwgIWlzQVNDSUlIZXhEaWdpdChkaWdpdDIpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB0b0FTQ0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCmluZGV4IGIyMjU5
MzVlYmQ5NGY3MjY2ZTVlMzZjOTI3YmM2ZjkxNmQwZWI0ZDAuLjkwZTc1ODY3YWNmOWNkM2MyMWIx
NzQwM2ViM2ZiYzAwMTBiMzU1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwog
ICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBVUkwoVVJMKCksIFdURk1vdmUoKnN0cmlu
ZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCmluZGV4IGNhNDg2ZTE3NDBhNGNiNDI4YWM2Mjdm
NjJmN2ZiMzA0ZWNjZDlhM2YuLmNiNTk0NGE4Yzc4OTcyZDBjNjk0MjNjY2U4NThkZjU2ZTEzMTZj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCkBAIC01ODQsNyArNTg0LDcgQEAgT3B0aW9uYWw8U3Ry
aW5nPiBtYXBIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlv
biBkZWNvZGVGdW4KICAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAoZGVjb2Rl
RnVuY3Rpb24gPyB1aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQ
YXJzZXI6OmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIu
ZGF0YSgpLCBsZW5ndGgsIGRlc3RpbmF0aW9uQnVmZmVyLCBob3N0TmFtZUJ1ZmZlckxlbmd0aCwg
JnByb2Nlc3NpbmdEZXRhaWxzLCAmdWVycm9yKTsKICAgICBpbnQgYWxsb3dlZEVycm9ycyA9IGRl
Y29kZUZ1bmN0aW9uID8gMCA6IFVJRE5BX0VSUk9SX0VNUFRZX0xBQkVMIHwgVUlETkFfRVJST1Jf
TEVBRElOR19IWVBIRU4gfCBVSUROQV9FUlJPUl9UUkFJTElOR19IWVBIRU4gfCBVSUROQV9FUlJP
Ul9IWVBIRU5fM180OwogICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHBy
b2Nlc3NpbmdEZXRhaWxzLmVycm9ycyAmIH5hbGxvd2VkRXJyb3JzKSkKLSAgICAgICAgcmV0dXJu
IG51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKG51
bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSAmJiAh
bWVtY21wKHNvdXJjZUJ1ZmZlci5kYXRhKCksIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5ndGggKiBz
aXplb2YoVUNoYXIpKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAK
aW5kZXggNGVkM2Y0NTBkNTc2OTI1ZjY0MjdiNDdjZjI4ODg1Nzc4OGIyYmFmMC4uNDZlNDUzOWM1
ZGJkMzExODBjN2YyMDJjZGFjODEyN2ZmZWJkYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC01
ODQsMTkgKzU4NCwxOSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9y
dEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgIAogICAgIGF1dG8gbGVuZ3RoID0g
c2NoZW1lLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN3aXRjaCAoc2NoZW1l
WzBdKSB7CiAgICAgY2FzZSAndyc6CiAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAg
IGNhc2UgMjoKICAgICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQogICAgICAgICAgICAg
ICAgIHJldHVybiB3c1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY2FzZSAzOgogICAgICAgICAg
ICAgaWYgKHNjaGVtZVsxXSA9PSAncycKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0g
J3MnKQogICAgICAgICAgICAgICAgIHJldHVybiB3c3NQb3J0OwotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTYwNywy
NSArNjA3LDI1IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9y
UHJvdG9jb2woU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGh0dHBQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgNToKICAgICAg
ICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3QnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJd
ID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKICAgICAgICAgICAg
ICAgICAmJiBzY2hlbWVbNF0gPT0gJ3MnKQogICAgICAgICAgICAgICAgIHJldHVybiBodHRwc1Bv
cnQ7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgY2FzZSAnZic6CiAgICAgICAgIGlmIChsZW5ndGggPT0gMwogICAgICAgICAgICAgJiYgc2No
ZW1lWzFdID09ICd0JwogICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKICAgICAgICAg
ICAgIHJldHVybiBmdHBQb3J0OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC03
MDEsMTUgKzcwMSwxNSBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmlu
Z1ZpZXcgc2NoZW1lKQogT3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2Fs
aXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYg
KGlzQVNDSUlBbHBoYW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNj
aGVtZVtpXSA9PSAnLScgfHwgc2NoZW1lW2ldID09ICcuJykKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKQEAgLTIyOTUsMjQgKzIyOTUsMjQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KIE9wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCiB7CiAgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdWludDMyX3QgcGllY2UgPSAwOwogICAgIGJvb2wg
bGVhZGluZ1plcm9zID0gZmFsc2U7CiAgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwogICAgIHdo
aWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRl
cmF0b3IpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICsrZGlnaXRDb3VudDsKICAgICAgICAgaWYgKCFw
aWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKSB7CiAgICAgICAgICAgICBpZiAobGVhZGluZ1plcm9z
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQogICAgICAg
ICAgICAgbGVhZGluZ1plcm9zID0gdHJ1ZTsKICAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsg
Kml0ZXJhdG9yIC0gJzAnOwogICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihp
dGVyYXRvcik7CiAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQogICAgICAgICAgICAgYnJl
YWs7CkBAIC0yMzIwLDcgKzIzMjAsNyBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpw
YXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdAogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwaWVjZSAmJiBsZWFkaW5nWmVyb3MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHBpZWNlOwogfQogCkBAIC0yMzMyLDE1ICsyMzMyLDE1IEBAIE9wdGlvbmFsPFVS
TFBhcnNlcjo6SVB2NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQ
djYoQ29kZVBvaW50CiAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gcGllY2UgPSBwYXJz
ZUlQdjRQaWVjZUluc2lkZUlQdjYoaXRlcmF0b3IpKQogICAgICAgICAgICAgYWRkcmVzcyA9IChh
ZGRyZXNzIDw8IDgpICsgcGllY2UudmFsdWUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGlmIChpIDwgMykgewogICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRT
eW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CiAgICAgICAgIH0gZWxzZSBpZiAoIWl0ZXJh
dG9yLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5k
KCkpOwogICAgIHJldHVybiBhZGRyZXNzOwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAgT3B0aW9uYWw8
VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2lu
dEl0ZXJhdG9yPENoYXIKICAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CiAgICAgYWR2YW5j
ZShjLCBob3N0QmVnaW4pOwogICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJUHY2QWRkcmVz
cyBhZGRyZXNzID0ge3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07CiAgICAgc2l6ZV90IHBpZWNl
UG9pbnRlciA9IDA7CkBAIC0yMzY0LDkgKzIzNjQsOSBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQ
djZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cgogICAgIGlmICgqYyA9PSAnOicpIHsKICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwog
ICAgICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqYyAhPSAnOicp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwogICAgICAgICArK3Bp
ZWNlUG9pbnRlcjsKICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwpAQCAt
MjM3NSwxMCArMjM3NSwxMCBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgIAogICAgIHdo
aWxlICghYy5hdEVuZCgpKSB7CiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoKmMgPT0gJzonKSB7CiAgICAgICAgICAgICBpZiAoY29tcHJlc3NQ
b2ludGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKICAgICAgICAgICAgICsrcGllY2VQb2ludGVyOwogICAgICAgICAgICAgY29tcHJlc3NQ
b2ludGVyID0gcGllY2VQb2ludGVyOwpAQCAtMjM5MCw3ICsyMzkwLDcgQEAgT3B0aW9uYWw8VVJM
UGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0
ZXJhdG9yPENoYXIKICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1Bv
aW50ZXIgJiYgcGllY2VQb2ludGVyIDwgNikpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25hbDxJ
UHY0QWRkcmVzcz4gaXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkg
ewogICAgICAgICAgICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyID09
IDUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgc3ludGF4Vmlv
bGF0aW9uKGhvc3RCZWdpbik7CiAgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIr
K10gPSBpcHY0QWRkcmVzcy52YWx1ZSgpID4+IDE2OwogICAgICAgICAgICAgICAgIGFkZHJlc3Nb
cGllY2VQb2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSAmIDB4RkZGRjsKQEAgLTI0MjIs
NyArMjQyMiw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6
cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAgIGlmIChjLmF0RW5k
KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4IHx8
ICpjICE9ICc6JykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAg
ICAgICAgIGlmIChjLmF0RW5kKCkpCiAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJl
Z2luKTsKQEAgLTI0MzEsNyArMjQzMSw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJl
c3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAg
fQogICAgIAogICAgIGlmICghYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChjb21wcmVzc1Bv
aW50ZXIpIHsKICAgICAgICAgc2l6ZV90IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQ
b2ludGVyLnZhbHVlKCk7CkBAIC0yNDM5LDcgKzI0MzksNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6
OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8
Q2hhcgogICAgICAgICB3aGlsZSAoc3dhcHMpCiAgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVz
c1twaWVjZVBvaW50ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fw
cy0tIC0gMV0pOwogICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxzaXplX3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJv
U2VxdWVuY2UoYWRkcmVzcyk7CiAgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQpAQCAt
MjU1OSw3ICsyNTU5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9u
YWw8VVJMUGFyc2VyOjpMQ2hhckJ1ZmZlcj4gVVJMUGFyc2VyOjpkb20KICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICAg
ICAgcmV0dXJuIGFzY2lpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0
Q29kZVBvaW50KGNvbnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQpAQCAt
Mjc5MSw3ICsyNzkxLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNv
ZGUoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmlj
dENvbnZlcnNpb24pOwogICAgIGlmICh1dGY4LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcGVyY2Vu
dERlY29kZWQgPSBwZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih1
dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNlcyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnRE
ZWNvZGVkLnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9DUFVU
aW1lQ29jb2EuY3BwIGIvU291cmNlL1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNwcAppbmRl
eCA5NjFmMGNmZmM2OGIxY2FmMWE5NzcwNzA2YzRkMTYzNzJhYjNhNzA3Li5iZGY5Y2Y1MTg4NWFh
ZjM3MTNkMDBkYmVlOWUxZGQ1NWI5OTdlMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9DUFVUaW1lQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVD
b2NvYS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8Q1BVVGltZT4gQ1BVVGltZTo6Z2V0
KCkKICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IHRocmVhZEluZm9Db3VudCA9IFRBU0tfVEhS
RUFEX1RJTUVTX0lORk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2lu
Zm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19USFJFQURfVElNRVNfSU5GTywgcmVpbnRlcnByZXRf
Y2FzdDx0YXNrX2luZm9fdD4oJnRocmVhZEluZm9EYXRhKSwgJnRocmVhZEluZm9Db3VudCk7CiAg
ICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQ2NF90IHVzZXJUaW1l
ID0gdGltZVZhbHVlVG9NaWNyb3NlY29uZHModGhyZWFkSW5mb0RhdGEudXNlcl90aW1lKTsKICAg
ICBpbnQ2NF90IHN5c3RlbVRpbWUgPSB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyh0aHJlYWRJbmZv
RGF0YS5zeXN0ZW1fdGltZSk7CkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPENQVVRpbWU+IENQ
VVRpbWU6OmdldCgpCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0YXNrSW5mb0NvdW50ID0g
VEFTS19CQVNJQ19JTkZPX0NPVU5UOwogICAgIHJlc3VsdCA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tf
c2VsZigpLCBUQVNLX0JBU0lDX0lORk8sIHJlaW50ZXJwcmV0X2Nhc3Q8dGFza19pbmZvX3Q+KCZ0
YXNrSW5mb0RhdGEpLCAmdGFza0luZm9Db3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NV
Q0NFU1MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICB1c2VyVGltZSArPSB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyh0YXNr
SW5mb0RhdGEudXNlcl90aW1lKTsKICAgICBzeXN0ZW1UaW1lICs9IHRpbWVWYWx1ZVRvTWljcm9z
ZWNvbmRzKHRhc2tJbmZvRGF0YS5zeXN0ZW1fdGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxl
U3lzdGVtQ29jb2EubW0KaW5kZXggODM3NWNmYzY5Njk1ZDcxZjY3NmFkY2Y2Y2U0YTMzODYzMjI4
ZDdhMC4uMDcwYTFmZTlhZWU0OWE0NGU1MzE2NmJlMDJlNWY2YjQ2OWE2MjU0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIE9wdGlv
bmFsPGJvb2w+IGFsbG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlIHNj
b3BlKQogICAgIGlmIChyZXQgPT0gSU9QT0xfTUFURVJJQUxJWkVfREFUQUxFU1NfRklMRVNfT0ZG
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgTE9HX0VSUk9SKCJGaWxlU3lzdGVtOjphbGxv
d3NNYXRlcmlhbGl6aW5nRGF0YWxlc3NGaWxlcygpOiBnZXRpb3BvbGljeV9ucCBjYWxsIGZhaWxl
ZCwgZXJybm86ICVkIiwgZXJybm8pOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4
IDQ2ZjA1N2EzZWM0OTIxNDJhZDJlMzc3YThkMTJjNmRkNmNjZjc1OGEuLmI2ODczN2RhNmUyOTIz
NWQ1MTI1MDgwMjExOWYyYjhmYzYzN2QzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0xOTgsNyArMTk4LDcgQEAgT3B0
aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIKICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0g
VEFTS19WTV9JTkZPX0NPVU5UOwogICAgIGtlcm5fcmV0dXJuX3QgZXJyID0gdGFza19pbmZvKG1h
Y2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291
bnQpOwogICAgIGlmIChlcnIgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE1lbW9y
eVVzYWdlIHtzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5pbnRlcm5hbCksIHN0YXRpY19jYXN0
PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50KX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29h
Lm1tCmluZGV4IDk4NzdmYzdlYmI3YWY1OTRhZGJlZGM1NzUxMDQ1YjZkNmY2YjVlYzQuLmExNzk3
MjAzNzkzMDZkMDkyNzU3OGI0MGRhMjQyMDNhNGEzMjBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1VSTENvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tCkBAIC05NSw3ICs5NSw3IEBAIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50
KGNvbnN0IFVSTCYgdmVjdG9yRWxlbWVudCkKIE9wdGlvbmFsPFVSTD4gbWFrZVZlY3RvckVsZW1l
bnQoY29uc3QgVVJMKiwgaWQgYXJyYXlFbGVtZW50KQogewogICAgIGlmICghW2FycmF5RWxlbWVu
dCBpc0tpbmRPZkNsYXNzOk5TVVJMLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IGFycmF5RWxl
bWVudCB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9y
eVByZXNzdXJlSGFuZGxlckdlbmVyaWMuY3BwCmluZGV4IGU3ZjMyYjhlOTQ4ZTQxMjc1YTM4ZjY3
NTE2Y2M1N2VmNzdjNmYwZTMuLjFhZWE0NmFhZWEyNjk2ZDAwYmNmYzJhOGE3NWRmMWM5NDI0Mjdh
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJHZW5lcmljLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3VzKQog
CiBPcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNh
Z2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVz
YWdlKCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9DaGFzc2lzVHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNw
cAppbmRleCAxOGJlZjc3ZDRlZjZiNDcwN2MxMzhjOWY0YjZmM2FhYzUxMmI2ZTE4Li4yZGQ2NWY0
NmI1YjA4Y2I5ODA4YzA5MTNiMzY3MGQ2MDMwYzIzZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNz
aXNUeXBlLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+
IHJlYWRNYWNoaW5lSW5mb0NoYXNzaXNUeXBlKCkKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVu
dHMoIi9ldGMvbWFjaGluZS1pbmZvIiwgJmJ1ZmZlci5vdXRQdHIoKSwgbnVsbHB0ciwgJmVycm9y
Lm91dFB0cigpKSkgewogICAgICAgICBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwg
R19GSUxFX0VSUk9SLCBHX0ZJTEVfRVJST1JfTk9FTlQpKQogICAgICAgICAgICAgZ193YXJuaW5n
KCJDb3VsZCBub3Qgb3BlbiAvZXRjL21hY2hpbmUtaW5mbzogJXMiLCBlcnJvci0+bWVzc2FnZSk7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgR1VuaXF1ZVB0cjxjaGFyKj4gc3BsaXQoZ19zdHJzcGxpdChidWZm
ZXIuZ2V0KCksICJcbiIsIC0xKSk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxD
aGFzc2lzVHlwZT4gcmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxDaGFzc2lzVHlwZT4gcmVhZERNSUNoYXNz
aXNUeXBlKCkKICAgICB9IGVsc2UgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdf
RklMRV9FUlJPUiwgR19GSUxFX0VSUk9SX05PRU5UKSkKICAgICAgICAgZ193YXJuaW5nKCJDb3Vs
ZCBub3Qgb3BlbiAvc3lzL2NsYXNzL2RtaS9pZC9jaGFzc2lzX3R5cGU6ICVzIiwgZXJyb3ItPm1l
c3NhZ2UpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRBQ1BJQ2hhc3Npc1R5
cGUoKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDaGFzc2lzVHlwZT4gcmVh
ZEFDUElDaGFzc2lzVHlwZSgpCiAgICAgfSBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9y
LmdldCgpLCBHX0ZJTEVfRVJST1IsIEdfRklMRV9FUlJPUl9OT0VOVCkpCiAgICAgICAgIGdfd2Fy
bmluZygiQ291bGQgbm90IG9wZW4gL3N5cy9maXJtd2FyZS9hY3BpL3BtX3Byb2ZpbGU6ICVzIiwg
ZXJyb3ItPm1lc3NhZ2UpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBDaGFzc2lzVHlwZSBjaGFzc2lzVHlwZSgpCkBAIC0xMzQsNyAr
MTM0LDcgQEAgQ2hhc3Npc1R5cGUgY2hhc3Npc1R5cGUoKQogICAgICAgICAgICAgb3B0aW9uYWxD
aGFzc2lzVHlwZSA9IHJlYWRETUlDaGFzc2lzVHlwZSgpOwogICAgICAgICBpZiAoIW9wdGlvbmFs
Q2hhc3Npc1R5cGUpCiAgICAgICAgICAgICBvcHRpb25hbENoYXNzaXNUeXBlID0gcmVhZEFDUElD
aGFzc2lzVHlwZSgpOwotICAgICAgICBjaGFzc2lzVHlwZSA9IG9wdGlvbmFsQ2hhc3Npc1R5cGUu
dmFsdWVPcihDaGFzc2lzVHlwZTo6RGVza3RvcCk7CisgICAgICAgIGNoYXNzaXNUeXBlID0gb3B0
aW9uYWxDaGFzc2lzVHlwZS52YWx1ZV9vcihDaGFzc2lzVHlwZTo6RGVza3RvcCk7CiAgICAgfSk7
CiAKICAgICByZXR1cm4gY2hhc3Npc1R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUds
aWIuY3BwCmluZGV4IGJkOTNmMGIzYTgyZTgzZWFhNmY1OTRmN2Y1NjExMGMxY2MyMjFkMjkuLjQz
MDJmYTlmMWI0YmJhYTlmM2U5OTczMmY1YjI4YzZjYjNmZDgzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgT3B0aW9uYWw8dWludDY0
X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgR1JlZlB0cjxH
RmlsZUluZm8+IGluZm8gPSBhZG9wdEdSZWYoZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhh
bmRsZSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKSk7
CiAgICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9zaXplKGlu
Zm8uZ2V0KCkpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVD
cmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3
YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0
aGF0IHN1cHBvcnQgaXQ/Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkK
QEAgLTI0MSw3ICsyNDEsNyBAQCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfcGF0aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUlu
Zm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmls
ZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikp
OwogICAgIGlmICghZmlsZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0
dHJpYnV0ZV91aW50MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJ
Q0UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJz
LmNwcAppbmRleCA4M2YxMTlhYzNkMzAyYjQwZDcwNDI5YWM3ZDMzNmVhNWUwZDU5MjA4Li5iNjAz
NWRiNGU3NGQ3Njc4NGU4YmFhZTZkMDhiNDgxZDQzNzY3YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBP
cHRpb25hbDxBdG9tU3RyaW5nPiBDb2RlcjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJp
bmc7CiAgICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RyaW5n
KSB9fTsKIH0KQEAgLTY1LDcgKzY1LDcgQEAgT3B0aW9uYWw8Q1N0cmluZz4gQ29kZXI8Q1N0cmlu
Zz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBsZW5n
dGg7CiAgICAgZGVjb2RlciA+PiBsZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAobGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewogICAg
ICAgICAvLyBUaGlzIGlzIHRoZSBudWxsIHN0cmluZy4KQEAgLTc0LDEyICs3NCwxMiBAQCBPcHRp
b25hbDxDU3RyaW5nPiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAK
ICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUg
ZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNM
YXJnZUVub3VnaFRvQ29udGFpbjxjaGFyPigqbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNoYXIqIGJ1ZmZl
cjsKICAgICBDU3RyaW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoKmxlbmd0
aCwgYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHN0cmluZzsKIH0KQEAgLTEwOCwxMiArMTA4LDEyIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0
CiB7CiAgICAgLy8gQmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQg
dGhlIGRlY29kZXIgYnVmZmVyIGlzIGJpZyBlbm91Z2guCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZl
cklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVh
dGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0
aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsK
IH0KQEAgLTEyMyw3ICsxMjMsNyBAQCBPcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmluZz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBsZW5ndGg7CiAg
ICAgZGVjb2RlciA+PiBsZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmxl
bmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8
U3RyaW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxib29sPiBpczhCaXQ7CiAgICAgZGVjb2RlciA+PiBpczhCaXQ7CiAgICAgaWYgKCFpczhC
aXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoKmlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1Rl
eHQ8TENoYXI+KGRlY29kZXIsICpsZW5ndGgpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIE9wdGlvbmFs
PFNIQTE6OkRpZ2VzdD4gQ29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgU0hBMTo6RGlnZXN0IHRtcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHRtcC5kYXRhKCksIHNpemVvZih0bXApKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdG1w
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50
Q29kZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgK
aW5kZXggOTJjNGJiMjVlOGRkNzBjMzBhN2IxYTAzY2MwMWQyNmY0NTQyZmZhYi4uNTZkOGQ2OTlm
NjAwM2E1MDNkZDkxNzViY2Q4YzMzMGZhOTU5ZjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaApAQCAtNTEsMTIgKzUxLDEyIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsK
ICAgICAgICAgT3B0aW9uYWw8VD4gZmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3Q7CiAg
ICAgICAgIGlmICghZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxVPiBzZWNv
bmQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29uZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpmaXJzdCksIFdURk1vdmUoKnNl
Y29uZCkgfX07CiAgICAgfQpAQCAtNzksMTQgKzc5LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb2RlcjxPcHRpb25hbDxUPj4gewogICAgICAgICBPcHRpb25hbDxib29sPiBpc0Vu
Z2FnZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNFbmdhZ2VkOwogICAgICAgICBpZiAoIWlzRW5n
YWdlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoISppc0VuZ2FnZWQpCi0gICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+IHsgT3B0aW9uYWw8VD4geyBXVEY6Om51bGxvcHQg
fSB9OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiB7IE9wdGlvbmFs
PFQ+IHsgc3RkOjpudWxsb3B0IH0gfTsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPFQ+IHZh
bHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+IHsg
T3B0aW9uYWw8VD4geyBXVEZNb3ZlKCp2YWx1ZSkgfSB9OwogICAgIH0KQEAgLTEwMywxMiArMTAz
LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3Ry
dWN0IENvZGVyPFdURjo6S2V5VmFsdWVQYWlyPEtlCiAgICAgICAgIE9wdGlvbmFsPEtleVR5cGU+
IGtleTsKICAgICAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgIGlmICgha2V5KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKICAgICAgICAgZGVjb2Rl
ciA+PnZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIHt7IFdURk1vdmUoKmtleSksIFdURk1vdmUoKnZhbHVlKSB9fTsKICAgICB9CkBAIC0xMjks
MTQgKzEyOSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+
IHN0cnVjdCBWZWN0b3JDb2RlcjxmYWxzZSwgVCwgaW5saW5lQwogICAgICAgICBPcHRpb25hbDx1
aW50NjRfdD4gc2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAoIXNp
emUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IHRtcDsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAqc2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBPcHRpb25hbDxUPiBlbGVtZW50OwogICAgICAgICAgICAgZGVjb2RlciA+PiBlbGVtZW50Owog
ICAgICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IHRtcC5hcHBlbmQoV1RGTW92ZSgqZWxlbWVudCkpOwogICAgICAgICB9CiAKQEAgLTE1NywxMCAr
MTU3LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3Ry
dWN0IFZlY3RvckNvZGVyPHRydWUsIFQsIGlubGluZUNhCiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBkZWNvZGVkU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkU2l6ZTsKICAgICAg
ICAgaWYgKCFkZWNvZGVkU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICghaXNJbkJvdW5k
czxzaXplX3Q+KCpkZWNvZGVkU2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KCpkZWNvZGVkU2l6ZSk7CiAKQEAgLTE2OCwxMyArMTY4LDEz
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZl
Y3RvckNvZGVyPHRydWUsIFQsIGlubGluZUNhCiAgICAgICAgIC8vIG9uZSBmZWxsIHN3b29wLiBC
ZWZvcmUgYWxsb2NhdGluZyB3ZSBtdXN0IGhvd2V2ZXIgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29k
ZXIgYnVmZmVyCiAgICAgICAgIC8vIGlzIGJpZyBlbm91Z2guCiAgICAgICAgIGlmICghZGVjb2Rl
ci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPFQ+KHNpemUpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiB0ZW1wOwogICAgICAgICB0ZW1wLmdyb3co
c2l6ZSk7CiAKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPih0ZW1wLmRhdGEoKSksIHNpemUgKiBzaXplb2YoVCkpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHRlbXA7CiAgICAgfQpAQCAtMTk3LDcgKzE5Nyw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBo
YXNoTWFwU2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNoTWFwU2l6ZTsKICAgICAgICAgaWYg
KCFoYXNoTWFwU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEhhc2hNYXBUeXBlIHRlbXBIYXNo
TWFwOwogICAgICAgICB0ZW1wSGFzaE1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0YXRpY19j
YXN0PHVuc2lnbmVkPigqaGFzaE1hcFNpemUpKTsKQEAgLTIwNSwxNSArMjA1LDE1IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAg
ICAgICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKCFrZXkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgT3B0aW9uYWw8TWFwcGVkQXJnPiB2YWx1ZTsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoV1RGTW92ZSgq
a2V5KSwgV1RGTW92ZSgqdmFsdWUpKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGhhc2ggbWFwIGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yMzYsMTggKzIzNiwx
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1l
IEtleVRyYWl0c0FyZz4gc3RydWN0IENvZGVyPAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4g
aGFzaFNldFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaFNldFNpemU7CiAgICAgICAgIGlm
ICghaGFzaFNldFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBIYXNoU2V0VHlwZSB0ZW1wSGFz
aFNldDsKICAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8ICpoYXNoU2V0U2l6ZTsgKytp
KSB7CiAgICAgICAgICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRlY29k
ZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgICAgICBpZiAoIXRlbXBIYXNoU2V0LmFkZChXVEZNb3ZlKCprZXkpKS5pc05ld0VudHJ5
KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVhZHkgaGFzIHRoZSBzcGVj
aWZpZWQga2V5LCBiYWlsLgotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCkBAIC0yNjYsNyArMjY2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8U2Vjb25k
cz4gewogICAgICAgICBPcHRpb25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+
IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBT
ZWNvbmRzKCp2YWx1ZSk7CiAgICAgfQogfTsKQEAgLTI4Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBDb2RlcjxXYWxsVGltZT4gewogICAgICAgICBPcHRpb25hbDxkb3VibGU+IHZhbHVl
OwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqdmFsdWUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1Q
bGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxh
eVN0YXRpb24uY3BwCmluZGV4IGI5OGFkNzU4MmFjMjUzMzNlZWNlNzQ3YTU0NTZhMjk2ZjgxMDQw
MDYuLjZhMjU1NDY4YjBjNDkwZjA4M2Y4NWY5MjAxMzNmYjMxYzg3MmI3MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApA
QCAtNDksMTIgKzQ5LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3Rl
bnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0CiAgICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGF0RnVu
YyA9IHNob3VsZEZvbGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6WWVzID8gc3RhdCA6IGxzdGF0OwogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwogICAgIGlm
IChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoU19JU0RJ
UihmaWxlSW5mby5zdF9tb2RlKSkKICAgICAgICAgcmV0dXJuIEZpbGVUeXBlOjpEaXJlY3Rvcnk7
CkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwogCiAgICAgaWYgKHN0YXQoZnNS
ZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVJbmZvLnN0X3NpemU7
CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7
CiAgICAgaWYgKCFzdGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZmaWxlU3lzdGVtU3RhdCkpCiAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtU3RhdC5mX2JhdmFp
bCAqIGZpbGVTeXN0ZW1TdGF0LmZfZnJzaXplOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29u
c3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCkBA
IC0yMzQsNyArMjM0LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGhhcmRMaW5rQ291bnQoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIGF1dG8gbGlua1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRo
LmRhdGEoKSwgJnN0YXQpIDwgMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIExpbmsgY291bnQgaXMgMiBpbiB0aGUg
c2luZ2xlIGNsaWVudCBjYXNlICh0aGUgYmxvYiBmaWxlIGFuZCBhIGxpbmspLgogICAgIHJldHVy
biBzdGF0LnN0X25saW5rIC0gMTsKQEAgLTI1NywxMiArMjU3LDEyIEBAIE9wdGlvbmFsPFdhbGxU
aW1lPiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgQ1N0cmlu
ZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNS
ZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RydWN0IHN0
YXQgZmlsZUluZm87CiAKICAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1l
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGVjMzIy
MmNlYTA5MzU1YTZmYmU3NmQ1ZGMzZTUyMzZjODY0N2NjOWIuLmE3YmEwNDdiMDU3YzdiYzQzNzc3
ZWUyMjkxOTRjZjliOGYyZmU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogewogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwog
ICAgIGlmIChmc3RhdChoYW5kbGUsICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZmlsZUlu
Zm8uc3Rfc2l6ZTsKIH0KQEAgLTE3MCwxNyArMTcwLDE3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBm
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkg
fHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCkBAIC0yMzAsNyArMjMwLDcgQEAg
T3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkK
IHsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgp
LCAmZmlsZVN0YXQpID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVTdGF0LnN0X2RldjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQmFzZTY0LmNwcAppbmRleCA5NGU0MTVjNDY0OTY3MDExODFlNjhiOTg5MWE1NDc0
NTI4ZDdhYmQ1Li5hYTI3YmNkYjEzYWM4MjMxNzVlYTNhYzQwMmY2NGM4N2IwNmZjOTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9CYXNlNjQuY3BwCkBAIC0xOTMsMTYgKzE5MywxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5h
bChjb25zdAogICAgICAgICAgICAgKytlcXVhbHNTaWduQ291bnQ7CiAgICAgICAgICAgICAvLyBU
aGVyZSBzaG91bGQgbmV2ZXIgYmUgbW9yZSB0aGFuIDIgcGFkZGluZyBjaGFyYWN0ZXJzLgogICAg
ICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQmFzZTY0RGVjb2RlT3B0aW9uczo6VmFsaWRh
dGVQYWRkaW5nKSAmJiBlcXVhbHNTaWduQ291bnQgPiAyKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciBkZWNvZGVk
Q2hhcmFjdGVyID0gY2ggPCBkZWNvZGVNYXBTaXplID8gZGVjb2RlTWFwW2NoXSA6IG5vbkFscGhh
YmV0OwogICAgICAgICAgICAgaWYgKGRlY29kZWRDaGFyYWN0ZXIgIT0gbm9uQWxwaGFiZXQpIHsK
ICAgICAgICAgICAgICAgICBpZiAoZXF1YWxzU2lnbkNvdW50KQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2Rlc3RpbmF0aW9uTGVuZ3RoKytd
ID0gZGVjb2RlZENoYXJhY3RlcjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuY29u
dGFpbnMoQmFzZTY0RGVjb2RlT3B0aW9uczo6SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpIHx8ICgh
aXNMYXRpbjEoY2gpIHx8ICFpc0FTQ0lJU3BhY2UoY2gpIHx8IChvcHRpb25zLmNvbnRhaW5zKEJh
c2U2NERlY29kZU9wdGlvbnM6OkRpc2NhcmRWZXJ0aWNhbFRhYikgJiYgY2ggPT0gJ1x2JykpKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAt
MjE0LDIzICsyMTQsMjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QKIAogICAgIGlmICghZGVz
dGluYXRpb25MZW5ndGgpIHsKICAgICAgICAgaWYgKGVxdWFsc1NpZ25Db3VudCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgfTsKICAgICB9CiAKICAgICAvLyBU
aGUgc2hvdWxkIGJlIG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgNC4KICAg
ICAvLyBXZSB1c2UgKGRlc3RpbmF0aW9uTGVuZ3RoICsgZXF1YWxzU2lnbkNvdW50KSBpbnN0ZWFk
IG9mIGxlbmd0aCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWNjb3VudCBmb3IgaWdub3JlZCBj
aGFyYWN0ZXJzIChpLmUuIHNwYWNlcykuCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQmFzZTY0
RGVjb2RlT3B0aW9uczo6VmFsaWRhdGVQYWRkaW5nKSAmJiBlcXVhbHNTaWduQ291bnQgJiYgKGRl
c3RpbmF0aW9uTGVuZ3RoICsgZXF1YWxzU2lnbkNvdW50KSAlIDQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWYWxp
ZCBkYXRhIGlzIChuICogNCArIFswLDIsM10pIGNoYXJhY3RlcnMgbG9uZy4KICAgICBpZiAoKGRl
c3RpbmF0aW9uTGVuZ3RoICUgNCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyA0LWJ5dGUgdG8gMy1i
eXRlIGNvbnZlcnNpb24KICAgICBkZXN0aW5hdGlvbkxlbmd0aCAtPSAoZGVzdGluYXRpb25MZW5n
dGggKyAzKSAvIDQ7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2ln
bmVkIHNpZHggPSAwOwogICAgIHVuc2lnbmVkIGRpZHggPSAwOwpAQCAtMjc0LDE0ICsyNzQsMTQg
QEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldyBpbnB1
dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU8KIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFz
ZTY0RGVjb2RlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQsIE9wdGlvblNldDxCYXNlNjRE
ZWNvZGVPcHRpb25zPiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQogewogICAgIGlmIChp
bnB1dC5zaXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIGJhc2U2NERlY29kZUludGVybmFsKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgp
LCBvcHRpb25zLCBtYXApOwogfQogCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERl
Y29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0
aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9CiAKQEAgLTMxNCwx
NCArMzE0LDE0IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29k
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0KQogewogICAgIGlmIChpbnB1dC5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJh
c2U2NERlY29kZUludGVybmFsKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2
NERlY29kZU1hcDo6VVJMKTsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihp
bnB1dC5kYXRhKCkpLCBpbnB1dC5zaXplKCksIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
CmluZGV4IDA5ZjMwNGM0YjUxODAwNjAwMjVkNGNhYzQwOTg0YzdkZDA5MTAzZWMuLjM1NmM3NTZj
NjlhNGQzNmRhOTdiMzA1MWEwMWE0MDVhYmQ0NWUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCkBAIC00NSw3ICs0NSw3IEBAIGVudW0g
Y2xhc3MgVHJhaWxpbmdKdW5rUG9saWN5IHsgRGlzYWxsb3csIEFsbG93IH07CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPElu
dGVncmFsVHlwZT4gcGFyc2VJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIHVpbnQ4X3QgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeSkKIHsKICAg
ICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQVNDSUlTcGFjZSgqZGF0
YSkpIHsKICAgICAgICAgLS1sZW5ndGg7CkBAIC02OSw3ICs2OSw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdy
YWxUeXBlPiBwCiAgICAgfTsKIAogICAgIGlmICghKGxlbmd0aCAmJiBpc0NoYXJhY3RlckFsbG93
ZWRJbkJhc2UoKmRhdGEsIGJhc2UpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENoZWNrZWQ8SW50ZWdyYWxUeXBlLCBS
ZWNvcmRPdmVyZmxvdz4gdmFsdWU7CiAgICAgZG8gewpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PEludGVncmFsVHlwZT4gcAogICAgIH0gd2hpbGUgKC0tbGVuZ3RoICYmIGlzQ2hhcmFjdGVyQWxs
b3dlZEluQmFzZSgqKytkYXRhLCBiYXNlKSk7CiAKICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFz
T3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChwb2xpY3kgPT0gVHJhaWxpbmdKdW5rUG9saWN5
OjpEaXNhbGxvdykgewogICAgICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQVNDSUlTcGFjZSgqZGF0
YSkpIHsKQEAgLTkwLDcgKzkwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICAgICAg
ICAgICsrZGF0YTsKICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5jcHAKaW5kZXggMzc1NjkxZWFjODZkMzRiMGQ4ZGMyMDQ5YmQwN2NmYzRlZGRkNzhkMC4u
ZTA5NjcyOTAxZWY5M2ZmOTNiMzM0OTAxMDY3YTc1MzZmYmQxMjcwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKIH07CiAKIFN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChtYWtlVW5pcXVl
PEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBP
cHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VV
bmlxdWU8SW1wbD4oc3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IHN0ZDo6bnVsbG9w
dCA6IE9wdGlvbmFsPE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCmluZGV4IGVmNjY5YmM0MTM5OTZmZTJh
YzhmMWZmN2RhNGQ3YzUyOGFjOWYxNWYuLmY1YTM2MzUwNTBlZDVlN2MzMDU3MWY1ZGQ3OTM5OTAy
MWYwOTM1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29j
b2EubW0KKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQpAQCAt
MzgsNyArMzgsNyBAQCBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBTdHJp
bmcmIHZlY3RvckVsZW1lbnQpCiBPcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNv
bnN0IFN0cmluZyosIGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQg
aXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBhcnJheUVs
ZW1lbnQgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25h
bHMuaCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDQ4YzZhYWM0NGY0
M2Y4NzFiZjVhNDUzMGMwZTU3YmUzZWY1YjRkMWEuLjY2NTc3NDhhZTFkNTQ0NjQ1YzlmMzM3YzU4
OGFiMGNmN2Y1MjkyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFs
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC02MywxMiArNjMs
MTIgQEAgaW5saW5lIHN0ZDo6dHVwbGU8aW50LCBPcHRpb25hbDxpbnQ+PiB0b1N5c3RlbVNpZ25h
bChTaWduYWwgc2lnbmFsKQogewogICAgIHN3aXRjaCAoc2lnbmFsKSB7CiAgICAgY2FzZSBTaWdu
YWw6OkFjY2Vzc0ZhdWx0OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJR0JVUyk7
Ci0gICAgY2FzZSBTaWduYWw6OklsbGVnYWxJbnN0cnVjdGlvbjogcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZShTSUdJTEwsIFdURjo6bnVsbG9wdCk7Ci0gICAgY2FzZSBTaWduYWw6OlVzcjogcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIFdURjo6bnVsbG9wdCk7Ci0gICAgY2FzZSBTaWduYWw6
OkZsb2F0aW5nUG9pbnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHRlBFLCBXVEY6Om51bGxv
cHQpOwotICAgIGNhc2UgU2lnbmFsOjpCcmVha3BvaW50OiByZXR1cm4gc3RkOjptYWtlX3R1cGxl
KFNJR1RSQVAsIFdURjo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6OklsbGVnYWxJbnN0cnVj
dGlvbjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CisgICAg
Y2FzZSBTaWduYWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVs
bG9wdCk7CisgICAgY2FzZSBTaWduYWw6OkZsb2F0aW5nUG9pbnQ6IHJldHVybiBzdGQ6Om1ha2Vf
dHVwbGUoU0lHRlBFLCBzdGQ6Om51bGxvcHQpOworICAgIGNhc2UgU2lnbmFsOjpCcmVha3BvaW50
OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1RSQVAsIHN0ZDo6bnVsbG9wdCk7CiAjaWYgIU9T
KERBUldJTikKLSAgICBjYXNlIFNpZ25hbDo6QWJvcnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUo
U0lHQUJSVCwgV1RGOjpudWxsb3B0KTsKKyAgICBjYXNlIFNpZ25hbDo6QWJvcnQ6IHJldHVybiBz
dGQ6Om1ha2VfdHVwbGUoU0lHQUJSVCwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAgIGRlZmF1
bHQ6IGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1l
V2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcAppbmRleCBkNzBiZmI1
MWFkMzc3MzIxMDc1YWMwOGU3OTRhMzkyYWMzMjIyNzljLi40YTFhM2U1NDIyNWY1MjgwYTkwZmVl
ZWE3NDAzMTcxNmFjZWE1MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGlt
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0NQVVRpbWVXaW4uY3BwCkBAIC01Niw3
ICs1Niw3IEBAIE9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiAgICAgRklMRVRJTUUg
a2VybmVsVGltZTsKICAgICBGSUxFVElNRSB1c2VyVGltZTsKICAgICBpZiAoITo6R2V0UHJvY2Vz
c1RpbWVzKDo6R2V0Q3VycmVudFByb2Nlc3MoKSwgJmNyZWF0aW9uVGltZSwgJmV4aXRUaW1lLCAm
a2VybmVsVGltZSwgJnVzZXJUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDUFVUaW1lIHsgTW9ub3Rv
bmljVGltZTo6bm93KCksIGZpbGVUaW1lVG9TZWNvbmRzKHVzZXJUaW1lKSwgZmlsZVRpbWVUb1Nl
Y29uZHMoa2VybmVsVGltZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApp
bmRleCAwZDJhOGFkZjhmODZhNjZiYjI4MjE0NjViMjY0MDUxN2UxMTdkMDQ3Li4xZDBhMjA0NGU4
NjJhYTMwZWY4MDU1MWJlMWQ2YzBlZDcyYjkzM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gZ2V0
RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QKICAgICBm
aWxlU2l6ZS5Mb3dQYXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKIAogICAgIGlm
IChmaWxlU2l6ZS5RdWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmlj
X2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZmlsZVNpemUuUXVh
ZFBhcnQ7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
KFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlKQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lO
Rk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9u
QnlIYW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
Z2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9y
bWF0aW9uKTsKIH0KQEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxXYWxsVGltZT4gZmlsZUNy
ZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHRpbWVfdCB0aW1lID0gMDsKICAgICBmaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmRE
YXRhLCB0aW1lKTsKQEAgLTM0MywxMiArMzQzLDEyIEBAIE9wdGlvbmFsPGludDMyX3Q+IGdldEZp
bGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBv
cGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNI
YW5kbGVWYWxpZChoYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04g
ZmlsZUluZm9ybWF0aW9uID0geyB9OwogICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhh
bmRsZShoYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKSB7CiAgICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGNsb3NlRmlsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAppbmRleCAxYWVlNDg2ZGVmOTk3
Mjc4ZmI4ZDAwZTJiMWMyMWZhMzJkMjlhYjQ2Li43YWI0YTA0ZjE3ODJhYzFkNjRiYzI3YjY5ZThm
ZjA0NDJiMTQwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVI
YW5kbGVyV2luLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwog
CiBPcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNh
Z2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVz
YWdlKCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNw
cAppbmRleCA0YjM3MjQ3Zjk5MDcyM2UzMjhlN2RjOTJkZTI1YjVjMzA4NmFlOTI2Li42MDA2ZDAx
MzQ1MjMwMmFkYTkwYjg1OGY0YjM3YTQzMWZhMDQxODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFk
aW5nV2luLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5k
bGUoTmV3VGhyZWFkQ29udGV4dCogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsCiB7
CiAgICAgdW5zaWduZWQgdGhyZWFkSWRlbnRpZmllciA9IDA7CiAgICAgdW5zaWduZWQgaW5pdEZs
YWcgPSBzdGFja1NpemUgPyBTVEFDS19TSVpFX1BBUkFNX0lTX0FfUkVTRVJWQVRJT04gOiAwOwot
ICAgIEhBTkRMRSB0aHJlYWRIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oX2JlZ2lu
dGhyZWFkZXgobnVsbHB0ciwgc3RhY2tTaXplLnZhbHVlT3IoMCksIHd0ZlRocmVhZEVudHJ5UG9p
bnQsIGRhdGEsIGluaXRGbGFnLCAmdGhyZWFkSWRlbnRpZmllcikpOworICAgIEhBTkRMRSB0aHJl
YWRIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oX2JlZ2ludGhyZWFkZXgobnVsbHB0
ciwgc3RhY2tTaXplLnZhbHVlX29yKDApLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBkYXRhLCBpbml0
RmxhZywgJnRocmVhZElkZW50aWZpZXIpKTsKICAgICBpZiAoIXRocmVhZEhhbmRsZSkgewogICAg
ICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgdGhyZWFkIGF0IGVudHJ5IHBvaW50ICVw
IHdpdGggZGF0YSAlcDogJWxkIiwgd3RmVGhyZWFkRW50cnlQb2ludCwgZGF0YSwgZXJybm8pOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oCmluZGV4IGI3OTYwNjcx
MjhjNTY3NzU5ZTNkNGVjZWJiZTkzMGQzNDMwZjQ5ZTUuLjk0OGZiNTU4NTZlZTk5NjI2NjkxMzQ2
OGRmZTg4M2Y2NDY5MzRmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oCkBAIC01Niw3ICs1Niw3
IEBAIE9wdGlvbmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U+IEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZUJhc2U6OmRlY29kZShEZWNvZGVyJiBkCiB7CiAgICAgQXBwbGVQYXlEZXRhaWxzVXBkYXRl
QmFzZSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oCmluZGV4IDgwNzhmOTU3
MjE0M2JkZTM4MGZkNGU0NGFiYzQ4MzE4ZjhjNzkyZDYuLmU4MzFkMDJmMmZhZTM3MmQ3ZTY0NTM3
MmZiMTliMTYxZjNmMGI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oCkBAIC01OSw3ICs1OSw3
IEBAIE9wdGlvbmFsPEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+IEFwcGxlUGF5RGV0YWlsc1Vw
ZGF0ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiB7CiAgICAgQXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oCmluZGV4IGU3NGJmZDgzZmIyMTNlYTVjMGZjYjcwZDY0
MzI2YmU0MzhjY2JkZmMuLmJlYTRiMjNhMzZmY2NmZDM1NDAxNTA1OTZmOTEwZTExMjUxZjg2NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbS5oCkBAIC02MywyNCArNjMsMjQgQEAgT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gQXBw
bGVQYXlMaW5lSXRlbTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgQXBwbGVQYXlMaW5l
SXRlbSByZXN1bHQ7CiAKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRhKGRlY29kZXIpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYg
KCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKICAgICBPcHRp
b25hbDxTdHJpbmc+IGxhYmVsOwogICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgaWYgKCFsYWJl
bCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQubGFiZWwgPSBXVEZNb3ZlKCpsYWJlbCk7CiAKICAgICBPcHRpb25h
bDxTdHJpbmc+IGFtb3VudDsKICAgICBkZWNvZGVyID4+IGFtb3VudDsKICAgICBpZiAoIWFtb3Vu
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuYW1vdW50ID0gV1RGTW92ZSgqYW1vdW50KTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TGluZUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TGluZUl0ZW1EYXRhLmgKaW5kZXggODg4MWRkY2RmYmQzNjJjYjEyYTdiODU5ZTFlZTRl
N2ZhY2EzNmEyNC4uOTU4ZTM2ZmMwYjY1NDI3ZjM1YjYwMDhkNzYwMDMwZWI3YWYwM2ViOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5l
SXRlbURhdGEuaApAQCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheUxpbmVJdGVtRGF0
YT4gQXBwbGVQYXlMaW5lSXRlbURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IEFwcGxlUGF5TGluZUl0ZW1EYXRhIHJlc3VsdDsKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRh
KGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRo
b2RNb2RlVXBkYXRlLmgKaW5kZXggYmE4MDY4MTI2MDNiMjMzMTJjYzc5ZGQ4NmIzZGE5NTI4ZDky
MjAyZi4uYWM3ZjYyOWYyYjBlZjBkYjBmMmI5NGZjZWFlMTkwNzdhNTA3N2Y4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RN
b2RlVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmgKQEAgLTU5LDE4ICs1OSwxOCBAQCBPcHRpb25hbDxB
cHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlPiBBcHBsZVBheVBheW1lbnRNZXRob2RNb2Rl
VXBkYXRlOjpkZWNvZAogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUgcmVzdWx0
OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+PiBlcnJvcnM7CiAgICAgZGVjb2RlciA+
PiBlcnJvcnM7CiAgICAgaWYgKCFlcnJvcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmVycm9ycyA9IFdURk1v
dmUoKmVycm9ycyk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhv
ZD4+IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBkZWNvZGVyID4+IG5ld1NoaXBwaW5nTWV0aG9k
czsKICAgICBpZiAoIW5ld1NoaXBwaW5nTWV0aG9kcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQubmV3U2hpcHBp
bmdNZXRob2RzID0gV1RGTW92ZSgqbmV3U2hpcHBpbmdNZXRob2RzKTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaAppbmRleCAyOTQ2Y2NjODk5NDRhODIxYzg5
ZGQ3ZDhjY2UxOWIzZmQ3MGUzMjk1Li43MTk1YzkzNzg1OTA2NzVhOThjNGMzNTNiYmE0YjhiNDgx
NDEzY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKQEAgLTU3LDEzICs1NywxMyBAQCBP
cHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhv
ZFVwZGF0ZTo6ZGVjb2RlKERlY29kZQogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSBy
ZXN1bHQ7CiAKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVm
aW5lIERFQ09ERShuYW1lLCB0eXBlKSBcCiAgICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAg
IGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OyBcCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKICAgICByZXN1bHQu
bmFtZSA9IFdURk1vdmUoKm5hbWUpOyBcCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExN
RU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
ZXNzaW9uLmNwcAppbmRleCA4NTJhMGNhOTk3YzMwNWMwYjNkZjAwODVmZDM3NDFkMWJlMzg4M2E4
Li44MWI3YWIzNzI1NzM5NGI2MWVmNWM3ZmI4Y2Q4YzczZmZjYjgwM2QwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiBjb252ZXJ0QW5kVmFsaWRhdGUoQXBwbGVQYXlQYXltZW4KIAogICAgIGNhc2UgQXBwbGVQ
YXlTZXNzaW9uOjpTVEFUVVNfSU5WQUxJRF9CSUxMSU5HX1BPU1RBTF9BRERSRVNTOgogICAgICAg
ICBjb252ZXJ0ZWRSZXN1bHQuc3RhdHVzID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZh
aWx1cmU7Ci0gICAgICAgIGNvbnZlcnRlZFJlc3VsdC5lcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJy
b3I6OmNyZWF0ZShBcHBsZVBheUVycm9yQ29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkLCBXVEY6
Om51bGxvcHQsIG51bGxTdHJpbmcoKSkpOworICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJyb3Jz
LmFwcGVuZChBcHBsZVBheUVycm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OkJpbGxpbmdD
b250YWN0SW52YWxpZCwgc3RkOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0lOVkFMSURfU0hJUFBJTkdf
UE9TVEFMX0FERFJFU1M6CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFBh
eW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiBjb252ZXJ0QW5kVmFsaWRhdGUoQXBwbGVQYXlQYXlt
ZW4KIAogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfSU5WQUxJRF9TSElQUElOR19D
T05UQUNUOgogICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuc3RhdHVzID0gUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OkZhaWx1cmU7Ci0gICAgICAgIGNvbnZlcnRlZFJlc3VsdC5lcnJvcnMuYXBw
ZW5kKEFwcGxlUGF5RXJyb3I6OmNyZWF0ZShBcHBsZVBheUVycm9yQ29kZTo6U2hpcHBpbmdDb250
YWN0SW52YWxpZCwgV1RGOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKKyAgICAgICAgY29udmVy
dGVkUmVzdWx0LmVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJy
b3JDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkLCBzdGQ6Om51bGxvcHQsIG51bGxTdHJpbmco
KSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNf
UElOX1JFUVVJUkVEOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVNldHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTZXR1cC5jcHAKaW5kZXggYWYxNzUxNjM0MjEzYWMyY2Q2MGI3ZGRlOGQ4N2IzOGJlY2U2
ODgwNC4uOGEyYTBiOWEzM2VlZDRiZjFiNzg0ZjNmNWRmMWFjMGI4ZTUwZTdlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCkBAIC03
OCw3ICs3OCw3IEBAIHZvaWQgQXBwbGVQYXlTZXR1cDo6Z2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVu
dCYgZG9jdW1lbnQsIFNldHVwRmVhdHVyZXNQcm9taXNlJiYKIAogICAgIHBhZ2UtPnBheW1lbnRD
b29yZGluYXRvcigpLmdldFNldHVwRmVhdHVyZXMobV9jb25maWd1cmF0aW9uLCBkb2N1bWVudC51
cmwoKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMp
XShWZWN0b3I8UmVmPEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBzZXR1cEZlYXR1cmVzKSB7CiAg
ICAgICAgIGlmIChtX3NldHVwRmVhdHVyZXNQcm9taXNlKQotICAgICAgICAgICAgc3RkOjpleGNo
YW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92
ZShzZXR1cEZlYXR1cmVzKSk7CisgICAgICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0
dXJlc1Byb21pc2UsIHN0ZDo6bnVsbG9wdCktPnNldHRsZShXVEZNb3ZlKHNldHVwRmVhdHVyZXMp
KTsKICAgICB9KTsKIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQXBwbGVQYXlTZXR1cDo6
YmVnaW4oRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5U2V0dXBGZWF0
dXJlCiAKICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5iZWdpbkFwcGxlUGF5U2V0dXAo
bV9jb25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlz
XShib29sIHJlc3VsdCkgewogICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCi0gICAgICAgICAg
ICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVz
dWx0KTsKKyAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIHN0ZDo6bnVs
bG9wdCktPnNldHRsZShyZXN1bHQpOwogICAgIH0pOwogfQogCkBAIC0xMjUsMTAgKzEyNSwxMCBA
QCBBcHBsZVBheVNldHVwOjpBcHBsZVBheVNldHVwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEFwcGxlUGF5U2V0dXBDb25maQogdm9pZCBBcHBsZVBheVNldHVwOjpzdG9wKCkKIHsK
ICAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKLSAgICAgICAgc3RkOjpleGNoYW5nZSht
X3NldHVwRmVhdHVyZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsg
QWJvcnRFcnJvciB9KTsKKyAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9t
aXNlLCBzdGQ6Om51bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAog
ICAgIGlmIChtX2JlZ2luUHJvbWlzZSkKLSAgICAgICAgc3RkOjpleGNoYW5nZShtX2JlZ2luUHJv
bWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7Cisg
ICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIHN0ZDo6bnVsbG9wdCktPnNldHRs
ZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOwogCiAgICAgaWYgKGF1dG8gcGFnZSA9IGRvd25j
YXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5wYWdlKCkpCiAgICAgICAg
IHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLmVuZEFwcGxlUGF5U2V0dXAoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGUuaAppbmRleCA4NzUyYTAzNDY4ODJjZDJmNTgyYjM5OTBhZjY2MmZk
MDQxM2IzOWJjLi5kZjI3ZGM4NTE2MjUxZmMyMzllYjMwNWYzZTc4OWY0NmVhNWJhMjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdD
b250YWN0VXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZS5oCkBAIC01OSwxMyArNTksMTMgQEAgT3B0aW9uYWw8
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBk
YXRlOjpkZWNvZGUoRGUKICAgICBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSByZXN1bHQ7
CiAKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERF
Q09ERShuYW1lLCB0eXBlKSBcCiAgICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29k
ZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OyBcCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKICAgICByZXN1bHQubmFtZSA9
IFdURk1vdmUoKm5hbWUpOyBcCiAKICAgICBERUNPREUoZXJyb3JzLCBWZWN0b3I8UmVmUHRyPEFw
cGxlUGF5RXJyb3I+PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kLmgKaW5kZXggODRmOTJlOTNlYWZkNDc4NDM0NGRi
NjZmMmM0ZDdjMmUwOGQyMWI4MS4uY2NmYmQ3MTQ2MTc1MzhiOWM2MzY0NmQzNmM5OWUwNGRjMzE4
YTZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9B
cHBsZVBheVNoaXBwaW5nTWV0aG9kLmgKQEAgLTU4LDEzICs1OCwxMyBAQCBPcHRpb25hbDxBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcgogICAgIEFwcGxlUGF5U2hpcHBpbmdNZXRob2QgcmVzdWx0OwogCiAgICAgaWYg
KCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2RlZmluZSBERUNPREUobmFtZSwg
dHlwZSkgXAogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7
IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAgICAgcmVzdWx0Lm5hbWUgPSBXVEZNb3ZlKCpu
YW1lKTsgXAogCiAgICAgREVDT0RFKGxhYmVsLCBTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRh
LmgKaW5kZXggZTQwY2Y2ZDFiYjkxMDU2MGU3ZmNjYzcxZjk0NzhlNTE1MjBmMGJkOS4uOGJiYTU0
MWU3YTcwMzU5Mzg0YTQ1NTBiNDgyMWE4ODNlZGIzYmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERh
dGEuaApAQCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0
YT4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGE6OmRlY29kZShEZWNvZGVyJgogewogICAgIEFw
cGxlUGF5U2hpcHBpbmdNZXRob2REYXRhIHJlc3VsdDsKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVE
YXRhKGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0
aG9kVXBkYXRlLmgKaW5kZXggNjM5YmUwZDJiYjkyYTExNDM2N2JiYTM2Yjk4N2I5YzY2ZGQ5MWY1
My4uODdmYWM4OGM1ZDQ2NjdiODI5MmViNjFhM2FiMzQzZTBjODExM2U3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBk
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kVXBkYXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlw
cGluZ01ldGhvZFVwZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZTo6ZGVjb2RlKERl
Y28KICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHJlc3VsdDsKIAogICAgIGlmICgh
cmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3IuY3BwCmluZGV4IDExMTU4NTRlOTVhMTUwM2VhMGYwODBjNTIyMWFiYTIwYWM5OTA0YzEu
LjQ4OTNiZTIxMWM3OTQ0Y2ZhOTE2YjI5MWZiYTk4NDU4NWNkMmRmNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAK
QEAgLTI3OSwxMCArMjc5LDEwIEBAIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpkaWRDYW5jZWxQ
YXltZW50U2Vzc2lvbihQYXltZW50U2Vzc2lvbkVycm9yJiYgZXJyb3IpCiBPcHRpb25hbDxTdHJp
bmc+IFBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoRG9jdW1lbnQm
LCB1bnNpZ25lZCB2ZXJzaW9uLCBjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKSBjb25zdAog
ewogICAgIGlmICh2ZXJzaW9uIDwgMiAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHBheW1lbnRO
ZXR3b3JrLCAiamNiIikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAodmVyc2lvbiA8IDMgJiYgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShwYXltZW50TmV0d29yaywgImNhcnRlQmFuY2FpcmUiKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBtX2NsaWVudC52YWxpZGF0ZWRQYXltZW50TmV0d29yayhwYXltZW50TmV0d29yayk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KaW5kZXggN2UyMzE5ZTY5NmMyOTkx
NGIwNWViMWI1OGQ0OWEwNzljZWI1YzQ0Yi4uY2U1NzA4OTZmZmQ5YmRlZGM5NGZjN2M2ZmEzYTEz
ZDEwNGY1ODQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQpAQCAtMTU2
LDcgKzE1Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25z
dCBBcHBsZVBheUluc3RhbGxtZW50SXRlbSYgaXRlbSkKIHN0YXRpYyBPcHRpb25hbDxBcHBsZVBh
eUluc3RhbGxtZW50SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQXBwbGVQYXlJbnN0YWxs
bWVudEl0ZW0qLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlz
S2luZE9mQ2xhc3M6UEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudEl0ZW1DbGFzcygpXSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFBLUGF5bWVudEluc3RhbGxtZW50SXRlbSAqaXRlbSA9IGFycmF5RWxlbWVudDsKICAg
ICByZXR1cm4gQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFu
dFNlc3Npb25Db2NvYS5tbQppbmRleCAwMzMyYjgzNDBiODgzMWZhNzMwNTQzZjExMTBlNzI0ODZk
NWVjOWQxLi4xMjkzM2E0MWI5YjlmOTAwYTcxZjBjZDZkNzhiYTQ5N2FlNGE3Mzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFu
dFNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2Nv
Y29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMzgsMTEgKzM4LDExIEBAIE9w
dGlvbmFsPFBheW1lbnRNZXJjaGFudFNlc3Npb24+IFBheW1lbnRNZXJjaGFudFNlc3Npb246OmZy
b21KUyhKU0M6OkpTR2xvYmFsT2JqCiAgICAgLy8gRklYTUU6IERvbid0IHJvdW5kLXRyaXAgdXNp
bmcgTlNTdHJpbmcuCiAgICAgYXV0byBqc29uU3RyaW5nID0gSlNPTlN0cmluZ2lmeSgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUsIDApOwogICAgIGlmICghanNvblN0cmluZykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gZGljdGlvbmFyeSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFyeT4oW05TSlNP
TlNlcmlhbGl6YXRpb24gSlNPTk9iamVjdFdpdGhEYXRhOlsoTlNTdHJpbmcgKilqc29uU3RyaW5n
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBvcHRpb25zOjAgZXJyb3I6
bmlsXSk7CiAgICAgaWYgKCFkaWN0aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNz
OltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkluc3Rh
bmNlKCkgaW5pdFdpdGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2Nv
YS5tbQppbmRleCA0OGI1MTRkOWYwM2RkZmIxNWZhMThkZjhkYTFhYWQ4MWMzMzM5ZGM2Li4zYmI2
M2YwMTc2YWUyODExZGIyYzMxODUzNTQ5NjM3OTQzOGEzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2Nv
YS5tbQpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZh
dGlvblN0YXRlIGNvbnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZQogc3RhdGljIE9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50UGFzcyAqcGF5bWVu
dFBhc3MpCiB7CiAgICAgaWYgKCFwYXltZW50UGFzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFwcGxlUGF5UGF5bWVu
dFBhc3MgcmVzdWx0OwogCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxBcHBsZVBh
eVBheW1lbnRNZXRob2Q6OlR5cGU+IGNvbnZlcnQoUEtQYXltZW50TWV0aG9kVHlwZSBwYXltZW50
CiAgICAgICAgIHJldHVybiBBcHBsZVBheVBheW1lbnRNZXRob2Q6OlR5cGU6OlN0b3JlOwogICAg
IGNhc2UgUEtQYXltZW50TWV0aG9kVHlwZVVua25vd246CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0KENOTGFiZWxlZFZh
bHVlPENOUG9zdGFsQWRkcmVzcyo+ICpwb3N0YWxBZGRyZXNzLCBBcHBsZVBheVBheQogc3RhdGlj
IE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudENvbnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxs
aW5nQ29udGFjdCkKIHsKICAgICBpZiAoIWJpbGxpbmdDb250YWN0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQXBwbGVQ
YXlQYXltZW50Q29udGFjdCByZXN1bHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCmluZGV4IDAwNmM2NDVkNjcwMzM0ZWFjMTk2ZGU0MDg1MDhhOTZlNWMxOWU0MmUuLjJj
MDZiNDZlODM0NGI2Zjc3ZTY0Y2M1NGJjYmZhNGFjNjgwYjhjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNl
c3Npb25FcnJvckNvY29hLm1tCkBAIC00MiwxNCArNDIsMTQgQEAgc3RhdGljIE9wdGlvbmFsPEFw
cGxlUGF5U2Vzc2lvbkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqZXJyb3IpCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVB
cHBsaWNhdGlvbkVycm9yID0gLTIwMTY7CiAKICAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1l
bnRBdXRob3JpemF0aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZCBiaW5k
VG9rZW5WYWx1ZSA9IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktleV07CiAgICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighYmluZFRva2VuVmFsdWUgfHwgW2JpbmRU
b2tlblZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKTsKICAgICByZXR1cm4gQXBw
bGVQYXlTZXNzaW9uRXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IiX3MsIHsgeyAiYmlu
ZFRva2VuIl9zLCAoTlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9IH0gfTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGVycm9yKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5jcHAKaW5kZXggNDhiZmE4OTU0OWJjNDMxOGMxODczOGUxMzQ0YTky
MjM0ZDk4YzY0Mi4uNTYwMTQxODU5ZTFjYjJiMjhiN2VkNTlkMTUwZDhhNzljYmM2NzhjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC00MDks
NyArNDA5LDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlQWRkcmVzc0Vy
cm9ycyhTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYKICAgICBpZiAoIW1fcGF5bWVudFJl
cXVlc3QtPnBheW1lbnRPcHRpb25zKCkucmVxdWVzdFNoaXBwaW5nKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShlcnJvciks
IFdURjo6bnVsbG9wdCwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlk
RXJyb3IoV1RGTW92ZShlcnJvciksIHN0ZDo6bnVsbG9wdCwgZXJyb3JzKTsKICAgICBhcHBlbmRT
aGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmFkZHJlc3NM
aW5lKSwgQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZDo6QWRkcmVzc0xpbmVzLCBlcnJvcnMpOwog
ICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJv
cnMuY2l0eSksIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkxvY2FsaXR5LCBlcnJvcnMpOwog
ICAgIGFwcGVuZFNoaXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJv
cnMuY291bnRyeSksIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkNvdW50cnksIGVycm9ycyk7
CkBAIC00NjEsNyArNDYxLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQYXlt
ZW50RGV0YWlsc01vZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+IEFwcGwKIHsKICAgICBhdXRv
JiBkZXRhaWxzID0gbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKICAgICBpZiAo
IWRldGFpbHMubW9kaWZpZXJzKQotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAg
ICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gKmRvY3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7CiAKQEAgLTUwMCw3ICs1MDAsNyBA
QCBFeGNlcHRpb25PcjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIs
IEFwcGxlUGF5TW9kaWZpZXI+Pj4gQXBwbAogICAgICAgICByZXR1cm4geyB7IHsgbW9kaWZpZXIs
IFdURk1vdmUoYXBwbGVQYXlNb2RpZmllcikgfSB9IH07CiAgICAgfQogCi0gICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiB9CiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRldGFpbHNVcGRhdGVkKFBheW1l
bnRSZXF1ZXN0OjpVcGRhdGVSZWFzb24gcmVhc29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vy
cm9ycyYmIGFkZHJlc3NFcnJvcnMsIFBheWVyRXJyb3JGaWVsZHMmJiBwYXllckVycm9ycywgSlND
OjpKU09iamVjdCogcGF5bWVudE1ldGhvZEVycm9ycykKQEAgLTY0Nyw4ICs2NDcsOCBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRl
ZChWZWN0b3I8UmVmUHRyPEFwcAogdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0
ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0
KSB7Ci0gICAgICAgIEFTU0VSVChpc0ZpbmFsU3RhdGVSZXN1bHQoV1RGOjpudWxsb3B0KSk7Ci0g
ICAgICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgQVNTRVJUKGlzRmluYWxTdGF0ZVJlc3VsdChzdGQ6Om51bGxvcHQp
KTsKKyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODAsNyArNjgwLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cmV0cnkoUGF5bWVu
dFZhbGlkYXRpb25FcnJvcnMmJiB2YWxpZGEKIAogICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbHdh
eXMgYXQgbGVhc3Qgb25lIGVycm9yIHRvIGF2b2lkIGhhdmluZyBhIGZpbmFsIHJlc3VsdC4KICAg
ICBpZiAoZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgICAgZXJyb3JzLmFwcGVuZChBcHBsZVBheUVy
cm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OlVua25vd24sIFdURjo6bnVsbG9wdCwgbnVs
bFN0cmluZygpKSk7CisgICAgICAgIGVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRl
KEFwcGxlUGF5RXJyb3JDb2RlOjpVbmtub3duLCBzdGQ6Om51bGxvcHQsIG51bGxTdHJpbmcoKSkp
OwogCiAgICAgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgYXV0aG9yaXphdGlvblJlc3VsdCB7
IFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlLCBXVEZNb3ZlKGVycm9ycykgfTsK
ICAgICBBU1NFUlQoIWlzRmluYWxTdGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CkBA
IC03MDEsNyArNzAxLDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjp2YWxpZGF0ZU1l
cmNoYW50KFVSTCYmIHZhbGlkYXRpb25VUkwpCiAKIHN0YXRpYyBSZWY8UGF5bWVudEFkZHJlc3M+
IGNvbnZlcnQoY29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICBy
ZXR1cm4gUGF5bWVudEFkZHJlc3M6OmNyZWF0ZShjb250YWN0LmNvdW50cnlDb2RlLCBjb250YWN0
LmFkZHJlc3NMaW5lcy52YWx1ZU9yKFZlY3RvcjxTdHJpbmc+KCkpLCBjb250YWN0LmFkbWluaXN0
cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFj
dC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwg
Y29udGFjdC5waG9uZU51bWJlcik7CisgICAgcmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUo
Y29udGFjdC5jb3VudHJ5Q29kZSwgY29udGFjdC5hZGRyZXNzTGluZXMudmFsdWVfb3IoVmVjdG9y
PFN0cmluZz4oKSksIGNvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhLCBjb250YWN0LmxvY2FsaXR5
LCBjb250YWN0LnN1YkxvY2FsaXR5LCBjb250YWN0LnBvc3RhbENvZGUsIFN0cmluZygpLCBTdHJp
bmcoKSwgY29udGFjdC5sb2NhbGl6ZWROYW1lLCBjb250YWN0LnBob25lTnVtYmVyKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgUGF5bWVudCYgcGF5bWVudCkK
ICAgICBBU1NFUlQobV91cGRhdGVTdGF0ZSA9PSBVcGRhdGVTdGF0ZTo6Tm9uZSk7CiAKICAgICBh
dXRvIGFwcGxlUGF5UGF5bWVudCA9IHBheW1lbnQudG9BcHBsZVBheVBheW1lbnQodmVyc2lvbigp
KTsKLSAgICBhdXRvIHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0Nv
bnRhY3QudmFsdWVPcihBcHBsZVBheVBheW1lbnRDb250YWN0KCkpOworICAgIGF1dG8gc2hpcHBp
bmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdC52YWx1ZV9vcihBcHBs
ZVBheVBheW1lbnRDb250YWN0KCkpOwogICAgIGF1dG8gZGV0YWlsc0Z1bmN0aW9uID0gW2FwcGxl
UGF5UGF5bWVudCA9IFdURk1vdmUoYXBwbGVQYXlQYXltZW50KV0oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgewogICAgICAgICByZXR1cm4gdG9KU0RpY3Rpb25hcnko
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXBwbGVQYXlQYXltZW50KTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9u
TWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9B
cHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggN2JlMWEwZDFkZTMwODE2ODM4ZGM1NzJlNDRlNGU1
Mzk1OWNiY2MwYi4uYmUxODMyMzFhZTk1YzM3MzYzM2E3NGUxYzc0ZTcxYTliMWFjNDEwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxp
Y2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC02NiwxOSArNjYsMTkgQEAgT3B0aW9u
YWw8QXBwbGljYXRpb25NYW5pZmVzdD4gQXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgQXBwbGljYXRpb25NYW5pZmVzdCByZXN1bHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5zaG9ydE5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRl
c2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY29wZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlzcGxheSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuc3RhcnRVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnRoZW1lQ29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3Bw
CmluZGV4IDQwYmIwNmFmMjlkOWU0NWQwZDU5OWIzMTg5YjBkNjMwYzQ1Yjg1YzQuLjE5OTcwNWU1
Nzk3YjA4N2U3MzM3MDVkOWExMDUzZGFlMjIyYTYyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZVRleHQoY29uc3QgU3RyaW5nJiBkYXRhLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byByZWplY3RQcm9taXNlQW5kQ2xl
YXJBY3RpdmVTZXNzaW9uID0gWyZdIHsKLSAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAgIH07CiAKQEAgLTE5OCw3ICsx
OTgsNyBAQCB2b2lkIENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxEZWZlcnJlZFBybwogCiAgICAgYXV0byBmcmFtZSA9IG1ha2VS
ZWZQdHIodGhpcy0+ZnJhbWUoKSk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBtX2FjdGl2
ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNjIsNyArMjYyLDcgQEAgQ2xpcGJvYXJkOjpTZXNzaW9u
SXNWYWxpZCBDbGlwYm9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0eSgpCiAgICAgICAgIHJldHVy
biBTZXNzaW9uSXNWYWxpZDo6Tm87CiAKICAgICBpZiAobV9hY3RpdmVTZXNzaW9uLT5jaGFuZ2VD
b3VudCAhPSBhY3RpdmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKSkgewotICAgICAgICBtX2Fj
dGl2ZVNlc3Npb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlkOjpObzsKICAgICB9CiAK
QEAgLTMxNyw3ICszMTcsNyBAQCB2b2lkIENsaXBib2FyZDo6SXRlbVdyaXRlcjo6d3JpdGUoY29u
c3QgVmVjdG9yPFJlZlB0cjxDbGlwYm9hcmRJdGVtPj4mIGl0ZW1zKQogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIG1fY2hhbmdlQ291bnRBdFN0YXJ0ID0gbV9wYXN0ZWJvYXJkLT5jaGFuZ2VDb3Vu
dCgpOwogI2VuZGlmCi0gICAgbV9kYXRhVG9Xcml0ZS5maWxsKFdURjo6bnVsbG9wdCwgaXRlbXMu
c2l6ZSgpKTsKKyAgICBtX2RhdGFUb1dyaXRlLmZpbGwoc3RkOjpudWxsb3B0LCBpdGVtcy5zaXpl
KCkpOwogICAgIG1fcGVuZGluZ0l0ZW1Db3VudCA9IGl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAg
IGl0ZW1zW2luZGV4XS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKCptX2NsaXBib2FyZCwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5kZXhdIChhdXRvIGRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggNGVk
ZGY4NWQyN2NjNDA0NTBmMmEzMWVhMDdmN2JlNmQ2YjcwMWY0OC4uYTYyMDE2YmI1NTA0MWUzZGE4
ODdmNGYxZGZmN2M3OTIwNDhjMDhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJp
bmRpbmdzRGF0YVNvdXJjZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIENsaXBib2FyZEl0
ZW1CaW5kaW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKIAogICAgIGF1
dG8gZG9jdW1lbnQgPSBkb2N1bWVudEZyb21DbGlwYm9hcmQoY2xpcGJvYXJkLmdldCgpKTsKICAg
ICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAgZWxzZSBp
ZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAg
ICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEY6OmdldDxSZWY8U2hhcmVkQnVm
ZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCmlu
ZGV4IDQzMWUyYjVkM2I3NTJlZjhlZmVhZTg5NDFmNWEwOTE3OTM5MGFmZGEuLjc4NTVjMGVkMTUw
OGViZDU0ZDU5ZWY2ZmQ4ZGJjNmRkYWJiNTllNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENs
aXBib2FyZCYsIENvbXBsZQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIFRoaXMg
aXMgbmVlZGVkIHRvIHN1cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1iYWNrZWQgQ2xpcGJvYXJkSXRl
bXMKICAgICAvLyBiYWNrIHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5nIENsaXBib2FyZC53cml0ZSgp
LgotICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uKHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5jcHAKaW5kZXggNmZhNDAzMDE2YTBlMjk3MzM1MTRjYjFmNTk3YTYx
YmVjN2NjOGM4Yy4uOTVhODdkZDc5MWEzMTI0NTJkMDdmYzdiY2NhODE0YWViMmY3MDQ4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgc3RhdGljIFJlZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGVSZXNwb25zZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogewogICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZSA9
IHJlY29yZC5yZXNwb25zZTsKICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OkRPTUNhY2hlKTsKLSAgICBhdXRvIHJlc3BvbnNlID0gRmV0Y2hS
ZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIFdURjo6bnVsbG9wdCwgcmVjb3JkLnJlc3BvbnNlSGVh
ZGVyc0d1YXJkLCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKKyAgICBhdXRvIHJlc3BvbnNl
ID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgcmVjb3JkLnJl
c3BvbnNlSGVhZGVyc0d1YXJkLCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKICAgICByZXNw
b25zZS0+c2V0Qm9keURhdGEoY29weVJlc3BvbnNlQm9keShyZWNvcmQucmVzcG9uc2VCb2R5KSwg
cmVjb3JkLnJlc3BvbnNlQm9keVNpemUpOwogICAgIHJldHVybiByZXNwb25zZTsKIH0KQEAgLTQx
OCw3ICs0MTgsNyBAQCB2b2lkIERPTUNhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBD
YWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIERPTVByb21pcwogc3RhdGljIFJlZjxGZXRjaFJl
cXVlc3Q+IGNyZWF0ZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRE9NQ2FjaGVFbmdpbmU6OlJlY29yZCYgcmVjb3JkKQogewogICAgIGF1dG8gcmVxdWVzdEhl
YWRlcnMgPSBGZXRjaEhlYWRlcnM6OmNyZWF0ZShyZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwg
SFRUUEhlYWRlck1hcCB7IHJlY29yZC5yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsKLSAg
ICByZXR1cm4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHJlcXVlc3RIZWFkZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5yZXF1ZXN0IH0s
IEZldGNoT3B0aW9ucyB7IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29yZC5yZWZlcnJl
ciB9KTsKKyAgICByZXR1cm4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHJlcXVlc3RIZWFkZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5y
ZXF1ZXN0IH0sIEZldGNoT3B0aW9ucyB7IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29y
ZC5yZWZlcnJlciB9KTsKIH0KIAogdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0
SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYg
cHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2Fj
aGVFbmdpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUu
aAppbmRleCAwN2ExODIzZTU5ZDI2ODY0NzQ4ZDQxMDcwZWU0YTIyODNlOGYzNTYzLi44ZTYyZmEx
OTFjMmM5ZTgzN2Y4ZWQwOTMyNGQ3OThlYjUyZjVjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCkBAIC0xMjgsMTIgKzEyOCwxMiBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJbmZvcz4gQ2FjaGVJbmZv
czo6ZGVjb2RlKERlY29kZXImCiAgICAgT3B0aW9uYWw8VmVjdG9yPENhY2hlSW5mbz4+IGluZm9z
OwogICAgIGRlY29kZXIgPj4gaW5mb3M7CiAgICAgaWYgKCFpbmZvcykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiB1cGRhdGVDb3VudGVyOwogICAgIGRlY29kZXIgPj4gdXBkYXRlQ291bnRl
cjsKICAgICBpZiAoIXVwZGF0ZUNvdW50ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
aW5mb3MpLCBXVEZNb3ZlKCp1cGRhdGVDb3VudGVyKSB9fTsKIH0KQEAgLTE0OSwxMiArMTQ5LDEy
IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxDYWNoZUlkZW50aWZp
ZXJPcGVyYXRpb25SZXN1bHQ+IENhY2hlSWRlCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBkZWNvZGVyID4+
IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBpZiAoIWhhZFN0b3JhZ2VFcnJvcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKmhhZFN0b3JhZ2VFcnJvcikgfX07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCA1MDI2NzBiOTQ0OGU5MzE4NmEwZDJkMjdjMTJjZThhZjM2MDUxYzdhLi5mYTA1
MGMyOGNmZmU1ZmZlZDk2ZDg4OGY5ODIyOWRkNDIyNDk1YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IE9wdGlvbmFsPENsaWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAog
ewogICAgIGF1dG8qIG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiAgICAgaWYgKCFv
cmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ2xpZW50T3JpZ2luIHsgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT50b3BPcmlnaW4oKS5kYXRhKCksIG9yaWdpbi0+ZGF0YSgpIH07CiB9CkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYKICAgICAgICAgICAgICAgICByZXR1
cm4gZmluZENhY2hlT3JDcmVhdGUoV1RGTW92ZShpbmZvKSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfQotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCmluZGV4IGRmYWZhMDgzY2M3
MDAzODFlMGI4M2VlMGNjMmE4M2NmYjc1NDEzNDcuLmFmZjI3OGQ3NTFmY2QzZDhiMDQ5Nzk2MGQz
YTI4MmRmODZhNTBhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
UmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCkBAIC01MywyNyArNTMsMjcgQEAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IFJl
dHJpZXZlUmVjb3Jkc08KICAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Q7CiAg
ICAgZGVjb2RlciA+PiByZXF1ZXN0OwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IGlnbm9yZVNlYXJjaDsKICAgICBkZWNvZGVyID4+IGlnbm9yZVNlYXJjaDsKICAg
ICBpZiAoIWlnbm9yZVNlYXJjaCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZU1ldGhv
ZDsKICAgICBkZWNvZGVyID4+IGlnbm9yZU1ldGhvZDsKICAgICBpZiAoIWlnbm9yZU1ldGhvZCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZVZhcnk7CiAgICAgZGVjb2RlciA+PiBpZ25v
cmVWYXJ5OwogICAgIGlmICghaWdub3JlVmFyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNo
b3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBkZWNvZGVyID4+IHNob3VsZFByb3ZpZGVSZXNwb25z
ZTsKICAgICBpZiAoIXNob3VsZFByb3ZpZGVSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqcmVxdWVzdCksIFdURk1vdmUoKmlnbm9yZVNlYXJjaCksIFdURk1vdmUoKmlnbm9y
ZU1ldGhvZCksIFdURk1vdmUoKmlnbm9yZVZhcnkpLCBXVEZNb3ZlKCpzaG91bGRQcm92aWRlUmVz
cG9uc2UpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFj
dC1waWNrZXIvQ29udGFjdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1w
aWNrZXIvQ29udGFjdEluZm8uaAppbmRleCAxMmZmNTE0ZWFmNTRlMzFlYjU4M2I0YjE5N2JkNDNm
OTYwZWU3MjA1Li4zMGViNDYxN2JhYTg4MmNkOWVkMTk4NmQxNjJlMWEzZGU4N2ZkM2E3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0SW5m
by5oCkBAIC01NCwxNyArNTQsMTcgQEAgT3B0aW9uYWw8Q29udGFjdEluZm8+IENvbnRhY3RJbmZv
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
bmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGVtYWlsOwogICAgIGRlY29kZXIgPj4gZW1haWw7CiAgICAg
aWYgKCFlbWFpbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB0ZWw7CiAgICAg
ZGVjb2RlciA+PiB0ZWw7CiAgICAgaWYgKCF0ZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKm5hbWUs
ICplbWFpbCwgKnRlbCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKaW5kZXggNGZlMDdmN2E4
OGNlZmEwODM1NmNhY2VjZTAxM2NlY2I3NzY5M2U5ZC4uMzBiMGNmMjczOGM4YmE0MWVlYzU4MGU2
ZDk1YjI4NmFlNDQ1MmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250
YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKQEAgLTU2LDE3ICs1Niwx
NyBAQCBPcHRpb25hbDxDb250YWN0c1JlcXVlc3REYXRhPiBDb250YWN0c1JlcXVlc3REYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGFjdFByb3Bl
cnR5Pj4gcHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHByb3BlcnRpZXM7CiAgICAgaWYgKCFw
cm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gbXVsdGlwbGU7CiAgICAgZGVjb2Rl
ciA+PiBtdWx0aXBsZTsKICAgICBpZiAoIW11bHRpcGxlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4ge3sgKnByb3BlcnRpZXMsICptdWx0aXBsZSwgKnVybCB9fTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBiNGRlMWFlY2YyM2Vh
ZjJiMWRiZTlhNGUyNTllOGNjNWVmMmRlN2UzLi4wMTZlMDNmOGY3NzNmNzQ4ZjA2YmFhNWNlMzQy
ZmRhOGY4YThlODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1
cmF0aW9uKE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFtX3ByaXZhdGUpIHsKLSAgICAgICAg
Y2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU3LDcgKzE1Nyw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IENETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3Bv
bnNlKQogT3B0aW9uYWw8U3RyaW5nPiBDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKQogewogICAgIGlmICghbV9wcml2YXRlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3By
aXZhdGUtPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCmluZGV4IDM0NjIzYjFkMzMxMTRhYzFlYTJkMDYwODM0MjY2OWU5NmU1OTg0MjUuLjQxOWRi
OGQ1MTdkZmIzYTQzNDA3ZThhMWIxMTBmZmUwMjE1OTExNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cApAQCAtNTksMjAgKzU5LDIwIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgLy8gMS4g
Rm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5z
aXplKCkgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3Ry
aW5nIGpzb24geyBidWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNp
emUoKSkgfTsKIAogICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24p
OwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG9iamVjdCA9IHZhbHVlLT5hc09iamVj
dCgpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBraWRzQXJyYXkgPSBvYmplY3Qt
PmdldEFycmF5KCJraWRzIl9zKTsKICAgICBpZiAoIWtpZHNBcnJheSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lk
c0FycmF5KSB7CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoa2V5SUREYXRhLT5zaXplKCkgPCBrS2V5
SWRzTWluS2V5SWRTaXplSW5CeXRlcyB8fCBrZXlJRERhdGEtPnNpemUoKSA+IGtLZXlJZHNNYXhL
ZXlJZFNpemVJbkJ5dGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAga2V5SURzLmFwcGVuZChTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRERhdGEpKSk7CiAgICAgfQpAQCAtMTE2LDcg
KzExNiw3IEBAIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IEluaXREYXRhCiAgICAgLy8gNC4gQ29tbW9uIFN5c3Rl
bUlEIGFuZCBQU1NIIEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5
c3RlbQogICAgIGlmIChidWZmZXIuc2l6ZSgpID49IGtDZW5jTWF4Qm94U2l6ZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+PiBwc3NoQm94ZXM7CkBAIC0xMjcsMTQgKzEy
NywxNCBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvJiBib3hTaXplID0g
b3B0aW9uYWxCb3hUeXBlLnZhbHVlKCkuc2Vjb25kOwogCiAgICAgICAgIGlmIChib3hUeXBlTmFt
ZSAhPSBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OmJveFR5cGVOYW1lKCkg
fHwgYm94U2l6ZSA+IGJ1ZmZlci5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHN5
c3RlbUlEID0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVt
SUQodmlldywgb2Zmc2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERB
VEEpCiAgICAgICAgIGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6
OmZhaXJQbGF5U3lzdGVtSUQoKSkgewogICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gbWFrZVVu
aXF1ZTxJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAgICAgICBpZiAoIWZw
c1Bzc2gtPnJlYWQodmlldywgb2Zmc2V0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICBwc3NoQm94ZXMuYXBwZW5kKFdURk1vdmUoZnBzUHNzaCkpOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0
YQogI2VuZGlmCiAgICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlv
blN5c3RlbVNwZWNpZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQo
dmlldywgb2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RG
TW92ZShwc3NoQm94KSk7CiAgICAgfQpAQCAtMTU3LDEyICsxNTcsMTIgQEAgT3B0aW9uYWw8VmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0Nl
bmMoY29uc3QgU2gKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21D
ZW5jKGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8mIHBz
c2hCb3ggOiBwc3NoQm94ZXMudmFsdWUoKSkgewogICAgICAgICBBU1NFUlQocHNzaEJveCk7CiAg
ICAgICAgIGlmICghcHNzaEJveCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgSEFWRShGQUlSUExBWVNUUkVB
TUlOR19DRU5DX0lOSVREQVRBKQogICAgICAgICBpZiAoaXM8SVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94PigqcHNzaEJveCkpIHsKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVk
QnVmZmVyJgogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwog
ICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5p
dGRhdGEvd2VibS5odG1sI2Zvcm1hdApAQCAtMjQ1LDcgKzI0NSw3IEBAIE9wdGlvbmFsPFZlY3Rv
cjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29u
c3QgQXRvbVN0CiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7
CiAgICAgaWYgKGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJ
bml0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlci0+dmFsdWUuZXh0cmFjdEtleUlEcyhidWZmZXIp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggYzg1Zjc5OTdlZjg0MWM2MTk1NDJlMTdiNjc5
MDY1NWI5ZWNjOGEyMy4uYjQ5MTMzMWExNjc4NjM0NmU4ZTdjNzc0Mzk5MTg5YTRhN2RiOTkyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pCiAKICAgICAgICAgICAgICAgICAvLyA4LjkuNS4gUnVuIHRoZSBVcGRhdGUgRXhwaXJh
dGlvbiBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBleHBpcmF0aW9uIHRpbWUu
CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBtdXN0IGJlIHJ1biwgYW5kIE5hTiBpcyB0aGUgZGVm
YXVsdCB2YWx1ZSBpZiB0aGUgQ0RNIGluc3RhbmNlIGRvZXNuJ3QgcHJvdmlkZSBvbmUuCi0gICAg
ICAgICAgICAgICAgdXBkYXRlRXhwaXJhdGlvbihleHBpcmF0aW9uLnZhbHVlT3Ioc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkpOworICAgICAgICAgICAgICAgIHVwZGF0
ZUV4cGlyYXRpb24oZXhwaXJhdGlvbi52YWx1ZV9vcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpKSk7CiAKICAgICAgICAgICAgICAgICAvLyA4LjkuNi4gSWYgbWVzc2Fn
ZSBpcyBub3QgbnVsbCwgcnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0aG0g
b24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCiAgICAg
ICAgICAgICAgICAgaWYgKG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDdhN2Qw
MDg2YWJlYWNmYmQ1NWM4MTkxMTgzZTNmZGQ2NmIxMjk2NWMuLmQ5MzdmYzkzYWFkYzc4ZjQwMGRl
MmQ5M2QxOWY2MThiM2I2YTIxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC05NywxMSAr
OTcsMTEgQEAgTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcihNZWRpYUtleVN0
YXR1c01hcCYgbWFwKQogT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpW
YXJpYW50VHlwZSwgTWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6
Om5leHQoKQogewogICAgIGlmICghbV9tYXAtPm1fc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0
YXR1c2VzID0gbV9tYXAtPm1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKICAgICBpZiAobV9pbmRleCA+
PSBzdGF0dXNlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRl
eCsrXTsKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+
ZGF0YSgpLCBwYWlyLmZpcnN0LT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGU2ZTJjYmZjZjExNjBmY2Q4
YjVlYjU2ODlkMzJlMGY0NjBlZGUxNWIuLmIwMGE0OGRhNDNjOThkMzA0ODU4YWNlYTYxNjViMjY1
ODRkNDQxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IExpc3RlZENoaWxkIHsK
IHN0YXRpYyBPcHRpb25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hp
ZGRlbkZpbGVzKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGlkZGVuRmlsZShmdWxsUGF0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVU
eXBlKGZ1bGxQYXRoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCmluZGV4IGU4YzYyYWVlYzM5MmY1ZTI0ZGI2ZThkNDhmOWEwZTdlNmQyZWQ0NzYuLjQy
MmUwNjNmMWE1ZTdmZWExZTZjNjQ3ODg5YjA5YTE3NDAyMzUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8
RmV0Y2hCb2R5PiBGZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGb3IKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBmb3JtIGRhdGEg
Ym9kaWVzLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiBvd25l
ciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA1NWNmZGFhZDdkYmZj
MTE1ZDkyN2ZhZjlhNGU4MGEzMTZjM2Y1MjYxLi44MjdmYjE0MzQ1OWYzYTAxMzZlZjM5NTdkNmNm
OTllMDBlMTRkODRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMTE0LDE2ICsxMTQsMTYgQEAgc3RhdGljIE9wdGlvbmFs
PE1pbWVUeXBlPiBwYXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAg
U3RyaW5nIGlucHV0ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRU
eXBlKTsKICAgICBzaXplX3Qgc2xhc2hJbmRleCA9IGlucHV0LmZpbmQoJy8nKTsKICAgICBpZiAo
c2xhc2hJbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vi
c3RyaW5nKDAsIHNsYXNoSW5kZXgpOwogICAgIGlmICghdHlwZS5sZW5ndGgoKSB8fCAhaXNWYWxp
ZEhUVFBUb2tlbih0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzaXplX3Qgc2VtaWNvbG9uSW5kZXggPSBp
bnB1dC5maW5kKCc7Jywgc2xhc2hJbmRleCk7CiAgICAgU3RyaW5nIHN1YnR5cGUgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoaW5wdXQuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAx
LCBzZW1pY29sb25JbmRleCAtIHNsYXNoSW5kZXggLSAxKSk7CiAgICAgaWYgKCFzdWJ0eXBlLmxl
bmd0aCgpIHx8ICFpc1ZhbGlkSFRUUFRva2VuKHN1YnR5cGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
IFdURk1vdmUodHlwZSksIFdURk1vdmUoc3VidHlwZSksIHBhcnNlUGFyYW1ldGVycyhTdHJpbmdW
aWV3KGlucHV0KSwgc2VtaWNvbG9uSW5kZXggKyAxKSB9fTsKIH0KQEAgLTE3NywxMyArMTc3LDEz
IEBAIHN0YXRpYyBSZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgCiAgICAgYXV0byBwYXJzZU11bHRpcGFy
dEJvdW5kYXJ5ID0gW10gKGNvbnN0IE9wdGlvbmFsPE1pbWVUeXBlPiYgbWltZVR5cGUpIC0+IE9w
dGlvbmFsPFN0cmluZz4gewogICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0
IikgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0
YSIpKSB7CiAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMu
ZmluZCgiYm91bmRhcnkiX3MpOwogICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1pbWVUeXBl
LT5wYXJhbWV0ZXJzLmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgYXV0byBmb3JtID0gRE9NRm9ybURhdGE6
OmNyZWF0ZShVVEY4RW5jb2RpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGMzMjRlN2RhNjQyZTM1NjY1YTJmYTE5MTgzYzcy
MDgwMzUxNzhjMzQuLjMxY2NhOTJjNzM2ZmRiYjVhNzA0ODdjY2QyYjk5NWUyYzExZjQ5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBA
IC0yNTIsNyArMjUyLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxv
YiYgYmxvYiwgRmV0Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIG1fYmxvYkxvYWRlci0+
bG9hZGVyLT5zdGFydCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAo
IW1fYmxvYkxvYWRlci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewogICAgICAgICBtX2JvZHktPmxv
YWRpbmdGYWlsZWQoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQmxvYiBsb2FkaW5nIGZhaWxlZCJf
c30pOwotICAgICAgICBtX2Jsb2JMb2FkZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fYmxv
YkxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTI2
MSw3ICsyNjEsNyBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiB7
CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZldGNo
Qm9keU93bmVyOjpibG9iTG9hZGluZ1N1Y2NlZWRlZCgpCkBAIC0zODIsNyArMzgyLDcgQEAgT3B0
aW9uYWw8RXhjZXB0aW9uPiBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0
CiAgICAgfSwgW10oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pIHsKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IGV4Y2VwdGlvbiB9OwogICAgIH0sIFtdKGF1dG8mJikgLT4gT3B0aW9uYWw8
RXhjZXB0aW9uPiB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcAppbmRleCA1N2FkZGQzNGE5YTE2YzhkZmQ4NzAyNDM1MTc5
YjFhM2Q1ZTRlYjBhLi44NjM3NTk5NjJjODkzOWY2ZTZmOWE4MWZjYTE1NmYxMmQ5YjE1ZDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0y
MzAsNyArMjMwLDcgQEAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+
PiBGZXRjaEhlYWRlcnM6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICAgICAgaWYgKCF2YWx1ZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4geyBXVEZNb3ZlKGtleSksIFdURk1vdmUodmFsdWUpIH07CiAgICAgfQotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRmV0Y2hIZWFkZXJz
OjpJdGVyYXRvcjo6SXRlcmF0b3IoRmV0Y2hIZWFkZXJzJiBoZWFkZXJzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDQ5ZTVhNWI1MWYyZWQ2
YWFiM2ZiNzU1YTk4YmVmMGMxZDk0NjBjOTUuLjM0OGFiNDQyNDljZDkyYWRiMmU0N2UzN2MwNDI3
NmUyMDk4YTQ5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVx
dWVzdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0
TWV0aG9kKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbmkKICAgICBp
ZiAoaXNGb3JiaWRkZW5NZXRob2QoaW5pdE1ldGhvZCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJNZXRob2QgaXMgZm9yYmlkZGVuLiJfcyB9OwogICAgIHJlcXVlc3Qu
c2V0SFRUUE1ldGhvZChub3JtYWxpemVIVFRQTWV0aG9kKGluaXRNZXRob2QpKTsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBF
eGNlcHRpb25PcjxTdHJpbmc+IGNvbXB1dGVSZWZlcnJlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQpAQCAtMTE5LDcgKzExOSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBzdGF0aWMgYm9vbCBtZXRob2RDYW5IYXZlQm9keShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCkBAIC0yNzMsNyArMjczLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1
ZXN0OjpzZXRCb2R5KEZldGNoUmVxdWVzdCYgcmVxdWVzdCkKIAogRXhjZXB0aW9uT3I8UmVmPEZl
dGNoUmVxdWVzdD4+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEluZm8mJiBpbnB1dCwgSW5pdCYmIGluaXQpCiB7Ci0gICAgYXV0byByZXF1ZXN0
ID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgV1RGOjpudWxsb3B0LCBGZXRj
aEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwgeyB9LCB7IH0s
IHsgfSkpOworICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNv
bnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpH
dWFyZDo6UmVxdWVzdCksIHsgfSwgeyB9LCB7IH0pKTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oaW5wdXQpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVz
dC0+aW5pdGlhbGl6ZVdpdGgoV1RGOjpnZXQ8U3RyaW5nPihpbnB1dCksIFdURk1vdmUoaW5pdCkp
OwpAQCAtMzIyLDcgKzMyMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRj
aFJlcXVlc3Q6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAgICAgaWYgKGlz
RGlzdHVyYmVkT3JMb2NrZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJv
ciwgIkJvZHkgaXMgZGlzdHVyYmVkIG9yIGxvY2tlZCJfcyB9OwogCi0gICAgYXV0byBjbG9uZSA9
IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURjo6bnVsbG9wdCwgRmV0Y2hI
ZWFkZXJzOjpjcmVhdGUobV9oZWFkZXJzLmdldCgpKSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1
ZXN0IH0sIEZldGNoT3B0aW9ucyB7IG1fb3B0aW9uc30sIFN0cmluZyB7IG1fcmVmZXJyZXIgfSkp
OworICAgIGF1dG8gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBz
dGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291
cmNlUmVxdWVzdCB7IG1fcmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyBtX29wdGlvbnN9LCBTdHJp
bmcgeyBtX3JlZmVycmVyIH0pKTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICBj
bG9uZS0+bV9zaWduYWwtPnNpZ25hbEZvbGxvdyhtX3NpZ25hbCk7CiAgICAgcmV0dXJuIGNsb25l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5k
ZXggNmQyMjgzZjQ3ZDExOWQzYTRiNzI3ZWEzYzFiNjY1N2IzNmM2Yzk4MC4uY2VmZWZjNzNmYzI1
NmY3YTAxNTA2Yjc0NWUzMTc5YmE4N2ExZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPEZldGNoUmVzcG9uc2U+PiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb24KICAgICBpZiAobV9pbnRlcm5hbFJlc3BvbnNlLnR5cGUoKSA9PSBSZXNv
dXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KQogICAgICAgICBtX2ludGVybmFsUmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkcyhIVFRQSGVhZGVyTWFwIHsgaGVhZGVycygpLmludGVybmFsSGVh
ZGVycygpIH0pOwogCi0gICAgYXV0byBjbG9uZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250
ZXh0LCBXVEY6Om51bGxvcHQsIGhlYWRlcnMoKS5ndWFyZCgpLCBSZXNvdXJjZVJlc3BvbnNlIHsg
bV9pbnRlcm5hbFJlc3BvbnNlIH0pOworICAgIGF1dG8gY2xvbmUgPSBGZXRjaFJlc3BvbnNlOjpj
cmVhdGUoY29udGV4dCwgc3RkOjpudWxsb3B0LCBoZWFkZXJzKCkuZ3VhcmQoKSwgUmVzb3VyY2VS
ZXNwb25zZSB7IG1faW50ZXJuYWxSZXNwb25zZSB9KTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0
aGlzKTsKICAgICBjbG9uZS0+bV9vcGFxdWVMb2FkSWRlbnRpZmllciA9IG1fb3BhcXVlTG9hZElk
ZW50aWZpZXI7CiAgICAgY2xvbmUtPm1fYm9keVNpemVXaXRoUGFkZGluZyA9IG1fYm9keVNpemVX
aXRoUGFkZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0LmgKaW5kZXggMDhkYjE1NzM2YWQ3NjIyNjQyMDM1N2I1ZTYzZjY1ODdjNTAzZDQwMS4u
MGVkNDI3Yjc0MDA5ZjFkOTUzNjVkY2UxMzY4ZjY3ODFkODE2ZTZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTY4LDI4ICs2OCwy
OCBAQCBPcHRpb25hbDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7CiAgICAgZGVjb2RlciA+PiBs
ZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUg
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBWZWN0b3I8dWludDhfdD4gaGlnaGxpZ2h0OwogICAgIGhpZ2hsaWdodC5ncm93KCps
ZW5ndGgpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0
LmRhdGEoKSwgaGlnaGxpZ2h0LnNpemUoKSwgMSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxTdHJpbmc+PiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXNOZXdHcm91cCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBIaWdobGlnaHRSZXF1ZXN0T3Jp
Z2luYXRlZEluQXBwIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGhpZ2hsaWdodCkpLCBXVEZNb3ZlKCp0ZXh0KSwgaXNOZXdH
cm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmlu
ZGV4IDcxNGVhZWQ3ODBlZTM2NzNmYzAwNDYxNDU4NGVhYzRmNzQxZDE1Y2MuLjI5NWM1OGZhNmVl
YTA5ZTViNzQ2ZDYyZWMzYTFjNTE2NTU5YWZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAt
NjksMjIgKzY5LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hs
aWdodFJhbmdlRGF0YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlk
ZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5vZGVOYW1lOwogICAgIGRlY29k
ZXIgPj4gbm9kZU5hbWU7CiAgICAgaWYgKCFub2RlTmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gdGV4dERhdGE7CiAgICAgZGVjb2RlciA+PiB0ZXh0RGF0YTsKICAgICBpZiAoIXRleHRE
YXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKICAgICBkZWNvZGVy
ID4+IHBhdGhJbmRleDsKICAgICBpZiAoIXBhdGhJbmRleCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqbm9kZU5hbWUpLCBXVEZNb3ZlKCp0ZXh0RGF0
YSksICpwYXRoSW5kZXggfX07CiB9CkBAIC0xMDMsMjcgKzEwMywyNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJh
bmdlRGF0YTo6ZAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRl
eHQ7CiAgICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IHN0YXJ0Q29u
dGFpbmVyOwogICAgIGRlY29kZXIgPj4gc3RhcnRDb250YWluZXI7CiAgICAgaWYgKCFzdGFydENv
bnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9mZnNldDsKICAgICBk
ZWNvZGVyID4+IHN0YXJ0T2Zmc2V0OwogICAgIGlmICghc3RhcnRPZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxOb2RlUGF0aD4gZW5kQ29udGFpbmVyOwogICAgIGRlY29kZXIgPj4gZW5kQ29udGFp
bmVyOwogICAgIGlmICghZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVuZE9mZnNl
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFydENv
bnRhaW5lciksICpzdGFydE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9mZnNl
dCB9fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBw
SGlnaGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZGE0ZjcwYWMyZmM2MTY3MWY3N2E3N2IxNzA0Njc5
NjRiODlmMzk0ZC4uYWIzN2RkMjI4NTY5MjVmOWRkMTQ5M2EwYTc3ODAzOThjMDAxNDAyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHAKQEAgLTExNiwxNiArMTE2LDE2IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gZmluZFJhbmdlQnlJZGVudGlmeWluZ1N0YXJ0QW5kRW5kUG9zaXRpb25zKGNvbnN0
IEFwCiB7CiAgICAgYXV0byBzdGFydENvbnRhaW5lciA9IGZpbmROb2RlKHJhbmdlLnN0YXJ0Q29u
dGFpbmVyKCksIGRvY3VtZW50KTsKICAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBlbmRDb250YWluZXIgPSBmaW5kTm9kZShyYW5nZS5lbmRDb250YWluZXIoKSwgZG9jdW1l
bnQpOwogICAgIGlmICghZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFydCA9IG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbihzdGFydENvbnRhaW5lci5nZXQoKSwgcmFuZ2Uuc3RhcnRP
ZmZzZXQoKSk7CiAgICAgYXV0byBlbmQgPSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oZW5k
Q29udGFpbmVyLmdldCgpLCByYW5nZS5lbmRPZmZzZXQoKSk7CiAgICAgaWYgKHN0YXJ0LmlzT3Jw
aGFuKCkgfHwgZW5kLmlzT3JwaGFuKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdl
KHN0YXJ0LCBlbmQpOwogfQpAQCAtMTUwLDE0ICsxNTAsMTQgQEAgc3RhdGljIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBmaW5kUmFuZ2VCeVNlYXJjaGluZ1RleHQoY29uc3QgQXBwSGlnaGxpZ2h0UmFu
Z2VEYXQKICAgICB9CiAKICAgICBpZiAoIWZvdW5kRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZm91
bmRFbGVtZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmZvdW5kRWxl
bWVudCk7CiAgICAgYXV0byBmb3VuZFRleHQgPSBwbGFpblRleHQoZm91bmRFbGVtZW50UmFuZ2Up
OwogICAgIGlmIChhdXRvIGluZGV4ID0gZm91bmRUZXh0LmZpbmQocmFuZ2UudGV4dCgpKTsgaW5k
ZXggIT0gbm90Rm91bmQgJiYgaW5kZXggPT0gZm91bmRUZXh0LnJldmVyc2VGaW5kKHJhbmdlLnRl
eHQoKSkpCiAgICAgICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoZm91bmRFbGVtZW50
UmFuZ2UsIHsgaW5kZXgsIHJhbmdlLnRleHQoKS5sZW5ndGgoKSB9KTsKIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBmaW5kUmFuZ2UoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiBy
YW5nZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggOWU3NWM3MTk3ZmY5YjlkMmI1MTQ0ZmMzNGVlN2Iw
ZTNlMGNmOGIzZS4uZTA2NWE0ODQ4M2VmOGFmNTA5MzAxZjEyYjE0ZDk5OGViZmUyMTAwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0z
NjksNyArMzY5LDcgQEAgT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBJREJDdXJzb3I6Oml0ZXJhdGVX
aXRoUHJlZmV0Y2hlZFJlY29yZHModW5zaWduZWQgY291bnQsIHUKIHsKICAgICB1bnNpZ25lZCBz
dGVwID0gY291bnQgPiAwID8gY291bnQgOiAxOwogICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVk
UmVjb3Jkcy5zaXplKCkgfHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJh
dGlvbklEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgd2hpbGUgKC0tc3RlcCkKICAgICAgICAgbV9wcmVmZXRjaGVkUmVj
b3Jkcy5yZW1vdmVGaXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA0MmQ0YzBlMDE5ODk5Yjcw
ZWIwZTNkZGUyNmFmZGQ1OTU2YTRjYWI1Li5jMmYxNzA3NGU4ZWJiZWE2NTg3NDYyZTE4ZDYwY2Y5
MDQ4MDJlZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtMTIzLDE3ICsxMjMsMTcgQEAgT3B0aW9u
YWw8SURCRGF0YWJhc2VJZGVudGlmaWVyPiBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gZGF0YWJhc2VOYW1lOwogICAg
IGRlY29kZXIgPj4gZGF0YWJhc2VOYW1lOwogICAgIGlmICghZGF0YWJhc2VOYW1lKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47
CiAgICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsK
ICAgICBkZWNvZGVyID4+IGlzVHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2llbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBpZGVudGlmaWVyLm1f
ZGF0YWJhc2VOYW1lID0gV1RGTW92ZSgqZGF0YWJhc2VOYW1lKTsgLy8gRklYTUU6IFdoZW4gZGVj
b2RpbmcgZnJvbSBJUEMsIGRhdGFiYXNlTmFtZSBjYW4gYmUgbnVsbCwgYW5kIHRoZSBub24tZW1w
dHkgY29uc3RydWN0b3IgYXNzZXJ0cyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA0MzZm
ZTAxNWQ0MzliYzg2YzQxMTA4ZmMwNzg2YjUwNTY4MTZkMzc5Li4wNTQ0ZWYwNjZiMzRhNWUxZWVk
Yzk1Mzg1NjRiYzhhNzZmMjEzNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcApAQCAtNzksNyArNzksNyBAQCBFeGNlcHRpb25PcjxSZWY8
SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udAogICAgIGlmICh2ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0
aCBhIHZlcnNpb24gb2YgMCJfcyB9OwogCi0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0
LCBuYW1lLCB2ZXJzaW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29u
dGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJ
REJPcGVuREJSZXF1ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCBm
NmZhMWZmODExNDhhZjI4YzBiYzEwZjAxMzEyMGUwYzAwNzI2OWUzLi4wNDNlYzZiNmE3ZmI3ZjRl
NjBkNjQ1Y2Q5ZDVmYzdhNWMxNDcwM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0yNTUsMTMgKzI1NSwxMyBAQCBPcHRpb25hbDxJREJL
ZXlEYXRhPiBJREJLZXlEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJREJL
ZXlEYXRhIGtleURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXlEYXRhLm1faXNOdWxs
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChrZXlEYXRhLm1faXNOdWxsKQogICAgICAgICByZXR1cm4ga2V5RGF0
YTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5tX3R5cGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
c3dpdGNoIChrZXlEYXRhLm1fdHlwZSkgewogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJ
bnZhbGlkOgpAQCAtMjcxLDIzICsyNzEsMjMgQEAgT3B0aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6OkFycmF5OgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4o
KTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0
YT4+KGtleURhdGEubV92YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9
IFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RG
OjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KGtleURhdGEubV92YWx1ZSkpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAg
ICAgICAgIGtleURhdGEubV92YWx1ZSA9IFN0cmluZygpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKFdURjo6Z2V0PFN0cmluZz4oa2V5RGF0YS5tX3ZhbHVlKSkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAga2V5RGF0YS5tX3ZhbHVlID0g
MC4wOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PGRvdWJsZT4oa2V5RGF0
YS5tX3ZhbHVlKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaAppbmRleCA2NjEzMDI0MDc1N2U4
ZDViZmI2MjBhOGQwZTJiZjRmMjIyNjZlYmU4Li4yYTY2NDMyYjViZDk3MTkyYTFhYjRmZjYwOTBj
MGJlOTVkMjNiZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZh
bHVlLmgKQEAgLTcyLDEzICs3MiwxMyBAQCBPcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElEQlZhbHVlIHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2RhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV9ibG9iVVJMcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX2Jsb2JGaWxlUGF0aHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hh
bmdlRXZlbnQuY3BwCmluZGV4IDhhOWZkOGJlNDJiMjhiNWJiZjhkMmYyYjQ2ZDk0ZmNmYzA0MDA4
NjcuLjNmNzJjNzBjNmY1MTczZDgwNDBhOTE1YjAxM2YyZDE0M2M2MWM3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZl
cnNpb25DaGFuZ2VFdmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlcwogICAg
IGlmIChuZXdWZXJzaW9uKQogICAgICAgICBtX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwogICAg
IGVsc2UKLSAgICAgICAgbV9uZXdWZXJzaW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX25l
d1ZlcnNpb24gPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIElEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURC
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEluaXQmIGlu
aXQsIElzVHJ1c3RlZCBpc1RydXN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
LmNwcAppbmRleCBhMDU5YTBkOTUwYTc2Njg3NmEwZmZkMzJlZmEwZTE2Njk1NGU0MzA3Li5iNzNh
OWU4ZWZmZDk3NGI4ZjUzYjM4MzJkYTFlZjdmOTU3MDQxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZUN1cnNvci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3I6Ok1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RT
dG9yZSwKIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6b2JqZWN0U3RvcmVDbGVhcmVk
KCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleURlbGV0
ZWQoY29uc3QgSURCS2V5RGF0YSYga2V5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE1lbW9yeU9i
amVjdFN0b3JlQ3Vyc29yOjprZXlEZWxldGVkKGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICBp
ZiAobV9jdXJyZW50UG9zaXRpb25LZXkgIT0ga2V5KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleUFkZGVkKElEQktleURhdGFT
ZXQ6Oml0ZXJhdG9yIGl0ZXJhdG9yKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIE1lbW9yeU9iamVj
dFN0b3JlQ3Vyc29yOjprZXlBZGRlZChJREJLZXlEYXRhU2V0OjppdGVyYXRvciBpdGVyYXRvcikK
IAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rmlyc3RJblJlbWFpbmluZ1Jhbmdl
KElEQktleURhdGFTZXQmIHNldCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0Owor
ICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV9pbmZvLmlzRGlyZWN0
aW9uRm9yd2FyZCgpKSB7CiAgICAgICAgIHNldEZvcndhcmRJdGVyYXRvckZyb21SZW1haW5pbmdS
YW5nZShzZXQpOwpAQCAtOTMsMTkgKzkzLDE5IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0JiBzZXQpCiB2b2lkIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFu
Z2UoSURCS2V5RGF0YVNldCYgc2V0KQogewogICAgIGlmICghc2V0LnNpemUoKSkgewotICAgICAg
ICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFu
Z2UuaXNFeGFjdGx5T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1f
cmVtYWluaW5nUmFuZ2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0
LmVuZCgpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gbG93ZXN0ID0gc2V0Lmxvd2VyX2JvdW5kKG1fcmVtYWluaW5n
UmFuZ2UubG93ZXJLZXkpOwogICAgIGlmIChsb3dlc3QgPT0gc2V0LmVuZCgpKQpAQCAtMTMxLDE0
ICsxMzEsMTQgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJh
dG9yRnJvbVJlbWFpbmluZ1JhbmdlKElEQktleURhdGFTZXQKIHZvaWQgTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3I6OnNldFJldmVyc2VJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShJREJLZXlEYXRh
U2V0JiBzZXQpCiB7CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3Ig
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9yZW1haW5pbmdSYW5nZS5pc0V4YWN0bHlP
bmVLZXkoKSkgewogICAgICAgICBtX2l0ZXJhdG9yID0gc2V0LmZpbmQobV9yZW1haW5pbmdSYW5n
ZS5sb3dlcktleSk7CiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuZW5kKCkpCi0gICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRv
ciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ2LDEyICsx
NDYsMTIgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9y
RnJvbVJlbWFpbmluZ1JhbmdlKElEQktleURhdGFTZXQKICAgICBpZiAoIW1fcmVtYWluaW5nUmFu
Z2UudXBwZXJLZXkuaXNWYWxpZCgpKSB7CiAgICAgICAgIG1faXRlcmF0b3IgPSAtLXNldC5lbmQo
KTsKICAgICAgICAgaWYgKCFtX3JlbWFpbmluZ1JhbmdlLmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRv
cikpCi0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
bV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gVGhpcyBpcyBvbmUgcmVjb3JkIHBhc3QgdGhlIGFjdHVhbCBrZXkgd2Un
cmUgbG9va2luZyBmb3IuCiAgICAgYXV0byBoaWdoZXN0ID0gc2V0LnVwcGVyX2JvdW5kKG1fcmVt
YWluaW5nUmFuZ2UudXBwZXJLZXkpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgTWVtb3J5T2Jq
ZWN0U3RvcmVDdXJzb3I6OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcihJREJLZXlEYXRhU2V0JiBz
ZXQsIGNvbnN0CiAgICAgICAgICsrKm1faXRlcmF0b3I7CiAKICAgICAgICAgaWYgKCptX2l0ZXJh
dG9yID09IHNldC5lbmQoKSB8fCAhbV9pbmZvLnJhbmdlKCkuY29udGFpbnNLZXkoKiptX2l0ZXJh
dG9yKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1
cnNvcjo6aW5jcmVtZW50UmV2ZXJzZUl0ZXJhdG9yKElEQktleURhdGFTZXQmIHNldCwgY29uc3QK
IAogICAgIHdoaWxlIChjb3VudCkgewogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmJl
Z2luKCkpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
OjppbmNyZW1lbnRSZXZlcnNlSXRlcmF0b3IoSURCS2V5RGF0YVNldCYgc2V0LCBjb25zdAogICAg
ICAgICAtLSptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICghbV9pbmZvLnJhbmdlKCkuY29udGFp
bnNLZXkoKiptX2l0ZXJhdG9yKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IDQ2NTFkYTcxMmE2MjQzMDUyNTdlZWFkOTViNGQwMmYyYTdlNzkzZmEuLjIwNzE5
MDk2OTk0YTA5ZjY1MDU2ZDY1ZjdmMzAzYTJmNWNkMWFiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCkBAIC00OTIsNyArNDkyLDcgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdy
YWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1Rh
YmwKIAogICAgIFN0cmluZyB0YWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJP
YmplY3RTdG9yZUluZm8iX3MpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgaWYgKHRhYmxlU3RhdGVtZW50ID09IHYyT2JqZWN0U3RvcmVJbmZvU2NoZW1h
IHx8IHRhYmxlU3RhdGVtZW50ID09IGNyZWF0ZVYyT2JqZWN0U3RvcmVJbmZvU2NoZW1hKG9iamVj
dFN0b3JlSW5mb1RhYmxlTmFtZUFsdGVybmF0ZSkpCiAgICAgICAgIHJldHVybiB7IElzU2NoZW1h
VXBncmFkZWQ6Ok5vIH07CkBAIC01MDUsMjIgKzUwNSwyMiBAQCBPcHRpb25hbDxJc1NjaGVtYVVw
Z3JhZGVkPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZv
VGFibAogCiAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJP
YmplY3RTdG9yZUluZm9TY2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZv
IHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBt
X3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCFtX3NxbGl0
ZURCLT5leGVjdXRlQ29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jIEZST00gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBtaWdyYXRlIGV4aXN0aW5nIE9iamVjdFN0b3JlSW5mbyBjb250ZW50ICglaSkgLSAlcyIs
IG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJM
RSBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRy
b3AgZXhpc3RpbmcgT2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREIt
Pmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2Jq
ZWN0U3RvcmVJbmZvIFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IHJlbmFtZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxl
ICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CkBAIC05NDIs
MTcgKzk0MiwxNyBAQCBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUFuZFZlcnNpbwogICAgIFNRTGl0ZURhdGFiYXNl
IGRhdGFiYXNlOwogICAgIGlmICghZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVz
JyB3aGVuIGdldHRpbmcgZGF0YWJhc2UgbmFtZSIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJ
bmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIElEQkRhdGFiYXNl
SW5mbyB0YWJsZSBhbmQgZ2V0IGRhdGFiYXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0
RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8g
bmFtZXNxbCA9IGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2YWx1ZSBGUk9NIElE
QkRhdGFiYXNlSW5mbyBXSEVSRSBrZXkgPSAnRGF0YWJhc2VOYW1lJzsiX3MpOwogICAgIGlmICgh
bmFtZXNxbCkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHN0YXRlbWVu
dCB0byBnZXQgZGF0YWJhc2UgbmFtZSglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBk
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZGF0YWJhc2VOYW1l
ID0gbmFtZXNxbC0+Y29sdW1uVGV4dCgwKTsKIApAQCAtOTYxLDcgKzk2MSw3IEBAIE9wdGlvbmFs
PElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJh
c2VOYW1lQW5kVmVyc2lvCiAgICAgYXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8
dWludDY0X3Q+KHN0cmluZ1ZlcnNpb24pOwogICAgIGlmICghZGF0YWJhc2VWZXJzaW9uKSB7CiAg
ICAgICAgIExPR19FUlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5v
dCBjbGVhbmx5IGNvbnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIs
IHN0cmluZ1ZlcnNpb24udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCmluZGV4IDQ3ZGZmZmQ4ODhi
Y2NlZDM4MWI1MTgxNGU2MzI5Y2UwY2E2MGFhYmQuLjljMTBiNDMwMTMyMmQ5ZDVmMGY0YjVlNTZk
MTc5OTg0YjI4YjhjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaApA
QCAtNTEsMTAgKzUxLDEwIEBAIE9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb246OmRlY29kZShEZWNvZGVyJiBkCiAgICAgSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbiBpbmZvOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm5h
bWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZlcnNpb24pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIGluZm87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJFcnJvci5oCmluZGV4IGY1MmNlNGRkMDYzZWE1MDk5MzQ2NzVlNGVkZGU4
OTQzYWVmYTY3N2EuLjc0ZmNjNzQ3NGYwZDQ5MGMyNzJjODFjYzI1YTg0NjhjZDg1NWY3ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJy
b3IgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IElEQkVycm9yKE9wdGlv
bmFsPEV4Y2VwdGlvbkNvZGU+ID0gV1RGOjpudWxsb3B0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Ug
PSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IElEQkVycm9yKE9wdGlvbmFsPEV4
Y2VwdGlvbkNvZGU+ID0gc3RkOjpudWxsb3B0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0p
OwogCiAgICAgc3RhdGljIElEQkVycm9yIHVzZXJEZWxldGVFcnJvcigpCiAgICAgewpAQCAtODcs
NyArODcsNyBAQCBib29sIElEQkVycm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCRXJy
b3ImIGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBlcnJvci5tX2Nv
ZGUgPSBlYzsKICAgICB9IGVsc2UKLSAgICAgICAgZXJyb3IubV9jb2RlID0gV1RGOjpudWxsb3B0
OworICAgICAgICBlcnJvci5tX2NvZGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGVycm9yLm1fbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5oCmluZGV4IGNiYmIyMDY1ZGIwNDljZDlmZGE5MmNjYzM0MDIzNWQzMTQ1NzU2ZjMuLmJi
OTRmYTczNzMxZTY3ZDcxY2RlMjVkY2Q3MjQyNzEzMWM0YTEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApA
QCAtMTY1LDY3ICsxNjUsNjcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURC
UmVzdWx0RGF0YT4gSURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKIHsKICAgICBJREJS
ZXN1bHREYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JlcXVl
c3RJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZXJy
b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
cmVzdWx0SW50ZWdlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3R5
cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYm9vbCBoYXNPYmplY3Q7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVj
dCA9IG1ha2VVbmlxdWU8SURCRGF0YWJhc2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5m
byA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9
IG1ha2VVbmlxdWU8SURCVHJhbnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9u
SW5mbyA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVj
dCA9IG1ha2VVbmlxdWU8SURCS2V5RGF0YT4oKTsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0
YT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICgh
b3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgKm9iamVjdCA9IFdURk1vdmUoKm9wdGlvbmFs
KTsKICAgICAgICAgcmVzdWx0Lm1fcmVzdWx0S2V5ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0K
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2Jq
ZWN0KSB7CiAgICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmVzdWx0Lm1fZ2V0UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0KIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7CiAg
ICAgICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVz
dWx0Lm1fZ2V0QWxsUmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xz
SG9zdC5jcHAKaW5kZXggMmFmZTdlYmQ1ZWE1MjRjZWYwZTg3NWJhMmRjYTk2OGM3YWM0NWM0Ny4u
OWZiZmZjMTAwMDRlNDQxODQxNTgxMDcyM2Y5NWFmODQzY2U0NDNhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuY3BwCkBAIC01NDAsMTQgKzU0MCwxNCBAQCBib29sIE1lZGlhQ29udHJvbHNIb3N0OjpzaG93
TWVkaWFDb250cm9sc0NvbnRleHRNZW51KEhUTUxFbGVtZW50JiB0YXJnZXQsIFN0cmluZwogICAg
IFZlY3RvcjxNZW51SXRlbT4gaXRlbXM7CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCi0gICAgaWYgKG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlUGlj
dHVyZUluUGljdHVyZSJfcykudmFsdWVPcihmYWxzZSkpIHsKKyAgICBpZiAob3B0aW9uc0pTT05P
YmplY3QtPmdldEJvb2xlYW4oImluY2x1ZGVQaWN0dXJlSW5QaWN0dXJlIl9zKS52YWx1ZV9vcihm
YWxzZSkpIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWxlbWVu
dCkpOwogICAgICAgICBBU1NFUlQoZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbGVt
ZW50KS53ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6Vmlk
ZW9QcmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKSk7CiAgICAgICAgIGl0ZW1zLmFw
cGVuZChjcmVhdGVNZW51SXRlbShQaWN0dXJlSW5QaWN0dXJlVGFnOjpJbmNsdWRlUGljdHVyZUlu
UGljdHVyZSwgV0VCX1VJX1NUUklOR19LRVkoIlBpY3R1cmUgaW4gUGljdHVyZSIsICJQaWN0dXJl
IGluIFBpY3R1cmUgKE1lZGlhIENvbnRyb2xzIE1lbnUpIiwgIlBpY3R1cmUgaW4gUGljdHVyZSBt
ZWRpYSBjb250cm9scyBjb250ZXh0IG1lbnUgdGl0bGUiKSwgZmFsc2UsICJwaXAuZW50ZXIiX3Mp
KTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCi0g
ICAgaWYgKG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlTGFuZ3VhZ2VzIl9z
KS52YWx1ZU9yKGZhbHNlKSkgeworICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVh
bigiaW5jbHVkZUxhbmd1YWdlcyJfcykudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIGlmIChh
dXRvKiBhdWRpb1RyYWNrcyA9IG1lZGlhRWxlbWVudC5hdWRpb1RyYWNrcygpOyBhdWRpb1RyYWNr
cyAmJiBhdWRpb1RyYWNrcy0+bGVuZ3RoKCkgPiAxKSB7CiAgICAgICAgICAgICBWZWN0b3I8TWVu
dUl0ZW0+IGxhbmd1YWdlTWVudUl0ZW1zOwogCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBNZWRp
YUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYg
dGFyZ2V0LCBTdHJpbmcKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvcHRpb25zSlNPTk9i
amVjdC0+Z2V0Qm9vbGVhbigiaW5jbHVkZVN1YnRpdGxlcyJfcykudmFsdWVPcihmYWxzZSkpIHsK
KyAgICBpZiAob3B0aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oImluY2x1ZGVTdWJ0aXRsZXMi
X3MpLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICBpZiAoYXV0byogdGV4dFRyYWNrcyA9IG1l
ZGlhRWxlbWVudC50ZXh0VHJhY2tzKCk7IHRleHRUcmFja3MgJiYgdGV4dFRyYWNrcy0+bGVuZ3Ro
KCkpIHsKICAgICAgICAgICAgIFZlY3RvcjxNZW51SXRlbT4gc3VidGl0bGVNZW51SXRlbXM7CiAK
QEAgLTU5MSw3ICs1OTEsNyBAQCBib29sIE1lZGlhQ29udHJvbHNIb3N0OjpzaG93TWVkaWFDb250
cm9sc0NvbnRleHRNZW51KEhUTUxFbGVtZW50JiB0YXJnZXQsIFN0cmluZwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5V
UykKLSAgICBpZiAoKGl0ZW1zLnNpemUoKSA9PSAxICYmIGl0ZW1zWzBdLnR5cGUoKSA9PSBTdWJt
ZW51VHlwZSkgfHwgb3B0aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oInByb21vdGVTdWJNZW51
cyJfcykudmFsdWVPcihmYWxzZSkpIHsKKyAgICBpZiAoKGl0ZW1zLnNpemUoKSA9PSAxICYmIGl0
ZW1zWzBdLnR5cGUoKSA9PSBTdWJtZW51VHlwZSkgfHwgb3B0aW9uc0pTT05PYmplY3QtPmdldEJv
b2xlYW4oInByb21vdGVTdWJNZW51cyJfcykudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIGZv
ciAoYXV0byYmIGl0ZW0gOiBzdGQ6OmV4Y2hhbmdlKGl0ZW1zLCB7IH0pKSB7CiAgICAgICAgICAg
ICBpZiAoIWl0ZW1zLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoeyBT
ZXBhcmF0b3JUeXBlLCBpbnZhbGlkTWVudUl0ZW1JZGVudGlmaWVyLCAvKiB0aXRsZSAqLyBudWxs
U3RyaW5nKCkgfSk7CkBAIC02NTQsNyArNjU0LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6
c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcK
ICNpZiBVU0UoVUlDT05URVhUTUVOVSkKICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zaG93
TWVkaWFDb250cm9sc0NvbnRleHRNZW51KGJvdW5kcywgV1RGTW92ZShpdGVtcyksIFdURk1vdmUo
aGFuZGxlSXRlbVNlbGVjdGVkKSk7CiAjZWxpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgVVNF
KEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKLSAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgTWVkaWFDb250cm9sc0NvbnRleHRNZW51
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKE1lZGlhQ29udHJvbHNDb250ZXh0TWVudVByb3ZpZGVyOjpj
cmVhdGUoV1RGTW92ZShpdGVtcyksIFdURk1vdmUoaGFuZGxlSXRlbVNlbGVjdGVkKSkpLCB7IC8q
Y2FwdHVyZSAqLyB0cnVlLCAvKiBwYXNzaXZlICovIFdURjo6bnVsbG9wdCwgLyogb25jZSAqLyB0
cnVlIH0pOworICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jb250ZXh0
bWVudUV2ZW50LCBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVFdmVudExpc3RlbmVyOjpjcmVhdGUo
TWVkaWFDb250cm9sc0NvbnRleHRNZW51UHJvdmlkZXI6OmNyZWF0ZShXVEZNb3ZlKGl0ZW1zKSwg
V1RGTW92ZShoYW5kbGVJdGVtU2VsZWN0ZWQpKSksIHsgLypjYXB0dXJlICovIHRydWUsIC8qIHBh
c3NpdmUgKi8gc3RkOjpudWxsb3B0LCAvKiBvbmNlICovIHRydWUgfSk7CiAgICAgcGFnZS0+Y29u
dGV4dE1lbnVDb250cm9sbGVyKCkuc2hvd0NvbnRleHRNZW51QXQoKnRhcmdldC5kb2N1bWVudCgp
LmZyYW1lKCksIGJvdW5kcy5jZW50ZXIoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKaW5kZXggMzQzNDM0
MmU0MWY2NzFkYzI1MTY2NzA0NDVhNGRkOTgxNTIyMWE3MS4uYjg5ZDUxM2ZhMDVmY2NlNjc1Mjky
NzgxNmE1MWY0ZGZhYTk3MTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwYXVzZVJlY29yZGluZygpOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHJlc3VtZVJlY29yZGluZygpOwogCi0gICAgdW5zaWduZWQgdmlkZW9CaXRzUGVyU2Vj
b25kKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnZpZGVvQml0c1BlclNlY29uZC52YWx1ZU9y
KDApOyB9Ci0gICAgdW5zaWduZWQgYXVkaW9CaXRzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLmF1ZGlvQml0c1BlclNlY29uZC52YWx1ZU9yKDApOyB9CisgICAgdW5zaWduZWQg
dmlkZW9CaXRzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnZpZGVvQml0c1Bl
clNlY29uZC52YWx1ZV9vcigwKTsgfQorICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQudmFsdWVfb3IoMCk7
IH0KIAogICAgIE1lZGlhU3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbS5nZXQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFT
ZXNzaW9uLmNwcAppbmRleCA1ZDA0Njg1MDEwZTAxYjM5YjAyZTE3YTc3MGQ4MDQxMDVhYjY2YjE0
Li5lZmUwNTg4MDU5MWZhOTA2ODI3Mjk2ZjUzMTYyNTMwMWFhOTM5ODYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAg
LTI5OCw3ICsyOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb246OnNldFBvc2l0
aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmCiAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgInsgfSIpOwogCiAgICAgaWYgKCFzdGF0ZSkgewotICAgICAgICBt
X3Bvc2l0aW9uU3RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcG9zaXRpb25TdGF0ZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbm90aWZ5UG9zaXRpb25TdGF0ZU9ic2VydmVycygpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTMyMSw3ICszMjEsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVNlc3Npb246OnNldFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3Np
dGlvblN0YXRlPiYmCiBPcHRpb25hbDxkb3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0
aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9zaXRpb25TdGF0ZSB8fCAhbV9sYXN0UmVwb3J0
ZWRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYWN0dWFsUGxheWJhY2tSYXRlID0gbV9wbGF5YmFj
a1N0YXRlID09IE1lZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBsYXlpbmcgPyBtX3Bvc2l0aW9u
U3RhdGUtPnBsYXliYWNrUmF0ZSA6IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHAKaW5kZXggNDAyNmQ5YTQ0MTQ3ZTA2OTYwMjhlYzE2OTY1ZDRiYjVhYTMxY2FkOS4u
Yzg1MjQ1ZWRmZDFhYTY4NDAxMGE1ODE1ZjcwMzE5MzZhNzNlMGVkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpT
b3VyY2U6OnNldHRpbgogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPiBzZXR0aW5ncykKIHsKICAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OkhlaWdodCB9KSkKLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc1Jl
c2l6ZWQoQ2FudmFzQmFzZSYgY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNzZjYzU4NWE3MDU2
Yjk4NzliMmRjOWUxMDlhZjU3MDVlYmE3ZDZiZC4uOTJjOGRmOGJiMTFiMGQ2MWNiNzQ3NGQ0OWRm
YWE1NWVkNTZmZjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFsPE1lZGlhVHJh
Y2tDb25zdHJhaW50cz4mIGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBtX3Byb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFp
bnRzLnZhbHVlT3IoTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsgfSk7CisgICAgICAgIG1fY29uc3Ry
YWludHMgPSBjb25zdHJhaW50cy52YWx1ZV9vcihNZWRpYVRyYWNrQ29uc3RyYWludHMgeyB9KTsK
ICAgICB9OwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cyhjcmVhdGVNZWRpYUNvbnN0
cmFpbnRzKGNvbnN0cmFpbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGUuY3BwCmluZGV4IDljNDhlNWE0NmEwNjJmN2RmZTNhNmNiNmY1YTNiYjNmNWJmMTUxMjIuLjdj
MDU5MTM0YzA3ZjY5MzM5OWRmNDhhNDQ4MGU4OWIwODUxNTc0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKQEAg
LTU2LDcgKzU2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNhbmRpZGF0ZT4+IFJUQ0ljZUNh
bmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZUkKICAgICBpZiAoZGljdGlvbmFy
eS5zZHBNaWQuaXNOdWxsKCkgJiYgIWRpY3Rpb25hcnkuc2RwTUxpbmVJbmRleCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNhbmRpZGF0ZSBtdXN0IG5vdCBoYXZlIGJv
dGggbnVsbCBzZHBNaWQgYW5kIHNkcE1MaW5lSW5kZXgiIH07CiAKLSAgICBhdXRvIGZpZWxkcyA9
IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGRpY3Rpb25hcnkuY2FuZGlkYXRlKS52YWx1ZU9yKFJUQ0lj
ZUNhbmRpZGF0ZTo6RmllbGRzIHsgfSk7CisgICAgYXV0byBmaWVsZHMgPSBwYXJzZUljZUNhbmRp
ZGF0ZVNEUChkaWN0aW9uYXJ5LmNhbmRpZGF0ZSkudmFsdWVfb3IoUlRDSWNlQ2FuZGlkYXRlOjpG
aWVsZHMgeyB9KTsKICAgICBmaWVsZHMudXNlcm5hbWVGcmFnbWVudCA9IGRpY3Rpb25hcnkudXNl
cm5hbWVGcmFnbWVudDsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENJY2VDYW5kaWRhdGUo
ZGljdGlvbmFyeS5jYW5kaWRhdGUsIGRpY3Rpb25hcnkuc2RwTWlkLCBkaWN0aW9uYXJ5LnNkcE1M
aW5lSW5kZXgsIFdURk1vdmUoZmllbGRzKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAppbmRleCBmNjE0
MjVhY2QzZWNlNzkzNGRiMDNlMmY0YzNkZDZiOGI3MTFhZjQ5Li4zNjc2YWI0NWMyZDY5NGY1ZjY5
ZWJmODBkZjk5ZTdjMDZjMmNiZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtNzEsNyArNzEsNyBA
QCBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBSVENSdHBUcmFuc2NlaXZlcjo6ZGlyZWN0aW9u
KCkgY29uc3QKIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBSVENSdHBUcmFu
c2NlaXZlcjo6Y3VycmVudERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2JhY2tlbmQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+Y3VycmVudERpcmVjdGlvbigpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4IGNhMjJm
MGE4YzkzZGRlZTkyOTA1YTQxNzA5ZjQ3OWNiNjc1YmY1YTAuLmI2ODc4MDJiNjQ3NDQyYmEyYmQ0
ZjA0MTg5NTExODUzMjlkNjVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBMaWJXZWJSVENSdHBT
ZW5kZXJCYWNrZW5kOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBw
YXJhbWUKIAogICAgIGF1dG8gcnRjUGFyYW1ldGVycyA9IFdURk1vdmUoKm1fY3VycmVudFBhcmFt
ZXRlcnMpOwogICAgIHVwZGF0ZVJUQ1J0cFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMsIHJ0Y1Bh
cmFtZXRlcnMpOwotICAgIG1fY3VycmVudFBhcmFtZXRlcnMgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9jdXJyZW50UGFyYW1ldGVycyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZXJyb3IgPSBt
X3J0Y1NlbmRlci0+U2V0UGFyYW1ldGVycyhydGNQYXJhbWV0ZXJzKTsKICAgICBpZiAoIWVycm9y
Lm9rKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZl
ckJhY2tlbmQuY3BwCmluZGV4IGQzMjlmMGM5ZmIzMjQ3YzQyY2Q3N2M5NmQwYjlhODc3NmUwZDcy
NjIuLjYzZTRjZTcyMGMyOGJiMzUzZjM4ODM1MDZkZjM2NDA0M2JjZGI5MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAt
NTQsNyArNTQsNyBAQCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gTGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpjdXJyZW50RGlyZQogewogICAgIGF1dG8gdmFsdWUg
PSBtX3J0Y1RyYW5zY2VpdmVyLT5jdXJyZW50X2RpcmVjdGlvbigpOwogICAgIGlmICghdmFsdWUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHRvUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24oKnZhbHVlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXlt
ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1Bh
eW1lbnRSZXF1ZXN0LmNwcAppbmRleCBlYmJhODQ3NmM5NWM2NmNkOWJmMGQ3ZTM2OGRiNGU0M2Q0
YWQzMDJjLi45YjkwMjIwMGZkYzhhZDIxMzI0OGJhZmEzZGNiNzlmNmRkMzY3NWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRS
ZXF1ZXN0LmNwcApAQCAtMTgwLDEzICsxODAsMTMgQEAgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6
Ok1ldGhvZElkZW50aWZpZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGkK
ICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgaWYgKGlzVmFsaWRTdGFuZGFyZGl6
ZWRQYXltZW50TWV0aG9kSWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVy
biB7IGlkZW50aWZpZXIgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoaXNWYWxpZFVSTEJhc2VkUGF5
bWVudE1ldGhvZElkZW50aWZpZXIodXJsKSkKICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh1cmwp
IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIGVudW0gY2xhc3MgSXNVcGRhdGUgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBF
eGNlcHRpb25PcjxzdGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENh
bm9uaWNhbGl6ZURldGFpCiAgICAgICAgIH0gZWxzZSBpZiAoaXNVcGRhdGUgPT0gSXNVcGRhdGU6
Ok5vKQogICAgICAgICAgICAgZGV0YWlscy5zaGlwcGluZ09wdGlvbnMgPSB7IHsgfSB9OwogICAg
IH0gZWxzZSBpZiAoaXNVcGRhdGUgPT0gSXNVcGRhdGU6Ok5vKQotICAgICAgICBkZXRhaWxzLnNo
aXBwaW5nT3B0aW9ucyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgZGV0YWlscy5zaGlwcGluZ09w
dGlvbnMgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzZXJpYWxpemVkTW9k
aWZpZXJEYXRhOwogICAgIGlmIChkZXRhaWxzLm1vZGlmaWVycykgewpAQCAtNDUzLDcgKzQ1Myw3
IEBAIHZvaWQgUGF5bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKEV4Y2VwdGlvbk9yPFBh
eW1lbnRSZXNwb25zZSY+JiYgcmVzdWx0KQogCiB2b2lkIFBheW1lbnRSZXF1ZXN0OjpjbG9zZUFj
dGl2ZVBheW1lbnRIYW5kbGVyKCkKIHsKLSAgICBpZiAoYXV0byBhY3RpdmVQYXltZW50SGFuZGxl
ciA9IHN0ZDo6ZXhjaGFuZ2UobV9hY3RpdmVQYXltZW50SGFuZGxlciwgV1RGOjpudWxsb3B0KSkK
KyAgICBpZiAoYXV0byBhY3RpdmVQYXltZW50SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9hY3Rp
dmVQYXltZW50SGFuZGxlciwgc3RkOjpudWxsb3B0KSkKICAgICAgICAgYWN0aXZlUGF5bWVudEhh
bmRsZXItPnBheW1lbnRIYW5kbGVyLT5oaWRlKCk7CiAKICAgICBtX2lzVXBkYXRpbmcgPSBmYWxz
ZTsKQEAgLTUyOCw3ICs1MjgsNyBAQCBPcHRpb25hbDxQYXltZW50U2hpcHBpbmdUeXBlPiBQYXlt
ZW50UmVxdWVzdDo6c2hpcHBpbmdUeXBlKCkgY29uc3QKIHsKICAgICBpZiAobV9vcHRpb25zLnJl
cXVlc3RTaGlwcGluZykKICAgICAgICAgcmV0dXJuIG1fb3B0aW9ucy5zaGlwcGluZ1R5cGU7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIFBheW1lbnRSZXF1ZXN0OjpzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKFJlZjxQYXltZW50QWRk
cmVzcz4mJiBzaGlwcGluZ0FkZHJlc3MpCkBAIC03MzIsNyArNzMyLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gUGF5bWVudFJlcXVlc3Q6OmNvbXBsZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4m
JiByZXN1bHQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CiAKICAg
ICBhY3RpdmVQYXltZW50SGFuZGxlcigpLT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkpOwotICAg
IG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3RpdmVQYXlt
ZW50SGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC03NDgs
NyArNzQ4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OnJldHJ5KFBheW1l
bnRWYWxpZGF0aW9uRXJyb3JzJiYgZXJyb3JzKQogCiB2b2lkIFBheW1lbnRSZXF1ZXN0OjpjYW5j
ZWwoKQogewotICAgIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9hY3RpdmVQYXltZW50SGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX2lzVXBk
YXRpbmcpIHsKICAgICAgICAgbV9pc0NhbmNlbFBlbmRpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oCmlu
ZGV4IGRmMmQzMmY4YzY0YzllNGRiMGIzMGVkMzA3NGIwYmZkZWQ4N2IzYzIuLjc2MzRiZDAwMzMz
N2JiZmZiMjcxNmNmMDcyNDFlZmQwMjhiYjFiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKQEAgLTYwLDEyICs2
MCwxMiBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBTcGVlY2hSZWNvZ25pdGlv
bkVycm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcgogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5
cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2U7CiAgICAgZGVjb2RlciA+PiBt
ZXNzYWdlOwogICAgIGlmICghbWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gU3BlZWNoUmVj
b2duaXRpb25FcnJvciB7IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCptZXNzYWdlKSB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVj
b2duaXRpb25SZXF1ZXN0SW5mby5oCmluZGV4IGU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZk
OGFlYTNiYzYzNTguLjk0MjZjOTRjNzliNDM4MzhhZjMwN2Q5MmI3Zjc0MDNiNTcwNDhlZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hS
ZWNvZ25pdGlvblJlcXVlc3RJbmZvLmgKQEAgLTU2LDM3ICs1NiwzNyBAQCBPcHRpb25hbDxTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpk
ZWNvZGUoRGVjbwogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjbGllbnRJZGVu
dGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gbGFuZzsKICAgICBkZWNvZGVyID4+IGxhbmc7CiAgICAgaWYgKCFsYW5nKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gY29udGludW91czsKICAgICBkZWNvZGVyID4+IGNvbnRpbnVvdXM7
CiAgICAgaWYgKCFjb250aW51b3VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaW50ZXJpbVJl
c3VsdHM7CiAgICAgZGVjb2RlciA+PiBpbnRlcmltUmVzdWx0czsKICAgICBpZiAoIWludGVyaW1S
ZXN1bHRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1heEFsdGVybmF0aXZlczsKICAg
ICBkZWNvZGVyID4+IG1heEFsdGVybmF0aXZlczsKICAgICBpZiAoIW1heEFsdGVybmF0aXZlcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOwogICAgIGRlY29k
ZXIgPj4gY2xpZW50T3JpZ2luOwogICAgIGlmICghY2xpZW50T3JpZ2luKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBm
cmFtZUlkZW50aWZpZXI7CiAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sKICAgICAgICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0
RGF0YS5oCmluZGV4IDYxNDRkMWZmMDcwNjg5Y2FiYmI4MTZjNGZiYTI5NzIzYWE0M2YxYjIuLjVh
YTQ4NTIwY2I4ZjY3NzZkMzA1Mzg0ZDc0Njk0MTQzNzM1YzcwZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0
RGF0YS5oCkBAIC00NiwxMCArNDYsMTAgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZURhdGE+IFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhOjpkZWMKIHsKICAg
ICBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQudHJhbnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5jb25maWRlbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03
MywxMCArNzMsMTAgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVl
Y2hSZWNvZ25pdGlvblJlc3VsdERhdGE6OmRlY29kZShEZWNvZGUKIHsKICAgICBTcGVlY2hSZWNv
Z25pdGlvblJlc3VsdERhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmFsdGVybmF0aXZlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0Zp
bmFsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCA4OTE0
OTE3OTNmNGUwMWVjMmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0Li5jMjliYjI1YTMxNjRjNGExYzJl
MWFlMTJhOGI2MGJjOTA1NDM5NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTg0LDE3ICs4NCwxNyBA
QCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZT4gU3BlZWNoUmVjb2duaXRpb25VcGRh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZT4gdHlwZTsKICAgICBkZWNv
ZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29udGVudD4g
Y29udGVudDsKICAgICBkZWNvZGVyID4+IGNvbnRlbnQ7CiAgICAgaWYgKCFjb250ZW50KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgV1RGTW92ZSgqY2xpZW50SWRl
bnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpjb250ZW50KSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGJk
YzRiOWFmMmM1YWZmZjBjM2Q2ODY3NjQ5OGI1ZDdiOTc3NGU5ZDIuLmE2Yjg4MjBkYzFjZDNmN2I1
NDhlY2FmMzAzZDk0MTQ1YzJmNDEwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChSZWY8
UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVk
KTsKICNlbmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoT3B0aW9uYWw8U3BlZWNo
UmVjb2duaXRpb25FcnJvcj4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhYm9ydChPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmID0gc3RkOjpudWxs
b3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXgg
ZGM2ZjAyZDdhYTQ4YjUwNTYwODhkOGVjMDQ5OGEyMDI1Y2JlZDFiMi4uMDkyYzdkNmZmNGUwYmUw
Y2VlNzllOTlmYmZhNWE1NDQzMjgzMjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDYwLDcg
KzQ2MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRM
YXRlcihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2ZmCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0UGxheWluZyhkb3VibGUgd2hlbiwgZG91YmxlIGdyYWlu
T2Zmc2V0LCBPcHRpb25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ3aGVuID0gIiwg
d2hlbiwgIiwgb2Zmc2V0ID0gIiwgZ3JhaW5PZmZzZXQsICIsIGR1cmF0aW9uID0gIiwgZ3JhaW5E
dXJhdGlvbi52YWx1ZU9yKDApKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ3aGVu
ID0gIiwgd2hlbiwgIiwgb2Zmc2V0ID0gIiwgZ3JhaW5PZmZzZXQsICIsIGR1cmF0aW9uID0gIiwg
Z3JhaW5EdXJhdGlvbi52YWx1ZV9vcigwKSk7CiAKICAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9
IFVOU0NIRURVTEVEX1NUQVRFKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IsICJDYW5ub3QgY2FsbCBzdGFydCBtb3JlIHRoYW4gb25jZS4iX3MgfTsKQEAgLTQ4
MSw3ICs0ODEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0
YXJ0UGxheWluZyhkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluTwogCiAgICAgbV9pc0dyYWluID0g
dHJ1ZTsKICAgICBtX2dyYWluT2Zmc2V0ID0gZ3JhaW5PZmZzZXQ7Ci0gICAgbV9ncmFpbkR1cmF0
aW9uID0gZ3JhaW5EdXJhdGlvbi52YWx1ZU9yKDApOworICAgIG1fZ3JhaW5EdXJhdGlvbiA9IGdy
YWluRHVyYXRpb24udmFsdWVfb3IoMCk7CiAgICAgbV93YXNHcmFpbkR1cmF0aW9uR2l2ZW4gPSAh
IWdyYWluRHVyYXRpb247CiAgICAgbV9zdGFydFRpbWUgPSB3aGVuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggZmViYTMzMGVkMDIwYTdh
NjlhNDQzZjMyMmVkYWRkN2UxYTk2ZDZlYy4uMDYwNGY1YWM3OGZkNDc0ZDgyMTFlNDVhOWNjOTYx
MmUyZTBmY2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmNwcApAQCAtNjc0LDE1ICs2NzQsMTUgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExv
Y2soKQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmhhbmRsZUF1ZGlvTm9kZU9wdGlv
bnMoY29uc3QgQXVkaW9Ob2RlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgRGVmYXVsdEF1ZGlvTm9k
ZU9wdGlvbnMmIGRlZmF1bHRzKQogewotICAgIGF1dG8gcmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50
KG9wdGlvbnMuY2hhbm5lbENvdW50LnZhbHVlT3IoZGVmYXVsdHMuY2hhbm5lbENvdW50KSk7Cisg
ICAgYXV0byByZXN1bHQgPSBzZXRDaGFubmVsQ291bnQob3B0aW9ucy5jaGFubmVsQ291bnQudmFs
dWVfb3IoZGVmYXVsdHMuY2hhbm5lbENvdW50KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBy
ZXN1bHQgPSBzZXRDaGFubmVsQ291bnRNb2RlKG9wdGlvbnMuY2hhbm5lbENvdW50TW9kZS52YWx1
ZU9yKGRlZmF1bHRzLmNoYW5uZWxDb3VudE1vZGUpKTsKKyAgICByZXN1bHQgPSBzZXRDaGFubmVs
Q291bnRNb2RlKG9wdGlvbnMuY2hhbm5lbENvdW50TW9kZS52YWx1ZV9vcihkZWZhdWx0cy5jaGFu
bmVsQ291bnRNb2RlKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXN1bHQgPSBzZXRDaGFu
bmVsSW50ZXJwcmV0YXRpb24ob3B0aW9ucy5jaGFubmVsSW50ZXJwcmV0YXRpb24udmFsdWVPcihk
ZWZhdWx0cy5jaGFubmVsSW50ZXJwcmV0YXRpb24pKTsKKyAgICByZXN1bHQgPSBzZXRDaGFubmVs
SW50ZXJwcmV0YXRpb24ob3B0aW9ucy5jaGFubmVsSW50ZXJwcmV0YXRpb24udmFsdWVfb3IoZGVm
YXVsdHMuY2hhbm5lbEludGVycHJldGF0aW9uKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5l
LmNwcAppbmRleCA3YTA0YTVhZmI0OTJjMzI0M2RhMDgxZWFkNzcwNTYxZWVmYmJjNTdlLi41NGZj
YWJhNDUyNGZkMjg4MDdiMzc5MWU5ZTJmOTRiYzIwMDE5Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0y
NjIsNyArMjYyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5j
ZWxBbmRIb2xkQXRUaW1lKFNlY29uZHMgY2FuY2VsVGltZSkKICAgICAgICAgICAgIC8vIHdlIGdl
dCB0aGVyZS4KICAgICAgICAgICAgICsrY2FuY2VsbGVkRXZlbnRJbmRleDsKIAotICAgICAgICAg
ICAgbmV3RXZlbnQgPSBQYXJhbUV2ZW50OjpjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChjYW5jZWxU
aW1lLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgbmV3RXZlbnQgPSBQYXJhbUV2ZW50Ojpj
cmVhdGVDYW5jZWxWYWx1ZXNFdmVudChjYW5jZWxUaW1lLCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbEFuZEhvbGRBdFRpbWUoU2Vjb25kcyBj
YW5jZWxUaW1lKQogICAgICAgICAgICAgICAgIGZsb2F0IGVuZFZhbHVlID0gdmFsdWVDdXJ2ZUF0
VGltZShjYW5jZWxUaW1lLCBjYW5jZWxsZWRFdmVudC50aW1lKCksIGNhbmNlbGxlZEV2ZW50LmR1
cmF0aW9uKCksIGNhbmNlbGxlZEV2ZW50LmN1cnZlKCkuZGF0YSgpLCBjYW5jZWxsZWRFdmVudC5j
dXJ2ZSgpLnNpemUoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGlu
ZyBTZXRWYWx1ZUN1cnZlIHdpdGggdGhpcyBuZXcgb25lIHRoYXQgaXMgaWRlbnRpY2FsIGV4Y2Vw
dCBmb3IgdGhlIGR1cmF0aW9uLgotICAgICAgICAgICAgICAgIG5ld0V2ZW50ID0gUGFyYW1FdmVu
dCB7IGV2ZW50VHlwZSwgY2FuY2VsbGVkRXZlbnQudmFsdWUoKSwgY2FuY2VsbGVkRXZlbnQudGlt
ZSgpLCBjYW5jZWxsZWRFdmVudC50aW1lQ29uc3RhbnQoKSwgbmV3RHVyYXRpb24sIFZlY3Rvcjxm
bG9hdD4geyBjYW5jZWxsZWRFdmVudC5jdXJ2ZSgpIH0sIGNhbmNlbGxlZEV2ZW50LmN1cnZlUG9p
bnRzUGVyU2Vjb25kKCksIGVuZFZhbHVlLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgICAg
ICBuZXdFdmVudCA9IFBhcmFtRXZlbnQgeyBldmVudFR5cGUsIGNhbmNlbGxlZEV2ZW50LnZhbHVl
KCksIGNhbmNlbGxlZEV2ZW50LnRpbWUoKSwgY2FuY2VsbGVkRXZlbnQudGltZUNvbnN0YW50KCks
IG5ld0R1cmF0aW9uLCBWZWN0b3I8ZmxvYXQ+IHsgY2FuY2VsbGVkRXZlbnQuY3VydmUoKSB9LCBj
YW5jZWxsZWRFdmVudC5jdXJ2ZVBvaW50c1BlclNlY29uZCgpLCBlbmRWYWx1ZSwgc3RkOjpudWxs
b3B0IH07CiAgICAgICAgICAgICAgICAgbmV3U2V0VmFsdWVFdmVudCA9IFBhcmFtRXZlbnQ6OmNy
ZWF0ZVNldFZhbHVlRXZlbnQoZW5kVmFsdWUsIGNhbmNlbGxlZEV2ZW50LnRpbWUoKSArIG5ld0R1
cmF0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzI4LDEwICszMjgsMTAgQEAg
T3B0aW9uYWw8ZmxvYXQ+IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShC
YXNlQXVkaW9Db250ZXh0JiBjb250ZXgKIHsKICAgICB7CiAgICAgICAgIGlmICghbV9ldmVudHNM
b2NrLnRyeUxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRM
b2NrLCBtX2V2ZW50c0xvY2sgfTsKICAgICAgICAgaWYgKCFtX2V2ZW50cy5zaXplKCkgfHwgU2Vj
b25kcyB7IGNvbnRleHQuY3VycmVudFRpbWUoKSB9IDwgbV9ldmVudHNbMF0udGltZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQXNrIGZvciBqdXN0IGEgc2luZ2xlIHZhbHVlLgpAQCAt
OTA0LDE3ICs5MDQsMTcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmhhbmRsZUNhbmNlbFZh
bHVlcyhQYXJhbUV2ZW50JiBldmVudCwgUGFyYW1FdmVudCogbmV4dEUKIAogYXV0byBBdWRpb1Bh
cmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVlRXZlbnQoZmxvYXQgdmFsdWUs
IFNlY29uZHMgdGltZSkgLT4gUGFyYW1FdmVudAogewotICAgIHJldHVybiBQYXJhbUV2ZW50IHsg
UGFyYW1FdmVudDo6U2V0VmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9y
PGZsb2F0PiB7IH0sIDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiBQYXJhbUV2ZW50
IHsgUGFyYW1FdmVudDo6U2V0VmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVj
dG9yPGZsb2F0PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFy
YW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlTGluZWFyUmFtcEV2ZW50KGZsb2F0IHZhbHVl
LCBTZWNvbmRzIHRpbWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4geyBQYXJhbUV2ZW50
OjpMaW5lYXJSYW1wVG9WYWx1ZSwgdmFsdWUsIHRpbWUsIDAsIFNlY29uZHMgeyB9LCBWZWN0b3I8
ZmxvYXQ+IHsgfSwgMCwgMCwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgUGFyYW1FdmVu
dDo6TGluZWFyUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9y
PGZsb2F0PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1U
aW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlRXhwb25lbnRpYWxSYW1wRXZlbnQoZmxvYXQgdmFs
dWUsIFNlY29uZHMgdGltZSkgLT4gUGFyYW1FdmVudAogewotICAgIHJldHVybiB7IFBhcmFtRXZl
bnQ6OkV4cG9uZW50aWFsUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwg
VmVjdG9yPGZsb2F0PiB7IH0sIDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBh
cmFtRXZlbnQ6OkV4cG9uZW50aWFsUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRz
IHsgfSwgVmVjdG9yPGZsb2F0PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRv
IEF1ZGlvUGFyYW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlU2V0VGFyZ2V0RXZlbnQoZmxv
YXQgdGFyZ2V0LCBTZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCkgLT4gUGFyYW1FdmVu
dApAQCAtOTIyLDE0ICs5MjIsMTQgQEAgYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZl
bnQ6OmNyZWF0ZVNldFRhcmdldEV2ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcwogICAgIC8vIFRo
ZSB0aW1lIGxpbmUgY29kZSBkb2VzIG5vdCBleHBlY3QgYSB0aW1lQ29uc3RhbnQgb2YgMC4gKEl0
IHJldHVybnMgTmFOIG9yIEluZmluaXR5IGR1ZSB0byBkaXZpc2lvbiBieSB6ZXJvLiBUaGUgY2Fs
bGVyCiAgICAgLy8gc2hvdWxkIGhhdmUgY29udmVydGVkIHRoaXMgdG8gYSBTZXRWYWx1ZUV2ZW50
LgogICAgIEFTU0VSVCghIXRpbWVDb25zdGFudCk7Ci0gICAgcmV0dXJuIHsgUGFyYW1FdmVudDo6
U2V0VGFyZ2V0LCB0YXJnZXQsIHRpbWUsIHRpbWVDb25zdGFudCwgU2Vjb25kcyB7IH0sIFZlY3Rv
cjxmbG9hdD4geyB9LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBQYXJhbUV2
ZW50OjpTZXRUYXJnZXQsIHRhcmdldCwgdGltZSwgdGltZUNvbnN0YW50LCBTZWNvbmRzIHsgfSwg
VmVjdG9yPGZsb2F0PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlv
UGFyYW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlU2V0VmFsdWVDdXJ2ZUV2ZW50KFZlY3Rv
cjxmbG9hdD4mJiBjdXJ2ZSwgU2Vjb25kcyB0aW1lLCBTZWNvbmRzIGR1cmF0aW9uKSAtPiBQYXJh
bUV2ZW50CiB7CiAgICAgZG91YmxlIGN1cnZlUG9pbnRzUGVyU2Vjb25kID0gKGN1cnZlLnNpemUo
KSAtIDEpIC8gZHVyYXRpb24udmFsdWUoKTsKICAgICBmbG9hdCBjdXJ2ZUVuZFZhbHVlID0gY3Vy
dmUubGFzdCgpOwotICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OlNldFZhbHVlQ3VydmUsIDAsIHRp
bWUsIDAsIGR1cmF0aW9uLCBXVEZNb3ZlKGN1cnZlKSwgY3VydmVQb2ludHNQZXJTZWNvbmQsIGN1
cnZlRW5kVmFsdWUsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OlNl
dFZhbHVlQ3VydmUsIDAsIHRpbWUsIDAsIGR1cmF0aW9uLCBXVEZNb3ZlKGN1cnZlKSwgY3VydmVQ
b2ludHNQZXJTZWNvbmQsIGN1cnZlRW5kVmFsdWUsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRv
IEF1ZGlvUGFyYW1UaW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQo
U2Vjb25kcyBjYW5jZWxUaW1lLCBPcHRpb25hbDxTYXZlZEV2ZW50PiYmIHNhdmVkRXZlbnQpIC0+
IFBhcmFtRXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMjA3MGZjN2MxMDk4MTFlZDkz
MzZlNTEwZjlkYmY2ZjM4MzM2YjExNy4uZDQ2ZDgzODUxYmQwYWEzMWU3M2ZkZDQzODQ3ZWQyODE3
MGRmMzk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lk
IEF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpoYW5kbGVQb3N0UmVuZGVyVGFza3Moc2l6ZV90IGN1
cnJlbnRGcmFtZSkKICAgICAgICAgLy8gZXhwbGljaXRseSBhbGxvdyB0aGUgZm9sbG93aW5nIGFs
bG9jYXRpb24ocykuCiAgICAgICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50
VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKICAgICAgICAgLy8gVGhpcyB0
YWtlcyBjYXJlIG9mIHByb2Nlc3NpbmcgdGhlIE1pY3JvVGFzayBxdWV1ZSBhZnRlciByZW5kZXJp
bmcuCi0gICAgICAgIG1fbG9ja0R1cmluZ1JlbmRlcmluZyA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV9sb2NrRHVyaW5nUmVuZGVyaW5nID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApp
bmRleCBmYWI3N2E5M2JjYzMxMjFkZmEyODhjMTgyOGQyM2U1NTU4ZGY5ZmI5Li4zMmZhMmNjNjli
YmU0MjI3ZWU5N2JiOTRhOTRjMTA1OWQ1MDJjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE2LDcgKzExNiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CiAKICAgICAv
LyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHZvaWQgZGVjb2Rl
QXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBPcHRpb25hbDxSZWY8RGVmZXJyZWRQ
cm9taXNlPj4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoUmVm
PEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEF1
ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIE9wdGlvbmFsPFJlZjxEZWZlcnJlZFByb21pc2U+PiYmID0g
c3RkOjpudWxsb3B0KTsKIAogICAgIEF1ZGlvTGlzdGVuZXImIGxpc3RlbmVyKCkgeyByZXR1cm4g
bV9saXN0ZW5lcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNzI4YmI5
Mjg2YTM1NWQwMDdkOWNiMDE4MTM1Y2Y2YzE5MzRiMWE3OC4uYjYwYzIyYTM3MWM1ZjkyODU0YmZj
MzZlMGM1YzgzNjdjNjQ3NWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAogRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSkKLSAgICA6IEF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUudmFsdWVPcihBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2Fy
ZVNhbXBsZVJhdGUoKSkpCisgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlLnZhbHVlX29yKEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKSkK
IHsKICAgICBBU1NFUlQoQmFzZUF1ZGlvQ29udGV4dDo6aXNTdXBwb3J0ZWRTYW1wbGVSYXRlKEF1
ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKSk7CiAgICAgaW5pdGlhbGl6ZURl
ZmF1bHROb2RlT3B0aW9ucygyLCBDaGFubmVsQ291bnRNb2RlOjpFeHBsaWNpdCwgQ2hhbm5lbElu
dGVycHJldGF0aW9uOjpTcGVha2Vycyk7CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWwKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiQXVkaW9EZXN0aW5hdGlvbk5vZGUgaXMgbm90IGluaXRpYWxp
emVkIl9zIH0pOwogCiAgICAgYXV0byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgbXV0
YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBXVEY6Om51bGxvcHQg
OiBtYWtlT3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8g
c3RhcnQgdGhlIGF1ZGlvIGRldmljZSJfcyB9KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN1Y2Nlc3MgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gc3RhcnQgdGhlIGF1ZGlvIGRldmljZSJfcyB9
KSk7CiAgICAgfTsKIAogICAgIG1fd2FzRGVzdGluYXRpb25TdGFydGVkID0gdHJ1ZTsKQEAgLTE3
Myw3ICsxNzMsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aQogICAgIH0KICAgICBtX3dhc0Rl
c3RpbmF0aW9uU3RhcnRlZCA9IHRydWU7CiAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlzcGF0
Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdWNjZXNzID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZp
Y2UiX3MgfSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8gc3RkOjpudWxs
b3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAi
RmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOwogICAgIH0pOwogfQogCkBA
IC0xODksNyArMTg5LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3Bl
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHQKIAogICAgIG1fd2FzRGVz
dGluYXRpb25TdGFydGVkID0gZmFsc2U7CiAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcChbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBt
dXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IFdURjo6bnVsbG9w
dCA6IG1ha2VPcHRpb25hbChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0
byBzdG9wIHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdWNjZXNzID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0b3AgdGhlIGF1ZGlvIGRldmljZSJfcyB9
KSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGU1ZTQ3ODU4
YTAxNjAyYmE2ODIyNDEyNDE4MjFkN2M4NTJjZWZhNWYuLjhjZjE0ODkzZWM1YzNkZWZhNGQ5MGUw
OGE1NGIzZDNmZDBkZjA3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwogY2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlLCBwdWJsaWMgQXVk
aW9JT0NhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIE9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gV1RG
OjpudWxsb3B0KTsKKyAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0JiwgT3B0aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKIAogICAgIEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGFlZmUyYTg0MzZk
MzY1ZTE4NjgxMzI2N2UzOGFjODYxNzRiYmZlZjUuLjdjYmE0MWM5M2MzN2JiZGZhYjYwMDk0N2Mx
ODEzMTA1MjJiMWE1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTE0MSwx
MiArMTQxLDEyIEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRl
cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAgICAgIHdvcmtsZXRQcm94
eS0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoW29mZlRocmVhZFJlbmRlcmlu
ZyA9IFdURk1vdmUob2ZmVGhyZWFkUmVuZGVyaW5nKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IG11dGFibGUgewogICAgICAgICAgICAgb2ZmVGhyZWFkUmVuZGVyaW5nKCk7CiAgICAgICAgIH0s
IFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJs
eSBsaW1pdCB0aGUgbnVtYmVyIG9mIHRocmVhZHMgd2UgY3JlYXRlIGZvciBvZmZsaW5lIGF1ZGlv
LgogICAgIG1fcmVuZGVyVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIm9mZmxpbmUgcmVuZGVyZXIi
LCBXVEZNb3ZlKG9mZlRocmVhZFJlbmRlcmluZyksIFRocmVhZFR5cGU6OkF1ZGlvLCBUaHJlYWQ6
OlFPUzo6RGVmYXVsdCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogCiBhdXRvIE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyT25BdWRpb1RocmVhZCgpIC0+IFJlbmRlclJlc3VsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlv
bkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKaW5kZXggZGJiZWUzM2Iz
NzRlM2JlMmU1MDE1ZGU3NWVhMGY2MzhkNGExNzc5NS4uOWRmYmNmYTU2ZjQxZTE5MTVmYzk5NWY0
ZmE0MzA3YjQ3MDQ2ZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElu
cHV0cy5oCkBAIC01MywxMyArNTMsMTMgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzPiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnAKICAgICBP
cHRpb25hbDxTdHJpbmc+IGFwcGlkOwogICAgIGRlY29kZXIgPj4gYXBwaWQ7CiAgICAgaWYgKCFh
cHBpZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXN1bHQuYXBwaWQgPSBXVEZNb3ZlKCphcHBpZCk7CiAKICAgICBPcHRp
b25hbDxib29sPiBnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CiAgICAgZGVjb2RlciA+PiBnb29n
bGVMZWdhY3lBcHBpZFN1cHBvcnQ7CiAgICAgaWYgKCFnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0Lmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IFdURk1vdmUoKmdvb2ds
ZUxlZ2FjeUFwcGlkU3VwcG9ydCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UuY3BwCmluZGV4IDFjMGMwNDFlY2IzN2U5MTgxNjZhNWFiM2VjMDRk
OWVkZmFiNWUwZTkuLjBiZjIzZjAyODU2YjgwMDc1YWRjNmFjMDlkZGU3NGUxZWYzODNhZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpjcmVhdGUoY29uc3QKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJoYW5kbGVC
dWZmZXI7CiAgICAgaWYgKCF1c2VySGFuZGxlLmlzRW1wdHkoKSkKICAgICAgICAgdXNlcmhhbmRs
ZUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5k
bGUuc2l6ZSgpKTsKLSAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQu
ZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JE
YXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxl
QnVmZmVyKSwgV1RGOjpudWxsb3B0KTsKKyAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpj
cmVhdGUocmF3SWQuZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1
dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlC
dWZmZXI6OmNyZWF0ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92
ZSh1c2VyaGFuZGxlQnVmZmVyKSwgc3RkOjpudWxsb3B0KTsKIH0KIAogUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRs
ZSwgU3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaAppbmRleCAyNzY0MmU4YmIyNTQ0NjdlZDU1ODI0MTkyODNiNjk3ZjM0
NWI2YWFiLi42MWExYmJiMDI0YTZmYTUwMzFiYzEwOTRiODIzZDgxNTdmNzY0ZWJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25z
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaApAQCAtMTIxLDUxICsxMjEsNTEgQEAgT3B0aW9uYWw8QXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YT4gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBPcHRpb25hbDxib29sPiBpc0VtcHR5OwogICAgIGRlY29kZXIgPj4gaXNFbXB0
eTsKICAgICBpZiAoIWlzRW1wdHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGlzRW1wdHkudmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIHJlc3VsdC5yYXdJZCA9IGRlY29kZUFycmF5QnVmZmVy
KGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0LnJhd0lkKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9v
bD4gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKICAgICBkZWNvZGVyID4+IGlz
QXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgaWYgKCFpc0F1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRl
c3RhdGlvblJlc3BvbnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS52YWx1
ZSgpOwogCiAgICAgaWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
KSB7CiAgICAgICAgIHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVy
KGRlY29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHJlc3VsdC5hdXRoZW50
aWNhdG9yRGF0YSA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0
LmF1dGhlbnRpY2F0b3JEYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmVzdWx0LnNpZ25hdHVyZSA9IGRlY29kZUFy
cmF5QnVmZmVyKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0LnNpZ25hdHVyZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiBhcHBpZDsKICAgICBkZWNvZGVyID4+IGFwcGlkOwog
ICAgIGlmICghYXBwaWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmFwcGlkID0gV1RGTW92ZSgqYXBwaWQpOwog
CiAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzVXNlckhhbmRsZTsKICAgICBkZWNvZGVyID4+IGhhc1Vz
ZXJIYW5kbGU7CiAgICAgaWYgKCFoYXNVc2VySGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghKmhhc1VzZXJI
YW5kbGUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICByZXN1bHQudXNlckhhbmRsZSA9
IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0LnVzZXJIYW5kbGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaAppbmRleCBiYmU5MjIxMDY3MzdiZGVjMzMxYmE4NjhiZTdhYWZkN2Q0ZDBiMmUz
Li43Mjg0MDY3NDkzN2YyOTRmYjMyNWVjNmE4ODU2NmI4OWYyZmQwMjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaApAQCAtMTAxLDkgKzEwMSw5IEBAIE9wdGlvbmFs
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhCiB7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
czo6UGFyYW1ldGVycyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlw
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWxnKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xMjEsMTcgKzEyMSwxNyBAQCBPcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+
IFB1YgogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Pj4gYXV0
aGVudGljYXRvckF0dGFjaG1lbnQ7CiAgICAgZGVjb2RlciA+PiBhdXRoZW50aWNhdG9yQXR0YWNo
bWVudDsKICAgICBpZiAoIWF1dGhlbnRpY2F0b3JBdHRhY2htZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5h
dXRoZW50aWNhdG9yQXR0YWNobWVudCA9IFdURk1vdmUoKmF1dGhlbnRpY2F0b3JBdHRhY2htZW50
KTsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHJlcXVpcmVSZXNpZGVudEtleTsKICAgICBkZWNvZGVy
ID4+IHJlcXVpcmVSZXNpZGVudEtleTsKICAgICBpZiAoIXJlcXVpcmVSZXNpZGVudEtleSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXN1bHQucmVxdWlyZVJlc2lkZW50S2V5ID0gKnJlcXVpcmVSZXNpZGVudEtleTsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXJWZXJpZmljYXRpb24pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE1MCw0NyArMTUwLDQ3IEBAIE9wdGlvbmFsPFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM6CiB7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyByZXN1
bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucnAuaWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJwLm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnJwLmljb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVz
ZXIuaWRWZWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuZGlz
cGxheU5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIubmFtZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5pY29uKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVkPj4gdGltZW91dDsKICAgICBkZWNvZGVyID4+IHRpbWVv
dXQ7CiAgICAgaWYgKCF0aW1lb3V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC50aW1lb3V0ID0gV1RGTW92ZSgq
dGltZW91dCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leGNsdWRlQ3JlZGVu
dGlhbHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlv
bkNyaXRlcmlhPj4gYXV0aGVudGljYXRvclNlbGVjdGlvbjsKICAgICBkZWNvZGVyID4+IGF1dGhl
bnRpY2F0b3JTZWxlY3Rpb247CiAgICAgaWYgKCFhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZSgqYXV0aGVudGljYXRv
clNlbGVjdGlvbik7CiAKICAgICBPcHRpb25hbDxBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJl
bmNlPiBhdHRlc3RhdGlvbjsKICAgICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uOwogICAgIGlmICgh
YXR0ZXN0YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmF0dGVzdGF0aW9uID0gV1RGTW92ZSgqYXR0ZXN0
YXRpb24pOwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25z
Q2xpZW50SW5wdXRzPj4gZXh0ZW5zaW9uczsKICAgICBkZWNvZGVyID4+IGV4dGVuc2lvbnM7CiAg
ICAgaWYgKCFleHRlbnNpb25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5leHRlbnNpb25zID0gV1RGTW92ZSgq
ZXh0ZW5zaW9ucyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvci5oCmluZGV4IDljNWI1MWNhYzNmNGQ3NDkzMzVmNWFhNGFhZDBkZDBkNDZlMTg1MmIuLjMy
YmI3MjhhYmU4MTY2OTUyY2Q1OTc1MWNjYThkOTRmOGM2ZGZkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRp
YWxEZXNjcmlwdG9yLmgKQEAgLTU3LDExICs1NywxMSBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVk
ZW50aWFsRGVzY3JpcHRvcj4gUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6OmRlY29kZShE
ZQogewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5pZFZlY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHJh
bnNwb3J0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmgKaW5kZXggY2UxNDA4NDE3Yjc5MGM1YmQ5ZDVmMWU3MjRkYjRmYTVj
YWI1ZTM3Ny4uZWEyNTJhNGYzMzVhNjI0NDNmMWJiYTViOGVlMDdiZWY5NzFlZjc2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC02NiwyNCArNjYsMjQgQEAgT3B0
aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnM6OmQKICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHRp
bWVvdXQ7CiAgICAgZGVjb2RlciA+PiB0aW1lb3V0OwogICAgIGlmICghdGltZW91dCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQudGltZW91dCA9IFdURk1vdmUoKnRpbWVvdXQpOwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucnBJZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
YWxsb3dDcmVkZW50aWFscykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQ+IHVzZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB1c2VyVmVyaWZpY2F0
aW9uOwogICAgIGlmICghdXNlclZlcmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNlclZlcmlm
aWNhdGlvbiA9IFdURk1vdmUoKnVzZXJWZXJpZmljYXRpb24pOwogCiAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPj4gZXh0ZW5zaW9uczsK
ICAgICBkZWNvZGVyID4+IGV4dGVuc2lvbnM7CiAgICAgaWYgKCFleHRlbnNpb25zKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC5leHRlbnNpb25zID0gV1RGTW92ZSgqZXh0ZW5zaW9ucyk7CiAKICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1
L0FwZHVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9B
cGR1Q29tbWFuZC5jcHAKaW5kZXggOTU4YjMyNzY3ODViMjg2MDhmNzU5MWJjMjZmMjc1ZDY3MTBl
MjhjMi4uNzNkMjYzZmMyMmM5MWVkMDNkMWY5M2I2MjhmMGY4ODdjMzVjYTRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIHVpbnQxNl90IHBhcnNlTWVzc2FnZUxlbmd0aChjb25zdCBWZWN0
b3I8dWludDhfdD4mIG1lc3NhZ2UsIHNpemVfdCBvZmZzZXQpCiBPcHRpb25hbDxBcGR1Q29tbWFu
ZD4gQXBkdUNvbW1hbmQ6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
bWVzc2FnZSkKIHsKICAgICBpZiAobWVzc2FnZS5zaXplKCkgPCBrQXBkdU1pbkhlYWRlciB8fCBt
ZXNzYWdlLnNpemUoKSA+IGtBcGR1TWF4TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDhfdCBjbGEgPSBt
ZXNzYWdlWzBdOwogICAgIHVpbnQ4X3QgaW5zID0gbWVzc2FnZVsxXTsKQEAgLTY3LDEyICs2Nywx
MiBAQCBPcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6OmNyZWF0ZUZyb21NZXNzYWdl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzcwogICAgIC8vIEludmFsaWQgZW5jb2Rpbmcgc2l6
ZXMuCiAgICAgY2FzZSBrQXBkdU1pbkhlYWRlciArIDE6CiAgICAgY2FzZSBrQXBkdU1pbkhlYWRl
ciArIDI6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgLy8gTm8gZGF0YSBwcmVzZW50OyByZXNwb25zZSBleHBlY3RlZC4KICAg
ICBjYXNlIGtBcGR1TWluSGVhZGVyICsgMzoKICAgICAgICAgLy8gRmlmdGggYnl0ZSBtdXN0IGJl
IDAuCiAgICAgICAgIGlmIChtZXNzYWdlWzRdKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3BvbnNl
TGVuZ3RoID0gcGFyc2VNZXNzYWdlTGVuZ3RoKG1lc3NhZ2UsIGtBcGR1Q29tbWFuZExlbmd0aE9m
ZnNldCk7CiAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVyZSByZXNwb25zZSBsZW5ndGggb2Yg
MHgwMDAwIGNvcnJlc3BvbmRzIHRvIDY1NTM2CiAgICAgICAgIC8vIGFzIGRlZmluZWQgaW4gSVNP
NzgxNi00LgpAQCAtODIsNyArODIsNyBAQCBPcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1h
bmQ6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzcwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIC8vIEZpZnRoIGJ5dGUgbXVzdCBiZSAwLgogICAgICAgICBpZiAobWVz
c2FnZVs0XSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSBwYXJzZU1lc3Nh
Z2VMZW5ndGgobWVzc2FnZSwga0FwZHVDb21tYW5kTGVuZ3RoT2Zmc2V0KTsKIAogICAgICAgICBp
ZiAobWVzc2FnZS5zaXplKCkgPT0gZGF0YUxlbmd0aCArIGtBcGR1Q29tbWFuZERhdGFPZmZzZXQp
IHsKQEAgLTk4LDcgKzk4LDcgQEAgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpj
cmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3MKICAgICAgICAgICAg
IGlmICghcmVzcG9uc2VMZW5ndGgpCiAgICAgICAgICAgICAgICAgcmVzcG9uc2VMZW5ndGggPSBr
QXBkdU1heFJlc3BvbnNlTGVuZ3RoOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAKaW5kZXggNGViNzQ3NWIyMmY1YjFiNTMwYTM1OWVj
ZTU1MDdmMmQyYzRhZjYzOC4uOTNhNWZhYWQ0YzE1ZDU1ZGNiNzdmN2U4MmU4MDQwMDMzOTk4Yjcz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVS
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0Fw
ZHVSZXNwb25zZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgT3B0aW9uYWw8QXBkdVJlc3BvbnNlPiBB
cGR1UmVzcG9uc2U6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGEK
IHsKICAgICAvLyBJbnZhbGlkIG1lc3NhZ2Ugc2l6ZSwgZGF0YSBpcyBhcHBlbmRlZCBieSBzdGF0
dXMgYnl0ZS4KICAgICBpZiAoZGF0YS5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDE2X3Qgc3Rh
dHVzQnl0ZXMgPSBkYXRhW2RhdGEuc2l6ZSgpIC0gMl0gPDwgODsKICAgICBzdGF0dXNCeXRlcyB8
PSBkYXRhW2RhdGEuc2l6ZSgpIC0gMV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRlci5jcHAKaW5kZXggNTlkNmM0MjExMTI0YmE0OGZlZDIz
ODExOTViOGFmMTNmMmUyODY4Yy4uZWU1ODMyMGFlMzhlOWExOWM0MjZkOWQ2ZGJmMGFhNzY3ZDcz
ZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NC
T1JSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9D
Qk9SUmVhZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JS
ZWFkZXI6OnJlYWQoY29uc3QgQnl0ZXMmIGRhdGEsIERlY29kZXJFcnJvciogZXJyb3JDb2RlTwog
ICAgICAgICAqZXJyb3JDb2RlT3V0ID0gcmVhZGVyLmdldEVycm9yQ29kZSgpOwogCiAgICAgaWYg
KHJlYWRlci5nZXRFcnJvckNvZGUoKSAhPSBEZWNvZGVyRXJyb3I6OkNCT1JOb0Vycm9yKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBkZWNvZGVkQ2JvcjsKIH0KIApAQCAtOTksMTIgKzk5LDEyIEBAIE9wdGlvbmFs
PENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlQ0JPUihpbnQgbWF4TmVzdGluZ0xldmVsKQog
ewogICAgIGlmIChtYXhOZXN0aW5nTGV2ZWwgPCAwIHx8IG1heE5lc3RpbmdMZXZlbCA+IGtDQk9S
TWF4RGVwdGgpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OlRvb011Y2hO
ZXN0aW5nOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghY2FuQ29uc3VtZSgxKSkgewogICAgICAgICBt
X2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGNvbnN0IHVpbnQ4X3QgaW5pdGlhbEJ5dGUgPSAqbV9pdCsrOwpAQCAtMTEzLDcgKzEx
Myw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlQ0JPUihpbnQgbWF4
TmVzdGluZ0xldmVsKQogCiAgICAgdWludDY0X3QgdmFsdWU7CiAgICAgaWYgKCFyZWFkVmFyaWFk
aWNMZW5ndGhJbnRlZ2VyKGFkZGl0aW9uYWxJbmZvLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNo
IChtYWpvcl90eXBlKSB7CiAgICAgY2FzZSBDQk9SVmFsdWU6OlR5cGU6OlVuc2lnbmVkOgpAQCAt
MTM1LDcgKzEzNSw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlQ0JP
UihpbnQgbWF4TmVzdGluZ0xldmVsKQogICAgIH0KIAogICAgIG1fZXJyb3JDb2RlID0gRGVjb2Rl
ckVycm9yOjpVbnN1cHBvcnRlZE1ham9yVHlwZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQ0JPUlJlYWRlcjo6cmVhZFZhcmlh
ZGljTGVuZ3RoSW50ZWdlcih1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCogdmFsdWUp
CkBAIC0xNzgsNyArMTc4LDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNv
ZGVWYWx1ZVRvTmVnYXRpdmUodWludDY0X3QgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID4gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSkg
ewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6T3V0T2ZSYW5nZUludGVnZXJW
YWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIENCT1JWYWx1ZSgtc3RhdGljX2Nhc3Q8aW50NjRf
dD4odmFsdWUpIC0gMSk7CiB9CkBAIC0xODcsNyArMTg3LDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVl
PiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvVW5zaWduZWQodWludDY0X3QgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50NjRfdD46Om1heCgpKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6
T3V0T2ZSYW5nZUludGVnZXJWYWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIENCT1JWYWx1ZShz
dGF0aWNfY2FzdDxpbnQ2NF90Pih2YWx1ZSkpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRp
b25hbEluZm8sIHVpbnQ2NF90CiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcmUgbm90
IHN1cHBvcnRlZC4KICAgICBpZiAoYWRkaXRpb25hbEluZm8gPiAyNCAmJiBhZGRpdGlvbmFsSW5m
byA8IDI4KSB7CiAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpVbnN1cHBvcnRl
ZEZsb2F0aW5nUG9pbnRWYWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBU1NFUlQodmFsdWUgPD0gMjU1
dSk7CkBAIC0yMTEsMTQgKzIxMSwxNCBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6
OnJlYWRTaW1wbGVWYWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdAogICAgIH0K
IAogICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpVbnN1cHBvcnRlZFNpbXBsZVZhbHVl
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51
bUJ5dGVzKQogewogICAgIGlmICghY2FuQ29uc3VtZShudW1CeXRlcykpIHsKICAgICAgICAgbV9l
cnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29tcGxldGVDQk9SRGF0YTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBBU1NFUlQobnVtQnl0ZXMgPD0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CkBAIC0yMjksMTQgKzIyOSwxNCBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6
OnJlYWRTdHJpbmcodWludDY0X3QgbnVtQnl0ZXMpCiAgICAgLy8gTm90IHRvIGNvbmZ1c2UgaXQg
d2l0aCBhbiBhY3R1YWwgZW1wdHkgV1RGU3RyaW5nLgogICAgIGlmICghbnVtQnl0ZXMgfHwgaGFz
VmFsaWRVVEY4Rm9ybWF0KGNib3JTdHJpbmcpKQogICAgICAgICByZXR1cm4gQ0JPUlZhbHVlKFdU
Rk1vdmUoY2JvclN0cmluZykpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFk
Qnl0ZXModWludDY0X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYgKCFjYW5Db25zdW1lKG51bUJ5dGVz
KSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JE
YXRhOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIEJ5dGVzIGNib3JCeXRlU3RyaW5nOwpAQCAtMjUzLDcgKzI1
Myw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50
NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2CiAgICAgd2hpbGUgKGxlbmd0aC0tID4gMCkg
ewogICAgICAgICBPcHRpb25hbDxDQk9SVmFsdWU+IGNib3JFbGVtZW50ID0gZGVjb2RlQ0JPUiht
YXhOZXN0aW5nTGV2ZWwgLSAxKTsKICAgICAgICAgaWYgKCFjYm9yRWxlbWVudCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBjYm9yQXJyYXkuYXBwZW5kKFdURk1vdmUoY2JvckVsZW1lbnQudmFsdWUoKSkp
OwogICAgIH0KICAgICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckFycmF5KSk7CkBAIC0y
NjYsMTUgKzI2NiwxNSBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRDQk9S
TWFwKHVpbnQ2NF90IGxlbmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbAogICAgICAgICBPcHRpb25h
bDxDQk9SVmFsdWU+IGtleSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CiAgICAg
ICAgIE9wdGlvbmFsPENCT1JWYWx1ZT4gdmFsdWUgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZl
bCAtIDEpOwogICAgICAgICBpZiAoIWtleSB8fCAhdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAvLyBPbmx5IENCT1IgbWFwcyB3aXRoIGludGVnZXIgb3Igc3RyaW5nIHR5cGUga2V5cyBhcmUg
YWxsb3dlZC4KICAgICAgICAgaWYgKCFrZXktPmlzU3RyaW5nKCkgJiYgIWtleS0+aXNJbnRlZ2Vy
KCkpIHsKICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpJbmNvcnJlY3RN
YXBLZXlUeXBlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjaGVja0R1cGxp
Y2F0ZUtleShrZXkudmFsdWUoKSwgY2Jvck1hcCkgfHwgIWNoZWNrT3V0T2ZPcmRlcktleShrZXku
dmFsdWUoKSwgY2Jvck1hcCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBjYm9yTWFwLmVtcGxhY2Uo
c3RkOjptYWtlX3BhaXIoV1RGTW92ZShrZXkudmFsdWUoKSksIFdURk1vdmUodmFsdWUudmFsdWUo
KSkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Ni
b3IvQ0JPUldyaXRlci5jcHAKaW5kZXggNzY5YjI3MjcxYjA3ZGVmNjdjYmJmMGExMjlhZDk0YzUx
NDJhOTdjOC4uOGNlZjRlYWJjYzlmMzBlNmViODBiMWVhNjgxYzI4NTNiYjM2MzExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3JpdGVyLmNw
cApAQCAtNDcsNyArNDcsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENCT1JXcml0ZXI6
OndyaXRlKGNvbnN0IENCT1JWYWx1ZSYgbm9kZSwgc2l6ZV90IG1heE5lcwogICAgIENCT1JXcml0
ZXIgd3JpdGVyKCZjYm9yKTsKICAgICBpZiAod3JpdGVyLmVuY29kZUNCT1Iobm9kZSwgc3RhdGlj
X2Nhc3Q8aW50PihtYXhOZXN0aW5nTGV2ZWwpKSkKICAgICAgICAgcmV0dXJuIGNib3I7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQk9S
V3JpdGVyOjpDQk9SV3JpdGVyKFZlY3Rvcjx1aW50OF90PiogY2JvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENv
bnZlcnRlci5oCmluZGV4IGE4OTc2ZTBjOTA0OGMzYmEzODIxYmNmZGNjZDJlNjQ1MjA5ZTZkNzgu
Ljc5ZjJhOGFmOWY3ODVlNWU2ZmZmMGYwYWZmYjU1NDBlYmU3MzBkM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVl
c3RDb252ZXJ0ZXIuaApAQCAtNTAsMTIgKzUwLDEyIEBAIHN0cnVjdCBQaW5QYXJhbWV0ZXJzIHsK
IC8vIFNlcmlhbGl6ZXMgTWFrZUNyZWRlbnRpYWwgcmVxdWVzdCBwYXJhbWV0ZXIgaW50byBDQk9S
IGVuY29kZWQgbWFwIHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNvZGVkIHZhbHVl
cyBhcyBkZWZpbmVkIGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5v
cmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0
b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JNYWtlQ3JlZGVu
dGlhbAotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFs
UmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6
OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9y
dGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFy
YW1ldGVycz4gcGluID0gV1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50
OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFp
bGFiaWxpdHksIHN0ZDo6b3B0aW9uYWw8UGluUGFyYW1ldGVycz4gPSBzdGQ6Om51bGxvcHQpOwog
CiAvLyBTZXJpYWxpemVzIEdldEFzc2VydGlvbiByZXF1ZXN0IHBhcmFtZXRlciBpbnRvIENCT1Ig
ZW5jb2RlZCBtYXAgd2l0aAogLy8gaW50ZWdlciBrZXlzIGFuZCBDQk9SIGVuY29kZWQgdmFsdWVz
IGFzIGRlZmluZWQgYnkgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9y
Zy9zcGVjcy9maWRvLXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRv
ci1wcm90b2NvbC12Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvckdldEFzc2VydGlv
bgotV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVl
c3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0
aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVy
cz4gcGluID0gV1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBl
bmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0
aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHks
IHN0ZDo6b3B0aW9uYWw8UGluUGFyYW1ldGVycz4gPSBzdGQ6Om51bGxvcHQpOwogCiAvLyBSZXBy
ZXNlbnRzIENUQVAgcmVxdWVzdHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcKIC8v
IEF1dGhlbnRpY2F0b3JHZXRJbmZvLCBBdXRoZW50aWNhdG9yUmVzZXQgYW5kIEF1dGhlbnRpY2F0
b3JHZXROZXh0QXNzZXJ0aW9uIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5j
cHAKaW5kZXggOGQzNGJlOTNkMWJlNDgxM2E3YTliMzg1NWJhNGNhMWYwNGNmNjg4Ny4uN2YwZjY3
OTY5MTM3NzczMmNkY2NlNTZmYTI4MGZkZjZiNDlkMzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VD
b252ZXJ0ZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgc3RhdGljIFByb3RvY29sVmVyc2lvbiBj
b252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogT3B0
aW9uYWw8Y2Jvcjo6Q0JPUlZhbHVlPiBkZWNvZGVSZXNwb25zZU1hcChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGluQnVmZmVyKQogewogICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNl
Q29kZUxlbmd0aCB8fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNw
b25zZUNvZGU6OmtTdWNjZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKICAg
ICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVyLnNpemUoKSAtIDEp
OwogICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6
OnJlYWQoYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3Bv
bnNlLT5pc01hcCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBkZWNvZGVkUmVzcG9uc2U7CiB9CiAKQEAgLTIw
MywxNiArMjAzLDE2IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJl
YWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiB7CiAgICAgYXV0byBkZWNv
ZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1h
cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjb25zdCBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRNYXAtPmdldE1hcCgp
OwogCiAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUigxKSk7CiAgICAgaWYgKGl0
ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQXJyYXkoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBT
dGRTZXQ8UHJvdG9jb2xWZXJzaW9uPiBwcm90b2NvbFZlcnNpb25zOwogICAgIGZvciAoY29uc3Qg
YXV0byYgdmVyc2lvbiA6IGl0LT5zZWNvbmQuZ2V0QXJyYXkoKSkgewogICAgICAgICBpZiAoIXZl
cnNpb24uaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gcHJvdG9jb2wgPSBj
b252ZXJ0U3RyaW5nVG9Qcm90b2NvbFZlcnNpb24odmVyc2lvbi5nZXRTdHJpbmcoKSk7CiAgICAg
ICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2NvbFZlcnNpb246OmtVbmtub3duKSB7CkBAIC0yMjEs
MjYgKzIyMSwyNiBAQCBPcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFk
Q1RBUEdldEluZm9SZXNwb25zZShjb25zdCBWZWN0b3I8dWludAogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFwcm90b2NvbFZlcnNpb25zLmluc2VydChwcm90b2NvbCkuc2Vjb25kKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogICAgIGlmIChwcm90b2NvbFZlcnNpb25zLmVtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
dCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUigzKSk7CiAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFw
LmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpIHx8IGl0LT5zZWNvbmQuZ2V0Qnl0
ZVN0cmluZygpLnNpemUoKSAhPSBhYWd1aWRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBdXRoZW50aWNhdG9y
R2V0SW5mb1Jlc3BvbnNlIHJlc3BvbnNlKFdURk1vdmUocHJvdG9jb2xWZXJzaW9ucyksIFZlY3Rv
cjx1aW50OF90PihpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKSkpOwogCiAgICAgaXQgPSByZXNw
b25zZU1hcC5maW5kKENCT1IoMikpOwogICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkg
ewogICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNBcnJheSgpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uczsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBl
eHRlbnNpb24gOiBpdC0+c2Vjb25kLmdldEFycmF5KCkpIHsKICAgICAgICAgICAgIGlmICghZXh0
ZW5zaW9uLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBleHRl
bnNpb25zLmFwcGVuZChleHRlbnNpb24uZ2V0U3RyaW5nKCkpOwogICAgICAgICB9CkBAIC0yNTEs
MTIgKzI1MSwxMiBAQCBPcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFk
Q1RBUEdldEluZm9SZXNwb25zZShjb25zdCBWZWN0b3I8dWludAogICAgIGl0ID0gcmVzcG9uc2VN
YXAuZmluZChDQk9SKDQpKTsKICAgICBpZiAoaXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKICAg
ICAgICAgaWYgKCFpdC0+c2Vjb25kLmlzTWFwKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY29uc3Qg
YXV0byYgb3B0aW9uTWFwID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKICAgICAgICAgYXV0byBvcHRp
b25NYXBJdCA9IG9wdGlvbk1hcC5maW5kKENCT1Ioa1BsYXRmb3JtRGV2aWNlTWFwS2V5KSk7CiAg
ICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRpb25NYXAuZW5kKCkpIHsKICAgICAgICAgICAg
IGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jvb2woKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgICAgIG9wdGlvbnMuc2V0SXNQbGF0Zm9ybURldmljZShvcHRpb25NYXBJdC0+c2Vj
b25kLmdldEJvb2woKSk7CiAgICAgICAgIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBPcHRpb25hbDxB
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25z
dCBWZWN0b3I8dWludAogICAgICAgICBvcHRpb25NYXBJdCA9IG9wdGlvbk1hcC5maW5kKENCT1Io
a1Jlc2lkZW50S2V5TWFwS2V5KSk7CiAgICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRpb25N
YXAuZW5kKCkpIHsKICAgICAgICAgICAgIGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jvb2wo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIG9wdGlvbnMuc2V0U3VwcG9ydHNS
ZXNpZGVudEtleShvcHRpb25NYXBJdC0+c2Vjb25kLmdldEJvb2woKSk7CiAgICAgICAgIH0KQEAg
LTI3Miw3ICsyNzIsNyBAQCBPcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiBy
ZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25zdCBWZWN0b3I8dWludAogICAgICAgICBvcHRpb25N
YXBJdCA9IG9wdGlvbk1hcC5maW5kKENCT1Ioa1VzZXJQcmVzZW5jZU1hcEtleSkpOwogICAgICAg
ICBpZiAob3B0aW9uTWFwSXQgIT0gb3B0aW9uTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpZiAo
IW9wdGlvbk1hcEl0LT5zZWNvbmQuaXNCb29sKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBvcHRpb25zLnNldFVzZXJQcmVzZW5jZVJlcXVpcmVkKG9wdGlvbk1hcEl0LT5zZWNv
bmQuZ2V0Qm9vbCgpKTsKICAgICAgICAgfQpAQCAtMjgwLDcgKzI4MCw3IEBAIE9wdGlvbmFsPEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0
IFZlY3Rvcjx1aW50CiAgICAgICAgIG9wdGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQoQ0JPUihr
VXNlclZlcmlmaWNhdGlvbk1hcEtleSkpOwogICAgICAgICBpZiAob3B0aW9uTWFwSXQgIT0gb3B0
aW9uTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbk1hcEl0LT5zZWNvbmQuaXNC
b29sKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAob3B0aW9uTWFwSXQt
PnNlY29uZC5nZXRCb29sKCkpCiAgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXRVc2VyVmVyaWZp
Y2F0aW9uQXZhaWxhYmlsaXR5KEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC0yOTEs
NyArMjkxLDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENU
QVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAgICAgb3B0aW9uTWFwSXQg
PSBvcHRpb25NYXAuZmluZChDQk9SKGtDbGllbnRQaW5NYXBLZXkpKTsKICAgICAgICAgaWYgKG9w
dGlvbk1hcEl0ICE9IG9wdGlvbk1hcC5lbmQoKSkgewogICAgICAgICAgICAgaWYgKCFvcHRpb25N
YXBJdC0+c2Vjb25kLmlzQm9vbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
aWYgKG9wdGlvbk1hcEl0LT5zZWNvbmQuZ2V0Qm9vbCgpKQogICAgICAgICAgICAgICAgIG9wdGlv
bnMuc2V0Q2xpZW50UGluQXZhaWxhYmlsaXR5KEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25z
OjpDbGllbnRQaW5BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRQaW5TZXQpOwpAQCAtMzA0LDcg
KzMwNCw3IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQ
R2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgaXQgPSByZXNwb25zZU1hcC5m
aW5kKENCT1IoNSkpOwogICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkgewogICAgICAg
ICBpZiAoIWl0LT5zZWNvbmQuaXNVbnNpZ25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmVz
cG9uc2Uuc2V0TWF4TXNnU2l6ZShpdC0+c2Vjb25kLmdldFVuc2lnbmVkKCkpOwogICAgIH0KQEAg
LTMxMiwxMiArMzEyLDEyIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+
IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgaXQgPSByZXNw
b25zZU1hcC5maW5kKENCT1IoNikpOwogICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkg
ewogICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNBcnJheSgpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHN1cHBvcnRlZFBpblByb3RvY29sczsKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwcm90b2NvbCA6IGl0LT5zZWNvbmQuZ2V0QXJyYXkoKSkgewogICAgICAgICAg
ICAgaWYgKCFwcm90b2NvbC5pc1Vuc2lnbmVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBzdXBwb3J0ZWRQaW5Qcm90b2NvbHMuYXBwZW5kKHByb3RvY29sLmdldFVuc2lnbmVk
KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAppbmRleCBiMTJkYWVmZWUxNGU1MTJiNGZmNGE3
NGExMjYxMDQxZDczNTlkNmQ4Li4wNTUzZmNiM2QwMWQwZDI0MDZjNTc1ODM4ODdlMzNhOGQwNWNk
YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlk
b0hpZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9GaWRvSGlkTWVzc2FnZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIGZpZG8gewog
T3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9IaWRNZXNzYWdlOjpjcmVhdGUodWludDMyX3Qg
Y2hhbm5lbElkLCBGaWRvSGlkRGV2aWNlQ29tbWFuZCB0eXBlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID4ga0hpZE1heE1lc3NhZ2VTaXplKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6
a1Bpbmc6CkBAIC01MCwzMCArNTAsMzAgQEAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9I
aWRNZXNzYWdlOjpjcmVhdGUodWludDMyX3QgY2hhbm5lbElkLCBGaWRvSGlkRGV2aWMKICAgICBj
YXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprTXNnOgogICAgIGNhc2UgRmlkb0hpZERldmljZUNv
bW1hbmQ6OmtDYm9yOiB7CiAgICAgICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjpr
Q2FuY2VsOgogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtXaW5rOiB7CiAgICAgICAg
IGlmICghZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtMb2NrOiB7CiAgICAgICAgIGlmIChkYXRh
LnNpemUoKSAhPSAxIHx8IGRhdGFbMF0gPiBrSGlkTWF4TG9ja1NlY29uZHMpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtJ
bml0OiB7CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSAhPSA4KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprS2VlcEFsaXZl
OgogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtFcnJvcjoKICAgICAgICAgaWYgKGRh
dGEuc2l6ZSgpICE9IDEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gRmlkb0hpZE1l
c3NhZ2UoY2hhbm5lbElkLCB0eXBlLCBkYXRhKTsKQEAgLTg0LDEyICs4NCwxMiBAQCBPcHRpb25h
bDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0
YShjb25zdCBWZWN0b3I8dQogewogICAgIHNpemVfdCByZW1haW5pbmdTaXplID0gMDsKICAgICBp
ZiAoc2VyaWFsaXplZERhdGEuc2l6ZSgpID4ga0hpZFBhY2tldFNpemUgfHwgc2VyaWFsaXplZERh
dGEuc2l6ZSgpIDwga0hpZEluaXRQYWNrZXRIZWFkZXJTaXplKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBpbml0
UGFja2V0ID0gRmlkb0hpZEluaXRQYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YShzZXJp
YWxpemVkRGF0YSwgJnJlbWFpbmluZ1NpemUpOwogCiAgICAgaWYgKCFpbml0UGFja2V0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIEZpZG9IaWRNZXNzYWdlKFdURk1vdmUoaW5pdFBhY2tldCksIHJlbWFpbmlu
Z1NpemUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL1Bpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNw
cAppbmRleCA5NzlkNDc0N2I5M2I1NTJmZGY1MjIyYzkwOTY5NDk2NGE1M2MxNzBlLi4yM2YzYTU2
NjlmNmEwNWFjOGRiYTBkMTIzMTM2NWMxMTEzMzUwNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcApAQCAtODMsMTAgKzgzLDEwIEBAIFZlY3Rvcjx1
aW50OF90PiBlbmNvZGVSYXdQdWJsaWNLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB4LCBjb25z
dCBWZWN0b3I8dWludDhfCiBPcHRpb25hbDxDU3RyaW5nPiB2YWxpZGF0ZUFuZENvbnZlcnRUb1VU
RjgoY29uc3QgU3RyaW5nJiBwaW4pCiB7CiAgICAgaWYgKCFoYXNBdExlYXN0Rm91ckNvZGVwb2lu
dHMocGluKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBhdXRvIHJlc3VsdCA9IHBpbi51dGY4KCk7CiAgICAgaWYgKHJlc3Vs
dC5sZW5ndGgoKSA8IGtNaW5CeXRlcyB8fCByZXN1bHQubGVuZ3RoKCkgPiBrTWF4Qnl0ZXMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTE2LDEyICsxMTYsMTIgQEAgT3B0aW9uYWw8
UmV0cmllc1Jlc3BvbnNlPiBSZXRyaWVzUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgaW5CdWZmZXIKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1h
cChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnN0IGF1dG8mIHJl
c3BvbnNlTWFwID0gZGVjb2RlZE1hcC0+Z2V0TWFwKCk7CiAKICAgICBhdXRvIGl0ID0gcmVzcG9u
c2VNYXAuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oUmVzcG9uc2VLZXk6OmtS
ZXRyaWVzKSkpOwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29u
ZC5pc1Vuc2lnbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZXRyaWVzUmVzcG9uc2UgcmV0OwogICAgIHJldC5y
ZXRyaWVzID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGl0LT5zZWNvbmQuZ2V0VW5zaWduZWQoKSk7
CkBAIC0xMzcsMTMgKzEzNywxMyBAQCBPcHRpb25hbDxLZXlBZ3JlZW1lbnRSZXNwb25zZT4gS2V5
QWdyZWVtZW50UmVzcG9uc2U6OnBhcnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PgogewogICAgIGF1
dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRl
Y29kZWRNYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgY29uc3QgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkTWFwLT5n
ZXRNYXAoKTsKIAogICAgIC8vIFRoZSBlcGhlbWVyYWwga2V5IGlzIGVuY29kZWQgYXMgYSBDT1NF
IHN0cnVjdHVyZS4KICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oUmVzcG9uc2VLZXk6OmtLZXlBZ3JlZW1lbnQpKSk7CiAgICAgaWYg
KGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzTWFwKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y29uc3QgYXV0byYgY29zZUtleSA9IGl0LT5zZWNvbmQuZ2V0TWFwKCk7CiAKICAgICByZXR1cm4g
cGFyc2VGcm9tQ09TRShjb3NlS2V5KTsKQEAgLTE2MCwyMCArMTYwLDIwIEBAIE9wdGlvbmFsPEtl
eUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2VGcm9tQ09TRShj
b25zdCBDQk9SVmFsCiAgICAgfSkpIHsKICAgICAgICAgYXV0byBpdCA9IGNvc2VLZXkuZmluZChD
Qk9SVmFsdWUocGFpci5maXJzdCkpOwogICAgICAgICBpZiAoaXQgPT0gY29zZUtleS5lbmQoKSB8
fCAhaXQtPnNlY29uZC5pc0ludGVnZXIoKSB8fCBpdC0+c2Vjb25kLmdldEludGVnZXIoKSAhPSBw
YWlyLnNlY29uZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFNlZSBodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjODE1MiNzZWN0aW9uLTEzLjEuMQogICAgIGNvbnN0IGF1dG8mIHhJ
dCA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oQ09TRTo6eCkp
KTsKICAgICBjb25zdCBhdXRvJiB5SXQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19j
YXN0PGludDY0X3Q+KENPU0U6OnkpKSk7CiAgICAgaWYgKHhJdCA9PSBjb3NlS2V5LmVuZCgpIHx8
IHlJdCA9PSBjb3NlS2V5LmVuZCgpIHx8ICF4SXQtPnNlY29uZC5pc0J5dGVTdHJpbmcoKSB8fCAh
eUl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdCBhdXRvJiB4ID0geEl0
LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogICAgIGNvbnN0IGF1dG8mIHkgPSB5SXQtPnNlY29u
ZC5nZXRCeXRlU3RyaW5nKCk7CiAgICAgYXV0byBwZWVyS2V5ID0gQ3J5cHRvS2V5RUM6OmltcG9y
dFJhdyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpFQ0RILCAiUC0yNTYiLCBlbmNvZGVSYXdQ
dWJsaWNLZXkoeCwgeSksIHRydWUsIENyeXB0b0tleVVzYWdlRGVyaXZlQml0cyk7CiAgICAgaWYg
KCFwZWVyS2V5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEtleUFncmVlbWVudFJlc3BvbnNlKHBlZXJLZXku
cmVsZWFzZU5vbk51bGwoKSk7CiB9CkBAIC0yMDUsMTcgKzIwNSwxNyBAQCBPcHRpb25hbDxUb2tl
blJlc3BvbnNlPiBUb2tlblJlc3BvbnNlOjpwYXJzZShjb25zdCBXZWJDb3JlOjpDcnlwdG9LZXlB
RVMmIHNoYXJlZAogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGlu
QnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uc3QgYXV0byYgcmVzcG9u
c2VNYXAgPSBkZWNvZGVkTWFwLT5nZXRNYXAoKTsKIAogICAgIGF1dG8gaXQgPSByZXNwb25zZU1h
cC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihSZXNwb25zZUtleTo6a1BpblRv
a2VuKSkpOwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5p
c0J5dGVTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBhdXRvJiBlbmNyeXB0ZWRUb2tlbiA9IGl0LT5z
ZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogCiAgICAgYXV0byB0b2tlblJlc3VsdCA9IENyeXB0b0Fs
Z29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdCh7IH0sIHNoYXJlZEtleSwgZW5jcnlwdGVk
VG9rZW4sIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OlBhZGRpbmc6Ok5vKTsKICAgICBpZiAodG9r
ZW5SZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byB0b2tlbiA9IHRva2VuUmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCiAgICAgYXV0byB0b2tlbktleSA9IENyeXB0b0tleUhN
QUM6OmltcG9ydFJhdyh0b2tlbi5zaXplKCkgKiA4LCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2LCBXVEZNb3ZlKHRva2VuKSwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VTaWduKTsKQEAg
LTI1Niw3ICsyNTYsNyBAQCBPcHRpb25hbDxUb2tlblJlcXVlc3Q+IFRva2VuUmVxdWVzdDo6dHJ5
Q3JlYXRlKGNvbnN0IENTdHJpbmcmIHBpbiwgY29uc3QgQ3J5cHRvSwogICAgIC8vIDIuIFVzZSBF
Q0RIIGFuZCBTSEEtMjU2IHRvIGNvbXB1dGUgdGhlIHNoYXJlZCBBRVMtQ0JDIGtleS4KICAgICBh
dXRvIHNoYXJlZEtleVJlc3VsdCA9IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZl
Qml0cyhkb3duY2FzdDxDcnlwdG9LZXlFQz4oKmtleVBhaXIucHJpdmF0ZUtleSksIHBlZXJLZXkp
OwogICAgIGlmICghc2hhcmVkS2V5UmVzdWx0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjcnlwdG8gPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTYpOwogICAgIGNyeXB0by0+YWRkQnl0ZXMoc2hhcmVkS2V5UmVzdWx0LT5kYXRhKCksIHNoYXJl
ZEtleVJlc3VsdC0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTli
ZDFhOTQ5NDA2MmY2ZjRjMzBiM2JjZTBkMDI5ZDhjODY3OTI5NC4uNDEyYjI5NWUwMDdkYjNhMGFm
NWIwNmQxYjFkMDU3OGFkZDIwNGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBjb25zdHJ1Y3RVMmZSZWdpc3Rl
ckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWMKIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGNvbnN0cnVjdFUyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2hhbGxl
bmdlUGFyYW1ldGVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgYm9vbCBjaGVj
a09ubHkpCiB7CiAgICAgaWYgKGtleUhhbmRsZS5zaXplKCkgPiBrTWF4S2V5SGFuZGxlTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgZGF0YS5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGtVMmZDaGFsbGVuZ2VQYXJhbUxlbmd0aCArIGtVMmZBcHBsaWNhdGlvblBhcmFt
TGVuZ3RoICsgMSArIGtleUhhbmRsZS5zaXplKCkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wg
aXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiByZXF1CiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1Uy
ZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBj
b25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiByZXF1ZXN0KQogewogICAg
IGlmICghaXNDb252ZXJ0aWJsZVRvVTJmUmVnaXN0ZXJDb21tYW5kKHJlcXVlc3QpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
cmVxdWVzdC5leHRlbnNpb25zKTsKICAgICByZXR1cm4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21t
YW5kKHByb2R1Y2VScElkSGFzaCghYXBwSWQgPyByZXF1ZXN0LnJwLmlkIDogYXBwSWQpLCBjbGll
bnREYXRhSGFzaCk7CkBAIC0xMTAsNyArMTEwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGkK
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1h
bmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3ImIGtleUhhbmRsZSkKIHsKICAgICBpZiAoa2V5SGFuZGxlLnR5cGUgIT0g
UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjb25z
dHJ1Y3RVMmZTaWduQ29tbWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVzdC5ycC5pZCksIGNsaWVu
dERhdGFIYXNoLCBrZXlIYW5kbGUuaWRWZWN0b3IsIHRydWUgLyogY2hlY2tPbmx5ICovKTsKIH0K
QEAgLTExOCw3ICsxMTgsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1Uy
ZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PgogT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmIHJlcXVlc3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlzQXBw
SWQpCiB7CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghaXNBcHBJZCkKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlNpZ25D
b21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwSWQpLCBjbGllbnREYXRhSGFzaCwga2V5
SGFuZGxlLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwCmluZGV4IDVhZTI0NzllNzM4N2U2MjRlMThiNjQ4ZDk3ZmY0ZjlmMjYxZWQ0
OWQuLjlhZDExZDQwODhmNjYzNzdkYjFkYmMwOWRjNTEwNWUzZjkxNjgwYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC02MzUsNyAr
NjM1LDcgQEAgU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZUlzb2xhdGVkQ29weSgpIGNvbnN0CiBE
YXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRldGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3IgZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMs
IHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZhbnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAg
ICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKSwg
ZGlzcGxheU5hbWVJc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhzdHJpbmdJZGVu
dGlmaWVySXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lSXNvbGF0ZWRDb3B5KCksIGVzdGltYXRl
ZFNpemUoKSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIERhdGFi
YXNlOjpkaXNhYmxlQXV0aG9yaXplcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggMmM5YWE1MmExMDg5NTNl
NDg3NmQ0NWQwYzRjZDk5Mjk1ZTIyYTJiNC4uOWFmMDIzYTIwZDIzYjA1YjdjOGVlNDk0NjU1N2Fi
NTZjMjIyMjMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogRGF0
YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERhdGFiYXNlKERhdGFiYXNl
TWFuYWdlciYgbWFuYWdlciwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNp
emUpCiAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1fb3JpZ2luKG9yaWdpbi5pc29s
YXRlZENvcHkoKSkKLSAgICAsIG1fZGV0YWlscyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5
TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQpCisgICAgLCBtX2RldGFpbHMobmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5h
bWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRlZFNpemUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0KQogewogICAgIG1fbWFuYWdlci5hZGRQcm9wb3NlZERhdGFiYXNlKCp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAppbmRleCBmYzgxOTJmOTRlMmFmMTQyYTNjNGNlMGI1MWZlZWYzMjllY2Y2MzY1
Li41OTRmNzg2YjVlZjU5NDNkYjk5N2Q5MGY2ZGFlMTczODk0MDA1NWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CkBAIC00NjAsNyArNDYwLDcgQEAgRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlVHJhY2tlcjo6ZGV0
YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KIAogICAgIFN0cmlu
ZyBwYXRoID0gZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKTsKICAgICBp
ZiAocGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMobmFtZSwg
ZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwgZXhw
ZWN0ZWRVc2FnZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBE
YXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIFNRTGl0ZUZp
bGVTeXN0ZW06OmRhdGFiYXNlRmlsZVNpemUocGF0aCksIFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFi
YXNlQ3JlYXRpb25UaW1lKHBhdGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNh
dGlvblRpbWUocGF0aCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IGQxNGViZmM1NzljZWE2MzgzNGE4
NzkzYTM1ZWRlY2Q1NjQ4NjlhZTcuLjJiYzU5ZWNlMjNlMDQ2Y2YyMmJiZDgzMWI1Y2U2NzI4M2U5
ZDJjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FM
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04NCw3ICs4NCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNR
TFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmluZyYgc3FsU3RhdGVtZW50LCBPcHRp
b25hCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAgICAgcGVybWlzc2lvbnMgfD0gRGF0
YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAgICBhdXRvIHN0YXRlbWVudCA9IG1h
a2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50
cy52YWx1ZU9yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IG1h
a2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50
cy52YWx1ZV9vcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+
ZGVsZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBZGRyZXNzU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NTcGFjZS5oCmluZGV4IGU3NTdmZDBiN2U3YTZkZGI4ZjNiZWJlY2NjMGZl
ZjhjYjExZTZlN2MuLjc3OTIyY2FjYWUwYTczNDYyNTFlNjVmYWM4NjQzNTY3MGY1YjIwZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFk
ZHJlc3NTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NTcGFjZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoIW1fZW1wdHkpOwogICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxM
ZWZ0VmFsdWU+KG1faW5uZXIpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PExlZnRWYWx1
ZT4obV9pbm5lcikuYWRkcmVzc1NwYWNlOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGJvb2wgaXNSaWdodFZh
bHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRpYy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKaW5kZXggZjUwODA1OTg0OWU2
NjRiOTEyNTI5Yzk4NjJiMDQyMmIwZTBjODg2Ny4uMzNhMTE2ODVlNTJmMTMzZTA0ZjFkMzNiMzc3
NTgyOTg3YzkwYTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgICAgICBTVkdyb3VwVGhyZWFkSUQKICAgICB9OwogCi0gICAgQnVp
bHRJblNlbWFudGljKENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGUgdmFyaWFibGUsIE9w
dGlvbmFsPHVuc2lnbmVkPiYmIHRhcmdldEluZGV4ID0gV1RGOjpudWxsb3B0KQorICAgIEJ1aWx0
SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9jYXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBPcHRp
b25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRleCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBC
YXNlU2VtYW50aWMobG9jYXRpb24pCiAgICAgICAgICwgbV92YXJpYWJsZSh2YXJpYWJsZSkKICAg
ICAgICAgLCBtX3RhcmdldEluZGV4KFdURk1vdmUodGFyZ2V0SW5kZXgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5j
dGlvbldyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAppbmRleCBkNGEwMTJhZTZkMzgyZjI0OThj
N2ZlNmFlMjc4NTgyZTkwOGJmMTg3Li5hYTNhNjk4NGI2MTZmNjVkMGIwYTAwYmY5ZjJiNTdkNGZi
NDEzYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9N
ZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxTYW1wbGVUeXBlPiBzYW1wbGVUeXBl
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKQogICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6
U2FtcGxlQmlhczsKICAgICBpZiAoZnVuY3Rpb25OYW1lID09ICJTYW1wbGVHcmFkIikKICAgICAg
ICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUdyYWQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0
aW9uKFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIsIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiwgY29uc3QgVmVjdG9yPE1hbmdsZWRW
YXJpYWJsZU5hbWU+JiBhcmdzLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJlc3VsdE5hbWUsIFR5cGVO
YW1lciYgdHlwZU5hbWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMQ2hlY2tlci5jcHAKaW5kZXggNjM5OWNiNWZlODlhYmU4NDQxZmNhYTFjZDFm
NzY1ZjcwOTFlNDEyNi4uNzIxY2JhMzBhYzE5YzVmNDc2YWMyZDNlMTEzMGU0YzEzY2Q1MTY2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENo
ZWNrZXIuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIEFTVDo6TmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbiByZXNvbHZlV2l0aFJlZmVyZW5jZUNvbXBhcmF0b3IoQ29kZUxvY2F0aW8KICAg
ICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5h
cHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBB
U1Q6OlF1YWxpZmllcnMoKSwgYXJndW1lbnRUeXBlLmNvcHlSZWYoKSwgU3RyaW5nKCksIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBXVEZNb3Zl
KGFyZ3VtZW50VHlwZSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgcmV0dXJu
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJl
dHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01v
ZGU6OlN0YW5kYXJkTGlicmFyeSkpOworICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0
ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVy
YXRvcj09IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVy
cyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsK
IH0KIAogZW51bSBjbGFzcyBBY2NlcHRhYmlsaXR5IHsKQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uPiByZXNvbHZlQnlJbnN0
YW50aWF0aW9uKGNvbnN0IFN0cgogICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIHJl
dHVybiByZXNvbHZlV2l0aFJlZmVyZW5jZUNvbXBhcmF0b3IobG9jYXRpb24sIHR5cGVzWzBdLmdl
dCgpLCB0eXBlc1sxXS5nZXQoKSwgaW50cmluc2ljcyk7CiAgICAgfQotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGJvb2wgY2hl
Y2tTZW1hbnRpY3MoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPiYgaW5wdXRJdGVtcywgVmVjdG9yPEVu
dHJ5UG9pbnRJdGVtPiYgb3V0cHV0SXRlbXMsIGNvbnN0IE9wdGlvbmFsPEFTVDo6RW50cnlQb2lu
dFR5cGU+JiBlbnRyeVBvaW50VHlwZSwgY29uc3QgSW50cmluc2ljcyYgaW50cmluc2ljcykKQEAg
LTczNyw3ICs3MzcsNyBAQCBhdXRvIENoZWNrZXI6OnJlY3Vyc2VBbmRHZXRJbmZvKEFTVDo6RXhw
cmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYQogewogICAgIFZpc2l0b3I6
OnZpc2l0KGV4cHJlc3Npb24pOwogICAgIGlmIChoYXNFcnJvcigpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBn
ZXRJbmZvKGV4cHJlc3Npb24sIHJlcXVpcmVzTGVmdFZhbHVlKTsKIH0KIApAQCAtNzQ5LDcgKzc0
OSw3IEBAIGF1dG8gQ2hlY2tlcjo6Z2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24s
IGJvb2wgcmVxdWlyZXNMZWZ0VmFsdWUpIC0+IE9wCiAgICAgY29uc3QgYXV0byYgdHlwZUFubm90
YXRpb24gPSBleHByZXNzaW9uLnR5cGVBbm5vdGF0aW9uKCk7CiAgICAgaWYgKHJlcXVpcmVzTGVm
dFZhbHVlICYmIHR5cGVBbm5vdGF0aW9uLmlzUmlnaHRWYWx1ZSgpKSB7CiAgICAgICAgIHNldEVy
cm9yKEVycm9yKCJVbmV4cGVjdGVkIHJ2YWx1ZS4iLCBleHByZXNzaW9uLmNvZGVMb2NhdGlvbigp
KSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiB7eyAqdHlwZUl0ZXJhdG9yLT52YWx1ZSwgdHlwZUFu
bm90YXRpb24gfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCmluZGV4IDZjZTE0YmM3
NWRiMGExMzkwZmFmNjRiMjBiNzMwMDE0NTFkM2MwNjkuLjRlNTFhYjc5M2U3MDRkNjNjZjE0Nzg2
YzUzYzU5M2EwNWVkNDRlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIE9wdGlvbmFsPENvbXB1dGVEaW1lbnNpb25zPiBjb21wdXRlRGltZW5zaW9ucyhQ
cm9ncmFtJiBwcm9ncmFtLCBBU1Q6OkZ1bmN0aW9uRGVmCiAgICAgICAgICAgICB9KSwgZnVuY3Rp
b25BdHRyaWJ1dGUpOwogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICAg
ICAgLy8gQ2Fubm90IGRlY2xhcmUgbXVsdGlwbGUgbnVtdGhyZWFkIGF0dHJpYnV0ZXMgb24gYSBz
aW5nbGUgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xMZXhlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTExleGVyLmNwcAppbmRleCA5NWFhNjgxZmMyYmRhYWY0NjBiOGJhMDU2ZWEzNWU3ZTQ5MWFh
Mzk2Li5hOWM2YTI2ODRlMWM0NmJkMzc3YzI1YjVjMjA5MWI4NmE4YWJhNTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcApAQCAt
MTY4OSw3ICsxNjg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZ1ZpZXc+IHNvdXJjZUZyb21O
YW1lU3BhY2UoQVNUOjpOYW1lU3BhY2UgbmFtZVNwYWNlLCBjb25zdAogewogICAgIHN3aXRjaCAo
bmFtZVNwYWNlKSB7CiAgICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6U3RhbmRhcmRMaWJyYXJ5Ogot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTE6CiAgICAgICAgIHJldHVybiBT
dHJpbmdWaWV3KHNvdXJjZTEpOwogICAgIGNhc2UgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTI6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5h
bWVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TmFtZUNvbnRleHQuY3BwCmluZGV4IGNjOGViNDNmZmQ4YTQ0MTI5ZGI1NDk0YjIyYjllMjNjZjRk
M2ZjOGYuLmE4ZGFlYTVjZWM2NDQ1ZjQ3YmIwNzQwZmM4ZmQzNGM4NWMzN2ViMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNv
bnRleHQuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgT3B0aW9uYWw8Q29kZUxvY2F0aW9uPiBOYW1l
Q29udGV4dDo6dG9wTGV2ZWxFeGlzdHMoU3RyaW5nJiBuYW1lKSBjb25zdAogICAgICAgICByZXR1
cm4gdHlwZS0+Y29kZUxvY2F0aW9uKCk7CiAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0gc2VhcmNo
RnVuY3Rpb25zKG5hbWUpKQogICAgICAgICByZXR1cm4gZnVuY3Rpb24tPmNvZGVMb2NhdGlvbigp
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uKiBOYW1lQ29udGV4dDo6bG9jYWxFeGlzdHMoU3Ry
aW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwCmluZGV4IGI5MDc5MzU2YWE3ZjkwNjYzYzk3MjI4YzA3ODdj
ZWIwMjZhMTk2MmMuLmZmMzNmYzQ1OTEzMmIxMWY0MDA4ZjdkYTM3ZTU0NjczNWE0NTA3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNl
ci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBPcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBl
KFRva2VuOjpUeXBlIHR5cGUpCiAgICAgYXV0byB0b2tlbiA9IG1fbGV4ZXIucGVlaygpOwogICAg
IGlmICh0b2tlbi50eXBlID09IHR5cGUpCiAgICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3Vt
ZVRva2VuKCkgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHRlbXBsYXRlIDxUb2tlbjo6VHlwZS4uLiB0eXBlcz4KQEAgLTIxNiw3ICsy
MTYsNyBAQCBPcHRpb25hbDxUb2tlbj4gUGFyc2VyOjp0cnlUeXBlcygpCiAgICAgYXV0byB0b2tl
biA9IG1fbGV4ZXIucGVlaygpOwogICAgIGlmIChUeXBlczx0eXBlcy4uLj46OmluY2x1ZGVzKHRv
a2VuLnR5cGUpKQogICAgICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tlbigpIH07Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBh
dXRvIFBhcnNlcjo6Y29uc3VtZVR5cGUoVG9rZW46OlR5cGUgdHlwZSkgLT4gRXhwZWN0ZWQ8VG9r
ZW4sIEVycm9yPgpAQCAtMzQ1LDcgKzM0NSw3IEBAIGF1dG8gUGFyc2VyOjpjb25zdW1lTm9uTmVn
YXRpdmVJbnRlZ3JhbExpdGVyYWwoKSAtPiBFeHBlY3RlZDx1bnNpZ25lZCwgRXJyb3I+CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChpbnRlZ3JhbExpdGVyYWwuZXJyb3IoKSk7CiAgICAg
YXV0byByZXN1bHQgPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oaW50IHgpIC0+IE9w
dGlvbmFsPHVuc2lnbmVkPiB7CiAgICAgICAgIGlmICh4IDwgMCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4geDsKICAgICB9LCBbXSh1bnNpZ25lZCB4KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4g
ewogICAgICAgICByZXR1cm4geDsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBhdXRvIFBhcnNlcjo6cGFy
c2VUeXBlU3VmZml4QWJicmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4QWJicmV2aWF0
ZWQsIEVycgogICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNx
dWFyZUJyYWNrZXQpOwogICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJy
YWNrZXQgfSwgKnRva2VuLCAqbnVtRWxlbWVudHMgfX07CiAgICAgfQotICAgIHJldHVybiB7eyB7
ICp0b2tlbiB9LCAqdG9rZW4sIFdURjo6bnVsbG9wdCB9fTsKKyAgICByZXR1cm4ge3sgeyAqdG9r
ZW4gfSwgKnRva2VuLCBzdGQ6Om51bGxvcHQgfX07CiB9CiAKIGF1dG8gUGFyc2VyOjpwYXJzZVR5
cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhOb25BYmJyZXZp
YXRlZCwgRXJyb3I+CkBAIC00ODcsNyArNDg3LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGUK
ICAgICAgICAgaWYgKCFudW1FbGVtZW50cykKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChudW1FbGVtZW50cy5lcnJvcigpKTsKICAgICAgICAgQ09OU1VNRV9UWVBFKHJpZ2h0U3F1
YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVCcmFja2V0KTsKLSAgICAgICAgcmV0dXJuIHt7IHsgKnRv
a2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgV1RGOjpudWxsb3B0LCAqbnVtRWxl
bWVudHMgfX07CisgICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tl
dCB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9wdCwgKm51bUVsZW1lbnRzIH19OwogICAgIH0KICAgICBh
dXRvIGFkZHJlc3NTcGFjZVRva2VuID0gY29uc3VtZVR5cGVzPAogICAgICAgICBUb2tlbjo6VHlw
ZTo6Q29uc3RhbnQsCkBAIC01MTIsNyArNTEyLDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1
ZmZpeE5vbkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGUK
ICAgICAgICAgYWRkcmVzc1NwYWNlID0gQVNUOjpBZGRyZXNzU3BhY2U6OlRocmVhZDsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHsgYWRk
cmVzc1NwYWNlIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwg
KnRva2VuLCB7IGFkZHJlc3NTcGFjZSB9LCBzdGQ6Om51bGxvcHQgfX07CiB9CiAKIGF1dG8gUGFy
c2VyOjpwYXJzZVR5cGUoKSAtPiBFeHBlY3RlZDxSZWY8QVNUOjpVbm5hbWVkVHlwZT4sIEVycm9y
PgpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlUmVndWxhckZ1bmN0aW9u
RGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXQKIAogICAgIGF1
dG8gZW5kT2Zmc2V0ID0gbV9sZXhlci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKIAotICAgIHJldHVy
biBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9m
ZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGTW92ZSgq
dHlwZSksIG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFy
YW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKKyAgICBy
ZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBl
bmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1v
dmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUo
KnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9kZSk7CiB9
CiAKIGF1dG8gUGFyc2VyOjpwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4
cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+CkBAIC0xMDQ4LDcgKzEwNDgs
NyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VPcGVyYXRvckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBF
eHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYQogICAgIGF1dG8gZW5kT2Zmc2V0ID0gbV9sZXhl
ci5wZWVrKCkuc3RhcnRPZmZzZXQoKTsKIAogICAgIGJvb2wgaXNPcGVyYXRvciA9IHRydWU7Ci0g
ICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQo
KSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKCp0eXBlKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZSgqcGFyYW1ldGVycyks
IFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKKyAgICByZXR1cm4gQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQs
IG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUp
LCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2Vt
YW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwogfQogCiBhdXRvIFBhcnNlcjo6cGFyc2VGdW5j
dGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBF
cnJvcj4KQEAgLTExNjUsNyArMTE2NSw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVN3aXRjaENhc2Uo
KSAtPiBFeHBlY3RlZDxBU1Q6OlN3aXRjaENhc2UsIEVycm9yPgogCiAgICAgICAgIFBBUlNFKGJs
b2NrLCBCbG9ja0JvZHkpOwogCi0gICAgICAgIHJldHVybiBBU1Q6OlN3aXRjaENhc2UoeyBvcmln
aW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2RlTG9jYXRpb24oKX0sIFdURjo6bnVsbG9wdCwg
V1RGTW92ZSgqYmxvY2spKTsKKyAgICAgICAgcmV0dXJuIEFTVDo6U3dpdGNoQ2FzZSh7IG9yaWdp
bi0+Y29kZUxvY2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigpfSwgc3RkOjpudWxsb3B0LCBX
VEZNb3ZlKCpibG9jaykpOwogICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAK
aW5kZXggYjExYjg2MDRhZDc1MzVjNGUzMTFmODc4NmI5MzdjNWY4ZTU3ZGY2NS4uNWUzZjBmMDM2
Njg2NWY0MDIzOWFlZWZmOWUwZTI1ODRkMjE0ZGU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNw
cApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SGFzaE1hcDxCaW5kaW5nKiwgc2l6
ZV90Pj4gbWF0Y2hSZXNvdXJjZXMoVmVjdG9yPEVudHJ5UG9pbnRJdGVtPgogICAgICAgICBpZiAo
IVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpSZXNvdXJjZVNlbWFudGljPihzZW1hbnRpYykp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlu
cyhpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNTEsNyAr
MTUxLDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90
Pj4gbWF0Y2hWZXJ0ZXhBdHRyaWJ1dGVzKFZlY3RvcjwKICAgICAgICAgICAgIGlmIChzdGFnZUlu
T3V0U2VtYW50aWMuaW5kZXgoKSAhPSB2ZXJ0ZXhBdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24pCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZv
cm1hdCh2ZXJ0ZXhBdHRyaWJ1dGUudmVydGV4Rm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50
cmluc2ljcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmVzdWx0LmFkZCgmdmVy
dGV4QXR0cmlidXRlLCBpKTsKICAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChpKTsKICAgICAg
ICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPFZlcnRleEF0
dHJpYnV0ZSosIHNpemVfdD4+IG1hdGNoVmVydGV4QXR0cmlidXRlcyhWZWN0b3I8CiAgICAgICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2Vt
YW50aWMpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXRlbUluZGljZXMu
Y29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
MjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlw
dG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlCiAgICAgICAgICAgICBpZiAo
c3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkgIT0gYXR0YWNobWVudERlc2NyaXB0b3IubmFtZSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxl
Rm9ybWF0KGF0dGFjaG1lbnREZXNjcmlwdG9yLnRleHR1cmVGb3JtYXQsICppdGVtLnVubmFtZWRU
eXBlLCBpbnRyaW5zaWNzLCB0cnVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKCZhdHRhY2htZW50RGVzY3JpcHRvciwgaSk7CiAgICAgICAgICAgICBpdGVtSW5k
aWNlcy5hZGQoaSk7CiAgICAgICAgIH0KQEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgT3B0aW9u
YWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNoQ29sb3JBdHRh
Y2htZW50cyhWZQogICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8QVNUOjpTdGFn
ZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTI3OCwzOCArMjc4LDM4IEBAIE9wdGlvbmFsPE1hdGNoZWRSZW5k
ZXJTZW1hbnRpY3M+IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dyYW0sIFJlbmRlclBpcGVs
aW5lCiB7CiAgICAgYXV0byB2ZXJ0ZXhGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVDb250ZXh0KCku
Z2V0RnVuY3Rpb25zKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhFbnRyeVBvaW50TmFt
ZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVTcGFjZTEpOwogICAgIGlmICh2ZXJ0ZXhGdW5jdGlvbnMu
c2l6ZSgpICE9IDEgfHwgIXZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50VHlwZSgp
IHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4odmVydGV4RnVuY3Rpb25zWzBdLmdldCgp
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBhdXRvJiB2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSk7CiAgICAgYXV0byB2
ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3Jh
bS5pbnRyaW5zaWNzKCksIHZlcnRleFNoYWRlckVudHJ5UG9pbnQpOwogICAgIGlmICghdmVydGV4
U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdmVydGV4U2hhZGVyUmVzb3VyY2VN
YXAgPSBtYXRjaFJlc291cmNlcyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3RhZ2U6OlZlcnRleCk7CiAg
ICAgaWYgKCF2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIG1hdGNoZWRWZXJ0
ZXhBdHRyaWJ1dGVzID0gbWF0Y2hWZXJ0ZXhBdHRyaWJ1dGVzKHZlcnRleFNoYWRlckVudHJ5UG9p
bnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4QXR0cmlidXRl
cywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwogICAgIGlmICghbWF0Y2hlZFZlcnRleEF0dHJpYnV0
ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFmcmFnbWVudFNoYWRlckV4aXN0cykKICAgICAgICAgcmV0dXJuIHt7
ICZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50LCBudWxscHRyLCAqdmVydGV4U2hhZGVyRW50cnlQb2lu
dEl0ZW1zLCBFbnRyeVBvaW50SXRlbXMoKSwgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCBIYXNo
TWFwPEJpbmRpbmcqLCBzaXplX3Q+KCksICptYXRjaGVkVmVydGV4QXR0cmlidXRlcywgSGFzaE1h
cDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4oKSB9fTsKIAogICAgIGF1dG8gZnJhZ21l
bnROYW1lU3BhY2UgPSBkaXN0aW5jdEZyYWdtZW50U2hhZGVyID8gQVNUOjpOYW1lU3BhY2U6Ok5h
bWVTcGFjZTIgOiBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMTsKICAgICBhdXRvIGZyYWdtZW50
RnVuY3Rpb25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuZnJhZ21lbnRFbnRyeVBvaW50TmFtZSwgZnJhZ21lbnROYW1lU3BhY2Up
OwogICAgIGlmIChmcmFnbWVudEZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhZnJhZ21lbnRGdW5j
dGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KGZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvJiBmcmFnbWVu
dFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnJh
Z21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpOwogICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJFbnRyeVBv
aW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCksIGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludCk7CiAgICAgaWYgKCFmcmFnbWVudFNoYWRlckVudHJ5UG9p
bnRJdGVtcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAgPSBtYXRjaFJl
c291cmNlcyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6RnJhZ21lbnQpOwogICAgIGlmICgh
ZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1hdGNoSW5wdXRzT3V0cHV0
cyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIGZyYWdtZW50U2hhZGVyRW50
cnlQb2ludEl0ZW1zLT5pbnB1dHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gbWF0Y2hlZENvbG9yQXR0YWNobWVu
dHMgPSBtYXRjaENvbG9yQXR0YWNobWVudHMoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMt
Pm91dHB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3Jp
cHRvci5hdHRhY2htZW50RGVzY3JpcHRvcnMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKICAgICBp
ZiAoIW1hdGNoZWRDb2xvckF0dGFjaG1lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghbWF0Y2hEZXB0aEF0dGFj
aG1lbnQoZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPm91dHB1dHMsIHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5hdHRhY2htZW50c1N0YXRlRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRh
Y2htZW50RGVzY3JpcHRvciwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
eyAmdmVydGV4U2hhZGVyRW50cnlQb2ludCwgJmZyYWdtZW50U2hhZGVyRW50cnlQb2ludCwgKnZl
cnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKmZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1z
LCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsICpmcmFnbWVudFNoYWRlclJlc291cmNlTWFwLCAq
bWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMsICptYXRjaGVkQ29sb3JBdHRhY2htZW50cyB9fTsKIH0K
IApAQCAtMzE3LDE1ICszMTcsMTUgQEAgT3B0aW9uYWw8TWF0Y2hlZENvbXB1dGVTZW1hbnRpY3M+
IG1hdGNoU2VtYW50aWNzKFByb2dyYW0mIHByb2dyYW0sIENvbXB1dGVQaXBlbGkKIHsKICAgICBh
dXRvIGZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMoY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvci5lbnRyeVBvaW50TmFtZSwgQVNUOjpOYW1lU3BhY2U6Ok5hbWVT
cGFjZTEpOwogICAgIGlmIChmdW5jdGlvbnMuc2l6ZSgpICE9IDEgfHwgIWZ1bmN0aW9uc1swXS5n
ZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnVu
Y3Rpb25zWzBdLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvJiBlbnRyeVBvaW50ID0gZG93bmNhc3Q8QVNU
OjpGdW5jdGlvbkRlZmluaXRpb24+KGZ1bmN0aW9uc1swXS5nZXQoKSk7CiAgICAgYXV0byBlbnRy
eVBvaW50SXRlbXMgPSBnYXRoZXJFbnRyeVBvaW50SXRlbXMocHJvZ3JhbS5pbnRyaW5zaWNzKCks
IGVudHJ5UG9pbnQpOwogICAgIGlmICghZW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIEFTU0VSVChl
bnRyeVBvaW50SXRlbXMtPm91dHB1dHMuaXNFbXB0eSgpKTsKICAgICBhdXRvIHJlc291cmNlTWFw
ID0gbWF0Y2hSZXNvdXJjZXMoZW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6Q29tcHV0ZSk7CiAgICAgaWYgKCFyZXNv
dXJjZU1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgJmVudHJ5UG9pbnQsICplbnRyeVBvaW50SXRlbXMs
ICpyZXNvdXJjZU1hcCB9fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5j
cHAKaW5kZXggMzE3ZDBjNWZiZWNlNDQ5MTgwNTk3MjBhNDViZGNmODQxYmE0NzQxZi4uYmNjOTBh
MzY0MDVhMmVkMTc0ZGQzNTYzMmQ2NjlhNDk3MTI4YmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNp
emVDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBFeHBlY3RlZDx2b2lkLCBF
cnJvcj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAg
ICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgJnVubmFtZWRUeXBlLCBT
dHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZN
b3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxv
Y2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgdW5uYW1lZFR5cGUs
ICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3Bl
cmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwg
dW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51
bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAg
ICAgICAgIHByb2dyYW0uYXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0
cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVC
bG9jaygpLCBXVEY6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdN
b2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRp
b24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9w
ZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBp
c09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgIGlmICgh
cHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShkZWZhdWx0Q29uc3RydWN0b3IpKSkKICAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVs
dCBjb25zdHJ1Y3RvciIpKTsKICAgICB9CkBAIC0xNDgsNyArMTQ4LDcgQEAgRXhwZWN0ZWQ8dm9p
ZCwgRXJyb3I+IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAg
ICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxl
RGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgQVNUOjpUeXBlUmVmZXJl
bmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCBTdHJpbmcoKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsK
ICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7
Ci0gICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3Io
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCks
IFdURjo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5
cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxs
cHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBjb3B5Q29uc3RydWN0b3IoQVNUOjpGdW5j
dGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVs
bG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkp
LCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09w
ZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgIHByb2dyYW0u
YXBwZW5kKFdURk1vdmUoY29weUNvbnN0cnVjdG9yKSk7CiAKICAgICAgICAgaWYgKGlzPEFTVDo6
TmF0aXZlVHlwZURlY2xhcmF0aW9uPihzdGF0aWNfY2FzdDxBU1Q6Ok5hbWVkVHlwZSY+KG5hbWVk
VHlwZSkpKSB7CkBAIC0xNTYsNyArMTU2LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIGlmIChuYXRp
dmVUeXBlRGVjbGFyYXRpb24uaXNPcGFxdWVUeXBlKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGRl
ZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
bG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0
YW5kYXJkTGlicmFyeSkpOworICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24g
ZGVmYXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShk
ZWZhdWx0Q29uc3RydWN0b3IpKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChF
cnJvcigiQ291bGQgbm90IHN5bnRoZXNpemUgZGVmYXVsdCBjb25zdHJ1Y3RvciIpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5
bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKaW5k
ZXggMmE3ZTBkNjk2MDdlZDM5YWUwNTVmZTAwYWRjOWIxOWRmOTUwYWUxYS4uZjA1MDczODIzYzdk
YTFkN2ExMjdmM2Q1NmJiNmYyMDUxYTlkZmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcApAQCAtNDcsNyArNDcsNyBAQCBFeHBlY3RlZDx2
b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mIHByb2dy
YW0pCiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24x
KSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFy
YXRpb24yKSk7Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24s
IEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6
OndyYXAobG9jYXRpb24sIHByb2dyYW0uaW50cmluc2ljcygpLmJvb2xUeXBlKCkpLCAib3BlcmF0
b3I9PSJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJz
aW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBB
U1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIHByb2dyYW0uaW50cmluc2ljcygpLmJv
b2xUeXBlKCkpLCAib3BlcmF0b3I9PSJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRy
LCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgICAg
ICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikp
KQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNy
ZWF0ZSBvcGVyYXRvcj09IGZvciBlbnVtIHR5cGUuIikpOwogICAgICAgICB9CkBAIC01Niw3ICs1
Niw3IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlv
biA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNU
OjpRdWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVy
YXRpb25EZWZpbml0aW9uKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAg
ICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgcGFy
YW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAg
ICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlv
bihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2so
KSwgV1RGOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgIm9wZXJhdG9y
IGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFy
c2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOworICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwg
ZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1v
dmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFy
ZExpYnJhcnkpKTsKICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIGNvcHkgY29uc3RydWN0b3IgZm9yIGVudW0gdHlw
ZS4iKSk7CiAgICAgICAgIH0KQEAgLTY1LDcgKzY1LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+
IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAg
ICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgJmVudW1lcmF0aW9u
RGVmaW5pdGlvbi0+dHlwZSgpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAg
ICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBw
YXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAg
ICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9j
aygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51
bWVyYXRpb25EZWZpbml0aW9uKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkp
OworICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0
dHJpYnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxv
Y2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRh
cmRMaWJyYXJ5KSk7CiAgICAgICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSAnb3BlcmF0b3IgY2FzdCcgZm9yIGVudW0gdHlw
ZS4iKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKaW5kZXggM2U1MTBjNTc0ZjNl
Zjg2M2IxYTEwMTJmNWVmNjM5OTEzNGI5YzE3Yy4uOGVmZWE1NTVjZTkyYzFjNDE5OTYxYTRmNTYy
ZWE1NTM0ZTIxMGM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5jcHAKQEAgLTY2LDEyICs2NiwxMiBA
QCBPcHRpb25hbDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yOjp0cnlDcmVhdGVHUFVCaW5kR3JvdQogCiAgICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+
YmluZEdyb3VwTGF5b3V0KCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQ
VUJpbmRHcm91cExheW91dCEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChi
aW5kaW5ncy5zaXplKCkgIT0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGluZ3NNYXAo
KS5zaXplKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNaXNtYXRjaGVkIG51bWJlciBv
ZiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5ncyBhbmQgR1BVQmluZEdyb3VwQmluZGluZ3MhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGxheW91dE1hcCA9IGxheW91dC0+
YmluZEdyb3VwTGF5b3V0KCktPmJpbmRpbmdzTWFwKCk7CkBAIC04MywzNiArODMsMzYgQEAgT3B0
aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjo6
dHJ5Q3JlYXRlR1BVQmluZEdyb3UKICAgICAgICAgYXV0byBpdGVyYXRvciA9IGxheW91dE1hcC5m
aW5kKGJpbmRpbmcuYmluZGluZyk7CiAgICAgICAgIGlmIChpdGVyYXRvciA9PSBsYXlvdXRNYXAu
ZW5kKCkpIHsKICAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQmluZEdyb3VwTGF5b3V0
QmluZGluZyAldSBub3QgZm91bmQgaW4gR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0aW9uTmFt
ZSwgYmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgY29u
c3QgYXV0byBsYXlvdXRCaW5kaW5nID0gaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgICAgIGF1dG8g
YmluZGluZ1Jlc291cmNlVmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgUmVmUHRy
PFdlYkdQVVNhbXBsZXI+JiBzYW1wbGVyKSAtPiBPcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+
IHsKICAgICAgICAgICAgIGlmICghc2FtcGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBhdXRvIGdwdVNhbXBsZXIgPSBzYW1wbGVyLT5zYW1wbGVyKCk7CiAgICAgICAgICAgICBp
ZiAoIWdwdVNhbXBsZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCpncHVTYW1wbGVyKSk7CiAg
ICAgICAgIH0sIFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4mIHZpZXcpIC0+IE9w
dGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAgICAgICAgaWYgKCF2aWV3KQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IHZpZXctPnRleHR1cmUo
KTsKICAgICAgICAgICAgIGlmICghdGV4dHVyZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1ha2VSZWYoKnRl
eHR1cmUpKTsKICAgICAgICAgfSwgWyZsYXlvdXRCaW5kaW5nLCBmdW5jdGlvbk5hbWVdIChXZWJH
UFVCdWZmZXJCaW5kaW5nIGJ1ZmZlckJpbmRpbmcpIC0+IE9wdGlvbmFsPEdQVUJpbmRpbmdSZXNv
dXJjZT4gewogICAgICAgICAgICAgaWYgKCFidWZmZXJCaW5kaW5nLmJ1ZmZlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IGJ1ZmZlckJpbmRpbmcuYnVmZmVy
LT5idWZmZXIoKTsKICAgICAgICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUJ1ZmZlckJpbmRpbmdUeXBlKGJ1ZmZlciwgbGF5
b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcsIGZ1bmN0aW9uTmFtZSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BVQmluZGluZ1Jlc291cmNl
PihHUFVCdWZmZXJCaW5kaW5nIHsgbWFrZVJlZigqYnVmZmVyKSwgYnVmZmVyQmluZGluZy5vZmZz
ZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9KTsKICAgICAgICAgfSk7CkBAIC0xMjAsNyArMTIwLDcg
QEAgT3B0aW9uYWw8R1BVQmluZEdyb3VwRGVzY3JpcHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvcjo6dHJ5Q3JlYXRlR1BVQmluZEdyb3UKICAgICAgICAgYXV0byBiaW5kaW5nUmVzb3VyY2Ug
PSBXVEY6OnZpc2l0KGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IsIGJpbmRpbmcucmVzb3VyY2UpOwog
ICAgICAgICBpZiAoIWJpbmRpbmdSZXNvdXJjZSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIHJlc291cmNlIGZvciBiaW5kaW5nICV1ISIsIGZ1bmN0aW9uTmFtZSwgbGF5
b3V0QmluZGluZy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIGJpbmRHcm91cEJpbmRpbmdzLnVuY2hlY2tlZEFwcGVuZChHUFVCaW5kR3Jv
dXBCaW5kaW5nIHsgYmluZGluZy5iaW5kaW5nLCBXVEZNb3ZlKGJpbmRpbmdSZXNvdXJjZS52YWx1
ZSgpKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRFbmNvZGVyLmNwcAppbmRleCBlZTcxMjE0YjVjMGFlZWRkOTc3OWUzMzIyYWY5ZmMz
M2RkOWY5NzI2Li45NzcwOWRlYTYxNjQxNjJlNjM0ODU5MTAwODJkNDIyNjE3ZDQ2MzJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIE9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBX
ZWJHUFVCdWZmZXJDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVQnVmZmVyQ29weVZpZXcoKSBjCiB7CiAg
ICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKICAgICAgICAgTE9HKFdlYkdQ
VSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3IgY29weSEiKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KQEAgLTU3LDcg
KzU3LDcgQEAgT3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZp
ZXc6OnRyeUNyZWF0ZUdQVVRleHR1cmVDb3B5VmlldygKIHsKICAgICBpZiAoIXRleHR1cmUgfHwg
IXRleHR1cmUtPnRleHR1cmUoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFu
ZEVuY29kZXI6IEludmFsaWQgdGV4dHVyZSBmb3IgY29weSEiKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAKaW5kZXggZDI3M2RlYjBjMjViM2I5NDEzM2IzZmMzYWZhZmM3ZjBiOGE5Yzc4ZS4u
YjRlYzU4YzlmNzVkZTI4NTJhZmFlZGJiNjk3MGVhZGM0YTg3NWI5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgT3B0aW9uYWw8R1BVQ29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjo6dHJ5
Q3JlYXQKICAgICBhdXRvIGNvbXB1dGUgPSBjb21wdXRlU3RhZ2UudHJ5Q3JlYXRlR1BVUHJvZ3Jh
bW1hYmxlU3RhZ2VEZXNjcmlwdG9yKCk7CiAgICAgaWYgKCFjb21wdXRlKSB7CiAgICAgICAgIGVy
cm9yU2NvcGVzLmdlbmVyYXRlRXJyb3IoIkdQVURldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KCk6IEludmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIHJldHVybiBHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZShwaXBl
bGluZUxheW91dCksIFdURk1vdmUoKmNvbXB1dGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmNwcAppbmRleCAyM2E2ZjE3MjQ1OTIxMDM3OWJkM2MyZjY1NDYwODJkZTFhMTc3NzZlLi4x
MWVkMWFlZGRhODk3NWRiNWQ1MWE4NjY1Y2VkODFhNTRjYzgyMzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5
b3V0RGVzY3JpcHRvci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgT3B0aW9uYWw8R1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yPiBXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I6OnRyeUNyZWF0
ZUcKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxheW91dCA6IGJpbmRHcm91cExheW91dHMpIHsKICAg
ICAgICAgaWYgKCFsYXlvdXQgfHwgIWxheW91dC0+YmluZEdyb3VwTGF5b3V0KCkpIHsKICAgICAg
ICAgICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCk6IElu
dmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGdwdUxheW91dHMudW5jaGVja2VkQXBwZW5kKG1ha2VSZWYoKmxheW91dC0+
YmluZEdyb3VwTGF5b3V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3Bw
CmluZGV4IDBlNWYzYmUyMjIzMDBkNWI0YWI2ZTBmZTYwOWFlN2Q4MGE0YjJiMTcuLjQ3NzVhODg1
ZmM3NmI0Y2Y5NWM1ODNlNTg2OTk0OWVlMTg5OWVhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3Rh
Z2VEZXNjcmlwdG9yLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBP
cHRpb25hbDxHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I+IFdlYkdQVVByb2dyYW1tYWJs
ZVN0YWdlRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9y
KCkgY29uc3QKIHsKICAgICBpZiAoIW1vZHVsZSB8fCAhbW9kdWxlLT5tb2R1bGUoKSB8fCBlbnRy
eVBvaW50LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBHUFVQcm9ncmFtbWFibGVTdGFnZURl
c2NyaXB0b3IgeyBtYWtlUmVmKCptb2R1bGUtPm1vZHVsZSgpKSwgKnRoaXMgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmNwcAppbmRleCBiZjQ4ZTgzYWM5Y2IwYmNiNzY1ZDQ0MGY1MTM1YTg2ZmNl
YzAxN2Y4Li40Mzk1NzE3YmI1ZWM0MzVlMTUyYmY4MTliZGVhMTYwZTJiNzEyYWYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE9wdGlvbmFsPEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVu
ZGVyCiAgICAgLy8gRklYTUU6IEltcHJvdmUgZXJyb3IgY2hlY2tpbmcgYXMgV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IgaXMgYWRkZWQgdG8gc3BlYy4KICAgICBpZiAoY29sb3JBdHRhY2htZW50
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOiBObyBjb2xvciBhdHRhY2htZW50cyBzcGVjaWZpZWQgZm9yIEdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcj4gZ3B1Q29sb3JBdHRhY2htZW50czsKQEAgLTYwLDcgKzYwLDcgQEAg
T3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yOjp0cnlDcmVhdGVHUFVSZW5kZXIKICAgICAgICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQu
YXR0YWNobWVudC0+dGV4dHVyZSgpCiAgICAgICAgICAgICB8fCAhY29sb3JBdHRhY2htZW50LmF0
dGFjaG1lbnQtPnRleHR1cmUoKS0+aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAg
IExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50
IGluIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICAgICAgZ3B1Q29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgeyBtYWtlUmVmKCpjb2xvckF0dGFjaG1lbnQu
YXR0YWNobWVudC0+dGV4dHVyZSgpKSwgY29sb3JBdHRhY2htZW50IH0pOwogICAgIH0KQEAgLTcy
LDcgKzcyLDcgQEAgT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXIKICAgICAgICAgICAgIHx8ICFkZXB0
aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCkKICAgICAgICAgICAgIHx8
ICFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50ZXh0dXJlKCktPmlzT3V0cHV0
QXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBn
cHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3IgeyBtYWtlUmVmKCpkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRhY2htZW50LT50
ZXh0dXJlKCkpLCAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCB9OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuY3BwCmluZGV4IDQ5ZjgzOTA0ZWY3Y2U5ZmJkNWI3YzlmMjRkZmRiMThk
N2EzZDk1OGMuLjQ1MDZlNTQ4MDBkYTMwZDY1NzllYWUwMzQ1MzEwYjhmOTM2OTRkZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtNDQsNyArNDQsNyBAQCBPcHRpb25hbDxH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjo6dHJ5Q3JlYXRlRwogCiAgICAgaWYgKCF2ZXJ0ZXggfHwgKGZyYWdtZW50U3RhZ2UgJiYgIWZy
YWdtZW50KSkgewogICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIklu
dmFsaWQgR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yISIpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBXZWIgR1BVIHZhbGlkYXRpb24sIGUuZy4gZmFpbCBpZiBjb2xvclN0YXRlcyBp
cyBsYXJnZXIgdGhhbiAobWF4IG51bWJlciBvZiBzdXBwb3J0ZWQgY29sb3Igc3RhdGVzKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRl
c2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5jcHAKaW5kZXggYjczYWVkNzg0YTJjMjg2NmFlNGQxNDkwOTBhMjkwMDI3
OGU2MDZlNi4uZGM4MjgyN2ZmMzA0ODY4MmUwNTA5Mjc4NDg0Yzc5MzI3NDcwZjhjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgT3B0aW9uYWw8R1BVU3dhcENoYWlu
RGVzY3JpcHRvcj4gV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcjo6YXNHUFVTd2FwQ2hhaW5EZXNj
cmkKIHsKICAgICBpZiAoIWRldmljZSkgewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ2FudmFz
Q29udGV4dDo6Y29uZmlndXJlU3dhcENoYWluKCk6IEludmFsaWQgR1BVRGV2aWNlISIpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KICAgICAKICAgICByZXR1cm4gR1BVU3dhcENoYWluRGVzY3JpcHRvciB7IG1ha2VSZWYo
ZGV2aWNlLT5kZXZpY2UoKSksICp0aGlzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXgg
NzlkNzk4YjZlNDZmZDhmMDdlYjk2NzgwNzdiNjUxODJiNjM0ZTk0Zi4uMDFmZGZlMDI5ZTQ2ZmNl
ODYyZDVlNjE2Y2ZjNDk1ZDY5Y2M2MTQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAt
NzgsNyArNzgsNyBAQCBib29sIFdlYlNvY2tldEV4dGVuc2lvbkRlZmxhdGVGcmFtZTo6cHJvY2Vz
c1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbgogICAgIGludCB3aW5kb3dCaXRz
ID0gMTU7CiAgICAgYXV0byBwYXJhbWV0ZXIgPSBzZXJ2ZXJQYXJhbWV0ZXJzLmZpbmQoIm1heF93
aW5kb3dfYml0cyIpOwogICAgIGlmIChwYXJhbWV0ZXIgIT0gc2VydmVyUGFyYW1ldGVycy5lbmQo
KSkgewotICAgICAgICB3aW5kb3dCaXRzID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50PihwYXJhbWV0ZXItPnZhbHVlKS52YWx1ZU9yKDApOworICAgICAgICB3aW5kb3dCaXRz
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihwYXJhbWV0ZXItPnZhbHVl
KS52YWx1ZV9vcigwKTsKICAgICAgICAgaWYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMg
PiAxNSkgewogICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlJlY2VpdmVkIGludmFsaWQg
bWF4X3dpbmRvd19iaXRzIHBhcmFtZXRlciJfczsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVm
ZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXggMGExYWJlYTg4M2Q3Y2NlNjRjODdmM2NhNjg3MWVh
NmEyOTk2ZjA3MC4uMWU1NWI4NzI1ZGU2MTA2ZGIyZGQwMzc1NGExYjgwYzBiOTg1ODIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVu
Y2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5k
ZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQoKQogCiAgICAgaWYgKGZyYW1lRGF0YS5zdGFn
ZVBhcmFtZXRlcnMuYm91bmRzLnNpemUoKSA+PSBNaW5pbXVtQm91bmRzVmVydGljZXMpIHsKICAg
ICAgICAgLy8gRWFjaCBwb2ludCBoYXMgdG8gbXVsdGlwbGllZCBieSB0aGUgaW52ZXJzZSBvZiBv
cmlnaW5PZmZzZXQuCi0gICAgICAgIGF1dG8gdHJhbnNmb3JtID0gb3JpZ2luT2Zmc2V0KCkucmF3
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cisg
ICAgICAgIGF1dG8gdHJhbnNmb3JtID0gb3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgICAgICBmb3IgKGF1
dG8mIHBvaW50IDogZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycy5ib3VuZHMpIHsKICAgICAgICAg
ICAgIGF1dG8gbWFwcGVkUG9pbnQgPSB0cmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQpOwogICAgICAg
ICAgICAgLy8gVGhlIHkgdmFsdWUgb2YgZWFjaCBwb2ludCBNVVNUIGJlIDAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAppbmRleCA3MDA3MWJjYmQyODlhZjNl
MGQ0MGIwODk3NzczOTlkMTQ2OTFjYTNiLi45YjA1ZjcwZTQ1YTg5OGRkMzZlNTEzNDI2ZjBlNjA4
M2EzODdhZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5j
cHAKQEAgLTEyMywxMiArMTIzLDEyIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFdlYlhSRnJhbWU6
OlBvcHVsYXRlZFBvc2U+PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoY29uc3QKICAgICAgICAg
Ly8gRklYTUU6IGNoZWNrIGlmIHNwYWNl4oCZcyBwb3NlIHJlbGF0aXZlIHRvIGJhc2VTcGFjZSBo
YXMgYmVlbiBkZXRlcm1pbmVkIGluIHRoZSBwYXN0LgogICAgICAgICAvLyBBbnl3YXkgdGhpcyBl
bXVsYXRpb24gaXMgdXN1YWxseSBwcm92aWRlZCBieSB0aGUgc3lzdGVtIGluIHRoZSBwb3NlIChl
LmcuIE9wZW5YUikKICAgICAgICAgLy8gc28gd2Ugc2hvdWxkbid0IGhpdCB0aGlzIHBhdGggaW4g
bW9zdCBYUlBsYXRmb3JtIHBvcnRzLgotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsK
KyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgYXV0byBiYXNl
VHJhbnNmb3JtID0gYmFzZVNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOwogICAgIGlmICghYmFzZVRy
YW5zZm9ybS5pc0ludmVydGlibGUoKSkKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07
CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgYXV0byB0cmFuc2Zvcm0g
PSAgKmJhc2VUcmFuc2Zvcm0uaW52ZXJzZSgpICogc3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7CiAg
ICAgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gc3BhY2UuaXNQb3NpdGlvbkVtdWxhdGVkKCkgfHwg
YmFzZVNwYWNlLmlzUG9zaXRpb25FbXVsYXRlZCgpOwpAQCAtMTkyLDcgKzE5Miw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZlB0cjxXZWJYUlZpZXdlclBvc2U+PiBXZWJYUkZyYW1lOjpnZXRWaWV3ZXJQb3Nl
KGNvbnN0IERvY3VtZW50JiBkCiAgICAgICAgICAgICByZXR1cm4gbWF0cml4OwogICAgICAgICB9
LCBbJl0oY29uc3Qgc3RkOjpudWxscHRyX3QmKSB7CiAgICAgICAgICAgICAvLyBVc2UgYXNwZWN0
IHByb2plY3Rpb24gZm9yIGlubGluZSBzZXNzaW9ucwotICAgICAgICAgICAgZG91YmxlIGZvdiA9
ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZh
bHVlT3IocGlPdmVyVHdvRG91YmxlKTsKKyAgICAgICAgICAgIGRvdWJsZSBmb3YgPSAgbV9zZXNz
aW9uLT5yZW5kZXJTdGF0ZSgpLmlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKS52YWx1ZV9vcihw
aU92ZXJUd29Eb3VibGUpOwogICAgICAgICAgICAgZmxvYXQgYXNwZWN0ID0gMTsKICAgICAgICAg
ICAgIGF1dG8gbGF5ZXIgPSBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuYmFzZUxheWVyKCk7CiAg
ICAgICAgICAgICBpZiAobGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlJlbmRlclN0YXRlLmNwcAppbmRleCAxYzhjYjY3MmZkMTFhZWM2ZWQzMjZjMDNjN2E1
YzBiNjg2ZDkzM2I5Li45NDMyYTVhZjE5MzhiNDk0YjExZTljYmM2ZDNkMzkxNDI5NTU5NjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPFdlYlhSUmVuZGVyU3RhdGU+IFdlYlhSUmVuZGVyU3Rh
dGU6OmNyZWF0ZShYUlNlc3Npb25Nb2RlIG1vZGUpCiB7CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jaW5pdGlhbGl6ZS10aGUtcmVuZGVyLXN0YXRlCiAgICAg
Ly8gZGVwdGhOZWFyLCBkZXB0aEZhciBhbmQgYmFzZUxheWVyIGFyZSBpbml0aWFsaXplZCBpbiB0
aGUgY2xhc3MgZGVmaW5pdGlvbgotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSUmVuZGVy
U3RhdGUobW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgPyBtYWtlT3B0aW9uYWwocGlPdmVy
VHdvRG91YmxlKSA6IFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSUmVuZGVyU3RhdGUobW9kZSA9PSBYUlNlc3Npb25Nb2RlOjpJbmxpbmUgPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwocGlPdmVyVHdvRG91YmxlKSA6IHN0ZDo6bnVsbG9wdCkpOwogfQogCiBXZWJYUlJl
bmRlclN0YXRlOjpXZWJYUlJlbmRlclN0YXRlKE9wdGlvbmFsPGRvdWJsZT4gaW5saW5lVmVydGlj
YWxGaWVsZE9mVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmNwcAppbmRleCA5N2QyMzJkZDJiNWVmODU5YzFiMTliYjFmYjkzYzViZWU0YjA5Y2ZlLi4w
NTRkOWFiZDk3ZmNhOWM0NzkzNDkxNDM4YWU5OTU5NjdmNzYxMWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAg
dm9pZCBXZWJYUlNlc3Npb246OmRpZENvbXBsZXRlU2h1dGRvd24oKQogICAgIC8vIFJlc29sdmUg
ZW5kIHByb21pc2UgZnJvbSBYUlNlc3Npb246OmVuZCgpCiAgICAgaWYgKG1fZW5kUHJvbWlzZSkg
ewogICAgICAgICBtX2VuZFByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgbV9lbmRQcm9taXNl
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2VuZFByb21pc2UgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgLy8gRnJvbSBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhy
LyNzaHV0LWRvd24tdGhlLXNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAKaW5kZXggNzQxYTYzODU5NTU2NjMwZjMwYTQwMjkyMTgyNzlkN2FmMWI5
ZDExZi4uNmUzYWI3YzIxMjNkMzQwNDIwMmJlNDFlMGQwZWYwYWI1ZGI0NGFlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAKQEAgLTMxOCw3ICszMTgs
NyBAQCBPcHRpb25hbDxXZWJYUlN5c3RlbTo6UmVzb2x2ZWRSZXF1ZXN0ZWRGZWF0dXJlcz4gV2Vi
WFJTeXN0ZW06OnJlc29sdmVSZXF1ZXN0ZWRGZQogICAgIH07CiAKICAgICBpZiAoIXBhcnNlRmVh
dHVyZXMocmVxdWlyZWRGZWF0dXJlc1dpdGhEZWZhdWx0RmVhdHVyZXMsIFBhcnNpbmdNb2RlOjpT
dHJpY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcGFyc2VGZWF0dXJlcyhpbml0Lm9wdGlvbmFsRmVhdHVyZXMsIFBh
cnNpbmdNb2RlOjpMb29zZSk7CiAgICAgcmV0dXJuIHJlc29sdmVkRmVhdHVyZXM7CkBAIC0zMzks
NyArMzM5LDcgQEAgT3B0aW9uYWw8V2ViWFJTeXN0ZW06OkZlYXR1cmVMaXN0PiBXZWJYUlN5c3Rl
bTo6cmVzb2x2ZUZlYXR1cmVQZXJtaXNzaW9ucyhYUlNlc3MKICAgICAvLyAgNi4xLiBTZXQgc3Rh
dHVzJ3Mgc3RhdGUgdG8gImRlbmllZCIuCiAgICAgLy8gIDYuMi4gQWJvcnQgdGhlc2Ugc3RlcHMu
CiAgICAgaWYgKCFyZXNvbHZlZEZlYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNy4gTGV0IChjb25zZW50
UmVxdWlyZWQsIGNvbnNlbnRPcHRpb25hbCwgZ3JhbnRlZCkgYmUgdGhlIGZpZWxkcyBvZiByZXN1
bHQuCiAgICAgLy8gOC4gVGhlIHVzZXIgYWdlbnQgTUFZIGF0IHRoaXMgcG9pbnQgYXNrIHRoZSB1
c2VyJ3MgcGVybWlzc2lvbiBmb3IgdGhlIGNhbGxpbmcgYWxnb3JpdGhtIHRvIHVzZSBhbnkgb2Yg
dGhlIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgK
aW5kZXggMGFjMjRiNWM2ZmY1MTBlYzM0ZWE0ODk5NDMyNGFlZmQzOTk2Mjk4Yy4uNjQ1ODU3NGUw
MTg0OTUxYWE4MDM0N2YxOTgwMzlhY2UwZThiOTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJTeXN0ZW0uaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgdm9pZCByZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVD
YWxsYmFjayYmKSBmaW5hbDsKICAgICAgICAgVmVjdG9yPERldmljZTo6Vmlld0RhdGE+IHZpZXdz
KFhSU2Vzc2lvbk1vZGUpIGNvbnN0IGZpbmFsOwotICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybVhS
OjpMYXllckhhbmRsZT4gY3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwg
Ym9vbCkgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgICAgIE9wdGlvbmFsPFBs
YXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVp
bnQzMl90LCBib29sKSBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICAgICAgdm9p
ZCBkZWxldGVMYXllcihQbGF0Zm9ybVhSOjpMYXllckhhbmRsZSkgZmluYWwgeyB9CiAgICAgfTsK
ICAgICBEdW1teUlubGluZURldmljZSBtX2RlZmF1bHRJbmxpbmVEZXZpY2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKaW5kZXggMjNjOGVlYTQxNTI3NGQwODVk
M2Y5YzM2NzI2NjgzODExZTJkODUyMS4uZmNlNmJmMTE0NWZlMDNlMGNkMTc2ZmQxNzE3YTg4ZmVl
Yzk1NTAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBXZWJYUlZpZXc6On5XZWJYUlZpZXcoKSA9IGRlZmF1bHQ7CiBPcHRp
b25hbDxkb3VibGU+IFdlYlhSVmlldzo6cmVjb21tZW5kZWRWaWV3cG9ydFNjYWxlKCkgY29uc3QK
IHsKICAgICAvLyBSZXR1cm4gbnVsbCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IGltcGxlbWVudCBh
IGhldXJpc3RpYyBvciBtZXRob2QgZm9yIGRldGVybWluaW5nIGEgcmVjb21tZW5kZWQgc2NhbGUu
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNkb20teHJ2aWV3LXJl
cXVlc3R2aWV3cG9ydHNjYWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nl
c3Npb25JRC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAppbmRleCA2Yzdh
MjYyMjU4MWEyMTZiMGU2YjcwYzdkYjJmZGE1M2NlODRmNjI5Li41YjM1NmEzMWZmYTBlOTVmYjk4
YjMzNDk5Y2FiNTE4MDgxYjYwM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1Nlc3Npb25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKQEAg
LTk5LDcgKzk5LDcgQEAgT3B0aW9uYWw8U2Vzc2lvbklEPiBTZXNzaW9uSUQ6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzZXNzaW9uSUQ7CiAgICAgZGVj
b2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9uSUQgfHwgIWlzVmFsaWRTZXNzaW9u
SURWYWx1ZSgqc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gU2Vzc2lvbklEIHsgKnNlc3Npb25J
RCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlv
bi9PdXRwdXRDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24v
T3V0cHV0Q29udGV4dC5tbQppbmRleCA5MzM0YWExMTc1Nzc5MTY3YTRjZjNiYzE3MGNhNmM3OGY0
NmVmYzFhLi4wYzkxZjY1ZDY1NDAzY2NmNWNjMjRlMzQ4ODEwNWZhMTZiZjEyNTU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQu
bW0KQEAgLTQ3LDcgKzQ3LDcgQEAgT3B0aW9uYWw8T3V0cHV0Q29udGV4dD4mIE91dHB1dENvbnRl
eHQ6OnNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPE9wdGlvbmFsPE91dHB1dENvbnRleHQ+PiBzaGFyZWRBdWRpb1ByZXNl
bnRhdGlvbk91dHB1dENvbnRleHQgPSBbXSAoKSAtPiBPcHRpb25hbDxPdXRwdXRDb250ZXh0PiB7
CiAgICAgICAgIGlmICghW1BBTDo6Z2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCld
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogICAgICAgICBBVk91dHB1dENvbnRleHQqIGNvbnRleHQgPSBbZ2V0QVZPdXRwdXRDb250ZXh0
Q2xhc3MoKSBzaGFyZWRTeXN0ZW1BdWRpb0NvbnRleHRdOwpAQCAtNTUsNyArNTUsNyBAQCBPcHRp
b25hbDxPdXRwdXRDb250ZXh0PiYgT3V0cHV0Q29udGV4dDo6c2hhcmVkQXVkaW9QcmVzZW50YXRp
b25PdXRwdXRDb250ZXh0KCkKICAgICAgICAgYXV0byBjb250ZXh0ID0gW2dldEFWT3V0cHV0Q29u
dGV4dENsYXNzKCkgc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0XTsKICNlbmRp
ZgogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gT3V0
cHV0Q29udGV4dChyZXRhaW5QdHIoY29udGV4dCkpOwogICAgIH0oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaAppbmRleCA1OWJmMjRkNWVj
MjM0MTUzMWNiMjNhNzIxYmFkMGVlZjlmNjkzOWFmLi4yNzRlMGFhZjFkZmViOGM3MjE2MTgwNzVh
YTcyYmUwNzZhNDE2NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9nY3J5cHQvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z2NyeXB0L1V0aWxpdGllcy5oCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8aW50PiBhZXNBbGdvcml0aG1Gb3JLZXlTaXplKHNpemVfdCBrZXlTaXplKQogICAgIGNhc2Ug
MjU2OgogICAgICAgICByZXR1cm4gR0NSWV9DSVBIRVJfQUVTMjU2OwogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90
YXNuMS9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEv
VXRpbGl0aWVzLmNwcAppbmRleCBjNDM4ZTQyNGY4YzNlZTliZjc2MzVjZjA3NmJhZDEzZDU1ODQ4
NzcxLi40NTVlMDgzOTNlZTUwMzY4ZDc4NDc4NTI5NzI5NjIzZjYwYjg0NzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKQEAgLTEy
NiwxOCArMTI2LDE4IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZWxlbWVudERhdGEoYXNu
MV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1lbnROYW1lKQogICAgIHVuc2lnbmVkIHR5cGUg
PSAwOwogICAgIGludCByZXQgPSBhc24xX3JlYWRfdmFsdWVfdHlwZShyb290LCBlbGVtZW50TmFt
ZSwgbnVsbHB0ciwgJmxlbmd0aCwgJnR5cGUpOwogICAgIGlmIChyZXQgIT0gQVNOMV9NRU1fRVJS
T1IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAodHlwZSA9PSBBU04xX0VUWVBFX0JJVF9TVFJJTkcpIHsKICAgICAg
ICAgaWYgKGxlbmd0aCAlIDgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbGVuZ3RoIC89IDg7CiAgICAg
fQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEobGVuZ3RoKTsKICAgICByZXQgPSBhc24xX3Jl
YWRfdmFsdWUocm9vdCwgZWxlbWVudE5hbWUsIGRhdGEuZGF0YSgpLCAmbGVuZ3RoKTsKICAgICBp
ZiAocmV0ICE9IEFTTjFfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpAQCAtMTQ3
LDEyICsxNDcsMTIgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNvZGVkRGF0YShhc24x
X25vZGUgcm9vdCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCiAgICAgaW50IGxlbmd0aCA9IDA7
CiAgICAgaW50IHJldCA9IGFzbjFfZGVyX2NvZGluZyhyb290LCBlbGVtZW50TmFtZSwgbnVsbHB0
ciwgJmxlbmd0aCwgbnVsbHB0cik7CiAgICAgaWYgKHJldCAhPSBBU04xX01FTV9FUlJPUikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGxlbmd0aCk7CiAgICAgcmV0ID0gYXNuMV9kZXJf
Y29kaW5nKHJvb3QsIGVsZW1lbnROYW1lLCBkYXRhLmRhdGEoKSwgJmxlbmd0aCwgbnVsbHB0cik7
CiAgICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4
IGFmY2M2ZGJkMmJlNjA5ZjRmYmEwOGFmOTE5NDdhZGU5YzJiMWE5YjAuLmVhYjgwNDViYTc4YTI1
ZjRmNTUzMmJkMjY5MTJlOGE0Y2I1MTJiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMjA3Niw3ICsyMDc2LDcgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UKIAogICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uo
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogICAgIGlmICghc2VhcmNoUmFuZ2UgfHwgc2Vh
cmNoUmFuZ2UtPmNvbGxhcHNlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB0YXJnZXRPZmZzZXQgPSBjaGFy
YWN0ZXJDb3VudCh7IHNlYXJjaFJhbmdlLT5zdGFydCwgb3JpZ2luYWxSYW5nZS5zdGFydCB9LCBU
ZXh0SXRlcmF0b3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAg
ICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KCpzZWFyY2hSYW5nZSwgbWF0Y2hUZXh0LCB7
IH0sIHRhcmdldE9mZnNldCk7CkBAIC0yMTI0LDcgKzIxMjQsNyBAQCBzdGF0aWMgTm9kZSogcmVz
ZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKE5vZGUmIHJlcGxhY2VkTm9kZSwgaW50JiBv
ZmZzZXQsCiBzdGF0aWMgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gYm91bmRhcnlQb2ludChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9vbCBpc1N0YXJ0KQogewogICAg
IGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgb2Zmc2V0ID0gY2hh
cmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXggKyBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwogICAgIE5v
ZGUqIG5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKQEAgLTIxNDAsNyArMjE0MCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYgY2hhcmFjdGVyT2ZmCiAgICAgICAgIG5vZGUgPSByZXNldE5vZGVBbmRPZmZzZXRG
b3JSZXBsYWNlZE5vZGUoKm5vZGUsIG9mZnNldCwgY2hhcmFjdGVyQ291bnQpOwogCiAgICAgaWYg
KCFub2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqbm9kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG9mZnNldCkgfSB9OwogfQpAQCAtMjE2Myw3ICsyMTYzLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25z
dCBDaGEKICAgICBhdXRvIHN0YXJ0ID0gYm91bmRhcnlQb2ludChhbHJlYWR5SW5PcmRlciA/IGNo
YXJhY3Rlck9mZnNldDEgOiBjaGFyYWN0ZXJPZmZzZXQyLCB0cnVlKTsKICAgICBhdXRvIGVuZCA9
IGJvdW5kYXJ5UG9pbnQoYWxyZWFkeUluT3JkZXIgPyBjaGFyYWN0ZXJPZmZzZXQyIDogY2hhcmFj
dGVyT2Zmc2V0MSwgZmFsc2UpOwogICAgIGlmICghc3RhcnQgfHwgIWVuZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4geyB7ICpzdGFydCwgKiBlbmQgfSB9OwogfQogCkBAIC0yNDUyLDE2ICsyNDUyLDE2IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JU
ZXh0TWFya2VyRGF0YShUZXh0TWFyCiBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zKQogewogICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKTsKICAgICBO
b2RlKiBkb21Ob2RlID0gZGVlcFBvcy5kZXByZWNhdGVkTm9kZSgpOwogICAgIEFTU0VSVChkb21O
b2RlKTsKICAgICBpZiAoIWRvbU5vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBh
biBhbmNob3IgdHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVk
IG5vZGUsIHdlIHNob3VsZAogICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3aXRoIENo
YXJhY3Rlck9mZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBu
b2RlLgpAQCAtMjQ3NSw3ICsyNDc1LDcgQEAgT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFYKICAgICAv
LyBmaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3IgdGhpcyBub2RlCiAg
ICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb21Ob2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBvYmogPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CiAKICAgICAvLyBUaGlzIG1lbW9y
eSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRl
c3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KQEAgLTI1MDAsMTUgKzI1MDAsMTUgQEAgT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFYKIE9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hl
Ojp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRNTElucHV0RWxl
bWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250
cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
dGV4dENvbnRyb2wuZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSBjYWNoZS0+Z2V0T3JD
cmVhdGUoJnRleHRDb250cm9sKTsKICAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgbWVt
b3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUg
dGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlz
a3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCAzZjc0
ZTk1ZTkxYWQ3OWQ1MjgzOGE3MGVkOGFlYTdkMjMxMGFkYTVmLi41YzNiZjJmMTdmNjg5N2RiMTU4
M2NlZGMzNTA2Yjk1OTVhZWE4OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuaApAQCAtNjIxLDcgKzYyMSw3IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKFJlbmRlck9iamVjdCopIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoTm9kZSopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0SXNTeW5jaHJvbml6aW5nU2VsZWN0aW9uKGJv
b2wpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dFNlbGVjdGlvbkludGVu
dChjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYpIHsgfQotaW5saW5lIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNl
dHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JikgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CitpbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0
Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
IGlubGluZSBJbnRSZWN0IEFYT2JqZWN0Q2FjaGU6OmFic29sdXRlQ2FyZXRCb3VuZHNGb3JDaGFy
YWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JikgeyByZXR1cm4gSW50UmVjdCgpOyB9
CiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZv
ckluZGV4KGludCwgY29uc3QgQVhDb3JlT2JqZWN0KikgeyByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0
KCk7IH0KIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENo
YXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCwgYm9vbCkgeyBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDU0Mzk1MjlhYTc5NjA5Mzk4
OWViZDQzYWRhZWVmODhjNGRkZmZiMjcuLjVkZmRkOGQyM2JhMmY2MDkxZmY0ZmFkNmY2MTMzOTZj
ODE5NDE5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjgxLDIwICsyODEsMjAgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHMKIHsKICAgICBhdXRvIG5vZGUgPSB0aGlzLT5ub2RlKCk7CiAgICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZnJh
bWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS0+ZWRpdG9yKCk7CiAKICAgICBU
ZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIgPSBlZGl0b3IudGV4dENoZWNrZXIoKTsKICAg
ICBpZiAoIXRleHRDaGVja2VyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4g
bWlzc3BlbGxpbmdzOwogICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKCp0ZXh0Q2hlY2tlciwgc3Ry
aW5nVmFsdWUoKSwgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcsIG1pc3NwZWxsaW5ncywgZnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgcwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpibG9ja3F1b3RlTGV2ZWwoKSBjb25zdApAQCAtNTI2LDcgKzUyNiw3IEBAIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpyYW5nZU9mU3RyaW5nQ2xv
c2VzdFRvUmFuZ2VJbkRpcmVjdGlvCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGJvb2wgaXNCYWNrd2FyZFNlYXJjaCA9
IHNlYXJjaERpcmVjdGlvbiA9PSBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uOjpQcmV2aW91
czsKICAgICBGaW5kT3B0aW9ucyBmaW5kT3B0aW9ucyB7IEF0V29yZFN0YXJ0cywgQXRXb3JkRW5k
cywgQ2FzZUluc2Vuc2l0aXZlLCBTdGFydEluU2VsZWN0aW9uIH07CkBAIC01NTcsNyArNTU3LDcg
QEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblJh
bmdlKCkgY29uc3QKIHsKICAgICBhdXRvIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGF1dG8gcmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuZmlyc3RSYW5nZSgpKQogICAgICAgICByZXR1cm4gKnJhbmdlOwpAQCAtNTkxLDcg
KzU5MSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpmaW5k
VGV4dFJhbmdlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzCiAgICAgICAgIGlmIChlbGVtZW50KCkg
JiYgZWxlbWVudCgpLT5pc1RleHRGaWVsZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWZvdW5kLT5z
dGFydENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKGVsZW1lbnQo
KSkKICAgICAgICAgICAgICAgICB8fCAhZm91bmQtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFu
dE9yU2hhZG93RGVzY2VuZGFudE9mKGVsZW1lbnQoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBmb3VuZDsKQEAgLTExMDcsMTcgKzExMDcsMTcgQEAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlRm9yUGxhaW5U
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXgKIHsKICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZ2V0
TGVuZ3RoRm9yVGV4dFJhbmdlKCk7CiAgICAgaWYgKHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3Ro
ID4gdGV4dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAvLyBBdm9pZCBzZXR0aW5nIHNlbGVjdGlvbiB0byB1bmVk
aXRhYmxlIHBhcmVudCBub2RlIGluIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlLiBT
ZWUgd2Via2l0Lm9yZy9iLzIwNjA5My4KICAgICBpZiAocmFuZ2UuaXNOdWxsKCkgJiYgIXRleHRM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RD
YWNoZSgpKSB7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5jaGFyYWN0
ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5zdGFydCwgdGhpcyk7CiAgICAgICAgIENoYXJhY3Rlck9m
ZnNldCBlbmQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2Uuc3RhcnQgKyBy
YW5nZS5sZW5ndGgsIHRoaXMpOwogICAgICAgICByZXR1cm4gY2FjaGUtPnJhbmdlRm9yVW5vcmRl
cmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydCwgZW5kKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBWaXNpYmxlUG9zaXRpb25S
YW5nZSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggYmQ3MWNmMGQzNTM2NDBiMjVlYzdlNjc2M2VjYmQ2Njgy
NWU1MTgxOS4uNDg5NGY4NzcxZGNhNTM5YjE1MmY2ZmVkNTcxMDdjYzBkMWZhNjlkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTIzOTMsNyArMjM5Myw3IEBA
IC0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZQog
LSAoT3B0aW9uYWw8U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5n
ZQogewogICAgIGlmIChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
b3VyIGNyaXRpY2FsIGFzc3VtcHRpb24gaXMgdGhhdCB3ZSBhcmUgb25seSBjYWxsZWQgYnkgaW5w
dXQgbWV0aG9kcyB0aGF0CiAgICAgLy8gY29uY2VudHJhdGUgb24gYSBnaXZlbiBhcmVhIGNvbnRh
aW5pbmcgdGhlIHNlbGVjdGlvbgpAQCAtMjQwNSw3ICsyNDA1LDcgQEAgLSAoT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZQogICAgIGF1dG8gc2Vs
ZWN0aW9uUm9vdCA9IGRvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5y
b290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgYXV0byBzY29wZSA9IHNlbGVjdGlvblJvb3QgPyBz
ZWxlY3Rpb25Sb290IDogZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghc2Nv
cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cygqc2NvcGUpLCByYW5nZSk7CiB9CkBAIC0yNzc4LDExICsyNzc4LDEx
IEBAIC0gKE9wdGlvbmFsPFNpbXBsZVJhbmdlPilyYW5nZUZyb21NYXJrZXJzOihOU0FycmF5ICop
bWFya2VycyB3aXRoVGV4dDooTlNTdHJpbmcKIHsKICAgICBhdXRvIG9yaWdpbmFsUmFuZ2UgPSBb
c2VsZiByYW5nZUZvclRleHRNYXJrZXJzOm1hcmtlcnNdOwogICAgIGlmICghb3JpZ2luYWxSYW5n
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1
cm4gY2FjaGUtPnJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoKm9yaWdpbmFsUmFuZ2UsIHRleHQp
OwogfQpAQCAtMjg1MSwxNyArMjg1MSwxNyBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZQogLSAo
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0
TWFya2VycwogewogICAgIGlmIChbdGV4dE1hcmtlcnMgY291bnRdICE9IDIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKnN0YXJ0TWFya2VyID0gW3RleHRNYXJrZXJz
IG9iamVjdEF0SW5kZXg6MF07CiAgICAgV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKmVuZE1h
cmtlciA9IFt0ZXh0TWFya2VycyBvYmplY3RBdEluZGV4OjFdOwogICAgIAogICAgIGlmICghW3N0
YXJ0TWFya2VyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNsYXNz
XV0gfHwgIVtlbmRNYXJrZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSBbc3RhcnRNYXJrZXIg
Y2hhcmFjdGVyT2Zmc2V0XTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0
ID0gW2VuZE1hcmtlciBjaGFyYWN0ZXJPZmZzZXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cAppbmRleCBhZTVjM2Q5MTVkMGVkNTE0YjYyMjhjNzhkMThhOWEzNjQzMGUxNTY4Li5kNjQ2NzA2
MWM2NWQ0ODc2ODUwYmUxYWNkZjIxNzRhMzgyMzBmNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmNwcApAQCAtOTcwLDcgKzk3MCw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xh
dGVkT2JqZWN0OjpyYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0
ZWRBWE9iamVjdCgpOwotICAgIHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT5yYW5nZUZvclBs
YWluVGV4dFJhbmdlKGF4UmFuZ2UpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBheE9iamVj
dCA/IGF4T2JqZWN0LT5yYW5nZUZvclBsYWluVGV4dFJhbmdlKGF4UmFuZ2UpIDogc3RkOjpudWxs
b3B0OwogfQogCiBTdHJpbmcgQVhJc29sYXRlZE9iamVjdDo6c3RyaW5nRm9yUmFuZ2UoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlKSBjb25zdApAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmcKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8q
IGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7Ci0gICAgcmV0dXJuIGF4T2JqZWN0ID8g
YXhPYmplY3QtPm1pc3NwZWxsaW5nUmFuZ2UocmFuZ2UsIGRpcmVjdGlvbikgOiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmplY3QtPm1pc3NwZWxsaW5nUmFuZ2UocmFu
Z2UsIGRpcmVjdGlvbikgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEZsb2F0UmVjdCBBWElzb2xhdGVk
T2JqZWN0OjpyZWxhdGl2ZUZyYW1lKCkgY29uc3QKQEAgLTE0NDIsNyArMTQ0Miw3IEBAIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50UmFuZ2UoKSBjb25zdAog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogYXhPYmplY3QgPSBhc3Nv
Y2lhdGVkQVhPYmplY3QoKTsKLSAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+ZWxlbWVu
dFJhbmdlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmplY3Qt
PmVsZW1lbnRSYW5nZSgpIDogc3RkOjpudWxsb3B0OwogfQogCiBTdHJpbmcgQVhJc29sYXRlZE9i
amVjdDo6c2VsZWN0ZWRUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDNjZjRhMmE4YjI2MzExMmFh
ZGJkYWZlZGQwMjk5YzJlNDQxY2QwYjYuLmM4OGEzZDY2MTMzNmE1ZGUxZTBmMTk0NThlMzhjMDMy
NDI3NjcwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNzY1LDEyICs3NjUsMTIgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXIKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghY2FjaGUg
fHwgIXRleHRNYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnRUZXh0TWFya2VyID0gQVhU
ZXh0TWFya2VyUmFuZ2VTdGFydCh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIGF1dG8gZW5kVGV4dE1h
cmtlciA9IEFYVGV4dE1hcmtlclJhbmdlRW5kKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgaWYgKCFz
dGFydFRleHRNYXJrZXIgfHwgIWVuZFRleHRNYXJrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDaGFyYWN0ZXJPZmZz
ZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNh
Y2hlLCBzdGFydFRleHRNYXJrZXIuZ2V0KCkpOwogICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFy
YWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCBlbmRUZXh0
TWFya2VyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpp
bmRleCA0NDg1ODdkYThiYzhiNDU2ZjVmMWNkZjgzYTJiYzZlYzhiOTdiOTY3Li5hZGM3NDA1ODVl
OTIxZTAxYjJlZDk4ZjVjZDYwYTdiMWFmOTVjNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCkBAIC02NjEsNyArNjYxLDcgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXkgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHUKIHN0YXRpYyBPcHRpb25hbDxBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5PiBtYWtlVmVjdG9y
RWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5KiwgaWQgYXJyYXlFbGVtZW50KQog
ewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4geyB7IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoYXJyYXlF
bGVtZW50KSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9B
bmltYXRpb25FZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVm
ZmVjdC5jcHAKaW5kZXggNzJhOWVmMWI1MWNmYTdiZTA0ZTdjOWI1YzYzOGIxODQyNDA2NTQyMi4u
YzllOGRmMWZjZDU4N2U5YTFhMjgwMmNmODQ0Mjg5NWIyOWQxYmMyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQmFz
aWNFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxT
ZWNvbmRzPiBzdGFydFRpbWUpIGMKICAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgbG9jYWwgdGlt
ZSBpcyB1bnJlc29sdmVkLgogICAgICAgICBpZiAobV9hbmltYXRpb24pCiAgICAgICAgICAgICBy
ZXR1cm4gbV9hbmltYXRpb24tPmN1cnJlbnRUaW1lKHN0YXJ0VGltZSk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSgpOwog
CiAgICAgYXV0byBwaGFzZSA9IFt0aGlzLCBsb2NhbFRpbWVdKCkgLT4gQW5pbWF0aW9uRWZmZWN0
UGhhc2UgewpAQCAtMTM1LDcgKzEzNSw3IEBAIEJhc2ljRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVm
ZmVjdDo6Z2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjCiAgICAg
ICAgICAgICBpZiAobV9maWxsID09IEZpbGxNb2RlOjpCYWNrd2FyZHMgfHwgbV9maWxsID09IEZp
bGxNb2RlOjpCb3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heCgqbG9jYWxUaW1l
IC0gbV9kZWxheSwgMF9zKTsKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIGFuIHVu
cmVzb2x2ZWQgdGltZSB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8g
SWYgdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhlIGFjdGl2ZSBwaGFzZSwgcmV0dXJuIHRo
ZSByZXN1bHQgb2YgZXZhbHVhdGluZyBsb2NhbCB0aW1lIC0gc3RhcnQgZGVsYXkuCkBAIC0xNTAs
MTEgKzE1MCwxMSBAQCBCYXNpY0VmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJhc2lj
VGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgYwogICAgICAgICAgICAgaWYgKG1f
ZmlsbCA9PSBGaWxsTW9kZTo6Rm9yd2FyZHMgfHwgbV9maWxsID09IEZpbGxNb2RlOjpCb3RoKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChzdGQ6Om1pbigqbG9jYWxUaW1lIC0gbV9k
ZWxheSwgbV9hY3RpdmVEdXJhdGlvbiksIDBfcyk7CiAgICAgICAgICAgICAvLyBPdGhlcndpc2Us
IHJldHVybiBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE90aGVyd2lzZSAodGhlIGxvY2FsIHRpbWUgaXMgdW5yZXNvbHZlZCksIHJl
dHVybiBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSgpOwogCiAgICAgcmV0dXJu
IHsgbG9jYWxUaW1lLCBhY3RpdmVUaW1lLCBtX2VuZFRpbWUsIG1fYWN0aXZlRHVyYXRpb24sIHBo
YXNlIH07CkBAIC0xODUsNyArMTg1LDcgQEAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5pbWF0aW9u
RWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFQKIAogICAg
ICAgICAvLyAxLiBJZiB0aGUgYWN0aXZlIHRpbWUgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVz
b2x2ZWQuCiAgICAgICAgIGlmICghYWN0aXZlVGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8v
IDIuIENhbGN1bGF0ZSBhbiBpbml0aWFsIHZhbHVlIGZvciBvdmVyYWxsIHByb2dyZXNzIGJhc2Vk
IG9uIHRoZSBmaXJzdCBtYXRjaGluZyBjb25kaXRpb24gZnJvbSBiZWxvdywKICAgICAgICAgZG91
YmxlIG92ZXJhbGxQcm9ncmVzczsKQEAgLTIxNCw3ICsyMTQsNyBAQCBDb21wdXRlZEVmZmVjdFRp
bWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+
IHN0YXJ0VAogCiAgICAgICAgIC8vIDEuIElmIHRoZSBvdmVyYWxsIHByb2dyZXNzIGlzIHVucmVz
b2x2ZWQsIHJldHVybiB1bnJlc29sdmVkLgogICAgICAgICBpZiAoIW92ZXJhbGxQcm9ncmVzcykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIC8vIDIuIElmIG92ZXJhbGwgcHJvZ3Jlc3MgaXMgaW5maW5p
dHksIGxldCB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9ncmVzcyBiZSBpdGVyYXRpb24gc3RhcnQg
JSAxLjAsCiAgICAgICAgIC8vIG90aGVyd2lzZSwgbGV0IHRoZSBzaW1wbGUgaXRlcmF0aW9uIHBy
b2dyZXNzIGJlIG92ZXJhbGwgcHJvZ3Jlc3MgJSAxLjAuCkBAIC0yNDEsNyArMjQxLDcgQEAgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhPcHRp
b25hbDxTZWNvbmRzPiBzdGFydFQKIAogICAgICAgICAvLyAxLiBJZiB0aGUgYWN0aXZlIHRpbWUg
aXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICghYWN0aXZlVGlt
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDIuIElmIHRoZSBhbmltYXRpb24gZWZmZWN0IGlz
IGluIHRoZSBhZnRlciBwaGFzZSBhbmQgdGhlIGl0ZXJhdGlvbiBjb3VudCBpcyBpbmZpbml0eSwg
cmV0dXJuIGluZmluaXR5LgogICAgICAgICBpZiAocGhhc2UgPT0gQW5pbWF0aW9uRWZmZWN0UGhh
c2U6OkFmdGVyICYmIHN0ZDo6aXNpbmYobV9pdGVyYXRpb25zKSkKQEAgLTI5MCw3ICsyOTAsNyBA
QCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5n
KE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogCiAgICAgICAgIC8vIDEuIElmIHRoZSBzaW1wbGUg
aXRlcmF0aW9uIHByb2dyZXNzIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJlc29sdmVkLgogICAg
ICAgICBpZiAoIXNpbXBsZUl0ZXJhdGlvblByb2dyZXNzKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
Ly8gMi4gQ2FsY3VsYXRlIHRoZSBjdXJyZW50IGRpcmVjdGlvbiAod2UgaW1wbGVtZW50IHRoaXMg
YXMgYSBzZXBhcmF0ZSBtZXRob2QpLgogCkBAIC0zMTAsNyArMzEwLDcgQEAgQ29tcHV0ZWRFZmZl
Y3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNv
bmRzPiBzdGFydFQKICAgICAgICAgLy8KICAgICAgICAgLy8gMS4gSWYgdGhlIGRpcmVjdGVkIHBy
b2dyZXNzIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJlc29sdmVkLgogICAgICAgICBpZiAoIWRp
cmVjdGVkUHJvZ3Jlc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoYXV0byBpdGVyYXRpb25E
dXJhdGlvbiA9IG1faXRlcmF0aW9uRHVyYXRpb24uc2Vjb25kcygpKSB7CiAgICAgICAgICAgICBi
b29sIGJlZm9yZSA9IGZhbHNlOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIHZvaWQgQW5pbWF0aW9uRWZm
ZWN0OjpzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBSZWZQdHI8VGltaW5nRnVuY3Rpb24+JiB0aW1p
bmdGdW5jCiBPcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvbkVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5l
eHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykgY29uc3QKIHsKICAgICBpZiAoIWlzPFN0
ZXBzVGltaW5nRnVuY3Rpb24+KG1fdGltaW5nRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBudW1i
ZXJPZlN0ZXBzID0gZG93bmNhc3Q8U3RlcHNUaW1pbmdGdW5jdGlvbj4oKm1fdGltaW5nRnVuY3Rp
b24pLm51bWJlck9mU3RlcHMoKTsKICAgICBhdXRvIG5leHRTdGVwUHJvZ3Jlc3MgPSBjZWlsKGl0
ZXJhdGlvblByb2dyZXNzICogbnVtYmVyT2ZTdGVwcykgLyBudW1iZXJPZlN0ZXBzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCmluZGV4IGZkZGM4NjcyZmY1MGU1
ZDM3ZjBlM2RiYzYxYjQxNTM1MGU2MzMxZmEuLmEwMmQyNjI5Y2NiYjkyOTc0MTM0MmFjZDdkYTEw
YTE0OGM1YzcwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0
LmgKQEAgLTU1LDEzICs1NSwxMyBAQCBwdWJsaWM6CiAKICAgICBFZmZlY3RUaW1pbmcgZ2V0Qmlu
ZGluZ3NUaW1pbmcoKSBjb25zdDsKICAgICBFZmZlY3RUaW1pbmcgZ2V0VGltaW5nKCkgY29uc3Q7
Ci0gICAgQmFzaWNFZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4g
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIEJhc2ljRWZmZWN0VGltaW5nIGdldEJhc2ljVGlt
aW5nKE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBDb21wdXRl
ZEVmZmVjdFRpbWluZyBnZXRCaW5kaW5nc0NvbXB1dGVkVGltaW5nKCkgY29uc3Q7Ci0gICAgQ29t
cHV0ZWRFZmZlY3RUaW1pbmcgZ2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gPSBX
VEY6Om51bGxvcHQpIGNvbnN0OworICAgIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldENvbXB1dGVk
VGltaW5nKE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBiaW5kaW5nc1VwZGF0ZVRpbWluZyhPcHRpb25hbDxPcHRpb25hbEVmZmVj
dFRpbWluZz4pOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHVwZGF0ZVRpbWluZyhPcHRpb25hbDxP
cHRpb25hbEVmZmVjdFRpbWluZz4pOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwg
T3B0aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRp
b25EaWRUaWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25EaWRQbGF5KCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNr
RXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZl
bnQuY3BwCmluZGV4IDgyOWEzYmRhM2Q4ODNkZjg1NzcxMDRmYzJlODU5MGVhOTJjYjExOGYuLmEy
NjcwZDc5MjA5NjhjMGEyNTQxZDc2ZjYxYjIwMDNlNDVhODQzODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKQEAgLTM5LDEy
ICszOSwxMiBAQCBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5YmFja0V2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEFuaQogICAgIGlmIChpbml0aWFsaXplci5j
dXJyZW50VGltZSkKICAgICAgICAgbV9jdXJyZW50VGltZSA9IFNlY29uZHM6OmZyb21NaWxsaXNl
Y29uZHMoKmluaXRpYWxpemVyLmN1cnJlbnRUaW1lKTsKICAgICBlbHNlCi0gICAgICAgIG1fY3Vy
cmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fY3VycmVudFRpbWUgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoaW5pdGlhbGl6ZXIudGltZWxpbmVUaW1lKQogICAgICAgICBtX3Rp
bWVsaW5lVGltZSA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKmluaXRpYWxpemVyLnRpbWVs
aW5lVGltZSk7CiAgICAgZWxzZQotICAgICAgICBtX3RpbWVsaW5lVGltZSA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV90aW1lbGluZVRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIEFuaW1hdGlv
blBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+IHRp
bWVsaW5lVGltZSwgV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCkBAIC01OCwxNCArNTgsMTQgQEAg
QW5pbWF0aW9uUGxheWJhY2tFdmVudDo6fkFuaW1hdGlvblBsYXliYWNrRXZlbnQoKSA9IGRlZmF1
bHQ7CiBPcHRpb25hbDxkb3VibGU+IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzQ3Vy
cmVudFRpbWUoKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50VGltZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUobV9jdXJyZW50VGltZS52YWx1ZSgpKTsK
IH0KIAogT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpiaW5kaW5nc1Rp
bWVsaW5lVGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCF0aW1lbGluZVRpbWUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUodGltZWxpbmVUaW1lKCkudmFsdWUo
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25U
aW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
Y3BwCmluZGV4IGFlZjMxZDMwMWU3NTgwYWUyNGNkNWI3NmEyYjE0MGM2YmJiODU1OWMuLjUwMjc0
NGRmZGIyNDZhMWY2NDQxZmIxYzdmMWJiOWVkOWRjNDkwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAtNzgsNyArNzgsNyBAQCBPcHRp
b25hbDxkb3VibGU+IEFuaW1hdGlvblRpbWVsaW5lOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkKIHsK
ICAgICBhdXRvIHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIGlmICghdGltZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoKnRpbWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCA3
ZDJjYjkxNzRjYjI4NTc4ZDBjMGRmNjA3NThkZTA2OTg1YjczM2E3Li4xYjQyN2I3ZTdiYjY2MWZi
ODkzNTUzMDY3ODFiZTFjNWJlMDgxNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE5NjAsNyArMTk2MCw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgQXV0b1Byb3BlcnR5V3JhcHBlciBmaW5hbCA6IHB1Ymxp
YyBQcm9wZXJ0eVdyYXBwZXI8VD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIEF1dG9Qcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgVCAo
UmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
KShUKSwgYm9vbCAoUmVuZGVyU3R5bGU6OiphdXRvR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KmF1dG9TZXR0ZXIpKCksIE9wdGlvbmFsPFQ+IG1pblZhbHVlID0gV1RGOjpudWxs
b3B0KQorICAgIEF1dG9Qcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgVCAo
UmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
KShUKSwgYm9vbCAoUmVuZGVyU3R5bGU6OiphdXRvR2V0dGVyKSgpIGNvbnN0LCB2b2lkIChSZW5k
ZXJTdHlsZTo6KmF1dG9TZXR0ZXIpKCksIE9wdGlvbmFsPFQ+IG1pblZhbHVlID0gc3RkOjpudWxs
b3B0KQogICAgICAgICA6IFByb3BlcnR5V3JhcHBlcjxUPihwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0
ZXIpCiAgICAgICAgICwgbV9hdXRvR2V0dGVyKGF1dG9HZXR0ZXIpCiAgICAgICAgICwgbV9hdXRv
U2V0dGVyKGF1dG9TZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xh
cmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCA3YTY0NGQzY2FkMmE5OTAyNzNjZmFhYzBhN2UyYmU2
YTg5MzA3YmE4Li43MjVlOGZiYWEwYjE4NjMzODYzMzEwZjI5N2YyOGU5OTAxMTNlODQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6b3duaW5nRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3duaW5n
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9vd25pbmdFbGVtZW50LmdldCgp
LCBtX293bmluZ1BzZXVkb0lkKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnRpY2soKQpA
QCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmVucXVldWVET01F
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMKIAogICAgIGF1dG8gdGlt
ZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBzZWRUaW1lKSAvIDEwMDA7CiAg
ICAgYXV0byBwc2V1ZG9JZCA9IHBzZXVkb0lkQXNTdHJpbmcobV9vd25pbmdQc2V1ZG9JZCk7Ci0g
ICAgYXV0byB0aW1lbGluZVRpbWUgPSB0aW1lbGluZSgpID8gdGltZWxpbmUoKS0+Y3VycmVudFRp
bWUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHRpbWVsaW5lVGltZSA9IHRpbWVsaW5lKCkg
PyB0aW1lbGluZSgpLT5jdXJyZW50VGltZSgpIDogc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZXZl
bnQgPSBjcmVhdGVFdmVudChldmVudFR5cGUsIHRpbWUsIHBzZXVkb0lkLCB0aW1lbGluZVRpbWUp
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQobV9vd25pbmdFbGVtZW50LmdldCgpKTsKICAgICBlbnF1
ZXVlQW5pbWF0aW9uRXZlbnQoV1RGTW92ZShldmVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IGFmM2FjMmM2NDliNDIyOTcxMmIxYTEw
ODlkZTIzNzhhMGQzMTI4OGEuLjQ5MTQ0MTE4ZTI3YjcxNDdjYjlmZDkwY2E0OWJmMGIzNDM3NTY1
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAK
QEAgLTEzOSw3ICsxMzksNyBAQCBPcHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lOjpj
dXJyZW50VGltZSgpCiAgICAgaWYgKGF1dG8qIGNvbnRyb2xsZXIgPSB0aGlzLT5jb250cm9sbGVy
KCkpIHsKICAgICAgICAgaWYgKGF1dG8gY3VycmVudFRpbWUgPSBjb250cm9sbGVyLT5jdXJyZW50
VGltZSgpKQogICAgICAgICAgICAgcmV0dXJuICpjdXJyZW50VGltZSAtIG1fb3JpZ2luVGltZTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAgICAgcmV0dXJuIEFuaW1hdGlvblRpbWVsaW5lOjpjdXJyZW50VGltZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVz
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZXNDb250cm9sbGVyLmNwcAppbmRleCBjYjI2YzdiZDdlNDQ0MjM2NWU1MzE4MjM1Y2U3OWZjMjA0
NjYyZWYyLi5iZjkyY2M3MDRjZjRjNzRiNjllNzk3ZTMyZjMwMzFiZmRmYjA2YmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250
cm9sbGVyLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250
cm9sbGVyOjpyZXN1bWVBbmltYXRpb25zKCkKICAgICBpZiAoIW1faXNTdXNwZW5kZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIG1faXNTdXNwZW5k
ZWQgPSBmYWxzZTsKIApAQCAtMjE3LDcgKzIxNyw3IEBAIFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25k
cyBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmxpdmVDdXJyZW50VGltZSgpIGNvbnN0CiBP
cHRpb25hbDxTZWNvbmRzPiBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OmN1cnJlbnRUaW1l
KCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQuZG9tV2luZG93KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1f
Y2FjaGVkQ3VycmVudFRpbWUpCiAgICAgICAgIGNhY2hlQ3VycmVudFRpbWUobGl2ZUN1cnJlbnRU
aW1lKCkpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZXNDb250cm9s
bGVyOjptYXliZUNsZWFyQ2FjaGVkQ3VycmVudFRpbWUoKQogICAgIC8vIHdlJ3JlIGd1YXJhbnRl
ZWQgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgY3VycmVudCB0aW1lIHJlcG9ydGVkIGZvciBhbGwgd29y
ayBoYXBwZW5pbmcgaW4gYSBnaXZlbgogICAgIC8vIEpTIGZyYW1lIG9yIHRocm91Z2hvdXQgdXBk
YXRpbmcgYW5pbWF0aW9ucyBpbiBXZWJDb3JlLgogICAgIGlmICghbV9pc1N1c3BlbmRlZCAmJiAh
bV93YWl0aW5nT25WTUlkbGUgJiYgIW1fY3VycmVudFRpbWVDbGVhcmluZ1Rhc2tRdWV1ZS5oYXNQ
ZW5kaW5nVGFza3MoKSkKLSAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5jcHAKaW5kZXggN2QxMjAxMGU2MWE0ODlhYzA2OGZlMDY5OWRiZGIzODUwM2Y3NWI5ZS4u
NTcxZjAzNWIyNmNjMDM4MjVkNmUyOTFhZDczN2M0MjIwMjNjNDY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgc3Rh
dGljIGlubGluZSBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJh
bWVzKEpTR2xvYmFsT2JqZWN0JgogICAgIGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
ZG91YmxlPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQog
ICAgICAgICBvZmZzZXRzLmFwcGVuZChXVEY6OmdldDxkb3VibGU+KHByb3BlcnR5SW5kZXhlZEtl
eWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpOwogICAgIGVsc2UgaWYgKFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8c3RkOjpudWxscHRyX3Q+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQ
cm9wZXJ0aWVzLm9mZnNldCkpCi0gICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIG9mZnNldHMuYXBwZW5kKHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyA2LiBBc3Np
Z24gZWFjaCB2YWx1ZSBpbiBvZmZzZXRzIHRvIHRoZSBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGtl
eWZyYW1lIHdpdGggY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiBwcm9wZXJ0eSBrZXlmcmFtZXMg
dW50aWwgdGhlIGVuZCBvZiBlaXRoZXIgc2VxdWVuY2UgaXMgcmVhY2hlZC4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9mZnNldHMuc2l6ZSgpICYmIGkgPCBwYXJzZWRLZXlmcmFtZXMuc2l6
ZSgpOyArK2kpCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHls
ZWFibGU+IEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUoKSBjb25zdAogewogICAgIGlm
IChtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV90YXJnZXQsIG1fcHNldWRv
SWQpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogYm9vbCBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0c1BzZXVkb0VsZW1lbnQoKSBjb25zdApA
QCAtMTQ2OSw3ICsxNDY5LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9w
ZXJ0aWVzSW5TdHlsZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGRvdWIKICAgICAgICAgLy8g
ICAgb2Zmc2V0IG9mIDAsIGEgcHJvcGVydHkgdmFsdWUgc2V0IHRvIHRoZSBuZXV0cmFsIHZhbHVl
IGZvciBjb21wb3NpdGlvbiwgYW5kIGEgY29tcG9zaXRlIG9wZXJhdGlvbiBvZiBhZGQsIGFuZCBw
cmVwZW5kIGl0IHRvIHRoZSBiZWdpbm5pbmcgb2YKICAgICAgICAgLy8gICAgcHJvcGVydHktc3Bl
Y2lmaWMga2V5ZnJhbWVzLgogICAgICAgICBpZiAoIW51bWJlck9mS2V5ZnJhbWVzV2l0aFplcm9P
ZmZzZXQpIHsKLSAgICAgICAgICAgIHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXMuaW5zZXJ0KDAs
IFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBwcm9wZXJ0eVNwZWNpZmljS2V5ZnJhbWVzLmlu
c2VydCgwLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgbnVtYmVyT2ZLZXlmcmFtZXNXaXRo
WmVyb09mZnNldCA9IDE7CiAgICAgICAgIH0KIApAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgdm9pZCBL
ZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZShSZW5kZXJTdHlsZSYg
dGFyZ2V0U3R5bGUsIGRvdWIKICAgICAgICAgLy8gICAga2V5ZnJhbWUgb2Zmc2V0IG9mIDEsIGEg
cHJvcGVydHkgdmFsdWUgc2V0IHRvIHRoZSBuZXV0cmFsIHZhbHVlIGZvciBjb21wb3NpdGlvbiwg
YW5kIGEgY29tcG9zaXRlIG9wZXJhdGlvbiBvZiBhZGQsIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGVu
ZCBvZgogICAgICAgICAvLyAgICBwcm9wZXJ0eS1zcGVjaWZpYyBrZXlmcmFtZXMuCiAgICAgICAg
IGlmICghbnVtYmVyT2ZLZXlmcmFtZXNXaXRoT25lT2Zmc2V0KSB7Ci0gICAgICAgICAgICBwcm9w
ZXJ0eVNwZWNpZmljS2V5ZnJhbWVzLmFwcGVuZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
cHJvcGVydHlTcGVjaWZpY0tleWZyYW1lcy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKICAgICAgICAg
ICAgIG51bWJlck9mS2V5ZnJhbWVzV2l0aE9uZU9mZnNldCA9IDE7CiAgICAgICAgIH0KIApAQCAt
MTczMSw3ICsxNzMxLDcgQEAgT3B0aW9uU2V0PEFjY2VsZXJhdGVkQWN0aW9uQXBwbGljYXRpb25S
ZXN1bHQ+IEtleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGUKICAgICBtX3BlbmRpbmdB
Y2NlbGVyYXRlZEFjdGlvbnMuY2xlYXIoKTsKIAogICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSBjb2Rl
IHdlIHVzZSBhIGRlZmF1bHQgb2YgMHMgZm9yIGFuIHVucmVzb2x2ZWQgY3VycmVudCB0aW1lIHNp
bmNlIGZvciBhIFN0b3AgYWN0aW9uIHRoYXQgaXMgYWNjZXB0YWJsZS4KLSAgICBhdXRvIHRpbWVP
ZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRpbWUoKS52YWx1ZU9yKDBfcykuc2Vjb25kcygp
IC0gZGVsYXkoKS5zZWNvbmRzKCk7CisgICAgYXV0byB0aW1lT2Zmc2V0ID0gYW5pbWF0aW9uKCkt
PmN1cnJlbnRUaW1lKCkudmFsdWVfb3IoMF9zKS5zZWNvbmRzKCkgLSBkZWxheSgpLnNlY29uZHMo
KTsKIAogICAgIGF1dG8gc3RhcnRBbmltYXRpb24gPSBbJl0oKSAtPiBSdW5uaW5nQWNjZWxlcmF0
ZWQgewogICAgICAgICBpZiAobV9ydW5uaW5nQWNjZWxlcmF0ZWQgPT0gUnVubmluZ0FjY2VsZXJh
dGVkOjpZZXMpCkBAIC0yMDA1LDE0ICsyMDA1LDE0IEBAIE9wdGlvbmFsPGRvdWJsZT4gS2V5ZnJh
bWVFZmZlY3Q6OnByb2dyZXNzVW50aWxOZXh0U3RlcChkb3VibGUgaXRlcmF0aW9uUHJvZ3Jlc3Mp
CiAgICAgICAgIHJldHVybiBwcm9ncmVzczsKIAogICAgIGlmICghaXM8TGluZWFyVGltaW5nRnVu
Y3Rpb24+KHRpbWluZ0Z1bmN0aW9uKCkpIHx8ICFtX3NvbWVLZXlmcmFtZXNVc2VTdGVwc1RpbWlu
Z0Z1bmN0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1fYmxlbmRpbmdLZXlmcmFtZXMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byBwcm9ncmVzc1VudGlsTmV4dFN0ZXBJbkludGVydmFsID0gW2l0ZXJhdGlv
blByb2dyZXNzXShkb3VibGUgaW50ZXJ2YWxTdGFydFByb2dyZXNzLCBkb3VibGUgaW50ZXJ2YWxF
bmRQcm9ncmVzcywgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uKSAtPiBPcHRpb25hbDxk
b3VibGU+IHsKICAgICAgICAgaWYgKCFpczxTdGVwc1RpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5j
dGlvbikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIG51bWJlck9mU3RlcHMgPSBkb3duY2Fz
dDxTdGVwc1RpbWluZ0Z1bmN0aW9uPigqdGltaW5nRnVuY3Rpb24pLm51bWJlck9mU3RlcHMoKTsK
ICAgICAgICAgYXV0byBpbnRlcnZhbFByb2dyZXNzID0gaW50ZXJ2YWxFbmRQcm9ncmVzcyAtIGlu
dGVydmFsU3RhcnRQcm9ncmVzczsKQEAgLTIwMzMsNyArMjAzMyw3IEBAIE9wdGlvbmFsPGRvdWJs
ZT4gS2V5ZnJhbWVFZmZlY3Q6OnByb2dyZXNzVW50aWxOZXh0U3RlcChkb3VibGUgaXRlcmF0aW9u
UHJvZ3Jlc3MpCiAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgaWYgKGlzPENTU0FuaW1h
dGlvbj4oYW5pbWF0aW9uKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBwcm9ncmVzc1VudGls
TmV4dFN0ZXBJbkludGVydmFsKDAsIGludGVydmFsRW5kUHJvZ3Jlc3MsIGRvd25jYXN0PERlY2xh
cmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKCkpLmJhY2tpbmdBbmltYXRpb24oKS50aW1pbmdG
dW5jdGlvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHByb2dy
ZXNzVW50aWxOZXh0U3RlcEluSW50ZXJ2YWwobV9ibGVuZGluZ0tleWZyYW1lc1tpIC0gMV0ua2V5
KCksIGludGVydmFsRW5kUHJvZ3Jlc3MsIHRpbWluZ0Z1bmN0aW9uRm9yS2V5ZnJhbWVBdEluZGV4
KGkgLSAxKSk7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBPcHRpb25hbDxkb3VibGU+IEtleWZyYW1l
RWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlIGl0ZXJhdGlvblByb2dyZXNzKQog
ICAgICAgICByZXR1cm4gcHJvZ3Jlc3NVbnRpbE5leHRTdGVwSW5JbnRlcnZhbChsYXN0RXhwbGlj
aXRLZXlmcmFtZS5rZXkoKSwgMSwgZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+KCphbmlt
YXRpb24oKSkuYmFja2luZ0FuaW1hdGlvbigpLnRpbWluZ0Z1bmN0aW9uKCkpOwogCiAgICAgLy8g
SW4gYW55IG90aGVyIGNhc2UsIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGFuIGludGVydmFsIHdp
dGggYSBzdGVwcygpIHRpbWluZyBmdW5jdGlvbi4KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFNlY29uZHMgS2V5ZnJhbWVFZmZlY3Q6OnRp
bWVUb05leHRUaWNrKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmgKaW5kZXggOTg3ZTkyMjRjNTg0ZDIxZjU1MGUyY2I0NTBiOGU0Njc2YjczNjZlMi4uNThk
YThkZmMwMjczM2QwYWJiNmY1MGMyNWM5YWY1MmM3ZGI4ODg2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDb21wb3NpdGUoQ29tcG9zaXRlT3BlcmF0aW9uIGNvbXBvc2l0ZU9wZXJhdGlv
bikgeyBtX2NvbXBvc2l0ZU9wZXJhdGlvbiA9IGNvbXBvc2l0ZU9wZXJhdGlvbjsgfQogCiAgICAg
dm9pZCBnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4mIGFuaW1h
dGVkU3R5bGUpOwotICAgIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IFdU
Rjo6bnVsbG9wdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNl
Y29uZHM+ID0gc3RkOjpudWxsb3B0KSBvdmVycmlkZTsKICAgICB2b2lkIGludmFsaWRhdGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSBmaW5hbDsKICAgICB2b2lkIGFu
aW1hdGlvbkRpZFBsYXkoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5jcHAKaW5kZXggOTBmZTI5YWJiMzMzOTY0ODdmYmQ3NmJkZWQ2Mjg3ZWYyODQ4Y2VhYS4u
N2U1NTQ0MDE5Njk3MjZkZTU1NWI3NjczOWYzYTBiNDc5ZWUyMmQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKQEAgLTIwNiw4ICsyMDYsOCBAQCB2b2lkIFdl
YkFuaW1hdGlvbjo6c2V0RWZmZWN0SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdD4mJiBu
ZXdFZmZlY3QsIGJvb2wgZAogCiAgICAgYXV0byBvbGRFZmZlY3QgPSBzdGQ6OmV4Y2hhbmdlKG1f
ZWZmZWN0LCBXVEZNb3ZlKG5ld0VmZmVjdCkpOwogCi0gICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVh
YmxlPiBwcmV2aW91c1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihvbGRFZmZlY3QpID8gZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgp
IDogV1RGOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gbmV3VGFyZ2V0
ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSA/IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0
PihtX2VmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpIDogV1RGOjpudWxsb3B0OworICAg
IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gcHJldmlvdXNUYXJnZXQgPSBpczxLZXlmcmFtZUVm
ZmVjdD4ob2xkRWZmZWN0KSA/IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihvbGRFZmZlY3QuZ2V0
KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+IG5ld1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUo
KSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlv
biByZWxhdGlvbnNoaXBzIGFuZCB0aGUgdGltZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlm
IChvbGRFZmZlY3QpIHsKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0
VGltZWxpbmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogCiAgICAgLy8g
NC4gSWYgdGhlIGFuaW1hdGlvbiBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiBpcyByZXNvbHZlZCwg
bWFrZSBhbmltYXRpb24ncyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICBpZiAobV9zdGFydFRp
bWUpCi0gICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1faG9sZFRp
bWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0
KSkgewogICAgICAgICBpZiAoYXV0byB0YXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4o
bV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSkgewpAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgV2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFuZ2UoY29uc3QgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvCiBPcHRpb25hbDxkb3VibGU+IFdlYkFuaW1hdGlvbjo6
YmluZGluZ3NTdGFydFRpbWUoKSBjb25zdAogewogICAgIGlmICghbV9zdGFydFRpbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKCptX3N0YXJ0VGltZSk7CiB9
CiAKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NTdGFy
dFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBuZXdTdGFydFRpbWUpCiAgICAgaWYgKG5ld1N0YXJ0VGlt
ZSkKICAgICAgICAgc2V0U3RhcnRUaW1lKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm5ld1N0
YXJ0VGltZSkpOwogICAgIGVsc2UKLSAgICAgICAgc2V0U3RhcnRUaW1lKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHNldFN0YXJ0VGltZShzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYkFuaW1h
dGlvbjo6c2V0U3RhcnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IG5ld1N0YXJ0VGltZSkKQEAgLTMx
NiwxMSArMzE2LDExIEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRTdGFydFRpbWUoT3B0aW9uYWw8
U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQogICAgIC8vIDEuIExldCB0aW1lbGluZSB0aW1lIGJlIHRo
ZSBjdXJyZW50IHRpbWUgdmFsdWUgb2YgdGhlIHRpbWVsaW5lIHRoYXQgYW5pbWF0aW9uIGlzIGFz
c29jaWF0ZWQgd2l0aC4gSWYKICAgICAvLyAgICB0aGVyZSBpcyBubyB0aW1lbGluZSBhc3NvY2lh
dGVkIHdpdGggYW5pbWF0aW9uIG9yIHRoZSBhc3NvY2lhdGVkIHRpbWVsaW5lIGlzIGluYWN0aXZl
LCBsZXQgdGhlIHRpbWVsaW5lCiAgICAgLy8gICAgdGltZSBiZSB1bnJlc29sdmVkLgotICAgIGF1
dG8gdGltZWxpbmVUaW1lID0gbV90aW1lbGluZSA/IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkg
OiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byB0aW1lbGluZVRpbWUgPSBtX3RpbWVsaW5lID8gbV90
aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDIuIElmIHRp
bWVsaW5lIHRpbWUgaXMgdW5yZXNvbHZlZCBhbmQgbmV3IHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQs
IG1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2ZWQuCiAgICAgaWYgKCF0aW1lbGlu
ZVRpbWUgJiYgbmV3U3RhcnRUaW1lKQotICAgICAgICBtX2hvbGRUaW1lID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMy4gTGV0IHBy
ZXZpb3VzIGN1cnJlbnQgdGltZSBiZSBhbmltYXRpb24ncyBjdXJyZW50IHRpbWUuCiAgICAgYXV0
byBwcmV2aW91c0N1cnJlbnRUaW1lID0gY3VycmVudFRpbWUoKTsKQEAgLTMzNiw3ICszMzYsNyBA
QCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0U3RhcnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IG5ld1N0
YXJ0VGltZSkKICAgICAgICAgLy8gSWYgbmV3IHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQsCiAgICAg
ICAgIC8vIElmIGFuaW1hdGlvbidzIHBsYXliYWNrIHJhdGUgaXMgbm90IHplcm8sIG1ha2UgYW5p
bWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmIChtX3BsYXliYWNrUmF0
ZSkKLSAgICAgICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBt
X2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVy
d2lzZSAobmV3IHN0YXJ0IHRpbWUgaXMgdW5yZXNvbHZlZCksCiAgICAgICAgIC8vIFNldCBhbmlt
YXRpb24ncyBob2xkIHRpbWUgdG8gcHJldmlvdXMgY3VycmVudCB0aW1lIGV2ZW4gaWYgcHJldmlv
dXMgY3VycmVudCB0aW1lIGlzIHVucmVzb2x2ZWQuCkBAIC0zNjAsMTQgKzM2MCwxNCBAQCBPcHRp
b25hbDxkb3VibGU+IFdlYkFuaW1hdGlvbjo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CiB7
CiAgICAgYXV0byB0aW1lID0gY3VycmVudFRpbWUoKTsKICAgICBpZiAoIXRpbWUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKHRpbWUudmFsdWUoKSk7CiB9CiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6c2V0QmluZGluZ3NDdXJyZW50VGltZShP
cHRpb25hbDxkb3VibGU+IGN1cnJlbnRUaW1lKQogewogICAgIGlmICghY3VycmVudFRpbWUpCi0g
ICAgICAgIHJldHVybiBzZXRDdXJyZW50VGltZShXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1
cm4gc2V0Q3VycmVudFRpbWUoc3RkOjpudWxsb3B0KTsKICAgICByZXR1cm4gc2V0Q3VycmVudFRp
bWUoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhjdXJyZW50VGltZS52YWx1ZSgpKSk7CiB9CiAK
QEAgLTM5MywxMCArMzkzLDEwIEBAIE9wdGlvbmFsPFNlY29uZHM+IFdlYkFuaW1hdGlvbjo6Y3Vy
cmVudFRpbWUoUmVzcGVjdEhvbGRUaW1lIHJlc3BlY3RIb2xkVGltZSwgT3B0CiAgICAgLy8gICAg
IDMuIHRoZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIGlzIHVucmVzb2x2ZWQuCiAgICAgLy8gVGhl
IGN1cnJlbnQgdGltZSBpcyBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCiAgICAgaWYgKCFtX3Rp
bWVsaW5lIHx8ICFtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIHx8ICFtX3N0YXJ0VGltZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIE90aGVyd2lzZSwgY3VycmVudCB0aW1lID0gKHRpbWVsaW5lIHRpbWUgLSBzdGFy
dCB0aW1lKSAqIHBsYXliYWNrIHJhdGUKLSAgICByZXR1cm4gKCptX3RpbWVsaW5lLT5jdXJyZW50
VGltZSgpIC0gc3RhcnRUaW1lLnZhbHVlT3IoKm1fc3RhcnRUaW1lKSkgKiBtX3BsYXliYWNrUmF0
ZTsKKyAgICByZXR1cm4gKCptX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIC0gc3RhcnRUaW1lLnZh
bHVlX29yKCptX3N0YXJ0VGltZSkpICogbV9wbGF5YmFja1JhdGU7CiB9CiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYkFuaW1hdGlvbjo6c2lsZW50bHlTZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNv
bmRzPiBzZWVrVGltZSkKQEAgLTQzMSwxMCArNDMxLDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdl
YkFuaW1hdGlvbjo6c2lsZW50bHlTZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiBzZWVr
VGltCiAKICAgICAvLyAzLiBJZiBhbmltYXRpb24gaGFzIG5vIGFzc29jaWF0ZWQgdGltZWxpbmUg
b3IgdGhlIGFzc29jaWF0ZWQgdGltZWxpbmUgaXMgaW5hY3RpdmUsIG1ha2UgYW5pbWF0aW9uJ3Mg
c3RhcnQgdGltZSB1bnJlc29sdmVkLgogICAgIGlmICghbV90aW1lbGluZSB8fCAhbV90aW1lbGlu
ZS0+Y3VycmVudFRpbWUoKSkKLSAgICAgICAgbV9zdGFydFRpbWUgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fc3RhcnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNC4gTWFrZSBhbmlt
YXRpb24ncyBwcmV2aW91cyBjdXJyZW50IHRpbWUgdW5yZXNvbHZlZC4KLSAgICBtX3ByZXZpb3Vz
Q3VycmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wcmV2aW91c0N1cnJlbnRUaW1lID0g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNl
Y29uZHM+IHNlZWtUaW1lKQogICAgICAgICAvLyAyLiBBcHBseSBhbnkgcGVuZGluZyBwbGF5YmFj
ayByYXRlIHRvIGFuaW1hdGlvbi4KICAgICAgICAgYXBwbHlQZW5kaW5nUGxheWJhY2tSYXRlKCk7
CiAgICAgICAgIC8vIDMuIE1ha2UgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZSB1bnJlc29sdmVkLgot
ICAgICAgICBtX3N0YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zdGFydFRpbWUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIDQuIENhbmNlbCB0aGUgcGVuZGluZyBwYXVzZSB0
YXNrLgogICAgICAgICBtX3RpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2sgPSBUaW1lVG9SdW5QZW5k
aW5nVGFzazo6Tm90U2NoZWR1bGVkOwogICAgICAgICAvLyA1LiBSZXNvbHZlIGFuaW1hdGlvbidz
IGN1cnJlbnQgcmVhZHkgcHJvbWlzZSB3aXRoIGFuaW1hdGlvbi4KQEAgLTQ4OSw3ICs0ODksNyBA
QCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0UGxheWJhY2tSYXRlKGRvdWJsZSBuZXdQbGF5YmFja1Jh
dGUpCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI3Vw
ZGF0aW5nLXRoZS1wbGF5YmFjay1yYXRlLW9mLWFuLWFuaW1hdGlvbgogCiAgICAgLy8gMS4gQ2xl
YXIgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSBvbiBhbmltYXRpb24uCi0gICAgbV9wZW5kaW5n
UGxheWJhY2tSYXRlID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyAyLiBMZXQgcHJldmlvdXMgdGltZSBiZSB0aGUg
dmFsdWUgb2YgdGhlIGN1cnJlbnQgdGltZSBvZiBhbmltYXRpb24gYmVmb3JlIGNoYW5naW5nIHRo
ZSBwbGF5YmFjayByYXRlLgogICAgIGF1dG8gcHJldmlvdXNUaW1lID0gY3VycmVudFRpbWUoKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6YXBwbHlQZW5kaW5nUGxheWJh
Y2tSYXRlKCkKICAgICBtX3BsYXliYWNrUmF0ZSA9IG1fcGVuZGluZ1BsYXliYWNrUmF0ZS52YWx1
ZSgpOwogCiAgICAgLy8gMy4gQ2xlYXIgYW5pbWF0aW9uJ3MgcGVuZGluZyBwbGF5YmFjayByYXRl
LgotICAgIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BlbmRp
bmdQbGF5YmFja1JhdGUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGF1dG8gV2ViQW5pbWF0aW9uOjpw
bGF5U3RhdGUoKSBjb25zdCAtPiBQbGF5U3RhdGUKQEAgLTY1NCwxNCArNjU0LDE0IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjpjYW5jZWwoKQogICAgICAgICAvLyAgICB0byBvcmlnaW4tcmVsYXRpdmUg
dGltZSwgbGV0IHRoZSBzY2hlZHVsZWQgZXZlbnQgdGltZSBiZSB0aGUgcmVzdWx0IG9mIGFwcGx5
aW5nIHRoYXQgcHJvY2VkdXJlIHRvIHRpbWVsaW5lIHRpbWUuIE90aGVyd2lzZSwgdGhlCiAgICAg
ICAgIC8vICAgIHNjaGVkdWxlZCBldmVudCB0aW1lIGlzIGFuIHVucmVzb2x2ZWQgdGltZSB2YWx1
ZS4KICAgICAgICAgLy8gT3RoZXJ3aXNlLCBxdWV1ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggY2FuY2Vs
RXZlbnQgYXQgYW5pbWF0aW9uLiBUaGUgdGFzayBzb3VyY2UgZm9yIHRoaXMgdGFzayBpcyB0aGUg
RE9NIG1hbmlwdWxhdGlvbiB0YXNrIHNvdXJjZS4KLSAgICAgICAgZW5xdWV1ZUFuaW1hdGlvblBs
YXliYWNrRXZlbnQoZXZlbnROYW1lcygpLmNhbmNlbEV2ZW50LCBXVEY6Om51bGxvcHQsIG1fdGlt
ZWxpbmUgPyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIDogV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZlbnQoZXZlbnROYW1lcygpLmNhbmNlbEV2ZW50
LCBzdGQ6Om51bGxvcHQsIG1fdGltZWxpbmUgPyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIDog
c3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICAvLyAyLiBNYWtlIGFuaW1hdGlvbidzIGhvbGQg
dGltZSB1bnJlc29sdmVkLgotICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9o
b2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDMuIE1ha2UgYW5pbWF0aW9uJ3Mgc3Rh
cnQgdGltZSB1bnJlc29sdmVkLgotICAgIG1fc3RhcnRUaW1lID0gV1RGOjpudWxsb3B0OworICAg
IG1fc3RhcnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgdGltaW5nRGlkQ2hhbmdlKERpZFNl
ZWs6Ok5vLCBTeW5jaHJvbm91c2x5Tm90aWZ5OjpObyk7CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OmZpbmlzaCgpCiAgICAgLy8gNi4gSWYgdGhl
cmUgaXMgYSBwZW5kaW5nIHBhdXNlIHRhc2sgYW5kIHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQsCiAg
ICAgaWYgKGhhc1BlbmRpbmdQYXVzZVRhc2soKSAmJiBtX3N0YXJ0VGltZSkgewogICAgICAgICAv
LyAxLiBMZXQgdGhlIGhvbGQgdGltZSBiZSB1bnJlc29sdmVkLgotICAgICAgICBtX2hvbGRUaW1l
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICAvLyAyLiBDYW5jZWwgdGhlIHBlbmRpbmcgcGF1c2UgdGFzay4KICAgICAgICAgbV90aW1l
VG9SdW5QZW5kaW5nUGF1c2VUYXNrID0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxl
ZDsKICAgICAgICAgLy8gMy4gUmVzb2x2ZSB0aGUgY3VycmVudCByZWFkeSBwcm9taXNlIG9mIGFu
aW1hdGlvbiB3aXRoIGFuaW1hdGlvbi4KQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFdlYkFuaW1h
dGlvbjo6dXBkYXRlRmluaXNoZWRTdGF0ZShEaWRTZWVrIGRpZFNlZWssIFN5bmNocm9ub3VzbHlO
b3RpZnkgc3luYwogICAgICAgICAgICAgaWYgKGRpZFNlZWsgPT0gRGlkU2Vlazo6WWVzICYmIG1f
aG9sZFRpbWUpCiAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSBtX3RpbWVsaW5lLT5jdXJy
ZW50VGltZSgpLnZhbHVlKCkgLSAobV9ob2xkVGltZS52YWx1ZSgpIC8gbV9wbGF5YmFja1JhdGUp
OwogICAgICAgICAgICAgLy8gMi4gTGV0IHRoZSBob2xkIHRpbWUgYmUgdW5yZXNvbHZlZC4KLSAg
ICAgICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2hvbGRU
aW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC05MDcsNyArOTA3LDcg
QEAgdm9pZCBXZWJBbmltYXRpb246OmZpbmlzaE5vdGlmaWNhdGlvblN0ZXBzKCkKICAgICAvLyAg
ICBxdWV1ZSBhbG9uZyB3aXRoIGl0cyB0YXJnZXQsIGFuaW1hdGlvbi4gRm9yIHRoZSBzY2hlZHVs
ZWQgZXZlbnQgdGltZSwgdXNlIHRoZSByZXN1bHQgb2YgY29udmVydGluZyBhbmltYXRpb24ncyB0
YXJnZXQKICAgICAvLyAgICBlZmZlY3QgZW5kIHRvIGFuIG9yaWdpbi1yZWxhdGl2ZSB0aW1lLgog
ICAgIC8vICAgIE90aGVyd2lzZSwgcXVldWUgYSB0YXNrIHRvIGRpc3BhdGNoIGZpbmlzaEV2ZW50
IGF0IGFuaW1hdGlvbi4gVGhlIHRhc2sgc291cmNlIGZvciB0aGlzIHRhc2sgaXMgdGhlIERPTSBt
YW5pcHVsYXRpb24gdGFzayBzb3VyY2UuCi0gICAgZW5xdWV1ZUFuaW1hdGlvblBsYXliYWNrRXZl
bnQoZXZlbnROYW1lcygpLmZpbmlzaEV2ZW50LCBjdXJyZW50VGltZSgpLCBtX3RpbWVsaW5lID8g
bV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVsbG9wdCk7CisgICAgZW5xdWV1ZUFu
aW1hdGlvblBsYXliYWNrRXZlbnQoZXZlbnROYW1lcygpLmZpbmlzaEV2ZW50LCBjdXJyZW50VGlt
ZSgpLCBtX3RpbWVsaW5lID8gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IHN0ZDo6bnVsbG9w
dCk7CiAKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSkgewogICAgICAgICBp
ZiAoYXV0byB0YXJnZXQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9l
ZmZlY3QpLnRhcmdldCgpKSkgewpAQCAtOTgwLDcgKzk4MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFdlYkFuaW1hdGlvbjo6cGxheShBdXRvUmV3aW5kIGF1dG9SZXdpbmQpCiAKICAgICAvLyA2LiBJ
ZiBhbmltYXRpb24ncyBob2xkIHRpbWUgaXMgcmVzb2x2ZWQsIGxldCBpdHMgc3RhcnQgdGltZSBi
ZSB1bnJlc29sdmVkLgogICAgIGlmIChtX2hvbGRUaW1lKQotICAgICAgICBtX3N0YXJ0VGltZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyA3LiBJZiBoYXMgcGVuZGluZyByZWFkeSBwcm9taXNlIGlzIGZhbHNlLCBsZXQgYW5pbWF0
aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIGJlIGEgbmV3IChwZW5kaW5nKSBQcm9taXNlIG9i
amVjdC4KICAgICBpZiAoIWhhc1BlbmRpbmdSZWFkeVByb21pc2UpCkBAIC0xMDI2LDE4ICsxMDI2
LDE4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAv
LyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRpbmcgcmVhZHlUaW1lIHZhbHVlIGNhbiBiZSBudWxs
LiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMrKzE3IGFuZAogICAgICAgICAvLyBDKysxNCBidWls
ZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3MgT3B0aW9uYWwpIGFuZCBhdm9pZCBudWxsIE9wdGlv
bmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAgLy8gYnkgZGVmYXVsdGluZyB0byBhIFNlY29uZHMo
MCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2
MTg5LgotICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZU9yKDBfcyk7
CisgICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1lLnZhbHVlX29yKDBfcyk7CiAg
ICAgICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKICAgICAgICAgICAgIG5ld1N0YXJ0VGltZSAtPSBt
X2hvbGRUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZTsKICAgICAgICAgLy8gMy4gU2V0IHRo
ZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiB0byBuZXcgc3RhcnQgdGltZS4KICAgICAgICAgbV9z
dGFydFRpbWUgPSBuZXdTdGFydFRpbWU7CiAgICAgICAgIC8vIDQuIElmIGFuaW1hdGlvbidzIHBs
YXliYWNrIHJhdGUgaXMgbm90IDAsIG1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2
ZWQuCiAgICAgICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKLSAgICAgICAgICAgIG1faG9sZFRpbWUg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0Owog
ICAgIH0gZWxzZSBpZiAobV9zdGFydFRpbWUgJiYgbV9wZW5kaW5nUGxheWJhY2tSYXRlKSB7CiAg
ICAgICAgIC8vIElmIGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUgaXMgcmVzb2x2ZWQgYW5kIGFuaW1h
dGlvbiBoYXMgYSBwZW5kaW5nIHBsYXliYWNrIHJhdGUsCiAgICAgICAgIC8vIDEuIExldCBjdXJy
ZW50IHRpbWUgdG8gbWF0Y2ggYmUgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIChyZWFkeSB0aW1l
IC0gc3RhcnQgdGltZSkgw5cgcGxheWJhY2sgcmF0ZSBmb3IgYW5pbWF0aW9uLgotICAgICAgICBh
dXRvIGN1cnJlbnRUaW1lVG9NYXRjaCA9IChyZWFkeVRpbWUudmFsdWVPcigwX3MpIC0gbV9zdGFy
dFRpbWUudmFsdWUoKSkgKiBtX3BsYXliYWNrUmF0ZTsKKyAgICAgICAgYXV0byBjdXJyZW50VGlt
ZVRvTWF0Y2ggPSAocmVhZHlUaW1lLnZhbHVlX29yKDBfcykgLSBtX3N0YXJ0VGltZS52YWx1ZSgp
KSAqIG1fcGxheWJhY2tSYXRlOwogICAgICAgICAvLyAyLiBBcHBseSBhbnkgcGVuZGluZyBwbGF5
YmFjayByYXRlIG9uIGFuaW1hdGlvbi4KICAgICAgICAgYXBwbHlQZW5kaW5nUGxheWJhY2tSYXRl
KCk7CiAgICAgICAgIC8vIDMuIElmIGFuaW1hdGlvbidzIHBsYXliYWNrIHJhdGUgaXMgemVybywg
bGV0IGFuaW1hdGlvbidzIGhvbGQgdGltZSBiZSBjdXJyZW50IHRpbWUgdG8gbWF0Y2guCkBAIC0x
MDQ1LDcgKzEwNDUsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1BsYXlUYXNrKCkK
ICAgICAgICAgICAgIG1faG9sZFRpbWUgPSBjdXJyZW50VGltZVRvTWF0Y2g7CiAgICAgICAgIC8v
IDQuIExldCBuZXcgc3RhcnQgdGltZSBiZSB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgcmVhZHkg
dGltZSAtIGN1cnJlbnQgdGltZSB0byBtYXRjaCAvIHBsYXliYWNrIHJhdGUgZm9yIGFuaW1hdGlv
bi4KICAgICAgICAgLy8gSWYgdGhlIHBsYXliYWNrIHJhdGUgaXMgemVybywgbGV0IG5ldyBzdGFy
dCB0aW1lIGJlIHNpbXBseSByZWFkeSB0aW1lLgotICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9
IHJlYWR5VGltZS52YWx1ZU9yKDBfcyk7CisgICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVh
ZHlUaW1lLnZhbHVlX29yKDBfcyk7CiAgICAgICAgIGlmIChtX3BsYXliYWNrUmF0ZSkKICAgICAg
ICAgICAgIG5ld1N0YXJ0VGltZSAtPSBjdXJyZW50VGltZVRvTWF0Y2ggLyBtX3BsYXliYWNrUmF0
ZTsKICAgICAgICAgLy8gNS4gU2V0IHRoZSBzdGFydCB0aW1lIG9mIGFuaW1hdGlvbiB0byBuZXcg
c3RhcnQgdGltZS4KQEAgLTExODIsMTQgKzExODIsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnJ1
blBlbmRpbmdQYXVzZVRhc2soKQogICAgICAgICAvLyBTdWJzZXF1ZW50bHksIHRoZSByZXN1bHRp
bmcgcmVhZHlUaW1lIHZhbHVlIGNhbiBiZSBudWxsLiBVbmlmeSBiZWhhdmlvciBiZXR3ZWVuIEMr
KzE3IGFuZAogICAgICAgICAvLyBDKysxNCBidWlsZHMgKHRoZSBsYXR0ZXIgdXNpbmcgV1RGJ3Mg
T3B0aW9uYWwpIGFuZCBhdm9pZCBudWxsIE9wdGlvbmFsIGRlcmVmZXJlbmNpbmcKICAgICAgICAg
Ly8gYnkgZGVmYXVsdGluZyB0byBhIFNlY29uZHMoMCkgdmFsdWUuIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MTg5LgotICAgICAgICBtX2hvbGRUaW1lID0g
KHJlYWR5VGltZS52YWx1ZU9yKDBfcykgLSBhbmltYXRpb25TdGFydFRpbWUudmFsdWUoKSkgKiBt
X3BsYXliYWNrUmF0ZTsKKyAgICAgICAgbV9ob2xkVGltZSA9IChyZWFkeVRpbWUudmFsdWVfb3Io
MF9zKSAtIGFuaW1hdGlvblN0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOwogICAg
IH0KIAogICAgIC8vIDMuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgb24gYW5pbWF0
aW9uLgogICAgIGFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpOwogCiAgICAgLy8gNC4gTWFrZSBh
bmltYXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgbV9zdGFydFRpbWUgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9zdGFydFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyA1LiBS
ZXNvbHZlIGFuaW1hdGlvbidzIGN1cnJlbnQgcmVhZHkgcHJvbWlzZSB3aXRoIGFuaW1hdGlvbi4K
ICAgICBpZiAoIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IDhlYTI1ZGQxOWRiYWExZjExODJlZmY2NTBjMTdm
OWU5YTI4OGY0ZjYuLjdlYjg0YzZkZGE5YjA3Y2FmMDQzOTc4YzY3OTE2OGMwOTQyNTJhZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTcyLDcgKzcyLDcgQEAg
cHVibGljOgogICAgIEFuaW1hdGlvblRpbWVsaW5lKiB0aW1lbGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VGltZWxpbmUoUmVmUHRy
PEFuaW1hdGlvblRpbWVsaW5lPiYmKTsKIAotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRU
aW1lKE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBPcHRpb25h
bDxTZWNvbmRzPiBjdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vj
b25kcz4pOwogCiAgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
eWJhY2tSYXRlICsgMDsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBib29sIG5l
ZWRzVGljaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB0aWNrKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0VGljaygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBy
ZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVu
dEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpOworICAgIHZp
cnR1YWwgdm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxv
cHQpOwogICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0
IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFi
bGU+JiBuZXdUYXJnZXQpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRTdGF0ZURpZENoYW5nZSgpOwog
ICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgcHJpdmF0
ZToKICAgICBTZWNvbmRzIGVmZmVjdEVuZFRpbWUoKSBjb25zdDsKICAgICBXZWJBbmltYXRpb24m
IHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKICAgICBXZWJBbmltYXRpb24mIGZpbmlzaGVkUHJvbWlz
ZVJlc29sdmUoKTsKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZShSZXNwZWN0SG9s
ZFRpbWUsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBPcHRp
b25hbDxTZWNvbmRzPiBjdXJyZW50VGltZShSZXNwZWN0SG9sZFRpbWUsIE9wdGlvbmFsPFNlY29u
ZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzaWxlbnRs
eVNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICB2b2lkIGZpbmlzaE5vdGlm
aWNhdGlvblN0ZXBzKCk7CiAgICAgYm9vbCBoYXNQZW5kaW5nUGF1c2VUYXNrKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lVG9SdW5QZW5kaW5nUGF1c2VUYXNrICE9IFRpbWVUb1J1blBlbmRpbmdUYXNr
OjpOb3RTY2hlZHVsZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IGM1NDE5
ODE1YWQxMTU4ZGQ2MDEwMTkwZjNlODU3NzU4MWNlNWMwNmMuLjhkYzdhMDdlZmU3MTMyOTU1NmY3
ZWI1ZjFiYzI5ODI3MjhjN2E0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaApAQCAt
NzAsNyArNzAsNyBAQCBzdHJ1Y3QgSURMVHlwZSB7CiAgICAgdXNpbmcgTnVsbGFibGVJbm5lclBh
cmFtZXRlclR5cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwogCiAgICAgdXNpbmcg
TnVsbGFibGVUeXBlID0gT3B0aW9uYWw8SW1wbGVtZW50YXRpb25UeXBlPjsKLSAgICBzdGF0aWMg
TnVsbGFibGVUeXBlIG51bGxWYWx1ZSgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHN0
YXRpYyBOdWxsYWJsZVR5cGUgbnVsbFZhbHVlKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAg
ICAgc3RhdGljIGJvb2wgaXNOdWxsVmFsdWUoY29uc3QgTnVsbGFibGVUeXBlJiB2YWx1ZSkgeyBy
ZXR1cm4gIXZhbHVlOyB9CiAgICAgc3RhdGljIEltcGxlbWVudGF0aW9uVHlwZSBleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoY29uc3QgTnVsbGFibGVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUu
dmFsdWUoKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVByb21pc2VQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVBy
b3h5LmgKaW5kZXggMjJmMDljMzE3MjY1Y2NjOGQxNzJkMDFmNzFmMjVkOWQzMmYyMjJkZi4uNjRj
M2JkNjI5OWNlYjM2MDNhM2FhZjgzODRkNzMxOTU3NmUyMWZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBpbmxp
bmUgSlNDOjpKU1ZhbHVlIERPTVByb21pc2VQcm94eTxJRExUeXBlPjo6cHJvbWlzZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpYwogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4KIGlubGluZSB2
b2lkIERPTVByb21pc2VQcm94eTxJRExUeXBlPjo6Y2xlYXIoKQogewotICAgIG1fdmFsdWVPckV4
Y2VwdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3ZhbHVlT3JFeGNlcHRpb24gPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9kZWZlcnJlZFByb21pc2VzLmNsZWFyKCk7CiB9CiAKQEAgLTIxMiw3ICsy
MTIsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIERPTVByb21pc2VQcm94eTxJRExVbmRlZmluZWQ+
Ojpwcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAKIGlubGluZSB2b2lkIERPTVByb21pc2VQ
cm94eTxJRExVbmRlZmluZWQ+OjpjbGVhcigpCiB7Ci0gICAgbV92YWx1ZU9yRXhjZXB0aW9uID0g
V1RGOjpudWxsb3B0OworICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2RlZmVycmVkUHJvbWlzZXMuY2xlYXIoKTsKIH0KIApAQCAtMjgxLDcgKzI4MSw3IEBAIGlu
bGluZSBKU0M6OkpTVmFsdWUgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazxJRExU
eXBlPjo6cHJvbWlzZShKU0M6OkpTCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogaW5saW5l
IHZvaWQgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazxJRExUeXBlPjo6Y2xlYXIo
KQogewotICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3ZhbHVl
T3JFeGNlcHRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9kZWZlcnJlZFByb21pc2VzLmNsZWFy
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggNmY1NDI1OTVjMmU5ZjQ2ZGQzOTlmYTgzZDVhMjg4MDAwZTRkZmRk
YS4uZGY1ZDE1N2YzYjE3ZmE0NjEzNTM4MzI3YzQ0OGMxMzg4OTlmMzM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTUx
Myw3ICs1MTMsNyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVX
aXRoS2V5SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhpYwogICAgIGlmICghaW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIGtleSwganNWYWx1ZSwga2V5
UGF0aC52YWx1ZSgpKSkgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSk7CiAgICAgICAgIHByb3BhZ2F0ZUV4Y2Vw
dGlvbihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBFeGNlcHRpb24oVW5rbm93bkVy
cm9yLCAiQ2Fubm90IGluamVjdCBrZXkgaW50byBzY3JpcHQgdmFsdWUiX3MpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICByZXR1cm4ganNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCmluZGV4IGI5OTUzYTMyZWUxMTU5OGViMWUw
ZDkzMzhmYWVmYjg0ZjYyNTEwYjguLjVkMzQwNWM4ZmZiODA4ZTMwODIxYWNiZTc1ZjE2NzUyODhl
NTgyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJh
Y3RPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0
cmFjdE9wZXJhdGlvbnMuaApAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgZGVjbHR5cGUoYXV0bykg
dmlzaWJsZU5hbWVkUHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yKElubmVySXRlbUFjY2Vzc29y
JgogICAgICAgICAgICAgICAgIHJldHVybiBSZXR1cm5UeXBlIHsgcmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKSB9OwogICAgICAgICAgICAgaWYgKCFJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQu
cmV0dXJuVmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyBJRExU
eXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
KSB9OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH07CiAgICAgfSBlbHNlIHsKICAgICAgICAgdXNpbmcg
UmV0dXJuVHlwZSA9IHR5cGVuYW1lIElETFR5cGU6OkltcGxlbWVudGF0aW9uVHlwZTsKQEAgLTEw
Niw3ICsxMDYsNyBAQCBzdGF0aWMgZGVjbHR5cGUoYXV0bykgdmlzaWJsZU5hbWVkUHJvcGVydHlJ
dGVtQWNjZXNzb3JGdW5jdG9yKElubmVySXRlbUFjY2Vzc29yJgogICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBpbm5lckl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICAgICAgaWYgKCFJRExUeXBlOjppc051bGxWYWx1ZShyZXN1bHQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBSZXR1cm5UeXBlIHsgSURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KHJlc3VsdCkgfTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9OwogICAgIH0KIH0KQEAgLTEyMiwxNyAr
MTIyLDE3IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgLy8gTk9URTogV2hpbGUgaXQg
aXMgbm90IHNwZWNpZmllZCwgYSBTeW1ib2wgY2FuIG5ldmVyIGJlIGEgJ3N1cHBvcnRlZCBwcm9w
ZXJ0eQogICAgIC8vIG5hbWUnIHNvIHdlIGNoZWNrIHRoYXQgZmlyc3QuCiAgICAgaWYgKHByb3Bl
cnR5TmFtZS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gSWYgUCBpcyBub3QgYSBzdXBwb3J0
ZWQgcHJvcGVydHkgbmFtZSBvZiBPLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICBhdXRvIHJlc3Vs
dCA9IGl0ZW1BY2Nlc3Nvcih0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gMi4gSWYgTyBoYXMgYW4gb3duIHByb3BlcnR5IG5hbWVkIFAsIHRo
ZW4gcmV0dXJuIGZhbHNlLgogICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3QgeyAmdGhpc09iamVj
dCwgSlNDOjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpIH07CiAgICAgaWYgKEpTQzo6SlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdCgmdGhpc09iamVjdCwgJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAvLyAzLiBJZiBPIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRo
YXQgaGFzIHRoZSBbTGVnYWN5T3ZlcnJpZGVCdWlsdEluc10gZXh0ZW5kZWQgYXR0cmlidXRlLCB0
aGVuIHJldHVybiB0cnVlLgogICAgIGlmIChvdmVycmlkZUJ1aWx0aW5zID09IExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnM6OlllcyAmJiAhd29ybGRGb3JET01PYmplY3QodGhpc09iamVjdCkuc2hvdWxk
RGlzYWJsZUxlZ2FjeU92ZXJyaWRlQnVpbHRJbnNCZWhhdmlvcigpKQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIHN0YXRpYyBhdXRvIGFjY2Vzc1Zpc2libGVOYW1lZFByb3BlcnR5KEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsCiAgICAgLy8gICAgMi4gU2V0IHByb3RvdHlwZSB0
byBiZSB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVydHkgb2Yg
cHJvdG90eXBlLgogICAgIGF1dG8gcHJvdG90eXBlID0gdGhpc09iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3QoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIGlmIChwcm90b3R5
cGUuaXNPYmplY3QoKSAmJiBKU0M6OmFzT2JqZWN0KHByb3RvdHlwZSktPmdldFByb3BlcnR5U2xv
dCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IDYuIFJldHVybiB0cnVlLgogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydEFueS5oCmluZGV4IGYxZDc1YjdmYTRkMWY5Yzg2YWM0M2Fm
YmQzZDIxNjdmMzM3MzhlODEuLmZiYTFjMDllYWU3ZjJjNjdkNzFhZjRlZjQ2MzhiNGE4OTI1ZDE2
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEFu
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEFueS5oCkBA
IC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhcmlhZGljQ29udmVydGVyPElETEFu
eT4gewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICAgICAgYXV0byByZXN1bHQgPSBDb252ZXJ0ZXI8SURMQW55Pjo6Y29udmVydChsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHN0ZDo6bnVs
bG9wdCk7CiAKICAgICAgICAgcmV0dXJuIEl0ZW0geyB2bSwgcmVzdWx0IH07CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaApp
bmRleCBiZjE5ZTk3M2EzMDkzNjkzNmFkMzBmY2VhNmY1ZWE3NDk4OTc3OWJjLi40OGVhMTdjMGVl
NzI2YmI3OWFhZTkzM2QxNzYxYjlkYTQ3MDAzMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaApAQCAtOTUsNyArOTUsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXI8SURMSW50ZXJmYWNl
PFQ+PiB7CiAgICAgewogICAgICAgICBhdXRvKiByZXN1bHQgPSBDb252ZXJ0ZXI8SURMSW50ZXJm
YWNlPFQ+Pjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBPcHRpb25hbDxJdGVtPiB7ICpy
ZXN1bHQgfTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0VW5pb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydFVuaW9uLmgKaW5kZXggZjhjNzAxYmUxOTA2MGM0OWQ2N2E1ZjAwZmJmOWE2NzI4NWVm
ZWZhMy4uYTMyMzY2YzkzOTBmZjEyNTBhMjNlNmU0ZWEzMWNhZTVmMWY0ZDBlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCkBAIC01Myw3ICs1
Myw3IEBAIHN0cnVjdCBDb25kaXRpb25hbFJldHVybmVyPFJldHVyblR5cGUsIGZhbHNlPiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4g
Z2V0KFQmJikKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsQ29u
dmVydGVyPFJldHVyblR5cGUsIFQsIGZhbHNlPiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFJldHVy
blR5cGU+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogfTsKIApAQCAtOTEsNyArOTEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1
cm5UeXBlLCB0eXBlbmFtZSBUPgogc3RydWN0IENvbmRpdGlvbmFsU2VxdWVuY2VDb252ZXJ0ZXI8
UmV0dXJuVHlwZSwgVCwgZmFsc2U+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4g
Y29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKaW5kZXggMWZlMzg5MjNjMDgwYjFkMzg1Njk0MWM4
NmZmNmZmMjFhNTk5NGFiNC4uNDQ0MzI1ZjZkN2U3ZDVjNzM4YjQ2Y2M1NTA2N2ZlOGUyYThiOTM5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFy
aWFkaWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJp
YWRpYy5oCkBAIC00MCw3ICs0MCw3IEBAIHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRlciB7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRv
IHJlc3VsdCA9IENvbnZlcnRlcjxJRExUeXBlPjo6Y29udmVydChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUl0ZXJhdG9yLmgKaW5kZXggYjFkMjdkNDViYzkwMmVjZTU2NWE2MzIwOGQ4NTY3MGMx
Njg3MTc0Yi4uYTNjNmJkYTYzYmZlMGYwYmE2YmI5MWVhNjY5YzgxOWE1ZDc2ZTY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaApAQCAtMjQwLDcgKzI0MCw3
IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yQmFzZTxKU1dyYXBwZXIsIEl0ZXJhdG9yVHJh
aXRzPjo6bmV4dChKU0M6OkpTR2xvYmFsT2JqCiAgICAgICAgIGF1dG8gaXRlcmF0b3JWYWx1ZSA9
IG1faXRlcmF0b3ItPm5leHQoKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yVmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFzSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgaXRlcmF0b3JWYWx1ZSksIGZhbHNlKTsKLSAg
ICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9pdGVyYXRvciA9IHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OmpzVW5kZWZpbmVkKCksIHRydWUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
LmgKaW5kZXggNmRjYjlkZGVjNTE3MTQ2NmU5Yzk1NTIwZGQ0ZTFjZGM5ZjFkZGM1NC4uODRiMGZj
MGRiMWYxNzU3YzczZDI2YWYwMjI5Mzc1ZDJhMjA2MjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCkBAIC04MCwyMyAr
ODAsMjMgQEAgc3RydWN0IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsKICAgICB7CiAgICAgICAg
IFN0cmluZyBzb3VyY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIFVSTCBzb3VyY2VVUkw7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc291cmNlVVJMKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFJ1bkFzQXN5bmNGdW5jdGlv
biBydW5Bc0FzeW5jRnVuY3Rpb247CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocnVuQXNB
c3luY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEFyZ3VtZW50V2ly
ZUJ5dGVzTWFwPiBhcmd1bWVudHM7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1l
bnRzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEZvcmNlVXNlckdlc3R1cmUgZm9yY2VVc2VyR2Vz
dHVyZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmb3JjZVVzZXJHZXN0dXJlKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgV1RG
TW92ZShzb3VyY2UpLCBXVEZNb3ZlKHNvdXJjZVVSTCksIHJ1bkFzQXN5bmNGdW5jdGlvbiwgV1RG
TW92ZShhcmd1bWVudHMpLCBmb3JjZVVzZXJHZXN0dXJlIH0gfTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYwN2I1ZDEw
YjA2MmQ5OTNhYmFlYjM2YzA5YTQ5MzgwOGZmZjQ0OWIuLmRkNjgxMmJmODA1MzA4MDhlMjk1OGEw
Y2FiZTAwODI4YzBiYzc0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1
bGVTY3IKICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQ6Oldhc0Vy
cm9yZWQ6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZVNjcmlwdC0+bm90aWZ5TG9hZEZhaWxl
ZChMb2FkYWJsZVNjcmlwdDo6RXJyb3IgewogICAgICAgICAgICAgICAgICAgICAgICAgTG9hZGFi
bGVTY3JpcHQ6OkVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgV1RGOjpudWxsb3B0CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om51bGxvcHQKICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIGNhc2UgTW9kdWxlRmV0Y2hGYWlsdXJlS2luZDo6V2FzQ2FuY2VsZWQ6CkBAIC01
NzUsNyArNTc1LDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3Jp
cHRJZ25vcmluZ0V4Y2VwdGlvbihjb25zdCBTdHJpbmcmIHNjcmkKIAogSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxk
LCB7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVy
ZSB9KTsKKyAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHRJbldvcmxkKHdvcmxkLCB7IHNj
cmlwdCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsK
ICAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LnZhbHVlKCkgOiBKU0M6OkpTVmFsdWUgeyB9Owog
fQogCkBAIC01OTEsNyArNTkxLDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLAogICAgIG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOwogI2Vu
ZGlmCiAKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHBhcmFtZXRl
cnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQ
cm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdURjo6
bnVsbG9wdCwgbV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKHBhcmFtZXRlcnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJH
ZXN0dXJlOjpZZXMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCwgbV9mcmFtZS5kb2N1bWVudCgpKTsKIAog
ICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1
c2VkKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsg
IkNhbm5vdCBleGVjdXRlIEphdmFTY3JpcHQgaW4gdGhpcyBkb2N1bWVudCJfcyB9KTsKQEAgLTcw
Myw3ICs3MDMsNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJB
Z2VudFNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihETwogfQogVmFsdWVPckV4Y2VwdGlv
biBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFw
cGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlKQogewotICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFs
KHdvcmxkLCB7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2Vy
R2VzdHVyZSB9KTsKKyAgICByZXR1cm4gZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRl
cm5hbCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIGZvcmNl
VXNlckdlc3R1cmUgfSk7CiB9CiAKIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVVzZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwcGVyV29ybGQmIHdv
cmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2
YjYwNTQ5NDE4YzlkMDJiZjc4YjkwMThkMDBkMTI5N2I0ZGM5ODFiLi5kNTA5OTY2NTYzOWVlN2Ri
M2YzNmUwYzY4ZmZmMTgyZTk3YmIyM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE1NjMsNyArMTU2Myw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHdyaXRlKGZpbGUudXJsKCkuc3RyaW5nKCkpOwogICAgICAgICB3
cml0ZShmaWxlLnR5cGUoKSk7CiAgICAgICAgIHdyaXRlKGZpbGUubmFtZSgpKTsKLSAgICAgICAg
d3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlLmxhc3RNb2RpZmllZE92ZXJyaWRlKCkudmFs
dWVPcigtMSkpKTsKKyAgICAgICAgd3JpdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlLmxhc3RN
b2RpZmllZE92ZXJyaWRlKCkudmFsdWVfb3IoLTEpKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0
ZShQcmVkZWZpbmVkQ29sb3JTcGFjZSBjb2xvclNwYWNlKQpAQCAtMzAzNywxMyArMzAzNywxMyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgRE9NUG9pbnRJbml0IHBvaW50OwogICAgICAgICBp
ZiAoIXJlYWQocG9pbnQueCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50Lnkp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghcmVhZChwb2ludC56KSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoIXJlYWQocG9pbnQudykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gcG9p
bnQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBhMjdjNmQyODk2MTRkZDc1ZDFmZWYyYTk5YWYxYWY0MDkwYzEw
YmFmLi5iYTNmNGM1NTgyZGEyMWE5YzY3MTI0YmRlNDY5NmMwMjMwZmQyN2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
ODUzLDcgKzg1Myw3IEBAIHN1YiBHZW5lcmF0ZU5hbWVkR2V0dGVyTGFtYmRhCiB7CiAgICAgbXkg
KCRvdXRwdXRBcnJheSwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG5hbWVkR2V0dGVyT3BlcmF0
aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUsICRJRExUeXBlKSA9IEBfOwogICAgIAotICAg
IG15IEBhcmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdl
dHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJy
YXksICJXVEY6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIgICAgICAgICIpOworICAgIG15IEBh
cmd1bWVudHMgPSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRuYW1lZEdldHRlck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJz
dGQ6Om51bGxvcHQiLCAidGhpc09iamVjdCIsICIgICAgICAgICIpOwogICAgIHB1c2goQGFyZ3Vt
ZW50cywgInByb3BlcnR5TmFtZVRvQXRvbVN0cmluZyhwcm9wZXJ0eU5hbWUpIik7CiAKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBnZXR0ZXJGdW5jdG9yID0gdmlzaWJsZU5hbWVk
UHJvcGVydHlJdGVtQWNjZXNzb3JGdW5jdG9yPCR7SURMVHlwZX0sICR7Y2xhc3NOYW1lfT4oW10g
KCR7Y2xhc3NOYW1lfSYgdGhpc09iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgLT4g
ZGVjbHR5cGUoYXV0bykge1xuIik7CkBAIC0yMzc2LDcgKzIzNzYsNyBAQCBzdWIgR2VuZXJhdGVF
bnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICB9CiAgICAgICAgICRyZXN1
bHQgLj0gIiAgICAgICAgcmV0dXJuICR7Y2xhc3NOYW1lfTo6JHtlbnVtZXJhdGlvblZhbHVlTmFt
ZX07XG4iOwogICAgIH0KLSAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIFdURjo6bnVsbG9wdDtc
biI7CisgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7XG4iOwogICAgICRy
ZXN1bHQgLj0gIn1cblxuIjsKIAogICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gY29uc3QgY2hh
ciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczwkY2xhc3NOYW1lPigpXG4iOwpAQCAtMjQ2Miw3
ICsyNDYyLDcgQEAgc3ViIEdlbmVyYXRlRGVmYXVsdFZhbHVlCiAKICAgICBpZiAoJGRlZmF1bHRW
YWx1ZSBlcSAibnVsbCIpIHsKICAgICAgICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gIldURjo6bnVsbG9wdCIgaWYgJHR5cGUtPmlzTnVsbGFibGU7CisgICAgICAg
ICAgICByZXR1cm4gInN0ZDo6bnVsbG9wdCIgaWYgJHR5cGUtPmlzTnVsbGFibGU7CiAKICAgICAg
ICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkdHlwZVNjb3BlLCAkdHlwZSk7CiAgICAg
ICAgICAgICByZXR1cm4gImNvbnZlcnQ8JHtJRExUeXBlfT4obGV4aWNhbEdsb2JhbE9iamVjdCwg
anNOdWxsKCkpOyI7CkBAIC0yNDc0LDcgKzI0NzQsNyBAQCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFs
dWUKICAgICAgICAgICAgIG15ICR1c2VBdG9tU3RyaW5nID0gJHR5cGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0F0b21TdHJpbmd9OwogICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8g
Im51bGxBdG9tKCkiIDogIlN0cmluZygpIjsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gIldU
Rjo6bnVsbG9wdCI7CisgICAgICAgIHJldHVybiAic3RkOjpudWxsb3B0IjsKICAgICB9CiAKICAg
ICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiW10iKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50
ZXJmYWNlLmNwcAppbmRleCAxZDI5MWQ2MjdjMzg4OWM3MGZiOTY1NjIyYzc1MWZlNzU0Mjk0NGMy
Li5jNDViNTg5Y2Y3ZDgzYjlhZjhhMjE0YzRmY2E1MjJkMDE5Y2ViOWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8PiBP
cHRpb25hbDxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVz
dENhbGxiYWNrSW4KICAgICAgICAgcmV0dXJuIFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bTo6
VmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAidmFsdWUyIikKICAgICAgICAgcmV0dXJu
IFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51bTo6VmFsdWUyOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RDYWxsYmFja0ludGVyZmFjZTo6RW51
bT4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAKaW5kZXggZGFjMDBkYzM0
Nzc0YzQ5ZjcwNTNjMTBhNzQ0MTQ0OGU3NjViZTQwYi4uNjBhMTJjZTRkNTY1ZjRlNzhmMTk1NWVm
NjkzMDYxMzA4MDE4NmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdERlZmF1bHRUb0pTT05F
bnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3REZWZhdWx0VG9KU09ORW51CiAgICAgICAgIHJldHVy
biBUZXN0RGVmYXVsdFRvSlNPTkVudW06OkVudW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJFbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJuIFRlc3REZWZhdWx0VG9KU09ORW51bTo6
RW51bVZhbHVlMjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0RGVmYXVsdFRvSlNPTkVudW0+KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggY2EzMzEzZTNjYjZi
OWU2OGY5YjA4NjdiNzQzNTlhODUyOGU0YzVjYS4uYjBiNDhkYTI0YjQxMDg0MDA0ZTk2NzJhOGI0
MmU5NmNkNjQzMGFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB0ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVu
dW1UeXBlPihKU0dsbwogICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1
ZTI7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUzIikKICAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUzOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpCkBAIC0xOTQsNyAr
MTk0LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VFbnVt
ZXJhdGlvbjxUZXN0T2JqOjpPcHRpb25hbD4oSlNHbG8KICAgICAgICAgcmV0dXJuIFRlc3RPYmo6
Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMjsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIk9wdGlv
bmFsVmFsdWUzIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZh
bHVlMzsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxU
ZXN0T2JqOjpPcHRpb25hbD4oKQpAQCAtMjI2LDcgKzIyNiw3IEBAIHRlbXBsYXRlPD4gT3B0aW9u
YWw8QWx0ZXJuYXRlRW51bU5hbWU+IHBhcnNlRW51bWVyYXRpb248QWx0ZXJuYXRlRW51bU5hbWU+
KEpTR2xvCiAgICAgICAgIHJldHVybiBBbHRlcm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMTsKICAg
ICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTIiKQogICAgICAgICByZXR1cm4gQWx0ZXJu
YXRlRW51bU5hbWU6OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8QWx0ZXJuYXRlRW51bU5hbWU+KCkKQEAgLTI1Niw3ICsyNTYsNyBA
QCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1BPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6OkVudW1BPihKU0dsb2JhbE9iagogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50
b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09
ICJBIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1BOjpBOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25z
dCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1BPigpCkBAIC0y
ODgsNyArMjg4LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQj4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQj4oSlNHbG9iYWxPYmoKICAgICBhdXRvIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChz
dHJpbmdWYWx1ZSA9PSAiQiIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtQjo6QjsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRl
bXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpF
bnVtQj4oKQpAQCAtMzIwLDcgKzMyMCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
RW51bUM+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUM+KEpTR2xvYmFsT2JqCiAgICAg
YXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkMiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6
RW51bUM6OkM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6RW51bUM+KCkKQEAgLTM1NCw3ICszNTQsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RPYmo6OktpbmQ+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6S2luZD4oSlNHbG9i
YWxPYmplYwogICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CiAgICAgaWYgKHN0
cmluZ1ZhbHVlID09ICJkZWFkIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRlYWQ7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6S2luZD4oKQpAQCAtMzg2LDcgKzM4Niw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6U2l6ZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpTaXplPihKU0dsb2JhbE9iamVjCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpTbWFsbDsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gIm11Y2gtbXVjaC1sYXJnZXIiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6TXVj
aE11Y2hMYXJnZXI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6U2l6ZT4oKQpAQCAtNDE4LDcgKzQxOCw3IEBAIHRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpDb25m
aWRlbmNlPihKCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpDb25maWRlbmNlOjpIaWdoOwogICAg
IGlmIChzdHJpbmdWYWx1ZSA9PSAia2luZGEtbG93IikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6
OkNvbmZpZGVuY2U6OktpbmRhTG93OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNvbmZpZGVuY2U+KCkKQEAgLTY1Niw3ICs2NTYsNyBA
QCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgICAgICByZXN1bHQubnVsbGFibGVFbnVtID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxsYWJsZUVudW1WYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0
Lm51bGxhYmxlRW51bSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlRW51
bSA9IHN0ZDo6bnVsbG9wdDsKICAgICBKU1ZhbHVlIG51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0
VmFsdWU7CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZUludGVn
ZXJXaXRoRGVmYXVsdFZhbHVlID0ganNVbmRlZmluZWQoKTsKQEAgLTY2OCw3ICs2NjgsNyBAQCB0
ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgICAgICByZXN1bHQubnVsbGFibGVJbnRlZ2VyV2l0
aERlZmF1bHQgPSBjb252ZXJ0PElETE51bGxhYmxlPElETExvbmc+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQu
bnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3Vs
dC5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCA9IHN0ZDo6bnVsbG9wdDsKICAgICBKU1ZhbHVl
IG51bGxhYmxlTm9kZVZhbHVlOwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAg
bnVsbGFibGVOb2RlVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwpAQCAtNzA0LDcgKzcwNCw3IEBAIHRl
bXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpE
aWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVtYmVy
ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExMb25nLCBJRExJbnRlcmZhY2U8Tm9k
ZT4+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbGFibGVVbmlvbk1lbWJlclZhbHVlKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQot
ICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbk1lbWJlciA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1
ZSByZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlVmFsdWU7CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZp
bmVkKQogICAgICAgICByZXF1aXJlZEJ1ZmZlclNvdXJjZVZhbHVlVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwpAQCAtNjk1OSw3ICs2OTU5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX21ldGhvZFdpdGhPcHRpb25hbFIKICAgICBV
TlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwotICAgIGF1dG8gcmVjb3JkID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRl
ZmluZWQoKSA/IFdURjo6bnVsbG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMUmVjb3JkPElE
TERPTVN0cmluZywgSURMTG9uZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOworICAgIGF1dG8gcmVjb3JkID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQo
KSA/IHN0ZDo6bnVsbG9wdCA6IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMUmVjb3JkPElETERPTVN0
cmluZywgSURMTG9uZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkKFdU
Rk1vdmUocmVjb3JkKSk7IH0pKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5LmNwcAppbmRleCA2ZDkyMDdmZjEyNzAxMDNlZmJjNjhiNGFmYWJmNjAzNmZkZDIzNjY4
Li44YWU4OTMzZWJjM2NmNTdhODRiZGFjNjNmODFhYTkwOTE2ZTY3MWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1w
bGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5SW1w
bE5hbWU+KEpTR2xvYmFsT2JqZQogICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbldpdGhOdWxs
RGVmYXVsdFZhbHVlID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExET01TdHJpbmcs
IElETEJvb2xlYW4+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbGFibGVVbmlvbldpdGhOdWxs
RGVmYXVsdFZhbHVlVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51
bGxEZWZhdWx0VmFsdWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVu
aW9uV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAjaWYgRU5BQkxFKENvbmRp
dGlvbmFsMTMpIHx8IEVOQUJMRShDb25kaXRpb25hbDE0KQogICAgIEpTVmFsdWUgcGFydGlhbEJv
b2xlYW5NZW1iZXJWYWx1ZTsKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCkBAIC0zNTQsNyAr
MzU0LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVu
dW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5RmlsZT4gcGEKICAgICAgICAgcmV0dXJuIFRlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFs
dWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVy
biBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9uYXJ5Rmls
ZTo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczxUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5kYWxvbmVEaWN0aW9u
YXJ5RmlsZT4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcApp
bmRleCA1ZWQ3OTgwOGVlODE4NjRiMWQ2ODZjOGI2NDNjYWIzM2NkY2ExMzkyLi40YTdhOTFhNTQ1
OTUwMGQ4MTRiZDk1ZWQ0ZmE5NWUwZmIxNWZlYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uLmNwcApAQCAtNTYsNyArNTYsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+IHBhcnNlRW51bWVyYXRpb248VGVzdFN0YW5k
YWxvbmVFbgogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbjo6RW51bVZh
bHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImVudW1WYWx1ZTIiKQogICAgICAgICByZXR1
cm4gVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbjo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29u
c3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uPigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDgzM2JhYzMzZDJlZmE1ODNkYWJiNDVk
MzNiZGVhZTRmNGE1MGRkMGEuLjE2NDMyOTA0OTE4ZTczY2UwY2ZjMGM5ZWI0NjRlNjE4ZWI0M2M4
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgc3RhdGljIEV4
cGVjdGVkPE9wdGlvbmFsPEFjdGlvbj4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZEFjdGlvbihKU0ds
b2JhbE9iamVjdCYgbGUKICAgICAgICAgU3RyaW5nIHNlbGVjdG9yU3RyaW5nID0gYXNTdHJpbmco
c2VsZWN0b3IpLT52YWx1ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGlmICghaXNW
YWxpZENTU1NlbGVjdG9yKHNlbGVjdG9yU3RyaW5nKSkgewogICAgICAgICAgICAgLy8gU2tpcCBy
dWxlcyB3aXRoIGludmFsaWQgc2VsZWN0b3JzIHRvIGJlIGJhY2t3YXJkcy1jb21wYXRpYmxlLgot
ICAgICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4geyBBY3Rpb24oQWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcpIH07CiAgICAg
fQpAQCAtMzA0LDcgKzMwNCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxPcHRpb25hbDxDb250ZW50RXh0
ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4gbG9hZFJ1bGUoSlNHbG9iCiAgICAgaWYgKGFj
dGlvbi52YWx1ZSgpKQogICAgICAgICByZXR1cm4ge3t7IFdURk1vdmUodHJpZ2dlci52YWx1ZSgp
KSwgV1RGTW92ZShhY3Rpb24udmFsdWUoKS52YWx1ZSgpKSB9fX07CiAKLSAgICByZXR1cm4geyBX
VEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIAogc3RhdGlj
IEV4cGVjdGVkPFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uUnVsZT4sIHN0ZDo6ZXJyb3JfY29kZT4g
bG9hZEVuY29kZWRSdWxlcyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29u
c3QgU3RyaW5nJiBydWxlSlNPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMuaAppbmRleCA5YTdiZTVhYzEwMTZj
NDViZDU4ZTNiMzFlZDdiNjdlMzUyNGZiNmMyLi5lNzJjMTQ0N2FkNmYzYjIwMzhjMmIxOGU0OTlm
MzdlOTViY2EwNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50UnVsZUxpc3RSZXN1bHRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oCkBAIC04MSwxMiArODEsMTIgQEAgc3Ry
dWN0IENvbnRlbnRSdWxlTGlzdFJlc3VsdHMgewogICAgICAgICBPcHRpb25hbDxTdW1tYXJ5PiBz
dW1tYXJ5OwogICAgICAgICBkZWNvZGVyID4+IHN1bW1hcnk7CiAgICAgICAgIGlmICghc3VtbWFy
eSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFp
cjxDb250ZW50UnVsZUxpc3RJZGVudGlmaWVyLCBSZXN1bHQ+Pj4gcmVzdWx0czsKICAgICAgICAg
ZGVjb2RlciA+PiByZXN1bHRzOwogICAgICAgICBpZiAoIXJlc3VsdHMpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqc3VtbWFyeSks
CkBAIC0xMDgsMjIgKzEwOCwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBhdXRvIENvbnRl
bnRSdWxlTGlzdFJlc3VsdHM6OlJlc3VsdDo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIE9wdGlv
bmFsPGJvb2w+IGJsb2NrZWRMb2FkOwogICAgIGRlY29kZXIgPj4gYmxvY2tlZExvYWQ7CiAgICAg
aWYgKCFibG9ja2VkTG9hZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBtYWRlSFRUUFM7
CiAgICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7CiAgICAgaWYgKCFtYWRlSFRUUFMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBibG9j
a2VkQ29va2llczsKICAgICBpZiAoIWJsb2NrZWRDb29raWVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlv
bmFsPFZlY3RvcjxTdHJpbmc+PiBub3RpZmljYXRpb25zOwogICAgIGRlY29kZXIgPj4gbm90aWZp
Y2F0aW9uczsKICAgICBpZiAoIW5vdGlmaWNhdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgV1RGTW92ZSgqYmxvY2tlZExvYWQpLApAQCAtMTQ2LDIyICsxNDYsMjIgQEAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gYXV0byBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpTdW1tYXJ5Ojpk
ZWNvZGUoRGVjb2RlciYgZGUKICAgICBPcHRpb25hbDxib29sPiBibG9ja2VkTG9hZDsKICAgICBk
ZWNvZGVyID4+IGJsb2NrZWRMb2FkOwogICAgIGlmICghYmxvY2tlZExvYWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOwogICAgIGRlY29kZXIgPj4gbWFkZUhUVFBTOwog
ICAgIGlmICghbWFkZUhUVFBTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRD
b29raWVzOwogICAgIGRlY29kZXIgPj4gYmxvY2tlZENvb2tpZXM7CiAgICAgaWYgKCFibG9ja2Vk
Q29va2llcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBoYXNOb3RpZmljYXRpb25zOwog
ICAgIGRlY29kZXIgPj4gaGFzTm90aWZpY2F0aW9uczsKICAgICBpZiAoIWhhc05vdGlmaWNhdGlv
bnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmJsb2NrZWRMb2Fk
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZB
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcAppbmRl
eCBiMzcwNDE5OGVkYWIzYzNmZWQxZGVhMDI2ZDAyOWUzMmU0N2Y2ZTI2Li42NDgzYTFmMWIzYTkx
ZjJjYjEzZDNhODhlYTNkNWRhMTk4MmViNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0zMjUsNyArMzI1LDcgQEAgT3B0aW9uYWw8REZB
PiBORkFUb0RGQTo6Y29udmVydChORkEmJiBuZmEpCiB7CiAgICAgYXV0byBzZXJpYWxpemVkTkZB
ID0gU2VyaWFsaXplZE5GQTo6c2VyaWFsaXplKFdURk1vdmUobmZhKSk7CiAgICAgaWYgKCFzZXJp
YWxpemVkTkZBKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgTkZBTm9kZUNsb3N1cmVzIG5mYU5vZGVDbG9zdXJlcyA9IHJl
c29sdmVFcHNpbG9uQ2xvc3VyZXMoKnNlcmlhbGl6ZWRORkEpOwogICAgIERGQSBkZmE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCmlu
ZGV4IGY0YTYxYjQ5MjU1NDgzMmJkMDRhMjc4ZmE1ZDU1NjIyMTAzNzI3YTIuLjU5ZGNkYTZiOTAy
OTBkYzEzZjMxYWFkYTBjOWQ5YTk1OGY5NTE3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCkBAIC01NCw3ICs1NCw3IEBAIE9w
dGlvbmFsPFNlcmlhbGl6ZWRORkE+IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZShORkEmJiBuZmEp
CiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
ICAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlNlcmlh
bGl6ZWRORkEiLCBmaWxlKTsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmls
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBib29sIHdyb3RlU3VjY2Vzc2Z1bGx5ID0gd3JpdGVBbGxUb0ZpbGUoZmls
ZSwgbmZhLm5vZGVzKQogICAgICAgICAmJiB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEudHJhbnNp
dGlvbnMpCkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRORkE+IFNlcmlhbGl6
ZWRORkE6OnNlcmlhbGl6ZShORkEmJiBuZmEpCiAgICAgaWYgKCF3cm90ZVN1Y2Nlc3NmdWxseSkg
ewogICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGJvb2wgbWFwcGVkU3Vj
Y2Vzc2Z1bGx5ID0gZmFsc2U7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRO
RkE+IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZShORkEmJiBuZmEpCiAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGZpbGUpOwogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwog
ICAgIGlmICghbWFwcGVkU3VjY2Vzc2Z1bGx5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTWV0YWRhdGEgbWV0YWRhdGEg
ewogICAgICAgICBuZmEubm9kZXMuc2l6ZSgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKaW5kZXggZWY1MGNiYjIzZGJjM2Yx
ZGE1NWNmYTRhYmU0YzE3NTNiOGM4YTc3OS4uNTlmZGNjYjUwNjM3M2FlZDQxODJkYmFiNjFjZDdk
ODdhMjJjZWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
VVJMRmlsdGVyUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9VUkxGaWx0ZXJQYXJzZXIuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogICAgICAg
ICBmYWlsKFVSTEZpbHRlclBhcnNlcjo6QXRvbUNoYXJhY3Rlcik7CiAgICAgfQogCi0gICAgdm9p
ZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUsIE9wdGlvbmFsPFN0
cmluZz4gPSBXVEY6Om51bGxvcHQpCisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJu
QmVnaW4oYm9vbCA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51bGxvcHQpCiAgICAg
ewogICAgICAgICBpZiAoaGFzRXJyb3IoKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwCmluZGV4IDM2
NDZiNDdjYjUxZjJkMzI1NGJmMTk4ZDI1ZTE2MTUxYmQ5MzNlZTEuLjgyZGZiY2VkZGMyOWU4ZmM2
YmIyMTQ4ZThmODI0N2RmYzZkNzViZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeSgpCiBPcHRpb25hbDxDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyPiBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6aWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgLy8gRklYTUU6IEhvdyBpcyBpdCBo
ZWxwZnVsIHRvIGNhbGwgaXNvbGF0ZWRDb3B5IG9uIHRoZSBhcmd1bWVudCB0byBmaW5kPwogICAg
IGF1dG8gaWRlbnRpZmllciA9IG1faWRlbnRpZmllcnMuZmluZChuYW1lLmlzb2xhdGVkQ29weSgp
KTsKICAgICBpZiAoaWRlbnRpZmllciA9PSBtX2lkZW50aWZpZXJzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIGlkZW50aWZpZXItPnZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5
cHRvLmNwcAppbmRleCBiNTQ5MTkxYTdkZjBiM2UyNzE1YTdjMDIwM2NmZDY5NmQxMTBmMDQ3Li4z
NDVhZGZlNGJlZmQ0YzcyMTE2OGQwMDgyNTcyOWMzYWVkNmNkNjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vU3VidGxlQ3J5cHRvLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBTdWJ0
bGVDcnlwdG86CiAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGtleURhdGFWYXJpYW50LAog
ICAgICAgICAgICAgWyZwcm9taXNlXSAoSnNvbldlYktleSYpIC0+IE9wdGlvbmFsPEtleURhdGE+
IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH0pOwotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBbXSAo
YXV0byYgYnVmZmVyU291cmNlKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKQEAgLTQ3MSw3ICs0NzEsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRhKFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwg
U3VidGxlQ3J5cHRvOgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFsmcHJvbWlzZV0gKGF1
dG8mKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCA0YmZiNGVmYjhl
MDU3YWI2ZDk3ZGEyMTFjYjhjN2E5OTdiOTY0OWNkLi4wMmIyMTcxMWU3ZmJlNGJmZjI0YWQyODE2
MGUzNTMxNmE2ZmQ3MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmIHBhcmFtZXRlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBy
ZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgudmFs
dWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1BhcmFt
ZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwg
ZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnMKICAgICBSZWZQdHI8Q3J5cHRvS2V5SE1B
Qz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3Jt
YXQ6OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQ
YXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyhobWFj
UGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlm
aWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3
azogewogICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2gsIGNvbnN0IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShDcnlwdG9LZXlGb3Jt
YXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29ucwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlI
TUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGhtYWNQYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEp
KSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CisgICAg
ICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydEp3ayhobWFjUGFyYW1ldGVycy5sZW5n
dGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdU
Rjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShj
aGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCBmMjJjYzUxNWY0Zjc4
Nzg4NWZkY2NmYzdiOGU0MjRjN2ZhYTcwODI3Li43OGIyNzdlZmRhZmM5NzBiZWJlMmM0MDhhYjhl
YjhkMWU1N2Y4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApA
QCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6
aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmCiAgICAgICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhEYXRhRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBhcmFtZXRlcnMu
aWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGtleSksIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhwYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShrZXkpLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpT
cGtpOiB7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYKICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2ko
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoV1RGOjpnZXQ8VmVj
dG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kocGFyYW1ldGVycy5pZGVudGlmaWVyLCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9L
ZXlGb3JtYXQ6OlBrY3M4OiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5
RGF0YSYKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6
OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXVEZNb3Zl
KFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
KyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+
KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKaW5kZXggYTUxYjY2ZDhkZGU4MTEz
NGI1ODMwYzJhNmEwOTlkODFhYjBjZWQ1OC4uZjJmODY2ZjJlNmNjODhlODMzNThhNzM5NTkwNjBi
NGVkYzAzODc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwCkBAIC00MSwyOCArNDEsMjgg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdv
cml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6
R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAo
IWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVyIG9iamVj
dCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBDQkMgY2lwaGVyIG1vZGUuCiAgICAgUEFM
OjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CiAgICAgZ2NyeV9lcnJv
cl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJ
UEhFUl9NT0RFX0NCQywgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0g
Z2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIElWIGZvciB0
aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRpdihoYW5kbGUs
IGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIC8vIFVzZSB0aGUgUEtDUyM3IHBhZGRpbmcuCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIC8vIFBhZGRlZCBzaXplIHNob3VsZCBiZSBiaWdnZXIg
dGhhbiBzaXplLCBidXQgYmFpbCBpZiB0aGUgdmFsdWUgZG9lc24ndCBmaXQgaW50byBhIGJ5dGUu
CiAgICAgICAgIEFTU0VSVChwYWRkZWRTaXplID4gc2l6ZSk7CiAgICAgICAgIGlmIChwYWRkZWRT
aXplIC0gc2l6ZSA+IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB1aW50OF90IHBhZGRpbmdWYWx1
ZSA9IHBhZGRlZFNpemUgLSBzaXplOwogCiAgICAgICAgIHBsYWluVGV4dC5ncm93KHBhZGRlZFNp
emUpOwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGVycm9y
ID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIGVuY3J5cHRpb24gYW5kIHJldHJpZXZlIHRoZSBlbmNy
eXB0ZWQgb3V0cHV0LgpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAog
ICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZW5jcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91
dHB1dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKQEAgLTEwNCwzNSAr
MTA0LDM1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBB
RVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0g
PSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAg
ICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNpcGhl
ciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgQ0JDIGNpcGhlciBtb2RlLgog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAgIGdj
cnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRobSwg
R0NSWV9DSVBIRVJfTU9ERV9DQkMsIDApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBl
cnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkp
OwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBJ
ViBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0aXYo
aGFuZGxlLCBpdi5kYXRhKCksIGl2LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgY2lwaGVyIG9iamVjdCBiZWZvcmUgcGVyZm9ybWlu
ZyB0aGUgZGVjcnlwdGlvbi4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBkZWNy
eXB0aW9uIGFuZCByZXRyaWV2ZSB0aGUgZGVjcnlwdGVkIG91dHB1dC4KQEAgLTE0MCw3ICsxNDAs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZGVj
cnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIGNpcGhlclRleHQuZGF0
YSgpLCBjaXBoZXJUZXh0LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICAvLyBSZW1vdmUgdGhlIFBLQ1MjNyBwYWRkaW5nIGZyb20gdGhlIGRlY3J5cHRlZCBvdXRw
dXQuCkBAIC0xNDgsMTYgKzE0OCwxNiBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgICAg
ICAvLyBUaGUgcGFkZGluZyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIGxhc3QgYnl0
ZS4KICAgICAgICAgdWludDhfdCBwYWRkaW5nVmFsdWUgPSBvdXRwdXQubGFzdCgpOwogICAgICAg
ICBpZiAocGFkZGluZ1ZhbHVlID4gZ2NyeV9jaXBoZXJfZ2V0X2FsZ29fYmxrbGVuKCphbGdvcml0
aG0pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUGFkZGluZyB2YWx1ZSBtdXN0bid0IGJlIGdy
ZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcGFkZGVkIG91dHB1dC4KICAgICAgICAgc2l6ZV90
IHNpemUgPSBvdXRwdXQuc2l6ZSgpOwogICAgICAgICBpZiAocGFkZGluZ1ZhbHVlID4gc2l6ZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIC8vIEJhaWwgaWYgdGhlIGxhc3QgYHBhZGRpbmdWYWx1ZWAg
Ynl0ZXMgZG9uJ3QgaGF2ZSB0aGUgdmFsdWUgb2YgYHBhZGRpbmdWYWx1ZWAuCiAgICAgICAgIGlm
IChzdGQ6OmNvdW50KG91dHB1dC5lbmQoKSAtIHBhZGRpbmdWYWx1ZSwgb3V0cHV0LmVuZCgpLCBw
YWRkaW5nVmFsdWUpICE9IHBhZGRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIFNo
cmluayB0aGUgb3V0cHV0IFZlY3RvciBvYmplY3QgdG8gZHJvcCB0aGUgUEtDUyM3IHBhZGRpbmcu
CiAgICAgICAgIG91dHB1dC5zaHJpbmsoc2l6ZSAtIHBhZGRpbmdWYWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNf
Q1RSR0NyeXB0LmNwcAppbmRleCAzYzkwNTk0MGFkNWFjOWU4MWNkODRiNDM2ZWYyMjUxYjI4NmI2
ZGY3Li43MmMxZWY0NzlkZjkyMmNjNzg5MjU5NDcyYzBkODJlNjgzMzRkMjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
QUVTX0NUUkdDcnlwdC5jcHAKQEAgLTQ0LDI2ICs0NCwyNiBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjYWxsT3BlcmF0aW9uKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24g
b3BlcgogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX3Jlc2V0KGhhbmRsZSk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lwaGVy
X3NldGN0cihoYW5kbGUsIGNvdW50ZXIuZGF0YSgpLCBjb3VudGVyLnNpemUoKSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhh
bmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhf
dD4gb3V0cHV0KHNpemUpOwogICAgIGVycm9yID0gb3BlcmF0aW9uKGhhbmRsZSwgb3V0cHV0LmRh
dGEoKSwgb3V0cHV0LnNpemUoKSwgZGF0YSwgc2l6ZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBoZXJP
cGVyYXRpb24gb3BlcgogICAgIGNvbnN0ZXhwciBzaXplX3QgYmxvY2tTaXplID0gMTY7CiAgICAg
YXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXku
c2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDb25zdHJ1Y3Qg
dGhlIGxpYmdjcnlwdCBjaXBoZXIgb2JqZWN0IGFuZCBhdHRhY2ggdGhlIGtleSB0byBpdC4gS2V5
IGluZm9ybWF0aW9uIG9uIHRoaXMKICAgICAvLyBjaXBoZXIgb2JqZWN0IHdpbGwgbGl2ZSB0aHJv
dWdoIGFueSBnY3J5X2NpcGhlcl9yZXNldCgpIGNhbGxzLgpAQCAtODIsMTMgKzgyLDEzIEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6
OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBo
ZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0NUUiwgMCk7CiAg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3Nl
dGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBibG9jayBjb3VudDogKChpbnB1dFRl
eHQuc2l6ZSgpICsgYmxvY2tTaXplIC0gMSkgLyBibG9ja1NpemUpLCByZW1haW5kZXIgZGlzY2Fy
ZGVkLgpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgLy8g
dGhlIG51bWJlciBvZiB1bmlxdWUgY291bnRlciB2YWx1ZXMgd2UgY291bGQgcHJvZHVjZSBmb3Ig
dGhlIHNwZWNpZmllZCBjb3VudGVyCiAgICAgLy8gbGVuZ3RoKSBpcyBsb3dlciB0aGFuIHRoZSBk
ZWR1Y2VkIGJsb2NrIGNvdW50LCB3ZSBiYWlsLgogICAgIGlmIChnY3J5X21waV9jbXAoY291bnRl
ckxpbWl0TVBJLCBibG9ja0NvdW50TVBJKSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgY291bnRl
ciBsZW5ndGgsIGluIGJpdHMsIG1hdGNoZXMgdGhlIHNpemUgb2YgdGhlIGNvdW50ZXIgZGF0YSwg
d2UgZG9uJ3QgaGF2ZSB0bwogICAgIC8vIHVzZSBhbnkgcGFydCBvZiB0aGUgY291bnRlciBWZWN0
b3I8PiBhcyBub25jZS4gVGhpcyBhbGxvd3MgdXMgdG8gZGlyZWN0bHkgZW5jcnlwdCBvcgpAQCAt
MTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFF
U19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgZXJyb3IgPSBnY3J5
X21waV9zY2FuKCZjb3VudGVyRGF0YU1QSSwgR0NSWU1QSV9GTVRfVVNHLCBjb3VudGVyLmRhdGEo
KSwgY291bnRlci5zaXplKCksIG51bGxwdHIpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gRXh0cmFjdCB0aGUgY291bnRlciBNUEkgZnJvbSB0aGUgY291bnRlckRhdGFN
UEk6IChjb3VudGVyRGF0YU1QSSAlIGNvdW50ZXJMaW1pdE1QSSkuCkBAIC0xNzUsMTQgKzE3NSwx
NCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBBTDo6
R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcgogICAgICAgICBlcnJvciA9IGdjcnlfbXBpX3By
aW50KEdDUllNUElfRk1UX1VTRywgYmxvY2tDb3VudGVyRGF0YS5kYXRhKCksIGJsb2NrQ291bnRl
ckRhdGEuc2l6ZSgpLCBudWxscHRyLCBibG9ja0NvdW50ZXJNUEkpOwogICAgICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRW5jcnlwdC9k
ZWNyeXB0IHRoaXMgc2luZ2xlIGJsb2NrIHdpdGggdGhlIGJsb2NrLXNwZWNpZmljIGNvdW50ZXIu
IE91dHB1dCBmb3IgdGhpcwogICAgICAgICAvLyBzaW5nbGUgYmxvY2sgaXMgYXBwZW5kZWQgdG8g
dGhlIGdlbmVyYWwgb3V0cHV0IHZlY3Rvci4KICAgICAgICAgYXV0byBibG9ja091dHB1dCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uLCBoYW5kbGUsIGJsb2NrQ291bnRlckRhdGEsIGlucHV0VGV4
dC5kYXRhKCkgKyBpLCBibG9ja0lucHV0U2l6ZSk7CiAgICAgICAgIGlmICghYmxvY2tPdXRwdXQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKCpibG9ja091dHB1dCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCmluZGV4IGZmYmM5M2M5MWU5NWJjMDlhMGRjZTU3
YWQ3ZGU1MTU5YTQ2ZTZkYzkuLjRhNTFkMWQ3MjNkOTJjODE2ZDI3MjAzNDYwNGQxOWUyMTQ2MGFm
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcApAQCAtNDQsMjggKzQ0LDI4IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZv
ciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6
YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0
aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNpcGhlciBvYmplY3QgZm9yIHRo
ZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgR0NNIGNpcGhlciBtb2RlLgogICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRobSwgR0NSWV9DSVBIRVJfTU9E
RV9HQ00sIEdDUllfQ0lQSEVSX1NFQ1VSRSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAg
IGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUo
KSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVu
IElWIGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRp
dihoYW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4gYWRkaXRvbmFsIGRhdGEsIGlmIGFueSwgYXMg
dGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KQEAgLTczLDcg
KzczLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAgICAgZXJyb3IgPSBnY3J5X2Np
cGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9u
YWxEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBlbmNyeXB0aW9uIGFuZCByZXRy
aWV2ZSB0aGUgZW5jcnlwdGVkIG91dHB1dC4KQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2VuY3J5cHQoaGFuZGxlLCBvdXRw
dXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6
ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIElmIHRhZyBsZW5n
dGggd2FzIHNwZWNpZmllZCwgcmV0cmlldmUgdGhlIHRhZyBkYXRhIGFuZCBhcHBlbmQgaXQgdG8g
dGhlIG91dHB1dCB2ZWN0b3IuCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhhbmRsZSwgdGFnLmRhdGEo
KSwgdGFnLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKHRhZyk7CkBAIC0xMTIsMjgg
KzExMiwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIC8vIERldGVybWluZSB0aGUg
QUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGht
ID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwog
ICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IEdDcnlwdCBjaXBo
ZXIgb2JqZWN0IGZvciB0aGUgQUVTIGFsZ29yaXRobSBhbmQgdGhlIEdDTSBjaXBoZXIgbW9kZS4K
ICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKICAgICBn
Y3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0s
IEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAg
ZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgp
KTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4g
SVYgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2
KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBhZGRpdG9uYWwgZGF0YSwgaWYgYW55LCBhcyB0
aGUgYXV0aGVudGljYXRpb24gZGF0YSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgpAQCAtMTQxLDcg
KzE0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9j
aXBoZXJfYXV0aGVudGljYXRlKGhhbmRsZSwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlv
bmFsRGF0YS5zaXplKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBBY2NvdW50IGZvciB0aGUgc3BlY2lmaWVkIHRh
ZyBsZW5ndGggd2hlbiBwZXJmb3JtaW5nIHRoZSBkZWNyeXB0aW9uIGFuZCByZXRyaWV2aW5nIHRo
ZSBkZWNyeXB0ZWQgb3V0cHV0LgpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9kZWNyeXB0KGhhbmRsZSwgb3V0cHV0LmRh
dGEoKSwgb3V0cHV0LnNpemUoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlckxlbmd0aCk7CiAg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBJZiB0YWcgbGVuZ3RoIHdhcyBp
bmRlZWQgc3BlY2lmaWVkLCByZXRyaWV2ZSB0aGUgdGFnIGRhdGEgYW5kIGNvbXBhcmUgaXQgc2Vj
dXJlbHkgdG8gdGhlIHRhZyBkYXRhIHRoYXQKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhhbmRs
ZSwgdGFnLmRhdGEoKSwgdGFnTGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25zdGFudFRpbWVNZW1jbXAodGFn
LmRhdGEoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJMZW5ndGgsIHRhZ0xlbmd0aCkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGF1dG8gb3V0cHV0ID0gZ2Ny
eXB0RW5jcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5UZXh0LCBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZh
bHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5LmtleSgp
LCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFs
RGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOwogICAg
IGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKQEAgLTE4OSw3ICsxODksNyBAQCBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3Jt
RW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1B
ZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5cHRE
ZWNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBjaXBoZXJUZXh0LCBwYXJh
bWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVl
T3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBw
YXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERh
dGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKICAgICBp
ZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAKaW5k
ZXggYmFiMjYwZDY1OGY4MDFkNmM5NGQ2MjAzYWQzMTM3OWJkNTM4YmJkMi4uYjYyMmI0ZTlmOTg2
NDcwMDY0NTA0MjIwMDRkOTgwZGZlYmU0NGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcApA
QCAtNDAsMjggKzQwLDI4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJt
aW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBh
bGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgp
ICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0Ny
eXB0IGNpcGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgQUVTLVdyYXAg
Y2lwaGVyIG1vZGUuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBo
YW5kbGU7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxl
LCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0FFU1dSQVAsIDApOwogICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMgY2lw
aGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5k
YXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Ly8gRmluYWxpemUgdGhlIGNpcGhlciBvYmplY3QgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGVuY3J5
cHRpb24uCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9maW5hbChoYW5kbGUpOwogICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSB0aGUgZW5jcnlwdGlvbi4gVGhl
IHByb3ZpZGVkIG91dHB1dCBidWZmZXIgbXVzdCBiZSA2NCBiaXRzIGxhcmdlciB0aGFuIHRoZSBp
bnB1dCBidWZmZXIuCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAg
ICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0
cHV0LnNpemUoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC04MCwyOCArODAsMjggQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBjb24KICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0g
Zm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0
OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAoIWFsZ29y
aXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVyIG9iamVjdCBmb3Ig
dGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBBRVMtV3JhcCBjaXBoZXIgbW9kZS4KICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vycm9y
X3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQ
SEVSX01PREVfQUVTV1JBUCwgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9y
ID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CiAg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgY2lwaGVy
IG9iamVjdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZW5jcnlwdGlvbi4KICAgICBlcnJvciA9IGdj
cnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICAvLyBQZXJmb3JtIHRoZSBkZWNyeXB0aW9uLiBUaGUgb3V0cHV0IGJ1ZmZlciBtYXkgYmUg
c3BlY2lmaWVkIDY0IGJpdHMgc2hvcnRlciB0aGFuIHRoZSBpbnB1dCBidWZmZXIuCkBAIC0xMDks
NyArMTA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53cmFw
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb24KICAgICBlcnJvciA9IGdjcnlfY2lw
aGVyX2RlY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
cmV0dXJuIG91dHB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4IDBmZTY3NTExNTQ1NDZjNjQ3
Njk5NDFiODVkODMwZGJlNDAxYWVlYmYuLjA1NGVjODI1MmIxMjljOGQxMDI2YjJjOTc0ZDQwNjcy
YTg1NjM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtNDgsMTUgKzQ4LDE1IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNl
S2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgewogICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfc2V4cF90PiBkU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihiYXNlS2V5U2V4cCwgImQiLCAw
KSk7CiAgICAgICAgIGlmICghZFNleHApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIGRhdGEg
PSBtcGlEYXRhKGRTZXhwKTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHJhdyko
dmFsdWUgJWIpKSIsIGRhdGEtPnNpemUoKSwgZGF0YS0+ZGF0YSgpKTsKICAgICAgICAgaWYgKCFk
YXRhU2V4cCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEVuY3J5cHQgdGhlIGRhdGEgcy1l
eHByZXNzaW9uIHdpdGggdGhlIHB1YmxpYyBrZXkuCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5
U2V4cCwgZ2NyeV9zZXhwCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19lbmNyeXB0
KCZjaXBoZXJTZXhwLCBkYXRhU2V4cCwgcHVibGljS2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgc2hhcmVkIHBvaW50IHZhbHVlIGZy
b20gdGhlIGdlbmVyYXRlZCBzLWV4cHJlc3Npb24sIHdoaWNoIGlzIG9mIHRoZSBmb2xsb3dpbmcg
Zm9ybToKQEAgLTc0LDI0ICs3NCwyNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZXJpdmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAsIGdjcnlfc2V4cAogICAgIC8v
ICAgICAoZSAuLi4pKSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHhNUEko
Z2NyeV9tcGlfbmV3KDApKTsKICAgICBpZiAoIXhNUEkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB7CiAgICAgICAgIFBB
TDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2Vu
KGNpcGhlclNleHAsICJzIiwgMCkpOwogICAgICAgICBpZiAoIXNTZXhwKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBzTVBJKGdjcnlfc2V4cF9u
dGhfbXBpKHNTZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKICAgICAgICAgaWYgKCFzTVBJKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV9wb2ludF90
PiBwb2ludChnY3J5X21waV9wb2ludF9uZXcoMCkpOwogICAgICAgICBpZiAoIXBvaW50KQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X21waV9lY19kZWNvZGVfcG9pbnQocG9pbnQs
IHNNUEksIG51bGxwdHIpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIC8vIFdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgeC1j
b29yZGluYXRlLgogICAgICAgICBnY3J5X21waV9wb2ludF9zbmF0Y2hfZ2V0KHhNUEksIG51bGxw
dHIsIG51bGxwdHIsIHBvaW50LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCmluZGV4
IDg4MTgyM2Y4MTkwZWNmMWYzZjU3YTM1NWNjNDE1Y2FjODRkYTI5YTkuLjJkYmJhMDk2YmYxNjgz
NzhhMTY2MTE2YjI0ODQ4MGE0MTQ4N2M4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCkBAIC02
OSwxMSArNjksMTEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2ln
bihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICB7CiAgICAgICAgIGF1
dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpkaWdl
c3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZGF0
YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC04NCwxMyArODQsMTMgQEAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhw
LCBjb25zdCBWZWN0b3I8dWkKICAgICB7CiAgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0gaGFz
aEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXNo
YUFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdj
cnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyByYXcpKGhhc2gg
JXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRh
dGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJlU2V4
cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIHJlc3VsdGluZyByIGFuZCBzIGludGVnZXJz
LiBUaGV5IGFyZSBjb25jYXRlbmF0ZWQgaW50bwpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpCiAKICAgICBpZiAoIWV4dHJhY3RFQ0RTQVNpZ25hdHVyZUludGVnZXIo
c2lnbmF0dXJlLCBzaWduYXR1cmVTZXhwLCAiciIsIGtleVNpemVJbkJ5dGVzKQogICAgICAgICB8
fCAhZXh0cmFjdEVDRFNBU2lnbmF0dXJlSW50ZWdlcihzaWduYXR1cmUsIHNpZ25hdHVyZVNleHAs
ICJzIiwga2V5U2l6ZUluQnl0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHNpZ25hdHVyZTsKIH0KQEAg
LTEyOSwxMSArMTI5LDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAg
ICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgq
ZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAg
IGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIGtleVNpemVJbkJ5dGVzLCBzaWduYXR1cmUu
ZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5dGVz
KTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCB0aGUg
ZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyByYXcgaGFzaGVkIGRhdGEuCkBAIC0xNTMs
MTMgKzE1MywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4
cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcwogICAgIHsKICAgICAgICAgYXV0
byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmll
cik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZXJy
b3IgPSBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3MgcmF3
KShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6
ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCBiZjY2OTZh
M2EzMThkODBhNzI1Y2UwZWViYjIwZmYzOGJlOTY3ZmExLi4xYjE2MmI3MjdlOWNiNDQ0ZGJhMDVh
NGIzNWE4YmU5NDA0NDlmZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTQ4LDE4ICs0OCwx
OCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogCiAgICAgYXV0byBtYWNBbGdvcml0aG0gPSBo
bWFjQWxnb3JpdGhtKGlkZW50aWZpZXIpOwogICAgIGlmICghbWFjQWxnb3JpdGhtKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gV2UgY2FuIGltbWVkaWF0ZWx5IGRpc2NhcmQgaW52YWxpZCBvdXRwdXQgbGVuZ3Rocywg
b3RoZXJ3aXNlIG5lZWRlZCBmb3IgdGhlIGV4cGFuZCBzdGVwLgogICAgIHNpemVfdCBtYWNMZW5n
dGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oKm1hY0FsZ29yaXRobSk7CiAgICAgaWYgKGxl
bmd0aEluQnl0ZXMgPiBtYWNMZW5ndGggKiAyNTUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfbWFjX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5
X21hY19vcGVuKCZoYW5kbGUsICptYWNBbGdvcml0aG0sIDAsIG51bGxwdHIpOwogICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU3RlcCAxIC0tIEV4dHJhY3QuIEEgcHNldWRv
LXJhbmRvbSBrZXkgaXMgZ2VuZXJhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0KQEAg
LTc0LDI1ICs3NCwyNSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRE
ZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogICAgICAgICAgICAgZXJy
b3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCBzYWx0LmRhdGEoKSwgc2FsdC5zaXplKCkpOwog
ICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAg
ICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkp
OwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAg
ICAgICAgc2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1ZG9SYW5kb21LZXkuc2l6ZSgp
OwogICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1ZG9SYW5kb21LZXku
ZGF0YSgpLCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9u
ZyBpZiBsaWJnY3J5cHQgZGlkbid0IHdyaXRlIG91dCB0aGUgcHJvcGVyIGFtb3VudCBvZiBkYXRh
LgogICAgICAgICBpZiAocHNldWRvUmFuZG9tS2V5U2l6ZSAhPSBtYWNMZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICAvLyBTdGVwICMyIC0tIEV4cGFuZC4KQEAgLTEwOCwxMyArMTA4LDEz
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFj
X3Jlc2V0KGhhbmRsZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlcnJvciA9IGdjcnlf
bWFjX3NldGtleShoYW5kbGUsIHBzZXVkb1JhbmRvbUtleS5kYXRhKCksIHBzZXVkb1JhbmRvbUtl
eS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gVCgwKSA9IGVtcHR5IHN0
cmluZyAoemVybyBsZW5ndGgpIC0tIGkuZS4gZW1wdHkgbGFzdEJsb2NrCkBAIC0xMjgsMTkgKzEy
OCwxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRz
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogICAgICAgICAgICAgZXJyb3IgPSBnY3J5
X21hY193cml0ZShoYW5kbGUsIGJsb2NrRGF0YS5kYXRhKCksIGJsb2NrRGF0YS5zaXplKCkpOwog
ICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAg
ICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2l6ZV90IGJsb2NrU2l6ZSA9IGxhc3RCbG9jay5z
aXplKCk7CiAgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBsYXN0Qmxv
Y2suZGF0YSgpLCAmYmxvY2tTaXplKTsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFNv
bWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBwcm9w
ZXIgYW1vdW50IG9mIGRhdGEuCiAgICAgICAgICAgICBpZiAoYmxvY2tTaXplICE9IGxhc3RCbG9j
ay5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICAvLyBBcHBlbmQgdGhl
IGN1cnJlbnQgYmxvY2sgZGF0YSB0byB0aGUgb3V0cHV0IHZlY3Rvci4KICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDBk
MjMxMmQxY2UxMDg1NDhkZDNjNDBjNWI0Yzc2NWUzYzkyYTA5MDIuLjMwYTMyODkyNTY2NWIxZjY5
YzcyZTVjYmIzOTZkZmM0NjAzZjY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtNjIsMjEg
KzYyLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25h
dHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRs
ZTxnY3J5X21hY19oZF90PiBoZDsKICAgICBnY3J5X2Vycm9yX3QgZXJyID0gZ2NyeV9tYWNfb3Bl
bigmaGQsIGFsZ29yaXRobSwgMCwgbnVsbHB0cik7CiAgICAgaWYgKGVycikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGVy
ciA9IGdjcnlfbWFjX3NldGtleShoZCwga2V5RGF0YSwga2V5LnNpemUoKSk7CiAgICAgaWYgKGVy
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGVyciA9IGdjcnlfbWFjX3dyaXRlKGhkLCBkYXRhLCBkYXRhTGVuZ3RoKTsK
ICAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGRpZ2VzdExlbmd0aCA9IGdjcnlfbWFjX2dl
dF9hbGdvX21hY2xlbihhbGdvcml0aG0pOwogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUo
ZGlnZXN0TGVuZ3RoKTsKICAgICBlcnIgPSBnY3J5X21hY19yZWFkKGhkLCBzaWduYXR1cmUuZGF0
YSgpLCAmZGlnZXN0TGVuZ3RoKTsKICAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2lnbmF0dXJlLnJl
c2l6ZShkaWdlc3RMZW5ndGgpOwogICAgIHJldHVybiBzaWduYXR1cmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdD
cnlwdC5jcHAKaW5kZXggN2M5MDA1MTViYzE5MGI2NWE2OGZmODg2ZGU5ZDhiOTRhNjVjOWU3NS4u
OWIxMWJhYWMyZmE2Njc4YjQ5Y2FlMzExNTIyMDY1NzBlN2IyYzJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
R0NyeXB0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5RGF0YQogICAg
IC8vIERldGVybWluZSB0aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGRl
cml2YXRpb24uCiAgICAgYXV0byBoYXNoQWxnb3JpdGhtID0gZGlnZXN0QWxnb3JpdGhtKGhhc2hJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIWhhc2hBbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBMZW5ndGgs
IGluIGJpdHMsIGlzIGEgbXVsdGlwbGUgb2YgOCwgYXMgZ3VhcmFudGVlZCBieSBDcnlwdG9BbGdv
cml0aG1QQktERjI6OmRlcml2ZUJpdHMoKS4KICAgICBBU1NFUlQoIShsZW5ndGggJSA4KSk7CkBA
IC01MSw3ICs1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERl
cml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRhCiAgICAgZ2NyeV9lcnJvcl90
IGVycm9yID0gZ2NyeV9rZGZfZGVyaXZlKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUoKSwg
R0NSWV9LREZfUEJLREYyLCAqaGFzaEFsZ29yaXRobSwgc2FsdERhdGEuZGF0YSgpLCBzYWx0RGF0
YS5zaXplKCksIGl0ZXJhdGlvbnMsIHJlc3VsdC5zaXplKCksIHJlc3VsdC5kYXRhKCkpOwogICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtD
UzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDM4OWZiYmRhM2I1OGY1Mjk4
NmIwNWI5NjQzMjRkMzA0M2I0MmMxMDIuLjA2ZTI4ZTc0MGUyZDRmNDQyMjY4Y2ZjMTg3NzAyYmYw
Nzk4NjMzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApA
QCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRF
bmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAgICAgICBwbGFpblRl
eHQuc2l6ZSgpLCBwbGFpblRleHQuZGF0YSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIEVuY3J5cHQgZGF0YSB3aXRoIHRoZSBwcm92aWRlZCBrZXkuIFRoZSByZXR1
cm5lZCBzLWV4cHJlc3Npb24gaXMgb2YgdGhpcyBmb3JtOgpAQCAtNTIsMTMgKzUyLDEzIEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNpcGhl
clNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYGFgIGludGVnZXIuCiAg
ICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gYVNleHAoZ2NyeV9zZXhwX2ZpbmRf
dG9rZW4oY2lwaGVyU2V4cCwgImEiLCAwKSk7CiAgICAgaWYgKCFhU2V4cCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CkBAIC03
MSw3ICs3MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5
cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgICAgIGNpcGhlclRleHQu
c2l6ZSgpLCBjaXBoZXJUZXh0LmRhdGEoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBEZWNyeXB0IGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQga2V5LiBUaGUgcmV0dXJu
ZWQgcy1leHByZXNzaW9uIGlzIG9mIHRoaXMgZm9ybToKQEAgLTgyLDEzICs4MiwxMyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3RvcgogICAgIGVycm9yID0gZ2NyeV9wa19kZWNyeXB0KCZwbGFpblNl
eHAsIGVuY1ZhbFNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCBgdmFsdWVgIGludGVnZXIu
CiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gdmFsdWVTZXhwKGdjcnlfc2V4
cF9maW5kX3Rva2VuKHBsYWluU2V4cCwgInZhbHVlIiwgMCkpOwogICAgIGlmICghdmFsdWVTZXhw
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggNGNhNDAwZmJhMTQ2ZWEwNTU1NjNm
NzBmN2U0OGFhMDkyMzU0NTM1Ny4uMmMxYTMxZGYzN2IzMGU1ODdjY2IyZWRkODIzOGY2Njc1Zjdh
NjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAg
LTQyLDExICs0MiwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRT
aWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAg
YXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRp
Z2VzdEFsZ29yaXRobSk7CiAgICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBk
YXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKQEAgLTU3LDEzICs1NywxMyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBo
YXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICgh
c2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBrY3MxKSho
YXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6ZSgp
LCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCkBAIC03NSwxMyArNzUsMTMgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBW
ZWN0b3I8dWkKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX3NpZ24oJnNpZ25hdHVy
ZVNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgcyBpbnRlZ2VyLgogICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5kX3Rv
a2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOwogICAgIGlmICghc1NleHApCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQpAQCAt
OTMsMTEgKzkzLDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9z
ZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAgICBh
dXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29y
aXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGln
ZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGRh
dGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIHNpZ25hdHVyZS5zaXplKCksIHNpZ25hdHVyZS5k
YXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0
IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBLQ1MjMS1wYWRkZWQgaGFzaGVk
IGRhdGEuCkBAIC0xMTcsMTMgKzExNywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2NyeXB0
VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcwogICAg
IHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxn
b3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRyLCAi
KGRhdGEoZmxhZ3MgcGtjczEpKGhhc2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3Jp
dGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHAKaW5kZXggZTUxZTBkN2I1MGQzOWZjY2Q3MjdlMjQ0NjM5MzMxY2M0Y2QwMjlk
Mi4uZDc0ZTc5MjRlZjFhMGM2MzQ4M2Q1MjZhZTlhOTBjNjI1MmFlYjkzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUEdDcnlwdC5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFz
aEFsZwogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFt
ZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxk
KCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIG9hZXApKGhhc2gtYWxnbyAlcykobGFi
ZWwgJWIpKHZhbHVlICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgbGFiZWxWZWN0
b3Iuc2l6ZSgpLCBsYWJlbFZlY3Rvci5kYXRhKCksIHBsYWluVGV4dC5zaXplKCksIHBsYWluVGV4
dC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAg
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgfQogCkBAIC02MiwxMyArNjIsMTMgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGcK
ICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNpcGhlclNleHAsIGRh
dGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewog
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8v
IFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYSBpbnRlZ2VyLgogICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGFTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGNpcGhl
clNleHAsICJhIiwgMCkpOwogICAgIGlmICghYVNleHApCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpWmVy
b1ByZWZpeGVkRGF0YShhU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQpAQCAtODEsMTMgKzgxLDEz
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29y
aXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAg
ICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBnY3J5X2Vycm9yX3Qg
ZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmVuY1ZhbFNleHAsIG51bGxwdHIsICIoZW5jLXZhbChm
bGFncyBvYWVwKShoYXNoLWFsZ28gJXMpKGxhYmVsICViKShyc2EoYSAlYikpKSIsCiAgICAgICAg
ICAgICAqc2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rvci5zaXplKCksIGxhYmVsVmVjdG9yLmRhdGEo
KSwgY2lwaGVyVGV4dC5zaXplKCksIGNpcGhlclRleHQuZGF0YSgpKTsKICAgICAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTksMTMgKzk5
LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9wa19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAsIGtleVNleHApOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBl
bWJlZGRlZCB2YWx1ZSBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhw
X3Q+IHZhbHVlU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihwbGFpblNleHAsICJ2YWx1ZSIsIDAp
KTsKICAgICBpZiAoIXZhbHVlU2V4cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlEYXRhKHZhbHVlU2V4
cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCBiZjczZDg0YzMzYzhiM2JkN2Zi
OGZlZWRmMTc2NTMzYzAzY2I1ZTM3Li43ZGU5ZWVkMjAzZjhlYWQ5Zjc0MmFhODBmN2M1NThhMWYw
ZGE3MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAgLTQzLDExICs0MywxMSBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0
aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsK
ICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CiAg
ICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZGlnZXN0LT5hZGRCeXRl
cyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+
Y29tcHV0ZUhhc2goKTsKQEAgLTU4LDEzICs1OCwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1
aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZSho
YXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZk
YXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhhc2gg
JXMgJWIpKSIsCiAgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRhSGFz
aC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2LDEzICs3NiwxMyBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigm
c2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIGBzYCBp
bnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlf
c2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOwogICAgIGlmICghc1NleHAp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0
ZXMpOwogfQpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRW
ZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAg
ewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0
aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRo
bSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTEwLDcgKzEx
MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIHNpZ25hdHVyZS5zaXplKCks
IHNpZ25hdHVyZS5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Ly8gQ29uc3RydWN0IHRoZSBgZGF0YWAgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMgUFNTLXBh
ZGRlZCBoYXNoZWQgZGF0YS4KQEAgLTExOCwxMyArMTE4LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxi
b29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBzCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1O
YW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0p
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAs
IG51bGxwdHIsICIoZGF0YShmbGFncyBwc3MpKHNhbHQtbGVuZ3RoICV1KShoYXNoICVzICViKSki
LAogICAgICAgICAgICAgc2FsdExlbmd0aCwgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6ZSgp
LCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IDk2Njg3NTBjMDQwNmU3ODIwYzdkNzk1OTRk
OTQ4ZDhkMmJjMmQ4NzMuLjEyMzliOTY1ZWEzZDdhMGY2NTFhMWI3YmU4ZjQxYjEyNzdjOTMyOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5
cHQuY3BwCkBAIC0xMjAsMjAgKzEyMCwyMCBAQCBPcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlw
dG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwgbnVsbHB0
ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1lKGN1cnZlKSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4
cF90PiBrZXlQYWlyU2V4cDsKICAgICBlcnJvciA9IGdjcnlfcGtfZ2Vua2V5KCZrZXlQYWlyU2V4
cCwgZ2Vua2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwdWJsaWNLZXlTZXhwKGdjcnlfc2V4cF9maW5k
X3Rva2VuKGtleVBhaXJTZXhwLCAicHVibGljLWtleSIsIDApKTsKICAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfc2V4cF90PiBwcml2YXRlS2V5U2V4cChnY3J5X3NleHBfZmluZF90b2tlbihr
ZXlQYWlyU2V4cCwgInByaXZhdGUta2V5IiwgMCkpOwogICAgIGlmICghcHVibGljS2V5U2V4cCB8
fCAhcHJpdmF0ZUtleVNleHApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0b0tleUVD
OjpjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZv
cm1FQ0tleUNvbnRhaW5lcihwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSksIHRydWUsIHVzYWdlcyk7
CiAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5RUM6OmNyZWF0ZShpZGVudGlmaWVyLCBj
dXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZvcm1FQ0tleUNvbnRhaW5lcihwcml2
YXRlS2V5U2V4cC5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKQEAgLTI0Miw3ICsy
NDIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU+IGN1cnZlRm9y
SWRlbnRpZmllcihjb25zdCBWZWN0b3I8dWludDhfdAogICAgIGlmIChDcnlwdG9Db25zdGFudHM6
Om1hdGNoZXMoZGF0YSwgc2l6ZSwgQ3J5cHRvQ29uc3RhbnRzOjpzX3NlY3A1MjFyMUlkZW50aWZp
ZXIpKQogICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU6OlA1MjE7CiAKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJl
ZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0U3BraShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUsIFZlY3Rvcjx1
aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
S2V5UlNBR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5
UlNBR0NyeXB0LmNwcAppbmRleCA1Yjg5NzI3NTA3NmM5OGExMWZhY2M4MzFmMjc1YjAwNmYxMTU3
NzNhLi41YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUxNDUyNmYzYzQ4OWI0NWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBA
IC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQzMl90PiBleHBvbmVudFZlY3Rv
clRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQKIHsKICAgICBpZiAoZXhw
b25lbnQuc2l6ZSgpID4gNCkgewogICAgICAgICBpZiAoc3RkOjphbnlfb2YoZXhwb25lbnQuYmVn
aW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1aW50OF90IGVsZW1lbnQpIHsgcmV0dXJuICEh
ZWxlbWVudDsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICB1aW50MzJfdCByZXN1bHQgPSAw
OwpAQCAtMzA2LDcgKzMwNiw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6
aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVy
LCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gs
IENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1L
ZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxh
dGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9y
dFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtNDAxLDcg
KzQwMSw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVl
T3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5
cGU6OlByaXZhdGUsIFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyKHBsYXRmb3JtS2V5LnJlbGVhc2Uo
KSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0
b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybVJTQUtl
eUNvbnRhaW5lcihwbGF0Zm9ybUtleS5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7
CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRT
cGtpKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0Ny
eXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRp
bGl0aWVzLmNwcAppbmRleCA5ODg5NTFkMGUyMTc5YjRiYTFhZGQ5M2ZlZThhZGY3NTVjOTAyYzQ1
Li44MzAwZTcwNWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0YTgyZTg4NzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuY3BwCkBAIC00Niw3ICs0
Niw3IEBAIE9wdGlvbmFsPGNvbnN0IGNoYXIqPiBoYXNoQWxnb3JpdGhtTmFtZShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4gInNoYTUxMiI7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8aW50PiBobWFjQWxnb3Jp
dGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBHQ1JZX01BQ19I
TUFDX1NIQTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtODIsNyArODIsNyBA
QCBPcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEy
OgogICAgICAgICByZXR1cm4gR0NSWV9NRF9TSEE1MTI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBPcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobQogICAgIGNh
c2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBPcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChn
Y3J5X21waV90IHBhcmFtTVBJKQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3By
aW50KEdDUllNUElfRk1UX1VTRywgbnVsbHB0ciwgMCwgJmRhdGFMZW5ndGgsIHBhcmFtTVBJKTsK
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBkYXRhTGVuZ3RoOwpA
QCAtMTIyLDcgKzEyMiw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfc2V4cF90
IHBhcmFtU2V4cCkKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUg
cy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdj
cnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1Q
SV9GTVRfVVNHKSk7CiAgICAgaWYgKCFwYXJhbU1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlMZW5n
dGgocGFyYW1NUEkpOwogfQpAQCAtMTMyLDE0ICsxMzIsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgLy8gUmV0cmlldmUgdGhl
IE1QSSBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgocGFyYW1NUEkpOwogICAg
IGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ29weSB0aGUgTVBJIGRhdGEgaW50byBhIHByb3Bl
cmx5LXNpemVkIGJ1ZmZlci4KICAgICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KCpsZW5ndGgpOwog
ICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywg
b3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKQEAgLTE1MCw3ICsx
NTAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVmaXhlZERhdGEoZ2Ny
eV9tcGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIC8vIFJldHJpZXZlIHRoZSBNUEkg
bGVuZ3RoLiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRhcmdl
dCBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgocGFyYW1NUEkpOwogICAgIGlm
ICghbGVuZ3RoIHx8ICpsZW5ndGggPiB0YXJnZXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGaWxsIG91
dCB0aGUgb3V0cHV0IGJ1ZmZlciB3aXRoIHplcm9zLiBQcm9wZXJseSBkZXRlcm1pbmUgdGhlIHpl
cm8gcHJlZml4IGxlbmd0aCwKICAgICAvLyBhbmQgY29weSB0aGUgTVBJIGRhdGEgaW50byBtZW1v
cnkgYXJlYSBmb2xsb3dpbmcgdGhlIHByZWZpeCAoaWYgYW55KS4KQEAgLTE1OSw3ICsxNTksNyBA
QCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVmaXhlZERhdGEoZ2NyeV9tcGlf
dCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlf
bXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSArIHByZWZpeExlbmd0aCwg
dGFyZ2V0TGVuZ3RoLCBudWxscHRyLCBwYXJhbU1QSSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTcwLDcgKzE3MCw3IEBAIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCiAgICAgLy8g
UmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUg
bXBpLWRhdGEpCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShn
Y3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwogICAgIGlm
ICghcGFyYW1NUEkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpRGF0YShwYXJhbU1QSSk7CiB9CkBAIC0x
ODAsNyArMTgwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4ZWRE
YXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCwgc2l6ZV90IHRhcmcKICAgICAvLyBSZXRyaWV2ZSB0
aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkK
ICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9u
dGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CiAgICAgaWYgKCFwYXJhbU1Q
SSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKHBhcmFtTVBJLCB0YXJnZXRM
ZW5ndGgpOwogfQpAQCAtMTg5LDcgKzE4OSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
bXBpU2lnbmVkRGF0YShnY3J5X21waV90IG1waSkKIHsKICAgICBhdXRvIGRhdGEgPSBtcGlEYXRh
KG1waSk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRhdGEtPmF0KDApICYgMHg4MCkK
ICAgICAgICAgZGF0YS0+aW5zZXJ0KDAsIDB4MDApOwpAQCAtMjAxLDcgKzIwMSw3IEBAIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHAp
CiB7CiAgICAgYXV0byBkYXRhID0gbXBpRGF0YShwYXJhbVNleHApOwogICAgIGlmICghZGF0YSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChkYXRhLT5hdCgwKSAmIDB4ODApCiAgICAgICAgIGRhdGEtPmluc2VydCgw
LCAweDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKaW5kZXggMzRjZDA2N2NmMjRmNjJi
YzZlY2ZhNjcyMDc2NTA3N2JiZjlhNjUxMy4uMjUwZDJmMjM1Y2RhMmQ0NGQxZDc0N2Q0ZjMyOGRl
MmZjMjc2ZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9TZXJp
YWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0
V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gSW5pdGlh
bGx5IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgd2VyZSBpbnRlbmRlZCB0byBwZXJmb3JtIEtFSyB3
cmFwcGluZyBhbmQgdW53cmFwcGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9rZXlzL0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleUVDLmNwcAppbmRleCBiYmNkOGQ4MTI1ZGU3NWQ3OTBkMDQ0MTJhY2VmMmFlMDRmODg3YTBi
Li4zZGM1OGY1MzQ3NzU0Njc4MzhhNjZiYTVmYzQ4ZGRjY2I2NjZlNDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRp
YyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0IFN0
cmluZyYgY3VydmUpCiAgICAgaWYgKGN1cnZlID09IFA1MjEpCiAgICAgICAgIHJldHVybiBDcnlw
dG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDUyMTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ3J5cHRvS2V5RUM6OkNyeXB0b0tleUVDKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgQ3J5
cHRvS2V5VHlwZSB0eXBlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyJiYgcGxhdGZvcm1LZXksIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCmluZGV4IGE3YzYwNzkxYjkxZTlmNWQy
ZDQ4MTczZDY4NzJlYWMyZTQzY2Q3YTYuLjhkMGJmZDgxYmQ0NTQ0YzhlZWY3N2U5NDUwN2Y5OTJm
MDI1ZjAxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tl
eVJTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNw
cApAQCAtNTcsOCArNTcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgIGlmIChrZXlE
YXRhLmQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gaW1wb3J0IHB1YmxpYyBrZXkKICAgICAgICAg
YXV0byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRl
UHVibGljKFdURk1vdmUoKm1vZHVsdXMpLCBXVEZNb3ZlKCpleHBvbmVudCkpOwotICAgICAgICAv
LyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFj
ZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBXVEY6Om51
bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhh
c2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnB1
YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICAvLyBOb3Rp
Y2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRl
ci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQu
CisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFs
dWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwdWJsaWNL
ZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKICAgICAvLyBpbXBv
cnQgcHJpdmF0ZSBrZXkKQEAgLTY3LDggKzY3LDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0K
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSAmJiBr
ZXlEYXRhLnEuaXNOdWxsKCkgJiYga2V5RGF0YS5kcC5pc051bGwoKSAmJiBrZXlEYXRhLmRwLmlz
TnVsbCgpICYmIGtleURhdGEucWkuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBwcml2YXRlS2V5
Q29tcG9uZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGUoV1RGTW92
ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSwgV1RGTW92ZSgqcHJpdmF0ZUV4cG9uZW50
KSk7Ci0gICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEg
aXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBo
YXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRl
KGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8x
KSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1
c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBp
cyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdv
cml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAg
fQogCiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSB8fCBrZXlEYXRhLnEuaXNOdWxsKCkgfHwg
a2V5RGF0YS5kcC5pc051bGwoKSB8fCBrZXlEYXRhLmRxLmlzTnVsbCgpIHx8IGtleURhdGEucWku
aXNOdWxsKCkpCkBAIC0xMDEsOCArMTAxLDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRv
S2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0KIAog
ICAgIGlmICgha2V5RGF0YS5vdGgpIHsKICAgICAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50
cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERh
dGEoV1RGTW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSwgV1RGTW92ZSgqcHJpdmF0
ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJpbWVJ
bmZvKSwgeyB9KTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZm
ZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBp
ZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3Jl
YXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KTsKICAgICB9CiAKICAgICBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJbmZv
PiBvdGhlclByaW1lSW5mb3M7CkBAIC0xMjYsOCArMTI2LDggQEAgUmVmUHRyPENyeXB0b0tleVJT
QT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdv
cml0aG0KICAgICB9CiAKICAgICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5
UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShXVEZNb3ZlKCpt
b2R1bHVzKSwgV1RGTW92ZSgqZXhwb25lbnQpLCBXVEZNb3ZlKCpwcml2YXRlRXhwb25lbnQpLCBX
VEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBXVEZNb3Zl
KG90aGVyUHJpbWVJbmZvcykpOwotICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55
IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICByZXR1cm4gQ3J5cHRvS2V5UlNB
OjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVz
YWdlcyk7CisgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBp
cyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhh
c2ggaXMgc3RkOjpudWxsb3B0LgorICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdv
cml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9CiAK
IEpzb25XZWJLZXkgQ3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHAK
aW5kZXggMmU3NzY0MGYwYzA4NTE3NTAxYWVjMmM5YzY3ZGJmYjc2OTQ1NWRjNy4uOGI5YjNiZmU4
ZDhlNjkxYTc3Y2I2NDRiNWJhMzJhMzUzMDMwMjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwCkBAIC03Mywx
MiArNzMsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjeXB0QUVT
X0dDTShjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb24KIAogRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlB
RVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgcmV0dXJu
IGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRl
eHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5n
dGgudmFsdWVPcigwKSAvIDgpOworICAgIHJldHVybiBlbmNyeXB0QUVTX0dDTShwYXJhbWV0ZXJz
Lml2VmVjdG9yKCksIGtleS5rZXkoKSwgcGxhaW5UZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxE
YXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CiB9CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxh
dGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVy
VGV4dCkKIHsKLSAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCks
IGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3Rvcigp
LCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CisgICAgcmV0dXJuIGRlY3lw
dEFFU19HQ00ocGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIGNpcGhlclRleHQsIHBh
cmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFs
dWVfb3IoMCkgLyA4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKaW5kZXgg
ZDc4MGVmMDE2MGRiMDliNDFiZDgwNjAxNmUxNDgxMDRjNWEzMDY4Zi4uZWU4NGFlOTcyZTdhNTJj
NWEyYWFjNTcyMjQ4OWYwMWY4MzMyODQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmIGJhc2VLZXks
IGNvbnN0IENyeXB0b0tleUVDJiBwdWJsaWNLZXkpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiByZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiByZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRL
ZXkoYmFzZUtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsgLy8gUGVyIGh0dHBzOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9yZmM2MDkwI3NlY3Rpb24tNC4KICAgICBzaXplX3Qgc2l6ZSA9IGRlcml2ZWRL
ZXkuc2l6ZSgpOwogICAgIGlmICghQ0NFQ0NyeXB0b3JDb21wdXRlU2hhcmVkU2VjcmV0KGJhc2VL
ZXkucGxhdGZvcm1LZXkoKSwgcHVibGljS2V5LnBsYXRmb3JtS2V5KCksIGRlcml2ZWRLZXkuZGF0
YSgpLCAmc2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1ITUFDTWFjLmNwcAppbmRleCBmOGRiM2IyZjk5M2ZlMDY4YTM4ZjZjM2EzY2NiZDUz
NTVjYTk4MTVjLi4zMDMwNzcyMDBkNzU3Yzc4YmEzNmZlNjI5N2JjZGVmM2RiY2UzNTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01h
Yy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRobT4g
Y29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGkKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBrQ0NI
bWFjQWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RBbGdvcml0aG0uaAppbmRleCAwODkxZDM5
MTRhOTRkZTQ0OGYxYzUyNDIxZWYzYWIyYTFmMjFlMTE5Li44ZDE3ODE3ZTc0MThlOTUxMGU4ZTAz
ODdmYTk4ZTdkMjVjNTZlMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlw
dG9BbGdvcmkKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAg
ICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAg
IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvS2V5RUNNYWMuY3BwCmluZGV4IDU0MGYzM2JjYmU0MmFhOWFmNGI3ZmVmOWRjMDBlMjlmNzBh
MTZjNjAuLmFkOWJhNjFkZGIwOGNiOTY3YzM3ZTQ3ZDdlZDViM2ZlZDMwYmFmMmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgT3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJh
dGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBDQ0VDQ3J5cHRvclJlZiBjY1B1Ymxp
Y0tleSA9IG51bGxwdHI7CiAgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQcml2YXRlS2V5ID0gbnVsbHB0
cjsKICAgICBpZiAoQ0NFQ0NyeXB0b3JHZW5lcmF0ZVBhaXIoc2l6ZSwgJmNjUHVibGljS2V5LCAm
Y2NQcml2YXRlS2V5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5RUM6OmNy
ZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9ybUVD
S2V5Q29udGFpbmVyKGNjUHVibGljS2V5KSwgdHJ1ZSwgdXNhZ2VzKTsKICAgICBhdXRvIHByaXZh
dGVLZXkgPSBDcnlwdG9LZXlFQzo6Y3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlU
eXBlOjpQcml2YXRlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyKGNjUHJpdmF0ZUtleSksIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwCmluZGV4IDI3NTVlNzM1ZmU2ZGM4NDZiYjRmMWJlOGRkZTUyYzE0N2I5ZjA5OTIu
LjZmMWE4NDIyMmFiMmZiMTNmYjQ4ZjRiYzU1MzZkNTNhMGIxNDg5ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKQEAgLTMxOCw4ICszMTgsOCBA
QCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIGlmIChDQ1JTQUNyeXB0b3JJbXBvcnQoa2V5
RGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBrZXlEYXRhLnNpemUoKSAtIGhlYWRlclNpemUsICZj
Y1B1YmxpY0tleSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gTm90aWNlOiBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0
IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVP
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlw
ZTo6UHVibGljLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1B1YmxpY0tleSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpKTsKKyAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZl
Y3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlw
dG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9ybVJTQUtl
eUNvbnRhaW5lcihjY1B1YmxpY0tleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25z
dApAQCAtMzc1LDggKzM3NSw4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6
aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgaWYgKEND
UlNBQ3J5cHRvckltcG9ydChrZXlEYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIGtleURhdGEuc2l6
ZSgpIC0gaGVhZGVyU2l6ZSwgJmNjUHJpdmF0ZUtleSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBq
dXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2gg
aXMgV1RGOjpudWxsb3B0LgotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlk
ZW50aWZpZXIsIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSks
ICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZvcm1SU0FLZXlDb250YWluZXIo
Y2NQcml2YXRlS2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIC8vIE5vdGljZTogQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBz
aG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBl
OjpQcml2YXRlLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1ByaXZhdGVLZXkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRv
S2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCA1NzFkYTQ3YWEy
NDM3Y2JmZDY3MzY5NTc0OTg4YTNjMWFhYTE2ODJkLi5hNDcyYThkY2RmZDJlNjE5ZGJhZWMxOWUw
ZjU0YTRkNjFhZmEzYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1Nl
cmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVBbmRTdG9yZU1hc3RlcktleSgpCiAg
ICAgc3RhdHVzID0gU2VjQWNjZXNzQ3JlYXRlKChfX2JyaWRnZSBDRlN0cmluZ1JlZilsb2NhbGl6
ZWRJdGVtTmFtZSwgbnVsbHB0ciwgJmFjY2Vzc1JlZik7CiAgICAgaWYgKHN0YXR1cykgewogICAg
ICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSBzZWN1cml0eSBhY2Nlc3Mgb2JqZWN0
IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBlcnJvciAlZCIsIChpbnQpc3RhdHVz
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAgICAgUmV0YWluUHRyPFNlY0FjY2Vzc1JlZj4gYWNjZXNzID0gYWRvcHRD
RihhY2Nlc3NSZWYpOwogCkBAIC0xMjEsMTQgKzEyMSwxNCBAQCBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
aWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSB0cnVz
dGVkIGFwcGxpY2F0aW9uIG9iamVjdCBmb3Igc3RvcmluZyBXZWJDcnlwdG8gbWFzdGVyIGtleSwg
ZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIFJldGFpblB0cjxTZWNUcnVz
dGVkQXBwbGljYXRpb25SZWY+IHRydXN0ZWRBcHAgPSBhZG9wdENGKHRydXN0ZWRBcHBSZWYpOwog
CiAgICAgc3RhdHVzID0gU2VjQUNMU2V0Q29udGVudHMoYWNsLCAoX19icmlkZ2UgQ0ZBcnJheVJl
ZilAWyAoX19icmlkZ2UgaWQpdHJ1c3RlZEFwcC5nZXQoKSBdLCAoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpbG9jYWxpemVkSXRlbU5hbWUsIGtTZWNLZXljaGFpblByb21wdFJlcXVpcmVQYXNzcGhhc2Up
OwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3Qgc2V0IEFD
TCBmb3IgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwgKGludClzdGF0dXMpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KICNlbmRpZgogCkBAIC0xNTAsNyArMTUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgc3RhdHVzID0gU2VjSXRlbUFkZCgoQ0ZEaWN0aW9uYXJ5UmVmKWF0
dHJpYnV0ZXMsIG51bGxwdHIpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDYW5ub3Qgc3RvcmUgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwgKGludClz
dGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBtYXN0ZXJLZXlEYXRhOwpAQCAtMTcxLDcg
KzE3MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJLZXko
KQogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90
Rm91bmQgJiYgc3RhdHVzICE9IGVyclNlY1VzZXJDYW5jZWxlZCkKICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ291bGQgbm90IGZpbmQgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hhaW4s
IGVycm9yICVkIiwgKGludClzdGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKICAgICByZXR1cm4gYmFzZTY0RGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5RGF0
YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOwpAQCAtMTg5LDcgKzE4
OSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3Rlcktl
eSgpCiAgICAgICAgIHJldHVybiBtYXN0ZXJLZXk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIGRlbGV0ZURlZmF1
bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCmluZGV4
IDRiM2RlYTMwZGE2NjJmMWU5NWE3YTU1OGY0ZDY1MWM4ZDgyZTM1MmUuLmM5ZWM5OWM5YTg5YjFh
YTk5ZDcwNDBlZGZkMWVmMWYyMTM2YTgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5j
cHAKQEAgLTUzLDE0ICs1MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBj
cnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAgICAgY29u
c3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAg
IGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKICAgICBpbnQg
bGVuOwogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAgaWYg
KCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBzaXplX3QgcGxhaW5TaXplID0gcGxhaW5UZXh0LnNpemUoKTsKICAgICBjb25zdCBzaXplX3Qg
Y2lwaGVyVGV4dExlbiA9IHJvdW5kVXBUb011bHRpcGxlT2YoRVZQX0NJUEhFUl9ibG9ja19zaXpl
KGFsZ29yaXRobSksIHBsYWluU2l6ZSArIDEpOwpAQCAtNjgsMTUgKzY4LDE1IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0
aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGht
LCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlkZSB0
aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBvdXRw
dXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRleHQu
ZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblNpemUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
RmluYWxpemUgdGhlIGVuY3J5cHRpb24uIEZ1cnRoZXIgY2lwaGVydGV4dCBieXRlcyBtYXkgYmUg
d3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRGaW5hbF9leChj
dHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBjaXBoZXJUZXh0OwogfQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5z
aXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0
eDsKIApAQCAtOTYsMjAgKzk2LDIwIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8v
IENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENp
cGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlhbGl6
ZSB0aGUgZGVjcnlwdGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRGVjcnlwdEluaXRf
ZXgoY3R4LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJlIGRlY3J5cHRlZCwgYW5kIG9i
dGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRl
KGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRhKCksIGNp
cGhlclNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiA9IGxlbjsKIAogICAgIC8vIEZpbmFsaXpl
IHRoZSBkZWNyeXB0aW9uLiBGdXJ0aGVyIHBsYWludGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBh
dCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCks
IHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiArPSBs
ZW47CiAKICAgICBwbGFpblRleHQuc2hyaW5rKHBsYWluVGV4dExlbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNT
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNf
Q0ZCT3BlblNTTC5jcHAKaW5kZXggZjgwZGExYjY0NmQ5ZTI2MzU0NjkyMzI2MDA2MmM4YTk2MmY1
NGQ4NS4uYWI2ODdmNmNjZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZkMTc4Njc5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQk9w
ZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGht
KGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4
UHRyIGN0eDsKIApAQCAtNjIsMjMgKzYyLDIzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAog
ICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9
IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRGlz
YWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoY3R4
LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0
aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGht
LCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlkZSB0
aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBvdXRw
dXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRleHQu
ZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBGdXJ0aGVyIGNpcGhlcnRleHQgYnl0ZXMg
bWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0Rmlu
YWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGxlbiwgJmxlbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRo
bShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0
eFB0ciBjdHg7CiAKQEAgLTk3LDE5ICs5NywxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAK
ICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAgICBpZiAoIShjdHgg
PSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGRlY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5
cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5k
YXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBiZSBkZWNyeXB0ZWQs
IGFuZCBvYnRhaW4gdGhlIHBsYWludGV4dCBvdXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRGVjcnlw
dFVwZGF0ZShjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCksICZsZW4sIGNpcGhlclRleHQuZGF0
YSgpLCBjaXBoZXJTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9uLiBG
dXJ0aGVyIHBsYWludGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAg
aWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCkg
KyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHBsYWluVGV4dDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVu
U1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFF
U19DVFJPcGVuU1NMLmNwcAppbmRleCBiMWQxOGEwOWUwNDYwNDk5NDMyZTk4YWFmZjcwYTZiMjZi
Yjg5ZTUwLi45MzE0NjIzOTZkZDFjMjNhYTI2Zjk2MDI3NjU1YjkyYTkwZTI5OGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ1RS
T3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCkBAIC01NCwyMCArNTQsMjAgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHQoaW50IG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXkKICAgICBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGNv
bnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKICAg
ICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0eFB0ciBjdHg7CiAgICAgaW50
IGxlbjsKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlm
ICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgY29uc3Qgc2l6ZV90IGJsb2NrcyA9IHJvdW5kVXBUb011bHRpcGxlT2YoYmxvY2tTaXplLCBp
bnB1dFRleHQuc2l6ZSgpKSAvIGJsb2NrU2l6ZTsKIAogICAgIC8vIERldGVjdCBsb29wCiAgICAg
aWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgYmxvY2tzID4gKChzaXpl
X3QpMSA8PCBjb3VudGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBi
ZWZvcmUgb3ZlcmZsb3cKICAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tI
ZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOwpAQCAtODMs
MTkgKzgzLDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0KGludCBv
cGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5CiAgICAgewogICAgICAgICAvLyBJ
bml0aWFsaXplIHRoZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pIG9wZXJhdGlvbgogICAgICAgICBp
ZiAoMSAhPSBFVlBfQ2lwaGVySW5pdF9leChjdHguZ2V0KCksIGFsZ29yaXRobSwgbnVsbHB0ciwg
a2V5LmRhdGEoKSwgY291bnRlci5kYXRhKCksIG9wZXJhdGlvbikpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAvLyBEaXNhYmxlIHBhZGRpbmcKICAgICAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhf
c2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIFByb3Zp
ZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkKGRlY3J5cHRlZCksIGFuZCBvYnRhaW4gdGhl
IGVuY3J5cHRlZChkZWNyeXB0ZWQpIG91dHB1dAogICAgICAgICBpZiAoMSAhPSBFVlBfQ2lwaGVy
VXBkYXRlKGN0eC5nZXQoKSwgb3V0cHV0VGV4dC5kYXRhKCksICZsZW4sIGlucHV0VGV4dC5kYXRh
KCksIGhlYWRTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEZpbmFsaXplIHRoZSBlbmNy
eXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJGaW5hbF9leChj
dHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIFNlZG9uZCBwYXJ0CkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleQogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24oZGVj
cnlwdGlvbikgb3BlcmF0aW9uCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJJbml0X2V4KGN0
eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCByZW1haW5pbmdDb3VudGVy
LmRhdGEoKSwgb3BlcmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIERpc2FibGUgcGFk
ZGluZwogICAgICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZyhjdHguZ2V0
KCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBi
ZSBlbmNyeXB0ZWQoZGVjcnlwdGVkKSwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkKGRlY3J5cHRl
ZCkgb3V0cHV0CiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJVcGRhdGUoY3R4LmdldCgpLCBv
dXRwdXRUZXh0LmRhdGEoKSArIGhlYWRTaXplLCAmbGVuLCBpbnB1dFRleHQuZGF0YSgpICsgaGVh
ZFNpemUsIHRhaWxTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEZpbmFsaXplIHRoZSBl
bmNyeXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJGaW5hbF9l
eChjdHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgaGVhZFNpemUgKyBsZW4sICZsZW4pKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dFRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNT
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNf
R0NNT3BlblNTTC5jcHAKaW5kZXggNGMyZGIzMWRkMmUyOGNiYTBiNzE4ZjI5YWI0M2E0MjRmM2Yy
NmY5OC4uZTBmMGUwYTg5ZGQxOWQxNWM2NGY4NzgyMTA0OTFjOTYzNWEzMThkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9w
ZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29y
aXRobUFFU19HQ01PcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGht
KGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4
UHRyIGN0eDsKICAgICBpbnQgbGVuOwpAQCAtNjMsNDIgKzYzLDQyIEBAIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAg
IGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhfc2V0
X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5
cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQo
KSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFNl
dCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQoKSwg
RVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0SW5pdF9leChj
dHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChhZGRpdGlvbmFsRGF0YS5zaXpl
KCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9FbmNyeXB0VXBkYXRlKGN0eC5nZXQoKSwg
bnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5zaXpl
KCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBi
ZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBvdXRwdXQKICAgICBpZiAoMSAh
PSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuLCBw
bGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXpl
IHRoZSBlbmNyeXB0aW9uLiBOb3JtYWxseSBjaXBoZXJ0ZXh0IGJ5dGVzIG1heSBiZSB3cml0dGVu
IGF0CiAgICAgLy8gdGhpcyBzdGFnZSwgYnV0IHRoaXMgZG9lcyBub3Qgb2NjdXIgaW4gR0NNIG1v
ZGUKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEZpbmFsX2V4KGN0eC5nZXQoKSwgY2lwaGVyVGV4
dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRoZSB0YWcKICAgICBpZiAo
MSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQoKSwgRVZQX0NUUkxfR0NNX0dFVF9UQUcs
IHRhZ0xlbmd0aCwgY2lwaGVyVGV4dC5kYXRhKCkgKyB0YWdPZmZzZXQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIGNpcGhlclRleHQ7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBj
b25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRobShr
ZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0eFB0
ciBjdHg7CiAgICAgaW50IGxlbjsKQEAgLTEyMCw0MiArMTIwLDQyIEBAIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAg
IGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhfc2V0
X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5
cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRJbml0X2V4KGN0eC5nZXQo
KSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFNl
dCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQoKSwg
RVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9leChj
dHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChhZGRpdGlvbmFsRGF0YS5zaXpl
KCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwg
bnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5zaXpl
KCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU2V0IGV4cGVjdGVkIHRhZyB2YWx1ZQog
ICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LmdldCgpLCBFVlBfQ1RSTF9HQ01f
U0VUX1RBRywgdGFnLnNpemUoKSwgdGFnLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRo
ZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkIG91dHB1
dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRh
dGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRleHRMZW4pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBs
YWluVGV4dExlbiA9IGxlbjsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9uCiAgICAg
aWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCkg
KyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGxhaW5UZXh0TGVuICs9IGxlbjsKIApAQCAtMTY2LDcg
KzE2Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byBvdXRw
dXQgPSBjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWlu
VGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xl
bmd0aC52YWx1ZU9yKDApIC8gOCk7CisgICAgYXV0byBvdXRwdXQgPSBjcnlwdEVuY3J5cHQoa2V5
LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRp
dGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgp
OwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKQEAgLTE3NCw3ICsxNzQsNyBA
QCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBs
YXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBj
cnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQs
IHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgu
dmFsdWVPcigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gY3J5cHREZWNyeXB0KGtleS5rZXko
KSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBjaXBoZXJUZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9u
YWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CiAg
ICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXT3BlblNTTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NM
LmNwcAppbmRleCBhNDU5NDkzNjI4YzFjZWIxZjgwNTMyZmZiOWFiYzk3NDU0YWRjMjc1Li5hMTdj
MjljYTRkMjYyY2JlOGE2YzNlZjY5N2IxNWRjNjNhZGEzYjliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dP
cGVuU1NMLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAg
ICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkp
OwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKICAg
ICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dChkYXRhLnNpemUoKSArIDgpOwpAQCAtNjAsMjEg
KzYwLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0V3JhcEtleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5p
dGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBf
Q0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzKGN0
eC5nZXQoKSwgRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQX0FMTE9XKTsKIAogICAgIC8vIEluaXRp
YWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJ
bml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBudWxscHRy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIFByb3ZpZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkLCBhbmQg
b2J0YWluIHRoZSBlbmNyeXB0ZWQgb3V0cHV0CiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRVcGRh
dGUoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmxlbiwgZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBGdXJ0aGVyIGNp
cGhlcnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgxICE9
IEVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGxlbiwg
JmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTgzLDcgKzgzLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnMKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0
aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4OwogICAgIFZlY3Rvcjx1aW50OF90PiBwbGFpblRleHQo
ZGF0YS5zaXplKCkpOwpAQCAtOTIsMjIgKzkyLDIyIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25z
CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAgICBpZiAoIShj
dHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEVW
UF9DSVBIRVJfQ1RYX3NldF9mbGFncyhjdHguZ2V0KCksIEVWUF9DSVBIRVJfQ1RYX0ZMQUdfV1JB
UF9BTExPVyk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZWNyeXB0aW9uIG9wZXJhdGlvbgog
ICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9leChjdHguZ2V0KCksIGFsZ29yaXRobSwgbnVs
bHB0ciwga2V5LmRhdGEoKSwgbnVsbHB0cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNz
YWdlIHRvIGJlIGRlY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAogICAg
IGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwg
JmxlbiwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwbGFpblRleHRMZW4gPSBs
ZW47CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgZGVjcnlwdGlvbi4gRnVydGhlciBwbGFpbnRleHQg
Ynl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgxICE9IEVWUF9EZWNy
eXB0RmluYWxfZXgoY3R4LmdldCgpLCBwbGFpblRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwbGFpblRleHRMZW4gKz0gbGVuOwogCiAgICAgcGxhaW5UZXh0LnNocmluayhwbGFpblRl
eHRMZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wv
Q3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCmluZGV4IGRmZmM5YzllNDAyM2NmYzViMTgy
NDJmNTUzYzQ4NjJiMzk2NzQ3YzUuLjIyMjZiN2YwMDhkYjc5NjgxOWMyYThmNzBjNTM2OTcyYTNh
OTc4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUhNQUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKQEAgLTQxLDI5ICs0MSwyOSBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoY29uc3QgRVZQ
X01EKiBhbGdvcml0aG0sIGNvbgogICAgIC8vIENyZWF0ZSB0aGUgTWVzc2FnZSBEaWdlc3QgQ29u
dGV4dAogICAgIEV2cERpZ2VzdEN0eFB0ciBjdHg7CiAgICAgaWYgKCEoY3R4ID0gRXZwRGlnZXN0
Q3R4UHRyKEVWUF9NRF9DVFhfY3JlYXRlKCkpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhl
IERpZ2VzdFNpZ24gb3BlcmF0aW9uCiAgICAgRXZwUEtleVB0ciBoa2V5OwogICAgIGlmICghKGhr
ZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ld19tYWNfa2V5KEVWUF9QS0VZX0hNQUMsIG51bGxw
dHIsIGtleS5kYXRhKCksIGtleS5zaXplKCkpKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoMSAhPSBFVlBfRGln
ZXN0U2lnbkluaXQoY3R4LmdldCgpLCBudWxscHRyLCBhbGdvcml0aG0sIG51bGxwdHIsIGhrZXku
Z2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gQ2FsbCB1cGRhdGUgd2l0aCB0aGUgbWVzc2FnZQogICAgIGlm
ICgxICE9IEVWUF9EaWdlc3RTaWduVXBkYXRlKGN0eC5nZXQoKSwgZGF0YSwgZGF0YUxlbmd0aCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgRGlnZXN0U2lnbiBvcGVyYXRpb24KICAgICBzaXpl
X3QgbGVuID0gMDsKICAgICBpZiAoMSAhPSBFVlBfRGlnZXN0U2lnbkZpbmFsKGN0eC5nZXQoKSwg
bnVsbHB0ciwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBPYnRhaW4gdGhlIHNpZ25hdHVyZQogICAgIFZl
Y3Rvcjx1aW50OF90PiBjaXBoZXJUZXh0KGxlbik7CiAgICAgaWYgKDEgIT0gRVZQX0RpZ2VzdFNp
Z25GaW5hbChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBjaXBoZXJUZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAppbmRleCBlNjMxY2UxMjg1ODRjZTI4OTIzZTdl
OTdhZTZjY2JhNTc2OWI4YjE1Li45M2ZhMGFlOGMyOTVlNjkyZjVmZWRmMmE2NTBlZDEyNWIwMTEy
YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlS
U0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9L
ZXlSU0FPcGVuU1NMLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50
MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cG9u
ZW50CiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsKICAgICAgICAgaWYgKHN0ZDo6
YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgpIC0gNCwgW10odWludDhfdCBl
bGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
dWludDMyX3QgcmVzdWx0ID0gMDsKQEAgLTIxOSw3ICsyMTksNyBAQCBSZWZQdHI8Q3J5cHRvS2V5
UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmaQogICAgIGlmICghcGtleSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlT3Io
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6
OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1
YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBSZWZQdHI8
Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4g
aGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtMjM2LDcgKzIzNiw3IEBAIFJlZlB0cjxDcnlwdG9L
ZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmCiAgICAgaWYgKCFwa2V5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVP
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlw
ZTo6UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3Io
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6
OlByaXZhdGUsIFdURk1vdmUocGtleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKIH0KIAogRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmNwcAppbmRleCBkZDlmNDU0NDZhMGY0YzBkYjFlZDc2YzVmYjBiMTRhZGUyMTVkY2M4Li44YzIx
MjM3YzJmY2FmOWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtNTQsMjEgKzU0
LDIxIEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0IEVW
UF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiB7CiAgICAgRXZwRGlnZXN0Q3R4UHRyIGN0
eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RDdHhQdHIoRVZQX01EX0NUWF9jcmVhdGUoKSkp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaW50IGRpZ2VzdExlbmd0aCA9IEVWUF9NRF9zaXplKGFsZ29yaXRobSk7CiAg
ICAgaWYgKGRpZ2VzdExlbmd0aCA8PSAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3Qo
ZGlnZXN0TGVuZ3RoKTsKIAogICAgIGlmIChFVlBfRGlnZXN0SW5pdF9leChjdHguZ2V0KCksIGFs
Z29yaXRobSwgbnVsbHB0cikgIT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChFVlBfRGlnZXN0VXBkYXRlKGN0
eC5nZXQoKSwgbWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKSAhPSAxKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKEVWUF9EaWdlc3RGaW5hbF9leChjdHguZ2V0KCksIGRpZ2VzdC5kYXRhKCksIG51bGxwdHIp
ICE9IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGlnZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwT3Bl
blNTTC5jcHAKaW5kZXggOGVkMGVkZDYzNmRmZmFiNzMxZDExZDY3YThhNWRhNTUxYTMwZTAxZS4u
MTIzZGE1NzRjMzFmZmE5NWEyZjEzNjIyYzNmNDI5ZGM2ZmFlNDI4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRv
S2V5V3JhcE9wZW5TU0wuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIEluaXRpYWxseSB0aGVzZSBoZWxwZXIgZnVuY3Rp
b25zIHdlcmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBLRUsgd3JhcHBpbmcgYW5kIHVud3JhcHBpbmcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdv
cml0aG1BZXNHY21QYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCmluZGV4IDg2ODg3YjVhZmFhNWMyZDgxMDRiNDk4
MjIzZDk1ZWQ2NGYzZTY2OWMuLmUyOTY2MmEyMjc1NTdjZjYxZDRiMTQwN2NhNTg3OTUzMjgwNDFm
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0Fs
Z29yaXRobUFlc0djbVBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0
ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRhVmVjdG9yOwogCiAgICAgICAg
IEJ1ZmZlclNvdXJjZSBhZGRpdGlvbmFsRGF0YUJ1ZmZlciA9IFdURk1vdmUoKmFkZGl0aW9uYWxE
YXRhKTsKLSAgICAgICAgYWRkaXRpb25hbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGFk
ZGl0aW9uYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWFkZGl0aW9uYWxEYXRh
QnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGFWZWN0
b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0
ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaAppbmRleCAwYjMzMmM0MjY2MzM0ODNi
NDdlY2VjOGU1YzU1MWU1MGRlMTY3MWIwLi4zNWQ0NTAxZGE3NmIyZWFjNTdhOWIxYzRhMGU3MTQ3
NDI3OTMyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9D
cnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2xhYmVsVmVjdG9yOwogCiAgICAgICAg
IEJ1ZmZlclNvdXJjZSBsYWJlbEJ1ZmZlciA9IFdURk1vdmUoKmxhYmVsKTsKLSAgICAgICAgbGFi
ZWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxhYmVsID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoIWxhYmVsQnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fbGFiZWxW
ZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRl
eCA5Y2Y2MjkyZTQzODllYzIzOWNlMDE4ZTU1MjY1NGZjMGRlMjM1YTE4Li40MTljNmFiMjBhY2Vj
ZWQzYTIzZGU5MGIzYWM1OTBhNWZhYWMzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bGN1bGF0aW9uVmFsdWUuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgUmVmUHRyPENTU0NhbGNPcGVy
YXRpb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y3JlYXRlTWluT3JNYXhPckNsYW1wKENh
bGNPcGUKICAgICBBU1NFUlQob3AgPT0gQ2FsY09wZXJhdG9yOjpNaW4gfHwgb3AgPT0gQ2FsY09w
ZXJhdG9yOjpNYXggfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCk7CiAgICAgQVNTRVJUX0lN
UExJRVMob3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCwgdmFsdWVzLnNpemUoKSA9PSAzKTsKIAot
ICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVnb3J5ID0gV1RGOjpudWxsb3B0
OworICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVnb3J5ID0gc3RkOjpudWxs
b3B0OwogICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpIHsKICAgICAgICAgYXV0byB2YWx1
ZUNhdGVnb3J5ID0gcmVzb2x2ZWRUeXBlRm9yTWluT3JNYXhPckNsYW1wKHZhbHVlLT5jYXRlZ29y
eSgpLCBkZXN0aW5hdGlvbkNhdGVnb3J5KTsKIApAQCAtMTc0Myw3ICsxNzQzLDcgQEAgYm9vbCBD
U1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsY0Z1bmN0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHRva2VucywKICAgICBzd2l0Y2ggKGZ1bmN0aW9uSUQpIHsKICAgICBjYXNlIENT
U1ZhbHVlTWluOgogICAgIGNhc2UgQ1NTVmFsdWVNYXg6Ci0gICAgICAgIG1heEFyZ3VtZW50Q291
bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1heEFyZ3VtZW50Q291bnQgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVDbGFtcDoKICAgICAgICAgbWlu
QXJndW1lbnRDb3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGJhYzUyOTg0MTAyZWIwMDQ1ZGM2NTM1YWU2OGU2
OGI5YjQ2NjhkMDMuLmE2ZDU0M2JjZWRmNTkzNTgzM2FhMmNhNzk3NDliYjAwNTU1YTMxNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb3VudGVyVG9D
U1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcAogICAgIGF1
dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3Ig
KGF1dG8mIGtleVZhbHVlIDogKm1hcCkgewogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGtleVZhbHVlLmtleSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcpKTsK
LSAgICAgICAgZG91YmxlIG51bWJlciA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRl
ckluY3JlbWVudCA/IGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlIDoga2V5VmFsdWUudmFs
dWUucmVzZXRWYWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IChwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IGtleVZhbHVlLnZhbHVlLmlu
Y3JlbWVudFZhbHVlIDoga2V5VmFsdWUudmFsdWUucmVzZXRWYWx1ZSkudmFsdWVfb3IoMCk7CiAg
ICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobnVtYmVyLCBDU1NV
bml0VHlwZTo6Q1NTX05VTUJFUikpOwogICAgIH0KICAgICByZXR1cm4gbGlzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IGI3N2QxMWZjNjQ1ZDkxOGE3NTY4YzdkZDMxZDIxN2Zl
MTk2ZmM4NTQuLmU1MmY3ZjgyNjg0YmViOGE1OTc4NjJlM2M3OTE4NmZhYWEzZDY3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBGb250
U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlSXRhbGljUmFuZ2UoQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmICh2YWx1ZS5pc0ZvbnRTdHlsZVZhbHVlKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQg
PSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgIHJldHVybiB7IHJlc3VsdC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkp
LCByZXN1bHQudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9OworICAgICAgICByZXR1cm4g
eyByZXN1bHQudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSksIHJlc3VsdC52YWx1ZV9vcihu
b3JtYWxJdGFsaWNWYWx1ZSgpKSB9OwogICAgIH0KIAogICAgIEFTU0VSVCh2YWx1ZS5pc0ZvbnRT
dHlsZVJhbmdlVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGYzZjAxNTdk
MTAyMjRiNmE2ZTA0ZGYyYjM3NjUxZTY2YjY0MTAxOGIuLjQyYzg1Y2U4ODY0NjQzMzY1MzNhMmVi
ZWM3ZTQwODI3YzNhNDhmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC04NCwxNCAr
ODQsMTQgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFuZ2U7CiAgICAgCiAgICAgLy8g
T3B0aW9uYWwgcmV0dXJuIHZhbHVlcyB0byByZXByZXNlbnQgZGVmYXVsdCBzdHJpbmcgZm9yIG1l
bWJlcnMgb2YgRm9udEZhY2UuaAotICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+IGZh
bWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gV1RG
OjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFtaWxp
ZXMuZ2V0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQg
OiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rp
b25DYXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQotICAgIE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6
RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0K
LSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0
PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
cy5jb21wdXRlU2xvcGUoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0
aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMg
PT0gU3RhdHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8
Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5j
b21wdXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQotICAgIGNvbnN0IE9wdGlvbmFs
PFZlY3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9
PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxW
ZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQotICAgIGNvbnN0IE9wdGlvbmFsPEZv
bnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlv
bmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KLSAgICBPcHRp
b25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiAgc3RhdGljX2Nh
c3Q8T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsgfQor
ICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nh
c3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9CisgICAgT3B0
aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25h
bDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0
ZVdlaWdodCgpKTsgfQorICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRjaCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9w
dCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVj
dGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0KKyAgICBPcHRpb25hbDxGb250U2Vs
ZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6
RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7IH0K
KyAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8g
c3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlvbkNh
cGFiaWxpdGllcygpKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+
PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBz
dGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+
KG1fcmFuZ2VzKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZl
YXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVy
ZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGlu
Z3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KKyAgICBPcHRpb25hbDxGb250TG9hZGluZ0JlaGF2
aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6
OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExvYWRp
bmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsgfQogICAgIHZvaWQgc2V0V2VpZ2h0KEZv
bnRTZWxlY3Rpb25SYW5nZSB3ZWlnaHQpIHsgbV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLndl
aWdodCA9IHdlaWdodDsgfQogICAgIHZvaWQgc2V0U3RyZXRjaChGb250U2VsZWN0aW9uUmFuZ2Ug
c3RyZXRjaCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMud2lkdGggPSBzdHJldGNoOyB9
CiAgICAgdm9pZCBzZXRTdHlsZShGb250U2VsZWN0aW9uUmFuZ2UgaXRhbGljKSB7IG1fZm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcy5zbG9wZSA9IGl0YWxpYzsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAKaW5kZXggMWEzZmYxNDBmYWFiODM5NGQwZjNmZTBkMmUyNmEyY2JmY2U5
NzMwZC4uNjM0ZTc4MGM4OTZkYTAwYWEwYTM3OTc1YzE4MWJiNjIxZmQ1MGIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0zMzAsMTMgKzMzMCwxMyBAQCBzdGF0aWMg
Rm9udFNlbGVjdGlvblJlcXVlc3QgY29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KENTU1Byb3Bl
cnR5UGFyc2VySGVscGVycwogCiAgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGEgRm9udFJhdywgd2Ug
a25vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBkZXJlZmVyZW5jZSBzdHJldGNoU2VsZWN0aW9uVmFs
dWUgYXMKICAgICAvLyBjb25zdW1lRm9udFN0cmV0Y2hLZXl3b3JkVmFsdWVSYXcgb25seSByZXR1
cm5zIHJlc3VsdHMgdmFsaWQgdG8gcGFzcyB0byBmb250U3RyZXRjaFZhbHVlLgotICAgIGF1dG8g
c3RyZXRjaFNlbGVjdGlvblZhbHVlID0gZm9udFN0cmV0Y2hWYWx1ZShmb250LnN0cmV0Y2gudmFs
dWVPcihDU1NWYWx1ZU5vcm1hbCkpOworICAgIGF1dG8gc3RyZXRjaFNlbGVjdGlvblZhbHVlID0g
Zm9udFN0cmV0Y2hWYWx1ZShmb250LnN0cmV0Y2gudmFsdWVfb3IoQ1NTVmFsdWVOb3JtYWwpKTsK
ICAgICBBU1NFUlQoc3RyZXRjaFNlbGVjdGlvblZhbHVlKTsKIAogICAgIGF1dG8gc3R5bGVLZXl3
b3JkID0gZm9udC5zdHlsZSA/IGZvbnQuc3R5bGUtPnN0eWxlIDogQ1NTVmFsdWVOb3JtYWw7CiAg
ICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gWyZdICgpIC0+IE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4gewogICAgICAgICBpZiAoc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlTm9ybWFs
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQgPT0gQ1NTVmFsdWVJdGFsaWMp
CiAgICAgICAgICAgICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAgICAgICAgQVNTRVJUKGZvbnQu
c3R5bGUgJiYgc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlT2JsaXF1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5oCmluZGV4IGYxZGY3MDYzMjExYjE4ODViNmNiNTk2ZjU3YzU3MzNhZjg1
MzU3MWYuLjMxYzAwMDgxY2M2NDhjYjdjYTQwMWZjM2Y0NTEyMDEyODZkOWE2ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgRm9udFNlbGVjdGlvbktleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8Rm9udFNlbGVjdGlvbktleT4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBGb250U2VsZWN0aW9uS2V5IGVtcHR5
VmFsdWUoKSB7IHJldHVybiBGb250U2VsZWN0aW9uUmVxdWVzdCB7IH07IH0KLSAgICAgICAgc3Rh
dGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvbnRTZWxlY3Rpb25LZXkmIHNsb3QpIHsg
c2xvdCA9IFdURjo6bnVsbG9wdDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxl
dGVkVmFsdWUoRm9udFNlbGVjdGlvbktleSYgc2xvdCkgeyBzbG90ID0gc3RkOjpudWxsb3B0OyB9
CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZvbnRTZWxlY3Rpb25L
ZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICB9OwogICAgIHVzaW5nIEZvbnRTZWxl
Y3Rpb25IYXNoTWFwID0gSGFzaE1hcDxGb250U2VsZWN0aW9uS2V5LCBSZWZQdHI8Q1NTU2VnbWVu
dGVkRm9udEZhY2U+LCBGb250U2VsZWN0aW9uS2V5SGFzaCwgRm9udFNlbGVjdGlvbktleUhhc2hU
cmFpdHM+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBhY2QyYTFj
YzI0ZTM0YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0Li4xOGY5N2ZlZjdjNjk1YTFkM2I2ZWRl
MzA1M2ZiMGVhY2QyOGFhM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cApAQCAtMjg3LDcgKzI4Nyw3IEBAIE9wdGlvbmFsPEF0b21TdHJpbmc+IENTU0ZvbnRTZWxlY3Rv
cjo6cmVzb2x2ZUdlbmVyaWNGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uCiAgICAgICAgIHJl
dHVybiBwbGF0Zm9ybVJlc3VsdDsKIAogICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29u
c3QgYXV0byYgc2V0dGluZ3MgPSBtX2NvbnRleHQtPnNldHRpbmdzVmFsdWVzKCk7CiAKQEAgLTI5
OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxBdG9tU3RyaW5nPiBDU1NGb250U2VsZWN0b3I6OnJlc29s
dmVHZW5lcmljRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbgogICAgICAgICAgICAgcmV0dXJu
IEF0b21TdHJpbmcoKmZhbWlseVN0cmluZyk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBGb250UmFuZ2VzIENTU0ZvbnRT
ZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCA0NDU0MTZhOGZkY2YwZDU1NjNlYTgzZDFlNGRm
NjNiNTlkMDQ2ODY2Li4wMDk0YzY4NGNkZjFiN2M1ODE5NjUyYjMxMTc5M2QwYjUxYmJjNTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0xMTAsMTIgKzExMCwx
MiBAQCBPcHRpb25hbDxzaXplX3Q+IFN0eWxlUnVsZUtleWZyYW1lczo6ZmluZEtleWZyYW1lSW5k
ZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgcGFyc2VEZWZlcnJlZFJ1bGVzSWZOZWVk
ZWQoKTsKICAgICBhdXRvIGtleXMgPSBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVLZXlMaXN0KGtl
eSk7CiAgICAgaWYgKGtleXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAoYXV0byBpID0gbV9rZXlm
cmFtZXMuc2l6ZSgpOyBpLS07ICkgewogICAgICAgICBpZiAobV9rZXlmcmFtZXNbaV0tPmtleXMo
KSA9PSBrZXlzKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTdHlsZVJ1bGVL
ZXlmcmFtZXM6OnNocmlua1RvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCmluZGV4IGYwZGI0Y2E1YjE1M2MxOTUyZTlhY2JhNDQzNGZlMTg0ZWQ4OWQ4OTguLjY5
ZjA3YTg2MmE1ZDdkYTdiNjNkYzFhOGUyMGY2NjM2N2I0YjQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIEV4Y2VwdGlvbk9y
PGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZSB1bml0
VHlwZSkgY29uc3QKIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShDU1NV
bml0VHlwZSB1bml0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5h
bCh1bml0VHlwZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5hbCh1
bml0VHlwZSkudmFsdWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91
YmxlVmFsdWUoKSBjb25zdApAQCAtODM1LDIxICs4MzUsMjEgQEAgZG91YmxlIENTU1ByaW1pdGl2
ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiBPcHRpb25hbDxib29sPiBDU1NQcmltaXRpdmVW
YWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9PSBD
U1NVbml0VHlwZTo6Q1NTX0NBTEMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0KIAog
T3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAogewog
ICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gbV92YWx1ZS5udW0gPiAwOwogfQogCiBPcHRpb25hbDxib29sPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNOZWdhdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVVuaXRU
eXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3ZhbHVlLm51
bSA8IDA7CiB9CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpp
c0NlbnRlclBvc2l0aW9uKCkgY29uc3QKIE9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHBy
aW1pdGl2ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJz
aW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENTU1VuaXRUeXBlIHNvdXJjZVVuaXRU
eXBlID0gcHJpbWl0aXZlVHlwZSgpOwogICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3Vy
Y2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0RJTUVO
U0lPTikKQEAgLTg3NiwyMCArODc2LDIwIEBAIE9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pCiAKICAg
ICAvLyBDYW5ub3QgY29udmVydCBiZXR3ZWVuIHVucmVsYXRlZCB1bml0IGNhdGVnb3JpZXMgaWYg
b25lIG9mIHRoZW0gaXMgbm90IENTU1VuaXRDYXRlZ29yeTo6TnVtYmVyLgogICAgIGlmIChzb3Vy
Y2VDYXRlZ29yeSAhPSB0YXJnZXRDYXRlZ29yeSAmJiBzb3VyY2VDYXRlZ29yeSAhPSBDU1NVbml0
Q2F0ZWdvcnk6Ok51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBDU1NVbml0Q2F0ZWdvcnk6Ok51
bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICh0YXJnZXRDYXRlZ29yeSA9PSBDU1NVbml0Q2F0ZWdvcnk6Ok51
bWJlcikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29udmVyc2lvbiB0byBDU1NVbml0VHlw
ZTo6Q1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25pY2FsIHVuaXQgaW4gdGhpcyB2
YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlwZSA9IGNhbm9uaWNhbFVuaXRU
eXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAgICBpZiAodGFyZ2V0VW5pdFR5
cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
aWYgKHNvdXJjZVVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSB7CiAgICAgICAg
IC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIg
aW4gdGhlIHNhbWUgd2F5IGFzIENTU1BhcnNlcjo6dmFsaWRVbml0KCkgd2hpbGUgdXNpbmcgbm9u
LXN0cmljdCBtb2RlLgogICAgICAgICBzb3VyY2VVbml0VHlwZSA9IGNhbm9uaWNhbFVuaXRUeXBl
Rm9yQ2F0ZWdvcnkodGFyZ2V0Q2F0ZWdvcnkpOwogICAgICAgICBpZiAoc291cmNlVW5pdFR5cGUg
PT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgZG91
YmxlIGNvbnZlcnRlZFZhbHVlID0gZG91YmxlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydGllcy5qc29uCmluZGV4IGZhNWYxODE5NjE5OTIwNjk4ZTdlMGNkZjUwNGQ2NTg0MjZjY2Zk
MWMuLjVkNjdkM2ViNzU0YTkzMmRkMjZiYjA0ZmUyYmUyMjNmMWZiNTQ5ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpAQCAtNTEsNyArNTEsNyBAQAogICAgICAgICAiIiwK
ICAgICAgICAgIiogY29uZGl0aW9uYWwtY29udmVydGVyOiIsCiAgICAgICAgICJTaW1pbGFyIHRv
IHByb3BlcnR5IGNvbnZlcnRlciwgYnV0IHRoZSBjb252ZXJ0ZXIgZnVuY3Rpb24gcmV0dXJucyBh
IiwKLSAgICAgICAgIldURjo6T3B0aW9uYWw8PiB0byBpbmRpY2F0ZSBpZiB0aGUgcHJvcGVydHkg
c2V0dGVyIHNob3VsZCBiZSBjYWxsZWQiLAorICAgICAgICAic3RkOjpvcHRpb25hbDw+IHRvIGlu
ZGljYXRlIGlmIHRoZSBwcm9wZXJ0eSBzZXR0ZXIgc2hvdWxkIGJlIGNhbGxlZCIsCiAgICAgICAg
ICJvciBub3QuIiwKICAgICAgICAgIiIsCiAgICAgICAgICIqIGN1c3RvbToiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDUxOTNjMzJjMmVmNWExYjQ0NDI5YzRmMzM1ZjNk
N2FhNzI5OTUwNDYuLjZiNDM4OTZkMzhiNjZjMTRhMDY1ODBhZjZkYTA5ZGFjNDQ4ZjVjMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQog
RXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsK
ICAgICBhdXRvIHRleHQgPSBtYWtlU3RyaW5nKHNlbGVjdG9yLCAiIHsgIiwgc3R5bGUsICFzdHls
ZS5pc0VtcHR5KCkgPyAiICIgOiAiIiwgJ30nKTsKLSAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQg
PSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRvIGlu
c2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVlX29yKGxlbmd0aCgp
KSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAvLyBBcyBwZXIg
TWljcm9zb2Z0IGRvY3VtZW50YXRpb24sIGFsd2F5cyByZXR1cm4gLTEuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaAppbmRleCA5OTcxNWNlMjhhN2Y2MDlkYTAwN2JkMjQyOWEwZWI2ODViY2Vh
Y2M1Li5lN2JkZTNhNGJkZDBmZTdlYjM2OWE0Y2RiYWRjMzVjMTE5OTg2ZTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2NvcGU7CiBjbGFz
cyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwotICAgIHN0YXRpYyBSZWY8Q1NTU3R5
bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUmIG93bmVyTm9k
ZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4gPSBXVEY6Om51bGxvcHQpOwor
ICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVu
dHM+JiYsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xl
YW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRl
SW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIEVsZW1lbnQmIG93bmVyLCBjb25zdCBU
ZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgK
aW5kZXggYjk1NmY2YjNhNjMwYTdmMzJkZjRmMWUwMzVkODlmMjg1ZDM1NDg3MS4uNjhkMmI2MDNh
OTgwY2IwZDEyZWJhNzhhMzdhNjJlMmU2MjhhYWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFJl
bmRlclZpZXc7CiAKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgewogcHVibGljOgot
ICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENT
U1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gV1RGOjpudWxsb3B0LCBSZW5kZXJTdHls
ZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENTU1Byb3BlcnR5
SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3Bv
cnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQogICAgICAgICA6IG1fc3R5bGUo
c3R5bGUpCiAgICAgICAgICwgbV9yb290U3R5bGUocm9vdFN0eWxlKQogICAgICAgICAsIG1fcGFy
ZW50U3R5bGUocGFyZW50U3R5bGUpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKHpvb20gPiAwKTsKICAgICB9CiAKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3LCBPcHRpb25hbDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0eVRvQ29tcHV0ZSA9IFdURjo6bnVs
bG9wdCkKKyAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBPcHRpb25hbDxDU1NQcm9w
ZXJ0eUlEPiBwcm9wZXJ0eVRvQ29tcHV0ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBtX3N0
eWxlKHN0eWxlKQogICAgICAgICAsIG1fcm9vdFN0eWxlKHJvb3RTdHlsZSkKICAgICAgICAgLCBt
X3BhcmVudFN0eWxlKHBhcmVudFN0eWxlKQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgem9vbSgpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0aW5nRm9udFNpemUoKSBjb25zdCB7
IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemU7IH0KICAg
ICBib29sIGNvbXB1dGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9D
b21wdXRlID09IENTU1Byb3BlcnR5TGluZUhlaWdodDsgfQotICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlUb0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlLnZhbHVl
T3IoQ1NTUHJvcGVydHlJbnZhbGlkKTsgfQorICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0Nv
bXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlLnZhbHVlX29yKENTU1By
b3BlcnR5SW52YWxpZCk7IH0KICAgICBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKICAgICBkb3VibGUgdmlld3BvcnRXaWR0aEZh
Y3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAppbmRleCBhMDBmMTY1YjQ4Mzcz
Y2JhZTA0NDAwNjBjYTAxMjJhMWZlYWNkYTYxLi5jMzU0ZTk3ODI3M2JhNTZlMmZmYjU0N2ZmMzkx
ODMzOWNkMGZjY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApAQCAtMTg5LDggKzE4OSw4
IEBAIFJlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90YXRlU2VsZihkb3VibGUgcm90WCwgT3B0
aW9uYWw8ZG91YmxlPiByb3RZLCBPcHRpb25hCiAgICAgICAgIHJvdFggPSAwOwogICAgICAgICBy
b3RZID0gMDsKICAgICB9Ci0gICAgbV9tYXRyaXgucm90YXRlM2Qocm90WCwgcm90WS52YWx1ZU9y
KDApLCByb3RaLnZhbHVlT3IoMCkpOwotICAgIGlmIChyb3RYIHx8IHJvdFkudmFsdWVPcigwKSkK
KyAgICBtX21hdHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLnZhbHVlX29yKDApLCByb3RaLnZhbHVl
X29yKDApKTsKKyAgICBpZiAocm90WCB8fCByb3RZLnZhbHVlX29yKDApKQogICAgICAgICBtX2lz
MkQgPSBmYWxzZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKaW5k
ZXggMDZkMDJiMTEzMGVmNmJjN2JiYzFlMGQzMzZjZmI2Mjc1YjNiNWZiNC4uMzk4MTZjMWQ2NjM5
ZWJmZWUyYmJjNmE4MWRlMzhkYzJiMzUyNmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaApAQCAt
NTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IG11
bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxE
T01NYXRyaXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAgICBS
ZWY8RE9NTWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9IDAs
IGRvdWJsZSB0eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNjYWxlU2VsZihkb3VibGUgc2Nh
bGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBXVEY6Om51bGxvcHQsIGRvdWJsZSBz
Y2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91Ymxl
IG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2FsZVNlbGYoZG91YmxlIHNjYWxl
WCA9IDEsIE9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZID0gc3RkOjpudWxsb3B0LCBkb3VibGUgc2Nh
bGVaID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9IDAsIGRvdWJsZSBv
cmlnaW5aID0gMCk7CiAgICAgUmVmPERPTU1hdHJpeD4gc2NhbGUzZFNlbGYoZG91YmxlIHNjYWxl
ID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9IDAsIGRvdWJsZSBvcmln
aW5aID0gMCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9IDAs
IE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiBy
b3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgorICAgIFJlZjxE
T01NYXRyaXg+IHJvdGF0ZVNlbGYoZG91YmxlIHJvdFggPSAwLCBPcHRpb25hbDxkb3VibGU+IHJv
dFkgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6bnVsbG9wdCk7
IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVGcm9t
VmVjdG9yU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7CiAgICAgUmVmPERPTU1hdHJp
eD4gcm90YXRlQXhpc0FuZ2xlU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwgZG91Ymxl
IHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBS
ZWY8RE9NTWF0cml4PiBza2V3WFNlbGYoZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRl
Z3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAppbmRleCA1ZDg5
NTVkYTExZmFjOTJlMzBhZThiYTUwMjM2OTA5ZmNiMTFmZGY3Li5jMjZjYTQ2MmM4ODViYmE0ODcx
NWZmM2M1NGUwOGRjYTg1ZmEwZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFk
T25seS5jcHAKQEAgLTEyMywxNyArMTIzLDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTU1hdHJp
eFJlYWRPbmx5Ojp2YWxpZGF0ZUFuZEZpeHVwKERPTU1hdHJpeDJESW5pdCYgaW5pdCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgImluaXQuZiBhbmQgaW5pdC5tNDIgZG8g
bm90IG1hdGNoIl9zIH07CiAKICAgICBpZiAoIWluaXQubTExKQotICAgICAgICBpbml0Lm0xMSA9
IGluaXQuYS52YWx1ZU9yKDEpOworICAgICAgICBpbml0Lm0xMSA9IGluaXQuYS52YWx1ZV9vcigx
KTsKICAgICBpZiAoIWluaXQubTEyKQotICAgICAgICBpbml0Lm0xMiA9IGluaXQuYi52YWx1ZU9y
KDApOworICAgICAgICBpbml0Lm0xMiA9IGluaXQuYi52YWx1ZV9vcigwKTsKICAgICBpZiAoIWlu
aXQubTIxKQotICAgICAgICBpbml0Lm0yMSA9IGluaXQuYy52YWx1ZU9yKDApOworICAgICAgICBp
bml0Lm0yMSA9IGluaXQuYy52YWx1ZV9vcigwKTsKICAgICBpZiAoIWluaXQubTIyKQotICAgICAg
ICBpbml0Lm0yMiA9IGluaXQuZC52YWx1ZU9yKDEpOworICAgICAgICBpbml0Lm0yMiA9IGluaXQu
ZC52YWx1ZV9vcigxKTsKICAgICBpZiAoIWluaXQubTQxKQotICAgICAgICBpbml0Lm00MSA9IGlu
aXQuZS52YWx1ZU9yKDApOworICAgICAgICBpbml0Lm00MSA9IGluaXQuZS52YWx1ZV9vcigwKTsK
ICAgICBpZiAoIWluaXQubTQyKQotICAgICAgICBpbml0Lm00MiA9IGluaXQuZi52YWx1ZU9yKDAp
OworICAgICAgICBpbml0Lm00MiA9IGluaXQuZi52YWx1ZV9vcigwKTsKIAogICAgIHJldHVybiB7
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHku
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4IDYzOGJkM2E2
OWZhOTVjNTQwZDZhYjZjMDRhYjRlZDJlMGM5YThjZWUuLjhmOWVlZTExNjM4ZmRhNjIzNjdkMTFi
N2U5YzZkYTkwZjZiMGUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRy
aXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5o
CkBAIC0xMDEsOSArMTAxLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRy
aXg+PiBtdWx0aXBseShET01NYXRyaXhJbml0JiYgb3RoZXIpIGNvbnN0OwogICAgIFJlZjxET01N
YXRyaXg+IGZsaXBYKCk7CiAgICAgUmVmPERPTU1hdHJpeD4gZmxpcFkoKTsKLSAgICBSZWY8RE9N
TWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkg
PSBXVEY6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRv
dWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4
PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6
Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBv
cmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2Fs
ZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9yaWdpblkg
PSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3Vi
bGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdURjo6bnVsbG9wdCwgT3B0aW9u
YWw8ZG91YmxlPiByb3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVz
LgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRv
dWJsZT4gcm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiByb3RaID0gc3RkOjpu
dWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgogICAgIFJlZjxET01NYXRyaXg+IHJv
dGF0ZUZyb21WZWN0b3IoZG91YmxlIHggPSAwLCBkb3VibGUgeSA9IDApOwogICAgIFJlZjxET01N
YXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwgZG91Ymxl
IHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAgICBS
ZWY8RE9NTWF0cml4PiBza2V3WChkb3VibGUgc3ggPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxp
bmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oCmlu
ZGV4IGM4MWYwMDBmOGRiMmFiMTJhYmQ5MjA1OWFlMzM4NWZiN2YwZWQ4ZTQuLjk4OGJmOTdkMDdi
NDJmMzkxNjYyYjM4NjcwZDRjZjA3YzY2OTczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaApAQCAtNTQsNyArNTQsNyBAQCBpbmxpbmUgT3B0
aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdodEtleXdvcmQoRm9udFNlbGVjdGlvblZhbHVlIHdl
aWdodCkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwogICAgIGlmICh3ZWlnaHQgPT0g
Ym9sZFdlaWdodFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUJvbGQ7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJRCB2
YWx1ZSkKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1
ZT4gZm9udFdlaWdodFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgY2FzZSBDU1NWYWx1ZUxp
Z2h0ZXI6CiAgICAgICAgIHJldHVybiBsaWdodFdlaWdodFZhbHVlKCk7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVl
SUQ+IGZvbnRTdHJldGNoS2V5d29yZChGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaCkKICAgICAg
ICAgcmV0dXJuIENTU1ZhbHVlRXh0cmFFeHBhbmRlZDsKICAgICBpZiAoc3RyZXRjaCA9PSB1bHRy
YUV4cGFuZGVkU3RyZXRjaFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVVsdHJhRXhw
YW5kZWQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250U3RyZXRjaFZh
bHVlKENTU1ZhbHVlSUQgdmFsdWUpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVlKQog
ICAgIGNhc2UgQ1NTVmFsdWVVbHRyYUV4cGFuZGVkOgogICAgICAgICByZXR1cm4gdWx0cmFFeHBh
bmRlZFN0cmV0Y2hWYWx1ZSgpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0xMjcs
NyArMTI3LDcgQEAgaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRTdHlsZUtleXdvcmQo
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHlsZSwKICAgICAgICAgcmV0dXJuIENTU1Zh
bHVlTm9ybWFsOwogICAgIGlmIChzdHlsZS52YWx1ZSgpID09IGl0YWxpY1ZhbHVlKCkpCiAgICAg
ICAgIHJldHVybiBheGlzID09IEZvbnRTdHlsZUF4aXM6Oml0YWwgPyBDU1NWYWx1ZUl0YWxpYyA6
IENTU1ZhbHVlT2JsaXF1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAppbmRleCAxMTYxOWE5Njg4ODU2YjQ0ODhkMDU5MjczMzU5NzU3ZGEzOTc4YTg5Li5i
MzYwOWMyZTgxMmU4NzVmNzAxOWZiODM5YmIwNzFjMDlkZjI5MjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgc3RhdGlj
IGJvb2wgY29tcGFyZUFzcGVjdFJhdGlvVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIE1lZGkKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlKENT
U1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkg
fHwgIWRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzTnVtYmVyKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmRvdWJsZVZhbHVl
KENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKIH0KIApAQCAtNDg1LDIxICs0ODUsMjEgQEAgc3Rh
dGljIGJvb2wgZ3JpZEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYsIEZyYW0KIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbXB1dGVMZW5n
dGgoQ1NTVmFsdWUqIHZhbHVlLCBib29sIHN0cmljdCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIo
KSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgp
OwogICAgICAgICAvLyBUaGUgb25seSB1bml0bGVzcyBudW1iZXIgdmFsdWUgYWxsb3dlZCBpbiBz
dHJpY3QgbW9kZSBpcyB6ZXJvLgogICAgICAgICBpZiAoc3RyaWN0ICYmIHZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUuaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5n
dGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGRldmljZUhlaWdodEV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYg
Y29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQpAQCAt
ODcyLDcgKzg3Miw3IEBAIHN0YXRpYyBib29sIGRpc3BsYXlNb2RlRXZhbHVhdGUoQ1NTVmFsdWUq
IHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhCiAKICAgICBhdXRvIGtleXdv
cmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAKLSAg
ICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5hcHBsaWNhdGlv
bk1hbmlmZXN0KCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBtYW5pZmVzdCA9IGZyYW1lLnBh
Z2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpIDogc3RkOjpudWxsb3B0
OwogICAgIGlmICghbWFuaWZlc3QpCiAgICAgICAgIHJldHVybiBrZXl3b3JkID09IENTU1ZhbHVl
QnJvd3NlcjsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6
ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24pIGNvbnN0CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBQYXNzIGBudWxscHRyYCBmb3IgYHBh
cmVudFN0eWxlYCBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgY29udGV4dCBvZiBhIG1lZGlhIHF1ZXJ5
LgotICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50
LnJlbmRlclZpZXcoKSwgMSwgV1RGOjpudWxsb3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOworICAg
IHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJlbmRl
clZpZXcoKSwgMSwgc3RkOjpudWxsb3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOwogfQogCiBib29s
IE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwCmluZGV4IDQ1YWRlMjJhMjg5ZjMxMjQ2NTE5MjYwZGI0MWU5ZDAyZDcy
Y2JmOTAuLmMxMzdjNTk4MWY3N2VlZjUyZWNhNjUzYmI4ZjlhZTRhMGVlNmVmNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgT3B0aW9u
YWw8Q29sb3I+IFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5SUQg
cHJvcGVydHkpIGNvbnN0CiB7CiAgICAgYXV0byBjb2xvclZhbHVlID0gZ2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eSk7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oY29sb3JWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvJiBwcmltaXRpdmVDb2xvciA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqY29sb3JWYWx1ZSk7CiAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLmlzUkdCQ29s
b3IoKSA/IHByaW1pdGl2ZUNvbG9yLmNvbG9yKCkgOiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29s
b3JWYWx1ZS0+Y3NzVGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAK
aW5kZXggY2UxN2ZiNGMyODliODk4MzA1ZmU2ZWIxNjAyZGYyYTIxMGJjYmJjOC4uNTIxNzM1ODkz
OTY0ZmQ4N2RjZDhmNDlmMjMwZjRjMTc3OWIxNmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFN0eWxlUnVsZUltcG9ydDo6
cmVxdWVzdFN0eWxlU2hlZXQoKQogCiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgY2hlY2sgd2hlbiBzdHlsZXNoZWV0IGlzIGluIGEgdXNlciBhZ2VudCBzaGFkb3cg
dHJlZS4KICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDY2NjM+LgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGFic1VSTCwgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgV1RGOjpu
dWxsb3B0LCBTdHJpbmcobV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKKyAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENhY2hlZFJlc291cmNlTG9hZGVyOjpk
ZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgU3RyaW5nKG1fcGFy
ZW50U3R5bGVTaGVldC0+Y2hhcnNldCgpKSk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgaWYgKG1fY2FjaGVkU2hl
ZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudChtX3N0eWxlU2hlZXRDbGll
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMu
Y3BwCmluZGV4IGZiOTAxYmExY2NjYTFmYmUzYjM1ZmYwOTliMWQ3NTU4MWI1ODU3NzEuLmNkYjVm
NTAzNDY2ZWVjYTk2YWYwMzg2MTdmZWZkN2YxZmJlZTI0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKQEAgLTI2Myw3ICsyNjMsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25z
dCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgICAgICBjdXJyZW50Kys7CiAgICAgfQogICAg
IGlmIChjdXJyZW50ID09IGVuZCB8fCAhaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB3
aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkgewogICAgICAg
ICBkb3VibGUgbmV3VmFsdWUgPSBsb2NhbFZhbHVlICogMTAgKyAqY3VycmVudCsrIC0gJzAnOwog
ICAgICAgICBpZiAobmV3VmFsdWUgPj0gMjU1KSB7CkBAIC0yNzcsMTAgKzI3NywxMCBAQCBzdGF0
aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFy
YWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgIH0KIAogICAgIGlmIChjdXJyZW50ID09IGVuZCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgJiYgKCpjdXJyZW50
ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpjdXJyZW50ID09ICcu
JykgewogICAgICAgICAvLyBXZSBhbHJlYWR5IHBhcnNlZCB0aGUgaW50ZWdyYWwgcGFydCwgdHJ5
IHRvIHBhcnNlCkBAIC0yODgsMTUgKzI4OCwxNSBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4g
cGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAog
ICAgICAgICBkb3VibGUgcGVyY2VudGFnZSA9IDA7CiAgICAgICAgIGludCBudW1DaGFyYWN0ZXJz
UGFyc2VkID0gcGFyc2VEb3VibGUoY3VycmVudCwgZW5kLCAnJScsIHBlcmNlbnRhZ2UpOwogICAg
ICAgICBpZiAoIW51bUNoYXJhY3RlcnNQYXJzZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY3VycmVu
dCArPSBudW1DaGFyYWN0ZXJzUGFyc2VkOwogICAgICAgICBpZiAoKmN1cnJlbnQgIT0gJyUnKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKICAgICB9CiAKICAg
ICBpZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSAmJiAqY3VycmVudCAh
PSAnJScpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7CiAgICAgICAgIGV4cGVjdCA9
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0
ZXJUeXBlKiYgc3RyaW5nLAogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0hUTUxTcGFj
ZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCiAgICAgICAgIGN1cnJlbnQrKzsKICAgICBpZiAo
Y3VycmVudCA9PSBlbmQgfHwgKmN1cnJlbnQrKyAhPSB0ZXJtaW5hdG9yKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0cmlu
ZyA9IGN1cnJlbnQ7CiAKICAgICAvLyBDbGFtcCBuZWdhdGl2ZSB2YWx1ZXMgYXQgemVyby4KQEAg
LTM0OCwxNyArMzQ4LDE3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VB
bHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvCiAKICAgICBpbnQgbGVu
Z3RoID0gZW5kIC0gc3RyaW5nOwogICAgIGlmIChsZW5ndGggPCAyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHN0
cmluZ1tsZW5ndGggLSAxXSAhPSB0ZXJtaW5hdG9yIHx8ICFpc0FTQ0lJRGlnaXQoc3RyaW5nW2xl
bmd0aCAtIDJdKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChzdHJpbmdbMF0gIT0gJzAnICYmIHN0cmluZ1swXSAh
PSAnMScgJiYgc3RyaW5nWzBdICE9ICcuJykgewogICAgICAgICBpZiAoY2hlY2tGb3JWYWxpZERv
dWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvcikpIHsKICAgICAgICAgICAgIHN0cmluZyA9IGVu
ZDsKICAgICAgICAgICAgIHJldHVybiBuZWdhdGl2ZSA/IDAgOiAyNTU7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcuJykgewpAQCAt
Mzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VBbHBo
YVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvCiAKICAgICBkb3VibGUgYWxw
aGEgPSAwOwogICAgIGlmICghcGFyc2VEb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3IsIGFs
cGhhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHN0cmluZyA9IGVuZDsKICAgICByZXR1cm4gbmVnYXRpdmUgPyAwIDog
Y29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PihhbHBoYSk7CkBAIC00MzMsMTggKzQzMywxOCBA
QCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdIZXhDb2xvcih1
aW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIGNhc2UgODoKICAgICAgICAgcmV0dXJuIGFz
U1JHQkEoUGFja2VkQ29sb3I6OlJHQkEgeyB2YWx1ZSB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNl
SGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCAhPSAzICYmIGxlbmd0aCAhPSA0ICYmIGxlbmd0
aCAhPSA2ICYmIGxlbmd0aCAhPSA4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90IHZhbHVlID0gMDsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgYXV0byBkaWdp
dCA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0KSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA8PD0gNDsKICAgICAgICAgdmFsdWUgfD0gdG9BU0NJ
SUhleFZhbHVlKGRpZ2l0KTsKICAgICB9CkBAIC00NzEsMTggKzQ3MSwxOCBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBh
cnNlTnVtZXJpY0NvbAogICAgICAgICBhdXRvIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CiAg
ICAgICAgIGF1dG8gcmVkID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQs
ICcsJywgZXhwZWN0KTsKICAgICAgICAgaWYgKCFyZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0
byBncmVlbiA9IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4
cGVjdCk7CiAgICAgICAgIGlmICghZ3JlZW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBibHVl
ID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0KTsK
ICAgICAgICAgaWYgKCFibHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gYWxwaGEgPSBwYXJz
ZUFscGhhVmFsdWUoY3VycmVudCwgZW5kLCAnKScpOwogICAgICAgICBpZiAoIWFscGhhKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gU1JHQkE8dWludDhfdD4geyAqcmVkLCAqZ3JlZW4sICpibHVlLCAqYWxwaGEgfTsKICAg
ICB9CiAKQEAgLTQ5MiwxOSArNDkyLDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sCiAgICAg
ICAgIGF1dG8gZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKICAgICAgICAgYXV0byByZWQgPSBw
YXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QpOwogICAg
ICAgICBpZiAoIXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGdyZWVuID0gcGFyc2VDb2xv
ckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0KTsKICAgICAgICAgaWYg
KCFncmVlbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGJsdWUgPSBwYXJzZUNvbG9ySW50T3JQ
ZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJyknLCBleHBlY3QpOwogICAgICAgICBpZiAoIWJsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7ICpyZWQsICpncmVlbiwgKmJsdWUgfTsKICAgICB9
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sb3IoU3Ry
aW5nVmlldyBzdHJpbmcsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC01MzQs
NyArNTM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJzaW5n
TmFtZWRDb2xvcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGwKICAgICBidWZmZXJbbGVuZ3RoXSA9
ICdcMCc7CiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9yKGJ1ZmZlciwgbGVuZ3RoKTsK
ICAgICBpZiAoIW5hbWVkQ29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29sb3I6
OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSk7CiB9CiAKQEAgLTU0MiwxMSArNTQyLDEx
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yCiB7CiAgICAgY2hhciBidWZmZXJbNjRdOyAvLyBF
YXNpbHkgYmlnIGVub3VnaCBmb3IgdGhlIGxvbmdlc3QgY29sb3IgbmFtZS4KICAgICBpZiAobGVu
Z3RoID4gc2l6ZW9mKGJ1ZmZlcikgLSAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaV07
CiAgICAgICAgIGlmICghY2hhcmFjdGVyIHx8ICFpc0FTQ0lJKGNoYXJhY3RlcikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKHN0YXRpY19jYXN0PGNoYXI+KGNo
YXJhY3RlcikpOwogICAgIH0KICAgICByZXR1cm4gZmluaXNoUGFyc2luZ05hbWVkQ29sb3IoYnVm
ZmVyLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5j
cHAKaW5kZXggZWMwYzFhNjgyMWI1NmJkYTk5ZDBhZWYxYWI2NGMzMTJiNGFhODg5Mi4uNzI0ZjFi
MzkxZDMyYjYzODc4NDhiN2I0ZTAxNzkyZjNmYmRmOGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIENTU1BhcnNlcklt
cGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBzdHJpCiBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlckltcGw6OnBhcnNl
VmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIENTU1BhcnNlckltcGwgcGFyc2VyKGNv
bnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVs
ZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7CisgICAgYXV0byBydWxlVHlwZSA9
IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVfb3IoU3R5bGVSdWxlVHlwZTo6U3R5bGUp
OwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRpb25WYWx1ZShwYXJzZXIudG9rZW5pemVyKCkt
PnRva2VuUmFuZ2UoKSwgcHJvcGVydHlJRCwgaW1wb3J0YW50LCBydWxlVHlwZSk7CiAgICAgaWYg
KHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gQ1NT
UGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3I7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBDU1NQ
YXJzZXJJbXBsOjpwYXJzZURlZmVycmVkS2V5ZnJhbWVMaXN0KENTU1BhcnNlclRva2VuUmFuZ2Ug
dG9rZW5SYW5nZSwgQ1MKIGJvb2wgQ1NTUGFyc2VySW1wbDo6cGFyc2VEZWNsYXJhdGlvbkxpc3Qo
TXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIENTU1BhcnNlckltcGwg
cGFyc2VyKGNvbnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQuZW5j
bG9zaW5nUnVsZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7CisgICAgYXV0byBy
dWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVfb3IoU3R5bGVSdWxlVHlw
ZTo6U3R5bGUpOwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRpb25MaXN0KHBhcnNlci50b2tl
bml6ZXIoKS0+dG9rZW5SYW5nZSgpLCBydWxlVHlwZSk7CiAgICAgaWYgKHBhcnNlci5tX3BhcnNl
ZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDljY2RiNjE1
N2Q4YTVjOWZlOTc1ZGVhYTcyYTY3ODBlMWRhNDY2MzUuLmZkNTEwNjE5NzNlMjUwYzlmNWRkMTI2
ZDgxYzhhNzgzMzM1YzdhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCkBAIC00NTMsOCArNDUzLDggQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZURpc3BsYXkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgfQog
CiAgICAgLy8gU2V0IGRlZmF1bHRzIHdoZW4gb25lIG9mIHRoZSB0d28gdmFsdWVzIGFyZSB1bnNw
ZWNpZmllZAotICAgIENTU1ZhbHVlSUQgZGlzcGxheU91dHNpZGUgPSBwYXJzZWREaXNwbGF5T3V0
c2lkZS52YWx1ZU9yKENTU1ZhbHVlQmxvY2spOwotICAgIENTU1ZhbHVlSUQgZGlzcGxheUluc2lk
ZSA9IHBhcnNlZERpc3BsYXlJbnNpZGUudmFsdWVPcihDU1NWYWx1ZUZsb3cpOworICAgIENTU1Zh
bHVlSUQgZGlzcGxheU91dHNpZGUgPSBwYXJzZWREaXNwbGF5T3V0c2lkZS52YWx1ZV9vcihDU1NW
YWx1ZUJsb2NrKTsKKyAgICBDU1NWYWx1ZUlEIGRpc3BsYXlJbnNpZGUgPSBwYXJzZWREaXNwbGF5
SW5zaWRlLnZhbHVlX29yKENTU1ZhbHVlRmxvdyk7CiAKICAgICBhdXRvIHNlbGVjdFNob3J0VmFs
dWUgPSBbJl0oKSAtPiBDU1NWYWx1ZUlEIHsKICAgICAgICAgaWYgKGRpc3BsYXlPdXRzaWRlID09
IENTU1ZhbHVlQmxvY2spIHsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAg
ICAvLyBBbHdheXMgcGFyc2UgbGVuZ3RocyBpbiBzdHJpY3QgbW9kZSBoZXJlLCBzaW5jZSBpdCB3
b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbgogICAgIC8vIHRoZSAnY29s
dW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSk7Ci0gICAgaWYgKCFjb2x1bW5XaWR0aCB8fCBjb2x1bW5XaWR0
aC0+aXNaZXJvKCkudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKCFjb2x1bW5XaWR0aCB8fCBjb2x1
bW5XaWR0aC0+aXNaZXJvKCkudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBjb2x1bW5XaWR0aDsKQEAgLTIzOTMsNyArMjM5Myw3IEBAIHN0YXRp
YyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAK
ICAgICBpZiAoYXV0byBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNl
ck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCkpIHsKLSAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZS0+aXNO
ZWdhdGl2ZSgpLnZhbHVlT3IoZmFsc2UpKQorICAgICAgICBpZiAoIXBhcnNlZFZhbHVlLT5pc05l
Z2F0aXZlKCkudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVl
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggMTI4Njlk
YWE0ZWVmZjU4YmE1NWY3YzZlZDIyN2ViNWNkNDk2N2ZkNC4uYmU4MmZmZGYxZGIzYTdiZTIzYWVh
MDQwYmJjYzlmMjdkMTFiNWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAwUmF3
KENTU1BhcnNlclRva2VuUmFuZwogICAgICAgICByZXR1cm4gKnBlcmNlbnQgLyAxMDAuMDsKICAg
ICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCB2YWx1ZVJhbmdlKSkK
ICAgICAgICAgcmV0dXJuICpudW1iZXI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBGSVhNRTogY29uc2lkZXIgcHVsbGluZyBpbiB0
aGUgcGFyc2luZyBsb2dpYyBmcm9tIENTU0NhbGN1bGF0aW9uVmFsdWUuY3BwLgpAQCAtMTI5LDcg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRpb25h
bDxJbnRUeXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoZG91YmxlIG1pbmltdW1WYWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9zb3Vy
Y2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVybiBjbGFtcFRvPEludFR5cGU+KHN0ZDo6
cm91bmQoc3RkOjptYXgobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIG1pbmltdW1WYWx1ZSkp
KTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRvdWJs
ZT4gY29uc3VtZU51bWJlclJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8
IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0
dXJuIG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIH0KQEAgLTE1MywxMCArMTUzLDEw
IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KCkKICAg
ICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBj
YXRlZ29yeSA9IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpOwogICAgICAgICBpZiAoY2F0ZWdvcnkg
IT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3Nv
dXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0dXJuIG1fY2FsY1ZhbHVlLT5kb3VibGVW
YWx1ZSgpOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8
QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1Zh
bHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6OkFu
Z2xlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOwogICAgICAg
ICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBlKCksIG1fY2FsY1ZhbHVlLT5k
b3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgogICAg
IE9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdygpCiAgICAgewogICAgICAgICBp
ZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9u
Q2F0ZWdvcnk6Okxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9y
YW5nZTsKICAgICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpLCBt
X2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQpAQCAtMTgwLDcgKzE4MCw3IEBA
IHB1YmxpYzoKICAgICBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhP
clBlcmNlbnRSYXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIHN3aXRjaCAobV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkpIHsKICAgICAgICAg
Y2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6CkBAIC0xOTIsNyArMTkyLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgICAgICBy
ZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMDgsMjEgKzIwOCwyMSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1lSW50ZWdl
clR5cGVSYXcoQ1NTUGFyc2VyVG9rZQogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9
IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAg
ICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBlIHx8
IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11bVZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiBjbGFtcFRvPEludFR5cGU+KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkubnVtZXJpY1ZhbHVlKCkpOwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVu
Y3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3Vs
YXRpb25DYXRlZ29yeTo6TnVtYmVyKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxj
dWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewogICAgICAgICBpZiAoY2FsY3VsYXRpb24t
PmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVJbnRlZ2VyVHlwZVJhdzxJbnRUeXBlPiht
aW5pbXVtVmFsdWUpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJhdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKQEAgLTI1NCwx
MiArMjU0LDEyIEBAIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhCiAgICAgY29uc3QgQ1NTUGFyc2Vy
VG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVt
YmVyVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZTo6Tm9uTmVn
YXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgpOwog
ICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVy
LCB2YWx1ZVJhbmdlKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3KCk7
CkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lRm9udFdlaWdodE51
bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGNvbnN1
bWVOdW1iZXJSYXcocmFuZ2UpOwogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlvblRv
a2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gIltGb3IgY2FsYygpXSwgdGhlIHVzZWQgdmFsdWUgcmVzdWx0aW5n
IGZyb20gYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGNsYW1wZWQgdG8gdGhlIHJhbmdlIGFsbG93ZWQg
aW4gdGhlIHRhcmdldCBjb250ZXh0LiIKICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2Us
IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlciwgVmFsdWVSYW5nZTo6QWxsKTsKQEAgLTMxNCw3
ICszMTQsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWlu
KHN0ZDo6bWF4KCpyZXN1bHQsIHN0ZDo6bmV4dGFmdGVyKDAuLCAxLikpLCBzdGQ6Om5leHRhZnRl
cigxMDAwLiwgMC4pKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRm9udFdl
aWdodE51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTM0OSw3ICszNDksNyBA
QCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5ndGhSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAgICBzd2l0Y2ggKHRva2VuLnVuaXRUeXBl
KCkpIHsKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CiAgICAgICAg
ICAgICBpZiAoY3NzUGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NT
X0VNUzoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CkBAIC0zNzAsMjMgKzM3
MCwyMyBAQCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5ndGhSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfUToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKCh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2U6Ok5vbk5l
Z2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkgfHwgc3RkOjppc2luZih0b2tlbi5u
dW1lcmljVmFsdWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgeyB0b2tlbi51bml0
VHlwZSgpLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
IH0gfTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikgewogICAg
ICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9rZW4ubnVtZXJpY1ZhbHVlKCks
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCBVbml0bGVzc1plcm9RdWlyazo6QWxsb3cpCiAgICAg
ICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiB0b2tl
bi5udW1lcmljVmFsdWUoKSA8IDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChzdGQ6OmlzaW5m
KHRva2VuLm51bWVyaWNWYWx1ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyB7IENT
U1VuaXRUeXBlOjpDU1NfUFgsIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVt
ZXJpY1ZhbHVlKCkgfSB9OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rp
b25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5j
b25zdW1lTGVuZ3RoUmF3KCk7CkBAIC00MTIsMTIgKzQxMiwxMiBAQCBPcHRpb25hbDxkb3VibGU+
IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdl
IHZhbHVlUgogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsK
ICAgICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikgewogICAgICAgICBpZiAo
c3RkOjppc2luZih0b2tlbi5udW1lcmljVmFsdWUoKSkgfHwgKHZhbHVlUmFuZ2UgPT0gVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpICE9IEZ1bmN0aW9uVG9r
ZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIENhbGN1bGF0aW9uQ2F0
ZWdvcnk6OlBlcmNlbnQsIHZhbHVlUmFuZ2UpOwogICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1
bWVQZXJjZW50UmF3KCk7CkBAIC00NjYsMjMgKzQ2NiwyMyBAQCBPcHRpb25hbDxMZW5ndGhPclBl
cmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4udHlw
ZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVM
ZW5ndGhSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHZhbHVlUmFuZ2UsIHVuaXRsZXNzKSkKICAg
ICAgICAgICAgIHJldHVybiB7ICpyZXN1bHQgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5
cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29u
c3VtZVBlcmNlbnRSYXcocmFuZ2UsIHZhbHVlUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHsg
KnJlc3VsdCB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25U
b2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25D
YXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVl
KiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewogICAgICAgICBpZiAoY2FuQ29u
c3VtZUNhbGNWYWx1ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkpCiAg
ICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KCk7
CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUs
IFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKQEAgLTUxOSw3
ICs1MTksNyBAQCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAgICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfVFVSTjoKICAgICAgICAgICAgIHJldHVybiB7IHsgdW5pdFR5cGUsIHJhbmdlLmNv
bnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkgfSB9OwogICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNyw3ICs1MjcsNyBA
QCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAgICAgICByZXR1cm4geyB7IENTU1VuaXRUeXBl
OjpDU1NfREVHLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1
ZSgpIH0gfTsKIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5n
bGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZUFuZ2xl
UmF3KCk7CkBAIC02MzcsNyArNjM3LDcgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25z
dW1lUmVzb2x1dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQWxsb3dYUmUKIE9wdGlv
bmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CiB9CiAKQEAg
LTY1Niw3ICs2NTYsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVudFdv
cmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTUwogT3B0aW9uYWw8Q1NTVmFs
dWVJRD4gY29uc3VtZUlkZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWso
KS5pZCgpIDwgbG93ZXIgfHwgcmFuZ2UucGVlaygpLmlkKCkgPiB1cHBlcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gY29uc3VtZUlkZW50UmF3KHJhbmdlKTsKIH0KIApAQCAtNzQ0LDcgKzc0NCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogICAgIGlmIChhdXRvIGFscGhhUGFyYW1ldGVyID0gY29uc3VtZU51bWJlck9y
UGVyY2VudERpdmlkZWRCeTEwMFJhdyhyYW5nZSkpCiAgICAgICAgIHJldHVybiBjbGFtcFRvKCph
bHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93
ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+IGNv
bnN1bWVPcHRpb25hbEFscGhhT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAg
LTc1NSw3ICs3NTUsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0
YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIGlmIChhdXRvIGlk
ZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKICAgICAgICAg
cmV0dXJuIHsgKmlkZW50IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVIdWUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQpCkBAIC03NzQsNyArNzc0LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRl
bnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAgICBpZiAo
YXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCiAg
ICAgICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgZG91YmxlIG5vcm1hbGl6ZUh1ZShk
b3VibGUgaHVlKQpAQCAtNzkwLDcgKzc5MCw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxs
b3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlECiAg
ICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFu
Z2UpKQogICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8Q1NTVmFsdWVJRC4u
LiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVl
SUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBA
IC04MDEsNyArODAxLDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBz
dGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAgICBpZiAoYXV0byBp
ZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCiAgICAgICAg
IHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEMxLCBDU1NWYWx1ZUlE
IEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5lbCwgdHlwZW5hbWUgQ29s
b3JUeXBlPiBzdGF0aWMgYXV0byBleHRyYWN0Q2hhbm5lbFZhbHVlKENTU1ZhbHVlSUQgY2hhbm5l
bCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBlOjpD
b21wb25lbnRUeXBlCkBAIC04ODcsOCArODg3LDggQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRCBDPiBz
dGF0aWMgT3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJHQkMK
ICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQogICAg
ICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKnBlcmNlbnQsIFJHQkNvbXBv
bmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKICAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9IGNvbnN1
bWVJZGVudFJhdzxDPihhcmdzKSkKLSAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBv
bmVudCB7ICpjaGFubmVsLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpjaGFubmVs
LCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBzd2l0Y2ggKCpjb21wb25lbnRUeXBlKSB7CkBAIC04OTcsMTQgKzg5NywxNCBAQCB0ZW1w
bGF0ZTxDU1NWYWx1ZUlEIEM+IHN0YXRpYyBPcHRpb25hbDxSZWxhdGl2ZVJHQkNvbXBvbmVudD4g
Y29uc3VtZVJlbGF0aXZlUkdCQwogICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9u
ZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CiAgICAgICAgIGlmIChh
dXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykpCiAgICAgICAgICAgICByZXR1
cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6TnVt
YmVyIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZTog
ewogICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCiAg
ICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqcGVyY2VudCwgUkdCQ29t
cG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OwogICAgICAgICBpZiAoYXV0byBjaGFubmVsID0gY29u
c3VtZUlkZW50UmF3PEM+KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29t
cG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAgICAgfQogCkBAIC05NTMsNyArOTUzLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVsYXRp
dmVSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnMK
ICAgICAvLyBzdXBwb3J0IGNhbGN1bGF0aW9ucyBvbiB0aGUgb3JpZ2luJ3MgY29tcG9uZW50cy4K
ICAgICBhdXRvIG9yaWdpbkNvbG9yQXNTUkdCID0gb3JpZ2luQ29sb3IudG9TUkdCQUxvc3N5PHVp
bnQ4X3Q+KCk7CiAKLSAgICBhdXRvIHJlc29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5
cGUudmFsdWVPcihSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICBhdXRvIHJlc29s
dmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVfb3IoUkdCQ29tcG9uZW50VHlw
ZTo6UGVyY2VudGFnZSk7CiAgICAgYXV0byBjaGFubmVsUmVzb2x2ZXIgPSBbcmVzb2x2ZWRDb21w
b25lbnRUeXBlXShhdXRvIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBjbGFtcFJHQkNvbXBvbmVu
dCh2YWx1ZSwgcmVzb2x2ZWRDb21wb25lbnRUeXBlKTsKICAgICB9OwpAQCAtOTkwLDcgKzk5MCw3
IEBAIHRlbXBsYXRlPFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VSR0JQ
YXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuCiAgICAgICAgICAgICByZXR1cm4geyB7ICpudW1i
ZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlciB9IH07CiAgICAgICAgIGlmIChhdXRvIHBlcmNl
bnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKICAgICAgICAgICAgIHJldHVybiB7IHsgKnBl
cmNlbnQsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfSB9OwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAKICAg
ICBhdXRvIGNvbnN1bWVDb21wb25lbnQgPSBbXShhdXRvJiBhcmdzLCBhdXRvIGNvbXBvbmVudFR5
cGUpIHsKQEAgLTE2MzMsNyArMTYzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvck1peENvbG9y
U3BhY2U+IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRDb21tYShDU1NQYXJzZXJUCiAgICAg
YXV0byBjb25zdW1lSWRlbnRBbmRDb21tYSA9IFtdKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3Ms
IENvbG9yTWl4Q29sb3JTcGFjZSBjb2xvclNwYWNlKSAtPiBPcHRpb25hbDxDb2xvck1peENvbG9y
U3BhY2U+IHsKICAgICAgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOwogICAgICAgICBpZiAoIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuIGNvbG9yU3BhY2U7CiAgICAgfTsKIApAQCAtMTY1MSw3ICsxNjUxLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPENvbG9yTWl4Q29sb3JTcGFjZT4gY29uc3VtZUNvbG9yTWl4Q29sb3JTcGFjZUFu
ZENvbW1hKENTU1BhcnNlclQKICAgICBjYXNlIENTU1ZhbHVlU1JHQjoKICAgICAgICAgcmV0dXJu
IGNvbnN1bWVJZGVudEFuZENvbW1hKGFyZ3MsIENvbG9yTWl4Q29sb3JTcGFjZTo6U3JnYik7CiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTE2NjksNyArMTY2OSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENTU1Bh
cnNlclRva2VuUmFuZ2UmCiAKICAgICByZXN1bHQuY29sb3IgPSBjb25zdW1lT3JpZ2luQ29sb3Io
YXJncywgY29udGV4dCk7CiAgICAgaWYgKCFyZXN1bHQuY29sb3IuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFyZXN1bHQucGVyY2VudGFnZSkgewogICAgICAgICBpZiAoYXV0byBwZXJjZW50YWdl
ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCkBAIC0xODQ5LDE1ICsxODQ5LDE1IEBAIHN0YXRp
YyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgYm9vbCBhCiAgICAgICAgIHZpZXcgPSB0b2tlbi52YWx1ZSgpOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoIWFjY2VwdFF1aXJreUNvbG9ycykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pCiAgICAgICAgICAgICBzdHJpbmcgPSB0
b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7IC8vIGUuZy4gRkYwMDAwCiAgICAgICAgIGVsc2UgaWYg
KHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9u
VG9rZW4pIHsKICAgICAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0gSW50
ZWdlclZhbHVlVHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIG51bWVy
aWNWYWx1ZSA9IHRva2VuLm51bWVyaWNWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCEobnVtZXJp
Y1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDwgMTAwMDAwMCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgYXV0byBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHRva2Vu
Lm51bWVyaWNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVy
VG9rZW4pCiAgICAgICAgICAgICAgICAgc3RyaW5nID0gU3RyaW5nOjpudW1iZXIoaW50ZWdlclZh
bHVlKTsgLy8gZS5nLiAxMTIyMzMKQEAgLTE4NjcsMTIgKzE4NjcsMTIgQEAgc3RhdGljIE9wdGlv
bmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBib29sIGEKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCYiMDAwMDAw
IltzdHJpbmcubGVuZ3RoKCldLCBzdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdHJp
bmcubGVuZ3RoKCkgIT0gMyAmJiBzdHJpbmcubGVuZ3RoKCkgIT0gNikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB2aWV3ID0gc3RyaW5nOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNlcjo6
cGFyc2VIZXhDb2xvcih2aWV3KTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByYW5nZS5jb25z
dW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIHJldHVybiAqcmVzdWx0OwogfQpAQCAtMTk5
Niw3ICsxOTk2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0
aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmEKICAgICBib29sIG11c3RPcmRl
ckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFsdWUxLmlzVmFsdWVJRCgpIHx8
ICF2YWx1ZTIuaXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0aWNh
bFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6b250YWxQb3NpdGlvbktleXdv
cmRPbmx5KHZhbHVlMik7CiAgICAgaWYgKG11c3RPcmRlckFzWFkgJiYgbXVzdE9yZGVyQXNZWCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAobXVzdE9yZGVyQXNZWCkKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uQ29vcmRp
bmF0ZXMgeyB2YWx1ZTIsIHZhbHVlMSB9OwogICAgIHJldHVybiBQb3NpdGlvbkNvb3JkaW5hdGVz
IHsgdmFsdWUxLCB2YWx1ZTIgfTsKQEAgLTIwMjksMTIgKzIwMjksMTIgQEAgc3RhdGljIE9wdGlv
bmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVl
cyhjb25zdCBzdGQKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKICAgICAgICAg
aWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAgIGlmIChjZW50ZXIpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgY2VudGVyID0gY3VycmVudFZhbHVlOwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KQEAgLTIwNDcsMTIgKzIwNDcsMTIgQEAgc3RhdGljIE9wdGlvbmFs
PFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyhj
b25zdCBzdGQKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1Zh
bHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pOwog
ICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
cmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTIwNjAsNyArMjA2MCw3IEBA
IHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBiYWNrZ3JvdW5kUG9zaXRpb25G
cm9tVGhyZWVWYWx1ZXMoY29uc3Qgc3RkCiAgICAgaWYgKGNlbnRlcikgewogICAgICAgICBBU1NF
UlQocmVzdWx0WCB8fCByZXN1bHRZKTsKICAgICAgICAgaWYgKHJlc3VsdFggJiYgcmVzdWx0WSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoIXJlc3VsdFgpCiAgICAgICAgICAgICByZXN1bHRYID0g
Y2VudGVyOwogICAgICAgICBlbHNlCkBAIC0yMDg5LDExICsyMDg5LDExIEBAIHN0YXRpYyBPcHRp
b25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0IHN0
ZDo6YXJyYXk8Q1NTCiAgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CiAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNbaV07CiAgICAgICAg
IGlmICghY3VycmVudFZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIENT
U1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPnZhbHVlSUQoKTsKICAgICAgICAgaWYgKGlkID09
IENTU1ZhbHVlQ2VudGVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByZXN1bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSArIDFdICYmICF2YWx1ZXNbaSAr
IDFdLT5pc1ZhbHVlSUQoKSkKQEAgLTIxMDMsMTIgKzIxMDMsMTIgQEAgc3RhdGljIE9wdGlvbmFs
PFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3RkOjph
cnJheTxDU1MKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENTU1Zh
bHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20pOwog
ICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
cmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMjMsNyArMjEyMyw3IEBA
IE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVz
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhCiB7CiAgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9z
aXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAo
IXZhbHVlMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9uZW50
KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTIpCkBAIC0y
MTQ3LDcgKzIxNDcsNyBAQCBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1lUG9z
aXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYQogICAgICAgICByZXR1cm4g
cG9zaXRpb25Gcm9tRm91clZhbHVlcyh2YWx1ZXMpOwogICAgIAogICAgIGlmIChwb3NpdGlvblN5
bnRheCAhPSBQb3NpdGlvblN5bnRheDo6QmFja2dyb3VuZFBvc2l0aW9uKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXModmFsdWVzKTsKIH0KQEAg
LTIxNjMsNyArMjE2Myw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVP
bmVPclR3b1ZhbHVlZFBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFyc2VyCiB7CiAgICAgYXV0byB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHZhbHVlMiA9IGNvbnN1bWVQ
b3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwogICAgIGlm
ICghdmFsdWUyKQogICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tT25lVmFsdWUoKnZhbHVlMSk7
CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBPcHRpb25hbDxGb250V2VpZ2h0UmF3PiBjb25zdW1lRm9u
dFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIHsg
KnJlc3VsdCB9OwogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVy
UmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Q1NTVmFs
dWVJRD4gY29uc3VtZUZvbnRTdHJldGNoS2V5d29yZFZhbHVlUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQpAQCAtMzAwMywxMSArMzAwMywxMSBAQCBPcHRpb25hbDxGb250U3R5bGVSYXc+
IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
cgogewogICAgIGF1dG8gcmVzdWx0ID0gY29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJhdyhy
YW5nZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGlkZW50ID0gKnJlc3VsdDsK
ICAgICBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWRlbnQgPT0gQ1NTVmFsdWVJdGFs
aWMpCi0gICAgICAgIHJldHVybiB7IHsgaWRlbnQsIFdURjo6bnVsbG9wdCB9IH07CisgICAgICAg
IHJldHVybiB7IHsgaWRlbnQsIHN0ZDo6bnVsbG9wdCB9IH07CiAgICAgQVNTRVJUKGlkZW50ID09
IENTU1ZhbHVlT2JsaXF1ZSk7CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICBpZiAo
IXJhbmdlLmF0RW5kKCkpIHsKQEAgLTMwMTUsMTMgKzMwMTUsMTMgQEAgT3B0aW9uYWw8Rm9udFN0
eWxlUmF3PiBjb25zdW1lRm9udFN0eWxlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXIKICAgICAgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6
OkFsbG93KSkgewogICAgICAgICAgICAgaWYgKGlzRm9udFN0eWxlQW5nbGVJblJhbmdlKENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVlKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBDU1NWYWx1ZU9ibGlxdWUsIFdURk1vdmUoYW5n
bGUpIH0gfTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oY3NzUGFyc2VyTW9kZSk7CiAjZW5kaWYKLSAgICByZXR1cm4geyB7IENTU1ZhbHVlT2Js
aXF1ZSwgV1RGOjpudWxsb3B0IH0gfTsKKyAgICByZXR1cm4geyB7IENTU1ZhbHVlT2JsaXF1ZSwg
c3RkOjpudWxsb3B0IH0gfTsKIH0KIAogU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTMwNjQsNyArMzA2NCw3IEBAIE9wdGlvbmFsPFdU
Rjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJzZXJU
b2tlblJhbmdlJiByCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBmYW1pbHlOYW1l
ID0gY29uc3VtZUZhbWlseU5hbWVSYXcocmFuZ2UpOwogICAgICAgICAgICAgaWYgKGZhbWlseU5h
bWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbGlzdC5hcHBlbmQo
eyBmYW1pbHlOYW1lIH0pOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1hSW5j
bHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwpAQCAtMzA3NiwxMyArMzA3NiwxMyBAQCBPcHRpb25h
bDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBDU1NQYXJzZXJNbwogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA+PSBDU1NWYWx1ZVh4
U21hbGwgJiYgcmFuZ2UucGVlaygpLmlkKCkgPD0gQ1NTVmFsdWVMYXJnZXIpIHsKICAgICAgICAg
aWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXcocmFuZ2UpKQogICAgICAgICAgICAgcmV0
dXJuIHsgKmlkZW50IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudFJhdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUsIHVuaXRsZXNzKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRp
b25hbDxMaW5lSGVpZ2h0UmF3PiBjb25zdW1lTGluZUhlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMzA5MCw3ICszMDkw
LDcgQEAgT3B0aW9uYWw8TGluZUhlaWdodFJhdz4gY29uc3VtZUxpbmVIZWlnaHRSYXcoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkg
PT0gQ1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRl
bnRSYXcocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhyYW5nZSwgVmFsdWVSYW5n
ZTo6Tm9uTmVnYXRpdmUpKQpAQCAtMzA5OSw3ICszMDk5LDcgQEAgT3B0aW9uYWw8TGluZUhlaWdo
dFJhdz4gY29uc3VtZUxpbmVIZWlnaHRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnMKICAgICBpZiAoYXV0byBsZW5ndGhPclBlcmNlbnQgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSkpCiAg
ICAgICAgIHJldHVybiB7ICpsZW5ndGhPclBlcmNlbnQgfTsKIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Rm9udFJhdz4g
Y29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSkKQEAgLTMxMDksNyArMzEwOSw3IEBAIE9wdGlvbmFsPEZvbnRSYXc+IGNv
bnN1bWVGb250UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNz
c1BhCiAgICAgd2hpbGUgKCFyYW5nZUNvcHkuYXRFbmQoKSkgewogICAgICAgICBDU1NWYWx1ZUlE
IGlkID0gcmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAgICAg
ICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBGb250UmF3IHJlc3VsdDsKQEAgLTMxMzgsMzAgKzMxMzgs
MzAgQEAgT3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGEKICAgICB9CiAKICAgICBpZiAocmFuZ2UuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIE5vdyBhIGZvbnQgc2l6ZSBfbXVzdF8gY29tZS4KICAgICBpZiAo
YXV0byBzaXplID0gY29uc3VtZUZvbnRTaXplUmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkKICAg
ICAgICAgcmVzdWx0LnNpemUgPSAqc2l6ZTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAocmFuZ2Uu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNlKHJh
bmdlKSkgewogICAgICAgICBpZiAoIShyZXN1bHQubGluZUhlaWdodCA9IGNvbnN1bWVMaW5lSGVp
Z2h0UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBGb250IGZhbWlseSBtdXN0IGNvbWUgbm93LgogICAgIGlmIChhdXRvIGZhbWlseSA9IGNvbnN1
bWVGb250RmFtaWx5UmF3KHJhbmdlKSkKICAgICAgICAgcmVzdWx0LmZhbWlseSA9ICpmYW1pbHk7
CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5oCmluZGV4IDlhYmEzZGM5MDk3ZWQyNWFlNTU1OGMxODZjNTMyMDhm
ZTAwMmNiOTMuLjE1ZWRlNGI1NzZiYThmNWRkZjFjNGIwZWVhYTRmNTQ4MmJlZjk2YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnMuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NTVmFs
dWVJRC4uLiB0YWlsPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJCiB0ZW1wbGF0
ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBPcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRlbnRS
YXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50
eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRlbnRNYXRjaGVzPG5hbWVzLi4uPihyYW5nZS5wZWVr
KCkuaWQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkuaWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NT
ZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9y
UGFyc2VyLmNwcAppbmRleCAzMGRlN2JjMmRhZDE5ODE5ZjExYTZkYjgxMzNmMGM4ZDZiMDQyNWJh
Li42ZjViMjVlNDNkYjg3OGIxOGYxNjA2Y2RiYjcxMDY0NzYwZGZkMzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtODg2LDcgKzg4
Niw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAKICAgICBpZiAoblN0cmluZy5sZW5ndGgo
KSA+IDIpIHsKICAgICAgICAgYXV0byBwYXJzZWROdW1iZXIgPSBwYXJzZUludGVnZXI8aW50PihT
dHJpbmdWaWV3IHsgblN0cmluZyB9LnN1YnN0cmluZygxKSk7Ci0gICAgICAgIHJlc3VsdC5zZWNv
bmQgPSBwYXJzZWROdW1iZXIudmFsdWVPcigwKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9IHBh
cnNlZE51bWJlci52YWx1ZV9vcigwKTsKICAgICAgICAgcmV0dXJuIHBhcnNlZE51bWJlci5oYXNW
YWx1ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9N
ZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVy
eVBhcnNlci5jcHAKaW5kZXggMGEyM2Q0Yzg5NzdmZWQ1MjM1ZDVkYmFiZDIwNzc3YTZhMWVkZmEw
Yy4uODc2Yzk5YmQyZTgwNzk4Mzc4Zjk1ODczMWQ0MjM0YTI0OGY2YjZiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0xNDQsNyArMTQ0
LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KCkKICAgICAvLyBG
SVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdl
IHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRoZQogICAgIC8vIG9sZCBwYXJzZXIu
CiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlw
ZSB7ICJhbGwiX3MgfTsKLSAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlhUXVlcnlE
YXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1ZU9yKGRl
ZmF1bHRNZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMoKSkg
fTsKKyAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0
b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1ZV9vcihkZWZhdWx0TWVkaWFU
eXBlKSwgV1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJlc3Npb25zKCkpIH07CiAgICAgbV9t
ZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwogICAgIG1fcXVlcnlTZXQtPmFkZE1lZGlhUXVlcnkoV1RG
TW92ZShtZWRpYVF1ZXJ5KSk7CiB9CkBAIC0yODgsNyArMjg4LDcgQEAgTWVkaWFRdWVyeVBhcnNl
cjo6TWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
IGNvbnRleHQKIHZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OmNsZWFyKCkK
IHsKICAgICBtX3Jlc3RyaWN0b3IgPSBNZWRpYVF1ZXJ5OjpOb25lOwotICAgIG1fbWVkaWFUeXBl
ID0gV1RGOjpudWxsb3B0OworICAgIG1fbWVkaWFUeXBlID0gc3RkOjpudWxsb3B0OwogICAgIG1f
bWVkaWFGZWF0dXJlID0gU3RyaW5nKCk7CiAgICAgbV9leHByZXNzaW9ucy5jbGVhcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oIGIvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCmluZGV4IGFkNjk3OTU5MTcwM2NmMWEwNWM4
Y2Q1MTJjZTIxYWQyMGZkNTg4ZjcuLmIwYThhZTc0ZmI1NjE5N2NlZWQxNjNkZWJlNTg1NGEyMGZh
ZmI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0YWNraW5nSXRlbSYgcm9vdFN0YWNraW5nSXRlbSgpIGNv
bnN0IHsgcmV0dXJuICptX3Jvb3RTdGFja2luZ0l0ZW07IH0KICAgICAgY29uc3QgQ29udGFpbmVy
Qm94JiByb290Qm94KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEJveE5lZWRzRGlzcGxheShCb3gm
LCBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9IFdURjo6bnVsbG9wdCkgY29u
c3Q7CisgICAgdm9pZCBzZXRCb3hOZWVkc0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1dGVG
bG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IHZvaWQgc2V0Um9vdFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaAppbmRleCAxNzgyZDJkZGQ1
Mjk4OGZkZDE3ZGU0YmE4Y2UyMDQ3MzUzNzM5YjAxLi42NWZmZTNhYzQxYTgxYmRjZmU3MDU0YTY2
ZGRmOGIxMGU4ZGI1OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBCb3gqIG5leHRTaWJsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsgfQogICAgIHZvaWQgc2V0TmV4dFNp
Ymxpbmcoc3RkOjp1bmlxdWVfcHRyPEJveD4mJik7CiAKLSAgICB2b2lkIHNldE5lZWRzRGlzcGxh
eShPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJl
Y3QgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZGVidWdEZXNjcmlwdGlv
bigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKaW5kZXggYmVjZTQ3MGUzZmEyNTBi
NDllNjdkZmQwY2RjYjY3ZGZmZTU0OGJiYS4uODJkZDM4YzQ5ZjE2NDYyNDFhNmVlZTc5MjY4N2U5
YmVjMzg0ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxh
eUZpbGxMYXllckltYWdlR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcApAQCAtMjY4LDEwICsyNjgsMTAg
QEAgc3RhdGljIEZpbGxMYXllckltYWdlR2VvbWV0cnkgZ2VvbWV0cnlGb3JMYXllcihjb25zdCBG
aWxsTGF5ZXImIGZpbGxMYXllciwgTGF5b3UKICAgICAgICAgICAgIHRvcCA9IGdlb21ldHJ5LmJv
cmRlclRvcCgpOwogICAgICAgICAgICAgYm90dG9tID0gZ2VvbWV0cnkuYm9yZGVyQm90dG9tKCk7
CiAgICAgICAgICAgICBpZiAoZmlsbExheWVyLm9yaWdpbigpID09IEZpbGxCb3g6OkNvbnRlbnQp
IHsKLSAgICAgICAgICAgICAgICBsZWZ0ICs9IGdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVP
cigwKTsKLSAgICAgICAgICAgICAgICByaWdodCArPSBnZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52
YWx1ZU9yKDApOwotICAgICAgICAgICAgICAgIHRvcCArPSBnZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVPcigwKTsKLSAgICAgICAgICAgICAgICBib3R0b20gKz0gZ2VvbWV0cnkucGFkZGluZ0Jv
dHRvbSgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgbGVmdCArPSBnZW9tZXRyeS5wYWRk
aW5nTGVmdCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgICAgIHJpZ2h0ICs9IGdlb21ldHJ5
LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgICAgIHRvcCArPSBnZW9t
ZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICAgICAgYm90dG9tICs9
IGdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
U3RhY2tpbmdJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFj
a2luZ0l0ZW0uY3BwCmluZGV4IDQ5YjgxOTYzOTY1YTM0MTE4ZTQ2ZTk4MDc5OTI3Y2MxNDEwMzVh
YjYuLmEzMTU5NmIyMGMxYTcxYzllZmMzN2RmMzJjMDMxMGJjZjY5YmUwOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCkBAIC00
OCw3ICs0OCw3IEBAIGJvb2wgU3RhY2tpbmdJdGVtOjppc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0
CiAKIHZvaWQgU3RhY2tpbmdJdGVtOjphZGRDaGlsZFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9w
dHI8U3RhY2tpbmdJdGVtPiYmIGl0ZW0pCiB7Ci0gICAgYXV0byB6SW5kZXggPSBpdGVtLT5ib3go
KS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byB6SW5kZXggPSBpdGVtLT5i
b3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApOwogICAgIGlmICh6SW5kZXggPCAwKQog
ICAgICAgICBtX25lZ2F0aXZlWk9yZGVyTGlzdC5hcHBlbmQoV1RGTW92ZShpdGVtKSk7CiAgICAg
ZWxzZQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0YWNraW5nSXRlbTo6YWRkQ2hpbGRTdGFja2lu
Z0l0ZW0oc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mJiBpdGVtKQogdm9pZCBTdGFja2lu
Z0l0ZW06OnNvcnRMaXN0cygpCiB7CiAgICAgYXV0byBjb21wYXJlWkluZGV4ID0gW10oY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mIGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxT
dGFja2luZ0l0ZW0+JiBiKSB7Ci0gICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJbmRl
eCgpLnZhbHVlT3IoMCkgPCBiLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7Cisg
ICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApIDwgYi0+
Ym94KCkuc3R5bGUoKS56SW5kZXgoKS52YWx1ZV9vcigwKTsKICAgICB9OwogCiAgICAgc3RkOjpz
dGFibGVfc29ydChtX3Bvc2l0aXZlWk9yZGVyTGlzdC5iZWdpbigpLCBtX3Bvc2l0aXZlWk9yZGVy
TGlzdC5lbmQoKSwgY29tcGFyZVpJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQWJzdHJhY3RSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5j
cHAKaW5kZXggZmRiMjA5N2RlZjhhNDM1MWQ0MDNkNzRiNDNlNmY2MmYzZjg1OTZjNy4uNDBmNTg1
NjE4M2IyNzYxODY1MjdjZTMwZGMwMTliMTMyM2Q5OTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0
cmFjdFJhbmdlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFu
Z2UoY29uc3QgUmVmPEFic3RyYWN0UmFuZ2U+JiByYW5nZSkKIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYg
KCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKCpyYW5nZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BZGRFdmVudExpc3RlbmVyT3B0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKaW5kZXggY2IxMzRm
YWJhYmExNTAwZjUwYzk3ZGNlZDQ4OWJlZTllNDc2MGRhOC4uYTA3N2E1YzYzNGY3OTE5OWY0N2Yy
ODgyYTFkNDkzZmQ3ODU1OTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2
ZW50TGlzdGVuZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlz
dGVuZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMgewot
ICAgIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKGJvb2wgY2FwdHVyZSA9IGZhbHNlLCBPcHRpb25h
bDxib29sPiBwYXNzaXZlID0gV1RGOjpudWxsb3B0LCBib29sIG9uY2UgPSBmYWxzZSwgUmVmUHRy
PEFib3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51bGxwdHIpCisgICAgQWRkRXZlbnRMaXN0ZW5lck9w
dGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIE9wdGlvbmFsPGJvb2w+IHBhc3NpdmUgPSBzdGQ6
Om51bGxvcHQsIGJvb2wgb25jZSA9IGZhbHNlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgc2lnbmFs
ID0gbnVsbHB0cikKICAgICAgICAgOiBFdmVudExpc3RlbmVyT3B0aW9ucyhjYXB0dXJlKQogICAg
ICAgICAsIHBhc3NpdmUocGFzc2l2ZSkKICAgICAgICAgLCBvbmNlKG9uY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQm91bmRhcnlQb2ludC5jcHAKaW5kZXggNzQ4YjEwNzUwZTM0ZmQwN2JkOTczNGQ5Yjg5Yzgw
ZmU0ZTRkYjEyZC4uZDI2ZDJlY2E2NDZiOGFlYzRjNGVlZTg0NDIxYTNlYTg4MzA4YTViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBPcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkK
IHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFyZW50
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBCb3VuZGFyeVBvaW50IHsgKnBhcmVudCwgbm9kZS5jb21wdXRlTm9k
ZUluZGV4KCkgfTsKIH0KIApAQCAtNDUsNyArNDUsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50
PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJiBub2RlKQogewogICAgIGF1dG8gcGFy
ZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IEJvdW5kYXJ5UG9pbnQgeyAqcGFyZW50LCBub2RlLmNvbXB1dGVOb2RlSW5kZXgoKSArIDEgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKaW5kZXggYmU3MGM5
YjA1Y2RjOGMwYmY0MmVjMTI0YjgyMTA4YmZjNzRjNDg3ZC4uODQyZjZlZWNiMzNjYjNkZTFiYzZl
MzVmYTQ5NzBiOGFiNWQwZmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU1vdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZl
bnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIERldmljZU1vdGlvbkV2ZW50OjpEZXZpY2VNb3Rpb25F
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlvbkRhCiBzdGF0aWMg
T3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25zdCBE
ZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbikKIHsKICAgICBpZiAo
IWFjY2VsZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxl
cmF0aW9uIHsgYWNjZWxlcmF0aW9uLT54KCksIGFjY2VsZXJhdGlvbi0+eSgpLCBhY2NlbGVyYXRp
b24tPnooKSB9OwogfQpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGV2aWNlTW90
aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOgog
c3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IGNvbnZlcnQo
Y29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKiByb3RhdGlvblJhdGUpCiB7CiAg
ICAgaWYgKCFyb3RhdGlvblJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gRGV2aWNlTW90aW9uRXZlbnQ6
OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSwgcm90YXRpb25SYXRlLT5iZXRh
KCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggNDBmMTIxNmZiMjQ1MDllMWFlOTQ3OTM0NjhhZjJmYWYzMDMyZGFlNS4uZDdkNDJlYTIwZjkx
MTNjZjQ1NmJkZWYxZTU5MzdlODQ5NjYzMGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC0zNDQsOCArMzQ0LDggQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjZW5kaWYK
IAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Bh
Z2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6
OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50
NjQoKSwgZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwg
dGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1Jf
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIg
UFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwg
dGhpcywgcGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIGZy
YW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0g
JnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMj
X19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2
NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBh
Z2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRl
bnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9B
UkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU5OCwxOSArMTU5OCwxOSBAQCBS
ZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSkK
IE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IERvY3VtZW50OjpjYXJldFBvc2l0aW9uRnJvbVBvaW50
KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKIHsKICAgICBpZiAoIWhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIExheW91dFBvaW50IGxvY2FsUG9pbnQ7CiAgICAgYXV0byBu
b2RlID0gbm9kZUZyb21Qb2ludChjbGllbnRQb2ludCwgJmxvY2FsUG9pbnQpOwogICAgIGlmICgh
bm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJlbmRl
cmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVu
dCgpOwogICAgIGlmIChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5vZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKTsKICAgICBub2RlID0gcmV0YXJnZXRUb1Njb3BlKCpyYW5nZUNvbXBsaWFudFBvc2l0
aW9uLmNvbnRhaW5lck5vZGUoKSk7CkBAIC0yMTIwLDcgKzIxMjAsNyBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNl
ZFRleHQsIHVucwogICAgIGlmICghbV9wZW5kaW5nUmVuZGVyVHJlZVRleHRVcGRhdGUpCiAgICAg
ICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6VXBk
YXRlPigqdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdSZW5kZXJUcmVlVGV4dFVwZGF0ZS0+YWRkVGV4
dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxhY2VkVGV4dCwgV1RG
OjpudWxsb3B0IH0pOworICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlLT5hZGRUZXh0
KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBzdGQ6
Om51bGxvcHQgfSk7CiAKICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogfQpAQCAt
Mzg0MSw3ICszODQxLDcgQEAgVmlld3BvcnRBcmd1bWVudHMgRG9jdW1lbnQ6OnZpZXdwb3J0QXJn
dW1lbnRzKCkgY29uc3QKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7Ci0gICAgcmV0dXJuIHBh
Z2UtPm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoKS52YWx1ZU9yKG1fdmlld3BvcnRBcmd1bWVu
dHMpOworICAgIHJldHVybiBwYWdlLT5vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKCkudmFsdWVf
b3IobV92aWV3cG9ydEFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0QXJndW1lbnRzKCkKQEAgLTM4NjMsNyArMzg2Myw3IEBAIHZvaWQgRG9jdW1lbnQ6Om1ldGFF
bGVtZW50VGhlbWVDb2xvckNoYW5nZWQoSFRNTE1ldGFFbGVtZW50JiBtZXRhRWxlbWVudCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBvbGRUaGVtZUNvbG9yID0gc3RkOjpleGNoYW5nZSht
X2NhY2hlZFRoZW1lQ29sb3IsIENvbG9yKCkpOwotICAgIG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50
cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBudWxscHRyOwogICAg
IGlmICh0aGVtZUNvbG9yKCkgPT0gb2xkVGhlbWVDb2xvcikKICAgICAgICAgcmV0dXJuOwpAQCAt
NjM2MSwxMSArNjM2MSwxMSBAQCBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiBEb2N1bWVudDo6
Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbgogewogICAgIEhUTUxD
YW52YXNFbGVtZW50KiBlbGVtZW50ID0gZ2V0Q1NTQ2FudmFzRWxlbWVudChuYW1lKTsKICAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgZWxlbWVudC0+c2V0U2l6ZSh7IHdpZHRoLCBoZWlnaHQgfSk7
CiAgICAgYXV0byBjb250ZXh0ID0gZWxlbWVudC0+Z2V0Q29udGV4dCh0eXBlKTsKICAgICBpZiAo
IWNvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGlzPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4oKmNvbnRleHQpKQpAQCAtNjY5MSw3ICs2NjkxLDcgQEAgRGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkg
Y29uc3QKIAogdm9pZCBEb2N1bWVudDo6c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShk
b3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCiB7Ci0gICAgYXV0byBvcmll
bnRhdGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhLCBiZXRhLCBnYW1t
YSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gb3JpZW50YXRpb24gPSBE
ZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShhbHBoYSwgYmV0YSwgZ2FtbWEsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS5k
aWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihvcmllbnRhdGlvbi5wdHIoKSk7CiB9CiAKQEAgLTc3
ODYsMTIgKzc3ODYsMTIgQEAgc3RhdGljIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVDbGlw
cGVkUmVjdEluUm9vdENvbnRlbnRzU3BhY2UoY29uc3QgTGF5b3V0UmUKIAogICAgIGJvb2wgaW50
ZXJzZWN0cyA9IHJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZS0+ZWRnZUluY2x1c2l2ZUludGVyc2Vj
dChyZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpLmxheW91dFZpZXdwb3J0UmVjdCgpKTsKICAg
ICBpZiAoIWludGVyc2VjdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBMYXlvdXRSZWN0IHJlY3RJbkZyYW1lVmlld1Nw
YWNlKHJlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkuY29udGVudHNUb1ZpZXcoc25hcHBlZElu
dFJlY3QoKnJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZSkpKTsKICAgICBhdXRvKiBvd25lclJlbmRl
cmVyID0gcmVuZGVyZXItPmZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAgIGlmICghb3duZXJS
ZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJlY3RJbkZyYW1lVmlld1NwYWNlLm1vdmVCeShvd25lclJlbmRl
cmVyLT5jb250ZW50Qm94TG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGNvbXB1dGVDbGlwcGVkUmVj
dEluUm9vdENvbnRlbnRzU3BhY2UocmVjdEluRnJhbWVWaWV3U3BhY2UsIG93bmVyUmVuZGVyZXIp
OwpAQCAtNzgwOCwyMCArNzgwOCwyMCBAQCBzdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9uT2Jz
ZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldwogewogICAg
IGF1dG8qIHRhcmdldFJlbmRlcmVyID0gdGFyZ2V0LnJlbmRlcmVyKCk7CiAgICAgaWYgKCF0YXJn
ZXRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEZsb2F0UmVjdCBsb2NhbFJvb3RCb3VuZHM7CiAgICAgUmVu
ZGVyQmxvY2sqIHJvb3RSZW5kZXJlcjsKICAgICBpZiAob2JzZXJ2ZXIucm9vdCgpKSB7CiAgICAg
ICAgIGlmIChvYnNlcnZlci50cmFja2luZ0RvY3VtZW50KCkgIT0gJnRhcmdldC5kb2N1bWVudCgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFvYnNlcnZlci5yb290KCktPnJlbmRlcmVyKCkg
fHwgIWlzPFJlbmRlckJsb2NrPihvYnNlcnZlci5yb290KCktPnJlbmRlcmVyKCkpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcm9vdFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KG9ic2Vy
dmVyLnJvb3QoKS0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmICghcm9vdFJlbmRlcmVyLT5pc0Nv
bnRhaW5pbmdCbG9ja0FuY2VzdG9yRm9yKCp0YXJnZXRSZW5kZXJlcikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBpZiAob2JzZXJ2ZXIucm9vdCgpID09ICZ0YXJnZXQuZG9jdW1lbnQoKSkKICAgICAg
ICAgICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3QoKTsK
QEAgLTc4MzMsNyArNzgzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRlcnNlY3Rpb25PYnNlcnZh
dGlvblN0YXRlPiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVWaWV3CiAgICAgICAgIEFT
U0VSVChmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKTsKICAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSB0aGUgY2FzZSBvZiBhbiBpbXBsaWNpdC1yb290IG9ic2VydmVyIHRoYXQgaGFzIGEg
dGFyZ2V0IGluIGEgZGlmZmVyZW50IGZyYW1lIHRyZWUuCiAgICAgICAgIGlmICgmdGFyZ2V0UmVu
ZGVyZXItPmZyYW1lKCkubWFpbkZyYW1lKCkgIT0gJmZyYW1lVmlldy5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJvb3RSZW5kZXJlciA9IGZyYW1lVmlldy5yZW5kZXJWaWV3KCk7CiAgICAg
ICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3QoKTsKICAg
ICB9CkBAIC04NTM2LDcgKzg1MzYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qIHNlcnZpY2VXb3JrZXJDb25uZQogICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZl
U2VydmljZVdvcmtlcigpID8gbWFrZU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIo
KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNl
V29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAg
bV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRv
cE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqdGhpcywgKnNlcnZpY2VX
b3JrZXJDb25uZWN0aW9uKSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgdXNlckFnZW50KHVybCgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggODRmZDIxYTY2ZDc4YTRmNDI4NjdmMWY0ZDA1NDRiNDY2OTg1MzIwNy4uOTgxMzQ3ZmU3
NTA3MTgwMmMwMjI3MTMwZjQyNjNmNThlYTQwZGQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kpOwotICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeS52YWx1ZU9yKFJlZmVycmVy
UG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KKyAgICBSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3kudmFs
dWVfb3IoUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsgfQogCiAgICAg
Ym9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA1MDk4ZWJkMDVlNGFlYjVlMTli
ZjU3YWEzMzUwNzBhNWVkYWZhODFlLi4yMzcwOTU0ZTM2YTg4OWZiZWU4Zjg3NjJiNGJkYzc4MmJl
OGFhYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNw
cApAQCAtOTcsNyArOTcsNyBAQCBPcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nl
c3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTcyLDcgKzE3Miw3IEBAIE9w
dGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1CiAgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVpY2tS
ZXN1bHQ6OlJlamVjdDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaAppbmRleCBlYzEwNzllZGIxMjQ2NmZkOTU0NWU1
Mjc2ZTJkMmI1NWM2MzRjZWYyLi45ZjAyOTc5OTVmMjA3NWUwMDU3YjEyYjBkMzA2ZjM5OGEzNWQ2
MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCkBAIC0x
MjQsMjcgKzEyNCwyNyBAQCBPcHRpb25hbDxSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdD4gUmVx
dWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkPiB3YXNHcmFudGVkOwogICAgIGRlY29kZXIgPj4gd2FzR3Jh
bnRlZDsKICAgICBpZiAoIXdhc0dyYW50ZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24+IHByb21wdFdhc1Nob3duOwogICAgIGRlY29kZXIgPj4gcHJvbXB0
V2FzU2hvd247CiAgICAgaWYgKCFwcm9tcHRXYXNTaG93bikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0
b3JhZ2VBY2Nlc3NTY29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAo
IXNjb3BlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1lRG9t
YWluOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVEb21haW47CiAgICAgaWYgKCF0b3BGcmFtZURv
bWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURvbWFp
bjsKICAgICBkZWNvZGVyID4+IHN1YkZyYW1lRG9tYWluOwogICAgIGlmICghc3ViRnJhbWVEb21h
aW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKndhc0dyYW50ZWQpLCBXVEZNb3ZlKCpw
cm9tcHRXYXNTaG93biksIFdURk1vdmUoKnNjb3BlKSwgV1RGTW92ZSgqdG9wRnJhbWVEb21haW4p
LCBXVEZNb3ZlKCpzdWJGcmFtZURvbWFpbikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDIzZjEzNDk1ZmZhOGEwMDQ0ODMwY2U1NjZjMWUwMGQyMDc0NTIyMTEuLjBhNTI4ZWJiNzVm
MjMwZjJmNjk3MTRjYzYzMTUyZGUzZmY0NDM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTI3Myw3ICsyNzMsNyBAQCBPcHRpb25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0RXhwbGlj
aXRseSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKICAgICBjYXNl
IFRhYkluZGV4U3RhdGU6Ok5vdFNldDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRhYkluZGV4U3RhdGU6Olplcm86
CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVGFiSW5kZXhTdGF0ZTo6TmVnYXRpdmVPbmU6
CkBAIC0yODMsNyArMjgzLDcgQEAgT3B0aW9uYWw8aW50PiBFbGVtZW50Ojp0YWJJbmRleFNldEV4
cGxpY2l0bHkoKSBjb25zdAogICAgICAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPnVudXN1
YWxUYWJJbmRleCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGludCBFbGVt
ZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgRWxl
bWVudDo6c2V0VGFiSW5kZXhGb3JCaW5kaW5ncyhpbnQgdmFsdWUpCiAKIGJvb2wgRWxlbWVudDo6
aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QKIHsKLSAgICBpZiAoIShp
c0ZvY3VzYWJsZSgpICYmICFzaG91bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmlnYXRp
b24oKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApID49IDApKQorICAgIGlm
ICghKGlzRm9jdXNhYmxlKCkgJiYgIXNob3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3VzTmF2
aWdhdGlvbigpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlX29yKDApID49IDApKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGF1dG8qIHJvb3QgPSBzaGFkb3dSb290KCkp
IHsKICAgICAgICAgaWYgKHJvb3QtPmRlbGVnYXRlc0ZvY3VzKCkpCkBAIC04MjMsNyArODIzLDcg
QEAgdm9pZCBFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQoYm9vbCBmbGFnKQogCiBpbmxpbmUgU2Ny
b2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9wdGlvbmFs
PFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2Rl
LCBib29sIGlzTFRSKQogewotICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVPcihTY3JvbGxMb2dp
Y2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CisgICAgc3dpdGNoIChwb3NpdGlvbi52YWx1ZV9vcihT
Y3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CiAgICAgY2FzZSBTY3JvbGxMb2dpY2Fs
UG9zaXRpb246OlN0YXJ0OiB7CiAgICAgICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAgICAg
ICAgY2FzZSBXcml0aW5nTW9kZTo6VG9wVG9Cb3R0b206CkBAIC04NjYsNyArODY2LDcgQEAgaW5s
aW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvcklubGluZURpcmVjdGlvbihP
cHRpb25hbDxTY3JvbGxMb2dpY2EKIAogaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFs
aWdubWVudEZvckJsb2NrRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4g
cG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHN3aXRjaCAocG9zaXRp
b24udmFsdWVPcihTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0KSkgeworICAgIHN3aXRjaCAo
cG9zaXRpb24udmFsdWVfb3IoU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydCkpIHsKICAgICBj
YXNlIFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQ6IHsKICAgICAgICAgc3dpdGNoICh3cml0
aW5nTW9kZSkgewogICAgICAgICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKQEAgLTkz
Niw3ICs5MzYsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KE9wdGlvbmFsPFZhcmlh
bnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRpb25zPj4mJiBhcgogICAgICAgICBpc0hvcml6b250
YWwgPyBhbGlnblggOiBhbGlnblksCiAgICAgICAgIGlzSG9yaXpvbnRhbCA/IGFsaWduWSA6IGFs
aWduWCwKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8sCi0gICAg
ICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVPcihTY3JvbGxCZWhhdmlvcjo6QXV0byksCisgICAg
ICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLAogICAg
ICAgICBTbW9vdGhTY3JvbGxGZWF0dXJlRW5hYmxlbWVudDo6RGVmYXVsdAogICAgIH07CiAgICAg
cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4
ZWQsIHZpc2libGVPcHRpb25zKTsKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsVG8oY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zLCBTY3JvbGxDbGFtcGluZyBj
bGFtcGluZywKICAgICAgICAgY2xhbXBUb0ludGVnZXIoc2Nyb2xsVG9PcHRpb25zLnRvcC52YWx1
ZSgpICogcmVuZGVyZXItPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKQogICAgICk7CiAKLSAgICBh
dXRvIGFuaW1hdGVkID0gdXNlU21vb3RoU2Nyb2xsaW5nKHNjcm9sbFRvT3B0aW9ucy5iZWhhdmlv
ci52YWx1ZU9yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgdGhpcykgPyBBbmltYXRlZFNjcm9sbDo6
WWVzIDogQW5pbWF0ZWRTY3JvbGw6Ok5vOworICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhT
Y3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2aW9y
OjpBdXRvKSwgdGhpcykgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRTY3JvbGw6Ok5v
OwogICAgIGF1dG8gc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zID0gU2Nyb2xsUG9zaXRpb25D
aGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWNXaXRoT3B0aW9ucyhjbGFtcGluZywgYW5p
bWF0ZWQsIHNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7CiAgICAgcmVuZGVyZXItPnNldFNjcm9s
bFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMpOwog
fQpAQCAtMTU5NCwxMCArMTU5NCwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRl
ck9iamVjdCosIExheW91dFJlY3Q+PiBsaXN0Qm94RWxlbWVudEJvdW5kaW5nQm94KAogICAgICAg
ICBzZWxlY3RFbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVudCku
b3duZXJTZWxlY3RFbGVtZW50KCk7CiAgICAgICAgIGlzR3JvdXAgPSB0cnVlOwogICAgIH0gZWxz
ZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFzZWxlY3RFbGVtZW50IHx8ICFzZWxlY3RFbGVtZW50LT5yZW5kZXJl
cigpIHx8ICFpczxSZW5kZXJMaXN0Qm94PihzZWxlY3RFbGVtZW50LT5yZW5kZXJlcigpKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnNlbGVjdEVs
ZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGJvdW5kaW5nQm94
OwpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5kZXJP
YmplY3QqLCBMYXlvdXRSZWN0Pj4gbGlzdEJveEVsZW1lbnRCb3VuZGluZ0JveCgKICAgICB9CiAK
ICAgICBpZiAoIWJvdW5kaW5nQm94KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0ZDo6cGFpcjxSZW5kZXJP
YmplY3QqLCBMYXlvdXRSZWN0PiB7ICZyZW5kZXJlciwgYm91bmRpbmdCb3gudmFsdWUoKSB9Owog
fQpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCos
IEZsb2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG8KICAgICAgICAg
cmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMocXVhZHMpOwogCiAgICAgaWYgKHF1
YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZW5kZXJlciwg
dW5pdGVkQm91bmRpbmdCb3hlcyhxdWFkcykpOwogfQpAQCAtNDM1NCw3ICs0MzU0LDcgQEAgdm9p
ZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgUmVuZGVyU3R5bGUqKQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVDYWxs
YmFja3MoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0
IEVsZW1lbnQmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQuaAppbmRleCA2ODli
MDYxMGFiZTI3YzE4NjE1OWI5NDBiNDVjMjdlMDFiM2NmNzVkLi4xMjE3NmNhYWVkNTIyMGZjNzhk
YmQxNDZhZTkxZjY2YTg5MDBhN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQuaApA
QCAtNzAsMjEgKzcwLDIxIEBAIE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBFbGVtZW50Q29udGV4
dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgRWxlbWVudENvbnRleHQgY29udGV4dDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5ib3VuZGluZ1JlY3QpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBwYWdlSWRlbnRpZmllciA9IFBhZ2VJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7
CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LndlYlBhZ2VJZGVudGlm
aWVyID0gKnBhZ2VJZGVudGlmaWVyOwogCiAgICAgYXV0byBkb2N1bWVudElkZW50aWZpZXIgPSBE
b2N1bWVudElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWRvY3VtZW50SWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9ICpkb2N1bWVudElk
ZW50aWZpZXI7CiAKICAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVyID0gRWxlbWVudElkZW50aWZp
ZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWVsZW1lbnRJZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSAqZWxlbWVudElkZW50aWZpZXI7CiAKICAgICBy
ZXR1cm4gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRl
cmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNz
ZXJ0aW9ucy5oCmluZGV4IDI5ZjJlZWEzNjQyNWEwNTY4Yzk4YmE0MGEwZTQ4MzUxYWFmY2IzMjIu
Ljg1ZDE5OGM1NDBmZjk5MTBjNTQ2ZWVmMzY5MDE5N2E3OWQ0MDRmZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtNTksMTQgKzU5LDE0
IEBAIGlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRvbVRyZWVIYXNNdXRh
dGVkKCkgY29uc3QKIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZHJv
cEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogewotICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlv
biA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmNsZWFy
KCkKIHsKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKICAgICBtX2luaXRpYWxET01UcmVlVmVy
c2lvbiA9IDA7Ci0gICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA2ZDJmZGNhMDNmY2M1MDU5YjNiM2Yy
Yzk3ZjhkZDM3OGYxMTdkODA5Li41MjgxNTA1Nzc3ZTZlNWMwYjMxN2MxNjNiMTMxMTExNjQzMjhl
NjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKIAogICAgIEV2ZW50VGFyZ2V0KiBjdXJy
ZW50VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGFyZ2V0LmdldCgpOyB9Ci0gICAg
dm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiwgT3B0aW9uYWw8Ym9vbD4gaXNJblNo
YWRvd1RyZWUgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0Q3VycmVudFRhcmdldChFdmVu
dFRhcmdldCosIE9wdGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVlID0gc3RkOjpudWxsb3B0KTsK
ICAgICBib29sIGN1cnJlbnRUYXJnZXRJc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFRhcmdldElzSW5TaGFkb3dUcmVlOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBldmVu
dFBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFBoYXNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAyYWNjZTA3ZDUwNzJkNWUzMzQzYjNmMjJjMjlhM2E2
OTI1YjVhZDUuLjRiZjA0NTQ2NDQ5NGIyZmUwYTczNGM4MzUzODUxYmEwOGExNWU5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9p
ZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50
KQogICAgICAgICBldmVudC5zZXRUYXJnZXQoZmluYWxUYXJnZXQpOwogICAgIH0KIAotICAgIGlm
IChzaG91bGRDbGVhclRhcmdldHNBZnRlckRpc3BhdGNoLnZhbHVlT3IoZmFsc2UpKSB7CisgICAg
aWYgKHNob3VsZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2gudmFsdWVfb3IoZmFsc2UpKSB7CiAg
ICAgICAgIGV2ZW50LnNldFRhcmdldChudWxscHRyKTsKICAgICAgICAgZXZlbnQuc2V0UmVsYXRl
ZFRhcmdldChudWxscHRyKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGNsZWFy
IHRoZSBldmVudCdzIHRvdWNoIHRhcmdldCBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAKaW5kZXggM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNhNmY4MTQwYmZmYS4uMGNjZGM0
YWIzYmVjM2VjNmE4NTJlM2RlMDA0ZmU1NjMxMDY3MzY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAKICAg
ICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBsaXN0ZW5lci0+dHlwZSgpID09IEV2
ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUgJiYgIWxpc3RlbmVyLT53YXNDcmVhdGVk
RnJvbU1hcmt1cCgpOwogCi0gICAgaWYgKCFlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVudExp
c3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgeyBvcHRpb25zLmNh
cHR1cmUsIHBhc3NpdmUudmFsdWVPcihmYWxzZSksIG9wdGlvbnMub25jZSB9KSkKKyAgICBpZiAo
IWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwg
bGlzdGVuZXIuY29weVJlZigpLCB7IG9wdGlvbnMuY2FwdHVyZSwgcGFzc2l2ZS52YWx1ZV9vcihm
YWxzZSksIG9wdGlvbnMub25jZSB9KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KG9wdGlvbnMuc2lnbmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR0NSZWFj
aGFibGVSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCmluZGV4IDMw
OTAzZmMyOTVmNGQyZjI3Y2EwYTU1NmRkZGEzYTdjNGJhOWI2YTIuLjIxNjE2ZDdiYmM4MzY3Y2M0
ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9H
Q1JlYWNoYWJsZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5o
CkBAIC0xMjUsNyArMTI1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFp
dHM8V2ViQ29yZTo6R0NSZWFjaGFibGVSZWY8UD4+IDogU2ltcGxlQ2xhc3MKICAgICBzdGF0aWMg
UGVla1R5cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAogICAgIHR5cGVkZWYg
T3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMgVGFrZVR5cGUgdGFrZShSZWY8
UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IFdURjo6bnVsbG9wdCA6
IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgc3RhdGljIFRha2VUeXBl
IHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBzdGQ6
Om51bGxvcHQgOiBPcHRpb25hbDxSZWY8UD4+KFdURk1vdmUodmFsdWUpKTsgfQogfTsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVu
dC5jcHAKaW5kZXggYjg3ZmYzZWJiYmM3YTY3ZjZjZTY0NDAwYjEzMDM2NzcwNDFkNDgzMi4uYWNm
M2JhMWM1ZTU2ZjkxMjRkMDYxNWMwYjM3NGQ1YTdlYTZmMjExZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9L
ZXlib2FyZEV2ZW50LmNwcApAQCAtMTY1LDEyICsxNjUsMTIgQEAgdm9pZCBLZXlib2FyZEV2ZW50
Ojppbml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm8KIAogICAgIHNldE1vZGlmaWVyS2V5cyhjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5LCBhbHRHcmFwaEtleSk7CiAKLSAgICBtX2NoYXJDb2RlID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fY2hhckNvZGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc0NvbXBvc2luZyA9IGZhbHNl
OwotICAgIG1fa2V5Q29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2tleUNvZGUgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9yZXBlYXQgPSBmYWxzZTsKICAgICBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2
ZW50ID0gbnVsbHB0cjsKLSAgICBtX3doaWNoID0gV1RGOjpudWxsb3B0OworICAgIG1fd2hpY2gg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jb2RlID0geyB9OwogICAgIG1fa2V5ID0geyB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDc2YjY2
ZDg4ZDMzODI5OTA4NzBlNTU0ZDkyYmE2MzU4NTJiNDhiOTMuLjQ4ZTgzMWJhODYxMmM1ZjU0M2Qy
ODQxOGEyZDM2ZWIyYzJmY2VmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNs
YXNzaWNTY3JpcHQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIE9wdGlvbmFsPExvYWRhYmxlU2NyaXB0
OjpFcnJvcj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBtX2Vycm9yOwogCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0LT5lcnJvck9jY3VycmVkKCkp
Ci0gICAgICAgIHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LCBXVEY6Om51
bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQs
IHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2FuY2Vs
ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3Np
Y1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCmlu
ZGV4IDkwYzQ3YTExNTJhMWI5NTFmYTM4MDQ4MjQzYTVlNzI4YmJhYmNmNTcuLjM4YzAzMTAxNzhm
OWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9h
ZGFibGVDbGFzc2ljU2NyaXB0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2Fj
aGVkU2NyaXB0IHsgfTsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7IFdURjo6bnVsbG9w
dCB9OworICAgIE9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3RkOjpudWxsb3B0IH07CiAgICAg
U3RyaW5nIG1faW50ZWdyaXR5OwogICAgIGJvb2wgbV9pc0FzeW5jIHsgZmFsc2UgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjhkMzgzMGY3ZWMzMzI5ZWI3OTNmMjgwOWFm
NGVkOWQxNjA3M2RkZS4uOTcyODRmYzNiN2QwYzNiMTY5YjM5OGY1YWY5YjcwYWUzZmE5ZGNkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBNZXNz
YWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNz
YWdlUG9ydD4+OwogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lc3NhZ2VFdmVudCk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7
IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4mJiBzb3VyY2UgPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyBSZWY8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291
cmNlID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKICAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4gPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUo
UmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtODUsNyArODUsNyBA
QCBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7CiAgICAgTWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwotICAgIE1l
c3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCA9IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gV1RG
OjpudWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CisgICAgTWVz
c2FnZUV2ZW50KERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6
Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKIAogICAgIEV2
ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaAppbmRleCBiOGEwZDA2NTljZWY2NmQ5YzJm
ODgyYjRkYjkwNGFhYjBjMWM0ODRkLi4xZjU0ZDg3ZmNkMGExODliYTMyOGNjOTdjMmM5MDk0ZDMy
MTRmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oCkBA
IC02MywxMiArNjMsMTIgQEAgT3B0aW9uYWw8TWVzc2FnZVBvcnRJZGVudGlmaWVyPiBNZXNzYWdl
UG9ydElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBy
b2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHByb2Nl
c3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxPYmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVyVHlwZT4+IHBvcnRJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gcG9ydElkZW50aWZpZXI7CiAgICAgaWYgKCFwb3J0SWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZN
b3ZlKCpwb3J0SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIuY3BwCmluZGV4IDhiM2EyNWY5NWM5ZjliYzRhNjE3OWVjMmIwMTU4YmE2Zjg5OTg5MDIu
LmJkNzA4YjE3M2QwOTM0OWJhZjYxZDczZjEwODBkNzJkMWNiNzQ1MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTg1LDkgKzg1LDkgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0JiBp
bml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAoaW5pdC5zdWJ0cmVl
KQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQuYXR0cmlidXRlT2xk
VmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFs
dWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9sZFZhbHVlOwotICAg
IGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAo
aW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRp
b25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4g
YXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggZmU3Y2I1NGE3OWIy
MTkxOGI4MDI0M2NjNjY3ZjZjODU0N2JkYmM5Ni4uMmI3Y2E3ZjYzNzc3NmNiODAwMmQzYzBkNmYz
ZTc5MDRkMzIyOWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0xNjA2LDcgKzE2MDYs
NyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQb3Np
dGlvbiYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBjb250YWluZXIgPSBtYWtlUmVmUHRyKHBvc2l0
aW9uLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFjb250YWluZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IEJvdW5kYXJ5UG9pbnQgeyBjb250YWluZXIucmVsZWFzZU5vbk51bGwoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBvc2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBm
OTA1NWJkMTlhMjEwN2IwOWNlZDdlMmI5OTI0ODU3NTdjNGI5NzM0Li4xNzZiYzNiNDg5MjBmZWQw
OGEyYWE5NWFhMmJhZTY2N2FlZGY0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogI2VuZGlmCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQiKTsK
LSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgp
LmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJl
c291cmNlT3B0aW9ucygpLCBXVEY6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1l
bnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKKyAgICAgICAgICAgICAgICBDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBzdGQ6
Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZN
b3ZlKGNoYXJzZXQpKTsKIAogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92ZShy
ZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAppbmRleCBlNzk2OTk2MWU0OWQyNzAzYTI0MjY2ODQwNjE5NTk2OTI2Yzc4ZjlkLi4yODVhNzBk
NzI4Y2ZlYTUxODU5NDEzYmI5YTE5OWU0Y2YyMmQxYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAg
LTEwNzYsNyArMTA3Niw3IEBAIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWY8
UmFuZ2U+JiByYW5nZSkKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29u
c3QgUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ha2VT
aW1wbGVSYW5nZSgqcmFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
aW5kZXggN2Q0ZTkxODU5MzI3MzQxNzU4NWFiZGNmODRlYWNhNzBiYTA1Y2Q1MS4uNGEyZGRmODM5
ZTdkZmE2YjQ2NzFiYzZiOTM4N2E3NDQ5MjhlZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
bGVtZW50LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIE9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6OlNj
cmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlwCiAg
ICAgICAgICAgICByZXR1cm4gU2NyaXB0VHlwZTo6Q2xhc3NpYzsKICAgICAgICAgaWYgKGlzTGVn
YWN5U3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKGxhbmd1YWdlKSkKICAgICAgICAgICAgIHJl
dHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAoTUlNRVR5cGVSZWdp
c3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUodHlwZS5zdHJpcFdoaXRlU3BhY2Uo
KSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwpAQCAtMTU4LDEzICsxNTgs
MTMgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6
ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICAvLyBPbmNlICJkZWZlciIgaXMgaW1w
bGVtZW50ZWQsIHdlIGNhbiByZWNvbnNpZGVyIGVuYWJsaW5nIG1vZHVsZXMgaW4gWEhUTUwuCiAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzM4NwogICAg
IGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2F0
dHItc2NyaXB0LXR5cGUKICAgICAvLyBTZXR0aW5nIHRoZSBhdHRyaWJ1dGUgdG8gYW4gQVNDSUkg
Y2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAibW9kdWxlIiBtZWFucyB0aGF0
IHRoZSBzY3JpcHQgaXMgYSBtb2R1bGUgc2NyaXB0LgogICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZSh0eXBlLCAibW9kdWxlIikpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBl
OjpNb2R1bGU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwj
cHJlcGFyZS1hLXNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJh
bmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggOTFhMDUx
NzFmZWU5MjQ4MmY5ZGI5Y2UwOWZmYTQzMzc4ZDM1YWJlMy4uYWQ2ZTk2ZDFmMjJlZmU5NmNjYTkw
ODA0ZGQ2NTk2MDI0MGM2NTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBs
ZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
KE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsKICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBub2RlLmNvbXB1dGVOb2Rl
SW5kZXgoKTsKICAgICByZXR1cm4gU2ltcGxlUmFuZ2UgeyB7ICpwYXJlbnQsIG9mZnNldCB9LCB7
ICpwYXJlbnQsIG9mZnNldCArIDEgfSB9OwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBh
LCBjb25zdCBPcHRpb25hCiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGJlIGRvbmUgbW9yZSBl
ZmZpY2llbnRseSwgd2l0aCBmZXdlciBjYWxscyB0byB0cmVlT3JkZXI/CiAgICAgaWYgKCFhIHx8
ICFiIHx8ICFpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4oKmEsICpiKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
eyB7IHN0ZDo6bWF4KGEtPnN0YXJ0LCBiLT5zdGFydCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVlT3Jk
ZXIpLCBzdGQ6Om1pbihhLT5lbmQsIGItPmVuZCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVlT3JkZXIp
IH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBiYjQ0YjFiODNlMGNlODZk
ODM0NjA4OTk1Mjk2NWQ1MzNlY2M1ZGMyLi5lZmQ4ZmRmNTJiNTI1NzNkMmEyYTYwZjY5ZGNhN2Y1
MWY2OTVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtMTgwLDcgKzE4MCw3IEBA
IGlubGluZSBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYm
IHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYKIGlubGluZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFr
ZVNpbXBsZVJhbmdlSGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgc3RhcnQsIE9wdGlv
bmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQogewogICAgIGlmICghc3RhcnQgfHwgIWVuZCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1vdmUoKnN0YXJ0KSwgV1RGTW92
ZSgqZW5kKSk7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgU2ltcGxlUmFuZ2UgbWFr
ZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2ludCkKIGlubGluZSBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+JiYgcG9pbnQpCiB7CiAgICAgaWYgKCFwb2ludCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBs
ZVJhbmdlSGVscGVyKFdURk1vdmUoKnBvaW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggYThkNzViMWM1OWU5N2Y2YWFm
MWQ4YjIyZTYyM2VjOGU0ZTAxODhhNC4uMzBmZTA3ZGU1NThlYWJjZTMzNjk2MzUwMTA1NDkyNWJk
NzI0ZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFt
RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5j
b2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVy
U3RyZWFtRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIGF1dG8g
dG9rZW4gPSB2aWV3W2NwdHJdOwogICAgICAgICBpZiAobV9wZW5kaW5nSGlnaFN1cnJvZ2F0ZSkg
ewogICAgICAgICAgICAgYXV0byBoaWdoU3Vycm9nYXRlID0gKm1fcGVuZGluZ0hpZ2hTdXJyb2dh
dGU7Ci0gICAgICAgICAgICBtX3BlbmRpbmdIaWdoU3Vycm9nYXRlID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgbV9wZW5kaW5nSGlnaFN1cnJvZ2F0ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGlmICh0b2tlbiA+PSAweERDMDAgJiYgdG9rZW4gPD0gMHhERkZGKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byBjb2RlUG9pbnQgPSAweDEwMDAwICsgKChoaWdoU3Vycm9nYXRlIC0gMHhE
ODAwKSA8PCAxMCkgKyAodG9rZW4gLSAweERDMDApOwogICAgICAgICAgICAgICAgIFU4X0FQUEVO
RF9VTlNBRkUoYnl0ZXMuZGF0YSgpLCBieXRlc1dyaXR0ZW4sIGNvZGVQb2ludCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCmluZGV4IGI2NzlhMGEzYmI2YWFkZmI1NGYzMDY0MTE1ZDEzYjdkM2Mx
MTJkNTUuLjAzNzQ5ZTc3YTljYzc3ZDUyNTAwOTBmYzZiZTY3MDZjZDFkZTc2ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMTUsMTggKzMxNSwxOCBAQCBIVE1MTGFiZWxFbGVtZW50
KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0dHJp
YnV0ZVZhbAogc3RhdGljIE9wdGlvbmFsPExheW91dFBvaW50PiBhYnNvbHV0ZVBvaW50SWZOb3RD
bGlwcGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50
KQogewogICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSB8fCAhZG9jdW1lbnQudmlldygpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgY29uc3QgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC5mcmFtZSgpLT5zZXR0aW5ncygp
OwogICAgIGlmIChzZXR0aW5ncy52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSAmJiBzZXR0aW5ncy5j
bGllbnRDb29yZGluYXRlc1JlbGF0aXZlVG9MYXlvdXRWaWV3cG9ydCgpKSB7CiAgICAgICAgIGRv
Y3VtZW50LnVwZGF0ZUxheW91dCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50LnZpZXcoKSB8fCAh
ZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8q
IHZpZXcgPSBkb2N1bWVudC52aWV3KCk7CiAgICAgICAgIEZsb2F0UG9pbnQgbGF5b3V0Vmlld3Bv
cnRQb2ludCA9IHZpZXctPmNsaWVudFRvTGF5b3V0Vmlld3BvcnRQb2ludChjbGllbnRQb2ludCk7
CiAgICAgICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEJvdW5kcyh7IH0sIHZpZXctPmxheW91
dFZpZXdwb3J0UmVjdCgpLnNpemUoKSk7CiAgICAgICAgIGlmICghbGF5b3V0Vmlld3BvcnRCb3Vu
ZHMuY29udGFpbnMobGF5b3V0Vmlld3BvcnRQb2ludCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIExheW91dFBvaW50KHZpZXctPmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50KGxheW91
dFZpZXdwb3J0UG9pbnQpKTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJZk5vdENsaXBwZWQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdAogI2VuZGlmCiAgICAgaWYgKHZpc2libGVSZWN0LmNvbnRhaW5zKGFic29s
dXRlUG9pbnQpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVQb2ludDsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJlZlB0cjxOb2RlPiBU
cmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBM
YXlvdXRQb2ludCogbG9jYWxQb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9W
aXNpdGVkTGlua1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRl
LmNwcAppbmRleCBhMDNhZjE0N2YzOWMyMWU0ZWY3NzdiZmNiZjQ0MTFkMTRhYWIwYzgxLi5lYmQx
NWU0MTE4ZTQ2ZjhhYmY5M2I4NGE1ZWZhMzQyN2ExNjRmNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGlubGluZSBzdGF0aWMgT3B0
aW9uYWw8U2hhcmVkU3RyaW5nSGFzaD4gbGlua0hhc2hGb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQm
IGVsZW1lCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oZWxlbWVu
dCkudmlzaXRlZExpbmtIYXNoKCk7CiAgICAgaWYgKGlzPFNWR0FFbGVtZW50PihlbGVtZW50KSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0FFbGVtZW50PihlbGVtZW50KS52aXNpdGVkTGlu
a0hhc2goKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxpZGF0ZVN0eWxlRm9yTGluayhT
aGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCmluZGV4
IGFlNzZhNmZmM2RjOTFiODlmNzIwZmVjNzJmNjgzMWE2ZjdkOTNhM2YuLjQwMjg1ZDM5MDMxODZi
MTVhODcxMGQ4NTAxYTlmYWNhZjBlY2U3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAK
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudChp
bnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG8KIAogICAgIG1fZGVsdGFN
b2RlID0gRE9NX0RFTFRBX1BJWEVMOwogCi0gICAgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVudCA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50ID0gc3RkOjpudWxs
b3B0OwogfQogCiBFdmVudEludGVyZmFjZSBXaGVlbEV2ZW50OjpldmVudEludGVyZmFjZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAKaW5kZXggY2U2ZThhN2NhZWMzZDIyYzE5MmJhOWExZDU1MWMzZTBiMjQz
ZjgzMC4uZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzViMjlkNDg2YjQ4MGE0ZGU3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVs
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpkaXNlbnRh
bmdsZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogICAgIHNpemVfdCBp
ID0gcG9ydCA9PSBtX3BvcnRzWzBdID8gMCA6IDE7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzZXNb
aV0gfHwgbV9pc0Nsb3NlZFtpXSk7Ci0gICAgbV9wcm9jZXNzZXNbaV0gPSBXVEY6Om51bGxvcHQ7
CisgICAgbV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wZW5kaW5nTWVzc2Fn
ZVBvcnRUcmFuc2ZlcnNbaV0uYWRkKHRoaXMpOwogCiAgICAgLy8gVGhpcyBzZXQgb2Ygc3RlcHMg
aXMgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGxvY2sgaXMgdW5sb2NrZWQgYmVmb3JlIHRoZQpAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZVBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogICAgIEFTU0VSVChwb3J0ID09IG1fcG9ydHNb
MF0gfHwgcG9ydCA9PSBtX3BvcnRzWzFdKTsKICAgICBzaXplX3QgaSA9IHBvcnQgPT0gbV9wb3J0
c1swXSA/IDAgOiAxOwogCi0gICAgbV9wcm9jZXNzZXNbaV0gPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc0Nsb3NlZFtpXSA9IHRydWU7
CiAKICAgICAvLyBUaGlzIHNldCBvZiBzdGVwcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGUgbG9j
ayBpcyB1bmxvY2tlZCBiZWZvcmUgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKaW5kZXggZWExOGY5M2Q2
NjY4NDY4MDNhZjMzMzE3ZmI5OTMxZmQ3ZWZkMGU2ZS4uYzU2MGFmMGUwZGIwM2I5NzU2MTM2NTU5
NjJmNDA0Y2I0NjdlMTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaApAQCAtNTksMTAgKzU5LDEwIEBA
IE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
czo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAKICAgICByZXN1bHQubWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0Lm1lc3NhZ2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50cmFuc2ZlcnJlZFBvcnRzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkOWJiNzBjNDExM2QzYzRm
ZTI0ZTcxOTExNThkNTUzMTYwMTJkMDdjLi44ZTQzNTVmZDQ4NTc4Nzc3NDVmMDc4NTU2MTg0MTU2
YjRmOTY1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRl
eHRUeXBlCiAKICAgICAvLyBJZiB0eXBlIGlzIFBhbmVsVHlwZVJldmVyc2lvbiwgdGhlbiB0aGUg
bmV3IHJhbmdlIGhhcyBiZWVuIHNldC4gU28gd2Ugc2hvdWxkbid0IGNsZWFyIGl0LgogICAgIGlm
ICh0eXBlID09IEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uKQotICAgICAgICBtX3Jhbmdl
V2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3JhbmdlV2l0aEFsdGVy
bmF0aXZlID0gc3RkOjpudWxsb3B0OwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoY29ycmVjdGlvblBhbmVsVGltZXJJbnRlcnZhbCk7CiB9CkBAIC0xMTEsNyAr
MTExLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzdGFydEFsdGVybmF0aXZl
VGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZQogdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyOjpzdG9wQWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpCiB7CiAgICAgbV90aW1lci5zdG9w
KCk7Ci0gICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Jh
bmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnN0b3BQZW5kaW5nQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBvbGRTZWxlY3Rpb24pCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjphcHBseVBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIHMKICAgICBpZiAoZG9BcHBseUNvcnJlY3Rpb24pCiAgICAgICAgIGhhbmRsZUFsdGVybmF0
aXZlVGV4dFVJUmVzdWx0KGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHRBY2NlcHRlZCkpOyAKICAgICBlbHNlCi0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFzUGVuZGlu
Z0NvcnJlY3Rpb24oKSBjb25zdApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwID0g
c3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgVmlzaWJs
ZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihwLCBzdGFydCk7CiAg
ICAgICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCkubWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nLCBUZXh0
Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5nVHlwZTo6U2hvd0NvcnJlY3Rp
b25QYW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRXb3JkUmFuZ2UsIFdURjo6bnVs
bG9wdCk7CisgICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCkubWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nLCBUZXh0Q2hl
Y2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5nVHlwZTo6U2hvd0NvcnJlY3Rpb25Q
YW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRXb3JkUmFuZ2UsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5cGVS
ZXZlcnNpb246IHsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnRpbWVyRmlyZWQoKQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9uczsK
ICAgICAgICAgdGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobV9vcmlnaW5hbFRleHQs
IHBhcmFncmFwaFRleHQsIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIHN1Z2dl
c3Rpb25zKTsKICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1f
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBTdHJpbmcgdG9wU3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zLmZp
cnN0KCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3UKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmNhbkVuYWJsZUF1dG9tYXRpY1NwZWxsaW5n
Q29ycmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0No
YW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxp
c3RUeXBlQ29tbWFuZC5jcHAKaW5kZXggMmFkYWI2Y2Y4ZTE5MzEzYmE4MWM1NmJlOGNhMjUyYTFk
NThmZTAyZi4uMzI5MWFiZTUyZjkxN2YyOGRmMDZjMzU2MWZmZTFlMTkzZDIxNmU3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPENoYW5nZUxpc3RUeXBlQ29t
bWFuZDo6VHlwZSwgUmVmPEhUTUxFbGVtZW50Pj4+IGxpc3RDbwogICAgIGlmIChpczxIVE1MT0xp
c3RFbGVtZW50PihsaXN0VG9SZXBsYWNlKSkKICAgICAgICAgcmV0dXJuIHt7IENoYW5nZUxpc3RU
eXBlQ29tbWFuZDo6VHlwZTo6Q29udmVydFRvVW5vcmRlcmVkTGlzdCwgbGlzdFRvUmVwbGFjZS5y
ZWxlYXNlTm9uTnVsbCgpIH19OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6OlR5
cGU+IENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6bGlzdENvbnZlcnNpb25UeXBlKERvY3VtZW50JiBk
b2N1bWVudCkKQEAgLTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8Q2hhbmdlTGlzdFR5cGVDb21tYW5k
OjpUeXBlPiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RDb252ZXJzaW9uVHlwZSgKICAgICAg
ICAgaWYgKGF1dG8gdHlwZUFuZEVsZW1lbnQgPSBsaXN0Q29udmVyc2lvblR5cGVGb3JTZWxlY3Rp
b24oZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiB0
eXBlQW5kRWxlbWVudC0+Zmlyc3Q7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmPEhUTUxFbGVtZW50PiBDaGFuZ2VMaXN0
VHlwZUNvbW1hbmQ6OmNyZWF0ZU5ld0xpc3QoY29uc3QgSFRNTEVsZW1lbnQmIGxpc3RUb1JlcGxh
Y2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3Bw
CmluZGV4IGJjMjM0YTcyYzJjNGE0YzNlMjBkMWVlMzY4Y2NkOTU4NDc3MGEzMzMuLjc2ZWQxMTVj
YjViNmFiZTE1ZmE3MmE5NWUxMzBmNzg3MDRjYmM3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0xNTQ5LDcgKzE1NDksNyBAQCBP
cHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJl
YWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogewogICAgIGF1dG8gZW1wdHlMaXN0SXRlbSA9IGVuY2xv
c2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwogICAg
IGlmICghZW1wdHlMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbGlzdE5vZGUgPSBlbXB0eUxpc3RJ
dGVtLT5wYXJlbnROb2RlKCk7CiAgICAgLy8gRklYTUU6IENhbid0IHdlIGRvIHNvbWV0aGluZyBi
ZXR0ZXIgd2hlbiB0aGUgaW1tZWRpYXRlIHBhcmVudCB3YXNuJ3QgYSBsaXN0IG5vZGU/CkBAIC0x
NTU3LDcgKzE1NTcsNyBAQCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogICAgICAgICB8fCAoIWxp
c3ROb2RlLT5oYXNUYWdOYW1lKHVsVGFnKSAmJiAhbGlzdE5vZGUtPmhhc1RhZ05hbWUob2xUYWcp
KQogICAgICAgICB8fCAhbGlzdE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKQogICAgICAgICB8fCBs
aXN0Tm9kZSA9PSBlbXB0eUxpc3RJdGVtLT5yb290RWRpdGFibGVFbGVtZW50KCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLnByZXZp
b3VzKEJhY2t3YXJkRGVsZXRpb24pLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKaW5kZXggZjQ2ZDAx
ZGU5NDkxMTI1NTc1ODgzZTk3M2UxYzUxODZmODcxYTFiMC4uNjVmMTZlZmI2ODRjMTdhMGM1ZWNh
MDMzOTgyOTc4MjcyYTUwODg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGlvbkhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRpb25IaWdobGlnaHQuaApAQCAtNjcsMTcgKzY3LDE3IEBAIE9wdGlvbmFsPENvbXBvc2l0aW9u
SGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gc3Rh
cnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFydE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBlbmRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CiAgICAgaWYgKCFlbmRP
ZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBj
b2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpzdGFydE9mZnNldCwg
KmVuZE9mZnNldCwgKmNvbG9yIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5
bGUuY3BwCmluZGV4IDA2MThkNzYxOGJkNWNiMGZlNDBjZTQ3YzYyMjdmZGQzYWE5YWJkMTguLmYz
MDYxMzg5N2VkZTE0MTM1NDhlZWJjZjRjMTY2YTY5ZmJmMmNmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTU2MywxNyArNTYzLDE3IEBAIFJlZjxNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzPiBFZGl0aW5nU3R5bGU6OnN0eWxlV2l0aFJlc29sdmVkVGV4dERlY29y
YXRpb25zKCkgY29uCiBPcHRpb25hbDxXcml0aW5nRGlyZWN0aW9uPiBFZGl0aW5nU3R5bGU6OnRl
eHREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odW5pY29kZUJpZGkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlk
aVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFsdWVJ
RCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKICAgICAg
ICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlmICghaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KGRpcmVjdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUx0ciA/IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0IDogV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ7CiAgICAgfQpAQCAtNTgxLDcgKzU4MSw3IEBAIE9wdGlvbmFsPFdyaXRpbmdE
aXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigpIGNvbnN0CiAgICAgaWYgKHVu
aWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBXcml0aW5n
RGlyZWN0aW9uOjpOYXR1cmFsOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEVkaXRpbmdTdHlsZTo6c2V0U3R5bGUoUmVmUHRy
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+JiYgc3R5bGUpCkBAIC0xNjExLDcgKzE2MTEsNyBAQCBS
ZWY8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OmludmVyc2VUcmFuc2Zvcm1Db2xvcklmTmVl
ZGVkKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byBjb2xvckZvclByb3BlcnR5SWZJbnZlcnRp
YmxlID0gWyZdKENTU1Byb3BlcnR5SUQgaWQpIC0+IE9wdGlvbmFsPENvbG9yPiB7CiAgICAgICAg
IGF1dG8gY29sb3IgPSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlBc0NvbG9yKGlkKTsKICAgICAg
ICAgaWYgKCFjb2xvciB8fCAhY29sb3ItPmlzVmlzaWJsZSgpIHx8IGNvbG9yLT5pc1NlbWFudGlj
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAppbmRleCA0NTk3YmRlYTVkOTNkN2NkM2FmMTgwMWMzZjU5MjgwZmI5
MzYzOWMzLi41ZDgxYzJmMjU2NzQ1YjY5NTM5OWQ5MjA1Y2U3YWQwYjVmYWY5YTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNjMzLDM0ICsyNjMzLDM0IEBAIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlz
aWJsZVNlbGVjdGlvCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIGFzLXlv
dS10eXBlIGNoZWNraW5nLCBzbyBpZiB0aGF0J3Mgb2ZmIHdlIGRvIG5vdGhpbmcuIE5vdGUgdGhh
dAogICAgIC8vIGdyYW1tYXIgY2hlY2tpbmcgY2FuIG9ubHkgYmUgb24gaWYgc3BlbGwgY2hlY2tp
bmcgaXMgYWxzbyBvbi4KICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgYXV0byBzZWFyY2hSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1hbGl6
ZWRSYW5nZSgpOwogICAgIGlmICghc2VhcmNoUmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gSWYgd2Un
cmUgbm90IGluIGFuIGVkaXRhYmxlIG5vZGUsIGJhaWwuCiAgICAgTm9kZSYgZWRpdGFibGVOb2Rl
ID0gc2VhcmNoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgaWYgKCFlZGl0YWJsZU5vZGUu
aGFzRWRpdGFibGVTdHlsZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVk
Rm9yKCZlZGl0YWJsZU5vZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRoZSBzcGVsbCBjaGVja2VyIGlm
IGl0IGlzIGF2YWlsYWJsZQogICAgIGlmICghY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgVGV4dENo
ZWNraW5nSGVscGVyIGNoZWNrZXIoKmNsaWVudCgpLCAqc2VhcmNoUmFuZ2UpOwogICAgIGlmIChj
aGVja1NwZWxsaW5nKQogICAgICAgICByZXR1cm4gY2hlY2tlci5tYXJrQWxsTWlzc3BlbGxlZFdv
cmRzKCk7CiAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICBjaGVj
a2VyLm1hcmtBbGxVbmdyYW1tYXRpY2FsUGhyYXNlcygpOwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNl
bGVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrU3BlbGxpbmcpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCkBAIC0z
MDk1LDEzICszMDk1LDEzIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewogICAgIGF1dG8gZG9jdW1lbnQg
PSBtX2RvY3VtZW50LmZyYW1lKCktPmRvY3VtZW50QXRQb2ludCh3aW5kb3dQb2ludCk7CiAgICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAg
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24geyBmcmFt
ZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdp
bmRvd1BvaW50KSkgfS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQogCkBAIC0zMTMyLDEyICszMTMy
LDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGJvb2wgaWdub3Jl
LCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFsCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRp
dG9yOjpjb21wb3NpdGlvblJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29tcG9zaXRpb25O
b2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY29tcG9zaXRpb25Ob2RlLT5sZW5ndGgo
KTsKICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKG1fY29tcG9zaXRpb25TdGFydCwgbGVu
Z3RoKTsKICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6OmNsYW1wKG1fY29tcG9zaXRpb25FbmQsIHN0
YXJ0LCBsZW5ndGgpOwogICAgIGlmIChzdGFydCA+PSBlbmQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyB7
ICptX2NvbXBvc2l0aW9uTm9kZSwgc3RhcnQgfSwgeyAqbV9jb21wb3NpdGlvbk5vZGUsIGVuZCB9
IH0gfTsKIH0KIApAQCAtMzUxNiw3ICszNTE2LDcgQEAgc3RhdGljIFNpbXBsZVJhbmdlIGNvbGxh
cHNlSWZSb290c0RpZmZlcihTaW1wbGVSYW5nZSYmIHJhbmdlKQogT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiByZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucykK
IHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFN0YXJ0IGZyb20gYW4g
ZWRnZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlLCBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIHJhbmdl
IHRoYXQncyBub3QgaW4gc2hhZG93IGNvbnRlbnQuIFdoaWNoIGVkZ2UKICAgICAvLyBpcyB1c2Vk
IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBzZWFyY2hpbmcgZm9yd2FyZCBvciBiYWNrd2FyZCwg
YW5kIHdoZXRoZXIgc3RhcnRJblNlbGVjdGlvbiBpcyBzZXQuCkBAIC0zNTU5LDcgKzM1NTksNyBA
QCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbAogICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBhIHN1
Y2Nlc3MgY2FzZSBpbnN0ZWFkLCBzbyB3ZSdsbCBqdXN0IGZhbGwgdGhyb3VnaCBpbiB0aGF0IGNh
c2UuCiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdFJhbmdlLmNvbGxhcHNlZCgpID8gV1RGOjpu
dWxsb3B0IDogbWFrZU9wdGlvbmFsKHJlc3VsdFJhbmdlKTsKKyAgICByZXR1cm4gcmVzdWx0UmFu
Z2UuY29sbGFwc2VkKCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwocmVzdWx0
UmFuZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBpc0ZyYW1lSW5SYW5nZShGcmFtZSYgZnJhbWUsIGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKQEAgLTM5NDksMTAgKzM5NDksMTAgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgpIGNv
bnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2luZ1Jl
c3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAo
IXJlc3VsdC5yYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBjb250ZXh0UmFuZ2UgPSBjb250ZXh0
UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQucmFu
Z2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA3OGYzZWM4YWRiYjEyOWI0Mzkw
NGQ4Y2NjYzhkYzZlNTU4OTljZjNiLi45MmRiNGViYjk5NDQ2ODA4YzJlYmJiYTQ5OGI1NmZhY2Yz
ZjYyZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBlbnVt
IGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewogCiBjbGFzcyBUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRlbXBv
cmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+
ID0gV1RGOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiA9IHsg
fSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKERvY3VtZW50
JiwgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNldDxU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CkBAIC0xNDQsNyArMTQ0LDcgQEAg
cHJpdmF0ZToKIGNsYXNzIElnbm9yZVNlbGVjdGlvbkNoYW5nZUZvclNjb3BlIHsKIHB1YmxpYzoK
ICAgICBJZ25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZShGcmFtZSYgZnJhbWUpCi0gICAgICAg
IDogbV9zZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLmRvY3VtZW50KCksIFdURjo6bnVsbG9wdCwgVGVt
cG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKQorICAgICAgICA6
IG1fc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZS5kb2N1bWVudCgpLCBzdGQ6Om51bGxvcHQsIFRlbXBv
cmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2VsZWN0aW9uQ2hhbmdlcykKICAgICB7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKaW5kZXggNjJhYjE2NWU5
ZmE0ZWFjYzY4ZWFmZDNkMTA2MWZlZWFmNTkzMTdmOS4uZmYyZjIyNjk2MmVlMmIwMDM1NzQxYmY5
M2MyMDE2ZmEwNWY4MDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMu
aApAQCAtNTksMTcgKzU5LDE3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRp
b25hbDxUZXh0TGlzdD4gVGV4dExpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAgT3B0aW9u
YWw8dWludDhfdD4gc3R5bGU7CiAgICAgZGVjb2RlciA+PiBzdHlsZTsKICAgICBpZiAoIXN0eWxl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0ZW1OdW1iZXI7CiAgICAgZGVjb2Rl
ciA+PiBzdGFydGluZ0l0ZW1OdW1iZXI7CiAgICAgaWYgKCFzdGFydGluZ0l0ZW1OdW1iZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJlZDsK
ICAgICBpZiAoIW9yZGVyZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgc3RhdGljX2Nhc3Q8TGlzdFN0
eWxlVHlwZT4oV1RGTW92ZSgqc3R5bGUpKSwgV1RGTW92ZSgqc3RhcnRpbmdJdGVtTnVtYmVyKSwg
V1RGTW92ZSgqb3JkZXJlZCkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGFkMzIyMjc0YWMxMjhhMTIyYzJkMzE0ZmM3MDkxMTc1MTU2MWJiOWIu
LjI0ZGU4ZDdkMGFiMDJmZjBmZGE1NzdmMTg4NmJiNTk2YTk2NjY0YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShjb25z
dCBWaXNpYmxlU2VsZWN0aW8KIAogICAgIC8vIEFsd2F5cyBjbGVhciB0aGUgeCBwb3NpdGlvbiB1
c2VkIGZvciB2ZXJ0aWNhbCBhcnJvdyBuYXZpZ2F0aW9uLgogICAgIC8vIEl0IHdpbGwgYmUgcmVz
dG9yZWQgYnkgdGhlIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24gY29kZSBpZiBuZWNlc3Nhcnku
Ci0gICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAg
c2VsZWN0RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKTsKICAgICBtX2RvY3Vt
ZW50LT5lZGl0b3IoKS5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwgb3B0
aW9ucyk7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3NlbGVjdGlvbi1hcGkvI3NlbGVj
dGlvbmNoYW5nZS1ldmVudApAQCAtMjUyNywxMiArMjUyNywxMiBAQCBPcHRpb25hbDxTaW1wbGVS
YW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVjdGlv
bigpIGNvbgogewogICAgIGF1dG8gZWxlbWVudCA9IGRlcHJlY2F0ZWRFbmNsb3NpbmdCbG9ja0Zs
b3dFbGVtZW50KG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkuZGVw
cmVjYXRlZE5vZGUoKSk7CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFydCA9
IFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oZWxlbWVudCwgMCkp
OwogICAgIGF1dG8gZW5kID0gVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3Np
dGlvbihlbGVtZW50LCBlbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKSkpOwogICAgIGlmIChzdGFy
dC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNlbGVjdGlvbiA9IG1f
c2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRCYXNlKHN0YXJ0KTsKQEAgLTI3NTEsNyArMjc1
MSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgpIGNv
bnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRlcmlu
Z0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkgY29u
c3QKIHsKICAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWFtb3Vu
dCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXggMTQ4OTNmMWY0OWRhNGVkOTY0
ZTBhYzM2Y2ZmNDYxYmVlZjE0YzE1Ny4uNTkxMDVkOTM3ZTQ2OWYyZWRhMTkyZWIwYWNjYTgyNjhh
MmMzZTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAtNDgs
NyArNDgsNyBAQCBTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3QoY29uc3QgU2lt
cGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0IFNpbQogICAgICwgbV9hdXRvbWF0aWNSZXBs
YWNlbWVudFJhbmdlKGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpCiAgICAgLCBtX3BhcmFncmFw
aFJhbmdlKHBhcmFncmFwaFJhbmdlKQogICAgICwgbV9yb290RWRpdGFibGVFbGVtZW50KG1fY2hl
Y2tpbmdSYW5nZS5zdGFydC5jb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAgICAs
IG1fcmVxdWVzdERhdGEoV1RGOjpudWxsb3B0LCB0ZXh0LCBvcHRpb25zLCB0eXBlKQorICAgICwg
bV9yZXF1ZXN0RGF0YShzdGQ6Om51bGxvcHQsIHRleHQsIG9wdGlvbnMsIHR5cGUpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCA5
MjE2YzU4YWIwM2E0ZDkzZDU4Y2Y5MmRkODQwNjA5NWI3ZTNjNzEwLi44ZjcxNWY0ZjEwOGE2N2Y1
NDYzYTM2YzZmYjE5MmIxZjVhZjkxZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVlcygpCiAgICAgbV9jaGVj
a2luZ1N0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0LnJlc2V0
KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgpOwotICAgIG1fb2Zm
c2V0QXNSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX29mZnNldEFzUmFuZ2UgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDE5MWI0
ZGM4ZDgwY2I4OWRlYTVhODBhMDk3ZWZjMTQwYjAwNGFjYy4uZDA2MzBlMzJkYzkwZTQ3Y2U2YzQ0
NmNiMDY2NGU4MTkxMmQ0YmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUudHlwZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiBwcml2YXRlOgpAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWR2YW5jZSgpCiAgICAgewotICAgICAgICBtX3RleHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fdGV4dCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZU5vZGUoKTsKIAogICAgICAg
ICBpZiAoc2hvdWxkQWR2YW5jZUl0ZXJhdG9yUGFzdEN1cnJlbnROb2RlKCkpCkBAIC0yOTEsNyAr
MjkxLDcgQEAgc3RhdGljIGJvb2wgYXJlRXF1YWxJZ25vcmluZ0xlYWRpbmdBbmRUcmFpbGluZ1do
aXRlc3BhY2VzKGNvbnN0IFN0cmluZyYgY29udGVudCwKIHN0YXRpYyBPcHRpb25hbDxUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiB0b2tlbkluZm8oTm9k
ZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvIHJlc3VsdDsKICAgICByZXN1bHQuZG9jdW1l
bnRVUkwgPSBub2RlLT5kb2N1bWVudCgpLnVybCgpOwpAQCAtNzgxLDcgKzc4MSw3IEBAIGF1dG8g
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRl
bURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50
PigqZWxlbWVudCkuc2V0VmFsdWUobmV3VmFsdWUudG9TdHJpbmcoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShpdGVtLmF0dHJpYnV0ZU5hbWUsIG5l
d1ZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHNpemVfdCBjdXJyZW50VG9rZW5J
bmRleCA9IDA7CkBAIC05MjgsNyArOTI4LDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QKICAg
ICAgICAgICAgIG1fbWFuaXB1bGF0ZWROb2Rlcy5hZGQoaW5zZXJ0aW9uLmNoaWxkLmdldCgpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU5vZGUoTm9k
ZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuaAppbmRleCA3YzBiNmRjODZlZjczZjE2M2I3ZGY2MTVlYjJlMThkODNmYWZl
YTk2Li4xYmMwMTgxYmFmYjRlZTRmYTJiZTcxZTU4YzVlNGQyZWZlM2Q3ZGJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCkBA
IC0yMTMsMTYgKzIxMywxNiBAQCBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBUZXh0TWFuaXB1bGF0aW9uQ29udAogewogICAgIE1hbmlw
dWxhdGlvblRva2VuSW5mbyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
dGFnTmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yb2xlQXR0cmli
dXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRvY3VtZW50VVJMKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzVmlzaWJsZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjM4LDEzICsyMzgsMTMgQEAgT3B0aW9uYWw8VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGwKIHsKICAgICBNYW5pcHVsYXRpb25Ub2tlbiByZXN1bHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuY29udGVudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5m
bykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNFeGNsdWRlZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU5LDkgKzI1OSw5IEBAIE9wdGlvbmFsPFRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtPiBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlCiB7CiAgICAgTWFuaXB1bGF0aW9uSXRlbSByZXN1bHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQudG9rZW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNzYsOSAr
Mjc2LDkgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1
bGU+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjoKIHsKICAgICBFeGNsdXNpb25SdWxlIHJl
c3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ydWxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0yOTMsNyArMjkzLDcgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1bGF0aW8KIHsKICAgICBFbGVt
ZW50UnVsZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubG9jYWxOYW1l
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDgsOSArMzA4LDkgQEAgT3B0aW9u
YWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0ZVJ1
bGU+IFRleHRNYW5pcHVsYXQKIHsKICAgICBBdHRyaWJ1dGVSdWxlIHJlc3VsdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzI1LDcgKzMy
NSw3IEBAIE9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxl
OjpDbGFzc1J1bGU+IFRleHRNYW5pcHVsYXRpb25DCiB7CiAgICAgQ2xhc3NSdWxlIHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05hbWUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTM0MCwxMSArMzQwLDExIEBAIE9wdGlvbmFsPFRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlPiBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvCiB7CiAgICAgTWFuaXB1bGF0aW9uRmFpbHVyZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCmluZGV4IGY5YThlMWQ4YjIyNzk3NDRlZTJkMmE1NTk1OGUyMDU0MjQ0
YzgxZmYuLjMxNzY0ZGU2ZmFhYTRkZWIyOTQwNjA2ZTFkZDM4ZWI5YjQ5NDlhNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2Miw3
IEBAIFJlZlB0cjxEb2N1bWVudD4gVmlzaWJsZVNlbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAog
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBjb25z
dAogewogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6IFNlZW1z
IGxpa2VseSB3ZSBkb24ndCBuZWVkIHRvIGNhbGwgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50IGhl
cmUuCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0LnBhcmVudEFuY2hvcmVkRXF1
aXZhbGVudCgpLCBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9CkBAIC0xNzAs
NyArMTcwLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OmZpcnN0
UmFuZ2UoKSBjb25zdAogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OnRv
Tm9ybWFsaXplZFJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAoaXNOb25lT3JPcnBoYW5lZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gdXBkYXRlZCBsYXlvdXQgc2luY2UgdGhp
cyBmdW5jdGlvbiBpcyBjYWxsZWQKICAgICAvLyBpbiB0aGUgY291cnNlIG9mIHJ1bm5pbmcgZWRp
dCBjb21tYW5kcyB3aGljaCBtb2RpZnkgdGhlIERPTS4KQEAgLTE4MCw3ICsxODAsNyBAQCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9Ob3JtYWxpemVkUmFuZ2UoKSBj
b25zdAogCiAgICAgLy8gQ2hlY2sgYWdhaW4sIGJlY2F1c2UgdXBkYXRpbmcgbGF5b3V0IGNhbiBj
bGVhciB0aGUgc2VsZWN0aW9uLgogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBQb3NpdGlvbiBzLCBlOwogICAgIGlmIChpc0NhcmV0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0MWFjNGM0ZTRiM2Y5ODVjMjk1YjNlODY2NDM1ZTE0
ZGNiY2Y2ZTYwLi5iYzk5ZmQ1OTFmYWQwZmE1MTE2NmNhNWUzYmE0YzlkYTE1ODRmZGRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0xNzQyLDcgKzE3NDIsNyBA
QCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdnAsCiB7CiAgICAgLy8gVGhpcyBpcyBwYXJ0aWN1bGFybHkg
aW5lZmZpY2llbnQuICBXZSBjb3VsZCBlYXNpbHkgb2J0YWluIHRoZSBhbnN3ZXIgd2l0aCB0aGUg
Ym91bmRhcmllcyBjb21wdXRlZCBiZWxvdy4KICAgICBpZiAoIXdpdGhpblRleHRVbml0T2ZHcmFu
dWxhcml0eSh2cCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWaXNpYmxlUG9z
aXRpb24gcHJldkJvdW5kYXJ5OwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnk7CkBA
IC0xNzk0LDE0ICsxNzk0LDE0IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbmNsb3NpbmdUZXh0
VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwKIAogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBpZiAocHJldkJvdW5kYXJ5LmlzTnVsbCgpIHx8IG5leHRCb3VuZGFyeS5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICh2cCA8IHByZXZCb3VuZGFyeSB8fCB2cCA+IG5leHRCb3VuZGFy
eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UocHJldkJvdW5kYXJ5LCBuZXh0Qm91
bmRhcnkpOwogfQpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBjaGFyYWN0ZXJzQXJvdW5kUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgVUNoYXIzMiYgb25lQWZ0ZXIK
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoYXV0byByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3Np
dGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVjdGlv
bjo6QmFja3dhcmQpKQogICAgICAgICByZXR1cm4gcmFuZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcAppbmRleCA0NjZlYWQyYWU3NDNh
YzlkODlkMzhjNGEwN2RiMDBkNTlkZWI4NzRkLi4wYTgwMjhiZWRmOGI5Y2EzNWM4NzExZjI4MGVi
YjgyMDUxMzZjMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1
dG9maWxsRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQXV0
b2ZpbGxFbGVtZW50cy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQXV0b2ZpbGxFbGVtZW50czo6QXV0
b2ZpbGxFbGVtZW50cyhSZWZQdHI8SFRNTElucHV0RWxlbWVudD4mJiB1c2VybmFtZSwgUmVmUHRy
PEgKIE9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVB
dXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRFbGVtZW50PiBzdGFydCkKIHsKICAgICBpZiAo
IXN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBGb2N1c0NvbnRyb2xsZXImIGZvY3Vz
Q29udHJvbGxlciA9IHN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCk7
CiAgICAgaWYgKHN0YXJ0LT5pc1Bhc3N3b3JkRmllbGQoKSkgewogICAgICAgICBhdXRvIHByZXZp
b3VzRWxlbWVudCA9IHByZXZpb3VzQXV0b2ZpbGxhYmxlRWxlbWVudChzdGFydC5wdHIoKSwgZm9j
dXNDb250cm9sbGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBPcHRpb25hbDxBdXRvZmlsbEVsZW1l
bnRzPiBBdXRvZmlsbEVsZW1lbnRzOjpjb21wdXRlQXV0b2ZpbGxFbGVtZW50cyhSZWY8SFRNTElu
cAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEF1dG9maWxsRWxlbWVudHM6OmF1dG9maWxsKFN0
cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDIxZTc0NGM4Yzk3OTMxNGI1YjM0YjFhOGRj
Yzk2NTI4MGU5NDI3MjcuLjUwZTQ2Yzk1ZjJhOTI2MjQ2MzQ3ZWU5ODk3ZDYxNWRhYTliNTAzMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAg
LTIwMywxMiArMjAzLDEyIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6Y2FuUHJlc2VudERhdGFEZXRl
Y3RvcnNVSUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIGF1dG8gcmVzdWx0SW5k
aWNlcyA9IFN0cmluZ1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5zcGxpdCgnLycpOwogICAgIGF1
dG8gaW5kZXhJdGVyYXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4oKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IFtyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmluZGV4
SXRlcmF0b3IpLnZhbHVlT3IoMCldIGNvcmVSZXN1bHRdOworICAgIGF1dG8gcmVzdWx0ID0gW3Jl
c3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5kZXhJdGVyYXRv
cikudmFsdWVfb3IoMCldIGNvcmVSZXN1bHRdOwogCiAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIG9m
IGEgc2lnbmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRvIGZvbGxvdyB0aGUgcGF0aCBkb3du
IG9uZSBvciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCiAgICAgd2hpbGUgKCsraW5kZXhJdGVyYXRv
ciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKSB7CiAgICAgICAgIHJlc3VsdHMgPSAoX19icmlkZ2Ug
TlNBcnJheSAqKVBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRTdWJS
ZXN1bHRzKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IChfX2JyaWRnZSBERFJlc3VsdFJlZily
ZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmluZGV4SXRlcmF0
b3IpLnZhbHVlT3IoMCldOworICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgRERSZXN1bHRSZWYp
cmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCppbmRleEl0ZXJh
dG9yKS52YWx1ZV9vcigwKV07CiAgICAgfQogCiAgICAgcmV0dXJuIFBBTDo6c29mdExpbmtfRGF0
YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlhdGVseVNob3dBY3Rpb25TaGVldEZvclJlc3Vs
dChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0
aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5
TG9va3VwLm1tCmluZGV4IGE0MGUwZmQ1YTM0NzRiNzQzN2QzZDk4ZjdkN2M2MTQzM2I5ODk4YmQu
LjUwNjJiY2I4ODI1NmJlZWZmOTc2OTUxM2FlNmJjMDJiODliZGUwMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTI2Nyw3ICsy
NjcsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogCiAgICAgaWYgKCFjYW5DcmVhdGVSZXZlYWxJdGVtcygpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
U2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50LCB3ZSBqdXN0IG5lZWQgdG8g
Z3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gc2Vs
ZWN0aW9uLnZpc2libGVTdGFydCgpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIE9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VGb3JTZWxlCiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgoc2Vs
ZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gcGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgoc2Vs
ZWN0aW9uRW5kKTsKICAgICBpZiAocGFyYWdyYXBoU3RhcnQuaXNOdWxsKCkgfHwgcGFyYWdyYXBo
RW5kLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsZW5ndGhUb1NlbGVjdGlvblN0YXJ0ID0gY2hh
cmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9uU3Rh
cnQpKTsKICAgICBhdXRvIHNlbGVjdGlvbkNoYXJhY3RlckNvdW50ID0gY2hhcmFjdGVyQ291bnQo
Km1ha2VTaW1wbGVSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSk7CkBAIC0yOTEs
NyArMjkxLDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5
ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9u
YXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQpAQCAtMjk5LDIwICsyOTksMjAgQEAgT3B0aW9uYWw8
c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3Vw
OjpyYW5nZUF0SGl0VGUKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICBpZiAoIWNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYXV0byogbm9kZSA9
IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFu
b2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIERvbid0IGRvIGFueXRoaW5n
IGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciBhdCB0aGUgcG9pbnQuCiAgICAgYXV0byBmcmFtZVBv
aW50ID0gaGl0VGVzdFJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZS0+cmFuZ2VGb3JQb2ludChmcmFtZVBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcG9z
aXRpb24gPSBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVQb2ludCk7CiAgICAg
aWYgKHBvc2l0aW9uLmlzTnVsbCgpKQpAQCAtMzMwLDcgKzMzMCw3IEBAIE9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VBdEhpdFRlCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2UgdGhl
IHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4KICAgICAgICAgZnVsbENoYXJhY3RlclJh
bmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQpLCBl
bmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAgICAgICAgaWYgKCFmdWxsQ2hhcmFjdGVy
UmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzZWxlY3Rpb25SYW5nZSA9IE5TTWFrZVJhbmdl
KGNoYXJhY3RlckNvdW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFy
dCwgc2VsZWN0aW9uU3RhcnQpKSwKICAgICAgICAgICAgIGNoYXJhY3RlckNvdW50KCptYWtlU2lt
cGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkpKTsKQEAgLTM0Myw3ICszNDMs
NyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERp
Y3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogICAgICAgICAvLyBBcyBjb250ZXh0LCB3ZSBh
cmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRlciB0
aGUgcG9pbnQuCiAgICAgICAgIGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IHJhbmdlRXhwYW5kZWRBcm91
bmRQb3NpdGlvbkJ5Q2hhcmFjdGVycyhwb3NpdGlvbiwgMjUwKTsKICAgICAgICAgaWYgKCFmdWxs
Q2hhcmFjdGVyUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzZWxlY3Rpb25SYW5nZSA9IE5T
TWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogICAgICAgICBoaXRJbmRleCA9IGNoYXJhY3RlckNv
dW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydCwgcG9zaXRpb24p
KTsKQEAgLTM1NSwxMyArMzU1LDEzIEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2Us
IE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgYXV0
byBoaWdobGlnaHRSYW5nZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NSVkl0ZW1JbnN0YW5jZSgpIGlu
aXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV0pLmdldCgp
LmhpZ2hsaWdodFJhbmdlOwogCiAgICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4g
eyB7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGlnaHRS
YW5nZSksIG5pbCB9IH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKIH0KIApAQCAtNTIzLDEyICs1MjMsMTIgQEAgV0tSZXZlYWxDb250cm9sbGVyIERpY3Rpb25h
cnlMb29rdXA6OmFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChjb25zdCBEaWN0aW9uYXIKIAog
T3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikKIHsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlv
bmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpCiB7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0
dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQppbmRleCBkYTAyY2IyYzRjZWZmODNhZDQ1NWZmYjJk
ZWJjNjYyOTk0YTdlNzZmLi5kNDMxZjcyMmUyNGFhYjNiZDE3NzI4YjQzNThiNzg2OThiNzg2ZjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVD
aGFuZ2VzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0
cmlidXRlQ2hhbmdlc0NvY29hLm1tCkBAIC00Niw4ICs0Niw4IEBAIGNvbnN0IFN0cmluZyYgRm9u
dENoYW5nZXM6OnBsYXRmb3JtRm9udEZhbWlseU5hbWVGb3JDU1MoKSBjb25zdAogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gZm9udE5hbWVGcm9tRGVzY3JpcHRpb247CiAKICAgICBGb250RGVz
Y3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFs
aWMudmFsdWVPcihmYWxzZSkpOwotICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0
aW9uVmFsdWUgeyBtX2JvbGQudmFsdWVPcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7CisgICAgZGVz
Y3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFsaWMudmFsdWVfb3IoZmFsc2UpKTsKKyAgICBkZXNj
cmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlIHsgbV9ib2xkLnZhbHVlX29yKGZh
bHNlKSA/IDkwMCA6IDUwMCB9KTsKICAgICBpZiAoYXV0byBmb250ID0gRm9udENhY2hlOjpzaW5n
bGV0b24oKS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBtX2ZvbnRGYW1pbHkpKQogICAgICAg
ICBmb250TmFtZUZyb21EZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ1RGb250Q29weVBvc3RTY3JpcHRO
YW1lKGZvbnQtPmdldENURm9udCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDVmNWI3NDgwZDU4M2Q4ZDk5NWZkYjViMjVmZDBj
NjAzNjRmZTU3Li42YmZkZjkwNTE3YTU2OTJiOWJhMDYyNDIzMDlmOTgzMGE2OGJhZjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC05Nzks
NyArOTc5LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJpYnV0
ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIH0KIAogICAgICAgICBTdHJp
bmcgZm9udFdlaWdodCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENT
U1Byb3BlcnR5Rm9udFN0eWxlKTsKLSAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0aCgi
Ym9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9udFdlaWdo
dCkudmFsdWVPcigwKSA+PSA3MDApIHsKKyAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0
aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9udFdl
aWdodCkudmFsdWVfb3IoMCkgPj0gNzAwKSB7CiAgICAgICAgICAgICAvLyA/Pz8gaGFuZGxlIHdl
aWdodCBwcm9wZXJseSB1c2luZyBOU0ZvbnRNYW5hZ2VyCiAgICAgICAgICAgICBQbGF0Zm9ybUZv
bnQgKm9yaWdpbmFsRm9udCA9IGZvbnQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggZGEyOTc5N2I5NTkwODI3MmNmZTU1MzA0ZWE4Y2I4N2E4YjEwMTEyMS4uNjk5YzQ2
ZWMzMThkNDM1NzMwY2E3NDY1NGZhMmIyZTRlMTAwZjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQzMCwx
NSArNDMwLDE1IEBAIHN0YXRpYyBPcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0TWFy
a3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwKIHsKICAgICBhdXRvIGFyY2hpdmUg
PSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFhcmNo
aXZlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0gYXJj
aGl2ZS0+bWFpblJlc291cmNlKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2UpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHR5cGUgPSBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFjYW5TaG93TUlN
RVR5cGVBc0hUTUwodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7IFN0
cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2ZS5y
ZWxlYXNlTm9uTnVsbCgpIH07CiB9CkBAIC03MjgsNyArNzI4LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVGb3JE
aXNwbGF5OwogICAgIGlmICghaXNEaXJlY3RvcnkpCi0gICAgICAgIGZpbGVTaXplRm9yRGlzcGxh
eSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgICAgIGZpbGVT
aXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwog
CiAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2ht
ZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBwYXRoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3ku
bW0KaW5kZXggOGIxMjA4NTMxNmU2ZTBjNDU2YWNjMDEzMDA1OTY3NGZjNDViZjJlZi4uMTYyM2U5
OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBhZDVlMTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC03Niw3ICs3
Niw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiB7CiAgICAgYXV0byBzZWxlY3RlZFJhbmdl
ID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxlY3RlZFJhbmdl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50LCB3
ZSBqdXN0IG5lZWQgdG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KICAgICBhdXRvIHNlbGVj
dGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwpAQCAtODUsNyArODUsNyBAQCBP
cHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25h
cnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0
byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4KICAgICBhdXRvIHBhcmFn
cmFwaFJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3Rh
cnQpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAgICBpZiAoIXBhcmFncmFwaFJh
bmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9ICptYWtlU2ltcGxlUmFuZ2Uoc2Vs
ZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBPcHRpb25h
bDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29r
dXA6OnJhbmdlQXRIaXRUZQogewogICAgIGF1dG8qIG5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8qIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBpcyBubyBjaGFy
YWN0ZXIgYXQgdGhlIHBvaW50LgogICAgIGF1dG8gZnJhbWVQb2ludCA9IGhpdFRlc3RSZXN1bHQu
cm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnJhbmdlRm9y
UG9pbnQoZnJhbWVQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvc2l0aW9uID0gZnJhbWUtPnZpc2li
bGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpOwogICAgIGlmIChwb3NpdGlvbi5pc051bGwo
KSkKQEAgLTEyNiwxMSArMTI2LDExIEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2Us
IE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgLy8g
QXMgY29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0IGJl
Zm9yZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgogICAgIGF1dG8gZnVsbENoYXJhY3RlclJhbmdlID0g
cmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBvc2l0aW9uLCAyNTApOwog
ICAgIGlmICghZnVsbENoYXJhY3RlclJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByYW5nZVRvUG9zaXRp
b24gPSBtYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydCwgcG9zaXRpb24p
OwogICAgIGlmICghcmFuZ2VUb1Bvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTlNSYW5nZSByYW5nZVRvUGFz
cyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KCpyYW5nZVRvUG9zaXRpb24pLCAwKTsKICAg
ICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7CkBAIC0xMzksNyArMTM5LDcgQEAgT3B0aW9u
YWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9v
a3VwOjpyYW5nZUF0SGl0VGUKICAgICAvLyB0b2tlblJhbmdlIHNvbWV0aW1lcyByZXR1cm5zIHtO
U05vdEZvdW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIGdvb2Qgc3RyaW5n
LgogICAgIC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayBmb3Ig
emVybyBsZW5ndGggaGVyZS4KICAgICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgZXh0cmFjdGVkUmFuZ2Up
LCBvcHRpb25zIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IGZmYTMyN2U5ZWVj
ZTU1ZGU1N2YyNDRjZThiNWFhMmZlZWQ4YjY0ZGEuLjI4ZWRiNjE0ODYzMDQ3MTA0NzQzMTI1MWU3
NThiODQwZmRiMmY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNTUsNyArNTUsNyBA
QCB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgV1RGOjpGdW5jdGlvbjxib29sKAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRl
UGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiBlbnVtIGNsYXNzIE1TT0xpc3RRdWlya3Mg
OiBib29sIHsgQ2hlY2tJZk5lZWRlZCwgRGlzYWJsZWQgfTsKLVN0cmluZyBzYW5pdGl6ZU1hcmt1
cChjb25zdCBTdHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQs
IE9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVu
dFNhbml0aXplciA9IFdURjo6bnVsbG9wdCk7CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3Qg
U3RyaW5nJiwgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBPcHRpb25h
bDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6
ZXIgPSBzdGQ6Om51bGxvcHQpOwogU3RyaW5nIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5E
b2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9jdW1lbnQmLCBNU09MaXN0UXVpcmtz
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWFya3VwKTsKIAogV0VCQ09SRV9FWFBPUlQgUmVmPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxlUmFuZ2Um
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2JMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRl
ci5oCmluZGV4IGJmNzMxYzFmOWI1NjJkZDI3ZWM0OWJjMGM3Njg1Y2ZhZTg1NDUwZjYuLmE0Mjg3
Y2RkOTNkNzljZWVlYzE4YTMyZDcxNzc3YWMyMTJmNjNjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYkxvYWRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxldGlvbkhhbmRsZXI7IH0KICAg
ICBTdHJpbmcgc3RyaW5nUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgPyBtX2xvYWRl
ci0+c3RyaW5nUmVzdWx0KCkgOiBTdHJpbmcoKTsgfQogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVm
ZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2Fk
ZXItPmFycmF5QnVmZmVyUmVzdWx0KCkgOiBudWxscHRyOyB9Ci0gICAgT3B0aW9uYWw8RXhjZXB0
aW9uQ29kZT4gZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgPyBtX2xvYWRlci0+
ZXJyb3JDb2RlKCkgOiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxFeGNlcHRpb25Db2Rl
PiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5lcnJvckNv
ZGUoKSA6IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkU3RhcnRMb2Fk
aW5nKCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA5ZWQyZGU2NTA1MGQw
NjhkMGVjYjk5NDY4YmZkYWQ0MzQwMzA1MDhmLi40NzNjMDMxOTkwZTE3Y2I3Y2VlYjViM2MzYWVh
YjdiNTEyODMzODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
RmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHIKIEZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRzLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcpCiAg
ICAgOiBCbG9iKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5QmFn
KQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQotICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJp
ZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQorICAgICwgbV9sYXN0TW9kaWZpZWREYXRl
T3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlX29yKFdhbGxUaW1lOjpub3co
KS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaAppbmRleCAwMWJjODJjYTE4ZDJkNDgwOTE4ODFmYTJiMTBkZTZhOTVhNGMxNzMxLi45
Zjc4MDBhZTU0MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWxlOwogICAg
IH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGludDY0
X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxGaWxlPiBk
ZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IHN0ZDo6bnVs
bG9wdCkKICAgICB7CiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZShkZXNl
cmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250ZXh0LCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5hbWUs
IGxhc3RNb2RpZmllZCkpOwogICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDE0YzhiZDUyMWI2N2IwZTI4ODNiNTgw
ODgwOGU1MWFkY2M0ZjQ0NjIuLjA5YjJhMDM4YmExMmRlOWFjYWU5NGY2N2NhMTdiMjc1ZTE0YWVj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtMjI0LDE2ICsyMjQs
MTYgQEAgdm9pZCBGaWxlUmVhZGVyOjpmaXJlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkK
IE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiBGaWxl
UmVhZGVyOjpyZXN1bHQoKSBjb25zdAogewogICAgIGlmICghbV9sb2FkZXIgfHwgbV9lcnJvciB8
fCBtX3N0YXRlICE9IERPTkUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1fcmVhZFR5cGUgPT0gRmlsZVJlYWRlckxv
YWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2xvYWRl
ci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07CiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBt
X2xvYWRlci0+c3RyaW5nUmVzdWx0KCk7CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAppbmRleCBmYTRlODY2Y2FmZWUy
ODk5MjQ3NDM4OGRlYjFjNjBkOGJiNjQ3MDQwLi45YzcyNjBjNDIyNjBhNGI1Y2QxYzcxZWFhOWEy
YmFlYTgwOGZjNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtODMsMTYgKzgzLDE2IEBAIE9wdGlvbmFsPEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI+IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmRlY29kZShEZWNv
ZGVyJiBkCiAgICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50aWZp
ZXJUeXBlPj4gaXRlbUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpdGVtSWRlbnRpZmllcjsK
ICAgICBpZiAoIWl0ZW1JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciByZXN1bHQgPSB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RGTW92ZSgqaXRl
bUlkZW50aWZpZXIpIH07CiAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlLmNwcAppbmRleCA4YzBlMWY1MzBmZDA1NzM3MjAwYmFjYjU5ODBiZDY1NzgyYTgy
MDMwLi4wYWE4M2I5MzdmZGJkMjljZTVhYTc4OTg3NmUxOTIwYWRiZTVmZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01NDQs
NyArNTQ0LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldHVwRGF0ZVRpbWVD
aG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXIKICAgICBwYXJhbWV0ZXJzLmlzQW5j
aG9yRWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OlJUTDsKICAgICBwYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlID0gZG9jdW1lbnQudXNl
RGFya0FwcGVhcmFuY2UoY29tcHV0ZWRTdHlsZSk7CiAKLSAgICBhdXRvIGRhdGUgPSBwYXJzZVRv
RGF0ZUNvbXBvbmVudHMoZWxlbWVudC52YWx1ZSgpKS52YWx1ZU9yKERhdGVDb21wb25lbnRzKCkp
OworICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhlbGVtZW50LnZhbHVlKCkp
LnZhbHVlX29yKERhdGVDb21wb25lbnRzKCkpOwogICAgIHBhcmFtZXRlcnMuaGFzU2Vjb25kRmll
bGQgPSBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSk7CiAgICAgcGFyYW1ldGVycy5oYXNNaWxs
aXNlY29uZEZpZWxkID0gc2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQoZGF0ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMzM3OWI4YmNjMmFlNWZkMmNlMmJl
OTViZDNjZTMyZDY4OWM5OTU2OS4uMzJjM2I0NGZhYzA1NTE4MGJiNDU0MDBmNjBiNjc5OTczMDE1
OTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQog
c3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUoU3Ry
aW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3Ioc3RyaW5nKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4geyB7IHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMV0sIHN0cmluZ1syXSks
IHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbM10sIHN0cmluZ1s0XSksIHRvQVNDSUlIZXhWYWx1ZShz
dHJpbmdbNV0sIHN0cmluZ1s2XSkgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwCmluZGV4IDg0Zjc5MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5ZmNlNDdiYTE4MzQuLjY4MDJh
MTVmZTY4ZjBlYThlNTk4ODZkZTFkNjEwYzg4OTM5ZDc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
Rm9ybURhdGEuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGF1dG8gRE9NRm9ybURhdGE6OmdldChjb25z
dCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlvbmFsPEZvcm1EYXRhRW50cnlWYWx1ZT4KICAgICAgICAg
ICAgIHJldHVybiBpdGVtLmRhdGE7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBhdXRvIERPTUZvcm1EYXRhOjpnZXRBbGwo
Y29uc3QgU3RyaW5nJiBuYW1lKSAtPiBWZWN0b3I8Rm9ybURhdGFFbnRyeVZhbHVlPgpAQCAtMTU5
LDcgKzE1OSw3IEBAIE9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJpbmcsIERPTUZvcm1EYXRhOjpG
b3JtRGF0YUVudHJ5VmFsdWU+PiBET01Gb3JtRGF0YTo6SXRlCiB7CiAgICAgYXV0byYgaXRlbXMg
PSBtX3RhcmdldC0+aXRlbXMoKTsKICAgICBpZiAobV9pbmRleCA+PSBpdGVtcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvJiBpdGVtID0gaXRlbXNbbV9pbmRleCsrXTsKICAgICByZXR1cm4gbWFrZUtl
eVZhbHVlUGFpcihpdGVtLm5hbWUsIGl0ZW0uZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2Vu
TGlzdC5jcHAKaW5kZXggN2FmMjBhM2Y0YmE5NmMyOGExOTA2ZTUwOTJjYjhiOTFkYTRjNjg0Yi4u
OWE0MTBjNzBlNGMwN2UzYjQzNWE3MGY4ZjFjODBlNjM2MWVmY2JmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEV4Y2VwdGlvbk9yPGJvb2w+
IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuLCBPcHRpb25hbDxi
b29sPiBmCiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAodG9r
ZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFsc2Up
KSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICB0
b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRlZEF0
dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAppbmRl
eCBlYzg2ZjcwNDg0Y2UzZTRkZTg1MDZmYTdjNjExMzE1NzFlMTRhNjRlLi40ZDZkMDJjZmRmM2Yx
MjQwZGQzYzg2N2NiOWM0OWZhNWRjZWY5YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCkBAIC02MCwxMiArNjAsMTIgQEAg
T3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uPiBEYXRhTGlzdFN1Z2dlc3Rpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsdWU7CiAgICAgZGVjb2Rl
ciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBs
YWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4ge3sgKnZhbHVlLCAqbGFiZWwgfX07CiB9CkBAIC05MiwxNyArOTIsMTcgQEAgT3B0aW9u
YWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbkluZm9y
bWF0aW9uOjpkZWNvZGUoRGUKIHsKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlw
ZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2YXRpb25UeXBl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdnZXN0
aW9uczsKICAgICBkZWNvZGVyID4+IHN1Z2dlc3Rpb25zOwogICAgIGlmICghc3VnZ2VzdGlvbnMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxJbnRSZWN0PiBlbGVtZW50UmVjdDsKICAgICBkZWNvZGVyID4+
IGVsZW1lbnRSZWN0OwogICAgIGlmICghZWxlbWVudFJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
YWN0aXZhdGlvblR5cGUsICpzdWdnZXN0aW9ucywgKmVsZW1lbnRSZWN0IH19OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaAppbmRleCBmYTlhNTQ4MDM4OTcyOGEw
ZTg0MWI1M2M5OGFjZDhiN2RhYzI0MDc5Li5jNWEzMTA0NmU0ZmZmNGMwYWVhYTA2MWZkMjNiZDFi
NzliNmM1NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRz
U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaApA
QCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSB7CiAgICAgaW5saW5l
IE9wdGlvbmFsPHVuc2lnbmVkPiBob3VyMjMoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFo
b3VyIHx8ICFtZXJpZGllbSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gKCpob3VyICUgMTIp
ICsgKCptZXJpZGllbSA9PSBEYXRlVGltZUZpZWxkc1N0YXRlOjpNZXJpZGllbTo6UE0gPyAxMiA6
IDApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCA3
YWVkNjExOTY0ZGIzN2YwNTAzMWQzNWVhZWE4OTkwNTU2MzYyMWU1Li40NGY3ODRiN2ExMjUwYmVk
NzU3Yjk4ODM0NGU1M2I1OTg0MTQ0M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXJpYWxpemVG
b3JtQ29udHJvbFN0YXRlVG8oY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgZm9ybUNvbnRyCiBzdGF0
aWMgaW5saW5lIE9wdGlvbmFsPEZvcm1Db250cm9sU3RhdGU+IGRlc2VyaWFsaXplRm9ybUNvbnRy
b2xTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5kZXgp
CiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazxzaXplX3Q+KHN0YXRlVmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGF1dG8gc2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oc3RhdGVWZWN0b3JbaW5kZXgrK10pLnZhbHVlX29yKDAp
OwogICAgIGlmIChpbmRleCArIHNpemUgPiBzdGF0ZVZlY3Rvci5zaXplKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgVmVj
dG9yPFN0cmluZz4gc3VidmVjdG9yOwogICAgIHN1YnZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3JtU3Rh
dGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiB7CiAgICAgaWYgKGluZGV4ID49
IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBp
dGVtQ291bnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KHN0YXRl
VmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOworICAgIGF1dG8gaXRlbUNvdW50ID0gcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PihzdGF0ZVZlY3RvcltpbmRleCsrXSku
dmFsdWVfb3IoMCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRlPigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCA3NzdjNGU3
ZjViZThiNDRmNTJmMGQ0Mzg4OGFjNjI0NDRhOTdkMTFiLi5jYzY1ZWFjOGJiMjViYTkxMWQ5Mzc1
MmNiOTMxZDE3NTdjNjhmYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0
aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgSFRNTEFsbENvbGxlY3Rpb246OkhUTUxB
bGxDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdAogT3B0aW9u
YWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3RyaW5n
JiBuYW1lT3JJbmRleCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoYXV0byBpbmRleCA9IEpTQzo6cGFyc2VJbmRleCgqbmFtZU9ySW5kZXguaW1w
bCgpKSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVm
UHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IGl0ZW0oaW5kZXgudmFsdWUoKSkgfSB9
OwpAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlv
bj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9uOjpuYQogICAgIGF1dG8gbmFt
ZWRJdGVtcyA9IHRoaXMtPm5hbWVkSXRlbXMobmFtZSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJl
dHVybiBWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4geyBS
ZWZQdHI8RWxlbWVudD4geyBXVEZNb3ZlKG5hbWVkSXRlbXNbMF0pIH0gfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBlZjA1NzU4NGE4NWI3MDllMWM5
YzFhNDg3ZTdkYmNhNjIxNDhkM2VjLi5hM2Q3NjU3ZDY0NDdkZDEzMjViNjg0MmM0NGIyOWJhYzRk
MmVmNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAt
NDA1LDQ4ICs0MDUsNDggQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IEhUTUxB
bmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW4KICAgICBpZiAoIXBhZ2Ug
fHwgcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQogICAgICAgICB8fCAhZG9jdW1lbnQo
KS5zZXR0aW5ncygpLnByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCgpCiAgICAgICAgIHx8
ICFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIGhhc0F0dHJpYnV0aW9uU291cmNlSURBdHRyID0gaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihhdHRyaWJ1dGlvbnNvdXJjZWlkQXR0cik7CiAgICAgYXV0byBoYXNBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uQXR0ciA9IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oYXR0cmlidXRpb25kZXN0aW5hdGlvbkF0dHIpOwogICAgIGlmICghaGFzQXR0cmlidXRpb25T
b3VyY2VJREF0dHIgJiYgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBhdHRyaWJ1dGlvblNvdXJjZUlEQXR0ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXR0cmlidXRpb25zb3VyY2VpZEF0dHIpOwogICAgIGF1dG8gYXR0cmlidXRpb25EZXN0
aW5hdGlvbkF0dHIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF0dHJpYnV0aW9u
ZGVzdGluYXRpb25BdHRyKTsKIAogICAgIGlmICghaGFzQXR0cmlidXRpb25Tb3VyY2VJREF0dHIg
fHwgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyIHx8IGF0dHJpYnV0aW9uU291cmNlSURB
dHRyLmlzRW1wdHkoKSB8fCBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQXR0ci5pc0VtcHR5KCkpIHsK
ICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhl
ciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQm90aCBhdHRyaWJ1dGlvbnNvdXJjZWlkIGFuZCBh
dHRyaWJ1dGlvbmRlc3RpbmF0aW9uIG5lZWQgdG8gYmUgc2V0IGZvciBQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50IHRvIHdvcmsuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBSZWZQdHI8RnJhbWU+IGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5pc01h
aW5GcmFtZSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIG1haW4gZnJhbWUuIl9zKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAgICAgCiAgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZUlEID0gcGFyc2VIVE1MTm9uTmVn
YXRpdmVJbnRlZ2VyKGF0dHJpYnV0aW9uU291cmNlSURBdHRyKTsKICAgICBpZiAoIWF0dHJpYnV0
aW9uU291cmNlSUQpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiYXR0cmlidXRpb25zb3Vy
Y2VpZCBpcyBub3QgYSBub24tbmVnYXRpdmUgaW50ZWdlciB3aGljaCBpcyByZXF1aXJlZCBmb3Ig
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4iX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAKICAgICBpZiAo
YXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgpID4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZUlEOjpNYXhFbnRyb3B5KSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0cmlu
ZygiYXR0cmlidXRpb25zb3VyY2VpZCBtdXN0IGhhdmUgYSBub24tbmVnYXRpdmUgdmFsdWUgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvICIsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRDo6
TWF4RW50cm9weSwgIiBmb3IgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4iKSk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgVVJMIGRlc3RpbmF0aW9uVVJMIHsgVVJMKCksIGF0dHJpYnV0aW9uRGVzdGluYXRp
b25BdHRyIH07CiAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5pc1ZhbGlkKCkgfHwgIWRlc3RpbmF0
aW9uVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBkb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsICJhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8gYSB2
YWxpZCBIVFRQLWZhbWlseSBVUkwuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBSZWdpc3RyYWJsZURv
bWFpbiBkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQoKS51cmwoKSB9OwogICAg
IGlmIChkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoZGVzdGluYXRpb25VUkwpKSB7
CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3Ro
ZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9uZGVzdGluYXRpb24gY2FuIG5v
dCBiZSB0aGUgc2FtZSBzaXRlIGFzIHRoZSBjdXJyZW50IHdlYnNpdGUuIl9zKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkpLCBTb3VyY2VTaXRl
KGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShk
ZXN0aW5hdGlvblVSTCkgfTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbgogICAgICAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgYXR0cmlidXRpb25Tb3VyY2VOb25jZUF0dHIgfTsK
ICAgICAgICAgaWYgKCFlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9uc291cmNlbm9uY2Ugd2FzIG5vdCB2YWxpZC4iX3Mp
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
c2V0RXBoZW1lcmFsU291cmNlTm9uY2UoV1RGTW92ZShlcGhlbWVyYWxOb25jZSkpOwogICAgIH0K
QEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhF
dmVudCYgZXZlbnQpCiAgICAgaWYgKHN5c3RlbVByZXZpZXdJbmZvLmlzUHJldmlldykgewogICAg
ICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1lbnRJZGVudGlmaWVyID0gZG9jdW1l
bnQoKS5pZGVudGlmaWVyRm9yRWxlbWVudCgqdGhpcyk7CiAgICAgICAgIHN5c3RlbVByZXZpZXdJ
bmZvLmVsZW1lbnQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQoKS5pZGVudGlmaWVyKCk7
Ci0gICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIgPSBk
b2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZp
ZXIgeyB9KTsKKyAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdlSWRlbnRp
ZmllciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFn
ZUlkZW50aWZpZXIgeyB9KTsKICAgICAgICAgaWYgKGF1dG8qIGNoaWxkID0gZmlyc3RFbGVtZW50
Q2hpbGQoKSkKICAgICAgICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLnByZXZpZXdSZWN0ID0gY2hp
bGQtPmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBT
dHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBjb25z
dAogUmVmZXJyZXJQb2xpY3kgSFRNTEFuY2hvckVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29u
c3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmli
dXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9s
aWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGlj
eTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVy
UG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggMzAw
ZTE4MGQ3NjRhNDRjYWJkZjI1MWM1MjRlMWU0ZjYwNDczMGI0MS4uYWQzZTExODA5NTJjMzVlMzdh
MmIxZGRmMWI3OGNhOTg4MjkwYTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVt
ZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojppc0ZvY3Vz
YWJsZSgpIGNvbnN0CiAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzVmlzaWJsZVdpdGhvdXRS
ZXNvbHZpbmdGdWxsU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJu
IHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApID49
IDA7CisgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHko
KS52YWx1ZV9vcigwKSA+PSAwOwogfQogICAgIAogdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OnNldEZv
Y3VzKGJvb2wgc2hvdWxkQmVGb2N1c2VkLCBGb2N1c1Zpc2liaWxpdHkgdmlzaWJpbGl0eSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggYzAyMTE2ZjlmODBk
YjI5MTIzOTNiYzkyMmFjZTZiYTk0Y2YwZDIwYy4uYjgzMmI2MDI3ZDU1MDRiZmQwNGQ3OTRlOWQ5
NDIzOTQwOWI5MTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHAKQEAgLTI0NSwyMyArMjQ1LDIzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAg
ICAgaWYgKG1fY29udGV4dC0+aXMyZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzMmRUeXBlKGNv
bnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
PiB7ICZkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzQml0bWFwUmVuZGVyZXIoKSkg
ewogICAgICAgICAgICAgaWYgKCFpc0JpdG1hcFJlbmRlcmVyVHlwZShjb250ZXh0SWQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVs
bG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+IHsgUmVmUHRyPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNh
c3Q8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSB9IH07CiAgICAgICAg
IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNXZWJHTCgp
KSB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViR0xUeXBlKGNvbnRleHRJZCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0IH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3Rk
OjpudWxsb3B0IH07CiAgICAgICAgICAgICBhdXRvIHZlcnNpb24gPSB0b1dlYkdMVmVyc2lvbihj
b250ZXh0SWQpOwogICAgICAgICAgICAgaWYgKCh2ZXJzaW9uID09IFdlYkdMVmVyc2lvbjo6V2Vi
R0wxKSAhPSBtX2NvbnRleHQtPmlzV2ViR0wxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAg
ICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8
V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
KCptX2NvbnRleHQpIH0gfTsKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtMjc0LDEzICsyNzQsMTMg
QEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVt
ZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KICNpZiBFTkFCTEUoV0VCR1BVKQogICAgICAgICBp
ZiAobV9jb250ZXh0LT5pc1dlYkdQVSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViR1BVVHlw
ZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsg
JmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAgfQog
I2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBP
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1
cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAK
ICAgICBpZiAoaXMyZFR5cGUoY29udGV4dElkKSkgewpAQCAtMjkwLDcgKzI5MCw3IEBAIEV4Y2Vw
dGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0
Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4
dDJkKGNvbnRleHRJZCwgV1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51
bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9OwogICAg
IH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAg
ICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnRleHRJZCwg
V1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9
OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8SW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9OwogICAgIH0KIApAQCAtMzEz
LDcgKzMxMyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250
ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJzaW9uKGNvbnRleHRJZCksIFdURk1v
dmUoYXR0cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1
cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAg
ICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9Owog
CiAgICAgICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSkKICAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJHTFJl
bmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRl
eHQpIH0gfTsKQEAgLTMyOCwxMiArMzI4LDEyIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAg
ICAgaWYgKGlzV2ViR1BVVHlwZShjb250ZXh0SWQpKSB7CiAgICAgICAgIGF1dG8gY29udGV4dCA9
IGNyZWF0ZUNvbnRleHRXZWJHUFUoY29udGV4dElkKTsKICAgICAgICAgaWYgKCFjb250ZXh0KQot
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxs
b3B0IH07CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBz
dGQ6Om51bGxvcHQgfTsKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgY29udGV4dCB9IH07CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQg
fTsKKyAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQg
fTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENv
bnRleHQoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCkKICAg
ICBjbGVhckNvcGllZEltYWdlKCk7CiAgICAgCiAgICAgaWYgKCFyZWN0KSB7Ci0gICAgICAgIG5v
dGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbm90aWZ5
T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03MDksMTEgKzcwOSwxMSBAQCBzdGF0aWMgU3RyaW5nIHRvRW5jb2RpbmdNaW1l
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNWYWx1ZSBxdWFsaXR5VmFsdWUpCiB7CiAgICAgaWYgKCFx
dWFsaXR5VmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBxdWFsaXR5TnVtYmVyID0g
cXVhbGl0eVZhbHVlLmFzTnVtYmVyKCk7CiAgICAgaWYgKHF1YWxpdHlOdW1iZXIgPCAwIHx8IHF1
YWxpdHlOdW1iZXIgPiAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHF1YWxpdHlOdW1iZXI7CiB9CkBAIC05
NTAsNyArOTUwLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
KSBjb25zdAogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShzaXpl
KCkpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkOwogICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxpc3Qg
ZHJhd2luZyBvbiBjYW52YXMuCi0gICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rpc3Bs
YXlMaXN0RHJhd2luZy52YWx1ZU9yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObzsKKyAgICBhdXRvIHVzZURpc3BsYXlMaXN0ID0gbV91c2VzRGlzcGxheUxp
c3REcmF3aW5nLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdp
bmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURpc3Bs
YXlMaXN0OjpObzsKIAogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7
CiAgICAgICAgIGlmIChtX2NvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAK
aW5kZXggMDBiZjY3YWVkNTY1YWM5MGY0NmQ4ZmE3MzhkZjdhNTI5Mzc2MGRlNi4uYWJmNDQwZmFm
Y2FmZDAwZjdjMjZmM2E1YjFkM2Q2OGVlYjdiMzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gSFRNTERv
Y3VtZW50OjpjcmVhdGVQYXJzZXIoKQogT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93UHJv
eHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9jdW1l
bnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1lLmlz
TnVsbCgpIHx8ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCpu
YW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFtZWRJ
dGVtcyhuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDJiNTc5ODhl
NDdkYjQ5ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uMDEzZmFmNTMzNmY0YmJmYWVlYWNlNmU1
OTMwMTJmZjlkM2I2ODRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTQ3
MSw3ICs0NzEsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YQogICAgICAgICBpZiAoYXV0byBv
cHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBz
ZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTYyNiwxMCArNjI2LDEwIEBAIHZvaWQgSFRNTEVsZW1l
bnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHlsZShN
dXRhYmxlU3R5CiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuYXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZG91
YmxlIHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVPcigtMSk7CisgICAgZG91Ymxl
IHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVfb3IoLTEpOwogICAgIGlmICh3aWR0
aCA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgaGVpZ2h0ID0gcGFyc2VWYWxpZEhU
TUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaGVp
Z2h0QXR0cikpLnZhbHVlT3IoLTEpOworICAgIGRvdWJsZSBoZWlnaHQgPSBwYXJzZVZhbGlkSFRN
TEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWln
aHRBdHRyKSkudmFsdWVfb3IoLTEpOwogICAgIGlmIChoZWlnaHQgPCAwKQogICAgICAgICByZXR1
cm47CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90
Pj4gcGFyc2VMZWdhY3lDb2xvclZhbHVlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8vIEFu
IGVtcHR5IHN0cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuCiAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBzdHJpbmcgPSBzdHJpbmcuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdN
YXRjaGVkQ2hhcmFjdGVycyhpc0hUTUxTcGFjZTxVQ2hhcj4pOwogICAgIGlmIChzdHJpbmcuaXNF
bXB0eSgpKQpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiAKICAgICAvLyAi
dHJhbnNwYXJlbnQiIGRvZXNuJ3QgYXBwbHkgYSBjb2xvciBlaXRoZXIuCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRyYW5zcGFyZW50IikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoYXV0byBuYW1lZENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZU5hbWVkQ29sb3Ioc3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIG5hbWVkQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250
RWxlbWVudC5jcHAKaW5kZXggMDkyZGNkMTkzYmU4MDM4OWQ3ZDE5ZGU0MzJjMDllYTE0MjUxYjhm
MC4uNGViNjUxOTEwZTQ2OGRjN2Q2ZWVjYWYxOTUzZTE0NjBkMDZmNTk0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlRm9udFNpemUoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBpbnQmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFN0ZXAgOAot
ICAgIGludCB2YWx1ZSA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0cykudmFsdWVPcigwKTsKKyAg
ICBpbnQgdmFsdWUgPSBwYXJzZUludGVnZXI8aW50PihkaWdpdHMpLnZhbHVlX29yKDApOwogCiAg
ICAgLy8gU3RlcCA5CiAgICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVQbHVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCBhZjFj
ZDBlYTRlMWY5YzQ3NGJlZjgxY2U5NzM2OTM4Y2MyNzE0MjQwLi5mMzUzZTlhOWJlZjgxNzAyOTQ1
ZGM3NTgwNzFiMWU4MWJlMjlmYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCBPcHRpb25hbDxW
YXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZvcm1D
b250cm9sc0NvbGxlYwogICAgIGF1dG8gbmFtZWRJdGVtcyA9IHRoaXMtPm5hbWVkSXRlbXMobmFt
ZSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG5hbWVkSXRl
bXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVM
aXN0PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IFdURk1vdmUobmFtZWRJ
dGVtc1swXSkgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5k
ZXggNTU1ZjE1NDFjMDA4YWI2ZjFhYThmYzRjZWQ3NDJlZjBlZjUwZDFmYS4uMWU2ZWUxMDAxYjgw
YzkzZDcxMzZhNzUzZWQ1NzQ1YmJmOWE0OGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRy
PFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1lbnQ6Om5hbWVk
CiAgICAgYXV0byBuYW1lZEl0ZW1zID0gbmFtZWRFbGVtZW50cyhuYW1lKTsKIAogICAgIGlmIChu
YW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxl
bWVudD4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgV1RGTW92ZShuYW1lZEl0ZW1zWzBdKSB9IH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggNzk4MjE5NDll
NWNhZmQxM2Q1N2U1NjE5OWRhMWFhNGJiNGQ2NDA3Zi4uMGM1YmQ3ZTRkZDgzMzkzMmVjNzcwMjgw
YWQyNDgxNzgzMzBkZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVu
dC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgICAg
ICBpZiAoIWludmFsaWRUb2tlbnMuaXNOdWxsKCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCAiRXJyb3Igd2hpbGUgcGFyc2luZyB0aGUgJ3NhbmRib3gnIGF0dHJpYnV0ZTogIiArIGludmFs
aWRUb2tlbnMpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhbGxvd0F0dHIgfHwgbmFtZSA9PSBh
bGxvd2Z1bGxzY3JlZW5BdHRyIHx8IG5hbWUgPT0gd2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0cikg
ewotICAgICAgICBtX2ZlYXR1cmVQb2xpY3kgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZmVh
dHVyZVBvbGljeSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbG9hZGlu
Z0F0dHIpIHsKICAgICAgICAgLy8gQWxsb3cgbG9hZGluZz1lYWdlciB0byBsb2FkIHRoZSBmcmFt
ZSBpbW1lZGlhdGVseSBpZiB0aGUgbGF6eSBsb2FkIHdhcyBzdGFydGVkLCBidXQKICAgICAgICAg
Ly8gZG8gbm90IGFsbG93IHRoZSByZXZlcnNlIHNpdHVhdGlvbiBzaW5jZSB0aGUgZWFnZXIgbG9h
ZCBpcyBhbHJlYWR5IHN0YXJ0ZWQuCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmZXJyZXJQb2xpY3kg
SFRNTElGcmFtZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICBpZiAobV9sYXp5
TG9hZEZyYW1lT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybiBtX2xhenlMb2FkRnJhbWVPYnNlcnZl
ci0+cmVmZXJyZXJQb2xpY3koKTsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJlZmVy
cmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJl
clBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0
ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVP
cihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VSZWZl
cnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5
QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFs
dWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJyZXJQ
b2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAppbmRleCAyYWU3ZjE3ZDA1MjYzYzY3MjhlMTIyYmE0ZjgwYjM1M2ZiZjM5NjRhLi43
Zjg3ODhlODc0YWUxZTBhODNlMzAzNGIzMzMwMzdhZWM5ZjBmMDBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI0Nyw4ICsyNDcsOCBAQCB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cgogICAgIEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9s
ZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIAogICAgIGlmIChuYW1lID09IHJlZmVycmVycG9s
aWN5QXR0ciAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCkucmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVF
bmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBvbGRSZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJy
ZXJQb2xpY3kob2xkVmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0
dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwotICAgICAgICBh
dXRvIG5ld1JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShuZXdWYWx1ZSwgUmVm
ZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZU9yKFJlZmVy
cmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIGF1dG8gb2xkUmVmZXJyZXJQb2xpY3kg
PSBwYXJzZVJlZmVycmVyUG9saWN5KG9sZFZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVm
ZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmlu
Zyk7CisgICAgICAgIGF1dG8gbmV3UmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5
KG5ld1ZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUp
LnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CiAgICAgICAgIGlmIChvbGRS
ZWZlcnJlclBvbGljeSAhPSBuZXdSZWZlcnJlclBvbGljeSkKICAgICAgICAgICAgIG1faW1hZ2VM
b2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKFJlbGV2YW50TXV0
YXRpb246Olllcyk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNyb3Nzb3JpZ2luQXR0cikgewpA
QCAtNzk1LDcgKzc5NSw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50OjpyZWZlcnJlclBvbGlj
eUZvckJpbmRpbmdzKCkgY29uc3QKIFJlZmVycmVyUG9saWN5IEhUTUxJbWFnZUVsZW1lbnQ6OnJl
ZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJl
ZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZl
cnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5
QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFs
dWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VS
ZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9s
aWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSku
dmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCBiM2MyMDkzZjA4YzBhYjI2MzBiOWY1ZTJhYjgwNjM5N2Y1ZjBhMmY5
Li5kOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkwMzdlNTI1NzM4NDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBPcHRpb25h
bDxkb3VibGU+IEhUTUxJbnB1dEVsZW1lbnQ6Omxpc3RPcHRpb25WYWx1ZUFzRG91YmxlKGNvbnN0
IEhUTUxPcHRpb25FbGVtZQogewogICAgIGF1dG8gb3B0aW9uVmFsdWUgPSBvcHRpb25FbGVtZW50
LnZhbHVlKCk7CiAgICAgaWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9uVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNhbml0aXplVmFsdWUob3B0aW9uVmFs
dWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBlZDAx
MmM3MTgyZmUzMzViM2Q5MTc0NmM2ZGU2YTk1OGE1OWY3MzEzLi5mMGUwMmM5NzFkYzM1OTg3YTZi
YzRjYTJjMzIyODdkM2ExNzQ5YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwCkBAIC02NzcsNyArNjc3LDcgQEAgU3RyaW5nIEhUTUxMaW5rRWxlbWVudDo6cmVmZXJy
ZXJQb2xpY3lGb3JCaW5kaW5ncygpIGNvbnN0CiBSZWZlcnJlclBvbGljeSBIVE1MTGlua0VsZW1l
bnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5n
cygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFy
c2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVy
cG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0
ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4g
cGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVy
cmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJp
YnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4g
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCBjMDdhMmM2YzE2YmE5ZDRiYTY5MWEzZjU4YTIyNjY3ZGUw
Nzg2NjQxLi5iZDE5YmJiYTEwN2QyZGE3Njk2YjM1MDZkYjNjMWQyYWY2OTEzYWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY2NTAsNyArNjY1MCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIoKSBXVEZfSUdOT1JFU19U
SFJFQURfU0FGRVRZX0FOQUxZU0lTCiAKICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpjcmVh
dGUoKnRoaXMpOwogICAgIG1fcGxheWVyLT5zZXRCdWZmZXJpbmdQb2xpY3kobV9idWZmZXJpbmdQ
b2xpY3kpOwotICAgIG1fcGxheWVyLT5zZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKG1fb3Zl
cnJpZGVEeW5hbWljUmFuZ2VNb2RlLnZhbHVlT3IocHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShk
b2N1bWVudCgpLnZpZXcoKSkpKTsKKyAgICBtX3BsYXllci0+c2V0UHJlZmVycmVkRHluYW1pY1Jh
bmdlTW9kZShtX292ZXJyaWRlRHluYW1pY1JhbmdlTW9kZS52YWx1ZV9vcihwcmVmZXJyZWREeW5h
bWljUmFuZ2VNb2RlKGRvY3VtZW50KCkudmlldygpKSkpOwogICAgIG1fcGxheWVyLT5zZXRNdXRl
ZChlZmZlY3RpdmVNdXRlZCgpKTsKICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
VXBkYXRlKCk7CiAKQEAgLTcyMTQsNyArNzIxNCw3IEBAIFJlZlB0cjxWaWRlb1BsYXliYWNrUXVh
bGl0eT4gSFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkoKQogICAgIFJl
ZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdyA9IGRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAg
ZG91YmxlIHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+bm93VGltZXN0YW1wKCku
bWlsbGlzZWNvbmRzKCkgOiAwOwogCi0gICAgYXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3Bs
YXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBXVEY6Om51bGxvcHQ7CisgICAg
YXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtZXRyaWNzKQogICAgICAgICByZXR1
cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3RhbXAsIHsgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBjOTRhYTc5YzZiOWFhNzAxZDI5
M2RiZjdhOTk3ZTBlOTVkODBmYjAwLi5hM2MwNzIwYTY3MTAyOGVmNzNmODFiODE4Mjg2MWEyMmU3
NDhhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9CiAKICAgICBpZiAobmFt
ZSA9PSBjb250ZW50QXR0cikgewotICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV9jb250ZW50Q29sb3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHByb2Nl
c3MoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlz
dEVsZW1lbnQuY3BwCmluZGV4IGJlOGNiNWE5OGY4N2JhMzFiODY2MjNiNmNkYjAyNjhlM2MwZWM4
MmMuLjdjOGI5MzU0MTFlMGM5OTUwYzYzOGJjNGZjZGI1MjI5NjU4MTBjYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogLy8gTWF5
YmUgd2Ugc2hvdWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBmaWxlIGZvciBFeHBlY3RlZCBh
bmQgZ2l2ZSBpdCBhIGJldHRlciBuYW1lLgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
RT4gaW5saW5lIE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBleHBl
Y3RlZCkKIHsKLSAgICByZXR1cm4gZXhwZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4cGVj
dGVkLnZhbHVlKCkpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gZXhwZWN0ZWQgPyBPcHRp
b25hbDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T0xpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaApp
bmRleCBmMzA1Y2E1OWI5OTYxZDZlYzkyZDYyNGExYTg4NjY0ODhmMDNjYmVkLi4yZjRjMzk3MjBl
Y2U4NGFmMmMyOGFiOTcwYjY3ZDNmY2VhMWNiNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
TGlzdEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxI
VE1MT0xpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEhUTUxP
TGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAot
ICAgIGludCBzdGFydEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC52YWx1ZU9y
KDEpOyB9CisgICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
LnZhbHVlX29yKDEpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGFydEZvckJpbmRp
bmdzKGludCk7CiAKICAgICAvLyBGSVhNRTogVGhlIHJlYXNvbiBzdGFydCgpIGRvZXMgbm90IHRy
aWdnZXIgbGF5b3V0IGlzIGJlY2F1c2UgaXQgaXMgY2FsbGVkCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIGludCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQgPyBtX3N0YXJ0
LnZhbHVlKCkgOiAobV9pc1JldmVyc2VkID8gaXRlbUNvdW50KCkgOiAxKTsgfQogICAgIGJvb2wg
aXNSZXZlcnNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXZlcnNlZDsgfQotICAgIHZvaWQgaXRl
bUNvdW50Q2hhbmdlZCgpIHsgbV9pdGVtQ291bnQgPSBXVEY6Om51bGxvcHQ7IH0KKyAgICB2b2lk
IGl0ZW1Db3VudENoYW5nZWQoKSB7IG1faXRlbUNvdW50ID0gc3RkOjpudWxsb3B0OyB9CiAKIHBy
aXZhdGU6CiAgICAgSFRNTE9MaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggYmJi
Yzg0MDJiMmU1NTUwZDRhZGFlMWU2YzQ4MTQ3NTI2NTIzODlmZi4uNDlmZDI4ZDBkOTIyYjgxNTZl
NGExOWRmNDliYWEyMTJkMDg5Yzg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1lbnQ6
OnJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBjb25zdAogUmVmZXJyZXJQb2xpY3kgSFRNTFNj
cmlwdEVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQo
KS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGlj
eUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAg
ICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBv
bGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAg
ICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU5MWZmNGYzODg2NzBkYjkzMjhjMzYz
YmUxZGZiNzE3MDUyNzJmYmUuLjM0ZGFlYjhkYzQzZmQyZjYzZjAwODQyYzdhODczY2FiZjc5MGQw
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00Njks
NyArNDY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExlbmd0
aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAgICBpZiAoZGlmZiA8IDApIHsgLy8gQWRkIGR1bW15
IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkZChI
VE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLnB0cigpLCBXVEY6Om51bGxvcHQp
OworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhZGQoSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCgpKS5wdHIoKSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfSB3aGlsZSAoKytkaWZmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVu
dC5jcHAKaW5kZXggYTJjMGI5MjdlNGRiZjMxZjgxYzRjMDhiNmQzOTQ5YWQ4MGRiMDNiMC4uYWM0
MjRkZTZkZjM1YWJjMzMxZDdhNTE4ZjRmMTNjMjM4ODEzOTk4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxT
b3VyY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaQogICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiAgICAgaWYgKG5hbWUgPT0gc3Jjc2V0QXR0ciB8fCBuYW1lID09IHNpemVzQXR0ciB8fCBu
YW1lID09IG1lZGlhQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChuYW1l
ID09IG1lZGlhQXR0cikKLSAgICAgICAgICAgIG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGUg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmlidXRl
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50
Tm9kZSgpKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2FsbFNvdXJjZXNDaGFuZ2VkKQogICAgICAg
ICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PigqcGFyZW50KS5zb3VyY2VzQ2hhbmdl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXgg
ZjM2MjRhY2JmMzYzOWFhM2QyZGY0MjdjYWYyYzBjZjM5ZmJmMjk1ZC4uNWM2ZjhlYjBlZjA3NTZi
ZTAyYzdjZWExM2I1ZTgxYzI4Zjg2ZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRF
dmVudCYKICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRvbid0IG5l
ZWQgdG8gdGFrZSBhY2NvdW50IG9mIHRoZQogICAgIC8vIHNlbGVjdGlvbiBsZW5ndGguIFRoZSBz
ZWxlY3Rpb24gaXMgdGhlIHNvdXJjZSBvZiB0ZXh0IGRyYWctYW5kLWRyb3AgaW4KICAgICAvLyB0
aGF0IGNhc2UsIGFuZCBub3RoaW5nIGluIHRoZSB0ZXh0IGZpZWxkIHdpbGwgYmUgcmVtb3ZlZC4K
LSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZm9jdXNlZCgpID8gZG9jdW1lbnQoKS5mcmFtZSgp
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpIDogV1RGOjpudWxs
b3B0OworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBmb2N1c2VkKCkgPyBkb2N1bWVudCgpLmZy
YW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkgOiBzdGQ6
Om51bGxvcHQ7CiAgICAgdW5zaWduZWQgc2VsZWN0aW9uTGVuZ3RoID0gc2VsZWN0aW9uUmFuZ2Ug
PyBjb21wdXRlTGVuZ3RoRm9yU3VibWlzc2lvbihwbGFpblRleHQoKnNlbGVjdGlvblJhbmdlKSkg
OiAwOwogICAgIEFTU0VSVChjdXJyZW50TGVuZ3RoID49IHNlbGVjdGlvbkxlbmd0aCk7CiAgICAg
dW5zaWduZWQgYmFzZUxlbmd0aCA9IGN1cnJlbnRMZW5ndGggLSBzZWxlY3Rpb25MZW5ndGg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CmluZGV4IDViMjMxNTVlMGFlOGVlYWE5NTQxZmRlYTU5MTQ1MTFkZTliYmYzMWUuLjRjYTAzZGI4
NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1ZmM3OWEyMTNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00NTUsNyArNDU1LDcg
QEAgc3RhdGljIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9yUmFuZ2UoTm9kZSogbm9kZSwg
dW5zaWduZWQgb2Zmc2V0LCBOb2RlKiYgY28KIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRl
cmVyKCkgfHwgIWlzVGV4dEZpZWxkKCkgfHwgIWhhc0NhY2hlZFNlbGVjdGlvbigpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgdW5zaWduZWQgc3RhcnQgPSBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0OwogICAgIHVuc2lnbmVk
IGVuZCA9IG1fY2FjaGVkU2VsZWN0aW9uRW5kOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29u
c3QKICAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlubmVy
VGV4dEVsZW1lbnQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaW5uZXJU
ZXh0LT5maXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKmlubmVy
VGV4dCwgMCB9LCB7ICppbm5lclRleHQsIDAgfSB9OwpAQCAtNDg5LDcgKzQ4OSw3IEBAIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkg
Y29uc3QKICAgICB9CiAKICAgICBpZiAoIXN0YXJ0Tm9kZSB8fCAhZW5kTm9kZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKnN0YXJ0Tm9kZSwgc3RhcnQgfSwgeyAqZW5kTm9kZSwg
ZW5kIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggOGYwM2M2ZmZj
Nzg2ZmI3MDUzNDJhZTU2NTRiYWQ1MjQ4ODU5NzcwMS4uMGI0YjE4MDY2NDYwNDQzOTI4MTFlOGQx
MGYxNzNkZmVkOTg5ODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJp
dG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogewogICAgIFdURjo6c3dpdGNoT24o
c291cmNlLAogICAgICAgICBbJl0gKGF1dG8mIHNwZWNpZmljU291cmNlKSB7Ci0gICAgICAgICAg
ICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNwZWNpZmljU291cmNlLCBX
VEZNb3ZlKG9wdGlvbnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocHJvbWlzZSkpOworICAgICAg
ICAgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzcGVjaWZpY1NvdXJj
ZSwgV1RGTW92ZShvcHRpb25zKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHByb21pc2UpKTsKICAg
ICAgICAgfQogICAgICk7CiB9CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9y
PEludFJlY3Q+IGNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9ybWF0dGluZyhJbnRTaXplIGlu
cHV0U2kKICAgICAvLyAgICBPdGhlcndpc2UgbGV0IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJlY3Rh
bmdsZSB3aG9zZSBjb3JuZXJzIGFyZSB0aGUgZm91ciBwb2ludHMKICAgICAvLyAgICAoMCwwKSwg
KHdpZHRoIG9mIGlucHV0LCAwKSwgKHdpZHRoIG9mIGlucHV0LCBoZWlnaHQgb2YgaW5wdXQpLCAo
MCwgaGVpZ2h0IG9mCiAgICAgLy8gICAgaW5wdXQpLgotICAgIGF1dG8gc291cmNlUmVjdGFuZ2xl
ID0gcmVjdC52YWx1ZU9yKEludFJlY3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRT
aXplLmhlaWdodCgpIH0pOworICAgIGF1dG8gc291cmNlUmVjdGFuZ2xlID0gcmVjdC52YWx1ZV9v
cihJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXplLndpZHRoKCksIGlucHV0U2l6ZS5oZWlnaHQoKSB9
KTsKIAogICAgIC8vIDQuIENsaXAgc291cmNlUmVjdGFuZ2xlIHRvIHRoZSBkaW1lbnNpb25zIG9m
IGlucHV0LgogICAgIHNvdXJjZVJlY3RhbmdsZS5pbnRlcnNlY3QoSW50UmVjdCB7IDAsIDAsIGlu
cHV0U2l6ZS53aWR0aCgpLCBpbnB1dFNpemUuaGVpZ2h0KCkgfSk7CkBAIC04NDgsNyArODQ4LDcg
QEAgSW1hZ2VCaXRtYXA6On5JbWFnZUJpdG1hcCgpCiAKIE9wdGlvbmFsPEltYWdlQml0bWFwQmFj
a2luZz4gSW1hZ2VCaXRtYXA6OnRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKQogewotICAgIHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBXVEY6Om51bGxvcHQpOworICAgIHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBzdGQ6Om51bGxvcHQpOwogfQogCiBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCdWZmZXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKaW5kZXggMTY0Zjg4MmNkZjdjMGY4OTEyMTZiYTY4ZGNhNDE3NTY1ZmJiNTI3
NC4uY2ExMjhlZGJmZWFmOGJlNzIxMTU5ZGZlMzc1YWRhZWUyNDE3OTdjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ltYWdlRGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVyPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNv
bnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0
YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIFByZWRl
ZmluZWRDb2xvclNwYWNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWdu
ZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwg
T3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29s
b3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0g
c3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFsPElt
YWdlRGF0YVNldHRpbmdzPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNpZ25l
ZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOTZkZGZlY2MxYmM5ODBlYWQzNGM1
OWU1YWUwOWY5MmM3YzBhMGE3My4uNGQzYTc4YTJjN2UzYjFjMzVlZTg3MmU2Y2RmYjgyZDAwODM2
MGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtODY4LDcgKzg2OCw3IEBAIHZv
aWQgSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIE9wdGlvbmFsPERlY2ltYWw+
IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAKaW5kZXggY2IxMzJiNTE0NmQ4NjM5YTJmYWMxNDI2
ZTMyY2VmNzU0ODlmN2M1OC4uN2MyYmExNWE1MTRlNDNkZDk3MjI3NTEwOWUzZGI5NDJlODUyMzJi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEZyYW1lT2JzZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcApA
QCAtOTIsNyArOTIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciogTGF6eUxvYWRGcmFtZU9ic2Vy
dmVyOjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9jdQogewogICAgIGlmICghbV9v
YnNlcnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6eUZyYW1lTG9hZEludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIEludGVyc2Vj
dGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxvcHQsIGVtcHR5U3RyaW5nKCks
IHsgfSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6SW5pdCBvcHRpb25zIHsgc3Rk
OjpudWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAgICAgYXV0byBvYnNlcnZlciA9
IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2VydmVyLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xh
enlMb2FkSW1hZ2VPYnNlcnZlci5jcHAKaW5kZXggYWRlOWE3YzU1MzdlZTkyNmEwN2E0ZWRlY2Iw
Y2ViMGI5YzRjODEzYy4uZjZjNjQyMGRjYjc3ZDUzYzZiYTBlMjIzZjNiY2EwNDdkYzRlOThlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEltYWdlT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRJbWFnZU9ic2VydmVyLmNwcApAQCAt
ODQsNyArODQsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciogTGF6eUxvYWRJbWFnZU9ic2VydmVy
OjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9jdQogewogICAgIGlmICghbV9vYnNl
cnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6eUltYWdlTG9hZEludGVyc2VjdGlv
bk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIEludGVyc2VjdGlv
bk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxvcHQsIGVtcHR5U3RyaW5nKCksIHsg
fSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6SW5pdCBvcHRpb25zIHsgc3RkOjpu
dWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAgICAgYXV0byBvYnNlcnZlciA9IElu
dGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2spLCBX
VEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2VydmVyLmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRleCBmNDY3ZjRmMTM4ZDdlNzU1ZGZjNjVhYWUyZDkx
YmUwYzZmOGViMzIwLi5jYjA1ZDkwYzA5ZTIwZDljMzhkZjBlYTljMTM5ZjJmNmFkMTc4ZDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKQEAg
LTI1OSw3ICsyNTksNyBAQCBib29sIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlTlBUVGlt
ZShjb25zdCBMQ2hhciogdGltZVN0cmluZywgdW5zaWduZWQgbGVuZwogICAgIC8vIG5wdC1zcyAg
ICAgICAgPSAgIDJESUdJVCAgICAgIDsgMC01OQogCiAgICAgU3RyaW5nIGRpZ2l0czEgPSBjb2xs
ZWN0RGlnaXRzKHRpbWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KTsKLSAgICBpbnQgdmFsdWUxID0g
cGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVPcigwKTsKKyAgICBpbnQgdmFsdWUxID0g
cGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVfb3IoMCk7CiAgICAgaWYgKG9mZnNldCA+
PSBsZW5ndGggfHwgdGltZVN0cmluZ1tvZmZzZXRdID09ICcsJykgewogICAgICAgICB0aW1lID0g
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHZhbHVlMSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IGQ5ZThlYjdlZjU5
YjViYjdkNTgzYTBlMDhmZjMwMGU3NzI0ZTk5M2IuLjRlOGZjMjZjYzcyMTIxNzFiNmFmZTRlZDAz
M2JiMDQ4ZDRhMDVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
QEAgLTIyMSw3ICsyMjEsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJp
bmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQwogICAgIGlmIChjb250
ZXh0VHlwZSA9PSBSZW5kZXJpbmdDb250ZXh0VHlwZTo6XzJkKSB7CiAgICAgICAgIGlmIChtX2Nv
bnRleHQpIHsKICAgICAgICAgICAgIGlmICghaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPigqbV9jb250ZXh0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB7IFdURjo6bnVs
bG9wdCB9IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBzdGQ6Om51bGxvcHQgfSB9Owog
ICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPiB7ICZkb3duY2FzdDxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCpt
X2NvbnRleHQpIH0gfSB9OwogICAgICAgICB9CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCBFeGNlcHRp
b25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFz
OjpnZXRDb250ZXh0KEpTQwogCiAgICAgICAgIG1fY29udGV4dCA9IG1ha2VVbmlxdWU8T2Zmc2Ny
ZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqdGhpcywgV1RGTW92ZShzZXR0aW5ncykpOwog
ICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxs
b3B0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsKIAogICAg
ICAgICByZXR1cm4geyB7IFJlZlB0cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+
IHsgJmRvd25jYXN0PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4
dCkgfSB9IH07CiAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFs
PE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQo
SlNDCiAgICAgICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dD4geyAmZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkgfSB9
IH07CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxsb3B0IH0gfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsKICAgICAgICAgfQogCiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwpAQCAtMjUz
LDcgKzI1Myw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRl
eHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDCiAKICAgICAgICAgY3JlYXRlQ29u
dGV4dFdlYkdMKGNvbnRleHRUeXBlLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKICAgICAgICAgaWYg
KCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4geyB7IFdURjo6bnVsbG9wdCB9IH07Cisg
ICAgICAgICAgICByZXR1cm4geyB7IHN0ZDo6bnVsbG9wdCB9IH07CiAKICNpZiBFTkFCTEUoV0VC
R0wyKQogICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkp
CkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIFN0cmluZyB0b0VuY29kaW5nTWltZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHlGcm9t
RG91YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVyKQogewogICAgIGlmICghKHF1YWxpdHlOdW1iZXIg
Pj0gMCAmJiBxdWFsaXR5TnVtYmVyIDw9IDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHF1YWxpdHlOdW1i
ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDc5MDRiZjQx
NmQwZjM3MjUwNTZkY2M4MTYzZDc1Yzc4MDA1NGY3YzQuLjRmZjUwY2IzOWVkNGYzMzI3ODhkOGQ5
NWRhOTA1MDgzZjE0YTU4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
CkBAIC00MDEsNyArNDAxLDcgQEAgT3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJbnB1dFR5cGU6OmZp
bmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKICAgICB1cGRh
dGVUaWNrTWFya1ZhbHVlcygpOwogICAgIGlmICghbV90aWNrTWFya1ZhbHVlcy5zaXplKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBzaXplX3QgbGVmdCA9IDA7CiAgICAgc2l6ZV90IHJpZ2h0ID0gbV90aWNrTWFya1Zh
bHVlcy5zaXplKCk7CkBAIC00MjQsOCArNDI0LDggQEAgT3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJ
bnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkK
ICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPERlY2lt
YWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gbWFrZU9wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNb
bWlkZGxlIC0gMV0pIDogV1RGOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nl
c3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/IG1ha2VPcHRpb25h
bChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFs
PERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gc3RkOjptYWtlX29wdGlvbmFsKG1fdGlj
a01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDogc3RkOjpudWxsb3B0OworICAgIE9wdGlvbmFsPERl
Y2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/
IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFjbG9zZXN0TGVmdCkKICAgICAgICAgcmV0dXJuIGNsb3Nlc3RSaWdo
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAppbmRleCA5MDY5ZDBmMzU3ZDk4MmRiY2VmZDcw
ZjdjNTQ4OTJjYmU0MWM0MjZlLi41YWUwMmVlODY0ZmE4NmQxMzMxNzU4MGM4ZDU3M2ZhYjg1NzQx
NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgaW50
IFR5cGVBaGVhZDo6aGFuZGxlRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQsIE1hdGNoTW9kZUZs
YWdzIG1hdGNoTW9kZSkKICAgICB9CiAKICAgICBpZiAobWF0Y2hNb2RlICYgTWF0Y2hJbmRleCkg
ewotICAgICAgICBpbnQgaW5kZXggPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxp
bnQ+KG1fYnVmZmVyKS52YWx1ZU9yKDApOworICAgICAgICBpbnQgaW5kZXggPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fYnVmZmVyKS52YWx1ZV9vcigwKTsKICAgICAg
ICAgaWYgKGluZGV4ID4gMCAmJiBpbmRleCA8PSBvcHRpb25Db3VudCkKICAgICAgICAgICAgIHJl
dHVybiBpbmRleCAtIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlv
bi5jcHAKaW5kZXggMDQ5ODYyOGY4ZTZhNjliNjJmNGFiOGQ1MjAwYmExNjlhNWQ0Njk5ZS4uMWU3
MTg3MTVkYzgwNDlhOTJlNmJkYTI4Y2Q3MTBiOGI1OGI3MzI5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBzdGF0aWMgT3B0
aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+PiBwYXJzZVBvcnQoU3RyaW5nVmlldyBzdHJpbmcsIFN0
cmluZ1ZpZXcgcHJvdAogewogICAgIGF1dG8gZGlnaXRzT25seSA9IHN0cmluZy5sZWZ0KGNvdW50
QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAgICAgaWYgKGRpZ2l0c09ubHkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAg
IHJldHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICBhdXRvIHBv
cnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGRpZ2l0c09ubHkpOwogICAgIGlmICghcG9ydCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3RvY29s
KSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHVpbnQxNl90PiB7IFdURjo6bnVsbG9wdCB9Owor
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3RkOjpudWxsb3B0IH07CiAgICAg
cmV0dXJuIHsgeyAqcG9ydCB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFy
YW1zLmNwcAppbmRleCBhOGU1N2YzNDIzNGEwMjY3YWU4NjVjNzVhMWNiNmI5ZTBhMTk4OWE2Li4w
Yzg4YTA1ZTdkYjQ0MTBlYWMzZDBjNTJmNWQ5OGQ5MjU2MTcyMmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8V1RG
OjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxTZWFyY2hQYXJhbXM6Okl0ZXJhdG9y
OjpuZXh0KCkKIHsKICAgICBhdXRvJiBwYWlycyA9IG1fdGFyZ2V0LT5wYWlycygpOwogICAgIGlm
IChtX2luZGV4ID49IHBhaXJzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tt
X2luZGV4KytdOwogICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4g
eyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmNwcAppbmRleCAwYWExZjEyMWJmNjg1NzY3NDg0YTVkNmIyZTI3OTM1YmQ4
NjE2NjgzLi44ZjE5MzgyY2IyMDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApAQCAtNzgsNyArNzgs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0oRE9NTWF0
cml4MkRJbml0JiYgbWF0cml4SW5pdCkKICAgICBpZiAoY2hlY2tWYWxpZC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGNoZWNrVmFsaWQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAg
bV9wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oeyBtYXRyaXhJbml0LmEudmFsdWVP
cigxKSwgbWF0cml4SW5pdC5iLnZhbHVlT3IoMCksIG1hdHJpeEluaXQuYy52YWx1ZU9yKDApLCBt
YXRyaXhJbml0LmQudmFsdWVPcigxKSwgbWF0cml4SW5pdC5lLnZhbHVlT3IoMCksIG1hdHJpeElu
aXQuZi52YWx1ZU9yKDApIH0pOworICAgIG1fcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNm
b3JtKHsgbWF0cml4SW5pdC5hLnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmIudmFsdWVfb3IoMCks
IG1hdHJpeEluaXQuYy52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlX29yKDEpLCBtYXRy
aXhJbml0LmUudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuZi52YWx1ZV9vcigwKSB9KTsKICAgICBy
ZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGViMDE4MjgzZDhmODBlNjFmY2ZjNjQxMWQx
OGMxNWIyMzI3NzA2ZmMuLjQ5ZmVlMmU5MTNmNzAyZTFmYmM3YWMwN2MxZDc5OTA3NTY5ZWU1NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIENhbnZhc0RpcmVj
dGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9w
dGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+
IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CkBAIC02MSw3ICs2MSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldEZvbnRXaXRob3V0VXBkYXRpbmdTdHlsZShjb25zdCBTdHJp
bmcmKTsKIAotICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RG
OjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0ZXh0
LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29u
c3QgUGF0aCYsIEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBlN2MwMjg1
Zjc1NTQ1NDgwM2IxNDBjOTIwYmQ0YjJhZmRmZTYxZjRlLi5kNzkwYzYyYmVkYjJjYThmZDgwOTRk
OTZhMGFkMTcyMjRiZDdjNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTA2Miw3ICsx
MDYyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmaWxsSW50ZXJuYWwo
Y29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzRmlsbFJ1bGUKICAgICAgICAgYy0+ZmlsbFBhdGgocGF0
aCk7CiAgICAgCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAg
ZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAg
ICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIGVsc2UKQEAgLTExMDEsNyArMTEwMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCkKICAgICAg
ICAgYy0+c3Ryb2tlUGF0aChwYXRoKTsKIAogICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURp
cnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZGlkRHJhdyhz
dGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52YXMpCiAgICAgICAg
IGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlIHsKQEAgLTExNjUsNyArMTE2NSw3IEBA
IGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluUGF0aEludGVybmFs
KGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0CiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxlVHJh
bnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUG9p
bnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9
IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zv
cm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExODAsNyArMTE4MCw3IEBAIGJvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0
aCYgcGF0aCwgZmxvCiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZS50
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRyYW5z
Zm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0
UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50Lngo
KSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTEyNzEsNyArMTI3MSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
CiAgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0
b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWRE
cmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAg
ICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTEzMTEsNyArMTMxMSw3
IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlUmVjdChmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvCiAgICAgICAgIGMtPnN0cm9rZVJlY3QocmVjdCwg
c3RhdGUoKS5saW5lV2lkdGgpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3JlRGlydHko
KSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3KHN0ZDo6
bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAgICAgZGlk
RHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UgewpAQCAtMTU5MSw3ICsxNTkxLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERv
Y3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFs
aXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKIAogICAgIGlmIChpc0Vu
dGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRp
cmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBAIC0x
NjUzLDcgKzE2NTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291cmNlQ2FudgogICAgICAgICBjLT5kcmF3
SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAogICAgIGlmIChpc0VudGlyZUJhY2tp
bmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52YXMp
CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBAIC0xNjg5LDcgKzE2
ODksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpk
cmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgICAgICBjLT5kcmF3TmF0aXZlSW1h
Z2UoKmltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hlaWdo
dCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAKICAgICAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0
b3JlRGlydHkoKSkKLSAgICAgICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIGRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICAgICAgZWxzZSBpZiAocmVjdENvbnRhaW5z
Q2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAg
ICAgICBlbHNlCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQog
ICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3Jl
RGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3
KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZQogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogCkBA
IC0xNzU5LDcgKzE3NTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2Jh
bENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAogICAgIGlmIChpc0VudGlyZUJh
Y2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52
YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBAIC0yMDY3LDcg
KzIwNjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXcoT3B0
aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25TZXQ8RAogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoIXJlY3QpIHsKLSAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjA5Miw3ICsyMDkyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCwgT3B0aW9u
U2V0PEQKICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBhcHBseSB0aGUgY2xpcCBiZWNhdXNl
IHdlIGhhdmUgbm8gd2F5IG9mIHJlYWRpbmcgdGhlIGNsaXAgb3V0IG9mIHRoZSBHcmFwaGljc0Nv
bnRleHQuCiAKICAgICBpZiAobV9kaXJ0eVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKLSAgICAg
ICAgY2FudmFzQmFzZSgpLmRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FudmFzQmFz
ZSgpLmRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICBlbHNlIHsKICAgICAgICAgbV9kaXJ0eVJl
Y3QudW5pdGUoZGlydHlSZWN0KTsKICAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcobV9kaXJ0
eVJlY3QpOwpAQCAtMjU0MCw3ICsyNTQwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBmbG8KICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRD
YXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKIAogICAgIGlmIChpc0VudGlyZUJh
Y2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52
YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmgKaW5kZXggMmQ1NDkzMDdlMmNlZThiZWNkZGYxYTBkMDM0ZjRiMjg3MjM3NmIxYy4uMGM5
ZWQxY2U5NWE3ODZiZDhiYTE5ZGIwMjlmODkzZDMxYTQyZGM5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
aApAQCAtMTQxLDExICsxNDEsMTEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJik7CiAgICAgdm9pZCByZXNldFRyYW5zZm9ybSgp
OwogCi0gICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25h
bDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3Io
Y29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0
KTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEg
PSAxLjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQg
YiwgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9y
LCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0Rmls
bENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBh
bHBoYSA9IDEuMGYpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IHIsIGZsb2F0IGcsIGZs
b2F0IGIsIGZsb2F0IGEpOwogCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7CiAg
ICAgdm9pZCBzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpOwogCi0gICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBPcHRpb25hbDxmbG9h
dD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IgPSBTdHJpbmco
KSwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2
ZWwsIGZsb2F0IGFscGhhID0gMS4wKTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9h
dCBhKTsKIApAQCAtMzAyLDkgKzMwMiw5IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBTdHJp
bmcgbm9ybWFsaXplU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8
ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKLSAgICBib29sIGNhbkRyYXdUZXh0KGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RG
OjpudWxsb3B0KTsKLSAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBm
bG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpu
dWxsb3B0KTsKKyAgICBib29sIGNhbkRyYXdUZXh0KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmls
bCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGRy
YXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZp
bGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBSZWY8
VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0SW50ZXJuYWwoY29uc3QgVGV4dFJ1biYpOwogICAgIFJl
ZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGIwYzYyNTk0
MmIyYjUwYjgxYjQ4NjBkNGNiZWI5ZThhMmNmODFmOWQuLjkwYTBlYzU3ZGQwZDVlZTVmZGI0NzBi
YThmZTg3NjE4MTc5MGM1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgQ2FudmFzU3R5bGU6OkNhbnZhc1N0
eWxlKEN1cnJlbnRDb2xvciBjb2xvcikKIENhbnZhc1N0eWxlIENhbnZhc1N0eWxlOjpjcmVhdGVG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIENhbnZhc0Jhc2UmIGNhbnZhc0Jh
c2UpCiB7CiAgICAgaWYgKGlzQ3VycmVudENvbG9yU3RyaW5nKGNvbG9yU3RyaW5nKSkKLSAgICAg
ICAgcmV0dXJuIEN1cnJlbnRDb2xvciB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4g
Q3VycmVudENvbG9yIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBDb2xvciBjb2xvciA9IHBhcnNl
Q29sb3IoY29sb3JTdHJpbmcsIGNhbnZhc0Jhc2UpOwogICAgIGlmICghY29sb3IuaXNWYWxpZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3Jl
ZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBiMTY4MTkyMWQ4ZTM3NTgxMWE2ZmU5
YTUxYTE4YTcwZTc5MWZmNWExLi40MTNkZTkyMjk5NzhlOGY2ZWFlMThkOTE5NjBmYmI2OGM0MjBl
NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtNDcsOCArNDcsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJik7CiAgICAgQ2FudmFzRGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBXVEY6Om51
bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgs
IGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7CisgICAg
dm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlv
bmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1h
eFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UGF0aDJELmNwcAppbmRleCAzODVlOWRhYmY1ZGNiY2EzYmQyMmZlYWE5NWY3ODRkMmY0Nzk0YjMx
Li4yMTViN2QzYmFkMmI4NTQzMzFmNjRiM2YxYzAzMzQ1ZjJjMmNlMDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gUGF0aDJEOjphZGRQYXRoKFBhdGgyRCYgcGF0aCwgRE9NTWF0cml4MkRJbml0JiYgbWF0cml4
SW5pdCkKICAgICBpZiAoY2hlY2tWYWxpZC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IGNoZWNrVmFsaWQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgbV9wYXRoLmFkZFBhdGgocGF0
aC5wYXRoKCksIHsgbWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeEluaXQuYi52YWx1ZU9y
KDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlT3IoMSksIG1h
dHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigwKSB9KTsKKyAgICBt
X3BhdGguYWRkUGF0aChwYXRoLnBhdGgoKSwgeyBtYXRyaXhJbml0LmEudmFsdWVfb3IoMSksIG1h
dHJpeEluaXQuYi52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlX29yKDApLCBtYXRyaXhJ
bml0LmQudmFsdWVfb3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5m
LnZhbHVlX29yKDApIH0pOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAppbmRleCBlZjdkMTA4
Mjk3NDhhZDI3ZWM4YTg2NjdhNDlkNDQ4MGU1ZjVmM2E4Li40YjNhNDE5NjhlMzU0Mjk2OTY2Njgw
MTIwMzlmMWZlNzFhZjUwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE9wdGlvbmFsPFBy
ZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjCiAgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmU5ZDkzM2QzYjI4ZGI1NjY0NzZhYzQ5
MWY0YTFiYjI0ZmZkMzI0OS4uNDQ3YzEyMGFkMTQyOGU2MzljYmMyNTU4ZmM2M2ZkOWE4Y2UyMWVj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKQEAgLTI1MTksNyArMjUxOSw3IEBAIFdlYkdMQW55IFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWlu
dCBpCiBPcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBuYW1lcykKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImdl
dFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2NvbnRleHQtPmdl
dFVuaWZvcm1JbmRpY2VzKHByb2dyYW0ub2JqZWN0KCksIG5hbWVzKTsKIH0KIApAQCAtMjcxMSw3
ICsyNzExLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiB7CiAgICAgaWYg
KGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCmluZGV4IDdiNTc3YTQ5NDMz
MmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMuLjNlMzRhMThmN2Y2ZjY5NGU0Y2FmZWU1ZTEx
NTM3ZmY1NDA1NmFlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gV2ViR0xCdWZmZXI6
OmdldENhY2hlZE1heEluZGV4KEdDR0xlbnVtIHR5cGUpCiAgICAgICAgIGlmIChjYWNoZS50eXBl
ID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUubWF4SW5kZXg7CiAgICAgfQotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWduZWQg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAppbmRleCBjOWE5NDRjNmUxMDI5ZjQ0ZDNkMDRmMjczMzUyMGE5MTBlYzQ4
ZDI0Li5mYTY3NTgzZGUzYTIwNmIxMDhjYTQwMjc2OWE3YmNlNTZkMmQwYjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTIyMCw3ICsyMjAsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiB7CiAg
ICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCBiY2JjODkyNGE5ZjQ4MmVjYzA1ZTE0NDIwOTNmN2QxNjdi
M2M3OTc3Li4xY2FmMDQ2YTUxMDU0Zjk3MDk0MDNjZTZlY2M2YTNkMzVkZmRiOTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9Q
aXhlbEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKICAgICByZXR1cm4gbV9jb250
ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiB9CkBAIC0yODY5LDcg
KzI4NjksNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogT3B0aW9uYWw8VmVjdG9yPFJlZlB0
cjxXZWJHTFNoYWRlcj4+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNo
YWRlcnMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGlmICghdmFsaWRhdGVXZWJHTFBy
b2dyYW1PclNoYWRlcigiZ2V0QXR0YWNoZWRTaGFkZXJzIiwgJnByb2dyYW0pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Y29uc3QgR0NHTGVudW0gc2hhZGVyVHlwZXNbXSA9IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0w6OlZFUlRFWF9TSEFERVIsCkBAIC0yOTQxLDcgKzI5NDEsNyBAQCBXZWJHTEFueSBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMZW51bQogT3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBBbHNvLCB3ZSBuZWVkIHRvIGVuZm9yY2UgcmVx
dWVzdGVkIHZhbHVlcyBvZiAiZmFsc2UiIGZvciBkZXB0aAogICAgIC8vIGFuZCBzdGVuY2lsLCBy
ZWdhcmRsZXNzIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB1bmRlcmx5aW5nCkBAIC01MzE0LDcg
KzUzMTQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4RnVu
Y0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBUZQogCiAgICAgaWYgKCF2YWxpZGF0ZVNl
dHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoZnVuY3Rpb25OYW1lLCBmb3JtYXQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlvbk5h
bWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy0+
Z2V0VHlwZSgpKSA6IFdURjo6bnVsbG9wdCkpCisgICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVmZmVy
VHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJh
eVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZXF1aXJlZCwgc2tpcEJ5dGVzOwpA
QCAtNzQ0Myw3ICs3NDQzLDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAgICAgICAgICAg
IG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fdmVydGV4
QXR0cmliMEJ1ZmZlclNpemUgPSAwOwogICAgICAgICAgICAgbV9mb3JjZUF0dHJpYjBCdWZmZXJS
ZWZpbGwgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyU2l6ZSA9IGJ1ZmZlckRhdGFTaXplOwogICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1
ZmZlclJlZmlsbCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMWMzMWU4NzhmNzExNGUzNWU2NmQ3
ODdhNGQ4NDM5ZWRmOGQ4YjNhMy4uN2RiNDkxZTZkODRmNTZmYzA4MjYyMTBhM2UzZDk2MDIyYzll
MWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgaW5saW5lIE9wdGlvbmFs
PFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShUIHZh
bHVlLCBUIGEKICAgICBjaGVja2VkUmVzdWx0ICs9IENoZWNrZWQ8VD4oYWRkKTsKICAgICBjaGVj
a2VkUmVzdWx0ICo9IENoZWNrZWQ8VD4obXVsdGlwbHkpOwogICAgIGlmIChjaGVja2VkUmVzdWx0
Lmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjaGVja2VkUmVzdWx0LnVuc2FmZUdl
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVj
dGlvblNpdGUuY3BwCmluZGV4IGU1ZmViOTNlYzhiNzNkYjUzZjAwOTdjY2QwNjBkYTNmMGRkZmQy
NGIuLmJjZmY4YTdlY2JjMTAyOTlkNGY5MWQ0NzA1NTYwMzM0YWJmOGE1MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAKQEAg
LTcyNSwxNCArNzI1LDE0IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MQ29uc3RydWN0aW9uU2l0
ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFja0l0CiBPcHRpb25hbDx1bnNp
Z25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdF
bGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVu
dHMuc2l6ZSgpOwogICAgIGRvIHsKICAgICAgICAgLS1pbmRleDsKICAgICAgICAgY29uc3QgYXV0
byYgZW50cnkgPSBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5hdChpbmRleCk7CiAgICAgICAg
IGlmIChlbnRyeS5pc01hcmtlcigpIHx8IG1fb3BlbkVsZW1lbnRzLmNvbnRhaW5zKGVudHJ5LmVs
ZW1lbnQoKSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4
ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4
IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVtZW50
SW5kZXggOiBPcHRpb25hbDx1bnNpZ25lZD4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJl
dHVybiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA8IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRz
LnNpemUoKSA/IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDogT3B0aW9uYWw8dW5zaWduZWQ+KHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChpbmRleCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNzY3OTg0
NjdlMzQwNDZmY2RiNWU1NjRmYjkxZTdmYTM0MjRjNDJhYi4uYzkxNzJjMGE0ZjIxMjRmOWYxYzhj
MWRhYzAwNWI2M2ZmN2M1MTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTIyNSwxMiArMjI1LDEyIEBAIHN0YXRpYyBPcHRpb25h
bDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hh
cmFjdGVyVHlwCiAgICAgLy8gQSBzdHJpbmcgaXMgYSB2YWxpZCBub24tbmVnYXRpdmUgaW50ZWdl
ciBpZiBpdCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBBU0NJSSBkaWdpdHMuCiAgICAgZm9yIChh
dXRvKiBjID0gcG9zaXRpb247IGMgPCBlbmQ7ICsrYykgewogICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdCgqYykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIG9wdGlvbmFsU2lnbmVkVmFs
dWUgPSBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwocG9zaXRpb24sIGVuZCk7CiAgICAgaWYgKCFv
cHRpb25hbFNpZ25lZFZhbHVlIHx8IG9wdGlvbmFsU2lnbmVkVmFsdWUudmFsdWUoKSA8IDApCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gb3B0aW9uYWxTaWduZWRWYWx1ZS52YWx1ZSgpOwogfQpAQCAtMjM5LDcg
KzIzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJ
bnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwCiBPcHRpb25hbDxpbnQ+IHBhcnNlVmFs
aWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYgKGlu
cHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7CiAg
ICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKQEAgLTI1OCw3ICsyNTgs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnRO
dW1iZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZQogICAgIC8vIHBhcnNlRG91YmxlKCkgYWxsb3dz
IHRoZSBzdHJpbmcgdG8gc3RhcnQgd2l0aCBhICcrJyBvciB0byBlbmQgd2l0aCBhICcuJyBidXQg
dGhvc2UKICAgICAvLyBhcmUgbm90IHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgcGVy
IEhUTUwuCiAgICAgaWYgKCpwb3NpdGlvbiA9PSAnKycgfHwgKihwb3NpdGlvbiArIGxlbmd0aCAt
IDEpID09ICcuJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBwYXJzZWRMZW5ndGggPSAwOwogICAgIGRvdWJs
ZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlvbiwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgpOwpA
QCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1M
RmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlCiBPcHRpb25hbDxkb3Vi
bGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0KQog
ewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoTElLRUxZKGlucHV0Lmlz
OEJpdCgpKSkgewogICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApp
bmRleCBjMzEzZGQ1NGY5NDY0NzMxY2U2NmE3NDdkMjg4YTY2MjcxNjBlMGUxLi5iNzFmMWI0ZTRi
MDMzZjI2YTJiMzk3MWJkOGQ4YzE3NGVjM2IxNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9uY2VBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVWYWx1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2go
YXR0cmlidXRlTmFtZSwgcmVmZXJyZXJwb2xpY3lBdHRyKSkgewotICAgICAgICAgICAgICAgIG1f
cmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVZhbHVlLCBSZWZl
cnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlT3IoUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtX3JlZmVycmVyUG9saWN5
ID0gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3Vy
Y2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1w
dHlTdHJpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChtYXRjaChhdHRyaWJ1dGVOYW1lLCBub21vZHVsZUF0dHIpKSB7CiAgICAgICAgICAgICAgICAg
bV9zY3JpcHRJc05vbW9kdWxlID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQogICAg
ICAgICAgICAgICAgIG1fdHlwZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlOwogICAgICAgICAg
ICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgcmVmZXJyZXJwb2xpY3lBdHRyKSkKLSAg
ICAgICAgICAgICAgICBtX3JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShhdHRy
aWJ1dGVWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRl
KS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgICAgICAgICAg
bV9yZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3koYXR0cmlidXRlVmFsdWUsIFJl
ZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFRhZ0lkOjpJbnB1dDoKICAgICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBz
cmNBdHRyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1l
RmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmll
bGRFbGVtZW50LmNwcAppbmRleCBiZWJkNTJhNTRlN2MyYmNlZTAwOWQ1M2ZlOGFjYzUzNzQwZWQ5
ZjA2Li5lZGQwYzE4MTkwOWExZDZjODNkMTcyMTRhZjM4NWFjMWRiMTJhMjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3BwCkBA
IC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1lRmll
bGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuCiB7CiAgICAgYXV0byBlbGVt
ZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBpZiAoIWVsZW1lbnRT
dHlsZS5yZW5kZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0eWxlID0gKmVsZW1lbnRTdHlsZS5y
ZW5kZXJTdHlsZTsKICAgICBhZGp1c3RNaW5XaWR0aChzdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNw
cAppbmRleCA2ZjYxNDBjYmEzNTcxOGRlY2Q1ZWYyZWRjMWNhNjZjODliNDQ1ZWRiLi5hMzFlOTI0
NmY4MTUwY2ZlYzA0ODc2ZTZhNTliYzNkMDJlNTY3NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAK
QEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZQogICAgIH0KIAogICAg
IG1fdHlwZUFoZWFkQnVmZmVyLmFwcGVuZChudW1iZXIpOwotICAgIHNldFZhbHVlQXNJbnRlZ2Vy
KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV90eXBlQWhlYWRCdWZmZXIp
LnZhbHVlT3IoMCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudHMpOworICAgIHNldFZhbHVl
QXNJbnRlZ2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV90eXBlQWhl
YWRCdWZmZXIpLnZhbHVlX29yKDApLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnRzKTsKIAog
ICAgIGtleWJvYXJkRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDYzZjczMTFi
MDlkOTUxNjdkNGVmOGJlYzJkYzVlYjAyZTY4NGJhYWQuLjU3NTJlNzk3NDlkYmNjMDFlYjc0YjNm
YjgzMjYzN2UyZWIyYzA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTkzLDcgKzU5Myw3IEBAIE9wdGlvbmFsPFN0eWxl
OjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNv
bnN0IFJlbmRlCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEtc2xp
ZGVyLXRodW1iIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAgaWYg
KCFob3N0U3R5bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgpKSB7
CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CkBAIC02MDgsNyArNjA4LDcgQEAgT3B0aW9uYWw8
U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5
bGUoY29uc3QgUmVuZGUKICAgICAgICAgbV9zaGFkb3dQc2V1ZG9JZCA9IHNsaWRlclRodW1iU2hh
ZG93UHNldWRvSWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBTbGlkZXJUaHVtYkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTY0Nyw3ICs2NDcsNyBAQCBPcHRpb25hbDxT
dHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUgogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
QXRvbVN0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIiLCBB
dG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWhvc3RTdHlsZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNlIE1l
ZGlhU2xpZGVyUGFydDoKQEAgLTY2Miw3ICs2NjIsNyBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVu
dFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3Qg
UgogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVyQ29udGFpbmVyOwogICAgIH0KIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
Y29uc3QgQXRvbVN0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNTMzMTIxMjUxMDE1NjhmMDhiMWMxMzM0NjJkMWUx
OGRhODg3NGE2OS4uYTQ5YmM5MDAwZDk2MWNlZDk5MDlmZmM1ZjJiNjFhY2FiZDg4NmMxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRT
dHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdAog
ICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4gU2luY2UgdGhlIGVsZW1l
bnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyCiAgICAgICAg
IC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlLCB0aGUgcGFyZW50IGVsZW1lbnQgc3R5bGUs
IGFuZCB0aGUgcmVuZGVyIHZpZXcuCiAgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgxLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7Ci0gICAgICAgIGludCBwaXhl
bHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
IHsgbmV3U3R5bGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RGOjpu
dWxsb3B0IH0pOworICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGlu
dD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCB9KTsKICAgICAgICAgbmV3U3R5bGUt
PnNldEZsZXhCYXNpcyhMZW5ndGggeyBwaXhlbHMsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwogICAg
IH0KIApAQCAtMjQzLDE0ICsyNDMsMTQgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4g
U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWwKIHsKICAg
ICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PihzaGFk
b3dIb3N0KCkpKTsKICAgICBpZiAoaW5wdXQgJiYgaW5wdXQtPm1heFJlc3VsdHMoKSA+PSAwKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKHNoYWRvd0hvc3RTdHlsZSAmJiBzaGFkb3dIb3N0U3R5bGUtPmFwcGVhcmFu
Y2UoKSAhPSBTZWFyY2hGaWVsZFBhcnQpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2Fu
QWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlKG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlLCBm
YWxzZSk7CiAgICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICB9
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0J1ZmZlcmVkTGluZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZl
cmVkTGluZVJlYWRlci5jcHAKaW5kZXggNTdkZDJiZjhhMWM2NzZkOTgzOWRkMjgyOThjOTZiOTMy
YzhjZDMxNi4uYjU4ZmQzOGMwNGEwZjVkYTU5NThkNWY5NTRiNmY1NGNhNzEwMDA0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmNwcApAQCAt
OTgsNyArOTgsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4dExp
bmUoKQogICAgIH0KIAogICAgIEFTU0VSVChtX2J1ZmZlci5pc0VtcHR5KCkpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4
IDcyN2E4ZWExOGRlMTAyYjIwYmQ2NTI4MDk1YmI5NTJlY2FhN2U2ZmIuLmQ5YjQ3ZDIwYjg5YmI2
Nzg2OGIwZGZjZTcxMjI0Mjk2NzE4MGEwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFjay5jcHAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBpbnQgVGV4dFRyYWNrOjp0cmFja0luZGV4
KCkKIAogdm9pZCBUZXh0VHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4KCkKIHsKLSAgICBtX3Ry
YWNrSW5kZXggPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9yZW5kZXJlZFRyYWNrSW5kZXggPSBXVEY6
Om51bGxvcHQ7CisgICAgbV90cmFja0luZGV4ID0gc3RkOjpudWxsb3B0OworICAgIG1fcmVuZGVy
ZWRUcmFja0luZGV4ID0gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFRleHRUcmFjazo6aXNSZW5k
ZXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAppbmRleCA2NjMy
MGQ3NDc1ZTdlNmM2MzhkMGVkMTA2ZWQwMGNlYzY5NGMxZjAzLi44NjA5ZjhmYTE0ZjA1NTRkOWRk
OTFkNjljNTIyNGZkMjdlNDkwM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tF
dmVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxUcmFja0V2
ZW50OjpUcmFja0V2ZW50VHJhY2s+IGNvbnZlcnRUb1RyYWNrRXZlbnRUcmFjayhSZWYKIHsKICAg
ICBzd2l0Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNlIFRyYWNrQmFzZTo6QmFzZVRyYWNr
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNhc2UgVHJhY2tCYXNlOjpUZXh0VHJhY2s6CiAgICAgICAgIHJldHVybiBUcmFj
a0V2ZW50OjpUcmFja0V2ZW50VHJhY2sgeyBSZWZQdHI8VGV4dFRyYWNrPigmZG93bmNhc3Q8VGV4
dFRyYWNrPih0cmFjay5nZXQoKSkpIH07CiAgICAgY2FzZSBUcmFja0Jhc2U6OkF1ZGlvVHJhY2s6
CkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8VHJhY2tFdmVudDo6VHJh
Y2tFdmVudFRyYWNrPiBjb252ZXJ0VG9UcmFja0V2ZW50VHJhY2soUmVmCiAgICAgfQogICAgIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogVHJhY2tFdmVudDo6VHJhY2tFdmVudChjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2Vs
YWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZU
VFNjYW5uZXIuY3BwCmluZGV4IGM3ODA1Yzg3ZDVhNDVmZjhhOTIzYjBiMzBhMzE4Y2IyMTVlNjk1
YzIuLmExMjBhOWJmZGU3NTgzMjc3ZGM4MzBhMmViYzRhNDY4N2VmNzQ2YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHVuc2ln
bmVkIFZUVFNjYW5uZXI6OnNjYW5EaWdpdHMoaW50JiBudW1iZXIpCiAgICAgICAgIHN0cmluZyA9
IHsgbV9kYXRhLmNoYXJhY3RlcnMxNiwgbnVtRGlnaXRzIH07CiAKICAgICAvLyBTaW5jZSB0aGVz
ZSBhcmUgQVNDSUkgZGlnaXRzLCB0aGUgb25seSBmYWlsdXJlIG1vZGUgaXMgb3ZlcmZsb3csIHNv
IHVzZSB0aGUgbWF4aW11bSBpbnQgdmFsdWUuCi0gICAgbnVtYmVyID0gcGFyc2VJbnRlZ2VyPGlu
dD4oc3RyaW5nKS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOworICAg
IG51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KHN0cmluZykudmFsdWVfb3Ioc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ+OjptYXgoKSk7CiAKICAgICAvLyBDb25zdW1lIHRoZSBkaWdpdHMuCiAgICAg
c2Vla1RvKHJ1bk9mRGlnaXRzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNWYyMGIzYzc0YWY5NjliNTc5NDkxNWRhNmEwYzU4ZDA0
NDRkYmJiMy4uYzljZTgwYjJkMWRhYWQ4ZGVlYTI5M2JmYjA5ZDgwOGE1OGI5MzQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTMxMiw3ICsz
MTIsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKCkKICAgICBt
X3JlY29yZGluZ05hbWUgPSB7IH07CiAgICAgbV9idWZmZXJMaW1pdCA9IDEwMCAqIDEwMjQgKiAx
MDI0OwogICAgIG1fYnVmZmVyVXNlZCA9IDA7Ci0gICAgbV9mcmFtZUNvdW50ID0gV1RGOjpudWxs
b3B0OworICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2ZyYW1lc0NhcHR1
cmVkID0gMDsKICAgICBtX2NvbnRlbnRDaGFuZ2VkID0gZmFsc2U7CiAKQEAgLTM4OCwxOSArMzg4
LDE5IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoRE9NTWF0cml4MkRJbml0JiBhcmd1bWVudCkKIHsKICAgICBhdXRvIGFycmF5ID0gSlNP
Tjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVu
dC5hLnZhbHVlT3IoMSkpOwotICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmIudmFsdWVPcigw
KSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYy52YWx1ZU9yKDApKTsKLSAgICBhcnJh
eS0+YWRkSXRlbShhcmd1bWVudC5kLnZhbHVlT3IoMSkpOwotICAgIGFycmF5LT5hZGRJdGVtKGFy
Z3VtZW50LmUudmFsdWVPcigwKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuZi52YWx1
ZU9yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5hLnZhbHVlX29yKDEpKTsKKyAg
ICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5iLnZhbHVlX29yKDApKTsKKyAgICBhcnJheS0+YWRk
SXRlbShhcmd1bWVudC5jLnZhbHVlX29yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVu
dC5kLnZhbHVlX29yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5lLnZhbHVlX29y
KDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5mLnZhbHVlX29yKDApKTsKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpET01NYXRyaXgg
fX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChFbGVtZW50KiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRWxlbWVudHMgYXJlIG5vdCBz
ZXJpYWxpemFibGUsIHNvIGFkZCBhIHN0cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRoZSBh
Y3R1YWwKICAgICAvLyBlbGVtZW50IGNhbm5vdCBiZSByZWNvbnN0cnVjdGVkIGluIHRoZSBmcm9u
dGVuZC4KQEAgLTQxMCwyOCArNDEwLDI4IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxlbWVudCogYXJndW1lbnQpCiB7
CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEo
YXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07CiB9CiAKIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZUJpdG1hcCogYXJndW1lbnQpCiB7CiAgICAgaWYg
KCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VCaXRtYXAgfX07CiB9CiAKIE9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJn
dW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVj
b3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50LgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlU21vb3RoaW5nUXVhbGl0
eSBhcmd1bWVudCkKQEAgLTQ0MiwzNSArNDQyLDM1IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
CiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8ZmxvYXQ+JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oKmFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpOdW1iZXIgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChQYXRo
MkQqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZh
bHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJndW1lbnQpCiB7CiAgICAgaWYg
KCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFzR3JhZGllbnQgfX07CiB9CiAKIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50KQog
ewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1BhdHRlcm4gfX07CiB9CiAK
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+
JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1
ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsK
IH0KIApAQCAtNDkyLDM1ICs0OTIsMzUgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mIGFyZ3Vt
ZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVl
OjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OwogfQogCiBP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07
CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpGbG9hdDMy
QXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJh
eSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6Oklu
dDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRB
cnJheSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6
OlVpbnQzMkFycmF5PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5
cGVkQXJyYXkgfX07CiB9CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQQogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxUeXBlZE9NQ1NTSW1h
Z2VWYWx1ZT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Oklt
YWdlIH19OwogfQogCkBAIC02MTQsNyArNjE0LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EK
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYg
YXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJ
bmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07CiB9
CiAKQEAgLTYyNSw3ICs2MjUsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgYXJndW1lbnQp
CiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07CiB9CiAKQEAgLTYz
Niw3ICs2MzYsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRh
dGFTb3VyY2U+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAg
IHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9u
YWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oKmFy
Z3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1l
bnQodmFsdWUpOwpAQCAtNjU2LDM1ICs2NTYsMzUgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EK
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTEJ1ZmZlciogYXJndW1lbnQpCiB7
CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMQnVmZmVyIH19OwogfQogCiBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZlciogYXJndW1lbnQpCiB7CiAg
ICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgw
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMRnJhbWVidWZmZXIgfX07CiB9CiAKIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFByb2dyYW0qIGFyZ3VtZW50KQogewogICAg
IGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFByb2dyYW0gfX07CiB9CiAKIE9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFy
Z3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6V2ViR0xRdWVyeSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9CiAKQEAgLTcxOSw0MiArNzE5LDQy
IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
V2ViR0xTYW1wbGVyIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2Vi
R0xTaGFkZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFNo
YWRlciB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU3luYyog
YXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6
VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU3luYyB9fTsKIH0K
IAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1lbnQp
CiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsKIH0KIAogT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24gfX07
CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdCB9fTsKIH0KIApAQCAtNzY1LDcgKzc2NSw3IEBAIE9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sg
SlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVHJhbnNm
b3JtRmVlZGJhY2sgfX07CiB9CiAKQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIEluc3BlY3RvckNh
bnZhczo6c2V0RnJhbWVDb3VudChsb25nIGZyYW1lQ291bnQpCiAgICAgaWYgKGZyYW1lQ291bnQg
PiAwKQogICAgICAgICBtX2ZyYW1lQ291bnQgPSBzdGQ6Om1pbjxsb25nPihmcmFtZUNvdW50LCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fZnJh
bWVDb3VudCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mcmFtZUNvdW50ID0gc3RkOjpudWxs
b3B0OwogfQogCiBib29sIEluc3BlY3RvckNhbnZhczo6b3ZlckZyYW1lQ291bnQoKSBjb25zdApA
QCAtOTE1LDcgKzkxNSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3Rv
ckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJlCiAgICAgICAgICAgICBp
ZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpXZWJHTDI7CiAjZW5kaWYKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9LAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgICAgIFtdIChzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsKQEAgLTkyNCw3ICs5MjQsNyBAQCBS
ZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2JqZWN0
Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUpIHsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0K
ICAgICApOwogICAgIGlmICghY29udGV4dFR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAppbmRleCAyZTU3ZDI4
NDRlMzBjNzBiMjliMGYyMmJiYjhmZDg5YjAzMTU1NjQ2Li42OTNhY2ZlNTM0MzUxNzBkMmRmNWU5
MDI5Y2NmNTJjMDZhYjEzNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyCiB7IFwKICAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBlbmFi
bGVkQ2FudmFzQWdlbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCkpIFwKICAgICAgICAgcmV0dXJu
IGNhbnZhc0FnZW50LT5wcm9jZXNzQXJndW1lbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgYXJn
dW1lbnQpOyBcCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7IFwKIH0gXAogLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTgogICAg
IEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19B
UkdVTUVOVF9ERUZJTklUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDYzMWMzYWE2YjM3MjVk
NzhlODgxOWQ5ZjE4MjNmNmJlNmEyZmM0MjQuLmU3NzA2YmU0NDJmOTE3ZmNjOGY0N2JiOTljZGRm
NmU5NjQ3MTE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdo
dCgpCiB7CiAgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVkUGFn
ZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2libGVI
ZWlnaHQoKTsKICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShpbnNw
ZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhlaWdo
dCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICB1
bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0YWNo
ZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmFs
dWUpLnZhbHVlX29yKDApOwogCiAgICAgLy8gVGhpcyBjYWxsIG1pZ2h0IG5vdCBnbyB0aHJvdWdo
IChpZiB0aGUgd2luZG93IHN0YXJ0cyBvdXQgZGV0YWNoZWQpLCBidXQgaWYgdGhlIHdpbmRvdyBp
cyBpbml0aWFsbHkgY3JlYXRlZCBhdHRhY2hlZCwKICAgICAvLyBJbnNwZWN0b3JDb250cm9sbGVy
OjphdHRhY2hXaW5kb3cgaXMgbmV2ZXIgY2FsbGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0
byBzZXQgdGhlIGF0dGFjaGVkV2luZG93SGVpZ2h0LgpAQCAtMzI4LDEyICszMjgsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWln
aHQoKQogT3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVh
dGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1
YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB2
YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhjZXB0
aW9uKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24gd2hp
bGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9uLmVy
cm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gdmFs
dWVPckV4Y2VwdGlvbi52YWx1ZSgpLnRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+
ZnJvbnRlbmRHbG9iYWxPYmplY3QoKSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgT3B0aW9uYWw8Ym9v
bD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVh
bihJbnNwZWN0b3IKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc0RlYnVn
Z2luZ0VuYWJsZWQoKQogewotICAgIHJldHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKG1f
ZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygiaXNE
ZWJ1Z2dpbmdFbmFibGVkIl9zKSkudmFsdWVPcihmYWxzZSk7CisgICAgcmV0dXJuIGV2YWx1YXRp
b25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFu
ZFdpdGhSZXN1bHRTeW5jKCJpc0RlYnVnZ2luZ0VuYWJsZWQiX3MpKS52YWx1ZV9vcihmYWxzZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0RGVidWdnaW5nRW5h
YmxlZChib29sIGVuYWJsZWQpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpzZXREZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogYm9v
bCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZCgpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQ
SURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc1RpbWVsaW5lUHJv
ZmlsaW5nRW5hYmxlZCJfcykpLnZhbHVlT3IoZmFsc2UpOworICAgIHJldHVybiBldmFsdWF0aW9u
UmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRX
aXRoUmVzdWx0U3luYygiaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiX3MpKS52YWx1ZV9vcihm
YWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0VGltZWxp
bmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6aXNQ
cm9maWxpbmdKYXZhU2NyaXB0KCkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGlvblJlc3VsdFRvQm9v
bGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdFN5
bmMoImlzUHJvZmlsaW5nSmF2YVNjcmlwdCJfcykpLnZhbHVlT3IoZmFsc2UpOworICAgIHJldHVy
biBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNw
YXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygiaXNQcm9maWxpbmdKYXZhU2NyaXB0Il9zKSkudmFs
dWVfb3IoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnN0
YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGEyNDk1OGI3YjJkZTE3MWNhNzZiYWU5
NmY1MzYwYWFlZjkyZjEzZmIuLjUxMjJhMjMxYzVmZWE5OGEyNThhMzM0M2QxOTAwMDUyNDI3MDZl
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpEb2NrU2lkZT4gZG9ja1NpZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmkKICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6TGVmdDsKICAg
ICBpZiAoZG9ja1NpZGVTdHJpbmcgPT0gImJvdHRvbSIpCiAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJvdHRvbTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0OjpzdXBwb3J0c0RvY2tTaWRlKGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcpCkBA
IC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldEZvcmNlZEFw
cGVhcmFuY2UoU3RyaW5nIGFwcGVhcmFuY2UpCiAgICAgfQogCiAgICAgaWYgKG1fZnJvbnRlbmRQ
YWdlKQotICAgICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlk
ZShXVEY6Om51bGxvcHQpOworICAgICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0VXNlRGFya0FwcGVh
cmFuY2VPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAg
bV9jbGllbnQtPnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkFw
cGVhcmFuY2U6OlN5c3RlbSk7CiB9CkBAIC00MTUsNyArNDE1LDcgQEAgU3RyaW5nIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6cG9ydCgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgYXV0byBwYWdlSUQgPSBtX2Zy
b250ZW5kUGFnZSA/IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5wYWdlSUQoKSA6IFdURjo6
bnVsbG9wdDsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJvbnRlbmRQYWdlID8gbV9mcm9udGVuZFBh
Z2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogc3RkOjpudWxsb3B0OwogICAgIFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShXVEZN
b3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90U21h
cnRSZXBsYWNlKTsKIH0KIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRl
Q29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9zdDo6Q29udGV4dE1lbnVJdGVt
PiYmCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHR5cGUgPSBpdGVtLnR5cGUgPT0gImNoZWNr
Ym94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgICAgICBhdXRvIGFj
dGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNl
Q3VzdG9tVGFnICsgaXRlbS5pZC52YWx1ZU9yKDApKTsKKyAgICAgICAgYXV0byBhY3Rpb24gPSBz
dGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRh
ZyArIGl0ZW0uaWQudmFsdWVfb3IoMCkpOwogICAgICAgICBDb250ZXh0TWVudUl0ZW0gbWVudUl0
ZW0gPSB7IHR5cGUsIGFjdGlvbiwgaXRlbS5sYWJlbCB9OwogICAgICAgICBpZiAoaXRlbS5lbmFi
bGVkKQogICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZCgqaXRlbS5lbmFibGVkKTsKQEAg
LTYzNywyMyArNjM3LDIzIEBAIHN0YXRpYyBPcHRpb25hbDxEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dDo6VmFsdWVQYXlsb2FkPiB2YWx1ZVBheWxvYWRGcm9tSlNPTlZhbHVlCiAgICAgY2FzZSBKU09O
OjpWYWx1ZTo6VHlwZTo6TnVsbDoKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3Q6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY2FzZSBKU09OOjpWYWx1
ZTo6VHlwZTo6Qm9vbGVhbjoKLSAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
OjpWYWx1ZVBheWxvYWQodmFsdWUtPmFzQm9vbGVhbigpLnZhbHVlT3IoZmFsc2UpKTsKKyAgICAg
ICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQodmFsdWUtPmFz
Qm9vbGVhbigpLnZhbHVlX29yKGZhbHNlKSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBl
OjpEb3VibGU6Ci0gICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQ
YXlsb2FkKHZhbHVlLT5hc0RvdWJsZSgpLnZhbHVlT3IoMCkpOworICAgICAgICByZXR1cm4gRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZCh2YWx1ZS0+YXNEb3VibGUoKS52YWx1
ZV9vcigwKSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBlOjpJbnRlZ2VyOgotICAgICAg
ICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZChzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHZhbHVlLT5hc0ludGVnZXIoKS52YWx1ZU9yKDApKSk7CisgICAgICAgIHJl
dHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4odmFsdWUtPmFzSW50ZWdlcigpLnZhbHVlX29yKDApKSk7CiAKICAgICBjYXNlIEpT
T046OlZhbHVlOjpUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6VmFsdWVQYXlsb2FkKHZhbHVlLT5hc1N0cmluZygpKTsKICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2dEaWFn
bm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYgcGF5bG9h
ZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFk
ZXJQcm9ncmFtLmNwcAppbmRleCBkOTA5OWYxYmU4NzY4MmRiMjljMzZjOTZiZGE5OWMxNThiYzgw
MDZiLi5kZTVjZDZlOTUxOTk4NGJhNWJkMzhmMzFiNzBkNTczMTIzYWUwMmVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3BwCkBA
IC0yNDksMTQgKzI0OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpTaGFk
ZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iagogICAgICAgICAgICAg
ICAgICAgICBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OlJlbmRl
cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAogI2VuZGlmCiAgICAgICAg
IFsmXSAoTW9ub3N0YXRlKSAtPiBQcm9ncmFtVHlwZVR5cGUgewogI2lmIEVOQUJMRShXRUJHTCkg
fHwgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vu
ZGlmCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICk7CiAgICAgaWYgKCFwcm9ncmFtVHlwZSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CmluZGV4IDhjNzIxNTdiOGM5YzJhNTI1NDJkNDU4NjNiZTZjODM2ZTNhZWUzYmYuLjEwY2YyODU5
MDRmOWQ2MTMzNjZjNmI3MDViNWFlY2FjNjA3YjVmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTkzNSw3ICs5MzUsNyBAQCBF
eGNlcHRpb25PcjxDU1NTdHlsZVJ1bGUqPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IpCiAgICAgaWYgKHRleHQuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiB0ZXh0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gYWRkUnVsZVJl
c3VsdCA9IG1fcGFnZVN0eWxlU2hlZXQtPmFkZFJ1bGUoc2VsZWN0b3IsIGVtcHR5U3RyaW5nKCks
IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBhZGRSdWxlUmVzdWx0ID0gbV9wYWdlU3R5bGVTaGVl
dC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgc3RkOjpudWxsb3B0KTsKICAgICBp
ZiAoYWRkUnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFkZFJ1bGVS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDZjZWRhYjNjNTg5OGZhODRkZDU5ZjYxMWY3
MTUwMTgzYzAyY2FlZWUuLjllNjliMjM0MWI5NTFhZWZjYjlkMTlkNDM1YTk4YjY1OWI2YTUxMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3Ry
aW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBjbGVhcihP
cHRpb25hbDxTdHJpbmc+IHByZXNlcnZlZExvYWRlcklkID0gc3RkOjpudWxsb3B0KTsKICAgICBW
ZWN0b3I8UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQuY3BwCmluZGV4IDllN2FkOTk1MDk2YzlhYWY5Njg4NGU3NDE4NTRhMTNkYWFiMzljZTIu
LjMwZDc2MmZjM2M4Y2E1M2RhN2I4MzllNGZmODMxMDIwMGFkZTc5MzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9u
QWdlbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBz
dGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwcm90b2NvbFZhbHVlRm9yU2Vjb25kcyhjb25zdCBTZWNv
bmRzJiBzZWNvbmRzKQogewogICAgIGlmIChzZWNvbmRzID09IFNlY29uZHM6OmluZmluaXR5KCkg
fHwgc2Vjb25kcyA9PSBTZWNvbmRzOjpuYW4oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vjb25kcy5taWxs
aXNlY29uZHMoKTsKIH0KIApAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG9j
b2w6OkFuaW1hdGlvbjo6UGxheWJhY2tEaXJlY3Rpb24+IHByb3RvY29sVmFsdWVGb3JQbGF5YmFj
awogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPFBy
b3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmls
bE1vZGUgZmlsbE1vZGUpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFByb3Rv
Y29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmlsbE1v
ZGUKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBSZWY8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6QW5pbWF0aW9uOjpLZXlmcmFtZT4+IGJ1aWxkT2JqZWN0Rm9yS2V5
ZnJhbWVzKEtleWZyYW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZDYy
Njc2OTE3ZWEwNzFlZWMxOGMwZjYwNTZlZGU2OWQ4Y2IzYjc4OS4uYzJiMTgwMDM3ZTk0N2NjNmJk
NTI2YzM0NmNkYzdhOGFjNmZmYmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTkzOSw3ICs5MzksNyBAQCBP
cHRpb25hbDxQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmxheW91dENvbnRleHRUeXBlRgogewogICAgIGlmIChpczxSZW5kZXJHcmlkPihyZW5kZXJl
cikpCiAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZTo6R3Jp
ZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHN0YXRpYyB2b2lkIHB1c2hDaGlsZHJlbk5vZGVzVG9Gcm9udGVuZElmTGF5b3V0Q29udGV4
dFR5cGVQcmVzZW50KEluc3BlY3RvckRPTUFnZW50JiBkb21BZ2VudCwgQ29udGFpbmVyTm9kZSYg
bm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYjE2Nzg0ODA5MDgyZTY5YzIxZjNmOTYwZTI2ZTAx
Y2RlNzY3YTU4Ny4uZjA0NWMzNDI2MWY1OGY3NzZlZDNhY2JhZDkxNDhmMmNhNGNkOWQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JD
YW52YXNBZ2VudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdP
cjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZSgpCiAKICAgICByZXNldCgpOwog
Ci0gICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4geyB9OwogfQpAQCAtMjg0LDcgKzI4NCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRSZWNvcmRpbmdBdXRvQ2FwdHVyZUZy
YW1lCiAgICAgaWYgKGNvdW50ID4gMCkKICAgICAgICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZy
YW1lQ291bnQgPSBjb3VudDsKICAgICBlbHNlCi0gICAgICAgIG1fcmVjb3JkaW5nQXV0b0NhcHR1
cmVGcmFtZUNvdW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3JlY29yZGluZ0F1dG9DYXB0
dXJlRnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCmluZGV4IDAwYzRkYjNkNmU3ZDk5NDk0OWZiOTBjZWRjMWJjOTdjMmYxOTc4YmUuLmU2MzYy
YzU2ZWNhNzAwNzU0ZDFhNDNlNDZhMDFmOGFlZmJjOGNlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzUs
MTMgKzEzNSwxMyBAQCBzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAweDIw
MjYsIDAgfTsKIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JBQ29s
b3I6OnJLZXkpOwogICAgIGF1dG8gZyA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29s
OjpET006OlJHQkFDb2xvcjo6Z0tleSk7CiAgICAgYXV0byBiID0gY29sb3JPYmplY3QtPmdldElu
dGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpiS2V5KTsKICAgICBpZiAoIXIgfHwgIWcg
fHwgIWIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+Z2V0RG91YmxlKFByb3RvY29s
OjpET006OlJHQkFDb2xvcjo6YUtleSk7CiAgICAgaWYgKCFhKQpAQCAtMTUxLDcgKzE1MSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IGNvbG9yT2JqZWN0KQogCiBzdGF0aWMgQ29sb3IgcGFyc2VDb25maWdDb2xvcihjb25zdCBTdHJp
bmcmIGZpZWxkTmFtZSwgSlNPTjo6T2JqZWN0JiBjb25maWdPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IHBhcnNlQ29sb3IoY29uZmlnT2JqZWN0LmdldE9iamVjdChmaWVsZE5hbWUpKS52YWx1ZU9yKENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICByZXR1cm4gcGFyc2VDb2xvcihjb25maWdPYmpl
Y3QuZ2V0T2JqZWN0KGZpZWxkTmFtZSkpLnZhbHVlX29yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VRdWFkKFJlZjxKU09OOjpBcnJheT4mJiBxdWFkQXJy
YXksIEZsb2F0UXVhZCogcXVhZCkKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdoCiAgICAgfQogCiAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVl
PEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oUHJv
dG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tleSkudmFsdWVPcihmYWxzZSk7
CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZvS2V5
KS52YWx1ZV9vcihmYWxzZSk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VD
b25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmNvbnRlbnRDb2xvcktl
eSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRk
aW5nID0gcGFyc2VDb25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OnBh
ZGRpbmdDb2xvcktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdo
dENvbmZpZzo6Ym9yZGVyQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwpAQCAt
MTI5Niw4ICsxMjk2LDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5PiYKIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBx
dWFkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
IG91dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7CiAg
ICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6Okhp
Z2hsaWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNl
Q29sb3IoV1RGTW92ZShjb2xvcikpLnZhbHVlT3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwot
ICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1vdmUo
b3V0bGluZUNvbG9yKSkudmFsdWVPcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgaGln
aGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihXVEZNb3ZlKGNvbG9yKSkudmFsdWVf
b3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVu
dE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1vdmUob3V0bGluZUNvbG9yKSkudmFsdWVfb3IoQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNvb3Jk
aW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZhbHNl
OwogICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCAqaGlnaGxpZ2h0
Q29uZmlnKTsKIH0KQEAgLTE0NjMsOCArMTQ2Myw4IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShjb25zdCBQcm90b2NvbDo6
CiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBhdXRvIGhpZ2hsaWdo
dENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+
KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMg
c2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgotICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnQgPSBwYXJzZUNvbG9yKFdURk1vdmUoY29sb3IpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3BhcmVu
dEJsYWNrKTsKLSAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNl
Q29sb3IoV1RGTW92ZShvdXRsaW5lQ29sb3IpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihXVEZN
b3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihXVEZNb3ZlKG91dGxp
bmVDb2xvcikpLnZhbHVlX29yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAgbV9v
dmVybGF5LT5oaWdobGlnaHROb2RlKGZyYW1lLT5vd25lckVsZW1lbnQoKSwgKmhpZ2hsaWdodENv
bmZpZyk7CiAgICAgfQogCkBAIC0xNDkxLDExICsxNDkxLDExIEBAIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3Zlcmxh
eShJbnNwCiAKICAgICBJbnNwZWN0b3JPdmVybGF5OjpHcmlkOjpDb25maWcgY29uZmlnOwogICAg
IGNvbmZpZy5ncmlkQ29sb3IgPSAqcGFyc2VkQ29sb3I7Ci0gICAgY29uZmlnLnNob3dMaW5lTmFt
ZXMgPSBzaG93TGluZU5hbWVzLnZhbHVlT3IoZmFsc2UpOwotICAgIGNvbmZpZy5zaG93TGluZU51
bWJlcnMgPSBzaG93TGluZU51bWJlcnMudmFsdWVPcihmYWxzZSk7Ci0gICAgY29uZmlnLnNob3dF
eHRlbmRlZEdyaWRMaW5lcyA9IHNob3dFeHRlbmRlZEdyaWRMaW5lcy52YWx1ZU9yKGZhbHNlKTsK
LSAgICBjb25maWcuc2hvd1RyYWNrU2l6ZXMgPSBzaG93VHJhY2tTaXplcy52YWx1ZU9yKGZhbHNl
KTsKLSAgICBjb25maWcuc2hvd0FyZWFOYW1lcyA9IHNob3dBcmVhTmFtZXMudmFsdWVPcihmYWxz
ZSk7CisgICAgY29uZmlnLnNob3dMaW5lTmFtZXMgPSBzaG93TGluZU5hbWVzLnZhbHVlX29yKGZh
bHNlKTsKKyAgICBjb25maWcuc2hvd0xpbmVOdW1iZXJzID0gc2hvd0xpbmVOdW1iZXJzLnZhbHVl
X29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0V4dGVuZGVkR3JpZExpbmVzID0gc2hvd0V4dGVu
ZGVkR3JpZExpbmVzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd1RyYWNrU2l6ZXMg
PSBzaG93VHJhY2tTaXplcy52YWx1ZV9vcihmYWxzZSk7CisgICAgY29uZmlnLnNob3dBcmVhTmFt
ZXMgPSBzaG93QXJlYU5hbWVzLnZhbHVlX29yKGZhbHNlKTsKIAogICAgIG1fb3ZlcmxheS0+c2V0
R3JpZE92ZXJsYXlGb3JOb2RlKCpub2RlLCBjb25maWcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CmluZGV4IGQyMjEzZjZkYzc3MWRmMWE0NzU0OTI4NmZhODMzZjgwMTQ5YzMzYmUuLjc1ZGU1N2E1
ZWQ4ZjhlN2NmMGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJ
REJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29udGV4
dCgpLCBkYXRhYmFzZU5hbWUsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byByZXN1bHQgPSBpZGJG
YWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgc3RkOjpudWxsb3B0KTsKICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlcXVlc3RDYWxsYmFjaygp
LnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQzMDAxMmM1ZjE3YWI3ZTMzMmQ5MjBlOTkzODViODMy
ZWQ1YWM1YzUuLmQ5OTgzYzAwNjgzMTYzNzUyMTMwYmM2NThkNmQ1ZDc3MDk1ZmY1OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKGNvbnN0IFN0cmlu
ZyYKIE9wdGlvbmFsPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp0ZXh0Q29udGVudEZv
ckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBp
ZiAoIUluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY2FjaGVkUmVzb3Vy
Y2UubWltZVR5cGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgYmFzZTY0
RW5jb2RlZDsKQEAgLTEzNjgsNyArMTM2OCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojp0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3RyaW5n
KiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBzdGF0
aWMgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJlc291cmNlRGF0YShjb25zdCBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UgogICAgIGlmIChyZXNvdXJjZURhdGEuY2FjaGVkUmVzb3VyY2Uo
KSkKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6dGV4dENvbnRlbnRGb3JD
YWNoZWRSZXNvdXJjZSgqcmVzb3VyY2VEYXRhLmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNjM5MzJkYWY5MTY4
YmZiYzZhZWUzYmUyZWY3Y2MzMTJjNGMyMTQxZC4uMTExMWFjYzI1ODhjNjkxNzhjYzY0YjkzMTI4
OTRjNDZhMTI0OGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzY2LDI1ICszNjYsMjUgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKCkKICAg
ICBvdmVycmlkZVVzZXJBZ2VudChudWxsU3RyaW5nKCkpOwogICAgIHNldEVtdWxhdGVkTWVkaWEo
ZW1wdHlTdHJpbmcoKSk7CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpIHx8IEhBVkUoT1NfREFS
S19NT0RFX1NVUFBPUlQpCi0gICAgc2V0Rm9yY2VkQXBwZWFyYW5jZShXVEY6Om51bGxvcHQpOwor
ICAgIHNldEZvcmNlZEFwcGVhcmFuY2Uoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAgYXV0
byYgaW5zcGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0ZWRQYWdlLnNldHRpbmdzKCk7Ci0g
ICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkSW5z
cGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Mu
c2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZEluc3BlY3Rvck92ZXJyaWRlKFdURjo6bnVs
bG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEltYWdlc0VuYWJsZWRJbnNwZWN0
b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRN
ZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb25JbnNwZWN0b3JPdmVycmlkZShXVEY6
Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRNb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQ
YWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NJbnNwZWN0b3JPdmVycmlkZShX
VEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVk
SW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGlu
Z3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rvck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0g
ICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlckluc3BlY3Rvck92
ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFdlYlJU
Q0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBp
bnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2VjdXJpdHlFbmFibGVkSW5zcGVjdG9yT3ZlcnJp
ZGUoV1RGOjpudWxsb3B0KTsKLQotICAgIG1fY2xpZW50LT5zZXREZXZlbG9wZXJQcmVmZXJlbmNl
T3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQsIFdURjo6bnVsbG9wdCk7Ci0gICAgbV9jbGll
bnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVs
b3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVuYWJsZWQsIFdURjo6bnVsbG9wdCk7Ci0gICAg
bV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6
OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFdURjo6bnVs
bG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdl
U2V0dGluZ3Muc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZEluc3BlY3Rvck92ZXJyaWRl
KHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEltYWdlc0VuYWJs
ZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VTZXR0
aW5ncy5zZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb25JbnNwZWN0b3JPdmVy
cmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRNb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBp
bnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NJbnNwZWN0b3JP
dmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRTY3Jp
cHRFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQ
YWdlU2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVs
bG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlcklu
c3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdz
LnNldFdlYlJUQ0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0
KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2VjdXJpdHlFbmFibGVkSW5zcGVj
dG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKworICAgIG1fY2xpZW50LT5zZXREZXZlbG9wZXJQ
cmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQsIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGll
bnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVuYWJsZWQsIHN0ZDo6bnVsbG9w
dCk7CisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0
b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQs
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNTEwLDcgKzUxMCw3IEBA
IHN0YXRpYyBSZWY8UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4gYnVpbGRPYmplY3RGb3JDb29raWUo
Y29uc3QgQ29va2llJiBjb29raWUpCiAgICAgICAgIC5zZXRWYWx1ZShjb29raWUudmFsdWUpCiAg
ICAgICAgIC5zZXREb21haW4oY29va2llLmRvbWFpbikKICAgICAgICAgLnNldFBhdGgoY29va2ll
LnBhdGgpCi0gICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMCkpCisg
ICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlX29yKDApKQogICAgICAgICAu
c2V0U2Vzc2lvbihjb29raWUuc2Vzc2lvbikKICAgICAgICAgLnNldEh0dHBPbmx5KGNvb2tpZS5o
dHRwT25seSkKICAgICAgICAgLnNldFNlY3VyZShjb29raWUuc2VjdXJlKQpAQCAtNTY5LDMxICs1
NjksMzEgQEAgc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmUKICAgICBjb29raWUubmFtZSA9IGNvb2tp
ZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6Om5hbWVLZXkpOwogICAg
IGlmICghY29va2llLm5hbWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1
ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUu
dmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjp2
YWx1ZUtleSk7CiAgICAgaWYgKCFjb29raWUudmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgY29va2llLmRvbWFpbiA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpQYWdlOjpDb29raWU6OmRvbWFpbktleSk7CiAgICAgaWYgKCFjb29raWUuZG9tYWluKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21haW4gaW4gZ2l2
ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+
Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhLZXkpOwogICAgIGlmICghY29v
a2llLnBhdGgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGh0dHBPbmx5ID0g
Y29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6Omh0dHBPbmx5
S2V5KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFs
aWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIGNvb2tpZS5odHRwT25seSA9ICpodHRwT25seTsKQEAgLTYwMSw3ICs2MDEsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBSZQogICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0LT5nZXRC
b29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSk7CiAgICAgaWYgKCFzZWN1
cmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3Vy
ZSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5zZWN1cmUgPSAqc2Vj
dXJlOwpAQCAtNjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb29raWU+IHBhcnNlQ29v
a2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlCiAgICAgY29v
a2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShQcm90b2NvbDo6UGFnZTo6Q29v
a2llOjpleHBpcmVzS2V5KTsKICAgICBpZiAoIXNlc3Npb24gJiYgIWNvb2tpZS5leHBpcmVzKSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBleHBpcmVzIGlu
IGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2llLnNlc3Npb24gPSAqc2Vzc2lv
bjsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxDb29raWU+IHBhcnNlQ29v
a2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlCiAgICAgYXV0
byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdl
OjpDb29raWU6OnNhbWVTaXRlS2V5KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7CiAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZl
biBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2FtZVNpdGUgPSBQcm90b2NvbDo6SGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpQYWdlOjpDb29raWVTYW1l
U2l0ZVBvbGljeT4oc2FtZVNpdGVTdHJpbmcpOwogICAgIGlmICghc2FtZVNpdGUpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVu
IGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc3dpdGNoIChzYW1lU2l0ZS52YWx1ZSgpKSB7CkBA
IC0xMDMxLDcgKzEwMzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5nJgogUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRGb3JjZWRBcHBlYXJhbmNl
KE9wdGlvbmFsPFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYmIGFwcGVhcmFuY2UpCiB7CiAg
ICAgaWYgKCFhcHBlYXJhbmNlKSB7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS5zZXRVc2VEYXJr
QXBwZWFyYW5jZU92ZXJyaWRlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1faW5zcGVjdGVkUGFn
ZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKFByb3RvY29s
OjpET006OgogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRp
b246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywg
c3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiB9CiAKIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3QoaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFByb3RvY29sOjpQYWdlOjpDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RSZWN0
KGludCB4LCBpbnQgeSwgaQogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwogCi0gICAgcmV0dXJu
IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2
ZVJlc29sdXRpb246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdl
L3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiB9CiAKICNp
ZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKQEAgLTExMTgsNyArMTExOCw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVu
U2l6ZU92ZXJyaWRlKE9wdGlvbmFsCiAgICAgaWYgKGhlaWdodCAmJiAqaGVpZ2h0IDw9IDApCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiU2NyZWVuIGhlaWdodCBvdmVycmlkZSBzaG91
bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIl9zKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS5tYWlu
RnJhbWUoKS5zZXRPdmVycmlkZVNjcmVlblNpemUoRmxvYXRTaXplKHdpZHRoLnZhbHVlT3IoMCks
IGhlaWdodC52YWx1ZU9yKDApKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgpLnNl
dE92ZXJyaWRlU2NyZWVuU2l6ZShGbG9hdFNpemUod2lkdGgudmFsdWVfb3IoMCksIGhlaWdodC52
YWx1ZV9vcigwKSkpOwogICAgIHJldHVybiB7IH07CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCmluZGV4IDkwNmE4ZTg0M2JmNzQ1ZDBlNGQzMGNkMWRlMjRiZWZlYzVjNTkwOTEuLjU0MTM3
MDdiNTdkOTRlYWIyM2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNw
cApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dG9nZ2xl
TWVtb3J5SW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OnRvZ2dsZVRpbWVsaW5lSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3Rh
dGUpCiB7CiAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQpCi0gICAgICAg
IGludGVybmFsU3RhcnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgaW50ZXJuYWxTdGFydChzdGQ6
Om51bGxvcHQpOwogICAgIGVsc2UKICAgICAgICAgaW50ZXJuYWxTdG9wKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01E
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjODhiYmRjMDNkMjU0MTBmYjY5NThiMGYwOWFmYzViZjE4
OGRiMjU3Li41ZmY5NTZjMGQ1MjI3NmY5Yzk0MDQ4NmZmNWMwMGQ0NWI4ZmZjNTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
c2l6ZV90PiBjYWxjdWxhdGVEaXN0YW5jZShOb2RlJiBjaGlsZCwgTm9kZSYgYW5jZXN0b3IpCiAK
ICAgICAgICAgY3VycmVudCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoY3Vy
cmVudCk7CiAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBkaXN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcAppbmRleCA2
MzNiY2U2ZThmM2MwNzg1NjMyZWI3ZjI2ZDE3MmY2MDE2YjNlZmQ5Li4yYjkwNzM1N2NiY2JhYjVi
NTA5ZTlkNTgyYzAzNGNkMDhmM2M0ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2Nv
cGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVXNlckdlc3R1
cmVFbXVsYXRpb25TY29wZTo6VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZShQYWdlJiBpbnNwZWN0
ZWRQYWdlLCBib29sIGVtdWxhdGVVc2VyR2VzdHVyZSkKICAgICA6IG1fcGFnZUNocm9tZUNsaWVu
dChpbnNwZWN0ZWRQYWdlLmNocm9tZSgpLmNsaWVudCgpKQotICAgICwgbV9nZXN0dXJlSW5kaWNh
dG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KQorICAgICwgbV9nZXN0
dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KQogICAg
ICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91c2Vy
V2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCmlu
ZGV4IGVhYTI0MmYxOGRmMGU5YTcyZTJlM2QwMmI1NzVhYjY3YjE5Zjg2ZTMuLmMzOWQ1NjUzNDQ1
NzQ0ZDJmYTYyMjg4ZjNhMjlmZGU5NmRmYzFmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5U
eXBlcy5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4gewogICAg
IC8vIGluZmxvdyBjaGlsZCdzIGNhY2hlZCBtYXJnaW4gdmFsdWVzLgogICAgIHN0cnVjdCBQb3Np
dGl2ZUFuZE5lZ2F0aXZlUGFpciB7CiAgICAgICAgIHN0cnVjdCBWYWx1ZXMgewotICAgICAgICAg
ICAgYm9vbCBpc05vblplcm8oKSBjb25zdCB7IHJldHVybiBwb3NpdGl2ZS52YWx1ZU9yKDApIHx8
IG5lZ2F0aXZlLnZhbHVlT3IoMCk7IH0KKyAgICAgICAgICAgIGJvb2wgaXNOb25aZXJvKCkgY29u
c3QgeyByZXR1cm4gcG9zaXRpdmUudmFsdWVfb3IoMCkgfHwgbmVnYXRpdmUudmFsdWVfb3IoMCk7
IH0KIAogICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcG9zaXRpdmU7CiAgICAgICAg
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBuZWdhdGl2ZTsKQEAgLTc0LDE0ICs3NCwxNCBAQCBz
dHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IG1h
cmdpbkJlZm9yZShjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHVzZWRWZXJ0aWNhbE1hcmdpbikK
IHsKLSAgICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5iZWZvcmUu
dmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSk7Cisg
ICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuYmVmb3JlLnZhbHVl
X29yKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlKTsKIH0KIAog
c3RhdGljIGlubGluZSBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFVzZWRWZXJ0aWNhbE1h
cmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKQogewogICAgIGlmICh1c2VkVmVydGljYWxNYXJnaW4u
Y29sbGFwc2VkVmFsdWVzLmlzQ29sbGFwc2VkVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIDBfbHU7
Ci0gICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuYWZ0ZXIudmFs
dWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsKKyAgICBy
ZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5hZnRlci52YWx1ZV9vcih1
c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsKIH0KIAogc3RydWN0
IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB7CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBVc2Vk
SG9yaXpvbnRhbE1hcmdpbiB7CiB9OwogCiBzdHJ1Y3QgUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUg
ewotICAgIExheW91dFVuaXQgdXNlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gY29sbGFwc2VkVmFs
dWUudmFsdWVPcihub25Db2xsYXBzZWRWYWx1ZSk7IH0KKyAgICBMYXlvdXRVbml0IHVzZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlZFZhbHVlLnZhbHVlX29yKG5vbkNvbGxhcHNlZFZh
bHVlKTsgfQogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkVmFsdWU7CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29sbGFwc2VkVmFsdWU7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3Np
dGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5CZWZv
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5j
cHAKaW5kZXggNTA2ZTQ3M2Y2Y2RkYjFhMjdmOTRjYjZjNzQ5ZjljMGUxZjdhMGNhNS4uY2U1Y2E3
NDc2MThjYzc4NmZhYzlhOTg0ZjljNTk4OTRlMDg4YjhkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMTI3LDggKzEyNyw4IEBA
IHN0YXRpYyBib29sIGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChjb25zdCBGbG9hdGluZ1N0
YXRlJiBmbG9hdGluZ1N0YXRlKQogICAgIGF1dG8mIGZsb2F0cyA9IGZsb2F0aW5nU3RhdGUuZmxv
YXRzKCk7CiAgICAgYXV0byByaWdodEVkZ2VPZkxlZnRGbG9hdHMgPSBMYXlvdXRVbml0OjptaW4o
KTsKICAgICBhdXRvIGxlZnRFZGdlT2ZSaWdodEZsb2F0cyA9IExheW91dFVuaXQ6Om1heCgpOwot
ICAgIFdURjo6T3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVmdEJvdHRvbTsKLSAgICBXVEY6Ok9wdGlv
bmFsPExheW91dFVuaXQ+IHJpZ2h0Qm90dG9tOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gbGVmdEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHJpZ2h0Qm90dG9t
OwogCiAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsKICAgICAgICAgaWYgKGZs
b2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0aWMg
RmxvYXRQYWlyOjpMZWZ0UmlnaHRJbmRleCBmaW5kQXZhaWxhYmxlUG9zaXRpb24oRmxvYXRBdm9p
ZGVyJiBmbG9hdEF2b2lkZQogICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGJlZ2luKGZsb2F0cywg
eyBmbG9hdEF2b2lkZXIudG9wKCkgfSk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikgewog
ICAgICAgICBBU1NFUlQoISgqaXRlcmF0b3IpLmlzRW1wdHkoKSk7CiAgICAgICAgIGF1dG8gbGVm
dFJpZ2h0RmxvYXRQYWlyID0gKml0ZXJhdG9yOwotICAgICAgICBpbm5lck1vc3RMZWZ0QW5kUmln
aHQgPSBpbm5lck1vc3RMZWZ0QW5kUmlnaHQudmFsdWVPcigqbGVmdFJpZ2h0RmxvYXRQYWlyKTsK
KyAgICAgICAgaW5uZXJNb3N0TGVmdEFuZFJpZ2h0ID0gaW5uZXJNb3N0TGVmdEFuZFJpZ2h0LnZh
bHVlX29yKCpsZWZ0UmlnaHRGbG9hdFBhaXIpOwogCiAgICAgICAgIC8vIE1vdmUgdGhlIGJveCBo
b3Jpem9udGFsbHkgc28gdGhhdCBpdCBlaXRoZXIKICAgICAgICAgLy8gMS4gYWxpZ25zIHdpdGgg
dGhlIGN1cnJlbnQgZmxvYXRpbmcgcGFpcgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgRmxvYXRp
bmdDb250ZXh0OjpmaW5kUG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRBdm9p
ZGVyJiBmbG9hdEF2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfTsKIAot
ICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1heChpbm5lck1vc3RMZWZ0QW5kUmlnaHQu
bGVmdC52YWx1ZU9yKDApLCBpbm5lck1vc3RMZWZ0QW5kUmlnaHQucmlnaHQudmFsdWVPcigwKSkg
KyAxOworICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1heChpbm5lck1vc3RMZWZ0QW5k
UmlnaHQubGVmdC52YWx1ZV9vcigwKSwgaW5uZXJNb3N0TGVmdEFuZFJpZ2h0LnJpZ2h0LnZhbHVl
X29yKDApKSArIDE7CiAgICAgICAgIGF1dG8qIGludGVyc2VjdGVkRmxvYXRCb3ggPSBvdmVybGFw
cGluZ0Zsb2F0Qm94KHN0YXJ0SW5kZXgsIGZsb2F0QXZvaWRlcik7CiAgICAgICAgIGlmICghaW50
ZXJzZWN0ZWRGbG9hdEJveCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5Miw4ICs1OTIsOCBA
QCBQb3NpdGlvbkluQ29udGV4dFJvb3QgRmxvYXRQYWlyOjpib3R0b20oKSBjb25zdAogICAgIGF1
dG8qIHJpZ2h0ID0gdGhpcy0+cmlnaHQoKTsKICAgICBBU1NFUlQobGVmdCB8fCByaWdodCk7CiAK
LSAgICBhdXRvIGxlZnRCb3R0b20gPSBsZWZ0ID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRS
b290PihQb3NpdGlvbkluQ29udGV4dFJvb3QgeyBsZWZ0LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRv
bSgpIH0pIDogV1RGOjpudWxsb3B0OwotICAgIGF1dG8gcmlnaHRCb3R0b20gPSByaWdodCA/IE9w
dGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgcmln
aHQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byBsZWZ0Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9z
aXRpb25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6
IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBPcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IHJpZ2h0LT5yZWN0
V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGxlZnRC
b3R0b20gJiYgcmlnaHRCb3R0b20pCiAgICAgICAgIHJldHVybiBzdGQ6Om1heCgqbGVmdEJvdHRv
bSwgKnJpZ2h0Qm90dG9tKTsKQEAgLTY2Miw4ICs2NjIsOCBAQCBJdGVyYXRvciYgSXRlcmF0b3I6
Om9wZXJhdG9yKysoKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBuZXcgZmxvYXRpbmcncyBib3R0
b20gZWRnZSBpcyBwb3NpdGlvbmVkIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgb25lIC13aGljaCBl
c3NlbnRpYWxseSBtZWFucyBza2lwcGluZyBpbi1iZXR3ZWVuIGZsb2F0cyB0aGF0IGFyZSBwb3Np
dGlvbmVkIGhpZ2hlcikuCiAgICAgLy8gMy4gUmVzZXQgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIGFu
ZCBhbGlnbiBpdCB3aXRoIHRoZSBuZXcgbGVmdC1yaWdodCBwYWlyLiBUaGVzZSBmbG9hdHMgYXJl
IG5vdyB0aGUgaW5uZXItbW9zdCBib3hlcyBmb3IgdGhlIGN1cnJlbnQgdmVydGljYWwgcG9zaXRp
b24uCiAgICAgLy8gQXMgdGhlIHJlc3VsdCB3ZSBoYXZlIG1vcmUgaG9yaXpvbnRhbCBzcGFjZSBv
biB0aGUgY3VycmVudCB2ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvIGxlZnRCb3R0b20gPSBt
X2N1cnJlbnQubGVmdCgpID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihtX2N1cnJl
bnQubGVmdCgpLT5ib3R0b20oKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgYXV0byByaWdodEJvdHRv
bSA9IG1fY3VycmVudC5yaWdodCgpID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290Piht
X2N1cnJlbnQucmlnaHQoKS0+Ym90dG9tKCkpIDogV1RGOjpudWxsb3B0OworICAgIGF1dG8gbGVm
dEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRv
IHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29u
dGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwgKCFy
aWdodEJvdHRvbSB8fCAobGVmdEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA8ICpyaWdodEJvdHRvbSkp
OwogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwg
KCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA+ICpyaWdodEJvdHRv
bSkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgSXRlcmF0b3I6OnNldChQb3NpdGlvbkluQ29u
dGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbikKIAogICAgICAgICBhdXRvIGluZGV4ID0gZmxvYXRp
bmdUeXBlID09IEZsb2F0OjpMZWZ0ID8gbV9jdXJyZW50Lm1fZmxvYXRQYWlyLmxlZnQgOiBtX2N1
cnJlbnQubV9mbG9hdFBhaXIucmlnaHQ7CiAgICAgICAgIC8vIFN0YXJ0IGZyb20gdGhlIGVuZCBp
ZiB3ZSBkb24ndCBoYXZlIGN1cnJlbnQgeWV0LgotICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVl
T3IobV9mbG9hdHMuc2l6ZSgpKTsKKyAgICAgICAgaW5kZXggPSBpbmRleC52YWx1ZV9vcihtX2Zs
b2F0cy5zaXplKCkpOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaW5kZXgg
PSBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoZmxvYXRpbmdUeXBlLCBtX2Zsb2F0cywgKmluZGV4KTsK
ICAgICAgICAgICAgIGlmICghaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGVhMzA4NDMxZmE0MTNjNzE4OTQzOGZkODM4MWFjZWU4NzY3MzlmM2IuLmM2YjMwYzRlNzgwMTcx
NTkwYzY2MDQwOTljYjgxM2VkNTgwZTMxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CkBAIC0yOTUsOCArMjk1LDggQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVHZW9t
ZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQoKSBjb25zdAogICAgICAgICBpZiAobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKSB7
CiAgICAgICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9yZGVyLXRvcC13aWR0aCArIHBh
ZGRpbmctdG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBib3JkZXItYm90dG9tLXdpZHRo
ICsgbWFyZ2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBjb250YWluaW5nIGJsb2NrCiAg
ICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKTsKLSAgICAgICAgICAgIEFTU0VSVChCb3hHZW9tZXRy
eTo6Ym9yZGVyQm94VG9wKGJveEdlb21ldHJ5KSArIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgp
ICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFs
dWVPcigwKSArIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKQotICAgICAgICAgICAgICAg
ICsgYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCkgKyBib3hHZW9tZXRyeS5i
b3JkZXJCb3R0b20oKSArIGJveEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCkgPT0gY29udGFpbmluZ0Js
b2NrSGVpZ2h0KTsKKyAgICAgICAgICAgIEFTU0VSVChCb3hHZW9tZXRyeTo6Ym9yZGVyQm94VG9w
KGJveEdlb21ldHJ5KSArIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnku
Ym9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBib3hH
ZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkKKyAgICAgICAgICAgICAgICArIGJveEdlb21ldHJ5
LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKSArIGJveEdlb21ldHJ5LmJvcmRlckJvdHRvbSgp
ICsgYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWluaW5nQmxvY2tIZWlnaHQpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGQ0Y2Q3YzIx
MWRkMTA1NGU1YTE4ZjQ2NWIzOGFhNzkxOWFiYmM4NDUuLmQyM2Y5ZmZkMDIyNzVhMjNlMGI4YmNl
YTQwM2Y4NjM3MzAxZDA4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgICAgICBCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrLAogICAg
ICAgICBUYWJsZU5lZWRzQWNjZXNzVG9UYWJsZVdyYXBwZXIKICAgICB9OwotICAgIGNvbnN0IEJv
eEdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChjb25zdCBCb3gmLCBPcHRpb25hbDxFc2NhcGVSZWFz
b24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2VvbWV0
cnlGb3JCb3goY29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQogICAg
IGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5l
c3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcAppbmRleCAyMTQ3YjExN2ZiMmVkMmM1Mjg5NWQwN2NkNjk5NDE1ZDRlZGU4MjAz
Li40ZTdjMjA5YTk5ZTMxNWNkNmIxMmY5NTZiM2M3NWEzZjM3YjY3MDFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhlaWdodChjb25zdCBCb3gmIGxheW91dEJv
eCwgT3AKICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmJveFNpemluZygpID09IEJveFNp
emluZzo6Q29udGVudEJveCkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAgICAgICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwotICAgICAgICByZXR1cm4gKmhlaWdodCAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJv
cmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKSk7CisgICAg
ICAgIHJldHVybiAqaGVpZ2h0IC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hH
ZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7CiAgICAgfQogICAgIHJldHVy
biB7IH07CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMYXkKICAg
ICAgICAgaWYgKHN0eWxlLmJveFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCB8fCBz
dHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAgICByZXR1cm4gY29t
cHV0ZWRXaWR0aDsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgIHJldHVybiAqY29tcHV0ZWRX
aWR0aCAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jp
em9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkpOworICAgICAgICByZXR1cm4gKmNvbXB1dGVkV2lk
dGggLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpv
bnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CkBA
IC0zNjAsOCArMzYwLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91
dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdAogICAgIGF1dG8gaGVpZ2h0
ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxheW91dEJveCwgY29udGFpbmlu
Z0Jsb2NrSGVpZ2h0KTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFs
Q29uc3RyYWludHMpOwogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVz
IHVzZWRWZXJ0aWNhbE1hcmdpbjsgCi0gICAgYXV0byBwYWRkaW5nVG9wID0gYm94R2VvbWV0cnku
cGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nQm90dG9tID0gYm94R2Vv
bWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5nVG9wID0g
Ym94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOworICAgIGF1dG8gcGFkZGluZ0Jv
dHRvbSA9IGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICBhdXRv
IGJvcmRlclRvcCA9IGJveEdlb21ldHJ5LmJvcmRlclRvcCgpOwogICAgIGF1dG8gYm9yZGVyQm90
dG9tID0gYm94R2VvbWV0cnkuYm9yZGVyQm90dG9tKCk7CiAKQEAgLTM4OSwzOSArMzg5LDM5IEBA
IFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QKICAgICBpZiAoIXRvcCAmJiAhaGVpZ2h0ICYmIGJvdHRv
bSkgewogICAgICAgICAvLyAjMQogICAgICAgICBoZWlnaHQgPSBjb250ZW50SGVpZ2h0Rm9yRm9y
bWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCk7Ci0gICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdp
biA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIHVzZWRWZXJ0aWNhbE1h
cmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgdG9wID0gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJU
b3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20g
KyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAgaWYg
KCF0b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAgdG9w
ID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0Qm94
LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0g
eyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBib3R0b20gPSBjb250YWlu
aW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3Jk
ZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0
b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIAogICAgIGlmICghaGVpZ2h0
ICYmICFib3R0b20gJiYgdG9wKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAgIGhlaWdodCA9IGNv
bnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KTsKLSAgICAgICAg
dXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1
ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAg
ICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52
YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9Owog
ICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0
aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBh
ZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwog
ICAgIH0KIAogICAgIGlmICghdG9wICYmIGhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAgLy8g
IzQKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3Io
MCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1
ZV9vcigwKSB9OwogICAgICAgICB0b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAodXNlZFZl
cnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsg
cGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciAr
ICpib3R0b20pOwogICAgIH0KIAogICAgIGlmICghaGVpZ2h0ICYmIHRvcCAmJiBib3R0b20pIHsK
ICAgICAgICAgLy8gIzUKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFm
dGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBoZWlnaHQgPSBjb250YWluaW5nQmxvY2tI
ZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBw
YWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1h
cmdpbi5hZnRlciArICpib3R0b20pOwogICAgIH0KIAogICAgIGlmICghYm90dG9tICYmIHRvcCAm
JiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0g
eyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
ID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBib3R0b20gPSBjb250
YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBi
b3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJC
b3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIApAQCAtNDgwLDE1ICs0
ODAsMTUgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93
Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KICAgICBhdXRvIHdpZHRoID0gb3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53
aWR0aCA6IGNvbXB1dGVkV2lkdGgobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAg
ICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7
CiAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47Ci0gICAgYXV0
byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKLSAg
ICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlT3Io
MCk7CisgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFs
dWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmln
aHQoKS52YWx1ZV9vcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQgPSBib3hHZW9tZXRyeS5ib3Jk
ZXJMZWZ0KCk7CiAgICAgYXV0byBib3JkZXJSaWdodCA9IGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0
KCk7CiAgICAgaWYgKCFsZWZ0ICYmICF3aWR0aCAmJiAhcmlnaHQpIHsKICAgICAgICAgLy8gSWYg
YWxsIHRocmVlIG9mICdsZWZ0JywgJ3dpZHRoJywgYW5kICdyaWdodCcgYXJlICdhdXRvJzogRmly
c3Qgc2V0IGFueSAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJp
Z2h0JyB0byAwLgogICAgICAgICAvLyBUaGVuLCBpZiB0aGUgJ2RpcmVjdGlvbicgcHJvcGVydHkg
b2YgdGhlIGVsZW1lbnQgZXN0YWJsaXNoaW5nIHRoZSBzdGF0aWMtcG9zaXRpb24gY29udGFpbmlu
ZyBibG9jayBpcyAnbHRyJyBzZXQgJ2xlZnQnIHRvIHRoZSBzdGF0aWMKICAgICAgICAgLy8gcG9z
aXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNldCAn
cmlnaHQnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBi
ZWxvdy4KLSAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZh
bHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZC52YWx1ZV9vcigwKSB9OwogCiAgICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBvc2l0
aW9uID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlv
dXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKQpAQCAtNTMwLDcgKzUzMCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0
aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBPdGhlcndpc2UsIHNldCAnYXV0bycg
dmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLCBhbmQgcGlj
ayB0aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRoYXQgYXBwbGllcy4KLSAgICAg
ICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFy
dC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsK
KyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9v
cigwKSB9OwogICAgIH0KIAogICAgIGlmICghbGVmdCAmJiAhd2lkdGggJiYgcmlnaHQpIHsKQEAg
LTYwOSw4ICs2MDksOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0
T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJlcAogICAgIGF1dG8gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlcjsKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5w
YWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hHZW9t
ZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHBhZGRpbmdUb3AgPSBi
b3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5nQm90
dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1dG8g
Ym9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJCb3R0
b20gPSBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20oKTsKIApAQCAtNjIxLDcgKzYyMSw3IEBAIFZl
cnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgUmVwCiAKICAgICBpZiAoIWJvdHRvbSkgewogICAgICAgICAvLyAj
MgotICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApOwogICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSB1
c2VkTWFyZ2luQmVmb3JlOwogICAgIH0KIApAQCAtNjk0LDggKzY5NCw4IEBAIEhvcml6b250YWxH
ZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KGNvbnN0CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0ID0g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOwogICAgIGF1dG8g
d2lkdGggPSBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihyZXBsYWNlZEJveCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBvdmVycmlkZGVuSG9y
aXpvbnRhbFZhbHVlcykuY29udGVudFdpZHRoOwotICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBib3hH
ZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nUmlnaHQg
PSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOworICAgIGF1dG8gcGFkZGlu
Z0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOworICAgIGF1dG8g
cGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CiAg
ICAgYXV0byBib3JkZXJMZWZ0ID0gYm94R2VvbWV0cnkuYm9yZGVyTGVmdCgpOwogICAgIGF1dG8g
Ym9yZGVyUmlnaHQgPSBib3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpOwogCkBAIC03MTAsOCArNzEw
LDggQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVw
bGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QKIAogICAgIGlmICghbGVmdCB8fCAhcmlnaHQp
IHsKICAgICAgICAgLy8gIzIKLSAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgIHVzZWRNYXJnaW5FbmQgPSBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRNYXJn
aW5TdGFydCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKTsKKyAg
ICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVf
b3IoMCk7CiAgICAgfQogCiAgICAgaWYgKCF1c2VkTWFyZ2luU3RhcnQgJiYgIXVzZWRNYXJnaW5F
bmQpIHsKQEAgLTc4Niw3ICs3ODYsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRp
bmdHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gmIGxheW91dEJveAogICAgIGF1
dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxheW91dEJveCk7
CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpj
b21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsK
ICAgICAvLyAjMQotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFy
Z2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52
YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsgCisg
ICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxh
cHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07IAogICAgIC8vICMyCiAg
ICAgaWYgKCFoZWlnaHQpIHsKICAgICAgICAgQVNTRVJUKGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gp
KTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dl
b21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZwogICAgIGF1dG8g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhv
cml6b250YWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAg
Ly8gIzEKLSAgICBhdXRvIHVzZWRIb3Jpem9udGFsbE1hcmdpbiA9IFVzZWRIb3Jpem9udGFsTWFy
Z2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OworICAgIGF1dG8gdXNlZEhvcml6b250
YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVf
b3IoMCkgfTsKICAgICAvLyAjMgogICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZGVuSG9yaXpvbnRh
bFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29tcHV0
ZWRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwog
ICAgIGlmICghd2lkdGgpCkBAIC04NjIsNyArODYyLDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdp
bigKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRy
eTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3Ry
YWludHMpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBz
dHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJl
Y3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKLSAgICBhdXRvIHVzZWRNYXJnaW4gPSBVc2VkSG9y
aXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDAp
LCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIHVz
ZWRNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9v
cigwKSB9OwogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihy
ZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIHsgb3ZlcnJpZGRlbkhvcml6
b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSk7CiB9CiAKQEAgLTkxNywxMCArOTE3LDEw
IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oCiAgICAgLy8gIzEKICAgICBhdXRvJiBmb3JtYXR0
aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFy
Z2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIGF1dG8gdXNlZFZl
cnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9
IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVfb3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxhY2VkQm94LnN0eWxlKCk7CiAK
LSAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBvdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodChyZXBs
YWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2lj
YWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZl
cnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFs
dWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8g
dmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhlaWdodCA6IHN0ZDo6bnVsbG9wdCk7CiAgICAg
YXV0byBoZWlnaHRJc0F1dG8gPSAhb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCAmJiBp
c0hlaWdodEF1dG8ocmVwbGFjZWRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBzdHlsZS5s
b2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIApAQCAtOTcxLDE4ICs5NzEsMTggQEAgQ29udGVudFdp
ZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRDb250ZW50V2lk
dGhBbmRNYXJnaW4oY28KICAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsmXSB7CiAgICAgICAg
IGlmIChvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCiAgICAgICAgICAgICByZXR1
cm4gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5zdGFydDsKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDBfbHUpOworICAgICAg
ICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDBfbHUpOwog
ICAgIH07CiAKICAgICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBbJl0gewogICAgICAgICBpZiAob3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luKQogICAgICAgICAgICAgcmV0dXJuIG92ZXJy
aWRkZW5Ib3Jpem9udGFsVmFsdWVzLm1hcmdpbi0+ZW5kOwotICAgICAgICByZXR1cm4gY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpOworICAgICAgICByZXR1cm4gY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KTsKICAgICB9OwogCiAgICAg
YXV0byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJpZGRl
bkhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZFdpZHRoKHJlcGxhY2VkQm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBhdXRvIGhlaWdodElzQXV0byA9
IGlzSGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjb21wdXRlZEhl
aWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWlu
dHMtPmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gY29t
cHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNhbENv
bnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmICghd2lk
dGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY1dpZHRoKCkpIHsK
ICAgICAgICAgLy8gIzEKQEAgLTk5MCw3ICs5OTAsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4g
Rm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihj
bwogICAgIH0gZWxzZSBpZiAoKCF3aWR0aCAmJiBoZWlnaHRJc0F1dG8gJiYgIXJlcGxhY2VkQm94
Lmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljSGVpZ2h0KCkg
JiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0aW8oKSkKICAgICAgICAgfHwgKCF3aWR0aCAm
JiBoZWlnaHQgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0aW8oKSkpIHsKICAgICAgICAg
Ly8gIzIKLSAgICAgICAgd2lkdGggPSBoZWlnaHQudmFsdWVPcihyZXBsYWNlZEJveC5oYXNJbnRy
aW5zaWNIZWlnaHQoKSkgKiByZXBsYWNlZEJveC5pbnRyaW5zaWNSYXRpbygpOworICAgICAgICB3
aWR0aCA9IGhlaWdodC52YWx1ZV9vcihyZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNIZWlnaHQoKSkg
KiByZXBsYWNlZEJveC5pbnRyaW5zaWNSYXRpbygpOwogICAgIH0gZWxzZSBpZiAoIXdpZHRoICYm
IGhlaWdodElzQXV0byAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNSYXRpbygpICYmICFyZXBs
YWNlZEJveC5oYXNJbnRyaW5zaWNXaWR0aCgpICYmICFyZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNI
ZWlnaHQoKSkgewogICAgICAgICAvLyAjMwogICAgICAgICAvLyBGSVhNRTogdW5kZWZpbmVkIGJ1
dCBzdXJlbHkgZG9hYmxlLgpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgTGF5b3V0U2l6ZSBGb3JtYXR0
aW5nR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChjb25zdCBCb3gmIGxh
eW91dEIKICAgICAgICAgYm90dG9tID0gLSp0b3A7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g
IzQKLSAgICAgICAgYm90dG9tID0gV1RGOjpudWxsb3B0OworICAgICAgICBib3R0b20gPSBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRm9yIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBlbGVt
ZW50cywgJ2xlZnQnIGFuZCAncmlnaHQnIG1vdmUgdGhlIGJveChlcykgaG9yaXpvbnRhbGx5LCB3
aXRob3V0IGNoYW5naW5nIHRoZWlyIHNpemUuCkBAIC0xMDcxLDE0ICsxMDcxLDE0IEBAIExheW91
dFNpemUgRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZzZXQo
Y29uc3QgQm94JiBsYXlvdXRCCiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQog
ICAgICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxl
ZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBsZWZ0ID0gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIEFTU0VSVCghYm90dG9tIHx8ICp0b3AgPT0gLSpib3R0b20pOwogICAgIEFTU0VS
VCghbGVmdCB8fCAqbGVmdCA9PSAtKnJpZ2h0KTsKIAogICAgIGF1dG8gdG9wUG9zaXRpb25PZmZz
ZXQgPSAqdG9wOwotICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0ID0gbGVmdC52YWx1ZU9yKC0q
cmlnaHQpOworICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0ID0gbGVmdC52YWx1ZV9vcigtKnJp
Z2h0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3Ry
ZWFtIDw8ICJbUG9zaXRpb25dIC0+IHBvc2l0aW9uZWQgaW5mbG93IC0+IHRvcCBvZmZzZXQoIiA8
PCB0b3BQb3NpdGlvbk9mZnNldCA8PCAicHgpIGxlZnQgb2Zmc2V0KCIgPDwgbGVmdFBvc2l0aW9u
T2Zmc2V0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJl
dHVybiB7IGxlZnRQb3NpdGlvbk9mZnNldCwgdG9wUG9zaXRpb25PZmZzZXQgfTsKQEAgLTExMDUs
NyArMTEwNSw3IEBAIEVkZ2VzIEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIoY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiBPcHRpb25hbDxFZGdlcz4gRm9ybWF0dGluZ0dlb21l
dHJ5Ojpjb21wdXRlZFBhZGRpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91dFVu
aXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgKCFsYXlvdXRCb3guaXNQ
YWRkaW5nQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5
bGUoKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW1BhZGRpbmddIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dl
b21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdHZW9tZXRyeS5oCmluZGV4IGFiNzlhZmI0Y2RmZjYyMjFmMDE5ZTczMmYwYmY0MDE2MjRi
MGFkMjAuLjA2MjRmMmY0ZGUxZjE4Mzk1ODQ4MTQzYzQ3ZjhhOGU3NmU4MWNkZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dl
b21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVy
dHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5KSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWluSGVpZ2h0KGNvbnN0
IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IFdURjo6
bnVsbG9wdCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXhIZWln
aHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0
ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRl
ZE1pbkhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxv
Y2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGNvbXB1dGVkTWF4SGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29udGFp
bmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVk
TWF4V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29u
c3Q7CkBAIC04NCw5ICs4NCw5IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGNvbnRlbnRIZWln
aHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAK
ICAgICBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JPdXRPZkZs
b3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0OwotICAgIENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVy
Qm94JiwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBXVEY6Om51
bGxvcHQpIGNvbnN0OworICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0dGlu
Z0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiwgTGF5
b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxvY2tG
b3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmlz
QmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRl
eCA2M2YyMjAyMmVmN2ZmZjk5MjljNGI1NWM0ODcxNDc0YjdjNTA3ZWVkLi4wNDk0ODEzMTU3ZjUz
NzY0NGQ3YTBkMTkwMmRhNjE1NzNmM2M2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAK
QEAgLTYyLDkgKzYyLDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1
ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCgKICAgICAgICAgICAgIGF1
dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbigqY29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAgICAg
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94
KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZpbmRG
aXhlZEhlaWdodEFuY2VzdG9yUXVpcmspOwotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRp
bmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGJveEdlb21ldHJ5LnBh
ZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBhZGRp
bmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBib3hHZW9tZXRyeS5w
YWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQm9y
ZGVyID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20o
KTsKLSAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJv
cmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSArIHZlcnRpY2FsTWFyZ2lu
LmFmdGVyLnZhbHVlT3IoMCkgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRlcjsKKyAg
ICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRlciAr
PSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyB2ZXJ0aWNhbE1hcmdpbi5hZnRl
ci52YWx1ZV9vcigwKSArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KCpjb250YWluaW5n
QmxvY2spKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggYzBmYjFmYTQ4NjczNTg4MGYzZDczZTdkZmJhOGE2YWI2NGZiMTIyMi4uOTNkZjY0ZDgz
ZDNjN2I4MDRhMDdhMjk1YTkxNWUwZDhiOGRlZDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xOTcsOSArMTk3LDkgQEAgTGF5b3V0VW5p
dCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CiAKICAg
ICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmb3JtYXR0
aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKICAgICBpZiAoYXV0byBmbG9hdFRvcCA9IGZs
b2F0aW5nQ29udGV4dC50b3AoKSkgewotICAgICAgICB0b3AgPSBzdGQ6Om1pbigqZmxvYXRUb3As
IHRvcC52YWx1ZU9yKCpmbG9hdFRvcCkpOworICAgICAgICB0b3AgPSBzdGQ6Om1pbigqZmxvYXRU
b3AsIHRvcC52YWx1ZV9vcigqZmxvYXRUb3ApKTsKICAgICAgICAgYXV0byBmbG9hdEJvdHRvbSA9
ICpmbG9hdGluZ0NvbnRleHQuYm90dG9tKCk7Ci0gICAgICAgIGJvdHRvbSA9IHN0ZDo6bWF4KGZs
b2F0Qm90dG9tLCBib3R0b20udmFsdWVPcihmbG9hdEJvdHRvbSkpOworICAgICAgICBib3R0b20g
PSBzdGQ6Om1heChmbG9hdEJvdHRvbSwgYm90dG9tLnZhbHVlX29yKGZsb2F0Qm90dG9tKSk7CiAg
ICAgfQogICAgIHJldHVybiAqYm90dG9tIC0gKnRvcDsKIH0KQEAgLTI5Niw3ICsyOTYsNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9uRm9y
Qm94QW5kQW5jZXN0b3JzKGNvbnN0CiAgICAgICAgIH0oKTsKIAogICAgICAgICBhdXRvIGNvbXB1
dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbigqYW5jZXN0b3IsIGNvbnN0cmFpbnRzRm9yQW5jZXN0b3IuaG9yaXpvbnRhbCk7Ci0gICAg
ICAgIGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9u
Q29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigw
KSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIGF1
dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFw
c2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgYXV0byBw
cmVjb21wdXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkNvbGxhcHNlKCkucHJlY29tcHV0ZWRNYXJn
aW5CZWZvcmUoKmFuY2VzdG9yLCB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2Vv
bWV0cnkpOwogCiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCku
Ym94R2VvbWV0cnkoKmFuY2VzdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggZWE5OWY3MjUwNDlkZGQwOGY1ZjJhY2M3ZGNkNWNjNDE1
OWM2NmY3MS4uNTU5ZmUzNjM2ZjQ5OTg5Njc3ODUzODZhZDY2ZTE0ZDQ2ZGU0YmQxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTcwLDgg
KzcwLDggQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6
aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50SGVpZ2h0QW4KIAogICAgICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAg
ICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpj
b21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsK
LSAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5v
bkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3Io
MCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKLSAgICAgICAg
YXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hH
ZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBub25Db2xsYXBz
ZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRvIGJvcmRlckFuZFBhZGRpbmdU
b3AgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52
YWx1ZV9vcigwKTsKICAgICAgICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxWYWx1
ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29t
cHV0ZWRIZWlnaHQobGF5b3V0Qm94KTsKIAogICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtMTU1LDE0
ICsxNTUsMTQgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5
OjppbkZsb3dOb25SZXBsYWNlZENvbnRlbnRXaWR0aEFuZE0KICAgICAgICAgVXNlZEhvcml6b250
YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAgICAgIGF1dG8gYm9yZGVyTGVmdCA9
IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9IGJv
eEdlb21ldHJ5LmJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBib3hH
ZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gcGFkZGluZ1Jp
Z2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKKyAgICAgICAgYXV0
byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7Cisg
ICAgICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFs
dWVfb3IoMCk7CiAKICAgICAgICAgLy8gIzEKICAgICAgICAgaWYgKHdpZHRoKSB7Ci0gICAgICAg
ICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gKGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApICsgYm9yZGVyTGVm
dCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkpOworICAgICAgICAgICAgYXV0
byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCkgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgaWYgKGhvcml6
b250YWxTcGFjZUZvck1hcmdpbiA8IDApCi0gICAgICAgICAgICAgICAgdXNlZEhvcml6b250YWxN
YXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgICAgICAgICB1
c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZh
bHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDApIH07CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyAjMgpAQCAtMTkwLDcgKzE5MCw3IEBAIENvbnRlbnRXaWR0
aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250
ZW50V2lkdGhBbmRNCiAKICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewotICAg
ICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3Io
MCkgfTsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luID0geyBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5l
bmQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAodXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZCk7CiAgICAgICAgIH0KIApAQCAtMjAzLDggKzIwMyw4IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdp
biBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50V2lkdGhB
bmRNCiAgICAgICAgIGF1dG8gc2hvdWxkQXBwbHlDZW50ZXJBbGlnbkZvckJsb2NrQ29udGVudCA9
IGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6OldlYktp
dENlbnRlciAmJiAoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0IHx8IGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbi5lbmQpOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDZW50ZXJBbGlnbkZv
ckJsb2NrQ29udGVudCkgewogICAgICAgICAgICAgYXV0byBib3JkZXJCb3hXaWR0aCA9IChib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydC52YWx1ZU9yKDApOwotICAgICAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBhdXRvIG1h
cmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDApOwor
ICAgICAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5k
LnZhbHVlX29yKDApOwogICAgICAgICAgICAgYXV0byBjZW50ZXJlZExvZ2ljYWxMZWZ0Rm9yTWFy
Z2luQm94ID0gc3RkOjptYXgoKGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gYm9yZGVyQm94V2lkdGgg
LSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZCkgLyAyLCAwX2x1KTsKICAgICAgICAgICAgIHVzZWRI
b3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY2VudGVyZWRMb2dpY2FsTGVmdEZvck1hcmdpbkJveCAr
IG1hcmdpblN0YXJ0OwogICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGggLSBib3JkZXJCb3hXaWR0aCAtIG1hcmdpblN0YXJ0ICsgbWFyZ2lu
RW5kOwpAQCAtMzI2LDcgKzMyNiw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1h
dHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uCiAgICAgICAg
ICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBtYXhXaWR0aEFuZE1hcmdpbjsKICAgICB9CiAK
LSAgICBhdXRvIG1pbldpZHRoID0gY29tcHV0ZWRNaW5XaWR0aChsYXlvdXRCb3gsIGF2YWlsYWJs
ZVdpZHRoKS52YWx1ZU9yKDApOworICAgIGF1dG8gbWluV2lkdGggPSBjb21wdXRlZE1pbldpZHRo
KGxheW91dEJveCwgYXZhaWxhYmxlV2lkdGgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gbWluV2lk
dGhBbmRNYXJnaW4gPSBjb21wdXRlKGhvcml6b250YWxDb25zdHJhaW50cywgbWluV2lkdGgpOwog
ICAgIGlmIChjb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoIDwgbWluV2lkdGhBbmRN
YXJnaW4uY29udGVudFdpZHRoKQogICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBtaW5X
aWR0aEFuZE1hcmdpbjsKQEAgLTMzNywxMiArMzM3LDEyIEBAIEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMo
Y29uCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBhZGRpbmcgPSBbJl0oYXV0byYg
bGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0g
ICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpblN0YXJ0KCkpLnZhbHVlT3IoMCkK
KyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVfb3Io
MCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIH0K
LSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgpKS52YWx1ZU9yKDAp
Ci0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVlT3Io
MCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgpKS52YWx1ZV9v
cigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdSaWdodCgpKS52YWx1
ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyUmlnaHRXaWR0
aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVP
cigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVf
b3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggOTVhMGVlOGQ1OTZjOWI4NTUz
ZWEyYmQ5YzQ1NzljNzM1OWMzN2RkYy4uOGZjZjI4MjhjM2RlMGRlZmUxMjc5MzZiMTNlMDE1YzQ2
MDk3ZTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNw
cApAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdR
dWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjbwogICAgICAgICBhdXRv
IGRvY3VtZW50Qm94Q29udGVudEhlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250ZXh0
OjpFc2NhcGVSZWFzb246OkRvY3VtZW50Qm94U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5jb250
ZW50Qm94SGVpZ2h0KCk7CiAgICAgICAgIC8vIERvY3VtZW50IGJveCdzIG93biB2ZXJ0aWNhbCBt
YXJnaW4vYm9yZGVyL3BhZGRpbmcgdmFsdWVzIGFsd2F5cyBzaHJpbmsgdGhlIGNvbnRlbnQgaGVp
Z2h0LgogICAgICAgICBhdXRvJiBkb2N1bWVudEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRl
eHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgZG9jdW1lbnRCb3hDb250ZW50
SGVpZ2h0IC09IG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luICsgZG9jdW1lbnRCb3hHZW9tZXRy
eS52ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmco
KS52YWx1ZU9yKDApOworICAgICAgICBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQgLT0gbm9uQ29s
bGFwc2VkVmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVy
KCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDApOwog
ICAgICAgICByZXR1cm4gc3RkOjptYXgoY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVp
Z2h0LCAgZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0KTsKICAgICB9CiAKQEAgLTg0LDIzICs4NCwy
MyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hl
ZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjbwogICAgIGF1dG8gYm9keUJveENvbnRlbnRIZWln
aHQgPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveEhlaWdodCgpOwog
ICAgIC8vIEJvZHkgYm94J3Mgb3duIGJvcmRlciBhbmQgcGFkZGluZyBzaHJpbmsgdGhlIGNvbnRl
bnQgaGVpZ2h0LgogICAgIGF1dG8mIGJvZHlCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0g
Ym9keUJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib2R5Qm94R2VvbWV0cnkudmVydGlj
YWxQYWRkaW5nKCkudmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBib2R5
Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNhbFBh
ZGRpbmcoKS52YWx1ZV9vcigwKTsKICAgICAvLyBCb2R5IGJveCBuZXZlciBjb2xsYXBzZXMgaXRz
IHZlcnRpY2FsIG1hcmdpbnMgd2l0aCB0aGUgZG9jdW1lbnQgYm94IGJ1dCBpdCBtaWdodCBjb2xs
YXBzZSBpdHMgbWFyZ2luIHdpdGggaXRzIGRlc2NlbmRhbnRzLgogICAgIGF1dG8gbm9uQ29sbGFw
c2VkTWFyZ2luID0gY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW47CiAg
ICAgYXV0byBtYXJnaW5Db2xsYXBzZSA9IEJsb2NrTWFyZ2luQ29sbGFwc2UgeyBmb3JtYXR0aW5n
Q29udGV4dC5sYXlvdXRTdGF0ZSgpLCBmb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nU3RhdGUo
KSB9OwogICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gbWFyZ2luQ29sbGFwc2UuY29sbGFwc2Vk
VmVydGljYWxWYWx1ZXMobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4pLmNvbGxhcHNlZFZh
bHVlczsKLSAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbGxhcHNlZE1hcmdpbi5iZWZv
cmUudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlKTsKLSAgICB1c2VkVmVydGljYWxN
YXJnaW4gKz0gY29sbGFwc2VkTWFyZ2luLmlzQ29sbGFwc2VkVGhyb3VnaCA/IG5vbkNvbGxhcHNl
ZE1hcmdpbi5hZnRlciA6IGNvbGxhcHNlZE1hcmdpbi5hZnRlci52YWx1ZU9yKG5vbkNvbGxhcHNl
ZE1hcmdpbi5hZnRlcik7CisgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBjb2xsYXBzZWRN
YXJnaW4uYmVmb3JlLnZhbHVlX29yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUpOworICAgIHVz
ZWRWZXJ0aWNhbE1hcmdpbiArPSBjb2xsYXBzZWRNYXJnaW4uaXNDb2xsYXBzZWRUaHJvdWdoID8g
bm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDogY29sbGFwc2VkTWFyZ2luLmFmdGVyLnZhbHVlX29y
KG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlcik7CiAgICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0g
dXNlZFZlcnRpY2FsTWFyZ2luOwogICAgIC8vIERvY3VtZW50IGJveCdzIHBhZGRpbmcgYW5kIGJv
cmRlciBhbHNvIHNocmluayB0aGUgYm9keSBib3gncyBjb250ZW50IGhlaWdodC4KICAgICBhdXRv
JiBkb2N1bWVudEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKICAgICBhdXRvJiBkb2N1bWVudEJv
eEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goZG9jdW1lbnRCb3gs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0
UXVpcmspOwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3VtZW50Qm94R2VvbWV0cnku
dmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCku
dmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBkb2N1bWVudEJveEdlb21l
dHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGlu
ZygpLnZhbHVlX29yKDApOwogICAgIC8vIEhvd2V2ZXIgdGhlIG5vbi1pbi1mbG93IGRvY3VtZW50
IGJveCdzIHZlcnRpY2FsIG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRoZXkgZG9uJ3QgYWZmZWN0IHRo
ZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0LgogICAgIGlmIChkb2N1bWVudEJveC5pc0luRmxv
dygpKSB7CiAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogICAgICAgICBhdXRvIHByZWNvbXB1dGVEb2N1bWVu
dEJveFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxN
YXJnaW4oZG9jdW1lbnRCb3gsIGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2Fw
ZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuaG9yaXpvbnRhbCk7Ci0gICAg
ICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxN
YXJnaW4uYWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0g
cHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApICsg
cHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCk7CiAg
ICAgfQogICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRI
ZWlnaHQsICBib2R5Qm94Q29udGVudEhlaWdodCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBjNjc1MmY1YjgwNjQ1YTliY2ViNjAxMzY5ZDA0ZWE3
NmJhMjI2NDJjLi40YjQ5YmI1MmYyMjAzZmVmNTNmNjVhNjI0OWQ4OTAzMTY2NzE2ZjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTUzOSw3ICs1Mzks
NyBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMg
QmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdgogTGF5b3V0VW5pdCBCbG9ja01hcmdpbkNvbGxh
cHNlOjptYXJnaW5CZWZvcmVJZ25vcmluZ0NvbGxhcHNpbmdUaHJvdWdoKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBz
ZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7Ci0g
ICAgcmV0dXJuIG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5b3V0
Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpKS52YWx1ZU9yKG5vbkNvbGxhcHNlZFZhbHVlcy5iZWZv
cmUpOworICAgIHJldHVybiBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3Jl
KGxheW91dEJveCwgbm9uQ29sbGFwc2VkVmFsdWVzKSkudmFsdWVfb3Iobm9uQ29sbGFwc2VkVmFs
dWVzLmJlZm9yZSk7CiB9CiAKIFVzZWRWZXJ0aWNhbE1hcmdpbiBCbG9ja01hcmdpbkNvbGxhcHNl
Ojpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRp
Y2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVj
b21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CmluZGV4IDNiYTcyMTQ1ZWE4MTk3MGZiNTliODZlYTZmNjE2NjY3ZTkwN2UwN2EuLmZiYTI1ZDQ1
ZTA4NjhlNGIyMzg0ZjY4MzY2MjJiYjQ2NzE0MThjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdp
bkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVz
IEJsb2NrTWFyZ2luQ29sbGFwc2U6OnByZWNvbXAKIAogICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0
cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChs
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6b250YWw7CiAgICAgYXV0byBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxNYXJn
aW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIGF1dG8gbm9uQ29sbGFw
c2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFVz
ZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFs
dWVfb3IoMCkgfTsKICAgICByZXR1cm4gcHJlY29tcHV0ZWRQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2lu
QmVmb3JlKGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0cnkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGI2NzlhMzMxNGFlMjEwOGM1NmE4NjYxYmFlMjEwYWYyMGYzNTI5MWUuLmVmZTk3ODIwNGVjYzYx
Y2QyNzU2YTQ4MzMwMzIwOTYxNDBiNTEwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdm9pZCBGbGV4Rm9ybWF0dGlu
Z0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnQKICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0UGFkZGluZyhmb3JtYXR0aW5n
R2VvbWV0cnkuY29tcHV0ZWRQYWRkaW5nKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9udGFs
LmxvZ2ljYWxXaWR0aCkpOwogCiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZEhvcml6b250YWxNYXJnaW4oZmxleEl0
ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRy
eS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZh
bHVlT3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9
KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih7IGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KSB9KTsKIAogICAgICAgICAgICAgYXV0byBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGlj
YWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAg
ZmxleEl0ZW1HZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYmVmb3JlLnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFs
dWVPcigwX2x1KSB9KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0VmVydGljYWxN
YXJnaW4oeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwX2x1KSwgY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwX2x1KSB9KTsKIAogICAgICAgICAg
ICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGZvcm1hdHRpbmdHZW9tZXRy
eS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGZsZXhJdGVtKSk7CiAgICAg
ICAgICAgICBmbGV4SXRlbUdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChmbGV4SXRlbUxvZ2lj
YWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
aW5kZXggNTMxYTNkMjI2MDAwN2ZkMTIyNjdhODg3NzEwOGY5YTE0OTllMzFkNS4uZmU1OGRkM2Fm
NjgzOTZlOGExNGU4MDVmYTBhZmNkNjdlYjYxZjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9G
bGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMgRmxleEZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyhjb25zCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBhZGRpbmcgPSBb
Jl0oYXV0byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0
eWxlKCk7Ci0gICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpblN0YXJ0KCkpLnZh
bHVlT3IoMCkKKyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSku
dmFsdWVfb3IoMCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxlZnRX
aWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgpKS52
YWx1ZU9yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkp
LnZhbHVlT3IoMCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgp
KS52YWx1ZV9vcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdSaWdo
dCgpKS52YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVy
UmlnaHRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQo
KSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQo
KSkudmFsdWVfb3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggOTQwYTZkYTlm
OWMxNGYwMTQ0NTFmYWRhMjQ2ZmIwZWJjZDEyZDJiOC4uOGU3MWE3NTkxYTc5YjBlN2IzNGQ0MGZl
OWEwZjIzNjg1ZmQ0MGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRC
cmVha2VyLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5s
aW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAg
ICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3Vic2VxdWVudCBlbXB0eSBpbmxpbmUg
Ym94ZXMgZS5nLgogICAgICAgICBhdXRvIHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggPSBicmVha2Fi
bGVSdW5JbmRleCAtIDE7CiAgICAgICAgIGF1dG8gaXNBdElubGluZUJveCA9IHJ1bnNbdHJhaWxp
bmdDYW5kaWRhdGVJbmRleF0uaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCk7Ci0gICAgICAg
IHJldHVybiAhaXNBdElubGluZUJveCA/IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggOiB0cmFpbGlu
Z0NhbmRpZGF0ZUluZGV4ID8gbWFrZU9wdGlvbmFsKHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggLSAx
KSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuICFpc0F0SW5saW5lQm94ID8gdHJhaWxp
bmdDYW5kaWRhdGVJbmRleCA6IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwodHJhaWxpbmdDYW5kaWRhdGVJbmRleCAtIDEpIDogc3RkOjpudWxsb3B0OwogICAgIH07
CiAKICAgICAvLyBDaGVjayB3aGVyZSB0aGUgb3ZlcmZsb3cgb2NjdXJzIGFuZCB1c2UgdGhlIGNv
cnJlc3BvbmRpbmcgc3R5bGUgdG8gZmlndXJlIG91dCB0aGUgYnJlYWtpbmcgYmVoYXZpb3VyLgpA
QCAtMzQxLDcgKzM0MSw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJy
ZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAgICAgICAgICAgICAg
ICAgLy8gc2luY2UgaXQncyBlaXRoZXIgYXQgaHlwaGVuIHBvc2l0aW9uIG9yIHRoZSBlbnRpcmUg
cnVuIGlzIHJldHVybmVkLgogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJ0aWFsUnVuLT5sZW5n
dGgpOwogICAgICAgICAgICAgICAgIGF1dG8gcnVuSXNGdWxseUFjY29tbW9kYXRlZCA9IHBhcnRp
YWxSdW4tPmxlbmd0aCA9PSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuLmlubGluZUl0ZW0p
Lmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250ZW50
OjpCcmVha2luZ1Bvc2l0aW9uIHsgaW5kZXgsIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFr
aW5nUG9zaXRpb246OlRyYWlsaW5nQ29udGVudCB7IGZhbHNlLCBydW5Jc0Z1bGx5QWNjb21tb2Rh
dGVkID8gV1RGOjpudWxsb3B0IDogcGFydGlhbFJ1biB9IH07CisgICAgICAgICAgICAgICAgcmV0
dXJuIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRpb24geyBpbmRleCwgT3Zl
cmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbjo6VHJhaWxpbmdDb250ZW50IHsg
ZmFsc2UsIHJ1bklzRnVsbHlBY2NvbW1vZGF0ZWQgPyBzdGQ6Om51bGxvcHQgOiBwYXJ0aWFsUnVu
IH0gfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDI2
ZWIxOWYxMjM0YzRiMDVkNjdhZTIxZTY0ZGFjMGI3ZmIwNjVkODEuLmVlODFhMTcxMTczODhjY2Yx
Zjg4NmFiNmNhZDhiOTY0NTlmMzY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGlu
ZUJ1aWxkZXI6OgogICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxpbmUncyBvdmVyZmxvdyBjb250
ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5nIGNvbnRlbnQgcGFydGlhbCBs
ZW5ndGguCiAgICAgICAgIC8vICJzcFs8LWxpbmUgYnJlYWstPl1saXRfY29udGVudCIgLT4gb3Zl
cmZsb3cgbGVuZ3RoOiAxMSAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBsZW5ndGg6IDExLgog
ICAgICAgICBhdXRvIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCA9IHByZXZpb3VzTGluZSA/
IHByZXZpb3VzTGluZS0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIDogMDsKLSAgICAgICAgYXV0byBs
ZWFkaW5nTG9naWNhbFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxv
d0xvZ2ljYWxXaWR0aCA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBsZWFkaW5nTG9naWNh
bFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0xvZ2ljYWxXaWR0
aCA6IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBpbml0aWFsTGluZUhlaWdodCA9IFsmXSgp
IC0+IElubGluZUxheW91dFVuaXQgewogICAgICAgICAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5T
dGFuZGFyZHNNb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHlsZSgpLmNv
bXB1dGVkTGluZUhlaWdodCgpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0
IEJveCYKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIb3Jpem9udGFsTWFy
Z2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhv
cml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
biA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRC
b3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94R2Vv
bWV0cnkobGF5b3V0Qm94KS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFs
dWVPcigwKSB9KTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gp
LnNldEhvcml6b250YWxNYXJnaW4oeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFs
dWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkgfSk7CiB9
CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9u
dGFsQ29uc3RyYWludHMpCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25z
dAogICAgICAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gbWF4V2lkdGhBbmRNYXJnaW47
CiAgICAgfQogCi0gICAgYXV0byBtaW5XaWR0aCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1
dGVkTWluV2lkdGgobGF5b3V0Qm94LCBhdmFpbGFibGVXaWR0aCkudmFsdWVPcigwKTsKKyAgICBh
dXRvIG1pbldpZHRoID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRNaW5XaWR0aChsYXlv
dXRCb3gsIGF2YWlsYWJsZVdpZHRoKS52YWx1ZV9vcigwKTsKICAgICBhdXRvIG1pbldpZHRoQW5k
TWFyZ2luID0gY29tcHV0ZShtaW5XaWR0aCk7CiAgICAgaWYgKGNvbnRlbnRXaWR0aEFuZE1hcmdp
bi5jb250ZW50V2lkdGggPCBtaW5XaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGgpCiAgICAgICAg
IGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IG1pbldpZHRoQW5kTWFyZ2luOwpAQCAtNTg5LDkgKzU4
OSw5IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgICAgICAgICBpZiAoaW5saW5lQm94
U3RhcnRTZXQuY29udGFpbnMoJmxheW91dEJveCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGluZS4KICAgICAgICAgICAgICAg
ICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwot
ICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodCA9IGxvZ2ljYWxSZWN0LmhlaWdo
dCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNh
bFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbnRlbnRC
b3hIZWlnaHQgPSBsb2dpY2FsUmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJv
cmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpOwog
ICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEJv
eEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2Fs
UmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21l
dHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwX2x1KSk7CisgICAgICAgICAgICAgICAg
YXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5
Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFs
dWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hX
aWR0aChjb250ZW50Qm94V2lkdGgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQpAQCAtNjAwLDggKzYwMCw4IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAg
ICAgICAgICBlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmV4cGFuZFRvQ29udGFpbihsb2dpY2FsUmVj
dCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdCb3Jk
ZXJCb3hSZWN0LmxlZnQoKSk7CiAKLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRC
b3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52
ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigw
X2x1KSkpOwotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xv
c2luZ0JvcmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVy
KCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMF9sdSkpKTsKKyAg
ICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVy
Qm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2Vv
bWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpKTsKKyAgICAgICAgICAgIGJv
eEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LndpZHRo
KCkgLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpv
bnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwogICAgICAgICB9CiAgICAgfTsKICAgICB1
cGRhdGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBjMjVmYTE0M2ZhNzI2NjVlMDM1
ZTViZDk4ODAzNzJjM2M2Mzk4NTdlLi5iYzZjMGU1NzU4ZDQ0MmRmOTc5ZjVjYjUwNzE4NjE2MzU2
ZWNmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpidWls
ZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogICAgIGF1dG8g
bGluZUxvZ2ljYWxXaWR0aCA9IGxpbmVDb250ZW50LmxpbmVMb2dpY2FsV2lkdGg7CiAgICAgYXV0
byBjb250ZW50TG9naWNhbFdpZHRoID0gbGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxXaWR0aDsK
ICAgICBhdXRvIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgPSBMYXlvdXQ6Omhvcml6b250YWxB
bGlnbm1lbnRPZmZzZXQocnVucywgcm9vdEJveCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxpbmVM
b2dpY2FsV2lkdGgsIGNvbnRlbnRMb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmlzTGFzdExpbmVX
aXRoSW5saW5lQ29udGVudCk7Ci0gICAgYXV0byBsaW5lQm94ID0gTGluZUJveCB7IHJvb3RCb3go
KSwgbGluZUNvbnRlbnQubG9naWNhbFRvcExlZnQsIGxpbmVMb2dpY2FsV2lkdGgsIGhvcml6b250
YWxBbGlnbm1lbnRPZmZzZXQudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSksIGNvbnRlbnRM
b2dpY2FsV2lkdGgsIGxpbmVDb250ZW50Lm5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hDb3VudCB9
OworICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyByb290Qm94KCksIGxpbmVDb250ZW50Lmxv
Z2ljYWxUb3BMZWZ0LCBsaW5lTG9naWNhbFdpZHRoLCBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0
LnZhbHVlX29yKElubGluZUxheW91dFVuaXQgeyB9KSwgY29udGVudExvZ2ljYWxXaWR0aCwgbGlu
ZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CiAgICAgY29uc3RydWN0
QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIHJ1bnMpOwogICAgIHJldHVybiBsaW5l
Qm94OwogfQpAQCAtMjg1LDkgKzI4NSw5IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVj
dEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMCiAgICAg
ICAgICAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIC8vIEV2ZW4gbmVnYXRpdmUgaG9y
aXpvbnRhbCBtYXJnaW4gbWFrZXMgdGhlIGxpbmUgImNvbnRlbnRmdWwiLgogICAgICAgICAgICAg
aWYgKHJ1bi5pc0lubGluZUJveFN0YXJ0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGlubGlu
ZUJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgfHwgaW5saW5lQm94R2VvbWV0cnkuYm9yZGVyTGVm
dCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwX2x1KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBp
bmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgfHwgaW5saW5lQm94R2VvbWV0cnkucGFkZGlu
Z0xlZnQoKS52YWx1ZV9vcigwX2x1KTsKICAgICAgICAgICAgIGlmIChydW4uaXNJbmxpbmVCb3hF
bmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94R2VvbWV0cnkubWFyZ2luRW5k
KCkgfHwgaW5saW5lQm94R2VvbWV0cnkuYm9yZGVyUmlnaHQoKSB8fCBpbmxpbmVCb3hHZW9tZXRy
eS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDBfbHUpOworICAgICAgICAgICAgICAgIHJldHVybiBp
bmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5FbmQoKSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJS
aWdodCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDBfbHUp
OwogICAgICAgICAgICAgaWYgKHJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0zMTMsMTAgKzMxMywxMCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RBbmRB
bGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTAogICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlz
aGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94
KSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lID0gZm9ybWF0dGluZ1N0YXRl
LmxpbmVzKCkubGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFz
ZWxpbmUgPSBsYXN0TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSArIGxhc3RMaW5lLmJh
c2VsaW5lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzY2VudCA9IGlubGluZUxldmVsQm94R2Vv
bWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LmJvcmRlclRvcCgp
ICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGlubGlu
ZUJsb2NrQmFzZWxpbmU7CisgICAgICAgICAgICAgICAgICAgIGFzY2VudCA9IGlubGluZUxldmVs
Qm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LmJvcmRl
clRvcCgpICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkg
KyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAgICAgICAgICAgICAgICBhc2Nl
bnQgPSBkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KS5iYXNlbGluZSgpLnZhbHVlT3Io
bWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc2NlbnQgPSBkb3duY2FzdDxSZXBs
YWNlZEJveD4obGF5b3V0Qm94KS5iYXNlbGluZSgpLnZhbHVlX29yKG1hcmdpbkJveEhlaWdodCk7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXNjZW50ID0gbWFyZ2luQm94SGVp
Z2h0OwogICAgICAgICAgICAgbG9naWNhbExlZnQgKz0gc3RkOjptYXgoMF9sdSwgaW5saW5lTGV2
ZWxCb3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIExp
bmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxCb3hl
c1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90
dG9tOiB7CiAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWducyB3
aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5kIG5v
dCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50
SW5saW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91
bmRzLmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5lTGF5
b3V0VW5pdCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxC
b3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxp
bmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFs
dWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
cGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGlubGluZUxldmVsQm94LmxheW91dEJvdW5k
cygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
NDY2LDE0ICs0NjYsMTQgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hIZWln
aHRBbmRBbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmUKICAgICAgICAgICAgIGlu
bGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZpbmxpbmVMZXZlbEJveCwg
QWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9naWNh
bEJvdHRvbSB9KTsKICAgICAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIG1pbi9tYXggYWJzb2x1dGUg
dmFsdWVzIGlmIGFwcGxpY2FibGUuCiAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ0dlb21ldHJ5
LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxCb3gsIGxpbmVCb3gpKSB7
Ci0gICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9n
aWNhbFRvcC52YWx1ZU9yKGFic29sdXRlTG9naWNhbFRvcCksIGFic29sdXRlTG9naWNhbFRvcCk7
Ci0gICAgICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChtYXhpbXVt
TG9naWNhbEJvdHRvbS52YWx1ZU9yKGFic29sdXRlTG9naWNhbEJvdHRvbSksIGFic29sdXRlTG9n
aWNhbEJvdHRvbSk7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1p
bihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZV9vcihhYnNvbHV0ZUxvZ2ljYWxUb3ApLCBhYnNvbHV0
ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3Rk
OjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVfb3IoYWJzb2x1dGVMb2dpY2FsQm90dG9t
KSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICAvLyBUaGUgbGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGFzIGZvbGxvd3M6CiAg
ICAgICAgIC8vIDEuIFN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIG5vbi1saW5lLWJveCBy
ZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3ggYWJzb2x1dGUgdG9wIGFuZCBib3R0b20gdmFsdWVz
LgogICAgICAgICAvLyAyLiBDaGVjayBpZiB0aGUgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25lZCBp
bmxpbmUgYm94ZXMgKHRvcCwgYm90dG9tIGV0YykgaGF2ZSBlbm91Z2ggcm9vbSBhbmQgc3RyZXRj
aCB0aGUgbGluZSBib3ggZnVydGhlciBpZiBuZWVkZWQuCi0gICAgICAgIGF1dG8gbGluZUJveExv
Z2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKElubGluZUxheW91dFVu
aXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSk7Cisg
ICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52
YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVfb3Io
SW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgZm9yIChhdXRvKiBsaW5lQm94UmVsYXRpdmVJ
bmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKICAgICAg
ICAgICAgIGlmICghZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVC
b3goKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94LCBsaW5lQm94KSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpj
b21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGlu
ZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBh
dXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5s
aW5lQm94QmFzZWxpbmUudmFsdWVPcigwLmYpIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwor
ICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZy
b21Sb290SW5saW5lQm94QmFzZWxpbmUudmFsdWVfb3IoMC5mKSAtIHJvb3RJbmxpbmVCb3guYmFz
ZWxpbmUoKTsKICAgICAgICAgcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9wKHJvb3RJbmxpbmVC
b3hMb2dpY2FsVG9wKTsKICAgICB9OwogICAgIGNvbXB1dGVSb290SW5saW5lQm94VmVydGljYWxQ
b3NpdGlvbigpOwpAQCAtNzExLDcgKzcxMSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVudFdpZHRoQW5kTWFyZ2luCiAg
ICAgLy8gIzIKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
aG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKIAotICAgIHJldHVybiBDb250ZW50V2lkdGhBbmRNYXJn
aW4geyAqd2lkdGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9s
dSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9IH07CisgICAg
cmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5l
bmQudmFsdWVfb3IoMF9sdSkgfSB9OwogfQogCiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5kTWFyZ2luKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250
YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlkZGVu
VmVydGljYWxWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdRdWlya3MuY3BwCmluZGV4IDBlOGFjZjZiNDc4NjgwM2Y1ODYwNWRkMDExZGRiNDYzYTlj
MThiYzIuLmYzMDBiMjdiZDhiNDVkODUyMDAxZTIxYmVlNDM3NWRlZGZkYTMxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5saW5lTGV2ZWxCb3hBZmZlY3Rz
TGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMCiAgICAgICAgIH0KICAgICAgICAgLy8gTm9u
LXJvb3QgaW5saW5lIGJveGVzIChlLmcuIDxzcGFuPikuCiAgICAgICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVMZXZlbEJveC5s
YXlvdXRCb3goKSk7Ci0gICAgICAgIGlmIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkg
fHwgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKSB7CisgICAg
ICAgIGlmIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgfHwgYm94R2VvbWV0cnkuaG9y
aXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkgewogICAgICAgICAgICAgLy8gSG9yaXpv
bnRhbCBib3JkZXIgYW5kIHBhZGRpbmcgbWFrZSB0aGUgaW5saW5lIGJveCBzdHJldGNoIHRoZSBs
aW5lIChlLmcuIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAxMHB4OyI+PC9zcGFuPikuCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcApp
bmRleCA1YjMzNWJjNDBlZWZjOWMyODMzZDRkMTM3YjRhNTg0Nzg3MDc1MmZjLi40YTFkMjhlNGIz
YWVhZjdlMjRmNTI3NzNkYmU2NTJmNDVkOWViNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
LmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29u
c3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBJbmxpbmVMYXlvdXRVCiAgICAgbV90
cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVzZXQoKTsKICAgICBpZiAoIWZvcm1hdHRpbmdDb250
ZXh0KCkubGF5b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcoKSAm
JiAhaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgc3R5bGUubGV0dGVyU3BhY2luZygp
ID4gMCkKICAgICAgICAgbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuYWRkUGFydGlhbGx5VHJp
bW1hYmxlQ29udGVudChtX3J1bnMuc2l6ZSgpIC0gMSwgc3R5bGUubGV0dGVyU3BhY2luZygpKTsK
LSAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRoID0gaW5saW5lVGV4dEl0ZW0uaGFzVHJhaWxp
bmdTb2Z0SHlwaGVuKCkgPyBtYWtlT3B0aW9uYWwoc3R5bGUuZm9udENhc2NhZGUoKS53aWR0aChU
ZXh0UnVuIHsgU3RyaW5nVmlldyB7IHN0eWxlLmh5cGhlblN0cmluZygpIH0gfSkpIDogV1RGOjpu
dWxsb3B0OworICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGggPSBpbmxpbmVUZXh0SXRlbS5o
YXNUcmFpbGluZ1NvZnRIeXBoZW4oKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdHlsZS5mb250Q2Fz
Y2FkZSgpLndpZHRoKFRleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5nKCkg
fSB9KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJ
bmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRV
bml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIExpbmU6
OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6YWRkRnVsbHlUcmltbWFibGVDb250ZW50KHNpemVf
dCBydW5JbmRleCwgSQogICAgIG1fZnVsbHlUcmltbWFibGVXaWR0aCA9IHRyaW1tYWJsZVdpZHRo
OwogICAgIC8vIE5vdGUgdGhhdCBqdXN0IGJlY2F1c2UgdGhlIHRyaW1tYWJsZSB3aWR0aCBpcyAw
IChmb250LXNpemU6IDBweCksIGl0IGRvZXMgbm90IG1lYW4gd2UgZG9uJ3QgaGF2ZSBhIHRyaW1t
YWJsZSB0cmFpbGluZyBjb250ZW50LgogICAgIG1faGFzRnVsbHlUcmltbWFibGVDb250ZW50ID0g
dHJ1ZTsKLSAgICBtX2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXggPSBtX2ZpcnN0VHJpbW1hYmxlUnVu
SW5kZXgudmFsdWVPcihydW5JbmRleCk7CisgICAgbV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4ID0g
bV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4LnZhbHVlX29yKHJ1bkluZGV4KTsKIH0KIAogdm9pZCBM
aW5lOjpUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ6OmFkZFBhcnRpYWxseVRyaW1tYWJsZUNvbnRl
bnQoc2l6ZV90IHJ1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IHRyaW1tYWJsZVdpZHRoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBlZDIxM2FlMDFjYWEzOTVhNzk4NDIx
MThiOTk5NzIzMWU4ZDIwZTI5Li5kN2FhNzI4NDIwYWMzZTRkNWVkNjA3NGRhMjk2MzdmMTNmMjg1
OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTYyLDkgKzE2Miw5
IEBAIElubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94CiB7CiAgICAgYXV0byBsb2dpY2FsUmVjdCA9IGxv
Z2ljYWxSZWN0Rm9ySW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94KTsKICAgICAvLyBUaGlzIGxvZ2lj
YWwgcmVjdCBpcyBhcyB0YWxsIGFzIHRoZSAidGV4dCIgY29udGVudCBpcy4gTGV0J3MgYWRqdXN0
IHdpdGggdmVydGljYWwgYm9yZGVyIGFuZCBwYWRkaW5nLgotICAgIGF1dG8gdmVydGljYWxCb3Jk
ZXJBbmRQYWRkaW5nID0gYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5
LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0byB2ZXJ0aWNhbEJvcmRl
ckFuZFBhZGRpbmcgPSBib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnku
dmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSk7CiAgICAgbG9naWNhbFJlY3QuZXhwYW5k
VmVydGljYWxseSh2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcpOwotICAgIGxvZ2ljYWxSZWN0Lm1v
dmVWZXJ0aWNhbGx5KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRk
aW5nVG9wKCkudmFsdWVPcigwX2x1KSkpOworICAgIGxvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5
KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFs
dWVfb3IoMF9sdSkpKTsKICAgICByZXR1cm4gbG9naWNhbFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBjMzNmNjQ4M2JhYTJmZjM5MTgyNGMx
ZmQ2NmMzYTgxOWYzOGNkNGEzLi5hMzU5OTNkM2Y1ZjRhZTA0NTE5OWE4ZTQ4ZDNhZTg5MWYxNDcw
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0yMzEs
MTAgKzIzMSwxMCBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjppbmxpbmVJdGVtV2lk
dGgoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saQogICAgICAgICByZXR1cm4gYm94
R2VvbWV0cnkubWFyZ2luQm94V2lkdGgoKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5l
Qm94U3RhcnQoKSkKLSAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgKyBi
b3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVl
T3IoMCk7CisgICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpICsgYm94R2Vv
bWV0cnkuYm9yZGVyTGVmdCgpICsgYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZV9vcigw
KTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCi0gICAgICAgIHJldHVy
biBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCkgKyBi
b3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gYm94
R2VvbWV0cnkubWFyZ2luRW5kKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpICsgYm94R2Vv
bWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CiAKICAgICAvLyBOb24tcmVwbGFjZWQg
aW5saW5lIGJveCAoZS5nLiBpbmxpbmUtYmxvY2spCiAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1h
cmdpbkJveFdpZHRoKCk7CkBAIC0zMDUsNyArMzA1LDcgQEAgTGluZUJ1aWxkZXI6OkNvbW1pdHRl
ZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJdGVt
UmEKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRzIGFuZCBzaHJpbmsgdGhlIGF2YWlsYWJsZSBo
b3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50cnVfPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQi
PjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAgICAgICAvLyAzLiBDaGVjayBpZiB0aGUgY29u
dGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkgKGZ1
bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAgICAgICAvLyA0LiBSZXR1cm4g
aWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVyIGJ5IG5vdCBiZWluZyBhYmxl
IHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBleHBsaWNpdCBsaW5lIGJyZWFr
LgotICAgICAgICBjYW5kaWRhdGVDb250ZW50Rm9yTGluZShsaW5lQ2FuZGlkYXRlLCBjdXJyZW50
SXRlbUluZGV4LCBuZWVkc0xheW91dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgs
IHN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgV1RGOjpudWxsb3B0KSwgbV9saW5l
LmNvbnRlbnRMb2dpY2FsUmlnaHQoKSk7CisgICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5l
KGxpbmVDYW5kaWRhdGUsIGN1cnJlbnRJdGVtSW5kZXgsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRp
YWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRo
LCBzdGQ6Om51bGxvcHQpLCBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpKTsKICAgICAgICAg
Ly8gTm93IGNoZWNrIGlmIHdlIGNhbiBwdXQgdGhpcyBjb250ZW50IG9uIHRoZSBjdXJyZW50IGxp
bmUuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gUmVzdWx0IHsgfTsKICAgICAgICAgaWYgKGxpbmVD
YW5kaWRhdGUuZmxvYXRJdGVtKSB7CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBMaW5lQnVpbGRl
cjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwg
c2l6ZV90IGMKICAgICAgICAgLy8gSGFuZGxlIGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGZpcnN0
IChvdmVyZmxvd2luZyB0ZXh0IGZyb20gdGhlIHByZXZpb3VzIGxpbmUpLgogICAgICAgICAvLyBD
b25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5lIGl0ZW0uCiAgICAgICAgIG1fcGFydGlh
bExlYWRpbmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0ZW1z
W2N1cnJlbnRJbmxpbmVJdGVtSW5kZXhdKS5yaWdodChwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgpOwotICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdMb2dpY2FsV2lkdGggPyAqc3Rk
OjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBXVEY6Om51bGxvcHQpIDogaW5saW5lSXRl
bVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwor
ICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdMb2dpY2FsV2lkdGggPyAqc3RkOjpleGNo
YW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBzdGQ6Om51bGxvcHQpIDogaW5saW5lSXRlbVdpZHRo
KCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAgICAg
ICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbSgqbV9wYXJ0aWFs
TGVhZGluZ1RleHRJdGVtLCBpdGVtV2lkdGgpOwogICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0
ICs9IGl0ZW1XaWR0aDsKICAgICAgICAgKytjdXJyZW50SW5saW5lSXRlbUluZGV4OwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKExp
bmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAgIH0KICAgICAgICAg
aWYgKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCkg
fHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSkgewog
ICAgICAgICAgICAgQVNTRVJUKCFsZWFkaW5nTG9naWNhbFdpZHRoIHx8IGlubGluZUl0ZW0uaXNU
ZXh0KCkpOwotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBsZWFkaW5nTG9naWNhbFdp
ZHRoID8gKnN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgV1RGOjpudWxsb3B0KSA6
IGlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gbGVhZGluZ0xvZ2ljYWxXaWR0aCA/ICpzdGQ6OmV4
Y2hhbmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9wdCkgOiBpbmxpbmVJdGVtV2lk
dGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgICAgICAgICBsaW5lQ2Fu
ZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbShpbmxpbmVJdGVtLCBsb2dpY2Fs
V2lkdGgpOwogICAgICAgICAgICAgY3VycmVudExvZ2ljYWxSaWdodCArPSBsb2dpY2FsV2lkdGg7
CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaAppbmRl
eCAwYjBlZTE0ZGVkMGJlMmNjZDUyZDM0MzNiMDg4NDU0NmMxZjBkMmIyLi5jZTAwNzA5NzBiYWQ4
OWNhMzhkMzRhMzFhZDI0MTZhZWJjN2Q2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1
bi5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBMaW5lUnVuIHsKICAgICB9OwogCiAgICAgc3Ry
dWN0IEV4cGFuc2lvbjsKLSAgICBMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IEJveCYs
IGNvbnN0IElubGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHQ+ID0gV1RGOjpudWxs
b3B0KTsKKyAgICBMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IEJveCYsIGNvbnN0IElu
bGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0KTsKIAog
ICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dp
Y2FsUmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgKaW5kZXggYWNkMDlhYjFlNzEwMWFh
NmVjZjQzM2QyNjQwMDRmZmU4ZmI3YThjNC4uMmRmMTQ0NmMwMDE2MDZmNzA4NTZmZjNhOWQwMjhj
ZWM4ZDYyMzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaApAQCAtMjU0LDcgKzI1NCw3IEBA
IGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZChPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0
PiB3aWR0aCwgT3B0aW9uYWw8SW5saW5lCiB7CiAgICAgQVNTRVJUKCF3aWR0aCB8fCBtX2hhc1Zh
bGlkV2lkdGgpOwogICAgIEFTU0VSVCghaGVpZ2h0IHx8IG1faGFzVmFsaWRIZWlnaHQpOwotICAg
IG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0LnZhbHVlT3IoMCkpOworICAg
IG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSk7CiB9
CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZFRvQ29udGFpbihjb25zdCBJbmxpbmVS
ZWN0JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAppbmRleCA5Yzcz
N2FmMGJkYmE5NWE1ZjQwNWVjYjQ5NDVmY2NkMTljZDhiYzM5Li5mNWQ2MTBkZTE3NjBkZTBmYWE4
MTY2ZTEyOThhNTFjMGNlMzNmYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0u
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXaGl0ZXNwYWNlQ29udGVudD4g
bW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBTdHJpbmdWCiAgICAgYXV0byBu
ZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB3aGlsZSAobmV4
dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA8IHRleHRDb250ZW50Lmxlbmd0aCgpICYmIGlzV2hpdGVz
cGFjZUNoYXJhY3Rlcih0ZXh0Q29udGVudFtuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uXSkpCiAg
ICAgICAgICsrbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbjsKLSAgICByZXR1cm4gbmV4dE5vbldo
aXRlU3BhY2VQb3NpdGlvbiA9PSBzdGFydFBvc2l0aW9uID8gV1RGOjpudWxsb3B0IDogbWFrZU9w
dGlvbmFsKFdoaXRlc3BhY2VDb250ZW50IHsgbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiAtIHN0
YXJ0UG9zaXRpb24sIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIgfSk7CisgICAgcmV0dXJuIG5l
eHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPT0gc3RhcnRQb3NpdGlvbiA/IHN0ZDo6bnVsbG9wdCA6
IHN0ZDo6bWFrZV9vcHRpb25hbChXaGl0ZXNwYWNlQ29udGVudCB7IG5leHROb25XaGl0ZVNwYWNl
UG9zaXRpb24gLSBzdGFydFBvc2l0aW9uLCBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyIH0pOwog
fQogCiBzdGF0aWMgdW5zaWduZWQgbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24sIExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGluZUJyZWFrSXRlcmF0b3Is
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIElubGlu
ZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUNv
bnRlbnQsIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlQod2hpdGVzcGFjZUNvbnRlbnQtPmxlbmd0
aCk7CiAgICAgICAgICAgICBhdXRvIGFwcGVuZFdoaXRlc3BhY2VJdGVtID0gWyZdIChhdXRvIHN0
YXJ0UG9zaXRpb24sIGF1dG8gaXRlbUxlbmd0aCkgewogICAgICAgICAgICAgICAgIGF1dG8gc2lt
cGxlU2luZ2xlV2hpdGVzcGFjZUNvbnRlbnQgPSBpbmxpbmVUZXh0Qm94LmNhblVzZVNpbXBsaWZp
ZWRDb250ZW50TWVhc3VyaW5nKCkgJiYgKGl0ZW1MZW5ndGggPT0gMSB8fCB3aGl0ZXNwYWNlQ29u
dGVudElzVHJlYXRlZEFzU2luZ2xlU3BhY2UpOwotICAgICAgICAgICAgICAgIGF1dG8gd2lkdGgg
PSBzaW1wbGVTaW5nbGVXaGl0ZXNwYWNlQ29udGVudCA/IG1ha2VPcHRpb25hbChJbmxpbmVMYXlv
dXRVbml0IHsgZm9udC5zcGFjZVdpZHRoKCkgfSkgOiBpbmxpbmVJdGVtV2lkdGgoc3RhcnRQb3Np
dGlvbiwgaXRlbUxlbmd0aCk7CisgICAgICAgICAgICAgICAgYXV0byB3aWR0aCA9IHNpbXBsZVNp
bmdsZVdoaXRlc3BhY2VDb250ZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKElubGluZUxheW91dFVu
aXQgeyBmb250LnNwYWNlV2lkdGgoKSB9KSA6IGlubGluZUl0ZW1XaWR0aChzdGFydFBvc2l0aW9u
LCBpdGVtTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChJbmxp
bmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVzcGFjZUl0ZW0oaW5saW5lVGV4dEJveCwgc3RhcnRQb3Np
dGlvbiwgaXRlbUxlbmd0aCwgd2hpdGVzcGFjZUNvbnRlbnQtPmlzV29yZFNlcGFyYXRvciwgd2lk
dGgpKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVTcGFjZSgp
ID09IFdoaXRlU3BhY2U6OkJyZWFrU3BhY2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0
ZW0uaAppbmRleCA1MmRjOThkY2YwNmExOWFhMDVmYzRhYTBhYTI0ZDk4M2E1YjdjZDE1Li4zYzBj
ZjI2YmI4MDE1ZGNkNTI1YzkxMjgyZDA0ZmNiZDA3YThmNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZVRleHRJdGVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNXaGl0
ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SXRlbVR5cGUgPT0gVGV4dEl0ZW1UeXBlOjpX
aGl0ZXNwYWNlOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBt
X2lzV29yZFNlcGFyYXRvcjsgfQogICAgIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNUcmFpbGluZ1NvZnRIeXBoZW47IH0KLSAgICBPcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lkdGggPyBtYWtlT3B0
aW9uYWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07IH0KKyAgICBP
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lk
dGggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB7IH07IH0KICAgICBib29sIGlzRW1wdHlDb250ZW50KCkgY29uc3Q7CiAKICAgICBjb25z
dCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8
SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KCkpOyB9CkBAIC05MSw3ICs5MSw3IEBAIGlubGluZSBJ
bmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5saW5l
VGV4dEJveCwgdW5zaWduCiAgICAgbV9oYXNXaWR0aCA9ICEhd2lkdGg7CiAgICAgbV9oYXNUcmFp
bGluZ1NvZnRIeXBoZW4gPSBoYXNUcmFpbGluZ1NvZnRIeXBoZW47CiAgICAgbV9pc1dvcmRTZXBh
cmF0b3IgPSBpc1dvcmRTZXBhcmF0b3I7Ci0gICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlT3IoMCk7
CisgICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlX29yKDApOwogICAgIG1fdGV4dEl0ZW1UeXBlID0g
dGV4dEl0ZW1UeXBlOwogfQogCkBAIC0xMDUsNyArMTA1LDcgQEAgaW5saW5lIElubGluZVRleHRJ
dGVtIElubGluZVRleHRJdGVtOjpsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICBSRUxF
QVNFX0FTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChtX3RleHRJ
dGVtVHlwZSAhPSBUZXh0SXRlbVR5cGU6OlVuZGVmaW5lZCk7CiAgICAgQVNTRVJUKGxlbmd0aCk7
Ci0gICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBzdGFydCgpLCBsZW5ndGgsIGZhbHNlLCBp
c1dvcmRTZXBhcmF0b3IoKSwgV1RGOjpudWxsb3B0LCBtX3RleHRJdGVtVHlwZSB9OworICAgIHJl
dHVybiB7IGlubGluZVRleHRCb3goKSwgc3RhcnQoKSwgbGVuZ3RoLCBmYWxzZSwgaXNXb3JkU2Vw
YXJhdG9yKCksIHN0ZDo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogaW5saW5lIElu
bGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpyaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
CkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVt
OjpyaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3Ro
IDw9IHRoaXMtPmxlbmd0aCgpKTsKICAgICBBU1NFUlQobV90ZXh0SXRlbVR5cGUgIT0gVGV4dEl0
ZW1UeXBlOjpVbmRlZmluZWQpOwogICAgIEFTU0VSVChsZW5ndGgpOwotICAgIHJldHVybiB7IGlu
bGluZVRleHRCb3goKSwgZW5kKCkgLSBsZW5ndGgsIGxlbmd0aCwgaGFzVHJhaWxpbmdTb2Z0SHlw
aGVuKCksIGlzV29yZFNlcGFyYXRvcigpLCBXVEY6Om51bGxvcHQsIG1fdGV4dEl0ZW1UeXBlIH07
CisgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBlbmQoKSAtIGxlbmd0aCwgbGVuZ3RoLCBo
YXNUcmFpbGluZ1NvZnRIeXBoZW4oKSwgaXNXb3JkU2VwYXJhdG9yKCksIHN0ZDo6bnVsbG9wdCwg
bV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYmQ2MDJkYzZiODVlMWM0YWNkYzc2N2IyNzcwNjY1MTcw
MDQyN2FhMi4uNWJiMzNlOWY4NWRjNTFhNmE2NzU2NWVjZmE4NjBiMWU0ODU1YWE5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMDksOCAr
MTA5LDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JD
ZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KIAogICAgICAgICAgICAgLy8gRklYTUU6
IEZpbmQgb3V0IGlmIGl0IGlzIG9rIHRvIHVzZSB0aGUgcmVndWxhciBwYWRkaW5nIGhlcmUgdG8g
YWxpZ24gdGhlIGNvbnRlbnQgYm94IGluc2lkZSBhIHRhbGwgY2VsbCBvciB3ZSBuZWVkIHRvCiAg
ICAgICAgICAgICAvLyB1c2Ugc29tZSBraW5kIG9mIGludHJpbnNpYyBwYWRkaW5nIHNpbWlsYXIg
dG8gUmVuZGVyVGFibGVDZWxsLgotICAgICAgICAgICAgYXV0byBwYWRkaW5nVG9wID0gY2VsbEJv
eEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKExheW91dFVuaXQgeyB9KTsKLSAgICAgICAg
ICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCku
dmFsdWVPcihMYXlvdXRVbml0IHsgfSk7CisgICAgICAgICAgICBhdXRvIHBhZGRpbmdUb3AgPSBj
ZWxsQm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKExheW91dFVuaXQgeyB9KTsKKyAg
ICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQm90
dG9tKCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IH0pOwogICAgICAgICAgICAgYXV0byBpbnRyaW5z
aWNQYWRkaW5nVG9wID0gTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBhdXRvIGludHJpbnNp
Y1BhZGRpbmdCb3R0b20gPSBMYXlvdXRVbml0IHsgfTsKIApAQCAtMjU1LDggKzI1NSw4IEBAIHZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIC8vIFNlY3Rpb24gYm9yZGVycyBhcmUgZWl0
aGVyIGNvbGxhcHNlZCBvciBpZ25vcmVkLgogICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0
Qm9yZGVyKHsgfSk7CiAgICAgICAgIC8vIFVzZSBmYWtlIHZlcnRpY2FsIHBhZGRpbmcgdG8gc3Bh
Y2Ugb3V0IHRoZSBzZWN0aW9ucy4KLSAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldFBhZGRp
bmcoRWRnZXMgeyB7IH0sIHsgcGFkZGluZ0JlZm9yZS52YWx1ZU9yKDBfbHUpLCBwYWRkaW5nQWZ0
ZXIgfSB9KTsKLSAgICAgICAgcGFkZGluZ0JlZm9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
c2VjdGlvbkJveEdlb21ldHJ5LnNldFBhZGRpbmcoRWRnZXMgeyB7IH0sIHsgcGFkZGluZ0JlZm9y
ZS52YWx1ZV9vcigwX2x1KSwgcGFkZGluZ0FmdGVyIH0gfSk7CisgICAgICAgIHBhZGRpbmdCZWZv
cmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIEludGVybmFsIHRhYmxlIGVsZW1lbnRzIGRv
IG5vdCBoYXZlIG1hcmdpbnMuCiAgICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRIb3Jpem9u
dGFsTWFyZ2luKHsgfSk7CiAgICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1h
cmdpbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApp
bmRleCA3MjlhYzI4MDM2MWZlNTQ4MDdiMzdkNTM2NjczZTNkODIxODZmZTYwLi5iYjI0MTFkNDFk
ZjFhZjdlNjc0N2JmNWQ3N2VkNDQ0MzM5YmIyZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgIFRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3QgeyBy
ZXR1cm4gVGFibGVMYXlvdXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3JpZCgpKTsg
fQogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVH
cmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gV1RGOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwgTGF5b3V0
VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWls
YWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNl
dFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNl
KTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclJvd3MoTGF5b3V0VW5pdCBhdmFpbGFibGVI
b3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMoY29u
c3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGM2ODQzYzgzNGQ5YzllM2ExOWNkYjg3
ZDBiOTViZDg2YjBhNTk2YmQuLjNlM2I2Zjc2YTBmNGU4ZWVkZjgxNTRkOTU2OWJlMzczZjYxNDMx
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CkBAIC0xNDAsOSArMTQwLDkgQEAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBUYWJsZUZvcm1h
dHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckMKICAgICAvLyBFeHBh
bmQgd2l0aCBib3JkZXIKICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLmV4cGFuZChjb21w
dXRlZENlbGxCb3JkZXIoY2VsbCkud2lkdGgoKSk7CiAgICAgLy8gcGFkZGluZwotICAgIGludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ0xlZnQo
KSkudmFsdWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVlT3Io
MCkpOworICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5
bGUucGFkZGluZ0xlZnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdS
aWdodCgpKS52YWx1ZV9vcigwKSk7CiAgICAgLy8gYW5kIG1hcmdpbgotICAgIGludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFs
dWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkpLnZhbHVlT3IoMCkpOworICAg
IGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUubWFyZ2lu
U3RhcnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgpKS52YWx1
ZV9vcigwKSk7CiAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA1NmIyNzJi
MmRiMDAzNWE1Y2ZiZDdmNjUwNjY2M2ZhYTAwM2FiZmUzLi5lNWNlNjVhYjU0MjE3YTA1Yzk5Yzkz
ZjE5NDI5ZTVkOWQ4NjM5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRp
bmdRdWlya3MuY3BwCkBAIC02Myw3ICs2Myw3IEBAIExheW91dFVuaXQgVGFibGVGb3JtYXR0aW5n
UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlCiAg
ICAgLy8gZS5nIDxkaXYgc3R5bGU9ImhlaWdodDogMTAwcHgiPjx0YWJsZT48dHI+PHRkIHN0eWxl
PSJoZWlnaHQ6IDEwMCUiPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PiBpcyByZXNvbHZlZCB0byAw
cHguCiAgICAgYXV0byBmaXhlZExvZ2ljYWxIZWlnaHQgPSBbJl0oY29uc3QgYXV0byYgYW5jZXN0
b3JCb3gpIHsKICAgICAgICAgYXV0byBoZWlnaHQgPSBhbmNlc3RvckJveC5zdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuIGhlaWdodC5pc0ZpeGVkKCkgPyBtYWtlT3B0aW9u
YWwoTGF5b3V0VW5pdCB7IGhlaWdodC52YWx1ZSgpIH0pIDogV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gaGVpZ2h0LmlzRml4ZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChMYXlvdXRVbml0
IHsgaGVpZ2h0LnZhbHVlKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIGF1dG8m
IHRhYmxlQm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVM
YXlvdXQuY3BwCmluZGV4IGQ4NTY3NjUzMjNkY2NlZDQyYmNiMzBlNzQ0MTY2MDM2ZjhiOWZjMjQu
LjI0NTE5N2RkOWIyZTQzMjI5Yjg1N2Y1OTA3NTU1OGU5YmFmYjZlNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVMYXlvdXQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6
OlQKICAgICBhdXRvIGNvbHVtbldpZHRoQmFsYW5jaW5nQmFzZSA9IGF2YWlsYWJsZUhvcml6b250
YWxTcGFjZSA+PSBtX2dyaWQud2lkdGhDb25zdHJhaW50cygpLT5tYXhpbXVtID8gQ29sdW1uV2lk
dGhCYWxhbmNpbmdCYXNlOjpNYXhpbXVtV2lkdGggOiBDb2x1bW5XaWR0aEJhbGFuY2luZ0Jhc2U6
Ok1pbmltdW1XaWR0aDsKICAgICByZXR1cm4gZGlzdHJpYnV0ZUF2YWlsYWJsZVNwYWNlPENvbHVt
blNwYW4+KG1fZ3JpZCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBbJl0gKGNvbnN0IFRhYmxl
R3JpZDo6U2xvdCYgc2xvdCwgc2l6ZV90IGNvbHVtbkluZGV4KSB7CiAgICAgICAgIGF1dG8mIGNv
bHVtbiA9IG1fZ3JpZC5jb2x1bW5zKCkubGlzdCgpW2NvbHVtbkluZGV4XTsKLSAgICAgICAgYXV0
byBjb2x1bW5Cb3hGaXhlZFdpZHRoID0gY29sdW1uLmJveCgpID8gY29sdW1uLmJveCgpLT5jb2x1
bW5XaWR0aCgpLnZhbHVlT3IoMF9sdSkgOiAwX2x1OworICAgICAgICBhdXRvIGNvbHVtbkJveEZp
eGVkV2lkdGggPSBjb2x1bW4uYm94KCkgPyBjb2x1bW4uYm94KCktPmNvbHVtbldpZHRoKCkudmFs
dWVfb3IoMF9sdSkgOiAwX2x1OwogICAgICAgICBhdXRvIG1pbmltdW1XaWR0aCA9IHN0ZDo6bWF4
PGZsb2F0PihzbG90LndpZHRoQ29uc3RyYWludHMoKS5taW5pbXVtLCBjb2x1bW5Cb3hGaXhlZFdp
ZHRoKTsKICAgICAgICAgYXV0byBtYXhpbXVtV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oc2xvdC53
aWR0aENvbnN0cmFpbnRzKCkubWF4aW11bSwgY29sdW1uQm94Rml4ZWRXaWR0aCk7CiAKQEAgLTI3
Miw3ICsyNzIsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJp
YnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAogICAgICAgICBhdXRvIG1heGlt
dW1Db2x1bW5Bc2NlbnQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICAgICAgYXV0byBtYXhp
bXVtQ29sdW1uRGVzY2VudCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAgICAvLyBJbml0
aWFsIG1pbmltdW0gaGVpZ2h0IGlzIHRoZSBjb21wdXRlZCBoZWlnaHQgaWYgYXZhaWxhYmxlIDx0
ciBzdHlsZT0iaGVpZ2h0OiAxMDBweCI+PHRkPjwvdGQ+PC90cj4KLSAgICAgICAgcm93SGVpZ2h0
W3Jvd0luZGV4XSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29t
cHV0ZWRIZWlnaHQocm93cy5saXN0KClbcm93SW5kZXhdLmJveCgpLCBhdmFpbGFibGVWZXJ0aWNh
bFNwYWNlKS52YWx1ZU9yKDBfbHUpOworICAgICAgICByb3dIZWlnaHRbcm93SW5kZXhdID0gZm9y
bWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZEhlaWdodChyb3dz
Lmxpc3QoKVtyb3dJbmRleF0uYm94KCksIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpLnZhbHVlX29y
KDBfbHUpOwogICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbkluZGV4
IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8mIHNs
b3QgPSAqbV9ncmlkLnNsb3QoeyBjb2x1bW5JbmRleCwgcm93SW5kZXggfSk7CiAgICAgICAgICAg
ICBpZiAoc2xvdC5pc1Jvd1NwYW5uZWQoKSkKQEAgLTI5NiwxNCArMjk2LDE0IEBAIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpEaXN0cmlidXRlZFNwYWNlcyBUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjpUCiAgICAgLy8gRklYTUU6IENvbGxlY3Qgc3Bhbm5pbmcgcm93IG1heGlt
dW0gaGVpZ2h0cy4KIAogICAgIHRhYmxlVXNlZEhlaWdodCArPSAocm93cy5zaXplKCkgKyAxKSAq
IG1fZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKLSAgICBhdXRvIGF2YWlsYWJsZVNwYWNlID0gc3Rk
OjptYXgoYXZhaWxhYmxlVmVydGljYWxTcGFjZS52YWx1ZU9yKDBfbHUpLCB0YWJsZVVzZWRIZWln
aHQpOworICAgIGF1dG8gYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heChhdmFpbGFibGVWZXJ0aWNh
bFNwYWNlLnZhbHVlX29yKDBfbHUpLCB0YWJsZVVzZWRIZWlnaHQpOwogICAgIC8vIERpc3RyaWJ1
dGUgZXh0cmEgc3BhY2UgaWYgdGhlIHRhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHRhbGxlciB0aGFu
IHRoZSBzdW0gb2YgdGhlIHJvdyBoZWlnaHRzLgogICAgIHJldHVybiBkaXN0cmlidXRlQXZhaWxh
YmxlU3BhY2U8Um93U3Bhbj4obV9ncmlkLCBhdmFpbGFibGVTcGFjZSwgWyZdIChjb25zdCBUYWJs
ZUdyaWQ6OlNsb3QmIHNsb3QsIHNpemVfdCByb3dJbmRleCkgewogICAgICAgICBpZiAoc2xvdC5o
YXNSb3dTcGFuKCkpCiAgICAgICAgICAgICByZXR1cm4gR3JpZFNwYWNlIHsgZm9ybWF0dGluZ0Nv
bnRleHQoKS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3goKSkuYm9yZGVyQm94SGVpZ2h0
KCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goc2xvdC5jZWxsKCkuYm94KCkp
LmJvcmRlckJveEhlaWdodCgpIH07CiAgICAgICAgIGF1dG8mIHJvd3MgPSBtX2dyaWQucm93cygp
OwogICAgICAgICBhdXRvIGNvbXB1dGVkUm93SGVpZ2h0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5m
b3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZEhlaWdodChyb3dzLmxpc3QoKVtyb3dJbmRleF0u
Ym94KCksIHsgfSk7Ci0gICAgICAgIGF1dG8gaGVpZ2h0ID0gc3RkOjptYXg8ZmxvYXQ+KHJvd0hl
aWdodFtyb3dJbmRleF0sIGNvbXB1dGVkUm93SGVpZ2h0LnZhbHVlT3IoMF9sdSkpOworICAgICAg
ICBhdXRvIGhlaWdodCA9IHN0ZDo6bWF4PGZsb2F0Pihyb3dIZWlnaHRbcm93SW5kZXhdLCBjb21w
dXRlZFJvd0hlaWdodC52YWx1ZV9vcigwX2x1KSk7CiAgICAgICAgIHJldHVybiBHcmlkU3BhY2Ug
eyBoZWlnaHQsIGhlaWdodCB9OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2Uu
Y3BwCmluZGV4IDk0ZDk2MzkwMzllYWQzOWJlODA4YWZiMGRmMWM0ZGM0YTRhZjlkYzcuLmUzMDQ4
YjZiNGNkNWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25D
b3ZlcmFnZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lkYW5j
ZVJlYXNvbj4gY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmNsdQog
ICAgIGlmIChzdHlsZS50ZXh0U2VjdXJpdHkoKSAhPSBUZXh0U2VjdXJpdHk6Ok5vbmUpCiAgICAg
ICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRTZWN1cml0eSwg
cmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0gSHlw
aGVuczo6QXV0bykgewotICAgICAgICBhdXRvIHRleHRSZWFzb25zID0gY2FuVXNlRm9yVGV4dChz
dHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9udENhc2NhZGUoKSwgV1RGOjpudWxsb3B0LCBm
YWxzZSwgaW5jbHVkZVJlYXNvbnMpOworICAgICAgICBhdXRvIHRleHRSZWFzb25zID0gY2FuVXNl
Rm9yVGV4dChzdHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3RkOjpu
dWxsb3B0LCBmYWxzZSwgaW5jbHVkZVJlYXNvbnMpOwogICAgICAgICBpZiAodGV4dFJlYXNvbnMp
CiAgICAgICAgICAgICBBRERfUkVBU09OU19BTkRfUkVUVVJOX0lGX05FRURFRCh0ZXh0UmVhc29u
cywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKaW5kZXgg
YmY5NWM2NmZlMTcxNTBiMzhkNDA2ODkzNTBmZDIyNzIzMmVlNzY4OS4uM2RmZWVjYjIxYmNmY2M2
NDliY2E3N2MyZTFhYjFmMWMzOWJkNTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTYxLDcgKzYx
LDcgQEAgc3RydWN0IFJ1biB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHBhbnNpb247Ci0gICAg
UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0
Q29udGVudD4gPSBXVEY6Om51bGxvcHQpOworICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBjb25z
dCBMYXlvdXQ6OkJveCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3Zl
cmZsb3csIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+ID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQog
ICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lua092
ZXJmbG93OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3hHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94R2VvbWV0cnkuaAppbmRleCAwODMwNWIzNDY0OTRlZGU4OWQxNWE1NjA1YWFjZWYwZjVh
NDNkNGEwLi42ZDBmYjgxOGNjZDZmMDExMDUwZDFhMDZiNjE5YjU5ZTkzMWVkMGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5
LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHZl
cnRpY2FsUGFkZGluZygpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhvcml6b250
YWxQYWRkaW5nKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hUb3AoKSBjb25z
dCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKTsgfQot
ICAgIExheW91dFVuaXQgY29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94
TGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250
ZW50Qm94VG9wKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveFRvcCgpICsgcGFkZGluZ1RvcCgp
LnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94TGVmdCgpIGNvbnN0IHsg
cmV0dXJuIHBhZGRpbmdCb3hMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOyB9CiAg
ICAgTGF5b3V0VW5pdCBjb250ZW50Qm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gY29udGVudEJv
eFRvcCgpICsgY29udGVudEJveEhlaWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94
UmlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94TGVmdCgpICsgY29udGVudEJveFdpZHRo
KCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdDsKQEAgLTg4LDE2
ICs4OCwxNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94TGVmdCgpIGNvbnN0
IHsgcmV0dXJuIGJvcmRlckxlZnQoKTsgfQogICAgIExheW91dFVuaXQgcGFkZGluZ0JveEJvdHRv
bSgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQoKTsg
fQogICAgIExheW91dFVuaXQgcGFkZGluZ0JveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGlu
Z0JveExlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBwYWRkaW5n
Qm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBjb250
ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsgfQotICAgIExheW91
dFVuaXQgcGFkZGluZ0JveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0xlZnQoKS52YWx1
ZU9yKDApICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOyB9
CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGlu
Z1RvcCgpLnZhbHVlX29yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRvbSgp
LnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94V2lkdGgoKSBjb25zdCB7
IHJldHVybiBwYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApICsgY29udGVudEJveFdpZHRoKCkgKyBw
YWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsgfQogCiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQoKSAr
IHZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoKSArIGJvcmRlckJvdHRvbSgpOyB9CiAgICAgTGF5
b3V0VW5pdCBib3JkZXJCb3hXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIHBh
ZGRpbmdCb3hXaWR0aCgpICsgaG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKCkgKyBib3JkZXJS
aWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hIZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveEhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKTsgfQog
ICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5TdGFy
dCgpICsgYm9yZGVyQm94V2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9CiAKLSAgICBMYXlvdXRVbml0
IHZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJl
Zm9yZSgpICsgdmVydGljYWxCb3JkZXIoKSArIHZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCkg
KyBtYXJnaW5BZnRlcigpOyB9Ci0gICAgTGF5b3V0VW5pdCBob3Jpem9udGFsTWFyZ2luQm9yZGVy
QW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBob3Jpem9udGFsQm9y
ZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkgKyBtYXJnaW5FbmQoKTsgfQor
ICAgIExheW91dFVuaXQgdmVydGljYWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyB2ZXJ0aWNhbEJvcmRlcigpICsgdmVydGljYWxQYWRkaW5n
KCkudmFsdWVfb3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9CisgICAgTGF5b3V0VW5pdCBob3Jpem9u
dGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkg
KyBob3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDApICsg
bWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVuaXQgdmVydGljYWxTcGFjZUZvclNjcm9sbGJh
cigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTcGFjZUZvclNjcm9sbGJhcjsgfQogICAgIExh
eW91dFVuaXQgaG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9o
b3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXI7IH0KQEAgLTM3Nyw3ICszNzcsNyBAQCBpbmxpbmUg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnZlcnRpY2FsUGFkZGluZygpIGNvbnN0
CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gdGhpcy0+cGFkZGluZ0JvdHRvbSgpOwogICAgIGlm
ICghcGFkZGluZ1RvcCAmJiAhcGFkZGluZ0JvdHRvbSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICByZXR1cm4gcGFkZGluZ1RvcC52YWx1ZU9yKDApICsgcGFkZGluZ0JvdHRvbS52YWx1ZU9yKDAp
OworICAgIHJldHVybiBwYWRkaW5nVG9wLnZhbHVlX29yKDApICsgcGFkZGluZ0JvdHRvbS52YWx1
ZV9vcigwKTsKIH0KIAogaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpo
b3Jpem9udGFsUGFkZGluZygpIGNvbnN0CkBAIC0zODYsNyArMzg2LDcgQEAgaW5saW5lIE9wdGlv
bmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0CiAg
ICAgYXV0byBwYWRkaW5nUmlnaHQgPSB0aGlzLT5wYWRkaW5nUmlnaHQoKTsKICAgICBpZiAoIXBh
ZGRpbmdMZWZ0ICYmICFwYWRkaW5nUmlnaHQpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0
dXJuIHBhZGRpbmdMZWZ0LnZhbHVlT3IoMCkgKyBwYWRkaW5nUmlnaHQudmFsdWVPcigwKTsKKyAg
ICByZXR1cm4gcGFkZGluZ0xlZnQudmFsdWVfb3IoMCkgKyBwYWRkaW5nUmlnaHQudmFsdWVfb3Io
MCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveEdlb21ldHJ5Ojpib3JkZXJUb3AoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0R2Vv
bWV0cnlSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9t
ZXRyeVJlY3QuaAppbmRleCAzMjU1ZDkyNDVjZWI2Yzg3OTZjODBhODlkYTYwYTRjNzdiYzc0MDQ2
Li41MjFmNjEyNzNjNTcxYzNjYzQ5MjFjNjAyZWNjYzc5YTgzYzE4OWZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaApA
QCAtMjkwLDcgKzI5MCw3IEBAIGlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZChPcHRpb25hbDxMYXlv
dXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0CiB7CiAgICAgQVNTRVJU
KCF3aWR0aCB8fCBtX2hhc1ZhbGlkV2lkdGgpOwogICAgIEFTU0VSVCghaGVpZ2h0IHx8IG1faGFz
VmFsaWRIZWlnaHQpOwotICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0
LnZhbHVlT3IoMCkpOworICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVfb3IoMCksIGhlaWdo
dC52YWx1ZV9vcigwKSk7CiB9CiAKIGlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZFRvQ29udGFpbihj
b25zdCBSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJlYzE5OGMyODNiYzkyMDg0ZTNkMDFi
Yzg2NDU0ZjE3MTQ1ODcxODIuLjk0NTY0ZDBiZTJkMmY0ZWI5ZWNhYTJjZTU4ZWQ5ODgxMWYyZTcw
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRUcmVlQnVpbGRlci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBCb3gqIFRyZWVCdWlsZGVyOjpj
cmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNvbnN0
IFJlbgogICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsgQm94
OjpFbGVtZW50VHlwZTo6SUZyYW1lIH07CiAgICAgICAgICAgICByZXR1cm4gQm94OjpFbGVtZW50
QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNFbGVtZW50IH07CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9OwogCiAgICAgQm94KiBjaGlsZExheW91dEJveCA9IG51bGxwdHI7CkBAIC00
MjgsNyArNDI4LDcgQEAgdm9pZCBzaG93SW5saW5lVHJlZUFuZFJ1bnMoVGV4dFN0cmVhbSYgc3Ry
ZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGMKICAgICAgICAgICAgICAgICA8
PCAiIHNpemUgKCIgPDwgbG9naWNhbFJlY3Qud2lkdGgoKSA8PCAieCIgPDwgbG9naWNhbFJlY3Qu
aGVpZ2h0KCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiBiYXNlbGluZSAoIiA8PCBsb2dp
Y2FsUmVjdC50b3AoKSArIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCkgPDwgIikiCiAgICAgICAg
ICAgICAgICAgPDwgIiBhc2NlbnQgKCIgPDwgaW5saW5lTGV2ZWxCb3guYmFzZWxpbmUoKSA8PCAi
LyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IDw8ICIpIgotICAgICAg
ICAgICAgICAgIDw8ICIgZGVzY2VudCAoIiA8PCBpbmxpbmVMZXZlbEJveC5kZXNjZW50KCkudmFs
dWVPcigwLjBmKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2Vu
dCA8PCAiKSI7CisgICAgICAgICAgICAgICAgPDwgIiBkZXNjZW50ICgiIDw8IGlubGluZUxldmVs
Qm94LmRlc2NlbnQoKS52YWx1ZV9vcigwLjBmKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5
b3V0Qm91bmRzKCkuZGVzY2VudCA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExpbmUo
KTsKICAgICAgICAgfTsKICAgICAgICAgb3V0cHV0SW5saW5lTGV2ZWxCb3gobGluZUJveC5yb290
SW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAppbmRleCBmMWMzMzYxYjJkMzdhODNhZTdjM2Y3NmU4MDdiNWIwZWY5
ZmJkMDEzLi5lNTgyYTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRmMDU1MDkwNGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApA
QCAtMzA4LDE0ICszMDgsMTQgQEAgT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVDcm9z
c09yaWdpblJlc291cmNlUG9saWN5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogewogICAgIGlmIChz
aG91bGRDcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2FuY2VsTG9hZChvcmlnaW4sIHJlc3BvbnNl
KSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXF1ZXN0VVJMLCBtYWtlU3RyaW5nKCJDYW5jZWxsZWQgbG9hZCB0byAiLCByZXNw
b25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBiZWNhdXNlIGl0
IHZpb2xhdGVzIHRoZSByZXNvdXJjZSdzIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3kgcmVz
cG9uc2UgaGVhZGVyLiIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBP
cHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJhbmdlUmVxdWVzdGVkRmxhZyhjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIGlmIChyZXNwb25zZS5pc1JhbmdlUmVxdWVzdGVkKCkgJiYgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA9PSAyMDYgJiYgcmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9u
c2U6OlR5cGU6Ok9wYXF1ZSAmJiAhcmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OlJhbmdlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoeyB9LCAwLCByZXNw
b25zZS51cmwoKSwgeyB9LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5OWNhOWM0YTBkOTc2NjEyYTBm
OGJkMzNkYTA4NGZhNDQ2ODVlOTliLi45MmU3NjhhYTdkOGU4NDJiZmUwYTdmNDcwYmRlNGViMTRl
YTc5YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBib29s
IHBhcnNlQWNjZXNzQ29udHJvbE1heEFnZShjb25zdCBTdHJpbmcmIHN0cmluZywgU2Vjb25kcyYg
ZXhwaXJ5RGVsdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJlamVj
dCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgogICAgIGF1dG8gcGFyc2VkSW50ZWdl
ciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKLSAgICBleHBpcnlEZWx0YSA9IFNl
Y29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlT3IoMCkpKTsKKyAg
ICBleHBpcnlEZWx0YSA9IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2Vy
LnZhbHVlX29yKDApKSk7CiAgICAgcmV0dXJuIHBhcnNlZEludGVnZXIuaGFzVmFsdWUoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oCmluZGV4IDY2MGZm
MGEwMTZiMTk4NjMzYmJmNmRhYzQzOTQ2ZDg0M2EzZGE1NDguLjdmMTQxY2Y4MTFkMTVhOTc4MThl
NjIyYjhlZWMyZWQ1YzFiYzIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
dXN0b21IZWFkZXJGaWVsZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVh
ZGVyRmllbGRzLmgKQEAgLTU0LDEyICs1NCwxMiBAQCBPcHRpb25hbDxDdXN0b21IZWFkZXJGaWVs
ZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0
aW9uYWw8VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxkczsKICAgICBkZWNvZGVyID4+IGZp
ZWxkczsKICAgICBpZiAoIWZpZWxkcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8U3Ry
aW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5RG9tYWlu
czsKICAgICBpZiAoIXRoaXJkUGFydHlEb21haW5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7eyBX
VEZNb3ZlKCpmaWVsZHMpLCBXVEZNb3ZlKCp0aGlyZFBhcnR5RG9tYWlucykgfX07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0YzY3YjYzODIzZmY2YTQ5
N2E2MTJkNmQ2M2FlNDVhNmQ4ZGIwYTA1Li5lMjU1NTVlZDFiZDRkZjQ3YjQxODExMzdlMDQ4M2Zh
OGZkMmI5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAg
LTEyMyw4ICsxMjMsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2Vu
ZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1
ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNk
ZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJh
bWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5l
IFBBR0VfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50
aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9J
RCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVy
KCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIElTX01BSU5fRlJB
TUUgKG1fZnJhbWUgPyBtX2ZyYW1lLT5pc01haW5GcmFtZSgpIDogZmFsc2UpCiAjZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBB
R0VfSUQsIEZSQU1FX0lELCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCkBAIC0zMzIs
NyArMzMyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIAogI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBmb3IgKGF1dG8gY2FsbGJhY2tJZGVu
dGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy52YWx1ZXMoKSkKLSAgICAgICAg
bm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZp
ZXIsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0
aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQpOwogICAgIG1fYXBw
bGljYXRpb25NYW5pZmVzdExvYWRlcnMuY2xlYXIoKTsKICNlbmRpZgogCkBAIC01NTYsMTMgKzU1
NiwxMyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBVUkwm
IHVybCwgU1dDbGllbnRDb25uZWN0aW9uOjpSZWdpcwogewogICAgIGF1dG8gc2hvdWxkVHJ5TG9h
ZGluZ1Rocm91Z2hTZXJ2aWNlV29ya2VyID0gIWZyYW1lTG9hZGVyKCktPmlzUmVsb2FkaW5nRnJv
bU9yaWdpbigpICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkgJiYgdXJsLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKTsKICAgICBpZiAoIXNob3VsZFRyeUxvYWRpbmdUaHJvdWdoU2VydmljZVdv
cmtlcikgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBvcmln
aW4gPSAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkgPyBt
X2ZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKS5kYXRhKCkgOiBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwodXJsKTsKICAgICBpZiAoIVNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKS5tYXlIYXZlU2VydmljZVdvcmtlclJlZ2lz
dGVyZWRGb3JPcmlnaW4ob3JpZ2luKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQp
OworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0yMTgzLDcgKzIxODMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydEljb25M
b2FkaW5nKCkKIAogICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbGlua0ljb25zLmZpbmRNYXRjaGlu
ZyhbXShhdXRvJiBpY29uKSB7IHJldHVybiBpY29uLnR5cGUgPT0gTGlua0ljb25UeXBlOjpGYXZp
Y29uOyB9KTsKICAgICBpZiAoZmluZFJlc3VsdCA9PSBub3RGb3VuZCkKLSAgICAgICAgbV9saW5r
SWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIvZmF2aWNvbi5pY28iX3MpLCBM
aW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIHsgfSB9KTsKKyAg
ICAgICAgbV9saW5rSWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIvZmF2aWNv
bi5pY28iX3MpLCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBzdGQ6Om51bGxvcHQs
IHsgfSB9KTsKIAogICAgIGlmICghbV9saW5rSWNvbnMuc2l6ZSgpKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCmluZGV4IDliNjNlNDY4ODAxYTBkZmJlODVkMDA5MGQ2ZDk1YjcyMDM1NDEwZTEuLmI5Mzk2
NWRjMTBhN2IxNGE3MzQwNjZmYjk1MmU4ZWFhNzM0ODZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzb3VyY2UoKQogICAg
ICAgICByZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICB9CiAgICAgaWYgKG1fcHJl
ZmxpZ2h0Q2hlY2tlcikKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01MDYsNyArNTA2LDcgQEAgdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwodW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IKICAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9
IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKICAgICAgICAgbWFrZUNyb3NzT3JpZ2luQWNjZXNz
UmVxdWVzdFdpdGhQcmVmbGlnaHQoV1RGTW92ZShtX2J5cGFzc2luZ1ByZWZsaWdodEZvclNlcnZp
Y2VXb3JrZXJSZXF1ZXN0LnZhbHVlKCkpKTsKICAgICAgICAgQVNTRVJUKG1fYnlwYXNzaW5nUHJl
ZmxpZ2h0Rm9yU2VydmljZVdvcmtlclJlcXVlc3QtPmlzTnVsbCgpKTsKLSAgICAgICAgbV9ieXBh
c3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9ieXBhc3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdCA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTIyLDcgKzUyMiw3
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVlc3Qo
V1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2woYWN0
dWFsUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KTsKIAotICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJdCBzaG91bGQgYmUg
b2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2luY2Ugd2UgYWxyZWFkeSBhc2tlZCBhYm91
dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxS
ZXF1ZXN0KSwgU2VjdXJpdHlDaGVja1BvbGljeTo6U2tpcFNlY3VyaXR5Q2hlY2spOwpAQCAtNTMw
LDcgKzUzMCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNj
ZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gV1RGOjpu
dWxsb3B0OworICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC5mcmFtZSgp
LCBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIGlkZW50aWZp
ZXIsIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3
YjkwMjgxY2E3NjI3N2IzN2Y0Zjk2ZmVlNGVjMTUzOTIyZWM0YjUyLi5lZmQ5M2VhZTRmMTdkZDM2
ZjczNzExNDdlZDBmMWM5NTJmNWVhNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICBFbXB0eUVkaXRvckNsaWVu
dCgpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdlKGNv
bnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYp
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTI0OCwxMSArMjQ4LDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEJlZ2lu
RWRpdGluZyhjb25zdCBTaW1wbGVSYW5nZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
Ym9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSYsIGNvbnN0IE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBBZmZpbml0eSwgYm9v
bCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZEluc2VydE5vZGUoTm9k
ZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9u
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25z
dCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2Vy
dEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBib29sKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGll
cyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbCB7IH0KICAgICBib29sIHNob3VsZE1vdmVSYW5n
ZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKSBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0yNjUsOSArMjY1LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZFVwZGF0ZUNvbXBvc2l0aW9uKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRFbmRFZGl0
aW5nKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9uQ2hh
bmdlcygpIGZpbmFsIHsgfQotICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQorICAgIHZvaWQgd2lsbFdy
aXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgpIGZp
bmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZl
cj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0ZXNG
b3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1bHQp
IGZpbmFsIHsgfQogCkBAIC00MDIsMTkgKzQwMiwxOSBAQCBjbGFzcyBFbXB0eUluc3BlY3RvckNs
aWVudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgewogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGlj
IFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0
ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdvcmso
Y29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgYm9vbCBj
YW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY2FuTWFr
ZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBj
YWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAgICAg
dm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsgY2Fs
bE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9KTsgfQogICAgIGJv
b2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0IEFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFudFNl
c3Npb24mKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgZmluYWwgeyB9Ci0g
ICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBh
eVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9Ci0gICAgdm9pZCBjb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRl
PiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
c3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0K
KyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8
QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1FTlRf
TUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKE9w
dGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIGZpbmFsIHsgfQotI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+
JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5nZShz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIGZpbmFsIHsg
fQorI2VuZGlmCisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9uYWw8
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIGZpbmFsIHsgfQogICAgIHZvaWQgY2FuY2Vs
UGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Npb24o
KSBmaW5hbCB7IH0KICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZpbmFs
IHsgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAKIGNsYXNzIEVt
cHR5UGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFBsdWdpbkluZm9Qcm92aWRlciB7
CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIGZpbmFsIHsgfTsKLSAgICBWZWN0b3I8UGx1Z2lu
SW5mbz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXI+PiYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIFZlY3RvcjxQbHVnaW5JbmZv
PiBwbHVnaW5JbmZvKFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVnaW5J
ZGVudGlmaWVyPj4mKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICBWZWN0b3I8UGx1Z2luSW5m
bz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJu
IHsgfTsgfQogfTsKIApAQCAtNTUwLDkgKzU1MCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0ZVRp
bWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERhdGVU
aQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKIHZvaWQgRW1wdHlDaHJv
bWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KEFwcEhpZ2hsaWdodCYmKSBjb25zdAogewogfQor
CiAjZW5kaWYKIAogdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c2V0VGV4dEluZGljYXRvcihjb25z
dCBUZXh0SW5kaWNhdG9yRGF0YSYpIGNvbnN0CkBAIC02MDQsNiArNjA2LDQ5MSBAQCBSZWZQdHI8
V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbAogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGQ6Om9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Omhh
c1dlYlZpZXcoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOyAvLyBtYWlubHkgZm9yIGFzc2Vy
dGlvbnMKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVzZW50YXRp
b24oRG9jdW1lbnRMb2FkZXIqKQoreworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwor
Ym9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dE9uUmVzdG9yZUZyb21CYWNr
Rm9yd2FyZENhY2hlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpCit7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0Q29waWVzT25TY3JvbGwoKQoreworfQor
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQorewor
fQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDMoKQor
eworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKK30KKworYm9vbCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7Cit9CisKKyNpZiBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb25uZWN0aW9uUHJvcGVy
dGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIGludCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQoreworfQor
CisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopCit7Cit9CisKKyNl
bmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJikK
K3sKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxv
YWRFdmVudHMoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKK3sKK30KKwordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBXYWxsVGltZSwgTG9ja0JhY2tG
b3J3YXJkTGlzdCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKK3sKK30KKwordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBh
Z2UoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9w
U3RhdGVXaXRoaW5QYWdlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxDbG9zZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Piwgc3RkOjpvcHRp
b25hbDxVc2VkTGVnYWN5VExTPikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIFdp
bGxDb250aW51ZUxvYWRpbmcpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKK30KKwordm9pZCBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpCit7
Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+KQoreworfQorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hWaXN1YWxseU5vbkVtcHR5
U3RhdGUoKQoreworfQorCitGcmFtZSogRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hD
cmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGljeSkK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFNob3coKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJy
b3ImKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlz
aW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCit7Cit9CisKK3ZvaWQgRW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQoreworfQor
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCit7Cit9CisKK1Jlc291cmNlRXJy
b3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1cm4geyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24gfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpi
bG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1cm4g
eyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmJsb2NrZWRC
eUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAg
IHJldHVybiB7IH07Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBj
b25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHsgfTsKK30KKworI2VuZGlmCisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVU
eXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBTdHJp
bmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcm
KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKK3sKK30KKwordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKK3sKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKK3sKK30K
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVDYWNoZWREb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpCit7Cit9CisK
K1N0cmluZyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJikgY29u
c3QKK3sKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopCit7
Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKK30KKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyYW1lSGll
cmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKQoreworfQorCisjZW5kaWYKKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKK3sKK30KKwor
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tQmFja0ZvcndhcmRD
YWNoZSgpCit7Cit9CisKKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9i
YWxIaXN0b3J5KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCit7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVZp
ZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSYpCit7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
Cit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKK3sKK30KKworT2Jq
ZWN0Q29udGVudFR5cGUgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gT2JqZWN0Q29udGVudFR5
cGU6Ok5vbmU7Cit9CisKK1N0cmluZyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpvdmVycmlkZU1l
ZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQmKQoreworfQorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYpCit7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKworUmVt
b3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJlbW90
ZU9iamVjdCgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChOU0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAorewor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsKK30KKworI2VuZGlmCisKKyNpZiBVU0Uo
Q0ZVUkxDT05ORUNUSU9OKQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZENh
Y2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykKK3sK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6aXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVmZXRjaEROUyhjb25zdCBT
dHJpbmcmKQoreworfQorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKK1JlZlB0cjxMZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG9h
ZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpoYXNGcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogaW5saW5lIEVt
cHR5RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6RW1wdHlGcmFtZU5ldHdvcmtpbmdDb250ZXh0KCkK
ICAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQgeyBudWxscHRyIH0KIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzFkYzg1NGVmNTBjMzU5MmEwNGY1Mjc5YjVkNTE0
OTk4NTE0ODU5Li4zMTYwNWU2ODJkYjRkY2Q2MTZmMWI4ZjA1Y2VlNmNkNzRkYjkwZGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xhc3Mg
RW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKIAogICAgIGJvb2wgaG92
ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9OwogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50aW5n
RGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxQb2lu
dGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9pbnRp
bmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH07CisgICAgT3B0
aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09mUHJp
bWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
OwogICAgIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVy
aXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB7IH07IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBm
aW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDg5NTJmMGY5ODYzMGZhOTg3YjExMGU5ZjA4NTkxYTY5OTIxNzE1ZWYuLmZlYTAz
ODI2OTYzNjA1YzM4M2Y2YmEyMzEzZThlNDU3NzdjZTExNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjYsMTg3ICsyNiwxODIgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCi0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSNpbmNsdWRlICJMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIEZy
YW1lTG9hZGVyQ2xpZW50IHsKK3ByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsKIAot
ICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFp
bmx5IGZvciBhc3NlcnRpb25zCisgICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAotICAgIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9h
ZGVyKikgZmluYWwgeyB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIGZvcmNl
TGF5b3V0T25SZXN0b3JlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNoZSgp
IGZpbmFsOwogI2VuZGlmCi0gICAgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKSBmaW5hbCB7
IH0KIAotICAgIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGZv
cmNlTGF5b3V0Rm9yTm9uSFRNTCgpIGZpbmFsOwogCi0gICAgdm9pZCBkZXRhY2hlZEZyb21QYXJl
bnQyKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCkgZmluYWwgeyB9
CisgICAgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9CisgICAgdm9pZCBk
ZXRhY2hlZEZyb21QYXJlbnQyKCkgZmluYWw7CisgICAgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQz
KCkgZmluYWw7CiAKLSAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgZmlu
YWwgeyB9Ci0gICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBk
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKKworICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBmaW5h
bDsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBmaW5hbDsKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQotICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3Bl
cnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbCB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3BlcnRp
ZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKICNlbmRpZgogCi0gICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyB9CisgICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRl
bnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZykgZmluYWw7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikgZmluYWwgeyB9CisgICAgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqKSBmaW5hbDsKICNlbmRpZgot
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0KLSAgICBib29sIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIFdhbGxUaW1lLCBMb2NrQmFja0ZvcndhcmRM
aXN0KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2Uo
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKSBmaW5h
bCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgZmluYWwgeyB9
Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250
ZW50PiwgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBXaWxsQ29udGlu
dWVMb2FkaW5nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1
bWVudExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIGZp
bmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25T
ZXQ8TGF5b3V0TWlsZXN0b25lPikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlYWNo
VmlzdWFsbHlOb25FbXB0eVN0YXRlKCkgZmluYWwgeyB9Ci0KLSAgICBGcmFtZSogZGlzcGF0Y2hD
cmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGljeSkg
ZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmluYWwg
eyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgYm9vbCBkaXNwYXRjaERpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpIGZpbmFsOworCisgICAgdm9p
ZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIGZpbmFsOworICAgIHZv
aWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSwg
V2FsbFRpbWUsIExvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hE
aWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlk
UHVzaFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0
aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSBmaW5h
bDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0luc2Vj
dXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pIGZpbmFsOworICAgIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBX
aWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8
TGF5b3V0TWlsZXN0b25lPikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNoVmlzdWFs
bHlOb25FbXB0eVN0YXRlKCkgZmluYWw7CisKKyAgICBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdl
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGljeSkgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKKworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGlj
eUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJh
bWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgRm9y
bVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1l
UG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZp
bmFsIHsgfQorICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKIAotICAgIHZvaWQg
ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWwgeyB9CisgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2
ZW50KFJlZjxGb3JtU3RhdGU+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0
Rm9ybShGb3JtU3RhdGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogCi0g
ICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbCB7
IH0KLSAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0
YXRlKERvY3VtZW50TG9hZGVyKikgZmluYWw7CisgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJv
cihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAgIHZv
aWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNl
dE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0RG93
bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9Cisg
ICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogCi0gICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgZmluYWwg
eyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKLSAgICB2b2lk
IHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkUmVw
bGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdpbGxSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRl
bnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IGNoYXIqLCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKikgZmluYWwgeyB9CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyByZXR1cm4geyBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfTsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsg
fQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBm
aW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9s
aWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyByZXR1
cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qg
ZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7
IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0gICAg
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9Ci0gICAgUmVzb3VyY2VFcnJvciBmaWxl
RG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9Cisg
ICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZpbmFsOworICAgIFJlc291cmNl
RXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
Y29uc3QgZmluYWw7CiAKLSAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkRmFsbEJh
Y2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBjYW5IYW5k
bGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25z
dCBTdHJpbmcmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcmVwcmVz
ZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJpbmcgZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWwgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAg
IGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVt
ZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZnJhbWVMb2FkQ29tcGxl
dGVkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgZmluYWwgeyB9Ci0g
ICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRG
aW5pc2hMb2FkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCkgZmluYWwgeyB9CisgICAgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBmaW5hbDsK
KyAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSBmaW5hbDsKKyAgICB2b2lkIHByb3Zpc2lvbmFs
TG9hZFN0YXJ0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWQoKSBmaW5hbDsKKyAg
ICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBmaW5hbDsKIAotICAgIHZv
aWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7IH0K
LSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KSBmaW5hbCB7IH0KKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50
TG9hZGVyJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVS
TCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzYXZlUGxh
dGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIGZpbmFsIHsgfQotICAgIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmluYWwg
eyB9CisgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
IGZpbmFsOworICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIGRp
ZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgZmluYWwgeyB9CisgICAgdm9p
ZCBkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIGZpbmFsOwogI2VuZGlm
Ci0gICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWwgeyB9Ci0K
LSAgICB2b2lkIGRpZFJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsIHsgfQotCi0g
ICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWwgeyB9Ci0gICAgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsIHsgfQotICAgIGJvb2wgc2hvdWxkR29U
b0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0KLSAg
ICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbCB7IH0K
LSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKKworICAgIHZvaWQg
ZGlkUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisKKyAgICB2b2lkIHVwZGF0
ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRp
cmVjdExpbmtzKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0mKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9y
eUl0ZW0mKSBmaW5hbDsKKyAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOworICAgIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7CisgICAg
dm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgZmluYWw7CiAgICAgUmVmUHRyPEZy
YW1lPiBjcmVhdGVGcmFtZShjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQmKSBm
aW5hbDsKICAgICBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhU
TUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIGZpbmFsOwogCi0gICAgT2Jq
ZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JikgZmluYWwgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7IH0KLSAgICBTdHJpbmcg
b3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICBPYmpl
Y3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBmaW5hbDsKKyAgICBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbDsKIAot
ICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0JikgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldv
cmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZW1vdGVBWE9iamVjdFJl
ZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQot
ICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChO
U0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbCB7
IGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsgfQorICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFj
Y2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxDYWNoZVJlc3Bv
bnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgTlNDYWNoZWRVUkxSZXNwb25zZSAq
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik+JiYpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIGJvb2wgc2hv
dWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25n
KSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwogI2VuZGlmCiAK
ICAgICBSZWY8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQo
KSBmaW5hbDsKIAotICAgIGJvb2wgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikg
ZmluYWwgeyB9CisgICAgYm9vbCBpc0VtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIHZv
aWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogI2lmIFVTRShRVUlDS19M
T09LKQotICAgIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGVQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRl
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsK
ICNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBib29s
IGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWw7CiAjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KQotICAgIHN0YXRpYyBib29sIGlz
VHlwZShjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCYgZnJhbWVMb2FkZXJDbGllbnQp
IHsgcmV0dXJuIGZyYW1lTG9hZGVyQ2xpZW50LmlzRW1wdHlGcmFtZUxvYWRlckNsaWVudCgpOyB9
Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
VFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDRmOTIzOTAwOGY5MGI1YjU4ODBmMWIyZDc1ZjJm
NTFmZDY2OTlmNjEuLjI0ZTgyNWIzYmU2NGJjYWY1MWY1ZGI0MDZjMmQ4MzQ2Njc0MDA2ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCkBAIC0xMTgy
LDcgKzExODIsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIqIGxp
bmUsIExpc3RTdGF0ZSYgc3RhdGUsIExpc3RSZXN1bHQmIHJlcwogICAgICAgICB7CiAgICAgICAg
ICAgLyogRmlyc3QgdHJ5IHRvIHVzZSByZXN1bHQuZmVfc2l6ZSB0byBmaW5kICIgLT4gIiBzZXF1
ZW5jZS4KICAgICAgICAgICAgICBUaGlzIGNhbiBnaXZlIHByb3BlciByZXN1bHQgZm9yIGNhc2Vz
IGxpa2UgImFhYSAtPiBiYmIgLT4gY2NjIi4gKi8KLSAgICAgICAgICAgIGF1dG8gZmlsZVNpemUg
PSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocmVzdWx0LmZpbGVT
aXplKS52YWx1ZU9yKDApOworICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNpemUpLnZhbHVlX29y
KDApOwogCiAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IChmaWxlU2l6ZSAr
IDQpICYmCiAgICAgICAgICAgICAgIHN0cm5jbXAocmVzdWx0LmZpbGVuYW1lICsgcmVzdWx0LmZp
bGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIsIDQpID09IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggN2JhYTA4OTE2NzNhM2FjZTAwMzc3MzE2ZjU0NWI3
M2Y5N2U3MTI5Mi4uZTM1Y2E4M2E1MDQ1Y2Y2MTBjOTNiMzc4NWNkMzRhYjAyZTIyZjQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtMjUzLDEyICsyNTMsMTIgQEAgaW5s
aW5lIE9wdGlvbmFsPEZldGNoT3B0aW9ucz4gRmV0Y2hPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKICAgICBpZiAoIWRlY29kZVBl
cnNpc3RlbnQoZGVjb2Rlciwgb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxE
b2N1bWVudElkZW50aWZpZXI+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2xp
ZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgb3B0aW9u
cy5jbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShjbGllbnRJZGVudGlmaWVyLnZhbHVlKCkpOwog
CiAgICAgcmV0dXJuIG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBlOTM3Y2ZlOTE3NjY2MmVkZGNmYzM4ZjJhMWMwNjZlMDg4Yzk1NGUxLi40NjQyNzhmYjUw
MWE5NjYwZDcxMTcwZWMwM2M2YTBjMmVlOTMzY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTE1MCw4ICsxNTAsOCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZhbHVl
T3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEICgoZnJh
bWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQ
QUdFX0lEICgocGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkp
CisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigp
KSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVf
SUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgRlJBTUVM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtw
YWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9h
ZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUo
KSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdl
dCwgRXZlCiAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKICAg
ICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1l
KCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd247CiAKLSAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9
IG9wZW5lclBvbGljeS52YWx1ZU9yKHJlZmVycmVyUG9saWN5ID09IFJlZmVycmVyUG9saWN5OjpO
b1JlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVPcGVu
ZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5l
clBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihyZWZlcnJlclBvbGljeSA9PSBSZWZlcnJl
clBvbGljeTo6Tm9SZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6IE5l
d0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBpbml0aWF0ZWRCeU1haW5GcmFtZSwg
ZG93bmxvYWRBdHRyaWJ1dGUsIHN5c3RlbVByZXZpZXdJbmZvKTsKICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldE5ld0ZyYW1lT3BlbmVyUG9saWN5KG5ld0ZyYW1lT3BlbmVyUG9saWN5KTsKICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnNldFJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5KTsKQEAgLTY5
NCw3ICs2OTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiB7CiAg
ICAgYXV0byBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CiAgICAgCi0gICAgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBkaXNw
YXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICBkaXNwYXRjaEdsb2Jh
bE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJlciwgRgogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVz
dCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgeyB1cmwgfSwgIl9zZWxmIl9zLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OlN1cHByZXNzKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2FyZExp
c3QoTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKLSAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5s
b2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5cGU6
OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9LCBXVEY6Om51
bGxvcHQsIFtdIHsgfSk7CisgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpLCByZWZlcmVyLCBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhM
b2NrZWRCYWNrRm9yd2FyZExpc3QsIG51bGxwdHIsIHsgfSwgc3RkOjpudWxsb3B0LCBbXSB7IH0p
OwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBAIC0yMzI5
LDcgKzIzMjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYgY2Fj
aGVkRnJhbWUpCiAgICAgQVNTRVJUKHZpZXcpOwogICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlV
c2VyKGZhbHNlKTsKIAotICAgIE9wdGlvbmFsPEludFJlY3Q+IHByZXZpb3VzVmlld0ZyYW1lUmVj
dCA9IG1fZnJhbWUudmlldygpID8gIG1fZnJhbWUudmlldygpLT5mcmFtZVJlY3QoKSA6IE9wdGlv
bmFsPEludFJlY3Q+KFdURjo6bnVsbG9wdCk7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gcHJldmlv
dXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3KCktPmZyYW1l
UmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oc3RkOjpudWxsb3B0KTsKICAgICBtX2ZyYW1lLnNl
dFZpZXcodmlldyk7CiAKICAgICAvLyBVc2UgdGhlIHByZXZpb3VzIFNjcm9sbFZpZXcncyBmcmFt
ZSByZWN0LgpAQCAtNDA0OSw4ICs0MDQ5LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tcGxldGVQ
YWdlVHJhbnNpdGlvbklmTmVlZGVkKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJUZXN0aW5n
T3ZlcnJpZGVzKCkKIHsKLSAgICBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nID0gV1RG
OjpudWxsb3B0OwotICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmcg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZyA9IHN0
ZDo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0aW5n
ID0gc3RkOjpudWxsb3B0OwogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xp
Y3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAppbmRleCBmMjk3YjUwY2ExZWVlNTBjYzNmMDU2YWJkNmM2NDhjMDRlMmQ5MzNjLi4y
N2QwZDUzOWJjYjEwMWIxNjdlODM3Mjk2NDMzZDViODRjMGQ0N2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dHVwRm9yUmVwbGFjZSgpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25z
IHdoaWNoIHN0YXJ0IGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVmUHRy
PEZvcm1TdGF0ZT4mJiwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBXVEY6
Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0
IGFuZCBsb2FkVVJMLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEZyYW1lUmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgT3B0aW9uYWw8
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkg
c3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTEzMCw4ICsx
MzAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJy
b3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IFdURjo6
bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgp
LCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZy
YW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50Kiwg
Y29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBPcHRp
b25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmlld0lu
Zm8mID0geyB9LCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50
KiA9IG51bGxwdHIsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+ID0g
eyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDM1NzE2
NzVmMjdkMDE3ZGQ1ZjIxZGJmN2RiMjdmOWQ2MzM4MWE5ZDEuLjliYzI1MzE0YTkzY2ExMTlkNWFi
MGFlMDZiNGQ4NDk2MmMyNzRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaApAQCAtMTA0LDExICsxMDQsMTEgQEAgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVudGlm
aWVyPiBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIGF1dG8gcHJvY2VzcyA9IFByb2Nlc3NJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFwcm9jZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDY0X3QgcG9saWN5Q2hlY2s7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwb2xpY3lDaGVjaykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHsgKnByb2Nlc3MsIHBvbGljeUNoZWNrIH07CiB9CkBAIC0yMDgsMTcgKzIw
OCwxNyBAQCBPcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gU3lzdGVtUHJldmlld0luZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBlbGVt
ZW50OwogICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKICAgICBkZWNvZGVyID4+IHByZXZpZXdS
ZWN0OwogICAgIGlmICghcHJldmlld1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpc1By
ZXZpZXc7CiAgICAgZGVjb2RlciA+PiBpc1ByZXZpZXc7CiAgICAgaWYgKCFpc1ByZXZpZXcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmVsZW1lbnQpLCBXVEZNb3ZlKCpwcmV2aWV3UmVj
dCksIFdURk1vdmUoKmlzUHJldmlldykgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRU
UEhlYWRlckZpZWxkLmNwcAppbmRleCA2MGE2ZmM0NTEzY2MwZTg3MzFjNjcyOTkzODBjYTY1NTFi
MDNhYzBjLi5iMjMwYmZmNDhmYjU1NGM0ZDI2NjE0N2NhMmVkZTgxZDIyYjZlOTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBA
IE9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gSFRUUEhlYWRlckZpZWxkOjpjcmVhdGUoU3RyaW5n
JiYgdW5wYXJzZWROYW1lLCBTdHJpbmcmCiAgICAgU3RyaW5nVmlldyBzdHJpcHBlZE5hbWUgPSBT
dHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hh
cmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIFN0cmluZ1ZpZXcgc3RyaXBwZWRW
YWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1ZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdN
YXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIGlmICghUkZDNzIz
MDo6aXNWYWxpZE5hbWUoc3RyaXBwZWROYW1lKSB8fCAhUkZDNzIzMDo6aXNWYWxpZFZhbHVlKHN0
cmlwcGVkVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG5hbWUgPSBzdHJpcHBlZE5hbWUubGVuZ3Ro
KCkgPT0gdW5wYXJzZWROYW1lLmxlbmd0aCgpID8gV1RGTW92ZSh1bnBhcnNlZE5hbWUpIDogc3Ry
aXBwZWROYW1lLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHZhbHVlID0gc3RyaXBwZWRWYWx1ZS5s
ZW5ndGgoKSA9PSB1bnBhcnNlZFZhbHVlLmxlbmd0aCgpID8gV1RGTW92ZSh1bnBhcnNlZFZhbHVl
KSA6IHN0cmlwcGVkVmFsdWUudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVh
ZGVyRmllbGQuaAppbmRleCA1NDNlOGIzMGZhZGJkODUyOTVjMjBhYTcyMjY2NzMxNDA0Yzg4ZWZm
Li4wZjc2MGZiYzhjMThhZGI0MTdhYzgzZDBlOTkzMDBmYjBkOGE1Njc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oCkBAIC02MSwxMiArNjEsMTIgQEAgT3B0aW9uYWw8
SFRUUEhlYWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAg
aWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
bmFtZSksIFdURk1vdmUoKnZhbHVlKSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVy
LmNwcAppbmRleCA3Y2YxYzBmNGVkMTA5MmU1MTE4NDcwNTU4ZDg4MGRkOGNkMDJkYTdhLi40OGRm
ZWFjZDk1YWQwOGRmNTgwOGEwMzkwNDZlMTg2YmY0MzllNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0xpbmtIZWFkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRVUkxCb3VuZGFyaWVzKFN0cmlu
CiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVyKTsKICAgICBpZiAoIXNraXBF
eGFjdGx5KGJ1ZmZlciwgJzwnKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihidWZm
ZXIpOwogCiAgICAgYXV0byB1cmxTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwpAQCAtOTMsNyAr
OTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBmaW5kVVJMQm91bmRhcmllcyhTdHJpbgogICAgIGF1dG8gdXJsRW5kID0gYnVmZmVy
LnBvc2l0aW9uKCk7CiAgICAgc2tpcFVudGlsKGJ1ZmZlciwgJz4nKTsKICAgICBpZiAoIXNraXBF
eGFjdGx5KGJ1ZmZlciwgJz4nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTdHJpbmcodXJsU3RhcnQsIHVy
bEVuZCAtIHVybFN0YXJ0KTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlua0hlYWRlcjo6TGlua1BhcmFtZXRl
ck5hbWU+CiAgICAgYm9vbCB2YWxpZFBhcmFtZXRlclZhbHVlRW5kID0gYnVmZmVyLmF0RW5kKCkg
fHwgaXNQYXJhbWV0ZXJWYWx1ZUVuZCgqYnVmZmVyKTsKICAgICBpZiAodmFsaWRQYXJhbWV0ZXJW
YWx1ZUVuZCAmJiBpc0V4dGVuc2lvblBhcmFtZXRlcihuYW1lKSkKICAgICAgICAgcmV0dXJuIG5h
bWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiAvLyBCZWZvcmU6CkBAIC0yOTksNyArMjk5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgZmluZE5leHRIZWFkZXIoU3RyaW5nUGFyc2luZ0J1ZmZl
cjwKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExpbmtIZWFkZXI6OkxpbmtIZWFk
ZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGF1
dG8gdXJsUmVzdWx0ID0gZmluZFVSTEJvdW5kYXJpZXMoYnVmZmVyKTsKLSAgICBpZiAodXJsUmVz
dWx0ID09IFdURjo6bnVsbG9wdCkgeworICAgIGlmICh1cmxSZXN1bHQgPT0gc3RkOjpudWxsb3B0
KSB7CiAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICBmaW5kTmV4dEhlYWRlcihi
dWZmZXIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAK
aW5kZXggNjU3MmM3ZGU2NmIxMjMwOTZkZDQ5MWJlNGE2YmI0MGRjMjM5NDIyMy4uY2M4OGFlODE4
NzgyOWY3MDFhNmNkNjE2MTc5NjhiYzgyYjNhNDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5r
TG9hZGVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIE9wdGlvbmFsPENhY2hlZFJlc291cmNlOjpU
eXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3RyCiAg
ICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOwogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcywgInRyYWNrIikpCiAgICAgICAgIHJl
dHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVsb2Fk
UmVzb3VyY2VDbGllbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBMaW5rTG9hZGVyJiBsb2Fk
ZXIsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENv
bnRlbnRDaGVja2VyLmNwcAppbmRleCA1YjE3N2M3ODExNzBjMzQ3M2VlZjNhYjQ0MWVlYWRlYmI5
OTIzMWEwLi41MTY5NjcxZjU5N2Q0M2Y2ZTQ2NTJhZDNiMzA0ZDU5MjY5NDNiOTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCkBAIC0xMzYsNyAr
MTM2LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zvck1p
eGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW0KICAgICAgICAgZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggODg2NzdhNzMwNjFj
ZGMwMGQ5MTBmMTE0MjdmMTA3MTg2ZWQ4MTk4ZC4uYTZiZjZhZmU1YjVhNzU3Y2E2ODViZWQzZTU2
ZWVjM2I5MDk4NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgR2xvYmFs
RnJhbWVJZGVudGlmaWVyIGNyZWF0ZUdsb2JhbEZyYW1lSWRlbnRpZmllcihjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIHJldHVy
biB7IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlT3Io
RnJhbWVJZGVudGlmaWVyIHsgfSkgfTsKKyAgICAgICAgcmV0dXJuIHsgZG9jdW1lbnQuZnJhbWUo
KS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KSwgZG9jdW1l
bnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7
IH0pIH07CiAgICAgcmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmllcigpOwogfQogCkBAIC04OCw3
ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtl
eVN0YXRlRGF0YT4ga2V5U3RhdGVEYXRhRm9yRmlyc3RFCiB7CiAgICAgaWYgKFVJRXZlbnRXaXRo
S2V5U3RhdGUqIHVpRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnQpKQogICAgICAg
ICByZXR1cm4gTmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEgeyAqdWlF
dmVudCB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
PiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVudChFdmVudCogZXZlbnQpCkBAIC05Nyw3
ICs5Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50RGF0
YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlCiAgICAgICAgIGlmIChlLT5pc01vdXNl
RXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50
RGF0YSB7IHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQmPigqZSkgfTsKICAgICB9Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBOYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFtZSBp
bml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBFdmVudCogZXZlbnQs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQpAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgTmF2aWdhdGlvbkFjdGlvbjo6c2V0VGFyZ2V0QmFja0ZvcndhcmRJdGVtKEhpc3RvcnlJ
dGVtJiBpdGVtKQogCiB2b2lkIE5hdmlnYXRpb25BY3Rpb246OnNldFNvdXJjZUJhY2tGb3J3YXJk
SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKLSAgICBtX3NvdXJjZUJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgPSBpdGVtID8gbWFrZU9wdGlvbmFsKGl0ZW0tPmlkZW50aWZpZXIoKSkgOiBXVEY6
Om51bGxvcHQ7CisgICAgbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyID0gaXRlbSA/
IHN0ZDo6bWFrZV9vcHRpb25hbChpdGVtLT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0Owog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggN2QwZGE3
Y2EyZGM0MzBiODQyYWRkZGMyYjE4MTA0NmVjYTk4NDViMi4uOThlOTYxOTc3NTY3MDgwZTg0ODA5
NWZlMTAyMzY2NmVkZTA1ZDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcApAQCAtNTUsOCArNTUsOCBAQAogI2VuZGlmCiAKICNkZWZpbmUgSVNfQUxMT1dFRCAobV9m
cmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCkgOiBmYWxzZSkKLSNkZWZpbmUgUEFHRV9JRCAobV9mcmFtZS5sb2FkZXIoKS5w
YWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZS
QU1FX0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmll
cigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEIChtX2ZyYW1lLmxvYWRlcigpLnBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1F
X0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoSVNfQUxMT1dFRCwgTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1
NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gUG9saWN5Q2hlY2tlcjo6IiBmbXQsIHRoaXMsIFBB
R0VfSUQsIEZSQU1FX0lELCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmluZGV4
IDIzNWFjMWFkNzI4NzdkYzY2NjhiZDRlN2FhODIyM2IzZTEyMGQ2YWQuLjg1Y2ZkZDY0OWZkMjE5
OTkyMWEzZmUxMTExZmRkZDM2OGUyZWZlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgog
ICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRzVW50aWxTZW5kKCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzICYmICFkZXN0aW5hdGlvblNlY29uZHMp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoc291cmNlU2Vjb25kcyAmJiBk
ZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHNvdXJj
ZVNlY29uZHMsIGRlc3RpbmF0aW9uU2Vjb25kcyk7CkBAIC0yMTgsMTIgKzIxOCwxMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxTZWNvbmRzPj4gc291cmNlU2Vjb25k
czsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc291cmNlU2Vjb25kczsKICAgICAgICAgICAgIGlm
ICghc291cmNlU2Vjb25kcykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5hdGlvblNlY29uZHM7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IGRlc3RpbmF0aW9uU2Vjb25kczsKICAgICAgICAgICAgIGlmICghZGVzdGluYXRp
b25TZWNvbmRzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIEF0dHJp
YnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgeyBXVEZNb3ZlKCpzb3VyY2VTZWNvbmRzKSwgV1RG
TW92ZSgqZGVzdGluYXRpb25TZWNvbmRzKSB9OwogICAgICAgICB9CkBAIC0yMzYsNyArMjM2LDcg
QEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZWFybGllc3RUaW1lVG9TZW5k
KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQg
JiYgIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCAmJiBkZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptaW4oc291cmNl
RWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCk7CkBAIC0y
NDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gbGF0ZXN0
VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGllc3RU
aW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgJiYgZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gQXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRpb247CiAKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
ICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTI4NSwxMiArMjg1LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdhbGxUaW1lPj4gc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQ7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdhbGxUaW1l
Pj4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAg
IHJldHVybiBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIHsgV1RGTW92ZSgqc291cmNlRWFybGll
c3RUaW1lVG9TZW5kKSwgV1RGTW92ZSgqZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpIH07
CiAgICAgICAgIH0KQEAgLTQxMyw0NyArNDEzLDQ3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVjb2RlKERlY29kZXImIGRlY29k
CiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHNvdXJjZUlEOwogICAgIGRlY29kZXIgPj4gc291cmNl
SUQ7CiAgICAgaWYgKCFzb3VyY2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxSZWdpc3RyYWJs
ZURvbWFpbj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAgZGVjb2RlciA+PiBzb3VyY2VS
ZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIXNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZXN0aW5hdGlvblJlZ2lzdHJh
YmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbjsK
ICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNjcmlwdGlvbjsKICAgICBkZWNvZGVyID4+IHNvdXJjZURl
c2NyaXB0aW9uOwogICAgIGlmICghc291cmNlRGVzY3JpcHRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAgICAgZGVjb2RlciA+PiBwdXJjaGFzZXI7CiAgICAg
aWYgKCFwdXJjaGFzZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVPZkFk
Q2xpY2s7CiAgICAgZGVjb2RlciA+PiB0aW1lT2ZBZENsaWNrOwogICAgIGlmICghdGltZU9mQWRD
bGljaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPj4g
ZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgZGVjb2RlciA+PiBlcGhlbWVyYWxTb3VyY2VOb25j
ZTsKICAgICBpZiAoIWVwaGVtZXJhbFNvdXJjZU5vbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAg
ICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxBdHRyaWJ1dGlvblRpbWVUb1Nl
bmREYXRhPiB0aW1lc1RvU2VuZDsKICAgICBkZWNvZGVyID4+IHRpbWVzVG9TZW5kOwogICAgIGlm
ICghdGltZXNUb1NlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0
cmlidXRpb24gewogICAgICAgICBTb3VyY2VJRCB7IFdURk1vdmUoKnNvdXJjZUlEKSB9LApAQCAt
NDgyLDcgKzQ4Miw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVy
YWxTb3VyY2VOb25jZT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6CiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBub25jZTsKICAgICBkZWNvZGVyID4+IG5vbmNlOwogICAgIGlmICghbm9uY2UpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgV1RGTW92ZSgqbm9uY2UpIH07
CiB9CkBAIC00OTksMTcgKzQ5OSwxNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICBpZiAoIWRh
dGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8UHJpb3JpdHlWYWx1ZT4gcHJpb3JpdHk7CiAgICAg
ZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9w
dGlvbmFsPFdhc1NlbnQ+IHdhc1NlbnQ7CiAgICAgZGVjb2RlciA+PiB3YXNTZW50OwogICAgIGlm
ICghd2FzU2VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7
IFdURk1vdmUoKmRhdGEpLCBQcmlvcml0eSB7ICpwcmlvcml0eSB9LCAqd2FzU2VudCB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0LmNwcAppbmRleCBhZjQyMmYyMWZiZTMyMDQ1YzJhODYxNGRlNzRlNjM5YjdkZjhhNjAzLi5k
ODdiZDQ2MThmMDViMzU2OGNkY2Y1N2EzZTM1NDUwZGQzYTU3MGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApAQCAt
NDYsMjAgKzQ2LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsCiAgICAgaWYgKHNraXBFeGFj
dGx5SWdub3JpbmdBU0NJSUNhc2UoYnVmZmVyLCAic2hhNTEyIikpCiAgICAgICAgIHJldHVybiBS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6U0hBNTEyOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bv
c2l0aW9uKGJ1ZmZlcik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXNraXBF
eGFjdGx5KGJ1ZmZlciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNoVmFsdWUgPSBidWZm
ZXIucG9zaXRpb24oKTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3Rl
cj4oYnVmZmVyKTsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEKICAg
ICBza2lwRXhhY3RseShidWZmZXIsICc9Jyk7CiAKICAgICBpZiAoYnVmZmVyLnBvc2l0aW9uKCkg
PT0gYmVnaW5IYXNoVmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmdWaWV3IGhhc2hWYWx1ZShiZWdpbkhh
c2hWYWx1ZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbkhhc2hWYWx1ZSk7CiAKQEAgLTc3LDcg
Kzc3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFs
PFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEKICAgICBpZiAoYXV0byBkaWdlc3QgPSBi
YXNlNjRVUkxEZWNvZGUoaGFzaFZhbHVlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdCB7ICphbGdvcml0aG0sIFdURk1vdmUoKmRpZ2VzdCkgfTsKIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9u
YWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3Qo
U3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKQEAgLTkzLDE0ICs5MywxNCBAQCBP
cHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdChTdHJpbmdQYXJzaW5nQnVmZgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
c3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNl
RW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKGJ1ZmZl
cik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZl
ciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNoVmFsdWUgPSBidWZmZXIucG9zaXRpb24o
KTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3Rlcj4oYnVmZmVyKTsK
QEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHNraXBFeGFj
dGx5KGJ1ZmZlciwgJz0nKTsKIAogICAgIGlmIChidWZmZXIucG9zaXRpb24oKSA9PSBiZWdpbkhh
c2hWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsgKmFsZ29yaXRobSwgU3RyaW5nKGJlZ2luSGFzaFZhbHVlLCBidWZmZXIucG9zaXRpb24o
KSAtIGJlZ2luSGFzaFZhbHVlKSB9OwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIE9wdGlvbmFsPFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdChjCiAgICAgaWYgKGF1dG8gZGlnZXN0ID0gYmFzZTY0VVJMRGVjb2RlKGVuY29k
ZWREaWdlc3QuZGlnZXN0KSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCB7IGVuY29kZWREaWdlc3QuYWxnb3JpdGhtLCBXVEZNb3ZlKCpkaWdlc3QpIH07CiAKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0
YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGht
KFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAppbmRleCAyYzU3NmY2NGNkNDRj
NzllNGFkYTkzNmFhZDQ5M2Q2YzhmYTg2Y2Q3Li5lNDg1MmYyOTNhMGZmNTlkOTE3NDUxZWRkNTBi
ZmJlYjA0MTIyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8u
Y3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgT3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlwZT4+
IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4geyBSZXNv
dXJjZVR5cGU6OlBvcHVwIH07CiAgICAgaWYgKG5hbWUgPT0gInBpbmciKQogICAgICAgICByZXR1
cm4geyBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlwZT4+
IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3IG5hbWUpCkBAIC0xMjIsNyArMTIyLDcgQEAgT3B0aW9u
YWw8T3B0aW9uU2V0PExvYWRUeXBlPj4gcmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFtZSkKICAg
ICAgICAgcmV0dXJuIHsgTG9hZFR5cGU6OkZpcnN0UGFydHkgfTsKICAgICBpZiAobmFtZSA9PSAi
dGhpcmQtcGFydHkiKQogICAgICAgICByZXR1cm4geyBMb2FkVHlwZTo6VGhpcmRQYXJ0eSB9Owot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0Pj4gcmVhZExvYWRDb250ZXh0KFN0cmluZ1Zp
ZXcgbmFtZSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBPcHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRl
eHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4geyBM
b2FkQ29udGV4dDo6VG9wRnJhbWUgfTsKICAgICBpZiAobmFtZSA9PSAiY2hpbGQtZnJhbWUiKQog
ICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6Q2hpbGRGcmFtZSB9OwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBSZXNvdXJj
ZUxvYWRJbmZvOjppc1RoaXJkUGFydHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggNzU4NTgzZGFhNWQ2MjJhMTljODllNGM3ZDZlMTc4ODBlOGU3
NzExMi4uMWU4Njg4OWE3NTgwMGE0MjJlMmE0MGZkMGRmNzIzZDBhZTMyZDg4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NCw4ICs2NCw4IEBACiAjZW5k
aWYKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSNkZWZpbmUgUEFHRV9JRCAoKGZy
YW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFn
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8g
ZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVu
dGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJhbWUo
KS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFt
ZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRv
VUludDY0KCkpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbcGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxvYWRlcj0lcCwgcmVz
b3VyY2VJRD0lbHVdIFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVf
SUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlSW50ZWdyaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVn
cml0eS5jcHAKaW5kZXggZTIwMmIwM2IzMmRkZWYxNjY0Yzc2MGViMzFhYzJkNWZmODg5MTAwOS4u
NjI5NWFlYTVlMzBjOTkyNmQ2ZGRlYzk5MjYwMTRlNmQ3NGE5MGM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3IoKShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+JiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBJbml0aWFsaXplIGhhc2hlcyB0
byBiZSBzb21ldGhpbmcgb3RoZXIgV1RGOjpudWxsb3B0LCB0byBpbmRpY2F0ZQorICAgICAgICAv
LyBJbml0aWFsaXplIGhhc2hlcyB0byBiZSBzb21ldGhpbmcgb3RoZXIgc3RkOjpudWxsb3B0LCB0
byBpbmRpY2F0ZQogICAgICAgICAvLyB0aGF0IGF0IGxlYXN0IG9uZSB0b2tlbiB3YXMgc2Vlbiwg
YW5kIHRodXMgc2V0dGluZyB0aGUgZW1wdHkgZmxhZwogICAgICAgICAvLyBmcm9tIHNlY3Rpb24g
My4zLjMgUGFyc2UgbWV0YWRhdGEsIHRvIGZhbHNlLgogICAgICAgICBpZiAoIW1fZGlnZXN0cykK
QEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNwbGl0T25TcGFjZXMoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIsIEZ1bmMKIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHBhcnNlSW50ZWdy
aXR5TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkKIHsKICAgICBpZiAo
aW50ZWdyaXR5TWV0YWRhdGEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiByZXN1bHQ7CiAgICAgCkBAIC0xMjAs
NyArMTIwLDcgQEAgc3RhdGljIGJvb2wgaXNSZXNwb25zZUVsaWdpYmxlKGNvbnN0IENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSkKIHN0YXRpYyBPcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0OjpBbGdvcml0aG0+IHByaW9yaXRpemVkSGFzaEZ1bmN0aW9uKEVuY29kZWRS
ZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhLCBFbmNvZGVkUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYikKIHsKICAgICBpZiAoYSA9PSBiKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiAoYSA+IGIpID8gYSA6IGI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYwZGQ4NWJlZDU1NzBkYjQ5Zjg2MzlkYzUwY2Fj
OTg3NDZjZjdmYjkuLmYwNWU1YzY4NTBiOGI4NTI5NGY0ZjkzZTRkMWI1YTE0ZWEzMWViYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjksOCAr
NjksOCBAQAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAogI3VuZGVmIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQKLSNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgp
LT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSku
dG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJ
RCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+cGFnZUlEKCkudmFs
dWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQor
I2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFtZUlEKCkudmFsdWVfb3Io
RnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjaWYg
UkVMRUFTRV9MT0dfRElTQUJMRUQKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQs
IC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQpAQCAtNDc5LDcgKzQ3OSw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICBtX2xvYWRpbmdNdWx0aXBh
cnRDb250ZW50ID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQ
YXJ0cyBpbiBhIENhY2hlZFJlc291cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAotICAgICAgICAg
ICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9y
ZXF1ZXN0Q291bnRUcmFja2VyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCFtX3Jl
c291cmNlLT5pc0ltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5n
IGFib3V0IGEgbXVsdGktcGFydCBub24taW1hZ2UiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwo
KTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlEb25l
KExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gc3RkOjpudWxsb3B0OwogICAgIGJv
b2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucyA9IHRydWU7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAobV9zdGF0ZSA9PSBDYW5jZWxsZWRXaGlsZUluaXRpYWxpemluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggMDA3ZTRhYWUyNmM3YmYyMzA2
ZWMzNzNlY2IwMzI3NWFjZDM0ZjYwNy4uNzBkMTUxN2JiYmYyOGZjYmY1ZmZkYWY5MDY3YWJhYWU3
YzkxODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkwLDEwICs5
MCwxMCBAQCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaQogICAgICAgICAvLyBFeGFtcGxlOiAiQ0FD
SEUgTUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0dXJlLgogICAgICAgICAvLyBF
eGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1Q7VjIiIGlzIG5vdC4KICAgICAgICAgaWYgKCFza2lwQ2hh
cmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBjYWNoZU1hbmlmZXN0SWRlbnRpZmllcjxDaGFyYWN0ZXJU
eXBlPikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJz
UmVtYWluaW5nKCkgJiYgIWlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKCpidWZmZXIpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgLy8gU2tpcCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAg
ICAgICBza2lwVW50aWw8aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCA4YjI3MTFmYmQ1YzhhNWUyZTc4ZWZkNDQzZTg1MjE5NjQ4N2M1YmRlLi41ZTY4
MTFlMWJhYTM3NTUwNGNhOGNlNzIzZGQ1Y2U5MjcwYTYxZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAg
ICAgIHNpemUgPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9y
eSwgcGF0aCk7Ci0gICAgICAgICAgICBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocGF0aCku
dmFsdWVPcigwKTsKKyAgICAgICAgICAgIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRo
KS52YWx1ZV9vcigwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgU3RyaW5nIG1pbWVU
eXBlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMyk7CkBAIC0xMzA5LDExICsxMzA5LDEx
IEBAIE9wdGlvbmFsPFZlY3RvcjxVUkw+PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZl
c3RVUkxzKCkKIAogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNl
LmlzT3BlbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3RVUkxzID0gbV9kYXRhYmFzZS5wcmVwYXJl
U3RhdGVtZW50KCJTRUxFQ1QgbWFuaWZlc3RVUkwgRlJPTSBDYWNoZUdyb3VwcyJfcyk7CiAgICAg
aWYgKCFzZWxlY3RVUkxzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFVSTD4gdXJsczsKICAgICB3aGlsZSAo
c2VsZWN0VVJMcy0+c3RlcCgpID09IFNRTElURV9ST1cpCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBs
b25nIGxvbmcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQogICAg
IFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAg
ICAgd2hpbGUgKHNlbGVjdFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAgICBh
dXRvIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRG
aWxlRGlyZWN0b3J5LCBzZWxlY3RQYXRocy0+Y29sdW1uVGV4dCgwKSk7Ci0gICAgICAgIHRvdGFs
U2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmdWxsUGF0aCkudmFsdWVPcigwKTsKKyAgICAg
ICAgdG90YWxTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZ1bGxQYXRoKS52YWx1ZV9vcigw
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcApp
bmRleCA1MWQ4ZDBhODZjNGFhYWMzZGFkMWFjNjkzZWQxNDVjODA1ZmE4MDcxLi4yYjY1YWMwZjM2
MzI1OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIFN0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGluZygp
IGNvbnN0CiBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1l
bnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fdGV4dCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpw
YXJzZSgqZG9jdW1lbnQsICptX3RleHQsIG1hbmlmZXN0VVJMLCBkb2N1bWVudFVSTCk7CiAgICAg
cmV0dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKCptX3RleHQsIG1hbmlmZXN0
VVJMLCBkb2N1bWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCAwMTk3ZWQ4MzVkMTkwMzgzMTBiZDIxODIzMzhmNWRh
ZmFhNzI5OGVhLi43OGQ4NGJmYWJjZGVlNjJiMWU2ZmZiZTdhN2NiZjMyMzE4NTQzMzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJh
d1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygKIHsKICAgICBzaXplX3Qg
cHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwgZGF0
YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YS0+Z2V0
U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIApAQCAtODUsNyArODUsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQogICAg
ICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogCiAgICAgaWYgKG1fZGVs
YXllZEZpbmlzaExvYWRpbmcpIHsKLSAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9
IHN0ZDo6ZXhjaGFuZ2UobV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWxheWVk
RmluaXNoTG9hZGluZywgc3RkOjpudWxsb3B0KTsKICAgICAgICAgZmluaXNoTG9hZGluZyhkZWxh
eWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0KIH0KQEAgLTEwMiw3
ICsxMDIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1
ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChtX2luSW5jcmVtZW50
YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91c2x5
IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bpbm5p
bmcgYSBydW5sb29wLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UgZGVsYXkgdGhlIGNhbGwuCi0g
ICAgICAgIG1fZGVsYXllZEZpbmlzaExvYWRpbmcgPSBtYWtlT3B0aW9uYWwoRGVsYXllZEZpbmlz
aExvYWRpbmcgeyBkYXRhIH0pOworICAgICAgICBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nID0gc3Rk
OjptYWtlX29wdGlvbmFsKERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsgZGF0YSB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH07CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzMzM3NTg2MjJmNjI5N2ZiMjIzODc2ZTQ5ODBjNDAy
YWZkMDM3ZjhjLi4yZGE5N2YxNDI5NTQxZjNiNTY5MDFmNzhmYzhkN2I4MTQxM2JiN2M3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTY1
LDggKzY1LDggQEAKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKICN1bmRlZiBSRUxF
QVNFX0xPR19BTFdBWVMKLSNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZh
bHVlT3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQoZnJh
bWUpIChmcmFtZS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQo
KSkKKyNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUu
ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRS
ZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0g
Q2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxF
QVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xP
R19JRihjYWNoZWRSZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0
d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2Fj
aGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVfSUQoZnJhbWUp
LCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19BTFdBWVMoZm10LCAuLi4pIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNf
X1ZBX0FSR1NfXykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJjYzBmNGUzN2ZkYTUzZDIyYzllYTAyY2NmMjgxNTZi
YTg0YjgyYzkuLjg1NmU1ZTVkNGRiMTQ2MDkyYjFiNzRlMzRjYjMwZmQ3ZDA3OTBhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcApAQCAtOTUsOCArOTUsOCBAQAogI2VuZGlmCiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VECi0jZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1ZU9yKFBh
Z2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJh
bWUuZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVm
aW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmll
cigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRChmcmFtZSkgKGZyYW1lLmZyYW1lSUQo
KS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwg
dGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9XSVRI
X0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFt
ZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCmluZGV4IDNlNWRhM2Qw
OWM3NzcyMjdiYjgyMDQ3ZDJjNzVlOWYxZjAwZGRmNjMuLmYzMDAwMTJmMDVjOWVhOWM5NzVjMDYw
M2Q3MWRmOGEzM2Q1MjMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBpc1JlcXVl
c3RDcm9zc09yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgUmVzb3VyY2UKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHsKIHB1YmxpYzoKLSAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IFdURjo6bnVs
bG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIE9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6bnVsbG9wdCwgU3RyaW5nJiYgY2hh
cnNldCA9IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYmIHJlbGVhc2VSZXNvdXJj
ZVJlcXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3VyY2VSZXF1ZXN0KTsgfQogICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVJlcXVlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApp
bmRleCA0YWY0MDFkNmFkMmQxNjFmNzUyZTQyODIwNTNlMDA2YzViOWQxZTA5Li42MDdlNjJlYzA4
NjgyNzMyZjUyYmJmYjRjNzU0OWRkMzdiNjFmZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYK
ICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSktPmNvbFNw
YW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6
dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHNldFRh
YkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlIGlmIChhdXRvIG9w
dGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNl
dFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVlKCkpOwogICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCA1ZGMxOTUwYTA1ZGM2
M2E2ZDgyYjhiZDI5YmViMGI1YzhlY2Y5ZmY4Li5lN2U4NWNhNmNlMTE5YTViMWY3NDczNDgyZGQw
MTMzMDU4N2FiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJldGNoZWQgPSAxOAogICAgIH07CiAKLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgpIHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+
IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IGJiNGFkZDRjYmU5MjU2
MWQ4OWJkMGFiMTUyM2ZlNGM3Yzk1MTlkY2IuLjNjNDM5MzkwMGNmZTc2OTc3MDk3ZGE5MGZjYTE2
N2NjNGIwMmE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlv
bkVsZW1lbnQuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6
OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6ZGVub21pbmF0b3JBbGln
bgogdm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IGxpbmV0aGlja25lc3NBdHRyKQotICAgICAgICBtX2xpbmVUaGlja25lc3MgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNl
IGlmIChuYW1lID09IG51bWFsaWduQXR0cikKLSAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50ID0gc3RkOjpudWxs
b3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0dHIpCi0gICAgICAgIG1fZGVu
b21pbmF0b3JBbGlnbm1lbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGVub21pbmF0b3JB
bGlnbm1lbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhF
bGVtZW50LmNwcAppbmRleCBjMzE4MTRmNzc2ODM0NTQ0MDhiNGUzNjBmOTBhYWM0YjdmMmJkNWVk
Li4wZTVkMDIwZjI2NDdhMjAxNmEyMjc3MGZkMjNlOWRkMWI0NjNhNjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9p
ZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmkKIHsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRlID0g
bmFtZSA9PSBtYXRodmFyaWFudEF0dHI7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQot
ICAgICAgICBtX21hdGhWYXJpYW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX21hdGhWYXJp
YW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgobWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJl
bmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJl
bmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVu
Y2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVs
ZW1lbnQuY3BwCmluZGV4IGNjODQ5ZmU4ZWJmMmVmNTJiM2QxYzQ2ZmM1Nzc5MGQzMmM3ZjE5YWMu
LmMyZmQ1ZDU0ZGI1Zjc1YTcyNzIwYzQ2MDBlZGYxZTNmNzMyY2UxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCkBAIC0xMzUsNyArMTM1
LDcgQEAgYm9vbCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6Omhhc05vdGF0aW9uKE1lbmNsb3NlTm90
YXRpb25GbGFnIG5vdGF0aW9uRmxhZykKIHZvaWQgTWF0aE1MTWVuY2xvc2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlvbkF0dHIpCi0gICAgICAgIG1fbm90YXRp
b25GbGFncyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ub3RhdGlvbkZsYWdzID0gc3RkOjpu
dWxsb3B0OwogCiAgICAgTWF0aE1MUm93RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmNwcAppbmRleCAyZDJiYzJiZTYwMTUwZTBjYTkwYjgzYzI5YTNlOTg4ODM5MDlkOGI1
Li5lYzUwNTIwOTY0MzFhYWI4NjBiZDFkYTVjZTc0MzU5MjRjNmZiNGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcApAQCAtMTEy
OSwxNCArMTEyOSwxNCBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBob3Jpem9udGFsT3BlcmF0b3Jz
W10gPSB7CiBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFy
Y2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7CiAg
ICAgaWYgKCFjaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBXZSB0cnkgYW5kIGZpbmQgdGhlIGRlZmF1
bHQgdmFsdWVzIGZyb20gdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnkuCiAgICAgaWYgKGF1dG8qIGVu
dHJ5ID0gdHJ5QmluYXJ5U2VhcmNoPGNvbnN0IEVudHJ5LCBLZXk+KGRpY3Rpb25hcnksIGRpY3Rp
b25hcnlTaXplLCBLZXkoY2hhcmFjdGVyLCBmb3JtKSwgRXh0cmFjdEtleSkpCiAgICAgICAgIHJl
dHVybiBFeHRyYWN0UHJvcGVydHkoKmVudHJ5KTsKIAogICAgIGlmIChleHBsaWNpdEZvcm0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBJZiB3ZSBkaWQgbm90IGZpbmQgdGhlIGRlc2lyZWQgb3BlcmF0b3IgZm9ybSBh
bmQgaWYgaXQgd2FzIG5vdCBzZXQgZXhwbGljaXRseSwgd2UgdXNlIHRoZSBmaXJzdCBvbmUgaW4g
dGhlIGZvbGxvd2luZyBvcmRlcjogSW5maXgsIFByZWZpeCwgUG9zdGZpeC4KICAgICAvLyBUaGlz
IGlzIHRvIGhhbmRsZSBiYWQgTWF0aE1MIG1hcmt1cCB3aXRob3V0IGV4cGxpY2l0IDxtcm93PiBk
ZWxpbWl0ZXJzIGxpa2UgIjxtbz4oPC9tbz48bWk+YTwvbWk+PG1vPik8L21vPjxtbz4oPC9tbz48
bWk+YjwvbWk+PG1vPik8L21vPiIgd2hlcmUgaW5uZXJmZW5jZXMgc2hvdWxkIG5vdCBiZSBjb25z
aWRlcmVkIGluZml4LgpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgT3B0aW9uYWw8UHJvcGVydHk+IE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVyLCBGb3JtIGZv
cm0KICAgICAgICAgcmV0dXJuIEV4dHJhY3RQcm9wZXJ0eSgqZW50cnkpOwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9v
bCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmlzVmVydGljYWwoVUNoYXIzMiB0ZXh0Q29udGVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAK
aW5kZXggMWEyMTNmNGViMmYyN2IxOGZiMjU2OTMzYzM0MzNlN2VjMDcxNmEyNi4uMzRiYjgxYWQ3
ZGUzMWIzZWVjNjM5MTJiMDg0NGFkM2U0NTMyMjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKQEAgLTIwMyw4ICsyMDMsOCBAQCBjb25z
dCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9yRWxlbWVudDo6bWF4U2l6ZSgp
CiAKIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX29wZXJhdG9yQ2hhciA9IFdURjo6bnVsbG9wdDsK
LSAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX29wZXJhdG9y
Q2hhciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyA9IE1hdGhNTE9wZXJhdG9yRGljdGlv
bmFyeTo6YWxsRmxhZ3M7CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y2hhbmdlKTsKIH0KQEAgLTIyNSwyNCArMjI1LDI0IEBAIHN0YXRpYyBPcHRpb25hbDxNYXRoTUxP
cGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhjb25z
CiAgICAgICAgIHJldHVybiBTdHJldGNoeTsKICAgICBpZiAobmFtZSA9PSBzeW1tZXRyaWNBdHRy
KQogICAgICAgICByZXR1cm4gU3ltbWV0cmljOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGZvcm1BdHRyKSB7Ci0gICAgICAgIG1fZGlj
dGlvbmFyeVByb3BlcnR5ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2RpY3Rpb25hcnlQcm9w
ZXJ0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3MgPSBN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmFsbEZsYWdzOwogICAgIH0gZWxzZSBpZiAoYXV0byBm
bGFnID0gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKG5hbWUpKQogICAgICAgICBtX3Byb3Bl
cnRpZXMuZGlydHlGbGFncyB8PSBmbGFnLnZhbHVlKCk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBs
c3BhY2VBdHRyKQotICAgICAgICBtX2xlYWRpbmdTcGFjZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV9sZWFkaW5nU3BhY2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBy
c3BhY2VBdHRyKQotICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fdHJhaWxpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09
IG1pbnNpemVBdHRyKQotICAgICAgICBtX21pblNpemUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fbWluU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG1heHNpemVB
dHRyKQotICAgICAgICBtX21heFNpemUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbWF4U2l6
ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgobmFtZSA9PSBzdHJldGNoeUF0dHIgfHwgbmFt
ZSA9PSBsc3BhY2VBdHRyIHx8IG5hbWUgPT0gcnNwYWNlQXR0ciB8fCBuYW1lID09IG1vdmFibGVs
aW1pdHNBdHRyKSAmJiByZW5kZXJlcigpKSB7CiAgICAgICAgIGRvd25jYXN0PFJlbmRlck1hdGhN
TE9wZXJhdG9yPigqcmVuZGVyZXIoKSkudXBkYXRlRnJvbUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAppbmRleCBjN2Q4ZDY2OWJmYzYw
YzNlMTkzZjU0YmMwODlkNmI3NjM4MjJhYTg3Li5iYjU2Zjc5NDZlOGYxNWU5MmIyOGY0NjFlNGIy
ZTdmY2U5Yzc2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3Bl
cmF0b3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9y
RWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRpYyBP
cGVyYXRvckNoYXIgcGFyc2VPcGVyYXRvckNoYXIoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3Qg
T3BlcmF0b3JDaGFyJiBvcGVyYXRvckNoYXIoKTsKLSAgICB2b2lkIHNldE9wZXJhdG9yRm9ybURp
cnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQg
c2V0T3BlcmF0b3JGb3JtRGlydHkoKSB7IG1fZGljdGlvbmFyeVByb3BlcnR5ID0gc3RkOjpudWxs
b3B0OyB9CiAgICAgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0oKSB7IHJldHVy
biBkaWN0aW9uYXJ5UHJvcGVydHkoKS5mb3JtOyB9CiAgICAgYm9vbCBoYXNQcm9wZXJ0eShNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpOwogICAgIExlbmd0aCBkZWZhdWx0TGVhZGluZ1Nw
YWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAK
aW5kZXggZjc1OTQ1OWI5MjUzNDk1Y2M5NzU2YjEyYWI3ZWI5ZDc0YjM0YmZlZC4uOTRmMmMzZTIy
MTFjZjA2OTcwOGJlMDgxYWIzMjg5ZmYyZmIyOWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcApAQCAtNzYsMTUgKzc2LDE1IEBAIGNvbnN0IE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUGFkZGVkRWxlbWVudDo6dm9mZnNldCgpCiB2b2lk
IE1hdGhNTFBhZGRlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHdpZHRo
QXR0cikKLSAgICAgICAgbV93aWR0aCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aWR0aCA9
IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAgICAg
IG1faGVpZ2h0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2hlaWdodCA9IHN0ZDo6bnVsbG9w
dDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAgICAgICAgbV9kZXB0aCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlm
IChuYW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNwYWNlID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX2xzcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IHZv
ZmZzZXRBdHRyKQotICAgICAgICBtX3ZvZmZzZXQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
dm9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCAyNmY0NWI0ZTk3YjkyMTNjYzA2ZWIzOTc2
NmNkYzcyZjA4OWU2ZTQzLi5hMjY5ZGM5YTA3NjUwZTljZTk1ZmEyMzRkM2U4YmFkMWFhZmI3M2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQuY3BwCkBAIC0zNjQsMTcgKzM2NCwxNyBAQCBNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFu
dCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRlKAog
T3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRoVmFy
aWFudEF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9tYXRoVmFyaWFudCkKICAgICAgICAgbV9t
YXRoVmFyaWFudCA9IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICByZXR1cm4gbV9tYXRoVmFyaWFu
dC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpOb25lID8gV1RGOjpudWxsb3B0IDogbV9tYXRoVmFy
aWFudDsKKyAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpO
b25lID8gc3RkOjpudWxsb3B0IDogbV9tYXRoVmFyaWFudDsKIH0KIAogdm9pZCBNYXRoTUxQcmVz
ZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmli
dXRlID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHIgJiYgYWNjZXB0c01hdGhWYXJpYW50QXR0cmli
dXRlKCk7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJp
YW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX21hdGhWYXJpYW50ID0gc3RkOjpudWxsb3B0
OwogICAgIGlmICgobWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAgICAg
IE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaAppbmRl
eCBlNzVhNjM0MTFjMTBhZjFjNzgzZDJjNDMxNzVjMDUyZDc3NDBlMDUyLi5lMjQ2NWYxZGZjOWYw
NzkxOGEyZmJlNmQ2M2ZhMTM0Nzc4YjJjM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBib29sIGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmKTsKIAotICAgIHN0YXRpYyBP
cHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChjb25zdCBCb29sZWFuVmFsdWUmIHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQgPyBXVEY6Om51bGxvcHQgOiBP
cHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgc3RhdGlj
IE9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUp
IHsgcmV0dXJuIHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IHN0ZDo6bnVsbG9wdCA6
IE9wdGlvbmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KICAgICBjb25z
dCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHN0YXRpYyBMZW5ndGggcGFyc2VN
YXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNjcmlwdHNFbGVtZW50LmNwcAppbmRleCAzMmZhNGJiZjViZDQzYjYxNWFmZDlkNmZlYmVk
Nzc0MjZmZTdmM2E1Li4wNjRlYTA4OWY5Y2E2Zjc3ZjFhODYxMjIzMGY5YWJhMmQzOGFiMzEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAKQEAg
LTgwLDkgKzgwLDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTY3JpcHRz
RWxlbWVudDo6c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lkIE1hdGhNTFNjcmlwdHNFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzdWJzY3JpcHRzaGlmdEF0dHIpCi0gICAgICAg
IG1fc3Vic2NyaXB0U2hpZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3Vic2NyaXB0U2hp
ZnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBzdXBlcnNjcmlwdHNoaWZ0
QXR0cikKLSAgICAgICAgbV9zdXBlcnNjcmlwdFNoaWZ0ID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX3N1cGVyc2NyaXB0U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCmluZGV4IGNjZDc4ODYxNWUzMzhlZGI3NWFlNGMzNGIx
OGZhMTA1Yzg0NWE4NjguLmQ1NmUzYTA0MGQ1OTc3NDlkYjJjYmQwM2M2NjM5MzBkZjY0M2QxOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCkBAIC02
NiwxMSArNjYsMTEgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFjZUVs
ZW1lbnQ6OmRlcHRoKCkKIHZvaWQgTWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGggPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBo
ZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9o
ZWlnaHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0aEF0dHIpCi0g
ICAgICAgIG1fZGVwdGggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VG9rZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1l
bnQuY3BwCmluZGV4IGRiOGQwMzczNTI4NmMzOGFlNzE0NmI5MTY5MzBhZWVjMTBhYjUyZmQuLjdi
ZGFmNjEwNGU4ODg5M2FlYzkzN2ZmNTJmMWE3MzNjODM4NzVmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBAIC04NiwxMCArODYsMTAgQEAgT3B0
aW9uYWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2RlUG9p
bnQoU3RyaW5nVmlldyBzdHJpbmcKICAgICBhdXRvIGNvZGVQb2ludHMgPSBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUVFBTcGFjZXMoc3RyaW5nKS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0byBpdGVy
YXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gY29kZVBvaW50
cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVQ2hhcjMyPiBjaGFyYWN0ZXIgPSAqaXRlcmF0b3I7
CiAgICAgKytpdGVyYXRvcjsKLSAgICByZXR1cm4gaXRlcmF0b3IgPT0gY29kZVBvaW50cy5lbmQo
KSA/IGNoYXJhY3RlciA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gY29k
ZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCmluZGV4IDUz
OWZiZDg1Y2Y4NmFhZjcyM2VlZWZiMDczYzdmZTBkOWEwZmUyNzguLjA0ZmIwMTI3OTNkZjFmZWNi
YzY0NmIzZjIyN2M4ODhiOWJjMGFmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgY29uc3QgTWF0aE1M
RWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRVbmRl
cigpCiB2b2lkIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IGFjY2VudEF0dHIpCi0gICAgICAgIG1fYWNjZW50ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2FjY2VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGFjY2Vu
dHVuZGVyQXR0cikKLSAgICAgICAgbV9hY2NlbnRVbmRlciA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV9hY2NlbnRVbmRlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5o
CmluZGV4IGI2ZDkxYTgzMzE3ZTIyMmM5YzJiMTdiMTY4YzMwNjg4OWQ0NjZiMTMuLjZlYjc1NmVh
ZmU4NDE3ZTljNzEzMWRjYTg3ZGUzN2I4Y2I5YzVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBy
dW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+
PiYmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhXVEY6Om51bGxvcHQpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4mJik+
JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsgfQogICAgIAogICAgIC8vIEFz
eW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVuYW1l
cy4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIEZpbGVJY29uTG9hZGVyJikgPSAwOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBJ
bnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVE
aWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUpIHsgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0
dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJv
b2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4u
aAppbmRleCAxOWUyN2EwMjJhNTcxOGFlZDQyOGYzZGFiMGE0NmI5ZjBmYzUyZmQ0Li5lODQ5YWJk
NTBmMDVlMjkwMDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50
T3JpZ2luLmgKQEAgLTgxLDEwICs4MSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxp
bmUgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZAogICAg
IE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gY2xpZW50T3JpZ2luOwogICAgIGRlY29kZXIg
Pj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luIHx8IHRvcE9yaWdpbi0+aXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOwogICAgIGlmICghY2xpZW50T3JpZ2lu
IHx8IGNsaWVudE9yaWdpbi0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIENsaWVudE9yaWdp
biB7IFdURk1vdmUoKnRvcE9yaWdpbiksIFdURk1vdmUoKmNsaWVudE9yaWdpbikgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAwZGY3ZDliNjEwNzc3YzY0ZGRhNzVh
YTAyNjJmNzQ5MmJhMDBhOTIxLi43NDIxNDkzZTQyZGEzODdlM2EyNTQzNWQ0MWYzNzRjYzM1ZmQz
YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC02OCwxMiArNjgsMTIg
QEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IERPTVNlbGVjdGlvbjo6cmFuZ2UoKSBjb25zdAogewog
ICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
YXV0byByYW5nZSA9IGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJsZWQo
KQogICAgICAgICA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yYW5nZSgpCiAgICAg
ICAgIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKICAgICBp
ZiAoIXJhbmdlIHx8IHJhbmdlLT5zdGFydC5jb250YWluZXItPmlzSW5TaGFkb3dUcmVlKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IDc1
ZDVmMmVjN2U0MDI0MmJlNzliMjkwNjllNmM4MWNkZGJlZmJkODcuLjc2ZDJmZTdkOWIwNmU4OWFj
M2Y1NTZjMTJkOGFiNDQ5MDViYjQ5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0z
OTgsNyArMzk4LDcgQEAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gRE9NVGltZXI6OmFsaWduZWRG
aXJlVGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBjb25zdAogewogICAgIFNlY29uZHMgYWxp
Z25tZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRvbVRpbWVyQWxpZ25t
ZW50SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpOwogICAg
IGlmICghYWxpZ25tZW50SW50ZXJ2YWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSByYW5kb21pemVkUHJvcG9ydGlvbiA9IHJhbmRvbU51bWJlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKaW5kZXggZjgyMmE3Y2JiNmQyMmVmNWNjMDIzNTIyYzBkYTQ1YTk5OTkwNjUx
Yi4uZjI2Y2U0M2JmM2VkMDI3YTk0ZjI2N2FhZThiNDIwZmI2MGU5NmE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcApAQCAtNzQ4LDEyICs3NDgsMTIgQEAgdm9pZCBET01XaW5kb3c6OmZy
ZWV6ZU5vd1RpbWVzdGFtcCgpCiAKIHZvaWQgRE9NV2luZG93Ojp1bmZyZWV6ZU5vd1RpbWVzdGFt
cCgpCiB7Ci0gICAgbV9mcm96ZW5Ob3dUaW1lc3RhbXAgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9m
cm96ZW5Ob3dUaW1lc3RhbXAgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJlZHVjZWRSZXNvbHV0aW9u
U2Vjb25kcyBET01XaW5kb3c6OmZyb3plbk5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZnJvemVuTm93VGltZXN0YW1wLnZhbHVlT3Iobm93VGltZXN0YW1wKCkpOworICAgIHJl
dHVybiBtX2Zyb3plbk5vd1RpbWVzdGFtcC52YWx1ZV9vcihub3dUaW1lc3RhbXAoKSk7CiB9CiAK
IExvY2F0aW9uJiBET01XaW5kb3c6OmxvY2F0aW9uKCkKQEAgLTkzOSw3ICs5MzksNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplYwogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciB1c2VyR2Vz
dHVyZUluZGljYXRvcih1c2VyR2VzdHVyZVRvRm9yd2FyZCk7CiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNzYWdl
SWRlbnRpZmllcik7CiAKLSAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3NhZ2Uu
dHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291
cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gbWFrZU9wdGlvbmFsKE1lc3Nh
Z2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2lu
LCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VF
dmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3RkOjpudWxsb3B0
KTsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBwb3N0TWVzc2FnZUlk
ZW50aWZpZXIpOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAgdm9pZCBET01XaW5kb3c6OnNjcm9sbFRv
KGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucywgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcK
IAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGRvY3VtZW50KCktPnNjcm9sbGluZ0VsZW1l
bnQoKT8KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTA1OQotICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xsVG9P
cHRpb25zLmJlaGF2aW9yLnZhbHVlT3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLCBkb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRTY3Jv
bGw6Ok5vOworICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xsVG9P
cHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkpID8gQW5pbWF0ZWRTY3JvbGw6OlllcyA6IEFuaW1hdGVkU2Ny
b2xsOjpObzsKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyA9IFNjcm9sbFBv
c2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljV2l0aE9wdGlvbnMoY2xhbXBp
bmcsIGFuaW1hdGVkLCBzbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QpOwogICAgIHZpZXctPnNldENv
bnRlbnRzU2Nyb2xsUG9zaXRpb24obGF5b3V0UG9zLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlv
bnMpOwogfQpAQCAtMjE0NSw3ICsyMTQ1LDcgQEAgdm9pZCBET01XaW5kb3c6OmZhaWxlZFRvUmVn
aXN0ZXJEZXZpY2VNb3Rpb25FdmVudExpc3RlbmVyKCkKICAgICAgICAgZG9jdW1lbnQoKS0+cG9z
dFRhc2soW10oYXV0byYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3coKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gYWNjZWxlcmF0aW9uID0gRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uOjpj
cmVhdGUoKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoRGV2aWNlTW90
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQsIERldmljZU1v
dGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uY29weVJlZigpLCBhY2NlbGVyYXRpb24uY29w
eVJlZigpLCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZSgpLCBXVEY6Om51
bGxvcHQpLnB0cigpKSk7CisgICAgICAgICAgICAgICAgd2luZG93LT5kaXNwYXRjaEV2ZW50KERl
dmljZU1vdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50LCBE
ZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoYWNjZWxlcmF0aW9uLmNvcHlSZWYoKSwgYWNjZWxlcmF0
aW9uLmNvcHlSZWYoKSwgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlOjpjcmVhdGUoKSwg
c3RkOjpudWxsb3B0KS5wdHIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDBhOTIxNWUxNGY2MmQ3
OTQwMmRlODI0ZGRiZTkwOTA2MzdhZTQ0NGIuLjg4NjAwYTY1ZDk4YzYyYjRkNzI5NTY3YmMzYzk4
YWVlNThiNzhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
NDEsNyArMjQxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24o
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmICghbV9kcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMuaXNFbXB0eSgpICYmIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSAmJiB0
cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhkcmFnRGF0YSkpIHsKICAgICAgICAg
bV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuY2xlYXIoKTsKLSAgICAgICAgbV9kcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlclJhbmdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fZG9jdW1lbnRVbmRl
ck1vdXNlID0gbnVsbHB0cjsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0zMTQsNyArMzE0LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmEKICAg
ICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKCk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5pc0VtcHR5
KCkpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBt
b3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE9wdGlvbmFs
PERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CkBAIC00NjEsNyArNDYxLDcgQEAgRHJhZ0hh
bmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAgICAgICBtX251bWJlck9mSXRlbXNUb0JlQWNj
ZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fbnVtYmVyT2ZJdGVt
c1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5zZXRDYW5SZWNlaXZlRHJvcHBl
ZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92ZXIgYSBmaWxlIGlucHV0IGVsZW1lbnQuIFRoZSBk
cmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQgaW50byB0aGUgdmlldywKQEAgLTUwNyw3ICs1MDcs
NyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9y
TG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgIH0KIAogICAgIGlmIChkb2N1bWVudCAm
JiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3VtZW50PigqZG9jdW1lbnQpICYm
ICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1lbnQtPmhhc0VkaXRhYmxlU3R5
bGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQogCkBAIC03
MDAsNyArNzAwLDcgQEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1bHRPcGVy
YXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPgogICAgIGlmIChzb3VyY2VPcGVy
YXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlv
bjo6TGluaywgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSwg
RHJhZ09wZXJhdGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlvbjo6RGVsZXRlIH0pKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKICAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09w
ZXJhdGlvbjo6TW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAg
IGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkdlbmVyaWMp
KQpAQCAtNzMyLDcgKzczMiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERyYWdPcGVyYXRpCiAgICAgaWYgKCF0
YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQogICAgICAgICBvcGVyYXRpb24gPSBkZWZhdWx0
T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBlbHNlIGlmICghc291
cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNr
LnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KLSAgICAgICAgb3BlcmF0aW9uID0gV1RGOjpudWxs
b3B0OworICAgICAgICBvcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZQogICAgICAg
ICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5vcGVy
YXRpb25NYXNrLnZhbHVlKCkpOwogCkBAIC05NDAsNyArOTQwLDcgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBPcHRpb25TZXQ8RHJhZ1Nv
dXJjZUFjdGkKIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdDb250cm9sbGVyOjpoaXRUZXN0
UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKICAgICBpZiAoIXNvdXJjZS52aWV3KCkgfHwg
IXNvdXJjZS5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8
SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVh
ZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBl
OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gc291
cmNlLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KGxvY2F0aW9uLCBoaXRUeXBl
KTsKQEAgLTk1MCw3ICs5NTAsNyBAQCBPcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJv
bGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLAogICAgICAgICAv
LyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFnIG9y
aWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92ZWQg
b3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0byBz
dGFydCBhIGRyYWcgb24KICAgICAgICAgLy8gc29tZXRoaW5nIHRoYXQncyBub3QgYWN0dWFsbHkg
dW5kZXIgdGhlIGRyYWcgb3JpZ2luLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiB7IGhpdFRlc3RS
ZXN1bHQgfTsKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lz
dGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zCiAK
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycygp
CiB7Ci0gICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBm
b3IgKGF1dG8mIHBsYWNlaG9sZGVyIDogc3RkOjpleGNoYW5nZShtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycywgeyB9KSkgewogICAgICAgICBpZiAocGxhY2Vob2xkZXItPmlzQ29ubmVjdGVkKCkp
CiAgICAgICAgICAgICBwbGFjZWhvbGRlci0+cmVtb3ZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKaW5kZXggOTk0M2Y0YjMzN2RlZmRlMzUwYTA2MzljNGNjZTBhNmNiZDQ3ODNm
OS4uYmI2MTc2ZmU4MzU4ZDdjOWRhOGFkYTdlNGIxYTJjMmQwMjg4NDA3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTQxOCwxNCArMTQxOCwxNCBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYgdmlldywgY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBibwogT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNv
cihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hpZnRLZXkpCiB7CiAgICAgaWYg
KG1fcmVzaXplTGF5ZXIgJiYgbV9yZXNpemVMYXllci0+aW5SZXNpemVNb2RlKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIW1fZnJhbWUucGFnZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCiAg
ICAgaWYgKG1fZnJhbWUubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Qcm9n
cmVzcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJh
bWUpOwpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6
OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2gKIAogICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIGlmICghbm9kZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGF1dG8qIHN0eWxlID0g
cmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0eWxlKCkgOiBudWxscHRyOwpAQCAtMTQ2Miw3ICsxNDYy
LDcgQEAgT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2gKICAgICAgICAgY2FzZSBTZXRDdXJzb3I6CiAg
ICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVDdXJzb3I7CiAgICAgICAgIGNhc2UgRG9Ob3RTZXRD
dXJzb3I6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjMwNSw3ICsyMzA1LDcg
QEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlv
blRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHIKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246
Ok1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsiKQogICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbjo6TGluazsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgY29udmVydERyYWdPcGVyYXRpb25U
b0Ryb3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKQEAg
LTIzNjcsNyArMjM2Nyw3IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50
SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoCiAgICAgZGF0YVRyYW5z
ZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAhZGF0YVRy
YW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiB7IHRy
dWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgfTsKLSAgICByZXR1
cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IGFjY2VwdCwgc3RkOjpu
dWxsb3B0IH07CiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQ
YXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQpAQCAtMjg2OCw3ICsyODY4LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBPcHRpb24KIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgaWYgKHdoZWVs
RXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGhhbmRs
aW5nOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGwKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHdoZWVsRXZlbnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudEhh
bmRsaW5nKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IGJmYmJhZGVhNzJlMTRjOWJjNzYwN2VhZTllM2UwM2Y5NTA5ZjJiZDcuLmJlNzZlMWJkMjc3
NTUxMzFkMDgzMTZmMmQzYmU5OWJjY2E2OGRjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBzaGFk
b3dBZGp1c3RlZFRhYkluZGV4KEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRob3V0IHRhYmluZGV4IGlm
IGl0IGhhcyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50Ojp0YWJJbmRleCByZXR1
cm5zIC0xIG9uIHN1Y2ggYW4gZWxlbWVudC4KICAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQuc2hv
dWxkQmVJZ25vcmVkSW5TZXF1ZW50aWFsRm9jdXNOYXZpZ2F0aW9uKCkgPyAtMSA6IGVsZW1lbnQu
dGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZWxlbWVudC5z
aG91bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmlnYXRpb24oKSA/IC0xIDogZWxlbWVu
dC50YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZV9vcigwKTsKIH0KIAogRm9jdXNDb250cm9s
bGVyOjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGFjdGl2aXR5U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI0ZWFlYjNmMjVj
ODQzOGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLmUwZThjMzUyZDRkZjk5NjQ5OTQzN2NjZjI3
N2RkNTgzNjY3MjlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04NDcsNyArODQ3LDcgQEAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50
JiBmcmFtZVBvaW50KQogCiAgICAgYXV0byBjb250YWluZXJUZXh0ID0gcG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKS5jb250YWluZXJUZXh0KCk7CiAgICAgaWYgKCFjb250YWluZXJUZXh0IHx8ICFj
b250YWluZXJUZXh0LT5yZW5kZXJlcigpIHx8IGNvbnRhaW5lclRleHQtPnJlbmRlcmVyKCktPnN0
eWxlKCkudXNlclNlbGVjdCgpID09IFVzZXJTZWxlY3Q6Ok5vbmUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0
byBwcmV2aW91c0NoYXJhY3RlclJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9uLnByZXZp
b3VzKCksIHBvc2l0aW9uKSkgewogICAgICAgICBpZiAoZWRpdG9yKCkuZmlyc3RSZWN0Rm9yUmFu
Z2UoKnByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UpLmNvbnRhaW5zKGZyYW1lUG9pbnQpKQpAQCAtODU5
LDcgKzg1OSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2ludChj
b25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKICAgICAgICAgICAgIHJldHVybiAqbmV4dENoYXJh
Y3RlclJhbmdlOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9yLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQzYzllZDMyYzc3ZjUwNWIwYzhlYmQzMjUz
ZTZkMDQzNTlkNjYxMzAuLjUzNzU1ZDBiNGQxYWFlODhhNTMzOTcwN2RkZWVhMTZlZGMxYzc3OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzNSw4ICsxMzUsOCBAQAogI2luY2x1
ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFBBR0VfSUQgZnJhbWUoKS5w
YWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkKLSNkZWZpbmUgRlJB
TUVfSUQgZnJhbWUoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKQorI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKQorI2RlZmluZSBGUkFNRV9JRCBmcmFtZSgpLmZyYW1lSUQoKS52
YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRVZJRVdf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
ZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dl
ZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2
NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwg
ZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0TGF5b3V0Vmlld3Bv
cnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdCwgVHJpZ2dlcgogICAgIGlm
IChvbGRSZWN0LmhlaWdodCgpICE9IGxheW91dFZpZXdwb3J0UmVjdCgpLmhlaWdodCgpKQogICAg
ICAgICBsYXlvdXRUcmlnZ2VyaW5nID0gVHJpZ2dlckxheW91dE9yTm90OjpZZXM7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuRnJhbWVWaWV3ICIgPDwgdGhp
cyA8PCAiIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgLSBjaGFuZ2luZyBvdmVycmlk
ZSBsYXlvdXQgdmlld3BvcnQgZnJvbSAiIDw8IG9sZFJlY3QgPDwgIiB0byAiIDw8IG1fbGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWVPcihMYXlvdXRSZWN0KCkpIDw8ICIgbGF5b3V0VHJp
Z2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVz
ID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFt
IDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRl
UmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdwb3J0IGZyb20gIiA8PCBvbGRS
ZWN0IDw8ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0LnZhbHVlX29yKExh
eW91dFJlY3QoKSkgPDwgIiBsYXlvdXRUcmlnZ2VyaW5nICIgPDwgKGxheW91dFRyaWdnZXJpbmcg
PT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMgPyAieWVzIiA6ICJubyIpKTsKIAogICAgIGlmIChv
bGRSZWN0ICE9IGxheW91dFZpZXdwb3J0UmVjdCgpICYmIGxheW91dFRyaWdnZXJpbmcgPT0gVHJp
Z2dlckxheW91dE9yTm90OjpZZXMpCiAgICAgICAgIHNldFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzTmVlZExheW91dCgpOwpAQCAtMzAzNSw5ICszMDM1LDkgQEAgdm9pZCBGcmFtZVZpZXc6OnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHZvaWQg
RnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8Q29s
b3I+JiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkK
LSAgICBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlT3Io
UmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1D
b250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgIENvbG9yIGJhc2VC
YWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVfb3IoUmVuZGVyVGhlbWU6OnNp
bmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3Vu
ZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogI2Vsc2UKLSAgICBDb2xvciBiYXNlQmFja2dyb3Vu
ZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlT3IoQ29sb3I6OndoaXRlKTsKKyAgICBDb2xv
ciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlX29yKENvbG9yOjp3
aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLnB0cigpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1lLnB0cigpKSkg
ewpAQCAtNDkzMiw3ICs0OTMyLDcgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKIGZsb2F0IEZy
YW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVm
ZmVjdGl2ZVpvb20pIGNvbnN0CiB7CiAgICAgLy8gSWYgZWZmZWN0aXZlWm9vbSBpcyBwYXNzZWQs
IGl0IGFscmVhZHkgZmFjdG9ycyBpbiBwYWdlWm9vbUZhY3RvcigpLiAKLSAgICByZXR1cm4gZWZm
ZWN0aXZlWm9vbS52YWx1ZU9yKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgpLmZy
YW1lU2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gZWZmZWN0aXZlWm9vbS52YWx1ZV9vcihmcmFt
ZSgpLnBhZ2Vab29tRmFjdG9yKCkpICogZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9CiAK
IGZsb2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9uYWw8
ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CkBAIC01NDkzLDcgKzU0OTMsNyBAQCB2b2lkIEZy
YW1lVmlldzo6Y2xlYXJWaWV3cG9ydFNpemVPdmVycmlkZUZvckNTU1ZpZXdwb3J0VW5pdHMoKQog
ICAgIGlmICghbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRlVmll
d3BvcnRTaXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1l
KCkuZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VT
dHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KQEAgLTU1MDUsMTIgKzU1MDUsMTIgQEAgdm9pZCBG
cmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSBzaXpl
KQogCiB2b2lkIEZyYW1lVmlldzo6b3ZlcnJpZGVWaWV3cG9ydFdpZHRoRm9yQ1NTVmlld3BvcnRV
bml0cyhpbnQgd2lkdGgpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUgPyBtX292ZXJyaWRlVmlld3Bv
cnRTaXplLT5oZWlnaHQgOiBXVEY6Om51bGxvcHQgfSk7CisgICAgb3ZlcnJpZGVWaWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUgPyBt
X292ZXJyaWRlVmlld3BvcnRTaXplLT5oZWlnaHQgOiBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKIHZv
aWQgRnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5WaWV3cG9ydFdpZHRoRm9yQ1NTVmlld3BvcnRV
bml0cygpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHsg
eyB9LCBtX292ZXJyaWRlVmlld3BvcnRTaXplID8gbV9vdmVycmlkZVZpZXdwb3J0U2l6ZS0+aGVp
Z2h0IDogV1RGOjpudWxsb3B0IH0pOworICAgIG92ZXJyaWRlVmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cyh7IHsgfSwgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA/IG1fb3ZlcnJpZGVWaWV3
cG9ydFNpemUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6
Om92ZXJyaWRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdwb3J0
U2l6ZSBzaXplKQpAQCAtNTUzNywxNiArNTUzNywxNiBAQCBJbnRTaXplIEZyYW1lVmlldzo6dmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0CiAKICAgICBpZiAodXNlRml4ZWRM
YXlvdXQoKSkgewogICAgICAgICBhdXRvIGZpeGVkTGF5b3V0U2l6ZSA9IHRoaXMtPmZpeGVkTGF5
b3V0U2l6ZSgpOwotICAgICAgICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9ydFNpemUud2lk
dGgudmFsdWVPcihmaXhlZExheW91dFNpemUud2lkdGgoKSk7Ci0gICAgICAgIHZpZXdwb3J0U2l6
ZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0LnZhbHVlT3IoZml4ZWRMYXlvdXRTaXplLmhl
aWdodCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRo
LnZhbHVlX29yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXpl
LmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IoZml4ZWRMYXlvdXRTaXplLmhl
aWdodCgpKTsKICAgICAgICAgcmV0dXJuIHsgKnZpZXdwb3J0U2l6ZS53aWR0aCwgKnZpZXdwb3J0
U2l6ZS5oZWlnaHQgfTsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSB2YWx1ZSByZXR1
cm5lZCBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHZhbHVlIG9mIHRoZSBvdmVyZmxvdwog
ICAgIC8vIHByb3BlcnR5IG9uIHRoZSByb290IGVsZW1lbnQuCiAgICAgYXV0byB2aXNpYmxlQ29u
dGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJzID0gdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkaW5n
U2Nyb2xsYmFycygpLnNpemUoKTsKLSAgICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9ydFNp
emUud2lkdGgudmFsdWVPcih2aXNpYmxlQ29udGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJzLndp
ZHRoKCkpOwotICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0LnZh
bHVlT3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7Cisg
ICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRoLnZhbHVlX29yKHZpc2li
bGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lkdGgoKSk7CisgICAgdmlld3BvcnRT
aXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IodmlzaWJsZUNvbnRlbnRT
aXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIHsgKnZpZXdwb3J0
U2l6ZS53aWR0aCwgKnZpZXdwb3J0U2l6ZS5oZWlnaHQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggZjhlMDIxMTcwMDdjYzlmMDZlZGVjZTUxZmY3OWY1ODA0ODVhMTdkMy4uMDJh
OTA2OGM3YzM3MDFkMWZiMzNkM2Y1YzA4MzIyMmRmYWJhZjE5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC00OTMsMTMgKzQ5MywxMyBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBjb252
ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBGbG9hdFBvaW50JikgY29uc3QgZmluYWw7CiAgICAg
SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0
IGZpbmFsOwogCi0gICAgZmxvYXQgZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoT3B0aW9u
YWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwotICAgIGZsb2F0
IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVa
b29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBmbG9hdCBkb2N1bWVudFRvQWJzb2x1dGVT
Y2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CisgICAgZmxvYXQgYWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9uYWw8
ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBPcHRp
b25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChGbG9hdFBvaW50
LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRS
ZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChG
bG9hdFBvaW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CiAKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUb0NsaWVudFJlY3QoRmxvYXRSZWN0LCBP
cHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAg
RmxvYXRSZWN0IGFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCwgT3B0aW9uYWw8ZmxvYXQ+
IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRmxvYXRTaXplIGRv
Y3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJl
Y3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDcwOTM0NjdiMTJmODU2NjFhOGY3
ZmFkZjAyYjM1Nzc5OTRlYjZhMDMuLjQzMDE4NDlkZDdkNmUxN2Q0NzBmZmJhMTgwODZiMTQ0MzI5
YTVkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaApA
QCAtNTIsMTIgKzUyLDEyIEBAIE9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gR2xvYmFs
RnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlmICgh
cGFnZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwogICAg
IGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
eyB7IFdURk1vdmUoKnBhZ2VJRCksIFdURk1vdmUoKmZyYW1lSUQpIH0gfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKaW5kZXggZjJiY2QwNTA0YTY5
NTNhNTJiNjA1NzNhNzdjMDU3NTAyOTdkZjJjNC4uODYyOTM3MDU5YTQzNGNmZDAxMTJjMjNhMjNi
M2RjMDYwY2NjZjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5k
b3dJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVu
dGlmaWVyLmgKQEAgLTcxLDEyICs3MSwxMiBAQCBPcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlm
aWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcgogICAg
IE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBkZWNv
ZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxXaW5kb3dJZGVudGlmaWVyPiB3aW5kb3dJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gd2luZG93SWRlbnRpZmllcjsKICAgICBpZiAoIXdpbmRvd0lkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RGTW92
ZSgqd2luZG93SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVy
c2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA5YmE1YWM4MWM0M2I0NDViYjE2MWMxOTc0YTY2ZmM1
NTUzZWI4YjQ4Li43MzFjYzA2YzljMTZhZDUwMjk5Zjc5ZmIyYTBiNGI4MTZlMWRkMWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtMTYyLDcg
KzE2Miw3IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoRWxlbWVudCYgdGFy
Z2V0KQogICAgIGlmICghdHJhY2tpbmdEb2N1bWVudCgpIHx8ICFtX2NhbGxiYWNrIHx8IG1fb2Jz
ZXJ2YXRpb25UYXJnZXRzLmNvbnRhaW5zKCZ0YXJnZXQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB0YXJnZXQuZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkucmVnaXN0cmF0aW9ucy5h
cHBlbmQoeyBtYWtlV2Vha1B0cih0aGlzKSwgV1RGOjpudWxsb3B0IH0pOworICAgIHRhcmdldC5l
bnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyYXRpb25zLmFwcGVuZCh7IG1h
a2VXZWFrUHRyKHRoaXMpLCBzdGQ6Om51bGxvcHQgfSk7CiAgICAgYm9vbCBoYWRPYnNlcnZhdGlv
blRhcmdldHMgPSBoYXNPYnNlcnZhdGlvblRhcmdldHMoKTsKICAgICBtX29ic2VydmF0aW9uVGFy
Z2V0cy5hcHBlbmQoJnRhcmdldCk7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0cmFja2luZ0RvY3Vt
ZW50KCk7CkBAIC0yNDAsMTggKzI0MCwxOCBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjpy
b290RGVzdHJveWVkKCkKIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbGxi
YWNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byogY29udGV4dCA9IG1fY2FsbGJhY2stPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQoY29udGV4dC0+
aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigq
Y29udGV4dCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygpKQog
ICAgICAgICByZXR1cm4gd2luZG93LT5mcm96ZW5Ob3dUaW1lc3RhbXAoKTsKICAgICAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQg
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFwcGVuZFF1ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5PiYmIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
Q29udHJvbHNDb250ZXh0TWVudUl0ZW0uaAppbmRleCA5YWIyZTZhNmRkYjBkZGU2MTg2ZTE1YTRm
MzY4MzYyNTkyZjU0NTRhLi41NWVhMDJhY2VjZmM4MGU3ZWZkNjFmNWJiYTlmNDA4YjA1ZGUzZDU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0uaApAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxNZWRpYUNvbnRyb2xzQ29udGV4dE1l
bnVJdGVtPiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUoRGVjbwogICAgIE9w
dGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAoIW5h
bWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OyBcCiAKICAgICBERUNPREUoaWQsIElEKTsKICAgICBERUNPREUodGl0bGUsIFN0
cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmI1ZjFmYzYwZmI0M2YzNzFi
ZWQ1OWFkYzBiYjdjYjk2NWNiYWViYS4uYzU0ODMzOTFkZWFjYmU2ZjY4M2UyNGIyOTY4MzA3Yzhk
ODBiM2RmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMTEzLDEzICsxMTMsMTMg
QEAgYm9vbCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiBzdGF0aWMgT3B0aW9uYWw8VVJMPiBz
aGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChkYXRhLnVybC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTChkYXRhLnVybCk7CiAgICAgaWYg
KCF1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSAmJiAhdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdXJsOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggNjFkZDg2MDU4ZTdhMWU3MjMwZWRkNjc4NmNlODRlMTQzNGZjY2Ri
ZS4uOTliYTM5MjZjNGFiZTg3ZjZhNDBjMWRkMjlmNmNhYTg4NTRjNmM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC02NzEsNyArNjcxLDcgQEAgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxNZWRp
YUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiAgUGFnZTo6dGFrZUFueU1lZGkKICAgICAg
ICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpKQogICAgICAgICAgICAgcmV0dXJuIHsg
eyAqbGlzdGVuZXIsICpmcmFtZS0+ZG9jdW1lbnQoKSB9IH07CiAgICAgfQotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQYWdlOjpz
ZXRDYW5TdGFydE1lZGlhKGJvb2wgY2FuU3RhcnRNZWRpYSkKQEAgLTc3NiwxNiArNzc2LDE2IEBA
IGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0
aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gUGFnZTo6cmFu
Z2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JiByZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAodGFy
Z2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChyZWZlcmVuY2VSYW5nZSAmJiByZWZlcmVuY2VS
YW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5wYWdlKCkgIT0gdGhpcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbldyYXAg
Y2FuV3JhcCA9IG9wdGlvbnMuY29udGFpbnMoV3JhcEFyb3VuZCkgPyBDYW5XcmFwOjpZZXMgOiBD
YW5XcmFwOjpObzsKICAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVuY2VSYW5nZSA/IHJlZmVyZW5j
ZVJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmZyYW1lKCkgOiAmbWFpbkZyYW1lKCk7CiAgICAgRnJh
bWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7Ci0gICAgICAgIGlmIChhdXRvIHJlc3Vs
dFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9PSBz
dGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiBXVEY6Om51bGxvcHQsIG9wdGlvbnMgLSBXcmFw
QXJvdW5kKSkKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0UmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCku
cmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1lID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5n
ZSA6IHN0ZDo6bnVsbG9wdCwgb3B0aW9ucyAtIFdyYXBBcm91bmQpKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdFJhbmdlOwogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1lLCAh
b3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpLCBjYW5XcmFwKTsKICAgICB9IHdoaWxlIChmcmFt
ZSAmJiBmcmFtZSAhPSBzdGFydEZyYW1lKTsKQEAgLTc5Nyw3ICs3OTcsNyBAQCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgT3B0aW9uYWw8UwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogICAgIH0KIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dW5zaWduZWQgUGFnZTo6ZmluZE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBTaG91bGRIaWdobGln
aHRNYXRjaGVzIHNob3VsZEhpZ2hsaWdodE1hdGNoZXMsIFNob3VsZE1hcmtNYXRjaGVzIHNob3Vs
ZE1hcmtNYXRjaGVzKQpAQCAtODExLDcgKzgxMSw3IEBAIHVuc2lnbmVkIFBhZ2U6OmZpbmRNYXRj
aGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
CiAgICAgZG8gewogICAgICAgICBpZiAoc2hvdWxkTWFya01hdGNoZXMgPT0gTWFya01hdGNoZXMp
CiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVIaWdo
bGlnaHRlZChzaG91bGRIaWdobGlnaHRNYXRjaGVzID09IEhpZ2hsaWdodE1hdGNoZXMpOwotICAg
ICAgICBtYXRjaENvdW50ICs9IGZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRh
cmdldCwgV1RGOjpudWxsb3B0LCBvcHRpb25zLCBtYXhNYXRjaENvdW50ID8gKG1heE1hdGNoQ291
bnQgLSBtYXRjaENvdW50KSA6IDAsIHNob3VsZE1hcmtNYXRjaGVzID09IE1hcmtNYXRjaGVzLCBu
dWxscHRyKTsKKyAgICAgICAgbWF0Y2hDb3VudCArPSBmcmFtZS0+ZWRpdG9yKCkuY291bnRNYXRj
aGVzRm9yVGV4dCh0YXJnZXQsIHN0ZDo6bnVsbG9wdCwgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCA/
IChtYXhNYXRjaENvdW50IC0gbWF0Y2hDb3VudCkgOiAwLCBzaG91bGRNYXJrTWF0Y2hlcyA9PSBN
YXJrTWF0Y2hlcywgbnVsbHB0cik7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJh
bWUsIHRydWUsIENhbldyYXA6Ok5vKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTEyNjks
NyArMTI2OSw3IEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAjZW5kaWYKIAogI2lmIEhB
VkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlk
ZShXVEY6Om51bGxvcHQpOworICAgIHNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUoc3RkOjpu
dWxsb3B0KTsKICNlbmRpZgogCiAgICAgcmVzZXRTZWVuUGx1Z2lucygpOwpAQCAtMTg1NSw3ICsx
ODU1LDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCgpCiAKICAg
ICBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCA9IGZhbHNlOwogICAgIG1fdXNlclN0eWxlU2hlZXQg
PSBTdHJpbmcoKTsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1lbmNvZGVkIFVURi04IHN0eWxl
IHNoZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVtCiAgICAgLy8gc3luY2hyb25v
dXNseSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMjM5Myw3ICsyMzkzLDcgQEAgdm9p
ZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlzaWJsZSkKIAogICAgICAgICBp
ZiAobV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSkgewogICAgICAgICAgICAgbG9nTmF2aWdh
dGlvbihtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlLnZhbHVlKCkpOwotICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTI1NzYsNyArMjU3Niw3IEBAIENvbG9yIFBhZ2U6OnBhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcigpIGNvbnN0CiAKIENvbG9yIFBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3Io
KSBjb25zdAogewotICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29sb3IudmFsdWVPcihDb2xv
cigpKTsKKyAgICByZXR1cm4gbV9zYW1wbGVkUGFnZVRvcENvbG9yLnZhbHVlX29yKENvbG9yKCkp
OwogfQogCiB2b2lkIFBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRlKENv
bG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCkBAIC0yODgxLDcgKzI4ODEs
NyBAQCB2b2lkIFBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKGNvbnN0IFVSTCYgZGVzdGluYXRp
b25VUkwsIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9uYXZp
Z2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBsb2dOYXZpZ2F0aW9u
KG5hdmlnYXRpb24pOwogfQogCkBAIC0zMzAzLDcgKzMzMDMsNyBAQCB2b2lkIFBhZ2U6OmRpZENo
YW5nZU1haW5Eb2N1bWVudCgpCiAgICAgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXItPnJlc2V0
KCk7CiAKICAgICBpZiAobV9zYW1wbGVkUGFnZVRvcENvbG9yKSB7Ci0gICAgICAgIG1fc2FtcGxl
ZFBhZ2VUb3BDb2xvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zYW1wbGVkUGFnZVRvcENv
bG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5zYW1wbGVkUGFn
ZVRvcENvbG9yQ2hhbmdlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xv
clNhbXBsZXIuY3BwCmluZGV4IDFiMjI4YzY2NjA0MTkwMTZhNzA0NTI0YWI0NzljNDk3YjA2ZjZk
YWUuLjFlNTA5YWE0MDNiZGVlNTZmYzM0OGI3MWQyODhhODg5NjBlZGIyZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcApAQCAtOTcsMTYgKzk3LDE2IEBAIHN0YXRp
YyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQsIElu
dFBvaW50JiYgbG9jYXRpb24pCiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGludG8gcGFpbnRpbmcgbG9naWMg
aW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQogCiAgICAgaWYgKCFpc1ZhbGlkU2FtcGxlTG9j
YXRpb24oZG9jdW1lbnQsIGxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChkb2N1bWVudC52aWV3
KCkpOwogICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChkb2N1bWVudC52aWV3
KCktPmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUoMSwgMSkpLCBTbmFwc2hvdE9w
dGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25hcHNob3RPcHRpb25zUGFpbnRF
dmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKICAgICBpZiAoIXNuYXBzaG90KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxTaXpl
KCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChwaXhlbEJ1ZmZl
ci0+ZGF0YSgpLmxlbmd0aCgpID49IDQpOwogCkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIExh
YjxmbG9hdD4gYXZlcmFnZUNvbG9yKExhYjxmbG9hdD4gY29sb3JzW10sIHNpemVfdCBjb3VudCkK
IAogT3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcChQYWdlJiBwYWdl
KQogewotICAgIC8vIElmIGBXVEY6Om51bGxvcHRgIGlzIHJldHVybmVkIHRoZW4gdGhhdCBtZWFu
cyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0aGUgYFBhZ2VgIGlzIG5vdCByZWFk
eSB5ZXQpLgorICAgIC8vIElmIGBzdGQ6Om51bGxvcHRgIGlzIHJldHVybmVkIHRoZW4gdGhhdCBt
ZWFucyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0aGUgYFBhZ2VgIGlzIG5vdCBy
ZWFkeSB5ZXQpLgogICAgIC8vIElmIGFuIGludmFsaWQgYENvbG9yYCBpcyByZXR1cm5lZCB0aGVu
IHRoYXQgbWVhbnMgdGhhdCBzYW1wbGVzIFdlcmUgdGFrZW4gYnV0IHRoZXkgd2VyZSB0b28gZGlm
ZmVyZW50LgogCiAgICAgYXV0byBtYXhEaWZmZXJlbmNlID0gcGFnZS5zZXR0aW5ncygpLnNhbXBs
ZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKCk7CkBAIC0xNTAsMTkgKzE1MCwxOSBAQCBPcHRp
b25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2UpCiAKICAg
ICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpKTsKICAgICBpZiAoIW1haW5Eb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZnJhbWVWaWV3ID0g
bWFrZVJlZlB0cihwYWdlLm1haW5GcmFtZSgpLnZpZXcoKSk7CiAgICAgaWYgKCFmcmFtZVZpZXcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBEb24ndCB0YWtlIHNhbXBsZXMgaWYgdGhlIGxheWVyIHRyZWUgaXMgc3Rp
bGwgZnJvemVuLgogICAgIGlmIChmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBEb24ndCBhdHRlbXB0IHRvIGhpdCB0ZXN0IG9yIHNhbXBsZSBpZiB3ZSBkb24ndCBoYXZlIGFu
eSBjb250ZW50IHlldC4KICAgICBpZiAoIWZyYW1lVmlldy0+aXNWaXN1YWxseU5vbkVtcHR5KCkg
fHwgIWZyYW1lVmlldy0+aGFzQ29udGVudGZ1bERlc2NlbmRhbnRzKCkgfHwgIUNvbnRlbnRmdWxQ
YWludENoZWNrZXI6OnF1YWxpZmllc0ZvckNvbnRlbnRmdWxQYWludCgqZnJhbWVWaWV3KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIERlY3JlYXNlIHRoZSB3aWR0aCBieSBvbmUgcGl4ZWwgc28gdGhhdCB0aGUgbGFz
dCBzYW1wbGUgaXMgd2l0aGluIGJvdW5kcyBhbmQgbm90IG9mZi1ieS1vbmUuCiAgICAgYXV0byBm
cmFtZVdpZHRoID0gZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCkgLSAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCA0NzM3Y2RhYTg1MDU3OTViZGNkM2Rm
ZTE2ODJkNzkzZGE4ZTQ2ZWI5Li4zYzJhYzgzZmVmZjMyODRjY2IyNmZmY2MyN2RkMTZlOWE0MGQx
MzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtMzAz
LDcgKzMwMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHNuYXBzaG90Q2FudmFzKEhUTUxD
YW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBDYW52YXNSCiAgICAgaWYgKCFyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCku
c3RyaW5nOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYgYXJn
dW1lbnRzKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVl
bnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90Tm9kZShtX3Bh
Z2UubWFpbkZyYW1lKCksICpub2RlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoc25hcHNo
b3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gc25hcHNob3QtPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJMKCJp
bWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBp
bWFnZURhdGEgPSBKU0ltYWdlRGF0YTo6dG9XcmFwcGVkKHZtLCBwb3NzaWJsZVRhcmdldCkpIHsK
QEAgLTM3MSwxNCArMzcxLDE0IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3Qo
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAgIElu
dFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIo
KSwgc291cmNlUmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRv
RGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAoYXV0byogaW1hZ2VCaXRtYXAgPSBKU0ltYWdlQml0bWFwOjp0b1dyYXBwZWQodm0sIHBvc3Np
YmxlVGFyZ2V0KSkgewogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVu
ZHMoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJp
dG1hcC0+YnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRv
RGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBjb250ZXh0ID0g
Y2FudmFzUmVuZGVyaW5nQ29udGV4dCh2bSwgcG9zc2libGVUYXJnZXQpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXNCYXNlKCk7CkBAIC00MDUsNyArNDA1LDcg
QEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAgIC8vIElmIG5vIHRhcmdldCBp
cyBwcm92aWRlZCwgY2FwdHVyZSBhbiBpbWFnZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICAgICAg
ICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludDo6emVybygpLCBtX3BhZ2UubWFpbkZyYW1lKCku
dmlldygpLT5zaXplRm9yVmlzaWJsZUNvbnRlbnQoKSk7CiAgICAgICAgICAgICBpZiAoYXV0byBz
bmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0KG1fcGFnZS5tYWluRnJhbWUoKSwg
aW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykpCi0gICAgICAgICAg
ICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpu
dWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVz
ZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVSTC5p
c0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9h
cmRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5o
CmluZGV4IGExMGM2MzZlZmRmMjMyNzE0ZTgzZDJjZmRjYjBhZjY0YWI2NGFlZjcuLjRlYjRiZDYy
YTBhMzY5NWM2NmM1NTMwMTFlMmExMDZkMWQ3MThmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQgZmluYWwgOiBwdWJsaWMgUGFzdGVi
b2FyZENvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSUQg
PSBXVEY6Om51bGxvcHQpCisgICAgUGFnZVBhc3RlYm9hcmRDb250ZXh0KE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQYXN0ZWJvYXJk
Q29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShwYWdlSUQpKQogICAgIHsKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgflBhZ2VQYXN0ZWJvYXJkQ29udGV4dCgpIHsg
fQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3JlYXRl
KE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVhdGUoT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGFnZVBhc3RlYm9hcmRDb250ZXh0PihXVEZNb3ZlKHBhZ2VJRCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuY3BwCmluZGV4IGRi
NTg2ZjMyZmIzYjA1NmEzNGFlMDFhMDlhZThhNmQyNmZhOTM4M2EuLmRlNzg2NzZkYjg5YTg2NDM4
ZGM2MzY4MjI3ZWI3OWFmNjJiZGUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZUVudHJ5LmNwcApAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxQZXJmb3JtYW5jZUVudHJ5OjpU
eXBlPiBQZXJmb3JtYW5jZUVudHJ5OjpwYXJzZUVudHJ5VHlwZVN0cmluZyhjb25zdCBTdAogICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFR5cGU+KFR5cGU6OlBhaW50KTsKICAgICB9CiAKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VMb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dn
aW5nLmNwcAppbmRleCBjNjg0OTQ1YTgwZTA0MGE2N2Y0MTMwMjg3NDIwNjcxODE3NGNkZmQwLi4x
ZDVlY2ViYTU3Y2U0ZTI2YTQzZjQwZTBiY2U3NmUzYmZiOTA0N2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBQ
ZXJmb3JtYW5jZUxvZ2dpbmc6OmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBvaW50T2ZJbnRlcmVz
dCBwb2kpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFBlcmZvcm1hbmNlTG9nZ2luZzo6
Z2V0UGxhdGZvcm1NZW1vcnlVc2FnZVN0YXRpc3RpY3MoSGFzaE1hcDxjb25zdCBjaGFyKiwgc2l6
ZV90PiYpIHsgfQotT3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5c2lj
YWxGb290cHJpbnQoKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KK09wdGlvbmFsPHVpbnQ2NF90
PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1v
bml0b3IuY3BwCmluZGV4IDg5ODYyMjRjYzNlOTlhMjg5MTUzYzUyZDY5NjRhMDc3YzhjZTkxMTEu
LjBhNmQyMDM5OWE3NjIyZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZkNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUGVyZm9y
bWFuY2VNb25pdG9yOjpQZXJmb3JtYW5jZU1vbml0b3IoUGFnZSYgcGFnZSkKIAogdm9pZCBQZXJm
b3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIHsKLSAgICBtX3Bvc3RM
b2FkQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RvcCgpOwogICAgIG1f
cG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VUaW1lci5zdG9wKCk7CiB9CkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKCkKIHsKICAgICAvLyBPbmx5
IGRvIHBvc3QtbG9hZCBDUFUgdXNhZ2UgbWVhc3VyZW1lbnQgaWYgdGhlcmUgaXMgYSBzaW5nbGUg
UGFnZSBpbiB0aGUgcHJvY2VzcyBpbiBvcmRlciB0byByZWR1Y2Ugbm9pc2UuCiAgICAgaWYgKG1f
cGFnZS5zZXR0aW5ncygpLmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYm
IG1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVU
aW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hvdChj
cHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwogICAgIH0KIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgUGVyZm9ybWFuY2VNb25pdG9yOjphY3Rpdml0eVN0YXRlQ2hhbmdlZChPcHRpb25TZXQ8QWN0
aXZpdHlTdGF0ZTo6RmxhZz4gb2xkCiAKICAgICAvLyBNZWFzdXJlIENQVSB1c2FnZSBvZiBwYWdl
cyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciB2aXNpYmxlLgogICAgIGlmIChtX3BhZ2Uuc2V0dGlu
Z3MoKS5pc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAmJiB2
aXNpYmlsaXR5Q2hhbmdlZCkgewotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmIChuZXdTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSkKICAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0b3AoKTsK
ICAgICAgICAgZWxzZSBpZiAobV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpCkBAIC0xNjks
NyArMTY5LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQb3N0TG9hZFJlc291cmNlVGhy
ZXNob2xkKFBhZ2UmIHBhZ2UsIFJlcG9ydGluZ1JlYXNvbgogdm9pZCBQZXJmb3JtYW5jZU1vbml0
b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCkKIHsKICAgICBpZiAoIW1fcGFnZS5pc09ubHlO
b25VdGlsaXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgUGVyZm9ybWFuY2VNb25p
dG9yOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdNZW1vcnlVc2FnZSgpCiB2b2lkIFBlcmZvcm1h
bmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UoKQogewogICAgIGlm
ICghbV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpIHsKLSAgICAgICAgbV9wb3N0QmFja2dy
b3VuZGluZ0NQVVRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcG9zdEJhY2tncm91bmRp
bmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0y
NzEsNyArMjcxLDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzdHJpbmdGb3JDUFVTYW1w
bGluZ0FjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQVVMKIHZvaWQgUGVyZm9ybWFuY2VN
b25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQ
VVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UuaXNPbmx5Tm9uVXRp
bGl0eVBhZ2UoKSkgewotICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQZXJm
b3JtYW5jZU1vbml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0
YXRlRm9yQ1BVU2FtcGwKIAogICAgIE9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBDUFVUaW1l
OjpnZXQoKTsKICAgICBpZiAoIWNwdVRpbWUpIHsKLSAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRl
Q1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGlt
ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgKaW5kZXggNzNjMGY3
YWRlY2MwYzQ2MWU2YmM4Nzg0YjhiMzJhNWQxYWNjYzE3Zi4uYjBlNjIyNjUzODFiZmMzYmUyNDkx
NWY1NDM0MjIxZmFiYjE1Y2JhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9y
aWdpbiwgQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBMb2FkVGltaW5nJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiwgY29uc3QgRG9jdW1lbnRUaW1pbmcmLCBjb25zdCBTZWN1cml0eU9yaWdpbiYs
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlKTsKIAotICAgIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5j
ZU9yaWdpbihNb25vdG9uaWNUaW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiB0aW1lT3JpZ2lu
ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBkb3VibGUgbWlsbGlzZWNvbmRzU2luY2VPcmln
aW4oTW9ub3RvbmljVGltZSwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZU9yaWdpbiA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBzYW1lT3JpZ2luQ2hlY2tGYWlscygpIGNvbnN0
OwogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IGU5ZDMwYzdjMDY2MTgx
NzdjYmFiMDRlMzViNzU3MzVkYzI5MWFkMWYuLjZiMmJjMWJkYjM4YmUwNTQzZjIwZDUxZDIwMDk0
NGIzZjU0N2Y2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFdmVudHNFbmFibGVkKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJsZWQudmFsdWVPcihzY3JlZW5I
YXNUb3VjaERldmljZSgpKTsKKyAgICByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJsZWQudmFsdWVf
b3Ioc2NyZWVuSGFzVG91Y2hEZXZpY2UoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBmNDQ5ZmM3MGRmNTc4OGVmZWQwYzhlZTRiNjNlMmE1
NzkyYWY2MDlkLi42YjY5NmQ0YzBkYjM0OGIwODcxY2FhMzE5ZjllOThkOTZhYzZhZDExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFNl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICBtX2RvbWFp
biA9IG1fZGF0YS5ob3N0OwogCiAgICAgaWYgKG1fZGF0YS5wb3J0ICYmIFdURjo6aXNEZWZhdWx0
UG9ydEZvclByb3RvY29sKG1fZGF0YS5wb3J0LnZhbHVlKCksIG1fZGF0YS5wcm90b2NvbCkpCi0g
ICAgICAgIG1fZGF0YS5wb3J0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2RhdGEucG9ydCA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlP
cmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBtX2NhbkxvYWRMb2NhbFJlc291
cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBTZWN1cml0eU9yaWdpbjo6U2Vj
dXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbigpCi0gICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBX
VEY6Om51bGxvcHQgfQorICAgIDogbV9kYXRhIHsgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmco
KSwgc3RkOjpudWxsb3B0IH0KICAgICAsIG1fZG9tYWluIHsgZW1wdHlTdHJpbmcoKSB9CiAgICAg
LCBtX2lzVW5pcXVlIHsgdHJ1ZSB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSB7
IGZhbHNlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRl
eCBlZWQzYTMyMGYzMjc5NzY3ZjNjN2Q5N2VmYTI0NTdjMzNiNWM1ZWZhLi5hMDBkYWM0NzkwZWUy
ZTk1NWFlMmZlMmNmYzY1ZjBhNDBkYTgzNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdp
bkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UocHJvdG9jb2wsICJmaWxlIikpCiAgICAgICAgIHJldHVybiAiZmlsZV9fMCJfczsK
IAotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBv
cnQudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsIHNlcGFyYXRv
ckNoYXJhY3RlciwgRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCksIHNlcGFyYXRv
ckNoYXJhY3RlciwgcG9ydC52YWx1ZV9vcigwKSk7CiB9CiAKIE9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQpAQCAtODYsMTcgKzg2LDE3IEBAIE9wdGlvbmFs
PFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKGNvbnN0IFN0CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBhcmF0
b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKHNlcGFy
YXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gbm90Rm91bmQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAgICAgc2l6ZV90
IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2VwYXJhdG9yQ2hh
cmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAv
LyBFbnN1cmUgdGhlcmUgd2VyZSBhdCBsZWFzdCAyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiBTb21l
IGhvc3RuYW1lcyBvbiBpbnRyYW5ldHMgaGF2ZQogICAgIC8vIHVuZGVyc2NvcmVzIGluIHRoZW0s
IHNvIHdlJ2xsIGFzc3VtZSB0aGF0IGFueSBhZGRpdGlvbmFsIHVuZGVyc2NvcmVzIGFyZSBwYXJ0
IG9mIHRoZSBob3N0LgogICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51bWJl
ciBvciBkb2Vzbid0IGV4aXN0LgogICAgIGF1dG8gcG9ydExlbmd0aCA9IGRhdGFiYXNlSWRlbnRp
Zmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxOwpAQCAtMTA0LDExICsxMDQsMTEgQEAgT3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFz
ZUlkZW50aWZpZXIoY29uc3QgU3QKIAogICAgIC8vIE5vdGhpbmcgYWZ0ZXIgdGhlIGNvbG9uIGlz
IGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNvbG9uIGlzIG5vdC4KICAgICBpZiAo
IXBvcnQgJiYgcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRyZWF0IHBvcnQgMCBsaWtlIHRoZXJl
IGlzIHdhcyBubyBwb3J0IHNwZWNpZmllZC4KICAgICBpZiAocG9ydCAmJiAhKnBvcnQpCi0gICAg
ICAgIHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHBvcnQgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBh
cmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNl
cGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMGY2NjI2MmE2MGNmYjc5NDUxMmY5ZjVl
ZmYyOGE3MGNlZjQyZTZmOS4uOTA3OWM1YjU1MjhiMGViYjk0YjgwZDZmZTg1MzcxN2I2NDEyMGQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC03Niw3ICs3
Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogCiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm90b2NvbC5pc051bGwoKSAmJiBob3N0Lmlz
TnVsbCgpICYmIHBvcnQgPT0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcHJvdG9jb2wu
aXNOdWxsKCkgJiYgaG9zdC5pc051bGwoKSAmJiBwb3J0ID09IHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CkBAIC0xMDgs
MjEgKzEwOCwyMSBAQCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcm90
b2NvbDsKICAgICBkZWNvZGVyID4+IHByb3RvY29sOwogICAgIGlmICghcHJvdG9jb2wpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBob3N0OwogICAgIGRlY29kZXIgPj4gaG9zdDsKICAg
ICBpZiAoIWhvc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+PiBw
b3J0OwogICAgIGRlY29kZXIgPj4gcG9ydDsKICAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
U2VjdXJpdHlPcmlnaW5EYXRhIGRhdGEgeyBXVEZNb3ZlKCpwcm90b2NvbCksIFdURk1vdmUoKmhv
c3QpLCBXVEZNb3ZlKCpwb3J0KSB9OwogICAgIGlmIChkYXRhLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhSGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1sz
XSA9IHsKICAgICAgICAgICAgIGRhdGEucHJvdG9jb2wuaW1wbCgpID8gZGF0YS5wcm90b2NvbC5p
bXBsKCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBkYXRhLmhvc3QuaW1wbCgpID8gZGF0YS5o
b3N0LmltcGwoKS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIGRhdGEucG9ydC52YWx1ZU9yKDAp
CisgICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKICAgICAgICAgfTsKICAgICAgICAg
cmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENv
ZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAppbmRl
eCA0ZTMyMDk3ZmQ5MWZhNzMwMjY5Yzk1MWM0NjBhYTMwMGRjYTk3Mjg2Li45ZmE4MjE2ODMxMzI5
YTNhMGZkOWFiZDIxMWJhY2RmMzg0ODA3YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luSGFz
aCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsKICAgICAgICAgICAgIG9yaWdp
bi0+cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3RvY29sKCkuaW1wbCgpLT5oYXNoKCkg
OiAwLAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1wbCgpID8gb3JpZ2luLT5ob3N0KCku
aW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVPcigw
KQorICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCkKICAgICAgICAgfTsKICAg
ICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4o
aGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RyYW5z
bGF0aW9uQ29udGV4dE1lbnVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RyYW5zbGF0aW9u
Q29udGV4dE1lbnVJbmZvLmgKaW5kZXggYzU0YTRlMTQ3MWVmMzIxOWNjYmM2NWMwZDFkMDBjYjM3
NmRmMDljOC4uMTIxYWZhYTgzZTU1YzAzMjNmY2IyNDFkNmMzN2U0YzQ4YWY0MjRmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8uaApAQCAt
NTksMjIgKzU5LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFRyYW5zbGF0
aW9uQ29udGV4dE1lbnVJbmZvPiBUcmFuc2xhdGlvbkNvbnRleHRNCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxJbnRSZWN0PiBzZWxlY3Rpb25Cb3VuZHNJblJvb3RWaWV3OwogICAgIGRlY29k
ZXIgPj4gc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldzsKICAgICBpZiAoIXNlbGVjdGlvbkJvdW5k
c0luUm9vdFZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRQb2ludD4gbG9jYXRpb25JblJvb3RW
aWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGlmICghbG9jYXRp
b25JblJvb3RWaWV3KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhbnNsYXRpb25Db250ZXh0TWVudU1v
ZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlmICghbW9kZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc2VsZWN0aW9uQm91bmRzSW5Sb290
VmlldyksIFdURk1vdmUoKmxvY2F0aW9uSW5Sb290VmlldyksICptb2RlIH19OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTY3JpcHQuaAppbmRleCAzZjJlNjU2MTU2ZGU0Y2FiMzcyZmJiZDY3M2VhZThkZjY2
ZGRmOTEwLi44Y2Q5YzMwYzZiNmE2NGVlNjZkZjk5MzNlYjM3ODU4OGM0OThhMjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtOTEsMzcgKzkxLDM3IEBAIE9wdGlvbmFsPFVzZXJTY3Jp
cHQ+IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0
cmluZz4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291cmNlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAg
IGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxvd2xp
c3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd2xpc3Q7CiAgICAgaWYgKCFhbGxvd2xpc3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2NrbGlzdDsKICAgICBkZWNvZGVy
ID4+IGJsb2NrbGlzdDsKICAgICBpZiAoIWJsb2NrbGlzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25h
bDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9uVGltZTsKICAgICBkZWNvZGVyID4+
IGluamVjdGlvblRpbWU7CiAgICAgaWYgKCFpbmplY3Rpb25UaW1lKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9w
dGlvbmFsPFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVkRnJhbWVzOwogICAgIGRl
Y29kZXIgPj4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgaWYgKCFpbmplY3RlZEZyYW1lcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBPcHRpb25hbDxXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nPiB3YWl0
Rm9yTm90aWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gd2FpdEZvck5vdGlmaWNhdGlvbjsKICAg
ICBpZiAoIXdhaXRGb3JOb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7CiAgICAg
ICAgIFdURk1vdmUoKnNvdXJjZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5k
ZXggYThjNDBkOWU1NmM5OTY2MWMzZjk5ZDg4YjMwNDcwZjgzYmY3M2RjOS4uY2Y2YTFjNDAzZjJm
MGI2YzY5ZmNmM2I2YmVlNzJjZDFjZTY4NTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxl
U2hlZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVz
ZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICBVc2Vy
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxT
dHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDog
bV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX2FsbG93
bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggY2U3MWM2Mzg2OGYyNjI3OWM4NmVjZmRjYzZhMWQyODdm
ODhmOTJhNy4uMTRkMGM1ZjVhNTEyMDk5NzM1ZDg1MDg4NzUxMWFlZmY1MmU2OWY0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtMTE2LDgg
KzExNiw4IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRDb250ZW50c1NpemUoY29u
c3QgSW50U2l6ZSYgY29udGVudFNpemUpCiAKIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpz
ZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBPcHRpb25h
bDxkb3VibGU+JiYgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPGRvdWJsZT4mJiBtaW5pbXVtRWZmZWN0
aXZlRGV2aWNlV2lkdGgpCiB7Ci0gICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0gc2NhbGVGYWN0
b3IudmFsdWVPcihtX2xheW91dFNpemVTY2FsZUZhY3Rvcik7Ci0gICAgZG91YmxlIG5ld0VmZmVj
dGl2ZVdpZHRoID0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLnZhbHVlT3IobV9taW5pbXVt
RWZmZWN0aXZlRGV2aWNlV2lkdGgpOworICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNjYWxl
RmFjdG9yLnZhbHVlX29yKG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKTsKKyAgICBkb3VibGUgbmV3
RWZmZWN0aXZlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgudmFsdWVfb3IobV9t
aW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwogICAgIGlmIChtX3ZpZXdMYXlvdXRTaXplID09
IHZpZXdMYXlvdXRTaXplICYmIG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9yID09IG5ld1NjYWxlRmFj
dG9yICYmIG5ld0VmZmVjdGl2ZVdpZHRoID09IG1fbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5oCmluZGV4IDZkZjQwZWJhNTI0MTRmNWVmZTU3N2U5MDcxYWJjZWJmNTRi
NDMzNGMuLmM0NDY3OTNmOGQ3YzE3MjQ0NDZlZjg5YzdkMGI1MmQ5ODZkZmM1MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaApAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlld0xheW91dFNpemU7IH0KIAogICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWluaW11
bUxheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplOyB9Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmLCBP
cHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPGRv
dWJsZT4mJiBlZmZlY3RpdmVXaWR0aCA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmLCBPcHRpb25hbDxkb3Vi
bGU+JiYgc2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4mJiBlZmZl
Y3RpdmVXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBjb25zdCBPcHRpb25TZXQ8RGlzYWJs
ZWRBZGFwdGF0aW9ucz4mIGRpc2FibGVkQWRhcHRhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Rp
c2FibGVkQWRhcHRhdGlvbnM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldERpc2FibGVk
QWRhcHRhdGlvbnMoY29uc3QgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDhjMGE0MmM4NzMzNTUyZjdlZWFm
Mzg1OTZlZGZmMWI1YjJlZTdlYjUuLjUyOWY5OTY0MTBmYWNhZTYxNGQ5OGNhYzMyZjQzMjkyOTA4
MTA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCkBAIC0xMzMsNyAr
MTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYgZmVh
dHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
IHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAieWVzIikpCiAgICAgICAg
IG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAgICBudW1lcmljVmFsdWUgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOworICAg
ICAgICBudW1lcmljVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KHZhbHVlKS52YWx1ZV9vcigwKTsKIAogICAgIC8vIFdlIHRyZWF0IGtleSBvZiAicmVzaXphYmxl
IiBoZXJlIGFzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSByYXRoZXIgdGhhbiBzZXR0aW5nIHJlc2l6
ZWFibGUgdG8gdHJ1ZS4KICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBGaXJlZm94LCBi
dXQgY291bGQgYWxzbyBiZSBoYW5kbGVkIGF0IGFub3RoZXIgbGV2ZWwuCkBAIC0xODUsOCArMTg1
LDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcmIGRp
YWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy5sb2NhdGlvbkJhclZp
c2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxvYXQg
d2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2Ny
ZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQgaGVyZSBj
YW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKLSAgICBmbG9hdCBoZWlnaHQg
PSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVlbkF2
YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUg
ZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IHdpZHRoID0gZmxv
YXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWlsYWJs
ZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBm
cmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0RmVh
dHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVj
dC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFt
ZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0aDsK
ICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xOTQsMTYgKzE5NCwxNiBAQCBXaW5k
b3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhdHVy
ZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9hdEZlYXR1cmUoZmVhdHVy
ZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2YWls
YWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1cmUo
ZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2NyZWVu
QXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJlKGZl
YXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVPcih0cnVlKSkgeworICAgIGlmIChib29sRmVhdHVy
ZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlmICgh
ZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVSZWN0
LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAgICAg
ICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZhaWxh
YmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkgLyAy
OwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAicmVzaXphYmxlIikudmFsdWVPcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xsYmFy
c1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlT3IodHJ1
ZSk7Ci0gICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVz
TWFwLCAic3RhdHVzIikudmFsdWVPcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxlID0g
Ym9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7Cisg
ICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwg
InNjcm9sbCIpLnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUg
PSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsKIAog
ICAgIHJldHVybiBmZWF0dXJlczsKIH0KQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVzLCBj
b25zdCBjaGFyKgogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAgICAgaWYg
KGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgdmFsdWUgPSBpdC0+dmFsdWU7
CiAgICAgcmV0dXJuIHZhbHVlLmlzTnVsbCgpCkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBzdGF0aWMg
T3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVh
dHVyZXMsIGNvbnN0IGNoYQogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAg
ICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFRoZSB0b0Rv
dWJsZSBmdW5jdGlvbiBkb2VzIG5vdCBvZmZlciBhIHdheSB0byB0ZWxsICIwcSIgZnJvbSBzdHJp
bmcgd2l0aCBubyBkaWdpdHMgaW4gaXQ6IEJvdGgKICAgICAvLyByZXR1cm4gdGhlIG51bWJlciAw
IGFuZCBmYWxzZSBmb3Igb2suIEJ1dCAiMHEiIHNob3VsZCB5aWVsZCB0aGUgbWluaW11bSByYXRo
ZXIgdGhhbiB0aGUgZGVmYXVsdC4KICAgICBib29sIG9rOwogICAgIGRvdWJsZSBwYXJzZWROdW1i
ZXIgPSBpdC0+dmFsdWUudG9Eb3VibGUoJm9rKTsKICAgICBpZiAoKCFwYXJzZWROdW1iZXIgJiYg
IW9rKSB8fCBzdGQ6OmlzbmFuKHBhcnNlZE51bWJlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHBhcnNlZE51bWJl
ciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAgICByZXR1cm4gbWluOwogICAgIGlmIChwYXJz
ZWROdW1iZXIgPiBtYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Bl
cmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9QZXJm
b3JtYW5jZUxvZ2dpbmdDb2NvYS5tbQppbmRleCAyMTExNTczMmY1NDZlMGViMWQ4MjcxMDE0YzE1
NjcxYTA4MmMzODM3Li43ZDMyMzllZDcyMGUxNmU5ZmMyNGY3NWY2YzYzYjcwOWE3OGZlZDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1BlcmZvcm1hbmNlTG9nZ2luZ0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dnaW5n
Q29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1hbmNl
TG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKQogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3Qg
Y291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0
YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3QpICZ2
bUluZm8sICZjb3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHZtSW5mby5waHlzX2Zvb3RwcmludDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQppbmRleCA5YmM2ZDI5
NzdlZjkxMjM4ZWZhMDE1YzZjZGMzODMxNTBhYThjMzYxLi5iN2Y4NDQ3ZTlmZWJkODYwODU0ZWQz
NTk3MzgzNzdmZDhkNzA4NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQpAQCAtMjcyLDggKzI3Miw4IEBAIHZvaWQg
UmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0TWVtb3J5RGF0YShKU0M6OlZNKiB2
bSwgUmVzb3VyY2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3VycmVu
dEdDT3duZWRFeHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0g
ZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50
aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSkpOwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50aW1l
c3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCku
dmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkp
OworICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2
bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVfb3Io
U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBk
YXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAu
ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29uZHMo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4
IDAxNzZiNGQzNTgzMDEzOWQ4MDQ5ZjRhMzAxMDhkYWFlMzE5ZGQ1OGEuLjZhZDZiMjM3NzdlYTYy
ZmFlMDc4ZjRmOGE4MzVkMmM5NmNlNjRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyLCBDb250ZW50U2VjdXJpCiAgICAgICAgIG1faGFzQVBJUG9saWN5ID0gdHJ1ZTsKICAgICB9
CiAKLSAgICBtX2NhY2hlZFJlc3BvbnNlSGVhZGVycyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2Nh
Y2hlZFJlc3BvbnNlSGVhZGVycyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFJGQzI2MTYsIHNl
Y3Rpb24gNC4yIHNwZWNpZmllcyB0aGF0IGhlYWRlcnMgYXBwZWFyaW5nIG11bHRpcGxlIHRpbWVz
IGNhbgogICAgIC8vIGJlIGNvbWJpbmVkIHdpdGggYSBjb21tYS4gV2FsayB0aGUgaGVhZGVyIHN0
cmluZywgYW5kIHBhcnNlIGVhY2ggY29tbWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5k
ZXggZDdiNzA2NmQyMTRkYTkxN2E5ZTQ3MzQ4NDkxMDQ1YmQ5NzVjYTgxZS4uMTYxNDM0ZWI5MjJm
MjRlMTE4Zjg1MDhhY2NjZjU5ZmFiYmY4MDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAKQEAgLTM3Myw3ICszNzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBh
dXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRAogCiAgICAgLy8g
RW1wdHkgZGlyZWN0aXZlIChlLmcuICI7OzsiKS4gRXhpdCBlYXJseS4KICAgICBpZiAoYnVmZmVy
LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG5hbWVCZWdpbiA9IGJ1ZmZlci5wb3NpdGlvbigpOwog
ICAgIHNraXBXaGlsZTxpc0RpcmVjdGl2ZU5hbWVDaGFyYWN0ZXI+KGJ1ZmZlcik7CkBAIC0zODIs
NyArMzgyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYXV0byBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJzZUQKICAgICBpZiAobmFtZUJlZ2luID09
IGJ1ZmZlci5wb3NpdGlvbigpKSB7CiAgICAgICAgIHNraXBXaGlsZTxpc05vdEFTQ0lJU3BhY2U+
KGJ1ZmZlcik7CiAgICAgICAgIG1fcG9saWN5LnJlcG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZlKFN0
cmluZyhuYW1lQmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gbmFtZUJlZ2luKSk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgYXV0byBuYW1lID0gU3RyaW5nKG5hbWVCZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkg
LSBuYW1lQmVnaW4pOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2VE
CiAgICAgaWYgKCFza2lwRXhhY3RseTxpc0FTQ0lJU3BhY2U+KGJ1ZmZlcikpIHsKICAgICAgICAg
c2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAgICAgbV9wb2xpY3kucmVw
b3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoU3RyaW5nKG5hbWVCZWdpbiwgYnVmZmVyLnBvc2l0aW9u
KCkgLSBuYW1lQmVnaW4pKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBza2lwV2hpbGU8aXNBU0NJSVNwYWNl
PihidWZmZXIpOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2VECiAK
ICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKSB7CiAgICAgICAgIG1fcG9saWN5LnJlcG9ydEludmFs
aWREaXJlY3RpdmVWYWx1ZUNoYXJhY3RlcihuYW1lLCBTdHJpbmcodmFsdWVCZWdpbiwgYnVmZmVy
LmVuZCgpIC0gdmFsdWVCZWdpbikpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFRoZSBkaXJlY3RpdmUt
dmFsdWUgbWF5IGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAppbmRleCBiYzk4
MmJlM2I2YTEzMTgxZjIzZjhjZTMwNzI3ZjQ3Y2JjY2NhZGFhLi5mM2JiMWE3YmI5ZDNiMjkzMjQz
NmIzYzFjOWVlNTNjYjIyM2JkOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaApAQCAt
OTEsMTYgKzkxLDE2IEBAIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycz4gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4gaGVhZGVyc1NpemU7CiAgICAgaWYg
KCFoZWFkZXJzU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6
ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaGVhZGVyOwogICAgICAgICBkZWNv
ZGVyID4+IGhlYWRlcjsKICAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
T3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZT4gaGVhZGVyVHlwZTsKICAg
ICAgICAgZGVjb2RlciA+PiBoZWFkZXJUeXBlOwogICAgICAgICBpZiAoIWhlYWRlclR5cGUpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaGVhZGVycy5tX2hlYWRlcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KFdURk1vdmUoKmhlYWRlciksIFdURk1vdmUoKmhlYWRlclR5cGUpKSk7CiAgICAgfQogICAgIGhl
YWRlcnMubV9oZWFkZXJzLnNocmlua1RvRml0KCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgT3B0aW9u
YWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWQKICAgICBPcHRpb25hbDxpbnQ+IGh0dHBTdGF0dXNDb2RlOwogICAg
IGRlY29kZXIgPj4gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFodHRwU3RhdHVzQ29kZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBoZWFkZXJzLm1faHR0cFN0YXR1c0NvZGUgPSAqaHR0cFN0YXR1c0NvZGU7CiAKICAgICBy
ZXR1cm4gaGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggNmEzMzZiNWEzZTE2MmIz
YzIxZmEyNTk2OTM1NjVlNzI0NTQzYmVjOC4uYjg3ZDg1YWZkMTM3NTQ5NDM3NDU2ZmRhYzM0Y2Ji
NjkzMDJlNTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTIwMSwxMCArMjAxLDEwIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdDo6cGFyc2UoU3RyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3VyY2U+IENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlU291cmNlKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKGJ1ZmZlciwgIidub25lJyIp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgU291cmNlIHNvdXJjZTsKIApAQCAtMjQwLDcgKzI0MCw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgIC8vICAgICBeCiAgICAgICAgIGF1dG8gaG9zdCA9IHBh
cnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBidWZmZXIucG9zaXRpb24o
KSB9KTsKICAgICAgICAgaWYgKCFob3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc291cmNlLmhv
c3QgPSBXVEZNb3ZlKCpob3N0KTsKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTI1MSwxMSAr
MjUxLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgIC8vICAgICBeICAgICAg
ICAgICAgXiAgICBeCiAgICAgICAgIGF1dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5n
QnVmZmVyIHsgYmVnaW5Ib3N0LCBidWZmZXIucG9zaXRpb24oKSB9KTsKICAgICAgICAgaWYgKCFo
b3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBwYXRoID0gcGFyc2VQYXRoKGJ1ZmZlcik7
CiAgICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNvdXJjZS5ob3N0ID0g
V1RGTW92ZSgqaG9zdCk7CiAgICAgICAgIHNvdXJjZS5wYXRoID0gV1RGTW92ZSgqcGF0aCk7CkBA
IC0yNjgsNyArMjY4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9u
YWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6U291cmMKICAgICAgICAgICAgIC8v
ICAgICAgIF4KICAgICAgICAgICAgIGF1dG8gc2NoZW1lID0gcGFyc2VTY2hlbWUoU3RyaW5nUGFy
c2luZ0J1ZmZlciB7IGJlZ2luLCBidWZmZXIucG9zaXRpb24oKSB9KTsKICAgICAgICAgICAgIGlm
ICghc2NoZW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc291cmNlLnNjaGVt
ZSA9IFdURk1vdmUoKnNjaGVtZSk7CiAgICAgICAgICAgICByZXR1cm4gc291cmNlOwpAQCAtMjgy
LDkgKzI4Miw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgICAgICAgICAgfHwg
IXNraXBFeGFjdGx5KGJ1ZmZlciwgJzonKQogICAgICAgICAgICAgICAgIHx8ICFza2lwRXhhY3Rs
eShidWZmZXIsICcvJykKICAgICAgICAgICAgICAgICB8fCAhc2tpcEV4YWN0bHkoYnVmZmVyLCAn
LycpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNvdXJjZS5zY2hlbWUgPSBXVEZNb3Zl
KCpzY2hlbWUpOwogCkBAIC0zMDQsMTkgKzMwNCwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3Vy
YwogICAgICAgICAvLyBzY2hlbWU6Ly9ob3N0L3BhdGggfHwgc2NoZW1lOi8vaG9zdDpwb3J0L3Bh
dGgKICAgICAgICAgLy8gICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgIF4K
ICAgICAgICAgaWYgKGJ1ZmZlci5wb3NpdGlvbigpID09IGJlZ2luSG9zdCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIGJlZ2luUGF0aCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIH0KIAogICAgIGF1
dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBiZWdp
blBvcnQgPyBiZWdpblBvcnQgOiBiZWdpblBhdGggfSk7CiAgICAgaWYgKCFob3N0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKGJlZ2luUG9ydCkgewogICAgICAgICBhdXRvIHBvcnQgPSBwYXJzZVBvcnQoU3RyaW5n
UGFyc2luZ0J1ZmZlciB7IGJlZ2luUG9ydCwgYmVnaW5QYXRoIH0pOwogICAgICAgICBpZiAoIXBv
cnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzb3VyY2UucG9ydCA9IFdURk1vdmUoKnBvcnQpOwog
ICAgIH0KQEAgLTMyNCw3ICszMjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3VyYwogICAgIGlm
IChiZWdpblBhdGggIT0gYnVmZmVyLmVuZCgpKSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IHBhcnNl
UGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5QYXRoLCBidWZmZXIuZW5kKCkgfSk7CiAg
ICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNvdXJjZS5wYXRoID0gV1RG
TW92ZSgqcGF0aCk7CiAgICAgfQpAQCAtMzQxLDE3ICszNDEsMTcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXMKICAgICBBU1NFUlQoYnVmZmVyLnBvc2l0aW9uKCkgPD0gYnVmZmVyLmVuZCgpKTsK
IAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW4gPSBidWZmZXIu
cG9zaXRpb24oKTsKIAogICAgIGlmICghc2tpcEV4YWN0bHk8aXNBU0NJSUFscGhhPihidWZmZXIp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgc2tpcFdoaWxlPGlzU2NoZW1lQ29udGludWF0aW9uQ2hhcmFjdGVyPihidWZm
ZXIpOwogCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTdHJpbmco
YmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW4pOwogfQpAQCAtMzY1LDcgKzM2NSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigpIDw9
IGJ1ZmZlci5lbmQoKSk7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBIb3N0
IGhvc3Q7CiAKQEAgLTM3NiwxOSArMzc2LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+CiAg
ICAgICAgICAgICByZXR1cm4gaG9zdDsKIAogICAgICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZl
ciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaG9zdEJlZ2luID0gYnVmZmVy
LnBvc2l0aW9uKCk7CiAKICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmco
KSkgewogICAgICAgICBpZiAoIXNraXBFeGFjdGx5PGlzSG9zdENoYXJhY3Rlcj4oYnVmZmVyKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHNraXBXaGlsZTxpc0hvc3RDaGFyYWN0ZXI+KGJ1ZmZlcik7
CiAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkgJiYgIXNraXBF
eGFjdGx5KGJ1ZmZlciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVChidWZm
ZXIuYXRFbmQoKSk7CkBAIC00MjMsNyArNDIzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9ydD4K
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlci5hdEVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSAmJiAq
YnVmZmVyID09ICcqJykgewogICAgICAgICBQb3J0IHBvcnQ7CkBAIC00MzUsMTIgKzQzNSwxMiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIHNraXBXaGlsZTxpc0FTQ0lJRGlnaXQ+KGJ1
ZmZlcik7CiAgICAgCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW47Ci0gICAgYXV0byBwb3J0SW50ZWdl
ciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oeyBiZWdpbiwgbGVuZ3RoIH0pLnZhbHVlT3IoMCk7
CisgICAgYXV0byBwb3J0SW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oeyBiZWdpbiwg
bGVuZ3RoIH0pLnZhbHVlX29yKDApOwogICAgIGlmICghcG9ydEludGVnZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQ
b3J0IHBvcnQ7CiAgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQ0OTA3ZjkxNDJiM2QzMzM3
MGY0NzA1N2YxMGI0OWM1MDM4MTkzZmMuLmI2YTljMzZkMTJlYmRkOTYwYWM2NzcwOWYwZDE3NjRj
MjVlZjhjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9s
bGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0
ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlmIChk
cmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29w
eTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IDJmMDY1NTgz
NTAzNDIzZDVkZDI1ZDc4Mzg4N2JjMmUwZmE0YWM3ODcuLmY5YTQzMGExZGJkZTVkYmYzZDBhYWMx
ODBkNWE0ZjBmN2FmMmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2
ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRs
ZXJJT1MubW0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVu
dChXZWJFdmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM+IHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRo
cmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
ckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0
dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBlbHNlIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2U6OkNoYW5nZWQgfHwgd2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2U6OkNoYW5nZWQpIHsKICAgICAgICAgaWYgKG1fd2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGUgJiYgKm1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPT0gV2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU6Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcHJvY2Vzc2luZ1N0ZXBzID0geyBXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNo
IH07CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0U2VsZWN0aW9u
QXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFAKIHZvaWQgRXZl
bnRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Nyb2xsKCkKIHsKICAgICBtX2lzQXV0b3Nj
cm9sbGluZyA9IGZhbHNlOwotICAgIG1faW5pdGlhbFRhcmdldEF1dG9zY3JvbGxQb3NpdGlvbklu
VW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9pbml0
aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRl
cyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdG9wQXV0b3Nj
cm9sbFRpbWVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgv
UmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAppbmRleCAwMmU1ZDQ4OWNhYjQzZjgzOTMzM2Q0
OWJkMjRhNTk2OTI5ODk0N2MzLi5mZTFkZjZmNjkxYjlkMTRkYjkzYzY1YmViM2M3NzFhNGRiOTU2
Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VU
aHJlYWRMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJjZVVz
YWdlVGhyZWFkTGludXguY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZXNvdXJjZVVzYWdl
VGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0
YSYgZGEKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgdGhyZWFkSWRlbnRpZmll
ciA9IGtub3duV29ya2VyVGhyZWFkcy5nZXQoaWQpOwogICAgICAgICAgICAgYm9vbCBpc1dvcmtl
clRocmVhZCA9ICF0aHJlYWRJZGVudGlmaWVyLmlzRW1wdHkoKTsKLSAgICAgICAgICAgIFN0cmlu
ZyBuYW1lID0gaXQudmFsdWUubmFtZS52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpOworICAgICAgICAg
ICAgU3RyaW5nIG5hbWUgPSBpdC52YWx1ZS5uYW1lLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpOwog
ICAgICAgICAgICAgVGhyZWFkQ1BVSW5mbzo6VHlwZSB0eXBlID0gKGlzV29ya2VyVGhyZWFkIHx8
IGlzV2ViS2l0VGhyZWFkKGlkLCBuYW1lKSkgPyBUaHJlYWRDUFVJbmZvOjpUeXBlOjpXZWJLaXQg
OiBUaHJlYWRDUFVJbmZvOjpUeXBlOjpVbmtub3duOwogICAgICAgICAgICAgZGF0YS5jcHVUaHJl
YWRzLmFwcGVuZChUaHJlYWRDUFVJbmZvIHsgbmFtZSwgdGhyZWFkSWRlbnRpZmllciwgY3B1VXNh
Z2UsIHR5cGUgfSk7CiAgICAgICAgIH0KQEAgLTMxNSw4ICszMTUsOCBAQCB2b2lkIFJlc291cmNl
VXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdE1lbW9yeURhdGEoSlNDOjpWTSogdm0sIFJlc291
cmNlVXNhZ2VEYQogCiAgICAgZGF0YS50b3RhbEV4dGVybmFsU2l6ZSA9IGN1cnJlbnRHQ093bmVk
RXh0ZXJuYWw7CiAKLSAgICBkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEudGlt
ZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgp
LnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
KTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsg
dm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3Io
U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBk
YXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAu
ZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29uZHMo
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1l
T2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rp
dml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IGM0MGUzMDFhYmU4MWYwMWNjMjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIuLjU4NjQ5MzE5NjI2
YjBmY2ZlMmEyN2RlNWMyNmZiYWM4M2Y1ZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERyYWdB
cHBsaWNhdGlvbkZsYWdzOjpJc01vZGFsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgbWF5Q29udGFpblVSTDsK
ICAgICBpZiAoY2FuTG9hZERhdGFGcm9tRHJhZ2dpbmdQYXN0ZWJvYXJkKCkpCkBAIC03NiwxMiAr
NzYsMTIgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBtYXlDb250YWluVVJMID0g
ZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250
YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1Byb21pc2UoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9k
b2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3MoKS5jb250YWluc0FsbCh7IERy
YWdBcHBsaWNhdGlvbkZsYWdzOjpIYXNBdHRhY2hlZFNoZWV0LCBEcmFnQXBwbGljYXRpb25GbGFn
czo6SXNTb3VyY2UgfSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkNvcHk7CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXplKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4NjQ2NWY4MDVlMjA1
MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5YTQyNDdkLi5kMDE5NTQzNzQ4YTNkMjU2MTJjNDgzOTA2MTFh
OTNkMmViYzAwMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQoTlNF
dmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHBy
b2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
clNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2Nr
aW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCB8fCB3aGVlbEV2ZW50Lm1vbWVudHVtUGhh
c2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCkgewotICAgICAgICBpZiAo
bV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5nKCkg
JiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZS52YWx1ZU9yKFdoZWVsU2Nyb2xsR2VzdHVyZVN0
YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5nKQor
ICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5v
bkJsb2NraW5nKCkgJiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZS52YWx1ZV9vcihXaGVlbFNj
cm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpO
b25CbG9ja2luZykKICAgICAgICAgICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFBy
b2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwczo6TWFpblRocmVhZEZvck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogICAg
IH0KICAgICByZXR1cm4gaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBwcm9jZXNzaW5nU3Rl
cHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9wbGF5c3RhdGlvbi9SZXNvdXJj
ZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9wbGF5c3Rh
dGlvbi9SZXNvdXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwCmluZGV4IGUwOGJlMzgxNTI4
NWM1MzdiN2UyYTc1M2M4ZTgxNDk0NWE2Mjg5NDIuLmRiOTU4MGRlMmU3NTlhMWUwMTliZGM1MjU1
MDA5NWEwM2NhNDc4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcGxheXN0YXRp
b24vUmVzb3VyY2VVc2FnZVRocmVhZFBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3BsYXlzdGF0aW9uL1Jlc291cmNlVXNhZ2VUaHJlYWRQbGF5U3RhdGlvbi5jcHAKQEAg
LTY5LDggKzY5LDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RN
ZW1vcnlEYXRhKEpTQzo6Vk0qIHZtLCBSZXNvdXJjZVVzYWdlRGEKIAogICAgIGRhdGEudG90YWxF
eHRlcm5hbFNpemUgPSBjdXJyZW50R0NPd25lZEV4dGVybmFsOwogCi0gICAgZGF0YS50aW1lT2ZO
ZXh0RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RnVsbENv
bGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNr
KCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24g
PSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVV
bnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50
aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJl
KCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCA5NmYxZmIxZTVhMmJiNjQ1ZmYxMjczMzczMjhiN2RiNzAxZmNhNTk1Li4xMzlmNGU3NjUx
ZGM4ODExNzA0ZWMzNGVmNDZiOTMxNGY4MWNjZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0RnJh
bWVTY3JvbGxpbmdOb2RlU3RhdGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJCiAgICAgaWYgKGF1dG8g
dmlzdWFsT3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LnZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0
KCkpCiAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0
U2l6ZShGbG9hdFNpemUodmlzdWFsT3ZlcnJpZGVSZWN0LnZhbHVlKCkuc2l6ZSgpKSk7CiAgICAg
ZWxzZQotICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0T3ZlcnJpZGVWaXN1YWxWaWV3cG9y
dFNpemUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldE92ZXJy
aWRlVmlzdWFsVmlld3BvcnRTaXplKHN0ZDo6bnVsbG9wdCk7CiAKICAgICBmcmFtZVNjcm9sbGlu
Z05vZGUuc2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZShmcmFtZVZpZXcuZml4
ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5kZXgg
MzdiNjYzN2I0ODYwZDk4Y2UzODA2OGY1MWIzMWZlY2U2OGFjNmQxNS4uZThlMTY1ZWRlMzM3NGMz
YzVkYmM1M2Y5NDkxZjg5MTM4N2NjNjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3
ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiB7CiAgICAgTGF5b3V0VHlwZSBkaWZmZXJlbmNl
ID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAgaWYg
KCFkaWZmZXJlbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgc2VhcmNoU3RhcnRPZmZzZXQgPSAwOwog
ICAgIHNpemVfdCBpdGVyYXRpb24gPSAxOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBPcHRp
b25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVz
dGluYXRpb24oY29uCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgU2l6ZVR5cGUsIHR5cGVuYW1lIExheW91dFR5cGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zm
c2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oCmluZGV4IGQxNjBjOTViYzQzZmY5ODFjMGE0N2JmMzYwM2M0MDA2ZGNlZTMxY2Mu
LjFlY2ZhZDE2ZTEzOGUwZmJjNTkxOGZkMjJiN2FiZGY2NDdiNjczNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBA
IC03Myw3ICs3Myw3IEBAIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gT3V0cHV0VHlwZSBjb252ZXJ0VW5pdHMoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNp
emVUeXBlPgotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+
IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZpZXdw
b3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5
LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBp
bmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxV
bml0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29u
c3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogfTsKIAogdXNpbmcg
TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExheW91
dFVuaXQsIExheW91dFJlY3Q+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmNwcAppbmRleCBlNmFmOGYzOTY5M2ZjN2JkNjhhY2ZiMDdkNDY5OWFmZjZm
ZTRlNTRlLi43NDcxNDgyY2Y0YTNlMDUzMzg2YmIwOGU4N2I1YjM2YTVlYzM2OWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtODcs
NyArODcsNyBAQCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gU2Nyb2xsaW5n
VHJlZTo6Y29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKAogI2lmIEVOQUJMRShXSEVFTF9FVkVO
VF9SRUdJT05TKQogICAgIGF1dG8gZXZlbnRMaXN0ZW5lclR5cGVzID0gZXZlbnRMaXN0ZW5lclJl
Z2lvblR5cGVzRm9yUG9pbnQocG9zaXRpb24pOwogICAgIGlmIChldmVudExpc3RlbmVyVHlwZXMu
Y29udGFpbnMoRXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBhc3NpdmVXaGVlbCkpIHsKLSAg
ICAgICAgaWYgKG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZS52YWx1ZU9yKFdoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2Nr
aW5nKQorICAgICAgICBpZiAobV90cmVlU3RhdGUuZ2VzdHVyZVN0YXRlLnZhbHVlX29yKFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6
Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhy
ZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAKICAgICAgICAgcmV0dXJuIHsg
V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxF
dmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRj
aCB9OwpAQCAtMTEwLDcgKzExMCw3IEBAIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzPiBTY3JvbGxpbmdUcmVlOjpkZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luCiAgICAgICAg
IHJldHVybiBsYXRjaGVkTm9kZUFuZFN0ZXBzLT5wcm9jZXNzaW5nU3RlcHM7CiAgICAgfQogICAg
IGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgfHwgd2hlZWxFdmVudC5pc05vbkdlc3R1
cmVFdmVudCgpKQotICAgICAgICBtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0gY29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKHdo
ZWVsRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDU0MGM4
MWRiYjliMDhhN2I5OTNmYWZiMGZlMTZlMmIyMTRmYjI5YzYuLjIyMDNjZTJmMzBiMmVjZTZmNTJi
ZmJjNTNjNDY5YmZkNzVlN2RlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3Bw
CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZTo6
c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0CiAKIEZsb2F0UmVjdCBT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2Fs
ZSwgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGZpeGVkQmVoYXZpb3IpIGNvbnN0CiB7
Ci0gICAgRmxvYXRTaXplIHZpc3VhbFZpZXdwb3J0U2l6ZSA9IG1fb3ZlcnJpZGVWaXN1YWxWaWV3
cG9ydFNpemUudmFsdWVPcihzY3JvbGxhYmxlQXJlYVNpemUoKSk7CisgICAgRmxvYXRTaXplIHZp
c3VhbFZpZXdwb3J0U2l6ZSA9IG1fb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUudmFsdWVfb3Io
c2Nyb2xsYWJsZUFyZWFTaXplKCkpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJlY3Qo
dmlzaWJsZUNvbnRlbnRPcmlnaW4sIHZpc3VhbFZpZXdwb3J0U2l6ZSk7CiAgICAgTGF5b3V0UmVj
dCB2aXN1YWxWaWV3cG9ydChGcmFtZVZpZXc6OnZpc2libGVEb2N1bWVudFJlY3QodmlzaWJsZUNv
bnRlbnRSZWN0LCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCksIHRvdGFsQ29udGVudHNT
aXplKCksIHNjYWxlKSk7CiAgICAgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydChtX2xheW91dFZp
ZXdwb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMGM3ZjRhNjBh
ZTUwYzMyYmNlYjZiOTUwOTk4NGFjMjc0ZjNmZjUwZi4uNGFkZDlmYjNmODdlOTZjOTYwYmExMGNh
NzdjMjc1NDg0MjkxOGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAg
LTU5LDcgKzU5LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpyZWNl
aXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KIE9wdGlvbmFsPFNjcm9sbGlu
Z1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3RlcHM+
IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nRGF0YUZvckV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBhbGxvd0xhdGNoaW5nKSBj
b25zdAogewogICAgIGlmICghYWxsb3dMYXRjaGluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExvY2tlciBsb2NrZXIg
eyBtX2xhdGNoZWROb2RlTG9jayB9OwogCkBAIC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPFNjcm9s
bGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3Rl
cHM+IFNjcm9sCiAgICAgICAgIHJldHVybiBtX2xhdGNoZWROb2RlQW5kU3RlcHM7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xs
ZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdApAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25hbDxTY3Jv
bGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2Rl
SUQoKSBjb25zdAogICAgIGlmIChtX2xhdGNoZWROb2RlQW5kU3RlcHMpCiAgICAgICAgIHJldHVy
biBtX2xhdGNoZWROb2RlQW5kU3RlcHMtPnNjcm9sbGluZ05vZGVJRDsKIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8U2Ny
b2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdT
dGVwcz4gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hlZE5vZGVBbmRTdGVw
cygpIGNvbnN0CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdD
b250cm9sbGVyOjpub2RlRGlkSGFuZGxlRXZlbnQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGkKICAg
ICAgICAgaWYgKCF3aGVlbEV2ZW50LmlzR2VzdHVyZUNvbnRpbnVhdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1cnJl
bnRHZXN0dXJlLnZhbHVlT3IoT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHsg
fSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9s
bGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM6OlNjcm9sbGluZ1RocmVhZCkpCisgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1
cnJlbnRHZXN0dXJlLnZhbHVlX29yKE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBz
PiB7IH0pLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JT
Y3JvbGxpbmcpICYmIHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMDQwMTVjNzE4NGRiMzI5YTdi
MmUxNTJmZTA3ZDIzNzI4NTQ0MWRkMC4uMmUwZTgzNmU2ZTQ5NWU5MjgyMTAwZDJkNjgwNzYyOWU4
NjA3Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBsYXRm
b3JtV2hlZWxFCiAKICAgICBib29sIGFsbG93TGF0Y2hpbmcgPSBmYWxzZTsKICAgICBPcHRpb25T
ZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzOwotICAgIGlmIChn
ZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09
IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykgeworICAgIGlmIChnZXN0dXJl
U3RhdGUudmFsdWVfb3IoV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nKSA9PSBXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpIHsKICAgICAgICAgYWxsb3dMYXRjaGlu
ZyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWlu
VGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAgICAgfQpAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp3aWxsU3RhcnRSZW5kZXJpbmdV
cGRhdGUoKQogU2Vjb25kcyBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6Om1heEFsbG93YWJsZVJlbmRl
cmluZ1VwZGF0ZUR1cmF0aW9uRm9yU3luY2hyb25pemF0aW9uKCkKIHsKICAgICBjb25zdGV4cHIg
ZG91YmxlIGFsbG93YWJsZUZyYW1lRnJhY3Rpb24gPSAwLjU7Ci0gICAgYXV0byBkaXNwbGF5RlBT
ID0gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpLnZhbHVlT3IoNjApOworICAgIGF1dG8gZGlzcGxh
eUZQUyA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKS52YWx1ZV9vcig2MCk7CiAgICAgU2Vjb25k
cyBmcmFtZUR1cmF0aW9uID0gMV9zIC8gKGRvdWJsZSlkaXNwbGF5RlBTOwogICAgIHJldHVybiBh
bGxvd2FibGVGcmFtZUZyYWN0aW9uICogZnJhbWVEdXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDc1ZDczZWY0ODQ3ZDk2NDEyNDAxMGYyZDRmNDc3
ZTg3ZjcyMThkN2QuLjdhMzczMjBlN2QyZGQ4MDk4NWRmMjRkMzY1Nzc5ZGFlZWQxMTE1OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtODMsNyArODMsNyBAQCBT
ZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6YW5pbWF0aW9uRHVyYXRpb24o
KQogCiBib29sIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21lbnR1
bVNjcm9sbGluZygpCiB7Ci0gICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBX
VEY6Om51bGxvcHQpCisgICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBzdGQ6
Om51bGxvcHQpCiAgICAgICAgIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9IG1faW5pdGlh
bFNjcm9sbE9mZnNldCAhPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgfHwgbV9pbml0aWFsVmVs
b2NpdHkuYXJlYSgpOwogICAgIHJldHVybiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcudmFs
dWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9s
bGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNw
cAppbmRleCAzMmY1YjNhZTQxNTRhMzdmZDhjMjI3OWNhMDE1OWI1NjdjYjY5NDViLi5kNTA4YjZm
OWM4ZDMzODAwYmUzNTZjMTNiMDc2YzhmYWVkYTNlMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgY29uc3Qg
ZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKIE9wdGlvbmFs
PERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKLSAgICAvLyBGSVhNRTogVG8gbWF0Y2ggdGhlIG1hY09TIGJlaGF2
aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBGSVhNRTogVG8gbWF0
Y2ggdGhlIG1hY09TIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIHN0ZDo6bnVsbG9wdC4KICAg
ICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9y
IHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCiAgICAgLy8gSWYgdGhpcyBjYW4gYmUg
ZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1
bGxlZCBpbnRvCiAgICAgLy8gV2ViQ29yZSBpdHNlbGYuCiAgICAgaWYgKGRyYWdEYXRhLmNvbnRh
aW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbjo6Q29weTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJh
Z0RhdGEmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vUmVzb3VyY2VVc2Fn
ZVRocmVhZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhy
ZWFkV2luLmNwcAppbmRleCA2Y2NkMTZjOTdkMGNmZTFlNDkyNDM2OWZmMWE0ZDU1ZWYzYjU3NjEx
Li5mNzc0MWFmMDdkYmZiZGIyODA5MjgwMzc5ZWQ5ZGZiZTI0ZDM0YzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcApAQCAtMTMx
LDggKzEzMSw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0TWVt
b3J5RGF0YShKU0M6OlZNKiB2bSwgUmVzb3VyY2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFsRXh0
ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlD
YWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xs
ZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygp
LT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0g
ZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50
aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGlt
ZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgp
LnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0YWJs
ZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVl
LmgKaW5kZXggMmE2NTAyM2E5MjAzODhhMGMyOThlMzlhNGVkZjE1ODUzMDM3ZGUyZC4uMWQwY2Y0
NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0MDdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTE0NSw5ICsxNDUsOSBAQCBwdWJsaWM6
CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9hYm9y
dGluZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBPcHRpb25hbDxSPiByZXNwb25zZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5UaHJlYWRUYXNrSGFuZGxlcl0o
KSB7CiAgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkVGFza0hhbmRsZXIo
KTsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50VHlwZS5oCmluZGV4IGVlZjhiOTNjYTlhOTUyODIyNGFlYTIzYzQ0NWU4YTQ3
NTVjMjNkYjAuLmQyMjMwMTg0N2EyMDIzNmFjMDhlYjFkMGIzNDVjZWI2NTMxODIyNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBl
OwogICAgICAgICBpZiAoIXR5cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4geyBDb250
ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5o
CmluZGV4IDVmMDk4MDZmMTgzMzMzNzQ3ZmY2ZTkyNDBlMzQ1ZTdhMTBmYzFlZWYuLjg5M2E5NDUw
YTUyM2Q3ZjcyM2ZiYzQ1NjZmNWE1MmRkZjY0NDc4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCkBAIC0xMzQsMzEgKzEzNCwzMSBAQCBPcHRpb25hbDxDb29raWU+IENvb2tpZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29va2llIGNvb2tpZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tp
ZS52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZG9tYWluKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wYXRoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvb2tpZS5jcmVhdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
b2tpZS5leHBpcmVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5odHRwT25s
eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2VjdXJlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvb2tpZS5jb21tZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tp
ZS5jb21tZW50VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wb3J0cykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2FtZVNpdGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBjb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rh
dGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRz
LmNwcAppbmRleCBlZGI1YThkNTIyNjJiYTlmYjdlMTNlOWFjY2Y4ODUwNGVmZjFkMWExLi45Yzg4
MTVkZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAwYjRjNmY2NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHVuc2lnbmVkIGNvdW50RGlnaXRzKFN0cmlu
Z1BhcnNpbmdCdWZmZXIKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxpbnQ+IHBhcnNlSW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4m
IGJ1ZmZlciwgdW5zaWduZWQgbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSkKIHsKICAgICBp
ZiAobWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSA+IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmco
KSB8fCAhbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgZm9yIElTTyA4NjAxLgogCkBAIC0xMTcs
MTAgKzExNywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0
aW9uYWw8aW50PiBwYXJzZUludChTdHJpbmdQYXJzaW5nQnVmZgogICAgIHVuc2lnbmVkIGRpZ2l0
c1JlbWFpbmluZyA9IDA7CiAgICAgd2hpbGUgKGRpZ2l0c1JlbWFpbmluZyA8IG1heGltdW1OdW1i
ZXJPZkRpZ2l0c1RvUGFyc2UpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaW50IGRpZ2l0ID0gKmJ1ZmZlciAtICcwJzsKICAgICAgICAg
aWYgKHZhbHVlID4gKElOVF9NQVggLSBkaWdpdCkgLyAxMCkgLy8gQ2hlY2sgZm9yIG92ZXJmbG93
LgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAxMCArIGRpZ2l0OwogICAgICAg
ICArK2RpZ2l0c1JlbWFpbmluZzsKICAgICAgICAgKytidWZmZXI7CkBAIC0xMzIsNyArMTMyLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGludD4g
cGFyc2VJbnRXaXRoaW5MaW1pdHMoU3RyaW4KIHsKICAgICBhdXRvIHZhbHVlID0gcGFyc2VJbnQo
YnVmZmVyLCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKTsKICAgICBpZiAoISh2YWx1ZSAm
JiAqdmFsdWUgPj0gbWluaW11bVZhbHVlICYmICp2YWx1ZSA8PSBtYXhpbXVtVmFsdWUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTkwLDEyICsxOTAsMTIgQEAgc3RhdGljIGJvb2wg
d2l0aGluSFRNTERhdGVMaW1pdHMoaW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRoRGF5LCBp
bnQgaG91ciwgaW4KIHRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRpYyBPcHRpb25hbDxEYXRlQ29t
cG9uZW50cz4gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdWaWV3IHNvdXJjZSwgRiYmIHBhcnNlRnVu
Y3Rpb24pCiB7CiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVh
ZENoYXJhY3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25h
bDxEYXRlQ29tcG9uZW50cz4gewogICAgICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgICAg
ICBpZiAoIXBhcnNlRnVuY3Rpb24oYnVmZmVyLCBkYXRlKSB8fCAhYnVmZmVyLmF0RW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgfSk7CiB9CkBAIC00OTAsOCArNDkw
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29tcG9uZW50
czo6cGFyc2VUaW1lKFN0cmluZ1BhcnNpbmdCdWYKIAogICAgIG1faG91ciA9ICpob3VyOwogICAg
IG1fbWludXRlID0gKm1pbnV0ZTsKLSAgICBtX3NlY29uZCA9IHNlY29uZC52YWx1ZU9yKDApOwot
ICAgIG1fbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZC52YWx1ZU9yKDApOworICAgIG1fc2Vjb25k
ID0gc2Vjb25kLnZhbHVlX29yKDApOworICAgIG1fbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZC52
YWx1ZV9vcigwKTsKICAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU7CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC01MjQsNyArNTI0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRj4g
c3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBjcmVhdGVGcm9tVGltZU9mZnNldChkb3Vi
bGUKIHsKICAgICBEYXRlQ29tcG9uZW50cyByZXN1bHQ7CiAgICAgaWYgKCFmdW5jdGlvbihyZXN1
bHQsIHRpbWVPZmZzZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaAppbmRleCAw
ZTdhNzUzMTU2NDU0ZGVmNjZlOTc4NWViYTNjMGE5ZDI4NmJhY2ViLi4yM2EzMzg2YmI1ODA2YmFi
ZGM3YTA5OThkNzFlZWJkNzk0YjgwZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oCkBAIC04Myw2NyArODMsNjcgQEAgT3B0
aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycz4gRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVy
czo6ZGVjb2RlKERlY29kZXImIGQKIHsKICAgICBBdG9tU3RyaW5nIHR5cGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEludFJlY3QgYW5jaG9yUmVjdEluUm9vdFZp
ZXc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbmNob3JSZWN0SW5Sb290VmlldykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvY2FsZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBTdHJpbmcgY3VycmVudFZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y3VycmVudFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1ZXM7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdWdnZXN0aW9uVmFsdWVzKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXM7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHN1Z2dlc3Rpb25MYWJlbHM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdWdnZXN0aW9u
TGFiZWxzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBtaW5pbXVtOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWluaW11bSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgbWF4aW11bTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1heGltdW0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHN0ZXA7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGVwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBzdGVwQmFzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0ZXBCYXNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgcmVxdWlyZWQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXF1aXJlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGlzQW5jaG9yRWxlbWVudFJU
TDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQW5jaG9yRWxlbWVudFJUTCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBib29sIHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlRGFy
a0FwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNTZWNvbmRGaWVsZDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhhc1NlY29uZEZpZWxkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzTWlsbGlzZWNv
bmRGaWVsZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc01pbGxpc2Vjb25kRmllbGQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIGFuY2hvclJlY3RJblJvb3RWaWV3LCBX
VEZNb3ZlKGxvY2FsZSksIFdURk1vdmUoY3VycmVudFZhbHVlKSwgV1RGTW92ZShzdWdnZXN0aW9u
VmFsdWVzKSwgV1RGTW92ZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzKSwgV1RGTW92ZShzdWdn
ZXN0aW9uTGFiZWxzKSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcEJhc2UsIHJlcXVpcmVk
LCBpc0FuY2hvckVsZW1lbnRSVEwsIHVzZURhcmtBcHBlYXJhbmNlLCBoYXNTZWNvbmRGaWVsZCwg
aGFzTWlsbGlzZWNvbmRGaWVsZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmlu
ZGV4IGNlMGRmZjJjZmFmM2I1Y2Y1NTA3MGViOTkxYmQ1ZGIxZjJjOGUxZjcuLmQ5Y2M2YWUzYzdi
ZGM3YzNmOTEzN2E4NjYzMjY4NTM2ZDdjMzBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5n
UHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdz
PiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGlu
YXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdURjo6bnVs
bG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3Rv
cmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFn
QXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdE
YXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9
IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBT
dHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
T3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgLy8gVGhpcyBjb25zdHJ1
Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAg
ICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1
Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0gICAg
V0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBX
VEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRh
TWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYg
ZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBz
aXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEo
aW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ltYWdlRXh0cmFjdGlvblJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgKaW5kZXggNzAxOWVlZWEzY2FjNGMwODc1YmM4OTJhMjVj
NzdjN2M4NzkzMzdkNS4uYmY3ZGExMzI5ZjNhM2IwMmFhOTAyZmEyMDg2YmE0NTQxOWE3Zjg3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgK
QEAgLTYzLDEyICs2MywxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbWFn
ZUV4dHJhY3Rpb25UZXh0RGF0YT4gSW1hZ2VFeHRyYWN0aW9uVGV4dERhdAogICAgIE9wdGlvbmFs
PFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVyID4+
IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUoKm5vcm1hbGl6ZWRRdWFkKSB9fTsKIH0KQEAg
LTExNCwxMiArMTE0LDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEltYWdl
RXh0cmFjdGlvbkxpbmVEYXRhPiBJbWFnZUV4dHJhY3Rpb25MaW5lRGF0CiAgICAgT3B0aW9uYWw8
RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFk
OwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8SW1h
Z2VFeHRyYWN0aW9uVGV4dERhdGE+PiBjaGlsZHJlbjsKICAgICBkZWNvZGVyID4+IGNoaWxkcmVu
OwogICAgIGlmICghY2hpbGRyZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqbm9ybWFs
aXplZFF1YWQpLCBXVEZNb3ZlKCpjaGlsZHJlbikgfX07CiB9CkBAIC0xNjEsMTMgKzE2MSwxMyBA
QCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25SZXN1bHQ+
IEltYWdlRXh0cmFjdGlvblJlc3VsdDo6ZAogICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFnZUV4dHJh
Y3Rpb25MaW5lRGF0YT4+IGxpbmVzOwogICAgIGRlY29kZXIgPj4gbGluZXM7CiAgICAgaWYgKCFs
aW5lcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBPcHRpb25hbDxWZWN0
b3I8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz4+IGRhdGFEZXRlY3RvcnM7CiAgICAg
ZGVjb2RlciA+PiBkYXRhRGV0ZWN0b3JzOwogICAgIGlmICghZGF0YURldGVjdG9ycykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAgICAgcmV0dXJuIHt7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCAz
MmFhZjljNWFkZmNiNThjNDZlNmFjNjNiNmFiNzBhYTRjM2U0NWY0Li4wZjU0MGY5MzcyYWFkMTBi
YTk5ZmE3ZmI1ODBjZWY3MGNjNWMzMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAK
QEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIExlbmd0aCBwYXJzZUxlbmd0aChjb25zdCBVQ2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIH0KICAgICBhdXRvIHIgPSBwYXJzZUludGVnZXI8
aW50Pih7IGRhdGEsIGludExlbmd0aCB9KTsKICAgICBpZiAobmV4dCA9PSAnKicpCi0gICAgICAg
IHJldHVybiBMZW5ndGgoci52YWx1ZU9yKDEpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CisgICAg
ICAgIHJldHVybiBMZW5ndGgoci52YWx1ZV9vcigxKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUpOwog
ICAgIGlmIChyKQogICAgICAgICByZXR1cm4gTGVuZ3RoKCpyLCBMZW5ndGhUeXBlOjpGaXhlZCk7
CiAgICAgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAppbmRleCA4NzdmNmU1YTBlZmUzMmFl
N2Q0YzcyN2Q0YTAyM2NlMjU2ZTYzNjBhLi5kNGIwMjlmMjIzOTcyYjczYTdhOTk3ODFkMmNjMTRl
NzIyYWYzNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFs
aXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9u
LmgKQEAgLTM4LDcgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvZ0xldmVsU3RyaW5n
KCk7CiBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJpbmcmIG5h
bWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbExvZ0NoYW5uZWxzVG9BY2N1bXVsYXRl
KCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5
KE9wdGlvbmFsPFN0cmluZz4gPSBXVEY6Om51bGxvcHQpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpu
dWxsb3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0
aWVzRGVjb2RpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxp
dGllc0RlY29kaW5nSW5mby5oCmluZGV4IDE4NjE3NzZiMmViNmFmYzk2MDQ5MWU0OWM2ODIyNGJh
OWM5ZjkzZTMuLjE1NWM5ZDUxZjI2OGQxNGRiYTQ2NjkzYjk5OGMyMDUxMDc0ZTY0NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNEZWNv
ZGluZ0luZm8uaApAQCAtNjQsMTIgKzY0LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
RGVjb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbzo6ZGVjb2RlKERlCiB7
CiAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoZGVjb2Rlcik7
CiAgICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRD
b25maWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbygKICAgICAgICAgV1RGTW92ZSgq
aW5mbyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxp
dGllc0VuY29kaW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmls
aXRpZXNFbmNvZGluZ0luZm8uaAppbmRleCAxMjIwMDYzNTNlNTdmNjY4ODkzYzdlN2QzYjc1YThj
MDU4YTJlOWMzLi45MTU4N2JiMzlhMTRmMDYxMzlmZmQ1MjExNWFkNDFiZDdjM2VkOTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0VuY29kaW5n
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5j
b2RpbmdJbmZvLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGll
c0VuY29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm86OmRlY29kZShEZQog
ewogICAgIGF1dG8gaW5mbyA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVjb2RlKGRlY29kZXIp
OwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGRlY29kZXIgPj4gc3VwcG9ydGVk
Q29uZmlndXJhdGlvbjsKICAgICBpZiAoIXN1cHBvcnRlZENvbmZpZ3VyYXRpb24pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8oCiAgICAgICAgIFdURk1vdmUo
KmluZm8pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmls
aXRpZXNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0lu
Zm8uaAppbmRleCAyMzNhYTQ2NGUyMjc4YzFmMWVmOWFkOWI4MjQ0MWY3Y2JhMzZmMDY3Li43NzE1
YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQwZGZmNzAyMDVlNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApAQCAtNTIsMTcgKzUyLDE3IEBA
IE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBzdXBwb3J0ZWQ7CiAgICAgaWYgKCFzdXBwb3J0ZWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxib29sPiBzbW9vdGg7CiAgICAgZGVjb2RlciA+PiBzbW9vdGg7CiAgICAgaWYgKCFz
bW9vdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwb3dlckVmZmljaWVudDsKICAgICBkZWNv
ZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAgIGlmICghcG93ZXJFZmZpY2llbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4ge3sKICAgICAgICAgKnN1cHBvcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggMmNiYzUxZDU2OWRkNmM5ZTgyNzcxNjVmMThjNDExNGY3
MTYxNWRiMC4uOGM1ZDYxNTk2YjMxZTAzZWEzNWE0ODA1MWIzNjMyYmY5NGVmMmE1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTY0LDcgKzY0LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBuZXh0ID0gc21hbGxlc3ROb2RlR3JlYXRlclRo
YW5Gcm9tKHBvaW50LCB0aGlzLT5yb290KCkpOwogICAgICAgICBpZiAoIW5leHQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIG5leHQtPmRhdGEoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1YjJk
ZDdiYTFlMDM2My4uMjYxMDRmNDNiZGE2MjFmZGIzMTQyMzc4N2EzZGE1OWViYWI2ZDE0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3B0
aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9h
cmRJdGVtSW5mbygpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRlZ3kt
PmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQoKSk7
CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6cGFzdGVi
b2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTc5LDcgKzc5LDcgQEAgT3B0aW9u
YWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8oc2l6
ZV90IGluZGV4KSBjb25zdAogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogI2VuZGlm
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBhZjU0NzE1ZDhh
YzhlNmY4N2M0MWJmYWZlN2ZhYjJmZjYzNjQ4ZDk3Li4wNWM2YWZlNDU3ZmY5ZTkxZGZiMTkyNWUy
NDhhNzc0MWM5YzU2ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0y
MTMsOSArMjEzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBTdHJp
bmcmIHR5cGUpOwogCi0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50
UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9h
cmRGaWxlUmVhZGVyJiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQp
OworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRl
eHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGlj
eTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3k6OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRl
ciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHN0
YXRpYyBib29sIGNhbldyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGYwZDVlYTQw
YzdiYzBjNWE1MDIxMTFkY2ZhODM4ZmE3MzNmZDY5Y2YuLmIxYzdkNDc4ZjM3MWY2Y2NjZDU0YWRl
ZmQ2NzhlYTJkN2E3NjJlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bh
c3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRJdGVtSW5mby5oCkBAIC01NiwxMCArNTYsMTAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9uU2l6
ZT4gUHJlc2VudGF0aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUHJl
c2VudGF0aW9uU2l6ZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2lk
dGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGVpZ2h0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzUsMzEgKzEzNSwzMSBAQCBPcHRpb25hbDxQYXN0
ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgUGFzdGVib2FyZEl0ZW1JbmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVVcGxvYWQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc05vblRleHRUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRhaW5zRmlsZVVSTEFuZEZpbGVV
cGxvYWRDb250ZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlNh
ZmVUeXBlc0J5RmlkZWxpdHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
cHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcAppbmRleCBmN2U5N2My
YTk0NWI3M2U0ODUwNzNiYjczYjJlMWYzZjJjZTU1YWVhLi5iZTA0NjAxNTA1NWE1ZmJkODQ3YTc1
NzMyYzIxNDkwMjVlZWMzZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZWZlcnJlclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQ
b2xpY3kuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBvbGlj
eT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91CiAgICAg
aWYgKCFwb2xpY3kuaXNOdWxsKCkgJiYgcG9saWN5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICAgICAKIE9wdGlvbmFsPFJlZmVycmVyUG9s
aWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZlcnJl
clBvbGljeVNvdXJjZSBzb3VyY2UpCkBAIC04Niw3ICs4Niw3IEBAIE9wdGlvbmFsPFJlZmVycmVy
UG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZl
cnJlclBvCiAgICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVyUG9saWN5VG9rZW4ocG9saWN5U3Ry
aW5nLCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzOjpObyk7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogU3RyaW5nIHJlZmVycmVyUG9saWN5VG9TdHJpbmcoY29uc3QgUmVmZXJy
ZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUmVnaXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lz
dHJhYmxlRG9tYWluLmgKaW5kZXggYTVmYTA3N2QxNjcxOWI4NmFiZGNmOGY5N2ExNjc4ZjM2ZmZk
Nzk0My4uMWI3ZTVkYzEyMzhhZjA0ZmY5ZTkwOWU5YzQxYmQwOTk5Y2QzMmM1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBAIC0xNDcsNyArMTQ3LDcg
QEAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IFJlZ2lzdHJhYmxlRG9tYWluOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGRvbWFpbjsKICAgICBkZWNv
ZGVyID4+IGRvbWFpbjsKICAgICBpZiAoIWRvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHJlZ2lzdHJhYmxlRG9tYWluLm1fcmVnaXN0cmFi
bGVEb21haW4gPSBXVEZNb3ZlKCpkb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCmluZGV4IDg4Yjc1NGQ4MWViNjY3YThjYWE3NTE0OTU5ODQzZWU4ZWNl
NzE2OGEuLmQ2ZTk3ZTNhMjA5MTQxODkxNzdmNjA3M2EyMDE0OTNhODQwMTQxMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKQEAgLTgxLDEyICs4MSwxMiBA
QCBPcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0aWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gcHJpbWFyeURp
c3BsYXlJRDsKICAgICBkZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5SUQ7CiAgICAgaWYgKCFwcmlt
YXJ5RGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2NyZWVuRGF0YU1hcD4gc2NyZWVuRGF0
YU1hcDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRhdGFNYXA7CiAgICAgaWYgKCFzY3JlZW5EYXRh
TWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqcHJpbWFyeURpc3BsYXlJRCwgV1RGTW92ZSgqc2Ny
ZWVuRGF0YU1hcCkgfSB9OwogfQpAQCAtMTExLDcwICsxMTEsNzAgQEAgT3B0aW9uYWw8U2NyZWVu
RGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRlY29kZXIgPj4gc2NyZWVuQXZh
aWxhYmxlUmVjdDsKICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJlY3QpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5SZWN0Owog
ICAgIGlmICghc2NyZWVuUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IHNjcmVlbkNvbG9yU3BhY2U7
CiAgICAgaWYgKCFzY3JlZW5Db2xvclNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiBzY3Jl
ZW5EZXB0aDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRlcHRoOwogICAgIGlmICghc2NyZWVuRGVw
dGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OwogICAg
IGRlY29kZXIgPj4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAgICAgaWYgKCFzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcjsKICAgICBkZWNvZGVyID4+IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcjsK
ICAgICBpZiAoIXNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PGJvb2w+IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwogICAgIGRlY29kZXIgPj4gc2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnM7CiAgICAgaWYgKCFzY3JlZW5IYXNJbnZlcnRlZENvbG9ycykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKICAgICBk
ZWNvZGVyID4+IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKICAgICBpZiAoIXNjcmVl
blN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBP
cHRpb25hbDxib29sPiBzY3JlZW5Jc01vbm9jaHJvbWU7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5J
c01vbm9jaHJvbWU7CiAgICAgaWYgKCFzY3JlZW5Jc01vbm9jaHJvbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDx1aW50MzJfdD4gZGlzcGxheU1hc2s7CiAgICAgZGVjb2RlciA+PiBkaXNwbGF5TWFzazsK
ICAgICBpZiAoIWRpc3BsYXlNYXNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8SU9SZWdpc3RyeUdQVUlE
PiBncHVJRDsKICAgICBkZWNvZGVyID4+IGdwdUlEOwogICAgIGlmICghZ3B1SUQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxEeW5hbWljUmFuZ2VNb2RlPiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwog
ICAgIGRlY29kZXIgPj4gcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKICAgICBpZiAoIXByZWZl
cnJlZER5bmFtaWNSYW5nZU1vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBPcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7CiAg
ICAgZGVjb2RlciA+PiBzY2FsZUZhY3RvcjsKICAgICBpZiAoIXNjYWxlRmFjdG9yKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICByZXR1cm4geyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDFiZDgyZmZhYTllNWYzMThlZGNjOWYyZDZj
ODQxYTg5Y2JjYjk0MDEuLjc4NmM0OTYzYWRlZDA1MGZlYmQzYjI3NjdkNzcyMTM4MjMzMWYyOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0
aWMuY3BwCkBAIC0xNzQsOCArMTc0LDggQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpz
dGFydChjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2EKIAogICAg
IGlmICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKICAgICAgICAgbV9wb3NpdGlv
biA9IGluaXRpYWxQb3NpdGlvbjsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFdURjo6bnVs
bG9wdDsKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
aG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIG1fdmVydGljYWxEYXRhID0g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDIsMTQgKzIwMiwx
NCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0KGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYQogICAgICAgICAgICAgZXh0ZW50cy5tYXhpbXVt
U2Nyb2xsUG9zaXRpb24ueCgpLAogICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLngoKSwgYWNj
dW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LngoKSwgbV9ob3Jpem9udGFsRGF0YSkpOwogICAgIH0g
ZWxzZQotICAgICAgICBtX2hvcml6b250YWxEYXRhID0gV1RGOjpudWxsb3B0OworICAgICAgICBt
X2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1heVZTY3JvbGwpIHsK
ICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShleHRlbnRzLm1pbmltdW1TY3Jv
bGxQb3NpdGlvbi55KCksCiAgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxQb3NpdGlv
bi55KCksCiAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24ueSgpLCBhY2N1bXVsYXRlVmVsb2Np
dHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQotICAgICAgICBt
X3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICBtX3Bvc2l0aW9uID0gaW5pdGlhbFBvc2l0aW9uOwogICAgIG1f
c3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIuOwpAQCAtMjIx
LDEwICsyMjEsMTAgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1l
ckZpcmVkKCkKICAgICBhdXRvIGRlbHRhID0gZGVsdGFUb05leHRGcmFtZSgpOwogCiAgICAgaWYg
KG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5hbmltYXRlU2Ny
b2xsKGRlbHRhKSkKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX3ZlcnRp
Y2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkK
LSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fdmVydGlj
YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgb25lIG9mIHRoZSBheGVzIGRpZG4n
dCBmaW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0LgogICAgIGlmIChtX2hv
cml6b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAppbmRleCAwNTc1ZDIxOTFiYWUyYjc0ODEyYjNiOTJhYWJhMzNiZjM1ZjAyYWJh
Li4zZDJmNjJlZmIwMDA3NTNjNzY2MjQ0MmI3OTM0MTIzNTE0NDc1ZTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDc0LDggKzQ3NCw4IEBAIHZvaWQgU2Nyb2xs
Vmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkK
ICAgICBlbHNlIGlmIChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cykKICAgICAgICAgc2Nyb2xsT2Zm
c2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cy52
YWx1ZSgpLmZpcnN0LCBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cy52YWx1ZSgpLnNlY29uZCk7CiAg
ICAgCi0gICAgbV9kZWZlcnJlZFNjcm9sbERlbHRhID0gV1RGOjpudWxsb3B0OwotICAgIG1fZGVm
ZXJyZWRTY3JvbGxPZmZzZXRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRTY3JvbGxE
ZWx0YSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cyA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxUbyhjb25zdCBTY3JvbGxQb3Np
dGlvbiYgbmV3UG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJv
YXJkLmgKaW5kZXggNjlmMDdmNDRiYmIwMWZjZTBhNjhmYTg1MjMzOTdlOTc5NjQ2ZTNlMC4uYWVl
MGQ4NzZlZjM2NjhjNWEwMTg5ZmMyMjcyNDA3NTcwM2EzMjNiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0
VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJMLCBP
cHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7IH0KLSAgICB2b2lkIHJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgT3B0
aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9CisgICAgdm9pZCByZWFkKFBh
c3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0
VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxv
cHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXplX3Q+ID0gc3RkOjpudWxsb3B0
KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpIGZpbmFs
OwogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggYzY2NmVkYjY4ZWIyMGVmZmNmNDczMjE4ZTMwNWE3NGNk
NzQ3YzlkMi4uYmM5N2U0ZTRiZjU0MjdlY2VkNzFmODdjNGUxYzhhNGZjNWI5MmViYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtNDAsNyArNDAsNyBAQCBpbnQgVGhlbWU6OmJhc2Vs
aW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdAogCiBPcHRpb25hbDxGb250
Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZTo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNvbnN0
IEZvbnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMZW5ndGhTaXplIFRoZW1lOjpjb250cm9s
U2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiB6
b29tZWRTaXplLCBmbG9hdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGQ1ZjA2
ZWM3Y2MyY2UxZTcxODdkNjEzMjk1NmUwYThiZDYwZTNjY2MuLjU2Zjc2NTc4MWMzYjEzNzRhMjE2
MjU5NWIxYjA5MmI5ZWRkNzU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsK
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1lKE1v
bm90b25pY1RpbWUpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwg
T3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1lKE1vbm90b25pY1RpbWUpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0hlYXBJbmRleCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaAppbmRleCAyMzc2OTBjMDJj
Y2FmZGQ2YzU5NDY5OTkzMTU1ODc1NTMxZmEzYTAxLi5jMjliODU4NjYwMmVjZTExMGI2NjJjNTgx
MGU5YmU3YzQyYTMxNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0lPQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0lPQ2FsbGJhY2suaApAQCAtNTMsMTIgKzUzLDEyIEBAIHN0cnVjdCBBdWRpb0lPUG9zaXRp
b24gewogICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKICAgICAgICAgZGVjb2Rl
ciA+PiBwb3NpdGlvbjsKICAgICAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVzdGFtcDsKICAgICAgICAgZGVjb2RlciA+
PiB0aW1lc3RhbXA7CiAgICAgICAgIGlmICghdGltZXN0YW1wKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIEF1ZGlvSU9Qb3NpdGlvbiB7ICpwb3NpdGlvbiwgKnRpbWVzdGFtcCB9OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oCmluZGV4IDQ5NWIxMzAwNTdhNDhlOTQ3ZTgwNTMzMDNkYzYwM2QyMTlhYThhMDcu
LjdhYWM1MjRiNDk2MDU5NmFiZDEyMGYxYTA1ODMwOTFlMjE1ODA4N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAt
Mjk3LDcgKzI5Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtCiAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8dHlwZT4+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAoIW5h
bWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OyBcCiAKICAgICBERUNPREUodGltZSwgZG91YmxlKTsKICAgICBERUNPREUoZmFz
dFNlZWssIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1l
ci5jcHAKaW5kZXggMGZlYTkyNWM0ZjMxOTNmYzE2ZTEwMWM1OWNhN2Y1ZTFlMGRjNjhjZi4uZGQ0
ODI5ZDM3YzIzYTZkNWYyNTA2MzAwNTJiNGIyMGFlZjNlZWRhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdzdEJ1ZmZlcj4+PiB3ZWJLaXRXZWJBdWRpb1Ny
Y0FsbG9jYXRlQnVmZmVycyhXZWIKICAgICBpZiAoIXByaXYtPmRlc3RpbmF0aW9uIHx8ICFwcml2
LT5idXMpIHsKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBGQUlMRUQsICgi
SW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJyb3IiKSwgKCJDYW4ndCBzdGFydCB3aXRob3V0IGRlc3Rp
bmF0aW9uIG9yIGJ1cyIpKTsKICAgICAgICAgZ3N0X3Rhc2tfc3RvcChzcmMtPnByaXYtPnRhc2su
Z2V0KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVChwcml2LT5wb29sKTsKQEAgLTMxOSw3ICsz
MTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4+IHdlYktp
dFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYgogICAgICAgICAgICAgLy8gRkxVU0hJTkcg
YW5kIEVPUyBhcmUgbm90IGVycm9ycy4KICAgICAgICAgICAgIGlmIChyZXQgPCBHU1RfRkxPV19F
T1MgfHwgcmV0ID09IEdTVF9GTE9XX05PVF9MSU5LRUQpCiAgICAgICAgICAgICAgICAgR1NUX0VM
RU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBQQUQsICgiSW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJyb3Ii
KSwgKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIGZvciBmbG93OiAlcyIsIGdzdF9mbG93X2dl
dF9uYW1lKHJldCkpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKGJ1
ZmZlcik7CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRy
PEdzdEJ1ZmZlcj4+PiB3ZWJLaXRXZWJBdWRpb1NyY0FsbG9jYXRlQnVmZmVycyhXZWIKICAgICAg
ICAgY2hhbm5lbEJ1ZmZlckxpc3QudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChjaGFubmVsQnVmZmVyTGlzdCk7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChjaGFubmVsQnVmZmVyTGlzdCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVyQW5kUHVzaEZyYW1lcyhHUmVmUHRyPEdzdEVs
ZW1lbnQ+JiYgZWxlbWVudCwgVmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4mJiBjaGFubmVsQnVm
ZmVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9N
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IDI2YmI0MTEwMDFkN2VmYmMwYmYyNmNi
NjEzOWYwMjAxN2U2YTE1ZjcuLmVkZWYzMDdmMjdhYzNiOGRiZGY4MmE3YmNlNjQzMjliM2VmZWFj
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBAIE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKLSAgICB1cGRhdGVDYXJQbGF5SXNDb25u
ZWN0ZWQoV1RGOjpudWxsb3B0KTsKKyAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3RkOjpu
dWxsb3B0KTsKICNlbmRpZgogfQogCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBNZWRpYVNlc3Np
b25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpCiAjaWYg
SEFWRShDRUxFU1RJQUwpCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6bWVkaWFTZXJ2ZXJD
b25uZWN0aW9uRGllZCgpCiB7Ci0gICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6bnVs
bG9wdCk7CisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKHN0ZDo6bnVsbG9wdCk7CiAKICAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgcmRhcjovLzI3NjYyNzE2IGxhbmRzCiAgICAg
aWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9TdWJzY3JpYmVUb05v
dGlmaWNhdGlvbnNBdHRyaWJ1dGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCmluZGV4IGNhODcwMWYwNmYwN2JjMjg0NDEy
Y2VkZWQ1NzhkYmNhZGE0ZjZkYzQuLmY0MTA2NmZkYTQ5OTc5NjM0YTc2MjVhODcyN2ZiZmQxYjdj
ZTIxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRp
b1Nlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hYy5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uTWFj
OjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQogICAgIGlmICghbV9wbGF5aW5nVG9CbHVldG9v
dGggfHwgKm1fcGxheWluZ1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0Js
dWV0b290aCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
bGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCmluZGV4IGQzOWY3NWQ0ODFlY2NhZjdjYTI2NmM2
MTY1YWJkZjJkZGExMDdjMTYuLjYxNWNiYjRhMWIwMmFhYmZiOTFlNDhiNTVkYWU0YTA2NzdlNWI4
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFz
dGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRm
b3JtUGFzdGVib2FyZENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KQogewogICAgIGlm
IChjaGFuZ2VDb3VudCAhPSBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZl
Y3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGl0ZW1JbmZvOwogICAgIGludCBudW1iZXJPZkl0ZW1z
ID0gY291bnQoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJ
dGVtSW5mbz4+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGkKICAg
ICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBudW1iZXJPZkl0ZW1z
OyArK2l0ZW1JbmRleCkgewogICAgICAgICBhdXRvIGl0ZW0gPSBpbmZvcm1hdGlvbkZvckl0ZW1B
dEluZGV4KGl0ZW1JbmRleCwgY2hhbmdlQ291bnQpOwogICAgICAgICBpZiAoIWl0ZW0pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqaXRlbSkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggYmM3MWIxODQ2
YWM1YTAwZjViZmJlOTE3ZmVmOTMwOGUxNTQ0NDY4MC4uMDg5YjNkODE3OTljZjVkNDc0ZWQyZWI2
YWZmNDAzMjRlYzAyNDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAg
LTU4Miw3ICs1ODIsNyBAQCB1aW50NjRfdCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVu
dDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3RlZElu
ZGV4ICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5d29y
ZCgpKQogICAgICAgICBzZWxlY3RlZEluZGV4ID0gb2ZmSW5kZXg7CiAKLSAgICByZXR1cm4gc2Vs
ZWN0ZWRJbmRleC52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7
CisgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXgudmFsdWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsKIH0KIAogYm9vbCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbi5oCmluZGV4IDg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBmYjk4
NzQ5ZmMuLjAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJkMDhiZjZiZWRmYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3RlbUNv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRp
YS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTY3LDM3ICs2NywzNyBAQCBzdHJ1Y3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFi
ZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBlczsK
ICAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAoIWluaXREYXRh
VHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBh
YmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9DYXBh
YmlsaXRpZXM7CiAgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBhYmls
aXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGlm
ICghdmlkZW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxDRE1S
ZXF1aXJlbWVudD4gZGlzdGluY3RpdmVJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGRp
c3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZpZXIp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50PiBw
ZXJzaXN0ZW50U3RhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlOwogICAg
ICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+
PiBzZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghc2Vzc2lvblR5cGVzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNhcGFi
aWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlh
Q2FwYWJpbGl0eS5oCmluZGV4IGY4NGEwZDEyYWI0Y2Q1MjBlM2YwZTA0ZDY0ZWJlZmM2MzE2MjU4
N2QuLmNiNTAwNGYzY2Q3OGM2NTFhYmJhMTM0MWRlZjZmMmVjYjc3MmMyMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJpbGl0
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlh
Q2FwYWJpbGl0eS5oCkBAIC01NCwxNyArNTQsMTcgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0
eSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvYnVzdG5lc3M7CiAgICAgICAgIGRlY29kZXIg
Pj4gcm9idXN0bmVzczsKICAgICAgICAgaWYgKCFyb2J1c3RuZXNzKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRpb25T
Y2hlbWU7CiAgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKICAgICAgICAgaWYg
KCFlbmNyeXB0aW9uU2NoZW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAg
ICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCmluZGV4IGQyNWY2MmUyYThm
ODA5NGNiZjUxOTM5ZDYxODRkOWZkYTE5NDc3YzYuLjc0MTU0NDEzN2YwNDkzOGY1ZGIwM2Y1NDU2
MjUyM2IzMWI0Yzc4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgdm9pZCBDRE1Q
cml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24mJiBjYW5kaWQKICAgICAvLyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbi4KICAgICBhdXRv
IG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY2FuZGlk
YXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zLCBhY2Nlc3MpOwogICAgIGlmICghb3B0aW9u
YWxDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBhdXRvIGNvbnNlbnRDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgYWNjZXNzXSAoQ29uc2VudFN0YXR1cyBzdGF0
dXMsIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBDRE1SZXN0cmlj
dGlvbnMmJiByZXN0cmljdGlvbnMpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwgY3Rk
LgpAQCAtMTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+
IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKIAogICAgICAgICAv
LyAzLjMuIElmIHN1cHBvcnRlZCB0eXBlcyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4K
ICAgICAgICAgaWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIC8vIDMuNC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KICAgICAgICAgYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKQEAgLTE4
Nyw3ICsxODcsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2
YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAgICAgICAgIC8vIElmIHRoZSBp
bXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVudGlm
aWVyKHMpIGluIGNvbWJpbmF0aW9uCiAgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29uZmln
dXJhdGlvbiBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBp
ZiAoZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJh
dGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlvbmFs
OgpAQCAtMjAwLDcgKzIwMCw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+
IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKICAgICAgICAgLy8g
SWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlmaWVy
KHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCiAgICAgICAgIC8vIGlu
IGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlm
aWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9
PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgICAg
ICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5nIHN0
YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgogICAgICAg
ICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAo
dGhpcy0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWw6CkBA
IC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RN
UHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgICAgICAvLyBJZiB0
aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBpbiBjb21iaW5hdGlv
biB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAgICAgLy8gYW5kIHJlc3RyaWN0
aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZAogICAgICAgICBpZiAodGhpcy0+cGVyc2lzdGVudFN0
YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTI2MSwxMiArMjYxLDEyIEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKICAgICAg
ICAgLy8gMTMuMi4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0
ZSB2YWx1ZSBpcyAibm90LWFsbG93ZWQiIGFuZCB0aGUKICAgICAgICAgLy8gICAgICAgSXMgcGVy
c2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSByZXR1cm5zIHRydWUgZm9yIHNlc3Npb24g
dHlwZSByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25maWd1
cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCAmJiBp
c1BlcnNpc3RlbnRUeXBlKHNlc3Npb25UeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDEz
LjMuIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNlc3Npb24gdHlwZSBp
biBjb21iaW5hdGlvbiB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAgICAgLy8g
ICAgICAgYW5kIHJlc3RyaWN0aW9ucyBmb3Igb3RoZXIgcmVhc29ucywgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KICAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRpb24o
c2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAvLyAxMy40IElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50U3Rh
dGUgdmFsdWUgaXMgIm9wdGlvbmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcwog
ICAgICAgICAvLyAgICAgIHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gc2Vz
c2lvbiB0eXBlIGlzIHRydWUsIGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVy
c2lzdGVudFN0YXRlCkBAIC0yODAsNyArMjgwLDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAog
CiAgICAgLy8gMTUuIElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmlsaXRp
ZXMgbWVtYmVycyBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KICAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0Nh
cGFiaWxpdGllcy5pc0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxNi4g4oazIElmIHRoZSB2aWRlb0NhcGFi
aWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24gaXMgbm9uLWVtcHR5Ogog
ICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5pc0VtcHR5
KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAKICAgICAg
ICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBOb3RTdXBw
b3J0ZWQuCiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAvLyAxNi4zIFNldCB0aGUgdmlkZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3VtdWxh
dGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlkZW8gY2FwYWJpbGl0aWVzLgogICAgICAgICBhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2FwYWJp
bGl0aWVzLnZhbHVlKCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIE9wdGlvbmFsPENETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29u
c3QKIAogICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KICAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1iZXIg
b2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBjYXBhYmlsaXRpZXMuCiAgICAg
ICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcyA9IFdURk1vdmUo
YXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CkBAIC0zNTAsMTAgKzM1MCwxMCBAQCBPcHRpb25h
bDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKGNvbnN0CiAgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBjb25m
aWd1cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBh
Y2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCiAgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQgb3Ig
bm90IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICBpZiAo
IXN1cHBvcnRzQ29uZmlndXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyID09
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24ucGVy
c2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYgYWNjZXNzID09IExv
Y2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb247CiAgICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRTdGF0
dXMoKS4KQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmls
aXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaQogCiAgICAg
ICAgIC8vIDMuMy4gSWYgY29udGVudCB0eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBu
dWxsLgogICAgICAgICBpZiAocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAzLjQuIElmIGNvbnRlbnQgdHlwZSBpcyBhbiBp
bnZhbGlkIG9yIHVucmVjb2duaXplZCBNSU1FIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0IGl0
ZXJhdGlvbi4KICAgICAgICAgT3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IGNvbnRlbnRUeXBl
ID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRU
eXBlLCBNb2RlOjpSZmMyMDQ1KTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBPcHRpb25hbDxWZWN0b3I8
Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVz
Rm9yQXVkaQogCiAgICAgLy8gNC4gSWYgc3VwcG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBpcyBl
bXB0eSwgcmV0dXJuIG51bGwuCiAgICAgaWYgKHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0
aWVzLgogICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRleCBm
ZTMwZmYwZTk3YWM4MDNhZjNhYzFlMzE2NGRkNjc0NTJlMjAzNTJkLi41NTE1ZWU3MDUyNjFhMDgw
ZWM4Yzk4Njg2ZDgzZDVhMDNhZWYzYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0zMDksMTEgKzMwOSwxMSBAQCBP
cHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUoY29u
c3QgS2V5SURUeXBlJiBrZXlJRCwgVwogICAgIGlmICh3YXNLZXlBdmFpbGFibGUpIHsKICAgICAg
ICAgUmVmUHRyPEtleUhhbmRsZT4gaGFuZGxlID0ga2V5SGFuZGxlKGtleUlEKTsKICAgICAgICAg
TE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Iga2V5IElE
ICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0K
IAogICAgIExPRyhFTUUsICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxhYmxl
IG9yIG9wZXJhdGlvbiBhYm9ydGVkIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCku
ZGF0YSgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGJvb2wgQ0RNUHJveHk6OmtleUF2YWlsYWJsZVVubG9ja2VkKGNvbnN0IEtleUlE
VHlwZSYga2V5SUQpIGNvbnN0CkBAIC0zMzUsMTQgKzMzNSwxNCBAQCBPcHRpb25hbDxSZWY8S2V5
SGFuZGxlPj4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5cGUm
IGtleUlELAogICAgIH0KIAogICAgIFJlZlB0cjxLZXlIYW5kbGU+IGhhbmRsZSA9IGtleUhhbmRs
ZShrZXlJRCk7Ci0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwo
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwo
KSk7CiB9CiAKIE9wdGlvbmFsPEtleUhhbmRsZVZhbHVlVmFyaWFudD4gQ0RNUHJveHk6OmdldE9y
V2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYga2V5SUQsIFdlYWtQdHI8Q0RNUHJveHlE
ZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVudCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBrZXlIYW5k
bGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUoa2V5SUQsIFdURk1vdmUoY2xpZW50KSkpCi0gICAg
ICAgIHJldHVybiBtYWtlT3B0aW9uYWwoKCprZXlIYW5kbGUpLT52YWx1ZSgpKTsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKCgqa2V5
SGFuZGxlKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBD
RE1JbnN0YW5jZVByb3h5OjpzdGFydGVkV2FpdGluZ0ZvcktleSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCmlu
ZGV4IDljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2UuLjgwN2M4ZTU2M2I1
ZTg3YjQ4MjRkMDNhYjZkZjYyMjE0NWI2NzE3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC01MSwx
NyArNTEsMTcgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgICAgIE9wdGlvbmFsPGJv
b2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKICAgICAgICAgZGVjb2RlciA+PiBkaXN0
aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CiAgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lzdGVu
dFN0YXRlRGVuaWVkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZURlbmllZDsK
ICAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vzc2lv
blR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRlbmll
ZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7CiAg
ICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIHt7CiAgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RN
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xl
YXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDhlODM2Mzg0N2MyMjFlZjUwZGEzZDIwOTFjOTNm
YjViMWY0YzYxYjcuLmI2YzJhZTlmMjhiMThiOWZhNWI0YmJmMzMzOTQ1MzY4ZWM2OTk2NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5
L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTUzLDEyICs1MywxMiBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0KGNv
bnN0IEpTT046Ok9iamVjdAogICAgIC8vIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkICdsaWNl
bnNlJyBmb3JtYXQuCiAgICAgYXV0byBpdCA9IHJvb3QuZmluZCgia2V5cyIpOwogICAgIGlmIChp
dCA9PSByb290LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUmV0cmlldmUgdGhlIGtleXMgYXJyYXkuCiAg
ICAgYXV0byBrZXlzQXJyYXkgPSBpdC0+dmFsdWUtPmFzQXJyYXkoKTsKICAgICBpZiAoIWtleXNB
cnJheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxlPj4gZGVjb2RlZEtleXM7CiAg
ICAgYm9vbCB2YWxpZEZvcm1hdCA9IHN0ZDo6YWxsX29mKGtleXNBcnJheS0+YmVnaW4oKSwga2V5
c0FycmF5LT5lbmQoKSwKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxS
ZWZQdHI8S2V5SGFuZGxlPj4+IHBhcnNlTGljZW5zZUZvcm1hdChjb25zdCBKU09OOjpPYmplY3QK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsKICAgICBpZiAoIXZhbGlkRm9y
bWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBkZWNvZGVkS2V5czsKIH0KIApAQCAtNDE4LDcgKzQxOCw3IEBA
IE9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVNlc3Npb25JZChj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgc2Vzc2lvbiBJ
RCBzdHJpbmcgYXMgYW4gMzItYml0IGludGVnZXIuCiAgICAgaWYgKCFwYXJzZUludGVnZXI8dWlu
dDMyX3Q+KHNlc3Npb25JZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlc3Npb25JZDsKIH0KIApAQCAtNDg5
LDE0ICs0ODksMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVQKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNoYW5n
ZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHN1Y2NlZWRlZCk7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdlZEtl
eXMpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3VjY2VlZGVkKTsKICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfTsKIAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJvb3QgPSBD
RE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSk7CiAgICAgaWYgKCFyb290KSB7
CiAgICAgICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgdXBkYXRlIHBh
eWxvYWQgd2FzIG5vdCB2YWxpZCBKU09OIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6
RmFpbGVkKTsKKyAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBT
dWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyMiwx
MiArNTIyLDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUCiAgICAgICAgIExPRyhFTUUsICJF
TUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgcmVsZWFzZSBhY2tub3dsZWRnZWQsIGNsZWFyaW5n
IGFsbCBrbm93biBrZXlzIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBwYXJl
bnRJbnN0YW5jZSgpLnJlbW92ZUFsbEtleXNGcm9tKG1fa2V5U3RvcmUpOwogICAgICAgICBtX2tl
eVN0b3JlLnJlbW92ZUFsbEtleXMoKTsKLSAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayh0cnVlLCBX
VEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICAgICAgZGlzcGF0Y2hD
YWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHNl
c3Npb24gJXMgdXBkYXRlIHBheWxvYWQgd2FzIGFuIHVucmVjb2duaXplZCBmb3JtYXQiLCBzZXNz
aW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiB9CiAKIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxi
YWNrKQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JCiAgICAgICAg
IGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3Vj
Y2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOworICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGtleVN0YXR1c1ZlY3RvciksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3Bw
CmluZGV4IDFiODNhOTFiMjdhNmFlZjdhODJmMmExNGY4NTRmY2E4MzcyNGI5ZDAuLjZhZWJiMDU5
MDNmNjMzNDlmZjkzNmE0NjJjN2I3ZjcyNTVmYjJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtNTMs
MTYgKzUzLDE2IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHJlYWRTdHJpbmcoV1RGOjpQZXJz
aXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxzaXplX3Q+IHNpemU7CiAg
ICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIXNpemUudmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBWZWN0b3I8dWludDhf
dD4gYnVmZmVyKHNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YShidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmVzdWx0
ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpOwogICAgIGlm
IChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5j
cHAKaW5kZXggMDg0ODAwNWU2NDcyYzU2ZjcxMTk4ZTcyNzI3N2ZkYTQ5OGU1ZTE4My4uNjZjZDY1
NzRlZGUzNzVjNThiMDRkMDgxODM0YmQ5MDg2ZjAwOTE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNw
ZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyCiBPcHRpb25hbDxGcmFtZXNQZXJT
ZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNv
bj4gcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vj
b25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAgaWYgKHJlYXNvbnMu
Y29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghbm9taW5hbEZyYW1lc1BlclNlY29uZCB8fCAqbm9taW5hbEZyYW1lc1BlclNlY29uZCA9PSBG
dWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpIHsKICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBUaHJv
dHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKaW5kZXggYzgzODc4YzAxMzUzOTlj
NDI1MjhhN2FkZjU1ZWRjY2QwMDViMTIxZi4uYjIzYTkzODg2MGU1YTJlMjFjNGI2NmM5YWUyMDEx
YzdmYWM4YzM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QW5pbWF0aW9uRnJhbWVSYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKQEAgLTU2LDcgKzU2LDcgQEAgY29uc3RleHByIGNvbnN0
IEZyYW1lc1BlclNlY29uZCBIYWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vjb25kID0gMzA7
CiAKIFdFQkNPUkVfRVhQT1JUIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0
RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCk7CiAKLS8vIFRoaXMgd2lsbCByZXR1cm4gV1RGOjpu
dWxsb3B0IGlmIHRocm90dGxpbmcgcmVzdWx0cyBpbiBhIGZyZXF1ZW5jeSA8IDFmcHMuCisvLyBU
aGlzIHdpbGwgcmV0dXJuIHN0ZDo6bnVsbG9wdCBpZiB0aHJvdHRsaW5nIHJlc3VsdHMgaW4gYSBm
cmVxdWVuY3kgPCAxZnBzLgogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25k
PiBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+LCBP
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wgcHJl
ZmVyRnJhbWVSYXRlc05lYXI2MEZQUyk7CiAKIFdFQkNPUkVfRVhQT1JUIFNlY29uZHMgcHJlZmVy
cmVkRnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4sIE9wdGlvbmFsPEZy
YW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFtZVJh
dGVzTmVhcjYwRlBTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmlu
ZGV4IDZlMDYwMmUzYWVhNmUzOWE4NjRlODgxMzMwNWFkZjg5MjI5ZGMzODAuLmRhYWIwYTM1NThl
ZGQ1ZjNkNWVjYTcwYmQ2OThmNDcxMjdjZmZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuaApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSBPcHRpb25hbDxTUkdC
QTx1aW50OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CiB7CiAgICAgaWYg
KGlzSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIHVpbnQ2NF90
IENvbG9yOjplbmNvZGVkRmxhZ3MoT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4gZmxh
Z3MpCkBAIC01NzcsNyArNTc3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGlzVmFs
aWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaXNW
YWxpZCkKICAgICAgICAgcmV0dXJuIENvbG9yIHsgfTsKQEAgLTU4Niw0NCArNTg2LDQ0IEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPENvbG9yPiBDb2xvcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAKICAgICBib29sIGlzU2VtYW50aWM7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc1NlbWFudGljKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc1NlbWFudGljKQogICAgICAgICBmbGFn
cy5hZGQoRmxhZ3M6OlNlbWFudGljKTsKIAogICAgIGJvb2wgdXNlc0NvbG9yRnVuY3Rpb25TZXJp
YWxpemF0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlc0NvbG9yRnVuY3Rpb25TZXJp
YWxpemF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh1c2VzQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24p
CiAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6VXNlQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRpb24p
OwogCiAgICAgYm9vbCBpc091dE9mTGluZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzT3V0
T2ZMaW5lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc091dE9mTGluZSkgewogICAgICAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYzE7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YzEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZsb2F0IGMyOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGMyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBmbG9hdCBjMzsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjMykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYWxwaGE7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biBDb2xvciB7IE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7IGMxLCBjMiwgYzMsIGFscGhh
IH0pLCBjb2xvclNwYWNlLCBmbGFncyB9OwogICAgIH0KIAogICAgIHVpbnQzMl90IHZhbHVlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIENvbG9yIHsg
YXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0pLCBmbGFncyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAKaW5kZXggYzRiZjAzMmI3MGM5ODgzYjk3NmUyMjZmYWFjMjYyOTRlMGM4NGVl
NS4uZWU0MzMzYzY0ZDUzNzIyZTMyNGE1ODE0YTY3MTdmNGIzN2Q3MzcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwCkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB1bnNpZ25lZCBDb21wbGV4VGV4dENvbnRy
b2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbAog
ICAgICAgICAgICAgICAgIGlmIChjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmlzQm91bmRhcnkoaGl0
SW5kZXgpKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBoaXRJbmRleDsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGN1
cnNvclBvc2l0aW9uSXRlcmF0b3IucHJlY2VkaW5nKGhpdEluZGV4KS52YWx1ZU9yKDApOworICAg
ICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLnBy
ZWNlZGluZyhoaXRJbmRleCkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWlu
Y2x1ZGVQYXJ0aWFsR2x5cGhzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxleFRl
eHRSdW4uc3RyaW5nTG9jYXRpb24oKSArIGNsdXN0ZXJTdGFydDsKIAotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmZvbGxvd2luZyho
aXRJbmRleCkudmFsdWVPcihzdHJpbmdMZW5ndGgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmZvbGxvd2luZyhoaXRJbmRleCku
dmFsdWVfb3Ioc3RyaW5nTGVuZ3RoKTsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGNsdXN0ZXJX
aWR0aDsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNlYXJjaCBzdG9wcyBhdCB0aGUg
Ym91bmRhcmllcyBvZiBjb21wbGV4VGV4dFJ1bi4gSW4gdGhlb3J5LCBpdCBzaG91bGQgZ28gb24g
aW50byBuZWlnaGJvcmluZyBDb21wbGV4VGV4dFJ1bnMKQEAgLTMxOCwxMyArMzE4LDEzIEBAIHN0
YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVDaGFy
KiYgaXRlcmF0b3IsIGNvbnN0IFVDCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+IGNh
cGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKIHsKICAgICBpZiAoVV9HRVRfR0NfTUFT
SyhiYXNlQ2hhcmFjdGVyKSAmIFVfR0NfTV9NQVNLKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVUNoYXIzMiB1cHBlcmNh
c2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rlcik7CiAgICAgQVNTRVJUKHVwcGVy
Y2FzZUNoYXJhY3RlciA9PSBiYXNlQ2hhcmFjdGVyIHx8IChVX0lTX0JNUChiYXNlQ2hhcmFjdGVy
KSA9PSBVX0lTX0JNUCh1cHBlcmNhc2VDaGFyYWN0ZXIpKSk7CiAgICAgaWYgKHVwcGVyY2FzZUNo
YXJhY3RlciAhPSBiYXNlQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdXBwZXJjYXNlQ2hhcmFj
dGVyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogc3RhdGljIGJvb2wgc2hvdWxkU3ludGhlc2l6ZShib29sIGRvbnRTeW50aGVzaXplU21h
bGxDYXBzLCBjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBPcHRp
b25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZvbnRWYXJpYW50Q2FwcyBmb250VmFyaWFu
dENhcHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJvY2Vzc2luZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAppbmRl
eCBhY2Y0MzU5ZWIwYmM4N2JjM2JkZWFkOTA1M2IyZTFkZTNmZmM1MjM5Li5lYzJkYTAyMzkyZjBh
YzljYjg0NGRkNDRjMmZiYmFkYjc1YTY4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yMTMsNyArMjEz
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaENvbnRleHQoKTsK
QEAgLTIyOCw3ICsyMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBjb25zdF9jYXN0PENv
bmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0KCk7CiAgICAgICAgICAgICBy
ZXR1cm4gYmFja2VuZC0+Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50ID0geyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaAppbmRleCBmODgzYWJiZDQ5ZjUzNDY2MjE4ZTc2NjI3OGVjOWFmMGI5OGM4MDRjLi43ZGEy
M2ZkODI3ZGFiZDUxMjZhNzcxODAxZDNlOWNkMTIxN2IyYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaApA
QCAtNjYsNyArNjYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZAogICAgIE9wdGlvbmFsPFBs
YXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gcGxh
dGZvcm1Db2xvclNwYWNlOwogICAgIGlmICghcGxhdGZvcm1Db2xvclNwYWNlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JTcGFj
ZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IGFlNjhkMzQ3YzdmMmQzMWY0OTNmYjI4
M2I5ZDkyZDMyNTc5Mzc4NjQuLmM2NzY5MDAyYTI1MWZhMTVjYmU5NWIzMGExOTY4ODI0YjI5MWMw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPEZy
YW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjptYXhpbXVtQ2xpZW50UHJlZmVy
cmVkRnJhbWVzUGVyCiB7CiAgICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtYXhGcmFtZXNQ
ZXJTZWNvbmQ7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAgIG1h
eEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4PEZyYW1lc1BlclNlY29uZD4obWF4RnJhbWVzUGVy
U2Vjb25kLnZhbHVlT3IoMCksIGNsaWVudC0+cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkpOwor
ICAgICAgICBtYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heDxGcmFtZXNQZXJTZWNvbmQ+KG1h
eEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgY2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQoKSk7CiAKICAgICByZXR1cm4gbWF4RnJhbWVzUGVyU2Vjb25kOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0
b3IuaAppbmRleCBkMWEwOTgyMjlkMjFiYTE0Yjg4Y2M2YjliYzQ3MTRmYzExMGJhYWNkLi5hMjJi
NjMwNTY2Njk2ZDJlZjdmMTE2NGZkZWI1MGU3NjU3YzFkMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaApA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGllbnRQcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwogICAgIE9wdGlv
bmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0KIAot
ICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1l
c1BlclNlY29uZCgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcAppbmRleCBhYWY4ZjRkZDJjZmUwZDhiYWQ4NzI0MGYxNzNmMmYzMDg1ZjBjMzM1Li42
ODM2Nzc2ZTc2YzAzY2IyNjM5MDdkZjFkZDgyZDJhNmQyYjlkYzQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3JNYW5hZ2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIE9wdGlvbmFsPEZyYW1lc1Bl
clNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6bm9taW5hbEZyYW1lc1BlclNl
Y29uZEZvCiAgICAgaWYgKG1vbml0b3IpCiAgICAgICAgIG1vbml0b3ItPmRpc3BsYXlOb21pbmFs
RnJhbWVzUGVyU2Vjb25kKCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
ZGlzcGxheVdhc1VwZGF0ZWQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBEaXNw
bGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCmluZGV4IDA2YzQyY2VlYmM0NTQzZTdmNWZkM2JhMzQ1
YWYyYmViZWVmODI1NmUuLmFiYmVjZjY1YTQyYzI2MTYwYWUyMDI5NThiY2U4OWE1MGI4M2JhOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5VXBkYXRl
LmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25hbDxEaXNwbGF5VXBkYXRlPiBEaXNwbGF5VXBk
YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gdXBk
YXRlSW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJbmRleDsKICAgICBpZiAoIXVwZGF0ZUlu
ZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1cGRhdGVzUGVyU2Vjb25k
OwogICAgIGRlY29kZXIgPj4gdXBkYXRlc1BlclNlY29uZDsKICAgICBpZiAoIXVwZGF0ZXNQZXJT
ZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnVwZGF0ZUluZGV4LCAqdXBkYXRlc1BlclNlY29u
ZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUu
Y3BwCmluZGV4IDQ5ODFjNjUwZTVhNzJhM2ZkZTk1ZTU2NGVjNDAzOTQzZWUxNGU0OGIuLmYxN2E1
ODU5ZThjZTg5MzhiZjE4YzMwNDg3OWI3MTJkNTdlYzJmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcApAQCAtNjgsNyArNjgsNyBAQCBjb25z
dCBPcHRpb25hbDxGbG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVyc2VjdGlvbldpdGgoY29uc3Qg
RmxvYXRMaW5lJiBvdGhlckxpbgogICAgIAogICAgIC8vIEEgZGVub21pbmF0b3Igb2YgemVybyBp
bmRpY2F0ZXMgdGhlIGxpbmVzIGFyZSBwYXJhbGxlbCBvciBjb2luY2lkZW50LCB3aGljaCBtZWFu
cyB0aGVyZSBpcyBubyB0cnVlIGludGVyc2VjdGlvbi4KICAgICBpZiAoIWRlbm9taW5hdG9yKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIGZsb2F0IHRoaXNMaW5lQ29tbW9uTnVtZXJhdG9yRmFjdG9yID0gKG1fc3Rh
cnQueCgpICogbV9lbmQueSgpKSAtIChtX3N0YXJ0LnkoKSAqIG1fZW5kLngoKSk7CiAgICAgZmxv
YXQgb3RoZXJMaW5lQ29tbW9uTnVtZXJhdG9yRmFjdG9yID0gKG90aGVyTGluZS5zdGFydCgpLngo
KSAqIG90aGVyTGluZS5lbmQoKS55KCkpIC0gKG90aGVyTGluZS5zdGFydCgpLnkoKSAqIG90aGVy
TGluZS5lbmQoKS54KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dExpbmUuaAppbmRleCAxYTBkYjUwOGIwMDNmNGY2ZTUyNGUyNTUwYTVjZDFlYTllMTkwMWVhLi4w
Njg5NTBjOTMyZWM1YTE5NzE2MjJiNWZlZjY2Yzc4MDllNmRkY2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaApAQCAtNzUsMTIgKzc1LDEyIEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEZsb2F0TGluZT4gRmxvYXRMaW5lOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBzdGFydDsKICAg
ICBkZWNvZGVyID4+IHN0YXJ0OwogICAgIGlmICghc3RhcnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBlbmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7CiAgICAgaWYgKCFlbmQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sgKnN0YXJ0LCAqZW5kIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaAppbmRleCA2MWIzZGVlNDllMGQyYmZkMmFlZDI3MWRj
NDlhNzY3MTZmNzZhMjJhLi5mNWRjYjQ2NjYwMmQzYTE4MzUxYmIwZTYyOTA5NWZjYzQxNjAyZDc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaApAQCAt
MTczLDIyICsxNzMsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRR
dWFkPiBGbG9hdFF1YWQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IHAxOwogICAgIGRlY29kZXIgPj4gcDE7CiAgICAgaWYgKCFwMSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAyOwogICAgIGRlY29kZXIgPj4gcDI7CiAgICAgaWYgKCFw
MikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAzOwogICAgIGRlY29kZXIgPj4gcDM7
CiAgICAgaWYgKCFwMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHA0OwogICAgIGRl
Y29kZXIgPj4gcDQ7CiAgICAgaWYgKCFwNCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcDEsICpwMiwg
KnAzLCAqcDQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3Bw
CmluZGV4IGY5OTE4M2Q3Y2NiYjg1NGU0ZTRmYmNjNTUwOWEzMDNhYjNiNTI3ZmYuLmU1OTEyYTk5
ZDBlNmRkMjBmMWVkYjMwMGI2Mzk2ZjkxMTkxMzhjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIE9wdGlvbmFs
PHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIgY29kZVBvaW50KQogICAgICAg
ICByZXN1bHQgPSAweDU0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmgKaW5kZXggNzVmNjQ2YmZkMGMzODVlMGE0M2JiYjYxZTY3NzJhNDgxYTA5NjZhZS4uZDMzNDcx
M2M3NzQ3ZmY5Mzk2Zjg3YWZjNTVkN2Y2NzNhMTI4NmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtOTQsOSArOTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIE5v
CiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFs
ID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZp
c2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNr
ID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9yVmVy
dGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAotICAgICAgICBWaXNp
YmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVu
dGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
ID0gV1RGOjpudWxsb3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBm
b250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGlj
Qm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgogICAg
IEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAgR2x5
cGggZ2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0Nv
ZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKLSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9p
bnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gV1RGOjpudWxsb3B0KSBj
b25zdDsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgT3B0aW9u
YWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIFJlZlB0
cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiwgY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZSYpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCBi
ODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2YzU3YTYyZTczLi5iNTAyZDlmZWQyYWY0ZTc5
ZTI5NmRmZmUyZTg2NTdlNDYwNWQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBPcHRpb25hbDxBU0NJ
SUxpdGVyYWw+IEZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZh
bWlseU5hbWUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSogRm9u
dENhY2hlOjpjYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3NlZEZhbWlseU5hbWUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggOTZjOWYw
ZTY4ZDFiOWY0YTFhODg1YzAwYTAzZjNiMWY1ZjM0OTc5OS4uZDFlZmM4NWUyMGYwNmM4OGE3ZDE1
ZDJjODAyNWVlZTZmYjg5NGQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEdseXBoQnVmZmVyIEZv
bnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRleHRS
dW4mIHJ1biwKIAogRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0
aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAgICAgYXV0byBnbHlwaEJ1ZmZl
ciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGlu
YXRpb24pOwogICAgIGdseXBoQnVmZmVyLmZsYXR0ZW4oKTsKIApAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVP
cihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3Io
cnVuLmxlbmd0aCgpKTsKIAogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNvZGVQ
YXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBGb3JUZXh0RW1waGFz
aXNPck5vdDo6Rm9yVGV4dEVtcGhhc2lzKTsKICAgICBnbHlwaEJ1ZmZlci5mbGF0dGVuKCk7CkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4KIHN0ZDo6dW5pcXVlX3B0
cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlM
aXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIEFTU0VSVCgh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpOwotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0g
dG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8u
dmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKICAgICAKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0
IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQg
bGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKICAgICBDb2RlUGF0aCBj
b2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBib29sIEZv
bnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZhaWxhYmxlKGZsb2F0JiB3aWR0aCkg
Y29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29u
c3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9t
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRp
b24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24g
PSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlmIChjb2RlUGF0aChydW4sIGZyb20s
IHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIGFkanVzdFNlbGVjdGlv
blJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgZnJvbSwgZGVzdGluYXRpb24p
OwogCkBAIC01MDcsNyArNTA3LDcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRl
Ojpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUKIAogI2lmICFV
U0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25jZSBp
dCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2VlIGh0
dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVx
dWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlT3IoMCkgfHwgdG8udmFsdWVPcihydW4ubGVu
Z3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkpCisgICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwgcmVx
dWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlX29yKDApIHx8IHRvLnZhbHVlX29yKHJ1bi5s
ZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpDb21w
bGV4OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJvbSk7CkBAIC0xMjAxLDE5ICsxMjAxLDE5
IEBAIHN0YXRpYyBHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5CiBPcHRpb25hbDxHbHlwaERhdGE+IEZvbnRDYXNj
YWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYgbWFyaykgY29u
c3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVQ2hhcjMyIGNoYXJhY3Rl
cjsKICAgICBpZiAoIW1hcmsuaXM4Qml0KCkpIHsKICAgICAgICAgU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKG1hcmsuY2hhcmFjdGVyczE2KCksIDAsIG1hcmsubGVuZ3Ro
KCksIG1hcmsubGVuZ3RoKCkpOwogICAgICAgICB1bnNpZ25lZCBjbHVzdGVyTGVuZ3RoOwogICAg
ICAgICBpZiAoIWl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBjbHVzdGVyTGVuZ3RoKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0gZWxzZQogICAgICAgICBjaGFyYWN0ZXIgPSBtYXJrWzBdOwogCiAgICAg
T3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJh
Y3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKLSAgICByZXR1cm4gZ2x5cGhEYXRh
LnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBnbHlwaERhdGEudmFsdWUoKS5pc1ZhbGlkKCkgPyBnbHlwaERhdGEgOiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0b21TdHJp
bmcmIG1hcmspIGNvbnN0CkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Zmxv
YXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9hdFBvaW50IHAxLCBGbG9hdFBv
aW50CiB7CiAgICAgaWYgKChwMS55KCkgPCB5ICYmIHAyLnkoKSA+IHkpIHx8IChwMS55KCkgPiB5
ICYmIHAyLnkoKSA8IHkpKQogICAgICAgICByZXR1cm4gcDEueCgpICsgKHkgLSBwMS55KCkpICog
KHAyLngoKSAtIHAxLngoKSkgLyAocDIueSgpIC0gcDEueSgpKTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyB2b2lkIHVwZGF0
ZVgoR2x5cGhJdGVyYXRpb25TdGF0ZSYgc3RhdGUsIGZsb2F0IHgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCAxZWY5ZTc2ZmYxNmQ0MDhm
NTc3ODhmZmJjZmQ4NmQ1NzU1NWFiZTJkLi44MDI4YjNhZWE2NjhmZDk3MzAwYWEwZjI0MjU3MzMx
MTk3OGFhZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51bGxwdHIpIGNvbnN0OwogCiAg
ICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90UmVh
ZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9h
dFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZs
b2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RG
OjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90
UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVk
IGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQsIEN1c3RvbUZv
bnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAgICAg
c3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVk
IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICB2
b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9
IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgdm9p
ZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAw
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRGFz
aEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50cykg
Y29uc3Q7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGZsb2F0IHdp
ZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRp
b24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5
cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRl
eHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rp
b25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21hbGw7
IH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmYW1pbHlDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7IH0KICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBt
X2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCi0gICAgLy8gQSBXVEY6Om51bGxvcHQg
cmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9ybWFsIi4KKyAgICAvLyBBIHN0
ZDo6bnVsbG9wdCByZXR1cm4gdmFsdWUgaW5kaWNhdGVzICJmb250LXN0eWxlOiBub3JtYWwiLgog
ICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4g
bV9mb250RGVzY3JpcHRpb24uaXRhbGljKCk7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUgd2Vp
Z2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24ud2VpZ2h0KCk7IH0KICAgICBG
b250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uLndpZHRoVmFyaWFudCgpOyB9CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAogICAgIGVu
dW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2ltcGxlLCBDb21wbGV4LCBTaW1w
bGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRleHRS
dW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBDb2RlUGF0aCBjb2RlUGF0aChj
b25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBzdGQ6Om51bGxvcHQsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgc3RhdGljIENv
ZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkgeyBy
ZXR1cm4gQ29kZVBhdGg6OlNpbXBsZTsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJS
YW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlv
bi5oCmluZGV4IDBhN2RmMjUyOGRhYzYyYThjNWE4OTBiZDJkZmE0MzBhMjE0ZGQ3ZjYuLmZmZjNl
NjBlNDA3OTdhN2QyNTdlMGI1YTlmMmFmMjY5N2QxNWJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgK
QEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEluaXRpYWwgdmFs
dWVzIGZvciBmb250IHByb3BlcnRpZXMuCi0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25WYWx1ZT4gaW5pdGlhbEl0YWxpYygpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHN0
YXRpYyBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgRm9udFN0eWxlQXhpcyBpbml0aWFsRm9udFN0
eWxlQXhpcygpIHsgcmV0dXJuIEZvbnRTdHlsZUF4aXM6OnNsbnQ7IH0KICAgICBzdGF0aWMgRm9u
dFNlbGVjdGlvblZhbHVlIGluaXRpYWxXZWlnaHQoKSB7IHJldHVybiBub3JtYWxXZWlnaHRWYWx1
ZSgpOyB9CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBpbml0aWFsU3RyZXRjaCgpIHsg
cmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IGYzOTQ3NWRlY2YyMGMzOGRj
OGMzNDE5NjJkM2MxZmNkMGEyNTQ1ZTUuLjk4MDYxZWRiMzRhNjYwOGQ4YzU1ZjdkNTUyNjYxYWRk
NmE5OWNlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnREZXNjcmlwdGlvbi5oCkBAIC0yNTYsMTYyICsyNTYsMTYyIEBAIE9wdGlvbmFsPEZvbnREZXNj
cmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBP
cHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPiBmZWF0dXJlU2V0dGluZ3M7CiAgICAgZGVjb2Rl
ciA+PiBmZWF0dXJlU2V0dGluZ3M7CiAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxGb250VmFyaWF0aW9uU2V0dGluZ3M+IHZhcmlhdGlvblNldHRpbmdzOwogICAg
IGRlY29kZXIgPj4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAgaWYgKCF2YXJpYXRpb25TZXR0aW5n
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxvY2FsZTsKICAgICBkZWNvZGVyID4+
IGxvY2FsZTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEZv
bnRTZWxlY3Rpb25WYWx1ZT4+IGl0YWxpYzsKICAgICBkZWNvZGVyID4+IGl0YWxpYzsKICAgICBp
ZiAoIWl0YWxpYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gc3RyZXRj
aDsKICAgICBkZWNvZGVyID4+IHN0cmV0Y2g7CiAgICAgaWYgKCFzdHJldGNoKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7CiAgICAgZGVjb2RlciA+PiB3ZWln
aHQ7CiAgICAgaWYgKCF3ZWlnaHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY29tcHV0ZWRT
aXplOwogICAgIGRlY29kZXIgPj4gY29tcHV0ZWRTaXplOwogICAgIGlmICghY29tcHV0ZWRTaXpl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udE9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKICAgICBk
ZWNvZGVyID4+IG9yaWVudGF0aW9uOwogICAgIGlmICghb3JpZW50YXRpb24pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxOb25DSktHbHlwaE9yaWVudGF0aW9uPiBub25DSktHbHlwaE9yaWVudGF0aW9uOwog
ICAgIGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhPcmllbnRhdGlvbjsKICAgICBpZiAoIW5vbkNKS0ds
eXBoT3JpZW50YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3aWR0
aFZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7CiAgICAgaWYgKCF3aWR0aFZh
cmlhbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9k
ZTsKICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCFyZW5kZXJpbmdNb2Rl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8VGV4dFJlbmRlcmluZ01vZGU+IHRleHRSZW5kZXJpbmdNb2Rl
OwogICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCF0ZXh0UmVuZGVy
aW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTeW50aGVzaXM+IGZvbnRTeW50aGVzaXM7
CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhlc2lzOwogICAgIGlmICghZm9udFN5bnRoZXNpcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29tbW9uTGln
YXR1cmVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudENvbW1vbkxpZ2F0dXJlczsKICAgICBpZiAo
IXZhcmlhbnRDb21tb25MaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiB2
YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnREaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZh
cmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEhpc3Rvcmlj
YWxMaWdhdHVyZXM7CiAgICAgaWYgKCF2YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29udGV4dHVhbEFsdGVy
bmF0ZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAg
aWYgKCF2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250
VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CiAgICAgZGVjb2RlciA+PiB2YXJpYW50
UG9zaXRpb247CiAgICAgaWYgKCF2YXJpYW50UG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250VmFyaWFudENhcHM+IHZhcmlhbnRDYXBzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudENhcHM7
CiAgICAgaWYgKCF2YXJpYW50Q2FwcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY0ZpZ3VyZT4gdmFyaWFudE51bWVyaWNGaWd1cmU7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50
TnVtZXJpY0ZpZ3VyZTsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljRmlndXJlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gdmFyaWFudE51bWVyaWNTcGFjaW5n
OwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNTcGFjaW5nOwogICAgIGlmICghdmFyaWFu
dE51bWVyaWNTcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRnJh
Y3Rpb24+IHZhcmlhbnROdW1lcmljRnJhY3Rpb247CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVt
ZXJpY0ZyYWN0aW9uOwogICAgIGlmICghdmFyaWFudE51bWVyaWNGcmFjdGlvbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw+IHZhcmlhbnROdW1lcmljT3JkaW5h
bDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnROdW1lcmljT3JkaW5hbDsKICAgICBpZiAoIXZhcmlh
bnROdW1lcmljT3JkaW5hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1Ns
YXNoZWRaZXJvPiB2YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4gdmFy
aWFudE51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljU2xhc2hlZFpl
cm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IHZhcmlhbnRBbHRl
cm5hdGVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEFsdGVybmF0ZXM7CiAgICAgaWYgKCF2YXJp
YW50QWx0ZXJuYXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFy
aWFudD4gdmFyaWFudEVhc3RBc2lhblZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50RWFz
dEFzaWFuVmFyaWFudDsKICAgICBpZiAoIXZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gdmFyaWFudEVhc3RBc2lhbldp
ZHRoOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEVhc3RBc2lhbldpZHRoOwogICAgIGlmICghdmFy
aWFudEVhc3RBc2lhbldpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5PiB2YXJpYW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0
QXNpYW5SdWJ5OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1YnkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxGb250T3B0aWNhbFNpemluZz4gb3B0aWNhbFNpemluZzsKICAgICBkZWNvZGVyID4+IG9w
dGljYWxTaXppbmc7CiAgICAgaWYgKCFvcHRpY2FsU2l6aW5nKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxlQXhpczsKICAgICBkZWNvZGVyID4+IGZvbnRTdHlsZUF4
aXM7CiAgICAgaWYgKCFmb250U3R5bGVBeGlzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8QWxsb3dVc2Vy
SW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzOwogICAgIGRlY29k
ZXIgPj4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAgICAgaWYgKCFzaG91bGRBbGxv
d1VzZXJJbnN0YWxsZWRGb250cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZERpc2Fi
bGVMaWdhdHVyZXNGb3JTcGFjaW5nOwogICAgIGRlY29kZXIgPj4gc2hvdWxkRGlzYWJsZUxpZ2F0
dXJlc0ZvclNwYWNpbmc7CiAgICAgaWYgKCFzaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2lu
ZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGZWF0dXJlU2V0dGluZ3MoV1RGTW92ZSgq
ZmVhdHVyZVNldHRpbmdzKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhdGlvblNldHRp
bmdzKFdURk1vdmUoKnZhcmlhdGlvblNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwCmlu
ZGV4IDZlNWY4YjQ5YjdjNGE0YTc0Yjg5ZWU0MDY0M2YxYzhiZDEyZDI1NmMuLjM1N2I0MDIzZWUw
OGRhMGNkZTg5NjgyZDhkY2M3NzhlMWM4ZWZlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwCkBA
IC02Niw3ICs2Niw3IEBAIGF1dG8gRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6c3RyZXRjaERpc3Rh
bmNlKENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpIGNvbnN0IC0+CiBhdXRvIEZvbnRTZWxlY3Rp
b25BbGdvcml0aG06OnN0eWxlRGlzdGFuY2UoQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcykgY29u
c3QgLT4gRGlzdGFuY2VSZXN1bHQKIHsKICAgICBhdXRvIHNsb3BlID0gY2FwYWJpbGl0aWVzLnNs
b3BlOwotICAgIGF1dG8gcmVxdWVzdFNsb3BlID0gbV9yZXF1ZXN0LnNsb3BlLnZhbHVlT3Iobm9y
bWFsSXRhbGljVmFsdWUoKSk7CisgICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Quc2xv
cGUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNsb3BlLmlzVmFs
aWQoKSk7CiAgICAgaWYgKHNsb3BlLmluY2x1ZGVzKHJlcXVlc3RTbG9wZSkpCiAgICAgICAgIHJl
dHVybiB7IEZvbnRTZWxlY3Rpb25WYWx1ZSgpLCByZXF1ZXN0U2xvcGUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0
aG0uaAppbmRleCA2NmY4ZmRjMTc1YjZhMzEwOTcxODZmMmQ0YmM3NzAxZjc1YjQ0ZWZjLi5iYzhk
N2Q5ZTM5ZWNlMzIyNGVjODhmMjM4ODA5ZjlmYmM0NzVlMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5o
CkBAIC05Miw3ICs5Miw3IEBAIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gRm9udFNlbGVj
dGlvblZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250U2Vs
ZWN0aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBiYWNraW5nOwogICAgIGRlY29kZXIgPj4gYmFja2lu
ZzsKICAgICBpZiAoIWJhY2tpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVzdWx0
OwogICAgIHJlc3VsdC5tX2JhY2tpbmcgPSAqYmFja2luZzsKQEAgLTM2MiwxMiArMzYyLDEyIEBA
IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gRm9udFNlbGVjdGlvblJhbmdlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVl
PiBtaW5pbXVtOwogICAgIGRlY29kZXIgPj4gbWluaW11bTsKICAgICBpZiAoIW1pbmltdW0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVlPiBtYXhpbXVtOwogICAg
IGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgKm1pbmltdW0sICptYXhpbXVtIH19OwogfQpAQCAtNDA1LDcgKzQwNSw3IEBAIGlubGluZSBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGb250U2VsZWN0aW9u
VmFsdWUmIGZvbnRTZWxlCiAKIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+JiBvcHRpb25hbEZvbnRT
ZWxlY3Rpb25WYWx1ZSkKIHsKLSAgICB0cyA8PCBvcHRpb25hbEZvbnRTZWxlY3Rpb25WYWx1ZS52
YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOworICAgIHRzIDw8IG9wdGlvbmFsRm9udFNlbGVj
dGlvblZhbHVlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOwogICAgIHJldHVybiB0czsK
IH0KIApAQCAtNDg0LDE3ICs0ODQsMTcgQEAgc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRD
YXBhYmlsaXRpZXMgewogCiAgICAgY29uc3RleHByIFJhbmdlIGNvbXB1dGVXZWlnaHQoKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIHdlaWdodC52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsV2Vp
Z2h0VmFsdWUoKSB9KTsKKyAgICAgICAgcmV0dXJuIHdlaWdodC52YWx1ZV9vcihSYW5nZSB7IG5v
cm1hbFdlaWdodFZhbHVlKCkgfSk7CiAgICAgfQogCiAgICAgY29uc3RleHByIFJhbmdlIGNvbXB1
dGVXaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gd2lkdGgudmFsdWVPcihSYW5n
ZSB7IG5vcm1hbFN0cmV0Y2hWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4gd2lkdGgudmFsdWVf
b3IoUmFuZ2UgeyBub3JtYWxTdHJldGNoVmFsdWUoKSB9KTsKICAgICB9CiAKICAgICBjb25zdGV4
cHIgUmFuZ2UgY29tcHV0ZVNsb3BlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzbG9w
ZS52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFsdWUoKSB9KTsKKyAgICAgICAgcmV0dXJu
IHNsb3BlLnZhbHVlX29yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFsdWUoKSB9KTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTIyLDE3ICs1MjIsMTcgQEAgT3B0aW9u
YWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4gRm9udFNlbGVjdGlvblNwZWNp
ZmllZENhcGFiaWxpdGllczoKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiB3ZWlnaHQ7CiAg
ICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxPcHRpb25hbFJhbmdlPiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICgh
d2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiBzbG9wZTsKICAgICBkZWNv
ZGVyID4+IHNsb3BlOwogICAgIGlmICghc2xvcGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKndlaWdo
dCwgKndpZHRoLCAqc2xvcGUgfX07CiB9CkBAIC01NTIsNyArNTUyLDcgQEAgcHVibGljOgogICAg
IHVzaW5nIENhcGFiaWxpdGllcyA9IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM7CiAKICAgICBG
b250U2VsZWN0aW9uQWxnb3JpdGhtKCkgPSBkZWxldGU7Ci0gICAgRm9udFNlbGVjdGlvbkFsZ29y
aXRobShGb250U2VsZWN0aW9uUmVxdWVzdCwgY29uc3QgVmVjdG9yPENhcGFiaWxpdGllcz4mLCBP
cHRpb25hbDxDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllc0JvdW5kcyA9IFdURjo6bnVsbG9wdCk7
CisgICAgRm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0aW9uUmVxdWVzdCwgY29uc3Qg
VmVjdG9yPENhcGFiaWxpdGllcz4mLCBPcHRpb25hbDxDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGll
c0JvdW5kcyA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdHJ1Y3QgRGlzdGFuY2VSZXN1bHQgewog
ICAgICAgICBGb250U2VsZWN0aW9uVmFsdWUgZGlzdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCmluZGV4IDA3ODNj
NTJiMWMzNDNlMWRkNWU3ODdmYTQ3NDA0Y2U0ZWY2NWFkNDcuLjVjY2NmZmJiODU4ZDkyMjIyYWUz
NmI3YTUxY2E2OTQwYjIxYzA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC0xMjEsMjcgKzEyMSwyNyBAQCBP
cHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dlZFNldHRpbmc8VD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIwOwogICAgIGRl
Y29kZXIgPj4gY2hhcjA7CiAgICAgaWYgKCFjaGFyMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ4
X3Q+IGNoYXIxOwogICAgIGRlY29kZXIgPj4gY2hhcjE7CiAgICAgaWYgKCFjaGFyMSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIyOwogICAgIGRlY29kZXIgPj4gY2hhcjI7CiAgICAg
aWYgKCFjaGFyMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIzOwogICAgIGRlY29k
ZXIgPj4gY2hhcjM7CiAgICAgaWYgKCFjaGFyMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFQ+IHZhbHVl
OwogICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBGb250VGFnZ2VkU2V0dGluZzxUPih7ewogICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPigqY2hh
cjApLApAQCAtMjA4LDcgKzIwOCw3IEBAIE9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nczxUPj4g
Rm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+PiBsaXN0OwogICAgIGRlY29kZXIgPj4g
bGlzdDsKICAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250VGFnZ2VkU2V0dGluZ3MgcmVzdWx0
OwogICAgIHJlc3VsdC5tX2xpc3QgPSBXVEZNb3ZlKCpsaXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCmluZGV4IDRiOGIzZTI3NmI0MzliNTdlYzBjZTNj
YmQ5MzZkZTI3OTQxYzllOWUuLmNjZDNlODU3YTVjYTljZDhkYTA5NjdjMWFiMDkzNGFmYzM3NGM1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBPcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZ1ZhbHVlKQogewogICAgIGF1dG8gYXNjaWlWYWx1ZSA9IHN0cmluZ1ZhbHVl
LmFzY2lpKCk7CiAgICAgaWYgKGFzY2lpVmFsdWUubGVuZ3RoKCkgIT0gNCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNv
bnN0IGNoYXIqIGRhdGEgPSBhc2NpaVZhbHVlLmRhdGEoKTsKICAgICBBU1NFUlQoYXNjaWlWYWx1
ZS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5jcHAKaW5kZXggY2U3YTQzOWUyZDFiMWVjNmY0M2JhMTkxNmVkNjE5OTlmOWE1ODk3OS4uN2Fi
YzNjMDhmZTIxODg2ZDJhYjIxOWVkYjkzYTAxMGNkYmRlNTFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xODYsOCArMTg2LDggQEAg
dW5zaWduZWQgR0xDb250ZXh0Ojp2ZXJzaW9uKCkKICAgICAgICAgICAgIHZlcnNpb25EaWdpdHMg
PSB2ZXJzaW9uU3RyaW5nQ29tcG9uZW50c1swXS5zcGxpdCgnLicpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV92ZXJzaW9uID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWdu
ZWQ+KHZlcnNpb25EaWdpdHNbMF0pLnZhbHVlT3IoMCkgKiAxMDAKLSAgICAgICAgICAgICsgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMV0p
LnZhbHVlT3IoMCkgKiAxMDsKKyAgICAgICAgbV92ZXJzaW9uID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMF0pLnZhbHVlX29yKDApICog
MTAwCisgICAgICAgICAgICArIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2ln
bmVkPih2ZXJzaW9uRGlnaXRzWzFdKS52YWx1ZV9vcigwKSAqIDEwOwogICAgIH0KICAgICByZXR1
cm4gbV92ZXJzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCmluZGV4IDMwOGRlNTUzZWMxZGZjN2IxNjdkNDBj
ZDY3MWRjNWQ5ZmI2ZjdlYmQuLmMxZGI4MTI3N2E5NDA5ZDEyMWE1N2RjODk1MTY3NmI5ZTNiMWM4
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9t
ZXRyeVV0aWxpdGllcy5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBSb3RhdGVkUmVjdCByb3RhdGVk
Qm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFkJiBx
dWFkLAogewogICAgIGNvbnN0ZXhwciBhdXRvIHR3b1BpRmxvYXQgPSAyICogcGlGbG9hdDsKIAot
ICAgIGF1dG8gbWluUm90YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlvbkluUmFkaWFucy52YWx1ZU9y
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkpOworICAgIGF1dG8gbWluUm90
YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlvbkluUmFkaWFucy52YWx1ZV9vcihzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpKTsKIAogICAgIGF1dG8gbGVmdE1pZFBvaW50ID0gbWlk
UG9pbnQocXVhZC5wMSgpLCBxdWFkLnA0KCkpOwogICAgIGF1dG8gcmlnaHRNaWRQb2ludCA9IG1p
ZFBvaW50KHF1YWQucDIoKSwgcXVhZC5wMygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCmluZGV4IGQ4Y2VjNjkzNGMwM2Ix
ZTE1YzZlZjU2NGMxOWIzNDQwNGMxM2Y0ZDUuLjgwZGUxMGVmYWRiOTljNjhkM2UwNWJiNjExMjI5
Nzk5ODQ2NWZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dlb21ldHJ5VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VvbWV0cnlVdGlsaXRpZXMuaApAQCAtNjgsNiArNjgsNiBAQCBzdHJ1Y3QgUm90YXRlZFJl
Y3QgewogICAgIGZsb2F0IGFuZ2xlSW5SYWRpYW5zOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgUm90
YXRlZFJlY3Qgcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9uKGNv
bnN0IEZsb2F0UXVhZCYsIE9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFkaWFucyA9IFdU
Rjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBSb3RhdGVkUmVjdCByb3RhdGVkQm91bmRpbmdS
ZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFkJiwgT3B0aW9uYWw8
ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3RkOjpudWxsb3B0KTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggNDVjYWE3
ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5Zi4uOTQ5NzUwZGIwZTQwNWVhYWNmNGI1
ZGRjN2Q3NzIxYWM3MWY4YTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gdW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaW5kZXgpOwogICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8R2x5cGhCdWZmZXJTdHJpbmdP
ZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCA3OWUyZjUzODhjNDZlNTg5MjMwMTYxYzQ3NDUy
NTQxOTI0N2U4MmFiLi5hNDRmNjg0YWMwZTIwN2ExZWU0ZDkwZmI1NmYyMDIxZTBhNzQ1MWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NN
YXAuaApAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIEZsb2F0UmVjdCBHbHlw
aE1ldHJpY3NNYXA8RmxvYXRSZWN0Pjo6dW5rbm93bk1ldHJpY3MoKQogCiB0ZW1wbGF0ZTw+IGlu
bGluZSBPcHRpb25hbDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0aW9uYWw8UGF0aD4+Ojp1bmtu
b3duTWV0cmljcygpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NN
YXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFnZVNs
b3dDYXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuaAppbmRleCA5YzNkMDk3ZjU1OGE1Y2U2ODFjZDI5MzViYTIwNDE1NTA4
YTQxODJhLi4xMzllNzM1NWE4NTI0MjJkOGI4MDg2MjllMmNiNmM3ZDg4ZGVjNGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTE3MywxMiArMTcz
LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPEdyYWRpZW50OjpDb2xv
clN0b3A+IEdyYWRpZW50OjpDb2xvclN0b3A6OmRlCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IG9mZnNl
dDsKICAgICBkZWNvZGVyID4+IG9mZnNldDsKICAgICBpZiAoIW9mZnNldCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29s
b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OwogfQpAQCAtMTk0LDEy
ICsxOTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8R3JhZGllbnQ6
OkxpbmVhckRhdGE+IEdyYWRpZW50OjpMaW5lYXJEYXRhOjoKICAgICBPcHRpb25hbDxGbG9hdFBv
aW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAgICAgaWYgKCFwb2ludDApCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CiAgICAgZGVjb2RlciA+PiBwb2lu
dDE7CiAgICAgaWYgKCFwb2ludDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnBvaW50MCwgKnBvaW50
MSB9fTsKIH0KQEAgLTIxOCwyNyArMjE4LDI3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+
IE9wdGlvbmFsPEdyYWRpZW50OjpSYWRpYWxEYXRhPiBHcmFkaWVudDo6UmFkaWFsRGF0YTo6CiAg
ICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQwOwogICAgIGRlY29kZXIgPj4gcG9pbnQwOwog
ICAgIGlmICghcG9pbnQwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQxOwog
ICAgIGRlY29kZXIgPj4gcG9pbnQxOwogICAgIGlmICghcG9pbnQxKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8ZmxvYXQ+IHN0YXJ0UmFkaXVzOwogICAgIGRlY29kZXIgPj4gc3RhcnRSYWRpdXM7CiAgICAg
aWYgKCFzdGFydFJhZGl1cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBlbmRSYWRpdXM7CiAg
ICAgZGVjb2RlciA+PiBlbmRSYWRpdXM7CiAgICAgaWYgKCFlbmRSYWRpdXMpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxmbG9hdD4gYXNwZWN0UmF0aW87CiAgICAgZGVjb2RlciA+PiBhc3BlY3RSYXRpbzsK
ICAgICBpZiAoIWFzcGVjdFJhdGlvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpwb2ludDAsICpwb2lu
dDEsICpzdGFydFJhZGl1cywgKmVuZFJhZGl1cywgKmFzcGVjdFJhdGlvIH19OwogfQpAQCAtMjU0
LDEyICsyNTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8R3JhZGll
bnQ6OkNvbmljRGF0YT4gR3JhZGllbnQ6OkNvbmljRGF0YTo6ZGUKICAgICBPcHRpb25hbDxGbG9h
dFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAgICAgaWYgKCFwb2ludDAp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGVSYWRpYW5zOwogICAgIGRlY29kZXIgPj4g
YW5nbGVSYWRpYW5zOwogICAgIGlmICghYW5nbGVSYWRpYW5zKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
ICpwb2ludDAsICphbmdsZVJhZGlhbnMgfX07CiB9CkBAIC0yNzcsMTcgKzI3NywxNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBHcmFkaWVudDo6
ZGVjb2RlKERlY29kZXImIGRlYwogICAgIE9wdGlvbmFsPERhdGE+IGRhdGE7CiAgICAgZGVjb2Rl
ciA+PiBkYXRhOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShXVEZNb3ZlKCpkYXRhKSk7CiAKICAgICBPcHRpb25hbDxDb2xvclN0b3BWZWN0
b3I+IHN0b3BzOwogICAgIGRlY29kZXIgPj4gc3RvcHM7CiAgICAgaWYgKCFzdG9wcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBPcHRpb25hbDxib29sPiBzdG9wc1NvcnRlZDsKICAgICBkZWNvZGVyID4+IHN0b3BzU29ydGVk
OwogICAgIGlmICghc3RvcHNTb3J0ZWQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKnN0b3BzU29y
dGVkKQogICAgICAgICBncmFkaWVudC0+c2V0U29ydGVkQ29sb3JTdG9wcyhXVEZNb3ZlKCpzdG9w
cykpOwogICAgIGVsc2UgewpAQCAtMjk3LDcgKzI5Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiAKICAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2Q7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzcHJlYWRNZXRob2QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGdyYWRpZW50LT5zZXRTcHJlYWRN
ZXRob2Qoc3ByZWFkTWV0aG9kKTsKIAogICAgIHJldHVybiBncmFkaWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4
IDk3MGMzNzVjYmQ1ODE5YTIwMGIyMGI2NzEzMjg3MGFkNWQ5MTdhOTAuLmM4YWMzODZiODExOTU2
YTc3NmZlZGRmYWVlZjIyODJjOTRhYzg2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTE5LDcgKzUxOSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JU
TCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHN1
YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7
CiAKLSAgICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4dCgqdGhpcywgc3VicnVuLCBj
dXJyUG9pbnQsIDAsIFdURjo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAg
ICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4dCgqdGhpcywgc3VicnVuLCBjdXJyUG9p
bnQsIDAsIHN0ZDo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKICAgICAgICAg
Y3VyclBvaW50Lm1vdmUoYWR2YW5jZSk7CiAKICAgICAgICAgYmlkaVJ1biA9IGJpZGlSdW4tPm5l
eHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggYjczMTczNzcxODA0MWI5ZDg3MjUzODI0YzA3MmJmZDE3MmUzZTU3NS4u
OWQ2Zjc4Y2I1MjVlNmU2ZjhiOTljNjFhODgzYzU2MWM2NzRlMWZhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE1Mywx
MiArMTUzLDEyIEBAIE9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVudE1h
cmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8TW9kZT4g
bW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFtb2RlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiBzaG91
bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfX07CiB9
CkBAIC00NjgsOSArNDY4LDkgQEAgcHVibGljOgogCiAgICAgLy8gVGV4dAogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRp
b25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWdu
ZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYs
IEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJh
d0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
QXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90
UmVhZHkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVC
b3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDhkYzc0
ZmU3YWVhNmU5OWI5MmQ3ZjIzYWQ2MjQ2Y2ZhNTZmNGFmN2YuLjJhZjI2YzljMmQwN2E0NDE3MjVi
MmFlM2I3NDA5OGYzZjYyZmM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIGxheWVyICh0aGUgbG9jYXRpb24gb2YgaXRzIHRvcC1s
ZWZ0IGNvcm5lciBpbiBpdHMgcGFyZW50KQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IFdURjo6
bnVsbG9wdDsgbV9wb3NpdGlvbiA9IHA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgcCkgeyBtX2FwcHJveGltYXRlUG9zaXRpb24gPSBzdGQ6Om51bGxv
cHQ7IG1fcG9zaXRpb24gPSBwOyB9CiAKICAgICAvLyBhcHByb3hpbWF0ZVBvc2l0aW9uLCBpZiBz
ZXQsIG92ZXJyaWRlcyBwb3NpdGlvbigpIGFuZCBpcyB1c2VkIGR1cmluZyBjb3ZlcmFnZSByZWN0
IGNvbXB1dGF0aW9uLgogICAgIEZsb2F0UG9pbnQgYXBwcm94aW1hdGVQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwcm94aW1hdGVQb3NpdGlvbiA/IG1fYXBwcm94aW1hdGVQb3NpdGlvbi52
YWx1ZSgpIDogbV9wb3NpdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCAxNmNkOWE0Mzc3ZjE4OGVlNTM0MGU0ZjRh
NDQ5ZmUyMTczOTUzMTgxLi5lNTgwNTJhM2RjY2VkMDQyNTI3ZmY0ZTcxNTgwN2I1M2NiYzllYjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0
aWVzLmNwcApAQCAtMzksMjMgKzM5LDIzIEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJz
ZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKICAgICBhdXRvIGNv
ZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50ID0g
Y29kZWNTcGxpdC5iZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgSEVWQ1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIC8vIENvZGVj
IGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgc3BlY2lmaWVkIGluIElTTy9JRUMgMTQ0OTYt
MTU6MjAxNCwgc2VjdGlvbiA4OgogICAgIGF1dG8gY29kZWNOYW1lID0gKm5leHRFbGVtZW50Owog
ICAgIGlmIChjb2RlY05hbWUgIT0gImh2YzEiICYmIGNvZGVjTmFtZSAhPSAiaGV2MSIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
Rmlyc3QgZWxlbWVudDogT3B0aW9uYWwgR2VuZXJhbCBQcm9maWxlIFNwYWNlIHBhcmFtZXRlciBb
J0EnLCAnQicsICdDJ10sIG1hcHBpbmcgdG8gWzEsIDIsIDNdCiAgICAgLy8gYW5kIFswXSBmb3Ig
YWJzZW50LCB0aGVuIEdlbmVyYWwgUHJvZmlsZSBJREMgYXMgYSA1LWJpdCBkZWNpbWFsIG51bWJl
ci4KICAgICBhdXRvIHByb2ZpbGVTcGFjZSA9ICpuZXh0RWxlbWVudDsKICAgICBpZiAoIXByb2Zp
bGVTcGFjZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBwcm9maWxl
U3BhY2VbMF07CiAgICAgYm9vbCBoYXNQcm9maWxlU3BhY2UgPSBmaXJzdENoYXJhY3RlciA+PSAn
QScgJiYgZmlyc3RDaGFyYWN0ZXIgPD0gJ0MnOwpAQCAtNjYsMzIgKzY2LDMyIEBAIE9wdGlvbmFs
PEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2Rl
Y1N0cmluZykKIAogICAgIGF1dG8gcHJvZmlsZUlEQyA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihw
cm9maWxlU3BhY2UpOwogICAgIGlmICghcHJvZmlsZUlEQykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmdl
bmVyYWxQcm9maWxlSURDID0gKnByb2ZpbGVJREM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9
PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2Vjb25kIGVsZW1lbnQ6IDMyIGJpdCBv
ZiBHZW5lcmFsIFByb2ZpbGUgQ29tcGF0aWJpbGl0eSBGbGFncywgaW4gcmV2ZXJzZSBiaXQgb3Jk
ZXIsCiAgICAgLy8gaW4gaGV4IHdpdGggbGVhZGluZyB6ZXJvcyBvbWl0dGVkLgogICAgIGF1dG8g
Y29tcGF0aWJpbGl0eUZsYWdzID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90PigqbmV4dEVsZW1lbnQs
IDE2KTsKICAgICBpZiAoIWNvbXBhdGliaWxpdHlGbGFncykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmdl
bmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0eUZsYWdzID0gKmNvbXBhdGliaWxpdHlGbGFnczsKIAog
ICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBU
aGlyZCBlbGVtZW50OiBHZW5lcmFsIFRpZXIgRmxhZyBbJ0wnLCAnSCddLCBtYXBwaW5nIHRvIFtm
YWxzZSwgdHJ1ZV0sIGZvbGxvd2VkIGJ5CiAgICAgLy8gR2VuZXJhbCBMZXZlbCBJREMgYXMgYSA4
LWJpdCBkZWNpbWFsIG51bWJlci4KICAgICBhdXRvIGdlbmVyYWxUaWVyID0gKm5leHRFbGVtZW50
OwogICAgIGZpcnN0Q2hhcmFjdGVyID0gZ2VuZXJhbFRpZXJbMF07CiAgICAgaWYgKGZpcnN0Q2hh
cmFjdGVyICE9ICdMJyAmJiBmaXJzdENoYXJhY3RlciAhPSAnSCcpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdl
bmVyYWxMZXZlbElEQyA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihnZW5lcmFsVGllci5zdWJzdHJp
bmcoMSkpOwogICAgIGlmICghZ2VuZXJhbExldmVsSURDKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ2Vu
ZXJhbExldmVsSURDID0gKmdlbmVyYWxMZXZlbElEQzsKIAogICAgIC8vIE9wdGlvbmFsIGZvdXJ0
aCBhbmQgcmVtYWluaW5nIGVsZW1lbnRzOiBhIHNlcXVlbmNlIG9mIDYgMS1ieXRlIGNvbnN0cmFp
bnQgZmxhZ3MsIGVhY2ggYnl0ZSBlbmNvZGVkCkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8
SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVj
U3RyaW5nKQogICAgICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpu
ZXh0RWxlbWVudCwgMTYpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcmFtZXRl
cnM7CkBAIC0xMDksNyArMTA5LDcgQEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVW
Q0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxGcm9t
UG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCiB7CiAgICAgaWYgKCFwb2ludGVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiAqcG9pbnRlcjsKIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBP
cHRpb25hbDx1aW50MTZfdD4gbWF4aW11bUxldmVsSURGb3JEb1ZpUHJvZmlsZUlEKHVpbnQxNl90
IHByb2ZpbGVJRCkKICAgICBjYXNlIDc6IHJldHVybiA5OwogICAgIGNhc2UgODogcmV0dXJuIDEz
OwogICAgIGNhc2UgOTogcmV0dXJuIDU7Ci0gICAgZGVmYXVsdDogcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBkZWZhdWx0OiByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtMTc5
LDUzICsxNzksNTMgQEAgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICBhdXRvIGNvZGVjU3BsaXQgPSBjb2Rl
Y1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50ID0gY29kZWNTcGxpdC5iZWdp
bigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
RG9WaVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGF1dG8gY29kZWMgPSBwYXJzZURvVmlD
b2RlY1R5cGUoKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvZGVjKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuY29kZWMgPSAqY29kZWM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBwcm9maWxlSUQgPSAqbmV4dEVsZW1lbnQ7CiAgICAgaWYg
KCFwcm9maWxlSUQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyID0gcHJv
ZmlsZUlEWzBdOwogICAgIC8vIFByb2ZpbGUgZGVmaW5pdGlvbiBjYW4gZWl0aGVyIGJlIG51bWVy
aWMgb3IgYWxwaGE6CiAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09ICcwJykgewogICAgICAgICBh
dXRvIGJpdHN0cmVhbVByb2ZpbGVJRCA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihwcm9maWxlSUQp
OwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBw
YXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRzdHJlYW1Qcm9maWxlSUQ7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgYXV0byBiaXRzdHJlYW1Qcm9maWxlSUQgPSBwcm9maWxlSURGb3JB
bHBoYWJldGljRG9WaVByb2ZpbGUoY29kZWNWaWV3LmxlZnQoNSArIHByb2ZpbGVJRC5sZW5ndGgo
KSkpOwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRzdHJlYW1Qcm9maWxlSUQ7CiAg
ICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJpdHN0cmVh
bVByb2ZpbGVJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWlzVmFsaWRQcm9maWxlSURGb3JDb2RlYyhwYXJh
bWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCwgcGFyYW1ldGVycy5jb2RlYykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBiaXRz
dHJlYW1MZXZlbElEID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAg
aWYgKCFiaXRzdHJlYW1MZXZlbElEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJ
RCA9ICpiaXRzdHJlYW1MZXZlbElEOwogCiAgICAgYXV0byBtYXhpbXVtTGV2ZWxJRCA9IG1heGlt
dW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCk7
CiAgICAgaWYgKCFtYXhpbXVtTGV2ZWxJRCB8fCBwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQg
PiAqbWF4aW11bUxldmVsSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDE3NjQ3NDdkNjE0MGNmMTE2
YzljNjQyNmRkYzk3MWFjMmJlYjk4MDUuLjI0MmZlMDU3OGZjMTRkMjcwOTY0NjUzNTA2NzM1MmYw
ZGFmZTVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAt
MTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJbnRQ
b2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1
YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBmYWUwZWQ2NDRjZDc0ZmRhMzk3ZWVlNGUyYjZjNzQ5
ZTgzZjBiOTVhLi42NGVhNDgzNzI2OTZkYWU5MDUwYmEwNDEyNWFjMjBmYTA0ZTAwYjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEy
Miw4ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0g
V1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5v
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQsIFByZXNlcnZl
UmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZDQ3MDRhNjQ1YTYyNDc3MWNl
YmRiOTA0MjVkNDVjNjkwZjgxNDE3YS4uNDNmNTJiZDRiZDg5ZDUxNjk1MzdjYjk0Y2M4NWUwNTI5
Y2VmOGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGb3JtYXQKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSk7CiAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc291cmNlUmVjdENsaXBwZWQgPSBpbnRlcnNl
Y3Rpb24oYmFja2VuZFJlY3QoKSwgc291cmNlUmVjdFNjYWxlZCk7CiAgICAgSW50UmVjdCBkZXN0
aW5hdGlvblJlY3QgeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5zaXplKCkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVj
b2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgK
aW5kZXggYTEyYTZkODI4YjI5ZWMzZWU5ZGI4NTdlOWVhZDQ1NGM1NDVlNzg3Ni4uZjhkNjA0NTdi
MjE1MzZmZjM5OTkwYzk4NDZjMDcyNGZlNWY3Y2YyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTczLDEyICs3MywxMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBbHBoYTsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gaGFzQWxwaGE7CiAgICAgICAgICAgICBpZiAoIWhhc0FscGhhKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CiAgICAg
ICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAg
ICAgICpoYXNBbHBoYSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCmluZGV4IDg5NzhlNmFmNzEyZTgzY2Q2NzA4YWEz
M2ZiNWMyNTRmZmM0MmIxMDcuLjNjOWY0OGY0NTY0MzkxNjE2ZGM2ZTZmZjVmOGQ1ZDBkZWM2ZjZi
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFp
bnRpbmdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VQYWludGluZ09wdGlvbnMuaApAQCAtOTUsMjcgKzk1LDI3IEBAIE9wdGlvbmFsPEltYWdlUGFp
bnRpbmdPcHRpb25zPiBJbWFnZVBhaW50aW5nT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0ZU9wZXJhdG9yOwog
ICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgaWYgKCFjb21wb3NpdGVPcGVy
YXRvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwogICAgIGRlY29k
ZXIgPj4gYmxlbmRNb2RlOwogICAgIGlmICghYmxlbmRNb2RlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
RGVjb2RpbmdNb2RlPiBkZWNvZGluZ01vZGU7CiAgICAgZGVjb2RlciA+PiBkZWNvZGluZ01vZGU7
CiAgICAgaWYgKCFkZWNvZGluZ01vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbWFnZU9yaWVudGF0
aW9uOjpPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+PiBvcmllbnRhdGlv
bjsKICAgICBpZiAoIW9yaWVudGF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8SW50ZXJwb2xhdGlv
blF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OwogICAgIGRlY29kZXIgPj4gaW50ZXJwb2xh
dGlvblF1YWxpdHk7CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9uUXVhbGl0eSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBJbWFnZVBhaW50aW5nT3B0aW9ucyB7ICpjb21wb3NpdGVPcGVyYXRvciwgKmJsZW5kTW9k
ZSwgKmRlY29kaW5nTW9kZSwgKm9yaWVudGF0aW9uLCAqaW50ZXJwb2xhdGlvblF1YWxpdHkgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVz
b2x1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJlc29s
dXRpb24uY3BwCmluZGV4IGMxZTJjMmJiYzkzYzc4YmY4Y2FhY2Q4MzMwMDFkMmQxNzZkZDJlMGUu
LmY3NjYwYjA5NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcApAQCAt
MzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPEludFNpemU+IElt
YWdlUmVzb2x1dGlvbjo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXplJiBzb3Vy
Y2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlmICht
ZXRhZGF0YS5yZXNvbHV0aW9uVW5pdCAhPSBSZXNvbHV0aW9uVW5pdDo6SW5jaGVzIHx8IG1ldGFk
YXRhLnJlc29sdXRpb24uaXNFbXB0eSgpIHx8IG1ldGFkYXRhLnByZWZlcnJlZFNpemUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBzaXplRnJvbVJlc29sdXRpb24gPSBzb3VyY2VTaXplICogRGVm
YXVsdFJlc29sdXRpb24gLyBtZXRhZGF0YS5yZXNvbHV0aW9uOwogCiAgICAgaWYgKHNpemVGcm9t
UmVzb2x1dGlvbiA9PSBtZXRhZGF0YS5wcmVmZXJyZWRTaXplKQogICAgICAgICByZXR1cm4gcm91
bmRlZEludFNpemUobWV0YWRhdGEucHJlZmVycmVkU2l6ZSk7CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA5ZTBjNWYwOGJi
NmVlMTc1M2IyNTg4ODhjZDU1ZmE4MjdlMWI5YTFkLi41ZDkxNmMwZmU1ZDcwMTkxYjkyZDQwYWM3
OTE0Y2JkZTVjMDQzNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgT3B0aW9uYWw8SW50U2l6ZT4g
SW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24KIHsKICAgICBhdXRvIHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVlZGVk
KG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1ldGFkYXRhVHlwZTo6RGVuc2l0eUNvcnJlY3RlZFNp
emUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChvcmllbnRhdGlvbiA9
PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVudGF0aW9uID0gdGhp
cy0+b3JpZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZEdlbmVyaWNDdWUuaAppbmRleCBjZWQ2ODFiMGI3NDMxMDdlNDRjOTg4NzY2OTE0
ZDMwNDY1Mzg0ZWI5Li4zMjE1MTliZTMyMTNkOTA2ZTFiYTFkZmE4NjI0OWRjNjBhZTY5ZTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmlj
Q3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2VuZXJp
Y0N1ZS5oCkBAIC05MCw4MiArOTAsODIgQEAgT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdlbmVy
aWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxJbmJhbmRH
ZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CiAgICAgZGVjb2RlciA+PiB1bmlxdWVJZDsK
ICAgICBpZiAoIXVuaXF1ZUlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRp
bWU7CiAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgaWYgKCFzdGFydFRpbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CiAgICAgZGVjb2RlciA+PiBlbmRUaW1l
OwogICAgIGlmICghZW5kVGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50OwogICAgIGRlY29kZXIgPj4gY29udGVudDsK
ICAgICBpZiAoIWNvbnRlbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGZvbnROYW1lOwog
ICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CiAgICAgaWYgKCFmb250TmFtZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGRvdWJsZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxpbmU7CiAgICAgaWYgKCFsaW5l
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKICAgICBkZWNvZGVyID4+IHBv
c2l0aW9uOwogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+IHNp
emU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gYmFzZUZvbnRTaXplOwog
ICAgIGlmICghYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiByZWxhdGl2
ZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKICAgICBpZiAoIXJl
bGF0aXZlRm9udFNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENvbG9y
OwogICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOwogICAgIGlmICghZm9yZWdyb3VuZENv
bG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBkZWNv
ZGVyID4+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKICAgICBkZWNvZGVyID4+IGhpZ2hs
aWdodENvbG9yOwogICAgIGlmICghaGlnaGxpZ2h0Q29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxB
bGlnbm1lbnQ+IGFsaWdubWVudDsKICAgICBkZWNvZGVyID4+IGFsaWdubWVudDsKICAgICBpZiAo
IWFsaWdubWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0YXR1cz4gc3RhdHVzOwogICAgIGRlY29k
ZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR2VuZXJpY0N1ZURhdGEg
ZGF0YSA9IHsKIApAQCAtMTk0LDcgKzE5NCw3IEBAIE9wdGlvbmFsPEdlbmVyaWNDdWVEYXRhPiBH
ZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfTsKIAogICAgIGlm
ICghZGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oCmluZGV4IGRlNDUz
ZDkxOWU4YzRjYzAyOTUwZjdlNjFjZjAzZmNhZjc2MzcwOTMuLjNhMDJlNTYwNWFiMjhjYWUzNDk0
Zjg4NzVmYzQ2NTQzYzMwYmIzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBPcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIE1vdmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhLmxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtMTA5LDEwICsxMDks
MTAgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8TGluZURhdGE+IExpbmVEYXRh
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBMaW5lRGF0YSBkYXRhOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEuZW5kKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpAQCAtMTMyLDI1ICsxMzIs
MjUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXJjRGF0YT4gQXJjRGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXJjRGF0YSBkYXRhOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEuY2VudGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5yYWRpdXMp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0QW5nbGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZEFuZ2xlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5jbG9ja3dpc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0xNjYsMTMgKzE2Niwx
MyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxRdWFkQ3VydmVEYXRhPiBRdWFk
Q3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIFF1YWRDdXJ2ZURhdGEgZGF0YTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2ludCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuY29udHJvbFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5lbmRQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTE4
OSwxNiArMTg5LDE2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEJlemllckN1
cnZlRGF0YT4gQmV6aWVyQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlCiB7CiAgICAgQmV6aWVyQ3Vy
dmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0UG9pbnQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRyb2xQb2ludDEpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRyb2xQb2ludDIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmluZGV4
IDI0MmZmYTlkMjYxZjI5YzFmYzIyZWFhNDhlZmI5ZjQxMTA4Y2VkYzAuLmM5Y2JkODFkYjIwYThi
NmU0ZTExZGQwNDdjYTNiOWNkZGIyOGZhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTcwLDEyICs3MCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKICAgICAgICAgZGVjb2RlciA+
PiBsYXlvdXRQb2ludDsKICAgICAgICAgaWYgKCFsYXlvdXRQb2ludCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7CiAgICAgICAgIGRlY29kZXIg
Pj4gbGF5b3V0U2l6ZTsKICAgICAgICAgaWYgKCFsYXlvdXRTaXplKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmV0dXJuIHt7ICpsYXlvdXRQb2ludCwgKmxheW91dFNpemUgfX07CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDNlNGUxYTI0MzM5ZGY1ZmMwMjJiMjU0YTMwYmM1OTdmYmI4ZjEwOTguLmRmYWNjNjI0YjE4NzE4
OGYzNTFkN2NlYTk5NDM1NjMxODQ0YjVlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEyODEsNyArMTI4MSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKIHsKICAgICBjbGllbnQoKS5tZWRpYVBs
YXllclJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcGVuZGluZ1NlZWtSZXF1ZXN0ICYm
IG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZl
TWV0YWRhdGEpCi0gICAgICAgIHNlZWsoKnN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nU2Vla1JlcXVl
c3QsIFdURjo6bnVsbG9wdCkpOworICAgICAgICBzZWVrKCpzdGQ6OmV4Y2hhbmdlKG1fcGVuZGlu
Z1NlZWtSZXF1ZXN0LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6dm9s
dW1lQ2hhbmdlZChkb3VibGUgbmV3Vm9sdW1lKQpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6ZW5kZWQoKSBjb25zdAogT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiBNZWRpYVBsYXllcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAg
ICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGY5NmZiNDU1ZGZjYmNkMDgyNWM3OWMzOGFkOTY1OTNl
NzUxMDA0ZS4uYWExMTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQzNWJlZDU3YTFjMmEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0xMTIs
MjcgKzExMiwyNyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAgICAg
ICAgIE9wdGlvbmFsPENvbnRlbnRUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7
CiAgICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFVSTD4g
dXJsOwogICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOwogICAgICAgICBkZWNv
ZGVyID4+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07CiAgICAgICAgIGRl
Y29kZXIgPj4gaXNNZWRpYVN0cmVhbTsKICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENvbnRlbnRUeXBlPj4gdHlwZXNSZXF1
aXJpbmdIYXJkd2FyZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlc1JlcXVpcmluZ0hhcmR3YXJl
OwogICAgICAgICBpZiAoIXR5cGVzUmVxdWlyaW5nSGFyZHdhcmUpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksICppc01lZGlhU291
cmNlLCAqaXNNZWRpYVN0cmVhbSwgKnR5cGVzUmVxdWlyaW5nSGFyZHdhcmUgfX07CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaAppbmRleCA5Y2ZjYjBkNGE0ZTg2YmQ1NTAxYTI4NGU4ZmIwZmUzYmI2MDIwYWRiLi44
NzdmOGMwZWJhNzg2NzFjYmM4YWE1MmVmNjc5NDY3NTFiYWJjYjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApAQCAt
MTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGRp
ZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYp
IGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9v
bD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGU6OlVua25vd247IH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygp
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCmlu
ZGV4IGNmOTE5ZmI3YzlhZjI2NGFjOTU4OGQ1MjJiZjE2ZjY0MjEwZmUyNDQuLjRmYTgyNzNjZGNj
ZDk5MDgxYmIyZjQyMmVjZmQxMWE3Mzg4MDZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEwNSwxMSAr
MTA1LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IH0KIAotICAgIEZs
b2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBXVEY6Om51
bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25z
dCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWdu
ZWQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJu
IHsgfTsgfQogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0IEZs
b2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWwgeyB9CiAKLSAgICB2b2lkIGRyYXdF
bXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0
b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFy
a3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0
ZDo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9udENh
c2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRlOjpD
dXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihj
b25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgZmluYWwgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4IGNlZDcxMmEyM2ViYzhm
MmFhMWYyOWMzMGQxZjBjYTg3ZTE0OGRlM2YuLmRhZDY0M2Y3ZjE0NmNkYWQ5NjRhNzU4NmVhODg2
MDVkMzY4OTE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3Bw
CkBAIC00OTksNyArNDk5LDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpib3VuZGluZ1Jl
Y3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCAzMDdj
YTUxNWRhOTYwOThhNjRkNWI2NWI2NzFiOTQzNjQ1YzU2ZGNmLi5hMDE1NjQ2YzY3MDg1YzQ1MzVl
NjkzNjFjYWY0NTkzYzdhY2JlMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5oCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICNpZiBFTkFCTEUoSU5M
SU5FX1BBVEhfREFUQSkKICAgICBib29sIGhhc0lubGluZURhdGE7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNJbmxpbmVEYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNJbmxpbmVEYXRhKSB7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGF0aC5tX2lubGluZURhdGEpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgfQpAQCAtMzU0LDM4ICszNTQsMzggQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAKICAgICB1aW50NjRfdCBudW1Qb2ludHM7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShudW1Qb2ludHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGF0aC5jbGVhcigpOwogCiAgICAgZm9yICh1aW50
NjRfdCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKSB7CiAgICAgICAgIFBhdGhFbGVtZW50OjpU
eXBlIGVsZW1lbnRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVsZW1lbnRUeXBl
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN3aXRjaCAoZWxlbWVudFR5cGUpIHsKICAgICAgICAg
Y2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0
UG9pbnQgcG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBwYXRoLm1vdmVUbyhwb2ludCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBlOjpB
ZGRMaW5lVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2ludCBwb2ludDsKICAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRDdXJ2ZVRvUG9pbnQ6
IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50OwogICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZW5kUG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcGF0aC5h
ZGRRdWFkQ3VydmVUbyhjb250cm9sUG9pbnQsIGVuZFBvaW50KTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGNhc2UgUGF0aEVs
ZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2ludCBj
b250cm9sUG9pbnQxOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9p
bnQxKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJv
bFBvaW50MjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udHJvbFBvaW50Mikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50Owog
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmRQb2ludCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgICAgICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50MSwg
Y29udHJvbFBvaW50MiwgZW5kUG9pbnQpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggZDAyYTQ2YjNhM2FmOGNkNzJk
ODgwOTJiOTM4ZTlmMjI3MTBlYzI3Yi4uOGM2ODZhMWYyMjhjODAwODVjNDVlOTllYjgwYWM1OTM4
NGVlYmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApA
QCAtMTA4LDE3ICsxMDgsMTcgQEAgT3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gUGF0dGVy
bjo6UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8QWZm
aW5lVHJhbnNmb3JtPiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgZGVjb2RlciA+PiBwYXR0
ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgaWYgKCFwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxib29sPiByZXBlYXRYOwogICAgIGRlY29kZXIgPj4gcmVwZWF0WDsKICAg
ICBpZiAoIXJlcGVhdFgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiByZXBlYXRZOwogICAgIGRl
Y29kZXIgPj4gcmVwZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
KnJlcGVhdFgsICpyZXBlYXRZLCAqcGF0dGVyblNwYWNlVHJhbnNmb3JtIH19OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4IDhk
YjRmYTI3YmU0NWVjMTYzYjljOTViMzMzYTAxNWY5NTUzMjVmMmYuLmZhNzE2NjIzZWJlMzc5ODg2
ZWYwZmVkMzI2ZmQ1NjA1NjNlMzg3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYKIAogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0
cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFCeXRlTGVuZ3RoKTsKICAgICBpZiAoIXBpeGVsQXJy
YXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5v
bk51bGwoKSB9IH07CiB9CiAKQEAgLTczLDEwICs3MywxMCBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0
LCBjbwogCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBz
aXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBw
aXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVm
ZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9OwogfQog
CkBAIC04NiwxMiArODYsMTIgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY28KIAogICAgIGF1dG8g
YnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1
ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChidWZmZXJTaXplLnVuc2FmZUdl
dCgpICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5
ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwg
YnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApp
bmRleCBmNzU1Y2UxMDBhNzhiZmMzNjNiODg5NjgyZGFhZjZiMDE0MTg4N2U4Li5jMzUzZmViZGNk
ZjM5MDJmZjNjNTJlZTEzY2RhZDliZjliOWUwYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTkwLDMxICs5MCwzMSBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7
CiAgICAgZGVjb2RlciA+PiBmb3JtYXQ7CiAgICAgaWYgKCFmb3JtYXQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBG
SVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4KICAgICBpZiAoIShmb3JtYXQtPnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpCR1JBOCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOwogICAg
IGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNvbXB1dGVk
QnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAqc2l6
ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlZEJ1ZmZlclNpemUudW5zYWZlR2V0KCk7CiAgICAg
aWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhf
dD4oYnVmZmVyU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGVGb3JEZWNvZGluZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7CiAg
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlc3VsdC0+bV9kYXRhLT5kYXRhKCksIHJlc3VsdC0+bV9kYXRhLT5ieXRlTGVuZ3RoKCks
IDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCmluZGV4IDdmMjA4M2U2NTc2
ZTRmY2UyMTFiOGFhMjA5ZDQ1ZDUyODcwMjFiODYuLjYwODJlNWI4NDY0MTAzZTUxYjQ0ZmVkZjBh
N2JhNmRmZDU4MGJmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaApAQCAtNTQsMTcgKzU0LDE3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1h
dDo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4gYWxwaGFG
b3JtYXQ7CiAgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsKICAgICBpZiAoIWFscGhhRm9ybWF0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OwogICAgIGRlY29k
ZXIgPj4gcGl4ZWxGb3JtYXQ7CiAgICAgaWYgKCFwaXhlbEZvcm1hdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNv
bG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9ybWF0KSwgV1RGTW92ZSgqY29sb3JT
cGFjZSkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAppbmRleCAzZmZiMzZmNTU2N2MxMWUxMjUxYWY5N2Y0ODFm
ZWQyNmU4OTJjMWMzLi5jYjk3MDEyNWE0YjA0YjQ2YTVjMzViZGFjYzc2ZjMwODAxZTFjNmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9y
U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNv
bG9yU3BhY2UuaApAQCAtODAsNyArODAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRp
b25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKAogICAg
IE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKICAgICBkZWNvZGVyID4+
IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqbmFtZSB9IH07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRl
eHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0
VHJhY2suaAppbmRleCAyYmM4ZWZhZTM0OTgwNGVkNTAwMWQ2MDE1ZjNhOTllMGZjOGFhYjRkLi5m
Y2JkMjc1Zjk1ZjMwYzJlYmMyMjRhM2FjNjg1ODU1ZGRlNjI2MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKQEAgLTg3
LDQyICs4Nyw0MiBAQCBPcHRpb25hbDxQbGF0Zm9ybVRleHRUcmFja0RhdGE+IFBsYXRmb3JtVGV4
dFRyYWNrRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxTdHJpbmc+IGxhbmd1YWdlOwogICAgIGRlY29kZXIgPj4gbGFuZ3VhZ2U7CiAg
ICAgaWYgKCFsYW5ndWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdXJsOwogICAgIGRl
Y29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhY2tNb2Rl
PiBtb2RlOwogICAgIGRlY29kZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxUcmFja0tpbmQ+IGtpbmQ7CiAgICAgZGVjb2RlciA+PiBraW5kOwogICAgIGlmICgh
a2luZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFRyYWNrVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+
IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiB1bmlxdWVJZDsK
ICAgICBkZWNvZGVyID4+IHVuaXF1ZUlkOwogICAgIGlmICghdW5pcXVlSWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7CiAgICAg
aWYgKCFpc0RlZmF1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQbGF0Zm9ybVRleHRUcmFja0RhdGEgZGF0YSA9IHsK
ICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCA5ODI2ODJjY2ZhMGMwYjhh
NzAyNWY1YzM4Mzg5OTk1MWIzM2RkNmFjLi41ODQ0ODFlOTU2M2ZiY2I5MDZiNjc4Mzg4MWI5Mjkw
MzU1OWU1YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtOTcsMTIgKzk3LDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0OwogICAgICAgICAgICAgZGVjb2RlciA+
PiBzdGFydDsKICAgICAgICAgICAgIGlmICghc3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZDsKICAgICAgICAgICAgIGRlY29kZXIg
Pj4gZW5kOwogICAgICAgICAgICAgaWYgKCFlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhcnQpLCBXVEZNb3ZlKCplbmQpIH19OwogICAg
ICAgICB9CkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1UaW1lUmFuZ2VzPiBQ
bGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVkOwogICAgIGRlY29kZXIgPj4gYnVmZmVyZWQ7CiAgICAg
aWYgKCFidWZmZXJlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpidWZmZXJlZCkgfX07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDZkNzE3
OWFiZGJkNDliY2E4NzM3ZGM4MTNjOTg3ZjBjZmE1NjY4MDIuLjdlY2IxYzY5NmIyZThmNTg4YWUx
ZGZhZWQxNzcwNTIxMDA4N2NhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlZ2lvbi5oCkBAIC0yNDYsMTIgKzI0NiwxMiBAQCBPcHRpb25hbDxSZWdpb246OlNoYXBlPiBS
ZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0
b3I8aW50Pj4gc2VnbWVudHM7CiAgICAgZGVjb2RlciA+PiBzZWdtZW50czsKICAgICBpZiAoIXNl
Z21lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbjo6U3Bhbj4+IHNwYW5zOwog
ICAgIGRlY29kZXIgPj4gc3BhbnM7CiAgICAgaWYgKCFzcGFucykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFNoYXBlIHNo
YXBlOwogICAgIHNoYXBlLm1fc2VnbWVudHMgPSBXVEZNb3ZlKCpzZWdtZW50cyk7CkBAIC0yNzYs
MTIgKzI3NiwxMiBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8SW50UmVjdD4gYm91bmRzOwogICAgIGRlY29kZXIgPj4gYm91
bmRzOwogICAgIGlmICghYm91bmRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU2hhcGU7
CiAgICAgZGVjb2RlciA+PiBoYXNTaGFwZTsKICAgICBpZiAoIWhhc1NoYXBlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
UmVnaW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9OwogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0aW9u
YWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRp
b25hbDxTaGFwZT4gc2hhcGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAgICAgIGlm
ICghc2hhcGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5pcXVl
PFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCAxODk1YzIxOTM3NjUxOWMyYzgw
ZGRkMzA2YTI0ZWY3NjRhOWNiMzQ1Li41ODEwMjg2OWE5YzEzNzQ0MGNlYmQwYTEwMmZkNDVjYTI4
OGViYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIE9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1h
Z2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjCiAgICAg
aWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkp
IHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9ybS5tYXBR
dWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQb2x5Z29u
Lm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5i
b3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbikuYm91
bmRpbmdCb3goKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllclJlY3QgPSBzaGFkb3dlZFJl
Y3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3ZlKG1fb2Zmc2V0KTsKQEAgLTQyMiw3ICs0MjIsNyBA
QCBPcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4gU2hhZG93Qmx1cjo6
Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlYwogICAgIGlmICghY2xpcFJlY3QuY29udGFpbnMoZW5j
bG9zaW5nSW50UmVjdChsYXllclJlY3QpKSkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90YWxs
eSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwgd2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4KICAg
ICAgICAgaWYgKGludGVyc2VjdGlvbihsYXllclJlY3QsIGNsaXBSZWN0KS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBJbnRSZWN0IGluZmxhdGVkQ2xpcCA9IGNsaXBSZWN0OwogICAg
ICAgICAvLyBQaXhlbHMgYXQgdGhlIGVkZ2VzIGNhbiBiZSBhZmZlY3RlZCBieSBwaXhlbHMgb3V0
c2lkZSB0aGUgYnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAppbmRleCA3MTEzOGRmMjk0YWY4OWIzMDVkMTNlODA5
ZDdmNGQyN2Q5MWI2ZDE0Li5kMGIwMmEzNDgyYmY3M2QxYjNmY2ViOTM4ZTZlOTliNDBkMWVhNTdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZh
dGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1By
aXZhdGVCYXNlLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
T3B0aW9uYWw8dWludDY0X3Q+IFRyYWNrUHJpdmF0ZUJhc2U6OnRyYWNrVUlEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IE9wdGlvbmFsPGJvb2w+IFRyYWNrUHJpdmF0ZUJhc2U6OmRlZmF1bHRFbmFibGVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDcyZWE0ZjQwY2U2ODNkZTIyZjMx
ZDlmNDQyNWZlMDE2ZDczZjFjOWIuLmY1NzcyNGQ5NjQ4NjI2MjAxOGYzY2JhNDViMWYxMDFhYTQx
NWIwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAg
ICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CiAgICAgYXV0byBuZXh0
RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4oKTsKICAgICBpZiAobmV4dEVsZW1lbnQgPT0gY29k
ZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIGNvbmZp
Z3VyYXRpb247CiAKQEAgLTE0NiwzMyArMTQ2LDMzIEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3
CiAKICAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1ZXMgYXJlICd2cDA4JyBvciAn
dnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA4IiAmJiBjb25m
aWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobmV4dEVsZW1lbnQg
PT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpcnN0IGVsZW1lbnQ6IHByb2ZpbGUu
IExlZ2FsIHZhbHVlcyBhcmUgMC0zLgogICAgIGF1dG8gcHJvZmlsZSA9IHBhcnNlSW50ZWdlcjx1
aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghcHJvZmlsZSB8fCAqcHJvZmlsZSA+IDMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY29uZmlndXJhdGlvbi5wcm9maWxlID0gKnByb2ZpbGU7CiAKICAgICBpZiAoKytu
ZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2Vjb25kIGVsZW1l
bnQ6IGxldmVsLiBMZWdhbCB2YWx1ZXMgYXJlIGVudW1lcmF0ZWQgaW4gdmFsaWRWUExldmVscyBh
Ym92ZS4KICAgICBhdXRvIGxldmVsID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVu
dCk7CiAgICAgaWYgKCFsZXZlbCB8fCAhaXNWYWxpZFZQTGV2ZWwoKmxldmVsKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBj
b25maWd1cmF0aW9uLmxldmVsID0gKmxldmVsOwogCiAgICAgaWYgKCsrbmV4dEVsZW1lbnQgPT0g
Y29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXJkIGVsZW1lbnQ6IGJpdERlcHRoLiBM
ZWdhbCB2YWx1ZXMgYXJlIDgsIDEwLCBhbmQgMTIuCiAgICAgYXV0byBiaXREZXB0aCA9IHBhcnNl
SW50ZWdlcjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghYml0RGVwdGggfHwgKCpi
aXREZXB0aCAhPSA4ICYmICpiaXREZXB0aCAhPSAxMCAmJiAqYml0RGVwdGggIT0gMTIpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGNvbmZpZ3VyYXRpb24uYml0RGVwdGggPSAqYml0RGVwdGg7CiAKICAgICAvLyAiY29sb3JQ
cmltYXJpZXMsIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzLCBtYXRyaXhDb2VmZmljaWVudHMsIHZp
ZGVvRnVsbFJhbmdlRmxhZywgYW5kIGNocm9tYVN1YnNhbXBsaW5nIGFyZSBPUFRJT05BTCwKQEAg
LTE4NSw1NCArMTg1LDU0IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBw
YXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gRm91cnRo
IGVsZW1lbnQ6IGNocm9tYVN1YnNhbXBsaW5nLiBMZWdhbCB2YWx1ZXMgYXJlIDAtMy4KICAgICBh
dXRvIGNocm9tYVN1YnNhbXBsaW5nID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVu
dCk7CiAgICAgaWYgKCFjaHJvbWFTdWJzYW1wbGluZyB8fCAqY2hyb21hU3Vic2FtcGxpbmcgPiBW
UENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDQ0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNvbmZpZ3VyYXRpb24uY2hyb21hU3Vic2FtcGxpbmcgPSAqY2hyb21hU3Vic2FtcGxpbmc7CiAK
ICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
RmlmdGggZWxlbWVudDogY29sb3JQcmltYXJpZXMuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBi
eSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMw
OTEtMjoyMDE5LgogICAgIGF1dG8gY29sb3JQcmltYXJpZXMgPSBwYXJzZUludGVnZXI8dWludDhf
dD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvbG9yUHJpbWFyaWVzIHx8ICFpc1ZhbGlkVlBD
b2xvclByaW1hcmllcygqY29sb3JQcmltYXJpZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24uY29s
b3JQcmltYXJpZXMgPSAqY29sb3JQcmltYXJpZXM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9
PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2l4dGggZWxlbWVudDogdHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3MuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDAx
LTg6MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAg
IGF1dG8gdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5l
eHRFbGVtZW50KTsKICAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICFpc1ZhbGlk
VlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcygqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGNvbmZpZ3VyYXRpb24udHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSAqdHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3M7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gU2V2ZW50aCBlbGVtZW50OiBtYXRyaXhDb2VmZmljaWVudHMuIExlZ2Fs
IHZhbHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRlZAog
ICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1dG8gbWF0cml4Q29lZmZpY2ll
bnRzID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFtYXRy
aXhDb2VmZmljaWVudHMgfHwgIWlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cygqbWF0cml4Q29l
ZmZpY2llbnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBjb25maWd1cmF0aW9uLm1hdHJpeENvZWZmaWNpZW50cyA9ICpt
YXRyaXhDb2VmZmljaWVudHM7CiAKICAgICAvLyAiSWYgbWF0cml4Q29lZmZpY2llbnRzIGlzIDAg
KFJHQiksIHRoZW4gY2hyb21hIHN1YnNhbXBsaW5nIE1VU1QgYmUgMyAoNDo0OjQpLiIKICAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzICYmIGNvbmZpZ3VyYXRpb24uY2hy
b21hU3Vic2FtcGxpbmcgIT0gMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVj
U3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBFaWdodGggZWxlbWVudDogdmlkZW9GdWxsUmFuZ2VG
bGFnLiBMZWdhbCB2YWx1ZXMgYXJlIDAgYW5kIDEuCiAgICAgYXV0byB2aWRlb0Z1bGxSYW5nZUZs
YWcgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIXZpZGVv
RnVsbFJhbmdlRmxhZyB8fCAqdmlkZW9GdWxsUmFuZ2VGbGFnID4gMSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25maWd1
cmF0aW9uLnZpZGVvRnVsbFJhbmdlRmxhZyA9ICp2aWRlb0Z1bGxSYW5nZUZsYWc7CiAKICAgICBp
ZiAoKytuZXh0RWxlbWVudCAhPSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5oCmluZGV4IGExODhhNzQ0ZDQyNjY1ZWY4NDZjNTIwNjUxMGUwMDRiNTI0Mzk5
ZmUuLjhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRlNzRlMWQ2NDVjNzIyOGEyMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgICAgICBPcHRpb25hbDx0
eXBlPiBuYW1lOyBcCiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgICAgICBpZiAoIW5h
bWUpIFwKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7IFwKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7IFwKIAogICAgICAgICBERUNPREUod2lkdGgsIGRvdWJsZSk7CiAg
ICAgICAgIERFQ09ERShoZWlnaHQsIGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5o
CmluZGV4IDU5MTI0ZjRmZmE0MGE1YTQ3ZjQ4ZDdlNWQ5ZjEwYmQxZmYyMjI1ZTAuLjBhN2Y2NzNj
ZTJjMTY0MjY3ZGMxMDBkNWUwMzI4NmNlNTYxZWUzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcy5oCkBAIC01MiwyNyArNTIsMjcgQEAgc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0
cmljcyB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOwogICAg
ICAgICBkZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghdG90YWxWaWRl
b0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkcm9wcGVk
VmlkZW9GcmFtZXM7CiAgICAgICAgIGRlY29kZXIgPj4gZHJvcHBlZFZpZGVvRnJhbWVzOwogICAg
ICAgICBpZiAoIWRyb3BwZWRWaWRlb0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2RlciA+PiBj
b3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCFjb3JydXB0ZWRWaWRlb0ZyYW1lcykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5Owog
ICAgICAgICBkZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxheTsKICAgICAgICAgaWYgKCF0b3RhbEZy
YW1lRGVsYXkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGlzcGxh
eUNvbXBvc2l0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2RlciA+PiBkaXNwbGF5Q29tcG9z
aXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBpZiAoIWRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFt
ZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sgKnRvdGFsVmlkZW9GcmFtZXMsICpk
cm9wcGVkVmlkZW9GcmFtZXMsICpjb3JydXB0ZWRWaWRlb0ZyYW1lcywgKnRvdGFsRnJhbWVEZWxh
eSwgKmRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMgfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBkYWM0
ZTZmMDk2NWNmOTA5ZDg2MjRmYWFkMjE3NzQ4NDQyZDg3MjQ5Li4yYzIzNmI2N2VjYTBjYjAwYzIz
MTFkNjc3ODdlNjE0OGM1YmIzMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgV2lk
dGhJdGVyYXRvcjo6YXBwbHlBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVy
LCBHbHlwaEluZGV4UmFuCiAKIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNpbmdB
ZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBjaGFyYWN0ZXJT
dGFydEluZGV4LCB1bnNpZ25lZCBnbHlwaEJ1ZmZlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNoYXJh
Y3RlckRlc3RpbmF0aW9uSW5kZXgsIGZsb2F0IHN0YXJ0aW5nUnVuV2lkdGgpCiB7Ci0gICAgVmVj
dG9yPE9wdGlvbmFsPEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4
UmFuZ2UobV9ydW4ubGVuZ3RoKCksIFdURjo6bnVsbG9wdCk7CisgICAgVmVjdG9yPE9wdGlvbmFs
PEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4UmFuZ2UobV9ydW4u
bGVuZ3RoKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlV2lkdGhz
KG1fcnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBnbHlwaEJ1ZmZlclN0
YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHN0
cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLmNoZWNrZWRTdHJpbmdPZmZzZXRBdChpLCBtX3J1bi5s
ZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGNiMDRmN2U0
M2Y5NWExYmI0ZDJkMWJmYmI2OWE1NGExYWZhZDlkYWIuLjZhNmQyMmQ4MWZhOTIxOTljMTUxMjQy
ODlhNzhiYTc2YzA0YTg1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFNjb3BlZFBp
eGVsU3RvcmFnZU1vZGUgcGFja0FsaWdubWVudChHTF9QQUNLX0FMSUdOTUVOVCk7CiAgICAgaWYg
KHBhY2tBbGlnbm1lbnQgPiA0KQogICAgICAgICBwYWNrQWxpZ25tZW50LnBpeGVsU3RvcmUoNCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CmluZGV4IDFmNGFiOGEwYjU4YjlkOWM4YTZiZmIwNWI4MmY0MjY0M2U1NmRmYTIuLjE1MzE2OTFm
Mzc4MWUxZmZlYzA4ZGZkNzQ3YzE3ZmU2MGJlNGFmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00OSw3ICs0OSw3IEBAIGF1
dG8gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFyc2VLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pIC0+IE9wCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJF
eHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwuZnBzXFwuWzIzXV9cXGQrKD86
LFxcZCspKiQiLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogCiAgICAgaWYgKGtl
eVN5c3RlbVJFLmdldCgpLm1hdGNoKGtleVN5c3RlbSkgPCAwKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nVmll
dyBrZXlTeXN0ZW1WaWV3IHsga2V5U3lzdGVtIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBlZmIxNGY0ZjNkOGI4ZDNkMmM1MzJj
ZTZjYTQxZjM1MDliMDk0ZTRiLi5jOTc5ZWI1NzI3ZGJjMzk2MTcyNWIwNTdjN2IxYTJhMmYzZmFj
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwCkBAIC02NywxMyArNjcsMTMgQEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6fkluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYoKQogc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBt
YWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJlZiBjb2xvckFycmF5KQogewog
ICAgIGlmIChDRkFycmF5R2V0Q291bnQoY29sb3JBcnJheSkgPCA0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZmxvYXQg
Y29tcG9uZW50QXJyYXlbNF07CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAg
ICAgICAgQ0ZOdW1iZXJSZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChjb2xvckFycmF5LCBpKSk7CiAgICAgICAgIGlmIChDRkdldFR5cGVJ
RCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGZs
b2F0IGNvbXBvbmVudDsKICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZSwga0NGTnVtYmVy
RmxvYXRUeXBlLCAmY29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGY5YWIw
MjYyZTM2ZDljOTFhNTAyYzZiNWZiNjk0OGZmMDVlOTNkNTIuLmIxYWE1ZGZlNWFhOGQ0ODY3ZDc1
MmI0ZjRhNWFjOGYzYzViN2NiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTkwLDcg
KzE5MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVTZXNzaW9uT3JHcm91cCgpOwogICAg
IGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29uc3Q7CiAKLSAgICBL
ZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMoT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0g
V1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMoT3B0
aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2b2lk
IG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVlc3Qo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3NTY5ZTk4MWIwMmM0YWY5
OGVjYmIyMTk2OTA1ZGE2YWVjZmIwZmU0Li44NzhmNzIyNTg4MTg4Mzc3NzlmNGNmYjQ3MDk0YTc5
ODE2YzgwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzA4LDcgKzMwOCw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBmYWlsKCkKICAgICB7Ci0gICAgICAgIG1fY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
IH0KIAogcHJpdmF0ZToKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogCiAgICAgICAgIGlmICghY2VydGlmaWNhdGUgfHwgIXN0b3JhZ2VVUkwpIHsKICAgICAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRnZWRc
IiwgRmFpbGVkLCBubyBjZXJ0aWZpY2F0ZSBhbmQgc3RvcmFnZVVSTCIpOwotICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgfSk7CiAgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5jcmVh
dGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
cmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0KCkg
d2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRV
Ukw6c3RvcmFnZVVSTF07Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQpOworICAgICAgICBjYWxsYmFjayhmYWxzZSwgeyB9
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgIGF1dG8gcmVxdWVzdCA9IGxhc3RLZXlSZXF1ZXN0KCk7CiAgICAgICAgIGlmICghcmVx
dWVzdCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIs
ICJcInJlbmV3XCIsIEZhaWxlZCwgbm8gb3V0c3RhbmRpbmcga2V5cyIpOwotICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIlwi
cmVuZXdcIiwgcHJvY2Vzc2luZyByZW5ld2FsIik7CkBAIC03OTMsMTMgKzc5MywxMyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogCiAgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0KSB7CiAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gY3Vy
cmVudFJlcXVlc3QiKTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIEtleXMga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdCht
X2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8g
a2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICBj
YWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODE4LDI2ICs4MTgsMjYgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKIAogICAgICAgICAgICAgaWYgKCFyZXNwb25zZXMgfHwg
cmVzcG9uc2VzLnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwgbm8g
cmVzcG9uc2VzIik7Ci0gICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sodHJ1
ZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAg
ICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIFN1Y2NlZWRlZCwgbm8ga2V5SURzIGlu
IGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhm
YWxzZSwga2V5U3RhdHVzZXMoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRl
ZCk7CisgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwga2V5U3RhdHVz
ZXMoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAg
ICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0gbnVsbHB0cjsKLSAgICAgICAgICAgIG1fY3Vy
cmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1ZXN0
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbmV4dFJlcXVlc3QoKTsKICAgICAgICAgfSk7
CiAKICAgICAgICAgYXV0byByb290ID0gcGFyc2VKU09OVmFsdWUocmVzcG9uc2VEYXRhKTsKICAg
ICAgICAgaWYgKCFyb290KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBh
cnJheSA9IHJvb3QtPmFzQXJyYXkoKTsKICAgICAgICAgaWYgKCFhcnJheSkgewotICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC04OTYsNyArODk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgZm9yIChhdXRvIHZhbHVlIDogKmFycmF5KSB7CiAgICAgICAgICAgICBpZiAoIXBh
cnNlUmVzcG9uc2UoV1RGTW92ZSh2YWx1ZSkpKSB7CiAgICAgICAgICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwgY291
bGQgbm90IHBhcnNlIHJlc3BvbnNlIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogICAgICAgICBrZXlTdGF0
dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwogICAgICAgICBrZXlTdGF0dXNlcy51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZShrZXlJRHMuZmlyc3QoKSksIEtleVN0
YXR1czo6VXNhYmxlKSk7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBtYWtlT3B0aW9uYWwoV1RG
TW92ZShrZXlTdGF0dXNlcykpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGtl
eVN0YXR1c2VzKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjUsMTMgKzkyNSwxMyBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5
cGUgbGljZW5zZQogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3RvcmFn
ZVVSTCgpOwogICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQo
KSB8fCAhc3RvcmFnZVVSTCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICIgRmFpbGVkLCBtaXNtYXRjaGVkIHNlc3Npb24gdHlwZSIpOwotICAgICAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
RmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSk7CisgICAg
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9
IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CiAgICAgICAgIGlmICghY2VydGlmaWNh
dGUpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
IEZhaWxlZCwgbm8gc2Vzc2lvbkNlcnRpZmljYXRlIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25M
b2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtOTUyLDEyICs5NTIsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKIAogICAgICAgICBp
ZiAoY2hhbmdlZEtleXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIHNlc3Npb24gZGF0YSBmb3VuZCIpOwot
ICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOworICAgICAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
RmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsICIgU3VjY2VlZGVkLCBtaXNtYXRjaGVkIHNlc3Npb24gdHlwZSIpOwotICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfQogfQogCkBAIC05NjksMTQg
Kzk2OSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsbwogICAgICAgICBBU1NFUlQoIW1fcmVx
dWVzdExpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjaykgewotICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICBtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KTsKICAgICB9CiAgICAgaWYgKG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgewotICAgICAg
ICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7
CisgICAgICAgIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwg
RmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2spOwog
ICAgIH0KLSAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsK
ICAgICBtX3JlcXVlc3RzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2soKTsKQEAgLTk5NSw3ICs5OTUs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgIGlmICghbV9pbnN0YW5jZS0+
cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMIHx8ICFjZXJ0aWZpY2F0ZSkg
ewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFp
bGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93ZWQgb3Igbm8gc3RvcmFnZVVSTCBvciBubyBj
ZXJ0aWZpY2F0ZSIpOwotICAgICAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZh
aWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDE4LDcgKzEwMTgsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgIGlmICghZXhwaXJlZFNlc3Npb25zQXJy
YXkuZ2V0KCkuY291bnQpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJ
REVOVElGSUVSLCAiIFN1Y2NlZWRlZCwgbm8gZXhwaXJlZCBzZXNzaW9ucyIpOwotICAgICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURjo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBzdGQ6Om51bGxv
cHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAy
OCw3ICsxMDI4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIC8vIGEg
cGVyc2lzdGVudC11c2FnZS1yZWNvcmQgbWVzc2FnZSBvbiBjbG9zZS4gU2lnbmFsIHRoaXMgYnkg
ZmFpbGluZyBhbmQgYXNzZXJ0LgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQs
IG5vIGV4cGlyZWQgc2Vzc2lvbiBkYXRhIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2soeyB9
LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxvcHQs
IEZhaWxlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKQEAgLTExMjAsNyAr
MTEyMCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgfSBAY2F0Y2goTlNFeGNlcHRp
b24gKmV4Y2VwdGlvbikgewogICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUiwgImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25IYW5kbGVy
OiAiLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwgW1tleGNl
cHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VD
YWxsYmFjaykKLSAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICAg
ICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVMaWNl
bnNlQ2FsbGJhY2spOwogICAgIH0KIH0KQEAgLTEyNTksOSArMTI1OSw5IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdpbmdS
ZXF1ZXN0KEFWQ29uCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
ICAgIGlmIChlcnJvciAmJiBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykKLSAgICAgICAgICAgICAg
ICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICAgICAgICAgIG1fdXBk
YXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fdXBkYXRlTGlj
ZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIE1lc3NhZ2UoTWVzc2FnZVR5cGU6
OkxpY2Vuc2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5UmVxdWVzdERh
dGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cGRhdGVMaWNl
bnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBNZXNzYWdlKE1l
c3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudEtl
eVJlcXVlc3REYXRhLmdldCgpKSksIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShD
RE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV91cGRh
dGVMaWNlbnNlQ2FsbGJhY2spOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVl
c3QoQVZDb24KICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAg
IEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZXhjZXB0aW9uIHRocm93biBm
cm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNvbnRlbnRJZGVu
dGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVU
RjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJpbmdd
KTsKICAgICAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgbV91
cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVk
KTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogfQpA
QCAtMTMwMCwxMSArMTMwMCwxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250ZQogICAgIH0KIAog
ICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykgewotICAgICAgICBtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgRmFpbGVkKTsKKyAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIEFT
U0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIAotICAgIG1fY3VycmVudFJl
cXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIG5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMzE4LDExICsxMzE4LDExIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3Vj
Y2VlZChBVkNvbnRlbnRLZXlSCiAgICAgfQogCiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxi
YWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBtYWtlT3B0aW9u
YWwoa2V5U3RhdHVzZXMoKSksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQp
OworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjptYWtlX29wdGlv
bmFsKGtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCi0g
ICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgbmV4dFJlcXVlc3QoKTsKIH0KQEAgLTE0ODQsNyArMTQ4
NCw3IEBAIE9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpwcm90ZWN0aW9uU3RhCiAgICAgICAgIC8vIHJlY2VpdmluZyBhIHJl
c3BvbnNlLgogICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgIT0gQVZDb250ZW50S2V5UmVxdWVz
dFN0YXR1c1JlY2VpdmVkUmVzcG9uc2UgJiYgcmVxdWVzdC5zdGF0dXMgIT0gQVZDb250ZW50S2V5
UmVxdWVzdFN0YXR1c1JlbmV3ZWQpIHsKICAgICAgICAgICAgIEFMV0FZU19MT0dfSUZfUE9TU0lC
TEUoTE9HSURFTlRJRklFUiwgInJlcXVlc3QgaGFzIGluc3VmZmljaWVudCBzdGF0dXMgIiwgKGlu
dClyZXF1ZXN0LnN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8g
b2JzY3VyZWQgPSBbcmVxdWVzdCB3aWxsT3V0cHV0QmVPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50
RXh0ZXJuYWxQcm90ZWN0aW9uRm9yRGlzcGxheXM6QFsgXV07CkBAIC0xNDk3LDcgKzE0OTcsNyBA
QCBPcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YQogICAgIGlmIChtX291dHB1dE9ic2N1cmVkKQogICAg
ICAgICByZXR1cm4gQ0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggNTliYzY1ZDQyMTIz
MGYxMGNkNzczNTU4YmVhZTk4M2FiYzAzOTQxYS4uNTgzNjJkYmQyY2MwN2QwMWRkZWE2ZTg5MzJk
ZDQ4ZjcxOGYyOGE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFW
Rk9iakMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgUmVwZXRpdGlvbkNvdW50IHJl
cGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1dGkoKSBjb25zdCBmaW5h
bDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICBPcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICBJbnRTaXplIGZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVy
QVZGT2JqQy5tbQppbmRleCA1MmY5MThmMWVhYmJiMDczZWI0OTI4NWExZjI2YjYyZGVjMTg3NTdl
Li5iNDEyZDVkYmRjNTVlNjgyZTNmMDJjZTk1OTdjZDA4MzNkYjRlNDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURl
Y29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI1Nyw3ICsyNTcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChQQUw6OkNNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciht
X3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJbWFn
ZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8ICFQQUw6OkNNU2FtcGxlQnVm
ZmVyRGF0YUlzUmVhZHkobV9zYW1wbGUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIGJ5dGVSYW5nZUZvckF0dGFjaG1lbnQoUEFMOjprQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50
S2V5X1NhbXBsZVJlZmVyZW5jZUJ5dGVPZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IDQ2NTVmZTVhMDg0YzM4OTExNjlmMGJlZjI3YzMzZmZjZTE2ZWQyNDAuLmE2ZmY2
YzRlNDg4ODliOTkwNzY0NmI0OTM5MmZlNGMyZjJjODBlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpzZXRSYXRlRG91YmxlKGRvdWJsZSByYXRlKQogICAgIG1fcmVxdWVzdGVkUmF0
ZSA9IHJhdGU7CiAgICAgaWYgKG1fcmVxdWVzdGVkUGxheWluZykKICAgICAgICAgc2V0UGxheWVy
UmF0ZShyYXRlKTsKLSAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBsYXll
clJhdGUoZG91YmxlIHJhdGUpCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBsYXllclJhdGUoZG91YmxlIHJhdGUpCiAgICAg
c2V0U2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzKHRydWUpOwogICAgIHNldERlbGF5Q2Fs
bGJhY2tzKGZhbHNlKTsKIAotICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpy
YXRlKCkgY29uc3QKQEAgLTIzNzAsNyArMjM3MCw3IEBAIE9wdGlvbmFsPGJvb2w+IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2VjdXJp
CiAgICAgaWYgKFtzZXNzaW9uIGlzS2luZE9mQ2xhc3M6W1dlYkNvcmVOU1VSTFNlc3Npb24gY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIFtzZXNzaW9uIHdvdWxkVGFpbnRPcmlnaW46b3JpZ2luXTsK
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091
dHB1dCgpCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnRpbWVDb250cm9sU3RhdHVzRGlkQ2hhbmdlKGludCB0aW1lQ29udAogCiAg
ICAgbV9jYWNoZWRUaW1lQ29udHJvbFN0YXR1cyA9IHRpbWVDb250cm9sU3RhdHVzOwogICAgIHJh
dGVDaGFuZ2VkKCk7Ci0gICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gV1RGOjpu
dWxsb3B0OworICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9w
dDsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKCFpc0N1
cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkpCkBAIC0zNDI4LDE2ICszNDI4LDE2IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkRGlzYWJsZVNs
ZWVwKGJvb2wgZmxhZykKIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzKCkKIHsKICAgICBpZiAoIVttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih2aWRlb1BlcmZvcm1hbmNlTWV0cmljcyldKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oV0FUQ0hP
UykKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZWxzZQogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KIAogICAgIGF1dG8g
bWV0cmljcyA9IFttX3ZpZGVvTGF5ZXIgdmlkZW9QZXJmb3JtYW5jZU1ldHJpY3NdOwogICAgIGlm
ICghbWV0cmljcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQzMl90IGRpc3BsYXlDb21wb3NpdGVkRnJhbWVzID0g
MDsKICAgICBpZiAoW21ldHJpY3MgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihudW1iZXJP
ZkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMpXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5t
bQppbmRleCA1YjU5MmViMThiM2U0OWQ2YTUwMzBlZTQ4MTI5NTAwZWY1ZDVhYzg0Li43ZGE1ZDM4
ZDkyZmM3OGZhYzBlNWI5YWViN2M4MmYwZWFkNDI1MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC03MzgsNyArNzM4LDcgQEAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnZpZGUKIAogICAg
IGF1dG8gbWV0cmljcyA9IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB2aWRlb1BlcmZvcm1h
bmNlTWV0cmljc107CiAgICAgaWYgKCFtZXRyaWNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDMyX3QgZGlzcGxh
eUNvbXBvc2l0ZWRGcmFtZXMgPSAwOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNf
QkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAxNzMwNTJhNzNiNTE2MDA2N2U3
OTU3ZDEzODA4YWY1MmQ2N2VmNGYzLi5lMWFkMTAyYmI5ODFiZjM3NGU2YmQ5MzdjMGM2ZTJhODdm
NDBmMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODYsNyArOTg2LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0pCiAgICAg
ICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2ltYWdl
UGFpbnRlci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNmb3Jt
ID0gKm1fdmlkZW9UcmFuc2Zvcm07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3Qg
PSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UmVjdChkZXN0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRl
b1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
ZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9y
bWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0KaW5kZXggNWFjZTYzMDhmOWRjNTQ1NWEyOTY0ZmM4MjVlMWQ5NGUx
NTMzZmY0NC4uN2Q2ZDUwYTVjZmVhYzVlYTc5ZDcwODUzYzA2YjBkMmFkZDQ4OTc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtNDgwLDE2ICs0
ODAsMTYgQEAgT3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1wbGVBVkZP
YmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3QKIHsKICAgICBhdXRvIGJ5dGVPZmZzZXRD
RiA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oUEFMOjpDTUdldEF0dGFjaG1lbnQobV9z
YW1wbGUuZ2V0KCksIGtleSwgbnVsbHB0cikpOwogICAgIGlmICghYnl0ZU9mZnNldENGKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaW50NjRfdCBieXRlT2Zmc2V0ID0gMDsKICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUo
Ynl0ZU9mZnNldENGLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmYnl0ZU9mZnNldCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzID0gMDsKICAgICBQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0U2FtcGxlU2l6ZUFycmF5KG1fc2FtcGxlLmdldCgpLCAwLCBudWxscHRyLCAmc2l6ZUFy
cmF5RW50cmllcyk7CiAgICAgaWYgKHNpemVBcnJheUVudHJpZXMgIT0gMSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNp
emVfdCBzaW5nbGVTaXplRW50cnkgPSAwOwogICAgIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRTYW1w
bGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDEsICZzaW5nbGVTaXplRW50cnksIG51bGxwdHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5tbQppbmRleCBkMzE3M2ZlYmQ2NThlODMxZTFiMTBhZjcwMDBjNzBiMThjNjY1YWQ0Li5j
MWY4NTE0YmE1MDk2ZWJiODM1YjAxNjY1MDJlZTM3Y2MyZDhkMzUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtNzcy
LDcgKzc3Miw3IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVk
VmlkZW8oKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0Rp
ZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkK
IHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
aW50NjRfdD4odHJhY2suaWQoKSkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRyYWNrSUQgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2suaWQoKSkudmFsdWVf
b3IoMCk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lEID0g
IiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKQEAgLTc5OCw3ICs3OTgs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNlbGVj
dGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjawogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNrLCBi
b29sIGVuYWJsZWQpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrLmlkKCkpLnZhbHVlT3IoMCk7CisgICAgYXV0byB0
cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNr
LmlkKCkpLnZhbHVlX29yKDApOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiYXVk
aW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAKQEAg
LTEwNDgsNyArMTA0OCw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSURTdHJpbmcpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgYXV0
byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRy
YWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCB0
cmFja0lEKTsKIAogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkgewpA
QCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Zmx1
c2hWaWRlbygpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIG1fY2FjaGVkU2l6ZSA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX2NhY2hlZFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0
byBwbGF5ZXIgPSB0aGlzLT5wbGF5ZXIoKSkgewogICAgICAgICBwbGF5ZXItPnNldEhhc0F2YWls
YWJsZVZpZGVvRnJhbWUoZmFsc2UpOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgQUxMT1dfTkVXX0FQ
SV9XSVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEU3RyaW5nKQogewotICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDApOworICAg
IGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90
Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBtX2VuYWJs
ZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6YnVmZmVyV2FzQ29uc3VtZWQoKQogCiBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVPcigwKTsKKyAgICBhdXRv
IHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJh
Y2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlk
ZW9UcmFja0lEKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1fZGlz
cGxheUxheWVyV2FzSW50ZXJydXB0ZWQpCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsU2VlaygpCiAKIEZsb2F0U2l6ZSBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAgIHJldHVybiBtX2NhY2hlZFNp
emUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9v
cihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKQEAgLTEyNzIsNyAr
MTI3Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5
Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVPcigw
KTsKKyAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgPT0g
bV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25TZXNz
aW9uKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1ZXN0TWVkaWFE
YXRhV2hlblJlYWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3Jl
U2FtcGxlcyhjb25zdCBBdG9tUwogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpj
YW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSURTdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDApID09IG1fZW5hYmxl
ZFZpZGVvVHJhY2tJRAorICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCkgPT0gbV9lbmFibGVkVmlkZW9U
cmFja0lECiAgICAgICAgICYmIFtnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNzKCkg
aW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGV4cGVjdE1pbmltdW1VcGNvbWlu
Z1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6KV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4
IDFmNGNkNDQ1NDNmMGU5MzgyYjUwZDEwYTk3YTBjMTlhMGQwOGFjNWYuLjExYWM3OTQxYmE3YmUz
OGUzYjg3ODUxZTc1ZjQzZGNjZjJiMWE3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTU3Nyw3ICsx
NTc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJlY3Rz
KGNvbnN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzJgogICAgIGlmIChhdXRvIGV4dGVudCA9IGFu
aW1hdGlvbkV4dGVudCgpKSB7CiAgICAgICAgIC8vIEFkanVzdCB0aGUgYW5pbWF0aW9uIGV4dGVu
dCB0byBtYXRjaCB0aGUgY3VycmVudCBhbmltYXRpb24gcG9zaXRpb24uCiAgICAgICAgIGF1dG8g
YW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50ID0gdHJhbnNmb3JtQnlBcHBseWluZ0Fu
Y2hvclBvaW50KHJlY3RzLmFuaW1hdGluZ1RyYW5zZm9ybSk7Ci0gICAgICAgIGJvdW5kcyA9IGFu
aW1hdGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKS5tYXBSZWN0KCpleHRlbnQpOworICAgICAgICBib3VuZHMgPSBhbmlt
YXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpLm1hcFJlY3QoKmV4dGVudCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0aW9ucyBpbnRvIGFjY291bnQgd2hlbiBkZXRlcm1pbmlu
ZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50ZXJzZWN0cyB0aGUgY292ZXJhZ2UgcmVjdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmgKaW5kZXggZmY4ZGRjNTM1YjZjMDQ0NDhmNmQ5OTQyMGUwMDg4YTNjMjVlMWI0NC4uZTVjZDgy
MmMwZGVjMmFiZmUzOTM0YmNkOTUzZmJkYWNkOTMwMTNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ4MCw3
ICs0ODAsNyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9iZWdpblRp
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2JlZ2luVGltZSAtIG1fdGltZU9mZnNldDsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IG1fYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRleCA5
ZGM4YTdmOGZiMTMzNjNhN2RmMjhiZjk0YjNjNzkyNGEyZjRhYzM3Li5mZDJjYTIyN2Q4ZmRlNDEw
ZmQxNzg3ZWRjMzJjYTI4NDczMWMwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXll
ckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3IKIAogICAg
IHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihncmFwaGljc0NvbnRl
eHQpOwotICAgICAgICBXVEY6Ok9wdGlvbmFsPExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dD4g
cGxhdGZvcm1Db250ZXh0U2F2ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0PiBwbGF0Zm9ybUNvbnRleHRTYXZlcjsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgICAgICBXVEY6Ok9wdGlvbmFsPEZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVy
PiBmb250QW50aWFsaWFzaW5nU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEFudGlh
bGlhc2luZ1N0YXRlU2F2ZXI+IGZvbnRBbnRpYWxpYXNpbmdTdGF0ZTsKICNlbmRpZgogCiAgICAg
ICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJv
dHRvbVVwIG9uIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdGhDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmluZGV4IDJhMTllNDdhOWFhY2VjMjA5NmE2MGU5N2UzYjVj
NDg3NDUzZGFhZjMuLjYzZWFiY2I0MDgwZmY5Y2E4YmFiYWYxYzhmMWU3ZTVlNmEzNjdhMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENh
aXJvLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUGF0aDo6YWRkQmV6aWVyQ3VydmVUb1Ns
b3dDYXNlKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDEsIGNvbnN0IEZsb2F0CiAKIHZv
aWQgUGF0aDo6YWRkQXJjU2xvd0Nhc2UoY29uc3QgRmxvYXRQb2ludCYgcCwgZmxvYXQgciwgZmxv
YXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSkKIHsKLSAg
ICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1cmVDYWlyb1BhdGgoKTsKICAgICBmbG9hdCBzd2Vl
cCA9IGVuZEFuZ2xlIC0gc3RhcnRBbmdsZTsKICAgICBjb25zdCBmbG9hdCB0d29QSSA9IDIgKiBw
aUZsb2F0OwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxv
YXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1f
ZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZmxvYXQgdGFuZ2VudCA9IHJhZGl1cyAvIHRh
bihhY29zKGNvc19waGkpIC8gMik7CiAgICAgZmxvYXQgZmFjdG9yX3AxcDAgPSB0YW5nZW50IC8g
cDFwMF9sZW5ndGg7CiAgICAgRmxvYXRQb2ludCB0X3AxcDAoKHAxLngoKSArIGZhY3Rvcl9wMXAw
ICogcDFwMC54KCkpLCAocDEueSgpICsgZmFjdG9yX3AxcDAgKiBwMXAwLnkoKSkpOwpAQCAtMzUw
LDcgKzM1MCw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNv
bnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAKIHZvaWQgUGF0aDo6YWRkRWxsaXBz
ZShGbG9hdFBvaW50IHBvaW50LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9hdCBy
b3RhdGlvbiwgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nr
d2lzZSkKIHsKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1cmVDYWlyb1BhdGgoKTsKICAg
ICBjYWlyb19zYXZlKGNyKTsKICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHBvaW50LngoKSwgcG9p
bnQueSgpKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoRmxvYXRQ
b2ludCBwb2ludCwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSwgZmxvYXQgcm90YQogCiB2
b2lkIFBhdGg6OmFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG1fZWxl
bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBjYWlyb190KiBjciA9IGVuc3VyZUNhaXJvUGF0aCgpOwogICAgIGNhaXJvX3NhdmUoY3IpOwog
ICAgIGZsb2F0IHlSYWRpdXMgPSAuNSAqIHJlY3QuaGVpZ2h0KCk7CkBAIC0zODcsNyArMzg3LDcg
QEAgdm9pZCBQYXRoOjphZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChjYWlyb19tYXRyaXhfaW52ZXJ0KCZtYXRyaXgpICE9
IENBSVJPX1NUQVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2VsZW1lbnRz
ID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBj
YWlyb190KiBjciA9IHBhdGguY2Fpcm9QYXRoKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4IGUz
YTAxM2QxZGMyMWYxMzZiODlhOTZjZjA3MDE2ODA3YTYyYjNlMmIuLjUxZTBhOGMwZTY0YzMxNGFl
YTZmMjVkZTRhMjkxNGM5ZDE1MTc5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVmIGNv
bG9yKQogICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9y
IHNwYWNlcy4KIAogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgbnVtQ29tcG9uZW50
cyA9IENHQ29sb3JHZXROdW1iZXJPZkNvbXBvbmVudHMoY29sb3IpOwogICAgIGNvbnN0IENHRmxv
YXQqIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhjb2xvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAK
aW5kZXggZTA0NTEwYzBmZjUxNTc3YmUwMTFkODY3NDM0NjQyNDM1YzcwM2Q2Ny4uNjVjN2E4MmQ0
NGRlOGUwNDViN2JkODBkZmYzMGQwYjFjZDlkYzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMTk2LDcg
KzE5Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6ZUZy
b21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBpbWFnCiAgICAgYXV0byB0aWZmRGljdGlvbmFy
eSA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0aWVz
LCBrQ0dJbWFnZVByb3BlcnR5VElGRkRpY3Rpb25hcnkpOwogCiAgICAgaWYgKCFleGlmRGljdGlv
bmFyeSB8fCAhdGlmZkRpY3Rpb25hcnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHdpZHRoUHJvcGVydHkgPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0aWVzLCBrQ0dJbWFn
ZVByb3BlcnR5UGl4ZWxXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRQcm9wZXJ0eSA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdlUHJvcGVy
dHlQaXhlbEhlaWdodCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIE9wdGlvbmFsPEludFNp
emU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGlt
YWcKICAgICBhdXRvIHJlc29sdXRpb25Vbml0UHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodGlmZkRpY3Rpb25hcnksIGtDR0ltYWdlUHJvcGVydHlUSUZGUmVzb2x1
dGlvblVuaXQpOwogCiAgICAgaWYgKCFwcmVmZXJyZWRXaWR0aFByb3BlcnR5IHx8ICFwcmVmZXJy
ZWRIZWlnaHRQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvblhQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvbllQ
cm9wZXJ0eSB8fCAhcmVzb2x1dGlvblVuaXRQcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCByZXNvbHV0
aW9uVW5pdDsKICAgICBmbG9hdCBzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBwcmVmZXJyZWRX
aWR0aCwgcHJlZmVycmVkSGVpZ2h0LCByZXNvbHV0aW9uV2lkdGgsIHJlc29sdXRpb25IZWlnaHQ7
CkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3Jy
ZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWcKICAgICAgICAgfHwg
IUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblhQcm9wZXJ0eSwga0NGTnVtYmVyRmxvYXQzMlR5
cGUsICZyZXNvbHV0aW9uV2lkdGgpCiAgICAgICAgIHx8ICFDRk51bWJlckdldFZhbHVlKHJlc29s
dXRpb25ZUHJvcGVydHksIGtDRk51bWJlckZsb2F0MzJUeXBlLCAmcmVzb2x1dGlvbkhlaWdodCkK
ICAgICAgICAgfHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblVuaXRQcm9wZXJ0eSwga0NG
TnVtYmVySW50VHlwZSwgJnJlc29sdXRpb25Vbml0KSkgewotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVy
biBJbWFnZVJlc29sdXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEZsb2F0U2l6ZShzb3VyY2VX
aWR0aCwgc291cmNlSGVpZ2h0KSwgewpAQCAtMzkxLDE5ICszOTEsMTkgQEAgT3B0aW9uYWw8SW50
UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBhdXRvIHByb3Bl
cnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9uYXRp
dmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAgIGlm
ICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpbnQgeCA9IC0xLCB5ID0gLTE7CiAgICAgQ0ZO
dW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnRp
ZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1iZXJH
ZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBudW0gPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIo
ImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwga0NG
TnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICByZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CkBAIC00NDgsMTEgKzQ0OCwxMSBA
QCBJbWFnZURlY29kZXI6OkZyYW1lTWV0YWRhdGEgSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lTWV0YWRh
dGFBdEluZGV4KHNpemVfdCBpbmRleCkgYwogICAgIAogICAgIGF1dG8gb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogICAgIGlmICghbWF5
SGF2ZURlbnNpdHlDb3JyZWN0ZWRTaXplKHByb3BlcnRpZXMuZ2V0KCkpKQotICAgICAgICByZXR1
cm4geyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IG9yaWVu
dGF0aW9uLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gcHJvcGVydGllc1dpdGhNZXRhZGF0
YSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2ZURl
Y29kZXIuZ2V0KCksIGluZGV4LCBjcmVhdGVJbWFnZVNvdXJjZU1ldGFkYXRhT3B0aW9ucygpLmdl
dCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzV2l0aE1ldGFkYXRhKQotICAgICAgICByZXR1cm4g
eyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IG9yaWVudGF0
aW9uLCBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICByZXR1cm4geyBvcmllbnRhdGlvbiwgZGVu
c2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzV2l0aE1ldGFkYXRhLmdl
dCgpKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKaW5kZXggZmQyNjg4YTVk
ZDNkOTY5ZjQzMGRjM2Y4ZTAyODY1NDgyZjUzMWY2Zi4uYTk3NzE2M2EwOTMwM2RjMWE1N2ZlYTBi
MGQ0YTM4OGIzMjMyMDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC01
NSwxNCArNTUsMTQgQEAgT3B0aW9uYWw8dWludDY0X3Q+IEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
dHJhY2tVSUQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50
KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8
Ym9vbD4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5hYmxlZCgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBt
X3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEF0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZhdGVX
ZWJNOjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNDc1MmZhYzI1
MDAzODRjODk0ZGE3ZDdlNjM5NjhjZDcxYjNiZmNiMC4uODkxZGQ1MzQzZTY5ZWVjZGRkZTA1MDFi
ZjY0ZTUzMzhiNDY2NTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNTA4LDcgKzUw
OCw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHByZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250UmVm
IG9yaWdpbmFsRm9udCwgY29uc3QgRm9udERlc2NyCiAgICAgaWYgKGFwcGx5V2VpZ2h0V2lkdGhT
bG9wZVZhcmlhdGlvbnMgJiYgIWZvbnRJc1N5c3RlbUZvbnQob3JpZ2luYWxGb250KSkgewogICAg
ICAgICBmbG9hdCB3ZWlnaHQgPSBmb250U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQ7CiAgICAgICAg
IGZsb2F0IHdpZHRoID0gZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGg7Ci0gICAgICAgIGZsb2F0
IHNsb3BlID0gZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUudmFsdWVPcihub3JtYWxJdGFsaWNW
YWx1ZSgpKTsKKyAgICAgICAgZmxvYXQgc2xvcGUgPSBmb250U2VsZWN0aW9uUmVxdWVzdC5zbG9w
ZS52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGF1dG8gd2VpZ2h0
VmFsdWUgPSBmb250RmFjZUNhcGFiaWxpdGllcy53ZWlnaHQpCiAgICAgICAgICAgICB3ZWlnaHQg
PSBzdGQ6Om1heChzdGQ6Om1pbih3ZWlnaHQsIHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHRWYWx1
ZS0+bWF4aW11bSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0VmFsdWUtPm1pbmltdW0pKTsK
ICAgICAgICAgaWYgKGF1dG8gd2lkdGhWYWx1ZSA9IGZvbnRGYWNlQ2FwYWJpbGl0aWVzLndpZHRo
KQpAQCAtOTM5LDcgKzkzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxNaW5NYXg+IGV4dHJhY3RWYXJp
YXRpb25Cb3VuZHMoQ0ZEaWN0aW9uYXJ5UmVmIGF4aXMpCiAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSht
YXhpbXVtVmFsdWUsIGtDRk51bWJlckZsb2F0VHlwZSwgJnJhd01heGltdW1WYWx1ZSk7CiAgICAg
aWYgKHJhd01pbmltdW1WYWx1ZSA8IHJhd01heGltdW1WYWx1ZSkKICAgICAgICAgcmV0dXJuIHt7
IHJhd01pbmltdW1WYWx1ZSwgcmF3TWF4aW11bVZhbHVlIH19OwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIFZhcmlhdGlvbkNh
cGFiaWxpdGllcyB2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcihDVEZvbnRE
ZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgT3B0aW9u
YWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShj
b25zdCBTdHJpbmcmIGZhbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIGFkZEF0dHJp
YnV0ZXNGb3JJbnN0YWxsZWRGb250cyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMs
IEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0
aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IDBkN2Q5NDVhMmJjMTU0NjIzYjM5NjRkNzhkMGZh
NzY5M2ZlZjAzYTMuLmYwMTZhNTI1YWZkZDY5OWE1MTNjM2UwYTlkM2RiNmQzZDFhNGZlNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnREZXNj
cmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGlu
bGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0IEF0
b21TdHJpbmcmIHN0cmkKICAgICBpZiAoc3RkOjpiaW5hcnlfc2VhcmNoKHN0cmluZ3MuZ2V0KCku
YmVnaW4oKSwgc3RyaW5ncy5nZXQoKS5lbmQoKSwgc3RyaW5nLCBjb21wYXJlQXNQb2ludGVyKSkK
ICAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnRLaW5kOjpUZXh0U3R5bGU7CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gc3lzdGVtRm9udENhc2Nh
ZGVMaXN0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21TdHJp
bmcmIGNzc0ZhbWlseSwgU3lzdGVtRm9udEtpbmQgc3lzdGVtRm9udEtpbmQsIEFsbG93VXNlcklu
c3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZjJhMTU5ZjFkZjIyZjFlM2JmOTQwMTNiNTUw
NTI2YWZlYTJiZTAwMy4uZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZkOTZjNDJjMjMyN2NjZjQ5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC02NjUsOSAr
NjY1LDkgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogewogICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBtX3N3
YXBDaGFpbi0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJmYWNl
IHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5zdXJm
YWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAvLyBO
b3RlOiBXZSBhcmUgdXNpbmcgR0wgdG8gcmVhZCB0aGUgSU9TdXJmYWNlLiBBdCB0aGUgdGltZSBv
ZiB3cml0aW5nLCB0aGVyZSBhcmUgbm8gY29udmluaWVudAogICAgIC8vIGZ1bmN0aW9ucyB0byBj
b252ZXJ0IHRoZSBJT1N1cmZhY2UgcGl4ZWwgZGF0YSB0byBJbWFnZURhdGEuIFRoZSBpbWFnZSBk
YXRhIGVuZHMgdXAgYmVpbmcKICAgICAvLyBkcmF3biB0byBhIEltYWdlQnVmZmVyLCBidXQgYXQg
dGhlIHRpbWUgdGhlcmUncyBubyBmdW5jdGlvbnMgdG8gY29uc3RydWN0IGEgTmF0aXZlSW1hZ2UK
QEAgLTY3OCw3ICs2NzgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgU2NvcGVkUmVzdG9yZVRleHR1
cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnko
KSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIp
OwogICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKICAgICBpZiAo
IUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBkaXNwbGF5QnVmZmVyLmhhbmRsZSwgRUdM
X0JBQ0tfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CiAgICAgU2NvcGVkRnJhbWVidWZmZXIg
ZmJvOwogICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRpbmco
bV9pc0ZvcldlYkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVz
Q29jb2EubW0KaW5kZXggZGE0MGEyY2RlOGYwZjg0ZGEwOTMwYjUyZmIyM2I2NmQ1M2Y5MGQzNy4u
YTg4ZmRlOTAxZjUyMjU5NDRlZjFhOTc0MGNhNTIzODc3MzFjZDA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRp
ZXNDb2NvYS5tbQpAQCAtNDMsMTEgKzQzLDExIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyCiAg
ICAgQ01WaWRlb0NvZGVjVHlwZSBjb2RlYyA9IGtDTVZpZGVvQ29kZWNUeXBlX0hFVkM7CiAgICAg
aWYgKGhhc0FscGhhQ2hhbm5lbCkgewogICAgICAgICBpZiAoIVBBTDo6aXNBVkZvdW5kYXRpb25G
cmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlZpZGVv
Q29kZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBjb2Rl
Y0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJpbmcoQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxwaGEp
OwogICAgICAgICBpZiAoIWNvZGVjQ29kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGNvZGVjID0g
Y29kZWNDb2RlLnZhbHVlKCkudmFsdWU7CiAgICAgfQpAQCAtNTcsMTIgKzU3LDEyIEBAIE9wdGlv
bmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBI
RVZDUGFyYW1ldGVycyYgcGFyCiAgICAgICAgIGJvb2wgaXNNYWluMTAgPSBwYXJhbWV0ZXJzLmdl
bmVyYWxQcm9maWxlU3BhY2UgPT0gMAogICAgICAgICAgICAgJiYgKHBhcmFtZXRlcnMuZ2VuZXJh
bFByb2ZpbGVJREMgPT0gMiB8fCBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0
eUZsYWdzID09IDEpOwogICAgICAgICBpZiAoIWlzTWFpbjEwKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0
YW5jZShjb2RlYywga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
aWYgKHN0YXR1cyAhPSBub0VycikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2FuTG9hZF9WaWRlb1Rvb2xib3hf
VlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkKICAgICAgICAgfHwgIWNh
bkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9m
aWxlcygpCkBAIC03MCwzMCArNzAsMzAgQEAgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZv
PiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXIKICAgICAg
ICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxp
dHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkKICAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29s
Ym94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwoKQogICAg
ICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJp
bGl0eV9NYXhQbGF5YmFja0xldmVsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNhcGFiaWxpdGllcyA9IGFk
b3B0Q0YoVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkpOwogICAgIGlm
ICghY2FwYWJpbGl0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IChDRkFy
cmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVWQ0Rl
Y29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZFByb2ZpbGVzKTsKICAgICBpZiAoIXN1cHBvcnRlZFBy
b2ZpbGVzIHx8IENGR2V0VHlwZUlEKHN1cHBvcnRlZFByb2ZpbGVzKSAhPSBDRkFycmF5R2V0VHlw
ZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9maWxlSURDID0gcGFyYW1ldGVycy5n
ZW5lcmFsUHJvZmlsZUlEQzsKICAgICBhdXRvIGNmR2VuZXJhbFByb2ZpbGVJREMgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQxNlR5cGUs
ICZnZW5lcmFsUHJvZmlsZUlEQykpOwogICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBDRlJhbmdlTWFr
ZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkUHJvZmlsZXMpKTsKICAgICBpZiAoIUNGQXJy
YXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFyY2hSYW5nZSwgY2ZHZW5lcmFs
UHJvZmlsZUlEQy5nZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0ID0gKENG
RGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtW
VEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9QZXJQcm9maWxlU3VwcG9ydCk7CiAgICAgaWYgKCFwZXJQ
cm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwZXJQcm9maWxlU3VwcG9ydCkgIT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdlbmVyYWxQcm9maWxlSURDU3RyaW5n
ID0gU3RyaW5nOjpudW1iZXIoZ2VuZXJhbFByb2ZpbGVJREMpLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgYXV0byBwcm9maWxlU3VwcG9ydCA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUocGVyUHJvZmlsZVN1cHBvcnQsIGdlbmVyYWxQcm9maWxlSURDU3RyaW5nLmdldCgpKTsK
ICAgICBpZiAoIXByb2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlEKHByb2ZpbGVTdXBwb3J0KSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE1lZGlhQ2FwYWJpbGl0aWVzSW5m
byBpbmZvOwogCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGll
c0luZm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcgog
ICAgIGlmIChjZk1heERlY29kZUxldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4RGVjb2RlTGV2ZWwp
ID09IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKICAgICAgICAgaW50MTZfdCBtYXhEZWNvZGVMZXZl
bCA9IDA7CiAgICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShjZk1heERlY29kZUxldmVsLCBr
Q0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4RGVjb2RlTGV2ZWwpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgaWYgKHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDID4gbWF4RGVjb2RlTGV2ZWwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICBhdXRvIGNmTWF4UGxheWJhY2tMZXZlbCA9IChDRk51bWJlclJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9m
aWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKTsKICAgICBpZiAoY2ZNYXhQbGF5YmFja0xl
dmVsICYmIENGR2V0VHlwZUlEKGNmTWF4UGxheWJhY2tMZXZlbCkgPT0gQ0ZOdW1iZXJHZXRUeXBl
SUQoKSkgewogICAgICAgICBpbnQxNl90IG1heFBsYXliYWNrTGV2ZWwgPSAwOwogICAgICAgICBp
ZiAoIUNGTnVtYmVyR2V0VmFsdWUoY2ZNYXhQbGF5YmFja0xldmVsLCBrQ0ZOdW1iZXJTSW50MTZU
eXBlLCAmbWF4UGxheWJhY2tMZXZlbCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpbmZvLnNtb290
aCA9IHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDIDw9IG1heFBsYXliYWNrTGV2ZWw7CiAgICAg
fQpAQCAtMTQxLDE2ICsxNDEsMTYgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50MTZfdD4+
IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKEMKIHsKICAgICBh
dXRvIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwga2V5KTsKICAgICBp
ZiAoIXZhbHVlIHx8IENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgTlNBcnJheSAqYXJyYXkgPSAoX19icmlkZ2UgTlNBcnJheSAqKXZhbHVlOwogICAgIFZl
Y3Rvcjx1aW50MTZfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGFycmF5LmNvdW50KTsKICAgICBmb3IgKGlkIHZhbHVlIGluIGFycmF5KSB7CiAgICAgICAgIGlm
ICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGF1dG8gbnVtZXJpY1ZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmcoKE5T
U3RyaW5nICopdmFsdWUpKTsKICAgICAgICAgaWYgKCFudW1lcmljVmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsKICAgICB9CiAg
ICAgcmV0dXJuIHZlY3RvcjsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJheUZyb21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0
b3IoQwogT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0
ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhhQ2hhbm5l
bCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGRyU3VwcG9ydCkgewogICAgICAgICAvLyBQbGF0Zm9ybSBzdXBwb3J0cyBIRFIgcGxh
eWJhY2sgb2YgSEVWQyBNYWluMTAgUHJvZmlsZSwgd2hpY2ggaXMgc2lnbmFsbGVkIGJ5IERvVmkg
cHJvZmlsZXMgNCwgNSwgNywgJiA4LgpAQCAtMTcwLDM5ICsxNzAsMzkgQEAgT3B0aW9uYWw8TWVk
aWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJh
bWV0ZXJzJiBwYXIKICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAogICAgIE9TU3RhdHVzIHN0
YXR1cyA9IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoY29kZWNUeXBlKHBh
cmFtZXRlcnMuY29kZWMpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsK
ICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjYW5Mb2FkX1ZpZGVvVG9v
bGJveF9WVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rpb25hcnkoKQogICAgICAgICB8
fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9T
dXBwb3J0ZWRQcm9maWxlcygpCiAgICAgICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlRE
b2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCiAgICAgICAgIHx8
ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lz
SGFyZHdhcmVBY2NlbGVyYXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjYXBhYmlsaXRpZXMgPSBhZG9w
dENGKFZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlvbmFyeSgpKTsKICAgICBpZiAo
IWNhcGFiaWxpdGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSBwYXJzZVN0
cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3RvcihjYXBhYmlsaXRpZXMuZ2V0KCks
IGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpOwogICAg
IGlmICghc3VwcG9ydGVkUHJvZmlsZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cHBvcnRlZExldmVscyA9
IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKGNhcGFiaWxpdGll
cy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMp
OwogICAgIGlmICghc3VwcG9ydGVkTGV2ZWxzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBpc0hhcmR3YXJlQWNj
ZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0
aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5cGVJ
RChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgYm9vbCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3
YXJlQWNjZWxlcmF0ZWRDRik7CiAKICAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzLnZhbHVlKCku
Y29udGFpbnMocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpIHx8ICFzdXBwb3J0ZWRMZXZl
bHMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHsgeyB0cnVlLCB0cnVlLCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgfSB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aAppbmRleCBlMjI1Y2ZkMjc4MGVlYzI3OTc0ZWRmNzFjZTQ3MDAyOTJlZWM4YjE2Li41ZGQzZWNi
YmU2YjIwMGYyZWZjZWJiZDJhOWMzNjUzZTA1M2UyZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtMTg0LDcgKzE4NCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7CiAK
LSAgICBzdGF0aWMgV1RGOjpPcHRpb25hbDxJbnRTaXplPiBzX21heGltdW1TaXplOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNfbWF4aW11bVNpemU7CiB9OwogCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgV2ViQ29yZTo6SU9TdXJmYWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAppbmRleCBjODk2Y2E0MGE2N2MyMTQxZGNkMjA2
M2U1ZDBjNzY4NjFhNzRmMWM4Li5kNWE2MzVmZDE0OGExYjE0MTdmOTkyZWUyNDJjYzc5OWI0NmQy
YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnlDb2NvYS5jcHAKQEAgLTY1LDE3ICs2NSwxNyBAQCBzdGF0aWMgT3B0aW9uYWw8TWVkaWFDYXBh
YmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlhRAog
ICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSh2aWRlb0NvbmZpZ3VyYXRpb24u
Y29udGVudFR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSBjb25maWd1
cmF0aW9uLnR5cGUgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlOwogICAgICAgICBp
ZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gY29k
ZWNzID0gcGFyYW1ldGVycy50eXBlLmNvZGVjcygpOwogICAgICAgICBpZiAoY29kZWNzLnNpemUo
KSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaW5mby5zdXBwb3J0ZWQgPSB0cnVlOwogICAg
ICAgICBhdXRvJiBjb2RlYyA9IGNvZGVjc1swXTsKICAgICAgICAgYXV0byB2aWRlb0NvZGVjVHlw
ZSA9IHZpZGVvQ29kZWNUeXBlRnJvbVJGQzQyODFUeXBlKGNvZGVjKTsKICAgICAgICAgaWYgKCF2
aWRlb0NvZGVjVHlwZSAmJiAhKGNvZGVjLnN0YXJ0c1dpdGgoImR2aDEiKSB8fCBjb2RlYy5zdGFy
dHNXaXRoKCJkdmhlIikpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYm9vbCBoZHJTdXBwb3J0ZWQg
PSB2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCB8fCB2aWRlb0NvbmZpZ3VyYXRpb24uaGRy
TWV0YWRhdGFUeXBlIHx8IHZpZGVvQ29uZmlndXJhdGlvbi50cmFuc2ZlckZ1bmN0aW9uOwogICAg
ICAgICBib29sIGFscGhhQ2hhbm5lbCA9IHZpZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwg
JiYgdmlkZW9Db25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbC52YWx1ZSgpOwpAQCAtODMsMzQgKzgz
LDM0IEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IGNvbXB1dGVNZWRp
YUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAgICAgICAgIGlmICh2aWRlb0NvZGVjVHlw
ZSA9PSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDKSB7CiAgICAgICAgICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29kZWMpOwogICAgICAgICAgICAgaWYgKCFw
YXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gcGFyc2VkSW5m
byA9IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoKnBhcmFtZXRlcnMsIGFscGhhQ2hhbm5lbCwgaGRy
U3VwcG9ydGVkKTsKICAgICAgICAgICAgIGlmICghcGFyc2VkSW5mbykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICBpbmZvID0gKnBhcnNlZEluZm87CiAgICAgICAgIH0gZWxzZSBpZiAo
Y29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0c1dpdGgoImR2aGUiKSkgewog
ICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKGNv
ZGVjKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBhdXRvIHBhcnNlZEluZm8gPSB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKCpwYXJh
bWV0ZXJzLCBhbHBoYUNoYW5uZWwsIGhkclN1cHBvcnRlZCk7CiAgICAgICAgICAgICBpZiAoIXBh
cnNlZEluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaW5mbyA9ICpwYXJzZWRJ
bmZvOwogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIH0gZWxzZSBpZiAodmlkZW9Db2RlY1R5cGUg
PT0ga0NNVmlkZW9Db2RlY1R5cGVfVlA5KSB7CiAgICAgICAgICAgICBpZiAoIWNvbmZpZ3VyYXRp
b24uY2FuRXhwb3NlVlA5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gcGFy
YW1ldGVycyA9IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoY29kZWMpOwogICAgICAgICAgICAgaWYg
KCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gcGFyc2Vk
SW5mbyA9IHZhbGlkYXRlVlBQYXJhbWV0ZXJzKCpwYXJhbWV0ZXJzLCB2aWRlb0NvbmZpZ3VyYXRp
b24pOwogICAgICAgICAgICAgaWYgKCFwYXJzZWRJbmZvKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIGluZm8gPSAqcGFyc2VkSW5mbzsKICNlbmRpZgogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgaWYgKGFscGhhQ2hhbm5lbCB8fCBoZHJTdXBwb3J0ZWQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoY2FuTG9hZF9WaWRlb1Rvb2xib3hfVlRJc0hhcmR3
YXJlRGVjb2RlU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAgICBpbmZvLnBvd2VyRWZmaWNp
ZW50ID0gVlRJc0hhcmR3YXJlRGVjb2RlU3VwcG9ydGVkKHZpZGVvQ29kZWNUeXBlKTsKQEAgLTEy
NCwyMiArMTI0LDIyIEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IGNv
bXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAgICAgICAgIHBhcmFtZXRl
cnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbmZpZ3VyYXRpb24uYXVkaW8udmFsdWUoKS5jb250ZW50
VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGNvbmZpZ3VyYXRpb24u
dHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7CiAgICAgICAgIGlmIChNZWRp
YVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGU6OklzU3VwcG9ydGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVPcihmYWxzZSkpIHsKKyAgICAgICAgaWYg
KGNvbmZpZ3VyYXRpb24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVfb3IoZmFsc2UpKSB7
CiAgICAgICAgICAgICBhdXRvIGNvbnRleHQgPSBQQUw6Ok91dHB1dENvbnRleHQ6OnNoYXJlZEF1
ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpOwogICAgICAgICAgICAgaWYgKCFjb250ZXh0
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBkZXZpY2VzID0gY29udGV4
dC0+b3V0cHV0RGV2aWNlcygpOwogICAgICAgICAgICAgaWYgKGRldmljZXMuaXNFbXB0eSgpIHx8
ICFXVEY6OmFsbE9mKGRldmljZXMsIFtdKGF1dG8mIGRldmljZSkgewogICAgICAgICAgICAgICAg
IHJldHVybiBkZXZpY2Uuc3VwcG9ydHNTcGF0aWFsQXVkaW8oKTsKICAgICAgICAgICAgIH0pKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgLy8gT25seSBtdWx0aWNoYW5uZWwgYXVk
aW8gY2FuIGJlIHNwYXRpYWxseSByZW5kZXJlZC4KICAgICAgICAgICAgIGlmICghY29uZmlndXJh
dGlvbi5hdWRpby0+Y2hhbm5lbHMuaXNOdWxsKCkgJiYgY29uZmlndXJhdGlvbi5hdWRpby0+Y2hh
bm5lbHMudG9Eb3VibGUoKSA8PSAyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAg
ICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAppbmRleCBlNTFiNWQ2OWM0NmY0MTc3ZGE0Yzk5ZjQ3MzdjODJmMDMwZjQyOWY3
Li41ZGEzYjRiYjY5MDk3NzdjY2RiZDFiOWQ3NGM2ZTQwZTE3NWQyNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pCiAgICAgICAgIH0KIAogICAgICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICJyZWNlaXZlZCBFYm1sIGVsZW1lbnQgd2hpbGUgcGFyc2luZyBTZWdtZW50
IGVsZW1lbnQuIFJld291bmQgcmVhZGVyIGFuZCByZXNldCBwYXJzZXIsIHJldHJ5aW5nIik7Ci0g
ICAgICAgIG1fcmV3aW5kVG9Qb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9yZXdp
bmRUb1Bvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3BhcnNlci0+RGlkU2Vlaygp
OwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6Ok5vbmU7CiAgICAgICAgIGNvbnRpbnVlOwpAQCAt
OTU1LDcgKzk1NSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJs
b2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0CiAKICAgICAqYWN0aW9uID0g
QWN0aW9uOjprUmVhZDsKIAotICAgIG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2Nr
VmFyaWFudD4oQmxvY2soYmxvY2spKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bWFrZV9v
cHRpb25hbDxCbG9ja1ZhcmlhbnQ+KEJsb2NrKGJsb2NrKSk7CiAKICAgICByZXR1cm4gU3RhdHVz
KFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTk2Niw3ICs5NjYsNyBAQCB3ZWJtOjpTdGF0
dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZChjb25zdCBFbGVtZW50TWV0YWRh
dGEmIG1ldGFkYXRhLAogICAgIFVOVVNFRF9QQVJBTShibG9jayk7CiAgICAgSU5GT19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSAgICBtX2N1cnJlbnRCbG9jayA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBT
dGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQpAQCAtOTgyLDcgKzk4Miw3IEBAIHdlYm06
OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29uc3Qg
RWxlbWVudE1ldGFkYXRhJiBtCiAKICAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKIAotICAg
IG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2NrVmFyaWFudD4oU2ltcGxlQmxvY2so
YmxvY2spKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bWFrZV9vcHRpb25hbDxCbG9ja1Zh
cmlhbnQ+KFNpbXBsZUJsb2NrKGJsb2NrKSk7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6
a09rQ29tcGxldGVkKTsKIH0KQEAgLTk5NCw3ICs5OTQsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25zdCBFbGVtZW50TWV0YWRhdGEm
IG1ldAogCiAgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKIAotICAgIG1fY3VycmVudEJsb2NrID0g
V1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CkBAIC0xMzA2LDggKzEzMDYs
OCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0RhdGE6
OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogCiAKICAgICBtX3BhY2tldERlc2NyaXB0aW9u
cy5hcHBlbmQoeyBzdGF0aWNfY2FzdDxpbnQ2NF90PigqbV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNl
dCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY3VycmVudFBhY2tldFNpemUpIH0pOwotICAg
IG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9jdXJyZW50
UGFja2V0U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
ID0gc3RkOjpudWxsb3B0OworICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVTdWJ0
cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUpKSArIENNVGlt
ZUdldFNlY29uZHMobV9wYWNrZXREdXJhdGlvbikgKiBzYW1wbGVDb3VudDsKICAgICBpZiAoc2Ft
cGxlRHVyYXRpb24gPj0gbV9taW5pbXVtU2FtcGxlRHVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmgKaW5kZXggNjQxZTQ3MTg2ZWFmMzI3NjBlMTgyNzVhZDNkOGQ1MDQ2ZDVjNzJm
Mi4uMzUxYWJmODE3NDUwYjMwYzcxYjRhMjA2N2FiNGU1MThjNTE1MWE0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
fQogCiAgICAgICAgIHdlYm06OlN0YXR1cyBjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRlciYs
IGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB1aW50NjRfdCosIGNvbnN0IENNVGltZSYsIGlu
dCkgZmluYWw7Ci0gICAgICAgIHZvaWQgY3JlYXRlU2FtcGxlQnVmZmVyKE9wdGlvbmFsPHNpemVf
dD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0ID0gV1RGOjpudWxsb3B0KTsKKyAgICAgICAgdm9pZCBj
cmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQg
PSBzdGQ6Om51bGxvcHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgY2hhciogbG9n
Q2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkF1ZGlvVHJhY2tEYXRhIjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQppbmRleCAzMmNhZjcxNTY3ZWRmOWRlYjcwYmFjNzFmMjg5YjIzMzRkZjU2NzUy
Li42ZWVkMDE2ZjBiZGUwOTI0NDI2ODA3OGRiZWNlMDQ4YjMwMWQ3ZTA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRp
ZXNDb2NvYS5tbQpAQCAtMjMzLDIyICsyMzMsMjIgQEAgYm9vbCBpc1ZQQ29kZWNDb25maWd1cmF0
aW9uUmVjb3JkU3VwcG9ydGVkKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBjb2QK
IE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29u
c3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29uc3Qg
VmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFpc1ZQ
Q29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBWaWRlb0NvbmZpZ3VyYXRpb24gYW5kIFZQQ29kZWNDb25maWd1cmF0aW9uUmVj
b3JkIGNhbiBoYXZlIGNvbmZsaWN0aW5nIHZhbHVlcyBmb3IgSERSIHByb3BlcnRpZXMuIElmIHNv
LCByZWplY3QuCiAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi50cmFuc2ZlckZ1bmN0aW9uKSB7
CiAgICAgICAgIC8vIE5vdGU6IFRyYW5zZmVyIENoYXJhY3RlcmlzdGljcyBhcmUgZGVmaW5lZCBi
eSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICAgICAgaWYgKCp2aWRlb0NvbmZpZ3VyYXRpb24u
dHJhbnNmZXJGdW5jdGlvbiA9PSBUcmFuc2ZlckZ1bmN0aW9uOjpTUkdCICYmIGNvZGVjQ29uZmln
dXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA+IDE1KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmICgqdmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rpb24gPT0gVHJhbnNmZXJGdW5j
dGlvbjo6UFEgJiYgY29kZWNDb25maWd1cmF0aW9uLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzICE9
IDE2KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqdmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVy
RnVuY3Rpb24gPT0gVHJhbnNmZXJGdW5jdGlvbjo6SExHICYmIGNvZGVjQ29uZmlndXJhdGlvbi50
cmFuc2ZlckNoYXJhY3RlcmlzdGljcyAhPSAxOCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlm
ICh2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCkgewogICAgICAgICBpZiAoKnZpZGVvQ29u
ZmlndXJhdGlvbi5jb2xvckdhbXV0ID09IENvbG9yR2FtdXQ6OlJlYzIwMjAgJiYgY29kZWNDb25m
aWd1cmF0aW9uLmNvbG9yUHJpbWFyaWVzICE9IDkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBN
ZWRpYUNhcGFiaWxpdGllc0luZm8gaW5mbzsKQEAgLTI1NiwxMiArMjU2LDEyIEBAIE9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2Rl
Y0NvbmZpZ3VyYXRpb25SCiAgICAgaWYgKHZwOUhhcmR3YXJlRGVjb2RlckF2YWlsYWJsZSgpKSB7
CiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVyIGRvZXMgbm90IHN1cHBvcnQgYWxwaGEgY2hhbm5l
bDoKICAgICAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwgJiYgKnZpZGVv
Q29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBIVyBW
UDkgRGVjb2RlciBjYW4gc3VwcG9ydCB1cCB0byA0SyBAIDEyMCBvciA4SyBAIDMwCiAgICAgICAg
IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdXRpb25DYXRlZ29yeSh7IChmbG9hdCl2aWRlb0NvbmZp
Z3VyYXRpb24ud2lkdGgsIChmbG9hdCl2aWRlb0NvbmZpZ3VyYXRpb24uaGVpZ2h0IH0pOwogICAg
ICAgICBpZiAocmVzb2x1dGlvbiA+IFJlc29sdXRpb25DYXRlZ29yeTo6Ul84SykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAocmVzb2x1dGlvbiA9PSBSZXNvbHV0aW9uQ2F0ZWdvcnk6OlJfOEsgJiYg
dmlkZW9Db25maWd1cmF0aW9uLmZyYW1lcmF0ZSA+IDMwKQogICAgICAgICAgICAgaW5mby5zbW9v
dGggPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAocmVzb2x1dGlvbiA8PSBSZXNvbHV0aW9uQ2F0
ZWdvcnk6OlJfNEsgJiYgdmlkZW9Db25maWd1cmF0aW9uLmZyYW1lcmF0ZSA+IDEyMCkKQEAgLTMx
NSw3ICszMTUsNyBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlVlBQ
YXJhbWV0ZXJzKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUgogICAgIH0KIAogICAgIGlmICgh
aGFzNGtTY3JlZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgcmV0dXJu
IGluZm87CkBAIC02MTYsNyArNjE2LDcgQEAgT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBhcnNl
VlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXoKIAogICAg
IC8vIEJhaWwgaWYgdGhlIGhlYWRlciBpcyBiZWxvdyBhIG1pbmltdW0gc2l6ZQogICAgIGlmIChm
cmFtZVNpemUgPCAxMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQOEZyYW1lSGVhZGVyIGhlYWRlcjsKICAgICBzaXpl
X3QgaGVhZGVyU2l6ZSA9IDExOwpAQCAtNjI2LDcgKzYyNiw3IEBAIE9wdGlvbmFsPFZQOEZyYW1l
SGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZy
YW1lU2l6CiAKICAgICBhdXRvIHVuY29tcHJlc3NlZENodW5rID0gdmlldy0+Z2V0PHVpbnQzMl90
PigwLCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGhlYWRlci5r
ZXlmcmFtZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwMDsKICAgICBoZWFkZXIudmVy
c2lvbiA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7CkBAIC02MzgsMzMgKzYzOCwz
MyBAQCBPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50OF90
KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpegogCiAgICAgYXV0byBzdGFydENvZGUwID0gdmll
dy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOwogICAgIGlmICghc3RhdHVzIHx8IHN0
YXJ0Q29kZTAgIT0gMHg5ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnRDb2RlMSA9IHZpZXctPmdldDx1
aW50OF90Pig0LCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUx
ICE9IDB4MDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2aWV3LT5nZXQ8dWludDhfdD4o
NSwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMiAhPSAweDJh
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBob3Jpem9udGFsQW5kV2lkdGhGaWVsZCA9IHZpZXctPmdldDx1aW50
MTZfdD4oNiwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBoZWFk
ZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaG9yaXpvbnRhbEFuZFdp
ZHRoRmllbGQgPj4gMTQpOwogICAgIGhlYWRlci53aWR0aCA9IHN0YXRpY19jYXN0PHVpbnQxNl90
Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CiAKICAgICBhdXRvIHZlcnRpY2Fs
QW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgsIHRydWUsICZzdGF0dXMpOwog
ICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaGVhZGVyLnZlcnRpY2FsU2NhbGUgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pih2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkID4+IDE0KTsKICAgICBoZWFkZXIu
aGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgJiAw
eDNGRkYpOwogCiAgICAgYXV0byBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCA9IHZpZXctPmdl
dDx1aW50OF90PigxMCwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBoZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg4MDsK
ICAgICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYg
MHg0MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCmluZGV4IDQ4ODY1NDg0MjI3NGU1
YTlhODllOTNiZjVjYzM1ODllZmVlOWYyOWUuLjNlYjI4MTg2MDgwMjBmOWY0MGE0ODg2ZTI2NWY1
NGU2ZmYyZGMzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtNTUsMTQg
KzU1LDE0IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRyYWNr
VUlEKCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgpKQog
ICAgICAgICByZXR1cm4gbV90cmFjay50cmFja191aWQudmFsdWUoKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPGJvb2w+
IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAogewogICAgIGlm
IChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gbV90cmFj
ay5pc19lbmFibGVkLnZhbHVlKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6
bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXggZWY4NmU0YzNjMmJiYmE4NzQ2
ZTI0MWU0MzUxZTc4MGU3NDMzZDMxNi4uZGM5MDgwOGNjYThlODM3Y2I3MDRiODlkOTY3MTJiYWFh
M2FiZjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRm9udENvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGlj
IGlubGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlvbmFy
eVJlZiBmZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1i
ZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZlYXR1
cmVWYWx1ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUodmFsdWUsIGtD
Rk51bWJlckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBz
dWNjZXNzKTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmluZ1JlZj4odGFn
KSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmlu
Z1JlZj4odGFnKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8
aW50LCBpbnQ+IHRydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBkNWI5ZjdlMWRkODBiOGRl
MzBmYjMxOWJhOGMxODc3ZDg2OWQ2ZjVlLi41YzQyNDU0MTNiNDAxM2I0YmI1NzE4ODFkMGRiNzY2
NGQ1M2Q2MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBA
IC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgT3B0aW9uYWw8c3RkOjpzaXpl
X3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJ
dGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMTE3Y2ZhODM5MzYwODllNzFmZDA1YWI3ODY0OGJkMjQ4
ZDVlNzkwLi44Mzk0YmQzODJmOTI1NWIzOTQzNDIzZDE5M2EwMDljYzc4YTU4NTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM4Myw3ICszODMsNyBAQCBPcHRpb25hbDxT
ZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsKICAg
ICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwogICAgIGlmICghY2hhbmdlRmxhZ3MpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKICAgICBzdGF0ZUNoYW5n
ZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwpAQCAtMzk0LDcgKzM5NCw3IEBAIE9wdGlv
bmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYg
KHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRvIHN0cm9rZUdyYWRpZW50ID0g
R3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVudCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGllbnQg
PSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7CiAgICAgfQpAQCAtNDAzLDEyICs0MDMsMTIgQEAg
T3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOwogICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7
CiAgICAgICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJz
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciwgKnBhcmFtZXRlcnMgfTsKICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAg
T3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRT
dGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRvIGZpbGxHcmFkaWVudCA9
IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZmlsbEdyYWRpZW50KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQgPSBX
VEZNb3ZlKCpmaWxsR3JhZGllbnQpOwogICAgIH0KQEAgLTQyNSwxMiArNDI1LDEyIEBAIE9wdGlv
bmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwogICAg
ICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgICAgIGlmICghcGFyYW1ldGVycykKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGZpbGxQYXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyLCAqcGFyYW1ldGVycyB9OwogICAgIH0KQEAgLTQzOSwyOCArNDM5LDI4IEBAIE9wdGlv
bmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwogICAgICAgICBkZWNvZGVyID4+IHNo
YWRvd09mZnNldDsKICAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9ICpzaGFkb3dPZmZzZXQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CiAgICAgICAgIGRlY29kZXIgPj4g
c2hhZG93Qmx1cjsKICAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7CiAKICAgICAg
ICAgT3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHNoYWRv
d0NvbG9yOwogICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKIAogICAgICAg
ICBPcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBzaGFkb3dSYWRpdXNNb2RlOwogICAgICAgICBk
ZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7CiAgICAgICAgIGlmICghc2hhZG93UmFkaXVzTW9k
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93UmFkaXVz
TW9kZSA9IFdURk1vdmUoKnNoYWRvd1JhZGl1c01vZGUpOwogICAgIH0KQEAgLTQ2OSw3ICs0Njks
NyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICBPcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNzOwogICAgICAgICBkZWNv
ZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgaWYgKCFzdHJva2VUaGlja25lc3MpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9
ICpzdHJva2VUaGlja25lc3M7CiAgICAgfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlv
bmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gdGV4dERyYXdpbmdNb2RlOwogICAgICAgICBpZiAoIXRleHREcmF3aW5nTW9kZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4dERyYXdpbmdNb2RlID0g
V1RGTW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKICAgICB9CkBAIC00ODcsNyArNDg3LDcgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgT3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHN0cm9r
ZUNvbG9yOwogICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
c3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsKICAgICB9CkBA
IC00OTYsNyArNDk2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAgICAg
ICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENvbG9y
OwogICAgIH0KQEAgLTUwNCw3ICs1MDQsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZs
YWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkpIHsK
ICAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwogICAgIH0KQEAgLTUxMyw3ICs1MTMsNyBA
QCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICBPcHRpb25hbDxXaW5kUnVsZT4gZmlsbFJ1bGU7CiAgICAgICAgIGRlY29kZXIgPj4g
ZmlsbFJ1bGU7CiAgICAgICAgIGlmICghZmlsbFJ1bGUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxSdWxlID0gKmZpbGxSdWxlOwogICAgIH0KQEAgLTUyMiw3
ICs1MjIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3Bl
cmF0b3I7CiAgICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgICAgIGlm
ICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gKmNvbXBvc2l0ZU9wZXJhdG9yOwogICAgIH0KQEAg
LTUzMSw3ICs1MzEsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAg
ICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgICAgIGlmICghYmxlbmRNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5ibGVuZE1vZGUgPSAqYmxlbmRN
b2RlOwogICAgIH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3Rh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxJbnRlcnBvbGF0
aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKICAgICAgICAgZGVjb2RlciA+
PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBpZiAoIWltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAqaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKICAg
ICB9CkBAIC01NDksNyArNTQ5LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwogICAg
ICAgICBkZWNvZGVyID4+IGFscGhhOwogICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICphbHBoYTsKICAgICB9CkBAIC01
NTgsNyArNTU4LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwogICAg
ICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKICAgICAgICAgaWYgKCFzaG91bGRBbnRp
YWxpYXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZEFu
dGlhbGlhcyA9ICpzaG91bGRBbnRpYWxpYXM7CiAgICAgfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIE9w
dGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOwogICAgICAgICBkZWNvZGVyID4+
IHNob3VsZFNtb290aEZvbnRzOwogICAgICAgICBpZiAoIXNob3VsZFNtb290aEZvbnRzKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9
ICpzaG91bGRTbW9vdGhGb250czsKICAgICB9CkBAIC01NzYsNyArNTc2LDcgQEAgT3B0aW9uYWw8
U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwogICAgICAgICBkZWNvZGVy
ID4+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKICAgICAgICAgaWYgKCFzaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHM7CiAgICAgfQpAQCAtNTg1LDcgKzU4NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRT
dGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zOwogICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CkBAIC02NTAsMTIgKzY1MCwxMiBA
QCBPcHRpb25hbDxTZXRMaW5lRGFzaD4gU2V0TGluZURhc2g6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPERhc2hBcnJheT4gZGFzaEFycmF5OwogICAgIGRlY29kZXIgPj4g
ZGFzaEFycmF5OwogICAgIGlmICghZGFzaEFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+
IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBkYXNoT2Zmc2V0OwogICAgIGlmICghZGFzaE9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqZGFzaEFycmF5LCAqZGFzaE9mZnNldCB9fTsKIH0K
QEAgLTgxMCw3ICs4MTAsNyBAQCBPcHRpb25hbDxDbGlwT3V0VG9QYXRoPiBDbGlwT3V0VG9QYXRo
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQYXRoPiBwYXRoOwogICAg
IGRlY29kZXIgPj4gcGF0aDsKICAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RG
TW92ZSgqcGF0aCkgfX07CiB9CkBAIC04NTksMTIgKzg1OSwxMiBAQCBPcHRpb25hbDxDbGlwUGF0
aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+
IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFdpbmRSdWxlPiB3aW5kUnVsZTsKICAgICBkZWNvZGVyID4+IHdpbmRSdWxlOwogICAg
IGlmICghd2luZFJ1bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqcGF0aCksICp3aW5k
UnVsZSB9fTsKIH0KQEAgLTkxMCwxMiArOTEwLDEyIEBAIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXIm
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKICAgICBkZWNvZGVyID4+IGRl
c3RpbmF0aW9uOwogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OwogICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24s
IFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OwogfQpAQCAtOTU2LDcgKzk1Niw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYpIGNvbnN0Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7
IH0KIAogcHJpdmF0ZToKQEAgLTk4NywzNSArOTg3LDM1IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+
IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBm
b250SWRlbnRpZmllcjsKICAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKICAgICBkZWNvZGVyID4+
IGdseXBoczsKICAgICBpZiAoIWdseXBocykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxHbHlw
aEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOwogICAgIGRlY29kZXIgPj4gYWR2YW5jZXM7
CiAgICAgaWYgKCFhZHZhbmNlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChnbHlwaHMtPnNpemUoKSAhPSBhZHZh
bmNlcy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZHM7CiAgICAg
ZGVjb2RlciA+PiBib3VuZHM7CiAgICAgaWYgKCFib3VuZHMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBsb2NhbEFuY2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5jaG9yOwogICAg
IGlmICghbG9jYWxBbmNob3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250U21vb3RoaW5nTW9kZT4g
c21vb3RoaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHNtb290aGluZ01vZGU7CiAgICAgaWYgKCFz
bW9vdGhpbmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpmb250SWRlbnRpZmllciwgV1RGTW92
ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqYm91bmRzLCAqbG9jYWxBbmNob3IsICpz
bW9vdGhpbmdNb2RlIH19OwogfQpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgcHVibGljOgogCiAgICAg
Tk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25SZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBwdWJsaWM6
CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikg
Y29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uUmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTExMSw3ICsxMTExLDcgQEAgcHVi
bGljOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFn
ZSYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgpAQCAtMTE0MCw4ICsxMTQwLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRz
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByaXZhdGU6CiAgICAgZmxvYXQg
bV9vcGFjaXR5OwpAQCAtMTE1NSw4ICsxMTU1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpudWxs
b3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CiB9OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBAIC0xMTc2LDcgKzExNzYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6
Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAK
IHByaXZhdGU6CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMjYwLDMyICsxMjYwLDMyIEBAIE9wdGlvbmFs
PERyYXdMaW5lc0ZvclRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGJsb2NrTG9jYXRpb247CiAgICAgZGVjb2Rl
ciA+PiBibG9ja0xvY2F0aW9uOwogICAgIGlmICghYmxvY2tMb2NhdGlvbikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPEZsb2F0U2l6ZT4gbG9jYWxBbmNob3I7CiAgICAgZGVjb2RlciA+PiBsb2NhbEFuY2hv
cjsKICAgICBpZiAoIWxvY2FsQW5jaG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RGFzaEFycmF5PiB3
aWR0aHM7CiAgICAgZGVjb2RlciA+PiB3aWR0aHM7CiAgICAgaWYgKCF3aWR0aHMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxmbG9hdD4gdGhpY2tuZXNzOwogICAgIGRlY29kZXIgPj4gdGhpY2tuZXNzOwog
ICAgIGlmICghdGhpY2tuZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gcHJpbnRpbmc7CiAg
ICAgZGVjb2RlciA+PiBwcmludGluZzsKICAgICBpZiAoIXByaW50aW5nKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gZG91YmxlTGluZXM7CiAgICAgZGVjb2RlciA+PiBkb3VibGVMaW5lczsKICAg
ICBpZiAoIWRvdWJsZUxpbmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpibG9ja0xvY2F0aW9uLCAq
bG9jYWxBbmNob3IsICp0aGlja25lc3MsICp3aWR0aHMsICpwcmludGluZywgKmRvdWJsZUxpbmVz
IH19OwogfQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTM3
Miw3ICsxMzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJu
IG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTEzOTEsNyArMTM5
MSw3IEBAIE9wdGlvbmFsPERyYXdQYXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAg
aWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpIH19OwogfQpAQCAt
MTQyOCw3ICsxNDI4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBw
cml2YXRlOgpAQCAtMTQ1MywyMiArMTQ1MywyMiBAQCBPcHRpb25hbDxEcmF3Rm9jdXNSaW5nUGF0
aD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAg
IGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gb2Zmc2V0OwogICAgIGRlY29k
ZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+
IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpZHRoLCAqb2Zmc2V0LCAqY29sb3IgfX07CiB9
CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CkBAIC0xNTE2LDIyICsxNTE2LDIyIEBAIE9wdGlvbmFsPERyYXdGb2N1c1JpbmdSZWN0cz4g
RHJhd0ZvY3VzUmluZ1JlY3RzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25h
bDxWZWN0b3I8RmxvYXRSZWN0Pj4gcmVjdHM7CiAgICAgZGVjb2RlciA+PiByZWN0czsKICAgICBp
ZiAoIXJlY3RzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAgIGRlY29kZXIg
Pj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZz
ZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNv
bG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0cywgKndpZHRoLCAqb2Zmc2V0LCAqY29sb3Ig
fX07CiB9CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xNTc1LDcgKzE1NzUsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0g
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6
Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CkBAIC0xNTk5LDEyICsxNTk5LDEyIEBAIE9wdGlvbmFsPEZpbGxSZWN0V2l0aENvbG9yPiBGaWxs
UmVjdFdpdGhDb2xvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAgICBpZiAoIXJlY3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBp
ZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0LCAqY29sb3IgfX07CiB9CkBAIC0x
NjIyLDcgKzE2MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CkBAIC0xNjQ2LDExICsxNjQ2LDExIEBAIE9wdGlvbmFsPEZpbGxSZWN0
V2l0aEdyYWRpZW50PiBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsK
ICAgICBpZiAoIXJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29k
ZShkZWNvZGVyKTsKICAgICBpZiAoIWdyYWRpZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0
LCBncmFkaWVudC0+Z2V0KCkgfX07CiB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNzA0LDIy
ICsxNzA0LDIyIEBAIE9wdGlvbmFsPEZpbGxDb21wb3NpdGVkUmVjdD4gRmlsbENvbXBvc2l0ZWRS
ZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJl
Y3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29sb3Ip
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gb3A7CiAgICAgZGVjb2RlciA+
PiBvcDsKICAgICBpZiAoIW9wKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1v
ZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sgKnJlY3QsICpjb2xvciwgKm9wLCAqYmxlbmRNb2RlIH19OwogfQpAQCAt
MTc0Niw3ICsxNzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdC5yZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE3NjksMTcgKzE3NjksMTcgQEAg
T3B0aW9uYWw8RmlsbFJvdW5kZWRSZWN0PiBGaWxsUm91bmRlZFJlY3Q6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJlY3Q7CiAgICAgZGVj
b2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBj
b2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsK
ICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcmVjdCwgKmNvbG9yLCAq
YmxlbmRNb2RlIH19OwogfQpAQCAtMTgwNiw3ICsxODA2LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTgyOSwx
NyArMTgyOSwxNyBAQCBPcHRpb25hbDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4gRmlsbFJlY3RX
aXRoUm91bmRlZEhvbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8RmxvYXRSb3VuZGVkUmVjdD4gcm91bmRlZEhvbGVSZWN0OwogICAgIGRlY29k
ZXIgPj4gcm91bmRlZEhvbGVSZWN0OwogICAgIGlmICghcm91bmRlZEhvbGVSZWN0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYg
KCFjb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcmVjdCwgKnJvdW5kZWRIb2xlUmVjdCwgKmNv
bG9yIH19OwogfQpAQCAtMTg4Myw3ICsxODgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIH07CiAKQEAg
LTE5MTIsNyArMTkxMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJl
dHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHByaXZhdGU6CkBAIC0xOTMxLDcg
KzE5MzEsNyBAQCBPcHRpb25hbDxGaWxsUGF0aD4gRmlsbFBhdGg6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwog
ICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSB9fTsKIH0K
QEAgLTE5NTEsNyArMTk1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7
IHJldHVybiBtX3JlY3Q7IH0KIAogcHJpdmF0ZToKQEAgLTE5OTksMTIgKzE5OTksMTIgQEAgT3B0
aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OwogICAgIGRlY29kZXIgPj4gc3Jj
UmVjdDsKICAgICBpZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZv
cm1hdD4gb3V0cHV0Rm9ybWF0OwogICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwogICAgIGlm
ICghb3V0cHV0Rm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKm91dHB1dEZvcm1h
dCksICpzcmNSZWN0IH19OwogfQpAQCAtMjAzMCw3ICsyMDMwLDcgQEAgcHVibGljOgogICAgIElu
dFBvaW50IGRlc3RQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdFBvaW50OyB9CiAgICAgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0Rm9y
bWF0OyB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQb2ludCwgbV9zcmNSZWN0LnNpemUoKSB9fTsg
fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtMjA2MiwxOSArMjA2MiwxOSBAQCBPcHRpb25hbDxQdXRQaXhlbEJ1ZmZlcj4gUHV0
UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgZGVjb2RlciA+PiBw
aXhlbEJ1ZmZlcjsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2RlciA+PiBz
cmNSZWN0OwogICAgIGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRlY29kZXIgPj4gZGVzdFBvaW50
OwogICAgIGlmICghZGVzdFBvaW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2RlciA+PiBkZXN0Rm9ybWF0Owog
ICAgIGlmICghZGVzdEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwaXhlbEJ1
ZmZlciksICpzcmNSZWN0LCAqZGVzdFBvaW50LCAqZGVzdEZvcm1hdCB9fTsKIH0KQEAgLTIwOTUs
NyArMjA5NSw3IEBAIHB1YmxpYzoKIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7IG1fZGVzdGluYXRp
b24gfTsgfQogCiBwcml2YXRlOgpAQCAtMjEyMSw3ICsyMTIxLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxs
b3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjE3NCw3ICsy
MTc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogfTsKIApAQCAtMjIw
Myw3ICsyMjAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgT3B0aW9uYWw8U3Ryb2tlUGF0aD4gU3Ryb2tlUGF0
aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKICAg
ICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKnBhdGgpIH19OwogfQpAQCAtMjI0Miw3ICsyMjQyLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjI2NCw3ICsyMjY0LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxs
b3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4IGIwNDkw
ZDAzNDg1NzNlM2U3ZTBlNDFjZjM5OWRhZDQxNWVmNjBjNzEuLjBhZWYxMjhhYjNiNWI0YjViMDIw
MTgwMzMyMmMwNDQ5MzE2N2U1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVw
ZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlwZSBpdGVtVHlwZSkgLT4KICAgICAg
ICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKIAogICAgIGlmICghaXNEcmF3
aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAwY2JmNWYzNjk1NzU4YjIxYTM2N2M3ZDk4MzYw
YmMxMmYzYTYwYjFjLi4zZjZiYmJkNWQ4ODdkZTU4NmRlNzA4YTExZjM3YWFlMDg0NTMxZjRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHVibGljOgogICAgIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHt7CiAgICAg
ICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LAogICAgICAgICAg
ICAgbV9jdXJyZW50RXh0ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
aW5kZXggMjkyY2I5NjhmMjc5N2NhOTk3Njk3OWI2NGQzMTM4NmQwMTgxZDY2OC4uNjFiZjc5ZDQ4
MDhkYTYwY2JhOTVhNDMwMTM2MDA1ZGY2YWE0ZjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCiAgICAgICAgICAgICAg
ICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVu
dChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYWRkRHJhd2lu
Z0l0ZW1FeHRlbnQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDEwN2YyMGVjNGYxYzQxMmY4MDFl
ODIwYzA0YjA3MjhmMjQ4ODNhYTMuLjg3ZTIzNDIxY2EyOTkzNGE3ZDc4OWRjNTMyNTdlNDVlNzA4
ZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKICAgICBhdXRvIHJlc291cmNlSWRl
bnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKICAgICBp
ZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZl
cik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CkBAIC03Miw3
ICs3Miw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAgYXV0byByZXNvdXJjZUlkZW50
aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8q
IGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAg
IG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2UpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBy
ZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgc3Rh
dGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0
ZW0oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBz
dHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4K
QEAgLTEwNyw3ICsxMDcsNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIGF1dG8gcmVz
b3VyY2VJZGVudGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0
byogZm9udCA9IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGZvbnRJ
dGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNl
SWRlbnRpZmllcjsKIH0KQEAgLTExNSw2NSArMTE1LDY1IEBAIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29u
dGV4CiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBp
dGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNv
bnRleHQoKSkpCi0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBp
ZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFn
ZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1
ZmZlcj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwg
bV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAg
ICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7CiAgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdl
SXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd0dseXBocz4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMs
IGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0Nh
Y2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07
Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgICAg
IHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYg
KGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihj
b250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CiAgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRl
SXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzPigpKSB7CiAgICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAg
ICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6
bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxp
ZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0g
aXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fbWFza0lt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0u
ZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsK
ICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0
dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAo
aXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKICAgICAgICAgaWYgKCFtX21h
c2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07CiAg
ICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdlQnVm
ZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIg
PSBudWxscHRyOwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0K
IAogICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
IH07CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYg
aW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVt
b3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDk4MjIyZGQ5NGNlZmZlNTAxMTM0NjQ0ZjRmZjljNTgz
MThmNTk1NjguLjEyYjAyNjVhOWM5MDNkMTFjOWZkOWMxNzY2OTAwNTgyYzRkMGY4YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1l
bW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAg
T3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIEluTWVtb3J5RGlzcGxheUxp
c3Q6OlJlYWRpbmdDbGllbnQ6OmRlY28KICAgICBJdGVtSGFuZGxlIHJlc3VsdCB7IGhhbmRsZUxv
Y2F0aW9uIH07CiAgICAgaWYgKGRhdGFIYW5kbGUuc2FmZUNvcHkodHlwZSwgcmVzdWx0KSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxh
eUxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDJhMGVlODBjY2JiMmQ5ZTJiYjAyOTQ5MTcx
ZmI0M2RjYmJlMzJkM2MuLjE1ZTE5Yjg4MTg4MWJmMWQ5ZGIzZGFmMGFjODU3N2ZhMGQzMzVlMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
dXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRp
bmdEYXRhJgogICAgIGZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsK
ICAgICBGbG9hdFBvaW50IHBvaW50KDAsIGZpbHRlclJlZ2lvbi55KCkgKyBzdGFydFkpOwogICAg
IGludCBpbmRleE9mUGl4ZWxDaGFubmVsID0gc3RhcnRZICogKGZpbHRlclJlZ2lvbi53aWR0aCgp
IDw8IDIpOwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNmcm9tID0gZmlsdGVyKCku
YWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5hYnNvbHV0
ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAKICAg
ICBmb3IgKGludCB5ID0gc3RhcnRZOyB5IDwgZW5kWTsgKyt5KSB7CiAgICAgICAgIHBvaW50LnNl
dFkocG9pbnQueSgpICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYzAwYjI5MTI2NmVhY2M4
NzFhODE5OTA3MjQ0ODBkZjU5ZTlhYzY3OS4uZTI1OTYxN2QxMTQ5OGFmMGY4MDgzMzJiOTJhNGIz
ZTdmOWNmYzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHZvaWQg
RmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpCiB2b2lkIEZpbHRl
ckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogewogICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBudWxs
cHRyOwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3ByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFyUmVz
dWx0c1JlY3Vyc2l2ZSgpCkBAIC00NDksNyArNDQ5LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3Rp
bmEKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgdG8gc3RvcmUgaW5jb21pbmcgUGl4ZWxC
dWZmZXIKICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUs
IG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgb3BlcmF0
aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9uUmVj
dCk7CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSh0YXJnZXRDb2xv
clNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmFs
cGhhRm9ybWF0KTsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YQogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0IGNvbG9yIHNw
YWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCiAgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBt
X2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIHRhcmdldENv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhhcHBlbnMgaW50ZXJuYWxseSB3
aGVuIGRyYXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFub3RoZXIKICAgICBjb252ZXJ0
ZWRCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW5wdXRCdWZmZXIsIHJlY3QpOwpA
QCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluCiAKICAgICBtX3Jlc3Vs
dENvbG9yU3BhY2UgPSBkZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiAKLSAgICBtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0ID0gV1RGOjpudWxsb3B0OwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gV1RGOjpudWxsb3B0OworICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBzdGQ6
Om51bGxvcHQ7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMjIxMzc1ZTlhNzBhODc2ODExZjQ3MDk4
Mjk1OWViNjkzODIxODE5My4uYTM3MDAwYTNjYzA5NTM1ZDAxYzllMGQ2N2QzZjA3NGI4NTA4NDBk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04NCwxMCArODQsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3Vs
dChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6
bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVz
dWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RG
OjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVk
QXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25D
b2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJl
c3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0RWZm
ZWN0cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzOyB9CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dEVmZmVjdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJbnB1
dHMoKSBjb25zdCB7IHJldHVybiBtX2lucHV0RWZmZWN0cy5zaXplKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRD
YWNoZUZyZWVUeXBlLmNwcAppbmRleCBlYTM1MDg2N2IyZTkyODkzYjYzMmIyYTBmMWJhNjNjNjVl
OTA4OTcxLi43ZjA4MDhkYjAyYWU0ZmU5ZDAwODlhNmMwNmVjZDczNThiZGFmNjhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVG
cmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC01OTgsNyArNTk4LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShj
b25zdCBGb250RGUKIAogT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3Jt
QWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEVOQUJMRShWQVJJQVRJ
T05fRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCmlu
ZGV4IGZmNTQwZDUxYzYwY2Q1YTc5OTA0YmMzNWM5OGZjOWE1YWI5NWVjNTguLjQ1NTEyNmQ0Yzk5
NGEwYzRmNWY3NzE1OGRkN2YzOWZiNjliNThhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFn
ZVRyZWVOb2RlRnJlZVR5cGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgR2x5cGhQYWdlOjpm
aWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICBpZiAoIWZhY2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdURjo6T3B0aW9uYWw8R2x5cGg+IHplcm9X
aWR0aFNwYWNlR2x5cGhWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoPiB6ZXJvV2lkdGhT
cGFjZUdseXBoVmFsdWU7CiAgICAgYXV0byB6ZXJvV2lkdGhTcGFjZUdseXBoID0KICAgICAgICAg
WyZdIHsKICAgICAgICAgICAgIGlmICghemVyb1dpZHRoU3BhY2VHbHlwaFZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9u
dERhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAppbmRleCBiOTY3MjdhYjM5ZTc2OTdjMzdm
NzYzY2EyMzdkMWNkOWMzNTVmMWE4Li5lNzkxOTc5YzQ4MTdlMTFiYzkyYTAwZWQ4NDg3NDU4N2M4
MGFmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1BlckVtKEZUX0Zh
Y2UgZnJlZVR5cGVGYWNlKQogICAgIGlmIChhdXRvKiB0dEhlYWRlciA9IHN0YXRpY19jYXN0PFRU
X0hlYWRlcio+KEZUX0dldF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgZnRfc2ZudF9oZWFkKSkp
CiAgICAgICAgIHJldHVybiB0dEhlYWRlci0+VW5pdHNfUGVyX0VNOwogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZvbnQ6OnBs
YXRmb3JtSW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAppbmRleCAwNGU1NzM0NjE3ZTdiNDE0MmYwZDk1NGQ1
NDI1ZWM1ZTU2YzU5NmFhLi5lMjkyNmJkMDA3N2Y5MzU3MDRiZmE1ZDFmMmNhOGM1MTRmOTA3Yzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJy
b3JTY29wZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVFcnJvclNjb3Blcy5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBHUFVFcnJvclNjb3Blczo6R1BV
RXJyb3JTY29wZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9pZCBH
UFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQogewot
ICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIFdURjo6bnVsbG9w
dCB9KTsKKyAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBzdGQ6
Om51bGxvcHQgfSk7CiB9CiAKIE9wdGlvbmFsPEdQVUVycm9yPiBHUFVFcnJvclNjb3Blczo6cG9w
RXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQogewogICAgIGlmIChtX2Vycm9yU2NvcGVz
LmlzRW1wdHkoKSkgewogICAgICAgICBmYWlsTWVzc2FnZSA9ICJObyBlcnJvciBzY29wZSBleGlz
dHMhIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIHNjb3BlID0gbV9lcnJvclNjb3Blcy50YWtlTGFz
dCgpOwotICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUgPyBX
VEY6Om51bGxvcHQgOiBzY29wZS5lcnJvcjsKKyAgICByZXR1cm4gc2NvcGUuZmlsdGVyID09IEdQ
VUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxsb3B0IDogc2NvcGUuZXJyb3I7CiB9CiAKIHZv
aWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBH
UFVFcnJvckZpbHRlciBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KaW5kZXgg
ZDViNDdkMjFhNTQyNTg2MTZlYTFiNTE1OTllNGViY2JiMThlOTJmNS4uYTllYzE3YjhjYzA0ZGQy
NTJlZDYxZjc3ZWVmNWI3MTgxY2JjYTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5t
bQpAQCAtNDgsMjEgKzQ4LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxHUFVCdWZmZXJCaW5kaW5nPiB0
cnlHZXRSZXNvdXJjZUFzQnVmZmVyQmluZGluZyhjb25zdCBHUFVCaW5kaW5nCiAjZW5kaWYKICAg
ICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8R1BVQnVmZmVyQmluZGluZz4ocmVzb3VyY2Up
KSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogUmVzb3VyY2UgaXMgbm90IGEgYnVmZmVyIHR5
cGUhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYXV0byYgYnVmZmVyQmluZGluZyA9
IFdURjo6Z2V0PEdQVUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKTsKICAgICBpZiAoIWJ1ZmZlckJp
bmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIl
czogSW52YWxpZCBNVExCdWZmZXIgaW4gR1BVQnVmZmVyQmluZGluZyEiLCBmdW5jdGlvbk5hbWUp
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KICAgICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGlu
Zy5zaXplKSB8fCBidWZmZXJCaW5kaW5nLnNpemUgPiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+Ynl0
ZUxlbmd0aCgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQnVmZmVyQmluZGluZyBz
aXplIGlzIHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAvLyBNVExC
dWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jtcy4KICAg
ICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZzZXQpKSB7CiAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogQnVmZmVyIG9mZnNldCBpcyB0b28gbGFyZ2UhIiwgZnVu
Y3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIEdQVUJ1ZmZlckJpbmRpbmcgeyBidWZm
ZXJCaW5kaW5nLmJ1ZmZlci5jb3B5UmVmKCksIGJ1ZmZlckJpbmRpbmcub2Zmc2V0LCBidWZmZXJC
aW5kaW5nLnNpemUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5t
bQppbmRleCA0MDdlZTRhYTMwNjdiZjEyYTlhMGIyOTE3ZWY0NDMyZWQwNjFiY2Y0Li43OWE5OWRj
NWM0YjY2ODM2OTcxODg4ODQ0ODQzNzBhMjMwMWU3MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0YWwu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bXB1dGVQaXBlbGluZU1ldGFsLm1tCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxX
SExTTDo6Q29tcHV0ZURpbWVuc2lvbnM+IHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFt
bWFibGVTCiAgICAgICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0ID0gV0hMU0w6OnByZXBhcmUo
KmNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCksICp3aGxzbERlc2NyaXB0b3IpOwog
ICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgewogICAgICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIldITFNMIGNvbXBpbGUgZXJyb3I6
ICIsIHdobHNsQ29tcGlsZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
CiAgICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hsc2xDb21waWxlUmVzdWx0LT5jb21wdXRl
RGltZW5zaW9uczsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V0hMU0w6OkNv
bXB1dGVEaW1lbnNpb25zPiB0cnlTZXRGdW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxlUwog
ICAgIGlmICh0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRsRGVz
Y3JpcHRvciwgY29tcHV0ZUVudHJ5UG9pbnQsIGVycm9yU2NvcGVzKSkKICAgICAgICAgcmV0dXJu
IGNvbXB1dGVEaW1lbnNpb25zOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ29udmVydFJlc3VsdCB7CkBAIC0xMjksNyAr
MTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbnZlcnRSZXN1bHQ+IGNvbnZlcnRDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yKGNvbnN0IEdQVUNvbXB1dGUKIAogICAgIGlmICghbXRsRGVzY3JpcHRv
cikgewogICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9yIGNy
ZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Y29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVzY3JpcHRvci5jb21wdXRlU3RhZ2U7CkBAIC0x
NDUsMTQgKzE0NSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZQogICAgICAgICAgICAgd2hs
c2xEZXNjcmlwdG9yLT5sYXlvdXQgPSBXVEZNb3ZlKCpsYXlvdXQpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY29u
dmVydGluZyBHUFVQaXBlbGluZUxheW91dCEiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSB0cnlTZXRGdW5jdGlvbnMoY29t
cHV0ZVN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRvciwg
ZXJyb3JTY29wZXMpKQogICAgICAgICByZXR1cm4ge3sgbXRsRGVzY3JpcHRvciwgKmNvbXB1dGVE
aW1lbnNpb25zIH19OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ3JlYXRlUmVzdWx0IHsKQEAgLTE2NCwxMiArMTY0LDEy
IEBAIHN0YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBl
bGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYKIHsKICAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURl
dmljZSgpKSB7CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52
YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBjb252ZXJ0UmVzdWx0ID0g
Y29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBlcnJv
clNjb3Blcyk7CiAgICAgaWYgKCFjb252ZXJ0UmVzdWx0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIEFTU0VSVChjb252ZXJ0
UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwogICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IGNv
bnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKIApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0
YXRlKGNvbnN0IEdQVURldmljZSYKICAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0
Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVz
Y3JpcHRvci5nZXQoKSBvcHRpb25zOk1UTFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9uOm5p
bCBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoIXBpcGVsaW5lKSB7CiAgICAgICAgIGVycm9yU2Nv
cGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uLlVURjhTdHJpbmcgOiAiVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVTdGF0
ZSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxp
bmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAppbmRleCAyMzFm
MWFiZTYzMDZjOTUxYjM0NGEzMTlkNGU4YWZmNmY4NjE1ZjRmLi4zNTRjNmEyYTlmNTMzOTA5NjQ5
OWFhN2JiYjRhZDZiYWI5N2E4MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGlu
ZU1ldGFsQ29udmVydExheW91dC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIE9wdGlvbmFs
PFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gY29udmVydEJpbmRpbmdUeXBlKEdQVUJp
bmRHcm91cEwKICAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShHUFVC
aW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8
V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiB7IFdITFNM
OjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhOYW1l
IH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1ZmZl
cikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJp
bmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiB7IFdITFNMOjpTYW1wbGVy
QmluZGluZyB7IH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVkVGV4
dHVyZSkgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFp
bHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMCiAgICAgfSwgWyZdKEdQVUJpbmRH
cm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBPcHRpb25hbDxXSExT
TDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlN0
b3JhZ2VCdWZmZXJCaW5kaW5nIHsgc3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUgfSB9
OwogICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVyKSAt
PiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9KSwg
aW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7CiB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9uYWw8
V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYgbGF5
b3V0KQogewogICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OwogICAgIGlmIChsYXlvdXQuYmluZEdy
b3VwTGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheW91dC5iaW5kR3JvdXBMYXlvdXRz
KCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgYmluZEdyb3VwTGF5b3V0ID0g
bGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtpXTsKICAgICAgICAgV0hMU0w6OkJpbmRHcm91cCBi
aW5kR3JvdXA7CkBAIC03OCw5ICs3OCw5IEBAIE9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNvbnZl
cnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKICAgICAgICAgICAgIGlm
IChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRpbmdUeXBlKGJpbmRpbmdEZXRhaWxzLmlu
dGVybmFsQmluZGluZ0RldGFpbHMpKQogICAgICAgICAgICAgICAgIGJpbmRpbmcuYmluZGluZyA9
ICpiaW5kaW5nVHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmcgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgYmluZGluZy5leHRlcm5hbE5hbWUgPSBiaW5kaW5nRGV0YWlscy5leHRlcm5hbEJp
bmRpbmcuYmluZGluZzsKICAgICAgICAgICAgIGJpbmRpbmcuaW50ZXJuYWxOYW1lID0gYmluZGlu
Z0RldGFpbHMuaW50ZXJuYWxOYW1lOwogICAgICAgICAgICAgYmluZEdyb3VwLmJpbmRpbmdzLmFw
cGVuZChXVEZNb3ZlKGJpbmRpbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0
YWwubW0KaW5kZXggMTU5OWYwYmEyMjlkNGFmYmRhYmE3ZGZjYmJiYmY4Mzk5OTUzYWUxNy4uYTg0
N2NlMDNmNTJmOWEyNTZkOTEyMDMyZWUzZGIyYmM4ODRmOTkxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0
YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW0KQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0YXRpYyBPcHRp
b25hbDxXSExTTDo6VGV4dHVyZUZvcm1hdD4gY29udmVydFRleHR1cmVGb3JtYXQoR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtCiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgogICAg
ICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07CiAgICAgY2FzZSBH
UFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRoaXMuCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQgdG8g
ZG8gd2l0aCB0aGlzLgogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybVNSR0I6
CiAgICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I7CiAg
ICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKICAgICAgICAgcmV0dXJuIFdI
TFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmluZGV4IDMzNjg1NTBiMGRiYmM2OTY1
NzQwMTZkODZiOGMzMTcwODMyYjc1MGMuLjY1NmYxNDhjZDczMTRkMTdkOWZiYzQzYmE3YzIyZjFi
NmIwZGEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTUyLDcgKzUyLDcg
QEAgc3RhdGljIE9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiB0cnlHZXRTdXBwb3J0ZWRQaXhlbEZv
cm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm0KICAgICAgICAgcmV0dXJuIG10bEZvcm1hdDsKICAg
ICBkZWZhdWx0OiB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnRyeUNyZWF0
ZSgpOiBVbnN1cHBvcnRlZCBNVExQaXhlbEZvcm1hdCEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggMDZlN2RmYjhjNDYyODRjMGI0OGQwMzkxMDMx
ZDc1MTY3YjZjZmQyYi4uYWMyYzQyYmY2MGMyMzYzNDlhZjg2Y2MwYjBkMTZjNDQ4ODVkZTIwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZs
YWdzKE9wdGlvblNlCiAKICAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNh
Z2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0p
ICYmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7CiAgICAgICAg
IExPRyhXZWJHUFUsICIlczogVGV4dHVyZSBjYW5ub3QgaGF2ZSBib3RoIFNUT1JBR0UgYW5kIGEg
cmVhZC1vbmx5IHVzYWdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgTVRMVGV4
dHVyZVVzYWdlIHJlc3VsdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVyLmNw
cAppbmRleCBiMjcwMDcyOTY1NTJkMGEzODYwYjA4ZmUzMGViZDhjYjU4MWRhMTIwLi5iMTU4YzVm
ZTBmNDFiMDc4YjA4ZDk1OTcwMjBiZTVlZjZmMDg1ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HTFZpZGVv
U2lua0dTdHJlYW1lci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBPcHRpb25hbDxHUmVmUHRyPEdz
dENvbnRleHQ+PiByZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNoYXIqIGNvbnRleHRUeXBlKQogICAg
IGF1dG8qIGdzdEdMQ29udGV4dCA9IHNoYXJlZERpc3BsYXkuZ3N0R0xDb250ZXh0KCk7CiAKICAg
ICBpZiAoIShnc3RHTERpc3BsYXkgJiYgZ3N0R0xDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZ19z
dHJjbXAwKGNvbnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpKSB7CiAgICAg
ICAgIEdzdENvbnRleHQqIGRpc3BsYXlDb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3KEdTVF9HTF9E
SVNQTEFZX0NPTlRFWFRfVFlQRSwgVFJVRSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8
R1JlZlB0cjxHc3RDb250ZXh0Pj4gcmVxdWVzdEdMQ29udGV4dChjb25zdCBjaGFyKiBjb250ZXh0
VHlwZSkKICAgICAgICAgcmV0dXJuIGFkb3B0R1JlZihhcHBDb250ZXh0KTsKICAgICB9CiAKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0
YXRpYyBib29sIHNldEdMQ29udGV4dChHc3RFbGVtZW50KiBlbGVtZW50U2luaywgY29uc3QgY2hh
ciogY29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGM5YmUyNzg4
OWU0ZDJlNTMxMmIzZWM5M2EzMGY0YTdjOGU3NjkzOTMuLjM5OTRjZGZhYjVmZjhlYWZiNjE3MzA4
NzhkZGM3NjhhZDJhOWI2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fw
cyhjb25zdCBHc3RDYXBzKiBjYXBzKQogewogICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2Fwcywg
R1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJGYWls
ZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0aGVzZSBhcmUgbm90IGEgdmlkZW8gY2Fw
cyIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CkBAIC0xNDUs
NyArMTQ1LDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fw
cyhjb25zdCBHc3RDYXBzKiBjYXBzKQogICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICAgICAg
ICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgICAgIGlmICghZ3N0X3ZpZGVvX2lu
Zm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHdpZHRoID0g
R1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOwogICAgICAgICBoZWlnaHQgPSBHU1RfVklERU9f
SU5GT19IRUlHSFQoJmluZm8pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIE9wdGlvbmFsPEZsb2F0U2l6
ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykKICAgICAg
ICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0QoJmlu
Zm8pOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwoRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQgKiAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRvcikg
LyBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvcikpKSk7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChGbG9hdFNpemUod2lkdGgsIGhlaWdodCAqIChzdGF0
aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSAvIHN0YXRpY19jYXN0
PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yKSkpKTsKIH0KIAogYm9vbCBnZXRTYW1w
bGVWaWRlb0luZm8oR3N0U2FtcGxlKiBzYW1wbGUsIEdzdFZpZGVvSW5mbyYgdmlkZW9JbmZvKQpA
QCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgZW5zdXJlR1N0cmVhbWVySW5pdGlhbGl6ZWQoKQogICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJUaGUgVVNFX1BMQVlCSU4zIHZhcmlhYmxlIHdhcyBkZXRl
Y3RlZCBpbiB0aGUgZW52aXJvbm1lbnQuIEV4cGVjdCBwbGF5YmFjayBpc3N1ZXMgb3IgcGxlYXNl
IHVuc2V0IGl0LiIpOwogCiAjaWYgRU5BQkxFKFZJREVPKSB8fCBFTkFCTEUoV0VCX0FVRElPKQot
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbWV0ZXJzID0gc19VSVByb2Nlc3NDb21tYW5kTGlu
ZU9wdGlvbnMudmFsdWVPcihleHRyYWN0R1N0cmVhbWVyT3B0aW9uc0Zyb21Db21tYW5kTGluZSgp
KTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1ldGVycyA9IHNfVUlQcm9jZXNzQ29tbWFu
ZExpbmVPcHRpb25zLnZhbHVlX29yKGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1hbmRM
aW5lKCkpOwogICAgICAgICBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5lT3B0aW9ucy5yZXNldCgpOwog
ICAgICAgICBjaGFyKiogYXJndiA9IGdfbmV3MChjaGFyKiwgcGFyYW1ldGVycy5zaXplKCkgKyAy
KTsKICAgICAgICAgaW50IGFyZ2MgPSBwYXJhbWV0ZXJzLnNpemUoKSArIDE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IGZkZGQ1YzNjMTRlMTYxZWVm
OTVkMzQwYjBlNjA5YTUyMDRmNDg3M2IuLmEzYTM5MmY4MmM5YjYwMGJhYjYzZDUxODZlZGU3ZTYw
ZGNlMDQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3Bw
CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRp
YWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBhdjFEZWNvZGVyc0Rpc2FsbG93ZWRMaXN0IHsgImF2MWRlYyJfcyB9
OwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVk
KENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGZhY3Rvcmllcy5oYXNF
bGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rlciwg
InZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6
Ok5vLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFEZWNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkpKSB7
CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQo
Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
Tm8sIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MURlY29kZXJzRGlzYWxsb3dlZExpc3Qp
KSkpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiks
IGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIp
LCBmYWxzZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2
MSIpLCBmYWxzZSk7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIK
ICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0IHsg
ImF2MWVuYyJfcyB9OwotICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6OlllcywgbWFrZU9wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNhbGxvd2VkTGlzdCkp
KTsKKyAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRlby94
LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMsIHN0
ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QpKSk7CiAg
ICAgaWYgKGF2MUVuY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNNYXAu
YWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7CkBAIC02NjMsNyArNjYzLDcgQEAgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OmlzQ29uZmkKICAgICAgICAgYXV0byYgYXVkaW9Db25maWd1cmF0aW9uID0g
bWVkaWFDb25maWd1cmF0aW9uLmF1ZGlvLnZhbHVlKCk7CiAgICAgICAgIEdTVF9ERUJVRygiQ2hl
Y2tpbmcgJXMgc3VwcG9ydCBmb3IgYXVkaW8gY29uZmlndXJhdGlvbjogXCIlc1wiICVzIGNoYW5u
ZWxzLCBiaXRyYXRlOiAlIiBHX0dVSU5UNjRfRk9STUFUICIgc2FtcGxlcmF0ZTogJXUiLCBjb25m
aWdMb2dTdHJpbmcsCiAgICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUu
dXRmOCgpLmRhdGEoKSwgYXVkaW9Db25maWd1cmF0aW9uLmNoYW5uZWxzLnV0ZjgoKS5kYXRhKCks
Ci0gICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uYml0cmF0ZS52YWx1ZU9yKDApLCBhdWRp
b0NvbmZpZ3VyYXRpb24uc2FtcGxlcmF0ZS52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgIGF1ZGlv
Q29uZmlndXJhdGlvbi5iaXRyYXRlLnZhbHVlX29yKDApLCBhdWRpb0NvbmZpZ3VyYXRpb24uc2Ft
cGxlcmF0ZS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUpOwogICAgICAgICBpc1N1cHBvcnRl
ZCA9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChjb25maWd1cmF0aW9uLCBjb250ZW50VHlwZS5j
b250YWluZXJUeXBlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuaAppbmRleCAwMDdmZjg4MDc2OWQ2MTA3NmMyZWQ5ZDY3YjUxOTc2Mjg2NmViODc2Li5m
Nzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0MzUyM2EzOTE5MDA0ZjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgR0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAKICAgICAgICAgZW51bSBjbGFz
cyBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsKLSAgICAgICAgUmVnaXN0cnlM
b29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBz
U3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVy
OjpObywgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gV1RGOjpudWxs
b3B0KSBjb25zdDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1l
ZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3Np
ZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IGRpc2FsbG93ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgICAgICBHTGlz
dCogYXVkaW9EZWNvZGVyRmFjdG9yaWVzIHsgbnVsbHB0ciB9OwogICAgICAgICBHTGlzdCogYXVk
aW9QYXJzZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmgKaW5kZXggOGY5NjlmZWVlMTJiZDBlMDU1Njk2Yzk0NGM4NmIwZGIwZmRmNzQ0Zi4u
OTFmOTJjYmJjY2M4YjI2ZWYwNzVjNzBjODU1MGY5YTg1YTg5ZTRlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgUmVw
ZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1
dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZShtX21pbWVUeXBlKTsgfQotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVybiBzaXplKCk7IH0KICAgICBi
b29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7IHJl
dHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1NjZmYmUyNTBhZWE0MzkyNzBiMWRkMDYzY2Rh
NjY5YWM3MmM3NjE2Li4yYmFlZjJhNGVkMjQ5MTc0Mzg2MzgyODJlMTdmYzJkOGEyOWJhMTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MzM5LDcgKzMzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQo
KTsKICAgICBtX2FyZVZvbHVtZUFuZE11dGVJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIG1faGFz
VGFpbnRlZE9yaWdpbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2hhc1RhaW50ZWRPcmlnaW4gPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1faXNEZWxheWluZ0xvYWQpCiAgICAgICAgIGNvbW1p
dExvYWQoKTsKQEAgLTM1NTgsNyArMzU1OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVtZSogdm9sdW1lCiBP
cHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICBpZiAoIXdlYmtp
dEdzdENoZWNrVmVyc2lvbigxLCAxOCwgMCkgJiYgIW1fZnBzU2luaykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ2
NF90IHRvdGFsVmlkZW9GcmFtZXMgPSAwOwogICAgIHVpbnQ2NF90IGRyb3BwZWRWaWRlb0ZyYW1l
cyA9IDA7CkBAIC0zNTY3LDEwICszNTY3LDEwIEBAIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb1BsYXliYWNrCiAg
ICAgICAgIGdfb2JqZWN0X2dldChtX3ZpZGVvU2luay5nZXQoKSwgInN0YXRzIiwgJnN0YXRzLm91
dFB0cigpLCBudWxscHRyKTsKIAogICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2
NChzdGF0cy5nZXQoKSwgInJlbmRlcmVkIiwgJnRvdGFsVmlkZW9GcmFtZXMpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF91aW50NjQoc3RhdHMuZ2V0KCksICJk
cm9wcGVkIiwgJmRyb3BwZWRWaWRlb0ZyYW1lcykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2UgaWYg
KG1fZnBzU2luaykgewogICAgICAgICB1bnNpZ25lZCByZW5kZXJlZEZyYW1lcywgZHJvcHBlZEZy
YW1lczsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fZnBzU2luay5nZXQoKSwgImZyYW1lcy1yZW5k
ZXJlZCIsICZyZW5kZXJlZEZyYW1lcywgImZyYW1lcy1kcm9wcGVkIiwgJmRyb3BwZWRGcmFtZXMs
IG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IDMzM2QwZTkzYzdhYWJhODAxNjA4NDMzOTVhMjFkY2IzMjZlMjIyZDUuLjgwMzkxZDkx
Njc2NTQ1NDRhZWY1NWY4YTI0YWRmZDE1NWE2MDE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTU1Niw3ICs1NTYsNyBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgdWludDY0X3QgbV9yZWFkUG9zaXRpb25BdExhc3REaWRMb2FkaW5nUHJvZ3Jl
c3MgeyAwIH07CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+
IG1fb3JpZ2luczsKLSAgICBPcHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBXVEY6
Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBzdGQ6
Om51bGxvcHQgfTsKIAogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9mcHNTaW5rIHsgbnVsbHB0
ciB9OwogICAgIHVpbnQ2NF90IG1fdG90YWxWaWRlb0ZyYW1lcyB7IDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBsZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggNWQzZDAxYTI2OGY1MDYxODE5OTUzNzdhNjEyNThk
OWIwNjM5MjUzOC4uODU4MmNiNjYyNTA5YThkMmZiNTA3MjgxOTk1NzIzMjFlYjEzNWJjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
U2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25zdCBv
dmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRl
OwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENsYW1w
ZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9TaW5r
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDVjNjlmNzM3NjMzNGM2MDY2NmMw
NDU5MTU5MTBlZWM4NjMyNmExMGIuLjI2Yjg2YTVkMDc1ZmE1NjBjNWZhODlmNjQ1OTYyNjBhZTJi
ODExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCkBA
IC05MCwyMCArOTAsMjAgQEAgc3RydWN0IEF1ZGlvUGFja2V0SG9sZGVyIHsKICAgICB7CiAgICAg
ICAgIGZkID0gbWVtZmRfY3JlYXRlKCJ3cGUtYXVkaW8tYnVmZmVyIiwgTUZEX0NMT0VYRUMpOwog
ICAgICAgICBpZiAoKmZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGZ0cnVuY2F0
ZSgqZmQsIGJ1ZmZlci0+c2l6ZSgpKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNzaXpl
X3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXpl
KCkpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbikgIT0gYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAobHNlZWsoKmZkLCAwLCBTRUVLX1NFVCkgPT0gLTEp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oCmluZGV4IDg5NmFiZGJkNjU2NTU5MjBhMDgxZDg1MDU5MWFiZjNmZmRm
MThmNTQuLmUzZDk3YTVjOWVkN2ZmYjE3NWExMzgwZWZlNWExYzIwZTEwODE0OTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJv
eHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsb3NlR0NyeXB0SGFuZGxlKCk7CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQg
YmUgbmljZSB0byB1c2Ugc29tZXRoaW5nIGluIFdlYkNvcmUgZm9yIGNyeXB0by4uLgotICAgIE9w
dGlvbmFsPGdjcnlfY2lwaGVyX2hkX3Q+IG1fZ0NyeXB0SGFuZGxlIHsgV1RGOjpudWxsb3B0IH07
CisgICAgT3B0aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5kbGUgeyBzdGQ6Om51
bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5k
ZXIuY3BwCmluZGV4IDE3ZGMxNjM0NDM3YzY0YjkxNDgwMzIzMDg2ZjdkNTg3ZGE4ZjVhZWMuLjg1
ZjdjZjRkNzg2NGFmODNkMjY1N2Y1YjcyNTY1MjFmNTY3NGM2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAocmVx
dWVzdFR5cGUubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJlIGFy
ZSBzaW1wbGVyIHdheXMgdG8gY29udmVydCBhIHNpbmdsZSBkaWdpdCB0byBhIG51bWJlciB0aGFu
IGNhbGxpbmcgcGFyc2VJbnRlZ2VyLgotICAgICAgICAgICAgbV90eXBlID0gbWFrZU9wdGlvbmFs
KHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+KHBhcnNlSW50ZWdlcjxp
bnQ+KHJlcXVlc3RUeXBlKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICBtX3R5cGUgPSBzdGQ6
Om1ha2Vfb3B0aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4o
cGFyc2VJbnRlZ2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlX29yKDApKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBtX3BheWxvYWQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwYXlsb2FkLmNoYXJh
Y3RlcnM4KCkgKyBvZmZzZXQsIHBheWxvYWQubGVuZ3RoKCkgLSBvZmZzZXQpOwpAQCAtNTY0LDcg
KzU2NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJlc3Bv
bnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgbV9rZXlTdG9yZS5j
b252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNpbmcgSlNPTiByZXBvbnNlIG1lc3NhZ2Vz
IGlzIG11Y2ggY2xlYW5lciB0aGFuIHVzaW5nIHN0cmluZyBwcmVmaXhlcywgSSBiZWxpZXZlIHRo
ZXJlCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBldmVuIGJlIG90aGVyIHBhcnRzIG9mIHRoZSBz
cGVjIHdoZXJlIG5vdCBoYXZpbmcgc3RydWN0dXJlZCBkYXRhIHdpbGwgYmUgYmFkLgpAQCAtNTc0
LDE3ICs1NzQsMTcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAgICAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1lc3Nh
Z2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBH
U1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3NhZ2Ut
PnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBl
OjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92ZSht
ZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBHU1RfRVJST1IoIm1lc3NhZ2Ugb2Ygc2l6ZSAlenUg
aW5jb3JyZWN0bHkgZm9ybWF0dGVkIiwgcmVzcG9uc2VNZXNzYWdlID8gcmVzcG9uc2VNZXNzYWdl
LT5zaXplKCkgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVk
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBH
U1RfRVJST1IoInVwZGF0ZSBsaWNlbnNlIHJlcG9ydGVkIGVycm9yIHN0YXRlIik7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6
RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vz
c2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5nZXQo
KSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQpAQCAtNTk5
LDcgKzU5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24o
TGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJl
c3BvbnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmNvbnZl
cnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNj
ZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKKyAgICAgICAg
ICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCks
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vz
c2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBVc2luZyBKU09OIHJlcG9uc2UgbWVzc2FnZXMgaXMgbXVjaCBjbGVhbmVy
IHRoYW4gdXNpbmcgc3RyaW5nIHByZWZpeGVzLCBJIGJlbGlldmUgdGhlcmUKICAgICAgICAgICAg
ICAgICAvLyB3aWxsIGV2ZW4gYmUgb3RoZXIgcGFydHMgb2YgdGhlIHNwZWMgd2hlcmUgbm90IGhh
dmluZyBzdHJ1Y3R1cmVkIGRhdGEgd2lsbCBiZSBiYWQuCkBAIC02MDksMTEgKzYwOSwxMSBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVkQnVm
ZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIs
IG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJtZXNz
YWdlIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHN0ZDo6
bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdlVHlw
ZTo6TGljZW5zZVJlcXVlc3QpLAorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdl
LnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQs
IFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgR1NUX0VSUk9SKCJtZXNzYWdlIG9mIHNpemUgJXp1IGluY29ycmVj
dGx5IGZvcm1hdHRlZCIsIHJlc3BvbnNlTWVzc2FnZSA/IHJlc3BvbnNlTWVzc2FnZS0+c2l6ZSgp
IDogMCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmU6Ok90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIFNlc3Np
b25Mb2FkRmFpbHVyZTo6T3RoZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JRAogICAgICAgICAgICAgYXV0byByZXNwb25zZU1lc3NhZ2VTaXplID0gcmVzcG9uc2VNZXNz
YWdlID8gcmVzcG9uc2VNZXNzYWdlLT5zaXplKCkgOiAwOwogICAgICAgICAgICAgU3RyaW5nVmll
dyByZXNwb25zZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocmVzcG9uc2VNZXNzYWdl
RGF0YSksIHJlc3BvbnNlTWVzc2FnZVNpemUpOwogICAgICAgICAgICAgR1NUX0VSUk9SKCJzZXNz
aW9uICVzIG5vdCBsb2FkZWQsIHJlYXNvbiAlcyIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCks
IHJlc3BvbnNlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIHNl
c3Npb25Mb2FkRmFpbHVyZUZyb21UaHVuZGVyKHJlc3BvbnNlKSk7CisgICAgICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCwgc2Vzc2lvbkxvYWRGYWlsdXJlRnJvbVRodW5kZXIocmVzcG9uc2UpKTsKICAg
ICAgICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1w
dHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fbG9hZChtX3Nlc3Npb24uZ2V0KCkpKQpAQCAtNjQ2LDcg
KzY0Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtl
eVN0YXR1czo6UmVsZWFzZWQpLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
KTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtl
eVN0YXR1czo6UmVsZWFzZWQpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NF
UlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTY1NywxMiArNjU3LDEyIEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgR1NUX1dBUk5JTkcoIm1lc3NhZ2Ugb2Ygc2l6ZSAlenUgaW5jb3JyZWN0bHkgZm9ybWF0
dGVkIGFzIHNlc3Npb24gJXMgcmVtb3ZhbCBhbnN3ZXIiLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVk
aWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6
RmFpbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlz
QXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygiY291bGQgbm90IHJlbW92ZSBzZXNz
aW9uICVzIiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6SW50ZXJuYWxFcnJvciksIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICAgICAgY2FsbGJhY2so
bV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBzdGQ6
Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwogICAg
IGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Np
b25fcmVtb3ZlKG1fc2Vzc2lvbi5nZXQoKSkpCkBAIC02NzgsNyArNjc4LDcgQEAgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VUaHVuZGVyJj4gQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2RtSW5zdGFu
Y2VUaHVuZGVyKCkgY28KIHsKICAgICBhdXRvIGluc3RhbmNlID0gY2RtSW5zdGFuY2VQcm94eSgp
OwogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENETUluc3Rh
bmNlVGh1bmRlciY+KCppbnN0YW5jZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhU
ZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCBmNzMxN2JhMWMwOTU1NWQ3MWUxNTBiN2Iw
YjQ4OTJhMzU5NTk0M2U1Li40MDFjMjdlYmI3OGFkNmE5M2MyOWI0ZWQzZTliMjAwMjYxZWUyMzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9D
b21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enouY3Bw
CkBAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFVTY3JpcHRDb2RlPiBjaGFyYWN0
ZXJTY3JpcHQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgVUVycm9yQ29kZSBlcnJvckNvZGUgPSBV
X1pFUk9fRVJST1I7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3JpcHQo
Y2hhcmFjdGVyLCAmZXJyb3JDb2RlKTsKICAgICBpZiAoVV9GQUlMVVJFKGVycm9yQ29kZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtNDIyLDExICs0MjIsMTEgQEAgc3RhdGljIE9w
dGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnMKICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKICAgICB1bnNpZ25lZCBjbHVz
dGVyTGVuZ3RoID0gMDsKICAgICBpZiAoIXRleHRJdGVyYXRvci5jb25zdW1lKGNoYXJhY3Rlciwg
Y2x1c3Rlckxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGN1cnJlbnRTY3JpcHQgPSBjaGFyYWN0ZXJT
Y3JpcHQoY2hhcmFjdGVyKTsKICAgICBpZiAoIWN1cnJlbnRTY3JpcHQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1bnNp
Z25lZCBzdGFydEluZGV4ID0gb2Zmc2V0OwogICAgIGZvciAodGV4dEl0ZXJhdG9yLmFkdmFuY2Uo
Y2x1c3Rlckxlbmd0aCk7IHRleHRJdGVyYXRvci5jb25zdW1lKGNoYXJhY3RlciwgY2x1c3Rlckxl
bmd0aCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpKSB7CkBAIC00MzUsNyAr
NDM1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKIAogICAgICAgICBhdXRvIG5leHRTY3Jp
cHQgPSBjaGFyYWN0ZXJTY3JpcHQoY2hhcmFjdGVyKTsKICAgICAgICAgaWYgKCFuZXh0U2NyaXB0
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gwqc1LjEgSGFuZGxpbmcgQ2hhcmFjdGVycyB3aXRo
IHRoZSBDb21tb24gU2NyaXB0IFByb3BlcnR5LgogICAgICAgICAvLyBQcm9ncmFtcyBtdXN0IHJl
c29sdmUgYW55IG9mIHRoZSBzcGVjaWFsIFNjcmlwdCBwcm9wZXJ0eSB2YWx1ZXMsIHN1Y2ggYXMg
Q29tbW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNv
L0lTT0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94
LmNwcAppbmRleCBlMGE0NDY2YmJkZjU1MjBhYzMzOGI3MTRlNTBiNzNlNzgyNjI3NzUwLi5jMDZl
M2E2MzM4ODYwZjExZWIwZWJjZmE0MzhkMzUyMDI2NmY1ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcApAQCAtMzYsMTQgKzM2LDE0IEBA
IElTT0JveDo6UGVla1Jlc3VsdCBJU09Cb3g6OnBlZWtCb3goRGF0YVZpZXcmIHZpZXcsIHVuc2ln
bmVkIG9mZnNldCkKIHsKICAgICB1aW50NjRfdCBzaXplID0gMDsKICAgICBpZiAoIWNoZWNrZWRS
ZWFkPHVpbnQzMl90PihzaXplLCB2aWV3LCBvZmZzZXQsIEJpZ0VuZGlhbikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBG
b3VyQ0MgdHlwZSA9IHsgdWludDMyX3QgeyAwIH0gfTsKICAgICBpZiAoIWNoZWNrZWRSZWFkPHVp
bnQzMl90Pih0eXBlLCB2aWV3LCBvZmZzZXQsIEJpZ0VuZGlhbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc2l6
ZSA9PSAxICYmICFjaGVja2VkUmVhZDx1aW50NjRfdD4oc2l6ZSwgdmlldywgb2Zmc2V0LCBCaWdF
bmRpYW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGVsc2UgaWYgKCFzaXplKQogICAgICAgICBzaXplID0gdmlldy5ieXRl
TGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveC5jcHAKaW5kZXggMTU4ODljNGVhNTQ4NWZmMmM2YjUyMDRkMzJlODM4ZjJhYzM4OTMx
Ni4uNzZjNTRkZjEwZWEyNDUzMTM4MjNhMzVjMjI1M2Q5NWFkMDJhNGM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBJU09Qcm90ZWN0aW9uU3lzdGVtU3Bl
Y2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRChKU0MKIHsKICAgICBhdXRvIHBlZWtSZXN1bHQg
PSBJU09Cb3g6OnBlZWtCb3godmlldywgb2Zmc2V0KTsKICAgICBpZiAoIXBlZWtSZXN1bHQgfHwg
cGVla1Jlc3VsdC52YWx1ZSgpLmZpcnN0ICE9IGJveFR5cGVOYW1lKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggcHNzaEJveDsKICAgICBwc3NoQm94LnBh
cnNlKHZpZXcsIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggN2ZhNjNjNzQzMTY1NjAzNWZlZjA5N2FmOWUxYjJkNDll
NWZhNTNmZS4uZTIwYjE5MTc2YzkzZjMyMjZhMjZmYjNmZTA3MDdiYjBkNzNkZDM0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaApAQCAt
NzUsMzcgKzc1LDM3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBwcmVz
ZW50YXRpb25UaW1lOwogICAgICAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWU7CiAgICAg
ICAgIGlmICghcHJlc2VudGF0aW9uVGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PE1lZGlhVGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAgICAg
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IHNvdXJjZUlEOwogICAgICAgICBkZWNvZGVyID4+IHNvdXJjZUlEOwogICAgICAgICBpZiAoIXNv
dXJjZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVy
OwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRlbnRpZmll
cikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWxTdGFydFRp
bWU7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGlmICgh
b3JpZ2luYWxTdGFydFRpbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IHNldHRpbmdzOwogICAgICAgICBkZWNvZGVyID4+IHNldHRpbmdzOwogICAgICAgICBpZiAoIXNl
dHRpbmdzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdWVUZXh0Owog
ICAgICAgICBkZWNvZGVyID4+IGN1ZVRleHQ7CiAgICAgICAgIGlmICghY3VlVGV4dCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcHJlc2VudGF0
aW9uVGltZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW0KaW5kZXggODlkODgyYzU3ZjQ3NjFlNTQ2ZGQ0MjQ3MDFmMzNkMmZiMjAzMWYzNC4u
MDdhYWU4YWZmY2IyNDg1MzA5OGRiNmEwMWQxNWNjOWQyOWMxNGM1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtNjksNyArNjks
NyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21O
U0NvbG9yKE5TQ29sb3IgKmNvbG9yKQogICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVl
ZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KIAogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBD
R0Zsb2F0IHJlZENvbXBvbmVudDsKICAgICBDR0Zsb2F0IGdyZWVuQ29tcG9uZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3BsYXlS
ZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA0ZTgxMmM3MDA1OTMw
YzRiNDdkNWQxNDNhMGJkZGU4NTgxMTExZmM3Li5iNjVkODE3NzM3OTM2NDY2YTBlOTBkNWEwYzcx
NzZhYzQxODkzYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFj
LmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIE9wdGlvbmFsPEZyYW1lc1BlclNlY29u
ZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5hbEZyYW1lc1Bl
clNlY29uZCgpCiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGluaygpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAK
ICAgICByZXR1cm4gbm9taW5hbEZyYW1lc1BlclNlY29uZEZyb21EaXNwbGF5TGluayhtX2Rpc3Bs
YXlMaW5rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGJk
ZjBlYzI1N2Y4NzFhMjU1NzJjZWU3ZGZhODA4MTc5Njg0MTliZTguLjgyNTFiZWUyMjdiZjY5M2Ex
MTFmYTFkMGI3NGYyODhhYjllOGY2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcApAQCAtMjMxLDI1ICsyMzEsMjUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmUKIHsK
ICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnByZW11
bHRpcGx5aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMoKS5w
cmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzRm9y
UGFpbnRpbmcoKTsKIH0KIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCkKIHsKICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0K
IAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29t
cG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHJlYWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGNlNGMwZmI5YTIzN2FjOGM3
MmEwYzIzZjc5ZjBjMDIzNTMwZDkwYWIuLjE4NDFjNTFlYzcyMTViOTk1M2M3ZmYyNDI0OTYyYzJh
Njc4M2IyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR0xp
bnQgcGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3Bw
CmluZGV4IDgwYjlmNWU2Nzc0NmZlNDVmODJmMDZmMWEwN2FlYjliZDU4YzNiNTEuLjM3ZTRmODMz
NjM4NDQ4YTRjYTI3NGQwZDUxNzg1YzJkNzQ3YWEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1v
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtOTE5LDEyICs5MTksMTIgQEAgT3B0aW9u
YWw8U3RyaW5nPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sSW5TaGFkZXJT
b3VyY2VNYXAoUGxhdGZvcm0KIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFw
LmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgY29uc3QgYXV0byYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xN
YXAoc3ltYm9sVHlwZSk7CiAgICAgYXV0byBzeW1ib2xFbnRyeSA9IHN5bWJvbE1hcC5maW5kKG5h
bWUpOwogICAgIGlmIChzeW1ib2xFbnRyeSA9PSBzeW1ib2xNYXAuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvJiBtYXBwZWROYW1lID0gc3ltYm9sRW50cnktPnZhbHVlLmdldCgpLm1hcHBlZE5hbWU7CiAg
ICAgcmV0dXJuIFN0cmluZyhtYXBwZWROYW1lLmNfc3RyKCksIG1hcHBlZE5hbWUubGVuZ3RoKCkp
OwpAQCAtOTc3LDE0ICs5NzcsMTQgQEAgT3B0aW9uYWw8U3RyaW5nPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xJblNoYWRlclNvdXJjZU1hcChQbGF0Zm8KIHsKICAgICBh
dXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVz
dWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYgc3lt
Ym9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3ltYm9sVHlwZSk7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzeW1ib2xFbnRyeSA6IHN5bWJvbE1hcCkgewogICAgICAgICBpZiAobmFtZSA9
PSBzeW1ib2xFbnRyeS52YWx1ZS5nZXQoKS5tYXBwZWROYW1lLmNfc3RyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgQU5H
TEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA3ZmYxMTMyYjBjNzViYmE2
OWUxOGMyOTFkNWFjNzBmZWYwODM3ZDViLi4yMjU1NjhjNjQ1ZDZhMzQ1MjQ4ZWU5OWVjZTQ5NDY5
NTc0M2NiMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR0xpbnQg
cGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggODc2NDBmNmY0N2Q1MTM2NGRk
ODYxNWQ4MDEzNmIzMGMxY2FjOThmNC4uYjAwYjFjOGViZTRmZWE5MTVkYjk3NWE4YThmZWZkNzdl
ZDZiOWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTMyMyw3ICszMjMsNyBA
QCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGlj
YShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpbwogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVyZU1h
cHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKICAgICByZXR1cm4gVHJhbnNmb3JtYXRp
b25NYXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJpbmVk
KQotICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJzZSgp
LnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAubXVsdGlwbHkobV9s
YXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKGNvbnN0IEludFJl
Y3QmIG5ld1JlZ2lvbiwgUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJsYXBS
ZWdpb24pCkBAIC03NDcsMTUgKzc0NywxNSBAQCBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c3lu
Y0FuaW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQogICAgIE5pY29zaWE6OkFuaW1hdGlvbjo6
QXBwbGljYXRpb25SZXN1bHQgYXBwbGljYXRpb25SZXN1bHRzOwogICAgIG1fYW5pbWF0aW9ucy5h
cHBseShhcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUpOwogCi0gICAgbV9sYXllclRyYW5zZm9ybXMu
bG9jYWxUcmFuc2Zvcm0gPSBhcHBsaWNhdGlvblJlc3VsdHMudHJhbnNmb3JtLnZhbHVlT3IobV9z
dGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudE9wYWNpdHkgPSBhcHBsaWNhdGlvblJlc3Vs
dHMub3BhY2l0eS52YWx1ZU9yKG1fc3RhdGUub3BhY2l0eSk7Ci0gICAgbV9jdXJyZW50RmlsdGVy
cyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlT3IobV9zdGF0ZS5maWx0ZXJzKTsK
KyAgICBtX2xheWVyVHJhbnNmb3Jtcy5sb2NhbFRyYW5zZm9ybSA9IGFwcGxpY2F0aW9uUmVzdWx0
cy50cmFuc2Zvcm0udmFsdWVfb3IobV9zdGF0ZS50cmFuc2Zvcm0pOworICAgIG1fY3VycmVudE9w
YWNpdHkgPSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1ZV9vcihtX3N0YXRlLm9wYWNp
dHkpOworICAgIG1fY3VycmVudEZpbHRlcnMgPSBhcHBsaWNhdGlvblJlc3VsdHMuZmlsdGVycy52
YWx1ZV9vcihtX3N0YXRlLmZpbHRlcnMpOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogICAgIC8vIENhbGN1bGF0ZSBsb2NhbFRyYW5zZm9ybSA1MG1zIGluIHRoZSBmdXR1cmUuCiAg
ICAgTmljb3NpYTo6QW5pbWF0aW9uOjpBcHBsaWNhdGlvblJlc3VsdCBmdXR1cmVBcHBsaWNhdGlv
blJlc3VsdHM7CiAgICAgbV9hbmltYXRpb25zLmFwcGx5S2VlcGluZ0ludGVybmFsU3RhdGUoZnV0
dXJlQXBwbGljYXRpb25SZXN1bHRzLCB0aW1lICsgNTBfbXMpOwotICAgIG1fbGF5ZXJUcmFuc2Zv
cm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtID0gZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLnRyYW5z
Zm9ybS52YWx1ZU9yKG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJhbnNmb3JtKTsKKyAgICBtX2xh
eWVyVHJhbnNmb3Jtcy5mdXR1cmVMb2NhbFRyYW5zZm9ybSA9IGZ1dHVyZUFwcGxpY2F0aW9uUmVz
dWx0cy50cmFuc2Zvcm0udmFsdWVfb3IobV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0p
OwogI2VuZGlmCiAKICAgICByZXR1cm4gYXBwbGljYXRpb25SZXN1bHRzLmhhc1J1bm5pbmdBbmlt
YXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCBlODNiZjJkYjQ4NzE2Yjc3NWM1M2E3OWZhZDU5MTY2ZWY3MzUw
OWZlLi44NDQ1MjA2ZGZkZTc5ZWNhNzJhZTQ0OTU3YjdjODFlNTNjMGM5Nzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApA
QCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGlu
dmVyc2Ugb2YgdGhlIGxheWVyIHRyYW5zZm9ybWF0aW9uLiBUaGUgaW52ZXJzZSB0cmFuc2Zvcm0g
d2lsbCBoYXZlIHRoZSBpbnZlcnNlIG9mIHRoZQogICAgICAgICAvLyBzY2FsZUZhY3RvciBhcHBs
aWVkLCBzbyB3ZSBuZWVkIHRvIHNjYWxlIGl0IGJhY2suCi0gICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGludmVyc2UgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsKIAogICAgICAgICAvLyBBcHBs
eSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm0gdG8gdGhlIHZpc2libGUgcmVjdGFuZ2xlLCBzbyB3ZSBo
YXZlIHRoZSB2aXNpYmxlIHJlY3RhbmdsZSBpbiBsYXllciBjb29yZGluYXRlcy4KICAgICAgICAg
RmxvYXRSZWN0IHJlY3QgPSBpbnZlcnNlLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQoRmxv
YXRRdWFkKG1fdmlzaWJsZVJlY3QpKTsKQEAgLTEwNjAsNyArMTA2MCw3IEBAIEludFJlY3QgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICAvLyBS
ZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3QgKHN1cmZhY2UgY29vcmRpbmF0
ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3JkaW5hdGVzKS4KICAgICAvLyBU
aGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVjdCBp
cyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBzcHJl
YWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBtb3Jl
IGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KLSAgICBBU1NFUlQobV9j
YWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZl
cnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1fY2Fj
aGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBGbG9hdFJlY3QgcmVj
dCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRRdWFk
KEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKICAgICBj
bGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBzaXplKCkpOwogICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCkK
ICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJhbnNm
b3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50KCkg
PyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpwYXJlbnQoKSkubV9sYXllclRy
YW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsK
IAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmlu
ZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBtX2Nh
Y2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNvbWJp
bmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxlUmVj
dC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVU
cmFuc2Zvcm0uY3BwCmluZGV4IDNjMmNjMmFmYzlhYjg3ZjQxMjdiYmUzMmJhZjY0MTAwMDlhYWQ4
YTMuLmQzY2Y4MTAwMzllNjI2YjAzYTZlNTc3ZjM4MjEwYmQ0NGIwYjU1NTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNm
b3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L0FmZmluZVRyYW5zZm9ybS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBPcHRpb25hbDxBZmZpbmVU
cmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgZG91Ymxl
IGRldGVybWluYW50ID0gZGV0KG1fdHJhbnNmb3JtKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUo
ZGV0ZXJtaW5hbnQpIHx8IGRldGVybWluYW50ID09IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gcmVzdWx0OwogICAgIGlmIChpc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IDM2MDdkOGFlNWE1MjZkMjA4YzU1NWM2MGYyMmM0YmIx
YTNlMzNkODQuLjdkNjQxMzBiOWI4OWY4MDI0ZDk1MTkxZDIyOWM5ODM1Y2NjOTUyNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2ludCBU
cmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBp
ZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVy
biBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4g
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4gbV9h
Y2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBU
cmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMTg5
LDcgKzE4OSw3IEBAIE9wdGlvbmFsPEZsb2F0UXVhZD4gVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFNl
Y29uZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICAgICAgKndhc0NsYW1wZWQg
PSBmYWxzZTsKIAogICAgIGlmICghbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEZsb2F0UXVhZCBxdWFkID0gKm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQ7CiAgICAgbWFwUXVh
ZChxdWFkLCBtX2RpcmVjdGlvbiwgd2FzQ2xhbXBlZCk7CkBAIC0xOTksNyArMTk5LDcgQEAgT3B0
aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChib29s
KiB3YXNDbGFtcGVkKSBjb25zdAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5hclNl
Y29uZGFyeVF1YWQoY29uc3QgT3B0aW9uYWw8RmxvYXRRdWFkPiYgcXVhZCkKIHsKICAgICBpZiAo
IXF1YWQpIHsKLSAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRyYW5z
Zm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRp
cmVjdGlvbiwgYm9vbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcXVhZCA9IG1fYWNj
dW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4
KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSku
cHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6
OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29s
KiB3YXNDbGFtcGVkKQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZs
YXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3
CiAgICAgICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHQubWFwUXVhZCgq
bV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCku
dmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1fbGFz
dFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxhbmFy
UG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwCmluZGV4IGIyZWMxNDU4NGI1NmMwNmM4Njg4YTc1ODZiOTQwYTI2ODIx
ZDgwOWMuLjhhYTMzZThlNjE5ZWJkMDMwMmU1ODNhNTJjMzcxZDU1YzM2NzNhYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
YXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBP
cHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJhbnNmb3JtYXRpb25NYXRyaXg6OmludmVy
c2UoKSBjb25zdAogICAgICAgICBkb3VibGUgZiA9IG00MigpOwogICAgICAgICBkb3VibGUgZGV0
ZXJtaW5hbnQgPSBhICogZCAtIGIgKiBjOwogICAgICAgICBpZiAoZmFicyhkZXRlcm1pbmFudCkg
PCBTTUFMTF9OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBkb3VibGUgaW52ZXJzZURldGVy
bWluYW50ID0gMSAvIGRldGVybWluYW50OwogICAgICAgICByZXR1cm4ge3sKQEAgLTE2MDgsNyAr
MTYwOCw3IEBAIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6aW52ZXJzZSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVzZSBMVSBkZWNvbXBvc2l0aW9u
IHRvIGFwcGx5IHRoZSBpbnZlcnNlIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIGludmVyc2Ug
ZXhwbGljaXRseS4KICAgICAvLyBDYWxjdWxhdGluZyB0aGUgaW52ZXJzZSBvZiBhIDR4NCBtYXRy
aXggdXNpbmcgY29mYWN0b3JzIGlzIG51bWVyaWNhbGx5IHVuc3RhYmxlIGFuZCB1bm5lY2Vzc2Fy
eSB0byBhcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHBvaW50LgogICAgIGlm
ICghV2ViQ29yZTo6aW52ZXJzZShtX21hdHJpeCwgaW52TWF0Lm1fbWF0cml4KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBpbnZNYXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ3Yjk3MTNlZWMzZGI4OWI1ZGU5ZWQ1
ZGZlMjVmMWRkYmJjNjZlYTcuLjgxNDVjNDdmZjkxZDg3YWQ2NDRkZDA0ZGEyN2JkNzUxZTEzZmFm
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwCkBAIC03MTQsNyArNzE0LDcgQEAgT3B0aW9uYWw8QVNDSUlMaXRlcmFs
PiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZh
bWkKICAgICAgICAgICAgIHJldHVybiAiTWljcm9zb2Z0IFNhbnMgU2VyaWYiX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDBmMzM0MzA5
MmY1OTFiNzYyZGJhMTM2MmU4MGNkYWQ0NzA2YTc0ZDEuLmI3Zjg0MmI2OTc2YmMwZWVhN2MzMDdj
NzJkYmNjZjBhZDlkYTRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMTI1LDcg
KzEyNSw3IEBAIFJlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXJEaXJlY3QyRDo6cmVwZXRpdGlv
bkNvdW50KCkgY29uc3QKIAogT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckRpcmVjdDJE
Ojpob3RTcG90KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIEludFNpemUgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0CkBAIC0xNzQsNyArMTc0LDcgQEAgSW1hZ2VEZWNvZGVyOjpGcmFtZU1ldGFkYXRh
IEltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QpIGMKICAg
ICBQcm9wVmFyaWFudEluaXQoJnZhbHVlKTsKICAgICBociA9IG1ldGFkYXRhLT5HZXRNZXRhZGF0
YUJ5TmFtZShMIlN5c3RlbS5QaG90by5PcmllbnRhdGlvbiIsICZ2YWx1ZSk7CiAgICAgaWYgKFNV
Q0NFRURFRChocikpCi0gICAgICAgIHJldHVybiB7IEltYWdlT3JpZW50YXRpb24oc3RhdGljX2Nh
c3Q8SW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24+KHZhbHVlLnVpVmFsKSksIFdURjo6bnVs
bG9wdCB9OworICAgICAgICByZXR1cm4geyBJbWFnZU9yaWVudGF0aW9uKHN0YXRpY19jYXN0PElt
YWdlT3JpZW50YXRpb246Ok9yaWVudGF0aW9uPih2YWx1ZS51aVZhbCkpLCBzdGQ6Om51bGxvcHQg
fTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA1
N2MxMmZjMTM2NjljOGJhMDE5M2FkNmM1MTlmOWRjNTYxYmJkNDgzLi45OWQ2YTIxZTIxODcwNmVk
OTdlYjcxOWEyY2Q1MzYwYmEzYzA5NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAg
LTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vy
c29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgLy8gYW5kIHJldHVy
bnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCi0gICAgT3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQ+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzQzMzdmMTUy
NDRmYjIyZDBmZWZmNTFmMWVmZmYxZGM5NjljY2QxMi4uYzE4ZDI1Y2ZlNmIyMThmNGI2OGI4MjYz
OWE4MGZkNGI0MzFkYjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBPcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkg
Y29uc3QKIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPj0gbV9kaXJFbnRyaWVzLnNp
emUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX2RpckVudHJp
ZXNbaW5kZXhdLm1faG90U3BvdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAyMGNi
N2I2ZjdiOTkwZjI1MjQ5NGFiMWQ5ZDNiYTc4NDhlZTlkMTdkLi4yZDlmOWEzM2IxNWEyMDUyODQz
YmM2ZmYzNjI4NmMwZDIyN2U0OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC0xMTks
NyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgogICAgIGJvb2wg
cHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsKIAotICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90
IGZvciB8aW5kZXh8LCByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGVyZSBpcyBub25lLgorICAg
IC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCByZXR1cm5zIHN0ZDo6bnVsbG9w
dCBpZiB0aGVyZSBpcyBub25lLgogICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJbmRl
eChzaXplX3QpIGNvbnN0OwogCiAgICAgLy8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3Rvcnkg
ZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDlhMmFkYWJmZTAwNGRhMzlmNWMxYzgy
YzMxOGJkYzgzNTRiYmM0NDkuLjU3NjE2ZTgxNTRjN2Y4YWUyMGNhMmIxYWIyMzQ0ZmNkNWE2NDIy
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgK
QEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGlsZUNhcGFjaXR5Rm9y
R3JpZChMZWdhY3lUaWxlR3JpZCopOwogICAgIENvbG9yIGNvbG9yRm9yR3JpZFRpbGVCb3JkZXIo
TGVnYWN5VGlsZUdyaWQqKSBjb25zdDsKICAgICBib29sIHNldE92ZXJyaWRlVmlzaWJsZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGVhck92ZXJyaWRlVmlzaWJsZVJlY3QoKSB7
IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdCA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQgY2xlYXJP
dmVycmlkZVZpc2libGVSZWN0KCkgeyBtX292ZXJyaWRlVmlzaWJsZVJlY3QgPSBzdGQ6Om51bGxv
cHQ7IH0KIAogICAgIHZvaWQgZG9QZW5kaW5nUmVwYWludHMoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA3OWY1YWJhYjhlMmE0ZDhlNmQy
NDY3MzVjYzhmNDZhY2Y5YjAzZDRiLi4yZGUxYmNiMDg3ZjUzY2RiZjYzZDAxZDNhYzI5MDRjYmQ4
ODk4Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
KQogewotICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1JbmRleC52YWx1ZU9yKDApOwor
ICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1JbmRleC52YWx1ZV9vcigwKTsKIAogICAg
IFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBlNzU1Y2QyMjZiNGFkZWRiMjM5YWY0
NThiNjBhNGUzMWUzMTNjNGRhLi5jMmM4OGYwZDJkNDBlZWIwZDkwZDNlNGUwMTRmZDQwMDcxZDZj
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KQEAgLTIwMiwxMCArMjAyLDEwIEBAIHN0YXRpYyBQYXN0ZWJvYXJkSXRl
bVByZXNlbnRhdGlvblN0eWxlIHBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUoVUlQcmVm
ZXJyCiBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6aW5m
b3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291bnQp
CiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bhc3RlYm9h
cmQgbnVtYmVyT2ZJdGVtc10pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHRoaXMtPmNoYW5nZUNvdW50KCkgIT0g
Y2hhbmdlQ291bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBOU0l0
ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1ttX3Bhc3RlYm9hcmQgaXRlbVByb3ZpZGVyc10g
b2JqZWN0QXRJbmRleDppbmRleF07CkBAIC0yODMsNyArMjgzLDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZv
cm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgaW50NjRfdCkK
IHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNv
cmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVN
b3Rpb25NYW5hZ2VyLm1tCmluZGV4IGVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRmZDY3
NDVkZTIuLjU3NjllOWE1M2Y0MmZjYTJkNGIxODEwNDQ2ZDJmODBmNTY0ZmY3NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIubW0K
QEAgLTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKXNlbmRBY2NlbGVyb21ldGVyRGF0YTooQ01BY2Nl
bGVyb21ldGVyRGF0YSAqKW5ld0FjY2VsZXJhdGlvbgogCiAgICAgICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbW90aW9uQ2xpZW50cykgewogICAgICAgICAgICAgaWYgKGNsaWVudCkKLSAgICAgICAg
ICAgICAgICBjbGllbnQtPm1vdGlvbkNoYW5nZWQoMCwgMCwgMCwgYWNjZWwueCAqIGtHcmF2aXR5
LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnogKiBrR3Jhdml0eSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY2xpZW50LT5tb3Rp
b25DaGFuZ2VkKDAsIDAsIDAsIGFjY2VsLnggKiBrR3Jhdml0eSwgYWNjZWwueSAqIGtHcmF2aXR5
LCBhY2NlbC56ICoga0dyYXZpdHksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQpOwogICAgICAgICB9CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA2OWE4MzM2NzI0Yjcz
MDQzZmJkMzVmNjYzZjg5MmQ2YjkwNDVhYzRlLi41NDgyM2EyZDE1NWZkYmIyNTZjODQ2NmM1YTEz
Yjg1MzZiNjE2ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTUzMywxMSArNTMzLDExIEBAIGludDY0X3QgUGxh
dGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+
JiBpdGVtRGF0YSkKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJv
YXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFu
Z2VDb3VudCkKIHsKICAgICBpZiAoY2hhbmdlQ291bnQgIT0gW21fcGFzdGVib2FyZCBjaGFuZ2VD
b3VudF0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgoaW5k
ZXgpOwogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwog
ICAgIE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKnBsYXRmb3JtVHlwZXMgPSBbaXRlbSB0eXBl
c107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1t
CmluZGV4IDFjNjY4NmY4MTNmOTQ4ZjVlMTE4N2I0ZDVmOGQyZTRjZTM0YzIxN2UuLmU1MmQ2YmEy
ZDFlNWJhYTdjMGIzNDI4NWYwMDdkMDk2YjAyNjJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0zNDYsNyArMzQ2LDcgQEAgT3B0
aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGUKICAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsUmlnaHQ7
CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIENoZWNrIFkgZmlyc3QgYmVjYXVzZSB2
ZXJ0aWNhbCBzY3JvbGxpbmcgZG9taW5hdGVzLgpAQCAtMzYyLDcgKzM2Miw3IEBAIE9wdGlvbmFs
PFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlCiAgICAgaWYgKHdoZWVsRGVsdGEud2lkdGgoKSA8IDApCiAgICAgICAg
IHJldHVybiBTY3JvbGxSaWdodDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAzMzQ0YTM0OGI0YmQxNjVmM2Nm
NWZlYjY3YTI0NDIwMWE4ZmI2ZGQ0Li5mN2RjMjIwMGM3ZDViNGIzYWJjYzEwMmQ3OWUyZWJjYWNm
OTlhZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC04MDQs
NyArODA0LDcgQEAgT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6OmNv
bnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuIGZvbnRE
ZXNjcmlwdGlvbjsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVk
aW9Db25maWd1cmF0aW9uLmgKaW5kZXggNTc2NzljNDI5MmY5YTAwNTIxODVmNmY5MzllNWZlNTgw
OGJiYzhlZC4uZDA5NTU2NDQ0NDBmMmJhZDMyMjIyMDdhNTEyNjM0ZWM2MTQyNWVhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTU3LDI3ICs1NywyNyBAQCBPcHRpb25hbDxBdWRp
b0NvbmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGNv
bnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJp
bmc+IGNoYW5uZWxzOwogICAgIGRlY29kZXIgPj4gY2hhbm5lbHM7CiAgICAgaWYgKCFjaGFubmVs
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZTsKICAgICBk
ZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8dWludDMyX3Q+PiBzYW1wbGVSYXRlOwogICAgIGRlY29kZXIgPj4gc2FtcGxlUmF0
ZTsKICAgICBpZiAoIXNhbXBsZVJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxib29s
Pj4gc3BhdGlhbFJlbmRlcmluZzsKICAgICBkZWNvZGVyID4+IHNwYXRpYWxSZW5kZXJpbmc7CiAg
ICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgICpj
b250ZW50VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2Fw
YWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKaW5kZXggYzA4NjhlNGFiOWQ0
ZTA5OGFiYzUxOTA0N2YxZjU2YmFmMzU0NDhlMS4uYWE5MDlkMzhhMWI3YmNhZDgwMWMwMjUwNjNh
NWZhNTA2MDFiNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKQEAgLTUyLDEyICs1
MiwxMiBAQCBPcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1lZGlhQ29uZmlndXJhdGlvbjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8VmlkZW9Db25m
aWd1cmF0aW9uPj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRlbzsKICAgICBpZiAoIXZpZGVv
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPj4gYXVkaW87
CiAgICAgZGVjb2RlciA+PiBhdWRpbzsKICAgICBpZiAoIWF1ZGlvKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHt7CiAgICAgICAgICp2aWRlbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYURlY29kaW5nQ29uZmlndXJh
dGlvbi5oCmluZGV4IGE0N2JkMjc4MThiMzM5YjAzODM0NGViMzllZjhjZjY3MzVjNjNhM2QuLjIy
NjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2MDM1YWQ3MWVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtNTEsMTcgKzUxLDE3IEBAIE9wdGlvbmFs
PE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uPiBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbjo6
ZGVjb2RlKERlY29kZXImCiB7CiAgICAgYXV0byBtZWRpYUNvbmZpZ3VyYXRpb24gPSBNZWRpYUNv
bmZpZ3VyYXRpb246OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIW1lZGlhQ29uZmlndXJhdGlv
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29k
ZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBjYW5F
eHBvc2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBvc2VWUDk7CiAgICAgaWYgKCFjYW5FeHBv
c2VWUDkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1lZGlhQ29uZmlndXJhdGlvbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IGJmNzg4ZDNi
ZmMwODI3MTdjNGIwY2ViMTI2YmQwZjM1MGM0ZjNiZGQuLjE2NWRjNGYyZjg2NmI5NTIyMGM3YmE2
NjBjOGQ0NzFlMDE4N2NlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24uaApAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPE1lZGlhRW5jb2RpbmdDb25maWd1
cmF0aW9uPiBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImCiB7CiAg
ICAgYXV0byBtZWRpYUNvbmZpZ3VyYXRpb24gPSBNZWRpYUNvbmZpZ3VyYXRpb246OmRlY29kZShk
ZWNvZGVyKTsKICAgICBpZiAoIW1lZGlhQ29uZmlndXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAo
IXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1lZGlhQ29uZmlndXJhdGlvbiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL1Zp
ZGVvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKaW5kZXggNDE3MDg2YTY1MDRkN2VhNGQ5ZjEzZGVm
MDBkOGQzZDFlNDYwMjcyZS4uN2E5NWJmYjI4YTkxODJkOTNhYWFiODQ1YTM0OGM5YzljZTg1NDEw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
VmlkZW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFj
YXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKQEAgLTY4LDQ3ICs2OCw0NyBAQCBPcHRp
b25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+IFZpZGVvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNv
ZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDx1aW50MzJfdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAoIXdp
ZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGhlaWdodDsKICAgICBkZWNvZGVyID4+
IGhlaWdodDsKICAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBi
aXRyYXRlOwogICAgIGRlY29kZXIgPj4gYml0cmF0ZTsKICAgICBpZiAoIWJpdHJhdGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBkZWNvZGVyID4+IGZyYW1lcmF0
ZTsKICAgICBpZiAoIWZyYW1lcmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+
PiBhbHBoYUNoYW5uZWw7CiAgICAgZGVjb2RlciA+PiBhbHBoYUNoYW5uZWw7CiAgICAgaWYgKCFh
bHBoYUNoYW5uZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxDb2xvckdhbXV0Pj4gY29s
b3JHYW11dDsKICAgICBkZWNvZGVyID4+IGNvbG9yR2FtdXQ7CiAgICAgaWYgKCFjb2xvckdhbXV0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8SGRyTWV0YWRhdGFUeXBlPj4gaGRyTWV0YWRh
dGFUeXBlOwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGlmICghaGRyTWV0
YWRhdGFUeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlvbj4+
IHRyYW5zZmVyRnVuY3Rpb247CiAgICAgZGVjb2RlciA+PiB0cmFuc2ZlckZ1bmN0aW9uOwogICAg
IGlmICghdHJhbnNmZXJGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAqY29u
dGVudFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaAppbmRleCAzMWVi
ZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Li5kZTc0ODQzODhhY2UyMWFkMTU0
YmFiYzIxY2Q0YTVhNWUzNDVkNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRp
b25zLmgKQEAgLTU0LDIyICs1NCwyMiBAQCBpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRlclBy
aXZhdGVPcHRpb25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZQogewogICAg
IFN0cmluZyBtaW1lVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVkPj4gYXVkaW9CaXRzUGVyU2Vjb25kOwog
ICAgIGRlY29kZXIgPj4gYXVkaW9CaXRzUGVyU2Vjb25kOwogICAgIGlmICghYXVkaW9CaXRzUGVy
U2Vjb25kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0JpdHNQ
ZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCF2
aWRlb0JpdHNQZXJTZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+
IGJpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiBiaXRzUGVyU2Vjb25kOwogICAgIGlmICgh
Yml0c1BlclNlY29uZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlv
bnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNlY29uZCwgKnZpZGVvQml0c1Bl
clNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggZDhiNDBiNjExOTEzYWU1YjI5NTI5MWU1NWJk
NWE0YmE5YWQ1Y2E0MC4uNTFhM2UxOGEyY2VkZDNjZDVkYTkzZjM0ZWJmMzcxMWUwMjBmOGI2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAg
LTUzMCw3ICs1MzAsNyBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcgogCiB1bnNpZ25lZCBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmJpdFJhdGUoKSBjb25zdAogewotICAgIHJldHVybiBt
X291dHB1dEJpdFJhdGUudmFsdWVPcigwKTsKKyAgICByZXR1cm4gbV9vdXRwdXRCaXRSYXRlLnZh
bHVlX29yKDApOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yLm1tCmluZGV4IDIwMDE4NWJiY2I3NjU0MDYzYmEwMWQxMTg4ZmU3OTRmNmE5ZTM4
NzcuLjk5YmJkZmM5NDA4NDA2YmU2NDY5ZTU3NzRlOGU3MTJhNWNlZTRhZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0xODQsNyArMTg0
LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIKIAogdW5zaWduZWQgVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yOjpiaXRSYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vdXRwdXRCaXRS
YXRlLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG1fb3V0cHV0Qml0UmF0ZS52YWx1ZV9vcigwKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZS5oCmluZGV4IDlhODhkMTZlYmJmOTNlYzVlZWQ2OTNjMTcxYTI1ODdmOTJlMTc5
ZWYuLjViODFhNDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2YTM4ZmRhYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgKQEAg
LTk1LDM3ICs5NSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcGVyc2lz
dGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRJZDsKICAgICAgICAgaWYgKCFw
ZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGxhYmVs
OwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBncm91cElkOwogICAgICAgICBkZWNvZGVy
ID4+IGdyb3VwSWQ7CiAgICAgICAgIGlmICghZ3JvdXBJZCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAg
ICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aXNEZWZhdWx0OwogICAgICAgICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICAgICAgaWYgKCFp
c0RlZmF1bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlOjpE
ZXZpY2VUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlmICgh
dHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTW9ja0RldmljZTsK
ICAgICAgICAgZGVjb2RlciA+PiBpc01vY2tEZXZpY2U7CiAgICAgICAgIGlmICghaXNNb2NrRGV2
aWNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gZGV2aWNl
ID0ge3sgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmxh
YmVsKSwgV1RGTW92ZSgqZ3JvdXBJZCkgfX07CiAgICAgICAgIGRldmljZS0+c2V0RW5hYmxlZCgq
ZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggMWE3NTNhMTBiZTc5ZTdjNDM5
ODViMmU1ODBkNTQ5MWIxOGU1NzRmMS4uMzZkMjYxZmM5NDU5ZmVmZjI1OTEzMTQzY2VlYTVkOTAz
N2UxZWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtNDAsNiArNDAsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZpY2VN
YW5hZ2VyKCkgPSBkZWZhdWx0OwogCit2b2lkIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21wdXRl
Q2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQorewor
ICAgIGNhbGxiYWNrKCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZp
Y2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKK30KKwogQ2FwdHVyZURldmljZSBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmlj
ZUZyb21QZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQpCiB7CiAgICAg
Zm9yIChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIu
aAppbmRleCBjN2FmZmI2OTA4NzlhYzAwNTU3YTU4MzA0MGEzN2E4MTZhYzgyMzg4Li5kMWM1Yzg3
NzAxODdkMDg2Yjg3NGMwZDI5ZDc5MDVjMjkxMzZmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgK
QEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBP
UlQgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgVmVj
dG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykgeyBjYWxsYmFjaygpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDYXB0dXJlRGV2aWNl
PiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
LCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VXaXRo
UGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWlu
dHMuaAppbmRleCBlOTkwYTMyMWE3ZGQ3ZTY3ZThlNTdlZGFiN2QwM2ZjOGM1ZGU2MjIzLi5lYjI5
NDlmNGU3YzVlZDliNTdkNTNjZTlmY2Q3NzUzYTdjNGJkZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC03
MDAsMzQgKzcwMCwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBNZWRpYVRyYWNrQ29uc3Ry
YWludFNldE1hcCBtYXA7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fd2lkdGgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1faGVpZ2h0KSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX3NhbXBsZVJhdGUp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fc2FtcGxlU2l6
ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2FzcGVj
dFJhdGlvKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2Zy
YW1lUmF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV92
b2x1bWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9l
Y2hvQ2FuY2VsbGF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG1hcC5tX2Rpc3BsYXlTdXJmYWNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1hcC5tX2xvZ2ljYWxTdXJmYWNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWFwLm1fZmFjaW5nTW9kZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShtYXAubV9kZXZpY2VJZCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShtYXAubV9ncm91cElkKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJl
dHVybiBtYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAppbmRleCA1MGM4M2IwYjMyMzI4MTc4OTRm
MWQyOTRiMTlhOWMxOTQ2N2ZkYmNiLi41OWQ1ZmEzZjM3MmU0YWU3MTg1NTA4NDI1N2FkNDY0Y2Ji
MzFkMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgTWVkaWFT
dHJlYW1SZXF1ZXN0IHsKICAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlKHJlcXVlc3QudHlwZSkg
JiYgZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5hdWRpb0NvbnN0cmFpbnRzKSAmJiBkZWNvZGVyLmRl
Y29kZShyZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMpICYmIGRlY29kZXIuZGVjb2RlKHJlcXVlc3Qu
aXNVc2VyR2VzdHVyZVByaXZpbGVkZ2VkKSkKICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0Owog
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaAppbmRleCBlMzQwMmVi
YWFmMzM2NDI0N2E0MzFhYWVlYmVjOTQ1OGVkNWQwZjc5Li5mNjNkOGY2NjBkZTQyNWU5NTllNzMy
NjcwZDc5NzM1OWU1NjYxOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaApAQCAtNTEs
MTIgKzUxLDEyIEBAIGlubGluZSBPcHRpb25hbDxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI+IFJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kCiAgICAgT3B0aW9uYWw8UHJvY2Vz
c0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lk
ZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyPiBjaGFubmVsSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IGNoYW5uZWxJZGVudGlmaWVyOwogICAgIGlmICghY2hhbm5lbElkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciB7ICpwcm9jZXNzSWRlbnRp
ZmllciwgKmNoYW5uZWxJZGVudGlmaWVyIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5nVmlk
ZW9Tb3VyY2UuY3BwCmluZGV4IGU2NGY2MGUwNDgwMzllMDc1ZjU5YWUyYmYzOTJkMmFlNThiOGZh
NTEuLjI0YjhiMTdiNjg5N2I4MzkxOTg1M2U1Y2JmOGE1YzMzNWFmYWUwMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpz
ZXR0aW5ncygpCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRD
aGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGlu
Z3MpCiB7CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFn
OjpIZWlnaHQgfSkpCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCBjOWJjMDc3MTM4YTgwYjU4
YmNjNDk3ZTBjNDFhMTVlZWNiNzYxNGYxLi45NDE2ZGQ4M2YzNDg2ZDc3MTY5ZjE3ZDY2YjI2MmFm
YWJmMGFjOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcgQEAg
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKGludCByYXRlKQogCiBPcHRp
b25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVSYXRl
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUoaW50
IHNpemUpCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNl
dFNhbXBsZVNpemUoaW50IHNpemUpCiAKIE9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGltZU1l
ZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVjaG9DYW5jZWxsYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNl
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaApp
bmRleCA1MzZjZGUxOGM5MzY3OTM2MDYyNzg2OWMzZjNkYzZmZDFiOTgwODc3Li5hODQ5YzRjNmVh
YWEyOWVkYzA0ZjAxNDk3MWU4ZTNkOWQwZDkxOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKQEAgLTU2LDEyICs1NiwxMiBAQCBP
cHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+IG1p
bmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtYXhp
bXVtOwogICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gRnJhbWVSYXRlUmFuZ2UgeyAqbWluaW11bSwgKm1heGltdW0gfTsKIH0KQEAgLTg3
LDEyICs4NywxMiBAQCBPcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IFZpZGVvUHJlc2V0RGF0YTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsKICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVj
dG9yPEZyYW1lUmF0ZVJhbmdlPj4gZnJhbWVSYXRlUmFuZ2VzOwogICAgIGRlY29kZXIgPj4gZnJh
bWVSYXRlUmFuZ2VzOwogICAgIGlmICghZnJhbWVSYXRlUmFuZ2VzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFZpZGVvUHJlc2V0RGF0YSB7ICpzaXplLCAqZnJhbWVSYXRlUmFuZ2VzIH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRl
eCBjMDZmZWIxNWNmZjVlNzYxZTVmZGViYjM1MjIwYjJkYThhZmUyNDYyLi4wODViYjA3OTAzNDE4
Mzc1OWMyOTRiYzVjNTYwZmViZDk3MDE0ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgT3B0
aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFn
ZXI6OmdzdHJlYW1lckRldmljZVcKICAgICAgICAgaWYgKGRldmljZS5wZXJzaXN0ZW50SWQoKSA9
PSBkZXZpY2VJRCkKICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CiAgICAgfQotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgVmVj
dG9yPENhcHR1cmVEZXZpY2U+JiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVy
ZURldmljZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNl
TWFuYWdlci5tbQppbmRleCA4YWZkNGU0NWRjNTIwZDZhZmRhODk1NGM2MDMxZDBlN2Y5NmNlM2Qw
Li5hZTZhZDhmYTUwYTM4YmIzYjA3ZjlhNmRiNDIzYTkxMmRiZDIxN2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0
dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMTI5LDcg
KzEyOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURl
dmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAgICAgICAgIGlmIChkZXZpY2UucGVy
c2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAgICAgICByZXR1cm4gZGV2aWNlOwogICAg
IH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIE9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9TZXNzaW9uRGV2aWNlV2l0aFVJRChjb25zdCBTdHJp
bmcmIGRldmljZUlEKQpAQCAtMTQxLDcgKzE0MSw3IEBAIE9wdGlvbmFsPEFWQXVkaW9TZXNzaW9u
Q2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9T
CiAgICAgICAgIGlmIChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAg
ICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3Vy
Y2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0Nh
cHR1cmVTb3VyY2UubW0KaW5kZXggMmI0OWIyZTkzZmU1MWViZDY4YTJiZWRmYTU3ZGRhNmZhYzJk
ZjFiMi4uNGI3ODhhZTVhYTg3YjcyOWU1YmRjZjljZjcxMzgxMmM2NzcwYTMyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJl
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQVZWaWRlb0Nh
cHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQogCiB2b2lkIEFWVmlkZW9DYXB0dXJl
U291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzOjpGbGFnPikKIHsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURjo6bnVsbG9wdDsK
KyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3MoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4IDJkZjZmNDdjYWNmZTYxNjY1
MTJiZTFhNTU5ZjhlMGM4MjU4MWVlOTEuLjYzOTYwYzQ1N2I1YTkzMmY5ZDc5ZTNiYTFjZWNlYTdk
MTExNWQ1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKQEAgLTEyNyw3
ICsxMjcsNyBAQCBPcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSQogICAgIFN0cmluZyBwZXJzaXN0ZW50
SUQ7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGlmICghZ2V0RGV2aWNlSW5mbyhkZXZpY2VJRCwg
dHlwZSwgcGVyc2lzdGVudElELCBsYWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ29yZUF1ZGlvQ2Fw
dHVyZURldmljZShkZXZpY2VJRCwgcGVyc2lzdGVudElELCB0eXBlLCBsYWJlbCwgZ3JvdXBJRC5p
c051bGwoKSA/IHBlcnNpc3RlbnRJRCA6IGdyb3VwSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggM2I4NGVkM2RjOWZiOGVlYTA2ZTkz
NmFhMjYyMmM5NTZmNGU0ZmE0ZS4uZWViNzAwOGY1YjA5NzdlYjYzMjAxN2EzZmJjMDgxNjdhY2Y5
Y2UwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3Bw
CkBAIC02Miw3ICs2Miw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1
cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlCiAgICAgICAgIGlmIChk
ZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAgICAgICByZXR1cm4gZGV2
aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGRldmljZUhhc1N0cmVhbXMoQXVkaW9PYmplY3RJRCBk
ZXZpY2VJRCwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MmIGFkZHJlc3MpCkBAIC0y
NTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gQ29yZUF1ZGlv
Q2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0RldmljZVcKICAgICAgICAgaWYgKGRldmlj
ZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCAmJiBkZXZpY2UuZW5hYmxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGRldmljZTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaGFzRGV2aWNl
KGNvbnN0IFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgZGV2aWNlcywgdWludDMyX3Qg
ZGV2aWNlSUQsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0
dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA3N2Q4MmMxYTQwOGE1ZDdiYzRhYTI5ZTYx
MGM5ZjgwZjdiNTBmZTY3Li40MmUxODQ1NjYyZjZiMjAxZTVjYWI2OWI5ZDA4ZjExMTM3YjcxMzJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC04MTEsNyArODExLDcg
QEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25T
ZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHQKICAgICBpZiAoc2hvdWxkUmVjb25maWd1cmUpCiAg
ICAgICAgIHVuaXQoKS5yZWNvbmZpZ3VyZSgpOwogCi0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IGJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW50ZXJydXB0ZWQoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0
dXJlTWFuYWdlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKaW5kZXggZjdlY2RjOGFlMDBhYzA5
NjZlMTdhNzJkOTFjMTI3MmQxNjRlYjRmOC4uZTIwOWMxNjk5YmFjMzkyMjczZTNiYWQ3MGVmNjNh
ZGZmYWMxODEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0dXJl
TWFuYWdlckNvY29hOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpCiAgICAgcmV0dXJuIFNj
cmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGV2aWNlSUQpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQog
CkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0dXJl
TWFuYWdlckNvY29hOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpCiAgICAgcmV0dXJuIFdp
bmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50
SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGV2aWNlSUQpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQog
CkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2E6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudEkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3Bs
YXlDYXB0dXJlck1hYy5tbQppbmRleCA4ZWRhYjA3ZmNhMThlNDk5ODNmMWQwOWY4MWJlZTZjYjM4
Y2JjMjkxLi44ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4ZjA1NTI4NjMxMmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTU1LDE5ICs1NSwxOSBAQCBzdGF0
aWMgT3B0aW9uYWw8Q0dEaXJlY3REaXNwbGF5SUQ+IHVwZGF0ZURpc3BsYXlJRChDR0RpcmVjdERp
c3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgYXV0byBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlMaXN0
KDAsIG51bGxwdHIsICZkaXNwbGF5Q291bnQpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAgUkVM
RUFTRV9MT0coV2ViUlRDLCAiQ0dHZXRBY3RpdmVEaXNwbGF5TGlzdCgpIHJldHVybmVkIGVycm9y
ICVkIHdoZW4gdHJ5aW5nIHRvIGdldCBkaXNwbGF5IGNvdW50Iiwgc3RhdGljX2Nhc3Q8aW50Pihl
cnIpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXlDb3VudCkgewogICAgICAgICBSRUxF
QVNFX0xPRyhXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgYSBkaXNw
bGF5IGNvdW50IG9mIDAiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBWZWN0b3I8Q0dEaXJlY3REaXNwbGF5
SUQ+IGFjdGl2ZURpc3BsYXlzKGRpc3BsYXlDb3VudCk7CiAgICAgZXJyID0gQ0dHZXRBY3RpdmVE
aXNwbGF5TGlzdChkaXNwbGF5Q291bnQsIGFjdGl2ZURpc3BsYXlzLmRhdGEoKSwgJmRpc3BsYXlD
b3VudCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDR0dl
dEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgZXJyb3IgJWQgd2hlbiB0cnlpbmcgdG8gZ2V0
IHRoZSBhY3RpdmUgZGlzcGxheSBsaXN0Iiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBhdXRvIGRpc3BsYXlNYXNrID0gQ0dEaXNwbGF5SURUb09wZW5HTERpc3BsYXlN
YXNrKGRpc3BsYXlJRCk7CkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxDR0RpcmVj
dERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCkK
ICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRXhwZWN0ZWQ8VW5pcXVlUmVm
PERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBTY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQpAQCAtMjY4LDEy
ICsyNjgsMTIgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gU2NyZWVuRGlzcGxheUNhcHR1cmVy
TWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3QKICAgICBhdXRvIGRpc3BsYXlJRCA9
IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwogICAgIGlmICghZGlzcGxheUlEKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6
c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGRpc3BsYXkgSUQgZG9lcyBub3Qg
Y29udmVydCB0byAzMi1iaXQgaW50ZWdlciIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gYWN0dWFs
RGlzcGxheUlEID0gdXBkYXRlRGlzcGxheUlEKCpkaXNwbGF5SUQpOwogICAgIGlmICghYWN0dWFs
RGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBkZXZpY2UgPSBDYXB0dXJlRGV2aWNlKFN0cmluZzo6
bnVtYmVyKCphY3R1YWxEaXNwbGF5SUQpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpTY3Jl
ZW4sICJTY3JlZW5DYXB0dXJlRGV2aWNlIl9zKTsKICAgICBkZXZpY2Uuc2V0RW5hYmxlZCh0cnVl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
aW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCmluZGV4IDdlMDEzMDNmOWFi
OTg3N2Y1NGQ4MGJmYTY5OGI2ODE2MWMzZTI2YmUuLjQxOGY2OTM3ZGU2YzEwN2FkNWQ4YWJkMDRm
ZGRhNDkwNWIwMTBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQpA
QCAtMTM5LDcgKzEzOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFdpbmRvd0Rpc3BsYXlD
YXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0CiAgICAgYXV0byB3aW5k
b3dJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaWRTdHJpbmcpOwogICAgIGlmICghd2luZG93
SUQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiV2luZG93RGlzcGxheUNhcHR1cmVy
TWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogd2luZG93IElEIGRvZXMg
bm90IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXIiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBTdHJpbmcg
d2luZG93VGl0bGU7CkBAIC0xNTIsNyArMTUyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4g
V2luZG93RGlzcGxheUNhcHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3QK
IAogICAgIH0pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIldpbmRvd0Rpc3BsYXlD
YXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IHdpbmRvdyBJ
RCBpcyBub3QgdmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGRldmljZSA9IENhcHR1cmVE
ZXZpY2UoU3RyaW5nOjpudW1iZXIoKndpbmRvd0lEKSwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlw
ZTo6V2luZG93LCB3aW5kb3dUaXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggMWY1MTlkNGJiZjgwZWNh
ZjZhYjM1MGE2MDViYzIxNTFhNWUxZTM4My4uY2JkNmFkMmYzZWVkMTFhYmU4MDIxMjIzOGRjZTNl
MDBmMDhiNDNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9s
b2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYQogewogICAgIG1faGFzRXJyb3IgPSB0cnVlOwogICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyb3JNZXNzYWdlOwotICAgIG1fbGFzdFBvc2l0aW9uID0gV1RGOjpudWxsb3B0OworICAg
IG1fbGFzdFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGFzeW5jVXBkYXRlQ29udHJvbGxl
cigpOwogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnBlcm1pc3Npb25UaW1lckZpcmVkKCkKIAogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJl
c2V0KCkKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xhc3RQ
b3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJtaXNz
aW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5TW9jay5jcHAKaW5kZXggZTQyOTQyODhhMjNiZDdkYWUwMzA0MjlmMWU4OTEyOTg4
NGVhNTI3Ni4uY2YxOGZlNzQ2YmEzYWVkM2ZlMGRiNWEzYTAwODg5OWQ0ZTZhMTc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3Rh
dGljIGJvb2wgY2FuRGVjb2RlTWVkaWEoY29uc3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24m
IGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8g
Q2FuIG9ubHkgc3VwcG9ydCBzcGF0aWFsIHJlbmRlcmluZyBvZiB0cmFja3Mgd2l0aCBtdWx0aWNo
YW5uZWwgYXVkaW86Ci0gICAgICAgIGlmIChhdWRpb0NvbmZpZy0+c3BhdGlhbFJlbmRlcmluZy52
YWx1ZU9yKGZhbHNlKSAmJiBhdWRpb0NvbmZpZy0+Y2hhbm5lbHMudG9Eb3VibGUoKSA8PSAyKQor
ICAgICAgICBpZiAoYXVkaW9Db25maWctPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVfb3IoZmFsc2Up
ICYmIGF1ZGlvQ29uZmlnLT5jaGFubmVscy50b0RvdWJsZSgpIDw9IDIpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFEZXZpY2UuaAppbmRleCBlOWE1ODZhMjdjZGIxYmYxY2Q2OWM0MTBkNDc2MDZkZGJi
OWRiM2QxLi41ZmE3OWE5YWI1MzhiZDY0OWRhNGUyZDUzMjE4ZDg5ODU0NzIxY2U2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgc3RydWN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7CiAgICAgICAgIE9wdGlv
bmFsPGludDMyX3Q+IGRlZmF1bHRTYW1wbGVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1
bHRTYW1wbGVSYXRlOwogICAgICAgICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeyAqZGVmYXVsdFNhbXBs
ZVJhdGUgfTsKICAgICB9CiAKQEAgLTY4LDEyICs2OCwxMiBAQCBzdHJ1Y3QgTW9ja1NwZWFrZXJQ
cm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7
CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGlmICghZGVm
YXVsdFNhbXBsZVJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJl
bGF0ZWRNaWNyb3Bob25lSWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcmVsYXRlZE1pY3JvcGhvbmVJ
ZDsKICAgICAgICAgaWYgKCFyZWxhdGVkTWljcm9waG9uZUlkKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIE1vY2tTcGVha2VyUHJvcGVydGllcyB7IFdURk1vdmUoKnJlbGF0ZWRNaWNyb3Bo
b25lSWQpLCAqZGVmYXVsdFNhbXBsZVJhdGUgfTsKICAgICB9CkBAIC05OSwyMiArOTksMjIgQEAg
c3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBk
ZWZhdWx0RnJhbWVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRGcmFtZVJhdGU7CiAg
ICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBmYWNpbmdN
b2RlOwogICAgICAgICBkZWNvZGVyID4+IGZhY2luZ01vZGU7CiAgICAgICAgIGlmICghZmFjaW5n
TW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxWaWRlb1ByZXNldERh
dGE+PiBwcmVzZXRzOwogICAgICAgICBkZWNvZGVyID4+IHByZXNldHM7CiAgICAgICAgIGlmICgh
cHJlc2V0cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7
CiAgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwogICAgICAgICBpZiAoIWZpbGxDb2xvcikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBNb2NrQ2FtZXJhUHJvcGVydGllcyB7ICpkZWZh
dWx0RnJhbWVSYXRlLCAqZmFjaW5nTW9kZSwgV1RGTW92ZSgqcHJlc2V0cyksICpmaWxsQ29sb3Ig
fTsKICAgICB9CkBAIC0xMzksMTcgKzEzOSwxNyBAQCBzdHJ1Y3QgTW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzIHsKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU+
IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwog
ICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPElu
dFNpemU+IGRlZmF1bHRTaXplOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRTaXplOwogICAg
ICAgICBpZiAoIWRlZmF1bHRTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIE1vY2tE
aXNwbGF5UHJvcGVydGllcyB7ICp0eXBlLCAqZmlsbENvbG9yLCAqZGVmYXVsdFNpemUgfTsKICAg
ICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAg
IE9wdGlvbmFsPFByb3BlcnRpZXM+IHByb3BlcnRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gcHJv
cGVydGllczsKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBNb2NrTWVkaWFEZXZpY2UgeyBXVEZNb3ZlKHBlcnNpc3RlbnRJZCksIFdURk1vdmUobGFi
ZWwpLCBXVEZNb3ZlKCpwcm9wZXJ0aWVzKSB9OwogICAgIH0KIApAQCAtMjMyLDE3ICsyMzIsMTcg
QEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcGVy
c2lzdGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRJZDsKICAgICAgICAgaWYg
KCFwZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGxh
YmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDhfdD4gaW5kZXg7CiAgICAgICAgIGRlY29k
ZXIgPj4gaW5kZXg7CiAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBz
d2l0Y2ggKCppbmRleCkgewogICAgICAgICBjYXNlIDE6CkBAIC0yNTQsNyArMjU0LDcgQEAgc3Ry
dWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgIHJldHVy
biBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZWNvZGVyLCBX
VEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgU3RyaW5nIHBlcnNpc3RlbnRJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggYzQ5
ZTZmYmYxNjc4OWQ5NjhjYzA1NDczNGI3MTU1MGFlZmY5ZTVmOS4uMDVjODhlYTE3OWZjNDE3MDdl
MjZhNDU2NjQwZmIzNWIyZGM4NzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5n
czo6RmxhZz4pCiB7Ci0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIu
Y3BwCmluZGV4IDE0ZjRjNmViMThlYWJiOTI4MGRiMDEzM2Q0ZDQwMWNmYTk5ZTFjMWYuLjIyZTRh
MTc3Yzc1MDRhZTc3NmUyOGNhNjQ1ZmRmNTQzZDFlZGE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNlPiBN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW4KICAg
ICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZpbmQo
aWQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaXRl
cmF0b3ItPnZhbHVlOwogfQpAQCAtMzU1LDcgKzM1NSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNp
c3RlCiAgICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1h
cC5maW5kKGlkKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpIHx8IGl0ZXJhdG9yLT52
YWx1ZS50eXBlKCkgIT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0b0NhcHR1cmVEZXZpY2UoaXRl
cmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNDZlYTE1MWVkYjcwYTk1MDk5
YTJlMTU5MDYxZTY1MmVhMDg3MTU0NS4uMjA3M2E2YzNjMmZkYTg2NDJlNWZjZjU1YTUzYjc5ZDYy
MmZkYTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBJbnRTaXplIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXB0dXJlU2l6ZSgpIGNvbnN0CiAKIHZvaWQgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1l
ZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIG1fY3VycmVudFNldHRp
bmdzID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0
OwogICAgIGlmIChzZXR0aW5ncy5jb250YWluc0FueSh7IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6SGVp
Z2h0IH0pKSB7CiAgICAgICAgIG1fYmFzZUZvbnRTaXplID0gY2FwdHVyZVNpemUoKS5oZWlnaHQo
KSAqIC4wODsKICAgICAgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFzZUZvbnRTaXplICogMi41
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzYmVi
Y2QwMjUzMDlhZDRmMmZmMmU0NjBmZDk4ZGM5NjZlNjc4NmU4Li44NjY3N2FlZmY2ODJkODNhYTIz
OGUwODlmYjg2YzFmMDk3YzY4ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQoKQogCiBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3M+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjp2aWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3MoKQogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFT
b3VyY2VQcml2YXRlLT52aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSA6IFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0
ZS0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMmFkYTgwNzRhODUy
MGU5NDJlNGMzMGE2NTRlYzRjOTZhYTdmMzhkYS4uODhjZjFiZjJhYWE4NjkzNGNjYTgyYzRmY2Fh
NDkxZDc1YTA2Yzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3MgZmxh
Z3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgp
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBi
eXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBG
bG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0
U2l6ZSgpOyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIG92ZXJy
aWRlIHsgbV9ib3gub2Zmc2V0VGltZXN0YW1wc0J5KG9mZnNldCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cAppbmRleCAxMmY4Mjc0ZWRiZmVhMDcxMWQ1MmJjYTkxMTVlOTkyZWRlMjZlMDdiLi43NDY3Mzcw
YTY0MjdmMTZhYzVjMjM2MDcxMDYwYThiNDI5OTM5YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0
cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBh
IHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaW5jb25zaXN0ZW50IHdp
dGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3RzIHNob3VsZCBiZSBpbnZhbGlk
YXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAgIGlmIChtX3JlcGxhY2VtZW50
U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4
IDZiMDEyOTBmYzRiZmIwOGZkOGE5YTg5ZTBjNzMyNzg4NmRkYjI0ZmUuLmRhOTg2ZjE2ODdjZDg5
OTRlOTdhYmRlYWIzM2IyMTM3MzFiMTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCBT
ZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBXYWxsVGltZSByZXNwb25zZVRpbQogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5j
eSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAgYXV0
byBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9IGRh
dGVWYWx1ZSA/IHN0ZDo6bWF4KDBfdXMsIHJlc3BvbnNlVGltZSAtICpkYXRlVmFsdWUpIDogMF91
czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVPcigwX3VzKTsKKyAg
ICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVfb3IoMF91cyk7CiAgICAgYXV0
byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKTsK
ICAgICBhdXRvIHJlc2lkZW50VGltZSA9IFdhbGxUaW1lOjpub3coKSAtIHJlc3BvbnNlVGltZTsK
ICAgICByZXR1cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBTZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHko
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgICAgIHJldHVybiAqbWF4QWdl
OwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0aXZl
RGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUpOworICAgIGF1dG8gZWZmZWN0aXZlRGF0
ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsKICAgICBpZiAoYXV0byBleHBpcmVzID0g
cmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1cm4gKmV4cGlyZXMgLSBlZmZlY3RpdmVE
YXRlOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNh
Y2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAogc3Rh
dGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
LSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCBy
ZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVT
ZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CisgICAgcmV0dXJuIHNlc3Npb24uY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1l
U2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVT
ZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8sIFNob3VsZEFza0lU
UDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0Owog
fQogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENv
b2tpZUphciogY29va2llSmFyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0z
NDgsNyArMzQ4LDcgQEAgc3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3QgUmUKICAgICBpZiAoIWNvb2tpZUph
cikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjb29raWVKYXItPmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRl
U2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vKS5maXJzdDsKKyAg
ICByZXR1cm4gY29va2llSmFyLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCBy
ZXF1ZXN0LnVybCgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVT
ZWN1cmVDb29raWVzOjpObykuZmlyc3Q7CiB9CiAKIHN0YXRpYyBTdHJpbmcgaGVhZGVyVmFsdWVG
b3JWYXJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJOYW1lLCBGdW5jdGlvbjxTdHJpbmcoKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDNkZjEyMDZkMmMz
YmJhNTU2NzdiZTQxM2NhMmNkZGExODkwNTE3NWYuLjYzYmVlMWRkNjFlYWZmZWVjYjBjNmYzNzc2
NTk5ZTZhMDJjMzg0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTYxLDI5
ICs2MSwyOSBAQCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZQogewogICAgIFVSTCBmaXJzdFBhcnR5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2FtZVNpdGVJbmZv
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIFVSTCB1cmw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICBk
ZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7
CiAgICAgaWYgKCFwYWdlSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluY2x1ZGVTZWN1cmVDb29r
aWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7IFdU
Rk1vdmUoZmlyc3RQYXJ0eSksIFdURk1vdmUoc2FtZVNpdGVJbmZvKSwgV1RGTW92ZSh1cmwpLCAq
ZnJhbWVJRCwgKnBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXggNjE5
OWRiOWI3NTYyMjc5MjExZDkyYTdlNzljMzk4NmMxYWJlZDJmNy4uNzFlZTZhZWVmMmMzMzEwZTFm
NTg2YTgwZTE5NWMxMTVjNmVkNTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE3NSwxMiArMTc1LDEyIEBAIHN0YXRp
YyBWZWN0b3I8dWludDhfdD4gZGVjb2RlRXNjYXBlZChjb25zdCBEZWNvZGVUYXNrJiB0YXNrKQog
c3RhdGljIE9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlU3luY2hyb25vdXNseShEZWNvZGVUYXNrJiB0
YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCF0YXNrLnByb2Nlc3MoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICh0YXNrLmlzQmFzZTY0KSB7CiAgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBkZWNvZGVCYXNl
NjQodGFzaywgbW9kZSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IFdURk1vdmUoKmRlY29kZWREYXRhKTsKICAgICB9IGVs
c2UKICAgICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IGRlY29kZUVzY2FwZWQodGFzayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDYxY2QzOGY2
N2IxYzhlYmEwNjg0NjdkNGQ2YzcxMjY0YmYyOWFiZDMuLmFiMWM5N2M1NGE2OTA2YmM5NjkwODYz
ZjMyNWM4ODU2NjE4ODQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdWludDY0X3QgRm9ybURhdGFFbGVtZW50
OjpsZW5ndGhJbkJ5dGVzKGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYgYmwK
ICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBm
aWxlRGF0YSkgewogICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZpbGVMZW5ndGggIT0gQmxvYkRh
dGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGZpbGVEYXRhLmZpbGVMZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIEZpbGVT
eXN0ZW06OmZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1lKS52YWx1ZU9yKDApOworICAgICAgICAg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1lKS52YWx1ZV9v
cigwKTsKICAgICAgICAgfSwgWyZibG9iU2l6ZV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGJsb2JTaXplKGJs
b2JEYXRhLnVybCk7CiAgICAgICAgIH0KQEAgLTE3OCw3ICsxNzgsNyBAQCBGb3JtRGF0YUVsZW1l
bnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogCiB2b2lkIEZvcm1EYXRh
OjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIG1fbGVu
Z3RoSW5CeXRlcyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFtX2VsZW1lbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoYXV0
byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihtX2VsZW1lbnRzLmxhc3QoKS5k
YXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZGF0YSksIHNpemUpOwpAQCAtMTkyLDIwICsxOTIsMjAgQEAgdm9pZCBGb3JtRGF0
YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3Jt
RGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewotICAgIG1fZWxlbWVu
dHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0b0Vu
ZE9mRmlsZSwgV1RGOjpudWxsb3B0KSk7Ci0gICAgbV9sZW5ndGhJbkJ5dGVzID0gV1RGOjpudWxs
b3B0OworICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwg
QmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgc3RkOjpudWxsb3B0KSk7CisgICAgbV9sZW5ndGhJ
bkJ5dGVzID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFu
Z2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAg
IG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgc3RhcnQsIGxlbmd0
aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Ci0gICAgbV9sZW5ndGhJbkJ5dGVzID0gV1RG
OjpudWxsb3B0OworICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpCiB7CiAgICAgbV9lbGVt
ZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsKLSAgICBtX2xlbmd0aEluQnl0
ZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0Owog
fQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG5vcm1hbGl6ZVN0cmluZ0RhdGEoVGV4dEVuY29k
aW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA1NTM5YWYyZWI2ZDBmNWFjNzgwYzhiYjdjOWIx
MjMzZjdjY2M5YzExLi45ZGFjNjBlN2FkM2JlNDk1MGY2OTc5YmM2ZjQzYjZjNzYwOWY0Y2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC02NCw3ICs2
NCw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICBPcHRpb25hbDxEYXRhPiBk
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KFdURk1vdmUoKmRhdGEpKTsKICAg
ICB9CiAKQEAgLTk3LDIyICs5NywyMiBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IGZpbGVuYW1lOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IGZpbGVTdGFydDsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZVN0YXJ0OwogICAgICAgICAgICAgaWYgKCFmaWxl
U3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBPcHRp
b25hbDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwogICAgICAgICAgICAgZGVjb2RlciA+PiBmaWxlTGVu
Z3RoOwogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgZGVjb2RlciA+PiBleHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7
CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZW5hbWUpLApAQCAtMTQwLDcgKzE0MCw3IEBA
IHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgT3B0aW9uYWw8VVJMPiB1cmw7
CiAgICAgICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAgICAgIGlmICghdXJsKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnVybCkgfX07
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmgKaW5kZXggYTBlYzIwNjlkOTI5Nzc3YzRiMjFlMmE0ZTMwODBlYTk0ZGFkZDM0MS4u
ZjQ0MjE3MDhlMTU2NDllYjEwMGVkOThhMmM0NzRlNDc4YWZhNDRjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTExOSw3ICsxMTks
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXQgPT0gbV90YWJsZS51bmNvbW1vbkhlYWRl
cnMoKS5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBt
X2tleVZhbHVlLmtleSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtX2tleVZhbHVlLmtleUFzSFRU
UEhlYWRlck5hbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2tleVZhbHVlLmtleUFz
SFRUUEhlYWRlck5hbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2tleVZhbHVlLnZh
bHVlID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTIyOSwxMCArMjI5LDEwIEBAIGF1dG8gSFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8Q29tbW9uSGVhCiB7CiAgICAgSFRUUEhl
YWRlck5hbWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0
cmluZyB2YWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBDb21tb25IZWFkZXIgeyBuYW1lLCBXVEZNb3ZlKHZhbHVlKSB9OwogfQpAQCAtMjQ5LDEw
ICsyNDksMTAgQEAgYXV0byBIVFRQSGVhZGVyTWFwOjpVbmNvbW1vbkhlYWRlcjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFVuY29tbW8KIHsKICAgICBTdHJpbmcgbmFtZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0cmluZyB2YWx1ZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBVbmNvbW1vbkhl
YWRlciB7IFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpIH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDM3NmQ1ZTc2M2Nm
MjdhN2M2ZGVkNzQ4MzU5ZDdhMzQ4YjNmZDM2YzMuLmEzMmFkNzc0ODZmNjA3ZmVkN2Q4NjVlMGNk
NDliYzYzOTNiYTA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IHBh
cnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBkb3VibGUgZGF0ZUluTWls
bGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3Rl
cnModmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhdGVJbk1p
bGxpc2Vjb25kc1NpbmNlRXBvY2gpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIFRoaXMgYXNzdW1lcyBzeXN0ZW1fY2xv
Y2sgZXBvY2ggZXF1YWxzIFVuaXggZXBvY2ggd2hpY2ggaXMgdHJ1ZSBmb3IgYWxsIGltcGxlbWVu
dGF0aW9ucyBidXQgdW5zcGVjaWZpZWQuCiAgICAgLy8gRklYTUU6IFRoZSBwYXJzaW5nIGZ1bmN0
aW9uIHNob3VsZCBiZSBzd2l0Y2hlZCB0byBXYWxsVGltZSB0b28uCiAgICAgcmV0dXJuIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoIC8gMTAwMC4w
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmgKaW5kZXggYzFiMjIzNzhmZTU1NmVkMjI3NWY2ZDNkNWJhNjM4Nzk3
YTgyZjQyYy4uNjE5NTljY2QxNDAzYTg3MjY2YTYwNmE4Zjc3YzA4NTJkNTY1ZmE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZEluZm9ybWF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZElu
Zm9ybWF0aW9uLmgKQEAgLTY0LDEzICs2NCwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBp
bmxpbmUgT3B0aW9uYWw8TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IE5ldHdvcmtUcgog
ICAgIE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbmZvcm1hdGlvbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGluZm9ybWF0aW9uLnJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mb3JtYXRpb24ucmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mb3Jt
YXRpb24ubWV0cmljcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaW5mb3JtYXRpb247CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuY3BwCmluZGV4IGFjY2Y5NDQxYzNjNjZhYjkyNTk5YjM1ODdiMWI5OTdiMWUwM2RkODcuLjQz
YjgxMWMzOTMyZGNhNGE2MWFhZDA3Y2E5ZDUxMzVhNWRlOGZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgpCiB7
CiAgICAgaWYgKCFtX2lzT25MaW5lKQogICAgICAgICB1cGRhdGVTdGF0ZSgpOwotICAgIHJldHVy
biBtX2lzT25MaW5lLnZhbHVlT3IodHJ1ZSk7CisgICAgcmV0dXJuIG1faXNPbkxpbmUudmFsdWVf
b3IodHJ1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZExpc3RlbmVyKFdU
Rjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRl
eCBmOTQ0Yjc3OWI1ZmJhMmEwYjQxMzQyMDUyN2E4MmJhNjdiZTU3MTYzLi5kZjBmYWU5ZTBkNDRi
ZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0xODAs
OSArMTgwLDkgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEV4ZW1wdERvbWFp
blBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGMKIAogT3B0aW9uYWw8U2Vjb25kcz4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pKQorICAgIGlm
IChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKSkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykKQEAg
LTMzNSw3ICszMzUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbgogICAgIAogdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMoKQogewotICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRpZENvbW1pdENy
b3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQpAQCAtNDE1
LDcgKzQxNSw3IEBAIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luCiAgICAgYXV0byBpdCA9IHN0b3Jh
Z2VBY2Nlc3NRdWlya3MoKS5maW5kKHRvcEZyYW1lRG9tYWluKTsKICAgICBpZiAoaXQgIT0gc3Rv
cmFnZUFjY2Vzc1F1aXJrcygpLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0
aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0
aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRG9tYWluLCBjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYgc3ViRG9tYWluKQpAQCAtNDI2LDcgKzQyNiw3IEBAIE9wdGlvbmFs
PFJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlvbmFs
TG9naW5Eb21haW4oY29uCiAgICAgaWYgKHN1YkRvbWFpbi5zdHJpbmcoKSA9PSAic29ueWVudGVy
dGFpbm1lbnRuZXR3b3JrLmNvbSJfcyAmJiB0b3BEb21haW4uc3RyaW5nKCkgPT0gInBsYXlzdGF0
aW9uLmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKTsKIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA3
OGVjMDZiNzRlNDcyYmQ2MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzLi45OWI1MzFmOTdhOWFiMjI1
ZWE5NDIwYzUxZmI3ZWYzOTI0MDkwYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTMwMSw3ICszMDEs
NyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05O
RUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+
IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRp
b25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VY
UE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVBY2Nl
cHRQb2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCmluZGV4IDk3
NWRkM2UyZWU1YmNjNmQzZDQxZDAwNWEwMGU0YTU0N2QwZDhkMDkuLjg2MzE0YzQ2NDNlZDliNzQy
MWQzODZjZTVlNGI2MzI0OWIzZTI2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCkBAIC0zMzEsMTMgKzMzMSwxMyBA
QCBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLAogewogICAgIFBhcnNlZENvbnRlbnRUeXBlIHBhcnNl
ZENvbnRlbnRUeXBlKG1vZGUgPT0gTW9kZTo6UmZjMjA0NSA/IGNvbnRlbnRUeXBlIDogc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBlKSk7CiAgICAgaWYgKCFwYXJz
ZWRDb250ZW50VHlwZS5wYXJzZUNvbnRlbnRUeXBlKG1vZGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IFdU
Rk1vdmUocGFyc2VkQ29udGVudFR5cGUpIH07CiB9CiAKIGJvb2wgaXNWYWxpZENvbnRlbnRUeXBl
KGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4gUGFy
c2VkQ29udGVudFR5cGU6OmNyZWF0ZShjb250ZW50VHlwZSwgbW9kZSkgIT0gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGNvbnRlbnRUeXBlLCBtb2Rl
KSAhPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIFBhcnNlZENvbnRlbnRUeXBlOjpQYXJzZWRDb250ZW50
VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCmluZGV4IDFjNGQzYzNm
MjQ3NzQ2ZjRhZmYyMGFjYzljMjAyNjFlNjE5YWFiZDAuLmMxOTQyYWZkNzg0Zjk4MmJkMmRhMWNl
YzBiMmI2ZDFmNWQ0ZjgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKQEAgLTM0LDI5ICszNCwyOSBAQCBPcHRp
b25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFyc2UoU3RyaW5n
VmlldyBpbnB1dCkKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIz
MyNzZWN0aW9uLTIuMSBidXQgYXNzdW1pbmcgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBiZWdpbiBh
bmQgYW4gZW5kIG9yIHBhcnNpbmcgd2lsbCBmYWlsCiAgICAgaWYgKCFpbnB1dC5zdGFydHNXaXRo
KFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGJlZ2luIHsgMCB9Owog
ICAgIHNpemVfdCBlbmQgeyAwIH07CiAgICAgc2l6ZV90IHJhbmdlQmVnaW5Qb3NpdGlvbiA9IDY7
CiAgICAgc2l6ZV90IGRhc2hQb3NpdGlvbiA9IGlucHV0LmZpbmQoJy0nLCByYW5nZUJlZ2luUG9z
aXRpb24pOwogICAgIGlmIChkYXNoUG9zaXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGJlZ2luU3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKHJhbmdlQmVnaW5Qb3NpdGlvbiwgZGFzaFBv
c2l0aW9uIC0gcmFuZ2VCZWdpblBvc2l0aW9uKTsKICAgICBhdXRvIG9wdGlvbmFsQmVnaW4gPSBw
YXJzZUludGVnZXI8dWludDY0X3Q+KGJlZ2luU3RyaW5nKTsKICAgICBpZiAoIW9wdGlvbmFsQmVn
aW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgYmVnaW4gPSAqb3B0aW9uYWxCZWdpbjsKIAogICAgIGF1dG8gZW5kU3RyaW5n
ID0gaW5wdXQuc3Vic3RyaW5nKGRhc2hQb3NpdGlvbiArIDEpOwogICAgIGF1dG8gb3B0aW9uYWxF
bmQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGVuZFN0cmluZyk7CiAgICAgaWYgKCFvcHRpb25h
bEVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBlbmQgPSAqb3B0aW9uYWxFbmQ7CiAKICAgICBpZiAoYmVnaW4gPiBlbmQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4ge3sgYmVnaW4sIGVuZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4
IGUwNjk4Njg4NjU3YjFmYzFlMzU1MTdjN2I0ZTIyYzlmN2YxMGI4ZWEuLjIwNDc1ODMxYzU5MTI1
N2ZjMTI5YWYyZGNmODg0YjJiZGI1YTg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNjA5LDcgKzYw
OSw3IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNTeXN0ZW1QcmV2aWV3KCkgY29uc3QK
IAogU3lzdGVtUHJldmlld0luZm8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c3lzdGVtUHJldmlld0lu
Zm8oKSBjb25zdAogewotICAgIHJldHVybiBtX3N5c3RlbVByZXZpZXdJbmZvLnZhbHVlT3IoU3lz
dGVtUHJldmlld0luZm8geyB9KTsKKyAgICByZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mby52YWx1
ZV9vcihTeXN0ZW1QcmV2aWV3SW5mbyB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldFN5c3RlbVByZXZpZXdJbmZvKGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBpbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcAppbmRleCBhYTkxNjJlNDkwZmVmNjEwNjkxZGUyNDY5NDNkMzFkODJhMWUy
ZTU0Li41MjY1MzIzMzAxNzBlMTZmMTkwMjhhZDkzOTNiYzRiMDY0NDg3ZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBB
U1NFUlQocmVzcG9uc2UudGFpbnRpbmcoKSA9PSBUYWludGluZzo6Q29ycyk7CiAgICAgZmlsdGVy
ZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCi0gICAgYXV0byBhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpB
Y2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlT3IoSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKKyAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VI
ZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0Nv
bnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4geyB9KTsKICAgICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1FeHBv
c2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0LmNv
bnRhaW5zKCIqIikpCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZFJlc3BvbnNlOwogCkBAIC00NTQs
NyArNDU0LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVIVFRQSGVhZGVy
RmllbGRzQWNjb3JkaW5nVG9UYWludGluZygpCiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlOjpU
YWludGluZzo6QmFzaWM6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlc291cmNlUmVzcG9u
c2U6OlRhaW50aW5nOjpDb3JzOiB7Ci0gICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQgPSBw
YXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSku
dmFsdWVPcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7IH0pOwor
ICAgICAgICBhdXRvIGNvcnNTYWZlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dM
aXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlX29yKEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfSk7CiAgICAgICAgIGlmIChjb3JzU2FmZUhl
YWRlclNldC5jb250YWlucygiKiIpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02OTcsNyAr
Njk3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZURhdGVWYWx1ZUluSGVhZGVy
KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEgKIHsKICAgICBTdHJpbmcgaGVhZGVyVmFs
dWUgPSBoZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKICAgICBpZiAoaGVhZGVyVmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIC8vIFRoaXMgaGFuZGxlcyBhbGwgZGF0ZSBmb3JtYXRzIHJlcXVpcmVkIGJ5
IFJGQzI2MTY6CiAgICAgLy8gU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQgIDsgUkZDIDgy
MiwgdXBkYXRlZCBieSBSRkMgMTEyMwogICAgIC8vIFN1bmRheSwgMDYtTm92LTk0IDA4OjQ5OjM3
IEdNVCA7IFJGQyA4NTAsIG9ic29sZXRlZCBieSBSRkMgMTAzNgpAQCAtNzUzLDcgKzc1Myw3IEBA
IE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkg
Y29uc3QKICAgICAgICAgLy8gYW4gaW52YWxpZCB2YWx1ZSAocmRhcjovL3Byb2JsZW0vMjIzNTI4
MzgpLgogICAgICAgICBjb25zdCBXYWxsVGltZSBlcG9jaCA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcygwKTsKICAgICAgICAgaWYgKG1fbGFzdE1vZGlmaWVkICYmIG1fbGFzdE1vZGlmaWVkLnZh
bHVlKCkgPT0gZXBvY2gpCi0gICAgICAgICAgICBtX2xhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIG1fbGFzdE1vZGlmaWVkID0gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAg
ICAgICAgIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA9IHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5jcHAKaW5kZXggMjIzYzA3MTgyNzA3YjEwMzZjZTI1ZTE0NWNkNjAzYTcxMjRh
NjNiNS4uNzBmZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRmYWM4NzgzYTVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUltcGwuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBzaXplX3QgcmVtb3ZlVGVybWlu
YXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoCiBz
dGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tpZURh
dGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVs
ZFByb3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IGF1dG8gW2Nvb2tpZURhdGFTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZF0gPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxk
UHJveHkpOwogICAgIGlmIChjb29raWVEYXRhU3RyaW5nLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKaW5kZXggYmEyZjdhMGMzM2Q0Y2IwNjdhOWY1YjVhMTg3MWUxYmMzZWZlNzE4NS4u
MjAxZmJkOTdlZmJmM2E5MGM0ODkwMTlhNzVkNjllMjg5ZWIxOWU1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9D
Rk5ldC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+
IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgYXV0byBjaGFpbiA9IGNl
cnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ2VydGlmaWNhdGVT
dW1tYXJ5IHN1bW1hcnlJbmZvOwogCkBAIC0yMDcsMTEgKzIwNywxMSBAQCBzdGF0aWMgT3B0aW9u
YWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIGRlY29kZXIgPj4gc2l6ZTsKIAogICAgIGlmIChVTkxJS0VMWSghaXNJbkJvdW5kczxzaXpl
X3Q+KCpzaXplKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvaW50ZXIgPSBkZWNvZGVyLmJ1ZmZlclBvaW50
ZXJGb3JEaXJlY3RSZWFkKHN0YXRpY19jYXN0PHNpemVfdD4oKnNpemUpKTsKICAgICBpZiAoIXBv
aW50ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgcG9p
bnRlciwgKnNpemUpKTsKIH0KQEAgLTIzNCwxOCArMjM0LDE4IEBAIHN0YXRpYyBPcHRpb25hbDxS
ZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVTZWNUcnVzdFJlZihEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPGJvb2w+IGhhc1RydXN0OwogICAgIGRlY29kZXIgPj4gaGFzVHJ1c3Q7
CiAgICAgaWYgKCFoYXNUcnVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghKmhhc1RydXN0KQogICAgICAgICBy
ZXR1cm4geyBudWxscHRyIH07CiAKICAgICBhdXRvIHRydXN0RGF0YSA9IGRlY29kZUNGRGF0YShk
ZWNvZGVyKTsKICAgICBpZiAoIXRydXN0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdHJ1c3QgPSBhZG9w
dENGKFNlY1RydXN0RGVzZXJpYWxpemUodHJ1c3REYXRhLT5nZXQoKSwgbnVsbHB0cikpOwogICAg
IGlmICghdHJ1c3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdHJ1c3Q7CiB9CkBAIC0yNzMsMTQgKzI3Mywx
NCBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBkZWNvZGVDZXJ0aWZp
Y2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7
CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYXJy
YXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgewogICAg
ICAgICBhdXRvIGRhdGEgPSBkZWNvZGVDRkRhdGEoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZGF0
YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0Nl
cnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoMCwgZGF0YS0+Z2V0KCkpKTsKICAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCBjZXJ0aWZpY2F0ZS5nZXQoKSk7CkBAIC0zMTcsMTQg
KzMxNywxNCBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZvVHlwZTsKICAgICBkZWNvZGVy
ID4+IGNlcnRpZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm9UeXBlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgc3dpdGNoICgqY2VydGlmaWNhdGVJbmZvVHlwZSkgewogI2lmIEhBVkUoU0VDX1RS
VVNUX1NFUklBTElaQVRJT04pCiAgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5
cGU6OlRydXN0OiB7CiAgICAgICAgIGF1dG8gdHJ1c3QgPSBkZWNvZGVTZWNUcnVzdFJlZihkZWNv
ZGVyKTsKICAgICAgICAgaWYgKCF0cnVzdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oV1RGTW92ZSgqdHJ1c3QpKTsKICAgICB9CkBAIC0zMzMs
NyArMzMzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBDb2RlcjxXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2QKICAgICBjYXNlIFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjogewogICAgICAgICBhdXRvIGNl
cnRpZmljYXRlQ2hhaW4gPSBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKGRlY29kZXIpOwogICAgICAg
ICBpZiAoIWNlcnRpZmljYXRlQ2hhaW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoKmNlcnRpZmljYXRlQ2hhaW4pKTsKICAgICB9
CkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBD
b2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2QKICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
UGVyc2lzdGVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA5OTE1
ZjBjZWFjYWY5NDZlYjRhZjJkNmI3NDBmNzIyNmUzNDRiNzhkLi5lNjdlODNjNmIxNmVmYmNjMjU4
MmMzYTg2MjQyZjU1ZjljNGI1MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQu
Y3BwCkBAIC03MjQsNyArNzI0LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXQKIAogICAgIENG
SW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVuZ3RoKTsKICAgICBpZiAocmVz
dWx0ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKHJlc3VsdCA+PSAwKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KaW5kZXggYWEzOTAyNzE4MmQ3ODRhN2Q5
NDY3N2E4ZTAwZmYwMDAwZDdlZjU3NS4uOGE1MDY1MGNlYTg2MmUxNTVmMjUzM2I0ZmRkNzM5Zjdi
ODNjMTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9Db29raWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL0Nvb2tpZUNvY29hLm1tCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3Vi
bGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29raWUgKmNvb2tpZSkKIHsKICAgICBOU0RhdGUgKmV4
cGlyeURhdGUgPSBjb29raWUuZXhwaXJlc0RhdGU7CiAgICAgaWYgKCFleHBpcnlEYXRlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBbZXhwaXJ5RGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4wOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCAxMWM5YTIzODNj
ZDZjOGMzMDFhMWEwOGRjZGVhZmFlNzlkMjYyYjQ0Li5kOTc4MmJiMTA3MDQ2NjI1YWQwOTJjZGFm
NTIxMTlmNDE0YTkyY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
QEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29v
a2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbQogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSB0aGlzLT5jb29raWVTdG9yYWdlKCk7Ci0gICAgUmV0YWluUHRy
PE5TQXJyYXk+IGNvb2tpZXMgPSBodHRwQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgp
LCBuaWwsIFdURjo6bnVsbG9wdCwgdXJsKTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gY29va2ll
cyA9IGh0dHBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIG5pbCwgc3RkOjpudWxs
b3B0LCB1cmwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVTdHJpbmcgPSBjb29raWVOYW1l
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMTc1MjI2YmRmYThkMDgyZDYz
ZDlhN2U1OTU5MGIwY2RhNTJmNGZiNS4uZmRlMGZmY2RiZjRkYWZhOWIyY2IwNDUwYzU5MDRlNWM4
ZWNmZWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTcyLDcgKzE3Miw3
IEBAIE9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRDb250
ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0CiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIE9wdGlvbmFsPHNp
emVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBleHBl
Y3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCk7CiAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3BvbnNl
VW5rbm93bkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCmluZGV4IDQxMGEyNzZmNGUw
NjM5NzU2Y2U0YzBjM2YzY2YzMDVjNTYzNjA0MjEuLjkzY2Q4OGYzMGE2Nzk3NjRhOTg4YzQ4ZTNl
ZjlmODNlZjI0ODdiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIFByb3RlY3Rpb25TcGFjZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6cHJvdGVjdGlvblNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25zdCBDCiAgICAgYXV0byBzZXJ2
ZXJUeXBlID0gcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkodXJsLCBpc1Byb3h5QXV0
aCk7CiAgICAgYXV0byBhdXRoZW50aWNhdGlvblNjaGVtZSA9IGF1dGhlbnRpY2F0aW9uU2NoZW1l
RnJvbUN1cmxBdXRoKGlzUHJveHlBdXRoID8gY3VybFJlc3BvbnNlLmF2YWlsYWJsZVByb3h5QXV0
aCA6IGN1cmxSZXNwb25zZS5hdmFpbGFibGVIdHRwQXV0aCk7CiAKLSAgICByZXR1cm4gUHJvdGVj
dGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZh
bHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBwYXJzZVJlYWxtKHJlc3BvbnNlKSwgYXV0aGVudGljYXRp
b25TY2hlbWUpOworICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKS50b1N0cmlu
ZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFsdWVfb3IoMCkpLCBzZXJ2ZXJUeXBlLCBwYXJz
ZVJlYWxtKHJlc3BvbnNlKSwgYXV0aGVudGljYXRpb25TY2hlbWUpOwogfQogCiBQcm90ZWN0aW9u
U3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZUZvclNlcnZlclRy
dXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5m
bykKQEAgLTc3LDcgKzc3LDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJUcnVzdChjb25zdCBVUkwKICAgICBhdXRvIHNl
cnZlclR5cGUgPSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSSh1cmwsIGZhbHNlKTsK
ICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uU2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQ7CiAKLSAgICByZXR1cm4g
UHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihw
b3J0LnZhbHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBTdHJpbmcoKSwgYXV0aGVudGljYXRpb25TY2hl
bWUsIGNlcnRpZmljYXRlSW5mbyk7CisgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZSh1cmwuaG9z
dCgpLnRvU3RyaW5nKCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52YWx1ZV9vcigwKSksIHNlcnZl
clR5cGUsIFN0cmluZygpLCBhdXRoZW50aWNhdGlvblNjaGVtZSwgY2VydGlmaWNhdGVJbmZvKTsK
IH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpkZXRlcm1p
bmVQcm94eVBvcnQoY29uc3QgVVJMJiB1cmwpCkBAIC05Myw3ICs5Myw3IEBAIE9wdGlvbmFsPHVp
bnQxNl90PiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZGV0ZXJtaW5lUHJveHlQb3J0KGNvbnN0
IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQogICAgICAg
ICByZXR1cm4gc29ja3NQb3J0OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVt
ZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25TY2hlbWVGcm9tQ3VybEF1
dGgobG9uZyBjdXJsQXV0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRleCA2MzRlNDFmYmRiN2Y3OTIxNDA4Yzcw
OTAxNWZlZGI5MzE0ZjQzNTdlLi5kY2EyMGJhM2M1NDIxNjBhMzE4NTcwYzY3ZGE1MjBkN2YzY2Yy
YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2Vy
dGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0NlcnRpZmljYXRlSW5mby5oCkBAIC04NywxOSArODcsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgIE9wdGlvbmFsPGludD4g
dmVyaWZpY2F0aW9uRXJyb3I7CiAgICAgICAgIGRlY29kZXIgPj4gdmVyaWZpY2F0aW9uRXJyb3I7
CiAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uRXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxzaXplX3Q+IG51bU9mQ2VydHM7CiAgICAgICAgIGRlY29kZXIgPj4gbnVtT2ZDZXJ0
czsKICAgICAgICAgaWYgKCFudW1PZkNlcnRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUNoYWluIGNlcnRpZmljYXRlQ2hhaW47CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtT2ZDZXJ0cy52YWx1ZSgpOyBpKyspIHsK
ICAgICAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNh
dGU+IGNlcnRpZmljYXRlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZTsKICAg
ICAgICAgICAgIGlmICghY2VydGlmaWNhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
ICAgICBjZXJ0aWZpY2F0ZUNoYWluLmFwcGVuZChXVEZNb3ZlKGNlcnRpZmljYXRlLnZhbHVlKCkp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IDE4ZmEyN2FhZWRkM2Y3
M2Y5MGNjMDY0NjMxMDY3MGE3ZmI2MTdkYzkuLmVjMGY0YmEwY2JlNDFmZDFlY2U4YWI4ZmYyZjgz
NjVmYjZhMGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZp
Y2F0ZShjb25zdCB1aW50OF90KiBidWYKIE9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4gQ2Vy
dGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2VydGlmaWNhdGVD
aGFpbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gT3BlblNTTDo6Y3JlYXRlU3VtbWFyeUluZm8o
bV9jZXJ0aWZpY2F0ZUNoYWluLmF0KDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDA1ZDYyNWQwMTYxZGNm
NGMyNzAwMTA3MzQ2NWQyNTMxZDRmMTU5MzguLmRiYjA1ODM4NWRhYjdiNmUzOTVlMTU5ZDU4MWNm
OTA3NDdiZDE2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzcyLDE0ICszNzIsMTQgQEAgYm9vbCBDb29raWVK
YXJEQjo6aGFzQ29va2llcyhjb25zdCBVUkwmIHVybCkKIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+
PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBP
cHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vzc2lvbikKIHsK
ICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
U3RyaW5nIHJlcXVlc3RIb3N0ID0gcmVxdWVzdFVybC5ob3N0KCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKICAgICBpZiAocmVxdWVzdEhvc3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFj
aGVja0Nvb2tpZUFjY2VwdFBvbGljeShmaXJzdFBhcnR5LCByZXF1ZXN0VXJsKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAg
aWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKQEAgLTM5NSw3ICszOTUsNyBAQCBPcHRpb25hbDxW
ZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBHTE9C
ID8pKSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRhdGVk
Il9zKTsKICAgICBpZiAoIXBzdG10KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcHN0bXQtPmJpbmRJbnQ2NCgxLCBXYWxs
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSk7CiAgICAgcHN0
bXQtPmJpbmRJbnQoMiwgaHR0cE9ubHkgPyAqaHR0cE9ubHkgOiAtMSk7CkBAIC01MTEsNyArNTEx
LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6Y2FuQWNjZXB0Q29va2llKGNvbnN0IENvb2tpZSYgY29v
a2llLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGMKIAogYm9vbCBDb29raWVKYXJEQjo6c2V0Q29v
a2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIGF1dG8gZXhwaXJlcyA9IGNvb2tpZS5l
eHBpcmVzLnZhbHVlT3IoMC4wKTsKKyAgICBhdXRvIGV4cGlyZXMgPSBjb29raWUuZXhwaXJlcy52
YWx1ZV9vcigwLjApOwogICAgIGlmICghY29va2llLnNlc3Npb24gJiYgTW9ub3RvbmljVGltZTo6
ZnJvbVJhd1NlY29uZHMoZXhwaXJlcyAvIFdURjo6bXNQZXJTZWNvbmQpIDw9IE1vbm90b25pY1Rp
bWU6Om5vdygpKQogICAgICAgICByZXR1cm4gZGVsZXRlQ29va2llSW50ZXJuYWwoY29va2llLm5h
bWUsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCA0ODQ5YzY2N2MyYTEy
ODg0MWZmYjA1NzZhNjY5MGM0ZDhmZDQ1ZTIxLi4wOTFlOTQ3NzcxODZkYjljNjA0OGYxNzc0YTc0
ZmNmMTU5YWU0NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgSGFzaFNl
dDxTdHJpbmc+IGFsbERvbWFpbnMoKTsKICAgICBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gc2Vh
cmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgcmVxdWVzdFVybCwg
Y29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vj
dXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vzc2lvbik7CiAgICAgVmVjdG9yPENvb2tpZT4g
Z2V0QWxsQ29va2llcygpOwotICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWUsIFNvdXJjZSwgT3B0aW9uYWw8U2Vj
b25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQpOworICAgIGJvb2wgc2V0Q29va2ll
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWUs
IFNvdXJjZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxvcHQp
OwogICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogCiAgICAgYm9vbCBkZWxldGVD
b29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKaW5kZXgg
NWQ1MmM5ODgyYTMzMTUyMDg1NmExYjYyMzBmMWRkYjIxMDgwZDlkNi4uZTM1MDQ0ODIwNjIxZmJm
NzkyY2VkNzA2ZDFkMDE0ZmNlM2QzNTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0
YXRpYyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwg
Ym9vbCYgaGFzTWF4QWdlLCBDb29rCiBPcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVy
KGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5sZW5ndGgo
KSA+PSBNQVhfQ09PS0lFX0xJTkUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIEFsZ29yaXRobSBpcyBiYXNl
ZCBvbiB0aGUgYWxnb3JpdGhtIGRlZmluZWQgaW4gUkZDIDYyNjUgNS4yIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4yLwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCAyZjY1NTZl
ZTA1YjFkN2MwNTYxZGJiNTIxMWI2Y2MwZWJjZjRhYzM5Li5mZmU3NzBhZGI4ZjJiMWNmMDYwMGVj
ZDMxM2I4M2Y5MDk0NjU3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtNjc2LDcgKzY3Niw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybEhhbmRsZTo6
Z2V0UHJveHlVcmwoKQogewogICAgIGF1dG8mIHByb3h5ID0gQ3VybENvbnRleHQ6OnNpbmdsZXRv
bigpLnByb3h5U2V0dGluZ3MoKTsKICAgICBpZiAocHJveHkubW9kZSgpID09IEN1cmxQcm94eVNl
dHRpbmdzOjpNb2RlOjpEZWZhdWx0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHByb3h5LnVybCgpOwogfQpA
QCAtNjg0LDEyICs2ODQsMTIgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsSGFuZGxlOjpnZXRQcm94
eVVybCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRSZXNwb25zZUNvZGUoKQogewog
ICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBsb25nIHJlc3BvbnNlQ29kZTsKICAgICBDVVJM
Y29kZSBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fUkVT
UE9OU0VfQ09ERSwgJnJlc3BvbnNlQ29kZSk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9P
SykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiByZXNwb25zZUNvZGU7CiB9CkBAIC02OTcsMTIgKzY5NywxMiBA
QCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRSZXNwb25zZUNvZGUoKQogT3B0aW9uYWw8
bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKIHsKICAgICBpZiAoIW1faGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgbG9uZyBodHRwQ29ubmVjdENvZGU7CiAgICAgQ1VSTGNvZGUgZXJyb3JD
b2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBfQ09OTkVDVENP
REUsICZodHRwQ29ubmVjdENvZGUpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gaHR0cENvbm5lY3RDb2RlOwogfQpAQCAtNzEwLDEzICs3MTAsMTMgQEAg
T3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKIE9wdGlvbmFs
PGxvbmcgbG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVudExlbmd0aCgpCiB7CiAgICAgaWYgKCFt
X2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBjb250ZW50TGVuZ3RoOwogCiAgICAgQ1VSTGNvZGUg
ZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NPTlRFTlRf
TEVOR1RIX0RPV05MT0FELCAmY29udGVudExlbmd0aCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBD
VVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGNvbnRlbnRM
ZW5ndGgpOwogfQpAQCAtNzI0LDEyICs3MjQsMTIgQEAgT3B0aW9uYWw8bG9uZyBsb25nPiBDdXJs
SGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6Omdl
dEh0dHBBdXRoQXZhaWwoKQogewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBsb25nIGh0
dHBBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRp
bmZvKG1faGFuZGxlLCBDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCwgJmh0dHBBdXRoQXZhaWxhYmxl
KTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGh0dHBB
dXRoQXZhaWxhYmxlOwogfQpAQCAtNzM3LDEyICs3MzcsMTIgQEAgT3B0aW9uYWw8bG9uZz4gQ3Vy
bEhhbmRsZTo6Z2V0SHR0cEF1dGhBdmFpbCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpn
ZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGxvbmcg
cHJveHlBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9n
ZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwsICZwcm94eUF1dGhBdmFp
bGFibGUpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
cHJveHlBdXRoQXZhaWxhYmxlOwogfQpAQCAtNzUwLDEyICs3NTAsMTIgQEAgT3B0aW9uYWw8bG9u
Zz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQogT3B0aW9uYWw8bG9uZz4gQ3VybEhh
bmRsZTo6Z2V0SHR0cFZlcnNpb24oKQogewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBs
b25nIHZlcnNpb247CiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8o
bV9oYW5kbGUsIENVUkxJTkZPX0hUVFBfVkVSU0lPTiwgJnZlcnNpb24pOwogICAgIGlmIChlcnJv
ckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KQEAgLTc2OSwy
NyArNzY5LDI3IEBAIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0
TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kCiAgICAgbG9uZyB2ZXJzaW9uID0g
MDsKIAogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDVVJMY29kZSBlcnJvckNvZGUgPSBj
dXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLCAmbmFt
ZUxvb2t1cCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGVycm9y
Q29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19DT05ORUNUX1RJTUUs
ICZjb25uZWN0KTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXJy
b3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0FQUENPTk5FQ1Rf
VElNRSwgJmFwcENvbm5lY3QpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fU1RB
UlRUUkFOU0ZFUl9USU1FLCAmc3RhcnRUcmFuc2Zlcik7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBD
VVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxl
LCBDVVJMSU5GT19IVFRQX1ZFUlNJT04sICZ2ZXJzaW9uKTsKICAgICBpZiAoZXJyb3JDb2RlICE9
IENVUkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmlj
czsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgQ3VybEhhbmRsZTo6YWRkRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpCiBPcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IEN1cmxIYW5kbGU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3NzbFZlcmlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1fc3NsVmVyaWZpZXIt
PmNlcnRpZmljYXRlSW5mbygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAppbmRleCBjZmRiZjBh
MTFmNDUwMzJkZWU3YWViY2VmNDRkYjUyMDU4MjI0YjljLi43OWRkYzM5OTI4YTgzOWNjYTc1NmQ4
MjBjNGJlMWNlNGFkZWUzZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21wdXRlQ29udGVudExlbmd0aCgpCiBP
cHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIHNp
emVfdCBzaXplKQogewogICAgIGlmICghbV9mb3JtRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IGF1dG8g
dG90YWxFbGVtZW50U2l6ZSA9IG1fZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOwogICAgIGlm
IChtX2VsZW1lbnRQb3NpdGlvbiA+PSB0b3RhbEVsZW1lbnRTaXplKQpAQCAtMTMwLDEyICsxMzAs
MTIgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWQoY2hhciogYnVm
ZmVyLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVhZEZyb21GaWxlKGZp
bGVEYXRhLCBidWZmZXJQb3NpdGlvbiwgYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICB9LCBbXSAo
Y29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
fQogICAgICAgICApOwogCiAgICAgICAgIGlmICghcmVhZEJ5dGVzKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgdG90YWxSZWFkQnl0ZXMgKz0gKnJlYWRCeXRlczsKICAgICB9CkBAIC0xNTMsNyArMTUz
LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWRGcm9tRmlsZShj
b25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWQKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFu
ZGxlVmFsaWQobV9maWxlSGFuZGxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkN1cmwgLSBG
YWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9hZFxuIiwgZmlsZURhdGEuZmls
ZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byByZWFkQnl0
ZXMgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBidWZmZXIsIHNpemUp
OwpAQCAtMTYxLDcgKzE2MSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFt
OjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkCiAgICAgICAgIExP
RyhOZXR3b3JrLCAiQ3VybCAtIEZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVhZCAlcyBmb3IgdXBs
b2FkXG4iLCBmaWxlRGF0YS5maWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYg
KCFyZWFkQnl0ZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBjY2RiYjI4MjM5ZjIy
YzM2MzZjYWMxNGIwNzg1ZDZmNTVhYjJmNWJjLi43MDI0ZWM3YzFlYjgyYjVjYjIzZGE1ODBiMmUz
NmJhYjEwZGVkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC03Miw3ICs3Miw3IEBA
IE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5KGNv
bnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uCiAgICAgICAgIHJldHVybiBTdHJpbmcoIi0tIiArICpi
b3VuZGFyeSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6
OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbgogCiAgICAgYXV0byBi
b3VuZGFyeVN0YXJ0ID0gY29udGVudFR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJib3VuZGFy
eT0iKTsKICAgICBpZiAoYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvdW5k
YXJ5U3RhcnQgKz0gbGVuZ3RoOwogICAgIHNpemVfdCBib3VuZGFyeUVuZCA9IDA7CkBAIC05MSwx
MyArOTEsMTMgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0
Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW4KICAgICAgICAgKytib3VuZGFyeVN0
YXJ0OwogICAgICAgICBib3VuZGFyeUVuZCA9IGNvbnRlbnRUeXBlLmZpbmQoJyInLCBib3VuZGFy
eVN0YXJ0KTsKICAgICAgICAgaWYgKGJvdW5kYXJ5RW5kID09IG5vdEZvdW5kKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZVtib3VuZGFyeVN0YXJ0XSA9PSAnXCcnKSB7CiAg
ICAgICAgIC8vIEJvdW5kYXJ5IHZhbHVlIHN0YXJ0cyB3aXRoIGEgJyBxdW90ZS4gU2VhcmNoIGZv
ciB0aGUgY2xvc2luZyBvbmUuCiAgICAgICAgICsrYm91bmRhcnlTdGFydDsKICAgICAgICAgYm91
bmRhcnlFbmQgPSBjb250ZW50VHlwZS5maW5kKCdcJycsIGJvdW5kYXJ5U3RhcnQpOwogICAgICAg
ICBpZiAoYm91bmRhcnlFbmQgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBDaGVjayBmb3IgdGhlIGVuZCBvZiB0aGUgYm91bmRhcnkuIFRoYXQgY2FuIGJl
IGEgc2VtaWNvbG9uIG9yIGEgbmV3bGluZS4KICAgICAgICAgYm91bmRhcnlFbmQgPSBjb250ZW50
VHlwZS5maW5kKCc7JywgYm91bmRhcnlTdGFydCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9u
YWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnlGcm9tQ29udGVu
dFR5cGUoY29uc3QgU3RyaW4KIAogICAgIC8vIFRoZSBib3VuZGFyeSBlbmQgc2hvdWxkIG5vdCBi
ZSBiZWZvcmUgdGhlIHN0YXJ0CiAgICAgaWYgKGJvdW5kYXJ5RW5kIDw9IGJvdW5kYXJ5U3RhcnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gY29udGVudFR5cGUuc3Vic3RyaW5nKGJvdW5kYXJ5U3RhcnQsIGJv
dW5kYXJ5RW5kIC0gYm91bmRhcnlTdGFydCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRleCAx
ODM3ZGI0NDc5NzUzNjQ4MDkzMTM5NTljOTlhMzFkNjlmMjZmOWFkLi5kZTA5MjdmZTFhM2E2ZGEz
MTc4MGM1ODQ5NTNhMGE5NjBkNGUxYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTEwMywy
MCArMTAzLDIwIEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNvbnN0
IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQogICAgICAg
ICByZXR1cm4gU29ja3NQcm94eVBvcnQ7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGNyZWF0
ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8IHVy
bC5ob3N0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpICYmICFwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBw
b3J0ID0gZ2V0UHJveHlQb3J0KHVybCk7CiAgICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB1
c2VycGFzcyA9IHVybC5oYXNDcmVkZW50aWFscygpID8gbWFrZVN0cmluZyh1cmwudXNlcigpLCAi
OiIsIHVybC5wYXNzd29yZCgpLCAiQCIpIDogU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1ha2VTdHJp
bmcodXJsLnByb3RvY29sKCksICI6Ly8iLCB1c2VycGFzcywgdXJsLmhvc3QoKSwgIjoiLCAqcG9y
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFNTTEhhbmRsZS5jcHAKaW5kZXggYWU4NmQyYjEyZGIyZWRlNTQ1MmQ4YjJiYTVhYjIyN2NiZmQ5
MDUzMi4uNjllYzI2MmRjYjJiZTgyNmE4OGI4MDA5N2ZkMDk3ZjQ0ZGEzNjRjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxl
LmNwcApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpDbGllbnRDZXJ0
aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdAogCiAgICAgYXV0
byBpdCA9IG1fYWxsb3dlZENsaWVudEhvc3RzLmZpbmQoaG9zdE5hbWUpOwogICAgIGlmIChpdCA9
PSBtX2FsbG93ZWRDbGllbnRIb3N0cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpdC0+dmFsdWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggNzA3NzQ4NDM4OTNi
MzA2MzcxMjI4ZmQ2OTJmYjU0NGE4NjhlMjdiNi4uYjI0ZTliNmVkOWQ0NTAzY2M0MDU4MjAwNDU5
ZTc5MWQwMTc4N2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
NTcsMTAgKzU3LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBjb29raWVzOwogCi0gICAgYXV0byBzZWFyY2hIVFRQT25seSA9IGZvckhUVFBIZWFkZXIg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07Ci0gICAgYXV0byBzZWN1
cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGJv
b2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNlYXJjaEhUVFBPbmx5ID0gZm9ySFRUUEhlYWRlciA/
IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNlY3Vy
ZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpudWxsb3B0IDogT3B0aW9uYWw8Ym9v
bD4geyBmYWxzZSB9OwogCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gc2Vzc2lvbi5jb29raWVEYXRh
YmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBzZWFyY2hIVFRQT25seSwgc2Vj
dXJlLCBXVEY6Om51bGxvcHQpKSB7CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gc2Vzc2lvbi5jb29r
aWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBzZWFyY2hIVFRQT25s
eSwgc2VjdXJlLCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY29v
a2llIDogKnJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCFjb29raWVzLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiOyAiKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lUwogICAgIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0
aW1lID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFydHkg
fSwgcGFnZUlEKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0gICAgT3B0aW9u
YWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8
U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICBjb29r
aWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVKYXJE
Qjo6U291cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsKIH0KQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbAogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewotICAgIGF1dG8gY29v
a2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gY29va2ll
cyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIGlmICghY29va2llcykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKaW5kZXggYTYzMmExYzBlMTAyYmI0
Mjc2ZTQxMzQ4ZTAxODcyOGM3N2ViMjkzMS4uYWIzZTY1N2NmMmM1NTg3NjhlNjMyNjg3OTM1NjQ2
MGRkYjA1NzM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL09wZW5TU0xIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKICAgICAgICAgYXV0byBsZW5ndGggPSA6
OkJJT19nZXRfbWVtX2RhdGEobV9iaW8sICZkYXRhKTsKICAgICAgICAgaWYgKGxlbmd0aCA8IDAp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwogICAgICAgICBy
ZXN1bHQuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgc3RhdGljIFZl
Y3RvcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPiBwZW1EYXRhRnJvbUN0
eChYNTA5X1NUT1JFX0MKIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY3JlYXRl
Q2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYX2dl
dF9lcnJvcihjdHgpLCBwZW1EYXRhRnJvbUN0eChjdHgpKTsKIH0KQEAgLTIyMCwyMSArMjIwLDIx
IEBAIHN0YXRpYyBTdHJpbmcgZ2V0U3ViamVjdE5hbWUoY29uc3QgWDUwOSogeDUwOSkKIHN0YXRp
YyBPcHRpb25hbDxTZWNvbmRzPiBjb252ZXJ0QVNOMVRpbWVUb1NlY29uZHMoY29uc3QgQVNOMV9U
SU1FKiBhbnMxVGltZSkKIHsKICAgICBpZiAoIWFuczFUaW1lKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChhbnMx
VGltZS0+dHlwZSAhPSBWX0FTTjFfVVRDVElNRSAmJiBhbnMxVGltZS0+dHlwZSAhPSBWX0FTTjFf
R0VORVJBTElaRURUSU1FKSB8fCAhYW5zMVRpbWUtPmRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBVVENUSU1F
ICAgICAgICAgOiBZWW1tZGRISE1NW1NTXQogICAgIC8vIEdFTkVSQUxJWkVEVElNRSA6IFlZWVlt
bWRkSEhNTVtTU10KICAgICBpbnQgZGlnaXRMZW5ndGggPSBhbnMxVGltZS0+dHlwZSA9PSBWX0FT
TjFfVVRDVElNRSA/IDEwIDogMTI7CiAgICAgaWYgKGFuczFUaW1lLT5sZW5ndGggPCBkaWdpdExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gZGF0YSA9IGFuczFUaW1lLT5kYXRhOwogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZGlnaXRMZW5ndGg7IGkrKykgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdp
dChkYXRhW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHN0cnVjdCB0bSB0aW1lIHsgfTsK
QEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2Vjb25kcz4gY29udmVydEFTTjFU
aW1lVG9TZWNvbmRzKGNvbnN0IEFTTjFfVElNRSogYW5zMVRpbWUpCiAKICAgICB0aW1lLnRtX21v
biA9IChkYXRhWzBdIC0gJzAnKSAqIDEwICsgKGRhdGFbMV0gLSAnMCcpIC0gMTsKICAgICBpZiAo
dGltZS50bV9tb24gPCAwIHx8IHRpbWUudG1fbW9uID4gMTEpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdGltZS50bV9tZGF5
ID0gKGRhdGFbMl0gLSAnMCcpICogMTAgKyAoZGF0YVszXSAtICcwJyk7CiAgICAgdGltZS50bV9o
b3VyID0gKGRhdGFbNF0gLSAnMCcpICogMTAgKyAoZGF0YVs1XSAtICcwJyk7CiAgICAgdGltZS50
bV9taW4gPSAoZGF0YVs2XSAtICcwJykgKiAxMCArIChkYXRhWzddIC0gJzAnKTsKQEAgLTMwNCw3
ICszMDQsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnk+IGNyZWF0ZVN1
bW1hcnlJbmZvKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcAogICAgIEJJTyBiaW8geyBwZW0gfTsK
ICAgICBhdXRvIHg1MDkgPSBiaW8ucmVhZFg1MDkoKTsKICAgICBpZiAoIXg1MDkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnkgc3VtbWFyeUluZm87CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggZDRiZDljZTgwN2U5YzdmMTcwYzI4OTdkY2JmYTcwM2UwM2M5OWMwOC4u
YjcxNTg2MzcyYWI2NmI4ZjFhYWY1ODM0MDE1ZjlkNzQ4ZmE4ZWVmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogICAg
ICAgICBhZGRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKHJlcXVlc3QpOwogCiAgICAgICAgIGF1dG8g
aW5jbHVkZVNlY3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikg
PyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwot
ICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJs
KCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyku
Zmlyc3Q7CisgICAgICAgIFN0cmluZyBjb29raWVIZWFkZXJGaWVsZCA9IGQtPm1fY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVx
dWVzdC51cmwoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmc6Ok5vKS5maXJzdDsKICAgICAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
Q29va2llLCBjb29raWVIZWFkZXJGaWVsZCk7CiAgICAgfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIE9w
dGlvbmFsPENyZWRlbnRpYWw+IFJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFsKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgaWYgKCFkLT5tX2luaXRpYWxDcmVkZW50aWFsLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGQtPm1faW5pdGlhbENyZWRlbnRpYWw7CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnJlc3RhcnRSZXF1ZXN0V2l0aENyZWRlbnRpYWwoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjYWU4YzQzZDYwZmNm
NmEzZDY5YzU4YTc0MzY1MTZmOTIzZDIyN2NiLi44YmViM2I1M2I5ZGJlNGE2NDdjYmIzMTczMWQx
NmE5NTMwZmZkMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRs
ZUltcGwoKQogT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9y
bVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAg
IGlmIChpc1N0cmVhbUludmFsaWRhdGVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV90b3RhbFNlbmREYXRh
U2l6ZSArIGxlbmd0aCA+IG1heEJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcAppbmRleCA0YjgyOWM2M2M4MDQ1YjQ2YjU0
MTg5Njg0YmQ4MzM5YTE2YTBhOGYyLi5hMGNmZWQwZDk4MGJmYWZhZGQ4NzcwNTY5NDU2MDZkN2E5
N2VjNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZUZyb21Tb3Vw
QXV0aEFuZFVSTChTb3VwQXV0aCogc291cEF1dGgsIGNvbgogICAgIGF1dG8gcG9ydCA9IGF1dGhV
UkwucG9ydCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKGhvc3QudG9T
dHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlT3IoMCkpLAorICAgIHJldHVybiBQ
cm90ZWN0aW9uU3BhY2UoaG9zdC50b1N0cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFs
dWVfb3IoMCkpLAogICAgICAgICBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSTCh1cmws
IHNvdXBfYXV0aF9pc19mb3JfcHJveHkoc291cEF1dGgpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChzb3VwX2F1dGhfZ2V0X3JlYWxtKHNvdXBBdXRoKSksIHNjaGVtZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZv
LmgKaW5kZXggYzQ0YjBhYzNhMjc0ZTZiMjJjOGUxNWU2NGYwYTI5ZTc0NTBhYjJiMy4uY2IyNjA4
NDY2NmI3MmU5YzhhZWY3ZTQwMjZkZGRmZTdlYjViYjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaApAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRD
ZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7IG5vdElt
cGxlbWVudGVkKCk7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxDZXJ0aWZp
Y2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2Nl
cnRpZmljYXRlOyB9CiAKQEAgLTgzLDEyICs4MywxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2Rl
cjxHUmVmUHRyPEdCeXRlQXJyYXk+PiB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzaXpl
OwogICAgICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgIGlmICghc2l6ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gYnl0ZUFycmF5ID0gYWRvcHRHUmVmKGdf
Ynl0ZV9hcnJheV9zaXplZF9uZXcoKnNpemUpKTsKICAgICAgICAgZ19ieXRlX2FycmF5X3NldF9z
aXplKGJ5dGVBcnJheS5nZXQoKSwgKnNpemUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0YSwgKnNpemUpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiBieXRlQXJyYXk7CiAgICAgfQogfTsKQEAgLTE0OSw3ICsxNDksNyBAQCB0ZW1w
bGF0ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0J5dGVBcnJheT4+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlz
dDsKICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAgICAgICAgaWYg
KCFjZXJ0aWZpY2F0ZXNEYXRhTGlzdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIGlmIChjZXJ0aWZpY2F0ZXNE
YXRhTGlzdC0+aXNFbXB0eSgpKQpAQCAtMTU3LDEzICsxNTcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAKICAgICAgICAgYXV0byBjZXJ0
aWZpY2F0ZSA9IGNlcnRpZmljYXRlRnJvbUNlcnRpZmljYXRlc0RhdGFMaXN0KGNlcnRpZmljYXRl
c0RhdGFMaXN0LnZhbHVlKCkpOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGNlcnRpZmljYXRlSW5mby5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQo
KSk7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHRsc0Vycm9yczsKICAgICAgICAgZGVj
b2RlciA+PiB0bHNFcnJvcnM7CiAgICAgICAgIGlmICghdGxzRXJyb3JzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mby5zZXRUTFNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRp
ZmljYXRlRmxhZ3M+KCp0bHNFcnJvcnMpKTsKIAogICAgICAgICByZXR1cm4gY2VydGlmaWNhdGVJ
bmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nv
b2tpZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZVNvdXAuY3BwCmluZGV4IDFmM2NkMjY3MzE3OWUxYWUwZDhkODIyNzdmYTAxOWQ5MTllMTVmNGQu
LjliYjljNzEyNGQ0MGUyYjAzMjQ0MDFjODlmZjU4N2FkNTU2ZTcyMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKQEAgLTcw
LDkgKzcwLDkgQEAgQ29va2llOjpDb29raWUoU291cENvb2tpZSogY29va2llKQogICAgICwgZG9t
YWluKFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUpKSkKICAg
ICAsIHBhdGgoU3RyaW5nOjpmcm9tVVRGOChzb3VwX2Nvb2tpZV9nZXRfcGF0aChjb29raWUpKSkK
ICNpZiBVU0UoU09VUDIpCi0gICAgLCBleHBpcmVzKHNvdXBfY29va2llX2dldF9leHBpcmVzKGNv
b2tpZSkgPyBtYWtlT3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihzb3VwX2RhdGVfdG9fdGlt
ZV90KHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tpZSkpKSAqIDEwMDApIDogV1RGOjpudWxs
b3B0KQorICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpID8gc3Rk
OjptYWtlX29wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oc291cF9kYXRlX3RvX3RpbWVfdChz
b3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IHN0ZDo6bnVsbG9wdCkK
ICNlbHNlCi0gICAgLCBleHBpcmVzKHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tpZSkgPyBt
YWtlT3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihnX2RhdGVfdGltZV90b191bml4KHNvdXBf
Y29va2llX2dldF9leHBpcmVzKGNvb2tpZSkpKSAqIDEwMDApIDogV1RGOjpudWxsb3B0KQorICAg
ICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpID8gc3RkOjptYWtlX29w
dGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oZ19kYXRlX3RpbWVfdG9fdW5peChzb3VwX2Nvb2tp
ZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IHN0ZDo6bnVsbG9wdCkKICNlbmRpZgog
ICAgICwgaHR0cE9ubHkoc291cF9jb29raWVfZ2V0X2h0dHBfb25seShjb29raWUpKQogICAgICwg
c2VjdXJlKHNvdXBfY29va2llX2dldF9zZWN1cmUoY29va2llKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKaW5kZXggMjc0MzI2ODBmYzUwMWJkYTE1MzY2MjRlMDJhNDI2MTY5YzdmNTY1ZC4uMDcxNzY2
MzEzOWNjNDQ0NmQ1YzBhZDYyMmYzNjcwYTkzMmIyZDhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTMyNCwxMSArMzI0LDExIEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRJZ25v
cmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiBPcHRpb25hbDxSZXNvdXJjZUVycm9y
PiBTb3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVS
TCwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxz
RXJyb3JzKQogewogICAgIGlmIChtX2lnbm9yZVRMU0Vycm9ycyB8fCAhdGxzRXJyb3JzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBpdCA9IGFsbG93ZWRDZXJ0aWZpY2F0ZXMoKS5maW5kKHJlcXVlc3RVUkwuaG9z
dCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKGl0ICE9IGFsbG93ZWRDZXJ0
aWZpY2F0ZXMoKS5lbmQoKSAmJiBpdC0+dmFsdWUuY29udGFpbnMoY2VydGlmaWNhdGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKHJlcXVlc3RVUkwsIHRsc0Vycm9y
cywgY2VydGlmaWNhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9FbmNvZGluZ1RhYmxlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Vu
Y29kaW5nVGFibGVzLmNwcAppbmRleCA1YzA4M2YxMTYzNzFhODQ3MTFjY2FmMTI3MmE0YjNkNzE4
MzI5NjBjLi42NTVkZjU2MjJlMWMzMDUyZGM1MWNlOGQxYmM3NTk1YjdhNDQ0ZmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmNwcApAQCAtNzA4
Miw3ICs3MDgyLDcgQEAgY29uc3Qgc3RkOjphcnJheTxzdGQ6OnBhaXI8dWludDE2X3QsIFVDaGFy
PiwgMTcwNDg+JiBldWNLUigpCiAgICAgICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJP
X0VSUk9SOwogICAgICAgICAgICAgdWNudl90b1VuaWNvZGUoaWN1Q29udmVydGVyLmdldCgpLCAm
b3V0cHV0LCBvdXRwdXQgKyAyLCAmaW5wdXQsIGlucHV0ICsgc2l6ZW9mKGljdUlucHV0KSwgbnVs
bHB0ciwgdHJ1ZSwgJmVycm9yKTsKICAgICAgICAgICAgIGlmIChpY3VPdXRwdXRbMF0gPT0gMHhG
RkZEKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB7eyBwb2ludGVyLCBp
Y3VPdXRwdXRbMF0gfX07CiAgICAgICAgIH07CiAgICAgICAgIHNpemVfdCBhcnJheUluZGV4ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJs
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaAppbmRl
eCAzZjdkMGIwMmUwNzEyY2MxMWZlY2M2ZDRlYjFmNTgxMGQzYzE5MDQ0Li5lNWJkNTIyZjhhNjhk
Y2VmOGViZGY0ODk2ZTliMTI2NzA3NmIxZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5oCkBAIC0xMTYsMTEgKzExNiwxMSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmlu
ZEZpcnN0SW5Tb3J0ZQogewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19pbnRlZ3JhbF92PEtl
eVR5cGU+KSB7CiAgICAgICAgIGlmIChrZXkgIT0gZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0
aW9uKS0+Zmlyc3QpKGtleSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYXV0byBpdGVyYXRvciA9
IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihjb2xsZWN0aW9uKSwgc3RkOjplbmQoY29sbGVj
dGlvbiksIG1ha2VGaXJzdEFkYXB0ZXIoa2V5KSwgQ29tcGFyZUZpcnN0IHsgfSk7CiAgICAgaWYg
KGl0ZXJhdG9yID09IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pIHx8IGtleSA8IGl0ZXJhdG9yLT5maXJz
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnNlY29uZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwCmluZGV4IGZjMmE5MjExMDAyMGQ1OWU0
M2E4MzBhZTM0NTQxMDJiNzc5NzI0NTYuLjIxMTdlMWE0YjkwNTIzMzFjZGNkNjQxMjI0ZTc2MzUw
YjJlOWVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENv
ZGVjQ0pLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NK
Sy5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjpkZWNvZGVDb21t
b24oY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1cwogICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsK
IAotICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZSht
X3ByZXBlbmRlZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olllcykg
eworICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZSht
X3ByZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olllcykg
ewogICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFj
ZW1lbnRDaGFyYWN0ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTIwMCw3ICsy
MDAsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjpkZWNvZGVDb21tb24oY29uc3QgdWludDhfdCog
Ynl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1cwogICAgICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAo
bV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRC
eXRlLCBXVEY6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsKKyAgICAgICAg
aWYgKG1fcHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVu
ZGVkQnl0ZSwgc3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CiAgICAg
ICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlcGxh
Y2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDI3
LDcgKzQyNyw3IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1
aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgU3RyaW5nQnVpbGRlciBy
ZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgaWYgKG1f
cHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVkQnl0
ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CisgICAgaWYgKG1f
cHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVkQnl0
ZSwgc3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CiAgICAgICAgIHNh
d0Vycm9yID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rl
cik7CiAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDM1LDcgKzQzNSw3IEBAIFN0cmlu
ZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6
ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0
ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVk
Qnl0ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzICYmIHN0b3BPbkVy
cm9yKSB7CisgICAgaWYgKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFy
c2VyKCpzdGQ6OmV4Y2hhbmdlKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSwgc3RkOjpu
dWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzICYmIHN0b3BPbkVycm9yKSB7CiAgICAg
ICAgIHNhd0Vycm9yID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENo
YXJhY3Rlcik7CiAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDUyLDcgKzQ1Miw3IEBA
IFN0cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50
b1N0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChtX3ByZXBl
bmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3ByZXBlbmRlZEJ5dGUsIFdU
Rjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcykgeworICAgICAgICBpZiAobV9w
cmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRl
LCBzdGQ6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsKICAgICAgICAgICAg
IHNhd0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRD
aGFyYWN0ZXIpOwogICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKSB7CkBAIC00NjAsNyArNDYw
LDcgQEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6aXNvMjAyMkpQRGVjb2RlKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGYKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1f
aXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdl
KG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9
PSBTYXdFcnJvcjo6WWVzICYmIHN0b3BPbkVycm9yKSB7CisgICAgICAgIGlmIChtX2lzbzIwMjJK
UFNlY29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIw
MjJKUFNlY29uZFByZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJy
b3I6OlllcyAmJiBzdG9wT25FcnJvcikgewogICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAg
ICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTg1NCw3ICs4NTQsNyBAQCBzdGF0aWMgY29uc3Qg
c3RkOjphcnJheTxzdGQ6OnBhaXI8dWludDMyX3QsIFVDaGFyMzI+LCAyMDc+JiBnYjE4MDMwUmFu
Z2VzKCkKIHN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29kZVBvaW50KHVp
bnQzMl90IHBvaW50ZXIpCiB7CiAgICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYgcG9pbnRlciA8
IDE4OTAwMCkgfHwgcG9pbnRlciA+IDEyMzc1NzUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHBvaW50ZXIgPT0gNzQ1
NykKICAgICAgICAgcmV0dXJuIDB4RTdDNzsKICAgICBhdXRvIHVwcGVyQm91bmQgPSBzdGQ6OnVw
cGVyX2JvdW5kKGdiMTgwMzBSYW5nZXMoKS5iZWdpbigpLCBnYjE4MDMwUmFuZ2VzKCkuZW5kKCks
IG1ha2VGaXJzdEFkYXB0ZXIocG9pbnRlciksIENvbXBhcmVGaXJzdCB7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCAyNzE2MDlh
ZjM0MmI2YTgxZjkxZTM5MmFkMmVkYTRjNjBlOTQxNjdiLi5jMWMwZDc1NGM0OGRlMzAxODBkOTc5
NDM3YTk3MGUwNWJjZmU1MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjE2LmNwcApAQCAtNzcsNyArNzcsNyBAQCBTdHJpbmcgVGV4dENvZGVjVVRG
MTY6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwg
Ym9vbAogICAgICAgICBpZiAoc3RkOjpleGNoYW5nZShtX3Nob3VsZFN0cmlwQnl0ZU9yZGVyTWFy
aywgZmFsc2UpICYmIGNvZGVVbml0ID09IGJ5dGVPcmRlck1hcmspCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGlmIChtX2xlYWRTdXJyb2dhdGUpIHsKLSAgICAgICAgICAgIGF1dG8gbGVh
ZFN1cnJvZ2F0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZFN1cnJvZ2F0ZSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIGF1dG8gbGVhZFN1cnJvZ2F0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVh
ZFN1cnJvZ2F0ZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmIChVMTZfSVNfVFJBSUwo
Y29kZVVuaXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3RlcihVMTZf
R0VUX1NVUFBMRU1FTlRBUlkobGVhZFN1cnJvZ2F0ZSwgY29kZVVuaXQpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjE2Ojpk
ZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wK
ICAgICB9OwogCiAgICAgaWYgKG1fbGVhZEJ5dGUgJiYgcCA8IGVuZCkgewotICAgICAgICBhdXRv
IGxlYWRCeXRlID0gKnN0ZDo6ZXhjaGFuZ2UobV9sZWFkQnl0ZSwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgYXV0byBsZWFkQnl0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZEJ5dGUsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIGlmIChtX2xpdHRsZUVuZGlhbikKICAgICAgICAgICAgIHByb2Nlc3NC
eXRlc0xFKGxlYWRCeXRlLCBwWzBdKTsKICAgICAgICAgZWxzZQpAQCAtMTMzLDggKzEzMyw4IEBA
IFN0cmluZyBUZXh0Q29kZWNVVEYxNjo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoLCBib29sIGZsdXNoLCBib29sCiAgICAgaWYgKGZsdXNoKSB7CiAgICAgICAgIG1fc2hv
dWxkU3RyaXBCeXRlT3JkZXJNYXJrID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2xlYWRCeXRlIHx8
IG1fbGVhZFN1cnJvZ2F0ZSkgewotICAgICAgICAgICAgbV9sZWFkQnl0ZSA9IFdURjo6bnVsbG9w
dDsKLSAgICAgICAgICAgIG1fbGVhZFN1cnJvZ2F0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIG1fbGVhZEJ5dGUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2xlYWRTdXJyb2dh
dGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKaW5kZXggNjZlYTg2MjcwZWFjNzRm
ZTVhMzQ5MmU4OTI0MTQ4ODUzMGZhNWQ5Zi4uODFkMjJmMmQzMDViZDhlY2I0YTA5MDZhMzFlMGFk
ZjJiMTcxM2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RmxhZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCkBA
IC0zMTQsNzcgKzMxNCw3NyBAQCBPcHRpb25hbDxGb250VmFyaWFudFNldHRpbmdzPiBGb250VmFy
aWFudFNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250
VmFyaWFudExpZ2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gY29tbW9u
TGlnYXR1cmVzOwogICAgIGlmICghY29tbW9uTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2Rl
ciA+PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0
dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2Fs
TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAo
IWhpc3RvcmljYWxMaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0
dXJlcz4gY29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFsQWx0
ZXJuYXRlczsKICAgICBpZiAoIWNvbnRleHR1YWxBbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udFZhcmlhbnRQb3NpdGlvbj4gcG9zaXRpb247CiAgICAgZGVjb2RlciA+PiBwb3NpdGlv
bjsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRDYXBz
PiBjYXBzOwogICAgIGRlY29kZXIgPj4gY2FwczsKICAgICBpZiAoIWNhcHMpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+IG51bWVyaWNGaWd1cmU7CiAgICAgZGVj
b2RlciA+PiBudW1lcmljRmlndXJlOwogICAgIGlmICghbnVtZXJpY0ZpZ3VyZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc+IG51bWVyaWNTcGFjaW5nOwogICAg
IGRlY29kZXIgPj4gbnVtZXJpY1NwYWNpbmc7CiAgICAgaWYgKCFudW1lcmljU3BhY2luZykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBudW1lcmljRnJhY3Rp
b247CiAgICAgZGVjb2RlciA+PiBudW1lcmljRnJhY3Rpb247CiAgICAgaWYgKCFudW1lcmljRnJh
Y3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiBudW1l
cmljT3JkaW5hbDsKICAgICBkZWNvZGVyID4+IG51bWVyaWNPcmRpbmFsOwogICAgIGlmICghbnVt
ZXJpY09yZGluYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTbGFzaGVk
WmVybz4gbnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4gbnVtZXJpY1NsYXNoZWRa
ZXJvOwogICAgIGlmICghbnVtZXJpY1NsYXNoZWRaZXJvKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9u
dFZhcmlhbnRBbHRlcm5hdGVzPiBhbHRlcm5hdGVzOwogICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRl
czsKICAgICBpZiAoIWFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVh
c3RBc2lhblZhcmlhbnQ+IGVhc3RBc2lhblZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNp
YW5WYXJpYW50OwogICAgIGlmICghZWFzdEFzaWFuVmFyaWFudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PEZvbnRWYXJpYW50RWFzdEFzaWFuV2lkdGg+IGVhc3RBc2lhbldpZHRoOwogICAgIGRlY29kZXIg
Pj4gZWFzdEFzaWFuV2lkdGg7CiAgICAgaWYgKCFlYXN0QXNpYW5XaWR0aCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieT4gZWFzdEFzaWFuUnVieTsKICAgICBkZWNv
ZGVyID4+IGVhc3RBc2lhblJ1Ynk7CiAgICAgaWYgKCFlYXN0QXNpYW5SdWJ5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHt7CiAgICAgICAgICpjb21tb25MaWdhdHVyZXMsCkBAIC00NDIsMjIgKzQ0MiwyMiBA
QCBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcz4gRm9udFZhcmlhbnRMaWdhdHVy
ZXNWYWx1ZXM6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1
cmVzPiBjb21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBjb21tb25MaWdhdHVyZXM7CiAg
ICAgaWYgKCFjb21tb25MaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGRpc2NyZXRp
b25hcnlMaWdhdHVyZXM7CiAgICAgaWYgKCFkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGhpc3RvcmljYWxMaWdhdHVyZXM7CiAg
ICAgZGVjb2RlciA+PiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGlmICghaGlzdG9yaWNhbExp
Z2F0dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBjb250ZXh0
dWFsQWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IGNvbnRleHR1YWxBbHRlcm5hdGVzOwogICAg
IGlmICghY29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmNvbW1vbkxp
Z2F0dXJlcywgKmRpc2NyZXRpb25hcnlMaWdhdHVyZXMsICpoaXN0b3JpY2FsTGlnYXR1cmVzLCAq
Y29udGV4dHVhbEFsdGVybmF0ZXMgfX07CiB9CkBAIC01MDMsMjcgKzUwMywyNyBAQCBPcHRpb25h
bDxGb250VmFyaWFudE51bWVyaWNWYWx1ZXM+IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlczo6ZGVj
b2RlKERlY29kZXImIGRlYwogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4g
ZmlndXJlOwogICAgIGRlY29kZXIgPj4gZmlndXJlOwogICAgIGlmICghZmlndXJlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gc3BhY2luZzsKICAgICBkZWNv
ZGVyID4+IHNwYWNpbmc7CiAgICAgaWYgKCFzcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9u
dFZhcmlhbnROdW1lcmljRnJhY3Rpb24+IGZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gZnJhY3Rp
b247CiAgICAgaWYgKCFmcmFjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVt
ZXJpY09yZGluYWw+IG9yZGluYWw7CiAgICAgZGVjb2RlciA+PiBvcmRpbmFsOwogICAgIGlmICgh
b3JkaW5hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJv
PiBzbGFzaGVkWmVybzsKICAgICBkZWNvZGVyID4+IHNsYXNoZWRaZXJvOwogICAgIGlmICghc2xh
c2hlZFplcm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmZpZ3VyZSwgKnNwYWNpbmcsICpmcmFjdGlv
biwgKm9yZGluYWwsICpzbGFzaGVkWmVybyB9fTsKIH0KQEAgLTU2MSwxNyArNTYxLDE3IEBAIE9w
dGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzPiBGb250VmFyaWFudEVhc3RBc2lhblZh
bHVlczo6ZGVjb2RlKERlY29kZXImCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5W
YXJpYW50PiB2YXJpYW50OwogICAgIGRlY29kZXIgPj4gdmFyaWFudDsKICAgICBpZiAoIXZhcmlh
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB3aWR0aDsK
ICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CiAgICAgZGVjb2RlciA+PiBydWJ5Owog
ICAgIGlmICghcnVieSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqdmFyaWFudCwgKndpZHRoLCAqcnVi
eSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAppbmRleCBjYzgwMDNmNWUxNTMyMDVhYzA3NWFkMDY5NTQyMTU5NTAxOTlkZWJjLi45Y2RhMzQ5
MmI2OTY1NjgyOGQ2MWU1NjM4NGVjMTY1YjZkMTllYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgT3B0aW9u
YWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSgpCiAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDBmNzc2YzQyODZk
YWZkZmRkNjlmZjAyYTI1ZGViNzVmZWFhM2IxODMuLjJmYzIxMTE1N2RhM2UxYmZlMGRmMWE1ZmIw
YzYyOWJjYTgwODM3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1Bs
YXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgK
QEAgLTI5OCwxMyArMjk4LDEzIEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1
YXRlcm5pb24+IERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb246CiB7CiAgICAgRGV2
aWNlOjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRlcm5pb247CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24ueCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmbG9hdFF1YXRlcm5pb24ueSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
bG9hdFF1YXRlcm5pb24ueikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9hdFF1YXRl
cm5pb24udykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGZsb2F0UXVhdGVybmlvbjsKIH0KIApAQCAtMzE5LDkg
KzMxOSw5IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBEZXZpY2U6OkZyYW1l
RGF0YTo6UG9zZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiB7CiAgICAgRGV2aWNlOjpGcmFtZURh
dGE6OlBvc2UgcG9zZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2UucG9zaXRpb24pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zZS5vcmllbnRhdGlvbikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHBvc2U7CiB9CiAKQEAgLTMzNiwxMyArMzM2LDEzIEBAIE9wdGlvbmFsPERldmljZTo6RnJh
bWVEYXRhOjpGb3Y+IERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyCiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OkZvdiBmb3Y7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmb3YudXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LmRvd24pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LmxlZnQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZm92LnJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZm92OwogfQogCkBAIC0zNzQsMzAg
KzM3NCwzMCBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldz4gRGV2aWNlOjpGcmFt
ZURhdGE6OlZpZXc6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewogICAgIFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpWaWV3IHZpZXc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aWV3
Lm9mZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGhhc0ZvdjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc0ZvdikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzRm92KSB7CiAgICAgICAgIFBsYXRmb3JtWFI6OkRl
dmljZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZv
dikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKGZvdikg
fTsKICAgICAgICAgcmV0dXJuIHZpZXc7CiAgICAgfQogCiAgICAgYm9vbCBoYXNQcm9qZWN0aW9u
TWF0cml4OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUHJvamVjdGlvbk1hdHJpeCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoaGFzUHJvamVjdGlvbk1hdHJpeCkgewogICAgICAgICBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0cml4OwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
Ojpwcm9qZWN0aW9uTWF0cml4U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBmbG9hdCBmOwogICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBwcm9qZWN0aW9uTWF0cml4W2ldID0gZjsKICAgICAgICAgfQogICAgICAgICB2aWV3
LnByb2plY3Rpb24gPSB7IFdURk1vdmUocHJvamVjdGlvbk1hdHJpeCkgfTsKQEAgLTQyMCw5ICs0
MjAsOSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzPiBEZXZp
Y2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzOgogewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YWdlUGFyYW1ldGVycy5ib3VuZHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzdGFnZVBhcmFt
ZXRlcnM7CiB9CiAKQEAgLTQ0MSwxMSArNDQxLDExIEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVE
YXRhOjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZShEZWNv
CiB7CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSBsYXllckRh
dGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllckRhdGEub3BhcXVlVGV4dHVyZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjaWYgVVNFKElPU1VSRkFDRV9GT1JfWFJfTEFZRVJfREFUQSkKICAgICBXVEY6Ok1hY2hTZW5k
UmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VT
ZW5kUmlnaHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXll
ckRhdGE7CkBAIC00NzEsMjUgKzQ3MSwyNSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YT4g
RGV2aWNlOjpGcmFtZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShmcmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZyYW1lRGF0YS5zaG91bGRSZW5kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZnJhbWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZyYW1lRGF0YS5vcmlnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVE
YXRhLmZsb29yVHJhbnNmb3JtKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0
YS5zdGFnZVBhcmFtZXRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRh
LnZpZXdzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5sYXllcnMpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIGZyYW1lRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGQzYTgwYjJl
MzM5N2U1N2VjODBiMjI1MzNjOWIxZTMzOTUyMjg3ZWMuLjNkZDE2Y2Y2MDBjNmEzNDVkZGJjZDFm
M2I2NzBlNjNkZmUyNzQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIE9w
dGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT4gT3BlblhSSW5wdXRTb3VyY2U6
OmdldElucHV0U291cmNlKFhyU3BhCiAKICAgICAvLyBUcmlnZ2VyIGlzIG1hbmRhdG9yeSBpbiB4
ci1zdGFuZGFyZCBtYXBwaW5nLgogICAgIGlmIChidXR0b25zLmlzRW1wdHkoKSB8fCAhYnV0dG9u
cy5maXJzdCgpLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1
dHRvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGJ1dHRvbnNbaV0pIHsKQEAgLTI5Myw3
ICsyOTMsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+
IE9wZW5YUklucHV0U291cmNlOjpnZXRCdXR0b24oT3BlbgogewogICAgIGF1dG8gaXQgPSBtX2J1
dHRvbkFjdGlvbnMuZmluZChidXR0b25UeXBlKTsKICAgICBpZiAoaXQgPT0gbV9idXR0b25BY3Rp
b25zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9u
IHJlc3VsdDsKICAgICBib29sIGhhc1ZhbHVlID0gZmFsc2U7CkBAIC0zMTAsMTggKzMxMCwxOCBA
QCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IE9wZW5YUklu
cHV0U291cmNlOjpnZXRCdXR0b24oT3BlbgogICAgIHF1ZXJ5QWN0aW9uU3RhdGUoYWN0aW9ucy50
b3VjaCwgcmVzdWx0LnRvdWNoZWQsIHJlc3VsdC5wcmVzc2VkKTsKICAgICBxdWVyeUFjdGlvblN0
YXRlKGFjdGlvbnMudmFsdWUsIHJlc3VsdC5wcmVzc2VkVmFsdWUsIHJlc3VsdC5wcmVzc2VkID8g
MS4wIDogMC4wKTsKIAotICAgIHJldHVybiBoYXNWYWx1ZSA/ICBtYWtlT3B0aW9uYWwocmVzdWx0
KSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaGFzVmFsdWUgPyAgc3RkOjptYWtlX29wdGlv
bmFsKHJlc3VsdCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFhyVmVjdG9yMmY+IE9w
ZW5YUklucHV0U291cmNlOjpnZXRBeGlzKE9wZW5YUkF4aXNUeXBlIGF4aXNUeXBlKSBjb25zdAog
ewogICAgIGF1dG8gaXQgPSBtX2F4aXNBY3Rpb25zLmZpbmQoYXhpc1R5cGUpOwogICAgIGlmIChp
dCA9PSBtX2F4aXNBY3Rpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgWHJWZWN0b3IyZiBheGlzOwogICAg
IGlmIChYUl9GQUlMRUQoZ2V0QWN0aW9uU3RhdGUoaXQtPnZhbHVlLCAmYXhpcykpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIGF4aXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUkxheWVyLmNwcAppbmRleCA3ODNjMzM3ZTJlMDFlMWEyMDlkNTY1MmQ0MzljMzAw
MTc5NjI5M2EyLi5hZmUzNDczYTBlZjBkMGQ2MWNkNGRmZGZiZjg0NzVkYmRlM2Y1YmRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4g
T3BlblhSTGF5ZXJQcm9qZWN0aW9uOjpzdGFydEZyYW1lKCkKIHsKICAgICBhdXRvIHRleHR1cmUg
PSBtX3N3YXBjaGFpbi0+YWNxdWlyZUltYWdlKCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgeyAqdGV4dHVyZSB9OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBj
aGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNo
YWluLmNwcAppbmRleCA4ZTRhZGI2ZWQxMmE1MjcyMWVkMTA0YjhhM2UwOGNlNjk5MzFiOWZjLi5m
ZTlkYWM5MWFmZmUyYjYzNjdjMmZiYjk3OTcwNDEzZjYwNjQ5OTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcApAQCAt
ODMsMTQgKzgzLDE0IEBAIE9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IE9wZW5YUlN3YXBjaGFp
bjo6YWNxdWlyZUltYWdlKCkKICAgICBhdXRvIGFjcXVpcmVJbmZvID0gY3JlYXRlU3RydWN0dXJl
PFhyU3dhcGNoYWluSW1hZ2VBY3F1aXJlSW5mbywgWFJfVFlQRV9TV0FQQ0hBSU5fSU1BR0VfQUNR
VUlSRV9JTkZPPigpOwogICAgIHVpbnQzMl90IHN3YXBjaGFpbkltYWdlSW5kZXggPSAwOwogICAg
IGF1dG8gcmVzdWx0ID0geHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UobV9zd2FwY2hhaW4sICZhY3F1
aXJlSW5mbywgJnN3YXBjaGFpbkltYWdlSW5kZXgpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVz
dWx0LCAieHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UiLCBtX2luc3RhbmNlLCBXVEY6Om51bGxvcHQp
OworICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJBY3F1aXJlU3dhcGNoYWluSW1hZ2Ui
LCBtX2luc3RhbmNlLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3dhcGNo
YWluSW1hZ2VJbmRleCA8IG1faW1hZ2VCdWZmZXJzLnNpemUoKSk7CiAKICAgICBhdXRvIHdhaXRJ
bmZvID0gY3JlYXRlU3RydWN0dXJlPFhyU3dhcGNoYWluSW1hZ2VXYWl0SW5mbywgWFJfVFlQRV9T
V0FQQ0hBSU5fSU1BR0VfV0FJVF9JTkZPPigpOwogICAgIHdhaXRJbmZvLnRpbWVvdXQgPSBYUl9J
TkZJTklURV9EVVJBVElPTjsKICAgICByZXN1bHQgPSB4cldhaXRTd2FwY2hhaW5JbWFnZShtX3N3
YXBjaGFpbiwgJndhaXRJbmZvKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2Fp
dFN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgV1RGOjpudWxsb3B0KTsKKyAgICBSRVRVUk5f
SUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdFN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgc3Rk
OjpudWxsb3B0KTsKIAogICAgIG1fYWNxdWlyZWRUZXh0dXJlID0gbV9pbWFnZUJ1ZmZlcnNbc3dh
cGNoYWluSW1hZ2VJbmRleF0uaW1hZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEu
Y3BwCmluZGV4IGE3ZTQ3YzZkZjkxYjMwZDBmOTliMWQzODMxYjdjM2YyZDhmMGJlZjkuLmZjMTFj
YmNiZjE0MTJmMjE1ODdkODljMjU4M2EyNWMyOTM4MzY0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBWZWN0b3I8UGx1Z2luSW5m
bz4mIFBsdWdpbkRhdGE6OndlYlZpc2libGVQbHVnaW5zKCkgY29uc3QKICAgICBhdXRvIGRvY3Vt
ZW50VVJMID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkgPyBtX3BhZ2UubWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+dXJsKCkgOiBVUkwgeyB9OwogICAgIGlmICghZG9jdW1lbnRVUkwuaXNO
dWxsKCkgJiYgIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtX2NhY2hlZFZpc2libGVQbHVn
aW5zLnBhZ2VVUkwsIGRvY3VtZW50VVJMKSkgewogICAgICAgICBtX2NhY2hlZFZpc2libGVQbHVn
aW5zLnBhZ2VVUkwgPSBXVEZNb3ZlKGRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jYWNoZWRWaXNp
YmxlUGx1Z2lucy5wbHVnaW5MaXN0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2NhY2hlZFZp
c2libGVQbHVnaW5zLnBsdWdpbkxpc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYg
KCFtX2NhY2hlZFZpc2libGVQbHVnaW5zLnBsdWdpbkxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luRGF0YS5oCmluZGV4IGVhYTY0M2U0NWU4MTAzYjJhZTQ2ZWZiYzE1M2U3MjlhNzkyZGJjNWUu
LmRjYjBlNTNjMjczNzkwZjYxMzJmYWE3MmM0ZDZiNjdmZjk1Mjg3Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luRGF0YS5oCkBAIC0xNDEsMTIgKzE0MSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gU3VwcG9y
dGVkUGx1ZwogICAgIE9wdGlvbmFsPFN0cmluZz4gbWF0Y2hpbmdEb21haW47CiAgICAgZGVjb2Rl
ciA+PiBtYXRjaGluZ0RvbWFpbjsKICAgICBpZiAoIW1hdGNoaW5nRG9tYWluKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcGx1Z2lu
SWRlbnRpZmllcjsKICAgICBpZiAoIXBsdWdpbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllciB7IFdURk1vdmUobWF0Y2hpbmdEb21haW4udmFsdWUo
KSksIFdURk1vdmUocGx1Z2luSWRlbnRpZmllci52YWx1ZSgpKSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCBlMzUxOGJiNTJiYjE0MTMz
YTliZTg5Mzc5MzUwNzRmY2VjNWNhNjJlLi5kNjg2ZmFjOTcwNzgwZWY3OTgyMDZjYzkwZjU3MDAz
YWJkMDEzY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
LmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQog
ICAgICAgICAgICAgICAgIG51bUF1dG9FbXB0eUNlbGxzT25seSsrOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgKytudW1iZXJPZk5vbkVtcHR5QXV0bzsKLSAgICAgICAgICAg
ICAgICB0b3RhbEF1dG8gPSB0b3RhbEF1dG8udmFsdWVPcigwLmYpICsgbV9sYXlvdXRTdHJ1Y3Rb
aV0uZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIHRvdGFsQXV0byA9
IHRvdGFsQXV0by52YWx1ZV9vcigwLmYpICsgbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4
TG9naWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIGFsbG9jQXV0byArPSBjZWxsTG9naWNhbFdp
ZHRoOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0JyZWFrTGluZXMuaAppbmRleCAwNTM5YzZhNDMzZDlmYWViZjUxZjIxNDVlN2NmMzEyMzg5
MDIwMTEzLi5hZmI3MDA0Njg4YzQxMmU2MjY0YWFmYjJkZTFlOGNlMTQyNDZkMjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUg
dW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6
eUJyZWFrSXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgIGlmIChicmVha0l0ZXJhdG9yKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmco
YnJlYWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBVQlJLX0RPTkUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dEJyZWFrID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IGNhbmRpZGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID49
IHByaW9yQ29udGV4dExlbmd0aCk7CkBAIC0xOTUsNyArMTk1LDcgQEAgaW5saW5lIHVuc2lnbmVk
IG5leHRCcmVha2FibGVQb3NpdGlvbkJyZWFrQ2hhcmFjdGVyKExhenlMaW5lQnJlYWtJdGVyYXRv
ciYgbGF6eUIKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk3ODc2CiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdGVyYXRvcihzdHJp
bmdWaWV3KTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dCA9IHVicmtfZm9sbG93aW5nKGl0
ZXJhdG9yLCBzdGFydFBvc2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dC52YWx1ZU9yKHN0cmluZ1Zp
ZXcubGVuZ3RoKCkpOworICAgIHJldHVybiBuZXh0LnZhbHVlX29yKHN0cmluZ1ZpZXcubGVuZ3Ro
KCkpOwogfQogCiBpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3Im
IGxhenlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBPcHRpb25hbDx1bnNp
Z25lZD4mIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29sIGNhblVzZVNob3J0Y3V0
LCBib29sIGtlZXBBbGxXb3JkcywgYm9vbCBicmVha0FueXdoZXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTVmFsdWVLZXkuaAppbmRleCAyZGJmNzQ2MDk4MjFmNTA1YjQwZjMzMWU2NmIxN2U2
NzA2YmFiZDE3Li4xNzY5NDcyMmU3MTYwMTAyYjdhMDJjMjMzMWJhZjRkNmY3Yzk4ODVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFsdWVLZXkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFsdWVLZXkuaApAQCAtNjAsMTUgKzYwLDE1IEBAIE9w
dGlvbmFsPENTU1ZhbHVlS2V5PiBDU1NWYWx1ZUtleTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNzc1ZhbHVlSUQ7CiAgICAgZGVjb2RlciA+PiBjc3NW
YWx1ZUlEOwogICAgIGlmICghY3NzVmFsdWVJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxib29sPiB1c2VE
YXJrQXBwZWFyYW5jZTsKICAgICBkZWNvZGVyID4+IHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlm
ICghdXNlRGFya0FwcGVhcmFuY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNlRWxldmF0ZWRV
c2VySW50ZXJmYWNlTGV2ZWw7CiAgICAgZGVjb2RlciA+PiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZh
Y2VMZXZlbDsKICAgICBpZiAoIXVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqY3NzVmFsdWVJRCksIFdURk1vdmUoKnVzZURhcmtBcHBlYXJh
bmNlKSwgV1RGTW92ZSgqdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpIH0gfTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAppbmRleCAyZmY1ZTkzNjJmNmY0MjZm
NzY5Yjk2YzliOGEyYTMxMzc4YzRmNzE4Li42YTFhYzRlM2IzOTVmODI4NGVjN2E3YzZkYmE2MzEw
OThlZWFkODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtMTQz
LDcgKzE0Myw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UmVnaW9uPiByZWdpb247CiAgICAgZGVjb2Rl
ciA+PiByZWdpb247CiAgICAgaWYgKCFyZWdpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdmVudFJlZ2lvbiBldmVu
dFJlZ2lvbjsKICAgICBldmVudFJlZ2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CkBA
IC0xNTIsMTQgKzE1MiwxNCBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJlZ2lvbj4gd2hlZWxFdmVudExp
c3RlbmVyUmVnaW9uOwogICAgIGRlY29kZXIgPj4gd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOwog
ICAgIGlmICghd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXZlbnRSZWdpb24u
bV93aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBXVEZNb3ZlKCp3aGVlbEV2ZW50TGlzdGVuZXJS
ZWdpb24pOwogCiAgICAgT3B0aW9uYWw8UmVnaW9uPiBub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uOwogICAgIGRlY29kZXIgPj4gbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJl
Z2lvbjsKICAgICBpZiAoIW5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBldmVudFJlZ2lvbi5tX25vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBX
VEZNb3ZlKCpub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKICNlbmRpZgpAQCAt
MTY4LDcgKzE2OCw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbj4+IHRvdWNoQWN0
aW9uUmVnaW9uczsKICAgICBkZWNvZGVyID4+IHRvdWNoQWN0aW9uUmVnaW9uczsKICAgICBpZiAo
IXRvdWNoQWN0aW9uUmVnaW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGV2ZW50UmVnaW9uLm1fdG91Y2hBY3Rpb25S
ZWdpb25zID0gV1RGTW92ZSgqdG91Y2hBY3Rpb25SZWdpb25zKTsKICNlbmRpZgpAQCAtMTc3LDcg
KzE3Nyw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8UmVnaW9uPj4gZWRpdGFibGVSZWdp
b247CiAgICAgZGVjb2RlciA+PiBlZGl0YWJsZVJlZ2lvbjsKICAgICBpZiAoIWVkaXRhYmxlUmVn
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGV2ZW50UmVnaW9uLm1fZWRpdGFibGVSZWdpb24gPSBXVEZNb3ZlKCplZGl0
YWJsZVJlZ2lvbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRp
bmdPYmplY3RzLmNwcAppbmRleCBhYzU5ZTNjYWJmMTMxZmY2M2FmNGQ2ZTk3YzNhZWRjNjQ0NGZk
NzRhLi40MjljMGE5MjZmNzlhZWE2MjQ1NjBjNmExZWEzYmQwZTUyOTI2Mjg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjIyLDggKzIyMiw4
IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGhpZ2hWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIExh
eW91dFVuaXQ6Om1heCgpOyB9CiAgICAgdm9pZCBjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2
YWxUeXBlJik7CiAKLSAgICBMYXlvdXRVbml0IG5leHRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXh0TG9naWNhbEJvdHRvbS52YWx1ZU9yKDApOyB9Ci0gICAgTGF5b3V0VW5pdCBu
ZXh0U2hhcGVMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2hhcGVMb2dpY2Fs
Qm90dG9tLnZhbHVlT3IobmV4dExvZ2ljYWxCb3R0b20oKSk7IH0KKyAgICBMYXlvdXRVbml0IG5l
eHRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0TG9naWNhbEJvdHRvbS52YWx1
ZV9vcigwKTsgfQorICAgIExheW91dFVuaXQgbmV4dFNoYXBlTG9naWNhbEJvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbS52YWx1ZV9vcihuZXh0TG9naWNhbEJv
dHRvbSgpKTsgfQogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8Y29uc3QgUmVuZGVyQmxvY2tGbG93
PiBtX3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRC
YXNlbGluZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2Vs
aW5lQWxpZ25tZW50LmNwcAppbmRleCBhYjJjMDYzODVmYTM1NDkzYmUwYjA4MDA1YTQ2MmQ0M2Rm
MjA4OGEzLi4yMjNlMDI4ZjJhM2Y3NzdkOWIyMjBjMDkxYTMyZTFhYjA3YzAzMjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApA
QCAtNjUsNyArNjUsNyBAQCBMYXlvdXRVbml0IEdyaWRCYXNlbGluZUFsaWdubWVudDo6bG9naWNh
bEFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiBMYXlvdXRVbml0IEdyaWRC
YXNlbGluZUFsaWdubWVudDo6YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
R3JpZEF4aXMgYmFzZWxpbmVBeGlzKSBjb25zdAogewogICAgIExheW91dFVuaXQgbWFyZ2luID0g
aXNEZXNjZW50QmFzZWxpbmVGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IG1hcmdpblVu
ZGVyRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgOiBtYXJnaW5PdmVyRm9yQ2hpbGQoY2hp
bGQsIGJhc2VsaW5lQXhpcyk7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9C
YXNlbGluZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVPcihMYXlvdXRVbml0KC0xKSkgOiBMYXlvdXRVbml0KC0xKSk7Cisg
ICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNGb3JDaGlsZChj
aGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Io
TGF5b3V0VW5pdCgtMSkpIDogTGF5b3V0VW5pdCgtMSkpOwogICAgIC8vIFdlIHRha2UgYm9yZGVy
LWJveCdzIHVuZGVyIGVkZ2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCiAgICAgaWYgKGJhc2VsaW5l
ID09IC0xKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxCYXNlbGluZUF4aXMoYmFzZWxpbmVB
eGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1Npemlu
Z0FsZ29yaXRobS5jcHAKaW5kZXggYTI3MGRiOGJkNmY4NGNkNzkwZGFmMjExNzY2OGY1ZWMyZGQy
NjZmZS4uMzE0MjY1MzFlMjlhOGVmNDkwYjJjYTM4NGVkOTU1OGM3NDhkZGJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBHcmlkVHJhY2s6OnNldEJhc2VTaXplKExheW91dFVu
aXQgYmFzZVNpemUpCiAKIHZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0
IGdyb3d0aExpbWl0KQogewotICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBpbmZp
bml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGltaXRD
YXAudmFsdWVPcihncm93dGhMaW1pdCkpOworICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1p
dCA9PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jv
d3RoTGltaXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKICAgICBlbnN1cmVHcm93dGhMaW1p
dElzQmlnZ2VyVGhhbkJhc2VTaXplKCk7CiB9CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBMYXlvdXRV
bml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEJhc2VTaXplKGNvbnN0IEdyaWRU
cmFja1NpemUmIHRyYWNrUwogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCA9IGdyaWRM
ZW5ndGgubGVuZ3RoKCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVkKCkpCi0gICAg
ICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5p
dD4oYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApLCAwKSk7CisgICAgICAgIHJldHVybiB2YWx1
ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxhYmxlU3Bh
Y2UoKS52YWx1ZV9vcigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3RoLmlzTWluQ29u
dGVudCgpIHx8IHRyYWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlzTWF4Q29udGVu
dCgpKTsKICAgICByZXR1cm4gMDsKQEAgLTIzMSw3ICsyMzEsNyBAQCBMYXlvdXRVbml0IEdyaWRU
cmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0aExpbWl0KGNvbnN0IEdyaWRUcmFja1Np
emUmIHRyYQogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCA9IGdyaWRMZW5ndGgubGVu
Z3RoKCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVkKCkpCi0gICAgICAgIHJldHVy
biB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxh
YmxlU3BhY2UoKS52YWx1ZU9yKDApLCAwKSk7CisgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0
aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxhYmxlU3BhY2UoKS52YWx1
ZV9vcigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3RoLmlzTWluQ29udGVudCgpIHx8
IHRyYWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlzTWF4Q29udGVudCgpKTsKICAg
ICByZXR1cm4gaW5maW5pdHk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0IEdyaWRTcGFu
JiBzcGEKICAgICB9IGVsc2UgaWYgKHRyYWNrU2l6ZS5oYXNNYXhDb250ZW50T3JBdXRvTWF4VHJh
Y2tCcmVhZHRoKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBncm93dGhMaW1pdCA9IG1fc3RyYXRl
Z3ktPm1heENvbnRlbnRGb3JDaGlsZChncmlkSXRlbSk7CiAgICAgICAgIGlmICh0cmFja1NpemUu
aXNGaXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0
aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgp
Lmxlbmd0aCgpLCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgIGdy
b3d0aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6
ZS5maXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIGF2YWlsYWJsZVNwYWNlKCkudmFs
dWVfb3IoMCkpKTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoc3RkOjptYXgodHJhY2su
Z3Jvd3RoTGltaXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBAIC00ODUsOCArNDg1LDgg
QEAgc3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRU
cmFjayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93
dGhQb3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFs
V2l0aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50
aWFsV2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdy
b3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91
dFVuaXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFj
azItPmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEt
Pmdyb3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBM
YXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29y
KHRyYWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNr
MS0+YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQog
CkBAIC01NjYsMTQgKzU2NiwxNCBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG06OmVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKAogICAgICAgICBp
ZiAobWF4VHJhY2tTaXplLmlzQ29udGVudFNpemVkKCkgfHwgbWF4VHJhY2tTaXplLmlzRmxleCgp
IHx8IGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNBdXRvKG1heFRyYWNrU2l6ZSwgZGlyZWN0aW9uKSkK
ICAgICAgICAgICAgIGdyaWRBcmVhSXNJbmRlZmluaXRlID0gdHJ1ZTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgZ3JpZEFyZWFTaXplICs9IHZhbHVlRm9yTGVuZ3RoKG1heFRyYWNrU2l6ZS5s
ZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgIGdyaWRB
cmVhU2l6ZSArPSB2YWx1ZUZvckxlbmd0aChtYXhUcmFja1NpemUubGVuZ3RoKCksIGF2YWlsYWJs
ZVNpemUudmFsdWVfb3IoMF9sdSkpOwogICAgIH0KIAogICAgIGdyaWRBcmVhU2l6ZSArPSBtX3Jl
bmRlckdyaWQtPmd1dHRlcnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCBzcGFuLnN0YXJ0TGluZSgp
LCBzcGFuLmludGVnZXJTcGFuKCksIGF2YWlsYWJsZVNpemUpOwogCiAgICAgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6
Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKm1fcmVuZGVyR3JpZCwgY2hpbGQsIEZvckNvbHVt
bnMpOwogICAgIGlmIChncmlkQXJlYUlzSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSBjaGlsZElubGluZURpcmVjdGlvbiA/IG1ha2VPcHRpb25hbChzdGQ6Om1heChjaGls
ZC5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgZ3JpZEFyZWFTaXplKSkgOiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwoc3RkOjptYXgoY2hpbGQubWF4UHJlZmVycmVkTG9naWNhbFdpZHRo
KCksIGdyaWRBcmVhU2l6ZSkpIDogc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBncmlkQXJlYVNp
emU7CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6Y29tcHV0ZUdyaWRDb250YWluZXJJbnRyaW5zaWNTaXplcygpCiAgICAgICAgIG1fbWF4Q29u
dGVudFNpemUgKz0gdHJhY2suZ3Jvd3RoTGltaXRJc0luZmluaXRlKCkgPyB0cmFjay5iYXNlU2l6
ZSgpIDogdHJhY2suZ3Jvd3RoTGltaXQoKTsKICAgICAgICAgLy8gVGhlIGdyb3d0aCBsaW1pdCBj
YXBzIG11c3QgYmUgY2xlYXJlZCBub3cgaW4gb3JkZXIgdG8gcHJvcGVybHkgc29ydAogICAgICAg
ICAvLyB0cmFja3MgYnkgZ3Jvd3RoIHBvdGVudGlhbCBvbiBhbiBldmVudHVhbCAiTWF4aW1pemUg
VHJhY2tzIi4KLSAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoc3RkOjpudWxsb3B0KTsKICAgICB9CiB9
CiAKQEAgLTc1Miw3ICs3NTIsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bVN0cmF0ZWd5Ojpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogICAgIC8vIElm
IHxjaGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCBoZWlnaHQsIHdlIHNob3VsZG4ndCBsZXQg
aXQgb3ZlcnJpZGUgaXRzIGludHJpbnNpYyBoZWlnaHQsIHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3
ZSBhcmUgaW50ZXJlc3RlZCBpbiBoZXJlLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBibG9jay1h
eGlzIG92ZXJyaWRlIHNpemUgdG8gbnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAg
ICAgaWYgKHNob3VsZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBXVEY6
Om51bGxvcHQpOworICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNp
emVGb3JDaGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICB9CiAKQEAgLTgx
Niw3ICs4MTYsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5
OjptaW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgICAgICAgICAgY29uc3Qg
YXV0byYgdHJhY2tTaXplID0gYWxsVHJhY2tzW3RyYWNrUG9zaXRpb25dLmNhY2hlZFRyYWNrU2l6
ZSgpOwogICAgICAgICAgICAgaWYgKCF0cmFja1NpemUuaGFzRml4ZWRNYXhUcmFja0JyZWFkdGgo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWluU2l6ZTsKLSAgICAgICAgICAgIG1heEJyZWFk
dGggKz0gdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgp
LCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMF9sdSkpOworICAgICAgICAgICAgbWF4QnJlYWR0
aCArPSB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCks
IGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtaW5TaXplID4gbWF4QnJlYWR0aCkgewogICAgICAgICAgICAgYXV0byBtYXJnaW5BbmRCb3Jk
ZXJBbmRQYWRkaW5nID0gR3JpZExheW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JD
aGlsZCgqcmVuZGVyR3JpZCgpLCBkaXJlY3Rpb24oKSwgY2hpbGQpOwpAQCAtOTE0LDExICs5MTQs
MTEgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9n
aWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGMKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rp
b24gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVE
aXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgRm9yQ29sdW1ucyk7CiAgICAg
Ym9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24oKSA9PSBjaGlsZElubGluZURpcmVjdGlvbjsKICAg
ICBpZiAoaXNSb3dBeGlzKQotICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0
aEluRnJhZ21lbnRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIGF2YWlsYWJsZVNpemUudmFs
dWVPcigwKSwgKnJlbmRlckdyaWQoKSwgbnVsbHB0cikgKyBHcmlkTGF5b3V0RnVuY3Rpb25zOjpt
YXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkSW5saW5lRGlyZWN0
aW9uLCBjaGlsZCk7CisgICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5G
cmFnbWVudFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9v
cigwKSwgKnJlbmRlckdyaWQoKSwgbnVsbHB0cikgKyBHcmlkTGF5b3V0RnVuY3Rpb25zOjptYXJn
aW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkSW5saW5lRGlyZWN0aW9u
LCBjaGlsZCk7CiAgICAgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBkYXRlT3ZlcnJp
ZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5l
RGlyZWN0aW9uLCBhdmFpbGFibGVTaXplKTsKICAgICBsYXlvdXRHcmlkSXRlbUZvck1pblNpemVD
b21wdXRhdGlvbihjaGlsZCwgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCk7CiAgICAgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uIGNoaWxkQmxvY2tEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25z
OjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgRm9yUm93
cyk7Ci0gICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwg
Y2hpbGRNaW5TaXplLCBXVEY6Om51bGxvcHQpLnZhbHVlT3IoMCkgKyBHcmlkTGF5b3V0RnVuY3Rp
b25zOjptYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkQmxvY2tE
aXJlY3Rpb24sIGNoaWxkKTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRV
c2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIHN0ZDo6bnVsbG9wdCkudmFsdWVfb3IoMCkgKyBH
cmlkTGF5b3V0RnVuY3Rpb25zOjptYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlk
KCksIGNoaWxkQmxvY2tEaXJlY3Rpb24sIGNoaWxkKTsKIH0KIAogY2xhc3MgSW5kZWZpbml0ZVNp
emVTdHJhdGVneSBmaW5hbCA6IHB1YmxpYyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVn
eSB7CkBAIC05OTgsOCArOTk4LDggQEAgYm9vbCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpyZWNv
bXB1dGVVc2VkRmxleEZyYWN0aW9uSWZOZWVkZWQoZG91YmxlJiBmbGV4RnJhY3QKIAogICAgIGNv
bnN0IFJlbmRlckdyaWQqIHJlbmRlckdyaWQgPSB0aGlzLT5yZW5kZXJHcmlkKCk7CiAKLSAgICBh
dXRvIG1pblNpemUgPSByZW5kZXJHcmlkLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWlu
U2l6ZSwgcmVuZGVyR3JpZC0+c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCksIFdURjo6bnVsbG9w
dCk7Ci0gICAgYXV0byBtYXhTaXplID0gcmVuZGVyR3JpZC0+Y29tcHV0ZUNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KE1heFNpemUsIHJlbmRlckdyaWQtPnN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpLCBX
VEY6Om51bGxvcHQpOworICAgIGF1dG8gbWluU2l6ZSA9IHJlbmRlckdyaWQtPmNvbXB1dGVDb250
ZW50TG9naWNhbEhlaWdodChNaW5TaXplLCByZW5kZXJHcmlkLT5zdHlsZSgpLmxvZ2ljYWxNaW5I
ZWlnaHQoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIG1heFNpemUgPSByZW5kZXJHcmlkLT5j
b21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgcmVuZGVyR3JpZC0+c3R5bGUoKS5s
b2dpY2FsTWF4SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBSZWRvIHRoZSBmbGV4
IGZyYWN0aW9uIGNvbXB1dGF0aW9uIHVzaW5nIG1pbnxtYXgtaGVpZ2h0IGFzIGRlZmluaXRlIGF2
YWlsYWJsZSBzcGFjZSBpbiBjYXNlCiAgICAgLy8gdGhlIHRvdGFsIGhlaWdodCBpcyBzbWFsbGVy
IHRoYW4gbWluLWhlaWdodCBvciBsYXJnZXIgdGhhbiBtYXgtaGVpZ2h0LgpAQCAtMTAxMSw3ICsx
MDExLDcgQEAgYm9vbCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpyZWNvbXB1dGVVc2VkRmxleEZy
YWN0aW9uSWZOZWVkZWQoZG91YmxlJiBmbGV4RnJhY3QKIAogICAgIExheW91dFVuaXQgZnJlZVNw
YWNlID0gY2hlY2tNYXhTaXplID8gbWF4U2l6ZS52YWx1ZSgpIDogLTFfbHU7CiAgICAgY29uc3Qg
R3JpZCYgZ3JpZCA9IG1fYWxnb3JpdGhtLmdyaWQoKTsKLSAgICBmcmVlU3BhY2UgPSBzdGQ6Om1h
eChmcmVlU3BhY2UsIG1pblNpemUudmFsdWVPcigwX2x1KSkgLSByZW5kZXJHcmlkLT5ndXR0ZXJz
U2l6ZShncmlkLCBGb3JSb3dzLCAwLCBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSwgYXZhaWxhYmxl
U3BhY2UoKSk7CisgICAgZnJlZVNwYWNlID0gc3RkOjptYXgoZnJlZVNwYWNlLCBtaW5TaXplLnZh
bHVlX29yKDBfbHUpKSAtIHJlbmRlckdyaWQtPmd1dHRlcnNTaXplKGdyaWQsIEZvclJvd3MsIDAs
IGdyaWQubnVtVHJhY2tzKEZvclJvd3MpLCBhdmFpbGFibGVTcGFjZSgpKTsKIAogICAgIHNpemVf
dCBudW1iZXJPZlRyYWNrcyA9IG1fYWxnb3JpdGhtLnRyYWNrcyhGb3JSb3dzKS5zaXplKCk7CiAg
ICAgZmxleEZyYWN0aW9uID0gZmluZEZyVW5pdFNpemUoR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKDAsIG51bWJlck9mVHJhY2tzKSwgZnJlZVNwYWNlKTsKQEAgLTEwNDAsNyAr
MTA0MCw3IEBAIExheW91dFVuaXQgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6ZnJlZVNwYWNlRm9y
U3RyZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3QKICAgICBpZiAoZGlyZWN0aW9uKCkgPT0gRm9y
Q29sdW1ucykKICAgICAgICAgcmV0dXJuIDBfbHU7CiAKLSAgICBhdXRvIG1pblNpemUgPSByZW5k
ZXJHcmlkKCktPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNaW5TaXplLCByZW5kZXJHcmlk
KCktPnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8g
bWluU2l6ZSA9IHJlbmRlckdyaWQoKS0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNp
emUsIHJlbmRlckdyaWQoKS0+c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCksIHN0ZDo6bnVsbG9w
dCk7CiAgICAgaWYgKCFtaW5TaXplKQogICAgICAgICByZXR1cm4gMF9sdTsKICAgICByZXR1cm4g
bWluU2l6ZS52YWx1ZSgpIC0gY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7CkBAIC0xMDUxLDcgKzEw
NTEsNyBAQCBMYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZv
ckNoaWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJl
RGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIEZvckNvbHVtbnMpOwogICAg
IEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0
RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGls
ZCwgZGlyZWN0aW9uKCkpOwogICAgIGlmIChoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNo
aWxkKGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pIHx8IChkaXJlY3Rpb24oKSAhPSBjaGlsZElu
bGluZURpcmVjdGlvbiAmJiBoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxkKGNoaWxk
LCBmbG93QXdhcmVEaXJlY3Rpb24pKSkgewotICAgICAgICBhdXRvIGluZGVmaW5pdGVTaXplID0g
ZGlyZWN0aW9uKCkgPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBtYWtlT3B0aW9uYWwoMF9sdSkg
OiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gaW5kZWZpbml0ZVNpemUgPSBkaXJlY3Rpb24o
KSA9PSBjaGlsZElubGluZURpcmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbCgwX2x1KSA6IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbigpLCBpbmRlZmluaXRlU2l6ZSk7CiAgICAgfQog
ICAgIHJldHVybiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9naWNhbFNp
emVGb3JDaGlsZChjaGlsZCwgY2hpbGRNaW5TaXplLCBhdmFpbGFibGVTaXplKTsKQEAgLTExMTks
NyArMTExOSw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJh
Y2tTaXplcygpCiAKICAgICBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1f
ZGlyZWN0aW9uKTsKICAgICBjb25zdCBib29sIGluZGVmaW5pdGVIZWlnaHQgPSBtX2RpcmVjdGlv
biA9PSBGb3JSb3dzICYmICFtX3JlbmRlckdyaWQtPmhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgp
OwotICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGF2YWlsYWJsZVNwYWNl
KCkudmFsdWVPcigwX2x1KSk7CisgICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgoMF9s
dSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwX2x1KSk7CiAgICAgLy8gMS4gSW5pdGlhbGl6
ZSBwZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGFsbFRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gYWxs
VHJhY2tzW2ldOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmUK
ICAgICAgICAgTGF5b3V0VW5pdCBndXR0ZXJzU2l6ZSA9IG1fcmVuZGVyR3JpZC0+Z3V0dGVyc1Np
emUobV9ncmlkLCBkaXJlY3Rpb24sIDAsIG1fZ3JpZC5udW1UcmFja3MoZGlyZWN0aW9uKSwgdGhp
cy0+YXZhaWxhYmxlU3BhY2UoZGlyZWN0aW9uKSk7CiAgICAgICAgIHNldEZyZWVTcGFjZShkaXJl
Y3Rpb24sICphdmFpbGFibGVTcGFjZSAtIGd1dHRlcnNTaXplKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgc2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0RnJl
ZVNwYWNlKGRpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICB0cmFja3MoZGlyZWN0aW9uKS5y
ZXNpemUobnVtVHJhY2tzKTsKIAogICAgIG1fbmVlZHNTZXR1cCA9IGZhbHNlOwpAQCAtMTM3OSw4
ICsxMzc5LDggQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJlc2V0KCkKICAgICBt
X2NvbnRlbnRTaXplZFRyYWNrc0luZGV4LnNocmluaygwKTsKICAgICBtX2ZsZXhpYmxlU2l6ZWRU
cmFja3NJbmRleC5zaHJpbmsoMCk7CiAgICAgbV9hdXRvU2l6ZWRUcmFja3NGb3JTdHJldGNoSW5k
ZXguc2hyaW5rKDApOwotICAgIHNldEF2YWlsYWJsZVNwYWNlKEZvclJvd3MsIFdURjo6bnVsbG9w
dCk7Ci0gICAgc2V0QXZhaWxhYmxlU3BhY2UoRm9yQ29sdW1ucywgV1RGOjpudWxsb3B0KTsKKyAg
ICBzZXRBdmFpbGFibGVTcGFjZShGb3JSb3dzLCBzdGQ6Om51bGxvcHQpOworICAgIHNldEF2YWls
YWJsZVNwYWNlKEZvckNvbHVtbnMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgbV9oYXNQZXJjZW50U2l6
ZWRSb3dzSW5kZWZpbml0ZUhlaWdodCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggNmI3OTdlYTg3
ODU0MDlkZGViMThhMDU5ZjQxNjBkNTVkNjVkNThmZi4uM2VkMDVlNGZkNWQ4MjlhNDE1MGRlOTUw
OTFjM2IwYjMyYmFkMmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dy
aWRUcmFja1NpemluZ0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaApAQCAtMjcyLDcgKzI3Miw3IEBAIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0R3JpZEl0ZW1Gb3JNaW5TaXplQ29tcHV0YXRpb24oUmVu
ZGVyQm94JiwgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkKSBjb25zdCA9IDA7CiAKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBi
b29sIHVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJl
bmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgdXBkYXRlT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAg
ICAvLyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWNjZXNzb3JzIGZvciBzdWJjbGFzc2VzLgog
ICAgIExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9h
bGdvcml0aG0uY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCAyYmMxOWQxZTRk
YWU2MDA0YjM1MjA0OGEwNGE1ZmYxYTFiMTA5YTFhLi44OWFiY2E5YTRmMTA0ZDQ1NTc4Mjg3ZDkx
ZDg3OGI1YjA2NmRhZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8SW50
ZXJwb2xhdGlvblF1YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25R
dWFsaXR5RnJvbVMKICAgICBjYXNlIEltYWdlUmVuZGVyaW5nOjpBdXRvOgogICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpj
aG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IExheW91dFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgK
aW5kZXggOGU5OWM5NDEyZWM0MDQ2MzUzNzE3NmZkZTQyZmIzY2YxZGJkZTFkMC4uZDY0YzcyMzQ1
MmZjMzdiNzM3YWM5YTA4MWY5YmYxNzI4YWQ1ZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVCb3guaApAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRh
dGVQYXJlbnRDaGlsZExpc3QoKTsKICNlbmRpZgogCi0gICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0
aW5nKE9wdGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IFdURjo6bnVsbG9w
dCkgY29uc3QKKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJl
cXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAzYjE3NGZiZGJlM2IwNjg4ZTY2ZGMwNThkOThkYzJh
NGM3ZmNkNzE5Li41YTc0OTI2MDc0YmQxYzEyNzI2ZjcwYWIxMzM2M2FjZWZhNGU1M2E2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zOTYsNyArMzk2
LDcgQEAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYgc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBhcmUg
c3VwcHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01hcmso
KSA9PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgT3B0aW9uU2V0PFRl
eHRFbXBoYXNpc1Bvc2l0aW9uPiBob3Jpem9udGFsTWFzayB7IFRleHRFbXBoYXNpc1Bvc2l0aW9u
OjpMZWZ0LCBUZXh0RW1waGFzaXNQb3NpdGlvbjo6UmlnaHQgfTsKIApAQCAtNDI4LDcgKzQyOCw3
IEBAIE9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElz
QWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0CiAKICAgICAvLyBUaGUgZW1waGFzaXMgbWFya3Mg
b3ZlciBhcmUgc3VwcHJlc3NlZCBvbmx5IGlmIHRoZXJlIGlzIGEgcnVieSB0ZXh0IGJveCBhbmQg
aXQgbm90IGVtcHR5LgogICAgIGlmIChydWJ5VGV4dCAmJiBydWJ5VGV4dC0+aGFzTGluZXMoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBpc0Fib3ZlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5m
by5oCmluZGV4IDRkYjVhNDdjMTA1MmM3ZDJlOTBhZmI5OTcwYzYzN2I0M2RmYWRiZDguLjUxZWY0
MWRjZmQ1ZTVkMTJhOWFiNTZkYmZiNTI0NDBjODUwY2Q3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUGFpbnRJbmZvLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAg
ICAgICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAg
ICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAg
IHJlY3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkp
OwogICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3
ZmZmZTZiYzBiYTJmMzViM2ExNTkzOGVlNWU5ZDVlZDQxMTAyZWQ1Li43MTBjMTAxZjIzZDFkMDY4
ODhmY2EzZjQyMzRiNzRlNzIxYjk0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKQEAgLTI1NzksNyArMjU3OSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6
Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91
CiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogewogICAgIGlmIChzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKICAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CkBAIC0yNzUxLDcgKzI3NTEsNyBAQCBib29s
IFJlbmRlckJsb2NrOjpjYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd05lZWRzVXBkYXRlKCkg
Y29uc3QKIHZvaWQgUmVuZGVyQmxvY2s6OnNldENhY2hlZEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93
TmVlZHNVcGRhdGUoKQogewogICAgIFJlbmRlckJsb2NrUmFyZURhdGEmIHJhcmVEYXRhID0gZW5z
dXJlQmxvY2tSYXJlRGF0YSgqdGhpcyk7Ci0gICAgcmFyZURhdGEubV9lbmNsb3NpbmdGcmFnbWVu
dGVkRmxvdyA9IFdURjo6bnVsbG9wdDsKKyAgICByYXJlRGF0YS5tX2VuY2xvc2luZ0ZyYWdtZW50
ZWRGbG93ID0gc3RkOjpudWxsb3B0OwogfQogCiBSZW5kZXJGcmFnbWVudGVkRmxvdyogUmVuZGVy
QmxvY2s6OnVwZGF0ZUNhY2hlZEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KFJlbmRlckZyYWdtZW50
ZWRGbG93KiBmcmFnbWVudGVkRmxvdykgY29uc3QKQEAgLTMyNDQsNyArMzI0NCw3IEBAIE9wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVy
Y2VudGFnZUNvbXB1dGF0aW9uCiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG92ZXJyaWRpbmdD
b250ZW50TG9naWNhbEhlaWdodCgpOwogICAgIGVsc2UgaWYgKHN0eWxlVG9Vc2UubG9naWNhbEhl
aWdodCgpLmlzRml4ZWQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQg
PSBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZygoTGF5b3V0VW5pdClz
dHlsZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpKTsKLSAgICAgICAgYXZhaWxhYmxlSGVp
Z2h0ID0gc3RkOjptYXgoMF9sdSwgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1p
bk1heChjb250ZW50Qm94SGVpZ2h0IC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBXVEY6Om51
bGxvcHQpKTsKKyAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgY29uc3Ry
YWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gc2Ny
b2xsYmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpKTsKICAgICB9IGVsc2UgaWYgKHNo
b3VsZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpIHsKICAgICAgICAgYXZh
aWxhYmxlSGVpZ2h0ID0gYmxvY2tTaXplRnJvbUFzcGVjdFJhdGlvKGhvcml6b250YWxCb3JkZXJB
bmRQYWRkaW5nRXh0ZW50KCksIHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBMYXlv
dXRVbml0KHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCkpLCBzdHlsZSgpLmJveFNpemluZ0Zv
ckFzcGVjdFJhdGlvKCksIGxvZ2ljYWxXaWR0aCgpKTsKICAgICB9IGVsc2UgaWYgKGlzT3V0T2ZG
bG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKQEAgLTMyNjAsNyArMzI2MCw3IEBA
IE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0
Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uCiAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIG1pbi9t
YXggb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGl0cyBjYWxsZXIgZG9lcy4gU28gdGhlCiAgICAgICAg
ICAgICAvLyByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBub3QgaGF2
ZSBiZWVuIGFkanVzdGVkCiAgICAgICAgICAgICAvLyB5ZXQuCi0gICAgICAgICAgICBMYXlvdXRV
bml0IGNvbnRlbnRCb3hIZWlnaHQgPSBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5
TWluTWF4KGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gc2Nyb2xsYmFyTG9naWNhbEhl
aWdodCgpLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94
SGVpZ2h0ID0gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50
Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNv
bnRlbnRCb3hIZWlnaHQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpc1JlbmRlclZpZXco
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXgg
MTRhYmY2YmViZGNhOWMwMjlhZWQ1MGU4N2QxNzI3NWIzNTMyNTQ1Mi4uNjJkZTQxNjViNjEzZWMz
Y2YwOTM4ZGQxYzA3Y2Y1OWNjNDE0MWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMzMsMTYgKzMxMzMsMTYgQEAgdm9pZCBSZW5kZXJC
bG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExheW91dFVuaXQgbG9naWNhbFRv
cCwgTGF5b3V0VW4KIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFp
c1J1YnlSdW4oKSAmJiAhaXNHcmlkSXRlbSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHNob3VsZEFwcGx5TGF5
b3V0Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjaGlsZHJlbklubGluZSgpKQog
ICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7CiAKICAgICBp
ZiAoIWhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKICAgICBpZiAobW9kZXJuTGluZUxheW91dCgpKQpAQCAtMzE1OCw3ICszMTU4LDcgQEAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAo
aXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc2hvdWxk
QXBwbHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9j
azo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKQEAgLTMxNjgsNyArMzE2OCw3
IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lCiAgICAgICAgIC8vIHByb3BlcnR5IGhhcyBhIGNv
bXB1dGVkIHZhbHVlIG90aGVyIHRoYW4gJ3Zpc2libGUnLiBzZWUgaHR0cHM6Ly93d3cudzMub3Jn
L1RSL0NTUzIyL3Zpc3VkZXQuaHRtbAogICAgICAgICBhdXRvIHNob3VsZFN5bnRoZXNpemVCYXNl
bGluZSA9ICFzdHlsZSgpLmlzT3ZlcmZsb3dWaXNpYmxlKCkgJiYgIWlzPEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+KGVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChzaG91bGRTeW50aGVzaXplQmFzZWxp
bmUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgLy8gTm90ZSB0aGF0IGhlcmUgd2Ugb25seSB0YWtl
IHRoZSBsZWZ0IGFuZCBib3R0b20gaW50byBjb25zaWRlcmF0aW9uLiBPdXIgY2FsbGVyIHRha2Vz
IHRoZSByaWdodCBhbmQgdG9wIGludG8gY29uc2lkZXJhdGlvbi4KICAgICBmbG9hdCBib3hIZWln
aHQgPSBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqdGhpcywgbGluZURpcmVjdGlv
bikgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LmJvdHRv
bSgpIDogbV9tYXJnaW5Cb3gubGVmdCgpKTsKQEAgLTMxODEsNyArMzE4MSw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSBsaW5lCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFoYXNMaW5lcygpKSB7
CiAgICAgICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZv
bnRNZXRyaWNzKCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQo
Zm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUs
IGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmlj
cy5oZWlnaHQoKSkgLyAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmgKaW5kZXggYzdjOTQ2YmFmZDgxNWE0NzRkNzIzODhiNzdlMjIzODlmNDQ2Y2NjNC4uNmE0MmFh
YWQ0MWM1NWQ0NWE1MzFiYTVhMDBmNjA1MTBhZWEzY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjczLDcgKzI3Myw3IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJNdWx0aUNvbHVtbkZsb3cqIG11bHRpQ29sdW1uRmxvd1Nsb3dDYXNlKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3coUmVuZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAg
ICAgdm9pZCBjbGVhck11bHRpQ29sdW1uRmxvdygpOwotICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVt
bnMoT3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCA9IFdURjo6bnVsbG9wdCkg
Y29uc3Q7CisgICAgYm9vbCB3aWxsQ3JlYXRlQ29sdW1ucyhPcHRpb25hbDx1bnNpZ25lZD4gZGVz
aXJlZENvbHVtbkNvdW50ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
cmVxdWlyZXNDb2x1bW5zKGludCkgY29uc3Q7CiAKICAgICBib29sIGNvbnRhaW5zRmxvYXRzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdP
YmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAKaW5kZXggMzgyNTkyNzc3M2NjZmFjY2U1NzhmNWY2OThhN2M2YmZlYjNlM2FkOC4uZGJh
ODg4NmI5YzZiNDFmOGE0MzRkYTI5YzcxYWMyZDNlZDlmNmE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIExheW91dFVuaXQgUmVu
ZGVyQm94OjpzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRN
YXJnaW5TdGFyCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdp
ZHRoRm9yQ29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpLnZhbHVlT3IoMF9sdSk7CisgICAgICAg
IHJldHVybiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpLnZh
bHVlX29yKDBfbHUpOwogCiAgICAgaWYgKFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9j
aygpKQogICAgICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwpAQCAtMjA1
NCw3ICsyMDU0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2lj
YWxIZWlnaHRGb3JDb250ZW50KEF2YWlsYWJsZUxvZ2ljYWxIZWkKIHsKICAgICBpZiAoaGFzT3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IENvbnRhaW5pbmcgYmxvY2sgZm9yIGEgZ3JpZCBpdGVtIGlzIHRoZSBncmlkIGFy
ZWEgaXQncyBsb2NhdGVkIGluLiBXZSBuZWVkIHRvIHJldHVybiB3aGF0ZXZlcgotICAgICAgICAv
LyBoZWlnaHQgdmFsdWUgd2UgZ2V0IGZyb20gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KCkgaGVyZSwgaW5jbHVkaW5nIFdURjo6bnVsbG9wdC4KKyAgICAgICAg
Ly8gaGVpZ2h0IHZhbHVlIHdlIGdldCBmcm9tIG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodCgpIGhlcmUsIGluY2x1ZGluZyBzdGQ6Om51bGxvcHQuCiAgICAgICAg
IGlmIChhdXRvIGhlaWdodCA9IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNh
bEhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGhlaWdodC52YWx1ZSgpOwogICAgIH0KQEAg
LTI0MjgsNyArMjQyOCw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckJveDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgYm9vbCBp
c0VtcHR5ID0gIWNvbnRhaW5lckJveC5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxQb3NpdGlvbihh
ZGp1c3RlZFJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgICAgIGlmIChpc0VtcHR5KSB7
CiAgICAgICAgICAgICBpZiAoY29udGV4dC5vcHRpb25zLmNvbnRhaW5zKFZpc2libGVSZWN0Q29u
dGV4dE9wdGlvbjo6VXNlRWRnZUluY2x1c2l2ZUludGVyc2VjdGlvbikpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsKICAgICAgICAgfQogICAgIH0K
QEAgLTI5NTYsNyArMjk1Niw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChpbnRyaW5zaWNIZWlnaHQpCiAgICAgICAg
ICAgICAgICAgICAgICppbnRyaW5zaWNIZWlnaHQgLT0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxI
ZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBp
bnRyaW5zaWNIZWlnaHQpLnZhbHVlT3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAg
ICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9y
UHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCku
dmFsdWVfb3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGhlaWdo
dFJlc3VsdCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMwMDcsMTQg
KzMwMDcsMTQgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNh
bEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGMKIHsKICAgICBpZiAoT3B0aW9uYWw8
TGF5b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9n
aWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdo
dCkpCiAgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJC
b3g6OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25z
dCBMZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhl
aWdodCkgY29uc3QKIHsKICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVk
aW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNp
bmcoaGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxiYXJMb2dp
Y2FsSGVpZ2h0KCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50
cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0
aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5p
dCBib3JkZXJBbmRQYWRkaW5nKSBjb25zdApAQCAtMzAzNSw3ICszMDM1LDcgQEAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWln
aHRVc2luZyhMZW5ndGgKIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNv
bnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwg
Y29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRl
bnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0
dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gT3B0aW9u
YWw8TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mg
c2l6aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgt
Y29udGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMg
Y29kZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgogICAgIGlmIChoZWlnaHQuaXNJbnRyaW5zaWMoKSB8
fCBoZWlnaHQuaXNNaW5JbnRyaW5zaWMoKSkKQEAgLTMwNDQsNyArMzA0NCw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0VXNpbmcoU2l6CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGhlaWdodC52YWx1ZSgp
KTsKICAgICBpZiAoaGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1
cm4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGhlaWdodCk7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckJv
eDo6c2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxhdGlvbihjb25zdCBS
ZW5kZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBlbmRpY3VsYXJXcml0aW5nTW9k
ZSkgY29uc3QKQEAgLTMxMzEsNyArMzEzMSw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAg
ICAgICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBv
ciBub3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBh
IHBlcmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAg
ICAgICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlz
LCBzY3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5p
dGlhbFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91
dFVuaXQ+KDApIDogc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQg
PSBjYi0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdC
ZWZvcmUoKSAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdBZnRlcigpIC0gY2ItPmJvcmRlckJlZm9y
ZSgpIC0gY2ItPmJvcmRlckFmdGVyKCk7CiAgICAgICAgIH0KQEAgLTMyNzQsNyArMzI3NCw3IEBA
IGJvb2wgUmVuZGVyQm94OjpyZXBsYWNlZE1pbk1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9u
ZShTaXplVHlwZSBzaXplVHlwZSkgY29uCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAg
IGlmIChsb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpICYmIGhhc092ZXJyaWRp
bmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKQotICAgICAgICByZXR1cm4g
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgPT0gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkgPT0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gTWFrZSBzdXJlICUgbWlu
LWhlaWdodCBhbmQgJSBtYXgtaGVpZ2h0IHJlc29sdmUgdG8gbm9uZSBpZiB0aGUgY29udGFpbmlu
ZyBibG9jayBoYXMgYXV0byBoZWlnaHQuCiAgICAgLy8gTm90ZSB0aGF0IHRoZSAiaGVpZ2h0IiBj
YXNlIGZvciByZXBsYWNlZCBlbGVtZW50cyB3YXMgaGFuZGxlZCBieSBoYXNSZXBsYWNlZExvZ2lj
YWxIZWlnaHQsIHdoaWNoIGlzIHdoeQpAQCAtMzM3OSw3ICszMzc5LDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWln
aHRUeXBlLCBMZW4KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWln
aHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVM
b2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGhlaWdodFR5cGUpLCBX
VEY6Om51bGxvcHQpOworICAgIHJldHVybiBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdo
dEJ5TWluTWF4KGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxIZWln
aHQoKSwgaGVpZ2h0VHlwZSksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
Qm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFi
bGVMb2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRUeXBlKSBjb25zdApAQCAtMzQwNSw3ICszNDA1LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25z
dCBMZW5ndGgmIGgsIEF2YWlsYWJsZUxvZ2kKICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRC
b3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGgsIGF2YWlsYWJsZUhl
aWdodCkpOwogICAgIH0KIAotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNs
dWRpbmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRV
c2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBXVEY6Om51bGxvcHQpKQorICAgIGlmIChPcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVu
dEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBz
dGQ6Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgYWRq
dXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVkaW5nU2Ny
b2xsYmFyKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhNRTogQ2hl
Y2sgbG9naWNhbFRvcC9sb2dpY2FsQm90dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRsZSB2ZXJ0
aWNhbCB3cml0aW5nLW1vZGUuCkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBib29sIFJlbmRlckJveDo6
cGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBjb25zdAogICAgIC8vIERvIHRo
aXMgdG8gYXZvaWQgZHVwbGljYXRpbmcgYWxsIHRoZSBsb2dpYyB0aGF0IGFscmVhZHkgZXhpc3Rz
IHdoZW4gY29tcHV0aW5nCiAgICAgLy8gYW4gYWN0dWFsIHBlcmNlbnRhZ2UgaGVpZ2h0LgogICAg
IExlbmd0aCBmYWtlTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7Ci0gICAgcmV0dXJu
IGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChmYWtlTGVuZ3RoKSAhPSBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChmYWtlTGVuZ3Ro
KSAhPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNVbnNwbGl0dGFibGVT
Y3JvbGxpbmdPdmVyZmxvdygpIGNvbnN0CkBAIC01MTgxLDggKzUxODEsOCBAQCBMYXlvdXRVbml0
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyhSZW5kZXJGcmFn
bWVudENvbnRhaW5lcgogc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJv
eDo6Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7CiAg
ICAgYXV0byByYXRpbyA9IExheW91dFVuaXQgeyBzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygp
IH07Ci0gICAgTGF5b3V0VW5pdCBibG9ja01pblNpemUgPSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0
QnlNaW5NYXgoTGF5b3V0VW5pdCgpLCBXVEY6Om51bGxvcHQpOwotICAgIExheW91dFVuaXQgYmxv
Y2tNYXhTaXplID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQ6Om1h
eCgpLCBXVEY6Om51bGxvcHQpOworICAgIExheW91dFVuaXQgYmxvY2tNaW5TaXplID0gY29uc3Ry
YWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQoKSwgc3RkOjpudWxsb3B0KTsKKyAg
ICBMYXlvdXRVbml0IGJsb2NrTWF4U2l6ZSA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1h
eChMYXlvdXRVbml0OjptYXgoKSwgc3RkOjpudWxsb3B0KTsKICAgICBMYXlvdXRVbml0IHRyYW5z
ZmVycmVkTWluU2l6ZSA9IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVk
TWF4U2l6ZSA9IExheW91dFVuaXQ6Om1heCgpOwogICAgIGlmIChibG9ja01pblNpemUgPiBMYXlv
dXRVbml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZGZhYzAwOWJi
YTQ2NDBhMGQyMGZkZGZkYmZkYWY1ZjcwN2VkMmJhZS4uMWRkNjg4ODQxZmYxYTMyMjQyNjJhNDNh
OGVhZDM4N2ExNjFjNTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAt
NDUyLDcgKzQ1Miw3IEBAIG92ZXJyaWRlOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQo
VCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQpKTsgfQog
CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91
bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVu
aXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0
VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGVu
dW0gY2xhc3MgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzIHsgWWVzICwgTm8gfTsK
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQo
Y29uc3QgTGVuZ3RoJiBoZWlnaHQsIFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50cyA9
IFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50czo6WWVzKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDE0
M2EzNTljYmFlODhlM2UzYzZiM2M2YTdjNzM1YmNmZmM1NWU0ZTcuLjg3MTFiYjk1ZWUzZGM2Nzk0
N2UzMjk3MWIxYmU5ZWI3ZWViMmMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6Omhhc0F1dG9IZWlnaHRPckNvbnRhaW5pbmdCbG9ja1dpdGhBdXRv
SGVpZ2h0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICh0aGlz
Qm94ICYmIHRoaXNCb3gtPmlzR3JpZEl0ZW0oKSAmJiB0aGlzQm94LT5oYXNPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRoaXNC
b3gtPm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRoaXNCb3gtPm92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBp
ZiAobG9naWNhbEhlaWdodExlbmd0aC5pc0F1dG8oKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVk
V2l0aEltcGxpY2l0SGVpZ2h0KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yODks
NyArMjg5LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzQXV0b0hlaWdodE9yQ29u
dGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25zdAogICAgIGlmICghY2IgfHwgKGRvY3Vt
ZW50KCkuaW5RdWlya3NNb2RlKCkgJiYgIWNiLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVj
YXRlZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0aGlzQm94ICYmIHRoaXNC
b3gtPmhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKQot
ICAgICAgICByZXR1cm4gdGhpc0JveC0+b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkgPT0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gdGhpc0JveC0+
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgPT0gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiAhY2ItPmhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpOwogfQog
CkBAIC0zNDgsNyArMzQ4LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVs
YXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1ncmlkLyNncmlkLWl0ZW0tc2l6aW5nCiAgICAgaWYgKCFzdHlsZSgpLmxlZnQoKS5p
c0F1dG8oKSB8fCAhc3R5bGUoKS5yaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIExheW91dFVu
aXQgYXZhaWxhYmxlV2lkdGggPSBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdp
ZHRoKCkKLSAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0
aCgpLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVX
aWR0aCgpOworICAgICAgICAgICAgPyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdp
ZHRoKCkudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFi
bGVXaWR0aCgpOwogICAgICAgICBpZiAoIXN0eWxlKCkubGVmdCgpLmlzQXV0bygpKSB7CiAgICAg
ICAgICAgICBpZiAoIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSAmJiAhY29udGFpbmluZ0Jsb2Nr
KCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgICAgIG9m
ZnNldC5zZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5yaWdodCgpLCAhc3R5bGUoKS5y
aWdodCgpLmlzRml4ZWQoKSA/IGF2YWlsYWJsZVdpZHRoIDogMF9sdSkpOwpAQCAtMzc1LDcgKzM3
NSw3IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25P
ZmZzZXQoKSBjb25zdAogICAgICAgICAvLyBXZSBjb3VsZCByZWZhY3RvciB0aGlzIGFuZCBtb3Zl
IGl0IHRvIHNvbWUgY29tbW9uIGNvZGUgZm9yIGJvdGggaWZzLCBob3dldmVyIG1vdmluZyBpdCBv
dXRzaWRlIG9mIHRoZSBpZnMKICAgICAgICAgLy8gaXMgbm90IHBvc3NpYmxlIGFzIGl0J2QgY2F1
c2UgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMuCiAgICAgICAgIG9mZnNldC5leHBhbmQoMF9sdSwg
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS50b3AoKSwgIXN0eWxlKCkudG9wKCkuaXNGaXhlZCgpCi0g
ICAgICAgICAgICA/IChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgp
ID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKS52YWx1ZU9yKDBfbHUp
IDogY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQorICAgICAgICAgICAgPyAo
aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSA/IG92ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkudmFsdWVfb3IoMF9sdSkgOiBjb250YWluaW5n
QmxvY2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkpCiAgICAgICAgICAgICA6IExheW91dFVuaXQoKSkp
OwogICAgIH0gZWxzZSBpZiAoIXN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkKICAgICAgICAgJiYg
KCFzdHlsZSgpLmJvdHRvbSgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCkBAIC0zODQsNyArMzg0
LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9m
ZnNldCgpIGNvbnN0CiAgICAgICAgICAgICB8fCBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudEhlaWdodCgpKSkgewogICAgICAgICAvLyBGSVhNRTogQ2hlY2sgY29tbWVudCBhYm92
ZSBmb3IgInRvcCIsIGl0IGFwcGxpZXMgaGVyZSB0b28uCiAgICAgICAgIG9mZnNldC5leHBhbmQo
MF9sdSwgLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm90dG9tKCksICFzdHlsZSgpLmJvdHRvbSgp
LmlzRml4ZWQoKQotICAgICAgICAgICAgPyAoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRIZWlnaHQoKSA/IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCku
dmFsdWVPcigwX2x1KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkKKyAg
ICAgICAgICAgID8gKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkg
PyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpLnZhbHVlX29yKDBfbHUp
IDogY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQogICAgICAgICAgICAgOiBM
YXlvdXRVbml0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5jcHAKaW5kZXggYWU2YjIwMzEyODZlZTcyN2IwNWY4ZDkwNjZhMzM1YmZjN2M0NGM1Ny4u
YTA1ZWQ2M2FmMDNjMmM5ZDM1ZjdkNDM2Mzg5NzZhMDk2N2JmNDNjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgZm9udEJhc2Vs
aW5lLCBib29sIGZpcnN0TAogICAgICAgICByZXR1cm4gUmVuZGVyRmxleGlibGVCb3g6OmJhc2Vs
aW5lUG9zaXRpb24oZm9udEJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbW9kZSk7CiAg
ICAgLy8gV2UgY2Fubm90IHJlbHkgb24gUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRp
b24oKSBiZWNhdXNlIG9mIGZsZXhib3hlcyBoYXZlIHNvbWUgc3BlY2lhbCBiZWhhdmlvcgogICAg
IC8vIHJlZ2FyZGluZyBiYXNlbGluZXMgdGhhdCBzaG91bGRuJ3QgYXBwbHkgdG8gYnV0dG9ucy4K
LSAgICBMYXlvdXRVbml0IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5
bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAg
TGF5b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhl
c2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKICAgICBMYXlv
dXRVbml0IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdp
blRvcCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICByZXR1cm4gYmFzZWxpbmUgKyBtYXJnaW5Bc2Nl
bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmlu
ZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNw
cAppbmRleCA1YjFhMjg3NDI1ZDA2OTMzN2MwOWY4NTI5MjcyZDE4NDg0ZjE0YTQ1Li40NDBiNzlj
ZDAzMjQ4OGUxYjdhNzQ2ZjdiNjE4Yzk5MzFlZThhNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgZmxvYXQg
UmVuZGVyQ29tYmluZVRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwg
Y29uc3QgRm9udENhc2NhZGUKIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IFJlbmRlckNvbWJpbmVUZXh0
Ojpjb21wdXRlVGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2lzQ29tYmluZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWaXN1YWxseSBjZW50ZXIgbV9jb21i
aW5lZFRleHRXaWR0aC9Bc2NlbnQvRGVzY2VudCB3aXRoaW4gYm94UmVjdAogICAgIEZsb2F0UG9p
bnQgcmVzdWx0ID0gYm94UmVjdC5taW5YTWF4WUNvcm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDQzNjk5ZmVhZDlmNjVjNTk3MmJmZGQ0Mjlj
NzdhZWExMDE2YTY5OTAuLmQzYWMwYzM2MWUwY2Y1ZTA1OGQ3ODRjZjIxMDJjYzY5YjZmNGU1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTEzMSw4
ICsxMzEsOCBAQCBzdGF0aWMgQ291bnRlckRpcmVjdGl2ZXMgbGlzdEl0ZW1Db3VudGVyRGlyZWN0
aXZlcyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+
KHJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiBpdGVtID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0
ZW0+KHJlbmRlcmVyKTsKICAgICAgICAgaWYgKGF1dG8gZXhwbGljaXRWYWx1ZSA9IGl0ZW0uZXhw
bGljaXRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgKmV4cGxpY2l0VmFsdWUsIFdURjo6
bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIGl0ZW0uaXNJblJldmVy
c2VkT3JkZXJlZExpc3QoKSA/IC0xIDogMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgKmV4cGxp
Y2l0VmFsdWUsIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IGl0ZW0uaXNJblJldmVyc2VkT3JkZXJlZExpc3QoKSA/IC0xIDogMSB9OwogICAgIH0KICAgICBp
ZiAoYXV0byBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpczxI
VE1MT0xpc3RFbGVtZW50PigqZWxlbWVudCkpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMg
Q291bnRlckRpcmVjdGl2ZXMgbGlzdEl0ZW1Db3VudGVyRGlyZWN0aXZlcyhSZW5kZXJFbGVtZW50
JiByZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybiB7IGxpc3Quc3RhcnQoKSwgbGlzdC5pc1Jl
dmVyc2VkKCkgPyAxIDogLTEgfTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNIVE1MTGlzdEVs
ZW1lbnQoKmVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHsgMCwgV1RGOjpudWxsb3B0IH07
CisgICAgICAgICAgICByZXR1cm4geyAwLCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAgICAgcmV0
dXJuIHsgfTsKIH0KQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q291bnRlclBs
YW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaQog
ICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9kZSBvciBlbHNlIHdlIGNhbm5vdCBo
YXZlIGEgY291bnRlci4KICAgICBFbGVtZW50KiBnZW5lcmF0aW5nRWxlbWVudCA9IHJlbmRlcmVy
LmdlbmVyYXRpbmdFbGVtZW50KCk7CiAgICAgaWYgKCFnZW5lcmF0aW5nRWxlbWVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKIApAQCAtMTY0LDEzICsxNjQsMTMg
QEAgc3RhdGljIE9wdGlvbmFsPENvdW50ZXJQbGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmkKICAgICAgICAgLy8gU29tZXRpbWVzIGVsZW1lbnRz
IGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJlci4gT25seSB0aGUgZmlyc3Qgb25lIGdldHMgdGhl
IGNvdW50ZXIKICAgICAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY291bnRlci1j
cmFzaC5odG1sCiAgICAgICAgIGlmIChnZW5lcmF0aW5nRWxlbWVudC0+cmVuZGVyZXIoKSAhPSAm
cmVuZGVyZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6
QmVmb3JlOgogICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyAvLyBDb3VudGVycyBhcmUgZm9y
YmlkZGVuIGZyb20gYWxsIG90aGVyIHBzZXVkbyBlbGVtZW50cy4KKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgLy8gQ291bnRlcnMgYXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1
ZG8gZWxlbWVudHMuCiAgICAgfQogCiAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlczsK
QEAgLTE4NywxMCArMTg3LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNv
dW50ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpCiAgICAgfQogCiAg
ICAgaWYgKGRpcmVjdGl2ZXMucmVzZXRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENvdW50ZXJQbGFu
IHsgdHJ1ZSwgc2F0dXJhdGVkU3VtPGludD4oKmRpcmVjdGl2ZXMucmVzZXRWYWx1ZSwgZGlyZWN0
aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZU9yKDApKSB9OworICAgICAgICByZXR1cm4gQ291bnRl
clBsYW4geyB0cnVlLCBzYXR1cmF0ZWRTdW08aW50PigqZGlyZWN0aXZlcy5yZXNldFZhbHVlLCBk
aXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlX29yKDApKSB9OwogICAgIGlmIChkaXJlY3Rp
dmVzLmluY3JlbWVudFZhbHVlKQogICAgICAgICByZXR1cm4gQ291bnRlclBsYW4geyBmYWxzZSwg
KmRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIC0gRmluZHMgdGhlIGluc2VydGlvbiBw
b2ludCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVkIGJ5IGNvdW50ZXJPd25lciwgaXNSZXNldCBh
bmQgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNh
dGVkRmxleGlibGVCb3guY3BwCmluZGV4IGZjMGM2NTQ2NzU0NDYwYzhlZWJjMjZlNmRhNzIxOGFk
NDI2MDFmMTguLjk5ZTkxYmI4MWUwNGI0ZjI3ZGI1NmJlZWJiMDVhODI3YTYyMzAxODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogCiAg
ICAgICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAg
ICAgICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCb3hBbGlnbm1lbnQ6OkJhc2VsaW5l
KSB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5l
QmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20o
KSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5l
QmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9t
KCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxk
LT52ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFzY2VudDsKIApAQCAtNTE5LDcgKzUxOSw3IEBA
IHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1h
cmdpblRvcCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgKGNvbnRlbnRIZWlnaHQoKSAtIChj
aGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkpIC8gMik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEJveEFsaWdubWVudDo6QmFz
ZWxpbmU6IHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJv
dHRvbSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJz
dExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5C
b3R0b20oKSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsK
ICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgKG1heEFzY2Vu
dCAtIGFzY2VudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiMDcwMDY2MzE3MmU3NmFjMDZiNzg4YTg5NmJjZDgy
Y2I5ZWI1MmFhLi5iYmNjYjcxN2E1N2JkM2E1ZGMwMjE4ODZmMTJhOWVkM2QzYjE0MmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS5vcGFjaXR5KCkgPCAxLjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IHN0eWxlKCkub3BhY2l0eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0
aW9uYWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gV1RGOjpudWxsb3B0KSBjb25z
dAorICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhPcHRpb25hbDxIaXRUZXN0UmVxdWVzdD4g
aGl0VGVzdFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
c3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCmluZGV4IGU5MGRjMWE4YWQyYzEyNDA4ZDgwMjY0ZmZkMTdiY2E5MGQyYTkyMzku
LjY3N2M0NzgyNjc0ZjFmZGUyZmQzNDhmMTVkM2I3OGFjMjVjZDlkODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTE3NCw3ICsxMTc0
LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdpbnNJbkNyb3NzQXhp
cyhSZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkKIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJs
ZUJveDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKIHsK
LSAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVP
cihjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOworICAgIExheW91dFVuaXQgYXNjZW50
ID0gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjcm9zc0F4aXNFeHRlbnRGb3JD
aGlsZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBmbG93QXdhcmVNYXJnaW5CZWZvcmVG
b3JDaGlsZChjaGlsZCk7CiB9CiAKQEAgLTEyMDksMTYgKzEyMDksMTYgQEAgdm9pZCBSZW5kZXJG
bGV4aWJsZUJveDo6cHJlcGFyZU9yZGVySXRlcmF0b3JBbmRNYXJnaW5zKCkKIExheW91dFVuaXQg
UmVuZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChSZW5kZXJCb3gm
IGNoaWxkLCBMYXlvdXRVbml0IGNoaWxkU2l6ZSkKIHsKICAgICBMZW5ndGggbWF4ID0gbWFpblNp
emVMZW5ndGhGb3JDaGlsZChNYXhTaXplLCBjaGlsZCk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gbWF4RXh0ZW50ID0gV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1h
eEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5z
aWMoKSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGls
ZChjaGlsZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hp
bGRTaXplLCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgY2hpbGRTaXpl
ID0gc3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAg
ICAgfQogCiAgICAgTGVuZ3RoIG1pbiA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWluU2l6ZSwg
Y2hpbGQpOwogICAgIC8vIEludHJpbnNpYyBzaXplcyBpbiBjaGlsZCdzIGJsb2NrIGF4aXMgYXJl
IGhhbmRsZWQgYnkgdGhlIG1pbi1zaXplOmF1dG8gY29kZSBwYXRoLgogICAgIGlmIChtaW4uaXNT
cGVjaWZpZWQoKSB8fCAobWluLmlzSW50cmluc2ljKCkgJiYgbWFpbkF4aXNJc0NoaWxkSW5saW5l
QXhpcyhjaGlsZCkpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1h
eCgwX2x1LCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWlu
KS52YWx1ZU9yKGNoaWxkU2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6
ZSwgc3RkOjptYXgoMF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1p
blNpemUsIG1pbikudmFsdWVfb3IoY2hpbGRTaXplKSkpOwogICAgIAogICAgIGlmIChzaG91bGRB
cHBseU1pblNpemVBdXRvRm9yQ2hpbGQoY2hpbGQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0
aGUgbWluIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHZhbGlkIGhlcmUsIHdlIG5lZWQgdG8gY29t
ZSB1cCB3aXRoIGEgbm9uIG9wdGlvbmFsIHZlcnNpb24gb2YgY29tcHV0ZU1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQgYW5kCkBAIC0xMjI4LDE3ICsxMjI4LDE3IEBAIExheW91dFVuaXQgUmVuZGVyRmxl
eGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChSZW5kZXJCb3gmIGNoaWxkLCBM
YXlvCiAgICAgICAgIGlmIChjaGlsZC5pc1JlbmRlclJlcGxhY2VkKCkgJiYgdXNlQ2hpbGRBc3Bl
Y3RSYXRpbyhjaGlsZCkpCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluU2l6
ZUZyb21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjaGlsZENyb3NzU2l6ZUxlbmd0aCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50KSku
dmFsdWVPcigwKTsKKyAgICAgICAgICAgIGNvbnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0
ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50
KSkudmFsdWVfb3IoMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNJbnRyaW5zaWNBc3BlY3RSYXRp
bygpICYmIGNoaWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSkKICAgICAgICAgICAgIGNvbnRl
bnRTaXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgo
Y2hpbGQsIGNvbnRlbnRTaXplKTsKICAgICAgICAgQVNTRVJUKGNvbnRlbnRTaXplID49IDApOwot
ICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFs
dWVPcihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRl
bnRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY29udGVudFNpemUpKTsKICAgICAgICAgCiAgICAg
ICAgIExlbmd0aCBtYWluU2l6ZSA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWFpbk9yUHJlZmVy
cmVkU2l6ZSwgY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGRNYWluU2l6ZUlzRGVmaW5pdGUoY2hp
bGQsIG1haW5TaXplKSkgewotICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZlZE1haW5TaXpl
ID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNp
emUsIG1haW5TaXplKS52YWx1ZU9yKDApOworICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZl
ZE1haW5TaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclBy
ZWZlcnJlZFNpemUsIG1haW5TaXplKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAgIEFTU0VSVChy
ZXNvbHZlZE1haW5TaXplID49IDApOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRT
aXplID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2
ZWRNYWluU2l6ZSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3Rk
OjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKHJlc29sdmVkTWFpblNp
emUpKTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHNw
ZWNpZmllZFNpemUsIGNvbnRlbnRTaXplKSk7CiAgICAgICAgIH0KIApAQCAtMTMyNSw5ICsxMzI1
LDkgQEAgRmxleEl0ZW0gUmVuZGVyRmxleGlibGVCb3g6OmNvbnN0cnVjdEZsZXhJdGVtKFJlbmRl
ckJveCYgY2hpbGQsIGJvb2wgcmVsYXlvdXRDaGkKICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiB3
ZSBoYXZlIGFuIGluZGVmaW5pdGUgZmxleCBiYXNpcyBoZXJlIGFuZCB0aHVzIHBlcmNlbnRhZ2Vz
IHNob3VsZCBub3QgcmVzb2x2ZS4KICAgICAgICAgaWYgKGNoaWxkLm5lZWRzTGF5b3V0KCkgfHwg
IW1faW50cmluc2ljU2l6ZUFsb25nTWFpbkF4aXMuY29udGFpbnMoJmNoaWxkKSkgewogICAgICAg
ICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY2hpbGQuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
ICAgICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWln
aHQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGls
ZC5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChXVEY6Om51
bGxvcHQpOworICAgICAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbFdpZHRoKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBjaGlsZC5j
bGVhck92ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwogICAgICAgICAgICAgY2hpbGQuc2V0Q2hpbGRO
ZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgY2hpbGQubGF5b3V0SWZOZWVk
ZWQoKTsKQEAgLTIwODUsNyArMjA4NSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
OmNvbXB1dGVHYXAoUmVuZGVyRmxleGlibGVCb3g6OkdhcFR5cGUgZ2FwVHlwZSkgY29uCiAgICAg
aWYgKExJS0VMWShnYXBMZW5ndGguaXNOb3JtYWwoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBhdXRvIGF2YWlsYWJsZVNpemUgPSB1c2VzUm93R2FwID8gYXZhaWxhYmxlTG9naWNhbEhl
aWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbigpLnZhbHVlT3IoMF9sdSkgOiBjb250ZW50TG9n
aWNhbFdpZHRoKCk7CisgICAgYXV0byBhdmFpbGFibGVTaXplID0gdXNlc1Jvd0dhcCA/IGF2YWls
YWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKS52YWx1ZV9vcigwX2x1
KSA6IGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVu
Z3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZSk7CiB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNjZiZWVkZDIxMWRiMDM2YzRiMDM5M2Fk
MmU2NjU2NWM3MGZmNGFlOC4uOGJmYWNjNmVmMGE2OTQxZTM0MGFlZDg5NmQzZjZlMTgyNWM4YzFm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTM4LDcgKzEz
OCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmF2YWlsYWJsZVNwYWNlRm9y
R3V0dGVycyhHcmlkVHJhY2tTaXppbmdEaXJlY3RpCiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1uczsKICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExlbmd0aCA9IGlz
Um93QXhpcyA/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwogICAgIGlm
IChnYXBMZW5ndGguaXNOb3JtYWwoKSB8fCAhZ2FwTGVuZ3RoLmxlbmd0aCgpLmlzUGVyY2VudE9y
Q2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCgpIDogY29udGVudExvZ2ljYWxIZWlnaHQoKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBA
QCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgUmVuZGVyQmxvY2s6Omhh
c0RlZmluaXRlTG9naWNhbEhlaWdodCgpIG9ubHkgYnV0IGl0IGRvZXMgbm90IHdvcmsgZm9yIHBv
c2l0aW9uZWQgc3R1ZmYuCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBjYWNoaW5nIHRoZSBo
YXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgdmFsdWUgdGhyb3VnaG91dCB0aGUgbGF5b3V0LgogICAg
ICAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBjYWNoZSB0aGUgaGFzRGVmaW5pdGVMb2dp
Y2FsSGVpZ2h0IGlmIHRoZSBjYWxsIG9mIFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxI
ZWlnaHQoKSBjYXVzZXMgYSByZWxldmFudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgotICAgICAg
ICBib29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCA9IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0
ZUxvZ2ljYWxIZWlnaHQoKSB8fCBoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IGNvbXB1
dGVDb250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgfHwgaGFz
T3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQo
TWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIG1faGFzQW55T3J0aG9nb25hbEl0ZW0gPSBmYWxzZTsKICAgICAgICAgZm9y
IChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkpCkBAIC0zMjQsNyArMzI0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlk
R2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW8KICAg
ICBpZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpCiAgICAgICAgIHJldHVybiAwX2x1OwogCi0gICAg
cmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52
YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgp
LCBhdmFpbGFibGVTaXplLnZhbHVlX29yKDApKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJHcmlk
OjpncmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdp
ZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KIAogICAgIEdyaWQgZ3JpZChj
b25zdF9jYXN0PFJlbmRlckdyaWQmPigqdGhpcykpOwogICAgIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSBhbGdvcml0aG0odGhpcywgZ3JpZCk7Ci0gICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0
aG0sIFdURjo6bnVsbG9wdCk7CisgICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0aG0sIHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBwZXJmb3JtR3JpZEl0ZW1zUHJlTGF5b3V0KGFsZ29yaXRobSk7CiAK
QEAgLTQ0MywxMSArNDQzLDExIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiB2b2lkIFJlbmRl
ckdyaWQ6OmNvbXB1dGVUcmFja1NpemVzRm9ySW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtJiBhbGdvcml0aG0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24s
IExheW91dFVuaXQqIG1pbkludHJpbnNpY1NpemUsIExheW91dFVuaXQqIG1heEludHJpbnNpY1Np
emUpIGNvbnN0CiB7CiAgICAgY29uc3QgR3JpZCYgZ3JpZCA9IGFsZ29yaXRobS5ncmlkKCk7Ci0g
ICAgYWxnb3JpdGhtLnNldHVwKGRpcmVjdGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgZ3JpZCks
IEludHJpbnNpY1NpemVDb21wdXRhdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICBhbGdvcml0aG0u
c2V0dXAoZGlyZWN0aW9uLCBudW1UcmFja3MoZGlyZWN0aW9uLCBncmlkKSwgSW50cmluc2ljU2l6
ZUNvbXB1dGF0aW9uLCBzdGQ6Om51bGxvcHQpOwogICAgIGFsZ29yaXRobS5ydW4oKTsKIAogICAg
IHNpemVfdCBudW1iZXJPZlRyYWNrcyA9IGFsZ29yaXRobS50cmFja3MoZGlyZWN0aW9uKS5zaXpl
KCk7Ci0gICAgTGF5b3V0VW5pdCB0b3RhbEd1dHRlcnNTaXplID0gZ3V0dGVyc1NpemUoZ3JpZCwg
ZGlyZWN0aW9uLCAwLCBudW1iZXJPZlRyYWNrcywgV1RGOjpudWxsb3B0KTsKKyAgICBMYXlvdXRV
bml0IHRvdGFsR3V0dGVyc1NpemUgPSBndXR0ZXJzU2l6ZShncmlkLCBkaXJlY3Rpb24sIDAsIG51
bWJlck9mVHJhY2tzLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKG1pbkludHJpbnNpY1NpemUp
CiAgICAgICAgICptaW5JbnRyaW5zaWNTaXplID0gYWxnb3JpdGhtLm1pbkNvbnRlbnRTaXplKCkg
KyB0b3RhbEd1dHRlcnNTaXplOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIHVuc2lnbmVkIFJlbmRlckdy
aWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjCiAgICAgICAgIGlmIChtYXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAg
IGlmIChtYXhTaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNv
bnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tM
b2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9y
Q29udGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAgICBMYXlvdXRV
bml0IG1heFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNpemUsIGNvbnRhaW5pbmdCbG9j
a0F2YWlsYWJsZVNpemUudmFsdWVPcihMYXlvdXRVbml0KCkpKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgbWF4U2l6ZVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWF4U2l6ZSwgY29udGFpbmluZ0Js
b2NrQXZhaWxhYmxlU2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKICAgICAgICAgICAgIGF2
YWlsYWJsZU1heFNpemUgPSBpc1Jvd0F4aXMgPyBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRo
Rm9yQm94U2l6aW5nKG1heFNpemVWYWx1ZSwgbWF4U2l6ZS50eXBlKCkpIDogYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcobWF4U2l6ZVZhbHVlKTsKICAgICAgICAgfQog
CkBAIC00ODcsMTMgKzQ4NywxMyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1Jl
cGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBp
ZiAobWluU2l6ZS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5pbmdC
bG9ja0F2YWlsYWJsZVNpemUgJiYgbWluU2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8g
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodEZvckNvbnRlbnQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtaW5TaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtaW5TaXpl
LCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7Cisg
ICAgICAgICAgICBMYXlvdXRVbml0IG1pblNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pblNp
emUsIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7
CiAgICAgICAgICAgICBhdmFpbGFibGVNaW5TaXplID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhtaW5TaXplVmFsdWUsIG1pblNpemUudHlwZSgp
KSA6IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG1pblNpemVWYWx1
ZSk7CiAgICAgICAgICAgICBpZiAoIW1heFNpemUuaXNTcGVjaWZpZWQoKSkKICAgICAgICAgICAg
ICAgICBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGF2YWlsYWJsZVNpemUgPSBzdGQ6Om1heChhdmFpbGFibGVNaW5TaXplLnZhbHVlT3IoTGF5
b3V0VW5pdCgpKSwgYXZhaWxhYmxlTWF4U2l6ZS52YWx1ZU9yKExheW91dFVuaXQoKSkpOworICAg
ICAgICBhdmFpbGFibGVTaXplID0gc3RkOjptYXgoYXZhaWxhYmxlTWluU2l6ZS52YWx1ZV9vcihM
YXlvdXRVbml0KCkpLCBhdmFpbGFibGVNYXhTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwog
ICAgIH0KIAogICAgIExheW91dFVuaXQgYXV0b1JlcGVhdFRyYWNrc1NpemU7CkBAIC02MjMsNyAr
NjIzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobSYgYWxnb3JpdGhtLCBPcHRpb25hbDwKICAgICAgICAgaWYgKCFjaGlsZC0+aGFz
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSkKICAgICAgICAg
ICAgIGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0
aChMYXlvdXRVbml0KCkpOwogICAgICAgICBpZiAoIWNoaWxkLT5oYXNPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRP
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dExvZ2ljYWxIZWlnaHQoc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBHcmlkQXJlYSBhcmVhID0g
Z3JpZC5ncmlkSXRlbUFyZWEoKmNoaWxkKTsKICAgICAgICAgaWYgKCFhcmVhLnJvd3MuaXNJbmRl
ZmluaXRlKCkpCkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmFwcGx5U3Ry
ZXRjaEFsaWdubWVudFRvQ2hpbGRJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogICAgIGJvb2wg
YWxsb3dlZFRvU3RyZXRjaENoaWxkQmxvY2tTaXplID0gYmxvY2tGbG93SXNDb2x1bW5BeGlzID8g
YWxsb3dlZFRvU3RyZXRjaENoaWxkQWxvbmdDb2x1bW5BeGlzKGNoaWxkKSA6IGFsbG93ZWRUb1N0
cmV0Y2hDaGlsZEFsb25nUm93QXhpcyhjaGlsZCk7CiAgICAgaWYgKGFsbG93ZWRUb1N0cmV0Y2hD
aGlsZEJsb2NrU2l6ZSkgewogICAgICAgICBMYXlvdXRVbml0IHN0cmV0Y2hlZExvZ2ljYWxIZWln
aHQgPSBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkQmVmb3JlU3RyZXRjaGluZyhHcmlk
TGF5b3V0RnVuY3Rpb25zOjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JD
aGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbikudmFsdWUoKSwgY2hpbGQpOwotICAgICAg
ICBMYXlvdXRVbml0IGRlc2lyZWRMb2dpY2FsSGVpZ2h0ID0gY2hpbGQuY29uc3RyYWluTG9naWNh
bEhlaWdodEJ5TWluTWF4KHN0cmV0Y2hlZExvZ2ljYWxIZWlnaHQsIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIExheW91dFVuaXQgZGVzaXJlZExvZ2ljYWxIZWlnaHQgPSBjaGlsZC5jb25zdHJhaW5M
b2dpY2FsSGVpZ2h0QnlNaW5NYXgoc3RyZXRjaGVkTG9naWNhbEhlaWdodCwgc3RkOjpudWxsb3B0
KTsKICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoZGVzaXJlZExvZ2lj
YWxIZWlnaHQpOwogCiAgICAgICAgIC8vIENoZWNraW5nIHRoZSBsb2dpY2FsLWhlaWdodCBvZiBh
IGNoaWxkIGlzbid0IGVub3VnaC4gU2V0dGluZyBhbiBvdmVycmlkZSBsb2dpY2FsLWhlaWdodApA
QCAtMTI2Nyw3ICsxMjY3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGkKIE9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBp
ZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygpIHx8IHNob3Vs
ZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgUmVuZGVyQm94
KiBiYXNlbGluZUNoaWxkID0gbnVsbHB0cjsKICAgICAvLyBGaW5kaW5nIHRoZSBmaXJzdCBncmlk
IGl0ZW0gaW4gZ3JpZCBvcmRlci4KQEAgLTEyODcsOSArMTI4Nyw5IEBAIE9wdGlvbmFsPExheW91
dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAg
ICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGJhc2VsaW5lID0gR3JpZExheW91
dEZ1bmN0aW9uczo6aXNPcnRob2dvbmFsQ2hpbGQoKnRoaXMsICpiYXNlbGluZUNoaWxkKSA/IFdU
Rjo6bnVsbG9wdCA6IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgYXV0
byBiYXNlbGluZSA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzT3J0aG9nb25hbENoaWxkKCp0aGlz
LCAqYmFzZWxpbmVDaGlsZCkgPyBzdGQ6Om51bGxvcHQgOiBiYXNlbGluZUNoaWxkLT5maXJzdExp
bmVCYXNlbGluZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIGJvdHRvbSBpZiBubyB2
YWxpZCBiYXNlbGluZS4KICAgICBpZiAoIWJhc2VsaW5lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcGFzcyB8ZGlyZWN0aW9ufCBpbnRvIGZpcnN0TGluZUJhc2VsaW5lIGFuZCBzdG9w
IGJhaWxpbmcgb3V0IGlmIHdlJ3JlIGEgd3JpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaAppbmRleCAxMjk2NzU5MGI0YzMzODRkM2QxNTQxZTNhZDAwODljY2UzZTEzMmEy
Li5iYWQwYWRkMDQ2YmI5MjVhOWYyZmNiYmQ2NTdlMDVhOGI2YWUxMDIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBoYXNTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTaGFkb3dDb250
cm9scyB8fCBtX2hhc0ltYWdlT3ZlcmxheTsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1YWwp
IGNvbnN0IG92ZXJyaWRlOwotICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxv
cHQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNh
bEhlaWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51
bGxvcHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHko
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRl
eCBlN2EwYTI3YTViY2E3Mjg5OTkyMDJhNjVjM2UyOWQyYTY2OTY2NmU3Li41MjliMWM2NzA4OTQ4
MDllMjc4Yzc1ZjZlZjNkYmQ0Zjc0NzI5Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcApAQCAtOTYzLDcgKzk2Myw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+
IFJlbmRlcklubGluZTo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0
UmVjCiAgICAgICAgIGJvb2wgaXNFbXB0eSA9ICFkb3duY2FzdDxSZW5kZXJCb3g+KCpsb2NhbENv
bnRhaW5lcikuYXBwbHlDYWNoZWRDbGlwQW5kU2Nyb2xsUG9zaXRpb24oYWRqdXN0ZWRSZWN0LCBj
b250YWluZXIsIGNvbnRleHQpOwogICAgICAgICBpZiAoaXNFbXB0eSkgewogICAgICAgICAgICAg
aWYgKGNvbnRleHQub3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVz
ZUVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIHJldHVybiBhZGp1c3RlZFJlY3Q7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlODBkNWU3MDMyY2NhZTJmZjI0MGE0ZDFi
MTk2M2Q0ZTU3YTNlNDU2Li4xODVmNmNmNmE5YTkzZmU4MDc5ZWM0MzVjNmVhNDZiMTZmNzhiOGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTk2Myw3ICs5
NjMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9t
ZXRyeU1hcCogZ2VvbWV0cnlNYXAsIE9wdGlvblNldAogICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHdpbGwgY29udmVydCB0aGlzIHRvIGp1c3QgdGFrZSB0aGUgb2xkIGFuZCBuZXcg
UmVwYWludExheW91dFJlY3RzIG9uY2UKICAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2hhbmdl
IG90aGVyIGNhbGxlcnMgdG8gdXNlIFJlcGFpbnRMYXlvdXRSZWN0cy4KLSAgICAgICAgICAgICAg
ICAgICAgYXV0byByZXNvbHZlZE9sZFJlY3RzID0gb2xkUmVjdHMudmFsdWVPcihMYXllclJlcGFp
bnRSZWN0cyB7IH0pOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc29sdmVkT2xkUmVjdHMg
PSBvbGRSZWN0cy52YWx1ZV9vcihMYXllclJlcGFpbnRSZWN0cyB7IH0pOwogICAgICAgICAgICAg
ICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKHJlcGFpbnRDb250
YWluZXIsIHJlc29sdmVkT2xkUmVjdHMuY2xpcHBlZE92ZXJmbG93UmVjdCwgcmVzb2x2ZWRPbGRS
ZWN0cy5vdXRsaW5lQm91bmRzUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdSZWN0
cy0+Y2xpcHBlZE92ZXJmbG93UmVjdCwgJm5ld1JlY3RzLT5vdXRsaW5lQm91bmRzUmVjdCk7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMzQ2NCw3ICszNDY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdAogICAgIExheW91dFNpemUgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCA9IG9mZnNldEZvclRo
aXNMYXllciAtIExheW91dFNpemUoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVy
KTsKICAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyhwYWludGlu
Z0luZm8pOwogICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnJvb3RMYXllciA9IHRoaXM7Ci0g
ICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVu
Y2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmlu
ZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CisgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3QgPSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvLnN1YnBpeGVsT2Zmc2V0ID0gYWRqdXN0ZWRTdWJwaXhlbE9mZnNldDsKICAgICBwYWlu
dExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJ
bmZvLCBwYWludEZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApp
bmRleCA0Yjk5ZDgxMTk3MzExNjdiYmNmNzBjYjc3NDQyOGM3ZGVmNjgyZDY4Li45NTJhZTRkM2Y3
ZWE2MGE5Y2JjYjY4MWQ2NzJmZjUwMjkwZGUxNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaApAQCAtNjcyLDcgKzY3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBD
cm9zc2VzUGFpbnRpbmdCb3VuZGFyeSgpIGNvbnN0OwogCiAgICAgLy8gUGFzcyBvZmZzZXRGcm9t
Um9vdCBpZiBrbm93bi4KLSAgICBib29sIGludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91
dFJlY3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBS
ZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwg
Y29uc3QgT3B0aW9uYWw8TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94ID0gV1RGOjpudWxs
b3B0KSBjb25zdDsKKyAgICBib29sIGludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJl
Y3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29u
c3QgT3B0aW9uYWw8TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94ID0gc3RkOjpudWxsb3B0
KSBjb25zdDsKIAogICAgIGVudW0gQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFnIHsKICAgICAgICAg
SW5jbHVkZVNlbGZUcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRl
eCAzMzY4MTZhMTA4NzQyOTY0OGZhNzI4OTk4YjM3MjUzYTU3MGE0NDg1Li40MTNhNmUwZjA0Zjg1
YzdkNmMwZWQ3ODJhZTJiZGI3ZjU0OTMxZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjM0MiwxMSArMjM0MiwxMSBA
QCBPcHRpb25hbDxTdHJpbmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1MYXllclRy
ZWVBc1RleHQoRWxlbWVudCYgZWxlbWVudAogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdGb3JMYXll
clRyZWVBc1RleHREdW1wKCk7CiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkgfHwgIWVsZW1l
bnQucmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIGxheWVyTW9kZWxPYmpl
Y3QgPSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqZWxlbWVudC5yZW5kZXJlcigp
KTsKICAgICBpZiAoIWxheWVyTW9kZWxPYmplY3QubGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvKiBiYWNraW5nID0gbGF5ZXJNb2RlbE9iamVjdC5sYXllcigpLT5iYWNraW5n
KCk7CiAgICAgcmV0dXJuIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllclRy
ZWVBc1RleHQoZmxhZ3MpOwpAQCAtNDQ0Miw3ICs0NDQyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNoU2Nyb2xsaW5nTm9kZShSZW5kZXJMYXllciYgbGF5
ZXIsIFMKICAgICAKICAgICBub2RlSUQgPSByZWdpc3RlclNjcm9sbGluZ05vZGVJRCgqc2Nyb2xs
aW5nQ29vcmRpbmF0b3IsIG5vZGVJRCwgbm9kZVR5cGUsIHRyZWVTdGF0ZSk7CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsaW5nVHJlZSwgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNvbXBvc2l0
b3IgIiA8PCB0aGlzIDw8ICIgYXR0YWNoU2Nyb2xsaW5nTm9kZSAiIDw8IG5vZGVJRCA8PCAiIChs
YXllciAiIDw8IGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAi
KSB0eXBlICIgPDwgbm9kZVR5cGUgPDwgIiBwYXJlbnQgIiA8PCB0cmVlU3RhdGUucGFyZW50Tm9k
ZUlELnZhbHVlT3IoMCkpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmdUcmVlLCBzdHJl
YW0gPDwgIlJlbmRlckxheWVyQ29tcG9zaXRvciAiIDw8IHRoaXMgPDwgIiBhdHRhY2hTY3JvbGxp
bmdOb2RlICIgPDwgbm9kZUlEIDw8ICIgKGxheWVyICIgPDwgYmFja2luZy0+Z3JhcGhpY3NMYXll
cigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIHR5cGUgIiA8PCBub2RlVHlwZSA8PCAiIHBhcmVu
dCAiIDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCkpOwogCiAgICAgaWYgKCFu
b2RlSUQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ2Nyw3ICs0NDY3LDcgQEAgU2Nyb2xsaW5n
Tm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJTY3JvbGxpbmdOb2RlSUQoU2Ny
b2xsaW5nQ29vcmRpbmEKICAgICBpZiAobm9kZVR5cGUgPT0gU2Nyb2xsaW5nTm9kZVR5cGU6OlN1
YmZyYW1lICYmICF0cmVlU3RhdGUucGFyZW50Tm9kZUlEKQogICAgICAgICBub2RlSUQgPSBzY3Jv
bGxpbmdDb29yZGluYXRvci5jcmVhdGVOb2RlKG5vZGVUeXBlLCBub2RlSUQpOwogICAgIGVsc2Ug
ewotICAgICAgICBhdXRvIG5ld05vZGVJRCA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLmluc2VydE5v
ZGUobm9kZVR5cGUsIG5vZGVJRCwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApLCB0
cmVlU3RhdGUubmV4dENoaWxkSW5kZXgpOworICAgICAgICBhdXRvIG5ld05vZGVJRCA9IHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmluc2VydE5vZGUobm9kZVR5cGUsIG5vZGVJRCwgdHJlZVN0YXRlLnBh
cmVudE5vZGVJRC52YWx1ZV9vcigwKSwgdHJlZVN0YXRlLm5leHRDaGlsZEluZGV4KTsKICAgICAg
ICAgaWYgKG5ld05vZGVJRCAhPSBub2RlSUQpIHsKICAgICAgICAgICAgIC8vIFdlJ2xsIGdldCBh
IG5ldyBub2RlSUQgaWYgdGhlIHR5cGUgY2hhbmdlZCAoYW5kIG5vdCBpZiB0aGUgbm9kZSBpcyBu
ZXcpLgogICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3IudW5wYXJlbnRDaGlsZHJlbkFu
ZERlc3Ryb3lOb2RlKG5vZGVJRCk7CkBAIC00NTg4LDcgKzQ1ODgsNyBAQCBTY3JvbGxpbmdOb2Rl
SUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRpb25Gb3JMYXll
cihSZW5kZXJMYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvIG5ld05vZGVJ
RCA9IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICBhdXRvIG5ld05vZGVJ
RCA9IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAKICAgICBTY3JvbGxpbmdU
cmVlU3RhdGUgY2hpbGRUcmVlU3RhdGU7CiAgICAgU2Nyb2xsaW5nVHJlZVN0YXRlKiBjdXJyZW50
VHJlZVN0YXRlID0gJnRyZWVTdGF0ZTsKQEAgLTQ2NDQsMTAgKzQ2NDQsMTAgQEAgU2Nyb2xsaW5n
Tm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclZpZXdw
b3J0Q29uc3RyYWluZWQKICAgICBhdXRvIG5ld05vZGVJRCA9IGF0dGFjaFNjcm9sbGluZ05vZGUo
bGF5ZXIsIG5vZGVUeXBlLCB0cmVlU3RhdGUpOwogICAgIGlmICghbmV3Tm9kZUlEKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRC52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJ
RC52YWx1ZV9vcigwKTsKICAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcs
IHN0cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRDb25zdHJhaW5lZCAiIDw8IG5vZGVUeXBl
IDw8ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChsYXllciAiIDw8IGxheWVyLmJhY2tpbmco
KS0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIGFzIGNoaWxkIG9mICIg
PDwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oQ29tcG9zaXRpbmcsIHN0cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRDb25zdHJhaW5l
ZCAiIDw8IG5vZGVUeXBlIDw8ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChsYXllciAiIDw8
IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIp
IGFzIGNoaWxkIG9mICIgPDwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKSk7CiAK
ICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCiAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXll
ci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSB9KTsKQEAgLTQ3MjAsNyArNDcyMCw3IEBAIFNj
cm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVG
b3JTY3JvbGxpbmdSb2xlKFJlbmRlCiAKICAgICAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0
ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUu
cGFyZW50Tm9kZUlELnZhbHVlX29yKDApOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNoYW5n
ZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQpAQCAtNDczNCw3ICs0NzM0LDcg
QEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5n
Tm9kZUZvclNjcm9sbGluZ1JvbGUoUmVuZGUKICAgICAgICAgbmV3Tm9kZUlEID0gYXR0YWNoU2Ny
b2xsaW5nTm9kZShsYXllciwgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93LCB0cmVlU3RhdGUp
OwogICAgICAgICBpZiAoIW5ld05vZGVJRCkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9y
KDApOworICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3Io
MCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5n
Tm9kZUNoYW5nZUZsYWdzOjpMYXllcikKQEAgLTQ3NTUsNyArNDc1NSw3IEBAIFNjcm9sbGluZ05v
ZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxp
bmdQcm94eVJvbGUoCiAgICAgYXV0byogY2xpcHBpbmdTdGFjayA9IGxheWVyLmJhY2tpbmcoKS0+
YW5jZXN0b3JDbGlwcGluZ1N0YWNrKCk7CiAgICAgaWYgKCFjbGlwcGluZ1N0YWNrKSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRC52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJ
RC52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEID0gMDsK
QEAgLTQ3NjYsNyArNDc2Niw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdQcm94eVJvbGUoCiAgICAgICAgIG5v
ZGVJRCA9IHJlZ2lzdGVyU2Nyb2xsaW5nTm9kZUlEKCpzY3JvbGxpbmdDb29yZGluYXRvciwgZW50
cnkub3ZlcmZsb3dTY3JvbGxQcm94eU5vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93
UHJveHksIHRyZWVTdGF0ZSk7CiAgICAgICAgIGlmICghbm9kZUlEKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50
Tm9kZUlELnZhbHVlT3IoMCk7CisgICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5v
ZGVJRC52YWx1ZV9vcigwKTsKICAgICAgICAgfQogICAgICAgICBlbnRyeS5vdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZUlEID0gbm9kZUlEOwogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpAQCAt
NDc5NSw3ICs0Nzk1LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclNjcm9sbGluZ1Byb3h5Um9sZSgKICAgICAvLyBGSVhNRTog
YWxzbyBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2sKIAog
ICAgIGlmICghbm9kZUlEKQotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9v
cigwKTsKIAogICAgIHJldHVybiBub2RlSUQ7CiB9CkBAIC00ODA3LDcgKzQ4MDcsNyBAQCBTY3Jv
bGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9y
RnJhbWVIb3N0aW5nUm9sZShSZQogICAgIGF1dG8gbmV3Tm9kZUlEID0gYXR0YWNoU2Nyb2xsaW5n
Tm9kZShsYXllciwgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9zdGluZywgdHJlZVN0YXRlKTsK
ICAgICBpZiAoIW5ld05vZGVJRCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAg
cmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAg
aWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQpAQCAtNDgyMyw3
ICs0ODIzLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
U2Nyb2xsaW5nTm9kZUZvclBvc2l0aW9uaW5nUm9sZShSZW4KICAgICBhdXRvIG5ld05vZGVJRCA9
IGF0dGFjaFNjcm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVk
LCB0cmVlU3RhdGUpOwogICAgIGlmICghbmV3Tm9kZUlEKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9y
KDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKTsK
ICAgICB9CiAKICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcAppbmRleCAyYmI1YTU1Mjg5ZjY0ODk4MDE0Zjc0NWViNGUxYjEzMDEwYTUxNDlm
Li4wYTM3MTlhMjM1OGQ1YWFjZjhlOWIxNjk2MTMxNmRlZGIzZWQ3NmVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0y
MjYsNyArMjI2LDcgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91bGRQbGFjZVZl
cnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QKIAogT3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVj
dHM+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3RzKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0cygpIDogV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBoYXNMYXllcigpID8gbGF5ZXIoKS0+cmVwYWludFJlY3RzKCkg
OiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3RhcnRB
bmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBj
b25zdCBLZXlmcmFtZUxpc3QmIGtleWZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCBkZTJiY2U1MWZh
OWI4ZDExYTBlNDllOTFmNGZhOWZkMWQ1MDU4NTgzLi5jZGU0NTcxZmQ0OTY0ZWNmNWE3NThlOGJh
MDkwMWQ3N2YwMWMyN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjphcHBseVBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbklm
TmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsVG9PZmZzZXQoc2Nyb2xsT2Zm
c2V0RnJvbVBvc2l0aW9uKG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uLnZhbHVlKCkpKTsKLSAg
ICBtX3Bvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc3RM
YXlvdXRTY3JvbGxQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjpzY3JvbGxUb1hQb3NpdGlvbihpbnQgeCwgY29uc3QgU2Nyb2xsUG9z
aXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zKQpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgT3B0aW9u
YWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9z
aXRpb24oY29uc3QgU2Nyb2wKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoYm94LT5sb2NhbFRv
QWJzb2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0U2Nyb2xsZWQp
KSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVs
dGEsIFNjcm9sbGFibGVBcmVhKiogc2Nyb2xsZWRBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDlkYWQ1MTcxMDc4ZmM2MjNlZDhjYjFhZjBhYzY0
Y2JjYTQzZWM5OTMuLjI2YmIzY2JlMmY4OWY5MzY0MDY3MDczYmQ4ZTBhYTUwM2M5OTdmZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTI5Myw3ICsy
OTMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGluZ0JveFJlY3QoY29u
c3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW0oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgY29uc3QgUGFpbnRGdW5jdGlvbiYgcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0
ZW1zU2l6ZSA9IG51bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4
T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zm
c2V0KTsKKyAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0
ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQg
ZW5kSW5kZXggPSBmaXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJsZUl0ZW1zKENvbnNpZGVyUGFk
ZGluZzo6WWVzKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNpYmxlSXRlbTsgaSA8IGxpc3RJ
dGVtc1NpemUgJiYgaSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAgIHBhaW50RnVuY3Rpb24ocGFp
bnRJbmZvLCBwYWludE9mZnNldCwgaSk7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBSZW5kZXJM
aXN0Qm94OjpzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpCiAKIGJv
b2wgUmVuZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCkKIHsKLSAgICBp
bnQgZmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9w
QXJlYS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRl
eE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhP
ZmZzZXQpOwogICAgIGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nQm90dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1J
bnNpZGVQYWRkaW5nQm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBh
ZGRpbmdCb3R0b20oKQogICAgICAgICA6IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMo
KTsKQEAgLTY3OSw4ICs2NzksOCBAQCBpbnQgUmVuZGVyTGlzdEJveDo6bnVtYmVyT2ZWaXNpYmxl
SXRlbXNJblBhZGRpbmdCb3R0b20oKSBjb25zdAogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1
dGVGaXJzdEluZGV4ZXNWaXNpYmxlSW5QYWRkaW5nVG9wQm90dG9tQXJlYXMoKQogewotICAgIG1f
aW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYSA9IFdURjo6bnVsbG9w
dDsKLSAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRp
bmdUb3BBcmVhID0gc3RkOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1J
bnNpZGVQYWRkaW5nQm90dG9tQXJlYSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCBtYXhpbXVt
TnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BBcmVhID0gcGFkZGluZ1RvcCgpIC8gaXRl
bUhlaWdodCgpOwogICAgIGlmIChtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdU
b3BBcmVhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcApp
bmRleCBiMWIxNGE5ZDhjZTA5MzQ0ODRkYjQ3NjlhYTI2YWVkZjA5NTA3N2M4Li5mZGJlMTMwOWY3
MTk2OWNiMGVlYTE5ZDAxZTZhZDVkMjUxNmEyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckxp
c3RJdGVtOjp1cGRhdGVWYWx1ZU5vdygpIGNvbnN0CiB2b2lkIFJlbmRlckxpc3RJdGVtOjp1cGRh
dGVWYWx1ZSgpCiB7CiAgICAgaWYgKCFtX3ZhbHVlV2FzU2V0RXhwbGljaXRseSkgewotICAgICAg
ICBtX3ZhbHVlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3ZhbHVlID0gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAobV9tYXJrZXIpCiAgICAgICAgICAgICBtX21hcmtlci0+c2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEl0ZW0uaAppbmRleCA0ZjEzYjgzOTU3NzNlN2Y3NjEwZDkwNjIwMDA1OGRl
YTY2MWYzMmEwLi5kNmQ5YjNlNzJiMTAwYzFkMjZmOTNhZDNmYTBiMWI3ZjFlYjcxZGU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgp
OwogCi0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZVdhc1NldEV4cGxpY2l0bHkgPyBtX3ZhbHVlIDogV1RGOjpudWxsb3B0OyB9CisgICAgT3B0
aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4
cGxpY2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBzZXRFeHBsaWNp
dFZhbHVlKE9wdGlvbmFsPGludD4pOwogCiAgICAgdm9pZCBzZXROb3RJbkxpc3QoYm9vbCBub3RJ
bkxpc3QpIHsgbV9ub3RJbkxpc3QgPSBub3RJbkxpc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDBlZmQ1OTM1OWI0Y2Iy
MDRjN2Q1NjM3Njc5NDVlMTk3OWZiM2MzMTcuLmZmY2JhMDRhYTM0NWM0ODRhOTlkODNjNjZiYjRi
ZjRiZTBhMGRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcApAQCAtNDI1LDcgKzQyNSw3IEBAIExheW91dFVuaXQgUmVuZGVyTXVs
dGlDb2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0CiAgICAgTGF5b3V0
VW5pdCBhdmFpbGFibGVIZWlnaHQgPSBtdWx0aUNvbHVtbkZsb3coKS0+Y29sdW1uSGVpZ2h0QXZh
aWxhYmxlKCk7CiAgICAgTGF5b3V0VW5pdCBtYXhDb2x1bW5IZWlnaHQgPSBhdmFpbGFibGVIZWln
aHQgPyBhdmFpbGFibGVIZWlnaHQgOiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6bWF4TG9naWNhbEhl
aWdodCgpOwogICAgIGlmICghbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4Q29sdW1uSGVp
Z2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwg
bXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIFdURjo6bnVsbG9wdCkudmFsdWVPciht
YXhDb2x1bW5IZWlnaHQpKTsKKyAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4
Q29sdW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQo
TWF4U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCku
dmFsdWVfb3IobWF4Q29sdW1uSGVpZ2h0KSk7CiAgICAgcmV0dXJuIGhlaWdodEFkanVzdGVkRm9y
U2V0T2Zmc2V0KG1heENvbHVtbkhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggYmFhMTMzZWY3YjM5NzY1YWZiZTI0YmUwZjdjOTQ3M2I5
MmYwZjI2Yi4uYzhhMzFkY2Y5N2IzYWRlMTAyZTQ1MGNlODZjY2Q3ZjRjMjMyYjI2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEwMDgsNyArMTAwOCw3
IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0
SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjCiAgICAgICAgIGJvb2wgaXNFbXB0eSA9ICFkb3du
Y2FzdDxSZW5kZXJCb3g+KCpwYXJlbnQpLmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbFBvc2l0aW9u
KGFkanVzdGVkUmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICAgICAgaWYgKGlzRW1wdHkp
IHsKICAgICAgICAgICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuY29udGFpbnMoVmlzaWJsZVJlY3RD
b250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGRjYjRkZjUzMzhk
ZGNiMDYxODE0ZDdmNmZiMDdmMmQ5NGNjNzRlOGQuLjY0NGUxODNiNDZjZmUwNjIxMzBkMGUzNTc1
YmJjODVkMjdiZjU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
QEAgLTY0NCw3ICs2NDQsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGNvbXB1dGVGbG9hdFJl
Y3RGb3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogCiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRo
ZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIHRoZSBsb2NhdGlvbiBpbiBjb250
YWluZXIgc3BhY2Ugd2hlcmUgdGhpcyByZWN0IGlzIHZpc2libGUsCi0gICAgLy8gd2hlbiBjbGlw
cGluZyBhbmQgc2Nyb2xsaW5nIGFzIHNwZWNpZmllZCBieSB0aGUgY29udGV4dC4gV2hlbiB1c2lu
ZyBlZGdlLWluY2x1c2l2ZSBpbnRlcnNlY3Rpb24sIHJldHVybiBXVEY6Om51bGxvcHQKKyAgICAv
LyB3aGVuIGNsaXBwaW5nIGFuZCBzY3JvbGxpbmcgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb250ZXh0
LiBXaGVuIHVzaW5nIGVkZ2UtaW5jbHVzaXZlIGludGVyc2VjdGlvbiwgcmV0dXJuIHN0ZDo6bnVs
bG9wdAogICAgIC8vIHJhdGhlciB0aGFuIGFuIGVtcHR5IHJlY3QgaWYgdGhlIHJlY3QgaXMgY29t
cGxldGVseSBjbGlwcGVkIG91dCBpbiBjb250YWluZXIgc3BhY2UuCiAgICAgdmlydHVhbCBPcHRp
b25hbDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVj
dD4gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVj
dENvbnRleHQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
aAppbmRleCBjNWU5NzJjYTU1NTNlMTg1ODM4MjMzM2JkNzdmOTk1NGE5NzRjZTI3Li41MmNlNjQ5
YjEzZjRkZDI5ZGIwYTEyNTczODI2MzEwN2ZhZmM2Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UmVuZGVyUmVwbGFjZWQoKTsKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25z
dCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gV1RGOjpudWxsb3B0KSBj
b25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChj
b25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHJl
cGxhY2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiByZXBsYWNlZENvbnRlbnRSZWN0KGlu
dHJpbnNpY1NpemUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CmluZGV4IDliOGNmYzQ4NTY4MmE1NGVkN2MxYWI1NWRmMTU0NzczYmZlMmE2MTEuLmY5MmM5MzE3
MWViOWMyYjAyMTk0MTI2OWY3MDk0NWJjMzg2Yzc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMzU1LDkgKzM1NSw5IEBAIExheW91dFVuaXQgUmVuZGVy
VGFibGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0IExl
bmd0aCYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdHlsZUxvZ2ljYWxI
ZWlnaHQudmFsdWUoKSAtIGJvcmRlcnMpOwogICAgIH0gZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVp
Z2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNl
bnRhZ2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVPcigwKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWln
aHQpLnZhbHVlX29yKDApOwogICAgIGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc0ludHJp
bnNpYygpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVp
Z2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQ
YWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29t
cHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0
LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52
YWx1ZV9vcigwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiAwX2x1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAppbmRleCBiNzU4YjllMzkzNzVhZmFhODFmYmZmNjgzYTFiZDk1MGQ0ZWYxYWM2Li4wZTNk
NTg0ZjZhNGRhMWIxMDg5N2NkNjA5MjlkMTViMzBkNTM0NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIExheW91
dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CiAgICAg
Ly8gPGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1ItQ1NTMjEtMjAwNzA3MTkvdGFibGVzLmh0
bWwjaGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaXMgdGhlIGJhc2VsaW5l
IG9mCiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cgbGluZSBib3ggaW4gdGhlIGNlbGwsIG9yIHRo
ZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2VsbCwgd2hpY2hldmVyIGNvbWVzIGZp
cnN0LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1Y2ggbGluZSBib3ggb3IgdGFibGUtcm93LCB0
aGUgYmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBjb250ZW50IGVkZ2Ugb2YgdGhlIGNlbGwgYm94
LgotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYm9yZGVyQW5kUGFkZGlu
Z0JlZm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0dXJuIGZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExv
Z2ljYWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2VsbERpcnR5V2hl
bkNvbGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVyVGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjYjQ2NDFl
ZmZkMWM2MzJhYjE5ZjkxNTk1MjhlYjk3ZGUwOTc4MTJiLi5jM2EwMTM5NmEyYmVmMzEwNmVhOTc3
MWJkZmI5MGYxZjY0ZGI1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtODg0LDcgKzg4NCw3IEBAIE9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAg
ICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYg
KGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgTGF5
b3V0VW5pdCBjYW5kaWRhdGUgPSBjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQ
YWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpOwotICAgICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlT3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRl
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZV9vcihjYW5kaWRh
dGUpLCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNTljYzBjNmI5MTlkZTgzYzg0M2EwM2VhOTlmZTkzNTQ0
MTdiYzhkNy4uNjQ1YTNlYjVjZTQ5YWQ1YjYyYzI0YzYwZmEzYWQ3ZDQxNjU1MTY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTE4Niw3ICsxMTg2LDcgQEAg
dm9pZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFk
V2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3Zl
cmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93
LmxlZnQpOworICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cu
dmFsdWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2lu
ZyAmJiBsZW5ndGggPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAg
ICAgIGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKQEAgLTE3NDAsMTMgKzE3NDAsMTMgQEAg
aW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAg
ICByZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVy
YXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7
Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZU9yKGN1cnJlbnQg
LSAxKTsKKyAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVlX29yKGN1
cnJlbnQgLSAxKTsKIH0KIAogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dh
cmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0QnJlYWtJdGVy
YXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUsIG51
bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVP
cigwKTsKKyAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVlX29yKDAp
OwogfQogCiBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKQEAg
LTE3NTUsNyArMTc1NSw3IEBAIGludCBSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJyZW50
KSBjb25zdAogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAKICAgICBDYWNoZWRUZXh0QnJl
YWtJdGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJl
dCwgbnVsbEF0b20oKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhjdXJyZW50KS52
YWx1ZU9yKGN1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gaXRlcmF0b3IuZm9sbG93aW5nKGN1cnJl
bnQpLnZhbHVlX29yKGN1cnJlbnQgKyAxKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRl
Q2FuVXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3QKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIHZv
aWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWdu
ZWQgb2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmll
dyh1bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAg
dW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlT3IodGV4dCgpLmxlbmd0aCgpKTsKKyAg
ICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVfb3IodGV4dCgpLmxlbmd0aCgpKTsK
ICAgICBBU1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8
PSBsZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDdhNmY1NTFjZGQzMjlkNDVjMjRiN2NmNjNl
MTFmNjg1ZDJlYjI0NTYuLjFiMmJkM2VlNDY2Y2I2NTZmNjNmOTBjMjE2ZWZjOWQ5YmI2NWY0ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTY5LDcgKzE2OSw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgdXNlc0NvbXBsZXhMaW5lTGF5b3V0UGF0aCgpIGNvbnN0Owog
Ci0gICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0ID0gMCwgT3B0aW9uYWw8
dW5zaWduZWQ+IHN0b3AgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3Ry
aW5nVmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKICAgICAKICAgICBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNw
YWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOTE1YmI1M2RhNzlkM2Q2
MjQ5MzcwMTY0MzUxOWFkODAwMDIxNTVhZC4uZTZmOGYyMmUxMzk2YTYyZDIzMGE1MDQ3MzU5Y2Nj
NTEzMzg1MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQpAQCAtNTc0LDcgKzU3NCw3IEBAIExlbmd0aEJveCBSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRl
cm5hbFBhZGRpbmdCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAgICAgZmxvYXQg
cGFkZGluZyA9IE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyOwogICAgIGlmIChzZXR0aW5ncy5p
T1NGb3JtQ29udHJvbFJlZnJlc2hFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBlbVNpemUgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAg
ICAgICBwYWRkaW5nID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6
Om51bGxvcHQpKTsKKyAgICAgICAgcGFkZGluZyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxmbG9h
dD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0KSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlLmFwcGVh
cmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsKQEAgLTExMjMsNyArMTEyMyw3IEBAIHZv
aWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgRWxlbWVudCogZWxlbWVuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90
IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50
IHN0eWxlLAogICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBzdHlsZSwgYW5kIHRoZSByZW5kZXIg
dmlldy4KICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBD
U1NVbml0VHlwZTo6Q1NTX0VNUyk7Ci0gICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCAxLjAsIFdURjo6bnVsbG9wdCkpOworICAgIGludCBwaXhlbHMgPSBlbVNp
emUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICBzdHls
ZS5zZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCiAgICAg
aWYgKCFlbGVtZW50KQpAQCAtMTM1NCw3ICsxMzU0LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25h
bDxDb2xvcj4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uKENT
U1YKICAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFs
PENvbG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZl
bCkKQEAgLTEzNjYsNyArMTM2Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gc3lzdGVtQ29s
b3JGcm9tQ1NTVmFsdWVJRChDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQsIGJvb2wgdXNlCiAgICAgICAg
ICAgICByZXR1cm4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9u
KGNzc1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbiwgdXNlRGFya0FwcGVhcmFuY2UpOwogICAg
IH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogc3RhdGljIFJlbmRlclRoZW1lSU9TOjpDU1NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAmIGds
b2JhbENTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcCgpCkBAIC0yNTYyLDcgKzI1NjIsNyBAQCB2b2lk
IFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnNXaXRoRm9ybUNv
bnRyb2xSZWZyZXNoKGNvbnN0CiAgICAgfQogCiAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAgIGF1dG8gZW1Q
aXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIFdURjo6bnVsbG9w
dCkpOworICAgIGF1dG8gZW1QaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCAxLjAsIHN0ZDo6bnVsbG9wdCkpOwogICAgIGF1dG8gZ2x5cGhTY2FsZSA9IDAuNjVmICogZW1Q
aXhlbHMgLyBnbHlwaFNpemUud2lkdGgoKTsKICAgICBnbHlwaFNpemUgPSBnbHlwaFNjYWxlICog
Z2x5cGhTaXplOwogCkBAIC0yNTkwLDcgKzI1OTAsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjph
ZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBj
bwogICAgIGNvbnN0ZXhwciBpbnQgc2VhcmNoRmllbGREZWNvcmF0aW9uRW1TaXplID0gMTsKICAg
ICBjb25zdGV4cHIgaW50IHNlYXJjaEZpZWxkRGVjb3JhdGlvbk1hcmdpbiA9IDQ7CiAKLSAgICBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51bGxvcHQpOworICAgIENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpjcmVhdGUoc2VhcmNoRmllbGREZWNvcmF0aW9uRW1TaXplLCBDU1NVbml0VHlwZTo6
Q1NTX0VNUyk7CiAgICAgYXV0byBzaXplID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihj
b252ZXJzaW9uRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5k
ZXggMjAyYjM0MmE3MTg1ZmZhYTBlZThlZDA1NmFlODMzOTgwNzY1ZWY3Ni4uMjM2NDFmZGZkMTdk
NmUzMGYxMTdhOGQ0NTg2YzJiN2MzMzBkYTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0
KCkKICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91
dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9wYWdlTG9n
aWNhbFNpemUudmFsdWVPcihMYXlvdXRTaXplKCkpLmhlaWdodCgpLCBtX3BhZ2VMb2dpY2FsSGVp
Z2h0Q2hhbmdlZCk7CisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlz
LCB7IH0sIGZhbHNlLCBtX3BhZ2VMb2dpY2FsU2l6ZS52YWx1ZV9vcihMYXlvdXRTaXplKCkpLmhl
aWdodCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggMjI0ZWQ3Y2IzMTBjZWM3YWQ3NjJkN2ZmNjA2
NTk4MzVlZDg2NWI4MC4uMTIzNjZmODVmZTg2ZTg2YzRjN2ZjMzgxZTc3ZjQwMGJmODJiNDZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIu
aApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERlY29yYXRpb25Q
YWludGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHREZWNvcmF0aW9u
UGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29y
YXRpb25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENh
c2NhZGUmLCBPcHRpb25hbDxTdHlsZXM+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3Jh
dGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBk
ZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZv
bnRDYXNjYWRlJiwgT3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAg
dm9pZCBzZXRJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gp
IHsgbV9pbmxpbmVUZXh0Qm94ID0gaW5saW5lVGV4dEJveDsgfQogICAgIHZvaWQgc2V0SXNIb3Jp
em9udGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFs
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suY3BwCmluZGV4IDE4ZTg0YmI0NWNiYzExYzUwYTlhMjBlOGIxZjIyYjk3MjBmMWQ0
ZWMuLmNkOTZiZDVhN2NjZDFkYjY5Yjg0OWQ2MDcwY2YxMjBmNWZmM2M0N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CkBAIC0xMDIsNyArMTAyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGYKICAgICBpZiAobGlu
ZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihSZW5kZXJC
bG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9u
LCBsaW5lUG9zaXRpb25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFs
dWVfb3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExp
bmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOwogfQogCiAjaWYgRU5BQkxFKERFQlVH
X01BVEhfTEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDNhNjFmZmVmMTNhZjVhN2M5OWU2ZDQ1MDk5OGY2MWI1
YjI2MTRhZWYuLjM1ZjY3YTkyOGNlNTI0MTZhZDBlZGEyNTljN2RiZjk1ZWY5YmQ0M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIExheW91dFVuaXQg
YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdo
dCgpLnRvSW50KCkpOworICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52
YWx1ZV9vcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkudG9JbnQoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IDA4MTRlNTIzMWEy
MzBjNGM3NmJkOGNjYjJiMzgzMTg3YmQ3Yjk3MGQuLjRiMDFlYzIyNmFlMzZjYzU5NTQ4Y2Y5Mjdj
ZThmYzE2YTNlYzFiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBPcHRpb25h
bDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2Ny
aXB0czo6dmFsaWRhdGVBbgogICAgIC8vIFRoZSBmaXJzdCBjaGlsZCBpcyB0aGUgYmFzZS4KICAg
ICBhdXRvIGJhc2UgPSBmaXJzdENoaWxkQm94KCk7CiAgICAgaWYgKCFiYXNlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
UmVmZXJlbmNlQ2hpbGRyZW4gcmVmZXJlbmNlOwogICAgIHJlZmVyZW5jZS5iYXNlID0gYmFzZTsK
QEAgLTk0LDcgKzk0LDcgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNl
Q2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAgLy8gPG1v
dmVyPiBiYXNlIG92ZXJzY3JpcHQgPC9tb3Zlcj4KICAgICAgICAgYXV0byBzY3JpcHQgPSBiYXNl
LT5uZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXNjcmlwdCB8fCBpc1ByZXNjcmlwdERl
bGltaXRlcigqc2NyaXB0KSB8fCBzY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmVmZXJlbmNlLmZpcnN0UG9zdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgcmV0
dXJuIHJlZmVyZW5jZTsKICAgICB9CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBPcHRpb25hbDxSZW5k
ZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6
dmFsaWRhdGVBbgogICAgICAgICAvLyA8bXVuZGVyb3Zlcj4gYmFzZSBzdWJzY3JpcHQgc3VwZXJz
Y3JpcHQgPC9tdW5kZXJvdmVyPgogICAgICAgICBhdXRvIHN1YlNjcmlwdCA9IGJhc2UtPm5leHRT
aWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc3ViU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1p
dGVyKCpzdWJTY3JpcHQpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gc3VwZXJTY3JpcHQgPSBz
dWJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc3VwZXJTY3JpcHQgfHwg
aXNQcmVzY3JpcHREZWxpbWl0ZXIoKnN1cGVyU2NyaXB0KSB8fCBzdXBlclNjcmlwdC0+bmV4dFNp
YmxpbmdCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZWZlcmVuY2UuZmlyc3RQb3N0U2NyaXB0
ID0gc3ViU2NyaXB0OwogICAgICAgICByZXR1cm4gcmVmZXJlbmNlOwogICAgIH0KQEAgLTEzOSwx
OSArMTM5LDE5IEBAIE9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxk
cmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuCiAgICAgICAgICAgICBpZiAoaXNQ
cmVzY3JpcHREZWxpbWl0ZXIoKnNjcmlwdCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlz
IGEgPG1wcmVzY3JpcHRzLz4uIExldCdzIGNoZWNrIDJhKSBhbmQgMmMpLgogICAgICAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gfHwgcmVmZXJlbmNlLmZpcnN0UHJlU2NyaXB0
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5m
aXJzdFByZVNjcmlwdCA9IHNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKTsgLy8gV2UgZG8gMSkuCiAg
ICAgICAgICAgICAgICAgcmVmZXJlbmNlLnByZXNjcmlwdERlbGltaXRlciA9IHNjcmlwdDsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG51bWJl
ck9mU2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2NyaXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxk
cmVuPihyZWZlcmVuY2UpIDogV1RGOjpudWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgorICAgICAg
ICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBPcHRpb25hbDxSZWZlcmVuY2VDaGlsZHJl
bj4ocmVmZXJlbmNlKSA6IHN0ZDo6bnVsbG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KICAgICB9CiAg
ICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMYXlvdXRVbml0IFJlbmRlck1hdGhN
TFNjcmlwdHM6OnNwYWNlQWZ0ZXJTY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCBkOTlmNTNlNmRjMDQy
YzVhMWUzYTVlNGQ4NTYyZTAxYjYxMWRmZWQ2Li41ZjljZmIzYzk3ODhkZDZhM2FjMTQwNjE0MWRl
YjM0NDA1M2JkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgUmVuZGVy
TWF0aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKQogewogICAgIEFTU0VSVChtX21h
dGhWYXJpYW50R2x5cGhEaXJ0eSk7CiAKLSAgICBtX21hdGhWYXJpYW50Q29kZVBvaW50ID0gV1RG
OjpudWxsb3B0OworICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSBmYWxzZTsKIAogICAgIC8vIEVhcmx5IHJldHVy
biBpZiB0aGUgdG9rZW4gZWxlbWVudCBjb250YWlucyBSZW5kZXJFbGVtZW50cy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRl
eCBjZTUzZDU1NDMzODdjMjY3ZGQzNmU4MjUzYTAwZmZhNzhhZWEyYjVhLi44Y2IyMWVmZWZjZDEz
ODU2OGRkNWFkNTAxMzZmZjJjNGQ5OWI4NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCkBAIC02NCw3ICs2NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5ID0gdHJ1ZTsKICAgICAgICAg
c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQotICAgIE9wdGlvbmFs
PFVDaGFyMzI+IG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBP
cHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07
CiAgICAgYm9vbCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X21hdGhWYXJpYW50R2x5cGhEaXJ0eSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAppbmRleCA3ZTJiMGI5NDRmNTZlZTNi
ZmM3Njk0NWMwYjM1ZTNhOTU0YWY1ZGUyLi5kMjA0MTg5ODY3MTkzYzllNDE1ZDc5NWUxMmVjYjQw
YzE5MDRlNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZFBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmNwcApAQCAtODcsNyArODcsNyBAQCBpbnQgR3JpZFBvc2l0aW9uOjpzcGFuUG9zaXRp
b24oKSBjb25zdAogCiBpbnQgR3JpZFBvc2l0aW9uOjptYXgoKQogewotICAgIHJldHVybiBnTWF4
UG9zaXRpb25Gb3JUZXN0aW5nLnZhbHVlT3Ioa0dyaWRNYXhQb3NpdGlvbik7CisgICAgcmV0dXJu
IGdNYXhQb3NpdGlvbkZvclRlc3RpbmcudmFsdWVfb3Ioa0dyaWRNYXhQb3NpdGlvbik7CiB9CiAK
IGludCBHcmlkUG9zaXRpb246Om1pbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IGRmZTRhMjYzNjU3M2RhY2E2Njc4YjNhYjFkZGZi
YWQxMjIyNDk3ZmUuLjE0MTM3OWVkYTRmMGZhNmQ2ZTNjZGZmZmY3YWI5MTRmNWI0MjA1NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBA
IC05MCw3ICs5MCw3IEBAIGlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlSG9yaXpv
bnRhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKICAgICBpZiAocGllY2UgPT0gQm90dG9tTGVmdFBp
ZWNlIHx8IHBpZWNlID09IEJvdHRvbVBpZWNlIHx8IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2Up
CiAgICAgICAgIHJldHVybiBCb3hTaWRlOjpCb3R0b207CiAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBPcHRpb25hbDxCb3hT
aWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCkBAIC0xMDEsNyAr
MTAxLDcgQEAgaW5saW5lIE9wdGlvbmFsPEJveFNpZGU+IGltYWdlUGllY2VWZXJ0aWNhbFNpZGUo
SW1hZ2VQaWVjZSBwaWVjZSkKICAgICBpZiAocGllY2UgPT0gVG9wUmlnaHRQaWVjZSB8fCBwaWVj
ZSA9PSBSaWdodFBpZWNlIHx8IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2UpCiAgICAgICAgIHJl
dHVybiBCb3hTaWRlOjpSaWdodDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY2xhc3MgTmluZVBpZWNlSW1hZ2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3Yzg3Y2IxM2JhZTJl
YmJjNjUxZTIyODljOGZjNzZkYjc2NTdhNTFlLi4xYTc1NjNkMDYxY2VlYjlmYTM2ZGI3NWE4NWQz
OGZiMjk4M2M0MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaApAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVEVYVF9BVVRP
U0laSU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgQXV0b3Np
emVTdGF0dXMgYXV0b3NpemVTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlzSWRlbXBvdGVudFRl
eHRBdXRvc2l6aW5nQ2FuZGlkYXRlKE9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0
YXR1cyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW1wb3RlbnRUZXh0QXV0
b3NpemluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3ZlcnJpZGVTdGF0dXMg
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogI2VuZGlmCiAKICAgICBUZXh0U2VjdXJpdHkgdGV4dFNl
Y3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFNlY3VyaXR5PihtX3JhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggN2JmNDM5NmQ3N2QyYzBhNzFjMjkxNDM0YTY2
ODExMzZkNjdiNjkzZC4uNDQwZjRhM2Q1MjMyYWFkMDA2NjBkOGIyODQxNzExZjNlYWFjYTJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8p
CiBPcHRpb25hbDxTaGFkb3dEYXRhPiBTaGFkb3dEYXRhOjpjbG9uZShjb25zdCBTaGFkb3dEYXRh
KiBkYXRhKQogewogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKmRhdGE7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zm
c2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNl
dC5oCmluZGV4IDM4ZWQ5M2M5MWY2Y2I5ZjY0YzJjZjIwYjNjYmFmMDQyYjRhODFiNmIuLjgwN2U0
ZGI4Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4MGFmOTI0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaApAQCAtNjgsNyAr
NjgsNyBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBsZW5ndGhPcihmbG9hdCBkZWZhdWx0VmFsdWUp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVPcihkZWZhdWx0VmFs
dWUpOworICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKICAg
ICB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3Ro
ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKaW5kZXggNDFlMjVmMTcyYjI2M2FiMzNmMjcwMWRiNDU0OGE0NzgwODU2
M2Q2Zi4uOTA5MGZmNTg5MzQxM2M4NzBjNjNlZTc2NWE4NTM4MzA4ODViYmQ1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApA
QCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2lu
dElzSW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdB
cmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKaW5kZXggNmIwM2NmMTFkMWY0NWM1YzYxY2UxYWNjY2Y4MGM1MzA3YjUwMTk3YS4uNDMwYjRi
OTAzN2NmY2JjYjZmN2YzYWU1OWM1YjEzYTdlMWJlNDlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QKICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIo
cmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAgICAg
ICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpIGNvbnN0CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0
Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAg
ICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVu
dCk7CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwog
CiAgICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNs
aXBwZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93
SGlkZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggOTU3
Mzc4MmM4ODU3ZjA5M2JhM2M5NjMwOTJkNjY2NDNlYTI2ZDMwOC4uOTExYjdmOGNhOGY2NWJjMGFh
MmNlZGQ4M2ZkNTM5MjQ3OTAxZWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIFJlbmRlclNW
R0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZl
bnRzSGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50
ZXJFdmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkg
PT0gVmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMu
cmVxdWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0g
bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYg
KCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBjZjRh
NzRjYjg4YTUyOWViYTIwZDc3NjI3OTg5ZTY2MmZjYzQxOTcyLi40MTliZjM0ZjRkM2RkZWY3MGVh
OWE0MTU1ZDBhMWU1OGIwMjMyZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNzQsMTAgKzI3
NCwxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50
KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94
LmxvY2F0aW9uKCkpOwogICAgICAgICB0cmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3gu
c2l6ZSgpKTsKLSAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgcG9pbnQgPSB0cmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7
CiAgICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50KTsKKyAgICBwb2ludCA9IGNsaXBQYXRoRWxlbWVudCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
KTsKIAogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0gY2xpcFBhdGhFbGVtZW50KCkuZmlyc3RD
aGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkg
ewogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5yZW5kZXJlcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAppbmRleCBhZWM2Njk1YzI4NzhlZDI4YzM4OTQ5Y2Q5MGE1ODBlOTk2
YTJhNmFlLi40MTYyYjgxZmYzYmFjOGNjMWMyZDhmNDg5MTgxNDk5MWVjNzU1N2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAK
ICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5jb25jYXRDVE0oZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgY29udGV4dC0+
Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53
aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQo
KSkpOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwg
bGFzdEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA4YTA5NzZjNjlmZTA3ODIyMWY5YmY1
YjA1Yjk2MDIzMmNkMjcyMmNjLi40N2IyNWExMGE3Mjg2NDkwYmI1MTE4NTRhMWJjNDcyZjhlMjhi
YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAKQEAgLTM4Miw3ICszODIsNyBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYQogICAgIGlmIChz
aG91bGRBcHBseVZpZXdwb3J0Q2xpcCgpKSB7CiAgICAgICAgIGlmIChjb250ZXh0Lm9wdGlvbnMu
Y29udGFpbnMoVmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJz
ZWN0aW9uKSkgewogICAgICAgICAgICAgaWYgKCFhZGp1c3RlZFJlY3QuZWRnZUluY2x1c2l2ZUlu
dGVyc2VjdChzbmFwcGVkSW50UmVjdChib3JkZXJCb3hSZWN0KCkpKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LmludGVyc2VjdChz
bmFwcGVkSW50UmVjdChib3JkZXJCb3hSZWN0KCkpKTsKICAgICB9CkBAIC0zOTYsNyArMzk2LDcg
QEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2EKIAogICAgIGlmIChPcHRpb25hbDxMYXlvdXRSZWN0
PiByZWN0SW5Db250YWluZXIgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoZW5jbG9zaW5nSW50UmVjdChhZGp1c3RlZFJlY3QpLCBjb250YWluZXIsIGNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCpyZWN0SW5Db250YWluZXIpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gVGhp
cyBtZXRob2QgZXhwZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgpAQCAtNDM0LDcgKzQz
NCw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgLy8gVGVzdCBTVkcgY29udGVudCBp
ZiB0aGUgcG9pbnQgaXMgaW4gb3VyIGNvbnRlbnQgYm94IG9yIGl0IGlzIGluc2lkZSB0aGUgdmlz
dWFsT3ZlcmZsb3dSZWN0IGFuZCB0aGUgb3ZlcmZsb3cgaXMgdmlzaWJsZS4KICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVz
dHMgYXJlIHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94
UmVjdCgpLmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gpIHx8ICghc2hvdWxkQXBwbHlWaWV3cG9y
dENsaXAoKSAmJiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5jb250YWlucyhwb2ludEluUGFyZW50KSkp
IHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBv
aW50KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CiAKICAgICAgICAgZm9yIChS
ZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5w
cmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IG5vZGVBdEZsb2F0UG9p
bnQoKSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0ZXN0cyB5ZXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGI1MzkxNjI3ZDU4MDVi
ZDZiY2UzMDAwOWI5OGE2YzBkOTQ3MjM5NTcuLjNkZmQyNTdkMjU1NGE2N2MwNDAxZDU1OThmNGJh
OWRlMjJlZDQ2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQogCiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
VXNlZFdpZHRoID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1h
dGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGZhMDNhY2JkY2Q3ZmQ2ZmEyMTY2OTM5YjNi
Y2YwZTA3N2Y1OTlkMDQuLjJhMzUzMDk4N2Y0MGRhOTdkYWU0MjFkNTBlZDNkNDY3MjU3ZDUwNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
CkBAIC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAoaGl0
VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAg
RmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYg
KCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggODUwZWNmNzFmNjIzMjVjYWQxNmI2ZDk4ZTlhZWIw
ZTE1N2M4ODFjNC4uZmJlOWY0ZmE5ZDY4MGEzN2FlNmZkMzhjYjYyMzE4NDBkOWJhNmJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVW
aXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlCiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJl
Y3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgaWYgKGFkanVzdGVkUmVjdCkKICAgICAgICAg
cmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoKmFkanVzdGVkUmVjdCk7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxGbG9h
dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250
YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdApAQCAtNDM1LDcgKzQzNSw3
IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVs
ZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2Ug
JiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0
cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5z
dmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAg
ICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50SW5QYXJlbnQpOwogCiAgICAgICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50
SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcAppbmRleCAwYzc4NTIwNGZlNjcyYjQ3ZDNmNTU0OGYzMTMzMzU3ODgw
OTJhNDU0Li43MTg1MzI2YjYwYzQzODI2Y2U1MGZjMjVjNDRkODhlNWQwYzI4YjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAg
LTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1ND
bGlwcGluZ0FyZWEoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogICAgICAgICByZWZlcmVu
Y2VCb3ggPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtLm1hcFJlY3QocmVmZXJlbmNlQm94KTsKIAog
ICAgICAgICBhdXRvIHBhdGggPSBjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVu
Y2VCb3gpOwotICAgICAgICBwYXRoLnRyYW5zZm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgICAgIHBhdGgudHJhbnNm
b3JtKGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKSk7CiAKICAgICAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoLCBjbGlwUGF0aC53aW5k
UnVsZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiMWQ5Njg3NDcwZWJlNzg3MzY1MTIyZDA1ODgz
MjJlYzQxNGNlZWI2Li4zODc4OGI4YTIzMDI3MDBlMDE1YjNlM2Q4YWE0ZTAzMjNjNTY0ZTBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogCiAg
ICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29v
cmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8v
IFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNv
bHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0oYWJz
b2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAg
ICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpKTsKICAgICBjb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNv
bHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFhNGU5YzZkZjdhMDIyMTlkNTk2
Nzc2MmM2YThkZTRhYmM4Yjc1ZmUuLjdiYmFiNzcyY2Y3ZWNiNDI4NjY5NmVjZDdkNDRhNDRjMWJi
ZWQzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBSZW5kZXJU
cmVlQnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNvbnRlbnQoY29uc3QgUmVuZGVyRWxl
bWVudCYgcGFyZW4KICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsK
ICAgICAgICAgICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ZpeGVkKCkgfHwgIXN0eWxlLmhlaWdo
dCgpLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAg
cmV0dXJuIG1ha2VPcHRpb25hbChJbnRTaXplIHsgc3R5bGUud2lkdGgoKS5pbnRWYWx1ZSgpLCBz
dHlsZS5oZWlnaHQoKS5pbnRWYWx1ZSgpIH0pOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9vcHRpb25hbChJbnRTaXplIHsgc3R5bGUud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS5oZWln
aHQoKS5pbnRWYWx1ZSgpIH0pOwogICAgICAgICB9OwogICAgICAgICAvLyBTVkcgY29udGVudCB0
ZW5kcyB0byBoYXZlIGEgZml4ZWQgc2l6ZSBjb25zdHJ1Y3QuIEhvd2V2ZXIgdGhpcyBpcyBrbm93
biB0byBiZSBpbmFjY3VyYXRlIGluIGNlcnRhaW4gY2FzZXMgKGJveC1zaXppbmc6IGJvcmRlci1i
b3gpIG9yIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGFyZW50IGJveCBpcyBvdmVyc2l6ZWQuCiAgICAg
ICAgIGF1dG8gY2FuZGlkYXRlU2l6ZSA9IEludFNpemUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
NzVjYjcwZWIzODM2NjY5YTY5MzRjMmM2YWNiZDI0MThkMmRkZGFhMi4uMDJiYjJmYWNlNmU2MzE0
MjY5YWY1MzFiMWExNjRhZTY1NjNmOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290
KQogUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcykKICAgICA6IGVsZW1lbnQoJmVsZW1l
bnQpCiAgICAgLCB1cGRhdGVzKHVwZGF0ZXMpCi0gICAgLCByZW5kZXJUcmVlUG9zaXRpb24oZWxl
bWVudC5yZW5kZXJlcigpID8gbWFrZU9wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlvbigqZWxlbWVu
dC5yZW5kZXJlcigpKSkgOiBXVEY6Om51bGxvcHQpCisgICAgLCByZW5kZXJUcmVlUG9zaXRpb24o
ZWxlbWVudC5yZW5kZXJlcigpID8gc3RkOjptYWtlX29wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlv
bigqZWxlbWVudC5yZW5kZXJlcigpKSkgOiBzdGQ6Om51bGxvcHQpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCmluZGV4IDZmOTRmZjFjNmM4NTM3
MGIxMjM4YmExNDBkZTA4YzVhMDVjYTJiYWQuLjFiMzMyZmRjMDEyNjE4NzA3YjAzYjcwOTE3MGMw
ZmZhZjJkODEyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0
b3IuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTY29wZVJ1bGVTZXRzOwogCiBjbGFzcyBQc2V1
ZG9FbGVtZW50UmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgUHNldWRvRWxlbWVudFJlcXVlc3QoUHNl
dWRvSWQgcHNldWRvSWQsIE9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFyU3RhdGU+IHNjcm9sbGJhclN0
YXRlID0gV1RGOjpudWxsb3B0KQorICAgIFBzZXVkb0VsZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBz
ZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0
ZDo6bnVsbG9wdCkKICAgICAgICAgOiBwc2V1ZG9JZChwc2V1ZG9JZCkKICAgICAgICAgLCBzY3Jv
bGxiYXJTdGF0ZShzY3JvbGxiYXJTdGF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1
cmUuaAppbmRleCA0NDE4ZmY2YWJlMTg5NDNiMDAzNWJmMmE4NWY1MWM4NTQzODkzNWVlLi4xY2Qy
ZTNmZjU3YzBiZTlhYzczZmIxOGFjNjVkYjc5NTc0OTE2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVGZWF0dXJlLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgOiB1
aW50OF90IHsgU3ViamVjdCwgUGFyZW50LCBBbmNlc3RvciwgRGlyZWN0U2libGluZywgSW4KIGNv
bnN0ZXhwciB1bnNpZ25lZCBtYXRjaEVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihNYXRjaEVsZW1lbnQ6Okhvc3QpICsgMTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAgICBS
dWxlRmVhdHVyZShjb25zdCBSdWxlRGF0YSYsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBXVEY6
Om51bGxvcHQpOworICAgIFJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiwgT3B0aW9uYWw8TWF0
Y2hFbGVtZW50PiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBSZWZQdHI8Y29uc3QgU3R5bGVSdWxl
PiBzdHlsZVJ1bGU7CiAgICAgdWludDE2X3Qgc2VsZWN0b3JJbmRleDsgLy8gS2VlcCBpbiBzeW5j
IHdpdGggUnVsZURhdGEncyBzZWxlY3RvckluZGV4IHNpemUuCkBAIC01MCw3ICs1MCw3IEBAIHN0
cnVjdCBSdWxlRmVhdHVyZSB7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihSdWxlRmVhdHVyZSkgPD0g
MTYsICJSdWxlRmVhdHVyZSBpcyBhIGZycXVlbnRseSBhbG9jYXRlZCBvYmplY3QuIEtlZXAgaXQg
c21hbGwuIik7CiAKIHN0cnVjdCBSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3RvciA6
IHB1YmxpYyBSdWxlRmVhdHVyZSB7Ci0gICAgUnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2Vs
ZWN0b3IoY29uc3QgUnVsZURhdGEmIGRhdGEsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hF
bGVtZW50ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2Vs
ZWN0b3IgPSBudWxscHRyKQorICAgIFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9y
KGNvbnN0IFJ1bGVEYXRhJiBkYXRhLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVu
dCA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9y
ID0gbnVsbHB0cikKICAgICAgICAgOiBSdWxlRmVhdHVyZShkYXRhLCBXVEZNb3ZlKG1hdGNoRWxl
bWVudCkpCiAgICAgICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0
b3IpCiAgICAgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCmluZGV4IDRmZmZhMmIwODEzZjRiOWQ1NmU2MzBiN2YyZmIwZTA5NWIzOTg0MDcuLjA4ZWU4
NTI2ZGU2NTE0ZDBlNzFjNTUzMDdiMmM2MTdhMWZkYjA0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBv
c2l0aW9uKEJ1aWxkZXJTdGF0ZQogICAgIEdyaWRQb3NpdGlvbiBncmlkUG9zaXRpb247CiAgICAg
aWYgKGNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgZ3JpZFBvc2l0aW9uKSkKICAgICAgICAgcmV0
dXJuIGdyaWRQb3NpdGlvbjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBHcmlkQXV0b0Zsb3cgQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CkBAIC0xMjMzLDE0ICsxMjMzLDE0IEBAIGlubGluZSBPcHRpb25hbDxmbG9hdD4gQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgZWxz
ZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHJldHVybiBwZXJzcGVjdGl2
ZSA8IDAgPyBPcHRpb25hbDxmbG9hdD4oV1RGOjpudWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0Pihw
ZXJzcGVjdGl2ZSk7CisgICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwgMCA/IE9wdGlvbmFsPGZsb2F0
PihzdGQ6Om51bGxvcHQpIDogT3B0aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0KIAogaW5s
aW5lIE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNy
ZW1lbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBMZW5ndGggbGVuZ3RoID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgIGlmIChsZW5ndGgu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCkBAIC0xMjQ5LDcgKzEy
NDksNyBAQCBpbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbAogICAgIEZpbHRlck9wZXJhdGlvbnMgb3Bl
cmF0aW9uczsKICAgICBpZiAoYnVpbGRlclN0YXRlLmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFs
dWUsIG9wZXJhdGlvbnMpKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uczsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBGb250
RmVhdHVyZVNldHRpbmdzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRp
bmdzKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzMDUsNyArMTMw
NSw3IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dEZvbnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTCiAgICAgcmV0dXJuIG5vcm1hbFN0cmV0Y2hW
YWx1ZSgpOwogfQogCi0vLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMgdG8gcGFyc2VkIGFuZCB2YWxp
ZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGUgaW5wdXQgd2FzICJu
b3JtYWwiLgorLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRvIHBhcnNlZCBhbmQgdmFsaWQsIHRo
aXMgZnVuY3Rpb24gcmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlIGlucHV0IHdhcyAibm9ybWFs
Ii4KIGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IEFTU0VSVChpczxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsKQEAgLTEzMTMsNyArMTMxMyw3
IEBAIGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRGb250U3R5bGVGcm9tVmFsdWUoCiAKICAgICBhdXRvIHZhbHVlSUQgPSBmb250U3R5
bGVWYWx1ZS5mb250U3R5bGVWYWx1ZS0+dmFsdWVJRCgpOwogICAgIGlmICh2YWx1ZUlEID09IENT
U1ZhbHVlTm9ybWFsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSXRhbGljKQogICAg
ICAgICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAgICBBU1NFUlQodmFsdWVJRCA9PSBDU1NWYWx1
ZU9ibGlxdWUpOwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4g
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGUK
IAogICAgIC8vIEZJWE1FOiBUaGUgcGFyc2VyIHNob3VsZCBvbmx5IGVtaXQgdGhlIGFib3ZlIHR5
cGVzLCBzbyB0aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiBXZSBzaG91bGQgY2hhbmdlIHRo
ZQogICAgIC8vIHR5cGUgb2YgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4ganVzdCBhIExlbmd0aCAo
YW5kIG5vdCBhbiBPcHRpb25hbCkuCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgRm9udFN5bnRoZXNpcyBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNpcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYg
dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0
b20uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDdm
ZjZjNjJkZmUzM2Y3MDQ1NGE3MGI3MjZjZTM0OTI4ZWU5OGI5YTUuLjdmMDFmOWNiYTUwOWMzYzdk
OWE4ZTRjNzkxNzY3NDAxNDNlOGQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVp
bGRlckN1c3RvbS5oCkBAIC0xMzQ0LDkgKzEzNDQsOSBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ291bnRlcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFs
dQogICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFj
Y2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IG1hcCkg
ewogICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQotICAgICAgICAgICAga2V5
VmFsdWUudmFsdWUucmVzZXRWYWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGtleVZh
bHVlLnZhbHVlLnJlc2V0VmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlID0gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAga2V5VmFsdWUudmFsdWUuaW5jcmVtZW50VmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgaWYgKHNldENvdW50ZXJJbmNyZW1lbnRUb05vbmUpCkBAIC0xMzYwLDcgKzEz
NjAsNyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcihCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQogICAgICAgICBpZiAoY291bnRlckJlaGF2
aW9yID09IFJlc2V0KQogICAgICAgICAgICAgZGlyZWN0aXZlcy5yZXNldFZhbHVlID0gdmFsdWU7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgPSBz
YXR1cmF0ZWRTdW08aW50PihkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlT3IoMCksIHZh
bHVlKTsKKyAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgPSBzYXR1cmF0ZWRT
dW08aW50PihkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlX29yKDApLCB2YWx1ZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVG
b3JGb250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRS
YXcuY3BwCmluZGV4IDRiM2VlYTMyNjQxYjUzMDdiOGM4MjdkODk1MzU0MjA3NTUzNGUzZGMuLjQz
Njg3MDkyNTQ3MDVlYTA5YzI5YmY5YWUyOWZiYmVlOTEyMTdkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IE9wdGlvbmFsPEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBm
b250UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgfQogCiAgICAgaWYgKGZhbWlsaWVzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBmb250RGVzY3JpcHRpb24uc2V0RmFtaWxpZXMoZmFtaWxpZXMpOwogCiAg
ICAgaWYgKHVzZUZpeGVkRGVmYXVsdFNpemUoZm9udERlc2NyaXB0aW9uKSAhPSBvbGRGYW1pbHlV
c2VkRml4ZWREZWZhdWx0U2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVS
dWxlU2V0cy5jcHAKaW5kZXggZjE2NzliYzI0NjJiZDdhYjJjNmExYmRhMTM4YmRmOGFlMTcyNDM3
Mi4uZTdmNjI0MzY0YjY2YjczYmMzZjY2MmU1NjYzNWMzZGZhMWQyZjk4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAg
dm9pZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogICAgIG1fYXR0cmli
dXRlSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKICAgICBtX3BzZXVkb0NsYXNzSW52YWxp
ZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKIAotICAgIG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9y
c0ZvclN0eWxlQXR0cmlidXRlID0gV1RGOjpudWxsb3B0OworICAgIG1fY2FjaGVkSGFzQ29tcGxl
eFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlID0gc3RkOjpudWxsb3B0OwogCiAgICAgbV9mZWF0
dXJlcy5zaHJpbmtUb0ZpdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKaW5kZXgg
ZmZiOGY3MzFlMjFlY2Y3ZTk3YzZmMmMyN2FhNjNmNDJiYmJjM2ViMy4uYjY0NTgzOGE1MDljOTQ5
ODI1YzY4ZTM5ZmIxNmFlNDBlZjIxMjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3Bw
CkBAIC0zMjksNyArMzI5LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JT
dHlsZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWIKICAgICAgICAgICAg
IC8vIElmIGEgdHJhbnNpdGlvbiBoYXMgbm90IHlldCBzdGFydGVkIG9yIHN0YXJ0ZWQgd2hlbiBh
bmltYXRpb25zIHdlcmUgbGFzdCB1cGRhdGVkLCB1c2UgdGhlIHRpbWVsaW5lIHRpbWUgYXQgaXRz
IGNyZWF0aW9uCiAgICAgICAgICAgICAvLyBhcyBpdHMgc3RhcnQgdGltZSB0byBlbnN1cmUgdGhh
dCBpdCB3aWxsIHByb2R1Y2UgYSBzdHlsZSB3aXRoIHByb2dyZXNzID4gMC4KICAgICAgICAgICAg
IGJvb2wgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA9IGlzPENTU1RyYW5zaXRpb24+
KGFuaW1hdGlvbikgJiYgKCFhbmltYXRpb24tPnN0YXJ0VGltZSgpIHx8ICphbmltYXRpb24tPnN0
YXJ0VGltZSgpID09IHN0eWxlYWJsZS5lbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUoKS5jdXJy
ZW50VGltZSgpKTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxl
LCBudWxscHRyLCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NT
VHJhbnNpdGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBu
dWxscHRyLCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NTVHJh
bnNpdGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggMTdmZDYxNzk0ZGMzM2NhNTQyYjgyZDhjYmNjNzU1
NWMxYmRmYjE4Zi4uNjRjMTFhOTU2ZTJkNjlhNzk3ZmMwYmU2MDkwNWIxMmQzZWVlN2YzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IFN0eWxlYWJs
ZSB7CiAgICAgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQo
KSkKICAgICAgICAgICAgIHJldHVybiBmcm9tRWxlbWVudCgqZWxlbWVudCk7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlYWJsZSYgb3RoZXIpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCAwYTJk
YjFmMmM1ZWJlYmM1ZDdkYjFkYTBhOWJhNDk5NmQxNTQ1ZTNlLi5kZTQxOGQzMWQzZGM5NDE4ZTli
NzRlZGUwMGE3NjA5YjczYjAxYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTE2MCwyNSArMTYwLDI1IEBAIHZvaWQgU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkK
IAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRp
b25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKQogewotICAgIG1f
dG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJp
bmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlv
biA9IHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9p
bnQgeyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxl
bWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKLSAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24g
PSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21TdHJpbmcp
LnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOwotICAgIG1fdG9Qb2ludCA9IHBhcnNlUG9pbnQodG9T
dHJpbmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJh
dGlvbiA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2Zyb21Qb2ludCA9IHBhcnNlUG9pbnQoZnJvbVN0
cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludCA9IHBhcnNlUG9p
bnQodG9TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KICAgICAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRC
eVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcp
CiB7Ci0gICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1f
dG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoYW5pbWF0aW9u
TW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkJ5ICYmICFpc0FkZGl0aXZlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBtX2Zyb21Qb2ludCA9IHBhcnNlUG9pbnQoZnJvbVN0cmluZykudmFs
dWVPcihGbG9hdFBvaW50IHsgfSk7Ci0gICAgYXV0byBieVBvaW50ID0gcGFyc2VQb2ludChieVN0
cmluZykudmFsdWVPcihGbG9hdFBvaW50IHsgfSk7CisgICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBv
aW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBhdXRvIGJ5UG9p
bnQgPSBwYXJzZVBvaW50KGJ5U3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAgICAg
bV90b1BvaW50ID0gRmxvYXRQb2ludChtX2Zyb21Qb2ludC54KCkgKyBieVBvaW50LngoKSwgbV9m
cm9tUG9pbnQueSgpICsgYnlQb2ludC55KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKaW5kZXgg
NTFjYTQyZWFhMTAwMzk3OGVkNzQ0M2Y4YjdiNjA4MTdjZDc2ODA2ZS4uZDE1M2QxNGJiODZhYWQ2
YjVkMDliMjAxZDNhYTVmYTUzNGUyMTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0CiB2
b2lkIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKLSAgICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3Jt
YWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKHZhbHVlKS52YWx1ZU9yKFNWR1RyYW5zZm9ybVZhbHVl
OjpTVkdfVFJBTlNGT1JNX1VOS05PV04pOworICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm1h
YmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUodmFsdWUpLnZhbHVlX29yKFNWR1RyYW5zZm9ybVZhbHVl
OjpTVkdfVFJBTlNGT1JNX1VOS05PV04pOwogICAgICAgICBpZiAobV90eXBlID09IFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWCkKICAgICAgICAgICAgIG1fdHlwZSA9IFNW
R1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCA4YjFlZGE4
OWYyZDQ2MGNjMTAzZjllMTcxNDdkNzgwNzY1OTRlYTJlLi5iMTNjMTkyMWQ4ZjkxOTBhZjFjZTJk
MDEyYzRhNTRiMTk1YzdiYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGZhaWw6CiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PFVuaXRCZXppZXI+PiBwYXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAg
aWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQ
YXJzaW5nKHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxWZWN0b3I8VW5pdEJl
emllcj4+IHsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGJ1ZmZlcik7CkBAIC05NCwx
OSArOTQsMTkgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlT
cGxpbmVzKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSBmYWxz
ZTsKICAgICAgICAgICAgIGF1dG8gcG9zQSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAg
ICAgICBpZiAoIXBvc0EpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdXRvIHBv
c0IgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwb3NCKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBwb3NDID0gcGFyc2VOdW1iZXIoYnVmZmVy
KTsKICAgICAgICAgICAgIGlmICghcG9zQykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
ICAgIGF1dG8gcG9zRCA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3k6
OkRvbnRTa2lwKTsKICAgICAgICAgICAgIGlmICghcG9zRCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwogCkBAIC0xMTksNyAr
MTE5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxp
bmVzKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEoYnVmZmVy
LmF0RW5kKCkgJiYgIWRlbGltUGFyc2VkKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZWZmNDQzYzQw
NmY2MGM3MGIwY2EwYWYwMjgzNGFhOWIzMDY2NzUxZC4uN2QyYjlkYTdlNDAzMTgyODAwZjQ1OTA2
OGNmMTA5M2MxN2Q5NjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMzA0LDcg
KzMwNCw3IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRWxlbWVudDo6Z2V0Qm91bmRpbmdCb3go
KSBjb25zdAogICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgfQot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
VmVjdG9yPFJlZjxTVkdFbGVtZW50Pj4gU1ZHRWxlbWVudDo6cmVmZXJlbmNpbmdFbGVtZW50cygp
IGNvbnN0CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWwKIAogICAg
IGlmIChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwog
ICAgICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2Vy
KHZhbHVlKSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYklu
ZGV4LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBlYWM4ZWY4OTkxODI2MGIwNTZj
OTE2YTgxMmI0YWJiY2Q1N2YxYzQ5Li5mNzUwNTgxNWRlY2FiYjRlYTM0YjQzNWI0N2VhNWE4MGM2
YTI2ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAKQEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhBdHRyKSB7Ci0gICAg
ICAgIG1fdGFyZ2V0WC0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4o
dmFsdWUpLnZhbHVlT3IoMCkpOworICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5h
bChwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIpIHsK
LSAgICAgICAgbV90YXJnZXRZLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2ln
bmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CisgICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbElu
dGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlX29yKDApKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCmluZGV4IGMzMjQyNDNhZDdhNDhjOTAyODk4ZWE5OGVkY2NjZWUzMDVkZWQy
ZmUuLjExNTYxMTE5ZDgzZTNmYzc4OGE0MmIxNDg2N2M2NTY0MTIzMzRhNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcg
QEAgdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG8KICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdO
YW1lczo6bnVtT2N0YXZlc0F0dHIpIHsKLSAgICAgICAgbV9udW1PY3RhdmVzLT5zZXRCYXNlVmFs
SW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CisgICAg
ICAgIG1fbnVtT2N0YXZlcy0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25l
ZD4odmFsdWUpLnZhbHVlX29yKDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAppbmRleCAzNzc4YjRmOTQwNTZhMGFjZmU0NDA1
Y2Y0YzFjMjVlYzU3OWQwOWRiLi5lNjFlNjFhZmVlZGFhM2E1NmE0NzViY2E1OTUxYjBjYWUwMGYw
NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcApAQCAtMTE4LDMwICsx
MTgsMzAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8RmxvYXRS
ZWN0PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0IKIAogICAgICAgICBpZiAoIXggfHwgIXkg
fHwgIXdpZHRoIHx8ICFoZWlnaHQpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKG1ha2VTdHJpbmcoIlByb2JsZW0gcGFyc2luZyB2aWV3
Qm94PVwiIiwgc3RyaW5nVG9QYXJzZSwgIlwiIikpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBDaGVjayB0aGF0IHdpZHRoIGlzIHBvc2l0aXZlLgogICAgICAgICBpZiAoKndp
ZHRoIDwgMC4wKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCku
cmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGggaXMgbm90IGFs
bG93ZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBo
ZWlnaHQgaXMgcG9zaXRpdmUuCiAgICAgICAgIGlmICgqaGVpZ2h0IDwgMC4wKSB7CiAgICAgICAg
ICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRp
dmUgdmFsdWUgZm9yIFZpZXdCb3ggaGVpZ2h0IGlzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGxh
c3QsIGZvdXJ0aCBudW1iZXIuCiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIp
OwogICAgICAgICBpZiAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgewogICAgICAg
ICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcobWFrZVN0
cmluZygiUHJvYmxlbSBwYXJzaW5nIHZpZXdCb3g9XCIiLCBzdHJpbmdUb1BhcnNlLCAiXCIiKSk7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBGbG9hdFJlY3QgeyB4
LnZhbHVlT3IoMCksIHkudmFsdWVPcigwKSwgd2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0LnZhbHVl
T3IoMCkgfTsKKyAgICByZXR1cm4gRmxvYXRSZWN0IHsgeC52YWx1ZV9vcigwKSwgeS52YWx1ZV9v
cigwKSwgd2lkdGgudmFsdWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSB9OwogfQogCiBBZmZp
bmVUcmFuc2Zvcm0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGNvbnN0
IEZsb2F0UmVjdCYgdmlld0JveFJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSYgcHJlc2VydmVBc3BlY3RSYXRpbywgZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAppbmRleCAxN2Y3ZTA3
NzliY2MzMTI3YWNkNGZjNzRhZjZlNDQyODY2ODQxMTNjLi43ZWQ2M2MyZGYyMGE2NWY0ODM2MTM0
ZjM3NGFmODM0NDlmZDgwYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5
cGhSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVt
ZW50LmNwcApAQCAtNTYsNyArNTYsNyBAQCBib29sIFNWR0dseXBoUmVmRWxlbWVudDo6aGFzVmFs
aWRHbHlwaEVsZW1lbnQoU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0CiAKIHN0YXRpYyBmbG9hdCBw
YXJzZUZsb2F0KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBwYXJzZU51
bWJlcih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VOdW1iZXIodmFsdWUpLnZh
bHVlX29yKDApOwogfQogCiB2b2lkIFNWR0dseXBoUmVmRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCmluZGV4IGU0ZWJmZmJjNWQ3ZWQ2YzZmODBl
OWVlMTAzZDkwNDZjOGUwOWYxMGUuLjY4MDdmNmJiNGIyZDg0NDAwMTU0OTBkZGVlM2U5YzFmNGVk
NTA4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCkBAIC00OSwzMCAr
NDksMzAgQEAgT3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR0hLZXJuRWxlbWVudDo6YnVpbGRI
b3Jpem9udGFsS2VybmluZ1BhaXIoKSBjb25zdAogICAgIGF1dG8mIHUxID0gYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTFBdHRyKTsKICAgICBhdXRvJiBnMSA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmcxQXR0cik7CiAgICAgaWYg
KHUxLmlzRW1wdHkoKSAmJiBnMS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB1MiA9IGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnUyQXR0cik7CiAgICAgYXV0byYg
ZzIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpnMkF0dHIpOwog
ICAgIGlmICh1Mi5pc0VtcHR5KCkgJiYgZzIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBnbHlw
aE5hbWUxID0gcGFyc2VHbHlwaE5hbWUoZzEpOwogICAgIGlmICghZ2x5cGhOYW1lMSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIGdseXBoTmFtZTIgPSBwYXJzZUdseXBoTmFtZShnMik7CiAgICAgaWYgKCFnbHlwaE5h
bWUyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmluZzEgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3Ry
aW5nKHUxKTsKICAgICBpZiAoIXVuaWNvZGVTdHJpbmcxKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdW5pY29kZVN0
cmluZzIgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKHUyKTsKICAgICBpZiAoIXVuaWNvZGVT
dHJpbmcyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGF1dG8ga2VybmluZyA9IGF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmtBdHRyKS5zdHJpbmcoKS50
b0Zsb2F0KCZvayk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTVkdLZXJuaW5nUGFp
ciB7CiAgICAgICAgIFdURk1vdmUodW5pY29kZVN0cmluZzEtPmZpcnN0KSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCmluZGV4IGRjODIwMmQ0NjczMmI5OWZkMmNhMjc4MTU4Y2Vh
YzZiMWNiNTczMjQuLjc3NGY0M2VkZDRhMWU2NDVkZGE2MzQwODUzMjNhNzcyYWFkMjJlMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIE9w
dGlvbmFsPFNWR0xlbmd0aFZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGUgbGVuZ3RoTW9kZSwgU3RyCiB7CiAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoIHsgbGVu
Z3RoTW9kZSB9OwogICAgIGlmIChsZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5n
KS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCmluZGV4IGIyMGUzZTcxMDhlOWQ4NzZhNDE2
YzhlYjJiYmYxMTI2YjUyNDRmMWEuLmU1NDY1MzVmZjgwYjRkMWYxZTg2M2VmZDBjOGIyYzQxN2U5
YWU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBG
bG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAgICAgfSAKICAgICAKICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkgfHwgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikgJiYgKmJ1ZmZlciAh
PSAnLicpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gcmVhZCB0aGUgaW50ZWdlciBwYXJ0LCBidWlsZCByaWdodC10
by1sZWZ0CiAgICAgYXV0byBwdHJTdGFydEludFBhcnQgPSBidWZmZXIucG9zaXRpb24oKTsKQEAg
LTc5LDcgKzc5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1l
IEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwKICAgICAgICAgfQogICAgICAg
ICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGlzIG92ZXJmbG93cy4KICAgICAgICAgaWYgKCFpc1Zh
bGlkUmFuZ2UoaW50ZWdlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyByZWFkIHRoZSBk
ZWNpbWFscwpAQCAtODgsNyArODgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBPcHRpb25hbDxGbAogICAgICAg
ICAKICAgICAgICAgLy8gVGhlcmUgbXVzdCBiZSBhIGxlYXN0IG9uZSBkaWdpdCBmb2xsb3dpbmcg
dGhlIC4KICAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpIHx8ICFpc0FTQ0lJRGlnaXQoKmJ1ZmZl
cikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFj
dGVyc1JlbWFpbmluZygpICYmIGlzQVNDSUlEaWdpdCgqYnVmZmVyKSkKICAgICAgICAgICAgIGRl
Y2ltYWwgKz0gKCooYnVmZmVyKyspIC0gJzAnKSAqIChmcmFjICo9IHN0YXRpY19jYXN0PEZsb2F0
VHlwZT4oMC4xKSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwK
ICAgICAgICAgCiAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgYW4gZXhwb25lbnQKICAgICAgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpIHx8ICFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiBpc0FT
Q0lJRGlnaXQoKmJ1ZmZlcikpIHsKICAgICAgICAgICAgIGV4cG9uZW50ICo9IHN0YXRpY19jYXN0
PEZsb2F0VHlwZT4oMTApOwpAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFs
PEZsCiAgICAgICAgIH0KICAgICAgICAgLy8gTWFrZSBzdXJlIGV4cG9uZW50IGlzIHZhbGlkLgog
ICAgICAgICBpZiAoIWlzVmFsaWRSYW5nZShleHBvbmVudCkgfHwgZXhwb25lbnQgPiBzdGQ6Om51
bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1heF9leHBvbmVudCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIG51bWJlciA9IGludGVnZXIgKyBkZWNpbWFsOwpAQCAtMTI4LDEwICsxMjgsMTAgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZs
b2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwKIAogICAgIC8vIERvbid0IHJldHVybiBJbmZpbml0eSgp
IG9yIE5hTigpLgogICAgIGlmICghaXNWYWxpZFJhbmdlKG51bWJlcikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
c3RhcnQgPT0gYnVmZmVyLnBvc2l0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc2tpcCA9PSBTdWZmaXhT
a2lwcGluZ1BvbGljeTo6U2tpcCkKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxp
bWl0ZXIoYnVmZmVyKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBPcHRpb25hbDxmbG9hdD4gcGFyc2VO
dW1iZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lw
KQogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbc2tpcF0oYXV0
byBidWZmZXIpIC0+IE9wdGlvbmFsPGZsb2F0PiB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ2Vu
ZXJpY1BhcnNlTnVtYmVyKGJ1ZmZlciwgc2tpcCk7CiAgICAgICAgIGlmICghYnVmZmVyLmF0RW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KTsKIH0KQEAgLTE2
NCw3ICsxNjQsNyBAQCBPcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3RyaW5nVmll
dyYgc3RyaW5nLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQogdGVtcGxhdGUgPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPGJvb2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IENoYXJhY3RlclR5cGUgZmxhZ0NoYXIgPSAqYnVmZmVy
OwogICAgICsrYnVmZmVyOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1Bh
cnNpCiAgICAgZWxzZSBpZiAoZmxhZ0NoYXIgPT0gJzEnKQogICAgICAgICBmbGFnID0gdHJ1ZTsK
ICAgICBlbHNlCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihidWZm
ZXIpOwogICAgIApAQCAtMTk1LDIyICsxOTUsMjIgQEAgT3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNG
bGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCiBPcHRpb25hbDxzdGQ6OnBh
aXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdW
aWV3JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9w
dGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNl
TnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlm
IChidWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigqeCwg
KngpOwogCiAgICAgICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBp
bmdQb2xpY3k6OkRvbnRTa2lwKTsKICAgICAgICAgaWYgKCF5KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcigqeCwgKnkpOwogICAgIH0pOwpAQCAtMjE5LDE1ICsyMTksMTUgQEAgT3B0aW9u
YWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29u
c3QgU3RyaW5nVmlldyYgc3QKIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVy
KSAtPiBPcHRpb25hbDxGbG9hdFBvaW50PiB7CiAgICAgICAgIGlmICghc2tpcE9wdGlvbmFsU1ZH
U3BhY2VzKGJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHBvaW50ID0gcGFyc2VG
bG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAvLyBEaXNhbGxvdyBhbnl0aGluZyBleGNlcHQgc3BhY2VzIGF0IHRoZSBlbmQuCiAgICAg
ICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwpAQCAtMjQzLDE2ICsyNDMsMTYgQEAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVJlY3QoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQog
ICAgICAgICAKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAg
aWYgKCF4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7
CiAgICAgICAgIGlmICgheSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHdpZHRoID0gcGFyc2VO
dW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBh
dXRvIGhlaWdodCA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3k6OkRv
bnRTa2lwKTsKICAgICAgICAgaWYgKCFoZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4gRmxvYXRSZWN0IHsgKngsICp5LCAqd2lkdGgsICpoZWlnaHQgfTsKICAgICB9KTsKQEAgLTI5
Myw3ICsyOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0
aW9uYWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNvZGVSYW5nZQogewogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKTsKICAgICBpZiAobGVuZ3RoIDwgMiB8fCBi
dWZmZXJbMF0gIT0gJ1UnIHx8IGJ1ZmZlclsxXSAhPSAnKycpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBidWZmZXIgKz0g
MjsKIApAQCAtMzA2LDcgKzMwNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBPcHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgKytzdGFydExlbmd0aDsKICAgICAgICAgaWYgKHN0YXJ0TGVu
Z3RoID4gNikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzdGFydFJhbmdlID0gKHN0YXJ0UmFuZ2UgPDwg
NCkgfCB0b0FTQ0lJSGV4VmFsdWUoKmJ1ZmZlcik7CiAgICAgICAgICsrYnVmZmVyOwogICAgIH0K
QEAgLTMxNCw3ICszMTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgT3B0aW9uYWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNvZGVSYW5nZQogICAgIC8vIEhhbmRs
ZSB0aGUgY2FzZSBvZiByYW5nZXMgc2VwYXJhdGVkIGJ5ICItIiBzaWduLgogICAgIGlmICgyICsg
c3RhcnRMZW5ndGggPCBsZW5ndGggJiYgKmJ1ZmZlciA9PSAnLScpIHsKICAgICAgICAgaWYgKCFz
dGFydExlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgLy8gUGFyc2UgdGhlIGVu
ZGluZyBoZXggbnVtYmVyIChvciBpdHMgcHJlZml4KS4KICAgICAgICAgdW5zaWduZWQgZW5kUmFu
Z2UgPSAwOwpAQCAtMzI1LDEzICszMjUsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICsrZW5kTGVuZ3RoOwogICAgICAgICAg
ICAgaWYgKGVuZExlbmd0aCA+IDYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZW5k
UmFuZ2UgPSAoZW5kUmFuZ2UgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoKmJ1ZmZlcik7CiAgICAg
ICAgICAgICArK2J1ZmZlcjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFlbmRM
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIFVuaWNvZGVSYW5nZSByYW5nZTsK
ICAgICAgICAgcmFuZ2UuZmlyc3QgPSBzdGFydFJhbmdlOwpAQCAtMzQ2LDE0ICszNDYsMTQgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVS
YW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICArK3N0
YXJ0TGVuZ3RoOwogICAgICAgICBpZiAoc3RhcnRMZW5ndGggPiA2KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHN0YXJ0UmFuZ2UgPDw9IDQ7CiAgICAgICAgIGVuZFJhbmdlID0gKGVuZFJhbmdlIDw8IDQp
IHwgMHhGOwogICAgICAgICArK2J1ZmZlcjsKICAgICB9CiAgICAgCiAgICAgaWYgKCFzdGFydExl
bmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICBVbmljb2RlUmFuZ2UgcmFuZ2U7CiAgICAgcmFuZ2UuZmlyc3Qg
PSBzdGFydFJhbmdlOwpAQCAtMzk3LDExICszOTcsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9h
dFAKIHsKICAgICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgIGlmICgheCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgaWYgKCF5KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIEZsb2F0UG9pbnQgeyAqeCwgKnkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEJsZW5kZXIuY3BwCmluZGV4IDIxYzJhMjE3YjEyOWEzNjUzMzg1YzBiOTgwODY4NWI1ZWE2N2Ez
MTIuLjUxNTBjODI3ZDU0NjNjOTYyMDE3OTFhZjk0NGU3Y2VlN2FiODllZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBPcHRpb25hbDxSZXN1bHRQYWlyPEZ1bmN0aW9uPj4g
cHVsbEZyb21Tb3VyY2UKICAgICBpZiAoZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpKSB7CiAgICAg
ICAgIGF1dG8gcGFyc2VkRnJvbSA9IHN0ZDo6aW52b2tlKGZ1bmN0aW9uLCBmcm9tU291cmNlKTsK
ICAgICAgICAgaWYgKCFwYXJzZWRGcm9tKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZyb21SZXN1bHQg
PSBXVEZNb3ZlKCpwYXJzZWRGcm9tKTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNlZFRvID0gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0aW9uPihmdW5jdGlvbiksIHRvU291cmNlKTsKICAg
ICBpZiAoIXBhcnNlZFRvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFJlc3VsdFBhaXI8RnVuY3Rpb24+IHsg
V1RGTW92ZShmcm9tUmVzdWx0KSwgV1RGTW92ZSgqcGFyc2VkVG8pIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnTGlzdC5oCmluZGV4IDk0ZjZmMzllNGUxZjFiNjc0NDMzY2EyNTAxNTM4MThm
NGY2MmZlNDIuLmNlODdiMGI2MmU2NjlmODdkMzM5NDM0YzQ0ZjA3NDViNWQ5YzU3MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCkBAIC0yMTAsNyArMjEwLDcgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICB2b2lkIGNsZWFyUGF0aEJ5dGVTdHJlYW0oKSB7IG1fcGF0aEJ5dGVTdHJl
YW0uY2xlYXIoKTsgfQotICAgIHZvaWQgY2xlYXJQYXRoKCkgeyBtX3BhdGggPSBXVEY6Om51bGxv
cHQ7IH0KKyAgICB2b2lkIGNsZWFyUGF0aCgpIHsgbV9wYXRoID0gc3RkOjpudWxsb3B0OyB9CiAK
ICAgICB2b2lkIHBhdGhCeXRlU3RyZWFtV2lsbENoYW5nZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCmluZGV4IDQ2MWQyOGQ1NjZiMGU4ZjFiMGM2
OTFhYmQxNTljMDk1NjZhZDM2ZWQuLjliYmU5MzM5ZDYyYTVmMjMyYmNmYTA4OWY4ZjY3MzAxYmE0
ZTJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKQEAg
LTYzLDcgKzYzLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxTVkdQYXRoU2VnVHlwZT4gbmV4dENvbW1hbmRIZWwKICAgICAgICAgcmV0dXJuIHBy
ZXZpb3VzQ29tbWFuZDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFNWR1BhdGhTZWdUeXBlIFNWR1BhdGhTdHJpbmdTb3Vy
Y2U6Om5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkKQEAgLTE0Miw3
ICsxNDIsNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRo
U3RyaW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogICAgIHJldHVybiBwYXJzZShbXShh
dXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0
YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdl
dFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBNb3ZlVG9TZWdtZW50IHNlZ21l
bnQ7CiAgICAgICAgIHNlZ21lbnQudGFyZ2V0UG9pbnQgPSBXVEZNb3ZlKCp0YXJnZXRQb2ludCk7
CkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVu
dD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVG9TZWdtZW50KCkKICAgICByZXR1cm4g
cGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9TZWdtZW50PiB7CiAgICAg
ICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAg
aWYgKCF0YXJnZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgTGluZVRvU2Vn
bWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gV1RGTW92ZSgqdGFy
Z2V0UG9pbnQpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6Okxp
bmVUb0hvcml6b250YWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUCiAg
ICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAg
ICAgICAgaWYgKCF4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBMaW5lVG9Ib3Jpem9u
dGFsU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnggPSAqeDsKQEAgLTE4MSw3ICsx
ODEsNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNW
R1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVgogICAgIHJldHVybiBwYXJzZShbXShhdXRv
JiBidWZmZXIpIC0+IE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gewogICAgICAgICBh
dXRvIHkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgCiAgICAgICAgIExpbmVUb1ZlcnRpY2FsU2VnbWVudCBzZWdtZW50OwogICAgICAg
ICBzZWdtZW50LnkgPSAqeTsKQEAgLTE5NCwxNSArMTk0LDE1IEBAIE9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3Vy
dmVUb0N1CiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3Vy
dmVUb0N1YmljU2VnbWVudD4gewogICAgICAgICBhdXRvIHBvaW50MSA9IHBhcnNlRmxvYXRQb2lu
dChidWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50MSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1
dG8gcG9pbnQyID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQy
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2lu
dChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgQ3VydmVUb0N1YmljU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnBvaW50MSA9
ICpwb2ludDE7CkBAIC0yMTcsMTEgKzIxNywxMSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpD
dXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cgog
ICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1cnZlVG9DdWJp
Y1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byBwb2ludDIgPSBwYXJzZUZsb2F0UG9pbnQo
YnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRv
IHRhcmdldFBvaW50ID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFy
Z2V0UG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50
IHNlZ21lbnQ7CiAgICAgICAgIHNlZ21lbnQucG9pbnQyID0gKnBvaW50MjsKQEAgLTIzNSwxMSAr
MjM1LDExIEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1
dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHsKICAgICAg
ICAgYXV0byBwb2ludDEgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFw
b2ludDEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHRhcmdldFBvaW50ID0gcGFyc2VGbG9h
dFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0UG9pbnQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50
LnBvaW50MSA9ICpwb2ludDE7CkBAIC0yNTMsNyArMjUzLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNv
dXJjZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6
OnBhcnMKICAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxDdXJ2
ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudD4gewogICAgICAgICBhdXRvIHRhcmdldFBvaW50ID0g
cGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0UG9pbnQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCBzZWdtZW50Owog
ICAgICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gKnRhcmdldFBvaW50OwpAQCAtMjY2LDIyICsy
NjYsMjIgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8m
IGJ1ZmZlcikgLT4gT3B0aW9uYWw8QXJjVG9TZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcnggPSBw
YXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXJ4KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGF1dG8gcnkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXJ5KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGF1dG8gYW5nbGUgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBp
ZiAoIWFuZ2xlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gbGFyZ2VBcmMgPSBwYXJzZUFyY0Zs
YWcoYnVmZmVyKTsKICAgICAgICAgaWYgKCFsYXJnZUFyYykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBh
dXRvIHN3ZWVwID0gcGFyc2VBcmNGbGFnKGJ1ZmZlcik7CiAgICAgICAgIGlmICghc3dlZXApCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZm
ZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQXJj
VG9TZWdtZW50IHNlZ21lbnQ7CiAgICAgICAgIHNlZ21lbnQucnggPSAqcng7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggNWYyMDM5NDNiMDU3
YjViM2JmZGNlMmJhMmYxNDk5Y2Q4NDBjNGNiMy4uZTViOGZlZGQwMmYzNGVmMTliZDdjZWM2YmE3
ODJlODA5NzYzOTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252
ZXJzaW9uLmNwcApAQCAtMTI5Miw3ICsxMjkyLDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0
ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmcK
ICAgICBpZiAoZ2x5cGhCb3VuZGluZ0JveCkKICAgICAgICAgbV9taW5SaWdodFNpZGVCZWFyaW5n
ID0gc3RkOjptaW4obV9taW5SaWdodFNpZGVCZWFyaW5nLCBob3Jpem9udGFsQWR2YW5jZSAtIGds
eXBoQm91bmRpbmdCb3gudmFsdWUoKS5tYXhYKCkpOwogCi0gICAgbV9nbHlwaHMuYXBwZW5kKEds
eXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2
ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSksIGNv
ZGVwb2ludHMpKTsKKyAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCks
IGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhC
b3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsKIH0KIAogdm9p
ZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhzKCkKQEAgLTE0MTYs
NyArMTQxNiw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVy
KGNvbnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAgICAgICAgICAgIHByb2Nlc3NH
bHlwaEVsZW1lbnQoZ2x5cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50LCBkZWZhdWx0SG9yaXpvbnRh
bEFkdmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNvZGVBdHRyaWJ1dGUsIGJvdW5k
aW5nQm94KTsKICAgICB9CiAKLSAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVP
cihGbG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlX29y
KEZsb2F0UmVjdCgpKTsKIAogICAgIGFwcGVuZExpZ2F0dXJlR2x5cGhzKCk7CiAKQEAgLTE1NTgs
OSArMTU1OCw5IEBAIE9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChj
b25zdCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0
ZXIgY29udmVydGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWNvbnZlcnRlci5jb252ZXJ0U1ZHVG9PVEZGb250KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNv
bnZlcnRlci5yZWxlYXNlUmVzdWx0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1hYmxlLmNwcAppbmRleCA3MWE1MWUyMTQ5NzZhM2ZiODBmZDEwZjZjYWI0OTk0Nzg3MGJhNjJm
Li44OWNiZDc5NjMzYjc2MGIxMDdjMDA0YTRmMmE1YzIwYzZjNDI4N2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBzdGF0aWMg
Y29uc3RleHByIGludCBvcHRpb25hbFZhbHVlc0ZvclR5cGVbXSA9ICB7IDAsIDAsIDEsIDEsIDIs
IDAsIDAgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25h
bDxTVkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZUdlbmVyaWMoU1ZHVHJhbnNm
b3JtVmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmICh0eXBlID09IFNWR1RyYW5zZm9ybVZhbHVl
OjpTVkdfVFJBTlNGT1JNX1VOS05PV04pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgdmFsdWVDb3VudCA9IDA7CiAg
ICAgZmxvYXQgdmFsdWVzW10gPSB7MCwgMCwgMCwgMCwgMCwgMH07CiAgICAgaWYgKCh2YWx1ZUNv
dW50ID0gcGFyc2VUcmFuc2Zvcm1QYXJhbUxpc3QoYnVmZmVyLCB2YWx1ZXMsIHJlcXVpcmVkVmFs
dWVzRm9yVHlwZVt0eXBlXSwgb3B0aW9uYWxWYWx1ZXNGb3JUeXBlW3R5cGVdKSkgPCAwKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3JtOwogICAgIHN3aXRjaCAodHlwZSkgewpA
QCAtMTY2LDcgKzE2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBtYXRyaXhEZXNjW10gPQogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdU
cmFuc2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoKmJ1ZmZlciA9PSAncycpIHsKICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJz
RXhhY3RseShidWZmZXIsIHNrZXdYRGVzYzxDaGFyYWN0ZXJUeXBlPikpCkBAIC0xNzUsNyArMTc1
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNW
R1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm0KICAgICAgICAgICAgIHJldHVybiBTVkdUcmFu
c2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9TS0VXWTsKICAgICAgICAgaWYgKHNraXBDaGFyYWN0
ZXJzRXhhY3RseShidWZmZXIsIHNjYWxlRGVzYzxDaGFyYWN0ZXJUeXBlPikpCiAgICAgICAgICAg
ICByZXR1cm4gU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fU0NBTEU7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShidWZmZXIsIHRyYW5zbGF0ZURlc2M8
Q2hhcmFjdGVyVHlwZT4pKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNm
b3JtCiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShidWZmZXIsIG1hdHJpeERlc2M8Q2hh
cmFjdGVyVHlwZT4pKQogICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFO
U0ZPUk1fTUFUUklYOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
VHlwZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcgc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcAppbmRleCBiYzM1NGRhMjM3
Y2VhNmQ0YzFlMWI2N2Y3OWJmM2UyNDcxMTgwNDk4Li5kZDFiODkyMGNkNmYwYzBiODU2YzhmMmI0
NjM0YmFkYThjYmFhMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcApA
QCAtNDgsMzAgKzQ4LDMwIEBAIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBTVkdWS2VybkVsZW1l
bnQ6OmJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0CiAgICAgYXV0byYgdTEgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp1MUF0dHIpOwogICAgIGF1dG8m
IGcxID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZzFBdHRyKTsK
ICAgICBpZiAodTEuaXNFbXB0eSgpICYmIGcxLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHUy
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTJBdHRyKTsKICAg
ICBhdXRvJiBnMiA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omcy
QXR0cik7CiAgICAgaWYgKHUyLmlzRW1wdHkoKSAmJiBnMi5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGdseXBoTmFtZTEgPSBwYXJzZUdseXBoTmFtZShnMSk7CiAgICAgaWYgKCFnbHlwaE5hbWUx
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gZ2x5cGhOYW1lMiA9IHBhcnNlR2x5cGhOYW1lKGcyKTsKICAgICBpZiAo
IWdseXBoTmFtZTIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byB1bmljb2RlU3RyaW5nMSA9IHBhcnNlS2VybmluZ1Vu
aWNvZGVTdHJpbmcodTEpOwogICAgIGlmICghdW5pY29kZVN0cmluZzEpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byB1
bmljb2RlU3RyaW5nMiA9IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcodTIpOwogICAgIGlmICgh
dW5pY29kZVN0cmluZzIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgYXV0byBrZXJu
aW5nID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6a0F0dHIpLnN0
cmluZygpLnRvRmxvYXQoJm9rKTsKICAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFNWR0tl
cm5pbmdQYWlyIHsKICAgICAgICAgV1RGTW92ZSh1bmljb2RlU3RyaW5nMS0+Zmlyc3QpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCmluZGV4IGQ1ZDk3N2ZmYTVmY2I3ZTA1YjJhZjU1
NjUxMDE1ZWFiYzIzNDJjMjcuLmQyN2Y4ZTUyMmQ3NDYxZTZkZjkxNzgwYzVjOTc5N2QwODkxYTEy
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1pvb21B
bmRQYW5UeXBlPiBwYXJzZVpvb21BbmQKICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGJ1
ZmZlciwgbWFnbmlmeTxDaGFyYWN0ZXJUeXBlPikpCiAgICAgICAgIHJldHVybiBTVkdab29tQW5k
UGFuTWFnbmlmeTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IFNWR1pvb21BbmRQYW46
OnBhcnNlWm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0
ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRE
ZWNvcmF0ZWRQcm9wZXJ0eS5oCmluZGV4IDRjMTZkOGY5ZTUwNTRkYTAzMzlmYTA2MDUxMzliZmU2
NzYxODczY2IuLjkwZDUyODY4YWNjMzIxNzcyNTk4NGViYWY0ZDFjNDY2NGMwZWE1MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVk
UHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRl
ZERlY29yYXRlZFByb3BlcnR5LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBt
X3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CiAgICAgICAgIHJldHVybiBiYXNlVmFs
QXNTdHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmgKaW5kZXggZDlhMTE1OTc0MzY2Mzc0ZjdlYThkZmJiMGE0
NjNlMDg2MWZhYmRhZC4uZDAxY2E0ZmJkZDg2NGZiMTQxOTQxODk3MjEzMWNiOGMzZTExZGQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ29udHJvbCB0aGUgc3lu
Y2hyb25pemF0aW9uIGJldHdlZW4gdGhlIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaW4g
YmFzZVZhbC4KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldERpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxTdHJpbmc+IHN5bmNocm9uaXplKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmly
dHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAgICAgCiAgICAgLy8gQ29udHJvbCB0aGUgYW5pbWF0aW9uIGxpZmUgY3ljbGUuCiAgICAg
Ym9vbCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0b3JzLmNvbXB1dGVTaXpl
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCmluZGV4IDU3ZTljNDkx
YzI0MzBiMzFjN2NlMTEwZDdmODFiNDE3M2E2ZjhjNTkuLjkzNGFjMWQzZGEyYTk2ZDVkNjg5N2U1
Yzk0NzQ5NjRlZDhjNzg3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwu
aApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGRpcnR5MSA9IHByb3Bl
cnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIo
b3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGlmICghKGRpcnR5MSB8fCBkaXJ0eTIpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgYXV0byB0eXBlID0gcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbCgp
OwogCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkaXJ0eTEgPSBw
cm9wZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVy
dHkyKG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBpZiAoIShkaXJ0eTEgfHwgZGlydHkyKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIFN0cmluZyBzdHJpbmcxID0gZGlydHkxID8gKnByb3BlcnR5
MShvd25lciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTEob3duZXIpLT5iYXNlVmFsQXNTdHJp
bmcoKTsKICAgICAgICAgU3RyaW5nIHN0cmluZzIgPSBkaXJ0eTIgPyAqcHJvcGVydHkyKG93bmVy
KS0+c3luY2hyb25pemUoKSA6IHByb3BlcnR5Mihvd25lciktPmJhc2VWYWxBc1N0cmluZygpOwpA
QCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZGlydHkxID0gcHJvcGVy
dHkxKG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBib29sIGRpcnR5MiA9IHByb3BlcnR5Mihv
d25lciktPmlzRGlydHkoKTsKICAgICAgICAgaWYgKCEoZGlydHkxIHx8IGRpcnR5MikpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBTdHJpbmcgc3RyaW5nMSA9IGRpcnR5MSA/ICpwcm9wZXJ0eTEob3du
ZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkxKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5nKCk7
CiAgICAgICAgIFN0cmluZyBzdHJpbmcyID0gZGlydHkyID8gKnByb3BlcnR5Mihvd25lciktPnN5
bmNocm9uaXplKCkgOiBwcm9wZXJ0eTIob3duZXIpLT5iYXNlVmFsQXNTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZl
VmFsdWVGdW5jdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKaW5kZXggMjY0YWI2MDE0OTk1
NmE1ZDFjZTQzZGU0NzU4ZDRlNzE1ZTRiNjYwNC4uNTQ4YjkzOWYxOGE2YzczZjdjYjFhYmM3Y2Y3
ZDU4M2I3MmJlOTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1w
bC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6
Y29sb3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKIAogT3B0aW9u
YWw8ZmxvYXQ+IFNWR0FuaW1hdGlvbkludGVnZXJGdW5jdGlvbjo6Y2FsY3VsYXRlRGlzdGFuY2Uo
U1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3QK
IHsKLSAgICByZXR1cm4gc3RkOjphYnMocGFyc2VJbnRlZ2VyPGludD4odG8pLnZhbHVlT3IoMCkg
LSBwYXJzZUludGVnZXI8aW50Pihmcm9tKS52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc3RkOjph
YnMocGFyc2VJbnRlZ2VyPGludD4odG8pLnZhbHVlX29yKDApIC0gcGFyc2VJbnRlZ2VyPGludD4o
ZnJvbSkudmFsdWVfb3IoMCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVu
Y3Rpb25JbXBsLmgKaW5kZXggNGJhMzdhOWNhN2NmOGEzNDRiYTYzYjQ2MTcwYWM3YjI0NWEyYzY0
ZS4uOTY5Nzk5YmIwMGI1ZmRkOTk2NTE4NGJmYjdlMmY2NzI0MDQwMTUyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1Ymxp
YzoKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKHBhcnNlTnVtYmVyKHRvKS52YWx1ZU9yKDApIC0g
cGFyc2VOdW1iZXIoZnJvbSkudmFsdWVPcigwKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmFicyhw
YXJzZU51bWJlcih0bykudmFsdWVfb3IoMCkgLSBwYXJzZU51bWJlcihmcm9tKS52YWx1ZV9vcigw
KSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggM2E3NmY5MTdmZDI0MGU5NWJkNjljNGM4ZmIz
NjdiMjBlZWFlZjZlOS4uMzNhZjViZWY5MjMwYTZmZTU0OWY3YjE3OTVhMDJiYzVmODUzY2UwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nv
ci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhj
b25zdCBPd25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldERpcnR5KGNvbnN0IE93bmVyVHlwZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1h
dGVkUHJvcGVydHkpIGNvbnN0IHsgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgpOyB9Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNv
bnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5n
PiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxv
cHQ7IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVB
bmltYXRvcihPd25lclR5cGUmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgQW5pbWF0aW9uTW9kZSwg
Q2FsY01vZGUsIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmLCBTVkdBdHRyaWJ1dGVB
bmltYXRvciYpIGNvbnN0IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5LmgKaW5kZXggNDA0M2ZmNDRmMjA2YTY3MTk1ZTliOWRjZGUwNjY2MGZlMjEzZDc1Ny4u
Y2UzYzJiMjcxZDlhMjMwYjRlZDAwYzA5ZWYxZTcxOGU1OTk1NjA3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKICAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIGlm
IChtX3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IG1fc3RhdGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbjsKICAgICAgICAgcmV0dXJuIHZhbHVl
QXNTdHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRyYWl0cy5jcHAKaW5kZXggYWU0ZjQ3OGQ3MTMyZjE5ZGZlYzZiOTAyNDAw
NDA5ZDNlMWM5NWViOC4uZGY1YmJiMTQ3YTMyYjJiNjU5MDNlZjkzYzg4MTFiZjE0N2M0Y2Y4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFp
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJh
aXRzLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGludCBTVkdQ
cm9wZXJ0eVRyYWl0czxpbnQ+Ojpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIHJldHVybiBwYXJzZUludGVnZXI8aW50PihzdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgcmV0
dXJuIHBhcnNlSW50ZWdlcjxpbnQ+KHN0cmluZykudmFsdWVfb3IoMCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4
IDBjYWRhN2EwMmNhZjAwNDMyNzIyMmIzOGUxY2FmZjkyYmNjYzIzNDAuLjYzMzBjM2M0NGEwMmFh
ODU1NGQxZjI3NmU1OTcxNjUyZGY2YjZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8Q29sb3I+IHsKICAgICB7CiAgICAgICAgIENvbG9yIGNvbG9yID0g
Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgICAg
IGlmICghY29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBjb2xvcjsK
ICAgICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBDb2xvciYgdHlwZSkgeyBy
ZXR1cm4gc2VyaWFsaXphdGlvbkZvckhUTUwodHlwZSk7IH0KQEAgLTkwLDcgKzkwLDcgQEAgc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPGZsb2F0PiB7CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxW
YWx1ZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgZnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcp
LnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcpLnZhbHVlX29y
KDApOwogICAgIH0KICAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAg
ICAgc3RhdGljIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJu
IHsgfTsgfQogICAgIHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyT3B0
aW9uYWxOdW1iZXIoc3RyaW5nKS52YWx1ZU9yKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsgfSk7
CisgICAgICAgIHJldHVybiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVf
b3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4geyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlv
bmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1
ZSgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0
PikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KQEAgLTEx
NSw3ICsxMTUsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD4gewogICAg
IHN0YXRpYyBGbG9hdFBvaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsg
fQogICAgIHN0YXRpYyBGbG9hdFBvaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgewotICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlT3IoRmxvYXRQ
b2ludCB7IH0pOworICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZs
b2F0UG9pbnQgeyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBh
cnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBA
IC0xMzIsNyArMTMyLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4gewog
ICAgIHN0YXRpYyBGbG9hdFJlY3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7
IH0KICAgICBzdGF0aWMgRmxvYXRSZWN0IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgewotICAgICAgICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZykudmFsdWVPcihGbG9hdFJl
Y3QgeyB9KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVjdChzdHJpbmcpLnZhbHVlX29yKEZsb2F0
UmVjdCB7IH0pOwogICAgIH0KICAgICBzdGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggNmE5NzU1OTIwNWE2
NGFkY2UwNGJhODVkNDFkYzMxYTVhYTc3MzhkYi4uMWM3MmE1MzVjYTg5ZjJhYzk0ZWEzZTY1NWQy
NjYzOTBlNWZmOTliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6
OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgRm9udENhY2hlOjpzaW5nbGV0b24o
KS5zZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KG1fc2hvdWxkTW9j
a0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElP
KQotICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVsdFNhbXBsZVJhdGVGb3JUZXN0aW5nKFdURjo6
bnVsbG9wdCk7CisgICAgQXVkaW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3Rp
bmcoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggYWExNDFkOGVmNzUyYjg0NjZmNWQ3ZTExMGZlMjg2YjkxNDEyYmZmOC4uZjdh
MjA4NWJkZTY4MjQ5NTkxNWNkNGIxMGJjY2QwNThlNGJjMzg5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogICAgIHBhZ2Uuc2V0U2hv
d0FsbFBsdWdpbnMoZmFsc2UpOwotICAgIHBhZ2Uuc2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJy
aWRlRm9yVGVzdGluZyhXVEY6Om51bGxvcHQpOworICAgIHBhZ2Uuc2V0TG93UG93ZXJNb2RlRW5h
YmxlZE92ZXJyaWRlRm9yVGVzdGluZyhzdGQ6Om51bGxvcHQpOwogICAgIHBhZ2Uuc2V0T3V0c2lk
ZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShR
VUlDS19MT09LKQpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogICAgIEhUTUxDYW52YXNFbGVtZW50
OjpzZXRNYXhQaXhlbE1lbW9yeUZvclRlc3RpbmcoMCk7IC8vIFRoaXMgbWVhbnMgdXNlIHRoZSBk
ZWZhdWx0IHZhbHVlLgotICAgIERPTVdpbmRvdzo6b3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0aW9u
RHVyYXRpb25Gb3JUZXN0aW5nKFdURjo6bnVsbG9wdCk7CisgICAgRE9NV2luZG93OjpvdmVycmlk
ZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBSZW5kZXJUaGVtZUlPUzo6c2V0Q29udGVudFNpemVDYXRl
Z29yeShrQ1RGb250Q29udGVudFNpemVDYXRlZ29yeUwpOwpAQCAtNjQ3LDEzICs2NDcsMTMgQEAg
SW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6
c2luZ2xldG9uKCkuc2V0SGFzQUMoV1RGOjpudWxsb3B0KTsKLSAgICBTeXN0ZW1CYXR0ZXJ5U3Rh
dHVzVGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0SGFzQmF0dGVyeShXVEY6Om51bGxv
cHQpOworICAgIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGV0b24o
KS5zZXRIYXNBQyhzdGQ6Om51bGxvcHQpOworICAgIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5n
T3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5zZXRIYXNCYXR0ZXJ5KHN0ZDo6bnVsbG9wdCk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQotICAgIFZQOVRlc3RpbmdP
dmVycmlkZXM6OnNpbmdsZXRvbigpLnNldEhhcmR3YXJlRGVjb2RlckRpc2FibGVkKFdURjo6bnVs
bG9wdCk7Ci0gICAgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0VlA5U2NyZWVu
U2l6ZUFuZFNjYWxlKFdURjo6bnVsbG9wdCk7CisgICAgVlA5VGVzdGluZ092ZXJyaWRlczo6c2lu
Z2xldG9uKCkuc2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpudWxsb3B0KTsKKyAgICBW
UDlUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5zZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUo
c3RkOjpudWxsb3B0KTsKICNlbmRpZgogfQogCkBAIC0xMzg1LDcgKzEzODUsNyBAQCB2b2lkIElu
dGVybmFsczo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVu
dFRocm90dGxpbmdCZWhhdgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXZhbHVlKSB7Ci0g
ICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xNDAzLDExICsxNDAzLDExIEBAIE9wdGlvbmFsPEludGVybmFsczo6RXZlbnRU
aHJvdHRsaW5nQmVoYXZpb3I+IEludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPCiB7
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVoYXZpb3IgPSBk
b2N1bWVudC0+cGFnZSgpLT5ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCk7CiAgICAg
aWYgKCFiZWhhdmlvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoYmVoYXZpb3IudmFsdWUoKSkgewogICAg
IGNhc2UgV2ViQ29yZTo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I6OlJlc3BvbnNpdmU6CkBAIC0x
NDE2LDcgKzE0MTYsNyBAQCBPcHRpb25hbDxJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2
aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yTwogICAgICAgICByZXR1cm4g
SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcjo6VW5yZXNwb25zaXZlOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogU3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQp
CkBAIC0yNjA1LDcgKzI2MDUsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpj
b3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVgogICAgICAgICBy
ZXR1cm4gcGFyc2VkT3B0aW9ucy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBib29sIG1hcmsg
PSBtYXJrTWF0Y2hlcyA9PSAibWFyayI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5lZGl0b3IoKS5j
b3VudE1hdGNoZXNGb3JUZXh0KHRleHQsIFdURjo6bnVsbG9wdCwgcGFyc2VkT3B0aW9ucy5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgMTAwMCwgbWFyaywgbnVsbHB0cik7CisgICAgcmV0dXJuIGRvY3Vt
ZW50LT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRleHQsIHN0ZDo6bnVsbG9wdCwgcGFy
c2VkT3B0aW9ucy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgMTAwMCwgbWFyaywgbnVsbHB0cik7CiB9
CiAKIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OmNvdW50RmluZE1hdGNoZXMoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmluZE9wdGlvbnMpCkBAIC0y
Njk4LDEzICsyNjk4LDEzIEBAIHVpbnQ2NF90IEludGVybmFsczo6ZWxlbWVudElkZW50aWZpZXIo
RWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHVpbnQ2NF90IEludGVybmFsczo6ZnJhbWVJZGVudGlm
aWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogcGFn
ZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7
CisgICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZUlEKCkudmFs
dWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKICAgICByZXR1cm4gMDsKIH0K
IAogdWludDY0X3QgSW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFn
ZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpOworICAgIHJldHVybiBkb2N1bWVudC5wYWdlSUQo
KS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKQEAgLTM1OTMsNyAr
MzU5Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Q29tcG9zaXRpbmdQb2xp
Y3lPdmVycmlkZShPcHRpb25hbDxDb21wb3NpdGluZ1BvCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAogICAgIGlmICghcG9saWN5T3ZlcnJpZGUpIHsK
LSAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0Q29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZShX
VEY6Om51bGxvcHQpOworICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXRDb21wb3NpdGluZ1Bv
bGljeU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC0zNjE3LDcgKzM2MTcsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxJbnRlcm5hbHM6OkNv
bXBvc2l0aW5nUG9saWN5Pj4gSW50ZXJuYWxzOjpjb21wb3NpdGluZ1BvbGljeQogCiAgICAgYXV0
byBwb2xpY3lPdmVycmlkZSA9IGRvY3VtZW50LT5wYWdlKCktPmNvbXBvc2l0aW5nUG9saWN5T3Zl
cnJpZGUoKTsKICAgICBpZiAoIXBvbGljeU92ZXJyaWRlKQotICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBzd2l0
Y2ggKHBvbGljeU92ZXJyaWRlLnZhbHVlKCkpIHsKICAgICBjYXNlIFdlYkNvcmU6OkNvbXBvc2l0
aW5nUG9saWN5OjpOb3JtYWw6CkBAIC01MDYzLDcgKzUwNjMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VGFza1NvdXJjZT4gdGFza1NvdXJjZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB0YXNrU291cmNl
TmFtZSkKIHsKICAgICBpZiAodGFza1NvdXJjZU5hbWUgPT0gIkRPTU1hbmlwdWxhdGlvbiIpCiAg
ICAgICAgIHJldHVybiBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb247Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBJbnRlcm5hbHM6OnF1ZXVlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIHRhc2tTb3VyY2VOYW1lLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQpAQCAtNTc1OCw3ICs1NzU4LDcgQEAgYXV0byBJbnRlcm5hbHM6OnBhcnNlRG9WaUNv
ZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gT3B0aW9uYWw8RG9WaVBhcmEKIHsK
ICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJz
KHN0cmluZyk7CiAgICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBEb1ZpUGFyYW1ldGVyU2V0
IGNvbnZlcnRlZFJlc3VsdDsKICAgICBzd2l0Y2ggKHBhcnNlUmVzdWx0LT5jb2RlYykgewogICAg
IGNhc2UgRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpBVkMxOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKaW5kZXggZjg3OWIyOGZjODllNjIzY2M2MTE5ZmFkODNiMmM3M2FlNmIwMWI1NC4uMTg0
NTY0NjQ2MWVkYzMxZmE5ZjU5Y2U3MGYwMWE1OWNlYWEwNjc0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAs
IHZhbHVlKGNvb2tpZS52YWx1ZSkKICAgICAgICAgICAgICwgZG9tYWluKGNvb2tpZS5kb21haW4p
CiAgICAgICAgICAgICAsIHBhdGgoY29va2llLnBhdGgpCi0gICAgICAgICAgICAsIGV4cGlyZXMo
Y29va2llLmV4cGlyZXMudmFsdWVPcigwKSkKKyAgICAgICAgICAgICwgZXhwaXJlcyhjb29raWUu
ZXhwaXJlcy52YWx1ZV9vcigwKSkKICAgICAgICAgICAgICwgaXNIdHRwT25seShjb29raWUuaHR0
cE9ubHkpCiAgICAgICAgICAgICAsIGlzU2VjdXJlKGNvb2tpZS5zZWN1cmUpCiAgICAgICAgICAg
ICAsIGlzU2Vzc2lvbihjb29raWUuc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKaW5kZXggODkxOTY0YmFkNTUwNDkzZGNkN2I4MThmNzAwYWVlYmY3Y2Jm
MmM4Ny4uM2ViMTFmMDBiNDk0ZGYwMjc1OWIyYmUwYTYyMTc3OWIzYTEyZDExNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBP
cHRpb25hbDxTdHJpbmc+IE1vY2tDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkKSBjb25zdAogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShzZXNzaW9uSWQsICJ2YWxpZC1sb2FkZWQtc2Vzc2lvbiIpKQogICAgICAgICByZXR1cm4gc2Vz
c2lvbklkOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5zdGFuY2UoV2Vha1B0cjxNb2NrQ0RN
PiBjZG0pCkBAIC0zMjcsMTQgKzMyNywxNCBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246
OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogewog
ICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZh
Y3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNz
VmFsdWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0
cmluZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAg
ICAgaWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3Mp
KSkgewotICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTQsMTQgKzM1NCwx
NCBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgIC8vIEZJWE1FOiBTZXNzaW9uIGNsb3N1
cmUsIGV4cGlyYXRpb24gYW5kIG1lc3NhZ2UgaGFuZGxpbmcgc2hvdWxkIGJlIGltcGxlbWVudGVk
CiAgICAgLy8gb25jZSB0aGUgcmVsZXZhbnQgYWxnb3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCi0g
ICAgY2FsbGJhY2soZmFsc2UsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGNhbGxiYWNrKGZhbHNl
LCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjps
b2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9h
ZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0
b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAg
aWYgKCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1
cmU6Ok90aGVyKTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6
T3RoZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9p
ZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW4KICAgICBDU3RyaW5nIG1lc3NhZ2VEYXRhIHsgInNlc3Npb24g
bG9hZGVkIiB9OwogICAgIE1lc3NhZ2UgbWVzc2FnZSB7IE1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVu
ZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0
YS5sZW5ndGgoKSkgfTsKIAotICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRG
YWlsdXJlOjpOb25lKTsKKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6Tm9uZSk7CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNz
aW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBDbG9zZVNlc3Npb25DYWxsYmFjayYmIGNhbGxi
YWNrKQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGljZW5zZVR5cGUsIFJlCiB7CiAgICAg
TW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9y
eSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9
LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2so
eyB9LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IGExMmQwZTgwZGNjMWJkMTRlZjQwMGU1MDU2ZDFi
ZjFhN2ViNjVlZWEuLjQwMTRkMGJlOGY2NGYxY2VjZTMxNjg0ZTdmNDk0NmU4ODk3ZDk0NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29y
ZGluYXRvci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBNb2NrTWVk
aWFTZXNzaW9uQ29vcmRpbmF0b3I6OnJlc3VsdCgpIGNvbnN0CiAgICAgaWYgKG1fZmFpbENvbW1h
bmRzKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmMzYWZlZDlh
MzE0MGI5MDMzYjk3NTBiNWNiZDBhMGNmMzJhYzRlYS4uOGQ3M2IxY2E4NWFlNTY0OTU1ZTg0YTg2
OWJlOGZkZjNhNGFjOWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPFN0cmluZz4g
TW9ja1BheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3Ry
aW5nJiBwCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5m
aW5kKHBheW1lbnROZXR3b3JrKTsKICAgICBpZiAocmVzdWx0ID09IG1fYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAqcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCmluZGV4IDQwYTQ5Mzc4Mzc4ZjJjZWUwM2IzMjJjNWI4YzNmYmZiM2M5N2U4ZGQu
LjBjNTI1YWZmZjNjNDcwOGRhMzUwOGQwYmFmMWNjYzgxNGM5MjUyZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oCkBAIC0xMzAsMzcgKzEzMCwzNyBAQCBPcHRpb25hbDxNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aQog
ICAgIE9wdGlvbmFsPFVzZXJWZXJpZmljYXRpb24+IHVzZXJWZXJpZmljYXRpb247CiAgICAgZGVj
b2RlciA+PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlmICghdXNlclZlcmlmaWNhdGlvbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9ICp1c2VyVmVyaWZpY2F0aW9uOwogCiAgICAg
T3B0aW9uYWw8Ym9vbD4gYWNjZXB0QXR0ZXN0YXRpb247CiAgICAgZGVjb2RlciA+PiBhY2NlcHRB
dHRlc3RhdGlvbjsKICAgICBpZiAoIWFjY2VwdEF0dGVzdGF0aW9uKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5h
Y2NlcHRBdHRlc3RhdGlvbiA9ICphY2NlcHRBdHRlc3RhdGlvbjsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gcHJpdmF0ZUtleUJhc2U2NDsKICAgICBkZWNvZGVyID4+IHByaXZhdGVLZXlCYXNlNjQ7
CiAgICAgaWYgKCFwcml2YXRlS2V5QmFzZTY0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wcml2YXRlS2V5QmFz
ZTY0ID0gV1RGTW92ZSgqcHJpdmF0ZUtleUJhc2U2NCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+
IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICBkZWNvZGVyID4+IHVzZXJDZXJ0aWZpY2F0ZUJh
c2U2NDsKICAgICBpZiAoIXVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNl
ckNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqdXNlckNlcnRpZmljYXRlQmFzZTY0KTsKIAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsKICAg
ICBkZWNvZGVyID4+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYgKCFp
bnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pbnRlcm1lZGlh
dGVDQUNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0
ZUJhc2U2NCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJh
c2U2NDsKICAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBp
ZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucHJlZmVycmVk
Q3JlZGVudGlhbElkQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0
KTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzcsMjcgKzE3NywyNyBAQCBPcHRpb25hbDxN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uPiBNb2Nr
V2ViQXV0aGVudGljYQogewogICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246
OkhpZENvbmZpZ3VyYXRpb24gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnBheWxvYWRCYXNlNjQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YWdl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWJTdGFnZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlzVTJmKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5r
ZWVwQWxpdmUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJy
aXZhbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGludWVBZnRlckVy
cm9yRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leHBlY3RDYW5jZWwpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1cHBvcnRDbGllbnRQaW4pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIxMiwxMyArMjEyLDEzIEBAIE9wdGlvbmFsPE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0NvbmZpZ3VyYXRpb24+IE1vY2tXZWJB
dXRoZW50aWNhCiB7CiAgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZj
Q29uZmlndXJhdGlvbiByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJy
b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxvYWRCYXNlNjQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm11bHRpcGxlVGFncykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubXVsdGlwbGVQaHlzaWNhbFRhZ3MpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzNiwyNSArMjM2LDI1IEBAIE9wdGlvbmFsPE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb246CiAgICAgT3B0aW9uYWw8Ym9vbD4gc2lsZW50RmFpbHVyZTsKICAgICBkZWNvZGVy
ID4+IHNpbGVudEZhaWx1cmU7CiAgICAgaWYgKCFzaWxlbnRGYWlsdXJlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3Vs
dC5zaWxlbnRGYWlsdXJlID0gKnNpbGVudEZhaWx1cmU7CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxMb2NhbENvbmZpZ3VyYXRpb24+PiBsb2NhbDsKICAgICBkZWNvZGVyID4+IGxvY2FsOwogICAg
IGlmICghbG9jYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmxvY2FsID0gV1RGTW92ZSgqbG9jYWwpOwogCiAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKICAgICBkZWNvZGVy
ID4+IGhpZDsKICAgICBpZiAoIWhpZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaGlkID0gV1RGTW92ZSgqaGlk
KTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7CiAgICAg
ZGVjb2RlciA+PiBuZmM7CiAgICAgaWYgKCFuZmMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm5mYyA9IFdURk1v
dmUoKm5mYyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJEZXZpY2UuY3BwCmluZGV4IGVkNGY3MGRjYzA3NTRhNGExZjQ0ODU1YjEwMmM3OTU5
YWY5NTA1YzUuLjY3NDM2NGViZDAzNzE1YjJhN2VmZDFkOTg0OWJhOTEyNjg5ZDVlMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTE2Nyw3ICsxNjcs
NyBAQCBPcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6
OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MwogewogICAgIHVzaW5nIEdMID0gR3JhcGhpY3ND
b250ZXh0R0w7CiAgICAgaWYgKCFtX2dsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFBsYXRmb3JtWFI6OkxheWVySGFuZGxl
IGhhbmRsZSA9ICsrbV9sYXllckluZGV4OwogICAgIGF1dG8gdGV4dHVyZSA9IG1fZ2wtPmNyZWF0
ZVRleHR1cmUoKTsKICAgICBhdXRvIGNvbG9yRm9ybWF0ID0gYWxwaGEgPyBHTDo6UkdCQTggOiBH
TDo6UkdCODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDlm
MzY2Y2ExMWZlMDQ5OWIxMDFmNjY1MjA1Mjg2ZjYyN2MxYzZjYWQuLmY1OTdiM2Q5MTkyYzdmNjI3
MjE1NzgzNjU2MzNhMjc2NDA2MGNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJEZXZpY2UuaApAQCAtMTEyLDExICsxMTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmll
d3MoY29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYpOwogICAgIHZvaWQgZGlzY29ubmVjdChE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gZmFs
c2UpOwotICAgIHZvaWQgY2xlYXJWaWV3ZXJPcmlnaW4oKSB7IG1fZGV2aWNlLnNldFZpZXdlck9y
aWdpbihXVEY6Om51bGxvcHQpOyB9CisgICAgdm9pZCBjbGVhclZpZXdlck9yaWdpbigpIHsgbV9k
ZXZpY2Uuc2V0Vmlld2VyT3JpZ2luKHN0ZDo6bnVsbG9wdCk7IH0KICAgICB2b2lkIHNpbXVsYXRl
VmlzaWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSk7CiAgICAgdm9pZCBzZXRCb3VuZHNH
ZW9tZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYgYm91bmRzKSB7IG1fZGV2aWNlLnNl
dE5hdGl2ZUJvdW5kc0dlb21ldHJ5KFdURk1vdmUoYm91bmRzKSk7IH0KICAgICB2b2lkIHNldEZs
b29yT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCk7Ci0gICAgdm9pZCBjbGVhckZsb29y
T3JpZ2luKCkgeyBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQpOyB9CisgICAg
dm9pZCBjbGVhckZsb29yT3JpZ2luKCkgeyBtX2RldmljZS5zZXRGbG9vck9yaWdpbihzdGQ6Om51
bGxvcHQpOyB9CiAgICAgdm9pZCBzaW11bGF0ZVJlc2V0UG9zZSgpOwogICAgIFJlZjxXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKGNvbnN0IEZh
a2VYUklucHV0U291cmNlSW5pdCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmFrZVhS
Vmlldz4+IHBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggOGI1YmNmMzY0
N2VmY2FkYzY5YmI2OGE2MTBhM2RjOTkzNDExY2JhYS4uNTM5NTllNTVhOTgyYzJiZGUxODZmYjI4
OGYxNWZhOTAxYzJkNTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZh
a2VYUklucHV0Q29udHJvbGxlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlIG1vZGUpIHsgbV90YXJnZXRSYXlNb2Rl
ID0gbW9kZTsgfQogICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4mJiBwcm9maWxl
cykgeyBtX3Byb2ZpbGVzID0gV1RGTW92ZShwcm9maWxlcyk7IH0KICAgICB2b2lkIHNldEdyaXBP
cmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQ
b3NpdGlvbiA9IGZhbHNlKTsKLSAgICB2b2lkIGNsZWFyR3JpcE9yaWdpbigpIHsgbV9ncmlwT3Jp
Z2luID0gV1RGOjpudWxsb3B0OyB9CisgICAgdm9pZCBjbGVhckdyaXBPcmlnaW4oKSB7IG1fZ3Jp
cE9yaWdpbiA9IHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgc2V0UG9pbnRlck9yaWdpbihGYWtl
WFJSaWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
ID0gZmFsc2UpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgIHZvaWQgcmVjb25uZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBiOTVmNWM2ZDY5ZGFlNGM5Y2I3MTQzOTc4YzNkMzhm
MGE0ZThiMjQ0Li4yY2RiNzU1Nzk1OGJjODkzZTI2NmQ2ZmI5YzBjZWMxNzY3MGYyOTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91
c2x5KAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQ6Oldh
c0Vycm9yZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0b3ItPm5vdGlmeUxvYWRG
YWlsZWQoTG9hZGFibGVTY3JpcHQ6OkVycm9yIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMb2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV1RGOjpudWxsb3B0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpudWxsb3B0CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFp
bHVyZUtpbmQ6Oldhc0NhbmNlbGVkOgpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYg
bW9kdWxlVVJMCiAgICAgICAgIH0pOwogCiAgICAgICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0g
KkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgMSwgU3RyaW5n
KCksIFt0YXNrLCBzY3JpcHRGZXRjaGVyXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7Ci0gICAgICAgICAg
ICAvLyB0YXNrLT5ydW4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIC8vIHRhc2stPnJ1bihz
dGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OwogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNv
bnN0IFVSTCYgbW9kdWxlVVJMCiAKICAgICAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBkb3duY2Fz
dDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIGlm
ICghY29udGV4dCB8fCAhY29udGV4dC0+c2NyaXB0KCkpIHsKLSAgICAgICAgICAgICAgICB0YXNr
LT5ydW4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgICAgICAgICAgfQogCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBXb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBt
b2R1bGVVUkwKICAgICAgICAgICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgdm0uaXNUZXJt
aW5hdGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGNvbnRleHQtPnNjcmlwdCgp
LT5pc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+c2NyaXB0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNjcmlwdCgpLT5mb3Ji
aWRFeGVjdXRpb24oKTsKLSAgICAgICAgICAgICAgICB0YXNrLT5ydW4oV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfQog
CkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
Ojpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBtb2R1bGVVUkwKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZXBvcnRFeGNlcHRpb24obWVzc2FnZSwgeyB9LCB7IH0sIHsgfSwgeyB9
LCB7IH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0YXNrLT5ydW4oV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIHRhc2stPnJ1bihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA4YmU4
MDgxYTc3YTczMTNkMDFlOTc1MDE3NDhjMGVkODY1ZTQxMjMyLi4wZjE5NDU0NDhjNDVjYjExMWRj
YzRhMjVhNmM5YWJmNmYxNjQ0ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC02NywxNCArNjcsMTQgQEAgT3B0aW9uYWw8RXhjZXB0aW9u
PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQKICAgICAgICAgICAgIG1fc2NyaXB0ID0gc2NyaXB0UmVzb3VyY2UtPnNjcmlwdDsKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChjcmVhdGVSZXNvdXJjZVJlcXVlc3QoaW5pdGlh
dG9ySWRlbnRpZmllcikpOwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KSk7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2Jh
bFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVU
eXBlIH0pOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSZXNvdXJjZVJlcXVlc3QmJiBzY3JpcHRSZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBmZXRjaE9w
dGlvbnMsIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlck1vZGUsIFdv
cmtlclNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiB0YXNrTW9kZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oCmluZGV4IDY0MWEzNWQyMWI4ODlhYzhjZjZmYTdmZmM0ODc1M2RmY2M5OTcwYzUuLjll
NmNiZjJlY2QzMzBlOTU0NDgzYTFjMzgyYTIyY2Q4NzIyMzlmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApA
QCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQoc3RhdGUsIHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSB7IH0sIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291
cmNlID0gV1RGOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKIAogICAgIH5FeHRlbmRhYmxlTWVzc2FnZUV2
ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMTE5ZjNjZmEwMjA0YzUyYzE5MjY4MTE2YTRhMDdiNDll
MDFiYmVmYS4uNzhkMGEzMzIwYjcxZjUwNTVjNjNjMjJhYzRlZTM1NGY2NmU1OWYwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXJQ
ZW5kaW5nSm9icygpCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cygpCiB7CiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxE
b2N1bWVudHMoKSkgewotICAgICAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgPSBkb2N1bWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpID8gbWFr
ZU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihkb2N1bWVudC0+
YWN0aXZlU2VydmljZVdvcmtlcigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDogV1RGOjpu
dWxsb3B0OworICAgICAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgPSBkb2N1bWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtl
X29wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihkb2N1bWVudC0+
YWN0aXZlU2VydmljZVdvcmtlcigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDogc3RkOjpu
dWxsb3B0OwogICAgICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoZG9jdW1lbnQtPnRv
cE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqZG9jdW1lbnQsICp0aGlz
KSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZG9jdW1l
bnQtPnVzZXJBZ2VudChkb2N1bWVudC0+dXJsKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
CmluZGV4IDA5MDlhOTUzODE2NGQ5ZmQ0MGI0YmU1M2Y0Nzc5ZTA3OTNmNjU5ZjYuLjAzMzBiNDli
ZGMxNDQwYTQ3Mjg4ZTM1ZjkyMDI3N2VmNmFiNTMzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC02
NiwyNyArNjYsMjcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlk
ZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICgh
dHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU+IGZy
YW1lVHlwZTsKICAgICBkZWNvZGVyID4+IGZyYW1lVHlwZTsKICAgICBpZiAoIWZyYW1lVHlwZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlm
ICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQ7CiAgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUo
KmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwCmluZGV4IGE2ZDQ0
N2RhYjU0YWM5NmVmNmUwYzc2NzdiMjVlMmM3MzQ0YTA4NGMuLjM1NTg0YjhhZjA0YzUyYjc2ODBj
ZDZiODc5NDVhNzY0ODhmMmE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcApA
QCAtNDAsMTMgKzQwLDEzIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
PiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluCiAgICAgZm9yIChhdXRv
IGl0ZW0gOiBzdHJpbmcuc3BsaXQoJy0nKSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBw
YXJzZUludGVnZXI8dWludDY0X3Q+KGl0ZW0pOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwg
ISppZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghY291bnRlcisrKQogICAgICAg
ICAgICAgY2xpZW50SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlm
aWVyLnZhbHVlKCkpOwogICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIpCiAgICAgICAgICAg
ICBjbGllbnRJZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZp
ZXI8RG9jdW1lbnRJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKICAgICB9Ci0g
ICAgcmV0dXJuIChjb3VudGVyID09IDIpID8gbWFrZU9wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRl
bnRpZmllcikpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IHN0
ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpKSA6IHN0ZDo6bnVsbG9w
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIu
aAppbmRleCA5OGE0ZTM1NTZkMTc4MDAyMDJlNTNhMzBmYjQyMGRmZjY4ZmE4Mzg1Li5kNjM4MWQ3
ZDViYzkyZmViN2Y5ZTA2OGMzN2EzYTRlNDIxODgxNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIuaApAQCAtNjMsMTIgKzYzLDEyIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZGVjb2RlKERlCiAgICAg
T3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAg
ICBpZiAoIXNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RG9j
dW1lbnRJZGVudGlmaWVyPiBjb250ZXh0SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNvbnRl
eHRJZGVudGlmaWVyOwogICAgIGlmICghY29udGV4dElkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4geyB7ICpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgKmNvbnRleHRJZGVudGlmaWVyIH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCmluZGV4IGQ0MTg4MmE2YzE4YTNi
ZjE5YTIwNGExNTNhMWQyZWNjOTJkYWIwZjYuLmQwMTg3Yzk4NzNhMjgxYTRlMmI3Mjk4Y2MyYzM1
OWMwMzhkZGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaApAQCAtNTIsMTIg
KzUyLDEyIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM+IFNlcnZp
Y2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM6OmRlY29kCiAgICAgT3B0aW9uYWw8Ym9vbD4gaW5j
bHVkZVVuY29udHJvbGxlZDsKICAgICBkZWNvZGVyID4+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAg
ICAgaWYgKCFpbmNsdWRlVW5jb250cm9sbGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlw
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7IHsgKmluY2x1ZGVVbmNvbnRyb2xsZWQsICp0eXBlIH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaAppbmRleCBlZmRmYTdjNTAyZTgwODQzMDk3MjViNjRjODcwMzNm
NmVkMDM2YWNjLi4yZGEyZGJiMTUzNmU5ODAwNTViZjk0YzA2YjZjYjI0ZDI1N2MxMjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oCkBAIC01NywxNyArNTcsMTcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7CiAgICAgICAgICAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNjcmlwdDsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4gc2NyaXB0OwogICAgICAgICAgICAgaWYgKCFzY3JpcHQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3BvbnNl
VVJMOwogICAgICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKICAgICAgICAgICAgIGlm
ICghcmVzcG9uc2VVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25h
bDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKICAg
ICAgICAgICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAg
ICByZXR1cm4ge3sKICAgICAgICAgICAgICAgICBXVEZNb3ZlKCpzY3JpcHQpLApAQCAtMTExLDU0
ICsxMTEsNTQgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxPcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+PiBqb2JEYXRhSWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGlmICgham9iRGF0YUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVn
aXN0cmF0aW9uOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uOwogICAgIGlmICghcmVnaXN0
cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNjcmlwdEJ1ZmZlcj4gc2NyaXB0OwogICAg
IGRlY29kZXIgPj4gc2NyaXB0OwogICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlclBvbGlj
eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2Ny
aXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHdvcmtlclR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBsb2FkZWRGcm9tRGlzazsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRSZXNvdXJjZU1hcCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRp
ZmljYXRlSW5mbzsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
ewogICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCmluZGV4IGMzOGM5ZTdh
NjAyOWIyODVhYWJiZjJhZGI3ZTc4YTA3NDJjYTRkYWUuLmJjNTZlOWIwM2RkMGJmZmEwMmM2YWYz
YTBmNjY0NmFlZjgwNGNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC01OSwyNyArNTksMjcgQEAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+IFNlcnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8VVJMPiBzY3JpcHRVUkw7CiAgICAgZGVjb2RlciA+PiBzY3JpcHRVUkw7CiAgICAg
aWYgKCFzY3JpcHRVUkwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyU3RhdGU+IHN0
YXRlOwogICAgIGRlY29kZXIgPj4gc3RhdGU7CiAgICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICgh
dHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyPiByZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9u
SWRlbnRpZmllcjsKICAgICBpZiAoIXJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY3JpcHRVUkwpLCBXVEZN
b3ZlKCpzdGF0ZSksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpyZWdpc3RyYXRpb25JZGVudGlm
aWVyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IGI4MTU2MjQ3MmMzZTRmNjZhMDBmNjI1YmFlZWMw
ODk0MmM2ZDE1YjEuLmI2Yzk1NjMzOGUxZGZkMjExZGFjMTdjMmIzMTA1OTUzMjlmODE4NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oCkBAIC05MSwzNyArOTEsMzcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBP
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFNl
cnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGE7CiAgICAgam9iRGF0YS5tX2lkZW50aWZpZXIgPSAq
aWRlbnRpZmllcjsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5zY3JpcHRVUkwp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKICAgICBk
ZWNvZGVyID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBqb2JEYXRh
LnRvcE9yaWdpbiA9IFdURk1vdmUoKnRvcE9yaWdpbik7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGpvYkRhdGEuc2NvcGVVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0
YS5zb3VyY2VDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29y
a2VyVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgc3dpdGNoIChqb2JEYXRhLnR5cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpSZWdpc3RlcjogewogICAgICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uT3B0aW9ucz4gcmVnaXN0cmF0aW9uT3B0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiByZWdp
c3RyYXRpb25PcHRpb25zOwogICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbk9wdGlvbnMpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gV1RGTW92ZSgqcmVn
aXN0cmF0aW9uT3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXIuaAppbmRleCAxY2ZjNjEzNTM3YjZlOTJjYzQwMTE5NjliY2NlMTFlYzZhZGIz
ZGZjLi43YTdkNjQ4NTNkZGM0NzE2ZGUyNWRlMDdhN2YwZjcxYTA3Y2QwZDJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllci5oCkBAIC02MSwxMiArNjEsMTIgQEAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI6
OmRlY29kZSgKICAgICBPcHRpb25hbDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyPiBjb25u
ZWN0aW9uSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVyOwog
ICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllcj4gam9iSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGpvYklk
ZW50aWZpZXI7CiAgICAgaWYgKCFqb2JJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCpjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUoKmpvYklkZW50aWZpZXIpIH0g
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCmluZGV4IDdlNzY5NWYyYTkyZTYx
YTM3ZWM1NDdjNGE3NzVmMTlkM2NjMjhlMDcuLmQ0MDY2OWQzZjYzMjY5ZDBmYWNiNzViZmVlNDBi
NTc2MzA0MzNjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMzgsOSAr
MzgsOSBAQCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29ucwogICAgICAgICBzY29wZVVSTC5pc29sYXRl
ZENvcHkoKSwKICAgICAgICAgdXBkYXRlVmlhQ2FjaGUsCiAgICAgICAgIGxhc3RVcGRhdGVUaW1l
LAotICAgICAgICBpbnN0YWxsaW5nV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
KGluc3RhbGxpbmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IFdURjo6bnVsbG9wdCwKLSAgICAg
ICAgd2FpdGluZ1dvcmtlciA/IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPih3YWl0aW5nV29y
a2VyLT5pc29sYXRlZENvcHkoKSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgIGFjdGl2ZVdvcmtl
ciA/IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPihhY3RpdmVXb3JrZXItPmlzb2xhdGVkQ29w
eSgpKSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgaW5zdGFsbGluZ1dvcmtlciA/IE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJEYXRhPihpbnN0YWxsaW5nV29ya2VyLT5pc29sYXRlZENvcHkoKSkgOiBz
dGQ6Om51bGxvcHQsCisgICAgICAgIHdhaXRpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyRGF0YT4od2FpdGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAor
ICAgICAgICBhY3RpdmVXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oYWN0aXZl
V29ya2VyLT5pc29sYXRlZENvcHkoKSkgOiBzdGQ6Om51bGxvcHQsCiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEuaAppbmRleCBmM2JmMzJiOWZkNzg3NTllMTdiYjlkZjY4ZjBj
YzgyNGE5NjQwZDM1Li45ZjUzZmFkMmFiNWFlY2E2NmIyMjZkNTY5NjMzMjIyMGI1YjRjNWY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaApAQCAtNjgsNDIgKzY4LDQyIEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YTo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eT4ga2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBpZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxVUkw+IHNjb3BlVVJMOwogICAgIGRlY29kZXIgPj4gc2NvcGVVUkw7CiAg
ICAgaWYgKCFzY29wZVVSTCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZT4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVWaWFDYWNoZTsK
ICAgICBpZiAoIXVwZGF0ZVZpYUNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiByYXdX
YWxsVGltZTsKICAgICBkZWNvZGVyID4+IHJhd1dhbGxUaW1lOwogICAgIGlmICghcmF3V2FsbFRp
bWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IGluc3Rh
bGxpbmdXb3JrZXI7CiAgICAgZGVjb2RlciA+PiBpbnN0YWxsaW5nV29ya2VyOwogICAgIGlmICgh
aW5zdGFsbGluZ1dvcmtlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJEYXRhPj4gd2FpdGluZ1dvcmtlcjsKICAgICBkZWNvZGVyID4+IHdhaXRpbmdXb3JrZXI7CiAg
ICAgaWYgKCF3YWl0aW5nV29ya2VyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+PiBhY3RpdmVXb3JrZXI7CiAgICAgZGVjb2RlciA+PiBhY3RpdmVXb3JrZXI7
CiAgICAgaWYgKCFhY3RpdmVXb3JrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmtl
eSksIFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY29wZVVSTCksIFdURk1vdmUoKnVw
ZGF0ZVZpYUNhY2hlKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpyYXdXYWxsVGltZSksIFdU
Rk1vdmUoKmluc3RhbGxpbmdXb3JrZXIpLCBXVEZNb3ZlKCp3YWl0aW5nV29ya2VyKSwgV1RGTW92
ZSgqYWN0aXZlV29ya2VyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5k
ZXggZTQ0NTJhN2Y0NWE4NDA0NmI1MzRmZjA0NWVhYmEwYmNjNjFkOGJiNi4uNzA1YjJlZjU2MDM0
ZmM0Y2E2M2Y1YmU3MGNhNzBmY2ExOWU4OTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmZyb21EYXRhYmFzCiAgICAgYXV0
byB0aGlyZCA9IGtleS5maW5kKHNlcGFyYXRvckNoYXJhY3Rlciwgc2Vjb25kICsgMSk7CiAKICAg
ICBpZiAoZmlyc3QgPT0gc2Vjb25kIHx8IHNlY29uZCA9PSB0aGlyZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPHVpbnQxNl90PiBzaG9ydFBvcnQ7CiAKQEAgLTExMCwxMiArMTEwLDEyIEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OmZyb21EYXRhYmFzCiAgICAgaWYgKHRoaXJkIC0gc2Vjb25kID4gMSkgewogICAgICAgICBz
aG9ydFBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyBrZXkgfS5zdWJz
dHJpbmcoc2Vjb25kICsgMSwgdGhpcmQgLSBzZWNvbmQgLSAxKSk7CiAgICAgICAgIGlmICghc2hv
cnRQb3J0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBzY29wZSA9IFVSTCB7IFVSTCgp
LCBrZXkuc3Vic3RyaW5nKHRoaXJkICsgMSkgfTsKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkuc3Vi
c3RyaW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0cmluZyhmaXJzdCArIDEsIHNlY29uZCAtIGZpcnN0
IC0gMSksIHNob3J0UG9ydCB9LCBXVEZNb3ZlKHNjb3BlKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmgKaW5kZXggY2VhY2ZkNTkyYTZkZWZhYjVmMTA0NWRkNzJlYzlmMGJlNzBjYTcxNC4u
ZDBmOWI0NDViNTI0M2U5MzA5MDMwOGQ3YTFlMzdhZDRiZGVmMTA3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5oCkBAIC04NiwxMSArODYsMTEgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZGVjb2RlKERlY28K
ICAgICBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKICAgICBkZWNvZGVy
ID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVSTCBzY29wZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjb3BlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZSgqdG9wT3JpZ2luKSwgV1RGTW92ZShzY29w
ZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKaW5kZXggMmUzNTU3ZmE3
ZGY2N2YxYmY5OGM3YjdhNWRlNGIwYTVhN2JjY2NmNS4uZmUwMmJmN2ZjZDVmMTU4OWUxMmI1YmEy
NjkwNjIyNTdjNzRkNTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKQEAg
LTU3LDE3ICs1NywxNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9u
cz4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnM6OmRlYwogICAgIE9wdGlvbmFsPFN0
cmluZz4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8V29ya2VyVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAg
ICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlPiB1cGRhdGVWaWFDYWNoZTsKICAgICBkZWNvZGVyID4+IHVwZGF0ZVZpYUNhY2hlOwogICAg
IGlmICghdXBkYXRlVmlhQ2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbk9wdGlvbnMgeyBXVEZNb3ZlKCpzY29wZSksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3Zl
KCp1cGRhdGVWaWFDYWNoZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXgg
ZjQxYmY4M2ZhYzM1NDMxOTNhMmFiOWNhNjEzN2MzOGY3NDkyNmNmMi4uNTAxZDJlZDhiOGE4ODNj
MTBmNTg2NTFiZDg4NmRkZDQzMDY4YzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTkxLDcgKzkxLDcgQEAgU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJl
YWQoKSA9IGRlZmF1bHQ7CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFt
cywgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGEpOwotICAgIHJldHVybiBTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqc3RkOjpleGNoYW5nZShtX2RhdGEsIFdURjo6
bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmln
aW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CisgICAgcmV0dXJu
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdlKG1fZGF0YSwg
c3RkOjpudWxsb3B0KSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksICp0aGlzLCBXVEZNb3ZlKHRv
cE9yaWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oCmluZGV4IDM3YzRiN2EyMjBjMWI4NmY1MGM3Njk3YjRkN2U5MzNkMzhiMTczYzguLmJl
MTdiMmI4NTM5MTY5NWUxYTkwZjY3NTUwMTc3Mjc1NDg1ZjY1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBtX2pvYkRhdGFJZGVudGlmaWVyOwotICAgIE9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9kYXRhOyAvLyBCZWNvbWVzIFdURjo6bnVs
bG9wdCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQu
CisgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX2RhdGE7IC8vIEJlY29t
ZXMgc3RkOjpudWxsb3B0IGFmdGVyIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaGFzIGJl
ZW4gY3JlYXRlZC4KICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsK
ICAgICBib29sIG1fZG9lc0hhbmRsZUZldGNoIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcAppbmRleCA2NTM3ZTk1MTczNmJlYWYxNzFmYjYxODVmYzdkMjhlZGUyNDg0NjA0
Li5jOWVjYjM1NTBmMDk3OTg1ZTA2YWRkYmQ5ODY4ZDkwZDk0OTM5OTQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAgc3RydWN0IEltcG9ydGVkU2Ny
aXB0QXR0cmlidXRlcyB7CiAgICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CiAgICAg
ICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7CiAgICAgICAgIGlmICghcmVzcG9uc2VVUkwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICBk
ZWNvZGVyID4+IG1pbWVUeXBlOwogICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCkBA
IC0zMjksNyArMzI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFD
YWNoZT4gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShjb25zdCBTdHJpbmcKICAgICBpZiAodXBkYXRl
ID09ICJOb25lIikKICAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6
Tm9uZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RhdGljIFN0cmluZyB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlKQpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXb3JrZXJUeXBlPiBz
dHJpbmdUb1dvcmtlclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmICh0eXBlID09ICJN
b2R1bGUiKQogICAgICAgICByZXR1cm4gV29ya2VyVHlwZTo6TW9kdWxlOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpwdXNoQ2hhbmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXksIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFu
Z2VkUmVnaXN0cmF0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNTY4LDggKzU2OCw4IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsg
d29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRl
ZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKLSAgICAgICAgYXV0byBy
ZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtl
eSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlh
Q2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0g
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJh
dGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlm
aWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZl
cnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9Owor
ICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
IHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVS
TCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07CisgICAgICAgIGF1dG8g
Y29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdU
Rk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBX
VEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kp
LCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlw
ZSwgdHJ1ZSwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8sIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9u
VG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4
IDc0YTVjZDJmNDM5NGNiMDMzMTQ0YjMyMTMzYTMwMGZlMWJjMTI1ODAuLjhmZjA2YWY1YzkyYTli
MDBhNjIyYmNmMzU1MWEwYjExMTBjMTA2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6cmVtb3ZlUmVnaXN0cmF0aW9u
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGsKICAgICBpZiAoa2V5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV91cGRhdGVkUmVnaXN0cmF0aW9ucy5zZXQo
a2V5LCBXVEY6Om51bGxvcHQpOworICAgIG1fdXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2V0KGtleSwg
c3RkOjpudWxsb3B0KTsKICAgICBzY2hlZHVsZURhdGFiYXNlUHVzaElmTmVjZXNzYXJ5KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCAyNjBhNDVhMzVkZjc1MTQ2ODU4ZGJhYzJhYzIyODVl
ZDc5MmMyYzc2Li44Zjc2MGQ2MmY3ZGIwMDdlNWM0YWJlZDM4YWEwOGNiZWZlMDE2NTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nj
cmlwdFN0b3JhZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUZp
bGVNYXBwaW5nKHVpbnQ2NF90IGZpbGVTaXplKQogCiBTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0
U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5KGRpcmVj
dG9yeSkKLSAgICAsIG1fc2FsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCgp
KS52YWx1ZU9yKEZpbGVTeXN0ZW06OlNhbHQoKSkpCisgICAgLCBtX3NhbHQoRmlsZVN5c3RlbTo6
cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVfb3IoRmlsZVN5c3RlbTo6U2FsdCgpKSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYWZjNTg4NDM0Mjk1
ODBjN2ZjYWY4YWIwN2QxOGUxYTYyYTZkNDliZS4uZjdhZjA3ZDFiNGE5Yzc1NDM3OGRlMjM2ZTRh
NGZiOWZlMWYyZGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTk1LDEwICs5NSwxMCBAQCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2lu
QnlJRChjbwogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3Jp
Z2luLmZpbmQoY2xpZW50T3JpZ2luKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVu
dGlmaWVyc1Blck9yaWdpbi5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLmlk
ZW50aWZpZXJzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjbGll
bnRJdGVyYXRvciA9IG1fY2xpZW50c0J5SWQuZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBB
U1NFUlQoY2xpZW50SXRlcmF0b3IgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMTIwMDUxNjk4YmY5Mzk4MThlNGQ0
M2U4NWM2OTU3MzAwYmE3ZGNhZi4uYjA1NjI4ZjQwMGVhOWQ5YzYzN2ZjM2FiNDU3ZjAwNGZkYzVm
MjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA1
LDcgKzEwNSw3IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlCiB7CiAgICAgYXV0byogd29ya2Vy
ID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgYXV0byogc2VydmVyID0gd29ya2VyID8gd29ya2VyLT5zZXJ2
ZXIoKSA6IG51bGxwdHI7Ci0gICAgY2FsbGJhY2soc2VydmVyID8gc2VydmVyLT5jbGFpbSgqd29y
a2VyKSA6IFdURjo6bnVsbG9wdCk7CisgICAgY2FsbGJhY2soc2VydmVyID8gc2VydmVyLT5jbGFp
bSgqd29ya2VyKSA6IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA5NzI1NzAwNmU4YTI3Y2QwNWFjMzRiNDAwNWM5ZWNj
OWJhNGY3ZDg4Li4yNDA1Mjk4NzhiN2JiYTJkNWM4ZGUyNWNjYWMxNmY0NjAwY2Y5Y2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcApAQCAtODcsNyArODcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZWdp
c3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3JlZ2lzdHJhdGlvbi0+
ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJbmZvLCBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVS
TCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsIG1fc2Ny
aXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0
aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUlu
Zm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2Ny
aXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwg
bV9zY3JpcHRSZXNvdXJjZU1hcCB9OwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVB
cHBCb3VuZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDgwZGRkM2Rl
M2VkYzQyNGUzNzBlNTY5OWE4MTNkNmU5ZWU0ZmJlMDMuLmQ4NTI0NGNhNzIwNWIyYWY3MGFjZTI5
MTViNDVhNTU3Yzg2NzUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtNDA3LDggKzQwNyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybCwKIAogT3B0aW9uYWw8RXhj
ZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKIHsKLSAgICAv
LyBBIHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIFdURjo6bnVsbG9wdCBtZWFucyB3ZSBzaG91bGQg
bm90IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0aGF0IHZhbHVlIHRvIHRoZSBj
YWxsZXIuCi0gICAgLy8gV1RGOjpudWxsb3B0IG1lYW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFu
ZCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0aG0uCisgICAgLy8gQSByZXR1
cm4gdmFsdWUgb3RoZXIgdGhhbiBzdGQ6Om51bGxvcHQgbWVhbnMgd2Ugc2hvdWxkIG5vdCB0cnkg
dG8gc2VuZCwgYW5kIHdlIHNob3VsZCByZXR1cm4gdGhhdCB2YWx1ZSB0byB0aGUgY2FsbGVyLgor
ICAgIC8vIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBhbmQgc2hvdWxk
IGNvbnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgogCiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25Pcjx2b2lkPiB7IH07CkBA
IC00MzYsNyArNDM2LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1
ZXN0OjpwcmVwYXJlVG9TZW5kKCkKICAgICB9CiAKICAgICBtX2Vycm9yID0gZmFsc2U7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYg
c2VuZFR5cGUpCkBAIC02MjMsNyArNjIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlcXVlc3QoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9leGNlcHRp
b25Db2RlID0gV1RGOjpudWxsb3B0OworICAgIG1fZXhjZXB0aW9uQ29kZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV91cGxvYWRDb21wbGV0ZSA9ICFyZXF1ZXN0
Lmh0dHBCb2R5KCk7CiAgICAgbV9zZW5kRmxhZyA9IHRydWU7CkBAIC02OTksOCArNjk5LDggQEAg
Ym9vbCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgpCiAKICAgICAvLyBDYW5jZWxsaW5n
IG1fbG9hZGluZ0FjdGl2aXR5IG1heSB0cmlnZ2VyIGEgd2luZG93Lm9ubG9hZCBjYWxsYmFjayB3
aGljaCBjYW4gY2FsbCBvcGVuKCkgb24gdGhlIHNhbWUgeGhyLgogICAgIC8vIFRoaXMgd291bGQg
Y3JlYXRlIGludGVybmFsQWJvcnQgcmVlbnRyYW50IGNhbGwuCi0gICAgLy8gbV9sb2FkaW5nQWN0
aXZpdHkgaXMgc2V0IHRvIFdURjo6bnVsbG9wdCBiZWZvcmUgYmVpbmcgY2FuY2VsbGVkIHRvIGV4
aXQgZWFybHkgaW4gYW55IHJlZW50cmFudCBpbnRlcm5hbEFib3J0KCkgY2FsbC4KLSAgICBhdXRv
IGxvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6ZXhjaGFuZ2UobV9sb2FkaW5nQWN0aXZpdHksIFdURjo6
bnVsbG9wdCk7CisgICAgLy8gbV9sb2FkaW5nQWN0aXZpdHkgaXMgc2V0IHRvIHN0ZDo6bnVsbG9w
dCBiZWZvcmUgYmVpbmcgY2FuY2VsbGVkIHRvIGV4aXQgZWFybHkgaW4gYW55IHJlZW50cmFudCBp
bnRlcm5hbEFib3J0KCkgY2FsbC4KKyAgICBhdXRvIGxvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6ZXhj
aGFuZ2UobV9sb2FkaW5nQWN0aXZpdHksIHN0ZDo6bnVsbG9wdCk7CiAgICAgbG9hZGluZ0FjdGl2
aXR5LT5sb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8gSWYgd2luZG93Lm9ubG9hZCBjYWxsYmFj
ayBjYWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUgc2FtZSB4aHIsIG1fbG9hZGluZ0FjdGl2
aXR5IGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCkBAIC05MjIsNyArOTIyLDcgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQogCiAgICAgbV9y
ZXNwb25zZUJ1aWxkZXIuc2hyaW5rVG9GaXQoKTsKIAotICAgIG1fbG9hZGluZ0FjdGl2aXR5ID0g
V1RGOjpudWxsb3B0OworICAgIG1fbG9hZGluZ0FjdGl2aXR5ID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgbV9zZW5kRmxhZyA9IGZhbHNlOwogICAgIGNoYW5nZVN0YXRlKERPTkUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5o
CmluZGV4IDk4MGQ2NDFjYjFlODE0NzhmNDU5MTk4ZTIxNjc2N2E1ZGExODM0NjcuLjEyYWVkNmNh
M2EyYTE5YzFhZGRhYTFmMzU1Zjk0NGQ1ODNlNjhmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmgKQEAgLTU2LDIz
ICs1NiwyMyBAQCBzdHJ1Y3QgR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzIHsKICAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgICAgICBkZWNvZGVyID4+
IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
bWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29k
ZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAg
IGlmICghbWVkaWFDYWNoZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgICAgICBPcHRpb25h
bDxTdHJpbmc+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4g
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgaWYgKCFtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRs
ZTsKICAgICAgICAgZGVjb2RlciA+PiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5U2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICAgICAgcmV0dXJu
IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApp
bmRleCA4ZjE0NDg3MDdjMmEwZDY0MGI5MzBiMWRjNTJjOTJjNmEwODYxMzYxLi45Y2U0NTY1OTRk
NTdmZGJhMjAwY2QxMGIxMTc3NjFiNzJjNDMwYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBEaXNwbGF5TGlzdFJlYWRlckhh
bmRsZTo6YWR2YW5jZShzaXplX3QgYW1vdW50KQogewogICAgIGF1dG8gcHJldmlvdXNVbnJlYWRC
eXRlcyA9IGhlYWRlcigpLnVucmVhZEJ5dGVzLmV4Y2hhbmdlU3ViKGFtb3VudCk7CiAgICAgaWYg
KFVOTElLRUxZKHByZXZpb3VzVW5yZWFkQnl0ZXMgPCBhbW91bnQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBw
cmV2aW91c1VucmVhZEJ5dGVzIC0gYW1vdW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCmlu
ZGV4IDNlYjcwYTQ0NDBmZTIxNmY4NDkxZGIyMDVmODI0ZmVmNzlhMTQ3MjYuLjQ4ZDY2ZTJlNDQw
MzQxN2ZiZjlmNjU5YjI2Mjc4YWY0NGY3NjEyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGhlYWRlci53YWl0aW5nU3RhdHVz
LmV4Y2hhbmdlKFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpOb3RXYWl0
aW5nKSA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6UmVzdW1pbmcp
CiAgICAgICAgICAgICByZXR1cm4geyBoZWFkZXIucmVzdW1lUmVhZGluZ0luZm8gfTsKIAotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBkNjI4YjZmYzA2
NzI0YzcyNjcxNDA5ZTdkNDVhZDQ3YjY2ZjY2MjE3Li40NGUxZTFjMDViM2ViZjIyZGQ4YmMzNDU1
ZWQ5YjBjNjhhODNlYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xODEsNyArMTgx
LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW4KICAgICB1cGRhdGVSZW5kZXJpbmdSZXNvdXJj
ZVJlcXVlc3QoKTsKIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dh
a2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKLSAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVu
ZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAgIHdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBz
dGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pCkBAIC0yMzksNyAr
MjM5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgIGRlc3RpbmF0aW9u
ID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoKnJl
c3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlcikpOwogICAgICAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7
Ci0gICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRp
ZmllcigpLCBvZmZzZXQsICpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIHJlYXNv
biB9LCBXVEY6Om51bGxvcHQgfX07CisgICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5m
byA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsICpyZXN1bHQubmV4dERlc3RpbmF0
aW9uSW1hZ2VCdWZmZXIsIHJlYXNvbiB9LCBzdGQ6Om51bGxvcHQgfX07CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMjc3LDcgKzI3Nyw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5
CiAKICAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHsKICAgICAgICAgICAgICAgICBBU1NF
UlQoIW1fcGVuZGluZ1dha2V1cEluZm8pOwotICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1
cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCBuZXdEZXN0aW5hdGlvbklk
ZW50aWZpZXIsIHJlYXNvbiB9LCBXVEY6Om51bGxvcHQgfX07CisgICAgICAgICAgICAgICAgbV9w
ZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRpZmllcigpLCBvZmZzZXQsIG5ld0Rl
c3RpbmF0aW9uSWRlbnRpZmllciwgcmVhc29uIH0sIHN0ZDo6bnVsbG9wdCB9fTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzEzLDcgKzMxMyw3
IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlz
dChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzCiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhl
cndpc2UsIGNvbnRpbnVlIHJlYWRpbmcgdGhlIG5leHQgZGlzcGxheSBsaXN0IGl0ZW0gYnVmZmVy
IGZyb20gdGhlIHN0YXJ0LgotICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzOworICAgICAgICBh
dXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpu
dWxsb3B0KS0+YXJndW1lbnRzOwogICAgICAgICBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKCpkZXN0aW5h
dGlvbkltYWdlQnVmZmVyLCBhcmd1bWVudHMub2Zmc2V0LCAqbmV4dEhhbmRsZSwgYXJndW1lbnRz
LnJlYXNvbik7CiAgICAgICAgIGlmICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcikKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzIyLDE2ICszMjIsMTYgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXMK
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChE
aXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllcikKIHsKLSAgICBt
X3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpoZWFkZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1
cFJlYXNvbjo6VW5zcGVjaWZpZWQgfSwgV1RGOjpudWxsb3B0IH19OworICAgIG1fcGVuZGluZ1dh
a2V1cEluZm8gPSB7e3sgaWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRl
clNpemUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpV
bnNwZWNpZmllZCB9LCBzdGQ6Om51bGxvcHQgfX07CiB9CiAKIE9wdGlvbmFsPFNoYXJlZE1lbW9y
eTo6SVBDSGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVTaGFyZWRNZW1vcnlG
b3JHZXRQaXhlbEJ1ZmZlckhlbHBlcihzaXplX3QgYnl0ZUNvdW50KQogewotICAgIE1FU1NBR0Vf
Q0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoIW1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkgfHwg
Ynl0ZUNvdW50ID4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpLCBXVEY6Om51
bGxvcHQsICJUaGUgZXhpc3RpbmcgU2htZW0gZm9yIGdldFBpeGVsQnVmZmVyKCkgaXMgYWxyZWFk
eSBiaWcgZW5vdWdoIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCIpOworICAgIE1FU1NBR0VfQ0hFQ0tf
V0lUSF9SRVRVUk5fVkFMVUUoIW1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnkgfHwgYnl0ZUNv
dW50ID4gbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgpLCBzdGQ6Om51bGxvcHQs
ICJUaGUgZXhpc3RpbmcgU2htZW0gZm9yIGdldFBpeGVsQnVmZmVyKCkgaXMgYWxyZWFkeSBiaWcg
ZW5vdWdoIHRvIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwogCiAgICAgaWYgKGJ5dGVDb3VudCA+IDY0
ICogTUIpIHsKICAgICAgICAgLy8gSnVzdCBhIHNhbml0eSBjaGVjay4gQSA0SyBpbWFnZSBpcyAz
Nk1CLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGRlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSgp
OwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVO
YXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuCiAgICAgbV9yZW1v
dGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2UobWFrZVJlZigqaW1hZ2UpKTsKIAogICAg
IGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBl
cmZvcm1XYWtldXAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgd2FrZVVw
QW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdU
Rjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1
bWVudHMpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8
Rm9udD4mJiBmb250KQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCiAgICAgYXV0byBpZGVudGlmaWVyID0g
Zm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CiAgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsKICAgICBpZiAobV9wZW5kaW5nV2FrZXVw
SW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKGlkZW50aWZp
ZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9w
ZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKKyAgICAgICAgd2Fr
ZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8s
IHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6ZGVsZXRlQWxsRm9udHMoKQpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoRGlzcGxheUxp
c3Q6Okl0ZW1CCiAgICAgfQogCiAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5k
aW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpZGVudGlmaWVyKSkKLSAgICAgICAg
d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cElu
Zm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAgIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQp
LT5hcmd1bWVudHMpOwogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FS
Tl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlIHR5cGUs
IHVpbnQ4X3QqIGhhbmRsZUxvY2F0aW9uKQpAQCAtNTg1LDEwICs1ODUsMTAgQEAgT3B0aW9uYWw8
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpkZWMKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGlu
ZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVx
dWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAxMDAwMzg5NWMwNDk0ODg2YjRkYWM3NGY0
MjEzNjYwMWJhODZjNGI0Li5kY2NjODIwODIxMWMxZmJjODg4M2E4MzE0ODBhMjRhNDlhMzE5OWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFQoV1RGTW92
ZSgqaXRlbSkpOwogICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwogICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheVJlc3Vs
dCBzdWJtaXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDc2OGEzOGJmOGI4MTAxNmE1ZDE1NGE3
NDdjMjk0YWM1YmVkNGQ3ZjcuLjhhYWI3OGY2NWJhNGUwN2ViYzg4NjkwZTgwZjRhMWRhOTZkOGVl
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtNTAsMjIgKzUwLDIyIEBAIHN0cnVjdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAg
ICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SVBDOjpT
ZW1hcGhvcmU+IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAgICBkZWNvZGVyID4+
IHJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlOwogICAgICAgICBpZiAoIXJlc3VtZURpc3BsYXlM
aXN0U2VtYXBob3JlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gcGFnZVByb3h5SUQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGFnZVByb3h5SUQ7
CiAgICAgICAgIGlmICghcGFnZVByb3h5SUQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgICAgICBkZWNvZGVyID4+IHBh
Z2VJRDsKICAgICAgICAgaWYgKCFwYWdlSUQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4g
e3sgKmlkZW50aWZpZXIsIFdURk1vdmUoKnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlKSwgKnBh
Z2VQcm94eUlELCAqcGFnZUlEIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9Jbml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oCmluZGV4IDFk
MzQ4ZWZkMWUzN2I3MDY3ZTI4ZWViYWU2NmE5MmUyMGEwM2U1ZDIuLmQxMjc5YTQ1NGZlZTg0ZTA1
N2VkM2FmYjEwYjZiNWNkYjI1Mzg4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9Jbml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9uU2VnbWVudEluZm8uaApAQCAtNTcsMTIg
KzU3LDEyIEBAIHN0cnVjdCBJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvIHsKICAgICAgICAgICAg
IE9wdGlvbmFsPE1lZGlhRGVzY3JpcHRpb25JbmZvPiBtZWRpYURlc2NyaXB0aW9uOwogICAgICAg
ICAgICAgZGVjb2RlciA+PiBtZWRpYURlc2NyaXB0aW9uOwogICAgICAgICAgICAgaWYgKCFtZWRp
YURlc2NyaXB0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgICAgIGlmICghaWRlbnRpZmllcikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgICAgIFdU
Rk1vdmUoKm1lZGlhRGVzY3JpcHRpb24pLApAQCAtOTAsMjIgKzkwLDIyIEBAIHN0cnVjdCBJbml0
aWFsaXphdGlvblNlZ21lbnRJbmZvIHsKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBkdXJh
dGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKICAgICAgICAgaWYgKCFkdXJhdGlv
bikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9u
Pj4gYXVkaW9UcmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9UcmFja3M7CiAgICAgICAg
IGlmICghYXVkaW9UcmFja3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8
VHJhY2tJbmZvcm1hdGlvbj4+IHZpZGVvVHJhY2tzOwogICAgICAgICBkZWNvZGVyID4+IHZpZGVv
VHJhY2tzOwogICAgICAgICBpZiAoIXZpZGVvVHJhY2tzKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRpb24+PiB0ZXh0VHJhY2tzOwogICAgICAgICBk
ZWNvZGVyID4+IHRleHRUcmFja3M7CiAgICAgICAgIGlmICghdGV4dFRyYWNrcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqZHVyYXRpb24pLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggODI0NmQ5Yzc1NmVmM2I3MWQwZjg4
YmNkY2E0ODY4Y2YxYmI4N2MyNi4uMTM2ODkzYTBjZDM5MGQ0OTA2YzA4Y2E2MjY4YzNhYjIxNDFh
MmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBAIC03OCwxNCArNzgsMTQg
QEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgdHlwZSwgQXRvbVN0cmluZwogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6dXBkYXRlTGljZW5zZShTdHJpbmcgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKIHsKICAgICBpZiAoIXJlc3BvbnNlLmJ1ZmZlcigpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb24odHJ1ZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOwor
ICAgICAgICBjb21wbGV0aW9uKHRydWUsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIEltcGxlbWVudCB0aGUg
Q0RNUHJpdmF0ZTo6c2FuaXRpemVSZXNwb25zZSgpIGNoZWNrIGhlcmU6CiAgICAgYXV0byBzYW5p
dGl6ZWRSZXNwb25zZSA9IG1fY2RtLT5zYW5pdGl6ZVJlc3BvbnNlKCpyZXNwb25zZS5idWZmZXIo
KSk7CiAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSkgewotICAgICAgICBjb21wbGV0aW9uKGZh
bHNlLCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIGNv
bXBsZXRpb24oZmFsc2UsIHsgfSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvblByb3h5Ojpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBlLCBTdHJp
bmcgc2Vzc2lvbgogICAgIC8vIEltcGxlbWVudCB0aGUgQ0RNUHJpdmF0ZTo6c2FuaXRpemVTZXNz
aW9uSWQoKSBjaGVjayBoZXJlOgogICAgIGF1dG8gc2FuaXRpemVkU2Vzc2lvbklkID0gbV9jZG0t
PnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiAgICAgaWYgKCFzYW5pdGl6ZWRTZXNzaW9u
SWQpIHsKLSAgICAgICAgY29tcGxldGlvbihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBmYWxzZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6
Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSk7CisgICAgICAgIGNvbXBsZXRpb24oc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAppbmRleCAxZjdlMTQzMGE3ZDc2
NDlkOTY1ZTI4OTFhYzJlOGU1MjlhMjAxN2FkLi5kNzZmY2YxYTZmYzgxNjZlNTM0YTk1ZGYyMjUz
NjBlYjY0Zjg0YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YShJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnMKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwLCB7IH0sIGZhbHNl
LCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigwLCB7IH0sIGZhbHNl
LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuY3BwCmluZGV4IGIyOTA4OTgxZTQ3NzczYTU3YzI4NmNiNjM1YmQ5MmNjZjMwZjc1
NmQuLjhlZTllZThlMTMyMjQyNDE0NjY2ZThiZWRjOThmZDY0ZTIyMWQwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBU
Pgogc3RhdGljIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4gY29udmVydFRvT3B0aW9u
YWxEYXRhUmVmZXJlbmNlKFQgYXJyYXkpCiB7CiAgICAgaWYgKCFhcnJheSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSkgfTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgdXBk
YXRlLCBVcGRhdGVDCiB7CiAgICAgYXV0byB1cGRhdGVBcnJheSA9IGNvbnZlcnRUb1VpbnQ4QXJy
YXkoV1RGTW92ZSh1cGRhdGUpKTsKICAgICBpZiAoIXVwZGF0ZUFycmF5KSB7Ci0gICAgICAgIGNv
bXBsZXRpb24oZmFsc2UsIFdURjo6bnVsbG9wdCwgMCwgMCk7CisgICAgICAgIGNvbXBsZXRpb24o
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgMCwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2Ny
aXB0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNj
cmlwdGlvbi5oCmluZGV4IDkwNmNkZjY3ZmI3MzIxZDVlMDIyZjczZDFlOWQzM2NlMWU5ZjU4NzYu
LmEzOTAwMWZmYjc5OTU5YmE3NTc4YmI2MDNiZjBmODg5YThlMzFjZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRGVzY3JpcHRpb24u
aApAQCAtNzMsMjIgKzczLDIyIEBAIHN0cnVjdCBNZWRpYURlc2NyaXB0aW9uSW5mbyB7CiAgICAg
ICAgIE9wdGlvbmFsPFN0cmluZz4gY29kZWM7CiAgICAgICAgIGRlY29kZXIgPj4gY29kZWM7CiAg
ICAgICAgIGlmICghY29kZWMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBp
c1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGlzVmlkZW87CiAgICAgICAgIGlmICghaXNWaWRl
bykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzQXVkaW87CiAgICAgICAg
IGRlY29kZXIgPj4gaXNBdWRpbzsKICAgICAgICAgaWYgKCFpc0F1ZGlvKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNUZXh0OwogICAgICAgICBkZWNvZGVyID4+IGlzVGV4
dDsKICAgICAgICAgaWYgKCFpc1RleHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sK
ICAgICAgICAgICAgIFdURk1vdmUoKmNvZGVjKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBmOGUx
OTJiMmNjNjU5ZGFmNDhkODAxOWFiOTYxMzljMmRlODE2NGQ4Li41ZjJiNjViMjlkOGMwZDA0ZGVm
OWNkYjc1MzVmMjYwMzk5NWY4MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC05MCw3ICs5MCw3
IEBAIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlJlbW90ZU1lZGlhUGxheWVyUHJveHkoUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkmIG1hCiBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp+UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSgpCiB7CiAgICAgaWYgKG1fcGVyZm9ybVRhc2tBdE1lZGlhVGlt
ZUNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICBtX3BlcmZvcm1UYXNrQXRNZWRpYVRpbWVDb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1fcGVy
Zm9ybVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0KTsKICAgICBzZXRTaG91bGRFbmFibGVBdWRpb1NvdXJjZVByb3ZpZGVyKGZhbHNlKTsK
IH0KIApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGVy
Zm9ybVRhc2tBdE1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHRhc2tUaW1lLCBNCiAgICAgICAg
IC8vIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBlcmZvcm1UYXNrQXRNZWRp
YVRpbWUpLCBzbyBjYW5jZWwgdGhlIGV4aXN0aW5nCiAgICAgICAgIC8vIENvbXBsZXRpb25IYW5k
bGVyLgogICAgICAgICBhdXRvIGhhbmRsZXIgPSBXVEZNb3ZlKG1fcGVyZm9ybVRhc2tBdE1lZGlh
VGltZUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgaGFuZGxlcihXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQp
OwogICAgIH0KIAogICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oCmluZGV4IGQ4ZjhjN2U3ZTFmNTFmNjBkNjgz
YjhkMjRiZjUzOTE3MjJmM2QxYTQuLjJlZmExNGViNzUzMTRkZDhkNjllZjc4YTgxNGYyM2M1YjY3
NDM2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oCkBAIC03Myw1
OSArNzMsNTkgQEAgc3RydWN0IFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uIHsK
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiByZWZlcnJlcjsKICAgICAgICAgZGVjb2RlciA+PiBy
ZWZlcnJlcjsKICAgICAgICAgaWYgKCFyZWZlcnJlcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gdXNlckFnZW50OwogICAgICAgICBkZWNvZGVyID4+IHVzZXJBZ2VudDsK
ICAgICAgICAgaWYgKCF1c2VyQWdlbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc291cmNlQXBwbGljYXRp
b25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBuZXR3
b3JrSW50ZXJmYWNlTmFtZTsKICAgICAgICAgZGVjb2RlciA+PiBuZXR3b3JrSW50ZXJmYWNlTmFt
ZTsKICAgICAgICAgaWYgKCFuZXR3b3JrSW50ZXJmYWNlTmFtZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250ZW50VHlwZT4+IG1lZGlhQ29udGVudFR5
cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBkZWNvZGVyID4+IG1lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0OwogICAgICAgICBpZiAoIW1lZGlhQ29u
dGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwog
ICAgICAgICBkZWNvZGVyID4+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzOwogICAgICAg
ICBpZiAoIXByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBF
TkFCTEUoQVZGX0NBUFRJT05TKQogICAgICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGxh
dGZvcm1UZXh0VHJhY2tEYXRhPj4gb3V0T2ZCYW5kVHJhY2tEYXRhOwogICAgICAgICBkZWNvZGVy
ID4+IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAgICAgaWYgKCFvdXRPZkJhbmRUcmFja0RhdGEp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YT4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgZGVjb2RlciA+PiBk
b2N1bWVudFNlY3VyaXR5T3JpZ2luOwogICAgICAgICBpZiAoIWRvY3VtZW50U2VjdXJpdHlPcmln
aW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9nSWRlbnRpZmll
cjsKICAgICAgICAgZGVjb2RlciA+PiBsb2dJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWxvZ0lk
ZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRVc2VQ
ZXJzaXN0ZW50Q2FjaGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2hvdWxkVXNlUGVyc2lzdGVudENh
Y2hlOwogICAgICAgICBpZiAoIXNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzVmlkZW87CiAgICAgICAgIGRlY29kZXIgPj4gaXNW
aWRlbzsKICAgICAgICAgaWYgKCFpc1ZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
IHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpyZWZlcnJlciksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IDhhN2RmNjM5MmY1Mjk3YjhmODkzNWEwYTc1OWVkOGI5
ODE3MzFiMmQuLmU5ZmRmNzAxNDAwNDA5OTRmZTA1ZGYxZTc4YWI0ZTZiNWMzZWY5NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC03Niw3MiArNzYsNzIgQEAg
c3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICAgICAgT3B0
aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKICAgICAgICAgZGVjb2RlciA+PiB0cmFja0lkOwog
ICAgICAgICBpZiAoIXRyYWNrSWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9t
U3RyaW5nPiBsYWJlbDsKICAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKICAgICAgICAgaWYgKCFs
YWJlbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhbmd1YWdl
OwogICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOwogICAgICAgICBpZiAoIWxhbmd1YWdlKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaW5CYW5kTWV0YWRhdGFU
cmFja0Rpc3BhdGNoVHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBpbkJhbmRNZXRhZGF0YVRyYWNr
RGlzcGF0Y2hUeXBlOwogICAgICAgICBpZiAoIWluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5
cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZh
cmlhbmNlOwogICAgICAgICBkZWNvZGVyID4+IHN0YXJ0VGltZVZhcmlhbmNlOwogICAgICAgICBp
ZiAoIXN0YXJ0VGltZVZhcmlhbmNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8aW50
PiB0cmFja0luZGV4OwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSW5kZXg7CiAgICAgICAgIGlm
ICghdHJhY2tJbmRleCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGU6OkN1ZUZvcm1hdD4gY3VlRm9ybWF0OwogICAgICAgICBkZWNv
ZGVyID4+IGN1ZUZvcm1hdDsKICAgICAgICAgaWYgKCFjdWVGb3JtYXQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpLaW5kPiBr
aW5kOwogICAgICAgICBkZWNvZGVyID4+IGtpbmQ7CiAgICAgICAgIGlmICgha2luZCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzQ2xvc2VkQ2FwdGlvbnM7CiAgICAgICAg
IGRlY29kZXIgPj4gaXNDbG9zZWRDYXB0aW9uczsKICAgICAgICAgaWYgKCFpc0Nsb3NlZENhcHRp
b25zKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNTREg7CiAgICAgICAg
IGRlY29kZXIgPj4gaXNTREg7CiAgICAgICAgIGlmICghaXNTREgpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxib29sPiBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXM7CiAgICAgICAg
IGRlY29kZXIgPj4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzOwogICAgICAgICBpZiAoIWNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGlzTWFpblByb2dyYW1Db250ZW50OwogICAgICAgICBkZWNvZGVyID4+IGlzTWFpblBy
b2dyYW1Db250ZW50OwogICAgICAgICBpZiAoIWlzTWFpblByb2dyYW1Db250ZW50KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNFYXN5VG9SZWFkOwogICAgICAgICBkZWNv
ZGVyID4+IGlzRWFzeVRvUmVhZDsKICAgICAgICAgaWYgKCFpc0Vhc3lUb1JlYWQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gaXNEZWZhdWx0OwogICAgICAgICBpZiAoIWlzRGVmYXVsdCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBhOGYwNWQxOGZkOTk4OGViYjk5Yzc2NzNiNjg3YTY3
MGQ5MmUwMTQ4Li4yOWRmMjM1ZmYxZDMxZTZkZTkyM2JhZWE0YWM3N2Q2MjgxOTg1OThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTY2LDQ3ICs2Niw0NyBAQCBzdHJ1Y3Qg
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPEF0b21T
dHJpbmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKICAgICAgICAgaWYg
KCF0cmFja0lkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFi
ZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYW5ndWFnZTsKICAgICAgICAg
ZGVjb2RlciA+PiBsYW5ndWFnZTsKICAgICAgICAgaWYgKCFsYW5ndWFnZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAg
IGRlY29kZXIgPj4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGlmICghc3RhcnRUaW1lVmFy
aWFuY2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxpbnQ+IHRyYWNrSW5kZXg7CiAg
ICAgICAgIGRlY29kZXIgPj4gdHJhY2tJbmRleDsKICAgICAgICAgaWYgKCF0cmFja0luZGV4KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKICAgICAgICAgZGVj
b2RlciA+PiBlbmFibGVkOwogICAgICAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0ZTo6S2luZD4gYXVkaW9LaW5k
OwogICAgICAgICBkZWNvZGVyID4+IGF1ZGlvS2luZDsKICAgICAgICAgaWYgKCFhdWRpb0tpbmQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzZWxlY3RlZDsKICAgICAgICAg
ZGVjb2RlciA+PiBzZWxlY3RlZDsKICAgICAgICAgaWYgKCFzZWxlY3RlZCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZGVvVHJhY2tQcml2YXRlOjpLaW5kPiB2aWRl
b0tpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9LaW5kOwogICAgICAgICBpZiAoIXZpZGVv
S2luZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92
ZSgqdHJhY2tJZCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
Y29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQppbmRleCAw
ZTBjZDJjZGM2YTQ5MDUzNDQ2YzZkMTFjZjc2ZmFkZWQ2MzlkZTZkLi40YjMzNzVmZGUzMjAxYjk3
MDFkMjAwZWJhZmY2MGFiMDkwYTMwMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Q29jb2EubW0KQEAgLTgxLDI1ICs4MSwyNSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmCiB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9wbGF5ZXIpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gbmF0aXZlSW1hZ2Ug
PSBtX3BsYXllci0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogICAgIGlmICghbmF0aXZl
SW1hZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCk7CiAgICAgaWYgKCFwbGF0Zm9ybUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZShwbGF0Zm9ybUltYWdlLmdldCgpKTsKICAgICBpZiAo
IXN1cmZhY2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTA5LDIyICsxMDksMjIgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3AKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgIVVTRShBVkZPVU5EQVRJT04pCi0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogI2Vsc2UKICAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbV9w
bGF5ZXItPnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKICAgICBpZiAoIXBpeGVsQnVmZmVy
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1
ZmZlcihwaXhlbEJ1ZmZlci5nZXQoKSk7CiAgICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDU1N2Q3
ZjI2OTM5NzE3ZjYxNjg1YWI1MzM0MWU2ZGViYzE1OTkzOGQuLjIyNWY3MWUyNDNkNjMyMzUxMThj
OWJjNWMxYTdjODRmZTNlMTViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzA1LDggKzMwNSw4IEBAIHN0YXRpYyBT
dHJpbmcgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNvbnN0IGNoYXIqIG9yaWdp
bmFsUXVlcnkpCiBzdGF0aWMgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhR
dWVyaWVzKCkKIHsKICAgICBzdGF0aWMgYXV0byBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVz
ID0gbWFrZU5ldmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiB7Ci0gICAgICAgIHsgIk9ic2VydmVkRG9t
YWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVP
YnNlcnZlZERvbWFpbiwgV1RGOjpudWxsb3B0KSB9LAotICAgICAgICB7ICJUb3BMZXZlbERvbWFp
bnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9w
TGV2ZWxEb21haW5zLCBXVEY6Om51bGxvcHQpIH0sCisgICAgICAgIHsgIk9ic2VydmVkRG9tYWlu
cyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVPYnNl
cnZlZERvbWFpbiwgc3RkOjpudWxsb3B0KSB9LAorICAgICAgICB7ICJUb3BMZXZlbERvbWFpbnMi
X3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9wTGV2
ZWxEb21haW5zLCBzdGQ6Om51bGxvcHQpIH0sCiAgICAgICAgIHsgIlN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5nLCBPcHRpb25hbDxTdHJp
bmc+PihjcmVhdGVTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMsIHN0cmlwSW5kZXhR
dWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFN0b3JhZ2VBY2Nlc3NVbmRl
clRvcEZyYW1lRG9tYWlucykpIH0sCiAgICAgICAgIHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8iX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVl
KGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpIH0sCiAgICAgICAg
IHsgIlRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnQiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCwgc3Ry
aXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCkpIH0sCkBAIC00
MDQsMTMgKzQwNCwxMyBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYgogICAgIGF1dG8gc3RhdGVt
ZW50ID0gbV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgMSBmcm9tIHNxbGl0ZV9t
YXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIGFuZCB0YmxfbmFtZT0/Il9zKTsKICAgICBpZiAoIXN0
YXRlbWVudCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5T
Y2hlbWEgZmFpbGVkIHRvIHByZXBhcmUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RS
SU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIHRhYmxlIDogZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmllcygpLmtleXMoKSkg
ewogICAgICAgICBpZiAoc3RhdGVtZW50LT5iaW5kVGV4dCgxLCB0YWJsZSkgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hl
bWEgZmFpbGVkIHRvIGJpbmQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0
aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgICAgIGlmIChzdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hlbWEgc2NoZW1hIGlzIG1p
c3NpbmcgdGFibGU6ICVzIiwgdGhpcywgdGFibGUuYXNjaWkoKS5kYXRhKCkpOwpAQCAtNDE5LDcg
KzQxOSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2hlY2tGb3JNaXNzaW5nVGFiCiAgICAgICAgIHN0YXRlbWVudC0+cmVz
ZXQoKTsKICAgICB9CiAgICAgaWYgKG1pc3NpbmdUYWJsZXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIG1pc3NpbmdUYWJsZXM7CiB9CkBAIC0xMDE4LDExICsxMDE4LDExIEBAIE9wdGlvbmFs
PHVuc2lnbmVkPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSUQo
Y29uc3QgUmVnaXN0cmFiCiAgICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQgfHwgc2NvcGVkU3RhdGVt
ZW50LT5iaW5kVGV4dCgxLCBkb21haW4uc3RyaW5nKCkpICE9IFNRTElURV9PSykgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURGcm9tU3RyaW5nIGZhaWxlZC4g
RXJyb3IgbWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
ICAgIAogICAgIGlmIChzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHNjb3BlZFN0YXRlbWVudC0+Y29sdW1uSW50KDApOwogfQpAQCAtMTU2MSw3
ICsxNTYxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICAgICAgICAgZGVidWdCcm9hZGNh
c3RDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpJVFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJ
bmZvLCBtYWtlU3RyaW5nKCJbSVRQXSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJyJf
cywgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLCAiJyB1bmRlciBvcGVuZXIg
cGFnZSBmcm9tICciX3MsIG9wZW5lckRvbWFpbi5zdHJpbmcoKSwgIicsIHdpdGggdXNlciBpbnRl
cmFjdGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iX3MpKTsKICAgICB9CiAKLSAgICBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcyks
IFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyUGFnZSwg
W10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9w
ZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vLCBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlclBhZ2UsIFtdKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMjIwNSw3ICsyMjA1LDcgQEAgc3RkOjpwYWlyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpBZGRlZFJlY29yZCwgT3B0aW9uYWw8dW5zaWduZWQ+PgogICAgIGlmICgh
cmVzdWx0KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjplbnN1cmVSZXNv
dXJjZVN0YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbiBpbnNlcnRPYnNlcnZlZERvbWFpbiBm
YWlsZWQgdG8gY29tcGxldGUsIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8sIFdURjo6bnVsbG9wdCB9
OworICAgICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6Tm8sIHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KIAogICAgIHJldHVybiB7IEFkZGVkUmVjb3JkOjpZZXMsIGRvbWFpbklEKGRvbWFpbikudmFs
dWUoKSB9OwpAQCAtMjUxOSw3ICsyNTE5LDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c2hvdWxkRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKERvbWFpbkQKIE9w
dGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUoY29uc3QgRG9tYWluRGF0YSYgc3RhdGlzdGljKQog
ewogICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGlzdGljLm1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lOwogfQpAQCAtMjkzNiw3ICsyOTM2LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0
ZXNQYXJhbWV0ZXJzKCkKICAgICB9CiAKICAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUgPD0g
b3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydCAtIDEpCi0gICAgICAgIG1fc2hvcnRXaW5kb3dPcGVy
YXRpbmdEYXRlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Nob3J0V2luZG93T3BlcmF0aW5n
RGF0ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGdldE9wZXJhdGlu
Z0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmJpbmRJbnQoMSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9y
dCAtIDEpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRv
d1N0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpIHsKQEAgLTI5NDgsNyArMjk0OCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGlu
Z0RhdGVzUGFyYW1ldGVycygpCiAgICAgfQogCiAgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXpl
IDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyAtIDEpCi0gICAgICAgIG1fbG9uZ1dpbmRvd09w
ZXJhdGluZ0RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbG9uZ1dpbmRvd09wZXJhdGlu
Z0RhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAgICAgIGdldE9wZXJhdGluZ0Rh
dGVXaW5kb3dTdGF0ZW1lbnQtPnJlc2V0KCk7CiAgICAgICAgIGlmIChnZXRPcGVyYXRpbmdEYXRl
V2luZG93U3RhdGVtZW50LT5iaW5kSW50KDEsIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyAtIDEp
ICE9IFNRTElURV9PSwpAQCAtMzExNiw3ICszMTE2LDcgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFVu
YXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50PiwgT3B0aW9uYWw8QXR0cmlidXRlZFBy
aXYKICAgICBhdXRvIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoZGVzdGluYXRp
b25TaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKIAogICAgIGlmICghc291cmNlU2l0ZURvbWFpbklE
IHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKIAogICAgIGF1dG8gZmluZFVuYXR0
cmlidXRlZFNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2ZpbmRVbmF0
dHJpYnV0ZWRTdGF0ZW1lbnQsIGZpbmRVbmF0dHJpYnV0ZWRRdWVyeSwgImZpbmRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCJfcyk7CiAgICAgaWYgKCFmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVt
ZW50CkBAIC0zMjM3LDcgKzMyMzcsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwogICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCBhbiBp
bnZhbGlkIGF0dHJpYnV0aW9uLiIpOwogICAgICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gaW52YWxpZCBh
dHRyaWJ1dGlvbi4iX3MpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBkYXRhID0g
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhOwpAQCAtMzI0OCw3ICszMjQ4LDcgQEAgT3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERh
dGE+IFJlc291cmNlTG9hZFMKICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpJbmZv
LCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFuIGF0dHJpYnV0
aW9uIHdpdGggYXR0cmlidXRpb24gdHJpZ2dlciBkYXRhOiAnIl9zLCBkYXRhLCAiJyBhbmQgcHJp
b3JpdHk6ICciX3MsIHByaW9yaXR5LCAiJy4iX3MpKTsKICAgICB9CiAKLSAgICBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSBzZWNvbmRzVW50
aWxTZW5kIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSBzZWNvbmRzVW50aWxT
ZW5kIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gYXR0cmlidXRp
b24gPSBmaW5kUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25T
aXRlKTsKICAgICBhdXRvJiBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkID0gYXR0cmlidXRpb24uZmly
c3Q7CkBAIC0zMjYyLDcgKzMyNjIsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwogICAgICAg
ICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSB2YWxpZCBzZWNvbmRzVW50aWxTZW5kIHZhbHVl
IGZvciBhIHByZXZpb3VzbHlVbmF0dHJpYnV0ZWQgdmFsdWUgYmVjYXVzZSB0aGVyZSBjYW4gYmUg
bm8gcHJldmlvdXMgYXR0cmlidXRpb24gd2l0aCBhIGhpZ2hlciBwcmlvcml0eS4KICAgICAgICAg
aWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKQEAgLTMyODUs
NyArMzI4NSw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTCiAgICAgICAgIGlmICghcHJldmlv
dXNseUF0dHJpYnV0ZWQudmFsdWUoKS5oYXNQcmV2aW91c2x5QmVlblJlcG9ydGVkKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gc2Vjb25kc1VudGlsU2VuZCA9IHByZXZpb3VzbHlBdHRyaWJ1dGVkLnZh
bHVlKCkuYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdURk1vdmUoYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSkpOwogICAgICAgICAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1Zh
bGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZSgqcHJldmlvdXNseUF0
dHJpYnV0ZWQpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCk7CiAKQEAgLTMyOTcsNyArMzI5Nyw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTCiAg
ICAgfQogCiAgICAgaWYgKCFzZWNvbmRzVW50aWxTZW5kLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2Vu
ZFZhbHVlcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHNlY29uZHNVbnRpbFNlbmQ7CiB9CkBAIC0zNDQ1
LDcgKzM0NDUsNyBAQCBzdGQ6OnBhaXI8T3B0aW9uYWw8U291cmNlRWFybGllc3RUaW1lVG9TZW5k
PiwgT3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUbwogICAgIGF1dG8gZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgPSBkb21haW5JRChhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvblNpdGUoKS5y
ZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5JRCB8fCAhZGVz
dGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2VhcmxpZXN0VGltZXNUb1NlbmRTdGF0ZW1lbnQsIGVh
cmxpZXN0VGltZXNUb1NlbmRRdWVyeSwgImVhcmxpZXN0VGltZXNUb1NlbmQiX3MpOwogCkBAIC0z
NTE1LDcgKzM1MTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb1NvdXJjZSgqc291cmNl
U2l0ZURvbWFpbklELCAqZGVzdGluYXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRp
b246CiAgICAgICAgIGlmICghZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpIHsKQEAgLTM1
MjMsNyArMzUyMyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZhdGVDCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgbWFya1JlcG9ydEFzU2VudFRvRGVzdGluYXRpb24oKnNv
dXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8v
IERvbid0IGNsZWFyIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgZGF0YWJhc2UgdW5sZXNzIGl0IGhh
cyBiZWVuIHJlcG9ydGVkIGJvdGggdG8gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2l0ZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAK
aW5kZXggNjBjNjYyNGUyOTU0YTc4Yzk0Yjk5NTE1OGJjMjVlZTJkYTk5ZWRhMC4uOTMwZTJiNDU1
MWFmZTIxOWFkMDE3YWQ1NDE1MjU2NDc1OGZiNzIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTMzNyw3ICszMzcsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5JbgogICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OklUUERlYnVnLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJp
bmcoIltJVFBdIFN0b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZvciAnIl9zLCBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3Muc3RyaW5nKCksICInIHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJyJf
cywgb3BlbmVyRG9tYWluLnN0cmluZygpLCAiJywgd2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRo
ZSBvcGVuZWQgd2luZG93LiJfcykpOwogICAgIH0KIAotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVu
ZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObywgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJQYWdlLCBbXShTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCkgeyB9KTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwg
c3RkOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6
Tm8sIFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyUGFnZSwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpIHsgfSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJh
bWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duLCBTdG9yYWdlQWNjZXNzU2NvcGUgc2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTMyLDcgKzkz
Miw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzaG91bGRFbmZv
cmNlU2FtZVNpdGVTdHJpY3RGb3IoUmVzb3VyY2VMCiBPcHRpb25hbDxXYWxsVGltZT4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWMpCiB7CiAgICAgaWYgKHN0
YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgp
LnZhbHVlKCkgPD0gMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJ
bnRlcmFjdGlvblRpbWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwCmluZGV4IDQ1MDBiODViNmY5NjkyZjI4YTAxNWVhMWRhY2RjNGExNzVlNGE5OWQuLmJm
MWM3NTM3YmIzNDNjZTE0YTFjY2M5Nzc4NDU5YTQ1M2YyZWU5NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbmNlbFBlbmRpbmdTdGF0aXN0aWNzUHJvY2Vz
c2luZ1JlcXVlc3QoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
bV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmllciA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJZGVudGlmaWVy
ID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzIHNlY29uZHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDIxZjhkZTk2MDk0
OWFhMDhiMGU2NTBhOTI3NjUxMThmZmQ3YmFkNDUuLmZhMGY5NzJkMGU3Njk2NWQ0MDRkYWYzMzY2
NWYwYTA5MGJmOGVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJFcGhlbWVyYWwoUmUK
IAogICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIGlmIChhdXRvKiBzdG9yYWdl
U2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKQotICAg
ICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmdyYW50U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxs
b3B0LCBvcGVuZXJQYWdlSUQpOworICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmdyYW50U3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUo
b3BlbmVyRG9tYWluKSwgc3RkOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQpOwogICAgIH0KIH0KIApA
QCAtNTc3LDcgKzU3Nyw3IEBAIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW5TdG9yCiAKICAgICBpZiAobV9u
ZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25l
dHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewotICAgICAgICAgICAgc3Rv
cmFnZVNlc3Npb24tPmdyYW50U3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0
eURvbWFpbiwgKHNjb3BlID09IFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyRnJhbWUgPyBmcmFtZUlE
IDogV1RGOjpudWxsb3B0KSwgcGFnZUlEKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5n
cmFudFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIChzY29w
ZSA9PSBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlckZyYW1lID8gZnJhbWVJRCA6IHN0ZDo6bnVsbG9w
dCksIHBhZ2VJRCk7CiAgICAgICAgICAgICBBU1NFUlQoc3RvcmFnZVNlc3Npb24tPmhhc1N0b3Jh
Z2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCkpOwogICAgICAgICAgICAgaXNTdG9yYWdlR3JhbnRlZCA9IHRydWU7CiAgICAgICAgIH0KQEAg
LTE1NDQsNyArMTU0NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjph
dHRyaWJ1dGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChjb25zdCBQcml2CiAgICAgcG9zdFRhc2so
W3RoaXMsIHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9uU2l0ZSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSA9IFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9z
dGF0aXN0aWNzU3RvcmUpIHsKICAgICAgICAgICAgIHBvc3RUYXNrUmVwbHkoW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE1OTEsNyArMTU5MSw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50
KCkKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXVEY6Om51bGxvcHQpOworICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2xlYXJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogICAgIApAQCAtMTY5
OCwxNyArMTY5OCwxNyBAQCBhdXRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk6OmRlY29kZQogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRlY29kZXIgPj4g
ZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxib29sPiBkZWNvZGVkU3RvcmFnZUFjY2VzczsKICAgICBkZWNvZGVyID4+IGRlY29kZWRTdG9y
YWdlQWNjZXNzOwogICAgIGlmICghZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTZWNvbmRzPiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOwogICAgIGRlY29kZXIgPj4gZGVj
b2RlZFRpbWVMYXN0VXBkYXRlZDsKICAgICBpZiAoIWRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29k
ZWRTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZSgqZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkgfX07CiB9
CkBAIC0xNzM5LDEyICsxNzM5LDEyIEBAIGF1dG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpUaGlyZFBhcnR5RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlCiAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRlY29kZWREb21haW47CiAgICAgZGVj
b2RlciA+PiBkZWNvZGVkRG9tYWluOwogICAgIGlmICghZGVjb2RlZERvbWFpbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFZlY3RvcjxUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4+IGRl
Y29kZWRGaXJzdFBhcnRpZXM7CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOwog
ICAgIGlmICghZGVjb2RlZEZpcnN0UGFydGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZEZpcnN0UGFydGllcykgfX07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM0NGE0ODM4ZmM5NzQ5ZWE2NTdhYzBlZmYw
MmU1OTg3ZWFlNTY3YzkuLmI0OGM4NDNiY2E0OGVhNTk3YTUwZTE5OTU2M2RmMmExYTk4YTA1ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFMKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAm
JiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKCkpCi0gICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9y
bWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00iLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZy
YW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+
KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAg
IH0KICNlbmRpZgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b24KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAg
ICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAg
ICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdl
SUQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldENvb2tpZXNGcm9tRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyks
ICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBl
bXB0eVN0cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC05ODgsNyArOTg4LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RzKCkKIE9wdGlvbmFsPE5ldHdvcmtBY3Rp
dml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5n
UmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlELCBib29sIGlzVG9wUmVzb3VyY2UpCiB7CiAgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBFaXRoZXIgZ2V0IHRoZSBleGlzdGluZyByb290
IGFjdGl2aXR5IHRyYWNrZXIgZm9yIHRoaXMgcGFnZSBvciBjcmVhdGUgYQogICAgIC8vIG5ldyBv
bmUgaWYgdGhpcyBpcyB0aGUgbWFpbiByZXNvdXJjZS4KQEAgLTEwMTMsNyArMTAxMyw3IEBAIE9w
dGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdGFydFRyYWNraW5nUmVzCiAgICAgICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIGlmIHRo
ZSBOZXR3b3JraW5nIHByb2Nlc3MgY3Jhc2hlcywgdGFraW5nIGl0cwogICAgICAgICAvLyBwcmV2
aW91cyBzdGF0ZSB3aXRoIGl0LgogICAgICAgICBpZiAocm9vdEFjdGl2aXR5SW5kZXggPT0gbm90
Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEhBVkUoTldfQUNUSVZJVFkpCiAgICAgICAgIEFTU0VS
VChtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzW3Jvb3RBY3Rpdml0eUluZGV4XS5uZXR3b3JrQWN0
aXZpdHkuZ2V0UGxhdGZvcm1PYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDM2NGMyMzYxOGIzY2UyNWUwYzQzYjU0YmY1
Mzg1ODJhZGFiODMxOTIuLmZmMGZmNGFmMWNmY2M3MzIwMDlmMGY5YTZiZDExYjc0NWFiMGNmN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0xNjA4LDcgKzE2MDgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogI2VuZGlmCiAK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKQotICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRh
KG1vZGlmaWVkU2luY2UsIFdURjo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwor
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKG1vZGlmaWVk
U2luY2UsIHN0ZDo6bnVsbG9wdCwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogCiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpICYm
ICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZp
ZWRTaW5jZSwgW2NsZWFyVGFza3NIYW5kbGVyID0gV1RGTW92ZShjbGVhclRhc2tzSGFuZGxlcild
IHsgfSk7CkBAIC0xNzQyLDcgKzE3NDIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpbwogICAg
ICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IHJlZ2lzdHJhYmxlRG9tYWlucykKICAgICAgICAgICAg
IGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yLmFkZChkb21haW4pOwogCi0gICAgICAgIG5l
dHdvcmtTZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKGRvbWFpbnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yKSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7
IH0pOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvciksIFtjbGVh
clRhc2tzSGFuZGxlcl0geyB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAKaW5kZXggMzlhMTQyN2UwYjY1NWFiNTg0YWMyZmRkYzdmMzJmNTA3NmRmZTU0MC4uY2YxMTdh
YTk3NTdmMmYwYmU0ZTE1MjU5YWFiOThiYjI5MWExZDBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAKQEAgLTEzMSw0MyArMTMxLDQzIEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAg
ICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzdWx0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlEOwogICAgIGRlY29kZXIgPj4g
d2ViUGFnZVByb3h5SUQ7CiAgICAgaWYgKCF3ZWJQYWdlUHJveHlJRCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
d2ViUGFnZVByb3h5SUQgPSAqd2ViUGFnZVByb3h5SUQ7CiAKICAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gd2ViUGFnZUlEOwogICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOwogICAgIGlmICgh
d2ViUGFnZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJhbWVJRCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5wYXJlbnRQSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQucmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGhhc0hUVFBCb2R5OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzSFRUUEJvZHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc0hUVFBCb2R5
KSB7CiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBGb3JtRGF0YTo6ZGVjb2Rl
KGRlY29kZXIpOwogICAgICAgICBpZiAoIWZvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
c3VsdC5yZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKIAogICAgICAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gcmVxdWVzdEJvZHlTYW5kYm94
RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiByZXF1ZXN0Qm9keVNhbmRib3hF
eHRlbnNpb25IYW5kbGVzOwogICAgICAgICBpZiAoIXJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1
ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzLT5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
cmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy0+YXQoaSkpKSkKICAgICAgICAgICAg
ICAgICByZXN1bHQucmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZShl
eHRlbnNpb24pKTsKQEAgLTE3OCwxNDUgKzE3OCwxNDUgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUo
SVAKICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiByZXNvdXJjZVNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gcmVzb3VyY2VTYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIXJlc291cmNlU2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQucmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9u
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoKnJlc291cmNlU2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkpOwogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNv
bnRlbnRTbmlmZmluZ1BvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5jbGllbnRDcmVkZW50aWFsUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRQcmVjb25uZWN0T25seSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmVlZHNDZXJ0aWZpY2F0ZUlu
Zm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpbkZyYW1lTmF2aWdh
dGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNNYWluUmVzb3VyY2VO
YXZpZ2F0aW9uRm9yQW55RnJhbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tYXhpbXVtQnVmZmVyaW5nVGltZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGhh
c1NvdXJjZU9yaWdpbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1NvdXJjZU9yaWdpbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGhhc1NvdXJjZU9yaWdpbikgewogICAgICAgICByZXN1bHQuc291cmNlT3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFyZXN1
bHQuc291cmNlT3JpZ2luKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYm9vbCBoYXNUb3BPcmln
aW47CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUb3BPcmlnaW4pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICho
YXNUb3BPcmlnaW4pIHsKICAgICAgICAgcmVzdWx0LnRvcE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2lu
OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghcmVzdWx0LnRvcE9yaWdpbikKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIE9wdGlvbmFsPEZldGNoT3B0aW9ucz4gb3B0aW9uczsKICAgICBk
ZWNvZGVyID4+IG9wdGlvbnM7CiAgICAgaWYgKCFvcHRpb25zKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5vcHRp
b25zID0gKm9wdGlvbnM7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jc3BSZXNw
b25zZUhlYWRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbmFs
UmVxdWVzdEhlYWRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkUmVzdHJpY3RI
VFRQUmVzcG9uc2VBY2Nlc3M7CiAgICAgZGVjb2RlciA+PiBzaG91bGRSZXN0cmljdEhUVFBSZXNw
b25zZUFjY2VzczsKICAgICBpZiAoIXNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9ICpzaG91bGRS
ZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzczsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnByZWZsaWdodFBvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBzaG91bGRFbmFi
bGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5OwogICAgIGRlY29kZXIgPj4gc2hvdWxkRW5hYmxl
Q3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBpZiAoIXNob3VsZEVuYWJsZUNyb3NzT3Jp
Z2luUmVzb3VyY2VQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNob3VsZEVuYWJsZUNyb3NzT3JpZ2lu
UmVzb3VyY2VQb2xpY3kgPSAqc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZyYW1lQW5jZXN0b3JPcmlnaW5zKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAg
ZGVjb2RlciA+PiBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGlmICghcGFnZUhhc1Jl
c291cmNlTG9hZENsaWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucGFnZUhhc1Jlc291cmNlTG9hZENsaWVu
dCA9ICpwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIAogICAgIE9wdGlvbmFsPE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CiAgICAgZGVjb2RlciA+PiBwYXJl
bnRGcmFtZUlEOwogICAgIGlmICghcGFyZW50RnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucGFyZW50
RnJhbWVJRCA9IFdURk1vdmUoKnBhcmVudEZyYW1lSUQpOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4g
Y3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGRlY29kZXIgPj4gY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGlmICghY3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5jcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkOwogICAgIAogICAgIE9wdGlvbmFsPFVSTD4gZG9jdW1lbnRVUkw7CiAgICAgZGVjb2RlciA+
PiBkb2N1bWVudFVSTDsKICAgICBpZiAoIWRvY3VtZW50VVJMKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5kb2N1
bWVudFVSTCA9ICpkb2N1bWVudFVSTDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vyc01vZGU+IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBk
ZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJzTW9kZTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJzTW9k
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuc2VydmljZVdvcmtlcnNNb2RlID0gKnNlcnZpY2VXb3JrZXJzTW9k
ZTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIXNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9ICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcjsKIAogICAgIE9wdGlvbmFsPE9wdGlvblNldDxIVFRQSGVhZGVyc1RvS2VlcEZyb21D
bGVhbmluZz4+IGh0dHBIZWFkZXJzVG9LZWVwOwogICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CiAgICAgaWYgKCFodHRwSGVhZGVyc1RvS2VlcCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaHR0cEhl
YWRlcnNUb0tlZXAgPSBXVEZNb3ZlKCpodHRwSGVhZGVyc1RvS2VlcCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubWFpbkRvY3VtZW50VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICAgICBp
ZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKICNlbmRpZgogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIGRlY29kZXIgPj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSAqaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZD4+IHBjbURh
dGFDYXJyaWVkOwogICAgIGRlY29kZXIgPj4gcGNtRGF0YUNhcnJpZWQ7CiAgICAgaWYgKCFwY21E
YXRhQ2FycmllZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucGNtRGF0YUNhcnJpZWQgPSAqcGNtRGF0YUNhcnJp
ZWQ7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBkOTk3OTE2ZDdi
ZmUxNWU3YTQ2MGRmMDM0Njg3ZTY0MzNlOWEyZjQyLi5jY2JlMzFjNGYyMDUzMDdiOTM2MzM5OWQw
MTk3YTdmZTAwMzBkMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04MTIsNyArODEyLDcgQEAgT3B0aW9u
YWw8U2Vjb25kcz4gTmV0d29ya1Jlc291cmNlTG9hZGVyOjp2YWxpZGF0ZUNhY2hlRW50cnlGb3JN
YXhBZ2VDYXBWYWxpZGF0aW8KICAgICAgICAgICAgIHJldHVybiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPm1heEFnZUNhY2hlQ2FwKHJlcXVlc3QpOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKQEAgLTEzOTQsNyArMTM5NCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3RpCiAgICAgICAgIExPQ0FMX0xPRyhSIiggICAgImRvbWFpbiI6ICIle3B1
YmxpY31zIiwpIiwgZXNjYXBlZERvbWFpbi51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgTE9DQUxf
TE9HKFIiKCAgICAicGF0aCI6ICIle3B1YmxpY31zIiwpIiwgZXNjYXBlZFBhdGgudXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICAgImNyZWF0ZWQiOiAlZiwpIiwgY29va2ll
LmNyZWF0ZWQpOwotICAgICAgICBMT0NBTF9MT0coUiIoICAgICJleHBpcmVzIjogJWYsKSIsIGNv
b2tpZS5leHBpcmVzLnZhbHVlT3IoMCkpOworICAgICAgICBMT0NBTF9MT0coUiIoICAgICJleHBp
cmVzIjogJWYsKSIsIGNvb2tpZS5leHBpcmVzLnZhbHVlX29yKDApKTsKICAgICAgICAgTE9DQUxf
TE9HKFIiKCAgICAiaHR0cE9ubHkiOiAle3B1YmxpY31zLCkiLCBjb29raWUuaHR0cE9ubHkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAgTE9DQUxfTE9HKFIiKCAgICAic2VjdXJlIjogJXtw
dWJsaWN9cywpIiwgY29va2llLnNlY3VyZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAgICBM
T0NBTF9MT0coUiIoICAgICJzZXNzaW9uIjogJXtwdWJsaWN9cywpIiwgY29va2llLnNlc3Npb24g
PyAidHJ1ZSIgOiAiZmFsc2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMGZlZDZjNGE2YzhjYzYwYjk1MWE3MTQ2Mjg5NzIwYjM5
MWE0NTdmYS4uMTQzOTYyNGI3OTI4ZDJiZTIxYWU3MDNhODBhYTM5MjBmNTkwYjJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI4
MywyMiArMjgzLDIyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3
b3JrU2Vzc2lvbjo6Zmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbihjCiB7CiAjaWYgSEFWRShDRk5F
VFdPUktfQ05BTUVfQU5EX0NPT0tJRV9UUkFOU0ZPUk1fU1BJKQogICAgIGlmICghZGVjbHR5cGUo
bV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucyk6OmlzVmFsaWRLZXkoZmlyc3RQYXJ0eUhvc3Qp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBpdGVyYXRvciA9IG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMu
ZmluZChmaXJzdFBhcnR5SG9zdCk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fZmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHlIb3N0KTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIAogdm9pZCBOZXR3
b3JrU2Vzc2lvbjo6cmVzZXRDTkFNRURvbWFpbkRhdGEoKQogewogICAgIG1fZmlyc3RQYXJ0eUhv
c3RDTkFNRURvbWFpbnMuY2xlYXIoKTsKLSAgICBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRl
c3RpbmcgPSBXVEY6Om51bGxvcHQ7CisgICAgbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JUZXN0
aW5nID0gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMmZmZjhk
NTA0YmQyMjUxMTMwNjk3OTRhODZiM2ZlY2RkM2QyN2E1Yi4uNmY4YWMzOTY4MjhmMThmZjkwMTgy
ZDFiY2ZkNTIyMDdjNDJhMzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTk0LDIwNCArOTQsMjA0IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgT3B0aW9u
YWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25JRDsKICAgICBkZWNvZGVyID4+IHNlc3Npb25JRDsK
ICAgICBpZiAoIXNlc3Npb25JRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGJvdW5k
SW50ZXJmYWNlSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGJvdW5kSW50ZXJmYWNlSWRlbnRp
ZmllcjsKICAgICBpZiAoIWJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxBbGxvd3NDZWxsdWxhckFjY2Vzcz4gYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7CiAgICAg
ZGVjb2RlciA+PiBhbGxvd3NDZWxsdWxhckFjY2VzczsKICAgICBpZiAoIWFsbG93c0NlbGx1bGFy
QWNjZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHByb3h5Q29uZmlndXJhdGlvbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHByb3h5Q29uZmlndXJhdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VBcHBsaWNh
dGlvblNlY29uZGFyeUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFy
eUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGF0dHJpYnV0ZWRCdW5kbGVJ
ZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAg
ICAgaWYgKCFhdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25h
bDxib29sPiBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsKICAgICBkZWNvZGVyID4+IHNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uOwogICAgIGlmICghc2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVUkw+IGh0dHBQcm94eTsKICAgICBkZWNvZGVyID4+IGh0
dHBQcm94eTsKICAgICBpZiAoIWh0dHBQcm94eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFVSTD4gaHR0
cHNQcm94eTsKICAgICBkZWNvZGVyID4+IGh0dHBzUHJveHk7CiAgICAgaWYgKCFodHRwc1Byb3h5
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQog
ICAgIE9wdGlvbmFsPFN0cmluZz4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGRl
Y29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OwogICAgIGlmICghYWx0ZXJuYXRp
dmVTZXJ2aWNlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
ZGVjb2RlciA+PiBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgaWYgKCFhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gaHR0cDNFbmFibGVkOwogICAgIGRlY29kZXIgPj4gaHR0
cDNFbmFibGVkOwogICAgIGlmICghaHR0cDNFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBPcHRp
b25hbDxTdHJpbmc+IGhzdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gaHN0c1N0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBpZiAoIWhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogI2lmIFVTRShTT1VQKQogICAgIE9wdGlvbmFsPFN0cmluZz4gY29va2llUGVy
c2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3Jh
Z2VQYXRoOwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8U291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZT4gY29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBl
OwogICAgIGlmICghY29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZDsKICAgICBkZWNvZGVy
ID4+IHBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAgICAgaWYgKCFwZXJzaXN0
ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaWdu
b3JlVExTRXJyb3JzOwogICAgIGRlY29kZXIgPj4gaWdub3JlVExTRXJyb3JzOwogICAgIGlmICgh
aWdub3JlVExTRXJyb3JzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U291cE5ldHdvcmtQ
cm94eVNldHRpbmdzPiBwcm94eVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gcHJveHlTZXR0aW5n
czsKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShDVVJMKQog
ICAgIE9wdGlvbmFsPFN0cmluZz4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGRl
Y29kZXIgPj4gY29va2llUGVyc2lzdGVudFN0b3JhZ2VGaWxlOwogICAgIGlmICghY29va2llUGVy
c2lzdGVudFN0b3JhZ2VGaWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q3VybFByb3h5
U2V0dGluZ3M+IHByb3h5U2V0dGluZ3M7CiAgICAgZGVjb2RlciA+PiBwcm94eVNldHRpbmdzOwog
ICAgIGlmICghcHJveHlTZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJl
Y3Rvcnk7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGU7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5h
YmxlZDsKICAgICBkZWNvZGVyID4+IGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
OwogICAgIGlmICghZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNGb3JUZXN0aW5nOwogICAgIGRlY29kZXIgPj4gYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VN
YW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKICAgICBpZiAoIWFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTdHJpbmc+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiAgICAgZGVjb2RlciA+PiBk
YXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGlmICghZGF0YUNvbm5lY3Rpb25TZXJ2aWNl
VHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBmYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFi
bGVkOwogICAgIGlmICghZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8Ym9vbD4gbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5h
YmxlZDsKICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVu
YWJsZWQ7CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vz
c2lvbjsKICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKICAg
ICBpZiAoIXNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PGJvb2w+IHN0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IHN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsKICAgICBpZiAoIXN0YWxlV2hpbGVSZXZhbGlkYXRlRW5h
YmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0ZXN0U3BlZWRNdWx0aXBsaWVyOwog
ICAgIGRlY29kZXIgPj4gdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBpZiAoIXRlc3RTcGVlZE11
bHRpcGxpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcHJlc3Nlc0Nvbm5lY3Rp
b25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOwogICAgIGRlY29kZXIgPj4gc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOwogICAgIGlmICghc3VwcHJlc3Nlc0Nv
bm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9v
bD4gYWxsb3dzU2VydmVyUHJlY29ubmVjdDsKICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZlclBy
ZWNvbm5lY3Q7CiAgICAgaWYgKCFhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsKICAgICBkZWNv
ZGVyID4+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247CiAgICAgaWYgKCFyZXF1
aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJv
b2w+IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247CiAgICAgZGVjb2RlciA+
PiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAgIGlmICghcHJldmVu
dHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxi
b29sPiBhcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb247CiAgICAg
ZGVjb2RlciA+PiBhcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb247
CiAgICAgaWYgKCFhcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxib29sPiB1c2VOZXR3b3JrTG9hZGVyOwogICAgIGRlY29kZXIg
Pj4gdXNlTmV0d29ya0xvYWRlcjsKICAgICBpZiAoIXVzZU5ldHdvcmtMb2FkZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycz4gcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVyczsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIHJldHVybiB7ewogICAgICAgICAqc2Vzc2lvbklECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKaW5kZXggODcxMWZmODdjNjY3ZGQ5OTNlN2ZlM2E3ZWRhOGI0Mjgx
NTRmYmY5YS4uODdmMTM3NGNhYTZmNTQ4MGIwZjFlY2E5OWVkMjI4NzU4MDE3NzY0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmco
VVJMJiYgdGVzdFVSCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0QXR0
cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZyhVUkwmJiBzb3VyY2VVUkwsIFVSTCYmIGRlc3Rp
bmF0aW9uVVJMKQogewogICAgIGlmIChzb3VyY2VVUkwuaXNFbXB0eSgpIHx8IGRlc3RpbmF0aW9u
VVJMLmlzRW1wdHkoKSkKLSAgICAgICAgbV9hdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWcgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIG1fYXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnID0gc3Rk
OjpudWxsb3B0OwogICAgIGVsc2UKICAgICAgICAgbV9hdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25m
aWcgPSBBdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWcgeyBXVEZNb3ZlKHNvdXJjZVVSTCksIFdU
Rk1vdmUoZGVzdGluYXRpb25VUkwpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IGIyNDNkMTRjYjIzYzYzY2E3NWEyNDNlNTNmODUwNTI3NTAzYzIyMzgu
LmYzY2M2NzAzMjJjMGVlZGQwN2UzZTg3MWNmYmIxYmY3YmNmYzlhYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlv
bk1hdGNoUmVxdWVzdEkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpEaWRNYXRjaFJlZ2lzdHJhdGlvbiB7IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50
aWZpZXIsIHJlZ2lzdHJhdGlvbi0+ZGF0YSgpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hSZWdpc3Ry
YXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQg
fSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpEaWRNYXRjaFJl
Z2lzdHJhdGlvbiB7IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6bnVs
bG9wdCB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lzdHJhdGlvblJl
YWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaAppbmRleCAzMWRiNGEwOWJmZTYzMWUyYzliNGFjNjA4
NzM5NzJhZTBiNTMwNTZhLi4zYjZiNDFkMTY1Mjc0NDFjZDgzNGVhMzVkYTE4NGMyOGViYTM0ODYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC05MywxMyAr
OTMsMTMgQEAgT3B0aW9uYWw8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRh
aWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIKIHsKICAgICBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm9yaWdpbklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmNyZWF0aW9uVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubW9kaWZpY2F0aW9uVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWEuY3BwCmluZGV4IDNmM2VkNDQ5MzA0MmIxOWE0MDMxYWU0M2Q2OTAwMjBm
MmY0YTA4NjAuLjYxMzM1YTc5M2UzNTY4YTNiNWRmZThjYjU5MDJkNjgxMTAwOTQ3YWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWE6OmRpc3BhdGNo
RXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291cmNlQ29ubmVjdGlvbiwgU3RvCiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHN0b3JhZ2VBcmVhSW1w
bElEKTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9
IG1fZXZlbnRMaXN0ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBPcHRp
b25hbDxTdG9yYWdlQXJlYUltcGxJZGVudGlmaWVyPiBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElE
ID0gKml0ID09IHNvdXJjZUNvbm5lY3Rpb24gPyBtYWtlT3B0aW9uYWwoc3RvcmFnZUFyZWFJbXBs
SUQpIDogV1RGOjpudWxsb3B0OworICAgICAgICBPcHRpb25hbDxTdG9yYWdlQXJlYUltcGxJZGVu
dGlmaWVyPiBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gKml0ID09IHNvdXJjZUNvbm5lY3Rp
b24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoc3RvcmFnZUFyZWFJbXBsSUQpIDogc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbklEID0gKml0
LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQgPSBtX2lkZW50aWZpZXIsIGtleSA9IGtleS5pc29s
YXRlZENvcHkoKSwgb2xkVmFsdWUgPSBvbGRWYWx1ZS5pc29sYXRlZENvcHkoKSwgbmV3VmFsdWUg
PSBuZXdWYWx1ZS5pc29sYXRlZENvcHkoKSwgdXJsU3RyaW5nID0gdXJsU3RyaW5nLmlzb2xhdGVk
Q29weSgpLCBvcHRpb25hbFN0b3JhZ2VBcmVhSW1wbElEID0gV1RGTW92ZShvcHRpb25hbFN0b3Jh
Z2VBcmVhSW1wbElEKV0gewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJUEM6
OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlvbklEKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJT
ZXQuY3BwCmluZGV4IGY5ZTg0M2RlMzczMTlkZDZjNWMxMDYzYTNjZGNmNWMxZDRiYmExOTUuLjQ2
NTU0ODdhNmVjZDMwMGM0MTNjMWFhNTYxM2JkZmZiNDhjZThkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5h
Z2VyU2V0LmNwcApAQCAtMzEyLDEzICszMTIsMTMgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6
Y29ubmVjdFRvTG9jYWxTdG9yYWdlQXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFAK
IAogICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Np
b25JRCk7CiAgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogc3RvcmFnZUFyZWEgPSBz
dG9yYWdlTWFuYWdlci0+Y3JlYXRlTG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQs
IFdURk1vdmUob3JpZ2luRGF0YSksIG1fcXVldWUuY29weVJlZigpKTsKICAgICBpZiAoIXN0b3Jh
Z2VBcmVhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTMzNywxMyArMzM3LDEzIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5l
Y3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uCiAKICAg
ICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQp
OwogICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFn
ZU1hbmFnZXItPmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFj
ZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSksIFdURk1vdmUob3JpZ2luRGF0YSksIG1f
cXVldWUuY29weVJlZigpKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM2MiwxMyArMzYyLDEz
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb1Nlc3Npb25TdG9yYWdlQXJlYShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAKICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9
IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOwogICAgIGlmICghc3RvcmFnZU1hbmFn
ZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVNlc3Npb25T
dG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUob3JpZ2luRGF0YSksIG1fcXVl
dWUuY29weVJlZigpKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRl
eCAyYWNlNTFjNjEwOGUyMzVmODA2MWRjMmU4ODk5YmQ1NmJkNzgyMzgyLi5jZDY4MGYwM2RmMjYx
NmVlOWNhYTNmZWNhNWNkYTc5NDQ4OTlmNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCkBAIC0yMTcs
NyArMjE3LDcgQEAgc3RhdGljIHVpbnQ2NF90IGdldERpcmVjdG9yeVNpemUoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnlQYXRoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KLSAgICAgICAgZGlyZWN0b3J5U2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShw
YXRoKS52YWx1ZU9yKDApOworICAgICAgICBkaXJlY3RvcnlTaXplICs9IEZpbGVTeXN0ZW06OmZp
bGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogICAgIH0KICAgICByZXR1cm4gZGlyZWN0b3J5U2l6
ZTsKIH0KQEAgLTM1MiwxMyArMzUyLDEzIEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBs
ZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIH0KIAogICAgIGlmIChtX3NhbHQpIHsKLSAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghc2hvdWxkUGVyc2lzdCgp
KSB7CiAgICAgICAgIG1fc2FsdCA9IE5ldHdvcmtDYWNoZTo6U2FsdCB7IH07Ci0gICAgICAgIGNh
bGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIEVuZ2luZTo6
aW5pdGlhbGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogICAgICAgICAgICAg
YXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1faW5pdGlhbGl6YXRpb25DYWxsYmFja3MpOwogICAg
ICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgICAgICAg
ICBjYWxsYmFjayhtX3NhbHQgPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoRXJyb3I6Oldy
aXRlRGlzaykpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fc2FsdCA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChFcnJvcjo6V3JpdGVEaXNrKSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpAQCAtNDUzLDcgKzQ1Myw3IEBAIENhY2hlKiBFbmdpbmU6OmNhY2hlKHVpbnQ2
NF90IGNhY2hlSWRlbnRpZmllcikKIHZvaWQgRW5naW5lOjp3cml0ZUZpbGUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0YSwgV2ViQ29yZTo6RE9NQ2FjaGVF
bmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghc2hvdWxk
UGVyc2lzdCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3Nyw3
ICs0NzcsNyBAQCB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcgogICAgICAgICAgICAgICAgIGNhbGxi
YWNrKEVycm9yOjpXcml0ZURpc2spOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTU2MSwy
MSArNTYxLDIxIEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBFbmdpbmU6OnJlYWRTaXplRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgfSk7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoZmlsZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6
ZmlsZVNpemUocGF0aCkudmFsdWVPcigwKTsKKyAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3Rl
bTo6ZmlsZVNpemUocGF0aCkudmFsdWVfb3IoMCk7CiAgICAgaWYgKCFmaWxlU2l6ZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHVuc2lnbmVkIGJ5dGVzVG9SZWFkOwogICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZp
bGVTaXplLCBieXRlc1RvUmVhZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogTm8gcmVhc29uIHdlIG5l
ZWQgYSBoZWFwIGJ1ZmZlciB0byByZWFkIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgYnl0ZXMgd2hl
biB3ZSBvbmx5IHN1cHBvcnQgc21hbGwgZmlsZXMgdGhhdCBjb250YWluIG51bWVyYWxzLgogICAg
IFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOwogICAgIHVuc2lnbmVkIHRvdGFsQnl0
ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOwogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVh
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHsgYnVmZmVyLmRhdGEo
KSwgdG90YWxCeXRlc1JlYWQgfSk7CiB9CkBAIC03NzQsNyArNzc0LDcgQEAgdm9pZCBFbmdpbmU6
OmNsZWFyTWVtb3J5UmVwcmVzZW50YXRpb24oY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIFdlYkMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICByZXN1
bHQudmFsdWUoKS5nZXQoKS5jbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKCk7Ci0gICAgICAgIGNh
bGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKaW5kZXggOTQwOWQ4ZjI0YzMx
OGNkYWI0ZmMyYmJjNTgxZDlkNTdjNjJhNGZkNS4uMWZlZjVlNjE2ZDc1YzcwNDc1Y2QzZDczYzM5
M2VjYTk3NzMwOGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBzdGF0aWMgVHJhdmVyc2FsUmVzdWx0IGlzb2xhdGVkQ29weShUcmF2ZXJzYWxSZXN1
bHQmJiByZXN1bHQpCiB2b2lkIENhY2hlOjpvcGVuKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpPcGVuKSB7Ci0gICAgICAgIGNhbGxi
YWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Ok9wZW5pbmcpIHsK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIENhY2hlOjpvcGVuKENvbXBsZXRpb25DYWxsYmFjayYm
IGNhbGxiYWNrKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGNhY2hlLT5tX3JlY29yZHMgPSBXVEZNb3ZlKHRyYXZlcnNhbFJl
c3VsdC5yZWNvcmRzKTsKLSAgICAgICAgICAgICAgICBjYWNoZS0+ZmluaXNoT3BlbmluZyhXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjYWNoZS0+Zmlu
aXNoT3BlbmluZyhXVEZNb3ZlKGNhbGxiYWNrKSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjcsMTAgKzIyNywxMCBA
QCB2b2lkIENhY2hlOjpmaW5pc2hPcGVuaW5nKENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
LCBPcHRpb25hbDxFcnJvcj4mJiBlcnJvcgogICAgIH0KICAgICBtX3N0YXRlID0gU3RhdGU6Ok9w
ZW47CiAKLSAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgYXV0byBjYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ09wZW5pbmdDYWxs
YmFja3MpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAgICAgIGNh
bGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiB9
CiAKIGNsYXNzIFJlYWRSZWNvcmRUYXNrQ291bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRS
ZWNvcmRUYXNrQ291bnRlcj4gewpAQCAtNTgyLDM3ICs1ODIsMzcgQEAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IGRlY29kZURPTUNhY2hlUmVjb3JkKFdU
Rjo6UGVyc2kKICAgICBPcHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXF1ZXN0SGVhZGVy
c0d1YXJkOwogICAgIGRlY29kZXIgPj4gcmVxdWVzdEhlYWRlcnNHdWFyZDsKICAgICBpZiAoIXJl
cXVlc3RIZWFkZXJzR3VhcmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7
CiAgICAgaWYgKCFyZXF1ZXN0LmRlY29kZVdpdGhvdXRQbGF0Zm9ybURhdGEoZGVjb2RlcikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgRmV0Y2hPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKCFGZXRjaE9wdGlvbnM6
OmRlY29kZVBlcnNpc3RlbnQoZGVjb2Rlciwgb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9u
YWw8U3RyaW5nPiByZWZlcnJlcjsKICAgICBkZWNvZGVyID4+IHJlZmVycmVyOwogICAgIGlmICgh
cmVmZXJyZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVz
cG9uc2VIZWFkZXJzR3VhcmQ7CiAgICAgZGVjb2RlciA+PiByZXNwb25zZUhlYWRlcnNHdWFyZDsK
ICAgICBpZiAoIXJlc3BvbnNlSGVhZGVyc0d1YXJkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKICAgICBpZiAoIVJlc291cmNlUmVzcG9uc2U6OmRlY29kZShkZWNvZGVyLCBy
ZXNwb25zZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHJlc3BvbnNlQm9keVNp
emU7CiAgICAgZGVjb2RlciA+PiByZXNwb25zZUJvZHlTaXplOwogICAgIGlmICghcmVzcG9uc2VC
b2R5U2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci52ZXJpZnlDaGVja3N1bSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHt7CiAgICAgICAgIDAsCkBAIC02MzUsMTYgKzYzNSwxNiBAQCBPcHRpb25hbDxD
YWNoZTo6RGVjb2RlZFJlY29yZD4gQ2FjaGU6OmRlY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9y
YWdlOjpSZWNvcmQmCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBpbnNlcnRpb25UaW1lOwogICAgIGRl
Y29kZXIgPj4gaW5zZXJ0aW9uVGltZTsKICAgICBpZiAoIWluc2VydGlvblRpbWUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYg
KCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OlJlY29y
ZD4gcmVjb3JkID0gZGVjb2RlRE9NQ2FjaGVSZWNvcmQoZGVjb2Rlcik7CiAgICAgaWYgKCFyZWNv
cmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqaW5zZXJ0aW9uVGltZSks
CkBAIC02NTgsNyArNjU4LDcgQEAgT3B0aW9uYWw8UmVjb3JkPiBDYWNoZTo6ZGVjb2RlKGNvbnN0
IFN0b3JhZ2U6OlJlY29yZCYgc3RvcmFnZSkKICAgICBhdXRvIHJlc3VsdCA9IGRlY29kZVJlY29y
ZEhlYWRlcihzdG9yYWdlKTsKIAogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZWNv
cmQgPSBXVEZNb3ZlKHJlc3VsdC0+cmVjb3JkKTsKICAgICByZWNvcmQucmVzcG9uc2VCb2R5ID0g
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RvcmFnZS5ib2R5LmRhdGEoKSwgc3RvcmFn
ZS5ib2R5LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggZmNlZmJm
NzEyMDM0ZjczZDc1NGI4OWIxOWEyNDc3MTUxZjI3N2NiZi4uODc1NTE1M2FjODNhOTRiOTUyMmNi
M2RkZTg2MjYzNGMzN2RhZjc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAt
NzgsNyArNzgsNyBAQCB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdQogICAgIHF1ZXVlLmRpc3BhdGNo
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBmaWxlbmFt
ZSA9IGNhY2hlc09yaWdpbkZpbGVuYW1lKGZvbGRlclBhdGgpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICAgICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsK
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihDYWNoZVN0b3JhZ2UsICJDYWNoZXM6
OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeSBmYWlsZWQgcmVhZGluZyBjaGFubmVsIHdpdGgg
ZXJyb3IgJWQiLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHJlYWRPcmlnaW4oZGF0YSkpOwpAQCAtMTE3LDEyICsxMTcsMTIg
QEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBDYWNoZXM6OnJlYWRPcmlnaW4oY29u
c3QgRGF0YSYgZGF0YSkKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IHRvcE9yaWdpbjsKICAgICBkZWNvZGVyID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdp
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gY2xpZW50
T3JpZ2luOwogICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOwogICAgIGlmICghY2xpZW50T3Jp
Z2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKnRvcE9yaWdpbiksCkBA
IC0xMzMsMTQgKzEzMywxNCBAQCBPcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IENhY2hl
czo6cmVhZE9yaWdpbihjb25zdCBEYXRhJiBkYXRhKQogdm9pZCBDYWNoZXM6OmluaXRpYWxpemUo
V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6OkNvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIGlmIChtX2lzSW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtX3Jvb3RQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIG1ha2VEaXJ0
eSgpOwogICAgICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBjYWxsYmFjayhX
VEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBDYWNoZXM6OmluaXRpYWxp
emVTaXplKCkKICAgICAgICAgICAgICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGF1dG8gcGVuZGluZ0NhbGxiYWNrcyA9IFdURk1vdmUobV9wZW5kaW5nSW5pdGlh
bGl6YXRpb25DYWxsYmFja3MpOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBwZW5kaW5nQ2FsbGJhY2tzKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQpOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ4MCw3ICs0
ODAsNyBAQCB2b2lkIENhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCiAgICAgQVNTRVJUKCFtX2lzV3JpdGluZ0NhY2hlc1RvRGlzayk7CiAgICAg
QVNTRVJUKG1faXNJbml0aWFsaXplZCk7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKLSAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQg
Q2FjaGVzOjp3cml0ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
IAogICAgIGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9lbmdpbmUtPnJlbW92
ZUZpbGUoY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpKTsKLSAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNTAwLDcgKzUwMCw3IEBAIHZvaWQgQ2FjaGVzOjp3cml0ZUNh
Y2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKGVycm9yKSk7CiAgICAgICAgIHdoaWxlICghbV9wZW5kaW5nV3JpdGluZ0Nh
Y2hlc1RvRGlza0NhbGxiYWNrcy5pc0VtcHR5KCkgJiYgIW1faXNXcml0aW5nQ2FjaGVzVG9EaXNr
KQotICAgICAgICAgICAgbV9wZW5kaW5nV3JpdGluZ0NhY2hlc1RvRGlza0NhbGxiYWNrcy50YWtl
Rmlyc3QoKShXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgbV9wZW5kaW5nV3JpdGluZ0NhY2hl
c1RvRGlza0NhbGxiYWNrcy50YWtlRmlyc3QoKShzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQog
CkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlUmVjb3JkKGNvbnN0IENhY2hl
JiBjYWNoZSwgY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm8KIAogICAgIGlmICgh
c2hvdWxkUGVyc2lzdCgpKSB7CiAgICAgICAgIG1fdm9sYXRpbGVTdG9yYWdlLnNldChyZWNvcmRJ
bmZvcm1hdGlvbi5rZXksIG1ha2VVbmlxdWU8UmVjb3JkPihXVEZNb3ZlKHJlY29yZCkpKTsKLSAg
ICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQg
Q2FjaGVzOjp3cml0ZVJlY29yZChjb25zdCBDYWNoZSYgY2FjaGUsIGNvbnN0IFJlY29yZEluZm9y
bWF0aW9uJiByZWNvcmRJbmZvCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgdXBkYXRlU2l6ZUZpbGUoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuY3BwCmluZGV4IDJhYWI3YjA2MmNkYzg0ZDEwNjk3MzQ5ZDg5MmJhY2E5ODA0
ZjcwODYuLjcwZjgzNTg0NzNlOWMxNmVlYjc5YWYzN2RmNjAxNDhkNDUyNjVkMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKCkKICAgICAgICAgaWYgKGxpbmtDb3VudCAmJiAqbGlua0NvdW50ID09IDEp
CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2FwcHJveGltYXRlU2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShw
YXRoKS52YWx1ZU9yKDApOworICAgICAgICAgICAgbV9hcHByb3hpbWF0ZVNpemUgKz0gRmlsZVN5
c3RlbTo6ZmlsZVNpemUocGF0aCkudmFsdWVfb3IoMCk7CiAgICAgfSk7CiAKICAgICBMT0coTmV0
d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgYmxvYiBzeW5jaHJvbml6YXRpb24g
Y29tcGxldGVkIGFwcHJveGltYXRlU2l6ZT0lenUiLCBhcHByb3hpbWF0ZVNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUNvZGVycy5jcHAKaW5kZXggYWFiYjViZWE4OTEzOGY0MWVkYTM4NDNhMmY3ZjVhYTA5NzU2NDEw
YS4uMmNkYzQyMmYzMDhmYTAwZTY2NjZlYTg3NWVkZWY2ZmE1YjAzNmZjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXA+IENvZGVyPFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA+OjpkZWNvZGUoRGVjb2RlciYKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gaGVhZGVyc1NpemU7CiAgICAgZGVjb2RlciA+PiBoZWFkZXJzU2l6
ZTsKICAgICBpZiAoIWhlYWRlcnNTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1h
cCBoZWFkZXJzOwogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaGVhZGVyc1NpemU7ICsr
aSkgewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4g
bmFtZTsKICAgICAgICAgaWYgKCFuYW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIE9wdGlvbmFsPFN0
cmluZz4gdmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaGVhZGVycy5hcHBlbmQoV1RGTW92ZSgqbmFtZSksIFdU
Rk1vdmUoKnZhbHVlKSk7CiAgICAgfQogICAgIHJldHVybiBoZWFkZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmls
ZVN5c3RlbS5jcHAKaW5kZXggM2JkMGM3NDg3YjYwMDM0ZTJmNDJiYzAwMjk3ZmI4MjRiMDM2ZTUy
ZS4uYzg3NWM5MzY0ZWUwNTM1MjZkM2Y5ZTdjMzYyNzVkOTMxOWM1YzEwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIEZpbGVUaW1lcyBmaWxlVGltZXMoY29u
c3QgU3RyaW5nJiBwYXRoKQogI2VsaWYgT1MoV0lORE9XUykKICAgICBhdXRvIGNyZWF0ZVRpbWUg
PSBGaWxlU3lzdGVtOjpmaWxlQ3JlYXRpb25UaW1lKHBhdGgpOwogICAgIGF1dG8gbW9kaWZ5VGlt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOwotICAgIHJldHVybiB7
IGNyZWF0ZVRpbWUudmFsdWVPcihXYWxsVGltZSgpKSwgbW9kaWZ5VGltZS52YWx1ZU9yKFdhbGxU
aW1lKCkpIH07CisgICAgcmV0dXJuIHsgY3JlYXRlVGltZS52YWx1ZV9vcihXYWxsVGltZSgpKSwg
bW9kaWZ5VGltZS52YWx1ZV9vcihXYWxsVGltZSgpKSB9OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbENvY29hLm1tCmluZGV4IDVhM2Q5Mjk0YjE0ZDlkZjFmYTY5NTcyZGFmM2Iy
ZjRjNmM2NTg5MWQuLjg5NzliMTQzNDQ0YWRjMWI1MGZjYjhlNmU5MTY4Zjg3NDJkZmQ5MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
SU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNjYsMTcgKzY2LDE3IEBAIElPQ2hh
bm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSwgT3B0aW9u
YWw8V29ya1F1ZXVlOjpRT1M+CiAgICAgICAgIHVubGluayhwYXRoLmRhdGEoKSk7CiAgICAgICAg
IG9mbGFnID0gT19SRFdSIHwgT19DUkVBVCB8IE9fTk9OQkxPQ0s7CiAgICAgICAgIG1vZGUgPSBT
X0lSVVNSIHwgU19JV1VTUjsKLSAgICAgICAgZGlzcGF0Y2hRT1MgPSBxb3MudmFsdWVPcihXb3Jr
UXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CisgICAgICAgIGRpc3BhdGNoUU9TID0gcW9zLnZhbHVl
X29yKFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBUeXBlOjpXcml0ZToKICAgICAgICAgb2ZsYWcgPSBPX1dST05MWSB8IE9fTk9OQkxPQ0s7CiAg
ICAgICAgIG1vZGUgPSBTX0lSVVNSIHwgU19JV1VTUjsKLSAgICAgICAgZGlzcGF0Y2hRT1MgPSBx
b3MudmFsdWVPcihXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CisgICAgICAgIGRpc3BhdGNo
UU9TID0gcW9zLnZhbHVlX29yKFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5kKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUeXBlOjpSZWFkOgogICAgICAgICBvZmxhZyA9IE9fUkRPTkxZIHwg
T19OT05CTE9DSzsKICAgICAgICAgbW9kZSA9IDA7Ci0gICAgICAgIGRpc3BhdGNoUU9TID0gcW9z
LnZhbHVlT3IoV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpOworICAgICAgICBkaXNwYXRjaFFPUyA9
IHFvcy52YWx1ZV9vcihXb3JrUXVldWU6OlFPUzo6RGVmYXVsdCk7CiAgICAgfQogCiAgICAgaW50
IGZkID0gOjpvcGVuKHBhdGguZGF0YSgpLCBvZmxhZywgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKaW5kZXgg
MjI2NWFlMWQxODE1ZWQ5ZGU2M2RlNTFhMmU1ZDczYjkzYTk5ZDEwNC4uNThkZDNlNzMzMmNiMDk3
OGFkOTZjYjZkY2I5YWMwYjA2OTVlODk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApAQCAtMTgwLDM3ICsxODAs
MzcgQEAgT3B0aW9uYWw8S2V5PiBLZXk6OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gcGFydGl0aW9uOwogICAgIGRlY29kZXIg
Pj4gcGFydGl0aW9uOwogICAgIGlmICghcGFydGl0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtleS5tX3BhcnRpdGlv
biA9IFdURk1vdmUoKnBhcnRpdGlvbik7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHR5cGU7CiAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV90eXBlID0g
V1RGTW92ZSgqdHlwZSk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXku
bV9pZGVudGlmaWVyID0gV1RGTW92ZSgqaWRlbnRpZmllcik7CiAKICAgICBPcHRpb25hbDxTdHJp
bmc+IHJhbmdlOwogICAgIGRlY29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBrZXkubV9yYW5nZSA9IFdURk1vdmUoKnJhbmdlKTsKIAogICAgIE9wdGlvbmFsPEhhc2hUeXBl
PiBoYXNoOwogICAgIGRlY29kZXIgPj4gaGFzaDsKICAgICBpZiAoIWhhc2gpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5
Lm1faGFzaCA9IFdURk1vdmUoKmhhc2gpOwogCiAgICAgT3B0aW9uYWw8SGFzaFR5cGU+IHBhcnRp
dGlvbkhhc2g7CiAgICAgZGVjb2RlciA+PiBwYXJ0aXRpb25IYXNoOwogICAgIGlmICghcGFydGl0
aW9uSGFzaCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBrZXkubV9wYXJ0aXRpb25IYXNoID0gV1RGTW92ZSgqcGFydGl0aW9u
SGFzaCk7CiAKICAgICByZXR1cm4geyBXVEZNb3ZlKGtleSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXggODU2Y2Q1ZDQ1MDkzNjZlNThiZmQ2NWFh
ZmI3NTM5ZmM5MGRjZDZmMS4uZWY3NmE5YWJiZTZkYzk4NWM3YzYwNmZkZWU3NTQ2ZTVkN2U2NTdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBQcmVsb2FkZWRFbnRyeTsKIAogICAgIHN0
YXRpYyBib29sIHNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKLSAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4s
IGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+
JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBhZGRQcmVs
b2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3Qg
PSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgcHJlbG9hZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0
IFN1YnJlc291cmNlSW5mbyYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4pOwogICAgIHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdl
KGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAg
ICAgdm9pZCByZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBkMDVhZTli
ZDJkYjc5YjMxMzQ4NmIwNjJhMjU4OGU5MmI4YTg4ODQ5Li43NGNkYjdkMTI1NDc3ODdkMDQxZWFk
ZmM4ODRhYTU4ODA0NjgyYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTg3Miw3ICs4NzIs
NyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRy
PFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgICAgICArK3dyaXRlT3BlcmF0aW9uLmFj
dGl2ZUNvdW50OwogCiAgICAgICAgIGJvb2wgc2hvdWxkU3RvcmVBc0Jsb2IgPSBzaG91bGRTdG9y
ZUJvZHlBc0Jsb2Iod3JpdGVPcGVyYXRpb24ucmVjb3JkLmJvZHkpOwotICAgICAgICBhdXRvIGJs
b2IgPSBzaG91bGRTdG9yZUFzQmxvYiA/IHN0b3JlQm9keUFzQmxvYih3cml0ZU9wZXJhdGlvbikg
OiBXVEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gYmxvYiA9IHNob3VsZFN0b3JlQXNCbG9iID8g
c3RvcmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBhdXRvIHJlY29yZERhdGEgPSBlbmNvZGVSZWNvcmQod3JpdGVPcGVyYXRpb24ucmVjb3JkLCBi
bG9iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCBmYmM1
ZDAyYzJhODU5MjJkNWZjMjYzZGRjNTgyOTkyYWQwZTM5NWZlLi5kZjRmMTY4MTBmOTMxNGE4YWRh
MzAwZDQwODE3ZGM3NWEyYjZmZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0Vu
dHJ5LmNwcApAQCAtNTksMjUgKzU5LDI1IEBAIE9wdGlvbmFsPFN1YnJlc291cmNlSW5mbz4gU3Vi
cmVzb3VyY2VJbmZvOjpkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjCiAgICAg
T3B0aW9uYWw8S2V5PiBrZXk7CiAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgaWYgKCFrZXkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaW5mby5tX2tleSA9IFdURk1vdmUoKmtleSk7CiAKICAgICBPcHRpb25hbDxXYWxsVGlt
ZT4gbGFzdFNlZW47CiAgICAgZGVjb2RlciA+PiBsYXN0U2VlbjsKICAgICBpZiAoIWxhc3RTZWVu
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGluZm8ubV9sYXN0U2VlbiA9IFdURk1vdmUoKmxhc3RTZWVuKTsKIAogICAgIE9w
dGlvbmFsPFdhbGxUaW1lPiBmaXJzdFNlZW47CiAgICAgZGVjb2RlciA+PiBmaXJzdFNlZW47CiAg
ICAgaWYgKCFmaXJzdFNlZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2ZpcnN0U2VlbiA9IFdURk1vdmUoKmZp
cnN0U2Vlbik7CiAKICAgICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKICAgICBkZWNvZGVy
ID4+IGlzVHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2llbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2lz
VHJhbnNpZW50ID0gV1RGTW92ZSgqaXNUcmFuc2llbnQpOwogCiAgICAgaWYgKGluZm8ubV9pc1Ry
YW5zaWVudCkKQEAgLTg2LDI1ICs4NiwyNSBAQCBPcHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IFN1
YnJlc291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlYwogICAg
IE9wdGlvbmFsPGJvb2w+IGlzU2FtZVNpdGU7CiAgICAgZGVjb2RlciA+PiBpc1NhbWVTaXRlOwog
ICAgIGlmICghaXNTYW1lU2l0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1faXNTYW1lU2l0ZSA9IFdURk1vdmUo
KmlzU2FtZVNpdGUpOwogCiAgICAgT3B0aW9uYWw8VVJMPiBmaXJzdFBhcnR5Rm9yQ29va2llczsK
ICAgICBkZWNvZGVyID4+IGZpcnN0UGFydHlGb3JDb29raWVzOwogICAgIGlmICghZmlyc3RQYXJ0
eUZvckNvb2tpZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2ZpcnN0UGFydHlGb3JDb29raWVzID0gV1RGTW92
ZSgqZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhl
YWRlck1hcD4gcmVxdWVzdEhlYWRlcnM7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0SGVhZGVyczsK
ICAgICBpZiAoIXJlcXVlc3RIZWFkZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9yZXF1ZXN0SGVhZGVycyA9
IFdURk1vdmUoKnJlcXVlc3RIZWFkZXJzKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlc291
cmNlTG9hZFByaW9yaXR5PiBwcmlvcml0eTsKICAgICBkZWNvZGVyID4+IHByaW9yaXR5OwogICAg
IGlmICghcHJpb3JpdHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX3ByaW9yaXR5ID0gV1RGTW92ZSgqcHJpb3Jp
dHkpOwogICAgIAogICAgIHJldHVybiB7IFdURk1vdmUoaW5mbykgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNw
cAppbmRleCBlOWZkZjM1N2Q2NGY4OTE2YjM1ZTVlMDA0NjliOTk3NTgwZGIzYWJkLi4yYzkzMWVh
MWQzM2Y4ZjM0MTdhMmE1ZWZiZjQzZTc3ZjI2N2Q4NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCkBA
IC00NTQsNyArNDU0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpyZXN0YXJ0V2l0aENy
ZWRlbnRpYWwoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW8KIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6YXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1
ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICBhdXRvIGNvb2tpZUhlYWRlckZpZWxkID0gbV9zZXNz
aW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86
OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6OlllcywgV2ViQ29yZTo6U2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKS5maXJzdDsKKyAgICBhdXRvIGNv
b2tpZUhlYWRlckZpZWxkID0gbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBXZWJDb3JlOjpTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFA6OlllcywgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
Ok5vKS5maXJzdDsKICAgICBpZiAoIWNvb2tpZUhlYWRlckZpZWxkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29v
a2llSGVhZGVyRmllbGQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9nbGliL0ROU0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xp
Yi9ETlNDYWNoZS5jcHAKaW5kZXggMjRkYTM4ODc5Y2IwNDI2ZTE5ZjRmYmM3MWRhOTJlODMxNGZm
Y2I2NC4uYThiZTJmM2QzNWUwZGQ3MmIyNDFjN2UzZDk1NjQxNzM5Y2JlMGNkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCkBAIC02OCwxMiAr
NjgsMTIgQEAgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0luZXRBZGRyZXNzPj4+IEROU0NhY2hl
Ojpsb29rdXAoY29uc3QgQ1N0cmluZyYgaG9zdCwgVHkKICAgICBhdXRvJiBtYXAgPSBtYXBGb3JU
eXBlKHR5cGUpOwogICAgIGF1dG8gaXQgPSBtYXAuZmluZChob3N0KTsKICAgICBpZiAoaXQgPT0g
bWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcmVzcG9uc2UgPSBpdC0+dmFsdWU7CiAgICAgaWYg
KHJlc3BvbnNlLmV4cGlyYXRpb25UaW1lIDw9IE1vbm90b25pY1RpbWU6Om5vdygpKSB7CiAgICAg
ICAgIG1hcC5yZW1vdmUoaXQpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiByZXNwb25zZS5hZGRy
ZXNzTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCAyMjgyY2I1NThlMjQxOWI4YzFlM2E3YzRl
MzA1OGI2M2Y1ZmFjNTkyLi41Zjk2Njk5YzU3ODNjZjFkMmNiYzI4YTNkNGY5ZTU0YmZkODEyYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0Rh
dGFUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05l
dHdvcmtEYXRhVGFza1NvdXAuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjpjbGVhclJlcXVlc3QoKQogCiAgICAgc3RvcFRpbWVvdXQoKTsKICAgICBtX3Bl
bmRpbmdSZXN1bHQgPSBudWxscHRyOwotICAgIG1fcGVuZGluZ0RhdGFVUkxSZXN1bHQgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nRGF0YVVSTFJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2ZpbGUgPSBudWxscHRyOwogICAgIG1faW5wdXRTdHJlYW0gPSBudWxscHRyOwogICAgIG1f
bXVsdGlwYXJ0SW5wdXRTdHJlYW0gPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2Rlci5oCmluZGV4IDVlZmQzMjZlYmZmYTEzYjIzMDU2YmNhNDE1YzdjYTY2
YjAxNWQ2OTIuLmQyOGEwMzFhODUzZTQ3OTAwNzk4ZDE5NzkwNDhhNGZkM2FjZWM3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKQEAgLTU3LDcgKzU3LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB2b2lkPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlciB7CiAgICAgICAgICAgICBUIHQ7CiAgICAgICAgICAgICBpZiAoVDo6ZGVjb2RlKGRlY29k
ZXIsIHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKHQpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgc3RydWN0IEFyZ3VtZW50Q29kZXI8
VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2FyaXRobWV0aWNfdjxUPj4+IHsK
ICAgICAgICAgVCByZXN1bHQ7CiAgICAgICAgIGlmIChkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmcmVzdWx0KSwgc2l6ZW9mKFQpLCBhbGln
bm9mKFQpKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApAQCAt
MTA3LDcgKzEwNyw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19lbnVtX3Y8VD4+PiB7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7
CiAgICAgICAgIGlmICh2YWx1ZSAmJiBXVEY6OmlzVmFsaWRFbnVtPFQ+KCp2YWx1ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oKnZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggYjYy
OTM5ZTZiYWNjMmZlYjRhMzUxM2RhZDI5N2U5OWFmYzFjMzMxZi4uNmE4NTZhZWZmNDM0ZjQwMzY4
NmI4MWI3ZDRhNDljMzRmMmM4ZmEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4g
T3B0aW9uYWw8V2FsbFRpbWU+IEFyZ3VtZW50Q29kZXI8V2FsbFRpbWU+OjpkZWNvZGUoRGVjb2Rl
ciYgZAogICAgIE9wdGlvbmFsPGRvdWJsZT4gdGltZTsKICAgICBkZWNvZGVyID4+IHRpbWU7CiAg
ICAgaWYgKCF0aW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKnRp
bWUpOwogfQogCkBAIC0xMzksMTIgKzEzOSwxMiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0
cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndAog
ewogICAgIC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBkZWNvZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgogICAgIGlmICghZGVjb2Rlci5idWZmZXJJ
c0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgQ2hhcmFjdGVyVHlwZSogYnVmZmVyOwogICAgIFN0cmluZyBzdHJpbmcgPSBTdHJpbmc6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSwgbGVu
Z3RoICogc2l6ZW9mKENoYXJhY3RlclR5cGUpLCBhbGlnbm9mKENoYXJhY3RlclR5cGUpKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICByZXR1cm4gc3RyaW5nOwogfQpAQCAtMTUzLDcgKzE1Myw3IEBAIFdBUk5fVU5V
U0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kCiB7CiAgICAgdWludDMyX3QgbGVuZ3RoOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAobGVuZ3RoID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBudWxs
IHN0cmluZy4KQEAgLTE2Miw3ICsxNjIsNyBAQCBXQVJOX1VOVVNFRF9SRVRVUk4gT3B0aW9uYWw8
U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAg
IAogICAgIGJvb2wgaXM4Qml0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXM4Qml0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBpZiAoaXM4Qml0KQogICAgICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxM
Q2hhcj4oZGVjb2RlciwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oCmluZGV4IDM3ZWY0ZGE3MzgzYTNjZmI1YTRlYjhhMGM3YTJmNjljM2I0ZDIw
NjUuLmE2ZmU1OTAwZGQ4ODY2Njc0MDBkZWM4Mjk4MTk2MmFiNjYwMGQ4OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaApAQCAtNjksNyArNjksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgRXh0ZW50PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxB
cnJheVJlZmVyZW5jZTxULCBFeHRlbgogICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNl
VHlwZSgpOwogICAgICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhl
ZExlbmd0aFJlZmVyZW5jZShFeHRlbnQgKiBzaXplb2YoVCksIGFsaWdub2YoVCkpOwogICAgICAg
ICBpZiAoIWRhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlw
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgRXh0ZW50KTsKICAgICB9CiB9OwpA
QCAtODgsMTcgKzg4LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPEFycmF5UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pCiAgICAgewogICAgICAg
ICB1aW50NjRfdCBzaXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGlmICghc2l6ZSkKICAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVy
ZW5jZVR5cGUoKTsKIAogICAgICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyBzaXpl
IH0gKiBzaXplb2YoVCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShkYXRhU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29k
ZXIuZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoZGF0YVNpemUudW5zYWZlR2V0KCksIGFsaWdu
b2YoVCkpOwogICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIEFy
cmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihkYXRhKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzaXplKSk7CiAgICAgfQogfTsKQEAgLTEyNiwxMCArMTI2LDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvblNldDxUPj4gewog
ICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBPcHRpb25TZXQ8VD46OlN0b3JhZ2VUeXBlPiB2YWx1
ZTsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBhdXRvIG9wdGlvblNldCA9IE9wdGlvblNldDxUPjo6ZnJvbVJhdygqdmFs
dWUpOwogICAgICAgICBpZiAoIVdURjo6aXNWYWxpZE9wdGlvblNldChvcHRpb25TZXQpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBvcHRpb25TZXQ7CiAgICAgfQogfTsKQEAgLTE1NCw3ICsx
NTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25h
bDxUPj4gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICghaXNFbmdh
Z2VkKSB7Ci0gICAgICAgICAgICBvcHRpb25hbCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IG9wdGlvbmFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIApAQCAtMTcxLDE1ICsxNzEsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8T3B0aW9uYWw8VD4+IHsKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNF
bmdhZ2VkOwogICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFpc0Vu
Z2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCppc0VuZ2FnZWQpIHsKICAgICAgICAgICAg
IE9wdGlvbmFsPFQ+IHZhbHVlOwogICAgICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAg
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPE9wdGlvbmFsPFQ+PihXVEZNb3ZlKCp2YWx1ZSkpOwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4oT3B0aW9uYWw8VD4oV1RGOjpudWxsb3B0
KSk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4oT3B0aW9uYWw8VD4oc3Rk
OjpudWxsb3B0KSk7CiAgICAgfQogfTsKIApAQCAtMjE5LDEyICsyMTksMTIgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8Qm94PFQ+PiB7CiAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IGlzRW5nYWdlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc0VuZ2FnZWQ7CiAgICAg
ICAgIGlmICghaXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7
CiAgICAgICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4g
dmFsdWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxCb3g8VD4+KEJveDxUPjo6Y3JlYXRlKFdURk1vdmUoKnZh
bHVlKSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBPcHRpb25hbDxCb3g8VD4+KEJveDxU
PihudWxscHRyKSk7CkBAIC0yNTcsMTIgKzI1NywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKICAgICAg
ICAgT3B0aW9uYWw8VD4gZmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3Q7CiAgICAgICAg
IGlmICghZmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPFU+IHNl
Y29uZDsKICAgICAgICAgZGVjb2RlciA+PiBzZWNvbmQ7CiAgICAgICAgIGlmICghc2Vjb25kKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZmlyc3QpLCBX
VEZNb3ZlKCpzZWNvbmQpIH19OwogICAgIH0KQEAgLTMwNSwxMSArMzA1LDExIEBAIHN0cnVjdCBU
dXBsZURlY29kZXJJbXBsIHsKICAgICAgICAgT3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CiAgICAg
ICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxzdGQ6OnR1cGxlPFR5cGVzLi4uPj4gc3ViVHVwbGUgPSBU
dXBsZURlY29kZXJJbXBsPFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAo
IXN1YlR1cGxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHR1cGxlRnJvbVR1cGxlQW5k
T2JqZWN0KFdURk1vdmUoKm9wdGlvbmFsKSwgV1RGTW92ZSgqc3ViVHVwbGUpKTsKICAgICB9CkBA
IC0zMjIsNyArMzIyLDcgQEAgc3RydWN0IFR1cGxlRGVjb2RlckltcGw8VHlwZT4gewogICAgICAg
ICBPcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsK
ICAgICAgICAgaWYgKCFvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3R1cGxlKFdURk1vdmUoKm9wdGlvbmFsKSk7CiAgICAgfQogfTsKQEAgLTQwMywxNCArNDAz
LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgewogICAgICAgICB1aW50NjRfdCBz
aXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFj
aXR5PiB2ZWN0b3I7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CiAgICAgICAgICAgICBPcHRpb25hbDxUPiBlbGVtZW50OwogICAgICAgICAgICAgZGVjb2RlciA+
PiBlbGVtZW50OwogICAgICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIHZlY3Rvci5hcHBlbmQoV1RGTW92ZSgqZWxlbWVudCkpOwogICAgICAgICB9
CiAgICAgICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOwpAQCAtNDU3LDEwICs0NTcsMTAgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXIsIHNpemVfdCBtaW4KICAgICB7CiAgICAgICAgIHVpbnQ2NF90IGRlY29kZWRTaXpl
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRlY29kZWRTaXplKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIGlmICghaXNJbkJvdW5kczxzaXplX3Q+KGRlY29kZWRTaXplKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGF1dG8gc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oZGVjb2RlZFNpemUp
OwogCkBAIC00NjgsMTMgKzQ2OCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgICAg
ICAvLyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1h
a2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdo
LgogICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihz
aXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFj
aXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5PiB2ZWN0b3I7CiAgICAgICAgIHZlY3Rv
ci5ncm93KHNpemUpOwogCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odmVjdG9yLmRhdGEoKSksIHNpemUgKiBzaXpl
b2YoVCksIGFsaWdub2YoVCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHZlY3RvcjsK
ICAgICB9CkBAIC00OTYsMjYgKzQ5NiwyNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5
cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQogICAg
IHsKICAgICAgICAgdWludDMyX3QgaGFzaE1hcFNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzaE1hcFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFzaE1hcFR5cGUgaGFz
aE1hcDsKICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGhhc2hNYXBTaXplOyArK2kp
IHsKICAgICAgICAgICAgIE9wdGlvbmFsPEtleUFyZz4ga2V5OwogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBrZXk7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWtleSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxNYXBwZWRBcmc+IHZhbHVlOwogICAgICAgICAg
ICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdmFsdWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFIYXNoTWFwVHlw
ZTo6aXNWYWxpZEtleSgqa2V5KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIWhhc2hNYXAuYWRkKFdURk1vdmUoKmtleSksIFdURk1vdmUoKnZhbHVlKSku
aXNOZXdFbnRyeSkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgaGFzaCBtYXAgYWxyZWFkeSBo
YXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTU1OCwyMSArNTU4LDIxIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEtleUFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFt
ZSBIYXNoCiAgICAgewogICAgICAgICB1aW50NjRfdCBoYXNoU2V0U2l6ZTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNoU2V0U2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBIYXNo
U2V0VHlwZSBoYXNoU2V0OwogICAgICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgaGFzaFNl
dFNpemU7ICsraSkgewogICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CiAgICAgICAg
ICAgICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFIYXNoU2V0VHlwZTo6aXNWYWxpZFZh
bHVlKCprZXkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WSghaGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNOZXdFbnRyeSkpIHsKICAgICAgICAgICAg
ICAgICAvLyBUaGUgaGFzaCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwu
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY0MCwx
MyArNjQwLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXJyb3JU
eXBlPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxFeHBlY3RlZDxWCiAgICAgICAgIE9wdGlvbmFsPGJv
b2w+IGhhc1ZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZhbHVlOwogICAgICAgICBpZiAo
IWhhc1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBpZiAoKmhhc1ZhbHVlKSB7
CiAgICAgICAgICAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IHZhbHVlOwogICAgICAgICAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBFeHBlY3RlZDxWYWx1ZVR5cGUsIEVycm9yVHlw
ZT4gZXhwZWN0ZWQoV1RGTW92ZSgqdmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybiBleHBlY3Rl
ZDsKQEAgLTY1NCw3ICs2NTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8RXhwZWN0ZWQ8VgogICAgICAgICBP
cHRpb25hbDxFcnJvclR5cGU+IGVycm9yOwogICAgICAgICBkZWNvZGVyID4+IGVycm9yOwogICAg
ICAgICBpZiAoIWVycm9yKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IG1ha2VVbmV4cGVj
dGVkKFdURk1vdmUoKmVycm9yKSkgfTsKICAgICB9CiB9OwpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0
cnVjdCBWYXJpYW50Q29kZXIgewogICAgICAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2
YXJpYW50X2FsdGVybmF0aXZlPGluZGV4LCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlwZT4g
b3B0aW9uYWw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICAgICAg
aWYgKCFvcHRpb25hbCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4geyBX
VEZNb3ZlKCpvcHRpb25hbCkgfTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVmFyaWFudENv
ZGVyPGluZGV4IC0gMSwgVHlwZXMuLi4+OjpkZWNvZGUoZGVjb2RlciwgaSk7CkBAIC02OTcsNyAr
Njk3LDcgQEAgc3RydWN0IFZhcmlhbnRDb2RlcjwwLCBUeXBlcy4uLj4gewogICAgICAgICBPcHRp
b25hbDx0eXBlbmFtZSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmU8MCwgV1RGOjpWYXJpYW50PFR5
cGVzLi4uPj46OnR5cGU+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwog
ICAgICAgICBpZiAoIW9wdGlvbmFsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IFdURk1v
dmUoKm9wdGlvbmFsKSB9OwogICAgIH0KIH07CkBAIC03MTUsNyArNzE1LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gVHlwZXM+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdURjo6VmFyaWFudDxUeXBl
cy4uLj4+IHsKICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGk7CiAgICAgICAgIGRlY29kZXIg
Pj4gaTsKICAgICAgICAgaWYgKCFpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBWYXJpYW50
Q29kZXI8c2l6ZW9mLi4uKFR5cGVzKSAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsICpp
KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVj
b2Rlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCmluZGV4IDk5Zjgx
YzM0MTk4YThlMjUxMTYwZTIzZGUwMjk4YzJkMDc0NTJhMjcuLjdlYmNhZWYzZmMyMzQxNWM1NDI5
MWEzZmE2NmZmNjllMDRlNmU3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgK
QEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFQ+IHJlc3VsdDsK
ICAgICAgICAgRGVjb2RlciBkZWNvZGVyKHNvdXJjZSwgbnVtYmVyT2ZCeXRlcywgQ29uc3RydWN0
V2l0aG91dEhlYWRlcik7CiAgICAgICAgIGlmICghZGVjb2Rlci5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBkZWNvZGVyID4+IHJlc3VsdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNl
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCmluZGV4
IDExNjE1N2QxN2I2YzAwYzM0NmYzZDhkMjg1NTU1YTJjN2JlZTlhN2IuLmVjNjhkZmFkZDliN2U0
ZDc4YWQ3NjNmZTY1ODYxMzU5NDAwODIzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaApAQCAtNzIsMTggKzcyLDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzRm9ybURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gaGFz
Rm9ybURhdGE7CiAgICAgICAgIGlmICghaGFzRm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKCFoYXNGb3JtRGF0YS52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhUmVm
ZXJlbmNlIHsgfTsKIAogICAgICAgICBhdXRvIGZvcm1EYXRhID0gV2ViQ29yZTo6Rm9ybURhdGE6
OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHNh
bmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hFeHRlbnNp
b25IYW5kbGVzOwogICAgICAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGVzKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkoKnNhbmRib3hFeHRlbnNpb25IYW5kbGVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9KU0lQQ0JpbmRpbmcuaAppbmRleCA4YzIzMTc3MzA1MWQ0NGIyZGI4YmUwY2M5M2YwM2I1ZWYw
NGIyODcyLi4yZGNkOTVhN2RhNjRmZTUzZGViYWU1OWFlZTdjN2U2ZGUxNTg1MzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuaApAQCAtMTMzLDcgKzEzMyw3IEBA
IE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gcHV0SlNWYWx1ZUZvckRlY29kZUFyZ3VtZW50SW5BcnJh
eShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnCiAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBqc1ZhbHVlID0g
anNWYWx1ZUZvckRlY29kZWRBcmd1bWVudFZhbHVlKGdsb2JhbE9iamVjdCwgV1RGTW92ZSgqdmFs
dWUpKTsKICAgICBpZiAoanNWYWx1ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggYmQ3MjgyYmQ1ZjExZjZhZWFkNTg4NTdmNzcyNmMx
NTk1MTY5OGRjMC4uMGU1YWQzZDk0ODBmZWU5MzA1NGJkMWNlNDU3ZDAyODM5OWM0ZmZmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaApAQCAtMTA0LDcgKzEw
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxpc3RlbmVySUQ7CiAgICAgfQogCi0gICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYgPSBzdGQ6Om51bGxvcHQpOwogCiBwcml2YXRlOgogICAgIHZp
cnR1YWwgQ29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCmluZGV4
IDUwMGY4MzlkZmFhZTkyOTdmNGRjNjNkYzY2MzA1ODc3YjIyZGYyZjguLjA2MTYwMWY3MjEwMjkz
NDYwZjI5NjQ0OGYzZTQxODA4YjNlOGZkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIE9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChk
YXRhLnNpemUoKSkKICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAppbmRleCAwZGJhODc1ZTcxYWE4YmFjZTllZDliNThh
NWMxMzA5NTYzNjcwNjQ2Li5kODFlNTQ2Y2I2MmJmYjVjYTA2YTdhMDBhYzYwOGM2OWM4NGNlMjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oCkBAIC0xNTksNyArMTU5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIE9wdGlv
bmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGllbnRD
b25uZWN0aW9uOjp0cnlTZW5kU3luY1N0cmVhbShUJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYgcmVwbHksIFRpbWVvdXQgdGltZW91dCwgU3BhbiYgc3BhbikKIHsKICAgICAvLyBJbiB0aGlz
IGZ1bmN0aW9uLCBTZW5kU3luY1Jlc3VsdCB7IH0gbWVhbnMgZXJyb3IgaGFwcGVuZWQgYW5kIGNh
bGxlciBzaG91bGQgc3RvcCBwcm9jZXNzaW5nLgotICAgIC8vIFdURjo6bnVsbG9wdCBtZWFucyB3
ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5IHNlbmRpbmcgb3V0IG9m
IHN0cmVhbS4KKyAgICAvLyBzdGQ6Om51bGxvcHQgbWVhbnMgd2UgY291bGRuJ3Qgc2VuZCB0aHJv
dWdoIHRoZSBzdHJlYW0sIHNvIHRyeSBzZW5kaW5nIG91dCBvZiBzdHJlYW0uCiAgICAgYXV0byBz
eW5jUmVxdWVzdElEID0gbV9jb25uZWN0aW9uLm1ha2VTeW5jUmVxdWVzdElEKCk7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24ucHVzaFBlbmRpbmdTeW5jUmVxdWVzdElEKHN5bmNSZXF1ZXN0SUQpKQog
ICAgICAgICByZXR1cm4gU2VuZFN5bmNSZXN1bHQgeyB9OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIE9w
dGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0PiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlTZW5kCiAgICAgYXV0byByZXN1bHQgPSBbJl0oKSAtPiBPcHRpb25h
bDxTZW5kU3luY1Jlc3VsdD4gewogICAgICAgICBTdHJlYW1Db25uZWN0aW9uRW5jb2RlciBtZXNz
YWdlRW5jb2RlciB7IFQ6Om5hbWUoKSwgc3Bhbi5kYXRhLCBzcGFuLnNpemUgfTsKICAgICAgICAg
aWYgKCEobWVzc2FnZUVuY29kZXIgPDwgc3luY1JlcXVlc3RJRCA8PCBtZXNzYWdlLmFyZ3VtZW50
cygpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHdha2V1cFJlc3VsdCA9IHJlbGVhc2UobWVz
c2FnZUVuY29kZXIuc2l6ZSgpKTsKIAogICAgICAgICBpZiAod2FrZXVwUmVzdWx0ID09IFN0cmVh
bUNsaWVudENvbm5lY3Rpb246Oldha2VVcFNlcnZlcjo6WWVzKQpAQCAtMjUwLDcgKzI1MCw3IEBA
IGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGll
bnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlCiAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGNs
aWVudE9mZnNldCA8IGNsaWVudExpbWl0IHdlIGNhbiBhcnJpdmUgdG8gYSBzaXR1YXRpb24gd2hl
cmUKICAgICAgICAgLy8gMCA8IHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplLgogICAg
IH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGlubGluZSBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1D
bGllbnRDb25uZWN0aW9uOjp0cnlBY3F1aXJlQWxsKFRpbWVvdXQgdGltZW91dCkKQEAgLTI3Myw3
ICsyNzMsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogCiAgICAgICAgIG1fYnVmZmVyLmNs
aWVudFdhaXRTZW1hcGhvcmUoKS53YWl0Rm9yKHRpbWVvdXQpOwogICAgICAgICBpZiAodGltZW91
dC5kaWRUaW1lT3V0KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgLy8gSW4gY2FzZSB0aGUgdHJh
bnNhY3Rpb24gd2FzIGNhbmNlbGxlZCwgdW5kbyB0aGUgdHJhbnNhY3Rpb24gbWFya2VyLgogICAg
IHNoYXJlZENsaWVudExpbWl0KCkuc3RvcmUoc3RhdGljX2Nhc3Q8Q2xpZW50TGltaXQ+KDApLCBz
dGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKaW5kZXggYzIxYmRjNjhmOGZkNzVh
ZmNlYTg5ZTFkNmIwNjlkNWM3OGY0YWEwZC4uMDIxMDJmODIyNmQ5Mzc0YTZkNjhhYjA3MjNlOWVl
Yjk5MzE3YjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q29ubmVjdGlvbkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlci5jcHAKQEAgLTgyLDE5ICs4MiwxOSBAQCBPcHRpb25hbDxTdHJl
YW1Db25uZWN0aW9uQnVmZmVyPiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcgogICAgIE9wdGlvbmFsPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+
IGlwY0hhbmRsZTsKICAgICBkZWNvZGVyID4+IGlwY0hhbmRsZTsKICAgICBpZiAoIWlwY0hhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBPcHRpb25hbDxTZW1hcGhvcmU+IHNlbWFwaG9yZTsKICAgICBkZWNvZGVyID4+
IHNlbWFwaG9yZTsKICAgICBpZiAoIXNlbWFwaG9yZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzaXplX3QgZGF0YVNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGlwY0hhbmRsZS0+ZGF0YVNpemUpOwogICAgIGlmIChkYXRh
U2l6ZSA8IGhlYWRlclNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZGF0YVNpemUgPiBoZWFkZXJTaXplKCkg
KyBtYXhpbXVtU2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUtPmhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRXcml0ZSk7CiAgICAgaWYgKHNoYXJlZE1lbW9yeS0+c2l6ZSgpIDwgZGF0
YVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIFN0cmVhbUNvbm5lY3Rpb25CdWZmZXIgeyBzaGFyZWRNZW1v
cnkucmVsZWFzZU5vbk51bGwoKSwgZGF0YVNpemUsICBXVEZNb3ZlKCpzZW1hcGhvcmUpIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggMDc1NDk2Y2IxNDI5NzkyOWZmYjM2Yjg0YjJkMTlkZjVkYjgzZmJk
MS4uOGQzZmZiNDdhMjBlZDlmZWMyMjQ2ZjFhNTY2ZmY0YzJiNDAwZmI2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgT3B0aW9uYWw8U3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNw
YW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjp0cnlBY3F1aXIKIHsKICAgICBTZXJ2ZXJM
aW1pdCBzZXJ2ZXJMaW1pdCA9IHNoYXJlZFNlcnZlckxpbWl0KCkubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9hY3F1aXJlKTsKICAgICBpZiAoc2VydmVyTGltaXQgPT0gU2VydmVyTGltaXQ6OnNlcnZl
cklzU2xlZXBpbmdUYWcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlc3VsdCA9IGFsaWduZWRTcGFuKG1fc2Vy
dmVyT2Zmc2V0LCBjbGFtcGVkTGltaXQoc2VydmVyTGltaXQpKTsKICAgICBpZiAocmVzdWx0LnNp
emUgPCBtaW5pbXVtTWVzc2FnZVNpemUpIHsKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8U3Ry
ZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OlNwYW4+IFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNl
Ojp0cnlBY3F1aXIKICAgICB9CiAKICAgICBpZiAocmVzdWx0LnNpemUgPCBtaW5pbXVtTWVzc2Fn
ZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IDJkOWI3MWVhZTQ5
NmY2MGNiOWRlMjczODlhNjRlYTVhZmI5MzU3YmMuLjVlYzhmZjMzY2FkZjlkMmY0ZTYxZjZmYmFj
ZTJkN2RiZjE4YTU4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Nv
Y29hL0Nvbm5lY3Rpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KQEAgLTU5OCw3ICs1OTgsNyBAQCBJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgQ29ubmVjdGlvbjo6aWRlbnRpZmllcigpIGNvbnN0CiBPcHRpb25hbDxh
dWRpdF90b2tlbl90PiBDb25uZWN0aW9uOjpnZXRBdWRpdFRva2VuKCkKIHsKICAgICBpZiAoIW1f
eHBjQ29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW47CiAg
ICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKG1feHBjQ29ubmVjdGlvbi5nZXQoKSwg
JmF1ZGl0VG9rZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvZGFy
d2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9k
YXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNwcAppbmRleCBhMzNlOTMyZWNiOWE4ZWQyZjg2NWIx
ZmRiNjIxMzFiNDg1M2RhYzYwLi5iYzA4ZjYwMWE3MTUwMDdlNWE3MDc3MGFiODUzOTg2ZDE1OWU5
YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2Vt
YXBob3JlRGFyd2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4v
SVBDU2VtYXBob3JlRGFyd2luLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPFNlbWFw
aG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBNYWNoU2Vu
ZFJpZ2h0IHNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlbmRSaWdodCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIE9wdGlvbmFsPFNlbWFwaG9yZT4geyBzdGQ6OmluX3BsYWNlLCBXVEZNb3Zl
KHNlbmRSaWdodCkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93
aW4vSVBDU2VtYXBob3JlV2luLmNwcAppbmRleCA3YWJhNWM0ODU3NjY4YWY3ZjJkNTA4YWY2MjM3
ZGE0YWE3Njg5YjVkLi5jOWU2NTZkMjYxNjQ1MmY0NjVlYzQ5YzBhZWMyNDE4YmEzNTdlNjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vSVBDU2VtYXBob3JlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vSVBDU2VtYXBob3JlV2lu
LmNwcApAQCAtOTUsNyArOTUsNyBAQCBPcHRpb25hbDxTZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVjb2Rlcik7CiAgICAgaWYgKCFoYW5kbGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIFNlbWFwaG9yZSgqaGFuZGxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCmluZGV4IGU4YjY0Y2UyZjU0MDJmYTVhMGYxNjk3
Njk2ODEzMzk2ZTNlNjczM2IuLmM5OThmOTc5NjFiMTg0NGE2YjBmYWJmZmRlOWNjMjA0ZjQ2NzYy
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmgKQEAgLTMx
LDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgaW5pdGlhbGl6ZUxvZ0No
YW5uZWxzSWZOZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5nPiA9IFdURjo6bnVsbG9wdCk7Cit2b2lk
IGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6
Om51bGxvcHQpOwogU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1v
cnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNv
Y29hLmNwcAppbmRleCAxNWE2ZTdkYjAwM2E2YTRkMjUxY2ZhYmRkYmY2Yzk3OTc5NmNlZTdkLi44
ZGY2NjhkMGUzMDM1ZjAyZjQ5ZjJiZTZhMWU4NzM3MGE3NjRlOWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHNpemVfdD4gc2FmZVJvdW5kUGFnZShzaXpl
X3Qgc2l6ZSkKIHsKICAgICBzaXplX3Qgcm91bmRlZFNpemU7CiAgICAgaWYgKF9fYnVpbHRpbl9h
ZGRfb3ZlcmZsb3coc2l6ZSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihQQUdFX01BU0spLCAmcm91bmRl
ZFNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJvdW5kZWRTaXplICY9IH5zdGF0aWNfY2FzdDxzaXplX3Q+KFBBR0Vf
TUFTSyk7CiAgICAgcmV0dXJuIHJvdW5kZWRTaXplOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmluZGV4IGFmZjdiMGQxOGRhOGUzMmYx
NmUwYjQzNGM5ODA1Y2FhZWJiZGRmODMuLjk5OGEyYTc2NzkzMDVhNDM1ZmEzNWNjMWFlZWI3MDhm
MzQ2NzU1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRN
ZW1vcnlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFy
ZWRNZW1vcnk6Om1hcChjb25zdCBIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbiBwcm90ZWN0aQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGluc3Rh
bmNlID0gd3JhcE1hcChkYXRhLCBoYW5kbGUubV9hdHRhY2htZW50LnNpemUoKSwgLTEpOwotICAg
IGluc3RhbmNlLT5tX2ZpbGVEZXNjcmlwdG9yID0gV1RGOjpudWxsb3B0OworICAgIGluc3RhbmNl
LT5tX2ZpbGVEZXNjcmlwdG9yID0gc3RkOjpudWxsb3B0OwogICAgIGluc3RhbmNlLT5tX2lzV3Jh
cHBpbmdNYXAgPSBmYWxzZTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRNZW1vcnlXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAppbmRleCAyNGNmZGQ3ZTAyZGQ0
N2UzNTQwNGYxZGI0Y2IzYmQ2ZmNmNzZhYWFkLi4xNWI5ZTQyNTY0MjVkNzY4ZGE0YWI5NTQ5ODNh
ZmI2YTE2NDNhOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFy
ZWRNZW1vcnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1l
bW9yeVdpbi5jcHAKQEAgLTE0MiwxNSArMTQyLDE1IEBAIE9wdGlvbmFsPEhBTkRMRT4gU2hhcmVk
TWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgdWludDY0X3Qgc291cmNlSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNl
SGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQzMl90IHNvdXJjZVBJRDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNvdXJjZVBJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBIQU5ETEUgZHVwbGljYXRlZEhhbmRsZTsKICAg
ICBpZiAoIWdldER1cGxpY2F0ZWRIYW5kbGUocmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHNvdXJj
ZUhhbmRsZSksIHNvdXJjZVBJRCwgZHVwbGljYXRlZEhhbmRsZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
ZHVwbGljYXRlZEhhbmRsZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IGNkZmE3YmY0MWVkYjdiMzY5YmYxOGM1NzhhYjJkNmI4N2I2NWVjNzguLjgzMGRh
ZWQxZWRmMDQ2NjQxZTkyYzNjOTJkYjE0NmI5ZmE1OGZhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgZGVmIGdlbmVyYXRl
X2pzX3ZhbHVlX2NvbnZlcnNpb25fZnVuY3Rpb24ocmVzdWx0LCByZWNlaXZlcnMsIGZ1bmN0aW9u
X25hbWUsIGFyZ3UKICAgICByZXN1bHQuYXBwZW5kKCcgICAgZGVmYXVsdDpcbicpCiAgICAgcmVz
dWx0LmFwcGVuZCgnICAgICAgICBicmVhaztcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1c
bicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBXVEY6Om51bGxvcHQ7XG4nKQorICAg
IHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gc3RkOjpudWxsb3B0O1xuJykKICAgICByZXN1bHQu
YXBwZW5kKCd9XG4nKQogCiAKQEAgLTEyMDcsNyArMTIwNyw3IEBAIGRlZiBnZW5lcmF0ZV9qc19h
cmd1bWVudF9kZXNjcmlwdGlvbnMocmVjZWl2ZXJzLCBmdW5jdGlvbl9uYW1lLCBhcmd1bWVudHNf
ZnJvbV9tCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGRlZmF1bHQ6XG4nKQogICAgIHJlc3VsdC5h
cHBlbmQoJyAgICAgICAgYnJlYWs7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9XG4nKQot
ICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gV1RGOjpudWxsb3B0O1xuJykKKyAgICByZXN1
bHQuYXBwZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDtcbicpCiAgICAgcmVzdWx0LmFwcGVu
ZCgnfVxuJykKICAgICByZXR1cm4gcmVzdWx0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRp
b25zLmNwcAppbmRleCBjYWY3Njc5NzI4NzllYTk1NmZmOWRhYWNmYmJhYjQ3MTBkY2JiYWIyLi4w
ODZhZDk5ZmFmNTMxMTEyNGQ2MGVjMjg3MTk1NzY1YWMyYWNkZGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJn
dW1lbnREZXNjcmlwdGlvbnMuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgT3B0aW9uYWw8SlNDOjpK
U1ZhbHVlPiBqc1ZhbHVlRm9yQXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgTWUKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxK
U0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE1lc3NhZ2VOYW1lIG5hbWUsIERlY29kZXImIGRlY29kZXIpCkBAIC0y
ODcsNyArMjg3LDcgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1
bWVudHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+
IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYW1lKQpAQCAtNTg5LDcg
KzU4OSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYW1lIG5hCiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNz
YWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYW1lKQpAQCAtNjM5LDcg
KzYzOSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZVJl
cGx5QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hCiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDg0N2JkNWJlODE2
NGI5YWUzNmFjNmY0MDExNmQ4ZDhmNTAwYTFmMjAuLjRhMTdjMjdjMGFjMjlhOTgyN2UyZDc3MTI0
N2NiZDFjNzE4ZGNhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
U2VjdXJpdHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
U2VjdXJpdHlPcmlnaW5SZWYuY3BwCkBAIC03OSw1ICs3OSw1IEBAIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQog
CiB1bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2lu
UmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzZWN1cml0
eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydC52YWx1ZU9yKDApOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydC52YWx1
ZV9vcigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0Fw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCmluZGV4IDMzOTgxMDAyYzEwMmM1
ZTBiYjgxOGM1YjQ3ZjViNWFiYjQwZTM0YzguLjJkNDA4ZDg1MTMwYmFjMzcyNjU4NjRiYjZiYzRi
MTk0Y2UxNDljN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0Fw
cGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQpAQCAtNzYsNyArNzYsNyBA
QCBPcHRpb25hbDxQYXltZW50U2V0dXBGZWF0dXJlcz4gUGF5bWVudFNldHVwRmVhdHVyZXM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZQogCiAgICAgYXV0byBwbGF0Zm9ybUZlYXR1cmVzID0g
SVBDOjpkZWNvZGU8TlNBcnJheTxQS1BheW1lbnRTZXR1cEZlYXR1cmUgKj4+KGRlY29kZXIsIGFs
bG93ZWRDbGFzc2VzLmdldCgpLmdldCgpKTsKICAgICBpZiAoIXBsYXRmb3JtRmVhdHVyZXMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gUGF5bWVudFNldHVwRmVhdHVyZXMgeyBXVEZNb3ZlKCpwbGF0Zm9ybUZl
YXR1cmVzKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KaW5kZXggMDU4Nzg5Njg0NWQ3YjdjZjEz
NTA2Yzk5ZDYxYmU5YjllNDMxZTY4OC4uNTBjZGRhNTExYmI4ZDAyNWE4YzNmMWJjMGMyNTMxMDFj
YWYzOWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCkBAIC05NSw3ICs5NSw3IEBAIE9wdGlvbmFs
PFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRl
Y29kZShJUEM6OkRlY29kCiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQ
S1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzLmdldCgp
LmdldCgpKTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gUGF5bWVu
dFNldHVwQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5jcHAKaW5kZXggM2IyNGZkYTkxYmRiNGY5MTgzZDZkYmQ5NTJlMjJhZDRh
MzJiNzQ4Yi4uOTA1ZGVjMzVjZGVlNzg0MDUxZDhiNzFmNWJkNjEwOTIzNzk1YmIzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OmRpZFJlYWNoRmluYWxTdGF0ZShXZWJDb3JlOjpQYXltZW50U2Vzc2lv
bkVycm9yCiAgICAgcGxhdGZvcm1IaWRlUGF5bWVudFVJKCk7CiAKICAgICBtX2F1dGhvcml6YXRp
b25QcmVzZW50ZXIgPSBudWxscHRyOwotICAgIG1fZGVzdGluYXRpb25JRCA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX2Rlc3RpbmF0aW9uSUQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9tZXJjaGFudFZh
bGlkYXRpb25TdGF0ZSA9IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlOwogICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6SWRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KaW5kZXgg
MzFjODA1OTllOTcwMDJjNDAwMzE5ZjQ1ZGU2OTA0YzEzNDQwOTk3My4uOGQ3YjVjMzMzNzEwYTZj
MmUwNmNmNDJkNzIzNWZkMTIwNTM2YmYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tCkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+
IFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kCiAKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24+
KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzLmdldCgpLmdldCgpKTsKICAgICBpZiAoIWNvbmZpZ3Vy
YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbiB7IFdURk1v
dmUoKmNvbmZpZ3VyYXRpb24pIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9DYWxsYmFja0lELmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgKaW5kZXgg
MDYzMDVjN2ZjZDBhNTgxNDJkNzM2ODliNmIzMzkzNjFlNWI1ODg4Yi4uZThmY2ZkY2FjYTczYTAy
NjU0MzZjZTM3YmI1NDkzMWMzMTZjN2M0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ2FsbGJhY2tJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaApA
QCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRl
bnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1ZhbGlkQ2FsbGJh
Y2tJRCgqaWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gZnJvbUludGVnZXIoKmlkZW50aWZp
ZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3Vt
ZW50Q29kZXJzQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29k
ZXJzQ29jb2EuaAppbmRleCBlNmIyMzViNzRmOTQzOTJmNWU2MjVlNjI3YzM2ZDgzNGVmNzkxYWYw
Li43MTFkZmJlNjAyNWI5YjQ3MGI4OTU5ZjhiMmY1ZjNkODU2YjI5NGNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCkBAIC03Niw3ICs3
Niw3IEBAIE9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIsIE5T
QXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2xhc3NlcykKIHsKICAgICBhdXRvIHJlc3VsdCA9IGRlY29k
ZU9iamVjdChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgQVNTRVJUKCEqcmVzdWx0IHx8IGlzT2JqZWN0Q2xhc3NBbGxvd2VkKCgqcmVzdWx0KS5nZXQo
KSwgYWxsb3dlZENsYXNzZXMpKTsKICAgICByZXR1cm4geyAqcmVzdWx0IH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBm
NWRlNGYyZWI5M2JlODM0NzQ2MTRmMTE0ZjI4MGI0YTc1MjUxMDRlLi5jNTRiNTNiNmZiNjE0M2Ji
ZWQwYjcwMDFiMTdkN2EwOTI0OGEwOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTI1OSwxMyArMjU5LDEzIEBAIHN0YXRp
YyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVBcnJheUludGVybmFsKERlY29kZXImIGRl
Y29kZXIsIE5TQXJyYXk8Q2xhCiB7CiAgICAgdWludDY0X3Qgc2l6ZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IGRlY29kZU9iamVjdChkZWNvZGVyLCBhbGxv
d2VkQ2xhc3Nlcyk7CiAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLnZhbHVlKCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDp2YWx1ZS52YWx1ZSgpLmdldCgpXTsKICAg
ICB9CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0
cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBDb2xv
ciBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
eyBuc0NvbG9yKGNvbG9yKSB9OwogfQogI2Vsc2UKQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUNvbG9ySW50ZXJuYWwoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBDb2xvciBjb2xvcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdp
dGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXSkgfTsKIH0KICNlbmRpZgpAQCAtMzEzLDcg
KzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGF0
YUludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
ZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IGFk
b3B0TlMoKE5TRGF0YSAqKWRhdGEubGVha1JlZigpKSB9OwogfQogCkBAIC0zMjgsNyArMzI4LDcg
QEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEYXRlSW50ZXJu
YWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRlUmVmPiBkYXRlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUygo
TlNEYXRlICopZGF0ZS5sZWFrUmVmKCkpIH07CiB9CiAKQEAgLTM3MCwxNyArMzcwLDE3IEBAIHN0
YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEaWN0aW9uYXJ5SW50ZXJuYWwoRGVj
b2RlciYgZGVjb2RlciwgTlNBcnJhCiB7CiAgICAgdWludDY0X3Qgc2l6ZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25h
cnk+IGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpzaXplXSk7CiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewogICAgICAgICBhdXRvIGtleSA9IGRlY29kZU9iamVjdChkZWNvZGVyLCBhbGxvd2Vk
Q2xhc3Nlcyk7CiAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byB2
YWx1ZSA9IGRlY29kZU9iamVjdChkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcyk7CiAgICAgICAgIGlm
ICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dmFs
dWUudmFsdWUoKS5nZXQoKSBmb3JLZXk6a2V5LnZhbHVlKCkuZ2V0KCldOwogICAgIH0KQEAgLTM5
OSw3ICszOTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRm9udElu
dGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
Zm9udEF0dHJpYnV0ZXM7CiAgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZm9udEF0dHJpYnV0ZXMp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTQyMSw3ICs0MjEs
NyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU51bWJlcklu
dGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBu
dW1iZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1iZXIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
IGFkb3B0TlMoKE5TTnVtYmVyICopbnVtYmVyLmxlYWtSZWYoKSkgfTsKIH0KIApAQCAtNDQ1LDEx
ICs0NDUsMTEgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNv
ZGluZ0ludGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXIKIHsKICAgICBBU1NFUlQoYWxsb3dl
ZENsYXNzZXMgJiYgYWxsb3dlZENsYXNzZXMuY291bnQpOwogICAgIGlmICghYWxsb3dlZENsYXNz
ZXMgfHwgIWFsbG93ZWRDbGFzc2VzLmNvdW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB1
bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVh
ZGluZ0Zyb21EYXRhOihfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpIGVycm9yOm51bGxwdHJd
KTsKICAgICB1bmFyY2hpdmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5TRGVjb2Rp
bmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb247CkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVNlY3VyZUNvZGluZ0ludGVybmFsKERlY29k
ZXImIGRlY29kZXIsIE5TQXIKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07CiAgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gZGVjb2RlIG9iamVjdCBvZiBjbGFzc2VzICVAOiAlQCIsIGFsbG93ZWRDbGFzc2VzLCBleGNl
cHRpb24pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0gQGZpbmFsbHkgewogICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107CiAgICAgICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVsZWdhdGUgPSBuaWw7CkBAIC00
ODQsNyArNDg0LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNv
ZGVTdHJpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RyaW5nKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4geyBhZG9wdE5TKChOU1N0cmluZyAqKXN0cmluZy5sZWFrUmVmKCkpIH07CiB9CiAK
QEAgLTQ5OSw3ICs0OTksNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+
IGRlY29kZVVSTEludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShVUkwpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7IGFkb3B0TlMoKE5TVVJMICopVVJMLmxlYWtSZWYoKSkgfTsKIH0KIApAQCAtNTU2LDEzICs1
NTYsMTMgQEAgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRl
Y29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2wKIHsKICAgICBib29sIGlzTnVsbDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTnVsbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGlzTnVsbCkKICAgICAg
ICAgcmV0dXJuIHsgbnVsbHB0ciB9OwogCiAgICAgTlNUeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgTlNU
eXBlOjpBcnJheToKQEAgLTU5MCw3ICs1OTAsNyBAQCBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBk
ZWNvZGVPYmplY3QoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbAog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpp
bmRleCBhN2EyYTk0YmU0NDM2ZTMzMjQ0ZGJlMDU4ZmJiYTZhMmVkYjYyMjZhLi40ZTYwOGI4YWFm
NTY4OWIxYzFmMDJkZDNkNzZhNmRhNjE5NGQyZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KQEAgLTQ3LDcgKzQ3LDcgQEAgT3B0
aW9uYWw8RGF0YURldGVjdGlvblJlc3VsdD4gRGF0YURldGVjdGlvblJlc3VsdDo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBhdXRvIHJlc3VsdHMgPSBJUEM6OmRlY29kZTxO
U0FycmF5PihkZWNvZGVyLCBAWyBbTlNBcnJheSBjbGFzc10sIGdldEREU2Nhbm5lclJlc3VsdENs
YXNzKCkgXSk7CiAgICAgaWYgKCFyZXN1bHRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRGF0YURldGVjdGlvblJlc3Vs
dCByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc3VsdHMgPSBXVEZNb3ZlKCpyZXN1bHRzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tz
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3Mu
bW0KaW5kZXggYWJjOGQ3MTM5MGNlYzI5MDI5ZTNmMGVlNjY0NGI0ODgxNTQ4NWY1NS4uZjMxYmNh
MWEwMmMxM2FkZjU5NTI3Y2M3YmZkZmNjYWEzZjZkMmE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0KQEAgLTYwLDcg
KzYwLDcgQEAgYm9vbCBpc1J1bm5pbmdUZXN0KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCiBPcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFp
bnNUZXN0aW5nKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCiB7CiAgICAgaWYgKGJ1bmRsZUlELmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgc3RhdGljIGF1dG8gYXBwQm91bmREb21haW5MaXN0ID0gbWFrZU5l
dmVyRGVzdHJveWVkKE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJp
bmcsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IHsKICAgICAgICAgeyJpbkFw
cEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiX3MsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4geyBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCIxMjcuMC4wLjEiKSB9fSwKQEAgLTcwLDcgKzcw
LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBw
Qm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHIKICAgICBpZiAoYXBwQm91bmREb21haW5JdGVy
ICE9IGFwcEJvdW5kRG9tYWluTGlzdC0+ZW5kKCkpCiAgICAgICAgIHJldHVybiBhcHBCb3VuZERv
bWFpbkl0ZXItPnZhbHVlOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcAppbmRleCBhOTgyN2Q3OTUzZWU5
Mjc3NDIzMzBmY2I5MDY1NDMzYTdlZDRhZjZhLi44ZjBiNzY5NmRjNGFmZTIwNmM3MWNlM2UzY2Q5
YTJlYzE3NGIxNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNl
cnRUZXh0T3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0
VGV4dE9wdGlvbnMuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgT3B0aW9uYWw8V2ViS2l0OjpJbnNl
cnRUZXh0T3B0aW9ucz4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPjo6
ZGUKIHsKICAgICBXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG9wdGlvbnMuc3VwcHJlc3NTZWxlY3Rpb25VcGRhdGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5wcm9jZXNzaW5nVXNlckdlc3R1cmUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5zaG91bGRTaW11bGF0ZUtleWJvYXJkSW5wdXQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5lZGl0aW5nUmFuZ2VJc1JlbGF0
aXZlVG8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KaW5kZXggMWVlOGU4NjI4
NDQ3YTc3MzhkYzY4ZTM1N2M2OGNmNTAyNDM1MTlkMC4uMTEwYzNmMWZkMmIwYzhmYTM1NGE1YTcz
MzM0Y2Q1YWI5YzAyMjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
U2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQpAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRl
bnNpb25JbXBsPiBjcmVhdGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZSB0eXBlLCBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gV1RGOjpudWxsb3B0
LCBPcHRpb25TZXQ8U2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M+IGZsYWdzID0gU2FuZGJveEV4dGVu
c2lvbjo6RmxhZ3M6OkRlZmF1bHQpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94
RXh0ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OlR5cGUgdHlwZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IHN0ZDo6bnVs
bG9wdCwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncyA9IFNhbmRib3hF
eHRlbnNpb246OkZsYWdzOjpEZWZhdWx0KQogICAgIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNhbmRib3hFeHRlbnNpb25JbXBsPiBpbXBsIHsgbmV3IFNhbmRib3hFeHRlbnNpb25JbXBsKHBh
dGgsIHR5cGUsIGF1ZGl0VG9rZW4sIGZsYWdzKSB9OwogICAgICAgICBpZiAoIWltcGwtPm1fdG9r
ZW4pCkBAIC0xNjIsNyArMTYyLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEhhbmRsZT4KIHsKICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGFSZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4ge3sgfX07CkBAIC0yMjQsMTQgKzIyNCwxNCBAQCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OmRlY29kZShJUAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaXplOwogICAgIGRlY29kZXIgPj4g
c2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBoYW5kbGVzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgewog
ICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZTsKICAgICAg
ICAgZGVjb2RlciA+PiBoYW5kbGU7CiAgICAgICAgIGlmICghaGFuZGxlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGhhbmRsZXMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwogICAgIH0KICAgICByZXR1
cm4gV1RGTW92ZShoYW5kbGVzKTsKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCwgVHlwZQogewogICAgIEFTU0VSVCghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbik7CiAKLSAg
ICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0
ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5cGUsIFdURjo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lv
bjo6RmxhZ3M6OkRvTm90Q2Fub25pY2FsaXplKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5
cGUsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6OkRvTm90Q2Fub25pY2Fs
aXplKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9yICclcyciLCBw
YXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IDJiNjY1ZWVkMTU5NjdmOTcwZmU2ZjQ5YThjNzllZTg3OTJkMGU4MmYuLjM2NDM2ODg2
ZWU3YWFlN2RiY2ZkOWZiMTg2NWVjOTA3ZmMwMWY3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC04
MCwxMCArODAsMTAgQEAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPjo6ZGUKIHsKICAgICBSZXRhaW5QdHI8
TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nOwogICAgIGlmICghSVBDOjpkZWNv
ZGUoZGVjb2RlciwgYXR0cmlidXRlZFN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gZG9jdW1lbnRBdHRyaWJ1dGVzOwogICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rlciwg
ZG9jdW1lbnRBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IFdURk1vdmUoYXR0cmlidXRl
ZFN0cmluZyksIFdURk1vdmUoZG9jdW1lbnRBdHRyaWJ1dGVzKSB9IH07CiB9CiAKQEAgLTEwMCw3
ICsxMDAsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0
aW9uPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbgogewogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbj4oZGVj
b2RlciwgUEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb25DbGFzcygpKTsK
ICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyBXVEZNb3ZlKCpjb25m
aWd1cmF0aW9uKSB9OwogfQpAQCAtMTE2LDcgKzExNiw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBh
eW1lbnQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudD46OmRlY29kZShEZWNvZGVyJiBk
ZWNvCiB7CiAgICAgYXV0byBwYXltZW50ID0gSVBDOjpkZWNvZGU8UEtQYXltZW50PihkZWNvZGVy
LCBQQUw6OmdldFBLUGF5bWVudENsYXNzKCkpOwogICAgIGlmICghcGF5bWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBQYXltZW50IHsgV1RGTW92ZSgqcGF5bWVudCkgfTsKIH0KQEAgLTEzMiwxMiArMTMy
LDEyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRBdXRoCiAgICAgT3B0aW9uYWw8UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM+IHN0YXR1czsKICAgICBkZWNvZGVyID4+IHN0YXR1czsKICAgICBpZiAo
IXN0YXR1cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+
PiBlcnJvcnM7CiAgICAgZGVjb2RlciA+PiBlcnJvcnM7CiAgICAgaWYgKCFlcnJvcnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhdHVzKSwgV1RGTW92ZSgqZXJyb3JzKSB9fTsKIH0K
QEAgLTE1MSw3ICsxNTEsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50Q29udGFjdD4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50Q29udGFjdD46OmRlY29kZQogewogICAgIGF1dG8g
Y29udGFjdCA9IElQQzo6ZGVjb2RlPFBLQ29udGFjdD4oZGVjb2RlciwgUEFMOjpnZXRQS0NvbnRh
Y3RDbGFzcygpKTsKICAgICBpZiAoIWNvbnRhY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6
UGF5bWVudENvbnRhY3QgeyBXVEZNb3ZlKCpjb250YWN0KSB9OwogfQpAQCAtMTY1LDcgKzE2NSw3
IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24+IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UGF5bWVudE1lcmNoYW50CiB7CiAgICAgYXV0byBwYXltZW50TWVyY2hhbnRT
ZXNzaW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uPihkZWNvZGVyLCBQ
QUw6OmdldFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNsYXNzKCkpOwogICAgIGlmICghcGF5bWVu
dE1lcmNoYW50U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uIHsgV1RGTW92ZSgqcGF5bWVudE1lcmNoYW50U2Vzc2lvbikgfTsKIH0KQEAgLTE3
OSw3ICsxNzksNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRAogewogICAgIGF1dG8gcGF5bWVu
dE1ldGhvZCA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudE1ldGhvZD4oZGVjb2RlciwgUEFMOjpnZXRQ
S1BheW1lbnRNZXRob2RDbGFzcygpKTsKICAgICBpZiAoIXBheW1lbnRNZXRob2QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gUGF5bWVudE1ldGhvZCB7IFdURk1vdmUoKnBheW1lbnRNZXRob2QpIH07CiB9CkBA
IC0zNjQsNyArMzY0LDcgQEAgT3B0aW9uYWw8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiBBcmd1bWVu
dENvZGVyPFJlZlB0cjxBcHBsZVBheUVycm9yPj46OmRlY29kZShEZWMKICAgICBPcHRpb25hbDxi
b29sPiBpc1ZhbGlkOwogICAgIGRlY29kZXIgPj4gaXNWYWxpZDsKICAgICBpZiAoIWlzVmFsaWQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBSZWZQdHI8QXBwbGVQYXlFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCEqaXNWYWxp
ZCkKQEAgLTM3Miw3ICszNzIsNyBAQCBPcHRpb25hbDxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPEFwcGxlUGF5RXJyb3I+Pjo6ZGVjb2RlKERlYwogCiAgICAgZXJy
b3IgPSBBcHBsZVBheUVycm9yOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFlcnJvcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTM4NSw3ICszODUsNyBAQCBPcHRpb25hbDxXZWJD
b3JlOjpQYXltZW50U2Vzc2lvbkVycm9yPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRT
ZXNzaW9uRXJybwogewogICAgIGF1dG8gcGxhdGZvcm1FcnJvciA9IElQQzo6ZGVjb2RlPE5TRXJy
b3I+KGRlY29kZXIpOwogICAgIGlmICghcGxhdGZvcm1FcnJvcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
IFdURk1vdmUoKnBsYXRmb3JtRXJyb3IpIH07CiB9CkBAIC00MTQsNyArNDE0LDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImIGVuY29kZXIKIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRl
Y29kZXIsIFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQogewogICAgIGlmICgh
SVBDOjpkZWNvZGUoZGVjb2RlciwgYXR0cmlidXRlcy5mb250KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYXR0
cmlidXRlczsKIH0KIApAQCAtNDcyLDYwICs0NzIsNjAgQEAgT3B0aW9uYWw8Rm9udFBsYXRmb3Jt
RGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2Rl
ciYKICAgICBPcHRpb25hbDxGb250T3JpZW50YXRpb24+IG9yaWVudGF0aW9uOwogICAgIGRlY29k
ZXIgPj4gb3JpZW50YXRpb247CiAgICAgaWYgKCFvcmllbnRhdGlvbi5oYXNWYWx1ZSgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8Rm9udFdpZHRoVmFyaWFudD4gd2lkdGhWYXJpYW50OwogICAgIGRlY29k
ZXIgPj4gd2lkdGhWYXJpYW50OwogICAgIGlmICghd2lkdGhWYXJpYW50Lmhhc1ZhbHVlKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7CiAg
ICAgZGVjb2RlciA+PiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXRleHRSZW5kZXJpbmdN
b2RlLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gc2l6ZTsKICAgICBkZWNv
ZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxib29sPiBzeW50aGV0aWNCb2xkOwogICAgIGRlY29kZXIgPj4gc3ludGhldGljQm9sZDsKICAg
ICBpZiAoIXN5bnRoZXRpY0JvbGQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+
IHN5bnRoZXRpY09ibGlxdWU7CiAgICAgZGVjb2RlciA+PiBzeW50aGV0aWNPYmxpcXVlOwogICAg
IGlmICghc3ludGhldGljT2JsaXF1ZS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGF0dHJpYnV0ZXM7CiAgICAgZGVjb2RlciA+PiBhdHRy
aWJ1dGVzOwogICAgIGlmICghYXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlu
Y2x1ZGVzQ3JlYXRpb25EYXRhOwogICAgIGRlY29kZXIgPj4gaW5jbHVkZXNDcmVhdGlvbkRhdGE7
CiAgICAgaWYgKCFpbmNsdWRlc0NyZWF0aW9uRGF0YS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGluY2x1ZGVzQ3JlYXRpb25EYXRhLnZhbHVlKCkpIHsKICAgICAgICAgT3B0aW9uYWw8UmVmPFNo
YXJlZEJ1ZmZlcj4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURh
dGE7CiAgICAgICAgIGlmICghZm9udEZhY2VEYXRhLmhhc1ZhbHVlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29k
ZXIgPj4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgaWYgKCFpdGVtSW5Db2xsZWN0aW9uLmhh
c1ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIGZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKGZvbnRGYWNlRGF0YS52YWx1ZSgpLCBp
dGVtSW5Db2xsZWN0aW9uLnZhbHVlKCkpOwogICAgICAgICBpZiAoIWZvbnRDdXN0b21QbGF0Zm9y
bURhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBiYXNlRm9udERlc2NyaXB0b3IgPSBmb250
Q3VzdG9tUGxhdGZvcm1EYXRhLT5mb250RGVzY3JpcHRvci5nZXQoKTsKICAgICAgICAgaWYgKCFi
YXNlRm9udERlc2NyaXB0b3IpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBmb250RGVzY3JpcHRv
ciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhiYXNl
Rm9udERlc2NyaXB0b3IsIGF0dHJpYnV0ZXMtPmdldCgpKSk7CiAgICAgICAgIGF1dG8gY3RGb250
ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3Iu
Z2V0KCksIHNpemUudmFsdWUoKSwgbnVsbHB0cikpOwogCkBAIC01MzYsMTYgKzUzNiwxNiBAQCBP
cHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJgogICAgIE9wdGlvbmFsPFN0cmluZz4gcmVmZXJlbmNlVVJM
OwogICAgIGRlY29kZXIgPj4gcmVmZXJlbmNlVVJMOwogICAgIGlmICghcmVmZXJlbmNlVVJMLmhh
c1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHBvc3RTY3JpcHROYW1lOwogICAg
IGRlY29kZXIgPj4gcG9zdFNjcmlwdE5hbWU7CiAgICAgaWYgKCFwb3N0U2NyaXB0TmFtZS5oYXNW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZvbnREZXNj
cmlwdG9yID0gZmluZEZvbnREZXNjcmlwdG9yKHJlZmVyZW5jZVVSTC52YWx1ZSgpLCBwb3N0U2Ny
aXB0TmFtZS52YWx1ZSgpKTsKICAgICBpZiAoIWZvbnREZXNjcmlwdG9yKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1
dGVzKGZvbnREZXNjcmlwdG9yLmdldCgpLCBhdHRyaWJ1dGVzLT5nZXQoKSkpOwogICAgIGF1dG8g
Y3RGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2Ny
aXB0b3IuZ2V0KCksIHNpemUudmFsdWUoKSwgbnVsbHB0cikpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KaW5kZXggZDk2ZWYwMDQxMTczOTE5ZWE5NWIyZTE0
NmUzNTM3MjZkNTk3N2FjNy4uYjc2NzNiZDI3ZWYwMDk3ZDYxMDUwMzM5N2VkOTIzMGQ0NTYyZWE1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5tbQpAQCAtNDEs
MTYgKzQxLDE2IEBAIE9wdGlvbmFsPFhSRGV2aWNlSW5mbz4gWFJEZXZpY2VJbmZvOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFhSRGV2aWNlSW5mbyBkZXZpY2VGZWF0dXJl
czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLmlkZW50aWZpZXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5zdXBwb3J0c09yaWVu
dGF0aW9uVHJhY2tpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0
dXJlcy5zdXBwb3J0c1N0ZXJlb1JlbmRlcmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRldmljZUZlYXR1cmVzLmZlYXR1cmVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkZXZpY2VGZWF0
dXJlczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCmlu
ZGV4IDQ5MmQwMmM3MTVhOTM5NmFlNDI4YzUzMzAxZGQ5MjJmY2VhYzUzNzAuLjZiYTAyZmEwNGQ5
YzEwZDI3YWIyODQ0NGRjNDExNDFjMGViY2ZlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvWFJEZXZpY2VQcm94eS5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFhSRGV2aWNlUHJv
eHk6OnJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNr
JiYgY2FsbAogCiBPcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gWFJEZXZpY2VQcm94
eTo6Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQs
IGJvb2wgYWxwaGEpCiB7Ci0gICAgcmV0dXJuIG1feHJTeXN0ZW0gPyBtX3hyU3lzdGVtLT5jcmVh
dGVMYXllclByb2plY3Rpb24od2lkdGgsIGhlaWdodCwgYWxwaGEpIDogV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9u
KHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBYUkRldmlj
ZVByb3h5OjpzdWJtaXRGcmFtZShWZWN0b3I8UGxhdGZvcm1YUjo6RGV2aWNlOjpMYXllcj4mJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RlYnVnZ2FibGVJbmZvRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwCmluZGV4IGVkNzQz
YWYzNjM2YTQ1MmI1Yjg2ZGEyZGQyZTUwMGI3Mjg2YTRmMWMuLmY2MDZmZjRiODE0ZWE2OTRkOWIy
NzNkZjRhM2NkNDQ5NmJiMThlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rl
YnVnZ2FibGVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJs
ZUluZm9EYXRhLmNwcApAQCAtNTYsMjcgKzU2LDI3IEBAIE9wdGlvbmFsPERlYnVnZ2FibGVJbmZv
RGF0YT4gRGVidWdnYWJsZUluZm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGU+IGRlYnVnZ2FibGVUeXBlOwog
ICAgIGRlY29kZXIgPj4gZGVidWdnYWJsZVR5cGU7CiAgICAgaWYgKCFkZWJ1Z2dhYmxlVHlwZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0UGxhdGZvcm1OYW1lOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0UGxhdGZvcm1OYW1lOwogICAgIGlmICghdGFyZ2V0UGxhdGZvcm1OYW1lKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRCdWlsZFZlcnNpb247CiAgICAgZGVjb2Rl
ciA+PiB0YXJnZXRCdWlsZFZlcnNpb247CiAgICAgaWYgKCF0YXJnZXRCdWlsZFZlcnNpb24pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHRhcmdldFByb2R1Y3RWZXJzaW9uOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0UHJvZHVjdFZlcnNpb247CiAgICAgaWYgKCF0YXJnZXRQcm9kdWN0VmVyc2lv
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHRhcmdldElzU2ltdWxhdG9yOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0SXNTaW11bGF0b3I7CiAgICAgaWYgKCF0YXJnZXRJc1NpbXVsYXRvcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiB7ewogICAgICAgICAqZGVidWdnYWJsZVR5cGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQppbmRleCAxOWZlN2E4MzFiYTM1
OTM0MTExM2JjMjBiN2Y1MGQ2MTQyNzg0ZTBjLi40MWI5MmFiNDY2YjM2MGFmYWFiYjEwMjYyYWEw
MmQ2NWIxNjgzMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVk
aXRpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGlu
Z0NvbnRleHQubW0KQEAgLTg1LDkgKzg1LDkgQEAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVk
aXRpbmdDb250ZXh0OjpSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6OkRvY3VtZW50RWQKICAg
ICBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlIHJhbmdlOwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyYW5nZS5sb2NhdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyYW5nZS5sZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJhbmdlOwogfQpAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0
UmVjdEFuZFJhbmdlPiBBcmd1bWVudENvZGVyPFdlYktpdDoKICAgICBXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2UgcmVjdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVjdC5yZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHJhbmdlOwogICAgIGRlY29kZXIgPj4gcmFuZ2U7CiAgICAg
aWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZWN0LnJhbmdlID0gKnJhbmdlOwogCiAgICAgcmV0dXJuIHJl
Y3Q7CkBAIC0xMzQsNDEgKzEzNCw0MSBAQCBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHQ+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDbwogICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRCZWZvcmU7CiAgICAgZGVj
b2RlciA+PiBjb250ZXh0QmVmb3JlOwogICAgIGlmICghY29udGV4dEJlZm9yZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBj
b250ZXh0LmNvbnRleHRCZWZvcmUgPSAqY29udGV4dEJlZm9yZTsKIAogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IHNlbGVjdGVkVGV4dDsKICAgICBkZWNvZGVyID4+IHNl
bGVjdGVkVGV4dDsKICAgICBpZiAoIXNlbGVjdGVkVGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LnNlbGVj
dGVkVGV4dCA9ICpzZWxlY3RlZFRleHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1
dGVkU3RyaW5nPiBjb250ZXh0QWZ0ZXI7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0QWZ0ZXI7CiAg
ICAgaWYgKCFjb250ZXh0QWZ0ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5jb250ZXh0QWZ0ZXIgPSAqY29u
dGV4dEFmdGVyOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gbWFy
a2VkVGV4dDsKICAgICBkZWNvZGVyID4+IG1hcmtlZFRleHQ7CiAgICAgaWYgKCFtYXJrZWRUZXh0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNvbnRleHQubWFya2VkVGV4dCA9ICptYXJrZWRUZXh0OwogCiAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4gYW5ub3RhdGVkVGV4dDsKICAgICBkZWNvZGVy
ID4+IGFubm90YXRlZFRleHQ7CiAgICAgaWYgKCFhbm5vdGF0ZWRUZXh0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRl
eHQuYW5ub3RhdGVkVGV4dCA9ICphbm5vdGF0ZWRUZXh0OwogCiAgICAgT3B0aW9uYWw8V2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4
dDsKICAgICBkZWNvZGVyID4+IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQ7CiAgICAgaWYgKCFz
ZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuc2VsZWN0ZWRSYW5nZUlu
TWFya2VkVGV4dCA9ICpzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjb250ZXh0LnRleHRSZWN0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY29udGV4dDsK
IH0KQEAgLTE4NywyMSArMTg3LDIxIEBAIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Q+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkCiAgICAgV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXF1ZXN0Lm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXF1ZXN0LnN1cnJvdW5kaW5nR3JhbnVsYXJpdHkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXF1ZXN0LmdyYW51bGFyaXR5Q291bnQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXF1ZXN0LnJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2Vi
Q29yZTo6RWxlbWVudENvbnRleHQ+PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgZGVj
b2RlciA+PiBvcHRpb25hbFRleHRJbnB1dENvbnRleHQ7CiAgICAgaWYgKCFvcHRpb25hbFRleHRJ
bnB1dENvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXF1ZXN0LnRleHRJbnB1dENvbnRleHQgPSBvcHRpb25h
bFRleHRJbnB1dENvbnRleHQudmFsdWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvRWRpdGluZ1JhbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5n
ZS5jcHAKaW5kZXggOWY3YzczMTA5M2NmODcxYTdlNGM2M2YxYjFmMWE2YzMwNTNmMzUzNC4uYzQ0
NzllMWE2MDQxMzg4OTY0OTllOTQ5MTFlNDEzY2Q0M2E5YmQ3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FZGl0aW5nUmFuZ2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlNp
bXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBj
b25zCiAgICAgICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4gaW5wdXQg
Y29udGV4dC4KICAgICAgICAgYXV0byogZWxlbWVudCA9IGZyYW1lLnNlbGVjdGlvbigpLnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBpZiAoIWVsZW1lbnQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZShtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCByYW5nZSk7CiAgICAgfQogCkBAIC01
NSw3ICs1NSw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPiBFZGl0aW5nUmFuZ2U6
OnRvUmFuZ2UoV2ViQ29yZTo6RnJhbWUmIGZyYW1lLCBjb25zCiAKICAgICBhdXRvIHBhcmFncmFw
aFN0YXJ0ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnRPZlBhcmFncmFwaChmcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSkpOwogICAgIGlmICghcGFyYWdyYXBoU3Rh
cnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIHNjb3BlRW5kID0gbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGVD
b250ZW50cyhwYXJhZ3JhcGhTdGFydC0+Y29udGFpbmVyLT50cmVlU2NvcGUoKS5yb290Tm9kZSgp
KTsKICAgICByZXR1cm4gV2ViQ29yZTo6cmVzb2x2ZUNoYXJhY3RlclJhbmdlKHsgV1RGTW92ZSgq
cGFyYWdyYXBoU3RhcnQpLCBXVEZNb3ZlKHNjb3BlRW5kKSB9LCByYW5nZSk7CkBAIC05MSw5ICs5
MSw5IEBAIE9wdGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiBBcmd1bWVudENvZGVyPFdlYktp
dDo6RWRpdGluZ1JhbmdlPjo6ZGVjb2RlKERlY29kCiAgICAgV2ViS2l0OjpFZGl0aW5nUmFuZ2Ug
ZWRpdGluZ1JhbmdlOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlZGl0aW5nUmFuZ2UubG9j
YXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZWRpdGluZ1JhbmdlLmxlbmd0aCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gZWRpdGluZ1JhbmdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZp
Y2VFbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IDNkOGU0Zjg3
NTE1ZWM0YTNlMmMzY2YwZjg5YmMwYzRlYjA1NzU1ODQuLmM5MWRjZmNiMjg2OWI5N2VkNmMxMmFm
YzIwNzhiZDIyYjRkMjM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1Nl
cnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0KQEAgLTg0LDcgKzg0LDcgQEAgYm9vbCBYUENT
ZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50QnVuZGxlSWRlbnRpZmllcihTdHJp
bmcmIGNsaWVudEJ1bmQKIGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENs
aWVudFNES1ZlcnNpb24odWludDMyX3QmIGNsaWVudFNES1ZlcnNpb24pCiB7CiAgICAgYXV0byB2
ZXJzaW9uID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90Pih4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5n
KG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAiY2xpZW50LXNkay12ZXJzaW9uIikpOwotICAgIGNsaWVu
dFNES1ZlcnNpb24gPSB2ZXJzaW9uLnZhbHVlT3IoMCk7CisgICAgY2xpZW50U0RLVmVyc2lvbiA9
IHZlcnNpb24udmFsdWVfb3IoMCk7CiAgICAgcmV0dXJuIHZlcnNpb24uaGFzVmFsdWUoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
LmNwcAppbmRleCBiMzlmM2Y1NjUyY2NhNmQ4M2VmMDJlY2NjZDEwMGVmYjdlZjUyODQxLi4wNzY0
ZGE4YTYwZWNiYzg4N2UzNTE3MjFlZDUzODI1MTBkYWI1NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcApAQCAtNDQsMTkgKzQ0
LDE5IEBAIE9wdGlvbmFsPE9wdGlvbkl0ZW0+IE9wdGlvbkl0ZW06OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgT3B0aW9uSXRlbSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pc0dyb3VwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzU2VsZWN0
ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlzYWJsZWQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFyZW50R3JvdXBJRCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJ
bmZvRGF0YS5jcHAKaW5kZXggYWY2ZDllNGY4YWZkYWEyMjg0ZGEyNjdlMzEwZjgzZTE5YWRlZjhi
Zi4uOGRjZjdkNzQ3YjQwODI3NDlmNTE3ZDg5YmMyMTgzYWY5ZThiNDYwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5jcHAKQEAgLTQ0LDI3ICs0NCwyNyBAQCBPcHRpb25hbDxG
cmFtZUluZm9EYXRhPiBGcmFtZUluZm9EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPGJvb2w+IGlzTWFpbkZyYW1lOwogICAgIGRlY29kZXIgPj4gaXNNYWlu
RnJhbWU7CiAgICAgaWYgKCFpc01haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdD4gcmVxdWVzdDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Q7CiAgICAg
aWYgKCFyZXF1ZXN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbjsKICAgICBkZWNvZGVyID4+IHNlY3VyaXR5T3JpZ2luOwogICAg
IGlmICghc2VjdXJpdHlPcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAg
ICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFyZW50RnJhbWVJ
RDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAg
V1RGTW92ZSgqaXNNYWluRnJhbWUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RnJhbWVUcmVlTm9kZURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVE
YXRhLmgKaW5kZXggMjcwNTM3MDRmZDBmMGUzNzNlYTM2YmE4NDVhYWI3NDY2MjQzNmU2Zi4uOWI3
ZmI2NTIxOWQ5Zjk0NzY0YmE3MWQ3YjdjZDEwNzE5N2Y3YWE3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9GcmFtZVRyZWVOb2RlRGF0YS5oCkBAIC00NiwxMiArNDYsMTIgQEAgc3RydWN0IEZyYW1l
VHJlZU5vZGVEYXRhIHsKICAgICAgICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gaW5mbzsKICAg
ICAgICAgZGVjb2RlciA+PiBpbmZvOwogICAgICAgICBpZiAoIWluZm8pCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxGcmFtZVRyZWVOb2RlRGF0YT4+IGNoaWxk
cmVuOwogICAgICAgICBkZWNvZGVyID4+IGNoaWxkcmVuOwogICAgICAgICBpZiAoIWNoaWxkcmVu
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdU
Rk1vdmUoKmluZm8pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNz
Q29ubmVjdGlvblBhcmFtZXRlcnMuaAppbmRleCAwZTQzOTIyMTViYjNlNTI5M2FlOWE0OGVjNjhm
NTVkZWJmZTcxOTU4Li5iYmQyMGUyZjc4Yzc4NDdlZTk1ZDgxZGQzZjkyNzY5NjBhOTQ0MzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBh
cmFtZXRlcnMuaApAQCAtNTcsMTkgKzU3LDE5IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlv
blBhcmFtZXRlcnMgewogICAgICAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiB3ZWJQcm9jZXNz
SWRlbnRpdHlUb2tlbjsKICAgICAgICAgZGVjb2RlciA+PiB3ZWJQcm9jZXNzSWRlbnRpdHlUb2tl
bjsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzSWRlbnRpdHlUb2tlbikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG92ZXJyaWRlTGFuZ3VhZ2Vz
OwogICAgICAgICBkZWNvZGVyID4+IG92ZXJyaWRlTGFuZ3VhZ2VzOwogICAgICAgICBpZiAoIW92
ZXJyaWRlTGFuZ3VhZ2VzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoSVBDX1RFU1RJTkdfQVBJ
KQogICAgICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7
CiAgICAgICAgIGRlY29kZXIgPj4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5nOwogICAg
ICAgICBpZiAoIWlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZykKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICAgICAgcmV0dXJuIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFy
Z3VtZW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHMuaAppbmRleCBjMjljZjI1MTIwMTZjZGEyZGZlNzBkOWUxNDBhOTBmMDNjMTllNjA0
Li5jNWI3ZDE3MTg2Yjg3MjliY2M5NWE4MDAzNDI1YzY1N2E0MjMwYWRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRz
LmgKQEAgLTYyLDIyICs2MiwyMiBAQCBPcHRpb25hbDxHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFy
Z3VtZW50cz4gR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHM6OmRlYwogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllcj4gaXRlbUJ1ZmZl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBp
ZiAoIWl0ZW1CdWZmZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG9m
ZnNldDsKICAgICBkZWNvZGVyID4+IG9mZnNldDsKICAgICBpZiAoIW9mZnNldCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZGVzdGluYXRp
b25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbkltYWdl
QnVmZmVySWRlbnRpZmllcjsKICAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cFJlYXNvbj4gcmVhc29uOwog
ICAgIGRlY29kZXIgPj4gcmVhc29uOwogICAgIGlmICghcmVhc29uKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHt7ICppdGVtQnVmZmVySWRlbnRpZmllciwgKm9mZnNldCwgKmRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCAqcmVhc29uIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1l
cGFkL0dhbWVwYWREYXRhLmNwcAppbmRleCBhOWNlYzQyNjhiN2MxYTU2NjczMDBhMWM1YzE1ZmM3
ZTAxOTk5NjMzLi40NzRhNTQzZDI2YmZjOWVhZGJiMTNiZTRlMDZiMmYxOWE0Y2M3Nzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRhLmNwcApAQCAtNTgsMjgg
KzU4LDI4IEBAIE9wdGlvbmFsPEdhbWVwYWREYXRhPiBHYW1lcGFkRGF0YTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBHYW1lcGFkRGF0YSBkYXRhOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5tX2lzTnVsbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZGF0YS5tX2lzTnVsbCkK
ICAgICAgICAgcmV0dXJuIGRhdGE7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9p
bmRleCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9pZCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9tYXBwaW5nKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5tX2F4aXNWYWx1ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLm1fYnV0dG9uVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS5tX2xhc3RVcGRhdGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXgg
Y2E3MGE1YTBlY2E3ZGNjMzQ2YWMwNThmMzBkOGNlN2IyZjcyYWI2Zi4uY2ZlOGYzZTM0ZjNhODk3
ZjI4YzE2MmYwYTY3ZmI2NmQ3N2ExNWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC03NSwyMiArNzUsMjIgQEAgc3RydWN0
IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRlZEFwcEJv
dW5kUmVxdWVzdFRlc3RpbmcpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBkZWNvZGVyID4+IGhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAgICAgIGlmICghaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAgIGRlY29kZXIgPj4g
ZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiAgICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxIYXNoTWFwPFJlcXVlc3REb21haW4sIENv
bnRleHREb21haW4+PiBjb250ZXh0RGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBjb250ZXh0RGF0
YTsKICAgICAgICAgaWYgKCFjb250ZXh0RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVy
biB7eyAqaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3RpbmcsICpkaWRQZXJmb3JtU29mdFVwZGF0ZSwgV1RGTW92ZSgqY29udGV4
dERhdGEpIH19OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rp
b25EYXRhLmNwcAppbmRleCA0YjJhNTYyYzRhN2Q3NThiYzQ3NTlhMmQ2ZDZhYzIzMjdjNWYxMGYw
Li44MDQxNDE0ZWI1MDBiNmRjMDM2NWM1OWU4NzMxYzAwZDQzNTljNThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCkBAIC02MSw5NSArNjEsOTUg
QEAgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rpb25EYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKIHsKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlw
ZSBuYXZpZ2F0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hdmlnYXRpb25UeXBl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnM7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RpZmllcnMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViTW91c2VF
dmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW91c2VC
dXR0b24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBz
eW50aGV0aWNDbGlja1R5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzeW50aGV0aWNDbGlj
a1R5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB1c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwog
ICAgIGlmICghdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9u
YWw8Ym9vbD4gY2FuSGFuZGxlUmVxdWVzdDsKICAgICBkZWNvZGVyID4+IGNhbkhhbmRsZVJlcXVl
c3Q7CiAgICAgaWYgKCFjYW5IYW5kbGVSZXF1ZXN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgZGVj
b2RlciA+PiBkb3dubG9hZEF0dHJpYnV0ZTsKICAgICBpZiAoIWRvd25sb2FkQXR0cmlidXRlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdD
b29yZGluYXRlczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGlzUmVkaXJlY3Q7
CiAgICAgZGVjb2RlciA+PiBpc1JlZGlyZWN0OwogICAgIGlmICghaXNSZWRpcmVjdCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IHRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsKICAgICBkZWNv
ZGVyID4+IHRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbjsKICAgICBpZiAoIXRyZWF0QXNTYW1l
T3JpZ2luTmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGhhc09wZW5lZEZyYW1l
czsKICAgICBkZWNvZGVyID4+IGhhc09wZW5lZEZyYW1lczsKICAgICBpZiAoIWhhc09wZW5lZEZy
YW1lcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IG9wZW5lZEJ5RE9NV2l0aE9wZW5lcjsKICAg
ICBkZWNvZGVyID4+IG9wZW5lZEJ5RE9NV2l0aE9wZW5lcjsKICAgICBpZiAoIW9wZW5lZEJ5RE9N
V2l0aE9wZW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gcmVxdWVzdGVyT3JpZ2luOwogICAgIGRlY29kZXIgPj4gcmVxdWVzdGVyT3JpZ2luOwogICAg
IGlmICghcmVxdWVzdGVyT3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4+IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwog
ICAgIGlmICghdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiBzb3VyY2VC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc291cmNlQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcjsKICAgICBpZiAoIXNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGxvY2tIaXN0b3J5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OkxvY2tCYWNr
Rm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGxvY2tCYWNrRm9yd2FyZExpc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjbGllbnRS
ZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZGVjb2RlciA+PiBjbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3Rvcnk7CiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4+IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgIGRlY29kZXIgPj4gcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ7CiAgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKG5hdmlnYXRpb25UeXBlKSwgbW9kaWZpZXJzLCBXVEZNb3Zl
KG1vdXNlQnV0dG9uKSwgV1RGTW92ZShzeW50aGV0aWNDbGlja1R5cGUpLCBXVEZNb3ZlKCp1c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllciksCiAgICAgICAgIFdURk1vdmUoKmNhbkhhbmRsZVJlcXVl
c3QpLCBXVEZNb3ZlKHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpLCBXVEZNb3ZlKCpkb3du
bG9hZEF0dHJpYnV0ZSksIFdURk1vdmUoY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwCmluZGV4IDQ3ODY5
NzQ3ZTBmYzE1NDYxMzYxNGViMDZlMTE0NGM2ZDQyZWUwNjMuLmM3ODBiYzRmODExYWY4ZmIzODdm
YjBkMjJjN2ZkZTRmMWQxMzYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bl
cnNpc3RlbmN5VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5
VXRpbHMuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+
IGNyZWF0ZUZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGlmIChoYW5kbGUgPT0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaGFuZGxlKS52
YWx1ZU9yKDApOworICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5k
bGUpLnZhbHVlX29yKDApOwogICAgIGlmICghZmlsZVNpemUpIHsKICAgICAgICAgRmlsZVN5c3Rl
bTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKaW5kZXgg
ZDkxNTY3MjJiMzE1OTY2MmRhM2Q1N2RlMzg0NTAwNjQzYjk4OTNmOC4uM2U0MjcwZGNhZjMwZjg2
MzllZmUxMjYyNTM2YmE5ZTZmNWRkMGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
bGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgT3B0aW9uYWw8UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhPiBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY28KIHsKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgZGF0YTsKICAgICBpZiAo
IWRlY29kZShkZWNvZGVyLCBkYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKaW5kZXgg
OTNhOTE0OTg4YzkyYTcyYjBmNmQzY2FhYmExYTkwYWRhMTZkMzdiMy4uMjY2ODhlOTkxN2RlZTVk
ZGE1NjM0ODQ3NzJkMjUyZjExNGFkOWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCkBAIC03OSwxNiArNzksMTYgQEAgT3B0aW9u
YWw8TlBJZGVudGlmaWVyRGF0YT4gTlBJZGVudGlmaWVyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBOUElkZW50aWZpZXJEYXRhIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX2lzU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgaWYgKHJl
c3VsdC5tX2lzU3RyaW5nKSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
c3RyaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fbnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QVmFy
aWFudERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRh
LmNwcAppbmRleCA5YjMwZTdmMTNlOTg1MDY4NzNlNWY2MzhhNDE4NjdjZmFkMzI4ZjlhLi5lMGRl
YjM2MDI2ODBiOTg0ZWM1YTkwYTM0ZmM0ZTc4Y2YwYTczODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBP
cHRpb25hbDxOUFZhcmlhbnREYXRhPiBOUFZhcmlhbnREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE5QVmFyaWFudERhdGEgcmVzdWx0OwogICAgIHVpbnQzMl90IHR5cGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIHNwZWNpYWwt
Y2FzZSBMb2NhbE5QT2JqZWN0SUQgYW5kIFJlbW90ZU5QT2JqZWN0SUQgaGVyZSBzbyBhIExvY2Fs
TlBPYmplY3RJRCBpcwogICAgIC8vIGRlY29kZWQgYXMgYSBSZW1vdGVOUE9iamVjdElEIGFuZCB2
aWNlIHZlcnNhLgpAQCAtMTcxLDMxICsxNzEsMzEgQEAgT3B0aW9uYWw8TlBWYXJpYW50RGF0YT4g
TlBWYXJpYW50RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkJvb2w6CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fYm9vbFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6SW50MzI6CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1faW50MzJWYWx1ZSkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkRvdWJsZToKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kb3VibGVWYWx1ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OlN0cmluZzoK
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9zdHJpbmdWYWx1ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6Okxv
Y2FsTlBPYmplY3RJRDoKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9sb2Nh
bE5QT2JqZWN0SURWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICBjYXNlIE5QVmFyaWFudERhdGE6OlJlbW90ZU5QT2JqZWN0SUQ6CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fcmVtb3RlTlBPYmplY3RJRFZhbHVlKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaAppbmRleCBmNDU2ZGM5ODgzMzFkMzIzODdm
YzEyNTY2MTMyZWQ2NjQ1MTNlYzNlLi4xOTAxMTIyMWRjZmI1YTQzZjliZDAzYjlkZjJlMGI4NWIx
NDllMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKQEAgLTM1LDEyICsz
NSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAg
ICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciB7IH07Ci0gICAgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4geyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHN0ZDo6bnVsbG9wdCB9Owog
ICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb246Oklnbm9yZSB9OwogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAgfTsKLSAgICBP
cHRpb25hbDxEb3dubG9hZElEPiBkb3dubG9hZElEIHsgV1RGOjpudWxsb3B0IH07Ci0gICAgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YSB7IFdURjo6bnVs
bG9wdCB9OwotICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSB7IFdURjo6bnVsbG9wdCB9OworICAgIE9wdGlvbmFsPERvd25sb2FkSUQ+
IGRvd25sb2FkSUQgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXNEYXRhIHsgc3RkOjpudWxsb3B0IH07CisgICAgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlIHsgc3Rk
OjpudWxsb3B0IH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CkBAIC02MCwzNyArNjAsMzcgQEAgc3RydWN0IFBv
bGljeURlY2lzaW9uIHsKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyPiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSWRl
bnRpZmllcjsKICAgICAgICAgaWYgKCFkZWNvZGVkSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAgZGVjb2Rl
ciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAgaWYgKCFk
ZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUFjdGlvbj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAg
ICAgICAgZGVjb2RlciA+PiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBpZiAoIWRlY29k
ZWRQb2xpY3lBY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4g
ZGVjb2RlZE5hdmlnYXRpb25JRDsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkTmF2aWdhdGlv
bklEOwogICAgICAgICBpZiAoIWRlY29kZWROYXZpZ2F0aW9uSUQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxEb3dubG9hZElEPj4gZGVjb2RlZERvd25sb2FkSUQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZERvd25sb2FkSUQ7CiAgICAgICAgIGlmICghZGVjb2Rl
ZERvd25sb2FkSUQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGRl
Y29kZXIgPj4gZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGE7CiAgICAgICAgIGlmICghZGVjb2Rl
ZFdlYnNpdGVQb2xpY2llc0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwog
ICAgICAgICBkZWNvZGVyID4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICgh
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7eyBX
VEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1vdmUo
KmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdURk1v
dmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSwgV1RGTW92ZSgqc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSl9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENO
ZXR3b3JrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwCmluZGV4IGFh
OWRmODQ3NDJjNzY1MzA2YWU4ZWMwYTIxMDE4ZThlMzg4ZTgxNzYuLmI4NGFmMzdiNzE4ZmFlOGFh
YjAzZDUwZWM2ZjJmZGFkMzIxODljOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JUQ05ldHdvcmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIGF1dG8gUlRDTmV0d29yazo6SVBBZGRyZXNzOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxJUEFkZHJlc3M+CiAgICAgSVBBZGRyZXNz
IHJlc3VsdDsKICAgICBpbnQgZmFtaWx5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmFtaWx5
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIEFTU0VSVChmYW1pbHkgPT0gQUZfSU5FVCB8fCBmYW1pbHkgPT0gQUZfSU5F
VDYgfHwgZmFtaWx5ID09IEFGX1VOU1BFQyk7CiAKQEAgLTc1LDE3ICs3NSwxNyBAQCBhdXRvIFJU
Q05ldHdvcms6OklQQWRkcmVzczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0
aW9uYWw8SVBBZGRyZXNzPgogCiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkg
ewogICAgICAgICBpZiAoZGF0YS5zaXplKCkgIT0gc2l6ZW9mKGluX2FkZHIpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHJ0Yzo6SVBBZGRyZXNzKCpyZWludGVycHJldF9jYXN0
PGNvbnN0IGluX2FkZHIqPihkYXRhLmRhdGEoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAogICAgIGlmIChkYXRhLnNpemUoKSAhPSBzaXplb2YoaW42X2FkZHIpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC52YWx1ZSA9IHJ0Yzo6SVBBZGRyZXNzKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGlu
Nl9hZGRyKj4oZGF0YS5kYXRhKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTI1LDI4
ICsxMjUsMjggQEAgYXV0byBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxTb2NrZXQKICAgICBTb2NrZXRBZGRyZXNzIHJl
c3VsdDsKICAgICB1aW50MTZfdCBwb3J0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9ydCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaW50IHNjb3BlSWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY29wZUlkKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQudmFsdWUuU2V0UG9ydChwb3J0KTsKICAgICByZXN1bHQudmFsdWUuU2V0
U2NvcGVJRChzY29wZUlkKTsKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBob3N0bmFtZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhvc3RuYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudmFsdWUuU2V0
SVAoc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaG9zdG5hbWUuZGF0
YSgpKSwgaG9zdG5hbWUuc2l6ZSgpKSk7CiAKICAgICBib29sIGlzVW5yZXNvbHZlZDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGlzVW5yZXNvbHZlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGlzVW5yZXNvbHZl
ZCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gaXBB
ZGRyZXNzOwogICAgIGRlY29kZXIgPj4gaXBBZGRyZXNzOwogICAgIGlmICghaXBBZGRyZXNzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC52YWx1ZS5TZXRSZXNvbHZlZElQKGlwQWRkcmVzcy0+dmFsdWUpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNzIsNDMgKzE3Miw0MyBAQCBPcHRpb25hbDxSVENOZXR3
b3JrPiBSVENOZXR3b3JrOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIFJUQ05l
dHdvcmsgcmVzdWx0OwogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBuYW1lLCBkZXNjcmlwdGlvbjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5uYW1lID0gc3Rk
OjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obmFtZS5kYXRhKCkpLCBuYW1l
LnNpemUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXNjcmlwdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LmRlc2NyaXB0aW9uID0gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGVzY3JpcHRpb24uZGF0YSgpKSwgZGVzY3JpcHRpb24uc2l6ZSgpKTsKICAgICBPcHRp
b25hbDxJUEFkZHJlc3M+IHByZWZpeDsKICAgICBkZWNvZGVyID4+IHByZWZpeDsKICAgICBpZiAo
IXByZWZpeCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucHJlZml4ID0gV1RGTW92ZSgqcHJlZml4KTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmVmaXhMZW5ndGgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmVmZXJlbmNlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hY3RpdmUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmlnbm9yZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnNjb3BlSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDY0X3QgbGVuZ3RoOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaXBzLnJlc2VydmUobGVuZ3Ro
KTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyArK2luZGV4KSB7
CiAgICAgICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gYWRkcmVzczsKICAgICAgICAgZGVjb2RlciA+
PiBhZGRyZXNzOwogICAgICAgICBpZiAoIWFkZHJlc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaW50
IGZsYWdzOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZsYWdzKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICByZXN1bHQuaXBzLnB1c2hfYmFjayh7IGFkZHJlc3MtPnZhbHVlLCBmbGFncyB9KTsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0
T3B0aW9ucy5jcHAKaW5kZXggYTEzMTZiNjRkNDNlMWU1M2NhZTk4MmY0ODQ4OTdhZmZiNzY2MGJl
NS4uOWUyOTgzMDEyZDMzNTQ2M2VkZjUyNzdjMmI1N2UyOWM0MzgwYmQ4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAKQEAgLTU1LDMxICs1NSwzMSBAQCBPcHRp
b25hbDxSVENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogCiAgICAgcnRjOjpEaWZmU2VydkNvZGVQb2ludCBkc2NwOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZHNjcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgb3B0aW9ucy5kc2NwID0gZHNjcDsKIAog
ICAgIE9wdGlvbmFsPGludDMyX3Q+IHBhY2tldElkOwogICAgIGRlY29kZXIgPj4gcGFja2V0SWQ7
CiAgICAgaWYgKCFwYWNrZXRJZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBvcHRpb25zLnBhY2tldF9pZCA9IHBhY2tldElk
LnZhbHVlKCk7CiAKICAgICBPcHRpb25hbDxpbnQ+IHJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQ7CiAg
ICAgZGVjb2RlciA+PiBydHBTZW5kdGltZUV4dGVuc2lvbklkOwogICAgIGlmICghcnRwU2VuZHRp
bWVFeHRlbnNpb25JZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbXMucnRwX3NlbmR0aW1lX2V4dGVuc2lvbl9pZCA9
IHJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQudmFsdWUoKTsKIAogICAgIE9wdGlvbmFsPGludDY0X3Q+
IHNydHBBdXRoVGFnTGVuZ3RoOwogICAgIGRlY29kZXIgPj4gc3J0cEF1dGhUYWdMZW5ndGg7CiAg
ICAgaWYgKCFzcnRwQXV0aFRhZ0xlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbXMuc3J0cF9hdXRoX3RhZ19s
ZW4gPSBzcnRwQXV0aFRhZ0xlbmd0aC52YWx1ZSgpOwogCiAgICAgaWYgKHBhcmFtcy5zcnRwX2F1
dGhfdGFnX2xlbiA+IDApIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIHNydHBBdXRoS2V5
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNydHBBdXRoS2V5KSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHBhcmFtcy5zcnRwX2F1dGhfa2V5ID0gc3RkOjp2ZWN0b3I8Y2hhcj4oc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzcnRwQXV0aEtleS5zaXplKCkpKTsKICAgICAgICAgbWVtY3B5KHBhcmFt
cy5zcnRwX2F1dGhfa2V5LmRhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3J0
cEF1dGhLZXkuZGF0YSgpKSwgc3J0cEF1dGhLZXkuc2l6ZSgpICogc2l6ZW9mKGNoYXIpKTsKQEAg
LTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8UlRDUGFja2V0T3B0aW9ucz4gUlRDUGFja2V0T3B0aW9u
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxpbnQ2NF90PiBz
cnRwUGFja2V0SW5kZXg7CiAgICAgZGVjb2RlciA+PiBzcnRwUGFja2V0SW5kZXg7CiAgICAgaWYg
KCFzcnRwUGFja2V0SW5kZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1zLnNydHBfcGFja2V0X2luZGV4ID0gc3J0
cFBhY2tldEluZGV4LnZhbHVlKCk7CiAKICAgICBvcHRpb25zLnBhY2tldF90aW1lX3BhcmFtcyA9
IFdURk1vdmUocGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRl
eCAxN2IyZGE5Y2NhMzUyMGIzZWZjMTQ2ZDllY2ZmN2VmMDgwMzBkMDkxLi4xMDQ3YjdkNGQyMzUy
N2U5NDRkMDlmZTM1NWE4Y2EzNTc5NTZhZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCkBAIC03MiwyNyArNzIsMjcgQEAgYXV0byBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM6OmRlY29kZShJUEM6OkRlY29kZXImIGQKIHsK
ICAgICBMYXllckNyZWF0aW9uUHJvcGVydGllcyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubGF5ZXJJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20KICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0aW5nQ29udGV4dElEKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhvc3RpbmdEZXZpY2VTY2FsZUZhY3RvcikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgLy8gUGxhdGZvcm1DQUxheWVy
UmVtb3RlTW9kZWxIb3N0aW5nCiAgICAgYm9vbCBoYXNNb2RlbDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc01vZGVsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzTW9kZWwpIHsKICAgICAgICAgYXV0byBt
b2RlbCA9IFdlYkNvcmU6Ok1vZGVsOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghbW9k
ZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1vZGVsID0gbW9kZWw7CiAgICAgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKaW5kZXggMDZkYmM4NzIyNTRkZmNiNTA5
ZWVkMTJkMDY2NjQ5OGZhNzY2ZTNkNy4uZThlYTM4Nzk1YjVkOTE3MWFjMGNjZTM2MTYzNmY0Yzk1
ZmNjNmNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcApAQCAtNDcsMTYgKzQ3LDE2
IEBAIE9wdGlvbmFsPFJlbW90ZVNjcm9sbGluZ1VJU3RhdGU+IFJlbW90ZVNjcm9sbGluZ1VJU3Rh
dGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlCiAgICAgUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZSB1
aVN0YXRlOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1aVN0YXRlLm1fY2hhbmdlcykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAodWlTdGF0ZS5tX2NoYW5nZXMuY29udGFpbnMoQ2hhbmdlczo6U2Nyb2xsU25h
cE5vZGVzKSkgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVpU3RhdGUubV9ub2Rlc1dp
dGhBY3RpdmVTY3JvbGxTbmFwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICh1aVN0YXRl
Lm1fY2hhbmdlcy5jb250YWlucyhDaGFuZ2VzOjpVc2VyU2Nyb2xsTm9kZXMpKSB7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodWlTdGF0ZS5tX25vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxz
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiB1aVN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oCmluZGV4IGIxODhhMjQ2MjkzNjMyNDc3MjY5YWZhNDc5
OTVjMmZmMTc0NThmYjAuLjAwODY1YzY5ZGJiZDYyNGNkNTI3NGI5NTNlM2ZlZTA3YTJlZjE4YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmgKQEAgLTc5LDQyICs3OSw0
MiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbyB7CiAgICAgICAgIE9wdGlvbmFsPE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyPiByZXNvdXJjZUxvYWRJRDsKICAgICAgICAgZGVjb2RlciA+
PiByZXNvdXJjZUxvYWRJRDsKICAgICAgICAgaWYgKCFyZXNvdXJjZUxvYWRJRCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+
IGZyYW1lSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICAgICAgaWYgKCFmcmFt
ZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPj4gcGFyZW50RnJhbWVJRDsKICAgICAgICAgZGVjb2RlciA+PiBwYXJlbnRG
cmFtZUlEOwogICAgICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxVUkw+IG9yaWdpbmFsVVJMOwogICAgICAgICBkZWNvZGVyID4+IG9yaWdpbmFs
VVJMOwogICAgICAgICBpZiAoIW9yaWdpbmFsVVJMKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8U3RyaW5nPiBvcmlnaW5hbEhUVFBNZXRob2Q7CiAgICAgICAgIGRlY29kZXIgPj4gb3Jp
Z2luYWxIVFRQTWV0aG9kOwogICAgICAgICBpZiAoIW9yaWdpbmFsSFRUUE1ldGhvZCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBldmVudFRpbWVzdGFtcDsKICAgICAg
ICAgZGVjb2RlciA+PiBldmVudFRpbWVzdGFtcDsKICAgICAgICAgaWYgKCFldmVudFRpbWVzdGFt
cCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRlZEZyb21DYWNoZTsK
ICAgICAgICAgZGVjb2RlciA+PiBsb2FkZWRGcm9tQ2FjaGU7CiAgICAgICAgIGlmICghbG9hZGVk
RnJvbUNhY2hlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VHlwZT4gdHlwZTsKICAg
ICAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKnJlc291cmNlTG9hZElEKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oCmluZGV4IDYwZGUzNWY2YWU5NTdkNzA2NzU5NDk2NDczY2UzNTE2NDI0MWUy
ZWIuLmYzZjllNmY1MTNhZDJmZDg0MWRhOTkxNTE4NDhlY2VjMzcxNDY4MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuaApAQCAtNzUsNjkgKzc1LDY5IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycyB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZGlyZWN0b3J5OwogICAgICAgICBk
ZWNvZGVyID4+IGRpcmVjdG9yeTsKICAgICAgICAgaWYgKCFkaXJlY3RvcnkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gZGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IGRpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAg
IGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAg
IGRlY29kZXIgPj4gaXNJdHBTdGF0ZUV4cGxpY2l0bHlTZXQ7CiAgICAgICAgIGlmICghaXNJdHBT
dGF0ZUV4cGxpY2l0bHlTZXQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBl
bmFibGVMb2dUZXN0aW5nRXZlbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlTG9nVGVzdGlu
Z0V2ZW50OwogICAgICAgICBpZiAoIWVuYWJsZUxvZ1Rlc3RpbmdFdmVudCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgICAg
IGRlY29kZXIgPj4gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdDsKICAgICAgICAgaWYgKCFzaG91bGRJ
bmNsdWRlTG9jYWxob3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZW5h
YmxlRGVidWdNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZURlYnVnTW9kZTsKICAgICAg
ICAgaWYgKCFlbmFibGVEZWJ1Z01vZGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAg
IGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgaWYgKCF0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ+IHNhbWVTaXRlU3Ry
aWN0RW5mb3JjZW1lbnRFbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IHNhbWVTaXRlU3RyaWN0
RW5mb3JjZW1lbnRFbmFibGVkOwogICAgICAgICBpZiAoIXNhbWVTaXRlU3RyaWN0RW5mb3JjZW1l
bnRFbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGU7CiAgICAgICAgIGlmICghZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwogICAgICAgICBkZWNvZGVyID4+IHN0YW5k
YWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgaWYgKCFzdGFuZGFsb25lQXBwbGljYXRp
b25Eb21haW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPj4gYXBwQm91bmREb21haW5zOwogICAgICAgICBkZWNvZGVyID4+
IGFwcEJvdW5kRG9tYWluczsKICAgICAgICAgaWYgKCFhcHBCb3VuZERvbWFpbnMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIGRlY29kZXIgPj4gbWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CiAgICAgICAgIGlmICghbWFudWFsUHJldmFsZW50UmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmRpcmVjdG9yeSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXph
dGlvbkRhdGEuY3BwCmluZGV4IGUwNjNjMWYxYmQ5OWEwMDJiNDJhYTNmMjZhM2FiYWEyMmFiM2Q4
N2EuLmZjMzBlNTg4YzM0OTgyN2IzYmZiZWRiZjY5Y2JhNmU3Y2FmYTYzYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRh
dGEuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckluaXRpYWxp
emF0aW9uRGF0YT4gU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YTo6ZGVjb2QKICAgICBP
cHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4+IGNvbnRl
bnRSdWxlTGlzdHM7CiAgICAgZGVjb2RlciA+PiBjb250ZW50UnVsZUxpc3RzOwogICAgIGlmICgh
Y29udGVudFJ1bGVMaXN0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIAogICAgIHJldHVybiB7ewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKaW5kZXggN2JkMGI1OGY0NGQ1NjMyZmI5MWZmYWY0
NDY3NmRlZjlkMDljNTZiOS4uYzBlNDM1YjdmZGQxMzFkYTdlMmRjNjdjNWQzMTAxNDdlMTJjNjg3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCkBAIC03MCwxOSArNzAsMTkg
QEAgYXV0byBIVFRQQm9keTo6RWxlbWVudDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlcikg
LT4gT3B0aW9uYWw8RWxlbWVudD4KIHsKICAgICBFbGVtZW50IHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSB8fCAhaXNWYWxpZEVudW0ocmVzdWx0LnR5cGUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRhdGEpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmZpbGVQYXRoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5maWxlU3RhcnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZp
bGVMZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmV4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmJs
b2JVUkxTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzOCw1MyArMTM4
LDUzIEBAIE9wdGlvbmFsPEZyYW1lU3RhdGU+IEZyYW1lU3RhdGU6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgRnJhbWVTdGF0ZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudXJsU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5vcmlnaW5hbFVSTFN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucmVmZXJyZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRhcmdldCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2RvY3VtZW50U3RhdGUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC52YWxpZGF0ZURvY3VtZW50U3RhdGUoKTsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnN0YXRlT2JqZWN0RGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pdGVtU2VxdWVuY2VOdW1iZXIpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2Nyb2xsUG9zaXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnNob3VsZFJlc3RvcmVTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lmh0dHBCb2R5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwb3NlZENvbnRlbnRSZWN0KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51bm9ic2N1cmVkQ29udGVudFJlY3Qp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1pbmltdW1MYXlvdXRTaXplSW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNvbnRlbnRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY2FsZUlz
SW5pdGlhbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQub2JzY3VyZWRJbnNl
dHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGlsZHJl
bikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjQwLDE0ICsyNDAsMTQgQEAgT3B0
aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6
OmRlY29kZShJUEM6OkRlY29kZXIKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmVzdWx0LmlkZW50aWZpZXIgPSAqaWRlbnRpZmllcjsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnBhZ2VTdGF0ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5oYXNDYWNoZWRQYWdlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0y
NjMsMTEgKzI2MywxMSBAQCBPcHRpb25hbDxCYWNrRm9yd2FyZExpc3RTdGF0ZT4gQmFja0Zvcndh
cmRMaXN0U3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIE9wdGlvbmFsPFZl
Y3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+PiBpdGVtczsKICAgICBkZWNvZGVyID4+IGl0
ZW1zOwogICAgIGlmICghaXRlbXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gY3VycmVu
dEluZGV4OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY3VycmVudEluZGV4KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7eyBXVEZNb3ZlKCppdGVtcyksIFdURk1vdmUoY3VycmVudEluZGV4KSB9fTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAppbmRleCAz
YjJkMzRkMThlNzNmODMxMTBjM2JlZWU2ZTE1MjZlZTk1MDU1MWFjLi5iYTk5MzdhOWRjODEzMzg1
MmMxZmMzNWY4ODljYzExYWY2ZmJjOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91
Y2hCYXJNZW51SXRlbURhdGEuY3BwCkBAIC02MSwxNSArNjEsMTUgQEAgT3B0aW9uYWw8VG91Y2hC
YXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGUKIHsKICAgICBUb3VjaEJhck1lbnVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQucHJpb3JpdHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwoV1RG
TW92ZShyZXN1bHQpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUocmVz
dWx0KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0
aW9uSUQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0aW9uSUQuaAppbmRleCBkYzE2
Yzc3OGEwYmEwMDNiMWUzNjZmYTQwNjIyZTU2OWFkMDIyZmYwLi41MzY0MDg5NDA4ZTE2MWNmYjNj
MDA2YTQyMzMyZmM2ODNlMzI0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
cmFuc2FjdGlvbklELmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVHJhbnNhY3Rpb25JRC5o
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkSWRlbnRpZmllcigq
aWRlbnRpZmllcikpOwogICAgICAgICByZXR1cm4gTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciB7
ICppZGVudGlmaWVyIH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMuY3BwCmluZGV4IGRjODUyYTcwODBiOTE2MzRjYjI5ZGI1M2Y5Zjkw
N2Q3OGY4OTA3ZTkuLmFjYzJlYjg5MzRhYzFjNzhhYjA4MWIyZDIxNjViOGQ1NDk3NjQyNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAK
QEAgLTUwLDMyICs1MCwzMiBAQCBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImCiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGhhbmRsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaGFuZGxlcklkZW50
aWZpZXI7CiAgICAgaWYgKCFoYW5kbGVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gdGFza0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB0YXNrSWRlbnRpZmll
cjsKICAgICBpZiAoIXRhc2tJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3Q7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc0hUVFBCb2R5OwogICAgIGRlY29kZXIgPj4gaGFzSFRUUEJv
ZHk7CiAgICAgaWYgKCFoYXNIVFRQQm9keSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKmhhc0hUVFBCb2R5KSB7CiAg
ICAgICAgIFJlZlB0cjxXZWJDb3JlOjpGb3JtRGF0YT4gZm9ybURhdGEgPSBXZWJDb3JlOjpGb3Jt
RGF0YTo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIWZvcm1EYXRhKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShmb3JtRGF0YSkpOwogICAgIH0K
ICAgICAKICAgICBPcHRpb25hbDxGcmFtZUluZm9EYXRhPiBmcmFtZUluZm87CiAgICAgZGVjb2Rl
ciA+PiBmcmFtZUluZm87CiAgICAgaWYgKCFmcmFtZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sK
ICAgICAgICAgV1RGTW92ZSgqaGFuZGxlcklkZW50aWZpZXIpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcAppbmRl
eCBhZTk0YjBhZGQ1YzgzYzQzN2JmZDU0NTk4NDQzZjFhYzhmN2RmZTFmLi5lM2M5Y2RiYjZiN2Zj
MDJmMzNkOGZiYjhjZGI5ODVhZjFhMGNkNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Vc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcApAQCAtNDksMzMg
KzQ5LDMzIEBAIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IFVzZXJD
b250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM6OmRlY29kCiAgICAgT3B0aW9uYWw8VXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3Rv
cjxzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPj4+IHVzZXJDb250ZW50
V29ybGRzOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRXb3JsZHM7CiAgICAgaWYgKCF1c2Vy
Q29udGVudFdvcmxkcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0
YT4+IHVzZXJTY3JpcHRzOwogICAgIGRlY29kZXIgPj4gdXNlclNjcmlwdHM7CiAgICAgaWYgKCF1
c2VyU2NyaXB0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNlclN0eWxlU2hl
ZXREYXRhPj4gdXNlclN0eWxlU2hlZXRzOwogICAgIGRlY29kZXIgPj4gdXNlclN0eWxlU2hlZXRz
OwogICAgIGlmICghdXNlclN0eWxlU2hlZXRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3Rv
cjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+PiBtZXNzYWdlSGFuZGxlcnM7CiAgICAgZGVj
b2RlciA+PiBtZXNzYWdlSGFuZGxlcnM7CiAgICAgaWYgKCFtZXNzYWdlSGFuZGxlcnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBPcHRpb25hbDxWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4+IGNvbnRl
bnRSdWxlTGlzdHM7CiAgICAgZGVjb2RlciA+PiBjb250ZW50UnVsZUxpc3RzOwogICAgIGlmICgh
Y29udGVudFJ1bGVMaXN0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcmV0dXJuIHt7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdENvdW50cy5oCmluZGV4IDQ0NzVjOGQw
NWQ0ZmNjOGZiNzUxYTUyNjlkYjYxYjMwODMyYzM0MjEuLjZiNmUxZWVhOTE0NDFlOTgwODUwYWQx
ZTNjNGM2N2FkYTc0YWYxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdENvdW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdENvdW50cy5oCkBAIC00NiwxMiArNDYsMTIgQEAgc3RydWN0IFdlYkJhY2tGb3J3
YXJkTGlzdENvdW50cyB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBiYWNrQ291bnQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gYmFja0NvdW50OwogICAgICAgICBpZiAoIWJhY2tDb3VudCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBmb3J3YXJkQ291bnQ7CiAgICAg
ICAgIGRlY29kZXIgPj4gZm9yd2FyZENvdW50OwogICAgICAgICBpZiAoIWZvcndhcmRDb3VudCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMgeyAq
YmFja0NvdW50LCAqZm9yd2FyZENvdW50IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKaW5kZXggZThi
MDNkNjllNWNkMjFhODk3MjY0NWMwMjgwMzIxMzI1NmY1MjRhNC4uOTJjODYzNzA0ZDk3ZmFhZmMy
ODFhMzk3NDE2MTEyMzVkYTBiMzEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCkBAIC02Miw1MyArNjIsNTMg
QEAgT3B0aW9uYWw8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPiBXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdERhdGE6OmRlY29kZSgKIHsKICAgICBTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZSBpcGNIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpcGNIYW5kbGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IGRhdGEgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUu
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKIAogICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgZGVj
b2RlciA+PiBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQ7CiAgICAgaWYgKCFjb25k
aXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gYWN0aW9uc09mZnNldDsKICAgICBkZWNvZGVyID4+IGFjdGlvbnNPZmZzZXQ7CiAgICAgaWYg
KCFhY3Rpb25zT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGFjdGlvbnNTaXpl
OwogICAgIGRlY29kZXIgPj4gYWN0aW9uc1NpemU7CiAgICAgaWYgKCFhY3Rpb25zU2l6ZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZU9mZnNldDsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0OwogICAgIGlmICghZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVTaXplOwogICAgIGlmICghZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2Rl
T2Zmc2V0OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZz
ZXQ7CiAgICAgaWYgKCFmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7
CiAgICAgZGVjb2RlciA+PiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAg
aWYgKCFmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4g
dG9wVVJMRmlsdGVyc0J5dGVjb2RlT2Zmc2V0OwogICAgIGlmICghdG9wVVJMRmlsdGVyc0J5dGVj
b2RlT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvcFVSTEZpbHRlcnNCeXRl
Y29kZVNpemU7CiAgICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVTaXplOwogICAg
IGlmICghdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAg
ICAgICBXVEZNb3ZlKGRhdGEpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmNwcAppbmRleCAwYzVkYzc5NTZhOGUzMTY2NDA4YjAwMmUwMDVmN2I1NGI3
MDY1ZWJjLi42NGMxNTdjZTQ3YzlkYjA0MWMzMTg5N2Q4MWJjYTZiMDc3YjdmYTdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcApAQCAtMTE3
LDMyICsxMTcsMzIgQEAgT3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gV2ViQ29udGV4
dE1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGUKIHsKICAgICBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbjsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGFjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgdGl0bGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh0aXRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGNoZWNrZWQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjaGVja2VkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgZW5hYmxlZDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGVuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgaW5kZW50YXRpb25M
ZXZlbDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZGVudGF0aW9uTGV2ZWwpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+PiBzdWJtZW51OwogICAg
IGRlY29kZXIgPj4gc3VibWVudTsKICAgICBpZiAoIXN1Ym1lbnUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICBjYXNlIFdlYkNvcmU6OkFjdGlvblR5cGU6CkBAIC0xNTUsNyArMTU1LDcg
QEAgT3B0aW9uYWw8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gV2ViQ29udGV4dE1lbnVJdGVtRGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IGtpdEl0
ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0+JiBjb3JlSXRlbVZlY3Rv
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IDM1YzJjZDMzZGYzZDM3MzE2MjAzNzQ2ODFhMTMxYWU1MmUwOTllMWIuLmYxYThhYzg4NWY0
NjEwMGZkYzY1NjU4OGJkYTE3MTkyZWE2NjQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMjgzLDEyICsyODMsMTIgQEAgT3B0aW9u
YWw8Q2hhcmFjdGVyUmFuZ2U+IEFyZ3VtZW50Q29kZXI8Q2hhcmFjdGVyUmFuZ2U+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbG9jYXRpb247CiAgICAg
ZGVjb2RlciA+PiBsb2NhdGlvbjsKICAgICBpZiAoIWxvY2F0aW9uKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IGxlbmd0aDsKICAgICBkZWNvZGVyID4+IGxlbmd0aDsKICAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgKmxvY2F0aW9uLCAqbGVuZ3RoIH0gfTsKIH0KQEAg
LTMwNCwxMiArMzA0LDEyIEBAIGF1dG8gQXJndW1lbnRDb2RlcjxET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvCiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlm
ICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAg
ZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5hbWUpIH19OwogfQpAQCAtMzQ1LDYwICsz
NDUsNjAgQEAgT3B0aW9uYWw8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD4gQXJndW1lbnRDb2RlcjxE
T01DYWNoZUVuZ2luZTo6UmVjb3JkPjo6ZGVjb2RlKEQKIHsKICAgICB1aW50NjRfdCBpZGVudGlm
aWVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGZXRj
aEhlYWRlcnM6Okd1YXJkIHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXF1ZXN0SGVhZGVyc0d1YXJkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CiAgICAgZGVjb2RlciA+
PiBvcHRpb25zOwogICAgIGlmICghb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyByZWZlcnJlcjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZldGNoSGVhZGVy
czo6R3VhcmQgcmVzcG9uc2VIZWFkZXJzR3VhcmQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXNwb25zZUhlYWRlcnNHdWFyZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2UpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
dWludDY0X3QgdXBkYXRlUmVzcG9uc2VDb3VudGVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dXBkYXRlUmVzcG9uc2VDb3VudGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ2NF90IHJlc3BvbnNlQm9keVNp
emU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNwb25zZUJvZHlTaXplKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZXNwb25zZUJvZHkgcmVzcG9uc2VCb2R5OwogICAg
IGJvb2wgaGFzU2hhcmVkQnVmZmVyQm9keTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1No
YXJlZEJ1ZmZlckJvZHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1NoYXJlZEJ1ZmZlckJvZHkpIHsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChidWZm
ZXIpCiAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBib29sIGhhc0Zvcm1EYXRhQm9keTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNGb3JtRGF0YUJvZHkpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlm
IChoYXNGb3JtRGF0YUJvZHkpIHsKICAgICAgICAgICAgIGF1dG8gZm9ybURhdGEgPSBGb3JtRGF0
YTo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICByZXNwb25zZUJvZHkgPSBmb3JtRGF0YS5yZWxlYXNlTm9u
TnVsbCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNjMyLDcgKzYzMiw3IEBAIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIEZsb2F0UG9pbnQgZmxvYXRQb2ludDsKICAgICBpZiAoIVNpbXBsZUFyZ3Vt
ZW50Q29kZXI8RmxvYXRQb2ludD46OmRlY29kZShkZWNvZGVyLCBmbG9hdFBvaW50KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gZmxvYXRQb2ludDsKIH0KIApAQCAtNjYxLDcgKzY2MSw3IEBAIE9wdGlvbmFsPEZs
b2F0UmVjdD4gQXJndW1lbnRDb2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBGbG9hdFJlY3QgZmxvYXRSZWN0OwogICAgIGlmICghU2ltcGxlQXJndW1lbnRD
b2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRSZWN0KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gZmxvYXRSZWN0OwogfQogCkBAIC03MTMsNyArNzEzLDcgQEAgT3B0aW9uYWw8Vmlld3BvcnRB
cmd1bWVudHM+IEFyZ3VtZW50Q29kZXI8Vmlld3BvcnRBcmd1bWVudHM+OjpkZWNvZGUoRGVjb2Rl
ciYgZGUKIHsKICAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50czsKICAgICBp
ZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8Vmlld3BvcnRBcmd1bWVudHM+OjpkZWNvZGUoZGVjb2Rl
ciwgdmlld3BvcnRBcmd1bWVudHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2aWV3cG9ydEFyZ3VtZW50czsK
IH0KIApAQCAtNzQzLDcgKzc0Myw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBBcmd1
bWVudENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW50
UG9pbnQgaW50UG9pbnQ7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEludFBvaW50Pjo6
ZGVjb2RlKGRlY29kZXIsIGludFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gaW50UG9pbnQ7CiB9CiAK
QEAgLTc2MSw3ICs3NjEsNyBAQCBPcHRpb25hbDxJbnRSZWN0PiBBcmd1bWVudENvZGVyPEludFJl
Y3Q+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRSZWN0IHJlY3Q7CiAgICAg
aWYgKCFkZWNvZGUoZGVjb2RlciwgcmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKQEAg
LTc4NSw3ICs3ODUsNyBAQCBPcHRpb25hbDxJbnRTaXplPiBBcmd1bWVudENvZGVyPEludFNpemU+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRTaXplIGludFNpemU7CiAgICAg
aWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEludFNpemU+OjpkZWNvZGUoZGVjb2RlciwgaW50U2l6
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIGludFNpemU7CiB9CiAKQEAgLTgyMCwxMiArODIwLDEyIEBAIE9w
dGlvbmFsPFJlY2VudFNlYXJjaD4gQXJndW1lbnRDb2RlcjxSZWNlbnRTZWFyY2g+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNv
ZGVyID4+IHN0cmluZzsKICAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxX
YWxsVGltZT4gdGltZTsKICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgaWYgKCF0aW1lKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpzdHJpbmcpLCBXVEZNb3ZlKCp0aW1lKSB9fTsK
IH0KQEAgLTg4MCwxMSArODgwLDExIEBAIE9wdGlvbmFsPE1pbWVDbGFzc0luZm8+IEFyZ3VtZW50
Q29kZXI8TWltZUNsYXNzSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1p
bWVDbGFzc0luZm8gbWltZUNsYXNzSW5mbzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVD
bGFzc0luZm8udHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lQ2xhc3NJbmZv
LmRlc2MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNsYXNzSW5mby5leHRlbnNp
b25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBtaW1lQ2xhc3NJbmZvOwogfQpAQCAtOTA4LDIyICs5MDgs
MjIgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luSW5mbz4gQXJndW1lbnRDb2RlcjxQbHVnaW5J
bmZvPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIKIHsKICAgICBQbHVnaW5JbmZvIHBsdWdpbklu
Zm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLm5hbWUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5maWxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBsdWdpbkluZm8uZGVzYykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVn
aW5JbmZvLm1pbWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8uaXNB
cHBsaWNhdGlvblBsdWdpbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZv
LmNsaWVudExvYWRQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5m
by5idW5kbGVJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwbHVnaW5JbmZvLnZlcnNpb25TdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBy
ZXR1cm4gcGx1Z2luSW5mbzsKQEAgLTExMjIsMzEgKzExMjIsMzEgQEAgT3B0aW9uYWw8UmVmPEZv
bnQ+PiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPEZvbnQ6Ok9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2lu
OwogICAgIGlmICghb3JpZ2luLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250OjpJ
bnRlcnN0aXRpYWw+IGlzSW50ZXJzdGl0aWFsOwogICAgIGRlY29kZXIgPj4gaXNJbnRlcnN0aXRp
YWw7CiAgICAgaWYgKCFpc0ludGVyc3RpdGlhbC5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udDo6VmlzaWJpbGl0eT4gdmlzaWJpbGl0eTsKICAgICBkZWNvZGVyID4+IHZpc2liaWxp
dHk7CiAgICAgaWYgKCF2aXNpYmlsaXR5Lmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250OjpPcmllbnRhdGlvbkZhbGxiYWNrPiBpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrOwogICAg
IGRlY29kZXIgPj4gaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjazsKICAgICBpZiAoIWlzVGV4dE9y
aWVudGF0aW9uRmFsbGJhY2suaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gcmVuZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyOwogICAgIGlmICghcmVuZGVyaW5n
UmVyc291Y2VJZGVudGlmaWVyLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBsYXRmb3JtRGF0
YSA9IGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyKTsKICAgICBpZiAoIXBsYXRmb3JtRGF0YS5o
YXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEZvbnQ6OmNyZWF0ZShwbGF0Zm9ybURhdGEudmFs
dWUoKSwgb3JpZ2luLnZhbHVlKCksIGlzSW50ZXJzdGl0aWFsLnZhbHVlKCksIHZpc2liaWxpdHku
dmFsdWUoKSwgaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjay52YWx1ZSgpLCByZW5kZXJpbmdSZXJz
b3VjZUlkZW50aWZpZXIpOwogfQpAQCAtMTMyOCw2MCArMTMyOCw2MCBAQCBPcHRpb25hbDxTZWxl
Y3Rpb25HZW9tZXRyeT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25HZW9tZXRyeT46OmRlY29kZShE
ZWNvZGVyJiBkZQogICAgIFNlbGVjdGlvbkdlb21ldHJ5IHNlbGVjdGlvbkdlb21ldHJ5OwogICAg
IEZsb2F0UXVhZCBxdWFkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocXVhZCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
c2VsZWN0aW9uR2VvbWV0cnkuc2V0UXVhZChxdWFkKTsKIAogICAgIE9wdGlvbmFsPFNlbGVjdGlv
blJlbmRlcmluZ0JlaGF2aW9yPiBiZWhhdmlvcjsKICAgICBkZWNvZGVyID4+IGJlaGF2aW9yOwog
ICAgIGlmICghYmVoYXZpb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0QmVoYXZpb3Io
KmJlaGF2aW9yKTsKIAogICAgIHVpbnQzMl90IGRpcmVjdGlvbjsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRpcmVjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0RGlyZWN0aW9u
KChUZXh0RGlyZWN0aW9uKWRpcmVjdGlvbik7CiAKICAgICBpbnQgaW50VmFsdWU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0
TWluWChpbnRWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGludFZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRNYXhYKGludFZhbHVlKTsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW50VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldE1heFko
aW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
c2VsZWN0aW9uR2VvbWV0cnkuc2V0TGluZU51bWJlcihpbnRWYWx1ZSk7CiAKICAgICBib29sIGJv
b2xWYWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2Vs
ZWN0aW9uR2VvbWV0cnkuc2V0SXNMaW5lQnJlYWsoYm9vbFZhbHVlKTsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRJc0Zp
cnN0T25MaW5lKGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0SXNMYXN0T25MaW5lKGJvb2xWYWx1ZSk7
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9u
R2VvbWV0cnkuc2V0Q29udGFpbnNTdGFydChib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShib29sVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldENvbnRhaW5z
RW5kKGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0SXNIb3Jpem9udGFsKGJvb2xWYWx1ZSk7CiAKICAg
ICByZXR1cm4gc2VsZWN0aW9uR2VvbWV0cnk7CkBAIC0xNTA2LDE1ICsxNTA2LDE1IEBAIE9wdGlv
bmFsPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBBcmd1bWVudENvZGVyPENvbXBvc2l0aW9uVW5kZXJs
aW5lPjo6ZGVjb2RlKERlY29kCiAgICAgQ29tcG9zaXRpb25VbmRlcmxpbmUgdW5kZXJsaW5lOwog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmRlcmxpbmUuc3RhcnRPZmZzZXQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodW5kZXJsaW5lLmVuZE9mZnNldCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh1bmRlcmxpbmUudGhpY2spKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodW5kZXJsaW5lLmNvbXBvc2l0aW9uVW5kZXJsaW5lQ29sb3IpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodW5kZXJsaW5lLmNvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB1bmRlcmxpbmU7
CiB9CkBAIC0xODEwLDEyICsxODEwLDEyIEBAIE9wdGlvbmFsPERpY3RhdGlvbkFsdGVybmF0aXZl
PiBBcmd1bWVudENvZGVyPERpY3RhdGlvbkFsdGVybmF0aXZlPjo6ZGVjb2RlKERlY29kCiAgICAg
T3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOwogICAgIGRlY29kZXIgPj4gcmFuZ2U7CiAg
ICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPERpY3RhdGlvbkNvbnRleHQ+IGNvbnRl
eHQ7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0OwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7eyAqcmFuZ2UsICpjb250ZXh0IH19OwogfQpAQCAtMTkxNSwxNyArMTkxNSwxNyBA
QCBPcHRpb25hbDxHcmFtbWFyRGV0YWlsPiBBcmd1bWVudENvZGVyPEdyYW1tYXJEZXRhaWw+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFu
Z2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGd1ZXNzZXM7CiAgICAgZGVjb2RlciA+PiBndWVzc2VzOwog
ICAgIGlmICghZ3Vlc3NlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckRlc2NyaXB0
aW9uOwogICAgIGRlY29kZXIgPj4gdXNlckRlc2NyaXB0aW9uOwogICAgIGlmICghdXNlckRlc2Ny
aXB0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqcmFuZ2UsIFdURk1vdmUoKmd1ZXNzZXMpLCBX
VEZNb3ZlKCp1c2VyRGVzY3JpcHRpb24pIH0gfTsKIH0KQEAgLTE5NzIsMjIgKzE5NzIsMjIgQEAg
T3B0aW9uYWw8VGV4dENoZWNraW5nUmVzdWx0PiBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1Jl
c3VsdD46OmRlY29kZShEZWNvZGVyJgogewogICAgIFRleHRDaGVja2luZ1R5cGUgdHlwZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPENoYXJh
Y3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8R3JhbW1hckRldGFpbD4+IGRldGFpbHM7CiAgICAg
ZGVjb2RlciA+PiBkZXRhaWxzOwogICAgIGlmICghZGV0YWlscykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFN0cmluZz4gcmVwbGFjZW1lbnQ7CiAgICAgZGVjb2RlciA+PiByZXBsYWNlbWVudDsKICAgICBp
ZiAoIXJlcGxhY2VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyB0eXBlLCAqcmFuZ2UsIFdURk1v
dmUoKmRldGFpbHMpLCBXVEZNb3ZlKCpyZXBsYWNlbWVudCkgfSB9OwogfQpAQCAtMjQwNywyNiAr
MjQwNywyNiBAQCBPcHRpb25hbDxCbG9iUGFydD4gQXJndW1lbnRDb2RlcjxCbG9iUGFydD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEJsb2JQYXJ0OjpUeXBlPiB0eXBl
OwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2gg
KCp0eXBlKSB7CiAgICAgY2FzZSBCbG9iUGFydDo6VHlwZTo6RGF0YTogewogICAgICAgICBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZGF0YTsKICAg
ICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBCbG9iUGFydChXVEZN
b3ZlKCpkYXRhKSk7CiAgICAgfQogICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6OkJsb2I6IHsKICAg
ICAgICAgVVJMIHVybDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBCbG9iUGFydCh1cmwpOwogICAgIH0KICAgICB9CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0
YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYgdGV4
dEluZGljYXRvckRhdGEpCkBAIC0yNDQ5LDM3ICsyNDQ5LDM3IEBAIE9wdGlvbmFsPFRleHRJbmRp
Y2F0b3JEYXRhPiBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZGVjb2RlKERlY29k
ZXImIGRlCiB7CiAgICAgVGV4dEluZGljYXRvckRhdGEgdGV4dEluZGljYXRvckRhdGE7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS5zZWxlY3Rpb25SZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGlj
YXRvckRhdGEudGV4dEJvdW5kaW5nUmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLnRleHRSZWN0c0luQm91bmRp
bmdSZWN0Q29vcmRpbmF0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRh
LmNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dGV4dEluZGljYXRvckRhdGEuZXN0aW1hdGVkQmFja2dyb3VuZENvbG9yKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEucHJlc2VudGF0aW9uVHJhbnNpdGlv
bikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLm9wdGlv
bnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRp
Y2F0b3JEYXRhLmNvbnRlbnRJbWFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1h
Z2UoZGVjb2RlciwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgdGV4dEluZGljYXRv
ckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdGV4
dEluZGljYXRvckRhdGE7CiB9CkBAIC0yNjQzLDEwNiArMjY0MywxMDYgQEAgT3B0aW9uYWw8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Pjo6ZGVjb2RlKEQKICAgICBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gcmVnaXN0cmFibGVE
b21haW47CiAgICAgZGVjb2RlciA+PiByZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIXJlZ2lz
dHJhYmxlRG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MucmVnaXN0cmFibGVEb21haW4gPSBXVEZN
b3ZlKCpyZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBkb3VibGUgbGFzdFNlZW5UaW1lQXNEb3Vi
bGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXN0U2VlblRpbWVBc0RvdWJsZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgc3RhdGlzdGljcy5sYXN0U2VlbiA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhsYXN0U2Vl
blRpbWVBc0RvdWJsZSk7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lQXNEb3VibGU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBzdGF0aXN0aWNzLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lQXNEb3VibGUpOwog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmdyYW5kZmF0aGVyZWQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gU3RvcmFnZSBhY2Nlc3MKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPj4gc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGRlY29kZXIg
Pj4gc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGlmICghc3RvcmFnZUFj
Y2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3Muc3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgqc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJh
bWVEb21haW5zKTsKIAogICAgIC8vIFRvcCBmcmFtZSBzdGF0cwogICAgIE9wdGlvbmFsPEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+PiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGRl
Y29kZXIgPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBpZiAoIXRvcEZyYW1lVW5p
cXVlUmVkaXJlY3RzVG8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvID0gV1RGTW92ZSgqdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CiAKICAgICBPcHRpb25h
bDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
OwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGlmICgh
dG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9tKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNGcm9tID0gV1RGTW92ZSgqdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNGcm9t
KTsKIAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiB0b3BGcmFtZUxv
YWRlZFRoaXJkUGFydHlTY3JpcHRzOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVMb2FkZWRUaGly
ZFBhcnR5U2NyaXB0czsKICAgICBpZiAoIXRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgc3RhdGlzdGljcy50b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzID0gV1RG
TW92ZSgqdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyk7CiAKICAgICAvLyBTdWJmcmFt
ZSBzdGF0cwogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJmcmFt
ZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGRlY29kZXIgPj4gc3ViZnJhbWVVbmRlclRvcEZy
YW1lRG9tYWluczsKICAgICBpZiAoIXN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgqc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwog
ICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zOwogICAgIGRlY29kZXIgPj4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
RG9tYWluczsKICAgICBpZiAoIXN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zID0gV1RGTW92ZSgq
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBk
ZWNvZGVyID4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgaWYgKCFzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyA9IFdURk1vdmUoKnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOwog
CiAgICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbTsKICAgICBkZWNvZGVyID4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzRnJvbTsKICAgICBpZiAoIXN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9IFdURk1vdmUoKnN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSk7CiAKICAgICAvLyBQcmV2YWxlbnQgUmVzb3Vy
Y2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJj
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNWZXJ5UHJldmFs
ZW50UmVzb3VyY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGlj
cy5kYXRhUmVjb3Jkc1JlbW92ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogI2lmIEVOQUJMRShXRUJfQVBJX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmZvbnRzRmFpbGVkVG9M
b2FkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuZm9udHNT
dWNjZXNzZnVsbHlMb2FkZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy50b3BGcmFtZVJlZ2lzdHJhYmxlRG9tYWluc1doaWNoQWNjZXNzZWRXZWJBUElzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuY2FudmFzQWN0aXZp
dHlSZWNvcmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5u
YXZpZ2F0b3JGdW5jdGlvbnNBY2Nlc3NlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdGF0aXN0aWNzLnNjcmVlbkZ1bmN0aW9uc0FjY2Vzc2VkKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAg
ICAgcmV0dXJuIHN0YXRpc3RpY3M7CkBAIC0yODc3LDEyICsyODc3LDEyIEBAIE9wdGlvbmFsPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6
ZGVjb2RlKERlY29kCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBkaXNwbGF5TmFtZTsKICAgICBkZWNv
ZGVyID4+IGRpc3BsYXlOYW1lOwogICAgIGlmICghZGlzcGxheU5hbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+
PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGlzcGxheU5hbWUpLCBXVEZNb3ZlKCp0eXBlKSB9fTsKIH0KQEAgLTI5MTcsNyArMjkxNyw3IEBA
IE9wdGlvbmFsPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj46OmRlY29kZShECiB7CiAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBv
cmlnaW47CiB9CiAKQEAgLTI5MzksMzIgKzI5MzksMzIgQEAgT3B0aW9uYWw8Rm9udEF0dHJpYnV0
ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5mb250U2hhZG93KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmhhc1N0cmlrZVRocm91Z2gpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLnRleHRMaXN0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuaG9yaXpvbnRhbEFsaWdubWVudCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBi
b29sIGhhc1BsYXRmb3JtRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1BsYXRmb3Jt
RGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSkKICAgICAgICAgcmV0dXJuIGRlY29k
ZVBsYXRmb3JtRGF0YShkZWNvZGVyLCBhdHRyaWJ1dGVzKTsKIApAQCAtMjk4MiwxNSArMjk4Miwx
NSBAQCBPcHRpb25hbDxTZXJpYWxpemVkQXR0YWNobWVudERhdGE+IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYQogewogICAgIFN0cmluZyBpZGVudGlmaWVyOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgbWlt
ZVR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1lVHlwZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHt7IFdURk1vdmUoaWRlbnRpZmllciksIFdURk1vdmUobWltZVR5cGUpLCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpIH19
OwogfQpAQCAtMzAxMiwxMSArMzAxMiwxMSBAQCBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmbwogewog
ICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUGxh
dGZvcm1EYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVW
YWx1ZTo6UGxhdGZvcm1UeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCiAgICAgICAgIHJldHVybiBkZWNvZGVQbGF0
Zm9ybURhdGEoZGVjb2RlciwgdHlwZSk7CkBAIC0zMDM1LDcgKzMwMzUsNyBAQCBPcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlYwogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGJ1ZmZlcjsKIH0KQEAgLTMwNDksNyArMzA0OSw3IEBAIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZm
ZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERl
CiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hh
cmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikgfHwgIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBi
dWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KQEAgLTMwNzgsMTAgKzMwNzgsMTAgQEAgc3RhdGlj
IE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFy
ZWFibGVSZXNvdXJjZUhhbmQKIHsKICAgICBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIGhhbmRs
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkgfHwgaGFuZGxlLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogICAg
IGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBXZWJDb3JlOjpTY3JpcHRCdWZmZXIgeyBXVEZN
b3ZlKGJ1ZmZlcikgfTsKIH0KICNlbmRpZgpAQCAtMzEwNiwxNCArMzEwNiwxNCBAQCBPcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVm
ZmVyPjo6ZGVjb2RlKERlYwogICAgIE9wdGlvbmFsPGJvb2w+IGlzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGU7CiAgICAgZGVjb2RlciA+PiBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwogICAgIGlm
ICghaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKmlzU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUpCiAgICAgICAgIHJldHVybiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlKGRlY29kZXIpOwogI2VuZGlmCiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpTY3JpcHRCdWZmZXIgeyBXVEZNb3ZlKGJ1ZmZl
cikgfTsKIH0KQEAgLTMxMzEsMTMgKzMxMzEsMTMgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW4K
IHsKICAgICBXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2VUeXBlIHR5cGU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1ZmZlcikgfHwgIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9u
OjpNZXNzYWdlPih7IHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0pOworICAgIHJldHVy
biBzdGQ6Om1ha2Vfb3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
Pih7IHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpIH0pOwogfQogI2VuZGlmIC8vIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiAKQEAgLTMxNjYsMzQgKzMxNjYsMzQgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkdyYXBoaWNzQ28KIHsKICAgICBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0cmlidXRl
czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYWxwaGEpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5kZXB0aCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLnN0ZW5jaWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0cmlidXRlcy5hbnRpYWxpYXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmli
dXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0
cmlidXRlcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMucG93ZXJQcmVmZXJlbmNlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc2hhcmVSZXNvdXJjZXMpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy53ZWJHTFZlcnNpb24pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ub0V4dGVuc2lvbnMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5kZXZpY2VQaXhlbFJhdGlvKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaW5pdGlhbFBvd2VyUHJlZmVyZW5jZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgRU5B
QkxFKFdFQlhSKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy54ckNvbXBhdGli
bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CkBAIC0zMjE1LDExICsz
MjE1LDExIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZv
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzCiB7CiAgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0w6OkFjdGl2ZUluZm8gYWN0aXZlSW5mbzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGFjdGl2ZUluZm8ubmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3RpdmVJ
bmZvLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5zaXplKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gYWN0aXZlSW5mbzsKIH0KIApAQCAtMzIzNywxMiArMzIzNywxMiBAQCBP
cHRpb25hbDxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvPiBBcmd1bWVudENvZGVyPElt
YWdlRXh0cmFjdGlvbkRhdGFEZXRlYwogewogICAgIEltYWdlRXh0cmFjdGlvbkRhdGFEZXRlY3Rv
ckluZm8gcmVzdWx0OwogICAgIGlmICghZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHJlc3Vs
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RmxvYXRRdWFkPj4gbm9ybWFsaXplZFF1YWRz
OwogICAgIGRlY29kZXIgPj4gbm9ybWFsaXplZFF1YWRzOwogICAgIGlmICghbm9ybWFsaXplZFF1
YWRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmVzdWx0Lm5vcm1hbGl6ZWRRdWFkcyA9IFdURk1vdmUoKm5vcm1hbGl6
ZWRRdWFkcyk7CiAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZmIyYTZmYjkx
NGM3Zjk2ZGNjOTM3NDM3YTAyNDgzOTk5N2I1NzJiNS4uYWI4NjliNDEwNzdiMmRiYTI4MWQ0MmMx
NDYxZDllZTNkOWFlODgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE5MiwxNjMgKzE5MiwxNjMgQEAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2QKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld1NpemUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hY3Rpdml0eVN0YXRlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc3RvcmUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5kcmF3aW5nQXJlYVR5cGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPERy
YXdpbmdBcmVhSWRlbnRpZmllcj4gZHJhd2luZ0FyZWFJZGVudGlmaWVyOwogICAgIGRlY29kZXIg
Pj4gZHJhd2luZ0FyZWFJZGVudGlmaWVyOwogICAgIGlmICghZHJhd2luZ0FyZWFJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFJZGVudGlmaWVyID0gKmRyYXdpbmdBcmVh
SWRlbnRpZmllcjsKICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdl
UHJveHlJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gd2ViUGFnZVByb3h5SWRlbnRpZmllcjsK
ICAgICBpZiAoIXdlYlBhZ2VQcm94eUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy53ZWJQ
YWdlUHJveHlJZGVudGlmaWVyID0gV1RGTW92ZSgqd2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAg
ICAgT3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gcGFnZUdyb3VwRGF0YTsKICAgICBkZWNvZGVy
ID4+IHBhZ2VHcm91cERhdGE7CiAgICAgaWYgKCFwYWdlR3JvdXBEYXRhKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMucGFnZUdyb3VwRGF0YSA9IFdURk1vdmUoKnBhZ2VHcm91cERhdGEpOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pc0VkaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMudW5kZXJsYXlDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnVzZUZpeGVkTGF5b3V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuZml4ZWRMYXlvdXRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudmlld0V4cG9zZWRSZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xs
ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uTW9k
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5w
YWdlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZ2FwQmV0
d2VlblBhZ2VzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5h
dGlvbkxpbmVHcmlkRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2Vu
dDsKICAgICBkZWNvZGVyID4+IHVzZXJBZ2VudDsKICAgICBpZiAoIXVzZXJBZ2VudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IFdURk1vdmUoKnVzZXJBZ2VudCk7CiAKICAgICBPcHRp
b25hbDxib29sPiBpdGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0OwogICAgIGRlY29k
ZXIgPj4gaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdDsKICAgICBpZiAoIWl0ZW1T
dGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pdGVtU3Rh
dGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0ID0gKml0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQ
SVJlcXVlc3Q7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
Pj4gaXRlbVN0YXRlczsKICAgICBkZWNvZGVyID4+IGl0ZW1TdGF0ZXM7CiAgICAgaWYgKCFpdGVt
U3RhdGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuaXRlbVN0YXRlcyA9IFdURk1vdmUoKml0ZW1TdGF0
ZXMpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFi
bGVJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmNhblJ1bk1vZGFsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
ZGV2aWNlU2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy52aWV3U2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy50ZXh0Wm9vbUZhY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnBhZ2Vab29tRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dG9wQ29udGVudEluc2V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
bWVkaWFWb2x1bWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TXV0ZWRTdGF0ZUZsYWdzPiBtdXRlZFN0YXRlRmxhZ3M7CiAgICAgZGVjb2RlciA+PiBtdXRlZFN0
YXRlRmxhZ3M7CiAgICAgaWYgKCFtdXRlZFN0YXRlRmxhZ3MpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5t
dXRlZCA9ICptdXRlZFN0YXRlRmxhZ3M7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMubWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLm1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1pbmltdW1TaXplRm9yQXV0b0xheW91dCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNpemVUb0NvbnRlbnRBdXRvU2l6ZU1h
eGltdW1TaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYXV0b1Np
emluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVoYXZpb3IpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7
CiAgICAgZGVjb2RlciA+PiBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAgICAgaWYgKCFzY3JvbGxi
YXJPdmVybGF5U3R5bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUg
PSBXVEZNb3ZlKCpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5taW1lVHlwZXNXaXRoQ3VzdG9tQ29udGVudFBy
b3ZpZGVycykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbnRyb2xs
ZWRCeUF1dG9tYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5p
c1Byb2Nlc3NTd2FwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNl
RGFya0FwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51
c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBo
YXNSZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgZGVjb2RlciA+PiBoYXNSZXNvdXJjZUxvYWRDbGll
bnQ7CiAgICAgaWYgKCFoYXNSZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5o
YXNSZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKCpoYXNSZXNvdXJjZUxvYWRDbGllbnQpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4+IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwogICAgIGlm
ICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpj
b2xvclNwYWNlKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVt
QXBwZWFyYW5jZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0
cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmln
dXJhdGlvblZpZXdMYXlvdXRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uTGF5b3V0U2l6ZVNjYWxlRmFjdG9yKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUVmZmVjdGl2ZURldmljZVdpZHRoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld1NpemUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPj4gb3ZlcnJpZGVWaWV3cG9ydEFy
Z3VtZW50czsKICAgICBkZWNvZGVyID4+IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CiAgICAg
aWYgKCFvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMub3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50cyA9IFdURk1vdmUoKm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMp
OwogI2VuZGlmCiAKQEAgLTM1Niw2MSArMzU2LDYxIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+PiBh
dHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2ht
ZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFhdHRhY2htZW50RWxlbWVudEV4
dGVuc2lvbkhhbmRsZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4dGVu
c2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCphdHRhY2htZW50RWxlbWVudEV4dGVuc2lvbkhhbmRsZXMp
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5zY3JlZW5TaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuYXZhaWxhYmxlU2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLm92ZXJyaWRlU2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnRleHRBdXRvc2l6aW5nV2lkdGgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJlZFNpemUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZXZpY2VPcmllbnRhdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmtleWJvYXJkSXNBdHRhY2hlZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblNob3dXaGlsZUxvY2tlZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlzQ2FwdHVyaW5nU2NyZWVuKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92ZWQg
d2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk+IG1lZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVy
ID4+IG1lZGlhRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIW1lZGlhRXh0ZW5zaW9uSGFuZGxl
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKm1l
ZGlhRXh0ZW5zaW9uSGFuZGxlcyk7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheT4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBt
ZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIW1lZGlhSU9LaXRFeHRlbnNpb25I
YW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBX
VEZNb3ZlKCptZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAgICAgLy8gRklYTUUoMjA3NzE2
KTogRW5kIHJlZ2lvbiB0byByZW1vdmUuCiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheT4gZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4g
Z3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZ3B1SU9LaXRFeHRlbnNpb25IYW5k
bGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92
ZSgqZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzKTsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVy
ID4+IGdwdU1hY2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghZ3B1TWFjaEV4dGVuc2lvbkhh
bmRsZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5ncHVNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1v
dmUoKmdwdU1hY2hFeHRlbnNpb25IYW5kbGVzKTsKICNlbmRpZgogCkBAIC00MTgsMTg1ICs0MTgs
MTg1IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVj
b2RlciA+PiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWZvbnRNYWNoRXh0ZW5z
aW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpmb250TWFjaEV4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAogI2lmIEhBVkUoQVBQ
X0FDQ0VOVF9DT0xPUlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFjY2Vu
dENvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaG9zdEZpbGVEZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5u
YXRpdmVXaW5kb3dIYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWls
ZXN0b25lcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8ZG91
YmxlPj4gY3B1TGltaXQ7CiAgICAgZGVjb2RlciA+PiBjcHVMaW1pdDsKICAgICBpZiAoIWNwdUxp
bWl0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY3B1TGltaXQgPSBXVEZNb3ZlKCpjcHVMaW1pdCk7CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB1cmxTY2hlbWVzV2l0aExlZ2Fj
eUN1c3RvbVByb3RvY29sSGFuZGxlcnM7CiAgICAgZGVjb2RlciA+PiB1cmxTY2hlbWVzV2l0aExl
Z2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnM7CiAgICAgaWYgKCF1cmxTY2hlbWVzV2l0aExlZ2Fj
eUN1c3RvbVByb3RvY29sSGFuZGxlcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzV2l0
aExlZ2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnMgPSBXVEZNb3ZlKCp1cmxTY2hlbWVzV2l0aExl
Z2FjeUN1c3RvbVByb3RvY29sSGFuZGxlcnMpOwogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q+PiBhcHBsaWNhdGlvbk1hbmlmZXN0OwogICAgIGRlY29kZXIgPj4gYXBwbGljYXRpb25NYW5p
ZmVzdDsKICAgICBpZiAoIWFwcGxpY2F0aW9uTWFuaWZlc3QpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5h
cHBsaWNhdGlvbk1hbmlmZXN0ID0gV1RGTW92ZSgqYXBwbGljYXRpb25NYW5pZmVzdCk7CiAjZW5k
aWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubmVlZHNGb250QXR0cmlidXRl
cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRl
RmlsdGVyaW5nRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuZW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlc0VuYWJsZWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycz4gdXNlckNvbnRlbnRDb250cm9s
bGVyUGFyYW1ldGVyczsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlclBhcmFt
ZXRlcnM7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycyA9IFdURk1vdmUoKnVz
ZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMpOwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8
V2ViQ29yZTo6Q29sb3I+PiBiYWNrZ3JvdW5kQ29sb3I7CiAgICAgZGVjb2RlciA+PiBiYWNrZ3Jv
dW5kQ29sb3I7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5i
YWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBvbGRQYWdlSUQ7CiAgICAgZGVj
b2RlciA+PiBvbGRQYWdlSUQ7CiAgICAgaWYgKCFvbGRQYWdlSUQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5vbGRQYWdlSUQgPSBXVEZNb3ZlKCpvbGRQYWdlSUQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPFN0cmluZz4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBkZWNvZGVyID4+IGNv
cnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBpZiAoIWNvcnNEaXNhYmxpbmdQYXR0ZXJucykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNh
YmxpbmdQYXR0ZXJucyk7CiAKICAgICBPcHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291cmNlczsK
ICAgICBkZWNvZGVyID4+IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGlmICghbG9hZHNTdWJyZXNv
dXJjZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9ICpsb2Fkc1N1YnJl
c291cmNlczsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4+IGFsbG93
ZWROZXR3b3JrSG9zdHM7CiAgICAgZGVjb2RlciA+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAg
IGlmICghYWxsb3dlZE5ldHdvcmtIb3N0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmFsbG93ZWROZXR3
b3JrSG9zdHMgPSAqYWxsb3dlZE5ldHdvcmtIb3N0czsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHVz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNl
clNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgaWYgKCF1c2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gKnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVu
dGlsTm90aWZpY2F0aW9uOwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCA9ICpjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgZGVjb2RlciA+
PiBwcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgaWYgKCFwcm9jZXNzRGlzcGxheU5hbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUgPSBXVEZNb3ZlKCpwcm9jZXNzRGlzcGxh
eU5hbWUpOwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRD
YXB0dXJlQXVkaW9JblVJUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkQ2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlkZW9JblVJUHJvY2Vzcykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZp
ZGVvSW5HUFVQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJDYW52YXNJbkdQVVByb2Nlc3MpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlckRPTUluR1BV
UHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxk
UGxheU1lZGlhSW5HUFVQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbmRlcldlYkdMSW5HUFVQcm9jZXNzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZVZQOERlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZVZQOURlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnNob3VsZEVuYWJsZVZQOVNXRGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5j
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRoZW1lTmFtZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5odHRwc1VwZ3JhZGVFbmFibGVkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
YWxsb3dzRGVwcmVjYXRlZFN5bmNocm9ub3VzWE1MSHR0cFJlcXVlc3REdXJpbmdVbmxvYWQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAKaW5kZXggMDZkZGJlZjVkNzVhM2FkNjc1ZTExMjJjOGQyMWE5
NDUzMzYxOGQyNi4uYjA5ZjFjMjlhNzIxMDU5NTAzMzcxYzlhZWRjYWEwYTczNWQ0YzU5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTQxLDEyICs0MSwx
MiBAQCBPcHRpb25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlR3JvdXBJRDsKICAgICBkZWNvZGVyID4+IHBh
Z2VHcm91cElEOwogICAgIGlmICghcGFnZUdyb3VwSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgIHJldHVy
biB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgKnBhZ2VHcm91cElEIH19OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKaW5kZXggY2U3NGFiZmY5
MWNjNjljYjA5Mjg0MzQ5MzI0ZmE0ODA4YTYzZmY5MC4uOWQ0NDA2YTQwYTRmYWRkZmIzMGMyZTYw
MTg1ZjI4ZjNhYTMyZjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxh
dGZvcm1Ub3VjaFBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9y
bVRvdWNoUG9pbnQuY3BwCkBAIC02OSwxOSArNjksMTkgQEAgT3B0aW9uYWw8V2ViUGxhdGZvcm1U
b3VjaFBvaW50PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y28KIHsKICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgcmVzdWx0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1faWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1fc3RhdGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fc2NyZWVuUG9z
aXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcG9zaXRpb24pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmFkaXVzKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JvdGF0aW9uQW5nbGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fZm9yY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCmluZGV4IDZmYjdhNWNiMDQ4ZWZhMWUy
YmQ1YmM1YTdhOGEwNjgyNTNhMzJlMGUuLjEzODE2NWEzNTA0NTRhNWUzNjJmN2FiNjkwMDRiMzJl
OGZlMzkzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcApAQCAtODAsMzkg
KzgwLDM5IEBAIE9wdGlvbmFsPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBJdGVtOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFR5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIHRleHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh0ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0RGlyZWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyB0b29sVGlwOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodG9vbFRpcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgYWNjZXNzaWJp
bGl0eVRleHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY2Nlc3NpYmlsaXR5VGV4dCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBib29sIGlzRW5hYmxlZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzRW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBib29sIGlzTGFiZWw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0xh
YmVsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGJvb2wgaXNTZWxlY3RlZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlzU2VsZWN0ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IHR5cGUsIHRleHQsIHRleHREaXJlY3Rp
b24sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQs
IGlzRW5hYmxlZCwgaXNMYWJlbCwgaXNTZWxlY3RlZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IDZmMTI1
Zjk4MmQwY2NlNmUzNzFkNmQ4ZGFiOGRjZTM2ODNjOWY1MTQuLjFkYTVlMzBhMjQzNmU5ZjBmYjVj
MDAzOTAwMjFlOWY0M2UwOGQ3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtODUsNjggKzg1LDY4IEBAIE9wdGlv
bmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVyczo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IHNlc3Npb25J
RDsKICAgICBkZWNvZGVyID4+IHNlc3Npb25JRDsKICAgICBpZiAoIXNlc3Npb25JRCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgZGVjb2RlciA+PiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGlmICghYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlO
YW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lZGlhQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGRlY29kZXIgPj4gbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGlmICghbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBqYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghamF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZTsKICAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAg
aWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8SGFz
aFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uOwogICAgIGRlY29kZXIgPj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAgICAgaWYg
KCFkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxIYXNo
TWFwPFRvcEZyYW1lRG9tYWluLCBTdWJSZXNvdXJjZURvbWFpbj4+IGRvbWFpbnNXaXRoU3RvcmFn
ZUFjY2Vzc1F1aXJrOwogICAgIGRlY29kZXIgPj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVp
cms7CiAgICAgaWYgKCFkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyaykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHsKICAgICAgICAgV1RGTW92
ZSgqc2Vzc2lvbklEKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCmluZGV4IDIyMGI1ZjkwMDkyZWZkNmM5
MzBhMTg5MDNkNTlkOWY5YWZhMWRjN2EuLjY4MGI2MmYyMTY3MDkwZDA4MzBkODU5YTZkZWZjNmM5
NzE3MjhkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50
Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcApAQCAtNDIsMTcgKzQyLDE3IEBAIE9wdGlv
bmFsPFdlYlVzZXJTY3JpcHREYXRhPiBXZWJVc2VyU2NyaXB0RGF0YTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxkSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpVc2VyU2NyaXB0PiB1c2VyU2NyaXB0OwogICAg
IGRlY29kZXIgPj4gdXNlclNjcmlwdDsKICAgICBpZiAoIXVzZXJTY3JpcHQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp3b3JsZElkZW50aWZp
ZXIpLCBXVEZNb3ZlKCp1c2VyU2NyaXB0KSB9fTsKIH0KQEAgLTY5LDE2ICs2OSwxNiBAQCBPcHRp
b25hbDxXZWJVc2VyU3R5bGVTaGVldERhdGE+IFdlYlVzZXJTdHlsZVNoZWV0RGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjbwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8Q29udGVudFdvcmxkSWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gd29ybGRJZGVudGlmaWVyOwogICAgIGlmICghd29ybGRJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlclN0eWxlU2hlZXQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwg
V1RGTW92ZSh1c2VyU3R5bGVTaGVldCkgfX07CiB9CkBAIC05NiwxNyArOTYsMTcgQEAgT3B0aW9u
YWw8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRh
dGE6OmRlY29kZShJUEM6OkQKICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIE9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxkSWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1l
OwogICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVy
KSwgV1RGTW92ZSgqd29ybGRJZGVudGlmaWVyKSwgV1RGTW92ZSgqbmFtZSkgfX07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCmluZGV4IGI1
MGY5OTkzNmRjODAyNjEwODVhOWMwN2IyY2U0OGZhNzMzZTkzN2QuLmM0ZjgzZWMyNjlmN2Y3YzFj
ZjI2MTEyODk2Yzg0Yjc5ZGRlMjE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBXZWJXaGVl
bEV2ZW50Q29hbGVzY2VyOjpzaG91bGREaXNwYXRjaEV2ZW50Tm93KGNvbnN0IFdlYldoZWVsRXZl
bnQmIGV2ZW50KQogT3B0aW9uYWw8V2ViV2hlZWxFdmVudD4gV2ViV2hlZWxFdmVudENvYWxlc2Nl
cjo6bmV4dEV2ZW50VG9EaXNwYXRjaCgpCiB7CiAgICAgaWYgKG1fd2hlZWxFdmVudFF1ZXVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY29hbGVzY2VkRXZlbnQgPSBtX3doZWVsRXZlbnRRdWV1
ZS50YWtlRmlyc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGEuY3BwCmluZGV4IDdjZTRlYjM0YjNlNTVhZjFlYWQ0NzA5ZGJkMmE5YmNiNWNl
MGRlYWIuLjhkZmFhM2RjOTA5MDRhMmJjMWYxYWIzYTIyMTc0YmQxYjUwZTllODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKQEAgLTQ5
LDE0ICs0OSwxNCBAQCBhdXRvIFdlYnNpdGVEYXRhOjpFbnRyeTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8RW50cnk+CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0eU9yaWdpbkRhdGE7CiAgICAgZGVjb2RlciA+PiBzZWN1
cml0eU9yaWdpbkRhdGE7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbkRhdGEpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0Lm9yaWdpbiA9IFdURk1vdmUoKnNlY3VyaXR5T3JpZ2luRGF0YSk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcAppbmRleCBmMDU5
MmQ2YjZlNjY4YjZiNzdlMzJjYjVlZjIyM2VjYmZhOTRlYWE4Li5jYjJlNjcwZjE1NzQ1NTEzMWQz
ZWRhNTJlM2JjMzNmODRiMTgwMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCkBAIC02MSw4NyArNjEsODcgQEAgT3B0aW9u
YWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWMKICAgICBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgIGlmICghbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gV1RGTW92ZSgqbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzKTsKIAogICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
dWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1aVByb2Nl
c3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICAgICBpZiAoIXVpUHJvY2Vzc0Nvb2tpZVN0b3Jh
Z2VJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlk
ZW50aWZpZXIgPSBXVEZNb3ZlKCp1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CiAK
ICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNvb2tpZVN0b3JhZ2VQYXRo
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gY29va2llU3RvcmFnZVBhdGhFeHRlbnNp
b25IYW5kbGU7CiAgICAgaWYgKCFjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZSgqY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBpbmRleGVkRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBpbmRleGVkRGF0
YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCppbmRleGVk
RGF0YWJhc2VEaXJlY3RvcnkpOwogICAgIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlm
ICghaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgq
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBPcHRpb25hbDxTdHJpbmc+IHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGlyZWN0b3J5OwogICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkgPSBX
VEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KTsKICAgICAKICAgICBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0
aW9uRGVsYXlFbmFibGVkOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvbkRlbGF5RW5hYmxlZDsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCk7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPFN0cmluZz4g
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0
b3J5OwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsK
IAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbG9jYWxTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbG9jYWxTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZSgqbG9jYWxTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGRl
Y29kZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghY2FjaGVTdG9yYWdlRGly
ZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gV1RGTW92
ZSgqY2FjaGVTdG9yYWdlRGlyZWN0b3J5KTsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICgh
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
Y2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqY2FjaGVTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
ZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVjb2RlciA+PiBwZXJPcmlnaW5TdG9yYWdlUXVv
dGE7CiAgICAgaWYgKCFwZXJPcmlnaW5TdG9yYWdlUXVvdGEpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5w
ZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAqcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogCiAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7CiAgICAgZGVj
b2RlciA+PiBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGlmICghcGVyVGhp
cmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnBlclRoaXJkUGFy
dHlPcmlnaW5TdG9yYWdlUXVvdGEgPSAqcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsK
ICAgICAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5jcHAKaW5kZXggZDQ3NzUzYjM5MDRkOGIyOWNlZTJjYWE1YmVkOGYy
MWYxMGZhNDBkMy4uNGE1ZmUxNGYyZWE0Zjg1OGZkYTJjN2RlYTljZGY3OGJmMWEzYWVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKQEAgLTYxLDg5
ICs2MSw4OSBAQCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNE
YXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPGJvb2w+IGNv
bnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50QmxvY2tlcnNFbmFi
bGVkOwogICAgIGlmICghY29udGVudEJsb2NrZXJzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxXZWJzaXRlQXV0b3BsYXlQb2xpY3k+IGF1dG9wbGF5UG9saWN5OwogICAgIGRlY29kZXIg
Pj4gYXV0b3BsYXlQb2xpY3k7CiAgICAgaWYgKCFhdXRvcGxheVBvbGljeSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZT4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NTdGF0ZTsKICAgICBkZWNvZGVyID4+IGRldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzU3RhdGU7CiAgICAgaWYgKCFkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0
YXRlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAgICAgCiAgICAgT3B0aW9uYWw8T3B0aW9uU2V0PFdlYnNpdGVBdXRv
cGxheVF1aXJrPj4gYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwogICAgIGRlY29kZXIgPj4gYWxsb3dl
ZEF1dG9wbGF5UXVpcmtzOwogICAgIGlmICghYWxsb3dlZEF1dG9wbGF5UXVpcmtzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDdXN0b21IZWFkZXJGaWVsZHM+PiBjdXN0
b21IZWFkZXJGaWVsZHM7CiAgICAgZGVjb2RlciA+PiBjdXN0b21IZWFkZXJGaWVsZHM7CiAgICAg
aWYgKCFjdXN0b21IZWFkZXJGaWVsZHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJzaXRlUG9wVXBQ
b2xpY3k+IHBvcFVwUG9saWN5OwogICAgIGRlY29kZXIgPj4gcG9wVXBQb2xpY3k7CiAgICAgaWYg
KCFwb3BVcFBvbGljeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50
OwogICAgIGRlY29kZXIgPj4gY3VzdG9tVXNlckFnZW50OwogICAgIGlmICghY3VzdG9tVXNlckFn
ZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVj
aWZpY1F1aXJrczsKICAgICBkZWNvZGVyID4+IGN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzOwogICAgIGlmICghY3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3MpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOwogICAgIGRl
Y29kZXIgPj4gY3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CiAgICAgaWYgKCFjdXN0b21OYXZpZ2F0
b3JQbGF0Zm9ybSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYnNpdGVNZXRhVmlld3BvcnRQb2xpY3k+
IG1ldGFWaWV3cG9ydFBvbGljeTsKICAgICBkZWNvZGVyID4+IG1ldGFWaWV3cG9ydFBvbGljeTsK
ICAgICBpZiAoIW1ldGFWaWV3cG9ydFBvbGljeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYnNpdGVN
ZWRpYVNvdXJjZVBvbGljeT4gbWVkaWFTb3VyY2VQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtZWRp
YVNvdXJjZVBvbGljeTsKICAgICBpZiAoIW1lZGlhU291cmNlUG9saWN5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPFdlYnNpdGVTaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5PiBzaW11
bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5OwogICAgIGRlY29kZXIgPj4gc2ltdWxhdGVk
TW91c2VFdmVudHNEaXNwYXRjaFBvbGljeTsKICAgICBpZiAoIXNpbXVsYXRlZE1vdXNlRXZlbnRz
RGlzcGF0Y2hQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJzaXRlTGVnYWN5T3ZlcmZsb3dT
Y3JvbGxpbmdUb3VjaFBvbGljeT4gbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeTsK
ICAgICBkZWNvZGVyID4+IGxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k7CiAgICAg
aWYgKCFsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gYWxsb3dDb250ZW50Q2hhbmdlT2JzZXJ2ZXJRdWlyazsKICAgICBkZWNvZGVyID4+
IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcms7CiAgICAgaWYgKCFhbGxvd0NvbnRlbnRD
aGFuZ2VPYnNlcnZlclF1aXJrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QWxsb3dzQ29u
dGVudEphdmFTY3JpcHQ+IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OwogICAgIGRlY29kZXIgPj4g
YWxsb3dzQ29udGVudEphdmFTY3JpcHQ7CiAgICAgaWYgKCFhbGxvd3NDb250ZW50SmF2YVNjcmlw
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6Ok1vdXNlRXZlbnRQb2xpY3k+IG1vdXNlRXZl
bnRQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtb3VzZUV2ZW50UG9saWN5OwogICAgIGlmICghbW91
c2VFdmVudFBvbGljeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlkZW1wb3RlbnRNb2RlQXV0
b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBkZWNvZGVyID4+IGlkZW1wb3RlbnRN
b2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlczsKICAgICBpZiAoIWlkZW1wb3RlbnRN
b2RlQXV0b3NpemluZ09ubHlIb25vcnNQZXJjZW50YWdlcykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsK
ICAgICAgICAgV1RGTW92ZSgqY29udGVudEJsb2NrZXJzRW5hYmxlZCksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcApp
bmRleCA1N2I2Mzk1MzJkYTExYTdkMWU1ZTY4ZmM0YzEzMzY0YTM4MmM4Y2I2Li5hZTljOTY5ZWY4
OWI0NWIxZWVjNzM2MjUzZTBhZmU0MzkyNGQ3YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAKQEAgLTE5NSwx
OCArMTk1LDE4IEBAIE9wdGlvbmFsPEN1cmxQcm94eVNldHRpbmdzPiBBcmd1bWVudENvZGVyPEN1
cmxQcm94eVNldHRpbmdzPjo6ZGVjb2RlKERlY29kZXImIGRlCiB7CiAgICAgQ3VybFByb3h5U2V0
dGluZ3M6Ok1vZGUgbW9kZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vZGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKG1vZGUgIT0gQ3VybFByb3h5U2V0dGluZ3M6Ok1vZGU6OkN1c3RvbSkKICAgICAgICAg
cmV0dXJuIEN1cmxQcm94eVNldHRpbmdzIHsgbW9kZSB9OwogCiAgICAgVVJMIHVybDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgaWdub3JlSG9zdHM7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpZ25vcmVIb3N0cykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ3Vy
bFByb3h5U2V0dGluZ3MgeyBXVEZNb3ZlKHVybCksIFdURk1vdmUoaWdub3JlSG9zdHMpIH07CiB9
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJgogT3B0aW9uYWw8U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2Rlciwg
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxh
dGZvcm1UeXBlKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKaW5kZXggMzA4
YTc1YWMxMzI3OWE5ZjI3MTgwYTY2MzU1ZGJmOWUyZWZkYWNlMy4uMThmZWJiOGIzODJmNjY0Njc3
MjJkNjNmODI2ZTBmZDVkMzFjMjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Z2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2ds
aWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcApAQCAtNDgsMTcgKzQ4LDE3IEBAIE9wdGlvbmFsPEdS
ZWZQdHI8R1ZhcmlhbnQ+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1ZhcmlhbnQ+Pjo6ZGVjb2Rl
KERlY29kZXImIGRlCiB7CiAgICAgQ1N0cmluZyB2YXJpYW50VHlwZVN0cmluZzsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHZhcmlhbnRUeXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh2YXJpYW50
VHlwZVN0cmluZy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEdSZWZQdHI8R1ZhcmlhbnQ+KCk7
CiAKICAgICBpZiAoIWdfdmFyaWFudF90eXBlX3N0cmluZ19pc192YWxpZCh2YXJpYW50VHlwZVN0
cmluZy5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBHVW5pcXVlUHRyPEdWYXJpYW50VHlwZT4gdmFy
aWFudFR5cGUoZ192YXJpYW50X3R5cGVfbmV3KHZhcmlhbnRUeXBlU3RyaW5nLmRhdGEoKSkpOwog
ICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ldyhkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBPcHRpb25hbDxHUmVmUHRy
PEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+
Pjo6ZGVjbwogewogICAgIHVpbnQzMl90IGNoYWluTGVuZ3RoOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2hhaW5MZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjaGFpbkxlbmd0aCkKICAgICAgICAg
cmV0dXJuIEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPigpOwpAQCAtMTExLDcgKzExMSw3IEBAIE9w
dGlvbmFsPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdU
bHNDZXJ0aWZpY2F0ZT4+OjpkZWNvCiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGNoYWlu
TGVuZ3RoOyBpKyspIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGNlcnRpZmljYXRlRGF0
YVJlZmVyZW5jZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZURhdGFS
ZWZlcmVuY2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0
aWZpY2F0ZURhdGEgPSBhZG9wdEdSZWYoZ19ieXRlX2FycmF5X3NpemVkX25ldyhjZXJ0aWZpY2F0
ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKSk7CiAgICAgICAgIGdfYnl0ZV9hcnJheV9hcHBlbmQoY2Vy
dGlmaWNhdGVEYXRhLmdldCgpLCBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2UuZGF0YSgpLCBjZXJ0
aWZpY2F0ZURhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCmluZGV4IDEyYzgzYmY2NzcxZjE3YzM0MzMxZDUyMGU4
OTlhM2NhMDIwMDJhNjguLjQxMGY4ZmEzOGM4ZjBhMzc5M2VkZGY0MDFjMWU1OGMwZWQxY2JiYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcApA
QCAtMTEzLDkgKzExMyw5IEBAIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IElucHV0TWV0aG9k
U3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW5wdXRNZXRob2RT
dGF0ZSBzdGF0ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLnB1cnBvc2UpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGUuaGludHMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzdGF0
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2Fn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAppbmRleCBm
MWU4YjE0NTEzNzlkZmUwODI5YzgxMWM1NzEwYWNhYTU2OTI4MzNlLi5hNzM5ZTgyNmJlNDg5Mjcz
ZWRmYTlhMjEwNzZhMDU1NmY5YTM2NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9nbGliL1VzZXJNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL1Vz
ZXJNZXNzYWdlLmNwcApAQCAtNjAsMTkgKzYwLDE5IEBAIE9wdGlvbmFsPFVzZXJNZXNzYWdlPiBV
c2VyTWVzc2FnZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBVc2VyTWVz
c2FnZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6TnVsbCkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHJlc3VsdC50eXBlID09IFR5cGU6OkVycm9yKSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90
PiBlcnJvckNvZGU7CiAgICAgICAgIGRlY29kZXIgPj4gZXJyb3JDb2RlOwogICAgICAgICBpZiAo
IWVycm9yQ29kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJlc3VsdC5lcnJvckNvZGUgPSBlcnJv
ckNvZGUudmFsdWUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgxLDE4ICs4MSwxOCBA
QCBPcHRpb25hbDxVc2VyTWVzc2FnZT4gVXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IHBhcmFtZXRlcnM7CiAg
ICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQucGFyYW1ldGVycyA9IFdURk1vdmUoKnBhcmFtZXRlcnMpOwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPElQQzo6QXR0YWNobWVudD4+IGF0dGFjaG1lbnRzOwogICAgIGRlY29kZXIgPj4gYXR0
YWNobWVudHM7CiAgICAgaWYgKCFhdHRhY2htZW50cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWF0dGFjaG1lbnRz
LT5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVzdWx0LmZpbGVEZXNjcmlwdG9ycyA9IGFkb3B0R1Jl
ZihnX3VuaXhfZmRfbGlzdF9uZXcoKSk7CiAgICAgICAgIGZvciAoYXV0byYgYXR0YWNobWVudCA6
ICphdHRhY2htZW50cykgewogICAgICAgICAgICAgaWYgKGdfdW5peF9mZF9saXN0X2FwcGVuZChy
ZXN1bHQuZmlsZURlc2NyaXB0b3JzLmdldCgpLCBhdHRhY2htZW50LnJlbGVhc2VGaWxlRGVzY3Jp
cHRvcigpLCBudWxscHRyKSA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3Bw
CmluZGV4IDk4NzBlZmZkYTU4NTEyYTkwMDM3ODdiMWFlNmI1NTU1OWIzMmZhOGMuLjczNTI4ODlh
ZjNkZDgzNmIwZmMwOTg1NWIzZTQ2Y2NhYzFjMTJjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMTA3LDY3ICsxMDcsNjcgQEAgT3B0
aW9uYWw8U2VsZWN0aW9uRGF0YT4gQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25EYXRhPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAKICAgICBib29sIGhhc1RleHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNUZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzVGV4dCkgewogICAgICAgICBTdHJpbmcg
dGV4dDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0KSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBzZWxlY3Rpb24uc2V0VGV4dCh0ZXh0KTsKICAgICB9CiAKICAgICBib29sIGhhc01hcmt1
cDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc01hcmt1cCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc01h
cmt1cCkgewogICAgICAgICBTdHJpbmcgbWFya3VwOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1hcmt1cCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldE1hcmt1cChtYXJr
dXApOwogICAgIH0KIAogICAgIGJvb2wgaGFzVVJMOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFzVVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzVVJMKSB7CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rp
b24uc2V0VVJMKFVSTChVUkwoKSwgdXJsKSwgU3RyaW5nKCkpOwogICAgIH0KIAogICAgIGJvb2wg
aGFzVVJJTGlzdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1VSSUxpc3QpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmIChoYXNVUklMaXN0KSB7CiAgICAgICAgIFN0cmluZyB1cmlMaXN0OwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHVyaUxpc3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5z
ZXRVUklMaXN0KHVyaUxpc3QpOwogICAgIH0KIAogICAgIGJvb2wgaGFzSW1hZ2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNJbWFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0ltYWdlKSB7CiAgICAg
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7CiAgICAgICAgIGlmICghZGVjb2RlSW1hZ2UoZGVjb2Rl
ciwgaW1hZ2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRJbWFnZShpbWFnZS5n
ZXQoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNDdXN0b21EYXRhOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzQ3VzdG9tRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc0N1c3RvbURhdGEpIHsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldEN1c3RvbURh
dGEoUmVmPFNoYXJlZEJ1ZmZlcj4oKmJ1ZmZlcikpOwogICAgIH0KIAogICAgIGJvb2wgY2FuU21h
cnRSZXBsYWNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2FuU21hcnRSZXBsYWNlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBzZWxlY3Rpb24uc2V0Q2FuU21hcnRSZXBsYWNlKGNhblNtYXJ0UmVwbGFjZSk7CiAKICAg
ICByZXR1cm4gc2VsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCmluZGV4IGM3NmE5ZTFmN2RhZTdhMzFjNDA0
OGQ4ZjAwZDg0OWExOGViYWZmMjMuLjgzY2I0MWE0YjBiZmNmOTIwNmViYzIyNzRhNTEzYTNlMGE1
MTVkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXli
b2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudEd0ay5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KEdka0V2
ZW50KiBldmVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8U3RyaW5nPiYmIGNvbW1hbmRz
KQotICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJv
YXJkRXZlbnQoZXZlbnQsIHRleHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
V1RGTW92ZShjb21tYW5kcykpKQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIHRleHQsIGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShjb21tYW5kcykpKQogICAgICwgbV9uYXRpdmVFdmVu
dChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CiB9CkBAIC00NSw3ICs0NSw3IEBAIE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBPcHRpb25hbDxWZWN0CiB9CiAKIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQoVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIGNvZGUsIGNvbnN0IFN0cmluZyYga2V5SWRlbnRpZmllciwgaW50
IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW50IG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBWZWN0b3I8
U3RyaW5nPiYmIGNvbW1hbmRzLCBib29sIGlzS2V5cGFkLCBPcHRpb25TZXQ8TW9kaWZpZXI+IG1v
ZGlmaWVycykKLSAgICA6IFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwga2V5LCBjb2RlLCBr
ZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2ZVZpcnR1YWxLZXlDb2Rl
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY29tbWFuZHMpLCBp
c0tleXBhZCwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpCisgICAgOiBXZWJLZXlib2FyZEV2
ZW50KHR5cGUsIHRleHQsIGtleSwgY29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxL
ZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBXVEZNb3ZlKGNvbW1hbmRzKSwgaXNLZXlwYWQsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0
aXZlV2ViTW91c2VFdmVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZl
V2ViTW91c2VFdmVudEd0ay5jcHAKaW5kZXggNDZlZjNiMzcxZjUyYzEwNTQ1MWQ5MTdmZjhmZDM4
NGRiNTE4YjM5Zi4uOGRiZTdhZDcxYzNkZDBmOWJjYWExYzc0YzE0YjFjYWVhNGEzMGY5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcApAQCAtNDksNyArNDksNyBAQCBOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3Vz
ZUV2ZW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbikKIH0KIAogTmF0aXZlV2Vi
TW91c2VFdmVudDo6TmF0aXZlV2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1dHRvbiBidXR0b24s
IHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlv
biwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBpbnQgY2xpY2tDb3Vu
dCwgT3B0aW9uU2V0PE1vZGlmaWVyPiBtb2RpZmllcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0
U2l6ZT4gZGVsdGEsIFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFN0cmluZyYg
cG9pbnRlclR5cGUpCi0gICAgOiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywg
cG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkZWx0YS52YWx1ZU9yKFdlYkNvcmU6OkZsb2F0U2l6
ZSgpKS53aWR0aCgpLCBkZWx0YS52YWx1ZU9yKFdlYkNvcmU6OkZsb2F0U2l6ZSgpKS5oZWlnaHQo
KSwgMCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCksIDAsIE5vVGFwLCBw
b2ludGVySWQsIHBvaW50ZXJUeXBlKQorICAgIDogV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24s
IGJ1dHRvbnMsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEudmFsdWVfb3IoV2ViQ29y
ZTo6RmxvYXRTaXplKCkpLndpZHRoKCksIGRlbHRhLnZhbHVlX29yKFdlYkNvcmU6OkZsb2F0U2l6
ZSgpKS5oZWlnaHQoKSwgMCwgY2xpY2tDb3VudCwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCks
IDAsIE5vVGFwLCBwb2ludGVySWQsIHBvaW50ZXJUeXBlKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgKaW5kZXggNWZh
YjA1NGVhODNlYTJjNzQ2NWYwMWE5NzhkOGIxNjczNWRjZTk3Yi4uOTRhOWM1MGM0YjQ3NWFlODgz
ZDg3ZDI5OTFiMDY4ZWQwZjEwYWY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaApAQCAtNTcsMTUgKzU3LDE1IEBAIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dD4gV2Vi
QXV0b2NvcnJlY3Rpb25Db250CiB7CiAgICAgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0IGNvcnJl
Y3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLmNvbnRleHRCZWZvcmUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29ycmVjdGlvbi5tYXJrZWRUZXh0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvcnJlY3Rpb24uc2VsZWN0ZWRUZXh0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvcnJlY3Rpb24uY29udGV4dEFmdGVyKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvcnJlY3Rpb24ubWFya2VkVGV4dFJhbmdlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gY29ycmVjdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9X
ZWJBdXRvY29ycmVjdGlvbkRhdGEubW0KaW5kZXggNTMyNGY2Mzg4MzQ2NDg2NWEzYWUwNThiYTk0
NzY5NjAzYTIzODM5OS4uYzEyODdkMWI3NjEwZmY1YjIyNTBlNTNmNzBkN2Q1MGU1YWMzZmVjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tCkBAIC00OSwxMSArNDksMTEgQEAgT3B0aW9uYWw8V2ViQXV0b2NvcnJlY3Rpb25EYXRhPiBX
ZWJBdXRvY29ycmVjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY28KICAgICBPcHRp
b25hbDxWZWN0b3I8RmxvYXRSZWN0Pj4gdGV4dFJlY3RzOwogICAgIGRlY29kZXIgPj4gdGV4dFJl
Y3RzOwogICAgIGlmICghdGV4dFJlY3RzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPFVJRm9udD4gZm9u
dDsKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGZvbnQsIEBbIFVJRm9udC5jbGFzcyBd
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7eyAqdGV4dFJlY3RzLCBmb250IH19OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCmluZGV4IGE0MTlkODAyM2U3
NWEzM2QzNTYzZDBmNTIwMmJjOGNiNmE3OTQ5ZmEuLjI2MTBjMTE0YTcyNjdlNWVmY2UyYjY5Zjkx
YmI4MmVmOWYxOGJhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJ
T1NFdmVudEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZl
bnRGYWN0b3J5LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQgY3JlYXRlV2ViTW91c2VFdmVudCg6OldlYkV2ZW50ICopOwogCiAjaWYg
SEFWRShVSVNDUk9MTFZJRVdfQVNZTkNIUk9OT1VTX1NDUk9MTF9FVkVOVF9IQU5ETElORykKLSAg
ICBzdGF0aWMgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoVUlTY3Jv
bGxFdmVudCAqLCBVSVZpZXcgKmNvbnRlbnRWaWV3LCBPcHRpb25hbDxXZWJLaXQ6OldlYldoZWVs
RXZlbnQ6OlBoYXNlPiBvdmVycmlkZVBoYXNlID0gV1RGOjpudWxsb3B0KTsKKyAgICBzdGF0aWMg
V2ViS2l0OjpXZWJXaGVlbEV2ZW50IGNyZWF0ZVdlYldoZWVsRXZlbnQoVUlTY3JvbGxFdmVudCAq
LCBVSVZpZXcgKmNvbnRlbnRWaWV3LCBPcHRpb25hbDxXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OlBo
YXNlPiBvdmVycmlkZVBoYXNlID0gc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAgc3RhdGlj
IFVJS2V5TW9kaWZpZXJGbGFncyB0b1VJS2V5TW9kaWZpZXJGbGFncyhPcHRpb25TZXQ8V2ViS2l0
OjpXZWJFdmVudDo6TW9kaWZpZXI+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
SU9TRXZlbnRGYWN0b3J5Lm1tCmluZGV4IDk4MWVjNDdmMTUzZTRlMDMzN2QzMjEwODhmNzllMjY2
ZmIxZDcwODkuLmFkYmQ1MTU4ZTMzZmY0ODZkZGM0MTQyYjZlNmExZjM2OTYzYjgzZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQpAQCAtMTcw
LDcgKzE3MCw3IEBAIFdlYktpdDo6V2ViV2hlZWxFdmVudCBXZWJJT1NFdmVudEZhY3Rvcnk6OmNy
ZWF0ZVdlYldoZWVsRXZlbnQoVUlTY3JvbGxFdmVudCAqZXZlCiAgICAgICAgIHdoZWVsVGlja3Ms
CiAgICAgICAgIFdlYktpdDo6V2ViV2hlZWxFdmVudDo6R3JhbnVsYXJpdHk6OlNjcm9sbEJ5UGl4
ZWxXaGVlbEV2ZW50LAogICAgICAgICBmYWxzZSwKLSAgICAgICAgb3ZlcnJpZGVQaGFzZS52YWx1
ZU9yKHRvV2ViUGhhc2UoZXZlbnQucGhhc2UpKSwKKyAgICAgICAgb3ZlcnJpZGVQaGFzZS52YWx1
ZV9vcih0b1dlYlBoYXNlKGV2ZW50LnBoYXNlKSksCiAgICAgICAgIFdlYktpdDo6V2ViV2hlZWxF
dmVudDo6UGhhc2VOb25lLAogICAgICAgICB0cnVlLAogICAgICAgICAxLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAppbmRl
eCAyYTlkYjRmOGFjYWZlOWQ2NGQ1ZDRlYmQ5OTEzYWExNjFlYTBmNGMwLi5lNGM4MTFiMTdjYzBi
OGE4MzIxYzc3NDYwZDVhMWQ1MzQ4YjEyN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcApAQCAtNTMsMjYgKzUzLDI2
IEBAIE9wdGlvbmFsPFdlYlBsYXRmb3JtVG91Y2hQb2ludD4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvCiB7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50
IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lkZW50aWZpZXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fbG9jYXRpb24pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcGhhc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmFkaXVzWCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yYWRpdXNZKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JvdGF0aW9uQW5nbGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fZm9yY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0Lm1fYWx0aXR1ZGVBbmdsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubV9hemltdXRoQW5nbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
dG91Y2hUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4
IGRhYWZkOGQ4YmQzMjcxZTQ4YTU5YzA2MDhjYWNkZmVhZTY3NzU2ZTIuLjFjODU1NzFiZGRkOGNk
NTRhMDEyNjU2ZWI3MDBkYmQ0MjkxNjA1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxjaGFyPj4gZmlsZUNvbnRlbnRzKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9v
bCBzaG91bGRMb2NrID0KICAgICBGaWxlSGFuZGxlIGZpbGUgPSBzaG91bGRMb2NrID8gRmlsZUhh
bmRsZShwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OlJlYWQsIGxvY2tNb2RlKSA6IEZp
bGVIYW5kbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBmaWxl
Lm9wZW4oKTsKICAgICBpZiAoIWZpbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjaGFyIGNodW5rWzQwOTZdOwogICAg
IGNvbnN0ZXhwciBzaXplX3QgY2h1bmtTaXplID0gV1RGX0FSUkFZX0xFTkdUSChjaHVuayk7CkBA
IC0yNTUsNyArMjU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPENTdHJpbmc+IHNldEFuZFNlcmlhbGl6
ZVNhbmRib3hQYXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJbml0aWFsaXoKICAgICBpZiAoaXNQcm9m
aWxlUGF0aCkgewogICAgICAgICBhdXRvIGNvbnRlbnRzID0gZmlsZUNvbnRlbnRzKHByb2ZpbGVP
clByb2ZpbGVQYXRoKTsKICAgICAgICAgaWYgKCFjb250ZW50cykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBidWlsZGVyLmFwcGVuZENoYXJhY3RlcnMoY29udGVudHMtPmRhdGEoKSwgY29udGVudHMtPnNp
emUoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByb2ZpbGVPclByb2Zp
bGVQYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IDBkZWEwOTZkOWFh
MDdhYmE5YjZhZGMzNGI3NDE3YmI1YjVmMzY1ODkuLmMzOGNhMmUwYjdlNzQ3NDExMWM4YjM5ZTFk
OTQxY2QwNjc1NGMyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgTWVkaWFGb3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRh
aW5QdHI8TVRQbHVnaW5CeXRlU291cmNlUmVmPiYmIGJ5dGVTCiAKICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9wYXJzZVRyYWNrc0xvY2sgfTsKICAgICBtX2J5dGVTb3VyY2UgPSBXVEZNb3ZlKGJ5dGVT
b3VyY2UpOwotICAgIG1fcGFyc2VUcmFja3NTdGF0dXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9w
YXJzZVRyYWNrc1N0YXR1cyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2R1cmF0aW9uID0gTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpOwogICAgIG1fdHJhY2tSZWFkZXJzLmNsZWFyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNh
bXBsZUN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCmluZGV4IDc1N2FiNmI2ZjAyYjQxZWYyZjZmMGUyY2M5
YzdiZTdiZjgwZjUxYTguLmU1NDNlMDNlMmY0ZWYwNDU3YzIxN2VmYzYwMzAzODMxYzY2OWZmMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIE9w
dGlvbmFsPHR5cGVuYW1lIE9yZGVyZWRNYXA6Oml0ZXJhdG9yPiBNZWRpYVNhbXBsZUN1cnNvcjo6
bG9jYXRlSXRlcmF0b3IoT3JkZXJlCiAgICAgICAgICAgICBlbHNlIGlmIChoYXNBbGxTYW1wbGVz
IHx8IGl0ZXJhdG9yICE9IHNhbXBsZXMuZW5kKCkpCiAgICAgICAgICAgICAgICAgbV9sb2NhdG9y
ID0gc3RkOjpwcmV2KGl0ZXJhdG9yKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICByZXR1cm4gbG9jYXRlSXRlcmF0b3Ioc2FtcGxlcywgaGFzQWxsU2Ft
cGxlcyk7CiAgICAgICAgIH0sCiAgICAgICAgIFsmXShjb25zdCBhdXRvJiBvdGhlckl0ZXJhdG9y
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBo
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCBk
MWFhNWNkMzI2YjZlOGRiMTNkNDY3OTA3M2M0OTMzZDNhOWI5Y2RkLi43MGE1YzgwNDQ2Y2VjOGVl
ZTQ3MzU2OTNlMWM4NmU0YjYzMTU4M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9P
YmpDT2JqZWN0R3JhcGgubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8T2Jq
Q1R5cGU+IHR5cGVGcm9tT2JqZWN0KGlkIG9iamVjdCkKICAgICAgICAgcmV0dXJuIE9iakNUeXBl
OjpXS1R5cGVSZWZXcmFwcGVyOwogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIE9iakNPYmplY3RHcmFwaDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlciwg
aWQgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1BERkNvbnRl
eHRNZW51LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUERGQ29udGV4dE1lbnUuaAppbmRl
eCA3ZDE4ZjA5YjAwN2ExZjZhMjkxMzAwZjVlYjgwYTI1MmJjNjc4ZTEyLi44MWNkYmU4MDFjMmZj
Yzc2Y2I5OGJkMzM2MTMzYTI3ZDVhYzljMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvUERGQ29udGV4dE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
UERGQ29udGV4dE1lbnUuaApAQCAtNDYsMzIgKzQ2LDMyIEBAIHN0cnVjdCBQREZDb250ZXh0TWVu
dUl0ZW0gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHRpdGxlOwogICAgICAgICBkZWNvZGVy
ID4+IHRpdGxlOwogICAgICAgICBpZiAoIXRpdGxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gZW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVkOwogICAgICAg
ICBpZiAoIWVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzZXBh
cmF0b3I7CiAgICAgICAgIGRlY29kZXIgPj4gc2VwYXJhdG9yOwogICAgICAgICBpZiAoIXNlcGFy
YXRvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGludD4gc3RhdGU7CiAgICAgICAg
IGRlY29kZXIgPj4gc3RhdGU7CiAgICAgICAgIGlmICghc3RhdGUpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxib29sPiBoYXNBY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQWN0
aW9uOwogICAgICAgICBpZiAoIWhhc0FjdGlvbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPGludD4gdGFnOwogICAgICAgICBkZWNvZGVyID4+IHRhZzsKICAgICAgICAgaWYgKCF0YWcp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKnRpdGxlKSwgV1RGTW92
ZSgqZW5hYmxlZCksIFdURk1vdmUoKnNlcGFyYXRvciksIFdURk1vdmUoKnN0YXRlKSwgV1RGTW92
ZSgqaGFzQWN0aW9uKSwgV1RGTW92ZSgqdGFnKSB9IH07CiAgICAgfQpAQCAtOTIsMTcgKzkyLDE3
IEBAIHN0cnVjdCBQREZDb250ZXh0TWVudSB7CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiBwb2ludDsKICAgICAgICAgZGVjb2RlciA+PiBwb2ludDsKICAgICAgICAgaWYgKCFw
b2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxQREZDb250ZXh0TWVu
dUl0ZW0+PiBpdGVtczsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtczsKICAgICAgICAgaWYgKCFp
dGVtcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGludD4+IG9wZW5J
blByZXZpZXdJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAg
ICAgICAgIGlmICghb3BlbkluUHJldmlld0luZGV4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpwb2ludCksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKaW5kZXggMGUwODQwMmIxYTVmZjc5
MzExMzU2OTFiMTlmYWYwNjFmOTZmNzY1NS4uZDhiYWY5ZmVjOWExNzMzNDI3MzFiMGQ0ZjMwYWJl
YzBhYjkxNmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1S
ZXNwb25zZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVz
cG9uc2VEYXRhLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBAIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25z
ZURhdGE+IFNlY0l0ZW1SZXNwb25zZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CiB7CiAgICAgaW50NjRfdCByZXN1bHRDb2RlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Q29kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGV4cGVjdFJlc3VsdE9iamVjdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGV4cGVjdFJlc3VsdE9iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZXRhaW5QdHI8Q0ZU
eXBlUmVmPiByZXN1bHQ7CiAgICAgaWYgKGV4cGVjdFJlc3VsdE9iamVjdCAmJiAhZGVjb2Rlci5k
ZWNvZGUocmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBzdGF0aWNfY2FzdDxPU1N0YXR1cz4o
cmVzdWx0Q29kZSksIFdURk1vdmUocmVzdWx0KSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvU2VjSXRlbVNoaW0uY3BwCmluZGV4IDkwYWQ5OTkzZDhlMGNkMzFlZjdhOThiZTM3YjU4N2I0
YTE1ZWQyMzMuLmVmZTJmMjIzNzdlZWJhOTIzZWVhYWU3MjhiMWE4NmRhOTVlOTEzMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcApAQCAtNjksNyArNjksNyBAQCBz
dGF0aWMgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gc2VuZFNlY0l0ZW1SZXF1ZXN0KFNl
Y0l0ZW1SZXF1ZXN0RGF0YTo6VHlwZQogCiAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7CiAg
ICAgICAgIGlmICghZ2xvYmFsTmV0d29ya1Byb2Nlc3MoKS0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6OlNlY0l0ZW1SZXF1ZXN0
U3luYyhTZWNJdGVtUmVxdWVzdERhdGEocmVxdWVzdFR5cGUsIHF1ZXJ5LCBhdHRyaWJ1dGVzVG9N
YXRjaCkpLCBNZXNzYWdlczo6U2VjSXRlbVNoaW1Qcm94eTo6U2VjSXRlbVJlcXVlc3RTeW5jOjpS
ZXBseShyZXNwb25zZSksIDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXNwb25zZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCmluZGV4IGUwYjEyNWFlYjgyZWNkYTc4OWY3NTE0M2FhMWRmZmZiZGFh
NmNhZjAuLjU2YjU4ZjgzNDViZWYyYjI3NmY0MzhkZDg3MzEzZDhiZjJkYjlkY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bQpAQCAtMjg1LDEyICsyODUsMTIgQEAgT3B0aW9uYWw8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD46OmRlY28KICAgICBPcHRp
b25hbDxTdHJpbmc+IGNvbW1hbmROYW1lOwogICAgIGRlY29kZXIgPj4gY29tbWFuZE5hbWU7CiAg
ICAgaWYgKCFjb21tYW5kTmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7
CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJD
b3JlOjpLZXlwcmVzc0NvbW1hbmQgY29tbWFuZDsKICAgICBjb21tYW5kLmNvbW1hbmROYW1lID0g
V1RGTW92ZSgqY29tbWFuZE5hbWUpOwpAQCAtNDEwLDExICs0MTAsMTEgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpTZXJpYWwKICAgICBBU1NFUlQocGxhdGZvcm1UeXBlID09IFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlOjpPYmpDKTsKIAogICAgIGlmIChw
bGF0Zm9ybVR5cGUgIT0gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQ
bGF0Zm9ybVR5cGU6Ok9iakMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG9iamVjdCA9IGRlY29kZU9iamVjdChk
ZWNvZGVyLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjphbGxvd2VkQ2xh
c3Nlc0Zvck5hdGl2ZVZhbHVlcygpKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUgeyBwbGF0Zm9ybVR5cGUs
IG9iamVjdC52YWx1ZSgpLmdldCgpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5
U3RhdGlvbi5jcHAKaW5kZXggMjEyYThlMDVlYjVmM2Y4ODljMzU4MTVhZTdlYmM1Y2FjNTQyYWNi
MC4uY2JlYjQwMGRhY2U1NmI4ODJkMmU3YzQ0M2FlZGRiN2JlNDlkOWZmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxh
eVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNv
cmVBcmd1bWVudENvZGVyc1BsYXlTdGF0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYs
IGNvbnN0IEZvbnRBdHRyaQogT3B0aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8
Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIEZvbnRBdHRyaWJ1
dGVzJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVm
PEZvbnQ+JiBmb250KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxGbwog
T3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKaW5kZXggNDQ5MjM0YjA4MTE3
MmVhY2YxMzE3YTVjMWUxMmNmMGRkMTk5M2YwMS4uOTg3ZjhiNTU1MjE4MWEyODgzYjFhNjQ0NDVk
OGZhNjgxYzBlOTdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJD
b3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
LCBjb25zdCBGb250QXR0cmkKIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVy
PEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBGb250QXR0cmli
dXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8
RGljdGlvbmFyeVBvcHVwSW5mbz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3Qg
RGljdGlvbmFyeVBvcHVwSW5mbyYpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxGb250Pj46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgUmVmPEZv
bnQ+JikKIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogI2lmIEVOQUJMRShWSURFTykKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImCiBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+ICBBcmd1
bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmRlY29kZVBsYXRmb3Jt
RGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU6OlBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhp
bGlhcnlQcm9jZXNzTWFpbldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxp
YXJ5UHJvY2Vzc01haW5XaW4uY3BwCmluZGV4IGRiZTBkMDNjOTIxOTBlYjBiYzI5ZWI2NmM0NzUz
YTBhYTljMGI0N2MuLjYyMTg4MzAwNDhiYTI1ZmU0NDQzYTVjYWIxMzY2NjhmM2FlYmY0NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWlu
V2luLmNwcApAQCAtMzYsOSArMzYsOSBAQCBib29sIEF1eGlsaWFyeVByb2Nlc3NNYWluQ29tbW9u
OjpwYXJzZUNvbW1hbmRMaW5lKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAi
LWNsaWVudElkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICBtX3BhcmFt
ZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4ocGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KGFyZ3ZbKytpXSkudmFsdWVP
cigwKSk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMuY29ubmVjdGlvbklkZW50aWZpZXIgPSBy
ZWludGVycHJldF9jYXN0PEhBTkRMRT4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
dWludDY0X3Q+KGFyZ3ZbKytpXSkudmFsdWVfb3IoMCkpOwogICAgICAgICBlbHNlIGlmICghc3Ry
Y21wKGFyZ3ZbaV0sICItcHJvY2Vzc0lkZW50aWZpZXIiKSAmJiBpICsgMSA8IGFyZ2MpCi0gICAg
ICAgICAgICBtX3BhcmFtZXRlcnMucHJvY2Vzc0lkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2WysraV0pLnZhbHVlT3IoMCkpOworICAgICAgICAg
ICAgbV9wYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGVsc2Ug
aWYgKCFzdHJjbXAoYXJndltpXSwgIi1jb25maWd1cmUtanNjLWZvci10ZXN0aW5nIikpCiAgICAg
ICAgICAgICBKU0M6OkNvbmZpZzo6Y29uZmlndXJlRm9yVGVzdGluZygpOwogICAgICAgICBlbHNl
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItZGlzYWJsZS1qaXQiKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKaW5kZXggYmQx
OTA4MDY2YmQxMjVlZDgxMGFjZDAxN2IzZGMxYzY0NzllZmUwMy4uMDAwM2FiMzdkMTM2NTFmZjg3
ZGYzNjI3YTRmNjUzZmM0YWRlZGJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvd2luL1dlYkNvcmVBcmd1bWVudENvZGVyc1dpbi5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29k
ZXImLCBjb25zdCBGb250QXR0cmkKIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENv
ZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBGb250QXR0
cmlidXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPExPR0ZPTlQ+IHsKQEAgLTU3LDcgKzU3LDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxMT0dGT05UPiB7CiAgICAgewogICAgICAgICBMT0dGT05UIGxv
Z0ZvbnQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oJmxvZ0ZvbnQpLCBzaXplb2YobG9nRm9udCksIDEpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBsb2dGb250OwogICAgIH0KIH07CkBAIC04NiwyMiArODYs
MjIgQEAgT3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICBPcHRpb25hbDxmbG9hdD4gc2l6ZTsK
ICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplLmhhc1ZhbHVlKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBzeW50aGV0aWNCb2xkOwogICAgIGRlY29kZXIgPj4gc3ludGhldGlj
Qm9sZDsKICAgICBpZiAoIXN5bnRoZXRpY0JvbGQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IHN5bnRoZXRpY09ibGlxdWU7CiAgICAgZGVjb2RlciA+PiBzeW50aGV0aWNPYmxp
cXVlOwogICAgIGlmICghc3ludGhldGljT2JsaXF1ZS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gaW5jbHVkZXNDcmVhdGlvbkRhdGE7CiAgICAgZGVjb2RlciA+PiBpbmNsdWRl
c0NyZWF0aW9uRGF0YTsKICAgICBpZiAoIWluY2x1ZGVzQ3JlYXRpb25EYXRhLmhhc1ZhbHVlKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEN1c3RvbVBsYXRmb3JtRGF0YT4gZm9udEN1
c3RvbVBsYXRmb3JtRGF0YTsKICAgICBGb250UGxhdGZvcm1EYXRhOjpDcmVhdGlvbkRhdGEqIGNy
ZWF0aW9uRGF0YSA9IG51bGxwdHI7CkBAIC0xMTAsMzAgKzExMCwzMCBAQCBPcHRpb25hbDxGb250
UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0
YShEZWNvZGVyJgogICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250
RmFjZURhdGEuaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4gaXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9u
OwogICAgICAgICBpZiAoIWl0ZW1JbkNvbGxlY3Rpb24uaGFzVmFsdWUoKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKGZvbnRGYWNlRGF0YS52YWx1ZSgpLCBpdGVtSW5Db2xsZWN0aW9uLnZhbHVlKCkpOwog
ICAgICAgICBpZiAoIWZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
Y3JlYXRpb25EYXRhID0gJmZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmNyZWF0aW9uRGF0YTsKICAg
ICB9CiAKICAgICBPcHRpb25hbDxMT0dGT05UPiBsb2dGb250OwogICAgIGRlY29kZXIgPj4gbG9n
Rm9udDsKICAgICBpZiAoIWxvZ0ZvbnQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChmb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQogICAgICAgICB3Y3NjcHlfcyhsb2dGb250LT5sZkZhY2VOYW1lLCBM
Rl9GQUNFU0laRSwgZm9udEN1c3RvbVBsYXRmb3JtRGF0YS0+bmFtZS53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSk7CiAgICAgCiAgICAgYXV0byBnZGlGb250ID0gYWRvcHRHRElPYmplY3QoQ3JlYXRl
Rm9udEluZGlyZWN0KCYqbG9nRm9udCkpOwogICAgIGlmICghZ2RpRm9udCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBGb250UGxhdGZvcm1EYXRhKFdURk1vdmUoZ2RpRm9udCksICpzaXplLCAqc3ludGhldGlj
Qm9sZCwgKnN5bnRoZXRpY09ibGlxdWUsIGZhbHNlLCBjcmVhdGlvbkRhdGEpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCmluZGV4IGIxODIwZTA0
OGMwNzc1NjFjOTgxYjE5M2ZmM2I1ZDM0NjcwMDE4MDEuLmEyN2QxMjU0YmU3NjU4MmRlYzgxNmZl
M2JkOTM2NmI2NzMzZjAwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
QXR0YWNobWVudC5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgV1RGOjpTdHJpbmcgQXR0YWNobWVudDo6
ZmlsZU5hbWUoKSBjb25zdAogCiBPcHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNp
emVGb3JEaXNwbGF5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0
dGFjaG1lbnQ6OmVuY2xvc2luZ0ltYWdlRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCmluZGV4
IDJhZTJhNTAzNGMzYTQxNzFjY2Y0NzdiOTc4NWI3M2E2ZjI0ZGI4MTYuLmY0NjkxMTY3NmNkOThh
NmExNzQ3ZTgwMWU4OGRiMjhjZjFmYzlhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWNjZXB0Q3VycmVudEphdmFTY3JpcHRE
aWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFn
ZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBtZXNzYWdlT2ZDdXJyZW50SmF2
YVNjcmlwdERpYWxvZ09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0
OjpXZWJQYWdlUHJveHkmKSB7IHJldHVybiBXVEY6OlN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldFVzZXJJbnB1dEZvckN1cnJlbnRKYXZhU2NyaXB0UHJvbXB0T25QYWdlKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6
U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxKYXZhU2NyaXB0RGlhbG9nVHlwZT4g
dHlwZU9mQ3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9
CisgICAgdmlydHVhbCBPcHRpb25hbDxKYXZhU2NyaXB0RGlhbG9nVHlwZT4gdHlwZU9mQ3VycmVu
dEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdl
YktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgdmlydHVh
bCBCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb24gY3VycmVudFByZXNlbnRhdGlvbk9mUGFnZShX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJl
dHVybiBCcm93c2luZ0NvbnRleHRQcmVzZW50YXRpb246OldpbmRvdzsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAKaW5kZXggYjI3MTBiZmZjNDE0OGZiZmJhNjRjOWVhZWZlZjRlZTM2NjQxYWY5YS4uOGRi
ZTc5NWVkOWVhMzRiZmVlM2YxMjk2NWU1ZjAzMzAwZGJmYTkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBA
IC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbnRlbnRSdWxlTGlzdE1ldGFEYXRh
PiBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShjb25zdCBUJgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfSk7CiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtZXRhRGF0
YTsKIH0KIApAQCAtMjE4LDEwICsyMTgsMTAgQEAgc3RhdGljIE9wdGlvbmFsPE1hcHBlZERhdGE+
IG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiAgICAg
RmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgocGF0aCk7CiAgICAgV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGEgZmlsZURhdGEgPSBtYXBGaWxlKGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmIChmaWxlRGF0YS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBhdXRvIG1ldGFEYXRhID0gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoZmlsZURh
dGEpOwogICAgIGlmICghbWV0YURhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKm1ldGFE
YXRhKSwgeyBXVEZNb3ZlKGZpbGVEYXRhKSB9fX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAppbmRl
eCAxZjUwNzljODVmZGI5NTRjZDZhNmM3YzljZjcwMTliNGQyYzE2Zjc5Li5iZmQ3NWRiZWI4M2Y3
YjRjYmI4MzM1ODc0Mzk4NDQ5MzZkYWZlMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC01Niw3
ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0Vu
YWJsZWQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNBdXRvbWF0aWNQcm9jZXNz
V2FybWluZ0VuYWJsZWRCeUNsaWVudC52YWx1ZU9yKG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1
dG9tYXRpY1Byb2Nlc3NQcmV3YXJtaW5nKTsKKyAgICAgICAgcmV0dXJuIG1faXNBdXRvbWF0aWNQ
cm9jZXNzV2FybWluZ0VuYWJsZWRCeUNsaWVudC52YWx1ZV9vcihtX2NsaWVudFdvdWxkQmVuZWZp
dEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyk7CiAgICAgfQogCiAgICAgYm9vbCB3YXNB
dXRvbWF0aWNQcm9jZXNzV2FybWluZ1NldEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gISFtX2lz
QXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7IH0KQEAgLTEyMCw3ICsxMjAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIHByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbigpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xp
ZW50LnZhbHVlT3IobV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJpbWVudGFsRmVh
dHVyZXMpOworICAgICAgICByZXR1cm4gbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xp
ZW50LnZhbHVlX29yKG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKICAgICB9CiAgICAgdm9pZCBzZXRQcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oYm9v
bCBzd2FwcykgeyBtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQgPSBzd2Fwczsg
fQogICAgIHZvaWQgc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZl
YXR1cmVzKGJvb2wgc3dhcHMpIHsgbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJp
bWVudGFsRmVhdHVyZXMgPSBzd2FwczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKaW5kZXggZDQ4MmQzYzM0ZDhmNGExYzhkYjY1MWQ5NzcwNjI1YzMyZDUwN2VjMi4u
N2IyNjlhYjA3NDI2NzMwYzg1MjU2OTIxNmUyYTkwYzkyZTYwMTM4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNjAwLDcgKzI2MDAsNyBAQCB2b2lkIFdL
UGFnZVNldFBhZ2VTdGF0ZUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tQYWdlU3RhdGVDbGll
bnRCYXNlKiBjbGllbnQpCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1Bh
Z2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBXS1Bh
Z2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgQ1JBU0hfSUZfU1VTUEVO
REVEOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgdG9J
bXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0
cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiByZXN1bHQpIHsKKyAgICB0b0ltcGwo
cGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5z
dHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwg
Y2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVl
KCkpCiAgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bHQudmFsdWUoKS5nZXQoKSksIG51
bGxwdHIsIGNvbnRleHQpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQppbmRleCAxMjkyY2Nj
Y2Y4OGU4ODkzOWZmOWZkZTQ0OTVhMzRmMjlkYTkyYmEyLi4yMzdmYjdlZmFmNTdmZWQyNzQ2Yjg2
N2JjZDQwODM1NzNkMjljZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCBP
cHRpb25hbDx1aW50NjRfdD4gQXR0YWNobWVudDo6ZmlsZVNpemVGb3JEaXNwbGF5KCkgY29uc3QK
IAogICAgIGlmICghW2ZpbGVXcmFwcGVyIGlzUmVndWxhckZpbGVdKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZGlzcGxheSBhIHNpemUgZXN0aW1hdGUgZm9yIGRpcmVjdG9yeS10eXBl
IGZpbGUgd3JhcHBlcnMuCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gZmlsZVNpemUgPSBbW2Zp
bGVXcmFwcGVyIGZpbGVBdHRyaWJ1dGVzXVtOU0ZpbGVTaXplXSB1bnNpZ25lZExvbmdMb25nVmFs
dWVdKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2Vj
dXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1
cml0eU9yaWdpbi5tbQppbmRleCA0ZjlmOWZmOTliOTRkYzM5Y2JjZjZhYzJlNzEzYzI3MzJiODk4
Yjk4Li4wMGZlY2JiZTMyOWZmZmI0MTA5NjlhNjg4ZTIyNjA3Yjg5MzcyNmNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5t
bQpAQCAtNjAsNyArNjAsNyBAQCAtIChOU1N0cmluZyAqKWhvc3QKIAogLSAoTlNJbnRlZ2VyKXBv
cnQKIHsKLSAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBvcnQu
dmFsdWVPcigwKTsKKyAgICByZXR1cm4gX3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigp
LnBvcnQudmFsdWVfb3IoMCk7CiB9CiAKICNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBp
bXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggODkyYWE0ODU4ZjQ4YTc5YmIyYTNkOWUzZjRjNjViZjFkOGM5NDM3Ny4u
YWUxZjNiNTYyMjZmZmEwNDMyODIyMWYyNDViZWZhMjA4YWVmNTIzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMDcwLDcgKzIwNzAs
NyBAQCAtICh2b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICopaXRlbSBjb21wbGV0aW9uOih2bwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwogICAgIGZv
ciAoX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICp3a1Rva2VuIGluIGl0ZW0udG9rZW5zKQotICAg
ICAgICB0b2tlbnMuYXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25Ub2tlbiB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uVG9rZW5JZGVudGlmaWVyRnJv
bVN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIpLCB3a1Rva2VuLmNvbnRlbnQsIFdURjo6bnVsbG9w
dCB9KTsKKyAgICAgICAgdG9rZW5zLmFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRva2VuSWRl
bnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250ZW50LCBz
dGQ6Om51bGxvcHQgfSk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IGNvcmVJdGVtczsKICAgICBjb3JlSXRlbXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKQEAgLTIxMzAsNyArMjEzMCw3IEBAIC0gKHZvaWQpX2Nv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopCiAgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IGNvcmVUb2tlbnM7CiAgICAgICAgIGNvcmVUb2tl
bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh3a0l0ZW0udG9rZW5zLmNvdW50KTsKICAgICAgICAg
Zm9yIChfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKndrVG9rZW4gaW4gd2tJdGVtLnRva2VucykK
LSAgICAgICAgICAgIGNvcmVUb2tlbnMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbiB7IGNvcmVUZXh0TWFuaXB1bGF0
aW9uVG9rZW5JZGVudGlmaWVyRnJvbVN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIpLCB3a1Rva2Vu
LmNvbnRlbnQsIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgICAgIGNvcmVUb2tlbnMudW5jaGVj
a2VkQXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25Ub2tlbiB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uVG9rZW5JZGVudGlmaWVyRnJvbVN0cmluZyh3
a1Rva2VuLmlkZW50aWZpZXIpLCB3a1Rva2VuLmNvbnRlbnQsIHN0ZDo6bnVsbG9wdCB9KTsKICAg
ICAgICAgY29yZUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbSB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uSXRlbUlk
ZW50aWZpZXJGcm9tU3RyaW5nKHdrSXRlbS5pZGVudGlmaWVyKSwgV1RGTW92ZShjb3JlVG9rZW5z
KSB9KTsKICAgICB9CiAKQEAgLTIyODgsNyArMjI4OCw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVBcHBI
aWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMKICAgICBmb3IgKE5TRGF0
YSAqaGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpCiAgICAgICAgIGNvbnZlcnRBbmRBZGRIaWdobGln
aHQoYnVmZmVycywgaGlnaGxpZ2h0KTsKICAgICAKLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGJ1ZmZlcnMsIFdURjo6bnVsbG9wdCk7CisgICAgX3BhZ2Ut
PnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBzdGQ6Om51bGxv
cHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaGlnaGxpZ2h0cyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KaW5kZXggY2U1YjdiZDViMDFhYmM4MjEwOTVkMDU1OTVhYWU5NjliNjhj
ZjVmZS4uNzM2N2U4ODAyNzZmYTY0MTdhOWU0OWZlODk4NzljZmNlOTg5YzE0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KQEAgLTUzNywxMiArNTM3LDEyIEBAIHN0YXRpYyBOU1N0cmluZyAqZGVm
YXVsdEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgpCiAKIC0gKE5TU3RyaW5nICopX2FwcGxp
Y2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQKIHsKLSAgICByZXR1cm4gX2FwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudC52YWx1ZU9yKG5pbCkuZ2V0KCk7CisgICAgcmV0dXJuIF9hcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQudmFsdWVfb3IobmlsKS5nZXQoKTsKIH0KIAogLSAoTlNTdHJp
bmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQKIHsKLSAgICByZXR1cm4gX2FwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudC52YWx1ZU9yKGRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQoKSkuZ2V0KCk7CisgICAgcmV0dXJuIF9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQu
dmFsdWVfb3IoZGVmYXVsdEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgpKS5nZXQoKTsKIH0K
IAogLSAodm9pZClzZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ6KE5TU3RyaW5nICopYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50CkBAIC05NTIsMTggKzk1MiwxOCBAQCAtICh2b2lkKV9z
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0ZXJucwog
CiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3JrOihCT09MKWxvYWRzCiB7Ci0gICAgX3BhZ2VD
b25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxvYWRzID8gV1RGOjpudWxsb3B0
IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7Cisg
ICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKGxvYWRzID8gc3Rk
OjpudWxsb3B0IDogT3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7
IH0gfSk7CiB9CiAKIC0gKEJPT0wpX2xvYWRzRnJvbU5ldHdvcmsKIHsKLSAgICByZXR1cm4gX3Bh
Z2VDb25maWd1cmF0aW9uLT5hbGxvd2VkTmV0d29ya0hvc3RzKCkgPT0gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsbG93ZWROZXR3b3JrSG9zdHMoKSA9PSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIC0gKHZvaWQpX3NldEFsbG93ZWROZXR3b3JrSG9zdHM6KE5TU2V0
PE5TU3RyaW5nICo+ICopaG9zdHMKIHsKICAgICBpZiAoIWhvc3RzKQotICAgICAgICByZXR1cm4g
X3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hvc3RzKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFsbG93ZWROZXR3b3JrSG9z
dHMoc3RkOjpudWxsb3B0KTsKICAgICBIYXNoU2V0PFN0cmluZz4gc2V0OwogICAgIGZvciAoTlNT
dHJpbmcgKmhvc3QgaW4gaG9zdHMpCiAgICAgICAgIHNldC5hZGQoaG9zdCk7CkBAIC0xMTU2LDcg
KzExNTYsNyBAQCAtICh2b2lkKV9zZXRDUFVMaW1pdDooZG91YmxlKWNwdUxpbWl0CiAKIC0gKGRv
dWJsZSlfY3B1TGltaXQKIHsKLSAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5jcHVMaW1p
dCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y3B1TGltaXQo
KS52YWx1ZV9vcigwKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaAppbmRleCBhZTZhNGQyNmU3MGMwNGFiYjZmZmQ5ZjYyY2I4NDU2ZGUw
ZTdiMDUzLi42Y2ZlYjllY2M0ZGI4MTFkNzVjM2NiY2YzN2NiZTJiZTRkNTlhM2I5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZShOU1N0cmluZyAqd2Vi
c2l0ZURhdGFUCiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dl
YnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQogICAgICAgICByZXR1cm4gV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOwogI2VuZGlmCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGVzKE5TU2V0
ICp3ZWJzaXRlRGF0YVR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KaW5kZXggZDc0MjA0NTk3Yzc5
ZjUwYjZhM2VjYWRlZmJiOWNmYzUwMDczZTYwYy4uM2JhYmViZjgxNTdhM2FmOWZlOTkxNDczY2Vl
MDc5MmU4NGE5MDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC04Myw4ICs4Myw4IEBAIC0g
KHZvaWQpY3JlYXRlVGFiV2l0aE5hbWU6KE5TU3RyaW5nICopdGFiTmFtZSB0YWJJY29uVVJMOihO
U1VSTCAqKXRhYkljb25VUkwgc291CiAKIC0gKHZvaWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5n
ICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VSTCAqKWZyYW1lVVJMIGNvbnRleHRTZWN1cml0
eU9yaWdpbjooTlNVUkwgKiljb250ZXh0U2VjdXJpdHlPcmlnaW4gdXNlQ29udGVudFNjcmlwdENv
bnRleHQ6KEJPT0wpdXNlQ29udGVudFNjcmlwdENvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNFcnJvciAqLCBOU0RpY3Rpb25hcnkgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBPcHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBmcmFtZVVSTCA/IG1ha2VPcHRpb25h
bChVUkwoZnJhbWVVUkwpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxVUkw+IG9wdGlv
bmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gbWFrZU9w
dGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IFdURjo6bnVsbG9wdDsKKyAgICBP
cHRpb25hbDxVUkw+IG9wdGlvbmFsRnJhbWVVUkwgPSBmcmFtZVVSTCA/IHN0ZDo6bWFrZV9vcHRp
b25hbChVUkwoZnJhbWVVUkwpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxVUkw+IG9w
dGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luID0gY29udGV4dFNlY3VyaXR5T3JpZ2luID8gc3Rk
OjptYWtlX29wdGlvbmFsKFVSTChjb250ZXh0U2VjdXJpdHlPcmlnaW4pKSA6IHN0ZDo6bnVsbG9w
dDsKICAgICBfZXh0ZW5zaW9uLT5ldmFsdWF0ZVNjcmlwdChzY3JpcHRTb3VyY2UsIG9wdGlvbmFs
RnJhbWVVUkwsIG9wdGlvbmFsQ29udGV4dFNlY3VyaXR5T3JpZ2luLCB1c2VDb250ZW50U2NyaXB0
Q29udGV4dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sg
PSBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpF
eHRlbnNpb25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFyZXN1bHQpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xv
Y2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRv
U3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOwpAQCAtMTA0LDggKzEwNCw4IEBAIC0gKHZv
aWQpZXZhbHVhdGVTY3JpcHQ6KE5TU3RyaW5nICopc2NyaXB0U291cmNlIGZyYW1lVVJMOihOU1VS
TCAqKWZyYW1lVVJMIGNvbnRlCiAKIC0gKHZvaWQpcmVsb2FkSWdub3JpbmdDYWNoZTooQk9PTClp
Z25vcmVDYWNoZSB1c2VyQWdlbnQ6KE5TU3RyaW5nICopdXNlckFnZW50IGluamVjdGVkU2NyaXB0
OihOU1N0cmluZyAqKWluamVjdGVkU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
RXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlv
bmFsVXNlckFnZW50ID0gdXNlckFnZW50ID8gbWFrZU9wdGlvbmFsKFN0cmluZyh1c2VyQWdlbnQp
KSA6IFdURjo6bnVsbG9wdDsKLSAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRT
Y3JpcHQgPSBpbmplY3RlZFNjcmlwdCA/IG1ha2VPcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRTY3Jp
cHQpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsVXNlckFn
ZW50ID0gdXNlckFnZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKFN0cmluZyh1c2VyQWdlbnQpKSA6
IHN0ZDo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG9wdGlvbmFsSW5qZWN0ZWRTY3Jp
cHQgPSBpbmplY3RlZFNjcmlwdCA/IHN0ZDo6bWFrZV9vcHRpb25hbChTdHJpbmcoaW5qZWN0ZWRT
Y3JpcHQpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBfZXh0ZW5zaW9uLT5yZWxvYWRJZ25vcmluZ0Nh
Y2hlKGlnbm9yZUNhY2hlLCBvcHRpb25hbFVzZXJBZ2VudCwgb3B0aW9uYWxJbmplY3RlZFNjcmlw
dCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtl
QmxvY2tQdHIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpXSAoSW5zcGVjdG9yOjpFeHRlbnNp
b25FdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFyZXN1
bHQpIHsKICAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXpl
ZEZhaWx1cmVSZWFzb25FcnJvcktleTogSW5zcGVjdG9yOjpleHRlbnNpb25FcnJvclRvU3RyaW5n
KHJlc3VsdC5lcnJvcigpKSB9XSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KaW5kZXggOGZiNTFkYTRjNjRlNTM1ZTM0
OGIyZWEyYzQ1OTBlODg0NDliZGNjYy4uMGUzNDk0YjM3MWE1ZmZiZDZjOTg3ZWVhNGQ5NmQwMDBh
NzRlOTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtNTcsNyArNTcsNyBAQCAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIGZvcldLV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVgogCiAgICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogCi0gICAgQVBJOjpP
YmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCB7IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+
KGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNl
clN0eWxlTGV2ZWwobGV2ZWwpLCB3ZWJWaWV3ID8gT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+KFt3ZWJWaWV3IF9wYWdlXS0+d2ViUGFnZUlEKCkpIDogV1RGOjpudWxsb3B0IH0sIGNv
bnRlbnRXb3JsZCA/ICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQgOiBBUEk6OkNvbnRlbnRX
b3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5X
cmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0
IHsgc291cmNlLCBiYXNlVVJMLCBtYWtlVmVjdG9yPFN0cmluZz4oaW5jbHVkZU1hdGNoUGF0dGVy
blN0cmluZ3MpLCBtYWtlVmVjdG9yPFN0cmluZz4oZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3Mp
LCBmb3JNYWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6
SW5qZWN0SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
OjpJbmplY3RJbkFsbEZyYW1lcywgQVBJOjp0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChsZXZlbCks
IHdlYlZpZXcgPyBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4oW3dlYlZpZXcgX3Bh
Z2VdLT53ZWJQYWdlSUQoKSkgOiBzdGQ6Om51bGxvcHQgfSwgY29udGVudFdvcmxkID8gKmNvbnRl
bnRXb3JsZC0+X2NvbnRlbnRXb3JsZCA6IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdv
cmxkKCkpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDdhNzdjMGFiYzdmODJiMjQwNzhjY2MxMWM1NDRkNTVjM2ExNmU5ZWIuLmM0MWM3YTYz
OWIyMTg4YjFiMzQ5MDJhMWI2ODJmMGM0ZmY5MTkxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0zNzMsMTQgKzM3MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6QXV0
aGVudGljYXRvckF0dGFjaG1lbnQ+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50KF9XS0F1dAogewog
ICAgIHN3aXRjaCAoYXR0YWNobWVudCkgewogICAgIGNhc2UgX1dLQXV0aGVudGljYXRvckF0dGFj
aG1lbnRBbGw6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudFBsYXRmb3Jt
OgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRm
b3JtOwogICAgIGNhc2UgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnRDcm9zc1BsYXRmb3JtOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxh
dGZvcm07CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogfQogCkBAIC00NzYsNyArNDc2LDcgQEAgLSAodm9pZCltYWtlQ3JlZGVudGlhbFdpdGhD
aGFsbGVuZ2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2kKICAg
ICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9KTsKICAg
ICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9u
czpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0
OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygp
LCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRsZVJlcXVl
c3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9D
b3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6
V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6
bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAjZW5kaWYKIH0KIApAQCAtNTI2LDcgKzUyNiw3IEBAIC0gKHZvaWQpZ2V0QXNzZXJ0aW9u
V2l0aENoYWxsZW5nZTooTlNEYXRhICopY2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmln
aW4KICAgICAgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tF
cnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOwogICAgICAgICB9
KTsKICAgICB9OwotICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhP
cHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3Ry
aW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxl
UmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZl
cnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBz
dGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxs
YmFjaykpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDM2YWYxM2U3NTlmYTA1MzNmZGFjOGZiNTNhYmFm
MzUwZTM4YjIzZDAuLmNhYzZjODY3NWRiZjkxMDQ3MDk1OWJkMWQ2MjlkOGU4YjNiZWZlMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cApAQCAtMjk0LDE0ICsyOTQsMTQgQEAgT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjpp
Y29uSURGb3JJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgYm9vbCYgZXgKICAgICAgICAg
YXV0byBpY29uSURGb3JJY29uVVJMU3RhdGVtZW50ID0gbV9kYi5wcmVwYXJlSGVhcFN0YXRlbWVu
dCgiU0VMRUNUIEljb25JbmZvLmljb25JRCwgSWNvbkluZm8uc3RhbXAgRlJPTSBJY29uSW5mbyBX
SEVSRSBJY29uSW5mby51cmwgPSAoPyk7Il9zKTsKICAgICAgICAgaWYgKCFpY29uSURGb3JJY29u
VVJMU3RhdGVtZW50KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlByZXBhcmluZyBzdGF0ZW1l
bnQgaWNvbklERm9ySWNvblVSTCBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAg
ICAgIG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudCA9IGljb25JREZvckljb25VUkxTdGF0ZW1l
bnQudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICB9CiAKICAgICBpZiAobV9pY29uSURG
b3JJY29uVVJMU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBpY29uVVJMKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYXZpY29uRGF0YWJzZTo6aWNvbklERm9ySWNvblVSTCBmYWls
ZWQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8
aW50NjRfdD4gcmVzdWx0OwpAQCAtMzc2LDcgKzM3Niw3IEBAIE9wdGlvbmFsPGludDY0X3Q+IElj
b25EYXRhYmFzZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZlY3Rvcjxj
aGFyCiAgICAgICAgIGF1dG8gYWRkSWNvblN0YXRlbWVudCA9IG1fZGIucHJlcGFyZUhlYXBTdGF0
ZW1lbnQoIklOU0VSVCBJTlRPIEljb25JbmZvICh1cmwsIHN0YW1wKSBWQUxVRVMgKD8sIDApOyJf
cyk7CiAgICAgICAgIGlmICghYWRkSWNvblN0YXRlbWVudCkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50IGFkZEljb24gZmFpbGVkIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgICAgICBtX2FkZEljb25TdGF0ZW1lbnQgPSBhZGRJY29uU3RhdGVtZW50LnZh
bHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgfQpAQCAtMzg0LDE0ICszODQsMTQgQEAgT3B0
aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgVmVjdG9yPGNoYXIKICAgICAgICAgYXV0byBhZGRJY29uRGF0YVN0YXRlbWVudCA9
IG1fZGIucHJlcGFyZUhlYXBTdGF0ZW1lbnQoIklOU0VSVCBJTlRPIEljb25EYXRhIChpY29uSUQs
IGRhdGEpIFZBTFVFUyAoPywgPyk7Il9zKTsKICAgICAgICAgaWYgKCFhZGRJY29uRGF0YVN0YXRl
bWVudCkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVtZW50IGFkZElj
b25EYXRhIGZhaWxlZCIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgbV9hZGRJY29u
RGF0YVN0YXRlbWVudCA9IGFkZEljb25EYXRhU3RhdGVtZW50LnZhbHVlKCkubW92ZVRvVW5pcXVl
UHRyKCk7CiAgICAgfQogCiAgICAgaWYgKG1fYWRkSWNvblN0YXRlbWVudC0+YmluZFRleHQoMSwg
aWNvblVSTCkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiSWNvbkRhdGFiYXNl
OjphZGRJY29uIGZhaWxlZDogJXMiLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBtX2FkZEljb25TdGF0ZW1lbnQtPnN0ZXAoKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBPcHRp
b25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCBWZWN0b3I8Y2hhcgogICAgIGF1dG8gaWNvbklEID0gbV9kYi5sYXN0SW5zZXJ0Um93
SUQoKTsKICAgICBpZiAobV9hZGRJY29uRGF0YVN0YXRlbWVudC0+YmluZEludDY0KDEsIGljb25J
RCkgIT0gU1FMSVRFX09LIHx8IG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDIsIGlj
b25EYXRhLmRhdGEoKSwgaWNvbkRhdGEuc2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAg
TE9HX0VSUk9SKCJJY29uRGF0YWJhc2U6OmFkZEljb24gZmFpbGVkOiAlcyIsIG1fZGIubGFzdEVy
cm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPnN0ZXAo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IDhhZDhjNTM4OWUzN2Q4Zjk3
M2U1YmQ0NjM2ZGZiZjM1Zjk3MGE1ZjguLjUwMWE3MDgxZjlmNzI5Njc2ZmNkY2IyNjkxYmJiYjMy
NDZkMjBlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtMTc3LDcgKzE3
Nyw3IEBAIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIHdlYmtpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdEdldEF1dGhlbnRpY2F0aW9uQ2hhbGxlCiAKIHZvaWQgd2Via2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0RGlkQXV0aGVudGljYXRlKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVx
dWVzdCkKIHsKLSAgICBhdXRvKiBjcmVkZW50aWFsID0gd2Via2l0Q3JlZGVudGlhbENyZWF0ZShy
ZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwudmFsdWVPcihXZWJDb3JlOjpDcmVkZW50
aWFsKCkpKTsKKyAgICBhdXRvKiBjcmVkZW50aWFsID0gd2Via2l0Q3JlZGVudGlhbENyZWF0ZShy
ZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwudmFsdWVfb3IoV2ViQ29yZTo6Q3JlZGVu
dGlhbCgpKSk7CiAgICAgZ19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0FVVEhFTlRJQ0FU
RURdLCAwLCBjcmVkZW50aWFsKTsKICAgICB3ZWJraXRfY3JlZGVudGlhbF9mcmVlKGNyZWRlbnRp
YWwpOwogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3Jl
cXVlc3Rfc2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwoV2ViS2l0QXV0aGVudGljYXRpb25SCiAgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVUSEVOVElDQVRJT05fUkVRVUVTVChyZXF1ZXN0
KSk7CiAKICAgICBpZiAoIWNyZWRlbnRpYWwpIHsKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+cHJv
cG9zZWRDcmVkZW50aWFsID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXF1ZXN0LT5wcml2LT5w
cm9wb3NlZENyZWRlbnRpYWwgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQ1NSw4ICs0NTUsOCBAQCB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0
X2F1dGhlbnRpY2F0ZShXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcQogICAgIGlmIChj
cmVkZW50aWFsKQogICAgICAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwgPSB3
ZWJraXRDcmVkZW50aWFsR2V0Q3JlZGVudGlhbChjcmVkZW50aWFsKTsKICAgICBlbHNlCi0gICAg
ICAgIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbCA9IFdURjo6bnVsbG9wdDsKLSAg
ICByZXF1ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OlVzZUNyZWRlbnRpYWwsIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbC52YWx1ZU9y
KFdlYkNvcmU6OkNyZWRlbnRpYWwoKSkpOworICAgICAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRl
ZENyZWRlbnRpYWwgPSBzdGQ6Om51bGxvcHQ7CisgICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCByZXF1ZXN0LT5w
cml2LT5hY2NlcHRlZENyZWRlbnRpYWwudmFsdWVfb3IoV2ViQ29yZTo6Q3JlZGVudGlhbCgpKSk7
CiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVlOwogfQogCkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5jZWwoV2Vi
S2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAKICAg
ICByZXF1ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsID0gV1RGOjpu
dWxsb3B0OworICAgIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbCA9IHN0ZDo6bnVs
bG9wdDsKICAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IHRydWU7CiAKICAgICBn
X3NpZ25hbF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0FOQ0VMTEVEXSwgMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAKaW5kZXggNDNhZmQzNTQ5Nzc1ZDFhM2UwYTkzMTczMGIxOGZlYTg0Zjk3Mjdm
Zi4uNmZmZmU1OWRkZDYyNzRjMDQxZDkyMGNhMzI5Njc3ODRhZTBjZWMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcApAQCAtMTY5LDEwICsxNjksMTAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGF1dG8qIHdlYlZpZXcgPSB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UobV9z
ZXNzaW9uLT5wcml2LT53ZWJDb250ZXh0LCAmcGFnZSk7CiAgICAgICAgIGlmICghd2ViVmlldykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBhdXRvIGRpYWxvZ1R5cGUgPSB3ZWJraXRXZWJWaWV3R2V0Q3Vy
cmVudFNjcmlwdERpYWxvZ1R5cGUod2ViVmlldyk7CiAgICAgICAgIGlmICghZGlhbG9nVHlwZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBzd2l0Y2ggKGRpYWxvZ1R5cGUudmFsdWUoKSkgewogICAgICAg
ICBjYXNlIFdFQktJVF9TQ1JJUFRfRElBTE9HX0FMRVJUOgogICAgICAgICAgICAgcmV0dXJuIEFQ
STo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlOjpBbGVydDsK
QEAgLTE4NSw3ICsxODUsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNs
aWVudDo6QnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIGN1cnJlbnRQcmVzZW50YXRpb25PZlBh
Z2UoV2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKaW5kZXggMjVhZTkzNzQwYzBiYTlhMGE3N2E3NjliYmE5NTllNzkyNTM2
ZTU4Mi4uNjY1ZTBlZTc2MWQ0MjI5ZGI4MGVjODQxOGQyNzgxZTU2MDNjYzRmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIGd1aW50MTYgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfcG9ydChXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKG9yaWdpbiwgMCk7CiAKLSAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbkRhdGEucG9ydC52YWx1ZU9yKDApOworICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luRGF0YS5wb3J0LnZhbHVlX29yKDApOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNzZlZTZkMjc5
YjdhNzI2NTU2OTZiMWY4MTA0OGE1YWE5MTQ5N2RmMi4uNjczZDk1NGM3ZWExZWEwZWY4NDNhZTUz
NDZkNTAxNWRmYzNlMDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTI1NjQsNyArMjU2NCw3IEBAIHZvaWQgd2Via2l0
V2ViVmlld0Rpc21pc3NDdXJyZW50U2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiBPcHRpb25hbDxXZWJLaXRTY3JpcHREaWFsb2dUeXBlPiB3ZWJraXRXZWJWaWV3R2V0Q3VycmVu
dFNjcmlwdERpYWxvZ1R5cGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBpZiAoIXdl
YlZpZXctPnByaXYtPmN1cnJlbnRTY3JpcHREaWFsb2cpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0U2NyaXB0RGlhbG9nVHlwZT4od2ViVmlldy0+cHJpdi0+Y3VycmVudFNjcmlw
dERpYWxvZy0+dHlwZSk7CiB9CkBAIC0yODM2LDcgKzI4MzYsNyBAQCB2b2lkIHdlYmtpdFdlYlZp
ZXdTZXRDb21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbgogCiB2b2lkIHdlYmtpdFdlYlZpZXdDb25maXJtQ29tcG9zaXRpb24oV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIHdlYmtpdFdlYlZpZXdT
eW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyh3ZWJWaWV3LCB0ZXh0LCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCk7CisgICAgd2Via2l0V2ViVmlld1N5bnRoZXNpemVDb21wb3NpdGlvbktl
eVByZXNzKHdlYlZpZXcsIHRleHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKIH0KIAog
dm9pZCB3ZWJraXRXZWJWaWV3Q2FuY2VsQ29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmll
dywgY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMzgxNSw3ICszODE1LDcgQEAgdm9pZCB3ZWJraXRX
ZWJWaWV3UnVuSmF2YXNjcmlwdFdpdGhvdXRGb3JjZWRVc2VyR2VzdHVyZXMoV2ViS2l0V2ViVmll
dyogd2ViVmlldywKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0s
IGZhbHNlLCBXVEY6Om51bGxvcHQsIGZhbHNlIH07CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBz
dGQ6Om51bGxvcHQsIGZhbHNlIH07CiAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaXRo
UGFyYW1zKHdlYlZpZXcsIHNjcmlwdCwgV1RGTW92ZShwYXJhbXMpLCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKTsKIH0KIApAQCAtMzgzOCw3ICszODM4LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfcnVuX2phdmFzY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2No
YXIqIHNjcmlwdCwKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0s
IGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfTsKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyBwYXJhbXMgPSB7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgdHJ1ZSB9OwogICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0aFBh
cmFtcyh3ZWJWaWV3LCBzY3JpcHQsIFdURk1vdmUocGFyYW1zKSwgY2FuY2VsbGFibGUsIGNhbGxi
YWNrLCB1c2VyRGF0YSk7CiB9CiAKQEAgLTM5MzYsNyArMzkzNiw3IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3J1bl9qYXZhc2NyaXB0X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNv
bnN0IGdjaGFyCiAKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19u
ZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSkpOwogICAgIGF1dG8g
d29ybGQgPSBBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVkV29ybGRXaXRoTmFtZShTdHJpbmc6OmZy
b21VVEY4KHdvcmxkTmFtZSkpOwotICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBm
YWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIFdURjo6bnVsbG9wdCwgd29ybGQuZ2V0KCksIFt0
YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICBnZXRQYWdlKHdlYlZp
ZXcpLnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgo
c2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgdHJ1ZSB9LCBzdGQ6Om51bGxv
cHQsIHdvcmxkLmdldCgpLCBbdGFzayA9IFdURk1vdmUodGFzayldIChhdXRvJiYgcmVzdWx0KSB7
CiAgICAgICAgIFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNj
cmlwdFZhbHVlOwogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFpbHM7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzX3ZhbHVlKCkpCkBAIC0zOTgxLDcgKzM5ODEsNyBAQCBzdGF0
aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZwogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwogICAgIGdw
b2ludGVyIG91dHB1dFN0cmVhbURhdGEgPSBnX21lbW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRh
KEdfTUVNT1JZX09VVFBVVF9TVFJFQU0ob2JqZWN0KSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5y
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ2NoYXIqPihvdXRwdXRTdHJlYW1EYXRhKSksIFVSTCB7IH0sIGZhbHNlLCBXVEY6
Om51bGxvcHQsIHRydWUgfSwKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh7IFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+
KG91dHB1dFN0cmVhbURhdGEpKSwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgdHJ1ZSB9
LAogICAgICAgICBbdGFza10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIFJlZlB0cjxB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgICAg
ICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcAppbmRleCBhMzkyNGU5
Y2FhNDk0ZTU4OWE5MDhjNDc5MDk5YzU3ZDQ1NzM1YTNjLi42MWYwNzEzZjExNmRlZDM1YWE4Njlk
Mzc5YWM0ODMwMjJmNGQ0MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcApAQCAtOTAsNyArOTAsNyBAQCBEcmFnU291cmNlOjpE
cmFnU291cmNlKEd0a1dpZGdldCogd2ViVmlldykKICAgICAgICAgaWYgKCFkcmFnLm1fc2VsZWN0
aW9uRGF0YSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBkcmFnLm1fc2VsZWN0aW9u
RGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgZHJhZy5tX3NlbGVjdGlvbkRhdGEgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGRyYWcubV9kcmFnID0gbnVsbHB0cjsKIAogICAgICAgICBHZGtE
ZXZpY2UqIGRldmljZSA9IGdka19kcmFnX2NvbnRleHRfZ2V0X2RldmljZShjb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAK
aW5kZXggZDU1ZGZiMzBmOTIwOTdlMzlkM2EzYzc4NmUyMTJmMmZmNDA1MWYxOC4uZmZlZTFiMDQ5
MjVmYzBiNTI2MDljYWNlYjc2MWU2YWNjMzYxOWRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogICAgICAgICBpZiAoZHJhZy5tX2RyYWcuZ2V0KCkg
IT0gZ3RrRHJhZykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBkcmFnLm1fc2VsZWN0
aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgZHJhZy5tX3NlbGVjdGlvbkRhdGEgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGRyYWcubV9kcmFnID0gbnVsbHB0cjsKIAogICAgICAgICBH
ZGtEZXZpY2UqIGRldmljZSA9IGdka19kcmFnX2dldF9kZXZpY2UoZ3RrRHJhZyk7CkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KICAgICAgICAgaWYgKGRyYWcubV9k
cmFnLmdldCgpICE9IGd0a0RyYWcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZHJh
Zy5tX3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWcubV9zZWxlY3Rp
b25EYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51bGxwdHI7CiAg
ICAgfSksIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldC5oCmluZGV4IGY5YzVkZDc2MDhhMDlhMTEyMzRiMzQxOTQ1ZjZmZTY1ODllNDAzZGMuLmU5
ZTQ4ZmIwODdmZWI3ZDlhNjNiMjc5ODdmMjlkZmNiNmFlMDM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFBlcmZvcm1BY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGFj
Y2VwdChQbGF0Zm9ybURyb3BDb250ZXh0KiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+ID0g
V1RGOjpudWxsb3B0LCB1bnNpZ25lZCA9IDApOworICAgIHZvaWQgYWNjZXB0KFBsYXRmb3JtRHJv
cENvbnRleHQqLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gPSBzdGQ6Om51bGxvcHQsIHVu
c2lnbmVkID0gMCk7CiAgICAgdm9pZCBlbnRlcihXZWJDb3JlOjpJbnRQb2ludCYmLCB1bnNpZ25l
ZCA9IDApOwogICAgIHZvaWQgdXBkYXRlKFdlYkNvcmU6OkludFBvaW50JiYsIHVuc2lnbmVkID0g
MCk7CiAgICAgdm9pZCBsZWF2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCA2YmY0OWE0MTI4OWMxZjc5OWY0N2MzZTgx
YzkyZmZlYzcyMDAzMDM4Li44Y2ZhNzBiODI4YTIwNDUzYjc5MzM4ZGQwYjRjZjQ1YjM5ZjdjMGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGszLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6YWNjZXB0KEdka0Ry
YWdDb250ZXh0KiBkcm9wLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gcG9zaXRpCiAgICAg
bV9kcm9wID0gZHJvcDsKICAgICBtX3Bvc2l0aW9uID0gcG9zaXRpb247CiAgICAgbV9kYXRhUmVx
dWVzdENvdW50ID0gMDsKLSAgICBtX3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9zZWxlY3Rpb25EYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gV2ViQ29yZSBuZWVkcyB0
aGUgc2VsZWN0aW9uIGRhdGEgdG8gZGVjaWRlLCBzbyB3ZSBuZWVkIHRvIHByZWxvYWQgdGhlCiAg
ICAgLy8gZGF0YSBvZiB0YXJnZXRzIHdlIHN1cHBvcnQuIE9uY2UgYWxsIGRhdGEgcmVxdWVzdHMg
YXJlIGRvbmUgd2Ugc3RhcnQKQEAgLTI0Niw4ICsyNDYsOCBAQCB2b2lkIERyb3BUYXJnZXQ6Omxl
YXZlVGltZXJGaXJlZCgpCiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAKICAgICBtX2Ryb3AgPSBudWxscHRyOwotICAgIG1fcG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7
Ci0gICAgbV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9zaXRpb24gPSBz
dGQ6Om51bGxvcHQ7CisgICAgbV9zZWxlY3Rpb25EYXRhID0gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIERyb3BUYXJnZXQ6OmxlYXZlKCkKQEAgLTI3Nyw4ICsyNzcsOCBAQCB2b2lkIERyb3BUYXJn
ZXQ6OmRyb3AoSW50UG9pbnQmJiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKICAgICBndGtfZHJh
Z19maW5pc2gobV9kcm9wLmdldCgpLCBUUlVFLCBGQUxTRSwgdGltZSk7CiAKICAgICBtX2Ryb3Ag
PSBudWxscHRyOwotICAgIG1fcG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9zZWxlY3Rp
b25EYXRhID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7Cisg
ICAgbV9zZWxlY3Rpb25EYXRhID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrNC5jcHAKaW5kZXggMWNkYTNhYTIzODhlMDc2OGJiNDZjNzk1NWJhMmRlMTAwZmNiODY5OS4u
MjQwNmUwZjg2NzM2ZTVkOTAyZWFlMTNhMGI5MTA0MTNjYjEwZjdiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTI5NCwx
NCArMjk0LDE0IEBAIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQogICAgIGF1dG8qIHBhZ2UgPSB3
ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7
CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgYXV0byBwb3NpdGlvbiA9IG1fcG9zaXRpb24udmFs
dWVPcihJbnRQb2ludCgpKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gbV9wb3NpdGlvbi52YWx1ZV9v
cihJbnRQb2ludCgpKTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRhLnZh
bHVlKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgeyB9KTsKICAgICBwYWdlLT5kcmFnRXhpdGVkKGRy
YWdEYXRhKTsKICAgICBwYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIAogICAg
IG1fZHJvcCA9IG51bGxwdHI7Ci0gICAgbV9wb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKLSAgICBt
X3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wb3NpdGlvbiA9IHN0ZDo6bnVs
bG9wdDsKKyAgICBtX3NlbGVjdGlvbkRhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jYW5jZWxs
YWJsZSA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UG9wdXBNZW51LmNwcAppbmRleCA4YjExZWFjNmRkOGFlM2ZkNzIyYjIzZTM0
MDdlZGU3NzI2ODI0YTc3Li5iZWY4MzRiZjQ2Yjc4M2E2OGM4Yjc5NWQ4YjE1N2M3NDJiZDYzYmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVw
TWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1
cE1lbnUuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFdlYktpdFBvcHVwTWVudTo6V2ViS2l0UG9wdXBN
ZW51KEd0a1dpZGdldCogd2ViVmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYKIAogc3Rh
dGljIHZvaWQgbWVudUNsb3NlQ2FsbGJhY2soV2ViS2l0UG9wdXBNZW51KiBwb3B1cE1lbnUpCiB7
Ci0gICAgcG9wdXBNZW51LT5hY3RpdmF0ZUl0ZW0oV1RGOjpudWxsb3B0KTsKKyAgICBwb3B1cE1l
bnUtPmFjdGl2YXRlSXRlbShzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYktpdFBvcHVwTWVu
dTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
IGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIHBsYXRmb3JtRGF0YSwgaW50MzJf
dCBzZWxlY3RlZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCmluZGV4IDA5Zjc2MjNiZjJkYjRlZDk5ZGFiNTdlMzczZTY4NDExZDM2ZGFiZDUuLjQ4
Mzg4ZDY5MTBlMzQ5ZTY5OGExMDc0MzE1Zjg2MjYyNWI5MGQ0MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsg
fSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkpOwotICAgICAgICBtX2luc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwgcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1swXSkudmFsdWVPcigwKSwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSkudmFsdWVP
cigwKSwgdG9rZW5zWzJdKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5z
cGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMF0pLnZhbHVlX29yKDApLCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzFdKS52YWx1ZV9vcigwKSwgdG9rZW5z
WzJdKTsKICAgICB9CiAKICAgICBib29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCmluZGV4IGU3ODI4NTQ5NGM4MjljMDViODYwNDljNTllNWQ0ZWZmM2ZkYzlkZjkuLmY1
NzM3ZWQ5YjMyNDk5MTViYjQ0MTZhOTI1NjNlNGI1OGFhNjVkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0x
MjIzLDcgKzEyMjMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNz
ZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBpbnQgYwogICAgIGlmIChidXR0b24g
PT0gR0RLX0JVVFRPTl9TRUNPTkRBUlkpCiAgICAgICAgIHByaXYtPmNvbnRleHRNZW51RXZlbnQu
cmVzZXQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFu
ZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCB7IGNsYW1wVG9JbnRlZ2Vy
KHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9LCBjbGlja0NvdW50LCBXVEY6Om51bGxvcHQpKTsKKyAg
ICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChl
dmVudCwgeyBjbGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSwgY2xpY2tDb3Vu
dCwgc3RkOjpudWxsb3B0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQnV0
dG9uUmVsZWFzZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBpbnQgY2xpY2tDb3Vu
dCwgZG91YmxlIHgsIGRvdWJsZSB5LCBHdGtHZXN0dXJlKiBnZXN0dXJlKQpAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VCdXR0b25SZWxlYXNlZChXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGludAogICAgIGF1dG8qIHNlcXVlbmNlID0gZ3Rr
X2dlc3R1cmVfc2luZ2xlX2dldF9jdXJyZW50X3NlcXVlbmNlKEdUS19HRVNUVVJFX1NJTkdMRShn
ZXN0dXJlKSk7CiAgICAgZ3RrX2dlc3R1cmVfc2V0X3NlcXVlbmNlX3N0YXRlKGdlc3R1cmUsIHNl
cXVlbmNlLCBHVEtfRVZFTlRfU0VRVUVOQ0VfQ0xBSU1FRCk7CiAKLSAgICBwcml2LT5wYWdlUHJv
eHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChndGtfZ2VzdHVyZV9nZXRf
bGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSksIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1w
VG9JbnRlZ2VyKHkpIH0sIGNsaWNrQ291bnQsIFdURjo6bnVsbG9wdCkpOworICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGd0a19nZXN0dXJl
X2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVlbmNlKSwgeyBjbGFtcFRvSW50ZWdlcih4KSwg
Y2xhbXBUb0ludGVnZXIoeSkgfSwgY2xpY2tDb3VudCwgc3RkOjpudWxsb3B0KSk7CiB9CiAjZW5k
aWYKIApAQCAtMTI1OSw3ICsxMjU5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSW52ZXJ0RGlyZWN0
aW9uRm9yU2Nyb2xsRXZlbnQoV2ViSGl0VGVzdFJlc3VsdERhdGE6OklzU2Nyb2xsYmEKIH0KIAog
I2lmICFVU0UoR1RLNCkKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxF
dmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50KiBldmVudCwgT3B0
aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IHBoYXNlID0gV1RGOjpudWxsb3B0LCBPcHRpb25h
bDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gbW9tZW50dW0gPSBXVEY6Om51bGxvcHQpCitzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVsRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBHZGtFdmVudCogZXZlbnQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBo
YXNlPiBwaGFzZSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+
IG1vbWVudHVtID0gc3RkOjpudWxsb3B0KQogewogICAgIFZpZXdHZXN0dXJlQ29udHJvbGxlciog
Y29udHJvbGxlciA9IHdlYmtpdFdlYlZpZXdCYXNlVmlld0dlc3R1cmVDb250cm9sbGVyKHdlYlZp
ZXdCYXNlKTsKICAgICBpZiAoY29udHJvbGxlciAmJiBjb250cm9sbGVyLT5pc1N3aXBlR2VzdHVy
ZUVuYWJsZWQoKSkgewpAQCAtMTI3NSw3ICsxMjc1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwg
R2QKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKICAgICBBU1NFUlQoIXByaXYtPmRpYWxvZyk7CiAgICAgaWYgKHBoYXNlKQotICAgICAgICBw
cml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChldmVu
dCwgcGhhc2UudmFsdWUoKSwgbW9tZW50dW0udmFsdWVPcihXZWJXaGVlbEV2ZW50OjpQaGFzZTo6
UGhhc2VOb25lKSkpOworICAgICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQo
TmF0aXZlV2ViV2hlZWxFdmVudChldmVudCwgcGhhc2UudmFsdWUoKSwgbW9tZW50dW0udmFsdWVf
b3IoV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZSkpKTsKICAgICBlbHNlCiAgICAgICAg
IHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2
ZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3R3RrLmNwcAppbmRleCA4YjBjODkwYzIxYmQyZTUzZDc4MDNmMjBlOGRmYTQwYzdj
MjEwMmJjLi45N2QwOWRmZmJjNjc2Y2M1Y2QzODU1NWMxMTI1YjQ0MGJlYzdkMTJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5j
cHAKQEAgLTQ2Myw1ICs0NjMsNSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2dyb3Vu
ZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHZGtSR0JBKiByZ2JhKQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwocmdiYSk7CiAKICAgICBhdXRvJiBwYWdlID0gKndlYmtpdFdlYlZpZXdCYXNl
R2V0UGFnZShyZWludGVycHJldF9jYXN0PFdlYktpdFdlYlZpZXdCYXNlKj4od2ViVmlldykpOwot
ICAgICpyZ2JhID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKS52YWx1ZU9yKFdlYkNvcmU6OkNvbG9y
Ojp3aGl0ZSk7CisgICAgKnJnYmEgPSBwYWdlLmJhY2tncm91bmRDb2xvcigpLnZhbHVlX29yKFdl
YkNvcmU6OkNvbG9yOjp3aGl0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDhjYzMzOTc2YzMzNDY1MzM3ZDU2MDAwMjA1YzNm
NTNlMTYyODYxNDkuLmM3MjNhNzNiOGE2ZTA3YTRjMTkzMTc3ZGVlYTM5MTA4YTQ1YTE5NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBA
IC02NTgsMjMgKzY1OCwyMyBAQCAtICh2b2lkKV9wcm9jZXNzV2lsbFN3YXBPckRpZEV4aXQKICAg
ICBfYW5pbWF0ZWRSZXNpemVPcmlnaW5hbENvbnRlbnRXaWR0aCA9IDA7CiAgICAgX2FuaW1hdGVk
UmVzaXplT2xkQm91bmRzID0geyB9OwogICAgIFtfY29udGVudFZpZXcgc2V0SGlkZGVuOk5PXTsK
LSAgICBfc2Nyb2xsT2Zmc2V0VG9SZXN0b3JlID0gV1RGOjpudWxsb3B0OwotICAgIF91bm9ic2N1
cmVkQ2VudGVyVG9SZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgIF9zY3JvbGxPZmZzZXRUb1Jl
c3RvcmUgPSBzdGQ6Om51bGxvcHQ7CisgICAgX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmUgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgX3Njcm9sbFZpZXdCYWNrZ3JvdW5kQ29sb3IgPSBXZWJDb3JlOjpD
b2xvcigpOwogICAgIF9pbnZva2luZ1VJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgPSBOTzsK
ICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzRm9yVUlTY3JvbGxWaWV3RGVs
ZWdhdGVDYWxsYmFjayA9IE5POwogICAgIF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHNGb3JBbnlSZWFzb24gPSBOTzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzRm9yVW5zdGFibGVTY3JvbGxWaWV3ID0gTk87CiAgICAgX2N1cnJlbnRseUFkanVzdGluZ1Nj
cm9sbFZpZXdJbnNldHNGb3JLZXlib2FyZCA9IE5POwotICAgIF9sYXN0U2VudFZpZXdMYXlvdXRT
aXplID0gV1RGOjpudWxsb3B0OwotICAgIF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9
IFdURjo6bnVsbG9wdDsKLSAgICBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiA9IFdURjo6bnVs
bG9wdDsKKyAgICBfbGFzdFNlbnRWaWV3TGF5b3V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBf
bGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2xhc3RT
ZW50RGV2aWNlT3JpZW50YXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAKLSAgICBfZnJvemVuVmlzaWJs
ZUNvbnRlbnRSZWN0ID0gV1RGOjpudWxsb3B0OwotICAgIF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVu
dFJlY3QgPSBXVEY6Om51bGxvcHQ7CisgICAgX2Zyb3plblZpc2libGVDb250ZW50UmVjdCA9IHN0
ZDo6bnVsbG9wdDsKKyAgICBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gc3RkOjpudWxs
b3B0OwogCiAgICAgX2ZpcnN0UGFpbnRBZnRlckNvbW1pdExvYWRUcmFuc2FjdGlvbklEID0geyB9
OwotICAgIF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0b3JlID0gV1RGOjpudWxsb3B0
OworICAgIF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0b3JlID0gc3RkOjpudWxsb3B0
OwogCiAgICAgX2xhc3RUcmFuc2FjdGlvbklEID0geyB9OwogCkBAIC03OTQsNyArNzk0LDcgQEAg
LSAodm9pZClfdHJhY2tUcmFuc2FjdGlvbkNvbW1pdDooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYpbGF5ZXIKICAgICAgICAgYXV0byB0aW1lU2luY2VGaXJzdFJlcXVl
c3RXaXRoUGVuZGluZ0NvbW1pdCA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gKl90aW1lT2ZGaXJz
dFZpc2libGVDb250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0OwogICAgICAgICBpZiAo
dGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPiBkZWxheUJlZm9yZU5vQ29t
bWl0c0xvZ2dpbmcpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAocGFn
ZVByb3h5SUQ9JWxsdSkgLVtXS1dlYlZpZXcgX2RpZENvbW1pdExheWVyVHJlZTpdIC0gZmluYWxs
eSByZWNlaXZlZCBjb21taXQgJS4yZnMgYWZ0ZXIgdmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRl
IHJlcXVlc3Q7IHRyYW5zYWN0aW9uSUQgJWxsdSIsIHNlbGYsIF9wYWdlLT5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgdGltZVNpbmNlRmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQudmFsdWUo
KSwgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJhbnNhY3Rpb25JRCgpLnRvVUludDY0KCkpOwotICAg
ICAgICBfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1p
dCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlV2l0aFBlbmRpbmdDb21taXQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC04
MzEsMTMgKzgzMSwxMyBAQCAtIChCT09MKV9yZXN0b3JlU2Nyb2xsQW5kWm9vbVN0YXRlRm9yVHJh
bnNhY3Rpb246KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVAogICAgIGlmICghX2ZpcnN0
VHJhbnNhY3Rpb25JREFmdGVyUGFnZVJlc3RvcmUgfHwgbGF5ZXJUcmVlVHJhbnNhY3Rpb24udHJh
bnNhY3Rpb25JRCgpIDwgX2ZpcnN0VHJhbnNhY3Rpb25JREFmdGVyUGFnZVJlc3RvcmUudmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgX2ZpcnN0VHJhbnNhY3Rpb25JREFmdGVyUGFn
ZVJlc3RvcmUgPSBXVEY6Om51bGxvcHQ7CisgICAgX2ZpcnN0VHJhbnNhY3Rpb25JREFmdGVyUGFn
ZVJlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBCT09MIG5lZWRVcGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzID0gTk87CiAKICAgICBpZiAoX3Njcm9sbE9mZnNldFRvUmVzdG9yZSkgewogICAg
ICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZFNjcm9sbE9mZnNldCA9IF9zY3JvbGxPZmZz
ZXRUb1Jlc3RvcmUudmFsdWUoKTsKLSAgICAgICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBpZiAoV1RGOjphcmVFc3NlbnRpYWxseUVxdWFsPGZsb2F0Pihjb250ZW50
Wm9vbVNjYWxlKHNlbGYpLCBfc2NhbGVUb1Jlc3RvcmUpKSB7CiAgICAgICAgICAgICBzY2FsZWRT
Y3JvbGxPZmZzZXQuc2NhbGUoX3NjYWxlVG9SZXN0b3JlKTsKQEAgLTg1Miw3ICs4NTIsNyBAQCAt
IChCT09MKV9yZXN0b3JlU2Nyb2xsQW5kWm9vbVN0YXRlRm9yVHJhbnNhY3Rpb246KGNvbnN0IFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlVAogCiAgICAgaWYgKF91bm9ic2N1cmVkQ2VudGVyVG9SZXN0
b3JlKSB7CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgdW5vYnNjdXJlZENlbnRlclRvUmVz
dG9yZSA9IF91bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlLnZhbHVlKCk7Ci0gICAgICAgIF91bm9i
c2N1cmVkQ2VudGVyVG9SZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgICAgICBfdW5vYnNjdXJl
ZENlbnRlclRvUmVzdG9yZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoV1RGOjphcmVF
c3NlbnRpYWxseUVxdWFsPGZsb2F0Pihjb250ZW50Wm9vbVNjYWxlKHNlbGYpLCBfc2NhbGVUb1Jl
c3RvcmUpKSB7CiAgICAgICAgICAgICBDR1JlY3QgdW5vYnNjdXJlZFJlY3QgPSBVSUVkZ2VJbnNl
dHNJbnNldFJlY3Qoc2VsZi5ib3VuZHMsIF9vYnNjdXJlZEluc2V0cyk7CkBAIC05NzEsNyArOTcx
LDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VTY3JvbGxQb3NpdGlvbjooT3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRQb2ludD4pc2Nyb2xsUG9zaXRpb24KICAgICBpZiAoc2Nyb2xsUG9zaXRpb24pCiAg
ICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQoc2Nyb2xsUG9zaXRp
b24udmFsdWUoKSksIFdlYkNvcmU6OnRvRmxvYXRTaXplKHNjcm9sbE9yaWdpbikpOwogICAgIGVs
c2UKLSAgICAgICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIF9vYnNjdXJl
ZEluc2V0c1doZW5TYXZlZCA9IG9ic2N1cmVkSW5zZXRzOwogICAgIF9zY2FsZVRvUmVzdG9yZSA9
IHNjYWxlOwpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgLSAodm9pZClfc2Nyb2xsVmlldzooVUlTY3Jv
bGxWaWV3ICopc2Nyb2xsVmlldyBhc3luY2hyb25vdXNseUhhbmRsZVNjcm9sbEV2ZW50OigKICAg
ICB9CiAKICAgICBpZiAoc2Nyb2xsRXZlbnQucGhhc2UgPT0gVUlTY3JvbGxQaGFzZUJlZ2FuKSB7
Ci0gICAgICAgIF9jdXJyZW50U2Nyb2xsR2VzdHVyZVN0YXRlID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
X3doZWVsRXZlbnRDb3VudEluQ3VycmVudFNjcm9sbEdlc3R1cmUgPSAwOwogICAgIH0KIApAQCAt
MjE2OSw3ICsyMTY5LDcgQEAgLSAodm9pZClfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWlu
RnJhbWUKIAogc3RhdGljIFdlYkNvcmU6OkZsb2F0U2l6ZSBhY3RpdmVNYXhpbXVtVW5vYnNjdXJl
ZFNpemUoV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBDR1JlY3QmIGJvdW5kcykKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKHdlYlZpZXctPl9tYXhpbXVtVW5vYnNjdXJlZFNpemVP
dmVycmlkZS52YWx1ZU9yKGJvdW5kcy5zaXplKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0
U2l6ZSh3ZWJWaWV3LT5fbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUudmFsdWVfb3IoYm91
bmRzLnNpemUpKTsKIH0KIAogc3RhdGljIGludDMyX3QgYWN0aXZlT3JpZW50YXRpb24oV0tXZWJW
aWV3ICp3ZWJWaWV3KQpAQCAtMjQxOSw4ICsyNDE5LDggQEAgLSAodm9pZClfbmF2aWdhdGlvbkdl
c3R1cmVEaWRCZWdpbgogCiAtICh2b2lkKV9uYXZpZ2F0aW9uR2VzdHVyZURpZEVuZAogewotICAg
IF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBXVEY6Om51bGxvcHQ7Ci0gICAgX2Zyb3plblVu
b2JzY3VyZWRDb250ZW50UmVjdCA9IFdURjo6bnVsbG9wdDsKKyAgICBfZnJvemVuVmlzaWJsZUNv
bnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OworICAgIF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJl
Y3QgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoX2NvbnRlbnRWaWV3U2hvdWxkQmVjb21lRmly
c3RSZXNwb25kZXJBZnRlck5hdmlnYXRpb25HZXN0dXJlKSB7CiAgICAgICAgIGlmIChzZWxmLndp
bmRvdyAmJiAhW19jb250ZW50VmlldyBpc0ZpcnN0UmVzcG9uZGVyXSkKQEAgLTI1NDMsNyArMjU0
Myw3IEBAIC0gKHZvaWQpX3NldFVJRXZlbnRBdHRyaWJ1dGlvbjooVUlFdmVudEF0dHJpYnV0aW9u
ICopYXR0cmlidXRpb24KICAgICAgICAgKTsKICAgICAgICAgX3BhZ2UtPnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpKTsKICAgICB9IGVsc2UKLSAgICAgICAg
X3BhZ2UtPnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURjo6bnVsbG9wdCk7CisgICAgICAg
IF9wYWdlLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOwogI2VuZGlm
CiB9CiAKQEAgLTI1NzEsNyArMjU3MSw3IEBAIC0gKENHUmVjdClfY29udGVudFZpc2libGVSZWN0
CiAtIChDR1NpemUpX21pbmltdW1MYXlvdXRTaXplT3ZlcnJpZGUKIHsKICAgICBBU1NFUlQoX3Zp
ZXdMYXlvdXRTaXplT3ZlcnJpZGUpOwotICAgIHJldHVybiBfdmlld0xheW91dFNpemVPdmVycmlk
ZS52YWx1ZU9yKENHU2l6ZVplcm8pOworICAgIHJldHVybiBfdmlld0xheW91dFNpemVPdmVycmlk
ZS52YWx1ZV9vcihDR1NpemVaZXJvKTsKIH0KIAogLSAodm9pZClfc2V0Vmlld0xheW91dFNpemVP
dmVycmlkZTooQ0dTaXplKXZpZXdMYXlvdXRTaXplT3ZlcnJpZGUKQEAgLTI1ODYsNyArMjU4Niw3
IEBAIC0gKHZvaWQpX3NldFZpZXdMYXlvdXRTaXplT3ZlcnJpZGU6KENHU2l6ZSl2aWV3TGF5b3V0
U2l6ZU92ZXJyaWRlCiAtIChDR1NpemUpX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlCiB7
CiAgICAgQVNTRVJUKF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSk7Ci0gICAgcmV0dXJu
IF9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZS52YWx1ZU9yKENHU2l6ZVplcm8pOworICAg
IHJldHVybiBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUudmFsdWVfb3IoQ0dTaXplWmVy
byk7CiB9CiAKIC0gKHZvaWQpX3NldE1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1Np
emUpc2l6ZQpAQCAtMzEzOCwxNCArMzEzOCwxNCBAQCAtICh2b2lkKV9vdmVycmlkZUxheW91dFBh
cmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZQog
CiAtICh2b2lkKV9jbGVhck92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycwogewotICAgIF92aWV3TGF5
b3V0U2l6ZU92ZXJyaWRlID0gV1RGOjpudWxsb3B0OwotICAgIF9tYXhpbXVtVW5vYnNjdXJlZFNp
emVPdmVycmlkZSA9IFdURjo6bnVsbG9wdDsKKyAgICBfdmlld0xheW91dFNpemVPdmVycmlkZSA9
IHN0ZDo6bnVsbG9wdDsKKyAgICBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzPiB2aWV3cG9ydEFyZ3VtZW50c0Zyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqdmlld3BvcnRBcmd1bWVudFBhaXJzLCBib29sIHZpZXdwb3J0
Rml0RW5hYmxlZCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1l
bnRzPiB2aWV3cG9ydEFyZ3VtZW50c0Zyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBOU1N0cmluZyAqPiAqdmlld3BvcnRBcmd1bWVudFBhaXJzLCBib29sIHZpZXdwb3J0Rml0
RW5hYmxlZCkKIHsKICAgICBpZiAoIXZpZXdwb3J0QXJndW1lbnRQYWlycykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKFdlYkNvcmU6OlZpZXdw
b3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KaW5kZXggZGEwZTRmOGUx
NGUyY2UxYTliN2U4YjM5Y2E5ZDIxNmQxMDBkMjVlZC4uY2UxZmJlMGFkOWU3ZWU2Y2QzN2E2MDI5
N2I2YTJmNWU3YmY0YWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQpAQCAtNDA0LDcgKzQwNCw3IEBAIC0gKHZv
aWQpX3NldFVJRXZlbnRBdHRyaWJ1dGlvbkZvclRlc3Rpbmc6KFVJRXZlbnRBdHRyaWJ1dGlvbiAq
KWF0dHJpYnV0aW9uIHdpdGhOCiAKICAgICAgICAgX3BhZ2UtPnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQpKTsKICAgICB9IGVsc2UKLSAgICAgICAgX3BhZ2Ut
PnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURjo6bnVsbG9wdCk7CisgICAgICAgIF9wYWdl
LT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJW
aWV3TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMu
bW0KaW5kZXggNDNkMTZhZDI4ZjU0MWE2ZmY3YmVjMjMyODAyNTg2Mjg4MzNjM2FhNC4uYTZlMjBh
NTM5ZTBiNzcyOTJhYTBkZWMzZGE4OWYwZjYxNjVhZDljYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0KQEAgLTcyLDcgKzcyLDcgQEAgT3B0
aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiB0b0NvcmVTY3JvbGxiYXJTdHls
ZShfV0tPdmVybGF5U2Nyb2xsYmEKICAgICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUF1
dG9tYXRpYzoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdL
SW1wbGVtZW50YXRpb25NYWMpIDxOU1RleHRJbnB1dENsaWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKaW5kZXggZDUzM2ExNDliZDYyODA3NDA2MjQ0ZTUx
NTBhYWU5OTBmZWQ0ZTFjYS4uZTY5OTVlMjYyZGNlN2FiNDExZDJhMmI3N2MzYWY5MTEzNmZmZTQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0z
MTIsNyArMzEyLDcgQEAgdm9pZCBWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KHN0cnVjdCB3cGVf
aW5wdXRfa2V5Ym9hcmRfZXZlbnQqIGV2ZW50KQogICAgIGlmIChmaWx0ZXJSZXN1bHQuaGFuZGxl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZSgpLmhhbmRsZUtleWJvYXJkRXZlbnQoV2Vi
S2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCBldmVudC0+cHJlc3NlZCA/IGZpbHRl
clJlc3VsdC5rZXlUZXh0IDogU3RyaW5nKCksIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRs
ZWRCeUlucHV0TWV0aG9kOjpObywgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpKTsKKyAgICBw
YWdlKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQo
ZXZlbnQsIGV2ZW50LT5wcmVzc2VkID8gZmlsdGVyUmVzdWx0LmtleVRleHQgOiBTdHJpbmcoKSwg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiB2b2lkIFZpZXc6OnN5bnRoZXNpemVDb21wb3Np
dGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiB1bmRlcmxpbmVzLCBPcHRpb25hbDxFZGl0aW5nUmFu
Z2U+JiYgc2VsZWN0aW9uUmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFBvcHVwTWVudS5jcHAKaW5kZXggNWVkZmU3NmEwNzY2MGU1MDJhNTI2YTBk
N2E5ZDlhYzg1Y2QyOTg0MS4uOTkxNmYzZDdhMDc4N2JjMWUzMzZiMzQ1OGU2NDA0MWMxNzg2NDJk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1
cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9w
dXBNZW51LmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJLaXRQb3B1cE1lbnU6OldlYktpdFBvcHVw
TWVudShXS1dQRTo6VmlldyYgdmlldywgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYgYwogCiBz
dGF0aWMgdm9pZCBtZW51Q2xvc2VDYWxsYmFjayhXZWJLaXRQb3B1cE1lbnUqIHBvcHVwTWVudSkK
IHsKLSAgICBwb3B1cE1lbnUtPmFjdGl2YXRlSXRlbShXVEY6Om51bGxvcHQpOworICAgIHBvcHVw
TWVudS0+YWN0aXZhdGVJdGVtKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViS2l0UG9wdXBN
ZW51OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYgcGxhdGZvcm1EYXRhLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViS2l0UG9wdXBNZW51
OjpzZWxlY3RJdGVtKHVuc2lnbmVkIGl0ZW1JbmRleCkKIHZvaWQgV2ViS2l0UG9wdXBNZW51Ojph
Y3RpdmF0ZUl0ZW0oT3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKIHsKICAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywg
aXRlbUluZGV4LnZhbHVlT3IobV9zZWxlY3RlZEl0ZW0udmFsdWVPcigtMSkpKTsKKyAgICAgICAg
bV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBpdGVtSW5kZXgudmFsdWVf
b3IobV9zZWxlY3RlZEl0ZW0udmFsdWVfb3IoLTEpKSk7CiAgICAgaWYgKG1fbWVudSkgewogICAg
ICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV9tZW51LmdldCgpLCBH
X1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCB0aGlzKTsKICAgICAg
ICAgbV9tZW51ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCmluZGV4IDU5NjM2Njg1NWJmMzVlZTU0MTAxYzYw
ZGU1ZDVhMzk1NjcxMGIwYzEuLjIyNDAzMDRjOTYxZTEwMzg5MmRlYmYyODMzYjAwMWJmMDAxZGJi
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2Vi
Vmlld1dQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRX
ZWJWaWV3V1BFLmNwcApAQCAtMjI1LDUgKzIyNSw1IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X2dl
dF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbG9yKiBj
CiAgICAgYXV0byYgcGFnZSA9IHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpOwogCiAgICAg
YXV0byYgd2ViQ29yZUNvbG9yID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKTsKLSAgICB3ZWJraXRD
b2xvckZpbGxGcm9tV2ViQ29yZUNvbG9yKHdlYkNvcmVDb2xvci52YWx1ZU9yKFdlYkNvcmU6OkNv
bG9yOjp3aGl0ZSksIGNvbG9yKTsKKyAgICB3ZWJraXRDb2xvckZpbGxGcm9tV2ViQ29yZUNvbG9y
KHdlYkNvcmVDb2xvci52YWx1ZV9vcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpLCBjb2xvcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKaW5kZXggODA0OTE4MmU2ODdjOTFkNzI2NDAz
YTdiMzE4NGY1NDliZDY3MjU3Yy4uZTM1ZTUxNGIzMzJiZDNlMGIzOTFjMjVhM2FmNzA2NDVkOWM5
YjI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBT
ZWNvbmRzIFNpbXVsYXRlZElucHV0S2V5RnJhbWU6Om1heGltdW1EdXJhdGlvbigpIGNvbnN0CiAg
ICAgLy8gVGhlICJjb21wdXRlIHRoZSB0aWNrIGR1cmF0aW9uIiBhbGdvcml0aG0gKMKnMTcuNCBE
aXNwYXRjaGluZyBBY3Rpb25zKS4KICAgICBTZWNvbmRzIHJlc3VsdDsKICAgICBmb3IgKGF1dG8m
IGVudHJ5IDogc3RhdGVzKQotICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5
LnNlY29uZC5kdXJhdGlvbi52YWx1ZU9yKFNlY29uZHMoMCkpKTsKKyAgICAgICAgcmVzdWx0ID0g
c3RkOjptYXgocmVzdWx0LCBlbnRyeS5zZWNvbmQuZHVyYXRpb24udmFsdWVfb3IoU2Vjb25kcygw
KSkpOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmtleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGlt
ZXJGaXJlZCgpCiAKICAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CiAg
ICAgICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNv
bXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKLSAgICAgICAgZmluaXNoKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOwogICAgIH0KIH0KIApAQCAtMTQ2LDcgKzE0
Niw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uVG9OZXh0S2V5
RnJhbWUoKQogewogICAgICsrbV9rZXlmcmFtZUluZGV4OwogICAgIGlmIChtX2tleWZyYW1lSW5k
ZXggPT0gbV9rZXlmcmFtZXMuc2l6ZSgpKSB7Ci0gICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGZpbmlzaERpc3BhdGNoaW5nKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dElucHV0U291cmNlU3RhdGUoKQogewog
ICAgIGlmIChpc0tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRlKCkpIHsKICAgICAgICAgYXV0byBm
aW5pc2ggPSBzdGQ6OmV4Y2hhbmdlKG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRs
ZXIsIG51bGxwdHIpOwotICAgICAgICBmaW5pc2goV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZmlu
aXNoKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwNywzNCAr
MjA3LDM0IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uQmV0d2Vl
bktleUZyYW1lcyhjb25zdCBTaW11bGF0ZWRJbnB1dEtlCiB2b2lkIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcjo6cmVzb2x2ZUxvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjdXJyZW50
TG9jYXRpb24sIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgTW91c2VNb3Zl
T3JpZ2luIG9yaWdpbiwgT3B0aW9uYWw8U3RyaW5nPiBub2RlSGFuZGxlLCBGdW5jdGlvbjx2b2lk
IChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWxvY2F0aW9uKSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRMb2NhdGlvbiwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3VycmVudExvY2F0aW9uLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc3dpdGNoIChvcmlnaW4pIHsKICAgICBj
YXNlIE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQ6Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGxvY2F0aW9uLnZhbHVlKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGxvY2F0aW9uLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTW91c2VNb3ZlT3JpZ2luOjpQb2ludGVyOiB7CiAgICAgICAgIFdlYkNvcmU6OkludFBv
aW50IGRlc3RpbmF0aW9uKGN1cnJlbnRMb2NhdGlvbik7CiAgICAgICAgIGRlc3RpbmF0aW9uLm1v
dmVCeShsb2NhdGlvbi52YWx1ZSgpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVzdGlu
YXRpb24sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlc3RpbmF0
aW9uLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBNb3Vz
ZU1vdmVPcmlnaW46OkVsZW1lbnQ6IHsKICAgICAgICAgbV9jbGllbnQudmlld3BvcnRJblZpZXdD
ZW50ZXJQb2ludE9mRWxlbWVudChtX3BhZ2UsIG1fZnJhbWVJRCwgbm9kZUhhbmRsZS52YWx1ZSgp
LCBbZGVzdGluYXRpb24gPSBsb2NhdGlvbi52YWx1ZSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5W
aWV3Q2VudGVyUG9pbnQsIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgZXJyb3IpOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkg
ewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgQVVUT01B
VElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShFbGVtZW50Tm90SW50ZXJhY3RhYmxlKSk7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBBVVRPTUFUSU9O
X0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKEVsZW1lbnROb3RJbnRlcmFjdGFibGUpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRlc3RpbmF0
aW9uLm1vdmVCeShpblZpZXdDZW50ZXJQb2ludC52YWx1ZSgpKTsKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGRlc3RpbmF0aW9uLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNjIsMjAgKzI2MiwyMCBAQCB2b2lkIFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJ
bnB1dFNvdXJjZQogI2VuZGlmCiAKICAgICAgICAgaW5wdXRTb3VyY2Uuc3RhdGUgPSBuZXdTdGF0
ZTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICB9OwogCiAgICAgc3dpdGNoIChpbnB1
dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGU6Ok51bGw6
CiAgICAgICAgIC8vIFRoZSBtYXhpbXVtIGR1cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIGtleWZy
YW1lIGxldmVsIGJ5IG1fa2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lci4KLSAgICAgICAg
ZXZlbnREaXNwYXRjaEZpbmlzaGVkKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNpbXVs
YXRlZElucHV0U291cmNlVHlwZTo6TW91c2U6CiAgICAgY2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJj
ZVR5cGU6OlBlbjogewogI2lmICFFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJl
c29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlT3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIu
bG9jYXRpb24sIGIub3JpZ2luLnZhbHVlT3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIu
bm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS50eXBl
LCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCld
KE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlv
bkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24o
YS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5v
cmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwg
W3RoaXMsICZhLCAmYiwgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS50eXBlLCBldmVudERpc3Bh
dGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAg
ICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0zMDUsOSArMzA1LDkgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRy
YW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoYS5sb2NhdGlvbiAhPSBiLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgTE9HKEF1dG9tYXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBdOiBzaW11bGF0
aW5nIE1vdXNlTW92ZSBmcm9tICglZCwgJWQpIHRvICglZCwgJWQpIGZvciB0cmFuc2l0aW9uIHRv
ICVkLiVkIiwgdGhpcywgYS5sb2NhdGlvbi52YWx1ZSgpLngoKSwgYS5sb2NhdGlvbi52YWx1ZSgp
LnkoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLngoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLnkoKSwgbV9r
ZXlmcmFtZUluZGV4LCBtX2lucHV0U291cmNlU3RhdGVJbmRleCk7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW50ZXJwb2xhdGUgbW91c2Vtb3ZlcyBwZXIgdGhlICJw
ZXJmb3JtIGEgcG9pbnRlciBtb3ZlIiBhbGdvcml0aG0gKMKnMTcuNCBEaXNwYXRjaGluZyBBY3Rp
b25zKS4KLSAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24o
bV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpNb3ZlLCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1
ZU9yKE1vdXNlQnV0dG9uOjpOb25lKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBwb2ludGVyVHlwZSwg
V1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC5zaW11bGF0ZU1vdXNlSW50ZXJhY3Rpb24obV9wYWdlLCBNb3VzZUludGVyYWN0aW9uOjpNb3Zl
LCBiLnByZXNzZWRNb3VzZUJ1dHRvbi52YWx1ZV9vcihNb3VzZUJ1dHRvbjo6Tm9uZSksIGIubG9j
YXRpb24udmFsdWUoKSwgcG9pbnRlclR5cGUsIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVk
KSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmlu
aXNoZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNo
ZWQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZF
Ul9NT1VTRV9JTlRFUkFDVElPTlMpCiAgICAgICAgIGJyZWFrOwpAQCAtMzE2LDcgKzMxNiw3IEBA
IHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0
YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5U
RVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UK
LSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVPcihXZWJDb3JlOjpJbnRQ
b2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVPcihNb3VzZU1vdmVPcmlnaW46OlZp
ZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNo
ZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3Ip
IG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihX
ZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VN
b3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnRE
aXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAg
ICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJvcik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzMxLDE1ICszMzEsMTUgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAg
ICAgICAgICAgIC8vIFRoZSAiZGlzcGF0Y2ggYSBwb2ludGVye0Rvd24sVXAsTW92ZX0gYWN0aW9u
IiBhbGdvcml0aG1zICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCiAgICAgICAgICAgICBp
ZiAoIWEucHJlc3NlZE1vdXNlQnV0dG9uICYmIGIucHJlc3NlZE1vdXNlQnV0dG9uKSB7CiAgICAg
ICAgICAgICAgICAgTE9HKEF1dG9tYXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBd
OiBzaW11bGF0aW5nIFRvdWNoRG93biBAICglZCwgJWQpIGZvciB0cmFuc2l0aW9uIHRvICVkLiVk
IiwgdGhpcywgYi5sb2NhdGlvbi52YWx1ZSgpLngoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLnkoKSwg
bV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291cmNlU3RhdGVJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgbV9jbGllbnQuc2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFj
dGlvbjo6VG91Y2hEb3duLCBiLmxvY2F0aW9uLnZhbHVlKCksIFdURjo6bnVsbG9wdCwgV1RGTW92
ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11
bGF0ZVRvdWNoSW50ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpUb3VjaERvd24s
IGIubG9jYXRpb24udmFsdWUoKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZCkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChhLnByZXNzZWRNb3VzZUJ1dHRvbiAm
JiAhYi5wcmVzc2VkTW91c2VCdXR0b24pIHsKICAgICAgICAgICAgICAgICBMT0coQXV0b21hdGlv
biwgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcgTGlmdFVwIEAgKCVk
LCAlZCkgZm9yIHRyYW5zaXRpb24gdG8gJWQuJWQiLCB0aGlzLCBiLmxvY2F0aW9uLnZhbHVlKCku
eCgpLCBiLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBtX2tleWZyYW1lSW5kZXgsIG1faW5wdXRTb3Vy
Y2VTdGF0ZUluZGV4KTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVRvdWNoSW50
ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpMaWZ0VXAsIGIubG9jYXRpb24udmFs
dWUoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAg
ICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRv
dWNoSW50ZXJhY3Rpb246OkxpZnRVcCwgYi5sb2NhdGlvbi52YWx1ZSgpLCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KGEubG9jYXRpb24gIT0gYi5sb2NhdGlvbikgewogICAgICAgICAgICAgICAgIExPRyhBdXRvbWF0
aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogc2ltdWxhdGluZyBNb3ZlVG8gZnJv
bSAoJWQsICVkKSB0byAoJWQsICVkKSBmb3IgdHJhbnNpdGlvbiB0byAlZC4lZCIsIHRoaXMsIGEu
bG9jYXRpb24udmFsdWUoKS54KCksIGEubG9jYXRpb24udmFsdWUoKS55KCksIGIubG9jYXRpb24u
dmFsdWUoKS54KCksIGIubG9jYXRpb24udmFsdWUoKS55KCksIG1fa2V5ZnJhbWVJbmRleCwgbV9p
bnB1dFNvdXJjZVN0YXRlSW5kZXgpOwotICAgICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRl
VG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRvdWNoSW50ZXJhY3Rpb246Ok1vdmVUbywgYi5sb2Nh
dGlvbi52YWx1ZSgpLCBhLmR1cmF0aW9uLnZhbHVlT3IoMF9zKSwgV1RGTW92ZShldmVudERpc3Bh
dGNoRmluaXNoZWQpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVRvdWNoSW50
ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpNb3ZlVG8sIGIubG9jYXRpb24udmFs
dWUoKSwgYS5kdXJhdGlvbi52YWx1ZV9vcigwX3MpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXZlbnREaXNwYXRj
aEZpbmlzaGVkKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZp
bmlzaGVkKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwogI2VuZGlmIC8vICFFTkFCTEUoV0VC
RFJJVkVSX1RPVUNIX0lOVEVSQUNUSU9OUykKICAgICAgICAgYnJlYWs7CkBAIC00MTQsNyArNDE0
LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJj
ZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVk
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpu
dWxsb3B0KTsKICNlbmRpZiAvLyAhRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElP
TlMpCiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0
ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJl
c29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlT3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIu
bG9jYXRpb24sIGIub3JpZ2luLnZhbHVlT3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIu
bm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92
ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9j
YXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50
UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6
Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGxvY2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBl
dmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlv
bklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGludGVycG9sYXRlIG1vdXNlIHNjcm9sbHMgcGVyIHRo
ZSAicGVyZm9ybSBhIHNjcm9sbCIgYWxnb3JpdGhtICjCpzE1LjQuNCBXaGVlbCBhY3Rpb25zKS4K
ICAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVdoZWVsSW50ZXJhY3Rpb24obV9wYWdl
LCBiLmxvY2F0aW9uLnZhbHVlKCksIGIuc2Nyb2xsRGVsdGEudmFsdWUoKSwgV1RGTW92ZShldmVu
dERpc3BhdGNoRmluaXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsKICNlbmRpZiAv
LyAhRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRFUkFDVElPTlMpCiAgICAgICAgIGJyZWFrOwpA
QCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpmaW5pc2hE
aXNwYXRjaGluZyhPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yCiAgICAgTE9HKEF1dG9t
YXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBdOiBmaW5pc2hlZCBhbGwgaW5wdXQg
c2ltdWxhdGlvbiBhdCBbJXUuJXVdIiwgdGhpcywgbV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291
cmNlU3RhdGVJbmRleCk7CiAKICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhjaGFuZ2UobV9ydW5D
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgbV9mcmFtZUlEID0gV1RGOjpudWxsb3B0
OworICAgIG1fZnJhbWVJRCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2tleWZyYW1lcy5jbGVhcigp
OwogICAgIG1fa2V5ZnJhbWVJbmRleCA9IDA7CiAgICAgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBlOTRlMDZjZjIwMmU0MTkxOTEyMTQ0ZGIx
NzE1MjFmM2EzN2YwNWU3Li5kODZmMmYxMWI1MTFiYzlmNGI1MTViYTQ0MDA4MjMyNDhiMjE5ZDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMjA4LDEyICsyMDgsMTIgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRGVzdHJveUZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
KQogT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2ViRnJh
bWVJREZvckhhbmRsZShjb25zdCBTdHJpbmcmIGhhbmRsZSwgYm9vbCYgZnJhbWVOb3RGb3VuZCkK
IHsKICAgICBpZiAoaGFuZGxlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaXRlciA9IG1faGFu
ZGxlV2ViRnJhbWVNYXAuZmluZChoYW5kbGUpOwogICAgIGlmIChpdGVyID09IG1faGFuZGxlV2Vi
RnJhbWVNYXAuZW5kKCkpIHsKICAgICAgICAgZnJhbWVOb3RGb3VuZCA9IHRydWU7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQoY29uc3Qg
SW5zcGVjdG9yOjpQcm90CiAgICAgICAgIHRoaXMtPnJlc3RvcmVXaW5kb3dGb3JQYWdlKHdlYlBh
Z2UsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92ZShwYWdlKSwg
d2lkdGgsIGhlaWdodCwgeCwgeV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGF1dG8mIHdlYlBh
Z2UgPSAqcGFnZTsKICAgICAgICAgICAgIHdlYlBhZ2UuZ2V0V2luZG93RnJhbWVXaXRoQ2FsbGJh
Y2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBXVEZNb3ZlKHBhZ2UpLCB3
aWR0aCwgaGVpZ2h0LCB4LCB5XShXZWJDb3JlOjpGbG9hdFJlY3Qgb3JpZ2luYWxGcmFtZSkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2Vi
Q29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoeC52YWx1ZU9yKG9yaWdpbmFsRnJh
bWUubG9jYXRpb24oKS54KCkpLCB5LnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLnko
KSkpLCBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgudmFsdWVPcihvcmlnaW5hbEZyYW1lLnNpemUo
KS53aWR0aCgpKSwgaGVpZ2h0LnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5zaXplKCkuaGVpZ2h0KCkp
KSk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG5ld0ZyYW1lID0gV2ViQ29y
ZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkZsb2F0UG9pbnQoeC52YWx1ZV9vcihvcmlnaW5hbEZyYW1l
LmxvY2F0aW9uKCkueCgpKSwgeS52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLmxvY2F0aW9uKCkueSgp
KSksIFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLnNpemUo
KS53aWR0aCgpKSwgaGVpZ2h0LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLmhlaWdodCgp
KSkpOwogICAgICAgICAgICAgICAgIGlmIChuZXdGcmFtZSAhPSBvcmlnaW5hbEZyYW1lKQogICAg
ICAgICAgICAgICAgICAgICBwYWdlLT5zZXRXaW5kb3dGcmFtZShuZXdGcmFtZSk7CiAgICAgICAg
ICAgICAgICAgCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2wKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdp
bmRvd05vdEZvdW5kKTsKIAotICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IG9wdGlvbmFsUGFn
ZUxvYWRTdHJhdGVneS52YWx1ZU9yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKKyAgICBhdXRv
IHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoZGVm
YXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOwogICAgIGF1dG8gcGFnZUxvYWRUaW1lb3V0ID0gb3B0aW9u
YWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCpvcHRpb25hbFBh
Z2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0OwogCiAgICAgLy8gSWYgcGFn
ZSBpcyBsb2FkaW5nIGFuZCB0aGVyZSdzIGFuIGFjdGl2ZSBKYXZhU2NyaXB0IGRpYWxvZyBpcyBw
cm9iYWJseSBiZWNhdXNlIHRoZQpAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OndpbGxTaG93SmF2YVNjcmlwdERpYWxvZyhXZWJQYWdlUHJveHkmIHBhZ2UpCiAg
ICAgICAgIGlmICghbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9w
ZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5rZXlzKCkpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShrZXkpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQpAQCAtNjY1LDcgKzY2NSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OndpbGxTaG93SmF2YVNjcmlwdERpYWxvZyhXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgICAgIGlm
ICghbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9wZW5kaW5n
S2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5rZXlzKCkpKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShrZXkpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRf
SU5URVJBQ1RJT05TKQpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OndpbGxTaG93SmF2YVNjcmlwdERpYWxvZyhXZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgICAg
IGlmICghbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byBrZXkgOiBjb3B5VG9WZWN0b3IobV9wZW5kaW5n
V2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS5rZXlzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNr
c1BlclBhZ2UudGFrZShrZXkpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9w
dCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJ
T05TKQpAQCAtNjk5LDcgKzY5OSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Om5hdmln
YXRlQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dO
b3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2Fk
U3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7CisgICAgYXV0byBwYWdl
TG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKGRlZmF1bHRQ
YWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGltZW91dCA9IG9wdGlvbmFsUGFn
ZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqb3B0aW9uYWxQYWdlTG9h
ZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAogICAgIHBhZ2UtPmxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgdXJsKSk7CkBAIC03MTIsNyArNzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6Z29CYWNrSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXUKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJ
TkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9
IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5
KTsKKyAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3ku
dmFsdWVfb3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOwogICAgIGF1dG8gcGFnZUxvYWRUaW1l
b3V0ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRz
KCpvcHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0OwogCiAg
ICAgcGFnZS0+Z29CYWNrKCk7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6Z29Gb3J3YXJkSW5Ccm93c2luZ0NvbnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDoKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IG9w
dGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsK
KyAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFs
dWVfb3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOwogICAgIGF1dG8gcGFnZUxvYWRUaW1lb3V0
ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCpv
cHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0OwogCiAgICAg
cGFnZS0+Z29Gb3J3YXJkKCk7CkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG8KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVE
X0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IG9w
dGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsK
KyAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFs
dWVfb3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOwogICAgIGF1dG8gcGFnZUxvYWRUaW1lb3V0
ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCpv
cHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxvYWRUaW1lb3V0OwogCiAgICAg
cGFnZS0+cmVsb2FkKHsgfSk7CkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6bW91c2VFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBh
Z2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCiAgICAgaWYg
KGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0ocGFnZSk7CiAjZW5kaWYKQEAgLTgxMyw3ICs4MTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjprZXlib2FyZEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94
eSYgcGFnZQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQog
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKLSAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2hlZWxFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQ
YWdlUHJveHkmIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRFUkFDVElP
TlMpCiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpKQotICAgICAgICBjYWxsYmFj
ayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKQEAgLTk2Myw3ICs5NjMsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sOgogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRFdmFs
dWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEKys7CiAgICAgbV9ldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbkNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAg
cGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBhZ2UtPndlYlBhZ2VJRCgpLCBmcmFtZUlELCBm
dW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50
LnZhbHVlT3IoZmFsc2UpLCBXVEZNb3ZlKGNhbGxiYWNrVGltZW91dCksIGNhbGxiYWNrSUQpLCAw
KTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24ocGFnZS0+d2ViUGFnZUlEKCksIGZy
YW1lSUQsIGZ1bmN0aW9uLCBhcmd1bWVudHNWZWN0b3IsIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQudmFsdWVfb3IoZmFsc2UpLCBXVEZNb3ZlKGNhbGxiYWNrVGltZW91dCksIGNhbGxi
YWNrSUQpLCAwKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9Db29yZGluYXRlU3lz
dGVtKEluc3BlY3Rvcjo6UHIKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmNvbXB1dGVFbGVtZW50TGF5b3V0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4dEhhbmRsZSYgYnJvd3Np
bmdDb250ZXh0SGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpG
cmFtZUhhbmRsZSYgZnJhbWVIYW5kbGUsIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246Ok5vZGVIYW5kbGUmIG5vZGVIYW5kbGUsIE9wdGlvbmFsPGJvb2w+JiYgb3B0aW9uYWxT
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpD
b29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW1WYWx1ZSwgUmVmPENvbXB1dGVFbGVtZW50
TGF5b3V0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMzY4LDcgKzEzNjgsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OgogICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoYnVpbGRBcnJh
eUZvckNvb2tpZXMoY29va2llcykpOwogICAgIH07CiAKLSAgICBwYWdlLT5wcm9jZXNzKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpHZXRD
b29raWVzRm9yRnJhbWUocGFnZS0+d2ViUGFnZUlEKCksIFdURjo6bnVsbG9wdCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpHZXRDb29raWVzRm9yRnJh
bWUocGFnZS0+d2ViUGFnZUlEKCksIHN0ZDo6bnVsbG9wdCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29v
a2llKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkJyb3dzaW5nQ29udGV4
dEhhbmRsZSYgYnJvd3NpbmdDb250ZXh0SGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUs
IFJlZjxEZWxldGVTaW5nbGVDb29raWVDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTEzODYsNyAr
MTM4Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNvb2tpZShj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0CiAgICAgICAgIGNhbGxiYWNrLT5zZW5k
U3VjY2VzcygpOwogICAgIH07CiAKLSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpEZWxldGVDb29raWUocGFn
ZS0+d2ViUGFnZUlEKCksIFdURjo6bnVsbG9wdCwgY29va2llTmFtZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpEZWxldGVDb29raWUocGFnZS0+d2Vi
UGFnZUlEKCksIHN0ZDo6bnVsbG9wdCwgY29va2llTmFtZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogc3RhdGljIFN0cmluZyBkb21haW5CeUFkZGluZ0RvdFByZWZpeElmTmVl
ZGVkKFN0cmluZyBkb21haW4pCkBAIC0xNTcxLDE2ICsxNTcxLDE2IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQoV2ViUGFnZVBy
b3h5JiBwYWdlCiB7CiAgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9v
bCk+IGRpZENvbXB1dGVFbGVtZW50TGF5b3V0SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
V2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRl
clBvaW50LCBib29sKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yVHlwZSkgewotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRf
RVJST1JfV0lUSF9NRVNTQUdFKCplcnJvclR5cGUpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCwgQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTUVTU0FH
RSgqZXJyb3JUeXBlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIWluVmlld0NlbnRlclBvaW50KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGFyZ2V0
T3V0T2ZCb3VuZHMpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCwgQVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaW5WaWV3Q2VudGVyUG9pbnQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGluVmlld0NlbnRlclBvaW50LCBzdGQ6Om51bGxvcHQpOwogICAgIH07CiAKICAg
ICBwYWdlLnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2Uud2ViUGFnZUlEKCksIGZy
YW1lSUQsIG5vZGVIYW5kbGUsIGZhbHNlLCBDb29yZGluYXRlU3lzdGVtOjpMYXlvdXRWaWV3cG9y
dCksIFdURk1vdmUoZGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXRIYW5kbGVyKSk7CkBAIC0xNjM0LDcg
KzE2MzQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZU1vdXNlSW50ZXJh
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBNb3VzZUludAogICAgICAgICAvLyBJZiB0aGUgZXZl
bnQgZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkg
bm90IGhhdmUgYmVlbiBkZWxpdmVyZWQuCiAgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFw
YWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CiAgICAgICAgICAgICBhdXRvIGNhbGxi
YWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdl
LnRha2UocGFnZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3IgbW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KQEAg
LTE2ODAsNyArMTY4MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnNpbXVsYXRlS2V5
Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvCiAgICAgLy8gVGhpcyBo
YXBwZW5zIGluIHNvbWUgY29ybmVyIGNhc2VzIG9uIG1hY09TLCBzdWNoIGFzIHJlbGVhc2luZyBh
IGtleSB3aGlsZSBDb21tYW5kIGlzIHByZXNzZWQuCiAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYg
IXBhZ2UuaXNQcm9jZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSkgewogICAgICAgICBhdXRvIGNhbGxi
YWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlLnRha2UocGFnZS5pZGVudGlmaWVyKCkpOwotICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKICAg
ICB9CiAKICAgICAvLyBPdGhlcndpc2UsIHdhaXQgZm9yIGtleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrIHRvIHJ1biB3aGVuIGFsbCBldmVudHMgYXJlIGhhbmRsZWQuCkBAIC0xNzEzLDcgKzE3
MTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZVdoZWVsSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZQogICAgICAgICAvLyBJZiB0aGUgZXZlbnQg
ZG9lcyBub3QgaGl0IHRlc3QgYW55dGhpbmcgaW4gdGhlIHdpbmRvdywgdGhlbiBpdCBtYXkgbm90
IGhhdmUgYmVlbiBkZWxpdmVyZWQuCiAgICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdl
LT5pc1Byb2Nlc3NpbmdXaGVlbEV2ZW50cygpKSB7CiAgICAgICAgICAgICBhdXRvIGNhbGxiYWNr
VG9DYW5jZWwgPSBtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRh
a2UocGFnZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgd2FpdCBmb3Igd2hlZWxFdmVudHNG
bHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2ZW50cyBhcmUgaGFuZGxlZC4KQEAgLTE4
MDUsNyArMTgwNSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBlcmZvcm1Nb3VzZUlu
dGVyYWN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1CiAgICAgICAgIC8vIEluIFcz
Qy1vbmx5IGNvZGUgcGF0aHMsIHdlIGNhbiByZWplY3QgYW55IHBvaW50ZXIgYWN0aW9ucyB3aG9z
ZSBjb29yZGluYXRlcyBhcmUgb3V0c2lkZSB0aGUgdmlld3BvcnQgcmVjdC4KICAgICAgICAgaWYg
KGNhbGxiYWNrSW5NYXAgJiYgIXBhZ2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZlbnRzKCkpIHsKICAg
ICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAg
ICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY2FsbGJhY2tU
b0NhbmNlbChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSk7CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCkBAIC0xOTY1LDcgKzE5NjUsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VUNoYXIzMj4gcHJlc3NlZENoYXJLZXkoY29uc3QgU3RyaW5nJiBwcmVz
c2VkQ2hhcktleVN0cmluZykKICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklW
RVJfQUNUSU9OU19BUEkpCiAKQEAgLTIxMDgsNyArMjEwOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnBlcmZvcm1JbnRlcmFjdGlvblNlcXVlbmNlKGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6CiAgICAgICAgICAgICBhdXRvIHByZXNzZWRCdXR0b25TdHJpbmcgPSBzdGF0ZU9iamVj
dC0+Z2V0U3RyaW5nKCJwcmVzc2VkQnV0dG9uIl9zKTsKICAgICAgICAgICAgIGlmICghIXByZXNz
ZWRCdXR0b25TdHJpbmcpIHsKICAgICAgICAgICAgICAgICBhdXRvIHByb3RvY29sQnV0dG9uID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJv
bVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpNb3VzZUJ1dHRvbj4ocHJl
c3NlZEJ1dHRvblN0cmluZyk7Ci0gICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1v
dXNlQnV0dG9uID0gcHJvdG9jb2xCdXR0b24udmFsdWVPcihNb3VzZUJ1dHRvbjo6Tm9uZSk7Cisg
ICAgICAgICAgICAgICAgc291cmNlU3RhdGUucHJlc3NlZE1vdXNlQnV0dG9uID0gcHJvdG9jb2xC
dXR0b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5vbmUpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBhdXRvIG9yaWdpblN0cmluZyA9IHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoIm9yaWdp
biJfcyk7CkBAIC0yMjI0LDcgKzIyMjQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp0
YWtlU2NyZWVuc2hvdChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOgogICAg
IH07CiAKICAgICBpZiAobm9kZUhhbmRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGFrZVZpZXdT
bmFwc290KCpwYWdlLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
dGFrZVZpZXdTbmFwc290KCpwYWdlLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI2NywxOSArMjI2NywxOSBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpkaWRUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBjYWxsYmFja0lE
LCBjb25zdCBTaGFyZWFibAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDQUlSTykKIE9w
dGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5j
b2RlZFBOR0RhdGEoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKQogewotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5H
RGF0YShjb25zdCBWaWV3U25hcHNob3QmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpICYm
ICFVU0UoQ0FJUk8pCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiBPcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90
ZUZpbGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNTZmNGE0MDNmN2Y5NTFjYzgwYWY2NmY1
ZjA2OGZhNDJmZTM5MGRiNS4uOGI3MWE4ODNlODM1ZjViYzI2NDIwNmJmMTUxY2NmZDM1YjljNGVh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtODUsNyArODUsNyBAQCBjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKIGNsYXNzIEF1dG9tYXRpb25Db21tYW5kRXJyb3IgewogcHVibGljOgogICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBlOwotICAgIE9wdGlv
bmFsPFN0cmluZz4gbWVzc2FnZSB7IFdURjo6bnVsbG9wdCB9OworICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbWVzc2FnZSB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIAogICAgIEF1dG9tYXRpb25Db21tYW5k
RXJyb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlIHR5cGUp
CiAgICAgICAgIDogdHlwZSh0eXBlKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaApp
bmRleCA0ZDM2ZDY0ZmQ0MGY0M2YzZTc4MWQ1ZTU5NWEzYmU4NGNjZWVkNjUzLi5kYWI3YTA2ZjM1
YjRjM2E2NDgwZDkzOWZlZjcyMjk5OTg5ZDZlZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oCkBAIC0yOCw3ICsyOCw3IEBACiAjZGVmaW5lIGVycm9yTmFtZUFuZERldGFpbHNTZXBh
cmF0b3IgIjsiCiAKIC8vIE1ha2Ugc3VyZSB0aGUgcHJlZGVmaW5lZCBlcnJvciBuYW1lIGlzIHZh
bGlkLCBvdGhlcndpc2UgdXNlIEludGVybmFsRXJyb3IuCi0jZGVmaW5lIFZBTElEQVRFRF9FUlJP
Ul9NRVNTQUdFKGVycm9yU3RyaW5nKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVs
cGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZhbHVlT3IoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVycm9yKQorI2RlZmluZSBW
QUxJREFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZV9vcihJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludGVybmFsRXJy
b3IpCiAKIC8vIElmIHRoZSBlcnJvciBuYW1lIGlzIGluY29ycmVjdCBmb3IgdGhlc2UgbWFjcm9z
LCBpdCB3aWxsIGJlIGEgY29tcGlsZS10aW1lIGVycm9yLgogI2RlZmluZSBTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTkFNRShlcnJvck5hbWUpIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OmVycm9yTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWly
by5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9t
YXRpb25TZXNzaW9uQ2Fpcm8uY3BwCmluZGV4IGYzNDJlNjFkOTA4OGQ1ODFiOGE4NDdmNjRiOGJm
YWY1YjlmNGJiN2UuLjlmNmJkMDE5MDg5OTc4MTM4ODgzMzI4MzFjMTcwZWEwZDM0ZTlhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0
b21hdGlvblNlc3Npb25DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcApAQCAtMzcsNyArMzcs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGJh
c2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKIHsKICAgICBpZiAo
IXN1cmZhY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gcG5nRGF0YTsKICAgICBj
YWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZ19zdHJlYW0oc3VyZmFjZSwgW10odm9pZCogdXNlckRh
dGEsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgLT4gY2Fpcm9f
c3RhdHVzX3QgewpAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBiYXNl
NjRFbmNvZGVkUE5HRGF0YShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgfSwgJnBuZ0Rh
dGEpOwogCiAgICAgaWYgKHBuZ0RhdGEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJhc2U2
NEVuY29kZVRvU3RyaW5nKHBuZ0RhdGEpOwogfQpAQCAtNTYsNyArNTYsNyBAQCBPcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGNvbnN0IFNoYQogewogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAo
IWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VyZmFjZSA9IGJpdG1hcC0+Y3JlYXRlQ2Fpcm9TdXJm
YWNlKCk7CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHN1cmZhY2UuZ2V0KCkpOwpA
QCAtNjcsNyArNjcsNyBAQCBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpw
bGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZQogI2lmIFBMQVRGT1JNKEdU
SykKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlZFBOR0RhdGEoc25hcHNob3Quc3VyZmFjZSgpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpp
bmRleCAxMWJiOGVmNWM2NWIwNDZiMDg4MTY0ZjZiMTNiMmZkODkzNWFiZGE5Li44YTE1ZmU2Y2Y1
NDQ0MzFlOWM2NDVkN2Q4YWNlMzAyY2RjMGQxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNvY29hLm1tCkBAIC00Myw3ICs0Myw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3Qg
U2hhCiB7CiAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShpbWFnZURh
dGFIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICgh
Yml0bWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBiaXRtYXAt
Pm1ha2VDR0ltYWdlKCk7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURhdGE+IGltYWdlRGF0YSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CkBAIC01MSw3ICs1MSw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VEZXN0aW5hdGlvblJlZj4gZGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlv
bkNyZWF0ZVdpdGhEYXRhKChDRk11dGFibGVEYXRhUmVmKWltYWdlRGF0YS5nZXQoKSwga1VUVHlw
ZVBORywgMSwgMCkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYg
KCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGRlc3Rp
bmF0aW9uLmdldCgpLCBjZ0ltYWdlLmdldCgpLCAwKTsKICAgICBDR0ltYWdlRGVzdGluYXRpb25G
aW5hbGl6ZShkZXN0aW5hdGlvbi5nZXQoKSk7CkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRo
Rm9yUmVtb3RlRmlsCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gZmlsZUNvbnRlbnRzID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmJhc2U2NEVuY29k
ZWRGaWxlQ29udGVudHMgb3B0aW9uczowXSk7CiAgICAgaWYgKCFmaWxlQ29udGVudHMpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJXZWJBdXRvbWF0aW9uU2Vzc2lvbjogdW5hYmxlIHRvIGRlY29kZSBi
YXNlNjQtZW5jb2RlZCBmaWxlIGNvbnRlbnRzLiIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE5TU3RyaW5n
ICp0ZW1wb3JhcnlEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoQCJXZWJEcml2ZXIiKTsKQEAgLTc1LDcgKzc1LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JSZW1vdGVG
aWwKICAgICBbZmlsZUNvbnRlbnRzLmdldCgpIHdyaXRlVG9GaWxlOmxvY2FsRmlsZVBhdGggb3B0
aW9uczpOU0RhdGFXcml0aW5nQXRvbWljIGVycm9yOiZmaWxlV3JpdGVFcnJvcl07CiAgICAgaWYg
KGZpbGVXcml0ZUVycm9yKSB7CiAgICAgICAgIExPR19FUlJPUigiV2ViQXV0b21hdGlvblNlc3Np
b246IEVycm9yIHdyaXRpbmcgaW1hZ2UgZGF0YSB0byB0ZW1wb3JhcnkgZmlsZTogJUAiLCBmaWxl
V3JpdGVFcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIFN0cmluZyhsb2NhbEZpbGVQYXRo
KTsKQEAgLTg5LDcgKzg5LDcgQEAgT3B0aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Np
b246OmNoYXJDb2RlRm9yVmlydHVhbEtleShJbnNwZWN0b3I6OlByb3RvY28KICAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKICAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6
CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpD
b21tYW5kOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6SGVscDoKICAgICAgICAgcmV0dXJuIE5TSGVscEZ1bmN0aW9uS2V5OwogICAgIGNh
c2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QmFja3NwYWNl
OgpAQCAtMTkzLDcgKzE5Myw3IEBAIE9wdGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjaGFyQ29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvCiAgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjEyOgog
ICAgICAgICByZXR1cm4gTlNGMTJGdW5jdGlvbktleTsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3Mv
V2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQppbmRleCAwODFiYTk5NDZhZDc0
YTYwYzg1YjcwZTNmMTQyMThlNWZmOGFmM2NmLi5iODU0NGZmYTQ1ZDgyYjEwMjkxOTI5M2ZhY2Vh
NjcxNjFlMTdmYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQpAQCAtMTk3
LDEwICsxOTcsMTAgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24pCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IFRvdWNoSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBs
b2NhdGlvbkluVmlld3BvcnQsIE9wdGlvbmFsPFNlY29uZHM+IGR1cmF0aW9uLCBBdXRvbWF0aW9u
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBsb2NhdGlvbk9uU2NyZWVuID0gcGFnZS5zeW5jUm9vdFZpZXdUb1NjcmVlbihJbnRS
ZWN0KGxvY2F0aW9uSW5WaWV3cG9ydCwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKLSAgICBMT0df
V0lUSF9TVFJFQU0oQXV0b21hdGlvbkludGVyYWN0aW9ucywgc3RyZWFtIDw8ICJwbGF0Zm9ybVNp
bXVsYXRlVG91Y2hJbnRlcmFjdGlvbjogaW50ZXJhY3Rpb249IiA8PCBpbnRlcmFjdGlvbiA8PCAi
LCBsb2NhdGlvbkluVmlld3BvcnQ9IiA8PCBsb2NhdGlvbkluVmlld3BvcnQgPDwgIiwgbG9jYXRp
b25PblNjcmVlbj0iIDw8IGxvY2F0aW9uT25TY3JlZW4gPDwgIiwgZHVyYXRpb249IiA8PCBkdXJh
dGlvbi52YWx1ZU9yKDBfcykuc2Vjb25kcygpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQXV0b21h
dGlvbkludGVyYWN0aW9ucywgc3RyZWFtIDw8ICJwbGF0Zm9ybVNpbXVsYXRlVG91Y2hJbnRlcmFj
dGlvbjogaW50ZXJhY3Rpb249IiA8PCBpbnRlcmFjdGlvbiA8PCAiLCBsb2NhdGlvbkluVmlld3Bv
cnQ9IiA8PCBsb2NhdGlvbkluVmlld3BvcnQgPDwgIiwgbG9jYXRpb25PblNjcmVlbj0iIDw8IGxv
Y2F0aW9uT25TY3JlZW4gPDwgIiwgZHVyYXRpb249IiA8PCBkdXJhdGlvbi52YWx1ZV9vcigwX3Mp
LnNlY29uZHMoKSk7CiAKICAgICBhdXRvIGludGVyYWN0aW9uRmluaXNoZWQgPSBtYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogCiAgICAgX1dLVG91
Y2hFdmVudEdlbmVyYXRvciAqZ2VuZXJhdG9yID0gW19XS1RvdWNoRXZlbnRHZW5lcmF0b3Igc2hh
cmVkVG91Y2hFdmVudEdlbmVyYXRvcl07CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLAogICAgICAgICBbZ2VuZXJhdG9yIGxpZnRVcDpsb2NhdGlvbk9uU2NyZWVuIGNv
bXBsZXRpb25CbG9jazppbnRlcmFjdGlvbkZpbmlzaGVkLmdldCgpXTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBUb3VjaEludGVyYWN0aW9uOjpNb3ZlVG86Ci0gICAgICAgIFtnZW5lcmF0b3Ig
bW92ZVRvUG9pbnQ6bG9jYXRpb25PblNjcmVlbiBkdXJhdGlvbjpkdXJhdGlvbi52YWx1ZU9yKDBf
cykuc2Vjb25kcygpIGNvbXBsZXRpb25CbG9jazppbnRlcmFjdGlvbkZpbmlzaGVkLmdldCgpXTsK
KyAgICAgICAgW2dlbmVyYXRvciBtb3ZlVG9Qb2ludDpsb2NhdGlvbk9uU2NyZWVuIGR1cmF0aW9u
OmR1cmF0aW9uLnZhbHVlX29yKDBfcykuc2Vjb25kcygpIGNvbXBsZXRpb25CbG9jazppbnRlcmFj
dGlvbkZpbmlzaGVkLmdldCgpXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCBkOTUzNzQ0
ODdhNGU4MTBmYTNkMmVhNDVmOWU2ZWJiNDUwZWFhZmQzLi4xMjI0N2NlYTlhNTVhODdkOWU4Zjgz
ZTkzZmM5ODIwZDE5ODU1ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBQcm9j
ZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hl
ciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpIDogMDsgfQogCiAgICAg
Ym9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkgIT0gU3RhdGU6OlRl
cm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
JiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJ
bmZvID0gV1RGOjpudWxsb3B0LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9
IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOworICAgIGJvb2wgc2Vu
ZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gc3RkOjpudWxsb3B0LCBTaG91
bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90
dGxlckFjdGl2aXR5OjpZZXMpOwogCiAgICAgdm9pZCByZXBseVRvUGVuZGluZ01lc3NhZ2VzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
blNlc3Npb25DbGllbnQubW0KaW5kZXggZWM4OWFjZWVjNzBhNWRhNjA2NzQ1OTEyZTZlYmYyMTVi
NmYzYTUyMy4uZGYxNjEzOGM1NDYwY2U1YjE1ZGFlYThlOGJhODIwOGJhOTIyZGJhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Np
b25DbGllbnQubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8QVBJOjpBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHRvSW1wbChfV0tBdQog
ewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgX1dLQXV0b21hdGlvblNlc3Npb25KYXZh
U2NyaXB0RGlhbG9nVHlwZU5vbmU6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkph
dmFTY3JpcHREaWFsb2dUeXBlUHJvbXB0OgogICAgICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OlByb21wdDsKICAgICBjYXNlIF9X
S0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlwdERpYWxvZ1R5cGVDb25maXJtOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQuaAppbmRleCBjOTdkYzRiNGRlYzRm
YTU4MGQ0OTBmMWQ0Y2ZjODZjZGZjZTBiY2MyLi4xZDVlYzI5NjJiZGZlM2NiZDY5OGNkMDIzNDkw
YmI5OWU2YTNiMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NoYXJlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJl
U2hlZXQuaApAQCAtMzgsNyArMzgsNyBAQCBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsK
IAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tXZWJWaWV3ICopdmlldzsKIAotLSAo
dm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwmKWRhdGEgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4p
cmVjdCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNv
bnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKWRhdGEgaW5SZWN0OihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9p
ZClkaXNtaXNzOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLU2hhcmVTaGVl
dERlbGVnYXRlPiBkZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2hhcmVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
U2hhcmVTaGVldC5tbQppbmRleCBlNDc1N2FiOGM4ODk4NWEwODRiNzc1MTAxODVlODNlNmJkMGQ3
MTJjLi5kNDEzNDFhMWI5NzQ4ZmM1MjhkNGE2MjY3NDMzZGE5MTIwOGMyOTU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCkBAIC04OSw3ICs4OSw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLV2ViVmlldyAqKXZpZXcKICAgICBy
ZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdl
YkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwgJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClwcmVz
ZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwg
JilkYXRhIGluUmVjdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29t
cGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21w
bGV0aW9uSGFuZGxlcgogewogICAgIGF1dG8gc2hhcmVEYXRhQXJyYXkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAKQEAgLTE1Miw3ICsxNTIsNyBAQCAtICh2
b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCAmKWRhdGEgaW5SZQogICAgIFtzZWxmIHByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6
c2hhcmVEYXRhQXJyYXkuZ2V0KCkgaW5SZWN0OnJlY3RdOwogfQogCi0tICh2b2lkKXByZXNlbnRX
aXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJyYXkgKilzaGFyaW5nSXRlbXMgaW5SZWN0OihXVEY6Ok9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdAorLSAodm9pZClwcmVzZW50V2l0aFNoYXJl
RGF0YUFycmF5OihOU0FycmF5ICopc2hhcmluZ0l0ZW1zIGluUmVjdDooc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QKIHsKICAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBfd2Vi
Vmlldy5nZXRBdXRvcmVsZWFzZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAyZDEwM2YwZWQwYTdkMjYxNDFlYzJm
MzNiMmJmNjY1MGJjOGM1ZTJmLi4zNDY4MDNhOWU4YjA1OTRmODQwMzAyMjEyNzdhOTc3YmJjNzEw
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQpAQCAtMTcyLDExICsxNzIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFkZFBs
YXRmb3JtTG9hZFBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBMb2FkUGFyYW0K
ICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFwcm9jZXNzLmhhc01hbmFnZWRTZXNzaW9uU2Fu
ZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlzTWFuYWdlZFNl
c3Npb25dKSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJf
cywgV1RGOjpudWxsb3B0LCBoYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFw
cGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsK
ICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoaGFuZGxlKTsKIAogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRi
b2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1h
cHBzZXJ2aWNlcyJfcywgV1RGOjpudWxsb3B0LCBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhh
bmRsZSkpCisgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpu
dWxsb3B0LCBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgICAgICBs
b2FkUGFyYW1ldGVycy5mcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
ZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFy
a0hhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtNjAxLDcgKzYwMSw3IEBAIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV0d29ya0V4
dGVuc2lvbnNTYW5kYm94RXh0ZW5zCiAjZWxzZQogICAgICAgICBjb25zdGV4cHIgQVNDSUlMaXRl
cmFsIG5lU2Vzc2lvbk1hbmFnZXJTZXJ2aWNlIHsgImNvbS5hcHBsZS5uZXNlc3Npb25tYW5hZ2Vy
LmNvbnRlbnQtZmlsdGVyIl9zIH07CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgbmVIZWxwZXJTZXJ2aWNlLCBuZVNl
c3Npb25NYW5hZ2VyU2VydmljZSB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyBuZUhlbHBlclNlcnZp
Y2UsIG5lU2Vzc2lvbk1hbmFnZXJTZXJ2aWNlIH0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2Vu
ZGlmCiAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5KCk7CkBAIC02NTUs
NyArNjU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb20KIHZvaWQgV2ViUGFnZVByb3h5Ojpn
cmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG1vYmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgV1RGOjpudWxs
b3B0LCBtb2JpbGVBc3NldEhhbmRsZVYyKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51
bGxvcHQsIG1vYmlsZUFzc2V0SGFuZGxlVjIpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRs
ZVYyKSwgMCk7CiB9CiAKQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQog
ewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsK
LSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuZm9udHMiX3MsIFdURjo6bnVsbG9wdCwgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOworICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5m
b250cyJfcywgc3RkOjpudWxsb3B0LCBmb250TWFjaEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgcmV0
dXJuIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IGMx
N2QzOGZhNGRiY2VmZjYyODU3MTQzYTEyYzRkNWMwM2Y1MTllODQuLjBkYWExMWNkMmViNzcyYjcx
NjhmNzNlY2YxMmVhNzNhZTZjNjA0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC05NywxMCArOTcs
MTAgQEAgYm9vbCBXZWJQYXN0ZWJvYXJkUHJveHk6OmNhbkFjY2Vzc1Bhc3RlYm9hcmREYXRhKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY28KIAogT3B0aW9uYWw8V2ViUGFzdGVib2FyZFBy
b3h5OjpQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gV2ViUGFzdGVib2FyZFByb3h5OjphY2Nlc3NUeXBl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgY29uc3QKIHsKLSAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFwYXN0ZWJv
YXJkTmFtZS5pc0VtcHR5KCksIFdURjo6bnVsbG9wdCk7CisgICAgTUVTU0FHRV9DSEVDS19XSVRI
X1JFVFVSTl9WQUxVRSghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBzdGQ6Om51bGxvcHQpOwog
CiAgICAgYXV0byogcHJvY2VzcyA9IHdlYlByb2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oY29ubmVj
dGlvbik7Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShwcm9jZXNzLCBXVEY6
Om51bGxvcHQpOworICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUocHJvY2Vzcywg
c3RkOjpudWxsb3B0KTsKIAogICAgIGZvciAoYXV0byogcGFnZSA6IHByb2Nlc3MtPnBhZ2VzKCkp
IHsKICAgICAgICAgYXV0byYgcHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlcygpOwpAQCAt
MTE4LDExICsxMTgsMTEgQEAgT3B0aW9uYWw8V2ViUGFzdGVib2FyZFByb3h5OjpQYXN0ZWJvYXJk
QWNjZXNzVHlwZT4gV2ViUGFzdGVib2FyZFByb3h5OjphY2Nlc3NUeXAKIAogICAgIGF1dG8gY2hh
bmdlQ291bnRBbmRQcm9jZXNzZXMgPSBtX3Bhc3RlYm9hcmROYW1lVG9BY2Nlc3NJbmZvcm1hdGlv
bk1hcC5maW5kKHBhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoY2hhbmdlQ291bnRBbmRQcm9jZXNz
ZXMgPT0gbV9wYXN0ZWJvYXJkTmFtZVRvQWNjZXNzSW5mb3JtYXRpb25NYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvJiBpbmZvcm1hdGlvbiA9IGNoYW5nZUNvdW50QW5kUHJvY2Vzc2VzLT52YWx1ZTsK
ICAgICBpZiAoaW5mb3JtYXRpb24uY2hhbmdlQ291bnQgIT0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5jaGFuZ2VDb3VudCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGluZm9ybWF0aW9u
LmFjY2Vzc1R5cGUoKnByb2Nlc3MpOwogfQpAQCAtNDg2LDEwICs0ODYsMTAgQEAgdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnMKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgc2l6ZV90IGluZGV4LCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBpbnQ2NF90IGNoYW5nZUNvdW50LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFBh
c3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5BY2Nlc3NQYXN0ZWJvYXJkVHlwZXMoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUpKQotICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGRhdGFPd25l
ciA9IGRldGVybWluZURhdGFPd25lcihjb25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSwgcGFnZUlE
LCBQYXN0ZWJvYXJkQWNjZXNzSW50ZW50OjpSZWFkKTsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oZGF0YU93bmVyLCBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpKTsKKyAgICBN
RVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oZGF0YU93bmVyLCBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQpKTsKIAogICAgIFBsYXRmb3JtUGFzdGVib2FyZDo6cGVyZm9ybUFzRGF0YU93bmVy
KCpkYXRhT3duZXIsIFsmXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwg
Y2hhbmdlQ291bnQpKTsKQEAgLTY1NiwxMCArNjU2LDEwIEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkCiAKIE9wdGlvbmFsPERhdGFPd25lclR5cGU+IFdlYlBhc3RlYm9hcmRQcm94eTo6ZGV0ZXJt
aW5lRGF0YU93bmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgUGFzdGVib2Fy
ZEFjY2Vzc0ludGVudCBpbnRlbnQpIGNvbnN0CiB7Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JF
VFVSTl9WQUxVRSghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBXVEY6Om51bGxvcHQpOworICAg
IE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHko
KSwgc3RkOjpudWxsb3B0KTsKIAogICAgIGF1dG8qIHByb2Nlc3MgPSB3ZWJQcm9jZXNzUHJveHlG
b3JDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwotICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5f
VkFMVUUocHJvY2VzcywgV1RGOjpudWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVU
VVJOX1ZBTFVFKHByb2Nlc3MsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoIXBhZ2VJRCkKICAg
ICAgICAgcmV0dXJuIERhdGFPd25lclR5cGU6OlVuZGVmaW5lZDsKQEAgLTY3NCw3ICs2NzQsNyBA
QCBPcHRpb25hbDxEYXRhT3duZXJUeXBlPiBXZWJQYXN0ZWJvYXJkUHJveHk6OmRldGVybWluZURh
dGFPd25lcihJUEM6OkNvbm5lY3Rpb24mCiAgICAgfQogICAgIC8vIElmIHRoaXMgbWVzc2FnZSBj
aGVjayBpcyBoaXQsIHRoZW4gdGhlIGluY29taW5nIHdlYiBwYWdlIElEIGRvZXNuJ3QgY29ycmVz
cG9uZCB0byBhbnkgcGFnZQogICAgIC8vIGN1cnJlbnRseSBrbm93biB0byB0aGUgVUkgcHJvY2Vz
cy4KLSAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHJlc3VsdC5oYXNWYWx1ZSgp
LCBXVEY6Om51bGxvcHQpOworICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUocmVz
dWx0Lmhhc1ZhbHVlKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGludGVudCk7CkBAIC03MTUsNyArNzE1LDcgQEAgT3B0aW9uYWw8
V2ViUGFzdGVib2FyZFByb3h5OjpQYXN0ZWJvYXJkQWNjZXNzVHlwZT4gV2ViUGFzdGVib2FyZFBy
b3h5OjpQYXN0ZWJvYXIKICAgICB9KTsKIAogICAgIGlmIChtYXRjaEluZGV4ID09IG5vdEZvdW5k
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHByb2Nlc3Nlc1ttYXRjaEluZGV4XS5zZWNvbmQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQppbmRleCAwOWNlNGM3ZjUwYmEwNjc5NzlhMjMzYzE2YjdkMDFjMDdjZjg0ZDc5Li41ZmFjNjYy
YzkyYmVhNjZiNWRkZWQ5YzdmZTU0Y2I0YjAwNTIyODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTMxMyw3ICsz
MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoV2ViUHJvY2Vzc1Byb3h5OjpzaG91bGRF
bmFibGVSZW1vdGVJbnNwZWN0b3IoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLndl
Ymluc3BlY3RvciJfcywgV1RGOjpudWxsb3B0LCBlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRl
bnNpb25IYW5kbGUpKQorICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLndlYmluc3BlY3RvciJfcywgc3RkOjpudWxsb3B0LCBl
bmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUpKQogICAgICAgICAgICAgcGFy
YW1ldGVycy5lbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogI2VuZGlm
CkBAIC0zNzgsMjYgKzM3OCwyNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2
aWNlKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxl
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFdlYkNvcmU6
OmFneENvbXBpbGVyU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVy
cy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBz
dGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
ICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCi0gICAgICAgIHBh
cmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIFdURjo6bnVs
bG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNl
cnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdY
Q29tcGlsZXJTZXJ2aWNlKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5z
aW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNz
RXh0ZW5zaW9ucyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFdlYkNvcmU6
OmFneENvbXBpbGVyQ2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKICAgICBpZiAo
aXNJbnRlcm5hbEluc3RhbGwoKSkKLSAgICAgICAgcGFyYW1ldGVycy5kaWFnbm9zdGljc0V4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChkaWFnbm9zdGljU2VydmljZXMoKSwgV1RGOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpG
bGFnczo6Tm9SZXBvcnQpOworICAgICAgICBwYXJhbWV0ZXJzLmRpYWdub3N0aWNzRXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGRp
YWdub3N0aWNTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OkZsYWdz
OjpOb1JlcG9ydCk7CiAKICAgICBwYXJhbWV0ZXJzLnN5c3RlbUhhc0JhdHRlcnkgPSBzeXN0ZW1I
YXNCYXR0ZXJ5KCk7Ci0gICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNBQyA9IGNhY2hlZFN5c3RlbUhh
c0FDKCkudmFsdWVPcih0cnVlKTsKKyAgICBwYXJhbWV0ZXJzLnN5c3RlbUhhc0FDID0gY2FjaGVk
U3lzdGVtSGFzQUMoKS52YWx1ZV9vcih0cnVlKTsKIAogICAgIGlmIChyZXF1aXJlc0NvbnRhaW5l
ck1hbmFnZXJBY2Nlc3MoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFu
ZGxlOwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUuY29udGFpbmVybWFuYWdlcmQiX3MsIFdURjo6bnVsbG9wdCwgaGFuZGxlKTsK
KyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29t
LmFwcGxlLmNvbnRhaW5lcm1hbmFnZXJkIl9zLCBzdGQ6Om51bGxvcHQsIGhhbmRsZSk7CiAgICAg
ICAgIHBhcmFtZXRlcnMuY29udGFpbmVyTWFuYWdlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
aGFuZGxlKTsKICAgICB9CiAKQEAgLTQxMiwyMCArNDEyLDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzCiAKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkgJiYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoX0FYU0FwcGxpY2F0aW9uQWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
LSAgICAgICAgcGFyYW1ldGVycy5wcmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuY2ZwcmVm
c2QuYWdlbnQiX3MsICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIl9zIH0sIFdURjo6bnVsbG9w
dCk7CisgICAgICAgIHBhcmFtZXRlcnMucHJlZmVyZW5jZXNFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmNm
cHJlZnNkLmFnZW50Il9zLCAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiJfcyB9LCBzdGQ6Om51
bGxvcHQpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgaWYgKCFfTUdDYWNoZVZhbGlkKCkpIHsKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWdlc3RhbHQueHBjIl9zLCBX
VEY6Om51bGxvcHQsIGhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpu
dWxsb3B0LCBoYW5kbGUpOwogICAgICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKGhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGxhdW5jaFNlcnZpY2VzRXh0ZW5z
aW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBXVEY6Om51bGxv
cHQsIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5j
aHNlcnZpY2VzZCJfcywgc3RkOjpudWxsb3B0LCBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRs
ZSk7CiAgICAgcGFyYW1ldGVycy5sYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUobGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5k
ZXggN2IxNDczYzVkMmVkYTk0ODIyMDRhYmFiMDJkNmUwZjZjZGQzZWE2MS4uMWNlMjY1ZmY5Y2Qz
YWFmN2U3NDkyZmY4NDAzNjkwZTc1NTczYzdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5l
ZWRlZCgpCiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBoYW5kbGVBcnJheTsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNl
cnZlci1zeXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2Vydmlj
ZXMiX3MgfSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBX
VEY6Om51bGxvcHQpOworICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13
aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgY29u
bmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51bGxvcHQp
OwogICAgIEFTU0VSVChoYW5kbGVBcnJheS5zaXplKCkgPT0gMik7CiAjZW5kaWYKIApAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bmJsb2NrUHJlZmVyZW5jZVNlcnZp
Y2VJZk5lZWRlZCgpCiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmNmcHJlZnNkLmFnZW50Il9zLCAiY29tLmFwcGxl
LmNmcHJlZnNkLmRhZW1vbiJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSA6IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBoYW5kbGVBcnJheSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5jZnBy
ZWZzZC5hZ2VudCJfcywgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iX3MgfSwgY29ubmVjdGlv
bigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51bGxvcHQpOwogICAg
IEFTU0VSVChoYW5kbGVBcnJheS5zaXplKCkgPT0gMik7CiAgICAgCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6VW5ibG9ja1ByZWZlcmVuY2VTZXJ2aWNlKFdURk1vdmUoaGFuZGxlQXJy
YXkpKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDg4ODgyMTU3YzBiMTc2YzY1YTE2ZjY4YTU4OWQ3MGJkY2FmNGRhMTIuLjVhOGE2MzIx
YTRkYjhkZmMzZGEzODVlYmEwZDExOTY1NDAyNzdjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDcgKzE5OTcsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjp1cGRhdGVWaWV3RXhwb3NlZFJlY3QoKQogICAgIGlmIChtX3VzZUNvbnRlbnRQ
cmVwYXJhdGlvblJlY3RGb3JWaXNpYmxlUmVjdCkKICAgICAgICAgZXhwb3NlZFJlY3QgPSBDR1Jl
Y3RVbmlvbihtX2NvbnRlbnRQcmVwYXJhdGlvblJlY3QsIGV4cG9zZWRSZWN0KTsKIAotICAgIG1f
cGFnZS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1fY2xpcHNUb1Zpc2libGVSZWN0ID8gT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkgOiBXVEY6Om51bGxvcHQpOworICAgIG1f
cGFnZS0+c2V0Vmlld0V4cG9zZWRSZWN0KG1fY2xpcHNUb1Zpc2libGVSZWN0ID8gT3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PihleHBvc2VkUmVjdCkgOiBzdGQ6Om51bGxvcHQpOwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRDbGlwc1RvVmlzaWJsZVJlY3QoYm9vbCBjbGlwc1RvVmlzaWJs
ZVJlY3QpCkBAIC0zMDE0LDcgKzMwMTQsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzaG93U2hhcmVT
aGVldChjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBkYXRhLCBXVAogICAg
IF9zaGFyZVNoZWV0ID0gYWRvcHROUyhbW1dLU2hhcmVTaGVldCBhbGxvY10gaW5pdFdpdGhWaWV3
OnZpZXddKTsKICAgICBbX3NoYXJlU2hlZXQgc2V0RGVsZWdhdGU6dmlld107CiAKLSAgICBbX3No
YXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0ZXJzOmRhdGEgaW5SZWN0OldURjo6bnVsbG9wdCBj
b21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CisgICAgW19zaGFy
ZVNoZWV0IHByZXNlbnRXaXRoUGFyYW1ldGVyczpkYXRhIGluUmVjdDpzdGQ6Om51bGxvcHQgY29t
cGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjpzaGFyZVNoZWV0RGlkRGlzbWlzcyhXS1NoYXJlU2hlZXQgKnNoYXJlU2hlZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFn
ZS5jcHAKaW5kZXggYzM1NmRiOGZmMzdlYjQwNjk3NmVlNDI0ZGE3ZWJmM2JmNmQ3NTkwMS4uOTIy
ODU4NzQwMjRhYzJhZDlhNjlkMjE4ZWQ0MDc5NjUzMWIwNzRiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcApAQCAtOTMsMTYg
KzkzLDE2IEBAIERldmljZUlkSGFzaFNhbHRTdG9yYWdlOjp+RGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UoKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi1zdGF0aWMgV1RGOjpPcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShjb25zdCBjaGFy
KiBuYW1lLCBLZXllZERlY29kZXIqIGRlY29kZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+IGdldFNlY3VyaXR5T3JpZ2luRGF0YShjb25zdCBjaGFyKiBuYW1lLCBL
ZXllZERlY29kZXIqIGRlY29kZXIpCiB7CiAgICAgU3RyaW5nIG9yaWdpbjsKIAogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKG5hbWUsIG9yaWdpbikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNlY3Vy
aXR5T3JpZ2luRGF0YSA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cihvcmlnaW4pOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5jcHAKaW5kZXggMGMwYTY5ZDJkYjNhYmUyNWMyZDVkMTA1YjVkYjFm
NzczODZkYWQ4My4uYjg5MmM5NjdkODBlZmY1MGE0MzBlMGY1MzVkNjkxNjQ5YmZiZTM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAg
LTE2MiwxMiArMTYyLDEyIEBAIEdQVVByb2Nlc3NQcm94eTo6R1BVUHJvY2Vzc1Byb3h5KCkKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFdlYkNvcmU6OmRldmljZUhh
c0FHWENvbXBpbGVyU2VydmljZSgpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29tcGlsZXJTZXJ2
aWNlRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsK
LSAgICAgICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFdlYkNvcmU6
OmFneENvbXBpbGVyQ2xhc3NlcygpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJz
LmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2VzKCksIHN0
ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFu
ZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5z
aW9ucyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgc3RkOjpudWxsb3B0KTsKICAgICB9
CiAKICAgICBpZiAoIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQot
ICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJTZXJ2aWNlcygp
LCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5v
bkJyb3dzZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKICNpZiAhTE9HX0RJ
U0FCTEVEIHx8ICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMjA5LDEzICsyMDksMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGFkZENhbWVyYVNhbmRib3hFeHRlbnNpb25zKFZlY3RvcjxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+JgogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAgIGlmIChz
aG91bGRDcmVhdGVBcHBsZUNhbWVyYVNlcnZpY2VTYW5kYm94RXh0ZW5zaW9uKCkpIHsKICAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJfcywgV1RG
OjpudWxsb3B0LCBhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkp
IHsKKyAgICAgICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJfcywgc3RkOjpudWxsb3B0LCBhcHBsZUNh
bWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS5h
cHBsZWNhbWVyYWQgc2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAjaWYgSEFWRShBRERJVElPTkFMX0FQUExFX0NBTUVSQV9T
RVJWSUNFKQogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFkZGl0aW9uYWxB
cHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgICAg
IGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLmFwcGxlaDEzY2FtZXJhZCJfcywgV1RGOjpudWxsb3B0LCBhZGRpdGlvbmFsQXBwbGVDYW1l
cmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CisgICAgICAgICAgICBpZiAo
IVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5h
cHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCwgYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2Vy
dmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgewogICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlaDEz
Y2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dl
bmVyaWNDYWxsYmFjay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNr
LmgKaW5kZXggMDM1NDE5ZDAyMTk0MzRlNTcwZmQ3YmQ1M2MwZTk0MGVmYmRlMTFkMy4uZTI3M2Fm
YzZlZjY2YjViYzJiMDk1MzNhYjhkYTI0NDkwY2U1YjAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
IGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShtX2NhbGxiYWNrLCBXVEY6Om51bGxvcHQpOworICAg
ICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShtX2NhbGxiYWNrLCBzdGQ6Om51bGxv
cHQpOwogICAgICAgICBjYWxsYmFjay52YWx1ZSgpKHJldHVyblZhbHVlLi4uLCBFcnJvcjo6Tm9u
ZSk7CiAgICAgfQogCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1f
Y2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjYWxsYmFjayA9
IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYXV0byBj
YWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywgc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgY2FsbGJhY2sudmFsdWUoKSh0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5
cGUoKS4uLiwgZXJyb3IpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGE5ZWE2MjhmZDE5ODVhMmVlN2NiMTYwMGNkMTc4
MjhmMDZmNGJiYTguLjQxODg3ODY1MzkzNmQ0MmFmZjFkNGQ5ZTAxMjM3MWQxNDBjMDM5YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFVS
TCByZXF1ZXN0VVJMIHsgeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51cmwoKSB9OwotICAgICAg
ICBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBv
cnQoKSwgcGFyc2VJbnRlZ2VyPGludD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUludGVn
ZXI8aW50Pih0b2tlbnNbMV0pLnZhbHVlT3IoMCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBw
YXJzZUludGVnZXI8aW50Pih0b2tlbnNbMF0pLnZhbHVlX29yKDApLCBwYXJzZUludGVnZXI8aW50
Pih0b2tlbnNbMV0pLnZhbHVlX29yKDApLCB0b2tlbnNbMl0pOwogICAgIH0KICAgICAKICAgICBi
b29sIHN1cHBvcnRzQXN5bmNSZXBseSgpIG92ZXJyaWRlCkBAIC0xMDQsNyArMTA0LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGU+IHBhcnNlRGVidWdnYWJsZVR5
cGVGcm9tU3RyaW5nKGNvbnN0IFMKICAgICBpZiAoZGVidWdnYWJsZVR5cGVTdHJpbmcgPT0gIndl
Yi1wYWdlIl9zKQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZTo6V2Vi
UGFnZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6Omluc3BlY3QoY29u
c3QgU3RyaW5nJiBob3N0QW5kUG9ydCwgQ29ubmVjdGlvbklEIGNvbm5lY3Rpb25JRCwgVGFyZ2V0
SUQgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhv
c3RBbmRQb3J0LCBDb25uZWN0aQogCiB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
cjo6cnVuU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIG1fcGFnZS5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQs
IGZhbHNlIH0sIAorICAgIG1fcGFnZS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyBzY3JpcHQs
IFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIGZhbHNlIH0sIAogICAgICAgICBbXSAoYXV0
byYmIHJlc3VsdCkgewogICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXhjZXB0aW9uIHJ1bm5pbmcgc2NyaXB0IFwiJXNcIiIsIHJlc3VsdC5l
cnJvcigpLm1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmOGM5ZmFi
NDhiODlkZDE3YTg0MjQ2NmExYzg0ZGMxMTI1NTUxNDI3Li45ODYyZWYyNTk1OWRhMWMyNmY1YTQy
Y2M5M2Y4ODQ2OTY4NGQ2YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKFRlcm1p
bmF0aW9uUmVhc29uIHJlYXNvbikKIAogICAgIG1fYWN0aXZpdHlGb3JIb2xkaW5nTG9ja2VkRmls
ZXMgPSBudWxscHRyOwogCi0gICAgbV91cGxvYWRBY3Rpdml0eSA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX3VwbG9hZEFjdGl2aXR5ID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRlZmF1bHROZXR3
b3JrUHJvY2VzcygpID09IHRoaXMpCiAgICAgICAgIGRlZmF1bHROZXR3b3JrUHJvY2VzcygpID0g
bnVsbHB0cjsKQEAgLTE0MzYsNyArMTQzNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvCiAK
ICAgICAgICAgaWYgKG1fdXBsb2FkQWN0aXZpdHktPndlYlByb2Nlc3NBc3NlcnRpb25zLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkczogVGhlIG51bWJlciBvZiB1
cGxvYWRzIGluIHByb2dyZXNzIGlzIG5vdyB6ZXJvLiBSZWxlYXNpbmcgTmV0d29ya2luZyBhbmQg
VUkgcHJvY2VzcyBhc3NlcnRpb25zLiIpOwotICAgICAgICAgICAgbV91cGxvYWRBY3Rpdml0eSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fdXBsb2FkQWN0aXZpdHkgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCmluZGV4IGE1NTFhMmMzZjQ5ZTJjNjdhNzc5NGEy
MzdkNGU3YTAxOGI5ODFlOTcuLjFhNjQ2NjA1YmI1OTdjODg1OTZhNzJmYjhiNjI5OWZlNDVhMmU0
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQpAQCAt
MjI0LDcgKzIyNCw3IEBAIC0gKE9wdGlvbmFsPE5TVUludGVnZXI+KV9jb250cm9sSW5kZXhGb3JF
dmVudDooTlNFdmVudCAqKWV2ZW50CiAgICAgICAgIGlmIChDR1JlY3RDb250YWluc1BvaW50KHdp
bmRvd1NwYWNlUmVjdCwgaW5pdGlhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBpbmRleDsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiAtIChOU1N0cmluZyAqKV9jb250cm9sRm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDdmOTMzOGMyYTFiM2U3YjhhMzFm
MGQ0NTllNGIxM2Q1NGY0MmUxZDcuLmI0OTEyNzA4OWQ0Mjg3OTUwZjU0ZDYyNDg4YzA5ZDk4MDQz
OGU5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTI2Nyw3ICsyNjcs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlUnVuT3BlblBhbmVsKFdlYlBh
Z2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgQVBJOjpPcGVu
UGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNv
cmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQg
KGJvb2wpPiYmKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGFj
dFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29u
dGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxW
ZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlQ29udGVudFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIApAQCAtNjA5
LDcgKzYwOSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6
ZXIqKSB7IH0KLSAgICB2aXJ0dWFsIFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNo
SWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqKSB7IHJl
dHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+
IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29n
bml6ZXIqKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiAjaWYgVVNFKFdQRV9S
RU5ERVJFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luSW5mb1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmNwcAppbmRleCA3YmQ4YzE5YzI2M2FjZGFkZGIxNmU5NTAwOGExY2I3YTI4YWNi
MjgwLi43OWYzMWM2MDQxNGZmYjQ2NTAxY2QyNWE2NGE2YmU3NjYzNWU0NmU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCkBA
IC0yMjUsNyArMjI1LDcgQEAgYm9vbCBQbHVnaW5JbmZvU3RvcmU6OmlzU3VwcG9ydGVkUGx1Z2lu
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2kKIE9wdGlvbmFsPFZlY3Rv
cjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gUGx1Z2luSW5mb1N0b3JlOjpzdXBwb3J0ZWRQ
bHVnaW5JZGVudGlmaWVycygpCiB7CiAgICAgaWYgKCFtX3N1cHBvcnRlZFBsdWdpbnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gV1RGOjptYXAoKm1fc3VwcG9ydGVkUGx1Z2lucywgW10gKGF1dG8mJiBpdGVt
KSB7CiAgICAgICAgIHJldHVybiBTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyIHsgaXRlbS5tYXRj
aGluZ0RvbWFpbiwgaXRlbS5pZGVudGlmaWVyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCA3ZjgxZWQ3NGM4NDViMDFkY2E0
YWNhMmY4Y2YyYTQ4YjljNzJhNzU3Li43NWFlNmJiNjJkODRjYTQxOWQyOGZmZGY2ODAwMmYwZmYy
ZWRkNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdXBwb3J0
ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiBwbHVnaW5VUkwsIGNv
bnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFVSTCYgcGFnZVVSTCk7CiAgICAgT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiBzdXBwb3J0
ZWRQbHVnaW5JZGVudGlmaWVycygpOwogICAgIHZvaWQgYWRkU3VwcG9ydGVkUGx1Z2luKFN0cmlu
ZyYmIG1hdGNoaW5nRG9tYWluLCBTdHJpbmcmJiBpZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZz4m
JiBtaW1lVHlwZXMsIEhhc2hTZXQ8U3RyaW5nPiBleHRlbnNpb25zKTsKLSAgICB2b2lkIGNsZWFy
U3VwcG9ydGVkUGx1Z2lucygpIHsgbV9zdXBwb3J0ZWRQbHVnaW5zID0gV1RGOjpudWxsb3B0OyB9
CisgICAgdm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9
IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAgIFBsdWdpbk1vZHVsZUluZm8gZmluZFBs
dWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlBsdWdpbkRh
dGE6OkFsbG93ZWRQbHVnaW5UeXBlcykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmluZGV4IDM1M2ZjOTU0NTU2NDU3OTRhY2Q4OGJhODU0Nzkw
ODVjNjJkMDc0NGEuLmMwOTE1OWZhOGUwMDBiZTQ3Nzc3NmUzZDM2ZGJmNWJkZDI2NzEyZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0yMDUs
NyArMjA1LDcgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpwcm9jZXNzUmVhZHlUb1N1c3BlbmQo
KQogdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpjbGVhclBlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kKCkK
IHsKICAgICBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXIuc3RvcCgpOwotICAgIG1fcGVu
ZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BlbmRpbmdSZXF1
ZXN0VG9TdXNwZW5kSUQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUHJvY2Vzc1Rocm90dGxl
cjo6c2VuZFByZXBhcmVUb1N1c3BlbmRJUEMoSXNTdXNwZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5z
aW9uSW1taW5lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKaW5kZXggMjI2ZDI5MzM0MDVlYTViNmYwYmMzNjllNTFmZDA3ODYyZTM3YWY3
Ni4uYWNmZjkwYzg4ZmRhZTc2YjI5YzQ3ZWU4MjI2NDM1Y2NjMGNkNmQ0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTQ0LDcg
KzE0NCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgICAgIG1f
cmVxdWVzdCwKICAgICAgICAgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKG1fcmVxdWVzdC51
cmwoKSksCiAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUlEKCksCi0gICAgICAgIFdURjo6bnVs
bG9wdCwKKyAgICAgICAgc3RkOjpudWxsb3B0LAogICAgIH07CiAgICAgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCksIFdURk1vdmUoZnJhbWVJbmZv
KSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1ZXN0IH0sIG1fbmF2aWdhdGlvbklELCBtX3Byb3Zp
c2lvbmFsTG9hZFVSTC5zdHJpbmcoKSwgZXJyb3IsIFdlYkNvcmU6OldpbGxDb250aW51ZUxvYWRp
bmc6Ok5vLCBVc2VyRGF0YSB7IH0pOyAvLyBXaWxsIGRlbGV0ZSB8dGhpc3wuCiB9CkBAIC0zNjMs
NyArMzYzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZy
YW1lIHx8IChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQp
IHx8IG5hdmlnYXRpb25JRCAhPSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xp
Y3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6UG9saWN5QWN0
aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7
CisgICAgICAgIHJlcGx5KFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgc3RkOjpudWxsb3B0
LCBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbklELCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMGUyNmRiNzlh
YjM0ZTI2ZjgzMjg3MmJhOTJhOWMyZWMzYzAyYzVmMC4uNWMzYjZmYjBkMTYxMzFjYjk3MjA3MGIz
MTBkMTAyNWRmN2YwNTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCkBAIC05OCw4ICs5OCw4IEBAIHB1YmxpYzoKICNlbmRpZgogI2VuZGlm
CiAKLSAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdh
dGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9h
ZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2
b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJik7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZVdlYlBhZ2UoUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKLSAgICBi
b29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBPcHRpb25h
bDx1aW50NjRfdD4mIG5hdmlnYXRpb25JRCA9IFdURjo6bnVsbG9wdCk7CisgICAgYm9vbCB2YWxp
ZGF0ZUlucHV0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8dWludDY0
X3Q+JiBuYXZpZ2F0aW9uSUQgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25NYW5hZ2VyLmgKaW5kZXggNDc3YzU3ZjdjZjRmMjAxODYzZTA4ZDIyMGQzYTI3YTY4ZWJj
MjA0ZS4uNDBhOWYyOTA3ZTUxOGJjMTc4ZjI4Njk0YWE4ZGY5ZDVmZWU0YzU0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaApAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rh
cnROZXh0UmVxdWVzdCgpOwogICAgIHZvaWQgc3RhcnRQcm9jZXNzaW5nUmVxdWVzdCgpOwogICAg
IHZvaWQgY29udGludWVQcm9jZXNzaW5nUmVxdWVzdCgpOwotICAgIHZvaWQgY29tcGxldGVDdXJy
ZW50UmVxdWVzdChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmID0g
V1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGNvbXBsZXRlQ3VycmVudFJlcXVlc3QoT3B0aW9uYWw8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCByZXF1ZXN0TWljcm9waG9uZUFjY2VzcygpOwogICAgIHZvaWQgcmVxdWVzdFNwZWVjaFJl
Y29nbml0aW9uU2VydmljZUFjY2VzcygpOwogICAgIHZvaWQgcmVxdWVzdFVzZXJQZXJtaXNzaW9u
KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYgcmVxdWVzdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAppbmRleCBhMTkx
Mjk5MDJiMGVhOGQxMTNkYjQ1ZDkwZDRkMTQ3YzFmNzM1ZmQwLi41MDYxMTlhZWJmODJiM2RkYzll
NDMxNmVmNDE5N2I5NzY3YzZiMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uRm9yUmVxdWVzdChXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGhhbmRsZVJlcXVlc3QoVW5pcXVlUmVm
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdD4mJik7Ci0gICAgdm9pZCBzZW5kVXBk
YXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIs
IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0aW9uYWw8V2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBzZW5kVXBkYXRlKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZSwgT3B0
aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gPSBzdGQ6Om51bGxvcHQsIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGE+PiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZW5kVXBkYXRlKGNvbnN0IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApp
bmRleCBmMGRjYzdlMTc3NzVkMTA1NDAwY2Q1ZTZkMjNmYjcyZDg3M2VjMDQ1Li45NDYwMmJjNDVj
NTE5ZWQ5ZTIwYzdjNGIzNWVmZDcyYTJkNWVkYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC0xMDcsMTAgKzEwNywx
MCBAQCBib29sIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0o
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYQogICAgICAgICAgICAgICAgIGlkcy51bmNoZWNr
ZWRBcHBlbmQodmlkZW9FeHRlbnNpb25QYXRoKTsKIAogICAgICAgICAgICAgaWYgKG5lZWRzQXBw
bGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0
aCwgV1RGOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKKyAgICAgICAgICAg
ICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBs
ZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3Vu
dF0pKQogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFwcGxlQ2FtZXJh
U2VydmljZVBhdGgpOwogI2lmIEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkK
LSAgICAgICAgICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgV1RGOjpudWxsb3B0LCBo
YW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKKyAgICAgICAgICAgICAgICBpZiAoU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdKSkKICAg
ICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhZGRpdGlvbmFsQXBwbGVDYW1l
cmFTZXJ2aWNlUGF0aCk7CiAjZW5kaWYKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcAppbmRleCAyMzMxOTJhOGYxNDExZTk1Njlj
OTBhMTgwMDg0YjgxM2E3YjBkMTI3Li42MjdhZmY2NjliYzg1N2I2MjIyZWFmMTlhODQ3ZjUxNTk1
MTMxOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OnJlY29yZFNuYXBz
aG90KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJCYWNrRm9yd2FyCiAKICAgICB3ZWJQ
YWdlUHJveHkud2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChpdGVtKTsKIAotICAgIGF1dG8g
c25hcHNob3QgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdChXVEY6Om51bGxvcHQpOwor
ICAgIGF1dG8gc25hcHNob3QgPSB3ZWJQYWdlUHJveHkudGFrZVZpZXdTbmFwc2hvdChzdGQ6Om51
bGxvcHQpOwogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDdhOTM0ODQ3NTlmMmRiODRmMjViNGQ5ZDk3
Yjk4MmIyNDFhNzgyZTQuLjgzNDRmZGQ0MTJjNTk2N2ZjMjU0ODRiYmE3Y2YzMDVlYmEzMzU5MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTQzMSw3ICs0MzEsNyBA
QCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjppbml0VGltZU91dFRpbWVyKCkKICAgICAgICAg
dGltZU91dEluTXMgPSBvcHRpb25zLnRpbWVvdXQ7CiAgICAgfSk7CiAKLSAgICB1bnNpZ25lZCB0
aW1lT3V0SW5Nc1ZhbHVlID0gc3RkOjptaW4obWF4VGltZU91dFZhbHVlLCB0aW1lT3V0SW5Ncy52
YWx1ZU9yKG1heFRpbWVPdXRWYWx1ZSkpOworICAgIHVuc2lnbmVkIHRpbWVPdXRJbk1zVmFsdWUg
PSBzdGQ6Om1pbihtYXhUaW1lT3V0VmFsdWUsIHRpbWVPdXRJbk1zLnZhbHVlX29yKG1heFRpbWVP
dXRWYWx1ZSkpOwogICAgIG1fcmVxdWVzdFRpbWVPdXRUaW1lci5zdGFydE9uZVNob3QoU2Vjb25k
czo6ZnJvbU1pbGxpc2Vjb25kcyh0aW1lT3V0SW5Nc1ZhbHVlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBmMjJmMGY4YjdhZGE5ZWY4ODA5MjZl
MTkyNDRkMjIzMjc4MWQ5NWM5Li5mYmJjY2FlZGZlNmM4YzkwMThmMzA3YjRkNGJiNmI4YWQ1N2Nl
NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNDQs
NyArMTQ0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGkKICAgICBDRlR5cGVSZWYgYXR0cmli
dXRlc0FycmF5UmVmID0gbnVsbHB0cjsKICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29w
eU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnkuZ2V0KCksICZhdHRyaWJ1
dGVzQXJyYXlSZWYpOwogICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RG
b3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmli
dXRlc0FycmF5UmVmKTsKICAgICBOU0FycmF5ICpzb3J0ZWRBdHRyaWJ1dGVzQXJyYXkgPSBbKE5T
QXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYgc29ydGVkQXJyYXlVc2luZ0NvbXBhcmF0b3I6XihO
U0RpY3Rpb25hcnkgKmEsIE5TRGljdGlvbmFyeSAqYikgewogICAgICAgICByZXR1cm4gW2JbKGlk
KWtTZWNBdHRyTW9kaWZpY2F0aW9uRGF0ZV0gY29tcGFyZTphWyhpZClrU2VjQXR0ck1vZGlmaWNh
dGlvbkRhdGVdXTsKQEAgLTE1NiwyMSArMTU2LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRp
CiAgICAgICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZCh0
b1ZlY3RvcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkpOwogICAgICAg
ICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKIAog
ICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGZpZG86OmtFbnRpdHlJZE1h
cEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNv
bmQuaXNCeXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgYXV0byYgdXNlckhhbmRsZSA9IGl0LT5zZWNv
bmQuZ2V0Qnl0ZVN0cmluZygpOwogCiAgICAgICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSByZXNwb25zZU1h
cC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygpKSB7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHVzZXJu
YW1lID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmNwcAppbmRleCA4ZTljNzZkYzBlODhjZTU3ODU0NzFjYjE1NGE1MDE4OWJkMTU5
ODIyLi44NDhmNTMxOWM4NjdjNzM4ZTQ2ZTE3ZTk2MTZlMTYzODZkZDE5MTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQg
TW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgfQogCiAgICAgbV9jdXJyZW50
Q2hhbm5lbCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpOwotICAgIG1fcmVxdWVzdE1l
c3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0TWVzc2FnZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+ZmFzdERhdGFBcnJpdmFsKQogICAgICAg
ICBmZWVkUmVwb3J0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1
ZXN0RGF0YS5oCmluZGV4IGMyNWQ5MDViNWQwMWU4MDQzZmIyYjVjMzEzZWEwNDFhMTBkYTU3MDUu
LjRjM2JiYWFhZjhmYzk0OGVkMDU2ZWI4YTc2ZGM5Y2YxY2U4YTQ2OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9u
UmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKQEAgLTUwLDcgKzUwLDcgQEAgc3Ry
dWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFdlYWtQdHI8V2ViUGFnZVBy
b3h5PiBwYWdlOwogICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcGFuZWxSZXN1bHQg
eyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSB9OwogICAgIFJlZlB0
cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IHBhbmVsOwotICAgIFdURjo6T3B0aW9uYWw8
V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwogICAgIFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAKICAgICBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCmluZGV4IDA2ZjIzMTU1MjZhZjFmMjM4
NGI1NTBhZGVmYTlmMTllMTBlZWQ1YWYuLmRiZmJlNjM5N2ZjMTIwMTU5OTQwMjk3NmNjNzdjNGMz
ZjU1MWViODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcApAQCAtNzEsNyArNzEs
NyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUoSGlkQ29ubmVjdGlvbjo6RGF0
YVNlbnQgc2VudCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V3JpdGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoc2VudCAhPSBIaWRDb25uZWN0aW9uOjpEYXRhU2VudDo6WWVzKSB7Ci0g
ICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Jlc3Bv
bnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuTWVzc2FnZSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ3RhcEhpZERyaXZl
cjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlLT5hZGRDb250aW51YXRpb25QYWNrZXQo
ZGF0YSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2UgYSBoaWQgY29u
dGludWF0aW9uIHBhY2tldC4iKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVz
ZXQoKQogewogICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3RlckRhdGFSZWNlaXZlZENhbGxiYWNr
KCk7CiAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBX
VEY6Om51bGxvcHQ7Ci0gICAgbV9yZXF1ZXN0TWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3Jlc3BvbnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3JlcXVlc3RNZXNzYWdlID0g
c3RkOjpudWxsb3B0OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggZTQ4ZjU5OTIw
ZmU0YTNhYjM5MTEyNmEzN2M2MzI3MjE5OGEwNDRlMy4uNGM1NGM2YWYwNzAxY2M5YjNmMjZjZGEz
NTUxNjBkMzVkMzUxYzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
OjpwYWdlQ2xvc2VkKCkKIAogICAgIG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9lbnRyaWVzLmNs
ZWFyKCk7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50
SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJ
dGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0ZW0pCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0+JiYgbmV3SXRlbSkKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7CiAK
ICAgICAgICAgICAgIGlmIChtX2VudHJpZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIC0t
Km1fY3VycmVudEluZGV4OwogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBXZWJC
YWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKCkKICAgICB9CiAKICAgICBtX2VudHJpZXMu
Y2xlYXIoKTsKLSAgICBtX2N1cnJlbnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJl
bnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwogfQogCkBAIC0zNzYsNyArMzc2
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICAgICAgfQogCiAgICAg
ICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgICAgICBtX2N1cnJlbnRJbmRleCA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1f
cGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURk1vdmUocmVtb3ZlZEl0
ZW1zKSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgaWYgKGN1cnJlbnRJdGVtKQogICAgICAgICBtX2Vu
dHJpZXMuYXBwZW5kKGN1cnJlbnRJdGVtLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fY3VycmVudElu
ZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KG51bGxwdHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKQEAgLTQyNiw3ICs0MjYsNyBA
QCBCYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tGb3J3YXJkTGlz
dFN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbAogICAgIH0KIAogICAgIGlmIChiYWNrRm9yd2FyZExp
c3RTdGF0ZS5pdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1
cnJlbnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUu
Y3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKGJhY2tGb3J3YXJkTGlz
dFN0YXRlLml0ZW1zLnNpemUoKSA8PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgu
dmFsdWUoKSkKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIC0gMTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBA
IHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlz
dFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElkZW50aWZpZXI8
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPjo6Z2VuZXJhdGUo
KSB9OwogICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9wYWdlLT5pZGVu
dGlmaWVyKCkpKTsKICAgICB9Ci0gICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNrRm9yd2FyZExpc3RTdGF0
ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEluZGV4ID0gYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9uYWw8c2l6ZV90PigqYmFja0Zv
cndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVsbG9wdDsKICAgICBtX2VudHJp
ZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zvcndh
cmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9tIHN0YXRlIChoYXMgJXp1IGVu
dHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFlNGEzNDA0NGYyMmQ2ODMyYzgw
ZWMzMzg0Li5hZmQ3NjI3YzkwMDdjNzQ0ZDYyNTAwN2UxNTJhNmY2MWFjMWZiZGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNjAsNyArMTA2MCw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiAgICAgfQogCiAgICAgLy8gV2UgYWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlbG9h
ZGluZyBhIFdlYlByb2Nlc3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9yIGNyYXNoZWQuCi0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBG
cmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdv
VG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJh
Y2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzdGQ6Om51bGxvcHQp
KTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgcmV0
dXJuIG5hdmlnYXRpb247CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgYwogICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmln
YXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5
KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0
aW9uIl9zKSk7CiAKLSAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2Rp
bmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUs
IGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBzdGQ6Om51bGxvcHQsIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCkBA
IC0xNzQxLDcgKzE3NDEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogICAgIGF1dG8gdHJh
bnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBtX3BhZ2VMb2Fk
U3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24sIHsgbmF2aWdhdGlvbiA/IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS51cmwoKSB9KTsKIAotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2
aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBl
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzdGQ6Om51bGxvcHQpKTsKICAgICBt
X3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgcmV0dXJuIG5hdmln
YXRpb247CkBAIC0yNjU2LDcgKzI2NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJh
Z2dpbmcoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9u
KCkKIHsKLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1f
Y3VycmVudERyYWdPcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jdXJyZW50RHJhZ0hh
bmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwogICAgIG1fY3VycmVudERy
YWdJc092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxl
c1RvQmVBY2NlcHRlZCA9IDA7CkBAIC0yNzUyLDcgKzI3NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50
VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAg
ICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNG
b3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNv
bnNlcnZpY2VzLnN0b3JlIl9zIH0sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRl
bnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAi
Y29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUi
X3MgfSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAgIAogICAgIExPRyhNb3VzZUhhbmRsaW5n
LCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBzaXplICV6dSkiLCB3ZWJN
b3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkp
OwpAQCAtMzI5MCw3ICszMjkwLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWkKICAgICB9CiAK
ICAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsKLSAgICAgICAgbV9pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICBpZiAobV9pZ25vcmVzQXBwQm91bmREb21haW5zKQpAQCAtMzQ0NSw3
ICszNDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVmPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRl
bnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVy
LT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDkzLDcg
KzM0OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIEFTU0VSVChtX3Byb3Zpc2lv
bmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJv
dmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWlu
RnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0aW9uYWwobV9t
YWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLnB0cigpICE9ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJv
Y2VzcygpKTsKIApAQCAtMzg5OCw3ICszODk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9wdGlvbmFsPHUK
IAogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IudmFsdWVPcihtX2ludHJpbnNpY0Rldmlj
ZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbV9jdXN0b21EZXZpY2VTY2FsZUZhY3Rvci52YWx1
ZV9vcihtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQpA
QCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbURldmljZVNj
YWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQogICAgIGlmIChjdXN0b21TY2FsZUZh
Y3RvcikKICAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciA9IGN1c3RvbVNjYWxlRmFj
dG9yOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDI0OCw3ICs0MjQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNz
SWZOZWNlc3NhcnkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEY6
Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3Js
ZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzdGQ6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2Vi
Q29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTUyMTUs
NyArNTIxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICBpZiAoIWNoZWNrVVJM
UmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3MsIHJlcXVlc3Qu
dXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
Iklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBp
cyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlm
aWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC01Mjc2LDcgKzUyNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
ICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpO
YXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9u
ID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCks
IFdURjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3Qu
dXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkp
LCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
c291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgc3RkOjpu
dWxsb3B0LCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwg
c2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5G
cmFtZU5hdmlnYXRpb24pOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkp
IHsKQEAgLTU0NzMsNyArNTQ3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5CiAgICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3MpLCAqZnJhbWUsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25E
YXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlELCBv
cmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlSZWYoKSk7CiAK
ICAgICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91c2x5LCBwcm9j
ZWVkIHdpdGggdGhlIGxvYWQuCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2Vu
ZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5
QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7
CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCks
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmln
YXRpb25JRCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNTY5NCw3ICs1Njk0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1f
bWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5G
cmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgPSBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudF0g
KFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgewogICAgICAgICBpZiAoIW5l
d1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgIHJlcGx5KHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01NzIyLDcgKzU3MjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBXZWJQYQogICAgICAgICB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3Mt
PnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcik7CiAKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG9yaWdpbmF0
aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9z
dCgpOwotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5m
by5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwg
c2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOworICAg
IGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwg
bnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3Bl
bkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAgICAgdHJ5U09B
dXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksICp0aGlzLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
d2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKV0gKFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAg
ICAgICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUod2luZG93RmVh
dHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CkBAIC02NTI5LDcgKzY1MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zvcndh
cmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAg
IGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4KGluZGV4KSkK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlEKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3
YXJkTGlzdENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZExpc3RDb3Vu
dHNEZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY5MTMsOSArNjkxMyw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5
U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
ZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbjsKICNpZiBIQVZFKEZST05UQk9BUkRfU1lTVEVNX0FQUF9TRVJWSUNFUykKLSAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJv
bnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgV1RGOjpudWxsb3B0LCBmcm9udGJvYXJkU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJf
cywgc3RkOjpudWxsb3B0LCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKICNl
bmRpZgotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5pY29uc2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwgaWNvblNlcnZpY2VzU2FuZGJv
eEV4dGVuc2lvbik7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0LCBpY29uU2Vydmlj
ZXNTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBk
aXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6
OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNv
blNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikpOwogCkBAIC03NzYxLDcgKzc3NjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0U3RhdGVSZWFz
b24pCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgbV93ZWJzaXRlRGF0YVN0
b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIFdU
Rjo6bnVsbG9wdCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdl
cigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAog
ICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxwdHI7CkBAIC04
MDE0LDcgKzgwMTQsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIGlmIChtX3Njcm9s
bGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5
bGUgPSBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZS52YWx1ZSgpOwogICAgIGVsc2UKLSAgICAgICAg
cGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlID0gbV9iYWNrZ3JvdW5kRXh0ZW5k
c0JleW9uZFBhZ2U7CiAgICAgcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlID0gbV9sYXllckhv
c3RpbmdNb2RlOwogICAgIHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbiA9IG1fY29u
dHJvbGxlZEJ5QXV0b21hdGlvbjsKQEAgLTgwNTYsOCArODA1Niw4IEBAIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jCiAKICAgICBpZiAobmVlZFdlYlByb2Nlc3NFeHRlbnNpb25zKSB7CiAgICAgICAg
IC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB0
aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCi0gICAgICAgIHBhcmFtZXRlcnMubWVkaWFFeHRl
bnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIHBh
cmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVkSU9LaXRDbGFz
c2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMubWVkaWFFeHRlbnNpb25I
YW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobWVk
aWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRl
cnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVkSU9LaXRDbGFzc2VzKCks
IHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFwcmVmZXJlbmNlcygpLnVzZUdQVVBy
b2Nlc3NGb3JNZWRpYUVuYWJsZWQoKQpAQCAtODA2NSw4ICs4MDY1LDggQEAgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNz
UHJveHkmIHByb2MKICAgICAgICAgfHwgKCFwcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BV
UHJvY2Vzc0VuYWJsZWQoKSAmJiAhcHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JblVJUHJvY2Vz
c0VuYWJsZWQoKSkKICAgICAgICAgfHwgIXByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNh
bnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAgICB8fCAhcHJlZmVyZW5jZXMoKS51c2VHUFVQ
cm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4
dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRD
bGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVNYWNoU2VydmljZXMoKSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRD
bGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChncHVNYWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5kaWYKICNpZiBI
QVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQpAQCAtODEwNCw3ICs4MTA0LDcgQEAgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9j
ZXNzUHJveHkmIHByb2MKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IG1fY29uZmlndXJhdGlvbi0+
YXBwbGljYXRpb25NYW5pZmVzdCgpID8gT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdD4obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCktPmFwcGxpY2F0aW9u
TWFuaWZlc3QoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbk1h
bmlmZXN0ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgPyBPcHRpb25h
bDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0
aW9uTWFuaWZlc3QoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpKSA6IHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAgICAgcGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbV9uZWVkc0ZvbnRB
dHRyaWJ1dGVzOwpAQCAtODE2NSw3ICs4MTY1LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MK
IAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRGT1JNKENPQ09BKQogICAg
IGlmIChtX3ByZWZlcmVuY2VzLT5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhbV9wcm9j
ZXNzLT5oYXNJc3N1ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucygp
KSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVz
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoYXR0YWNobWVu
dEVsZW1lbnRTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmF0
dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGF0dGFjaG1lbnRFbGVtZW50U2VydmljZXMoKSwgc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgbV9wcm9jZXNzLT5zZXRIYXNJc3N1ZWRBdHRhY2htZW50RWxlbWVu
dFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIH0KICNlbmRpZgpAQCAtMTAxNDQsNyAr
MTAxNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcGFnZUxv
YWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSAqbV9wYWdlTG9hZFN0YXJ0OwotICAgIG1f
cGFnZUxvYWRTdGFydCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BhZ2VMb2FkU3RhcnQgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBDb21wbGV0aW9uQ29uZGl0aW9uIGNvbmRpdGlvbiB7IENvbXBsZXRp
b25Db25kaXRpb246OlN1Y2Nlc3MgfTsKICAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjc2YzdjMzAwYzQ0ODYw
ZmM4MjIzNmJjNjRhZjZmNTA0YjgzNWFlNS4uMDMyM2Y2OWYwZDYxMjcwYzdjZmE3MmI2M2I1ZmFm
NzI5NDg3OTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE0
MzIsNyArMTQzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9TaXppbmdTaG91bGRFeHBh
bmRUb1ZpZXdIZWlnaHQoYm9vbCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIFdlYkNvcmU6OkludFNp
emUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52YWx1ZU9yKFdlYkNvcmU6OkludFNpemUoKSk7
IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
KSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMudmFsdWVf
b3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5VExTKCk7CkBA
IC0xNzMwLDggKzE3MzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hl
bWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9
IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAg
ICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJk
R29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0xODMzLDcgKzE4MzMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc0ZvcmNlZEludG9BcHBCb3VuZE1vZGVUZXN0aW5nKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBj
b25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQog
I2Vsc2UKLSAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
KyAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5LmNwcAppbmRleCAxMmUyMGJhN2U2YWNlZmU2N2YzYzFlZThiNmQ2NDMw
YmEyNDJkYTBiLi40YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAzMWQ5NTA2MWY5MGNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHAKQEAgLTkz
LDEyICs5MywxMiBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKElQ
Qzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOgogCiB2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYsIGludDY0X3QsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1J
bmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQog
CiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChJUEM6
OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
ZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggYmE5MzBmYTRlNzY3M2I1ZDUyZTJmNGQ1YWMzOWE1Y2M0ZmMzYzMx
Ni4uYjUyNGMyNGQxODlhNWQwNzNjNmUzMDlmNWExMjliNjYwMTgxMzM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjA1Niw3ICsyMDU2LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpCiB7CiAg
ICAgaWYgKCFtX3dlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291bnRlci52YWx1ZSgpKSB7CiAg
ICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9uczogVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgcGxheWlu
ZyBhdWRpYmxlIG1lZGlhIG5vdyB6ZXJvLiBSZWxlYXNpbmcgVUkgcHJvY2VzcyBhc3NlcnRpb24u
Iik7Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IGY1YmE1MGI5OWFlYzY0NzcyZGJmYTEwZWE4OGNhNWM3MzM0MmVjNWYuLmQ2YmIzMzcz
N2JiZjk5ZGM3NDNhNzc3NzZmMzUxMDhmMzllNmM2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLmludmFsaWRh
dGUoKTsKICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLmludmFsaWRhdGUoKTsK
ICAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKLSAgICBtX2F1
ZGlibGVNZWRpYUFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgIG1fYXVkaWJsZU1lZGlhQWN0
aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8mIGZyYW1lIDogY29weVRvVmVj
dG9yKG1fZnJhbWVNYXAudmFsdWVzKCkpKQogICAgICAgICBmcmFtZS0+d2ViUHJvY2Vzc1dpbGxT
aHV0RG93bigpOwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRp
ZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbm5lY3QK
ICNlbmRpZgogCiAgICAgaWYgKG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxh
dW5jaGVkKSB7Ci0gICAgICAgIGF1dG8gdXNlTGF6eVN0b3AgPSAqc3RkOjpleGNoYW5nZShtX3No
b3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgYXV0byB1c2VMYXp5U3RvcCA9ICpzdGQ6OmV4Y2hhbmdlKG1fc2hvdWxkU3RhcnRS
ZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBz
dGFydFJlc3BvbnNpdmVuZXNzVGltZXIodXNlTGF6eVN0b3ApOwogICAgIH0KIH0KQEAgLTE1MDAs
NyArMTUwMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVBdWRpYmxlTWVkaWFBc3Nl
cnRpb25zKCkKICAgICAgICAgfTsKICAgICB9IGVsc2UgewogICAgICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUmVsZWFzaW5nIE1lZGlhUGxheWJhY2sgYXNzZXJ0aW9u
IGZvciBXZWJQcm9jZXNzIHdpdGggUElEICVkIiwgdGhpcywgcHJvY2Vzc0lkZW50aWZpZXIoKSk7
Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDA4Yjg0NjdjYzhhZTI3
MmQ5NDFjMTUyNzk0MjMxMDY0ZjZkOWY0NGEuLmUyNTM4NzY2MWI0NjM2OTBhYjQ4OGFhZThkYTM2
NDkwYTljOWZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QgeyByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbiA/ICptX3JlZ2lzdHJhYmxlRG9tYWluID09IGRvbWFpbiA6IGZhbHNl
OyB9Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVlT3IoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4geyB9KTsgfQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lz
dHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZV9v
cihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CiAgICAgdm9pZCBzZXRJc0luUHJv
Y2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KaW5kZXggY2ZjZDlmM2MwM2M5YzZhMWEzZDM0ZWQxY2M5Nzc3YTgwNzI3ZTk5MC4uYjM5
NzhmMjRlNGFiOTQ2OTgyNDU3NDhkMWE3YmNhZjVjNjFjY2UzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
U3RyaW5nCiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkgaGF2ZSBhcHAgYm91bmQg
ZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJvdW5kRG9tYWlucyA9IGtl
eUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CiAgICAgICAgIGlmICghaGFzQXBwQm91bmRE
b21haW5zKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZUFwcEJvdW5kRG9tYWlu
UmVzdWx0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZUFw
cEJvdW5kRG9tYWluUmVzdWx0KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3Vs
dChzY2hlbWVPckRvbWFpbklzQXBwQm91bmQoaG9zdCwgcHJvdG9jb2wsIGRvbWFpbnMsIHNjaGVt
ZXMpKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zSQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFoYXNJbml0aWFsaXplZEFwcEJv
dW5kRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKaW5kZXggNjNiZWFhMTY5ODUyY2RmNWFhYzc1ZTYwYTJhNjc3NDEzNjk5ZjRmNC4u
YmQ5NmFiMWVjZDQxYTlmNDk4NGYxYmY2YWRkOWY2ZDcxOTBiZWVmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTE5NDgsNyArMTk0OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CiAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKLSAgICAgICAgYXBwQm91
bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVlT3IoSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyB9KTsKKyAgICAgICAgYXBwQm91bmREb21h
aW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVlX29yKEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3Vy
Y2U7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCmluZGV4IDQx
MTA1NmQ0M2VhNzY0YzQyYmNlMDQwM2U2YzY5ZGRiOGIyNGIwNGUuLjY5MmE0NWE0OGZhMDI3Zjky
MjEzMzhkNzRmNTM1MWJlZjRiYWYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCkBA
IC0yOTYsNyArMjk2LDcgQEAgdm9pZCBHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlcjo6bG9jYXRp
b25VcGRhdGVkKEdSZWZQdHI8R0RCdXNQcm94eT4mJiBwcm94eSkKICAgICBndWludDY0IHRpbWVz
dGFtcDsKICAgICBnX3ZhcmlhbnRfZ2V0KHByb3BlcnR5LmdldCgpLCAiKHR0KSIsICZ0aW1lc3Rh
bXAsIG51bGxwdHIpOwogICAgIHBvc2l0aW9uLnRpbWVzdGFtcCA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZXN0YW1wKTsKLSAgICBtX3VwZGF0ZU5vdGlmeUZ1bmN0aW9uKFdURk1vdmUocG9zaXRp
b24pLCBXVEY6Om51bGxvcHQpOworICAgIG1fdXBkYXRlTm90aWZ5RnVuY3Rpb24oV1RGTW92ZShw
b3NpdGlvbiksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgR2VvY2x1ZUdlb2xvY2F0aW9uUHJv
dmlkZXI6OmRpZEZhaWwoQ1N0cmluZyBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcAppbmRleCA1YjQ2MDk5
NzkyYjY5OWUwYWUwNDc5YzI4YWEwM2MzYTc5MzRiMTFlLi40YTNkYTJkNTZjNTMzNmMzZjQ4MDUx
NDkzZmUxM2RiZDEzNGQyMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBXZWJQ
b3B1cE1lbnVQcm94eUd0azo6c2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtSW5kZXgpCiB2b2lkIFdl
YlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0aW9uYWw8dW5zaWduZWQ+IGl0ZW1J
bmRleCkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5n
ZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVlT3IobV9zZWxlY3RlZEl0ZW0udmFs
dWVPcigtMSkpKTsKKyAgICAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0
aGlzLCBpdGVtSW5kZXgudmFsdWVfb3IobV9zZWxlY3RlZEl0ZW0udmFsdWVfb3IoLTEpKSk7CiB9
CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbUF0UGF0aChHdGtUcmVl
UGF0aCogcGF0aCkKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3Rr
OjpoaWRlUG9wdXBNZW51KCkKICAgICB9CiAjZW5kaWYKIAotICAgIGFjdGl2YXRlSXRlbShXVEY6
Om51bGxvcHQpOworICAgIGFjdGl2YXRlSXRlbShzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKG1f
Y3VycmVudFNlYXJjaFN0cmluZykgewogICAgICAgICBnX3N0cmluZ19mcmVlKG1fY3VycmVudFNl
YXJjaFN0cmluZywgVFJVRSk7CkBAIC00MzIsMTAgKzQzMiwxMCBAQCBPcHRpb25hbDx1bnNpZ25l
ZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNpZ25lZCBrZXl2
YWwsIHVpbgogewogICAgIGd1bmljaGFyIGtleWNoYXIgPSBnZGtfa2V5dmFsX3RvX3VuaWNvZGUo
a2V5dmFsKTsKICAgICBpZiAoIWdfdW5pY2hhcl9pc3ByaW50KGtleWNoYXIpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKHRpbWUgPCBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IHR5cGVhaGVhZFRpbWVvdXRNcyA9IDEwMDA7CiAgICAgaWYgKHRpbWUgLSBtX3By
ZXZpb3VzS2V5RXZlbnRUaW1lID4gdHlwZWFoZWFkVGltZW91dE1zKSB7CkBAIC00NjksNyArNDY5
LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlBvcHVwTWVudVByb3h5R3RrOjp0eXBlQWhlYWRG
aW5kSW5kZXgodW5zaWduZWQga2V5dmFsLCB1aW4KICAgICBHVW5pcXVlUHRyPGNoYXI+IG5vcm1h
bGl6ZWRQcmVmaXgoZ191dGY4X25vcm1hbGl6ZShtX2N1cnJlbnRTZWFyY2hTdHJpbmctPnN0ciwg
cHJlZml4TGVuZ3RoLCBHX05PUk1BTElaRV9BTEwpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBy
ZWZpeChub3JtYWxpemVkUHJlZml4ID8gZ191dGY4X2Nhc2Vmb2xkKG5vcm1hbGl6ZWRQcmVmaXgu
Z2V0KCksIC0xKSA6IG51bGxwdHIpOwogICAgIGlmICghcHJlZml4KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbW9kZWwg
PSBndGtfdHJlZV92aWV3X2dldF9tb2RlbChHVEtfVFJFRV9WSUVXKG1fdHJlZVZpZXcpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbUNvdW50OyBpKyssIGluZGV4ID0gKGluZGV4
ICsgMSkgJSBpdGVtQ291bnQpIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBPcHRpb25hbDx1bnNpZ25l
ZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNpZ25lZCBrZXl2
YWwsIHVpbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBXZWJQb3B1
cE1lbnVQcm94eUd0azo6dHlwZUFoZWFkRmluZCh1bnNpZ25lZCBrZXl2YWwsIHVpbnQzMl90IHRp
bWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDBkM2RhOTJjZDQxNTUwN2E4YjE4ODkyNDczMzYx
NjdiOGM4NWQ2YjQuLmY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3Y2RhYTdlZDRkZWZiODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5tbQpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIGJvb2wgY2FuVXBkYXRl
UHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3VyY2Up
CiBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6YWN0
aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqaXRlbSkgY29uc3QKIHsKICAgICBpZiAo
IVtpdGVtLnByaXZhdGVMb2NhbENvbnRleHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IFsoTlNOdW1iZXIgKilpdGVtLnByaXZhdGVM
b2NhbENvbnRleHQgaW50ZWdlclZhbHVlXTsKICAgICBmb3IgKGF1dG8mIHNvdXJjZSA6IG1fYWN0
aXZlRHJhZ1NvdXJjZXMpIHsKICAgICAgICAgaWYgKHNvdXJjZS5pdGVtSWRlbnRpZmllciA9PSBp
ZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24gYWN0aW9uKSBjb25zdApAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlOjpjbGVhclN0YWdlZERyYWdTb3VyY2UoRGlkQmVjb21lQWN0aXZl
IGRpZEJlY29tZUFjCiB7CiAgICAgaWYgKGRpZEJlY29tZUFjdGl2ZSA9PSBEaWRCZWNvbWVBY3Rp
dmU6OlllcykKICAgICAgICAgbV9hY3RpdmVEcmFnU291cmNlcy5hcHBlbmQoc3RhZ2VkRHJhZ1Nv
dXJjZSgpKTsKLSAgICBtX3N0YWdlZERyYWdTb3VyY2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9z
dGFnZWREcmFnU291cmNlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDA0OWFkYzVhOWNhNmJi
ZWM5MTZhYzIxNWY3OGVlODU5OGZlZmM2NWMuLmQ2Mzg4YzA4NTAxNzlkOTZhYTMwYzcyNzRlNTkw
YzNlY2UxNWE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xp
ZW50SW1wbElPUy5oCkBAIC0yOTAsNyArMjkwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
dm9pZCBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6
ZXIqKSBvdmVycmlkZTsKLSAgICBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3VjaElk
ZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgb3ZlcnJp
ZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9y
R2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDUwYzlhMDFjNDA4ZDQ2
YjE3YTQ3NTgwNTE0NGY1YjQ4ZjQ1NzI0ZGEuLmU0MjhkYWMwYTBiNDJmZmQ2ZDgyYzI5ZDY3YzM3
NzFiNWY2NTE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0KQEAgLTY3Miw3ICs2NzIsNyBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjpo
YW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IEZy
YQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFX
aXRoUGFyc2VkVVJMJiBzaGFyZURhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBbbV9jb250ZW50VmlldyBfc2hvd1NoYXJl
U2hlZXQ6c2hhcmVEYXRhIGluUmVjdDpXVEY6Om51bGxvcHQgY29tcGxldGlvbkhhbmRsZXI6V1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildOworICAgIFttX2NvbnRlbnRWaWV3IF9zaG93U2hhcmVT
aGVldDpzaGFyZURhdGEgaW5SZWN0OnN0ZDo6bnVsbG9wdCBjb21wbGV0aW9uSGFuZGxlcjpXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTk2Miw3
ICs5NjIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVS
ZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlcwogICAgIFttX2NvbnRlbnRWaWV3IGNh
bmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6ZXJdOwogfQog
Ci1XVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBQYWdlQ2xpZW50SW1wbDo6YWN0aXZlVG91Y2hJZGVu
dGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJl
Y29nbml6ZXIpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBQYWdlQ2xpZW50SW1wbDo6YWN0aXZl
VG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciog
Z2VzdHVyZVJlY29nbml6ZXIpCiB7CiAgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3IGFjdGl2ZVRv
dWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVyXTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNz
aXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Np
c3RhbnQubW0KaW5kZXggN2RiYzAxMzJkODJlZDBjZDY1ODEwZjBmY2VmYmYzZmM0ZDI4NWZkYy4u
YjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUxNjQwMzRhZDhjZjBlYWQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KQEAg
LTEwNDksNyArMTA0OSw3IEBAIC0gKHZvaWQpY2xlYW51cFNoZWV0CiAgICAgW19pbnRlcmFjdGlv
blNoZWV0IHNldFNoZWV0RGVsZWdhdGU6bmlsXTsKICAgICBfaW50ZXJhY3Rpb25TaGVldCA9IG5p
bDsKICAgICBfZWxlbWVudEluZm8gPSBuaWw7Ci0gICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24gPSBX
VEY6Om51bGxvcHQ7CisgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgX25lZWRzTGlua0luZGljYXRvciA9IE5POwogICAgIF9pc1ByZXNlbnRpbmdERFVzZXJJbnRl
cmZhY2UgPSBOTzsKICAgICBfaGFzUGVuZGluZ0FjdGlvblNoZWV0ID0gTk87CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDRjZTUxNWIxOGQ5MGMx
MjQ1OTQzNjRiMmZjODcwYWFhZWE0ZDRmMTUuLjZiMDQ5YjQwN2IxMjFlODkzMDQyZGYzOWExNTFm
Yzk2MjkxMGVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3Lm1tCkBAIC0xODAsNyArMTgwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFs
aXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICAv
LyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRoZSByYW5nZSBvZiBEaXNwbGF5
SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwgaXQgaXMgbm90IGVudGlyZWx5
IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIGFuZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGluIHRoZSBzYW1lIHByb2Nlc3Mu
Ci0gICAgX3BhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkgLSBfcGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSwgV1RGOjpudWxs
b3B0KTsKKyAgICBfcGFnZS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dWludDMyX3Q+OjptYXgoKSAtIF9wYWdlLT53ZWJQYWdlSUQoKS50b1VJbnQ2NCgpLCBzdGQ6
Om51bGxvcHQpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIF9wYWdlLT5zZXRG
dWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xpZW50PihzZWxm
LndlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBiYjQ1NDNjMzY4MTE4N2YyNzJiNDA5M2Q4NzY3
ZmJhOGM4NGZiM2FmLi43Mjc1OTRiM2YzNDA1NjYwM2Y3MGVhYzhjYjJkMmU1NWMzMzUxNGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5oCkBAIC01NTgsNyArNTU4LDcgQEAgdXNpbmcgSW1hZ2VFeHRyYWN0aW9uUmVx
dWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlRXh0cmFjdGlvblJlcXVlc3QK
IC0gKHZvaWQpX3pvb21Ub1JldmVhbEZvY3VzZWRFbGVtZW50OwogCiAtICh2b2lkKWNhbmNlbFBv
aW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJl
UmVjb2duaXplcjsKLS0gKFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+KWFjdGl2ZVRvdWNoSWRlbnRp
ZmllckZvckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXI7CistIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPilhY3RpdmVUb3VjaElkZW50aWZp
ZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNv
Z25pemVyOwogCiAjZGVmaW5lIERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9W
SUVXKF9hY3Rpb24pIFwKICAgICAtICh2b2lkKV9hY3Rpb24gIyMgRm9yV2ViVmlldzooaWQpc2Vu
ZGVyOwpAQCAtNjA0LDcgKzYwNCw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19B
Q1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lk
KV9zY3JvbGxpbmdOb2RlU2Nyb2xsaW5nRGlkRW5kOwogLSAodm9pZClfc2hvd1BsYXliYWNrVGFy
Z2V0UGlja2VyOihCT09MKWhhc1ZpZGVvIGZyb21SZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JillbGVtZW50UmVjdCByb3V0ZVNoYXJpbmdQb2xpY3k6KFdlYkNvcmU6OlJvdXRlU2hhcmluZ1Bv
bGljeSlwb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5nICopY29udGV4dFVJRDsKIC0g
KHZvaWQpX3Nob3dSdW5PcGVuUGFuZWw6KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyopcGFyYW1l
dGVycyBmcmFtZUluZm86KGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYpZnJhbWVJbmZvIHJl
c3VsdExpc3RlbmVyOihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKWxp
c3RlbmVyOwotLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0
YVdpdGhQYXJzZWRVUkwmKXNoYXJlRGF0YSBpblJlY3Q6KFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9zaG93U2hhcmVTaGVl
dDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYpc2hhcmVEYXRhIGluUmVj
dDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRs
ZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpX3Nob3dDb250YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1Jl
cXVlc3REYXRhJilyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5mbz4+JiYpPiYm
KWNvbXBsZXRpb25IYW5kbGVyOwogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWZpbGVQaWNrZXJB
Y2NlcHRlZFR5cGVJZGVudGlmaWVyczsKIC0gKHZvaWQpZGlzbWlzc0ZpbGVQaWNrZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCAxOGExY2RlOWNlODljZDJmNDZjNjI1MDEwNjgxMTE4NmVkNGI0ZGMwLi5h
N2FlMWI0OTc0Y2NiOWU2ZTZmOTA0YmM0MWVhMjY1ZWM1M2UwMzRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
QEAgLTk3MSw3ICs5NzEsNyBAQCAtICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlvbgogICAgIFtfZm9y
bUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKICAgICBfZm9ybUlucHV0U2Vzc2lvbiA9IG5pbDsK
ICAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgX2xhc3RPdXRz
dGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAgIF9s
YXN0T3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9ybWF0aW9uID0gTk87CiAKICAgICBfZm9jdXNS
ZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POwpAQCAtMTAwMCw3ICsxMDAwLDcg
QEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICAgICAgX2ludGVyYWN0aW9uVmlld3ND
b250YWluZXJWaWV3ID0gbmlsOwogICAgIH0KIAotICAgIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJU
b092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIF9s
YXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0g
c3RkOjpudWxsb3B0OwogCiAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdG91Y2hFdmVu
dEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTE1NDQsNyArMTU0NCw3IEBAIC0gKHZvaWQp
Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pCiAgICAgfQogfQogCi0tIChXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPilh
Y3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyCistIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPilhY3Rp
dmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgTlNNYXBUYWJsZTxOU051bWJlciAqLCBVSVRv
dWNoICo+ICphY3RpdmVUb3VjaGVzID0gW190b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIgYWN0
aXZlVG91Y2hlc0J5SWRlbnRpZmllcl07CiAgICAgZm9yIChOU051bWJlciAqdG91Y2hJZGVudGlm
aWVyIGluIGFjdGl2ZVRvdWNoZXMpIHsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIC0gKFdURjo6T3B0
aW9uYWw8dW5zaWduZWQ+KWFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVy
OihVSUdlc3R1cmVSCiAgICAgICAgIGlmIChbdG91Y2guZ2VzdHVyZVJlY29nbml6ZXJzIGNvbnRh
aW5zT2JqZWN0Omdlc3R1cmVSZWNvZ25pemVyXSkKICAgICAgICAgICAgIHJldHVybiBbdG91Y2hJ
ZGVudGlmaWVyIHVuc2lnbmVkSW50VmFsdWVdOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBzdGF0aWMgVUlLZXlN
b2RpZmllckZsYWdzIGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJGbGFncyhVSUdlc3R1cmVSZWNv
Z25pemVyICpyZWNvZ25pemVyKQpAQCAtMjUyNSw3ICsyNTI1LDcgQEAgLSAodm9pZClfaW52b2tl
QW5kUmVtb3ZlUGVuZGluZ0hhbmRsZXJzVmFsaWRGb3JDdXJyZW50UG9zaXRpb25JbmZvcm1hdGlv
bgogICAgICAgICBpZiAoIVtzZWxmIF9jdXJyZW50UG9zaXRpb25JbmZvcm1hdGlvbklzVmFsaWRG
b3JSZXF1ZXN0OnJlcXVlc3RBbmRIYW5kbGVyLT5maXJzdF0pCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBfcGVuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25IYW5kbGVyc1tpbmRleF0g
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9wZW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvbkhhbmRs
ZXJzW2luZGV4XSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAocmVxdWVzdEFuZEhhbmRs
ZXItPnNlY29uZCkKICAgICAgICAgICAgIHJlcXVlc3RBbmRIYW5kbGVyLT5zZWNvbmQodXBkYXRl
ZFBvc2l0aW9uSW5mb3JtYXRpb24pOwpAQCAtMjYyNCw3ICsyNjI0LDcgQEAgLSAoQk9PTClnZXN0
dXJlUmVjb2duaXplclNob3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJl
Y29nbml6ZXIKICAgICAgICAgICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlv
bklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5ub2RlQXRQb3NpdGlvbkhh
c0RvdWJsZUNsaWNrSGFuZGxlci52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIF9wb3Np
dGlvbkluZm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSGFzRG91YmxlQ2xpY2tIYW5kbGVyLnZhbHVl
X29yKGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2hpZ2hs
aWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCkBAIC0zMTM2LDcgKzMxMzYsNyBAQCAtICh2
b2lkKV9pbnZhbGlkYXRlQ3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KIC0gKHZvaWQpX3Bvc2l0
aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKWluZm8KIHsKICAgICBpZiAoX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0ICYmIGluZm8ucmVxdWVzdC5pc1ZhbGlkRm9yUmVxdWVzdCgqX2xh
c3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KSkKLSAgICAgICAgX2xhc3RP
dXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBfbGFzdE91dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9ybWF0aW9uID0gTk87CiAKQEAg
LTQ0MjAsNyArNDQyMCw3IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50
OihDR1BvaW50KXBvaW50IHdpdGhCb3VuZGFyeTooVUlUZXh0R3JhbnVsCiAKIC0gKFVURjMyQ2hh
cilfY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24KIHsKLSAgICByZXR1cm4gX2xhc3RJbnNl
cnRlZENoYXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24udmFsdWVPcihf
cGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3RlckJlZm9yZVNlbGVj
dGlvbik7CisgICAgcmV0dXJuIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFj
dGVyQmVmb3JlU2VsZWN0aW9uLnZhbHVlX29yKF9wYWdlLT5lZGl0b3JTdGF0ZSgpLnBvc3RMYXlv
dXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKIH0KIAogLSAoVVRGMzJDaGFyKV9j
aGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjooaW50KWFtb3VudApAQCAtNjQyOSw3
ICs2NDI5LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKICAgICBpZiAoIV9pc0NoYW5naW5n
Rm9jdXMpCiAgICAgICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID0gTk87CiAKLSAg
ICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
biA9IFdURjo6bnVsbG9wdDsKKyAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNo
YXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogLSAodm9pZClfdXBk
YXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50CkBAIC03MDI5
LDcgKzcwMjksNyBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAgICAgW193ZWJWaWV3IF9k
aWRDaGFuZ2VFZGl0b3JTdGF0ZV07CiAKICAgICBpZiAoIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLmlz
TWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJU
b092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
biA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9u
ICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmF1dG9jYXBpdGFsaXplVHlwZSA9PSBXZWJD
b3JlOjpBdXRvY2FwaXRhbGl6ZVR5cGU6OldvcmRzKQogICAgICAgICAgICAgW1VJS2V5Ym9hcmRJ
bXBsLnNoYXJlZEluc3RhbmNlIGNsZWFyU2hpZnRTdGF0ZV07CiAgICAgfQpAQCAtNzI0MSw3ICs3
MjQxLDcgQEAgLSAoQk9PTClmaWxlVXBsb2FkUGFuZWxEZXN0aW5hdGlvbklzTWFuYWdlZDooV0tG
aWxlVXBsb2FkUGFuZWwgKilmaWxlVXBsb2FkUGFuZWwKICAgICAgICAgJiYgW3VpRGVsZWdhdGUg
X3dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaWxlVXBsb2FkUGFuZWxDb250ZW50SXNNYW5hZ2VkV2l0
aEluaXRpYXRpbmdGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShf
ZnJhbWVJbmZvRm9yRmlsZVVwbG9hZFBhbmVsKSwgX3BhZ2UuZ2V0KCkpKV07CiB9CiAKLS0gKHZv
aWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJM
JilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29t
cGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlv
bkhhbmRsZXIKKy0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAgICAgaWYgKF9zaGFyZVNoZWV0KQpAQCAtNzI5MCw3ICs3MjkwLDcg
QEAgLSAodm9pZClfc2hvd0NvbnRhY3RQaWNrZXI6KGNvbnN0IFdlYkNvcmU6OkNvbnRhY3RzUmVx
dWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXAKICAgICBbX2NvbnRhY3RQaWNrZXIgc2V0RGVsZWdh
dGU6c2VsZl07CiAgICAgW19jb250YWN0UGlja2VyIHByZXNlbnRXaXRoUmVxdWVzdERhdGE6cmVx
dWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOwog
I2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApAQCAtNzQwNSw3ICs3NDA1LDcg
QEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbj4p
cG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGkKICAgICByZXF1ZXN0LmluY2x1ZGVMaW5rSW5kaWNh
dG9yID0gYXNzaXN0YW50Lm5lZWRzTGlua0luZGljYXRvcjsKICAgICByZXF1ZXN0LmxpbmtJbmRp
Y2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFzZWxmLl9zaG91bGRVc2VDb250ZXh0TWVu
dXM7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNVcFRvRGF0ZTpy
ZXF1ZXN0XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbjsKIH0KQEAgLTc5
OTksNyArNzk5OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBj
b3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyCiB7CiAgICAgc3dpdGNoIChk
cm9wT3BlcmF0aW9uKSB7CiAgICAgY2FzZSBVSURyb3BPcGVyYXRpb25DYW5jZWw6Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRkZW46CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uOjpQcml2YXRlOwogICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ29weToKQEAg
LTgwMDgsNyArODAwOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyCiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlk
IDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjooV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCkBAIC05Mzk2LDcgKzkzOTYsNyBA
QCAtICh2b2lkKV9wb2ludGVySW50ZXJhY3Rpb246KFVJUG9pbnRlckludGVyYWN0aW9uICopaW50
ZXJhY3Rpb24gcmVnaW9uRm9yUmVxdWVzdAogICAgICAgICBjb21wbGV0aW9uKFtzZWxmIHBvaW50
ZXJSZWdpb25Gb3JQb3NpdGlvbkluZm9ybWF0aW9uOmludGVyYWN0aW9uSW5mb3JtYXRpb24gcG9p
bnQ6cmVxdWVzdC5sb2NhdGlvbl0pOwogCiAgICAgICAgIGlmIChfZGVmZXJyZWRQb2ludGVySW50
ZXJhY3Rpb25SZXF1ZXN0KSB7Ci0gICAgICAgICAgICBhdXRvIGRlZmVycmVkUmVxdWVzdCA9IHN0
ZDo6ZXhjaGFuZ2UoX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9uUmVxdWVzdCwgV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIGF1dG8gZGVmZXJyZWRSZXF1ZXN0ID0gc3RkOjpleGNoYW5nZShf
ZGVmZXJyZWRQb2ludGVySW50ZXJhY3Rpb25SZXF1ZXN0LCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3JtYXRpb24pIHsK
ICAgICAgICAgICAgICAgICByZXBseUhhbmRsZXIoaW50ZXJhY3Rpb25JbmZvcm1hdGlvbiwgZGVm
ZXJyZWRSZXF1ZXN0LT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICAgfSBmb3JSZXF1ZXN0OmRl
ZmVycmVkUmVxdWVzdC0+Zmlyc3RdOwpAQCAtOTYzMyw4ICs5NjMzLDggQEAgLSAodm9pZClfZG9B
ZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KHZvaWQoXikoV2ViS2l0OjpQcm9jZWVkV2l0aElt
YWdlRXh0cmFjdGkKIAogLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9ybUFmdGVyUGVu
ZGluZ0ltYWdlRXh0cmFjdGlvbjooV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbilw
cm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogewotICAgIF9wZW5kaW5nSW1hZ2VFeHRyYWN0aW9u
UmVxdWVzdElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Ci0gICAgX2VsZW1lbnRQZW5kaW5nSW1h
Z2VFeHRyYWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIF9wZW5kaW5nSW1hZ2VFeHRyYWN0aW9u
UmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2VsZW1lbnRQZW5kaW5nSW1h
Z2VFeHRyYWN0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGZvciAoYXV0byBibG9jayA6IHN0ZDo6
ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb24sIHsg
fSkpCiAgICAgICAgIGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5p
bWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yLm1tCmluZGV4IGI3OTFjZmVhYWUwYzNjZmIwNTliY2Q0NzI3NzZjOGMzOWY0ZWU3
MmUuLjdiNjUwNWZhNzhlNjYzMTQ2NzlkNDhmNjZlYzJkOTBkYWQ3MTQ0YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3Iu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdB
bmltYXRvci5tbQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXli
b2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7CiAKICAgICBpZiAo
IVtfc2Nyb2xsYWJsZSBpc0tleWJvYXJkU2Nyb2xsYWJsZV0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZXZlbnQu
a2V5Ym9hcmRGbGFncyAmIFdlYkV2ZW50S2V5Ym9hcmRJbnB1dE1vZGlmaWVyRmxhZ3NDaGFuZ2Vk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycyA9IGV2ZW50
LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKICAgICBpZiAoIWNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycy5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBlbnVtIGNsYXNzIEtleSA6IHVpbnQ4X3QgeyBP
dGhlciwgTGVmdEFycm93LCBSaWdodEFycm93LCBVcEFycm93LCBEb3duQXJyb3csIFBhZ2VVcCwg
UGFnZURvd24sIFNwYWNlIH07CiAgICAgCkBAIC0yMTYsNyArMjE2LDcgQEAgLSAoT3B0aW9uYWw8
V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVu
dCAqKWV2ZW50CiAgICAgfSgpOwogICAgIAogICAgIGlmIChrZXkgPT0gS2V5OjpPdGhlcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBCT09MIHNoaWZ0UHJlc3NlZCA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJF
dmVudEZsYWdNYXNrU2hpZnRLZXk7CiAgICAgQk9PTCBhbHRQcmVzc2VkID0gZXZlbnQubW9kaWZp
ZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXk7CkBAIC0yMjUsNyArMjI1LDcgQEAg
LSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVu
dDooOjpXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gTm8gc2hvcnRjdXRzIGluY2x1ZGUgbW9yZSB0
aGFuIG9uZSBtb2RpZmllcjsgd2Ugc2hvdWxkIG5vdCBlYXQga2V5IGV2ZW50cwogICAgIC8vIHRo
YXQgY29udGFpbiBtb3JlIHRoYW4gb25lIG1vZGlmaWVyIGJlY2F1c2UgdGhleSBtaWdodCBiZSB1
c2VkIGZvciBvdGhlciBzaG9ydGN1dHMuCiAgICAgaWYgKHNoaWZ0UHJlc3NlZCArIGFsdFByZXNz
ZWQgKyBjbWRQcmVzc2VkID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYWxsb3dlZE1vZGlmaWVycyA9IF4g
V2ViRXZlbnRGbGFncyB7CiAgICAgICAgIHN3aXRjaCAoa2V5KSB7CkBAIC0yNDgsNyArMjQ4LDcg
QEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JF
dmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAKICAgICBhdXRvIHJlbGV2YW50TW9kaWZpZXJGbGFn
cyA9IFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXkgfCBXZWJFdmVudEZsYWdNYXNrQ29tbWFuZEtl
eSB8IFdlYkV2ZW50RmxhZ01hc2tTaGlmdEtleTsKICAgICBpZiAoZXZlbnQubW9kaWZpZXJGbGFn
cyAmIHJlbGV2YW50TW9kaWZpZXJGbGFncyAmIH5hbGxvd2VkTW9kaWZpZXJzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBpbmNyZW1lbnQgPSBeewogICAgICAgICBzd2l0Y2ggKGtleSkgewpAQCAtMzk3LDcgKzM5
Nyw3IEBAIC0gKHZvaWQpc3RvcEFuaW1hdGVkU2Nyb2xsCiAgICAgLy8gb3V0IHRvIHRoYXQgcG9p
bnQuCiAgICAgX2lkZWFsUG9zaXRpb24gPSBbX3Njcm9sbGFibGUgYm91bmRlZENvbnRlbnRPZmZz
ZXQ6ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKF9jdXJyZW50UG9zaXRpb24gKyBkaXNwbGFjZW1l
bnQsIF9pZGVhbFBvc2l0aW9uRm9yTWluaW11bVRyYXZlbCwgX2N1cnJlbnRTY3JvbGwtPmRpcmVj
dGlvbildOwogCi0gICAgX2N1cnJlbnRTY3JvbGwgPSBXVEY6Om51bGxvcHQ7CisgICAgX2N1cnJl
bnRTY3JvbGwgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJPT0wpc2Nyb2xsVHJpZ2dlcmluZ0tl
eUlzUHJlc3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91
c2VHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91
c2VHZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDY5MGUzY2VlOTBjYTE1NWY1NjQ3ODFlYjZhMDA5
OWVhMjhkOTZmNWIuLmZmNDg0MTE2Zjc2NGI1NGIxMzk5Yzg0NDZhYjFiOTc4NGU5YWEyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogQGludGVyZmFjZSBXS01vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgOiBVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIKIAotLSAoV1RGOjpPcHRpb25h
bDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbjsKKy0gKHN0ZDo6b3B0aW9uYWw8Q0dQb2ludD4p
bGFzdE1vdXNlTG9jYXRpb247CiAtIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQgKilsYXN0
TW91c2VFdmVudDsKIAogLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2g7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQppbmRl
eCBiOWY3ZWQ3ZmY5MjdlZjUwNjNkN2Q5MmIxNzhhOGY1NmJlZDMyZTVlLi4yODFjMmZjOGEwZDA5
ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRkNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTgyLDggKzgy
LDggQEAgLSAodm9pZClzZXRFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICAgICAgX2N1cnJlbnRU
b3VjaCA9IG5pbDsKICAgICAgICAgX3RvdWNoaW5nID0gTk87CiAgICAgICAgIF9sYXN0RXZlbnQg
PSBuaWw7Ci0gICAgICAgIF9sYXN0TG9jYXRpb24gPSBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIF9w
cmVzc2VkQnV0dG9uTWFzayA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX2xhc3RMb2NhdGlvbiA9
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgX3ByZXNzZWRCdXR0b25NYXNrID0gc3RkOjpudWxsb3B0
OwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCAtIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNl
RXZlbnQgKilsYXN0TW91c2VFdmVudAogICAgIHJldHVybiBfbGFzdEV2ZW50LmdldCgpOwogfQog
Ci0tIChXVEY6Ok9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9uCistIChzdGQ6Om9w
dGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9uCiB7CiAgICAgcmV0dXJuIF9sYXN0TG9j
YXRpb247CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgLSAodm9pZCl0b3VjaGVzRW5kZWQ6KE5TU2V0
PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50CiAgICAgX2xh
c3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmlld107CiAKICAgICBfdG91
Y2hpbmcgPSBOTzsKLSAgICBfcHJlc3NlZEJ1dHRvbk1hc2sgPSBXVEY6Om51bGxvcHQ7CisgICAg
X3ByZXNzZWRCdXR0b25NYXNrID0gc3RkOjpudWxsb3B0OwogCiAgICAgc2VsZi5zdGF0ZSA9IFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgLSAo
dm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hlcyB3aXRoRXZl
bnQ6KFVJRXZlbnQgKilldmVudAogICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBsb2NhdGlvbklu
VmlldzpzZWxmLnZpZXddOwogCiAgICAgX3RvdWNoaW5nID0gTk87Ci0gICAgX3ByZXNzZWRCdXR0
b25NYXNrID0gV1RGOjpudWxsb3B0OworICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2Vk
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggMDIyY2Rj
N2ZmNDM4ODZlZTVlM2M4ZWI2YmNmNDRjOTI3YzQ4MDc1Ni4uZDAxMDJiYzhlNjQ4MWYyNDQ1NjUy
YWI2Mjg4NTcxNDQwMTE5N2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAodm9pZClfcmVzZXRGaW5kCiAgICAgX2ZpbmRT
dHJpbmcgPSBuaWw7CiAgICAgX2ZpbmRTdHJpbmdDb3VudCA9IDA7CiAgICAgX2ZpbmRTdHJpbmdN
YXhDb3VudCA9IDA7Ci0gICAgX2ZvY3VzZWRTZWFyY2hSZXN1bHRJbmRleCA9IFdURjo6bnVsbG9w
dDsKKyAgICBfZm9jdXNlZFNlYXJjaFJlc3VsdEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIF9m
b2N1c2VkU2VhcmNoUmVzdWx0UGVuZGluZ09mZnNldCA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDMyYjBmMjhhNTZmNmU3
NWVlYmY1OGU3NTU5NTYzNmNkYzYxODE5YWMuLjgxMGJlMTdjMWM5NmQ2OWMyZTQ5ZTllMzdhOGFm
OWU5NmZlNjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVJ
bnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQoKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24mIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJsdXJQcmV2aW91
c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0
YXRlQ2hhbmdlcywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1fcGVuZGluZ0lu
cHV0TW9kZUNoYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFu
Z2UgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFPYmplY3QgPSBw
cm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCk7CiAgICAgcGFnZUNsaWVudCgpLmVsZW1lbnREaWRGb2N1cyhpbmZvcm1hdGlvbiwgdXNlcklz
SW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VzLCB1c2Vy
RGF0YU9iamVjdCk7CkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1l
bnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRCbHVyKCkKIHsKLSAgICBtX3BlbmRpbmdJ
bnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nSW5wdXRNb2RlQ2hh
bmdlID0gc3RkOjpudWxsb3B0OwogICAgIHBhZ2VDbGllbnQoKS5lbGVtZW50RGlkQmx1cigpOwog
fQogCkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbGVhc2VBbGxU
b3VjaFBvaW50cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHBhZ2VDbGllbnQoKS5mb2N1c2Vk
RWxlbWVudERpZENoYW5nZUlucHV0TW9kZSgqbV9wZW5kaW5nSW5wdXRNb2RlQ2hhbmdlKTsKLSAg
ICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5n
SW5wdXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQpCkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1h
Z2VTaQogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhp
bWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3
aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KaW5k
ZXggZTY2ZGY4NGEyMmI4MzgxM2JlZWU0NTEwZDViOWVlZTc4ODAyMjVmNi4uNDdmMDQ1OTMzZmQx
Njc1YmNhNWIyOTBmYmM5YTAyM2ZjODM4ZTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1t
CkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVj
dClmcmFtZSBkZWxlZ2F0ZTooaWQgPFdLRm9jdXNlZEZvcm1Db250cm9sVmkKICAgICBbc2VsZiBh
ZGRTdWJ2aWV3Ol9zdWJtaXRCdXR0b25CYWNrZ3JvdW5kVmlldy5nZXQoKV07CiAKICAgICBfaGFz
UGVuZGluZ0ZvY3VzUmVxdWVzdCA9IE5POwotICAgIF9pbml0aWFsU2Nyb2xsVmlld0NvbnRlbnRP
ZmZzZXQgPSBXVEY6Om51bGxvcHQ7CisgICAgX2luaXRpYWxTY3JvbGxWaWV3Q29udGVudE9mZnNl
dCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMzA0YmYwNDkyYWRjMTdmM2Yw
NDY4ZDJkNmZiYzdmZDhjNmU3NjFhNy4uMjU4NTY2YWZlZmI2Y2EwOWQwZjc2YjA1ZDk2OTlkMTc5
MjlkNzNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3Jl
ZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tCkBAIC04MTgsNyArODE4LDcgQEAgLSAodm9pZClfY29tcGxldGVkRXhpdEZ1bGxTY3JlZW4K
IAogICAgIF92aWV3U3RhdGUuYXBwbHlUbyh3ZWJWaWV3LmdldCgpKTsKICAgICBpZiAoYXV0byBw
YWdlID0gW3dlYlZpZXcgX3BhZ2VdKQotICAgICAgICBwYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhZ2UtPnNldE92ZXJyaWRlVmlld3Bv
cnRBcmd1bWVudHMoc3RkOjpudWxsb3B0KTsKIAogICAgIFt3ZWJWaWV3IHNldE5lZWRzTGF5b3V0
XTsKICAgICBbd2ViVmlldyBsYXlvdXRJZk5lZWRlZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCA1YjAwZWM1ODJkMTQyZWJlMzMyMTkxYTFmYmY2
MWFiODhlODlhZWEwLi4wZTdkNDk0MTBjZDY3MTlkNDJmMDExNzgyY2FkYWU4ZTBlNGYxNjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNwbGF5V2FzUmVm
cmVzaGVkKCkKICAgICBhdXRvIG1heEZyYW1lc1BlclNlY29uZCA9IFtdKGNvbnN0IFZlY3RvcjxP
YnNlcnZlckluZm8+JiBvYnNlcnZlcnMpIHsKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVzUGVyU2Vjb25kPiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQ7CiAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlcnNN
YXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heChvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQu
dmFsdWVPcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKKyAgICAgICAg
ICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4KG9ic2VydmVyc01heEZy
YW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKTsKICAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZDsKICAgICB9
OwogCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBEaXNwbGF5TGluazo6bm90aWZ5T2JzZXJ2ZXJz
RGlzcGxheVdhc1JlZnJlc2hlZCgpCiAgICAgICAgIGFueUNvbm5lY3Rpb25IYWRPYnNlcnZlcnMg
PSB0cnVlOwogCiAgICAgICAgIGF1dG8gb2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25kID0gbWF4
RnJhbWVzUGVyU2Vjb25kKGNvbm5lY3Rpb25JbmZvLm9ic2VydmVycyk7Ci0gICAgICAgIGF1dG8g
bWFpblRocmVhZFdhbnRzVXBkYXRlID0gbV9jdXJyZW50VXBkYXRlLnJlbGV2YW50Rm9yVXBkYXRl
RnJlcXVlbmN5KG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZC52YWx1ZU9yKFdlYkNvcmU6OkZ1
bGxTcGVlZEZyYW1lc1BlclNlY29uZCkpOworICAgICAgICBhdXRvIG1haW5UaHJlYWRXYW50c1Vw
ZGF0ZSA9IG1fY3VycmVudFVwZGF0ZS5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShvYnNlcnZl
cnNNYXhGcmFtZXNQZXJTZWNvbmQudmFsdWVfb3IoV2ViQ29yZTo6RnVsbFNwZWVkRnJhbWVzUGVy
U2Vjb25kKSk7CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5rLCBzdHJlYW0g
PDwgIltVSSBdIERpc3BsYXlMaW5rICIgPDwgdGhpcyA8PCAiIGZvciBkaXNwbGF5ICIgPDwgbV9k
aXNwbGF5SUQgPDwgIiAoZGlzcGxheSBmcHMgIiA8PCBtX2Rpc3BsYXlOb21pbmFsRnJhbWVzUGVy
U2Vjb25kIDw8ICIpIHVwZGF0ZSAiIDw8IG1fY3VycmVudFVwZGF0ZSA8PCAiICIgPDwgY29ubmVj
dGlvbkluZm8ub2JzZXJ2ZXJzLnNpemUoKQogICAgICAgICAgICAgPDwgIiBvYnNlcnZlcnMsIG9u
IGJhY2tncm91bmQgcXVldWUgIiA8PCBzaG91bGRTZW5kSVBDT25CYWNrZ3JvdW5kUXVldWUgPDwg
IiBtYXhGcmFtZXNQZXJTZWNvbmQgIiA8PCBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQgPDwg
IiBmdWxsIHNwZWVkIGNsaWVudHMgIiA8PCBjb25uZWN0aW9uSW5mby5mdWxsU3BlZWRVcGRhdGVz
Q2xpZW50Q291bnQgPDwgIiByZWxldmFudCAiIDw8IG1haW5UaHJlYWRXYW50c1VwZGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRl
Q29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3Rh
dGVDb2RpbmcuY3BwCmluZGV4IGEzOTQwNjQ5ZmRiZjJkZWQ0ODRhNGUyNjEwMmI5MjFjYzI4MDc4
ZjcuLmVhZGFkNGU4ZmEzMzY2NTg0N2UxNzJmZjVlOTJjMGU0NmI5YTE1NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2Rp
bmcuY3BwCkBAIC0yODksOCArMjg5LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVt
ZW50KEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQQm8KICAgICAg
ICAgZW5jb2RlciA8PCBmYWxzZTsKIAogICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZVN0
YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZU9yKC0xKTsK
LSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUu
dmFsdWVPcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoLTEpOworICAgICAg
ICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9v
cihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpAQCAtNzE4
LDcgKzcxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPj4gdW5kZXJseWluZ0VudW1WYWx1
ZTsKIAogICAgICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNWYWxpZEVudW0oc3RhdGljX2Nhc3Q8
VD4odW5kZXJseWluZ0VudW1WYWx1ZSkpKQotICAgICAgICAgICAgdmFsdWUgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICB2YWx1ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPih1bmRlcmx5aW5nRW51bVZhbHVlKTsKIApA
QCAtMTA3Nyw3ICsxMDc3LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29k
ZVYxU2Vzc2lvbkhpc3RvcnkoQ0ZEaWN0aW9uYXJ5UmVmIHNlc3Npb25IaXMKICAgICBhdXRvIGN1
cnJlbnRJbmRleE51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBzZXNzaW9uSGlzdG9yeUN1cnJl
bnRJbmRleEtleSkpOwogICAgIGlmICghY3VycmVudEluZGV4TnVtYmVyKSB7CiAgICAgICAgIC8v
IE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkgcmVwcmVzZW50cyBhbiBlbXB0
eSBzZXNzaW9uLgotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMgPSB7IH07
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGEzMzc3M2FiOWMwYTQxYTJmOWVjMzk4NmZk
YzQxMGIxYjRiYmY4NzMuLjIxN2U5ZGNmODA5NDJmNzJmOWM2Mjk2NGI1MTJmNmQzOWJjNGU0ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpA
QCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJvbVRlbXBvcmFy
eUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihGcmFtZUluZm9EYXRhCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNv
bnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKCFjb250ZXh0TWVudS5pdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0KTsKICAgICAKICAgICBSZXRhaW5QdHI8V0tQREZNZW51VGFyZ2V0PiBt
ZW51VGFyZ2V0ID0gYWRvcHROUyhbW1dLUERGTWVudVRhcmdldCBhbGxvY10gaW5pdF0pOwogICAg
IFJldGFpblB0cjxOU01lbnU+IG5zTWVudSA9IGFkb3B0TlMoW1tOU01lbnUgYWxsb2NdIGluaXRd
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BERkNvbnRleHRN
ZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51LAogI2VuZGlmCiAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0YWcpOwogICAgIH0KLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJBdXRoblBy
b2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
NTFlNzNhNmYyZjk3MmM3NjYzZTI4NjAwMmQ0OWE0N2QzOGMxZGYxNS4uNjRjYmFmYzkzMTliY2Zh
NDgxNWRjOTVmMWU1NDc4NDM2ZmE0YTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJB
dXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGMKIAogdm9pZCBX
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1ha2VDcmVkZW50aWFsKFZlY3Rvcjx1aW50
OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmJiBvcHRpb25z
LCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYg
aGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShv
cHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFi
bGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0
cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRsZVJlcXVlc3Qo
eyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0s
IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5k
bGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRBc3Nl
cnRpb24oVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFJlcXVlc3RDb21w
bGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7IFdURk1vdmUo
aGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAg
ICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0
ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRy
IH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhJiYgZGF0
YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKaW5kZXggMjIwM2Q2OGI3ODFjMTNlMzFkOWFjNjgwYjNhZDhkNjgwZjA1NjcyNS4uYTRiM2Zj
NTRiZTBjZjE1ZmU1YzI5ZjRiMTA0NGJkZTYxMTZlYTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0
b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYgcGEKIAogICAgIGF1dG8g
cmVzdWx0ID0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MtPmZpbmQocGF5bWVudE5ldHdvcmsp
OwogICAgIGlmIChyZXN1bHQgPT0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MtPmVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiAqcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCmluZGV4IGIyZWZjOGZmOGQzYjIzZjE5MTY0MWM2MWE4ZjIxM2YxMGIxM2IyN2YuLjEzZmM1
NjU0YmEzOTZjOTEyZDU5M2M1Njk3ZDkyMDc1MWQ0ODIzZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmkKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgZnJhbWVJRC50b1VJbnQ2NCgp
KSwKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY2FsbGJhY2tJRCksCiAgICAg
ICAgIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIG51bGxwdHIsIGV2
YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrKSwKLSAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29u
dGV4dCwgY2FsbGJhY2tUaW1lb3V0LnZhbHVlT3IoLTEpKQorICAgICAgICBKU1ZhbHVlTWFrZU51
bWJlcihjb250ZXh0LCBjYWxsYmFja1RpbWVvdXQudmFsdWVfb3IoLTEpKQogICAgIH07CiAKICAg
ICB7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGkKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dO
b3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JU
eXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RG
b3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDI1LDI5ICs0MjUsMjkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGkKIAogICAgIGF1dG8q
IGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFt
ZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFtZSog
Y29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUs
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpG
cmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChvcmRp
bmFsKTsKICAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKCpjb3JlQ2hpbGRGcmFtZSk7CiAgICAgaWYgKCFjaGlsZEZyYW1lKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQog
CiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ1NSw3ICs0NTUsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAg
IFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjMsNDEgKzQ2Myw0MSBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogCiAgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5XZWJG
cmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZE5vZGVIYW5kbGUobm9kZUhhbmRsZSkpIHsK
ICAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxpZE5vZGVJZGVu
dGlmaWVyKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZE5vZGVJZGVudGlmaWVy
cnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFs
aWROb2RlSWRlbnRpZmllcnJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBlbGVtZW50Rm9y
Tm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOwogICAgIGlmICghY29yZUVsZW1lbnQpIHsK
ICAgICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpczxXZWJDb3JlOjpI
VE1MRnJhbWVFbGVtZW50QmFzZT4oY29yZUVsZW1lbnQpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lRnJv
bUVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZT4oKmNvcmVF
bGVtZW50KS5jb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZUZyb21FbGVtZW50KSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFt
ZSogZnJhbWVGcm9tRWxlbWVudCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlRnJhbWVG
cm9tRWxlbWVudCk7CiAgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCiB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZQogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5kb3dO
b3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
d2luZG93Tm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01MTMsMjkgKzUxMywyOSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZQogCiAgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9y
VHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAg
aWYgKCFjb3JlRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3Vu
ZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVGcmFtZS0+dHJl
ZSgpLnNjb3BlZENoaWxkKG5hbWUpOwogICAgIGlmICghY29yZUNoaWxkRnJhbWUpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkZyYW1lKiBjaGls
ZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKICAgICBp
ZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3Vu
ZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJh
bWVJRCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGNoaWxkRnJhbWUt
PmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2
ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJCiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
cGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5k
RXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dO
b3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU1MSwxNyArNTUxLDE3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
CiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBX
VEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2Vi
RnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUtPnBhcmVudEZyYW1lKCk7CiAgICAgaWYgKCFwYXJl
bnRGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JU
eXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZv
dW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgp
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFt
ZUlEKCkpOwogfQogCiBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogY29udGFpbmVyRWxlbWVudEZv
ckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKQEAgLTYxOCwyNyArNjE4LDI3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAg
U3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBXVEY6Om51bGxvcHQs
IGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5
cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJG
cmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKSkgewog
ICAgICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91bmQpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCB7IH0sIFdURjo6bnVs
bG9wdCwgZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKCFpc1ZhbGlkTm9kZUhhbmRsZShub2RlSGFuZGxlKSkgewogICAgICAgICBT
dHJpbmcgaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlkTm9kZUlkZW50aWZpZXIpOwot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9kZUlkZW50aWZpZXJycm9yVHlwZSwg
eyB9LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52
YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVu
dCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFj
b3JlRWxlbWVudCkgewogICAgICAgICBTdHJpbmcgbm9kZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6Tm9kZU5vdEZv
dW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5kRXJyb3JUeXBlLCB7
IH0sIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihub2Rl
Tm90Rm91bmRFcnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
ZwogCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgZW50aXJlbHkgb3V0c2lkZSB0aGUgdmlld3Bv
cnQsIHN0aWxsIGNhbGN1bGF0ZSBpdCdzIGJvdW5kcy4KICAgICBpZiAodmlzaWJsZVBvcnRpb25P
ZkVsZW1lbnRSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBp
c09ic2N1cmVkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCByZXN1
bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZwogICAgIH0KICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09i
c2N1cmVkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHJlc3VsdEVsZW1l
bnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKIH0KIAogdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc3Niw3ICs3NzYsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZQogICAgICAgICAvLyBvcHRpb25TZWxlY3RlZEJ5VXNlcigp
IHdpbGwgZmlyZSBpbnB1dCBhbmQgY2hhbmdlIGV2ZW50cyBpZiBuZWVkZWQsIGJ1dCBhbGwgb3Ro
ZXIgZXZlbnRzIHNob3VsZCBiZSBmaXJlZCBtYW51YWxseSBoZXJlLgogICAgICAgICBzZWxlY3RF
bGVtZW50LT5vcHRpb25TZWxlY3RlZEJ5VXNlcihvcHRpb25FbGVtZW50LmluZGV4KCksIHRydWUs
IHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkpOwogICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9
CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0RmlsZXNGb3JJbnB1dEZpbGVV
cGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBWZWN0b3I8U3RyaW5n
PiYmIGZpbGVuYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBsb2FkKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaQogICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2ViQ29yZTo6RmlsZTo6Y3JlYXRl
KCZpbnB1dEVsZW1lbnQuZG9jdW1lbnQoKSwgcGF0aCkpOwogICAgIGlucHV0RWxlbWVudC5zZXRG
aWxlcyhXZWJDb3JlOjpGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVjdHMpKSk7CiAK
LSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90
RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wgY2xpcFRvVmlld3BvcnQpCkBAIC05MDksNyArOTA5LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVjdChmcmFtZS0+Y29yZUZyYW1l
KCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVudFJlY3Qoc25hcHNob3RSZWN0
KSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVj
dChmcmFtZS0+Y29yZUZyYW1lKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVu
dFJlY3Qoc25hcHNob3RSZWN0KSkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUkKICAgICBpZiAoIWRvY3VtZW50LmNvb2tpZVVSTCgpLmlzRW1wdHkoKSkKICAgICAgICAgcGFn
ZS0+Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZ2V0UmF3Q29va2llcyhkb2N1bWVudCwgZG9jdW1l
bnQuY29va2llVVJMKCksIGZvdW5kQ29va2llcyk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpk
ZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHQKICAgICBhdXRv
JiBkb2N1bWVudCA9ICpmcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgcGFnZS0+
Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZGVsZXRlQ29va2llKGRvY3VtZW50LCBkb2N1bWVudC5j
b29raWVVUkwoKSwgY29va2llTmFtZSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAwMzRhZmE0
MGFmZjY5YWM4MzI0Mzg0YTdkNmQzNmIxMDU3M2Y2MWIxLi4xMjNkNTM5YzgyYTQ2NTIzZTZlYTg4
YzA5NGNjZDljMWI3ZmI5Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMTY0
LDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUsIHF1YWxpdHks
IHByZXNlcnZlUmVzb2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
T3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZQor
ICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9u
YWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTk4LDE3ICsxOTgsMTcgQEAgcHJvdGVjdGVkOgog
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
VU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghcGl4ZWxC
dWZmZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcGl4ZWxCdWZmZXIt
PmRhdGEoKS5ieXRlTGVuZ3RoKCk7CiAKICAgICAgICAgSVBDOjpUaW1lb3V0IHRpbWVvdXQgPSA1
X3M7CiAgICAgICAgIFNoYXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5ID0gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPnNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKGRhdGFTaXplLCB0
aW1lb3V0KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBhdXRvJiBtdXRhYmxlVGhpcyA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eSY+
KCp0aGlzKTsKICAgICAgICAgbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29udGV4dC5yZWNvcmRlcigp
LmdldFBpeGVsQnVmZmVyKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3OTRjOGJiZjJiODI1ODRlZjZjOWQ2
ZGNkNWIyM2I4MDljMTFlM2Y4Li43MTk4YWRlMDE2ODZjZTIyYTIyNzZlMjJiZGQyODkzMWQxMjUx
MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC05MCwx
MyArOTAsMTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdwdVByb2Nlc3ND
b25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKIAogICAgIG1faWRlbnRpZmllcnNP
ZlJldXNhYmxlSGFuZGxlcy5jbGVhcigpOwogICAgIG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVz
LmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIg
PSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZp
ZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2VuZGlu
Z1dha2V1cCA9IDA7CiAKICAgICBpZiAobV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1v
cnlUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Rlc3Ryb3lHZXRQaXhlbEJ1ZmZlclNoYXJl
ZE1lbW9yeVRpbWVyLnN0b3AoKTsKLSAgICBtX2dldFBpeGVsQnVmZmVyU2VtYXBob3JlID0gV1RG
OjpudWxsb3B0OworICAgIG1fZ2V0UGl4ZWxCdWZmZXJTZW1hcGhvcmUgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeUxlbmd0aCA9IDA7CiAgICAgbV9nZXRQ
aXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxwdHI7CiB9CkBAIC0yNDksNyArMjQ5LDcgQEAg
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRzKCkKIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBpZiAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID09IG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdl
QnVmZmVySWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXJyZW50RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnCiAKIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVmZXJyZWRXYWtldXBNZXNzYWdl
SWZOZWVkZWQoKQogewotICAgIGF1dG8gYXJndW1lbnRzID0gc3RkOjpleGNoYW5nZShtX2RlZmVy
cmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIGFyZ3Vt
ZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFhcmd1bWVudHMpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MzI2LDExICszMjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZEFw
cGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KICAgICAgICAgaWYgKG1f
ZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzKSB7CiAgICAgICAgICAgICBpZiAoc2hhcmVk
SGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5v
ZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5kZXN0aW5hdGlvbkltYWdl
QnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7CiAgICAgICAgICAgICAgICAgbV9wYXJh
bWV0ZXJzLnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICAgICAg
ICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRp
bmdXYWtldXAgPSAwOwogICAgICAgICAgICAgfSBlbHNlIGlmICghLS1tX3JlbWFpbmluZ0l0ZW1z
VG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwKSB7CiAgICAgICAgICAgICAgICAgbV9kZWZlcnJl
ZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMtPnJlYXNvbiA9IEdQVVByb2Nlc3NXYWtldXBSZWFzb246
Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZDsKLSAgICAgICAgICAgICAgICBzZW5kV2FrZXVw
TWVzc2FnZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywg
V1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoKnN0ZDo6
ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIHN0ZDo6bnVsbG9wdCkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlkZXNGb3JUZXN0
aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3ZlcnJpZGVz
Rm9yVGVzdGluZy5oCmluZGV4IGUzMWY5ZGE3Yzk3Mzk2M2MzNGIyZWEzZTI5ZTFhY2Q2YzZkZmUx
OTAuLjFkYzU5MGE1NTc4ZTQ3Y2JlYjgzMTUzYWJkNzM0Y2RhYWI5ZDcwN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlkZXNGb3JUZXN0
aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJy
aWRlc0ZvclRlc3RpbmcuaApAQCAtNTMsMjIgKzUzLDIyIEBAIHN0cnVjdCBNZWRpYU92ZXJyaWRl
c0ZvclRlc3RpbmcgewogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gc3lzdGVtSGFz
QUM7CiAgICAgICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQUM7CiAgICAgICAgIGlmICghc3lzdGVt
SGFzQUMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gc3lz
dGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0ZW1IYXNCYXR0ZXJ5OwogICAg
ICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxPcHRpb25hbDxib29sPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CiAgICAgICAgIGlmICghdnA5SGFy
ZHdhcmVEZWNvZGVyRGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRp
b25hbDxXZWJDb3JlOjpTY3JlZW5EYXRhT3ZlcnJpZGVzPj4gdnA5U2NyZWVuU2l6ZUFuZFNjYWxl
OwogICAgICAgICBkZWNvZGVyID4+IHZwOVNjcmVlblNpemVBbmRTY2FsZTsKICAgICAgICAgaWYg
KCF2cDlTY3JlZW5TaXplQW5kU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sK
ICAgICAgICAgICAgICpzeXN0ZW1IYXNBQywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApp
bmRleCBiOTVlNTkxYjE4MmRlMzQ2M2VlN2UxOGYwNTVhMTNmYWM5NDBlOWI0Li5hZmNkNGI1YjMx
Y2QwNWY1MDRmNWZiOTY1MDQyOGQ3NTI3MjNjNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogCiAgICAg
T3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsKICAgICBpZiAoIWNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6V291bGRUYWludE9yaWdpbihvcmln
aW4uZGF0YSgpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OldvdWxkVGFpbnRP
cmlnaW46OlJlcGx5KHdvdWxkVGFpbnQpLCBtX2lkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIG1fd291bGRUYWludE9y
aWdpbkNhY2hlLmFkZChvcmlnaW4uZGF0YSgpLCB3b3VsZFRhaW50KTsKIApAQCAtMTA2NCw3ICsx
MDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETShMZWdhY3lDRE0q
IGNkbSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2Fj
eUNETVNlc3Npb24qIHNlc3Npb24pCiB7CiAgICAgaWYgKCFzZXNzaW9uIHx8IHNlc3Npb24tPnR5
cGUoKSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgewotICAgICAgICBjb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVnYWN5Q0RNU2Vzc2lvbihX
VEY6Om51bGxvcHQpLCBtX2lkKTsKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24oc3RkOjpudWxsb3B0
KSwgbV9pZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Db25maWd1cmF0aW9uLmgKaW5kZXggNmZjOGJhOGI2OWQ5MDg5Njc1Y2I1NmU3ZWU0NmEyMDg4
MWVhYjkyYy4uYWI1NmQ2M2FjMzgxZTRiYTlhZGJlZDg1MGMyZDg5NjEzMWQ1OTM4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Np
b25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKQEAgLTYwLDQyICs2MCw0MiBAQCBz
dHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFs
PFN0cmluZz4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gcm91dGluZ0Nv
bnRleHRVSUQ7CiAgICAgICAgIGlmICghcm91dGluZ0NvbnRleHRVSUQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBz
YW1wbGVSYXRlOwogICAgICAgICBpZiAoIXNhbXBsZVJhdGUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IGJ1ZmZlclNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gYnVmZmVy
U2l6ZTsKICAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8c2l6ZV90PiBudW1iZXJPZk91dHB1dENoYW5uZWxzOwogICAgICAgICBkZWNvZGVyID4+
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbWF4aW11bU51bWJl
ck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4gbWF4aW11bU51bWJlck9mT3V0
cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHByZWZlcnJlZEJ1ZmZlclNp
emU7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKICAgICAgICAgaWYg
KCFwcmVmZXJyZWRCdWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gaXNNdXRlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc011dGVkOwogICAgICAgICBpZiAoIWlz
TXV0ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0FjdGl2ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAgaWYgKCFpc0FjdGl2ZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcm91dGluZ0Nv
bnRleHRVSUQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE0uY3BwCmluZGV4IDczNzVmYjQxNmU5NDRmMjNlMTQ4MzdjNmNiNTE3NTZhYTYxNTU0N2Qu
LjQyMjQ0NmI5YTgxMjVjNGFmNmY5ZDMwM2QxNTBiNTJkZjk3MDUxMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGZh
Y3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJgogdm9pZCBSZW1vdGVDRE06OmdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24s
IExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKaW5kZXggZTY0NTA4NGJjZDYw
YzQ1Y2U3NmYzYTAzY2ZkM2Y3ODNmMTY5MzQ5MS4uZGNiNDFiYWExOWJmMTY1ZTFkM2I2NDIwMTZi
OTlhNGEwOTcyNTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTUyLDIyICs1MiwyMiBA
QCBzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFZlY3Rv
cjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKICAgICAgICAgZGVjb2RlciA+
PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAoIXN1cHBvcnRlZEluaXREYXRh
VHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+
IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRSb2J1
c3RuZXNzZXM7CiAgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAgICAgICAgIGlm
ICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxib29sPiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRz
U2Vzc2lvbnM7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9ucykKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVkSW5pdERhdGFU
eXBlcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaAppbmRleCBhODY1ODBi
ZjE4NjMxYmIzYmM4MjZiNTNhZjFmMmQ1NDg2ZTQ2MjU0Li5lODg5NjEyYWVkMDljMTM5ZDJlNjkw
NmI4Y2Q1Mjk2NWEyZmM4ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25maWd1cmF0aW9u
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
biB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOwogICAgICAgICBkZWNvZGVy
ID4+IGtleVN5c3RlbTsKICAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmtleVN5c3RlbSksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggMGE3YzY4YWU1MTBkZTQzZTgyNWM0MjRjN2QyZjQ4
ZTNjOGNjMTNhNi4uOTFhZDRmOTI5Y2E1ZGZmZDljMWIyZTYzNjRlMzg5Yjk3OTRlOTU5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29u
c3QgQXRvbVN0cmluZwogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewog
ICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OmxvYWRTZXNzaW9u
KExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9m
YWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CisgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxl
ZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTEwNSwxMiArMTA1LDEyIEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvCiB2b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFjayh7IH0sIFdU
Rjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxvcHQs
IEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25EYXRhKHNlc3Np
b25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5U3RhdHVzVmVj
dG9yJiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNz
YWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIE9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgT3B0aW9uYWw8
UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAgICAgICByZWFs
TWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpOwogICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFsTWVzc2FnZSks
IHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRl
eCBhYjIyZWFhYjMzZmI1NWZhOTAzOWUyNzYwMzQyNDk2OGFiNmVhN2U0Li5kZTlkYzMzZjA5ZDU2
ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTY1
LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0aXRpb25Db3VudCByZXBldGl0
aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmluYWw7CiAg
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfQogCiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6U3Vic2FtcGxp
bmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5kZXggY2I5MWU1NmUzYTVlMTlmNDAxMjUyZGU4
NTJlOTgyODBkOTRhN2I4NS4uOGExOTdlMWRhNmRiOWNjZTY3Y2M3NWE3ZmUzYmMxNWZjZGJlY2M2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCiAgICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOwogCiAgICAgYm9vbCBz
dXBwb3J0ZWQgPSBmYWxzZTsKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9wdCksIE1lc3NhZ2VzOjpSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7
IH0pOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtl
eVN5c3RlbSwgc3RkOjpudWxsb3B0KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7CiAgICAgbV9z
dXBwb3J0c0tleVN5c3RlbUNhY2hlLnNldChrZXlTeXN0ZW0sIHN1cHBvcnRlZCk7CiAgICAgcmV0
dXJuIHN1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oCmlu
ZGV4IGMwNmY4ODMyNDlkNTE4Yzc5OTEzYzVjMmU3NDg1YTM3YzFhZjg0MTIuLjBkZTk1ZWQ1ZWQy
NmNmOGE2ZDA3MDQ2ZjY2NGNmMTU4ZWQxZDhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24uaApAQCAtNjIsNDIgKzYyLDQyIEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGVuZ2luZURlc2NyaXB0
aW9uOwogICAgICAgICBkZWNvZGVyID4+IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBpZiAo
IWVuZ2luZURlc2NyaXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAgICAgICBkZWNvZGVyID4+IG1h
eGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAgIGlmICghbWF4aW11bUR1cmF0
aW9uVG9DYWNoZU1lZGlhVGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+
IHN1cHBvcnRzU2Nhbm5pbmc7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTY2FubmluZzsK
ICAgICAgICAgaWYgKCFzdXBwb3J0c1NjYW5uaW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNGdWxsc2NyZWVuOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBv
cnRzRnVsbHNjcmVlbjsKICAgICAgICAgaWYgKCFzdXBwb3J0c0Z1bGxzY3JlZW4pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1BpY3R1cmVJblBpY3R1cmU7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOwogICAgICAgICBpZiAo
IXN1cHBvcnRzUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmc7CiAgICAgICAgIGRlY29kZXIgPj4g
c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKICAgICAgICAgaWYgKCFzdXBwb3J0c0FjY2Vs
ZXJhdGVkUmVuZGVyaW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2Fu
UGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsKICAgICAgICAgZGVjb2RlciA+PiBjYW5QbGF5
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OwogICAgICAgICBpZiAoIWNhblBsYXlUb1dpcmVsZXNz
UGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzaG91
bGRJZ25vcmVJbnRyaW5zaWNTaXplOwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZElnbm9yZUlu
dHJpbnNpY1NpemU7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqZW5naW5l
RGVzY3JpcHRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAppbmRleCAxZjc5Y2U1MzgxN2IwNWE3
NjVjMmE3Y2Y5M2NlYjQzNzU3NTIzMDczLi5hNjI3YTczNzBjMmJjMWYyNTM5MWMwYmViMjEwOGVi
ZGVhYjEyOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaApAQCAtMTA3LDE0MyArMTA3LDE0MyBA
QCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7CiAgICAgICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAgICAgICAgIGlm
ICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IG1p
blRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5UaW1lU2Vla2FibGU7CiAgICAg
ICAgIGlmICghbWluVGltZVNlZWthYmxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWF4VGltZVNl
ZWthYmxlOwogICAgICAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnREYXRlOwogICAgICAgICBkZWNvZGVyID4+IHN0
YXJ0RGF0ZTsKICAgICAgICAgaWYgKCFzdGFydERhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRp
bWU7CiAgICAgICAgIGlmICghc3RhcnRUaW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAgICAgIGRlY29kZXIg
Pj4gbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrOwogICAgICAgICBpZiAoIWxhbmd1YWdlT2ZQ
cmltYXJ5QXVkaW9UcmFjaykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gd2lyZWxlc3NQ
bGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGlmICghd2lyZWxlc3NQbGF5YmFja1RhcmdldE5h
bWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzOwogICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlcmVkUmFuZ2Vz
OwogICAgICAgICBpZiAoIWJ1ZmZlcmVkUmFuZ2VzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZTsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShuZXR3b3JrU3RhdGUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlYWR5U3RhdGUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBl
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vdmllTG9hZFR5cGUpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6V2lyZWxlc3NQbGF5YmFja1Rh
cmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGU7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUod2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBuYXR1cmFsU2l6ZTsKICAgICAgICAgZGVj
b2RlciA+PiBuYXR1cmFsU2l6ZTsKICAgICAgICAgaWYgKCFuYXR1cmFsU2l6ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndhcmRSYXRlOwogICAgICAg
ICBkZWNvZGVyID4+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAgICAgaWYgKCFtYXhGYXN0Rm9y
d2FyZFJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxkb3VibGU+IG1pbkZhc3RS
ZXZlcnNlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5GYXN0UmV2ZXJzZVJhdGU7CiAgICAg
ICAgIGlmICghbWluRmFzdFJldmVyc2VSYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lOwogICAgICAgICBk
ZWNvZGVyID4+IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgICAgIGlm
ICghc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPGRvdWJsZT4gbGl2ZVVwZGF0ZUludGVydmFsOwogICAgICAgICBkZWNvZGVy
ID4+IGxpdmVVcGRhdGVJbnRlcnZhbDsKICAgICAgICAgaWYgKCFsaXZlVXBkYXRlSW50ZXJ2YWwp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdG90YWxCeXRlczsKICAg
ICAgICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVzOwogICAgICAgICBpZiAoIXRvdGFsQnl0ZXMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1BsYXli
YWNrUXVhbGl0eU1ldHJpY3M+PiB2aWRlb01ldHJpY3M7CiAgICAgICAgIGRlY29kZXIgPj4gdmlk
ZW9NZXRyaWNzOwogICAgICAgICBpZiAoIXZpZGVvTWV0cmljcykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiB3b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9y
aWdpbjsKICAgICAgICAgZGVjb2RlciA+PiB3b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdp
bjsKICAgICAgICAgaWYgKCF3b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdpbikKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsKICAgICAgICAgZGVjb2RlciA+
PiBwYXVzZWQ7CiAgICAgICAgIGlmICghcGF1c2VkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gY2FuU2F2ZU1lZGlhRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBjYW5TYXZl
TWVkaWFEYXRhOwogICAgICAgICBpZiAoIWNhblNhdmVNZWRpYURhdGEpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBdWRpbzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNB
dWRpbzsKICAgICAgICAgaWYgKCFoYXNBdWRpbykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IGhhc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZpZGVvOwogICAgICAg
ICBpZiAoIWhhc1ZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFz
Q2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQ2xvc2VkQ2FwdGlvbnM7CiAg
ICAgICAgIGlmICghaGFzQ2xvc2VkQ2FwdGlvbnMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxib29sPiBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lOwogICAgICAgICBkZWNvZGVyID4+IGhh
c0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAgICAgICAgIGlmICghaGFzQXZhaWxhYmxlVmlkZW9GcmFt
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkOwogICAgICAgICBkZWNvZGVyID4+IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkOwogICAgICAgICBpZiAoIXdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW47
CiAgICAgICAgIGRlY29kZXIgPj4gaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGlm
ICghaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxib29sPiBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrOwogICAgICAgICBkZWNvZGVyID4+IGRpZFBh
c3NDT1JTQWNjZXNzQ2hlY2s7CiAgICAgICAgIGlmICghZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqZHVy
YXRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCmluZGV4IDEy
MDc4ZTIzOTc3YjY0MTIxZGMzZjM3YmExZjEwMzQ1ZjBlMTgxYTguLjgyMzhlNjQzMGVkN2Y5NDc4
OTIxYzYwYjcxYzNiNWI0ODA4NjJiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8
V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJl
c3VsdEF0UG9pbnQoV2ViS2l0OjpXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbG9jYXRpb24pIGZpbmFsCiAgICAgewogICAgICAgICBpZiAoIW1fY2xpZW50
LmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgV0tC
dW5kbGVSYW5nZUhhbmRsZVJlZiBhcGlSYW5nZSA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8gYWN0
aW9uQ29udGV4dCA9IChEREFjdGlvbkNvbnRleHQgKiltX2NsaWVudC5hY3Rpb25Db250ZXh0Rm9y
UmVzdWx0QXRQb2ludCh0b0FQSSgmcGFnZU92ZXJsYXkpLCBXS1BvaW50TWFrZShsb2NhdGlvbi54
KCksIGxvY2F0aW9uLnkoKSksICZhcGlSYW5nZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgaWYgKCFhY3Rpb25Db250ZXh0IHx8ICFhcGlSYW5nZSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIHJldHVybiB7IHsgYWN0aW9uQ29udGV4dCwgbWFrZVNpbXBsZVJhbmdlKFdlYktpdDo6
dG9JbXBsKGFwaVJhbmdlKS0+Y29yZVJhbmdlKCkpIH0gfTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAppbmRleCBmMzMxYmUwMzIzNDZkOGI0NWFhYjdm
MmJiZGQ3MDE4NmM1ODU1OTMyLi44OWI2M2ZmODYxOTA0YjAzNWFhZWJjNDFlMzMwZjJiNmM5OTdi
YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIE5vdGU6IFRoZXNlIHNob3VsZCBvbmx5IGJlIG9w
ZXJhdGlvbnMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAgICBXZWJDb3Jl
OjpJbnRSZWN0IGVsZW1lbnRCb3VuZHMoKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlbmRlclJl
Y3QoYm9vbCopOwotICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFnZShTbmFwc2hvdE9w
dGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25zdCBPcHRpb25hbDxmbG9hdD4m
IGJpdG1hcFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IHJlbmRl
cmVkSW1hZ2UoU25hcHNob3RPcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdywgY29u
c3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgUmVm
UHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHZpc2libGVSYW5nZSgpOwogICAgIHZvaWQg
c2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCBhNDc0ZmEyOTIyYWE2Yzcy
ZGExMTg0NGU0YWVjYjJkMTViNDc5MzFlLi5hYzk0Y2MwYjgyZTgxMjhmNzc3YTEwOTY2MDI3M2Ni
Mjc4NTI1MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGUKICAgICAgICAg
cmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgpAQCAt
MjE2LDcgKzIxNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpj
cmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFCiB2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0aW9uYWw8VVJM
PiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYgdXNlQ29udGVu
dFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mLCBjb25z
dCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52
YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9w
dCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMzYsMjAgKzIzNiwyMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5z
cGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlz
cGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbiJf
cywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
ICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRHbG9iYWxPYmpl
Y3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYgKCFmcm9udGVuZEdsb2JhbE9iamVj
dCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VFeHRlbnNp
b25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKICAgICAgICAgICAgIGF1dG8g
ZXhjZXB0aW9uRGV0YWlscyA9IHJlc3VsdC52YWx1ZSgpLmVycm9yKCk7CiAgICAgICAgICAgICBM
T0coSW5zcGVjdG9yLCAiSW50ZXJuYWwgZXJyb3IgZW5jb3VudGVyZWQgd2hpbGUgZXZhbHVhdGlu
ZyB1cG9uIHRoZSBmcm9udGVuZDogYXQgJXM6JWQ6JWQ6ICVzIiwgZXhjZXB0aW9uRGV0YWlscy5z
b3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVtYmVyLCBleGNl
cHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5tZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxv
cHQsIHBhcnNlZEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3Rk
OjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgICAgIGF1
dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1bHRBc09iamVj
dChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAgICAgICAgICAgTE9H
KEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5lZCBmcm9tIElu
c3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOwotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJy
b3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChyZXN1
bHQudmFsdWUoKSk7CkBAIC0yNjUsMjIgKzI2NSwyMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVj
dAogICAgICAgICBKU0M6OkpTVmFsdWUgZXJyb3JQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQo
ZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVu
ZEdsb2JhbE9iamVjdC0+dm0oKSwgImVycm9yIl9zKSk7CiAgICAgICAgIGlmICghZXJyb3JQYXls
b2FkLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIGlmICghZXJyb3JQYXlsb2FkLmlzU3Ry
aW5nKCkpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVs
bG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNl
cHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5nKGZyb250ZW5kR2xvYmFsT2Jq
ZWN0KSB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5nKGZyb250ZW5kR2xv
YmFsT2JqZWN0KSB9LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBheWxvYWQgPSBvYmplY3RSZXN1bHQt
PmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGZy
b250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9zKSk7CiAgICAgICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVjdCwgcmVzdWx0UGF5bG9hZCk7
CiAgICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJv
cjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0
ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRh
dGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCkBAIC0zMjIs
NyArMzIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlbG9h
ZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGUKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAppbmRleCA2NTc3NGUxNDU5ZThjNDIwMzQxODAxY2FhNjFmMDYwODZkODJkZTM4Li41
MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZmMDQ0NDQxNGI3NmJhZDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBA
IC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZy
YW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXMKICAgICAgICAgaWYgKGxv
YWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNvdXJjZS5nZXQoKSwg
cmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRl
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoUkVMRUFTRV9MT0df
SVNfQUxMT1dFRCwgTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZTogVW5hYmxlIHRv
IGNyZWF0ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1lLT5wYWdlSUQoKS52YWx1ZU9y
KFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZyYW1lLT5mcmFtZUlEKCkudmFsdWVPcihG
cmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19J
RihSRUxFQVNFX0xPR19JU19BTExPV0VELCBOZXR3b3JrLCAiJXAgLSBbd2ViUGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291
cmNlOiBVbmFibGUgdG8gY3JlYXRlIFN1YnJlc291cmNlTG9hZGVyIiwgdGhpcywgZnJhbWUtPnBh
Z2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZyYW1lLT5mcmFt
ZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGxvYWRlcikpOwogICAgIH0pOwogfQpAQCAtMTgxLDEz
ICsxODEsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIFdlYlJlc291cmNlTG9h
ZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIGlmIChhdXRv
KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWVMb2Fk
ZXJDbGllbnQpKQotICAgICAgICB0cmFja2luZ1BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5SUQoKS52YWx1ZU9yKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEID0gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYlBhZ2VQcm94eUlEKCkudmFsdWVfb3IoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciB7IH0pOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBlbHNlIGlmIChpczxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KGZyYW1lTG9hZGVy
Q2xpZW50KSkKICAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gZG93
bmNhc3Q8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxvYWRlckNsaWVudCku
d2ViUGFnZVByb3h5SUQoKTsKICNlbmRpZgotICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQg
PSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSk7
Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFt
ZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVy
Q2xpZW50LmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIgeyB9KTsKICAgICB0cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAKICNpZiBFTkFCTEUoV0VC
X0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU2NSwxMSArNTY1LDExIEBAIE9wdGlvbmFs
PFdlYkxvYWRlclN0cmF0ZWd5OjpTeW5jTG9hZFJlc3VsdD4gV2ViTG9hZGVyU3RyYXRlZ3k6OnRy
eUxvYWRpbmdTeW5jaHJvCiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVu
dCA/ICZ3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgYXV0
byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAg
aWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVt
ZUhhbmRsZXJGb3JTY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSk7CiAgICAgaWYgKCFoYW5kbGVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHN5
bmMgbG9hZCB0byBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNj
aGVtZSBoYW5kbGVyLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBiMmViNDdlMzkxMWU1NDY2
ZmM2ODM1NWM3YzFkYWVjNmIyMzczNjc1Li4wMDY3ODk5MDkzMmM0MzgyYmI2MWZmMDA0OTg0YzRi
Mzk5MGZiNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCkBAIC0yNDUs
NyArMjQ1LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVmZmVyKGJvb2wgaXNGaWxlLCBj
b25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAgICAgICAgICAgICAgICBTdHJp
bmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb250ZW50TGVuZ3RoLmlzTnVsbCgp
KQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4ocGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRlbnRMZW5ndGgpLnZhbHVlT3IoMCks
IGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4o
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRlbnRMZW5ndGgp
LnZhbHVlX29yKDApLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBoZWFkZXJGaWVsZHMu
cmVtb3ZlKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsKIAogICAgICAgICAgICAgICAg
IHBvc3RCdWZmZXIgKz0gbG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlNDdhNDRjYzQ3ZTk5MWRlZTk4ZjliNGEz
NmM1YTJjZGY2ZjBkMDY3Li5mYWIwMGRhZGM2NjQ2MzUzYzY4MmY5MTliMDVlMWVhYWMyYjMxYmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KQEAgLTIwMTMsMTMgKzIwMTMsMTMgQEAgSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0
RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogSW50UG9p
bnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50
JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMo
cG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJldHVybiBtX3Jv
b3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJuIG1fcm9v
dFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAKIEludFJlY3QgUERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0SW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIG1fcm9v
dFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUmVjdChyZWN0SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJuIG1fcm9vdFZp
ZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3QocmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBJbnRQb2ludCBQREZQbHVn
aW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdApAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2Ny
ZWVuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7CisgICAgRmxvYXRS
ZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7
CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgdm9pZCBQ
REZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIGNv
bnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gcGx1Z2lu
U2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jv
b3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgW21fcGRmTGF5ZXJDb250cm9s
bGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2lu
XTsKQEAgLTI2MDYsNyArMjYwNiw3IEBAIHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uKCkKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3Ry
aW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQogewog
ICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHR5cGVzKTsKLSAg
ICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgIGludDY0X3Qg
bmV3Q2hhbmdlQ291bnQ7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAppbmRleCA0NTk5ZjU3YWJiYzA2MGY2YTg4N2NkMGM2YTFhNWVmZjM0MThiMGI1Li5iNmZk
NDQ0MDdjMjk3NzU0YmIyMWJkNDA2ZWVhMjBkZGU3YzZkMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE1Nyw3ICsxMTU3LDcg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0
KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVx
dWVzdC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIEZpcnN0
LCB0cnkgdG8gZmluZCBhIHRhcmdldCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBm
cmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50YXJnZXQoKSk7
CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRlKE5QT2JqZWN0
KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQogICAgIC8vIHBy
b3RlY3QgdGhlIHBsdWctaW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5QUnVudGltZU9i
amVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1bnRpbWVPYmpl
Y3RNYXApOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihhbGxv
d1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpOwogICAgIHJl
dHVybiBtX25wUnVudGltZU9iamVjdE1hcC5ldmFsdWF0ZShucE9iamVjdCwgc2NyaXB0U3RyaW5n
LCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAxM2YzYjk2NjVlODM1ZTk2
NGViZDBlMjY0YmY0NzAyMTUzYTExY2U4Li5hYjU3MGJmZTI5M2Y2NGFjNzI3MzAzYzlhZWY2ZjA3
ODQ0M2YzNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCiAgICAg
aWYgKCFtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4odG9wT3JpZ2luKSkg
ewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyKCkKIHsKICAgICBhdXRvIHJlZ2lzdHJh
dGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRhc2tzKTsKICAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uVGFza3MudmFsdWVzKCkpCi0gICAg
ICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCk7CiAKICAgICBhdXRvIGdldFJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdH
ZXRSZWdpc3RyYXRpb25zVGFza3MpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRSZWdp
c3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAKaW5kZXggMWNiYzgwNjFmNDQyZTQ4ZjFkNWE0NmM2MjJhNWU4ZDcwNzE3MDM4NS4uODU0
MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0NjJkMGQ1YTcxZWNiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JgogICAgICAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7CiAgICAgICAg
IGF1dG8gbG9hZGVyID0gc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5jcmVhdGVCbG9iTG9hZGVy
KCptX2Jsb2JMb2FkZXIsIGJsb2JVUkwpOwogICAgICAgICBpZiAoIWxvYWRlcikgewotICAgICAg
ICAgICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9ibG9iTG9h
ZGVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZGlkRmFpbChpbnRlcm5hbEVycm9yKGJs
b2JVUkwpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQyLDcgKzE0Miw3
IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxv
YWRpbmcoKQogewogICAgIGRpZEZpbmlzaCgpOwogCi0gICAgc3RkOjpleGNoYW5nZShtX2Jsb2JM
b2FkZXIsIFdURjo6bnVsbG9wdCk7CisgICAgc3RkOjpleGNoYW5nZShtX2Jsb2JMb2FkZXIsIHN0
ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKaW5kZXggMDQyOWRhZDZhZjZhODk5MmI5ZTJlZjk3NzUyYWVmMTllZGQzOTI5
ZC4uZmI2MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0OThlODBkMGVmNTYxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2NyaXB0
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBVc2VyU2NyaXB0JiYgdXNlclNjcmlw
dCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIFdURjo6bnVsbG9wdCwgV1RG
TW92ZSh1c2VyU2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpObyk7CisgICAg
YWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUodXNlclNj
cmlwdCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpAQCAtNDg4LDcgKzQ4OCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldEludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29yCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCwgVXNl
clN0eWxlU2hlZXQmJiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBhZGRVc2VyU3R5bGVTaGVldElu
dGVybmFsKHdvcmxkLCBXVEY6Om51bGxvcHQsIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKKyAg
ICBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKHdvcmxkLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUo
dXNlclN0eWxlU2hlZXQpKTsKICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJ
bkFsbEZyYW1lc0luQWxsUGFnZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwCmluZGV4IGQ1ZTIwZjQxMTdhYTUxZWM2YmI3MTNmMTYwNzdhY2YxZGJlMmFiYzIuLjgz
M2M4MmM1NGQzN2FlMDE1YTE4MWE3YjkzMjRmNzA1MzA3YzY4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lv
blN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgUmVmPEZvcm1E
YXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0gICAg
ICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1l
bnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0YUl0ZW06OnRv
RW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKKyAgICAg
ICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVu
dC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRv
RW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJs
b2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgKaW5kZXggODBiZGU1YzMwMTNi
MGZiOGMzODVkMzc1ZTViOTIxN2ZmYzY2MGQ2NS4uYWYzZDllOGFkNGI2ZTZkNDE0ZDQyMzU0OGEz
Mjk0NzIyZjE3MTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuaApAQCAt
MzgsNiArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsK
IAogZW51bSBjbGFzcyBBbGxvd0FuaW1hdGVkSW1hZ2VzIDogYm9vbCB7IE5vLCBZZXMgfTsKLVJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChXZWJDb3JlOjpSZW5k
ZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxz
ID0gV1RGOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzID0gQWxsb3dBbmltYXRlZEltYWdl
czo6WWVzKTsKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChX
ZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVu
U2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzID0gQWxsb3dB
bmltYXRlZEltYWdlczo6WWVzKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNGU3
Yjk4MWUxMjExYmZmMjllN2Q3MzAyYTIwZDUzY2I3YmZkNzNhNS4uMzI1M2FhMGFiODM4OWYyOTVm
MmVhZTY5N2EwMDJhNDg0MWMxMTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTI1Niw3
ICsyNTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFt
ZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6
ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IG1ha2VPcHRpb25hbCh3ZWJGcmFt
ZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IHN0
ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdCksIG1f
cGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdp
bmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IGEwMGRkYzhhNjY5NDg3OTczMTA0OTIxYTk3OWNkMmU4OTcy
MDUwMDguLjNlYTFjYTA2NzBiY2MwNDQ0ZDEwNDEyMTc0ZTY4ZWYwOThjOWUyYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIE9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQYWdlUHJveHlJ
RCgpIGNvbnN0CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJh
bWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CkBAIC0xMzQsNyAr
MTM0LDcgQEAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpw
YWdlSUQoKSBjb25zdAogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBt
X2ZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CkBAIC0yMDUsNyArMjA1LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCiAgICAg
aWYgKG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyKSB7CiAgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKAogICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKLSAgICAgICAgbV9mcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogICAgIH0KICNlbmRp
ZgogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb24KICAgICBpZiAo
bV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgJiYgIVdlYkNvcmU6OmFyZVJl
Z2lzdHJhYmxlRG9tYWluc0VxdWFsKGN1cnJlbnRVcmwsIG5ld1VybCkpIHsKICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCiAgICAgICAgICAgICBtX2ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwotICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9y
YWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mcmFtZVNwZWNp
ZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlm
CiB9CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVy
LCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsK
ICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50
aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwg
ZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
KSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBpZ25vcmluZyBiZWNhdXNlIFdlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgZmFpbGVkIik7Ci0gICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlk
ZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9
IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CiB9CiAKQEAgLTEwMTUsNyArMTAxNSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAKICAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIG1fZnJh
bWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9u
SUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3Jp
Z2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJl
Y3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeURl
Y2lzaW9uKSkpIHsKICAgICAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9H
X0VSUk9SKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
IGlnbm9yaW5nIGJlY2F1c2Ugb2YgZmFpbGluZyB0byBzZW5kIHN5bmMgSVBDIik7Ci0gICAgICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5
RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRp
Zmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAyNyw3ICsxMDI3LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09
IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCByZXF1ZXN0SWRlbnRp
ZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlv
bkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVO
VF9SRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOiBpZ25vcmluZyBiZWNhdXNlIG9mIGZhaWxpbmcgdG8gc2VuZCBhc3luYyBJ
UEMiKTsKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0
SWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7
IH0gfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCA2
YjE4OGJiOTc1NWIzOTdjNWJiOWE2NzQ3MzAzNzZkNDhjZDRjZDY0Li41YzhjMDlkN2ZlNjMxZDFk
NDBmNTM4OWNlYTA3ZjYxMDE2MjE3M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6c2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkKIAogT3B0aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlv
bkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0OTU0MDQzYmMwODEx
N2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3Li5hNjlkZDY1MjNiMWNmNmRjOWY1YWQ1OGM2OWQ5
ZDNjYzViMTVjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtMTEz
LDcgKzExMyw3IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVC
bG9iUmVnaXN0cnkoKQogc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRlbnRp
Zmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBpZiAoIWlzPFBh
Z2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZG93bmNhc3Q8
UGFnZVBhc3RlYm9hcmRDb250ZXh0PigqY29udGV4dCkucGFnZUlEKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDAyNTM4Y2QzYjA2ODdlNWViZjhjN2ZmNjQxMDcy
OGVkYzBiYmJlMWIuLmY0NzVjYjMzZWE4OTc0MmNhNGUzMzdlY2Q1NjBjOGZjOTAzOTQ2MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC01NiwyNyArNTYsMjcgQEAgT3B0
aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTdHJpbmc+IHZvaWNlVVJJOwogICAg
IGRlY29kZXIgPj4gdm9pY2VVUkk7CiAgICAgaWYgKCF2b2ljZVVSSSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5nOwogICAgIGRlY29kZXIgPj4gbGFuZzsKICAg
ICBpZiAoIWxhbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBsb2NhbFNlcnZpY2U7CiAgICAg
ZGVjb2RlciA+PiBsb2NhbFNlcnZpY2U7CiAgICAgaWYgKCFsb2NhbFNlcnZpY2UpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBkZWZhdWx0TGFuZzsKICAgICBkZWNvZGVyID4+IGRlZmF1bHRMYW5n
OwogICAgIGlmICghZGVmYXVsdExhbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdm9p
Y2VVUkkpLCBXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqbGFuZyksIFdURk1vdmUoKmxvY2FsU2Vy
dmljZSksIFdURk1vdmUoKmRlZmF1bHRMYW5nKSB9fTt9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRp
dG9yQ2xpZW50R0xpYi5jcHAKaW5kZXggNDg1ZjFmZDA5OTY5MDExMTM0ZTU3NzY5NWRjMmIwNGQz
YjFmZDEzZS4uMGE1MTNiZjJlZWRjOTY5MGUyZjlmYzMxNWUyZjMxYjVkNDAxNmRhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRp
dG9yQ2xpZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKQEAgLTQ2LDggKzQ2LDggQEAgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBpZiAoY29uc3QgYXV0byYg
dW5kZXJsaW5lcyA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRVbmRlcmxpbmVzKCkpIHsKLSAgICAg
ICAgYXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdl
U3RhcnQoKS52YWx1ZU9yKDApOwotICAgICAgICBhdXRvIHJhbmdlTGVuZ3RoID0gcGxhdGZvcm1F
dmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkudmFsdWVPcigwKTsKKyAgICAgICAg
YXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdlU3Rh
cnQoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byByYW5nZUxlbmd0aCA9IHBsYXRmb3JtRXZl
bnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZUxlbmd0aCgpLnZhbHVlX29yKDApOwogICAgICAgICBm
cmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+dGV4dCgpLCB1bmRl
cmxpbmVzLnZhbHVlKCksIHsgfSwgcmFuZ2VTdGFydCwgcmFuZ2VTdGFydCArIHJhbmdlTGVuZ3Ro
KTsKICAgICB9IGVsc2UKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1Db21wb3NpdGlv
bihwbGF0Zm9ybUV2ZW50LT50ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5Lm1tCmluZGV4IDc4ZjFkZDEwOTU3MTA1ZTIxNTY2YTgyM2YyYTI1MGM1ODk2MTNiMDQu
LjRlZDNlZjk1MDVmNTFmMzI4NTU0MzAxNDkyYWM1YTRlNjkyNGRjYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xs
ZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTc4LDE3ICs3OCwxNyBAQCBPcHRpb25h
bDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveAogCiAgICAgYXV0byByb290ID0gZnJhbWVTZWxlY3Rpb24ucm9vdEVk
aXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFyb290KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBzZWxlY3Rpb25MaXZlUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2Uo
KTsKICAgICBpZiAoIXNlbGVjdGlvbkxpdmVSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHNlbGVjdGlvblJh
bmdlID0gU2ltcGxlUmFuZ2UgeyAqc2VsZWN0aW9uTGl2ZVJhbmdlIH07CiAKICAgICBhdXRvIHNj
b3BlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KTsKICAgICBpbnQ2NF90
IGFkanVzdGVkU3RhcnRMb2NhdGlvbiA9IGNoYXJhY3RlckNvdW50KHsgc2NvcGUuc3RhcnQsIHNl
bGVjdGlvblJhbmdlLnN0YXJ0IH0pICsgb2Zmc2V0OwogICAgIGlmIChhZGp1c3RlZFN0YXJ0TG9j
YXRpb24gPCAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGF1dG8gYWRqdXN0ZWRTZWxlY3Rpb25DaGFyYWN0ZXJSYW5nZSA9
IENoYXJhY3RlclJhbmdlIHsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFkanVzdGVkU3RhcnRMb2Nh
dGlvbiksIGxlbmd0aCB9OwogCiAgICAgcmV0dXJuIHsgeyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2Uo
c2NvcGUsIGFkanVzdGVkU2VsZWN0aW9uQ2hhcmFjdGVyUmFuZ2UpLCBhZGp1c3RlZFNlbGVjdGlv
bkNoYXJhY3RlclJhbmdlLmxvY2F0aW9uIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBl
OTk0NTdjNzQyMzIxYjUzZTFmNmVhNWRjOTBkZGVhODY1MjNlYjg0Li5iYzZkOTM3YmQ2MmMxYzlh
ODAxMDgwZjI0MmI0MGRhNmQ0YzgwYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC01OTIs
NyArNTkyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICBhdXRvIGNoYW5nZVdpbmRv
d1NjcmVlbiA9IFsmXSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHdlIGdl
dCBhIHVuaXF1ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgcGVyLURyYXdpbmdBcmVhIChuZWNlc3Nh
cnkgYmVjYXVzZSBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcgogICAgICAgICAvLyBpcyBk
cml2ZW4gYnkgdGhlIFRocmVhZGVkQ29tcG9zaXRvciBvZiB0aGUgZHJhd2luZyBhcmVhKSwgZ2l2
ZSBlYWNoIHBhZ2UgYSB1bmlxdWUgRGlzcGxheUlEIGRlcml2ZWQgZnJvbSBXZWJQYWdlJ3MgdW5p
cXVlIElELgotICAgICAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKG1fbGF5ZXJU
cmVlSG9zdC0+ZGlzcGxheUlEKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1fd2ViUGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2UobV9sYXllclRyZWVIb3N0LT5kaXNwbGF5SUQoKSwgc3RkOjpu
dWxsb3B0KTsKICAgICB9OwogCiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3QpOwpAQCAtNjQ4
LDcgKzY0OCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjpleGl0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogICAgIG1fZGlzY2FyZFByZXZpb3VzTGF5ZXJUcmVl
SG9zdFRpbWVyLnN0YXJ0T25lU2hvdCg1X3MpOwogCiAgICAgLy8gQWx3YXlzIHVzZSB0aGUgcHJp
bWFyeSBkaXNwbGF5IElEICgwKSB3aGVuIG5vdCBpbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBt
b2RlLgotICAgIG1fd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoMCwgV1RGOjpudWxsb3B0
KTsKKyAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKDAsIHN0ZDo6bnVsbG9wdCk7
CiAKICAgICBtX2RpcnR5UmVnaW9uID0gbV93ZWJQYWdlLmJvdW5kcygpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCmluZGV4IGRl
NjcyM2I3OTRlOTIwODM0ZTU0ODgwNTk0ZmNhMmIzMDk0NGE3ODYuLmI2Mjk4ZDVkZDdmNDZhN2Y4
YTVmNDIxMzcwMjA3YWE1N2MzZGM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBzdGF0
aWMgT3B0aW9uYWw8dWludDY0X3Q+IGNvbnZlcnRUb1VpbnQ2NChKU0M6OkpTVmFsdWUganNWYWx1
ZSkKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9
IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB0cnVuYyh2YWx1
ZSkgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KICAg
ICBpZiAoanNWYWx1ZS5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNDOjpKU0JpZ0ludDo6
dG9CaWdVSW50NjQoanNWYWx1ZSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBKU09iamVjdFJlZiBKU0lQQ1NlbWFwaG9yZTo6Y3JlYXRl
SlNXcmFwcGVyKEpTQ29udGV4dFJlZiBjb250ZXh0KQpAQCAtNzQ4LDEwICs3NDgsMTAgQEAgT3B0
aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4+IGdldE9iamVjdElk
ZW50aWZpZXJGcm9tUHJvcGVydHkKIHsKICAgICBhdXRvIGpzUHJvcGVydHlWYWx1ZSA9IGpzT2Jq
ZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFs
T2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0VG9VaW50NjQoanNQcm9wZXJ0eVZhbHVlKTsK
ICAgICBpZiAoIW51bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8T2Jq
ZWN0SWRlbnRpZmllclR5cGU+KCpudW1iZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDFmNDRkMjg1NDY4MjJkMDQ1
NWE1MjZkMjI2ZjVjNmQ3ZmQyZDU3MTEuLmUyNTUxMDEwNmU5MTA4YTc4MWM2NDgzMmZlZGY4MjFh
MmNiNTc2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tCkBAIC0xMjMsMzIgKzEyMywzMiBAQCBzdGF0aWMgT3B0aW9uYWw8UmVmUHRy
PFRpbWluZ0Z1bmN0aW9uPj4gZGVjb2RlVGltaW5nRnVuY3Rpb24oSVBDOjpEZWNvZGVyJiBkZWNv
ZAogewogICAgIFRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvblR5cGUgdHlwZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9u
PiB0aW1pbmdGdW5jdGlvbjsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRpbWluZ0Z1
bmN0aW9uOjpMaW5lYXJGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBMaW5lYXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0
YXRpY19jYXN0PExpbmVhclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24uZ2V0KCkpKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1
YmljQmV6aWVyRnVuY3Rpb246CiAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0
YXRpY19jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbi5nZXQo
KSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUaW1pbmdGdW5jdGlv
bjo6U3RlcHNGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBTdGVwc1RpbWluZ0Z1
bmN0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqc3RhdGljX2Nh
c3Q8U3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uLmdldCgpKSkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTcHJpbmdGdW5j
dGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBTcHJpbmdUaW1pbmdGdW5jdGlvbjo6Y3Jl
YXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0YXRpY19jYXN0PFNwcmluZ1Rp
bWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24uZ2V0KCkpKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTE5NCw2NyArMTk0LDY3IEBAIE9wdGlvbmFsPFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OlByb3BlCiB7CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVydGllcyBwcm9w
ZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5rZXlQYXRoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5hbmltYXRpb25UeXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5iZWdpblRpbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmR1cmF0aW9uKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy50aW1lT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5yZXBlYXRDb3VudCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHByb3BlcnRpZXMuc3BlZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwcm9wZXJ0aWVzLmZpbGxNb2RlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cHJvcGVydGllcy52YWx1ZUZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzVGltaW5nRnVuY3Rp
b247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUaW1pbmdGdW5jdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGFzVGltaW5nRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKGF1dG8gdGltaW5nRnVuY3Rp
b24gPSBkZWNvZGVUaW1pbmdGdW5jdGlvbihkZWNvZGVyKSkKICAgICAgICAgICAgIHByb3BlcnRp
ZXMudGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKCp0aW1pbmdGdW5jdGlvbik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGll
cy5hdXRvUmV2ZXJzZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVz
LnJlbW92ZWRPbkNvbXBsZXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9w
ZXJ0aWVzLmFkZGl0aXZlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGll
cy5yZXZlcnNlVGltaW5nRnVuY3Rpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cHJvcGVydGllcy5oYXNFeHBsaWNpdEJlZ2luVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHByb3BlcnRpZXMua2V5VmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocHJvcGVydGllcy5rZXlUaW1lcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCBudW1UaW1pbmdGdW5j
dGlvbnM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1UaW1pbmdGdW5jdGlvbnMpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIGlmIChudW1UaW1pbmdGdW5jdGlvbnMpIHsKICAgICAgICAgcHJvcGVydGllcy50
aW1pbmdGdW5jdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1UaW1pbmdGdW5jdGlvbnMp
OwpAQCAtMjYzLDEyICsyNjMsMTIgQEAgT3B0aW9uYWw8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6UHJvcGVydGllcz4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGUKICAgICAgICAg
ICAgIGlmIChhdXRvIHRpbWluZ0Z1bmN0aW9uID0gZGVjb2RlVGltaW5nRnVuY3Rpb24oZGVjb2Rl
cikpCiAgICAgICAgICAgICAgICAgcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnMudW5jaGVja2Vk
QXBwZW5kKFdURk1vdmUoKnRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwcm9wZXJ0aWVzLmFuaW1hdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdURk1vdmUocHJvcGVy
dGllcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IubW0KaW5kZXggZWNkYTYzYjBjMjJkZWZhOGU3ZWJhMTgxODgwOTZmMTQ1ODkzMDMx
Yy4uMmQ4ZWQ1N2ZlYjA5YzY4NjdmNTgyZTI4MjUxOWE3MTQ0YTNlYWEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpAQCAtMTA3
LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmJ1aWxkVHJhbnNh
Y3Rpb24oUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuCiAvLyBOb3RpZmljYXRpb24gZnJv
bSB0aGUgVUkgcHJvY2VzcyB0aGF0IHdlIHNjcm9sbGVkLgogdm9pZCBSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQg
bm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBzeW5jTGF5ZXJQ
b3NpdGlvbikKIHsKLSAgICBhcHBseVNjcm9sbFVwZGF0ZShub2RlSUQsIHNjcm9sbFBvc2l0aW9u
LCBXVEY6Om51bGxvcHQsIFNjcm9sbFR5cGU6OlVzZXIsIHN5bmNMYXllclBvc2l0aW9uID8gU2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb246OlNldCk7CisgICAgYXBwbHlTY3JvbGxVcGRhdGUobm9kZUlELCBzY3JvbGxQb3NpdGlv
biwgc3RkOjpudWxsb3B0LCBTY3JvbGxUeXBlOjpVc2VyLCBzeW5jTGF5ZXJQb3NpdGlvbiA/IFNj
cm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBvc2l0aW9u
QWN0aW9uOjpTZXQpOwogfQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjdXJy
ZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCBub2RlSUQs
IHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcAppbmRleCBlMTYwY2VhNjAxMTMwMzAxODQzZmJkMDJlMWUzYmM5MTJj
OWE2ZmIxLi5kNmEwMDdmZWYwZmNmN2VhY2ViMmExYWVjYjhkY2IzMzNmNjg2MmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIE9wdGlvbmFs
PHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
OmNvbXB1dGVUZXh0TGVnCiAKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihtX3dlYlBh
Z2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5NzdkNjk5YzFkMWQ5Y2NmOTIwNjM0N2M4MDY2MmMx
NzRmNTI4Zjc5Li5lYTM1ZTQ5ZWZiNTI0MmViNzcxMDQxMzZhMjZhZjM2MTNkYzFkYjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgY29uc3QgV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzJiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2FjaGVMaXN0Q291bnRz
SWZOZWNlc3MKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xlYXJDYWNoZWRMaXN0
Q291bnRzKCkKIHsKLSAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9IHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggMjVkOWVm
YzUzOWM4YjdiMjFhNzA0MWJjZjE4MjMwODY4ZjhjYzc3Ni4uNGU1NDU5NTFmODJmMjQ5YzFjZTcx
NjhiZTdlZjc4MGRlNDFkZGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMzgsOCArMjM4LDggQEAgYm9vbCBXZWJDb29r
aWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBVUkwmIHUKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCi0gICAgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJh
bWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtlT3B0aW9uYWwo
d2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHN0ZDo6bWFrZV9vcHRp
b25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IHN0
ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogc3RkOjpu
dWxsb3B0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxMzQyMjkzMzM1MjY2ZGMyOTkwOWUwNjFhOTYx
ODcwNjFmMjNjZmRlLi5iNzJmZDkyMDY2NTdjZTdiZjI0NzgyNGI3NGMxN2IyNjBkOTYwMjJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0x
OTQsNyArMTk0LDcgQEAgRnJhbWVJbmZvRGF0YSBXZWJGcmFtZTo6aW5mbygpIGNvbnN0CiAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCh1cmwoKSksCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbUZyYW1lKG1fY29yZUZyYW1lLmdldCgpKSwKICAgICAgICAgbV9mcmFtZUlELAotICAgICAg
ICBwYXJlbnQgPyBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHsgcGFyZW50LT5m
cmFtZUlEKCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgcGFyZW50ID8gT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiB7IHBhcmVudC0+ZnJhbWVJRCgpIH0gOiBzdGQ6Om51bGxv
cHQsCiAgICAgfTsKIAogICAgIHJldHVybiBpbmZvOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQg
V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpCiAgICAgbV9wb2xpY3lEb3dubG9h
ZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgYXV0byBpZGVudGlm
aWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOwotICAgIG1fcG9saWN5SWRlbnRpZmllciA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIp
KQogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgKmlkZW50aWZpZXIpOwog
ICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gRm9yTmF2aWdhdGlvbkFj
dGlvbjo6Tm87CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgcG8KICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIgPT0g
bV9wb2xpY3lJZGVudGlmaWVyKTsKLSAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wb2xpY3lJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogCiAgICAgRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAgICAg
Ym9vbCBmb3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25B
Y3Rpb24gPT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwpAQCAtMjkzLDcgKzI5Myw3IEBAIHZv
aWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93bmxvYWRJRCA9ICpzdGQ6OmV4
Y2hhbmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIHBvbGlj
eURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25sb2FkSUQsIHN0ZDo6bnVs
bG9wdCk7CiAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBC
b3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICBpc0FwcEJvdW5kID0g
bV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQg
V2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIsCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93bmxvYWRJRCA9ICpzdGQ6OmV4Y2hh
bmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIHBvbGljeURv
d25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25sb2FkSUQsIHN0ZDo6bnVsbG9w
dCk7CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyID0gZG9jdW1l
bnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhYTM1M2Y1MGVkODRkNGMxMDBkOGMwMGQ0
YWU2N2EyYTFlMjI4YTkuLjBkMmZkODIxZDRkZDJhMzA5ZWY0ODY1ZjQyNTU2YjUzY2I1YzRlNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0x
MDM1LDcgKzEwMzUsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQogICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChj
b21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVs
bG9wdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAg
IH0KICNlbmRpZgogfQpAQCAtMzcxNyw3ICszNzE3LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXIKIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlm
aWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IGZyYW1lSUQ9JSIg
UFJJdTY0LCBmcmFtZUlELnZhbHVlT3IoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsgfSkudG9V
SW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicnVuSmF2YVNj
cmlwdEluRnJhbWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC52YWx1
ZV9vcihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKICAgICBhdXRv
IHdlYkZyYW1lID0gbWFrZVJlZlB0cihmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoKmZyYW1lSUQpIDogJm1haW5XZWJGcmFtZSgpKTsKIAogICAgIGlmIChhdXRvKiBu
ZXdXb3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50V29ybGQod29ybGRE
YXRhKSkgewpAQCAtNDA4Nyw3ICs0MDg3LDcgQEAgdm9pZCBXZWJQYWdlOjp3aWxsQ29tbWl0TGF5
ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyYW5zYWN0aW9uKQogICAg
IGxheWVyVHJhbnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxpbmcoYWxsb3dzVXNlclNjYWxpbmco
KSk7CiAgICAgaWYgKG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCkgewogICAg
ICAgICBsYXllclRyYW5zYWN0aW9uLnNldER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJRCgqbV9w
ZW5kaW5nRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKTsKLSAgICAgICAgbV9wZW5kaW5nRHlu
YW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3BlbmRp
bmdEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAg
IGlmIChtX2xhc3RUcmFuc2FjdGlvblBhZ2VTY2FsZUZhY3RvciAhPSBsYXllclRyYW5zYWN0aW9u
LnBhZ2VTY2FsZUZhY3RvcigpKSB7CiAgICAgICAgIG1fbGFzdFRyYW5zYWN0aW9uUGFnZVNjYWxl
RmFjdG9yID0gbGF5ZXJUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3IoKTsKQEAgLTQyNzMsNyAr
NDI3Myw3IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6
bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxl
Y3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdz
PiBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQs
IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKHN0ZDo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDMwNCw3ICs0MzA0LDcgQEAg
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJh
Z0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNp
b25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpu
dWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2Us
IDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzMjEsNyArNDMy
MSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250
cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRy
b2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRy
YWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGlu
Z01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHN0ZDo6bnVs
bG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpQ
ZXJmb3JtRHJhZ09wZXJhdGlvbjogewpAQCAtNTUxOCwxOCArNTUxOCwxOCBAQCB2b2lkIFdlYlBh
Z2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQog
dm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlRG93bihpbnQgYnV0dG9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBwb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
LCBXYWxsVGltZSB0aW1lKQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLRXZlbnRNb2Rp
ZmllcnMpID49IHNpemVvZihXZWJFdmVudDo6TW9kaWZpZXIpLCAiV0tFdmVudE1vZGlmaWVycyBt
dXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2l6ZSBvZiBXZWJFdmVudDo6TW9k
aWZpZXIiKTsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91
c2VEb3duLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+KGJ1dHRvbiksIDAsIHBv
c2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgT3B0aW9uU2V0PFdlYkV2ZW50
OjpNb2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwgV2ViQ29yZTo6Rm9yY2VBdENs
aWNrLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIFdURjo6bnVsbG9wdCk7CisgICAgbW91c2VFdmVu
dChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93biwgc3RhdGljX2Nhc3Q8V2Vi
TW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAsIDAs
IDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9tUmF3KG1v
ZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVudDo6Tm9U
YXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlTW91c2VVcChp
bnQgYnV0dG9uLCBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIFdL
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lKQogewogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFdLRXZlbnRNb2RpZmllcnMpID49IHNpemVvZihXZWJFdmVudDo6TW9kaWZp
ZXIpLCAiV0tFdmVudE1vZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0
aGUgc2l6ZSBvZiBXZWJFdmVudDo6TW9kaWZpZXIiKTsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNl
RXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VVcCwgc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6
QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAsIDAsIDAsIGNsaWNrQ291
bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9tUmF3KG1vZGlmaWVycyksIHRp
bWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVudDo6Tm9UYXApLCBXVEY6Om51
bGxvcHQpOworICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChXZWJNb3VzZUV2ZW50OjpNb3Vz
ZVVwLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+KGJ1dHRvbiksIDAsIHBvc2l0
aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpN
b2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNr
LCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgV2FsbFRp
bWUgdGltZSkKIHsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6
TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9u
LCAwLCAwLCAwLCAwLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHRpbWUsIDAs
IFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgV1RGOjpudWxsb3B0KTsKKyAgICBtb3VzZUV2ZW50KFdl
Yk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1
dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCAwLCBPcHRpb25TZXQ8V2ViRXZl
bnQ6Ok1vZGlmaWVyPiB7IH0sIHRpbWUsIDAsIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgc3RkOjpu
dWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkZvclRlc3RpbmcoY29u
c3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3QgZnJvbSwgdWludDY0X3QgbGVu
Z3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25IaWdo
bGlnaHQ+JiBoaWdobGlnaHRzKQpAQCAtNjMwMCw3ICs2MzAwLDcgQEAgdm9pZCBXZWJQYWdlOjpk
aWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX3VzZXJIYXNDaGFuZ2VkUGFnZVNj
YWxlRmFjdG9yID0gZmFsc2U7CiAgICAgbV9lc3RpbWF0ZWRMYXRlbmN5ID0gU2Vjb25kcygxLjAg
LyA2MCk7CiAgICAgbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24g
PSB0cnVlOwotICAgIG1fbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBbmRQYWdlU2NhbGVCZWZv
cmVTY2FsaW5nUGFnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xhc3RMYXllclRyZWVUcmFuc2Fj
dGlvbklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBFdmVudERpc3BhdGNoZXI6OlRvdWNoRXZl
bnRRdWV1ZSBxdWV1ZWRFdmVudHM7CkBAIC02NDE0LDcgKzY0MTQsNyBAQCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gV2ViUGFnZTo6Y3VycmVudFNlbGVjdGlvbkFzUmFuZ2UoKQogewogICAgIGF1dG8q
IGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fcGFnZS5nZXQoKSk7CiAgICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3Jt
YWxpemVkUmFuZ2UoKTsKIH0KQEAgLTY1OTUsNyArNjU5NSw3IEBAIFJlZjxEb2N1bWVudExvYWRl
cj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNv
dXJjZVJlCiAgICAgICAgIGlmIChtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMpIHsKICAgICAgICAg
ICAgIG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24gPSBt
X3BlbmRpbmdXZWJzaXRlUG9saWNpZXMtPmFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OwogICAgICAg
ICAgICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdURk1vdmUo
Km1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyksIGRvY3VtZW50TG9hZGVyKTsKLSAgICAgICAgICAg
IG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1f
cGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNjcxMiw3ICs2NzEyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZW1vdmVBbGxVc2VyQ29udGVu
dCgpCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSW50cmluc2ljQ29udGVudFNpemVJZk5lZWRlZChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewotICAgIG1fcGVuZGluZ0ludHJpbnNpY0Nv
bnRlbnRTaXplID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ0ludHJpbnNpY0NvbnRlbnRT
aXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbWluaW11bVNpemVGb3JBdXRvTGF5b3V0KCku
d2lkdGgoKSAmJiAhc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUoKS53aWR0aCgpICYm
ICFzaXplVG9Db250ZW50QXV0b1NpemVNYXhpbXVtU2l6ZSgpLmhlaWdodCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgQVNTRVJUKG1haW5GcmFtZVZpZXcoKSk7CkBAIC02NzI2LDcgKzY3MjYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplSWZOZWVkZWQoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBXZWJQYWdlOjpmbHVzaFBlbmRpbmdJbnRy
aW5zaWNDb250ZW50U2l6ZVVwZGF0ZSgpCiB7Ci0gICAgaWYgKGF1dG8gcGVuZGluZ1NpemUgPSBz
dGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ0ludHJpbnNpY0NvbnRlbnRTaXplLCBXVEY6Om51bGxvcHQp
KQorICAgIGlmIChhdXRvIHBlbmRpbmdTaXplID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdJbnRy
aW5zaWNDb250ZW50U2l6ZSwgc3RkOjpudWxsb3B0KSkKICAgICAgICAgdXBkYXRlSW50cmluc2lj
Q29udGVudFNpemVJZk5lZWRlZCgqcGVuZGluZ1NpemUpOwogfQogCkBAIC03MTMxLDExICs3MTMx
LDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvCiAgICAgRG9jdW1lbnQqIG1haW5GcmFtZURv
Y3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1bWVudCA/IG1haW5GcmFtZURvY3VtZW50
LT5sb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAogICAgIGF1dG8gY29yZUNhbGxiYWNrSUQgPSBsb2Fk
ZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CiAgICAgaWYgKCFjb3JlQ2FsbGJhY2tJRCkK
LSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogCiAgICAgbV9hcHBsaWNh
dGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC5hZGQoY29yZUNhbGxiYWNrSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTcxOTEsMTEgKzcxOTEsMTEgQEAgT3B0aW9uYWw8
V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRGb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQmIGUKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQuZG9jdW1lbnQo
KTsKICAgICBpZiAoIW1fcGFnZSB8fCBkb2N1bWVudC5wYWdlKCkgIT0gbV9wYWdlLmdldCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCB7IGVsZW1lbnQuY2xpZW50
UmVjdCgpLCBtX2lkZW50aWZpZXIsIGRvY3VtZW50LmlkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRl
bnRpZmllckZvckVsZW1lbnQoZWxlbWVudCkgfTsKIH0KQEAgLTczODksNyArNzM4OSw3IEBAIHZv
aWQgV2ViUGFnZTo6cmVxdWVzdEltYWdlRXh0cmFjdGlvbihXZWJDb3JlOjpFbGVtZW50JiBlbGVt
ZW50LCBDb21wbGV0aW9uSGFuZGxlCiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBk
b3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKLSAgICBhdXRvIGJpdG1hcCA9IGNyZWF0
ZVNoYXJlYWJsZUJpdG1hcChyZW5kZXJJbWFnZSwgV1RGOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVk
SW1hZ2VzOjpObyk7CisgICAgYXV0byBiaXRtYXAgPSBjcmVhdGVTaGFyZWFibGVCaXRtYXAocmVu
ZGVySW1hZ2UsIHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlczo6Tm8pOwogICAgIGlm
ICghYml0bWFwKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQogICAgICAgICAgICAgY29tcGxl
dGlvbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VPdmVybGF5LmgKaW5kZXggYTNlNjg2MjZiYjliNzY5Zjg2MDk2OTViMDk3YmUwNzU3YzJhM2Ix
OC4uZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVkZTcyYWZlNGEzNzNlNzQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbEZyYW1lKFdl
YlBhZ2VPdmVybGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAg
ICAgdmlydHVhbCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVzdWx0
QXRQb2ludChXZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgfQorICAgICAgICB2aXJ0dWFsIE9wdGlvbmFsPEFjdGlvbkNvbnRleHQ+IGFj
dGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KFdlYlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6Rmxv
YXRQb2ludCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
YXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYlBhZ2VPdmVybGF5JikgeyB9CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUkoV2ViUGFnZU92ZXJsYXkmKSB7IH0K
ICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRIaWRlVUkoV2ViUGFnZU92ZXJs
YXkmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2ds
aWIvV2ViUGFnZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xp
Yi9XZWJQYWdlR0xpYi5jcHAKaW5kZXggMzczOTNlMTdhNDE3YThmYTdlNTljZmQ1NTE4YTRhYWQ2
ZjRjZTIxMC4uMzc4M2I0N2EwMzQ0MDc0YWI3Zjc5NzgwMTkwODcxZDMwODk4ZDk1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xp
Yi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogc3RhdGljIE9w
dGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IGlucHV0TWV0aG9kU2F0ZUZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnNob3VsZFVzZUlu
cHV0TWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwogICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZmQ5ZmI4YjRiMDMyZGM3
MjY3MzE5ZmM0ZmIwODliYjFhZjM3YzcyZS4uNmI3OWQ1YWEwZjQ1NjY5NDk4MzUwOThlYjg4MzNm
YWYwZTYyMWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEwMTEsMTMgKzEwMTEsMTMgQEAgdm9pZCBXZWJQYWdlOjpp
bnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFn
ZVNpemVzLAogICAgIGF1dG8gaW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UoKTsKICAgICBpZiAocGxhY2Vo
b2xkZXJSZWN0cy5zaXplKCkgIT0gaW1hZ2VTaXplcy5zaXplKCkpIHsKICAgICAgICAgUkVMRUFT
RV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0IGRyb3BwZWQgaW1hZ2UgcGxhY2Vo
b2xkZXJzOiBwbGFjZWhvbGRlciByZWN0IGNvdW50ICgldHUpIGRvZXMgbm90IG1hdGNoIGltYWdl
IHNpemUgY291bnQgKCV0dSkuIiwgcGxhY2Vob2xkZXJSZWN0cy5zaXplKCksIGltYWdlU2l6ZXMu
c2l6ZSgpKTsKLSAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXBs
eSh7IH0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
IWltYWdlUGxhY2Vob2xkZXJSYW5nZSkgewogICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJv
cCwgIkZhaWxlZCB0byBpbnNlcnQgZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlcnM6IG5vIGltYWdl
IHBsYWNlaG9sZGVyIHJhbmdlLiIpOwotICAgICAgICByZXBseSh7IH0sIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHJlcGx5KHsgfSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzLAogCiB2b2lk
IFdlYlBhZ2U6OmRpZENvbmNsdWRlRHJvcCgpCiB7Ci0gICAgbV9yYW5nZUZvckRyb3BTbmFwc2hv
dCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3JhbmdlRm9yRHJvcFNuYXBzaG90ID0gc3RkOjpudWxs
b3B0OwogICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuY2xlYXIoKTsK
IH0KIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlQW5kU2VuZEVk
aXREcmFnU25hcHNob3QoKQogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpVc2VTZWxlY3Rp
b25SZWN0Rm9yU2l6aW5nLAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpJbmNsdWRlU25h
cHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0CiAgICAgfTsKLSAgICBpZiAoYXV0byByYW5nZSA9
IHN0ZDo6ZXhjaGFuZ2UobV9yYW5nZUZvckRyb3BTbmFwc2hvdCwgV1RGOjpudWxsb3B0KSkgewor
ICAgIGlmIChhdXRvIHJhbmdlID0gc3RkOjpleGNoYW5nZShtX3JhbmdlRm9yRHJvcFNuYXBzaG90
LCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHRJbmRpY2F0b3IgPSBUZXh0
SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZhdWx0VGV4dEluZGljYXRvck9w
dGlvbnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246Ok5v
bmUsIHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJbmRpY2F0b3It
PmRhdGEoKTsKICAgICB9CkBAIC0xNDgxLDcgKzE0ODEsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5
cGUsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdlc3R1cmVSZWNv
Z25pemVyU3RhdGU6OkVuZGVkOgogICAgICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0
YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICAgICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0aW5nR2VzdHVyZVJhbmdlID0g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAgICAgICBjYXNlIEdlc3R1cmVS
ZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlOgpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBl
IGdlc3R1cmVUeXBlLAogICAgICAgICAgICAgaWYgKHJhbmdlKQogICAgICAgICAgICAgICAgIG1f
Y3VycmVudFdvcmRSYW5nZSA9IHsgeyAqcmFuZ2UgfSB9OwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG1fY3VycmVudFdvcmRSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDaGFuZ2VkOgogICAg
ICAgICAgICAgaWYgKCFtX2N1cnJlbnRXb3JkUmFuZ2UpCkBAIC0xNTEyLDcgKzE1MTIsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgR2Vz
dHVyZVR5cGUgZ2VzdHVyZVR5cGUsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2du
aXplclN0YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0
YXRlOjpGYWlsZWQ6CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6UG9zc2li
bGU6CkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBjbwogCiAgICAg
YXV0byB0YXJnZXROb2RlID0gbWFrZVJlZlB0cihoaXRUZXN0LnRhcmdldE5vZGUoKSk7CiAgICAg
aWYgKHRhcmdldE5vZGUgJiYgIUhUTUxFbGVtZW50OjpzaG91bGRFeHRlbmRTZWxlY3Rpb25Ub1Rh
cmdldE5vZGUoKnRhcmdldE5vZGUsIGV4aXN0aW5nU2VsZWN0aW9uKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OwpAQCAt
MTYzNCw3ICsxNjM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29y
ZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdAogCiAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JkIGJvdW5kYXJ5
LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJp
dHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgc3RhdGljIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUq
IGZyYW1lLCBjb25zdAogICAgIGlmIChleHRlbnQuaXNOdWxsKCkgfHwgZXh0ZW50ID09IGJhc2Up
CiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICBpZiAoZXh0ZW50LmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCEoYmFzZSA8IGV4dGVudCkpCiAgICAgICAgIHN0ZDo6c3dhcChiYXNl
LCBleHRlbnQpOwpAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgSW50UmVjdCBXZWJQYWdlOjpyb290Vmll
d0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogCiB2
b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKIHsKLSAgICBtX3N0YXJ0aW5nR2VzdHVyZVJh
bmdlID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2UgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCkBAIC0yMDc0LDExICsyMDc0LDExIEBAIHN0YXRp
YyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVzVGV4dChjb25z
dCBWaXNpYmxlUG9zaXRpb24mCiB7CiAgICAgYXV0byBsaXZlUmFuZ2UgPSBzZWxlY3Rpb24uZmly
c3RSYW5nZSgpOwogICAgIGlmICghbGl2ZVJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFNpbXBsZVJhbmdlIHJhbmdl
IHsgKmxpdmVSYW5nZSB9OwogICAgIGF1dG8gYm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBv
aW50KHBvc2l0aW9uKTsKICAgICBpZiAoIWJvdW5kYXJ5UG9pbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGZp
bmRDbG9zZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsgfSwgY2hhcmFjdGVyQ291bnQo
eyByYW5nZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIApAQCAtMjE2OCwyNSArMjE2OCwy
NSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFudWxhcml0eUF0
UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZQogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpE
b2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICAvLyBGSVhNRTogTWFrZXMgbm8gc2Vuc2UgdGhh
dCB0aGlzIG11dGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCByZXR1cm5zIG51bGwuCiAg
ICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpTZW50ZW5j
ZUJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJvdW5kYXJ5Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2VsZWN0aW9uKGNv
bnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbWUmIGZyYW1lKQpAQCAtMjQ5NCw3ICsy
NDk0LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJuYWwoY29uc3Qg
U3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIHdoaWxlICh0ZXh0
Rm9yUmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0aCgpID4gb3JpZ2luYWxUZXh0
Lmxlbmd0aCgpICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0dGVtcHRzKSB7CiAgICAgICAg
ICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KHBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uID49IGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLnN0YXJ0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlID0gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdl
KHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKICAgICAg
ICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJhbmdlKTsKQEAg
LTI3NjUsMTUgKzI3NjUsMTUgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlua1Bvc2l0aW9u
SW5mb3JtYXRpb24oRWxlbWVudCYgZWxlbWVudCwgSW50ZXJhY3Rpb25JbmYKIHN0YXRpYyBPcHRp
b25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJbWFnZSY+PiBpbWFnZVJlbmRlcmVyQW5kSW1h
Z2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPFJlbmRlckltYWdlPihlbGVtZW50
LnJlbmRlcmVyKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5k
ZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJJbWFnZS5jYWNo
ZWRJbWFnZSgpIHx8IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8qIGltYWdlID0gcmVuZGVySW1hZ2UuY2FjaGVkSW1hZ2UoKS0+aW1hZ2VG
b3JSZW5kZXJlcigmcmVuZGVySW1hZ2UpOwogICAgIGlmICghaW1hZ2UgfHwgaW1hZ2UtPndpZHRo
KCkgPD0gMSB8fCBpbWFnZS0+aGVpZ2h0KCkgPD0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyByZW5k
ZXJJbWFnZSwgKmltYWdlIH19OwogfQpAQCAtMzE4MCw3ICszMTgwLDcgQEAgT3B0aW9uYWw8Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBmb2N1c2VkRWxlbWVudCA9
IG1fZm9jdXNlZEVsZW1lbnQuY29weVJlZigpOwogICAgIGJvb2wgd2lsbExheW91dCA9IGRvY3Vt
ZW50LT52aWV3KCktPm5lZWRzTGF5b3V0KCk7CkBAIC0zMTg4LDcgKzMxODgsNyBAQCBPcHRpb25h
bDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBXZWJQYWdlOjpmb2N1c2VkRWxlbWVudEluZm9y
bWF0aW9uKCkKIAogICAgIC8vIExheW91dCBtYXkgaGF2ZSBkZXRhY2hlZCB0aGUgZG9jdW1lbnQg
b3IgY2F1c2VkIGEgY2hhbmdlIG9mIGZvY3VzLgogICAgIGlmICghZG9jdW1lbnQtPnZpZXcoKSB8
fCBmb2N1c2VkRWxlbWVudCAhPSBtX2ZvY3VzZWRFbGVtZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHdpbGxM
YXlvdXQpCiAgICAgICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtMzQwNiw3ICszNDA2
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGRvdWIKICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50aWZpZXIgPDwgIiBzZXRWaWV3
cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNpemUgPDwgIiBzY2FsZUZhY3Rv
ciAiIDw8IHNjYWxlRmFjdG9yIDw8ICIgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoICIgPDwg
bWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKIAogICAgIGF1dG8gcHJldmlvdXNMYXlvdXRT
aXplU2NhbGVGYWN0b3IgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRTaXplU2NhbGVG
YWN0b3IoKTsKLSAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3
cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IFdU
Rjo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
KTsKKyAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92aWV3cG9ydENv
bmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/IHN0ZDo6bnVs
bG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKICAg
ICBpZiAoIW1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldFZpZXdMYXlvdXRTaXplKHNpemUsIHNj
YWxlRmFjdG9yLCBXVEZNb3ZlKGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlKSkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMzQ3OSw3ICszNDc5LDcgQEAgdm9pZCBXZWJQYWdlOjpkeW5hbWlj
Vmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIGNvbnN0
IFcKIAogICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSBzZXR0aW5nIHZpZXcgbGF5b3V0IHNpemUgdG8g
IiA8PCB2aWV3TGF5b3V0U2l6ZSk7CiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZWQgPSBtX3ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5zZXRJc0tub3duVG9MYXlPdXRXaWRlclRoYW5WaWV3cG9ydChmYWxz
ZSk7Ci0gICAgdmlld3BvcnRDaGFuZ2VkIHw9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldFZp
ZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBXVEY6Om51bGxvcHQsIG1pbmltdW1FZmZlY3Rp
dmVEZXZpY2VXaWR0aCk7CisgICAgdmlld3BvcnRDaGFuZ2VkIHw9IG1fdmlld3BvcnRDb25maWd1
cmF0aW9uLnNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBzdGQ6Om51bGxvcHQsIG1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CiAgICAgaWYgKHZpZXdwb3J0Q2hhbmdlZCkKICAg
ICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogCkBAIC0zOTI5LDcgKzM5Mjks
NyBAQCBPcHRpb25hbDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbklERm9y
TGFzdFNjYWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8ubGFz
dExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKICAgICBpZiAobV9sYXN0VHJhbnNhY3Rpb25JRFdp
dGhTY2FsZUNoYW5nZSA+IHRyYW5zYWN0aW9uSURGb3JMYXN0U2NhbGVGcm9tVUlQcm9jZXNzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgZmxvYXQgc2NhbGVGcm9tVUlQcm9jZXNzID0gdmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby5zY2FsZSgpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZSA9IG1fcGFnZS0+cGFnZVNj
YWxlRmFjdG9yKCk7CkBAIC0zOTQzLDcgKzM5NDMsNyBAQCBPcHRpb25hbDxmbG9hdD4gV2ViUGFn
ZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8m
CiAgICAgCiAgICAgc2NhbGVGcm9tVUlQcm9jZXNzID0gc3RkOjptaW48ZmxvYXQ+KG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSgpLCBzdGQ6Om1heDxmbG9hdD4obV92aWV3cG9y
dENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCksIHNjYWxlRnJvbVVJUHJvY2VzcykpOwogICAg
IGlmIChhcmVFc3NlbnRpYWxseUVxdWFsQXNGbG9hdChjdXJyZW50U2NhbGUsIHNjYWxlRnJvbVVJ
UHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2NhbGVGcm9tVUlQcm9jZXNzOwogfQpAQCAtMzk5
Miw3ICszOTkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNv
bnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAgICAgIG1fb2xk
ZXN0Tm9uU3RhYmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1RpbWVzdGFtcCA9IG9sZGVzdFRp
bWVzdGFtcDsKICAgICB9CiAKLSAgICBmbG9hdCBzY2FsZVRvVXNlID0gc2NhbGVGcm9tVUlQcm9j
ZXNzLnZhbHVlT3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgZmxvYXQgc2NhbGVU
b1VzZSA9IHNjYWxlRnJvbVVJUHJvY2Vzcy52YWx1ZV9vcihtX3BhZ2UtPnBhZ2VTY2FsZUZhY3Rv
cigpKTsKICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mby5leHBvc2VkQ29udGVudFJlY3QoKTsKICAgICBGbG9hdFJlY3QgYWRqdXN0
ZWRFeHBvc2VkQ29udGVudFJlY3QgPSBhZGp1c3RFeHBvc2VkUmVjdEZvck5ld1NjYWxlKGV4cG9z
ZWRDb250ZW50UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5zY2FsZSgpLCBzY2Fs
ZVRvVXNlKTsKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkQ29udGVudFJlY3QoYWRqdXN0
ZWRFeHBvc2VkQ29udGVudFJlY3QpOwpAQCAtNDA4MCw3ICs0MDgwLDcgQEAgdm9pZCBXZWJQYWdl
Ojp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8mIHZpc2kKICAgICAgICAgaWYgKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5v
YnNjdXJlZENvbnRlbnRSZWN0KCkgIT0gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby51bm9i
c2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkpCiAgICAgICAgICAg
ICBmcmFtZVZpZXcuc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdCh2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJ
bnB1dFZpZXdCb3VuZHMoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcmFtZVZpZXcu
c2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IGZyYW1lVmlldy5zZXRWaXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om51bGxvcHQpOwog
CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyAtIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0ICIgPDwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5sYXlvdXRWaWV3cG9ydFJlY3Qo
KSk7CiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChMYXlv
dXRSZWN0KHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8ubGF5b3V0Vmlld3BvcnRSZWN0KCkp
KTsKQEAgLTQyNzksNyArNDI3OSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgLy8g
SW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdoaWNoIGNhbiBk
byBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgogICAgIFJlZjxGcmFtZT4g
ZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2VydFRleHRQbGFj
ZWhvbGRlcihzaXplKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRlciA/IGNvbnRl
eHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNlaG9sZGVyKSA6
IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVy
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cAppbmRleCBiNzAyZDc5MmE5OGY0NzEzYzM5NzAzMGM0ZDhhMGQxNjExYWNkMDA4Li4xNjRjNGNj
M2I2YTNkZTdmYmI2MTA5OTVjMTU4ZGExODg1NGI5MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hN
b25pdG9yTWFjLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbV2ViXSBEaXNw
bGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgZm9yIGRpc3BsYXkg
IiA8PCBkaXNwbGF5SUQoKSA8PCAiIC0gc3RhcnRpbmciKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5SUQoKSwgbWF4
Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkudmFsdWVPcihGdWxsU3BlZWRGcmFtZXNQ
ZXJTZWNvbmQpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERpc3Bs
YXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCksIG1heENsaWVudFByZWZlcnJlZEZyYW1l
c1BlclNlY29uZCgpLnZhbHVlX29yKEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkpLCAwKTsKICAg
ICBpZiAoIW1fcnVuTG9vcE9ic2VydmVyKSB7CiAgICAgICAgIC8vIFRoZSBSdW5Mb29wT2JzZXJ2
ZXIgcmVwZWF0cy4KICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5pcXVlPFJ1bkxv
b3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDBhYzhiODc2
MDczYzhjYTM5MWNmNjRjYWQ4MjcwMmUxNzY5NmY1ZTAuLjU3OWM0ZTg5NDkxZDJhYTQ1ZmZlZWUw
NDlhYjBlMjU2NDEyMTljYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC05NjAsNyArOTYwLDcgQEAgT3B0aW9uYWw8c3Rk
Ojp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBXZWJQYWdlOjps
b29rdXBUZXh0QXQKIHsKICAgICBhdXRvJiBtYWluRnJhbWUgPSBjb3JlUGFnZSgpLT5tYWluRnJh
bWUoKTsKICAgICBpZiAoIW1haW5GcmFtZS52aWV3KCkgfHwgIW1haW5GcmFtZS52aWV3KCktPnJl
bmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0
VGVzdFJlc3VsdChtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQo
bV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91bmRlZEludFBv
aW50KGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpKSwgewogICAgICAgICBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6UmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMzkxMzgzZDM2
ZWU1ZjhlMGViYjA3ZWVlMjcyNmVjMjQ5ZDNkNTZjNC4uYTE0MjBhMThlYTZiYThiNWU0YTQ1MzA4
ZDE3NDk3Y2YyMmU1MzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNTksMTIgKzU5
LDEyIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElkCiAKIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6TG9jYWwsIGlk
ZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2Fs
LCBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQog
CiBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRl
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgJnRvcExl
dmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIs
IHN0ZDo6bnVsbG9wdCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKIH0KIAogU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgY29uc3QgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCmluZGV4IGUwYjQyZTU2ODJhNGQ0NzAxZjk4MzdlNzI0NGU4ODM0NTg2NmQ5OTkuLmI2MjFh
NjJiYjU3YTJjMmI3MTNjYzUzYTZhOTY5NjZjZmNjZDM1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBA
IC00NzcsNyArNDc3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFbnRlckZ1
bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBpZiAoIXZpZGVv
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1
bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZU9yKFdlYkNvcmU6OkZsb2F0U2l6
ZSgpKSk7CisgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBp
Y3R1cmUoc2l6ZS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUoKSkpOwogCiAgICAgaWYgKGlu
dGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkgfHwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuU3Rh
bmRieSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA3MDIyMjdjMTkyYzMwNDEyOTUzZWYxNGY3
ZjYxMmU0ZTM0OWE5YjMwLi40MThhNGE1NzMxOTlmZTc3Yjc4YmZjZWIzNDRlNDVjNDgzOWMzOWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0KQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUNQVUxpbWl0
KCkKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygpKSB7CiAgICAg
ICAgICAgICBhdXRvIHBhZ2VDUFVMaW1pdCA9IHBhZ2UtPmNwdUxpbWl0KCk7CiAgICAgICAgICAg
ICBpZiAoIXBhZ2VDUFVMaW1pdCkgewotICAgICAgICAgICAgICAgIGNwdUxpbWl0ID0gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIGNwdUxpbWl0ID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjcHVMaW1p
dCB8fCBwYWdlQ1BVTGltaXQgPiBjcHVMaW1pdC52YWx1ZSgpKQpAQCAtODQwLDcgKzg0MCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVS
ZWFzb24gcmVhc29uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIW1fY3B1TGltaXQpIHsK
ICAgICAgICAgaWYgKG1fY3B1TW9uaXRvcikKLSAgICAgICAgICAgIG1fY3B1TW9uaXRvci0+c2V0
Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1fY3B1TW9uaXRvci0+c2V0Q1BV
TGltaXQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODU1LDcg
Kzg1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0
b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0gZWxzZSBpZiAocmVhc29uID09IENQVU1vbml0
b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlIYXNDaGFuZ2VkKSB7CiAgICAgICAgIC8vIElmIHRo
ZSB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkLCBzdG9wIHRoZSBDUFUgbW9uaXRvciBiZWZvcmUgc2V0
dGluZyBpdHMgbGltaXQuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIENQVSB1c2FnZSBjYW4g
dmFyeSB3aWxkbHkgYmFzZWQgb24gdmlzaWJpbGl0eSBhbmQgd2Ugd291bGQKICAgICAgICAgLy8g
bm90IHdhbnQgdG8gcmVwb3J0IHRoYXQgYSBwcm9jZXNzIGhhcyBleGNlZWRlZCBpdHMgYmFja2dy
b3VuZCBDUFUgbGltaXQgZXZlbiB0aG91Z2ggbW9zdCBvZiB0aGUgQ1BVIHRpbWUgd2FzIHVzZWQg
d2hpbGUgdGhlIHByb2Nlc3Mgd2FzIHZpc2libGUuCi0gICAgICAgIG1fY3B1TW9uaXRvci0+c2V0
Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jcHVNb25pdG9yLT5zZXRDUFVMaW1p
dChzdGQ6Om51bGxvcHQpOwogICAgIH0KICAgICBtX2NwdU1vbml0b3ItPnNldENQVUxpbWl0KG1f
Y3B1TGltaXQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9n
bGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBjZmVjZjBhMDUzODAyOTM1
MjVmOGZmYzA1MWNmYzZlYzBiMmU5ZThmLi41YjgxMzMyNTMzZjY5ZWU2ZjhiNWU2MDVhMjRjYjUy
N2IzZGEyMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9Vc2Vy
TWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2ds
aWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRz
KFdlYkNvcmU6Ok1lZGlhCiAgICAgfTsKIAogICAgIGF1dG8gdmFsaWRIYW5kbGVyID0gW3RoaXNd
KFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPENhcHR1cmVEZXZp
Y2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpIG11
dGFibGUgewotICAgICAgICBtX3ZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0cmFpbnRzQ2Fs
bGJhY2soV1RGOjpudWxsb3B0LCBhdWRpb0RldmljZXMsIHZpZGVvRGV2aWNlcywgZGV2aWNlSWRl
bnRpZmllckhhc2hTYWx0KTsKKyAgICAgICAgbV92YWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25z
dHJhaW50c0NhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgYXVkaW9EZXZpY2VzLCB2aWRlb0RldmljZXMs
IGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAgICAgfTsKIAogICAgIFJlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFpbnRzKFdURk1v
dmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlkSGFuZGxlciksIHJlcXVlc3QsIFdURk1v
dmUoaGFzaFNhbHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwCmluZGV4IDFkZThlNDY4ODFmY2MxMTNhNmJmYmJlNDBhODlkYjRlNWY0MDY1ODQu
LmVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtNjQwLDcgKzY0MCw3
IEBAIHVpbnQ2NF90IFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbikKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KaW5kZXggZGRiYTQyNjU0ZDYyY2YwZWEwNTJiNmQwZjE1YmQwYjczZDE2ZTEzYi4uOWIx
MDJmMWU0MmJkZTA1MTkwZTk1ZWM1ZTk3MDRhOTlmYTlhZmFiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODgzLDcgKzg4Myw3IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50MzJfdCBvYmplY3RJRCwgY29uc3Qg
U3RyaW5nJiBzY3JpCiAKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCh2
bSwgZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKSk7CiAKLSAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9u
YWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBX
VEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Io
YWxsb3dQb3B1cHMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC5nZXQoKSwgSlNDOjptYWtlU291cmNlKHNj
cmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDhmZmYyNDVlMTY4ZDM0YWRi
ZWRiMDJkNDc0OGY5Y2I4NzExMDc3YjYuLmU0OTRmYzdkZmI2YjliYTQ2Mjc4ODczOTM0YjA4YjUw
ZDA4MjNkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNjMsNyArMzYzLDcgQEAgLSAoQk9PTClz
ZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0RyYXdSZWN0CiAg
ICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9uVk0oKSk7Ci0gICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVudEV2ZW50SXNV
c2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nl
c3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAgICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNl
ckdlc3R1cmUoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNz
aW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKICAgICAgICAgYWNjZXB0ZWRFdmVudCA9
IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc10tPmV2ZW50KHBsdWdpbiwgZXZlbnQp
OwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQppbmRleCA1Y2JkZmIwYzQzNGEyNWZhMTdhN2IxMTg1NjMwNjgzNjIzMTkw
YmM5Li43MmE1Mjg5ZDBmNmFkZmIwNTk1NGUwYWRhZGYzYThmZmE0NTcxZmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA3LDEyICsyMDcsMTIgQEAgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIAogT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQo
KSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldl
YkZyYW1lTG9hZGVyQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVu
dC5tbQppbmRleCBjZmM0NDQ1MmVmMjNhYmY4Njc4NTNkN2MzMDdjM2NkMzg1NWNkZGRiLi40YTFi
YTNjNjdhZWY3NjUxMDBmY2ExMjM1MjFjOThkZGExZjUwZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00MSw3ICs0MSw3IEBAIFdlYlBheW1lbnRDb29y
ZGluYXRvckNsaWVudDo6fldlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCgpCiAKIE9wdGlvbmFs
PFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojp2YWxpZGF0ZWRQYXltZW50TmV0
d29yayhjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6
OmNhbk1ha2VQYXltZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDJkNDE0MWVkYjIx
OTYxOTYxNzgyOTc2ODAxZTBhZjEzMzM2ODAyMGIuLmI1MjViYjBkOGI0ODUxY2QxYWE1MzMyNzk3
OWQxMDY0ZjZlZWU3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC05Miw3ICs5Miw3IEBA
IC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQpcG9ydAogewot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUpLT5w
b3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTZWN1cml0eU9y
aWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBGSVhNRTogT3Zl
cnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNhdXNlIHRyb3Vi
bGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5IGluIGFuIE5T
RGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IDYzMzc2ZTY4OGFmYmFlOWNjYzZhOGI0NGVh
NTMxOTUwNjE2YzgwNWMuLjdkMTJiZTY2YmM1ZDI4MTNhNjBjY2JhYmNmZDljMDVlOTk5MjFiNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3Jp
ZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZp
Y2VPcmllbnRhdGlvbi5tbQpAQCAtNjMsNyArNjMsNyBAQCBEZXZpY2VPcmllbnRhdGlvbkRhdGEq
IGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQogc3RhdGljIE9wdGlvbmFs
PGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBp
ZiAoIWNhblByb3ZpZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC03NSw5ICs3NSw5
IEBAIC0gKGlkKWluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOihib29sKWNhblByb3ZpZGVBbHBoYSBh
bHBoYTooZG91YmxlKWFscGhhIGNhblByb3ZpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICAvLyBXZSBkb24ndCB1c2UgdGhpcyBBUEksIGJ1dCBtYWtlIHN1cmUgdGhhdCBpdCBjb21waWxl
cyB3aXRoIHRoZSBuZXcKICAgICAvLyBjb21wYXNzIHBhcmFtZXRlcnMuCi0gICAgbV9pbnRlcm5h
bCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2
aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoY29udmVydChjYW5Q
cm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Qcm92aWRlQmV0YSwgYmV0YSksIGNvbnZl
cnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KV07
CisgICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxvY10g
aW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVh
dGUoY29udmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Qcm92aWRlQmV0
YSwgYmV0YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0KV07CiAjZWxzZQotICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9yaWVu
dGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRldmlj
ZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSks
IGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0KGNhblByb3ZpZGVHYW1tYSwg
Z2FtbWEpLCBXVEY6Om51bGxvcHQpXTsKKyAgICBtX2ludGVybmFsID0gW1tXZWJEZXZpY2VPcmll
bnRhdGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjpEZXZp
Y2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShjb252ZXJ0KGNhblByb3ZpZGVBbHBoYSwgYWxwaGEp
LCBjb252ZXJ0KGNhblByb3ZpZGVCZXRhLCBiZXRhKSwgY29udmVydChjYW5Qcm92aWRlR2FtbWEs
IGdhbW1hKSwgc3RkOjpudWxsb3B0KV07CiAjZW5kaWYKICAgICByZXR1cm4gc2VsZjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDk1YmRhMzkw
Y2E2OWJhNmI5NjIwZjUxYmVlNjk2YjIxMjM5YWIxNGQuLjYxOTlhOGM0N2I0YjBmZWY0ZTliMjM1
MDRiMjQ5MjM1NDViMmNkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtODEyLDcgKzgxMiw3IEBAIC0gKE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBs
ZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogLSAoT3B0aW9uYWw8
V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSBy
YW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1JlbGF0aXZlVG8K
IHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChy
YW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFibGVSb290KSB7
CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhpcyBjb2RlIHBh
dGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CkBAIC04MjMsNyArODIzLDcg
QEAgLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZToo
TlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXQKICAgICAgICAgLy8gVGhhdCBmaXRzIHdpdGggQXBw
S2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgICAgICBhdXRvKiBlbGVtZW50ID0g
X3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9j
dW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250
ZW50cygqZWxlbWVudCksIHJhbmdlKTsKICAgICB9CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCAtIChP
cHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1Jhbmdl
KXJhbmdlIHJhbmdlSXNSZWxhdAogCiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3Vu
ZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0YXJ0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBzY29wZUVuZCA9IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29u
dGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUoKSk7
CiAgICAgcmV0dXJuIFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUoKnBh
cmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
Lm1tCmluZGV4IDVkYmZkMzU1YTg1Yzk3ZTAyOWJlNTFmNzQ1NzU1ZDMxNWQ0MGU5MmQuLjQzYzQ3
Y2UxYzU0NTlmYTBlNzkwMjUxYmIyYzljODQzYWQ1YTg2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0K
QEAgLTU5LDcgKzU5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24K
IE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24gKnBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBv
c2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNjFkNmY0ZTg2NTk0ZGNhYjdlNjE3
OTA3MDRiNzA5ZWY1Y2NjMmJlMC4uMDg0YWI3MzE0Zjk0MzZlZjEzNDgxNDE4MzdlYTJlNjljZGY2
NjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC00MjksNyArNDI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkNvbnRleHRN
ZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogICAgIGNhc2UgV2ViTWVudUl0ZW1U
YWdUcmFuc2xhdGU6CiAgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UYWdUcmFuc2xhdGU7
CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoV2ViQ29yZTo6Q29udGV4
dE1lbnVBY3Rpb24gYWN0aW9uKQpAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxO
U0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb246Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c6CiAgICAgICAgIHJldHVybiBXZWJNZW51SXRlbVRhZ09w
ZW5MaW5rSW5OZXdXaW5kb3c7CkBAIC02MDksNyArNjA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPE5T
SW50ZWdlcj4gdG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQogICAgICAg
ICByZXR1cm4gV2ViTWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW47CiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1cnJlbnRHcm91cDoKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXA6Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnU6CiAgICAgICAgIHJldHVybiBXZWJNZW51SXRlbVRhZ1No
YXJlTWVudTsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZVZpZGVvRW5oYW5jZWRG
dWxsc2NyZWVuOgpAQCAtNjE3LDcgKzYxNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+
IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zbGF0ZToKICAgICAgICAgcmV0dXJuIFdlYk1lbnVJdGVtVGFnVHJh
bnNsYXRlOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmV2ZWFsSW1hZ2U6Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgLi4uIENvbnRleHRNZW51SXRlbUxh
c3RDdXN0b21UYWc6CiAgICAgICAgIC8vIFdlIGp1c3QgcGFzcyB0aGVzZSB0aHJvdWdoLgpAQCAt
NjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBAaW1wbGVtZW50YXRpb24gV2ViTWVudVRhcmdldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDMwMTBhNmE4OGI5NTdjOTA3NzkxNDY4
ODhjNjY4OTNjNGI1ZDdiMTcuLjFiYWQzZjhhZjY5NjIwYmNkNTMwYzBlYmY5NzMyYmIzNWMzYjNk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU2
ODIsNyArNTY4Miw3IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogLSAodm9pZClkb1dp
bmRvd0RpZENoYW5nZVNjcmVlbgogewogICAgIGlmIChfcHJpdmF0ZSAmJiBfcHJpdmF0ZS0+cGFn
ZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndpbmRvd1NjcmVlbkRpZENoYW5n
ZShXZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVuKSwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndpbmRvd1NjcmVlbkRpZENoYW5nZShX
ZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVuKSwgc3RkOjpudWxsb3B0KTsKIH0K
IAogLSAodm9pZClfd2luZG93Q2hhbmdlZEtleVN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IGY2MzNjMzRh
MTM0YjBiNjViZThhYTExYjY1NmIzZmU5MGUyMWUwNjIuLjg0MjcwODFjYWM5YTdkMDhlN2JmMTY3
MDM1OTdiODRmM2EwOTc3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGlj
IGlubGluZSBWZWN0b3I8aW50PiBwYXJzZVZlcnNpb25TdHJpbmcoY29uc3QgU3RyaW5nJiB2ZXJz
aW9uU3RyaW5nKQogICAgICAgICBmb3IgKGVuZFBvcyA9IHN0YXJ0UG9zOyBlbmRQb3MgPCB2ZXJz
aW9uU3RyaW5nLmxlbmd0aCgpOyArK2VuZFBvcykKICAgICAgICAgICAgIGlmICh2ZXJzaW9uU3Ry
aW5nW2VuZFBvc10gPT0gJy4nIHx8IHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAnXycpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHZlcnNpb24uYXBwZW5kKHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJz
dHJpbmcoc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVPcigwKSk7CisgICAgICAg
IHZlcnNpb24uYXBwZW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oU3Ry
aW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJzdHJpbmcoc3RhcnRQb3MsIGVuZFBvcyAtIHN0
YXJ0UG9zKSkudmFsdWVfb3IoMCkpOwogICAgICAgICBzdGFydFBvcyA9IGVuZFBvcyArIDE7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAppbmRleCBlMzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjliYjllMDMwN2E2Li5jMGM0MDU3
ZjZiZWY4M2M4MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAg
VVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5nSWZKYXZhU2Ny
aXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQp
OworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hv
dWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChqc1N0cmlu
Zy5pc051bGwoKSkgewogICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBhIHRhcmdldGVkIHJlcXVl
c3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwKQEAgLTEwNzIsNyArMTA3Miw3
IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0
IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbnRl
bnRMZW5ndGggPSBoZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3Ro
KTsKIAogICAgICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0aC5pc051bGwoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52YWx1ZU9yKDApLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52YWx1ZV9v
cigwKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGRzLnJlbW92ZShI
VFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBwb3N0RGF0
YSArPSBsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAwZTY2OTA4
MjdmODBhYjE3ZTNlMzBiN2UyYTg5MjVkMTM3YzY2ZDM1Li5hNzMxOTY4MjEwY2Q3MDljNTM4YmIy
MzFmM2E1NTFlNTZiYTc0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0x
MjAsMTIgKzEyMCwxMiBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xp
ZW50KCkKIAogT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcAppbmRleCA3MjFmYzkwODRiZjY4MzE1Njg0NmQ2MmE0NmUxNThjMmNiZjZlMzJkLi4z
OGNhMTcxY2M2Yjg4MmE0ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgT3B0aW9uYWw8R2VvbG9jYXRpb25Q
b3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewogICAg
IENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAgaWYgKEZBSUxF
RChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQ09N
UHRyPElXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBpZiAoRkFJTEVEKHBy
b3ZpZGVyLT5sYXN0UG9zaXRpb24oJnBvc2l0aW9uKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNvcmUocG9z
aXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGU2MGViMjFmZGMwMTYyMTVlNzYyZWY5MDM4ZjNk
NDU5ZDBiNDczYWIuLmQ2NGU3NmE4NTY1OTIwNDIxYTE4YjQ2ZGE4ZDE1NGUyYTAwMWVkNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCkBAIC04NiwxMSArODYsMTEgQEAgSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpp
bml0V2l0aFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXQKIE9wdGlvbmFs
PEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBvc2l0aW9uKiBw
b3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ09NUHRyPFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24oUXVlcnksIHBvc2l0aW9uKTsK
ICAgICBpZiAoIXdlYkdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gd2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi0+aW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDU3Y2E4MGUxNzNkZDliNTMyNWY5MmYzNDlmYTg5
NGQxYWU2NDI2ODQuLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTEy
MCw3ICsxMjAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9PdXRfIHVuc2ln
bmVkIHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgpLnZhbHVlT3Io
MCk7CisgICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKTsK
IAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGMwNjhmMmM2NDcxNjQyZWJhNWE4YTI2ZmQ0YmViNWQ1YmJlOTg3
YjguLjdlNWY3Y2ZlODc0ZDQ4YTU5YTBkYzM0Nzg0N2YwMDEzYmFhNzgyYWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4
dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhy
b3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZTogVXNlIHNjcmlw
dCB0byByZW5hbWUgdmFsdWVPciwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHRfdCwKKyAgICAg
ICAgV1RGOjpPcHRpb25hbCwgV1RGOjptYWtlT3B0aW9uYWwsIGFuZCBtYWtlT3B0aW9uYWwuIE90
aGVyIHJlbmFtaW5ncyBjYW4ndCBuZWNlc3NhcmlseQorICAgICAgICBiZSBkb25lIGJ5IHRoZSBz
Y3JpcHQgYW5kIHNvIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXNzZXMuCisKKyAgICAgICAgKiA8
bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFt
ZS4KKwogMjAyMS0wNS0yNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgTWVkaWFTZXNzaW9uIHJlYWR5c3RhdGUgZW51bXMgYWxsIGxvd2VyY2FzZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1Njcmlw
dHMvZG8td2ViY29yZS1yZW5hbWUKaW5kZXggMmE5MWU1N2U1YWYwNThmMTFlZTNiMTBmNGM4YmY1
Y2U5NjgyMmM0My4uMjUyMDQ1ZDVhNjg5MDQzODBhNTRjOWJiNjE1Nzc0MzFjMTk4ZDI2NyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3Jp
cHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBzdWIgd2FudGVkCiBt
eSAkaXNET01UeXBlUmVuYW1lID0gMDsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBn
byBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJEcmFnT3BlcmF0aW9uQ29weSIgPT4gIkRyYWdP
cGVyYXRpb246OkNvcHkiLAotICAgICJEcmFnT3BlcmF0aW9uTGluayIgPT4gIkRyYWdPcGVyYXRp
b246OkxpbmsiLAotICAgICJEcmFnT3BlcmF0aW9uR2VuZXJpYyIgPT4gIkRyYWdPcGVyYXRpb246
OkdlbmVyaWMiLAotICAgICJEcmFnT3BlcmF0aW9uUHJpdmF0ZSIgPT4gIkRyYWdPcGVyYXRpb246
OlByaXZhdGUiLAotICAgICJEcmFnT3BlcmF0aW9uTW92ZSIgPT4gIkRyYWdPcGVyYXRpb246Ok1v
dmUiLAotICAgICJEcmFnT3BlcmF0aW9uRGVsZXRlIiA9PiAiRHJhZ09wZXJhdGlvbjo6RGVsZXRl
IiwKKyAgICAidmFsdWVPciIgPT4gInZhbHVlX29yIiwKKyAgICAiV1RGOjpudWxsb3B0IiA9PiAi
c3RkOjpudWxsb3B0IiwKKyAgICAiV1RGOjpudWxsb3B0X3QiID0+ICJzdGQ6Om51bGxvcHRfdCIs
CisgICAgIldURjo6T3B0aW9uYWwiID0+ICJzdGQ6Om9wdGlvbmFsIiwKKyAgICAiV1RGOjptYWtl
T3B0aW9uYWwiID0+ICJzdGQ6Om1ha2Vfb3B0aW9uYWwiLAorICAgICJtYWtlT3B0aW9uYWwiID0+
ICJzdGQ6Om1ha2Vfb3B0aW9uYWwiLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JU
aGVGdXR1cmUgPSAoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKaW5kZXggMDA0YjJkYTAzYTk1
YTNmZGNhMGNmNzg2ZDI5MGQ2NWExZGVjMTdmYS4uNjZkN2VhZTM5MmYwNTkxMGI3MDk0YWM5NDYz
ZmFiMGE4ZTkyMmQzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcApAQCAtMjYzLDcgKzI2
Myw3IEBAIGF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBjb25uZWN0aW9u
cykgLT4gT3B0aW9uYWw8U29ja2V0PgogewogICAgIFNvY2tldCBsaXN0ZW5pbmdTb2NrZXQgPSBz
b2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogICAgIGlmIChsaXN0ZW5pbmdTb2NrZXQg
PT0gLTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gUG9ydHMgNDkxNTItNjU1MzUgYXJlIHVuYWxsb2NhdGVk
IHBvcnRzLiBUcnkgdW50aWwgd2UgZmluZCBvbmUgdGhhdCdzIGZyZWUuCiAgICAgZm9yIChQb3J0
IHBvcnQgPSA0OTE1MjsgcG9ydDsgcG9ydCsrKSB7CkBAIC0yNzksNyArMjc5LDcgQEAgYXV0byBU
Q1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBPcHRpb25h
bDxTb2NrZXQ+CiAgICAgICAgIGlmIChsaXN0ZW4obGlzdGVuaW5nU29ja2V0LCBjb25uZWN0aW9u
cykgPT0gLTEpIHsKICAgICAgICAgICAgIC8vIExpc3RlbmluZyBmYWlsZWQuCiAgICAgICAgICAg
ICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAg
bV9wb3J0ID0gcG9ydDsKICAgICAgICAgcmV0dXJuIGxpc3RlbmluZ1NvY2tldDsgLy8gU3VjY2Vz
c2Z1bGx5IHNldCB1cCBsaXN0ZW5pbmcgcG9ydC4KQEAgLTI4Nyw3ICsyODcsNyBAQCBhdXRvIFRD
UFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpIC0+IE9wdGlvbmFs
PFNvY2tldD4KICAgICAKICAgICAvLyBDb3VsZG4ndCBmaW5kIGFuIGF2YWlsYWJsZSBwb3J0Lgog
ICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFZlY3Rvcjx1aW50OF90PiBU
Q1BTZXJ2ZXI6OnJlYWQoU29ja2V0IHNvY2tldCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVENQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCmluZGV4
IDkwZTJlMzE4YjBmMmE0ZGE4YWRkYzRjMjExM2Q5YmRlMjY4ZTY2MGYuLjMzNjRhY2QzZTE4NjU2
MDJhY2RjMDVhZWNiZjI1Y2I2N2NkMTcwNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVENQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3Qg
ewogICAgICAgICBIVFRQUywgSFRUUFNQcm94eSwgSFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVS
ZXF1ZXN0CiAgICAgfTsKLSAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NM
Kik+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gV1RGOjpudWxsb3B0LCBz
aXplX3QgY29ubmVjdGlvbnMgPSAxKTsKKyAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9u
PHZvaWQoU1NMKik+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gc3RkOjpu
dWxsb3B0LCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKICNlbmRpZiAvLyBIQVZFKFNTTCkKICAg
ICB+VENQU2VydmVyKCk7CiAgICAgCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAKICNp
ZiBIQVZFKFNTTCkKICAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aE9LKFNTTCopOwotICAgIHN0
YXRpYyB2b2lkIHN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NM
Kik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENsaWVudENlcnRpZmlj
YXRlID0gZmFsc2UsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gV1RGOjpudWxs
b3B0KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29ja2V0LCBGdW5j
dGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29sIHJlcXVlc3RD
bGllbnRDZXJ0aWZpY2F0ZSA9IGZhbHNlLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lv
biA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aENo
YWxsZW5nZVRoZW5PSyhTb2NrZXQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GdW5jdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
dW5jdGlvbi5jcHAKaW5kZXggZmNmOGU2YmIzOGEyZDNiZjUwNTJlYjUyMzU3OGVkMzE4OTM4MWQ5
MC4uMGQ1OWQzZWJiNDAzMmU4MGI5ODQ3NWNmYjUxN2ExMGI5ZTZkZWE0YyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcApAQCAtMjA5LDggKzIwOSw4IEBAIFRF
U1QoV1RGX0Z1bmN0aW9uLCBBc3NpZ25CZWZvcmVEZXN0cm95KQogICAgIEVYUEVDVF9UUlVFKHN0
YXRpY19jYXN0PGJvb2w+KEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3Vs
dCkpOwogICAgIEVYUEVDVF9UUlVFKEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlv
bkFzQm9vbC52YWx1ZSgpKTsKICAgICBFWFBFQ1RfRVEoMVUsIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25D
aGVja2VyOjpmdW5jdGlvblJlc3VsdC52YWx1ZSgpKTsKLSAgICBGdW5jdGlvbkRlc3RydWN0aW9u
Q2hlY2tlcjo6ZnVuY3Rpb25Bc0Jvb2wgPSBXVEY6Om51bGxvcHQ7Ci0gICAgRnVuY3Rpb25EZXN0
cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0ID0gV1RGOjpudWxsb3B0OworICAgIEZ1bmN0
aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IHN0ZDo6bnVsbG9wdDsKKyAg
ICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhID0gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXIoYSk7CiAgICAgYSA9IE1v
dmVPbmx5IHsgMiB9OwpAQCAtMjE4LDggKzIxOCw4IEBAIFRFU1QoV1RGX0Z1bmN0aW9uLCBBc3Np
Z25CZWZvcmVEZXN0cm95KQogICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KEZ1bmN0
aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3VsdCkpOwogICAgIEVYUEVDVF9UUlVF
KEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbC52YWx1ZSgpKTsKICAg
ICBFWFBFQ1RfRVEoMlUsIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3Vs
dC52YWx1ZSgpKTsKLSAgICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25Bc0Jv
b2wgPSBXVEY6Om51bGxvcHQ7Ci0gICAgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0
aW9uUmVzdWx0ID0gV1RGOjpudWxsb3B0OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2Vy
OjpmdW5jdGlvbkFzQm9vbCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBGdW5jdGlvbkRlc3RydWN0aW9u
Q2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbnQg
cmV0dXJuVGhyZWUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKaW5k
ZXggNDE3ZjY0YjAyZDMwYzY4YTljMzU1ZDk3OTc1ZWU3MjBiYTIxZjYwYS4uMGU3NzAzZTZmMzBk
ZDAyNWM3NTBmNTM1OGM4MmUyNTQxYzg4NjYxZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChXVEYsIEhhc2hlcl9tdWx0
aXBsZSkKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjphcnJh
eTxpbnQsIDE+IHsgeyAwIH0gfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNoLCBjb21w
dXRlSGFzaChWZWN0b3I8aW50PiB7IDAgfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNo
LCBjb21wdXRlSGFzaChWZWN0b3I8aW50LCAxPiB7IDAgfSkpOwotICAgIEVYUEVDVF9FUSh6ZXJv
MzJCaXRIYXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgV1RGOjpudWxsb3B0IH0pKTsK
KyAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goT3B0aW9uYWw8aW50PiB7
IHN0ZDo6bnVsbG9wdCB9KSk7CiAgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVI
YXNoKHN0ZDo6bWFrZV90dXBsZSgwKSkpOwogCiAgICAgRVhQRUNUX0VRKG9uZTY0Qml0SGFzaCwg
Y29tcHV0ZUhhc2goMSwgMCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvTWFya2FibGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWFya2Fi
bGUuY3BwCmluZGV4IGI5MzU1NzUyMjhkYjkyNTI1YWVmZTMyMzkyMjM0OWQ0OGVhMmRmN2IuLjVi
N2UxNTMxN2NiZmU5YjYzZGUzOGY0YWQwNzlkZGU4NzVjNGI4MjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgVEVTVChXVEZf
TWFya2FibGUsIERpc2VuZ2FnZWQpCiAgICAgfQogCiAgICAgewotICAgICAgICBNYXJrYWJsZTxp
bnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsgV1RGOjpudWxs
b3B0IH07CisgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyBzdGQ6Om51bGxvcHQgfTsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIFRF
U1QoV1RGX01hcmthYmxlLCBFbmdhZ2VkKQogICAgICAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2Fz
dDxib29sPihvcHRpb25hbCkpOwogICAgICAgICBFWFBFQ1RfRVEoNDEsIG9wdGlvbmFsLnZhbHVl
KCkpOwogCi0gICAgICAgIG9wdGlvbmFsID0gV1RGOjpudWxsb3B0OworICAgICAgICBvcHRpb25h
bCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19jYXN0PGJvb2w+
KG9wdGlvbmFsKSk7CiAKICAgICAgICAgb3B0aW9uYWwgPSA0MjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5j
cHAKaW5kZXggYjRjNmM5ZTlmYmNmOWRmZTQ5OGI1NTYwZTg3NWU3Y2VhMGQxYzdkZS4uZDMxNjBk
YWQ2NGM3MTMxYTI1OGM4ZDY3MmM4MjMxOTJmMDk5YTcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5j
cHAKQEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFdU
RiwgUGFyc2VJbnRlZ2VyKQogewotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlcjxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxscHRyKSkpOwotICAgIEVYUEVD
VF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VR
KHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KG51bGxwdHIpKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGlu
dD4oIiIpKTsKICAgICBFWFBFQ1RfRVEoMCwgcGFyc2VJbnRlZ2VyPGludD4oIjAiKSk7CiAgICAg
RVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxIikpOwogICAgIEVYUEVDVF9FUSgzLCBw
YXJzZUludGVnZXI8aW50PigiMyIpKTsKQEAgLTM5LDI2ICszOSwyNiBAQCBURVNUKFdURiwgUGFy
c2VJbnRlZ2VyKQogICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyPGludD4oIjEyMzQ1
IikpOwogICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMTIzNDUiKSk7
CiAgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+KCIyMTQ3NDgzNjQ3
IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIyMTQ3
NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+
KCIyMTQ3NDgzNjQ4IikpOwogICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEsIHBhcnNlSW50
ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDkiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVs
bG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxv
cHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoc3Rk
OjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigieDEiKSk7CiAgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlcjxpbnQ+KCIgMSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJz
ZUludGVnZXI8aW50PigiMXgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyPGludD4oIjF4IikpOwogCiAgICAgRVhQRUNUX0VRKDBVLCAwVSArICpwYXJzZUludGVn
ZXI8dWludDE2X3Q+KCIwIikpOwogICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFyc2VJbnRlZ2Vy
PHVpbnQxNl90PigiMyIpKTsKICAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSArICpwYXJzZUludGVn
ZXI8dWludDE2X3Q+KCIxMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoNjU1MzVVLCAwVSArICpwYXJz
ZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0
LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKKyAgICBFWFBFQ1RfRVEo
c3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1Rf
RVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBF
Q1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKIH0K
IAogVEVTVChXVEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQogewotICAgIEVY
UEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7Ci0gICAgRVhQRUNUX0VRKFdU
Rjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIikpOwor
ICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNU
X0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pigi
IikpOwogICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxp
bnQ+KCIwIikpOwogICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KCIxIikpOwogICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KCIzIikpOwpAQCAtNjYsMTAgKzY2LDEwIEBAIFRFU1QoV1RGLCBQYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuaykKICAgICBFWFBFQ1RfRVEoMTIzNDUsIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEyMzQ1IikpOwogICAgIEVYUEVDVF9F
USgtMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIi0xMjM0NSIp
KTsKICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PigiMjE0NzQ4MzY0NyIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ4IikpOworICAg
IEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oIjIxNDc0ODM2NDgiKSk7CiAgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDgiKSk7Ci0gICAg
RVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
aW50PigiLTIxNDc0ODM2NDkiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigieDEiKSk7CisgICAgRVhQRUNUX0VRKHN0
ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTIxNDc0
ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8aW50PigieDEiKSk7CiAgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIiAxIikpOwogICAgIEVYUEVDVF9FUSgxLCBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxeCIpKTsKIApAQCAtNzcsOSArNzcs
OSBAQCBURVNUKFdURiwgUGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bmspCiAgICAgRVhQ
RUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oIjMiKSk7CiAgICAgRVhQRUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIxMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoNjU1MzVV
LCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM1
IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQxNl90PigiLTEiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMyIpKTsKLSAgICBF
WFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
aW50MTZfdD4oIjY1NTM2IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTEiKSk7CisgICAgRVhQRUNUX0VR
KHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+
KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2IikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
UkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNw
cAppbmRleCA1ZmMzOTMzYTI0OWIwNTI1MjA5ZTk3MWYxYjUxMjc4MzExNWY0N2QyLi45ODFmMmQ3
MGMzYjMwZmYyZDFkMWYwOTNlZGU0ODFiOTE3N2MzY2VhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBh
cnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9F
UShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVy
bC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
UmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFy
dHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9y
dCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0
aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVl
cnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTERp
ZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3RlZFBhcnRzJiBw
YQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VR
KHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBh
cnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFn
bWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xNzksNyArMTc5LDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy51c2VyLCB1
cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dvcmQsIHVybC5w
YXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3Qo
KSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkp
OworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsK
ICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggMjJjZWNhNTdlNWEwNGJi
ZTBhN2IwNDdlNDliNmNkMTRjOWEwMWViZS4uZmRhYmE5NDcwMzk1ZWE4MDE5ODUwZThmYjhhZWEw
OWFmZTM3YWY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVj
dG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBA
IC04OTgsMTAgKzg5OCwxMCBAQCBURVNUKFdURl9WZWN0b3IsIE1hcEZyb21IYXNoTWFwKQogCiB9
CiAKLVdURjo6T3B0aW9uYWw8aW50PiBldmVuTXVsdGlwbGllZEJ5Rml2ZShpbnQgaW5wdXQpCitz
dGQ6Om9wdGlvbmFsPGludD4gZXZlbk11bHRpcGxpZWRCeUZpdmUoaW50IGlucHV0KQogewogICAg
IGlmIChpbnB1dCAlIDIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGlucHV0ICogNTsKIH0KIApAQCAtOTY1LDcg
Kzk2NSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0aW9uUmV0dXJu
UmVmUHRyKQogT3B0aW9uYWw8UmVmPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVSZWZDb3VudGVk
Rm9yRXZlbihpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
UmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKGlucHV0KTsKIH0KIApAQCAtOTg3LDcgKzk4Nyw3IEBA
IFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0aW9uUmV0dXJuT3B0aW9uYWxS
ZWYpCiBPcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRX
aGVuRGl2aXNpYmxlQnlUaHJlZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoaW5wdXQgJSAyKQogICAgICAgICByZXR1cm4gUmVmUHRyPFJlZkNvdW50ZWRPYmpl
Y3Q+KCk7CiAgICAgcmV0dXJuIFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0PihSZWZDb3VudGVkT2Jq
ZWN0OjpjcmVhdGUoaW5wdXQpKTsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIFRFU1QoV1RGX1ZlY3Rv
ciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsKQogCiAgICAgYXV0byBmdW5jdGlvbiA9
IFtdKGNvbnN0IFN0cmluZyYgdmFsdWUpIC0+IE9wdGlvbmFsPFN0cmluZz4gewogICAgICAgICBp
ZiAodmFsdWUubGVuZ3RoKCkgPCA1KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB2YWx1ZS5j
b252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwogICAgIH07CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3NhbWU8ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rpb24pKSwgdHlw
ZW5hbWUgV1RGOjpWZWN0b3I8U3RyaW5nPj46OnZhbHVlLApAQCAtMTA2Myw3ICsxMDYzLDcgQEAg
VEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhQ29weVZlY3RvclJldHVybk9wdGlvbmFs
Q291bnRlZE9iamVjdCkKICAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3QgQ291bnRlZE9iamVj
dCYgb2JqZWN0KSAtPiBPcHRpb25hbDxDb3VudGVkT2JqZWN0PiB7CiAgICAgICAgIGlmIChvYmpl
Y3QudmFsdWUoKSAlIDIpCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RNYXAo
dmVjdG9yLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxDb3VudGVkT2JqZWN0Pj46
OnZhbHVlLApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFw
TGFtYmRhTW92ZVZlY3RvclJldHVybk9wdGlvbmFsQ291bnRlZE9iamVjdCkKICAgICBhdXRvIGZ1
bmN0aW9uID0gW10oQ291bnRlZE9iamVjdCYmIG9iamVjdCkgLT4gT3B0aW9uYWw8Q291bnRlZE9i
amVjdD4gewogICAgICAgICBpZiAob2JqZWN0LnZhbHVlKCkgJSAyKQogICAgICAgICAgICAgcmV0
dXJuIFdURk1vdmUob2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgUmVmQ291bnRlZE9iamVjdDo6
c190b3RhbFJlZkNvdW50ID0gMDsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIFRFU1QoV1RGX1ZlY3Rv
ciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAgYXV0byBmdW5j
dGlvbiA9IFsmXShpbnQgdmFsdWUpIC0+IE9wdGlvbmFsPFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0
Pj4gewogICAgICAgICBpZiAoISh2YWx1ZSAlIDIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgh
KHZhbHVlICUgMykpCiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+
KCk7CiAgICAgICAgIHJldHVybiBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oUmVmQ291bnRlZE9i
amVjdDo6Y3JlYXRlKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDExNDc5MWIzNmFhOTVm
ZGMxODZkYWI1NmQwOGUxMjlmNTRlNTU2YTUuLjk3NmQ2ODMyNjhmYTQyNWU1NzY3OTkwYTE1NTU2
ZTllYzJiMWNhMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgVEVTVChB
Ym9ydGFibGVUYXNrUXVldWUsIFN5bmNUYXNrcykKICAgICAgICAgRVhQRUNUX1RSVUUocmVzcG9u
c2UpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoZGVzdHJ1Y3RlZFJlc3BvbnNlRmxhZyk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxMDAsIHJlc3BvbnNlLT5mYW5jeUludCk7Ci0gICAgICAgIHJlc3BvbnNl
ID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXNwb25zZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgRVhQRUNUX1RSVUUoZGVzdHJ1Y3RlZFJlc3BvbnNlRmxhZyk7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbJl0oKSB7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0FuaW1hdGlv
bkZyYW1lUmF0ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0
aW9uRnJhbWVSYXRlLmNwcAppbmRleCBlZDhlNmMyYmMwYTlmNWI5MjAyMjBhN2VlOGI0ODg2ZWQ5
YmRjMmMxLi44MDlhOTBhYThhZjk1MjM1ZGVlNGU5Y2RmZjNkY2MyMmJhYjliZGQ4IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRl
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJh
bWVSYXRlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBw
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGUpCiAgICAgQVNTRVJU
X0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2Vy
TW9kZSB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRl
U2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDQ1KSk7CiAgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9
LCA1MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGlu
ZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDI1KSk7CiAKLSAgICBBU1NFUlRfRVEocHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0s
IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hO
b21pbmFsRnJhbWVSYXRlU2V0dGluZyksIFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX0VRKHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9y
dCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE1h
dGNoTm9taW5hbEZyYW1lUmF0ZVNldHRpbmcpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBURVNUKEFu
aW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFMpCkBA
IC0yMDcsNyArMjA3LDcgQEAgVEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1l
c1BlclNlY29uZFRhcmdldDYwRlBTKQogICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgOTAsIHByZWZlcnJlZEZy
YW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25k
KDQ1KSk7CiAgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxp
bmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCA1MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFy
Z2V0NjBGUFNTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoMjUpKTsKIAotICAgIEFT
U0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRz
aWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLCBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9F
UShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmll
d3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNv
bmRUYXJnZXQ2MEZQU1NldHRpbmcpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBURVNUKEFuaW1hdGlv
bkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kRnJvbUludGVydmFsKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNw
cAppbmRleCA2NWVhY2QwMzkyZjdlYzFiZDQwYTQ1MzYzMDRjMmQzMjgxMzE2Y2Q5Li5lNGY3ZTNj
MWNjYjE4MzlmZThlM2Y2YzYwNzc3MjA0MTUwYWYxNTBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFs
UmVxdWVzdFBhcmFtKQogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOjpQYXJhbWV0ZXJzPiBwYXJhbXMgeyB7IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJs
aWNLZXksIDcgfSwgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCAyNTcgfSB9
OwogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0b3JT
ZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb24geyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxh
dGZvcm0sIHRydWUsIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkIH07CiAK
LSAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNl
ciwgeyB9LCBwYXJhbXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFt
cywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJl
ZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7
CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3RE
YXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2Rl
TWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JT
dXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVk
QW5kQ29uZmlndXJlZCk7CkBAIC04NCw3ICs4NCw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBU
ZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1Ob1VWTm9SSykKICAgICBWZWN0
b3I8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1z
IHsgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5
Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0
aW9uIHsgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwgVXNlclZlcmlm
aWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBXVEY6
Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNl
OjpOb25lLCBXVEY6Om51bGxvcHQgfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0ZDo6bnVsbG9wdCwgeyB9
LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6
bnVsbG9wdCB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOwogICAgIGhhc2guYXBwZW5kKFRl
c3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNo
KSk7CiAgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVz
dEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNl
clZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQpOwpAQCAt
MTA3LDcgKzEwNyw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNy
ZWRlbnRpYWxSZXF1ZXN0UGFyYW1VVlJlcXVpcmVkQnV0Tm90U3VwCiAgICAgVmVjdG9yPFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFtcyB7IHsgUHVi
bGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tleUNyZWRlbnRp
YWxUeXBlOjpQdWJsaWNLZXksIDI1NyB9IH07CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhIHNlbGVjdGlvbiB7IEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgZmFsc2UsIFVzZXJWZXJpZmljYXRpb25S
ZXF1aXJlbWVudDo6UmVxdWlyZWQgfTsKIAotICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgV1RGOjpudWxsb3B0LCB7
IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgV1RG
OjpudWxsb3B0IH07CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9u
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQgfTsK
ICAgICBWZWN0b3I8dWludDhfdD4gaGFzaDsKICAgICBoYXNoLmFwcGVuZChUZXN0RGF0YTo6a0Ns
aWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpOwogICAgIGF1
dG8gc2VyaWFsaXplZERhdGEgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoaGFz
aCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHk6OmtOb3RTdXBwb3J0ZWQpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIFRFU1Qo
Q1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1X
aXRoUGluKQogICAgIHBpbi5wcm90b2NvbCA9IHBpbjo6a1Byb3RvY29sVmVyc2lvbjsKICAgICBw
aW4uYXV0aC5hcHBlbmQoVGVzdERhdGE6OmtDdGFwMlBpbkF1dGgsIHNpemVvZihUZXN0RGF0YTo6
a0N0YXAyUGluQXV0aCkpOwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBXVEY6Om51bGxvcHQsIHsgfSwgc2Vs
ZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBXVEY6Om51bGxv
cHQgfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBy
cCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0ZDo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6bnVsbG9wdCB9OwogICAgIFZl
Y3Rvcjx1aW50OF90PiBoYXNoOwogICAgIGhhc2guYXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0
YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSk7CiAgICAgYXV0byBzZXJp
YWxpemVkRGF0YSA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRp
b25zLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQsIHBpbik7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdlLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCmlu
ZGV4IDI1ZDJkNjc3ZmI4ODg2MjI1ZmUzMWRiNDk4ZTVkNzVkNmM2MDBmNDAuLjY0ZmUwMTc0MWEz
ODJiMTc1ZjgyODIzMjMyOWMzZmFlZmI0Njg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCkBAIC0xMTIs
MTEgKzExMiwxMSBAQCBURVNUKFdlYkNvcmUsIFBhcnNlZFJlcXVlc3RSYW5nZSkKICAgICAgICAg
ImJ5dGVzPTEtOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5IgogICAgIH07CiAgICAgZm9yIChjb25z
dCBhdXRvJiBpbnB1dCA6IGZhaWx1cmVDYXNlcykKLSAgICAgICAgRVhQRUNUX0VRKFdURjo6bnVs
bG9wdCwgUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCkpOworICAgICAgICBFWFBFQ1Rf
RVEoc3RkOjpudWxsb3B0LCBQYXJzZWRSZXF1ZXN0UmFuZ2U6OnBhcnNlKGlucHV0KSk7CiAKICAg
ICBhdXRvIGNvbXBhcmUgPSBbXSAoY29uc3QgU3RyaW5nJiBpbnB1dCwgT3B0aW9uYWw8c2l6ZV90
PiBiZWdpbiwgT3B0aW9uYWw8c2l6ZV90PiBlbmQpIHsKICAgICAgICAgYXV0byByYW5nZSA9IFBh
cnNlZFJlcXVlc3RSYW5nZTo6cGFyc2UoaW5wdXQpOwotICAgICAgICBFWFBFQ1RfTkUoV1RGOjpu
dWxsb3B0LCByYW5nZSk7CisgICAgICAgIEVYUEVDVF9ORShzdGQ6Om51bGxvcHQsIHJhbmdlKTsK
ICAgICAgICAgCiAgICAgfTsKICAgICBjb21wYXJlKCJieXRlcz0xLTEiLCAxLCAxKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVNYXAuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKaW5kZXggNGJi
NDJlZWFkYmM0NGZhODc4NGVkYzJkODk0NGJjNTIxNjY3ZmQzMy4uNDgxOGYzZjgxM2YzMmUxYjVj
ZWNjY2YwODA5Nzg5OGZmOGFlODg3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0K
ICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmxhZ3M7IH0K
ICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0dXJuIHsgUGxh
dGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KLSAgICBPcHRpb25hbDxCeXRlUmFuZ2U+
IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9w
dGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBmaW5hbCB7IH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
clRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBlMjYxNzkzMzQyNTIyNDNiYTVmMTQxODBmNzIy
NGViNzc1NGRjYTFmLi5lYjIxYmNkYmU3YWIwOGVkNmZlZGU0MTdlNGZmYWFlNjUyZTY1MWIzIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4
dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgdm9pZCBjaGVj
a1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGlu
ZywgY29ucwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBh
cnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBv
cnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
dGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1
ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50
SWRlbnRpZmllcigpKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29u
c3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5w
b3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1
cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1
cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgp
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50
aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCBhNTk4ZDU0YTI3NTI5NThjNDJl
NGUyYjc5ZTUzMzdjNTdiMTc0YjQ2Li4wZTBlNDA0NzY2ODViNjkyNzMzMDlhNTc4NjhkN2U2YWZk
Mjk5ZWZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtNzksNyArNzksNyBAQCBURVNUKERp
c3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAgICAgICAgIGF1dG8g
cmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9FUShyZXN1bHQubnVt
YmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgIEVYUEVDVF9FUShy
ZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OlJlcGxheWVkQWxsSXRl
bXMpOwotICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQubWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciwgc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAKQEAgLTkw
LDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNF
RF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBl
LCB1aW50OF90KikgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBJdGVtVHlw
ZTo6RmlsbFBhdGgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKQEAgLTEzNCw4ICsxMzQsOCBAQCBURVNUKERp
c3BsYXlMaXN0VGVzdHMsIE91dE9mTGluZUl0ZW1EZWNvZGluZ0ZhaWx1cmUpCiAgICAgUmVwbGF5
ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBzaGFsbG93Q29weSB9OwogICAgIGF1dG8gcmVzdWx0ID0g
cmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgRVhQRUNUX0dUKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVh
ZCwgMFUpOwotICAgIEVYUEVDVF9FUShyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIs
IFdURjo6bnVsbG9wdCk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1bHQubmV4dERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXIsIHN0ZDo6bnVsbG9wdCk7CisgICAgRVhQRUNUX0VRKHJlc3Vs
dC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQpOwogICAgIEVY
UEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OkludmFs
aWRJdGVtT3JFeHRlbnQpOwogfQogCkBAIC0xNTgsOCArMTU4LDggQEAgVEVTVChEaXNwbGF5TGlz
dFRlc3RzLCBJbmxpbmVJdGVtVmFsaWRhdGlvbkZhaWx1cmUpCiAgICAgICAgIFJlcGxheWVyIHJl
cGxheWVyIHsgY29udGV4dCwgbGlzdCB9OwogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcGxheWVy
LnJlcGxheSgpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCAw
VSk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIs
IFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQubWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3Vs
dC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgRVhQ
RUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6Om51bGxv
cHQpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nLCBTdG9wUmVw
bGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVz
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRy
YWNrZXJUZXN0Lm1tCmluZGV4IDc1N2VjMjQyNTg1MTFhN2Y5MTIxMWFhY2NhMTQ1MWYzYWJkZTJi
MTEuLjA5MDVjN2UwMDE4ZWQ0OGJlNzA0OGU0MTIwMTBlNjQ3MDkyZWNkOTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJU
ZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRh
YmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC00NCw3ICs0NCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2Vy
LCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogICAgIFN0cmluZyBkYXRhYmFzZUZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eURhdGFiYXNlIiwgaGFu
ZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgIGF1dG8gZmls
ZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoKS52YWx1ZU9yKDAp
OworICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShkYXRhYmFzZUZpbGVQ
YXRoKS52YWx1ZV9vcigwKTsKICAgICBFWFBFQ1RfRVEoMFUsIGZpbGVTaXplKTsKIAogICAgIEVY
UEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShkYXRh
YmFzZUZpbGVQYXRoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NoYWxsZW5nZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCmluZGV4IGJkZWFjYjQ0Yzg2ZTYzOWE5NGE2MDg4NDJlYWIyN2Y2
Y2E4ZjBiN2IuLjRkN2IwNDM4NGI3NTA1MmYwYjhlYjJmODUxNTVmNTg2OTM2NWQ2ZmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1t
CkBAIC01NTEsNyArNTUxLDcgQEAgVEVTVChXZWJLaXQsIEZhc3RTZXJ2ZXJUcnVzdCkKICNlbHNl
CiAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NM
KiBzc2wpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7Ci0gICAgfSwgV1RGOjpudWxsb3B0
LCAyKTsKKyAgICB9LCBzdGQ6Om51bGxvcHQsIDIpOwogI2VuZGlmCiAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ICAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0x
Lm1tCmluZGV4IDdjNGQxZTU0ZGI3NWM5Mjg2MTA4NDYxMzU4MTc2ZDg1NGY3MmMzM2EuLjYxMTFm
NmIzNjdhYzM2NmEzNTJkY2Y2NTY5ZDNiOTJiODA0YjUxNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRs
ZXItMS5tbQpAQCAtMTE1Miw4ICsxMTUyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBMb2Fk
c0Zyb21OZXR3b3JrKQogICAgIH1dOwogICAgIAogICAgIGF1dG8gcnVuVGVzdCA9IFsmXSB7Ci0g
ICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxsb3B0OwotICAgICAgICB3ZWJTb2NrZXRTdWNj
ZXNzID0gV1RGOjpudWxsb3B0OworICAgICAgICBsb2FkU3VjY2VzcyA9IHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgd2ViU29ja2V0U3VjY2VzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZG9uZSA9
IGZhbHNlOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hv
c3QxL21haW4uaHRtbCJdXV07CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBURVNUKFVSTFNjaGVtZUhh
bmRsZXIsIEFsbG93ZWROZXR3b3JrSG9zdHNSZWRpcmVjdCkKICAgICB9XTsKIAogICAgIGF1dG8g
cnVuVGVzdCA9IFsmXSB7Ci0gICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBsb2FkU3VjY2VzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZG9uZSA9IGZhbHNlOwog
ICAgICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMTYw
Miw4ICsxNjAyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAKICAgICAgICAg
YXV0byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0cmluZyhiZWdp
biArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0ZXMubGVuZ3Ro
KCkpOwogICAgICAgICBhdXRvIHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1
YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRvIHJhbmdlQmVn
aW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlT3IoMCk7
Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9E
YXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1
ZU9yKDApOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlX29yKDApOworICAgICAgICBhdXRvIHJhbmdlRW5kID0g
cmFuZ2VFbmRTdHJpbmcgPT0gIioiID8gW3ZpZGVvRGF0YSBsZW5ndGhdIDogcGFyc2VJbnRlZ2Vy
PHVpbnQ2NF90PihyYW5nZUVuZFN0cmluZykudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byBy
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3RhdHVzQ29kZToy
MDYgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7CiAgICAgICAgICAgICBA
IkNvbnRlbnQtUmFuZ2UiIDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJieXRlcyAlbGx1
LSVsbHUvJWx1IiwgcmFuZ2VCZWdpbiwgcmFuZ2VFbmQsICh1bnNpZ25lZCBsb25nKVt2aWRlb0Rh
dGEgbGVuZ3RoXV0sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDI5MzIxNDBkNjNmNzFkYzA3NDkxMzZl
NDcyMzkwM2YzYWRiM2ZiMTAuLjY2NGQ5NTczYWJkZTkyMDcxM2ZkOWRmMGJlNTdlZTU2MDQzYjE5
NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgVEVTVChXZWJwYWdlUHJl
ZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQogCiAg
ICAgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIwLCAyNTYpOwog
Ci0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVk
QXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBOU1VSTFJlcXVlc3QgKmpzUGxheVJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJqcy1wbGF5LXdpdGgtY29udHJvbHMiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAImxvYWRlZCJdOwpAQCAtMzgzLDcgKzM4Myw3IEBAIFRFU1QoV2VicGFnZVByZWZl
cmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxheSkKICAgICBB
U1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NIYXNBdWRpbyk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZs
YWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQpOwogCi0gICAg
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3Bs
YXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIg
YmFzZVVSTDpuaWxdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICphdXRvcGxheVJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJhdXRvcGxheS13aXRoLWNvbnRyb2xzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC0zOTgsNyArMzk4LDcg
QEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZl
bnRlZEF1dG9wbGF5KQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFn
cyAmIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRfVFJVRSgqcmVj
ZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5YmFja1dh
c1ByZXZlbnRlZCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7
CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVlc3QgKm5v
QXV0b3BsYXlSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibm8tYXV0b3BsYXktd2l0aC1jb250cm9scyIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwpAQCAtNDA3LDkgKzQwNyw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJz
aXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxheSkKICAgICBbd2ViVmlldyBtb3Vz
ZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50IHNpbXVsYXRlUHJlc3N1cmU6Tk9dOwog
ICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50XTsKICAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXllZCJdOwotICAgIEFTU0VSVF9UUlVFKHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51bGxvcHQpOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxh
eUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6
bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOwog
CiAgICAgW2RlbGVnYXRlIHNldEF1dG9wbGF5UG9saWN5Rm9yVVJMOl4oTlNVUkwgKikgewpAQCAt
NDQ2LDcgKzQ0Niw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQ
bGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgyMCwgNTgw
KTsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBv
bGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRB
dXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAgICAg
QVNTRVJUX0ZBTFNFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIF9XS0F1dG9wbGF5RXZl
bnRGbGFnc01lZGlhSXNNYWluQ29udGVudCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQg
PSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0
OwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtcGxheS1idXR0b24iIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTUwMiw3ICs1MDIs
NyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhv
dXRJbnRlcmZlcmVuY2UpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
IAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZl
ZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgTlNVUkxSZXF1ZXN0ICpqc1BsYXlS
ZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAianMtYXV0b3BsYXktYXVkaW8iIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0
b3BsYXlFdmVudChfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RUaHJlc2hvbGRX
aXRob3V0VXNlckludGVyZmVyZW5jZSk7CkBAIC01MjYsMjAgKzUyNiwyMCBAQCBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdpdGhQbGF5aW5n
KQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICByZWNlaXZl
ZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50
ID0gc3RkOjpudWxsb3B0OwogICAgIE5TVVJMUmVxdWVzdCAqanNQbGF5UmVxdWVzdCA9IFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAImpzLXBsYXktd2l0aC1jb250cm9scyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OmpzUGxheVJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxh
eWluZyJdOwotICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51
bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51
bGxvcHQpOwogCiAgICAgV0tQYWdlU2V0TXV0ZWQoW3dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSwg
X1dLTWVkaWFBdWRpb011dGVkKTsKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3BsYXlFdmVudChf
V0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjayk7CiAgICAgQVNTRVJU
X1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdz
SGFzQXVkaW8pOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0Owor
ICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
InBsYXlpbmciXTsKLSAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZlbnQgPT0gV1RG
OjpudWxsb3B0KTsKKyAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZlbnQgPT0gc3Rk
OjpudWxsb3B0KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25zdCBOU1BvaW50IG11dGVC
dXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoODAsIDI1Nik7CkBAIC01NTIsMTAgKzU1Miwx
MCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVy
ZW5jZVdpdGhQbGF5aW5nKQogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1
dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBBU1NFUlRfVFJV
RSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNB
dWRpbyk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OmpzUGxheVJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxh
eWluZyJdOwotICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51
bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51
bGxvcHQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNvbnN0IE5TUG9pbnQgcGxheUJ1dHRv
bkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgyMCwgMjU2KTsKQEAgLTc2NSw3ICs3NjUsNyBAQCBU
RVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykKICAgICBbd2Vi
VmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsKIAogICAg
IC8vIEEgc2NyaXB0IHNob3VsZCBubyBsb25nZXIgYmUgYWJsZSB0byBhdXRvcGxheSBtZWRpYS4K
LSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRB
dXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJwbGF5VmlkZW8oKSJdOwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRv
cGxheUV2ZW50KF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5aW5nKTsKIH0K
QEAgLTgyOCw3ICs4MjgsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGlj
aWVzQXV0b3BsYXlRdWlya3MpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90
LXBsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNlIl07CiAKLSAg
ICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRv
cGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAi
IiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoQXVkaW9JbkZy
YW1lID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2staW4taWZyYW1lIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC04
NDYsNyArODQ2LDcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc0F1
dG9wbGF5UXVpcmtzKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5
Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJvbi1wYXVzZSJdOwogCi0gICAgcmVj
ZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlF
dmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFz
ZVVSTDpuaWxdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0VGhhdEluaGVyaXRzR2VzdHVy
ZSA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1kb2N1bWVudCIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl1dOwpAQCAtODc0LDcgKzg3NCw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJz
aXRlUG9saWNpZXNQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JRdWlya3MpCiAgICAgV0tQcmVm
ZXJlbmNlc1NldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2VzLmdldCgpLCB0cnVl
KTsKICAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cChbd2Vi
VmlldyBfcGFnZUZvclRlc3RpbmddKSwgcHJlZmVyZW5jZXMuZ2V0KCkpOwogCi0gICAgcmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVu
dCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhNdWx0aXBs
ZU1lZGlhRWxlbWVudHMgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1l
bGVtZW50cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwogCkBAIC05MDMsNyArOTAzLDcgQEAgVEVTVChXZWJwYWdlUHJlZmVy
ZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlvclF1aXJrcykK
IAogICAgIC8vIE5vdyBsZXQncyB0ZXN0IHRoaXMgd2l0aG91dCB0aGUgcXVpcmsuCiAgICAgW3dl
YlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKLSAgICByZWNlaXZlZEF1dG9w
bGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgW2RlbGVnYXRlIHNldEFsbG93ZWRBdXRvcGxheVF1aXJrc0ZvclVS
TDpeX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmsoTlNVUkwgKnVybCkgewogICAgICAgICByZXR1cm4g
MDsKQEAgLTk1MSw3ICs5NTEsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBv
bGljaWVzQXV0b3BsYXlRdWlya3NBc3luY1BvbGljeURlbGVnYXRlKQogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3Nh
Z2U6QCJvbi1wYXVzZSJdOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxs
b3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOwogCiAgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0V2l0aEF1ZGlvSW5GcmFtZSA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LWNoZWNrLWlu
LWlmcmFtZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4
IGI5MjI5NzdlMDA0ZDNmOGYwZjVhMWY0OWRmYmYyMDZkNTNkZWY5OTcuLjlhMzE4MzM5MTU4YWFl
OWIzNWFlYWY1Y2RmN2I5MjljMjljNzZjNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KQEAgLTE1MjQsOSArMTUyNCw5IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01pbmltdW4pCiAgICAgRVhQRUNU
X0VRKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zWzBdLnR5cGUsIFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkpOwogICAgIEVYUEVDVF9FUShyZXN1bHQucHViS2V5Q3Jl
ZFBhcmFtc1swXS5hbGcsIC03KTsKIAotICAgIEVYUEVDVF9FUShyZXN1bHQudGltZW91dCwgV1RG
OjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnRpbWVvdXQsIHN0ZDo6bnVsbG9wdCk7
CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgpLCAwbHUpOwot
ICAgIEVYUEVDVF9FUShyZXN1bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbiwgV1RGOjpudWxsb3B0
KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24sIHN0ZDo6bnVs
bG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdHRlc3RhdGlvbiwgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0LmV4dGVuc2lv
bnMtPmFwcGlkLmlzTnVsbCgpKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4dGVuc2lvbnMtPmdv
b2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCwgZmFsc2UpOwpAQCAtMTU3Nyw3ICsxNTc3LDcgQEAgVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zTWF4aW11bURlZmF1bHQpCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlh
bHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwogICAgIEVYUEVDVF9F
UShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCksIGlk
ZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogCi0gICAgRVhQRUNUX0VRKHJlc3Vs
dC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5hdXRoZW50aWNhdG9yQXR0YWNobWVudCwgV1RGOjpu
dWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24tPmF1
dGhlbnRpY2F0b3JBdHRhY2htZW50LCBzdGQ6Om51bGxvcHQpOwogICAgIEVYUEVDVF9FUShyZXN1
bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbi0+cmVxdWlyZVJlc2lkZW50S2V5LCBmYWxzZSk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0
aW9uLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCk7CiAKQEAgLTE3OTgs
NyArMTc5OCw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zTWluaW11bikKICAgICBhdXRvIG9wdGlvbnMgPSBhZG9wdE5TKFtb
X1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0XSk7CiAgICAg
YXV0byByZXN1bHQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVx
dWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zLmdldCgpXTsKIAotICAgIEVYUEVDVF9FUShy
ZXN1bHQudGltZW91dCwgV1RGOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnRpbWVv
dXQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0LnJwSWQuaXNOdWxsKCkp
OwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFscy5zaXplKCksIDBsdSk7CiAg
ICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyVmVyaWZpY2F0aW9uLCBVc2VyVmVyaWZpY2F0aW9uUmVx
dWlyZW1lbnQ6OlByZWZlcnJlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKaW5kZXgg
ODA0YTRmMjEyZTRlMzk3OWQxMGM4MGQ4MWI2NGFiZDA0OTQ2YTg0My4uNmY2ZWRkMTFmNmY4ZTVl
M2Y5Y2Y3NzZlYjEzYWNlNDI5OWM4Yzc3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNw
cApAQCAtMTE1LDE0ICsxMTUsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBsb2FkVVJJQW5kV2Fp
dEZvckF1dG9QbGF5ZWQoY29uc3QgY2hhciogdXJpLCBXZWJLaXRBdXRvcGxheVBvbGljeSBwb2xp
Y3kpCiAgICAgewotICAgICAgICBtX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fYXV0b3BsYXllZCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV93ZWJzaXRlUG9saWNpZXMg
PSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9saWNpZXMoImF1
dG9wbGF5IiwgcG9saWN5LCBudWxscHRyKSk7CiAgICAgICAgIG1fcG9saWN5RGVjaXNpb25SZXNw
b25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CiAKICAgICAgICAgbG9hZFVS
SSh1cmkpOwogICAgICAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBtZXNzYWdlcyBj
b21lIGJhY2sgZnJvbSB0aGUgdGVzdCBIVE1MLgogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7Ci0gICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQudmFsdWVPcihmYWxzZSk7Cisg
ICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQudmFsdWVfb3IoZmFsc2UpOwogICAgIH0KIAogICAg
IGJvb2wgcnVuSlNBbmRXYWl0Rm9yQXV0b1BsYXllZChjb25zdCBjaGFyKiBzY3JpcHQpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwCmluZGV4IGZmMDQzZGI2M2RmNmE1YmE5YWRiNzhhMDY5ZTY2YjBhNzBlOTM5NDQu
LjdkMGNhZTNkYTMzOGMxY2IyMTUyYzcwMzA2OWYyNGM2ZmQyYmIzM2MgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIu
Y3BwCkBAIC0xMDgsNSArMTA4LDUgQEAgQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklG
b3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYktpdFRlc3RTZXJ2
ZXI6OnBvcnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2Jhc2VVUkwucG9ydCgpLnZhbHVlT3Io
MCk7CisgICAgcmV0dXJuIG1fYmFzZVVSTC5wb3J0KCkudmFsdWVfb3IoMCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429845</attachid>
            <date>2021-05-26 22:26:00 -0700</date>
            <delta_ts>2021-05-27 09:29:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226280-20210526222559.patch</filename>
            <type>text/plain</type>
            <size>2524075</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTQ4YjU0NGY4MGU5Njc1MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlLi4wYTg5MTQ2OGIyYzcyMzM5
MmQ0YjY3MmZlNjQxOWQyNDNhZjU2Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhl
IHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB5YXJyL1lh
cnJTeW50YXhDaGVja2VyLmNwcDogU2luY2UgdGhlIHN0eWxlIGNoZWNrZXIgY29tcGxhaW5lZCBh
Ym91dCB0aGlzIGZpbGUsCisgICAgICAgIHR3ZWFrZWQgc3R5bGUgdG8gbWFrZSBpdCBoYXBweSBh
ZnRlciB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZSwgYW5kCisgICAgICAg
IGFsc28gaGFuZC11cGRhdGVkIE9wdGlvbmFsIHRvIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3
ZSB3ZXJlIHRvdWNoaW5nIGl0LgorCiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNp
emVfdCkgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzQyZGYyN2ZjMjM5NWMwYjQ5NTBmYjhhNmYzNDVkNDE4
ODkzNDQ0NS4uMGEwNWY1Mjg0MTUwNjhiOTBmNWViMDczNGFlYjlkZDdkZDA5YzRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5
IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQg
dGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB3dGYv
T3B0aW9uYWwuaDogUmVtb3ZlIFdURjo6bnVsbG9wdF90IGFuZCBXVEY6Om1ha2VPcHRpb25hbC4K
KworICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVy
czo6bWFwSG9zdE5hbWUpOiBDb252ZXJ0IGZyb20gbnVsbG9wdCB0byBzdGQ6Om51bGxvcHQuCisK
IDIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBkNWEzNDUxMWFhOWFlZjhiMzg5ZWIxNzNhMDU4OWY3YmYyM2NlZDAuLjZjYmNk
MGI2NTVhNWY5ZDE2YWNjNzMxZmQxYTVlNTQ3OGIzY2RhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3Rl
YWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJl
bmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oOiBTaW5jZSBzdHlsZSBjaGVja2Vy
IGNvbXBsYWluZWQKKyAgICAgICAgYWJvdXQgdGhlIG5hbWVzIG9mIHNvbWUgYXJndW1lbnRzLCBm
aXhlZCB0aGVtLCBhbmQgYWxzbyBoYW5kLXVwZGF0ZWQgT3B0aW9uYWwgdG8KKyAgICAgICAgc3Rk
OjpvcHRpb25hbCBhcyBsb25nIGFzIHdlIHdlcmUgdG91Y2hpbmcgaXQuCisKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDogU2luY2Ugc3R5bGUgY2hlY2tlciBjb21wbGFpbmVkIGFi
b3V0IHRoZSBtaXggb2YKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYW5kIGlubGluZWQgZnVuY3Rp
b25zLCBtb3ZlZCB0aGVtIG91dCBvZiBsaW5lLCBhbmQKKyAgICAgICAgYWxzbyBoYW5kLXVwZGF0
ZWQgT3B0aW9uYWwgdG8gc3RkOjpvcHRpb25hbCBhcyBsb25nIGFzIHdlIHdlcmUgdG91Y2hpbmcg
aXQuCisgICAgICAgIEFsc28gcmVtb3ZlZCBpczxFbXB0eUZyYW1lTG9hZGVyQ2xpZW50PigpLgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50Lmg6IERpdHRvLgorCiAyMDIx
LTA1LTI2ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBs
b2dnaW5nIGZvciB3aGVuIFNRTGl0ZURhdGFiYXNlIGZhaWxzIHRvIGNsb3NlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwppbmRleCA0NGJiZjZmNWNlYjA3YWM4OTkwODIzOWQ2NWU4ZGExNzZjMmIxMzI1Li5iM2Ew
NTdkMjg4NmI4YzU3ZWIzMjA2M2ZiNDVhMmRmZGZiZjUyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVj
dGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2Nl
cHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjYg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBMZXZlcmFnZSB0aGUg
bmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MTI1
YTQ0ZDM4OGY1YmIyNjM5ZWIxMGMwMTAyNDMxYjVjNTA1ZWEwLi44NjFlYmJjOWNkZWZiNzFmMzdj
YzEzMDZmZDFkOTZiZTVkYjU2ZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1
LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBOZXh0IHN0ZXAg
dG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdU
Rjo6T3B0aW9uYWwgdHlwZWRlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBk
by13ZWJjb3JlLXJlbmFtZS4KKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXpl
X3QpIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDdhNWExY2FlNGMxMWI4NjUw
M2RmNjFjMGE4OTM0Zjk5MGYxNTBjNDIuLjc4ZTgzNjUwMmU3YjIyZDQ4MThiNWY2MDk2OThhMWI4
MzRmODYyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUt
MjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3RlcCB0
b3dhcmQgdXNpbmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RG
OjpPcHRpb25hbCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKTogQWNjZXB0IHRoZSByZW5hbWlu
ZyBkb25lIGJ5IGRvLXdlYmNvcmUtcmVuYW1lLgorCiAyMDIxLTA1LTI0ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBwZW5k
TGl0ZXJhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDE5Nzg2MTk2MzAyNWRkODUy
ZWUwMmRmMzIyYjIzMmUwMjhmY2UwODkuLmEzNTU1Y2UzZTUzODkwMGUxYjVlMTA0NTg5MThjNGJl
MTJkZWE3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4
dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhy
b3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5nIGRv
bmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjUgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlydHVhbGl6ZSBHcmFwaGljc0NvbnRl
eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBmOTZhNmM0ZDlkZjRiNDBjZGNiZWI3
NjVmNzdlNjRlODAzYWJlNjQ4Li4yOWRlOGMwM2M3ZGM4YmZlOWU0NWYzYWFkZDYxZjViMjkyNWZi
YjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEt
MDUtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3Rl
cCB0b3dhcmQgdXNpbmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2gg
V1RGOjpPcHRpb25hbCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogQWNjZXB0IHRoZSByZW5hbWluZyBkb25lIGJ5
IGRvLXdlYmNvcmUtcmVuYW1lLgorCiAyMDIxLTA1LTI1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFZpcnR1YWxpemUgR3JhcGhpY3NDb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2
ZXIuY3BwCmluZGV4IDA1YTFmZWQ2NTc2MDhkM2ZjNTFkOWUzNTM4YTZmMzg1MDgwYzg5ZWIuLjYw
ZWQyMjE0MjYzODU3MDZiYTExMjVmMWI5MGViNGE4NDcyZDM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0z
NSw2ICszNSw2IEBAIHVpbnQxNl90IEpTUmVtb3RlSW5zcGVjdG9yU2VydmVyU3RhcnQoY29uc3Qg
Y2hhciogYWRkcmVzcywgdWludDE2X3QgcG9ydCkKICAgICBpZiAoIXNlcnZlci5zdGFydChhZGRy
ZXNzLCBwb3J0KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gc2VydmVyLmdldFBv
cnQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBzZXJ2ZXIuZ2V0UG9ydCgpLnZhbHVlX29yKDAp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvZ2xpYi9KU0NDbGFzcy5jcHAKaW5kZXggYmU1N2EyZTFiN2YwNzQ4OTg2ODA5
ZjNiNTc3ZTEwMGFkYzU5ZTA1Zi4uYTRlMWI1NDJiZmZjNDk2N2VhZTc5ZDk0ODlkMmM4NDA3MGQz
OTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCkBA
IC02OTgsNyArNjk4LDcgQEAgSlNDVmFsdWUqIGpzY19jbGFzc19hZGRfY29uc3RydWN0b3JfdmFy
aWFkaWMoSlNDQ2xhc3MqIGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW0KICAgICBpZiAoIW5hbWUp
CiAgICAgICAgIG5hbWUgPSBwcml2LT5uYW1lLmRhdGEoKTsKIAotICAgIHJldHVybiBqc2NDbGFz
c0NyZWF0ZUNvbnN0cnVjdG9yKGpzY0NsYXNzLCBuYW1lID8gbmFtZSA6IHByaXYtPm5hbWUuZGF0
YSgpLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnksIHJldHVyblR5cGUsIFdURjo6
bnVsbG9wdCkubGVha1JlZigpOworICAgIHJldHVybiBqc2NDbGFzc0NyZWF0ZUNvbnN0cnVjdG9y
KGpzY0NsYXNzLCBuYW1lID8gbmFtZSA6IHByaXYtPm5hbWUuZGF0YSgpLCBjYWxsYmFjaywgdXNl
ckRhdGEsIGRlc3Ryb3lOb3RpZnksIHJldHVyblR5cGUsIHN0ZDo6bnVsbG9wdCkubGVha1JlZigp
OwogfQogCiBzdGF0aWMgdm9pZCBqc2NDbGFzc0FkZE1ldGhvZChKU0NDbGFzcyoganNjQ2xhc3Ms
IGNvbnN0IGNoYXIqIG5hbWUsIEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEs
IEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIE9wdGlvbmFs
PFZlY3RvcjxHVHlwZT4+JiYgcGFyYW1ldGVycykKQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIGpz
Y19jbGFzc19hZGRfbWV0aG9kX3ZhcmlhZGljKEpTQ0NsYXNzKiBqc2NDbGFzcywgY29uc3QgY2hh
ciogbmFtZSwgR0NhbGxiYQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY2FsbGJhY2spOwogICAgIGdf
cmV0dXJuX2lmX2ZhaWwoanNjQ2xhc3MtPnByaXYtPmNvbnRleHQpOwogCi0gICAganNjQ2xhc3NB
ZGRNZXRob2QoanNjQ2xhc3MsIG5hbWUsIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlm
eSwgcmV0dXJuVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICBqc2NDbGFzc0FkZE1ldGhvZChqc2ND
bGFzcywgbmFtZSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1cm5UeXBl
LCBzdGQ6Om51bGxvcHQpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2ds
aWIvSlNDVmFsdWUuY3BwCmluZGV4IDE5MGNiODg1ZmM0YTU4ZDIxZTgxMzI0Njk0YjVhNjBkZWE2
ZDhiZjMuLjM1OTFiYjc5MjQ0NDUyNTFjNTkyN2VhY2IyZmUyODg5MmFmYzUwNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcApAQCAtMTI2Nyw3ICsxMjY3
LDcgQEAgSlNDVmFsdWUqIGpzY192YWx1ZV9uZXdfZnVuY3Rpb25fdmFyaWFkaWMoSlNDQ29udGV4
dCogY29udGV4dCwgY29uc3QgY2hhciogbmFtZSwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChK
U0NfSVNfQ09OVEVYVChjb250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoY2FsbGJhY2ssIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIGpzY1ZhbHVlRnVuY3Rpb25DcmVh
dGUoY29udGV4dCwgbmFtZSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1
cm5UeXBlLCBXVEY6Om51bGxvcHQpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4ganNjVmFsdWVGdW5j
dGlvbkNyZWF0ZShjb250ZXh0LCBuYW1lLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3Rp
ZnksIHJldHVyblR5cGUsIHN0ZDo6bnVsbG9wdCkubGVha1JlZigpOwogfQogCiAvKioKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNf
dGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9i
dWlsdGluc190ZW1wbGF0ZXMucHkKaW5kZXggNzRjOTY5NGYxNWJhOTQxODE3MDY2NmMyNTE3MjYy
OTc3OWRmZDc5NC4uNDk4YTI4ZTJhNDgxZTM0NDkyNDRhMDdhYjQwMmNmZTRiNGEwOWZmNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGlu
c190ZW1wbGF0ZXMucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWls
dGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTg1LDcgKzg1LDcgQEAgJHttYWNyb1ByZWZp
eH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dF
TkVSQVRPUikKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5j
dGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAg
ICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCkt
Pmxpbmsodm0sIG51bGxwdHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291
cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0
dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBudWxscHRyLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgp
LCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1By
ZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3Vu
ZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAtOTYsNyArOTYsNyBAQCAke21hY3JvUHJl
Zml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjZGVm
aW5lIERFRklORV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVy
cmlkZGVuTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1
aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxs
cHRyLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBXVEY6Om51
bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwg
dm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0
LCBzXyMjY29kZU5hbWUjI0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hf
JHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1
bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEwOCw3ICsxMDgsNyBAQCAke21hY3Jv
UHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJ
Tl9HRU5FUkFUT1IpCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRv
cihKU0M6OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0g
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1
cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5z
KCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1Nv
dXJjZSgpLCBXVEY6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICBy
ZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0
aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUj
I1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0K
ICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVS
QVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEyMCw3ICsxMjAsNyBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5F
UkFUT1IpCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6
OlZNJiB2bSkgXFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xp
ZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29k
ZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgp
LCBXVEY6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4g
Y2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCku
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJj
ZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggZTUxNzU3ZTliOGZj
NjQyODc4MjdjMTZkMDJkMjFjYzIxOGZiMTMyNi4uODE1ZGNmODczNzRhYTNiMzU3OTg5ZGY2N2Zl
NzJiYTk0MGIzM2E1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRBbHJlYWR5
RGlzYXNzZW1ibGUoKSB7IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0KIAogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNsZWFyUHJvZmlsZVN0YXRpc3RpY3MoKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3RpY3MoT3B0
aW9uYWw8UHJpbnRTdHJlYW0qPiA9IFdURjo6bnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE9wdGlvbmFsPFByaW50U3RyZWFt
Kj4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAg
ICB2b2lkIGFkZE1haW5UaHJlYWRGaW5hbGl6YXRpb25UYXNrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk02NC5oCmluZGV4IDRmZWQ1ZGU4MzJiMGNhNThiZGZiOWQzYmEwMDcyOWJiZjIzM2Rl
MTkuLjU3ZDViOTRmN2I4NTI0ZDE5MTIzNmMxZWRlZTlkOWY4NWRlMGE3ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5o
CkBAIC00MDU3LDcgKzQwNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUG9zaXRp
dmVPclplcm87CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggZTQ0OWVmNzhjZDk3
NzgyZjIwMWY4MWVkNzgxOGE1MmI1Y2UwMjE0Ni4uNDhlOTUwZTljOGU0MWNkY2JkNmY1NDczZGY2
M2Y0NThhNWE5MTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaApAQCAtMzEyMSw3ICszMTIxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFBvc2l0aXZlT3JaZXJvOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKaW5kZXggZWUzM2My
MTQ5N2I5NTJjOWQyMzZkYjRkMzU3NmU5YmE4OTYzYzY1YS4uYzI3ZmI0YzEzNGExNDZlZThiZTgx
OTk0ZDJjMTJhOWUzMjYzNDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ2hlY2tTcGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVj
a1NwZWNpYWwuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IENoZWNr
U3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKIHsKICAgICBpZiAoT3B0
aW9uYWw8dW5zaWduZWQ+IGJyYW5jaERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91bGRUcnlB
bGlhc2luZ0RlZigpKQogICAgICAgICByZXR1cm4gKmJyYW5jaERlZiArIDE7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQ2FsbEhlbHBl
cnM6Okp1bXAgQ2hlY2tTcGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMm
IGppdCwgR2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29tbW9uLmNwcAppbmRleCBlODUzYTIwMmMyNDgwMjJhNzZhN2UwMzQzY2E0MDAzNjk3Yjg2MDk1
Li5iMGViYTVhNDEzMjBkZTg3NjgzODdjNDg5MTg3YmY3M2RhZTNlMmJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgT3B0aW9uYWw8R1BSUmVn
PiBwaW5uZWRFeHRlbmRlZE9mZnNldEFkZHJSZWdpc3RlcigpCiAjaWYgQ1BVKEFSTTY0KQogICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICNlbGlmIENQVShYODZf
NjQpCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
I2Vsc2UKICNlcnJvciBVbmhhbmRsZWQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDg3ZWZiOTc2YzBlYmFjMWE0OTFl
MTcxMjI3YTZhYzhiMTNjMTE4OTUuLmI5N2IyODUwNzJmNTNlN2E1ZDQ5NWVkMDE2NDI3NjNjNDRi
MGYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC01
MDEsMTIgKzUwMSwxMiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIE9wdGlvbmFs
PHVuc2lnbmVkPiBzY2FsZUZvclNobChWYWx1ZSogc2hsLCBJbnQgb2Zmc2V0LCBPcHRpb25hbDxX
aWR0aD4gd2lkdGggPSBXVEY6Om51bGxvcHQpCisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxl
Rm9yU2hsKFZhbHVlKiBzaGwsIEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0
ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChzaGwtPm9wY29kZSgpICE9IFNobCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBpZiAoIXNobC0+Y2hpbGQoMSktPmhhc0ludDMyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgdW5zaWduZWQgbG9nU2NhbGUgPSBzaGwtPmNoaWxkKDEpLT5hc0ludDMyKCk7
CiAgICAgICAgIGlmIChzaGwtPnR5cGUoKSA9PSBJbnQzMikKICAgICAgICAgICAgIGxvZ1NjYWxl
ICY9IDMxOwpAQCAtNTE2LDEwICs1MTYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdG8gc2ln
bmVkIHNpbmNlIHRoYXQncyB3aGF0IGFsbCBvZiBvdXIgQVBJcyB3YW50LgogICAgICAgICBpbnQ2
NF90IGJpZ1NjYWxlID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IHN0YXRpY19jYXN0PHVp
bnQ2NF90Pihsb2dTY2FsZSk7CiAgICAgICAgIGlmICghaXNSZXByZXNlbnRhYmxlQXM8aW50MzJf
dD4oYmlnU2NhbGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIHNjYWxlID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oYmlnU2NhbGUpOwogICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluZGV4
Rm9ybShzY2FsZSwgb2Zmc2V0LCB3aWR0aCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNj
YWxlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M09wY29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4
IDZjZmQ4YTlmMmZjODc1YmYzOTQzZjc5N2NjZmRhMWJmMWZiM2IyNjkuLjdjMmZhMGMwOTI0OGNh
N2ZjYTRmNDc2NWUwMjZlNGIyZWY0OTIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM09wY29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bj
b2RlLmNwcApAQCAtNDYsMTkgKzQ2LDE5IEBAIE9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21w
YXJlKE9wY29kZSBvcGNvZGUsIFR5cGUgdHlwZSkKICAgICBjYXNlIExlc3NUaGFuOgogICAgICAg
ICBpZiAodHlwZS5pc0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJFcXVhbDsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBjYXNlIEdyZWF0ZXJUaGFuOgogICAgICAgICBpZiAodHlwZS5pc0ludCgpKQogICAgICAg
ICAgICAgcmV0dXJuIExlc3NFcXVhbDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIExlc3NFcXVhbDoKICAgICAgICAg
aWYgKHR5cGUuaXNJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBjYXNlIEdyZWF0ZXJFcXVhbDoKICAgICAgICAgaWYgKHR5cGUuaXNJbnQoKSkKICAgICAgICAg
ICAgIHJldHVybiBMZXNzVGhhbjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEFib3ZlOgogICAgICAgICByZXR1cm4g
QmVsb3dFcXVhbDsKICAgICBjYXNlIEJlbG93OgpAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxP
cGNvZGU+IGludmVydGVkQ29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCiAgICAgY2Fz
ZSBCZWxvd0VxdWFsOgogICAgICAgICByZXR1cm4gQWJvdmU7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9p
bnRTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVj
aWFsLmNwcAppbmRleCA5NGY1OGEzNzNlODJkNzQ0YjZlOGM0MzZmZjgwNzkxZmNkYTg1ODQ2Li5m
OGRjMzY1MWY5NGNlNTgxZDk0MDZkYjMzMWE4OTg0MzAxOGM5MDJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgUGF0Y2hwb2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3Qg
U2NvcGVkTGFtYmRhPEluc3Q6OkVhY2hBcmdDCiAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1th
cmdJbmRleF0sIHJvbGUsIGJhbmtGb3JUeXBlKGFyZ1R5cGUpLCB3aWR0aEZvclR5cGUoYXJnVHlw
ZSkpOwogICAgIH0KIAotICAgIGZvckVhY2hBcmdJbXBsKDAsIGFyZ0luZGV4LCBpbnN0LCBTYW1l
QXNSZXAsIFdURjo6bnVsbG9wdCwgY2FsbGJhY2ssIFdURjo6bnVsbG9wdCk7CisgICAgZm9yRWFj
aEFyZ0ltcGwoMCwgYXJnSW5kZXgsIGluc3QsIFNhbWVBc1JlcCwgc3RkOjpudWxsb3B0LCBjYWxs
YmFjaywgc3RkOjpudWxsb3B0KTsKICAgICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+bnVtQ2hp
bGRyZW4oKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVyczsgaS0tOykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4
IGEwZGE3MTg4N2NkMjY4NWRlOTk2MzFlOTFhNDQ3NjI2YTNjMGM0OGEuLjVmMGEzYTQ5ZDRhYmUz
MzlkNzc5OTMyMWVlZDNlYjhkNzczMDJhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuaApAQCAtNTg2LDcgKzU4Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJZiB5
b3UgZG9uJ3QgcGFzcyBhIFdpZHRoLCB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5
b3UncmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2Fs
ZSh1bnNpZ25lZCBzY2FsZSwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gV1RGOjpudWxsb3B0KQor
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgT3B0aW9uYWw8V2lk
dGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzY2FsZSkg
ewogICAgICAgICBjYXNlIDE6CkBAIC0xMTgyLDcgKzExODIsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zm
c2V0PEludD4+Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKEludCBvZmZzZXQsIE9w
dGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkQWRkckZvcm0oSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxs
b3B0KQogICAgIHsKICAgICAgICAgaWYgKGlzWDg2KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbnQsIHR5cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBP
cHRpb25hbDxXaWR0aD4gd2lkdGggPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNW
YWxpZEluZGV4Rm9ybSh1bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+
IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUo
c2NhbGUsIHdpZHRoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMjIsNyArMTIy
Miw3IEBAIHB1YmxpYzoKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIHdpZHRoIHRoZW4gdGhp
cyBvcHRpbWlzdGljYWxseSBhc3N1bWVzIHRoYXQgeW91J3JlIHVzaW5nIHRoZSByaWdodCB3aWR0
aC4gQnV0CiAgICAgLy8gdGhlIHdpZHRoIGlzIHJlbGV2YW50IHRvIHZhbGlkaXR5LCBzbyBwYXNz
aW5nIGEgbnVsbCB3aWR0aCBpcyBvbmx5IHVzZWZ1bCBmb3IgYXNzZXJ0aW9ucy4gRG9uJ3QKICAg
ICAvLyBwYXNzIG51bGwgd2lkdGhzIHdoZW4gY2FzY2FkaW5nIHRocm91Z2ggQXJncyBpbiB0aGUg
aW5zdHJ1Y3Rpb24gc2VsZWN0b3IhCi0gICAgYm9vbCBpc1ZhbGlkRm9ybShPcHRpb25hbDxXaWR0
aD4gd2lkdGggPSBXVEY6Om51bGxvcHQpIGNvbnN0CisgICAgYm9vbCBpc1ZhbGlkRm9ybShPcHRp
b25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0CiAgICAgewogICAgICAgICBz
d2l0Y2ggKGtpbmQoKSkgewogICAgICAgICBjYXNlIEludmFsaWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmNwcAppbmRleCA5MDQxODFiNTc5NTNjOWQ3MjRmMjVmNjU4MTQ0
ODUxOTk5ZGZkM2YxLi5jMDRmMDk1Y2RkNjM3YWNlMzY2MjdiMmU0MThhOGJiNDQ1NjY4MzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTIxNyw3ICsyMTcs
NyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gQ29kZTo6ZW50cnlwb2ludEluZGV4KEJhc2ljQmxvY2sq
IGJsb2NrKSBjb25zdAogICAgICAgICBpZiAobV9lbnRyeXBvaW50c1tpXS5ibG9jaygpID09IGJs
b2NrKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBDb2RlOjpzZXRDYWxsZWVT
YXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoUmVnaXN0ZXJBdE9mZnNldExpc3QmJiByZWdpc3RlckF0
T2Zmc2V0TGlzdCwgU3RhY2tTbG90KiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggYzFiMDMxNzI3YmNkODlk
Nzg2ZjU4MDAyNjhiNTJiYTgxZmMwMTVmMy4uOTc1MGFkZjdmNDkwZjA5MTc3NTkzMWU1MTMxZGE0
NzNhZjA2ZjhjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJG
aXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC01MDksMTQgKzUwOSwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgaWYgKGFyZy5pc1JlZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IFJl
Z0NvbnN0KiBhbGlhcyA9IGdldFJlZ0NvbnN0KGFyZy5yZWcoKSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBhbGlhcy0+Y29uc3RhbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGFyZy5pc1N0YWNrKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY29uc3QgU2xvdENvbnN0KiBhbGlhcyA9IGdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXMtPmNvbnN0YW50OwotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBjbG9iYmVyKGNvbnN0IEFyZyYgYXJnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oCmluZGV4IGFmMGQyMDM5ZGQ4NjU4ZTMwYWUxZjkxZjk1YzFm
ZjE2MTY5Y2VkNTUuLmRhYTg5NTMwNGE0Y2M4MzJiNzFlNGM0N2JlMWMzYTU5ZTBlMjMzOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKQEAgLTEx
OSw3ICsxMTksNyBAQCBpbmxpbmUgYm9vbCBJbnN0OjphZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIo
QXJnJiBhcmcpCiBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFz
aW5nRGVmKCkKIHsKICAgICBpZiAoIWlzWDg2KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGtpbmQub3Bj
b2RlKSB7CiAgICAgY2FzZSBBZGQzMjoKQEAgLTE0Nyw3ICsxNDcsNyBAQCBpbmxpbmUgT3B0aW9u
YWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkKICAgICBjYXNlIE11bEZs
b2F0OgogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGlmIChNYWNyb0Fzc2Vt
Ymxlcjo6c3VwcG9ydHNBVlgoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAgICAgICAgIGlmIChhcmdz
LnNpemUoKSA9PSAzKQogICAgICAgICAgICAgcmV0dXJuIDI7CkBAIC0xNzgsNyArMTc4LDcgQEAg
aW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZigpCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIGJvb2wgaXNTaGlmdFZh
bGlkKGNvbnN0IEluc3QmIGluc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJT
cGVjaWFsLmNwcAppbmRleCBjMGMwMTM2OWE5YWFhMjRlYzY2YTZlMTJkOWQ5MDgwYzRlZDc2Mzgy
Li45NTVlOGE5NzAxNTJjN2IwMjYzNmQzOGFjMTE5MDBkNWUzNzQyNTlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQ1N0
cmluZyBTcGVjaWFsOjpuYW1lKCkgY29uc3QKIAogT3B0aW9uYWw8dW5zaWduZWQ+IFNwZWNpYWw6
OnNob3VsZFRyeUFsaWFzaW5nRGVmKEluc3QmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBTcGVjaWFsOjppc1Rlcm1pbmFs
KEluc3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAppbmRleCA2NjQxN2M0MTMyMWQyNDc5YjU2ODg4ZmFhZmFkZGE5Y2Nk
OWMzZWMzLi5lOGU3NWY2ZDE2OTQ4ZmYzNTgzODA2OWQ5NTI5NDEyYWExYTRmZjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcApAQCAtMjUxLDcgKzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWls
dGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAm
bWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xh
c3NpYywgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIG5l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJz
ZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJl
cXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJu
IGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDJh
NzU4OGQ2ZDVjYzdhMzU4ZThjYzFjODkzMzFjYjkyMWY3OWI3OWEuLjMzOWNhYTk0YTM0MzQ5N2My
N2UyZDk3MzNjZWQ2Yjc0ZjhjMDRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTEx
OSwxMCArMTE5LDEwIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkoVk0mIHZtKQogT3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
RW50cnk+IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgY29uc3QKIHsKICAgICBpZiAoIWlkZW50LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9ieXRlY29kZUludHJpbnNpY01hcC5maW5kKGlkZW50LmltcGwo
KSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA3ZGYwNWUxMGJjOTBiNjU2ZjM1MDNjODVj
MDU0YzVkM2FmYTdjNmI5Li4xY2Y5MzJiNjVmNTk1ZTFiZTAxNWU4YmI5Zjg2Yjg5M2U1ZTEyNzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAt
NDA0LDcgKzQwNCw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlKQogICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCkt
Pmluc2VydFVuZXhlY3V0ZWRSYW5nZShvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlu
a2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkRlY2xz
W2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4
ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRy
aW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKKyAg
ICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxl
LT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCks
IHN0ZDo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKCkpKTsKICAgICB9CiAKICAgICBtX2Z1bmN0aW9uRXhwcnMgPSBGaXhlZFZl
Y3RvcjxXcml0ZUJhcnJpZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4odW5saW5rZWRDb2RlQmxvY2st
Pm51bWJlck9mRnVuY3Rpb25FeHBycygpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5r
ZWRFeGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihpKTsKICAgICAg
ICAgaWYgKHNob3VsZFVwZGF0ZUZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSkKICAgICAgICAgICAg
IHZtLmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2Uob3du
ZXJFeGVjdXRhYmxlLT5zb3VyY2VJRCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxp
bmdTdGFydE9mZnNldCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZz
ZXQoKSk7Ci0gICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2Vk
RXhlY3V0YWJsZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUt
PnNvdXJjZSgpLCBXVEY6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlz
SW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpKSk7CisgICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5z
ZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRh
YmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIE5vSW50cmluc2lj
LCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpKSk7CiAgICAgfQog
CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkp
IHsKQEAgLTM0NjUsNyArMzQ2NSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6
ZmluZFBDKHZvaWQqIHBjKQogICAgIGlmIChPcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2lu
ID0gbV9qaXRDb2RlLT5maW5kUEModGhpcywgcGMpKQogICAgICAgICByZXR1cm4gY29kZU9yaWdp
bjsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRl
eCAxYzU5OTM3MzMxM2JmODgxMDNjOTViZjZkZTJlMmM0ZDkxMTQ5MDFiLi4xOWEzNTU2Y2RlMWE0
Mjc3ODFjMTNlMDZlMGM1NTI1ZWE2ZGY0ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAK
QEAgLTUyNywyMSArNTI3LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hp
bmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplCiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAg
ICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
aGFzQmVlbkZsYXR0ZW5lZEJlZm9yZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgc3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3QoY3Vy
cmVudCkpOwogICAgICAgICAgICAgZmxhdHRlbmVkRGljdGlvbmFyeSA9IHRydWU7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSB0YXJnZXQpIHsKICAg
ICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8UHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpT
R2xvYmFsT2JqZQogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aGFzUG9seVByb3RvKCkpIHsKICAgICAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB1c2VzUG9seVByb3RvID0gdHJ1ZTsKICAgICAgICAg
ICAgIHByb3RvdHlwZSA9IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVj
dCwgY3VycmVudCk7CiAgICAgICAgIH0gZWxzZQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hp
bmcoSlNHbG9iYWxPYmplCiAgICAgfQogCiAgICAgaWYgKCFmb3VuZCAmJiAhIXRhcmdldCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cyByZXN1bHQ7CiAgICAgcmVzdWx0LnVz
ZXNQb2x5UHJvdG8gPSB1c2VzUG9seVByb3RvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKaW5kZXggNTlmYTY1NmM3NWYxNmU2MWIzZTFk
ZWNlMzQ1NDFjYjZiZjMwMzI5Yy4uODUyNzk0MGJmMDU0NjdhM2QxZGM2NGNiOTEzMjEzODU2MWFk
OGEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0
ZWRUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCkBAIC03MTgsNyArNzE4LDcgQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNw
ZWN1bGF0aW9uRnJvbUpTVHlwZShKU1R5cGUgdHlwZSkKICAgICBjYXNlIERhdGFWaWV3VHlwZToK
ICAgICAgICAgcmV0dXJuIFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwMDQ0YTYyZGMyNTdkN2E5NmU5ZjVl
YWNhMDAyMTQ0NzdmMzIyMzA5Li5kMTY5MmUxNzZlMTBlODFhYjA1OWEyZGJlZWIxNmNmNzYzOTdk
NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgaW50IG92ZXJyaWRlTGluZU51bWJlciwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKIAogICAgIFNvdXJjZUNvZGUgbGlua2Vk
U291cmNlQ29kZShjb25zdCBTb3VyY2VDb2RlJikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2
ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9wdGlvbmFsPGlu
dD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gV1RGOjpudWxsb3B0LCBJbnRyaW5zaWMgPSBOb0ludHJp
bnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJs
ZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9w
dGlvbmFsPGludD4gb3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0LCBJbnRyaW5zaWMg
PSBOb0ludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7CiAK
ICAgICB2b2lkIGNsZWFyQ29kZShWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBi
ZGJhYTIxNDk1ZTAxM2U5N2NmNTlkZDU0ZTc1M2VjOGIwOTIzMGU0Li41ZGE2NTI3OGQ3ZjBmNzBj
YTJhNDIyMDY5ODNiZTVjNTMyYzE2MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzAyNSw3ICsz
MDI1LDcgQEAgT3B0aW9uYWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gQnl0ZWNvZGVHZW5lcmF0
b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NOYW0KICAgICB9CiAKICAgICBpZiAoIXJlc3Vs
dC5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDQ2MCw3ICs0NDYwLDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdChS
ZWdpc3RlcklEKiBkc3QsIFRhZ2dlZFRlbXAKICAgICAgICAgQVNTRVJUKHN0cmluZy0+cmF3KCkp
OwogICAgICAgICByYXdTdHJpbmdzLmFwcGVuZChzdHJpbmctPnJhdygpLT5pbXBsKCkpOwogICAg
ICAgICBpZiAoIXN0cmluZy0+Y29va2VkKCkpCi0gICAgICAgICAgICBjb29rZWRTdHJpbmdzLmFw
cGVuZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBlbmQoc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBl
bmQoc3RyaW5nLT5jb29rZWQoKS0+aW1wbCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYTQ5Y2E3MDc0
NTY5ZmNhNWRlNmM5ZWRhMmYwYTZiZmJmZDVmM2YyOS4uN2MxOGI4MTNkZmU2MzZkZDY0Y2M1OTk4
ZDUyZjE0ZWI2MWU3MzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzAyNiw3ICszMDI2LDcgQEAgUmVnaXN0ZXJJ
RCogQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCoKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpICYmIHZh
bHVlLmFzSW50MzIoKSA+PSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVUludDMyUmVz
dWx0OjpDb25zdGFudDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9OwogICAg
ICAgICBhdXRvIGxlZnRSZXN1bHQgPSBpc1VJbnQzMihtX2V4cHIxKTsKICAgICAgICAgYXV0byBy
aWdodFJlc3VsdCA9IGlzVUludDMyKG1fZXhwcjIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKaW5kZXggN2ZjYjU4NTAwMDM2
NjA5MjRiNGI3OTk0ZmNhN2YxMDZmMDgwYjZmYy4uNTY4ZmUzMzhhYTA2NzUxZjI3NmQzNTRlMmI4
ZTAwMWRhM2FlMzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyUGFyc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE9wdGlvbmFsPEpTVGV4
dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JM
aW5lQ29sdW1uCiAgICAgICAgIHJldHVybiBhLnBvc2l0aW9uLmxpbmUgPCBiLnBvc2l0aW9uLmxp
bmU7CiAgICAgfSk7CiAgICAgaWYgKGl0ID09IG1fcG9zaXRpb25zLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKGxpbmUgPT0gaXQtPnBvc2l0aW9uLmxpbmUgJiYgY29sdW1uID09IGl0LT5wb3NpdGlvbi5j
b2x1bW4oKSkgewogICAgICAgICAvLyBGb3VuZCBhbiBleGFjdCBwb3NpdGlvbiBtYXRjaC4gUm9s
bCBmb3J3YXJkIGlmIHRoaXMgd2FzIGEgZnVuY3Rpb24gRW50cnkuCkBAIC05OSw3ICs5OSw3IEBA
IE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3Bv
aW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uCiAgICAgfQogCiAgICAgLy8gTm8gcGF1c2UgcG9zaXRp
b25zIGZvdW5kLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpzb3J0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCmluZGV4IDg3ZTk5YTk0ZjYzYzdlYTM1NmQz
ZGMxZWJkMjM4ZjU3NWJhZmQ4MzcuLjI0NDk4MDFmZjBiNGUxMTZiZDRiZTQ5OWI1M2NkNjRlMzhk
YTMxMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjMz
LDcgKzIzMyw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxv
Y2sqLCB2b2lkKiBwYykKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBKSVRDb2RlOjpmaW5hbGl6
ZU9TUkVudHJ5cG9pbnRzKFZlY3RvcjxPU1JFbnRyeURhdGE+JiYgb3NyRW50cnkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlMzM2OThlOGU2NTFh
MzY5MzE0OWJjMDgyOWM1NjM5YmJkYzUzMTkzLi43NTEzYjRkNGJlMGQwOWZhMTAzZjU4YjE3N2Uz
YWZiZWM5ODBhMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTE4MjIsNyArMTgyMiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25OZXdJbnQ4QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJ
bnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6
bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hh
ciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xODM4LDcgKzE4MzgsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVu
dCwgY2hhciosIChKU0dsb2JhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklU
T3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNJbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0ludDMyQXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rvcikp
CkBAIC0xODU0LDcgKzE4NTQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TmV3SW50MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNo
YXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJB
cnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxs
b3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVy
aWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNVaW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBz
dGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5l
d1VpbnQ4Q2xhbXBlZEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQpAQCAtMTg4Niw3ICsxODg2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQ4Q2xhbXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFy
cmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxv
cHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTkwMiw3
ICsxOTAyLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFy
cmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVu
Z3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwg
KEpTR2xvYmEKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQz
MkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51
bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE5
MzQsNyArMTkzNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9h
dDMyQXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlw
ZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE5NTAsNyArMTk1MCw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQs
IGNoYXIqLCAoSlNHbG9iCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTRmxvYXQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk5ld0JpZ0ludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3Rv
cikpCkBAIC0xOTY2LDcgKzE5NjYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QmlnSW50NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmln
SW50NjRBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RG
OjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0K
IAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0
aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTk4Miw3ICsxOTgy
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2wKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0JpZ1VpbnQ2NEFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0JpZ1VpbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSogdm1Qb2lu
dGVyLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAppbmRleCBjNGM4MjhmNGZmMWQ5Y2E0NjUxYTM3NmNhZGUyZDAyZDVlYjU5MDY5Li5kMjkz
ZWM3NDgxZjkyMzgyNGY3ZjhjYzdlMTdkZmJmZmEwMjllMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFBsYW46OmNsZWFuTXVz
dEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkKIAogICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSBt
X211c3RIYW5kbGVWYWx1ZXMubnVtYmVyT2ZMb2NhbHMoKTsgbG9jYWwtLTspIHsKICAgICAgICAg
aWYgKCFsaXZlbmVzc1tsb2NhbF0pCi0gICAgICAgICAgICBtX211c3RIYW5kbGVWYWx1ZXMubG9j
YWwobG9jYWwpID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9tdXN0SGFuZGxlVmFsdWVz
LmxvY2FsKGxvY2FsKSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA5ODFlODZjZDdk
ZGIwMWNhNDk1NDNiNGU1Mzc2MDAxYmU4MTYwMTI2Li5lNTAwOTViYjZhZmVmODdmN2ExZTEyOTY3
ZDEyNGI4ODQ4NTI3ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Nsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
bG93UGF0aEdlbmVyYXRvci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaml0
LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gbV9zdHJlYW1JbmRleDsKICAgICAgICAgaml0LT5t
X29yaWdpbiA9IG1fb3JpZ2luOwogICAgICAgICBnZW5lcmF0ZUludGVybmFsKGppdCk7Ci0gICAg
ICAgIGppdC0+bV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
aml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
QVNTRVJUX0VOQUJMRUQpCiAgICAgICAgICAgICBqaXQtPm1faml0LmFib3J0V2l0aFJlYXNvbihE
RkdTbG93UGF0aEdlbmVyYXRvckZlbGxUaHJvdWdoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4ODNj
ZWVmOWNhMDNiODRmMTZlZTY0NGU2ZDI4ZjguLjM1ZDdmZTViYTI1NWNmMTEwNDg5NTM1ZjgxMzNl
Nzg1ZmIzZGYxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6cnVu
U2xvd1BhdGhHZW5lcmF0b3JzKFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYgcGNUb0NvZGVPcmkK
ICAgICAgICAgbV9vdXRPZkxpbmVTdHJlYW1JbmRleCA9IHNsb3dQYXRoTGFtYmRhLnN0cmVhbUlu
ZGV4OwogICAgICAgICBwY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShtX2ppdC5s
YWJlbElnbm9yaW5nV2F0Y2hwb2ludHMoKSwgY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIHNsb3dQYXRoTGFtYmRhLmdlbmVyYXRvcigpOwotICAgICAgICBtX291dE9mTGlu
ZVN0cmVhbUluZGV4ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX291dE9mTGluZVN0cmVhbUlu
ZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtOTEyNiw3ICs5MTI2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZs
eTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIGxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKG5v
ZGUtPm51bUNoaWxkcmVuKCkgPT0gNCkKLSAgICAgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5k
ZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwgV1RGOjpudWxsb3B0LCBsZW5n
dGhHUFIsIHRlbXBHUFIpOworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxvcHQsIGxlbmd0aEdQUiwg
dGVtcEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1vdmUobGVuZ3RoR1BS
LCB0ZW1wR1BSKTsKIApAQCAtOTEzNiw3ICs5MTM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wU3RhcnRJbmRleCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJl
ZyBzdGFydEdQUiA9IHRlbXBTdGFydEluZGV4LmdwcigpOwotICAgICAgICAgICAgZW1pdFBvcHVs
YXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBXVEY6Om51
bGxvcHQsIGxlbmd0aEdQUiwgc3RhcnRHUFIpOworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xp
Y2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBzdGQ6Om51bGxvcHQs
IGxlbmd0aEdQUiwgc3RhcnRHUFIpOwogCiAgICAgICAgICAgICBhdXRvIHRvb0JpZyA9IG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc3RhcnRHUFIsIHRlbXBHUFIpOwogICAg
ICAgICAgICAgbV9qaXQuc3ViMzIoc3RhcnRHUFIsIHRlbXBHUFIpOyAvLyB0aGUgc2l6ZSBvZiB0
aGUgYXJyYXkgd2UnbGwgbWFrZS4KQEAgLTkyMjYsMTAgKzkyMjYsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICB9IGVsc2UgewogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgdGVtcFZhbHVlKTsKICAgICAgICAgaWYg
KG5vZGUtPm51bUNoaWxkcmVuKCkgPT0gNCkKLSAgICAgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNl
SW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwgV1RGOjpudWxsb3B0LCB0
ZW1wVmFsdWUsIHRlbXBHUFIpOworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleCht
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxvcHQsIHRlbXBWYWx1
ZSwgdGVtcEdQUik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1vdmUodGVtcFZh
bHVlLCB0ZW1wR1BSKTsKLSAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBXVEY6Om51bGxvcHQsIHRlbXBWYWx1ZSwgbG9hZElu
ZGV4KTsKKyAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDEpLCBzdGQ6Om51bGxvcHQsIHRlbXBWYWx1ZSwgbG9hZEluZGV4KTsKICAg
ICB9CiAKICAgICBHUFJUZW1wb3JhcnkgdGVtcDUodGhpcyk7CkBAIC05MjgzLDcgKzkyODMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUpCiAg
ICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSksIGxlbmd0aEdQUik7CiAKICAgICBpZiAobm9k
ZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiksIFdURjo6bnVsbG9wdCwgbGVuZ3RoR1BS
LCBpbmRleEdQUik7CisgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAyKSwgc3RkOjpudWxsb3B0LCBsZW5ndGhHUFIsIGluZGV4R1BS
KTsKICAgICBlbHNlCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBpbmRleEdQ
Uik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGJmMzY0
NDFhNzM1YWE1ZTU4N2QyOTkwZmNhZTE2OTdlOGJmZjYyY2YuLjBjNjViOTYwN2QyOTM1YWQwMWUx
Y2EwMTQ3OGE3NDViN2FhOGEyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRD
b2RlLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6
OmZpbmRQQyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogcGMpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKaW5kZXggYTcxYjcwMmY2ZjZiYzBjYzA4ZWE4YzNjMTNlMTgwODg0NGVlOWU0OC4uZDIxZTcx
NmIyODZiZmFjOWE3NjU1NzM0OTY0NTI1OTg5NmU1ZTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKQEAgLTIzNDAsNyArMjM0MCw3IEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29s
bGVjdGlvbigpCiAKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rpb25TY29wZSk7CiAgICAg
bV9sYXN0Q29sbGVjdGlvblNjb3BlID0gbV9jb2xsZWN0aW9uU2NvcGU7Ci0gICAgbV9jb2xsZWN0
aW9uU2NvcGUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAg
IG9ic2VydmVyLT5kaWRHYXJiYWdlQ29sbGVjdChzY29wZSk7CkBAIC0yOTMzLDcgKzI5MzMsNyBA
QCB2b2lkIEhlYXA6Om5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpCiAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2Nr
IH07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcXVlc3RzLmFwcGVuZChXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMuYXBwZW5kKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0R3JhbnRlZFRpY2tl
dCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLT5ub3Rp
ZnlPbmUobG9ja2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAppbmRleCBlOTk3NzIzZDFmYzdmNTQ3NWRhZDliYWE5NjU4MmUzZDM2N2E3ZGNi
Li4zYWQ3ODFhY2M4MTkwMDU4YjQwMmE3MjA4MzgwZGVjNTAxZGIyM2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCkBAIC0xOTAsOCArMTkwLDggQEAgcHVibGljOgogICAgIGJvb2wgc2hv
dWxkQ29sbGVjdEhldXJpc3RpYygpOwogICAgIAogICAgIC8vIFF1ZXVlIHVwIGEgY29sbGVjdGlv
bi4gUmV0dXJucyBpbW1lZGlhdGVseS4gVGhpcyB3aWxsIG5vdCBxdWV1ZSBhIGNvbGxlY3Rpb24g
aWYgYSBjb2xsZWN0aW9uCi0gICAgLy8gb2YgZXF1YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBleGlz
dHMuIEZ1bGwgY29sbGVjdGlvbnMgYXJlIHN0cm9uZ2VyIHRoYW4gV1RGOjpudWxsb3B0IGNvbGxl
Y3Rpb25zCi0gICAgLy8gYW5kIFdURjo6bnVsbG9wdCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIg
dGhhbiBFZGVuIGNvbGxlY3Rpb25zLiBXVEY6Om51bGxvcHQgbWVhbnMgdGhhdCB0aGUgR0MgY2Fu
CisgICAgLy8gb2YgZXF1YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBleGlzdHMuIEZ1bGwgY29sbGVj
dGlvbnMgYXJlIHN0cm9uZ2VyIHRoYW4gc3RkOjpudWxsb3B0IGNvbGxlY3Rpb25zCisgICAgLy8g
YW5kIHN0ZDo6bnVsbG9wdCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBFZGVuIGNvbGxl
Y3Rpb25zLiBzdGQ6Om51bGxvcHQgbWVhbnMgdGhhdCB0aGUgR0MgY2FuCiAgICAgLy8gY2hvb3Nl
IEVkZW4gb3IgRnVsbC4gVGhpcyBpbXBsaWVzIHRoYXQgaWYgeW91IHJlcXVlc3QgYSBHQyB3aGls
ZSB0aGF0IEdDIGlzIG9uZ29pbmcsIG5vdGhpbmcKICAgICAvLyB3aWxsIGhhcHBlbi4KICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgPSBHQ1JlcXVlc3Qo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcAppbmRleCAx
NGEzYmEwMzIwMGUxYTcxYjU2Y2RlN2U5YjAzMGJmNjlkZTZkNzA5Li5mZTQ0N2RmNzdhMjFhNjlj
NDhhMzZkNDg2YWMyNTIyMTgwMThjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU25hcHNob3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBTbmFwc2hvdC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNo
b3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICBpZiAo
bV9wcmV2aW91cykKICAgICAgICAgcmV0dXJuIG1fcHJldmlvdXMtPm5vZGVGb3JDZWxsKGNlbGwp
OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmpl
Y3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdElkZW50aWZpZXIpCkBAIC0xNjIsMTYgKzE2Miwx
NiBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmpl
Y3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdAogICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAg
ICAgaWYgKG1fcHJldmlvdXMpCiAgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy0+bm9kZUZv
ck9iamVjdElkZW50aWZpZXIob2JqZWN0SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYg
KG9iamVjdElkZW50aWZpZXIgPiBtX2xhc3RPYmplY3RJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KG9iamVjdElkZW50aWZpZXIgPCBtX2ZpcnN0T2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICBp
ZiAobV9wcmV2aW91cykKICAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLT5ub2RlRm9yT2Jq
ZWN0SWRlbnRpZmllcihvYmplY3RJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBmb3IgKGF1
dG8mIG5vZGUgOiBtX25vZGVzKSB7CkBAIC0xNzksNyArMTc5LDcgQEAgT3B0aW9uYWw8SGVhcFNu
YXBzaG90Tm9kZT4gSGVhcFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25l
ZCBvYmplY3QKICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPihu
b2RlKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCmluZGV4IGJiNTVi
OWNiZTI2MDBjNzkyYzg1ZGViMTE1ZDFhYzI1YjliYzA1MTAuLjZjN2ZhNmMwOGZlMDljMGQ4NTk3
OThkYWI1ZWNiNGIwMjI1ZTY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJraW5nQ29uc3RyYWludFNvbHZlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9p
ZCBNYXJraW5nQ29uc3RyYWludFNvbHZlcjo6ZHJhaW4oQml0VmVjdG9yJiB1bmV4ZWN1dGVkKQog
ICAgIGF1dG8gcGlja05leHQgPSBzY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+KAog
ICAgICAgICBbJl0gKCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgICAgIGlmIChp
dGVyID09IGVuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gKml0ZXIr
KzsKICAgICAgICAgfSk7CiAgICAgZXhlY3V0ZShOZXh0Q29uc3RyYWludEZpcnN0LCBwaWNrTmV4
dCk7CkBAIC0xMjgsMTAgKzEyOCwxMCBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpj
b252ZXJnZShjb25zdCBWZWN0b3I8TWFya2luZ0NvbnN0cmFpbnQqPiYgb3JkZXIpCiAgICAgYXV0
byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25lZD4oKT4oCiAgICAgICAg
IFsmXSAoKSAtPiBPcHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICAgICAgaWYgKGRpZFZpc2l0
U29tZXRoaW5nKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoaW5kZXggPj0gb3JkZXIuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTWFya2luZ0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQgPSAqb3JkZXJb
aW5kZXgrK107CiAgICAgICAgICAgICByZXR1cm4gY29uc3RyYWludC5pbmRleCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAwMzNhMWI0NzEzMzUyNzc3ZWUwZGU1ZWQ1M2U2NGY4
MzkxZjlkNzRmLi40NjA0NmVkYjAxM2I0NzAwMjAxZTI1MzEyNzdjMTVhZjY4NDAxNGVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQmFja2Vu
ZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAg
ICAgIC8vIEluIGNhc2UgdGhpcyBpcyBhIHJlLWVudHJhbnQgY2FsbCBmcm9tIGEgbmVzdGVkIHJ1
biBsb29wLCB3ZSBkb24ndCB3YW50IHRvIGxvc2UKICAgICAgICAgLy8gdGhlIG91dGVyIHJlcXVl
c3QncyBpZCBqdXN0IGJlY2F1c2UgdGhlIGlubmVyIHJlcXVlc3QgaXMgYm9ndXMuCi0gICAgICAg
IFNldEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVx
dWVzdElkLCBXVEY6Om51bGxvcHQpOworICAgICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxsb25n
Pj4gc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKIAog
ICAgICAgICBhdXRvIHBhcnNlZE1lc3NhZ2UgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKG1lc3Nh
Z2UpOwogICAgICAgICBpZiAoIXBhcnNlZE1lc3NhZ2UpIHsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2
b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgbV9mcm9udGVu
ZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIAogICAgIG1f
cHJvdG9jb2xFcnJvcnMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9jdXJyZW50UmVxdWVzdElkID0gc3RkOjpudWxsb3B0OwogfQogICAgIAog
dm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25FcnJvckNv
ZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuaAppbmRleCA4YTVlZmIzMTZlOWQwOTMzN2FkYTIzMjNkYzZmOTI2MDU2YTljMmY5Li4y
MTdiMzE5M2U1OGYzZjExY2RhNmU2OGE4MjlhOWI4YTljMTAxZjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlci5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZvciBzeW5j
aHJvbm91c2x5IGhhbmRsZWQgcmVxdWVzdHMsIGF2b2lkIHBsdW1iaW5nIHJlcXVlc3RJZCB0aHJv
dWdoIGV2ZXJ5CiAgICAgLy8gY2FsbCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGZhaWwgd2l0aCBh
IHByb3RvY29sIGVycm9yLgotICAgIE9wdGlvbmFsPGxvbmc+IG1fY3VycmVudFJlcXVlc3RJZCB7
IFdURjo6bnVsbG9wdCB9OworICAgIE9wdGlvbmFsPGxvbmc+IG1fY3VycmVudFJlcXVlc3RJZCB7
IHN0ZDo6bnVsbG9wdCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDkzMzUzMTMzNjQ5Mzg5YTBhMjUyN2U5M2Rk
ZmE1Zjk2MmI2YTg3ODguLmYyZDk0NDNkNWNhYjlkNDUyZjNiMGYxZmQ0MWM1N2FhMGVkOTI5ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4gYnJlYWtwb2ludEFj
dGlvblR5cGVGb3JTdHJpbmcoUHJvCiAgICAgYXV0byB0eXBlID0gUHJvdG9jb2w6OkhlbHBlcnM6
OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU+KHR5cGVTdHJpbmcpOwogICAgIGlmICghdHlwZSkgewogICAgICAgICBlcnJv
clN0cmluZyA9IG1ha2VTdHJpbmcoIlVua25vd24gYnJlYWtwb2ludCBhY3Rpb24gdHlwZTogIl9z
LCB0eXBlU3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzd2l0Y2ggKCp0eXBlKSB7CkBAIC04OCw3
ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4g
YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoUHJvCiAgICAgfQogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyOSwxNiArMTI5LDE2IEBA
IHN0YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICAvLyBTcGVjaWZ5aW5n
IGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRlIHBy
b2JlIHNhbXBsZXMKICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgZnJvbnRlbmQgYWNyb3NzIG11
bHRpcGxlIGJhY2tlbmQgcHJvYmUgYWN0aW9ucyBhbmQgc2VncmVnYXRlIG9iamVjdCBncm91cHMu
Ci0gICAgICAgICAgICAgICAgYWN0aW9uLmlkID0gYWN0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKFBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6aWRLZXkpLnZhbHVlT3IoSlNDOjpu
b0JyZWFrcG9pbnRBY3Rpb25JRCk7CisgICAgICAgICAgICAgICAgYWN0aW9uLmlkID0gYWN0aW9u
T2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6
aWRLZXkpLnZhbHVlX29yKEpTQzo6bm9CcmVha3BvaW50QWN0aW9uSUQpOwogCi0gICAgICAgICAg
ICAgICAgYWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZSA9IGFjdGlvbk9iamVjdC0+Z2V0Qm9vbGVh
bihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmVtdWxhdGVVc2VyR2VzdHVy
ZUtleSkudmFsdWVPcihmYWxzZSk7CisgICAgICAgICAgICAgICAgYWN0aW9uLmVtdWxhdGVVc2Vy
R2VzdHVyZSA9IGFjdGlvbk9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRBY3Rpb246OmVtdWxhdGVVc2VyR2VzdHVyZUtleSkudmFsdWVfb3IoZmFsc2UpOwog
CiAgICAgICAgICAgICAgICAgYWN0aW9ucy5hcHBlbmQoV1RGTW92ZShhY3Rpb24pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGF1dG9Db250aW51ZSA9IG9wdGlvbnMtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YXV0b0NvbnRp
bnVlS2V5KS52YWx1ZU9yKGZhbHNlKTsKLSAgICAgICAgaWdub3JlQ291bnQgPSBvcHRpb25zLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6Omlnbm9yZUNv
dW50S2V5KS52YWx1ZU9yKDApOworICAgICAgICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRC
b29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51
ZUtleSkudmFsdWVfb3IoZmFsc2UpOworICAgICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdl
dEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291
bnRLZXkpLnZhbHVlX29yKDApOwogICAgIH0KIAogICAgIHJldHVybiBjYWxsYmFjayhjb25kaXRp
b24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwpAQCAtNDk4
LDcgKzQ5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkRGlzcGF0Y2hBc3lu
Y0NhbGwoKQogICAgIGF1dG8mIGFzeW5jU3RhY2tUcmFjZSA9IGl0LT52YWx1ZTsKICAgICBhc3lu
Y1N0YWNrVHJhY2UtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKLSAgICBtX2N1cnJlbnRBc3lu
Y0NhbGxJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEFzeW5jQ2FsbElk
ZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWFzeW5jU3RhY2tUcmFjZS0+aXNQ
ZW5kaW5nKCkpCiAgICAgICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMucmVtb3ZlKGlkZW50aWZpZXIp
OwpAQCAtNTM0LDggKzUzNCw4IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzb3VyY2VJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElEU3RyKS52YWx1ZU9yKDApOwotICAg
IGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpM
b2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZU9yKDApOworICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOworICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTQ2LDcgKzU0Niw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQsIFJl
ZjxKU09OOjpBCiAKICAgICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKLSAg
ICBhdXRvIHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxv
YWQoZXJyb3JTdHJpbmcsICEhdXJsID8gdXJsIDogdXJsUmVnZXgsICEhdXJsUmVnZXgsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlci52YWx1ZU9yKDApLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBh
dXRvIHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQo
ZXJyb3JTdHJpbmcsICEhdXJsID8gdXJsIDogdXJsUmVnZXgsICEhdXJsUmVnZXgsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlci52YWx1ZV9vcigwKSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgaWYg
KCFwcm90b2NvbEJyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJv
clN0cmluZyk7CiAKQEAgLTczMCwxNiArNzMwLDE2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihSZWY8SlNP
CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpH
ZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJj
aEluQ29udGVudChjb25zdCBQcm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElkJiBzY3JpcHRJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRp
b25hbDxib29sPiYmIGlzUmVnZXgpCiB7Ci0gICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52
YWx1ZU9yKDApKTsKKyAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQocGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SWQpLnZhbHVlX29yKDApKTsK
ICAgICBpZiAoaXQgPT0gbV9zY3JpcHRzLmVuZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIk1pc3Npbmcgc2NyaXB0IGZvciBnaXZlbiBzY3JpcHRJZCJfcyk7CiAKLSAgICByZXR1
cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+dmFsdWUu
c291cmNlLCBxdWVyeSwgY2FzZVNlbnNpdGl2ZS52YWx1ZU9yKGZhbHNlKSwgaXNSZWdleC52YWx1
ZU9yKGZhbHNlKSk7CisgICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaElu
VGV4dEJ5TGluZXMoaXQtPnZhbHVlLnNvdXJjZSwgcXVlcnksIGNhc2VTZW5zaXRpdmUudmFsdWVf
b3IoZmFsc2UpLCBpc1JlZ2V4LnZhbHVlX29yKGZhbHNlKSk7CiB9CiAKIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNl
KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmIHNjcmlwdElkKQogewotICAgIGF1
dG8gaXQgPSBtX3NjcmlwdHMuZmluZChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxK
U0M6OlNvdXJjZUlEPihzY3JpcHRJZCkudmFsdWVPcigwKSk7CisgICAgYXV0byBpdCA9IG1fc2Ny
aXB0cy5maW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+
KHNjcmlwdElkKS52YWx1ZV9vcigwKSk7CiAgICAgaWYgKGl0ID09IG1fc2NyaXB0cy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIHNjcmlwdCBmb3IgZ2l2ZW4g
c2NyaXB0SWQiKTsKIApAQCAtMTAxNSw3ICsxMDE1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8c3RkOjp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlv
bmEKICAgICBPcHRpb25hbDxib29sPiB3YXNUaHJvd247CiAgICAgT3B0aW9uYWw8aW50PiBzYXZl
ZFJlc3VsdEluZGV4OwogCi0gICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShl
cnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVz
c2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZU9yKGZhbHNlKSwg
cmV0dXJuQnlWYWx1ZS52YWx1ZU9yKGZhbHNlKSwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlT3IoZmFs
c2UpLCBzYXZlUmVzdWx0LnZhbHVlT3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRS
ZXN1bHRJbmRleCk7CisgICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJv
clN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lv
biwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZV9vcihmYWxzZSksIHJl
dHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFs
c2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVk
UmVzdWx0SW5kZXgpOwogCiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29u
c29sZSgpOwpAQCAtMTAzMSw4ICsxMDMxLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9p
ZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U2hvdWxkQmxhY2tib3hVUkwoY29uc3QKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVUkwg
bXVzdCBub3QgYmUgZW1wdHkiX3MpOwogCi0gICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLnZhbHVlT3IoZmFsc2UpOwotICAgIGJvb2wgaXNSZWdleCA9IG9wdGlv
bmFsSXNSZWdleC52YWx1ZU9yKGZhbHNlKTsKKyAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRp
b25hbENhc2VTZW5zaXRpdmUudmFsdWVfb3IoZmFsc2UpOworICAgIGJvb2wgaXNSZWdleCA9IG9w
dGlvbmFsSXNSZWdleC52YWx1ZV9vcihmYWxzZSk7CiAKICAgICBpZiAoIWNhc2VTZW5zaXRpdmUg
JiYgIWlzUmVnZXggJiYgaXNXZWJLaXRJbmplY3RlZFNjcmlwdCh1cmwpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIkJsYWNrYm94aW5nIG9mIGludGVybmFsIHNjcmlwdHMgaXMgY29u
dHJvbGxlZCBieSAnRGVidWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMnIl9zKTsKQEAg
LTEwOTYsNyArMTA5Niw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzCiAKICAgICBtX3BhdXNl
Rm9ySW50ZXJuYWxTY3JpcHRzID0gc2hvdWxkUGF1c2U7CiAKLSAgICBhdXRvIGJsYWNrYm94VHlw
ZSA9ICFtX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzID8gT3B0aW9uYWw8SlNDOjpEZWJ1Z2dlcjo6
QmxhY2tib3hUeXBlPihKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU6Oklnbm9yZWQpIDogV1RG
OjpudWxsb3B0OworICAgIGF1dG8gYmxhY2tib3hUeXBlID0gIW1fcGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMgPyBPcHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+KEpTQzo6RGVidWdn
ZXI6OkJsYWNrYm94VHlwZTo6SWdub3JlZCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRv
JiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAgaWYgKCFpc1dlYktp
dEluamVjdGVkU2NyaXB0KHNjcmlwdC5zb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7
CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFy
RXhjZXB0aW9uVmFsdWUoKQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckFzeW5j
U3RhY2tUcmFjZURhdGEoKQogewogICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMuY2xlYXIoKTsKLSAg
ICBtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fY3Vy
cmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBkaWRDbGVhckFz
eW5jU3RhY2tUcmFjZURhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDg1
Y2VkOWYzZGY2MjIzMDFiOTVlMzNlNDkzNWNiYmYxNjJiN2UzMzAuLmNmMmNkOGZmYzllODkxNWE4
NGIxNjg5MzgzN2QyZTliZTllNzQ5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAt
MTU3LDE5ICsxNTcsMTkgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVh
cEFnZW50Ojpub2RlRm9ySGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG8KICAgICBIZWFwUHJvZmls
ZXIqIGhlYXBQcm9maWxlciA9IG1fZW52aXJvbm1lbnQudm0oKS5oZWFwUHJvZmlsZXIoKTsKICAg
ICBpZiAoIWhlYXBQcm9maWxlcikgewogICAgICAgICBlcnJvclN0cmluZyA9ICJObyBoZWFwIHNu
YXBzaG90Il9zOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEhlYXBTbmFwc2hvdCogc25hcHNob3QgPSBoZWFw
UHJvZmlsZXItPm1vc3RSZWNlbnRTbmFwc2hvdCgpOwogICAgIGlmICghc25hcHNob3QpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gaGVhcCBzbmFwc2hvdCJfczsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBjb25zdCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFwc2hv
dC0+bm9kZUZvck9iamVjdElkZW50aWZpZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOwogICAgIGlm
ICghb3B0aW9uYWxOb2RlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vIG9iamVjdCBmb3Ig
aWRlbnRpZmllciwgaXQgbWF5IGhhdmUgYmVlbiBjb2xsZWN0ZWQiX3M7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG9wdGlvbmFsTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmlu
ZGV4IDQwNDM3MjExZjEzMmVhOTU3NDgwODZiNWVhM2VkMjg2ODM0MWU3NjYuLjA0ZDJmMzFmOTMx
NmFjNDgyNjE1NzJhZGM2OWQwMWE3YjY2NDhkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmNwcApAQCAtMTM1LDEzICsxMzUsMTMgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3Rk
Ojp0dXBsZTxSZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKIAog
ICAgIEpTQzo6RGVidWdnZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRz
IHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzKG1fZGVidWdnZXIpOwogCi0g
ICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUudmFsdWVPcihmYWxzZSk7CisgICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25F
eGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUudmFsdWVfb3IoZmFsc2UpOwogICAgIGlmIChwYXVzZUFu
ZE11dGUpIHsKICAgICAgICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMu
cmVwbGFjZSgpOwogICAgICAgICBtdXRlQ29uc29sZSgpOwogICAgIH0KIAotICAgIGluamVjdGVk
U2NyaXB0LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVlT3IoZmFsc2UpLCByZXR1cm5CeVZhbHVlLnZhbHVlT3Io
ZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVP
cihmYWxzZSksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmpl
Y3RlZFNjcmlwdC5ldmFsdWF0ZShlcnJvclN0cmluZywgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAs
IGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZV9vcihmYWxzZSksIHJldHVybkJ5VmFsdWUudmFs
dWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0
LnZhbHVlX29yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwog
CiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAtMTYw
LDcgKzE2MCw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFByb21pc2UoY29u
c3QgUHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdElkCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpbmplY3RlZFNjcmlwdC5hd2FpdFByb21pc2UocHJvbWlzZU9iamVjdElkLCBy
ZXR1cm5CeVZhbHVlLnZhbHVlT3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxz
ZSksIHNhdmVSZXN1bHQudmFsdWVPcihmYWxzZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYmIHdhc1Ro
cm93biwgT3B0aW9uYWw8aW50PiYmIHNhdmVkUmVzdWx0SW5kZXgpIHsKKyAgICBpbmplY3RlZFNj
cmlwdC5hd2FpdFByb21pc2UocHJvbWlzZU9iamVjdElkLCByZXR1cm5CeVZhbHVlLnZhbHVlX29y
KGZhbHNlKSwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgc2F2ZVJlc3VsdC52YWx1
ZV9vcihmYWxzZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYmIHdhc1Rocm93biwgT3B0aW9uYWw8aW50
PiYmIHNhdmVkUmVzdWx0SW5kZXgpIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICBjYWxsYmFjay0+c2VuZEZhaWx1cmUoZXJyb3JTdHJpbmcpOwogICAgICAgICBlbHNlCkBAIC0x
ODEsMTMgKzE4MSwxMyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogCiAgICAgSlNDOjpEZWJ1
Z2dlcjo6VGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlE
aXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CiAKLSAgICBib29sIHBhdXNl
QW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1ZU9yKGZh
bHNlKTsKKyAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZS52YWx1ZV9vcihmYWxzZSk7CiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkgewogICAg
ICAgICB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAg
ICAgICAgIG11dGVDb25zb2xlKCk7CiAgICAgfQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1
bmN0aW9uT24oZXJyb3JTdHJpbmcsIG9iamVjdElkLCBmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmd1
bWVudHMgPyBhcmd1bWVudHMtPnRvSlNPTlN0cmluZygpIDogbnVsbFN0cmluZygpLCByZXR1cm5C
eVZhbHVlLnZhbHVlT3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHJl
c3VsdCwgd2FzVGhyb3duKTsKKyAgICBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25PbihlcnJv
clN0cmluZywgb2JqZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3VtZW50cyA/IGFyZ3Vt
ZW50cy0+dG9KU09OU3RyaW5nKCkgOiBudWxsU3RyaW5nKCksIHJldHVybkJ5VmFsdWUudmFsdWVf
b3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdhc1Ro
cm93bik7CiAKICAgICBpZiAocGF1c2VBbmRNdXRlKQogICAgICAgICB1bm11dGVDb25zb2xlKCk7
CkBAIC0yMzEsMTEgKzIzMSwxMSBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxl
PFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIGlmIChp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiTWlzc2luZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAotICAg
IGludCBzdGFydCA9IGZldGNoU3RhcnQudmFsdWVPcigwKTsKKyAgICBpbnQgc3RhcnQgPSBmZXRj
aFN0YXJ0LnZhbHVlX29yKDApOwogICAgIGlmIChzdGFydCA8IDApCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiZmV0Y2hTdGFydCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCi0gICAg
aW50IGNvdW50ID0gZmV0Y2hDb3VudC52YWx1ZU9yKDApOworICAgIGludCBjb3VudCA9IGZldGNo
Q291bnQudmFsdWVfb3IoMCk7CiAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJmZXRjaENvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7CiAKQEAgLTI0
NywxMSArMjQ3LDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5CiAKICAgICBtdXRlQ29uc29s
ZSgpOwogCi0gICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhlcnJvclN0cmluZywgb2Jq
ZWN0SWQsIG93blByb3BlcnRpZXMudmFsdWVPcihmYWxzZSksIHN0YXJ0LCBjb3VudCwgZ2VuZXJh
dGVQcmV2aWV3LnZhbHVlT3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKKyAgICBpbmplY3RlZFNjcmlw
dC5nZXRQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgb3duUHJvcGVydGllcy52YWx1
ZV9vcihmYWxzZSksIHN0YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNl
KSwgcHJvcGVydGllcyk7CiAKICAgICAvLyBPbmx5IGluY2x1ZGUgaW50ZXJuYWwgcHJvcGVydGll
cyBmb3IgdGhlIGZpcnN0IGZldGNoLgogICAgIGlmICghc3RhcnQpCi0gICAgICAgIGluamVjdGVk
U2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGdlbmVy
YXRlUHJldmlldy52YWx1ZU9yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKKyAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJ
ZCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsK
IAogICAgIHVubXV0ZUNvbnNvbGUoKTsKIApAQCAtMjY5LDExICsyNjksMTEgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVu
dGltZTo6UHJvcGVydHkKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBn
aXZlbiBvYmplY3RJZCJfcyk7CiAKLSAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlT3Io
MCk7CisgICAgaW50IHN0YXJ0ID0gZmV0Y2hTdGFydC52YWx1ZV9vcigwKTsKICAgICBpZiAoc3Rh
cnQgPCAwKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoImZldGNoU3RhcnQgY2Fubm90
IGJlIG5lZ2F0aXZlIl9zKTsKIAotICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVPcigw
KTsKKyAgICBpbnQgY291bnQgPSBmZXRjaENvdW50LnZhbHVlX29yKDApOwogICAgIGlmIChjb3Vu
dCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hDb3VudCBjYW5ub3Qg
YmUgbmVnYXRpdmUiX3MpOwogCkBAIC0yODUsMTEgKzI4NSwxMSBAQCBQcm90b2NvbDo6RXJyb3JT
dHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQ
cm9wZXJ0eQogCiAgICAgbXV0ZUNvbnNvbGUoKTsKIAotICAgIGluamVjdGVkU2NyaXB0LmdldERp
c3BsYXlhYmxlUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwg
Z2VuZXJhdGVQcmV2aWV3LnZhbHVlT3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKKyAgICBpbmplY3Rl
ZFNjcmlwdC5nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBz
dGFydCwgY291bnQsIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHByb3BlcnRpZXMp
OwogCiAgICAgLy8gT25seSBpbmNsdWRlIGludGVybmFsIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJz
dCBmZXRjaC4KICAgICBpZiAoIXN0YXJ0KQotICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRJbnRl
cm5hbFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcudmFs
dWVPcihmYWxzZSksIGludGVybmFsUHJvcGVydGllcyk7CisgICAgICAgIGluamVjdGVkU2NyaXB0
LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGdlbmVyYXRlUHJl
dmlldy52YWx1ZV9vcihmYWxzZSksIGludGVybmFsUHJvcGVydGllcyk7CiAKICAgICB1bm11dGVD
b25zb2xlKCk7CiAKQEAgLTMwNywxMSArMzA3LDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pj4K
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJf
cyk7CiAKLSAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlT3IoMCk7CisgICAgaW50IHN0
YXJ0ID0gZmV0Y2hTdGFydC52YWx1ZV9vcigwKTsKICAgICBpZiAoc3RhcnQgPCAwKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoImZldGNoU3RhcnQgY2Fubm90IGJlIG5lZ2F0aXZlIl9z
KTsKIAotICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVPcigwKTsKKyAgICBpbnQgY291
bnQgPSBmZXRjaENvdW50LnZhbHVlX29yKDApOwogICAgIGlmIChjb3VudCA8IDApCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiX3Mp
OwogCkBAIC0zOTIsOSArMzkyLDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046
OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBp
ZiAoIWxvY2F0aW9uKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVj
dGVkIG5vbi1vYmplY3QgaXRlbSBpbiBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVz
Y3JpcHRvciA9IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkpLnZhbHVlT3IoVHlwZVByb2ZpbGVy
U2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0
aW9uLT5nZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZv
cm1hdGlvbkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0
b3JOb3JtYWwpOwogICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0
cmluZyhQcm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAg
ICAgIGF1dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6
VHlwZUxvY2F0aW9uOjpkaXZvdEtleSkudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBkaXZvdCA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OmRp
dm90S2V5KS52YWx1ZV9vcigwKTsKIAogICAgICAgICBhdXRvIHR5cGVMb2NhdGlvbiA9IG1fdm0u
dHlwZVByb2ZpbGVyKCktPmZpbmRMb2NhdGlvbihkaXZvdCwgcGFyc2VJbnRlZ2VyPHVpbnRwdHJf
dD4oc291cmNlSURTdHJpbmcpLnZhbHVlKCksIHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3I+KGRlc2NyaXB0b3IpLCBtX3ZtKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1l
OjpCYXNpY0Jsb2NrPj4+IEluc3BlCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVk0g
aGFzIG5vIGNvbnRyb2wgZmxvdyBpbmZvcm1hdGlvbiJfcyk7CiAKICAgICBhdXRvIGJhc2ljQmxv
Y2tzID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0
ZSgpOwotICAgIGZvciAoY29uc3QgYXV0byYgYmxvY2sgOiBtX3ZtLmNvbnRyb2xGbG93UHJvZmls
ZXIoKS0+Z2V0QmFzaWNCbG9ja3NGb3JTb3VyY2VJRChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50cHRyX3Q+KHNvdXJjZUlEKS52YWx1ZU9yKDApLCBtX3ZtKSkgeworICAgIGZv
ciAoY29uc3QgYXV0byYgYmxvY2sgOiBtX3ZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFz
aWNCbG9ja3NGb3JTb3VyY2VJRChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
cHRyX3Q+KHNvdXJjZUlEKS52YWx1ZV9vcigwKSwgbV92bSkpIHsKICAgICAgICAgYXV0byBsb2Nh
dGlvbiA9IFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAg
ICAgLnNldFN0YXJ0T2Zmc2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAuc2V0
RW5kT2Zmc2V0KGJsb2NrLm1fZW5kT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5jcHAKaW5kZXggZTA2ZmJkOTk5NWJhZWE2ZDU4NzBhM2NiYmI1MjY4NzNlYTk2YzZhMS4u
YzU0ZmZlMGE2NmQ4NDNlODJjNjdiOTMzM2VmOTMyYjk4ZDg3OWU0MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUmVtb3RlQ29u
bmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBh
dXRvbWF0aWNhCiAgICAgaWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRpZmllcigpLnZhbHVl
T3IoMCk7CisgICAgYXV0byB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRpZmll
cigpLnZhbHVlX29yKDApOwogCiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90
ZUNvbnRyb2xBbGxvd2VkKCkpIHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24o
KS5zZXR1cEZhaWxlZCh0YXJnZXRJZGVudGlmaWVyKTsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIAogT3B0aW9uYWw8VGFy
Z2V0SUQ+IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fdGFyZ2V0ID8gT3B0aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50
YXJnZXRJZGVudGlmaWVyKCkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBtX3RhcmdldCA/
IE9wdGlvbmFsPFRhcmdldElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcAppbmRl
eCBkMWQ5NTJjOTQ0NTk2N2FhOGExMWYxMjQzODJhYmEyYTJiOWU3MzllLi4xY2M0MDkzNDYzNWZl
ZjU0OTFhY2Y0YWNmYmU3YmY4MjcyMTEwMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0
aWVzKCkKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fY2xpZW50Q2FwYWJpbGl0aWVzID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAg
ICBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzIHVwZGF0ZWRDYXBhYmlsaXRp
ZXMgPSB7CiAgICAgICAgICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0K
aW5kZXggOGIyYTdmYTM4YWEwNjhlNDUzNDNmMzRhNDcyY2YxYWUwNTBhZTA4Ni4uZTgyNDVlMWU3
OTFjYzU4ZmI4MDMzNGJhYjdkYzFlY2ZiZTc2ZmRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTEyMyw3ICsxMjMsNyBAQCBS
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogCiBP
cHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlm
aWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4o
bV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IG1fdGFyZ2V0ID8gT3B0aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCkpIDogc3RkOjpudWxsb3B0OwogfQogCiBOU1N0cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Ojpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9v
bCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0
aW9uLCBib29sIGF1dG9tYXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlm
aWVyKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJn
ZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCk7CiAKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQo
W3RoaXMsIHRhcmdldElkZW50aWZpZXIsIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYXV0b21hdGlj
YWxseVBhdXNlLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewogICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV90YXJnZXRNdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25D
bGllbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IDVlMzg3OThlYTBiMTg1
NTQ5MGJlNWM2ZjljMzgxYTVjNWE0ZTJhZDYuLjdlOWRmZjM4M2ExN2JkNjg3ZjVkZmVmZDYwZDZk
MTA5YTQxOTNmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yQ29ubmVjdGlvbkNsaWVudC5jcHAKQEAgLTg4LDIzICs4OCwyMyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmRpZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQmLAogT3B0aW9uYWw8UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZl
bnQ+IFJlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OmV4dHJhY3RFdmVudChDb25uZWN0
aW9uSUQgY2xpZW50SUQsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGpzb25EYXRhID0gU3RyaW5nOjpmcm9tVVRGOChk
YXRhKTsKIAogICAgIGF1dG8gbWVzc2FnZVZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihq
c29uRGF0YSk7CiAgICAgaWYgKCFtZXNzYWdlVmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG1lc3NhZ2VP
YmplY3QgPSBtZXNzYWdlVmFsdWUtPmFzT2JqZWN0KCk7CiAgICAgaWYgKCFtZXNzYWdlT2JqZWN0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgRXZlbnQgZXZlbnQ7CiAKICAgICBldmVudC5tZXRob2ROYW1lID0gbWVzc2Fn
ZU9iamVjdC0+Z2V0U3RyaW5nKCJldmVudCJfcyk7CiAgICAgaWYgKCFldmVudC5tZXRob2ROYW1l
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZXZlbnQuY2xpZW50SUQgPSBjbGllbnRJRDsKIApAQCAtMTIzLDExICsxMjMs
MTEgQEAgT3B0aW9uYWw8VmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+Pj4gUmVtb3RlSW5zcGVjdG9y
Q29ubmVjdGlvbkNsaWVudDo6cGFyc2VUYXJnZXQKIHsKICAgICBhdXRvIG1lc3NhZ2VWYWx1ZSA9
IEpTT046OlZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgaWYgKCFtZXNzYWdlVmFsdWUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIG1lc3NhZ2VBcnJheSA9IG1lc3NhZ2VWYWx1ZS0+YXNBcnJheSgpOwog
ICAgIGlmICghbWVzc2FnZUFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+
PiB0YXJnZXRMaXN0OwogICAgIGZvciAoYXV0byYgaXRlbVZhbHVlIDogKm1lc3NhZ2VBcnJheSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBmMmI0
ODBmOTBhYzRjOTE4M2Y1NmQ5YWQ3MWEyZTNjYmFjZjIxNzBlLi42MjA0ZDQxZDM4ZDQ2YTE5NzI5
ZmM4MjgwMjRmZDUyODQ2NjQyNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yU2VydmVyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBib29sIFJlbW90ZUluc3BlY3RvclNlcnZl
cjo6c3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywgdWludDE2X3QgcG9ydCkKIE9wdGlvbmFsPHVp
bnQxNl90PiBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OmdldFBvcnQoKSBjb25zdAogewogICAgIGlm
ICghaXNSdW5uaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdCBhdXRvJiBlbmRwb2ludCA9IEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OnNpbmdsZXRvbigpOwogICAgIHJldHVy
biBlbmRwb2ludC5nZXRQb3J0KG1fc2VydmVyLnZhbHVlKCkpOwpAQCAtNzUsNyArNzUsNyBAQCBP
cHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVt
b3RlSW5zcGVjdG9yU29ja2V0RW5kcAogICAgIGF1dG8mIGluc3BlY3RvciA9IFJlbW90ZUluc3Bl
Y3Rvcjo6c2luZ2xldG9uKCk7CiAgICAgaWYgKGluc3BlY3Rvci5pc0Nvbm5lY3RlZCgpKSB7CiAg
ICAgICAgIExPR19FUlJPUigiUmVtb3RlSW5zcGVjdG9yIGNhbiBhY2NlcHQgb25seSAxIGNsaWVu
dCIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRvIG5ld0lEID0gZW5kcG9pbnQuY3JlYXRlQ2xp
ZW50KHNvY2tldCwgaW5zcGVjdG9yKSkgewpAQCAtODMsNyArODMsNyBAQCBPcHRpb25hbDxDb25u
ZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcAogICAgICAgICByZXR1cm4gbmV3SUQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
aW5kZXggZTMwNThmNTAxZGM3MDlmYjI4ZTY4NjViNjk1MzNhNmI1OWM4NjVkNi4uZDg1ZjBjYmZh
MDlkMGJkMDMxOTcwNzAzYTJlYzk3M2YzM2JlZmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1Jl
bW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZW1vdGVJbnNw
ZWN0b3I6OmRpZENsb3NlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlv
bklEKQogewogICAgIEFTU0VSVChpc0Nvbm5lY3RlZCgpKTsKIAotICAgIG1fY2xpZW50Q29ubmVj
dGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NsaWVudENvbm5lY3Rpb24gPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWz1dIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCmluZGV4IGE1MGM5NDIwODJhYWU0YWQ0YTY0ZDQz
OWU3OWI3NWJmMTg1MGNjMWIuLmU0NTAxZGY1ZGI3ODA1MjExZDFlYzVhNDFmMjkwOTBhOTZiZWZj
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50LmNwcApAQCAtODQsNyArODQsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90
ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZQogewog
ICAgIGlmIChhdXRvIHNvY2tldCA9IFNvY2tldDo6Y29ubmVjdChzZXJ2ZXJBZGRyZXNzLCBzZXJ2
ZXJQb3J0KSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNsaWVudCgqc29ja2V0LCBjbGllbnQpOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlz
dGVuSW5ldChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYgbGlz
dGVuZXIpCkBAIC05Myw3ICs5Myw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5z
cGVjdG9yU29ja2V0RW5kcG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkCiAgICAgYXV0
byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAgYXV0byBjb25uZWN0aW9uID0gbWFr
ZVVuaXF1ZTxMaXN0ZW5lckNvbm5lY3Rpb24+KGlkLCBsaXN0ZW5lciwgYWRkcmVzcywgcG9ydCk7
CiAgICAgaWYgKCFjb25uZWN0aW9uLT5pc0xpc3RlbmluZygpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbV9saXN0ZW5l
cnMuYWRkKGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKICAgICB3YWtldXBXb3JrZXJUaHJlYWQo
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogICAgIGF1dG8g
aWQgPSBnZW5lcmF0ZUNvbm5lY3Rpb25JRCgpOwogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VV
bmlxdWU8Q2xpZW50Q29ubmVjdGlvbj4oaWQsIHNvY2tldCwgY2xpZW50KTsKICAgICBpZiAoIVNv
Y2tldDo6aXNWYWxpZChjb25uZWN0aW9uLT5zb2NrZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbV9jbGllbnRzLmFk
ZChpZCwgV1RGTW92ZShjb25uZWN0aW9uKSk7CiAgICAgd2FrZXVwV29ya2VyVGhyZWFkKCk7CkBA
IC0yNzEsNyArMjcxLDcgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50OjpnZXRQb3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKICAgICBpZiAoY29uc3Qg
YXV0byYgY29ubmVjdGlvbiA9IG1fY2xpZW50cy5nZXQoaWQpKQogICAgICAgICByZXR1cm4gU29j
a2V0OjpnZXRQb3J0KGNvbm5lY3Rpb24tPnNvY2tldCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9y
U29ja2V0RW5kcG9pbnQ6OnJlY3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1Jl
bW90ZUluc3BlY3RvclNvY2tldFBPU0lYLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL3NvY2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQT1NJWC5jcHAK
aW5kZXggN2ZlNjc4NjU4YmQ1ZDc1MmM2YmVmN2I2OTcwYmRkYzcyM2I4NzMxZi4uZGE2ODUxODlk
NTJmMDY2NGM1NDFkMzVhNjQyOWFhNDBiMDE3MTRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNv
Y2tldFBPU0lYLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvcG9zaXgvUmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwCkBAIC01NSwxNCAr
NTUsMTQgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIq
IHNlcnZlckFkZHJlc3MsIHVpbnQxNl90IHNlcnZlclAKICAgICBpbnQgZmQgPSBzb2NrZXQoQUZf
SU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKTsKICAgICBpZiAoZmQgPCAwKSB7CiAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBzb2NrZXQgZm9yICVzOiVkLCBlcnJubyA9
ICVkIiwgc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCwgZXJybm8pOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IGludCBlcnJvciA9IDo6Y29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciopJmFkZHJlc3MsIHNp
emVvZihhZGRyZXNzKSk7CiAgICAgaWYgKGVycm9yIDwgMCkgewogICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCB0byBjb25uZWN0IHRvICVzOiV1LCBlcnJubyA9ICVkIiwgc2VydmVyQWRkcmVzcywg
c2VydmVyUG9ydCwgZXJybm8pOwogICAgICAgICA6OmNsb3NlKGZkKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICByZXR1cm4gZmQ7CkBAIC03NSw3ICs3NSw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlw
ZT4gbGlzdGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgaW50
IGZkTGlzdGVuID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7CiAg
ICAgaWYgKGZkTGlzdGVuIDwgMCkgewogICAgICAgICBMT0dfRVJST1IoInNvY2tldCgpIGZhaWxl
ZCwgZXJybm8gPSAlZCIsIGVycm5vKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb25zdCBpbnQgZW5hYmxl
ZCA9IDE7CkBAIC04MywyMSArODMsMjEgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBs
aXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKICAgICBpZiAoZXJy
b3IgPCAwKSB7CiAgICAgICAgIExPR19FUlJPUigic2V0c29ja29wdCgpIFNPX1JFVVNFQUREUiwg
ZXJybm8gPSAlZCIsIGVycm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgZXJyb3IgPSBzZXRzb2Nrb3B0KGZkTGlzdGVuLCBTT0xfU09DS0VULCBTT19SRVVT
RVBPUlQsICZlbmFibGVkLCBzaXplb2YoZW5hYmxlZCkpOwogICAgIGlmIChlcnJvciA8IDApIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJzZXRzb2Nrb3B0KCkgU09fUkVVU0VQT1JULCBlcnJubyA9ICVk
IiwgZXJybm8pOwogICAgICAgICA6OmNsb3NlKGZkTGlzdGVuKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICNpZiBQ
TEFURk9STShQTEFZU1RBVElPTikKICAgICBpZiAoc2V0c29ja29wdChmZExpc3RlbiwgU09MX1NP
Q0tFVCwgU09fVVNFX0RFVkxBTiwgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSkgPCAwKSB7CiAg
ICAgICAgIExPR19FUlJPUigic2V0c29ja2V0b3B0KCkgU09fVVNFX0RFVkxBTiwgZXJybm8gPSAl
ZCIsIGVycm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTExMiwxNCArMTEyLDE0IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlz
dGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgaWYgKGVycm9y
IDwgMCkgewogICAgICAgICBMT0dfRVJST1IoImJpbmQoKSBmYWlsZWQsIGVycm5vID0gJWQiLCBl
cnJubyk7CiAgICAgICAgIDo6Y2xvc2UoZmRMaXN0ZW4pOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVycm9y
ID0gOjpsaXN0ZW4oZmRMaXN0ZW4sIDEpOwogICAgIGlmIChlcnJvciA8IDApIHsKICAgICAgICAg
TE9HX0VSUk9SKCJsaXN0ZW4oKSBmYWlsZWQsIGVycm5vID0gJWQiLCBlcnJubyk7CiAgICAgICAg
IDo6Y2xvc2UoZmRMaXN0ZW4pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBmZExpc3RlbjsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0
Zm9ybVNvY2tldFR5cGUgc29ja2V0KQogICAgICAgICByZXR1cm4gZmQ7CiAKICAgICBMT0dfRVJS
T1IoImFjY2VwdChpbmV0KSBlcnJvciAoZXJybm8gPSAlZCkiLCBlcnJubyk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxz
dGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQpAQCAtMTQzLDcg
KzE0Myw3IEBAIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3Jl
YXRlUGFpcigpCiAgICAgc3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+IHNvY2tldHM7
CiAKICAgICBpZiAoc29ja2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgJnNvY2tldHNb
MF0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHNvY2tldHM7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgT3B0
aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICBz
b2NrbGVuX3QgbGVuID0gc2l6ZW9mKGFkZHJlc3MpOwogICAgIGlmIChnZXRzb2NrbmFtZShzb2Nr
ZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHNvY2thZGRyKj4oJmFkZHJlc3MpLCAmbGVuKSkg
ewogICAgICAgICBMT0dfRVJST1IoImdldHNvY2tuYW1lKCkgZXJyb3IgKGVycm5vID0gJWQpIiwg
ZXJybm8pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gYWRkcmVzcy5zaW5fcG9ydDsKIH0KQEAgLTIx
MSw3ICsyMTEsNyBAQCBPcHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNv
Y2tldCwgdm9pZCogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4ocmVhZFNpemUpOwogCiAgICAgTE9HX0VSUk9SKCJyZWFkIGVycm9yIChl
cnJubyA9ICVkKSIsIGVycm5vKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPHNpemVfdD4gd3JpdGUoUGxhdGZvcm1Tb2Nr
ZXRUeXBlIHNvY2tldCwgY29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUpCkBAIC0yMjMsNyArMjIz
LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBj
b25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4od3JpdGVTaXplKTsKIAogICAgIExPR19FUlJPUigid3JpdGUgZXJyb3IgKGVycm5vID0g
JWQpIiwgZXJybm8pOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBjbG9zZShQbGF0Zm9ybVNvY2tldFR5cGUmIHNvY2tldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93
aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcApp
bmRleCAwNWYyOGExMDQ3ZTU5MjExMWUzYTBhN2NmMWVlZGI3OWIwYjRmNjk3Li42ZWQ4MGViYjdi
YWQ0NjE2ZDZjYjIzZDFhYzJkOWY4ZmU4YmY2NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvd2luL1JlbW90ZUluc3BlY3RvclNvY2tl
dFdpbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAg
T3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFk
ZHJlc3MsIHVpbnQxNl90IHNlcnZlclAKICAgICBhdXRvIHNvY2tldCA9IGNvbm5lY3RUbyhhZGRy
ZXNzKTsKICAgICBpZiAoIWlzVmFsaWQoc29ja2V0KSkgewogICAgICAgICBMT0dfRVJST1IoImNv
bm5lY3RpbmcgdG8gJXM6JXUgZmFpbGVkIChlcnJubyA9ICVkKSIsIHNlcnZlckFkZHJlc3MsIHNl
cnZlclBvcnQsIFdTQUdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gc29j
a2V0OwpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlz
dGVuKGNvbnN0IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAKICAgICBhdXRvIHNv
Y2tldCA9IGJpbmRBbmRMaXN0ZW4oYWRkcmVzcyk7CiAgICAgaWYgKCFpc1ZhbGlkKHNvY2tldCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gc29ja2V0OwogfQpAQCAtMjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFs
PFBsYXRmb3JtU29ja2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAg
ICAgICAgIHJldHVybiBmZDsKIAogICAgIExPR19FUlJPUigiZmFpbGVkIChlcnJubyA9ICVkKSIs
IFdTQUdldExhc3RFcnJvcigpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRU
eXBlLCAyPj4gY3JlYXRlUGFpcigpCkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBPcHRpb25hbDxzdGQ6
OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogCiAgICAgU29ja2V0
IHNlcnZlcihiaW5kQW5kTGlzdGVuKGFkZHJlc3MpKTsKICAgICBpZiAoIXNlcnZlcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVpbnQxNl90PiBzZXJ2ZXJQb3J0ID0gZ2V0UG9ydChzZXJ2ZXIpOwogICAg
IGlmICghc2VydmVyUG9ydCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGFkZHJlc3Muc2luX3BvcnQgPSBodG9ucygqc2Vy
dmVyUG9ydCk7CiAKQEAgLTIyNiw3ICsyMjYsNyBAQCBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRm
b3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogICAgIHNvY2tldHNbMF0gPSBjb25uZWN0
VG8oYWRkcmVzcyk7CiAgICAgaWYgKCFpc1ZhbGlkKHNvY2tldHNbMF0pKSB7CiAgICAgICAgIExP
R19FUlJPUigiY29ubmVjdGluZyBmYWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9y
KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRvIHNvY2tldCA9IGFjY2VwdChzZXJ2ZXIpKSB7
CkBAIC0yMzQsNyArMjM0LDcgQEAgT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5
cGUsIDI+PiBjcmVhdGVQYWlyKCkKICAgICAgICAgcmV0dXJuIHNvY2tldHM7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIHNldHVwKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCkBAIC0yNzIsNyArMjcyLDcgQEAg
T3B0aW9uYWw8dWludDE2X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAg
ICBpbnQgbGVuID0gc2l6ZW9mKGFkZHJlc3MpOwogICAgIGlmIChnZXRzb2NrbmFtZShzb2NrZXQs
IHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHNvY2thZGRyKj4oJmFkZHJlc3MpLCAmbGVuKSkgewog
ICAgICAgICBMT0dfRVJST1IoImdldHNvY2tuYW1lKCkgZmFpbGVkIChlcnJubyA9ICVkKSIsIFdT
QUdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIG50b2hzKGFkZHJlc3Muc2lu
X3BvcnQpOwogfQpAQCAtMjg2LDcgKzI4Niw3IEBAIE9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0
Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWFkU2l6ZSk7CiAKICAgICBMT0dfRVJS
T1IoInJlY3YoKSBmYWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0
aW9uYWw8c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lk
KiBkYXRhLCBpbnQgc2l6ZSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxzaXplX3Q+IHdy
aXRlKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXpl
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3cml0ZVNpemUpOwogCiAgICAg
TE9HX0VSUk9SKCJzZW5kKCkgZmFpbGVkIChlcnJubyA9ICVkKSIsIFdTQUdldExhc3RFcnJvcigp
KTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgY2xvc2UoUGxhdGZvcm1Tb2NrZXRUeXBlJiBzb2NrZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNf
aW1wbGVtZW50YXRpb24ucHkKaW5kZXggNDUyZmM3MDFlODRmZmMxZGZjMTIwNjM3NTY3ZjA3YThl
NGUxZTdhZC4uY2Q4OTM5NjVjYjdjY2EwN2JjYjJkNmM4MmFiOTcwZWIyNWYzZGM1MiAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIENw
cFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgICAgICcgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50
X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pJywKICAgICAgICAgICAgICAgICAnICAgICAgICAg
ICAgcmV0dXJuICglcyljb25zdGFudFZhbHVlc1tpXTsnICUgY3BwX3Byb3RvY29sX3R5cGUsCiAg
ICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgJyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OycsCisgICAgICAgICAgICAgICAgJyAgICByZXR1cm4gc3RkOjpudWxsb3B0OycsCiAgICAg
ICAgICAgICAgICAgJ30nLAogICAgICAgICAgICAgXSkKICAgICAgICAgICAgIHJldHVybiAnXG4n
LmpvaW4oYm9keV9saW5lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJz
aW9uc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5
CmluZGV4IDg1ZjBmY2M5MTMyZDY5YzU5N2YxYTY4YjBhM2I5MDE1NjM2NGNhZGIuLmE2YTY0M2Zj
ODg1MzMyZjFiMGJkZDhiNzU4ZTI4NDA4ZmVmNWY1MTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2Nv
bnZlcnNpb25zX2hlYWRlci5weQpAQCAtMTY4LDYgKzE2OCw2IEBAIGNsYXNzIE9iakNQcm90b2Nv
bFR5cGVDb252ZXJzaW9uc0hlYWRlckdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAg
Zm9yIGVudW1fdmFsdWUgaW4gZW51bV92YWx1ZXM6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICBpZiAodmFsdWUgPT0gIiVzIiknICUgZW51bV92YWx1ZSkKICAgICAgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgICAgICByZXR1cm4gJXMlczsnICUgKG9iamNfZW51bV9uYW1lLCBHZW5lcmF0
b3Iuc3R5bGl6ZWRfbmFtZV9mb3JfZW51bV92YWx1ZShlbnVtX3ZhbHVlKSkpCi0gICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIHJldHVybiBXVEY6Om51bGxvcHQ7JykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ30n
KQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCA4ZjY3ZGE0NmE4MDUw
NGEyYjQ2MTVjMGM1ZmVhZmRlZjEyNGNlOWM2Li4yZDQ5Mjg2YzE3YjdkN2QzMGFhYzRjMzFlYzFk
MTU0MjdhYmVhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjU0LDE2ICsyNTQsMTYgQEAgU3RhY2tWaXNpdG9yOjpG
cmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5cGUoKSBjb25zdAogT3B0
aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IFN0YWNrVmlzaXRvcjo6RnJhbWU6OmNhbGxlZVNh
dmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKQogewogICAgIGlmICghTlVNQkVSX09GX0NBTExFRV9T
QVZFU19SRUdJU1RFUlMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXNJbmxpbmVkRnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoaXNXYXNtRnJhbWUoKSkgewogICAgICAgICBp
ZiAoY2FsbGVlKCkuaXNDZWxsKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzV2Vi
QXNzZW1ibHlNb2R1bGUoY2FsbGVlKCkuYXNDZWxsKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9
CiAgICAgICAgIFdhc206OkNhbGxlZSogd2FzbUNhbGxlZSA9IGNhbGxlZSgpLmFzV2FzbUNhbGxl
ZSgpOwogICAgICAgICByZXR1cm4gKndhc21DYWxsZWUtPmNhbGxlZVNhdmVSZWdpc3RlcnMoKTsK
QEAgLTI3OCw3ICsyNzgsNyBAQCBPcHRpb25hbDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gU3RhY2tW
aXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2luZAogICAgIGlmIChDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQogICAgICAgICByZXR1cm4gKmNv
ZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJM
RVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwCmluZGV4IDYxOTQ1NWIxZjZkYmFjYTRhN2RkYWM3Y2JmNmQ5YzkyZmExNmNhMmQuLmVl
NWUzOGEyODM0ZWNiYTg0NWU2MjkxZGM3NjVjNTIwN2IyZjA3OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcApAQCAtNzg5LDcgKzc4
OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50cHRyX3QgZW5kID0gdGhpcy0+ZW5kKCk7
CiAgICAgICAgICAgICBpZiAoaXNsYW5kQmVnaW4oKSA8PSBpc2xhbmQgJiYgaXNsYW5kIDwgZW5k
KQogICAgICAgICAgICAgICAgIHJldHVybiAoKGVuZCAtIGlzbGFuZCkgLyBpc2xhbmRTaXplSW5C
eXRlcykgLSAxOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGZyZWVJc2xh
bmQodWludHB0cl90IGlzbGFuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXgg
NmZhNzI0NGVmMGEwOGM5ZjA0N2EzMjIwNGY3MzdkMjkyODcxOTA2Zi4uODU1N2QwZWU1ZDhhZDhi
MTQ0MmQ4MzBlNGQ2NzcxZmYwY2E4YjM3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZp
cnR1YWwgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVBdEV4Y2VwdGlvbkhhbmRs
aW5nQ2FsbFNpdGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCk7Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BB
UkFNKHBjKTsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8Q29k
ZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVOVVNFRF9QQVJBTShwYyk7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiAgICAgSW50cmluc2ljIGludHJpbnNp
YygpIHsgcmV0dXJuIG1faW50cmluc2ljOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCmluZGV4IDI2NDcxOGQ5N2M3ODRiYzJmYTc3NDAzMWFm
Y2RiMDgwOTlkMWU1OTMuLjBiMzdhNDE5NTk3ZDMzNTYzMjZmYTY0NWY5ZWMyNzY0MjU3ZTUyNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3Bw
CkBAIC0yNTEsNyArMjUxLDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gUENUb0NvZGVPcmlnaW5N
YXA6OmZpbmRQQyh2b2lkKiBwYykgY29uc3QKIHsKICAgICB1aW50cHRyX3QgcGNBc0ludCA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKICAgICBpZiAoIShtX3BjUmFuZ2VTdGFydCA8PSBw
Y0FzSW50ICYmIHBjQXNJbnQgPD0gbV9wY1JhbmdlRW5kKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnRwdHJfdCBj
dXJyZW50UEMgPSAwOwogICAgIEJ5dGVjb2RlSW5kZXggY3VycmVudEJ5dGVjb2RlSW5kZXggPSBC
eXRlY29kZUluZGV4KDApOwpAQCAtMzAwLDcgKzMwMCw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+
IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0CiAgICAgfQogCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBmZjhmNTdlNDZhZmMxMTQ1Zjc2ZTRj
NTljNmI4YzRmYmM0NTkwYjA4Li42NzMwMzk0MjYzZjMyZjFiNTM1NGMyMGQ1NGRlMjQzMDQ3Mjk5
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMTUzOSw3ICsx
NTM5LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUhleCgpIC0+IE9wdGlv
bmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIGRvIHsKICAgICAgICAgaWYgKG1fY3VycmVudCA9
PSAnXycpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJSUhleERpZ2l0KHBlZWso
MSkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAg
IH0KQEAgLTE1NjYsNyArMTU2Niw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFy
c2VIZXgoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB3aGlsZSAoaXNBU0NJ
SUhleERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAgICBpZiAobV9jdXJyZW50
ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGlnaXQocGVl
aygxKSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAg
ICAgfQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+Ojpw
YXJzZUJpbmFyeSgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIGRvIHsKICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnXycpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
aXNBU0NJSUJpbmFyeURpZ2l0KHBlZWsoMSkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIH0KQEAgLTE2MTcsNyArMTYxNyw3IEBAIEFMV0FZU19J
TkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJz
ZVJlc3VsdD4KICAgICB3aGlsZSAoaXNBU0NJSUJpbmFyeURpZ2l0T3JTZXBhcmF0b3IobV9jdXJy
ZW50KSkgewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTYzMCw3ICsxNjMwLDcg
QEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpIC0+IE9wdGlvbmFs
PE51bWJlclBhcnNlUmVzdWx0PgogICAgICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBt
YWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKSB9OwogCiAg
ICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE51bWJlclBh
cnNlUmVzdWx0IHsgcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjgu
c2l6ZSgpLCAyKSB9OwogfQpAQCAtMTY1Myw3ICsxNjUzLDcgQEAgQUxXQVlTX0lOTElORSBhdXRv
IExleGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAg
ICAgZG8gewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKCFpc0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSB8fCBpc0xlZ2FjeUxpdGVyYWwp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpA
QCAtMTY3Myw3ICsxNjczLDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9j
dGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgd2hpbGUgKGlzQVNDSUlP
Y3RhbERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAgICBpZiAobV9jdXJyZW50
ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJT2N0YWxEaWdpdChw
ZWVrKDEpKSB8fCBpc0xlZ2FjeUxpdGVyYWwpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTY4Niw3ICsxNjg2LDcgQEAgQUxXQVlTX0lO
TElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VS
ZXN1bHQ+CiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IG1ha2VJZGVudGlmaWVy
KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpIH07CiAKICAgICBpZiAoaXNBU0NJ
SURpZ2l0KG1fY3VycmVudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTnVtYmVyUGFyc2VSZXN1bHQgeyBw
YXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCksIDgpIH07
CiB9CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBh
cnNlRGVjaW1hbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWSghaXNBU0NJSURpZ2l0KHBlZWsoMSkpIHx8IGlzTGVnYWN5TGl0ZXJhbCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICAgICAgfQpAQCAtMTczMyw3ICsxNzMzLDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVy
PFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB3
aGlsZSAoaXNBU0NJSURpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJRGln
aXQocGVlaygxKSkgfHwgaXNMZWdhY3lMaXRlcmFsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIH0KQEAgLTE3NDUsNyArMTc0NSw3IEBAIEFMV0FZ
U19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkgLT4gT3B0aW9uYWw8TnVtYmVy
UGFyc2VSZXN1bHQ+CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnbicgJiYgIWlzTGVn
YWN5TGl0ZXJhbCkpCiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IG1ha2VJZGVu
dGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpIH07CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMDlh
YzdjMjRkYTQ1YTRlNTY0YTA2NzA1NDEwMmU4OTk1ZjgxNzgyYS4uM2Y1ZDNjOWE1NjMxMzA0MmEw
ZjczNzU1NWY1Y2Y5YzJiYWQ3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC05OTIsNyArOTkyLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQYXJzaW5nQ29udGV4dCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0g
V1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNv
bnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVy
JiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgUHJpdmF0ZU5hbWVFbnZpcm9u
bWVudCogPSBudWxscHRyLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVs
bHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTI3Niw3ICsxMjc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUo
KSkKICAgICAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKIAotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIFNjb3BlUmVmIHByaXZhdGVOYW1lU2NvcGUoKQpAQCAtMTc0OSw5ICsxNzQ5
LDkgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUgeyBFeHBvcnRlZCwgTm90
RXhwb3J0ZWQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgcGFyc2VDbGFzc0RlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9y
dFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRp
b25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQpOwogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25EZWNs
YXJhdGlvblR5cGUgeyBEZWNsYXJhdGlvbiwgU3RhdGVtZW50IH07Ci0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihU
cmVlQnVpbGRlciYsIEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlID0gRnVuY3Rpb25EZWNsYXJhdGlv
blR5cGU6OkRlY2xhcmF0aW9uLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQs
IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpT
dGFuZGFyZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRnVu
Y3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlvbkRlY2xhcmF0aW9uVHlwZTo6RGVjbGFyYXRp
b24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZh
dWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkLCBPcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51
bGxvcHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBib29sIHBhcmVu
dEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRpb25Bc1N0YXRlbWVudCk7Ci0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0
aW9uKFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBE
ZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3Rh
bmRhcmQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiA9IFdURjo6bnVsbG9wdCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwg
RXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRD
b250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNl
VmFyaWFibGVEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIERlY2xhcmF0aW9uVHlwZSwgRXhwb3J0
VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VEb1doaWxlU3RhdGVtZW50KFRyZWVCdWlsZGVy
Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNl
V2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKQEAgLTE4MjEsNyArMTgyMSw3IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVF
eHByZXNzaW9uIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShUcmVlQnVpbGRlciYsIGNvbnN0
IElkZW50aWZpZXIqLCBib29sIGlzRXZhbCwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mKTsKIAogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2QgfTsKLSAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rp
b25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9u
YWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpu
dWxsb3B0KTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19J
TkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAg
CkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2Uo
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0
TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JU
b3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVy
cm9yLCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZh
bCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJp
dmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkg
PyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBzdGQ6Om51
bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKICAg
ICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGlu
KSB7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFy
c2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29u
c3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
ICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVjaWFsIGNvbnN0cnVjdG9ycyBzaG91bGQgYWx3YXlz
IHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAgICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJz
ZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNl
TW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5j
dGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxD
b250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7
Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwg
aXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5n
Q29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywg
Y2xhc3NGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0Nv
bnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgc3RkOjpudWxsb3B0LCBwYXJl
bnRTY29wZVByaXZhdGVOYW1lcywgY2xhc3NGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKaW5kZXggNjQyMzI3
MGQ4YWUwOTFhNzMwMWNhOGM4NTM1OTBiOGEzN2JjYTQ2OS4uNGIzYjNiZTMwM2ViZWFkYzg2NDAw
OTdjN2Y4ODU3ZTE3YTRlZGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Tb3VyY2VDb2RlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VDb2RlS2V5LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgOiBt
X3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAg
ICAgICAgICAsIG1fZmxhZ3MoY29kZVR5cGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGRlcml2
ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBj
b2RlR2VuZXJhdGlvbk1vZGUpCi0gICAgICAgICAgICAsIG1fZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLnZhbHVlT3IoLTEpKQorICAgICAgICAgICAgLCBtX2Z1bmN0aW9uQ29uc3RydWN0b3JQYXJh
bWV0ZXJzRW5kUG9zaXRpb24oZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
bi52YWx1ZV9vcigtMSkpCiAgICAgICAgICAgICAsIG1faGFzaChzb3VyY2VDb2RlLmhhc2goKSBe
IG1fZmxhZ3MuYml0cygpKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKaW5kZXggNWU3NjIzMjlk
NWRiNmFkZDAxYjY2ZjVkYTNhNjRmMTBmZjBhOGQxMS4uN2JmNWMzZTAxYmNjMDAxNjZmNzA0MTVm
ODMzY2QxNzJkZjVkNTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGF1dG8g
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBs
KiBsb2NhbE5hbWUpIC0+IE9wCiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1faW1wb3J0
RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1faW1wb3J0RW50
cmllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0RW50cnk+KGl0ZXJhdG9y
LT52YWx1ZSk7CiB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBhdXRvIEFic3RyYWN0TW9kdWxlUmVj
b3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkgLT4g
TwogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVudHJpZXMuZmluZChleHBv
cnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRyaWVzLmVuZCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldENhY2hl
ZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUpCiB7CiAgICAgY29uc3Qg
YXV0byBpdGVyYXRvciA9IG1fcmVzb2x1dGlvbkNhY2hlLmZpbmQoZXhwb3J0TmFtZSk7CiAgICAg
aWYgKGl0ZXJhdG9yID09IG1fcmVzb2x1dGlvbkNhY2hlLmVuZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBP
cHRpb25hbDxSZXNvbHV0aW9uPihpdGVyYXRvci0+dmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNWQ1YzBhOGM2YjYxNTY4
OTg4ZmIzYjRiM2IxZjZiZjAwZjM2ZDI1Ni4uY2IxZjlmZjA3YTNmMjc2YjQ0OWJjODNhOTgwMGUy
YTdhM2E4YzAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8g
aXQgPSBtX3B0clRvT2Zmc2V0TWFwLmZpbmQocHRyKTsKICAgICAgICAgaWYgKGl0ID09IG1fcHRy
VG9PZmZzZXRNYXAuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgaXQtPnZhbHVl
IH07CiAgICAgfQogCkBAIC0zMTQsMTEgKzMxNCwxMSBAQCB2b2lkIERlY29kZXI6OmNhY2hlT2Zm
c2V0KHB0cmRpZmZfdCBvZmZzZXQsIHZvaWQqIHB0cikKICAgICBtX29mZnNldFRvUHRyTWFwLmFk
ZChvZmZzZXQsIHB0cik7CiB9CiAKLVdURjo6T3B0aW9uYWw8dm9pZCo+IERlY29kZXI6OmNhY2hl
ZFB0ckZvck9mZnNldChwdHJkaWZmX3Qgb2Zmc2V0KQorc3RkOjpvcHRpb25hbDx2b2lkKj4gRGVj
b2Rlcjo6Y2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZfdCBvZmZzZXQpCiB7CiAgICAgYXV0byBp
dCA9IG1fb2Zmc2V0VG9QdHJNYXAuZmluZChvZmZzZXQpOwogICAgIGlmIChpdCA9PSBtX29mZnNl
dFRvUHRyTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IGl0LT52YWx1ZSB9OwogfQogCkBAIC04
MzYsNyArODM2LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPFNvdXJjZVR5cGU8VD4+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHRoaXMtPmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7IHRoaXMtPnRlbXBsYXRlIGJ1ZmZl
cjxUPigpLT5kZWNvZGUoZGVjb2RlcikgfTsKICAgICB9CkBAIC04NDksNyArODQ5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxTb3VyY2VUeXBlPFQ+PiYgc291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCFzb3VyY2Up
Ci0gICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IGVuY29kZShlbmNvZGVyLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBlbmNvZGUoZW5jb2RlciwgeyAqc291cmNlIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCmluZGV4IDZiOTZiNTI5NGQ2NDNlNzMyNDIwZWIw
NzhlY2Q4MzQwZDk3MTE2NmIuLjU5NDU4NzMzMDJjYzIyNTQ5MWIzZWFjOGVlYzk2MzQxMTQ1YTBj
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaApAQCAt
ODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2YoY29uc3Qgdm9p
ZCopOwogICAgIHZvaWQgY2FjaGVPZmZzZXQocHRyZGlmZl90LCB2b2lkKik7Ci0gICAgV1RGOjpP
cHRpb25hbDx2b2lkKj4gY2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZfdCk7CisgICAgc3RkOjpv
cHRpb25hbDx2b2lkKj4gY2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZfdCk7CiAgICAgY29uc3Qg
dm9pZCogcHRyRm9yT2Zmc2V0RnJvbUJhc2UocHRyZGlmZl90KTsKICAgICBDb21wYWN0VERaRW52
aXJvbm1lbnRNYXA6OkhhbmRsZSBoYW5kbGVGb3JURFpFbnZpcm9ubWVudChDb21wYWN0VERaRW52
aXJvbm1lbnQqKSBjb25zdDsKICAgICB2b2lkIHNldEhhbmRsZUZvclREWkVudmlyb25tZW50KENv
bXBhY3RURFpFbnZpcm9ubWVudCosIGNvbnN0IENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6SGFu
ZGxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRl
eCAyNmU1MjJmZDVhNjJmZDM5MmY5MzI5NWE2NjEzODI0MGM3NDBiZDk5Li4xNDk0YzdlOGNmY2Zj
ODdhNzUwMWE0OWM4NmI3MmUxZjMzMjdmYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBVbmxpbmtlZENvZGVCbG9j
a1R5cGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBFeGVj
dXRhYmxlVAogICAgIFNvdXJjZUNvZGVLZXkga2V5KAogICAgICAgICBzb3VyY2UsIFN0cmluZygp
LCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNvZGVUeXBlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCAKICAgICAgICAgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5
cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvZGVHZW5lcmF0aW9uTW9kZSwKLSAgICAgICAg
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgc3RkOjpudWxsb3B0KTsKICAgICBVbmxpbmtlZENvZGVC
bG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gbV9zb3VyY2VDb2RlLmZpbmRDYWNoZUFuZFVw
ZGF0ZUFnZTxVbmxpbmtlZENvZGVCbG9ja1R5cGU+KHZtLCBrZXkpOwogICAgIGlmICh1bmxpbmtl
ZENvZGVCbG9jayAmJiBPcHRpb25zOjp1c2VDb2RlQ2FjaGUoKSkgewogICAgICAgICB1bnNpZ25l
ZCBsaW5lQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bGluZUNvdW50KCk7CkBAIC0yNTAsNyAr
MjUwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6Z2V0VW5saW5r
ZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBUaGUgRnVuY3Rpb24gY29u
c3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlh
YmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAgIC8vIGluIHRoZSBnbG9i
YWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFREWiBjaGVjayBhY2Nlc3Nl
cyBmcm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVj
dEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKLSAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBu
dWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSk7Cisg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlu
a2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6
Q2xhc3NpYywgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUs
IE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQ6
Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZl
KCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGly
ZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CkBAIC0yODcs
NyArMjg3LDcgQEAgc3RhdGljIFNvdXJjZUNvZGVLZXkgc291cmNlQ29kZUtleUZvclNlcmlhbGl6
ZWRCeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICByZXR1cm4gU291cmNlQ29k
ZUtleSgKICAgICAgICAgc291cmNlQ29kZSwgU3RyaW5nKCksIGNvZGVUeXBlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLAogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIGNvZGVHZW5lcmF0aW9uTW9kZSwKLSAgICAgICAgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgc3RkOjpudWxsb3B0KTsKIH0KIAogU291cmNlQ29kZUtleSBzb3Vy
Y2VDb2RlS2V5Rm9yU2VyaWFsaXplZFByb2dyYW0oVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
Y3VycmVudEpTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVu
dEpTTG9jay5oCmluZGV4IDg2MzExN2Q4OTE1YzQzZTRhNjc3MjA4MmI5YmM1NWIzOWEyZDFjYTEu
LjIyZjQ2NjE3ZGI3NDY3Zjc3YjAyZGRkMzMwMTE5N2Y0MTExYjI4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2NrLmgKQEAgLTExNSw3ICsx
MTUsNyBAQCBwdWJsaWM6CiAgICAgQ29uY3VycmVudEpTTG9ja2VyKE5vTG9ja2luZ05lY2Vzc2Fy
eVRhZykKICAgICAgICAgOiBDb25jdXJyZW50SlNMb2NrZXJCYXNlKE5vTG9ja2luZ05lY2Vzc2Fy
eSkKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgICAgICwgbV9kaXNhbGxvd0dDKFdURjo6bnVs
bG9wdCkKKyAgICAgICAgLCBtX2Rpc2FsbG93R0Moc3RkOjpudWxsb3B0KQogI2VuZGlmCiAgICAg
ewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RlZmlu
ZVByb3BlcnR5QXR0cmlidXRlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKaW5kZXggYzBiYzczZTA3YTE1NDcwNzgyZTgyZDg3MDA4
MzY4N2JiMGMyMzVhMi4uZjNiOGU5MTQxOTQyMmYyMDdjNGY2MTE4NTlhNGFlZDQ1NjZjNzUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
YWw8Ym9vbD4gd3JpdGFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNXcml0YWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVT
aGlmdCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVi
bGljOgogICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBl
eHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAg
IH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxib29sPiBlbnVt
ZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDgzYzUxMDA2MzUyMzMzZmNjOTBh
NzQwMjNlY2RlYTM2ZTNmNzMyZC4uMTlkYjZjY2RmZGFkNzAwMmYzMGM1YjYwZjM4Y2JjMzJkYjU0
NDQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25z
dHJ1Y3Rvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBFcnJvckNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEVycm9yUHJvdG90eXBlKiBlcnJvclByb3RvdHlwZSkKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgdm0ucHJvcGVydHlOYW1lcy0+RXJyb3Iuc3RyaW5n
KCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAg
ICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZXJyb3JQcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051
bWJlcihnbG9iYWxPYmplY3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVPcihPcHRpb25zOjpk
ZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051bWJlcihnbG9iYWxPYmpl
Y3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVfb3IoT3B0aW9uczo6ZGVmYXVsdEVycm9yU3Rh
Y2tUcmFjZUxpbWl0KCkpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRl
OjpOb25lKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4zCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgRXJy
b3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOCiAgICAgICAgICAgICBlZmZlY3RpdmVMaW1pdCA9IHN0ZDo6bWluKGVm
ZmVjdGl2ZUxpbWl0LCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkt
PnNldFN0YWNrVHJhY2VMaW1pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWZmZWN0aXZlTGltaXQp
KTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0ZDo6bnVsbG9wdCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtOTQsNyArOTQsNyBAQCBib29sIEVycm9yQ29u
c3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdAogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8RXJy
b3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCi0gICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgdGhpc09i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChzdGQ6Om51bGxvcHQpOwog
CiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGdsb2JhbE9iamVj
dCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMTdiYzI0NjE0OTUxOWMw
ZTMwNWFjODJlZDk0MzZmMmMxYzQ1NjcwMC4uZDIzZGZmOTliZWE5OTBkMTA1MGM4YWVlMTExYmZk
ZDdmYTgyM2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU09iamVjdCogY29u
c3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgLy8gSG93IHdlIHN0
cmluZ2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGli
aWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKLSAgICBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKICAgICAgICAgcHJvZ3JhbSA9IG1h
a2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn0iKTsKICAg
ICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJhZGNiNzg1MGZiNmY5MzY1
NTZjZTQ5YzI2MTYwMmM1OTU5ZDRmZGEuLmFlODI0NjRlOTYyYmMzNTEzYzBhODkyMjQ0M2M0MWVj
ZjlhOTE4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKG92ZXJyaWRlTGluZU51bWJlciA9PSAtMSkgewogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKG1fcmFyZURhdGEpKQotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVM
aW5lTnVtYmVyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1f
b3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9vdmVycmlkZUxpbmVOdW1iZXIg
PSBvdmVycmlkZUxpbmVOdW1iZXI7CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGludCBsaW5l
Q291bnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnV6emVyUHJlZGljdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6
emVyUHJlZGljdGlvbnMuY3BwCmluZGV4IDVhYjVkOWE4YTY1MTdmNzc0NWY1ZjNkMjM5MTU4NjQ5
ODg3MzM5ZmIuLjNjMDQ4OWY4ODY3ZGMxZjg3NjlkOTcwMTdlMTYxZmQxOWRmOTYzMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQcmVkaWN0aW9ucy5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IEZ1enplclByZWRp
Y3Rpb25zOjpwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIGF1dG8gaXQg
PSBtX3ByZWRpY3Rpb25zLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gbV9wcmVkaWN0aW9ucy5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gaXQtPnZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXggYjczNGRmZDJl
YTczMTNhZjQ0OGJlOWU2ODEzZjNjZDA0NDZkZDJiZi4uNzIwZTY4ZThiNmFiM2ZmZTRjMGEyMDVl
OWY4MmVkMWU3NzQ1NTFiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEVudHJ5JiBlbnRyeSA9IGJpdHdpc2VfY2FzdDxFbnRyeSo+KHRoaXMpW2luZGV4XTsKICAg
ICAgICAgaWYgKGVudHJ5LnN0cnVjdHVyZUlEID09IGlkICYmIGVudHJ5LmltcGwuZ2V0KCkgPT0g
aW1wbCkKICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZXN1bHQ7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHRyeUFkZChWTSYgdm0sIFByb3BlcnR5U2xvdCYgc2xvdCwgSlNP
YmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BOYW1lLCBib29sIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKaW5k
ZXggYTM2M2I1ZDA2YjVhNGUyZGJhMDlmOGZmOWY5ZjhjYThmMzE3ZmFlZC4uZjExZjBhNWI0YzZh
OTVmYjg0ODllNzU1MGUwMmI2NjFjMTFiODhhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKQEAgLTEyMywxMCArMTIzLDEwIEBA
IEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNW
YWx1ZSBrZXkpCiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7CiAgICAgICAgIEpTU3RyaW5nKiBz
dHJpbmcgPSBhc1N0cmluZyhrZXkpOwogICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IDEw
ICogMTAyNCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3Ry
aW5nLT50cnlHZXRWYWx1ZUltcGwoKTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIHJldHVybiBpbXBsLT5jb25jdXJyZW50SGFzaCgpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGFlNmRiYjBmOGY1OTIzNTBh
NGNmMmU0MTBkZjBiZDJkYWJjNzhhMDkuLjE3MTRiOGFkZDVkYjlkZTY1ZTVjMTYzOTk5MDRiYzMz
MWRlMzZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgK
QEAgLTQyLDM4ICs0MiwzOCBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQzMl90PiBwYXJz
ZUluZGV4KGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZAogewogICAgIC8vIEFu
IGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBHZXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgdHVybmluZyBpdCBpbnRvIGEgZGlnaXQuCiAg
ICAgdWludDMyX3QgdmFsdWUgPSBjaGFyYWN0ZXJzWzBdIC0gJzAnOwogICAgIGlmICh2YWx1ZSA+
IDkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4gSWYgdGhlIGZpcnN0IGNo
YXJhY2hlciBpcyAwLCB0aGVuIHRoZQogICAgIC8vIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG11c3Qg
YmUgb25lIC0gZS5nLiAiMDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4KICAgICBpZiAoIXZhbHVl
ICYmIGxlbmd0aCA+IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB3aGlsZSAoLS1sZW5ndGgpIHsKICAgICAgICAgLy8g
TXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxvdyBvdXQgb2YgMzIgYml0
cy4KICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB2YWx1ZSAqPSAxMDsKIAogICAgICAgICAvLyBHZXQgdGhlIG5leHQgY2hhcmFjdGVyLCB0
dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KICAgICAgICAgdWludDMyX3QgbmV3VmFsdWUgPSAqKCsr
Y2hhcmFjdGVycykgLSAnMCc7CiAgICAgICAgIGlmIChuZXdWYWx1ZSA+IDkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAvLyBBZGQgaW4gdGhlIG9sZCB2YWx1ZSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93
IG91dCBvZiAzMiBiaXRzLgogICAgICAgICBuZXdWYWx1ZSArPSB2YWx1ZTsKICAgICAgICAgaWYg
KG5ld1ZhbHVlIDwgdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsK
ICAgICB9CiAKICAgICBpZiAoIWlzSW5kZXgodmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZTsK
IH0KIApAQCAtMjc2LDkgKzI3Niw5IEBAIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+
IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIHVp
ZCA9IGlkZW50aWZpZXIuaW1wbCgpOwogICAgIGlmICghdWlkKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh1aWQtPmlz
U3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBhcnNlSW5kZXgoKnVpZCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXgg
ZDc5YzM0MTc4YTJiYmVkYTg5NzI3MmNhMTg4YWI3NzU4ODBkZjdjZC4uNGZkZGFmMTVmM2ZmNzA0
ZWQwZTdjMDEwMjIzODUwMDQzOWI4ODRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBJ
bnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmEKICAgICBtX3N0eWxlID0gaW50bE9wdGlvbjxTdHlsZT4oZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyB7ICJuYXJyb3ciX3Ms
IFN0eWxlOjpOYXJyb3cgfSwgeyAic2hvcnQiX3MsIFN0eWxlOjpTaG9ydCB9LCB7ICJsb25nIl9z
LCBTdHlsZTo6TG9uZyB9IH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcIm5hcnJvd1wiLCBcInNo
b3J0XCIsIG9yIFwibG9uZ1wiIl9zLCBTdHlsZTo6TG9uZyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGF1dG8gdHlwZSA9IGludGxPcHRpb248T3B0aW9u
YWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwg
eyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVnaW9uIl9zLCBUeXBlOjpS
ZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAiY3VycmVuY3kiX3MsIFR5
cGU6OkN1cnJlbmN5IH0gfSwgInR5cGUgbXVzdCBiZSBlaXRoZXIgXCJsYW5ndWFnZVwiLCBcInJl
Z2lvblwiLCBcInNjcmlwdFwiLCBvciBcImN1cnJlbmN5XCIiX3MsIFdURjo6bnVsbG9wdCk7Cisg
ICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxPcHRpb25hbDxUeXBlPj4oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1YWdlIl9zLCBUeXBlOjpM
YW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7ICJzY3JpcHQiX3MsIFR5
cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVuY3kgfSB9LCAidHlwZSBt
dXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwic2NyaXB0XCIsIG9yIFwi
Y3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwogICAgIGlmICghdHlwZSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAidHlwZSBtdXN0IG5vdCBiZSB1bmRlZmluZWQiX3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApp
bmRleCBhZmU0NjA2NjAzZTQ0ZDcwZTgzMDRhOTU5ZjY4YTcyYjBjOTBkNjNlLi41ZTI0Yzk0NTMw
YTJkN2E1YWM4OTgxNTAzNGZhMGM0OTU3MzU1NThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMjE2LDcgKzIxNiw3IEBA
IHN0YXRpYyBPcHRpb25hbDxNZWFzdXJlVW5pdD4gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlm
aWVyKFN0cmluZ1ZpZXcgdW5pdElkZW50CiAgICAgICAgIH0pOwogICAgIGlmIChpdGVyYXRvciAh
PSBzdGQ6OmVuZChzaW1wbGVVbml0cykgJiYgaXRlcmF0b3ItPnN1YlR5cGUgPT0gdW5pdElkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgV2VsbEZvcm1lZFVuaXQg
ewpAQCAtMjQ2LDIxICsyNDYsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3
ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRlbnRpZmkKICAgICBhdXRv
IHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKICAgICBhdXRvIHBvc2l0aW9uID0gdW5pdElk
ZW50aWZpZXIuZmluZChwZXIpOwogICAgIGlmIChwb3NpdGlvbiA9PSBXVEY6Om5vdEZvdW5kKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICh1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zaXRpb24gKyBwZXIubGVuZ3Ro
KCkpICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2Fu
Y3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0
dXJuIGZhbHNlLgogICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5n
KDAsIHBvc2l0aW9uKTsKICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxl
VW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKICAgICBpZiAoIW51bWVyYXRvclVuaXQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVy
KGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCiAgICAgYXV0byBkZW5v
bWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZyhwb3NpdGlvbiArIHBlci5sZW5ndGgo
KSk7CiAgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50
aWZpZXIoZGVub21pbmF0b3IpOwogICAgIGlmICghZGVub21pbmF0b3JVbml0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUoKSwgZGVub21pbmF0b3JV
bml0LnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAppbmRleCBjNjdkNTQyZjJiOWQxODM2ZWYzYWI1Y2NiM2U3OGIyYjM0MWE1MDljLi43
Y2Y5Yzg2NzA2YmY2NTU0M2Y4ZGU5YTMxNDkzZmVlYzEwMjhjMTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTQ0OCwxMiArMTQ0OCwxMiBA
QCBPcHRpb25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVMb2NhbGVJRFdpdGhvdXRO
dWxsVGVybWluYXRvcihjb25zdCBjaGFyKgogICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuYXRs
YXNzaWFuLm5ldC9icm93c2UvSUNVLTIxNTA2CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odWFsb2NfY2Fub25pY2FsRm9ybSwgbG9jYWxlSUQsIGJ1ZmZlcik7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBidWZmZXI7CiAjZWxz
ZQogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsb2NfY2Fu
b25pY2FsaXplLCBsb2NhbGVJRCwgYnVmZmVyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCBi
ODljYWU4NjYyYTEwNjY5MTZhZGRjN2MzYjFkYTU2MzdmMzVjOGM3Li42MmM0ODhmMDU0MzdhZjIz
MDNlYmRkNGRmYTQ4ZTYxNGMzYjg3ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZlVGlt
ZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKICAgICBpZiAoc2luZ3VsYXIgPT0gInllYXIiKQog
ICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9ZRUFSOwogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBTdHJpbmcgSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCAxNDRiYTNjYzZhNjdmZGI2MGJjNDgwMWRl
M2JhN2JiMmZkMDY2NDI5Li5kNGFiNDlhYTFjNDVlZjY0NDIxMDM1NDM1NmIxOTkwZmQ0ZTgyMGNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKQEAgLTM1
Nyw3ICszNTcsNyBAQCBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRlcmF0aW9uS2luZEZvcklu
dHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIGNhc2UgVHlwZWRBcnJheUVudHJpZXNJ
bnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOwogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDUxY2FiYWZiMmQwOThk
Nzk4YTZiYzViMGUzZjcwNWU3ZjExYTFlMGIuLjc3YzkyZWNmOGE1ZWQ1N2EyODAxYTIwMWQzNTg2
Y2JlZDNmMjUyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC00NSwzMSArNDUsMzEgQEAgT3B0aW9u
YWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QKICAgICBib29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElz
VmFsaWQodm0sIHRoaXNPYmplY3QsIG1vZGUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEpTVmFsdWUgY29uc3RydWN0
b3IgPSB0aGlzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3Rvcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzdGQ6Om51bGxvcHQpOwogICAgIGlmIChj
b25zdHJ1Y3Rvci5pc0NvbnN0cnVjdG9yKHZtKSkgewogICAgICAgICBKU09iamVjdCogY29uc3Ry
dWN0b3JPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjb25zdHJ1Y3Rvcik7CiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGcm9tQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvck9i
amVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgYm9vbCBpc0FycmF5QnVmZmVyQ29uc3Ry
dWN0b3JGcm9tQW5vdGhlclJlYWxtID0gZ2xvYmFsT2JqZWN0ICE9IGdsb2JhbE9iamVjdEZyb21D
b25zdHJ1Y3RvcgogICAgICAgICAgICAgJiYgY29uc3RydWN0b3JPYmplY3QgPT0gZ2xvYmFsT2Jq
ZWN0RnJvbUNvbnN0cnVjdG9yLT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpOwogICAgICAg
ICBpZiAoaXNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJjb25zdHJ1Y3RvciBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51
bGwiX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIEpTVmFsdWUgc3BlY2llcyA9IGNvbnN0cnVjdG9yLmdl
dChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFdURjo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAotICAgIHJldHVybiBzcGVjaWVzLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoc3BlY2llcyk7Cisg
ICAgcmV0dXJuIHNwZWNpZXMuaXNVbmRlZmluZWRPck51bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0
ZDo6bWFrZV9vcHRpb25hbChzcGVjaWVzKTsKIH0KIAogZW51bSBjbGFzcyBTcGVjaWVzQ29uc3Ry
dWN0UmVzdWx0IDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaAppbmRleCBhMDI5
YzczN2VjZTY2MDEwN2UxZTA5NTNlYjVkMzNlMDFiNmY0YmVjLi41YmE4M2VhYTg1MjAyYjdhZDhl
NTgzYWQxODNkYzBiY2UzYjE2ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKQEAgLTU4
LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1ZmZlclNw
ZWNpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2wKICAgICBib29sIGlzVmFsaWQgPSBz
cGVjaWVzV2F0Y2hwb2ludElzVmFsaWQodm0sIHRoaXNPYmplY3QsIG1vZGUpOwogICAgIHNjb3Bl
LmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JT
bG93KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgbW9kZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRjNDJjODY3ZTAzYzViNmZiODZlNWRi
MzUwOTE2NzdhZGM3ZTRhNTkuLjAwYWJiOTkyNWY3MTYzMjRlNDgyZTE3NmE4ZjRjNzlmZGZlYzBh
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKQEAgLTI3
MTEsMTMgKzI3MTEsMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CiBPcHRpb25h
bDxKU0JpZ0ludDo6RGlnaXQ+IEpTQmlnSW50Ojp0b1NoaWZ0QW1vdW50KEJpZ0ludEltcGwgeCkK
IHsKICAgICBpZiAoeC5sZW5ndGgoKSA+IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgRGlnaXQgdmFsdWUgPSB4
LmRpZ2l0KDApOwogICAgIHN0YXRpY19hc3NlcnQobWF4TGVuZ3RoQml0cyA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8RGlnaXQ+OjptYXgoKSwgIm1heExlbmd0aEJpdHMgbmVlZHMgdG8gYmUgbGVzcyB0
aGFuIGRpZ2l0Iik7CiAgICAgCiAgICAgaWYgKHZhbHVlID4gbWF4TGVuZ3RoQml0cykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTMwNzgsNyArMzA3OCw3IEBAIE9wdGlvbmFsPHVuc2ln
bmVkPiBKU0JpZ0ludDo6Y29uY3VycmVudEhhc2goKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgSlNCaWdJbnQ6OmNvbmN1cnJlbnRIYXNoIGJ5IGluc2VydGluZyByaWdodCBzdG9yZSBiYXJy
aWVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
ODAxCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB1bnNpZ25lZCBKU0JpZ0ludDo6aGFzaFNsb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjNzU5NGE4NDkyY2U2NzRjMjQ0ZjFhZTJh
M2FjMTQ3MTU1ODMxMjU0Li5hOTc0ZDk1YzdjNzJiNDA0ZmM3YTM2YmYwY2YxZWU2NmE0Zjg5YTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAt
NzgsNyArNzgsNyBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051
bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAogewogICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKGlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBhc051bWJlcigpOwogICAgIGlmIChpc0Jv
b2xlYW4oKSkKQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051
bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAogICAgICAgICByZXR1cm4gUE5hTjsKICAgICBpZiAo
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIv
I3NlYy10b2JpZ2ludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKaW5kZXggYThkZTQ5M2MwYjBhYTIyYjY0ZTQ3YWM5NGRlMTE5OGJkZTFl
MzliMC4uODgzNGRkODcwOTViYzJkYmM3ZDQ0MjA1N2RiNTBjZDE3ZTFhMzAyOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC0x
MTksNyArMTE5LDcgQEAgaW5saW5lIE9wdGlvbmFsPHVpbnQzMl90PiBKU1ZhbHVlOjp0cnlHZXRB
c1VpbnQzMkluZGV4KCkKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oYXNVaW50KSA9
PSBudW1iZXIgJiYgaXNJbmRleChhc1VpbnQpKQogICAgICAgICAgICAgcmV0dXJuIGFzVWludDsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNWYWx1ZTo6dHJ5R2V0QXNJbnQzMigp
CkBAIC0xMzIsNyArMTMyLDcgQEAgaW5saW5lIE9wdGlvbmFsPGludDMyX3Q+IEpTVmFsdWU6OnRy
eUdldEFzSW50MzIoKQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc0ludCkgPT0g
bnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIGFzSW50OwogICAgIH0KLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBKU1ZhbHVl
IGpzTmFOKCkKQEAgLTg1Nyw3ICs4NTcsNyBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQz
Ml90PiBKU1ZhbHVlOjp0b1VJbnQzMkFmdGVyVG9OdW1lcmljKEpTR2xvYmFsT2JqZWN0KgogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKExJS0VMWShyZXN1bHQu
aXNJbnQzMigpKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQu
YXNJbnQzMigpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVlOjp0b0JpZ0ludE9ySW50
MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggOTc2N2NjNzYwN2JmNTE4YTg4Yjc1MTU5NTM4NzQyZDc3
MzdhNGQ3ZC4uY2NmZjRhOGI2MGU5YWJlM2E0Yzc3ZTVmMTIzZjU1YWFiNmU3ZjI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTE0OSw3ICsxNDksNyBAQCBpbmxp
bmUgYm9vbCBpbmhlcml0c0pTVHlwZUltcGwoVk0mIHZtLCBGcm9tKiBmcm9tLCBKU1R5cGVSYW5n
ZSByYW5nZSkKIC8vIHdheSB0byBzYXkgdGhhdCB3ZSBhcmUgb3ZlcmxvYWRpbmcganVzdCB0aGUg
Zmlyc3QgdHlwZSBpbiBhIHRlbXBsYXRlIGxpc3QuLi4KIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdl
dD4KIHN0cnVjdCBJbmhlcml0c1RyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25h
bDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgV1RGOjpudWxsb3B0IH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgc3RkOjpudWxsb3B0IH07
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaW5o
ZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBGaW5hbFR5cGVEaXNwYXRjaGVyPHN0
ZDo6aXNfZmluYWw8VGFyZ2V0Pjo6dmFsdWU+Ojp0ZW1wbGF0ZSBpbmhlcml0c0dlbmVyaWM8VGFy
Z2V0Pih2bSwgZnJvbSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKaW5kZXggZmVhMzE4N2ZmODdhNzdiMmZi
ZGI2MDliMzRlYWJjM2FhZTUwZDYzNS4uMjM4YjlhMDMwNWQ5Nzk0NjM2MTFlNzhkM2Y2ZDJlYTlj
YWJiZWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q3VzdG9tR2V0dGVyRnVuY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgQ3VzdG9tRnVu
Y3Rpb25Qb2ludGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiA9IFdURjo6bnVs
bG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQ3VzdG9tR2V0dGVyRnVuY3Rp
b24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlOYW1lJiwgQ3Vz
dG9tRnVuY3Rpb25Qb2ludGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0aW9uPiA9IHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCA2ZDRlOWY5YmJiMTFkN2Ex
ZjliYTcxOTJlOWEwMWZhZjhkMTM2MTY5Li5lOWRmODQzNWU2OThlMmMwODUxNjZiZWNhNzU1ZmQ4
ZDZkZWEyYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmgKQEAgLTI3Niw3ICsyNzYsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAKICAgICBK
U1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAg
IHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IGxlbmd0aCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gc3RkOjpudWxsb3B0
OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgZmlyc3RWYWx1ZSkg
JiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCAyZTAyYmEzZDY0MDVlZTcyZGQ0YWRlMGJh
NjdjYjk1OGYxYTY0NjBiLi42ZmJhYTA3MmIwMzA5ZGIzMTU5OGI2OWZkMmFjYmFiYjU2ZmMxZGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApAQCAtOTgsNyArOTgsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAobV9oYXNPd25lclRocmVhZCkKICAgICAgICAg
ICAgIHJldHVybiBtX293bmVyVGhyZWFkOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBib29sIGN1cnJlbnRUaHJl
YWRJc0hvbGRpbmdMb2NrKCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVhZCAmJiBtX293bmVyVGhy
ZWFkLmdldCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXggZjM1NDZhODgzNDUzM2Zl
ZDdmODgxZTVkZDUyZTY1MmVmY2Y2OGU4Yy4uMjFkMGJjZmIzMDNhMDY2MDM2NTM1ZjdhMmZhYTFh
NTBjZjg3ZTA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNS
dW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUnVu
TG9vcFRpbWVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIE9wdGlvbmFsPFNlY29uZHM+IEpTUnVu
TG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxGaXJlKEpTUnVuTG9vcFRpbWVyJiB0aW1lcikK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6dGltZXJEaWRGaXJlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCmluZGV4
IDg2YjM2Y2EyMmY3MDYyNWU3N2Q4ZjZmZmVmYjAyODI5ZDZiMjdjOTQuLmRkMjliMDNlY2NhOThj
NjBmM2FiZmUyNGJiZWRlMWUyYWFkOTMyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaApAQCAtNDU0LDEyICs0NTQsMTIgQEAgaW5saW5lIE9w
dGlvbmFsPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPj4g
aW5zdHJ1Y3Rpb25Qb2kKICAgICB2b2lkKiB2YWx1ZSA9IGluc3RydWN0aW9uUG9pbnRlckltcGwo
Y29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKICNlbmRpZgogICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bWFrZV9vcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQ
Q1B0clRhZz4obnVsbHB0cikpOwogICAgIGlmICghdXNlc1BvaW50ZXJUYWdnaW5nKCkpCi0gICAg
ICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVn
aXN0ZXJzUENQdHJUYWc+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9u
YWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KHZhbHVl
KSk7CiAgICAgaWYgKGlzVGFnZ2VkV2l0aDxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPih2YWx1
ZSkpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBs
YXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KHZhbHVlKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBpbmxpbmUgdm9pZCBzZXRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVuY3Rpb25QdHJUYWc+IHZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1v
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENvbW1vbi5oCmluZGV4IGEy
MjQ3ZDViY2NjNjE1M2ZlY2U2OTg5Mjg5Nzk4Zjg1ZGU2MTk5NzEuLjYzMTcxN2Y5MGE0OTEzMDZl
NDU0YzI3MTE3MzhiZjJlZWE0ZjA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXRoQ29tbW9uLmgKQEAgLTE4MiwxMSArMTgyLDExIEBAIGlubGluZSBPcHRpb25hbDxkb3Vi
bGU+IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChkb3VibGUgY29uc3RhbnQpCiB7CiAgICAg
Ly8gTm8gIndlaXJkIiBudW1iZXJzIChOYU4sIERlbm9ybWFsLCBldGMpLgogICAgIGlmICghY29u
c3RhbnQgfHwgIXN0ZDo6aXNub3JtYWwoY29uc3RhbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IGV4cG9uZW50
OwogICAgIGlmIChzdGQ6OmZyZXhwKGNvbnN0YW50LCAmZXhwb25lbnQpICE9IDAuNSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIE5vdGUgdGhhdCBmcmV4cCgpIHJldHVybnMgdGhlIHZhbHVlIGRpdmlkZWQgYnkgdHdv
CiAgICAgLy8gc28gd2UgdG8gb2Zmc2V0IHRoaXMgZXhwb25lbnQgYnkgb25lLgpAQCAtMTk1LDcg
KzE5NSw3IEBAIGlubGluZSBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlD
b25zdChkb3VibGUgY29uc3RhbnQpCiAgICAgLy8gQSBkb3VibGUgZXhwb25lbnQgaXMgYmV0d2Vl
biAtMTAyMiBhbmQgMTAyMy4KICAgICAvLyBOb3RoaW5nIHdlIGNhbiBkbyB0byBpbnZlcnQgMTAy
My4KICAgICBpZiAoZXhwb25lbnQgPT0gMTAyMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSByZWNpcHJvY2Fs
ID0gc3RkOjpsZGV4cCgxLCAtZXhwb25lbnQpOwogICAgIEFTU0VSVChzdGQ6Omlzbm9ybWFsKHJl
Y2lwcm9jYWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAppbmRleCAwYzZhOWM3NDFmNjYyNTIxNWI3ZDU3MDRjN2FkZjBmOTVh
NzI4NGE4Li5iMTdmNTkzNmZlZmM5NjM4ZWNmNDlhZWViZWM4NzBjMDg2NGNlYmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CkBAIC0yNTEsNyArMjUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0
cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCAoSlNHbG9iYWxPYmplY3QKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0
LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01v
ZGU6OkluY2x1ZGUsIFdURjo6bnVsbG9wdCkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBvYmplY3Qs
IFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1
ZGUsIHN0ZDo6bnVsbG9wdCkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVj
dENvbnN0cnVjdG9yS2V5cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAK
aW5kZXggYTAxMTgzZjdkZmJiZjdkNTVlZGQ1MzAxNjAxZThiNDg5ZmIyY2E2My4uY2NjOTMwYzNm
OTYxZGVjNTc5NzJiZTFmNWFhZDZkNzIyZjcyZjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0
b3JhZ2U6OkJvb2w+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImZhbHNl
IikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAibm8iKSB8fCAhc3Ry
Y21wKHN0cmluZywgIjAiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgpAQCAt
NzcsNyArNzcsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50MzI+IHBhcnNlKGNvbnN0
IGNoYXIqIHN0cmluZykKICAgICBpbnQzMl90IHZhbHVlOwogICAgIGlmIChzc2NhbmYoc3RyaW5n
LCAiJWQiLCAmdmFsdWUpID09IDEpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4K
QEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlVuc2lnbmVkPiBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKHNzY2Fu
ZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lm
IENQVShBRERSRVNTNjQpIHx8IE9TKERBUldJTikKQEAgLTk2LDcgKzk2LDcgQEAgT3B0aW9uYWw8
T3B0aW9uc1N0b3JhZ2U6OlNpemU+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICBzaXpl
X3QgdmFsdWU7CiAgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlenUiLCAmdmFsdWUpID09IDEpCiAg
ICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gQ1BVKEFERFJFU1M2NCkgfHwgT1MoREFSV0lO
KQogCkBAIC0xMDYsNyArMTA2LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkRvdWJsZT4g
cGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIGRvdWJsZSB2YWx1ZTsKICAgICBpZiAoc3Nj
YW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8PgpAQCAtMTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpP
cHRpb25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIE9wdGlvblJhbmdlIHJh
bmdlOwogICAgIGlmIChyYW5nZS5pbml0KHN0cmluZykpCiAgICAgICAgIHJldHVybiByYW5nZTsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHRlbXBsYXRlPD4KQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6
R0NMb2dMZXZlbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ2ZXJib3NlIikgfHwgIXN0cmNtcChzdHJpbmcs
ICIyIikpCiAgICAgICAgIHJldHVybiBHQ0xvZ2dpbmc6OlZlcmJvc2U7CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgT3B0aW9u
czo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQsIE9wdGlvbnM6OkF2YWlsYWJpbGl0eSBhdmFp
bGFiaWxpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5o
CmluZGV4IGZlYjUyZTZjZjBhODgyYzE5MGY1Zjk4ZTVlY2M5MWZlMzZhYTg1YjUuLjlkNDA1MWM1
ZjJmMmE0MGRhM2JlNjNlZmY4MDllNTA4NWZiOTVlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC0xMjYsOSArMTI2LDkgQEAgQUxXQVlTX0lO
TElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIGF1dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgpOwogICAgIGlmICghdWlk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBhcnNlSW5kZXgo
KnVpZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90
LmgKaW5kZXggYzEwYzY1MDc5OWRkNjFmNzZkNDczOTAyMDZkMDgzMDExMGIxYjdlNS4uNWIwNjQy
MmNiZGFkMzI3MDBhNDM1NzkzOTA5MDA5YTgxNWM0ZWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBpZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUgPT0gQWRkaXRpb25hbERh
dGFUeXBlOjpET01BdHRyaWJ1dGUpCiAgICAgICAgICAgICByZXR1cm4gbV9hZGRpdGlvbmFsRGF0
YS5kb21BdHRyaWJ1dGU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc3RydWN0IE1vZHVsZU5hbWVzcGFjZVNs
b3QgewpAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX2Fk
ZGl0aW9uYWxEYXRhVHlwZSA9PSBBZGRpdGlvbmFsRGF0YVR5cGU6Ok1vZHVsZU5hbWVzcGFjZSkK
ICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRhLm1vZHVsZU5hbWVzcGFjZVNsb3Q7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShKU09iamVjdCogc2xvdEJhc2UsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDQxMTkyY2NiMzdlODJmZGZkZGU3YjZm
MTk1YjRjNDE3ZDYxZTBiODkuLmU1ZjhkNTQzN2E5NjViMDhlYjc5MzU1MjNmNTIyMTEwOTYwNjQz
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3Qu
Y3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZmxlY3RP
YmplY3RPd25LZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNP
YmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9u
dEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0KSkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9i
YWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBzdGQ6Om51
bGxvcHQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJl
ZmxlY3QucHJldmVudGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDA4Mjg3ODA3MjI1NWQ4OTczNzA4MjU5ODJj
ZmU3ZTJlNTA0OThiYmUuLmUwMDJjNjQ2YjgwNmVjZGRiY2VkYTkwZTAwY2Y2OGY3NjgxMzgxMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
U3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJn
MC50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5p
c1VuZGVmaW5lZCgpID8gbWFrZU9wdGlvbmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6
IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgYXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChP
cHRpb25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQogICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihn
bG9iYWxPYmplY3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rv
ci4iX3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAKaW5kZXggNTBhNzA1MjIwZWZhZmJjN2U5NWM2MTNlMWIwYmJiMjQ4MzU3ZDI3
OS4uNTM4NTIzOGY3MDJiYmQ0NTlmNmNkODc3ZWQxNTg4YzczMzdiYTY3MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTEx
NTYsNyArMTE1Niw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGVz
KFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIGF1dG8gZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VT
dHJpbmcoZnJhbWUuZGlzcGxheU5hbWUobV92bSksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24oZnJh
bWUuc2VtYW50aWNMb2NhdGlvbiwgZnJhbWUud2FzbUNvbXBpbGF0aW9uTW9kZSkpOwogICAgICAg
ICBpZiAoT3B0aW9uYWw8c3RkOjpwYWlyPFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiwgQ29kZUJs
b2NrKj4+IG1hY2hpbmVMb2NhdGlvbiA9IGZyYW1lLm1hY2hpbmVMb2NhdGlvbikgewogICAgICAg
ICAgICAgZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWVEZXNjcmlwdGlvbiwgIiA8
LS0gIiwKLSAgICAgICAgICAgICAgICBtYWNoaW5lTG9jYXRpb24tPnNlY29uZC0+aW5mZXJyZWRO
YW1lKCkuZGF0YSgpLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9uKG1hY2hpbmVMb2NhdGlvbi0+Zmly
c3QsIFdURjo6bnVsbG9wdCkpOworICAgICAgICAgICAgICAgIG1hY2hpbmVMb2NhdGlvbi0+c2Vj
b25kLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24obWFjaGlu
ZUxvY2F0aW9uLT5maXJzdCwgc3RkOjpudWxsb3B0KSk7CiAgICAgICAgIH0KICAgICAgICAgYnl0
ZWNvZGVDb3VudHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJhdG9yLT52YWx1ZSsrOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njcmlw
dEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAKaW5kZXggMjcwNjU1ZTljMzEwOWUxMmRjNTNmMzgyYmMzNGMyNDg4YmEyM2Ni
MS4uMmVlZDE5Y2FhNTdiY2QxMzMzNWM5ZGQ5Y2I4ZDM1NTc1NThlY2I2MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKQEAgLTUw
MSw3ICs1MDEsNyBAQCBPcHRpb25hbDxpbnQ+IFNjcmlwdEV4ZWN1dGFibGU6Om92ZXJyaWRlTGlu
ZU51bWJlcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgaWYgKGluaGVyaXRzPEZ1bmN0aW9uRXhlY3V0
YWJsZT4odm0pKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KHRoaXMpLT5vdmVycmlkZUxpbmVOdW1iZXIoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHVuc2lnbmVkIFNjcmlwdEV4ZWN1dGFi
bGU6OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldChWTSYgdm0pIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhZjUyNjExNzM3MGQ5NTI5MDU3
MzQ0MjNiNjc3ZTE5OTVlNWIwYjA2Li43ZDBmNTk4Njc4NmI5YWM0MWYzZjM4YWY1Zjg3OTRjMjhk
MDRjMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
QEAgLTE1MDIsNyArMTUwMiw3IEBAIGF1dG8gU3RydWN0dXJlOjpmaW5kUHJvcGVydHlIYXNoRW50
cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QgLT4gT3B0aW9uCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIFByb3BlcnR5SGFzaEVudHJ5IHsgcHJvcEhhc2hUYWJsZSwgZW50cnkgfTsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpzZXRCcmFuZFRyYW5zaXRp
b25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3RydWN0dXJlLCBVbmlxdWVk
U3RyaW5nSW1wbCogYnJhbmRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGJiMjhjYzgwYWQzYWUyMWRlN2M2ZmI2NzUzZTg0
ZDBiMjM2ODQ4MzYuLmJiN2YxYzU4YTA2NGMzNGM1ZmZkODVjYzA5ODFmNjQ2OTA1ZGMwOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUu
aApAQCAtNjEsMTQgKzYxLDE0IEBAIE9wdGlvbmFsPHR5cGVuYW1lIEFkYXB0b3I6OlR5cGU+IHRv
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYg
Y29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxBZGFwdG9yLCBCaWdJbnQ2NEFkYXB0b3I+IHx8IHN0
ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ1VpbnQ2NEFkYXB0b3I+KSB7CiAgICAgICAgIGlmICgh
dmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfc2FtZV92PEFkYXB0b3IsIEJpZ0ludDY0QWRhcHRvcj4pCiAgICAgICAgICAgICByZXR1cm4g
SlNCaWdJbnQ6OnRvQmlnSW50NjQodmFsdWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBy
ZXR1cm4gSlNCaWdJbnQ6OnRvQmlnVUludDY0KHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKHZhbHVlLmlz
SW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05hdGl2ZUZyb21JbnQzMldp
dGhvdXRDb2VyY2lvbih2YWx1ZS5hc0ludDMyKCkpOwogICAgICAgICByZXR1cm4gQWRhcHRvcjo6
dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKHZhbHVlLmFzRG91YmxlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUFkYXB0b3Jz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApp
bmRleCAzZDliM2U0N2ZjMDViZTk3Mjk2NDM3N2EwNzE2NjhhNGUyMjc0MDdkLi41MzQ5ZGYxNmEy
ZWM0NDFlZTQ2MTJlM2M5NjY0OGZmODNkMzZlYzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAtODEsMTQgKzgxLDE0IEBA
IHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICBzdGF0aWMgT3B0aW9uYWw8
VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIGlmICgodmFsdWUgPj0gMCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFs
dWUpID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkgfHwgdmFsdWUgPCBzdGF0aWNf
Y2FzdDxpbnQzMl90PihtaW5WYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4g
dG9OYXRpdmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90IHZhbHVlKQogICAgIHsK
ICAgICAgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAgICAg
fQpAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgSW50ZWdyYWxUeXBlZEFycmF5QWRhcHRvciB7CiAg
ICAgewogICAgICAgICBUeXBlIGludGVnZXIgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIpICE9IHZhbHVlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgICAgIHJldHVybiB0b05hdGl2
ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSkpOwpA
QCAtMTU4LDEwICsxNTgsMTAgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJheUFkYXB0b3IgewogICAg
ICAgICBUeXBlIHZhbHVlUmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUpOwogCiAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlUmVzdWx0KSAhPSB2YWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGlmICh2YWx1ZSA8IG1pblZhbHVlIHx8IHZhbHVlID4gbWF4VmFsdWUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7CiAgICAgfQpAQCAtMzAw
LDcgKzMwMCw3IEBAIHN0cnVjdCBVaW50OENsYW1wZWRBZGFwdG9yIHsKICAgICBzdGF0aWMgT3B0
aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50MzJfdCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IG1heFZhbHVlIHx8IHZhbHVlIDwgbWluVmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4odmFsdWUp
OwogICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBzdHJ1Y3QgVWludDhDbGFtcGVkQWRhcHRvciB7
CiAgICAgewogICAgICAgICB1aW50OF90IGludGVnZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2
YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIpICE9IHZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIGludGVnZXI7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCA5YjQ0MDZiMTE1NjNkYWY1NzM5
ZWIzMzhhZjgyNTlhNWUxOGE0MTU5Li5mZGVjNmJmMTIzNDIzM2NhYWUwMjQ4YWI4NWVhYWMxNWIy
MmZhNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIGluc3RydWN0aW9uUG9p
bnRlciA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKTsKICAg
ICAgICAgaWYgKCFpbnN0cnVjdGlvblBvaW50ZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IFNpZ25hbENvbnRleHQocmVnaXN0ZXJzLCAqaW5zdHJ1Y3Rpb25Qb2ludGVyKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5
emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVy
LmNwcAppbmRleCAwZTQzMmNiM2U5YTEyMjY2YTdmMjI4YzA2ZWU3NDdlNmM5YmZkYTYwLi4xN2My
YTVmMzhjNDQ1ZGRiMDRmNzYwNDRiNmRjZTk2ODk3M2MwZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Qb2ludGVyID0g
TWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpOwogICAgICAgICBp
ZiAoIWluc3RydWN0aW9uUG9pbnRlcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gU2lnbmFs
Q29udGV4dChyZWdpc3RlcnMsICppbnN0cnVjdGlvblBvaW50ZXIpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDUx
YmY1YjA2YzYwNTlhZGViODFkNTgxZjliY2I4YWI1M2M0MWUwZTEuLjE1ODc4ZTM2MzQwZDI0YTFm
OTEyNTIxMjBmZWMxZjBiNDkyOTQ3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5NSw3ICsyOTUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9CiAgICAgdm9pZCBkaWRQb3BWYWx1
ZUZyb21TdGFjaygpIHsgfQogCi0gICAgVmFsdWUqIGNvbnN0YW50KEIzOjpUeXBlLCB1aW50NjRf
dCBiaXRzLCBPcHRpb25hbDxPcmlnaW4+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBWYWx1ZSogY29u
c3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBzdGQ6Om51
bGxvcHQpOwogICAgIFZhbHVlKiBmcmFtZVBvaW50ZXIoKTsKICAgICB2b2lkIGluc2VydENvbnN0
YW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggODA3
YWRiOGU3MDVkOGY3NTI5YTU0YzhmMjQzMTMwY2RlYWNmZjQ1Mi4uZmE5NmIzNGQ4NGIxNzA3NjJm
ZDY5N2E1MTc1NmZjOTA5ZDVlMGQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
b3JtYXQuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0cnVjdCBFbGVtZW50IHsKICAgICB7IH0KIAog
ICAgIEVsZW1lbnQoRWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1lbnRUeXBlIGVsZW1UeXBl
KQotICAgICAgICA6IEVsZW1lbnQoa2luZCwgZWxlbVR5cGUsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KQorICAgICAgICA6IEVsZW1lbnQoa2luZCwgZWxlbVR5cGUsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0KQogICAgIHsgfQogCiAgICAgdWludDMyX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTmFtZVNlY3Rpb24uaAppbmRleCBiYzJlYmRmYzExMDMzMDQ2OGZiMTY4MTAxMDk3
NWJlZGEyZTc2ZDVmLi42ODlhMDlmZGMzY2M4OTI5MThkMjEyZjM2NjJmNzZmYmNkYWEzYzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaApAQCAtMzks
NyArMzksNyBAQCBzdHJ1Y3QgTmFtZVNlY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8TmFtZVNlY3Rpb24+IHsKIHB1YmxpYzoKICAgICBOYW1lU2VjdGlvbigpCiAgICAgewotICAg
ICAgICBzZXRIYXNoKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHNldEhhc2goc3RkOjpudWxsb3B0
KTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPE5hbWVTZWN0aW9uPiBjcmVhdGUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGVm
ZjhiYzFjOTk3ZjAyMjlhMmViYzgzNzZiZTIxNzQ5YzcyZmIzMTYuLmJmZGE5YjNiMGVmZTQ2MDI0
ZTRjN2VhNmFlZTNhYzMyOTY1YTU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTc3Niw3ICs3NzYsNyBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlRGF0YSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGRhdGFCeXRlTGVuZ3RoKSwgImNhbid0IGdl
dCAiLCBzZWdtZW50TnVtYmVyLCAidGggRGF0YSBzZWdtZW50J3MgZGF0YSBieXRlIGxlbmd0aCIp
OwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihkYXRhQnl0ZUxlbmd0aCA+IG1heE1v
ZHVsZVNpemUsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQncyBkYXRhIGJ5dGUgbGVu
Z3RoIGlzIHRvbyBiaWcgIiwgZGF0YUJ5dGVMZW5ndGgsICIgbWF4aW11bSAiLCBtYXhNb2R1bGVT
aXplKTsKIAotICAgICAgICAgICAgYXV0byBzZWdtZW50ID0gU2VnbWVudDo6Y3JlYXRlKFdURjo6
bnVsbG9wdCwgZGF0YUJ5dGVMZW5ndGgsIFNlZ21lbnQ6OktpbmQ6OlBhc3NpdmUpOworICAgICAg
ICAgICAgYXV0byBzZWdtZW50ID0gU2VnbWVudDo6Y3JlYXRlKHN0ZDo6bnVsbG9wdCwgZGF0YUJ5
dGVMZW5ndGgsIFNlZ21lbnQ6OktpbmQ6OlBhc3NpdmUpOwogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighc2VnbWVudCwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yICIs
IHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQgb2Ygc2l6ZSAiLCBkYXRhQnl0ZUxlbmd0
aCk7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGRhdGFCeXRlID0gMDsgZGF0YUJ5dGUgPCBk
YXRhQnl0ZUxlbmd0aDsgKytkYXRhQnl0ZSkgewogICAgICAgICAgICAgICAgIHVpbnQ4X3QgYnl0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TdHJlYW1pbmdQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHAKaW5kZXggMWQyMjVjNzhlMDNiOGRhOTk0MmYzMjJiYTgyMzAzN2NlMDJmOGM4Yy4uMWVj
YTQzNmRmNTkyZjA3ZjM4M2VkMDdhOWQxOWI0N2I1NGRjZGRlMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50OF90PiBwYXJzZVVJbnQ3KGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCYgb2Zmc2V0LAogICAgIHVpbnQ4X3QgcmVzdWx0ID0gZGF0YVtv
ZmZzZXQrK107CiAgICAgaWYgKHJlc3VsdCA8IDB4ODApCiAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KQEAgLTIwOSw3ICsyMDksNyBAQCBhdXRvIFN0
cmVhbWluZ1BhcnNlcjo6Y29uc3VtZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGJ5dGVz
U2l6ZSwgc2l6ZV90JiBvZgogICAgIGlmICh0b3RhbERhdGFTaXplIDwgcmVxdWlyZWRTaXplKSB7
CiAgICAgICAgIG1fcmVtYWluaW5nLmFwcGVuZChieXRlcyArIG9mZnNldEluQnl0ZXMsIGJ5dGVz
UmVtYWluaW5nU2l6ZSk7CiAgICAgICAgIG9mZnNldEluQnl0ZXMgPSBieXRlc1NpemU7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgc2l6ZV90IHVzZWRTaXplID0gcmVxdWlyZWRTaXplIC0gbV9yZW1haW5pbmcu
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJsZS5jcHAKaW5kZXggZmEy
NjZkMjk3YjFiNmQ1ZWFjNzQ4NmI3YTUxOGI5YjNjZTI3MGU0OC4uOWFhNjcwMjMwZWU3MTc5ZThl
YjE4YTRjYWQ1N2I0OWY5MTgwNjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFibGUuY3BwCkBAIC05MiwxMiArOTIsMTIgQEAgT3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpn
cm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKICAgICBuZXdMZW5ndGhD
aGVja2VkICs9IGRlbHRhOwogICAgIHVpbnQzMl90IG5ld0xlbmd0aDsKICAgICBpZiAobmV3TGVu
Z3RoQ2hlY2tlZC5zYWZlR2V0KG5ld0xlbmd0aCkgPT0gQ2hlY2tlZFN0YXRlOjpEaWRPdmVyZmxv
dykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChtYXhpbXVtKCkgJiYgbmV3TGVuZ3RoID4gKm1heGltdW0oKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWlzVmFsaWRMZW5ndGgobmV3TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY2hlY2tl
ZEdyb3cgPSBbJl0gKGF1dG8mIGNvbnRhaW5lciwgYXV0byBpbml0aWFsaXplcikgewogICAgICAg
ICBpZiAobmV3TGVuZ3RoQ2hlY2tlZC51bnNhZmVHZXQoKSA+IGFsbG9jYXRlZExlbmd0aChtX2xl
bmd0aCkpIHsKQEAgLTExOCwxMyArMTE4LDEzIEBAIE9wdGlvbmFsPHVpbnQzMl90PiBUYWJsZTo6
Z3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpCiAKICAgICBpZiAoYXV0
byogZnVuY1JlZlRhYmxlID0gYXNGdW5jcmVmVGFibGUoKSkgewogICAgICAgICBpZiAoIWNoZWNr
ZWRHcm93KGZ1bmNSZWZUYWJsZS0+bV9pbXBvcnRhYmxlRnVuY3Rpb25zLCBbXSAoYXV0byYpIHsg
fSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFjaGVja2VkR3JvdyhmdW5jUmVmVGFibGUtPm1f
aW5zdGFuY2VzLCBbXSAoYXV0byYpIHsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAo
IWNoZWNrZWRHcm93KG1fanNWYWx1ZXMsIFtkZWZhdWx0VmFsdWVdIChXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIHNsb3QpIHsgc2xvdC5zZXRTdGFydGluZ1ZhbHVlKGRlZmF1bHRWYWx1ZSk7IH0pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgc2V0TGVuZ3RoKG5ld0xlbmd0aCk7CiAgICAgcmV0dXJuIG5ld0xlbmd0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcAppbmRleCA1OGU4Y2QwMDA2ODIzZGVhZjRlZTY4NzNhMTcxOGFkNTc4MzZm
NWIzLi45ZmIxZTkzYjZmOTFiOTUwNTNiOWJiMTAwMDFlNmE3ZjYzNTE4NjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGlua0ltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKIAog
ICAgIGJvb2wgaGFzU3RhcnQgPSAhIW1vZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRl
eFNwYWNlOwogICAgIGlmIChoYXNTdGFydCkgewotICAgICAgICBhdXRvIHN0YXJ0RnVuY3Rpb25J
bmRleFNwYWNlID0gbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UudmFs
dWVPcigwKTsKKyAgICAgICAgYXV0byBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1vZHVsZUlu
Zm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlLnZhbHVlX29yKDApOwogICAgICAgICBX
YXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS0+c2lnbmF0dXJlSW5k
ZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKICAgICAg
ICAgY29uc3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgLy8gVGhlIHN0YXJ0IGZ1bmN0
aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3VtZW50cyBvciByZXR1cm4gYW55dGhpbmcuIFRoaXMg
aXMgZW5mb3JjZWQgYnkgdGhlIHBhcnNlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
RmxhZ3MuY3BwCmluZGV4IDE3NTA0ZmJhMTZlOTBkYmNmMGQ1YjlmNjM4MGRmYjAyMTk4NjUxNGEu
LjI5NzAxZjYxZmQ5Nzg4ZDEwZmRkNjA0ZDBmMjBlZWM5YjgwZjAwOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcApAQCAtMzksNTIgKzM5LDUyIEBAIE9wdGlvbmFs
PE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgICAg
IHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgaWYg
KGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpIYXNJbmRpY2VzKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6Okhhc0luZGljZXMpOwogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBpZiAoZmxhZ3MuY29udGFpbnMo
RmxhZ3M6Okdsb2JhbCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZmxhZ3MuYWRk
KEZsYWdzOjpHbG9iYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnaSc6
CiAgICAgICAgICAgICBpZiAoZmxhZ3MuY29udGFpbnMoRmxhZ3M6Oklnbm9yZUNhc2UpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6SWdub3JlQ2FzZSk7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdtJzoKICAgICAgICAgICAgIGlm
IChmbGFncy5jb250YWlucyhGbGFnczo6TXVsdGlsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6Ok11bHRpbGluZSk7CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhG
bGFnczo6RG90QWxsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQo
RmxhZ3M6OkRvdEFsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlICd1JzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFnczo6VW5pY29k
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZmxhZ3MuYWRkKEZsYWdzOjpVbmlj
b2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICBjYXNl
ICd5JzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFnczo6U3RpY2t5KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6OlN0aWNreSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsKGZsYWdzKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX29wdGlvbmFsKGZsYWdzKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Ollh
cnIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IGNiYjZjNTY5NWE3OWUyYzhlN2Y1YmMzODdhOGYzNGE0OWEwNzIwOGMuLmRlNjI3NWJkZjhh
YWE1NDA3MTljZDliOGYzNjJiNGFmNzcxOTVhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMjE3Niw3ICsyMTc2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
ICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wRGlzanVuY3Rpb24oQnl0ZURpc2p1bmN0aW9u
KiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgbmVzdGluZyA9IDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmgKaW5kZXggNWY0ZmRmOTBjZDdjZWQ4ZDRkM2Y4YmIxYTdhODlhNzEyMGNiMTYy
NC4uM2E4ZTVmMjNmYjI4OThhOTU0N2ZmMDg5NDU3ODFmM2Q5MmQyNmMyMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9yZWYxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZCaXRQdHJUYWc+KCk7CiAg
ICAgICAgIG1fbWF0Y2hPbmx5OCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5
OEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KCk7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIu
aAppbmRleCA5N2FlM2NmN2FiNGY0Nzg1NmQ0MWMyNGJmYzc3ZTRiZjBiODU3NGQ2Li5mZWFmYWFj
YmFmMTM3ZmQxNTQ4NzgzNDdmMjRlNmNkNTExYWQ1MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyclBhcnNlci5oCkBAIC0xMTIxLDcgKzExMjEsNyBAQCBwcml2YXRlOgogICAgIE9w
dGlvbmFsPFN0cmluZz4gdHJ5Q29uc3VtZUdyb3VwTmFtZSgpCiAgICAgewogICAgICAgICBpZiAo
YXRFbmRPZlBhdHRlcm4oKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFBhcnNlU3RhdGUgc3RhdGUg
PSBzYXZlU3RhdGUoKTsKICAgICAgICAgCkBAIC0xMTQ1LDE0ICsxMTQ1LDE0IEBAIHByaXZhdGU6
CiAKICAgICAgICAgcmVzdG9yZVN0YXRlKHN0YXRlKTsKIAotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE9wdGlv
bmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB0cnlDb25zdW1lVW5pY29kZVByb3BlcnR5RXhw
cmVzc2lvbigpCiAgICAgewogICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSB8fCAhaXNVbmlj
b2RlUHJvcGVydHlWYWx1ZUV4cHJlc3Npb25DaGFyKHBlZWsoKSkpIHsKICAgICAgICAgICAgIG1f
ZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBleHByZXNzaW9u
QnVpbGRlcjsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Y29uc3VtZSgpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHBy
ZXNzaW9uOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmIChmb3VuZEVxdWFscykgewpAQCAtMTE5OSw3ICsxMTk5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpJ
bnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlbnVtIGNs
YXNzIFBhcmVudGhlc2VzVHlwZSA6IHVpbnQ4X3QgeyBTdWJwYXR0ZXJuLCBBc3NlcnRpb24gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBhMTEzYWFj
MzJmZWEzNTIwZWE5NDI2ZGVlOGI1MTIwOTUyNjA1MDg4Li45ZTM2MTcwODVkMWE4YWU3N2ViZjY4
ZGYzNGU0ODE3ZGI1ZWRjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgcHVibGljOgogICAgICAgICBtX3BhdHRlcm4u
bV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdDaGFyYWN0ZXJDbGFzcykp
OwogICAgIH0KIAotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJvb2wg
Y2FwdHVyZSA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gb3B0R3JvdXBOYW1lID0gV1RGOjpudWxs
b3B0KQorICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJvb2wgY2FwdHVy
ZSA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gb3B0R3JvdXBOYW1lID0gc3RkOjpudWxsb3B0KQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gbV9wYXR0ZXJuLm1fbnVtU3Vi
cGF0dGVybnMgKyAxOwogICAgICAgICBpZiAoY2FwdHVyZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCmluZGV4IDNjN2E1ZGMzNDgyZmYy
ZTczMWRkN2Y4MmVmNmNkNmYwNTgzMjQwMGEuLjNmZTU4NTdhYTY1NDExNDhmMzlmZmFhZGI4YjFj
MTcxNzI3ZjA5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJT
eW50YXhDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyU3lu
dGF4Q2hlY2tlci5jcHAKQEAgLTI4LDMxICsyOCwzMCBAQAogCiAjaW5jbHVkZSAiWWFyckZsYWdz
LmgiCiAjaW5jbHVkZSAiWWFyclBhcnNlci5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCiBjbGFzcyBTeW50YXhDaGVja2Vy
IHsKIHB1YmxpYzoKLSAgICB2b2lkIGFzc2VydGlvbkJPTCgpIHt9Ci0gICAgdm9pZCBhc3NlcnRp
b25FT0woKSB7fQotICAgIHZvaWQgYXNzZXJ0aW9uV29yZEJvdW5kYXJ5KGJvb2wpIHt9Ci0gICAg
dm9pZCBhdG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMyKSB7fQotICAgIHZvaWQgYXRvbUJ1aWx0
SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkge30KLSAgICB2
b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0JlZ2luKGJvb2wgPSBmYWxzZSkge30KLSAgICB2b2lkIGF0
b21DaGFyYWN0ZXJDbGFzc0F0b20oVUNoYXIpIHt9Ci0gICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xh
c3NSYW5nZShVQ2hhciwgVUNoYXIpIHt9Ci0gICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NCdWls
dEluKEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lELCBib29sKSB7fQotICAgIHZvaWQgYXRvbUNoYXJh
Y3RlckNsYXNzRW5kKCkge30KLSAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdp
bihib29sID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiA9IFdURjo6bnVsbG9wdCkge30KLSAgICB2
b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCA9IGZhbHNlKSB7fQotICAg
IHZvaWQgYXRvbVBhcmVudGhlc2VzRW5kKCkge30KLSAgICB2b2lkIGF0b21CYWNrUmVmZXJlbmNl
KHVuc2lnbmVkKSB7fQotICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVyZW5jZShjb25zdCBTdHJp
bmcmKSB7fQotICAgIHZvaWQgYXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5jZShjb25zdCBTdHJpbmcm
KSB7fQotICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCkge30K
LSAgICB2b2lkIGRpc2p1bmN0aW9uKCkge30KLSAgICB2b2lkIHJlc2V0Rm9yUmVwYXJzaW5nKCkg
e30KKyAgICB2b2lkIGFzc2VydGlvbkJPTCgpIHsgfQorICAgIHZvaWQgYXNzZXJ0aW9uRU9MKCkg
eyB9CisgICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRhcnkoYm9vbCkgeyB9CisgICAgdm9pZCBh
dG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMyKSB7IH0KKyAgICB2b2lkIGF0b21CdWlsdEluQ2hh
cmFjdGVyQ2xhc3MoQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wpIHsgfQorICAgIHZvaWQg
YXRvbUNoYXJhY3RlckNsYXNzQmVnaW4oYm9vbCA9IGZhbHNlKSB7IH0KKyAgICB2b2lkIGF0b21D
aGFyYWN0ZXJDbGFzc0F0b20oVUNoYXIpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNz
UmFuZ2UoVUNoYXIsIFVDaGFyKSB7IH0KKyAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0J1aWx0
SW4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJh
Y3RlckNsYXNzRW5kKCkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVn
aW4oYm9vbCA9IHRydWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCkgeyB9
CisgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGJvb2wgPSBmYWxzZSkg
eyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7IH0KKyAgICB2b2lkIGF0b21CYWNr
UmVmZXJlbmNlKHVuc2lnbmVkKSB7IH0KKyAgICB2b2lkIGF0b21OYW1lZEJhY2tSZWZlcmVuY2Uo
Y29uc3QgU3RyaW5nJikgeyB9CisgICAgdm9pZCBhdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNv
bnN0IFN0cmluZyYpIHsgfQorICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVkLCB1bnNpZ25l
ZCwgYm9vbCkgeyB9CisgICAgdm9pZCBkaXNqdW5jdGlvbigpIHsgfQorICAgIHZvaWQgcmVzZXRG
b3JSZXBhcnNpbmcoKSB7IH0KIH07CiAKIEVycm9yQ29kZSBjaGVja1N5bnRheChjb25zdCBTdHJp
bmcmIHBhdHRlcm4sIGNvbnN0IFN0cmluZyYgZmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcAppbmRleCAzMjFlOThmODI4
MWVjODA3NTg3ZTJjYjVkMzE4OWI2MzNjNmVkMjBlLi4wMGI4YWJkMmNiODkwZmRiNjRkNzdjMTlm
MDNkYWI2YWYyYThkOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9Z
YXJyVW5pY29kZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgT3B0aW9uYWw8QnVp
bHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5VmFsdWUoV1RGOjpTdHJp
bmcgdW5pY29kZVAKICAgICAgICAgcHJvcGVydHlJbmRleCA9IGdlbmVyYWxDYXRlZ29yeUhhc2hU
YWJsZS5lbnRyeSh1bmljb2RlUHJvcGVydHlWYWx1ZSk7CiAKICAgICBpZiAocHJvcGVydHlJbmRl
eCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBPcHRpb25hbDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJ
RD4oc3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0PGludD4o
QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVydHlJRCkgKyBwcm9wZXJ0
eUluZGV4KSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJD
bGFzc0lEPiB1bmljb2RlTWF0Y2hQcm9wZXJ0eShXVEY6OlN0cmluZyB1bmljb2RlUHJvcGVyCiAg
ICAgICAgIHByb3BlcnR5SW5kZXggPSBnZW5lcmFsQ2F0ZWdvcnlIYXNoVGFibGUuZW50cnkodW5p
Y29kZVByb3BlcnR5VmFsdWUpOwogICAgIAogICAgIGlmIChwcm9wZXJ0eUluZGV4ID09IC0xKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNf
Y2FzdDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8aW50PihCdWlsdEluQ2hh
cmFjdGVyQ2xhc3NJRDo6QmFzZVVuaWNvZGVQcm9wZXJ0eUlEKSArIHByb3BlcnR5SW5kZXgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IGFhM2I3ODNlNjJkNTJlMjg1YTAz
MGQ5MWY3NmQ2MjhkZGJmZDQzNWYuLjY4MGFhZWM5NGFhYzQ4OWE0ZGQ0MzJjODdiODgyNzA0Yjg5
YjYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTU5LDcgKzE1OSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2Us
IGZhbHNlLCBPcHRpb25hbDxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyBP
cHRpb25hbDxUPiBjb3B5KFUmJiBzb3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIXNvdXJjZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQ3Jvc3NUaHJlYWRDb3BpZXI8VD46OmNvcHkoc3Rk
Ojpmb3J3YXJkPFU+KHNvdXJjZSkudmFsdWUoKSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcApp
bmRleCAxZTEyOGZiOWYyMGI1MGI2ODc0YTg4NjU2OTA3YmI0YzA1OWJjMjI5Li4wZmY4ZGUzYjZm
MGYxNzJmNzA3M2UxZDBiMmYxZGEzODQ2NTVmZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCkBAIC04MTcs
NyArODE3LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMo
Y29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaXNMb2MKICAgICAgICAgICAgIGlmICgqbmV3
UG9zU3RyICE9ICc6JykKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBubyB5ZWFy
OyB0aGUgbnVtYmVyIHdhcyB0aGUgaG91ci4KLSAgICAgICAgICAgIHllYXIgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICB5ZWFyID0gc3RkOjpudWxsb3B0OwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gaW4gdGhlIG5vcm1hbCBjYXNlICh3ZSBwYXJzZWQgdGhlIHllYXIpLCBh
ZHZhbmNlIHRvIHRoZSBuZXh0IG51bWJlcgogICAgICAgICAgICAgZGF0ZVN0cmluZyA9ICsrbmV3
UG9zU3RyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAyNDcwZTQ4NTlmZjdlNDg2MDI5ZDdjOTUz
MTEzMDkxZDlkNTU5NWE4Li40ODMxYjA0N2Q1ODk5OWJlNzZiYTk1MDdlNGQwNTA1ZTIxM2VkM2I5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNTkzLDcgKzU5Myw3IEBAIE9wdGlvbmFsPHVpbnQ2
NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgc3RkOjplcnJvcl9jb2RlIGVj
OwogICAgIGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9zaXplKHRvU3RkRmlsZVN5
c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNpemU7CiB9
CiAKQEAgLTYwOSw3ICs2MDksNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lRnJlZVNwYWNl
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBz
cGFjZUluZm8gPSBzdGQ6OmZpbGVzeXN0ZW06OnNwYWNlKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0
aCksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNwYWNlSW5mby5hdmFpbGFibGU7
CiB9CiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gaGFyZExpbmtDb3Vu
dChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIHVp
bnQ2NF90IGxpbmtDb3VudCA9IHN0ZDo6ZmlsZXN5c3RlbTo6aGFyZF9saW5rX2NvdW50KHRvU3Rk
RmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKLSAgICByZXR1cm4gZWMgPyBXVEY6Om51bGxvcHQg
OiBtYWtlT3B0aW9uYWwobGlua0NvdW50KTsKKyAgICByZXR1cm4gZWMgPyBzdGQ6Om51bGxvcHQg
OiBzdGQ6Om1ha2Vfb3B0aW9uYWwobGlua0NvdW50KTsKIH0KIAogYm9vbCBkZWxldGVOb25FbXB0
eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC02NjAsNyArNjYwLDcgQEAgT3B0aW9u
YWw8V2FsbFRpbWU+IGZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gc3RkOjpm
aWxlc3lzdGVtOjpsYXN0X3dyaXRlX3RpbWUodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMp
OwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdG9XYWxsVGltZShtb2RpZmljYXRpb25UaW1l
KTsKIH0KIApAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmls
ZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0CiAgICAg
c3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gc3RhdHVzID0gc2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMgPyBzdGQ6OmZpbGVzeXN0
ZW06OnN0YXR1cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYykgOiBzdGQ6OmZpbGVzeXN0
ZW06OnN5bWxpbmtfc3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICBp
ZiAoZWMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgc3dpdGNoIChzdGF0dXMudHlwZSgpKSB7CiAgICAgY2FzZSBzdGQ6OmZp
bGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5OgogICAgICAgICByZXR1cm4gRmlsZVR5cGU6
OkRpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pTT05WYWx1ZXMuY3BwIGIv
U291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggM2QyNTZiZWYyZGE5MTE0ODMyOWE1
MDNhZjJiNGI2NzdlYjUyMTljYy4uZWM5ZTUzNDFiM2JhZGExMzdlMzBhMTdhMTRmMTVmYTdmZWQ3
OWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTU2OSwyMSArNTY5LDIxIEBAIFN0cmluZyBW
YWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIE9wdGlvbmFsPGJvb2w+IFZhbHVlOjphc0Jvb2xl
YW4oKSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6Qm9vbGVhbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gbV92YWx1ZS5ib29sZWFuOwogfQogCiBPcHRpb25hbDxkb3VibGU+IFZhbHVlOjphc0Rv
dWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpEb3VibGUgJiYgdHlwZSgp
ICE9IFR5cGU6OkludGVnZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUubnVtYmVyOwogfQogCiBP
cHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAogewogICAgIGlmICh0eXBlKCkg
IT0gVHlwZTo6RG91YmxlICYmIHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2VyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KG1fdmFsdWUubnVtYmVyKTsKIH0KIApAQCAtNjUyLDcgKzY1Miw3
IEBAIE9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6OmdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBu
YW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsKICAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKCk7CiB9CiAKQEAgLTY2MCw3
ICs2NjAsNyBAQCBPcHRpb25hbDxkb3VibGU+IE9iamVjdEJhc2U6OmdldERvdWJsZShjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdldFZhbHVlKG5hbWUpOwog
ICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlLT5hc0RvdWJsZSgpOwogfQogCkBA
IC02NjgsNyArNjY4LDcgQEAgT3B0aW9uYWw8aW50PiBPYmplY3RCYXNlOjpnZXRJbnRlZ2VyKGNv
bnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gZ2V0VmFsdWUobmFt
ZSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmFsdWUtPmFzSW50ZWdlcigpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IDU0MmMyMzRmYWZmZjUxOGZkZmI1YmRjYTg4ZDM5
M2ZkZjdiYjQxM2YuLjVjODJmZTZiZDlmNjE2YmE2Y2RlZGQ2M2ExNmJlMTkwNmM5NTA3MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0xvZ2dlckhlbHBlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAjZWxz
ZSAvLyBSRUxFQVNFX0xPR19ESVNBQkxFRAogCi0jZGVmaW5lIExPR0lERU5USUZJRVIgKFdURjo6
bnVsbG9wdCkKKyNkZWZpbmUgTE9HSURFTlRJRklFUiAoc3RkOjpudWxsb3B0KQogCiAjZGVmaW5l
IEFMV0FZU19MT0coY2hhbm5lbE5hbWUsIC4uLikgIChVTlVTRURfUEFSQU0oY2hhbm5lbE5hbWUp
KQogI2RlZmluZSBFUlJPUl9MT0coY2hhbm5lbE5hbWUsIC4uLikgICAoVU5VU0VEX1BBUkFNKGNo
YW5uZWxOYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9NYXJrYWJsZS5oCmluZGV4IDg4NWMwNWViMDc0YTZlY2UxNGFjMzNlY2I4NmZk
NTI1ZGE0ZTc4ZDYuLmMzOWRkMzY2ZWY3ODhlNDQ0ZmU2NDY2ODc4ODY4ZmVkOWU3MmU4OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYv
TWFya2FibGUuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV92YWx1ZShU
cmFpdHM6OmVtcHR5VmFsdWUoKSkKICAgICB7IH0KIAotICAgIGNvbnN0ZXhwciBNYXJrYWJsZShX
VEY6Om51bGxvcHRfdCkKKyAgICBjb25zdGV4cHIgTWFya2FibGUoc3RkOjpudWxsb3B0X3QpCiAg
ICAgICAgIDogTWFya2FibGUoKQogICAgIHsgfQogCkBAIC0xMzIsMTQgKzEzMiwxNCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBpZiAoYm9vbCgqdGhpcykpCiAgICAgICAgICAgICByZXR1cm4g
V1RGTW92ZShtX3ZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBvcGVyYXRvciBPcHRpb25hbDxUPigp
IGNvbnN0JgogICAgIHsKICAgICAgICAgaWYgKGJvb2woKnRoaXMpKQogICAgICAgICAgICAgcmV0
dXJuIG1fdmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8VD4gYXNPcHRpb25hbCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3Bw
IGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCAxZjg2Yjhk
Mzk3OTEyNTg1Y2NmNTA2NjdmMjFkYjJmMjMwYWY5MjI4Li45ZTA4ODI0YmU1NTgzNjc5NjU5MDAx
MzUwYWI0MjdmMDEzMzc2MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxzaXplX3Q+IE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6dGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpCiAgICAgY2FzZSBXZWJzYW1Qcm9jZXNz
U3RhdGU6OkFjdGl2ZToKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIHNpemVfdCB0aHJl
c2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oIGIvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGlt
ZS5oCmluZGV4IDFhM2U4NmYwYWFhZWZlMzNhODJkYTBhNjMxYjEyNzQ3YmNjNWJkYjQuLjU0NGFh
NDc3YzAyNWZiNDE0NWYyZTY2YjAxY2Y1MGE3ODkxZjA0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL01vbm90b25pY1RpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1l
LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
dGltZTsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgICAgICBpZiAoIXRpbWUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6OmZyb21SYXdTZWNvbmRzKCp0aW1l
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIu
aCBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA3ZDg4ODk4MTYyMGE4
NmU1OWM1YjM1NzU4MTlmY2YxZDFhNDMwNGEzLi5iMDhmMDU0ODQ1NWE2NGUzZWQ2ZmI0ZThhODgw
ZmJjMjJhMTQ1ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC03Niw3ICs3Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyIHx8ICFp
c1ZhbGlkSWRlbnRpZmllcigqaWRlbnRpZmllcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IE9iamVjdElkZW50aWZpZXIgeyAqaWRlbnRpZmllciB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApp
bmRleCAzNmJjYzA0ZDc1ZmRmNDI1YWI5ZWI5ZjllZDMxNmU5YzcyMTFkODM2Li43N2U2Mjg5YmM1
MDYzZDQ3M2FkZjdiYTk5MjU1ZTY2ZjU0Nzk1ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAtMjA4LDcg
KzIwOCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0ZXhwciBPcHRpb25hbDxFPiB0b1NpbmdsZVZh
bHVlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBoYXNFeGFjdGx5T25lQml0U2V0KCkg
PyBPcHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2UpKSA6IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/IE9wdGlvbmFsPEU+KHN0YXRp
Y19jYXN0PEU+KG1fc3RvcmFnZSkpIDogc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYv
T3B0aW9uYWwuaAppbmRleCBlOTU4YWMzNjk3OTRkNjJmYjBjN2IyYmViZWY5YjkzMzQ3ZjY4ZDI2
Li43OWRlOTI2NjY3MGVhM2RiZGVlZjYyYzA4MGVmMTM1ZGU3NzkyMjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgK
QEAgLTI1LDIzICsyNSw2IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdXNpbmcgT3B0aW9uYWwgPSBzdGQ6Om9wdGlvbmFsPFQ+OwotY29uc3RleHByIGF1dG8gbnVs
bG9wdCA9IHN0ZDo6bnVsbG9wdDsKLXVzaW5nIG51bGxvcHRfdCA9IHN0ZDo6bnVsbG9wdF90Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPiBjb25zdGV4
cHIgc3RkOjpvcHRpb25hbDxzdGQ6OmRlY2F5X3Q8VD4+IG1ha2VPcHRpb25hbChUJiYgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbDxzdGQ6OmRlY2F5X3Q8VD4+KHN0ZDo6
Zm9yd2FyZDxUPih2YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPiBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxUPiBtYWtlT3B0aW9uYWwo
QXJndW1lbnRUeXBlcyYmLi4uIGFyZ3VtZW50cykKLXsKLSAgICByZXR1cm4gc3RkOjptYWtlX29w
dGlvbmFsPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVudHMpLi4uKTsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUuLi4gQXJndW1lbnRU
eXBlcz4gY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8VD4gbWFrZU9wdGlvbmFsKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxVPiBsaXN0LCBBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKQotewotICAg
IHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWw8VD4obGlzdCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
VHlwZXM+KGFyZ3VtZW50cykuLi4pOwotfQogCiAvLyBGSVhNRTogV2UgcHJvYmFibHkgZG9uJ3Qg
bmVlZCB0aGlzOyBpdCdzIG9ubHkgdXNlZCBpbiA1IHBsYWNlcy4KIHRlbXBsYXRlPHR5cGVuYW1l
IE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IGF1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9u
YWxUeXBlIG9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykgLT4gdHlwZW5hbWUgT3B0aW9uYWxU
eXBlOjp2YWx1ZV90eXBlCkBAIC01Miw5ICszNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wdGlv
bmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IGF1dG8gdmFsdWVPckNvbXB1dGUoT3B0aW9uYWxUeXBl
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPcHRpb25hbDsKLXVzaW5nIFdURjo6
bWFrZU9wdGlvbmFsOwogdXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsKIAotLy8gRklYTUU6IFRo
ZXNlIG1hY3JvcyBhcmUgYSB3b3JrYXJvdW5kIHRvIGFsbG93IHVzIHRvIHVzZSBzdGQ6Om9wdGlv
bmFsIHdpdGhvdXQgYSBnbG9iYWwgcmVwbGFjZTsgdGhleSBjYW4gYmUgcmVtb3ZlZCBhZnRlciBz
YWlkIGdsb2JhbCByZXBsYWNlLgorLy8gRklYTUU6IFRoaXMgbWFjcm8gaXMgYSB3b3JrYXJvdW5k
IHRvIGFsbG93IHVzIHRvIHVzZSBzdGQ6Om9wdGlvbmFsIHdpdGhvdXQgYSBnbG9iYWwgcmVwbGFj
ZTsgaXQgY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIGdsb2JhbCByZXBsYWNlLgogI2RlZmluZSBo
YXNWYWx1ZSBoYXNfdmFsdWUKLSNkZWZpbmUgdmFsdWVPciB2YWx1ZV9vcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCmluZGV4
IDUzYmNiYzY1OTlkYzUzMGM4N2Y4NTc2YzZhOWRhZGNiM2EwNjIxMzYuLjg1ZjAzNzI4MjU5NzYw
NzI3ZTlhNDJlZDE0YmY5NTc2NTY5NzhlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Nl
Y29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAgLTIzNCw3ICsyMzQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gc2Vjb25kczsKICAgICAgICAgZGVj
b2RlciA+PiBzZWNvbmRzOwogICAgICAgICBpZiAoIXNlY29uZHMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIFNlY29uZHMoKnNlY29uZHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvU29ydGVkQXJyYXlNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFw
LmgKaW5kZXggZjA3ZWEyNmU2ZTgzOTMyN2NiN2VlYjMwNDk1ZmFmYTdmZTVkYTk1MC4uZjkyODEy
YmE5MjQ2NzJlNGJiOThlMWUyY2ExMGNmOTQ5MzY5Yzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvU29ydGVkQXJyYXlNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1h
cC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlUeXBlPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4gaW5saW5lIGF1dG8gU29ydGVkQXIKICAgICAgICAg
aWYgY29uc3RleHByIChIYXNQYXJzZU1lbWJlcjxLZXlUeXBlPikKICAgICAgICAgICAgIHJldHVy
biBLZXlUeXBlOjpwYXJzZShrZXkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4g
bWFrZU9wdGlvbmFsKGtleSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFs
KGtleSk7CiAgICAgfSgpOwogICAgIGlmICghcGFyc2VkS2V5KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheVR5cGU+IHRl
bXBsYXRlPHR5cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYm9vbCBTb3J0ZWRBcgogICAgICAg
ICBpZiBjb25zdGV4cHIgKEhhc1BhcnNlTWVtYmVyPEtleVR5cGU+KQogICAgICAgICAgICAgcmV0
dXJuIEtleVR5cGU6OnBhcnNlKGtleSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBtYWtlT3B0aW9uYWwoa2V5KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9u
YWwoa2V5KTsKICAgICB9KCk7CiAgICAgaWYgKCFwYXJzZWRLZXkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTM0NCwxMiArMzQ0LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRl
Z2VyPiB0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgU3RvcmFnZUludGVnCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdlcj4gYXV0byBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8
U3RvcmFnZUludGVnZXI+OjpwYXJzZShTdHJpbmdWaWV3IHN0cmluZykgLT4gT3B0aW9uYWw8UGFj
a2VkQVNDSUlMb3dlckNvZGVzPgogewogICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgPiBzaXplb2Yo
U3RvcmFnZUludGVnZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0b3JhZ2VJbnRlZ2VyIHJlc3VsdCA9IDA7CiAgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgc3RyaW5nLmxlbmd0aCgpOyArK2luZGV4
KSB7CiAgICAgICAgIFVDaGFyIGNvZGUgPSBzdHJpbmdbaW5kZXhdOwogICAgICAgICBpZiAoIWlz
QVNDSUkoY29kZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0IHw9IHN0YXRpY19jYXN0PFN0
b3JhZ2VJbnRlZ2VyPih0b0FTQ0lJTG93ZXIoY29kZSkpIDw8ICgoc2l6ZW9mKFN0b3JhZ2VJbnRl
Z2VyKSAtIGluZGV4IC0gMSkgKiA4KTsKICAgICB9CiAgICAgcmV0dXJuIFBhY2tlZEFTQ0lJTG93
ZXJDb2RlcyhyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tUcmFjZS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcAppbmRleCA3YmYwOTg4NzQ3MWU5OWVj
NDJiNDMwZWRjNjcyMzYwNDcyMWQ0NzMxLi5mZjYxZTY2YjM0M2ZhYmRjN2E3YjE5N2Q3OTMxY2M0
NmI3MDBjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGF1dG8g
U3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IE9wdGlvbmFsPERlbWFuZ2xlRW50cnk+
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYyk7CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgU3RhY2tUcmFjZTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBpbmRlbnRTdHJpbmcpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmNwcAppbmRleCBhZjA4Y2JlN2I1ZDg5Mzg4MDdhN2UxMDkyYmZmZjkyN2YwYTI4
YWFmLi4zMTdhNDZmYzIwNGU5NzRkYWJkYjUwM2U4MjMyYTNhNGJlMjAyOGVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tT
aXplKFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKICAgICByZXR1cm4gMSAqIE1COwogI2Vsc2UKICAg
ICAvLyBVc2UgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBzdGFjayBzaXplCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmlu
ZGV4IGVlM2NlZDRiZjYxYmVjM2YyMGU0OTU4ZWQ0NTZhODZlMTVjM2RiNzguLjc1ODEzNzgxNDU2
ZTkxM2ZiZGY0M2M3ZThlOGQ3ODg2OTlhYzFmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBA
IFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKIAogT3B0aW9uYWw8dWludDE2X3Q+IFVSTDo6
cG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/IHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1faG9zdEVuZCArIDEsIG1f
cG9ydExlbmd0aCAtIDEpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV9wb3J0TGVuZ3Ro
ID8gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDogc3RkOjpudWxsb3B0OwogfQogCiBT
dHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CkBAIC0xNTksMTEgKzE1OSwxMSBAQCBTdHJp
bmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHN0YXRpYyBPcHRpb25hbDxMQ2hh
cj4gZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwgdW5zaWduZWQgaW5kZXgs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoaW5kZXggKyAzID4gbGVuZ3RoIHx8IGlucHV0
W2luZGV4XSAhPSAnJScpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBkaWdpdDEgPSBpbnB1dFtpbmRleCArIDFdOwog
ICAgIGF1dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAyXTsKICAgICBpZiAoIWlzQVNDSUlIZXhE
aWdpdChkaWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
dG9BU0NJSUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCBiMjI1OTM1ZWJkOTRm
NzI2NmU1ZTM2YzkyN2JjNmY5MTZkMGViNGQwLi45MGU3NTg2N2FjZjljZDNjMjFiMTc0MDNlYjNm
YmMwMDEwYjM1NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBP
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNvZGVyID4+IHN0cmluZzsKICAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkxIZWxwZXJzLmNwcAppbmRleCBjYTQ4NmUxNzQwYTRjYjQyOGFjNjI3ZjYyZjdmYjMw
NGVjY2Q5YTNmLi5jYjU5NDRhOGM3ODk3MmQwYzY5NDIzY2NlODU4ZGY1NmUxMzE2YzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxIZWxwZXJzLmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gbWFw
SG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgVVJMRGVjb2RlRnVuY3Rpb24gZGVjb2Rl
RnVuCiAgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gKGRlY29kZUZ1bmN0aW9u
ID8gdWlkbmFfbmFtZVRvQVNDSUkgOiB1aWRuYV9uYW1lVG9Vbmljb2RlKSgmVVJMUGFyc2VyOjpp
bnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgc291cmNlQnVmZmVyLmRhdGEoKSwg
bGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgaG9zdE5hbWVCdWZmZXJMZW5ndGgsICZwcm9jZXNz
aW5nRGV0YWlscywgJnVlcnJvcik7CiAgICAgaW50IGFsbG93ZWRFcnJvcnMgPSBkZWNvZGVGdW5j
dGlvbiA/IDAgOiBVSUROQV9FUlJPUl9FTVBUWV9MQUJFTCB8IFVJRE5BX0VSUk9SX0xFQURJTkdf
SFlQSEVOIHwgVUlETkFfRVJST1JfVFJBSUxJTkdfSFlQSEVOIHwgVUlETkFfRVJST1JfSFlQSEVO
XzNfNDsKICAgICBpZiAobGVuZ3RoICYmIChVX0ZBSUxVUkUodWVycm9yKSB8fCBwcm9jZXNzaW5n
RGV0YWlscy5lcnJvcnMgJiB+YWxsb3dlZEVycm9ycykpCi0gICAgICAgIHJldHVybiBudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChudW1DaGFyYWN0
ZXJzQ29udmVydGVkID09IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0aCkgJiYgIW1lbWNtcChz
b3VyY2VCdWZmZXIuZGF0YSgpLCBkZXN0aW5hdGlvbkJ1ZmZlciwgbGVuZ3RoICogc2l6ZW9mKFVD
aGFyKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCmluZGV4IDRl
ZDNmNDUwZDU3NjkyNWY2NDI3YjQ3Y2YyODg4NTc3ODhiMmJhZjAuLjQ2ZTQ1MzljNWRiZDMxMTgw
YzdmMjAyY2RhYzgxMjdmZmViZGI0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApAQCAtNTg0LDE5ICs1
ODQsMTkgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVmYXVsdFBvcnRGb3JQcm90
b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKICAgICAKICAgICBhdXRvIGxlbmd0aCA9IHNjaGVtZS5s
ZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzd2l0Y2ggKHNjaGVtZVswXSkgewog
ICAgIGNhc2UgJ3cnOgogICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewogICAgICAgICBjYXNlIDI6
CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1
cm4gd3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgIGlmIChz
Y2hlbWVbMV0gPT0gJ3MnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdzJykKICAg
ICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC02MDcsMjUgKzYwNywy
NSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcK
ICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQogICAgICAgICAgICAgICAgIHJl
dHVybiBodHRwUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICBp
ZiAoc2NoZW1lWzFdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAndCcK
ICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCiAgICAgICAgICAgICAgICAgJiYg
c2NoZW1lWzRdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1cm4gaHR0cHNQb3J0OwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIGNhc2Ug
J2YnOgogICAgICAgICBpZiAobGVuZ3RoID09IDMKICAgICAgICAgICAgICYmIHNjaGVtZVsxXSA9
PSAndCcKICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCiAgICAgICAgICAgICByZXR1
cm4gZnRwUG9ydDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtNzAxLDE1ICs3
MDEsMTUgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNj
aGVtZSkKIE9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJ
QWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0g
PT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CkBAIC0y
Mjk1LDI0ICsyMjk1LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBPcHRp
b25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBv
aW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQogewogICAgIGlmIChpdGVyYXRv
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90IHBpZWNlID0gMDsKICAgICBib29sIGxlYWRpbmda
ZXJvcyA9IGZhbHNlOwogICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsKICAgICB3aGlsZSAoIWl0
ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICArK2RpZ2l0Q291bnQ7CiAgICAgICAgIGlmICghcGllY2UgJiYg
Kml0ZXJhdG9yID09ICcwJykgewogICAgICAgICAgICAgaWYgKGxlYWRpbmdaZXJvcykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0cnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykKICAgICAgICAgICAgIGxl
YWRpbmdaZXJvcyA9IHRydWU7CiAgICAgICAgIHBpZWNlID0gcGllY2UgKiAxMCArICppdGVyYXRv
ciAtICcwJzsKICAgICAgICAgaWYgKHBpZWNlID4gMjU1KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFk
dmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3Ip
OwogICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjMyMCw3ICsyMzIwLDcgQEAgT3B0aW9uYWw8dWludDMyX3Q+IFVSTFBhcnNlcjo6cGFyc2VJUHY0
UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3QKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBpZiAocGllY2UgJiYgbGVhZGluZ1plcm9zKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBwaWVjZTsKIH0KIApAQCAtMjMzMiwxNSArMjMzMiwxNSBAQCBPcHRpb25hbDxVUkxQYXJzZXI6
OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEFkZHJlc3NJbnNpZGVJUHY2KENvZGVQ
b2ludAogICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGll
Y2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKICAgICAgICAgICAgIGFkZHJlc3MgPSAoYWRkcmVzcyA8
PCA4KSArIHBpZWNlLnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoaSA8IDMpIHsKICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4nKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4Vmlv
bGF0aW9uOjpObz4oaXRlcmF0b3IpOwogICAgICAgICB9IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVu
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFTU0VSVChpdGVyYXRvci5hdEVuZCgpKTsKICAg
ICByZXR1cm4gYWRkcmVzczsKQEAgLTIzNTMsNyArMjM1Myw3IEBAIE9wdGlvbmFsPFVSTFBhcnNl
cjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRv
cjxDaGFyCiAgICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwogICAgIGFkdmFuY2UoYywgaG9z
dEJlZ2luKTsKICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSVB2NkFkZHJlc3MgYWRkcmVz
cyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwogICAgIHNpemVfdCBwaWVjZVBvaW50ZXIg
PSAwOwpAQCAtMjM2NCw5ICsyMzY0LDkgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVz
cz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICBp
ZiAoKmMgPT0gJzonKSB7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAgICAg
aWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoKmMgIT0gJzonKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAgICAgKytwaWVjZVBvaW50
ZXI7CiAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKQEAgLTIzNzUsMTAg
KzIzNzUsMTAgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpw
YXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICAKICAgICB3aGlsZSAoIWMu
YXRFbmQoKSkgewogICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgaWYgKCpjID09ICc6JykgewogICAgICAgICAgICAgaWYgKGNvbXByZXNzUG9pbnRlcikK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAg
ICAgICAgICAgICArK3BpZWNlUG9pbnRlcjsKICAgICAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9
IHBpZWNlUG9pbnRlcjsKQEAgLTIzOTAsNyArMjM5MCw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6
SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxD
aGFyCiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gNiB8fCAoY29tcHJlc3NQb2ludGVyICYm
IHBpZWNlUG9pbnRlciA8IDYpKSB7CiAgICAgICAgICAgICBpZiAoT3B0aW9uYWw8SVB2NEFkZHJl
c3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoYykpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA9PSA1KQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlvbiho
b3N0QmVnaW4pOwogICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2
NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKICAgICAgICAgICAgICAgICBhZGRyZXNzW3BpZWNlUG9p
bnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7CkBAIC0yNDIyLDcgKzI0MjIs
NyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2
Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAgICBpZiAoYy5hdEVuZCgpKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCB8fCAqYyAhPSAn
OicpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwogICAgICAgICBp
ZiAoYy5hdEVuZCgpKQogICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7CkBA
IC0yNDMxLDcgKzI0MzEsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgIH0KICAgICAK
ICAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7
CiAgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52
YWx1ZSgpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRk
cmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAg
ICAgICAgd2hpbGUgKHN3YXBzKQogICAgICAgICAgICAgc3RkOjpzd2FwKGFkZHJlc3NbcGllY2VQ
b2ludGVyLS1dLCBhZGRyZXNzW2NvbXByZXNzUG9pbnRlci52YWx1ZSgpICsgc3dhcHMtLSAtIDFd
KTsKICAgICB9IGVsc2UgaWYgKHBpZWNlUG9pbnRlciAhPSA4KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
c2l6ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25nZXN0WmVyb1NlcXVlbmNl
KGFkZHJlc3MpOwogICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRlcikKQEAgLTI1NTksNyAr
MjU1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPFVSTFBh
cnNlcjo6TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tCiAgICAgICAgICAgICBzeW50YXhWaW9s
YXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CiAgICAgICAgIHJldHVy
biBhc2NpaTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBib29sIFVSTFBhcnNlcjo6aGFzRm9yYmlkZGVuSG9zdENvZGVQb2lu
dChjb25zdCBVUkxQYXJzZXI6OkxDaGFyQnVmZmVyJiBhc2NpaURvbWFpbikKQEAgLTI3OTEsNyAr
Mjc5MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmlu
Z1ZpZXcgaW5wdXQpCiB7CiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJz
aW9uKTsKICAgICBpZiAodXRmOC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBlcmNlbnREZWNvZGVk
ID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odXRmOC5kYXRh
KCkpLCB1dGY4Lmxlbmd0aCgpKTsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFJlcGxhY2lu
Z0ludmFsaWRTZXF1ZW5jZXMocGVyY2VudERlY29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5z
aXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29h
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAKaW5kZXggOTYxZjBj
ZmZjNjhiMWNhZjFhOTc3MDcwNmM0ZDE2MzcyYWIzYTcwNy4uYmRmOWNmNTE4ODVhYWYzNzEzZDAw
ZGJlZTllMWRkNTViOTk3ZTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvQ1BV
VGltZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9DUFVUaW1lQ29jb2EuY3Bw
CkBAIC01NCw3ICs1NCw3IEBAIE9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiAgICAg
bWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRJbmZvQ291bnQgPSBUQVNLX1RIUkVBRF9USU1F
U19JTkZPX0NPVU5UOwogICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hf
dGFza19zZWxmKCksIFRBU0tfVEhSRUFEX1RJTUVTX0lORk8sIHJlaW50ZXJwcmV0X2Nhc3Q8dGFz
a19pbmZvX3Q+KCZ0aHJlYWRJbmZvRGF0YSksICZ0aHJlYWRJbmZvQ291bnQpOwogICAgIGlmIChy
ZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50NjRfdCB1c2VyVGltZSA9IHRpbWVW
YWx1ZVRvTWljcm9zZWNvbmRzKHRocmVhZEluZm9EYXRhLnVzZXJfdGltZSk7CiAgICAgaW50NjRf
dCBzeXN0ZW1UaW1lID0gdGltZVZhbHVlVG9NaWNyb3NlY29uZHModGhyZWFkSW5mb0RhdGEuc3lz
dGVtX3RpbWUpOwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpn
ZXQoKQogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdGFza0luZm9Db3VudCA9IFRBU0tfQkFT
SUNfSU5GT19DT1VOVDsKICAgICByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwg
VEFTS19CQVNJQ19JTkZPLCByZWludGVycHJldF9jYXN0PHRhc2tfaW5mb190PigmdGFza0luZm9E
YXRhKSwgJnRhc2tJbmZvQ291bnQpOwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgdXNlclRpbWUgKz0gdGltZVZhbHVlVG9NaWNyb3NlY29uZHModGFza0luZm9EYXRh
LnVzZXJfdGltZSk7CiAgICAgc3lzdGVtVGltZSArPSB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyh0
YXNrSW5mb0RhdGEuc3lzdGVtX3RpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNv
Y29hLm1tCmluZGV4IDgzNzVjZmM2OTY5NWQ3MWY2NzZhZGNmNmNlNGEzMzg2MzIyOGQ3YTAuLjA3
MGExZmU5YWVlNDlhNDRlNTMxNjZiZTAyZTVmNmI0NjlhNjI1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCBPcHRpb25hbDxib29s
PiBhbGxvd3NNYXRlcmlhbGl6aW5nRGF0YWxlc3NGaWxlcyhQb2xpY3lTY29wZSBzY29wZSkKICAg
ICBpZiAocmV0ID09IElPUE9MX01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJTEVTX09GRikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIExPR19FUlJPUigiRmlsZVN5c3RlbTo6YWxsb3dzTWF0ZXJp
YWxpemluZ0RhdGFsZXNzRmlsZXMoKTogZ2V0aW9wb2xpY3lfbnAgY2FsbCBmYWlsZWQsIGVycm5v
OiAlZCIsIGVycm5vKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQppbmRleCA0NmYwNTdh
M2VjNDkyMTQyYWQyZTM3N2E4ZDEyYzZkZDZjY2Y3NThhLi5iNjg3MzdkYTZlMjkyMzVkNTEyNTA4
MDIxMTlmMmI4ZmM2MzdkMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQpAQCAtMTk4LDcgKzE5OCw3IEBAIE9wdGlvbmFsPE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJl
c3N1cmVIYW5kbGVyCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IFRBU0tfVk1f
SU5GT19DT1VOVDsKICAgICBrZXJuX3JldHVybl90IGVyciA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tf
c2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5mbywgJmNvdW50KTsKICAg
ICBpZiAoZXJyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNZW1vcnlVc2FnZSB7
c3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8uaW50ZXJuYWwpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KHZtSW5mby5waHlzX2Zvb3RwcmludCl9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Y29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRl
eCA5ODc3ZmM3ZWJiN2FmNTk0YWRiZWRjNTc1MTA0NWI2ZDZmNmI1ZWM0Li5hMTc5NzIwMzc5MzA2
ZDA5Mjc1NzhiNDBkYTI0MjAzYTRhMzIwYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpA
QCAtOTUsNyArOTUsNyBAQCBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBV
UkwmIHZlY3RvckVsZW1lbnQpCiBPcHRpb25hbDxVUkw+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0
IFVSTCosIGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5k
T2ZDbGFzczpOU1VSTC5jbGFzc10pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBhcnJheUVsZW1lbnQgfSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNzdXJl
SGFuZGxlckdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXJHZW5lcmljLmNwcAppbmRleCBlN2YzMmI4ZTk0OGU0MTI3NWEzOGY2NzUxNmNjNTdl
Zjc3YzZmMGUzLi4xYWVhNDZhYWVhMjY5NmQwMGJjZmMyYThhNzVkZjFjOTQyNDI3YWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNzdXJlSGFuZGxlckdlbmVy
aWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
R2VuZXJpYy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsLCBTeW5jaHJvbm91cykKIAogT3B0aW9u
YWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvQ2hh
c3Npc1R5cGUuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lzVHlwZS5jcHAKaW5kZXgg
MThiZWY3N2Q0ZWY2YjQ3MDdjMTM4YzlmNGI2ZjNhYWM1MTJiNmUxOC4uMmRkNjVmNDZiNWIwOGNi
OTgwOGMwOTEzYjM2NzBkNjAzMGMyM2UwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xp
Yi9DaGFzc2lzVHlwZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lzVHlwZS5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkTWFj
aGluZUluZm9DaGFzc2lzVHlwZSgpCiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRj
L21hY2hpbmUtaW5mbyIsICZidWZmZXIub3V0UHRyKCksIG51bGxwdHIsICZlcnJvci5vdXRQdHIo
KSkpIHsKICAgICAgICAgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfRklMRV9F
UlJPUiwgR19GSUxFX0VSUk9SX05PRU5UKSkKICAgICAgICAgICAgIGdfd2FybmluZygiQ291bGQg
bm90IG9wZW4gL2V0Yy9tYWNoaW5lLWluZm86ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIEdVbmlxdWVQdHI8Y2hhcio+IHNwbGl0KGdfc3Ryc3BsaXQoYnVmZmVyLmdldCgp
LCAiXG4iLCAtMSkpOwpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5
cGU+IHJlYWRNYWNoaW5lSW5mb0NoYXNzaXNUeXBlKCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3Rh
dGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkRE1JQ2hhc3Npc1R5cGUoKQpAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgp
CiAgICAgfSBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0ZJTEVfRVJS
T1IsIEdfRklMRV9FUlJPUl9OT0VOVCkpCiAgICAgICAgIGdfd2FybmluZygiQ291bGQgbm90IG9w
ZW4gL3N5cy9jbGFzcy9kbWkvaWQvY2hhc3Npc190eXBlOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsK
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkQUNQSUNoYXNzaXNUeXBlKCkKQEAg
LTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRBQ1BJQ2hh
c3Npc1R5cGUoKQogICAgIH0gZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwg
R19GSUxFX0VSUk9SLCBHX0ZJTEVfRVJST1JfTk9FTlQpKQogICAgICAgICBnX3dhcm5pbmcoIkNv
dWxkIG5vdCBvcGVuIC9zeXMvZmlybXdhcmUvYWNwaS9wbV9wcm9maWxlOiAlcyIsIGVycm9yLT5t
ZXNzYWdlKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogQ2hhc3Npc1R5cGUgY2hhc3Npc1R5cGUoKQpAQCAtMTM0LDcgKzEzNCw3IEBA
IENoYXNzaXNUeXBlIGNoYXNzaXNUeXBlKCkKICAgICAgICAgICAgIG9wdGlvbmFsQ2hhc3Npc1R5
cGUgPSByZWFkRE1JQ2hhc3Npc1R5cGUoKTsKICAgICAgICAgaWYgKCFvcHRpb25hbENoYXNzaXNU
eXBlKQogICAgICAgICAgICAgb3B0aW9uYWxDaGFzc2lzVHlwZSA9IHJlYWRBQ1BJQ2hhc3Npc1R5
cGUoKTsKLSAgICAgICAgY2hhc3Npc1R5cGUgPSBvcHRpb25hbENoYXNzaXNUeXBlLnZhbHVlT3Io
Q2hhc3Npc1R5cGU6OkRlc2t0b3ApOworICAgICAgICBjaGFzc2lzVHlwZSA9IG9wdGlvbmFsQ2hh
c3Npc1R5cGUudmFsdWVfb3IoQ2hhc3Npc1R5cGU6OkRlc2t0b3ApOwogICAgIH0pOwogCiAgICAg
cmV0dXJuIGNoYXNzaXNUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApp
bmRleCBiZDkzZjBiM2E4MmU4M2VhYTZmNTk0ZjdmNTYxMTBjMWNjMjIxZDI5Li40MzAyZmE5ZjFi
NGJiYWE5ZjNlOTk3MzJmNWIyOGM2Y2IzZmQ4MzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogewogICAgIEdSZWZQdHI8R0ZpbGVJbmZv
PiBpbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9pb19zdHJlYW1fcXVlcnlfaW5mbyhoYW5kbGUsIEdf
RklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlm
ICghaW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRfc2l6ZShpbmZvLmdldCgp
KTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIE9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IElzIHRoZXJlIGEgd2F5IHRvIHJl
dHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBw
b3J0IGl0PwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQ
bGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBzdWZmaXgpCkBAIC0yNDEs
NyArMjQxLDcgQEAgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJp
bmcmIGZzRmlsZSkKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9u
ZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxl
SW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCks
IEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBp
ZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9hdHRyaWJ1dGVf
dWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKaW5k
ZXggODNmMTE5YWMzZDMwMmI0MGQ3MDQyOWFjN2QzMzZlYTVlMGQ1OTIwOC4uYjYwMzVkYjRlNzRk
NzY3ODRlOGJhYWU2ZDA4YjQ4MWQ0Mzc2N2E3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
cGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgT3B0aW9uYWw8
QXRvbVN0cmluZz4gQ29kZXI8QXRvbVN0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwogICAg
IGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0cmluZykgfX07CiB9
CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJpbmc+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOwogICAg
IGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGxlbmd0
aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgbnVsbCBzdHJpbmcuCkBAIC03NCwxMiArNzQsMTIgQEAgT3B0aW9uYWw8Q1N0
cmluZz4gQ29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgLy8g
QmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIg
YnVmZmVyIGlzIGJpZyBlbm91Z2guCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW48Y2hhcj4oKmxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjaGFyKiBidWZmZXI7CiAgICAg
Q1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVkKCpsZW5ndGgsIGJ1ZmZl
cik7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihidWZmZXIpLCAqbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdHJpbmc7
CiB9CkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFN0cmluZz4g
ZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJfdCBsZW5ndAogewogICAg
IC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNv
ZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgogICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xhcmdl
RW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDaGFyYWN0
ZXJUeXBlKiBidWZmZXI7CiAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXpl
b2YoQ2hhcmFjdGVyVHlwZSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBzdHJpbmc7CiB9CkBAIC0x
MjMsNyArMTIzLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbGVuZ3RoOwogICAgIGRlY29k
ZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpsZW5ndGggPT0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMzLDcgKzEzMyw3IEBAIE9wdGlvbmFsPFN0cmluZz4g
Q29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Ym9v
bD4gaXM4Qml0OwogICAgIGRlY29kZXIgPj4gaXM4Qml0OwogICAgIGlmICghaXM4Qml0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCppczhCaXQpCiAgICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFy
PihkZWNvZGVyLCAqbGVuZ3RoKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBPcHRpb25hbDxTSEExOjpE
aWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIFNIQTE6OkRpZ2VzdCB0bXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3Ro
RGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1wKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHRtcDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5o
IGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5oCmluZGV4IDky
YzRiYjI1ZThkZDcwYzMwYTdiMWEwM2NjMDFkMjZmNDU0MmZmYWIuLjU2ZDhkNjk5ZjYwMDNhNTAz
ZGQ5MTc1YmNkOGMzMzBmYTk1OWYzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNp
c3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5j
ZS9QZXJzaXN0ZW50Q29kZXJzLmgKQEAgLTUxLDEyICs1MSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQ29kZXI8c3RkOjpwYWlyPFQsIFU+PiB7CiAgICAgICAg
IE9wdGlvbmFsPFQ+IGZpcnN0OwogICAgICAgICBkZWNvZGVyID4+IGZpcnN0OwogICAgICAgICBp
ZiAoIWZpcnN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VT4gc2Vjb25kOwogICAg
ICAgICBkZWNvZGVyID4+IHNlY29uZDsKICAgICAgICAgaWYgKCFzZWNvbmQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZmlyc3QpLCBXVEZNb3ZlKCpzZWNvbmQpIH19
OwogICAgIH0KQEAgLTc5LDE0ICs3OSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29kZXI8T3B0aW9uYWw8VD4+IHsKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNFbmdhZ2VkOwog
ICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaWYgKCEqaXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPE9wdGlvbmFsPFQ+PiB7IE9wdGlvbmFsPFQ+IHsgV1RGOjpudWxsb3B0IH0gfTsKKyAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4geyBPcHRpb25hbDxUPiB7IHN0
ZDo6bnVsbG9wdCB9IH07CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKICAg
ICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiB7IE9wdGlvbmFs
PFQ+IHsgV1RGTW92ZSgqdmFsdWUpIH0gfTsKICAgICB9CkBAIC0xMDMsMTIgKzEwMywxMiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGU+IHN0cnVjdCBDb2Rl
cjxXVEY6OktleVZhbHVlUGFpcjxLZQogICAgICAgICBPcHRpb25hbDxLZXlUeXBlPiBrZXk7CiAg
ICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj52YWx1
ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7eyBX
VEZNb3ZlKCprZXkpLCBXVEZNb3ZlKCp2YWx1ZSkgfX07CiAgICAgfQpAQCAtMTI5LDE0ICsxMjks
MTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdHJ1Y3Qg
VmVjdG9yQ29kZXI8ZmFsc2UsIFQsIGlubGluZUMKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IHNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICAgICAgaWYgKCFzaXplKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiB0bXA7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgewogICAgICAgICAgICAgT3B0aW9u
YWw8VD4gZWxlbWVudDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAgICAgICAg
ICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB0bXAuYXBw
ZW5kKFdURk1vdmUoKmVsZW1lbnQpKTsKICAgICAgICAgfQogCkBAIC0xNTcsMTAgKzE1NywxMCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBWZWN0
b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gZGVj
b2RlZFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFNpemU7CiAgICAgICAgIGlmICgh
ZGVjb2RlZFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90
PigqZGVjb2RlZFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBzaXplID0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PigqZGVjb2RlZFNpemUpOwogCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JDb2Rl
cjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICAvLyBvbmUgZmVsbCBzd29vcC4gQmVmb3JlIGFs
bG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZl
cgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdoLgogICAgICAgICBpZiAoIWRlY29kZXIuYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFZl
Y3RvcjxULCBpbmxpbmVDYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVtcC5ncm93KHNpemUpOwog
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9mKFQpKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIHJldHVybiB0ZW1wOwogICAgIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaQogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaGFzaE1hcFNp
emU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaE1hcFNpemU7CiAgICAgICAgIGlmICghaGFzaE1h
cFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBIYXNoTWFwVHlwZSB0ZW1wSGFzaE1hcDsKICAg
ICAgICAgdGVtcEhhc2hNYXAucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oKmhhc2hNYXBTaXplKSk7CkBAIC0yMDUsMTUgKzIwNSwxNSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5h
bWUgS2V5VHJhaQogICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CiAgICAgICAgICAg
ICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIE9wdGlvbmFsPE1hcHBlZEFyZz4gdmFsdWU7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKFdURk1vdmUoKmtleSksIFdU
Rk1vdmUoKnZhbHVlKSkuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNo
IG1hcCBhbHJlYWR5IGhhcyB0aGUgc3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjM2LDE4ICsyMzYsMTggQEAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFp
dHNBcmc+IHN0cnVjdCBDb2RlcjwKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhhc2hTZXRT
aXplOwogICAgICAgICBkZWNvZGVyID4+IGhhc2hTZXRTaXplOwogICAgICAgICBpZiAoIWhhc2hT
ZXRTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFzaFNldFR5cGUgdGVtcEhhc2hTZXQ7CiAg
ICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaGFzaFNldFNpemU7ICsraSkgewogICAg
ICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGtl
eTsKICAgICAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgaWYgKCF0ZW1wSGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNOZXdFbnRyeSkgewogICAg
ICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUgc3BlY2lmaWVkIGtl
eSwgYmFpbC4KLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtMjY2LDcgKzI2Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFNlY29uZHM+IHsKICAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsK
ICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gU2Vjb25kcygq
dmFsdWUpOwogICAgIH0KIH07CkBAIC0yODIsNyArMjgyLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29kZXI8V2FsbFRpbWU+IHsKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKICAgICAg
ICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKnZhbHVlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRp
b24uY3BwIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9u
LmNwcAppbmRleCBiOThhZDc1ODJhYzI1MzMzZWVjZTc0N2E1NDU2YTI5NmY4MTA0MDA2Li42YTI1
NTQ2OGIwYzQ5MGYwODNmODVmOTIwMTMzZmIzMWM4NzJiNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKQEAgLTQ5LDEy
ICs0OSwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVUeXBlUG90ZW50aWFsbHlG
b2xsb3dpbmdTeW1MaW5rcyhjb25zdCBTdHJpbmcmIHBhdAogICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8
fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhdEZ1bmMgPSBzaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/
IHN0YXQgOiBsc3RhdDsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKICAgICBpZiAoc3RhdEZ1
bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKFNfSVNESVIoZmlsZUlu
Zm8uc3RfbW9kZSkpCiAgICAgICAgIHJldHVybiBGaWxlVHlwZTo6RGlyZWN0b3J5OwpAQCAtMTIy
LDEyICsxMjIsMTIgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEo
KSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmaWxlSW5mby5zdF9zaXplOwogfQpAQCAt
MTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0ZW1TdGF0OwogICAgIGlm
ICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZVN5
c3RlbVN0YXQpKQogICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVN0YXQuZl9iYXZhaWwgKiBmaWxl
U3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQpAQCAtMjM0LDcg
KzIzNCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBhdXRvIGxpbmtQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0aC5kYXRhKCks
ICZzdGF0KSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBMaW5rIGNvdW50IGlzIDIgaW4gdGhlIHNpbmdsZSBj
bGllbnQgY2FzZSAodGhlIGJsb2IgZmlsZSBhbmQgYSBsaW5rKS4KICAgICByZXR1cm4gc3RhdC5z
dF9ubGluayAtIDE7CkBAIC0yNTcsMTIgKzI1NywxMiBAQCBPcHRpb25hbDxXYWxsVGltZT4gZmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIENTdHJpbmcgZnNSZXAg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVwLmRhdGEo
KSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVJ
bmZvOwogCiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCBlYzMyMjJjZWEwOTM1
NWE2ZmJlNzZkNWRjM2U1MjM2Yzg2NDdjYzliLi5hN2JhMDQ3YjA1N2M3YmM0Mzc3N2VlMjI5MTk0
Y2Y5YjhmMmZlNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKICAgICBpZiAo
ZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVJbmZvLnN0X3Np
emU7CiB9CkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBPcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CiAKICAg
ICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2Fs
bFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGltZSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShwYXRoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApAQCAtMjMwLDcgKzIzMCw3IEBAIE9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAg
c3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVT
dGF0KSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0Jhc2U2NC5jcHAKaW5kZXggOTRlNDE1YzQ2NDk2NzAxMTgxZTY4Yjk4OTFhNTQ3NDUyOGQ3YWJk
NS4uYWEyN2JjZGIxM2FjODIzMTc1ZWEzYWM0MDJmNjRjODdiMDZmYzk2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QmFzZTY0LmNwcApAQCAtMTkzLDE2ICsxOTMsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QK
ICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwogICAgICAgICAgICAgLy8gVGhlcmUgc2hv
dWxkIG5ldmVyIGJlIG1vcmUgdGhhbiAyIHBhZGRpbmcgY2hhcmFjdGVycy4KICAgICAgICAgICAg
IGlmIChvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9wdGlvbnM6OlZhbGlkYXRlUGFkZGlu
ZykgJiYgZXF1YWxzU2lnbkNvdW50ID4gMikgewotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNoYXIgZGVjb2RlZENoYXJhY3Rl
ciA9IGNoIDwgZGVjb2RlTWFwU2l6ZSA/IGRlY29kZU1hcFtjaF0gOiBub25BbHBoYWJldDsKICAg
ICAgICAgICAgIGlmIChkZWNvZGVkQ2hhcmFjdGVyICE9IG5vbkFscGhhYmV0KSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGVxdWFsc1NpZ25Db3VudCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltkZXN0aW5hdGlvbkxlbmd0aCsrXSA9IGRlY29k
ZWRDaGFyYWN0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmNvbnRhaW5zKEJh
c2U2NERlY29kZU9wdGlvbnM6Oklnbm9yZVNwYWNlc0FuZE5ld0xpbmVzKSB8fCAoIWlzTGF0aW4x
KGNoKSB8fCAhaXNBU0NJSVNwYWNlKGNoKSB8fCAob3B0aW9ucy5jb250YWlucyhCYXNlNjREZWNv
ZGVPcHRpb25zOjpEaXNjYXJkVmVydGljYWxUYWIpICYmIGNoID09ICdcdicpKSkgewotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIxNCwyMyAr
MjE0LDIzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0CiAKICAgICBpZiAoIWRlc3RpbmF0aW9u
TGVuZ3RoKSB7CiAgICAgICAgIGlmIChlcXVhbHNTaWduQ291bnQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IH07CiAgICAgfQogCiAgICAgLy8gVGhlIHNob3Vs
ZCBiZSBubyBwYWRkaW5nIGlmIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9mIDQuCiAgICAgLy8gV2Ug
dXNlIChkZXN0aW5hdGlvbkxlbmd0aCArIGVxdWFsc1NpZ25Db3VudCkgaW5zdGVhZCBvZiBsZW5n
dGggYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFjY291bnQgZm9yIGlnbm9yZWQgY2hhcmFjdGVy
cyAoaS5lLiBzcGFjZXMpLgogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9w
dGlvbnM6OlZhbGlkYXRlUGFkZGluZykgJiYgZXF1YWxzU2lnbkNvdW50ICYmIChkZXN0aW5hdGlv
bkxlbmd0aCArIGVxdWFsc1NpZ25Db3VudCkgJSA0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVmFsaWQgZGF0YSBp
cyAobiAqIDQgKyBbMCwyLDNdKSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAgaWYgKChkZXN0aW5hdGlv
bkxlbmd0aCAlIDQpID09IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gNC1ieXRlIHRvIDMtYnl0ZSBjb252
ZXJzaW9uCiAgICAgZGVzdGluYXRpb25MZW5ndGggLT0gKGRlc3RpbmF0aW9uTGVuZ3RoICsgMykg
LyA0OwogICAgIGlmICghZGVzdGluYXRpb25MZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1bnNpZ25lZCBzaWR4
ID0gMDsKICAgICB1bnNpZ25lZCBkaWR4ID0gMDsKQEAgLTI3NCwxNCArMjc0LDE0IEBAIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQsIE9wdGlv
blNldDxCYXNlNjREZWNvZGVPCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29k
ZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0
aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6
ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgb3B0aW9u
cywgbWFwKTsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoY29u
c3QgVmVjdG9yPGNoYXI+JiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERlY29kZU9wdGlvbnM+IG9w
dGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0
YSgpKSwgaW5wdXQuc2l6ZSgpLCBvcHRpb25zLCBtYXApOwogfQogCkBAIC0zMTQsMTQgKzMxNCwx
NCBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShTdHJpbmdWaWV3
IGlucHV0KQogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgeyB9LCBCYXNlNjREZWNvZGVN
YXA6OlVSTCk7CiB9CiAKIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2Rl
KGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0LnNpemUoKSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0
YSgpKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6VVJMKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAppbmRleCAw
OWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjLi4zNTZjNzU2YzY5YTRkMzZk
YTk3YjMwNTFhMDFhNDA1YWJkNDVlMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtNDUsNyArNDUsNyBAQCBlbnVtIGNsYXNzIFRy
YWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93LCBBbGxvdyB9OwogdGVtcGxhdGU8dHlwZW5hbWUg
SW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5
cGU+IHBhcnNlSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCB1aW50OF90IGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeSBwb2xpY3kpCiB7CiAgICAgaWYgKCFk
YXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgd2hpbGUgKGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoKmRhdGEpKSB7CiAg
ICAgICAgIC0tbGVuZ3RoOwpAQCAtNjksNyArNjksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRl
Z3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4g
cAogICAgIH07CiAKICAgICBpZiAoIShsZW5ndGggJiYgaXNDaGFyYWN0ZXJBbGxvd2VkSW5CYXNl
KCpkYXRhLCBiYXNlKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDaGVja2VkPEludGVncmFsVHlwZSwgUmVjb3JkT3Zl
cmZsb3c+IHZhbHVlOwogICAgIGRvIHsKQEAgLTgyLDcgKzgyLDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3Jh
bFR5cGU+IHAKICAgICB9IHdoaWxlICgtLWxlbmd0aCAmJiBpc0NoYXJhY3RlckFsbG93ZWRJbkJh
c2UoKisrZGF0YSwgYmFzZSkpOwogCiAgICAgaWYgKFVOTElLRUxZKHZhbHVlLmhhc092ZXJmbG93
ZWQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAocG9saWN5ID09IFRyYWlsaW5nSnVua1BvbGljeTo6RGlzYWxs
b3cpIHsKICAgICAgICAgd2hpbGUgKGxlbmd0aCAmJiBpc0FTQ0lJU3BhY2UoKmRhdGEpKSB7CkBA
IC05MCw3ICs5MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFsVHlwZSwgdHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwCiAgICAgICAgICAgICArK2Rh
dGE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CmluZGV4IDM3NTY5MWVhYzg2ZDM0YjBkOGRjMjA0OWJkMDdjZmM0ZWRkZDc4ZDAuLmUwOTY3Mjkw
MWVmOTNmZjkzYjMzNDkwMTA2N2E3NTM2ZmJkMTI3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiB9OwogCiBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3Ry
aW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwobWFrZVVuaXF1ZTxJbXBsPihz
dHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6IG1faW1wbChtYWtlVW5pcXVlPElt
cGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBzdGQ6Om51bGxvcHQgOiBPcHRp
b25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tIGIvU291cmNlL1dURi93dGYv
dGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQppbmRleCBlZjY2OWJjNDEzOTk2ZmUyYWM4ZjFmZjdk
YTRkN2M1MjhhYzlmMTVmLi5mNWEzNjM1MDUwZWQ1ZTdjMzA1NzFmNWRkNzkzOTkwMjFmMDkzNWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KQEAgLTM4LDcgKzM4
LDcgQEAgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgU3RyaW5nJiB2ZWN0
b3JFbGVtZW50KQogT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxlbWVudChjb25zdCBTdHJp
bmcqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9m
Q2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgYXJyYXlFbGVtZW50IH0g
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmggYi9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCA0OGM2YWFjNDRmNDNmODcxYmY1
YTQ1MzBjMGU1N2JlM2VmNWI0ZDFhLi42NjU3NzQ4YWUxZDU0NDY0NWM5ZjMzN2M1ODhhYjBjZjdm
NTI5MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtNjMsMTIgKzYzLDEyIEBAIGlu
bGluZSBzdGQ6OnR1cGxlPGludCwgT3B0aW9uYWw8aW50Pj4gdG9TeXN0ZW1TaWduYWwoU2lnbmFs
IHNpZ25hbCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewogICAgIGNhc2UgU2lnbmFsOjpBY2Nl
c3NGYXVsdDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdTRUdWLCBTSUdCVVMpOwotICAgIGNh
c2UgU2lnbmFsOjpJbGxlZ2FsSW5zdHJ1Y3Rpb246IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lH
SUxMLCBXVEY6Om51bGxvcHQpOwotICAgIGNhc2UgU2lnbmFsOjpVc3I6IHJldHVybiBzdGQ6Om1h
a2VfdHVwbGUoU0lHSUxMLCBXVEY6Om51bGxvcHQpOwotICAgIGNhc2UgU2lnbmFsOjpGbG9hdGlu
Z1BvaW50OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0ZQRSwgV1RGOjpudWxsb3B0KTsKLSAg
ICBjYXNlIFNpZ25hbDo6QnJlYWtwb2ludDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdUUkFQ
LCBXVEY6Om51bGxvcHQpOworICAgIGNhc2UgU2lnbmFsOjpJbGxlZ2FsSW5zdHJ1Y3Rpb246IHJl
dHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHSUxMLCBzdGQ6Om51bGxvcHQpOworICAgIGNhc2UgU2ln
bmFsOjpVc3I6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHSUxMLCBzdGQ6Om51bGxvcHQpOwor
ICAgIGNhc2UgU2lnbmFsOjpGbG9hdGluZ1BvaW50OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJ
R0ZQRSwgc3RkOjpudWxsb3B0KTsKKyAgICBjYXNlIFNpZ25hbDo6QnJlYWtwb2ludDogcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShTSUdUUkFQLCBzdGQ6Om51bGxvcHQpOwogI2lmICFPUyhEQVJXSU4p
Ci0gICAgY2FzZSBTaWduYWw6OkFib3J0OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0FCUlQs
IFdURjo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6OkFib3J0OiByZXR1cm4gc3RkOjptYWtl
X3R1cGxlKFNJR0FCUlQsIHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAgICBkZWZhdWx0OiBicmVh
azsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKaW5kZXggZDcwYmZiNTFhZDM3NzMy
MTA3NWFjMDhlNzk0YTM5MmFjMzIyMjc5Yy4uNGExYTNlNTQyMjVmNTI4MGE5MGZlZWVhNzQwMzE3
MTZhY2VhNTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0NQVVRpbWVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcApAQCAtNTYsNyArNTYsNyBA
QCBPcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogICAgIEZJTEVUSU1FIGtlcm5lbFRp
bWU7CiAgICAgRklMRVRJTUUgdXNlclRpbWU7CiAgICAgaWYgKCE6OkdldFByb2Nlc3NUaW1lcyg6
OkdldEN1cnJlbnRQcm9jZXNzKCksICZjcmVhdGlvblRpbWUsICZleGl0VGltZSwgJmtlcm5lbFRp
bWUsICZ1c2VyVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ1BVVGltZSB7IE1vbm90b25pY1RpbWU6
Om5vdygpLCBmaWxlVGltZVRvU2Vjb25kcyh1c2VyVGltZSksIGZpbGVUaW1lVG9TZWNvbmRzKGtl
cm5lbFRpbWUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3Rl
bVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMGQy
YThhZGY4Zjg2YTY2YmIyODIxNDY1YjI2NDA1MTdlMTE3ZDA0Ny4uMWQwYTIwNDRlODYyYWEzMGVm
ODA1NTFiZTFkNmMwZWQ3MmI5MzNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNw
cApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGdldEZpbGVTaXpl
RnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0CiAgICAgZmlsZVNpemUu
TG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7CiAKICAgICBpZiAoZmlsZVNp
emUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6bnVtZXJpY19saW1pdHM8
bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVTaXplLlF1YWRQYXJ0Owog
fQpAQCAtMTA3LDcgKzEwNyw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZUhhbmRsZSkKIHsKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElP
TiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxl
KGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGdldEZpbGVT
aXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbik7
CiB9CkBAIC0xMTYsNyArMTE2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7
CiAgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB0aW1lX3Qg
dGltZSA9IDA7CiAgICAgZmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGlt
ZSk7CkBAIC0zNDMsMTIgKzM0MywxMiBAQCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewogICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUo
ZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVJbmZv
cm1hdGlvbiA9IHsgfTsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaGFu
ZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgewogICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2lu
L01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKaW5kZXggMWFlZTQ4NmRlZjk5NzI3OGZiOGQw
MGUyYjFjMjFmYTMyZDI5YWI0Ni4uN2FiNGEwNGYxNzgyYWMxZDY0YmMyN2I2OWU4ZmYwNDQyYjE0
MDY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxl
cldpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldp
bi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3Bv
bmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm8KIAogT3B0aW9u
YWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9UaHJl
YWRpbmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKaW5kZXgg
NGIzNzI0N2Y5OTA3MjNlMzI4ZTdkYzkyZGUyNWI1YzMwODZhZTkyNi4uNjAwNmQwMTM0NTIzMDJh
ZGE5MGI4NThmNGIzN2E0MzFmYTA0MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L1RocmVhZGluZ1dpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5j
cHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBib29sIFRocmVhZDo6ZXN0YWJsaXNoSGFuZGxlKE5ld1Ro
cmVhZENvbnRleHQqIGRhdGEsIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tTaXplLAogewogICAgIHVu
c2lnbmVkIHRocmVhZElkZW50aWZpZXIgPSAwOwogICAgIHVuc2lnbmVkIGluaXRGbGFnID0gc3Rh
Y2tTaXplID8gU1RBQ0tfU0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9OIDogMDsKLSAgICBIQU5E
TEUgdGhyZWFkSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KF9iZWdpbnRocmVhZGV4
KG51bGxwdHIsIHN0YWNrU2l6ZS52YWx1ZU9yKDApLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBkYXRh
LCBpbml0RmxhZywgJnRocmVhZElkZW50aWZpZXIpKTsKKyAgICBIQU5ETEUgdGhyZWFkSGFuZGxl
ID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KF9iZWdpbnRocmVhZGV4KG51bGxwdHIsIHN0YWNr
U2l6ZS52YWx1ZV9vcigwKSwgd3RmVGhyZWFkRW50cnlQb2ludCwgZGF0YSwgaW5pdEZsYWcsICZ0
aHJlYWRJZGVudGlmaWVyKSk7CiAgICAgaWYgKCF0aHJlYWRIYW5kbGUpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRocmVhZCBhdCBlbnRyeSBwb2ludCAlcCB3aXRoIGRh
dGEgJXA6ICVsZCIsIHd0ZlRocmVhZEVudHJ5UG9pbnQsIGRhdGEsIGVycm5vKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaAppbmRleCBiNzk2MDY3MTI4YzU2Nzc1
OWUzZDRlY2ViYmU5MzBkMzQzMGY0OWU1Li45NDhmYjU1ODU2ZWU5OTYyNjY5MTM0NjhkZmU4ODNm
NjQ2OTM0Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaApAQCAtNTYsNyArNTYsNyBAQCBPcHRp
b25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlPiBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNl
OjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UgcmVz
dWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAppbmRleCA4MDc4Zjk1NzIxNDNiZGUz
ODBmZDRlNDRhYmM0ODMxOGY4Yzc5MmQ2Li5lODMxZDAyZjJmYWUzNzJkN2U2NDUzNzJmYjE5YjE2
MWYzZjBiOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApAQCAtNTksNyArNTksNyBAQCBPcHRp
b25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhPiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
OjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEgcmVz
dWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheUxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TGluZUl0ZW0uaAppbmRleCBlNzRiZmQ4M2ZiMjEzZWE1YzBmY2I3MGQ2NDMyNmJlNDM4
Y2NiZGZjLi5iZWE0YjIzYTM2ZmNjZmQzNTQwMTUwNTk2ZjkxMGUxMTI1MWY4NjYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaApA
QCAtNjMsMjQgKzYzLDI0IEBAIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0ZW0+IEFwcGxlUGF5TGlu
ZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIEFwcGxlUGF5TGluZUl0ZW0gcmVz
dWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQudHlwZSA9IFdURk1vdmUoKnR5cGUpOwogCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LmxhYmVsID0gV1RGTW92ZSgqbGFiZWwpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBhbW91bnQ7CiAgICAgZGVjb2RlciA+PiBhbW91bnQ7CiAgICAgaWYgKCFhbW91bnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LmFtb3VudCA9IFdURk1vdmUoKmFtb3VudCk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxp
bmVJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxp
bmVJdGVtRGF0YS5oCmluZGV4IDg4ODFkZGNkZmJkMzYyY2IxMmE3Yjg1OWUxZWU0ZTdmYWNhMzZh
MjQuLjk1OGUzNmZjMGI2NTQyN2YzNWI2MDA4ZDc2MDAzMGViN2FmMDNlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW1EYXRh
LmgKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbURhdGE+IEFwcGxl
UGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcHBsZVBh
eUxpbmVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVw
ZGF0ZS5oCmluZGV4IGJhODA2ODEyNjAzYjIzMzEyY2M3OWRkODZiM2RhOTUyOGQ5MjIwMmYuLmFj
N2Y2MjlmMmIwZWYwZGIwZjJiOTRmY2VhZTE5MDc3YTUwNzdmODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZS5oCkBAIC01OSwxOCArNTksMTggQEAgT3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZTo6
ZGVjb2QKICAgICBBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlIHJlc3VsdDsKIAogICAg
IGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0
b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRlY29kZXIgPj4gZXJyb3Jz
OwogICAgIGlmICghZXJyb3JzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5lcnJvcnMgPSBXVEZNb3ZlKCplcnJv
cnMpOwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5U2hpcHBpbmdNZXRob2Q+PiBuZXdT
aGlwcGluZ01ldGhvZHM7CiAgICAgZGVjb2RlciA+PiBuZXdTaGlwcGluZ01ldGhvZHM7CiAgICAg
aWYgKCFuZXdTaGlwcGluZ01ldGhvZHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm5ld1NoaXBwaW5nTWV0aG9k
cyA9IFdURk1vdmUoKm5ld1NoaXBwaW5nTWV0aG9kcyk7CiAKICAgICByZXR1cm4gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50TWV0aG9kVXBkYXRlLmgKaW5kZXggMjk0NmNjYzg5OTQ0YTgyMWM4OWRkN2Q4Y2Nl
MTliM2ZkNzBlMzI5NS4uNzE5NWM5Mzc4NTkwNjc1YTk4YzRjMzUzYmJhNGI4YjQ4MTQxM2NkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1l
bnRNZXRob2RVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC01NywxMyArNTcsMTMgQEAgT3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU6
OmRlY29kZShEZWNvZGUKICAgICBBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUgcmVzdWx0Owog
CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2RlZmluZSBERUNP
REUobmFtZSwgdHlwZSkgXAogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVy
ID4+IG5hbWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsgXAorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAgICAgcmVzdWx0Lm5hbWUgPSBX
VEZNb3ZlKCpuYW1lKTsgXAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9JTlNUQUxMTUVOVFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5j
cHAKaW5kZXggODUyYTBjYTk5N2MzMDVjMGIzZGYwMDg1ZmQzNzQxZDFiZTM4ODNhOC4uODFiN2Fi
MzcyNTczOTRiNjFlZjVjN2ZiOGNkOGM3M2ZmY2I4MDNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtMTk3LDcgKzE5
Nyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gY29u
dmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5bWVuCiAKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lv
bjo6U1RBVFVTX0lOVkFMSURfQklMTElOR19QT1NUQUxfQUREUkVTUzoKICAgICAgICAgY29udmVy
dGVkUmVzdWx0LnN0YXR1cyA9IFBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOwot
ICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJyb3JzLmFwcGVuZChBcHBsZVBheUVycm9yOjpjcmVh
dGUoQXBwbGVQYXlFcnJvckNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZCwgV1RGOjpudWxsb3B0
LCBudWxsU3RyaW5nKCkpKTsKKyAgICAgICAgY29udmVydGVkUmVzdWx0LmVycm9ycy5hcHBlbmQo
QXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpCaWxsaW5nQ29udGFjdElu
dmFsaWQsIHN0ZDo6bnVsbG9wdCwgbnVsbFN0cmluZygpKSk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBBcHBsZVBheVNlc3Npb246OlNUQVRVU19JTlZBTElEX1NISVBQSU5HX1BPU1RBTF9B
RERSRVNTOgpAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxQYXltZW50QXV0
aG9yaXphdGlvblJlc3VsdD4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5bWVuCiAKICAg
ICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0lOVkFMSURfU0hJUFBJTkdfQ09OVEFDVDoK
ICAgICAgICAgY29udmVydGVkUmVzdWx0LnN0YXR1cyA9IFBheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzOjpGYWlsdXJlOwotICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJyb3JzLmFwcGVuZChBcHBs
ZVBheUVycm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFs
aWQsIFdURjo6bnVsbG9wdCwgbnVsbFN0cmluZygpKSk7CisgICAgICAgIGNvbnZlcnRlZFJlc3Vs
dC5lcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJyb3I6OmNyZWF0ZShBcHBsZVBheUVycm9yQ29kZTo6
U2hpcHBpbmdDb250YWN0SW52YWxpZCwgc3RkOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX1BJTl9SRVFV
SVJFRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTZXR1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0
dXAuY3BwCmluZGV4IGFmMTc1MTYzNDIxM2FjMmNkNjBiN2RkZThkODdiMzhiZWNlNjg4MDQuLjhh
MmEwYjlhMzNlZWQ0YmYxYjc4NGYzZjVkZjFhYzBiOGU1MGU3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcApAQCAtNzgsNyArNzgs
NyBAQCB2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmCiAKICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0
b3IoKS5nZXRTZXR1cEZlYXR1cmVzKG1fY29uZmlndXJhdGlvbiwgZG9jdW1lbnQudXJsKCksIFt0
aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oVmVjdG9y
PFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgc2V0dXBGZWF0dXJlcykgewogICAgICAgICBp
ZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKLSAgICAgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9z
ZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKFdURk1vdmUoc2V0dXBG
ZWF0dXJlcykpOworICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9t
aXNlLCBzdGQ6Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1cmVzKSk7CiAgICAg
fSk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEFwcGxlUGF5U2V0dXA6OmJlZ2luKERv
Y3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNldHVwRmVhdHVyZQogCiAg
ICAgcGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCkuYmVnaW5BcHBsZVBheVNldHVwKG1fY29uZmln
dXJhdGlvbiwgZG9jdW1lbnQudXJsKCksIFdURk1vdmUoZmVhdHVyZXMpLCBbdGhpc10oYm9vbCBy
ZXN1bHQpIHsKICAgICAgICAgaWYgKG1fYmVnaW5Qcm9taXNlKQotICAgICAgICAgICAgc3RkOjpl
eGNoYW5nZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKHJlc3VsdCk7Cisg
ICAgICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5z
ZXR0bGUocmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtMTI1LDEwICsxMjUsMTAgQEAgQXBwbGVQ
YXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBB
cHBsZVBheVNldHVwQ29uZmkKIHZvaWQgQXBwbGVQYXlTZXR1cDo6c3RvcCgpCiB7CiAgICAgaWYg
KG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpCi0gICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9zZXR1cEZl
YXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJy
b3IgfSk7CisgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgc3Rk
OjpudWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBpZiAo
bV9iZWdpblByb21pc2UpCi0gICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIFdU
Rjo6bnVsbG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9yIH0pOworICAgICAgICBz
dGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5zZXR0bGUoRXhjZXB0
aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIGlmIChhdXRvIHBhZ2UgPSBkb3duY2FzdDxEb2N1
bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFnZSgpKQogICAgICAgICBwYWdlLT5w
YXltZW50Q29vcmRpbmF0b3IoKS5lbmRBcHBsZVBheVNldHVwKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250
YWN0VXBkYXRlLmgKaW5kZXggODc1MmEwMzQ2ODgyY2QyZjU4MmIzOTkwYWY2NjJmZDA0MTNiMzli
Yy4uZGYyN2RjODUxNjI1MWZjMjM5ZWIzMDVmM2U3ODlmNDZlYTViYTIzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nQ29udGFjdFVw
ZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGUuaApAQCAtNTksMTMgKzU5LDEzIEBAIE9wdGlvbmFsPEFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlPiBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZTo6ZGVj
b2RlKERlCiAgICAgQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUgcmVzdWx0OwogCiAgICAg
aWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2RlZmluZSBERUNPREUobmFt
ZSwgdHlwZSkgXAogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5h
bWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAgICAgcmVzdWx0Lm5hbWUgPSBXVEZNb3Zl
KCpuYW1lKTsgXAogCiAgICAgREVDT0RFKGVycm9ycywgVmVjdG9yPFJlZlB0cjxBcHBsZVBheUVy
cm9yPj4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlTaGlwcGluZ01ldGhvZC5oCmluZGV4IDg0ZjkyZTkzZWFmZDQ3ODQzNDRkYjY2ZjJjNGQ3
YzJlMDhkMjFiODEuLmNjZmJkNzE0NjE3NTM4YjljNjM2NDZkMzZjOTllMDRkYzMxOGE2ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGlu
Z01ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
aGlwcGluZ01ldGhvZC5oCkBAIC01OCwxMyArNTgsMTMgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlw
cGluZ01ldGhvZD4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIKICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKIAogICAgIGlmICghcmVzdWx0
LmRlY29kZURhdGEoZGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNkZWZpbmUgREVDT0RFKG5hbWUsIHR5cGUpIFwK
ICAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAg
aWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7IFwKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgXAogICAgIHJlc3VsdC5uYW1lID0gV1RGTW92ZSgqbmFtZSk7IFwK
IAogICAgIERFQ09ERShsYWJlbCwgU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCmluZGV4
IGU0MGNmNmQxYmI5MTA1NjBlN2ZjY2M3MWY5NDc4ZTUxNTIwZjBiZDkuLjhiYmE1NDFlN2E3MDM1
OTM4NGE0NTUwYjQ4MjFhODgzZWRiM2JkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmgKQEAg
LTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGE+IEFwcGxl
UGF5U2hpcHBpbmdNZXRob2REYXRhOjpkZWNvZGUoRGVjb2RlciYKIHsKICAgICBBcHBsZVBheVNo
aXBwaW5nTWV0aG9kRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNv
ZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0
ZS5oCmluZGV4IDYzOWJlMGQyYmI5MmExMTQzNjdiYmEzNmI5ODdiOWM2NmRkOTFmNTMuLjg3ZmFj
ODhjNWQ0NjY3YjgyOTJlYjYxYTNhYjM0M2UwYzgxMTNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZFVwZGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIE9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvCiAgICAg
QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSByZXN1bHQ7CiAKICAgICBpZiAoIXJlc3VsdC5k
ZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNw
cAppbmRleCAxMTE1ODU0ZTk1YTE1MDNlYTBmMDgwYzUyMjFhYmEyMGFjOTkwNGMxLi40ODkzYmUy
MTFjNzk0NGNmYTkxNmIyOTFmYmE5ODQ1ODVjZDJkZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0yNzks
MTAgKzI3OSwxMCBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6ZGlkQ2FuY2VsUGF5bWVudFNl
c3Npb24oUGF5bWVudFNlc3Npb25FcnJvciYmIGVycm9yKQogT3B0aW9uYWw8U3RyaW5nPiBQYXlt
ZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERvY3VtZW50JiwgdW5zaWdu
ZWQgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykgY29uc3QKIHsKICAgICBp
ZiAodmVyc2lvbiA8IDIgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwYXltZW50TmV0d29yaywg
ImpjYiIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKHZlcnNpb24gPCAzICYmIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UocGF5bWVudE5ldHdvcmssICJjYXJ0ZUJhbmNhaXJlIikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbV9j
bGllbnQudmFsaWRhdGVkUGF5bWVudE5ldHdvcmsocGF5bWVudE5ldHdvcmspOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRD
b25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50
SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCmluZGV4IDdlMjMxOWU2OTZjMjk5MTRiMDVlYjFi
NThkNDlhMDc5Y2ViNWM0NGIuLmNlNTcwODk2ZmZkOWJkZWRjOTRmYzdjNmZhM2ExM2QxMDRmNTg0
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudElu
c3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29uc3QgQXBwbGVQ
YXlJbnN0YWxsbWVudEl0ZW0mIGl0ZW0pCiBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlJbnN0YWxs
bWVudEl0ZW0+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVt
KiwgaWQgYXJyYXlFbGVtZW50KQogewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRJdGVtQ2xhc3MoKV0pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQ
S1BheW1lbnRJbnN0YWxsbWVudEl0ZW0gKml0ZW0gPSBhcnJheUVsZW1lbnQ7CiAgICAgcmV0dXJu
IEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9u
Q29jb2EubW0KaW5kZXggMDMzMmI4MzQwYjg4MzFmYTczMDU0M2YxMTEwZTcyNDg2ZDVlYzlkMS4u
MTI5MzNhNDFiOWI5ZjkwMGE3MWYwY2Q2ZDc4YmE0OTdhZTRhNzM5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KQEAgLTM4LDExICszOCwxMSBAQCBPcHRpb25hbDxQ
YXltZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNzaW9uOjpmcm9tSlMoSlND
OjpKU0dsb2JhbE9iagogICAgIC8vIEZJWE1FOiBEb24ndCByb3VuZC10cmlwIHVzaW5nIE5TU3Ry
aW5nLgogICAgIGF1dG8ganNvblN0cmluZyA9IEpTT05TdHJpbmdpZnkoJmxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlLCAwKTsKICAgICBpZiAoIWpzb25TdHJpbmcpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGRp
Y3Rpb25hcnkgPSBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+KFtOU0pTT05TZXJpYWxp
emF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNvblN0cmluZyBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczowIGVycm9yOm5pbF0pOwog
ICAgIGlmICghZGljdGlvbmFyeSB8fCAhW2RpY3Rpb25hcnkgaXNLaW5kT2ZDbGFzczpbTlNEaWN0
aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbiA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJjaGFudFNlc3Npb25JbnN0YW5jZSgpIGlu
aXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0KaW5k
ZXggNDhiNTE0ZDlmMDNkZGZiMTVmYTE4ZGY4ZGExYWFkODFjMzMzOWRjNi4uM2JiNjNmMDE3NmFl
MjgxMWRiMmMzMTg1MzU0OTYzNzk0MzhhMzcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0KQEAg
LTY0LDcgKzY0LDcgQEAgc3RhdGljIEFwcGxlUGF5UGF5bWVudFBhc3M6OkFjdGl2YXRpb25TdGF0
ZSBjb252ZXJ0KFBLUGF5bWVudFBhc3NBY3RpdmF0aW9uU3RhdGUKIHN0YXRpYyBPcHRpb25hbDxB
cHBsZVBheVBheW1lbnRQYXNzPiBjb252ZXJ0KFBLUGF5bWVudFBhc3MgKnBheW1lbnRQYXNzKQog
ewogICAgIGlmICghcGF5bWVudFBhc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBcHBsZVBheVBheW1lbnRQYXNzIHJl
c3VsdDsKIApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50
TWV0aG9kOjpUeXBlPiBjb252ZXJ0KFBLUGF5bWVudE1ldGhvZFR5cGUgcGF5bWVudAogICAgICAg
ICByZXR1cm4gQXBwbGVQYXlQYXltZW50TWV0aG9kOjpUeXBlOjpTdG9yZTsKICAgICBjYXNlIFBL
UGF5bWVudE1ldGhvZFR5cGVVbmtub3duOgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBA
IC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgY29udmVydChDTkxhYmVsZWRWYWx1ZTxDTlBv
c3RhbEFkZHJlc3MqPiAqcG9zdGFsQWRkcmVzcywgQXBwbGVQYXlQYXkKIHN0YXRpYyBPcHRpb25h
bDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBjb252ZXJ0KENOQ29udGFjdCAqYmlsbGluZ0NvbnRh
Y3QpCiB7CiAgICAgaWYgKCFiaWxsaW5nQ29udGFjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFwcGxlUGF5UGF5bWVu
dENvbnRhY3QgcmVzdWx0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQpp
bmRleCAwMDZjNjQ1ZDY3MDMzNGVhYzE5NmRlNDA4NTA4YTk2ZTVjMTllNDJlLi4yYzA2YjQ2ZTgz
NDRiNmY3N2U2NGNjNTRiY2JmYTRhYzY4MGI4Y2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJy
b3JDb2NvYS5tbQpAQCAtNDIsMTQgKzQyLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVNl
c3Npb25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9yKQogICAgIHN0YXRpYyBj
b25zdGV4cHIgTlNJbnRlZ2VyIHBrUGF5bWVudEF1dGhvcml6YXRpb25GZWF0dXJlQXBwbGljYXRp
b25FcnJvciA9IC0yMDE2OwogCiAgICAgaWYgKGVycm9yLmNvZGUgIT0gcGtQYXltZW50QXV0aG9y
aXphdGlvbkZlYXR1cmVBcHBsaWNhdGlvbkVycm9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWQgYmluZFRva2VuVmFs
dWUgPSBlcnJvci51c2VySW5mb1tiaW5kVG9rZW5LZXldOwogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWJpbmRUb2tlblZhbHVlIHx8IFtiaW5kVG9rZW5WYWx1
ZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSk7CiAgICAgcmV0dXJuIEFwcGxlUGF5U2Vz
c2lvbkVycm9yIHsgImZlYXR1cmVBcHBsaWNhdGlvbkVycm9yIl9zLCB7IHsgImJpbmRUb2tlbiJf
cywgKE5TU3RyaW5nICopYmluZFRva2VuVmFsdWUgfSB9IH07CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShlcnJvcik7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVu
dEhhbmRsZXIuY3BwCmluZGV4IDQ4YmZhODk1NDliYzQzMThjMTg3MzhlMTM0NGE5MjIzNGQ5OGM2
NDIuLjU2MDE0MTg1OWUxY2IyYjI4YjdlZDU5ZDE1MGQ4YTc5Y2JjNjc4YzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9w
YXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtNDA5LDcgKzQwOSw3
IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZUFkZHJlc3NFcnJvcnMoU3Ry
aW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmCiAgICAgaWYgKCFtX3BheW1lbnRSZXF1ZXN0LT5w
YXltZW50T3B0aW9ucygpLnJlcXVlc3RTaGlwcGluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoZXJyb3IpLCBXVEY6Om51
bGxvcHQsIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdU
Rk1vdmUoZXJyb3IpLCBzdGQ6Om51bGxvcHQsIGVycm9ycyk7CiAgICAgYXBwZW5kU2hpcHBpbmdD
b250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5hZGRyZXNzTGluZSksIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lcywgZXJyb3JzKTsKICAgICBhcHBl
bmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNpdHkp
LCBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkOjpMb2NhbGl0eSwgZXJyb3JzKTsKICAgICBhcHBl
bmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmNvdW50
cnkpLCBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkOjpDb3VudHJ5LCBlcnJvcnMpOwpAQCAtNDYx
LDcgKzQ2MSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPHN0ZDo6dHVwbGU8UGF5bWVudERldGFp
bHNNb2RpZmllciwgQXBwbGVQYXlNb2RpZmllcj4+PiBBcHBsCiB7CiAgICAgYXV0byYgZGV0YWls
cyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7CiAgICAgaWYgKCFkZXRhaWxz
Lm1vZGlmaWVycykKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJl
dHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9
ICpkb2N1bWVudCgpLmdsb2JhbE9iamVjdCgpOwogCkBAIC01MDAsNyArNTAwLDcgQEAgRXhjZXB0
aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQYXltZW50RGV0YWlsc01vZGlmaWVyLCBBcHBsZVBh
eU1vZGlmaWVyPj4+IEFwcGwKICAgICAgICAgcmV0dXJuIHsgeyB7IG1vZGlmaWVyLCBXVEZNb3Zl
KGFwcGxlUGF5TW9kaWZpZXIpIH0gfSB9OwogICAgIH0KIAotICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBFeGNlcHRpb25Pcjx2
b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkZXRhaWxzVXBkYXRlZChQYXltZW50UmVxdWVz
dDo6VXBkYXRlUmVhc29uIHJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmJiBh
ZGRyZXNzRXJyb3JzLCBQYXllckVycm9yRmllbGRzJiYgcGF5ZXJFcnJvcnMsIEpTQzo6SlNPYmpl
Y3QqIHBheW1lbnRNZXRob2RFcnJvcnMpCkBAIC02NDcsOCArNjQ3LDggQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0ZWQoVmVjdG9y
PFJlZlB0cjxBcHAKIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcGxldGUoT3B0aW9u
YWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKIHsKICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0KFdURjo6bnVsbG9wdCkpOwotICAgICAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRTZXNzaW9uKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIEFTU0VSVChpc0ZpbmFsU3RhdGVSZXN1bHQoc3RkOjpudWxsb3B0KSk7CisgICAg
ICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwLDcgKzY4MCw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnJldHJ5KFBheW1lbnRWYWxpZGF0
aW9uRXJyb3JzJiYgdmFsaWRhCiAKICAgICAvLyBFbnN1cmUgdGhlcmUgaXMgYWx3YXlzIGF0IGxl
YXN0IG9uZSBlcnJvciB0byBhdm9pZCBoYXZpbmcgYSBmaW5hbCByZXN1bHQuCiAgICAgaWYgKGVy
cm9ycy5pc0VtcHR5KCkpCi0gICAgICAgIGVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3Jl
YXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpVbmtub3duLCBXVEY6Om51bGxvcHQsIG51bGxTdHJpbmco
KSkpOworICAgICAgICBlcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJyb3I6OmNyZWF0ZShBcHBsZVBh
eUVycm9yQ29kZTo6VW5rbm93biwgc3RkOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKIAogICAg
IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0IGF1dGhvcml6YXRpb25SZXN1bHQgeyBQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZSwgV1RGTW92ZShlcnJvcnMpIH07CiAgICAgQVNT
RVJUKCFpc0ZpbmFsU3RhdGVSZXN1bHQoYXV0aG9yaXphdGlvblJlc3VsdCkpOwpAQCAtNzAxLDcg
KzcwMSw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVNZXJjaGFudChV
UkwmJiB2YWxpZGF0aW9uVVJMKQogCiBzdGF0aWMgUmVmPFBheW1lbnRBZGRyZXNzPiBjb252ZXJ0
KGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmIGNvbnRhY3QpCiB7Ci0gICAgcmV0dXJuIFBh
eW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwgY29udGFjdC5hZGRyZXNz
TGluZXMudmFsdWVPcihWZWN0b3I8U3RyaW5nPigpKSwgY29udGFjdC5hZG1pbmlzdHJhdGl2ZUFy
ZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxpdHksIGNvbnRhY3QucG9zdGFs
Q29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXplZE5hbWUsIGNvbnRhY3Qu
cGhvbmVOdW1iZXIpOworICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNvbnRhY3Qu
Y291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29yKFZlY3RvcjxTdHJpbmc+
KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29udGFj
dC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCksIGNv
bnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5k
bGVyOjpkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmIHBheW1lbnQpCiAgICAgQVNT
RVJUKG1fdXBkYXRlU3RhdGUgPT0gVXBkYXRlU3RhdGU6Ok5vbmUpOwogCiAgICAgYXV0byBhcHBs
ZVBheVBheW1lbnQgPSBwYXltZW50LnRvQXBwbGVQYXlQYXltZW50KHZlcnNpb24oKSk7Ci0gICAg
YXV0byBzaGlwcGluZ0NvbnRhY3QgPSBhcHBsZVBheVBheW1lbnQuc2hpcHBpbmdDb250YWN0LnZh
bHVlT3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsKKyAgICBhdXRvIHNoaXBwaW5nQ29udGFj
dCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0NvbnRhY3QudmFsdWVfb3IoQXBwbGVQYXlQYXlt
ZW50Q29udGFjdCgpKTsKICAgICBhdXRvIGRldGFpbHNGdW5jdGlvbiA9IFthcHBsZVBheVBheW1l
bnQgPSBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudCldKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgcmV0dXJuIHRvSlNEaWN0aW9uYXJ5KGxleGljYWxH
bG9iYWxPYmplY3QsIGFwcGxlUGF5UGF5bWVudCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRp
b25NYW5pZmVzdC5oCmluZGV4IDdiZTFhMGQxZGUzMDgxNjgzOGRjNTcyZTQ0ZTRlNTM5NTljYmNj
MGIuLmJlMTgzMjMxYWU5NWMzNzM2MzNhNzRlMWM3NGU3MWE5YjFhYzQxMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0
L0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNjYsMTkgKzY2LDE5IEBAIE9wdGlvbmFsPEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QgcmVzdWx0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQubmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
c2hvcnROYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kZXNjcmlwdGlv
bikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2NvcGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc3BsYXkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnN0YXJ0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC50aGVtZUNvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcAppbmRleCA0
MGJiMDZhZjI5ZDllNDVkMGQ1OTliMzE4OWIwZDYzMGM0NWI4NWM0Li4xOTk3MDVlNTc5N2IwODdl
NzMzNzA1ZDlhMTA1M2RhZTIyMmE2MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2
b2lkIENsaXBib2FyZDo6d3JpdGVUZXh0KGNvbnN0IFN0cmluZyYgZGF0YSwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogdm9pZCBDbGlwYm9hcmQ6OnJlYWQoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogewogICAgIGF1dG8gcmVqZWN0UHJvbWlzZUFuZENsZWFyQWN0aXZl
U2Vzc2lvbiA9IFsmXSB7Ci0gICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gc3RkOjpudWxsb3B0OwogICAgICAgICBwcm9taXNl
LT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKICAgICB9OwogCkBAIC0xOTgsNyArMTk4LDcgQEAg
dm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRlbSwgY29uc3QgU3RyaW5n
JiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KIAogICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKHRo
aXMtPmZyYW1lKCkpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgbV9hY3RpdmVTZXNzaW9u
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjYyLDcgKzI2Miw3IEBAIENsaXBib2FyZDo6U2Vzc2lvbklzVmFsaWQg
Q2xpcGJvYXJkOjp1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKQogICAgICAgICByZXR1cm4gU2Vzc2lv
bklzVmFsaWQ6Ok5vOwogCiAgICAgaWYgKG1fYWN0aXZlU2Vzc2lvbi0+Y2hhbmdlQ291bnQgIT0g
YWN0aXZlUGFzdGVib2FyZCgpLmNoYW5nZUNvdW50KCkpIHsKLSAgICAgICAgbV9hY3RpdmVTZXNz
aW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBTZXNzaW9uSXNWYWxpZDo6Tm87CiAgICAgfQogCkBAIC0zMTcs
NyArMzE3LDcgQEAgdm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6OndyaXRlKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcykKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBtX2NoYW5nZUNvdW50QXRTdGFydCA9IG1fcGFzdGVib2FyZC0+Y2hhbmdlQ291bnQoKTsKICNl
bmRpZgotICAgIG1fZGF0YVRvV3JpdGUuZmlsbChXVEY6Om51bGxvcHQsIGl0ZW1zLnNpemUoKSk7
CisgICAgbV9kYXRhVG9Xcml0ZS5maWxsKHN0ZDo6bnVsbG9wdCwgaXRlbXMuc2l6ZSgpKTsKICAg
ICBtX3BlbmRpbmdJdGVtQ291bnQgPSBpdGVtcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IGl0ZW1zLnNpemUoKTsgKytpbmRleCkgewogICAgICAgICBpdGVtc1tp
bmRleF0tPmNvbGxlY3REYXRhRm9yV3JpdGluZygqbV9jbGlwYm9hcmQsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZGV4XSAoYXV0byBkYXRhKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmluZGV4IDRlZGRmODVkMjdj
YzQwNDUwZjJhMzFlYTA3ZjdiZTZkNmI3MDFmNDguLmE2MjAxNmJiNTUwNDFlM2RhODg3ZjRmMWRm
ZjdjNzkyMDQ4YzA4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMt
Y2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2UuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGlu
Z3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAKICAgICBhdXRvIGRvY3Vt
ZW50ID0gZG9jdW1lbnRGcm9tQ2xpcGJvYXJkKGNsaXBib2FyZC5nZXQoKSk7CiAgICAgaWYgKCFk
b2N1bWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRh
U291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAgIGVsc2UgaWYgKFdURjo6
aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAg
Y3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRh
dGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVt
UGFzdGVib2FyZERhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNlLmNwcAppbmRleCA0MzFl
MmI1ZDNiNzUyZWY4ZWZlYWU4OTQxZjVhMDkxNzkzOTBhZmRhLi43ODU1YzBlZDE1MDhlYmQ1NGQ1
OWVmNmZkOGRiYzZkZGFiYjU5ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3JpdGluZyhDbGlwYm9hcmQm
LCBDb21wbGUKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiBUaGlzIGlzIG5lZWRl
ZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBib2FyZEl0ZW1zCiAgICAg
Ly8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQud3JpdGUoKS4KLSAgICBj
b21wbGV0aW9uKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxldGlvbihzdGQ6Om51bGxvcHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwCmluZGV4IDZmYTQwMzAxNmEwZTI5NzMzNTE0Y2IxZjU5N2E2MWJlYzdjYzhj
OGMuLjk1YTg3ZGQ3OTFhMzEyNDUyZDA3ZmM3YmNjYTgxNGFlYjJmNzA0ODYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRp
YyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QKIHsKICAgICBhdXRvIHJlc291cmNlUmVzcG9uc2UgPSByZWNvcmQu
cmVzcG9uc2U7CiAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpET01DYWNoZSk7Ci0gICAgYXV0byByZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6
OmNyZWF0ZShjb250ZXh0LCBXVEY6Om51bGxvcHQsIHJlY29yZC5yZXNwb25zZUhlYWRlcnNHdWFy
ZCwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CisgICAgYXV0byByZXNwb25zZSA9IEZldGNo
UmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBzdGQ6Om51bGxvcHQsIHJlY29yZC5yZXNwb25zZUhl
YWRlcnNHdWFyZCwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAgICAgcmVzcG9uc2UtPnNl
dEJvZHlEYXRhKGNvcHlSZXNwb25zZUJvZHkocmVjb3JkLnJlc3BvbnNlQm9keSksIHJlY29yZC5y
ZXNwb25zZUJvZHlTaXplKTsKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CkBAIC00MTgsNyArNDE4
LDcgQEAgdm9pZCBET01DYWNoZTo6cmVtb3ZlKFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVy
eU9wdGlvbnMmJiBvcHRpb25zLCBET01Qcm9taXMKIHN0YXRpYyBSZWY8RmV0Y2hSZXF1ZXN0PiBj
cmVhdGVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IERPTUNh
Y2hlRW5naW5lOjpSZWNvcmQmIHJlY29yZCkKIHsKICAgICBhdXRvIHJlcXVlc3RIZWFkZXJzID0g
RmV0Y2hIZWFkZXJzOjpjcmVhdGUocmVjb3JkLnJlcXVlc3RIZWFkZXJzR3VhcmQsIEhUVFBIZWFk
ZXJNYXAgeyByZWNvcmQucmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkgfSk7Ci0gICAgcmV0dXJu
IEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1
ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3QgeyByZWNvcmQucmVxdWVzdCB9LCBGZXRjaE9w
dGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJpbmcgeyByZWNvcmQucmVmZXJyZXIgfSk7Cisg
ICAgcmV0dXJuIEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZXF1ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3QgeyByZWNvcmQucmVxdWVzdCB9
LCBGZXRjaE9wdGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJpbmcgeyByZWNvcmQucmVmZXJy
ZXIgfSk7CiB9CiAKIHZvaWQgRE9NQ2FjaGU6OmtleXMoT3B0aW9uYWw8UmVxdWVzdEluZm8+JiYg
aW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBLZXlzUHJvbWlzZSYmIHByb21pc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKaW5kZXgg
MDdhMTgyM2U1OWQyNjg2NDc0OGQ0MTA3MGVlNGEyMjgzZThmMzU2My4uOGU2MmZhMTkxYzJjOWU4
MzdmOGVkMDkzMjRkNzk4ZWI1MmY1Yzg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtMTI4LDEyICsxMjgsMTIgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPENhY2hlSW5mb3M+IENhY2hlSW5mb3M6OmRlY29k
ZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+PiBpbmZvczsKICAgICBk
ZWNvZGVyID4+IGluZm9zOwogICAgIGlmICghaW5mb3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gdXBkYXRlQ291bnRlcjsKICAgICBkZWNvZGVyID4+IHVwZGF0ZUNvdW50ZXI7CiAgICAg
aWYgKCF1cGRhdGVDb3VudGVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmluZm9zKSwg
V1RGTW92ZSgqdXBkYXRlQ291bnRlcikgfX07CiB9CkBAIC0xNDksMTIgKzE0OSwxMiBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJZGVudGlmaWVyT3BlcmF0
aW9uUmVzdWx0PiBDYWNoZUlkZQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBoYWRTdG9yYWdlRXJyb3I7CiAgICAgZGVjb2RlciA+PiBoYWRTdG9y
YWdlRXJyb3I7CiAgICAgaWYgKCFoYWRTdG9yYWdlRXJyb3IpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpoYWRTdG9yYWdlRXJyb3IpIH19OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggNTAyNjcwYjk0NDhlOTMxODZhMGQyZDI3YzEyY2U4YWYzNjA1MWM3YS4uZmEwNTBjMjhjZmZl
NWZmZWQ5NmQ4ODhmOTgyMjlkZDQyMjQ5NWE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDksNyArNDksNyBAQCBPcHRpb25h
bDxDbGllbnRPcmlnaW4+IERPTUNhY2hlU3RvcmFnZTo6b3JpZ2luKCkgY29uc3QKIHsKICAgICBh
dXRvKiBvcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOwogICAgIGlmICghb3JpZ2luKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
dG9wT3JpZ2luKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGEoKSB9OwogfQpAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRD
YWNoZU9yQ3JlYXRlKFdURk1vdmUoaW5mbykpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpu
dWxsb3B0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaAppbmRleCBkZmFmYTA4M2NjNzAwMzgxZTBi
ODNlZTBjYzJhODNjZmI3NTQxMzQ3Li5hZmYyNzhkNzUxZmNkM2Q4YjA0OTc5NjBkM2EyODJkZjg2
YTUwYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZl
UmVjb3Jkc09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJp
ZXZlUmVjb3Jkc09wdGlvbnMuaApAQCAtNTMsMjcgKzUzLDI3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBPcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRpb25zPiBSZXRyaWV2ZVJl
Y29yZHNPCiAgICAgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0OwogICAgIGRlY29k
ZXIgPj4gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29s
PiBpZ25vcmVTZWFyY2g7CiAgICAgZGVjb2RlciA+PiBpZ25vcmVTZWFyY2g7CiAgICAgaWYgKCFp
Z25vcmVTZWFyY2gpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVNZXRob2Q7CiAgICAg
ZGVjb2RlciA+PiBpZ25vcmVNZXRob2Q7CiAgICAgaWYgKCFpZ25vcmVNZXRob2QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBpZ25vcmVWYXJ5OwogICAgIGRlY29kZXIgPj4gaWdub3JlVmFyeTsK
ICAgICBpZiAoIWlnbm9yZVZhcnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBzaG91bGRQcm92
aWRlUmVzcG9uc2U7CiAgICAgZGVjb2RlciA+PiBzaG91bGRQcm92aWRlUmVzcG9uc2U7CiAgICAg
aWYgKCFzaG91bGRQcm92aWRlUmVzcG9uc2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUo
KnJlcXVlc3QpLCBXVEZNb3ZlKCppZ25vcmVTZWFyY2gpLCBXVEZNb3ZlKCppZ25vcmVNZXRob2Qp
LCBXVEZNb3ZlKCppZ25vcmVWYXJ5KSwgV1RGTW92ZSgqc2hvdWxkUHJvdmlkZVJlc3BvbnNlKSB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2Vy
L0NvbnRhY3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0Nv
bnRhY3RJbmZvLmgKaW5kZXggMTJmZjUxNGVhZjU0ZTMxZWI1ODNiNGIxOTdiZDQzZjk2MGVlNzIw
NS4uMzBlYjQ2MTdiYWE4ODJjZDllZDE5ODZkMTYyZTFhM2RlODdmZDNhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0SW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdEluZm8uaApAQCAt
NTQsMTcgKzU0LDE3IEBAIE9wdGlvbmFsPENvbnRhY3RJbmZvPiBDb250YWN0SW5mbzo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5hbWU7CiAg
ICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBlbWFpbDsKICAgICBkZWNvZGVyID4+IGVtYWlsOwogICAgIGlmICghZW1h
aWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGVsOwogICAgIGRlY29kZXIg
Pj4gdGVsOwogICAgIGlmICghdGVsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpuYW1lLCAqZW1haWws
ICp0ZWwgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3Qt
cGlja2VyL0NvbnRhY3RzUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29u
dGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCmluZGV4IDRmZTA3ZjdhODhjZWZhMDgz
NTZjYWNlY2UwMTNjZWNiNzc2OTNlOWQuLjMwYjBjZjI3MzhjOGJhNDFlZWM1ODBlNmQ5NWIyODZh
ZTQ0NTJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNr
ZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29u
dGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCkBAIC01NiwxNyArNTYsMTcgQEAgT3B0
aW9uYWw8Q29udGFjdHNSZXF1ZXN0RGF0YT4gQ29udGFjdHNSZXF1ZXN0RGF0YTo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RQcm9wZXJ0eT4+IHBy
b3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBwcm9wZXJ0aWVzOwogICAgIGlmICghcHJvcGVydGll
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IG11bHRpcGxlOwogICAgIGRlY29kZXIgPj4gbXVs
dGlwbGU7CiAgICAgaWYgKCFtdWx0aXBsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdXJs
OwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
ICpwcm9wZXJ0aWVzLCAqbXVsdGlwbGUsICp1cmwgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggYjRkZTFhZWNmMjNlYWYyYjFkYmU5
YTRlMjU5ZThjYzVlZjJkZTdlMy4uMDE2ZTAzZjhmNzczZjc0OGYwNmJhYTVjZTM0MmZkYThmOGE4
ZTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9D
RE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIENETTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihN
ZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25maQogCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhbV9wcml2YXRlKSB7Ci0gICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIE9w
dGlvbmFsPFN0cmluZz4gQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV9wcml2YXRlLT5z
YW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcAppbmRl
eCAzNDYyM2IxZDMzMTE0YWMxZWEyZDA2MDgzNDI2NjllOTZlNTk4NDI1Li40MTlkYjhkNTE3ZGZi
M2E0MzQwN2U4YTFiMTEwZmZlMDIxNTkxMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKQEAgLTU5
LDIwICs1OSwyMCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pj4g
ZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZQogICAgIC8vIDEuIEZvcm1hdAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChidWZmZXIuc2l6ZSgpID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0cmluZyBqc29u
IHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1ZmZlci5zaXplKCkpIH07
CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uKTsKICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBvYmplY3QgPSB2YWx1ZS0+YXNPYmplY3QoKTsKICAg
ICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8ga2lkc0FycmF5ID0gb2JqZWN0LT5nZXRBcnJh
eSgia2lkcyJfcyk7CiAgICAgaWYgKCFraWRzQXJyYXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogKmtpZHNBcnJheSkg
ewpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgaWYgKGtleUlERGF0YS0+c2l6ZSgpIDwga0tleUlkc01pbktl
eUlkU2l6ZUluQnl0ZXMgfHwga2V5SUREYXRhLT5zaXplKCkgPiBrS2V5SWRzTWF4S2V5SWRTaXpl
SW5CeXRlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGtleUlEcy5hcHBlbmQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoV1RGTW92ZSgqa2V5SUREYXRhKSkpOwogICAgIH0KQEAgLTExNiw3ICsxMTYsNyBA
QCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgIC8vIDQuIENvbW1vbiBTeXN0ZW1JRCBhbmQg
UFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1vbi1zeXN0ZW0KICAg
ICBpZiAoYnVmZmVyLnNpemUoKSA+PSBrQ2VuY01heEJveFNpemUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1bnNpZ25l
ZCBvZmZzZXQgPSAwOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4gcHNzaEJveGVzOwpAQCAtMTI3LDE0ICsxMjcsMTQgQEAg
T3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lm
aWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0byYgYm94U2l6ZSA9IG9wdGlvbmFs
Qm94VHlwZS52YWx1ZSgpLnNlY29uZDsKIAogICAgICAgICBpZiAoYm94VHlwZU5hbWUgIT0gSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Ojpib3hUeXBlTmFtZSgpIHx8IGJveFNp
emUgPiBidWZmZXIuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBzeXN0ZW1JRCA9
IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKHZpZXcs
IG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lOSVREQVRBKQogICAg
ICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94OjpmYWlyUGxh
eVN5c3RlbUlEKCkpIHsKICAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9IG1ha2VVbmlxdWU8SVNP
RmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAgaWYgKCFmcHNQc3NoLT5y
ZWFkKHZpZXcsIG9mZnNldCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcHNzaEJv
eGVzLmFwcGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CkBAIC0xNDMsNyArMTQzLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICNlbmRp
ZgogICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1Byb3RlY3Rpb25TeXN0ZW1T
cGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94LT5yZWFkKHZpZXcsIG9m
ZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwc3NoQm94ZXMuYXBwZW5kKFdURk1vdmUocHNz
aEJveCkpOwogICAgIH0KQEAgLTE1NywxMiArMTU3LDEyIEBAIE9wdGlvbmFsPFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0
IFNoCiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhidWZm
ZXIpOwogICAgIGlmICghcHNzaEJveGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChhdXRvJiBwc3NoQm94IDog
cHNzaEJveGVzLnZhbHVlKCkpIHsKICAgICAgICAgQVNTRVJUKHBzc2hCb3gpOwogICAgICAgICBp
ZiAoIXBzc2hCb3gpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEhBVkUoRkFJUlBMQVlTVFJFQU1JTkdfQ0VO
Q19JTklUREFUQSkKICAgICAgICAgaWYgKGlzPElTT0ZhaXJQbGF5U3RyZWFtaW5nUHNzaEJveD4o
KnBzc2hCb3gpKSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxS
ZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IFNoYXJlZEJ1ZmZlciYK
ICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBpZiAo
IXNhbml0aXplZEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL3dl
Ym0uaHRtbCNmb3JtYXQKQEAgLTI0NSw3ICsyNDUsNyBAQCBPcHRpb25hbDxWZWN0b3I8UmVmPFNo
YXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzKGNvbnN0IEF0b21T
dAogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlm
IChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmV4dHJhY3RLZXlJRHMoYnVmZmVyKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCmluZGV4IGM4NWY3OTk3ZWY4NDFjNjE5NTQyZTE3YjY3OTA2NTViOWVj
YzhhMjMuLmI0OTEzMzFhMTY3ODYzNDZlOGU3Yzc3NDM5OTE4OWE0YTdkYjk5MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9h
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQog
CiAgICAgICAgICAgICAgICAgLy8gOC45LjUuIFJ1biB0aGUgVXBkYXRlIEV4cGlyYXRpb24gYWxn
b3JpdGhtIG9uIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgZXhwaXJhdGlvbiB0aW1lLgogICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBydW4sIGFuZCBOYU4gaXMgdGhlIGRlZmF1bHQgdmFs
dWUgaWYgdGhlIENETSBpbnN0YW5jZSBkb2Vzbid0IHByb3ZpZGUgb25lLgotICAgICAgICAgICAg
ICAgIHVwZGF0ZUV4cGlyYXRpb24oZXhwaXJhdGlvbi52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1p
dHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBpcmF0
aW9uKGV4cGlyYXRpb24udmFsdWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKSkpOwogCiAgICAgICAgICAgICAgICAgLy8gOC45LjYuIElmIG1lc3NhZ2UgaXMgbm90
IG51bGwsIHJ1biB0aGUgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQgYWxnb3JpdGhtIG9uIHRoZSBz
ZXNzaW9uLCBwcm92aWRpbmcgbWVzc2FnZSB0eXBlIGFuZCBtZXNzYWdlLgogICAgICAgICAgICAg
ICAgIGlmIChtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRleCA3YTdkMDA4NmFiZWFj
ZmJkNTVjODE5MTE4M2UzZmRkNjZiMTI5NjVjLi5kOTM3ZmM5M2FhZGM3OGY0MDBkZTJkOTNkMTlm
NjE4YjNiNmEyMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAtOTcsMTEgKzk3LDExIEBA
IE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0b3IoTWVkaWFLZXlTdGF0dXNNYXAm
IG1hcCkKIE9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNvdXJjZTo6VmFyaWFudFR5
cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpuZXh0KCkK
IHsKICAgICBpZiAoIW1fbWFwLT5tX3Nlc3Npb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBzdGF0dXNlcyA9
IG1fbWFwLT5tX3Nlc3Npb24tPnN0YXR1c2VzKCk7CiAgICAgaWYgKG1faW5kZXggPj0gc3RhdHVz
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2VzW21faW5kZXgrK107CiAg
ICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIuZmlyc3QtPmRhdGEoKSwg
cGFpci5maXJzdC0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBlNmUyY2JmY2YxMTYwZmNkOGI1ZWI1Njg5
ZDMyZTBmNDYwZWRlMTViLi5iMDBhNDhkYTQzYzk4ZDMwNDg1OGFjZWE2MTY1YjI2NTg0ZDQ0MTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBMaXN0ZWRDaGlsZCB7CiBzdGF0aWMg
T3B0aW9uYWw8RmlsZVN5c3RlbTo6RmlsZVR5cGU+IGZpbGVUeXBlSWdub3JpbmdIaWRkZW5GaWxl
cyhjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogewogICAgIGlmIChGaWxlU3lzdGVtOjppc0hpZGRl
bkZpbGUoZnVsbFBhdGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlVHlwZShmdWxs
UGF0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApp
bmRleCBlOGM2MmFlZWMzOTJmNWUyNGRiNmU4ZDQ4ZjlhMGU3ZTZkMmVkNDc2Li40MjJlMDYzZjFh
NWU3ZmVhMWU2YzY0Nzg4OWIwOWExNzQwMjM1MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIE9wdGlvbmFsPEZldGNoQm9k
eT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRm9yCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgZm9ybSBkYXRhIGJvZGllcy4K
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihGZXRjaEJvZHlPd25lciYgb3duZXIsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggOWI2OTU2MDMwMGFiNjk5MjM1M2Ez
YTljMTk3MDQyMTc0ZmM2NmQ1Yi4uZmM2YTZhMWIwOTQ5N2QxZTUzN2U5YzgzZjdjZmZmOWRlNzRl
Mzc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKQEAgLTExMiwxNiArMTEyLDE2IEBAIHN0YXRpYyBPcHRpb25hbDxNaW1lVHlw
ZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIFN0cmluZyBp
bnB1dCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhjb250ZW50VHlwZSk7CiAg
ICAgc2l6ZV90IHNsYXNoSW5kZXggPSBpbnB1dC5maW5kKCcvJyk7CiAgICAgaWYgKHNsYXNoSW5k
ZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgdHlwZSA9IGlucHV0LnN1YnN0cmluZygw
LCBzbGFzaEluZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3RoKCkgfHwgIWlzVmFsaWRIVFRQVG9r
ZW4odHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc2l6ZV90IHNlbWljb2xvbkluZGV4ID0gaW5wdXQuZmlu
ZCgnOycsIHNsYXNoSW5kZXgpOwogICAgIFN0cmluZyBzdWJ0eXBlID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVFRQU3BhY2VzKGlucHV0LnN1YnN0cmluZyhzbGFzaEluZGV4ICsgMSwgc2VtaWNv
bG9uSW5kZXggLSBzbGFzaEluZGV4IC0gMSkpOwogICAgIGlmICghc3VidHlwZS5sZW5ndGgoKSB8
fCAhaXNWYWxpZEhUVFBUb2tlbihzdWJ0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3Zl
KHR5cGUpLCBXVEZNb3ZlKHN1YnR5cGUpLCBwYXJzZVBhcmFtZXRlcnMoU3RyaW5nVmlldyhpbnB1
dCksIHNlbWljb2xvbkluZGV4ICsgMSkgfX07CiB9CkBAIC0xNzUsMTMgKzE3NSwxMyBAQCBzdGF0
aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29ucwogICAgIAogICAgIGF1dG8gcGFyc2VNdWx0aXBhcnRCb3VuZGFy
eSA9IFtdIChjb25zdCBPcHRpb25hbDxNaW1lVHlwZT4mIG1pbWVUeXBlKSAtPiBPcHRpb25hbDxT
dHJpbmc+IHsKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgIm11bHRpcGFydCIpICYmIGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnN1YnR5cGUsICJmb3JtLWRhdGEiKSkgewog
ICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJhbWV0ZXJzLmZpbmQoImJv
dW5kYXJ5Il9zKTsKICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBtaW1lVHlwZS0+cGFyYW1l
dGVycy5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIGF1dG8gZm9ybSA9IERPTUZvcm1EYXRhOjpjcmVhdGUo
VVRGOEVuY29kaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcAppbmRleCBjMzI0ZTdkYTY0MmUzNTY2NWEyZmExOTE4M2M3MjA4MDM1MTc4
YzM0Li4zMWNjYTkyYzczNmZkYmI1YTcwNDg3Y2NkMmI5OTVlMmMxMWY0OThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcApAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKGNvbnN0IEJsb2ImIGJsb2Is
IEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKICAgICBtX2Jsb2JMb2FkZXItPmxvYWRlci0+
c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAgICAgaWYgKCFtX2Jsb2JM
b2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkpIHsKICAgICAgICAgbV9ib2R5LT5sb2FkaW5nRmFp
bGVkKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJsb2IgbG9hZGluZyBmYWlsZWQiX3N9KTsKLSAg
ICAgICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2Jsb2JMb2FkZXIg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0yNjEsNyArMjYx
LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxvYkxvYWRpbmcoKQogewogICAgIEFT
U0VSVChtX2Jsb2JMb2FkZXIpOwogCi0gICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGZXRjaEJvZHlPd25l
cjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQpAQCAtMzgyLDcgKzM4Miw3IEBAIE9wdGlvbmFsPEV4
Y2VwdGlvbj4gRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNlcHRpb24oKSBjb25zdAogICAgIH0s
IFtdKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKSB7CiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBleGNlcHRpb24gfTsKICAgICB9LCBbXShhdXRvJiYpIC0+IE9wdGlvbmFsPEV4Y2VwdGlv
bj4gewotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoSGVhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5jcHAKaW5kZXggNTdhZGRkMzRhOWExNmM4ZGZkODcwMjQzNTE3OWIxYTNkNWU0
ZWIwYS4uODYzNzU5OTYyYzg5MzlmNmU2ZjlhODFmY2ExNTZmMTJkOWIxNWQwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNwcApAQCAtMjMwLDcgKzIz
MCw3IEBAIE9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPj4gRmV0Y2hI
ZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCiAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+IHsgV1RG
TW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEZldGNoSGVhZGVyczo6SXRlcmF0
b3I6Okl0ZXJhdG9yKEZldGNoSGVhZGVycyYgaGVhZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCA0OWU1YTViNTFmMmVkNmFhYjNmYjc1
NWE5OGJlZjBjMWQ5NDYwYzk1Li4zNDhhYjQ0MjQ5Y2Q5MmFkYjJlNDdlMzdjMDQyNzZlMjA5OGE0
OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRpb24+IHNldE1ldGhvZChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgaW5pCiAgICAgaWYgKGlzRm9y
YmlkZGVuTWV0aG9kKGluaXRNZXRob2QpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiTWV0aG9kIGlzIGZvcmJpZGRlbi4iX3MgfTsKICAgICByZXF1ZXN0LnNldEhUVFBN
ZXRob2Qobm9ybWFsaXplSFRUUE1ldGhvZChpbml0TWV0aG9kKSk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgRXhjZXB0aW9u
T3I8U3RyaW5nPiBjb21wdXRlUmVmZXJyZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgT3B0
aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBSZXNv
dXJjZVJlcXVlc3QmCiAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uOwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3Rh
dGljIGJvb2wgbWV0aG9kQ2FuSGF2ZUJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KQpAQCAtMjczLDcgKzI3Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZldGNoUmVxdWVzdDo6c2V0
Qm9keShGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiAKIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVl
c3Q+PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJbmZvJiYgaW5wdXQsIEluaXQmJiBpbml0KQogewotICAgIGF1dG8gcmVxdWVzdCA9IGFkb3B0
UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURjo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJz
OjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSwgeyB9LCB7IH0pKTsK
KyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBz
dGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJl
cXVlc3QpLCB7IH0sIHsgfSwgeyB9KSk7CiAKICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KGlucHV0KSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3QtPmluaXRp
YWxpemVXaXRoKFdURjo6Z2V0PFN0cmluZz4oaW5wdXQpLCBXVEZNb3ZlKGluaXQpKTsKQEAgLTMy
Miw3ICszMjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gRmV0Y2hSZXF1ZXN0
OjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZQogICAgIGlmIChpc0Rpc3R1cmJl
ZE9yTG9ja2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCb2R5
IGlzIGRpc3R1cmJlZCBvciBsb2NrZWQiX3MgfTsKIAotICAgIGF1dG8gY2xvbmUgPSBhZG9wdFJl
ZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEY6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6
Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291cmNlUmVxdWVzdCB7IG1fcmVxdWVzdCB9LCBG
ZXRjaE9wdGlvbnMgeyBtX29wdGlvbnN9LCBTdHJpbmcgeyBtX3JlZmVycmVyIH0pKTsKKyAgICBh
dXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgc3RkOjpudWxs
b3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkpLCBSZXNvdXJjZVJlcXVl
c3QgeyBtX3JlcXVlc3QgfSwgRmV0Y2hPcHRpb25zIHsgbV9vcHRpb25zfSwgU3RyaW5nIHsgbV9y
ZWZlcnJlciB9KSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhpcyk7CiAgICAgY2xvbmUtPm1f
c2lnbmFsLT5zaWduYWxGb2xsb3cobV9zaWduYWwpOwogICAgIHJldHVybiBjbG9uZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDZkMjI4
M2Y0N2QxMTlkM2E0YjcyN2VhM2MxYjY2NTdiMzZjNmM5ODAuLmNlZmVmYzczZmMyNTZmN2EwMTUw
NmI3NDVlMzE3OWJhODdhMWQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxG
ZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29uCiAgICAgaWYgKG1faW50ZXJuYWxSZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNw
b25zZTo6VHlwZTo6RGVmYXVsdCkKICAgICAgICAgbV9pbnRlcm5hbFJlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZHMoSFRUUEhlYWRlck1hcCB7IGhlYWRlcnMoKS5pbnRlcm5hbEhlYWRlcnMoKSB9
KTsKIAotICAgIGF1dG8gY2xvbmUgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4dCwgV1RG
OjpudWxsb3B0LCBoZWFkZXJzKCkuZ3VhcmQoKSwgUmVzb3VyY2VSZXNwb25zZSB7IG1faW50ZXJu
YWxSZXNwb25zZSB9KTsKKyAgICBhdXRvIGNsb25lID0gRmV0Y2hSZXNwb25zZTo6Y3JlYXRlKGNv
bnRleHQsIHN0ZDo6bnVsbG9wdCwgaGVhZGVycygpLmd1YXJkKCksIFJlc291cmNlUmVzcG9uc2Ug
eyBtX2ludGVybmFsUmVzcG9uc2UgfSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhpcyk7CiAg
ICAgY2xvbmUtPm1fb3BhcXVlTG9hZElkZW50aWZpZXIgPSBtX29wYXF1ZUxvYWRJZGVudGlmaWVy
OwogICAgIGNsb25lLT5tX2JvZHlTaXplV2l0aFBhZGRpbmcgPSBtX2JvZHlTaXplV2l0aFBhZGRp
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdo
bGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5o
CmluZGV4IDA4ZGIxNTczNmFkNzYyMjY0MjAzNTdiNWU2M2Y2NTg3YzUwM2Q0MDEuLjBlZDQyN2I3
NDAwOWYxZDk1MzY1ZGNlMTM2OGY2NzgxZDgxNmU2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC02OCwyOCArNjgsMjggQEAgT3B0
aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwog
ICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklz
TGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVlKCkpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGhpZ2hsaWdodDsKICAgICBoaWdobGlnaHQuZ3JvdygqbGVuZ3RoKTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGhpZ2hsaWdodC5kYXRhKCks
IGhpZ2hsaWdodC5zaXplKCksIDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U3RyaW5n
Pj4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGlzTmV3R3JvdXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJ
bkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCksIGlzTmV3R3JvdXAsIHJl
cXVlc3RPcmlnaW5hdGVkSW5BcHAgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcAppbmRleCA3MTRl
YWVkNzgwZWUzNjczZmMwMDQ2MTQ1ODRlYWM0Zjc0MWQxNWNjLi4yOTVjNThmYTZlZWEwOWU1Yjc0
NmQ2MmVjM2ExYzUxNjU1OWFmZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKQEAgLTY5LDIyICs2
OSwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5n
ZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaQogICAgIE9wdGlvbmFsPFN0cmluZz4gaWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKICAgICBkZWNvZGVyID4+IG5v
ZGVOYW1lOwogICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHRl
eHREYXRhOwogICAgIGRlY29kZXIgPj4gdGV4dERhdGE7CiAgICAgaWYgKCF0ZXh0RGF0YSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXRoSW5kZXg7CiAgICAgZGVjb2RlciA+PiBwYXRo
SW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgqdGV4dERhdGEpLCAqcGF0
aEluZGV4IH19OwogfQpAQCAtMTAzLDI3ICsxMDMsMjcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdobGlnaHRSYW5nZURhdGE6
OmQKICAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAg
IGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBzdGFydENvbnRhaW5lcjsK
ICAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVyOwogICAgIGlmICghc3RhcnRDb250YWluZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CiAgICAgZGVjb2RlciA+
PiBzdGFydE9mZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKICAgICBkZWNvZGVyID4+IGVuZENvbnRhaW5lcjsKICAg
ICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZz
ZXQ7CiAgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CiAgICAgaWYgKCFlbmRPZmZzZXQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
IAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc3RhcnRDb250YWluZXIp
LCAqc3RhcnRPZmZzZXQsIFdURk1vdmUoKmVuZENvbnRhaW5lciksICplbmRPZmZzZXQgfX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuY3BwCmluZGV4IGRhNGY3MGFjMmZjNjE2NzFmNzdhNzdiMTcwNDY3OTY0Yjg5ZjM5
NGQuLmFiMzdkZDIyODU2OTI1ZjlkZDE0OTNhMGE3NzgwMzk4YzAwMTQwMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuY3BwCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IGZpbmRSYW5nZUJ5SWRlbnRpZnlpbmdTdGFydEFuZEVuZFBvc2l0aW9ucyhjb25zdCBBcAogewog
ICAgIGF1dG8gc3RhcnRDb250YWluZXIgPSBmaW5kTm9kZShyYW5nZS5zdGFydENvbnRhaW5lcigp
LCBkb2N1bWVudCk7CiAgICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZW5k
Q29udGFpbmVyID0gZmluZE5vZGUocmFuZ2UuZW5kQ29udGFpbmVyKCksIGRvY3VtZW50KTsKICAg
ICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnQgPSBtYWtlQ29udGFpbmVy
T2Zmc2V0UG9zaXRpb24oc3RhcnRDb250YWluZXIuZ2V0KCksIHJhbmdlLnN0YXJ0T2Zmc2V0KCkp
OwogICAgIGF1dG8gZW5kID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGVuZENvbnRhaW5l
ci5nZXQoKSwgcmFuZ2UuZW5kT2Zmc2V0KCkpOwogICAgIGlmIChzdGFydC5pc09ycGhhbigpIHx8
IGVuZC5pc09ycGhhbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShzdGFydCwg
ZW5kKTsKIH0KQEAgLTE1MCwxNCArMTUwLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gZmluZFJhbmdlQnlTZWFyY2hpbmdUZXh0KGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0CiAg
ICAgfQogCiAgICAgaWYgKCFmb3VuZEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGZvdW5kRWxlbWVu
dFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpmb3VuZEVsZW1lbnQpOwog
ICAgIGF1dG8gZm91bmRUZXh0ID0gcGxhaW5UZXh0KGZvdW5kRWxlbWVudFJhbmdlKTsKICAgICBp
ZiAoYXV0byBpbmRleCA9IGZvdW5kVGV4dC5maW5kKHJhbmdlLnRleHQoKSk7IGluZGV4ICE9IG5v
dEZvdW5kICYmIGluZGV4ID09IGZvdW5kVGV4dC5yZXZlcnNlRmluZChyYW5nZS50ZXh0KCkpKQog
ICAgICAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGZvdW5kRWxlbWVudFJhbmdlLCB7
IGluZGV4LCByYW5nZS50ZXh0KCkubGVuZ3RoKCkgfSk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gZmluZFJhbmdlKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgcmFuZ2UsIERv
Y3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwCmluZGV4IDllNzVjNzE5N2ZmOWI5ZDJiNTE0NGZjMzRlZTdiMGUzZTBjZjhi
M2UuLmUwNjVhNDg0ODNlZjhhZjUwOTMwMWYxMmIxNGQ5OThlYmZlMjEwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzY5LDcgKzM2
OSw3IEBAIE9wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vyc29yOjppdGVyYXRlV2l0aFByZWZl
dGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1CiB7CiAgICAgdW5zaWduZWQgc3RlcCA9IGNv
dW50ID4gMCA/IGNvdW50IDogMTsKICAgICBpZiAoc3RlcCA+IG1fcHJlZmV0Y2hlZFJlY29yZHMu
c2l6ZSgpIHx8IG1fcHJlZmV0Y2hPcGVyYXRpb25JRCA8PSBsYXN0V3JpdGVPcGVyYXRpb25JRCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHdoaWxlICgtLXN0ZXApCiAgICAgICAgIG1fcHJlZmV0Y2hlZFJlY29yZHMucmVt
b3ZlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNDJkNGMwZTAxOTg5OWI3MGViMGUzZGRl
MjZhZmRkNTk1NmE0Y2FiNS4uYzJmMTcwNzRlOGViYmVhNjU4NzQ2MmUxOGQ2MGNmOTA0ODAyZWRj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTEyMywxNyArMTIzLDE3IEBAIE9wdGlvbmFsPElEQkRh
dGFiYXNlSWRlbnRpZmllcj4gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGRhdGFiYXNlTmFtZTsKICAgICBkZWNvZGVy
ID4+IGRhdGFiYXNlTmFtZTsKICAgICBpZiAoIWRhdGFiYXNlTmFtZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPENsaWVudE9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4gb3JpZ2luOwogICAgIGlm
ICghb3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAgICAgZGVj
b2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSURC
RGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgaWRlbnRpZmllci5tX2RhdGFiYXNl
TmFtZSA9IFdURk1vdmUoKmRhdGFiYXNlTmFtZSk7IC8vIEZJWE1FOiBXaGVuIGRlY29kaW5nIGZy
b20gSVBDLCBkYXRhYmFzZU5hbWUgY2FuIGJlIG51bGwsIGFuZCB0aGUgbm9uLWVtcHR5IGNvbnN0
cnVjdG9yIGFzc2VydHMgdGhhdCB0aGlzIGlzIG5vdCB0aGUgY2FzZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggNDM2ZmUwMTVkNDM5
YmM4NmM0MTEwOGZjMDc4NmI1MDU2ODE2ZDM3OS4uMDU0NGVmMDY2YjM0YTVlMWVlZGM5NTM4NTY0
YmM4YTc2ZjIxMzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhjZXB0aW9uT3I8UmVmPElEQk9wZW5E
QlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQK
ICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2FsbGVkIHdpdGggYSB2ZXJz
aW9uIG9mIDAiX3MgfTsKIAotICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwg
dmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5h
bWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRC
UmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKaW5kZXggZjZmYTFmZjgx
MTQ4YWYyOGMwYmMxMGYwMTMxMjBlMGMwMDcyNjllMy4uMDQzZWM2YjZhN2ZiN2Y0ZTYwZDY0NWNk
OWQ1ZmM3YTVjMTQ3MDNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleURhdGEuaApAQCAtMjU1LDEzICsyNTUsMTMgQEAgT3B0aW9uYWw8SURCS2V5RGF0YT4g
SURCS2V5RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSURCS2V5RGF0YSBr
ZXlEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5tX2lzTnVsbCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoa2V5RGF0YS5tX2lzTnVsbCkKICAgICAgICAgcmV0dXJuIGtleURhdGE7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEubV90eXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAo
a2V5RGF0YS5tX3R5cGUpIHsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoK
QEAgLTI3MSwyMyArMjcxLDIzIEBAIE9wdGlvbmFsPElEQktleURhdGE+IElEQktleURhdGE6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJh
eToKICAgICAgICAga2V5RGF0YS5tX3ZhbHVlID0gVmVjdG9yPElEQktleURhdGE+KCk7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihrZXlE
YXRhLm1fdmFsdWUpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBUaHJlYWRT
YWZlRGF0YUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PFRo
cmVhZFNhZmVEYXRhQnVmZmVyPihrZXlEYXRhLm1fdmFsdWUpKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgogICAgICAgICBr
ZXlEYXRhLm1fdmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShX
VEY6OmdldDxTdHJpbmc+KGtleURhdGEubV92YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgIGNhc2UgSW5kZXhl
ZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IDAuMDsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxkb3VibGU+KGtleURhdGEubV92YWx1
ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKaW5kZXggNjYxMzAyNDA3NTdlOGQ1YmZiNjIw
YThkMGUyYmY0ZjIyMjY2ZWJlOC4uMmE2NjQzMmI1YmQ5NzE5MmExYWI0ZmY2MDkwYzBiZTk1ZDIz
YmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oCkBA
IC03MiwxMyArNzIsMTMgQEAgT3B0aW9uYWw8SURCVmFsdWU+IElEQlZhbHVlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBJREJWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQubV9kYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fYmxvYlVSTHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9i
bG9iRmlsZVBhdGhzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmNwcAppbmRleCA4YTlmZDhiZTQyYjI4YjViYmY4ZDJmMmI0NmQ5NGZjZmMwNDAwODY3Li4zZjcy
YzcwYzZmNTE3M2Q4MDQwYTkxNWIwMTNmMmQxNDNjNjFjNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5j
cHAKQEAgLTQwLDcgKzQwLDcgQEAgSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hh
bmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXMKICAgICBpZiAobmV3
VmVyc2lvbikKICAgICAgICAgbV9uZXdWZXJzaW9uID0gbmV3VmVyc2lvbjsKICAgICBlbHNlCi0g
ICAgICAgIG1fbmV3VmVyc2lvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9uZXdWZXJzaW9u
ID0gc3RkOjpudWxsb3B0OwogfQogCiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25D
aGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBJbml0JiBpbml0LCBJc1Ry
dXN0ZWQgaXNUcnVzdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5jcHAKaW5k
ZXggYTA1OWEwZDk1MGE3NjY4NzZhMGZmZDMyZWZhMGUxNjY5NTRlNDMwNy4uYjczYTllOGVmZmQ5
NzRiOGY1M2IzODMyZGExZWY3Zjk1NzA0MThiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpN
ZW1vcnlPYmplY3RTdG9yZUN1cnNvcihNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsCiAK
IHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9iamVjdFN0b3JlQ2xlYXJlZCgpCiB7Ci0g
ICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjprZXlEZWxldGVkKGNvbnN0
IElEQktleURhdGEmIGtleSkKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvcjo6a2V5RGVsZXRlZChjb25zdCBJREJLZXlEYXRhJiBrZXkpCiAgICAgaWYgKG1fY3Vy
cmVudFBvc2l0aW9uS2V5ICE9IGtleSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pdGVyYXRv
ciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjprZXlBZGRlZChJREJLZXlEYXRhU2V0OjppdGVy
YXRvciBpdGVyYXRvcikKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1
cnNvcjo6a2V5QWRkZWQoSURCS2V5RGF0YVNldDo6aXRlcmF0b3IgaXRlcmF0b3IpCiAKIHZvaWQg
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5pbmdSYW5nZShJREJLZXlE
YXRhU2V0JiBzZXQpCiB7Ci0gICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0
ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1faW5mby5pc0RpcmVjdGlvbkZvcndh
cmQoKSkgewogICAgICAgICBzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2Uoc2V0
KTsKQEAgLTkzLDE5ICs5MywxOSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpzZXRG
aXJzdEluUmVtYWluaW5nUmFuZ2UoSURCS2V5RGF0YVNldCYgc2V0KQogdm9pZCBNZW1vcnlPYmpl
Y3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJhdG9yRnJvbVJlbWFpbmluZ1JhbmdlKElEQktl
eURhdGFTZXQmIHNldCkKIHsKICAgICBpZiAoIXNldC5zaXplKCkpIHsKLSAgICAgICAgbV9pdGVy
YXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3JlbWFpbmluZ1JhbmdlLmlzRXhh
Y3RseU9uZUtleSgpKSB7CiAgICAgICAgIG1faXRlcmF0b3IgPSBzZXQuZmluZChtX3JlbWFpbmlu
Z1JhbmdlLmxvd2VyS2V5KTsKICAgICAgICAgaWYgKCptX2l0ZXJhdG9yID09IHNldC5lbmQoKSkK
LSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2l0
ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIGxvd2VzdCA9IHNldC5sb3dlcl9ib3VuZChtX3JlbWFpbmluZ1JhbmdlLmxv
d2VyS2V5KTsKICAgICBpZiAobG93ZXN0ID09IHNldC5lbmQoKSkKQEAgLTEzMSwxNCArMTMxLDE0
IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZvcndhcmRJdGVyYXRvckZyb21S
ZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0CiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
OjpzZXRSZXZlcnNlSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2UoSURCS2V5RGF0YVNldCYgc2V0
KQogewogICAgIGlmICghc2V0LnNpemUoKSkgewotICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkp
IHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJL
ZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgpKQotICAgICAgICAgICAg
bV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NiwxMiArMTQ2LDEyIEBA
IHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldFJldmVyc2VJdGVyYXRvckZyb21SZW1h
aW5pbmdSYW5nZShJREJLZXlEYXRhU2V0CiAgICAgaWYgKCFtX3JlbWFpbmluZ1JhbmdlLnVwcGVy
S2V5LmlzVmFsaWQoKSkgewogICAgICAgICBtX2l0ZXJhdG9yID0gLS1zZXQuZW5kKCk7CiAgICAg
ICAgIGlmICghbV9yZW1haW5pbmdSYW5nZS5jb250YWluc0tleSgqKm1faXRlcmF0b3IpKQotICAg
ICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0
b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faXRl
cmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIFRoaXMgaXMgb25lIHJlY29yZCBwYXN0IHRoZSBhY3R1YWwga2V5IHdlJ3JlIGxvb2tp
bmcgZm9yLgogICAgIGF1dG8gaGlnaGVzdCA9IHNldC51cHBlcl9ib3VuZChtX3JlbWFpbmluZ1Jh
bmdlLnVwcGVyS2V5KTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yOjppbmNyZW1lbnRGb3J3YXJkSXRlcmF0b3IoSURCS2V5RGF0YVNldCYgc2V0LCBjb25z
dAogICAgICAgICArKyptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBz
ZXQuZW5kKCkgfHwgIW1faW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRvcikpIHsK
LSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2l0
ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Omlu
Y3JlbWVudFJldmVyc2VJdGVyYXRvcihJREJLZXlEYXRhU2V0JiBzZXQsIGNvbnN0CiAKICAgICB3
aGlsZSAoY291bnQpIHsKICAgICAgICAgaWYgKCptX2l0ZXJhdG9yID09IHNldC5iZWdpbigpKSB7
Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9p
dGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6aW5jcmVt
ZW50UmV2ZXJzZUl0ZXJhdG9yKElEQktleURhdGFTZXQmIHNldCwgY29uc3QKICAgICAgICAgLS0q
bV9pdGVyYXRvcjsKIAogICAgICAgICBpZiAoIW1faW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoq
bV9pdGVyYXRvcikpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCAyOGI5OGM5NzZmYzZlOWNhM2QwY2FlYWQ1NmUyOTUzMDkyNjIwODY2Li44ZTlhNWU3NDE2NzEx
MGIxNTJjNWMxMDQyYWE4ODAyZjU3NzQ1ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIE9wdGlvbmFsPElzU2NoZW1hVXBncmFkZWQ+IFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9yZUluZm9UYWJsCiAKICAg
ICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJsZVNRTCgiT2JqZWN0U3Rv
cmVJbmZvIl9zKTsKICAgICBpZiAodGFibGVTdGF0ZW1lbnQuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIGlmICh0YWJsZVN0YXRlbWVudCA9PSB2Mk9iamVjdFN0b3JlSW5mb1NjaGVtYSB8fCB0YWJs
ZVN0YXRlbWVudCA9PSBjcmVhdGVWMk9iamVjdFN0b3JlSW5mb1NjaGVtYShvYmplY3RTdG9yZUlu
Zm9UYWJsZU5hbWVBbHRlcm5hdGUpKQogICAgICAgICByZXR1cm4geyBJc1NjaGVtYVVwZ3JhZGVk
OjpObyB9OwpAQCAtNTA1LDIyICs1MDUsMjIgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4g
U1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKIAog
ICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmRTbG93KGNyZWF0ZVYyT2JqZWN0U3Rv
cmVJbmZvU2NoZW1hKCJfVGVtcF9PYmplY3RTdG9yZUluZm8iX3MpKSkgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSBp
biBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghbV9zcWxpdGVEQi0+ZXhl
Y3V0ZUNvbW1hbmQoIklOU0VSVCBJTlRPIF9UZW1wX09iamVjdFN0b3JlSW5mbyAoaWQsIG5hbWUs
IGtleVBhdGgsIGF1dG9JbmMpIFNFTEVDVCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luYyBGUk9N
IE9iamVjdFN0b3JlSW5mbyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbWln
cmF0ZSBleGlzdGluZyBPYmplY3RTdG9yZUluZm8gY29udGVudCAoJWkpIC0gJXMiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRST1AgVEFCTEUgT2JqZWN0
U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBkcm9wIGV4aXN0
aW5nIE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICgh
bV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9UZW1wX09iamVjdFN0b3Jl
SW5mbyBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0g
JXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkp
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOwpAQCAtOTQyLDE3ICs5NDIs
MTcgQEAgT3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4gU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW8KICAgICBTUUxpdGVEYXRhYmFzZSBkYXRhYmFz
ZTsKICAgICBpZiAoIWRhdGFiYXNlLm9wZW4oZGF0YWJhc2VQYXRoKSkgewogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcycgd2hlbiBn
ZXR0aW5nIGRhdGFiYXNlIG5hbWUiLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogICAgIGlmICghZGF0YWJhc2UudGFibGVFeGlzdHMoIklEQkRhdGFiYXNlSW5mbyJfcykp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJEYXRhYmFzZUluZm8gdGFi
bGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJhc2UubGFzdEVycm9yKCks
IGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIG5hbWVzcWwg
PSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUgRlJPTSBJREJEYXRhYmFz
ZUluZm8gV0hFUkUga2V5ID0gJ0RhdGFiYXNlTmFtZSc7Il9zKTsKICAgICBpZiAoIW5hbWVzcWwp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHJlcGFyZSBzdGF0ZW1lbnQgdG8gZ2V0
IGRhdGFiYXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBhdXRvIGRhdGFiYXNlTmFtZSA9IG5hbWVz
cWwtPmNvbHVtblRleHQoMCk7CiAKQEAgLTk2MSw3ICs5NjEsNyBAQCBPcHRpb25hbDxJREJEYXRh
YmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUFu
ZFZlcnNpbwogICAgIGF1dG8gZGF0YWJhc2VWZXJzaW9uID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90
PihzdHJpbmdWZXJzaW9uKTsKICAgICBpZiAoIWRhdGFiYXNlVmVyc2lvbikgewogICAgICAgICBM
T0dfRVJST1IoIkRhdGFiYXNlIHZlcnNpb24gb24gZGlzayAoJyVzJykgZG9lcyBub3QgY2xlYW5s
eSBjb252ZXJ0IHRvIGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZlcnNpb24iLCBzdHJpbmdW
ZXJzaW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1lLCAqZGF0YWJhc2VWZXJzaW9uIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJh
c2VOYW1lQW5kVmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAppbmRleCA0N2RmZmZkODg4YmNjZWQzODFi
NTE4MTRlNjMyOWNlMGNhNjBhYWJkLi45YzEwYjQzMDEzMjJkOWQ1ZjBmNGI1ZTU2ZDE3OTk4NGIy
OGI4YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKQEAgLTUxLDEw
ICs1MSwxMCBAQCBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBJREJEYXRhYmFz
ZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIElEQkRhdGFiYXNlTmFtZUFu
ZFZlcnNpb24gaW5mbzsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5uYW1lKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJzaW9uKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBpbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaAppbmRleCBmNTJjZTRkZDA2M2VhNTA5OTM0Njc1ZTRlZGRlODk0M2FlZmE2
NzdhLi43NGZjYzc0NzRmMGQ0OTBjMjcyYzgxY2MyNWE4NDY4Y2Q4NTVmNzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQkVycm9yIHsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJvcihPcHRpb25hbDxFeGNl
cHRpb25Db2RlPiA9IFdURjo6bnVsbG9wdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0geyB9KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJvcihPcHRpb25hbDxFeGNlcHRpb25D
b2RlPiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0geyB9KTsKIAogICAg
IHN0YXRpYyBJREJFcnJvciB1c2VyRGVsZXRlRXJyb3IoKQogICAgIHsKQEAgLTg3LDcgKzg3LDcg
QEAgYm9vbCBJREJFcnJvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIElEQkVycm9yJiBlcnJv
cikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZXJyb3IubV9jb2RlID0gZWM7
CiAgICAgfSBlbHNlCi0gICAgICAgIGVycm9yLm1fY29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgZXJyb3IubV9jb2RlID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlcnJvci5tX21lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApp
bmRleCBjYmJiMjA2NWRiMDQ5Y2Q5ZmRhOTJjY2MzNDAyMzVkMzE0NTc1NmYzLi5iYjk0ZmE3Mzcz
MWU2N2Q3MWNkZTI1ZGNkNzI0MjcxMzFjNGExMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKQEAgLTE2NSw2
NyArMTY1LDY3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElEQlJlc3VsdERh
dGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiB7CiAgICAgSURCUmVzdWx0RGF0
YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yZXF1ZXN0SWRlbnRp
ZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Vycm9yKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Jlc3VsdElu
dGVnZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV90eXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGJvb2wgaGFzT2JqZWN0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
b2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBXVEZN
b3ZlKG9iamVjdCk7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmplY3Qp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtlVW5p
cXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
b2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFuc2FjdGlvbkluZm8gPSBX
VEZNb3ZlKG9iamVjdCk7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNPYmpl
Y3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0byBvYmplY3QgPSBtYWtl
VW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElEQktleURhdGE+IG9wdGlv
bmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFs
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICpvYmplY3QgPSBXVEZNb3ZlKCpvcHRpb25hbCk7CiAgICAg
ICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewog
ICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVzdWx0PigpOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBh
dXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0PigpOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2dl
dEFsbFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3Bw
CmluZGV4IDJhZmU3ZWJkNWVhNTI0Y2VmMGU4NzViYTJkY2E5NjhjN2FjNDVjNDcuLjlmYmZmYzEw
MDA0ZTQ0MTg0MTU4MTA3MjNmOTVhZjg0M2NlNDQzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApA
QCAtNTQwLDE0ICs1NDAsMTQgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29u
dHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcKICAgICBWZWN0b3I8
TWVudUl0ZW0+IGl0ZW1zOwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQot
ICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVhbigiaW5jbHVkZVBpY3R1cmVJblBp
Y3R1cmUiX3MpLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgaWYgKG9wdGlvbnNKU09OT2JqZWN0LT5n
ZXRCb29sZWFuKCJpbmNsdWRlUGljdHVyZUluUGljdHVyZSJfcykudmFsdWVfb3IoZmFsc2UpKSB7
CiAgICAgICAgIEFTU0VSVChpczxIVE1MVmlkZW9FbGVtZW50PihtZWRpYUVsZW1lbnQpKTsKICAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWxlbWVudCkud2Vi
a2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2Vu
dGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkpOwogICAgICAgICBpdGVtcy5hcHBlbmQoY3Jl
YXRlTWVudUl0ZW0oUGljdHVyZUluUGljdHVyZVRhZzo6SW5jbHVkZVBpY3R1cmVJblBpY3R1cmUs
IFdFQl9VSV9TVFJJTkdfS0VZKCJQaWN0dXJlIGluIFBpY3R1cmUiLCAiUGljdHVyZSBpbiBQaWN0
dXJlIChNZWRpYSBDb250cm9scyBNZW51KSIsICJQaWN0dXJlIGluIFBpY3R1cmUgbWVkaWEgY29u
dHJvbHMgY29udGV4dCBtZW51IHRpdGxlIiksIGZhbHNlLCAicGlwLmVudGVyIl9zKSk7CiAgICAg
fQogI2VuZGlmIC8vIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAotICAgIGlmIChv
cHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVhbigiaW5jbHVkZUxhbmd1YWdlcyJfcykudmFsdWVP
cihmYWxzZSkpIHsKKyAgICBpZiAob3B0aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oImluY2x1
ZGVMYW5ndWFnZXMiX3MpLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICBpZiAoYXV0byogYXVk
aW9UcmFja3MgPSBtZWRpYUVsZW1lbnQuYXVkaW9UcmFja3MoKTsgYXVkaW9UcmFja3MgJiYgYXVk
aW9UcmFja3MtPmxlbmd0aCgpID4gMSkgewogICAgICAgICAgICAgVmVjdG9yPE1lbnVJdGVtPiBs
YW5ndWFnZU1lbnVJdGVtczsKIApAQCAtNTYwLDcgKzU2MCw3IEBAIGJvb2wgTWVkaWFDb250cm9s
c0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwg
U3RyaW5nCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAob3B0aW9uc0pTT05PYmplY3QtPmdl
dEJvb2xlYW4oImluY2x1ZGVTdWJ0aXRsZXMiX3MpLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgaWYg
KG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlU3VidGl0bGVzIl9zKS52YWx1
ZV9vcihmYWxzZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIHRleHRUcmFja3MgPSBtZWRpYUVsZW1l
bnQudGV4dFRyYWNrcygpOyB0ZXh0VHJhY2tzICYmIHRleHRUcmFja3MtPmxlbmd0aCgpKSB7CiAg
ICAgICAgICAgICBWZWN0b3I8TWVudUl0ZW0+IHN1YnRpdGxlTWVudUl0ZW1zOwogCkBAIC01OTEs
NyArNTkxLDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29udHJvbHNDb250
ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpICYmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAg
aWYgKChpdGVtcy5zaXplKCkgPT0gMSAmJiBpdGVtc1swXS50eXBlKCkgPT0gU3VibWVudVR5cGUp
IHx8IG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJwcm9tb3RlU3ViTWVudXMiX3MpLnZh
bHVlT3IoZmFsc2UpKSB7CisgICAgaWYgKChpdGVtcy5zaXplKCkgPT0gMSAmJiBpdGVtc1swXS50
eXBlKCkgPT0gU3VibWVudVR5cGUpIHx8IG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJw
cm9tb3RlU3ViTWVudXMiX3MpLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICBmb3IgKGF1dG8m
JiBpdGVtIDogc3RkOjpleGNoYW5nZShpdGVtcywgeyB9KSkgewogICAgICAgICAgICAgaWYgKCFp
dGVtcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgaXRlbXMuYXBwZW5kKHsgU2VwYXJhdG9y
VHlwZSwgaW52YWxpZE1lbnVJdGVtSWRlbnRpZmllciwgLyogdGl0bGUgKi8gbnVsbFN0cmluZygp
IH0pOwpAQCAtNjU0LDcgKzY1NCw3IEBAIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3dNZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwgU3RyaW5nCiAjaWYgVVNF
KFVJQ09OVEVYVE1FTlUpCiAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuc2hvd01lZGlhQ29u
dHJvbHNDb250ZXh0TWVudShib3VuZHMsIFdURk1vdmUoaXRlbXMpLCBXVEZNb3ZlKGhhbmRsZUl0
ZW1TZWxlY3RlZCkpOwogI2VsaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmIFVTRShBQ0NFU1NJ
QklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmNvbnRleHRtZW51RXZlbnQsIE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVQcm92aWRlcjo6Y3JlYXRlKFdU
Rk1vdmUoaXRlbXMpLCBXVEZNb3ZlKGhhbmRsZUl0ZW1TZWxlY3RlZCkpKSwgeyAvKmNhcHR1cmUg
Ki8gdHJ1ZSwgLyogcGFzc2l2ZSAqLyBXVEY6Om51bGxvcHQsIC8qIG9uY2UgKi8gdHJ1ZSB9KTsK
KyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVu
dCwgTWVkaWFDb250cm9sc0NvbnRleHRNZW51RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKE1lZGlhQ29u
dHJvbHNDb250ZXh0TWVudVByb3ZpZGVyOjpjcmVhdGUoV1RGTW92ZShpdGVtcyksIFdURk1vdmUo
aGFuZGxlSXRlbVNlbGVjdGVkKSkpLCB7IC8qY2FwdHVyZSAqLyB0cnVlLCAvKiBwYXNzaXZlICov
IHN0ZDo6bnVsbG9wdCwgLyogb25jZSAqLyB0cnVlIH0pOwogICAgIHBhZ2UtPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLnNob3dDb250ZXh0TWVudUF0KCp0YXJnZXQuZG9jdW1lbnQoKS5mcmFtZSgp
LCBib3VuZHMuY2VudGVyKCkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4IDM0MzQzNDJlNDFmNjcx
ZGMyNTE2NjcwNDQ1YTRkZDk4MTUyMjFhNzEuLmI4OWQ1MTNmYTA1ZmNjZTY3NTI5Mjc4MTZhNTFm
NGRmYWE5NzExYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcGF1c2VSZWNvcmRpbmcoKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXN1bWVSZWNvcmRpbmcoKTsKIAotICAgIHVuc2lnbmVkIHZpZGVvQml0c1BlclNlY29uZCgpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQudmFsdWVPcigwKTsgfQot
ICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9u
cy5hdWRpb0JpdHNQZXJTZWNvbmQudmFsdWVPcigwKTsgfQorICAgIHVuc2lnbmVkIHZpZGVvQml0
c1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQu
dmFsdWVfb3IoMCk7IH0KKyAgICB1bnNpZ25lZCBhdWRpb0JpdHNQZXJTZWNvbmQoKSBjb25zdCB7
IHJldHVybiBtX29wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLnZhbHVlX29yKDApOyB9CiAKICAg
ICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0uZ2V0KCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5j
cHAKaW5kZXggNWQwNDY4NTAxMGUwMWIzOWIwMmUxN2E3NzBkODA0MTA1YWI2NmIxNC4uZWZlMDU4
ODA1OTFmYTkwNjgyNzI5NmY1MzE2MjUzMDFhYTkzOTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0yOTgsNyAr
Mjk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRl
KE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJgogICAgICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJ7IH0iKTsKIAogICAgIGlmICghc3RhdGUpIHsKLSAgICAgICAgbV9wb3NpdGlv
blN0YXRlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc2l0aW9uU3RhdGUgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIG5vdGlmeVBvc2l0aW9uU3RhdGVPYnNlcnZlcnMoKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0
ZT4mJgogT3B0aW9uYWw8ZG91YmxlPiBNZWRpYVNlc3Npb246OmN1cnJlbnRQb3NpdGlvbigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3Bvc2l0aW9uU3RhdGUgfHwgIW1fbGFzdFJlcG9ydGVkUG9zaXRp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIGFjdHVhbFBsYXliYWNrUmF0ZSA9IG1fcGxheWJhY2tTdGF0ZSA9
PSBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlOjpQbGF5aW5nID8gbV9wb3NpdGlvblN0YXRlLT5w
bGF5YmFja1JhdGUgOiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
CmluZGV4IDQwMjZkOWE0NDE0N2UwNjk2MDI4ZWMxNjk2NWQ0YmI1YWEzMWNhZDkuLmM4NTI0NWVk
ZmQxYWE2ODQwMTBhNTgxNWY3MDMxOTM2YTczZTBlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1l
ZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgY29uc3QgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzJiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpz
ZXR0aW4KIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6OlNvdXJjZTo6c2V0dGlu
Z3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4g
c2V0dGluZ3MpCiB7CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnOjpIZWlnaHQgfSkpCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpjYW52YXNSZXNpemVkKENh
bnZhc0Jhc2UmIGNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDc2Y2M1ODVhNzA1NmI5ODc5YjJk
YzllMTA5YWY1NzA1ZWJhN2Q2YmQuLjkyYzhkZjhiYjExYjBkNjFjYjc0NzRkNDlkZmFhNTVlZDU2
ZmY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxNZWRpYVRyYWNrQ29uc3Ry
YWludHM+JiBjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9wcm9t
aXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50cy52YWx1
ZU9yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOworICAgICAgICBtX2NvbnN0cmFpbnRzID0g
Y29uc3RyYWludHMudmFsdWVfb3IoTWVkaWFUcmFja0NvbnN0cmFpbnRzIHsgfSk7CiAgICAgfTsK
ICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50cyhj
b25zdHJhaW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApp
bmRleCA5YzQ4ZTVhNDZhMDYyZjdkZmUzYTZjYjZmNWEzYmIzZjViZjE1MTIyLi43YzA1OTEzNGMw
N2Y2OTMzOTlkZjQ4YTQ0ODBlODliMDg1MTU3NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCkBAIC01Niw3ICs1
Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBSVENJY2VDYW5kaWRhdGU6
OmNyZWF0ZShjb25zdCBSVENJY2VDYW5kaWRhdGVJCiAgICAgaWYgKGRpY3Rpb25hcnkuc2RwTWlk
LmlzTnVsbCgpICYmICFkaWN0aW9uYXJ5LnNkcE1MaW5lSW5kZXgpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJDYW5kaWRhdGUgbXVzdCBub3QgaGF2ZSBib3RoIG51bGwg
c2RwTWlkIGFuZCBzZHBNTGluZUluZGV4IiB9OwogCi0gICAgYXV0byBmaWVsZHMgPSBwYXJzZUlj
ZUNhbmRpZGF0ZVNEUChkaWN0aW9uYXJ5LmNhbmRpZGF0ZSkudmFsdWVPcihSVENJY2VDYW5kaWRh
dGU6OkZpZWxkcyB7IH0pOworICAgIGF1dG8gZmllbGRzID0gcGFyc2VJY2VDYW5kaWRhdGVTRFAo
ZGljdGlvbmFyeS5jYW5kaWRhdGUpLnZhbHVlX29yKFJUQ0ljZUNhbmRpZGF0ZTo6RmllbGRzIHsg
fSk7CiAgICAgZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQgPSBkaWN0aW9uYXJ5LnVzZXJuYW1lRnJh
Z21lbnQ7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlKGRpY3Rpb25h
cnkuY2FuZGlkYXRlLCBkaWN0aW9uYXJ5LnNkcE1pZCwgZGljdGlvbmFyeS5zZHBNTGluZUluZGV4
LCBXVEZNb3ZlKGZpZWxkcykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKaW5kZXggZjYxNDI1YWNkM2Vj
ZTc5MzRkYjAzZTJmNGMzZGQ2YjhiNzExYWY0OS4uMzY3NmFiNDVjMmQ2OTRmNWY2OWViZjgwZGY5
OWU3YzA2YzJjYmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUlRDUnRw
VHJhbnNjZWl2ZXJEaXJlY3Rpb24gUlRDUnRwVHJhbnNjZWl2ZXI6OmRpcmVjdGlvbigpIGNvbnN0
CiBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwVHJhbnNjZWl2ZXI6
OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9iYWNrZW5kKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiBtX2JhY2tlbmQtPmN1cnJlbnREaXJlY3Rpb24oKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
U2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRleCBjYTIyZjBhOGM5M2Rk
ZWU5MjkwNWE0MTcwOWY0NzljYjY3NWJmNWEwLi5iNjg3ODAyYjY0NzQ0MmJhMmJkNGYwNDE4OTUx
MTg1MzI5ZDY1ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJC
YWNrZW5kLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTGliV2ViUlRDUnRwU2VuZGVyQmFj
a2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1ldGVycyYgcGFyYW1lCiAK
ICAgICBhdXRvIHJ0Y1BhcmFtZXRlcnMgPSBXVEZNb3ZlKCptX2N1cnJlbnRQYXJhbWV0ZXJzKTsK
ICAgICB1cGRhdGVSVENSdHBTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJzLCBydGNQYXJhbWV0ZXJz
KTsKLSAgICBtX2N1cnJlbnRQYXJhbWV0ZXJzID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVu
dFBhcmFtZXRlcnMgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGVycm9yID0gbV9ydGNTZW5k
ZXItPlNldFBhcmFtZXRlcnMocnRjUGFyYW1ldGVycyk7CiAgICAgaWYgKCFlcnJvci5vaygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcAppbmRleCBkMzI5ZjBjOWZiMzI0N2M0MmNkNzdjOTZkMGI5YTg3NzZlMGQ3MjYyLi42M2U0
Y2U3MjBjMjhiYjM1M2YzODgzNTA2ZGYzNjQwNDNiY2RiOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Nl
aXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+IExpYldlYlJUQ1J0cFRy
YW5zY2VpdmVyQmFja2VuZDo6Y3VycmVudERpcmUKIHsKICAgICBhdXRvIHZhbHVlID0gbV9ydGNU
cmFuc2NlaXZlci0+Y3VycmVudF9kaXJlY3Rpb24oKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB0b1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKCp2YWx1ZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVlc3QvUGF5bWVudFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVx
dWVzdC5jcHAKaW5kZXggZWJiYTg0NzZjOTVjNjZjZDliZjBkN2UzNjhkYjRlNDNkNGFkMzAyYy4u
OWI5MDIyMDBmZGM4YWQyMTMyNDhiYWZhM2RjYjc5ZjZkZDM2NzVkMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHAKQEAgLTE4MCwxMyArMTgwLDEzIEBAIE9wdGlvbmFsPFBheW1lbnRSZXF1ZXN0OjpNZXRob2RJ
ZGVudGlmaWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9kSWRlbnRpCiAgICAgaWYg
KCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkU3RhbmRhcmRpemVkUGF5bWVu
dE1ldGhvZElkZW50aWZpZXIoaWRlbnRpZmllcikpCiAgICAgICAgICAgICByZXR1cm4geyBpZGVu
dGlmaWVyIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGlzVmFsaWRVUkxCYXNlZFBheW1lbnRNZXRo
b2RJZGVudGlmaWVyKHVybCkpCiAgICAgICAgIHJldHVybiB7IFdURk1vdmUodXJsKSB9OwogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBl
bnVtIGNsYXNzIElzVXBkYXRlIHsKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgRXhjZXB0aW9u
T3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hlY2tBbmRDYW5vbmljYWxp
emVEZXRhaQogICAgICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09IElzVXBkYXRlOjpObykKICAg
ICAgICAgICAgIGRldGFpbHMuc2hpcHBpbmdPcHRpb25zID0geyB7IH0gfTsKICAgICB9IGVsc2Ug
aWYgKGlzVXBkYXRlID09IElzVXBkYXRlOjpObykKLSAgICAgICAgZGV0YWlscy5zaGlwcGluZ09w
dGlvbnMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRldGFpbHMuc2hpcHBpbmdPcHRpb25zID0g
c3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gc2VyaWFsaXplZE1vZGlmaWVyRGF0
YTsKICAgICBpZiAoZGV0YWlscy5tb2RpZmllcnMpIHsKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lk
IFBheW1lbnRSZXF1ZXN0OjpzZXR0bGVTaG93UHJvbWlzZShFeGNlcHRpb25PcjxQYXltZW50UmVz
cG9uc2UmPiYmIHJlc3VsdCkKIAogdm9pZCBQYXltZW50UmVxdWVzdDo6Y2xvc2VBY3RpdmVQYXlt
ZW50SGFuZGxlcigpCiB7Ci0gICAgaWYgKGF1dG8gYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIFdURjo6bnVsbG9wdCkpCisgICAgaWYg
KGF1dG8gYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVu
dEhhbmRsZXIsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIGFjdGl2ZVBheW1lbnRIYW5kbGVyLT5w
YXltZW50SGFuZGxlci0+aGlkZSgpOwogCiAgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CkBAIC01
MjgsNyArNTI4LDcgQEAgT3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlwZT4gUGF5bWVudFJlcXVl
c3Q6OnNoaXBwaW5nVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3B0aW9ucy5yZXF1ZXN0U2hp
cHBpbmcpCiAgICAgICAgIHJldHVybiBtX29wdGlvbnMuc2hpcHBpbmdUeXBlOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQYXlt
ZW50UmVxdWVzdDo6c2hpcHBpbmdBZGRyZXNzQ2hhbmdlZChSZWY8UGF5bWVudEFkZHJlc3M+JiYg
c2hpcHBpbmdBZGRyZXNzKQpAQCAtNzMyLDcgKzczMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBh
eW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29tcGxldGU+JiYgcmVzdWx0
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9OwogCiAgICAgYWN0aXZl
UGF5bWVudEhhbmRsZXIoKS0+Y29tcGxldGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICBtX2FjdGl2
ZVBheW1lbnRIYW5kbGVyID0gV1RGOjpudWxsb3B0OworICAgIG1fYWN0aXZlUGF5bWVudEhhbmRs
ZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtNzQ4LDcgKzc0OCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjpyZXRyeShQYXltZW50VmFsaWRh
dGlvbkVycm9ycyYmIGVycm9ycykKIAogdm9pZCBQYXltZW50UmVxdWVzdDo6Y2FuY2VsKCkKIHsK
LSAgICBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyID0gV1RGOjpudWxsb3B0OworICAgIG1fYWN0aXZl
UGF5bWVudEhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV9pc1VwZGF0aW5nKSB7
CiAgICAgICAgIG1faXNDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAppbmRleCBkZjJk
MzJmOGM2NGM5ZTRkYjBiMzBlZDMwNzRiMGJmZGVkODdiM2MyLi43NjM0YmQwMDMzMzdiYmZmYjI3
MTZjZjA3MjQxZWZkMDI4YmIxYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oCkBAIC02MCwxMiArNjAsMTIgQEAg
T3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gU3BlZWNoUmVjb2duaXRpb25FcnJvcjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIGRlY29kZXIgPj4gbWVzc2FnZTsK
ICAgICBpZiAoIW1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIFNwZWVjaFJlY29nbml0aW9u
RXJyb3IgeyBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqbWVzc2FnZSkgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVz
dEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
UmVxdWVzdEluZm8uaAppbmRleCBlN2Q0MGJmMDM4NjNkY2YzYzdkMDM3ZTE0MjRmZDhhZWEzYmM2
MzU4Li45NDI2Yzk0Yzc5YjQzODM4YWYzMDdkOTJiN2Y3NDAzYjU3MDQ4ZWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0SW5mby5oCkBAIC01NiwzNyArNTYsMzcgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2du
aXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbzo6ZGVjb2RlKERl
Y28KICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlm
aWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsK
ICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGxh
bmc7CiAgICAgZGVjb2RlciA+PiBsYW5nOwogICAgIGlmICghbGFuZykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IGNvbnRpbnVvdXM7CiAgICAgZGVjb2RlciA+PiBjb250aW51b3VzOwogICAgIGlm
ICghY29udGludW91cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGludGVyaW1SZXN1bHRzOwog
ICAgIGRlY29kZXIgPj4gaW50ZXJpbVJlc3VsdHM7CiAgICAgaWYgKCFpbnRlcmltUmVzdWx0cykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtYXhBbHRlcm5hdGl2ZXM7CiAgICAgZGVjb2Rl
ciA+PiBtYXhBbHRlcm5hdGl2ZXM7CiAgICAgaWYgKCFtYXhBbHRlcm5hdGl2ZXMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNs
aWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gZnJhbWVJZGVu
dGlmaWVyOwogICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAg
ICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaApp
bmRleCA2MTQ0ZDFmZjA3MDY4OWNhYmJiODE2YzRmYmEyOTcyM2FhNDNmMWIyLi41YWE0ODUyMGNi
OGY2Nzc2ZDMwNTM4NGQ3NDY5NDE0MzczNWM3MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaApA
QCAtNDYsMTAgKzQ2LDEwIEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVE
YXRhPiBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVjCiB7CiAgICAgU3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnRyYW5zY3JpcHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY29uZmlkZW5jZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNzMsMTAgKzcz
LDEwIEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4gU3BlZWNoUmVjb2du
aXRpb25SZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlCiB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25S
ZXN1bHREYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hbHRlcm5h
dGl2ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNGaW5hbCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5kZXggODkxNDkxNzkzZjRl
MDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NC4uYzI5YmIyNWEzMTY0YzRhMWMyZTFhZTEyYThi
NjBiYzkwNTQzOTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC04NCwxNyArODQsMTcgQEAgT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2xp
ZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0
eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbnRlbnQ+IGNvbnRlbnQ7
CiAgICAgZGVjb2RlciA+PiBjb250ZW50OwogICAgIGlmICghY29udGVudCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIp
LCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqY29udGVudCkgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaAppbmRleCBiZGM0YjlhZjJj
NWFmZmYwYzNkNjg2NzY0OThiNWQ3Yjk3NzRlOWQyLi5hNmI4ODIwZGMxY2QzZjdiNTQ4ZWNhZjMw
M2Q5NDE0NWMyZjQxMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXplci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnQoUmVmPFJlYWx0aW1l
TWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9uRW5hYmxlZCk7CiAjZW5k
aWYKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uRXJyb3I+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJv
cnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGRjNmYwMmQ3
YWE0OGI1MDU2MDg4ZDhlYzA0OThhMjAyNWNiZWQxYjIuLjA5MmM3ZDZmZjRlMGJlMGNlZTc5ZTk5
ZmJmYTVhNTQ0MzI4MzIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0TGF0ZXIoZG91
YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZgogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpzdGFydFBsYXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwg
T3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAid2hlbiA9ICIsIHdoZW4sICIs
IG9mZnNldCA9ICIsIGdyYWluT2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIsIGdyYWluRHVyYXRpb24u
dmFsdWVPcigwKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAid2hlbiA9ICIsIHdo
ZW4sICIsIG9mZnNldCA9ICIsIGdyYWluT2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIsIGdyYWluRHVy
YXRpb24udmFsdWVfb3IoMCkpOwogCiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVE
VUxFRF9TVEFURSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQ2Fubm90IGNhbGwgc3RhcnQgbW9yZSB0aGFuIG9uY2UuIl9zIH07CkBAIC00ODEsNyArNDgx
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydFBsYXlp
bmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk8KIAogICAgIG1faXNHcmFpbiA9IHRydWU7CiAg
ICAgbV9ncmFpbk9mZnNldCA9IGdyYWluT2Zmc2V0OwotICAgIG1fZ3JhaW5EdXJhdGlvbiA9IGdy
YWluRHVyYXRpb24udmFsdWVPcigwKTsKKyAgICBtX2dyYWluRHVyYXRpb24gPSBncmFpbkR1cmF0
aW9uLnZhbHVlX29yKDApOwogICAgIG1fd2FzR3JhaW5EdXJhdGlvbkdpdmVuID0gISFncmFpbkR1
cmF0aW9uOwogICAgIG1fc3RhcnRUaW1lID0gd2hlbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IGZlYmEzMzBlZDAyMGE3YTY5YTQ0M2Yz
MjJlZGFkZDdlMWE5NmQ2ZWMuLjA2MDRmNWFjNzhmZDQ3NGQ4MjExZTQ1YTljYzk2MTJlMmUwZmNl
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAK
QEAgLTY3NCwxNSArNjc0LDE1IEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZldpdGhMb2NrKCkKIAog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05vZGVPcHRpb25zKGNvbnN0
IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRBdWRpb05vZGVPcHRpb25z
JiBkZWZhdWx0cykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHNldENoYW5uZWxDb3VudChvcHRpb25z
LmNoYW5uZWxDb3VudC52YWx1ZU9yKGRlZmF1bHRzLmNoYW5uZWxDb3VudCkpOworICAgIGF1dG8g
cmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50KG9wdGlvbnMuY2hhbm5lbENvdW50LnZhbHVlX29yKGRl
ZmF1bHRzLmNoYW5uZWxDb3VudCkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgcmVzdWx0ID0g
c2V0Q2hhbm5lbENvdW50TW9kZShvcHRpb25zLmNoYW5uZWxDb3VudE1vZGUudmFsdWVPcihkZWZh
dWx0cy5jaGFubmVsQ291bnRNb2RlKSk7CisgICAgcmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50TW9k
ZShvcHRpb25zLmNoYW5uZWxDb3VudE1vZGUudmFsdWVfb3IoZGVmYXVsdHMuY2hhbm5lbENvdW50
TW9kZSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgcmVzdWx0ID0gc2V0Q2hhbm5lbEludGVy
cHJldGF0aW9uKG9wdGlvbnMuY2hhbm5lbEludGVycHJldGF0aW9uLnZhbHVlT3IoZGVmYXVsdHMu
Y2hhbm5lbEludGVycHJldGF0aW9uKSk7CisgICAgcmVzdWx0ID0gc2V0Q2hhbm5lbEludGVycHJl
dGF0aW9uKG9wdGlvbnMuY2hhbm5lbEludGVycHJldGF0aW9uLnZhbHVlX29yKGRlZmF1bHRzLmNo
YW5uZWxJbnRlcnByZXRhdGlvbikpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5k
ZXggN2EwNGE1YWZiNDkyYzMyNDNkYTA4MWVhZDc3MDU2MWVlZmJiYzU3ZS4uNTRmY2FiYTQ1MjRm
ZDI4ODA3YjM3OTFlOWUyZjk0YmMyMDAxOTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtMjYyLDcgKzI2
Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsQW5kSG9s
ZEF0VGltZShTZWNvbmRzIGNhbmNlbFRpbWUpCiAgICAgICAgICAgICAvLyB3ZSBnZXQgdGhlcmUu
CiAgICAgICAgICAgICArK2NhbmNlbGxlZEV2ZW50SW5kZXg7CiAKLSAgICAgICAgICAgIG5ld0V2
ZW50ID0gUGFyYW1FdmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQoY2FuY2VsVGltZSwgV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIG5ld0V2ZW50ID0gUGFyYW1FdmVudDo6Y3JlYXRlQ2Fu
Y2VsVmFsdWVzRXZlbnQoY2FuY2VsVGltZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0yODUsNyArMjg1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
QXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxBbmRIb2xkQXRUaW1lKFNlY29uZHMgY2FuY2VsVGlt
ZSkKICAgICAgICAgICAgICAgICBmbG9hdCBlbmRWYWx1ZSA9IHZhbHVlQ3VydmVBdFRpbWUoY2Fu
Y2VsVGltZSwgY2FuY2VsbGVkRXZlbnQudGltZSgpLCBjYW5jZWxsZWRFdmVudC5kdXJhdGlvbigp
LCBjYW5jZWxsZWRFdmVudC5jdXJ2ZSgpLmRhdGEoKSwgY2FuY2VsbGVkRXZlbnQuY3VydmUoKS5z
aXplKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgU2V0VmFs
dWVDdXJ2ZSB3aXRoIHRoaXMgbmV3IG9uZSB0aGF0IGlzIGlkZW50aWNhbCBleGNlcHQgZm9yIHRo
ZSBkdXJhdGlvbi4KLSAgICAgICAgICAgICAgICBuZXdFdmVudCA9IFBhcmFtRXZlbnQgeyBldmVu
dFR5cGUsIGNhbmNlbGxlZEV2ZW50LnZhbHVlKCksIGNhbmNlbGxlZEV2ZW50LnRpbWUoKSwgY2Fu
Y2VsbGVkRXZlbnQudGltZUNvbnN0YW50KCksIG5ld0R1cmF0aW9uLCBWZWN0b3I8ZmxvYXQ+IHsg
Y2FuY2VsbGVkRXZlbnQuY3VydmUoKSB9LCBjYW5jZWxsZWRFdmVudC5jdXJ2ZVBvaW50c1BlclNl
Y29uZCgpLCBlbmRWYWx1ZSwgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAgbmV3RXZl
bnQgPSBQYXJhbUV2ZW50IHsgZXZlbnRUeXBlLCBjYW5jZWxsZWRFdmVudC52YWx1ZSgpLCBjYW5j
ZWxsZWRFdmVudC50aW1lKCksIGNhbmNlbGxlZEV2ZW50LnRpbWVDb25zdGFudCgpLCBuZXdEdXJh
dGlvbiwgVmVjdG9yPGZsb2F0PiB7IGNhbmNlbGxlZEV2ZW50LmN1cnZlKCkgfSwgY2FuY2VsbGVk
RXZlbnQuY3VydmVQb2ludHNQZXJTZWNvbmQoKSwgZW5kVmFsdWUsIHN0ZDo6bnVsbG9wdCB9Owog
ICAgICAgICAgICAgICAgIG5ld1NldFZhbHVlRXZlbnQgPSBQYXJhbUV2ZW50OjpjcmVhdGVTZXRW
YWx1ZUV2ZW50KGVuZFZhbHVlLCBjYW5jZWxsZWRFdmVudC50aW1lKCkgKyBuZXdEdXJhdGlvbik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMyOCwxMCArMzI4LDEwIEBAIE9wdGlvbmFs
PGZsb2F0PiBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQmFzZUF1ZGlv
Q29udGV4dCYgY29udGV4CiB7CiAgICAgewogICAgICAgICBpZiAoIW1fZXZlbnRzTG9jay50cnlM
b2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IEFkb3B0TG9jaywgbV9l
dmVudHNMb2NrIH07CiAgICAgICAgIGlmICghbV9ldmVudHMuc2l6ZSgpIHx8IFNlY29uZHMgeyBj
b250ZXh0LmN1cnJlbnRUaW1lKCkgfSA8IG1fZXZlbnRzWzBdLnRpbWUoKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIC8vIEFzayBmb3IganVzdCBhIHNpbmdsZSB2YWx1ZS4KQEAgLTkwNCwxNyAr
OTA0LDE3IEBAIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpoYW5kbGVDYW5jZWxWYWx1ZXMoUGFy
YW1FdmVudCYgZXZlbnQsIFBhcmFtRXZlbnQqIG5leHRFCiAKIGF1dG8gQXVkaW9QYXJhbVRpbWVs
aW5lOjpQYXJhbUV2ZW50OjpjcmVhdGVTZXRWYWx1ZUV2ZW50KGZsb2F0IHZhbHVlLCBTZWNvbmRz
IHRpbWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4gUGFyYW1FdmVudCB7IFBhcmFtRXZl
bnQ6OlNldFZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0sIFZlY3RvcjxmbG9hdD4g
eyB9LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gUGFyYW1FdmVudCB7IFBhcmFt
RXZlbnQ6OlNldFZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0sIFZlY3RvcjxmbG9h
dD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRpb1BhcmFtVGltZWxp
bmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUxpbmVhclJhbXBFdmVudChmbG9hdCB2YWx1ZSwgU2Vjb25k
cyB0aW1lKSAtPiBQYXJhbUV2ZW50CiB7Ci0gICAgcmV0dXJuIHsgUGFyYW1FdmVudDo6TGluZWFy
UmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0PiB7
IH0sIDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OkxpbmVh
clJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0sIFZlY3RvcjxmbG9hdD4g
eyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6
OlBhcmFtRXZlbnQ6OmNyZWF0ZUV4cG9uZW50aWFsUmFtcEV2ZW50KGZsb2F0IHZhbHVlLCBTZWNv
bmRzIHRpbWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpFeHBv
bmVudGlhbFJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0sIFZlY3Rvcjxm
bG9hdD4geyB9LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBQYXJhbUV2ZW50
OjpFeHBvbmVudGlhbFJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0sIFZl
Y3RvcjxmbG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRpb1Bh
cmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFRhcmdldEV2ZW50KGZsb2F0IHRhcmdl
dCwgU2Vjb25kcyB0aW1lLCBmbG9hdCB0aW1lQ29uc3RhbnQpIC0+IFBhcmFtRXZlbnQKQEAgLTky
MiwxNCArOTIyLDE0IEBAIGF1dG8gQXVkaW9QYXJhbVRpbWVsaW5lOjpQYXJhbUV2ZW50OjpjcmVh
dGVTZXRUYXJnZXRFdmVudChmbG9hdCB0YXJnZXQsIFNlY29uZHMKICAgICAvLyBUaGUgdGltZSBs
aW5lIGNvZGUgZG9lcyBub3QgZXhwZWN0IGEgdGltZUNvbnN0YW50IG9mIDAuIChJdCByZXR1cm5z
IE5hTiBvciBJbmZpbml0eSBkdWUgdG8gZGl2aXNpb24gYnkgemVyby4gVGhlIGNhbGxlcgogICAg
IC8vIHNob3VsZCBoYXZlIGNvbnZlcnRlZCB0aGlzIHRvIGEgU2V0VmFsdWVFdmVudC4KICAgICBB
U1NFUlQoISF0aW1lQ29uc3RhbnQpOwotICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OlNldFRhcmdl
dCwgdGFyZ2V0LCB0aW1lLCB0aW1lQ29uc3RhbnQsIFNlY29uZHMgeyB9LCBWZWN0b3I8ZmxvYXQ+
IHsgfSwgMCwgMCwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgUGFyYW1FdmVudDo6U2V0
VGFyZ2V0LCB0YXJnZXQsIHRpbWUsIHRpbWVDb25zdGFudCwgU2Vjb25kcyB7IH0sIFZlY3Rvcjxm
bG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRpb1BhcmFtVGlt
ZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVlQ3VydmVFdmVudChWZWN0b3I8ZmxvYXQ+
JiYgY3VydmUsIFNlY29uZHMgdGltZSwgU2Vjb25kcyBkdXJhdGlvbikgLT4gUGFyYW1FdmVudAog
ewogICAgIGRvdWJsZSBjdXJ2ZVBvaW50c1BlclNlY29uZCA9IChjdXJ2ZS5zaXplKCkgLSAxKSAv
IGR1cmF0aW9uLnZhbHVlKCk7CiAgICAgZmxvYXQgY3VydmVFbmRWYWx1ZSA9IGN1cnZlLmxhc3Qo
KTsKLSAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpTZXRWYWx1ZUN1cnZlLCAwLCB0aW1lLCAwLCBk
dXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1cnZlUG9pbnRzUGVyU2Vjb25kLCBjdXJ2ZUVuZFZh
bHVlLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpTZXRWYWx1ZUN1
cnZlLCAwLCB0aW1lLCAwLCBkdXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1cnZlUG9pbnRzUGVy
U2Vjb25kLCBjdXJ2ZUVuZFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRpb1Bh
cmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUNhbmNlbFZhbHVlc0V2ZW50KFNlY29uZHMg
Y2FuY2VsVGltZSwgT3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2ZW50KSAtPiBQYXJhbUV2
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDIwNzBmYzdjMTA5ODExZWQ5MzM2ZTUxMGY5
ZGJmNmYzODMzNmIxMTcuLmQ0NmQ4Mzg1MWJkMGFhMzFlNzNmZGQ0Mzg0N2VkMjgxNzBkZjM5OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBBdWRpb1dv
cmtsZXRHbG9iYWxTY29wZTo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKHNpemVfdCBjdXJyZW50RnJh
bWUpCiAgICAgICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0aW9u
KHMpLgogICAgICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNj
b3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7CiAgICAgICAgIC8vIFRoaXMgdGFrZXMgY2Fy
ZSBvZiBwcm9jZXNzaW5nIHRoZSBNaWNyb1Rhc2sgcXVldWUgYWZ0ZXIgcmVuZGVyaW5nLgotICAg
ICAgICBtX2xvY2tEdXJpbmdSZW5kZXJpbmcgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbG9j
a0R1cmluZ1JlbmRlcmluZyA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlvQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKaW5kZXggZmFi
NzdhOTNiY2MzMTIxZGZhMjg4YzE4MjhkMjNlNTU1OGRmOWZiOS4uMzJmYTJjYzY5YmJlNDIyN2Vl
OTdiYjk0YTk0YzEwNTlkNTAyYzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwogCiAgICAgLy8gQXN5bmNo
cm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KLSAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgT3B0aW9uYWw8UmVmPERlZmVycmVkUHJvbWlzZT4+
JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1
ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZl
ckNhbGxiYWNrPiYmLCBPcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNlPj4mJiA9IHN0ZDo6bnVs
bG9wdCk7CiAKICAgICBBdWRpb0xpc3RlbmVyJiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVu
ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDcyOGJiOTI4NmEzNTVk
MDA3ZDljYjAxODEzNWNmNmMxOTM0YjFhNzguLmI2MGMyMmEzNzFjNWY5Mjg1NGJmYzM2ZTBjNWM4
MzY3YzY0NzVmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAKIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgT3B0
aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlLnZhbHVlT3IoQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkpKQorICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZS52
YWx1ZV9vcihBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkpCiB7CiAgICAg
QVNTRVJUKEJhc2VBdWRpb0NvbnRleHQ6OmlzU3VwcG9ydGVkU2FtcGxlUmF0ZShBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkpOwogICAgIGluaXRpYWxpemVEZWZhdWx0Tm9k
ZU9wdGlvbnMoMiwgQ2hhbm5lbENvdW50TW9kZTo6RXhwbGljaXQsIENoYW5uZWxJbnRlcnByZXRh
dGlvbjo6U3BlYWtlcnMpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkF1ZGlvRGVzdGluYXRpb25Ob2RlIGlzIG5vdCBpbml0aWFsaXplZCJfcyB9
KTsKIAogICAgIGF1dG8gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8gV1RGOjpudWxsb3B0IDogbWFrZU9w
dGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRo
ZSBhdWRpbyBkZXZpY2UiX3MgfSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNz
ID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOwogICAg
IH07CiAKICAgICBtX3dhc0Rlc3RpbmF0aW9uU3RhcnRlZCA9IHRydWU7CkBAIC0xNzMsNyArMTcz
LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZShDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGkKICAgICB9CiAgICAgbV93YXNEZXN0aW5hdGlv
blN0YXJ0ZWQgPSB0cnVlOwogICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0KGRpc3BhdGNoVG9SZW5k
ZXJUaHJlYWRGdW5jdGlvbigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3VjY2VzcyA/IFdURjo6bnVsbG9wdCA6IG1ha2VPcHRpb25hbChFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdGFydCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0p
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IHN0ZDo6bnVsbG9wdCA6IHN0
ZDo6bWFrZV9vcHRpb25hbChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0
byBzdGFydCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKICAgICB9KTsKIH0KIApAQCAtMTg5LDcg
KzE4OSw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0CiAKICAgICBtX3dhc0Rlc3RpbmF0aW9u
U3RhcnRlZCA9IGZhbHNlOwogICAgIG1fZGVzdGluYXRpb24tPnN0b3AoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBXVEY6Om51bGxvcHQgOiBtYWtl
T3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gc3RvcCB0
aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2Vz
cyA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdG9wIHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOwogICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBlNWU0Nzg1OGEwMTYwMmJh
NjgyMjQxMjQxODIxZDdjODUyY2VmYTVmLi44Y2YxNDg5M2VjNWMzZGVmYTRkOTBlMDhhNTRiM2Qz
ZmQwZGYwNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM2LDcgKzM2LDcgQEAg
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxs
YmFjayB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUpOwogcHVibGljOgotICAgIGV4cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmLCBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZSA9IFdURjo6bnVsbG9w
dCk7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dCYsIE9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gc3RkOjpudWxsb3B0KTsKICAgICB+RGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKICAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBhZWZlMmE4NDM2ZDM2NWUxODY4
MTMyNjdlMzhhYzg2MTc0YmJmZWY1Li43Y2JhNDFjOTNjMzdiYmRmYWI2MDA5NDdjMTgxMzEwNTIy
YjFhNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0xNDEsMTIgKzE0MSwx
MiBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbAogICAgICAgICB3b3JrbGV0UHJveHktPnBvc3RU
YXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFtvZmZUaHJlYWRSZW5kZXJpbmcgPSBXVEZN
b3ZlKG9mZlRocmVhZFJlbmRlcmluZyldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIG9mZlRocmVhZFJlbmRlcmluZygpOwogICAgICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgbGltaXQg
dGhlIG51bWJlciBvZiB0aHJlYWRzIHdlIGNyZWF0ZSBmb3Igb2ZmbGluZSBhdWRpby4KICAgICBt
X3JlbmRlclRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJvZmZsaW5lIHJlbmRlcmVyIiwgV1RGTW92
ZShvZmZUaHJlYWRSZW5kZXJpbmcpLCBUaHJlYWRUeXBlOjpBdWRpbywgVGhyZWFkOjpRT1M6OkRl
ZmF1bHQpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogYXV0byBPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnJlbmRlck9uQXVkaW9UaHJlYWQoKSAtPiBSZW5kZXJSZXN1bHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNp
b25zQ2xpZW50SW5wdXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCmluZGV4IGRiYmVlMzNiMzc0ZTNiZTJl
NTAxNWRlNzVlYTBmNjM4ZDRhMTc3OTUuLjlkZmJjZmE1NmY0MWUxOTE1ZmM5OTVmNGZhNDMwN2I0
NzA0NmU3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaApA
QCAtNTMsMTMgKzUzLDEzIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dElucHV0cz4gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wCiAgICAgT3B0aW9uYWw8
U3RyaW5nPiBhcHBpZDsKICAgICBkZWNvZGVyID4+IGFwcGlkOwogICAgIGlmICghYXBwaWQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmVzdWx0LmFwcGlkID0gV1RGTW92ZSgqYXBwaWQpOwogCiAgICAgT3B0aW9uYWw8Ym9v
bD4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogICAgIGRlY29kZXIgPj4gZ29vZ2xlTGVnYWN5
QXBwaWRTdXBwb3J0OwogICAgIGlmICghZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC5nb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQgPSBXVEZNb3ZlKCpnb29nbGVMZWdhY3lB
cHBpZFN1cHBvcnQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmNwcAppbmRleCAxYzBjMDQxZWNiMzdlOTE4MTY2YTVhYjNlYzA0ZDllZGZhYjVl
MGU5Li4wYmYyM2YwMjg1NmI4MDA3NWFkYzZhYzA5ZGRlNzRlMWVmMzgzYWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIFJlZjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
Y3JlYXRlKGNvbnN0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2VyaGFuZGxlQnVmZmVyOwog
ICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHVzZXJoYW5kbGVCdWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1c2VySGFuZGxlLnNpemUo
KSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwg
cmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRh
KCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0
dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciks
IFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJh
d0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNh
dG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpj
cmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhh
bmRsZUJ1ZmZlciksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxB
cnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmlu
ZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJvbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhLmgKaW5kZXggMjc2NDJlOGJiMjU0NDY3ZWQ1NTgyNDE5MjgzYjY5N2YzNDViNmFhYi4u
NjFhMWJiYjAyNGE2ZmE1MDMxYmMxMDk0YjgyM2Q4MTU3Zjc2NGViYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhLmgKQEAgLTEyMSw1MSArMTIxLDUxIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JSZXNw
b25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsKICAgICBkZWNvZGVyID4+IGlzRW1wdHk7CiAgICAg
aWYgKCFpc0VtcHR5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc0VtcHR5LnZhbHVlKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAKICAgICByZXN1bHQucmF3SWQgPSBkZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVy
KTsKICAgICBpZiAoIXJlc3VsdC5yYXdJZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlzQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgZGVjb2RlciA+PiBpc0F1dGhlbnRp
Y2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOwogICAgIGlmICghaXNBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSA9IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UudmFsdWUoKTsKIAog
ICAgIGlmIChyZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgewogICAg
ICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBkZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVy
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICByZXN1bHQuYXV0aGVudGljYXRvckRh
dGEgPSBkZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC5hdXRoZW50
aWNhdG9yRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJlc3VsdC5zaWduYXR1cmUgPSBkZWNvZGVBcnJheUJ1ZmZl
cihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC5zaWduYXR1cmUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxPcHRpb25hbDxib29sPj4gYXBwaWQ7CiAgICAgZGVjb2RlciA+PiBhcHBpZDsKICAgICBpZiAo
IWFwcGlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFwcGlkKTsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7CiAgICAgZGVjb2RlciA+PiBoYXNVc2VySGFuZGxl
OwogICAgIGlmICghaGFzVXNlckhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoISpoYXNVc2VySGFuZGxlKQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgcmVzdWx0LnVzZXJIYW5kbGUgPSBkZWNvZGVB
cnJheUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC51c2VySGFuZGxlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LmgKaW5kZXggYmJlOTIyMTA2NzM3YmRlYzMzMWJhODY4YmU3YWFmZDdkNGQwYjJlMy4uNzI4NDA2
NzQ5MzdmMjk0ZmIzMjVlYzZhODg1NjZiODlmMmZkMDI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zLmgKQEAgLTEwMSw5ICsxMDEsOSBAQCBPcHRpb25hbDxQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzPiBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYQogewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFt
ZXRlcnMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsZykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTIxLDE3ICsxMjEsMTcgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPiBQdWIKICAg
ICBPcHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNhdG9yQXR0YWNobWVudD4+IGF1dGhlbnRpY2F0
b3JBdHRhY2htZW50OwogICAgIGRlY29kZXIgPj4gYXV0aGVudGljYXRvckF0dGFjaG1lbnQ7CiAg
ICAgaWYgKCFhdXRoZW50aWNhdG9yQXR0YWNobWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuYXV0aGVudGlj
YXRvckF0dGFjaG1lbnQgPSBXVEZNb3ZlKCphdXRoZW50aWNhdG9yQXR0YWNobWVudCk7CiAKICAg
ICBPcHRpb25hbDxib29sPiByZXF1aXJlUmVzaWRlbnRLZXk7CiAgICAgZGVjb2RlciA+PiByZXF1
aXJlUmVzaWRlbnRLZXk7CiAgICAgaWYgKCFyZXF1aXJlUmVzaWRlbnRLZXkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LnJlcXVpcmVSZXNpZGVudEtleSA9ICpyZXF1aXJlUmVzaWRlbnRLZXk7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyVmVyaWZpY2F0aW9uKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0xNTAsNDcgKzE1MCw0NyBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
OgogewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgcmVzdWx0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJwLmlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5ycC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5ycC5pY29uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyLmlkVmVj
dG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyLmRpc3BsYXlOYW1l
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyLm5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuaWNvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucHViS2V5Q3JlZFBhcmFtcykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxP
cHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAgZGVjb2RlciA+PiB0aW1lb3V0OwogICAg
IGlmICghdGltZW91dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudGltZW91dCA9IFdURk1vdmUoKnRpbWVvdXQp
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJp
YT4+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAgZGVjb2RlciA+PiBhdXRoZW50aWNhdG9y
U2VsZWN0aW9uOwogICAgIGlmICghYXV0aGVudGljYXRvclNlbGVjdGlvbikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1
bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbiA9IFdURk1vdmUoKmF1dGhlbnRpY2F0b3JTZWxlY3Rp
b24pOwogCiAgICAgT3B0aW9uYWw8QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZT4gYXR0
ZXN0YXRpb247CiAgICAgZGVjb2RlciA+PiBhdHRlc3RhdGlvbjsKICAgICBpZiAoIWF0dGVzdGF0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJlc3VsdC5hdHRlc3RhdGlvbiA9IFdURk1vdmUoKmF0dGVzdGF0aW9uKTsK
IAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElu
cHV0cz4+IGV4dGVuc2lvbnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNpb25zOwogICAgIGlmICgh
ZXh0ZW5zaW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdURk1vdmUoKmV4dGVuc2lv
bnMpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaApp
bmRleCA5YzViNTFjYWMzZjRkNzQ5MzM1ZjVhYTRhYWQwZGQwZDQ2ZTE4NTJiLi4zMmJiNzI4YWJl
ODE2Njk1MmNkNTk3NTFjY2E4ZDk0ZjhjNmRmZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvci5oCkBAIC01NywxMSArNTcsMTEgQEAgT3B0aW9uYWw8UHVibGljS2V5Q3JlZGVudGlhbERl
c2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUoRGUKIHsKICAg
ICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aWRWZWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zcG9ydHMp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucy5oCmluZGV4IGNlMTQwODQxN2I3OTBjNWJkOWQ1ZjFlNzI0ZGI0ZmE1Y2FiNWUzNzcu
LmVhMjUyYTRmMzM1YTYyNDQzZjFiYmE1YjhlZTA3YmVmOTcxZWY3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaApAQCAtNjYsMjQgKzY2LDI0IEBAIE9wdGlvbmFsPFB1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zOjpkCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB0aW1lb3V0Owog
ICAgIGRlY29kZXIgPj4gdGltZW91dDsKICAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0
LnRpbWVvdXQgPSBXVEZNb3ZlKCp0aW1lb3V0KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnJwSWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsbG93Q3Jl
ZGVudGlhbHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50
PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNlclZlcmlmaWNhdGlvbjsKICAg
ICBpZiAoIXVzZXJWZXJpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJWZXJpZmljYXRpb24g
PSBXVEZNb3ZlKCp1c2VyVmVyaWZpY2F0aW9uKTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lvbnM7CiAgICAgZGVj
b2RlciA+PiBleHRlbnNpb25zOwogICAgIGlmICghZXh0ZW5zaW9ucykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
ZXh0ZW5zaW9ucyA9IFdURk1vdmUoKmV4dGVuc2lvbnMpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1h
bmQuY3BwCmluZGV4IDk1OGIzMjc2Nzg1YjI4NjA4Zjc1OTFiYzI2ZjI3NWQ2NzEwZTI4YzIuLjcz
ZDI2M2ZjMjJjOTFlZDAzZDFmOTNiNjI4ZjBmODg3YzM1Y2E0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNwcApAQCAtNTAs
NyArNTAsNyBAQCB1aW50MTZfdCBwYXJzZU1lc3NhZ2VMZW5ndGgoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBtZXNzYWdlLCBzaXplX3Qgb2Zmc2V0KQogT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVD
b21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2Up
CiB7CiAgICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpIDwga0FwZHVNaW5IZWFkZXIgfHwgbWVzc2FnZS5z
aXplKCkgPiBrQXBkdU1heExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ4X3QgY2xhID0gbWVzc2FnZVsw
XTsKICAgICB1aW50OF90IGlucyA9IG1lc3NhZ2VbMV07CkBAIC02NywxMiArNjcsMTIgQEAgT3B0
aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIG1lc3MKICAgICAvLyBJbnZhbGlkIGVuY29kaW5nIHNpemVzLgogICAg
IGNhc2Uga0FwZHVNaW5IZWFkZXIgKyAxOgogICAgIGNhc2Uga0FwZHVNaW5IZWFkZXIgKyAyOgot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIC8vIE5vIGRhdGEgcHJlc2VudDsgcmVzcG9uc2UgZXhwZWN0ZWQuCiAgICAgY2FzZSBr
QXBkdU1pbkhlYWRlciArIDM6CiAgICAgICAgIC8vIEZpZnRoIGJ5dGUgbXVzdCBiZSAwLgogICAg
ICAgICBpZiAobWVzc2FnZVs0XSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXNwb25zZUxlbmd0aCA9
IHBhcnNlTWVzc2FnZUxlbmd0aChtZXNzYWdlLCBrQXBkdUNvbW1hbmRMZW5ndGhPZmZzZXQpOwog
ICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlcmUgcmVzcG9uc2UgbGVuZ3RoIG9mIDB4MDAwMCBj
b3JyZXNwb25kcyB0byA2NTUzNgogICAgICAgICAvLyBhcyBkZWZpbmVkIGluIElTTzc4MTYtNC4K
QEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVh
dGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3MKICAgICBkZWZhdWx0Ogog
ICAgICAgICAvLyBGaWZ0aCBieXRlIG11c3QgYmUgMC4KICAgICAgICAgaWYgKG1lc3NhZ2VbNF0p
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcGFyc2VNZXNzYWdlTGVuZ3Ro
KG1lc3NhZ2UsIGtBcGR1Q29tbWFuZExlbmd0aE9mZnNldCk7CiAKICAgICAgICAgaWYgKG1lc3Nh
Z2Uuc2l6ZSgpID09IGRhdGFMZW5ndGggKyBrQXBkdUNvbW1hbmREYXRhT2Zmc2V0KSB7CkBAIC05
OCw3ICs5OCw3IEBAIE9wdGlvbmFsPEFwZHVDb21tYW5kPiBBcGR1Q29tbWFuZDo6Y3JlYXRlRnJv
bU1lc3NhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzCiAgICAgICAgICAgICBpZiAoIXJl
c3BvbnNlTGVuZ3RoKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlTGVuZ3RoID0ga0FwZHVNYXhS
ZXNwb25zZUxlbmd0aDsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Fw
ZHUvQXBkdVJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBk
dS9BcGR1UmVzcG9uc2UuY3BwCmluZGV4IDRlYjc0NzViMjJmNWIxYjUzMGEzNTllY2U1NTA3ZjJk
MmM0YWY2MzguLjkzYTVmYWFkNGMxNWQ1NWRjYjc3ZjdlODJlODA0MDAzMzk5OGI3MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9u
c2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIE9wdGlvbmFsPEFwZHVSZXNwb25zZT4gQXBkdVJlc3Bv
bnNlOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhCiB7CiAgICAg
Ly8gSW52YWxpZCBtZXNzYWdlIHNpemUsIGRhdGEgaXMgYXBwZW5kZWQgYnkgc3RhdHVzIGJ5dGUu
CiAgICAgaWYgKGRhdGEuc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQxNl90IHN0YXR1c0J5dGVz
ID0gZGF0YVtkYXRhLnNpemUoKSAtIDJdIDw8IDg7CiAgICAgc3RhdHVzQnl0ZXMgfD0gZGF0YVtk
YXRhLnNpemUoKSAtIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9jYm9yL0NCT1JSZWFkZXIuY3BwCmluZGV4IDU5ZDZjNDIxMTEyNGJhNDhmZWQyMzgxMTk1Yjhh
ZjEzZjJlMjg2OGMuLmVlNTgzMjBhZTM4ZTlhMTljNDI2ZDlkNmRiZjBhYTc2N2Q3M2UzYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlJlYWRl
ci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpy
ZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9yQ29kZU8KICAgICAgICAg
KmVycm9yQ29kZU91dCA9IHJlYWRlci5nZXRFcnJvckNvZGUoKTsKIAogICAgIGlmIChyZWFkZXIu
Z2V0RXJyb3JDb2RlKCkgIT0gRGVjb2RlckVycm9yOjpDQk9STm9FcnJvcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gZGVjb2RlZENib3I7CiB9CiAKQEAgLTk5LDEyICs5OSwxMiBAQCBPcHRpb25hbDxDQk9SVmFs
dWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCkKIHsKICAgICBp
ZiAobWF4TmVzdGluZ0xldmVsIDwgMCB8fCBtYXhOZXN0aW5nTGV2ZWwgPiBrQ0JPUk1heERlcHRo
KSB7CiAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpUb29NdWNoTmVzdGluZzsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBpZiAoIWNhbkNvbnN1bWUoMSkpIHsKICAgICAgICAgbV9lcnJvckNv
ZGUgPSBEZWNvZGVyRXJyb3I6OkluY29tcGxldGVDQk9SRGF0YTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBj
b25zdCB1aW50OF90IGluaXRpYWxCeXRlID0gKm1faXQrKzsKQEAgLTExMyw3ICsxMTMsNyBAQCBP
cHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdM
ZXZlbCkKIAogICAgIHVpbnQ2NF90IHZhbHVlOwogICAgIGlmICghcmVhZFZhcmlhZGljTGVuZ3Ro
SW50ZWdlcihhZGRpdGlvbmFsSW5mbywgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAobWFqb3Jf
dHlwZSkgewogICAgIGNhc2UgQ0JPUlZhbHVlOjpUeXBlOjpVbnNpZ25lZDoKQEAgLTEzNSw3ICsx
MzUsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1IoaW50IG1h
eE5lc3RpbmdMZXZlbCkKICAgICB9CiAKICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6
VW5zdXBwb3J0ZWRNYWpvclR5cGU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIENCT1JSZWFkZXI6OnJlYWRWYXJpYWRpY0xlbmd0
aEludGVnZXIodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3QqIHZhbHVlKQpAQCAtMTc4
LDcgKzE3OCw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVU
b05lZ2F0aXZlKHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkpIHsKICAgICAg
ICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFuZ2VJbnRlZ2VyVmFsdWU7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogICAgIHJldHVybiBDQk9SVmFsdWUoLXN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVl
KSAtIDEpOwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJl
YWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2
YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFu
Z2VJbnRlZ2VyVmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBDQk9SVmFsdWUoc3RhdGljX2Nh
c3Q8aW50NjRfdD4odmFsdWUpKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBPcHRpb25hbDxDQk9S
VmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTaW1wbGVWYWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZv
LCB1aW50NjRfdAogICAgIC8vIEZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQuCiAgICAgaWYgKGFkZGl0aW9uYWxJbmZvID4gMjQgJiYgYWRkaXRpb25hbEluZm8gPCAyOCkg
ewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VW5zdXBwb3J0ZWRGbG9hdGlu
Z1BvaW50VmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVNTRVJUKHZhbHVlIDw9IDI1NXUpOwpAQCAt
MjExLDE0ICsyMTEsMTQgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU2lt
cGxlVmFsdWUodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3QKICAgICB9CiAKICAgICBt
X2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VW5zdXBwb3J0ZWRTaW1wbGVWYWx1ZTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFN0cmluZyh1aW50NjRfdCBudW1CeXRlcykK
IHsKICAgICBpZiAoIWNhbkNvbnN1bWUobnVtQnl0ZXMpKSB7CiAgICAgICAgIG1fZXJyb3JDb2Rl
ID0gRGVjb2RlckVycm9yOjpJbmNvbXBsZXRlQ0JPUkRhdGE7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVNT
RVJUKG51bUJ5dGVzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwpAQCAt
MjI5LDE0ICsyMjksMTQgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU3Ry
aW5nKHVpbnQ2NF90IG51bUJ5dGVzKQogICAgIC8vIE5vdCB0byBjb25mdXNlIGl0IHdpdGggYW4g
YWN0dWFsIGVtcHR5IFdURlN0cmluZy4KICAgICBpZiAoIW51bUJ5dGVzIHx8IGhhc1ZhbGlkVVRG
OEZvcm1hdChjYm9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNi
b3JTdHJpbmcpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZEJ5dGVzKHVp
bnQ2NF90IG51bUJ5dGVzKQogewogICAgIGlmICghY2FuQ29uc3VtZShudW1CeXRlcykpIHsKICAg
ICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29tcGxldGVDQk9SRGF0YTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBCeXRlcyBjYm9yQnl0ZVN0cmluZzsKQEAgLTI1Myw3ICsyNTMsNyBAQCBP
cHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRDQk9SQXJyYXkodWludDY0X3QgbGVu
Z3RoLCBpbnQgbWF4TmVzdGluZ0xldgogICAgIHdoaWxlIChsZW5ndGgtLSA+IDApIHsKICAgICAg
ICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBjYm9yRWxlbWVudCA9IGRlY29kZUNCT1IobWF4TmVzdGlu
Z0xldmVsIC0gMSk7CiAgICAgICAgIGlmICghY2JvckVsZW1lbnQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgY2JvckFycmF5LmFwcGVuZChXVEZNb3ZlKGNib3JFbGVtZW50LnZhbHVlKCkpKTsKICAgICB9
CiAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJheSkpOwpAQCAtMjY2LDE1ICsy
NjYsMTUgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQ0JPUk1hcCh1aW50
NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwKICAgICAgICAgT3B0aW9uYWw8Q0JPUlZh
bHVlPiBrZXkgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwogICAgICAgICBPcHRp
b25hbDxDQk9SVmFsdWU+IHZhbHVlID0gZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2ZWwgLSAxKTsK
ICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gT25s
eSBDQk9SIG1hcHMgd2l0aCBpbnRlZ2VyIG9yIHN0cmluZyB0eXBlIGtleXMgYXJlIGFsbG93ZWQu
CiAgICAgICAgIGlmICgha2V5LT5pc1N0cmluZygpICYmICFrZXktPmlzSW50ZWdlcigpKSB7CiAg
ICAgICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb3JyZWN0TWFwS2V5VHlw
ZTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hlY2tEdXBsaWNhdGVLZXko
a2V5LnZhbHVlKCksIGNib3JNYXApIHx8ICFjaGVja091dE9mT3JkZXJLZXkoa2V5LnZhbHVlKCks
IGNib3JNYXApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgY2Jvck1hcC5lbXBsYWNlKHN0ZDo6bWFr
ZV9wYWlyKFdURk1vdmUoa2V5LnZhbHVlKCkpLCBXVEZNb3ZlKHZhbHVlLnZhbHVlKCkpKSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NC
T1JXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JX
cml0ZXIuY3BwCmluZGV4IDc2OWIyNzI3MWIwN2RlZjY3Y2JiZjBhMTI5YWQ5NGM1MTQyYTk3Yzgu
LjhjZWY0ZWFiY2M5ZjMwZTZlYjgwYjFlYTY4MWMyODUzYmIzNjMxMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3JpdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRlci5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDQk9SV3JpdGVyOjp3cml0ZShj
b25zdCBDQk9SVmFsdWUmIG5vZGUsIHNpemVfdCBtYXhOZXMKICAgICBDQk9SV3JpdGVyIHdyaXRl
cigmY2Jvcik7CiAgICAgaWYgKHdyaXRlci5lbmNvZGVDQk9SKG5vZGUsIHN0YXRpY19jYXN0PGlu
dD4obWF4TmVzdGluZ0xldmVsKSkpCiAgICAgICAgIHJldHVybiBjYm9yOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ0JPUldyaXRlcjo6
Q0JPUldyaXRlcihWZWN0b3I8dWludDhfdD4qIGNib3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIu
aAppbmRleCBhODk3NmUwYzkwNDhjM2JhMzgyMWJjZmRjY2QyZTY0NTIwOWU2ZDc4Li43OWYyYThh
ZjlmNzg1ZTVlNmZmZjBmMGFmZmI1NTQwZWJlNzMwZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVy
dGVyLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBzdHJ1Y3QgUGluUGFyYW1ldGVycyB7CiAvLyBTZXJp
YWxpemVzIE1ha2VDcmVkZW50aWFsIHJlcXVlc3QgcGFyYW1ldGVyIGludG8gQ0JPUiBlbmNvZGVk
IG1hcCB3aXRoCiAvLyBpbnRlZ2VyIGtleXMgYW5kIENCT1IgZW5jb2RlZCB2YWx1ZXMgYXMgZGVm
aW5lZCBieSB0aGUgQ1RBUCBzcGVjLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNz
L2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3Rv
Y29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhdXRoZW50aWNhdG9yTWFrZUNyZWRlbnRpYWwKLVdF
QkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RB
c0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlv
bnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIE9wdGlvbmFsPFBpblBhcmFtZXRlcnM+
IHBpbiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5j
b2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFz
aCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYsIEF1
dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5
LCBzdGQ6Om9wdGlvbmFsPFBpblBhcmFtZXRlcnM+ID0gc3RkOjpudWxsb3B0KTsKIAogLy8gU2Vy
aWFsaXplcyBHZXRBc3NlcnRpb24gcmVxdWVzdCBwYXJhbWV0ZXIgaW50byBDQk9SIGVuY29kZWQg
bWFwIHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNvZGVkIHZhbHVlcyBhcyBkZWZp
bmVkIGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3Mv
Zmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9j
b2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JHZXRBc3NlcnRpb24KLVdFQkNP
UkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9S
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVz
ZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIE9wdGlvbmFsPFBpblBhcmFtZXRlcnM+IHBpbiA9
IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gZW5jb2RlR2V0
QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0
IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYsIEF1dGhlbnRpY2F0
b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5LCBzdGQ6Om9w
dGlvbmFsPFBpblBhcmFtZXRlcnM+ID0gc3RkOjpudWxsb3B0KTsKIAogLy8gUmVwcmVzZW50cyBD
VEFQIHJlcXVlc3RzIHdpdGggZW1wdHkgcGFyYW1ldGVycywgaW5jbHVkaW5nCiAvLyBBdXRoZW50
aWNhdG9yR2V0SW5mbywgQXV0aGVudGljYXRvclJlc2V0IGFuZCBBdXRoZW50aWNhdG9yR2V0TmV4
dEFzc2VydGlvbiBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4
IDg0YzE3Yjc3MzZjODVkNjE3ZWU5MmZjZmMyYjY4Mjk5ODMwMWQ1MjEuLjlhMjE1NTM5ZmZjOGVl
NDliMTg2OTg0NzY0N2EyNGI5YjIyMjE3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVy
LmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIHN0YXRpYyBQcm90b2NvbFZlcnNpb24gY29udmVydFN0
cmluZ1RvUHJvdG9jb2xWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIE9wdGlvbmFsPGNi
b3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBp
bkJ1ZmZlcikKIHsKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5n
dGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2Rl
OjprU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIgeyBpbkJ1ZmZlci5k
YXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07CiAgICAgT3B0aW9uYWw8Q0JPUj4gZGVj
b2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZmZXIpOwogICAgIGlmICgh
ZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIGRlY29kZWRSZXNwb25zZTsKIH0KIApAQCAtMjAyLDE2ICsyMDIsMTYgQEAgT3B0aW9uYWw8
QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29u
c3QgVmVjdG9yPHVpbnQKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1h
cChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnN0IGF1dG8mIHJl
c3BvbnNlTWFwID0gZGVjb2RlZE1hcC0+Z2V0TWFwKCk7CiAKICAgICBhdXRvIGl0ID0gcmVzcG9u
c2VNYXAuZmluZChDQk9SKDEpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNBcnJheSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0ZFNldDxQcm90b2NvbFZlcnNpb24+IHBy
b3RvY29sVmVyc2lvbnM7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJzaW9uIDogaXQtPnNlY29u
ZC5nZXRBcnJheSgpKSB7CiAgICAgICAgIGlmICghdmVyc2lvbi5pc1N0cmluZygpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgYXV0byBwcm90b2NvbCA9IGNvbnZlcnRTdHJpbmdUb1Byb3RvY29sVmVy
c2lvbih2ZXJzaW9uLmdldFN0cmluZygpKTsKICAgICAgICAgaWYgKHByb3RvY29sID09IFByb3Rv
Y29sVmVyc2lvbjo6a1Vua25vd24pIHsKQEAgLTIyMCwyNiArMjIwLDI2IEBAIE9wdGlvbmFsPEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0
IFZlY3Rvcjx1aW50CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXByb3RvY29sVmVyc2lvbnMu
aW5zZXJ0KHByb3RvY29sKS5zZWNvbmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgaWYgKHByb3Rv
Y29sVmVyc2lvbnMuZW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KDMpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNC
eXRlU3RyaW5nKCkgfHwgaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpICE9IGFhZ3Vp
ZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2UgcmVzcG9uc2Uo
V1RGTW92ZShwcm90b2NvbFZlcnNpb25zKSwgVmVjdG9yPHVpbnQ4X3Q+KGl0LT5zZWNvbmQuZ2V0
Qnl0ZVN0cmluZygpKSk7CiAKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUigyKSk7CiAg
ICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQtPnNlY29u
ZC5pc0FycmF5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNp
b25zOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6IGl0LT5zZWNvbmQuZ2V0
QXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKCFleHRlbnNpb24uaXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbi5n
ZXRTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTI1MCwxMiArMjUwLDEyIEBAIE9wdGlvbmFsPEF1
dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0
IFZlY3Rvcjx1aW50CiAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoNCkpOwogICAgIGlm
IChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkgewogICAgICAgICBpZiAoIWl0LT5zZWNvbmQuaXNN
YXAoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb25zdCBhdXRvJiBvcHRpb25NYXAgPSBpdC0+c2Vj
b25kLmdldE1hcCgpOwogICAgICAgICBhdXRvIG9wdGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQo
Q0JPUihrUGxhdGZvcm1EZXZpY2VNYXBLZXkpKTsKICAgICAgICAgaWYgKG9wdGlvbk1hcEl0ICE9
IG9wdGlvbk1hcC5lbmQoKSkgewogICAgICAgICAgICAgaWYgKCFvcHRpb25NYXBJdC0+c2Vjb25k
LmlzQm9vbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgb3B0aW9ucy5zZXRJ
c1BsYXRmb3JtRGV2aWNlKG9wdGlvbk1hcEl0LT5zZWNvbmQuZ2V0Qm9vbCgpKTsKICAgICAgICAg
fQpAQCAtMjYzLDcgKzI2Myw3IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9u
c2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgICAgIG9w
dGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQoQ0JPUihrUmVzaWRlbnRLZXlNYXBLZXkpKTsKICAg
ICAgICAgaWYgKG9wdGlvbk1hcEl0ICE9IG9wdGlvbk1hcC5lbmQoKSkgewogICAgICAgICAgICAg
aWYgKCFvcHRpb25NYXBJdC0+c2Vjb25kLmlzQm9vbCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgb3B0aW9ucy5zZXRTdXBwb3J0c1Jlc2lkZW50S2V5KG9wdGlvbk1hcEl0LT5z
ZWNvbmQuZ2V0Qm9vbCgpKTsKICAgICAgICAgfQpAQCAtMjcxLDcgKzI3MSw3IEBAIE9wdGlvbmFs
PEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNv
bnN0IFZlY3Rvcjx1aW50CiAgICAgICAgIG9wdGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQoQ0JP
UihrVXNlclByZXNlbmNlTWFwS2V5KSk7CiAgICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRp
b25NYXAuZW5kKCkpIHsKICAgICAgICAgICAgIGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jv
b2woKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIG9wdGlvbnMuc2V0VXNlclBy
ZXNlbmNlUmVxdWlyZWQob3B0aW9uTWFwSXQtPnNlY29uZC5nZXRCb29sKCkpOwogICAgICAgICB9
CkBAIC0yNzksNyArMjc5LDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25z
ZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAgICAgb3B0
aW9uTWFwSXQgPSBvcHRpb25NYXAuZmluZChDQk9SKGtVc2VyVmVyaWZpY2F0aW9uTWFwS2V5KSk7
CiAgICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRpb25NYXAuZW5kKCkpIHsKICAgICAgICAg
ICAgIGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jvb2woKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIGlmIChvcHRpb25NYXBJdC0+c2Vjb25kLmdldEJvb2woKSkKICAgICAg
ICAgICAgICAgICBvcHRpb25zLnNldFVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtT
dXBwb3J0ZWRBbmRDb25maWd1cmVkKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBPcHRpb25hbDxBdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25zdCBW
ZWN0b3I8dWludAogICAgICAgICBvcHRpb25NYXBJdCA9IG9wdGlvbk1hcC5maW5kKENCT1Ioa0Ns
aWVudFBpbk1hcEtleSkpOwogICAgICAgICBpZiAob3B0aW9uTWFwSXQgIT0gb3B0aW9uTWFwLmVu
ZCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbk1hcEl0LT5zZWNvbmQuaXNCb29sKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAob3B0aW9uTWFwSXQtPnNlY29uZC5n
ZXRCb29sKCkpCiAgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXRDbGllbnRQaW5BdmFpbGFiaWxp
dHkoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBpbkF2YWlsYWJpbGl0eTo6
a1N1cHBvcnRlZEFuZFBpblNldCk7CkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8QXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVj
dG9yPHVpbnQKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig1KSk7CiAgICAgaWYgKGl0
ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQtPnNlY29uZC5pc1Vuc2ln
bmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXNwb25zZS5zZXRNYXhNc2dTaXplKGl0LT5z
ZWNvbmQuZ2V0VW5zaWduZWQoKSk7CiAgICAgfQpAQCAtMzExLDEyICszMTEsMTIgQEAgT3B0aW9u
YWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2Uo
Y29uc3QgVmVjdG9yPHVpbnQKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig2KSk7CiAg
ICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQtPnNlY29u
ZC5pc0FycmF5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8dWludDhfdD4gc3VwcG9y
dGVkUGluUHJvdG9jb2xzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3RvY29sIDogaXQt
PnNlY29uZC5nZXRBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoIXByb3RvY29sLmlzVW5zaWdu
ZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHN1cHBvcnRlZFBpblByb3Rv
Y29scy5hcHBlbmQocHJvdG9jb2wuZ2V0VW5zaWduZWQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2Uu
Y3BwCmluZGV4IGIxMmRhZWZlZTE0ZTUxMmI0ZmY0YTc0YTEyNjEwNDFkNzM1OWQ2ZDguLjA1NTNm
Y2IzZDAxZDBkMjQwNmM1NzU4Mzg4N2UzM2E4ZDA1Y2RhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcApAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgZmlkbyB7CiBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4g
Rmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpY2VD
b21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKICAgICBpZiAoZGF0
YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprUGluZzoKQEAgLTUwLDMwICs1MCwzMCBA
QCBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJf
dCBjaGFubmVsSWQsIEZpZG9IaWREZXZpYwogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6
OmtNc2c6CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Nib3I6IHsKICAgICAgICAg
aWYgKGRhdGEuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAog
ICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYW5jZWw6CiAgICAgY2FzZSBGaWRvSGlk
RGV2aWNlQ29tbWFuZDo6a1dpbms6IHsKICAgICAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29t
bWFuZDo6a0xvY2s6IHsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDEgfHwgZGF0YVswXSA+
IGtIaWRNYXhMb2NrU2Vjb25kcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQ6IHsKICAgICAgICAgaWYgKGRhdGEu
c2l6ZSgpICE9IDgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
Rmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmU6CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNl
Q29tbWFuZDo6a0Vycm9yOgogICAgICAgICBpZiAoZGF0YS5zaXplKCkgIT0gMSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShjaGFubmVsSWQsIHR5cGUsIGRh
dGEpOwpAQCAtODQsMTIgKzg0LDEyIEBAIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBGaWRvSGlk
TWVzc2FnZTo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZlY3Rvcjx1CiB7CiAgICAg
c2l6ZV90IHJlbWFpbmluZ1NpemUgPSAwOwogICAgIGlmIChzZXJpYWxpemVkRGF0YS5zaXplKCkg
PiBrSGlkUGFja2V0U2l6ZSB8fCBzZXJpYWxpemVkRGF0YS5zaXplKCkgPCBrSGlkSW5pdFBhY2tl
dEhlYWRlclNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGluaXRQYWNrZXQgPSBGaWRvSGlkSW5pdFBhY2tl
dDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKHNlcmlhbGl6ZWREYXRhLCAmcmVtYWluaW5nU2l6
ZSk7CiAKICAgICBpZiAoIWluaXRQYWNrZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gRmlkb0hpZE1lc3Nh
Z2UoV1RGTW92ZShpbml0UGFja2V0KSwgcmVtYWluaW5nU2l6ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCmluZGV4IDU4Mzc2NTBkM2JmMjBiYTBi
MmI3MDg4ZGVkOWUwMzM2ZTkwMTRjYjEuLmFkMjg5YmZkY2RjMjUwYzY3ZGE3NmFhYzY1OWE5N2U5
ZDRhZDgwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9QaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4u
Y3BwCkBAIC04MywxMCArODMsMTAgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZVJhd1B1YmxpY0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIHgsIGNvbnN0IFZlY3Rvcjx1aW50OF8KIE9wdGlvbmFs
PENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBTdHJpbmcmIHBpbikKIHsK
ICAgICBpZiAoIWhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhwaW4pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmVz
dWx0ID0gcGluLnV0ZjgoKTsKICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpIDwga01pbkJ5dGVzIHx8
IHJlc3VsdC5sZW5ndGgoKSA+IGtNYXhCeXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0xMTYsMTIgKzExNiwxMiBAQCBPcHRpb25hbDxSZXRyaWVzUmVzcG9uc2U+IFJldHJpZXNS
ZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcgogewogICAgIGF1
dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVyKTsKICAgICBpZiAoIWRl
Y29kZWRNYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgY29uc3QgYXV0byYgcmVzcG9uc2VNYXAgPSBkZWNvZGVkTWFwLT5n
ZXRNYXAoKTsKIAogICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0
aWNfY2FzdDxpbnQ2NF90PihSZXNwb25zZUtleTo6a1JldHJpZXMpKSk7CiAgICAgaWYgKGl0ID09
IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzVW5zaWduZWQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFJldHJpZXNSZXNwb25zZSByZXQ7CiAgICAgcmV0LnJldHJpZXMgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oaXQtPnNlY29uZC5nZXRVbnNpZ25lZCgpKTsKQEAgLTEzNywxMyArMTM3LDEzIEBAIE9w
dGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRSZXNwb25zZTo6cGFyc2Uo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVz
cG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBh
dXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRNYXAtPmdldE1hcCgpOwogCiAgICAgLy8gVGhlIGVw
aGVtZXJhbCBrZXkgaXMgZW5jb2RlZCBhcyBhIENPU0Ugc3RydWN0dXJlLgogICAgIGF1dG8gaXQg
PSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihSZXNwb25z
ZUtleTo6a0tleUFncmVlbWVudCkpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkg
fHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBhdXRvJiBjb3NlS2V5ID0gaXQt
PnNlY29uZC5nZXRNYXAoKTsKIAogICAgIHJldHVybiBwYXJzZUZyb21DT1NFKGNvc2VLZXkpOwpA
QCAtMTYwLDIwICsxNjAsMjAgQEAgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFn
cmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWwKICAgICB9KSkgewog
ICAgICAgICBhdXRvIGl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZShwYWlyLmZpcnN0KSk7CiAg
ICAgICAgIGlmIChpdCA9PSBjb3NlS2V5LmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzSW50ZWdlcigp
IHx8IGl0LT5zZWNvbmQuZ2V0SW50ZWdlcigpICE9IHBhaXIuc2Vjb25kKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgLy8gU2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MTUyI3Nl
Y3Rpb24tMTMuMS4xCiAgICAgY29uc3QgYXV0byYgeEl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1
ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihDT1NFOjp4KSkpOwogICAgIGNvbnN0IGF1dG8mIHlJdCA9
IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oQ09TRTo6eSkpKTsK
ICAgICBpZiAoeEl0ID09IGNvc2VLZXkuZW5kKCkgfHwgeUl0ID09IGNvc2VLZXkuZW5kKCkgfHwg
IXhJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpIHx8ICF5SXQtPnNlY29uZC5pc0J5dGVTdHJpbmco
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGNvbnN0IGF1dG8mIHggPSB4SXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7
CiAgICAgY29uc3QgYXV0byYgeSA9IHlJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKICAgICBh
dXRvIHBlZXJLZXkgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OkVDREgsICJQLTI1NiIsIGVuY29kZVJhd1B1YmxpY0tleSh4LCB5KSwgdHJ1ZSwgQ3J5
cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKTsKICAgICBpZiAoIXBlZXJLZXkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gS2V5QWdyZWVtZW50UmVzcG9uc2UocGVlcktleS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KQEAg
LTIwMywxNyArMjAzLDE3IEBAIE9wdGlvbmFsPFRva2VuUmVzcG9uc2U+IFRva2VuUmVzcG9uc2U6
OnBhcnNlKGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUFFUyYgc2hhcmVkCiB7CiAgICAgYXV0byBk
ZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2Rl
ZE1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBjb25zdCBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRNYXAtPmdldE1h
cCgpOwogCiAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19j
YXN0PGludDY0X3Q+KFJlc3BvbnNlS2V5OjprUGluVG9rZW4pKSk7CiAgICAgaWYgKGl0ID09IHJl
c3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNv
bnN0IGF1dG8mIGVuY3J5cHRlZFRva2VuID0gaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7CiAK
ICAgICBhdXRvIHRva2VuUmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1E
ZWNyeXB0KHsgfSwgc2hhcmVkS2V5LCBlbmNyeXB0ZWRUb2tlbiwgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6UGFkZGluZzo6Tm8pOwogICAgIGlmICh0b2tlblJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBhdXRvIHRva2VuID0gdG9rZW5SZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAK
ICAgICBhdXRvIHRva2VuS2V5ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KHRva2VuLnNpemUo
KSAqIDgsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTYsIFdURk1vdmUodG9rZW4p
LCB0cnVlLCBDcnlwdG9LZXlVc2FnZVNpZ24pOwpAQCAtMjU0LDcgKzI1NCw3IEBAIE9wdGlvbmFs
PFRva2VuUmVxdWVzdD4gVG9rZW5SZXF1ZXN0Ojp0cnlDcmVhdGUoY29uc3QgQ1N0cmluZyYgcGlu
LCBjb25zdCBDcnlwdG9LCiAgICAgLy8gMi4gVXNlIEVDREggYW5kIFNIQS0yNTYgdG8gY29tcHV0
ZSB0aGUgc2hhcmVkIEFFUy1DQkMga2V5LgogICAgIGF1dG8gc2hhcmVkS2V5UmVzdWx0ID0gQ3J5
cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleUVD
Pigqa2V5UGFpci5wcml2YXRlS2V5KSwgcGVlcktleSk7CiAgICAgaWYgKCFzaGFyZWRLZXlSZXN1
bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvLT5hZGRCeXRl
cyhzaGFyZWRLZXlSZXN1bHQtPmRhdGEoKSwgc2hhcmVkS2V5UmVzdWx0LT5zaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWJkMWE5NDk0MDYyZjZmNGMzMGIzYmNlMGQw
MjlkOGM4Njc5Mjk0Li40MTJiMjk1ZTAwN2RiM2EwYWY1YjA2ZDFiMWQwNTc4YWRkMjA0ZWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGFwcGxpYwogc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0
VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblBhcmFtZXRl
ciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKIHsKICAgICBpZiAoa2V5SGFu
ZGxlLnNpemUoKSA+IGtNYXhLZXlIYW5kbGVMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8dWludDhf
dD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa1UyZkNoYWxsZW5nZVBh
cmFtTGVuZ3RoICsga1UyZkFwcGxpY2F0aW9uUGFyYW1MZW5ndGggKyAxICsga2V5SGFuZGxlLnNp
emUoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBpc0NvbnZlcnRpYmxlVG9VMmZTaWduQ29t
bWFuZChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJlcXUKIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZS
ZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGFwcElkID0gcHJvY2Vzc0dv
b2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihyZXF1ZXN0LmV4dGVuc2lvbnMpOwogICAg
IHJldHVybiBjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKCFhcHBJ
ZCA/IHJlcXVlc3QucnAuaWQgOiBhcHBJZCksIGNsaWVudERhdGFIYXNoKTsKQEAgLTExMCw3ICsx
MTAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZlJlZ2lzdGVyQ29t
bWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaQogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
JiByZXF1ZXN0LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYga2V5SGFuZGxl
KQogewogICAgIGlmIChrZXlIYW5kbGUudHlwZSAhPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6
UHVibGljS2V5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlNpZ25Db21tYW5kKHByb2R1
Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gsIGtleUhhbmRsZS5pZFZl
Y3RvciwgdHJ1ZSAvKiBjaGVja09ubHkgKi8pOwogfQpAQCAtMTE4LDcgKzExOCw3IEBAIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5U2lnbkNvbW1hbmQoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+CiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1Uy
ZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgcmVxdWVzdCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNBcHBJZCkKIHsKICAgICBpZiAoIWlzQ29udmVy
dGlibGVUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpc0FwcElkKQog
ICAgICAgICByZXR1cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKHJl
cXVlc3QucnBJZCksIGNsaWVudERhdGFIYXNoLCBrZXlIYW5kbGUsIGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggNWFlMjQ3
OWU3Mzg3ZTYyNGUxOGI2NDhkOTdmZjRmOWYyNjFlZDQ5ZC4uOWFkMTFkNDA4OGY2NjM3N2RiMWRi
YzA5ZGM1MTA1ZTNmOTE2ODBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBTdHJpbmcgRGF0YWJhc2U6
OmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgY29uc3QKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZTo6
ZGV0YWlscygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggaXMgb25seSB1c2VkIGZv
ciBkYXRhYmFzZSBxdW90YSBkZWxlZ2F0ZSBjYWxscywgc28gZmlsZSBkYXRlcyBhcmUgaXJyZWxl
dmFudCBhbmQgbGVmdCB1bmluaXRpYWxpemVkLgotICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMo
c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZUlzb2xhdGVkQ29weSgp
LCBlc3RpbWF0ZWRTaXplKCksIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBy
ZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKSwgZGlz
cGxheU5hbWVJc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVBdXRob3JpemVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcAppbmRleCAyYzlhYTUyYTEwODk1M2U0ODc2ZDQ1ZDBjNGNkOTkyOTVlMjJhMmI0
Li45YWYwMjNhMjBkMjNiMDViN2M4ZWU0OTQ2NTU3YWI1NmMyMjIyMzM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiBEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0
YWJhc2U6OlByb3Bvc2VkRGF0YWJhc2UoRGF0YWJhc2VNYW5hZ2VyJiBtYW5hZ2VyLCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICA6IG1fbWFuYWdlcihtYW5h
Z2VyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luLmlzb2xhdGVkQ29weSgpKQotICAgICwgbV9kZXRh
aWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3Rp
bWF0ZWRTaXplLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkKKyAgICAsIG1fZGV0YWls
cyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1h
dGVkU2l6ZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpCiB7CiAgICAgbV9tYW5hZ2Vy
LmFkZFByb3Bvc2VkRGF0YWJhc2UoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IGZjODE5MmY5
NGUyYWYxNDJhM2M0Y2UwYjUxZmVlZjMyOWVjZjYzNjUuLjU5NGY3ODZiNWVmNTk0M2RiOTk3ZDkw
ZjZkYWUxNzM4OTQwMDU1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBEYXRh
YmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbgogCiAgICAgU3RyaW5nIHBhdGggPSBmdWxsUGF0aEZvckRhdGFi
YXNlKG9yaWdpbiwgbmFtZSwgZmFsc2UpOwogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwgZXhwZWN0ZWRVc2Fn
ZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gRGF0YWJh
c2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdlLCAwLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNw
bGF5TmFtZSwgZXhwZWN0ZWRVc2FnZSwgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VGaWxlU2l6
ZShwYXRoKSwgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUocGF0aCksIFNR
TGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKaW5kZXggZDE0ZWJmYzU3OWNlYTYzODM0YTg3OTNhMzVlZGVjZDU2NDg2OWFlNy4uMmJj
NTllY2UyM2UwNDZjZjIyYmJkODMxYjVjZTY3MjgzZTlkMmNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwo
Y29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBlbHNlIGlmIChtX3JlYWRP
bmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5
TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1f
ZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3IoVmVjdG9yPFNRTFZhbHVl
PiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlz
c2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1f
ZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlX29yKFZlY3RvcjxTUUxWYWx1
ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1p
c3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRl
bWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKaW5k
ZXggZTc1N2ZkMGI3ZTdhNmRkYjhmM2JlYmVjY2MwZmVmOGNiMTFlNmU3Yy4uNzc5MjJjYWNhZTBh
NzM0NjI1MWU2NWZhYzg2NDM1NjcwZjViMjBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKQEAg
LTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9lbXB0eSk7CiAgICAg
ICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPExlZnRWYWx1ZT4obV9pbm5lcikpCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TGVmdFZhbHVlPihtX2lubmVyKS5hZGRyZXNzU3BhY2U7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgYm9vbCBpc1JpZ2h0VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFu
dGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWls
dEluU2VtYW50aWMuaAppbmRleCBmNTA4MDU5ODQ5ZTY2NGI5MTI1MjljOTg2MmIwNDIyYjBlMGM4
ODY3Li4zM2ExMTY4NWU1MmYxMzNlMDRmMWQzM2IzNzc1ODI5ODdjOTBhOTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2Vt
YW50aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xCdWlsdEluU2VtYW50aWMuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNW
R3JvdXBUaHJlYWRJRAogICAgIH07CiAKLSAgICBCdWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9u
IGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFyZ2V0
SW5kZXggPSBXVEY6Om51bGxvcHQpCisgICAgQnVpbHRJblNlbWFudGljKENvZGVMb2NhdGlvbiBs
b2NhdGlvbiwgVmFyaWFibGUgdmFyaWFibGUsIE9wdGlvbmFsPHVuc2lnbmVkPiYmIHRhcmdldElu
ZGV4ID0gc3RkOjpudWxsb3B0KQogICAgICAgICA6IEJhc2VTZW1hbnRpYyhsb2NhdGlvbikKICAg
ICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQogICAgICAgICAsIG1fdGFyZ2V0SW5kZXgoV1RG
TW92ZSh0YXJnZXRJbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0
ZXIuY3BwCmluZGV4IGQ0YTAxMmFlNmQzODJmMjQ5OGM3ZmU2YWUyNzg1ODJlOTA4YmYxODcuLmFh
M2E2OTg0YjYxNmY2NWQwYjBhMDBiZjlmMmI1N2Q0ZmI0MTNhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25X
cml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFs
L1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5h
bWUpCiAgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVCaWFzOwogICAgIGlmIChmdW5j
dGlvbk5hbWUgPT0gIlNhbXBsZUdyYWQiKQogICAgICAgICByZXR1cm4gU2FtcGxlVHlwZTo6U2Ft
cGxlR3JhZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5n
QnVpbGRlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFtZT4mIGFyZ3MsIE1hbmds
ZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJiB0eXBlTmFtZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApp
bmRleCA2Mzk5Y2I1ZmU4OWFiZTg0NDFmY2FhMWNkMWY3NjVmNzA5MWU0MTI2Li43MjFjYmEzMGFj
MTljNWY0NzZhYzJkM2UxMTMwZTRjMTNjZDUxNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKQEAgLTIxOCw3ICsyMTgs
NyBAQCBzdGF0aWMgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIHJlc29sdmVXaXRoUmVm
ZXJlbmNlQ29tcGFyYXRvcihDb2RlTG9jYXRpbwogICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtlVW5pcXVlUmVmPEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBhcmd1bWVu
dFR5cGUuY29weVJlZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIHBhcmFt
ZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2Nh
dGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIFdURk1vdmUoYXJndW1lbnRUeXBlKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVC
bG9jaygpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmV0dXJuVHlwZSksIFN0cmluZygib3BlcmF0
b3I9PSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7Cisg
ICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVj
bGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBX
VEZNb3ZlKHJldHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yPT0iLCBTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwg
UGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogfQogCiBlbnVtIGNsYXNzIEFjY2VwdGFi
aWxpdHkgewpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24oY29uc3QgU3RyCiAgICAg
ICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVXaXRoUmVmZXJlbmNl
Q29tcGFyYXRvcihsb2NhdGlvbiwgdHlwZXNbMF0uZ2V0KCksIHR5cGVzWzFdLmdldCgpLCBpbnRy
aW5zaWNzKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBzdGF0aWMgYm9vbCBjaGVja1NlbWFudGljcyhWZWN0b3I8RW50cnlQ
b2ludEl0ZW0+JiBpbnB1dEl0ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBvdXRwdXRJdGVt
cywgY29uc3QgT3B0aW9uYWw8QVNUOjpFbnRyeVBvaW50VHlwZT4mIGVudHJ5UG9pbnRUeXBlLCBj
b25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQpAQCAtNzM3LDcgKzczNyw3IEBAIGF1dG8gQ2hl
Y2tlcjo6cmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBib29s
IHJlcXVpcmVzTGVmdFZhCiB7CiAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lvbik7CiAgICAg
aWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGdldEluZm8oZXhwcmVzc2lvbiwgcmVxdWly
ZXNMZWZ0VmFsdWUpOwogfQogCkBAIC03NDksNyArNzQ5LDcgQEAgYXV0byBDaGVja2VyOjpnZXRJ
bmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1aXJlc0xlZnRWYWx1ZSkg
LT4gT3AKICAgICBjb25zdCBhdXRvJiB0eXBlQW5ub3RhdGlvbiA9IGV4cHJlc3Npb24udHlwZUFu
bm90YXRpb24oKTsKICAgICBpZiAocmVxdWlyZXNMZWZ0VmFsdWUgJiYgdHlwZUFubm90YXRpb24u
aXNSaWdodFZhbHVlKCkpIHsKICAgICAgICAgc2V0RXJyb3IoRXJyb3IoIlVuZXhwZWN0ZWQgcnZh
bHVlLiIsIGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJu
IHt7ICp0eXBlSXRlcmF0b3ItPnZhbHVlLCB0eXBlQW5ub3RhdGlvbiB9fTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ29tcHV0ZURpbWVu
c2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21w
dXRlRGltZW5zaW9ucy5jcHAKaW5kZXggNmNlMTRiYzc1ZGIwYTEzOTBmYWY2NGIyMGI3MzAwMTQ1
MWQzYzA2OS4uNGU1MWFiNzkzZTcwNGQ2M2NmMTQ3ODZjNTNjNTkzYTA1ZWQ0NGU1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGlt
ZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDb21wdXRlRGltZW5zaW9ucy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgT3B0aW9uYWw8Q29tcHV0
ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHByb2dyYW0sIEFTVDo6RnVu
Y3Rpb25EZWYKICAgICAgICAgICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7CiAgICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAvLyBDYW5ub3QgZGVjbGFyZSBtdWx0
aXBsZSBudW10aHJlYWQgYXR0cmlidXRlcyBvbiBhIHNpbmdsZSBmdW5jdGlvbi4KLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCmluZGV4IDk1YWE2
ODFmYzJiZGFhZjQ2MGI4YmEwNTZlYTM1ZTdlNDkxYWEzOTYuLmE5YzZhMjY4NGUxYzQ2YmQzNzdj
MjViNWMyMDkxYjg2YThhYmE1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCkBAIC0xNjg5LDcgKzE2ODksNyBAQCBzdGF0aWMg
T3B0aW9uYWw8U3RyaW5nVmlldz4gc291cmNlRnJvbU5hbWVTcGFjZShBU1Q6Ok5hbWVTcGFjZSBu
YW1lU3BhY2UsIGNvbnN0CiB7CiAgICAgc3dpdGNoIChuYW1lU3BhY2UpIHsKICAgICBjYXNlIEFT
VDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBBU1Q6Ok5hbWVTcGFj
ZTo6TmFtZVNwYWNlMToKICAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoc291cmNlMSk7CiAgICAg
Y2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKaW5kZXggY2M4
ZWI0M2ZmZDhhNDQxMjlkYjU0OTRiMjJiOWUyM2NmNGQzZmM4Zi4uYThkYWVhNWNlYzY0NDVmNDdi
YjA3NDBmYzhmZDM0Yzg1YzM3ZWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKQEAgLTI0Niw3ICsyNDYs
NyBAQCBPcHRpb25hbDxDb2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0b3BMZXZlbEV4aXN0cyhT
dHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgICAgIHJldHVybiB0eXBlLT5jb2RlTG9jYXRpb24oKTsK
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBzZWFyY2hGdW5jdGlvbnMobmFtZSkpCiAgICAgICAg
IHJldHVybiBmdW5jdGlvbi0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b24qIE5hbWVDb250ZXh0Ojpsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKaW5k
ZXggYjkwNzkzNTZhYTdmOTA2NjNjOTcyMjhjMDc4N2NlYjAyNmExOTYyYy4uZmYzM2ZjNDU5MTMy
YjExZjQwMDhmN2RhMzdlNTQ2NzM1YTQ1MDcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBA
IE9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5cGUgdHlwZSkKICAgICBh
dXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUgPT0gdHlwZSkK
ICAgICAgICAgcmV0dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4oKSB9OwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGUgPFRv
a2VuOjpUeXBlLi4uIHR5cGVzPgpAQCAtMjE2LDcgKzIxNiw3IEBAIE9wdGlvbmFsPFRva2VuPiBQ
YXJzZXI6OnRyeVR5cGVzKCkKICAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7CiAgICAg
aWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSkpCiAgICAgICAgIHJldHVy
biB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGF1dG8gUGFyc2VyOjpjb25zdW1lVHlwZShU
b2tlbjo6VHlwZSB0eXBlKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+CkBAIC0zNDUsNyArMzQ1
LDcgQEAgYXV0byBQYXJzZXI6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVncmFsTGl0ZXJhbCgpIC0+
IEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4KICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGludGVncmFsTGl0ZXJhbC5lcnJvcigpKTsKICAgICBhdXRvIHJlc3VsdCA9IFdURjo6dmlzaXQo
V1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAg
ICAgaWYgKHggPCAwKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB4OwogICAgIH0sIFtdKHVu
c2lnbmVkIHgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CiAgICAgICAgIHJldHVybiB4OwpAQCAt
NDcxLDcgKzQ3MSw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhBYmJyZXZpYXRlZCgp
IC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgRXJyCiAgICAgICAgIENPTlNVTUVf
VFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJhY2tldCk7CiAgICAgICAgIHJl
dHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9LCAqdG9rZW4sICpudW1FbGVt
ZW50cyB9fTsKICAgICB9Ci0gICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgV1RGOjpu
dWxsb3B0IH19OworICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHN0ZDo6bnVsbG9w
dCB9fTsKIH0KIAogYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkKCkg
LT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJvcj4KQEAgLTQ4Nyw3ICs0
ODcsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBF
eHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZQogICAgICAgICBpZiAoIW51bUVsZW1lbnRz
KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVsZW1lbnRzLmVycm9yKCkp
OwogICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0LCBSaWdodFNxdWFyZUJy
YWNrZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQg
fSwgKnRva2VuLCBXVEY6Om51bGxvcHQsICpudW1FbGVtZW50cyB9fTsKKyAgICAgICAgcmV0dXJu
IHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgc3RkOjpudWxsb3B0
LCAqbnVtRWxlbWVudHMgfX07CiAgICAgfQogICAgIGF1dG8gYWRkcmVzc1NwYWNlVG9rZW4gPSBj
b25zdW1lVHlwZXM8CiAgICAgICAgIFRva2VuOjpUeXBlOjpDb25zdGFudCwKQEAgLTUxMiw3ICs1
MTIsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBF
eHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZQogICAgICAgICBhZGRyZXNzU3BhY2UgPSBB
U1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0
dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2UgfSwgV1RGOjpudWxsb3B0
IH19OworICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHsgYWRkcmVzc1NwYWNlIH0s
IHN0ZDo6bnVsbG9wdCB9fTsKIH0KIAogYXV0byBQYXJzZXI6OnBhcnNlVHlwZSgpIC0+IEV4cGVj
dGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBh
dXRvIFBhcnNlcjo6cGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVk
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdAogCiAgICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBl
ZWsoKS5zdGFydE9mZnNldCgpOwogCi0gICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgp
IH0sIHsgfSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyht
X2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50
aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOworICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3Bh
Y2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksIG5hbWUtPnN0cmluZ1Zp
ZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNl
bWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKIH0KIAogYXV0byBQYXJzZXI6OnBhcnNlT3Bl
cmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uLCBFcnJvcj4KQEAgLTEwNDgsNyArMTA0OCw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZU9w
ZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNs
YXJhCiAgICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwog
CiAgICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRl
Y2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFt
ZVNwYWNlKCkgfSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCAib3BlcmF0b3Ig
Y2FzdCJfc3RyLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50aWMpLCBpc09w
ZXJhdG9yLCBtX21vZGUpOworICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBv
cmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7
IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdU
Rk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0b3IsIG1fbW9k
ZSk7CiB9CiAKIGF1dG8gUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBl
Y3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgpAQCAtMTE2NSw3ICsxMTY1LDcg
QEAgYXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoQ2FzZSgpIC0+IEV4cGVjdGVkPEFTVDo6U3dpdGNo
Q2FzZSwgRXJyb3I+CiAKICAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2NrQm9keSk7CiAKLSAgICAg
ICAgcmV0dXJuIEFTVDo6U3dpdGNoQ2FzZSh7IG9yaWdpbi0+Y29kZUxvY2F0aW9uLCAgYmxvY2st
PmNvZGVMb2NhdGlvbigpfSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKCpibG9jaykpOworICAgICAg
ICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9jYXRpb24sICBibG9jay0+
Y29kZUxvY2F0aW9uKCl9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKmJsb2NrKSk7CiAgICAgfQog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAppbmRleCBiMTFiODYwNGFkNzUzNWM0ZTMx
MWY4Nzg2YjkzN2M1ZjhlNTdkZjY1Li41ZTNmMGYwMzY2ODY1ZjQwMjM5YWVlZmY5ZTBlMjU4NGQy
MTRkZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFNlbWFudGljTWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRjaFJlc291cmNlcyhWZWN0
b3I8RW50cnlQb2ludEl0ZW0+CiAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxB
U1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRleEF0dHJpYnV0ZXMo
VmVjdG9yPAogICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpICE9IHZl
cnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbikKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KHZlcnRleEF0dHJpYnV0ZS52ZXJ0
ZXhGb3JtYXQsICppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICByZXN1bHQuYWRkKCZ2ZXJ0ZXhBdHRyaWJ1dGUsIGkpOwogICAgICAg
ICAgICAgaXRlbUluZGljZXMuYWRkKGkpOwogICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAg
c3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwgc2l6ZV90Pj4gbWF0Y2hW
ZXJ0ZXhBdHRyaWJ1dGVzKFZlY3RvcjwKICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYykpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlucyhpKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIE9w
dGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXplX3Q+PiBtYXRjaENvbG9y
QXR0YWNobWVudHMoVmUKICAgICAgICAgICAgIGlmIChzdGFnZUluT3V0U2VtYW50aWMuaW5kZXgo
KSAhPSBhdHRhY2htZW50RGVzY3JpcHRvci5uYW1lKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQoYXR0YWNobWVudERlc2NyaXB0
b3IudGV4dHVyZUZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJpbnNpY3MsIHRydWUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJlc3VsdC5hZGQoJmF0dGFjaG1lbnREZXNj
cmlwdG9yLCBpKTsKICAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChpKTsKICAgICAgICAgfQpA
QCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEF0dGFjaG1lbnREZXNj
cmlwdG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZlCiAgICAgICAgIGlmICgh
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYz4oc2VtYW50aWMp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXRlbUluZGljZXMuY29udGFp
bnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjc4LDM4
ICsyNzgsMzggQEAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGljcz4gbWF0Y2hTZW1hbnRp
Y3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmUKIHsKICAgICBhdXRvIHZlcnRleEZ1
bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLnZlcnRleEVudHJ5UG9pbnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNw
YWNlMSk7CiAgICAgaWYgKHZlcnRleEZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhdmVydGV4RnVu
Y3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8mIHZlcnRleFNo
YWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4odmVydGV4
RnVuY3Rpb25zWzBdLmdldCgpKTsKICAgICBhdXRvIHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVt
cyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgdmVydGV4U2hh
ZGVyRW50cnlQb2ludCk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgYXV0byB2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKHZlcnRl
eFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
bGF5b3V0LCBTaGFkZXJTdGFnZTo6VmVydGV4KTsKICAgICBpZiAoIXZlcnRleFNoYWRlclJlc291
cmNlTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGF1dG8gbWF0Y2hlZFZlcnRleEF0dHJpYnV0ZXMgPSBtYXRjaFZlcnRl
eEF0dHJpYnV0ZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFtLmludHJpbnNpY3MoKSk7
CiAgICAgaWYgKCFtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWZyYWdtZW50
U2hhZGVyRXhpc3RzKQogICAgICAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQs
IG51bGxwdHIsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIEVudHJ5UG9pbnRJdGVtcygp
LCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4oKSwg
Km1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCBIYXNoTWFwPEF0dGFjaG1lbnREZXNjcmlwdG9yKiwg
c2l6ZV90PigpIH19OwogCiAgICAgYXV0byBmcmFnbWVudE5hbWVTcGFjZSA9IGRpc3RpbmN0RnJh
Z21lbnRTaGFkZXIgPyBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMiA6IEFTVDo6TmFtZVNwYWNl
OjpOYW1lU3BhY2UxOwogICAgIGF1dG8gZnJhZ21lbnRGdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVD
b250ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudEVu
dHJ5UG9pbnROYW1lLCBmcmFnbWVudE5hbWVTcGFjZSk7CiAgICAgaWYgKGZyYWdtZW50RnVuY3Rp
b25zLnNpemUoKSAhPSAxIHx8ICFmcmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKS5lbnRyeVBvaW50
VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnJhZ21lbnRGdW5jdGlvbnNb
MF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludCA9IGRvd25j
YXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1swXS5nZXQoKSk7
CiAgICAgYXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9p
bnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50KTsK
ICAgICBpZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZnJh
Z21lbnRTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKGZyYWdtZW50U2hhZGVyRW50
cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNo
YWRlclN0YWdlOjpGcmFnbWVudCk7CiAgICAgaWYgKCFmcmFnbWVudFNoYWRlclJlc291cmNlTWFw
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghbWF0Y2hJbnB1dHNPdXRwdXRzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJ
dGVtcy0+b3V0cHV0cywgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgYXV0byBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyA9IG1hdGNoQ29sb3JBdHRhY2htZW50
cyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yLmF0dGFjaG1lbnREZXNjcmlwdG9y
cywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwogICAgIGlmICghbWF0Y2hlZENvbG9yQXR0YWNobWVu
dHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFtYXRjaERlcHRoQXR0YWNobWVudChmcmFnbWVudFNoYWRlckVudHJ5
UG9pbnRJdGVtcy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRz
U3RhdGVEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yLCBwcm9ncmFt
LmludHJpbnNpY3MoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7ICZ2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50
LCAmZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50LCAqdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1z
LCAqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsICp2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1h
cCwgKmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsICptYXRjaGVkVmVydGV4QXR0cmlidXRlcywg
Km1hdGNoZWRDb2xvckF0dGFjaG1lbnRzIH19OwogfQogCkBAIC0zMTcsMTUgKzMxNywxNSBAQCBP
cHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYg
cHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaQogewogICAgIGF1dG8gZnVuY3Rpb25zID0gcHJvZ3JhbS5u
YW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmVudHJ5
UG9pbnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7CiAgICAgaWYgKGZ1bmN0aW9u
cy5zaXplKCkgIT0gMSB8fCAhZnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwg
IWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGF1dG8mIGVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnVu
Y3Rpb25zWzBdLmdldCgpKTsKICAgICBhdXRvIGVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5
UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZW50cnlQb2ludCk7CiAgICAgaWYgKCFl
bnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQVNTRVJUKGVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cy5p
c0VtcHR5KCkpOwogICAgIGF1dG8gcmVzb3VyY2VNYXAgPSBtYXRjaFJlc291cmNlcyhlbnRyeVBv
aW50SXRlbXMtPmlucHV0cywgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5sYXlvdXQsIFNoYWRl
clN0YWdlOjpDb21wdXRlKTsKICAgICBpZiAoIXJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
eyAmZW50cnlQb2ludCwgKmVudHJ5UG9pbnRJdGVtcywgKnJlc291cmNlTWFwIH19OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRo
ZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAppbmRleCAzMTdkMGM1ZmJlY2U0NDkx
ODA1OTcyMGE0NWJkY2Y4NDFiYTQ3NDFmLi5iY2M5MGEzNjQwNWEyZWQxNzRkZDM1NjMyZDY2OWE0
OTcxMjhiZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTEy
OCwxMSArMTI4LDExIEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0
b3JzKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRp
b24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFT
VDo6UXVhbGlmaWVycygpLCAmdW5uYW1lZFR5cGUsIFN0cmluZygpLCBudWxscHRyLCBudWxscHRy
KTsKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikp
OwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1
Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxv
Y2soKSwgV1RGOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkpOworICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
IGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9yIGNh
c3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2lu
Z01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogICAgICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RG
TW92ZShjb3B5Q29uc3RydWN0b3IpKTsKICAgICAgICAgfQogCi0gICAgICAgIEFTVDo6TmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xh
cmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgdW5u
YW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMo
KSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwor
ICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0cnVjdG9y
KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygp
LCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpT
dGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRl
ZmF1bHRDb25zdHJ1Y3RvcikpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwogICAgIH0K
QEAgLTE0OCw3ICsxNDgsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0
cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRp
b24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFT
VDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVk
VHlwZS5nZXQoKSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICBwYXJhbWV0ZXJzLmFwcGVu
ZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0
Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdN
b2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24s
IEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6
OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdU
Rk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFu
ZGFyZExpYnJhcnkpKTsKICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29uc3Ry
dWN0b3IpKTsKIAogICAgICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24+KHN0
YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkpIHsKQEAgLTE1Niw3ICsxNTYs
NyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFt
JiBwcm9ncmFtKQogICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5pc09wYXF1
ZVR5cGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBB
U1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0cnVjdG9yKEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51
bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgp
KSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBudWxs
cHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAg
IEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0ZDo6
bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0
KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51
bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAg
ICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6
ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAppbmRleCAyYTdlMGQ2OTYwN2VkMzlhZTA1NWZl
MDBhZGM5YjE5ZGY5NTBhZTFhLi5mMDUwNzM4MjNjN2RhMWQ3YTEyN2YzZDU2YmI2ZjIwNTFhOWRm
ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51
bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBw
ZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjEpKTsKICAgICAgICAgICAgIHBhcmFtZXRl
cnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjIpKTsKLSAgICAgICAgICAgIEFT
VDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBX
VEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgcHJvZ3JhbS5p
bnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkp
KTsKKyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpB
dHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChs
b2NhdGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRvcj09Il9z
dHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2Rl
OjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RG
TW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIG9wZXJhdG9yPT0gZm9yIGVudW0g
dHlwZS4iKSk7CiAgICAgICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJy
b3I+IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAg
ICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVuaXF1ZVJlZjxBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmllcnMoKSwgQVNUOjpUeXBl
UmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCBTdHJpbmco
KSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZh
cmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIGVudW1lcmF0
aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5
KSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6
QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5
cGUoKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwg
aXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogICAgICAgICAgICAg
aWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVh
dGUgY29weSBjb25zdHJ1Y3RvciBmb3IgZW51bSB0eXBlLiIpKTsKICAgICAgICAgfQpAQCAtNjUs
NyArNjUsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUVudW1lcmF0aW9uRnVu
Y3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBhdXRvIHZhcmlhYmxlRGVjbGFy
YXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24s
IEFTVDo6UXVhbGlmaWVycygpLCAmZW51bWVyYXRpb25EZWZpbml0aW9uLT50eXBlKCksIFN0cmlu
ZygpLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbnMgcGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUo
dmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0
aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgQVNUOjpU
eXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmluaXRpb24pLCAib3Bl
cmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9y
LCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2
ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxs
b3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5p
dGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIs
IGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgICAg
IGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3Jl
YXRlICdvcGVyYXRvciBjYXN0JyBmb3IgZW51bSB0eXBlLiIpKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcAppbmRleCAzZTUxMGM1NzRmM2VmODYzYjFhMTAxMmY1ZWY2Mzk5MTM0Yjlj
MTdjLi44ZWZlYTU1NWNlOTJjMWM0MTk5NjFhNGY1NjJlYTU1MzRlMjEwYzY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERl
c2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91
CiAKICAgICBpZiAoIWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewogICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVQmluZEdyb3VwTGF5b3V0ISIsIGZ1bmN0
aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGJpbmRpbmdzLnNpemUoKSAhPSBsYXlvdXQt
PmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpLnNpemUoKSkgewogICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IE1pc21hdGNoZWQgbnVtYmVyIG9mIEdQVUJpbmRHcm91cExheW91dEJpbmRp
bmdzIGFuZCBHUFVCaW5kR3JvdXBCaW5kaW5ncyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGF1dG8gbGF5b3V0TWFwID0gbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKS0+YmluZGlu
Z3NNYXAoKTsKQEAgLTgzLDM2ICs4MywzNiBAQCBPcHRpb25hbDxHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVCaW5kR3JvdQogICAg
ICAgICBhdXRvIGl0ZXJhdG9yID0gbGF5b3V0TWFwLmZpbmQoYmluZGluZy5iaW5kaW5nKTsKICAg
ICAgICAgaWYgKGl0ZXJhdG9yID09IGxheW91dE1hcC5lbmQoKSkgewogICAgICAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nICV1IG5vdCBmb3VuZCBpbiBH
UFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5nLmJpbmRpbmcpOwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBhdXRvIGxheW91dEJpbmRpbmcgPSBp
dGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgYXV0byBiaW5kaW5nUmVzb3VyY2VWaXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBSZWZQdHI8V2ViR1BVU2FtcGxlcj4mIHNhbXBsZXIp
IC0+IE9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAgICAgICAgaWYgKCFzYW1w
bGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gZ3B1U2FtcGxlciA9IHNh
bXBsZXItPnNhbXBsZXIoKTsKICAgICAgICAgICAgIGlmICghZ3B1U2FtcGxlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVz
b3VyY2U+KG1ha2VSZWYoKmdwdVNhbXBsZXIpKTsKICAgICAgICAgfSwgW10oY29uc3QgUmVmUHRy
PFdlYkdQVVRleHR1cmVWaWV3PiYgdmlldykgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNl
PiB7CiAgICAgICAgICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgYXV0byB0ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwogICAgICAgICAgICAgaWYgKCF0ZXh0
dXJlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqdGV4dHVyZSkpOwogICAgICAgICB9LCBbJmxh
eW91dEJpbmRpbmcsIGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1ZmZlckJpbmRpbmcgYnVmZmVyQmlu
ZGluZykgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlckJpbmRpbmcuYnVmZmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1
dG8gYnVmZmVyID0gYnVmZmVyQmluZGluZy5idWZmZXItPmJ1ZmZlcigpOwogICAgICAgICAgICAg
aWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoIXZhbGlk
YXRlQnVmZmVyQmluZGluZ1R5cGUoYnVmZmVyLCBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGlu
ZywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KEdQVUJ1ZmZlckJpbmRpbmcgeyBtYWtl
UmVmKCpidWZmZXIpLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH0p
OwogICAgICAgICB9KTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBPcHRpb25hbDxHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVCaW5kR3Jv
dQogICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZSA9IFdURjo6dmlzaXQoYmluZGluZ1Jlc291
cmNlVmlzaXRvciwgYmluZGluZy5yZXNvdXJjZSk7CiAgICAgICAgIGlmICghYmluZGluZ1Jlc291
cmNlKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgcmVzb3VyY2UgZm9y
IGJpbmRpbmcgJXUhIiwgZnVuY3Rpb25OYW1lLCBsYXlvdXRCaW5kaW5nLmV4dGVybmFsQmluZGlu
Zy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgYmluZEdyb3VwQmlu
ZGluZ3MudW5jaGVja2VkQXBwZW5kKEdQVUJpbmRHcm91cEJpbmRpbmcgeyBiaW5kaW5nLmJpbmRp
bmcsIFdURk1vdmUoYmluZGluZ1Jlc291cmNlLnZhbHVlKCkpIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCmluZGV4
IGVlNzEyMTRiNWMwYWVlZGQ5Nzc5ZTMzMjJhZjlmYzMzZGQ5Zjk3MjYuLjk3NzA5ZGVhNjE2NDE2
MmU2MzQ4NTkxMDA4MmQ0MjI2MTdkNDYzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKQEAgLTQ1LDcgKzQ1LDcg
QEAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojp0cnlD
cmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGMKIHsKICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVy
LT5idWZmZXIoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVQ29tbWFuZEVuY29kZXI6
IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBB
ZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgpAQCAtNTcsNyArNTcsNyBAQCBPcHRpb25hbDxHUFVUZXh0
dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3JlYXRlR1BVVGV4dHVyZUNv
cHlWaWV3KAogewogICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+dGV4dHVyZSgpKSB7CiAg
ICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCB0ZXh0dXJl
IGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxp
ZGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCBkMjczZGViMGMy
NWIzYjk0MTMzYjNmYzNhZmFmYzdmMGI4YTljNzhlLi5iNGVjNThjOWY3NWRlMjg1MmFmYWVkYmI2
OTcwZWFkYzRhODc1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBPcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBXZWJH
UFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdAogICAgIGF1dG8gY29tcHV0ZSA9
IGNvbXB1dGVTdGFnZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKTsK
ICAgICBpZiAoIWNvbXB1dGUpIHsKICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVFcnJvcigi
R1BVRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogSW52YWxpZCBHUFVQcm9ncmFtbWFi
bGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIEdQVUNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0KSwgV1RGTW92ZSgqY29t
cHV0ZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCmluZGV4IDIzYTZmMTcyNDU5
MjEwMzc5YmQzYzJmNjU0NjA4MmRlMWExNzc3NmUuLjExZWQxYWVkZGE4OTc1ZGI1ZDUxYTg2NjVj
ZWQ4MWE1NGNjODIzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcApAQCAtNDEs
NyArNDEsNyBAQCBPcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IFdlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlRwogICAgIGZvciAoY29uc3QgYXV0byYg
bGF5b3V0IDogYmluZEdyb3VwTGF5b3V0cykgewogICAgICAgICBpZiAoIWxheW91dCB8fCAhbGF5
b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVURl
dmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKTogSW52YWxpZCBHUFVCaW5kR3JvdXBMYXlvdXQh
Iik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZ3B1TGF5b3V0cy51
bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxl
U3RhZ2VEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKaW5kZXggMGU1ZjNiZTIyMjMwMGQ1YjRh
YjZlMGZlNjA5YWU3ZDgwYTRiMmIxNy4uNDc3NWE4ODVmYzc2YjRjZjk1YzU4M2U1ODY5OTQ5ZWUx
ODk5ZWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvcj4gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yOjp0cnlDcmVh
dGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdAogewogICAgIGlmICghbW9k
dWxlIHx8ICFtb2R1bGUtPm1vZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7IG1ha2VSZWYoKm1vZHVs
ZS0+bW9kdWxlKCkpLCAqdGhpcyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmluZGV4IGJm
NDhlODNhYzljYjBiY2I3NjVkNDQwZjUxMzVhODZmY2VjMDE3ZjguLjQzOTU3MTdiYjVlYzQzNWUx
NTJiZjgxOWJkZWExNjBlMmI3MTJhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTUw
LDcgKzUwLDcgQEAgT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXIKICAgICAvLyBGSVhNRTogSW1wcm92
ZSBlcnJvciBjaGVja2luZyBhcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBpcyBhZGRlZCB0
byBzcGVjLgogICAgIGlmIChjb2xvckF0dGFjaG1lbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBM
T0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6IE5vIGNvbG9yIGF0dGFjaG1lbnRz
IHNwZWNpZmllZCBmb3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yPiBncHVDb2xv
ckF0dGFjaG1lbnRzOwpAQCAtNjAsNyArNjAsNyBAQCBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlcgog
ICAgICAgICAgICAgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCkKICAg
ICAgICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091
dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBncHVD
b2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciB7IG1ha2VSZWYoKmNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCkpLCBj
b2xvckF0dGFjaG1lbnQgfSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRyeUNyZWF0
ZUdQVVJlbmRlcgogICAgICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFj
aG1lbnQtPnRleHR1cmUoKQogICAgICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQt
PmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKICAgICAgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2ht
ZW50IGluIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciEiKTsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGdwdURlcHRoQXR0YWNobWVudCA9IEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSksICpkZXB0aFN0ZW5jaWxB
dHRhY2htZW50IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXgg
NDlmODM5MDRlZjdjZTlmYmQ1YjdjOWYyNGRmZGIxOGQ3YTNkOTU4Yy4uNDUwNmU1NDgwMGRhMzBk
NjU3OWVhZTAzNDUzMTBiOGY5MzY5NGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCkBAIC00NCw3ICs0NCw3IEBAIE9wdGlvbmFsPEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdGVHCiAKICAgICBpZiAo
IXZlcnRleCB8fCAoZnJhZ21lbnRTdGFnZSAmJiAhZnJhZ21lbnQpKSB7CiAgICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlYiBHUFUgdmFsaWRh
dGlvbiwgZS5nLiBmYWlsIGlmIGNvbG9yU3RhdGVzIGlzIGxhcmdlciB0aGFuIChtYXggbnVtYmVy
IG9mIHN1cHBvcnRlZCBjb2xvciBzdGF0ZXMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAppbmRleCBi
NzNhZWQ3ODRhMmMyODY2YWU0ZDE0OTA5MGEyOTAwMjc4ZTYwNmU2Li5kYzgyODI3ZmYzMDQ4Njgy
ZTA1MDkyNzg0ODRjNzkzMjc0NzBmOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBPcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yPiBXZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaQogewogICAgIGlmICghZGV2aWNlKSB7
CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpjb25maWd1cmVTd2FwQ2hh
aW4oKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAogICAgIHJldHVybiBH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsgbWFrZVJlZihkZXZpY2UtPmRldmljZSgpKSwgKnRoaXMg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCA3OWQ3OThiNmU0NmZkOGYwN2ViOTY3ODA3
N2I2NTE4MmI2MzRlOTRmLi4wMWZkZmUwMjllNDZmY2U4NjJkNWU2MTZjZmM0OTVkNjljYzYxNDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgV2ViU29j
a2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluCiAgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKICAgICBhdXRvIHBhcmFtZXRl
ciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRzIik7CiAgICAgaWYgKHBh
cmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAgICAgIHdpbmRvd0JpdHMg
PSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUp
LnZhbHVlT3IoMCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUpLnZhbHVlX29yKDApOwogICAgICAgICBp
ZiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSB7CiAgICAgICAgICAgICBtX2Zh
aWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93X2JpdHMgcGFyYW1ldGVy
Il9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAppbmRl
eCAwYTFhYmVhODgzZDdjY2U2NGM4N2YzY2E2ODcxZWE2YTI5OTZmMDcwLi4xZTU1Yjg3MjVkZTYx
MDZkYjJkZDAzNzU0YTFiODBjMGI5ODU4MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApAQCAt
OTksNyArOTksNyBAQCB2b2lkIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp1cGRhdGVJZk5l
ZWRlZCgpCiAKICAgICBpZiAoZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycy5ib3VuZHMuc2l6ZSgp
ID49IE1pbmltdW1Cb3VuZHNWZXJ0aWNlcykgewogICAgICAgICAvLyBFYWNoIHBvaW50IGhhcyB0
byBtdWx0aXBsaWVkIGJ5IHRoZSBpbnZlcnNlIG9mIG9yaWdpbk9mZnNldC4KLSAgICAgICAgYXV0
byB0cmFuc2Zvcm0gPSBvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBv
cmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGZvciAoYXV0byYgcG9pbnQgOiBmcmFtZURhdGEuc3Rh
Z2VQYXJhbWV0ZXJzLmJvdW5kcykgewogICAgICAgICAgICAgYXV0byBtYXBwZWRQb2ludCA9IHRy
YW5zZm9ybS5tYXBQb2ludChwb2ludCk7CiAgICAgICAgICAgICAvLyBUaGUgeSB2YWx1ZSBvZiBl
YWNoIHBvaW50IE1VU1QgYmUgMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
RnJhbWUuY3BwCmluZGV4IDcwMDcxYmNiZDI4OWFmM2UwZDQwYjA4OTc3NzM5OWQxNDY5MWNhM2Iu
LjliMDVmNzBlNDVhODk4ZGQzNmU1MTM0MjZmMGU2MDgzYTM4N2FlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTIzLDEyICsxMjMsMTIgQEAg
RXhjZXB0aW9uT3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdlYlhSRnJh
bWU6OnBvcHVsYXRlUG9zZShjb25zdAogICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgc3BhY2Xi
gJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRldGVybWluZWQgaW4gdGhl
IHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBpcyB1c3VhbGx5IHByb3Zp
ZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhSKQogICAgICAgICAvLyBz
byB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhSUGxhdGZvcm0gcG9ydHMuCi0g
ICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQgfTsKICAgICB9CiAKICAgICBhdXRvIGJhc2VUcmFuc2Zvcm0gPSBiYXNlU3BhY2UuZWZm
ZWN0aXZlT3JpZ2luKCk7CiAgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQot
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS5pbnZlcnNl
KCkgKiBzcGFjZS5lZmZlY3RpdmVPcmlnaW4oKTsKICAgICBib29sIGVtdWxhdGVkUG9zaXRpb24g
PSBzcGFjZS5pc1Bvc2l0aW9uRW11bGF0ZWQoKSB8fCBiYXNlU3BhY2UuaXNQb3NpdGlvbkVtdWxh
dGVkKCk7CkBAIC0xOTIsNyArMTkyLDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSVmlld2Vy
UG9zZT4+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgRG9jdW1lbnQmIGQKICAgICAg
ICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgICAgIH0sIFsmXShjb25zdCBzdGQ6Om51bGxwdHJf
dCYpIHsKICAgICAgICAgICAgIC8vIFVzZSBhc3BlY3QgcHJvamVjdGlvbiBmb3IgaW5saW5lIHNl
c3Npb25zCi0gICAgICAgICAgICBkb3VibGUgZm92ID0gIG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUo
KS5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVPcihwaU92ZXJUd29Eb3VibGUpOwor
ICAgICAgICAgICAgZG91YmxlIGZvdiA9ICBtX3Nlc3Npb24tPnJlbmRlclN0YXRlKCkuaW5saW5l
VmVydGljYWxGaWVsZE9mVmlldygpLnZhbHVlX29yKHBpT3ZlclR3b0RvdWJsZSk7CiAgICAgICAg
ICAgICBmbG9hdCBhc3BlY3QgPSAxOwogICAgICAgICAgICAgYXV0byBsYXllciA9IG1fc2Vzc2lv
bi0+cmVuZGVyU3RhdGUoKS5iYXNlTGF5ZXIoKTsKICAgICAgICAgICAgIGlmIChsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuY3BwCmlu
ZGV4IDFjOGNiNjcyZmQxMWFlYzZlZDMyNmMwM2M3YTVjMGI2ODZkOTMzYjkuLjk0MzJhNWFmMTkz
OGI0OTRiMTFlOWNiYzZkM2QzOTE0Mjk1NTk2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8
V2ViWFJSZW5kZXJTdGF0ZT4gV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRlKFhSU2Vzc2lvbk1vZGUg
bW9kZSkKIHsKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLyNp
bml0aWFsaXplLXRoZS1yZW5kZXItc3RhdGUKICAgICAvLyBkZXB0aE5lYXIsIGRlcHRoRmFyIGFu
ZCBiYXNlTGF5ZXIgYXJlIGluaXRpYWxpemVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uCi0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZW5kZXJTdGF0ZShtb2RlID09IFhSU2Vzc2lvbk1v
ZGU6OklubGluZSA/IG1ha2VPcHRpb25hbChwaU92ZXJUd29Eb3VibGUpIDogV1RGOjpudWxsb3B0
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZW5kZXJTdGF0ZShtb2RlID09IFhS
U2Vzc2lvbk1vZGU6OklubGluZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChwaU92ZXJUd29Eb3VibGUp
IDogc3RkOjpudWxsb3B0KSk7CiB9CiAKIFdlYlhSUmVuZGVyU3RhdGU6OldlYlhSUmVuZGVyU3Rh
dGUoT3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IDk3ZDIzMmRkMmI1
ZWY4NTljMWIxOWJiMWZiOTNjNWJlZTRiMDljZmUuLjA1NGQ5YWJkOTdmY2E5YzQ3OTM0OTE0Mzhh
ZTk5NTk2N2Y3NjExZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
U2Vzc2lvbi5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYlhSU2Vzc2lvbjo6ZGlkQ29t
cGxldGVTaHV0ZG93bigpCiAgICAgLy8gUmVzb2x2ZSBlbmQgcHJvbWlzZSBmcm9tIFhSU2Vzc2lv
bjo6ZW5kKCkKICAgICBpZiAobV9lbmRQcm9taXNlKSB7CiAgICAgICAgIG1fZW5kUHJvbWlzZS0+
cmVzb2x2ZSgpOwotICAgICAgICBtX2VuZFByb21pc2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fZW5kUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGcm9tIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NodXQtZG93bi10aGUtc2Vzc2lvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAppbmRleCA3NDFh
NjM4NTk1NTY2MzBmMzBhNDAyOTIxODI3OWQ3YWYxYjlkMTFmLi42ZTNhYjdjMjEyM2QzNDA0MjAy
YmU0MWUwZDBlZjBhYjVkYjQ0YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU3lzdGVtLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIE9wdGlvbmFsPFdlYlhSU3lzdGVt
OjpSZXNvbHZlZFJlcXVlc3RlZEZlYXR1cmVzPiBXZWJYUlN5c3RlbTo6cmVzb2x2ZVJlcXVlc3Rl
ZEZlCiAgICAgfTsKIAogICAgIGlmICghcGFyc2VGZWF0dXJlcyhyZXF1aXJlZEZlYXR1cmVzV2l0
aERlZmF1bHRGZWF0dXJlcywgUGFyc2luZ01vZGU6OlN0cmljdCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBwYXJzZUZl
YXR1cmVzKGluaXQub3B0aW9uYWxGZWF0dXJlcywgUGFyc2luZ01vZGU6Okxvb3NlKTsKICAgICBy
ZXR1cm4gcmVzb2x2ZWRGZWF0dXJlczsKQEAgLTMzOSw3ICszMzksNyBAQCBPcHRpb25hbDxXZWJY
UlN5c3RlbTo6RmVhdHVyZUxpc3Q+IFdlYlhSU3lzdGVtOjpyZXNvbHZlRmVhdHVyZVBlcm1pc3Np
b25zKFhSU2VzcwogICAgIC8vICA2LjEuIFNldCBzdGF0dXMncyBzdGF0ZSB0byAiZGVuaWVkIi4K
ICAgICAvLyAgNi4yLiBBYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoIXJlc29sdmVkRmVhdHVy
ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyA3LiBMZXQgKGNvbnNlbnRSZXF1aXJlZCwgY29uc2VudE9wdGlvbmFs
LCBncmFudGVkKSBiZSB0aGUgZmllbGRzIG9mIHJlc3VsdC4KICAgICAvLyA4LiBUaGUgdXNlciBh
Z2VudCBNQVkgYXQgdGhpcyBwb2ludCBhc2sgdGhlIHVzZXIncyBwZXJtaXNzaW9uIGZvciB0aGUg
Y2FsbGluZyBhbGdvcml0aG0gdG8gdXNlIGFueSBvZiB0aGUgZmVhdHVyZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCAwYWMyNGI1YzZmZjUxMGVjMzRl
YTQ4OTk0MzI0YWVmZDM5OTYyOThjLi42NDU4NTc0ZTAxODQ5NTFhYTgwMzQ3ZjE5ODAzOWFjZTBl
OGI5MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lz
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCkBA
IC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHJlcXVlc3RGcmFtZShQ
bGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYpIGZpbmFsOwogICAgICAg
ICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9uTW9kZSkgY29uc3QgZmlu
YWw7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFuZGxlPiBjcmVhdGVMYXll
clByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKSBmaW5hbCB7IHJldHVybiBXVEY6
Om51bGxvcHQ7IH0KKyAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsIHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgICAgICB2b2lkIGRlbGV0ZUxheWVyKFBsYXRmb3JtWFI6
OkxheWVySGFuZGxlKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15SW5saW5lRGV2aWNlIG1f
ZGVmYXVsdElubGluZURldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJW
aWV3LmNwcAppbmRleCAyM2M4ZWVhNDE1Mjc0ZDA4NWQzZjljMzY3MjY2ODM4MTFlMmQ4NTIxLi5m
Y2U2YmYxMTQ1ZmUwM2UwY2QxNzZmZDE3MTdhODhmZWVjOTU1MDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFdlYlhSVmll
dzo6fldlYlhSVmlldygpID0gZGVmYXVsdDsKIE9wdGlvbmFsPGRvdWJsZT4gV2ViWFJWaWV3Ojpy
ZWNvbW1lbmRlZFZpZXdwb3J0U2NhbGUoKSBjb25zdAogewogICAgIC8vIFJldHVybiBudWxsIGlm
IHRoZSBzeXN0ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlzdGljIG9yIG1ldGhvZCBmb3Ig
ZGV0ZXJtaW5pbmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdl
Yi5naXRodWIuaW8vd2VieHIvI2RvbS14cnZpZXctcmVxdWVzdHZpZXdwb3J0c2NhbGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1Nlc3Npb25JRC5oCmluZGV4IDZjN2EyNjIyNTgxYTIxNmIwZTZiNzBjN2RiMmZk
YTUzY2U4NGY2MjkuLjViMzU2YTMxZmZhMGU5NWZiOThiMzM0OTljYWI1MTgwODFiNjAzYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaApAQCAtOTksNyArOTksNyBAQCBPcHRpb25hbDxT
ZXNzaW9uSUQ+IFNlc3Npb25JRDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHNlc3Npb25JRDsKICAgICBkZWNvZGVyID4+IHNlc3Npb25JRDsKICAgICBp
ZiAoIXNlc3Npb25JRCB8fCAhaXNWYWxpZFNlc3Npb25JRFZhbHVlKCpzZXNzaW9uSUQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBTZXNzaW9uSUQgeyAqc2Vzc2lvbklEIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tCmluZGV4IDkz
MzRhYTExNzU3NzkxNjdhNGNmM2JjMTcwY2E2Yzc4ZjQ2ZWZjMWEuLjBjOTFmNjVkNjU0MDNjY2Y1
Y2MyNGUzNDg4MTA1ZmExNmJmMTI1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbQpAQCAtNDcsNyArNDcsNyBAQCBPcHRp
b25hbDxPdXRwdXRDb250ZXh0PiYgT3V0cHV0Q29udGV4dDo6c2hhcmVkQXVkaW9QcmVzZW50YXRp
b25PdXRwdXRDb250ZXh0KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8
T3V0cHV0Q29udGV4dD4+IHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCA9IFtd
ICgpIC0+IE9wdGlvbmFsPE91dHB1dENvbnRleHQ+IHsKICAgICAgICAgaWYgKCFbUEFMOjpnZXRB
Vk91dHB1dENvbnRleHRDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2hhcmVk
QXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KV0pCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAgIEFWT3V0cHV0Q29udGV4
dCogY29udGV4dCA9IFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHNoYXJlZFN5c3RlbUF1ZGlv
Q29udGV4dF07CkBAIC01NSw3ICs1NSw3IEBAIE9wdGlvbmFsPE91dHB1dENvbnRleHQ+JiBPdXRw
dXRDb250ZXh0OjpzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQoKQogICAgICAg
ICBhdXRvIGNvbnRleHQgPSBbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3MoKSBzaGFyZWRBdWRpb1By
ZXNlbnRhdGlvbk91dHB1dENvbnRleHRdOwogI2VuZGlmCiAgICAgICAgIGlmICghY29udGV4dCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBPdXRwdXRDb250ZXh0KHJldGFpblB0cihjb250
ZXh0KSk7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vZ2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2Ny
eXB0L1V0aWxpdGllcy5oCmluZGV4IDU5YmYyNGQ1ZWMyMzQxNTMxY2IyM2E3MjFiYWQwZWVmOWY2
OTM5YWYuLjI3NGUwYWFmMWRmZWI4YzcyMTYxODA3NWFhNzJiZTA3NmE0MTY1MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmgKQEAgLTYz
LDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxpbnQ+IGFlc0FsZ29yaXRobUZvcktl
eVNpemUoc2l6ZV90IGtleVNpemUpCiAgICAgY2FzZSAyNTY6CiAgICAgICAgIHJldHVybiBHQ1JZ
X0NJUEhFUl9BRVMyNTY7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMuY3BwCmluZGV4IGM0Mzhl
NDI0ZjhjM2VlOWJmNzYzNWNmMDc2YmFkMTNkNTU4NDg3NzEuLjQ1NWUwODM5M2VlNTAzNjhkNzg0
Nzg1Mjk3Mjk2MjNmNjBiODQ3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcApAQCAtMTI2LDE4ICsxMjYsMTggQEAgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9vdCwgY29uc3QgY2hhciog
ZWxlbWVudE5hbWUpCiAgICAgdW5zaWduZWQgdHlwZSA9IDA7CiAgICAgaW50IHJldCA9IGFzbjFf
cmVhZF92YWx1ZV90eXBlKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCAmdHlw
ZSk7CiAgICAgaWYgKHJldCAhPSBBU04xX01FTV9FUlJPUikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0eXBlID09
IEFTTjFfRVRZUEVfQklUX1NUUklORykgewogICAgICAgICBpZiAobGVuZ3RoICUgOCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBsZW5ndGggLz0gODsKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YShsZW5ndGgpOwogICAgIHJldCA9IGFzbjFfcmVhZF92YWx1ZShyb290LCBlbGVtZW50TmFt
ZSwgZGF0YS5kYXRhKCksICZsZW5ndGgpOwogICAgIGlmIChyZXQgIT0gQVNOMV9TVUNDRVNTKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0xNDcsMTIgKzE0NywxMiBAQCBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGVuY29kZWREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBl
bGVtZW50TmFtZSkKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBpbnQgcmV0ID0gYXNuMV9kZXJf
Y29kaW5nKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3RoLCBudWxscHRyKTsKICAg
ICBpZiAocmV0ICE9IEFTTjFfTUVNX0VSUk9SKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEobGVuZ3RoKTsKICAgICByZXQgPSBhc24xX2Rlcl9jb2Rpbmcocm9vdCwgZWxlbWVudE5hbWUs
IGRhdGEuZGF0YSgpLCAmbGVuZ3RoLCBudWxscHRyKTsKICAgICBpZiAocmV0ICE9IEFTTjFfU1VD
Q0VTUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggYWZjYzZkYmQyYmU2MDlmNGZiYTA4YWY5
MTk0N2FkZTljMmIxYTliMC4uZWFiODA0NWJhNzhhMjVmNGY1NTMyYmQyNjkxMmU4YTRjYjUxMmJk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNo
ZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZQogCiAgICAgYXV0
byBzZWFyY2hSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
bik7CiAgICAgaWYgKCFzZWFyY2hSYW5nZSB8fCBzZWFyY2hSYW5nZS0+Y29sbGFwc2VkKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHRhcmdldE9mZnNldCA9IGNoYXJhY3RlckNvdW50KHsgc2VhcmNoUmFuZ2Ut
PnN0YXJ0LCBvcmlnaW5hbFJhbmdlLnN0YXJ0IH0sIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVy
c0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKICAgICByZXR1cm4gZmluZENsb3Nlc3RQbGFp
blRleHQoKnNlYXJjaFJhbmdlLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0T2Zmc2V0KTsKQEAgLTIx
MjQsNyArMjEyNCw3IEBAIHN0YXRpYyBOb2RlKiByZXNldE5vZGVBbmRPZmZzZXRGb3JSZXBsYWNl
ZE5vZGUoTm9kZSYgcmVwbGFjZWROb2RlLCBpbnQmIG9mZnNldCwKIHN0YXRpYyBPcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFj
dGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGludCBvZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCAr
IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgTm9kZSogbm9kZSA9IGNoYXJhY3Rlck9mZnNl
dC5ub2RlOwpAQCAtMjE0MCw3ICsyMTQwLDcgQEAgc3RhdGljIE9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+IGJvdW5kYXJ5UG9pbnQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmYKICAg
ICAgICAgbm9kZSA9IHJlc2V0Tm9kZUFuZE9mZnNldEZvclJlcGxhY2VkTm9kZSgqbm9kZSwgb2Zm
c2V0LCBjaGFyYWN0ZXJDb3VudCk7CiAKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
eyB7ICpub2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSB9IH07CiB9CkBAIC0yMTYz
LDcgKzIxNjMsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VG
b3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYQogICAgIGF1dG8gc3RhcnQgPSBi
b3VuZGFyeVBvaW50KGFscmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zmc2V0MSA6IGNoYXJhY3Rl
ck9mZnNldDIsIHRydWUpOwogICAgIGF1dG8gZW5kID0gYm91bmRhcnlQb2ludChhbHJlYWR5SW5P
cmRlciA/IGNoYXJhY3Rlck9mZnNldDIgOiBjaGFyYWN0ZXJPZmZzZXQxLCBmYWxzZSk7CiAgICAg
aWYgKCFzdGFydCB8fCAhZW5kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgKnN0YXJ0LCAqIGVuZCB9IH07
CiB9CiAKQEAgLTI0NTIsMTYgKzI0NTIsMTYgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmpl
Y3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXIKIE9w
dGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCiB7CiAgICAg
aWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlz
aWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwogICAgIE5vZGUqIGRvbU5vZGUgPSBkZWVwUG9zLmRl
cHJlY2F0ZWROb2RlKCk7CiAgICAgQVNTRVJUKGRvbU5vZGUpOwogICAgIGlmICghZG9tTm9kZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVycmluZyB0
byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCiAgICAgLy8g
c2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQgdGhl
IG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCkBAIC0yNDc1LDcgKzI0NzUsNyBA
QCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUKICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0
ZShkb21Ob2RlKTsKIAogICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3Rh
bmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNl
LgpAQCAtMjUwMCwxNSArMjUwMCwxNSBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQ
b3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250
cm9sKQogewogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pih0ZXh0Q29udHJvbCkgJiYgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpLmlzUGFzc3dvcmRGaWVsZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVudCgpLmF4
T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwogICAg
IGlmICghb2JqKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5z
dGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVu
Y2UuCiAgICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1h
cmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDNmNzRlOTVlOTFhZDc5ZDUyODM4YTcwZWQ4YWVh
N2QyMzEwYWRhNWYuLjVjM2JmMmYxN2Y2ODk3ZGIxNTgzY2VkYzM1MDZiOTU5NWFlYTg4YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC02MjEs
NyArNjIxLDcgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNo
YW5nZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxl
Y3RlZENoaWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpzZXRJc1N5bmNocm9uaXppbmdTZWxlY3Rpb24oYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpzZXRUZXh0U2VsZWN0aW9uSW50ZW50KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50JikgeyB9Ci1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6
OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
LCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KK2lubGlu
ZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRD
aGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogaW5saW5lIEludFJlY3QgQVhPYmplY3RD
YWNoZTo6YWJzb2x1dGVDYXJldEJvdW5kc0ZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIGlubGluZSBDaGFyYWN0ZXJPZmZzZXQg
QVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgoaW50LCBjb25zdCBBWENvcmVP
YmplY3QqKSB7IHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsgfQogaW5saW5lIENoYXJhY3Rlck9m
ZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBib29sLCBib29sKSB7IHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKaW5kZXggNTQzOTUyOWFhNzk2MDkzOTg5ZWJkNDNhZGFlZWY4OGM0ZGRmZmIyNy4u
NWRmZGQ4ZDIzYmEyZjYwOTFmZjRmYWQ2ZjYxMzM5NmM4MTk0MTk1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0y
ODEsMjAgKzI4MSwyMCBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcwogewogICAgIGF1dG8gbm9k
ZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGcmFtZSogZnJhbWUg
PSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFZGl0b3ImIGVk
aXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKIAogICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hl
Y2tlciA9IGVkaXRvci50ZXh0Q2hlY2tlcigpOwogICAgIGlmICghdGV4dENoZWNrZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBtaXNzcGVsbGluZ3M7CiAgICAgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoKnRleHRDaGVja2VyLCBzdHJpbmdWYWx1ZSgpLCBUZXh0Q2hlY2tpbmdU
eXBlOjpTcGVsbGluZywgbWlzc3BlbGxpbmdzLCBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkpOwpAQCAtMzE0LDcgKzMxNCw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjptaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmJsb2NrcXVvdGVMZXZl
bCgpIGNvbnN0CkBAIC01MjYsNyArNTI2LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5nZUluRGlyZWN0aW8KIHsK
ICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGlyZWN0aW9uID09IEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwogICAgIEZpbmRPcHRpb25zIGZpbmRP
cHRpb25zIHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5zZW5zaXRpdmUsIFN0YXJ0
SW5TZWxlY3Rpb24gfTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8g
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0
byByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCkpCiAg
ICAgICAgIHJldHVybiAqcmFuZ2U7CkBAIC01OTEsNyArNTkxLDcgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2UoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHMKICAgICAgICAgaWYgKGVsZW1lbnQoKSAmJiBlbGVtZW50KCktPmlzVGV4dEZpZWxk
KCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmQtPnN0YXJ0Q29udGFpbmVyKCkuaXNEZXNjZW5k
YW50T3JTaGFkb3dEZXNjZW5kYW50T2YoZWxlbWVudCgpKQogICAgICAgICAgICAgICAgIHx8ICFm
b3VuZC0+ZW5kQ29udGFpbmVyKCkuaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoZWxl
bWVudCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
IGZvdW5kOwpAQCAtMTEwNywxNyArMTEwNywxNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQbGFpblRleAog
ewogICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSBnZXRMZW5ndGhGb3JUZXh0UmFuZ2UoKTsKICAg
ICBpZiAocmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGggPiB0ZXh0TGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8v
IEF2b2lkIHNldHRpbmcgc2VsZWN0aW9uIHRvIHVuZWRpdGFibGUgcGFyZW50IG5vZGUgaW4gRnJh
bWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UuIFNlZSB3ZWJraXQub3JnL2IvMjA2MDkzLgog
ICAgIGlmIChyYW5nZS5pc051bGwoKSAmJiAhdGV4dExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAo
QVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpIHsKICAgICAgICAgQ2hhcmFj
dGVyT2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLnN0
YXJ0LCB0aGlzKTsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGNhY2hlLT5jaGFyYWN0
ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5zdGFydCArIHJhbmdlLmxlbmd0aCwgdGhpcyk7CiAgICAg
ICAgIHJldHVybiBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHN0YXJ0
LCBlbmQpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0
aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBi
ZDcxY2YwZDM1MzY0MGIyNWVjN2U2NzYzZWNiZDY2ODI1ZTUxODE5Li40ODk0Zjg3NzFkY2E1Mzli
MTUyZjZmZWQ1NzEwN2NjMGQxZmE2OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMjM5Myw3ICsyMzkzLDcgQEAgLSAoTlNSYW5nZSlfY29udmVydFRvTlNS
YW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlCiAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4p
X2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlCiB7CiAgICAgaWYgKHJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBvdXIgY3JpdGljYWwgYXNzdW1wdGlvbiBp
cyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2RzIHRoYXQKICAgICAvLyBj
b25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUgc2VsZWN0aW9uCkBAIC0y
NDA1LDcgKzI0MDUsNyBAQCAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJh
bmdlOihOU1JhbmdlKXJhbmdlCiAgICAgYXV0byBzZWxlY3Rpb25Sb290ID0gZG9jdW1lbnQtPmZy
YW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKICAg
ICBhdXRvIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFzY29wZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpzY29wZSks
IHJhbmdlKTsKIH0KQEAgLTI3NzgsMTEgKzI3NzgsMTEgQEAgLSAoT3B0aW9uYWw8U2ltcGxlUmFu
Z2U+KXJhbmdlRnJvbU1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIHdpdGhUZXh0OihOU1N0cmlu
ZwogewogICAgIGF1dG8gb3JpZ2luYWxSYW5nZSA9IFtzZWxmIHJhbmdlRm9yVGV4dE1hcmtlcnM6
bWFya2Vyc107CiAgICAgaWYgKCFvcmlnaW5hbFJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAg
ICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBjYWNoZS0+cmFuZ2VNYXRjaGVzVGV4
dE5lYXJSYW5nZSgqb3JpZ2luYWxSYW5nZSwgdGV4dCk7CiB9CkBAIC0yODUxLDE3ICsyODUxLDE3
IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JDaGFy
YWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNlCiAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFu
Z2VGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCiB7CiAgICAgaWYgKFt0ZXh0
TWFya2VycyBjb3VudF0gIT0gMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciAqc3RhcnRNYXJrZXIgPSBbdGV4dE1hcmtlcnMgb2JqZWN0QXRJbmRleDowXTsKICAgICBX
ZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqZW5kTWFya2VyID0gW3RleHRNYXJrZXJzIG9iamVj
dEF0SW5kZXg6MV07CiAgICAgCiAgICAgaWYgKCFbc3RhcnRNYXJrZXIgaXNLaW5kT2ZDbGFzczpb
V2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgY2xhc3NdXSB8fCAhW2VuZE1hcmtlciBpc0tpbmRP
ZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11dKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIENoYXJhY3Rlck9mZnNldCBzdGFy
dENoYXJhY3Rlck9mZnNldCA9IFtzdGFydE1hcmtlciBjaGFyYWN0ZXJPZmZzZXRdOwogICAgIENo
YXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBbZW5kTWFya2VyIGNoYXJhY3Rlck9m
ZnNldF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGFlNWMzZDkxNWQwZWQ1MTRi
NjIyOGM3OGQxOGE5YTM2NDMwZTE1NjguLmQ2NDY3MDYxYzY1ZDQ4NzY4NTBiZTFhY2RmMjE3NGEz
ODIzMGY0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC05NzAsNyArOTcwLDcg
QEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OnJhbmdlRm9yUGxhaW5U
ZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmEKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7Ci0gICAgcmV0dXJu
IGF4T2JqZWN0ID8gYXhPYmplY3QtPnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoYXhSYW5nZSkgOiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmplY3QtPnJhbmdlRm9yUGxh
aW5UZXh0UmFuZ2UoYXhSYW5nZSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBBWElzb2xh
dGVkT2JqZWN0OjpzdHJpbmdGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpIGNvbnN0
CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9i
amVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZwogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhP
YmplY3QoKTsKLSAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+bWlzc3BlbGxpbmdSYW5n
ZShyYW5nZSwgZGlyZWN0aW9uKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXhPYmplY3Qg
PyBheE9iamVjdC0+bWlzc3BlbGxpbmdSYW5nZShyYW5nZSwgZGlyZWN0aW9uKSA6IHN0ZDo6bnVs
bG9wdDsKIH0KIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJlbGF0aXZlRnJhbWUoKSBj
b25zdApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0
ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVjdCgpOwotICAgIHJl
dHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT5lbGVtZW50UmFuZ2UoKSA6IFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+ZWxlbWVudFJhbmdlKCkgOiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIFN0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpzZWxlY3RlZFRleHQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RD
YWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2Fj
aGVNYWMubW0KaW5kZXggM2NmNGEyYThiMjYzMTEyYWFkYmRhZmVkZDAyOTljMmU0NDFjZDBiNi4u
Yzg4YTNkNjYxMzM2YTVkZTFlMGYxOTQ1OGUzOGMwMzI0Mjc2NzAxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC03
NjUsMTIgKzc2NSwxMiBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JUZXh0TWFya2Vy
UmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlcgogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFjYWNoZSB8fCAhdGV4dE1hcmtlclJhbmdlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBzdGFydFRleHRNYXJrZXIgPSBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KHRleHRN
YXJrZXJSYW5nZSk7CiAgICAgYXV0byBlbmRUZXh0TWFya2VyID0gQVhUZXh0TWFya2VyUmFuZ2VF
bmQodGV4dE1hcmtlclJhbmdlKTsKICAgICBpZiAoIXN0YXJ0VGV4dE1hcmtlciB8fCAhZW5kVGV4
dE1hcmtlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9mZnNldCA9
IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHN0YXJ0VGV4dE1hcmtlci5nZXQo
KSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9m
ZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIGVuZFRleHRNYXJrZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDQ0ODU4N2RhOGJjOGI0NTZmNWYx
Y2RmODNhMmJjNmVjOGI5N2I5NjcuLmFkYzc0MDU4NWU5MjFlMDFiMmVkOThmNWNkNjBhN2IxYWY5
NWM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAgLTY2
MSw3ICs2NjEsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdQogc3RhdGljIE9wdGlvbmFsPEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXkqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50
IGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgYWNjZXNz
aWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhhcnJheUVsZW1lbnQpIH0gfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAppbmRleCA3MmE5ZWYxYjUx
Y2ZhN2JlMDRlN2M5YjVjNjM4YjE4NDI0MDY1NDIyLi5jOWU4ZGYxZmNkNTg3ZTlhMWEyODAyY2Y4
NDQyODk1YjI5ZDFiYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5p
bWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
RWZmZWN0LmNwcApAQCAtODIsNyArODIsNyBAQCBCYXNpY0VmZmVjdFRpbWluZyBBbmltYXRpb25F
ZmZlY3Q6OmdldEJhc2ljVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkgYwogICAg
ICAgICAvLyBPdGhlcndpc2UsIHRoZSBsb2NhbCB0aW1lIGlzIHVucmVzb2x2ZWQuCiAgICAgICAg
IGlmIChtX2FuaW1hdGlvbikKICAgICAgICAgICAgIHJldHVybiBtX2FuaW1hdGlvbi0+Y3VycmVu
dFRpbWUoc3RhcnRUaW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9KCk7CiAKICAgICBhdXRvIHBoYXNlID0gW3RoaXMs
IGxvY2FsVGltZV0oKSAtPiBBbmltYXRpb25FZmZlY3RQaGFzZSB7CkBAIC0xMzUsNyArMTM1LDcg
QEAgQmFzaWNFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhPcHRp
b25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGMKICAgICAgICAgICAgIGlmIChtX2ZpbGwgPT0gRmls
bE1vZGU6OkJhY2t3YXJkcyB8fCBtX2ZpbGwgPT0gRmlsbE1vZGU6OkJvdGgpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsb2NhbFRpbWUgLSBtX2RlbGF5LCAwX3MpOwogICAgICAg
ICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0aW1lIHZhbHVlLgotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgYW5pbWF0aW9uIGVmZmVjdCBp
cyBpbiB0aGUgYWN0aXZlIHBoYXNlLCByZXR1cm4gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIGxv
Y2FsIHRpbWUgLSBzdGFydCBkZWxheS4KQEAgLTE1MCwxMSArMTUwLDExIEBAIEJhc2ljRWZmZWN0
VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4g
c3RhcnRUaW1lKSBjCiAgICAgICAgICAgICBpZiAobV9maWxsID09IEZpbGxNb2RlOjpGb3J3YXJk
cyB8fCBtX2ZpbGwgPT0gRmlsbE1vZGU6OkJvdGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KHN0ZDo6bWluKCpsb2NhbFRpbWUgLSBtX2RlbGF5LCBtX2FjdGl2ZUR1cmF0aW9uKSwg
MF9zKTsKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIGFuIHVucmVzb2x2ZWQgdGlt
ZSB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gT3RoZXJ3aXNlICh0
aGUgbG9jYWwgdGltZSBpcyB1bnJlc29sdmVkKSwgcmV0dXJuIGFuIHVucmVzb2x2ZWQgdGltZSB2
YWx1ZS4KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9KCk7CiAKICAgICByZXR1cm4geyBsb2NhbFRpbWUsIGFjdGl2ZVRpbWUs
IG1fZW5kVGltZSwgbV9hY3RpdmVEdXJhdGlvbiwgcGhhc2UgfTsKQEAgLTE4NSw3ICsxODUsNyBA
QCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5n
KE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogCiAgICAgICAgIC8vIDEuIElmIHRoZSBhY3RpdmUg
dGltZSBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKCFhY3Rp
dmVUaW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gMi4gQ2FsY3VsYXRlIGFuIGluaXRpYWwg
dmFsdWUgZm9yIG92ZXJhbGwgcHJvZ3Jlc3MgYmFzZWQgb24gdGhlIGZpcnN0IG1hdGNoaW5nIGNv
bmRpdGlvbiBmcm9tIGJlbG93LAogICAgICAgICBkb3VibGUgb3ZlcmFsbFByb2dyZXNzOwpAQCAt
MjE0LDcgKzIxNCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0
Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAKICAgICAgICAgLy8gMS4g
SWYgdGhlIG92ZXJhbGwgcHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQu
CiAgICAgICAgIGlmICghb3ZlcmFsbFByb2dyZXNzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8g
Mi4gSWYgb3ZlcmFsbCBwcm9ncmVzcyBpcyBpbmZpbml0eSwgbGV0IHRoZSBzaW1wbGUgaXRlcmF0
aW9uIHByb2dyZXNzIGJlIGl0ZXJhdGlvbiBzdGFydCAlIDEuMCwKICAgICAgICAgLy8gb3RoZXJ3
aXNlLCBsZXQgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgYmUgb3ZlcmFsbCBwcm9ncmVz
cyAlIDEuMC4KQEAgLTI0MSw3ICsyNDEsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRp
b25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogCiAg
ICAgICAgIC8vIDEuIElmIHRoZSBhY3RpdmUgdGltZSBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5y
ZXNvbHZlZC4KICAgICAgICAgaWYgKCFhY3RpdmVUaW1lKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
Ly8gMi4gSWYgdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhlIGFmdGVyIHBoYXNlIGFuZCB0
aGUgaXRlcmF0aW9uIGNvdW50IGlzIGluZmluaXR5LCByZXR1cm4gaW5maW5pdHkuCiAgICAgICAg
IGlmIChwaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWZ0ZXIgJiYgc3RkOjppc2luZiht
X2l0ZXJhdGlvbnMpKQpAQCAtMjkwLDcgKzI5MCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFu
aW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRU
CiAKICAgICAgICAgLy8gMS4gSWYgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgaXMgdW5y
ZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICghc2ltcGxlSXRlcmF0aW9u
UHJvZ3Jlc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAyLiBDYWxjdWxhdGUgdGhlIGN1cnJl
bnQgZGlyZWN0aW9uICh3ZSBpbXBsZW1lbnQgdGhpcyBhcyBhIHNlcGFyYXRlIG1ldGhvZCkuCiAK
QEAgLTMxMCw3ICszMTAsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6
OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogICAgICAgICAvLwog
ICAgICAgICAvLyAxLiBJZiB0aGUgZGlyZWN0ZWQgcHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0
dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICghZGlyZWN0ZWRQcm9ncmVzcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGlmIChhdXRvIGl0ZXJhdGlvbkR1cmF0aW9uID0gbV9pdGVyYXRpb25EdXJh
dGlvbi5zZWNvbmRzKCkpIHsKICAgICAgICAgICAgIGJvb2wgYmVmb3JlID0gZmFsc2U7CkBAIC01
NDQsNyArNTQ0LDcgQEAgdm9pZCBBbmltYXRpb25FZmZlY3Q6OnNldFRpbWluZ0Z1bmN0aW9uKGNv
bnN0IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mIHRpbWluZ0Z1bmMKIE9wdGlvbmFsPGRvdWJsZT4g
QW5pbWF0aW9uRWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91YmxlIGl0ZXJhdGlvblBy
b2dyZXNzKSBjb25zdAogewogICAgIGlmICghaXM8U3RlcHNUaW1pbmdGdW5jdGlvbj4obV90aW1p
bmdGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG51bWJlck9mU3RlcHMgPSBkb3duY2FzdDxTdGVw
c1RpbWluZ0Z1bmN0aW9uPigqbV90aW1pbmdGdW5jdGlvbikubnVtYmVyT2ZTdGVwcygpOwogICAg
IGF1dG8gbmV4dFN0ZXBQcm9ncmVzcyA9IGNlaWwoaXRlcmF0aW9uUHJvZ3Jlc3MgKiBudW1iZXJP
ZlN0ZXBzKSAvIG51bWJlck9mU3RlcHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uRWZmZWN0LmgKaW5kZXggZmRkYzg2NzJmZjUwZTVkMzdmMGUzZGJjNjFiNDE1MzUwZTYzMzFm
YS4uYTAyZDI2MjljY2JiOTI5NzQxMzQyYWNkN2RhMTBhMTQ4YzVjNzBkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaApAQCAtNTUsMTMgKzU1LDEzIEBAIHB1
YmxpYzoKIAogICAgIEVmZmVjdFRpbWluZyBnZXRCaW5kaW5nc1RpbWluZygpIGNvbnN0OwogICAg
IEVmZmVjdFRpbWluZyBnZXRUaW1pbmcoKSBjb25zdDsKLSAgICBCYXNpY0VmZmVjdFRpbWluZyBn
ZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Cisg
ICAgQmFzaWNFZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldEJpbmRpbmdz
Q29tcHV0ZWRUaW1pbmcoKSBjb25zdDsKLSAgICBDb21wdXRlZEVmZmVjdFRpbWluZyBnZXRDb21w
dXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAg
Q29tcHV0ZWRFZmZlY3RUaW1pbmcgZ2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGJpbmRpbmdzVXBk
YXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gdXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6
bnVsbG9wdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNl
Y29uZHM+ID0gc3RkOjpudWxsb3B0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkRpZFRpY2soKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGlvbkRpZFBsYXkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKaW5kZXggODI5YTNiZGEzZDg4
M2RmODU3NzEwNGZjMmU4NTkwZWE5MmNiMTE4Zi4uYTI2NzBkNzkyMDk2OGMwYTI1NDFkNzZmNjFi
MjAwM2U0NWE4NDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblBsYXliYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25QbGF5YmFja0V2ZW50LmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIEFuaW1hdGlvblBsYXli
YWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
Y29uc3QgQW5pCiAgICAgaWYgKGluaXRpYWxpemVyLmN1cnJlbnRUaW1lKQogICAgICAgICBtX2N1
cnJlbnRUaW1lID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqaW5pdGlhbGl6ZXIuY3VycmVu
dFRpbWUpOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXJyZW50VGltZSA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpbml0aWFs
aXplci50aW1lbGluZVRpbWUpCiAgICAgICAgIG1fdGltZWxpbmVUaW1lID0gU2Vjb25kczo6ZnJv
bU1pbGxpc2Vjb25kcygqaW5pdGlhbGl6ZXIudGltZWxpbmVUaW1lKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fdGltZWxpbmVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3RpbWVsaW5lVGlt
ZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6QW5pbWF0aW9u
UGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRpb25hbDxTZWNvbmRzPiBj
dXJyZW50VGltZSwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lLCBXZWJBbmltYXRpb24q
IGFuaW1hdGlvbikKQEAgLTU4LDE0ICs1OCwxNCBAQCBBbmltYXRpb25QbGF5YmFja0V2ZW50Ojp+
QW5pbWF0aW9uUGxheWJhY2tFdmVudCgpID0gZGVmYXVsdDsKIE9wdGlvbmFsPGRvdWJsZT4gQW5p
bWF0aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50VGltZSgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2N1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25z
QVBJVGltZShtX2N1cnJlbnRUaW1lLnZhbHVlKCkpOwogfQogCiBPcHRpb25hbDxkb3VibGU+IEFu
aW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzVGltZWxpbmVUaW1lKCkgY29uc3QKIHsKICAg
ICBpZiAoIXRpbWVsaW5lVGltZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZSh0aW1lbGluZVRpbWUoKS52YWx1ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggYWVmMzFkMzAxZTc1ODBh
ZTI0Y2Q1Yjc2YTJiMTQwYzZiYmI4NTU5Yy4uNTAyNzQ0ZGZkYjI0NmExZjY0NDFmYjFjN2YxYmI5
ZWQ5ZGM0OTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
blRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uVGlt
ZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQogewogICAgIGF1dG8gdGltZSA9IGN1cnJlbnRU
aW1lKCk7CiAgICAgaWYgKCF0aW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZSgqdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDdkMmNiOTE3NGNiMjg1NzhkMGMwZGY2MDc1
OGRlMDY5ODViNzMzYTcuLjFiNDI3YjdlN2JiNjYxZmI4OTM1NTMwNjc4MWJlMWM1YmUwODE1OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcApAQCAtMTk2MCw3ICsxOTYwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBB
dXRvUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5V3JhcHBlcjxUPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXV0b1Byb3BlcnR5V3Jh
cHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBj
b25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHlsZTo6
KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRlcikoKSwg
T3B0aW9uYWw8VD4gbWluVmFsdWUgPSBXVEY6Om51bGxvcHQpCisgICAgQXV0b1Byb3BlcnR5V3Jh
cHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBj
b25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29sIChSZW5kZXJTdHlsZTo6
KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqYXV0b1NldHRlcikoKSwg
T3B0aW9uYWw8VD4gbWluVmFsdWUgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogUHJvcGVydHlX
cmFwcGVyPFQ+KHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlcikKICAgICAgICAgLCBtX2F1dG9HZXR0
ZXIoYXV0b0dldHRlcikKICAgICAgICAgLCBtX2F1dG9TZXR0ZXIoYXV0b1NldHRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCmluZGV4
IDdhNjQ0ZDNjYWQyYTk5MDI3M2NmYWFjMGE3ZTJiZTZhODkzMDdiYTguLjcyNWU4ZmJhYTBiMTg2
MzM4NjMzMTBmMjk3ZjI4ZTk5MDExM2U4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCBjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9vd25pbmdFbGVtZW50KQogICAgICAgICByZXR1cm4g
U3R5bGVhYmxlKCptX293bmluZ0VsZW1lbnQuZ2V0KCksIG1fb3duaW5nUHNldWRvSWQpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6dGljaygpCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBE
ZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgU2Vjb25kcwogCiAgICAgYXV0byB0aW1lID0gc2Vjb25kc1RvV2ViQW5pbWF0aW9u
c0FQSVRpbWUoZWxhcHNlZFRpbWUpIC8gMTAwMDsKICAgICBhdXRvIHBzZXVkb0lkID0gcHNldWRv
SWRBc1N0cmluZyhtX293bmluZ1BzZXVkb0lkKTsKLSAgICBhdXRvIHRpbWVsaW5lVGltZSA9IHRp
bWVsaW5lKCkgPyB0aW1lbGluZSgpLT5jdXJyZW50VGltZSgpIDogV1RGOjpudWxsb3B0OworICAg
IGF1dG8gdGltZWxpbmVUaW1lID0gdGltZWxpbmUoKSA/IHRpbWVsaW5lKCktPmN1cnJlbnRUaW1l
KCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBldmVudCA9IGNyZWF0ZUV2ZW50KGV2ZW50VHlw
ZSwgdGltZSwgcHNldWRvSWQsIHRpbWVsaW5lVGltZSk7CiAgICAgZXZlbnQtPnNldFRhcmdldCht
X293bmluZ0VsZW1lbnQuZ2V0KCkpOwogICAgIGVucXVldWVBbmltYXRpb25FdmVudChXVEZNb3Zl
KGV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5j
cHAKaW5kZXggYWYzYWMyYzY0OWI0MjI5NzEyYjFhMTA4OWRlMjM3OGEwZDMxMjg4YS4uNDkxNDQx
MThlMjdiNzE0N2NiOWZkOTBjYTQ5YmYwYjM0Mzc1NjU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIE9wdGlv
bmFsPFNlY29uZHM+IERvY3VtZW50VGltZWxpbmU6OmN1cnJlbnRUaW1lKCkKICAgICBpZiAoYXV0
byogY29udHJvbGxlciA9IHRoaXMtPmNvbnRyb2xsZXIoKSkgewogICAgICAgICBpZiAoYXV0byBj
dXJyZW50VGltZSA9IGNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpCiAgICAgICAgICAgICByZXR1
cm4gKmN1cnJlbnRUaW1lIC0gbV9vcmlnaW5UaW1lOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gQW5p
bWF0aW9uVGltZWxpbmU6OmN1cnJlbnRUaW1lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCmluZGV4IGNi
MjZjN2JkN2U0NDQyMzY1ZTUzMTgyMzVjZTc5ZmMyMDQ2NjJlZjIuLmJmOTJjYzcwNGNmNGM3NGI2
OWU3OTdlMzJmMzAzMWJmZGZiMDZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnJlc3VtZUFuaW1hdGlvbnMo
KQogICAgIGlmICghbV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jYWNo
ZWRDdXJyZW50VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZEN1cnJlbnRUaW1lID0g
c3RkOjpudWxsb3B0OwogCiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwogCkBAIC0yMTcsNyAr
MjE3LDcgQEAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIERvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlcjo6bGl2ZUN1cnJlbnRUaW1lKCkgY29uc3QKIE9wdGlvbmFsPFNlY29uZHM+IERvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKQogewogICAgIGlmICghbV9kb2N1bWVu
dC5kb21XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9jYWNoZWRDdXJyZW50VGltZSkKICAgICAg
ICAgY2FjaGVDdXJyZW50VGltZShsaXZlQ3VycmVudFRpbWUoKSk7CkBAIC0yNDksNyArMjQ5LDcg
QEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJlQ2xlYXJDYWNoZWRDdXJy
ZW50VGltZSgpCiAgICAgLy8gd2UncmUgZ3VhcmFudGVlZCB0byBoYXZlIGEgY29uc2lzdGVudCBj
dXJyZW50IHRpbWUgcmVwb3J0ZWQgZm9yIGFsbCB3b3JrIGhhcHBlbmluZyBpbiBhIGdpdmVuCiAg
ICAgLy8gSlMgZnJhbWUgb3IgdGhyb3VnaG91dCB1cGRhdGluZyBhbmltYXRpb25zIGluIFdlYkNv
cmUuCiAgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdPblZNSWRsZSAmJiAhbV9j
dXJyZW50VGltZUNsZWFyaW5nVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNrcygpKQotICAgICAgICBt
X2NhY2hlZEN1cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2NhY2hlZEN1cnJl
bnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCA3ZDEyMDEwZTYx
YTQ4OWFjMDY4ZmUwNjk5ZGJkYjM4NTAzZjc1YjllLi41NzFmMDM1YjI2Y2MwMzgyNWQ2ZTI5MWFk
NzM3YzQyMjAyM2M0Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZv
aWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAgICAg
ZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHByb3BlcnR5SW5kZXhlZEtl
eWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAgICAgICAgIG9mZnNldHMuYXBwZW5kKFdU
Rjo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zm
c2V0KSk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJf
dD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAgICAg
ICAgb2Zmc2V0cy5hcHBlbmQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgb2Zmc2V0cy5hcHBlbmQo
c3RkOjpudWxsb3B0KTsKIAogICAgIC8vIDYuIEFzc2lnbiBlYWNoIHZhbHVlIGluIG9mZnNldHMg
dG8gdGhlIGtleWZyYW1lIG9mZnNldCBvZiB0aGUga2V5ZnJhbWUgd2l0aCBjb3JyZXNwb25kaW5n
IHBvc2l0aW9uIGluIHByb3BlcnR5IGtleWZyYW1lcyB1bnRpbCB0aGUgZW5kIG9mIGVpdGhlciBz
ZXF1ZW5jZSBpcyByZWFjaGVkLgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5z
aXplKCkgJiYgaSA8IHBhcnNlZEtleWZyYW1lcy5zaXplKCk7ICsraSkKQEAgLTExNTIsNyArMTE1
Miw3IEBAIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnRh
cmdldFN0eWxlYWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdGFyZ2V0KQogICAgICAgICByZXR1
cm4gU3R5bGVhYmxlKCptX3RhcmdldCwgbV9wc2V1ZG9JZCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIEtleWZyYW1lRWZmZWN0
Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CkBAIC0xNDY5LDcgKzE0NjksNyBAQCB2b2lk
IEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSwgZG91YgogICAgICAgICAvLyAgICBvZmZzZXQgb2YgMCwgYSBwcm9wZXJ0
eSB2YWx1ZSBzZXQgdG8gdGhlIG5ldXRyYWwgdmFsdWUgZm9yIGNvbXBvc2l0aW9uLCBhbmQgYSBj
b21wb3NpdGUgb3BlcmF0aW9uIG9mIGFkZCwgYW5kIHByZXBlbmQgaXQgdG8gdGhlIGJlZ2lubmlu
ZyBvZgogICAgICAgICAvLyAgICBwcm9wZXJ0eS1zcGVjaWZpYyBrZXlmcmFtZXMuCiAgICAgICAg
IGlmICghbnVtYmVyT2ZLZXlmcmFtZXNXaXRoWmVyb09mZnNldCkgewotICAgICAgICAgICAgcHJv
cGVydHlTcGVjaWZpY0tleWZyYW1lcy5pbnNlcnQoMCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXMuaW5zZXJ0KDAsIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgICAgICBudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zmc2V0ID0gMTsKICAgICAgICAg
fQogCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRl
ZFByb3BlcnRpZXNJblN0eWxlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgZG91YgogICAgICAg
ICAvLyAgICBrZXlmcmFtZSBvZmZzZXQgb2YgMSwgYSBwcm9wZXJ0eSB2YWx1ZSBzZXQgdG8gdGhl
IG5ldXRyYWwgdmFsdWUgZm9yIGNvbXBvc2l0aW9uLCBhbmQgYSBjb21wb3NpdGUgb3BlcmF0aW9u
IG9mIGFkZCwgYW5kIGFwcGVuZCBpdCB0byB0aGUgZW5kIG9mCiAgICAgICAgIC8vICAgIHByb3Bl
cnR5LXNwZWNpZmljIGtleWZyYW1lcy4KICAgICAgICAgaWYgKCFudW1iZXJPZktleWZyYW1lc1dp
dGhPbmVPZmZzZXQpIHsKLSAgICAgICAgICAgIHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXMuYXBw
ZW5kKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBwcm9wZXJ0eVNwZWNpZmljS2V5ZnJhbWVz
LmFwcGVuZChzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgbnVtYmVyT2ZLZXlmcmFtZXNXaXRo
T25lT2Zmc2V0ID0gMTsKICAgICAgICAgfQogCkBAIC0xNzMxLDcgKzE3MzEsNyBAQCBPcHRpb25T
ZXQ8QWNjZWxlcmF0ZWRBY3Rpb25BcHBsaWNhdGlvblJlc3VsdD4gS2V5ZnJhbWVFZmZlY3Q6OmFw
cGx5UGVuZGluZ0FjY2VsZQogICAgIG1fcGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucy5jbGVhcigp
OwogCiAgICAgLy8gVG8gc2ltcGxpZnkgdGhlIGNvZGUgd2UgdXNlIGEgZGVmYXVsdCBvZiAwcyBm
b3IgYW4gdW5yZXNvbHZlZCBjdXJyZW50IHRpbWUgc2luY2UgZm9yIGEgU3RvcCBhY3Rpb24gdGhh
dCBpcyBhY2NlcHRhYmxlLgotICAgIGF1dG8gdGltZU9mZnNldCA9IGFuaW1hdGlvbigpLT5jdXJy
ZW50VGltZSgpLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkgLSBkZWxheSgpLnNlY29uZHMoKTsKKyAg
ICBhdXRvIHRpbWVPZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRpbWUoKS52YWx1ZV9vcigw
X3MpLnNlY29uZHMoKSAtIGRlbGF5KCkuc2Vjb25kcygpOwogCiAgICAgYXV0byBzdGFydEFuaW1h
dGlvbiA9IFsmXSgpIC0+IFJ1bm5pbmdBY2NlbGVyYXRlZCB7CiAgICAgICAgIGlmIChtX3J1bm5p
bmdBY2NlbGVyYXRlZCA9PSBSdW5uaW5nQWNjZWxlcmF0ZWQ6OlllcykKQEAgLTIwMDUsMTQgKzIw
MDUsMTQgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5l
eHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICAgICAgcmV0dXJuIHByb2dyZXNz
OwogCiAgICAgaWYgKCFpczxMaW5lYXJUaW1pbmdGdW5jdGlvbj4odGltaW5nRnVuY3Rpb24oKSkg
fHwgIW1fc29tZUtleWZyYW1lc1VzZVN0ZXBzVGltaW5nRnVuY3Rpb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
bV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHByb2dyZXNzVW50
aWxOZXh0U3RlcEluSW50ZXJ2YWwgPSBbaXRlcmF0aW9uUHJvZ3Jlc3NdKGRvdWJsZSBpbnRlcnZh
bFN0YXJ0UHJvZ3Jlc3MsIGRvdWJsZSBpbnRlcnZhbEVuZFByb2dyZXNzLCBUaW1pbmdGdW5jdGlv
biogdGltaW5nRnVuY3Rpb24pIC0+IE9wdGlvbmFsPGRvdWJsZT4gewogICAgICAgICBpZiAoIWlz
PFN0ZXBzVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGF1dG8gbnVtYmVyT2ZTdGVwcyA9IGRvd25jYXN0PFN0ZXBzVGltaW5nRnVuY3Rpb24+KCp0
aW1pbmdGdW5jdGlvbikubnVtYmVyT2ZTdGVwcygpOwogICAgICAgICBhdXRvIGludGVydmFsUHJv
Z3Jlc3MgPSBpbnRlcnZhbEVuZFByb2dyZXNzIC0gaW50ZXJ2YWxTdGFydFByb2dyZXNzOwpAQCAt
MjAzMyw3ICsyMDMzLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jl
c3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICAgICAgaWYgKCFp
KSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24oKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHByb2dyZXNzVW50aWxOZXh0U3RlcEluSW50ZXJ2YWwoMCwgaW50
ZXJ2YWxFbmRQcm9ncmVzcywgZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+KCphbmltYXRp
b24oKSkuYmFja2luZ0FuaW1hdGlvbigpLnRpbWluZ0Z1bmN0aW9uKCkpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NVbnRpbE5leHRTdGVwSW5JbnRlcnZh
bChtX2JsZW5kaW5nS2V5ZnJhbWVzW2kgLSAxXS5rZXkoKSwgaW50ZXJ2YWxFbmRQcm9ncmVzcywg
dGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZUF0SW5kZXgoaSAtIDEpKTsKQEAgLTIwNDcsNyArMjA0
Nyw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnByb2dyZXNzVW50aWxOZXh0
U3RlcChkb3VibGUgaXRlcmF0aW9uUHJvZ3Jlc3MpCiAgICAgICAgIHJldHVybiBwcm9ncmVzc1Vu
dGlsTmV4dFN0ZXBJbkludGVydmFsKGxhc3RFeHBsaWNpdEtleWZyYW1lLmtleSgpLCAxLCBkb3du
Y2FzdDxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbigpKS5iYWNraW5nQW5pbWF0aW9u
KCkudGltaW5nRnVuY3Rpb24oKSk7CiAKICAgICAvLyBJbiBhbnkgb3RoZXIgY2FzZSwgd2UgYXJl
IG5vdCBkZWFsaW5nIHdpdGggYW4gaW50ZXJ2YWwgd2l0aCBhIHN0ZXBzKCkgdGltaW5nIGZ1bmN0
aW9uLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogU2Vjb25kcyBLZXlmcmFtZUVmZmVjdDo6dGltZVRvTmV4dFRpY2soKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCA5ODdlOTIyNGM1ODRk
MjFmNTUwZTJjYjQ1MGI4ZTQ2NzZiNzM2NmUyLi41OGRhOGRmYzAyNzMzZDBhYmI2ZjUwYzI1Yzlh
ZjUyYzdkYjg4ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3Qu
aApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbXBvc2l0ZShDb21w
b3NpdGVPcGVyYXRpb24gY29tcG9zaXRlT3BlcmF0aW9uKSB7IG1fY29tcG9zaXRlT3BlcmF0aW9u
ID0gY29tcG9zaXRlT3BlcmF0aW9uOyB9CiAKICAgICB2b2lkIGdldEFuaW1hdGVkU3R5bGUoc3Rk
Ojp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7Ci0gICAgdm9pZCBhcHBs
eShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVt
ZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIG92
ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgYW5pbWF0
aW9uRGlkVGljaygpIGZpbmFsOwogICAgIHZvaWQgYW5pbWF0aW9uRGlkUGxheSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCA5MGZlMjlhYmIz
MzM5NjQ4N2ZiZDc2YmRlZDYyODdlZjI4NDhjZWFhLi43ZTU1NDQwMTk2OTcyNmRlNTU1Yjc2NzM5
ZjNhMGI0NzllZTIyZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcApAQCAtMjA2LDggKzIwNiw4IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRFZmZlY3RJbnRl
cm5hbChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0PiYmIG5ld0VmZmVjdCwgYm9vbCBkCiAKICAgICBh
dXRvIG9sZEVmZmVjdCA9IHN0ZDo6ZXhjaGFuZ2UobV9lZmZlY3QsIFdURk1vdmUobmV3RWZmZWN0
KSk7CiAKLSAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8
S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xk
RWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9l
ZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0
U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxl
PiBwcmV2aW91c1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihvbGRFZmZlY3QpID8gZG93bmNh
c3Q8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpIDog
c3RkOjpudWxsb3B0OworICAgIE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gbmV3VGFyZ2V0ID0g
aXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSA/IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Piht
X2VmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpIDogc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gVXBkYXRlIHRoZSBlZmZlY3QtdG8tYW5pbWF0aW9uIHJlbGF0aW9uc2hpcHMgYW5kIHRoZSB0
aW1lbGluZSdzIGFuaW1hdGlvbiBtYXAuCiAgICAgaWYgKG9sZEVmZmVjdCkgewpAQCAtMjM3LDcg
KzIzNyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9u
VGltZWxpbmU+JiYgdGltZWxpbmUpCiAKICAgICAvLyA0LiBJZiB0aGUgYW5pbWF0aW9uIHN0YXJ0
IHRpbWUgb2YgYW5pbWF0aW9uIGlzIHJlc29sdmVkLCBtYWtlIGFuaW1hdGlvbidzIGhvbGQgdGlt
ZSB1bnJlc29sdmVkLgogICAgIGlmIChtX3N0YXJ0VGltZSkKLSAgICAgICAgbV9ob2xkVGltZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAgICAgICAgIGlmIChhdXRvIHRh
cmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSktPnRhcmdldFN0
eWxlYWJsZSgpKSB7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OmVmZmVj
dFRhcmdldERpZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW8K
IE9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc1N0YXJ0VGltZSgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3N0YXJ0VGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vjb25kc1RvV2ViQW5p
bWF0aW9uc0FQSVRpbWUoKm1fc3RhcnRUaW1lKTsKIH0KIApAQCAtMzA1LDcgKzMwNSw3IEBAIHZv
aWQgV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGltZShPcHRpb25hbDxkb3VibGU+IG5l
d1N0YXJ0VGltZSkKICAgICBpZiAobmV3U3RhcnRUaW1lKQogICAgICAgICBzZXRTdGFydFRpbWUo
U2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqbmV3U3RhcnRUaW1lKSk7CiAgICAgZWxzZQotICAg
ICAgICBzZXRTdGFydFRpbWUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0U3RhcnRUaW1lKHN0
ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRTdGFydFRpbWUoT3B0aW9u
YWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQpAQCAtMzE2LDExICszMTYsMTEgQEAgdm9pZCBXZWJB
bmltYXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCiAg
ICAgLy8gMS4gTGV0IHRpbWVsaW5lIHRpbWUgYmUgdGhlIGN1cnJlbnQgdGltZSB2YWx1ZSBvZiB0
aGUgdGltZWxpbmUgdGhhdCBhbmltYXRpb24gaXMgYXNzb2NpYXRlZCB3aXRoLiBJZgogICAgIC8v
ICAgIHRoZXJlIGlzIG5vIHRpbWVsaW5lIGFzc29jaWF0ZWQgd2l0aCBhbmltYXRpb24gb3IgdGhl
IGFzc29jaWF0ZWQgdGltZWxpbmUgaXMgaW5hY3RpdmUsIGxldCB0aGUgdGltZWxpbmUKICAgICAv
LyAgICB0aW1lIGJlIHVucmVzb2x2ZWQuCi0gICAgYXV0byB0aW1lbGluZVRpbWUgPSBtX3RpbWVs
aW5lID8gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IHRpbWVsaW5lVGltZSA9IG1fdGltZWxpbmUgPyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIDog
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gSWYgdGltZWxpbmUgdGltZSBpcyB1bnJlc29sdmVk
IGFuZCBuZXcgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwgbWFrZSBhbmltYXRpb24ncyBob2xkIHRp
bWUgdW5yZXNvbHZlZC4KICAgICBpZiAoIXRpbWVsaW5lVGltZSAmJiBuZXdTdGFydFRpbWUpCi0g
ICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1faG9sZFRpbWUgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICAvLyAzLiBMZXQgcHJldmlvdXMgY3VycmVudCB0aW1lIGJlIGFu
aW1hdGlvbidzIGN1cnJlbnQgdGltZS4KICAgICBhdXRvIHByZXZpb3VzQ3VycmVudFRpbWUgPSBj
dXJyZW50VGltZSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRT
dGFydFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQogICAgICAgICAvLyBJZiBu
ZXcgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwKICAgICAgICAgLy8gSWYgYW5pbWF0aW9uJ3MgcGxh
eWJhY2sgcmF0ZSBpcyBub3QgemVybywgbWFrZSBhbmltYXRpb24ncyBob2xkIHRpbWUgdW5yZXNv
bHZlZC4KICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQotICAgICAgICAgICAgbV9ob2xkVGlt
ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3RoZXJ3aXNlIChuZXcgc3RhcnQgdGltZSBpcyB1
bnJlc29sdmVkKSwKICAgICAgICAgLy8gU2V0IGFuaW1hdGlvbidzIGhvbGQgdGltZSB0byBwcmV2
aW91cyBjdXJyZW50IHRpbWUgZXZlbiBpZiBwcmV2aW91cyBjdXJyZW50IHRpbWUgaXMgdW5yZXNv
bHZlZC4KQEAgLTM2MCwxNCArMzYwLDE0IEBAIE9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9u
OjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBhdXRvIHRpbWUgPSBjdXJyZW50
VGltZSgpOwogICAgIGlmICghdGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vjb25kc1RvV2ViQW5pbWF0
aW9uc0FQSVRpbWUodGltZS52YWx1ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5p
bWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4gY3VycmVudFRp
bWUpCiB7CiAgICAgaWYgKCFjdXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIHNldEN1cnJlbnRU
aW1lKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBzZXRDdXJyZW50VGltZShzdGQ6Om51
bGxvcHQpOwogICAgIHJldHVybiBzZXRDdXJyZW50VGltZShTZWNvbmRzOjpmcm9tTWlsbGlzZWNv
bmRzKGN1cnJlbnRUaW1lLnZhbHVlKCkpKTsKIH0KIApAQCAtMzkzLDEwICszOTMsMTAgQEAgT3B0
aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShSZXNwZWN0SG9sZFRpbWUg
cmVzcGVjdEhvbGRUaW1lLCBPcHQKICAgICAvLyAgICAgMy4gdGhlIGFuaW1hdGlvbidzIHN0YXJ0
IHRpbWUgaXMgdW5yZXNvbHZlZC4KICAgICAvLyBUaGUgY3VycmVudCB0aW1lIGlzIGFuIHVucmVz
b2x2ZWQgdGltZSB2YWx1ZS4KICAgICBpZiAoIW1fdGltZWxpbmUgfHwgIW1fdGltZWxpbmUtPmN1
cnJlbnRUaW1lKCkgfHwgIW1fc3RhcnRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gT3RoZXJ3aXNlLCBjdXJy
ZW50IHRpbWUgPSAodGltZWxpbmUgdGltZSAtIHN0YXJ0IHRpbWUpICogcGxheWJhY2sgcmF0ZQot
ICAgIHJldHVybiAoKm1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUudmFsdWVP
cigqbV9zdGFydFRpbWUpKSAqIG1fcGxheWJhY2tSYXRlOworICAgIHJldHVybiAoKm1fdGltZWxp
bmUtPmN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUudmFsdWVfb3IoKm1fc3RhcnRUaW1lKSkgKiBt
X3BsYXliYWNrUmF0ZTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzaWxl
bnRseVNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IHNlZWtUaW1lKQpAQCAtNDMxLDEw
ICs0MzEsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzaWxlbnRseVNldEN1
cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IHNlZWtUaW0KIAogICAgIC8vIDMuIElmIGFuaW1h
dGlvbiBoYXMgbm8gYXNzb2NpYXRlZCB0aW1lbGluZSBvciB0aGUgYXNzb2NpYXRlZCB0aW1lbGlu
ZSBpcyBpbmFjdGl2ZSwgbWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCiAg
ICAgaWYgKCFtX3RpbWVsaW5lIHx8ICFtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpKQotICAgICAg
ICBtX3N0YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyA0LiBNYWtlIGFuaW1hdGlvbidzIHByZXZpb3VzIGN1cnJlbnQg
dGltZSB1bnJlc29sdmVkLgotICAgIG1fcHJldmlvdXNDdXJyZW50VGltZSA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX3ByZXZpb3VzQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6c2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCiAgICAgICAg
IC8vIDIuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgdG8gYW5pbWF0aW9uLgogICAg
ICAgICBhcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKTsKICAgICAgICAgLy8gMy4gTWFrZSBhbmlt
YXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgICAgIG1fc3RhcnRUaW1lID0gV1RG
OjpudWxsb3B0OworICAgICAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
Ly8gNC4gQ2FuY2VsIHRoZSBwZW5kaW5nIHBhdXNlIHRhc2suCiAgICAgICAgIG1fdGltZVRvUnVu
UGVuZGluZ1BhdXNlVGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7CiAg
ICAgICAgIC8vIDUuIFJlc29sdmUgYW5pbWF0aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIHdp
dGggYW5pbWF0aW9uLgpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRQ
bGF5YmFja1JhdGUoZG91YmxlIG5ld1BsYXliYWNrUmF0ZSkKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jdXBkYXRpbmctdGhlLXBsYXliYWNrLXJhdGUt
b2YtYW4tYW5pbWF0aW9uCiAKICAgICAvLyAxLiBDbGVhciBhbnkgcGVuZGluZyBwbGF5YmFjayBy
YXRlIG9uIGFuaW1hdGlvbi4KLSAgICBtX3BlbmRpbmdQbGF5YmFja1JhdGUgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wZW5kaW5nUGxheWJhY2tSYXRlID0gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IC8vIDIuIExldCBwcmV2aW91cyB0aW1lIGJlIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aW1l
IG9mIGFuaW1hdGlvbiBiZWZvcmUgY2hhbmdpbmcgdGhlIHBsYXliYWNrIHJhdGUuCiAgICAgYXV0
byBwcmV2aW91c1RpbWUgPSBjdXJyZW50VGltZSgpOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjphcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKQogICAgIG1fcGxheWJhY2tS
YXRlID0gbV9wZW5kaW5nUGxheWJhY2tSYXRlLnZhbHVlKCk7CiAKICAgICAvLyAzLiBDbGVhciBh
bmltYXRpb24ncyBwZW5kaW5nIHBsYXliYWNrIHJhdGUuCi0gICAgbV9wZW5kaW5nUGxheWJhY2tS
YXRlID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogYXV0byBXZWJBbmltYXRpb246OnBsYXlTdGF0ZSgpIGNvbnN0IC0+IFBsYXlT
dGF0ZQpAQCAtNjU0LDE0ICs2NTQsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OmNhbmNlbCgpCiAg
ICAgICAgIC8vICAgIHRvIG9yaWdpbi1yZWxhdGl2ZSB0aW1lLCBsZXQgdGhlIHNjaGVkdWxlZCBl
dmVudCB0aW1lIGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhhdCBwcm9jZWR1cmUgdG8gdGlt
ZWxpbmUgdGltZS4gT3RoZXJ3aXNlLCB0aGUKICAgICAgICAgLy8gICAgc2NoZWR1bGVkIGV2ZW50
IHRpbWUgaXMgYW4gdW5yZXNvbHZlZCB0aW1lIHZhbHVlLgogICAgICAgICAvLyBPdGhlcndpc2Us
IHF1ZXVlIGEgdGFzayB0byBkaXNwYXRjaCBjYW5jZWxFdmVudCBhdCBhbmltYXRpb24uIFRoZSB0
YXNrIHNvdXJjZSBmb3IgdGhpcyB0YXNrIGlzIHRoZSBET00gbWFuaXB1bGF0aW9uIHRhc2sgc291
cmNlLgotICAgICAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChldmVudE5hbWVzKCku
Y2FuY2VsRXZlbnQsIFdURjo6bnVsbG9wdCwgbV90aW1lbGluZSA/IG1fdGltZWxpbmUtPmN1cnJl
bnRUaW1lKCkgOiBXVEY6Om51bGxvcHQpOworICAgICAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJh
Y2tFdmVudChldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIHN0ZDo6bnVsbG9wdCwgbV90aW1lbGlu
ZSA/IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgOiBzdGQ6Om51bGxvcHQpOwogICAgIH0KIAog
ICAgIC8vIDIuIE1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgbV9o
b2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gMy4gTWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCi0gICAg
bV9zdGFydFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9zdGFydFRpbWUgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICB0aW1pbmdEaWRDaGFuZ2UoRGlkU2Vlazo6Tm8sIFN5bmNocm9ub3VzbHlOb3Rp
Znk6Ok5vKTsKIApAQCAtNzYwLDcgKzc2MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1h
dGlvbjo6ZmluaXNoKCkKICAgICAvLyA2LiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgcGF1c2UgdGFz
ayBhbmQgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwKICAgICBpZiAoaGFzUGVuZGluZ1BhdXNlVGFz
aygpICYmIG1fc3RhcnRUaW1lKSB7CiAgICAgICAgIC8vIDEuIExldCB0aGUgaG9sZCB0aW1lIGJl
IHVucmVzb2x2ZWQuCi0gICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIDIuIENhbmNlbCB0aGUgcGVu
ZGluZyBwYXVzZSB0YXNrLgogICAgICAgICBtX3RpbWVUb1J1blBlbmRpbmdQYXVzZVRhc2sgPSBU
aW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkOwogICAgICAgICAvLyAzLiBSZXNvbHZl
IHRoZSBjdXJyZW50IHJlYWR5IHByb21pc2Ugb2YgYW5pbWF0aW9uIHdpdGggYW5pbWF0aW9uLgpA
QCAtODQ1LDcgKzg0NSw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRhdGVGaW5pc2hlZFN0YXRl
KERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlmeSBzeW5jCiAgICAgICAgICAgICBp
ZiAoZGlkU2VlayA9PSBEaWRTZWVrOjpZZXMgJiYgbV9ob2xkVGltZSkKICAgICAgICAgICAgICAg
ICBtX3N0YXJ0VGltZSA9IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkudmFsdWUoKSAtIChtX2hv
bGRUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZSk7CiAgICAgICAgICAgICAvLyAyLiBMZXQg
dGhlIGhvbGQgdGltZSBiZSB1bnJlc29sdmVkLgotICAgICAgICAgICAgbV9ob2xkVGltZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6Zmlu
aXNoTm90aWZpY2F0aW9uU3RlcHMoKQogICAgIC8vICAgIHF1ZXVlIGFsb25nIHdpdGggaXRzIHRh
cmdldCwgYW5pbWF0aW9uLiBGb3IgdGhlIHNjaGVkdWxlZCBldmVudCB0aW1lLCB1c2UgdGhlIHJl
c3VsdCBvZiBjb252ZXJ0aW5nIGFuaW1hdGlvbidzIHRhcmdldAogICAgIC8vICAgIGVmZmVjdCBl
bmQgdG8gYW4gb3JpZ2luLXJlbGF0aXZlIHRpbWUuCiAgICAgLy8gICAgT3RoZXJ3aXNlLCBxdWV1
ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggZmluaXNoRXZlbnQgYXQgYW5pbWF0aW9uLiBUaGUgdGFzayBz
b3VyY2UgZm9yIHRoaXMgdGFzayBpcyB0aGUgRE9NIG1hbmlwdWxhdGlvbiB0YXNrIHNvdXJjZS4K
LSAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChldmVudE5hbWVzKCkuZmluaXNoRXZl
bnQsIGN1cnJlbnRUaW1lKCksIG1fdGltZWxpbmUgPyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgp
IDogV1RGOjpudWxsb3B0KTsKKyAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChldmVu
dE5hbWVzKCkuZmluaXNoRXZlbnQsIGN1cnJlbnRUaW1lKCksIG1fdGltZWxpbmUgPyBtX3RpbWVs
aW5lLT5jdXJyZW50VGltZSgpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChpczxLZXlmcmFt
ZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAgICAgICAgIGlmIChhdXRvIHRhcmdldCA9IG1ha2VSZWZQ
dHIoZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCkudGFyZ2V0KCkpKSB7CkBAIC05
ODAsNyArOTgwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpwbGF5KEF1dG9S
ZXdpbmQgYXV0b1Jld2luZCkKIAogICAgIC8vIDYuIElmIGFuaW1hdGlvbidzIGhvbGQgdGltZSBp
cyByZXNvbHZlZCwgbGV0IGl0cyBzdGFydCB0aW1lIGJlIHVucmVzb2x2ZWQuCiAgICAgaWYgKG1f
aG9sZFRpbWUpCi0gICAgICAgIG1fc3RhcnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBt
X3N0YXJ0VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDcuIElmIGhhcyBwZW5kaW5nIHJl
YWR5IHByb21pc2UgaXMgZmFsc2UsIGxldCBhbmltYXRpb24ncyBjdXJyZW50IHJlYWR5IHByb21p
c2UgYmUgYSBuZXcgKHBlbmRpbmcpIFByb21pc2Ugb2JqZWN0LgogICAgIGlmICghaGFzUGVuZGlu
Z1JlYWR5UHJvbWlzZSkKQEAgLTEwMjYsMTggKzEwMjYsMTggQEAgdm9pZCBXZWJBbmltYXRpb246
OnJ1blBlbmRpbmdQbGF5VGFzaygpCiAgICAgICAgIC8vIFN1YnNlcXVlbnRseSwgdGhlIHJlc3Vs
dGluZyByZWFkeVRpbWUgdmFsdWUgY2FuIGJlIG51bGwuIFVuaWZ5IGJlaGF2aW9yIGJldHdlZW4g
QysrMTcgYW5kCiAgICAgICAgIC8vIEMrKzE0IGJ1aWxkcyAodGhlIGxhdHRlciB1c2luZyBXVEYn
cyBPcHRpb25hbCkgYW5kIGF2b2lkIG51bGwgT3B0aW9uYWwgZGVyZWZlcmVuY2luZwogICAgICAg
ICAvLyBieSBkZWZhdWx0aW5nIHRvIGEgU2Vjb25kcygwKSB2YWx1ZS4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYxODkuCi0gICAgICAgIGF1dG8gbmV3U3Rh
cnRUaW1lID0gcmVhZHlUaW1lLnZhbHVlT3IoMF9zKTsKKyAgICAgICAgYXV0byBuZXdTdGFydFRp
bWUgPSByZWFkeVRpbWUudmFsdWVfb3IoMF9zKTsKICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRl
KQogICAgICAgICAgICAgbmV3U3RhcnRUaW1lIC09IG1faG9sZFRpbWUudmFsdWUoKSAvIG1fcGxh
eWJhY2tSYXRlOwogICAgICAgICAvLyAzLiBTZXQgdGhlIHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9u
IHRvIG5ldyBzdGFydCB0aW1lLgogICAgICAgICBtX3N0YXJ0VGltZSA9IG5ld1N0YXJ0VGltZTsK
ICAgICAgICAgLy8gNC4gSWYgYW5pbWF0aW9uJ3MgcGxheWJhY2sgcmF0ZSBpcyBub3QgMCwgbWFr
ZSBhbmltYXRpb24ncyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKG1fcGxheWJh
Y2tSYXRlKQotICAgICAgICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfSBlbHNlIGlmIChtX3N0YXJ0VGlt
ZSAmJiBtX3BlbmRpbmdQbGF5YmFja1JhdGUpIHsKICAgICAgICAgLy8gSWYgYW5pbWF0aW9uJ3Mg
c3RhcnQgdGltZSBpcyByZXNvbHZlZCBhbmQgYW5pbWF0aW9uIGhhcyBhIHBlbmRpbmcgcGxheWJh
Y2sgcmF0ZSwKICAgICAgICAgLy8gMS4gTGV0IGN1cnJlbnQgdGltZSB0byBtYXRjaCBiZSB0aGUg
cmVzdWx0IG9mIGV2YWx1YXRpbmcgKHJlYWR5IHRpbWUgLSBzdGFydCB0aW1lKSDDlyBwbGF5YmFj
ayByYXRlIGZvciBhbmltYXRpb24uCi0gICAgICAgIGF1dG8gY3VycmVudFRpbWVUb01hdGNoID0g
KHJlYWR5VGltZS52YWx1ZU9yKDBfcykgLSBtX3N0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJh
Y2tSYXRlOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lVG9NYXRjaCA9IChyZWFkeVRpbWUudmFs
dWVfb3IoMF9zKSAtIG1fc3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1JhdGU7CiAgICAg
ICAgIC8vIDIuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgb24gYW5pbWF0aW9uLgog
ICAgICAgICBhcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKTsKICAgICAgICAgLy8gMy4gSWYgYW5p
bWF0aW9uJ3MgcGxheWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgYW5pbWF0aW9uJ3MgaG9sZCB0aW1l
IGJlIGN1cnJlbnQgdGltZSB0byBtYXRjaC4KQEAgLTEwNDUsNyArMTA0NSw3IEBAIHZvaWQgV2Vi
QW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAgICAgbV9ob2xkVGltZSA9
IGN1cnJlbnRUaW1lVG9NYXRjaDsKICAgICAgICAgLy8gNC4gTGV0IG5ldyBzdGFydCB0aW1lIGJl
IHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyByZWFkeSB0aW1lIC0gY3VycmVudCB0aW1lIHRvIG1h
dGNoIC8gcGxheWJhY2sgcmF0ZSBmb3IgYW5pbWF0aW9uLgogICAgICAgICAvLyBJZiB0aGUgcGxh
eWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgbmV3IHN0YXJ0IHRpbWUgYmUgc2ltcGx5IHJlYWR5IHRp
bWUuCi0gICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1lLnZhbHVlT3IoMF9zKTsK
KyAgICAgICAgYXV0byBuZXdTdGFydFRpbWUgPSByZWFkeVRpbWUudmFsdWVfb3IoMF9zKTsKICAg
ICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgbmV3U3RhcnRUaW1lIC09IGN1
cnJlbnRUaW1lVG9NYXRjaCAvIG1fcGxheWJhY2tSYXRlOwogICAgICAgICAvLyA1LiBTZXQgdGhl
IHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9uIHRvIG5ldyBzdGFydCB0aW1lLgpAQCAtMTE4MiwxNCAr
MTE4MiwxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1BhdXNlVGFzaygpCiAgICAg
ICAgIC8vIFN1YnNlcXVlbnRseSwgdGhlIHJlc3VsdGluZyByZWFkeVRpbWUgdmFsdWUgY2FuIGJl
IG51bGwuIFVuaWZ5IGJlaGF2aW9yIGJldHdlZW4gQysrMTcgYW5kCiAgICAgICAgIC8vIEMrKzE0
IGJ1aWxkcyAodGhlIGxhdHRlciB1c2luZyBXVEYncyBPcHRpb25hbCkgYW5kIGF2b2lkIG51bGwg
T3B0aW9uYWwgZGVyZWZlcmVuY2luZwogICAgICAgICAvLyBieSBkZWZhdWx0aW5nIHRvIGEgU2Vj
b25kcygwKSB2YWx1ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODYxODkuCi0gICAgICAgIG1faG9sZFRpbWUgPSAocmVhZHlUaW1lLnZhbHVlT3IoMF9zKSAt
IGFuaW1hdGlvblN0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJhY2tSYXRlOworICAgICAgICBt
X2hvbGRUaW1lID0gKHJlYWR5VGltZS52YWx1ZV9vcigwX3MpIC0gYW5pbWF0aW9uU3RhcnRUaW1l
LnZhbHVlKCkpICogbV9wbGF5YmFja1JhdGU7CiAgICAgfQogCiAgICAgLy8gMy4gQXBwbHkgYW55
IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSBvbiBhbmltYXRpb24uCiAgICAgYXBwbHlQZW5kaW5nUGxh
eWJhY2tSYXRlKCk7CiAKICAgICAvLyA0LiBNYWtlIGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUgdW5y
ZXNvbHZlZC4KLSAgICBtX3N0YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3N0YXJ0VGlt
ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDUuIFJlc29sdmUgYW5pbWF0aW9uJ3MgY3VycmVu
dCByZWFkeSBwcm9taXNlIHdpdGggYW5pbWF0aW9uLgogICAgIGlmICghbV9yZWFkeVByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKaW5k
ZXggOGVhMjVkZDE5ZGJhYTFmMTE4MmVmZjY1MGMxN2Y5ZTlhMjg4ZjRmNi4uN2ViODRjNmRkYTli
MDdjYWYwNDM5NzhjNjc5MTY4YzA5NDI1MmFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb24uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgQW5pbWF0aW9uVGlt
ZWxpbmUqIHRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5nZXQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYpOwog
Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gPSBX
VEY6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKE9w
dGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPik7CiAKICAgICBkb3VibGUgcGxh
eWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUgKyAwOyB9CkBAIC0xMjAs
NyArMTIwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNUaWNrKCkgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZWNvbmRzIHRpbWVUb05leHRU
aWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdl
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxT
ZWNvbmRzPiA9IFdURjo6bnVsbG9wdCk7CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmUoUmVuZGVy
U3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxl
LCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBlZmZlY3RUYXJn
ZXREaWRDaGFuZ2UoY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJn
ZXQsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCk7CiAgICAgdm9p
ZCBhY2NlbGVyYXRlZFN0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVy
ZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgZWZmZWN0RW5k
VGltZSgpIGNvbnN0OwogICAgIFdlYkFuaW1hdGlvbiYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwog
ICAgIFdlYkFuaW1hdGlvbiYgZmluaXNoZWRQcm9taXNlUmVzb2x2ZSgpOwotICAgIE9wdGlvbmFs
PFNlY29uZHM+IGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSwgT3B0aW9uYWw8U2Vjb25kcz4g
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1l
KFJlc3BlY3RIb2xkVGltZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNpbGVudGx5U2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8
U2Vjb25kcz4pOwogICAgIHZvaWQgZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKTsKICAgICBib29s
IGhhc1BlbmRpbmdQYXVzZVRhc2soKSBjb25zdCB7IHJldHVybiBtX3RpbWVUb1J1blBlbmRpbmdQ
YXVzZVRhc2sgIT0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggYzU0MTk4MTVhZDExNThkZDYwMTAxOTBmM2U4NTc3
NTgxY2U1YzA2Yy4uOGRjN2EwN2VmZTcxMzI5NTU2ZjdlYjVmMWJjMjk4MjcyOGM3YTQxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBJRExU
eXBlIHsKICAgICB1c2luZyBOdWxsYWJsZUlubmVyUGFyYW1ldGVyVHlwZSA9IE9wdGlvbmFsPElt
cGxlbWVudGF0aW9uVHlwZT47CiAKICAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBPcHRpb25hbDxJ
bXBsZW1lbnRhdGlvblR5cGU+OwotICAgIHN0YXRpYyBOdWxsYWJsZVR5cGUgbnVsbFZhbHVlKCkg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFs
dWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1
ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICBzdGF0
aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxs
YWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVByb3h5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAppbmRleCAyMmYwOWMzMTcyNjVj
Y2M4ZDE3MmQwMWY3MWYyNWQ5ZDMyZjIyMmRmLi42NGMzYmQ2Mjk5Y2ViMzYwM2EzYWFmODM4NGQ3
MzE5NTc2ZTIxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Q
cm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNl
UHJveHkuaApAQCAtMTQyLDcgKzE0Miw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgRE9NUHJvbWlz
ZVByb3h5PElETFR5cGU+Ojpwcm9taXNlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogaW5saW5lIHZvaWQgRE9NUHJvbWlzZVByb3h5PElETFR5
cGU+OjpjbGVhcigpCiB7Ci0gICAgbV92YWx1ZU9yRXhjZXB0aW9uID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2RlZmVycmVkUHJv
bWlzZXMuY2xlYXIoKTsKIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIGlubGluZSBKU0M6OkpTVmFs
dWUgRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD46OnByb21pc2UoSlNDOjpKU0dsb2JhbE9i
amVjdCYKIAogaW5saW5lIHZvaWQgRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD46OmNsZWFy
KCkKIHsKLSAgICBtX3ZhbHVlT3JFeGNlcHRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgbV92YWx1
ZU9yRXhjZXB0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIG1fZGVmZXJyZWRQcm9taXNlcy5jbGVh
cigpOwogfQogCkBAIC0yODEsNyArMjgxLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBET01Qcm9t
aXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETFR5cGU+Ojpwcm9taXNlKEpTQzo6SlMKIHRl
bXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBpbmxpbmUgdm9pZCBET01Qcm9taXNlUHJveHlXaXRo
UmVzb2x2ZUNhbGxiYWNrPElETFR5cGU+OjpjbGVhcigpCiB7Ci0gICAgbV92YWx1ZU9yRXhjZXB0
aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IHN0ZDo6bnVsbG9w
dDsKICAgICBtX2RlZmVycmVkUHJvbWlzZXMuY2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCA2ZjU0MjU5
NWMyZTlmNDZkZDM5OWZhODNkNWEyODgwMDBlNGRmZGRhLi5kZjVkMTU3ZjNiMTdmYTQ2MTM1Mzgz
MjdjNDQ4YzEzODg5OWYzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNTEzLDcgKzUxMyw3IEBAIE9wdGlvbmFsPEpT
Qzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmplY3Rpb24oSlNHbG9iYWxP
YmplY3QmIGxleGljCiAgICAgaWYgKCFpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUobGV4aWNh
bEdsb2JhbE9iamVjdCwga2V5LCBqc1ZhbHVlLCBrZXlQYXRoLnZhbHVlKCkpKSB7CiAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpKTsKICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIEV4Y2VwdGlvbihVbmtub3duRXJyb3IsICJDYW5ub3QgaW5qZWN0IGtleSBp
bnRvIHNjcmlwdCB2YWx1ZSJfcykpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBqc1ZhbHVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRp
b25zLmgKaW5kZXggYjk5NTNhMzJlZTExNTk4ZWIxZTBkOTMzOGZhZWZiODRmNjI1MTBiOC4uNWQz
NDA1YzhmZmI4MDhlMzA4MjFhY2JlNzVmMTY3NTI4OGU1ODI1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCkBAIC05Nyw3
ICs5Nyw3IEBAIHN0YXRpYyBkZWNsdHlwZShhdXRvKSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1B
Y2Nlc3NvckZ1bmN0b3IoSW5uZXJJdGVtQWNjZXNzb3ImCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFJldHVyblR5cGUgeyByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpIH07CiAgICAgICAgICAgICBp
ZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdC5yZXR1cm5WYWx1ZSgpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpIH07Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fTsKICAgICB9IGVsc2UgewogICAgICAgICB1c2luZyBSZXR1cm5UeXBlID0gdHlwZW5hbWUgSURM
VHlwZTo6SW1wbGVtZW50YXRpb25UeXBlOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyBkZWNs
dHlwZShhdXRvKSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IoSW5uZXJJ
dGVtQWNjZXNzb3ImCiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlubmVySXRlbUFjY2Vzc29y
KHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoIUlETFR5cGU6Omlz
TnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyBJ
RExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9OwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH07CiAgICAgfQogfQpAQCAtMTIyLDE3ICsxMjIsMTcgQEAgc3RhdGljIGF1dG8gYWNj
ZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwKICAgICAvLyBOT1RFOiBXaGlsZSBpdCBpcyBub3Qgc3BlY2lmaWVkLCBhIFN5bWJv
bCBjYW4gbmV2ZXIgYmUgYSAnc3VwcG9ydGVkIHByb3BlcnR5CiAgICAgLy8gbmFtZScgc28gd2Ug
Y2hlY2sgdGhhdCBmaXJzdC4KICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyAxLiBJZiBQIGlzIG5vdCBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lIG9mIE8sIHRo
ZW4gcmV0dXJuIGZhbHNlLgogICAgIGF1dG8gcmVzdWx0ID0gaXRlbUFjY2Vzc29yKHRoaXNPYmpl
Y3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAyLiBJZiBP
IGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiByZXR1cm4gZmFsc2UuCiAgICAgSlND
OjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkgfTsK
ICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KCZ0aGlzT2JqZWN0LCAm
bGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDMu
IElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhlIFtMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuCiAgICAgaWYg
KG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6WWVzICYmICF3b3Js
ZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5zaG91bGREaXNhYmxlTGVnYWN5T3ZlcnJpZGVCdWls
dEluc0JlaGF2aW9yKCkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIGF1dG8gYWNjZXNzVmlz
aWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwKICAgICAvLyAgICAyLiBTZXQgcHJvdG90eXBlIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGUgaW50
ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiBwcm90b3R5cGUuCiAgICAgYXV0byBwcm90
b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CiAgICAgaWYgKHByb3RvdHlwZS5pc09iamVjdCgpICYmIEpTQzo6YXNP
YmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNi4gUmV0dXJuIHRydWUuCiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydEFueS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55
LmgKaW5kZXggZjFkNzViN2ZhNGQxZjljODZhYzQzYWZiZDNkMjE2N2YzMzczOGU4MS4uZmJhMWMw
OWVhZTdmMmM2N2Q3MWFmNGVmNDYzOGI0YTg5MjVkMTY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmgKQEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXI8SURMQW55PiB7CiAgICAgICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IENvbnZl
cnRlcjxJRExBbnk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICByZXR1cm4g
SXRlbSB7IHZtLCByZXN1bHQgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCmluZGV4IGJmMTllOTczYTMwOTM2OTM2YWQz
MGZjZWE2ZjVlYTc0OTg5Nzc5YmMuLjQ4ZWExN2MwZWU3MjZiYjc5YWFlOTMzZDE3NjFiOWRhNDcw
MDMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dEludGVyZmFjZS5oCkBAIC05NSw3ICs5NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBWYXJpYWRpY0NvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IHsKICAgICB7CiAgICAgICAgIGF1
dG8qIHJlc3VsdCA9IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+Ojpjb252ZXJ0KGxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+IHsgKnJlc3VsdCB9OwogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5pb24uaAppbmRleCBmOGM3
MDFiZTE5MDYwYzQ5ZDY3YTVmMDBmYmY5YTY3Mjg1ZWZlZmEzLi5hMzIzNjZjOTM5MGZmMTI1MGEy
M2U2ZTRlYTMxY2FlNWYxZjRkMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydFVuaW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IENvbmRpdGlvbmFs
UmV0dXJuZXI8UmV0dXJuVHlwZSwgZmFsc2U+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
ICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBnZXQoVCYmKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9OwogCkBAIC03Miw3ICs3Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5
cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0dXJuVHlwZSwgVCwgZmFs
c2U+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29udmVydChKU0M6OkpTR2xv
YmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9OwogCkBAIC05MSw3
ICs5MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgQ29uZGl0aW9uYWxTZXF1ZW5jZUNvbnZlcnRlcjxSZXR1cm5UeXBlLCBULCBmYWxzZT4gewog
ICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJp
YWRpYy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMu
aAppbmRleCAxZmUzODkyM2MwODBiMWQzODU2OTQxYzg2ZmY2ZmYyMWE1OTk0YWI0Li40NDQzMjVm
NmQ3ZTdkNWM3MzhiNDZjYzU1MDY3ZmU4ZTJhOGI5MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKQEAgLTQwLDcgKzQwLDcgQEAg
c3RydWN0IFZhcmlhZGljQ29udmVydGVyIHsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29udmVydGVyPElETFR5
cGU+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAppbmRleCBi
MWQyN2Q0NWJjOTAyZWNlNTY1YTYzMjA4ZDg1NjcwYzE2ODcxNzRiLi5hM2M2YmRhNjNiZmUwZjBi
YTZiYjkxZWE2NjljODE5YTVkNzZlNjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01JdGVyYXRvci5oCkBAIC0yNDAsNyArMjQwLDcgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NSXRl
cmF0b3JCYXNlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0KEpTQzo6SlNHbG9iYWxP
YmoKICAgICAgICAgYXV0byBpdGVyYXRvclZhbHVlID0gbV9pdGVyYXRvci0+bmV4dCgpOwogICAg
ICAgICBpZiAoaXRlcmF0b3JWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJdGVyYXRv
clJlc3VsdE9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgYXNKUyhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBpdGVyYXRvclZhbHVlKSwgZmFsc2UpOwotICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBy
ZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6anNVbmRlZmluZWQoKSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAppbmRleCA2ZGNiOWRkZWM1MTcxNDY2
ZTljOTU1MjBkZDRlMWNkYzlmMWRkYzU0Li44NGIwZmMwZGIxZjE3NTdjNzNkMjZhZjAyMjkzNzVk
MmEyMDYyOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZh
U2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTgwLDIzICs4MCwyMyBAQCBzdHJ1Y3QgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMgewogICAgIHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgVVJMIHNv
dXJjZVVSTDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2VVUkwpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5bmNGdW5jdGlvbjsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShydW5Bc0FzeW5jRnVuY3Rpb24pKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+IGFyZ3VtZW50czsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
IHsgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgeyBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUoc291
cmNlVVJMKSwgcnVuQXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50cyksIGZvcmNlVXNl
ckdlc3R1cmUgfSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjA3YjVkMTBiMDYyZDk5M2FiYWViMzZjMDlhNDkzODA4
ZmZmNDQ5Yi4uZGQ2ODEyYmY4MDUzMDgwOGUyOTU4YTBjYWJlMDA4MjhjMGJjNzRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMy
MSw3ICszMjEsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFu
ZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAgICAgICAgICAgICAgIGNh
c2UgTW9kdWxlRmV0Y2hGYWlsdXJlS2luZDo6V2FzRXJyb3JlZDoKICAgICAgICAgICAgICAgICAg
ICAgbW9kdWxlU2NyaXB0LT5ub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNo
ZWRTY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBXVEY6Om51bGxvcHQKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bnVsbG9wdAogICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNb2R1bGVGZXRj
aEZhaWx1cmVLaW5kOjpXYXNDYW5jZWxlZDoKQEAgLTU3NSw3ICs1NzUsNyBAQCBKU0M6OkpTVmFs
dWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKGNvbnN0
IFN0cmluZyYgc2NyaQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewotICAgIGF1dG8gcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxz
ZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOworICAgIGF1dG8gcmVzdWx0ID0g
ZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgc3Rk
OjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAgIHJldHVybiByZXN1bHQgPyByZXN1
bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKQEAgLTU5MSw3ICs1OTEsNyBAQCBW
YWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERP
TVdyYXBwZXJXb3JsZCYgd29ybGQsCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5ub3Rp
ZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAjZW5kaWYKIAotICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZv
cmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0LCBtX2ZyYW1lLmRvY3VtZW50
KCkpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVy
cy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpu
dWxsb3B0LCBtX2ZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgaWYgKCFjYW5FeGVjdXRlU2NyaXB0
cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiQ2Fubm90IGV4ZWN1dGUgSmF2YVNjcmlw
dCBpbiB0aGlzIGRvY3VtZW50Il9zIH0pOwpAQCAtNzAzLDcgKzcwMyw3IEBAIEpTQzo6SlNWYWx1
ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZElnbm9yaW5n
RXhjZXB0aW9uKERPCiB9CiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0gICAgcmV0dXJuIGV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIHsgc2NyaXB0LCBVUkwgeyB9
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOworICAgIHJldHVybiBl
eGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCB7IHNjcmlwdCwgVVJM
IHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9KTsKIH0KIAogVmFs
dWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDZiNjA1NDk0MThjOWQwMmJmNzhiOTAxOGQw
MGQxMjk3YjRkYzk4MWIuLmQ1MDk5NjY1NjM5ZWU3ZGIzZjM2ZTBjNjhmZmYxODJlOTdiYjIzYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtMTU2Myw3ICsxNTYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgd3JpdGUo
ZmlsZS51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHdyaXRlKGZpbGUudHlwZSgpKTsKICAgICAg
ICAgd3JpdGUoZmlsZS5uYW1lKCkpOwotICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+
KGZpbGUubGFzdE1vZGlmaWVkT3ZlcnJpZGUoKS52YWx1ZU9yKC0xKSkpOworICAgICAgICB3cml0
ZShzdGF0aWNfY2FzdDxkb3VibGU+KGZpbGUubGFzdE1vZGlmaWVkT3ZlcnJpZGUoKS52YWx1ZV9v
cigtMSkpKTsKICAgICB9CiAKICAgICB2b2lkIHdyaXRlKFByZWRlZmluZWRDb2xvclNwYWNlIGNv
bG9yU3BhY2UpCkBAIC0zMDM3LDEzICszMDM3LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBET01Qb2ludEluaXQgcG9pbnQ7CiAgICAgICAgIGlmICghcmVhZChwb2ludC54KSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoIXJlYWQocG9pbnQueSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KCFyZWFkKHBvaW50LnopKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghcmVhZChwb2ludC53KSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBwb2ludDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGEyN2M2
ZDI4OTYxNGRkNzVkMWZlZjJhOTlhZjFhZjQwOTBjMTBiYWYuLmJhM2Y0YzU1ODJkYTIxYTljNjcx
MjRiZGU0Njk2YzAyMzBmZDI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC04NTMsNyArODUzLDcgQEAgc3ViIEdlbmVy
YXRlTmFtZWRHZXR0ZXJMYW1iZGEKIHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlckZ1bmN0aW9u
TmFtZSwgJElETFR5cGUpID0gQF87CiAgICAgCi0gICAgbXkgQGFyZ3VtZW50cyA9IEdlbmVyYXRl
Q2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgIldURjo6bnVsbG9wdCIsICJ0aGlz
T2JqZWN0IiwgIiAgICAgICAgIik7CisgICAgbXkgQGFyZ3VtZW50cyA9IEdlbmVyYXRlQ2FsbFdp
dGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgInN0ZDo6bnVsbG9wdCIsICJ0aGlzT2JqZWN0
IiwgIiAgICAgICAgIik7CiAgICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9BdG9t
U3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBh
dXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0
b3I8JHtJRExUeXBlfSwgJHtjbGFzc05hbWV9PihbXSAoJHtjbGFzc05hbWV9JiB0aGlzT2JqZWN0
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShhdXRvKSB7XG4iKTsKQEAg
LTIzNzYsNyArMjM3Niw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25D
b250ZW50CiAgICAgICAgIH0KICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gJHtj
bGFzc05hbWV9Ojoke2VudW1lcmF0aW9uVmFsdWVOYW1lfTtcbiI7CiAgICAgfQotICAgICRyZXN1
bHQgLj0gIiAgICByZXR1cm4gV1RGOjpudWxsb3B0O1xuIjsKKyAgICAkcmVzdWx0IC49ICIgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogCiAgICAg
JHJlc3VsdCAuPSAidGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFs
dWVzPCRjbGFzc05hbWU+KClcbiI7CkBAIC0yNDYyLDcgKzI0NjIsNyBAQCBzdWIgR2VuZXJhdGVE
ZWZhdWx0VmFsdWUKIAogICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJudWxsIikgewogICAgICAg
ICBpZiAoJHR5cGUtPmlzVW5pb24pIHsKLSAgICAgICAgICAgIHJldHVybiAiV1RGOjpudWxsb3B0
IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgICAgIHJldHVybiAic3RkOjpudWxsb3B0
IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKIAogICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJ
RExUeXBlKCR0eXBlU2NvcGUsICR0eXBlKTsKICAgICAgICAgICAgIHJldHVybiAiY29udmVydDwk
e0lETFR5cGV9PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc051bGwoKSk7IjsKQEAgLTI0NzQsNyAr
MjQ3NCw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgICAgICAgICAgbXkgJHVzZUF0
b21TdHJpbmcgPSAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRvbVN0cmluZ307CiAgICAg
ICAgICAgICByZXR1cm4gJHVzZUF0b21TdHJpbmcgPyAibnVsbEF0b20oKSIgOiAiU3RyaW5nKCki
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiV1RGOjpudWxsb3B0IjsKKyAgICAgICAgcmV0
dXJuICJzdGQ6Om51bGxvcHQiOwogICAgIH0KIAogICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJb
XSIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCmluZGV4IDFkMjkxZDYy
N2MzODg5YzcwZmI5NjU2MjJjNzUxZmU3NTQyOTQ0YzIuLmM0NWI1ODljZjdkODNiOWFmOGEyMTRj
NGZjYTUyMmQwMTljZWI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNw
cApAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RDYWxsYmFja0ludGVy
ZmFjZTo6RW51bT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbgogICAgICAgICByZXR1
cm4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtOjpWYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlID09ICJ2YWx1ZTIiKQogICAgICAgICByZXR1cm4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpF
bnVtOjpWYWx1ZTI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05FbnVtLmNwcAppbmRleCBkYWMwMGRjMzQ3NzRjNDlmNzA1M2MxMGE3NDQxNDQ4ZTc2
NWJlNDBiLi42MGExMmNlNGQ1NjVmNGU3OGYxOTU1ZWY2OTMwNjEzMDgwMTg2YjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVs
dFRvSlNPTkVudW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdGVtcGxh
dGU8PiBPcHRpb25hbDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNlRW51bWVyYXRpb248VGVz
dERlZmF1bHRUb0pTT05FbnUKICAgICAgICAgcmV0dXJuIFRlc3REZWZhdWx0VG9KU09ORW51bTo6
RW51bVZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTIiKQogICAgICAg
ICByZXR1cm4gVGVzdERlZmF1bHRUb0pTT05FbnVtOjpFbnVtVmFsdWUyOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBj
b25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3REZWZhdWx0VG9KU09ORW51
bT4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAppbmRleCBjYTMzMTNlM2NiNmI5ZTY4ZjliMDg2N2I3NDM1OWE4NTI4ZTRj
NWNhLi5iMGI0OGRhMjRiNDEwODQwMDRlOTY3MmE4YjQyZTk2Y2Q2NDMwYWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cApAQCAtMTU0LDcgKzE1NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5
cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpTR2xvCiAgICAgICAgIHJl
dHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMjsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gIkVudW1WYWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVudW1W
YWx1ZTM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8
VGVzdE9iajo6RW51bVR5cGU+KCkKQEAgLTE5NCw3ICsxOTQsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6Ok9wdGlvbmFs
PihKU0dsbwogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUy
OwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiT3B0aW9uYWxWYWx1ZTMiKQogICAgICAgICByZXR1
cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6Ok9wdGlvbmFsPigpCkBAIC0y
MjYsNyArMjI2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcGFy
c2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNHbG8KICAgICAgICAgcmV0dXJuIEFs
dGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51
bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBBbHRlcm5hdGVFbnVtTmFtZTo6RW51bVZhbHVlMjsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxBbHRlcm5h
dGVFbnVtTmFtZT4oKQpAQCAtMjU2LDcgKzI1Niw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUE+KEpTR2xvYmFsT2Jq
CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkEiKQogICAgICAgICByZXR1cm4gVGVz
dE9iajo6RW51bUE6OkE7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRp
b25WYWx1ZXM8VGVzdE9iajo6RW51bUE+KCkKQEAgLTI4OCw3ICsyODgsNyBAQCB0ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1C
PihKU0dsb2JhbE9iagogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKICAgICAg
ICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1CPigpCkBAIC0zMjAsNyArMzIwLDcg
QEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtQz4oSlNHbG9iYWxPYmoKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUu
dG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9
PSAiQyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtQzo6QzsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29u
c3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtQz4oKQpAQCAt
MzU0LDcgKzM1NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VF
bnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9iamVjCiAgICAgICAgIHJldHVybiBU
ZXN0T2JqOjpLaW5kOjpRdWljazsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImRlYWQiKQogICAg
ICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6RGVhZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciog
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpLaW5kPigpCkBAIC0zODYsNyArMzg2
LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpTaXplPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNp
emU6OlNtYWxsOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlcjsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4g
Y29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpTaXplPigpCkBA
IC00MTgsNyArNDE4LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNl
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEoKICAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5k
YS1sb3ciKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0
ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6
Q29uZmlkZW5jZT4oKQpAQCAtNjU2LDcgKzY1Niw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGlj
dGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9i
CiAgICAgICAgIHJlc3VsdC5udWxsYWJsZUVudW0gPSBjb252ZXJ0PElETE51bGxhYmxlPElETEVu
dW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxh
YmxlRW51bVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFibGVFbnVtID0gV1RGOjpudWxs
b3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVFbnVtID0gc3RkOjpudWxsb3B0OwogICAgIEpT
VmFsdWUgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZTsKICAgICBpZiAoaXNOdWxsT3JV
bmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOwpAQCAtNjY4LDcgKzY2OCw3IEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlv
bmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iCiAg
ICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMTG9uZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxhYmxlSW50ZWdlcldpdGhE
ZWZhdWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVs
dCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlSW50ZWdlcldpdGhEZWZh
dWx0ID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFsdWUgbnVsbGFibGVOb2RlVmFsdWU7CiAgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZU5vZGVWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7CkBAIC03MDQsNyArNzA0LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9u
YXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAg
ICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBjb252ZXJ0PElETE51bGxhYmxlPElE
TFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBudWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxsYWJsZVVu
aW9uTWVtYmVyID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbk1l
bWJlciA9IHN0ZDo6bnVsbG9wdDsKICAgICBKU1ZhbHVlIHJlcXVpcmVkQnVmZmVyU291cmNlVmFs
dWVWYWx1ZTsKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIHJlcXVpcmVkQnVm
ZmVyU291cmNlVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CkBAIC02OTU5LDcgKzY5NTksNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsUgogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBy
ZWNvcmQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gV1RGOjpudWxsb3B0IDog
Y29udmVydDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgYXV0byByZWNvcmQg
PSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpudWxsb3B0IDogY29udmVy
dDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExMb25nPj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4g
aW1wbC5tZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoV1RGTW92ZShyZWNvcmQpKTsgfSkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCmluZGV4IDZkOTIwN2Zm
MTI3MDEwM2VmYmM2OGI0YWZhYmY2MDM2ZmRkMjM2NjguLjhhZTg5MzNlYmMzY2Y1N2E4NGJkYWM2
M2Y4MWFhOTA5MTZlNjcxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9u
YXJ5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1l
IGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNHbG9iYWxPYmplCiAgICAg
ICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWUgPSBjb252ZXJ0PElE
TE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVhbj4+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFsdWVWYWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKLSAg
ICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZSA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZSA9
IHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykgfHwgRU5BQkxFKENvbmRp
dGlvbmFsMTQpCiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwogICAgIGlm
IChpc051bGxPclVuZGVmaW5lZCkKQEAgLTM1NCw3ICszNTQsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlv
bmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlG
aWxlPiBwYQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5T
dGFuZGFsb25lRGljdGlvbmFyeUZpbGU6OkVudW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJlbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRGljdGlvbmFy
eTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFsdWUyOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8
PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRGlj
dGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZUVu
dW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCmluZGV4IDVlZDc5ODA4ZWU4MTg2NGIxZDY4
NmM4YjY0M2NhYjMzY2RjYTEzOTIuLjRhN2E5MWE1NDU5NTAwZDgxNGJkOTVlZDRmYTk1ZTBmYjE1
ZmVjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0YW5kYWxvbmVFbnVtZXJh
dGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVuCiAgICAgICAgIHJldHVybiBU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uOjpFbnVtVmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1
ZSA9PSAiZW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9uZUVudW1lcmF0
aW9uOjpFbnVtVmFsdWUyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5j
cHAKaW5kZXggODMzYmFjMzNkMmVmYTU4M2RhYmI0NWQzM2JkZWFlNGY0YTUwZGQwYS4uMTY0MzI5
MDQ5MThlNzNjZTBjZmMwYzllYjQ2NGU2MThlYjQzYzgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5j
cHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8T3B0aW9uYWw8QWN0aW9uPiwg
c3RkOjplcnJvcl9jb2RlPiBsb2FkQWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZQogICAgICAgICBT
dHJpbmcgc2VsZWN0b3JTdHJpbmcgPSBhc1N0cmluZyhzZWxlY3RvciktPnZhbHVlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkQ1NTU2VsZWN0b3Ioc2VsZWN0b3JT
dHJpbmcpKSB7CiAgICAgICAgICAgICAvLyBTa2lwIHJ1bGVzIHdpdGggaW52YWxpZCBzZWxlY3Rv
cnMgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuCi0gICAgICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB7IEFjdGlvbihBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNl
bGVjdG9yLCBzZWxlY3RvclN0cmluZykgfTsKICAgICB9CkBAIC0zMDQsNyArMzA0LDcgQEAgc3Rh
dGljIEV4cGVjdGVkPE9wdGlvbmFsPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9j
b2RlPiBsb2FkUnVsZShKU0dsb2IKICAgICBpZiAoYWN0aW9uLnZhbHVlKCkpCiAgICAgICAgIHJl
dHVybiB7e3sgV1RGTW92ZSh0cmlnZ2VyLnZhbHVlKCkpLCBXVEZNb3ZlKGFjdGlvbi52YWx1ZSgp
LnZhbHVlKCkpIH19fTsKIAotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBzdGF0aWMgRXhwZWN0ZWQ8VmVjdG9yPENvbnRlbnRF
eHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkRW5jb2RlZFJ1bGVzKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHJ1bGVKU09OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0
UmVzdWx0cy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVM
aXN0UmVzdWx0cy5oCmluZGV4IDlhN2JlNWFjMTAxNmM0NWJkNThlM2IzMWVkN2I2N2UzNTI0ZmI2
YzIuLmU3MmMxNDQ3YWQ2ZjNiMjAzOGMyYjE4ZTQ5OWYzN2U5NWJjYTA1NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRSdWxlTGlzdFJlc3VsdHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RS
ZXN1bHRzLmgKQEAgLTgxLDEyICs4MSwxMiBAQCBzdHJ1Y3QgQ29udGVudFJ1bGVMaXN0UmVzdWx0
cyB7CiAgICAgICAgIE9wdGlvbmFsPFN1bW1hcnk+IHN1bW1hcnk7CiAgICAgICAgIGRlY29kZXIg
Pj4gc3VtbWFyeTsKICAgICAgICAgaWYgKCFzdW1tYXJ5KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAog
ICAgICAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRSdWxlTGlzdElkZW50aWZp
ZXIsIFJlc3VsdD4+PiByZXN1bHRzOwogICAgICAgICBkZWNvZGVyID4+IHJlc3VsdHM7CiAgICAg
ICAgIGlmICghcmVzdWx0cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHt7
CiAgICAgICAgICAgICBXVEZNb3ZlKCpzdW1tYXJ5KSwKQEAgLTEwOCwyMiArMTA4LDIyIEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0UmVzdWx0czo6UmVzdWx0
OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZExvYWQ7CiAg
ICAgZGVjb2RlciA+PiBibG9ja2VkTG9hZDsKICAgICBpZiAoIWJsb2NrZWRMb2FkKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPGJvb2w+IG1hZGVIVFRQUzsKICAgICBkZWNvZGVyID4+IG1hZGVIVFRQ
UzsKICAgICBpZiAoIW1hZGVIVFRQUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBibG9j
a2VkQ29va2llczsKICAgICBkZWNvZGVyID4+IGJsb2NrZWRDb29raWVzOwogICAgIGlmICghYmxv
Y2tlZENvb2tpZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IG5vdGlm
aWNhdGlvbnM7CiAgICAgZGVjb2RlciA+PiBub3RpZmljYXRpb25zOwogICAgIGlmICghbm90aWZp
Y2F0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpibG9ja2VkTG9h
ZCksCkBAIC0xNDYsMjIgKzE0NiwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBhdXRvIENv
bnRlbnRSdWxlTGlzdFJlc3VsdHM6OlN1bW1hcnk6OmRlY29kZShEZWNvZGVyJiBkZQogICAgIE9w
dGlvbmFsPGJvb2w+IGJsb2NrZWRMb2FkOwogICAgIGRlY29kZXIgPj4gYmxvY2tlZExvYWQ7CiAg
ICAgaWYgKCFibG9ja2VkTG9hZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBtYWRlSFRU
UFM7CiAgICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7CiAgICAgaWYgKCFtYWRlSFRUUFMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBi
bG9ja2VkQ29va2llczsKICAgICBpZiAoIWJsb2NrZWRDb29raWVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9w
dGlvbmFsPGJvb2w+IGhhc05vdGlmaWNhdGlvbnM7CiAgICAgZGVjb2RlciA+PiBoYXNOb3RpZmlj
YXRpb25zOwogICAgIGlmICghaGFzTm90aWZpY2F0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4g
e3sKICAgICAgICAgV1RGTW92ZSgqYmxvY2tlZExvYWQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCmluZGV4IGIzNzA0MTk4ZWRhYjNjM2ZlZDFkZWEw
MjZkMDI5ZTMyZTQ3ZjZlMjYuLjY0ODNhMWYxYjNhOTFmMmNiMTNkM2E4OGVhM2Q1ZGExOTgyZWI0
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZB
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAK
QEAgLTMyNSw3ICszMjUsNyBAQCBPcHRpb25hbDxERkE+IE5GQVRvREZBOjpjb252ZXJ0KE5GQSYm
IG5mYSkKIHsKICAgICBhdXRvIHNlcmlhbGl6ZWRORkEgPSBTZXJpYWxpemVkTkZBOjpzZXJpYWxp
emUoV1RGTW92ZShuZmEpKTsKICAgICBpZiAoIXNlcmlhbGl6ZWRORkEpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBORkFO
b2RlQ2xvc3VyZXMgbmZhTm9kZUNsb3N1cmVzID0gcmVzb2x2ZUVwc2lsb25DbG9zdXJlcygqc2Vy
aWFsaXplZE5GQSk7CiAgICAgREZBIGRmYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggZjRhNjFiNDkyNTU0ODMyYmQwNGEy
NzhmYTVkNTU2MjIxMDM3MjdhMi4uNTlkY2RhNmI5MDI5MGRjMTNmMzFhYWRhMGM5ZDlhOTU4Zjk1
MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFs
aXplZE5GQS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2Vy
aWFsaXplZE5GQTo6c2VyaWFsaXplKE5GQSYmIG5mYSkKICAgICBhdXRvIGZpbGUgPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiU2VyaWFsaXplZE5GQSIsIGZpbGUpOwogICAgIGlm
ICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgd3JvdGVT
dWNjZXNzZnVsbHkgPSB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEubm9kZXMpCiAgICAgICAgICYm
IHdyaXRlQWxsVG9GaWxlKGZpbGUsIG5mYS50cmFuc2l0aW9ucykKQEAgLTY0LDcgKzY0LDcgQEAg
T3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2VyaWFsaXplKE5GQSYmIG5m
YSkKICAgICBpZiAoIXdyb3RlU3VjY2Vzc2Z1bGx5KSB7CiAgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShmaWxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgYm9vbCBtYXBwZWRTdWNjZXNzZnVsbHkgPSBmYWxzZTsKQEAgLTcy
LDcgKzcyLDcgQEAgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2VyaWFs
aXplKE5GQSYmIG5mYSkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgaWYgKCFtYXBwZWRTdWNjZXNzZnVs
bHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBNZXRhZGF0YSBtZXRhZGF0YSB7CiAgICAgICAgIG5mYS5ub2Rlcy5zaXpl
KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0
ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVy
UGFyc2VyLmNwcAppbmRleCBlZjUwY2JiMjNkYmMzZjFkYTU1Y2ZhNGFiZTRjMTc1M2I4YzhhNzc5
Li41OWZkY2NiNTA2MzczYWVkNDE4MmRiYWI2MWNkN2Q4N2EyMmNlZmMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKQEAg
LTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWwoVVJMRmlsdGVyUGFyc2VyOjpB
dG9tQ2hhcmFjdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRl
cm5CZWdpbihib29sID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiA9IFdURjo6bnVsbG9wdCkKKyAg
ICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbihib29sID0gdHJ1ZSwgT3B0aW9u
YWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGlmIChoYXNFcnJvcigp
KQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9Dcnlw
dG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKaW5kZXggMzY0NmI0N2NiNTFmMmQzMjU0YmYxOThkMjVl
MTYxNTFiZDkzM2VlMS4uODJkZmJjZWRkYzI5ZThmYzZiYjIxNDhlOGY4MjQ3ZGZjNmQ3NWJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnku
Y3BwCkBAIC01MSwxNCArNTEsMTQgQEAgQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OkNyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5KCkKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI+IENy
eXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
ICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2Nr
IH07CiAKICAgICAvLyBGSVhNRTogSG93IGlzIGl0IGhlbHBmdWwgdG8gY2FsbCBpc29sYXRlZENv
cHkgb24gdGhlIGFyZ3VtZW50IHRvIGZpbmQ/CiAgICAgYXV0byBpZGVudGlmaWVyID0gbV9pZGVu
dGlmaWVycy5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGlmIChpZGVudGlmaWVyID09
IG1faWRlbnRpZmllcnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaWRlbnRpZmllci0+dmFsdWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IDgzNTg0MGRiNWY1
ZTdiYTAxYjIwNzc0MTgwMGQwOWZjNWVjNTE1ZmYuLmEyMjJjZDAzYmM0OTg4ZGUxY2Y3OWI5YWYy
MDJjN2E0ZThhYzhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBA
IC00NTUsNyArNDU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0
bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzoKICAgICAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oa2V5RGF0YVZhcmlhbnQsCiAgICAgICAgICAgICBbJnByb21pc2VdIChK
c29uV2ViS2V5JikgLT4gT3B0aW9uYWw8S2V5RGF0YT4gewogICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IgfSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZmZXJTb3VyY2UpIC0+IE9w
dGlvbmFsPEtleURhdGE+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gS2V5RGF0YSB7IFZlY3Rv
ciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJTb3VyY2UtPmRhdGEoKSksIGJ1
ZmZlclNvdXJjZS0+Ynl0ZUxlbmd0aCgpIH0gfTsKQEAgLTQ2OSw3ICs0NjksNyBAQCBzdGF0aWMg
T3B0aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRhKFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1h
dCwgU3VidGxlQ3J5cHRvOgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFsmcHJvbWlzZV0g
KGF1dG8mKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCA0YmZiNGVm
YjhlMDU3YWI2ZDk3ZGEyMTFjYjhjN2E5OTdiOTY0OWNkLi4wMmIyMTcxMWU3ZmJlNGJmZjI0YWQy
ODE2MGUzNTMxNmE2ZmQ3MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtODcsNyArODcsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0
byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1ldGVycy5sZW5ndGgu
dmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6Z2VuZXJhdGUoaG1hY1Bh
cmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC0xMTAs
NyArMTEwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoQ3J5cHRvS2V5
Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnMKICAgICBSZWZQdHI8Q3J5cHRvS2V5
SE1BQz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlG
b3JtYXQ6OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGht
YWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydFJhdyho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVu
dGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6
Okp3azogewogICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBbXShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2gsIGNvbnN0IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEzMCw3
ICsxMzAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShDcnlwdG9LZXlG
b3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29ucwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9L
ZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGhtYWNQ
YXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRh
dGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7Cisg
ICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydEp3ayhobWFjUGFyYW1ldGVycy5s
ZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3Zl
KFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92
ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCBmMjJjYzUxNWY0
Zjc4Nzg4NWZkY2NmYzdiOGU0MjRjN2ZhYTcwODI3Li43OGIyNzdlZmRhZmM5NzBiZWJlMmM0MDhh
YjhlYjhkMWU1N2Y4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmCiAgICAgICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhEYXRhRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBhcmFtZXRl
cnMuaWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGtleSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhwYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShrZXkpLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0
OjpTcGtpOiB7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYKICAg
ICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNw
a2kocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoV1RGOjpnZXQ8
VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICBy
ZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kocGFyYW1ldGVycy5pZGVudGlmaWVyLCBz
dGQ6Om51bGxvcHQsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlw
dG9LZXlGb3JtYXQ6OlBrY3M4OiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwg
S2V5RGF0YSYKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlS
U0E6OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhf
dD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKaW5kZXggYTUxYjY2ZDhkZGU4
MTEzNGI1ODMwYzJhNmEwOTlkODFhYjBjZWQ1OC4uZjJmODY2ZjJlNmNjODhlODMzNThhNzM5NTkw
NjBiNGVkYzAzODc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwCkBAIC00MSwyOCArNDEs
MjggQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBh
bGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBB
TDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBp
ZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVyIG9i
amVjdCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBDQkMgY2lwaGVyIG1vZGUuCiAgICAg
UEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CiAgICAgZ2NyeV9l
cnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZ
X0NJUEhFUl9NT0RFX0NCQywgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9y
ID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CiAg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIElWIGZv
ciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRpdihoYW5k
bGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIFVzZSB0aGUgUEtDUyM3IHBhZGRpbmcuCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIC8vIFBhZGRlZCBzaXplIHNob3VsZCBiZSBiaWdn
ZXIgdGhhbiBzaXplLCBidXQgYmFpbCBpZiB0aGUgdmFsdWUgZG9lc24ndCBmaXQgaW50byBhIGJ5
dGUuCiAgICAgICAgIEFTU0VSVChwYWRkZWRTaXplID4gc2l6ZSk7CiAgICAgICAgIGlmIChwYWRk
ZWRTaXplIC0gc2l6ZSA+IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB1aW50OF90IHBhZGRpbmdW
YWx1ZSA9IHBhZGRlZFNpemUgLSBzaXplOwogCiAgICAgICAgIHBsYWluVGV4dC5ncm93KHBhZGRl
ZFNpemUpOwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGVy
cm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIGVuY3J5cHRpb24gYW5kIHJldHJpZXZlIHRoZSBl
bmNyeXB0ZWQgb3V0cHV0LgpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25z
dAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZW5jcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCks
IG91dHB1dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOwogICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKQEAgLTEwNCwz
NSArMTA0LDM1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5
cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRo
ZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0
aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNp
cGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgQ0JDIGNpcGhlciBtb2Rl
LgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRo
bSwgR0NSWV9DSVBIRVJfTU9ERV9DQkMsIDApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAg
ICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXpl
KCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZl
biBJViBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0
aXYoaGFuZGxlLCBpdi5kYXRhKCksIGl2LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgY2lwaGVyIG9iamVjdCBiZWZvcmUgcGVyZm9y
bWluZyB0aGUgZGVjcnlwdGlvbi4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRs
ZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBk
ZWNyeXB0aW9uIGFuZCByZXRyaWV2ZSB0aGUgZGVjcnlwdGVkIG91dHB1dC4KQEAgLTE0MCw3ICsx
NDAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJf
ZGVjcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIGNpcGhlclRleHQu
ZGF0YSgpLCBjaXBoZXJUZXh0LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBSZW1vdmUgdGhlIFBLQ1MjNyBwYWRkaW5nIGZyb20gdGhlIGRlY3J5cHRlZCBv
dXRwdXQuCkBAIC0xNDgsMTYgKzE0OCwxNiBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAg
ICAgICAvLyBUaGUgcGFkZGluZyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIGxhc3Qg
Ynl0ZS4KICAgICAgICAgdWludDhfdCBwYWRkaW5nVmFsdWUgPSBvdXRwdXQubGFzdCgpOwogICAg
ICAgICBpZiAocGFkZGluZ1ZhbHVlID4gZ2NyeV9jaXBoZXJfZ2V0X2FsZ29fYmxrbGVuKCphbGdv
cml0aG0pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUGFkZGluZyB2YWx1ZSBtdXN0bid0IGJl
IGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcGFkZGVkIG91dHB1dC4KICAgICAgICAgc2l6
ZV90IHNpemUgPSBvdXRwdXQuc2l6ZSgpOwogICAgICAgICBpZiAocGFkZGluZ1ZhbHVlID4gc2l6
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEJhaWwgaWYgdGhlIGxhc3QgYHBhZGRpbmdWYWx1
ZWAgYnl0ZXMgZG9uJ3QgaGF2ZSB0aGUgdmFsdWUgb2YgYHBhZGRpbmdWYWx1ZWAuCiAgICAgICAg
IGlmIChzdGQ6OmNvdW50KG91dHB1dC5lbmQoKSAtIHBhZGRpbmdWYWx1ZSwgb3V0cHV0LmVuZCgp
LCBwYWRkaW5nVmFsdWUpICE9IHBhZGRpbmdWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8v
IFNocmluayB0aGUgb3V0cHV0IFZlY3RvciBvYmplY3QgdG8gZHJvcCB0aGUgUEtDUyM3IHBhZGRp
bmcuCiAgICAgICAgIG91dHB1dC5zaHJpbmsoc2l6ZSAtIHBhZGRpbmdWYWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfQ1RSR0NyeXB0LmNwcAppbmRleCAzYzkwNTk0MGFkNWFjOWU4MWNkODRiNDM2ZWYyMjUxYjI4
NmI2ZGY3Li43MmMxZWY0NzlkZjkyMmNjNzg5MjU5NDcyYzBkODJlNjgzMzRkMjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUkdDcnlwdC5jcHAKQEAgLTQ0LDI2ICs0NCwyNiBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjYWxsT3BlcmF0aW9uKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRp
b24gb3BlcgogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX3Jlc2V0KGhhbmRs
ZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lw
aGVyX3NldGN0cihoYW5kbGUsIGNvdW50ZXIuZGF0YSgpLCBjb3VudGVyLnNpemUoKSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFs
KGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gb3V0cHV0KHNpemUpOwogICAgIGVycm9yID0gb3BlcmF0aW9uKGhhbmRsZSwgb3V0cHV0
LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgZGF0YSwgc2l6ZSk7CiAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBo
ZXJPcGVyYXRpb24gb3BlcgogICAgIGNvbnN0ZXhwciBzaXplX3QgYmxvY2tTaXplID0gMTY7CiAg
ICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShr
ZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDb25zdHJ1
Y3QgdGhlIGxpYmdjcnlwdCBjaXBoZXIgb2JqZWN0IGFuZCBhdHRhY2ggdGhlIGtleSB0byBpdC4g
S2V5IGluZm9ybWF0aW9uIG9uIHRoaXMKICAgICAvLyBjaXBoZXIgb2JqZWN0IHdpbGwgbGl2ZSB0
aHJvdWdoIGFueSBnY3J5X2NpcGhlcl9yZXNldCgpIGNhbGxzLgpAQCAtODIsMTMgKzgyLDEzIEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5
cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9j
aXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0NUUiwgMCk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdjcnlfY2lwaGVy
X3NldGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAh
PSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJv
cik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBibG9jayBjb3VudDogKChpbnB1
dFRleHQuc2l6ZSgpICsgYmxvY2tTaXplIC0gMSkgLyBibG9ja1NpemUpLCByZW1haW5kZXIgZGlz
Y2FyZGVkLgpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAg
Ly8gdGhlIG51bWJlciBvZiB1bmlxdWUgY291bnRlciB2YWx1ZXMgd2UgY291bGQgcHJvZHVjZSBm
b3IgdGhlIHNwZWNpZmllZCBjb3VudGVyCiAgICAgLy8gbGVuZ3RoKSBpcyBsb3dlciB0aGFuIHRo
ZSBkZWR1Y2VkIGJsb2NrIGNvdW50LCB3ZSBiYWlsLgogICAgIGlmIChnY3J5X21waV9jbXAoY291
bnRlckxpbWl0TVBJLCBibG9ja0NvdW50TVBJKSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgY291
bnRlciBsZW5ndGgsIGluIGJpdHMsIG1hdGNoZXMgdGhlIHNpemUgb2YgdGhlIGNvdW50ZXIgZGF0
YSwgd2UgZG9uJ3QgaGF2ZSB0bwogICAgIC8vIHVzZSBhbnkgcGFydCBvZiB0aGUgY291bnRlciBW
ZWN0b3I8PiBhcyBub25jZS4gVGhpcyBhbGxvd3MgdXMgdG8gZGlyZWN0bHkgZW5jcnlwdCBvcgpA
QCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgZXJyb3IgPSBn
Y3J5X21waV9zY2FuKCZjb3VudGVyRGF0YU1QSSwgR0NSWU1QSV9GTVRfVVNHLCBjb3VudGVyLmRh
dGEoKSwgY291bnRlci5zaXplKCksIG51bGxwdHIpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgLy8gRXh0cmFjdCB0aGUgY291bnRlciBNUEkgZnJvbSB0aGUgY291bnRlckRh
dGFNUEk6IChjb3VudGVyRGF0YU1QSSAlIGNvdW50ZXJMaW1pdE1QSSkuCkBAIC0xNzUsMTQgKzE3
NSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBB
TDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcgogICAgICAgICBlcnJvciA9IGdjcnlfbXBp
X3ByaW50KEdDUllNUElfRk1UX1VTRywgYmxvY2tDb3VudGVyRGF0YS5kYXRhKCksIGJsb2NrQ291
bnRlckRhdGEuc2l6ZSgpLCBudWxscHRyLCBibG9ja0NvdW50ZXJNUEkpOwogICAgICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRW5jcnlw
dC9kZWNyeXB0IHRoaXMgc2luZ2xlIGJsb2NrIHdpdGggdGhlIGJsb2NrLXNwZWNpZmljIGNvdW50
ZXIuIE91dHB1dCBmb3IgdGhpcwogICAgICAgICAvLyBzaW5nbGUgYmxvY2sgaXMgYXBwZW5kZWQg
dG8gdGhlIGdlbmVyYWwgb3V0cHV0IHZlY3Rvci4KICAgICAgICAgYXV0byBibG9ja091dHB1dCA9
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBoYW5kbGUsIGJsb2NrQ291bnRlckRhdGEsIGlucHV0
VGV4dC5kYXRhKCkgKyBpLCBibG9ja0lucHV0U2l6ZSk7CiAgICAgICAgIGlmICghYmxvY2tPdXRw
dXQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKCpibG9ja091dHB1
dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCmluZGV4IGZmYmM5M2M5MWU5NWJjMDlhMGRj
ZTU3YWQ3ZGU1MTU5YTQ2ZTZkYzkuLjRhNTFkMWQ3MjNkOTJjODE2ZDI3MjAzNDYwNGQxOWUyMTQ2
MGFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcApAQCAtNDQsMjggKzQ0LDI4IEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGht
IGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlw
dDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdv
cml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNpcGhlciBvYmplY3QgZm9y
IHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgR0NNIGNpcGhlciBtb2RlLgogICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAgIGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRobSwgR0NSWV9DSVBIRVJf
TU9ERV9HQ00sIEdDUllfQ0lQSEVSX1NFQ1VSRSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0Lgog
ICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNp
emUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdp
dmVuIElWIGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9z
ZXRpdihoYW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4gYWRkaXRvbmFsIGRhdGEsIGlmIGFueSwg
YXMgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KQEAgLTcz
LDcgKzczLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlw
dChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAgICAgZXJyb3IgPSBnY3J5
X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0
aW9uYWxEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBlbmNyeXB0aW9uIGFuZCBy
ZXRyaWV2ZSB0aGUgZW5jcnlwdGVkIG91dHB1dC4KQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2VuY3J5cHQoaGFuZGxlLCBv
dXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQu
c2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIElmIHRhZyBs
ZW5ndGggd2FzIHNwZWNpZmllZCwgcmV0cmlldmUgdGhlIHRhZyBkYXRhIGFuZCBhcHBlbmQgaXQg
dG8gdGhlIG91dHB1dCB2ZWN0b3IuCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhhbmRsZSwgdGFnLmRh
dGEoKSwgdGFnLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9yKHRhZyk7CkBAIC0xMTIs
MjggKzExMiwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNy
eXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIC8vIERldGVybWluZSB0
aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3Jp
dGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgp
OwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IEdDcnlwdCBj
aXBoZXIgb2JqZWN0IGZvciB0aGUgQUVTIGFsZ29yaXRobSBhbmQgdGhlIEdDTSBjaXBoZXIgbW9k
ZS4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKICAg
ICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0
aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAg
ICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6
ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2
ZW4gSVYgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3Nl
dGl2KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBhZGRpdG9uYWwgZGF0YSwgaWYgYW55LCBh
cyB0aGUgYXV0aGVudGljYXRpb24gZGF0YSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgpAQCAtMTQx
LDcgKzE0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5
cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2Ny
eV9jaXBoZXJfYXV0aGVudGljYXRlKGhhbmRsZSwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRp
dGlvbmFsRGF0YS5zaXplKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBBY2NvdW50IGZvciB0aGUgc3BlY2lmaWVk
IHRhZyBsZW5ndGggd2hlbiBwZXJmb3JtaW5nIHRoZSBkZWNyeXB0aW9uIGFuZCByZXRyaWV2aW5n
IHRoZSBkZWNyeXB0ZWQgb3V0cHV0LgpAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGNvbnN0CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9kZWNyeXB0KGhhbmRsZSwgb3V0cHV0
LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlckxlbmd0aCk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBJZiB0YWcgbGVuZ3RoIHdh
cyBpbmRlZWQgc3BlY2lmaWVkLCByZXRyaWV2ZSB0aGUgdGFnIGRhdGEgYW5kIGNvbXBhcmUgaXQg
c2VjdXJlbHkgdG8gdGhlIHRhZyBkYXRhIHRoYXQKQEAgLTE2OSwxMSArMTY5LDExIEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFnKGhh
bmRsZSwgdGFnLmRhdGEoKSwgdGFnTGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25zdGFudFRpbWVNZW1jbXAo
dGFnLmRhdGEoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJMZW5ndGgsIHRhZ0xlbmd0aCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTgxLDcgKzE4MSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXks
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0RW5jcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5UZXh0
LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3Ro
LnZhbHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdEVuY3J5cHQoa2V5Lmtl
eSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlv
bmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOwog
ICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKQEAgLTE4OSw3ICsxODksNyBAQCBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRm
b3JtRW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENy
eXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0
aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5
cHREZWNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBjaXBoZXJUZXh0LCBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZh
bHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlY3J5cHQoa2V5LmtleSgp
LCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25h
bERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKICAg
ICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAK
aW5kZXggYmFiMjYwZDY1OGY4MDFkNmM5NGQ2MjAzYWQzMTM3OWJkNTM4YmJkMi4uYjYyMmI0ZTlm
OTg2NDcwMDY0NTA0MjIwMDRkOTgwZGZlYmU0NGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNw
cApAQCAtNDAsMjggKzQwLDI4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0
ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0
byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6
ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcg
R0NyeXB0IGNpcGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgQUVTLVdy
YXAgY2lwaGVyIG1vZGUuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90
PiBoYW5kbGU7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFu
ZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0FFU1dSQVAsIDApOwogICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMg
Y2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtl
eS5kYXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgLy8gRmluYWxpemUgdGhlIGNpcGhlciBvYmplY3QgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGVu
Y3J5cHRpb24uCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9maW5hbChoYW5kbGUpOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSB0aGUgZW5jcnlwdGlvbi4g
VGhlIHByb3ZpZGVkIG91dHB1dCBidWZmZXIgbXVzdCBiZSA2NCBiaXRzIGxhcmdlciB0aGFuIHRo
ZSBpbnB1dCBidWZmZXIuCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwg
b3V0cHV0LnNpemUoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC04MCwyOCArODAsMjggQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53cmFwS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb24KICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0
aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0Ny
eXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAoIWFs
Z29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVyIG9iamVjdCBm
b3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBBRVMtV3JhcCBjaXBoZXIgbW9kZS4KICAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllf
Q0lQSEVSX01PREVfQUVTV1JBUCwgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVy
cm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgY2lw
aGVyIG9iamVjdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZW5jcnlwdGlvbi4KICAgICBlcnJvciA9
IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBQZXJmb3JtIHRoZSBkZWNyeXB0aW9uLiBUaGUgb3V0cHV0IGJ1ZmZlciBtYXkg
YmUgc3BlY2lmaWVkIDY0IGJpdHMgc2hvcnRlciB0aGFuIHRoZSBpbnB1dCBidWZmZXIuCkBAIC0x
MDksNyArMTA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53
cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb24KICAgICBlcnJvciA9IGdjcnlf
Y2lwaGVyX2RlY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG91dHB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4IDBmZTY3NTExNTQ1NDZj
NjQ3Njk5NDFiODVkODMwZGJlNDAxYWVlYmYuLjA1NGVjODI1MmIxMjljOGQxMDI2YjJjOTc0ZDQw
NjcyYTg1NjM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtNDgsMTUgKzQ4LDE1IEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBi
YXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgewogICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfc2V4cF90PiBkU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihiYXNlS2V5U2V4cCwgImQi
LCAwKSk7CiAgICAgICAgIGlmICghZFNleHApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIGRh
dGEgPSBtcGlEYXRhKGRTZXhwKTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHJh
dykodmFsdWUgJWIpKSIsIGRhdGEtPnNpemUoKSwgZGF0YS0+ZGF0YSgpKTsKICAgICAgICAgaWYg
KCFkYXRhU2V4cCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEVuY3J5cHQgdGhlIGRhdGEg
cy1leHByZXNzaW9uIHdpdGggdGhlIHB1YmxpYyBrZXkuCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNl
S2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19lbmNy
eXB0KCZjaXBoZXJTZXhwLCBkYXRhU2V4cCwgcHVibGljS2V5U2V4cCk7CiAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgc2hhcmVkIHBvaW50IHZhbHVl
IGZyb20gdGhlIGdlbmVyYXRlZCBzLWV4cHJlc3Npb24sIHdoaWNoIGlzIG9mIHRoZSBmb2xsb3dp
bmcgZm9ybToKQEAgLTc0LDI0ICs3NCwyNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZXJpdmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAsIGdjcnlfc2V4cAogICAg
IC8vICAgICAoZSAuLi4pKSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHhN
UEkoZ2NyeV9tcGlfbmV3KDApKTsKICAgICBpZiAoIXhNUEkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB7CiAgICAgICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5kX3Rv
a2VuKGNpcGhlclNleHAsICJzIiwgMCkpOwogICAgICAgICBpZiAoIXNTZXhwKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBzTVBJKGdjcnlfc2V4
cF9udGhfbXBpKHNTZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKICAgICAgICAgaWYgKCFzTVBJ
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV9wb2lu
dF90PiBwb2ludChnY3J5X21waV9wb2ludF9uZXcoMCkpOwogICAgICAgICBpZiAoIXBvaW50KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X21waV9lY19kZWNvZGVfcG9pbnQocG9p
bnQsIHNNUEksIG51bGxwdHIpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIFdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUg
eC1jb29yZGluYXRlLgogICAgICAgICBnY3J5X21waV9wb2ludF9zbmF0Y2hfZ2V0KHhNUEksIG51
bGxwdHIsIG51bGxwdHIsIHBvaW50LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCmlu
ZGV4IDg4MTgyM2Y4MTkwZWNmMWYzZjU3YTM1NWNjNDE1Y2FjODRkYTI5YTkuLjJkYmJhMDk2YmYx
NjgzNzhhMTY2MTE2YjI0ODQ4MGE0MTQ4N2M4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCkBA
IC02OSwxMSArNjksMTEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICB7CiAgICAgICAg
IGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxn
b3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpk
aWdlc3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
ZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC04NCwxMyArODQsMTMgQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlT
ZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICB7CiAgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0g
aGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
IXNoYUFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9
IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyByYXcpKGhh
c2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCks
IGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZl
Y3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJl
U2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIHJlc3VsdGluZyByIGFuZCBzIGludGVn
ZXJzLiBUaGV5IGFyZSBjb25jYXRlbmF0ZWQgaW50bwpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpCiAKICAgICBpZiAoIWV4dHJhY3RFQ0RTQVNpZ25hdHVyZUludGVn
ZXIoc2lnbmF0dXJlLCBzaWduYXR1cmVTZXhwLCAiciIsIGtleVNpemVJbkJ5dGVzKQogICAgICAg
ICB8fCAhZXh0cmFjdEVDRFNBU2lnbmF0dXJlSW50ZWdlcihzaWduYXR1cmUsIHNpZ25hdHVyZVNl
eHAsICJzIiwga2V5U2l6ZUluQnl0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHNpZ25hdHVyZTsKIH0K
QEAgLTEyOSwxMSArMTI5LDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnko
Z2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAg
ICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFz
aEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAg
ICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTQ1LDcgKzE0NSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIGtleVNpemVJbkJ5dGVzLCBzaWduYXR1
cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnbmF0dXJlLmRhdGEoKSArIGtleVNpemVJbkJ5
dGVzKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCB0
aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyByYXcgaGFzaGVkIGRhdGEuCkBAIC0x
NTMsMTMgKzE1MywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlf
c2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcwogICAgIHsKICAgICAgICAg
YXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRp
Zmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
ZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3Mg
cmF3KShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2gu
c2l6ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCBiZjY2
OTZhM2EzMThkODBhNzI1Y2UwZWViYjIwZmYzOGJlOTY3ZmExLi4xYjE2MmI3MjdlOWNiNDQ0ZGJh
MDVhNGIzNWE4YmU5NDA0NDlmZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTQ4LDE4ICs0
OCwxOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRz
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogCiAgICAgYXV0byBtYWNBbGdvcml0aG0g
PSBobWFjQWxnb3JpdGhtKGlkZW50aWZpZXIpOwogICAgIGlmICghbWFjQWxnb3JpdGhtKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gV2UgY2FuIGltbWVkaWF0ZWx5IGRpc2NhcmQgaW52YWxpZCBvdXRwdXQgbGVuZ3Ro
cywgb3RoZXJ3aXNlIG5lZWRlZCBmb3IgdGhlIGV4cGFuZCBzdGVwLgogICAgIHNpemVfdCBtYWNM
ZW5ndGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oKm1hY0FsZ29yaXRobSk7CiAgICAgaWYg
KGxlbmd0aEluQnl0ZXMgPiBtYWNMZW5ndGggKiAyNTUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfbWFjX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X21hY19vcGVuKCZoYW5kbGUsICptYWNBbGdvcml0aG0sIDAsIG51bGxwdHIpOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU3RlcCAxIC0tIEV4dHJhY3QuIEEgcHNl
dWRvLXJhbmRvbSBrZXkgaXMgZ2VuZXJhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0K
QEAgLTc0LDI1ICs3NCwyNSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogICAgICAgICAgICAg
ZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCBzYWx0LmRhdGEoKSwgc2FsdC5zaXplKCkp
OwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAg
ICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXpl
KCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
ICAgICAgICAgc2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1ZG9SYW5kb21LZXkuc2l6
ZSgpOwogICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBwc2V1ZG9SYW5kb21L
ZXkuZGF0YSgpLCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3
cm9uZyBpZiBsaWJnY3J5cHQgZGlkbid0IHdyaXRlIG91dCB0aGUgcHJvcGVyIGFtb3VudCBvZiBk
YXRhLgogICAgICAgICBpZiAocHNldWRvUmFuZG9tS2V5U2l6ZSAhPSBtYWNMZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICAvLyBTdGVwICMyIC0tIEV4cGFuZC4KQEAgLTEwOCwxMyArMTA4
LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAgICAgICAgICAgICBlcnJvciA9IGdjcnlf
bWFjX3Jlc2V0KGhhbmRsZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlcnJvciA9IGdj
cnlfbWFjX3NldGtleShoYW5kbGUsIHBzZXVkb1JhbmRvbUtleS5kYXRhKCksIHBzZXVkb1JhbmRv
bUtleS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKICAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gVCgwKSA9IGVtcHR5
IHN0cmluZyAoemVybyBsZW5ndGgpIC0tIGkuZS4gZW1wdHkgbGFzdEJsb2NrCkBAIC0xMjgsMTkg
KzEyOCwxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVC
aXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogICAgICAgICAgICAgZXJyb3IgPSBn
Y3J5X21hY193cml0ZShoYW5kbGUsIGJsb2NrRGF0YS5kYXRhKCksIGJsb2NrRGF0YS5zaXplKCkp
OwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAg
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2l6ZV90IGJsb2NrU2l6ZSA9IGxhc3RCbG9j
ay5zaXplKCk7CiAgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxlLCBsYXN0
QmxvY2suZGF0YSgpLCAmYmxvY2tTaXplKTsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IFNvbWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBw
cm9wZXIgYW1vdW50IG9mIGRhdGEuCiAgICAgICAgICAgICBpZiAoYmxvY2tTaXplICE9IGxhc3RC
bG9jay5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICAvLyBBcHBlbmQg
dGhlIGN1cnJlbnQgYmxvY2sgZGF0YSB0byB0aGUgb3V0cHV0IHZlY3Rvci4KICAgICAgICAgICAg
IG91dHB1dC5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4
IDBkMjMxMmQxY2UxMDg1NDhkZDNjNDBjNWI0Yzc2NWUzYzkyYTA5MDIuLjMwYTMyODkyNTY2NWIx
ZjY5YzcyZTVjYmIzOTZkZmM0NjAzZjY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtNjIs
MjEgKzYyLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNp
Z25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiAgICAgUEFMOjpHQ3J5cHQ6Okhh
bmRsZTxnY3J5X21hY19oZF90PiBoZDsKICAgICBnY3J5X2Vycm9yX3QgZXJyID0gZ2NyeV9tYWNf
b3BlbigmaGQsIGFsZ29yaXRobSwgMCwgbnVsbHB0cik7CiAgICAgaWYgKGVycikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGVyciA9IGdjcnlfbWFjX3NldGtleShoZCwga2V5RGF0YSwga2V5LnNpemUoKSk7CiAgICAgaWYg
KGVycikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGVyciA9IGdjcnlfbWFjX3dyaXRlKGhkLCBkYXRhLCBkYXRhTGVuZ3Ro
KTsKICAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGRpZ2VzdExlbmd0aCA9IGdjcnlfbWFj
X2dldF9hbGdvX21hY2xlbihhbGdvcml0aG0pOwogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1
cmUoZGlnZXN0TGVuZ3RoKTsKICAgICBlcnIgPSBnY3J5X21hY19yZWFkKGhkLCBzaWduYXR1cmUu
ZGF0YSgpLCAmZGlnZXN0TGVuZ3RoKTsKICAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2lnbmF0dXJl
LnJlc2l6ZShkaWdlc3RMZW5ndGgpOwogICAgIHJldHVybiBzaWduYXR1cmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RG
MkdDcnlwdC5jcHAKaW5kZXggN2M5MDA1MTViYzE5MGI2NWE2OGZmODg2ZGU5ZDhiOTRhNjVjOWU3
NS4uOWIxMWJhYWMyZmE2Njc4YjQ5Y2FlMzExNTIyMDY1NzBlN2IyYzJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJL
REYyR0NyeXB0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5RGF0YQog
ICAgIC8vIERldGVybWluZSB0aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3aWxsIGJlIHVzZWQgZm9y
IGRlcml2YXRpb24uCiAgICAgYXV0byBoYXNoQWxnb3JpdGhtID0gZGlnZXN0QWxnb3JpdGhtKGhh
c2hJZGVudGlmaWVyKTsKICAgICBpZiAoIWhhc2hBbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBMZW5n
dGgsIGluIGJpdHMsIGlzIGEgbXVsdGlwbGUgb2YgOCwgYXMgZ3VhcmFudGVlZCBieSBDcnlwdG9B
bGdvcml0aG1QQktERjI6OmRlcml2ZUJpdHMoKS4KICAgICBBU1NFUlQoIShsZW5ndGggJSA4KSk7
CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRhCiAgICAgZ2NyeV9lcnJv
cl90IGVycm9yID0gZ2NyeV9rZGZfZGVyaXZlKGtleURhdGEuZGF0YSgpLCBrZXlEYXRhLnNpemUo
KSwgR0NSWV9LREZfUEJLREYyLCAqaGFzaEFsZ29yaXRobSwgc2FsdERhdGEuZGF0YSgpLCBzYWx0
RGF0YS5zaXplKCksIGl0ZXJhdGlvbnMsIHJlc3VsdC5zaXplKCksIHJlc3VsdC5kYXRhKCkpOwog
ICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0
Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDM4OWZiYmRhM2I1OGY1
Mjk4NmIwNWI5NjQzMjRkMzA0M2I0MmMxMDIuLjA2ZTI4ZTc0MGUyZDRmNDQyMjY4Y2ZjMTg3NzAy
YmYwNzk4NjMzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNw
cApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAgICAgICBwbGFp
blRleHQuc2l6ZSgpLCBwbGFpblRleHQuZGF0YSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIC8vIEVuY3J5cHQgZGF0YSB3aXRoIHRoZSBwcm92aWRlZCBrZXkuIFRoZSBy
ZXR1cm5lZCBzLWV4cHJlc3Npb24gaXMgb2YgdGhpcyBmb3JtOgpAQCAtNTIsMTMgKzUyLDEzIEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNp
cGhlclNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYGFgIGludGVnZXIu
CiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gYVNleHAoZ2NyeV9zZXhwX2Zp
bmRfdG9rZW4oY2lwaGVyU2V4cCwgImEiLCAwKSk7CiAgICAgaWYgKCFhU2V4cCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CkBA
IC03MSw3ICs3MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERl
Y3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgICAgIGNpcGhlclRl
eHQuc2l6ZSgpLCBjaXBoZXJUZXh0LmRhdGEoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICAvLyBEZWNyeXB0IGRhdGEgd2l0aCB0aGUgcHJvdmlkZWQga2V5LiBUaGUgcmV0
dXJuZWQgcy1leHByZXNzaW9uIGlzIG9mIHRoaXMgZm9ybToKQEAgLTgyLDEzICs4MiwxMyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90
IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAgIGVycm9yID0gZ2NyeV9wa19kZWNyeXB0KCZwbGFp
blNleHAsIGVuY1ZhbFNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCBgdmFsdWVgIGludGVn
ZXIuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gdmFsdWVTZXhwKGdjcnlf
c2V4cF9maW5kX3Rva2VuKHBsYWluU2V4cCwgInZhbHVlIiwgMCkpOwogICAgIGlmICghdmFsdWVT
ZXhwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggNGNhNDAwZmJhMTQ2ZWEwNTU1
NjNmNzBmN2U0OGFhMDkyMzU0NTM1Ny4uMmMxYTMxZGYzN2IzMGU1ODdjY2IyZWRkODIzOGY2Njc1
ZjdhNjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAK
QEAgLTQyLDExICs0MiwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAg
ICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hB
bGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
KmRpZ2VzdEFsZ29yaXRobSk7CiAgICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAg
ICBkYXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKQEAgLTU3LDEzICs1NywxMyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0g
PSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlm
ICghc2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBrY3Mx
KShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6
ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC03NSwxMyArNzUsMTMgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25z
dCBWZWN0b3I8dWkKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX3NpZ24oJnNpZ25h
dHVyZVNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgcyBpbnRlZ2VyLgog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5k
X3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOwogICAgIGlmICghc1NleHApCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQpA
QCAtOTMsMTEgKzkzLDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAg
ICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgq
ZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAg
IGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0
YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIHNpZ25hdHVyZS5zaXplKCksIHNpZ25hdHVy
ZS5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ29uc3Ry
dWN0IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBLQ1MjMS1wYWRkZWQgaGFz
aGVkIGRhdGEuCkBAIC0xMTcsMTMgKzExNywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2Ny
eXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcwog
ICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNo
QWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRy
LCAiKGRhdGEoZmxhZ3MgcGtjczEpKGhhc2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxn
b3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUEdDcnlwdC5jcHAKaW5kZXggZTUxZTBkN2I1MGQzOWZjY2Q3MjdlMjQ0NjM5MzMxY2M0Y2Qw
MjlkMi4uZDc0ZTc5MjRlZjFhMGM2MzQ4M2Q1MjZhZTlhOTBjNjI1MmFlYjkzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaEFsZwogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGht
TmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGht
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1
aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIG9hZXApKGhhc2gtYWxnbyAlcyko
bGFiZWwgJWIpKHZhbHVlICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRobSwgbGFiZWxW
ZWN0b3Iuc2l6ZSgpLCBsYWJlbFZlY3Rvci5kYXRhKCksIHBsYWluVGV4dC5zaXplKCksIHBsYWlu
VGV4dC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewog
ICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgfQogCkBAIC02MiwxMyArNjIsMTMgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hB
bGcKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQoJmNpcGhlclNleHAs
IGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYSBpbnRlZ2VyLgogICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGFTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGNp
cGhlclNleHAsICJhIiwgMCkpOwogICAgIGlmICghYVNleHApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBp
WmVyb1ByZWZpeGVkRGF0YShhU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQpAQCAtODEsMTMgKzgx
LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgewogICAgICAgICBhdXRvIHNoYUFs
Z29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBnY3J5X2Vycm9y
X3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmVuY1ZhbFNleHAsIG51bGxwdHIsICIoZW5jLXZh
bChmbGFncyBvYWVwKShoYXNoLWFsZ28gJXMpKGxhYmVsICViKShyc2EoYSAlYikpKSIsCiAgICAg
ICAgICAgICAqc2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rvci5zaXplKCksIGxhYmVsVmVjdG9yLmRh
dGEoKSwgY2lwaGVyVGV4dC5zaXplKCksIGNpcGhlclRleHQuZGF0YSgpKTsKICAgICAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTksMTMg
Kzk5LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9wa19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAsIGtleVNleHApOwogICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRo
ZSBlbWJlZGRlZCB2YWx1ZSBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9z
ZXhwX3Q+IHZhbHVlU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihwbGFpblNleHAsICJ2YWx1ZSIs
IDApKTsKICAgICBpZiAoIXZhbHVlU2V4cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlEYXRhKHZhbHVl
U2V4cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCBiZjczZDg0YzMzYzhiM2Jk
N2ZiOGZlZWRmMTc2NTMzYzAzY2I1ZTM3Li43ZGU5ZWVkMjAzZjhlYWQ5Zjc0MmFhODBmN2M1NThh
MWYwZGE3MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAgLTQzLDExICs0MywxMSBA
QCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90
IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBkaWdlc3RBbGdv
cml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7
CiAgICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZGlnZXN0LT5hZGRC
eXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBkYXRhSGFzaCA9IGRpZ2Vz
dC0+Y29tcHV0ZUhhc2goKTsKQEAgLTU4LDEzICs1OCwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFt
ZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxk
KCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhh
c2ggJXMgJWIpKSIsCiAgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRh
SGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2LDEzICs3NiwxMyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2ln
bigmc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIGBz
YCBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdj
cnlfc2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOwogICAgIGlmICghc1Nl
eHApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6ZUlu
Qnl0ZXMpOwogfQpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5
cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAg
ICAgewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdv
cml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29y
aXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTEwLDcg
KzExMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIHNpZ25hdHVyZS5zaXpl
KCksIHNpZ25hdHVyZS5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgLy8gQ29uc3RydWN0IHRoZSBgZGF0YWAgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMgUFNT
LXBhZGRlZCBoYXNoZWQgZGF0YS4KQEAgLTExOCwxMyArMTE4LDEzIEBAIHN0YXRpYyBPcHRpb25h
bDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBzCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0
aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0
aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNl
eHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwc3MpKHNhbHQtbGVuZ3RoICV1KShoYXNoICVzICVi
KSkiLAogICAgICAgICAgICAgc2FsdExlbmd0aCwgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6
ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IDZhZDQwM2Y0NTU4YWM4Njg0YTg2MDRl
MDVmYzQ0YzdkZWViZjg0OGYuLjAzYTBiODkzNzEwZTFiNGJiMWFjNDQwNmE2Yjc3ZjFhOTJiNDE4
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNH
Q3J5cHQuY3BwCkBAIC0xMjAsMjAgKzEyMCwyMCBAQCBPcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBD
cnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgog
ICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwgbnVs
bHB0ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1lKGN1cnZlKSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlf
c2V4cF90PiBrZXlQYWlyU2V4cDsKICAgICBlcnJvciA9IGdjcnlfcGtfZ2Vua2V5KCZrZXlQYWly
U2V4cCwgZ2Vua2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwdWJsaWNLZXlTZXhwKGdjcnlfc2V4cF9m
aW5kX3Rva2VuKGtleVBhaXJTZXhwLCAicHVibGljLWtleSIsIDApKTsKICAgICBQQUw6OkdDcnlw
dDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwcml2YXRlS2V5U2V4cChnY3J5X3NleHBfZmluZF90b2tl
bihrZXlQYWlyU2V4cCwgInByaXZhdGUta2V5IiwgMCkpOwogICAgIGlmICghcHVibGljS2V5U2V4
cCB8fCAhcHJpdmF0ZUtleVNleHApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHB1YmxpY0tleSA9IENyeXB0b0tl
eUVDOjpjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxh
dGZvcm1FQ0tleUNvbnRhaW5lcihwdWJsaWNLZXlTZXhwLnJlbGVhc2UoKSksIHRydWUsIHVzYWdl
cyk7CiAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5RUM6OmNyZWF0ZShpZGVudGlmaWVy
LCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZvcm1FQ0tleUNvbnRhaW5lcihw
cml2YXRlS2V5U2V4cC5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKQEAgLTI0Miw3
ICsyNDIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU+IGN1cnZl
Rm9ySWRlbnRpZmllcihjb25zdCBWZWN0b3I8dWludDhfdAogICAgIGlmIChDcnlwdG9Db25zdGFu
dHM6Om1hdGNoZXMoZGF0YSwgc2l6ZSwgQ3J5cHRvQ29uc3RhbnRzOjpzX3NlY3A1MjFyMUlkZW50
aWZpZXIpKQogICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5hbWVkQ3VydmU6OlA1MjE7CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0U3BraShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUsIFZlY3Rv
cjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0
bWFwIHVzYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5UlNBR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
S2V5UlNBR0NyeXB0LmNwcAppbmRleCA1Yjg5NzI3NTA3NmM5OGExMWZhY2M4MzFmMjc1YjAwNmYx
MTU3NzNhLi41YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUxNDUyNmYzYzQ4OWI0NWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3Bw
CkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQzMl90PiBleHBvbmVudFZl
Y3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25lbnQKIHsKICAgICBpZiAo
ZXhwb25lbnQuc2l6ZSgpID4gNCkgewogICAgICAgICBpZiAoc3RkOjphbnlfb2YoZXhwb25lbnQu
YmVnaW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1aW50OF90IGVsZW1lbnQpIHsgcmV0dXJu
ICEhZWxlbWVudDsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICB1aW50MzJfdCByZXN1bHQg
PSAwOwpAQCAtMzA2LDcgKzMwNiw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlm
aWVyLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZv
cm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywg
UGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFi
bGUsIHVzYWdlcykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0
YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtNDAx
LDcgKzQwMSw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtj
czgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZh
bHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlByaXZhdGUsIFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyKHBsYXRmb3JtS2V5LnJlbGVh
c2UoKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENy
eXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybVJT
QUtleUNvbnRhaW5lcihwbGF0Zm9ybUtleS5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBv
cnRTcGtpKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
R0NyeXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0
VXRpbGl0aWVzLmNwcAppbmRleCA5ODg5NTFkMGUyMTc5YjRiYTFhZGQ5M2ZlZThhZGY3NTVjOTAy
YzQ1Li44MzAwZTcwNWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0YTgyZTg4NzhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuY3BwCkBAIC00Niw3
ICs0Niw3IEBAIE9wdGlvbmFsPGNvbnN0IGNoYXIqPiBoYXNoQWxnb3JpdGhtTmFtZShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4gInNoYTUxMiI7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8aW50PiBobWFjQWxn
b3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBHQ1JZX01B
Q19ITUFDX1NIQTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtODIsNyArODIs
NyBAQCBPcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
NTEyOgogICAgICAgICByZXR1cm4gR0NSWV9NRF9TSEE1MTI7CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBPcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobQogICAg
IGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAgICAgICAgcmV0dXJu
IFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBPcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0
aChnY3J5X21waV90IHBhcmFtTVBJKQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBp
X3ByaW50KEdDUllNUElfRk1UX1VTRywgbnVsbHB0ciwgMCwgJmRhdGFMZW5ndGgsIHBhcmFtTVBJ
KTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBkYXRhTGVuZ3Ro
OwpAQCAtMTIyLDcgKzEyMiw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdjcnlfc2V4
cF90IHBhcmFtU2V4cCkKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0
aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NS
WU1QSV9GTVRfVVNHKSk7CiAgICAgaWYgKCFwYXJhbU1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlM
ZW5ndGgocGFyYW1NUEkpOwogfQpAQCAtMTMyLDE0ICsxMzIsMTQgQEAgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgLy8gUmV0cmlldmUg
dGhlIE1QSSBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgocGFyYW1NUEkpOwog
ICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ29weSB0aGUgTVBJIGRhdGEgaW50byBhIHBy
b3Blcmx5LXNpemVkIGJ1ZmZlci4KICAgICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KCpsZW5ndGgp
OwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VT
Rywgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOwogICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVmaXhlZERhdGEo
Z2NyeV9tcGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIC8vIFJldHJpZXZlIHRoZSBN
UEkgbGVuZ3RoLiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRh
cmdldCBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgocGFyYW1NUEkpOwogICAg
IGlmICghbGVuZ3RoIHx8ICpsZW5ndGggPiB0YXJnZXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGaWxs
IG91dCB0aGUgb3V0cHV0IGJ1ZmZlciB3aXRoIHplcm9zLiBQcm9wZXJseSBkZXRlcm1pbmUgdGhl
IHplcm8gcHJlZml4IGxlbmd0aCwKICAgICAvLyBhbmQgY29weSB0aGUgTVBJIGRhdGEgaW50byBt
ZW1vcnkgYXJlYSBmb2xsb3dpbmcgdGhlIHByZWZpeCAoaWYgYW55KS4KQEAgLTE1OSw3ICsxNTks
NyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVmaXhlZERhdGEoZ2NyeV9t
cGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdj
cnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSArIHByZWZpeExlbmd0
aCwgdGFyZ2V0TGVuZ3RoLCBudWxscHRyLCBwYXJhbU1QSSk7CiAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTcwLDcgKzE3MCw3IEBAIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCiAgICAg
Ly8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5h
bWUgbXBpLWRhdGEpCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1Q
SShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwogICAg
IGlmICghcGFyYW1NUEkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpRGF0YShwYXJhbU1QSSk7CiB9CkBA
IC0xODAsNyArMTgwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlaZXJvUHJlZml4
ZWREYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCwgc2l6ZV90IHRhcmcKICAgICAvLyBSZXRyaWV2
ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0
YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4
cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CiAgICAgaWYgKCFwYXJh
bU1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKHBhcmFtTVBJLCB0YXJn
ZXRMZW5ndGgpOwogfQpAQCAtMTg5LDcgKzE4OSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gbXBpU2lnbmVkRGF0YShnY3J5X21waV90IG1waSkKIHsKICAgICBhdXRvIGRhdGEgPSBtcGlE
YXRhKG1waSk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRhdGEtPmF0KDApICYgMHg4
MCkKICAgICAgICAgZGF0YS0+aW5zZXJ0KDAsIDB4MDApOwpAQCAtMjAxLDcgKzIwMSw3IEBAIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5X3NleHBfdCBwYXJhbVNl
eHApCiB7CiAgICAgYXV0byBkYXRhID0gbXBpRGF0YShwYXJhbVNleHApOwogICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChkYXRhLT5hdCgwKSAmIDB4ODApCiAgICAgICAgIGRhdGEtPmluc2Vy
dCgwLCAweDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKaW5kZXggMzRjZDA2N2NmMjRm
NjJiYzZlY2ZhNjcyMDc2NTA3N2JiZjlhNjUxMy4uMjUwZDJmMjM1Y2RhMmQ0NGQxZDc0N2Q0ZjMy
OGRlMmZjMjc2ZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9T
ZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZh
dWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gSW5p
dGlhbGx5IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgd2VyZSBpbnRlbmRlZCB0byBwZXJmb3JtIEtF
SyB3cmFwcGluZyBhbmQgdW53cmFwcGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0Ny
eXB0b0tleUVDLmNwcAppbmRleCBiYmNkOGQ4MTI1ZGU3NWQ3OTBkMDQ0MTJhY2VmMmFlMDRmODg3
YTBiLi4zZGM1OGY1MzQ3NzU0Njc4MzhhNjZiYTVmYzQ4ZGRjY2I2NjZlNDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0
YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9OYW1lZEN1cnZlKGNvbnN0
IFN0cmluZyYgY3VydmUpCiAgICAgaWYgKGN1cnZlID09IFA1MjEpCiAgICAgICAgIHJldHVybiBD
cnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDUyMTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ3J5cHRvS2V5RUM6OkNyeXB0b0tleUVD
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwg
Q3J5cHRvS2V5VHlwZSB0eXBlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyJiYgcGxhdGZvcm1LZXks
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCmluZGV4IGE3YzYwNzkxYjkxZTlm
NWQyZDQ4MTczZDY4NzJlYWMyZTQzY2Q3YTYuLjhkMGJmZDgxYmQ0NTQ0YzhlZWY3N2U5NDUwN2Y5
OTJmMDI1ZjAxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0
b0tleVJTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNB
LmNwcApAQCAtNTcsOCArNTcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6
OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogICAgIGlmIChr
ZXlEYXRhLmQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gaW1wb3J0IHB1YmxpYyBrZXkKICAgICAg
ICAgYXV0byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3Jl
YXRlUHVibGljKFdURk1vdmUoKm1vZHVsdXMpLCBXVEZNb3ZlKCpleHBvbmVudCkpOwotICAgICAg
ICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBw
bGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBXVEY6
Om51bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0s
IGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwg
KnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICAvLyBO
b3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhv
bGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxv
cHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gu
dmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwdWJs
aWNLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKICAgICAvLyBp
bXBvcnQgcHJpdmF0ZSBrZXkKQEAgLTY3LDggKzY3LDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4g
Q3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0
aG0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSAm
JiBrZXlEYXRhLnEuaXNOdWxsKCkgJiYga2V5RGF0YS5kcC5pc051bGwoKSAmJiBrZXlEYXRhLmRw
LmlzTnVsbCgpICYmIGtleURhdGEucWkuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBwcml2YXRl
S2V5Q29tcG9uZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGUoV1RG
TW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSwgV1RGTW92ZSgqcHJpdmF0ZUV4cG9u
ZW50KSk7Ci0gICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBp
ZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3Jl
YXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OworICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlz
IGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFz
aCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShh
bGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAg
ICAgfQogCiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSB8fCBrZXlEYXRhLnEuaXNOdWxsKCkg
fHwga2V5RGF0YS5kcC5pc051bGwoKSB8fCBrZXlEYXRhLmRxLmlzTnVsbCgpIHx8IGtleURhdGEu
cWkuaXNOdWxsKCkpCkBAIC0xMDEsOCArMTAxLDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5
cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0aG0K
IAogICAgIGlmICgha2V5RGF0YS5vdGgpIHsKICAgICAgICAgYXV0byBwcml2YXRlS2V5Q29tcG9u
ZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25h
bERhdGEoV1RGTW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSwgV1RGTW92ZSgqcHJp
dmF0ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdURk1vdmUoc2Vjb25kUHJp
bWVJbmZvKSwgeyB9KTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkg
ZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5
UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVj
dCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6
Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKICAgICB9CiAKICAgICBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29tcG9uZW50czo6UHJpbWVJ
bmZvPiBvdGhlclByaW1lSW5mb3M7CkBAIC0xMjYsOCArMTI2LDggQEAgUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBh
bGdvcml0aG0KICAgICB9CiAKICAgICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRzID0gQ3J5cHRv
S2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShXVEZNb3Zl
KCptb2R1bHVzKSwgV1RGTW92ZSgqZXhwb25lbnQpLCBXVEZNb3ZlKCpwcml2YXRlRXhwb25lbnQp
LCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUluZm8pLCBXVEZN
b3ZlKG90aGVyUHJpbWVJbmZvcykpOwotICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUg
YW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICByZXR1cm4gQ3J5cHRvS2V5
UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlm
IGhhc2ggaXMgc3RkOjpudWxsb3B0LgorICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShh
bGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiB9
CiAKIEpzb25XZWJLZXkgQ3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5j
cHAKaW5kZXggMmU3NzY0MGYwYzA4NTE3NTAxYWVjMmM5YzY3ZGJmYjc2OTQ1NWRjNy4uOGI5YjNi
ZmU4ZDhlNjkxYTc3Y2I2NDRiNWJhMzJhMzUzMDMwMjdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwCkBAIC03
MywxMiArNzMsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjeXB0
QUVTX0dDTShjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb24KIAogRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgcmV0
dXJuIGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFp
blRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdM
ZW5ndGgudmFsdWVPcigwKSAvIDgpOworICAgIHJldHVybiBlbmNyeXB0QUVTX0dDTShwYXJhbWV0
ZXJzLml2VmVjdG9yKCksIGtleS5rZXkoKSwgcGxhaW5UZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9u
YWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CiB9
CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6
cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1l
dGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lw
aGVyVGV4dCkKIHsKLSAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9y
KCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3Rv
cigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CisgICAgcmV0dXJuIGRl
Y3lwdEFFU19HQ00ocGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIGNpcGhlclRleHQs
IHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgu
dmFsdWVfb3IoMCkgLyA4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKaW5k
ZXggZDc4MGVmMDE2MGRiMDliNDFiZDgwNjAxNmUxNDgxMDRjNWEzMDY4Zi4uZWU4NGFlOTcyZTdh
NTJjNWEyYWFjNTcyMjQ4OWYwMWY4MzMyODQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5RUMmIGJhc2VL
ZXksIGNvbnN0IENyeXB0b0tleUVDJiBwdWJsaWNLZXkpCiB7Ci0gICAgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiByZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiByZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2
ZWRLZXkoYmFzZUtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsgLy8gUGVyIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2MDkwI3NlY3Rpb24tNC4KICAgICBzaXplX3Qgc2l6ZSA9IGRlcml2
ZWRLZXkuc2l6ZSgpOwogICAgIGlmICghQ0NFQ0NyeXB0b3JDb21wdXRlU2hhcmVkU2VjcmV0KGJh
c2VLZXkucGxhdGZvcm1LZXkoKSwgcHVibGljS2V5LnBsYXRmb3JtS2V5KCksIGRlcml2ZWRLZXku
ZGF0YSgpLCAmc2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1ITUFDTWFjLmNwcAppbmRleCBmOGRiM2IyZjk5M2ZlMDY4YTM4ZjZjM2EzY2Ni
ZDUzNTVjYTk4MTVjLi4zMDMwNzcyMDBkNzU3Yzc4YmEzNmZlNjI5N2JjZGVmM2RiY2UzNTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNN
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1B
Q01hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENDSG1hY0FsZ29yaXRo
bT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGkKICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBr
Q0NIbWFjQWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RBbGdvcml0aG0uaAppbmRleCAwODkx
ZDM5MTRhOTRkZTQ0OGYxYzUyNDIxZWYzYWIyYTFmMjFlMTE5Li44ZDE3ODE3ZTc0MThlOTUxMGU4
ZTAzODdmYTk4ZTdkMjVjNTZlMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShD
cnlwdG9BbGdvcmkKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6
CiAgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvS2V5RUNNYWMuY3BwCmluZGV4IGY0N2UxZDhhNzM3MGIyNjU2ZjA5OGMxNTNlYzUxZDQ0
OGFlYWNlMTEuLmY1NGRiNzdkMjkzNjIwMDY5NjA0YzNlMjEzYzg3NzY5MTBkMzdlYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgT3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtR2Vu
ZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBDQ0VDQ3J5cHRvclJlZiBjY1B1
YmxpY0tleSA9IG51bGxwdHI7CiAgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQcml2YXRlS2V5ID0gbnVs
bHB0cjsKICAgICBpZiAoQ0NFQ0NyeXB0b3JHZW5lcmF0ZVBhaXIoc2l6ZSwgJmNjUHVibGljS2V5
LCAmY2NQcml2YXRlS2V5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5RUM6
OmNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9y
bUVDS2V5Q29udGFpbmVyKGNjUHVibGljS2V5KSwgdHJ1ZSwgdXNhZ2VzKTsKICAgICBhdXRvIHBy
aXZhdGVLZXkgPSBDcnlwdG9LZXlFQzo6Y3JlYXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9L
ZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyKGNjUHJpdmF0ZUtleSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9L
ZXlSU0FNYWMuY3BwCmluZGV4IDI3NTVlNzM1ZmU2ZGM4NDZiYjRmMWJlOGRkZTUyYzE0N2I5ZjA5
OTIuLjZmMWE4NDIyMmFiMmZiMTNmYjQ4ZjRiYzU1MzZkNTNhMGIxNDg5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKQEAgLTMxOCw4ICszMTgs
OCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIGlmIChDQ1JTQUNyeXB0b3JJbXBvcnQo
a2V5RGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBrZXlEYXRhLnNpemUoKSAtIGhlYWRlclNpemUs
ICZjY1B1YmxpY0tleSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gTm90aWNl
OiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIu
IEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0Lgot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFs
dWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5
VHlwZTo6UHVibGljLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1B1YmxpY0tleSksIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpKTsKKyAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBl
ZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
cnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9ybVJT
QUtleUNvbnRhaW5lcihjY1B1YmxpY0tleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKIH0KIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBj
b25zdApAQCAtMzc1LDggKzM3NSw4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJT
QTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgaWYg
KENDUlNBQ3J5cHRvckltcG9ydChrZXlEYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIGtleURhdGEu
c2l6ZSgpIC0gaGVhZGVyU2l6ZSwgJmNjUHJpdmF0ZUtleSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBp
cyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhh
c2ggaXMgV1RGOjpudWxsb3B0LgotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNB
KGlkZW50aWZpZXIsIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZvcm1SU0FLZXlDb250YWlu
ZXIoY2NQcml2YXRlS2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIC8vIE5vdGljZTog
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJ
dCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVl
X29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlU
eXBlOjpQcml2YXRlLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1ByaXZhdGVLZXkpLCBleHRy
YWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCBhN2YwOGZk
MTc3NDMzZmYyYmY2NTQwN2ZjZGRhMjY4MjNkY2U0ZGM2Li44OTkzMzg4OGIyMmQ5YTM5ODg0Zjkx
YWU4MmViMzM4OWI5YWQxMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVBbmRTdG9yZU1hc3RlcktleSgp
CiAgICAgc3RhdHVzID0gU2VjQWNjZXNzQ3JlYXRlKChfX2JyaWRnZSBDRlN0cmluZ1JlZilsb2Nh
bGl6ZWRJdGVtTmFtZSwgbnVsbHB0ciwgJmFjY2Vzc1JlZik7CiAgICAgaWYgKHN0YXR1cykgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSBzZWN1cml0eSBhY2Nlc3Mgb2Jq
ZWN0IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBlcnJvciAlZCIsIChpbnQpc3Rh
dHVzKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAgICAgUmV0YWluUHRyPFNlY0FjY2Vzc1JlZj4gYWNjZXNzID0gYWRv
cHRDRihhY2Nlc3NSZWYpOwogCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAg
ICAgaWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSB0
cnVzdGVkIGFwcGxpY2F0aW9uIG9iamVjdCBmb3Igc3RvcmluZyBXZWJDcnlwdG8gbWFzdGVyIGtl
eSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIFJldGFpblB0cjxTZWNU
cnVzdGVkQXBwbGljYXRpb25SZWY+IHRydXN0ZWRBcHAgPSBhZG9wdENGKHRydXN0ZWRBcHBSZWYp
OwogCiAgICAgc3RhdHVzID0gU2VjQUNMU2V0Q29udGVudHMoYWNsLCAoX19icmlkZ2UgQ0ZBcnJh
eVJlZilAWyAoX19icmlkZ2UgaWQpdHJ1c3RlZEFwcC5nZXQoKSBdLCAoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpbG9jYWxpemVkSXRlbU5hbWUsIGtTZWNLZXljaGFpblByb21wdFJlcXVpcmVQYXNzcGhh
c2UpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3Qgc2V0
IEFDTCBmb3IgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwgKGludClzdGF0dXMpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICNlbmRpZgogCkBAIC0xNDQsNyArMTQ0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgc3RhdHVzID0gU2VjSXRlbUFkZCgoQ0ZEaWN0aW9uYXJ5UmVm
KWF0dHJpYnV0ZXMsIG51bGxwdHIpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCJDYW5ub3Qgc3RvcmUgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwgKGlu
dClzdGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBtYXN0ZXJLZXlEYXRhOwpAQCAtMTY1
LDcgKzE2NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGZpbmRNYXN0ZXJL
ZXkoKQogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBlcnJTZWNJdGVt
Tm90Rm91bmQgJiYgc3RhdHVzICE9IGVyclNlY1VzZXJDYW5jZWxlZCkKICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ291bGQgbm90IGZpbmQgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5Y2hh
aW4sIGVycm9yICVkIiwgKGludClzdGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKICAgICByZXR1cm4gYmFzZTY0
RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoa2V5
RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQoKSkpOwpAQCAtMTgzLDcg
KzE4Myw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3Rl
cktleSgpCiAgICAgICAgIHJldHVybiBtYXN0ZXJLZXk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIGRlbGV0ZURl
ZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCmlu
ZGV4IDRiM2RlYTMwZGE2NjJmMWU5NWE3YTU1OGY0ZDY1MWM4ZDgyZTM1MmUuLmM5ZWM5OWM5YTg5
YjFhYTk5ZDcwNDBlZGZkMWVmMWYyMTM2YTgwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNT
TC5jcHAKQEAgLTUzLDE0ICs1MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAgICAg
Y29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwog
ICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKICAgICBp
bnQgbGVuOwogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAg
aWYgKCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzaXplX3QgcGxhaW5TaXplID0gcGxhaW5UZXh0LnNpemUoKTsKICAgICBjb25zdCBzaXpl
X3QgY2lwaGVyVGV4dExlbiA9IHJvdW5kVXBUb011bHRpcGxlT2YoRVZQX0NJUEhFUl9ibG9ja19z
aXplKGFsZ29yaXRobSksIHBsYWluU2l6ZSArIDEpOwpAQCAtNjgsMTUgKzY4LDE1IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3Bl
cmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3Jp
dGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlk
ZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBv
dXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRl
eHQuZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblNpemUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gRmluYWxpemUgdGhlIGVuY3J5cHRpb24uIEZ1cnRoZXIgY2lwaGVydGV4dCBieXRlcyBtYXkg
YmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRGaW5hbF9l
eChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBjaXBoZXJUZXh0OwogfQpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtl
eS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRy
IGN0eDsKIApAQCAtOTYsMjAgKzk2LDIwIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAg
IC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2
cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlh
bGl6ZSB0aGUgZGVjcnlwdGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRGVjcnlwdElu
aXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEo
KSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJlIGRlY3J5cHRlZCwgYW5k
IG9idGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBk
YXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRhKCks
IGNpcGhlclNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiA9IGxlbjsKIAogICAgIC8vIEZpbmFs
aXplIHRoZSBkZWNyeXB0aW9uLiBGdXJ0aGVyIHBsYWludGV4dCBieXRlcyBtYXkgYmUgd3JpdHRl
biBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0
KCksIHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiAr
PSBsZW47CiAKICAgICBwbGFpblRleHQuc2hyaW5rKHBsYWluVGV4dExlbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3Bl
blNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1B
RVNfQ0ZCT3BlblNTTC5jcHAKaW5kZXggZjgwZGExYjY0NmQ5ZTI2MzU0NjkyMzI2MDA2MmM4YTk2
MmY1NGQ4NS4uYWI2ODdmNmNjZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZkMTc4Njc5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NG
Qk9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3Jp
dGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVy
Q3R4UHRyIGN0eDsKIApAQCAtNjIsMjMgKzYyLDIzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QK
IAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0
eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
RGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmco
Y3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3Bl
cmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3Jp
dGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlk
ZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBv
dXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRl
eHQuZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBGdXJ0aGVyIGNpcGhlcnRleHQgYnl0
ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0
RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGxlbiwgJmxlbikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29y
aXRobShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhl
ckN0eFB0ciBjdHg7CiAKQEAgLTk3LDE5ICs5NywxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAgICBpZiAoIShj
dHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IEluaXRpYWxpemUgdGhlIGRlY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0Rl
Y3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBp
di5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBiZSBkZWNyeXB0
ZWQsIGFuZCBvYnRhaW4gdGhlIHBsYWludGV4dCBvdXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRGVj
cnlwdFVwZGF0ZShjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCksICZsZW4sIGNpcGhlclRleHQu
ZGF0YSgpLCBjaXBoZXJTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9u
LiBGdXJ0aGVyIHBsYWludGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAg
ICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRh
KCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHBsYWluVGV4dDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJP
cGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRo
bUFFU19DVFJPcGVuU1NMLmNwcAppbmRleCBiMWQxOGEwOWUwNDYwNDk5NDMyZTk4YWFmZjcwYTZi
MjZiYjg5ZTUwLi45MzE0NjIzOTZkZDFjMjNhYTI2Zjk2MDI3NjU1YjkyYTkwZTI5OGFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNf
Q1RST3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCkBAIC01NCwyMCArNTQsMjAgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHQoaW50IG9wZXJhdGlvbiwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXkKICAgICBjb25zdGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAg
IGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsK
ICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0eFB0ciBjdHg7CiAgICAg
aW50IGxlbjsKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAg
IGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgY29uc3Qgc2l6ZV90IGJsb2NrcyA9IHJvdW5kVXBUb011bHRpcGxlT2YoYmxvY2tTaXpl
LCBpbnB1dFRleHQuc2l6ZSgpKSAvIGJsb2NrU2l6ZTsKIAogICAgIC8vIERldGVjdCBsb29wCiAg
ICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgYmxvY2tzID4gKChz
aXplX3QpMSA8PCBjb3VudGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0
eSBiZWZvcmUgb3ZlcmZsb3cKICAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxv
Y2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOwpAQCAt
ODMsMTkgKzgzLDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0KGlu
dCBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5CiAgICAgewogICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pIG9wZXJhdGlvbgogICAgICAg
ICBpZiAoMSAhPSBFVlBfQ2lwaGVySW5pdF9leChjdHguZ2V0KCksIGFsZ29yaXRobSwgbnVsbHB0
ciwga2V5LmRhdGEoKSwgY291bnRlci5kYXRhKCksIG9wZXJhdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAvLyBEaXNhYmxlIHBhZGRpbmcKICAgICAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9D
VFhfc2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIFBy
b3ZpZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkKGRlY3J5cHRlZCksIGFuZCBvYnRhaW4g
dGhlIGVuY3J5cHRlZChkZWNyeXB0ZWQpIG91dHB1dAogICAgICAgICBpZiAoMSAhPSBFVlBfQ2lw
aGVyVXBkYXRlKGN0eC5nZXQoKSwgb3V0cHV0VGV4dC5kYXRhKCksICZsZW4sIGlucHV0VGV4dC5k
YXRhKCksIGhlYWRTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEZpbmFsaXplIHRoZSBl
bmNyeXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJGaW5hbF9l
eChjdHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIC8vIFNlZG9uZCBwYXJ0CkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0aW9uLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleQogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24o
ZGVjcnlwdGlvbikgb3BlcmF0aW9uCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJJbml0X2V4
KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCByZW1haW5pbmdDb3Vu
dGVyLmRhdGEoKSwgb3BlcmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIERpc2FibGUg
cGFkZGluZwogICAgICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZyhjdHgu
Z2V0KCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0
byBiZSBlbmNyeXB0ZWQoZGVjcnlwdGVkKSwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkKGRlY3J5
cHRlZCkgb3V0cHV0CiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJVcGRhdGUoY3R4LmdldCgp
LCBvdXRwdXRUZXh0LmRhdGEoKSArIGhlYWRTaXplLCAmbGVuLCBpbnB1dFRleHQuZGF0YSgpICsg
aGVhZFNpemUsIHRhaWxTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEZpbmFsaXplIHRo
ZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJGaW5h
bF9leChjdHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgaGVhZFNpemUgKyBsZW4sICZsZW4p
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dFRleHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3Bl
blNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1B
RVNfR0NNT3BlblNTTC5jcHAKaW5kZXggMjcyYTYyNDMzOWVhNDY0NTVkNTc1Y2EwOGRkYWNmN2Vl
ZWJiNzU5NS4uMDVmNmVjOTU0ZWRjNjM3YWIyYTc5YzZmMTVkMzIwNzljMzZhODk1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dD
TU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19HQ01PcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3Jp
dGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVy
Q3R4UHRyIGN0eDsKICAgICBpbnQgbGVuOwpAQCAtNjMsNDIgKzYzLDQyIEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAog
ICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhf
c2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVu
Y3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5n
ZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IFNldCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQo
KSwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxscHRyKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0SW5pdF9l
eChjdHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChhZGRpdGlvbmFsRGF0YS5z
aXplKCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9FbmNyeXB0VXBkYXRlKGN0eC5nZXQo
KSwgbnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5z
aXplKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0
byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBvdXRwdXQKICAgICBpZiAo
MSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVu
LCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFs
aXplIHRoZSBlbmNyeXB0aW9uLiBOb3JtYWxseSBjaXBoZXJ0ZXh0IGJ5dGVzIG1heSBiZSB3cml0
dGVuIGF0CiAgICAgLy8gdGhpcyBzdGFnZSwgYnV0IHRoaXMgZG9lcyBub3Qgb2NjdXIgaW4gR0NN
IG1vZGUKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEZpbmFsX2V4KGN0eC5nZXQoKSwgY2lwaGVy
VGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRoZSB0YWcKICAgICBp
ZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQoKSwgRVZQX0NUUkxfR0NNX0dFVF9U
QUcsIHRhZ0xlbmd0aCwgY2lwaGVyVGV4dC5kYXRhKCkgKyB0YWdPZmZzZXQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIGNpcGhlclRleHQ7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRo
bShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0
eFB0ciBjdHg7CiAgICAgaW50IGxlbjsKQEAgLTExOSw0MiArMTE5LDQyIEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAog
ICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhf
c2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVu
Y3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRJbml0X2V4KGN0eC5n
ZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IFNldCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQo
KSwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxscHRyKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9l
eChjdHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChhZGRpdGlvbmFsRGF0YS5z
aXplKCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQo
KSwgbnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5z
aXplKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU2V0IGV4cGVjdGVkIHRhZyB2YWx1
ZQogICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LmdldCgpLCBFVlBfQ1RSTF9H
Q01fU0VUX1RBRywgdGFnLnNpemUoKSwgdGFnLmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRl
IHRoZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkIG91
dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0
LmRhdGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRleHRMZW4pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHBsYWluVGV4dExlbiA9IGxlbjsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9uCiAg
ICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRh
KCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGxhaW5UZXh0TGVuICs9IGxlbjsKIApAQCAtMTY1
LDcgKzE2NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlw
dChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlB
RVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byBv
dXRwdXQgPSBjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBs
YWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRh
Z0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CisgICAgYXV0byBvdXRwdXQgPSBjcnlwdEVuY3J5cHQo
a2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5h
ZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAv
IDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006
OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9B
bGdvcml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgYXV0byBvdXRwdXQg
PSBjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRl
eHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5n
dGgudmFsdWVPcigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gY3J5cHREZWNyeXB0KGtleS5r
ZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBjaXBoZXJUZXh0LCBwYXJhbWV0ZXJzLmFkZGl0
aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7
CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXT3BlblNTTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVu
U1NMLmNwcAppbmRleCBhNDU5NDkzNjI4YzFjZWIxZjgwNTMyZmZiOWFiYzk3NDU0YWRjMjc1Li5h
MTdjMjljYTRkMjYyY2JlOGE2YzNlZjY5N2IxNWRjNjNhZGEzYjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNf
S1dPcGVuU1NMLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7
CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXpl
KCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsK
ICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dChkYXRhLnNpemUoKSArIDgpOwpAQCAtNjAs
MjEgKzYwLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0V3JhcEtl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQg
aW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihF
VlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdz
KGN0eC5nZXQoKSwgRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQX0FMTE9XKTsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5
cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBudWxs
cHRyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIFByb3ZpZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkLCBh
bmQgb2J0YWluIHRoZSBlbmNyeXB0ZWQgb3V0cHV0CiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRV
cGRhdGUoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmxlbiwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBGdXJ0aGVy
IGNpcGhlcnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgx
ICE9IEVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGxl
biwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTgzLDcgKzgzLDcg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnMKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdv
cml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4OwogICAgIFZlY3Rvcjx1aW50OF90PiBwbGFpblRl
eHQoZGF0YS5zaXplKCkpOwpAQCAtOTIsMjIgKzkyLDIyIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBj
b25zCiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAgICBpZiAo
IShjdHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEVWUF9DSVBIRVJfQ1RYX3NldF9mbGFncyhjdHguZ2V0KCksIEVWUF9DSVBIRVJfQ1RYX0ZMQUdf
V1JBUF9BTExPVyk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZWNyeXB0aW9uIG9wZXJhdGlv
bgogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9leChjdHguZ2V0KCksIGFsZ29yaXRobSwg
bnVsbHB0ciwga2V5LmRhdGEoKSwgbnVsbHB0cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBt
ZXNzYWdlIHRvIGJlIGRlY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAog
ICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEo
KSwgJmxlbiwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwbGFpblRleHRMZW4g
PSBsZW47CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgZGVjcnlwdGlvbi4gRnVydGhlciBwbGFpbnRl
eHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgxICE9IEVWUF9E
ZWNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBwbGFpblRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwbGFpblRleHRMZW4gKz0gbGVuOwogCiAgICAgcGxhaW5UZXh0LnNocmluayhwbGFp
blRleHRMZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5
cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5z
c2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCmluZGV4IGRmZmM5YzllNDAyM2NmYzVi
MTgyNDJmNTUzYzQ4NjJiMzk2NzQ3YzUuLjIyMjZiN2YwMDhkYjc5NjgxOWMyYThmNzBjNTM2OTcy
YTNhOTc4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0
b0FsZ29yaXRobUhNQUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKQEAgLTQxLDI5ICs0MSwyOSBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoY29uc3Qg
RVZQX01EKiBhbGdvcml0aG0sIGNvbgogICAgIC8vIENyZWF0ZSB0aGUgTWVzc2FnZSBEaWdlc3Qg
Q29udGV4dAogICAgIEV2cERpZ2VzdEN0eFB0ciBjdHg7CiAgICAgaWYgKCEoY3R4ID0gRXZwRGln
ZXN0Q3R4UHRyKEVWUF9NRF9DVFhfY3JlYXRlKCkpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIERpZ2VzdFNpZ24gb3BlcmF0aW9uCiAgICAgRXZwUEtleVB0ciBoa2V5OwogICAgIGlmICgh
KGhrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ld19tYWNfa2V5KEVWUF9QS0VZX0hNQUMsIG51
bGxwdHIsIGtleS5kYXRhKCksIGtleS5zaXplKCkpKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoMSAhPSBFVlBf
RGlnZXN0U2lnbkluaXQoY3R4LmdldCgpLCBudWxscHRyLCBhbGdvcml0aG0sIG51bGxwdHIsIGhr
ZXkuZ2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ2FsbCB1cGRhdGUgd2l0aCB0aGUgbWVzc2FnZQogICAg
IGlmICgxICE9IEVWUF9EaWdlc3RTaWduVXBkYXRlKGN0eC5nZXQoKSwgZGF0YSwgZGF0YUxlbmd0
aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgRGlnZXN0U2lnbiBvcGVyYXRpb24KICAgICBz
aXplX3QgbGVuID0gMDsKICAgICBpZiAoMSAhPSBFVlBfRGlnZXN0U2lnbkZpbmFsKGN0eC5nZXQo
KSwgbnVsbHB0ciwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBPYnRhaW4gdGhlIHNpZ25hdHVyZQogICAg
IFZlY3Rvcjx1aW50OF90PiBjaXBoZXJUZXh0KGxlbik7CiAgICAgaWYgKDEgIT0gRVZQX0RpZ2Vz
dFNpZ25GaW5hbChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBjaXBoZXJUZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAppbmRleCBlNjMxY2UxMjg1ODRjZTI4OTIz
ZTdlOTdhZTZjY2JhNTc2OWI4YjE1Li45M2ZhMGFlOGMyOTVlNjkyZjVmZWRmMmE2NTBlZDEyNWIw
MTEyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9L
ZXlSU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDx1
aW50MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4
cG9uZW50CiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsKICAgICAgICAgaWYgKHN0
ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgpIC0gNCwgW10odWludDhf
dCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgdWludDMyX3QgcmVzdWx0ID0gMDsKQEAgLTIxOSw3ICsyMTksNyBAQCBSZWZQdHI8Q3J5cHRv
S2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBpZGVudGlmaQogICAgIGlmICghcGtleSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVl
T3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5
cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3Io
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6
OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBSZWZQ
dHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtMjM2LDcgKzIzNiw3IEBAIFJlZlB0cjxDcnlw
dG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBpZGVudGlmCiAgICAgaWYgKCFwa2V5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFs
dWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5
VHlwZTo6UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVf
b3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5
cGU6OlByaXZhdGUsIFdURk1vdmUocGtleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKIH0KIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNwa2koKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvT3BlblNTTFV0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0
aWVzLmNwcAppbmRleCBkZDlmNDU0NDZhMGY0YzBkYjFlZDc2YzVmYjBiMTRhZGUyMTVkY2M4Li44
YzIxMjM3YzJmY2FmOWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVzLmNwcApAQCAtNTQsMjEg
KzU0LDIxIEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlRGlnZXN0KGNvbnN0
IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiB7CiAgICAgRXZwRGlnZXN0Q3R4UHRy
IGN0eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RDdHhQdHIoRVZQX01EX0NUWF9jcmVhdGUo
KSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaW50IGRpZ2VzdExlbmd0aCA9IEVWUF9NRF9zaXplKGFsZ29yaXRobSk7
CiAgICAgaWYgKGRpZ2VzdExlbmd0aCA8PSAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFZlY3Rvcjx1aW50OF90PiBkaWdl
c3QoZGlnZXN0TGVuZ3RoKTsKIAogICAgIGlmIChFVlBfRGlnZXN0SW5pdF9leChjdHguZ2V0KCks
IGFsZ29yaXRobSwgbnVsbHB0cikgIT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChFVlBfRGlnZXN0VXBkYXRl
KGN0eC5nZXQoKSwgbWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKSAhPSAxKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKEVWUF9EaWdlc3RGaW5hbF9leChjdHguZ2V0KCksIGRpZ2VzdC5kYXRhKCksIG51bGxw
dHIpICE9IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGlnZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVuU1NMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
T3BlblNTTC5jcHAKaW5kZXggOGVkMGVkZDYzNmRmZmFiNzMxZDExZDY3YThhNWRhNTUxYTMwZTAx
ZS4uMTIzZGE1NzRjMzFmZmE5NWEyZjEzNjIyYzNmNDI5ZGM2ZmFlNDI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVu
U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5
cHRvS2V5V3JhcE9wZW5TU0wuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSgp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIEluaXRpYWxseSB0aGVzZSBoZWxwZXIgZnVu
Y3Rpb25zIHdlcmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBLRUsgd3JhcHBpbmcgYW5kIHVud3JhcHBp
bmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9B
bGdvcml0aG1BZXNHY21QYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJz
L0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCmluZGV4IDg2ODg3YjVhZmFhNWMyZDgxMDRi
NDk4MjIzZDk1ZWQ2NGYzZTY2OWMuLmUyOTY2MmEyMjc1NTdjZjYxZDRiMTQwN2NhNTg3OTUzMjgw
NDFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0
b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJh
bWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRhVmVjdG9yOwogCiAgICAg
ICAgIEJ1ZmZlclNvdXJjZSBhZGRpdGlvbmFsRGF0YUJ1ZmZlciA9IFdURk1vdmUoKmFkZGl0aW9u
YWxEYXRhKTsKLSAgICAgICAgYWRkaXRpb25hbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IGFkZGl0aW9uYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWFkZGl0aW9uYWxE
YXRhQnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGFW
ZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJh
bWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaAppbmRleCAwYjMzMmM0MjY2MzM0
ODNiNDdlY2VjOGU1YzU1MWU1MGRlMTY3MWIwLi4zNWQ0NTAxZGE3NmIyZWFjNTdhOWIxYzRhMGU3
MTQ3NDI3OTMyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVy
cy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2xhYmVsVmVjdG9yOwogCiAgICAg
ICAgIEJ1ZmZlclNvdXJjZSBsYWJlbEJ1ZmZlciA9IFdURk1vdmUoKmxhYmVsKTsKLSAgICAgICAg
bGFiZWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxhYmVsID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoIWxhYmVsQnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG1fbGFi
ZWxWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApp
bmRleCA5Y2Y2MjkyZTQzODllYzIzOWNlMDE4ZTU1MjY1NGZjMGRlMjM1YTE4Li40MTljNmFiMjBh
Y2VjZWQzYTIzZGU5MGIzYWM1OTBhNWZhYWMzNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgUmVmUHRyPENTU0NhbGNP
cGVyYXRpb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y3JlYXRlTWluT3JNYXhPckNsYW1w
KENhbGNPcGUKICAgICBBU1NFUlQob3AgPT0gQ2FsY09wZXJhdG9yOjpNaW4gfHwgb3AgPT0gQ2Fs
Y09wZXJhdG9yOjpNYXggfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCk7CiAgICAgQVNTRVJU
X0lNUExJRVMob3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCwgdmFsdWVzLnNpemUoKSA9PSAzKTsK
IAotICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVnb3J5ID0gV1RGOjpudWxs
b3B0OworICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVnb3J5ID0gc3RkOjpu
dWxsb3B0OwogICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpIHsKICAgICAgICAgYXV0byB2
YWx1ZUNhdGVnb3J5ID0gcmVzb2x2ZWRUeXBlRm9yTWluT3JNYXhPckNsYW1wKHZhbHVlLT5jYXRl
Z29yeSgpLCBkZXN0aW5hdGlvbkNhdGVnb3J5KTsKIApAQCAtMTc0Myw3ICsxNzQzLDcgQEAgYm9v
bCBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsY0Z1bmN0aW9uKENTU1BhcnNl
clRva2VuUmFuZ2UmIHRva2VucywKICAgICBzd2l0Y2ggKGZ1bmN0aW9uSUQpIHsKICAgICBjYXNl
IENTU1ZhbHVlTWluOgogICAgIGNhc2UgQ1NTVmFsdWVNYXg6Ci0gICAgICAgIG1heEFyZ3VtZW50
Q291bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1heEFyZ3VtZW50Q291bnQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVDbGFtcDoKICAgICAgICAg
bWluQXJndW1lbnRDb3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGJhYzUyOTg0MTAyZWIwMDQ1ZGM2NTM1YWU2
OGU2OGI5YjQ2NjhkMDMuLmE2ZDU0M2JjZWRmNTkzNTgzM2FhMmNhNzk3NDliYjAwNTU1YTMxNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBjb3VudGVy
VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcAogICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBm
b3IgKGF1dG8mIGtleVZhbHVlIDogKm1hcCkgewogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFs
dWVQb29sLmNyZWF0ZVZhbHVlKGtleVZhbHVlLmtleSwgQ1NTVW5pdFR5cGU6OkNTU19TVFJJTkcp
KTsKLSAgICAgICAgZG91YmxlIG51bWJlciA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291
bnRlckluY3JlbWVudCA/IGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlIDoga2V5VmFsdWUu
dmFsdWUucmVzZXRWYWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IChw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IGtleVZhbHVlLnZhbHVl
LmluY3JlbWVudFZhbHVlIDoga2V5VmFsdWUudmFsdWUucmVzZXRWYWx1ZSkudmFsdWVfb3IoMCk7
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUobnVtYmVyLCBD
U1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwogICAgIH0KICAgICByZXR1cm4gbGlzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IGI3N2QxMWZjNjQ1ZDkxOGE3NTY4YzdkZDMxZDIx
N2ZlMTk2ZmM4NTQuLmU1MmY3ZjgyNjg0YmViOGE1OTc4NjJlM2M3OTE4NmZhYWEzZDY3NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBG
b250U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlSXRhbGljUmFuZ2UoQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGlmICh2YWx1ZS5pc0ZvbnRTdHlsZVZhbHVlKCkpIHsKICAgICAgICAgYXV0byByZXN1
bHQgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTdHlsZUZyb21WYWx1ZSh2
YWx1ZSk7Ci0gICAgICAgIHJldHVybiB7IHJlc3VsdC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVl
KCkpLCByZXN1bHQudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9OworICAgICAgICByZXR1
cm4geyByZXN1bHQudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSksIHJlc3VsdC52YWx1ZV9v
cihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9OwogICAgIH0KIAogICAgIEFTU0VSVCh2YWx1ZS5pc0Zv
bnRTdHlsZVJhbmdlVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IGYzZjAx
NTdkMTAyMjRiNmE2ZTA0ZGYyYjM3NjUxZTY2YjY0MTAxOGIuLjQyYzg1Y2U4ODY0NjQzMzY1MzNh
MmViZWM3ZTQwODI3YzNhNDhmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC04NCwx
NCArODQsMTQgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFuZ2U7CiAgICAgCiAgICAg
Ly8gT3B0aW9uYWwgcmV0dXJuIHZhbHVlcyB0byByZXByZXNlbnQgZGVmYXVsdCBzdHJpbmcgZm9y
IG1lbWJlcnMgb2YgRm9udEZhY2UuaAotICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+
IGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8g
V1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFt
aWxpZXMuZ2V0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxv
cHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQotICAgIE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1
czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7
IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19j
YXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxp
dGllcy5jb21wdXRlU2xvcGUoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJp
bGl0aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9u
YWw8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
cy5jb21wdXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQotICAgIGNvbnN0IE9wdGlv
bmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25h
bDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQotICAgIGNvbnN0IE9wdGlvbmFs
PEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9w
dGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KLSAgICBP
cHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiAgc3RhdGlj
X2Nhc3Q8T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsg
fQorICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGlj
X2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9CisgICAg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRp
b25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29t
cHV0ZVdlaWdodCgpKTsgfQorICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRj
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVs
bG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0KKyAgICBPcHRpb25hbDxGb250
U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1
czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7
IH0KKyAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9u
Q2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJl
ID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFi
aWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcygpKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFu
Z2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUg
PyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdl
Pj4+KG1fcmFuZ2VzKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+
IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFp
bHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0
dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KKyAgICBPcHRpb25hbDxGb250TG9hZGluZ0Jl
aGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0
dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExv
YWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsgfQogICAgIHZvaWQgc2V0V2VpZ2h0
KEZvbnRTZWxlY3Rpb25SYW5nZSB3ZWlnaHQpIHsgbV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
LndlaWdodCA9IHdlaWdodDsgfQogICAgIHZvaWQgc2V0U3RyZXRjaChGb250U2VsZWN0aW9uUmFu
Z2Ugc3RyZXRjaCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMud2lkdGggPSBzdHJldGNo
OyB9CiAgICAgdm9pZCBzZXRTdHlsZShGb250U2VsZWN0aW9uUmFuZ2UgaXRhbGljKSB7IG1fZm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllcy5zbG9wZSA9IGl0YWxpYzsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAKaW5kZXggMWEzZmYxNDBmYWFiODM5NGQwZjNmZTBkMmUyNmEyY2Jm
Y2U5NzMwZC4uNjM0ZTc4MGM4OTZkYTAwYWEwYTM3OTc1YzE4MWJiNjIxZmQ1MGIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0zMzAsMTMgKzMzMCwxMyBAQCBzdGF0
aWMgRm9udFNlbGVjdGlvblJlcXVlc3QgY29tcHV0ZUZvbnRTZWxlY3Rpb25SZXF1ZXN0KENTU1By
b3BlcnR5UGFyc2VySGVscGVycwogCiAgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGEgRm9udFJhdywg
d2Uga25vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBkZXJlZmVyZW5jZSBzdHJldGNoU2VsZWN0aW9u
VmFsdWUgYXMKICAgICAvLyBjb25zdW1lRm9udFN0cmV0Y2hLZXl3b3JkVmFsdWVSYXcgb25seSBy
ZXR1cm5zIHJlc3VsdHMgdmFsaWQgdG8gcGFzcyB0byBmb250U3RyZXRjaFZhbHVlLgotICAgIGF1
dG8gc3RyZXRjaFNlbGVjdGlvblZhbHVlID0gZm9udFN0cmV0Y2hWYWx1ZShmb250LnN0cmV0Y2gu
dmFsdWVPcihDU1NWYWx1ZU5vcm1hbCkpOworICAgIGF1dG8gc3RyZXRjaFNlbGVjdGlvblZhbHVl
ID0gZm9udFN0cmV0Y2hWYWx1ZShmb250LnN0cmV0Y2gudmFsdWVfb3IoQ1NTVmFsdWVOb3JtYWwp
KTsKICAgICBBU1NFUlQoc3RyZXRjaFNlbGVjdGlvblZhbHVlKTsKIAogICAgIGF1dG8gc3R5bGVL
ZXl3b3JkID0gZm9udC5zdHlsZSA/IGZvbnQuc3R5bGUtPnN0eWxlIDogQ1NTVmFsdWVOb3JtYWw7
CiAgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gWyZdICgpIC0+IE9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25WYWx1ZT4gewogICAgICAgICBpZiAoc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlTm9y
bWFsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQgPT0gQ1NTVmFsdWVJdGFs
aWMpCiAgICAgICAgICAgICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAgICAgICAgQVNTRVJUKGZv
bnQuc3R5bGUgJiYgc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlT2JsaXF1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNldC5oCmluZGV4IGYxZGY3MDYzMjExYjE4ODViNmNiNTk2ZjU3YzU3MzNh
Zjg1MzU3MWYuLjMxYzAwMDgxY2M2NDhjYjdjYTQwMWZjM2Y0NTEyMDEyODZkOWE2ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgRm9udFNlbGVjdGlvbktleUhhc2hUcmFpdHMgOiBTaW1wbGVDbGFzc0hhc2hU
cmFpdHM8Rm9udFNlbGVjdGlvbktleT4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBGb250U2VsZWN0aW9uS2V5IGVt
cHR5VmFsdWUoKSB7IHJldHVybiBGb250U2VsZWN0aW9uUmVxdWVzdCB7IH07IH0KLSAgICAgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvbnRTZWxlY3Rpb25LZXkmIHNsb3Qp
IHsgc2xvdCA9IFdURjo6bnVsbG9wdDsgfQorICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3RE
ZWxldGVkVmFsdWUoRm9udFNlbGVjdGlvbktleSYgc2xvdCkgeyBzbG90ID0gc3RkOjpudWxsb3B0
OyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZvbnRTZWxlY3Rp
b25LZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICB9OwogICAgIHVzaW5nIEZvbnRT
ZWxlY3Rpb25IYXNoTWFwID0gSGFzaE1hcDxGb250U2VsZWN0aW9uS2V5LCBSZWZQdHI8Q1NTU2Vn
bWVudGVkRm9udEZhY2U+LCBGb250U2VsZWN0aW9uS2V5SGFzaCwgRm9udFNlbGVjdGlvbktleUhh
c2hUcmFpdHM+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCBhY2Qy
YTFjYzI0ZTM0YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0Li4xOGY5N2ZlZjdjNjk1YTFkM2I2
ZWRlMzA1M2ZiMGVhY2QyOGFhM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIE9wdGlvbmFsPEF0b21TdHJpbmc+IENTU0ZvbnRTZWxl
Y3Rvcjo6cmVzb2x2ZUdlbmVyaWNGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uCiAgICAgICAg
IHJldHVybiBwbGF0Zm9ybVJlc3VsdDsKIAogICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Y29uc3QgYXV0byYgc2V0dGluZ3MgPSBtX2NvbnRleHQtPnNldHRpbmdzVmFsdWVzKCk7CiAKQEAg
LTI5OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxBdG9tU3RyaW5nPiBDU1NGb250U2VsZWN0b3I6OnJl
c29sdmVHZW5lcmljRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbgogICAgICAgICAgICAgcmV0
dXJuIEF0b21TdHJpbmcoKmZhbWlseVN0cmluZyk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBGb250UmFuZ2VzIENTU0Zv
bnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZv
bnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCA0NDU0MTZhOGZkY2YwZDU1NjNlYTgzZDFl
NGRmNjNiNTlkMDQ2ODY2Li4wMDk0YzY4NGNkZjFiN2M1ODE5NjUyYjMxMTc5M2QwYjUxYmJjNTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCkBAIC0xMTAsMTIgKzEx
MCwxMiBAQCBPcHRpb25hbDxzaXplX3Q+IFN0eWxlUnVsZUtleWZyYW1lczo6ZmluZEtleWZyYW1l
SW5kZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgcGFyc2VEZWZlcnJlZFJ1bGVzSWZO
ZWVkZWQoKTsKICAgICBhdXRvIGtleXMgPSBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVLZXlMaXN0
KGtleSk7CiAgICAgaWYgKGtleXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAoYXV0byBpID0gbV9r
ZXlmcmFtZXMuc2l6ZSgpOyBpLS07ICkgewogICAgICAgICBpZiAobV9rZXlmcmFtZXNbaV0tPmtl
eXMoKSA9PSBrZXlzKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgfQotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTdHlsZVJ1
bGVLZXlmcmFtZXM6OnNocmlua1RvRml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCmluZGV4IGYwZGI0Y2E1YjE1M2MxOTUyZTlhY2JhNDQzNGZlMTg0ZWQ4OWQ4OTgu
LjY5ZjA3YTg2MmE1ZDdkYTdiNjNkYzFhOGUyMGY2NjM2N2I0YjQ5YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODI0LDcgKzgyNCw3IEBAIEV4Y2VwdGlv
bk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZShDU1NVbml0VHlwZSB1
bml0VHlwZSkgY29uc3QKIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShD
U1NVbml0VHlwZSB1bml0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRl
cm5hbCh1bml0VHlwZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRlcm5h
bCh1bml0VHlwZSkudmFsdWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6
ZG91YmxlVmFsdWUoKSBjb25zdApAQCAtODM1LDIxICs4MzUsMjEgQEAgZG91YmxlIENTU1ByaW1p
dGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiBPcHRpb25hbDxib29sPiBDU1NQcmltaXRp
dmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVW5pdFR5cGUoKSA9
PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuICFtX3ZhbHVlLm51bTsKIH0K
IAogT3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUG9zaXRpdmUoKSBjb25zdAog
ewogICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRUeXBlOjpDU1NfQ0FMQykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gbV92YWx1ZS5udW0gPiAwOwogfQogCiBPcHRpb25hbDxib29sPiBDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNOZWdhdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVVu
aXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3ZhbHVl
Lm51bSA8IDA7CiB9CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVl
Ojppc0NlbnRlclBvc2l0aW9uKCkgY29uc3QKIE9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pdFR5cGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9u
KHByaW1pdGl2ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252
ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENTU1VuaXRUeXBlIHNvdXJjZVVu
aXRUeXBlID0gcHJpbWl0aXZlVHlwZSgpOwogICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBz
b3VyY2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NVbml0VHlwZTo6Q1NTX0RJ
TUVOU0lPTikKQEAgLTg3NiwyMCArODc2LDIwIEBAIE9wdGlvbmFsPGRvdWJsZT4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVxdWVzdGVkVW5pCiAK
ICAgICAvLyBDYW5ub3QgY29udmVydCBiZXR3ZWVuIHVucmVsYXRlZCB1bml0IGNhdGVnb3JpZXMg
aWYgb25lIG9mIHRoZW0gaXMgbm90IENTU1VuaXRDYXRlZ29yeTo6TnVtYmVyLgogICAgIGlmIChz
b3VyY2VDYXRlZ29yeSAhPSB0YXJnZXRDYXRlZ29yeSAmJiBzb3VyY2VDYXRlZ29yeSAhPSBDU1NV
bml0Q2F0ZWdvcnk6Ok51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBDU1NVbml0Q2F0ZWdvcnk6
Ok51bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0YXJnZXRDYXRlZ29yeSA9PSBDU1NVbml0Q2F0ZWdvcnk6
Ok51bWJlcikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29udmVyc2lvbiB0byBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25pY2FsIHVuaXQgaW4gdGhp
cyB2YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlwZSA9IGNhbm9uaWNhbFVu
aXRUeXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAgICBpZiAodGFyZ2V0VW5p
dFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgaWYgKHNvdXJjZVVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKSB7CiAgICAg
ICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTVW5pdFR5cGU6OkNTU19OVU1C
RVIgaW4gdGhlIHNhbWUgd2F5IGFzIENTU1BhcnNlcjo6dmFsaWRVbml0KCkgd2hpbGUgdXNpbmcg
bm9uLXN0cmljdCBtb2RlLgogICAgICAgICBzb3VyY2VVbml0VHlwZSA9IGNhbm9uaWNhbFVuaXRU
eXBlRm9yQ2F0ZWdvcnkodGFyZ2V0Q2F0ZWdvcnkpOwogICAgICAgICBpZiAoc291cmNlVW5pdFR5
cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
ZG91YmxlIGNvbnZlcnRlZFZhbHVlID0gZG91YmxlVmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydGllcy5qc29uCmluZGV4IGZhNWYxODE5NjE5OTIwNjk4ZTdlMGNkZjUwNGQ2NTg0MjZj
Y2ZkMWMuLjVkNjdkM2ViNzU0YTkzMmRkMjZiYjA0ZmUyYmUyMjNmMWZiNTQ5ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpAQCAtNTEsNyArNTEsNyBAQAogICAgICAgICAi
IiwKICAgICAgICAgIiogY29uZGl0aW9uYWwtY29udmVydGVyOiIsCiAgICAgICAgICJTaW1pbGFy
IHRvIHByb3BlcnR5IGNvbnZlcnRlciwgYnV0IHRoZSBjb252ZXJ0ZXIgZnVuY3Rpb24gcmV0dXJu
cyBhIiwKLSAgICAgICAgIldURjo6T3B0aW9uYWw8PiB0byBpbmRpY2F0ZSBpZiB0aGUgcHJvcGVy
dHkgc2V0dGVyIHNob3VsZCBiZSBjYWxsZWQiLAorICAgICAgICAic3RkOjpvcHRpb25hbDw+IHRv
IGluZGljYXRlIGlmIHRoZSBwcm9wZXJ0eSBzZXR0ZXIgc2hvdWxkIGJlIGNhbGxlZCIsCiAgICAg
ICAgICJvciBub3QuIiwKICAgICAgICAgIiIsCiAgICAgICAgICIqIGN1c3RvbToiLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDUxOTNjMzJjMmVmNWExYjQ0NDI5YzRmMzM1
ZjNkN2FhNzI5OTUwNDYuLjZiNDM4OTZkMzhiNjZjMTRhMDY1ODBhZjZkYTA5ZGFjNDQ4ZjVjMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4
KQogRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkK
IHsKICAgICBhdXRvIHRleHQgPSBtYWtlU3RyaW5nKHNlbGVjdG9yLCAiIHsgIiwgc3R5bGUsICFz
dHlsZS5pc0VtcHR5KCkgPyAiICIgOiAiIiwgJ30nKTsKLSAgICBhdXRvIGluc2VydFJ1bGVSZXN1
bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpKTsKKyAgICBhdXRv
IGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVlX29yKGxlbmd0
aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAvLyBBcyBw
ZXIgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24sIGFsd2F5cyByZXR1cm4gLTEuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaAppbmRleCA5OTcxNWNlMjhhN2Y2MDlkYTAwN2JkMjQyOWEwZWI2ODVi
Y2VhY2M1Li5lN2JkZTNhNGJkZDBmZTdlYjM2OWE0Y2RiYWRjMzVjMTE5OTg2ZTc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgU2NvcGU7CiBj
bGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVu
dHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwotICAgIHN0YXRpYyBSZWY8Q1NT
U3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUmIG93bmVy
Tm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4gPSBXVEY6Om51bGxvcHQp
OworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+JiYsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2lu
Q2xlYW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3Jl
YXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIEVsZW1lbnQmIG93bmVyLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5bGVT
aGVldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
LmgKaW5kZXggYjk1NmY2YjNhNjMwYTdmMzJkZjRmMWUwMzVkODlmMjg1ZDM1NDg3MS4uNjhkMmI2
MDNhOTgwY2IwZDEyZWJhNzhhMzdhNjJlMmU2MjhhYWZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNz
IFJlbmRlclZpZXc7CiAKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgewogcHVibGlj
OgotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFs
PENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gV1RGOjpudWxsb3B0LCBSZW5kZXJT
dHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQorICAgIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9wdGlvbmFsPENTU1Byb3Bl
cnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0LCBSZW5kZXJTdHlsZSogdmll
d3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQogICAgICAgICA6IG1fc3R5
bGUoc3R5bGUpCiAgICAgICAgICwgbV9yb290U3R5bGUocm9vdFN0eWxlKQogICAgICAgICAsIG1f
cGFyZW50U3R5bGUocGFyZW50U3R5bGUpCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKHpvb20gPiAwKTsKICAgICB9CiAKLSAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3LCBPcHRpb25hbDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0eVRvQ29tcHV0ZSA9IFdURjo6
bnVsbG9wdCkKKyAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBPcHRpb25hbDxDU1NQ
cm9wZXJ0eUlEPiBwcm9wZXJ0eVRvQ29tcHV0ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBt
X3N0eWxlKHN0eWxlKQogICAgICAgICAsIG1fcm9vdFN0eWxlKHJvb3RTdHlsZSkKICAgICAgICAg
LCBtX3BhcmVudFN0eWxlKHBhcmVudFN0eWxlKQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgem9vbSgpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0aW5nRm9udFNpemUoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5Rm9udFNpemU7IH0K
ICAgICBib29sIGNvbXB1dGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5
VG9Db21wdXRlID09IENTU1Byb3BlcnR5TGluZUhlaWdodDsgfQotICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlUb0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlLnZh
bHVlT3IoQ1NTUHJvcGVydHlJbnZhbGlkKTsgfQorICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlU
b0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlLnZhbHVlX29yKENT
U1Byb3BlcnR5SW52YWxpZCk7IH0KICAgICBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKICAgICBkb3VibGUgdmlld3BvcnRXaWR0
aEZhY3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAppbmRleCBhMDBmMTY1YjQ4
MzczY2JhZTA0NDAwNjBjYTAxMjJhMWZlYWNkYTYxLi5jMzU0ZTk3ODI3M2JhNTZlMmZmYjU0N2Zm
MzkxODMzOWNkMGZjY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApAQCAtMTg5LDggKzE4
OSw4IEBAIFJlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90YXRlU2VsZihkb3VibGUgcm90WCwg
T3B0aW9uYWw8ZG91YmxlPiByb3RZLCBPcHRpb25hCiAgICAgICAgIHJvdFggPSAwOwogICAgICAg
ICByb3RZID0gMDsKICAgICB9Ci0gICAgbV9tYXRyaXgucm90YXRlM2Qocm90WCwgcm90WS52YWx1
ZU9yKDApLCByb3RaLnZhbHVlT3IoMCkpOwotICAgIGlmIChyb3RYIHx8IHJvdFkudmFsdWVPcigw
KSkKKyAgICBtX21hdHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLnZhbHVlX29yKDApLCByb3RaLnZh
bHVlX29yKDApKTsKKyAgICBpZiAocm90WCB8fCByb3RZLnZhbHVlX29yKDApKQogICAgICAgICBt
X2lzMkQgPSBmYWxzZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgK
aW5kZXggMDZkMDJiMTEzMGVmNmJjN2JiYzFlMGQzMzZjZmI2Mjc1YjNiNWZiNC4uMzk4MTZjMWQ2
NjM5ZWJmZWUyYmJjNmE4MWRlMzhkYzJiMzUyNmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaApA
QCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+
IG11bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJl
ZjxET01NYXRyaXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAg
ICBSZWY8RE9NTWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9
IDAsIGRvdWJsZSB0eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNjYWxlU2VsZihkb3VibGUg
c2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBXVEY6Om51bGxvcHQsIGRvdWJs
ZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91
YmxlIG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2FsZVNlbGYoZG91YmxlIHNj
YWxlWCA9IDEsIE9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZID0gc3RkOjpudWxsb3B0LCBkb3VibGUg
c2NhbGVaID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9IDAsIGRvdWJs
ZSBvcmlnaW5aID0gMCk7CiAgICAgUmVmPERPTU1hdHJpeD4gc2NhbGUzZFNlbGYoZG91YmxlIHNj
YWxlID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9IDAsIGRvdWJsZSBv
cmlnaW5aID0gMCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9
IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91Ymxl
PiByb3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgorICAgIFJl
ZjxET01NYXRyaXg+IHJvdGF0ZVNlbGYoZG91YmxlIHJvdFggPSAwLCBPcHRpb25hbDxkb3VibGU+
IHJvdFkgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4gcm90WiA9IHN0ZDo6bnVsbG9w
dCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVG
cm9tVmVjdG9yU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7CiAgICAgUmVmPERPTU1h
dHJpeD4gcm90YXRlQXhpc0FuZ2xlU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwgZG91
YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAg
ICBSZWY8RE9NTWF0cml4PiBza2V3WFNlbGYoZG91YmxlIHN4ID0gMCk7IC8vIEFuZ2xlIGlzIGlu
IGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9u
bHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAppbmRleCA1
ZDg5NTVkYTExZmFjOTJlMzBhZThiYTUwMjM2OTA5ZmNiMTFmZGY3Li5jMjZjYTQ2MmM4ODViYmE0
ODcxNWZmM2M1NGUwOGRjYTg1ZmEwZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhS
ZWFkT25seS5jcHAKQEAgLTEyMywxNyArMTIzLDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTU1h
dHJpeFJlYWRPbmx5Ojp2YWxpZGF0ZUFuZEZpeHVwKERPTU1hdHJpeDJESW5pdCYgaW5pdCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgImluaXQuZiBhbmQgaW5pdC5tNDIg
ZG8gbm90IG1hdGNoIl9zIH07CiAKICAgICBpZiAoIWluaXQubTExKQotICAgICAgICBpbml0Lm0x
MSA9IGluaXQuYS52YWx1ZU9yKDEpOworICAgICAgICBpbml0Lm0xMSA9IGluaXQuYS52YWx1ZV9v
cigxKTsKICAgICBpZiAoIWluaXQubTEyKQotICAgICAgICBpbml0Lm0xMiA9IGluaXQuYi52YWx1
ZU9yKDApOworICAgICAgICBpbml0Lm0xMiA9IGluaXQuYi52YWx1ZV9vcigwKTsKICAgICBpZiAo
IWluaXQubTIxKQotICAgICAgICBpbml0Lm0yMSA9IGluaXQuYy52YWx1ZU9yKDApOworICAgICAg
ICBpbml0Lm0yMSA9IGluaXQuYy52YWx1ZV9vcigwKTsKICAgICBpZiAoIWluaXQubTIyKQotICAg
ICAgICBpbml0Lm0yMiA9IGluaXQuZC52YWx1ZU9yKDEpOworICAgICAgICBpbml0Lm0yMiA9IGlu
aXQuZC52YWx1ZV9vcigxKTsKICAgICBpZiAoIWluaXQubTQxKQotICAgICAgICBpbml0Lm00MSA9
IGluaXQuZS52YWx1ZU9yKDApOworICAgICAgICBpbml0Lm00MSA9IGluaXQuZS52YWx1ZV9vcigw
KTsKICAgICBpZiAoIWluaXQubTQyKQotICAgICAgICBpbml0Lm00MiA9IGluaXQuZi52YWx1ZU9y
KDApOworICAgICAgICBpbml0Lm00MiA9IGluaXQuZi52YWx1ZV9vcigwKTsKIAogICAgIHJldHVy
biB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9u
bHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4IDYzOGJk
M2E2OWZhOTVjNTQwZDZhYjZjMDRhYjRlZDJlMGM5YThjZWUuLjhmOWVlZTExNjM4ZmRhNjIzNjdk
MTFiN2U5YzZkYTkwZjZiMGUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25s
eS5oCkBAIC0xMDEsOSArMTAxLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01N
YXRyaXg+PiBtdWx0aXBseShET01NYXRyaXhJbml0JiYgb3RoZXIpIGNvbnN0OwogICAgIFJlZjxE
T01NYXRyaXg+IGZsaXBYKCk7CiAgICAgUmVmPERPTU1hdHJpeD4gZmxpcFkoKTsKLSAgICBSZWY8
RE9NTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2Fs
ZVkgPSBXVEY6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAs
IGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0
cml4PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBz
dGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJs
ZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBz
Y2FsZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9yaWdp
blkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShk
b3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdURjo6bnVsbG9wdCwgT3B0
aW9uYWw8ZG91YmxlPiByb3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdy
ZWVzLgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFs
PGRvdWJsZT4gcm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiByb3RaID0gc3Rk
OjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgogICAgIFJlZjxET01NYXRyaXg+
IHJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHggPSAwLCBkb3VibGUgeSA9IDApOwogICAgIFJlZjxE
T01NYXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCwgZG91
YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVncmVlcy4KICAg
ICBSZWY8RE9NTWF0cml4PiBza2V3WChkb3VibGUgc3ggPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVn
cmVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJ
bmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5o
CmluZGV4IGM4MWYwMDBmOGRiMmFiMTJhYmQ5MjA1OWFlMzM4NWZiN2YwZWQ4ZTQuLjk4OGJmOTdk
MDdiNDJmMzkxNjYyYjM4NjcwZDRjZjA3YzY2OTczMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaApAQCAtNTQsNyArNTQsNyBAQCBpbmxpbmUg
T3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdodEtleXdvcmQoRm9udFNlbGVjdGlvblZhbHVl
IHdlaWdodCkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwogICAgIGlmICh3ZWlnaHQg
PT0gYm9sZFdlaWdodFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUJvbGQ7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxp
bmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJ
RCB2YWx1ZSkKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25W
YWx1ZT4gZm9udFdlaWdodFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCiAgICAgY2FzZSBDU1NWYWx1
ZUxpZ2h0ZXI6CiAgICAgICAgIHJldHVybiBsaWdodFdlaWdodFZhbHVlKCk7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIE9wdGlvbmFsPENTU1Zh
bHVlSUQ+IGZvbnRTdHJldGNoS2V5d29yZChGb250U2VsZWN0aW9uVmFsdWUgc3RyZXRjaCkKICAg
ICAgICAgcmV0dXJuIENTU1ZhbHVlRXh0cmFFeHBhbmRlZDsKICAgICBpZiAoc3RyZXRjaCA9PSB1
bHRyYUV4cGFuZGVkU3RyZXRjaFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVVsdHJh
RXhwYW5kZWQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250U3RyZXRj
aFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCkBAIC0xMTcsNyArMTE3LDcgQEAgaW5saW5lIE9wdGlv
bmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShDU1NWYWx1ZUlEIHZhbHVl
KQogICAgIGNhc2UgQ1NTVmFsdWVVbHRyYUV4cGFuZGVkOgogICAgICAgICByZXR1cm4gdWx0cmFF
eHBhbmRlZFN0cmV0Y2hWYWx1ZSgpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0x
MjcsNyArMTI3LDcgQEAgaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRTdHlsZUtleXdv
cmQoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHlsZSwKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlTm9ybWFsOwogICAgIGlmIChzdHlsZS52YWx1ZSgpID09IGl0YWxpY1ZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBheGlzID09IEZvbnRTdHlsZUF4aXM6Oml0YWwgPyBDU1NWYWx1ZUl0YWxp
YyA6IENTU1ZhbHVlT2JsaXF1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcAppbmRleCAxMTYxOWE5Njg4ODU2YjQ0ODhkMDU5MjczMzU5NzU3ZGEzOTc4YTg5
Li5iMzYwOWMyZTgxMmU4NzVmNzAxOWZiODM5YmIwNzFjMDlkZjI5MjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgc3Rh
dGljIGJvb2wgY29tcGFyZUFzcGVjdFJhdGlvVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIE1lZGkKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVl
KENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmRvdWJsZVZh
bHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKIH0KIApAQCAtNDg1LDIxICs0ODUsMjEgQEAg
c3RhdGljIGJvb2wgZ3JpZEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYsIEZyYW0KIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbXB1dGVM
ZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29sIHN0cmljdCwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1i
ZXIoKSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1
ZSgpOwogICAgICAgICAvLyBUaGUgb25seSB1bml0bGVzcyBudW1iZXIgdmFsdWUgYWxsb3dlZCBp
biBzdHJpY3QgbW9kZSBpcyB6ZXJvLgogICAgICAgICBpZiAoc3RyaWN0ICYmIHZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBpZiAocHJpbWl0aXZl
VmFsdWUuaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVM
ZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGRldmljZUhlaWdo
dEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQpA
QCAtODcyLDcgKzg3Miw3IEBAIHN0YXRpYyBib29sIGRpc3BsYXlNb2RlRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhCiAKICAgICBhdXRvIGtl
eXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAK
LSAgICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5hcHBsaWNh
dGlvbk1hbmlmZXN0KCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBtYW5pZmVzdCA9IGZyYW1l
LnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpIDogc3RkOjpudWxs
b3B0OwogICAgIGlmICghbWFuaWZlc3QpCiAgICAgICAgIHJldHVybiBrZXl3b3JkID09IENTU1Zh
bHVlQnJvd3NlcjsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIGJvb2wgTWVkaWFRdWVyeUV2YWx1YXRv
cjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4cHJlc3Npb24pIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBQYXNzIGBudWxscHRyYCBmb3Ig
YHBhcmVudFN0eWxlYCBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgY29udGV4dCBvZiBhIG1lZGlhIHF1
ZXJ5LgotICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSwgMSwgV1RGOjpudWxsb3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOwor
ICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsgbV9zdHlsZSwgZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxwdHIsIGRvY3VtZW50LnJl
bmRlclZpZXcoKSwgMSwgc3RkOjpudWxsb3B0IH0sICpmcmFtZSwgTm9QcmVmaXgpOwogfQogCiBi
b29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcyhEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDQ1YWRlMjJhMjg5ZjMxMjQ2NTE5MjYwZGI0MWU5ZDAy
ZDcyY2JmOTAuLmMxMzdjNTk4MWY3N2VlZjUyZWNhNjUzYmI4ZjlhZTRhMGVlNmVmNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgT3B0
aW9uYWw8Q29sb3I+IFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlBc0NvbG9yKENTU1Byb3BlcnR5
SUQgcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgYXV0byBjb2xvclZhbHVlID0gZ2V0UHJvcGVydHlD
U1NWYWx1ZShwcm9wZXJ0eSk7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oY29sb3JW
YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwcmltaXRpdmVDb2xvciA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqY29sb3JWYWx1ZSk7CiAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLmlzUkdC
Q29sb3IoKSA/IHByaW1pdGl2ZUNvbG9yLmNvbG9yKCkgOiBDU1NQYXJzZXI6OnBhcnNlQ29sb3Io
Y29sb3JWYWx1ZS0+Y3NzVGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5j
cHAKaW5kZXggY2UxN2ZiNGMyODliODk4MzA1ZmU2ZWIxNjAyZGYyYTIxMGJjYmJjOC4uNTIxNzM1
ODkzOTY0ZmQ4N2RjZDhmNDlmMjMwZjRjMTc3OWIxNmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFN0eWxlUnVsZUltcG9y
dDo6cmVxdWVzdFN0eWxlU2hlZXQoKQogCiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgY2hlY2sgd2hlbiBzdHlsZXNoZWV0IGlzIGluIGEgdXNlciBhZ2VudCBzaGFk
b3cgdHJlZS4KICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDY2NjM+LgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGFic1VSTCwg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgV1RG
OjpudWxsb3B0LCBTdHJpbmcobV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKKyAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVsbG9wdCwgU3RyaW5nKG1f
cGFyZW50U3R5bGVTaGVldC0+Y2hhcnNldCgpKSk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3Io
Y2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgaWYgKG1fY2FjaGVk
U2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudChtX3N0eWxlU2hlZXRD
bGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJG
YXN0UGF0aHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0
aHMuY3BwCmluZGV4IGZiOTAxYmExY2NjYTFmYmUzYjM1ZmYwOTliMWQ3NTU4MWI1ODU3NzEuLmNk
YjVmNTAzNDY2ZWVjYTk2YWYwMzg2MTdmZWZkN2YxZmJlZTI0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAKQEAgLTI2Myw3ICsyNjMs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShj
b25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgICAgICBjdXJyZW50Kys7CiAgICAgfQog
ICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAhaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkgewogICAg
ICAgICBkb3VibGUgbmV3VmFsdWUgPSBsb2NhbFZhbHVlICogMTAgKyAqY3VycmVudCsrIC0gJzAn
OwogICAgICAgICBpZiAobmV3VmFsdWUgPj0gMjU1KSB7CkBAIC0yNzcsMTAgKzI3NywxMCBAQCBz
dGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBD
aGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgIH0KIAogICAgIGlmIChjdXJyZW50ID09IGVuZCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgJiYgKCpjdXJy
ZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpjdXJyZW50ID09
ICcuJykgewogICAgICAgICAvLyBXZSBhbHJlYWR5IHBhcnNlZCB0aGUgaW50ZWdyYWwgcGFydCwg
dHJ5IHRvIHBhcnNlCkBAIC0yODgsMTUgKzI4OCwxNSBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhf
dD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5n
LAogICAgICAgICBkb3VibGUgcGVyY2VudGFnZSA9IDA7CiAgICAgICAgIGludCBudW1DaGFyYWN0
ZXJzUGFyc2VkID0gcGFyc2VEb3VibGUoY3VycmVudCwgZW5kLCAnJScsIHBlcmNlbnRhZ2UpOwog
ICAgICAgICBpZiAoIW51bUNoYXJhY3RlcnNQYXJzZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY3Vy
cmVudCArPSBudW1DaGFyYWN0ZXJzUGFyc2VkOwogICAgICAgICBpZiAoKmN1cnJlbnQgIT0gJyUn
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2VudGFnZTsKICAgICB9CiAK
ICAgICBpZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSAmJiAqY3VycmVu
dCAhPSAnJScpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7CiAgICAgICAgIGV4cGVj
dCA9IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFy
YWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0hUTUxT
cGFjZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCiAgICAgICAgIGN1cnJlbnQrKzsKICAgICBp
ZiAoY3VycmVudCA9PSBlbmQgfHwgKmN1cnJlbnQrKyAhPSB0ZXJtaW5hdG9yKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0
cmluZyA9IGN1cnJlbnQ7CiAKICAgICAvLyBDbGFtcCBuZWdhdGl2ZSB2YWx1ZXMgYXQgemVyby4K
QEAgLTM0OCwxNyArMzQ4LDE3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8dWludDhfdD4gcGFy
c2VBbHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvCiAKICAgICBpbnQg
bGVuZ3RoID0gZW5kIC0gc3RyaW5nOwogICAgIGlmIChsZW5ndGggPCAyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHN0cmluZ1tsZW5ndGggLSAxXSAhPSB0ZXJtaW5hdG9yIHx8ICFpc0FTQ0lJRGlnaXQoc3RyaW5n
W2xlbmd0aCAtIDJdKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChzdHJpbmdbMF0gIT0gJzAnICYmIHN0cmluZ1sw
XSAhPSAnMScgJiYgc3RyaW5nWzBdICE9ICcuJykgewogICAgICAgICBpZiAoY2hlY2tGb3JWYWxp
ZERvdWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvcikpIHsKICAgICAgICAgICAgIHN0cmluZyA9
IGVuZDsKICAgICAgICAgICAgIHJldHVybiBuZWdhdGl2ZSA/IDAgOiAyNTU7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5nWzBdICE9ICcuJykgewpA
QCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VB
bHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNvCiAKICAgICBkb3VibGUg
YWxwaGEgPSAwOwogICAgIGlmICghcGFyc2VEb3VibGUoc3RyaW5nLCBlbmQsIHRlcm1pbmF0b3Is
IGFscGhhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHN0cmluZyA9IGVuZDsKICAgICByZXR1cm4gbmVnYXRpdmUgPyAw
IDogY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PihhbHBoYSk7CkBAIC00MzMsMTggKzQzMywx
OCBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdIZXhDb2xv
cih1aW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIGNhc2UgODoKICAgICAgICAgcmV0dXJu
IGFzU1JHQkEoUGFja2VkQ29sb3I6OlJHQkEgeyB2YWx1ZSB9KTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBh
cnNlSGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCAhPSAzICYmIGxlbmd0aCAhPSA0ICYmIGxl
bmd0aCAhPSA2ICYmIGxlbmd0aCAhPSA4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90IHZhbHVlID0gMDsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgYXV0byBk
aWdpdCA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmICghaXNBU0NJSUhleERpZ2l0KGRpZ2l0
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA8PD0gNDsKICAgICAgICAgdmFsdWUgfD0gdG9B
U0NJSUhleFZhbHVlKGRpZ2l0KTsKICAgICB9CkBAIC00NzEsMTggKzQ3MSwxOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+
IHBhcnNlTnVtZXJpY0NvbAogICAgICAgICBhdXRvIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7
CiAgICAgICAgIGF1dG8gcmVkID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBl
bmQsICcsJywgZXhwZWN0KTsKICAgICAgICAgaWYgKCFyZWQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
YXV0byBncmVlbiA9IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcs
IGV4cGVjdCk7CiAgICAgICAgIGlmICghZ3JlZW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBi
bHVlID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0
KTsKICAgICAgICAgaWYgKCFibHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gYWxwaGEgPSBw
YXJzZUFscGhhVmFsdWUoY3VycmVudCwgZW5kLCAnKScpOwogICAgICAgICBpZiAoIWFscGhhKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAqcmVkLCAqZ3JlZW4sICpibHVlLCAqYWxwaGEgfTsK
ICAgICB9CiAKQEAgLTQ5MiwxOSArNDkyLDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sCiAg
ICAgICAgIGF1dG8gZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKICAgICAgICAgYXV0byByZWQg
PSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QpOwog
ICAgICAgICBpZiAoIXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGdyZWVuID0gcGFyc2VD
b2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0KTsKICAgICAgICAg
aWYgKCFncmVlbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGJsdWUgPSBwYXJzZUNvbG9ySW50
T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJyknLCBleHBlY3QpOwogICAgICAgICBpZiAoIWJs
dWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7ICpyZWQsICpncmVlbiwgKmJsdWUgfTsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOdW1lcmljQ29sb3Io
U3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC01
MzQsNyArNTM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBmaW5pc2hQYXJz
aW5nTmFtZWRDb2xvcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGwKICAgICBidWZmZXJbbGVuZ3Ro
XSA9ICdcMCc7CiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9yKGJ1ZmZlciwgbGVuZ3Ro
KTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29s
b3I6OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSk7CiB9CiAKQEAgLTU0MiwxMSArNTQy
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yCiB7CiAgICAgY2hhciBidWZmZXJbNjRdOyAv
LyBFYXNpbHkgYmlnIGVub3VnaCBmb3IgdGhlIGxvbmdlc3QgY29sb3IgbmFtZS4KICAgICBpZiAo
bGVuZ3RoID4gc2l6ZW9mKGJ1ZmZlcikgLSAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNb
aV07CiAgICAgICAgIGlmICghY2hhcmFjdGVyIHx8ICFpc0FTQ0lJKGNoYXJhY3RlcikpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKHN0YXRpY19jYXN0PGNoYXI+
KGNoYXJhY3RlcikpOwogICAgIH0KICAgICByZXR1cm4gZmluaXNoUGFyc2luZ05hbWVkQ29sb3Io
YnVmZmVyLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1w
bC5jcHAKaW5kZXggZWMwYzFhNjgyMWI1NmJkYTk5ZDBhZWYxYWI2NGMzMTJiNGFhODg5Mi4uNzI0
ZjFiMzkxZDMyYjYzODc4NDhiN2I0ZTAxNzkyZjNmYmRmOGUyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC04OCw3ICs4OCw3IEBAIENTU1BhcnNl
ckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBzdHJpCiBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlckltcGw6OnBh
cnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIENTU1BhcnNlckltcGwgcGFyc2Vy
KGNvbnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5n
UnVsZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7CisgICAgYXV0byBydWxlVHlw
ZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVfb3IoU3R5bGVSdWxlVHlwZTo6U3R5
bGUpOwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRpb25WYWx1ZShwYXJzZXIudG9rZW5pemVy
KCktPnRva2VuUmFuZ2UoKSwgcHJvcGVydHlJRCwgaW1wb3J0YW50LCBydWxlVHlwZSk7CiAgICAg
aWYgKHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
Q1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3I7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBD
U1NQYXJzZXJJbXBsOjpwYXJzZURlZmVycmVkS2V5ZnJhbWVMaXN0KENTU1BhcnNlclRva2VuUmFu
Z2UgdG9rZW5SYW5nZSwgQ1MKIGJvb2wgQ1NTUGFyc2VySW1wbDo6cGFyc2VEZWNsYXJhdGlvbkxp
c3QoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIENTU1BhcnNlcklt
cGwgcGFyc2VyKGNvbnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQu
ZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7CisgICAgYXV0
byBydWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVfb3IoU3R5bGVSdWxl
VHlwZTo6U3R5bGUpOwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRpb25MaXN0KHBhcnNlci50
b2tlbml6ZXIoKS0+dG9rZW5SYW5nZSgpLCBydWxlVHlwZSk7CiAgICAgaWYgKHBhcnNlci5tX3Bh
cnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDljY2Ri
NjE1N2Q4YTVjOWZlOTc1ZGVhYTcyYTY3ODBlMWRhNDY2MzUuLmZkNTEwNjE5NzNlMjUwYzlmNWRk
MTI2ZDgxYzhhNzgzMzM1YzdhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00NTMsOCArNDUzLDggQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZURpc3BsYXkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAg
fQogCiAgICAgLy8gU2V0IGRlZmF1bHRzIHdoZW4gb25lIG9mIHRoZSB0d28gdmFsdWVzIGFyZSB1
bnNwZWNpZmllZAotICAgIENTU1ZhbHVlSUQgZGlzcGxheU91dHNpZGUgPSBwYXJzZWREaXNwbGF5
T3V0c2lkZS52YWx1ZU9yKENTU1ZhbHVlQmxvY2spOwotICAgIENTU1ZhbHVlSUQgZGlzcGxheUlu
c2lkZSA9IHBhcnNlZERpc3BsYXlJbnNpZGUudmFsdWVPcihDU1NWYWx1ZUZsb3cpOworICAgIENT
U1ZhbHVlSUQgZGlzcGxheU91dHNpZGUgPSBwYXJzZWREaXNwbGF5T3V0c2lkZS52YWx1ZV9vcihD
U1NWYWx1ZUJsb2NrKTsKKyAgICBDU1NWYWx1ZUlEIGRpc3BsYXlJbnNpZGUgPSBwYXJzZWREaXNw
bGF5SW5zaWRlLnZhbHVlX29yKENTU1ZhbHVlRmxvdyk7CiAKICAgICBhdXRvIHNlbGVjdFNob3J0
VmFsdWUgPSBbJl0oKSAtPiBDU1NWYWx1ZUlEIHsKICAgICAgICAgaWYgKGRpc3BsYXlPdXRzaWRl
ID09IENTU1ZhbHVlQmxvY2spIHsKQEAgLTEyNTgsNyArMTI1OCw3IEBAIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
ICAgICAvLyBBbHdheXMgcGFyc2UgbGVuZ3RocyBpbiBzdHJpY3QgbW9kZSBoZXJlLCBzaW5jZSBp
dCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbgogICAgIC8vIHRoZSAn
Y29sdW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gY29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBW
YWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7Ci0gICAgaWYgKCFjb2x1bW5XaWR0aCB8fCBjb2x1bW5X
aWR0aC0+aXNaZXJvKCkudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKCFjb2x1bW5XaWR0aCB8fCBj
b2x1bW5XaWR0aC0+aXNaZXJvKCkudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIHJldHVybiBjb2x1bW5XaWR0aDsKQEAgLTIzOTMsNyArMjM5Myw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CiAKICAgICBpZiAoYXV0byBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCkpIHsKLSAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZS0+
aXNOZWdhdGl2ZSgpLnZhbHVlT3IoZmFsc2UpKQorICAgICAgICBpZiAoIXBhcnNlZFZhbHVlLT5p
c05lZ2F0aXZlKCkudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFZh
bHVlOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggMTI4
NjlkYWE0ZWVmZjU4YmE1NWY3YzZlZDIyN2ViNWNkNDk2N2ZkNC4uYmU4MmZmZGYxZGIzYTdiZTIz
YWVhMDQwYmJjYzlmMjdkMTFiNWFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtOTEsNyArOTEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyT3JQZXJjZW50RGl2aWRlZEJ5MTAw
UmF3KENTU1BhcnNlclRva2VuUmFuZwogICAgICAgICByZXR1cm4gKnBlcmNlbnQgLyAxMDAuMDsK
ICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCB2YWx1ZVJhbmdl
KSkKICAgICAgICAgcmV0dXJuICpudW1iZXI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBGSVhNRTogY29uc2lkZXIgcHVsbGluZyBp
biB0aGUgcGFyc2luZyBsb2dpYyBmcm9tIENTU0NhbGN1bGF0aW9uVmFsdWUuY3BwLgpAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRp
b25hbDxJbnRUeXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoZG91YmxlIG1pbmltdW1WYWx1ZSkK
ICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9z
b3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVybiBjbGFtcFRvPEludFR5cGU+KHN0
ZDo6cm91bmQoc3RkOjptYXgobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCksIG1pbmltdW1WYWx1
ZSkpKTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRv
dWJsZT4gY29uc3VtZU51bWJlclJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVl
IHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJl
cikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAg
cmV0dXJuIG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIH0KQEAgLTE1MywxMCArMTUz
LDEwIEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KCkK
ICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0
byBjYXRlZ29yeSA9IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpOwogICAgICAgICBpZiAoY2F0ZWdv
cnkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBt
X3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0dXJuIG1fY2FsY1ZhbHVlLT5kb3Vi
bGVWYWx1ZSgpOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
YWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2Fs
Y1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6
OkFuZ2xlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOwogICAg
ICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBlKCksIG1fY2FsY1ZhbHVl
LT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CkBAIC0xNzIsNyArMTcyLDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdygpCiAgICAgewogICAgICAg
ICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0
aW9uQ2F0ZWdvcnk6Okxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0g
bV9yYW5nZTsKICAgICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+cHJpbWl0aXZlVHlwZSgp
LCBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQpAQCAtMTgwLDcgKzE4MCw3
IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRSYXc+IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnRSYXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHN3aXRjaCAobV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkpIHsKICAgICAg
ICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6CkBAIC0xOTIsNyArMTkyLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgICAg
ICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMDgsMjEgKzIwOCwyMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1lSW50
ZWdlclR5cGVSYXcoQ1NTUGFyc2VyVG9rZQogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7
CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0gTnVtYmVyVmFsdWVUeXBl
IHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11bVZhbHVlKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiBjbGFtcFRvPEludFR5cGU+KHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkubnVtZXJpY1ZhbHVlKCkpOwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0g
RnVuY3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2Fs
Y3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1ZhbHVlKiBj
YWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewogICAgICAgICBpZiAoY2FsY3VsYXRp
b24tPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVJbnRlZ2VyVHlwZVJhdzxJbnRUeXBl
PihtaW5pbXVtVmFsdWUpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8aW50PiBjb25zdW1lSW50ZWdlclJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmltdW1WYWx1ZSkKQEAgLTI1
NCwxMiArMjU0LDEyIEBAIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhCiAgICAgY29uc3QgQ1NTUGFy
c2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0g
TnVtYmVyVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1ZSgp
OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVt
YmVyLCB2YWx1ZVJhbmdlKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTnVtYmVyUmF3
KCk7CkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lRm9udFdlaWdo
dE51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVOdW1iZXJSYXcocmFuZ2UpOwogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlv
blRva2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gIltGb3IgY2FsYygpXSwgdGhlIHVzZWQgdmFsdWUgcmVzdWx0
aW5nIGZyb20gYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGNsYW1wZWQgdG8gdGhlIHJhbmdlIGFsbG93
ZWQgaW4gdGhlIHRhcmdldCBjb250ZXh0LiIKICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFu
Z2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlciwgVmFsdWVSYW5nZTo6QWxsKTsKQEAgLTMx
NCw3ICszMTQsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVtYmVyUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWluKHN0ZDo6bWF4KCpyZXN1bHQsIHN0ZDo6bmV4dGFmdGVyKDAuLCAxLikpLCBzdGQ6Om5leHRh
ZnRlcigxMDAwLiwgMC4pKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRm9u
dFdlaWdodE51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTM0OSw3ICszNDks
NyBAQCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5ndGhSYXcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAgICBzd2l0Y2ggKHRva2VuLnVuaXRU
eXBlKCkpIHsKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FVSVJLWV9FTVM6CiAgICAg
ICAgICAgICBpZiAoY3NzUGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6
Q1NTX0VNUzoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JFTVM6CkBAIC0zNzAsMjMg
KzM3MCwyMyBAQCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5ndGhSYXcoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAgICBjYXNlIENTU1VuaXRU
eXBlOjpDU1NfUToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkgfHwgc3RkOjppc2luZih0b2tl
bi5udW1lcmljVmFsdWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgeyB0b2tlbi51
bml0VHlwZSgpLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNWYWx1
ZSgpIH0gfTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbikgewog
ICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9rZW4ubnVtZXJpY1ZhbHVl
KCksIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCBVbml0bGVzc1plcm9RdWlyazo6QWxsb3cpCiAg
ICAgICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSAmJiB0
b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChzdGQ6Omlz
aW5mKHRva2VuLm51bWVyaWNWYWx1ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyB7
IENTU1VuaXRUeXBlOjpDU1NfUFgsIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCku
bnVtZXJpY1ZhbHVlKCkgfSB9OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVu
Y3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3Vs
YXRpb25DYXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICByZXR1cm4gY2FsY1BhcnNl
ci5jb25zdW1lTGVuZ3RoUmF3KCk7CkBAIC00MTIsMTIgKzQxMiwxMiBAQCBPcHRpb25hbDxkb3Vi
bGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJh
bmdlIHZhbHVlUgogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWso
KTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbikgewogICAgICAgICBp
ZiAoc3RkOjppc2luZih0b2tlbi5udW1lcmljVmFsdWUoKSkgfHwgKHZhbHVlUmFuZ2UgPT0gVmFs
dWVSYW5nZTo6Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5u
dW1lcmljVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAodG9rZW4udHlwZSgpICE9IEZ1bmN0aW9u
VG9rZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFuZ2UsIENhbGN1bGF0aW9u
Q2F0ZWdvcnk6OlBlcmNlbnQsIHZhbHVlUmFuZ2UpOwogICAgIHJldHVybiBjYWxjUGFyc2VyLmNv
bnN1bWVQZXJjZW50UmF3KCk7CkBAIC00NjYsMjMgKzQ2NiwyMyBAQCBPcHRpb25hbDxMZW5ndGhP
clBlcmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4gfHwgdG9rZW4u
dHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1
bWVMZW5ndGhSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHZhbHVlUmFuZ2UsIHVuaXRsZXNzKSkK
ICAgICAgICAgICAgIHJldHVybiB7ICpyZXN1bHQgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgaWYgKHRva2Vu
LnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0g
Y29uc3VtZVBlcmNlbnRSYXcocmFuZ2UsIHZhbHVlUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJu
IHsgKnJlc3VsdCB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rp
b25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICBpZiAoY29uc3QgQ1NTQ2FsY1Zh
bHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewogICAgICAgICBpZiAoY2Fu
Q29uc3VtZUNhbGNWYWx1ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwgY3NzUGFyc2VyTW9kZSkp
CiAgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3
KCk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1bml0bGVzcykKQEAgLTUx
OSw3ICs1MTksNyBAQCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAgICAgICBjYXNlIENTU1Vu
aXRUeXBlOjpDU1NfVFVSTjoKICAgICAgICAgICAgIHJldHVybiB7IHsgdW5pdFR5cGUsIHJhbmdl
LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkgfSB9OwogICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNyw3ICs1Mjcs
NyBAQCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAgICAgICByZXR1cm4geyB7IENTU1VuaXRU
eXBlOjpDU1NfREVHLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVyaWNW
YWx1ZSgpIH0gfTsKIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6
QW5nbGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZUFu
Z2xlUmF3KCk7CkBAIC02MzcsNyArNjM3LDcgQEAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b25zdW1lUmVzb2x1dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQWxsb3dYUmUKIE9w
dGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJZGVudFRva2VuKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLmlkKCk7CiB9CiAK
QEAgLTY1Niw3ICs2NTYsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVJZGVu
dFdvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTUwogT3B0aW9uYWw8Q1NT
VmFsdWVJRD4gY29uc3VtZUlkZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpCiB7CiAgICAgaWYgKHJhbmdlLnBl
ZWsoKS5pZCgpIDwgbG93ZXIgfHwgcmFuZ2UucGVlaygpLmlkKCkgPiB1cHBlcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gY29uc3VtZUlkZW50UmF3KHJhbmdlKTsKIH0KIApAQCAtNzQ0LDcgKzc0NCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhhKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQogICAgIGlmIChhdXRvIGFscGhhUGFyYW1ldGVyID0gY29uc3VtZU51bWJl
ck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhyYW5nZSkpCiAgICAgICAgIHJldHVybiBjbGFtcFRv
KCphbHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFs
bG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRD4+
IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
QEAgLTc1NSw3ICs3NTUsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+
IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIGlmIChhdXRv
IGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKICAgICAg
ICAgcmV0dXJuIHsgKmlkZW50IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVI
dWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCkBAIC03NzQsNyArNzc0LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2Vk
SWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAgICBp
ZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkp
CiAgICAgICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgZG91YmxlIG5vcm1hbGl6ZUh1
ZShkb3VibGUgaHVlKQpAQCAtNzkwLDcgKzc5MCw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4g
YWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlE
CiAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4o
cmFuZ2UpKQogICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8Q1NTVmFsdWVJ
RC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1Zh
bHVlSUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
CkBAIC04MDEsNyArODAxLDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRz
PiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAgICBpZiAoYXV0
byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5nZSkpCiAgICAg
ICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEMxLCBDU1NWYWx1
ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hhbm5lbCwgdHlwZW5hbWUg
Q29sb3JUeXBlPiBzdGF0aWMgYXV0byBleHRyYWN0Q2hhbm5lbFZhbHVlKENTU1ZhbHVlSUQgY2hh
bm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikgLT4gdHlwZW5hbWUgQ29sb3JUeXBl
OjpDb21wb25lbnRUeXBlCkBAIC04ODcsOCArODg3LDggQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRCBD
PiBzdGF0aWMgT3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25lbnQ+IGNvbnN1bWVSZWxhdGl2ZVJH
QkMKICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQog
ICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKnBlcmNlbnQsIFJHQkNv
bXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKICAgICAgICAgaWYgKGF1dG8gY2hhbm5lbCA9IGNv
bnN1bWVJZGVudFJhdzxDPihhcmdzKSkKLSAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNv
bXBvbmVudCB7ICpjaGFubmVsLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpjaGFu
bmVsLCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBzd2l0Y2ggKCpjb21wb25lbnRUeXBlKSB7CkBAIC04OTcsMTQgKzg5NywxNCBAQCB0
ZW1wbGF0ZTxDU1NWYWx1ZUlEIEM+IHN0YXRpYyBPcHRpb25hbDxSZWxhdGl2ZVJHQkNvbXBvbmVu
dD4gY29uc3VtZVJlbGF0aXZlUkdCQwogICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29t
cG9uZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH07CiAgICAgICAgIGlm
IChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykpCiAgICAgICAgICAgICBy
ZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6
TnVtYmVyIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGNhc2UgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFn
ZTogewogICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykp
CiAgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqcGVyY2VudCwgUkdC
Q29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OwogICAgICAgICBpZiAoYXV0byBjaGFubmVsID0g
Y29uc3VtZUlkZW50UmF3PEM+KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdC
Q29tcG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAgICAgfQogCkBAIC05NTMsNyArOTUzLDcgQEAgc3RhdGljIENvbG9yIHBhcnNlUmVs
YXRpdmVSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1Bh
cnMKICAgICAvLyBzdXBwb3J0IGNhbGN1bGF0aW9ucyBvbiB0aGUgb3JpZ2luJ3MgY29tcG9uZW50
cy4KICAgICBhdXRvIG9yaWdpbkNvbG9yQXNTUkdCID0gb3JpZ2luQ29sb3IudG9TUkdCQUxvc3N5
PHVpbnQ4X3Q+KCk7CiAKLSAgICBhdXRvIHJlc29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVu
dFR5cGUudmFsdWVPcihSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlKTsKKyAgICBhdXRvIHJl
c29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVfb3IoUkdCQ29tcG9uZW50
VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgYXV0byBjaGFubmVsUmVzb2x2ZXIgPSBbcmVzb2x2ZWRD
b21wb25lbnRUeXBlXShhdXRvIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBjbGFtcFJHQkNvbXBv
bmVudCh2YWx1ZSwgcmVzb2x2ZWRDb21wb25lbnRUeXBlKTsKICAgICB9OwpAQCAtOTkwLDcgKzk5
MCw3IEBAIHRlbXBsYXRlPFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0aWMgQ29sb3IgcGFyc2VS
R0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuCiAgICAgICAgICAgICByZXR1cm4geyB7ICpu
dW1iZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlciB9IH07CiAgICAgICAgIGlmIChhdXRvIHBl
cmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKICAgICAgICAgICAgIHJldHVybiB7IHsg
KnBlcmNlbnQsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfSB9OwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07CiAK
ICAgICBhdXRvIGNvbnN1bWVDb21wb25lbnQgPSBbXShhdXRvJiBhcmdzLCBhdXRvIGNvbXBvbmVu
dFR5cGUpIHsKQEAgLTE2MzMsNyArMTYzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvck1peENv
bG9yU3BhY2U+IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRDb21tYShDU1NQYXJzZXJUCiAg
ICAgYXV0byBjb25zdW1lSWRlbnRBbmRDb21tYSA9IFtdKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIENvbG9yTWl4Q29sb3JTcGFjZSBjb2xvclNwYWNlKSAtPiBPcHRpb25hbDxDb2xvck1peENv
bG9yU3BhY2U+IHsKICAgICAgICAgY29uc3VtZUlkZW50UmF3KGFyZ3MpOwogICAgICAgICBpZiAo
IWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIGNvbG9yU3BhY2U7CiAgICAgfTsKIApAQCAtMTY1MSw3ICsxNjUxLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPENvbG9yTWl4Q29sb3JTcGFjZT4gY29uc3VtZUNvbG9yTWl4Q29sb3JTcGFj
ZUFuZENvbW1hKENTU1BhcnNlclQKICAgICBjYXNlIENTU1ZhbHVlU1JHQjoKICAgICAgICAgcmV0
dXJuIGNvbnN1bWVJZGVudEFuZENvbW1hKGFyZ3MsIENvbG9yTWl4Q29sb3JTcGFjZTo6U3JnYik7
CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTE2NjksNyArMTY2OSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9yTWl4Q29tcG9uZW50KENT
U1BhcnNlclRva2VuUmFuZ2UmCiAKICAgICByZXN1bHQuY29sb3IgPSBjb25zdW1lT3JpZ2luQ29s
b3IoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFyZXN1bHQuY29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFyZXN1bHQucGVyY2VudGFnZSkgewogICAgICAgICBpZiAoYXV0byBwZXJjZW50
YWdlID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCkBAIC0xODQ5LDE1ICsxODQ5LDE1IEBAIHN0
YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xvcihDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgYm9vbCBhCiAgICAgICAgIHZpZXcgPSB0b2tlbi52YWx1ZSgpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoIWFjY2VwdFF1aXJreUNvbG9ycykKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pCiAgICAgICAgICAgICBzdHJpbmcg
PSB0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7IC8vIGUuZy4gRkYwMDAwCiAgICAgICAgIGVsc2Ug
aWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50eXBlKCkgPT0gRGltZW5z
aW9uVG9rZW4pIHsKICAgICAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgIT0g
SW50ZWdlclZhbHVlVHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIG51
bWVyaWNWYWx1ZSA9IHRva2VuLm51bWVyaWNWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKCEobnVt
ZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDwgMTAwMDAwMCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgYXV0byBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ+KHRv
a2VuLm51bWVyaWNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVt
YmVyVG9rZW4pCiAgICAgICAgICAgICAgICAgc3RyaW5nID0gU3RyaW5nOjpudW1iZXIoaW50ZWdl
clZhbHVlKTsgLy8gZS5nLiAxMTIyMzMKQEAgLTE4NjcsMTIgKzE4NjcsMTIgQEAgc3RhdGljIE9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBib29sIGEKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBtYWtlU3RyaW5nKCYiMDAw
MDAwIltzdHJpbmcubGVuZ3RoKCldLCBzdHJpbmcpOwogICAgICAgICB9CiAgICAgICAgIGlmIChz
dHJpbmcubGVuZ3RoKCkgIT0gMyAmJiBzdHJpbmcubGVuZ3RoKCkgIT0gNikKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB2aWV3ID0gc3RyaW5nOwogICAgIH0KICAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNl
cjo6cGFyc2VIZXhDb2xvcih2aWV3KTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByYW5nZS5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIHJldHVybiAqcmVzdWx0OwogfQpAQCAt
MTk5Niw3ICsxOTk2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBv
c2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmEKICAgICBib29sIG11c3RP
cmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMSkgfHwgaXNW
ZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFsdWUxLmlzVmFsdWVJRCgp
IHx8ICF2YWx1ZTIuaXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3JkZXJBc1lYID0gaXNWZXJ0
aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6b250YWxQb3NpdGlvbktl
eXdvcmRPbmx5KHZhbHVlMik7CiAgICAgaWYgKG11c3RPcmRlckFzWFkgJiYgbXVzdE9yZGVyQXNZ
WCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAobXVzdE9yZGVyQXNZWCkKICAgICAgICAgcmV0dXJuIFBvc2l0aW9uQ29v
cmRpbmF0ZXMgeyB2YWx1ZTIsIHZhbHVlMSB9OwogICAgIHJldHVybiBQb3NpdGlvbkNvb3JkaW5h
dGVzIHsgdmFsdWUxLCB2YWx1ZTIgfTsKQEAgLTIwMjksMTIgKzIwMjksMTIgQEAgc3RhdGljIE9w
dGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZh
bHVlcyhjb25zdCBzdGQKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsKICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKICAgICAg
ICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
Q1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICBpZiAoaWQg
PT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAgIGlmIChjZW50ZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgY2VudGVyID0gY3VycmVudFZhbHVlOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KQEAgLTIwNDcsMTIgKzIwNDcsMTIgQEAgc3RhdGljIE9wdGlv
bmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVl
cyhjb25zdCBzdGQKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENT
U1ZhbHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20p
OwogICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgcmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTIwNjAsNyArMjA2MCw3
IEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBiYWNrZ3JvdW5kUG9zaXRp
b25Gcm9tVGhyZWVWYWx1ZXMoY29uc3Qgc3RkCiAgICAgaWYgKGNlbnRlcikgewogICAgICAgICBB
U1NFUlQocmVzdWx0WCB8fCByZXN1bHRZKTsKICAgICAgICAgaWYgKHJlc3VsdFggJiYgcmVzdWx0
WSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXJlc3VsdFgpCiAgICAgICAgICAgICByZXN1bHRY
ID0gY2VudGVyOwogICAgICAgICBlbHNlCkBAIC0yMDg5LDExICsyMDg5LDExIEBAIHN0YXRpYyBP
cHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21Gb3VyVmFsdWVzKGNvbnN0
IHN0ZDo6YXJyYXk8Q1NTCiAgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVlc1tpXTsgaSsrKSB7CiAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2YWx1ZXNbaV07CiAgICAg
ICAgIGlmICghY3VycmVudFZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPnZhbHVlSUQoKTsKICAgICAgICAgaWYgKGlk
ID09IENTU1ZhbHVlQ2VudGVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiByZXN1bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSArIDFdICYmICF2YWx1ZXNb
aSArIDFdLT5pc1ZhbHVlSUQoKSkKQEAgLTIxMDMsMTIgKzIxMDMsMTIgQEAgc3RhdGljIE9wdGlv
bmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3Rk
OjphcnJheTxDU1MKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkID09IENT
U1ZhbHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0gQ1NTVmFsdWVCb3R0b20p
OwogICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgcmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTIxMjMsNyArMjEyMyw3
IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5h
dGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhCiB7CiAgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1l
UG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBp
ZiAoIXZhbHVlMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdmFsdWUyID0gY29uc3VtZVBvc2l0aW9uQ29tcG9u
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYgKCF2YWx1ZTIpCkBA
IC0yMTQ3LDcgKzIxNDcsNyBAQCBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBjb25zdW1l
UG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYQogICAgICAgICByZXR1
cm4gcG9zaXRpb25Gcm9tRm91clZhbHVlcyh2YWx1ZXMpOwogICAgIAogICAgIGlmIChwb3NpdGlv
blN5bnRheCAhPSBQb3NpdGlvblN5bnRheDo6QmFja2dyb3VuZFBvc2l0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXModmFsdWVzKTsKIH0K
QEAgLTIxNjMsNyArMjE2Myw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1
bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFyc2VyCiB7CiAgICAgYXV0
byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHZhbHVlMiA9IGNvbnN1
bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwogICAg
IGlmICghdmFsdWUyKQogICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tT25lVmFsdWUoKnZhbHVl
MSk7CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBPcHRpb25hbDxGb250V2VpZ2h0UmF3PiBjb25zdW1l
Rm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJu
IHsgKnJlc3VsdCB9OwogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1bWVGb250V2VpZ2h0TnVt
YmVyUmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Q1NT
VmFsdWVJRD4gY29uc3VtZUZvbnRTdHJldGNoS2V5d29yZFZhbHVlUmF3KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQpAQCAtMzAwMywxMSArMzAwMywxMSBAQCBPcHRpb25hbDxGb250U3R5bGVS
YXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlcgogewogICAgIGF1dG8gcmVzdWx0ID0gY29uc3VtZUZvbnRTdHlsZUtleXdvcmRWYWx1ZVJh
dyhyYW5nZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGlkZW50ID0gKnJlc3Vs
dDsKICAgICBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWRlbnQgPT0gQ1NTVmFsdWVJ
dGFsaWMpCi0gICAgICAgIHJldHVybiB7IHsgaWRlbnQsIFdURjo6bnVsbG9wdCB9IH07CisgICAg
ICAgIHJldHVybiB7IHsgaWRlbnQsIHN0ZDo6bnVsbG9wdCB9IH07CiAgICAgQVNTRVJUKGlkZW50
ID09IENTU1ZhbHVlT2JsaXF1ZSk7CiAjaWYgRU5BQkxFKFZBUklBVElPTl9GT05UUykKICAgICBp
ZiAoIXJhbmdlLmF0RW5kKCkpIHsKQEAgLTMwMTUsMTMgKzMwMTUsMTMgQEAgT3B0aW9uYWw8Rm9u
dFN0eWxlUmF3PiBjb25zdW1lRm9udFN0eWxlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXIKICAgICAgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25zdW1lQW5nbGVSYXcocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVp
cms6OkFsbG93KSkgewogICAgICAgICAgICAgaWYgKGlzRm9udFN0eWxlQW5nbGVJblJhbmdlKENT
U1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyhhbmdsZS0+dHlwZSwgYW5nbGUtPnZhbHVl
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBDU1NWYWx1ZU9ibGlxdWUsIFdURk1vdmUo
YW5nbGUpIH0gfTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oY3NzUGFyc2VyTW9kZSk7CiAjZW5kaWYKLSAgICByZXR1cm4geyB7IENTU1ZhbHVl
T2JsaXF1ZSwgV1RGOjpudWxsb3B0IH0gfTsKKyAgICByZXR1cm4geyB7IENTU1ZhbHVlT2JsaXF1
ZSwgc3RkOjpudWxsb3B0IH0gfTsKIH0KIAogU3RyaW5nIGNvbmNhdGVuYXRlRmFtaWx5TmFtZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTMwNjQsNyArMzA2NCw3IEBAIE9wdGlvbmFs
PFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZhbWlseVJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBmYW1pbHlO
YW1lID0gY29uc3VtZUZhbWlseU5hbWVSYXcocmFuZ2UpOwogICAgICAgICAgICAgaWYgKGZhbWls
eU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbGlzdC5hcHBl
bmQoeyBmYW1pbHlOYW1lIH0pOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwpAQCAtMzA3NiwxMyArMzA3NiwxMyBAQCBPcHRp
b25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBDU1NQYXJzZXJNbwogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA+PSBDU1NWYWx1
ZVh4U21hbGwgJiYgcmFuZ2UucGVlaygpLmlkKCkgPD0gQ1NTVmFsdWVMYXJnZXIpIHsKICAgICAg
ICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXcocmFuZ2UpKQogICAgICAgICAgICAg
cmV0dXJuIHsgKmlkZW50IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29u
c3VtZUxlbmd0aE9yUGVyY2VudFJhdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6
Tm9uTmVnYXRpdmUsIHVuaXRsZXNzKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBP
cHRpb25hbDxMaW5lSGVpZ2h0UmF3PiBjb25zdW1lTGluZUhlaWdodFJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMzA5MCw3ICsz
MDkwLDcgQEAgT3B0aW9uYWw8TGluZUhlaWdodFJhdz4gY29uc3VtZUxpbmVIZWlnaHRSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICBpZiAocmFuZ2UucGVlaygpLmlk
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1l
SWRlbnRSYXcocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJhdyhyYW5nZSwgVmFsdWVS
YW5nZTo6Tm9uTmVnYXRpdmUpKQpAQCAtMzA5OSw3ICszMDk5LDcgQEAgT3B0aW9uYWw8TGluZUhl
aWdodFJhdz4gY29uc3VtZUxpbmVIZWlnaHRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IENTU1BhcnMKICAgICBpZiAoYXV0byBsZW5ndGhPclBlcmNlbnQgPSBjb25zdW1lTGVuZ3RoT3JQ
ZXJjZW50UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSkp
CiAgICAgICAgIHJldHVybiB7ICpsZW5ndGhPclBlcmNlbnQgfTsKIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Rm9udFJh
dz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKQEAgLTMxMDksNyArMzEwOSw3IEBAIE9wdGlvbmFsPEZvbnRSYXc+
IGNvbnN1bWVGb250UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhCiAgICAgd2hpbGUgKCFyYW5nZUNvcHkuYXRFbmQoKSkgewogICAgICAgICBDU1NWYWx1
ZUlEIGlkID0gcmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKICAg
ICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBDU1NWYWx1ZUluaXRpYWwp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBGb250UmF3IHJlc3VsdDsKQEAgLTMxMzgsMzAgKzMx
MzgsMzAgQEAgT3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGEKICAgICB9CiAKICAgICBpZiAocmFuZ2Uu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIE5vdyBhIGZvbnQgc2l6ZSBfbXVzdF8gY29tZS4KICAgICBp
ZiAoYXV0byBzaXplID0gY29uc3VtZUZvbnRTaXplUmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkK
ICAgICAgICAgcmVzdWx0LnNpemUgPSAqc2l6ZTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAocmFu
Z2UuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChjb25zdW1lU2xhc2hJbmNsdWRpbmdXaGl0ZXNwYWNl
KHJhbmdlKSkgewogICAgICAgICBpZiAoIShyZXN1bHQubGluZUhlaWdodCA9IGNvbnN1bWVMaW5l
SGVpZ2h0UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBGb250IGZhbWlseSBtdXN0IGNvbWUgbm93LgogICAgIGlmIChhdXRvIGZhbWlseSA9IGNv
bnN1bWVGb250RmFtaWx5UmF3KHJhbmdlKSkKICAgICAgICAgcmVzdWx0LmZhbWlseSA9ICpmYW1p
bHk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VySGVscGVycy5oCmluZGV4IDlhYmEzZGM5MDk3ZWQyNWFlNTU1OGMxODZjNTMy
MDhmZTAwMmNiOTMuLjE1ZWRlNGI1NzZiYThmNWRkZjFjNGIwZWVhYTRmNTQ4MmJlZjk2YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhl
bHBlcnMuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQgaGVhZCwgQ1NT
VmFsdWVJRC4uLiB0YWlsPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMoQ1NTVmFsdWVJCiB0ZW1w
bGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBPcHRpb25hbDxDU1NWYWx1ZUlEPiBjb25zdW1lSWRl
bnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYgKHJhbmdlLnBlZWso
KS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRlbnRNYXRjaGVzPG5hbWVzLi4uPihyYW5nZS5w
ZWVrKCkuaWQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkuaWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVj
dG9yUGFyc2VyLmNwcAppbmRleCAzMGRlN2JjMmRhZDE5ODE5ZjExYTZkYjgxMzNmMGM4ZDZiMDQy
NWJhLi42ZjViMjVlNDNkYjg3OGIxOGYxNjA2Y2RiYjcxMDY0NzYwZGZkMzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcApAQCAtODg2LDcg
Kzg4Niw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAKICAgICBpZiAoblN0cmluZy5sZW5n
dGgoKSA+IDIpIHsKICAgICAgICAgYXV0byBwYXJzZWROdW1iZXIgPSBwYXJzZUludGVnZXI8aW50
PihTdHJpbmdWaWV3IHsgblN0cmluZyB9LnN1YnN0cmluZygxKSk7Ci0gICAgICAgIHJlc3VsdC5z
ZWNvbmQgPSBwYXJzZWROdW1iZXIudmFsdWVPcigwKTsKKyAgICAgICAgcmVzdWx0LnNlY29uZCA9
IHBhcnNlZE51bWJlci52YWx1ZV9vcigwKTsKICAgICAgICAgcmV0dXJuIHBhcnNlZE51bWJlci5o
YXNWYWx1ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFR
dWVyeVBhcnNlci5jcHAKaW5kZXggMGEyM2Q0Yzg5NzdmZWQ1MjM1ZDVkYmFiZDIwNzc3YTZhMWVk
ZmEwYy4uODc2Yzk5YmQyZTgwNzk4Mzc4Zjk1ODczMWQ0MjM0YTI0OGY2YjZiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KCkKICAgICAv
LyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hh
bmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRoZQogICAgIC8vIG9sZCBwYXJz
ZXIuCiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlh
VHlwZSB7ICJhbGwiX3MgfTsKLSAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlhUXVl
cnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1ZU9y
KGRlZmF1bHRNZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMo
KSkgfTsKKyAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3Ry
aWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1ZV9vcihkZWZhdWx0TWVk
aWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJlc3Npb25zKCkpIH07CiAgICAg
bV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwogICAgIG1fcXVlcnlTZXQtPmFkZE1lZGlhUXVlcnko
V1RGTW92ZShtZWRpYVF1ZXJ5KSk7CiB9CkBAIC0yODgsNyArMjg4LDcgQEAgTWVkaWFRdWVyeVBh
cnNlcjo6TWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0IGNvbnRleHQKIHZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6OmNsZWFy
KCkKIHsKICAgICBtX3Jlc3RyaWN0b3IgPSBNZWRpYVF1ZXJ5OjpOb25lOwotICAgIG1fbWVkaWFU
eXBlID0gV1RGOjpudWxsb3B0OworICAgIG1fbWVkaWFUeXBlID0gc3RkOjpudWxsb3B0OwogICAg
IG1fbWVkaWFGZWF0dXJlID0gU3RyaW5nKCk7CiAgICAgbV9leHByZXNzaW9ucy5jbGVhcigpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCmluZGV4IGFkNjk3OTU5MTcwM2NmMWEw
NWM4Y2Q1MTJjZTIxYWQyMGZkNTg4ZjcuLmIwYThhZTc0ZmI1NjE5N2NlZWQxNjNkZWJlNTg1NGEy
MGZhZmI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0YWNraW5nSXRlbSYgcm9vdFN0YWNraW5nSXRlbSgp
IGNvbnN0IHsgcmV0dXJuICptX3Jvb3RTdGFja2luZ0l0ZW07IH0KICAgICAgY29uc3QgQ29udGFp
bmVyQm94JiByb290Qm94KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEJveE5lZWRzRGlzcGxheShC
b3gmLCBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9IFdURjo6bnVsbG9wdCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRCb3hOZWVkc0Rpc3BsYXkoQm94JiwgT3B0aW9uYWw8QWJzb2x1
dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc2V0Um9vdFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVt
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3guaAppbmRleCAxNzgyZDJk
ZGQ1Mjk4OGZkZDE3ZGU0YmE4Y2UyMDQ3MzUzNzM5YjAxLi42NWZmZTNhYzQxYTgxYmRjZmU3MDU0
YTY2ZGRmOGIxMGU4ZGI1OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJv
eC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBCb3gqIG5leHRTaWJsaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsgfQogICAgIHZvaWQgc2V0TmV4
dFNpYmxpbmcoc3RkOjp1bmlxdWVfcHRyPEJveD4mJik7CiAKLSAgICB2b2lkIHNldE5lZWRzRGlz
cGxheShPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9IFdURjo6bnVsbG9wdCk7
CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1
YnJlY3QgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgZGVidWdEZXNjcmlw
dGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9E
aXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5
L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKaW5kZXggYmVjZTQ3MGUzZmEy
NTBiNDllNjdkZmQwY2RjYjY3ZGZmZTU0OGJiYS4uODJkZDM4YzQ5ZjE2NDYyNDFhNmVlZTc5MjY4
N2U5YmVjMzg0ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheUZpbGxMYXllckltYWdlR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcApAQCAtMjY4LDEwICsyNjgs
MTAgQEAgc3RhdGljIEZpbGxMYXllckltYWdlR2VvbWV0cnkgZ2VvbWV0cnlGb3JMYXllcihjb25z
dCBGaWxsTGF5ZXImIGZpbGxMYXllciwgTGF5b3UKICAgICAgICAgICAgIHRvcCA9IGdlb21ldHJ5
LmJvcmRlclRvcCgpOwogICAgICAgICAgICAgYm90dG9tID0gZ2VvbWV0cnkuYm9yZGVyQm90dG9t
KCk7CiAgICAgICAgICAgICBpZiAoZmlsbExheWVyLm9yaWdpbigpID09IEZpbGxCb3g6OkNvbnRl
bnQpIHsKLSAgICAgICAgICAgICAgICBsZWZ0ICs9IGdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFs
dWVPcigwKTsKLSAgICAgICAgICAgICAgICByaWdodCArPSBnZW9tZXRyeS5wYWRkaW5nUmlnaHQo
KS52YWx1ZU9yKDApOwotICAgICAgICAgICAgICAgIHRvcCArPSBnZW9tZXRyeS5wYWRkaW5nVG9w
KCkudmFsdWVPcigwKTsKLSAgICAgICAgICAgICAgICBib3R0b20gKz0gZ2VvbWV0cnkucGFkZGlu
Z0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgbGVmdCArPSBnZW9tZXRyeS5w
YWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgICAgIHJpZ2h0ICs9IGdlb21l
dHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgICAgIHRvcCArPSBn
ZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICAgICAgYm90dG9t
ICs9IGdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5U3RhY2tpbmdJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlT
dGFja2luZ0l0ZW0uY3BwCmluZGV4IDQ5YjgxOTYzOTY1YTM0MTE4ZTQ2ZTk4MDc5OTI3Y2MxNDEw
MzVhYjYuLmEzMTU5NmIyMGMxYTcxYzllZmMzN2RmMzJjMDMxMGJjZjY5YmUwOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCkBA
IC00OCw3ICs0OCw3IEBAIGJvb2wgU3RhY2tpbmdJdGVtOjppc1N0YWNraW5nQ29udGV4dCgpIGNv
bnN0CiAKIHZvaWQgU3RhY2tpbmdJdGVtOjphZGRDaGlsZFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1
ZV9wdHI8U3RhY2tpbmdJdGVtPiYmIGl0ZW0pCiB7Ci0gICAgYXV0byB6SW5kZXggPSBpdGVtLT5i
b3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byB6SW5kZXggPSBpdGVt
LT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApOwogICAgIGlmICh6SW5kZXggPCAw
KQogICAgICAgICBtX25lZ2F0aXZlWk9yZGVyTGlzdC5hcHBlbmQoV1RGTW92ZShpdGVtKSk7CiAg
ICAgZWxzZQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0YWNraW5nSXRlbTo6YWRkQ2hpbGRTdGFj
a2luZ0l0ZW0oc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mJiBpdGVtKQogdm9pZCBTdGFj
a2luZ0l0ZW06OnNvcnRMaXN0cygpCiB7CiAgICAgYXV0byBjb21wYXJlWkluZGV4ID0gW10oY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mIGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxTdGFja2luZ0l0ZW0+JiBiKSB7Ci0gICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJ
bmRleCgpLnZhbHVlT3IoMCkgPCBiLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7
CisgICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApIDwg
Yi0+Ym94KCkuc3R5bGUoKS56SW5kZXgoKS52YWx1ZV9vcigwKTsKICAgICB9OwogCiAgICAgc3Rk
OjpzdGFibGVfc29ydChtX3Bvc2l0aXZlWk9yZGVyTGlzdC5iZWdpbigpLCBtX3Bvc2l0aXZlWk9y
ZGVyTGlzdC5lbmQoKSwgY29tcGFyZVpJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWJzdHJhY3RSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5n
ZS5jcHAKaW5kZXggZmRiMjA5N2RlZjhhNDM1MWQ0MDNkNzRiNDNlNmY2MmYzZjg1OTZjNy4uNDBm
NTg1NjE4M2IyNzYxODY1MjdjZTMwZGMwMTliMTMyM2Q5OTIwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
YnN0cmFjdFJhbmdlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTaW1wbGVSYW5nZSBtYWtlU2ltcGxl
UmFuZ2UoY29uc3QgUmVmPEFic3RyYWN0UmFuZ2U+JiByYW5nZSkKIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSogcmFuZ2UpCiB7CiAgICAg
aWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKCpyYW5nZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BZGRFdmVudExpc3RlbmVyT3B0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKaW5kZXggY2Ix
MzRmYWJhYmExNTAwZjUwYzk3ZGNlZDQ4OWJlZTllNDc2MGRhOC4uYTA3N2E1YzYzNGY3OTE5OWY0
N2YyODgyYTFkNDkzZmQ3ODU1OTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fk
ZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50
TGlzdGVuZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRMaXN0ZW5lck9wdGlvbnMg
ewotICAgIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKGJvb2wgY2FwdHVyZSA9IGZhbHNlLCBPcHRp
b25hbDxib29sPiBwYXNzaXZlID0gV1RGOjpudWxsb3B0LCBib29sIG9uY2UgPSBmYWxzZSwgUmVm
UHRyPEFib3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51bGxwdHIpCisgICAgQWRkRXZlbnRMaXN0ZW5l
ck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIE9wdGlvbmFsPGJvb2w+IHBhc3NpdmUgPSBz
dGQ6Om51bGxvcHQsIGJvb2wgb25jZSA9IGZhbHNlLCBSZWZQdHI8QWJvcnRTaWduYWw+JiYgc2ln
bmFsID0gbnVsbHB0cikKICAgICAgICAgOiBFdmVudExpc3RlbmVyT3B0aW9ucyhjYXB0dXJlKQog
ICAgICAgICAsIHBhc3NpdmUocGFzc2l2ZSkKICAgICAgICAgLCBvbmNlKG9uY2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQm91bmRhcnlQb2ludC5jcHAKaW5kZXggNzQ4YjEwNzUwZTM0ZmQwN2JkOTczNGQ5Yjg5
YzgwZmU0ZTRkYjEyZC4uZDI2ZDJlY2E2NDZiOGFlYzRjNGVlZTg0NDIxYTNlYTg4MzA4YTViYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMzcsNyArMzcsNyBAQCBPcHRp
b25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9k
ZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBCb3VuZGFyeVBvaW50IHsgKnBhcmVudCwgbm9kZS5jb21wdXRl
Tm9kZUluZGV4KCkgfTsKIH0KIApAQCAtNDUsNyArNDUsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJiBub2RlKQogewogICAgIGF1dG8g
cGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIEJvdW5kYXJ5UG9pbnQgeyAqcGFyZW50LCBub2RlLmNvbXB1dGVOb2RlSW5kZXgoKSArIDEg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVudC5jcHAKaW5kZXggYmU3
MGM5YjA1Y2RjOGMwYmY0MmVjMTI0YjgyMTA4YmZjNzRjNDg3ZC4uODQyZjZlZWNiMzNjYjNkZTFi
YzZlMzVmYTQ5NzBiOGFiNWQwZmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9u
RXZlbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIERldmljZU1vdGlvbkV2ZW50OjpEZXZpY2VNb3Rp
b25FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmljZU1vdGlvbkRhCiBzdGF0
aWMgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25z
dCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlvbikKIHsKICAgICBp
ZiAoIWFjY2VsZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25FdmVudDo6QWNj
ZWxlcmF0aW9uIHsgYWNjZWxlcmF0aW9uLT54KCksIGFjY2VsZXJhdGlvbi0+eSgpLCBhY2NlbGVy
YXRpb24tPnooKSB9OwogfQpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8RGV2aWNl
TW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRh
Ogogc3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3RhdGlvblJhdGU+IGNvbnZl
cnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKiByb3RhdGlvblJhdGUpCiB7
CiAgICAgaWYgKCFyb3RhdGlvblJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gRGV2aWNlTW90aW9uRXZl
bnQ6OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSwgcm90YXRpb25SYXRlLT5i
ZXRhKCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNDBmMTIxNmZiMjQ1MDllMWFlOTQ3OTM0NjhhZjJmYWYzMDMyZGFlNS4uZDdkNDJlYTIw
ZjkxMTNjZjQ1NmJkZWYxZTU5MzdlODQ5NjYzMGNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0zNDQsOCArMzQ0LDggQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjZW5k
aWYKIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0g
W3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1l
bnQ6OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9V
SW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQo
KSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKLSNkZWZpbmUgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJS
T1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZt
dCwgdGhpcywgcGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCks
IGZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMg
PT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlE
PSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZh
bHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCks
ICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlX29y
KFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1l
SWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19W
QV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU5OCwxOSArMTU5OCwxOSBA
QCBSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQg
eSkKIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IERvY3VtZW50OjpjYXJldFBvc2l0aW9uRnJvbVBv
aW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKIHsKICAgICBpZiAoIWhhc0xpdmlu
Z1JlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExheW91dFBvaW50IGxvY2FsUG9pbnQ7CiAgICAgYXV0
byBub2RlID0gbm9kZUZyb21Qb2ludChjbGllbnRQb2ludCwgJmxvY2FsUG9pbnQpOwogICAgIGlm
ICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAg
ICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbiA9IHJl
bmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQpLnBhcmVudEFuY2hvcmVkRXF1aXZh
bGVudCgpOwogICAgIGlmIChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgdW5zaWduZWQgb2Zmc2V0ID0gcmFuZ2VDb21wbGlhbnRQb3NpdGlvbi5vZmZzZXRJbkNvbnRh
aW5lck5vZGUoKTsKICAgICBub2RlID0gcmV0YXJnZXRUb1Njb3BlKCpyYW5nZUNvbXBsaWFudFBv
c2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7CkBAIC0yMTIwLDcgKzIxMjAsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBs
YWNlZFRleHQsIHVucwogICAgIGlmICghbV9wZW5kaW5nUmVuZGVyVHJlZVRleHRVcGRhdGUpCiAg
ICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0gbWFrZVVuaXF1ZTxTdHlsZTo6
VXBkYXRlPigqdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdSZW5kZXJUcmVlVGV4dFVwZGF0ZS0+YWRk
VGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhPZlJlcGxhY2VkVGV4dCwg
V1RGOjpudWxsb3B0IH0pOworICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlLT5hZGRU
ZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBz
dGQ6Om51bGxvcHQgfSk7CiAKICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogfQpA
QCAtMzg0MSw3ICszODQxLDcgQEAgVmlld3BvcnRBcmd1bWVudHMgRG9jdW1lbnQ6OnZpZXdwb3J0
QXJndW1lbnRzKCkgY29uc3QKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7Ci0gICAgcmV0dXJu
IHBhZ2UtPm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoKS52YWx1ZU9yKG1fdmlld3BvcnRBcmd1
bWVudHMpOworICAgIHJldHVybiBwYWdlLT5vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKCkudmFs
dWVfb3IobV92aWV3cG9ydEFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZp
ZXdwb3J0QXJndW1lbnRzKCkKQEAgLTM4NjMsNyArMzg2Myw3IEBAIHZvaWQgRG9jdW1lbnQ6Om1l
dGFFbGVtZW50VGhlbWVDb2xvckNoYW5nZWQoSFRNTE1ldGFFbGVtZW50JiBtZXRhRWxlbWVudCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBvbGRUaGVtZUNvbG9yID0gc3RkOjpleGNoYW5n
ZShtX2NhY2hlZFRoZW1lQ29sb3IsIENvbG9yKCkpOwotICAgIG1fbWV0YVRoZW1lQ29sb3JFbGVt
ZW50cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX21ldGFUaGVtZUNvbG9yRWxlbWVudHMgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1lbnQgPSBudWxscHRyOwog
ICAgIGlmICh0aGVtZUNvbG9yKCkgPT0gb2xkVGhlbWVDb2xvcikKICAgICAgICAgcmV0dXJuOwpA
QCAtNjM2MSwxMSArNjM2MSwxMSBAQCBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiBEb2N1bWVu
dDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIGNvbgogewogICAgIEhU
TUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gZ2V0Q1NTQ2FudmFzRWxlbWVudChuYW1lKTsKICAg
ICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZWxlbWVudC0+c2V0U2l6ZSh7IHdpZHRoLCBoZWlnaHQg
fSk7CiAgICAgYXV0byBjb250ZXh0ID0gZWxlbWVudC0+Z2V0Q29udGV4dCh0eXBlKTsKICAgICBp
ZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgaWYgKGlzPFdlYkdMUmVu
ZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQpAQCAtNjY5MSw3ICs2NjkxLDcgQEAgRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
KCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5n
ZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEpCiB7Ci0gICAgYXV0byBv
cmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhLCBiZXRhLCBn
YW1tYSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gb3JpZW50YXRpb24g
PSBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShhbHBoYSwgYmV0YSwgZ2FtbWEsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIo
KS5kaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihvcmllbnRhdGlvbi5wdHIoKSk7CiB9CiAKQEAg
LTc3ODYsMTIgKzc3ODYsMTIgQEAgc3RhdGljIE9wdGlvbmFsPExheW91dFJlY3Q+IGNvbXB1dGVD
bGlwcGVkUmVjdEluUm9vdENvbnRlbnRzU3BhY2UoY29uc3QgTGF5b3V0UmUKIAogICAgIGJvb2wg
aW50ZXJzZWN0cyA9IHJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZS0+ZWRnZUluY2x1c2l2ZUludGVy
c2VjdChyZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpLmxheW91dFZpZXdwb3J0UmVjdCgpKTsK
ICAgICBpZiAoIWludGVyc2VjdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBMYXlvdXRSZWN0IHJlY3RJbkZyYW1lVmll
d1NwYWNlKHJlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkuY29udGVudHNUb1ZpZXcoc25hcHBl
ZEludFJlY3QoKnJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZSkpKTsKICAgICBhdXRvKiBvd25lclJl
bmRlcmVyID0gcmVuZGVyZXItPmZyYW1lKCkub3duZXJSZW5kZXJlcigpOwogICAgIGlmICghb3du
ZXJSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJlY3RJbkZyYW1lVmlld1NwYWNlLm1vdmVCeShvd25lclJl
bmRlcmVyLT5jb250ZW50Qm94TG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGNvbXB1dGVDbGlwcGVk
UmVjdEluUm9vdENvbnRlbnRzU3BhY2UocmVjdEluRnJhbWVWaWV3U3BhY2UsIG93bmVyUmVuZGVy
ZXIpOwpAQCAtNzgwOCwyMCArNzgwOCwyMCBAQCBzdGF0aWMgT3B0aW9uYWw8SW50ZXJzZWN0aW9u
T2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlvblN0YXRlKEZyYW1lVmlldwogewog
ICAgIGF1dG8qIHRhcmdldFJlbmRlcmVyID0gdGFyZ2V0LnJlbmRlcmVyKCk7CiAgICAgaWYgKCF0
YXJnZXRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZsb2F0UmVjdCBsb2NhbFJvb3RCb3VuZHM7CiAgICAg
UmVuZGVyQmxvY2sqIHJvb3RSZW5kZXJlcjsKICAgICBpZiAob2JzZXJ2ZXIucm9vdCgpKSB7CiAg
ICAgICAgIGlmIChvYnNlcnZlci50cmFja2luZ0RvY3VtZW50KCkgIT0gJnRhcmdldC5kb2N1bWVu
dCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFvYnNlcnZlci5yb290KCktPnJlbmRlcmVy
KCkgfHwgIWlzPFJlbmRlckJsb2NrPihvYnNlcnZlci5yb290KCktPnJlbmRlcmVyKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgcm9vdFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KG9i
c2VydmVyLnJvb3QoKS0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmICghcm9vdFJlbmRlcmVyLT5p
c0NvbnRhaW5pbmdCbG9ja0FuY2VzdG9yRm9yKCp0YXJnZXRSZW5kZXJlcikpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBpZiAob2JzZXJ2ZXIucm9vdCgpID09ICZ0YXJnZXQuZG9jdW1lbnQoKSkKICAg
ICAgICAgICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3Qo
KTsKQEAgLTc4MzMsNyArNzgzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRlcnNlY3Rpb25PYnNl
cnZhdGlvblN0YXRlPiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVWaWV3CiAgICAgICAg
IEFTU0VSVChmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKTsKICAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSB0aGUgY2FzZSBvZiBhbiBpbXBsaWNpdC1yb290IG9ic2VydmVyIHRoYXQgaGFz
IGEgdGFyZ2V0IGluIGEgZGlmZmVyZW50IGZyYW1lIHRyZWUuCiAgICAgICAgIGlmICgmdGFyZ2V0
UmVuZGVyZXItPmZyYW1lKCkubWFpbkZyYW1lKCkgIT0gJmZyYW1lVmlldy5mcmFtZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJvb3RSZW5kZXJlciA9IGZyYW1lVmlldy5yZW5kZXJWaWV3KCk7CiAg
ICAgICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3QoKTsK
ICAgICB9CkBAIC04NTM2LDcgKzg1MzYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRTZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qIHNlcnZpY2VXb3JrZXJDb25uZQogICAg
IGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0
aXZlU2VydmljZVdvcmtlcigpID8gbWFrZU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtl
X29wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2
aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KHRvcE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqdGhpcywgKnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKSwgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgdXNlckFnZW50KHVybCgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggODRmZDIxYTY2ZDc4YTRmNDI4NjdmMWY0ZDA1NDRiNDY2OTg1MzIwNy4uOTgxMzQ3
ZmU3NTA3MTgwMmMwMjI3MTMwZjQyNjNmNThlYTQwZGQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0UmVmZXJy
ZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kpOwotICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9s
aWN5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeS52YWx1ZU9yKFJlZmVy
cmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KKyAgICBSZWZlcnJlclBvbGlj
eSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVmZXJyZXJQb2xpY3ku
dmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsgfQogCiAg
ICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA1MDk4ZWJkMDVlNGFlYjVl
MTliZjU3YWEzMzUwNzBhNWVkYWZhODFlLi4yMzcwOTU0ZTM2YTg4OWZiZWU4Zjg3NjJiNGJkYzc4
MmJlOGFhYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdl
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNz
LmNwcApAQCAtOTcsNyArOTcsNyBAQCBPcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtMTcyLDcgKzE3Miw3IEBA
IE9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1CiAgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVp
Y2tSZXN1bHQ6OlJlamVjdDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaAppbmRleCBlYzEwNzllZGIxMjQ2NmZkOTU0
NWU1Mjc2ZTJkMmI1NWM2MzRjZWYyLi45ZjAyOTc5OTVmMjA3NWUwMDU3YjEyYjBkMzA2ZjM5OGEz
NWQ2MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCkBA
IC0xMjQsMjcgKzEyNCwyNyBAQCBPcHRpb25hbDxSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdD4g
UmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFs
PFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkPiB3YXNHcmFudGVkOwogICAgIGRlY29kZXIgPj4gd2Fz
R3JhbnRlZDsKICAgICBpZiAoIXdhc0dyYW50ZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24+IHByb21wdFdhc1Nob3duOwogICAgIGRlY29kZXIgPj4gcHJv
bXB0V2FzU2hvd247CiAgICAgaWYgKCFwcm9tcHRXYXNTaG93bikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFN0b3JhZ2VBY2Nlc3NTY29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBp
ZiAoIXNjb3BlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHRvcEZyYW1l
RG9tYWluOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVEb21haW47CiAgICAgaWYgKCF0b3BGcmFt
ZURvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJGcmFtZURv
bWFpbjsKICAgICBkZWNvZGVyID4+IHN1YkZyYW1lRG9tYWluOwogICAgIGlmICghc3ViRnJhbWVE
b21haW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKndhc0dyYW50ZWQpLCBXVEZNb3Zl
KCpwcm9tcHRXYXNTaG93biksIFdURk1vdmUoKnNjb3BlKSwgV1RGTW92ZSgqdG9wRnJhbWVEb21h
aW4pLCBXVEZNb3ZlKCpzdWJGcmFtZURvbWFpbikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDIzZjEzNDk1ZmZhOGEwMDQ0ODMwY2U1NjZjMWUwMGQyMDc0NTIyMTEuLjBhNTI4ZWJi
NzVmMjMwZjJmNjk3MTRjYzYzMTUyZGUzZmY0NDM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTI3Myw3ICsyNzMsNyBAQCBPcHRpb25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0RXhw
bGljaXRseSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YWJJbmRleFN0YXRlKCkpIHsKICAgICBj
YXNlIFRhYkluZGV4U3RhdGU6Ok5vdFNldDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRhYkluZGV4U3RhdGU6Olpl
cm86CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVGFiSW5kZXhTdGF0ZTo6TmVnYXRpdmVP
bmU6CkBAIC0yODMsNyArMjgzLDcgQEAgT3B0aW9uYWw8aW50PiBFbGVtZW50Ojp0YWJJbmRleFNl
dEV4cGxpY2l0bHkoKSBjb25zdAogICAgICAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPnVu
dXN1YWxUYWJJbmRleCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGludCBF
bGVtZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQg
RWxlbWVudDo6c2V0VGFiSW5kZXhGb3JCaW5kaW5ncyhpbnQgdmFsdWUpCiAKIGJvb2wgRWxlbWVu
dDo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3QKIHsKLSAgICBpZiAo
IShpc0ZvY3VzYWJsZSgpICYmICFzaG91bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmln
YXRpb24oKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApID49IDApKQorICAg
IGlmICghKGlzRm9jdXNhYmxlKCkgJiYgIXNob3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3Vz
TmF2aWdhdGlvbigpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlX29yKDApID49IDAp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGF1dG8qIHJvb3QgPSBzaGFkb3dSb290
KCkpIHsKICAgICAgICAgaWYgKHJvb3QtPmRlbGVnYXRlc0ZvY3VzKCkpCkBAIC04MjMsNyArODIz
LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQoYm9vbCBmbGFnKQogCiBpbmxpbmUg
U2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9wdGlv
bmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlLCBib29sIGlzTFRSKQogewotICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVPcihTY3JvbGxM
b2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CisgICAgc3dpdGNoIChwb3NpdGlvbi52YWx1ZV9v
cihTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CiAgICAgY2FzZSBTY3JvbGxMb2dp
Y2FsUG9zaXRpb246OlN0YXJ0OiB7CiAgICAgICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAg
ICAgICAgY2FzZSBXcml0aW5nTW9kZTo6VG9wVG9Cb3R0b206CkBAIC04NjYsNyArODY2LDcgQEAg
aW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvcklubGluZURpcmVjdGlv
bihPcHRpb25hbDxTY3JvbGxMb2dpY2EKIAogaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9s
bEFsaWdubWVudEZvckJsb2NrRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlv
bj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHN3aXRjaCAocG9z
aXRpb24udmFsdWVPcihTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0KSkgeworICAgIHN3aXRj
aCAocG9zaXRpb24udmFsdWVfb3IoU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydCkpIHsKICAg
ICBjYXNlIFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQ6IHsKICAgICAgICAgc3dpdGNoICh3
cml0aW5nTW9kZSkgewogICAgICAgICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKQEAg
LTkzNiw3ICs5MzYsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KE9wdGlvbmFsPFZh
cmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRpb25zPj4mJiBhcgogICAgICAgICBpc0hvcml6
b250YWwgPyBhbGlnblggOiBhbGlnblksCiAgICAgICAgIGlzSG9yaXpvbnRhbCA/IGFsaWduWSA6
IGFsaWduWCwKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8sCi0g
ICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVPcihTY3JvbGxCZWhhdmlvcjo6QXV0byksCisg
ICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLAog
ICAgICAgICBTbW9vdGhTY3JvbGxGZWF0dXJlRW5hYmxlbWVudDo6RGVmYXVsdAogICAgIH07CiAg
ICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRl
Rml4ZWQsIHZpc2libGVPcHRpb25zKTsKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zLCBTY3JvbGxDbGFtcGlu
ZyBjbGFtcGluZywKICAgICAgICAgY2xhbXBUb0ludGVnZXIoc2Nyb2xsVG9PcHRpb25zLnRvcC52
YWx1ZSgpICogcmVuZGVyZXItPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKQogICAgICk7CiAKLSAg
ICBhdXRvIGFuaW1hdGVkID0gdXNlU21vb3RoU2Nyb2xsaW5nKHNjcm9sbFRvT3B0aW9ucy5iZWhh
dmlvci52YWx1ZU9yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgdGhpcykgPyBBbmltYXRlZFNjcm9s
bDo6WWVzIDogQW5pbWF0ZWRTY3JvbGw6Ok5vOworICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9v
dGhTY3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2
aW9yOjpBdXRvKSwgdGhpcykgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRTY3JvbGw6
Ok5vOwogICAgIGF1dG8gc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zID0gU2Nyb2xsUG9zaXRp
b25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWNXaXRoT3B0aW9ucyhjbGFtcGluZywg
YW5pbWF0ZWQsIHNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7CiAgICAgcmVuZGVyZXItPnNldFNj
cm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMp
OwogfQpAQCAtMTU5NCwxMCArMTU5NCwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJl
bmRlck9iamVjdCosIExheW91dFJlY3Q+PiBsaXN0Qm94RWxlbWVudEJvdW5kaW5nQm94KAogICAg
ICAgICBzZWxlY3RFbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3VwRWxlbWVudD4oZWxlbWVu
dCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAgICAgICAgIGlzR3JvdXAgPSB0cnVlOwogICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFzZWxlY3RFbGVtZW50IHx8ICFzZWxlY3RFbGVtZW50LT5yZW5k
ZXJlcigpIHx8ICFpczxSZW5kZXJMaXN0Qm94PihzZWxlY3RFbGVtZW50LT5yZW5kZXJlcigpKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyTGlzdEJveD4oKnNlbGVj
dEVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIE9wdGlvbmFsPExheW91dFJlY3Q+IGJvdW5kaW5n
Qm94OwpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6cGFpcjxSZW5k
ZXJPYmplY3QqLCBMYXlvdXRSZWN0Pj4gbGlzdEJveEVsZW1lbnRCb3VuZGluZ0JveCgKICAgICB9
CiAKICAgICBpZiAoIWJvdW5kaW5nQm94KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0ZDo6cGFpcjxSZW5k
ZXJPYmplY3QqLCBMYXlvdXRSZWN0PiB7ICZyZW5kZXJlciwgYm91bmRpbmdCb3gudmFsdWUoKSB9
OwogfQpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9iamVj
dCosIEZsb2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5nQWJzb2x1dGVSZWN0V2l0aG8KICAgICAg
ICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMocXVhZHMpOwogCiAgICAgaWYg
KHF1YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihyZW5kZXJl
ciwgdW5pdGVkQm91bmRpbmdCb3hlcyhxdWFkcykpOwogfQpAQCAtNDM1NCw3ICs0MzU0LDcgQEAg
dm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwg
Y29uc3QgUmVuZGVyU3R5bGUqKQogewogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29sdmVD
YWxsYmFja3MoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNv
bnN0IEVsZW1lbnQmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQuaAppbmRleCA2
ODliMDYxMGFiZTI3YzE4NjE1OWI5NDBiNDVjMjdlMDFiM2NmNzVkLi4xMjE3NmNhYWVkNTIyMGZj
NzhkYmQxNDZhZTkxZjY2YTg5MDBhN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQu
aApAQCAtNzAsMjEgKzcwLDIxIEBAIE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBFbGVtZW50Q29u
dGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgRWxlbWVudENvbnRleHQgY29udGV4
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5ib3VuZGluZ1JlY3QpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBwYWdlSWRlbnRpZmllciA9IFBhZ2VJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LndlYlBhZ2VJZGVu
dGlmaWVyID0gKnBhZ2VJZGVudGlmaWVyOwogCiAgICAgYXV0byBkb2N1bWVudElkZW50aWZpZXIg
PSBEb2N1bWVudElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWRvY3VtZW50
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRpZmllciA9ICpkb2N1bWVu
dElkZW50aWZpZXI7CiAKICAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVyID0gRWxlbWVudElkZW50
aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWVsZW1lbnRJZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSAqZWxlbWVudElkZW50aWZpZXI7CiAKICAg
ICByZXR1cm4gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
SXRlcmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9ucy5oCmluZGV4IDI5ZjJlZWEzNjQyNWEwNTY4Yzk4YmE0MGEwZTQ4MzUxYWFmY2Iz
MjIuLjg1ZDE5OGM1NDBmZjk5MTBjNTQ2ZWVmMzY5MDE5N2E3OWQ0MDRmZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtNTksMTQgKzU5
LDE0IEBAIGlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRvbVRyZWVIYXNN
dXRhdGVkKCkgY29uc3QKIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6
ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogewotICAgIG1fZXZlbnREaXNwYXRjaEFzc2Vy
dGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmNs
ZWFyKCkKIHsKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKICAgICBtX2luaXRpYWxET01UcmVl
VmVyc2lvbiA9IDA7Ci0gICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gV1RGOjpudWxsb3B0
OworICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA2ZDJmZGNhMDNmY2M1MDU5YjNi
M2YyYzk3ZjhkZDM3OGYxMTdkODA5Li41MjgxNTA1Nzc3ZTZlNWMwYjMxN2MxNjNiMTMxMTExNjQz
MjhlNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKIAogICAgIEV2ZW50VGFyZ2V0KiBj
dXJyZW50VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGFyZ2V0LmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiwgT3B0aW9uYWw8Ym9vbD4gaXNJ
blNoYWRvd1RyZWUgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0Q3VycmVudFRhcmdldChF
dmVudFRhcmdldCosIE9wdGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVlID0gc3RkOjpudWxsb3B0
KTsKICAgICBib29sIGN1cnJlbnRUYXJnZXRJc0luU2hhZG93VHJlZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudFRhcmdldElzSW5TaGFkb3dUcmVlOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBl
dmVudFBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFBoYXNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAyYWNjZTA3ZDUwNzJkNWUzMzQzYjNmMjJjMjlh
M2E2OTI1YjVhZDUuLjRiZjA0NTQ2NDQ5NGIyZmUwYTczNGM4MzUzODUxYmEwOGExNWU5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2
ZW50KQogICAgICAgICBldmVudC5zZXRUYXJnZXQoZmluYWxUYXJnZXQpOwogICAgIH0KIAotICAg
IGlmIChzaG91bGRDbGVhclRhcmdldHNBZnRlckRpc3BhdGNoLnZhbHVlT3IoZmFsc2UpKSB7Cisg
ICAgaWYgKHNob3VsZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2gudmFsdWVfb3IoZmFsc2UpKSB7
CiAgICAgICAgIGV2ZW50LnNldFRhcmdldChudWxscHRyKTsKICAgICAgICAgZXZlbnQuc2V0UmVs
YXRlZFRhcmdldChudWxscHRyKTsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGNs
ZWFyIHRoZSBldmVudCdzIHRvdWNoIHRhcmdldCBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKaW5kZXggM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNhNmY4MTQwYmZmYS4uMGNj
ZGM0YWIzYmVjM2VjNmE4NTJlM2RlMDA0ZmU1NjMxMDY3MzY2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAK
ICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBsaXN0ZW5lci0+dHlwZSgpID09
IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUgJiYgIWxpc3RlbmVyLT53YXNDcmVh
dGVkRnJvbU1hcmt1cCgpOwogCi0gICAgaWYgKCFlbnN1cmVFdmVudFRhcmdldERhdGEoKS5ldmVu
dExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgeyBvcHRpb25z
LmNhcHR1cmUsIHBhc3NpdmUudmFsdWVPcihmYWxzZSksIG9wdGlvbnMub25jZSB9KSkKKyAgICBp
ZiAoIWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlw
ZSwgbGlzdGVuZXIuY29weVJlZigpLCB7IG9wdGlvbnMuY2FwdHVyZSwgcGFzc2l2ZS52YWx1ZV9v
cihmYWxzZSksIG9wdGlvbnMub25jZSB9KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKG9wdGlvbnMuc2lnbmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vR0NS
ZWFjaGFibGVSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCmluZGV4
IDMwOTAzZmMyOTVmNGQyZjI3Y2EwYTU1NmRkZGEzYTdjNGJhOWI2YTIuLjIxNjE2ZDdiYmM4MzY3
Y2M0ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9HQ1JlYWNoYWJsZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJl
Zi5oCkBAIC0xMjUsNyArMTI1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hU
cmFpdHM8V2ViQ29yZTo6R0NSZWFjaGFibGVSZWY8UD4+IDogU2ltcGxlQ2xhc3MKICAgICBzdGF0
aWMgUGVla1R5cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIAogICAgIHR5cGVk
ZWYgT3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMgVGFrZVR5cGUgdGFrZShS
ZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IFdURjo6bnVsbG9w
dCA6IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CisgICAgc3RhdGljIFRha2VU
eXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBz
dGQ6Om51bGxvcHQgOiBPcHRpb25hbDxSZWY8UD4+KFdURk1vdmUodmFsdWUpKTsgfQogfTsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRF
dmVudC5jcHAKaW5kZXggYjg3ZmYzZWJiYmM3YTY3ZjZjZTY0NDAwYjEzMDM2NzcwNDFkNDgzMi4u
YWNmM2JhMWM1ZTU2ZjkxMjRkMDYxNWMwYjM3NGQ1YTdlYTZmMjExZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmNwcApAQCAtMTY1LDEyICsxNjUsMTIgQEAgdm9pZCBLZXlib2FyZEV2
ZW50Ojppbml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm8KIAogICAgIHNldE1vZGlmaWVyS2V5cyhjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CiAKLSAgICBtX2NoYXJDb2RlID0gV1RGOjpudWxsb3B0
OworICAgIG1fY2hhckNvZGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc0NvbXBvc2luZyA9IGZh
bHNlOwotICAgIG1fa2V5Q29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2tleUNvZGUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV9yZXBlYXQgPSBmYWxzZTsKICAgICBtX3VuZGVybHlpbmdQbGF0Zm9y
bUV2ZW50ID0gbnVsbHB0cjsKLSAgICBtX3doaWNoID0gV1RGOjpudWxsb3B0OworICAgIG1fd2hp
Y2ggPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jb2RlID0geyB9OwogICAgIG1fa2V5ID0geyB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCmluZGV4IDc2
YjY2ZDg4ZDMzODI5OTA4NzBlNTU0ZDkyYmE2MzU4NTJiNDhiOTMuLjQ4ZTgzMWJhODYxMmM1ZjU0
M2QyODQxOGEyZDM2ZWIyYzJmY2VmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9M
b2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJs
ZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIE9wdGlvbmFsPExvYWRhYmxlU2Ny
aXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjplcnJvcigpIGNvbnN0CiAgICAgICAg
IHJldHVybiBtX2Vycm9yOwogCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0LT5lcnJvck9jY3VycmVk
KCkpCi0gICAgICAgIHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LCBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3Jp
cHQsIHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIExvYWRhYmxlQ2xhc3NpY1NjcmlwdDo6d2FzQ2Fu
Y2VsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5o
CmluZGV4IDkwYzQ3YTExNTJhMWI5NTFmYTM4MDQ4MjQzYTVlNzI4YmJhYmNmNTcuLjM4YzAzMTAx
NzhmOWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1f
Y2FjaGVkU2NyaXB0IHsgfTsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9lcnJvciB7IFdURjo6bnVs
bG9wdCB9OworICAgIE9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3RkOjpudWxsb3B0IH07CiAg
ICAgU3RyaW5nIG1faW50ZWdyaXR5OwogICAgIGJvb2wgbV9pc0FzeW5jIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjhkMzgzMGY3ZWMzMzI5ZWI3OTNmMjgw
OWFmNGVkOWQxNjA3M2RkZS4uOTcyODRmYzNiN2QwYzNiMTY5YjM5OGY1YWY5YjcwYWUzZmE5ZGNk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsNyArNDgsNyBAQCB1c2luZyBN
ZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxN
ZXNzYWdlUG9ydD4+OwogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lc3NhZ2VFdmVudCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4g
PSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4mJiBzb3VyY2UgPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyBSZWY8TWVz
c2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYg
c291cmNlID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKICAgICBz
dGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4gPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVh
dGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwpAQCAtODUsNyArODUs
NyBAQCBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7CiAgICAgTWVzc2FnZUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwotICAg
IE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0g
V1RGOjpudWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CisgICAg
TWVzc2FnZUV2ZW50KERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBz
dGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKIAogICAg
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaAppbmRleCBiOGEwZDA2NTljZWY2NmQ5
YzJmODgyYjRkYjkwNGFhYjBjMWM0ODRkLi4xZjU0ZDg3ZmNkMGExODliYTMyOGNjOTdjMmM5MDk0
ZDMyMTRmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5o
CkBAIC02MywxMiArNjMsMTIgQEAgT3B0aW9uYWw8TWVzc2FnZVBvcnRJZGVudGlmaWVyPiBNZXNz
YWdlUG9ydElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHBy
b2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxPYmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVyVHlwZT4+IHBvcnRJZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gcG9ydElkZW50aWZpZXI7CiAgICAgaWYgKCFwb3J0SWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwb3J0SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCmluZGV4IDhiM2EyNWY5NWM5ZjliYzRhNjE3OWVjMmIwMTU4YmE2Zjg5OTg5
MDIuLmJkNzA4YjE3M2QwOTM0OWJhZjYxZDczZjEwODBkNzJkMWNiNzQ1MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTg1LDkgKzg1LDkgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBub2RlLCBjb25zdCBJbml0
JiBpbml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAgICBpZiAoaW5pdC5zdWJ0
cmVlKQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYgKGluaXQuYXR0cmlidXRl
T2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0cmlidXRlT2xkVmFsdWUu
dmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJpYnV0ZU9sZFZhbHVlOwot
ICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBp
ZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBv
cHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhhc2hTZXQ8QXRvbVN0cmlu
Zz4gYXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggZmU3Y2I1NGE3
OWIyMTkxOGI4MDI0M2NjNjY3ZjZjODU0N2JkYmM5Ni4uMmI3Y2E3ZjYzNzc3NmNiODAwMmQzYzBk
NmYzZTc5MDRkMzIyOWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0xNjA2LDcgKzE2
MDYsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBQ
b3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBjb250YWluZXIgPSBtYWtlUmVmUHRyKHBv
c2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFjb250YWluZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIEJvdW5kYXJ5UG9pbnQgeyBjb250YWluZXIucmVsZWFzZU5vbk51bGwoKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBvc2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRl
eCBmOTA1NWJkMTlhMjEwN2IwOWNlZDdlMmI5OTI0ODU3NTdjNGI5NzM0Li4xNzZiYzNiNDg5MjBm
ZWQwOGEyYWE5NWFhMmJhZTY2N2FlZGY0MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogI2VuZGlmCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVzLT5nZXQoImNoYXJzZXQi
KTsKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hl
ZFJlc291cmNlT3B0aW9ucygpLCBXVEY6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9j
dW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKKyAgICAgICAgICAgICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYp
LCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBz
dGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBX
VEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAgICAgICAgICAgIG1fY2FjaGVkU2hlZXQgPSBkb2N1
bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0eWxlU2hlZXQoV1RGTW92
ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAppbmRleCBlNzk2OTk2MWU0OWQyNzAzYTI0MjY2ODQwNjE5NTk2OTI2Yzc4ZjlkLi4yODVh
NzBkNzI4Y2ZlYTUxODU5NDEzYmI5YTE5OWU0Y2YyMmQxYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
QEAgLTEwNzYsNyArMTA3Niw3IEBAIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZShjb25zdCBS
ZWY8UmFuZ2U+JiByYW5nZSkKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2Uo
Y29uc3QgUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1h
a2VTaW1wbGVSYW5nZSgqcmFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5j
cHAKaW5kZXggN2Q0ZTkxODU5MzI3MzQxNzU4NWFiZGNmODRlYWNhNzBiYTA1Y2Q1MS4uNGEyZGRm
ODM5ZTdkZmE2YjQ2NzFiYzZiOTM4N2E3NDQ5MjhlZDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIE9wdGlvbmFsPFNjcmlwdEVsZW1lbnQ6
OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6OmRldGVybWluZVNjcmlwdFR5cGUoTGVnYWN5VHlw
CiAgICAgICAgICAgICByZXR1cm4gU2NyaXB0VHlwZTo6Q2xhc3NpYzsKICAgICAgICAgaWYgKGlz
TGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKGxhbmd1YWdlKSkKICAgICAgICAgICAg
IHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAoTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUodHlwZS5zdHJpcFdoaXRlU3Bh
Y2UoKSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwpAQCAtMTU4LDEzICsx
NTgsMTMgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlwZT4gU2NyaXB0RWxlbWVu
dDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICAvLyBPbmNlICJkZWZlciIgaXMg
aW1wbGVtZW50ZWQsIHdlIGNhbiByZWNvbnNpZGVyIGVuYWJsaW5nIG1vZHVsZXMgaW4gWEhUTUwu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzM4Nwog
ICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1s
I2F0dHItc2NyaXB0LXR5cGUKICAgICAvLyBTZXR0aW5nIHRoZSBhdHRyaWJ1dGUgdG8gYW4gQVND
SUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAibW9kdWxlIiBtZWFucyB0
aGF0IHRoZSBzY3JpcHQgaXMgYSBtb2R1bGUgc2NyaXB0LgogICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibW9kdWxlIikpCiAgICAgICAgIHJldHVybiBTY3JpcHRU
eXBlOjpNb2R1bGU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0
bWwjcHJlcGFyZS1hLXNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBs
ZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKaW5kZXggOTFh
MDUxNzFmZWU5MjQ4MmY5ZGI5Y2UwOWZmYTQzMzc4ZDM1YWJlMy4uYWQ2ZTk2ZDFmMjJlZmU5NmNj
YTkwODA0ZGQ2NTk2MDI0MGM2NTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdO
b2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2RlLnBhcmVudE5vZGUoKTsK
ICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBub2RlLmNvbXB1dGVO
b2RlSW5kZXgoKTsKICAgICByZXR1cm4gU2ltcGxlUmFuZ2UgeyB7ICpwYXJlbnQsIG9mZnNldCB9
LCB7ICpwYXJlbnQsIG9mZnNldCArIDEgfSB9OwogfQpAQCAtMjUwLDcgKzI1MCw3IEBAIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JiBhLCBjb25zdCBPcHRpb25hCiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGJlIGRvbmUgbW9y
ZSBlZmZpY2llbnRseSwgd2l0aCBmZXdlciBjYWxscyB0byB0cmVlT3JkZXI/CiAgICAgaWYgKCFh
IHx8ICFiIHx8ICFpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4oKmEsICpiKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4geyB7IHN0ZDo6bWF4KGEtPnN0YXJ0LCBiLT5zdGFydCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVl
T3JkZXIpLCBzdGQ6Om1pbihhLT5lbmQsIGItPmVuZCwgY29tcGFyZUJ5Q29tcG9zZWRUcmVlT3Jk
ZXIpIH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCBiYjQ0YjFiODNlMGNl
ODZkODM0NjA4OTk1Mjk2NWQ1MzNlY2M1ZGMyLi5lZmQ4ZmRmNTJiNTI1NzNkMmEyYTYwZjY5ZGNh
N2Y1MWY2OTVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAtMTgwLDcgKzE4MCw3
IEBAIGlubGluZSBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoQm91bmRhcnlQb2lu
dCYmIHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYKIGlubGluZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
bWFrZVNpbXBsZVJhbmdlSGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgc3RhcnQsIE9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQogewogICAgIGlmICghc3RhcnQgfHwgIWVuZCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1vdmUoKnN0YXJ0KSwgV1RG
TW92ZSgqZW5kKSk7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgU2ltcGxlUmFuZ2Ug
bWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2ludCkKIGlubGluZSBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5
UG9pbnQ+JiYgcG9pbnQpCiB7CiAgICAgaWYgKCFwb2ludCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNp
bXBsZVJhbmdlSGVscGVyKFdURk1vdmUoKnBvaW50KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggYThkNzViMWM1OWU5N2Y2
YWFmMWQ4YjIyZTYyM2VjOGU0ZTAxODhhNC4uMzBmZTA3ZGU1NThlYWJjZTMzNjk2MzUwMTA1NDky
NWJkNzI0ZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3Ry
ZWFtRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFt
RW5jb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5wdXQpCiAgICAgICAgIGF1
dG8gdG9rZW4gPSB2aWV3W2NwdHJdOwogICAgICAgICBpZiAobV9wZW5kaW5nSGlnaFN1cnJvZ2F0
ZSkgewogICAgICAgICAgICAgYXV0byBoaWdoU3Vycm9nYXRlID0gKm1fcGVuZGluZ0hpZ2hTdXJy
b2dhdGU7Ci0gICAgICAgICAgICBtX3BlbmRpbmdIaWdoU3Vycm9nYXRlID0gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgbV9wZW5kaW5nSGlnaFN1cnJvZ2F0ZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIGlmICh0b2tlbiA+PSAweERDMDAgJiYgdG9rZW4gPD0gMHhERkZGKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBjb2RlUG9pbnQgPSAweDEwMDAwICsgKChoaWdoU3Vycm9nYXRlIC0g
MHhEODAwKSA8PCAxMCkgKyAodG9rZW4gLSAweERDMDApOwogICAgICAgICAgICAgICAgIFU4X0FQ
UEVORF9VTlNBRkUoYnl0ZXMuZGF0YSgpLCBieXRlc1dyaXR0ZW4sIGNvZGVQb2ludCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGI2NzlhMGEzYmI2YWFkZmI1NGYzMDY0MTE1ZDEzYjdk
M2MxMTJkNTUuLjAzNzQ5ZTc3YTljYzc3ZDUyNTAwOTBmYzZiZTY3MDZjZDFkZTc2ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMTUsMTggKzMxNSwxOCBAQCBIVE1MTGFiZWxFbGVt
ZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0b21TdHJpbmcmIGZvckF0
dHJpYnV0ZVZhbAogc3RhdGljIE9wdGlvbmFsPExheW91dFBvaW50PiBhYnNvbHV0ZVBvaW50SWZO
b3RDbGlwcGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBv
aW50KQogewogICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSB8fCAhZG9jdW1lbnQudmlldygpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgY29uc3QgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC5mcmFtZSgpLT5zZXR0aW5n
cygpOwogICAgIGlmIChzZXR0aW5ncy52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSAmJiBzZXR0aW5n
cy5jbGllbnRDb29yZGluYXRlc1JlbGF0aXZlVG9MYXlvdXRWaWV3cG9ydCgpKSB7CiAgICAgICAg
IGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50LnZpZXcoKSB8
fCAhZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1
dG8qIHZpZXcgPSBkb2N1bWVudC52aWV3KCk7CiAgICAgICAgIEZsb2F0UG9pbnQgbGF5b3V0Vmll
d3BvcnRQb2ludCA9IHZpZXctPmNsaWVudFRvTGF5b3V0Vmlld3BvcnRQb2ludChjbGllbnRQb2lu
dCk7CiAgICAgICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEJvdW5kcyh7IH0sIHZpZXctPmxh
eW91dFZpZXdwb3J0UmVjdCgpLnNpemUoKSk7CiAgICAgICAgIGlmICghbGF5b3V0Vmlld3BvcnRC
b3VuZHMuY29udGFpbnMobGF5b3V0Vmlld3BvcnRQb2ludCkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuIExheW91dFBvaW50KHZpZXctPmxheW91dFZpZXdwb3J0VG9BYnNvbHV0ZVBvaW50KGxh
eW91dFZpZXdwb3J0UG9pbnQpKTsKICAgICB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJZk5vdENsaXBwZWQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdAogI2VuZGlmCiAgICAgaWYgKHZpc2libGVSZWN0LmNvbnRhaW5zKGFi
c29sdXRlUG9pbnQpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVQb2ludDsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJlZlB0cjxOb2Rl
PiBUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50
LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9WaXNpdGVkTGlua1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0
YXRlLmNwcAppbmRleCBhMDNhZjE0N2YzOWMyMWU0ZWY3NzdiZmNiZjQ0MTFkMTRhYWIwYzgxLi5l
YmQxNWU0MTE4ZTQ2ZjhhYmY5M2I4NGE1ZWZhMzQyN2ExNjRmNzI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGlubGluZSBzdGF0aWMg
T3B0aW9uYWw8U2hhcmVkU3RyaW5nSGFzaD4gbGlua0hhc2hGb3JFbGVtZW50KGNvbnN0IEVsZW1l
bnQmIGVsZW1lCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oZWxl
bWVudCkudmlzaXRlZExpbmtIYXNoKCk7CiAgICAgaWYgKGlzPFNWR0FFbGVtZW50PihlbGVtZW50
KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0FFbGVtZW50PihlbGVtZW50KS52aXNpdGVk
TGlua0hhc2goKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxpZGF0ZVN0eWxlRm9yTGlu
ayhTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1doZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCmlu
ZGV4IGFlNzZhNmZmM2RjOTFiODlmNzIwZmVjNzJmNjgzMWE2ZjdkOTNhM2YuLjQwMjg1ZDM5MDMx
ODZiMTVhODcxMGQ4NTAxYTlmYWNhZjBlY2U3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5j
cHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBXaGVlbEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVu
dChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2luZG8KIAogICAgIG1fZGVs
dGFNb2RlID0gRE9NX0RFTFRBX1BJWEVMOwogCi0gICAgbV91bmRlcmx5aW5nUGxhdGZvcm1FdmVu
dCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50ID0gc3RkOjpu
dWxsb3B0OwogfQogCiBFdmVudEludGVyZmFjZSBXaGVlbEV2ZW50OjpldmVudEludGVyZmFjZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggY2U2ZThhN2NhZWMzZDIyYzE5MmJhOWExZDU1MWMzZTBi
MjQzZjgzMC4uZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzViMjlkNDg2YjQ4MGE0ZGU3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpkaXNl
bnRhbmdsZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogICAgIHNpemVf
dCBpID0gcG9ydCA9PSBtX3BvcnRzWzBdID8gMCA6IDE7CiAKICAgICBBU1NFUlQobV9wcm9jZXNz
ZXNbaV0gfHwgbV9pc0Nsb3NlZFtpXSk7Ci0gICAgbV9wcm9jZXNzZXNbaV0gPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wZW5kaW5nTWVz
c2FnZVBvcnRUcmFuc2ZlcnNbaV0uYWRkKHRoaXMpOwogCiAgICAgLy8gVGhpcyBzZXQgb2Ygc3Rl
cHMgaXMgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGxvY2sgaXMgdW5sb2NrZWQgYmVmb3JlIHRoZQpA
QCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjbG9zZVBvcnQoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogICAgIEFTU0VSVChwb3J0ID09IG1fcG9y
dHNbMF0gfHwgcG9ydCA9PSBtX3BvcnRzWzFdKTsKICAgICBzaXplX3QgaSA9IHBvcnQgPT0gbV9w
b3J0c1swXSA/IDAgOiAxOwogCi0gICAgbV9wcm9jZXNzZXNbaV0gPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc0Nsb3NlZFtpXSA9IHRy
dWU7CiAKICAgICAvLyBUaGlzIHNldCBvZiBzdGVwcyBpcyB0byBndWFyYW50ZWUgdGhhdCB0aGUg
bG9jayBpcyB1bmxvY2tlZCBiZWZvcmUgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKaW5kZXggZWExOGY5
M2Q2NjY4NDY4MDNhZjMzMzE3ZmI5OTMxZmQ3ZWZkMGU2ZS4uYzU2MGFmMGUwZGIwM2I5NzU2MTM2
NTU5NjJmNDA0Y2I0NjdlMTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaApAQCAtNTksMTAgKzU5LDEw
IEBAIE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0czo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAKICAgICByZXN1bHQubWVzc2FnZSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0Lm1lc3Nh
Z2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50cmFuc2ZlcnJlZFBvcnRz
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCBkOWJiNzBjNDExM2Qz
YzRmZTI0ZTcxOTExNThkNTUzMTYwMTJkMDdjLi44ZTQzNTVmZDQ4NTc4Nzc3NDVmMDc4NTU2MTg0
MTU2YjRmOTY1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlUaW1lcihBbHRlcm5hdGl2
ZVRleHRUeXBlCiAKICAgICAvLyBJZiB0eXBlIGlzIFBhbmVsVHlwZVJldmVyc2lvbiwgdGhlbiB0
aGUgbmV3IHJhbmdlIGhhcyBiZWVuIHNldC4gU28gd2Ugc2hvdWxkbid0IGNsZWFyIGl0LgogICAg
IGlmICh0eXBlID09IEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9uKQotICAgICAgICBtX3Jh
bmdlV2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3JhbmdlV2l0aEFs
dGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogICAgIG1fdHlwZSA9IHR5cGU7CiAgICAgbV90aW1l
ci5zdGFydE9uZVNob3QoY29ycmVjdGlvblBhbmVsVGltZXJJbnRlcnZhbCk7CiB9CkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzdGFydEFsdGVybmF0
aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZQogdm9pZCBBbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyOjpzdG9wQWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpCiB7CiAgICAgbV90aW1lci5z
dG9wKCk7Ci0gICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OnN0b3BQZW5kaW5nQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJiBvbGRTZWxlY3Rpb24pCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjphcHBseVBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHMKICAgICBpZiAoZG9BcHBseUNvcnJlY3Rpb24pCiAgICAgICAgIGhhbmRsZUFsdGVy
bmF0aXZlVGV4dFVJUmVzdWx0KGRpc21pc3NTb29uKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHRBY2NlcHRlZCkpOyAKICAgICBlbHNlCi0gICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJu
YXRpdmUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFzUGVu
ZGluZ0NvcnJlY3Rpb24oKSBjb25zdApAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
ID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihwLCBzdGFydCk7
CiAgICAgICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCkubWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nLCBU
ZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5nVHlwZTo6U2hvd0NvcnJl
Y3Rpb25QYW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRXb3JkUmFuZ2UsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCkubWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5cGU6OlNwZWxsaW5nLCBUZXh0
Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5nVHlwZTo6U2hvd0NvcnJlY3Rp
b25QYW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRXb3JkUmFuZ2UsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFsdGVybmF0aXZlVGV4dFR5
cGVSZXZlcnNpb246IHsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXI6OnRpbWVyRmlyZWQoKQogICAgICAgICBWZWN0b3I8U3RyaW5nPiBzdWdnZXN0aW9u
czsKICAgICAgICAgdGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0ZvcldvcmQobV9vcmlnaW5hbFRl
eHQsIHBhcmFncmFwaFRleHQsIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIHN1
Z2dlc3Rpb25zKTsKICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBTdHJpbmcgdG9wU3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25z
LmZpcnN0KCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3UKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogfQog
CiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmNhbkVuYWJsZUF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5n
ZUxpc3RUeXBlQ29tbWFuZC5jcHAKaW5kZXggMmFkYWI2Y2Y4ZTE5MzEzYmE4MWM1NmJlOGNhMjUy
YTFkNThmZTAyZi4uMzI5MWFiZTUyZjkxN2YyOGRmMDZjMzU2MWZmZTFlMTkzZDIxNmU3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5cGVDb21tYW5kLmNwcApA
QCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPENoYW5nZUxpc3RUeXBl
Q29tbWFuZDo6VHlwZSwgUmVmPEhUTUxFbGVtZW50Pj4+IGxpc3RDbwogICAgIGlmIChpczxIVE1M
T0xpc3RFbGVtZW50PihsaXN0VG9SZXBsYWNlKSkKICAgICAgICAgcmV0dXJuIHt7IENoYW5nZUxp
c3RUeXBlQ29tbWFuZDo6VHlwZTo6Q29udmVydFRvVW5vcmRlcmVkTGlzdCwgbGlzdFRvUmVwbGFj
ZS5yZWxlYXNlTm9uTnVsbCgpIH19OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6
OlR5cGU+IENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6bGlzdENvbnZlcnNpb25UeXBlKERvY3VtZW50
JiBkb2N1bWVudCkKQEAgLTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8Q2hhbmdlTGlzdFR5cGVDb21t
YW5kOjpUeXBlPiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RDb252ZXJzaW9uVHlwZSgKICAg
ICAgICAgaWYgKGF1dG8gdHlwZUFuZEVsZW1lbnQgPSBsaXN0Q29udmVyc2lvblR5cGVGb3JTZWxl
Y3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAgICAgICAgIHJldHVy
biB0eXBlQW5kRWxlbWVudC0+Zmlyc3Q7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmPEhUTUxFbGVtZW50PiBDaGFuZ2VM
aXN0VHlwZUNvbW1hbmQ6OmNyZWF0ZU5ld0xpc3QoY29uc3QgSFRNTEVsZW1lbnQmIGxpc3RUb1Jl
cGxhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRD
b21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
Y3BwCmluZGV4IGJjMjM0YTcyYzJjNGE0YzNlMjBkMWVlMzY4Y2NkOTU4NDc3MGEzMzMuLjc2ZWQx
MTVjYjViNmFiZTE1ZmE3MmE5NWUxMzBmNzg3MDRjYmM3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0xNTQ5LDcgKzE1NDksNyBA
QCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxk
QnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogewogICAgIGF1dG8gZW1wdHlMaXN0SXRlbSA9IGVu
Y2xvc2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpOwog
ICAgIGlmICghZW1wdHlMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbGlzdE5vZGUgPSBlbXB0eUxp
c3RJdGVtLT5wYXJlbnROb2RlKCk7CiAgICAgLy8gRklYTUU6IENhbid0IHdlIGRvIHNvbWV0aGlu
ZyBiZXR0ZXIgd2hlbiB0aGUgaW1tZWRpYXRlIHBhcmVudCB3YXNuJ3QgYSBsaXN0IG5vZGU/CkBA
IC0xNTU3LDcgKzE1NTcsNyBAQCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogICAgICAgICB8fCAo
IWxpc3ROb2RlLT5oYXNUYWdOYW1lKHVsVGFnKSAmJiAhbGlzdE5vZGUtPmhhc1RhZ05hbWUob2xU
YWcpKQogICAgICAgICB8fCAhbGlzdE5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKQogICAgICAgICB8
fCBsaXN0Tm9kZSA9PSBlbXB0eUxpc3RJdGVtLT5yb290RWRpdGFibGVFbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLnBy
ZXZpb3VzKEJhY2t3YXJkRGVsZXRpb24pLCBlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxpZ2h0LmgKaW5kZXggZjQ2
ZDAxZGU5NDkxMTI1NTc1ODgzZTk3M2UxYzUxODZmODcxYTFiMC4uNjVmMTZlZmI2ODRjMTdhMGM1
ZWNhMDMzOTgyOTc4MjcyYTUwODg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRpb25IaWdobGlnaHQuaApAQCAtNjcsMTcgKzY3LDE3IEBAIE9wdGlvbmFsPENvbXBvc2l0
aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0OwogICAgIGRlY29kZXIgPj4g
c3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFydE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBlbmRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CiAgICAgaWYgKCFl
bmRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+
PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpzdGFydE9mZnNl
dCwgKmVuZE9mZnNldCwgKmNvbG9yIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuY3BwCmluZGV4IDA2MThkNzYxOGJkNWNiMGZlNDBjZTQ3YzYyMjdmZGQzYWE5YWJkMTgu
LmYzMDYxMzg5N2VkZTE0MTM1NDhlZWJjZjRjMTY2YTY5ZmJmMmNmYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTU2MywxNyArNTYzLDE3IEBAIFJlZjxNdXRh
YmxlU3R5bGVQcm9wZXJ0aWVzPiBFZGl0aW5nU3R5bGU6OnN0eWxlV2l0aFJlc29sdmVkVGV4dERl
Y29yYXRpb25zKCkgY29uCiBPcHRpb25hbDxXcml0aW5nRGlyZWN0aW9uPiBFZGl0aW5nU3R5bGU6
OnRleHREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0gbV9tdXRhYmxlU3R5bGUtPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAgICAgaWYgKCFpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odW5pY29kZUJpZGkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ1NTVmFsdWVJRCB1bmljb2Rl
QmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFs
dWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlmICghaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KGRpcmVjdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUx0ciA/IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0IDogV3JpdGluZ0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQ7CiAgICAgfQpAQCAtNTgxLDcgKzU4MSw3IEBAIE9wdGlvbmFsPFdyaXRp
bmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigpIGNvbnN0CiAgICAgaWYg
KHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBXcml0
aW5nRGlyZWN0aW9uOjpOYXR1cmFsOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEVkaXRpbmdTdHlsZTo6c2V0U3R5bGUoUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+JiYgc3R5bGUpCkBAIC0xNjExLDcgKzE2MTEsNyBA
QCBSZWY8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OmludmVyc2VUcmFuc2Zvcm1Db2xvcklm
TmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byBjb2xvckZvclByb3BlcnR5SWZJbnZl
cnRpYmxlID0gWyZdKENTU1Byb3BlcnR5SUQgaWQpIC0+IE9wdGlvbmFsPENvbG9yPiB7CiAgICAg
ICAgIGF1dG8gY29sb3IgPSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlBc0NvbG9yKGlkKTsKICAg
ICAgICAgaWYgKCFjb2xvciB8fCAhY29sb3ItPmlzVmlzaWJsZSgpIHx8IGNvbG9yLT5pc1NlbWFu
dGljKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0NTk3YmRlYTVkOTNkN2NkM2FmMTgwMWMzZjU5Mjgw
ZmI5MzYzOWMzLi41ZDgxYzJmMjU2NzQ1YjY5NTM5OWQ5MjA1Y2U3YWQwYjVmYWY5YTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNjMzLDM0ICsyNjMzLDM0IEBAIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIGFz
LXlvdS10eXBlIGNoZWNraW5nLCBzbyBpZiB0aGF0J3Mgb2ZmIHdlIGRvIG5vdGhpbmcuIE5vdGUg
dGhhdAogICAgIC8vIGdyYW1tYXIgY2hlY2tpbmcgY2FuIG9ubHkgYmUgb24gaWYgc3BlbGwgY2hl
Y2tpbmcgaXMgYWxzbyBvbi4KICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgYXV0byBzZWFyY2hSYW5nZSA9IHNlbGVjdGlvbi50b05vcm1h
bGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VhcmNoUmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gSWYg
d2UncmUgbm90IGluIGFuIGVkaXRhYmxlIG5vZGUsIGJhaWwuCiAgICAgTm9kZSYgZWRpdGFibGVO
b2RlID0gc2VhcmNoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgaWYgKCFlZGl0YWJsZU5v
ZGUuaGFzRWRpdGFibGVTdHlsZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFi
bGVkRm9yKCZlZGl0YWJsZU5vZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRoZSBzcGVsbCBjaGVja2Vy
IGlmIGl0IGlzIGF2YWlsYWJsZQogICAgIGlmICghY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgVGV4
dENoZWNraW5nSGVscGVyIGNoZWNrZXIoKmNsaWVudCgpLCAqc2VhcmNoUmFuZ2UpOwogICAgIGlm
IChjaGVja1NwZWxsaW5nKQogICAgICAgICByZXR1cm4gY2hlY2tlci5tYXJrQWxsTWlzc3BlbGxl
ZFdvcmRzKCk7CiAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICBj
aGVja2VyLm1hcmtBbGxVbmdyYW1tYXRpY2FsUGhyYXNlcygpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHNlbGVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrU3BlbGxpbmcpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCkBA
IC0zMDk1LDEzICszMDk1LDEzIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdl
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewogICAgIGF1dG8gZG9jdW1l
bnQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmRvY3VtZW50QXRQb2ludCh3aW5kb3dQb2ludCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7
CiAgICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24geyBm
cmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRz
KHdpbmRvd1BvaW50KSkgfS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQogCkBAIC0zMTMyLDEyICsz
MTMyLDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKGJvb2wgaWdu
b3JlLCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFsCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
RWRpdG9yOjpjb21wb3NpdGlvblJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29tcG9zaXRp
b25Ob2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY29tcG9zaXRpb25Ob2RlLT5sZW5n
dGgoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKG1fY29tcG9zaXRpb25TdGFydCwg
bGVuZ3RoKTsKICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6OmNsYW1wKG1fY29tcG9zaXRpb25FbmQs
IHN0YXJ0LCBsZW5ndGgpOwogICAgIGlmIChzdGFydCA+PSBlbmQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsg
eyB7ICptX2NvbXBvc2l0aW9uTm9kZSwgc3RhcnQgfSwgeyAqbV9jb21wb3NpdGlvbk5vZGUsIGVu
ZCB9IH0gfTsKIH0KIApAQCAtMzUxNiw3ICszNTE2LDcgQEAgc3RhdGljIFNpbXBsZVJhbmdlIGNv
bGxhcHNlSWZSb290c0RpZmZlcihTaW1wbGVSYW5nZSYmIHJhbmdlKQogT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFN0YXJ0IGZyb20g
YW4gZWRnZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlLCBpZiB0aGVyZSdzIGEgcmVmZXJlbmNlIHJh
bmdlIHRoYXQncyBub3QgaW4gc2hhZG93IGNvbnRlbnQuIFdoaWNoIGVkZ2UKICAgICAvLyBpcyB1
c2VkIGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBzZWFyY2hpbmcgZm9yd2FyZCBvciBiYWNrd2Fy
ZCwgYW5kIHdoZXRoZXIgc3RhcnRJblNlbGVjdGlvbiBpcyBzZXQuCkBAIC0zNTU5LDcgKzM1NTks
NyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbAogICAgICAgICAvLyB0aGlzIHNob3VsZCBiZSBh
IHN1Y2Nlc3MgY2FzZSBpbnN0ZWFkLCBzbyB3ZSdsbCBqdXN0IGZhbGwgdGhyb3VnaCBpbiB0aGF0
IGNhc2UuCiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdFJhbmdlLmNvbGxhcHNlZCgpID8gV1RG
OjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKHJlc3VsdFJhbmdlKTsKKyAgICByZXR1cm4gcmVzdWx0
UmFuZ2UuY29sbGFwc2VkKCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwocmVz
dWx0UmFuZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBpc0ZyYW1lSW5SYW5nZShGcmFtZSYgZnJhbWUs
IGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKQEAgLTM5NDksMTAgKzM5NDksMTAgQEAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9yQ2FuZGlkYXRlUmVxdWVzdCgp
IGNvbnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZUZvclRleHRDaGVja2lu
Z1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkgY29uc3QKIHsKICAgICBp
ZiAoIXJlc3VsdC5yYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBjb250ZXh0UmFuZ2UgPSBjb250
ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAgaWYgKCFjb250ZXh0UmFuZ2UpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQu
cmFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA3OGYzZWM4YWRiYjEyOWI0
MzkwNGQ4Y2NjYzhkYzZlNTU4OTljZjNiLi45MmRiNGViYjk5NDQ2ODA4YzJlYmJiYTQ5OGI1NmZh
Y2YzZjYyZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBl
bnVtIGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewogCiBjbGFzcyBU
ZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFRl
bXBvcmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rp
b24+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiA9
IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKERvY3Vt
ZW50JiwgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNl
dDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+
VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CkBAIC0xNDQsNyArMTQ0LDcg
QEAgcHJpdmF0ZToKIGNsYXNzIElnbm9yZVNlbGVjdGlvbkNoYW5nZUZvclNjb3BlIHsKIHB1Ymxp
YzoKICAgICBJZ25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZShGcmFtZSYgZnJhbWUpCi0gICAg
ICAgIDogbV9zZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLmRvY3VtZW50KCksIFdURjo6bnVsbG9wdCwg
VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKQorICAgICAg
ICA6IG1fc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZS5kb2N1bWVudCgpLCBzdGQ6Om51bGxvcHQsIFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2VsZWN0aW9uQ2hhbmdlcykKICAgICB7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKaW5kZXggNjJhYjE2
NWU5ZmE0ZWFjYzY4ZWFmZDNkMTA2MWZlZWFmNTkzMTdmOS4uZmYyZjIyNjk2MmVlMmIwMDM1NzQx
YmY5M2MyMDE2ZmEwNWY4MDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b250QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0
ZXMuaApAQCAtNTksMTcgKzU5LDE3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBP
cHRpb25hbDxUZXh0TGlzdD4gVGV4dExpc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvCiAgICAgT3B0
aW9uYWw8dWludDhfdD4gc3R5bGU7CiAgICAgZGVjb2RlciA+PiBzdHlsZTsKICAgICBpZiAoIXN0
eWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0ZW1OdW1iZXI7CiAgICAgZGVj
b2RlciA+PiBzdGFydGluZ0l0ZW1OdW1iZXI7CiAgICAgaWYgKCFzdGFydGluZ0l0ZW1OdW1iZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBvcmRlcmVkOwogICAgIGRlY29kZXIgPj4gb3JkZXJl
ZDsKICAgICBpZiAoIW9yZGVyZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgc3RhdGljX2Nhc3Q8TGlz
dFN0eWxlVHlwZT4oV1RGTW92ZSgqc3R5bGUpKSwgV1RGTW92ZSgqc3RhcnRpbmdJdGVtTnVtYmVy
KSwgV1RGTW92ZSgqb3JkZXJlZCkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGFkMzIyMjc0YWMxMjhhMTIyYzJkMzE0ZmM3MDkxMTc1MTU2MWJi
OWIuLjI0ZGU4ZDdkMGFiMDJmZjBmZGE1NzdmMTg4NmJiNTk2YTk2NjY0YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC00MTAsNyArNDEwLDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShj
b25zdCBWaXNpYmxlU2VsZWN0aW8KIAogICAgIC8vIEFsd2F5cyBjbGVhciB0aGUgeCBwb3NpdGlv
biB1c2VkIGZvciB2ZXJ0aWNhbCBhcnJvdyBuYXZpZ2F0aW9uLgogICAgIC8vIEl0IHdpbGwgYmUg
cmVzdG9yZWQgYnkgdGhlIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24gY29kZSBpZiBuZWNlc3Nh
cnkuCi0gICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBXVEY6Om51bGxvcHQ7
CisgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgc2VsZWN0RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKTsKICAgICBtX2Rv
Y3VtZW50LT5lZGl0b3IoKS5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG9sZFNlbGVjdGlvbiwg
b3B0aW9ucyk7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3NlbGVjdGlvbi1hcGkvI3Nl
bGVjdGlvbmNoYW5nZS1ldmVudApAQCAtMjUyNywxMiArMjUyNywxMiBAQCBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRhaW5pbmdDYXJldFNlbGVj
dGlvbigpIGNvbgogewogICAgIGF1dG8gZWxlbWVudCA9IGRlcHJlY2F0ZWRFbmNsb3NpbmdCbG9j
a0Zsb3dFbGVtZW50KG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCku
ZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFy
dCA9IFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oZWxlbWVudCwg
MCkpOwogICAgIGF1dG8gZW5kID0gVmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQ
b3NpdGlvbihlbGVtZW50LCBlbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKSkpOwogICAgIGlmIChz
dGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNlbGVjdGlvbiA9
IG1fc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRCYXNlKHN0YXJ0KTsKQEAgLTI3NTEsNyAr
Mjc1MSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0U2VudGVuY2VTdGFydCgp
IGNvbnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OnJhbmdlQnlBbHRl
cmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlvbiwgaW50IGFtb3VudCkg
Y29uc3QKIHsKICAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWFt
b3VudCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXggMTQ4OTNmMWY0OWRhNGVk
OTY0ZTBhYzM2Y2ZmNDYxYmVlZjE0YzE1Ny4uNTkxMDVkOTM3ZTQ2OWYyZWRhMTkyZWIwYWNjYTgy
NjhhMmMzZTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcApAQCAt
NDgsNyArNDgsNyBAQCBTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3QoY29uc3Qg
U2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0IFNpbQogICAgICwgbV9hdXRvbWF0aWNS
ZXBsYWNlbWVudFJhbmdlKGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2UpCiAgICAgLCBtX3BhcmFn
cmFwaFJhbmdlKHBhcmFncmFwaFJhbmdlKQogICAgICwgbV9yb290RWRpdGFibGVFbGVtZW50KG1f
Y2hlY2tpbmdSYW5nZS5zdGFydC5jb250YWluZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAg
ICAsIG1fcmVxdWVzdERhdGEoV1RGOjpudWxsb3B0LCB0ZXh0LCBvcHRpb25zLCB0eXBlKQorICAg
ICwgbV9yZXF1ZXN0RGF0YShzdGQ6Om51bGxvcHQsIHRleHQsIG9wdGlvbnMsIHR5cGUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRl
eCA5MjE2YzU4YWIwM2E0ZDkzZDU4Y2Y5MmRkODQwNjA5NWI3ZTNjNzEwLi44ZjcxNWY0ZjEwOGE2
N2Y1NDYzYTM2YzZmYjE5MmIxZjVhZjkxZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZhbHVlcygpCiAgICAgbV9j
aGVja2luZ1N0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFN0YXJ0LnJl
c2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5yZXNldCgpOwotICAgIG1f
b2Zmc2V0QXNSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX29mZnNldEFzUmFuZ2UgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNDE5
MWI0ZGM4ZDgwY2I4OWRlYTVhODBhMDk3ZWZjMTQwYjAwNGFjYy4uZDA2MzBlMzJkYzkwZTQ3Y2U2
YzQ0NmNiMDY2NGU4MTkxMmQ0YmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUudHlwZTsKICAgICAgICAgfQogCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWR2YW5jZSgpCiAgICAgewotICAgICAgICBtX3RleHQgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fdGV4dCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZU5vZGUoKTsKIAogICAg
ICAgICBpZiAoc2hvdWxkQWR2YW5jZUl0ZXJhdG9yUGFzdEN1cnJlbnROb2RlKCkpCkBAIC0yOTEs
NyArMjkxLDcgQEAgc3RhdGljIGJvb2wgYXJlRXF1YWxJZ25vcmluZ0xlYWRpbmdBbmRUcmFpbGlu
Z1doaXRlc3BhY2VzKGNvbnN0IFN0cmluZyYgY29udGVudCwKIHN0YXRpYyBPcHRpb25hbDxUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiB0b2tlbkluZm8o
Tm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvIHJlc3VsdDsKICAgICByZXN1bHQuZG9j
dW1lbnRVUkwgPSBub2RlLT5kb2N1bWVudCgpLnVybCgpOwpAQCAtNzgxLDcgKzc4MSw3IEBAIGF1
dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9u
SXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgICAgICAgICBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50PigqZWxlbWVudCkuc2V0VmFsdWUobmV3VmFsdWUudG9TdHJpbmcoKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShpdGVtLmF0dHJpYnV0ZU5hbWUs
IG5ld1ZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHNpemVfdCBjdXJyZW50VG9r
ZW5JbmRleCA9IDA7CkBAIC05MjgsNyArOTI4LDcgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0YSYgaXRlbSwgY29uc3QK
ICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWROb2Rlcy5hZGQoaW5zZXJ0aW9uLmNoaWxkLmdldCgp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlbW92ZU5vZGUo
Tm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuaAppbmRleCA3YzBiNmRjODZlZjczZjE2M2I3ZGY2MTVlYjJlMThkODNm
YWZlYTk2Li4xYmMwMTgxYmFmYjRlZTRmYTJiZTcxZTU4YzVlNGQyZWZlM2Q3ZGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5o
CkBAIC0yMTMsMTYgKzIxMywxNiBAQCBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBUZXh0TWFuaXB1bGF0aW9uQ29udAogewogICAgIE1h
bmlwdWxhdGlvblRva2VuSW5mbyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQudGFnTmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yb2xlQXR0
cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRvY3VtZW50VVJM
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzVmlzaWJsZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjM4LDEzICsyMzgsMTMgQEAgT3B0aW9uYWw8VGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGwKIHsKICAgICBNYW5pcHVsYXRpb25Ub2tlbiByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuY29udGVudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNFeGNsdWRlZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU5LDkgKzI1OSw5IEBAIE9wdGlvbmFsPFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtPiBUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlCiB7CiAgICAgTWFuaXB1bGF0aW9uSXRlbSByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQudG9rZW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNzYs
OSArMjc2LDkgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lv
blJ1bGU+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjoKIHsKICAgICBFeGNsdXNpb25SdWxl
IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ydWxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0yOTMsNyArMjkzLDcgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1bGF0aW8KIHsKICAgICBF
bGVtZW50UnVsZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubG9jYWxO
YW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDgsOSArMzA4LDkgQEAgT3B0
aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkF0dHJpYnV0
ZVJ1bGU+IFRleHRNYW5pcHVsYXQKIHsKICAgICBBdHRyaWJ1dGVSdWxlIHJlc3VsdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzI1LDcg
KzMyNSw3IEBAIE9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25S
dWxlOjpDbGFzc1J1bGU+IFRleHRNYW5pcHVsYXRpb25DCiB7CiAgICAgQ2xhc3NSdWxlIHJlc3Vs
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05hbWUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTM0MCwxMSArMzQwLDExIEBAIE9wdGlvbmFsPFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlPiBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvCiB7CiAgICAgTWFuaXB1bGF0aW9uRmFpbHVyZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuaW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGY5YThlMWQ4YjIyNzk3NDRlZTJkMmE1NTk1OGUyMDU0
MjQ0YzgxZmYuLjMxNzY0ZGU2ZmFhYTRkZWIyOTQwNjA2ZTFkZDM4ZWI5YjQ5NDlhNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApAQCAtMTYyLDcgKzE2
Miw3IEBAIFJlZlB0cjxEb2N1bWVudD4gVmlzaWJsZVNlbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25z
dAogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBj
b25zdAogewogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6IFNl
ZW1zIGxpa2VseSB3ZSBkb24ndCBuZWVkIHRvIGNhbGwgcGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
IGhlcmUuCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0LnBhcmVudEFuY2hvcmVk
RXF1aXZhbGVudCgpLCBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiB9CkBAIC0x
NzAsNyArMTcwLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246OmZp
cnN0UmFuZ2UoKSBjb25zdAogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246
OnRvTm9ybWFsaXplZFJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAoaXNOb25lT3JPcnBoYW5lZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gdXBkYXRlZCBsYXlvdXQgc2luY2Ug
dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKICAgICAvLyBpbiB0aGUgY291cnNlIG9mIHJ1bm5pbmcg
ZWRpdCBjb21tYW5kcyB3aGljaCBtb2RpZnkgdGhlIERPTS4KQEAgLTE4MCw3ICsxODAsNyBAQCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9Ob3JtYWxpemVkUmFuZ2Uo
KSBjb25zdAogCiAgICAgLy8gQ2hlY2sgYWdhaW4sIGJlY2F1c2UgdXBkYXRpbmcgbGF5b3V0IGNh
biBjbGVhciB0aGUgc2VsZWN0aW9uLgogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBQb3NpdGlvbiBzLCBlOwogICAgIGlmIChpc0NhcmV0KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0MWFjNGM0ZTRiM2Y5ODVjMjk1YjNlODY2NDM1
ZTE0ZGNiY2Y2ZTYwLi5iYzk5ZmQ1OTFmYWQwZmE1MTE2NmNhNWUzYmE0YzlkYTE1ODRmZGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC0xNzQyLDcgKzE3NDIs
NyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsCiB7CiAgICAgLy8gVGhpcyBpcyBwYXJ0aWN1bGFy
bHkgaW5lZmZpY2llbnQuICBXZSBjb3VsZCBlYXNpbHkgb2J0YWluIHRoZSBhbnN3ZXIgd2l0aCB0
aGUgYm91bmRhcmllcyBjb21wdXRlZCBiZWxvdy4KICAgICBpZiAoIXdpdGhpblRleHRVbml0T2ZH
cmFudWxhcml0eSh2cCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWaXNpYmxl
UG9zaXRpb24gcHJldkJvdW5kYXJ5OwogICAgIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnk7
CkBAIC0xNzk0LDE0ICsxNzk0LDE0IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbmNsb3NpbmdU
ZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwKIAogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBpZiAocHJldkJvdW5kYXJ5LmlzTnVsbCgpIHx8IG5leHRCb3VuZGFyeS5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICh2cCA8IHByZXZCb3VuZGFyeSB8fCB2cCA+IG5leHRCb3Vu
ZGFyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UocHJldkJvdW5kYXJ5LCBuZXh0
Qm91bmRhcnkpOwogfQpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBjaGFyYWN0ZXJzQXJvdW5k
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgVUNoYXIzMiYgb25lQWZ0
ZXIKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoYXV0byByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShw
b3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHksIFNlbGVjdGlvbkRpcmVj
dGlvbjo6QmFja3dhcmQpKQogICAgICAgICByZXR1cm4gcmFuZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcAppbmRleCA0NjZlYWQyYWU3
NDNhYzlkODlkMzhjNGEwN2RiMDBkNTlkZWI4NzRkLi4wYTgwMjhiZWRmOGI5Y2EzNWM4NzExZjI4
MGViYjgyMDUxMzZjMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0F1dG9maWxsRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
QXV0b2ZpbGxFbGVtZW50cy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQXV0b2ZpbGxFbGVtZW50czo6
QXV0b2ZpbGxFbGVtZW50cyhSZWZQdHI8SFRNTElucHV0RWxlbWVudD4mJiB1c2VybmFtZSwgUmVm
UHRyPEgKIE9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1
dGVBdXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRFbGVtZW50PiBzdGFydCkKIHsKICAgICBp
ZiAoIXN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBGb2N1c0NvbnRyb2xsZXImIGZv
Y3VzQ29udHJvbGxlciA9IHN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVy
KCk7CiAgICAgaWYgKHN0YXJ0LT5pc1Bhc3N3b3JkRmllbGQoKSkgewogICAgICAgICBhdXRvIHBy
ZXZpb3VzRWxlbWVudCA9IHByZXZpb3VzQXV0b2ZpbGxhYmxlRWxlbWVudChzdGFydC5wdHIoKSwg
Zm9jdXNDb250cm9sbGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBPcHRpb25hbDxBdXRvZmlsbEVs
ZW1lbnRzPiBBdXRvZmlsbEVsZW1lbnRzOjpjb21wdXRlQXV0b2ZpbGxFbGVtZW50cyhSZWY8SFRN
TElucAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEF1dG9maWxsRWxlbWVudHM6OmF1dG9maWxs
KFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDIxZTc0NGM4Yzk3OTMxNGI1YjM0YjFh
OGRjYzk2NTI4MGU5NDI3MjcuLjUwZTQ2Yzk1ZjJhOTI2MjQ2MzQ3ZWU5ODk3ZDYxNWRhYTliNTAz
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
QEAgLTIwMywxMiArMjAzLDEyIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6Y2FuUHJlc2VudERhdGFE
ZXRlY3RvcnNVSUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAogICAgIGF1dG8gcmVzdWx0
SW5kaWNlcyA9IFN0cmluZ1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5zcGxpdCgnLycpOwogICAg
IGF1dG8gaW5kZXhJdGVyYXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4oKTsKLSAgICBhdXRvIHJl
c3VsdCA9IFtyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmlu
ZGV4SXRlcmF0b3IpLnZhbHVlT3IoMCldIGNvcmVSZXN1bHRdOworICAgIGF1dG8gcmVzdWx0ID0g
W3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5kZXhJdGVy
YXRvcikudmFsdWVfb3IoMCldIGNvcmVSZXN1bHRdOwogCiAgICAgLy8gSGFuZGxlIHRoZSBjYXNl
IG9mIGEgc2lnbmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRvIGZvbGxvdyB0aGUgcGF0aCBk
b3duIG9uZSBvciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCiAgICAgd2hpbGUgKCsraW5kZXhJdGVy
YXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKSB7CiAgICAgICAgIHJlc3VsdHMgPSAoX19icmlk
Z2UgTlNBcnJheSAqKVBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERSZXN1bHRHZXRT
dWJSZXN1bHRzKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IChfX2JyaWRnZSBERFJlc3VsdFJl
ZilyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmluZGV4SXRl
cmF0b3IpLnZhbHVlT3IoMCldOworICAgICAgICByZXN1bHQgPSAoX19icmlkZ2UgRERSZXN1bHRS
ZWYpcmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCppbmRleEl0
ZXJhdG9yKS52YWx1ZV9vcigwKV07CiAgICAgfQogCiAgICAgcmV0dXJuIFBBTDo6c29mdExpbmtf
RGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlhdGVseVNob3dBY3Rpb25TaGVldEZvclJl
c3VsdChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9E
aWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9u
YXJ5TG9va3VwLm1tCmluZGV4IGE0MGUwZmQ1YTM0NzRiNzQzN2QzZDk4ZjdkN2M2MTQzM2I5ODk4
YmQuLjUwNjJiY2I4ODI1NmJlZWZmOTc2OTUxM2FlNmJjMDJiODliZGUwMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29rdXAubW0KQEAgLTI2Nyw3
ICsyNjcsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkg
Kj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogCiAgICAgaWYgKCFjYW5DcmVhdGVSZXZlYWxJdGVtcygpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50LCB3ZSBqdXN0IG5lZWQg
dG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0g
c2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIE9wdGlvbmFsPHN0
ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VGb3JTZWxlCiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IHN0YXJ0T2ZQYXJhZ3JhcGgo
c2VsZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gcGFyYWdyYXBoRW5kID0gZW5kT2ZQYXJhZ3JhcGgo
c2VsZWN0aW9uRW5kKTsKICAgICBpZiAocGFyYWdyYXBoU3RhcnQuaXNOdWxsKCkgfHwgcGFyYWdy
YXBoRW5kLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsZW5ndGhUb1NlbGVjdGlvblN0YXJ0ID0g
Y2hhcmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShwYXJhZ3JhcGhTdGFydCwgc2VsZWN0aW9u
U3RhcnQpKTsKICAgICBhdXRvIHNlbGVjdGlvbkNoYXJhY3RlckNvdW50ID0gY2hhcmFjdGVyQ291
bnQoKm1ha2VTaW1wbGVSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSk7CkBAIC0y
OTEsNyArMjkxLDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9u
YXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0
aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBI
aXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQpAQCAtMjk5LDIwICsyOTksMjAgQEAgT3B0aW9u
YWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9v
a3VwOjpyYW5nZUF0SGl0VGUKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAK
ICAgICBpZiAoIWNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYXV0byogbm9k
ZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8
ICFub2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogZnJhbWUgPSBub2RlLT5kb2N1bWVu
dCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIERvbid0IGRvIGFueXRo
aW5nIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciBhdCB0aGUgcG9pbnQuCiAgICAgYXV0byBmcmFt
ZVBvaW50ID0gaGl0VGVzdFJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCk7CiAg
ICAgaWYgKCFmcmFtZS0+cmFuZ2VGb3JQb2ludChmcmFtZVBvaW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
cG9zaXRpb24gPSBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVQb2ludCk7CiAg
ICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQpAQCAtMzMwLDcgKzMzMCw3IEBAIE9wdGlvbmFsPHN0
ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6
cmFuZ2VBdEhpdFRlCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2luZyB0byB1c2Ug
dGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4KICAgICAgICAgZnVsbENoYXJhY3Rl
clJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQp
LCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAgICAgICAgaWYgKCFmdWxsQ2hhcmFj
dGVyUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzZWxlY3Rpb25SYW5nZSA9IE5TTWFrZVJh
bmdlKGNoYXJhY3RlckNvdW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5z
dGFydCwgc2VsZWN0aW9uU3RhcnQpKSwKICAgICAgICAgICAgIGNoYXJhY3RlckNvdW50KCptYWtl
U2ltcGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkpKTsKQEAgLTM0Myw3ICsz
NDMsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+
IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogICAgICAgICAvLyBBcyBjb250ZXh0LCB3
ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQgYmVmb3JlIGFuZCBhZnRl
ciB0aGUgcG9pbnQuCiAgICAgICAgIGZ1bGxDaGFyYWN0ZXJSYW5nZSA9IHJhbmdlRXhwYW5kZWRB
cm91bmRQb3NpdGlvbkJ5Q2hhcmFjdGVycyhwb3NpdGlvbiwgMjUwKTsKICAgICAgICAgaWYgKCFm
dWxsQ2hhcmFjdGVyUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzZWxlY3Rpb25SYW5nZSA9
IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogICAgICAgICBoaXRJbmRleCA9IGNoYXJhY3Rl
ckNvdW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydCwgcG9zaXRp
b24pKTsKQEAgLTM1NSwxMyArMzU1LDEzIEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFu
Z2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAg
YXV0byBoaWdobGlnaHRSYW5nZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NSVkl0ZW1JbnN0YW5jZSgp
IGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2VsZWN0ZWRSYW5nZV0pLmdl
dCgpLmhpZ2hsaWdodFJhbmdlOwogCiAgICAgaWYgKGhpZ2hsaWdodFJhbmdlLmxvY2F0aW9uID09
IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1
cm4geyB7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBoaWdobGln
aHRSYW5nZSksIG5pbCB9IH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
ICAgIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKIH0KIApAQCAtNTIzLDEyICs1MjMsMTIgQEAgV0tSZXZlYWxDb250cm9sbGVyIERpY3Rp
b25hcnlMb29rdXA6OmFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChjb25zdCBEaWN0aW9uYXIK
IAogT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0
aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikK
IHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGlj
dGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYp
CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9u
dEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
Rm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQppbmRleCBkYTAyY2IyYzRjZWZmODNhZDQ1NWZm
YjJkZWJjNjYyOTk0YTdlNzZmLi5kNDMxZjcyMmUyNGFhYjNiZDE3NzI4YjQzNThiNzg2OThiNzg2
ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1
dGVDaGFuZ2VzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250
QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCkBAIC00Niw4ICs0Niw4IEBAIGNvbnN0IFN0cmluZyYg
Rm9udENoYW5nZXM6OnBsYXRmb3JtRm9udEZhbWlseU5hbWVGb3JDU1MoKSBjb25zdAogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZm9udE5hbWVGcm9tRGVzY3JpcHRpb247CiAKICAgICBGb250
RGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9p
dGFsaWMudmFsdWVPcihmYWxzZSkpOwotICAgIGRlc2NyaXB0aW9uLnNldFdlaWdodChGb250U2Vs
ZWN0aW9uVmFsdWUgeyBtX2JvbGQudmFsdWVPcihmYWxzZSkgPyA5MDAgOiA1MDAgfSk7CisgICAg
ZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFsaWMudmFsdWVfb3IoZmFsc2UpKTsKKyAgICBk
ZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlIHsgbV9ib2xkLnZhbHVlX29y
KGZhbHNlKSA/IDkwMCA6IDUwMCB9KTsKICAgICBpZiAoYXV0byBmb250ID0gRm9udENhY2hlOjpz
aW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBtX2ZvbnRGYW1pbHkpKQogICAg
ICAgICBmb250TmFtZUZyb21EZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ1RGb250Q29weVBvc3RTY3Jp
cHROYW1lKGZvbnQtPmdldENURm9udCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDVmNWI3NDgwZDU4M2Q4ZDk5NWZkYjViMjVm
ZDBjNjAzNjRmZTU3Li42YmZkZjkwNTE3YTU2OTJiOWJhMDYyNDIzMDlmOTgzMGE2OGJhZjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC05
NzksNyArOTc5LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpjb21wdXRlZEF0dHJp
YnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIH0KIAogICAgICAgICBT
dHJpbmcgZm9udFdlaWdodCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQs
IENTU1Byb3BlcnR5Rm9udFN0eWxlKTsKLSAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRzV2l0
aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9udFdl
aWdodCkudmFsdWVPcigwKSA+PSA3MDApIHsKKyAgICAgICAgaWYgKGZvbnRXZWlnaHQuc3RhcnRz
V2l0aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZm9u
dFdlaWdodCkudmFsdWVfb3IoMCkgPj0gNzAwKSB7CiAgICAgICAgICAgICAvLyA/Pz8gaGFuZGxl
IHdlaWdodCBwcm9wZXJseSB1c2luZyBOU0ZvbnRNYW5hZ2VyCiAgICAgICAgICAgICBQbGF0Zm9y
bUZvbnQgKm9yaWdpbmFsRm9udCA9IGZvbnQ7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KaW5kZXggZGEyOTc5N2I5NTkwODI3MmNmZTU1MzA0ZWE4Y2I4N2E4YjEwMTEyMS4uNjk5
YzQ2ZWMzMThkNDM1NzMwY2E3NDY1NGZhMmIyZTRlMTAwZjM1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQz
MCwxNSArNDMwLDE1IEBAIHN0YXRpYyBPcHRpb25hbDxNYXJrdXBBbmRBcmNoaXZlPiBleHRyYWN0
TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwKIHsKICAgICBhdXRvIGFyY2hp
dmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZlcik7CiAgICAgaWYgKCFh
cmNoaXZlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlID0g
YXJjaGl2ZS0+bWFpblJlc291cmNlKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2UpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHR5cGUgPSBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFjYW5TaG93
TUlNRVR5cGVBc0hUTUwodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTWFya3VwQW5kQXJjaGl2ZSB7
IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBtYWluUmVzb3Vy
Y2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5vbk51bGwoKSwgYXJjaGl2
ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CkBAIC03MjgsNyArNzI4LDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemVG
b3JEaXNwbGF5OwogICAgIGlmICghaXNEaXJlY3RvcnkpCi0gICAgICAgIGZpbGVTaXplRm9yRGlz
cGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgICAgIGZp
bGVTaXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDAp
OwogCiAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRh
Y2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRUeXBlLCBwYXRoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExl
Z2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdh
Y3kubW0KaW5kZXggOGIxMjA4NTMxNmU2ZTBjNDU2YWNjMDEzMDA1OTY3NGZjNDViZjJlZi4uMTYy
M2U5OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBhZDVlMTUyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCkBAIC03Niw3
ICs3Niw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAq
Pj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiB7CiAgICAgYXV0byBzZWxlY3RlZFJh
bmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxlY3RlZFJh
bmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50
LCB3ZSBqdXN0IG5lZWQgdG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KICAgICBhdXRvIHNl
bGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwpAQCAtODUsNyArODUsNyBA
QCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rp
b25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIC8vIEFzIGNvbnRleHQsIHdlIGFyZSBnb2lu
ZyB0byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4KICAgICBhdXRvIHBh
cmFncmFwaFJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9u
U3RhcnQpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAgICBpZiAoIXBhcmFncmFw
aFJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9ICptYWtlU2ltcGxlUmFuZ2Uo
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAKQEAgLTk5LDE2ICs5OSwxNiBAQCBPcHRp
b25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlM
b29rdXA6OnJhbmdlQXRIaXRUZQogewogICAgIGF1dG8qIG5vZGUgPSBoaXRUZXN0UmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8qIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB0aGVyZSBpcyBubyBj
aGFyYWN0ZXIgYXQgdGhlIHBvaW50LgogICAgIGF1dG8gZnJhbWVQb2ludCA9IGhpdFRlc3RSZXN1
bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpOwogICAgIGlmICghZnJhbWUtPnJhbmdl
Rm9yUG9pbnQoZnJhbWVQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvc2l0aW9uID0gZnJhbWUtPnZp
c2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpOwogICAgIGlmIChwb3NpdGlvbi5pc051
bGwoKSkKQEAgLTEyNiwxMSArMTI2LDExIEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFu
Z2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAg
Ly8gQXMgY29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hhcmFjdGVycyBvZiB0ZXh0
IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgogICAgIGF1dG8gZnVsbENoYXJhY3RlclJhbmdl
ID0gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBvc2l0aW9uLCAyNTAp
OwogICAgIGlmICghZnVsbENoYXJhY3RlclJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByYW5nZVRvUG9z
aXRpb24gPSBtYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdlLT5zdGFydCwgcG9zaXRp
b24pOwogICAgIGlmICghcmFuZ2VUb1Bvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTlNSYW5nZSByYW5nZVRv
UGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KCpyYW5nZVRvUG9zaXRpb24pLCAwKTsK
ICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7CkBAIC0xMzksNyArMTM5LDcgQEAgT3B0
aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5
TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICAvLyB0b2tlblJhbmdlIHNvbWV0aW1lcyByZXR1cm5z
IHtOU05vdEZvdW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRldGVybWluZSBhIGdvb2Qgc3Ry
aW5nLgogICAgIC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBjaGVjayBm
b3IgemVybyBsZW5ndGggaGVyZS4KICAgICBpZiAoZXh0cmFjdGVkUmFuZ2UubG9jYXRpb24gPT0g
TlNOb3RGb3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsg
eyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5nZSwgZXh0cmFjdGVkUmFu
Z2UpLCBvcHRpb25zIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IGZmYTMyN2U5
ZWVjZTU1ZGU1N2YyNDRjZThiNWFhMmZlZWQ4YjY0ZGEuLjI4ZWRiNjE0ODYzMDQ3MTA0NzQzMTI1
MWU3NThiODQwZmRiMmY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFn
bWVudD4mJiwgV1RGOjpGdW5jdGlvbjxib29sKAogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3Jl
YXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiBlbnVtIGNsYXNzIE1TT0xpc3RRdWly
a3MgOiBib29sIHsgQ2hlY2tJZk5lZWRlZCwgRGlzYWJsZWQgfTsKLVN0cmluZyBzYW5pdGl6ZU1h
cmt1cChjb25zdCBTdHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJs
ZWQsIE9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFn
bWVudFNhbml0aXplciA9IFdURjo6bnVsbG9wdCk7CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29u
c3QgU3RyaW5nJiwgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RRdWlya3M6OkRpc2FibGVkLCBPcHRp
b25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5p
dGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwogU3RyaW5nIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50
SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9jdW1lbnQmLCBNU09MaXN0UXVp
cmtzLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWFya3VwKTsKIAogV0VCQ09SRV9FWFBPUlQgUmVm
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29uc3QgU2ltcGxlUmFu
Z2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxv
YWRlci5oCmluZGV4IGJmNzMxYzFmOWI1NjJkZDI3ZWM0OWJjMGM3Njg1Y2ZhZTg1NDUwZjYuLmE0
Mjg3Y2RkOTNkNzljZWVlYzE4YTMyZDcxNzc3YWMyMTJmNjNjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYkxvYWRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTG9h
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxldGlvbkhhbmRsZXI7IH0K
ICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgPyBtX2xv
YWRlci0+c3RyaW5nUmVzdWx0KCkgOiBTdHJpbmcoKTsgfQogICAgIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8gbV9s
b2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkgOiBudWxscHRyOyB9Ci0gICAgT3B0aW9uYWw8RXhj
ZXB0aW9uQ29kZT4gZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgPyBtX2xvYWRl
ci0+ZXJyb3JDb2RlKCkgOiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxFeGNlcHRpb25D
b2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5lcnJv
ckNvZGUoKSA6IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkU3RhcnRM
b2FkaW5nKCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA5ZWQyZGU2NTA1
MGQwNjhkMGVjYjk5NDY4YmZkYWQ0MzQwMzA1MDhmLi40NzNjMDMxOTkwZTE3Y2I3Y2VlYjViM2Mz
YWVhYjdiNTEyODMzODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHIKIEZpbGU6OkZpbGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhcmlhbnRz
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJhZyYgcHJvcGVydHlCYWcp
CiAgICAgOiBCbG9iKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJpYW50cyksIHByb3BlcnR5
QmFnKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQotICAgICwgbV9sYXN0TW9kaWZpZWREYXRlT3Zl
cnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlT3IoV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQorICAgICwgbV9sYXN0TW9kaWZpZWRE
YXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlX29yKFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGUuaAppbmRleCAwMWJjODJjYTE4ZDJkNDgwOTE4ODFmYTJiMTBkZTZhOTVhNGMxNzMx
Li45Zjc4MDBhZTU0MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWxlOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE9wdGlvbmFsPGlu
dDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxGaWxl
PiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RNb2RpZmllZCA9IHN0ZDo6
bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0UmVmKCpuZXcgRmlsZShk
ZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250ZXh0LCBwYXRoLCBzcmNVUkwsIHR5cGUsIG5h
bWUsIGxhc3RNb2RpZmllZCkpOwogICAgICAgICBmaWxlLT5zdXNwZW5kSWZOZWVkZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDE0YzhiZDUyMWI2N2IwZTI4ODNi
NTgwODgwOGU1MWFkY2M0ZjQ0NjIuLjA5YjJhMDM4YmExMmRlOWFjYWU5NGY2N2NhMTdiMjc1ZTE0
YWVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtMjI0LDE2ICsy
MjQsMTYgQEAgdm9pZCBGaWxlUmVhZGVyOjpmaXJlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSkKIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+PiBG
aWxlUmVhZGVyOjpyZXN1bHQoKSBjb25zdAogewogICAgIGlmICghbV9sb2FkZXIgfHwgbV9lcnJv
ciB8fCBtX3N0YXRlICE9IERPTkUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1fcmVhZFR5cGUgPT0gRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSBtX2xv
YWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07CiAgICAgfQogICAgIFN0cmluZyByZXN1bHQg
PSBtX2xvYWRlci0+c3RyaW5nUmVzdWx0KCk7CiAgICAgaWYgKHJlc3VsdC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAppbmRleCBmYTRlODY2Y2Fm
ZWUyODk5MjQ3NDM4OGRlYjFjNjBkOGJiNjQ3MDQwLi45YzcyNjBjNDIyNjBhNGI1Y2QxYzcxZWFh
OWEyYmFlYTgwOGZjNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtODMsMTYgKzgzLDE2IEBAIE9wdGlvbmFsPEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXI+IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkCiAgICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNz
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50
aWZpZXJUeXBlPj4gaXRlbUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpdGVtSWRlbnRpZmll
cjsKICAgICBpZiAoIWl0ZW1JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciByZXN1bHQgPSB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RGTW92ZSgq
aXRlbUlkZW50aWZpZXIpIH07CiAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcAppbmRleCA4YzBlMWY1MzBmZDA1NzM3MjAwYmFjYjU5ODBiZDY1Nzgy
YTgyMDMwLi4wYWE4M2I5MzdmZGJkMjljZTVhYTc4OTg3NmUxOTIwYWRiZTVmZGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01
NDQsNyArNTQ0LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldHVwRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXIKICAgICBwYXJhbWV0ZXJzLmlz
QW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OlJUTDsKICAgICBwYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlID0gZG9jdW1lbnQu
dXNlRGFya0FwcGVhcmFuY2UoY29tcHV0ZWRTdHlsZSk7CiAKLSAgICBhdXRvIGRhdGUgPSBwYXJz
ZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudC52YWx1ZSgpKS52YWx1ZU9yKERhdGVDb21wb25lbnRz
KCkpOworICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhlbGVtZW50LnZhbHVl
KCkpLnZhbHVlX29yKERhdGVDb21wb25lbnRzKCkpOwogICAgIHBhcmFtZXRlcnMuaGFzU2Vjb25k
RmllbGQgPSBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSk7CiAgICAgcGFyYW1ldGVycy5oYXNN
aWxsaXNlY29uZEZpZWxkID0gc2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQoZGF0ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMzM3OWI4YmNjMmFlNWZkMmNl
MmJlOTViZDNjZTMyZDY4OWM5OTU2OS4uMzJjM2I0NGZhYzA1NTE4MGJiNDU0MDBmNjBiNjc5OTcz
MDE1OTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0cmluZ1ZpZXcgc3RyaW5n
KQogc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNpbXBsZUNvbG9yVmFsdWUo
U3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKCFpc1ZhbGlkU2ltcGxlQ29sb3Ioc3RyaW5n
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4geyB7IHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbMV0sIHN0cmluZ1sy
XSksIHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbM10sIHN0cmluZ1s0XSksIHRvQVNDSUlIZXhWYWx1
ZShzdHJpbmdbNV0sIHN0cmluZ1s2XSkgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURh
dGEuY3BwCmluZGV4IDg0Zjc5MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5ZmNlNDdiYTE4MzQuLjY4
MDJhMTVmZTY4ZjBlYThlNTk4ODZkZTFkNjEwYzg4OTM5ZDc4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RE9NRm9ybURhdGEuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGF1dG8gRE9NRm9ybURhdGE6OmdldChj
b25zdCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlvbmFsPEZvcm1EYXRhRW50cnlWYWx1ZT4KICAgICAg
ICAgICAgIHJldHVybiBpdGVtLmRhdGE7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBhdXRvIERPTUZvcm1EYXRhOjpnZXRB
bGwoY29uc3QgU3RyaW5nJiBuYW1lKSAtPiBWZWN0b3I8Rm9ybURhdGFFbnRyeVZhbHVlPgpAQCAt
MTU5LDcgKzE1OSw3IEBAIE9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJpbmcsIERPTUZvcm1EYXRh
OjpGb3JtRGF0YUVudHJ5VmFsdWU+PiBET01Gb3JtRGF0YTo6SXRlCiB7CiAgICAgYXV0byYgaXRl
bXMgPSBtX3RhcmdldC0+aXRlbXMoKTsKICAgICBpZiAobV9pbmRleCA+PSBpdGVtcy5zaXplKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvJiBpdGVtID0gaXRlbXNbbV9pbmRleCsrXTsKICAgICByZXR1cm4gbWFr
ZUtleVZhbHVlUGFpcihpdGVtLm5hbWUsIGl0ZW0uZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRv
a2VuTGlzdC5jcHAKaW5kZXggN2FmMjBhM2Y0YmE5NmMyOGExOTA2ZTUwOTJjYjhiOTFkYTRjNjg0
Yi4uOWE0MTBjNzBlNGMwN2UzYjQzNWE3MGY4ZjFjODBlNjM2MWVmY2JmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIEV4Y2VwdGlvbk9yPGJv
b2w+IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcmIHRva2VuLCBPcHRpb25h
bDxib29sPiBmCiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5zKCk7CiAKICAgICBpZiAo
dG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZvcmNlLnZhbHVlT3IoZmFs
c2UpKSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAgdXBkYXRlQXNzb2NpYXRl
ZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaApp
bmRleCBlYzg2ZjcwNDg0Y2UzZTRkZTg1MDZmYTdjNjExMzE1NzFlMTRhNjRlLi40ZDZkMDJjZmRm
M2YxMjQwZGQzYzg2N2NiOWM0OWZhNWRjZWY5YmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCkBAIC02MCwxMiArNjAsMTIg
QEAgT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uPiBEYXRhTGlzdFN1Z2dlc3Rpb246OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gdmFsdWU7CiAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4ge3sgKnZhbHVlLCAqbGFiZWwgfX07CiB9CkBAIC05MiwxNyArOTIsMTcgQEAgT3B0
aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uOjpkZWNvZGUoRGUKIHsKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9u
VHlwZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2YXRpb25U
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxEYXRhTGlzdFN1Z2dlc3Rpb24+PiBzdWdn
ZXN0aW9uczsKICAgICBkZWNvZGVyID4+IHN1Z2dlc3Rpb25zOwogICAgIGlmICghc3VnZ2VzdGlv
bnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRSZWN0PiBlbGVtZW50UmVjdDsKICAgICBkZWNvZGVy
ID4+IGVsZW1lbnRSZWN0OwogICAgIGlmICghZWxlbWVudFJlY3QpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgYWN0aXZhdGlvblR5cGUsICpzdWdnZXN0aW9ucywgKmVsZW1lbnRSZWN0IH19OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxkc1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaAppbmRleCBmYTlhNTQ4MDM4OTcy
OGEwZTg0MWI1M2M5OGFjZDhiN2RhYzI0MDc5Li5jNWEzMTA0NmU0ZmZmNGMwYWVhYTA2MWZkMjNi
ZDFiNzliNmM1NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmll
bGRzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUu
aApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSB7CiAgICAgaW5s
aW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBob3VyMjMoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFob3VyIHx8ICFtZXJpZGllbSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gKCpob3VyICUg
MTIpICsgKCptZXJpZGllbSA9PSBEYXRlVGltZUZpZWxkc1N0YXRlOjpNZXJpZGllbTo6UE0gPyAx
MiA6IDApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRl
eCA3YWVkNjExOTY0ZGIzN2YwNTAzMWQzNWVhZWE4OTkwNTU2MzYyMWU1Li40NGY3ODRiN2ExMjUw
YmVkNzU3Yjk4ODM0NGU1M2I1OTg0MTQ0M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXJpYWxp
emVGb3JtQ29udHJvbFN0YXRlVG8oY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgZm9ybUNvbnRyCiBz
dGF0aWMgaW5saW5lIE9wdGlvbmFsPEZvcm1Db250cm9sU3RhdGU+IGRlc2VyaWFsaXplRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5k
ZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazxzaXplX3Q+KHN0YXRlVmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGF1dG8gc2l6ZSA9IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oc3RhdGVWZWN0b3JbaW5kZXgrK10pLnZhbHVlX29y
KDApOwogICAgIGlmIChpbmRleCArIHNpemUgPiBzdGF0ZVZlY3Rvci5zaXplKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
VmVjdG9yPFN0cmluZz4gc3VidmVjdG9yOwogICAgIHN1YnZlY3Rvci5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpAQCAt
MTk3LDcgKzE5Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4gU2F2ZWRGb3Jt
U3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiB7CiAgICAgaWYgKGluZGV4
ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0
byBpdGVtQ291bnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KHN0
YXRlVmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOworICAgIGF1dG8gaXRlbUNvdW50ID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PihzdGF0ZVZlY3RvcltpbmRleCsr
XSkudmFsdWVfb3IoMCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVlPFNhdmVkRm9ybVN0YXRl
PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCA3Nzdj
NGU3ZjViZThiNDRmNTJmMGQ0Mzg4OGFjNjI0NDRhOTdkMTFiLi5jYzY1ZWFjOGJiMjViYTkxMWQ5
Mzc1MmNiOTMxZDE3NTdjNjhmYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgSFRNTEFsbENvbGxlY3Rpb246OkhU
TUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdAogT3B0
aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQdHI8RWxlbWVudD4+PiBI
VE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVtcyhjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lT3JJbmRleCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9ySW5kZXguaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IEpTQzo6cGFyc2VJbmRleCgqbmFtZU9ySW5kZXgu
aW1wbCgpKSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwg
UmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IGl0ZW0oaW5kZXgudmFsdWUoKSkg
fSB9OwpAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9uOjpuYQogICAgIGF1dG8g
bmFtZWRJdGVtcyA9IHRoaXMtPm5hbWVkSXRlbXMobmFtZSk7CiAKICAgICBpZiAobmFtZWRJdGVt
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAg
IHJldHVybiBWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4g
eyBSZWZQdHI8RWxlbWVudD4geyBXVEZNb3ZlKG5hbWVkSXRlbXNbMF0pIH0gfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBlZjA1NzU4NGE4NWI3MDll
MWM5YzFhNDg3ZTdkYmNhNjIxNDhkM2VjLi5hM2Q3NjU3ZDY0NDdkZDEzMjViNjg0MmM0NGIyOWJh
YzRkMmVmNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApA
QCAtNDA1LDQ4ICs0MDUsNDggQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IEhU
TUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW4KICAgICBpZiAoIXBh
Z2UgfHwgcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQogICAgICAgICB8fCAhZG9jdW1l
bnQoKS5zZXR0aW5ncygpLnByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCgpCiAgICAgICAg
IHx8ICFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIGhhc0F0dHJpYnV0aW9uU291cmNlSURBdHRyID0gaGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGlvbnNvdXJjZWlkQXR0cik7CiAgICAgYXV0byBoYXNB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uQXR0ciA9IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6
YXRpb24oYXR0cmlidXRpb25kZXN0aW5hdGlvbkF0dHIpOwogICAgIGlmICghaGFzQXR0cmlidXRp
b25Tb3VyY2VJREF0dHIgJiYgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZUlEQXR0ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oYXR0cmlidXRpb25zb3VyY2VpZEF0dHIpOwogICAgIGF1dG8gYXR0cmlidXRpb25E
ZXN0aW5hdGlvbkF0dHIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF0dHJpYnV0
aW9uZGVzdGluYXRpb25BdHRyKTsKIAogICAgIGlmICghaGFzQXR0cmlidXRpb25Tb3VyY2VJREF0
dHIgfHwgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyIHx8IGF0dHJpYnV0aW9uU291cmNl
SURBdHRyLmlzRW1wdHkoKSB8fCBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQXR0ci5pc0VtcHR5KCkp
IHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpP
dGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQm90aCBhdHRyaWJ1dGlvbnNvdXJjZWlkIGFu
ZCBhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uIG5lZWQgdG8gYmUgc2V0IGZvciBQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50IHRvIHdvcmsuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBSZWZQdHI8RnJhbWU+
IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIlByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnQgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIG1haW4gZnJhbWUuIl9zKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAgICAgCiAgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZUlEID0gcGFyc2VIVE1MTm9u
TmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0aW9uU291cmNlSURBdHRyKTsKICAgICBpZiAoIWF0dHJp
YnV0aW9uU291cmNlSUQpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiYXR0cmlidXRpb25z
b3VyY2VpZCBpcyBub3QgYSBub24tbmVnYXRpdmUgaW50ZWdlciB3aGljaCBpcyByZXF1aXJlZCBm
b3IgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4iX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAKICAgICBp
ZiAoYXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgpID4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZUlEOjpNYXhFbnRyb3B5KSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWFrZVN0
cmluZygiYXR0cmlidXRpb25zb3VyY2VpZCBtdXN0IGhhdmUgYSBub24tbmVnYXRpdmUgdmFsdWUg
bGVzcyB0aGFuIG9yIGVxdWFsIHRvICIsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJ
RDo6TWF4RW50cm9weSwgIiBmb3IgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4iKSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgVVJMIGRlc3RpbmF0aW9uVVJMIHsgVVJMKCksIGF0dHJpYnV0aW9uRGVzdGlu
YXRpb25BdHRyIH07CiAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5pc1ZhbGlkKCkgfHwgIWRlc3Rp
bmF0aW9uVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBkb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgdG8g
YSB2YWxpZCBIVFRQLWZhbWlseSBVUkwuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBSZWdpc3RyYWJs
ZURvbWFpbiBkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1lbnQoKS51cmwoKSB9Owog
ICAgIGlmIChkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoZGVzdGluYXRpb25VUkwp
KSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9uZGVzdGluYXRpb24gY2Fu
IG5vdCBiZSB0aGUgc2FtZSBzaXRlIGFzIHRoZSBjdXJyZW50IHdlYnNpdGUuIl9zKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkpLCBTb3VyY2VT
aXRlKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0
ZShkZXN0aW5hdGlvblVSTCkgfTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBPcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbgogICAgICAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgYXR0cmlidXRpb25Tb3VyY2VOb25jZUF0dHIg
fTsKICAgICAgICAgaWYgKCFlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAg
IGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9uc291cmNlbm9uY2Ugd2FzIG5vdCB2YWxpZC4i
X3MpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuc2V0RXBoZW1lcmFsU291cmNlTm9uY2UoV1RGTW92ZShlcGhlbWVyYWxOb25jZSkpOwogICAg
IH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGlj
ayhFdmVudCYgZXZlbnQpCiAgICAgaWYgKHN5c3RlbVByZXZpZXdJbmZvLmlzUHJldmlldykgewog
ICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1lbnRJZGVudGlmaWVyID0gZG9j
dW1lbnQoKS5pZGVudGlmaWVyRm9yRWxlbWVudCgqdGhpcyk7CiAgICAgICAgIHN5c3RlbVByZXZp
ZXdJbmZvLmVsZW1lbnQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQoKS5pZGVudGlmaWVy
KCk7Ci0gICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIg
PSBkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKKyAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdlSWRl
bnRpZmllciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3Io
UGFnZUlkZW50aWZpZXIgeyB9KTsKICAgICAgICAgaWYgKGF1dG8qIGNoaWxkID0gZmlyc3RFbGVt
ZW50Q2hpbGQoKSkKICAgICAgICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLnByZXZpZXdSZWN0ID0g
Y2hpbGQtPmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogICAgIH0KQEAgLTYzNyw3ICs2MzcsNyBA
QCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBj
b25zdAogUmVmZXJyZXJQb2xpY3kgSFRNTEFuY2hvckVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkg
Y29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0
cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVy
UG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVy
cmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5
U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXgg
MzAwZTE4MGQ3NjRhNDRjYWJkZjI1MWM1MjRlMWU0ZjYwNDczMGI0MS4uYWQzZTExODA5NTJjMzVl
MzdhMmIxZGRmMWI3OGNhOTg4MjkwYTQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSFRNTEFyZWFFbGVtZW50Ojppc0Zv
Y3VzYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmlzVmlzaWJsZVdpdGhv
dXRSZXNvbHZpbmdGdWxsU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0
dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDAp
ID49IDA7CisgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0
bHkoKS52YWx1ZV9vcigwKSA+PSAwOwogfQogICAgIAogdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OnNl
dEZvY3VzKGJvb2wgc2hvdWxkQmVGb2N1c2VkLCBGb2N1c1Zpc2liaWxpdHkgdmlzaWJpbGl0eSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggYzAyMTE2Zjlm
ODBkYjI5MTIzOTNiYzkyMmFjZTZiYTk0Y2YwZDIwYy4uYjgzMmI2MDI3ZDU1MDRiZmQwNGQ3OTRl
OWQ5NDIzOTQwOWI5MTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKQEAgLTI0NSwyMyArMjQ1LDIzIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAg
ICAgICAgaWYgKG1fY29udGV4dC0+aXMyZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzMmRUeXBl
KGNvbnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEPiB7ICZkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0g
fTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2NvbnRleHQtPmlzQml0bWFwUmVuZGVyZXIo
KSkgewogICAgICAgICAgICAgaWYgKCFpc0JpdG1hcFJlbmRlcmVyVHlwZShjb250ZXh0SWQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6
bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250
ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+IHsgUmVmUHRyPEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dD4geyAmZG93
bmNhc3Q8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSB9IH07CiAgICAg
ICAgIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNXZWJH
TCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViR0xUeXBlKGNvbnRleHRJZCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0
IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
c3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICBhdXRvIHZlcnNpb24gPSB0b1dlYkdMVmVyc2lv
bihjb250ZXh0SWQpOwogICAgICAgICAgICAgaWYgKCh2ZXJzaW9uID09IFdlYkdMVmVyc2lvbjo6
V2ViR0wxKSAhPSBtX2NvbnRleHQtPmlzV2ViR0wxKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07
CiAgICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQ
dHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ+KCptX2NvbnRleHQpIH0gfTsKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtMjc0LDEzICsyNzQs
MTMgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KICNpZiBFTkFCTEUoV0VCR1BVKQogICAgICAg
ICBpZiAobV9jb250ZXh0LT5pc1dlYkdQVSgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViR1BV
VHlwZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJp
bmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+
IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAg
fQogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICB9
CiAKICAgICBpZiAoaXMyZFR5cGUoY29udGV4dElkKSkgewpAQCAtMjkwLDcgKzI5MCw3IEBAIEV4
Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6
Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29u
dGV4dDJkKGNvbnRleHRJZCwgV1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7IGNvbnRleHQgfSB9Owog
ICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmlu
Z0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAg
ICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dEJpdG1hcFJlbmRlcmVyKGNvbnRleHRJ
ZCwgV1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9w
dCB9OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9OwogICAgIH0KIApAQCAt
MzEzLDcgKzMxMyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBj
b250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJzaW9uKGNvbnRleHRJZCksIFdU
Rk1vdmUoYXR0cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9
OwogCiAgICAgICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCpjb250ZXh0KSkKICAg
ICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNv
bnRleHQpIH0gfTsKQEAgLTMyOCwxMiArMzI4LDEyIEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJl
bmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xv
CiAgICAgaWYgKGlzV2ViR1BVVHlwZShjb250ZXh0SWQpKSB7CiAgICAgICAgIGF1dG8gY29udGV4
dCA9IGNyZWF0ZUNvbnRleHRXZWJHUFUoY29udGV4dElkKTsKICAgICAgICAgaWYgKCFjb250ZXh0
KQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpu
dWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRl
eHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgY29udGV4dCB9IH07CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxv
cHQgfTsKKyAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxv
cHQgfTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6Omdl
dENvbnRleHQoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSFRN
TENhbnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgT3B0aW9uYWw8RmxvYXRSZWN0PiYgcmVjdCkK
ICAgICBjbGVhckNvcGllZEltYWdlKCk7CiAgICAgCiAgICAgaWYgKCFyZWN0KSB7Ci0gICAgICAg
IG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbm90
aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03MDksMTEgKzcwOSwxMSBAQCBzdGF0aWMgU3RyaW5nIHRvRW5jb2RpbmdN
aW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNWYWx1ZSBxdWFsaXR5VmFsdWUpCiB7CiAgICAgaWYg
KCFxdWFsaXR5VmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBxdWFsaXR5TnVtYmVy
ID0gcXVhbGl0eVZhbHVlLmFzTnVtYmVyKCk7CiAgICAgaWYgKHF1YWxpdHlOdW1iZXIgPCAwIHx8
IHF1YWxpdHlOdW1iZXIgPiAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHF1YWxpdHlOdW1iZXI7CiB9CkBA
IC05NTAsNyArOTUwLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoKSBjb25zdAogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gc2hvdWxkQWNjZWxlcmF0ZShz
aXplKCkpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkOwogICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgc2V0dGluZyBmb3IgRGlzcGxheUxp
c3QgZHJhd2luZyBvbiBjYW52YXMuCi0gICAgYXV0byB1c2VEaXNwbGF5TGlzdCA9IG1fdXNlc0Rp
c3BsYXlMaXN0RHJhd2luZy52YWx1ZU9yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObzsKKyAgICBhdXRvIHVzZURpc3BsYXlMaXN0ID0gbV91c2VzRGlzcGxh
eUxpc3REcmF3aW5nLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObzsKIAogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsm
XSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5j
cHAKaW5kZXggMDBiZjY3YWVkNTY1YWM5MGY0NmQ4ZmE3MzhkZjdhNTI5Mzc2MGRlNi4uYWJmNDQw
ZmFmY2FmZDAwZjdjMjZmM2E1YjFkM2Q2OGVlYjdiMzg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERvY3VtZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFJlZjxEb2N1bWVudFBhcnNlcj4gSFRN
TERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8V2luZG93
UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4+PiBIVE1MRG9j
dW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChuYW1l
LmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5pbXBsKCkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRz
KCpuYW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlvbiA9IGRvY3VtZW50TmFt
ZWRJdGVtcyhuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggMDJiNTc5
ODhlNDdkYjQ5ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uMDEzZmFmNTMzNmY0YmJmYWVlYWNl
NmU1OTMwMTJmZjlkM2I2ODRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAg
LTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YQogICAgICAgICBpZiAoYXV0
byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAg
ICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTYyNiwxMCArNjI2LDEwIEBAIHZvaWQgSFRNTEVs
ZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRBdHRyaWJ1dGVzVG9TdHls
ZShNdXRhYmxlU3R5CiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuYXNwZWN0UmF0aW9P
ZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZG91YmxlIHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVPcigtMSk7CisgICAgZG91
YmxlIHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVfb3IoLTEpOwogICAgIGlmICh3
aWR0aCA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgaGVpZ2h0ID0gcGFyc2VWYWxp
ZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
aGVpZ2h0QXR0cikpLnZhbHVlT3IoLTEpOworICAgIGRvdWJsZSBoZWlnaHQgPSBwYXJzZVZhbGlk
SFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbiho
ZWlnaHRBdHRyKSkudmFsdWVfb3IoLTEpOwogICAgIGlmIChoZWlnaHQgPCAwKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50
OF90Pj4gcGFyc2VMZWdhY3lDb2xvclZhbHVlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIC8v
IEFuIGVtcHR5IHN0cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuCiAgICAgaWYgKHN0cmluZy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBzdHJpbmcgPSBzdHJpbmcuc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdNYXRjaGVkQ2hhcmFjdGVycyhpc0hUTUxTcGFjZTxVQ2hhcj4pOwogICAgIGlmIChzdHJpbmcu
aXNFbXB0eSgpKQpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVp
bnQ4X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiAKICAgICAv
LyAidHJhbnNwYXJlbnQiIGRvZXNuJ3QgYXBwbHkgYSBjb2xvciBlaXRoZXIuCiAgICAgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRyYW5zcGFyZW50IikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoYXV0byBuYW1lZENvbG9yID0gQ1NTUGFyc2VyOjpwYXJzZU5hbWVkQ29sb3Ioc3Ry
aW5nKSkKICAgICAgICAgcmV0dXJuIG5hbWVkQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b250RWxlbWVudC5jcHAKaW5kZXggMDkyZGNkMTkzYmU4MDM4OWQ3ZDE5ZGU0MzJjMDllYTE0MjUx
YjhmMC4uNGViNjUxOTEwZTQ2OGRjN2Q2ZWVjYWYxOTUzZTE0NjBkMDZmNTk0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRp
YyBib29sIHBhcnNlRm9udFNpemUoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCBpbnQmCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFN0ZXAg
OAotICAgIGludCB2YWx1ZSA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0cykudmFsdWVPcigwKTsK
KyAgICBpbnQgdmFsdWUgPSBwYXJzZUludGVnZXI8aW50PihkaWdpdHMpLnZhbHVlX29yKDApOwog
CiAgICAgLy8gU3RlcCA5CiAgICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVQbHVzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCBh
ZjFjZDBlYTRlMWY5YzQ3NGJlZjgxY2U5NzM2OTM4Y2MyNzE0MjQwLi5mMzUzZTlhOWJlZjgxNzAy
OTQ1ZGM3NTgwNzFiMWU4MWJlMjlmYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtNTksNyArNTksNyBAQCBPcHRpb25h
bDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEZv
cm1Db250cm9sc0NvbGxlYwogICAgIGF1dG8gbmFtZWRJdGVtcyA9IHRoaXMtPm5hbWVkSXRlbXMo
bmFtZSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG5hbWVk
SXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxSYWRpb05v
ZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IFdURk1vdmUobmFt
ZWRJdGVtc1swXSkgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
aW5kZXggNTU1ZjE1NDFjMDA4YWI2ZjFhYThmYzRjZWQ3NDJlZjBlZjUwZDFmYS4uMWU2ZWUxMDAx
YjgwYzkzZDcxMzZhNzUzZWQ1NzQ1YmJmOWE0OGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVm
UHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUVsZW1lbnQ6Om5h
bWVkCiAgICAgYXV0byBuYW1lZEl0ZW1zID0gbmFtZWRFbGVtZW50cyhuYW1lKTsKIAogICAgIGlm
IChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0g
MSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8
RWxlbWVudD4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgV1RGTW92ZShuYW1lZEl0ZW1zWzBdKSB9IH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggNzk4MjE5
NDllNWNhZmQxM2Q1N2U1NjE5OWRhMWFhNGJiNGQ2NDA3Zi4uMGM1YmQ3ZTRkZDgzMzkzMmVjNzcw
MjgwYWQyNDgxNzgzMzBkZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAg
ICAgICBpZiAoIWludmFsaWRUb2tlbnMuaXNOdWxsKCkpCiAgICAgICAgICAgICBkb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCAiRXJyb3Igd2hpbGUgcGFyc2luZyB0aGUgJ3NhbmRib3gnIGF0dHJpYnV0ZTogIiArIGlu
dmFsaWRUb2tlbnMpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhbGxvd0F0dHIgfHwgbmFtZSA9
PSBhbGxvd2Z1bGxzY3JlZW5BdHRyIHx8IG5hbWUgPT0gd2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0
cikgewotICAgICAgICBtX2ZlYXR1cmVQb2xpY3kgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
ZmVhdHVyZVBvbGljeSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbG9h
ZGluZ0F0dHIpIHsKICAgICAgICAgLy8gQWxsb3cgbG9hZGluZz1lYWdlciB0byBsb2FkIHRoZSBm
cmFtZSBpbW1lZGlhdGVseSBpZiB0aGUgbGF6eSBsb2FkIHdhcyBzdGFydGVkLCBidXQKICAgICAg
ICAgLy8gZG8gbm90IGFsbG93IHRoZSByZXZlcnNlIHNpdHVhdGlvbiBzaW5jZSB0aGUgZWFnZXIg
bG9hZCBpcyBhbHJlYWR5IHN0YXJ0ZWQuCkBAIC0xNDMsNyArMTQzLDcgQEAgUmVmZXJyZXJQb2xp
Y3kgSFRNTElGcmFtZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKICAgICBpZiAobV9s
YXp5TG9hZEZyYW1lT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybiBtX2xhenlMb2FkRnJhbWVPYnNl
cnZlci0+cmVmZXJyZXJQb2xpY3koKTsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJl
ZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZl
cnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5
QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFs
dWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VS
ZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9s
aWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSku
dmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAppbmRleCAyYWU3ZjE3ZDA1MjYzYzY3MjhlMTIyYmE0ZjgwYjM1M2ZiZjM5NjRh
Li43Zjg3ODhlODc0YWUxZTBhODNlMzAzNGIzMzMwMzdhZWM5ZjBmMDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI0Nyw4ICsyNDcsOCBAQCB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cgogICAgIEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKG5hbWUs
IG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIAogICAgIGlmIChuYW1lID09IHJlZmVycmVy
cG9saWN5QXR0ciAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCkucmVmZXJyZXJQb2xpY3lBdHRyaWJ1
dGVFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBvbGRSZWZlcnJlclBvbGljeSA9IHBhcnNlUmVm
ZXJyZXJQb2xpY3kob2xkVmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGlj
eUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwotICAgICAg
ICBhdXRvIG5ld1JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShuZXdWYWx1ZSwg
UmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZU9yKFJl
ZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIGF1dG8gb2xkUmVmZXJyZXJQb2xp
Y3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KG9sZFZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6
UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0
cmluZyk7CisgICAgICAgIGF1dG8gbmV3UmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9s
aWN5KG5ld1ZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1
dGUpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CiAgICAgICAgIGlmIChv
bGRSZWZlcnJlclBvbGljeSAhPSBuZXdSZWZlcnJlclBvbGljeSkKICAgICAgICAgICAgIG1faW1h
Z2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKFJlbGV2YW50
TXV0YXRpb246Olllcyk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNyb3Nzb3JpZ2luQXR0cikg
ewpAQCAtNzk1LDcgKzc5NSw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50OjpyZWZlcnJlclBv
bGljeUZvckJpbmRpbmdzKCkgY29uc3QKIFJlZmVycmVyUG9saWN5IEhUTUxJbWFnZUVsZW1lbnQ6
OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygp
LnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VS
ZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9s
aWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSku
dmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFy
c2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVy
cG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0
ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCBiM2MyMDkzZjA4YzBhYjI2MzBiOWY1ZTJhYjgwNjM5N2Y1ZjBh
MmY5Li5kOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkwMzdlNTI1NzM4NDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCBPcHRp
b25hbDxkb3VibGU+IEhUTUxJbnB1dEVsZW1lbnQ6Omxpc3RPcHRpb25WYWx1ZUFzRG91YmxlKGNv
bnN0IEhUTUxPcHRpb25FbGVtZQogewogICAgIGF1dG8gb3B0aW9uVmFsdWUgPSBvcHRpb25FbGVt
ZW50LnZhbHVlKCk7CiAgICAgaWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9uVmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNhbml0aXplVmFsdWUob3B0aW9u
VmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCBl
ZDAxMmM3MTgyZmUzMzViM2Q5MTc0NmM2ZGU2YTk1OGE1OWY3MzEzLi5mMGUwMmM5NzFkYzM1OTg3
YTZiYzRjYTJjMzIyODdkM2ExNzQ5YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuY3BwCkBAIC02NzcsNyArNjc3LDcgQEAgU3RyaW5nIEhUTUxMaW5rRWxlbWVudDo6cmVm
ZXJyZXJQb2xpY3lGb3JCaW5kaW5ncygpIGNvbnN0CiBSZWZlcnJlclBvbGljeSBIVE1MTGlua0Vs
ZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0
aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4g
cGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVy
cmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJp
YnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1
cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJl
ZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0
dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1
cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjMDdhMmM2YzE2YmE5ZDRiYTY5MWEzZjU4YTIyNjY3
ZGUwNzg2NjQxLi5iZDE5YmJiYTEwN2QyZGE3Njk2YjM1MDZkYjNjMWQyYWY2OTEzYWI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY2NTAsNyArNjY1MCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIoKSBXVEZfSUdOT1JF
U19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAKICAgICBtX3BsYXllciA9IE1lZGlhUGxheWVyOjpj
cmVhdGUoKnRoaXMpOwogICAgIG1fcGxheWVyLT5zZXRCdWZmZXJpbmdQb2xpY3kobV9idWZmZXJp
bmdQb2xpY3kpOwotICAgIG1fcGxheWVyLT5zZXRQcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKG1f
b3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2RlLnZhbHVlT3IocHJlZmVycmVkRHluYW1pY1JhbmdlTW9k
ZShkb2N1bWVudCgpLnZpZXcoKSkpKTsKKyAgICBtX3BsYXllci0+c2V0UHJlZmVycmVkRHluYW1p
Y1JhbmdlTW9kZShtX292ZXJyaWRlRHluYW1pY1JhbmdlTW9kZS52YWx1ZV9vcihwcmVmZXJyZWRE
eW5hbWljUmFuZ2VNb2RlKGRvY3VtZW50KCkudmlldygpKSkpOwogICAgIG1fcGxheWVyLT5zZXRN
dXRlZChlZmZlY3RpdmVNdXRlZCgpKTsKICAgICBzY2hlZHVsZVBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyVXBkYXRlKCk7CiAKQEAgLTcyMTQsNyArNzIxNCw3IEBAIFJlZlB0cjxWaWRlb1BsYXliYWNr
UXVhbGl0eT4gSFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFja1F1YWxpdHkoKQogICAg
IFJlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdyA9IGRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAg
ICAgZG91YmxlIHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/IGRvbVdpbmRvdy0+bm93VGltZXN0YW1w
KCkubWlsbGlzZWNvbmRzKCkgOiAwOwogCi0gICAgYXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBt
X3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBXVEY6Om51bGxvcHQ7Cisg
ICAgYXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtZXRyaWNzKQogICAgICAgICBy
ZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3RhbXAsIHsgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBjOTRhYTc5YzZiOWFhNzAx
ZDI5M2RiZjdhOTk3ZTBlOTVkODBmYjAwLi5hM2MwNzIwYTY3MTAyOGVmNzNmODFiODE4Mjg2MWEy
MmU3NDhhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCkBAIC0x
MTEsNyArMTExLDcgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9CiAKICAgICBpZiAo
bmFtZSA9PSBjb250ZW50QXR0cikgewotICAgICAgICBtX2NvbnRlbnRDb2xvciA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9jb250ZW50Q29sb3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBy
b2Nlc3MoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
TGlzdEVsZW1lbnQuY3BwCmluZGV4IGJlOGNiNWE5OGY4N2JhMzFiODY2MjNiNmNkYjAyNjhlM2Mw
ZWM4MmMuLjdjOGI5MzU0MTFlMGM5OTUwYzYzOGJjNGZjZGI1MjI5NjU4MTBjYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogLy8g
TWF5YmUgd2Ugc2hvdWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBmaWxlIGZvciBFeHBlY3Rl
ZCBhbmQgZ2l2ZSBpdCBhIGJldHRlciBuYW1lLgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgRT4gaW5saW5lIE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhwZWN0ZWQ8VCwgRT4mJiBl
eHBlY3RlZCkKIHsKLSAgICByZXR1cm4gZXhwZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4
cGVjdGVkLnZhbHVlKCkpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gZXhwZWN0ZWQgPyBP
cHRpb25hbDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IHN0ZDo6bnVsbG9wdDsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT0xpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQu
aAppbmRleCBmMzA1Y2E1OWI5OTYxZDZlYzkyZDYyNGExYTg4NjY0ODhmMDNjYmVkLi4yZjRjMzk3
MjBlY2U4NGFmMmMyOGFiOTcwYjY3ZDNmY2VhMWNiNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPTGlzdEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxIVE1MT0xpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUmVmPEhU
TUxPTGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIGludCBzdGFydEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydC52YWx1
ZU9yKDEpOyB9CisgICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0LnZhbHVlX29yKDEpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGFydEZvckJp
bmRpbmdzKGludCk7CiAKICAgICAvLyBGSVhNRTogVGhlIHJlYXNvbiBzdGFydCgpIGRvZXMgbm90
IHRyaWdnZXIgbGF5b3V0IGlzIGJlY2F1c2UgaXQgaXMgY2FsbGVkCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKIAogICAgIGludCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQgPyBtX3N0
YXJ0LnZhbHVlKCkgOiAobV9pc1JldmVyc2VkID8gaXRlbUNvdW50KCkgOiAxKTsgfQogICAgIGJv
b2wgaXNSZXZlcnNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXZlcnNlZDsgfQotICAgIHZvaWQg
aXRlbUNvdW50Q2hhbmdlZCgpIHsgbV9pdGVtQ291bnQgPSBXVEY6Om51bGxvcHQ7IH0KKyAgICB2
b2lkIGl0ZW1Db3VudENoYW5nZWQoKSB7IG1faXRlbUNvdW50ID0gc3RkOjpudWxsb3B0OyB9CiAK
IHByaXZhdGU6CiAgICAgSFRNTE9MaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXgg
YmJiYzg0MDJiMmU1NTUwZDRhZGFlMWU2YzQ4MTQ3NTI2NTIzODlmZi4uNDlmZDI4ZDBkOTIyYjgx
NTZlNGExOWRmNDliYWEyMTJkMDg5Yzg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBTdHJpbmcgSFRNTFNjcmlwdEVsZW1l
bnQ6OnJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBjb25zdAogUmVmZXJyZXJQb2xpY3kgSFRN
TFNjcmlwdEVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBv
bGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAg
ICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJl
clBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsK
ICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU5MWZmNGYzODg2NzBkYjkzMjhj
MzYzYmUxZGZiNzE3MDUyNzJmYmUuLjM0ZGFlYjhkYzQzZmQyZjYzZjAwODQyYzdhODczY2FiZjc5
MGQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00
NjksNyArNDY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNldExl
bmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAgICBpZiAoZGlmZiA8IDApIHsgLy8gQWRkIGR1
bW15IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFk
ZChIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLnB0cigpLCBXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhZGQoSFRNTE9wdGlvbkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCgpKS5wdHIoKSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfSB3aGlsZSAoKytkaWZmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxl
bWVudC5jcHAKaW5kZXggYTJjMGI5MjdlNGRiZjMxZjgxYzRjMDhiNmQzOTQ5YWQ4MGRiMDNiMC4u
YWM0MjRkZTZkZjM1YWJjMzMxZDdhNTE4ZjRmMTNjMjM4ODEzOTk4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhU
TUxTb3VyY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaQogICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSk7CiAgICAgaWYgKG5hbWUgPT0gc3Jjc2V0QXR0ciB8fCBuYW1lID09IHNpemVzQXR0ciB8
fCBuYW1lID09IG1lZGlhQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7CiAgICAgICAgIGlmIChu
YW1lID09IG1lZGlhQXR0cikKLSAgICAgICAgICAgIG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1
dGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2NhY2hlZFBhcnNlZE1lZGlhQXR0cmli
dXRlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFy
ZW50Tm9kZSgpKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2FsbFNvdXJjZXNDaGFuZ2VkKQogICAg
ICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PigqcGFyZW50KS5zb3VyY2VzQ2hh
bmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5k
ZXggZjM2MjRhY2JmMzYzOWFhM2QyZGY0MjdjYWYyYzBjZjM5ZmJmMjk1ZC4uNWM2ZjhlYjBlZjA3
NTZiZTAyYzdjZWExM2I1ZTgxYzI4Zjg2ZmZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudCYKICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRvbid0
IG5lZWQgdG8gdGFrZSBhY2NvdW50IG9mIHRoZQogICAgIC8vIHNlbGVjdGlvbiBsZW5ndGguIFRo
ZSBzZWxlY3Rpb24gaXMgdGhlIHNvdXJjZSBvZiB0ZXh0IGRyYWctYW5kLWRyb3AgaW4KICAgICAv
LyB0aGF0IGNhc2UsIGFuZCBub3RoaW5nIGluIHRoZSB0ZXh0IGZpZWxkIHdpbGwgYmUgcmVtb3Zl
ZC4KLSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZm9jdXNlZCgpID8gZG9jdW1lbnQoKS5mcmFt
ZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpIDogV1RGOjpu
dWxsb3B0OworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBmb2N1c2VkKCkgPyBkb2N1bWVudCgp
LmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkgOiBz
dGQ6Om51bGxvcHQ7CiAgICAgdW5zaWduZWQgc2VsZWN0aW9uTGVuZ3RoID0gc2VsZWN0aW9uUmFu
Z2UgPyBjb21wdXRlTGVuZ3RoRm9yU3VibWlzc2lvbihwbGFpblRleHQoKnNlbGVjdGlvblJhbmdl
KSkgOiAwOwogICAgIEFTU0VSVChjdXJyZW50TGVuZ3RoID49IHNlbGVjdGlvbkxlbmd0aCk7CiAg
ICAgdW5zaWduZWQgYmFzZUxlbmd0aCA9IGN1cnJlbnRMZW5ndGggLSBzZWxlY3Rpb25MZW5ndGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCmluZGV4IDViMjMxNTVlMGFlOGVlYWE5NTQxZmRlYTU5MTQ1MTFkZTliYmYzMWUuLjRjYTAz
ZGI4NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1ZmM3OWEyMTNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00NTUsNyArNDU1
LDcgQEAgc3RhdGljIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9yUmFuZ2UoTm9kZSogbm9k
ZSwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlKiYgY28KIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIXJl
bmRlcmVyKCkgfHwgIWlzVGV4dEZpZWxkKCkgfHwgIWhhc0NhY2hlZFNlbGVjdGlvbigpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX2NhY2hlZFNlbGVjdGlvblN0YXJ0OwogICAgIHVuc2ln
bmVkIGVuZCA9IG1fY2FjaGVkU2VsZWN0aW9uRW5kOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkg
Y29uc3QKICAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKICAgICBhdXRvIGlubmVyVGV4dCA9IGlu
bmVyVGV4dEVsZW1lbnQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaW5u
ZXJUZXh0LT5maXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKmlu
bmVyVGV4dCwgMCB9LCB7ICppbm5lclRleHQsIDAgfSB9OwpAQCAtNDg5LDcgKzQ4OSw3IEBAIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9u
KCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIXN0YXJ0Tm9kZSB8fCAhZW5kTm9kZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKnN0YXJ0Tm9kZSwgc3RhcnQgfSwgeyAqZW5kTm9k
ZSwgZW5kIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggOGYwM2M2
ZmZjNzg2ZmI3MDUzNDJhZTU2NTRiYWQ1MjQ4ODU5NzcwMS4uMGI0YjE4MDY2NDYwNDQzOTI4MTFl
OGQxMGYxNzNkZmVkOTg5ODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogewogICAgIFdURjo6c3dpdGNo
T24oc291cmNlLAogICAgICAgICBbJl0gKGF1dG8mIHNwZWNpZmljU291cmNlKSB7Ci0gICAgICAg
ICAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNwZWNpZmljU291cmNl
LCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocHJvbWlzZSkpOworICAg
ICAgICAgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBzcGVjaWZpY1Nv
dXJjZSwgV1RGTW92ZShvcHRpb25zKSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHByb21pc2UpKTsK
ICAgICAgICAgfQogICAgICk7CiB9CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPEludFJlY3Q+IGNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9ybWF0dGluZyhJbnRTaXpl
IGlucHV0U2kKICAgICAvLyAgICBPdGhlcndpc2UgbGV0IHNvdXJjZVJlY3RhbmdsZSBiZSBhIHJl
Y3RhbmdsZSB3aG9zZSBjb3JuZXJzIGFyZSB0aGUgZm91ciBwb2ludHMKICAgICAvLyAgICAoMCww
KSwgKHdpZHRoIG9mIGlucHV0LCAwKSwgKHdpZHRoIG9mIGlucHV0LCBoZWlnaHQgb2YgaW5wdXQp
LCAoMCwgaGVpZ2h0IG9mCiAgICAgLy8gICAgaW5wdXQpLgotICAgIGF1dG8gc291cmNlUmVjdGFu
Z2xlID0gcmVjdC52YWx1ZU9yKEludFJlY3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5w
dXRTaXplLmhlaWdodCgpIH0pOworICAgIGF1dG8gc291cmNlUmVjdGFuZ2xlID0gcmVjdC52YWx1
ZV9vcihJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXplLndpZHRoKCksIGlucHV0U2l6ZS5oZWlnaHQo
KSB9KTsKIAogICAgIC8vIDQuIENsaXAgc291cmNlUmVjdGFuZ2xlIHRvIHRoZSBkaW1lbnNpb25z
IG9mIGlucHV0LgogICAgIHNvdXJjZVJlY3RhbmdsZS5pbnRlcnNlY3QoSW50UmVjdCB7IDAsIDAs
IGlucHV0U2l6ZS53aWR0aCgpLCBpbnB1dFNpemUuaGVpZ2h0KCkgfSk7CkBAIC04NDgsNyArODQ4
LDcgQEAgSW1hZ2VCaXRtYXA6On5JbWFnZUJpdG1hcCgpCiAKIE9wdGlvbmFsPEltYWdlQml0bWFw
QmFja2luZz4gSW1hZ2VCaXRtYXA6OnRha2VJbWFnZUJpdG1hcEJhY2tpbmcoKQogewotICAgIHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBXVEY6Om51bGxvcHQpOworICAgIHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBzdGQ6Om51bGxvcHQpOwogfQogCiBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VCdWZmZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEYXRhLmgKaW5kZXggMTY0Zjg4MmNkZjdjMGY4OTEyMTZiYTY4ZGNhNDE3NTY1ZmJi
NTI3NC4uY2ExMjhlZGJmZWFmOGJlNzIxMTU5ZGZlMzc1YWRhZWUyNDE3OTdjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRl
KGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdl
RGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIFBy
ZWRlZmluZWRDb2xvclNwYWNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5z
aWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFj
ZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5p
dGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVk
Q29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+
ID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWduZWQgc2gsIE9wdGlvbmFs
PEltYWdlRGF0YVNldHRpbmdzPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlv
bk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBlZEFycmF5PiYmLCB1bnNp
Z25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5n
cz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOTZkZGZlY2MxYmM5ODBlYWQz
NGM1OWU1YWUwOWY5MmM3YzBhMGE3My4uNGQzYTc4YTJjN2UzYjFjMzVlZTg3MmU2Y2RmYjgyZDAw
ODM2MGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtODY4LDcgKzg2OCw3IEBA
IHZvaWQgSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkKIE9wdGlvbmFsPERlY2lt
YWw+IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmKQog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAKaW5kZXggY2IxMzJiNTE0NmQ4NjM5YTJmYWMx
NDI2ZTMyY2VmNzU0ODlmN2M1OC4uN2MyYmExNWE1MTRlNDNkZDk3MjI3NTEwOWUzZGI5NDJlODUy
MzJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEZyYW1lT2JzZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNw
cApAQCAtOTIsNyArOTIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciogTGF6eUxvYWRGcmFtZU9i
c2VydmVyOjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9jdQogewogICAgIGlmICgh
bV9vYnNlcnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6eUZyYW1lTG9hZEludGVy
c2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIEludGVy
c2VjdGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxvcHQsIGVtcHR5U3RyaW5n
KCksIHsgfSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6SW5pdCBvcHRpb25zIHsg
c3RkOjpudWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAgICAgYXV0byBvYnNlcnZl
ciA9IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2VydmVyLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAKaW5kZXggYWRlOWE3YzU1MzdlZTkyNmEwN2E0ZWRl
Y2IwY2ViMGI5YzRjODEzYy4uZjZjNjQyMGRjYjc3ZDUzYzZiYTBlMjIzZjNiY2EwNDdkYzRlOThl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEltYWdlT2JzZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRJbWFnZU9ic2VydmVyLmNwcApA
QCAtODQsNyArODQsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciogTGF6eUxvYWRJbWFnZU9ic2Vy
dmVyOjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9jdQogewogICAgIGlmICghbV9v
YnNlcnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6eUltYWdlTG9hZEludGVyc2Vj
dGlvbk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgIEludGVyc2Vj
dGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxvcHQsIGVtcHR5U3RyaW5nKCks
IHsgfSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6SW5pdCBvcHRpb25zIHsgc3Rk
OjpudWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAgICAgYXV0byBvYnNlcnZlciA9
IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2VydmVyLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRleCBmNDY3ZjRmMTM4ZDdlNzU1ZGZjNjVhYWUy
ZDkxYmUwYzZmOGViMzIwLi5jYjA1ZDkwYzA5ZTIwZDljMzhkZjBlYTljMTM5ZjJmNmFkMTc4ZDAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
QEAgLTI1OSw3ICsyNTksNyBAQCBib29sIE1lZGlhRnJhZ21lbnRVUklQYXJzZXI6OnBhcnNlTlBU
VGltZShjb25zdCBMQ2hhciogdGltZVN0cmluZywgdW5zaWduZWQgbGVuZwogICAgIC8vIG5wdC1z
cyAgICAgICAgPSAgIDJESUdJVCAgICAgIDsgMC01OQogCiAgICAgU3RyaW5nIGRpZ2l0czEgPSBj
b2xsZWN0RGlnaXRzKHRpbWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KTsKLSAgICBpbnQgdmFsdWUx
ID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVPcigwKTsKKyAgICBpbnQgdmFsdWUx
ID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVfb3IoMCk7CiAgICAgaWYgKG9mZnNl
dCA+PSBsZW5ndGggfHwgdGltZVN0cmluZ1tvZmZzZXRdID09ICcsJykgewogICAgICAgICB0aW1l
ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHZhbHVlMSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IGQ5ZThlYjdl
ZjU5YjViYjdkNTgzYTBlMDhmZjMwMGU3NzI0ZTk5M2IuLjRlOGZjMjZjYzcyMTIxNzFiNmFmZTRl
ZDAzM2JiMDQ4ZDRhMDVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5k
ZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQwogICAgIGlmIChj
b250ZXh0VHlwZSA9PSBSZW5kZXJpbmdDb250ZXh0VHlwZTo6XzJkKSB7CiAgICAgICAgIGlmICht
X2NvbnRleHQpIHsKICAgICAgICAgICAgIGlmICghaXM8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEPigqbV9jb250ZXh0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB7IFdURjo6
bnVsbG9wdCB9IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBzdGQ6Om51bGxvcHQgfSB9
OwogICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEPiB7ICZkb3duY2FzdDxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+
KCptX2NvbnRleHQpIH0gfSB9OwogICAgICAgICB9CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCBFeGNl
cHRpb25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2Fu
dmFzOjpnZXRDb250ZXh0KEpTQwogCiAgICAgICAgIG1fY29udGV4dCA9IG1ha2VVbmlxdWU8T2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqdGhpcywgV1RGTW92ZShzZXR0aW5ncykp
OwogICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpu
dWxsb3B0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsKIAog
ICAgICAgICByZXR1cm4geyB7IFJlZlB0cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ+IHsgJmRvd25jYXN0PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29u
dGV4dCkgfSB9IH07CiAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlv
bmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRl
eHQoSlNDCiAgICAgICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29u
dGV4dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8V2ViR0wyUmVuZGVyaW5n
Q29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4dCkg
fSB9IH07CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxsb3B0IH0gfTsK
KyAgICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsKICAgICAgICAgfQogCiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0Nv
bnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDCiAKICAgICAgICAgY3JlYXRl
Q29udGV4dFdlYkdMKGNvbnRleHRUeXBlLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpKTsKICAgICAgICAg
aWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4geyB7IFdURjo6bnVsbG9wdCB9IH07
CisgICAgICAgICAgICByZXR1cm4geyB7IHN0ZDo6bnVsbG9wdCB9IH07CiAKICNpZiBFTkFCTEUo
V0VCR0wyKQogICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oKm1fY29udGV4
dCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIFN0cmluZyB0b0VuY29kaW5nTWltZVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHlG
cm9tRG91YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVyKQogewogICAgIGlmICghKHF1YWxpdHlOdW1i
ZXIgPj0gMCAmJiBxdWFsaXR5TnVtYmVyIDw9IDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHF1YWxpdHlO
dW1iZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDc5MDRi
ZjQxNmQwZjM3MjUwNTZkY2M4MTYzZDc1Yzc4MDA1NGY3YzQuLjRmZjUwY2IzOWVkNGYzMzI3ODhk
OGQ5NWRhOTA1MDgzZjE0YTU4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCkBAIC00MDEsNyArNDAxLDcgQEAgT3B0aW9uYWw8RGVjaW1hbD4gUmFuZ2VJbnB1dFR5cGU6
OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1ZSkKIHsKICAgICB1
cGRhdGVUaWNrTWFya1ZhbHVlcygpOwogICAgIGlmICghbV90aWNrTWFya1ZhbHVlcy5zaXplKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzaXplX3QgbGVmdCA9IDA7CiAgICAgc2l6ZV90IHJpZ2h0ID0gbV90aWNrTWFy
a1ZhbHVlcy5zaXplKCk7CkBAIC00MjQsOCArNDI0LDggQEAgT3B0aW9uYWw8RGVjaW1hbD4gUmFu
Z2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2YWx1
ZSkKICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAgIH0KIAotICAgIE9wdGlvbmFsPERl
Y2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gbWFrZU9wdGlvbmFsKG1fdGlja01hcmtWYWx1
ZXNbbWlkZGxlIC0gMV0pIDogV1RGOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPERlY2ltYWw+IGNs
b3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSA/IG1ha2VPcHRp
b25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlv
bmFsPERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gc3RkOjptYWtlX29wdGlvbmFsKG1f
dGlja01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDogc3RkOjpudWxsb3B0OworICAgIE9wdGlvbmFs
PERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNpemUo
KSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFjbG9zZXN0TGVmdCkKICAgICAgICAgcmV0dXJuIGNsb3Nlc3RS
aWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAppbmRleCA5MDY5ZDBmMzU3ZDk4MmRiY2Vm
ZDcwZjdjNTQ4OTJjYmU0MWM0MjZlLi41YWUwMmVlODY0ZmE4NmQxMzMxNzU4MGM4ZDU3M2ZhYjg1
NzQxNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
aW50IFR5cGVBaGVhZDo6aGFuZGxlRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQsIE1hdGNoTW9k
ZUZsYWdzIG1hdGNoTW9kZSkKICAgICB9CiAKICAgICBpZiAobWF0Y2hNb2RlICYgTWF0Y2hJbmRl
eCkgewotICAgICAgICBpbnQgaW5kZXggPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KG1fYnVmZmVyKS52YWx1ZU9yKDApOworICAgICAgICBpbnQgaW5kZXggPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fYnVmZmVyKS52YWx1ZV9vcigwKTsKICAg
ICAgICAgaWYgKGluZGV4ID4gMCAmJiBpbmRleCA8PSBvcHRpb25Db3VudCkKICAgICAgICAgICAg
IHJldHVybiBpbmRleCAtIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3Np
dGlvbi5jcHAKaW5kZXggMDQ5ODYyOGY4ZTZhNjliNjJmNGFiOGQ1MjAwYmExNjlhNWQ0Njk5ZS4u
MWU3MTg3MTVkYzgwNDlhOTJlNmJkYTI4Y2Q3MTBiOGI1OGI3MzI5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBzdGF0aWMg
T3B0aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+PiBwYXJzZVBvcnQoU3RyaW5nVmlldyBzdHJpbmcs
IFN0cmluZ1ZpZXcgcHJvdAogewogICAgIGF1dG8gZGlnaXRzT25seSA9IHN0cmluZy5sZWZ0KGNv
dW50QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAgICAgaWYgKGRpZ2l0c09ubHkuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RGOjpudWxsb3B0IH07CisgICAg
ICAgIHJldHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICBhdXRv
IHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGRpZ2l0c09ubHkpOwogICAgIGlmICghcG9y
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2woKnBvcnQsIHByb3Rv
Y29sKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHVpbnQxNl90PiB7IFdURjo6bnVsbG9wdCB9
OworICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3RkOjpudWxsb3B0IH07CiAg
ICAgcmV0dXJuIHsgeyAqcG9ydCB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNo
UGFyYW1zLmNwcAppbmRleCBhOGU1N2YzNDIzNGEwMjY3YWU4NjVjNzVhMWNiNmI5ZTBhMTk4OWE2
Li4wYzg4YTA1ZTdkYjQ0MTBlYWMzZDBjNTJmNWQ5OGQ5MjU2MTcyMmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8
V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxTZWFyY2hQYXJhbXM6Okl0ZXJh
dG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBwYWlycyA9IG1fdGFyZ2V0LT5wYWlycygpOwogICAg
IGlmIChtX2luZGV4ID49IHBhaXJzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHBhaXIgPSBwYWly
c1ttX2luZGV4KytdOwogICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4geyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCAwYWExZjEyMWJmNjg1NzY3NDg0YTVkNmIyZTI3OTM1
YmQ4NjE2NjgzLi44ZjE5MzgyY2IyMDNkMmU0MTFiY2E5NTdhNjkxYjFmYWM5OGEyY2ExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNQYXR0ZXJuOjpzZXRUcmFuc2Zvcm0oRE9N
TWF0cml4MkRJbml0JiYgbWF0cml4SW5pdCkKICAgICBpZiAoY2hlY2tWYWxpZC5oYXNFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIGNoZWNrVmFsaWQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0g
ICAgbV9wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oeyBtYXRyaXhJbml0LmEudmFs
dWVPcigxKSwgbWF0cml4SW5pdC5iLnZhbHVlT3IoMCksIG1hdHJpeEluaXQuYy52YWx1ZU9yKDAp
LCBtYXRyaXhJbml0LmQudmFsdWVPcigxKSwgbWF0cml4SW5pdC5lLnZhbHVlT3IoMCksIG1hdHJp
eEluaXQuZi52YWx1ZU9yKDApIH0pOworICAgIG1fcGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJh
bnNmb3JtKHsgbWF0cml4SW5pdC5hLnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmIudmFsdWVfb3Io
MCksIG1hdHJpeEluaXQuYy52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlX29yKDEpLCBt
YXRyaXhJbml0LmUudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuZi52YWx1ZV9vcigwKSB9KTsKICAg
ICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGViMDE4MjgzZDhmODBlNjFmY2ZjNjQx
MWQxOGMxNWIyMzI3NzA2ZmMuLjQ5ZmVlMmU5MTNmNzAyZTFmYmM3YWMwN2MxZDc5OTA3NTY5ZWU1
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIENhbnZhc0Rp
cmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7
CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHks
IE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJv
a2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1
cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CkBAIC02MSw3ICs2MSw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNldEZvbnRXaXRob3V0VXBkYXRpbmdTdHlsZShjb25zdCBT
dHJpbmcmKTsKIAotICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQs
IGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
V1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0
aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwo
Y29uc3QgUGF0aCYsIEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCBlN2Mw
Mjg1Zjc1NTQ1NDgwM2IxNDBjOTIwYmQ0YjJhZmRmZTYxZjRlLi5kNzkwYzYyYmVkYjJjYThmZDgw
OTRkOTZhMGFkMTcyMjRiZDdjNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTA2Miw3
ICsxMDYyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmaWxsSW50ZXJu
YWwoY29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzRmlsbFJ1bGUKICAgICAgICAgYy0+ZmlsbFBhdGgo
cGF0aCk7CiAgICAgCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAg
ICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7
CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAgICAgZGlkRHJhd0VudGly
ZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTExMDEsNyArMTEwMSw3IEBAIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCkKICAg
ICAgICAgYy0+c3Ryb2tlUGF0aChwYXRoKTsKIAogICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9y
ZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZGlkRHJh
dyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52YXMpCiAgICAg
ICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlIHsKQEAgLTExNjUsNyArMTE2NSw3
IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluUGF0aEludGVy
bmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0CiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxl
VHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVk
UG9pbnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2lu
dCA9IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFu
c2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExODAsNyArMTE4MCw3IEBAIGJvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3Qg
UGF0aCYgcGF0aCwgZmxvCiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0
ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50
KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50
LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTEyNzEsNyArMTI3MSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZs
b2F0CiAgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2lu
Z1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBk
aWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTEzMTEsNyArMTMx
MSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlUmVjdChmbG9h
dCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvCiAgICAgICAgIGMtPnN0cm9rZVJlY3QocmVj
dCwgc3RhdGUoKS5saW5lV2lkdGgpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3JlRGly
dHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3KHN0
ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UgewpAQCAtMTU5MSw3ICsxNTkxLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdl
KERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9y
bWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25zKTsKIAogICAgIGlmIChp
c0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRF
bnRpcmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBA
IC0xNjUzLDcgKzE2NTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291cmNlQ2FudgogICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2Jh
bENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAogICAgIGlmIChpc0VudGlyZUJh
Y2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52
YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBAIC0xNjg5LDcg
KzE2ODksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgICAgICBjLT5kcmF3TmF0aXZl
SW1hZ2UoKmltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgpLCB2aWRlby52aWRlb0hl
aWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAKICAgICAgICAgaWYgKGlzRW50aXJlQmFja2lu
Z1N0b3JlRGlydHkoKSkKLSAgICAgICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIGRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICAgICAgZWxzZSBpZiAocmVjdENvbnRh
aW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwog
ICAgICAgICBlbHNlCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlk
ZQogICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0
b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWRE
cmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZQogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwog
CkBAIC0xNzU5LDcgKzE3NTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgICAgICBj
LT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAogICAgIGlmIChpc0VudGly
ZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVD
YW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCkBAIC0yMDY3
LDcgKzIwNjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRpZERyYXco
T3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25TZXQ8RAogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoIXJlY3QpIHsKLSAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA5Miw3ICsyMDkyLDcgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdCwgT3B0
aW9uU2V0PEQKICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBhcHBseSB0aGUgY2xpcCBiZWNh
dXNlIHdlIGhhdmUgbm8gd2F5IG9mIHJlYWRpbmcgdGhlIGNsaXAgb3V0IG9mIHRoZSBHcmFwaGlj
c0NvbnRleHQuCiAKICAgICBpZiAobV9kaXJ0eVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKLSAg
ICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FudmFz
QmFzZSgpLmRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICBlbHNlIHsKICAgICAgICAgbV9kaXJ0
eVJlY3QudW5pdGUoZGlydHlSZWN0KTsKICAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcobV9k
aXJ0eVJlY3QpOwpAQCAtMjU0MCw3ICsyNTQwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBmbG8K
ICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1biwgbG9jYXRpb24sIEZv
bnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKIAogICAgIGlmIChpc0VudGly
ZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRpcmVD
YW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmgKaW5kZXggMmQ1NDkzMDdlMmNlZThiZWNkZGYxYTBkMDM0ZjRiMjg3MjM3NmIxYy4u
MGM5ZWQxY2U5NWE3ODZiZDhiYTE5ZGIwMjlmODkzZDMxYTQyZGM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaApAQCAtMTQxLDExICsxNDEsMTEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJik7CiAgICAgdm9pZCByZXNldFRyYW5zZm9y
bSgpOwogCi0gICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBTdHJpbmcmIGNvbG9yLCBPcHRp
b25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0U3Ryb2tlQ29s
b3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxs
b3B0KTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxw
aGEgPSAxLjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZpbGxDb2xvcihjb25zdCBTdHJpbmcmIGNv
bG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0
RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9h
dCBhbHBoYSA9IDEuMGYpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKGZsb2F0IHIsIGZsb2F0IGcs
IGZsb2F0IGIsIGZsb2F0IGEpOwogCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7
CiAgICAgdm9pZCBzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9h
dCBoZWlnaHQpOwogCi0gICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygpLCBPcHRpb25hbDxm
bG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IgPSBTdHJp
bmcoKSwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNl
dFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5
TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wKTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0
aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBm
bG9hdCBhKTsKIApAQCAtMzAyLDkgKzMwMiw5IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBT
dHJpbmcgbm9ybWFsaXplU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4
dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9u
YWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKLSAgICBib29sIGNhbkRyYXdUZXh0
KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
V1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4m
LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9
IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBib29sIGNhbkRyYXdUZXh0KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wg
ZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lk
IGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4LCBmbG9hdCB5LCBib29s
IGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBS
ZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0SW50ZXJuYWwoY29uc3QgVGV4dFJ1biYpOwogICAg
IFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwCmluZGV4IGIwYzYy
NTk0MmIyYjUwYjgxYjQ4NjBkNGNiZWI5ZThhMmNmODFmOWQuLjkwYTBlYzU3ZGQwZDVlZTVmZGI0
NzBiYThmZTg3NjE4MTc5MGM1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKEN1cnJlbnRDb2xvciBjb2xvcikKIENhbnZhc1N0eWxlIENhbnZhc1N0eWxlOjpjcmVh
dGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIENhbnZhc0Jhc2UmIGNhbnZh
c0Jhc2UpCiB7CiAgICAgaWYgKGlzQ3VycmVudENvbG9yU3RyaW5nKGNvbG9yU3RyaW5nKSkKLSAg
ICAgICAgcmV0dXJuIEN1cnJlbnRDb2xvciB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1
cm4gQ3VycmVudENvbG9yIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBDb2xvciBjb2xvciA9IHBh
cnNlQ29sb3IoY29sb3JTdHJpbmcsIGNhbnZhc0Jhc2UpOwogICAgIGlmICghY29sb3IuaXNWYWxp
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZz
Y3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBiMTY4MTkyMWQ4ZTM3NTgxMWE2
ZmU5YTUxYTE4YTcwZTc5MWZmNWExLi40MTNkZTkyMjk5NzhlOGY2ZWFlMThkOTE5NjBmYmI2OGM0
MjBlNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtNDcsOCArNDcsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJik7CiAgICAgQ2FudmFzRGly
ZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZmlsbFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9w
dGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBzdHJva2VU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+
IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvUGF0aDJELmNwcAppbmRleCAzODVlOWRhYmY1ZGNiY2EzYmQyMmZlYWE5NWY3ODRkMmY0Nzk0
YjMxLi4yMTViN2QzYmFkMmI4NTQzMzFmNjRiM2YxYzAzMzQ1ZjJjMmNlMDU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gUGF0aDJEOjphZGRQYXRoKFBhdGgyRCYgcGF0aCwgRE9NTWF0cml4MkRJbml0JiYgbWF0
cml4SW5pdCkKICAgICBpZiAoY2hlY2tWYWxpZC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGNoZWNrVmFsaWQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgbV9wYXRoLmFkZFBhdGgo
cGF0aC5wYXRoKCksIHsgbWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1hdHJpeEluaXQuYi52YWx1
ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5pdC5kLnZhbHVlT3IoMSks
IG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFsdWVPcigwKSB9KTsKKyAg
ICBtX3BhdGguYWRkUGF0aChwYXRoLnBhdGgoKSwgeyBtYXRyaXhJbml0LmEudmFsdWVfb3IoMSks
IG1hdHJpeEluaXQuYi52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlX29yKDApLCBtYXRy
aXhJbml0LmQudmFsdWVfb3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZV9vcigwKSwgbWF0cml4SW5p
dC5mLnZhbHVlX29yKDApIH0pOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAppbmRleCBlZjdk
MTA4Mjk3NDhhZDI3ZWM4YTg2NjdhNDlkNDQ4MGU1ZjVmM2E4Li40YjNhNDE5NjhlMzU0Mjk2OTY2
NjgwMTIwMzlmMWZlNzFhZjUwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE9wdGlvbmFs
PFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjCiAgICAgICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlz
cGxheVAzOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmU5ZDkzM2QzYjI4ZGI1NjY0NzZh
YzQ5MWY0YTFiYjI0ZmZkMzI0OS4uNDQ3YzEyMGFkMTQyOGU2MzljYmMyNTU4ZmM2M2ZkOWE4Y2Uy
MWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI1MTksNyArMjUxOSw3IEBAIFdlYkdMQW55IFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
dWludCBpCiBPcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mIHByb2dyYW0sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBuYW1lcykKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIo
ImdldFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX2NvbnRleHQt
PmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0ub2JqZWN0KCksIG5hbWVzKTsKIH0KIApAQCAtMjcx
MSw3ICsyNzExLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCmluZGV4IDdiNTc3YTQ5
NDMzMmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMuLjNlMzRhMThmN2Y2ZjY5NGU0Y2FmZWU1
ZTExNTM3ZmY1NDA1NmFlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBPcHRpb25hbDx1bnNpZ25lZD4gV2ViR0xCdWZm
ZXI6OmdldENhY2hlZE1heEluZGV4KEdDR0xlbnVtIHR5cGUpCiAgICAgICAgIGlmIChjYWNoZS50
eXBlID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUubWF4SW5kZXg7CiAgICAgfQot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSwgdW5zaWdu
ZWQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBjOWE5NDRjNmUxMDI5ZjQ0ZDNkMDRmMjczMzUyMGE5MTBl
YzQ4ZDI0Li5mYTY3NTgzZGUzYTIwNmIxMDhjYTQwMjc2OWE3YmNlNTZkMmQwYjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpCiB7
CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3Vs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBiY2JjODkyNGE5ZjQ4MmVjYzA1ZTE0NDIwOTNmN2Qx
NjdiM2M3OTc3Li4xY2FmMDQ2YTUxMDU0Zjk3MDk0MDNjZTZlY2M2YTNkMzVkZmRiOTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCiBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9QaXhlbEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsKICAgICByZXR1cm4gbV9j
b250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVyKCk7CiB9CkBAIC0yODY5
LDcgKzI4NjksNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxXZWJHTFNoYWRlcj4+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hl
ZFNoYWRlcnMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGlmICghdmFsaWRhdGVXZWJH
TFByb2dyYW1PclNoYWRlcigiZ2V0QXR0YWNoZWRTaGFkZXJzIiwgJnByb2dyYW0pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgY29uc3QgR0NHTGVudW0gc2hhZGVyVHlwZXNbXSA9IHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0w6OlZFUlRFWF9TSEFERVIsCkBAIC0yOTQxLDcgKzI5NDEsNyBAQCBXZWJHTEFueSBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMZW51bQogT3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBBbHNvLCB3ZSBuZWVkIHRvIGVuZm9yY2Ug
cmVxdWVzdGVkIHZhbHVlcyBvZiAiZmFsc2UiIGZvciBkZXB0aAogICAgIC8vIGFuZCBzdGVuY2ls
LCByZWdhcmRsZXNzIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB1bmRlcmx5aW5nCkBAIC01MzE0
LDcgKzUzMTQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlVGV4
RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBUZQogCiAgICAgaWYgKCF2YWxpZGF0
ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoZnVuY3Rpb25OYW1lLCBmb3JtYXQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlv
bk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVs
cy0+Z2V0VHlwZSgpKSA6IFdURjo6bnVsbG9wdCkpCisgICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVm
ZmVyVHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRB
cnJheVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZXF1aXJlZCwgc2tpcEJ5dGVz
OwpAQCAtNzQ0Myw3ICs3NDQzLDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51bVZlcnQKICAgICAgICAg
ICAgIG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSBmYWxzZTsKICAgICAgICAgICAgIG1fdmVy
dGV4QXR0cmliMEJ1ZmZlclNpemUgPSAwOwogICAgICAgICAgICAgbV9mb3JjZUF0dHJpYjBCdWZm
ZXJSZWZpbGwgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgbV92ZXJ0ZXhB
dHRyaWIwQnVmZmVyU2l6ZSA9IGJ1ZmZlckRhdGFTaXplOwogICAgICAgICBtX2ZvcmNlQXR0cmli
MEJ1ZmZlclJlZmlsbCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMWMzMWU4NzhmNzExNGUzNWU2
NmQ3ODdhNGQ4NDM5ZWRmOGQ4YjNhMy4uN2RiNDkxZTZkODRmNTZmYzA4MjYyMTBhM2UzZDk2MDIy
YzllMWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgaW5saW5lIE9wdGlv
bmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRBZGRBbmRNdWx0aXBseShU
IHZhbHVlLCBUIGEKICAgICBjaGVja2VkUmVzdWx0ICs9IENoZWNrZWQ8VD4oYWRkKTsKICAgICBj
aGVja2VkUmVzdWx0ICo9IENoZWNrZWQ8VD4obXVsdGlwbHkpOwogICAgIGlmIChjaGVja2VkUmVz
dWx0Lmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjaGVja2VkUmVzdWx0LnVuc2Fm
ZUdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENv
bnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0
cnVjdGlvblNpdGUuY3BwCmluZGV4IGU1ZmViOTNlYzhiNzNkYjUzZjAwOTdjY2QwNjBkYTNmMGRk
ZmQyNGIuLmJjZmY4YTdlY2JjMTAyOTlkNGY5MWQ0NzA1NTYwMzM0YWJmOGE1MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAK
QEAgLTcyNSwxNCArNzI1LDE0IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MQ29uc3RydWN0aW9u
U2l0ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFja0l0CiBPcHRpb25hbDx1
bnNpZ25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRp
bmdFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9hY3RpdmVGb3JtYXR0aW5nRWxl
bWVudHMuc2l6ZSgpOwogICAgIGRvIHsKICAgICAgICAgLS1pbmRleDsKICAgICAgICAgY29uc3Qg
YXV0byYgZW50cnkgPSBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5hdChpbmRleCk7CiAgICAg
ICAgIGlmIChlbnRyeS5pc01hcmtlcigpIHx8IG1fb3BlbkVsZW1lbnRzLmNvbnRhaW5zKGVudHJ5
LmVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0VW5vcGVuRWxlbWVudElu
ZGV4ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgcmV0dXJuIGZpcnN0VW5vcGVuRWxlbWVudElu
ZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVt
ZW50SW5kZXggOiBPcHRpb25hbDx1bnNpZ25lZD4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IHJldHVybiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA8IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1l
bnRzLnNpemUoKSA/IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDogT3B0aW9uYWw8dW5zaWduZWQ+
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChpbmRleCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNzY3
OTg0NjdlMzQwNDZmY2RiNWU1NjRmYjkxZTdmYTM0MjRjNDJhYi4uYzkxNzJjMGE0ZjIxMjRmOWYx
YzhjMWRhYzAwNWI2M2ZmN2M1MTE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTIyNSwxMiArMjI1LDEyIEBAIHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3Qg
Q2hhcmFjdGVyVHlwCiAgICAgLy8gQSBzdHJpbmcgaXMgYSB2YWxpZCBub24tbmVnYXRpdmUgaW50
ZWdlciBpZiBpdCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBBU0NJSSBkaWdpdHMuCiAgICAgZm9y
IChhdXRvKiBjID0gcG9zaXRpb247IGMgPCBlbmQ7ICsrYykgewogICAgICAgICBpZiAoIWlzQVND
SUlEaWdpdCgqYykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIG9wdGlvbmFsU2lnbmVk
VmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwocG9zaXRpb24sIGVuZCk7CiAgICAgaWYg
KCFvcHRpb25hbFNpZ25lZFZhbHVlIHx8IG9wdGlvbmFsU2lnbmVkVmFsdWUudmFsdWUoKSA8IDAp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gb3B0aW9uYWxTaWduZWRWYWx1ZS52YWx1ZSgpOwogfQpAQCAtMjM5
LDcgKzIzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRp
dmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwCiBPcHRpb25hbDxpbnQ+IHBhcnNl
VmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgaWYg
KGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4Qml0KCkpKSB7
CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKQEAgLTI1OCw3ICsy
NTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9p
bnROdW1iZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZQogICAgIC8vIHBhcnNlRG91YmxlKCkgYWxs
b3dzIHRoZSBzdHJpbmcgdG8gc3RhcnQgd2l0aCBhICcrJyBvciB0byBlbmQgd2l0aCBhICcuJyBi
dXQgdGhvc2UKICAgICAvLyBhcmUgbm90IHZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMg
cGVyIEhUTUwuCiAgICAgaWYgKCpwb3NpdGlvbiA9PSAnKycgfHwgKihwb3NpdGlvbiArIGxlbmd0
aCAtIDEpID09ICcuJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBwYXJzZWRMZW5ndGggPSAwOwogICAgIGRv
dWJsZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlvbiwgbGVuZ3RoLCBwYXJzZWRMZW5ndGgp
OwpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRI
VE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlCiBPcHRpb25hbDxk
b3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3IGlucHV0
KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoTElLRUxZKGlucHV0
LmlzOEJpdCgpKSkgewogICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0LmNoYXJhY3RlcnM4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cAppbmRleCBjMzEzZGQ1NGY5NDY0NzMxY2U2NmE3NDdkMjg4YTY2MjcxNjBlMGUxLi5iNzFmMWI0
ZTRiMDMzZjI2YTJiMzk3MWJkOGQ4YzE3NGVjM2IxNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9uY2VBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVW
YWx1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0
Y2goYXR0cmlidXRlTmFtZSwgcmVmZXJyZXJwb2xpY3lBdHRyKSkgewotICAgICAgICAgICAgICAg
IG1fcmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVZhbHVlLCBS
ZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlT3IoUmVm
ZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtX3JlZmVycmVyUG9s
aWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVWYWx1ZSwgUmVmZXJyZXJQb2xpY3lT
b3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6
RW1wdHlTdHJpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBub21vZHVsZUF0dHIpKSB7CiAgICAgICAgICAgICAg
ICAgbV9zY3JpcHRJc05vbW9kdWxlID0gdHJ1ZTsKQEAgLTI4NSw3ICsyODUsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgdHlwZUF0dHIpKQog
ICAgICAgICAgICAgICAgIG1fdHlwZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVlOwogICAgICAg
ICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgcmVmZXJyZXJwb2xpY3lBdHRyKSkK
LSAgICAgICAgICAgICAgICBtX3JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShh
dHRyaWJ1dGVWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmli
dXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgICAgICAg
ICAgbV9yZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3koYXR0cmlidXRlVmFsdWUs
IFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3Io
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFRhZ0lkOjpJbnB1dDoKICAgICAgICAgICAgIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1l
LCBzcmNBdHRyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVU
aW1lRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1l
RmllbGRFbGVtZW50LmNwcAppbmRleCBiZWJkNTJhNTRlN2MyYmNlZTAwOWQ1M2ZlOGFjYzUzNzQw
ZWQ5ZjA2Li5lZGQwYzE4MTkwOWExZDZjODNkMTcyMTRhZjM4NWFjMWRiMTJhMjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVsZEVsZW1lbnQuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IERhdGVUaW1l
RmllbGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuCiB7CiAgICAgYXV0byBl
bGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAgICBpZiAoIWVsZW1l
bnRTdHlsZS5yZW5kZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0eWxlID0gKmVsZW1lbnRTdHls
ZS5yZW5kZXJTdHlsZTsKICAgICBhZGp1c3RNaW5XaWR0aChzdHlsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50
LmNwcAppbmRleCA2ZjYxNDBjYmEzNTcxOGRlY2Q1ZWYyZWRjMWNhNjZjODliNDQ1ZWRiLi5hMzFl
OTI0NmY4MTUwY2ZlYzA0ODc2ZTZhNTliYzNkMDJlNTY3NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5j
cHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudDo6
aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZQogICAgIH0KIAog
ICAgIG1fdHlwZUFoZWFkQnVmZmVyLmFwcGVuZChudW1iZXIpOwotICAgIHNldFZhbHVlQXNJbnRl
Z2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV90eXBlQWhlYWRCdWZm
ZXIpLnZhbHVlT3IoMCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudHMpOworICAgIHNldFZh
bHVlQXNJbnRlZ2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV90eXBl
QWhlYWRCdWZmZXIpLnZhbHVlX29yKDApLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnRzKTsK
IAogICAgIGtleWJvYXJkRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDYzZjcz
MTFiMDlkOTUxNjdkNGVmOGJlYzJkYzVlYjAyZTY4NGJhYWQuLjU3NTJlNzk3NDlkYmNjMDFlYjc0
YjNmYjgzMjYzN2UyZWIyYzA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTkzLDcgKzU5Myw3IEBAIE9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxl
KGNvbnN0IFJlbmRlCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQoIi13ZWJraXQtbWVkaWEt
c2xpZGVyLXRodW1iIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogCiAgICAg
aWYgKCFob3N0U3R5bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGhvc3RTdHlsZS0+YXBwZWFyYW5jZSgp
KSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CkBAIC02MDgsNyArNjA4LDcgQEAgT3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9t
U3R5bGUoY29uc3QgUmVuZGUKICAgICAgICAgbV9zaGFkb3dQc2V1ZG9JZCA9IHNsaWRlclRodW1i
U2hhZG93UHNldWRvSWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBTbGlkZXJUaHVtYkVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTY0Nyw3ICs2NDcsNyBAQCBPcHRpb25h
bDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3Vz
dG9tU3R5bGUoY29uc3QgUgogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgQXRvbVN0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNsaWRlci1jb250YWluZXIi
LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAoIWhvc3RTdHls
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJhbmNlKCkpIHsKICAgICBjYXNl
IE1lZGlhU2xpZGVyUGFydDoKQEAgLTY2Miw3ICs2NjIsNyBAQCBPcHRpb25hbDxTdHlsZTo6RWxl
bWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUgogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVyQ29udGFpbmVyOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogY29uc3QgQXRvbVN0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRv
SWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNTMzMTIxMjUxMDE1NjhmMDhiMWMxMzM0NjJk
MWUxOGRhODg3NGE2OS4uYTQ5YmM5MDAwZDk2MWNlZDk5MDlmZmM1ZjJiNjFhY2FiZDg4NmMxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1l
bnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25z
dAogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Rocy4gU2luY2UgdGhlIGVs
ZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyCiAgICAg
ICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlLCB0aGUgcGFyZW50IGVsZW1lbnQgc3R5
bGUsIGFuZCB0aGUgcmVuZGVyIHZpZXcuCiAgICAgICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7Ci0gICAgICAgIGludCBw
aXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhIHsgbmV3U3R5bGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RG
OjpudWxsb3B0IH0pOworICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3Ro
PGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxlLmdldCgpLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCB9KTsKICAgICAgICAgbmV3U3R5
bGUtPnNldEZsZXhCYXNpcyhMZW5ndGggeyBwaXhlbHMsIExlbmd0aFR5cGU6OkZpeGVkIH0pOwog
ICAgIH0KIApAQCAtMjQzLDE0ICsyNDMsMTQgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHls
ZT4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWwKIHsK
ICAgICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihz
aGFkb3dIb3N0KCkpKTsKICAgICBpZiAoaW5wdXQgJiYgaW5wdXQtPm1heFJlc3VsdHMoKSA+PSAw
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKHNoYWRvd0hvc3RTdHlsZSAmJiBzaGFkb3dIb3N0U3R5bGUtPmFwcGVh
cmFuY2UoKSAhPSBTZWFyY2hGaWVsZFBhcnQpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
Y2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlKG1fY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNl
LCBmYWxzZSk7CiAgICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0J1ZmZlcmVkTGluZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1
ZmZlcmVkTGluZVJlYWRlci5jcHAKaW5kZXggNTdkZDJiZjhhMWM2NzZkOTgzOWRkMjgyOThjOTZi
OTMyYzhjZDMxNi4uYjU4ZmQzOGMwNGEwZjVkYTU5NThkNWY5NTRiNmY1NGNhNzEwMDA0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRMaW5lUmVhZGVyLmNwcApA
QCAtOTgsNyArOTgsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVkTGluZVJlYWRlcjo6bmV4
dExpbmUoKQogICAgIH0KIAogICAgIEFTU0VSVChtX2J1ZmZlci5pc0VtcHR5KCkpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmlu
ZGV4IDcyN2E4ZWExOGRlMTAyYjIwYmQ2NTI4MDk1YmI5NTJlY2FhN2U2ZmIuLmQ5YjQ3ZDIwYjg5
YmI2Nzg2OGIwZGZjZTcxMjI0Mjk2NzE4MGEwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFjay5jcHAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBpbnQgVGV4dFRyYWNrOjp0cmFja0lu
ZGV4KCkKIAogdm9pZCBUZXh0VHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4KCkKIHsKLSAgICBt
X3RyYWNrSW5kZXggPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9yZW5kZXJlZFRyYWNrSW5kZXggPSBX
VEY6Om51bGxvcHQ7CisgICAgbV90cmFja0luZGV4ID0gc3RkOjpudWxsb3B0OworICAgIG1fcmVu
ZGVyZWRUcmFja0luZGV4ID0gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFRleHRUcmFjazo6aXNS
ZW5kZXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAppbmRleCA2
NjMyMGQ3NDc1ZTdlNmM2MzhkMGVkMTA2ZWQwMGNlYzY5NGMxZjAzLi44NjA5ZjhmYTE0ZjA1NTRk
OWRkOTFkNjljNTIyNGZkMjdlNDkwM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJh
Y2tFdmVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxUcmFj
a0V2ZW50OjpUcmFja0V2ZW50VHJhY2s+IGNvbnZlcnRUb1RyYWNrRXZlbnRUcmFjayhSZWYKIHsK
ICAgICBzd2l0Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNlIFRyYWNrQmFzZTo6QmFzZVRy
YWNrOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGNhc2UgVHJhY2tCYXNlOjpUZXh0VHJhY2s6CiAgICAgICAgIHJldHVybiBU
cmFja0V2ZW50OjpUcmFja0V2ZW50VHJhY2sgeyBSZWZQdHI8VGV4dFRyYWNrPigmZG93bmNhc3Q8
VGV4dFRyYWNrPih0cmFjay5nZXQoKSkpIH07CiAgICAgY2FzZSBUcmFja0Jhc2U6OkF1ZGlvVHJh
Y2s6CkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8VHJhY2tFdmVudDo6
VHJhY2tFdmVudFRyYWNrPiBjb252ZXJ0VG9UcmFja0V2ZW50VHJhY2soUmVmCiAgICAgfQogICAg
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogVHJhY2tFdmVudDo6VHJhY2tFdmVudChjb25z
dCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2Fu
Y2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVFNjYW5uZXIuY3BwCmluZGV4IGM3ODA1Yzg3ZDVhNDVmZjhhOTIzYjBiMzBhMzE4Y2IyMTVl
Njk1YzIuLmExMjBhOWJmZGU3NTgzMjc3ZGM4MzBhMmViYzRhNDY4N2VmNzQ2YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHVu
c2lnbmVkIFZUVFNjYW5uZXI6OnNjYW5EaWdpdHMoaW50JiBudW1iZXIpCiAgICAgICAgIHN0cmlu
ZyA9IHsgbV9kYXRhLmNoYXJhY3RlcnMxNiwgbnVtRGlnaXRzIH07CiAKICAgICAvLyBTaW5jZSB0
aGVzZSBhcmUgQVNDSUkgZGlnaXRzLCB0aGUgb25seSBmYWlsdXJlIG1vZGUgaXMgb3ZlcmZsb3cs
IHNvIHVzZSB0aGUgbWF4aW11bSBpbnQgdmFsdWUuCi0gICAgbnVtYmVyID0gcGFyc2VJbnRlZ2Vy
PGludD4oc3RyaW5nKS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwor
ICAgIG51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KHN0cmluZykudmFsdWVfb3Ioc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CiAKICAgICAvLyBDb25zdW1lIHRoZSBkaWdpdHMuCiAg
ICAgc2Vla1RvKHJ1bk9mRGlnaXRzLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNWYyMGIzYzc0YWY5NjliNTc5NDkxNWRhNmEwYzU4
ZDA0NDRkYmJiMy4uYzljZTgwYjJkMWRhYWQ4ZGVlYTI5M2JmYjA5ZDgwOGE1OGI5MzQ5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTMxMiw3
ICszMTIsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKCkKICAg
ICBtX3JlY29yZGluZ05hbWUgPSB7IH07CiAgICAgbV9idWZmZXJMaW1pdCA9IDEwMCAqIDEwMjQg
KiAxMDI0OwogICAgIG1fYnVmZmVyVXNlZCA9IDA7Ci0gICAgbV9mcmFtZUNvdW50ID0gV1RGOjpu
dWxsb3B0OworICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2ZyYW1lc0Nh
cHR1cmVkID0gMDsKICAgICBtX2NvbnRlbnRDaGFuZ2VkID0gZmFsc2U7CiAKQEAgLTM4OCwxOSAr
Mzg4LDE5IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoRE9NTWF0cml4MkRJbml0JiBhcmd1bWVudCkKIHsKICAgICBhdXRvIGFycmF5ID0g
SlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAgICBhcnJheS0+YWRkSXRlbShhcmd1
bWVudC5hLnZhbHVlT3IoMSkpOwotICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmIudmFsdWVP
cigwKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYy52YWx1ZU9yKDApKTsKLSAgICBh
cnJheS0+YWRkSXRlbShhcmd1bWVudC5kLnZhbHVlT3IoMSkpOwotICAgIGFycmF5LT5hZGRJdGVt
KGFyZ3VtZW50LmUudmFsdWVPcigwKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuZi52
YWx1ZU9yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5hLnZhbHVlX29yKDEpKTsK
KyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5iLnZhbHVlX29yKDApKTsKKyAgICBhcnJheS0+
YWRkSXRlbShhcmd1bWVudC5jLnZhbHVlX29yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1
bWVudC5kLnZhbHVlX29yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5lLnZhbHVl
X29yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5mLnZhbHVlX29yKDApKTsKICAg
ICByZXR1cm4ge3sgV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpET01NYXRy
aXggfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChFbGVtZW50KiBhcmd1
bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRWxlbWVudHMgYXJlIG5v
dCBzZXJpYWxpemFibGUsIHNvIGFkZCBhIHN0cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRo
ZSBhY3R1YWwKICAgICAvLyBlbGVtZW50IGNhbm5vdCBiZSByZWNvbnN0cnVjdGVkIGluIHRoZSBm
cm9udGVuZC4KQEAgLTQxMCwyOCArNDEwLDI4IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxlbWVudCogYXJndW1lbnQp
CiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07CiB9CiAKIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZUJpdG1hcCogYXJndW1lbnQpCiB7CiAgICAg
aWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1l
bnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VCaXRtYXAgfX07CiB9CiAKIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEqIGFyZ3VtZW50KQogewogICAgIGlmICgh
YXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwg
UmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKIHsKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50LgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlU21vb3RoaW5nUXVh
bGl0eSBhcmd1bWVudCkKQEAgLTQ0MiwzNSArNDQyLDM1IEBAIE9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8ZmxvYXQ+JiBhcmd1
bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1
ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oKmFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChQ
YXRoMkQqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7
IHZhbHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJndW1lbnQpCiB7CiAgICAg
aWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1l
bnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFzR3JhZGllbnQgfX07CiB9CiAKIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1BhdHRlcm4gfX07CiB9
CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRNTENhbnZhc0VsZW1l
bnQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2
YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9
fTsKIH0KIApAQCAtNDkyLDM1ICs0OTIsMzUgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mIGFy
Z3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZh
bHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OwogfQog
CiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXJW
aWV3PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sg
SlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkg
fX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpGbG9h
dDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRB
cnJheSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6
OkludDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlw
ZWRBcnJheSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxK
U0M6OlVpbnQzMkFycmF5PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OlR5cGVkQXJyYXkgfX07CiB9CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCBPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQQogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OkltYWdlIH19OwogfQogCkBAIC02MTQsNyArNjE0LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFz
PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFs
dWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07
CiB9CiAKQEAgLTYyNSw3ICs2MjUsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZv
ckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07CiB9CiAKQEAg
LTYzNiw3ICs2MzYsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZl
ckRhdGFTb3VyY2U+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAg
ICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwpAQCAtNjQ2LDcgKzY0Niw3IEBAIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0
aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
KmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJn
dW1lbnQodmFsdWUpOwpAQCAtNjU2LDM1ICs2NTYsMzUgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTEJ1ZmZlciogYXJndW1lbnQp
CiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMQnVmZmVyIH19OwogfQogCiBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZlciogYXJndW1lbnQpCiB7
CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMRnJhbWVidWZmZXIgfX07CiB9CiAKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFByb2dyYW0qIGFyZ3VtZW50KQogewog
ICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUo
MCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFByb2dyYW0gfX07CiB9CiAKIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVudCkKIHsKICAgICBpZiAo
IWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6V2ViR0xRdWVyeSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFy
Z3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9CiAKQEAgLTcxOSw0MiArNzE5
LDQyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZTo6V2ViR0xTYW1wbGVyIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
V2ViR0xTaGFkZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJH
TFNoYWRlciB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU3lu
YyogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU3luYyB9fTsK
IH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6
OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsKIH0KIAog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBhcmd1
bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1
ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24g
fX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5
T2JqZWN0KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdCB9fTsKIH0KIApAQCAtNzY1LDcgKzc2NSw3IEBAIE9wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVHJh
bnNmb3JtRmVlZGJhY2sgfX07CiB9CiAKQEAgLTg4OSw3ICs4ODksNyBAQCB2b2lkIEluc3BlY3Rv
ckNhbnZhczo6c2V0RnJhbWVDb3VudChsb25nIGZyYW1lQ291bnQpCiAgICAgaWYgKGZyYW1lQ291
bnQgPiAwKQogICAgICAgICBtX2ZyYW1lQ291bnQgPSBzdGQ6Om1pbjxsb25nPihmcmFtZUNvdW50
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
ZnJhbWVDb3VudCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mcmFtZUNvdW50ID0gc3RkOjpu
dWxsb3B0OwogfQogCiBib29sIEluc3BlY3RvckNhbnZhczo6b3ZlckZyYW1lQ291bnQoKSBjb25z
dApAQCAtOTE1LDcgKzkxNSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3Bl
Y3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0dXJlCiAgICAgICAgICAg
ICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpXZWJHTDI7CiAjZW5kaWYK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9LAogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgICAgIFtdIChz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsKQEAgLTkyNCw3ICs5MjQsNyBA
QCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkT2Jq
ZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAgICAgIFtdIChNb25vc3RhdGUp
IHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KICAgICApOwogICAgIGlmICghY29udGV4dFR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAppbmRleCAyZTU3
ZDI4NDRlMzBjNzBiMjliMGYyMmJiYjhmZDg5YjAzMTU1NjQ2Li42OTNhY2ZlNTM0MzUxNzBkMmRm
NWU5MDI5Y2NmNTJjMDZhYjEzNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCkBAIC04OCw3ICs4OCw3IEBAIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyCiB7IFwKICAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBl
bmFibGVkQ2FudmFzQWdlbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCkpIFwKICAgICAgICAgcmV0
dXJuIGNhbnZhc0FnZW50LT5wcm9jZXNzQXJndW1lbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCwg
YXJndW1lbnQpOyBcCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7IFwKIH0gXAogLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTgog
ICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VT
U19BUkdVTUVOVF9ERUZJTklUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDYzMWMzYWE2YjM3
MjVkNzhlODgxOWQ5ZjE4MjNmNmJlNmEyZmM0MjQuLmU3NzA2YmU0NDJmOTE3ZmNjOGY0N2JiOTlj
ZGRmNmU5NjQ3MTE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hl
aWdodCgpCiB7CiAgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdodCA9IG1faW5zcGVjdGVk
UGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKS52aWV3KCktPnZpc2li
bGVIZWlnaHQoKTsKICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdzLT5nZXRQcm9wZXJ0eShp
bnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2lnbmVkIHByZWZlcnJlZEhl
aWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhlaWdodCA6IHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKTsKKyAg
ICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5KCkgPyBkZWZhdWx0QXR0
YWNoZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4o
dmFsdWUpLnZhbHVlX29yKDApOwogCiAgICAgLy8gVGhpcyBjYWxsIG1pZ2h0IG5vdCBnbyB0aHJv
dWdoIChpZiB0aGUgd2luZG93IHN0YXJ0cyBvdXQgZGV0YWNoZWQpLCBidXQgaWYgdGhlIHdpbmRv
dyBpcyBpbml0aWFsbHkgY3JlYXRlZCBhdHRhY2hlZCwKICAgICAvLyBJbnNwZWN0b3JDb250cm9s
bGVyOjphdHRhY2hXaW5kb3cgaXMgbmV2ZXIgY2FsbGVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0byBzZXQgdGhlIGF0dGFjaGVkV2luZG93SGVpZ2h0LgpAQCAtMzI4LDEyICszMjgsMTIgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dI
ZWlnaHQoKQogT3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZh
bHVhdGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2
YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAgaWYgKCF2YWx1ZU9yRXhj
ZXB0aW9uKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50ZXJlZCBleGNlcHRpb24g
d2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2YWx1ZU9yRXhjZXB0aW9u
LmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4g
dmFsdWVPckV4Y2VwdGlvbi52YWx1ZSgpLnRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hl
ci0+ZnJvbnRlbmRHbG9iYWxPYmplY3QoKSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgT3B0aW9uYWw8
Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9v
bGVhbihJbnNwZWN0b3IKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc0Rl
YnVnZ2luZ0VuYWJsZWQoKQogewotICAgIHJldHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFu
KG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygi
aXNEZWJ1Z2dpbmdFbmFibGVkIl9zKSkudmFsdWVPcihmYWxzZSk7CisgICAgcmV0dXJuIGV2YWx1
YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29t
bWFuZFdpdGhSZXN1bHRTeW5jKCJpc0RlYnVnZ2luZ0VuYWJsZWQiX3MpKS52YWx1ZV9vcihmYWxz
ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0RGVidWdnaW5n
RW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9pZCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpzZXREZWJ1Z2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAog
Ym9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1RpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZCgpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVu
ZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc1RpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZCJfcykpLnZhbHVlT3IoZmFsc2UpOworICAgIHJldHVybiBldmFsdWF0
aW9uUmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1h
bmRXaXRoUmVzdWx0U3luYygiaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJsZWQiX3MpKS52YWx1ZV9v
cihmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0VGlt
ZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTM2MSw3ICszNjEsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldFRpbWVsaW5lUHJvZmlsaW5nRW5h
YmxlZChib29sIGVuYWJsZWQpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
aXNQcm9maWxpbmdKYXZhU2NyaXB0KCkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGlvblJlc3VsdFRv
Qm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3Vs
dFN5bmMoImlzUHJvZmlsaW5nSmF2YVNjcmlwdCJfcykpLnZhbHVlT3IoZmFsc2UpOworICAgIHJl
dHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5k
aXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygiaXNQcm9maWxpbmdKYXZhU2NyaXB0Il9zKSku
dmFsdWVfb3IoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGEyNDk1OGI3YjJkZTE3MWNhNzZi
YWU5NmY1MzYwYWFlZjkyZjEzZmIuLjUxMjJhMjMxYzVmZWE5OGEyNThhMzM0M2QxOTAwMDUyNDI3
MDZlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZT4gZG9ja1NpZGVGcm9tU3RyaW5nKGNvbnN0IFN0cmkK
ICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6TGVmdDsK
ICAgICBpZiAoZG9ja1NpZGVTdHJpbmcgPT0gImJvdHRvbSIpCiAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJvdHRvbTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpzdXBwb3J0c0RvY2tTaWRlKGNvbnN0IFN0cmluZyYgZG9ja1NpZGVTdHJpbmcp
CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNldEZvcmNl
ZEFwcGVhcmFuY2UoU3RyaW5nIGFwcGVhcmFuY2UpCiAgICAgfQogCiAgICAgaWYgKG1fZnJvbnRl
bmRQYWdlKQotICAgICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZShXVEY6Om51bGxvcHQpOworICAgICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0VXNlRGFya0Fw
cGVhcmFuY2VPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAg
ICAgbV9jbGllbnQtPnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OkFwcGVhcmFuY2U6OlN5c3RlbSk7CiB9CkBAIC00MTUsNyArNDE1LDcgQEAgU3RyaW5nIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6cG9ydCgpIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgYXV0byBwYWdlSUQgPSBt
X2Zyb250ZW5kUGFnZSA/IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5wYWdlSUQoKSA6IFdU
Rjo6bnVsbG9wdDsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJvbnRlbmRQYWdlID8gbV9mcm9udGVu
ZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogc3RkOjpudWxsb3B0OwogICAgIFBhc3RlYm9h
cmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShX
VEZNb3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFzdGVib2FyZDo6Q2Fubm90
U21hcnRSZXBsYWNlKTsKIH0KIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB2b2lkIHBvcHVs
YXRlQ29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9zdDo6Q29udGV4dE1lbnVJ
dGVtPiYmCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHR5cGUgPSBpdGVtLnR5cGUgPT0gImNo
ZWNrYm94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlOwotICAgICAgICBhdXRv
IGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1C
YXNlQ3VzdG9tVGFnICsgaXRlbS5pZC52YWx1ZU9yKDApKTsKKyAgICAgICAgYXV0byBhY3Rpb24g
PSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3Rv
bVRhZyArIGl0ZW0uaWQudmFsdWVfb3IoMCkpOwogICAgICAgICBDb250ZXh0TWVudUl0ZW0gbWVu
dUl0ZW0gPSB7IHR5cGUsIGFjdGlvbiwgaXRlbS5sYWJlbCB9OwogICAgICAgICBpZiAoaXRlbS5l
bmFibGVkKQogICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZCgqaXRlbS5lbmFibGVkKTsK
QEAgLTYzNywyMyArNjM3LDIzIEBAIHN0YXRpYyBPcHRpb25hbDxEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudDo6VmFsdWVQYXlsb2FkPiB2YWx1ZVBheWxvYWRGcm9tSlNPTlZhbHVlCiAgICAgY2FzZSBK
U09OOjpWYWx1ZTo6VHlwZTo6TnVsbDoKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBlOjpPYmpl
Y3Q6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY2FzZSBKU09OOjpW
YWx1ZTo6VHlwZTo6Qm9vbGVhbjoKLSAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50OjpWYWx1ZVBheWxvYWQodmFsdWUtPmFzQm9vbGVhbigpLnZhbHVlT3IoZmFsc2UpKTsKKyAg
ICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQodmFsdWUt
PmFzQm9vbGVhbigpLnZhbHVlX29yKGZhbHNlKSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpU
eXBlOjpEb3VibGU6Ci0gICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFs
dWVQYXlsb2FkKHZhbHVlLT5hc0RvdWJsZSgpLnZhbHVlT3IoMCkpOworICAgICAgICByZXR1cm4g
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZCh2YWx1ZS0+YXNEb3VibGUoKS52
YWx1ZV9vcigwKSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBlOjpJbnRlZ2VyOgotICAg
ICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZChzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KHZhbHVlLT5hc0ludGVnZXIoKS52YWx1ZU9yKDApKSk7CisgICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4odmFsdWUtPmFzSW50ZWdlcigpLnZhbHVlX29yKDApKSk7CiAKICAgICBjYXNl
IEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHZhbHVlLT5hc1N0cmluZygpKTsKICAgICB9CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2dE
aWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNvbnN0IFN0cmluZyYgcGF5
bG9hZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
aGFkZXJQcm9ncmFtLmNwcAppbmRleCBkOTA5OWYxYmU4NzY4MmRiMjljMzZjOTZiZGE5OWMxNThi
YzgwMDZiLi5kZTVjZDZlOTUxOTk4NGJhNWJkMzhmMzFiNzBkNTczMTIzYWUwMmVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRlclByb2dyYW0uY3Bw
CkBAIC0yNDksMTQgKzI0OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpT
aGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWlsZE9iagogICAgICAgICAg
ICAgICAgICAgICBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6UHJvZ3JhbVR5cGU6OlJl
bmRlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAogI2VuZGlmCiAgICAg
ICAgIFsmXSAoTW9ub3N0YXRlKSAtPiBQcm9ncmFtVHlwZVR5cGUgewogI2lmIEVOQUJMRShXRUJH
TCkgfHwgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
I2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICk7CiAgICAgaWYgKCFwcm9ncmFtVHlw
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCmluZGV4IDhjNzIxNTdiOGM5YzJhNTI1NDJkNDU4NjNiZTZjODM2ZTNhZWUzYmYuLjEwY2Yy
ODU5MDRmOWQ2MTMzNjZjNmI3MDViNWFlY2FjNjA3YjVmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTkzNSw3ICs5MzUsNyBA
QCBFeGNlcHRpb25PcjxDU1NTdHlsZVJ1bGUqPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxl
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiAgICAgaWYgKHRleHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiB0ZXh0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gYWRkUnVs
ZVJlc3VsdCA9IG1fcGFnZVN0eWxlU2hlZXQtPmFkZFJ1bGUoc2VsZWN0b3IsIGVtcHR5U3RyaW5n
KCksIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBhZGRSdWxlUmVzdWx0ID0gbV9wYWdlU3R5bGVT
aGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgc3RkOjpudWxsb3B0KTsKICAg
ICBpZiAoYWRkUnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGFkZFJ1
bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDZjZWRhYjNjNTg5OGZhODRkZDU5ZjYx
MWY3MTUwMTgzYzAyY2FlZWUuLjllNjliMjM0MWI5NTFhZWZjYjlkMTlkNDM1YTk4YjY1OWI2YTUx
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCog
ZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBk
YXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8
U3RyaW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBjbGVh
cihPcHRpb25hbDxTdHJpbmc+IHByZXNlcnZlZExvYWRlcklkID0gc3RkOjpudWxsb3B0KTsKICAg
ICBWZWN0b3I8UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFuaW1hdGlvbkFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQuY3BwCmluZGV4IDllN2FkOTk1MDk2YzlhYWY5Njg4NGU3NDE4NTRhMTNkYWFiMzlj
ZTIuLjMwZDc2MmZjM2M4Y2E1M2RhN2I4MzllNGZmODMxMDIwMGFkZTc5MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0
aW9uQWdlbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwcm90b2NvbFZhbHVlRm9yU2Vjb25kcyhjb25zdCBT
ZWNvbmRzJiBzZWNvbmRzKQogewogICAgIGlmIChzZWNvbmRzID09IFNlY29uZHM6OmluZmluaXR5
KCkgfHwgc2Vjb25kcyA9PSBTZWNvbmRzOjpuYW4oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vjb25kcy5t
aWxsaXNlY29uZHMoKTsKIH0KIApAQCAtODYsNyArODYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJv
dG9jb2w6OkFuaW1hdGlvbjo6UGxheWJhY2tEaXJlY3Rpb24+IHByb3RvY29sVmFsdWVGb3JQbGF5
YmFjawogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFs
PFByb3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVlRm9yRmlsbE1vZGUo
RmlsbE1vZGUgZmlsbE1vZGUpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBy
b3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVlRm9yRmlsbE1vZGUoRmls
bE1vZGUKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBSZWY8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6QW5pbWF0aW9uOjpLZXlmcmFtZT4+IGJ1aWxkT2JqZWN0Rm9y
S2V5ZnJhbWVzKEtleWZyYW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
ZDYyNjc2OTE3ZWEwNzFlZWMxOGMwZjYwNTZlZGU2OWQ4Y2IzYjc4OS4uYzJiMTgwMDM3ZTk0N2Nj
NmJkNTI2YzM0NmNkYzdhOGFjNmZmYmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTkzOSw3ICs5MzksNyBA
QCBPcHRpb25hbDxQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZT4gSW5zcGVjdG9yQ1NT
QWdlbnQ6OmxheW91dENvbnRleHRUeXBlRgogewogICAgIGlmIChpczxSZW5kZXJHcmlkPihyZW5k
ZXJlcikpCiAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlwZTo6
R3JpZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHN0YXRpYyB2b2lkIHB1c2hDaGlsZHJlbk5vZGVzVG9Gcm9udGVuZElmTGF5b3V0Q29u
dGV4dFR5cGVQcmVzZW50KEluc3BlY3RvckRPTUFnZW50JiBkb21BZ2VudCwgQ29udGFpbmVyTm9k
ZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYjE2Nzg0ODA5MDgyZTY5YzIxZjNmOTYwZTI2
ZTAxY2RlNzY3YTU4Ny4uZjA0NWMzNDI2MWY1OGY3NzZlZDNhY2JhZDkxNDhmMmNhNGNkOWQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZSgpCiAKICAgICByZXNldCgp
OwogCi0gICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBXVEY6Om51bGxvcHQ7
CisgICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4geyB9OwogfQpAQCAtMjg0LDcgKzI4NCw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRSZWNvcmRpbmdBdXRvQ2FwdHVy
ZUZyYW1lCiAgICAgaWYgKGNvdW50ID4gMCkKICAgICAgICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVy
ZUZyYW1lQ291bnQgPSBjb3VudDsKICAgICBlbHNlCi0gICAgICAgIG1fcmVjb3JkaW5nQXV0b0Nh
cHR1cmVGcmFtZUNvdW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3JlY29yZGluZ0F1dG9D
YXB0dXJlRnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IDAwYzRkYjNkNmU3ZDk5NDk0OWZiOTBjZWRjMWJjOTdjMmYxOTc4YmUuLmU2
MzYyYzU2ZWNhNzAwNzU0ZDFhNDNlNDZhMDFmOGFlZmJjOGNlOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0x
MzUsMTMgKzEzNSwxMyBAQCBzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBzaXNVQ2hhcltdID0geyAw
eDIwMjYsIDAgfTsKIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogewogICAgIGlmICghY29sb3JPYmplY3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JB
Q29sb3I6OnJLZXkpOwogICAgIGF1dG8gZyA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3Rv
Y29sOjpET006OlJHQkFDb2xvcjo6Z0tleSk7CiAgICAgYXV0byBiID0gY29sb3JPYmplY3QtPmdl
dEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpiS2V5KTsKICAgICBpZiAoIXIgfHwg
IWcgfHwgIWIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+Z2V0RG91YmxlKFByb3Rv
Y29sOjpET006OlJHQkFDb2xvcjo6YUtleSk7CiAgICAgaWYgKCFhKQpAQCAtMTUxLDcgKzE1MSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIGNvbG9yT2JqZWN0KQogCiBzdGF0aWMgQ29sb3IgcGFyc2VDb25maWdDb2xvcihjb25zdCBT
dHJpbmcmIGZpZWxkTmFtZSwgSlNPTjo6T2JqZWN0JiBjb25maWdPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIHBhcnNlQ29sb3IoY29uZmlnT2JqZWN0LmdldE9iamVjdChmaWVsZE5hbWUpKS52YWx1ZU9y
KENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICByZXR1cm4gcGFyc2VDb2xvcihjb25maWdP
YmplY3QuZ2V0T2JqZWN0KGZpZWxkTmFtZSkpLnZhbHVlX29yKENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VRdWFkKFJlZjxKU09OOjpBcnJheT4mJiBxdWFk
QXJyYXksIEZsb2F0UXVhZCogcXVhZCkKQEAgLTEyNDAsNyArMTI0MCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdoCiAgICAgfQogCiAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5p
cXVlPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdo
dENvbmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4o
UHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tleSkudmFsdWVPcihmYWxz
ZSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZv
S2V5KS52YWx1ZV9vcihmYWxzZSk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFy
c2VDb25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmNvbnRlbnRDb2xv
cktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5w
YWRkaW5nID0gcGFyc2VDb25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6
OnBhZGRpbmdDb2xvcktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxp
Z2h0Q29uZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hs
aWdodENvbmZpZzo6Ym9yZGVyQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwpA
QCAtMTI5Niw4ICsxMjk2LDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5PiYKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFk
PiBxdWFkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIG91dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7
CiAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6
OkhpZ2hsaWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBh
cnNlQ29sb3IoV1RGTW92ZShjb2xvcikpLnZhbHVlT3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OwotICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1v
dmUob3V0bGluZUNvbG9yKSkudmFsdWVPcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAg
aGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihXVEZNb3ZlKGNvbG9yKSkudmFs
dWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIGhpZ2hsaWdodENvbmZpZy0+Y29u
dGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1vdmUob3V0bGluZUNvbG9yKSkudmFsdWVfb3Io
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNv
b3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZh
bHNlOwogICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVhZChXVEZNb3ZlKHF1YWQpLCAqaGlnaGxp
Z2h0Q29uZmlnKTsKIH0KQEAgLTE0NjMsOCArMTQ2Myw4IEBAIFByb3RvY29sOjpFcnJvclN0cmlu
Z09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShjb25zdCBQcm90b2Nv
bDo6CiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBhdXRvIGhpZ2hs
aWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25m
aWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdh
eXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgotICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKFdURk1vdmUoY29sb3IpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrKTsKLSAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBh
cnNlQ29sb3IoV1RGTW92ZShvdXRsaW5lQ29sb3IpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3BhcmVu
dEJsYWNrKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihX
VEZNb3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgICAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihXVEZNb3ZlKG91
dGxpbmVDb2xvcikpLnZhbHVlX29yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAgICAgICAg
bV9vdmVybGF5LT5oaWdobGlnaHROb2RlKGZyYW1lLT5vd25lckVsZW1lbnQoKSwgKmhpZ2hsaWdo
dENvbmZpZyk7CiAgICAgfQogCkBAIC0xNDkxLDExICsxNDkxLDExIEBAIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OnNob3dHcmlkT3Zl
cmxheShJbnNwCiAKICAgICBJbnNwZWN0b3JPdmVybGF5OjpHcmlkOjpDb25maWcgY29uZmlnOwog
ICAgIGNvbmZpZy5ncmlkQ29sb3IgPSAqcGFyc2VkQ29sb3I7Ci0gICAgY29uZmlnLnNob3dMaW5l
TmFtZXMgPSBzaG93TGluZU5hbWVzLnZhbHVlT3IoZmFsc2UpOwotICAgIGNvbmZpZy5zaG93TGlu
ZU51bWJlcnMgPSBzaG93TGluZU51bWJlcnMudmFsdWVPcihmYWxzZSk7Ci0gICAgY29uZmlnLnNo
b3dFeHRlbmRlZEdyaWRMaW5lcyA9IHNob3dFeHRlbmRlZEdyaWRMaW5lcy52YWx1ZU9yKGZhbHNl
KTsKLSAgICBjb25maWcuc2hvd1RyYWNrU2l6ZXMgPSBzaG93VHJhY2tTaXplcy52YWx1ZU9yKGZh
bHNlKTsKLSAgICBjb25maWcuc2hvd0FyZWFOYW1lcyA9IHNob3dBcmVhTmFtZXMudmFsdWVPcihm
YWxzZSk7CisgICAgY29uZmlnLnNob3dMaW5lTmFtZXMgPSBzaG93TGluZU5hbWVzLnZhbHVlX29y
KGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0xpbmVOdW1iZXJzID0gc2hvd0xpbmVOdW1iZXJzLnZh
bHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0V4dGVuZGVkR3JpZExpbmVzID0gc2hvd0V4
dGVuZGVkR3JpZExpbmVzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd1RyYWNrU2l6
ZXMgPSBzaG93VHJhY2tTaXplcy52YWx1ZV9vcihmYWxzZSk7CisgICAgY29uZmlnLnNob3dBcmVh
TmFtZXMgPSBzaG93QXJlYU5hbWVzLnZhbHVlX29yKGZhbHNlKTsKIAogICAgIG1fb3ZlcmxheS0+
c2V0R3JpZE92ZXJsYXlGb3JOb2RlKCpub2RlLCBjb25maWcpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCmluZGV4IGQyMjEzZjZkYzc3MWRmMWE0NzU0OTI4NmZhODMzZjgwMTQ5YzMzYmUuLjc1ZGU1
N2E1ZWQ4ZjhlN2NmMGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFy
dChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFjdG9yeS0+b3BlbigqY29u
dGV4dCgpLCBkYXRhYmFzZU5hbWUsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byByZXN1bHQgPSBp
ZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwgc3RkOjpudWxsb3B0KTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlcXVlc3RDYWxsYmFj
aygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4iKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQzMDAxMmM1ZjE3YWI3ZTMzMmQ5MjBlOTkzODVi
ODMyZWQ1YWM1YzUuLmQ5OTgzYzAwNjgzMTYzNzUyMTMwYmM2NThkNmQ1ZDc3MDk1ZmY1OTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFJlZjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHREZWNvZGVyKGNvbnN0IFN0
cmluZyYKIE9wdGlvbmFsPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp0ZXh0Q29udGVu
dEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKICAg
ICBpZiAoIUluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRBc1RleHQoY2FjaGVkUmVz
b3VyY2UubWltZVR5cGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgYmFz
ZTY0RW5jb2RlZDsKQEAgLTEzNjgsNyArMTM2OCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gSW5zcGVj
dG9yTmV0d29ya0FnZW50Ojp0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCBz
dGF0aWMgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJlc291cmNlRGF0YShjb25zdCBO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UgogICAgIGlmIChyZXNvdXJjZURhdGEuY2FjaGVkUmVzb3Vy
Y2UoKSkKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6dGV4dENvbnRlbnRG
b3JDYWNoZWRSZXNvdXJjZSgqcmVzb3VyY2VEYXRhLmNhY2hlZFJlc291cmNlKCkpOwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoT3RoZXJSZXF1ZXN0cyhjb25zdCBKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNjM5MzJkYWY5
MTY4YmZiYzZhZWUzYmUyZWY3Y2MzMTJjNGMyMTQxZC4uMTExMWFjYzI1ODhjNjkxNzhjYzY0Yjkz
MTI4OTRjNDZhMTI0OGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzY2LDI1ICszNjYsMjUgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKCkK
ICAgICBvdmVycmlkZVVzZXJBZ2VudChudWxsU3RyaW5nKCkpOwogICAgIHNldEVtdWxhdGVkTWVk
aWEoZW1wdHlTdHJpbmcoKSk7CiAjaWYgRU5BQkxFKERBUktfTU9ERV9DU1MpIHx8IEhBVkUoT1Nf
REFSS19NT0RFX1NVUFBPUlQpCi0gICAgc2V0Rm9yY2VkQXBwZWFyYW5jZShXVEY6Om51bGxvcHQp
OworICAgIHNldEZvcmNlZEFwcGVhcmFuY2Uoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAg
YXV0byYgaW5zcGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0ZWRQYWdlLnNldHRpbmdzKCk7
Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
SW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGlu
Z3Muc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZEluc3BlY3Rvck92ZXJyaWRlKFdURjo6
bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEltYWdlc0VuYWJsZWRJbnNw
ZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5z
ZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb25JbnNwZWN0b3JPdmVycmlkZShX
VEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRNb2NrQ2FwdHVyZURl
dmljZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0
ZWRQYWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NJbnNwZWN0b3JPdmVycmlk
ZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRTY3JpcHRFbmFi
bGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0
dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rvck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7
Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlckluc3BlY3Rv
ck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFdl
YlJUQ0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAg
ICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2VjdXJpdHlFbmFibGVkSW5zcGVjdG9yT3Zl
cnJpZGUoV1RGOjpudWxsb3B0KTsKLQotICAgIG1fY2xpZW50LT5zZXREZXZlbG9wZXJQcmVmZXJl
bmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQsIFdURjo6bnVsbG9wdCk7Ci0gICAgbV9j
bGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRl
dmVsb3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVuYWJsZWQsIFdURjo6bnVsbG9wdCk7Ci0g
ICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGll
bnQ6OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQsIFdURjo6
bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQ
YWdlU2V0dGluZ3Muc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZEluc3BlY3Rvck92ZXJy
aWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEltYWdlc0Vu
YWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VT
ZXR0aW5ncy5zZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb25JbnNwZWN0b3JP
dmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRNb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAg
ICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NJbnNwZWN0
b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRT
Y3JpcHRFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0
ZWRQYWdlU2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rvck92ZXJyaWRlKHN0ZDo6
bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRl
ckluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRp
bmdzLnNldFdlYlJUQ0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxs
b3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2VjdXJpdHlFbmFibGVkSW5z
cGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKworICAgIG1fY2xpZW50LT5zZXREZXZlbG9w
ZXJQcmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVmZXJlbmNl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQsIHN0ZDo6bnVsbG9wdCk7
CisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JD
bGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVuYWJsZWQsIHN0ZDo6bnVs
bG9wdCk7CisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNw
ZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0dXJlRGV2aWNlc0VuYWJs
ZWQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNTEwLDcgKzUxMCw3
IEBAIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4gYnVpbGRPYmplY3RGb3JDb29r
aWUoY29uc3QgQ29va2llJiBjb29raWUpCiAgICAgICAgIC5zZXRWYWx1ZShjb29raWUudmFsdWUp
CiAgICAgICAgIC5zZXREb21haW4oY29va2llLmRvbWFpbikKICAgICAgICAgLnNldFBhdGgoY29v
a2llLnBhdGgpCi0gICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMCkp
CisgICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlX29yKDApKQogICAgICAg
ICAuc2V0U2Vzc2lvbihjb29raWUuc2Vzc2lvbikKICAgICAgICAgLnNldEh0dHBPbmx5KGNvb2tp
ZS5odHRwT25seSkKICAgICAgICAgLnNldFNlY3VyZShjb29raWUuc2VjdXJlKQpAQCAtNTY5LDMx
ICs1NjksMzEgQEAgc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJv
dG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmUKICAgICBjb29raWUubmFtZSA9IGNv
b2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6Om5hbWVLZXkpOwog
ICAgIGlmICghY29va2llLm5hbWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29r
aWUudmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2ll
Ojp2YWx1ZUtleSk7CiAgICAgaWYgKCFjb29raWUudmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVuIGNvb2tpZSI7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgY29va2llLmRvbWFpbiA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3Rv
Y29sOjpQYWdlOjpDb29raWU6OmRvbWFpbktleSk7CiAgICAgaWYgKCFjb29raWUuZG9tYWluKSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21haW4gaW4g
Z2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVj
dC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhLZXkpOwogICAgIGlmICgh
Y29va2llLnBhdGgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Ig
a2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGh0dHBPbmx5
ID0gY29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6Omh0dHBP
bmx5S2V5KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIklu
dmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGNvb2tpZS5odHRwT25seSA9ICpodHRwT25seTsKQEAgLTYwMSw3ICs2MDEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZQogICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0LT5n
ZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSk7CiAgICAgaWYgKCFz
ZWN1cmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNl
Y3VyZSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5zZWN1cmUgPSAq
c2VjdXJlOwpAQCAtNjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb29raWU+IHBhcnNl
Q29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlCiAgICAg
Y29va2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpleHBpcmVzS2V5KTsKICAgICBpZiAoIXNlc3Npb24gJiYgIWNvb2tpZS5leHBpcmVz
KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBleHBpcmVz
IGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2llLnNlc3Npb24gPSAqc2Vz
c2lvbjsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxDb29raWU+IHBhcnNl
Q29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlCiAgICAg
YXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6OnNhbWVTaXRlS2V5KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBn
aXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2FtZVNpdGUgPSBQcm90b2NvbDo6
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpQYWdlOjpDb29raWVT
YW1lU2l0ZVBvbGljeT4oc2FtZVNpdGVTdHJpbmcpOwogICAgIGlmICghc2FtZVNpdGUpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdp
dmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc3dpdGNoIChzYW1lU2l0ZS52YWx1ZSgpKSB7
CkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3RyaW5nJgogUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRGb3JjZWRBcHBlYXJh
bmNlKE9wdGlvbmFsPFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYmIGFwcGVhcmFuY2UpCiB7
CiAgICAgaWYgKCFhcHBlYXJhbmNlKSB7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS5zZXRVc2VE
YXJrQXBwZWFyYW5jZU92ZXJyaWRlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1faW5zcGVjdGVk
UGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3ROb2RlKFByb3Rv
Y29sOjpET006OgogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwogCi0gICAgcmV0dXJuIHNuYXBz
aG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29s
dXRpb246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJf
cywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiB9CiAKIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3Qo
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFByb3RvY29sOjpQYWdlOjpDb29y
ZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25hcHNob3RS
ZWN0KGludCB4LCBpbnQgeSwgaQogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwogCi0gICAgcmV0
dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVz
ZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiB9CiAK
ICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKQEAgLTExMTgsNyArMTExOCw3IEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2Ny
ZWVuU2l6ZU92ZXJyaWRlKE9wdGlvbmFsCiAgICAgaWYgKGhlaWdodCAmJiAqaGVpZ2h0IDw9IDAp
CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiU2NyZWVuIGhlaWdodCBvdmVycmlkZSBz
aG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIl9zKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS5t
YWluRnJhbWUoKS5zZXRPdmVycmlkZVNjcmVlblNpemUoRmxvYXRTaXplKHdpZHRoLnZhbHVlT3Io
MCksIGhlaWdodC52YWx1ZU9yKDApKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLm1haW5GcmFtZSgp
LnNldE92ZXJyaWRlU2NyZWVuU2l6ZShGbG9hdFNpemUod2lkdGgudmFsdWVfb3IoMCksIGhlaWdo
dC52YWx1ZV9vcigwKSkpOwogICAgIHJldHVybiB7IH07CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCmluZGV4IDkwNmE4ZTg0M2JmNzQ1ZDBlNGQzMGNkMWRlMjRiZWZlYzVjNTkwOTEuLjU0
MTM3MDdiNTdkOTRlYWIyM2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dG9n
Z2xlTWVtb3J5SW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUpCiB2b2lkIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVRpbWVsaW5lSW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUg
c3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0ZTo6U3RhcnQpCi0gICAg
ICAgIGludGVybmFsU3RhcnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgaW50ZXJuYWxTdGFydChz
dGQ6Om51bGxvcHQpOwogICAgIGVsc2UKICAgICAgICAgaW50ZXJuYWxTdG9wKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VE
T01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjODhiYmRjMDNkMjU0MTBmYjY5NThiMGYwOWFmYzVi
ZjE4OGRiMjU3Li41ZmY5NTZjMGQ1MjI3NmY5Yzk0MDQ4NmZmNWMwMGQ0NWI4ZmZjNTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8c2l6ZV90PiBjYWxjdWxhdGVEaXN0YW5jZShOb2RlJiBjaGlsZCwgTm9kZSYgYW5jZXN0b3Ip
CiAKICAgICAgICAgY3VycmVudCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUo
Y3VycmVudCk7CiAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IHJldHVybiBkaXN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcAppbmRl
eCA2MzNiY2U2ZThmM2MwNzg1NjMyZWI3ZjI2ZDE3MmY2MDE2YjNlZmQ5Li4yYjkwNzM1N2NiY2Jh
YjViNTA5ZTlkNTgyYzAzNGNkMDhmM2M0ZTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9u
U2NvcGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVXNlckdl
c3R1cmVFbXVsYXRpb25TY29wZTo6VXNlckdlc3R1cmVFbXVsYXRpb25TY29wZShQYWdlJiBpbnNw
ZWN0ZWRQYWdlLCBib29sIGVtdWxhdGVVc2VyR2VzdHVyZSkKICAgICA6IG1fcGFnZUNocm9tZUNs
aWVudChpbnNwZWN0ZWRQYWdlLmNocm9tZSgpLmNsaWVudCgpKQotICAgICwgbV9nZXN0dXJlSW5k
aWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KQorICAgICwgbV9n
ZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KQog
ICAgICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgICwgbV91
c2VyV2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5o
CmluZGV4IGVhYTI0MmYxOGRmMGU5YTcyZTJlM2QwMmI1NzVhYjY3YjE5Zjg2ZTMuLmMzOWQ1NjUz
NDQ1NzQ0ZDJmYTYyMjg4ZjNhMjlmZGU5NmRmYzFmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJn
aW5UeXBlcy5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4gewog
ICAgIC8vIGluZmxvdyBjaGlsZCdzIGNhY2hlZCBtYXJnaW4gdmFsdWVzLgogICAgIHN0cnVjdCBQ
b3NpdGl2ZUFuZE5lZ2F0aXZlUGFpciB7CiAgICAgICAgIHN0cnVjdCBWYWx1ZXMgewotICAgICAg
ICAgICAgYm9vbCBpc05vblplcm8oKSBjb25zdCB7IHJldHVybiBwb3NpdGl2ZS52YWx1ZU9yKDAp
IHx8IG5lZ2F0aXZlLnZhbHVlT3IoMCk7IH0KKyAgICAgICAgICAgIGJvb2wgaXNOb25aZXJvKCkg
Y29uc3QgeyByZXR1cm4gcG9zaXRpdmUudmFsdWVfb3IoMCkgfHwgbmVnYXRpdmUudmFsdWVfb3Io
MCk7IH0KIAogICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gcG9zaXRpdmU7CiAgICAg
ICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBuZWdhdGl2ZTsKQEAgLTc0LDE0ICs3NCwxNCBA
QCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0
IG1hcmdpbkJlZm9yZShjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHVzZWRWZXJ0aWNhbE1hcmdp
bikKIHsKLSAgICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5iZWZv
cmUudmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSk7
CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuYmVmb3JlLnZh
bHVlX29yKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlKTsKIH0K
IAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFVzZWRWZXJ0aWNh
bE1hcmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKQogewogICAgIGlmICh1c2VkVmVydGljYWxNYXJn
aW4uY29sbGFwc2VkVmFsdWVzLmlzQ29sbGFwc2VkVGhyb3VnaCkKICAgICAgICAgcmV0dXJuIDBf
bHU7Ci0gICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRWYWx1ZXMuYWZ0ZXIu
dmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsKKyAg
ICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5hZnRlci52YWx1ZV9v
cih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsKIH0KIAogc3Ry
dWN0IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB7CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBV
c2VkSG9yaXpvbnRhbE1hcmdpbiB7CiB9OwogCiBzdHJ1Y3QgUHJlY29tcHV0ZWRNYXJnaW5CZWZv
cmUgewotICAgIExheW91dFVuaXQgdXNlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gY29sbGFwc2Vk
VmFsdWUudmFsdWVPcihub25Db2xsYXBzZWRWYWx1ZSk7IH0KKyAgICBMYXlvdXRVbml0IHVzZWRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlZFZhbHVlLnZhbHVlX29yKG5vbkNvbGxhcHNl
ZFZhbHVlKTsgfQogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkVmFsdWU7CiAgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gY29sbGFwc2VkVmFsdWU7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQ
b3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW5C
ZWZvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4
dC5jcHAKaW5kZXggNTA2ZTQ3M2Y2Y2RkYjFhMjdmOTRjYjZjNzQ5ZjljMGUxZjdhMGNhNS4uY2U1
Y2E3NDc2MThjYzc4NmZhYzlhOTg0ZjljNTk4OTRlMDg4YjhkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMTI3LDggKzEyNyw4
IEBAIHN0YXRpYyBib29sIGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChjb25zdCBGbG9hdGlu
Z1N0YXRlJiBmbG9hdGluZ1N0YXRlKQogICAgIGF1dG8mIGZsb2F0cyA9IGZsb2F0aW5nU3RhdGUu
ZmxvYXRzKCk7CiAgICAgYXV0byByaWdodEVkZ2VPZkxlZnRGbG9hdHMgPSBMYXlvdXRVbml0Ojpt
aW4oKTsKICAgICBhdXRvIGxlZnRFZGdlT2ZSaWdodEZsb2F0cyA9IExheW91dFVuaXQ6Om1heCgp
OwotICAgIFdURjo6T3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVmdEJvdHRvbTsKLSAgICBXVEY6Ok9w
dGlvbmFsPExheW91dFVuaXQ+IHJpZ2h0Qm90dG9tOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gbGVmdEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHJpZ2h0Qm90
dG9tOwogCiAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBmbG9hdHMpIHsKICAgICAgICAgaWYg
KGZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpIHsKQEAgLTE3Miw3ICsxNzIsNyBAQCBzdGF0
aWMgRmxvYXRQYWlyOjpMZWZ0UmlnaHRJbmRleCBmaW5kQXZhaWxhYmxlUG9zaXRpb24oRmxvYXRB
dm9pZGVyJiBmbG9hdEF2b2lkZQogICAgIGZvciAoYXV0byBpdGVyYXRvciA9IGJlZ2luKGZsb2F0
cywgeyBmbG9hdEF2b2lkZXIudG9wKCkgfSk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikg
ewogICAgICAgICBBU1NFUlQoISgqaXRlcmF0b3IpLmlzRW1wdHkoKSk7CiAgICAgICAgIGF1dG8g
bGVmdFJpZ2h0RmxvYXRQYWlyID0gKml0ZXJhdG9yOwotICAgICAgICBpbm5lck1vc3RMZWZ0QW5k
UmlnaHQgPSBpbm5lck1vc3RMZWZ0QW5kUmlnaHQudmFsdWVPcigqbGVmdFJpZ2h0RmxvYXRQYWly
KTsKKyAgICAgICAgaW5uZXJNb3N0TGVmdEFuZFJpZ2h0ID0gaW5uZXJNb3N0TGVmdEFuZFJpZ2h0
LnZhbHVlX29yKCpsZWZ0UmlnaHRGbG9hdFBhaXIpOwogCiAgICAgICAgIC8vIE1vdmUgdGhlIGJv
eCBob3Jpem9udGFsbHkgc28gdGhhdCBpdCBlaXRoZXIKICAgICAgICAgLy8gMS4gYWxpZ25zIHdp
dGggdGhlIGN1cnJlbnQgZmxvYXRpbmcgcGFpcgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgRmxv
YXRpbmdDb250ZXh0OjpmaW5kUG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoRmxvYXRB
dm9pZGVyJiBmbG9hdEF2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfTsK
IAotICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1heChpbm5lck1vc3RMZWZ0QW5kUmln
aHQubGVmdC52YWx1ZU9yKDApLCBpbm5lck1vc3RMZWZ0QW5kUmlnaHQucmlnaHQudmFsdWVPcigw
KSkgKyAxOworICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1heChpbm5lck1vc3RMZWZ0
QW5kUmlnaHQubGVmdC52YWx1ZV9vcigwKSwgaW5uZXJNb3N0TGVmdEFuZFJpZ2h0LnJpZ2h0LnZh
bHVlX29yKDApKSArIDE7CiAgICAgICAgIGF1dG8qIGludGVyc2VjdGVkRmxvYXRCb3ggPSBvdmVy
bGFwcGluZ0Zsb2F0Qm94KHN0YXJ0SW5kZXgsIGZsb2F0QXZvaWRlcik7CiAgICAgICAgIGlmICgh
aW50ZXJzZWN0ZWRGbG9hdEJveCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU5Miw4ICs1OTIs
OCBAQCBQb3NpdGlvbkluQ29udGV4dFJvb3QgRmxvYXRQYWlyOjpib3R0b20oKSBjb25zdAogICAg
IGF1dG8qIHJpZ2h0ID0gdGhpcy0+cmlnaHQoKTsKICAgICBBU1NFUlQobGVmdCB8fCByaWdodCk7
CiAKLSAgICBhdXRvIGxlZnRCb3R0b20gPSBsZWZ0ID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRl
eHRSb290PihQb3NpdGlvbkluQ29udGV4dFJvb3QgeyBsZWZ0LT5yZWN0V2l0aE1hcmdpbigpLmJv
dHRvbSgpIH0pIDogV1RGOjpudWxsb3B0OwotICAgIGF1dG8gcmlnaHRCb3R0b20gPSByaWdodCA/
IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsg
cmlnaHQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBXVEY6Om51bGxvcHQ7CisgICAg
YXV0byBsZWZ0Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4o
UG9zaXRpb25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9
KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0gcmlnaHQgPyBPcHRpb25h
bDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IHJpZ2h0LT5y
ZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGxl
ZnRCb3R0b20gJiYgcmlnaHRCb3R0b20pCiAgICAgICAgIHJldHVybiBzdGQ6Om1heCgqbGVmdEJv
dHRvbSwgKnJpZ2h0Qm90dG9tKTsKQEAgLTY2Miw4ICs2NjIsOCBAQCBJdGVyYXRvciYgSXRlcmF0
b3I6Om9wZXJhdG9yKysoKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBuZXcgZmxvYXRpbmcncyBi
b3R0b20gZWRnZSBpcyBwb3NpdGlvbmVkIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgb25lIC13aGlj
aCBlc3NlbnRpYWxseSBtZWFucyBza2lwcGluZyBpbi1iZXR3ZWVuIGZsb2F0cyB0aGF0IGFyZSBw
b3NpdGlvbmVkIGhpZ2hlcikuCiAgICAgLy8gMy4gUmVzZXQgdGhlIHZlcnRpY2FsIHBvc2l0aW9u
IGFuZCBhbGlnbiBpdCB3aXRoIHRoZSBuZXcgbGVmdC1yaWdodCBwYWlyLiBUaGVzZSBmbG9hdHMg
YXJlIG5vdyB0aGUgaW5uZXItbW9zdCBib3hlcyBmb3IgdGhlIGN1cnJlbnQgdmVydGljYWwgcG9z
aXRpb24uCiAgICAgLy8gQXMgdGhlIHJlc3VsdCB3ZSBoYXZlIG1vcmUgaG9yaXpvbnRhbCBzcGFj
ZSBvbiB0aGUgY3VycmVudCB2ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICBhdXRvIGxlZnRCb3R0b20g
PSBtX2N1cnJlbnQubGVmdCgpID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihtX2N1
cnJlbnQubGVmdCgpLT5ib3R0b20oKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgYXV0byByaWdodEJv
dHRvbSA9IG1fY3VycmVudC5yaWdodCgpID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290
PihtX2N1cnJlbnQucmlnaHQoKS0+Ym90dG9tKCkpIDogV1RGOjpudWxsb3B0OworICAgIGF1dG8g
bGVmdEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4
dFJvb3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBh
dXRvIHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRpb25hbDxQb3NpdGlvbklu
Q29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkgfHwg
KCFyaWdodEJvdHRvbSB8fCAobGVmdEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA8ICpyaWdodEJvdHRv
bSkpOwogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJvdHRvbSA9PSByaWdodEJvdHRvbSkg
fHwgKCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRvbSAmJiAqbGVmdEJvdHRvbSA+ICpyaWdodEJv
dHRvbSkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgSXRlcmF0b3I6OnNldChQb3NpdGlvbklu
Q29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbikKIAogICAgICAgICBhdXRvIGluZGV4ID0gZmxv
YXRpbmdUeXBlID09IEZsb2F0OjpMZWZ0ID8gbV9jdXJyZW50Lm1fZmxvYXRQYWlyLmxlZnQgOiBt
X2N1cnJlbnQubV9mbG9hdFBhaXIucmlnaHQ7CiAgICAgICAgIC8vIFN0YXJ0IGZyb20gdGhlIGVu
ZCBpZiB3ZSBkb24ndCBoYXZlIGN1cnJlbnQgeWV0LgotICAgICAgICBpbmRleCA9IGluZGV4LnZh
bHVlT3IobV9mbG9hdHMuc2l6ZSgpKTsKKyAgICAgICAgaW5kZXggPSBpbmRleC52YWx1ZV9vciht
X2Zsb2F0cy5zaXplKCkpOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgaW5k
ZXggPSBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoZmxvYXRpbmdUeXBlLCBtX2Zsb2F0cywgKmluZGV4
KTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IGVhMzA4NDMxZmE0MTNjNzE4OTQzOGZkODM4MWFjZWU4NzY3MzlmM2IuLmM2YjMwYzRlNzgw
MTcxNTkwYzY2MDQwOTljYjgxM2VkNTgwZTMxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCkBAIC0yOTUsOCArMjk1LDggQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6dmFsaWRhdGVH
ZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQoKSBjb25zdAogICAgICAgICBpZiAobGF5b3V0
Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgp
KSB7CiAgICAgICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9yZGVyLXRvcC13aWR0aCAr
IHBhZGRpbmctdG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBib3JkZXItYm90dG9tLXdp
ZHRoICsgbWFyZ2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBjb250YWluaW5nIGJsb2Nr
CiAgICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IGNvbnRhaW5pbmdCbG9j
a0dlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKTsKLSAgICAgICAgICAgIEFTU0VSVChCb3hHZW9t
ZXRyeTo6Ym9yZGVyQm94VG9wKGJveEdlb21ldHJ5KSArIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9y
ZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVPcigwKSArIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKQotICAgICAgICAgICAg
ICAgICsgYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCkgKyBib3hHZW9tZXRy
eS5ib3JkZXJCb3R0b20oKSArIGJveEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCkgPT0gY29udGFpbmlu
Z0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgICAgIEFTU0VSVChCb3hHZW9tZXRyeTo6Ym9yZGVyQm94
VG9wKGJveEdlb21ldHJ5KSArIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0
cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBi
b3hHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkKKyAgICAgICAgICAgICAgICArIGJveEdlb21l
dHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKSArIGJveEdlb21ldHJ5LmJvcmRlckJvdHRv
bSgpICsgYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWluaW5nQmxvY2tIZWlnaHQp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGQ0Y2Q3
YzIxMWRkMTA1NGU1YTE4ZjQ2NWIzOGFhNzkxOWFiYmM4NDUuLmQyM2Y5ZmZkMDIyNzVhMjNlMGI4
YmNlYTQwM2Y4NjM3MzAxZDA4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTczLDcg
KzczLDcgQEAgcHVibGljOgogICAgICAgICBCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrLAog
ICAgICAgICBUYWJsZU5lZWRzQWNjZXNzVG9UYWJsZVdyYXBwZXIKICAgICB9OwotICAgIGNvbnN0
IEJveEdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChjb25zdCBCb3gmLCBPcHRpb25hbDxFc2NhcGVS
ZWFzb24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBjb25zdCBCb3hHZW9tZXRyeSYgZ2Vv
bWV0cnlGb3JCb3goY29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgfQog
ICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3Qo
KS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcAppbmRleCAyMTQ3YjExN2ZiMmVkMmM1Mjg5NWQwN2NkNjk5NDE1ZDRlZGU4
MjAzLi40ZTdjMjA5YTk5ZTMxNWNkNmIxMmY5NTZiM2M3NWEzZjM3YjY3MDFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9t
ZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhlaWdodChjb25zdCBCb3gmIGxheW91
dEJveCwgT3AKICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmJveFNpemluZygpID09IEJv
eFNpemluZzo6Q29udGVudEJveCkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQ7CiAgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChs
YXlvdXRCb3gpOwotICAgICAgICByZXR1cm4gKmhlaWdodCAtIChib3hHZW9tZXRyeS52ZXJ0aWNh
bEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKSk7Cisg
ICAgICAgIHJldHVybiAqaGVpZ2h0IC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBi
b3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7CiAgICAgfQogICAgIHJl
dHVybiB7IH07CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBMYXkK
ICAgICAgICAgaWYgKHN0eWxlLmJveFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCB8
fCBzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAgICAgICAgICByZXR1cm4g
Y29tcHV0ZWRXaWR0aDsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgIHJldHVybiAqY29tcHV0
ZWRXaWR0aCAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5o
b3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkpOworICAgICAgICByZXR1cm4gKmNvbXB1dGVk
V2lkdGggLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9y
aXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9
CkBAIC0zNjAsOCArMzYwLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6
Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdAogICAgIGF1dG8gaGVp
Z2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNh
bFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxheW91dEJveCwgY29udGFp
bmluZ0Jsb2NrSGVpZ2h0KTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMpOwogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFs
dWVzIHVzZWRWZXJ0aWNhbE1hcmdpbjsgCi0gICAgYXV0byBwYWRkaW5nVG9wID0gYm94R2VvbWV0
cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nQm90dG9tID0gYm94
R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5nVG9w
ID0gYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOworICAgIGF1dG8gcGFkZGlu
Z0JvdHRvbSA9IGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICBh
dXRvIGJvcmRlclRvcCA9IGJveEdlb21ldHJ5LmJvcmRlclRvcCgpOwogICAgIGF1dG8gYm9yZGVy
Qm90dG9tID0gYm94R2VvbWV0cnkuYm9yZGVyQm90dG9tKCk7CiAKQEAgLTM4OSwzOSArMzg5LDM5
IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBs
YWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QKICAgICBpZiAoIXRvcCAmJiAhaGVpZ2h0ICYmIGJv
dHRvbSkgewogICAgICAgICAvLyAjMQogICAgICAgICBoZWlnaHQgPSBjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCk7Ci0gICAgICAgIHVzZWRWZXJ0aWNhbE1h
cmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIHVzZWRWZXJ0aWNh
bE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgdG9wID0g
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3Jk
ZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0
b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tKTsgCiAgICAgfQogCiAgICAg
aWYgKCF0b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzIKICAgICAgICAg
dG9wID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQobGF5b3V0
Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0g
eyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
ID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBib3R0b20gPSBjb250
YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBi
b3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJC
b3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIAogICAgIGlmICghaGVp
Z2h0ICYmICFib3R0b20gJiYgdG9wKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAgIGhlaWdodCA9
IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KTsKLSAgICAg
ICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52
YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAg
ICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9
OwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRW
ZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCAr
IHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIp
OwogICAgIH0KIAogICAgIGlmICghdG9wICYmIGhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAg
Ly8gIzQKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVl
T3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52
YWx1ZV9vcigwKSB9OwogICAgICAgICB0b3AgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAodXNl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRl
ciArICpib3R0b20pOwogICAgIH0KIAogICAgIGlmICghaGVpZ2h0ICYmIHRvcCAmJiBib3R0b20p
IHsKICAgICAgICAgLy8gIzUKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBoZWlnaHQgPSBjb250YWluaW5nQmxv
Y2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNh
bE1hcmdpbi5hZnRlciArICpib3R0b20pOwogICAgIH0KIAogICAgIGlmICghYm90dG9tICYmIHRv
cCAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
ID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFy
Z2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBib3R0b20gPSBj
b250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUg
KyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3Jk
ZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIApAQCAtNDgwLDE1
ICs0ODAsMTUgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZG
bG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KICAgICBhdXRvIHdpZHRoID0gb3Zl
cnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVl
cy53aWR0aCA6IGNvbXB1dGVkV2lkdGgobGF5b3V0Qm94LCBjb250YWluaW5nQmxvY2tXaWR0aCk7
CiAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6
OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cyk7CiAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47Ci0gICAg
YXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsK
LSAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVl
T3IoMCk7CisgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCku
dmFsdWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5n
UmlnaHQoKS52YWx1ZV9vcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQgPSBib3hHZW9tZXRyeS5i
b3JkZXJMZWZ0KCk7CiAgICAgYXV0byBib3JkZXJSaWdodCA9IGJveEdlb21ldHJ5LmJvcmRlclJp
Z2h0KCk7CiAgICAgaWYgKCFsZWZ0ICYmICF3aWR0aCAmJiAhcmlnaHQpIHsKICAgICAgICAgLy8g
SWYgYWxsIHRocmVlIG9mICdsZWZ0JywgJ3dpZHRoJywgYW5kICdyaWdodCcgYXJlICdhdXRvJzog
Rmlyc3Qgc2V0IGFueSAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2lu
LXJpZ2h0JyB0byAwLgogICAgICAgICAvLyBUaGVuLCBpZiB0aGUgJ2RpcmVjdGlvbicgcHJvcGVy
dHkgb2YgdGhlIGVsZW1lbnQgZXN0YWJsaXNoaW5nIHRoZSBzdGF0aWMtcG9zaXRpb24gY29udGFp
bmluZyBibG9jayBpcyAnbHRyJyBzZXQgJ2xlZnQnIHRvIHRoZSBzdGF0aWMKICAgICAgICAgLy8g
cG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNl
dCAncmlnaHQnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9u
ZSBiZWxvdy4KLSAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5k
LnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luLmVuZC52YWx1ZV9vcigwKSB9OwogCiAgICAgICAgIGF1dG8gc3RhdGljSG9yaXpvbnRhbFBv
c2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChs
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgICAgIGlmIChpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKQpAQCAtNTMwLDcgKzUzMCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3Jt
YXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNv
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBPdGhlcndpc2UsIHNldCAnYXV0
bycgdmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLCBhbmQg
cGljayB0aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRoYXQgYXBwbGllcy4KLSAg
ICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5z
dGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkg
fTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1
ZV9vcigwKSB9OwogICAgIH0KIAogICAgIGlmICghbGVmdCAmJiAhd2lkdGggJiYgcmlnaHQpIHsK
QEAgLTYwOSw4ICs2MDksOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJlcAogICAgIGF1dG8gY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5i
ZWZvcmU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRy
eS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hH
ZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHBhZGRpbmdUb3Ag
PSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5n
Qm90dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1
dG8gYm9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJC
b3R0b20gPSBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20oKTsKIApAQCAtNjIxLDcgKzYyMSw3IEBA
IFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwCiAKICAgICBpZiAoIWJvdHRvbSkgewogICAgICAgICAv
LyAjMgotICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApOwogICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIg
PSB1c2VkTWFyZ2luQmVmb3JlOwogICAgIH0KIApAQCAtNjk0LDggKzY5NCw4IEBAIEhvcml6b250
YWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRh
bEdlb21ldHJ5KGNvbnN0CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0
ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OwogICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOwogICAgIGF1
dG8gd2lkdGggPSBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihyZXBsYWNlZEJv
eCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFpbnRzLCBvdmVycmlkZGVu
SG9yaXpvbnRhbFZhbHVlcykuY29udGVudFdpZHRoOwotICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBi
b3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBwYWRkaW5nUmln
aHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOworICAgIGF1dG8gcGFk
ZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOworICAgIGF1
dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7
CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gYm94R2VvbWV0cnkuYm9yZGVyTGVmdCgpOwogICAgIGF1
dG8gYm9yZGVyUmlnaHQgPSBib3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpOwogCkBAIC03MTAsOCAr
NzEwLDggQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93
UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QKIAogICAgIGlmICghbGVmdCB8fCAhcmln
aHQpIHsKICAgICAgICAgLy8gIzIKLSAgICAgICAgdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgIHVzZWRNYXJnaW5FbmQg
PSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7CisgICAgICAgIHVzZWRN
YXJnaW5TdGFydCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKTsK
KyAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFs
dWVfb3IoMCk7CiAgICAgfQogCiAgICAgaWYgKCF1c2VkTWFyZ2luU3RhcnQgJiYgIXVzZWRNYXJn
aW5FbmQpIHsKQEAgLTc4Niw3ICs3ODYsNyBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gmIGxheW91dEJveAogICAg
IGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRk
ZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxheW91dEJv
eCk7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKICAgICAvLyAjMQotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2Fs
TWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsg
CisgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNv
bGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDAp
LCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07IAogICAgIC8vICMy
CiAgICAgaWYgKCFoZWlnaHQpIHsKICAgICAgICAgQVNTRVJUKGlzSGVpZ2h0QXV0byhsYXlvdXRC
b3gpKTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGlu
Z0dlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZwogICAgIGF1
dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAg
ICAgLy8gIzEKLSAgICBhdXRvIHVzZWRIb3Jpem9udGFsbE1hcmdpbiA9IFVzZWRIb3Jpem9udGFs
TWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OworICAgIGF1dG8gdXNlZEhvcml6
b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250YWxN
YXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFs
dWVfb3IoMCkgfTsKICAgICAvLyAjMgogICAgIGF1dG8gd2lkdGggPSBvdmVycmlkZGVuSG9yaXpv
bnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoIDogY29t
cHV0ZWRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgp
OwogICAgIGlmICghd2lkdGgpCkBAIC04NjIsNyArODYyLDcgQEAgQ29udGVudFdpZHRoQW5kTWFy
Z2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1h
cmdpbigKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVk
aXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKLSAgICBhdXRvIHVzZWRNYXJnaW4gPSBVc2Vk
SG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9y
KDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRv
IHVzZWRNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1
ZV9vcigwKSB9OwogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdp
bihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0sIHsgb3ZlcnJpZGRlbkhv
cml6b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSk7CiB9CiAKQEAgLTkxNywxMCArOTE3
LDEwIEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVS
ZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oCiAgICAgLy8gIzEKICAgICBhdXRvJiBmb3Jt
YXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIGF1dG8gdXNl
ZFZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMg
eyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdp
biA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0
ZXIudmFsdWVfb3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxhY2VkQm94LnN0eWxlKCk7
CiAKLSAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQgPyBv
dmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodChy
ZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3RyYWludHMtPmxv
Z2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRl
blZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQu
dmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRz
ID8gdmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhlaWdodCA6IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgYXV0byBoZWlnaHRJc0F1dG8gPSAhb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCAm
JiBpc0hlaWdodEF1dG8ocmVwbGFjZWRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBzdHls
ZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIApAQCAtOTcxLDE4ICs5NzEsMTggQEAgQ29udGVu
dFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRDb250ZW50
V2lkdGhBbmRNYXJnaW4oY28KICAgICBhdXRvIHVzZWRNYXJnaW5TdGFydCA9IFsmXSB7CiAgICAg
ICAgIGlmIChvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCiAgICAgICAgICAgICBy
ZXR1cm4gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5zdGFydDsKLSAgICAgICAg
cmV0dXJuIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDBfbHUpOworICAg
ICAgICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDBfbHUp
OwogICAgIH07CiAKICAgICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBbJl0gewogICAgICAgICBpZiAo
b3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luKQogICAgICAgICAgICAgcmV0dXJuIG92
ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLm1hcmdpbi0+ZW5kOwotICAgICAgICByZXR1cm4gY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpOworICAgICAgICByZXR1cm4g
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KTsKICAgICB9OwogCiAg
ICAgYXV0byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndpZHRoID8gb3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZFdpZHRoKHJlcGxhY2VkQm94LCBo
b3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBhdXRvIGhlaWdodElzQXV0
byA9IGlzSGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjb21wdXRl
ZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29uc3Ry
YWludHMtPmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVpZ2h0ID0g
Y29tcHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2ZXJ0aWNh
bENvbnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlmICgh
d2lkdGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY1dpZHRoKCkp
IHsKICAgICAgICAgLy8gIzEKQEAgLTk5MCw3ICs5OTAsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJn
aW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1hcmdp
bihjbwogICAgIH0gZWxzZSBpZiAoKCF3aWR0aCAmJiBoZWlnaHRJc0F1dG8gJiYgIXJlcGxhY2Vk
Qm94Lmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljSGVpZ2h0
KCkgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0aW8oKSkKICAgICAgICAgfHwgKCF3aWR0
aCAmJiBoZWlnaHQgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0aW8oKSkpIHsKICAgICAg
ICAgLy8gIzIKLSAgICAgICAgd2lkdGggPSBoZWlnaHQudmFsdWVPcihyZXBsYWNlZEJveC5oYXNJ
bnRyaW5zaWNIZWlnaHQoKSkgKiByZXBsYWNlZEJveC5pbnRyaW5zaWNSYXRpbygpOworICAgICAg
ICB3aWR0aCA9IGhlaWdodC52YWx1ZV9vcihyZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNIZWlnaHQo
KSkgKiByZXBsYWNlZEJveC5pbnRyaW5zaWNSYXRpbygpOwogICAgIH0gZWxzZSBpZiAoIXdpZHRo
ICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNSYXRpbygpICYmICFy
ZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNXaWR0aCgpICYmICFyZXBsYWNlZEJveC5oYXNJbnRyaW5z
aWNIZWlnaHQoKSkgewogICAgICAgICAvLyAjMwogICAgICAgICAvLyBGSVhNRTogdW5kZWZpbmVk
IGJ1dCBzdXJlbHkgZG9hYmxlLgpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgTGF5b3V0U2l6ZSBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChjb25zdCBCb3gm
IGxheW91dEIKICAgICAgICAgYm90dG9tID0gLSp0b3A7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gIzQKLSAgICAgICAgYm90dG9tID0gV1RGOjpudWxsb3B0OworICAgICAgICBib3R0b20gPSBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRm9yIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBl
bGVtZW50cywgJ2xlZnQnIGFuZCAncmlnaHQnIG1vdmUgdGhlIGJveChlcykgaG9yaXpvbnRhbGx5
LCB3aXRob3V0IGNoYW5naW5nIHRoZWlyIHNpemUuCkBAIC0xMDcxLDE0ICsxMDcxLDE0IEBAIExh
eW91dFNpemUgRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb25PZmZz
ZXQoY29uc3QgQm94JiBsYXlvdXRCCiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KQogICAgICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGxlZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBsZWZ0ID0gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIEFTU0VSVCghYm90dG9tIHx8ICp0b3AgPT0gLSpib3R0b20pOwogICAgIEFT
U0VSVCghbGVmdCB8fCAqbGVmdCA9PSAtKnJpZ2h0KTsKIAogICAgIGF1dG8gdG9wUG9zaXRpb25P
ZmZzZXQgPSAqdG9wOwotICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0ID0gbGVmdC52YWx1ZU9y
KC0qcmlnaHQpOworICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0ID0gbGVmdC52YWx1ZV9vcigt
KnJpZ2h0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbUG9zaXRpb25dIC0+IHBvc2l0aW9uZWQgaW5mbG93IC0+IHRvcCBvZmZzZXQo
IiA8PCB0b3BQb3NpdGlvbk9mZnNldCA8PCAicHgpIGxlZnQgb2Zmc2V0KCIgPDwgbGVmdFBvc2l0
aW9uT2Zmc2V0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAg
IHJldHVybiB7IGxlZnRQb3NpdGlvbk9mZnNldCwgdG9wUG9zaXRpb25PZmZzZXQgfTsKQEAgLTEx
MDUsNyArMTEwNSw3IEBAIEVkZ2VzIEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiBPcHRpb25hbDxFZGdlcz4gRm9ybWF0dGluZ0dl
b21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91
dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0CiB7CiAgICAgaWYgKCFsYXlvdXRCb3gu
aXNQYWRkaW5nQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3gu
c3R5bGUoKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW1BhZGRpbmddIC0+IGxheW91dEJveDogIiA8PCAmbGF5b3V0Qm94KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IGFiNzlhZmI0Y2RmZjYyMjFmMDE5ZTczMmYwYmY0MDE2
MjRiMGFkMjAuLjA2MjRmMmY0ZGUxZjE4Mzk1ODQ4MTQzYzQ3ZjhhOGU3NmU4MWNkZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNzMsOCArNzMsOCBAQCBwdWJsaWM6CiAgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJv
cGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWluSGVpZ2h0KGNv
bnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IFdU
Rjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNYXhI
ZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVp
Z2h0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21w
dXRlZE1pbkhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5n
QmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGNvbXB1dGVkTWF4SGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bnRhaW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYsIExheW91dFVuaXQgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVkTWF4V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkg
Y29uc3Q7CkBAIC04NCw5ICs4NCw5IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGNvbnRlbnRI
ZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7
CiAKICAgICBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29uc3RyYWludHNGb3JPdXRP
ZkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0OwotICAgIENvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFp
bmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBXVEY6
Om51bGxvcHQpIGNvbnN0OworICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsK
KyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lkdGgoY29uc3QgQm94Jiwg
TGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxv
Y2tGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgp
LmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcApp
bmRleCA2M2YyMjAyMmVmN2ZmZjk5MjljNGI1NWM0ODcxNDc0YjdjNTA3ZWVkLi4wNDk0ODEzMTU3
ZjUzNzY0NGQ3YTBkMTkwMmRhNjE1NzNmM2M2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5j
cHAKQEAgLTYyLDkgKzYyLDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRW
YWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCgKICAgICAgICAgICAg
IGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbigqY29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAg
ICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZp
bmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspOwotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBh
ZGRpbmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGJveEdlb21ldHJ5
LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOworICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbFBh
ZGRpbmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBib3hHZW9tZXRy
eS5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2Fs
Qm9yZGVyID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJCb3R0
b20oKTsKLSAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0Fu
ZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSArIHZlcnRpY2FsTWFy
Z2luLmFmdGVyLnZhbHVlT3IoMCkgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2ZXJ0aWNhbEJvcmRlcjsK
KyAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2luUGFkZGluZ0FuZEJvcmRl
ciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyB2ZXJ0aWNhbE1hcmdpbi5h
ZnRlci52YWx1ZV9vcigwKSArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGlzPEluaXRpYWxDb250YWluaW5nQmxvY2s+KCpjb250YWlu
aW5nQmxvY2spKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggYzBmYjFmYTQ4NjczNTg4MGYzZDczZTdkZmJhOGE2YWI2NGZiMTIyMi4uOTNkZjY0
ZDgzZDNjN2I4MDRhMDdhMjk1YTkxNWUwZDhiOGRlZDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xOTcsOSArMTk3LDkgQEAgTGF5b3V0
VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CiAK
ICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmb3Jt
YXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKICAgICBpZiAoYXV0byBmbG9hdFRvcCA9
IGZsb2F0aW5nQ29udGV4dC50b3AoKSkgewotICAgICAgICB0b3AgPSBzdGQ6Om1pbigqZmxvYXRU
b3AsIHRvcC52YWx1ZU9yKCpmbG9hdFRvcCkpOworICAgICAgICB0b3AgPSBzdGQ6Om1pbigqZmxv
YXRUb3AsIHRvcC52YWx1ZV9vcigqZmxvYXRUb3ApKTsKICAgICAgICAgYXV0byBmbG9hdEJvdHRv
bSA9ICpmbG9hdGluZ0NvbnRleHQuYm90dG9tKCk7Ci0gICAgICAgIGJvdHRvbSA9IHN0ZDo6bWF4
KGZsb2F0Qm90dG9tLCBib3R0b20udmFsdWVPcihmbG9hdEJvdHRvbSkpOworICAgICAgICBib3R0
b20gPSBzdGQ6Om1heChmbG9hdEJvdHRvbSwgYm90dG9tLnZhbHVlX29yKGZsb2F0Qm90dG9tKSk7
CiAgICAgfQogICAgIHJldHVybiAqYm90dG9tIC0gKnRvcDsKIH0KQEAgLTI5Niw3ICsyOTYsNyBA
QCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVWZXJ0aWNhbFBvc2l0aW9u
Rm9yQm94QW5kQW5jZXN0b3JzKGNvbnN0CiAgICAgICAgIH0oKTsKIAogICAgICAgICBhdXRvIGNv
bXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbigqYW5jZXN0b3IsIGNvbnN0cmFpbnRzRm9yQW5jZXN0b3IuaG9yaXpvbnRhbCk7Ci0g
ICAgICAgIGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6
Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVP
cigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAg
IGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29s
bGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCks
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICAgICAgYXV0
byBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkNvbGxhcHNlKCkucHJlY29tcHV0ZWRN
YXJnaW5CZWZvcmUoKmFuY2VzdG9yLCB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5n
R2VvbWV0cnkpOwogCiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRl
KCkuYm94R2VvbWV0cnkoKmFuY2VzdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggZWE5OWY3MjUwNDlkZGQwOGY1ZjJhY2M3ZGNkNWNj
NDE1OWM2NmY3MS4uNTU5ZmUzNjM2ZjQ5OTg5Njc3ODUzODZhZDY2ZTE0ZDQ2ZGU0YmQxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTcw
LDggKzcwLDggQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRy
eTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50SGVpZ2h0QW4KIAogICAgICAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsK
ICAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKLSAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46
Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVl
T3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKLSAgICAg
ICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBi
b3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBub25Db2xs
YXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRvIGJvcmRlckFuZFBhZGRp
bmdUb3AgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3Ao
KS52YWx1ZV9vcigwKTsKICAgICAgICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDog
Y29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94KTsKIAogICAgICAgICBpZiAoaGVpZ2h0KQpAQCAtMTU1
LDE0ICsxNTUsMTQgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21l
dHJ5OjppbkZsb3dOb25SZXBsYWNlZENvbnRlbnRXaWR0aEFuZE0KICAgICAgICAgVXNlZEhvcml6
b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAgICAgIGF1dG8gYm9yZGVyTGVm
dCA9IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0byBib3JkZXJSaWdodCA9
IGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBi
b3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gcGFkZGlu
Z1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKKyAgICAgICAg
YXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7
CisgICAgICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCku
dmFsdWVfb3IoMCk7CiAKICAgICAgICAgLy8gIzEKICAgICAgICAgaWYgKHdpZHRoKSB7Ci0gICAg
ICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApICsgYm9yZGVy
TGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQg
KyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkpOworICAgICAgICAgICAg
YXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5nQmxvY2tXaWR0aCAtIChj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCkgKyBib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkpOwogICAgICAgICAgICAgaWYgKGhv
cml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApCi0gICAgICAgICAgICAgICAgdXNlZEhvcml6b250
YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgICAgICAg
ICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
LnZhbHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDApIH07
CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMgpAQCAtMTkwLDcgKzE5MCw3IEBAIENvbnRlbnRX
aWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRD
b250ZW50V2lkdGhBbmRNCiAKICAgICAgICAgLy8gIzQKICAgICAgICAgaWYgKCF3aWR0aCkgewot
ICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVl
T3IoMCkgfTsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luID0geyBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5lbmQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgICAgIHdpZHRoID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAodXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGlu
Z0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIHVzZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZCk7CiAgICAgICAgIH0KIApAQCAtMjAzLDggKzIwMyw4IEBAIENvbnRlbnRXaWR0aEFuZE1h
cmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50V2lk
dGhBbmRNCiAgICAgICAgIGF1dG8gc2hvdWxkQXBwbHlDZW50ZXJBbGlnbkZvckJsb2NrQ29udGVu
dCA9IGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRleHRBbGlnbk1vZGU6Oldl
YktpdENlbnRlciAmJiAoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0IHx8IGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgICAgICBpZiAoc2hvdWxkQXBwbHlDZW50ZXJBbGln
bkZvckJsb2NrQ29udGVudCkgewogICAgICAgICAgICAgYXV0byBib3JkZXJCb3hXaWR0aCA9IChi
b3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5zdGFydC52YWx1ZU9yKDApOwotICAgICAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBhdXRv
IG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDAp
OworICAgICAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4u
ZW5kLnZhbHVlX29yKDApOwogICAgICAgICAgICAgYXV0byBjZW50ZXJlZExvZ2ljYWxMZWZ0Rm9y
TWFyZ2luQm94ID0gc3RkOjptYXgoKGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gYm9yZGVyQm94V2lk
dGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZCkgLyAyLCAwX2x1KTsKICAgICAgICAgICAgIHVz
ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY2VudGVyZWRMb2dpY2FsTGVmdEZvck1hcmdpbkJv
eCArIG1hcmdpblN0YXJ0OwogICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4uZW5kID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSBib3JkZXJCb3hXaWR0aCAtIG1hcmdpblN0YXJ0ICsgbWFy
Z2luRW5kOwpAQCAtMzI2LDcgKzMyNiw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uCiAgICAg
ICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBtYXhXaWR0aEFuZE1hcmdpbjsKICAgICB9
CiAKLSAgICBhdXRvIG1pbldpZHRoID0gY29tcHV0ZWRNaW5XaWR0aChsYXlvdXRCb3gsIGF2YWls
YWJsZVdpZHRoKS52YWx1ZU9yKDApOworICAgIGF1dG8gbWluV2lkdGggPSBjb21wdXRlZE1pbldp
ZHRoKGxheW91dEJveCwgYXZhaWxhYmxlV2lkdGgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gbWlu
V2lkdGhBbmRNYXJnaW4gPSBjb21wdXRlKGhvcml6b250YWxDb25zdHJhaW50cywgbWluV2lkdGgp
OwogICAgIGlmIChjb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoIDwgbWluV2lkdGhB
bmRNYXJnaW4uY29udGVudFdpZHRoKQogICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBt
aW5XaWR0aEFuZE1hcmdpbjsKQEAgLTMzNywxMiArMzM3LDEyIEBAIEludHJpbnNpY1dpZHRoQ29u
c3RyYWludHMgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMoY29uCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBhZGRpbmcgPSBbJl0oYXV0
byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7
Ci0gICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpblN0YXJ0KCkpLnZhbHVlT3Io
MCkKKyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVf
b3IoMCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgp
IH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgpKS52YWx1ZU9y
KDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVl
T3IoMCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgpKS52YWx1
ZV9vcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdSaWdodCgpKS52
YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyUmlnaHRX
aWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFs
dWVPcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFs
dWVfb3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggOTVhMGVlOGQ1OTZjOWI4
NTUzZWEyYmQ5YzQ1NzljNzM1OWMzN2RkYy4uOGZjZjI4MjhjM2RlMGRlZmUxMjc5MzZiMTNlMDE1
YzQ2MDk3ZTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtz
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRp
bmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjbwogICAgICAgICBh
dXRvIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5
Rm9yQm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEZvcm1hdHRpbmdDb250
ZXh0OjpFc2NhcGVSZWFzb246OkRvY3VtZW50Qm94U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5j
b250ZW50Qm94SGVpZ2h0KCk7CiAgICAgICAgIC8vIERvY3VtZW50IGJveCdzIG93biB2ZXJ0aWNh
bCBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgdmFsdWVzIGFsd2F5cyBzaHJpbmsgdGhlIGNvbnRlbnQg
aGVpZ2h0LgogICAgICAgICBhdXRvJiBkb2N1bWVudEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0Nv
bnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgZG9jdW1lbnRCb3hDb250
ZW50SGVpZ2h0IC09IG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luICsgZG9jdW1lbnRCb3hHZW9t
ZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRp
bmcoKS52YWx1ZU9yKDApOworICAgICAgICBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQgLT0gbm9u
Q29sbGFwc2VkVmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9y
ZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDAp
OwogICAgICAgICByZXR1cm4gc3RkOjptYXgoY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50
SGVpZ2h0LCAgZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0KTsKICAgICB9CiAKQEAgLTg0LDIzICs4
NCwyMyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0
Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjbwogICAgIGF1dG8gYm9keUJveENvbnRlbnRI
ZWlnaHQgPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29udGVudEJveEhlaWdodCgp
OwogICAgIC8vIEJvZHkgYm94J3Mgb3duIGJvcmRlciBhbmQgcGFkZGluZyBzaHJpbmsgdGhlIGNv
bnRlbnQgaGVpZ2h0LgogICAgIGF1dG8mIGJvZHlCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYm9keUJveENvbnRlbnRIZWlnaHQg
LT0gYm9keUJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib2R5Qm94R2VvbWV0cnkudmVy
dGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBi
b2R5Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNh
bFBhZGRpbmcoKS52YWx1ZV9vcigwKTsKICAgICAvLyBCb2R5IGJveCBuZXZlciBjb2xsYXBzZXMg
aXRzIHZlcnRpY2FsIG1hcmdpbnMgd2l0aCB0aGUgZG9jdW1lbnQgYm94IGJ1dCBpdCBtaWdodCBj
b2xsYXBzZSBpdHMgbWFyZ2luIHdpdGggaXRzIGRlc2NlbmRhbnRzLgogICAgIGF1dG8gbm9uQ29s
bGFwc2VkTWFyZ2luID0gY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW47
CiAgICAgYXV0byBtYXJnaW5Db2xsYXBzZSA9IEJsb2NrTWFyZ2luQ29sbGFwc2UgeyBmb3JtYXR0
aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpLCBmb3JtYXR0aW5nQ29udGV4dC5mb3JtYXR0aW5nU3Rh
dGUoKSB9OwogICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gbWFyZ2luQ29sbGFwc2UuY29sbGFw
c2VkVmVydGljYWxWYWx1ZXMobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4pLmNvbGxhcHNl
ZFZhbHVlczsKLSAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbGxhcHNlZE1hcmdpbi5i
ZWZvcmUudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlKTsKLSAgICB1c2VkVmVydGlj
YWxNYXJnaW4gKz0gY29sbGFwc2VkTWFyZ2luLmlzQ29sbGFwc2VkVGhyb3VnaCA/IG5vbkNvbGxh
cHNlZE1hcmdpbi5hZnRlciA6IGNvbGxhcHNlZE1hcmdpbi5hZnRlci52YWx1ZU9yKG5vbkNvbGxh
cHNlZE1hcmdpbi5hZnRlcik7CisgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBjb2xsYXBz
ZWRNYXJnaW4uYmVmb3JlLnZhbHVlX29yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUpOworICAg
IHVzZWRWZXJ0aWNhbE1hcmdpbiArPSBjb2xsYXBzZWRNYXJnaW4uaXNDb2xsYXBzZWRUaHJvdWdo
ID8gbm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDogY29sbGFwc2VkTWFyZ2luLmFmdGVyLnZhbHVl
X29yKG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlcik7CiAgICAgYm9keUJveENvbnRlbnRIZWlnaHQg
LT0gdXNlZFZlcnRpY2FsTWFyZ2luOwogICAgIC8vIERvY3VtZW50IGJveCdzIHBhZGRpbmcgYW5k
IGJvcmRlciBhbHNvIHNocmluayB0aGUgYm9keSBib3gncyBjb250ZW50IGhlaWdodC4KICAgICBh
dXRvJiBkb2N1bWVudEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKICAgICBhdXRvJiBkb2N1bWVu
dEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goZG9jdW1lbnRC
b3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNoZXNUb1ZpZXdw
b3J0UXVpcmspOwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3VtZW50Qm94R2VvbWV0
cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5n
KCkudmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBkb2N1bWVudEJveEdl
b21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFk
ZGluZygpLnZhbHVlX29yKDApOwogICAgIC8vIEhvd2V2ZXIgdGhlIG5vbi1pbi1mbG93IGRvY3Vt
ZW50IGJveCdzIHZlcnRpY2FsIG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRoZXkgZG9uJ3QgYWZmZWN0
IHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0LgogICAgIGlmIChkb2N1bWVudEJveC5pc0lu
RmxvdygpKSB7CiAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogICAgICAgICBhdXRvIHByZWNvbXB1dGVEb2N1
bWVudEJveFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGlj
YWxNYXJnaW4oZG9jdW1lbnRCb3gsIGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVz
Y2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuaG9yaXpvbnRhbCk7Ci0g
ICAgICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRp
Y2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgYm9keUJveENvbnRlbnRIZWlnaHQg
LT0gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDAp
ICsgcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCk7
CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRl
bnRIZWlnaHQsICBib2R5Qm94Q29udGVudEhlaWdodCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFw
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBjNjc1MmY1YjgwNjQ1YTliY2ViNjAxMzY5ZDA0
ZWE3NmJhMjI2NDJjLi40YjQ5YmI1MmYyMjAzZmVmNTNmNjVhNjI0OWQ4OTAzMTY2NzE2ZjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTUzOSw3ICs1
MzksNyBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1
ZXMgQmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdgogTGF5b3V0VW5pdCBCbG9ja01hcmdpbkNv
bGxhcHNlOjptYXJnaW5CZWZvcmVJZ25vcmluZ0NvbGxhcHNpbmdUaHJvdWdoKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xs
YXBzZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7
Ci0gICAgcmV0dXJuIG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUobGF5
b3V0Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpKS52YWx1ZU9yKG5vbkNvbGxhcHNlZFZhbHVlcy5i
ZWZvcmUpOworICAgIHJldHVybiBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVm
b3JlKGxheW91dEJveCwgbm9uQ29sbGFwc2VkVmFsdWVzKSkudmFsdWVfb3Iobm9uQ29sbGFwc2Vk
VmFsdWVzLmJlZm9yZSk7CiB9CiAKIFVzZWRWZXJ0aWNhbE1hcmdpbiBCbG9ja01hcmdpbkNvbGxh
cHNlOjpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZl
cnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFwc2VkVmFsdWVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9Q
cmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCmluZGV4IDNiYTcyMTQ1ZWE4MTk3MGZiNTliODZlYTZmNjE2NjY3ZTkwN2UwN2EuLmZiYTI1
ZDQ1ZTA4NjhlNGIyMzg0ZjY4MzY2MjJiYjQ2NzE0MThjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01h
cmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTQ4LDcg
KzQ4LDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFs
dWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OnByZWNvbXAKIAogICAgIGF1dG8gaG9yaXpvbnRhbENv
bnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6b250YWw7CiAgICAgYXV0byBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVydGljYWxN
YXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwotICAgIGF1dG8gbm9uQ29s
bGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9
IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVfb3IoMCkgfTsKICAgICByZXR1cm4gcHJlY29tcHV0ZWRQb3NpdGl2ZU5lZ2F0aXZlTWFy
Z2luQmVmb3JlKGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBmb3JtYXR0aW5nR2VvbWV0
cnkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IGI2NzlhMzMxNGFlMjEwOGM1NmE4NjYxYmFlMjEwYWYyMGYzNTI5MWUuLmVmZTk3ODIwNGVj
YzYxY2QyNzU2YTQ4MzMwMzIwOTYxNDBiNTEwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAgdm9pZCBGbGV4Rm9ybWF0
dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBDb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnQKICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0UGFkZGluZyhmb3JtYXR0
aW5nR2VvbWV0cnkuY29tcHV0ZWRQYWRkaW5nKGZsZXhJdGVtLCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsLmxvZ2ljYWxXaWR0aCkpOwogCiAgICAgICAgICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZEhvcml6b250YWxNYXJnaW4oZmxl
eEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAgICAgZmxleEl0ZW1HZW9t
ZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
LnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1
KSB9KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih7
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KSB9KTsKIAogICAgICAgICAgICAgYXV0
byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkVmVy
dGljYWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAg
ICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IGNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYmVmb3JlLnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIu
dmFsdWVPcigwX2x1KSB9KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0VmVydGlj
YWxNYXJnaW4oeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwX2x1KSwg
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwX2x1KSB9KTsKIAogICAgICAg
ICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGZvcm1hdHRpbmdHZW9t
ZXRyeS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGZsZXhJdGVtKSk7CiAg
ICAgICAgICAgICBmbGV4SXRlbUdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChmbGV4SXRlbUxv
Z2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5j
cHAKaW5kZXggNTMxYTNkMjI2MDAwN2ZkMTIyNjdhODg3NzEwOGY5YTE0OTllMzFkNS4uZmU1OGRk
M2FmNjgzOTZlOGExNGU4MDVmYTBhZmNkNjdlYjYxZjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nR2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxl
eC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIEludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgRmxleEZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhD
b25zdHJhaW50cyhjb25zCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBhZGRpbmcg
PSBbJl0oYXV0byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94
LnN0eWxlKCk7Ci0gICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpblN0YXJ0KCkp
LnZhbHVlT3IoMCkKKyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQo
KSkudmFsdWVfb3IoMCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxl
ZnRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgp
KS52YWx1ZU9yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0
KCkpLnZhbHVlT3IoMCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVm
dCgpKS52YWx1ZV9vcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdS
aWdodCgpKS52YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9y
ZGVyUmlnaHRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5F
bmQoKSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5F
bmQoKSkudmFsdWVfb3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZWRJbnRyaW5zaWNX
aWR0aENvbnN0cmFpbnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggOTQwYTZk
YTlmOWMxNGYwMTQ0NTFmYWRhMjQ2ZmIwZWJjZDEyZDJiOC4uOGU3MWE3NTkxYTc5YjBlN2IzNGQ0
MGZlOWEwZjIzNjg1ZmQ0MGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUNvbnRl
bnRCcmVha2VyLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQg
SW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChj
CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3Vic2VxdWVudCBlbXB0eSBpbmxp
bmUgYm94ZXMgZS5nLgogICAgICAgICBhdXRvIHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggPSBicmVh
a2FibGVSdW5JbmRleCAtIDE7CiAgICAgICAgIGF1dG8gaXNBdElubGluZUJveCA9IHJ1bnNbdHJh
aWxpbmdDYW5kaWRhdGVJbmRleF0uaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiAhaXNBdElubGluZUJveCA/IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggOiB0cmFp
bGluZ0NhbmRpZGF0ZUluZGV4ID8gbWFrZU9wdGlvbmFsKHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXgg
LSAxKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuICFpc0F0SW5saW5lQm94ID8gdHJh
aWxpbmdDYW5kaWRhdGVJbmRleCA6IHRyYWlsaW5nQ2FuZGlkYXRlSW5kZXggPyBzdGQ6Om1ha2Vf
b3B0aW9uYWwodHJhaWxpbmdDYW5kaWRhdGVJbmRleCAtIDEpIDogc3RkOjpudWxsb3B0OwogICAg
IH07CiAKICAgICAvLyBDaGVjayB3aGVyZSB0aGUgb3ZlcmZsb3cgb2NjdXJzIGFuZCB1c2UgdGhl
IGNvcnJlc3BvbmRpbmcgc3R5bGUgdG8gZmlndXJlIG91dCB0aGUgYnJlYWtpbmcgYmVoYXZpb3Vy
LgpAQCAtMzQxLDcgKzM0MSw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVu
dEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4dChjCiAgICAgICAgICAg
ICAgICAgLy8gc2luY2UgaXQncyBlaXRoZXIgYXQgaHlwaGVuIHBvc2l0aW9uIG9yIHRoZSBlbnRp
cmUgcnVuIGlzIHJldHVybmVkLgogICAgICAgICAgICAgICAgIEFTU0VSVChwYXJ0aWFsUnVuLT5s
ZW5ndGgpOwogICAgICAgICAgICAgICAgIGF1dG8gcnVuSXNGdWxseUFjY29tbW9kYXRlZCA9IHBh
cnRpYWxSdW4tPmxlbmd0aCA9PSBkb3duY2FzdDxJbmxpbmVUZXh0SXRlbT4ocnVuLmlubGluZUl0
ZW0pLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBPdmVyZmxvd2luZ1RleHRDb250
ZW50OjpCcmVha2luZ1Bvc2l0aW9uIHsgaW5kZXgsIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJy
ZWFraW5nUG9zaXRpb246OlRyYWlsaW5nQ29udGVudCB7IGZhbHNlLCBydW5Jc0Z1bGx5QWNjb21t
b2RhdGVkID8gV1RGOjpudWxsb3B0IDogcGFydGlhbFJ1biB9IH07CisgICAgICAgICAgICAgICAg
cmV0dXJuIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRpb24geyBpbmRleCwg
T3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbjo6VHJhaWxpbmdDb250ZW50
IHsgZmFsc2UsIHJ1bklzRnVsbHlBY2NvbW1vZGF0ZWQgPyBzdGQ6Om51bGxvcHQgOiBwYXJ0aWFs
UnVuIH0gfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IDI2ZWIxOWYxMjM0YzRiMDVkNjdhZTIxZTY0ZGFjMGI3ZmIwNjVkODEuLmVlODFhMTcxMTczODhj
Y2YxZjg4NmFiNmNhZDhiOTY0NTlmMzY1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywg
TGluZUJ1aWxkZXI6OgogICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxpbmUncyBvdmVyZmxvdyBj
b250ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5nIGNvbnRlbnQgcGFydGlh
bCBsZW5ndGguCiAgICAgICAgIC8vICJzcFs8LWxpbmUgYnJlYWstPl1saXRfY29udGVudCIgLT4g
b3ZlcmZsb3cgbGVuZ3RoOiAxMSAtPiBsZWFkaW5nIHBhcnRpYWwgY29udGVudCBsZW5ndGg6IDEx
LgogICAgICAgICBhdXRvIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCA9IHByZXZpb3VzTGlu
ZSA/IHByZXZpb3VzTGluZS0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIDogMDsKLSAgICAgICAgYXV0
byBsZWFkaW5nTG9naWNhbFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVy
Zmxvd0xvZ2ljYWxXaWR0aCA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBsZWFkaW5nTG9n
aWNhbFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0xvZ2ljYWxX
aWR0aCA6IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBpbml0aWFsTGluZUhlaWdodCA9IFsm
XSgpIC0+IElubGluZUxheW91dFVuaXQgewogICAgICAgICAgICAgaWYgKGxheW91dFN0YXRlKCku
aW5TdGFuZGFyZHNNb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHlsZSgp
LmNvbXB1dGVkTGluZUhlaWdodCgpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNv
bnN0IEJveCYKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIb3Jpem9udGFs
TWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMm
IGhvcml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlv
dXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94
R2VvbWV0cnkobGF5b3V0Qm94KS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQu
dmFsdWVPcigwKSB9KTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRC
b3gpLnNldEhvcml6b250YWxNYXJnaW4oeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQu
dmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkgfSk7
CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMpCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBj
b25zdAogICAgICAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0gbWF4V2lkdGhBbmRNYXJn
aW47CiAgICAgfQogCi0gICAgYXV0byBtaW5XaWR0aCA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNv
bXB1dGVkTWluV2lkdGgobGF5b3V0Qm94LCBhdmFpbGFibGVXaWR0aCkudmFsdWVPcigwKTsKKyAg
ICBhdXRvIG1pbldpZHRoID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRNaW5XaWR0aChs
YXlvdXRCb3gsIGF2YWlsYWJsZVdpZHRoKS52YWx1ZV9vcigwKTsKICAgICBhdXRvIG1pbldpZHRo
QW5kTWFyZ2luID0gY29tcHV0ZShtaW5XaWR0aCk7CiAgICAgaWYgKGNvbnRlbnRXaWR0aEFuZE1h
cmdpbi5jb250ZW50V2lkdGggPCBtaW5XaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGgpCiAgICAg
ICAgIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IG1pbldpZHRoQW5kTWFyZ2luOwpAQCAtNTg5LDkg
KzU4OSw5IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9t
ZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgICAgICAgICBpZiAoaW5saW5l
Qm94U3RhcnRTZXQuY29udGFpbnMoJmxheW91dEJveCkpIHsKICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGluZS4KICAgICAgICAgICAg
ICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChsb2dpY2FsUmVjdC50b3BMZWZ0KCkp
OwotICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodCA9IGxvZ2ljYWxSZWN0Lmhl
aWdodCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0
aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbnRl
bnRCb3hIZWlnaHQgPSBsb2dpY2FsUmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNh
bEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkp
OwogICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVu
dEJveEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dp
Y2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdl
b21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwX2x1KSk7CisgICAgICAgICAgICAg
ICAgYXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21l
dHJ5Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCku
dmFsdWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRC
b3hXaWR0aChjb250ZW50Qm94V2lkdGgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQpAQCAtNjAwLDggKzYwMCw4IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAg
ICAgICAgICAgICBlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmV4cGFuZFRvQ29udGFpbihsb2dpY2Fs
UmVjdCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdC
b3JkZXJCb3hSZWN0LmxlZnQoKSk7CiAKLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRl
bnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRy
eS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVP
cigwX2x1KSkpOwotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVu
Y2xvc2luZ0JvcmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9y
ZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMF9sdSkpKTsK
KyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9y
ZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94
R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpKTsKKyAgICAgICAgICAg
IGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0Lndp
ZHRoKCkgLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9y
aXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwogICAgICAgICB9CiAgICAgfTsKICAg
ICB1cGRhdGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBjMjVmYTE0M2ZhNzI2NjVl
MDM1ZTViZDk4ODAzNzJjM2M2Mzk4NTdlLi5iYzZjMGU1NzU4ZDQ0MmRmOTc5ZjVjYjUwNzE4NjE2
MzU2ZWNmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBMaW5lQm94IExpbmVCb3hCdWlsZGVyOjpi
dWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50KQogICAgIGF1
dG8gbGluZUxvZ2ljYWxXaWR0aCA9IGxpbmVDb250ZW50LmxpbmVMb2dpY2FsV2lkdGg7CiAgICAg
YXV0byBjb250ZW50TG9naWNhbFdpZHRoID0gbGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxXaWR0
aDsKICAgICBhdXRvIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgPSBMYXlvdXQ6Omhvcml6b250
YWxBbGlnbm1lbnRPZmZzZXQocnVucywgcm9vdEJveCgpLnN0eWxlKCkudGV4dEFsaWduKCksIGxp
bmVMb2dpY2FsV2lkdGgsIGNvbnRlbnRMb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50LmlzTGFzdExp
bmVXaXRoSW5saW5lQ29udGVudCk7Ci0gICAgYXV0byBsaW5lQm94ID0gTGluZUJveCB7IHJvb3RC
b3goKSwgbGluZUNvbnRlbnQubG9naWNhbFRvcExlZnQsIGxpbmVMb2dpY2FsV2lkdGgsIGhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSksIGNvbnRl
bnRMb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50Lm5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hDb3Vu
dCB9OworICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyByb290Qm94KCksIGxpbmVDb250ZW50
LmxvZ2ljYWxUb3BMZWZ0LCBsaW5lTG9naWNhbFdpZHRoLCBob3Jpem9udGFsQWxpZ25tZW50T2Zm
c2V0LnZhbHVlX29yKElubGluZUxheW91dFVuaXQgeyB9KSwgY29udGVudExvZ2ljYWxXaWR0aCwg
bGluZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CiAgICAgY29uc3Ry
dWN0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIHJ1bnMpOwogICAgIHJldHVybiBs
aW5lQm94OwogfQpAQCAtMjg1LDkgKzI4NSw5IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0
cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMCiAg
ICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCku
Z2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIC8vIEV2ZW4gbmVnYXRpdmUg
aG9yaXpvbnRhbCBtYXJnaW4gbWFrZXMgdGhlIGxpbmUgImNvbnRlbnRmdWwiLgogICAgICAgICAg
ICAgaWYgKHJ1bi5pc0lubGluZUJveFN0YXJ0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGlu
bGluZUJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgfHwgaW5saW5lQm94R2VvbWV0cnkuYm9yZGVy
TGVmdCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwX2x1KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8
fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgfHwgaW5saW5lQm94R2VvbWV0cnkucGFk
ZGluZ0xlZnQoKS52YWx1ZV9vcigwX2x1KTsKICAgICAgICAgICAgIGlmIChydW4uaXNJbmxpbmVC
b3hFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94R2VvbWV0cnkubWFyZ2lu
RW5kKCkgfHwgaW5saW5lQm94R2VvbWV0cnkuYm9yZGVyUmlnaHQoKSB8fCBpbmxpbmVCb3hHZW9t
ZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDBfbHUpOworICAgICAgICAgICAgICAgIHJldHVy
biBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5FbmQoKSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3Jk
ZXJSaWdodCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDBf
bHUpOwogICAgICAgICAgICAgaWYgKHJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0zMTMsMTAgKzMxMywxMCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RB
bmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTAogICAgICAg
ICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZSgpLmVzdGFi
bGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0
Qm94KSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lID0gZm9ybWF0dGluZ1N0
YXRlLmxpbmVzKCkubGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2Nr
QmFzZWxpbmUgPSBsYXN0TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSArIGxhc3RMaW5l
LmJhc2VsaW5lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzY2VudCA9IGlubGluZUxldmVsQm94
R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LmJvcmRlclRv
cCgpICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGlu
bGluZUJsb2NrQmFzZWxpbmU7CisgICAgICAgICAgICAgICAgICAgIGFzY2VudCA9IGlubGluZUxl
dmVsQm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LmJv
cmRlclRvcCgpICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3Io
MCkgKyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAgICAgICAgICAgICAgICBh
c2NlbnQgPSBkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KS5iYXNlbGluZSgpLnZhbHVl
T3IobWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc2NlbnQgPSBkb3duY2FzdDxS
ZXBsYWNlZEJveD4obGF5b3V0Qm94KS5iYXNlbGluZSgpLnZhbHVlX29yKG1hcmdpbkJveEhlaWdo
dCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXNjZW50ID0gbWFyZ2luQm94
SGVpZ2h0OwogICAgICAgICAgICAgbG9naWNhbExlZnQgKz0gc3RkOjptYXgoMF9sdSwgaW5saW5l
TGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpKTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxC
b3hlc1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0
Qm90dG9tOiB7CiAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWdu
cyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5k
IG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAgICAgICAgYXV0byBwYXJl
bnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7
Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFy
ZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0
Qm91bmRzLmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5l
TGF5b3V0VW5pdCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2lj
YWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCku
dmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGlubGluZUxldmVsQm94LmxheW91dEJv
dW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtNDY2LDE0ICs0NjYsMTQgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hI
ZWlnaHRBbmRBbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmUKICAgICAgICAgICAg
IGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZpbmxpbmVMZXZlbEJv
eCwgQWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9n
aWNhbEJvdHRvbSB9KTsKICAgICAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIG1pbi9tYXggYWJzb2x1
dGUgdmFsdWVzIGlmIGFwcGxpY2FibGUuCiAgICAgICAgICAgICBpZiAoZm9ybWF0dGluZ0dlb21l
dHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxCb3gsIGxpbmVCb3gp
KSB7Ci0gICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVt
TG9naWNhbFRvcC52YWx1ZU9yKGFic29sdXRlTG9naWNhbFRvcCksIGFic29sdXRlTG9naWNhbFRv
cCk7Ci0gICAgICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6Om1heChtYXhp
bXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKGFic29sdXRlTG9naWNhbEJvdHRvbSksIGFic29sdXRl
TG9naWNhbEJvdHRvbSk7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6
Om1pbihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZV9vcihhYnNvbHV0ZUxvZ2ljYWxUb3ApLCBhYnNv
bHV0ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0g
c3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVfb3IoYWJzb2x1dGVMb2dpY2FsQm90
dG9tKSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICAvLyBUaGUgbGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGFzIGZvbGxvd3M6
CiAgICAgICAgIC8vIDEuIFN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIG5vbi1saW5lLWJv
eCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3ggYWJzb2x1dGUgdG9wIGFuZCBib3R0b20gdmFs
dWVzLgogICAgICAgICAvLyAyLiBDaGVjayBpZiB0aGUgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25l
ZCBpbmxpbmUgYm94ZXMgKHRvcCwgYm90dG9tIGV0YykgaGF2ZSBlbm91Z2ggcm9vbSBhbmQgc3Ry
ZXRjaCB0aGUgbGluZSBib3ggZnVydGhlciBpZiBuZWVkZWQuCi0gICAgICAgIGF1dG8gbGluZUJv
eExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKElubGluZUxheW91
dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSk7
CisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRv
bS52YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVf
b3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgZm9yIChhdXRvKiBsaW5lQm94UmVsYXRp
dmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKICAg
ICAgICAgICAgIGlmICghZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xp
bmVCb3goKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94LCBsaW5lQm94KSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVy
Ojpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHko
TGluZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290
SW5saW5lQm94QmFzZWxpbmUudmFsdWVPcigwLmYpIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgp
OworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNl
dEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUudmFsdWVfb3IoMC5mKSAtIHJvb3RJbmxpbmVCb3gu
YmFzZWxpbmUoKTsKICAgICAgICAgcm9vdElubGluZUJveC5zZXRMb2dpY2FsVG9wKHJvb3RJbmxp
bmVCb3hMb2dpY2FsVG9wKTsKICAgICB9OwogICAgIGNvbXB1dGVSb290SW5saW5lQm94VmVydGlj
YWxQb3NpdGlvbigpOwpAQCAtNzExLDcgKzcxMSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVudFdpZHRoQW5kTWFyZ2lu
CiAgICAgLy8gIzIKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1hdHRp
bmdHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKIAotICAgIHJldHVybiBDb250ZW50V2lkdGhBbmRN
YXJnaW4geyAqd2lkdGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3Io
MF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwX2x1KSB9IH07Cisg
ICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5lbmQudmFsdWVfb3IoMF9sdSkgfSB9OwogfQogCiBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6
b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzJiBvdmVycmlk
ZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDBlOGFjZjZiNDc4NjgwM2Y1ODYwNWRkMDExZGRiNDYz
YTljMThiYzIuLmYzMDBiMjdiZDhiNDVkODUyMDAxZTIxYmVlNDM3NWRlZGZkYTMxY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC04Niw3
ICs4Niw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5saW5lTGV2ZWxCb3hBZmZl
Y3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMCiAgICAgICAgIH0KICAgICAgICAgLy8g
Tm9uLXJvb3QgaW5saW5lIGJveGVzIChlLmcuIDxzcGFuPikuCiAgICAgICAgIGF1dG8mIGJveEdl
b21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVMZXZlbEJv
eC5sYXlvdXRCb3goKSk7Ci0gICAgICAgIGlmIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVy
KCkgfHwgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKSB7Cisg
ICAgICAgIGlmIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgfHwgYm94R2VvbWV0cnku
aG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkgewogICAgICAgICAgICAgLy8gSG9y
aXpvbnRhbCBib3JkZXIgYW5kIHBhZGRpbmcgbWFrZSB0aGUgaW5saW5lIGJveCBzdHJldGNoIHRo
ZSBsaW5lIChlLmcuIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAxMHB4OyI+PC9zcGFuPikuCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNw
cAppbmRleCA1YjMzNWJjNDBlZWZjOWMyODMzZDRkMTM3YjRhNTg0Nzg3MDc1MmZjLi40YTFkMjhl
NGIzYWVhZjdlMjRmNTI3NzNkYmU2NTJmNDVkOWViNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQo
Y29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBJbmxpbmVMYXlvdXRVCiAgICAg
bV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVzZXQoKTsKICAgICBpZiAoIWZvcm1hdHRpbmdD
b250ZXh0KCkubGF5b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmco
KSAmJiAhaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgc3R5bGUubGV0dGVyU3BhY2lu
ZygpID4gMCkKICAgICAgICAgbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuYWRkUGFydGlhbGx5
VHJpbW1hYmxlQ29udGVudChtX3J1bnMuc2l6ZSgpIC0gMSwgc3R5bGUubGV0dGVyU3BhY2luZygp
KTsKLSAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRoID0gaW5saW5lVGV4dEl0ZW0uaGFzVHJh
aWxpbmdTb2Z0SHlwaGVuKCkgPyBtYWtlT3B0aW9uYWwoc3R5bGUuZm9udENhc2NhZGUoKS53aWR0
aChUZXh0UnVuIHsgU3RyaW5nVmlldyB7IHN0eWxlLmh5cGhlblN0cmluZygpIH0gfSkpIDogV1RG
OjpudWxsb3B0OworICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGggPSBpbmxpbmVUZXh0SXRl
bS5oYXNUcmFpbGluZ1NvZnRIeXBoZW4oKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdHlsZS5mb250
Q2FzY2FkZSgpLndpZHRoKFRleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5n
KCkgfSB9KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFj
ZWRJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlv
dXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIExp
bmU6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6YWRkRnVsbHlUcmltbWFibGVDb250ZW50KHNp
emVfdCBydW5JbmRleCwgSQogICAgIG1fZnVsbHlUcmltbWFibGVXaWR0aCA9IHRyaW1tYWJsZVdp
ZHRoOwogICAgIC8vIE5vdGUgdGhhdCBqdXN0IGJlY2F1c2UgdGhlIHRyaW1tYWJsZSB3aWR0aCBp
cyAwIChmb250LXNpemU6IDBweCksIGl0IGRvZXMgbm90IG1lYW4gd2UgZG9uJ3QgaGF2ZSBhIHRy
aW1tYWJsZSB0cmFpbGluZyBjb250ZW50LgogICAgIG1faGFzRnVsbHlUcmltbWFibGVDb250ZW50
ID0gdHJ1ZTsKLSAgICBtX2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXggPSBtX2ZpcnN0VHJpbW1hYmxl
UnVuSW5kZXgudmFsdWVPcihydW5JbmRleCk7CisgICAgbV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4
ID0gbV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4LnZhbHVlX29yKHJ1bkluZGV4KTsKIH0KIAogdm9p
ZCBMaW5lOjpUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ6OmFkZFBhcnRpYWxseVRyaW1tYWJsZUNv
bnRlbnQoc2l6ZV90IHJ1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IHRyaW1tYWJsZVdpZHRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBlZDIxM2FlMDFjYWEzOTVhNzk4
NDIxMThiOTk5NzIzMWU4ZDIwZTI5Li5kN2FhNzI4NDIwYWMzZTRkNWVkNjA3NGRhMjk2MzdmMTNm
Mjg1OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTYyLDkgKzE2
Miw5IEBAIElubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChj
b25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94CiB7CiAgICAgYXV0byBsb2dpY2FsUmVjdCA9
IGxvZ2ljYWxSZWN0Rm9ySW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94KTsKICAgICAvLyBUaGlzIGxv
Z2ljYWwgcmVjdCBpcyBhcyB0YWxsIGFzIHRoZSAidGV4dCIgY29udGVudCBpcy4gTGV0J3MgYWRq
dXN0IHdpdGggdmVydGljYWwgYm9yZGVyIGFuZCBwYWRkaW5nLgotICAgIGF1dG8gdmVydGljYWxC
b3JkZXJBbmRQYWRkaW5nID0gYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21l
dHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMF9sdSk7CisgICAgYXV0byB2ZXJ0aWNhbEJv
cmRlckFuZFBhZGRpbmcgPSBib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0
cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSk7CiAgICAgbG9naWNhbFJlY3QuZXhw
YW5kVmVydGljYWxseSh2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcpOwotICAgIGxvZ2ljYWxSZWN0
Lm1vdmVWZXJ0aWNhbGx5KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5w
YWRkaW5nVG9wKCkudmFsdWVPcigwX2x1KSkpOworICAgIGxvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNh
bGx5KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVfb3IoMF9sdSkpKTsKICAgICByZXR1cm4gbG9naWNhbFJlY3Q7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBjMzNmNjQ4M2JhYTJmZjM5MTgy
NGMxZmQ2NmMzYTgxOWYzOGNkNGEzLi5hMzU5OTNkM2Y1ZjRhZTA0NTE5OWE4ZTQ4ZDNhZTg5MWYx
NDcwYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0y
MzEsMTAgKzIzMSwxMCBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjppbmxpbmVJdGVt
V2lkdGgoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saQogICAgICAgICByZXR1cm4g
Ym94R2VvbWV0cnkubWFyZ2luQm94V2lkdGgoKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzSW5s
aW5lQm94U3RhcnQoKSkKLSAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkg
KyBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZh
bHVlT3IoMCk7CisgICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpICsgYm94
R2VvbWV0cnkuYm9yZGVyTGVmdCgpICsgYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZV9v
cigwKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkpCi0gICAgICAgIHJl
dHVybiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCkg
KyBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4g
Ym94R2VvbWV0cnkubWFyZ2luRW5kKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpICsgYm94
R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CiAKICAgICAvLyBOb24tcmVwbGFj
ZWQgaW5saW5lIGJveCAoZS5nLiBpbmxpbmUtYmxvY2spCiAgICAgcmV0dXJuIGJveEdlb21ldHJ5
Lm1hcmdpbkJveFdpZHRoKCk7CkBAIC0zMDUsNyArMzA1LDcgQEAgTGluZUJ1aWxkZXI6OkNvbW1p
dHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVudChjb25zdCBJbmxpbmVJ
dGVtUmEKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRzIGFuZCBzaHJpbmsgdGhlIGF2YWlsYWJs
ZSBob3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50cnVfPGRpdiBzdHlsZT0iZmxvYXQ6IGxl
ZnQiPjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAgICAgICAvLyAzLiBDaGVjayBpZiB0aGUg
Y29udGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkg
KGZ1bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAgICAgICAvLyA0LiBSZXR1
cm4gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVyIGJ5IG5vdCBiZWluZyBh
YmxlIHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBleHBsaWNpdCBsaW5lIGJy
ZWFrLgotICAgICAgICBjYW5kaWRhdGVDb250ZW50Rm9yTGluZShsaW5lQ2FuZGlkYXRlLCBjdXJy
ZW50SXRlbUluZGV4LCBuZWVkc0xheW91dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgsIHN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgV1RGOjpudWxsb3B0KSwgbV9s
aW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSk7CisgICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRGb3JM
aW5lKGxpbmVDYW5kaWRhdGUsIGN1cnJlbnRJdGVtSW5kZXgsIG5lZWRzTGF5b3V0UmFuZ2UsIHBh
cnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdp
ZHRoLCBzdGQ6Om51bGxvcHQpLCBtX2xpbmUuY29udGVudExvZ2ljYWxSaWdodCgpKTsKICAgICAg
ICAgLy8gTm93IGNoZWNrIGlmIHdlIGNhbiBwdXQgdGhpcyBjb250ZW50IG9uIHRoZSBjdXJyZW50
IGxpbmUuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gUmVzdWx0IHsgfTsKICAgICAgICAgaWYgKGxp
bmVDYW5kaWRhdGUuZmxvYXRJdGVtKSB7CkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBMaW5lQnVp
bGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0
ZSwgc2l6ZV90IGMKICAgICAgICAgLy8gSGFuZGxlIGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGZp
cnN0IChvdmVyZmxvd2luZyB0ZXh0IGZyb20gdGhlIHByZXZpb3VzIGxpbmUpLgogICAgICAgICAv
LyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5lIGl0ZW0uCiAgICAgICAgIG1fcGFy
dGlhbExlYWRpbmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihtX2lubGluZUl0
ZW1zW2N1cnJlbnRJbmxpbmVJdGVtSW5kZXhdKS5yaWdodChwYXJ0aWFsTGVhZGluZ0NvbnRlbnRM
ZW5ndGgpOwotICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdMb2dpY2FsV2lkdGggPyAq
c3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBXVEY6Om51bGxvcHQpIDogaW5saW5l
SXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQp
OworICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdMb2dpY2FsV2lkdGggPyAqc3RkOjpl
eGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBzdGQ6Om51bGxvcHQpIDogaW5saW5lSXRlbVdp
ZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOwogICAg
ICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbSgqbV9wYXJ0
aWFsTGVhZGluZ1RleHRJdGVtLCBpdGVtV2lkdGgpOwogICAgICAgICBjdXJyZW50TG9naWNhbFJp
Z2h0ICs9IGl0ZW1XaWR0aDsKICAgICAgICAgKytjdXJyZW50SW5saW5lSXRlbUluZGV4OwpAQCAt
NDkwLDcgKzQ5MCw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5l
KExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveFN0YXJ0
KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGluZUl0ZW0uaXNCb3goKSkg
ewogICAgICAgICAgICAgQVNTRVJUKCFsZWFkaW5nTG9naWNhbFdpZHRoIHx8IGlubGluZUl0ZW0u
aXNUZXh0KCkpOwotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBsZWFkaW5nTG9naWNh
bFdpZHRoID8gKnN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgV1RGOjpudWxsb3B0
KSA6IGlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKKyAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gbGVhZGluZ0xvZ2ljYWxXaWR0aCA/ICpzdGQ6
OmV4Y2hhbmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9wdCkgOiBpbmxpbmVJdGVt
V2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgICAgICAgICBsaW5l
Q2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbShpbmxpbmVJdGVtLCBsb2dp
Y2FsV2lkdGgpOwogICAgICAgICAgICAgY3VycmVudExvZ2ljYWxSaWdodCArPSBsb2dpY2FsV2lk
dGg7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaApp
bmRleCAwYjBlZTE0ZGVkMGJlMmNjZDUyZDM0MzNiMDg4NDU0NmMxZjBkMmIyLi5jZTAwNzA5NzBi
YWQ4OWNhMzhkMzRhMzFhZDI0MTZhZWJjN2Q2ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZVJ1bi5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBMaW5lUnVuIHsKICAgICB9OwogCiAgICAg
c3RydWN0IEV4cGFuc2lvbjsKLSAgICBMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IEJv
eCYsIGNvbnN0IElubGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHQ+ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICBMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IEJveCYsIGNvbnN0
IElubGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0KTsK
IAogICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9s
b2dpY2FsUmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgKaW5kZXggYWNkMDlhYjFlNzEw
MWFhNmVjZjQzM2QyNjQwMDRmZmU4ZmI3YThjNC4uMmRmMTQ0NmMwMDE2MDZmNzA4NTZmZjNhOWQw
MjhjZWM4ZDYyMzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaApAQCAtMjU0LDcgKzI1NCw3
IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZChPcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB3aWR0aCwgT3B0aW9uYWw8SW5saW5lCiB7CiAgICAgQVNTRVJUKCF3aWR0aCB8fCBtX2hh
c1ZhbGlkV2lkdGgpOwogICAgIEFTU0VSVCghaGVpZ2h0IHx8IG1faGFzVmFsaWRIZWlnaHQpOwot
ICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0LnZhbHVlT3IoMCkpOwor
ICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSk7
CiB9CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZFRvQ29udGFpbihjb25zdCBJbmxp
bmVSZWN0JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAppbmRleCA5
YzczN2FmMGJkYmE5NWE1ZjQwNWVjYjQ5NDVmY2NkMTljZDhiYzM5Li5mNWQ2MTBkZTE3NjBkZTBm
YWE4MTY2ZTEyOThhNTFjMGNlMzNmYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0
ZW0uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXaGl0ZXNwYWNlQ29udGVu
dD4gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBTdHJpbmdWCiAgICAgYXV0
byBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgICB3aGlsZSAo
bmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA8IHRleHRDb250ZW50Lmxlbmd0aCgpICYmIGlzV2hp
dGVzcGFjZUNoYXJhY3Rlcih0ZXh0Q29udGVudFtuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uXSkp
CiAgICAgICAgICsrbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbjsKLSAgICByZXR1cm4gbmV4dE5v
bldoaXRlU3BhY2VQb3NpdGlvbiA9PSBzdGFydFBvc2l0aW9uID8gV1RGOjpudWxsb3B0IDogbWFr
ZU9wdGlvbmFsKFdoaXRlc3BhY2VDb250ZW50IHsgbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiAt
IHN0YXJ0UG9zaXRpb24sIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIgfSk7CisgICAgcmV0dXJu
IG5leHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPT0gc3RhcnRQb3NpdGlvbiA/IHN0ZDo6bnVsbG9w
dCA6IHN0ZDo6bWFrZV9vcHRpb25hbChXaGl0ZXNwYWNlQ29udGVudCB7IG5leHROb25XaGl0ZVNw
YWNlUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uLCBoYXNXb3JkU2VwYXJhdG9yQ2hhcmFjdGVyIH0p
OwogfQogCiBzdGF0aWMgdW5zaWduZWQgbW92ZVRvTmV4dEJyZWFrYWJsZVBvc2l0aW9uKHVuc2ln
bmVkIHN0YXJ0UG9zaXRpb24sIExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGluZUJyZWFrSXRlcmF0
b3IsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIElu
bGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5saW5lSXRlbXMmIGlubGlu
ZUNvbnRlbnQsIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlQod2hpdGVzcGFjZUNvbnRlbnQtPmxl
bmd0aCk7CiAgICAgICAgICAgICBhdXRvIGFwcGVuZFdoaXRlc3BhY2VJdGVtID0gWyZdIChhdXRv
IHN0YXJ0UG9zaXRpb24sIGF1dG8gaXRlbUxlbmd0aCkgewogICAgICAgICAgICAgICAgIGF1dG8g
c2ltcGxlU2luZ2xlV2hpdGVzcGFjZUNvbnRlbnQgPSBpbmxpbmVUZXh0Qm94LmNhblVzZVNpbXBs
aWZpZWRDb250ZW50TWVhc3VyaW5nKCkgJiYgKGl0ZW1MZW5ndGggPT0gMSB8fCB3aGl0ZXNwYWNl
Q29udGVudElzVHJlYXRlZEFzU2luZ2xlU3BhY2UpOwotICAgICAgICAgICAgICAgIGF1dG8gd2lk
dGggPSBzaW1wbGVTaW5nbGVXaGl0ZXNwYWNlQ29udGVudCA/IG1ha2VPcHRpb25hbChJbmxpbmVM
YXlvdXRVbml0IHsgZm9udC5zcGFjZVdpZHRoKCkgfSkgOiBpbmxpbmVJdGVtV2lkdGgoc3RhcnRQ
b3NpdGlvbiwgaXRlbUxlbmd0aCk7CisgICAgICAgICAgICAgICAgYXV0byB3aWR0aCA9IHNpbXBs
ZVNpbmdsZVdoaXRlc3BhY2VDb250ZW50ID8gc3RkOjptYWtlX29wdGlvbmFsKElubGluZUxheW91
dFVuaXQgeyBmb250LnNwYWNlV2lkdGgoKSB9KSA6IGlubGluZUl0ZW1XaWR0aChzdGFydFBvc2l0
aW9uLCBpdGVtTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpbmxpbmVDb250ZW50LmFwcGVuZChJ
bmxpbmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVzcGFjZUl0ZW0oaW5saW5lVGV4dEJveCwgc3RhcnRQ
b3NpdGlvbiwgaXRlbUxlbmd0aCwgd2hpdGVzcGFjZUNvbnRlbnQtPmlzV29yZFNlcGFyYXRvciwg
d2lkdGgpKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAoc3R5bGUud2hpdGVTcGFj
ZSgpID09IFdoaXRlU3BhY2U6OkJyZWFrU3BhY2VzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4
dEl0ZW0uaAppbmRleCA1MmRjOThkY2YwNmExOWFhMDVmYzRhYTBhYTI0ZDk4M2E1YjdjZDE1Li4z
YzBjZjI2YmI4MDE1ZGNkNTI1YzkxMjgyZDA0ZmNiZDA3YThmNDMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZVRleHRJdGVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNX
aGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SXRlbVR5cGUgPT0gVGV4dEl0ZW1UeXBl
OjpXaGl0ZXNwYWNlOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX2lzV29yZFNlcGFyYXRvcjsgfQogICAgIGJvb2wgaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNUcmFpbGluZ1NvZnRIeXBoZW47IH0KLSAgICBPcHRpb25hbDxJ
bmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzV2lkdGggPyBtYWtl
T3B0aW9uYWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07IH0KKyAg
ICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
V2lkdGggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlv
dXRVbml0PiB7IH07IH0KICAgICBib29sIGlzRW1wdHlDb250ZW50KCkgY29uc3Q7CiAKICAgICBj
b25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KCkpOyB9CkBAIC05MSw3ICs5MSw3IEBAIGlubGlu
ZSBJbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4dEJveCYgaW5s
aW5lVGV4dEJveCwgdW5zaWduCiAgICAgbV9oYXNXaWR0aCA9ICEhd2lkdGg7CiAgICAgbV9oYXNU
cmFpbGluZ1NvZnRIeXBoZW4gPSBoYXNUcmFpbGluZ1NvZnRIeXBoZW47CiAgICAgbV9pc1dvcmRT
ZXBhcmF0b3IgPSBpc1dvcmRTZXBhcmF0b3I7Ci0gICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlT3Io
MCk7CisgICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlX29yKDApOwogICAgIG1fdGV4dEl0ZW1UeXBl
ID0gdGV4dEl0ZW1UeXBlOwogfQogCkBAIC0xMDUsNyArMTA1LDcgQEAgaW5saW5lIElubGluZVRl
eHRJdGVtIElubGluZVRleHRJdGVtOjpsZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICBS
RUxFQVNFX0FTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChtX3Rl
eHRJdGVtVHlwZSAhPSBUZXh0SXRlbVR5cGU6OlVuZGVmaW5lZCk7CiAgICAgQVNTRVJUKGxlbmd0
aCk7Ci0gICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBzdGFydCgpLCBsZW5ndGgsIGZhbHNl
LCBpc1dvcmRTZXBhcmF0b3IoKSwgV1RGOjpudWxsb3B0LCBtX3RleHRJdGVtVHlwZSB9OworICAg
IHJldHVybiB7IGlubGluZVRleHRCb3goKSwgc3RhcnQoKSwgbGVuZ3RoLCBmYWxzZSwgaXNXb3Jk
U2VwYXJhdG9yKCksIHN0ZDo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogaW5saW5l
IElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpyaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0CkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJ
dGVtOjpyaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgUkVMRUFTRV9BU1NFUlQobGVu
Z3RoIDw9IHRoaXMtPmxlbmd0aCgpKTsKICAgICBBU1NFUlQobV90ZXh0SXRlbVR5cGUgIT0gVGV4
dEl0ZW1UeXBlOjpVbmRlZmluZWQpOwogICAgIEFTU0VSVChsZW5ndGgpOwotICAgIHJldHVybiB7
IGlubGluZVRleHRCb3goKSwgZW5kKCkgLSBsZW5ndGgsIGxlbmd0aCwgaGFzVHJhaWxpbmdTb2Z0
SHlwaGVuKCksIGlzV29yZFNlcGFyYXRvcigpLCBXVEY6Om51bGxvcHQsIG1fdGV4dEl0ZW1UeXBl
IH07CisgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBlbmQoKSAtIGxlbmd0aCwgbGVuZ3Ro
LCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4oKSwgaXNXb3JkU2VwYXJhdG9yKCksIHN0ZDo6bnVsbG9w
dCwgbV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYmQ2MDJkYzZiODVlMWM0YWNkYzc2N2IyNzcwNjY1
MTcwMDQyN2FhMi4uNWJiMzNlOWY4NWRjNTFhNmE2NzU2NWVjZmE4NjBiMWU0ODU1YWE5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMDks
OCArMTA5LDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlG
b3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KIAogICAgICAgICAgICAgLy8gRklY
TUU6IEZpbmQgb3V0IGlmIGl0IGlzIG9rIHRvIHVzZSB0aGUgcmVndWxhciBwYWRkaW5nIGhlcmUg
dG8gYWxpZ24gdGhlIGNvbnRlbnQgYm94IGluc2lkZSBhIHRhbGwgY2VsbCBvciB3ZSBuZWVkIHRv
CiAgICAgICAgICAgICAvLyB1c2Ugc29tZSBraW5kIG9mIGludHJpbnNpYyBwYWRkaW5nIHNpbWls
YXIgdG8gUmVuZGVyVGFibGVDZWxsLgotICAgICAgICAgICAgYXV0byBwYWRkaW5nVG9wID0gY2Vs
bEJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKExheW91dFVuaXQgeyB9KTsKLSAgICAg
ICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQm90dG9t
KCkudmFsdWVPcihMYXlvdXRVbml0IHsgfSk7CisgICAgICAgICAgICBhdXRvIHBhZGRpbmdUb3Ag
PSBjZWxsQm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKExheW91dFVuaXQgeyB9KTsK
KyAgICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5n
Qm90dG9tKCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IH0pOwogICAgICAgICAgICAgYXV0byBpbnRy
aW5zaWNQYWRkaW5nVG9wID0gTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBhdXRvIGludHJp
bnNpY1BhZGRpbmdCb3R0b20gPSBMYXlvdXRVbml0IHsgfTsKIApAQCAtMjU1LDggKzI1NSw4IEBA
IHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMo
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIC8vIFNlY3Rpb24gYm9yZGVycyBhcmUg
ZWl0aGVyIGNvbGxhcHNlZCBvciBpZ25vcmVkLgogICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnku
c2V0Qm9yZGVyKHsgfSk7CiAgICAgICAgIC8vIFVzZSBmYWtlIHZlcnRpY2FsIHBhZGRpbmcgdG8g
c3BhY2Ugb3V0IHRoZSBzZWN0aW9ucy4KLSAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldFBh
ZGRpbmcoRWRnZXMgeyB7IH0sIHsgcGFkZGluZ0JlZm9yZS52YWx1ZU9yKDBfbHUpLCBwYWRkaW5n
QWZ0ZXIgfSB9KTsKLSAgICAgICAgcGFkZGluZ0JlZm9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldFBhZGRpbmcoRWRnZXMgeyB7IH0sIHsgcGFkZGluZ0Jl
Zm9yZS52YWx1ZV9vcigwX2x1KSwgcGFkZGluZ0FmdGVyIH0gfSk7CisgICAgICAgIHBhZGRpbmdC
ZWZvcmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIEludGVybmFsIHRhYmxlIGVsZW1lbnRz
IGRvIG5vdCBoYXZlIG1hcmdpbnMuCiAgICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRIb3Jp
em9udGFsTWFyZ2luKHsgfSk7CiAgICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRWZXJ0aWNh
bE1hcmdpbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQu
aAppbmRleCA3MjlhYzI4MDM2MWZlNTQ4MDdiMzdkNTM2NjczZTNkODIxODZmZTYwLi5iYjI0MTFk
NDFkZjFhZjdlNjc0N2JmNWQ3N2VkNDQ0MzM5YmIyZDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAg
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0IHRhYmxlTGF5b3V0KCkgY29uc3Qg
eyByZXR1cm4gVGFibGVMYXlvdXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLnRhYmxlR3JpZCgp
KTsgfQogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21wdXRlZEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFi
bGVHcmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwgTGF5
b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2
YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lk
IHNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnRhbFNw
YWNlKTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclJvd3MoTGF5b3V0VW5pdCBhdmFpbGFi
bGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5Rm9yU2VjdGlvbnMo
Y29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dl
b21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGM2ODQzYzgzNGQ5YzllM2ExOWNk
Yjg3ZDBiOTViZDg2YjBhNTk2YmQuLjNlM2I2Zjc2YTBmNGU4ZWVkZjgxNTRkOTU2OWJlMzczZjYx
NDMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCkBAIC0xNDAsOSArMTQwLDkgQEAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBUYWJsZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckMKICAgICAvLyBF
eHBhbmQgd2l0aCBib3JkZXIKICAgICBpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLmV4cGFuZChj
b21wdXRlZENlbGxCb3JkZXIoY2VsbCkud2lkdGgoKSk7CiAgICAgLy8gcGFkZGluZwotICAgIGlu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ0xl
ZnQoKSkudmFsdWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVl
T3IoMCkpOworICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUo
c3R5bGUucGFkZGluZ0xlZnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRp
bmdSaWdodCgpKS52YWx1ZV9vcigwKSk7CiAgICAgLy8gYW5kIG1hcmdpbgotICAgIGludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSku
dmFsdWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkpLnZhbHVlT3IoMCkpOwor
ICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUubWFy
Z2luU3RhcnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgpKS52
YWx1ZV9vcigwKSk7CiAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHM7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA1NmIy
NzJiMmRiMDAzNWE1Y2ZiZDdmNjUwNjY2M2ZhYTAwM2FiZmUzLi5lNWNlNjVhYjU0MjE3YTA1Yzk5
YzkzZjE5NDI5ZTVkOWQ4NjM5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdRdWlya3MuY3BwCkBAIC02Myw3ICs2Myw3IEBAIExheW91dFVuaXQgVGFibGVGb3JtYXR0
aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhl
CiAgICAgLy8gZS5nIDxkaXYgc3R5bGU9ImhlaWdodDogMTAwcHgiPjx0YWJsZT48dHI+PHRkIHN0
eWxlPSJoZWlnaHQ6IDEwMCUiPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PiBpcyByZXNvbHZlZCB0
byAwcHguCiAgICAgYXV0byBmaXhlZExvZ2ljYWxIZWlnaHQgPSBbJl0oY29uc3QgYXV0byYgYW5j
ZXN0b3JCb3gpIHsKICAgICAgICAgYXV0byBoZWlnaHQgPSBhbmNlc3RvckJveC5zdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuIGhlaWdodC5pc0ZpeGVkKCkgPyBtYWtlT3B0
aW9uYWwoTGF5b3V0VW5pdCB7IGhlaWdodC52YWx1ZSgpIH0pIDogV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gaGVpZ2h0LmlzRml4ZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChMYXlvdXRV
bml0IHsgaGVpZ2h0LnZhbHVlKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIGF1
dG8mIHRhYmxlQm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVMYXlvdXQuY3BwCmluZGV4IGQ4NTY3NjUzMjNkY2NlZDQyYmNiMzBlNzQ0MTY2MDM2ZjhiOWZj
MjQuLjI0NTE5N2RkOWIyZTQzMjI5Yjg1N2Y1OTA3NTU1OGU5YmFmYjZlNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFi
bGUvVGFibGVMYXlvdXQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgVGFibGVGb3JtYXR0aW5nQ29u
dGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ6OlQKICAgICBhdXRvIGNvbHVtbldpZHRoQmFsYW5jaW5nQmFzZSA9IGF2YWlsYWJsZUhvcml6
b250YWxTcGFjZSA+PSBtX2dyaWQud2lkdGhDb25zdHJhaW50cygpLT5tYXhpbXVtID8gQ29sdW1u
V2lkdGhCYWxhbmNpbmdCYXNlOjpNYXhpbXVtV2lkdGggOiBDb2x1bW5XaWR0aEJhbGFuY2luZ0Jh
c2U6Ok1pbmltdW1XaWR0aDsKICAgICByZXR1cm4gZGlzdHJpYnV0ZUF2YWlsYWJsZVNwYWNlPENv
bHVtblNwYW4+KG1fZ3JpZCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNlLCBbJl0gKGNvbnN0IFRh
YmxlR3JpZDo6U2xvdCYgc2xvdCwgc2l6ZV90IGNvbHVtbkluZGV4KSB7CiAgICAgICAgIGF1dG8m
IGNvbHVtbiA9IG1fZ3JpZC5jb2x1bW5zKCkubGlzdCgpW2NvbHVtbkluZGV4XTsKLSAgICAgICAg
YXV0byBjb2x1bW5Cb3hGaXhlZFdpZHRoID0gY29sdW1uLmJveCgpID8gY29sdW1uLmJveCgpLT5j
b2x1bW5XaWR0aCgpLnZhbHVlT3IoMF9sdSkgOiAwX2x1OworICAgICAgICBhdXRvIGNvbHVtbkJv
eEZpeGVkV2lkdGggPSBjb2x1bW4uYm94KCkgPyBjb2x1bW4uYm94KCktPmNvbHVtbldpZHRoKCku
dmFsdWVfb3IoMF9sdSkgOiAwX2x1OwogICAgICAgICBhdXRvIG1pbmltdW1XaWR0aCA9IHN0ZDo6
bWF4PGZsb2F0PihzbG90LndpZHRoQ29uc3RyYWludHMoKS5taW5pbXVtLCBjb2x1bW5Cb3hGaXhl
ZFdpZHRoKTsKICAgICAgICAgYXV0byBtYXhpbXVtV2lkdGggPSBzdGQ6Om1heDxmbG9hdD4oc2xv
dC53aWR0aENvbnN0cmFpbnRzKCkubWF4aW11bSwgY29sdW1uQm94Rml4ZWRXaWR0aCk7CiAKQEAg
LTI3Miw3ICsyNzIsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlz
dHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAogICAgICAgICBhdXRvIG1h
eGltdW1Db2x1bW5Bc2NlbnQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAgICAgICAgYXV0byBt
YXhpbXVtQ29sdW1uRGVzY2VudCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAgICAvLyBJ
bml0aWFsIG1pbmltdW0gaGVpZ2h0IGlzIHRoZSBjb21wdXRlZCBoZWlnaHQgaWYgYXZhaWxhYmxl
IDx0ciBzdHlsZT0iaGVpZ2h0OiAxMDBweCI+PHRkPjwvdGQ+PC90cj4KLSAgICAgICAgcm93SGVp
Z2h0W3Jvd0luZGV4XSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0dGluZ0dlb21ldHJ5KCku
Y29tcHV0ZWRIZWlnaHQocm93cy5saXN0KClbcm93SW5kZXhdLmJveCgpLCBhdmFpbGFibGVWZXJ0
aWNhbFNwYWNlKS52YWx1ZU9yKDBfbHUpOworICAgICAgICByb3dIZWlnaHRbcm93SW5kZXhdID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZEhlaWdodChy
b3dzLmxpc3QoKVtyb3dJbmRleF0uYm94KCksIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UpLnZhbHVl
X29yKDBfbHUpOwogICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW5JbmRleCA9IDA7IGNvbHVtbklu
ZGV4IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8m
IHNsb3QgPSAqbV9ncmlkLnNsb3QoeyBjb2x1bW5JbmRleCwgcm93SW5kZXggfSk7CiAgICAgICAg
ICAgICBpZiAoc2xvdC5pc1Jvd1NwYW5uZWQoKSkKQEAgLTI5NiwxNCArMjk2LDE0IEBAIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpEaXN0cmlidXRlZFNwYWNlcyBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpUCiAgICAgLy8gRklYTUU6IENvbGxlY3Qgc3Bhbm5pbmcgcm93IG1h
eGltdW0gaGVpZ2h0cy4KIAogICAgIHRhYmxlVXNlZEhlaWdodCArPSAocm93cy5zaXplKCkgKyAx
KSAqIG1fZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKLSAgICBhdXRvIGF2YWlsYWJsZVNwYWNlID0g
c3RkOjptYXgoYXZhaWxhYmxlVmVydGljYWxTcGFjZS52YWx1ZU9yKDBfbHUpLCB0YWJsZVVzZWRI
ZWlnaHQpOworICAgIGF1dG8gYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heChhdmFpbGFibGVWZXJ0
aWNhbFNwYWNlLnZhbHVlX29yKDBfbHUpLCB0YWJsZVVzZWRIZWlnaHQpOwogICAgIC8vIERpc3Ry
aWJ1dGUgZXh0cmEgc3BhY2UgaWYgdGhlIHRhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHRhbGxlciB0
aGFuIHRoZSBzdW0gb2YgdGhlIHJvdyBoZWlnaHRzLgogICAgIHJldHVybiBkaXN0cmlidXRlQXZh
aWxhYmxlU3BhY2U8Um93U3Bhbj4obV9ncmlkLCBhdmFpbGFibGVTcGFjZSwgWyZdIChjb25zdCBU
YWJsZUdyaWQ6OlNsb3QmIHNsb3QsIHNpemVfdCByb3dJbmRleCkgewogICAgICAgICBpZiAoc2xv
dC5oYXNSb3dTcGFuKCkpCiAgICAgICAgICAgICByZXR1cm4gR3JpZFNwYWNlIHsgZm9ybWF0dGlu
Z0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3goKSkuYm9yZGVyQm94SGVp
Z2h0KCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goc2xvdC5jZWxsKCkuYm94
KCkpLmJvcmRlckJveEhlaWdodCgpIH07CiAgICAgICAgIGF1dG8mIHJvd3MgPSBtX2dyaWQucm93
cygpOwogICAgICAgICBhdXRvIGNvbXB1dGVkUm93SGVpZ2h0ID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZEhlaWdodChyb3dzLmxpc3QoKVtyb3dJbmRl
eF0uYm94KCksIHsgfSk7Ci0gICAgICAgIGF1dG8gaGVpZ2h0ID0gc3RkOjptYXg8ZmxvYXQ+KHJv
d0hlaWdodFtyb3dJbmRleF0sIGNvbXB1dGVkUm93SGVpZ2h0LnZhbHVlT3IoMF9sdSkpOworICAg
ICAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWF4PGZsb2F0Pihyb3dIZWlnaHRbcm93SW5kZXhdLCBj
b21wdXRlZFJvd0hlaWdodC52YWx1ZV9vcigwX2x1KSk7CiAgICAgICAgIHJldHVybiBHcmlkU3Bh
Y2UgeyBoZWlnaHQsIGhlaWdodCB9OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwCmluZGV4IDk0ZDk2MzkwMzllYWQzOWJlODA4YWZiMGRmMWM0ZGM0YTRhZjlkYzcuLmUz
MDQ4YjZiNGNkNWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgT3B0aW9uU2V0PEF2b2lk
YW5jZVJlYXNvbj4gY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmNs
dQogICAgIGlmIChzdHlsZS50ZXh0U2VjdXJpdHkoKSAhPSBUZXh0U2VjdXJpdHk6Ok5vbmUpCiAg
ICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1RleHRTZWN1cml0
eSwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIGlmIChzdHlsZS5oeXBoZW5zKCkgPT0g
SHlwaGVuczo6QXV0bykgewotICAgICAgICBhdXRvIHRleHRSZWFzb25zID0gY2FuVXNlRm9yVGV4
dChzdHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9udENhc2NhZGUoKSwgV1RGOjpudWxsb3B0
LCBmYWxzZSwgaW5jbHVkZVJlYXNvbnMpOworICAgICAgICBhdXRvIHRleHRSZWFzb25zID0gY2Fu
VXNlRm9yVGV4dChzdHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9udENhc2NhZGUoKSwgc3Rk
OjpudWxsb3B0LCBmYWxzZSwgaW5jbHVkZVJlYXNvbnMpOwogICAgICAgICBpZiAodGV4dFJlYXNv
bnMpCiAgICAgICAgICAgICBBRERfUkVBU09OU19BTkRfUkVUVVJOX0lGX05FRURFRCh0ZXh0UmVh
c29ucywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKaW5k
ZXggYmY5NWM2NmZlMTcxNTBiMzhkNDA2ODkzNTBmZDIyNzIzMmVlNzY4OS4uM2RmZWVjYjIxYmNm
Y2M2NDliY2E3N2MyZTFhYjFmMWMzOWJkNTY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTYxLDcg
KzYxLDcgQEAgc3RydWN0IFJ1biB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHBhbnNpb247Ci0g
ICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBPcHRpb25hbDxU
ZXh0Q29udGVudD4gPSBXVEY6Om51bGxvcHQpOworICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBj
b25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYgaW5r
T3ZlcmZsb3csIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+ID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQogICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lu
a092ZXJmbG93OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRCb3hHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Qm94R2VvbWV0cnkuaAppbmRleCAwODMwNWIzNDY0OTRlZGU4OWQxNWE1NjA1YWFjZWYw
ZjVhNDNkNGEwLi42ZDBmYjgxOGNjZDZmMDExMDUwZDFhMDZiNjE5YjU5ZTkzMWVkMGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRy
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21l
dHJ5LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHZlcnRpY2FsUGFkZGluZygpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGhvcml6
b250YWxQYWRkaW5nKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hUb3AoKSBj
b25zdCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9wKCkudmFsdWVPcigwKTsg
fQotICAgIExheW91dFVuaXQgY29udGVudEJveExlZnQoKSBjb25zdCB7IHJldHVybiBwYWRkaW5n
Qm94TGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOyB9CisgICAgTGF5b3V0VW5pdCBj
b250ZW50Qm94VG9wKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveFRvcCgpICsgcGFkZGluZ1Rv
cCgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94TGVmdCgpIGNvbnN0
IHsgcmV0dXJuIHBhZGRpbmdCb3hMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOyB9
CiAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94Qm90dG9tKCkgY29uc3QgeyByZXR1cm4gY29udGVu
dEJveFRvcCgpICsgY29udGVudEJveEhlaWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBjb250ZW50
Qm94UmlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94TGVmdCgpICsgY29udGVudEJveFdp
ZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQoKSBjb25zdDsKQEAgLTg4
LDE2ICs4OCwxNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94TGVmdCgpIGNv
bnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKTsgfQogICAgIExheW91dFVuaXQgcGFkZGluZ0JveEJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQo
KTsgfQogICAgIExheW91dFVuaXQgcGFkZGluZ0JveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFk
ZGluZ0JveExlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBwYWRk
aW5nQm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBj
b250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsgfQotICAgIExh
eW91dFVuaXQgcGFkZGluZ0JveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0xlZnQoKS52
YWx1ZU9yKDApICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDAp
OyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFk
ZGluZ1RvcCgpLnZhbHVlX29yKDApICsgY29udGVudEJveEhlaWdodCgpICsgcGFkZGluZ0JvdHRv
bSgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94V2lkdGgoKSBjb25z
dCB7IHJldHVybiBwYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApICsgY29udGVudEJveFdpZHRoKCkg
KyBwYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsgfQogCiAgICAgTGF5b3V0VW5pdCBib3JkZXJC
b3hIZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQo
KSArIHZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoKSArIGJvcmRlckJvdHRvbSgpOyB9CiAgICAg
TGF5b3V0VW5pdCBib3JkZXJCb3hXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdCb3hXaWR0aCgpICsgaG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKCkgKyBib3Jk
ZXJSaWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveEhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKTsg
fQogICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBtYXJnaW5T
dGFydCgpICsgYm9yZGVyQm94V2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9CiAKLSAgICBMYXlvdXRV
bml0IHZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdp
bkJlZm9yZSgpICsgdmVydGljYWxCb3JkZXIoKSArIHZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3Io
MCkgKyBtYXJnaW5BZnRlcigpOyB9Ci0gICAgTGF5b3V0VW5pdCBob3Jpem9udGFsTWFyZ2luQm9y
ZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBob3Jpem9udGFs
Qm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkgKyBtYXJnaW5FbmQoKTsg
fQorICAgIExheW91dFVuaXQgdmVydGljYWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkgY29uc3Qg
eyByZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyB2ZXJ0aWNhbEJvcmRlcigpICsgdmVydGljYWxQYWRk
aW5nKCkudmFsdWVfb3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9CisgICAgTGF5b3V0VW5pdCBob3Jp
em9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0
KCkgKyBob3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDAp
ICsgbWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVuaXQgdmVydGljYWxTcGFjZUZvclNjcm9s
bGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTcGFjZUZvclNjcm9sbGJhcjsgfQogICAg
IExheW91dFVuaXQgaG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
bV9ob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXI7IH0KQEAgLTM3Nyw3ICszNzcsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnZlcnRpY2FsUGFkZGluZygpIGNv
bnN0CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gdGhpcy0+cGFkZGluZ0JvdHRvbSgpOwogICAg
IGlmICghcGFkZGluZ1RvcCAmJiAhcGFkZGluZ0JvdHRvbSkKICAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICByZXR1cm4gcGFkZGluZ1RvcC52YWx1ZU9yKDApICsgcGFkZGluZ0JvdHRvbS52YWx1ZU9y
KDApOworICAgIHJldHVybiBwYWRkaW5nVG9wLnZhbHVlX29yKDApICsgcGFkZGluZ0JvdHRvbS52
YWx1ZV9vcigwKTsKIH0KIAogaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5
Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0CkBAIC0zODYsNyArMzg2LDcgQEAgaW5saW5lIE9w
dGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0
CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSB0aGlzLT5wYWRkaW5nUmlnaHQoKTsKICAgICBpZiAo
IXBhZGRpbmdMZWZ0ICYmICFwYWRkaW5nUmlnaHQpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
cmV0dXJuIHBhZGRpbmdMZWZ0LnZhbHVlT3IoMCkgKyBwYWRkaW5nUmlnaHQudmFsdWVPcigwKTsK
KyAgICByZXR1cm4gcGFkZGluZ0xlZnQudmFsdWVfb3IoMCkgKyBwYWRkaW5nUmlnaHQudmFsdWVf
b3IoMCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveEdlb21ldHJ5Ojpib3JkZXJUb3AoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
R2VvbWV0cnlSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRH
ZW9tZXRyeVJlY3QuaAppbmRleCAzMjU1ZDkyNDVjZWI2Yzg3OTZjODBhODlkYTYwYTRjNzdiYzc0
MDQ2Li41MjFmNjEyNzNjNTcxYzNjYzQ5MjFjNjAyZWNjYzc5YTgzYzE4OWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3Qu
aApAQCAtMjkwLDcgKzI5MCw3IEBAIGlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZChPcHRpb25hbDxM
YXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0CiB7CiAgICAgQVNT
RVJUKCF3aWR0aCB8fCBtX2hhc1ZhbGlkV2lkdGgpOwogICAgIEFTU0VSVCghaGVpZ2h0IHx8IG1f
aGFzVmFsaWRIZWlnaHQpOwotICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVPcigwKSwgaGVp
Z2h0LnZhbHVlT3IoMCkpOworICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVfb3IoMCksIGhl
aWdodC52YWx1ZV9vcigwKSk7CiB9CiAKIGlubGluZSB2b2lkIFJlY3Q6OmV4cGFuZFRvQ29udGFp
bihjb25zdCBSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJlYzE5OGMyODNiYzkyMDg0ZTNk
MDFiYzg2NDU0ZjE3MTQ1ODcxODIuLjk0NTY0ZDBiZTJkMmY0ZWI5ZWNhYTJjZTU4ZWQ5ODgxMWYy
ZTcwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBCb3gqIFRyZWVCdWlsZGVy
OjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIsIGNv
bnN0IFJlbgogICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzIHsg
Qm94OjpFbGVtZW50VHlwZTo6SUZyYW1lIH07CiAgICAgICAgICAgICByZXR1cm4gQm94OjpFbGVt
ZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNFbGVtZW50IH07CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9OwogCiAgICAgQm94KiBjaGlsZExheW91dEJveCA9IG51bGxwdHI7CkBA
IC00MjgsNyArNDI4LDcgQEAgdm9pZCBzaG93SW5saW5lVHJlZUFuZFJ1bnMoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGMKICAgICAgICAgICAgICAg
ICA8PCAiIHNpemUgKCIgPDwgbG9naWNhbFJlY3Qud2lkdGgoKSA8PCAieCIgPDwgbG9naWNhbFJl
Y3QuaGVpZ2h0KCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiBiYXNlbGluZSAoIiA8PCBs
b2dpY2FsUmVjdC50b3AoKSArIGlubGluZUxldmVsQm94LmJhc2VsaW5lKCkgPDwgIikiCiAgICAg
ICAgICAgICAgICAgPDwgIiBhc2NlbnQgKCIgPDwgaW5saW5lTGV2ZWxCb3guYmFzZWxpbmUoKSA8
PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IDw8ICIpIgotICAg
ICAgICAgICAgICAgIDw8ICIgZGVzY2VudCAoIiA8PCBpbmxpbmVMZXZlbEJveC5kZXNjZW50KCku
dmFsdWVPcigwLjBmKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVz
Y2VudCA8PCAiKSI7CisgICAgICAgICAgICAgICAgPDwgIiBkZXNjZW50ICgiIDw8IGlubGluZUxl
dmVsQm94LmRlc2NlbnQoKS52YWx1ZV9vcigwLjBmKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gu
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCA8PCAiKSI7CiAgICAgICAgICAgICBzdHJlYW0ubmV4dExp
bmUoKTsKICAgICAgICAgfTsKICAgICAgICAgb3V0cHV0SW5saW5lTGV2ZWxCb3gobGluZUJveC5y
b290SW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBmMWMzMzYxYjJkMzdhODNhZTdjM2Y3NmU4MDdiNWIw
ZWY5ZmJkMDEzLi5lNTgyYTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRmMDU1MDkwNGE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cApAQCAtMzA4LDE0ICszMDgsMTQgQEAgT3B0aW9uYWw8UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVD
cm9zc09yaWdpblJlc291cmNlUG9saWN5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJgogewogICAgIGlm
IChzaG91bGRDcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2FuY2VsTG9hZChvcmlnaW4sIHJlc3Bv
bnNlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXF1ZXN0VVJMLCBtYWtlU3RyaW5nKCJDYW5jZWxsZWQgbG9hZCB0byAiLCBy
ZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSByZXNvdXJjZSdzIENyb3NzLU9yaWdpbi1SZXNvdXJjZS1Qb2xpY3kg
cmVzcG9uc2UgaGVhZGVyLiIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH07
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJhbmdlUmVxdWVzdGVkRmxhZyhjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIGlmIChyZXNwb25zZS5pc1JhbmdlUmVxdWVzdGVkKCkgJiYgcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSA9PSAyMDYgJiYgcmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVz
cG9uc2U6OlR5cGU6Ok9wYXF1ZSAmJiAhcmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlJhbmdlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoeyB9LCAwLCBy
ZXNwb25zZS51cmwoKSwgeyB9LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsKTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5OWNhOWM0YTBkOTc2NjEy
YTBmOGJkMzNkYTA4NGZhNDQ2ODVlOTliLi45MmU3NjhhYTdkOGU4NDJiZmUwYTdmNDcwYmRlNGVi
MTRlYTc5YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBi
b29sIHBhcnNlQWNjZXNzQ29udHJvbE1heEFnZShjb25zdCBTdHJpbmcmIHN0cmluZywgU2Vjb25k
cyYgZXhwaXJ5RGVsdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJl
amVjdCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgogICAgIGF1dG8gcGFyc2VkSW50
ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKLSAgICBleHBpcnlEZWx0YSA9
IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlT3IoMCkpKTsK
KyAgICBleHBpcnlEZWx0YSA9IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRl
Z2VyLnZhbHVlX29yKDApKSk7CiAgICAgcmV0dXJuIHBhcnNlZEludGVnZXIuaGFzVmFsdWUoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxk
cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZpZWxkcy5oCmluZGV4IDY2
MGZmMGEwMTZiMTk4NjMzYmJmNmRhYzQzOTQ2ZDg0M2EzZGE1NDguLjdmMTQxY2Y4MTFkMTVhOTc4
MThlNjIyYjhlZWMyZWQ1YzFiYzIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9DdXN0b21IZWFkZXJGaWVsZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9t
SGVhZGVyRmllbGRzLmgKQEAgLTU0LDEyICs1NCwxMiBAQCBPcHRpb25hbDxDdXN0b21IZWFkZXJG
aWVsZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
T3B0aW9uYWw8VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxkczsKICAgICBkZWNvZGVyID4+
IGZpZWxkczsKICAgICBpZiAoIWZpZWxkcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8
U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5RG9t
YWluczsKICAgICBpZiAoIXRoaXJkUGFydHlEb21haW5zKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpmaWVsZHMpLCBXVEZNb3ZlKCp0aGlyZFBhcnR5RG9tYWlucykgfX07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0YzY3YjYzODIzZmY2
YTQ5N2E2MTJkNmQ2M2FlNDVhNmQ4ZGIwYTA1Li5lMjU1NTVlZDFiZDRkZjQ3YjQxODExMzdlMDQ4
M2ZhOGZkMmI5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
QEAgLTEyMyw4ICsxMjMsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgog
I2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52
YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkK
LSNkZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+ZnJhbWVJRCgpLnZhbHVlT3Io
RnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVm
aW5lIFBBR0VfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlk
ZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFN
RV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlm
aWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIElTX01BSU5f
RlJBTUUgKG1fZnJhbWUgPyBtX2ZyYW1lLT5pc01haW5GcmFtZSgpIDogZmFsc2UpCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMs
IFBBR0VfSUQsIEZSQU1FX0lELCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCkBAIC0z
MzIsNyArMzMyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIAog
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBmb3IgKGF1dG8gY2FsbGJhY2tJ
ZGVudGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy52YWx1ZXMoKSkKLSAgICAg
ICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50
aWZpZXIsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQpOwogICAgIG1f
YXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuY2xlYXIoKTsKICNlbmRpZgogCkBAIC01NTYsMTMg
KzU1NiwxMyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXRjaFJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHVybCwgU1dDbGllbnRDb25uZWN0aW9uOjpSZWdpcwogewogICAgIGF1dG8gc2hvdWxkVHJ5
TG9hZGluZ1Rocm91Z2hTZXJ2aWNlV29ya2VyID0gIWZyYW1lTG9hZGVyKCktPmlzUmVsb2FkaW5n
RnJvbU9yaWdpbigpICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkgJiYgdXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKTsKICAgICBpZiAoIXNob3VsZFRyeUxvYWRpbmdUaHJvdWdoU2Vydmlj
ZVdvcmtlcikgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBv
cmlnaW4gPSAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKSkg
PyBtX2ZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKS5kYXRhKCkgOiBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21VUkwodXJsKTsKICAgICBpZiAoIVNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2lu
Z2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKS5tYXlIYXZlU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4ob3JpZ2luKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMTgzLDcgKzIxODMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydElj
b25Mb2FkaW5nKCkKIAogICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbGlua0ljb25zLmZpbmRNYXRj
aGluZyhbXShhdXRvJiBpY29uKSB7IHJldHVybiBpY29uLnR5cGUgPT0gTGlua0ljb25UeXBlOjpG
YXZpY29uOyB9KTsKICAgICBpZiAoZmluZFJlc3VsdCA9PSBub3RGb3VuZCkKLSAgICAgICAgbV9s
aW5rSWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIvZmF2aWNvbi5pY28iX3Mp
LCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBXVEY6Om51bGxvcHQsIHsgfSB9KTsK
KyAgICAgICAgbV9saW5rSWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIvZmF2
aWNvbi5pY28iX3MpLCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBzdGQ6Om51bGxv
cHQsIHsgfSB9KTsKIAogICAgIGlmICghbV9saW5rSWNvbnMuc2l6ZSgpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDliNjNlNDY4ODAxYTBkZmJlODVkMDA5MGQ2ZDk1YjcyMDM1NDEwZTEuLmI5
Mzk2NWRjMTBhN2IxNGE3MzQwNjZmYjk1MmU4ZWFhNzM0ODZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zMDIsNyAr
MzAyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNsZWFyUmVzb3VyY2UoKQog
ICAgICAgICByZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAgICB9CiAgICAgaWYgKG1f
cHJlZmxpZ2h0Q2hlY2tlcikKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01MDYsNyArNTA2LDcgQEAgdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IKICAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9k
ZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKICAgICAgICAgbWFrZUNyb3NzT3JpZ2luQWNj
ZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoV1RGTW92ZShtX2J5cGFzc2luZ1ByZWZsaWdodEZvclNl
cnZpY2VXb3JrZXJSZXF1ZXN0LnZhbHVlKCkpKTsKICAgICAgICAgQVNTRVJUKG1fYnlwYXNzaW5n
UHJlZmxpZ2h0Rm9yU2VydmljZVdvcmtlclJlcXVlc3QtPmlzTnVsbCgpKTsKLSAgICAgICAgbV9i
eXBhc3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdCA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV9ieXBhc3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdCA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTIyLDcgKzUy
Miw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGFjdHVhbFJlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wo
YWN0dWFsUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25zLnN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKIAotICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJdCBzaG91bGQg
YmUgb2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2luY2Ugd2UgYWxyZWFkeSBhc2tlZCBh
Ym91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1
YWxSZXF1ZXN0KSwgU2VjdXJpdHlDaGVja1BvbGljeTo6U2tpcFNlY3VyaXR5Q2hlY2spOwpAQCAt
NTMwLDcgKzUzMCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRT
dWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gV1RG
OjpudWxsb3B0OworICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC5mcmFt
ZSgpLCBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCksIGlkZW50
aWZpZXIsIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRl
eCA3YjkwMjgxY2E3NjI3N2IzN2Y0Zjk2ZmVlNGVjMTUzOTIyZWM0YjUyLi5lZmQ5M2VhZTRmMTdk
ZDM2ZjczNzExNDdlZDBmMWM5NTJmNWVhNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICBFbXB0eUVkaXRvckNs
aWVudCgpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZERlbGV0ZVJhbmdl
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTI0OCwxMSArMjQ4LDExIEBAIHByaXZhdGU6CiAKICAgICBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhjb25zdCBTaW1wbGVSYW5nZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSYsIGNvbnN0IE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBBZmZpbml0eSwg
Ym9vbCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZEluc2VydE5vZGUo
Tm9kZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0
aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvcklu
c2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZENoYW5n
ZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBib29sKSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVy
dGllcyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydGllcyYsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbCB7IH0KICAgICBib29sIHNob3VsZE1vdmVS
YW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0yNjUsOSArMjY1LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFVwZGF0ZUNvbXBvc2l0aW9uKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRFbmRF
ZGl0aW5nKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dlcmVkU2VsZWN0aW9u
Q2hhbmdlcygpIGZpbmFsIHsgfQotICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgfQorICAgIHZvaWQgd2ls
bFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
IGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGEoY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25z
dCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQgcmVxdWVzdENhbmRpZGF0
ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQogICAgIHZv
aWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQpIGZpbmFsIHsgfQogCkBAIC00MDIsMTkgKzQwMiwxOSBAQCBjbGFzcyBFbXB0eUluc3BlY3Rv
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgewogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVi
bGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiB2YWxp
ZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRhdGVkUGF5bWVudE5ldHdv
cmsoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgYm9v
bCBjYW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgY2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwg
eyBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAg
ICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIHsg
Y2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9KTsgfQogICAg
IGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8VVJMPiYsIGNvbnN0
IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFBheW1lbnRNZXJjaGFu
dFNlc3Npb24mKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZT4mJikgZmluYWwgeyB9
Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxBcHBs
ZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9Ci0gICAgdm9pZCBjb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBk
YXRlPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7
IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIGZpbmFsIHsgfQorICAgIHZvaWQg
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1BBWU1F
TlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdl
KE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIGZpbmFsIHsgfQot
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0RfTU9ERSkKLSAgICB2b2lk
IGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1
bHQ+JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kTW9kZUNoYW5n
ZShzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+JiYpIGZpbmFs
IHsgfQorI2VuZGlmCisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNzaW9uKHN0ZDo6b3B0aW9u
YWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIGZpbmFsIHsgfQogICAgIHZvaWQgY2Fu
Y2VsUGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGFib3J0UGF5bWVudFNlc3Np
b24oKSBmaW5hbCB7IH0KICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRvckRlc3Ryb3llZCgpIGZp
bmFsIHsgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7CiAKIGNsYXNz
IEVtcHR5UGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFBsdWdpbkluZm9Qcm92aWRl
ciB7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIGZpbmFsIHsgfTsKLSAgICBWZWN0b3I8UGx1
Z2luSW5mbz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdp
bklkZW50aWZpZXI+PiYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIFZlY3RvcjxQbHVnaW5J
bmZvPiBwbHVnaW5JbmZvKFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdXBwb3J0ZWRQbHVn
aW5JZGVudGlmaWVyPj4mKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAgICBWZWN0b3I8UGx1Z2lu
SW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYsIGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0
dXJuIHsgfTsgfQogfTsKIApAQCAtNTUwLDkgKzU1MCwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGF0
ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0ZVRpbWVDaG9vc2VyKERh
dGVUaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKIHZvaWQgRW1wdHlD
aHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KEFwcEhpZ2hsaWdodCYmKSBjb25zdAogewog
fQorCiAjZW5kaWYKIAogdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c2V0VGV4dEluZGljYXRvcihj
b25zdCBUZXh0SW5kaWNhdG9yRGF0YSYpIGNvbnN0CkBAIC02MDQsNiArNjA2LDQ5MSBAQCBSZWZQ
dHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50
U2l6ZSYsIEhUTUxQbHVnSW5FbAogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
Omhhc1dlYlZpZXcoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOyAvLyBtYWlubHkgZm9yIGFz
c2VydGlvbnMKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVzZW50
YXRpb24oRG9jdW1lbnRMb2FkZXIqKQoreworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dE9uUmVzdG9yZUZyb21C
YWNrRm9yd2FyZENhY2hlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpCit7Cit9
CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0Q29waWVzT25TY3JvbGwoKQorewor
fQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQor
eworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDMo
KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sKK30KKworYm9vbCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7Cit9CisKKyNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb25uZWN0aW9uUHJv
cGVydGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGludCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQorewor
fQorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopCit7Cit9CisK
KyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9y
JikKK3sKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRS
ZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRGlzcGF0Y2hP
bmxvYWRFdmVudHMoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkKK3sKK30KKwor
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGly
ZWN0KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBXYWxsVGltZSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKK3sKK30KKwor
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhp
blBhZ2UoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UG9wU3RhdGVXaXRoaW5QYWdlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFdpbGxDbG9zZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50Piwgc3RkOjpv
cHRpb25hbDxVc2VkTGVnYWN5VExTPikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYs
IFdpbGxDb250aW51ZUxvYWRpbmcpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKK30KKwordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
Cit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
YWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+KQoreworfQorCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hWaXN1YWxseU5vbkVt
cHR5U3RhdGUoKQoreworfQorCitGcmFtZSogRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGlj
eSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaFNob3coKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNl
RXJyb3ImKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJv
dmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRN
YWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCit7Cit9CisKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQorewor
fQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCit7Cit9CisKK1Jlc291cmNl
RXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1cm4geyBSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24gfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1
cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sK
KyAgICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAorewor
ICAgIHJldHVybiB7IH07Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5
Q29udGVudEZpbHRlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsgfTsKK30KKworI2VuZGlmCisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK2Jvb2wgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01J
TUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBT
dHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK3ZvaWQgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3sKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKCkKK3sKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKK3sKK30KKwordm9pZCBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKK3sKK30KKwordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKK3sK
K30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVDYWNoZWREb2N1bWVudExv
YWRlcihEb2N1bWVudExvYWRlciYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpCit7Cit9
CisKK1N0cmluZyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QKK3sKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
Cit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0
dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKK30KKworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyYW1l
SGllcmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKQoreworfQorCisjZW5kaWYKKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKK3sKK30K
KworCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVGcm9tQmFja0Zvcndh
cmRDYWNoZSgpCit7Cit9CisKKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRh
dGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCit7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2F2
ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSYpCit7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVD
b250ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikKK3sKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKK3sKK30KKwor
T2JqZWN0Q29udGVudFR5cGUgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5
cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gT2JqZWN0Q29udGVu
dFR5cGU6Ok5vbmU7Cit9CisKK1N0cmluZyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpvdmVycmlk
ZU1lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQmKQoreworfQorCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKERPTVdyYXBwZXJXb3JsZCYpCit7Cit9CisKKyNpZiBQTEFURk9STShDT0NPQSkKKwor
UmVtb3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YWNjZXNzaWJpbGl0eVJl
bW90ZU9iamVjdCgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChOU0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
eworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsKK30KKworI2VuZGlmCisKKyNpZiBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6aXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVmZXRjaEROUyhjb25z
dCBTdHJpbmcmKQoreworfQorCisjaWYgVVNFKFFVSUNLX0xPT0spCisKK1JlZlB0cjxMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3
TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpoYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZW5kaWYKKwogaW5saW5l
IEVtcHR5RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6RW1wdHlGcmFtZU5ldHdvcmtpbmdDb250ZXh0
KCkKICAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQgeyBudWxscHRyIH0KIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzFkYzg1NGVmNTBjMzU5MmEwNGY1Mjc5YjVk
NTE0OTk4NTE0ODU5Li4zMTYwNWU2ODJkYjRkY2Q2MTZmMWI4ZjA1Y2VlNmNkNzRkYjkwZGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xMDQsNyArMTA0LDcgQEAgY2xh
c3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKIAogICAgIGJvb2wg
aG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9OwogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeUFueUF2YWlsYWJsZVBvaW50
aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBPcHRpb25hbDxQ
b2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmltYXJ5UG9p
bnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH07CisgICAg
T3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNoYXJhY3RlcmlzdGljc09m
UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9OwogICAgIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFj
dGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB7IH07IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3KGNvbnN0IEludFJlY3Qm
KSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDg5NTJmMGY5ODYzMGZhOTg3YjExMGU5ZjA4NTkxYTY5OTIxNzE1ZWYuLmZl
YTAzODI2OTYzNjA1YzM4M2Y2YmEyMzEzZThlNDU3NzdjZTExNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjYsMTg3ICsyNiwxODIg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCi0KLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSNpbmNsdWRlICJM
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgiCi0jZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGlj
IEZyYW1lTG9hZGVyQ2xpZW50IHsKK3ByaXZhdGU6CiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsK
IAotICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0gLy8g
bWFpbmx5IGZvciBhc3NlcnRpb25zCisgICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50
TG9hZGVyKikgZmluYWwgeyB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBib29sIGZv
cmNlTGF5b3V0T25SZXN0b3JlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNo
ZSgpIGZpbmFsOwogI2VuZGlmCi0gICAgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKSBmaW5h
bCB7IH0KIAotICAgIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKSBmaW5hbCB7IH0KKyAgICB2b2lk
IGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIGZpbmFsOwogCi0gICAgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQyKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCkgZmluYWwg
eyB9CisgICAgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9CisgICAgdm9p
ZCBkZXRhY2hlZEZyb21QYXJlbnQyKCkgZmluYWw7CisgICAgdm9pZCBkZXRhY2hlZEZyb21QYXJl
bnQzKCkgZmluYWw7CiAKLSAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
ZmluYWwgeyB9Ci0gICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcs
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBm
aW5hbCB7IH0KKyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1
bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKKworICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
dW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBm
aW5hbDsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywg
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBmaW5hbDsKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZywgY29uc3QgUHJvdGVjdGlvblNwYWNlJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblBy
b3BlcnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbCB7IHJldHVybiBu
dWxscHRyOyB9CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3Bl
cnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbDsKICNlbmRpZgogCi0g
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyB9CisgICAgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNv
bnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZykgZmluYWw7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikgZmluYWwgeyB9CisgICAgdm9p
ZCBkaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqKSBmaW5hbDsKICNlbmRp
ZgotICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0KLSAgICBib29sIGRpc3Bh
dGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50
cygpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIFdhbGxUaW1lLCBMb2NrQmFja0Zvcndh
cmRMaXN0KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBh
Z2UoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFn
ZSgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKSBm
aW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgZmluYWwg
eyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9uYWw8SGFzSW5zZWN1cmVD
b250ZW50PiwgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pIGZpbmFsIHsgfQotICAgIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImLCBXaWxsQ29u
dGludWVMb2FkaW5nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
b2N1bWVudExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRp
b25TZXQ8TGF5b3V0TWlsZXN0b25lPikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJl
YWNoVmlzdWFsbHlOb25FbXB0eVN0YXRlKCkgZmluYWwgeyB9Ci0KLSAgICBGcmFtZSogZGlzcGF0
Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGlj
eSkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgZmlu
YWwgeyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbCB7IH0K
KyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgYm9vbCBkaXNwYXRjaERp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpIGZpbmFsOworCisgICAg
dm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgZmluYWw7CisgICAgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJs
ZSwgV2FsbFRpbWUsIExvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNo
RGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBs
YWNlU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRl
V2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBmaW5hbDsK
KyAgICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBmaW5hbDsKKyAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSBm
aW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6Om9wdGlvbmFsPEhhc0lu
c2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3Im
LCBXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5p
c2hEb2N1bWVudExvYWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
IGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25T
ZXQ8TGF5b3V0TWlsZXN0b25lPikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNoVmlz
dWFsbHlOb25FbXB0eVN0YXRlKCkgZmluYWw7CisKKyAgICBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQ
YWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5lclBvbGljeSkgZmluYWw7
CisgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKKworICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBv
bGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwg
RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Rm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygp
IGZpbmFsIHsgfQorICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBmaW5hbDsKIAotICAgIHZv
aWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJikg
ZmluYWwgeyB9CisgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0
IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1p
dEV2ZW50KFJlZjxGb3JtU3RhdGU+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGb3JtU3RhdGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
Ci0gICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5h
bCB7IH0KLSAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25h
bFN0YXRlKERvY3VtZW50TG9hZGVyKikgZmluYWw7CisgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRF
cnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAotICAg
IHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0
RG93bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyB9
CisgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogCi0gICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIq
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgZmlu
YWwgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsK
KyAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKLSAgICB2
b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIHdpbGxSZXBsYWNl
TXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlcios
IGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKikgZmluYWwgeyB9CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmcoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyByZXR1cm4geyBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfTsgfQotICAgIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsg
fTsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNv
dXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dCBmaW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyBy
ZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9y
IGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRl
ZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFs
OwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5h
bCB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0
ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCi0g
ICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9Ci0gICAgUmVzb3VyY2VFcnJvciBm
aWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9
CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4
aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZpbmFsOworICAgIFJlc291
cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikgY29uc3QgZmluYWw7CiAKLSAgICBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkRmFs
bEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgcmVw
cmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJpbmcgZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hl
bWUoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWwgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQor
ICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBTdHJpbmcmKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0
cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNj
aGVtZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgZnJhbWVMb2FkQ29t
cGxldGVkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgZmluYWwgeyB9
Ci0gICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBk
aWRGaW5pc2hMb2FkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkgZmluYWwgeyB9CisgICAgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBmaW5h
bDsKKyAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSBmaW5hbDsKKyAgICB2b2lkIHByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWQoKSBmaW5hbDsK
KyAgICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBmaW5hbDsKIAotICAg
IHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXImKSBmaW5hbCB7
IH0KLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBV
UkwmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3Vt
ZW50TG9hZGVyJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIGZpbmFsIHsgfQotICAgIHZv
aWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmlu
YWwgeyB9CisgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFt
ZSopIGZpbmFsOworICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lk
IGRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgZmluYWwgeyB9CisgICAg
dm9pZCBkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIGZpbmFsOwogI2Vu
ZGlmCi0gICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgZmluYWwgeyB9
Ci0KLSAgICB2b2lkIGRpZFJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsIHsgfQot
Ci0gICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWwgeyB9Ci0gICAgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsIHsgfQotICAgIGJvb2wgc2hvdWxk
R29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbCB7IH0K
LSAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWwgeyB9Ci0gICAgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBmaW5hbDsKKworICAgIHZv
aWQgZGlkUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7CisKKyAgICB2b2lkIHVw
ZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlz
dG9yeUl0ZW0mKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlz
dG9yeUl0ZW0mKSBmaW5hbDsKKyAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFsOworICAgIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikgZmluYWw7Cisg
ICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgZmluYWw7CiAgICAgUmVmUHRy
PEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQm
KSBmaW5hbDsKICAgICBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYs
IEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIGZpbmFsOwogCi0gICAg
T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikgZmluYWwgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7IH0KLSAgICBTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICBP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbDsK
IAotICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0JikgZmluYWwgeyB9Ci0gICAg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQm
KSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBSZW1vdGVBWE9iamVj
dFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChOU0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5h
bCB7IGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsgfQorICAgIFJlbW90ZUFYT2JqZWN0UmVm
IGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxDYWNoZVJl
c3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgTlNDYWNoZWRVUkxSZXNwb25z
ZSAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik+JiYpIGNv
bnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotICAgIGJvb2wg
c2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBs
b25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwogI2VuZGlm
CiAKICAgICBSZWY8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKSBmaW5hbDsKIAotICAgIGJvb2wgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5n
JikgZmluYWwgeyB9CisgICAgYm9vbCBpc0VtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogI2lmIFVTRShRVUlD
S19MT09LKQotICAgIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGVQcmV2
aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xvYWRlckNsaWVudD4gY3Jl
YXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBmaW5h
bDsKICNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBi
b29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWw7CiAjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KQotICAgIHN0YXRpYyBib29s
IGlzVHlwZShjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCYgZnJhbWVMb2FkZXJDbGll
bnQpIHsgcmV0dXJuIGZyYW1lTG9hZGVyQ2xpZW50LmlzRW1wdHlGcmFtZUxvYWRlckNsaWVudCgp
OyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDRmOTIzOTAwOGY5MGI1YjU4ODBmMWIyZDc1
ZjJmNTFmZDY2OTlmNjEuLjI0ZTgyNWIzYmU2NGJjYWY1MWY1ZGI0MDZjMmQ4MzQ2Njc0MDA2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCkBAIC0x
MTgyLDcgKzExODIsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIq
IGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExpc3RSZXN1bHQmIHJlcwogICAgICAgICB7CiAgICAg
ICAgICAgLyogRmlyc3QgdHJ5IHRvIHVzZSByZXN1bHQuZmVfc2l6ZSB0byBmaW5kICIgLT4gIiBz
ZXF1ZW5jZS4KICAgICAgICAgICAgICBUaGlzIGNhbiBnaXZlIHByb3BlciByZXN1bHQgZm9yIGNh
c2VzIGxpa2UgImFhYSAtPiBiYmIgLT4gY2NjIi4gKi8KLSAgICAgICAgICAgIGF1dG8gZmlsZVNp
emUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4ocmVzdWx0LmZp
bGVTaXplKS52YWx1ZU9yKDApOworICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9IHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNpemUpLnZhbHVl
X29yKDApOwogCiAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxlbmd0aCA+IChmaWxlU2l6
ZSArIDQpICYmCiAgICAgICAgICAgICAgIHN0cm5jbXAocmVzdWx0LmZpbGVuYW1lICsgcmVzdWx0
LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIsIDQpID09IDApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggN2JhYTA4OTE2NzNhM2FjZTAwMzc3MzE2ZjU0
NWI3M2Y5N2U3MTI5Mi4uZTM1Y2E4M2E1MDQ1Y2Y2MTBjOTNiMzc4NWNkMzRhYjAyZTIyZjQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtMjUzLDEyICsyNTMsMTIgQEAg
aW5saW5lIE9wdGlvbmFsPEZldGNoT3B0aW9ucz4gRmV0Y2hPcHRpb25zOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKICAgICBpZiAoIWRlY29k
ZVBlcnNpc3RlbnQoZGVjb2Rlciwgb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxEb2N1bWVudElkZW50aWZpZXI+PiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4g
Y2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgb3B0
aW9ucy5jbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShjbGllbnRJZGVudGlmaWVyLnZhbHVlKCkp
OwogCiAgICAgcmV0dXJuIG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAppbmRleCBlOTM3Y2ZlOTE3NjY2MmVkZGNmYzM4ZjJhMWMwNjZlMDg4Yzk1NGUxLi40NjQyNzhm
YjUwMWE5NjYwZDcxMTcwZWMwM2M2YTBjMmVlOTMzY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKQEAgLTE1MCw4ICsxNTAsOCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZh
bHVlT3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEICgo
ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQorI2RlZmlu
ZSBQQUdFX0lEICgocGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0
KCkpCisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmll
cigpKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJB
TUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgRlJB
TUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAt
IFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1l
TG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJh
bWUoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRh
cmdldCwgRXZlCiAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsK
ICAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZy
YW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6
OlVua25vd247CiAKLSAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9wZW5lclBvbGlj
eSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHJlZmVycmVyUG9saWN5ID09IFJlZmVycmVyUG9saWN5
OjpOb1JlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3RnJhbWVP
cGVuZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdGcmFtZU9w
ZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihyZWZlcnJlclBvbGljeSA9PSBSZWZl
cnJlclBvbGljeTo6Tm9SZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyA6
IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBpbml0aWF0ZWRCeU1haW5GcmFt
ZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHN5c3RlbVByZXZpZXdJbmZvKTsKICAgICBmcmFtZUxvYWRS
ZXF1ZXN0LnNldE5ld0ZyYW1lT3BlbmVyUG9saWN5KG5ld0ZyYW1lT3BlbmVyUG9saWN5KTsKICAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnNldFJlZmVycmVyUG9saWN5KHJlZmVycmVyUG9saWN5KTsKQEAg
LTY5NCw3ICs2OTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSgpCiB7
CiAgICAgYXV0byBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSk7CiAgICAgCi0gICAg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICBk
aXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIGRp
c3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKICAgICBkaXNwYXRjaEds
b2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJlciwgRgogICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgeyB1cmwgfSwgIl9zZWxmIl9zLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OlN1cHByZXNzKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2Fy
ZExpc3QoTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKLSAgICBjaGlsZEZyYW1lLT5sb2FkZXIo
KS5sb2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5
cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9LCBXVEY6
Om51bGxvcHQsIFtdIHsgfSk7CisgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTChXVEZN
b3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCByZWZlcmVyLCBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdp
dGhMb2NrZWRCYWNrRm9yd2FyZExpc3QsIG51bGxwdHIsIHsgfSwgc3RkOjpudWxsb3B0LCBbXSB7
IH0pOwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBAIC0y
MzI5LDcgKzIzMjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYg
Y2FjaGVkRnJhbWUpCiAgICAgQVNTRVJUKHZpZXcpOwogICAgIHZpZXctPnNldFdhc1Njcm9sbGVk
QnlVc2VyKGZhbHNlKTsKIAotICAgIE9wdGlvbmFsPEludFJlY3Q+IHByZXZpb3VzVmlld0ZyYW1l
UmVjdCA9IG1fZnJhbWUudmlldygpID8gIG1fZnJhbWUudmlldygpLT5mcmFtZVJlY3QoKSA6IE9w
dGlvbmFsPEludFJlY3Q+KFdURjo6bnVsbG9wdCk7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gcHJl
dmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3KCktPmZy
YW1lUmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oc3RkOjpudWxsb3B0KTsKICAgICBtX2ZyYW1l
LnNldFZpZXcodmlldyk7CiAKICAgICAvLyBVc2UgdGhlIHByZXZpb3VzIFNjcm9sbFZpZXcncyBm
cmFtZSByZWN0LgpAQCAtNDA0OSw4ICs0MDQ5LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tcGxl
dGVQYWdlVHJhbnNpdGlvbklmTmVlZGVkKCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJUZXN0
aW5nT3ZlcnJpZGVzKCkKIHsKLSAgICBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nID0g
V1RGOjpudWxsb3B0OwotICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rp
bmcgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9vdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZyA9
IHN0ZDo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0
aW5nID0gc3RkOjpudWxsb3B0OwogICAgIG1faXNTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Q
b2xpY3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAppbmRleCBmMjk3YjUwY2ExZWVlNTBjYzNmMDU2YWJkNmM2NDhjMDRlMmQ5MzNj
Li4yN2QwZDUzOWJjYjEwMWIxNjdlODM3Mjk2NDMzZDViODRjMGQ0N2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldHVwRm9yUmVwbGFjZSgpOwogCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBhbGwgZnVuY3Rp
b25zIHdoaWNoIHN0YXJ0IGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVm
UHRyPEZvcm1TdGF0ZT4mJiwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBX
VEY6Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1
ZXN0IGFuZCBsb2FkVVJMLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEZyYW1lUmVxdWVz
dChGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgT3B0aW9u
YWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOyAvLyBDYWxsZWQg
Ynkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3QmJik7CiAKQEAgLTEzMCw4
ICsxMzAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBv
bGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNl
RXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGRhdGEpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IFdU
Rjo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRv
bSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNoYW5nZUxvY2F0aW9u
KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgT3B0aW9uYWw8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIEV2ZW50
KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBP
cHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxvcHQsIGNvbnN0IEF0b21T
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29uc3QgU3lzdGVtUHJldmll
d0luZm8mID0geyB9LCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2
ZW50KiA9IG51bGxwdHIsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3Rk
OjpudWxsb3B0KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1TdWJtaXNzaW9uPiYmKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+
ID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IDM1
NzE2NzVmMjdkMDE3ZGQ1ZjIxZGJmN2RiMjdmOWQ2MzM4MWE5ZDEuLjliYzI1MzE0YTkzY2ExMTlk
NWFiMGFlMDZiNGQ4NDk2MmMyNzRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyVHlwZXMuaApAQCAtMTA0LDExICsxMDQsMTEgQEAgT3B0aW9uYWw8UG9saWN5Q2hlY2tJZGVu
dGlmaWVyPiBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGF1dG8gcHJvY2VzcyA9IFByb2Nlc3NJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7
CiAgICAgaWYgKCFwcm9jZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDY0X3QgcG9saWN5Q2hlY2s7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwb2xpY3lDaGVjaykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gUG9saWN5
Q2hlY2tJZGVudGlmaWVyIHsgKnByb2Nlc3MsIHBvbGljeUNoZWNrIH07CiB9CkBAIC0yMDgsMTcg
KzIwOCwxNyBAQCBPcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gU3lzdGVtUHJldmlld0luZm86
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEVsZW1lbnRDb250ZXh0PiBl
bGVtZW50OwogICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKICAgICBkZWNvZGVyID4+IHByZXZp
ZXdSZWN0OwogICAgIGlmICghcHJldmlld1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBp
c1ByZXZpZXc7CiAgICAgZGVjb2RlciA+PiBpc1ByZXZpZXc7CiAgICAgaWYgKCFpc1ByZXZpZXcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmVsZW1lbnQpLCBXVEZNb3ZlKCpwcmV2aWV3
UmVjdCksIFdURk1vdmUoKmlzUHJldmlldykgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA2MGE2ZmM0NTEzY2MwZTg3MzFjNjcyOTkzODBjYTY1
NTFiMDNhYzBjLi5iMjMwYmZmNDhmYjU1NGM0ZDI2NjE0N2NhMmVkZTgxZDIyYjZlOTM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMjA3LDcgKzIwNyw3
IEBAIE9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gSFRUUEhlYWRlckZpZWxkOjpjcmVhdGUoU3Ry
aW5nJiYgdW5wYXJzZWROYW1lLCBTdHJpbmcmCiAgICAgU3RyaW5nVmlldyBzdHJpcHBlZE5hbWUg
PSBTdHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVk
Q2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIFN0cmluZ1ZpZXcgc3RyaXBw
ZWRWYWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1ZSkuc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIGlmICghUkZD
NzIzMDo6aXNWYWxpZE5hbWUoc3RyaXBwZWROYW1lKSB8fCAhUkZDNzIzMDo6aXNWYWxpZFZhbHVl
KHN0cmlwcGVkVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG5hbWUgPSBzdHJpcHBlZE5hbWUubGVu
Z3RoKCkgPT0gdW5wYXJzZWROYW1lLmxlbmd0aCgpID8gV1RGTW92ZSh1bnBhcnNlZE5hbWUpIDog
c3RyaXBwZWROYW1lLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHZhbHVlID0gc3RyaXBwZWRWYWx1
ZS5sZW5ndGgoKSA9PSB1bnBhcnNlZFZhbHVlLmxlbmd0aCgpID8gV1RGTW92ZSh1bnBhcnNlZFZh
bHVlKSA6IHN0cmlwcGVkVmFsdWUudG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQ
SGVhZGVyRmllbGQuaAppbmRleCA1NDNlOGIzMGZhZGJkODUyOTVjMjBhYTcyMjY2NzMxNDA0Yzg4
ZWZmLi4wZjc2MGZiYzhjMThhZGI0MTdhYzgzZDBlOTkzMDBmYjBkOGE1Njc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oCkBAIC02MSwxMiArNjEsMTIgQEAgT3B0aW9u
YWw8SFRUUEhlYWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAg
ICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNv
ZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92
ZSgqbmFtZSksIFdURk1vdmUoKnZhbHVlKSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVh
ZGVyLmNwcAppbmRleCA3Y2YxYzBmNGVkMTA5MmU1MTE4NDcwNTU4ZDg4MGRkOGNkMDJkYTdhLi40
OGRmZWFjZDk1YWQwOGRmNTgwOGEwMzkwNDZlMTg2YmY0MzllNDI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xpbmtIZWFkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRVUkxCb3VuZGFyaWVzKFN0
cmluCiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVyKTsKICAgICBpZiAoIXNr
aXBFeGFjdGx5KGJ1ZmZlciwgJzwnKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihi
dWZmZXIpOwogCiAgICAgYXV0byB1cmxTdGFydCA9IGJ1ZmZlci5wb3NpdGlvbigpOwpAQCAtOTMs
NyArOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9u
YWw8U3RyaW5nPiBmaW5kVVJMQm91bmRhcmllcyhTdHJpbgogICAgIGF1dG8gdXJsRW5kID0gYnVm
ZmVyLnBvc2l0aW9uKCk7CiAgICAgc2tpcFVudGlsKGJ1ZmZlciwgJz4nKTsKICAgICBpZiAoIXNr
aXBFeGFjdGx5KGJ1ZmZlciwgJz4nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTdHJpbmcodXJsU3RhcnQs
IHVybEVuZCAtIHVybFN0YXJ0KTsKIH0KQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlua0hlYWRlcjo6TGlua1BhcmFt
ZXRlck5hbWU+CiAgICAgYm9vbCB2YWxpZFBhcmFtZXRlclZhbHVlRW5kID0gYnVmZmVyLmF0RW5k
KCkgfHwgaXNQYXJhbWV0ZXJWYWx1ZUVuZCgqYnVmZmVyKTsKICAgICBpZiAodmFsaWRQYXJhbWV0
ZXJWYWx1ZUVuZCAmJiBpc0V4dGVuc2lvblBhcmFtZXRlcihuYW1lKSkKICAgICAgICAgcmV0dXJu
IG5hbWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiAvLyBCZWZvcmU6CkBAIC0yOTksNyArMjk5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgZmluZE5leHRIZWFkZXIoU3RyaW5nUGFyc2luZ0J1
ZmZlcjwKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExpbmtIZWFkZXI6OkxpbmtI
ZWFkZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAg
IGF1dG8gdXJsUmVzdWx0ID0gZmluZFVSTEJvdW5kYXJpZXMoYnVmZmVyKTsKLSAgICBpZiAodXJs
UmVzdWx0ID09IFdURjo6bnVsbG9wdCkgeworICAgIGlmICh1cmxSZXN1bHQgPT0gc3RkOjpudWxs
b3B0KSB7CiAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICBmaW5kTmV4dEhlYWRl
cihidWZmZXIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKaW5kZXggNjU3MmM3ZGU2NmIxMjMwOTZkZDQ5MWJlNGE2YmI0MGRjMjM5NDIyMy4uY2M4OGFl
ODE4NzgyOWY3MDFhNmNkNjE2MTc5NjhiYzgyYjNhNDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
aW5rTG9hZGVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIE9wdGlvbmFsPENhY2hlZFJlc291cmNl
OjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRyaWJ1dGUoY29uc3QgU3Ry
CiAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9udFJlc291cmNlOwogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcywgInRyYWNrIikpCiAgICAgICAg
IHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVzb3VyY2U7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+IGNyZWF0ZUxpbmtQcmVs
b2FkUmVzb3VyY2VDbGllbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBMaW5rTG9hZGVyJiBs
b2FkZXIsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCA1YjE3N2M3ODExNzBjMzQ3M2VlZjNhYjQ0MWVlYWRl
YmI5OTIzMWEwLi41MTY5NjcxZjU5N2Q0M2Y2ZTQ2NTJhZDNiMzA0ZDU5MjY5NDNiOTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCkBAIC0xMzYs
NyArMTM2LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRDaGVja2VyOjpjaGVja0Zv
ck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW0KICAgICAgICAgZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggODg2NzdhNzMw
NjFjZGMwMGQ5MTBmMTE0MjdmMTA3MTg2ZWQ4MTk4ZC4uYTZiZjZhZmU1YjVhNzU3Y2E2ODViZWQz
ZTU2ZWVjM2I5MDk4NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgR2xv
YmFsRnJhbWVJZGVudGlmaWVyIGNyZWF0ZUdsb2JhbEZyYW1lSWRlbnRpZmllcihjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIHJl
dHVybiB7IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlk
ZW50aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVl
T3IoRnJhbWVJZGVudGlmaWVyIHsgfSkgfTsKKyAgICAgICAgcmV0dXJuIHsgZG9jdW1lbnQuZnJh
bWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KSwgZG9j
dW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmll
ciB7IH0pIH07CiAgICAgcmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmllcigpOwogfQogCkBAIC04
OCw3ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0
aEtleVN0YXRlRGF0YT4ga2V5U3RhdGVEYXRhRm9yRmlyc3RFCiB7CiAgICAgaWYgKFVJRXZlbnRX
aXRoS2V5U3RhdGUqIHVpRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnQpKQogICAg
ICAgICByZXR1cm4gTmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhLZXlTdGF0ZURhdGEgeyAq
dWlFdmVudCB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhPiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVudChFdmVudCogZXZlbnQpCkBAIC05
Nyw3ICs5Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2ZW50
RGF0YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlCiAgICAgICAgIGlmIChlLT5pc01v
dXNlRXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBOYXZpZ2F0aW9uQWN0aW9uOjpNb3VzZUV2
ZW50RGF0YSB7IHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQmPigqZSkgfTsKICAgICB9Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBO
YXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0aWF0ZWRCeU1haW5GcmFt
ZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgdHlwZSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBFdmVudCogZXZl
bnQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQpAQCAtMTUzLDcgKzE1Myw3
IEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbjo6c2V0VGFyZ2V0QmFja0ZvcndhcmRJdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtKQogCiB2b2lkIE5hdmlnYXRpb25BY3Rpb246OnNldFNvdXJjZUJhY2tGb3J3
YXJkSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKLSAgICBtX3NvdXJjZUJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIgPSBpdGVtID8gbWFrZU9wdGlvbmFsKGl0ZW0tPmlkZW50aWZpZXIoKSkgOiBX
VEY6Om51bGxvcHQ7CisgICAgbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyID0gaXRl
bSA/IHN0ZDo6bWFrZV9vcHRpb25hbChpdGVtLT5pZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggN2Qw
ZGE3Y2EyZGM0MzBiODQyYWRkZGMyYjE4MTA0NmVjYTk4NDViMi4uOThlOTYxOTc3NTY3MDgwZTg0
ODA5NWZlMTAyMzY2NmVkZTA1ZDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcApAQCAtNTUsOCArNTUsOCBAQAogI2VuZGlmCiAKICNkZWZpbmUgSVNfQUxMT1dFRCAo
bV9mcmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCkgOiBmYWxzZSkKLSNkZWZpbmUgUEFHRV9JRCAobV9mcmFtZS5sb2FkZXIo
KS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5l
IEZSQU1FX0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRp
ZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEIChtX2ZyYW1lLmxvYWRlcigpLnBh
Z2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZS
QU1FX0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZp
ZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoSVNfQUxMT1dFRCwgTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gUG9saWN5Q2hlY2tlcjo6IiBmbXQsIHRoaXMs
IFBBR0VfSUQsIEZSQU1FX0lELCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmlu
ZGV4IDIzNWFjMWFkNzI4NzdkYzY2NjhiZDRlN2FhODIyM2IzZTEyMGQ2YWQuLjg1Y2ZkZDY0OWZk
MjE5OTkyMWEzZmUxMTExZmRkZDM2OGUyZWZlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGlj
OgogICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRzVW50aWxTZW5kKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzICYmICFkZXN0aW5hdGlvblNlY29u
ZHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoc291cmNlU2Vjb25kcyAm
JiBkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHNv
dXJjZVNlY29uZHMsIGRlc3RpbmF0aW9uU2Vjb25kcyk7CkBAIC0yMTgsMTIgKzIxOCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxTZWNvbmRzPj4gc291cmNlU2Vj
b25kczsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc291cmNlU2Vjb25kczsKICAgICAgICAgICAg
IGlmICghc291cmNlU2Vjb25kcykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9w
dGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5hdGlvblNlY29uZHM7CiAgICAgICAgICAg
ICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uU2Vjb25kczsKICAgICAgICAgICAgIGlmICghZGVzdGlu
YXRpb25TZWNvbmRzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIEF0
dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgeyBXVEZNb3ZlKCpzb3VyY2VTZWNvbmRzKSwg
V1RGTW92ZSgqZGVzdGluYXRpb25TZWNvbmRzKSB9OwogICAgICAgICB9CkBAIC0yMzYsNyArMjM2
LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZWFybGllc3RUaW1lVG9T
ZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQgJiYgIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCAmJiBkZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptaW4oc291
cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCk7CkBA
IC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gbGF0
ZXN0VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGll
c3RUaW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgJiYg
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gQXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRpb247CiAKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9
CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTI4NSwxMiArMjg1LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdhbGxUaW1lPj4gc291cmNl
RWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdhbGxU
aW1lPj4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBkZWNvZGVy
ID4+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
ICAgIHJldHVybiBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIHsgV1RGTW92ZSgqc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kKSwgV1RGTW92ZSgqZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQp
IH07CiAgICAgICAgIH0KQEAgLTQxMyw0NyArNDEzLDQ3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHNvdXJjZUlEOwogICAgIGRlY29kZXIgPj4gc291
cmNlSUQ7CiAgICAgaWYgKCFzb3VyY2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxSZWdpc3Ry
YWJsZURvbWFpbj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAgZGVjb2RlciA+PiBzb3Vy
Y2VSZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIXNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZXN0aW5hdGlvblJlZ2lz
dHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFp
bjsKICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNjcmlwdGlvbjsKICAgICBkZWNvZGVyID4+IHNvdXJj
ZURlc2NyaXB0aW9uOwogICAgIGlmICghc291cmNlRGVzY3JpcHRpb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAgICAgZGVjb2RlciA+PiBwdXJjaGFzZXI7CiAg
ICAgaWYgKCFwdXJjaGFzZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IHRpbWVP
ZkFkQ2xpY2s7CiAgICAgZGVjb2RlciA+PiB0aW1lT2ZBZENsaWNrOwogICAgIGlmICghdGltZU9m
QWRDbGljaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNl
Pj4gZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgZGVjb2RlciA+PiBlcGhlbWVyYWxTb3VyY2VO
b25jZTsKICAgICBpZiAoIWVwaGVtZXJhbFNvdXJjZU5vbmNlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
CiAgICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIGlmICghYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxBdHRyaWJ1dGlvblRpbWVU
b1NlbmREYXRhPiB0aW1lc1RvU2VuZDsKICAgICBkZWNvZGVyID4+IHRpbWVzVG9TZW5kOwogICAg
IGlmICghdGltZXNUb1NlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
YXR0cmlidXRpb24gewogICAgICAgICBTb3VyY2VJRCB7IFdURk1vdmUoKnNvdXJjZUlEKSB9LApA
QCAtNDgyLDcgKzQ4Miw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxTb3VyY2VOb25jZT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6CiAgICAgT3B0aW9uYWw8
U3RyaW5nPiBub25jZTsKICAgICBkZWNvZGVyID4+IG5vbmNlOwogICAgIGlmICghbm9uY2UpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgV1RGTW92ZSgqbm9uY2Up
IH07CiB9CkBAIC00OTksMTcgKzQ5OSwxNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAg
IE9wdGlvbmFsPHVpbnQzMl90PiBkYXRhOwogICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICBpZiAo
IWRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8UHJpb3JpdHlWYWx1ZT4gcHJpb3JpdHk7CiAg
ICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPFdhc1NlbnQ+IHdhc1NlbnQ7CiAgICAgZGVjb2RlciA+PiB3YXNTZW50OwogICAg
IGlmICghd2FzU2VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSB7IFdURk1vdmUoKmRhdGEpLCBQcmlvcml0eSB7ICpwcmlvcml0eSB9LCAqd2FzU2VudCB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcAppbmRleCBhZjQyMmYyMWZiZTMyMDQ1YzJhODYxNGRlNzRlNjM5YjdkZjhhNjAz
Li5kODdiZDQ2MThmMDViMzU2OGNkY2Y1N2EzZTM1NDUwZGQzYTU3MGEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApA
QCAtNDYsMjAgKzQ2LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsCiAgICAgaWYgKHNraXBF
eGFjdGx5SWdub3JpbmdBU0NJSUNhc2UoYnVmZmVyLCAic2hhNTEyIikpCiAgICAgICAgIHJldHVy
biBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6U0hBNTEyOwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNp
bmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2lu
Z1Bvc2l0aW9uKGJ1ZmZlcik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXNr
aXBFeGFjdGx5KGJ1ZmZlciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNoVmFsdWUgPSBi
dWZmZXIucG9zaXRpb24oKTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRPckJhc2U2NFVSTENoYXJh
Y3Rlcj4oYnVmZmVyKTsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEK
ICAgICBza2lwRXhhY3RseShidWZmZXIsICc9Jyk7CiAKICAgICBpZiAoYnVmZmVyLnBvc2l0aW9u
KCkgPT0gYmVnaW5IYXNoVmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmdWaWV3IGhhc2hWYWx1ZShiZWdp
bkhhc2hWYWx1ZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbkhhc2hWYWx1ZSk7CiAKQEAgLTc3
LDcgKzc3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlv
bmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEKICAgICBpZiAoYXV0byBkaWdlc3Qg
PSBiYXNlNjRVUkxEZWNvZGUoaGFzaFZhbHVlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCB7ICphbGdvcml0aG0sIFdURk1vdmUoKmRpZ2VzdCkgfTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0
aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdl
c3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKQEAgLTkzLDE0ICs5MywxNCBA
QCBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBh
cnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFsZ29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKGJ1
ZmZlcik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1
ZmZlciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNoVmFsdWUgPSBidWZmZXIucG9zaXRp
b24oKTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRPckJhc2U2NFVSTENoYXJhY3Rlcj4oYnVmZmVy
KTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHNraXBF
eGFjdGx5KGJ1ZmZlciwgJz0nKTsKIAogICAgIGlmIChidWZmZXIucG9zaXRpb24oKSA9PSBiZWdp
bkhhc2hWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0IHsgKmFsZ29yaXRobSwgU3RyaW5nKGJlZ2luSGFzaFZhbHVlLCBidWZmZXIucG9zaXRp
b24oKSAtIGJlZ2luSGFzaFZhbHVlKSB9OwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIE9wdGlvbmFs
PFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdChjCiAgICAgaWYgKGF1dG8gZGlnZXN0ID0gYmFzZTY0VVJMRGVjb2RlKGVu
Y29kZWREaWdlc3QuZGlnZXN0KSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdCB7IGVuY29kZWREaWdlc3QuYWxnb3JpdGhtLCBXVEZNb3ZlKCpkaWdlc3QpIH07CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcAppbmRleCAyYzU3NmY2NGNk
NDRjNzllNGFkYTkzNmFhZDQ5M2Q2YzhmYTg2Y2Q3Li5lNDg1MmYyOTNhMGZmNTlkOTE3NDUxZWRk
NTBiZmJlYjA0MTIyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZElu
Zm8uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgT3B0aW9uYWw8T3B0aW9uU2V0PFJlc291cmNlVHlw
ZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4geyBS
ZXNvdXJjZVR5cGU6OlBvcHVwIH07CiAgICAgaWYgKG5hbWUgPT0gInBpbmciKQogICAgICAgICBy
ZXR1cm4geyBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPE9wdGlvblNldDxMb2FkVHlw
ZT4+IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3IG5hbWUpCkBAIC0xMjIsNyArMTIyLDcgQEAgT3B0
aW9uYWw8T3B0aW9uU2V0PExvYWRUeXBlPj4gcmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFtZSkK
ICAgICAgICAgcmV0dXJuIHsgTG9hZFR5cGU6OkZpcnN0UGFydHkgfTsKICAgICBpZiAobmFtZSA9
PSAidGhpcmQtcGFydHkiKQogICAgICAgICByZXR1cm4geyBMb2FkVHlwZTo6VGhpcmRQYXJ0eSB9
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0Pj4gcmVhZExvYWRDb250ZXh0KFN0cmlu
Z1ZpZXcgbmFtZSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBPcHRpb25hbDxPcHRpb25TZXQ8TG9hZENv
bnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4g
eyBMb2FkQ29udGV4dDo6VG9wRnJhbWUgfTsKICAgICBpZiAobmFtZSA9PSAiY2hpbGQtZnJhbWUi
KQogICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6Q2hpbGRGcmFtZSB9OwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBSZXNv
dXJjZUxvYWRJbmZvOjppc1RoaXJkUGFydHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzU4NTgzZGFhNWQ2MjJhMTljODllNGM3ZDZlMTc4ODBl
OGU3NzExMi4uMWU4Njg4OWE3NTgwMGE0MjJlMmE0MGZkMGRmNzIzZDBhZTMyZDg4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02NCw4ICs2NCw4IEBACiAj
ZW5kaWYKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSNkZWZpbmUgUEFHRV9JRCAo
KGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDog
UGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgp
ID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJh
bWUoKS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmll
cigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5m
cmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkp
LnRvVUludDY0KCkpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBb
cGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxvYWRlcj0lcCwg
cmVzb3VyY2VJRD0lbHVdIFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJB
TUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlSW50ZWdyaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUlu
dGVncml0eS5jcHAKaW5kZXggZTIwMmIwM2IzMmRkZWYxNjY0Yzc2MGViMzFhYzJkNWZmODg5MTAw
OS4uNjI5NWFlYTVlMzBjOTkyNmQ2ZGRlYzk5MjYwMTRlNmQ3NGE5MGM5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3IoKShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBJbml0aWFsaXplIGhhc2hl
cyB0byBiZSBzb21ldGhpbmcgb3RoZXIgV1RGOjpudWxsb3B0LCB0byBpbmRpY2F0ZQorICAgICAg
ICAvLyBJbml0aWFsaXplIGhhc2hlcyB0byBiZSBzb21ldGhpbmcgb3RoZXIgc3RkOjpudWxsb3B0
LCB0byBpbmRpY2F0ZQogICAgICAgICAvLyB0aGF0IGF0IGxlYXN0IG9uZSB0b2tlbiB3YXMgc2Vl
biwgYW5kIHRodXMgc2V0dGluZyB0aGUgZW1wdHkgZmxhZwogICAgICAgICAvLyBmcm9tIHNlY3Rp
b24gMy4zLjMgUGFyc2UgbWV0YWRhdGEsIHRvIGZhbHNlLgogICAgICAgICBpZiAoIW1fZGlnZXN0
cykKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNwbGl0T25TcGFjZXMoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIsIEZ1bmMKIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHBhcnNlSW50
ZWdyaXR5TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRhZGF0YSkKIHsKICAgICBp
ZiAoaW50ZWdyaXR5TWV0YWRhdGEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9y
PEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiByZXN1bHQ7CiAgICAgCkBAIC0x
MjAsNyArMTIwLDcgQEAgc3RhdGljIGJvb2wgaXNSZXNwb25zZUVsaWdpYmxlKGNvbnN0IENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSkKIHN0YXRpYyBPcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlw
dG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0+IHByaW9yaXRpemVkSGFzaEZ1bmN0aW9uKEVuY29k
ZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhLCBFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYikKIHsKICAgICBpZiAoYSA9PSBiKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiAoYSA+IGIpID8gYSA6IGI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYwZGQ4NWJlZDU1NzBkYjQ5Zjg2MzlkYzUw
Y2FjOTg3NDZjZjdmYjkuLmYwNWU1YzY4NTBiOGI4NTI5NGY0ZjkzZTRkMWI1YTE0ZWEzMWViYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjks
OCArNjksOCBAQAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAogI3VuZGVmIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKLSNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFt
ZSgpLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJh
bWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRv
VUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+cGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgp
KQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFtZUlEKCkudmFsdWVf
b3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAj
aWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChm
bXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQpAQCAtNDc5LDcgKzQ3
OSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICBtX2xvYWRpbmdNdWx0
aXBhcnRDb250ZW50ID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVs
dGlQYXJ0cyBpbiBhIENhY2hlZFJlc291cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAotICAgICAg
ICAgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
bV9yZXF1ZXN0Q291bnRUcmFja2VyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCFt
X3Jlc291cmNlLT5pc0ltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRo
aW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1hZ2UiKTsKICAgICAgICAgICAgICAgICBjYW5j
ZWwoKTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpub3RpZnlE
b25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gc3RkOjpudWxsb3B0OwogICAg
IGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucyA9IHRydWU7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAobV9zdGF0ZSA9PSBDYW5jZWxsZWRXaGlsZUluaXRpYWxpemlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXggMDA3ZTRhYWUyNmM3YmYy
MzA2ZWMzNzNlY2IwMzI3NWFjZDM0ZjYwNy4uNzBkMTUxN2JiYmYyOGZjYmY1ZmZkYWY5MDY3YWJh
YWU3YzkxODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKQEAgLTkwLDEw
ICs5MCwxMCBAQCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaQogICAgICAgICAvLyBFeGFtcGxlOiAi
Q0FDSEUgTUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0dXJlLgogICAgICAgICAv
LyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1Q7VjIiIGlzIG5vdC4KICAgICAgICAgaWYgKCFza2lw
Q2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBjYWNoZU1hbmlmZXN0SWRlbnRpZmllcjxDaGFyYWN0
ZXJUeXBlPikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0
ZXJzUmVtYWluaW5nKCkgJiYgIWlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JOZXdsaW5lKCpidWZmZXIp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gU2tpcCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLgog
ICAgICAgICBza2lwVW50aWw8aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCA4YjI3MTFmYmQ1YzhhNWUyZTc4ZWZkNDQzZTg1MjE5NjQ4N2M1YmRlLi41
ZTY4MTFlMWJhYTM3NTUwNGNhOGNlNzIzZGQ1Y2U5MjcwYTYxZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAg
ICAgICAgIHNpemUgPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
cGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVj
dG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBzaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocGF0
aCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShw
YXRoKS52YWx1ZV9vcigwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgU3RyaW5nIG1p
bWVUeXBlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMyk7CkBAIC0xMzA5LDExICsxMzA5
LDExIEBAIE9wdGlvbmFsPFZlY3RvcjxVUkw+PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFu
aWZlc3RVUkxzKCkKIAogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFi
YXNlLmlzT3BlbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3RVUkxzID0gbV9kYXRhYmFzZS5wcmVw
YXJlU3RhdGVtZW50KCJTRUxFQ1QgbWFuaWZlc3RVUkwgRlJPTSBDYWNoZUdyb3VwcyJfcyk7CiAg
ICAgaWYgKCFzZWxlY3RVUkxzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFVSTD4gdXJsczsKICAgICB3aGls
ZSAoc2VsZWN0VVJMcy0+c3RlcCgpID09IFNRTElURV9ST1cpCkBAIC0xNDUwLDcgKzE0NTAsNyBA
QCBsb25nIGxvbmcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQog
ICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7
CiAgICAgd2hpbGUgKHNlbGVjdFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewogICAgICAg
ICBhdXRvIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZs
YXRGaWxlRGlyZWN0b3J5LCBzZWxlY3RQYXRocy0+Y29sdW1uVGV4dCgwKSk7Ci0gICAgICAgIHRv
dGFsU2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmdWxsUGF0aCkudmFsdWVPcigwKTsKKyAg
ICAgICAgdG90YWxTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZ1bGxQYXRoKS52YWx1ZV9v
cigwKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNw
cAppbmRleCA1MWQ4ZDBhODZjNGFhYWMzZGFkMWFjNjkzZWQxNDVjODA1ZmE4MDcxLi4yYjY1YWMw
ZjM2MzI1OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBA
IC02Miw3ICs2Miw3IEBAIFN0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGlu
ZygpIGNvbnN0CiBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBDYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IFVSTCYgZG9j
dW1lbnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fdGV4dCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2Vy
OjpwYXJzZSgqZG9jdW1lbnQsICptX3RleHQsIG1hbmlmZXN0VVJMLCBkb2N1bWVudFVSTCk7CiAg
ICAgcmV0dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKCptX3RleHQsIG1hbmlm
ZXN0VVJMLCBkb2N1bWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCAwMTk3ZWQ4MzVkMTkwMzgzMTBiZDIxODIzMzhm
NWRhZmFhNzI5OGVhLi43OGQ4NGJmYWJjZGVlNjJiMWU2ZmZiZTdhN2NiZjMyMzE4NTQzMzkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5j
cHAKQEAgLTUzLDcgKzUzLDcgQEAgT3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hl
ZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoIWRhdGEgfHwg
ZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YS0+
Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIApAQCAtODUsNyArODUsNyBAQCB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVkQnVmZmVyJiBkYXRhKQog
ICAgICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOwogCiAgICAgaWYgKG1f
ZGVsYXllZEZpbmlzaExvYWRpbmcpIHsKLSAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGlu
ZyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWxheWVkRmluaXNoTG9hZGluZywgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWxh
eWVkRmluaXNoTG9hZGluZywgc3RkOjpudWxsb3B0KTsKICAgICAgICAgZmluaXNoTG9hZGluZyhk
ZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwogICAgIH0KIH0KQEAgLTEw
Miw3ICsxMDIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAgIGlmIChtX2luSW5jcmVt
ZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQgaGVyZSBzeW5jaHJvbm91
c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRoZXJlIGVuZHMgdXAgc3Bp
bm5pbmcgYSBydW5sb29wLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UgZGVsYXkgdGhlIGNhbGwu
Ci0gICAgICAgIG1fZGVsYXllZEZpbmlzaExvYWRpbmcgPSBtYWtlT3B0aW9uYWwoRGVsYXllZEZp
bmlzaExvYWRpbmcgeyBkYXRhIH0pOworICAgICAgICBtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nID0g
c3RkOjptYWtlX29wdGlvbmFsKERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsgZGF0YSB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH07CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVz
b3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzMzM3NTg2MjJmNjI5N2ZiMjIzODc2ZTQ5ODBj
NDAyYWZkMDM3ZjhjLi4yZGE5N2YxNDI5NTQxZjNiNTY5MDFmNzhmYzhkN2I4MTQxM2JiN2M3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAg
LTY1LDggKzY1LDggQEAKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKICN1bmRlZiBS
RUxFQVNFX0xPR19BTFdBWVMKLSNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgp
LnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQo
ZnJhbWUpIChmcmFtZS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKSkKKyNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBh
Z2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJh
bWUuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2Rl
ZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNo
ZWRSZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVw
IC0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNF
X0xPR19JRihjYWNoZWRSZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
TmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0g
Q2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVfSUQoZnJh
bWUpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19BTFdBWVMoZm10LCAuLi4p
IFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJjYzBmNGUzN2ZkYTUzZDIyYzllYTAyY2NmMjgx
NTZiYTg0YjgyYzkuLjg1NmU1ZTVkNGRiMTQ2MDkyYjFiNzRlMzRjYjMwZmQ3ZDA3OTBhN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcApAQCAtOTUsOCArOTUsOCBAQAogI2VuZGlmCiAKICN1bmRlZiBSRUxFQVNFX0xPR19J
Rl9BTExPV0VECi0jZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1ZU9y
KFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAo
ZnJhbWUuZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisj
ZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRChmcmFtZSkgKGZyYW1lLmZyYW1l
SUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRF9X
SVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChm
cmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCmluZGV4IDNlNWRh
M2QwOWM3NzcyMjdiYjgyMDQ3ZDJjNzVlOWYxZjAwZGRmNjMuLmYzMDAwMTJmMDVjOWVhOWM5NzVj
MDYwM2Q3MWRmOGEzM2Q1MjMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgYm9vbCBpc1Jl
cXVlc3RDcm9zc09yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
Y29uc3QgUmVzb3VyY2UKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHsKIHB1YmxpYzoK
LSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IFdURjo6
bnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYs
IE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6bnVsbG9wdCwgU3RyaW5nJiYg
Y2hhcnNldCA9IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCYmIHJlbGVhc2VSZXNv
dXJjZVJlcXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3VyY2VSZXF1ZXN0KTsgfQogICAg
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZVJlcXVlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNw
cAppbmRleCA0YWY0MDFkNmFkMmQxNjFmNzUyZTQyODIwNTNlMDA2YzViOWQxZTA5Li42MDdlNjJl
YzA4NjgyNzMyZjUyYmJmYjRjNzU0OWRkMzdiNjFmZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgTWF0aE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSktPmNv
bFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1l
czo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHNl
dFRhYkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlIGlmIChhdXRv
IG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAg
IHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVlKCkpOwogICAgIH0g
ZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCA1ZGMxOTUwYTA1
ZGM2M2E2ZDgyYjhiZDI5YmViMGI1YzhlY2Y5ZmY4Li5lN2U4NWNhNmNlMTE5YTViMWY3NDczNDgy
ZGQwMTMzMDU4N2FiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJldGNoZWQgPSAxOAogICAgIH07CiAK
LSAgICB2aXJ0dWFsIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZpZWRNYXRoVmFyaWFudCgp
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8TWF0aFZhcmlh
bnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmluZGV4IGJiNGFkZDRjYmU5
MjU2MWQ4OWJkMGFiMTUyM2ZlNGM3Yzk1MTlkY2IuLjNjNDM5MzkwMGNmZTc2OTc3MDk3ZGE5MGZj
YTE2N2NjNGIwMmE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxG
cmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFj
dGlvbkVsZW1lbnQuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCBNYXRoTUxGcmFjdGlvbkVsZW1l
bnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6ZGVub21pbmF0b3JB
bGlnbgogdm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChu
YW1lID09IGxpbmV0aGlja25lc3NBdHRyKQotICAgICAgICBtX2xpbmVUaGlja25lc3MgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBl
bHNlIGlmIChuYW1lID09IG51bWFsaWduQXR0cikKLSAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1l
bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbnVtZXJhdG9yQWxpZ25tZW50ID0gc3RkOjpu
dWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0dHIpCi0gICAgICAgIG1f
ZGVub21pbmF0b3JBbGlnbm1lbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGVub21pbmF0
b3JBbGlnbm1lbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmNwcAppbmRleCBjMzE4MTRmNzc2ODM0NTQ0MDhiNGUzNjBmOTBhYWM0YjdmMmJk
NWVkLi4wZTVkMDIwZjI2NDdhMjAxNmEyMjc3MGZkMjNlOWRkMWI0NjNhNjgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
dm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHsKICAgICBib29sIG1hdGhWYXJpYW50QXR0cmlidXRl
ID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHI7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRl
KQotICAgICAgICBtX21hdGhWYXJpYW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX21hdGhW
YXJpYW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgobWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYm
IHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVl
KHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
TWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9z
ZUVsZW1lbnQuY3BwCmluZGV4IGNjODQ5ZmU4ZWJmMmVmNTJiM2QxYzQ2ZmM1Nzc5MGQzMmM3ZjE5
YWMuLmMyZmQ1ZDU0ZGI1Zjc1YTcyNzIwYzQ2MDBlZGYxZTNmNzMyY2UxZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgYm9vbCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6Omhhc05vdGF0aW9uKE1lbmNsb3Nl
Tm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykKIHZvaWQgTWF0aE1MTWVuY2xvc2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlvbkF0dHIpCi0gICAgICAgIG1fbm90
YXRpb25GbGFncyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ub3RhdGlvbkZsYWdzID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgTWF0aE1MUm93RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5LmNwcAppbmRleCAyZDJiYzJiZTYwMTUwZTBjYTkwYjgzYzI5YTNlOTg4ODM5MDlk
OGI1Li5lYzUwNTIwOTY0MzFhYWI4NjBiZDFkYTVjZTc0MzU5MjRjNmZiNGYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcApAQCAt
MTEyOSwxNCArMTEyOSwxNCBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBob3Jpem9udGFsT3BlcmF0
b3JzW10gPSB7CiBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5Ojpz
ZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBleHBsaWNpdEZvcm0pCiB7
CiAgICAgaWYgKCFjaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBXZSB0cnkgYW5kIGZpbmQgdGhlIGRl
ZmF1bHQgdmFsdWVzIGZyb20gdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnkuCiAgICAgaWYgKGF1dG8q
IGVudHJ5ID0gdHJ5QmluYXJ5U2VhcmNoPGNvbnN0IEVudHJ5LCBLZXk+KGRpY3Rpb25hcnksIGRp
Y3Rpb25hcnlTaXplLCBLZXkoY2hhcmFjdGVyLCBmb3JtKSwgRXh0cmFjdEtleSkpCiAgICAgICAg
IHJldHVybiBFeHRyYWN0UHJvcGVydHkoKmVudHJ5KTsKIAogICAgIGlmIChleHBsaWNpdEZvcm0p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBJZiB3ZSBkaWQgbm90IGZpbmQgdGhlIGRlc2lyZWQgb3BlcmF0b3IgZm9y
bSBhbmQgaWYgaXQgd2FzIG5vdCBzZXQgZXhwbGljaXRseSwgd2UgdXNlIHRoZSBmaXJzdCBvbmUg
aW4gdGhlIGZvbGxvd2luZyBvcmRlcjogSW5maXgsIFByZWZpeCwgUG9zdGZpeC4KICAgICAvLyBU
aGlzIGlzIHRvIGhhbmRsZSBiYWQgTWF0aE1MIG1hcmt1cCB3aXRob3V0IGV4cGxpY2l0IDxtcm93
PiBkZWxpbWl0ZXJzIGxpa2UgIjxtbz4oPC9tbz48bWk+YTwvbWk+PG1vPik8L21vPjxtbz4oPC9t
bz48bWk+YjwvbWk+PG1vPik8L21vPiIgd2hlcmUgaW5uZXJmZW5jZXMgc2hvdWxkIG5vdCBiZSBj
b25zaWRlcmVkIGluZml4LgpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgT3B0aW9uYWw8UHJvcGVydHk+
IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIgY2hhcmFjdGVyLCBGb3Jt
IGZvcm0KICAgICAgICAgcmV0dXJuIEV4dHJhY3RQcm9wZXJ0eSgqZW50cnkpOwogICAgIH0KIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
Ym9vbCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmlzVmVydGljYWwoVUNoYXIzMiB0ZXh0Q29u
dGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5j
cHAKaW5kZXggMWEyMTNmNGViMmYyN2IxOGZiMjU2OTMzYzM0MzNlN2VjMDcxNmEyNi4uMzRiYjgx
YWQ3ZGUzMWIzZWVjNjM5MTJiMDg0NGFkM2U0NTMyMjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKQEAgLTIwMyw4ICsyMDMsOCBAQCBj
b25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9yRWxlbWVudDo6bWF4U2l6
ZSgpCiAKIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX29wZXJhdG9yQ2hhciA9IFdURjo6bnVsbG9w
dDsKLSAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX29wZXJh
dG9yQ2hhciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6
bnVsbG9wdDsKICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyA9IE1hdGhNTE9wZXJhdG9yRGlj
dGlvbmFyeTo6YWxsRmxhZ3M7CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlKTsKIH0KQEAgLTIyNSwyNCArMjI1LDI0IEBAIHN0YXRpYyBPcHRpb25hbDxNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVUb1Byb3BlcnR5RmxhZyhj
b25zCiAgICAgICAgIHJldHVybiBTdHJldGNoeTsKICAgICBpZiAobmFtZSA9PSBzeW1tZXRyaWNB
dHRyKQogICAgICAgICByZXR1cm4gU3ltbWV0cmljOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGZvcm1BdHRyKSB7Ci0gICAgICAgIG1f
ZGljdGlvbmFyeVByb3BlcnR5ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2RpY3Rpb25hcnlQ
cm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9wcm9wZXJ0aWVzLmRpcnR5RmxhZ3Mg
PSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmFsbEZsYWdzOwogICAgIH0gZWxzZSBpZiAoYXV0
byBmbGFnID0gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKG5hbWUpKQogICAgICAgICBtX3By
b3BlcnRpZXMuZGlydHlGbGFncyB8PSBmbGFnLnZhbHVlKCk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBsc3BhY2VBdHRyKQotICAgICAgICBtX2xlYWRpbmdTcGFjZSA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9sZWFkaW5nU3BhY2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSByc3BhY2VBdHRyKQotICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1l
ID09IG1pbnNpemVBdHRyKQotICAgICAgICBtX21pblNpemUgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fbWluU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG1heHNp
emVBdHRyKQotICAgICAgICBtX21heFNpemUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbWF4
U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgobmFtZSA9PSBzdHJldGNoeUF0dHIgfHwg
bmFtZSA9PSBsc3BhY2VBdHRyIHx8IG5hbWUgPT0gcnNwYWNlQXR0ciB8fCBuYW1lID09IG1vdmFi
bGVsaW1pdHNBdHRyKSAmJiByZW5kZXJlcigpKSB7CiAgICAgICAgIGRvd25jYXN0PFJlbmRlck1h
dGhNTE9wZXJhdG9yPigqcmVuZGVyZXIoKSkudXBkYXRlRnJvbUVsZW1lbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaAppbmRleCBjN2Q4ZDY2OWJm
YzYwYzNlMTkzZjU0YmMwODlkNmI3NjM4MjJhYTg3Li5iYjU2Zjc5NDZlOGYxNWU5MmIyOGY0NjFl
NGIyZTdmY2U5Yzc2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
T3BlcmF0b3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJh
dG9yRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHN0YXRp
YyBPcGVyYXRvckNoYXIgcGFyc2VPcGVyYXRvckNoYXIoY29uc3QgU3RyaW5nJik7CiAgICAgY29u
c3QgT3BlcmF0b3JDaGFyJiBvcGVyYXRvckNoYXIoKTsKLSAgICB2b2lkIHNldE9wZXJhdG9yRm9y
bURpcnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZv
aWQgc2V0T3BlcmF0b3JGb3JtRGlydHkoKSB7IG1fZGljdGlvbmFyeVByb3BlcnR5ID0gc3RkOjpu
dWxsb3B0OyB9CiAgICAgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0oKSB7IHJl
dHVybiBkaWN0aW9uYXJ5UHJvcGVydHkoKS5mb3JtOyB9CiAgICAgYm9vbCBoYXNQcm9wZXJ0eShN
YXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpOwogICAgIExlbmd0aCBkZWZhdWx0TGVhZGlu
Z1NwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVk
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5j
cHAKaW5kZXggZjc1OTQ1OWI5MjUzNDk1Y2M5NzU2YjEyYWI3ZWI5ZDc0YjM0YmZlZC4uOTRmMmMz
ZTIyMTFjZjA2OTcwOGJlMDgxYWIzMjg5ZmYyZmIyOWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcApAQCAtNzYsMTUgKzc2LDE1IEBAIGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUGFkZGVkRWxlbWVudDo6dm9mZnNldCgpCiB2
b2lkIE1hdGhNTFBhZGRlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHdp
ZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aWR0
aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhlaWdodEF0dHIpCi0gICAg
ICAgIG1faGVpZ2h0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2hlaWdodCA9IHN0ZDo6bnVs
bG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAgICAgICAgbV9kZXB0aCA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNl
IGlmIChuYW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNwYWNlID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2xzcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09
IHZvZmZzZXRBdHRyKQotICAgICAgICBtX3ZvZmZzZXQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fdm9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCAyNmY0NWI0ZTk3YjkyMTNjYzA2ZWIz
OTc2NmNkYzcyZjA4OWU2ZTQzLi5hMjY5ZGM5YTA3NjUwZTljZTk1ZmEyMzRkM2U4YmFkMWFhZmI3
M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQuY3BwCkBAIC0zNjQsMTcgKzM2NCwxNyBAQCBNYXRoTUxFbGVtZW50OjpNYXRoVmFy
aWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhWYXJpYW50QXR0cmlidXRl
KAogT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1hdGhNTFByZXNlbnRhdGlv
bkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAgICBpZiAoIWFjY2VwdHNNYXRo
VmFyaWFudEF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9tYXRoVmFyaWFudCkKICAgICAgICAg
bV9tYXRoVmFyaWFudCA9IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICByZXR1cm4gbV9tYXRoVmFy
aWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpOb25lID8gV1RGOjpudWxsb3B0IDogbV9tYXRo
VmFyaWFudDsKKyAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50
OjpOb25lID8gc3RkOjpudWxsb3B0IDogbV9tYXRoVmFyaWFudDsKIH0KIAogdm9pZCBNYXRoTUxQ
cmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBib29sIG1hdGhWYXJpYW50QXR0
cmlidXRlID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHIgJiYgYWNjZXB0c01hdGhWYXJpYW50QXR0
cmlidXRlKCk7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhW
YXJpYW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX21hdGhWYXJpYW50ID0gc3RkOjpudWxs
b3B0OwogICAgIGlmICgobWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAg
ICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaApp
bmRleCBlNzVhNjM0MTFjMTBhZjFjNzgzZDJjNDMxNzVjMDUyZDc3NDBlMDUyLi5lMjQ2NWYxZGZj
OWYwNzkxOGEyZmJlNmQ2M2ZhMTM0Nzc4YjJjM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJv
dGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5vZGUmKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUmKTsKIAotICAgIHN0YXRp
YyBPcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChjb25zdCBCb29sZWFuVmFsdWUmIHZhbHVl
KSB7IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQgPyBXVEY6Om51bGxvcHQg
OiBPcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRydWUpOyB9CisgICAgc3Rh
dGljIE9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IHN0ZDo6bnVsbG9w
dCA6IE9wdGlvbmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KICAgICBj
b25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHN0YXRpYyBMZW5ndGggcGFy
c2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAppbmRleCAzMmZhNGJiZjViZDQzYjYxNWFmZDlkNmZl
YmVkNzc0MjZmZTdmM2E1Li4wNjRlYTA4OWY5Y2E2Zjc3ZjFhODYxMjIzMGY5YWJhMmQzOGFiMzEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAK
QEAgLTgwLDkgKzgwLDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTY3Jp
cHRzRWxlbWVudDo6c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lkIE1hdGhNTFNjcmlwdHNFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzdWJzY3JpcHRzaGlmdEF0dHIpCi0gICAg
ICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3Vic2NyaXB0
U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBzdXBlcnNjcmlwdHNo
aWZ0QXR0cikKLSAgICAgICAgbV9zdXBlcnNjcmlwdFNoaWZ0ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX3N1cGVyc2NyaXB0U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCmluZGV4IGNjZDc4ODYxNWUzMzhlZGI3NWFlNGMz
NGIxOGZhMTA1Yzg0NWE4NjguLmQ1NmUzYTA0MGQ1OTc3NDlkYjJjYmQwM2M2NjM5MzBkZjY0M2Qx
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCkBA
IC02NiwxMSArNjYsMTEgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxTcGFj
ZUVsZW1lbnQ6OmRlcHRoKCkKIHZvaWQgTWF0aE1MU3BhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGggPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
bV9oZWlnaHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBkZXB0aEF0dHIp
Ci0gICAgICAgIG1fZGVwdGggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGVwdGggPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVG9rZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVs
ZW1lbnQuY3BwCmluZGV4IGRiOGQwMzczNTI4NmMzOGFlNzE0NmI5MTY5MzBhZWVjMTBhYjUyZmQu
LjdiZGFmNjEwNGU4ODg5M2FlYzkzN2ZmNTJmMWE3MzNjODM4NzVmNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBAIC04NiwxMCArODYsMTAgQEAg
T3B0aW9uYWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252ZXJ0VG9TaW5nbGVDb2Rl
UG9pbnQoU3RyaW5nVmlldyBzdHJpbmcKICAgICBhdXRvIGNvZGVQb2ludHMgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoc3RyaW5nKS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0byBp
dGVyYXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gY29kZVBv
aW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVQ2hhcjMyPiBjaGFyYWN0ZXIgPSAqaXRlcmF0
b3I7CiAgICAgKytpdGVyYXRvcjsKLSAgICByZXR1cm4gaXRlcmF0b3IgPT0gY29kZVBvaW50cy5l
bmQoKSA/IGNoYXJhY3RlciA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0g
Y29kZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCmluZGV4
IDUzOWZiZDg1Y2Y4NmFhZjcyM2VlZWZiMDczYzdmZTBkOWEwZmUyNzguLjA0ZmIwMTI3OTNkZjFm
ZWNiYzY0NmIzZjIyN2M4ODhiOWJjMGFmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgY29uc3QgTWF0
aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRV
bmRlcigpCiB2b2lkIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlm
IChuYW1lID09IGFjY2VudEF0dHIpCi0gICAgICAgIG1fYWNjZW50ID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX2FjY2VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGFj
Y2VudHVuZGVyQXR0cikKLSAgICAgICAgbV9hY2NlbnRVbmRlciA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9hY2NlbnRVbmRlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCmluZGV4IGI2ZDkxYTgzMzE3ZTIyMmM5YzJiMTdiMTY4YzMwNjg4OWQ0NjZiMTMuLjZlYjc1
NmVhZmU4NDE3ZTljNzEzMWRjYTg3ZGUzN2I4Y2I5YzVjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0
YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8Q29udGFjdElu
Zm8+PiYmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhXVEY6Om51bGxvcHQpOyB9CisgICAgdmly
dHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3RzUmVxdWVzdERhdGEmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9yPENvbnRhY3RJbmZvPj4m
Jik+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsgfQogICAgIAogICAgIC8v
IEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Igc3BlY2lmaWVkIGZpbGVu
YW1lcy4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIEZpbGVJY29uTG9hZGVyJikgPSAwOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25z
dCBJbnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5
bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUpIHsgfQogCi0gICAgdmlydHVhbCBPcHRpb25hbDxT
Y3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2Vk
KGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmln
aW4uaAppbmRleCAxOWUyN2EwMjJhNTcxOGFlZDQyOGYzZGFiMGE0NmI5ZjBmYzUyZmQ0Li5lODQ5
YWJkNTBmMDVlMjkwMDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKQEAgLTgxLDEwICs4MSwxMCBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBp
bmxpbmUgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46OmRlY29kZShEZWNvZAog
ICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gY2xpZW50T3JpZ2luOwogICAgIGRlY29k
ZXIgPj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luIHx8IHRvcE9yaWdpbi0+aXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOwogICAgIGlmICghY2xpZW50T3Jp
Z2luIHx8IGNsaWVudE9yaWdpbi0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIENsaWVudE9y
aWdpbiB7IFdURk1vdmUoKnRvcE9yaWdpbiksIFdURk1vdmUoKmNsaWVudE9yaWdpbikgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAwZGY3ZDliNjEwNzc3YzY0ZGRh
NzVhYTAyNjJmNzQ5MmJhMDBhOTIxLi43NDIxNDkzZTQyZGEzODdlM2EyNTQzNWQ0MWYzNzRjYzM1
ZmQzYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC02OCwxMiArNjgs
MTIgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IERPTVNlbGVjdGlvbjo6cmFuZ2UoKSBjb25zdAog
ewogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgYXV0byByYW5nZSA9IGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5nZVNlbGVjdGlvbkVuYWJs
ZWQoKQogICAgICAgICA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yYW5nZSgpCiAg
ICAgICAgIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKTsKICAg
ICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5zdGFydC5jb250YWluZXItPmlzSW5TaGFkb3dUcmVlKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4
IDc1ZDVmMmVjN2U0MDI0MmJlNzliMjkwNjllNmM4MWNkZGJlZmJkODcuLjc2ZDJmZTdkOWIwNmU4
OWFjM2Y1NTZjMTJkOGFiNDQ5MDViYjQ5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBA
IC0zOTgsNyArMzk4LDcgQEAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gRE9NVGltZXI6OmFsaWdu
ZWRGaXJlVGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBjb25zdAogewogICAgIFNlY29uZHMg
YWxpZ25tZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmRvbVRpbWVyQWxp
Z25tZW50SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJOZXN0aW5nTGV2ZWwpOwog
ICAgIGlmICghYWxpZ25tZW50SW50ZXJ2YWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSByYW5kb21pemVkUHJvcG9ydGlvbiA9IHJhbmRvbU51bWJlcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggZjgyMmE3Y2JiNmQyMmVmNWNjMDIzNTIyYzBkYTQ1YTk5OTkw
NjUxYi4uZjI2Y2U0M2JmM2VkMDI3YTk0ZjI2N2FhZThiNDIwZmI2MGU5NmE3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzQ4LDEyICs3NDgsMTIgQEAgdm9pZCBET01XaW5kb3c6
OmZyZWV6ZU5vd1RpbWVzdGFtcCgpCiAKIHZvaWQgRE9NV2luZG93Ojp1bmZyZWV6ZU5vd1RpbWVz
dGFtcCgpCiB7Ci0gICAgbV9mcm96ZW5Ob3dUaW1lc3RhbXAgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9mcm96ZW5Ob3dUaW1lc3RhbXAgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyBET01XaW5kb3c6OmZyb3plbk5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fZnJvemVuTm93VGltZXN0YW1wLnZhbHVlT3Iobm93VGltZXN0YW1wKCkpOworICAg
IHJldHVybiBtX2Zyb3plbk5vd1RpbWVzdGFtcC52YWx1ZV9vcihub3dUaW1lc3RhbXAoKSk7CiB9
CiAKIExvY2F0aW9uJiBET01XaW5kb3c6OmxvY2F0aW9uKCkKQEAgLTkzOSw3ICs5MzksNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplYwogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciB1c2Vy
R2VzdHVyZUluZGljYXRvcih1c2VyR2VzdHVyZVRvRm9yd2FyZCk7CiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNz
YWdlSWRlbnRpZmllcik7CiAKLSAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3Nh
Z2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwg
c291cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gbWFrZU9wdGlvbmFsKE1l
c3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNm
ZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3Jp
Z2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3Nh
Z2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3RkOjpudWxs
b3B0KTsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBwb3N0TWVzc2Fn
ZUlkZW50aWZpZXIpOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAgdm9pZCBET01XaW5kb3c6OnNjcm9s
bFRvKGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucywgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBp
bmcKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGRvY3VtZW50KCktPnNjcm9sbGluZ0Vs
ZW1lbnQoKT8KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTA1OQotICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xs
VG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlT3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLCBkb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKSkgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRT
Y3JvbGw6Ok5vOworICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xs
VG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpID8gQW5pbWF0ZWRTY3JvbGw6OlllcyA6IEFuaW1hdGVk
U2Nyb2xsOjpObzsKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyA9IFNjcm9s
bFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljV2l0aE9wdGlvbnMoY2xh
bXBpbmcsIGFuaW1hdGVkLCBzbmFwUG9pbnRTZWxlY3Rpb25NZXRob2QpOwogICAgIHZpZXctPnNl
dENvbnRlbnRzU2Nyb2xsUG9zaXRpb24obGF5b3V0UG9zLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9w
dGlvbnMpOwogfQpAQCAtMjE0NSw3ICsyMTQ1LDcgQEAgdm9pZCBET01XaW5kb3c6OmZhaWxlZFRv
UmVnaXN0ZXJEZXZpY2VNb3Rpb25FdmVudExpc3RlbmVyKCkKICAgICAgICAgZG9jdW1lbnQoKS0+
cG9zdFRhc2soW10oYXV0byYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRv
dyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3coKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gYWNjZWxlcmF0aW9uID0gRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9u
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoRGV2aWNl
TW90aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQsIERldmlj
ZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uY29weVJlZigpLCBhY2NlbGVyYXRpb24u
Y29weVJlZigpLCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZSgpLCBXVEY6
Om51bGxvcHQpLnB0cigpKSk7CisgICAgICAgICAgICAgICAgd2luZG93LT5kaXNwYXRjaEV2ZW50
KERldmljZU1vdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50
LCBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoYWNjZWxlcmF0aW9uLmNvcHlSZWYoKSwgYWNjZWxl
cmF0aW9uLmNvcHlSZWYoKSwgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlOjpjcmVhdGUo
KSwgc3RkOjpudWxsb3B0KS5wdHIoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDBhOTIxNWUxNGY2
MmQ3OTQwMmRlODI0ZGRiZTkwOTA2MzdhZTQ0NGIuLjg4NjAwYTY1ZDk4YzYyYjRkNzI5NTY3YmMz
Yzk4YWVlNThiNzhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBA
IC0yNDEsNyArMjQxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRp
b24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmICghbV9kcm9wcGVkSW1hZ2VQ
bGFjZWhvbGRlcnMuaXNFbXB0eSgpICYmIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSAm
JiB0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhkcmFnRGF0YSkpIHsKICAgICAg
ICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuY2xlYXIoKTsKLSAgICAgICAgbV9kcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2Ryb3BwZWRJ
bWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fZG9jdW1lbnRV
bmRlck1vdXNlID0gbnVsbHB0cjsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0zMTQsNyArMzE0LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmEK
ICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrKCk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5pc0Vt
cHR5KCkpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2Fs
bCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE9wdGlv
bmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CkBAIC00NjEsNyArNDYxLDcgQEAgRHJh
Z0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAgICAgICBtX251bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fbnVtYmVyT2ZJ
dGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5zZXRDYW5SZWNlaXZlRHJv
cHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92ZXIgYSBmaWxlIGlucHV0IGVsZW1lbnQuIFRo
ZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQgaW50byB0aGUgdmlldywKQEAgLTUwNyw3ICs1
MDcsNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9u
Rm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgIH0KIAogICAgIGlmIChkb2N1bWVu
dCAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3VtZW50PigqZG9jdW1lbnQp
ICYmICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1lbnQtPmhhc0VkaXRhYmxl
U3R5bGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQogCkBA
IC03MDAsNyArNzAwLDcgQEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1bHRP
cGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPgogICAgIGlmIChzb3VyY2VP
cGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJh
dGlvbjo6TGluaywgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6UHJpdmF0
ZSwgRHJhZ09wZXJhdGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlvbjo6RGVsZXRlIH0pKQogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKICAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFz
ay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJh
Z09wZXJhdGlvbjo6TW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpNb3ZlOwog
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkdlbmVy
aWMpKQpAQCAtNzMyLDcgKzczMiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJh
Zyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERyYWdPcGVyYXRpCiAgICAgaWYg
KCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQogICAgICAgICBvcGVyYXRpb24gPSBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBlbHNlIGlmICgh
c291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25N
YXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KLSAgICAgICAgb3BlcmF0aW9uID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBvcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZQogICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb25NYXNrLnZhbHVlKCkpOwogCkBAIC05NDAsNyArOTQwLDcgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGkKIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdDb250cm9sbGVyOjpoaXRU
ZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKICAgICBpZiAoIXNvdXJjZS52aWV3KCkg
fHwgIXNvdXJjZS5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0ZXhwciBPcHRpb25T
ZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6
UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhpdFRlc3RSZXF1ZXN0OjpU
eXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgYXV0byBoaXRUZXN0UmVzdWx0ID0g
c291cmNlLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KGxvY2F0aW9uLCBoaXRU
eXBlKTsKQEAgLTk1MCw3ICs5NTAsNyBAQCBPcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29u
dHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLAogICAgICAg
ICAvLyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFn
IG9yaWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92
ZWQgb3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0
byBzdGFydCBhIGRyYWcgb24KICAgICAgICAgLy8gc29tZXRoaW5nIHRoYXQncyBub3QgYWN0dWFs
bHkgdW5kZXIgdGhlIGRyYWcgb3JpZ2luLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiB7IGhpdFRl
c3RSZXN1bHQgfTsKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRv
U3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25z
CiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnJlbW92ZUFsbERyb3BwZWRJbWFnZVBsYWNlaG9sZGVy
cygpCiB7Ci0gICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gV1RGOjpudWxsb3B0
OworICAgIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBmb3IgKGF1dG8mIHBsYWNlaG9sZGVyIDogc3RkOjpleGNoYW5nZShtX2Ryb3BwZWRJbWFnZVBs
YWNlaG9sZGVycywgeyB9KSkgewogICAgICAgICBpZiAocGxhY2Vob2xkZXItPmlzQ29ubmVjdGVk
KCkpCiAgICAgICAgICAgICBwbGFjZWhvbGRlci0+cmVtb3ZlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggOTk0M2Y0YjMzN2RlZmRlMzUwYTA2MzljNGNjZTBhNmNiZDQ3
ODNmOS4uYmI2MTc2ZmU4MzU4ZDdjOWRhOGFkYTdlNGIxYTJjMmQwMjg4NDA3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTQxOCwxNCArMTQxOCwxNCBAQCB2b2lkIEV2
ZW50SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYgdmlldywgY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBibwogT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1
cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hpZnRLZXkpCiB7CiAgICAg
aWYgKG1fcmVzaXplTGF5ZXIgJiYgbV9yZXNpemVMYXllci0+aW5SZXNpemVNb2RlKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIW1fZnJhbWUucGFnZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcp
CiAgICAgaWYgKG1fZnJhbWUubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkucGFuU2Nyb2xsSW5Q
cm9ncmVzcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1f
ZnJhbWUpOwpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRs
ZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2gKIAog
ICAgIE5vZGUqIG5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIGlmICghbm9kZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGF1dG8qIHN0eWxl
ID0gcmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0eWxlKCkgOiBudWxscHRyOwpAQCAtMTQ2Miw3ICsx
NDYyLDcgQEAgT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25z
dCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2gKICAgICAgICAgY2FzZSBTZXRDdXJzb3I6
CiAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVDdXJzb3I7CiAgICAgICAgIGNhc2UgRG9Ob3RT
ZXRDdXJzb3I6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjMwNSw3ICsyMzA1
LDcgQEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJh
dGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHIKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b246Ok1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsiKQogICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbjo6TGluazsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgY29udmVydERyYWdPcGVyYXRp
b25Ub0Ryb3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikK
QEAgLTIzNjcsNyArMjM2Nyw3IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoCiAgICAgZGF0YVRy
YW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAhZGF0
YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybiB7
IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgfTsKLSAgICBy
ZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IGFjY2VwdCwgc3Rk
OjpudWxsb3B0IH07CiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50
SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVu
dCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1h
a2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFz
aywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQpAQCAtMjg2OCw3ICsyODY4LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBPcHRpb24KIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCiAgICAgaWYgKHdo
ZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PEV2ZW50SGFuZGxpbmc+IGhh
bmRsaW5nOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgT3B0aW9uYWw8V2hlZWxTY3JvbGxHZXN0dXJl
U3RhdGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3RhdGUoY29uc3QgUGwKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHdoZWVsRXZlbnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVu
dEhhbmRsaW5nKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGJmYmJhZGVhNzJlMTRjOWJjNzYwN2VhZTllM2UwM2Y5NTA5ZjJiZDcuLmJlNzZlMWJk
Mjc3NTUxMzFkMDgzMTZmMmQzYmU5OWJjY2E2OGRjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBz
aGFkb3dBZGp1c3RlZFRhYkluZGV4KEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3aXRob3V0IHRhYmluZGV4
IGlmIGl0IGhhcyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVtZW50Ojp0YWJJbmRleCBy
ZXR1cm5zIC0xIG9uIHN1Y2ggYW4gZWxlbWVudC4KICAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQu
c2hvdWxkQmVJZ25vcmVkSW5TZXF1ZW50aWFsRm9jdXNOYXZpZ2F0aW9uKCkgPyAtMSA6IGVsZW1l
bnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZWxlbWVu
dC5zaG91bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmlnYXRpb24oKSA/IC0xIDogZWxl
bWVudC50YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZV9vcigwKTsKIH0KIAogRm9jdXNDb250
cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgT3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDI0ZWFlYjNm
MjVjODQzOGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLmUwZThjMzUyZDRkZjk5NjQ5OTQzN2Nj
ZjI3N2RkNTgzNjY3MjlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC04NDcsNyArODQ3LDcg
QEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNvbnN0IEludFBv
aW50JiBmcmFtZVBvaW50KQogCiAgICAgYXV0byBjb250YWluZXJUZXh0ID0gcG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKS5jb250YWluZXJUZXh0KCk7CiAgICAgaWYgKCFjb250YWluZXJUZXh0IHx8
ICFjb250YWluZXJUZXh0LT5yZW5kZXJlcigpIHx8IGNvbnRhaW5lclRleHQtPnJlbmRlcmVyKCkt
PnN0eWxlKCkudXNlclNlbGVjdCgpID09IFVzZXJTZWxlY3Q6Ok5vbmUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
YXV0byBwcmV2aW91c0NoYXJhY3RlclJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9uLnBy
ZXZpb3VzKCksIHBvc2l0aW9uKSkgewogICAgICAgICBpZiAoZWRpdG9yKCkuZmlyc3RSZWN0Rm9y
UmFuZ2UoKnByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UpLmNvbnRhaW5zKGZyYW1lUG9pbnQpKQpAQCAt
ODU5LDcgKzg1OSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZTo6cmFuZ2VGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKICAgICAgICAgICAgIHJldHVybiAqbmV4dENo
YXJhY3RlclJhbmdlOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGcmFtZTo6Y3JlYXRlVmlldyhjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgYmFja2dyb3VuZENvbG9y
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQzYzllZDMyYzc3ZjUwNWIwYzhlYmQz
MjUzZTZkMDQzNTlkNjYxMzAuLjUzNzU1ZDBiNGQxYWFlODhhNTMzOTcwN2RkZWVhMTZlZGMxYzc3
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzNSw4ICsxMzUsOCBAQAogI2lu
Y2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFBBR0VfSUQgZnJhbWUo
KS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkKLSNkZWZpbmUg
RlJBTUVfSUQgZnJhbWUoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9V
SW50NjQoKQorI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlk
ZW50aWZpZXIoKSkudG9VSW50NjQoKQorI2RlZmluZSBGUkFNRV9JRCBmcmFtZSgpLmZyYW1lSUQo
KS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRVZJ
RVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0df
SUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9J
RCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0TGF5b3V0Vmll
d3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVjdCwgVHJpZ2dlcgogICAg
IGlmIChvbGRSZWN0LmhlaWdodCgpICE9IGxheW91dFZpZXdwb3J0UmVjdCgpLmhlaWdodCgpKQog
ICAgICAgICBsYXlvdXRUcmlnZ2VyaW5nID0gVHJpZ2dlckxheW91dE9yTm90OjpZZXM7CiAKLSAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuRnJhbWVWaWV3ICIgPDwg
dGhpcyA8PCAiIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgLSBjaGFuZ2luZyBvdmVy
cmlkZSBsYXlvdXQgdmlld3BvcnQgZnJvbSAiIDw8IG9sZFJlY3QgPDwgIiB0byAiIDw8IG1fbGF5
b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWVPcihMYXlvdXRSZWN0KCkpIDw8ICIgbGF5b3V0
VHJpZ2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5vdDo6
WWVzID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3Ry
ZWFtIDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlvdXRWaWV3cG9ydE92ZXJy
aWRlUmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdwb3J0IGZyb20gIiA8PCBv
bGRSZWN0IDw8ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0LnZhbHVlX29y
KExheW91dFJlY3QoKSkgPDwgIiBsYXlvdXRUcmlnZ2VyaW5nICIgPDwgKGxheW91dFRyaWdnZXJp
bmcgPT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMgPyAieWVzIiA6ICJubyIpKTsKIAogICAgIGlm
IChvbGRSZWN0ICE9IGxheW91dFZpZXdwb3J0UmVjdCgpICYmIGxheW91dFRyaWdnZXJpbmcgPT0g
VHJpZ2dlckxheW91dE9yTm90OjpZZXMpCiAgICAgICAgIHNldFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzTmVlZExheW91dCgpOwpAQCAtMzAzNSw5ICszMDM1LDkgQEAgdm9pZCBGcmFtZVZpZXc6
OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHkoY29uc3QgT3B0aW9uYWw8
Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9S
VCkKLSAgICBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVl
T3IoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0
ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOworICAgIENvbG9yIGJh
c2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVfb3IoUmVuZGVyVGhlbWU6
OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dy
b3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogI2Vsc2UKLSAgICBDb2xvciBiYXNlQmFja2dy
b3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlT3IoQ29sb3I6OndoaXRlKTsKKyAgICBD
b2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlX29yKENvbG9y
Ojp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUgPSBtX2ZyYW1lLnB0cigp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtX2ZyYW1lLnB0cigp
KSkgewpAQCAtNDkzMiw3ICs0OTMyLDcgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJv
bUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKIGZsb2F0
IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+
IGVmZmVjdGl2ZVpvb20pIGNvbnN0CiB7CiAgICAgLy8gSWYgZWZmZWN0aXZlWm9vbSBpcyBwYXNz
ZWQsIGl0IGFscmVhZHkgZmFjdG9ycyBpbiBwYWdlWm9vbUZhY3RvcigpLiAKLSAgICByZXR1cm4g
ZWZmZWN0aXZlWm9vbS52YWx1ZU9yKGZyYW1lKCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgp
LmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gZWZmZWN0aXZlWm9vbS52YWx1ZV9vcihm
cmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpICogZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCk7CiB9
CiAKIGZsb2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9u
YWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CkBAIC01NDkzLDcgKzU0OTMsNyBAQCB2b2lk
IEZyYW1lVmlldzo6Y2xlYXJWaWV3cG9ydFNpemVPdmVycmlkZUZvckNTU1ZpZXdwb3J0VW5pdHMo
KQogICAgIGlmICghbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRl
Vmlld3BvcnRTaXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5kaWRDaGFu
Z2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KQEAgLTU1MDUsMTIgKzU1MDUsMTIgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSBz
aXplKQogCiB2b2lkIEZyYW1lVmlldzo6b3ZlcnJpZGVWaWV3cG9ydFdpZHRoRm9yQ1NTVmlld3Bv
cnRVbml0cyhpbnQgd2lkdGgpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUgPyBtX292ZXJyaWRlVmll
d3BvcnRTaXplLT5oZWlnaHQgOiBXVEY6Om51bGxvcHQgfSk7CisgICAgb3ZlcnJpZGVWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUg
PyBtX292ZXJyaWRlVmlld3BvcnRTaXplLT5oZWlnaHQgOiBzdGQ6Om51bGxvcHQgfSk7CiB9CiAK
IHZvaWQgRnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5WaWV3cG9ydFdpZHRoRm9yQ1NTVmlld3Bv
cnRVbml0cygpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KHsgeyB9LCBtX292ZXJyaWRlVmlld3BvcnRTaXplID8gbV9vdmVycmlkZVZpZXdwb3J0U2l6ZS0+
aGVpZ2h0IDogV1RGOjpudWxsb3B0IH0pOworICAgIG92ZXJyaWRlVmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cyh7IHsgfSwgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA/IG1fb3ZlcnJpZGVW
aWV3cG9ydFNpemUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBGcmFtZVZp
ZXc6Om92ZXJyaWRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhPdmVycmlkZVZpZXdw
b3J0U2l6ZSBzaXplKQpAQCAtNTUzNywxNiArNTUzNywxNiBAQCBJbnRTaXplIEZyYW1lVmlldzo6
dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0CiAKICAgICBpZiAodXNlRml4
ZWRMYXlvdXQoKSkgewogICAgICAgICBhdXRvIGZpeGVkTGF5b3V0U2l6ZSA9IHRoaXMtPmZpeGVk
TGF5b3V0U2l6ZSgpOwotICAgICAgICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9ydFNpemUu
d2lkdGgudmFsdWVPcihmaXhlZExheW91dFNpemUud2lkdGgoKSk7Ci0gICAgICAgIHZpZXdwb3J0
U2l6ZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0LnZhbHVlT3IoZml4ZWRMYXlvdXRTaXpl
LmhlaWdodCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndp
ZHRoLnZhbHVlX29yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKKyAgICAgICAgdmlld3BvcnRT
aXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IoZml4ZWRMYXlvdXRTaXpl
LmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIHsgKnZpZXdwb3J0U2l6ZS53aWR0aCwgKnZpZXdw
b3J0U2l6ZS5oZWlnaHQgfTsKICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IHRoZSB2YWx1ZSBy
ZXR1cm5lZCBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHZhbHVlIG9mIHRoZSBvdmVyZmxv
dwogICAgIC8vIHByb3BlcnR5IG9uIHRoZSByb290IGVsZW1lbnQuCiAgICAgYXV0byB2aXNpYmxl
Q29udGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJzID0gdmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVk
aW5nU2Nyb2xsYmFycygpLnNpemUoKTsKLSAgICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9y
dFNpemUud2lkdGgudmFsdWVPcih2aXNpYmxlQ29udGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJz
LndpZHRoKCkpOwotICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0
LnZhbHVlT3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7
CisgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndpZHRoLnZhbHVlX29yKHZp
c2libGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lkdGgoKSk7CisgICAgdmlld3Bv
cnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3IodmlzaWJsZUNvbnRl
bnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIHsgKnZpZXdw
b3J0U2l6ZS53aWR0aCwgKnZpZXdwb3J0U2l6ZS5oZWlnaHQgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggZjhlMDIxMTcwMDdjYzlmMDZlZGVjZTUxZmY3OWY1ODA0ODVhMTdkMy4u
MDJhOTA2OGM3YzM3MDFkMWZiMzNkM2Y1YzA4MzIyMmRmYWJhZjE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC00OTMsMTMgKzQ5MywxMyBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBj
b252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBGbG9hdFBvaW50JikgY29uc3QgZmluYWw7CiAg
ICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IGZpbmFsOwogCi0gICAgZmxvYXQgZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3IoT3B0
aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBXVEY6Om51bGxvcHQpIGNvbnN0OwotICAgIGZs
b2F0IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKE9wdGlvbmFsPGZsb2F0PiBlZmZlY3Rp
dmVab29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBmbG9hdCBkb2N1bWVudFRvQWJzb2x1
dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CisgICAgZmxvYXQgYWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9u
YWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxvYXRSZWN0LCBP
cHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2ludChGbG9hdFBv
aW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJlY3QoRmxv
YXRSZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1lbnRQb2lu
dChGbG9hdFBvaW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUb0NsaWVudFJlY3QoRmxvYXRSZWN0
LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Cisg
ICAgRmxvYXRSZWN0IGFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVjdCwgT3B0aW9uYWw8Zmxv
YXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgRmxvYXRTaXpl
IGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9h
dFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDcwOTM0NjdiMTJmODU2NjFh
OGY3ZmFkZjAyYjM1Nzc5OTRlYjZhMDMuLjQzMDE4NDlkZDdkNmUxN2Q0NzBmZmJhMTgwODZiMTQ0
MzI5YTVkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIu
aApAQCAtNTIsMTIgKzUyLDEyIEBAIE9wdGlvbmFsPEdsb2JhbEZyYW1lSWRlbnRpZmllcj4gR2xv
YmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlm
ICghcGFnZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwog
ICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4geyB7IFdURk1vdmUoKnBhZ2VJRCksIFdURk1vdmUoKmZyYW1lSUQpIH0gfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKaW5kZXggZjJiY2QwNTA0
YTY5NTNhNTJiNjA1NzNhNzdjMDU3NTAyOTdkZjJjNC4uODYyOTM3MDU5YTQzNGNmZDAxMTJjMjNh
MjNiM2RjMDYwY2NjZjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxX
aW5kb3dJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmgKQEAgLTcxLDEyICs3MSwxMiBAQCBPcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVu
dGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlcgog
ICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxXaW5kb3dJZGVudGlmaWVyPiB3aW5kb3dJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gd2luZG93SWRlbnRpZmllcjsKICAgICBpZiAoIXdpbmRvd0lkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RG
TW92ZSgqd2luZG93SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lu
dGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA5YmE1YWM4MWM0M2I0NDViYjE2MWMxOTc0YTY2
ZmM1NTUzZWI4YjQ4Li43MzFjYzA2YzljMTZhZDUwMjk5Zjc5ZmIyYTBiNGI4MTZlMWRkMWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtMTYy
LDcgKzE2Miw3IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om9ic2VydmUoRWxlbWVudCYg
dGFyZ2V0KQogICAgIGlmICghdHJhY2tpbmdEb2N1bWVudCgpIHx8ICFtX2NhbGxiYWNrIHx8IG1f
b2JzZXJ2YXRpb25UYXJnZXRzLmNvbnRhaW5zKCZ0YXJnZXQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB0YXJnZXQuZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhKCkucmVnaXN0cmF0aW9u
cy5hcHBlbmQoeyBtYWtlV2Vha1B0cih0aGlzKSwgV1RGOjpudWxsb3B0IH0pOworICAgIHRhcmdl
dC5lbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyYXRpb25zLmFwcGVuZCh7
IG1ha2VXZWFrUHRyKHRoaXMpLCBzdGQ6Om51bGxvcHQgfSk7CiAgICAgYm9vbCBoYWRPYnNlcnZh
dGlvblRhcmdldHMgPSBoYXNPYnNlcnZhdGlvblRhcmdldHMoKTsKICAgICBtX29ic2VydmF0aW9u
VGFyZ2V0cy5hcHBlbmQoJnRhcmdldCk7CiAgICAgYXV0byogZG9jdW1lbnQgPSB0cmFja2luZ0Rv
Y3VtZW50KCk7CkBAIC0yNDAsMTggKzI0MCwxOCBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVy
Ojpyb290RGVzdHJveWVkKCkKIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gSW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2Nh
bGxiYWNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byogY29udGV4dCA9IG1fY2FsbGJhY2stPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQoY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50
PigqY29udGV4dCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygp
KQogICAgICAgICByZXR1cm4gd2luZG93LT5mcm96ZW5Ob3dUaW1lc3RhbXAoKTsKICAgICAKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFwcGVuZFF1ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5PiYmIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaAppbmRleCA5YWIyZTZhNmRkYjBkZGU2MTg2ZTE1
YTRmMzY4MzYyNTkyZjU0NTRhLi41NWVhMDJhY2VjZmM4MGU3ZWZkNjFmNWJiYTlmNDA4YjA1ZGUz
ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0
TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0
TWVudUl0ZW0uaApAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxNZWRpYUNvbnRyb2xzQ29udGV4
dE1lbnVJdGVtPiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpkZWNvZGUoRGVjbwogICAg
IE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAo
IW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OyBcCiAKICAgICBERUNPREUoaWQsIElEKTsKICAgICBERUNPREUodGl0bGUs
IFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggYmI1ZjFmYzYwZmI0M2Yz
NzFiZWQ1OWFkYzBiYjdjYjk2NWNiYWViYS4uYzU0ODMzOTFkZWFjYmU2ZjY4M2UyNGIyOTY4MzA3
YzhkODBiM2RmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMTEzLDEzICsxMTMs
MTMgQEAgYm9vbCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiBzdGF0aWMgT3B0aW9uYWw8VVJM
PiBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChkYXRhLnVybC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTChkYXRhLnVybCk7CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghdXJsLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSAmJiAhdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdXJsOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKaW5kZXggNjFkZDg2MDU4ZTdhMWU3MjMwZWRkNjc4NmNlODRlMTQzNGZj
Y2RiZS4uOTliYTM5MjZjNGFiZTg3ZjZhNDBjMWRkMjlmNmNhYTg4NTRjNmM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC02NzEsNyArNjcxLDcgQEAgaW5saW5lIE9wdGlvbmFsPHN0ZDo6cGFpcjxN
ZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiAgUGFnZTo6dGFrZUFueU1lZGkKICAg
ICAgICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpKQogICAgICAgICAgICAgcmV0dXJu
IHsgeyAqbGlzdGVuZXIsICpmcmFtZS0+ZG9jdW1lbnQoKSB9IH07CiAgICAgfQotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBQYWdl
OjpzZXRDYW5TdGFydE1lZGlhKGJvb2wgY2FuU3RhcnRNZWRpYSkKQEAgLTc3NiwxNiArNzc2LDE2
IEBAIGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5k
T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gUGFnZTo6
cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+JiByZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAo
dGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChyZWZlcmVuY2VSYW5nZSAmJiByZWZlcmVu
Y2VSYW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5wYWdlKCkgIT0gdGhpcykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbldy
YXAgY2FuV3JhcCA9IG9wdGlvbnMuY29udGFpbnMoV3JhcEFyb3VuZCkgPyBDYW5XcmFwOjpZZXMg
OiBDYW5XcmFwOjpObzsKICAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVuY2VSYW5nZSA/IHJlZmVy
ZW5jZVJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmZyYW1lKCkgOiAmbWFpbkZyYW1lKCk7CiAgICAg
RnJhbWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7Ci0gICAgICAgIGlmIChhdXRvIHJl
c3VsdFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmcodGFyZ2V0LCBmcmFtZSA9
PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiBXVEY6Om51bGxvcHQsIG9wdGlvbnMgLSBX
cmFwQXJvdW5kKSkKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0UmFuZ2UgPSBmcmFtZS0+ZWRpdG9y
KCkucmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1lID09IHN0YXJ0RnJhbWUgPyByZWZlcmVuY2VS
YW5nZSA6IHN0ZDo6bnVsbG9wdCwgb3B0aW9ucyAtIFdyYXBBcm91bmQpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdFJhbmdlOwogICAgICAgICBmcmFtZSA9IGluY3JlbWVudEZyYW1lKGZyYW1l
LCAhb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpLCBjYW5XcmFwKTsKICAgICB9IHdoaWxlIChm
cmFtZSAmJiBmcmFtZSAhPSBzdGFydEZyYW1lKTsKQEAgLTc5Nyw3ICs3OTcsNyBAQCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwg
Y29uc3QgT3B0aW9uYWw8UwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdW5zaWduZWQgUGFnZTo6ZmluZE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBTaG91bGRIaWdo
bGlnaHRNYXRjaGVzIHNob3VsZEhpZ2hsaWdodE1hdGNoZXMsIFNob3VsZE1hcmtNYXRjaGVzIHNo
b3VsZE1hcmtNYXRjaGVzKQpAQCAtODExLDcgKzgxMSw3IEBAIHVuc2lnbmVkIFBhZ2U6OmZpbmRN
YXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zCiAgICAgZG8gewogICAgICAgICBpZiAoc2hvdWxkTWFya01hdGNoZXMgPT0gTWFya01hdGNo
ZXMpCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2VkVGV4dE1hdGNoZXNBcmVI
aWdobGlnaHRlZChzaG91bGRIaWdobGlnaHRNYXRjaGVzID09IEhpZ2hsaWdodE1hdGNoZXMpOwot
ICAgICAgICBtYXRjaENvdW50ICs9IGZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0
KHRhcmdldCwgV1RGOjpudWxsb3B0LCBvcHRpb25zLCBtYXhNYXRjaENvdW50ID8gKG1heE1hdGNo
Q291bnQgLSBtYXRjaENvdW50KSA6IDAsIHNob3VsZE1hcmtNYXRjaGVzID09IE1hcmtNYXRjaGVz
LCBudWxscHRyKTsKKyAgICAgICAgbWF0Y2hDb3VudCArPSBmcmFtZS0+ZWRpdG9yKCkuY291bnRN
YXRjaGVzRm9yVGV4dCh0YXJnZXQsIHN0ZDo6bnVsbG9wdCwgb3B0aW9ucywgbWF4TWF0Y2hDb3Vu
dCA/IChtYXhNYXRjaENvdW50IC0gbWF0Y2hDb3VudCkgOiAwLCBzaG91bGRNYXJrTWF0Y2hlcyA9
PSBNYXJrTWF0Y2hlcywgbnVsbHB0cik7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUo
ZnJhbWUsIHRydWUsIENhbldyYXA6Ok5vKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiAKQEAgLTEy
NjksNyArMTI2OSw3IEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAjZW5kaWYKIAogI2lm
IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVy
cmlkZShXVEY6Om51bGxvcHQpOworICAgIHNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUoc3Rk
OjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAgcmVzZXRTZWVuUGx1Z2lucygpOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZCgpCiAK
ICAgICBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCA9IGZhbHNlOwogICAgIG1fdXNlclN0eWxlU2hl
ZXQgPSBTdHJpbmcoKTsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1lbmNvZGVkIFVURi04IHN0
eWxlIHNoZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVtCiAgICAgLy8gc3luY2hy
b25vdXNseSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMjM5Myw3ICsyMzkzLDcgQEAg
dm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlzaWJsZSkKIAogICAgICAg
ICBpZiAobV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSkgewogICAgICAgICAgICAgbG9nTmF2
aWdhdGlvbihtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlLnZhbHVlKCkpOwotICAgICAgICAg
ICAgbV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTI1NzYsNyArMjU3Niw3IEBAIENvbG9yIFBhZ2U6OnBhZ2VFeHRlbmRl
ZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKIENvbG9yIFBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29s
b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29sb3IudmFsdWVPcihD
b2xvcigpKTsKKyAgICByZXR1cm4gbV9zYW1wbGVkUGFnZVRvcENvbG9yLnZhbHVlX29yKENvbG9y
KCkpOwogfQogCiB2b2lkIFBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvck92ZXJyaWRl
KENvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUpCkBAIC0yODgxLDcgKzI4
ODEsNyBAQCB2b2lkIFBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKGNvbnN0IFVSTCYgZGVzdGlu
YXRpb25VUkwsIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9u
YXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBsb2dOYXZpZ2F0
aW9uKG5hdmlnYXRpb24pOwogfQogCkBAIC0zMzAzLDcgKzMzMDMsNyBAQCB2b2lkIFBhZ2U6OmRp
ZENoYW5nZU1haW5Eb2N1bWVudCgpCiAgICAgbV9wb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXItPnJl
c2V0KCk7CiAKICAgICBpZiAobV9zYW1wbGVkUGFnZVRvcENvbG9yKSB7Ci0gICAgICAgIG1fc2Ft
cGxlZFBhZ2VUb3BDb2xvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zYW1wbGVkUGFnZVRv
cENvbG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICBjaHJvbWUoKS5jbGllbnQoKS5zYW1wbGVk
UGFnZVRvcENvbG9yQ2hhbmdlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b2xvclNhbXBsZXIuY3BwCmluZGV4IDFiMjI4YzY2NjA0MTkwMTZhNzA0NTI0YWI0NzljNDk3YjA2
ZjZkYWUuLjFlNTA5YWE0MDNiZGVlNTZmYzM0OGI3MWQyODhhODg5NjBlZGIyZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcApAQCAtOTcsMTYgKzk3LDE2IEBAIHN0
YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1bWVudCYgZG9jdW1lbnQs
IEludFBvaW50JiYgbG9jYXRpb24pCiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8yMjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGludG8gcGFpbnRpbmcgbG9n
aWMgaW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQogCiAgICAgaWYgKCFpc1ZhbGlkU2FtcGxl
TG9jYXRpb24oZG9jdW1lbnQsIGxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChkb2N1bWVudC52
aWV3KCkpOwogICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChkb2N1bWVudC52
aWV3KCktPmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUoMSwgMSkpLCBTbmFwc2hv
dE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25hcHNob3RPcHRpb25zUGFp
bnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKICAgICBpZiAoIXNuYXBzaG90KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxT
aXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChwaXhlbEJ1
ZmZlci0+ZGF0YSgpLmxlbmd0aCgpID49IDQpOwogCkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGlj
IExhYjxmbG9hdD4gYXZlcmFnZUNvbG9yKExhYjxmbG9hdD4gY29sb3JzW10sIHNpemVfdCBjb3Vu
dCkKIAogT3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNhbXBsZXI6OnNhbXBsZVRvcChQYWdlJiBw
YWdlKQogewotICAgIC8vIElmIGBXVEY6Om51bGxvcHRgIGlzIHJldHVybmVkIHRoZW4gdGhhdCBt
ZWFucyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0aGUgYFBhZ2VgIGlzIG5vdCBy
ZWFkeSB5ZXQpLgorICAgIC8vIElmIGBzdGQ6Om51bGxvcHRgIGlzIHJldHVybmVkIHRoZW4gdGhh
dCBtZWFucyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0aGUgYFBhZ2VgIGlzIG5v
dCByZWFkeSB5ZXQpLgogICAgIC8vIElmIGFuIGludmFsaWQgYENvbG9yYCBpcyByZXR1cm5lZCB0
aGVuIHRoYXQgbWVhbnMgdGhhdCBzYW1wbGVzIFdlcmUgdGFrZW4gYnV0IHRoZXkgd2VyZSB0b28g
ZGlmZmVyZW50LgogCiAgICAgYXV0byBtYXhEaWZmZXJlbmNlID0gcGFnZS5zZXR0aW5ncygpLnNh
bXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKCk7CkBAIC0xNTAsMTkgKzE1MCwxOSBAQCBP
cHRpb25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2UpCiAK
ICAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKTsKICAgICBpZiAoIW1haW5Eb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZnJhbWVWaWV3
ID0gbWFrZVJlZlB0cihwYWdlLm1haW5GcmFtZSgpLnZpZXcoKSk7CiAgICAgaWYgKCFmcmFtZVZp
ZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBEb24ndCB0YWtlIHNhbXBsZXMgaWYgdGhlIGxheWVyIHRyZWUgaXMg
c3RpbGwgZnJvemVuLgogICAgIGlmIChmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBEb24ndCBhdHRlbXB0IHRvIGhpdCB0ZXN0IG9yIHNhbXBsZSBpZiB3ZSBkb24ndCBoYXZl
IGFueSBjb250ZW50IHlldC4KICAgICBpZiAoIWZyYW1lVmlldy0+aXNWaXN1YWxseU5vbkVtcHR5
KCkgfHwgIWZyYW1lVmlldy0+aGFzQ29udGVudGZ1bERlc2NlbmRhbnRzKCkgfHwgIUNvbnRlbnRm
dWxQYWludENoZWNrZXI6OnF1YWxpZmllc0ZvckNvbnRlbnRmdWxQYWludCgqZnJhbWVWaWV3KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIERlY3JlYXNlIHRoZSB3aWR0aCBieSBvbmUgcGl4ZWwgc28gdGhhdCB0aGUg
bGFzdCBzYW1wbGUgaXMgd2l0aGluIGJvdW5kcyBhbmQgbm90IG9mZi1ieS1vbmUuCiAgICAgYXV0
byBmcmFtZVdpZHRoID0gZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCkgLSAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCA0NzM3Y2RhYTg1MDU3OTViZGNk
M2RmZTE2ODJkNzkzZGE4ZTQ2ZWI5Li4zYzJhYzgzZmVmZjMyODRjY2IyNmZmY2MyN2RkMTZlOWE0
MGQxMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAt
MzAzLDcgKzMwMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHNuYXBzaG90Q2FudmFzKEhU
TUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBDYW52YXNSCiAgICAgaWYgKCFyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCkuc3RyaW5nOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYg
YXJndW1lbnRzKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNj
cmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAg
ICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90Tm9kZSht
X3BhZ2UubWFpbkZyYW1lKCksICpub2RlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoc25h
cHNob3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gc25hcHNob3QtPnRvRGF0
YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJM
KCJpbWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhdXRv
KiBpbWFnZURhdGEgPSBKU0ltYWdlRGF0YTo6dG9XcmFwcGVkKHZtLCBwb3NzaWJsZVRhcmdldCkp
IHsKQEAgLTM3MSwxNCArMzcxLDE0IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNo
b3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJj
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IEludFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZm
ZXIoKSwgc291cmNlUmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAoYXV0byogaW1hZ2VCaXRtYXAgPSBKU0ltYWdlQml0bWFwOjp0b1dyYXBwZWQodm0sIHBv
c3NpYmxlVGFyZ2V0KSkgewogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9u
dGVuZHMoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFn
ZUJpdG1hcC0+YnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBjb250ZXh0
ID0gY2FudmFzUmVuZGVyaW5nQ29udGV4dCh2bSwgcG9zc2libGVUYXJnZXQpKSB7CiAgICAgICAg
ICAgICBhdXRvJiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXNCYXNlKCk7CkBAIC00MDUsNyArNDA1
LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAgIC8vIElmIG5vIHRhcmdl
dCBpcyBwcm92aWRlZCwgY2FwdHVyZSBhbiBpbWFnZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICAg
ICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludDo6emVybygpLCBtX3BhZ2UubWFpbkZyYW1l
KCkudmlldygpLT5zaXplRm9yVmlzaWJsZUNvbnRlbnQoKSk7CiAgICAgICAgICAgICBpZiAoYXV0
byBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0KG1fcGFnZS5tYWluRnJhbWUo
KSwgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykpCi0gICAgICAg
ICAgICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RG
OjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgICAgICAgICAgICAgZGF0
YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YVVS
TC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3Rl
Ym9hcmRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4
dC5oCmluZGV4IGExMGM2MzZlZmRmMjMyNzE0ZTgzZDJjZmRjYjBhZjY0YWI2NGFlZjcuLjRlYjRi
ZDYyYTBhMzY5NWM2NmM1NTMwMTFlMmExMDZkMWQ3MThmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQgZmluYWwgOiBwdWJsaWMgUGFz
dGVib2FyZENvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdl
SUQgPSBXVEY6Om51bGxvcHQpCisgICAgUGFnZVBhc3RlYm9hcmRDb250ZXh0KE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQYXN0ZWJv
YXJkQ29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShwYWdlSUQpKQogICAgIHsK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgflBhZ2VQYXN0ZWJvYXJkQ29udGV4dCgp
IHsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4gY3Jl
YXRlKE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVhdGUoT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFnZVBhc3RlYm9hcmRDb250ZXh0PihXVEZNb3ZlKHBhZ2VJ
RCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VF
bnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuY3BwCmluZGV4
IGRiNTg2ZjMyZmIzYjA1NmEzNGFlMDFhMDlhZThhNmQyNmZhOTM4M2EuLmRlNzg2NzZkYjg5YTg2
NDM4ZGM2MzY4MjI3ZWI3OWFmNjJiZGUzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmNwcApAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxQZXJmb3JtYW5jZUVudHJ5
OjpUeXBlPiBQZXJmb3JtYW5jZUVudHJ5OjpwYXJzZUVudHJ5VHlwZVN0cmluZyhjb25zdCBTdAog
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFR5cGU+KFR5cGU6OlBhaW50KTsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VMb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VM
b2dnaW5nLmNwcAppbmRleCBjNjg0OTQ1YTgwZTA0MGE2N2Y0MTMwMjg3NDIwNjcxODE3NGNkZmQw
Li4xZDVlY2ViYTU3Y2U0ZTI2YTQzZjQwZTBiY2U3NmUzYmZiOTA0N2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZUxvZ2dpbmc6OmRpZFJlYWNoUG9pbnRPZkludGVyZXN0KFBvaW50T2ZJbnRl
cmVzdCBwb2kpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFBlcmZvcm1hbmNlTG9nZ2lu
Zzo6Z2V0UGxhdGZvcm1NZW1vcnlVc2FnZVN0YXRpc3RpY3MoSGFzaE1hcDxjb25zdCBjaGFyKiwg
c2l6ZV90PiYpIHsgfQotT3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5
c2ljYWxGb290cHJpbnQoKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KK09wdGlvbmFsPHVpbnQ2
NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50KCkgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1vbml0b3IuY3BwCmluZGV4IDg5ODYyMjRjYzNlOTlhMjg5MTUzYzUyZDY5NjRhMDc3YzhjZTkx
MTEuLjBhNmQyMDM5OWE3NjIyZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZkNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUGVy
Zm9ybWFuY2VNb25pdG9yOjpQZXJmb3JtYW5jZU1vbml0b3IoUGFnZSYgcGFnZSkKIAogdm9pZCBQ
ZXJmb3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIHsKLSAgICBtX3Bv
c3RMb2FkQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RvcCgpOwogICAg
IG1fcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VUaW1lci5zdG9wKCk7CiB9CkBAIC05Miw3ICs5Miw3
IEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2FkKCkKIHsKICAgICAvLyBP
bmx5IGRvIHBvc3QtbG9hZCBDUFUgdXNhZ2UgbWVhc3VyZW1lbnQgaWYgdGhlcmUgaXMgYSBzaW5n
bGUgUGFnZSBpbiB0aGUgcHJvY2VzcyBpbiBvcmRlciB0byByZWR1Y2Ugbm9pc2UuCiAgICAgaWYg
KG1fcGFnZS5zZXR0aW5ncygpLmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgp
ICYmIG1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcG9zdExvYWRD
UFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRpbWVyLnN0YXJ0T25lU2hv
dChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwogICAgIH0KIApAQCAtMTA4LDcgKzEwOCw3IEBA
IHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjphY3Rpdml0eVN0YXRlQ2hhbmdlZChPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkCiAKICAgICAvLyBNZWFzdXJlIENQVSB1c2FnZSBvZiBw
YWdlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciB2aXNpYmxlLgogICAgIGlmIChtX3BhZ2Uuc2V0
dGluZ3MoKS5pc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJlbWVudEVuYWJsZWQoKSAm
JiB2aXNpYmlsaXR5Q2hhbmdlZCkgewotICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGlt
ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChuZXdTdGF0ZSAmIEFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSkKICAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZVRpbWVyLnN0b3Ao
KTsKICAgICAgICAgZWxzZSBpZiAobV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpCkBAIC0x
NjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQb3N0TG9hZFJlc291cmNl
VGhyZXNob2xkKFBhZ2UmIHBhZ2UsIFJlcG9ydGluZ1JlYXNvbgogdm9pZCBQZXJmb3JtYW5jZU1v
bml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCkKIHsKICAgICBpZiAoIW1fcGFnZS5pc09u
bHlOb25VdGlsaXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgUGVyZm9ybWFuY2VN
b25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdNZW1vcnlVc2FnZSgpCiB2b2lkIFBlcmZv
cm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2UoKQogewogICAg
IGlmICghbV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpIHsKLSAgICAgICAgbV9wb3N0QmFj
a2dyb3VuZGluZ0NQVVRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcG9zdEJhY2tncm91
bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzdHJpbmdGb3JDUFVT
YW1wbGluZ0FjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQVVMKIHZvaWQgUGVyZm9ybWFu
Y2VNb25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZv
ckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCiB7CiAgICAgaWYgKCFtX3BhZ2UuaXNPbmx5Tm9u
VXRpbGl0eVBhZ2UoKSkgewotICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gV1RG
OjpudWxsb3B0OworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1lID0gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBQ
ZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0
eVN0YXRlRm9yQ1BVU2FtcGwKIAogICAgIE9wdGlvbmFsPENQVVRpbWU+IGNwdVRpbWUgPSBDUFVU
aW1lOjpnZXQoKTsKICAgICBpZiAoIWNwdVRpbWUpIHsKLSAgICAgICAgbV9wZXJBY3Rpdml0eVN0
YXRlQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wZXJBY3Rpdml0eVN0YXRlQ1BV
VGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgKaW5kZXggNzNj
MGY3YWRlY2MwYzQ2MWU2YmM4Nzg0YjhiMzJhNWQxYWNjYzE3Zi4uYjBlNjIyNjUzODFiZmMzYmUy
NDkxNWY1NDM0MjIxZmFiYjE1Y2JhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nKE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBMb2FkVGltaW5nJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiwgY29uc3QgRG9jdW1lbnRUaW1pbmcmLCBjb25zdCBTZWN1cml0eU9yaWdp
biYsIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlKTsKIAotICAgIGRvdWJsZSBtaWxsaXNlY29uZHNT
aW5jZU9yaWdpbihNb25vdG9uaWNUaW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiB0aW1lT3Jp
Z2luID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBkb3VibGUgbWlsbGlzZWNvbmRzU2luY2VP
cmlnaW4oTW9ub3RvbmljVGltZSwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZU9yaWdpbiA9
IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBzYW1lT3JpZ2luQ2hlY2tGYWlscygpIGNv
bnN0OwogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmluZGV4IGU5ZDMwYzdjMDY2
MTgxNzdjYmFiMDRlMzViNzU3MzVkYzI5MWFkMWYuLjZiMmJjMWJkYjM4YmUwNTQzZjIwZDUxZDIw
MDk0NGIzZjU0N2Y2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpCiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFdmVudHNFbmFibGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJsZWQudmFsdWVPcihzY3Jl
ZW5IYXNUb3VjaERldmljZSgpKTsKKyAgICByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJsZWQudmFs
dWVfb3Ioc2NyZWVuSGFzVG91Y2hEZXZpY2UoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBmNDQ5ZmM3MGRmNTc4OGVmZWQwYzhlZTRiNjNl
MmE1NzkyYWY2MDlkLi42YjY5NmQ0YzBkYjM0OGIwODcxY2FhMzE5ZjllOThkOTZhYzZhZDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBA
IFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICBtX2Rv
bWFpbiA9IG1fZGF0YS5ob3N0OwogCiAgICAgaWYgKG1fZGF0YS5wb3J0ICYmIFdURjo6aXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKG1fZGF0YS5wb3J0LnZhbHVlKCksIG1fZGF0YS5wcm90b2NvbCkp
Ci0gICAgICAgIG1fZGF0YS5wb3J0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2RhdGEucG9y
dCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJp
dHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBtX2NhbkxvYWRMb2NhbFJl
c291cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbigpCi0gICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygp
LCBXVEY6Om51bGxvcHQgfQorICAgIDogbV9kYXRhIHsgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJp
bmcoKSwgc3RkOjpudWxsb3B0IH0KICAgICAsIG1fZG9tYWluIHsgZW1wdHlTdHJpbmcoKSB9CiAg
ICAgLCBtX2lzVW5pcXVlIHsgdHJ1ZSB9CiAgICAgLCBtX2lzUG90ZW50aWFsbHlUcnVzdHdvcnRo
eSB7IGZhbHNlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApp
bmRleCBlZWQzYTMyMGYzMjc5NzY3ZjNjN2Q5N2VmYTI0NTdjMzNiNWM1ZWZhLi5hMDBkYWM0Nzkw
ZWUyZTk1NWFlMmZlMmNmYzY1ZjBhNDBkYTgzNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBTZWN1cml0eU9y
aWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UocHJvdG9jb2wsICJmaWxlIikpCiAgICAgICAgIHJldHVybiAiZmlsZV9fMCJf
czsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIs
IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0ZXIs
IHBvcnQudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsIHNlcGFy
YXRvckNoYXJhY3RlciwgRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCksIHNlcGFy
YXRvckNoYXJhY3RlciwgcG9ydC52YWx1ZV9vcigwKSk7CiB9CiAKIE9wdGlvbmFsPFNlY3VyaXR5
T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQpAQCAtODYsMTcgKzg2LDE3IEBAIE9wdGlv
bmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBmaXJzdCBzZXBh
cmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRpZmllci5maW5kKHNl
cGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gbm90Rm91bmQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAgICAgc2l6
ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2VwYXJhdG9y
Q2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICAvLyBFbnN1cmUgdGhlcmUgd2VyZSBhdCBsZWFzdCAyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiBT
b21lIGhvc3RuYW1lcyBvbiBpbnRyYW5ldHMgaGF2ZQogICAgIC8vIHVuZGVyc2NvcmVzIGluIHRo
ZW0sIHNvIHdlJ2xsIGFzc3VtZSB0aGF0IGFueSBhZGRpdGlvbmFsIHVuZGVyc2NvcmVzIGFyZSBw
YXJ0IG9mIHRoZSBob3N0LgogICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMgYSB2YWxpZCBwb3J0IG51
bWJlciBvciBkb2Vzbid0IGV4aXN0LgogICAgIGF1dG8gcG9ydExlbmd0aCA9IGRhdGFiYXNlSWRl
bnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxOwpAQCAtMTA0LDExICsxMDQsMTEgQEAg
T3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIoY29uc3QgU3QKIAogICAgIC8vIE5vdGhpbmcgYWZ0ZXIgdGhlIGNvbG9u
IGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNvbG9uIGlzIG5vdC4KICAgICBp
ZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRyZWF0IHBvcnQgMCBsaWtlIHRo
ZXJlIGlzIHdhcyBubyBwb3J0IHNwZWNpZmllZC4KICAgICBpZiAocG9ydCAmJiAhKnBvcnQpCi0g
ICAgICAgIHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHBvcnQgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBz
ZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5n
KHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMGY2NjI2MmE2MGNmYjc5NDUxMmY5
ZjVlZmYyOGE3MGNlZjQyZTZmOS4uOTA3OWM1YjU1MjhiMGViYjk0YjgwZDZmZTg1MzcxN2I2NDEy
MGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCkBAIC03Niw3
ICs3Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogCiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm90b2NvbC5pc051bGwoKSAmJiBob3N0
LmlzTnVsbCgpICYmIHBvcnQgPT0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcHJvdG9j
b2wuaXNOdWxsKCkgJiYgaG9zdC5pc051bGwoKSAmJiBwb3J0ID09IHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CkBAIC0x
MDgsMjEgKzEwOCwyMSBAQCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBw
cm90b2NvbDsKICAgICBkZWNvZGVyID4+IHByb3RvY29sOwogICAgIGlmICghcHJvdG9jb2wpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBob3N0OwogICAgIGRlY29kZXIgPj4gaG9zdDsK
ICAgICBpZiAoIWhvc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+
PiBwb3J0OwogICAgIGRlY29kZXIgPj4gcG9ydDsKICAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIGRhdGEgeyBXVEZNb3ZlKCpwcm90b2NvbCksIFdURk1vdmUo
Kmhvc3QpLCBXVEZNb3ZlKCpwb3J0KSB9OwogICAgIGlmIChkYXRhLmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCBz
dHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhSGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rl
c1szXSA9IHsKICAgICAgICAgICAgIGRhdGEucHJvdG9jb2wuaW1wbCgpID8gZGF0YS5wcm90b2Nv
bC5pbXBsKCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBkYXRhLmhvc3QuaW1wbCgpID8gZGF0
YS5ob3N0LmltcGwoKS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIGRhdGEucG9ydC52YWx1ZU9y
KDApCisgICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKICAgICAgICAgfTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFz
aENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaApp
bmRleCA0ZTMyMDk3ZmQ5MWZhNzMwMjY5Yzk1MWM0NjBhYTMwMGRjYTk3Mjg2Li45ZmE4MjE2ODMx
MzI5YTNhMGZkOWFiZDIxMWJhY2RmMzg0ODA3YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2lu
SGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsKICAgICAgICAgICAgIG9y
aWdpbi0+cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3RvY29sKCkuaW1wbCgpLT5oYXNo
KCkgOiAwLAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1wbCgpID8gb3JpZ2luLT5ob3N0
KCkuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVP
cigwKQorICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCkKICAgICAgICAgfTsK
ICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVz
KT4oaGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Ry
YW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RyYW5zbGF0
aW9uQ29udGV4dE1lbnVJbmZvLmgKaW5kZXggYzU0YTRlMTQ3MWVmMzIxOWNjYmM2NWMwZDFkMDBj
YjM3NmRmMDljOC4uMTIxYWZhYTgzZTU1YzAzMjNmY2IyNDFkNmMzN2U0YzQ4YWY0MjRmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250ZXh0TWVudUluZm8uaApA
QCAtNTksMjIgKzU5LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFRyYW5z
bGF0aW9uQ29udGV4dE1lbnVJbmZvPiBUcmFuc2xhdGlvbkNvbnRleHRNCiAgICAgT3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxJbnRSZWN0PiBzZWxlY3Rpb25Cb3VuZHNJblJvb3RWaWV3OwogICAgIGRl
Y29kZXIgPj4gc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldzsKICAgICBpZiAoIXNlbGVjdGlvbkJv
dW5kc0luUm9vdFZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRQb2ludD4gbG9jYXRpb25JblJv
b3RWaWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGlmICghbG9j
YXRpb25JblJvb3RWaWV3KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhbnNsYXRpb25Db250ZXh0TWVu
dU1vZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlmICghbW9kZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc2VsZWN0aW9uQm91bmRzSW5S
b290VmlldyksIFdURk1vdmUoKmxvY2F0aW9uSW5Sb290VmlldyksICptb2RlIH19OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJTY3JpcHQuaAppbmRleCAzZjJlNjU2MTU2ZGU0Y2FiMzcyZmJiZDY3M2VhZThk
ZjY2ZGRmOTEwLi44Y2Q5YzMwYzZiNmE2NGVlNjZkZjk5MzNlYjM3ODU4OGM0OThhMjVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtOTEsMzcgKzkxLDM3IEBAIE9wdGlvbmFsPFVzZXJT
Y3JpcHQ+IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PFN0cmluZz4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwogICAgIGlmICghc291cmNl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwog
ICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBhbGxv
d2xpc3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd2xpc3Q7CiAgICAgaWYgKCFhbGxvd2xpc3QpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2NrbGlzdDsKICAgICBkZWNv
ZGVyID4+IGJsb2NrbGlzdDsKICAgICBpZiAoIWJsb2NrbGlzdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9uVGltZTsKICAgICBkZWNvZGVy
ID4+IGluamVjdGlvblRpbWU7CiAgICAgaWYgKCFpbmplY3Rpb25UaW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVjdGVkRnJhbWVzOwogICAg
IGRlY29kZXIgPj4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgaWYgKCFpbmplY3RlZEZyYW1lcykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nPiB3
YWl0Rm9yTm90aWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gd2FpdEZvck5vdGlmaWNhdGlvbjsK
ICAgICBpZiAoIXdhaXRGb3JOb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7CiAg
ICAgICAgIFdURk1vdmUoKnNvdXJjZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgK
aW5kZXggYThjNDBkOWU1NmM5OTY2MWMzZjk5ZDg4YjMwNDcwZjgzYmY3M2RjOS4uY2Y2YTFjNDAz
ZjJmMGI2YzY5ZmNmM2I2YmVlNzJjZDFjZTY4NTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0
eWxlU2hlZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZl
bCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdURjo6bnVsbG9wdCkKKyAgICBV
c2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsIFZlY3Rv
cjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJsb2NrbGlzdCwgVXNlckNv
bnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2ZWws
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAg
IDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKICAgICAgICAgLCBtX2Fs
bG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggY2U3MWM2Mzg2OGYyNjI3OWM4NmVjZmRjYzZhMWQy
ODdmODhmOTJhNy4uMTRkMGM1ZjVhNTEyMDk5NzM1ZDg1MDg4NzUxMWFlZmY1MmU2OWY0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcApAQCAtMTE2
LDggKzExNiw4IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRDb250ZW50c1NpemUo
Y29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCiAKIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9u
OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBPcHRp
b25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPGRvdWJsZT4mJiBtaW5pbXVtRWZm
ZWN0aXZlRGV2aWNlV2lkdGgpCiB7Ci0gICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0gc2NhbGVG
YWN0b3IudmFsdWVPcihtX2xheW91dFNpemVTY2FsZUZhY3Rvcik7Ci0gICAgZG91YmxlIG5ld0Vm
ZmVjdGl2ZVdpZHRoID0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoLnZhbHVlT3IobV9taW5p
bXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOworICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9IHNj
YWxlRmFjdG9yLnZhbHVlX29yKG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKTsKKyAgICBkb3VibGUg
bmV3RWZmZWN0aXZlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgudmFsdWVfb3Io
bV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwogICAgIGlmIChtX3ZpZXdMYXlvdXRTaXpl
ID09IHZpZXdMYXlvdXRTaXplICYmIG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9yID09IG5ld1NjYWxl
RmFjdG9yICYmIG5ld0VmZmVjdGl2ZVdpZHRoID09IG1fbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5oCmluZGV4IDZkZjQwZWJhNTI0MTRmNWVmZTU3N2U5MDcxYWJjZWJm
NTRiNDMzNGMuLmM0NDY3OTNmOGQ3YzE3MjQ0NDZlZjg5YzdkMGI1MmQ5ODZkZmM1MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaApAQCAtNzcsNyArNzcs
NyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5b3V0U2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlld0xheW91dFNpemU7IH0KIAogICAgIGNvbnN0IEZsb2F0U2l6ZSYgbWlu
aW11bUxheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1MYXlvdXRTaXplOyB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUm
LCBPcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFs
PGRvdWJsZT4mJiBlZmZlY3RpdmVXaWR0aCA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmLCBPcHRpb25hbDxk
b3VibGU+JiYgc2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4mJiBl
ZmZlY3RpdmVXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBjb25zdCBPcHRpb25TZXQ8RGlz
YWJsZWRBZGFwdGF0aW9ucz4mIGRpc2FibGVkQWRhcHRhdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2Rpc2FibGVkQWRhcHRhdGlvbnM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldERpc2Fi
bGVkQWRhcHRhdGlvbnMoY29uc3QgT3B0aW9uU2V0PERpc2FibGVkQWRhcHRhdGlvbnM+Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1cmVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDhjMGE0MmM4NzMzNTUyZjdl
ZWFmMzg1OTZlZGZmMWI1YjJlZTdlYjUuLjUyOWY5OTY0MTBmYWNhZTYxNGQ5OGNhYzMyZjQzMjky
OTA4MTA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCkBAIC0xMzMs
NyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAieWVzIikpCiAgICAg
ICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAgICBudW1lcmljVmFsdWUgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZU9yKDApOwor
ICAgICAgICBudW1lcmljVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxp
bnQ+KHZhbHVlKS52YWx1ZV9vcigwKTsKIAogICAgIC8vIFdlIHRyZWF0IGtleSBvZiAicmVzaXph
YmxlIiBoZXJlIGFzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSByYXRoZXIgdGhhbiBzZXR0aW5nIHJl
c2l6ZWFibGUgdG8gdHJ1ZS4KICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBGaXJlZm94
LCBidXQgY291bGQgYWxzbyBiZSBoYW5kbGVkIGF0IGFub3RoZXIgbGV2ZWwuCkBAIC0xODUsOCAr
MTg1LDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJlcyhjb25zdCBTdHJpbmcm
IGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0dXJlcy5sb2NhdGlvbkJh
clZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0cnVlOwogCi0gICAgZmxv
YXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwg
c2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7IC8vIGRlZmF1bHQgaGVy
ZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUKLSAgICBmbG9hdCBoZWln
aHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWlnaHQiLCAxMDAsIHNjcmVl
bkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNh
bWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IHdpZHRoID0g
ZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAxMDAsIHNjcmVlbkF2YWls
YWJsZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJv
bSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0IGhlaWdodCA9IGZsb2F0
RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxl
UmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBm
cmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVyZXMud2lkdGggPSB3aWR0
aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xOTQsMTYgKzE5NCwxNiBAQCBX
aW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlhbG9nRmVh
dHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBmbG9hdEZlYXR1cmUoZmVh
dHVyZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVjdC54KCksIHNjcmVlbkF2
YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVzLnkgPSBmbG9hdEZlYXR1
cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSwgc2Ny
ZWVuQXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAgaWYgKGJvb2xGZWF0dXJl
KGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVPcih0cnVlKSkgeworICAgIGlmIChib29sRmVh
dHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlX29yKHRydWUpKSB7CiAgICAgICAgIGlm
ICghZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBzY3JlZW5BdmFpbGFibGVS
ZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyOwogICAg
ICAgICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJlcy55ID0gc2NyZWVuQXZh
aWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSAtIGhlaWdodCkg
LyAyOwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVPcihmYWxzZSk7Ci0gICAgZmVhdHVyZXMuc2Nyb2xs
YmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlT3Io
dHJ1ZSk7Ci0gICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1
cmVzTWFwLCAic3RhdHVzIikudmFsdWVPcihmYWxzZSk7CisgICAgZmVhdHVyZXMucmVzaXphYmxl
ID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52YWx1ZV9vcihmYWxzZSk7
CisgICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01h
cCwgInNjcm9sbCIpLnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVzLnN0YXR1c0JhclZpc2li
bGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZhbHVlX29yKGZhbHNlKTsK
IAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVyZXNNYXAmIGZlYXR1cmVz
LCBjb25zdCBjaGFyKgogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7CiAgICAg
aWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgdmFsdWUgPSBpdC0+dmFs
dWU7CiAgICAgcmV0dXJuIHZhbHVlLmlzTnVsbCgpCkBAIC0yMjUsMTQgKzIyNSwxNCBAQCBzdGF0
aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYg
ZmVhdHVyZXMsIGNvbnN0IGNoYQogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5maW5kKGtleSk7
CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFRoZSB0
b0RvdWJsZSBmdW5jdGlvbiBkb2VzIG5vdCBvZmZlciBhIHdheSB0byB0ZWxsICIwcSIgZnJvbSBz
dHJpbmcgd2l0aCBubyBkaWdpdHMgaW4gaXQ6IEJvdGgKICAgICAvLyByZXR1cm4gdGhlIG51bWJl
ciAwIGFuZCBmYWxzZSBmb3Igb2suIEJ1dCAiMHEiIHNob3VsZCB5aWVsZCB0aGUgbWluaW11bSBy
YXRoZXIgdGhhbiB0aGUgZGVmYXVsdC4KICAgICBib29sIG9rOwogICAgIGRvdWJsZSBwYXJzZWRO
dW1iZXIgPSBpdC0+dmFsdWUudG9Eb3VibGUoJm9rKTsKICAgICBpZiAoKCFwYXJzZWROdW1iZXIg
JiYgIW9rKSB8fCBzdGQ6OmlzbmFuKHBhcnNlZE51bWJlcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHBhcnNlZE51
bWJlciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAgICByZXR1cm4gbWluOwogICAgIGlmIChw
YXJzZWROdW1iZXIgPiBtYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1BlcmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9Q
ZXJmb3JtYW5jZUxvZ2dpbmdDb2NvYS5tbQppbmRleCAyMTExNTczMmY1NDZlMGViMWQ4MjcxMDE0
YzE1NjcxYTA4MmMzODM3Li43ZDMyMzllZDcyMGUxNmU5ZmMyNGY3NWY2YzYzYjcwOWE3OGZlZDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1BlcmZvcm1hbmNlTG9nZ2lu
Z0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dn
aW5nQ29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1h
bmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKQogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVy
X3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQg
PSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3Qp
ICZ2bUluZm8sICZjb3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHZtSW5mby5waHlzX2Zvb3RwcmludDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQppbmRleCA5YmM2
ZDI5NzdlZjkxMjM4ZWZhMDE1YzZjZGMzODMxNTBhYThjMzYxLi5iN2Y4NDQ3ZTlmZWJkODYwODU0
ZWQzNTk3MzgzNzdmZDhkNzA4NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQpAQCAtMjcyLDggKzI3Miw4IEBAIHZv
aWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0TWVtb3J5RGF0YShKU0M6OlZN
KiB2bSwgUmVzb3VyY2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3Vy
cmVudEdDT3duZWRFeHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9u
ID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1l
VW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
aW5maW5pdHkoKSkpOwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50
aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJl
KCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSkpOworICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAg
KyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVf
b3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAg
ICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhl
YXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29u
ZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IDAxNzZiNGQzNTgzMDEzOWQ4MDQ5ZjRhMzAxMDhkYWFlMzE5ZGQ1OGEuLjZhZDZiMjM3Nzdl
YTYyZmFlMDc4ZjRmOGE4MzVkMmM5NmNlNjRmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYg
aGVhZGVyLCBDb250ZW50U2VjdXJpCiAgICAgICAgIG1faGFzQVBJUG9saWN5ID0gdHJ1ZTsKICAg
ICB9CiAKLSAgICBtX2NhY2hlZFJlc3BvbnNlSGVhZGVycyA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2NhY2hlZFJlc3BvbnNlSGVhZGVycyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFJGQzI2MTYs
IHNlY3Rpb24gNC4yIHNwZWNpZmllcyB0aGF0IGhlYWRlcnMgYXBwZWFyaW5nIG11bHRpcGxlIHRp
bWVzIGNhbgogICAgIC8vIGJlIGNvbWJpbmVkIHdpdGggYSBjb21tYS4gV2FsayB0aGUgaGVhZGVy
IHN0cmluZywgYW5kIHBhcnNlIGVhY2ggY29tbWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAK
aW5kZXggZDdiNzA2NmQyMTRkYTkxN2E5ZTQ3MzQ4NDkxMDQ1YmQ5NzVjYTgxZS4uMTYxNDM0ZWI5
MjJmMjRlMTE4Zjg1MDhhY2NjZjU5ZmFiYmY4MDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dC5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBhdXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRAogCiAgICAg
Ly8gRW1wdHkgZGlyZWN0aXZlIChlLmcuICI7OzsiKS4gRXhpdCBlYXJseS4KICAgICBpZiAoYnVm
ZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG5hbWVCZWdpbiA9IGJ1ZmZlci5wb3NpdGlvbigp
OwogICAgIHNraXBXaGlsZTxpc0RpcmVjdGl2ZU5hbWVDaGFyYWN0ZXI+KGJ1ZmZlcik7CkBAIC0z
ODIsNyArMzgyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYXV0byBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJzZUQKICAgICBpZiAobmFtZUJlZ2lu
ID09IGJ1ZmZlci5wb3NpdGlvbigpKSB7CiAgICAgICAgIHNraXBXaGlsZTxpc05vdEFTQ0lJU3Bh
Y2U+KGJ1ZmZlcik7CiAgICAgICAgIG1fcG9saWN5LnJlcG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZl
KFN0cmluZyhuYW1lQmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gbmFtZUJlZ2luKSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgYXV0byBuYW1lID0gU3RyaW5nKG5hbWVCZWdpbiwgYnVmZmVyLnBvc2l0aW9u
KCkgLSBuYW1lQmVnaW4pOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFy
c2VECiAgICAgaWYgKCFza2lwRXhhY3RseTxpc0FTQ0lJU3BhY2U+KGJ1ZmZlcikpIHsKICAgICAg
ICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAgICAgICAgbV9wb2xpY3ku
cmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoU3RyaW5nKG5hbWVCZWdpbiwgYnVmZmVyLnBvc2l0
aW9uKCkgLSBuYW1lQmVnaW4pKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBza2lwV2hpbGU8aXNBU0NJSVNw
YWNlPihidWZmZXIpOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2VE
CiAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKSB7CiAgICAgICAgIG1fcG9saWN5LnJlcG9ydElu
dmFsaWREaXJlY3RpdmVWYWx1ZUNoYXJhY3RlcihuYW1lLCBTdHJpbmcodmFsdWVCZWdpbiwgYnVm
ZmVyLmVuZCgpIC0gdmFsdWVCZWdpbikpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFRoZSBkaXJlY3Rp
dmUtdmFsdWUgbWF5IGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAppbmRleCBi
Yzk4MmJlM2I2YTEzMTgxZjIzZjhjZTMwNzI3ZjQ3Y2JjY2NhZGFhLi5mM2JiMWE3YmI5ZDNiMjkz
MjQzNmIzYzFjOWVlNTNjYjIyM2JkOGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaApA
QCAtOTEsMTYgKzkxLDE2IEBAIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycz4gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkCiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4gaGVhZGVyc1NpemU7CiAgICAg
aWYgKCFoZWFkZXJzU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpoZWFkZXJz
U2l6ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaGVhZGVyOwogICAgICAgICBk
ZWNvZGVyID4+IGhlYWRlcjsKICAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlwZT4gaGVhZGVyVHlwZTsK
ICAgICAgICAgZGVjb2RlciA+PiBoZWFkZXJUeXBlOwogICAgICAgICBpZiAoIWhlYWRlclR5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaGVhZGVycy5tX2hlYWRlcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKFdURk1vdmUoKmhlYWRlciksIFdURk1vdmUoKmhlYWRlclR5cGUpKSk7CiAgICAgfQogICAg
IGhlYWRlcnMubV9oZWFkZXJzLnNocmlua1RvRml0KCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgT3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWQKICAgICBPcHRpb25hbDxpbnQ+IGh0dHBTdGF0dXNDb2RlOwog
ICAgIGRlY29kZXIgPj4gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFodHRwU3RhdHVzQ29kZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBoZWFkZXJzLm1faHR0cFN0YXR1c0NvZGUgPSAqaHR0cFN0YXR1c0NvZGU7CiAKICAg
ICByZXR1cm4gaGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5kZXggNmEzMzZiNWEzZTE2
MmIzYzIxZmEyNTk2OTM1NjVlNzI0NTQzYmVjOC4uYjg3ZDg1YWZkMTM3NTQ5NDM3NDU2ZmRhYzM0
Y2JiNjkzMDJlNTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAgLTIwMSwxMCArMjAxLDEw
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdDo6cGFyc2UoU3RyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3VyY2U+IENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlU291cmNlKFN0cmluZ1BhcnNpbmdC
dWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmIChza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNlKGJ1ZmZlciwgIidub25l
JyIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgU291cmNlIHNvdXJjZTsKIApAQCAtMjQwLDcgKzI0MCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgIC8vICAgICBeCiAgICAgICAgIGF1dG8gaG9zdCA9
IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBidWZmZXIucG9zaXRp
b24oKSB9KTsKICAgICAgICAgaWYgKCFob3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc291cmNl
Lmhvc3QgPSBXVEZNb3ZlKCpob3N0KTsKICAgICAgICAgcmV0dXJuIHNvdXJjZTsKQEAgLTI1MSwx
MSArMjUxLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgIC8vICAgICBeICAg
ICAgICAgICAgXiAgICBeCiAgICAgICAgIGF1dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJz
aW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBidWZmZXIucG9zaXRpb24oKSB9KTsKICAgICAgICAgaWYg
KCFob3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBwYXRoID0gcGFyc2VQYXRoKGJ1ZmZl
cik7CiAgICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNvdXJjZS5ob3N0
ID0gV1RGTW92ZSgqaG9zdCk7CiAgICAgICAgIHNvdXJjZS5wYXRoID0gV1RGTW92ZSgqcGF0aCk7
CkBAIC0yNjgsNyArMjY4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6U291cmMKICAgICAgICAgICAg
IC8vICAgICAgIF4KICAgICAgICAgICAgIGF1dG8gc2NoZW1lID0gcGFyc2VTY2hlbWUoU3RyaW5n
UGFyc2luZ0J1ZmZlciB7IGJlZ2luLCBidWZmZXIucG9zaXRpb24oKSB9KTsKICAgICAgICAgICAg
IGlmICghc2NoZW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc291cmNlLnNj
aGVtZSA9IFdURk1vdmUoKnNjaGVtZSk7CiAgICAgICAgICAgICByZXR1cm4gc291cmNlOwpAQCAt
MjgyLDkgKzI4Miw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgICAgICAgICAg
fHwgIXNraXBFeGFjdGx5KGJ1ZmZlciwgJzonKQogICAgICAgICAgICAgICAgIHx8ICFza2lwRXhh
Y3RseShidWZmZXIsICcvJykKICAgICAgICAgICAgICAgICB8fCAhc2tpcEV4YWN0bHkoYnVmZmVy
LCAnLycpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmIChidWZmZXIuYXRFbmQo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNvdXJjZS5zY2hlbWUgPSBXVEZN
b3ZlKCpzY2hlbWUpOwogCkBAIC0zMDQsMTkgKzMwNCwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpT
b3VyYwogICAgICAgICAvLyBzY2hlbWU6Ly9ob3N0L3BhdGggfHwgc2NoZW1lOi8vaG9zdDpwb3J0
L3BhdGgKICAgICAgICAgLy8gICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAg
IF4KICAgICAgICAgaWYgKGJ1ZmZlci5wb3NpdGlvbigpID09IGJlZ2luSG9zdCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGJlZ2luUGF0aCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIH0KIAogICAg
IGF1dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBi
ZWdpblBvcnQgPyBiZWdpblBvcnQgOiBiZWdpblBhdGggfSk7CiAgICAgaWYgKCFob3N0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGJlZ2luUG9ydCkgewogICAgICAgICBhdXRvIHBvcnQgPSBwYXJzZVBvcnQoU3Ry
aW5nUGFyc2luZ0J1ZmZlciB7IGJlZ2luUG9ydCwgYmVnaW5QYXRoIH0pOwogICAgICAgICBpZiAo
IXBvcnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzb3VyY2UucG9ydCA9IFdURk1vdmUoKnBvcnQp
OwogICAgIH0KQEAgLTMyNCw3ICszMjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3VyYwogICAg
IGlmIChiZWdpblBhdGggIT0gYnVmZmVyLmVuZCgpKSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IHBh
cnNlUGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5QYXRoLCBidWZmZXIuZW5kKCkgfSk7
CiAgICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNvdXJjZS5wYXRoID0g
V1RGTW92ZSgqcGF0aCk7CiAgICAgfQpAQCAtMzQxLDE3ICszNDEsMTcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXMKICAgICBBU1NFUlQoYnVmZmVyLnBvc2l0aW9uKCkgPD0gYnVmZmVyLmVuZCgp
KTsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW4gPSBidWZm
ZXIucG9zaXRpb24oKTsKIAogICAgIGlmICghc2tpcEV4YWN0bHk8aXNBU0NJSUFscGhhPihidWZm
ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgc2tpcFdoaWxlPGlzU2NoZW1lQ29udGludWF0aW9uQ2hhcmFjdGVyPihi
dWZmZXIpOwogCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTdHJp
bmcoYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW4pOwogfQpAQCAtMzY1LDcgKzM2NSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+CiAgICAgQVNTRVJUKGJ1ZmZlci5wb3NpdGlvbigp
IDw9IGJ1ZmZlci5lbmQoKSk7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBI
b3N0IGhvc3Q7CiAKQEAgLTM3NiwxOSArMzc2LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+
CiAgICAgICAgICAgICByZXR1cm4gaG9zdDsKIAogICAgICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1
ZmZlciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaG9zdEJlZ2luID0gYnVm
ZmVyLnBvc2l0aW9uKCk7CiAKICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5p
bmcoKSkgewogICAgICAgICBpZiAoIXNraXBFeGFjdGx5PGlzSG9zdENoYXJhY3Rlcj4oYnVmZmVy
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNraXBXaGlsZTxpc0hvc3RDaGFyYWN0ZXI+KGJ1ZmZl
cik7CiAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkgJiYgIXNr
aXBFeGFjdGx5KGJ1ZmZlciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVChi
dWZmZXIuYXRFbmQoKSk7CkBAIC00MjMsNyArNDIzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6UG9y
dD4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCiAgICAgaWYgKGJ1ZmZlci5h
dEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPT0gMSAm
JiAqYnVmZmVyID09ICcqJykgewogICAgICAgICBQb3J0IHBvcnQ7CkBAIC00MzUsMTIgKzQzNSwx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIHNraXBXaGlsZTxpc0FTQ0lJRGlnaXQ+
KGJ1ZmZlcik7CiAgICAgCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW47Ci0gICAgYXV0byBwb3J0SW50
ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oeyBiZWdpbiwgbGVuZ3RoIH0pLnZhbHVlT3Io
MCk7CisgICAgYXV0byBwb3J0SW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oeyBiZWdp
biwgbGVuZ3RoIH0pLnZhbHVlX29yKDApOwogICAgIGlmICghcG9ydEludGVnZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBQb3J0IHBvcnQ7CiAgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2VyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQ0OTA3ZjkxNDJiM2Qz
MzM3MGY0NzA1N2YxMGI0OWM1MDM4MTkzZmMuLmI2YTljMzZkMTJlYmRkOTYwYWM2NzcwOWYwZDE3
NjRjMjVlZjhjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxl
ckd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlm
IChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6
Q29weTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCmluZGV4IDJmMDY1
NTgzNTAzNDIzZDVkZDI1ZDc4Mzg4N2JjMmUwZmE0YWM3ODcuLmY5YTQzMGExZGJkZTVkYmYzZDBh
YWMxODBkNWE0ZjBmN2FmMmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhh
bmRsZXJJT1MubW0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxF
dmVudChXZWJFdmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM+IHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFp
blRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVh
ZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYgKHdoZWVsRXZlbnQuaXNH
ZXN0dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICBlbHNlIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2U6OkNoYW5nZWQgfHwgd2hlZWxFdmVudC5tb21lbnR1bVBoYXNlKCkgPT0gUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2U6OkNoYW5nZWQpIHsKICAgICAgICAgaWYgKG1fd2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGUgJiYgKm1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPT0gV2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU6Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcHJvY2Vzc2luZ1N0ZXBzID0geyBX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3Bh
dGNoIH07CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0U2VsZWN0
aW9uQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFAKIHZvaWQg
RXZlbnRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Nyb2xsKCkKIHsKICAgICBtX2lzQXV0
b3Njcm9sbGluZyA9IGZhbHNlOwotICAgIG1faW5pdGlhbFRhcmdldEF1dG9zY3JvbGxQb3NpdGlv
bkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9p
bml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVkUm9vdFZpZXdDb29yZGlu
YXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5zdG9wQXV0
b3Njcm9sbFRpbWVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGlu
dXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGlu
dXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAppbmRleCAwMmU1ZDQ4OWNhYjQzZjgzOTMz
M2Q0OWJkMjRhNTk2OTI5ODk0N2MzLi5mZTFkZjZmNjkxYjlkMTRkYjkzYzY1YmViM2M3NzFhNGRi
OTU2Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNh
Z2VUaHJlYWRMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9SZXNvdXJj
ZVVzYWdlVGhyZWFkTGludXguY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBSZXNvdXJjZVVz
YWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdl
RGF0YSYgZGEKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgdGhyZWFkSWRlbnRp
ZmllciA9IGtub3duV29ya2VyVGhyZWFkcy5nZXQoaWQpOwogICAgICAgICAgICAgYm9vbCBpc1dv
cmtlclRocmVhZCA9ICF0aHJlYWRJZGVudGlmaWVyLmlzRW1wdHkoKTsKLSAgICAgICAgICAgIFN0
cmluZyBuYW1lID0gaXQudmFsdWUubmFtZS52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpOworICAgICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBpdC52YWx1ZS5uYW1lLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICAgICAgVGhyZWFkQ1BVSW5mbzo6VHlwZSB0eXBlID0gKGlzV29ya2VyVGhyZWFk
IHx8IGlzV2ViS2l0VGhyZWFkKGlkLCBuYW1lKSkgPyBUaHJlYWRDUFVJbmZvOjpUeXBlOjpXZWJL
aXQgOiBUaHJlYWRDUFVJbmZvOjpUeXBlOjpVbmtub3duOwogICAgICAgICAgICAgZGF0YS5jcHVU
aHJlYWRzLmFwcGVuZChUaHJlYWRDUFVJbmZvIHsgbmFtZSwgdGhyZWFkSWRlbnRpZmllciwgY3B1
VXNhZ2UsIHR5cGUgfSk7CiAgICAgICAgIH0KQEAgLTMxNSw4ICszMTUsOCBAQCB2b2lkIFJlc291
cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdE1lbW9yeURhdGEoSlNDOjpWTSogdm0sIFJl
c291cmNlVXNhZ2VEYQogCiAgICAgZGF0YS50b3RhbEV4dGVybmFsU2l6ZSA9IGN1cnJlbnRHQ093
bmVkRXh0ZXJuYWw7CiAKLSAgICBkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEu
dGltZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmly
ZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5
KCkpKTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1w
ICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVl
T3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAg
ICBkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhl
YXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29u
ZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50
aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxB
Y3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1t
CmluZGV4IGM0MGUzMDFhYmU4MWYwMWNjMjQ3MTc4Mjk1NTMzZTgzNjM4OTY4MjIuLjU4NjQ5MzE5
NjI2YjBmY2ZlMmEyN2RlNWMyNmZiYWM4M2Y1ZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zKERy
YWdBcHBsaWNhdGlvbkZsYWdzOjpJc01vZGFsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgbWF5Q29udGFpblVS
TDsKICAgICBpZiAoY2FuTG9hZERhdGFGcm9tRHJhZ2dpbmdQYXN0ZWJvYXJkKCkpCkBAIC03Niwx
MiArNzYsMTIgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBtYXlDb250YWluVVJM
ID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFtYXlD
b250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1Byb21pc2UoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
bV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3MoKS5jb250YWluc0FsbCh7
IERyYWdBcHBsaWNhdGlvbkZsYWdzOjpIYXNBdHRhY2hlZFNoZWV0LCBEcmFnQXBwbGljYXRpb25G
bGFnczo6SXNTb3VyY2UgfSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkNvcHk7
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXplKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA4NjQ2NWY4MDVl
MjA1MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5YTQyNDdkLi5kMDE5NTQzNzQ4YTNkMjU2MTJjNDgzOTA2
MTFhOTNkMmViYzAwMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVu
dEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OndoZWVsRXZlbnQo
TlNFdmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+
IHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVh
ZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJs
b2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9
PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCB8fCB3aGVlbEV2ZW50Lm1vbWVudHVt
UGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCkgewotICAgICAgICBp
ZiAobV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZlbnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5n
KCkgJiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZS52YWx1ZU9yKFdoZWVsU2Nyb2xsR2VzdHVy
ZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5n
KQorICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZlbnRHZXN0dXJlc0JlY29t
ZU5vbkJsb2NraW5nKCkgJiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZS52YWx1ZV9vcihXaGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
OjpOb25CbG9ja2luZykKICAgICAgICAgICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVu
dFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwczo6TWFpblRocmVhZEZvck5vbkJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9Owog
ICAgIH0KICAgICByZXR1cm4gaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBwcm9jZXNzaW5n
U3RlcHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9wbGF5c3RhdGlvbi9SZXNv
dXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9wbGF5
c3RhdGlvbi9SZXNvdXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwCmluZGV4IGUwOGJlMzgx
NTI4NWM1MzdiN2UyYTc1M2M4ZTgxNDk0NWE2Mjg5NDIuLmRiOTU4MGRlMmU3NTlhMWUwMTliZGM1
MjU1MDA5NWEwM2NhNDc4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcGxheXN0
YXRpb24vUmVzb3VyY2VVc2FnZVRocmVhZFBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3BsYXlzdGF0aW9uL1Jlc291cmNlVXNhZ2VUaHJlYWRQbGF5U3RhdGlvbi5jcHAK
QEAgLTY5LDggKzY5LDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxl
Y3RNZW1vcnlEYXRhKEpTQzo6Vk0qIHZtLCBSZXNvdXJjZVVzYWdlRGEKIAogICAgIGRhdGEudG90
YWxFeHRlcm5hbFNpemUgPSBjdXJyZW50R0NPd25lZEV4dGVybmFsOwogCi0gICAgZGF0YS50aW1l
T2ZOZXh0RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rp
dml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RnVs
bENvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxi
YWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rp
b24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRp
bWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0
YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxG
aXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmlu
aXR5KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAppbmRleCA5NmYxZmIxZTVhMmJiNjQ1ZmYxMjczMzczMjhiN2RiNzAxZmNhNTk1Li4xMzlmNGU3
NjUxZGM4ODExNzA0ZWMzNGVmNDZiOTMxNGY4MWNjZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
RnJhbWVTY3JvbGxpbmdOb2RlU3RhdGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJCiAgICAgaWYgKGF1
dG8gdmlzdWFsT3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LnZpc3VhbFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KCkpCiAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRPdmVycmlkZVZpc3VhbFZpZXdw
b3J0U2l6ZShGbG9hdFNpemUodmlzdWFsT3ZlcnJpZGVSZWN0LnZhbHVlKCkuc2l6ZSgpKSk7CiAg
ICAgZWxzZQotICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0T3ZlcnJpZGVWaXN1YWxWaWV3
cG9ydFNpemUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldE92
ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKHN0ZDo6bnVsbG9wdCk7CiAKICAgICBmcmFtZVNjcm9s
bGluZ05vZGUuc2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZShmcmFtZVZpZXcu
Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5k
ZXggMzdiNjYzN2I0ODYwZDk4Y2UzODA2OGY1MWIzMWZlY2U2OGFjNmQxNS4uZThlMTY1ZWRlMzM3
NGMzYzVkYmM1M2Y5NDkxZjg5MTM4N2NjNjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC04MCw3ICs4
MCw3IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRC
ZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiB7CiAgICAgTGF5b3V0VHlwZSBkaWZmZXJl
bmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmlnaW5PZmZzZXQ7CiAgICAg
aWYgKCFkaWZmZXJlbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgc2VhcmNoU3RhcnRPZmZzZXQgPSAw
OwogICAgIHNpemVfdCBpdGVyYXRpb24gPSAxOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBP
cHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5k
RGVzdGluYXRpb24oY29uCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgU2l6ZVR5cGUsIHR5cGVuYW1lIExheW91dFR5
cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oCmluZGV4IGQxNjBjOTViYzQzZmY5ODFjMGE0N2JmMzYwM2M0MDA2ZGNlZTMx
Y2MuLjFlY2ZhZDE2ZTEzOGUwZmJjNTkxOGZkMjJiN2FiZGY2NDdiNjczNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
CkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0c0luZm8gewogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gT3V0cHV0VHlwZSBjb252ZXJ0VW5pdHMoZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFNpemVUeXBlPgotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWdu
ZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZp
ZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9j
aXR5LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25h
cHBpbmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxVbml0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywg
Y29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25P
ZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlv
bkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogfTsKIAogdXNp
bmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25hcE9mZnNldHNJbmZvPExh
eW91dFVuaXQsIExheW91dFJlY3Q+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBlNmFmOGYzOTY5M2ZjN2JkNjhhY2ZiMDdkNDY5OWFm
ZjZmZTRlNTRlLi43NDcxNDgyY2Y0YTNlMDUzMzg2YmIwOGU4N2I1YjM2YTVlYzM2OWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAt
ODcsNyArODcsNyBAQCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gU2Nyb2xs
aW5nVHJlZTo6Y29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKAogI2lmIEVOQUJMRShXSEVFTF9F
VkVOVF9SRUdJT05TKQogICAgIGF1dG8gZXZlbnRMaXN0ZW5lclR5cGVzID0gZXZlbnRMaXN0ZW5l
clJlZ2lvblR5cGVzRm9yUG9pbnQocG9zaXRpb24pOwogICAgIGlmIChldmVudExpc3RlbmVyVHlw
ZXMuY29udGFpbnMoRXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBhc3NpdmVXaGVlbCkpIHsK
LSAgICAgICAgaWYgKG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZS52YWx1ZU9yKFdoZWVsU2Nyb2xs
R2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJs
b2NraW5nKQorICAgICAgICBpZiAobV90cmVlU3RhdGUuZ2VzdHVyZVN0YXRlLnZhbHVlX29yKFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU6Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWlu
VGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAKICAgICAgICAgcmV0dXJu
IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNw
YXRjaCB9OwpAQCAtMTEwLDcgKzExMCw3IEBAIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBTY3JvbGxpbmdUcmVlOjpkZXRlcm1pbmVXaGVlbEV2ZW50UHJvY2Vzc2luCiAgICAg
ICAgIHJldHVybiBsYXRjaGVkTm9kZUFuZFN0ZXBzLT5wcm9jZXNzaW5nU3RlcHM7CiAgICAgfQog
ICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgfHwgd2hlZWxFdmVudC5pc05vbkdl
c3R1cmVFdmVudCgpKQotICAgICAgICBtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0gY29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBz
KHdoZWVsRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IDU0
MGM4MWRiYjliMDhhN2I5OTNmYWZiMGZlMTZlMmIyMTRmYjI5YzYuLjIyMDNjZTJmMzBiMmVjZTZm
NTJiZmJjNTNjNDY5YmZkNzVlN2RlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNvbnN0CiAKIEZsb2F0UmVj
dCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpsYXlvdXRWaWV3cG9ydEZvclNjcm9s
bFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBz
Y2FsZSwgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGZpeGVkQmVoYXZpb3IpIGNvbnN0
CiB7Ci0gICAgRmxvYXRTaXplIHZpc3VhbFZpZXdwb3J0U2l6ZSA9IG1fb3ZlcnJpZGVWaXN1YWxW
aWV3cG9ydFNpemUudmFsdWVPcihzY3JvbGxhYmxlQXJlYVNpemUoKSk7CisgICAgRmxvYXRTaXpl
IHZpc3VhbFZpZXdwb3J0U2l6ZSA9IG1fb3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUudmFsdWVf
b3Ioc2Nyb2xsYWJsZUFyZWFTaXplKCkpOwogICAgIEZsb2F0UmVjdCB2aXNpYmxlQ29udGVudFJl
Y3QodmlzaWJsZUNvbnRlbnRPcmlnaW4sIHZpc3VhbFZpZXdwb3J0U2l6ZSk7CiAgICAgTGF5b3V0
UmVjdCB2aXN1YWxWaWV3cG9ydChGcmFtZVZpZXc6OnZpc2libGVEb2N1bWVudFJlY3QodmlzaWJs
ZUNvbnRlbnRSZWN0LCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0KCksIHRvdGFsQ29udGVu
dHNTaXplKCksIHNjYWxlKSk7CiAgICAgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydChtX2xheW91
dFZpZXdwb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggMGM3ZjRh
NjBhZTUwYzMyYmNlYjZiOTUwOTk4NGFjMjc0ZjNmZjUwZi4uNGFkZDlmYjNmODdlOTZjOTYwYmEx
MGNhNzdjMjc1NDg0MjkxOGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpy
ZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4KIE9wdGlvbmFsPFNjcm9s
bGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5nU3Rl
cHM+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoaW5nRGF0YUZvckV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBhbGxvd0xhdGNoaW5n
KSBjb25zdAogewogICAgIGlmICghYWxsb3dMYXRjaGluZykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xhdGNoZWROb2RlTG9jayB9OwogCkBAIC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPFNj
cm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVBbmRQcm9jZXNzaW5n
U3RlcHM+IFNjcm9sCiAgICAgICAgIHJldHVybiBtX2xhdGNoZWROb2RlQW5kU3RlcHM7CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRy
b2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdApAQCAtNzgsNyArNzgsNyBAQCBPcHRpb25hbDxT
Y3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWRO
b2RlSUQoKSBjb25zdAogICAgIGlmIChtX2xhdGNoZWROb2RlQW5kU3RlcHMpCiAgICAgICAgIHJl
dHVybiBtX2xhdGNoZWROb2RlQW5kU3RlcHMtPnNjcm9sbGluZ05vZGVJRDsKIAotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8
U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3Np
bmdTdGVwcz4gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hlZE5vZGVBbmRT
dGVwcygpIGNvbnN0CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyOjpub2RlRGlkSGFuZGxlRXZlbnQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGkK
ICAgICAgICAgaWYgKCF3aGVlbEV2ZW50LmlzR2VzdHVyZUNvbnRpbnVhdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1
cnJlbnRHZXN0dXJlLnZhbHVlT3IoT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+
IHsgfSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNj
cm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCisgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdTdGVwc0Zv
ckN1cnJlbnRHZXN0dXJlLnZhbHVlX29yKE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzPiB7IH0pLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRG
b3JTY3JvbGxpbmcpICYmIHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggMDQwMTVjNzE4NGRiMzI5
YTdiMmUxNTJmZTA3ZDIzNzI4NTQ0MWRkMC4uMmUwZTgzNmU2ZTQ5NWU5MjgyMTAwZDJkNjgwNzYy
OWU4NjA3Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhy
ZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWluVGhyZWFkKGNvbnN0IFBs
YXRmb3JtV2hlZWxFCiAKICAgICBib29sIGFsbG93TGF0Y2hpbmcgPSBmYWxzZTsKICAgICBPcHRp
b25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2luZ1N0ZXBzOwotICAgIGlm
IChnZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcp
ID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykgeworICAgIGlmIChnZXN0
dXJlU3RhdGUudmFsdWVfb3IoV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nKSA9PSBX
aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpIHsKICAgICAgICAgYWxsb3dMYXRj
aGluZyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpN
YWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAgICAgfQpAQCAtMjk2
LDcgKzI5Niw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp3aWxsU3RhcnRSZW5kZXJp
bmdVcGRhdGUoKQogU2Vjb25kcyBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6Om1heEFsbG93YWJsZVJl
bmRlcmluZ1VwZGF0ZUR1cmF0aW9uRm9yU3luY2hyb25pemF0aW9uKCkKIHsKICAgICBjb25zdGV4
cHIgZG91YmxlIGFsbG93YWJsZUZyYW1lRnJhY3Rpb24gPSAwLjU7Ci0gICAgYXV0byBkaXNwbGF5
RlBTID0gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpLnZhbHVlT3IoNjApOworICAgIGF1dG8gZGlz
cGxheUZQUyA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKS52YWx1ZV9vcig2MCk7CiAgICAgU2Vj
b25kcyBmcmFtZUR1cmF0aW9uID0gMV9zIC8gKGRvdWJsZSlkaXNwbGF5RlBTOwogICAgIHJldHVy
biBhbGxvd2FibGVGcmFtZUZyYWN0aW9uICogZnJhbWVEdXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDc1ZDczZWY0ODQ3ZDk2NDEyNDAxMGYyZDRm
NDc3ZTg3ZjcyMThkN2QuLjdhMzczMjBlN2QyZGQ4MDk4NWRmMjRkMzY1Nzc5ZGFlZWQxMTE1OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtODMsNyArODMsNyBA
QCBTZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6YW5pbWF0aW9uRHVyYXRp
b24oKQogCiBib29sIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21l
bnR1bVNjcm9sbGluZygpCiB7Ci0gICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9
PSBXVEY6Om51bGxvcHQpCisgICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBz
dGQ6Om51bGxvcHQpCiAgICAgICAgIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9IG1faW5p
dGlhbFNjcm9sbE9mZnNldCAhPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgfHwgbV9pbml0aWFs
VmVsb2NpdHkuYXJlYSgpOwogICAgIHJldHVybiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcu
dmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250
cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcAppbmRleCAzMmY1YjNhZTQxNTRhMzdmZDhjMjI3OWNhMDE1OWI1NjdjYjY5NDViLi5kNTA4
YjZmOWM4ZDMzODAwYmUzNTZjMTNiMDc2YzhmYWVkYTNlMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgY29u
c3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKIE9wdGlv
bmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICAvLyBGSVhNRTogVG8gbWF0Y2ggdGhlIG1hY09TIGJl
aGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBGSVhNRTogVG8g
bWF0Y2ggdGhlIG1hY09TIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIHN0ZDo6bnVsbG9wdC4K
ICAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2Us
IG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCiAgICAgLy8gSWYgdGhpcyBjYW4g
YmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJl
IHB1bGxlZCBpbnRvCiAgICAgLy8gV2ViQ29yZSBpdHNlbGYuCiAgICAgaWYgKGRyYWdEYXRhLmNv
bnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbjo6Q29weTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3Qg
RHJhZ0RhdGEmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vUmVzb3VyY2VV
c2FnZVRocmVhZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdl
VGhyZWFkV2luLmNwcAppbmRleCA2Y2NkMTZjOTdkMGNmZTFlNDkyNDM2OWZmMWE0ZDU1ZWYzYjU3
NjExLi5mNzc0MWFmMDdkYmZiZGIyODA5MjgwMzc5ZWQ5ZGZiZTI0ZDM0YzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcApAQCAt
MTMxLDggKzEzMSw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0
TWVtb3J5RGF0YShKU0M6OlZNKiB2bSwgUmVzb3VyY2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFs
RXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9m
TmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZp
dHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxD
b2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFj
aygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9u
ID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1l
VW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEu
dGltZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmly
ZSgpLnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fib3J0
YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1
ZXVlLmgKaW5kZXggMmE2NTAyM2E5MjAzODhhMGMyOThlMzlhNGVkZjE1ODUzMDM3ZGUyZC4uMWQw
Y2Y0NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0MDdmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTE0NSw5ICsxNDUsOSBAQCBwdWJs
aWM6CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBpZiAobV9h
Ym9ydGluZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gV1RG
OjpudWxsb3B0OworICAgICAgICBPcHRpb25hbDxSPiByZXNwb25zZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5UaHJlYWRUYXNrSGFuZGxl
cl0oKSB7CiAgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWluVGhyZWFkVGFza0hhbmRs
ZXIoKTsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZW50VHlwZS5oCmluZGV4IGVlZjhiOTNjYTlhOTUyODIyNGFlYTIzYzQ0NWU4
YTQ3NTVjMjNkYjAuLmQyMjMwMTg0N2EyMDIzNmFjMDhlYjFkMGIzNDVjZWI2NTMxODIyNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0
eXBlOwogICAgICAgICBpZiAoIXR5cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4geyBD
b250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tp
ZS5oCmluZGV4IDVmMDk4MDZmMTgzMzMzNzQ3ZmY2ZTkyNDBlMzQ1ZTdhMTBmYzFlZWYuLjg5M2E5
NDUwYTUyM2Q3ZjcyM2ZiYzQ1NjZmNWE1MmRkZjY0NDc4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
b2tpZS5oCkBAIC0xMzQsMzEgKzEzNCwzMSBAQCBPcHRpb25hbDxDb29raWU+IENvb2tpZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29va2llIGNvb2tpZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
b2tpZS52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuZG9tYWluKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wYXRoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvb2tpZS5jcmVhdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvb2tpZS5leHBpcmVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5odHRw
T25seSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2VjdXJlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvb2tpZS5jb21tZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
b2tpZS5jb21tZW50VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wb3J0
cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2FtZVNpdGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiBjb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25l
bnRzLmNwcAppbmRleCBlZGI1YThkNTIyNjJiYTlmYjdlMTNlOWFjY2Y4ODUwNGVmZjFkMWExLi45
Yzg4MTVkZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAwYjRjNmY2NDVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHVuc2lnbmVkIGNvdW50RGlnaXRzKFN0
cmluZ1BhcnNpbmdCdWZmZXIKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBPcHRpb25hbDxpbnQ+IHBhcnNlSW50KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlciwgdW5zaWduZWQgbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSkKIHsKICAg
ICBpZiAobWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSA+IGJ1ZmZlci5sZW5ndGhSZW1haW5p
bmcoKSB8fCAhbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgZm9yIElTTyA4NjAxLgogCkBAIC0x
MTcsMTAgKzExNywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
T3B0aW9uYWw8aW50PiBwYXJzZUludChTdHJpbmdQYXJzaW5nQnVmZgogICAgIHVuc2lnbmVkIGRp
Z2l0c1JlbWFpbmluZyA9IDA7CiAgICAgd2hpbGUgKGRpZ2l0c1JlbWFpbmluZyA8IG1heGltdW1O
dW1iZXJPZkRpZ2l0c1RvUGFyc2UpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZl
cikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaW50IGRpZ2l0ID0gKmJ1ZmZlciAtICcwJzsKICAgICAg
ICAgaWYgKHZhbHVlID4gKElOVF9NQVggLSBkaWdpdCkgLyAxMCkgLy8gQ2hlY2sgZm9yIG92ZXJm
bG93LgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAxMCArIGRpZ2l0OwogICAg
ICAgICArK2RpZ2l0c1JlbWFpbmluZzsKICAgICAgICAgKytidWZmZXI7CkBAIC0xMzIsNyArMTMy
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPGlu
dD4gcGFyc2VJbnRXaXRoaW5MaW1pdHMoU3RyaW4KIHsKICAgICBhdXRvIHZhbHVlID0gcGFyc2VJ
bnQoYnVmZmVyLCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKTsKICAgICBpZiAoISh2YWx1
ZSAmJiAqdmFsdWUgPj0gbWluaW11bVZhbHVlICYmICp2YWx1ZSA8PSBtYXhpbXVtVmFsdWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTkwLDEyICsxOTAsMTIgQEAgc3RhdGljIGJv
b2wgd2l0aGluSFRNTERhdGVMaW1pdHMoaW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRoRGF5
LCBpbnQgaG91ciwgaW4KIHRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRpYyBPcHRpb25hbDxEYXRl
Q29tcG9uZW50cz4gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdWaWV3IHNvdXJjZSwgRiYmIHBhcnNl
RnVuY3Rpb24pCiB7CiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
cmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRp
b25hbDxEYXRlQ29tcG9uZW50cz4gewogICAgICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAg
ICAgICBpZiAoIXBhcnNlRnVuY3Rpb24oYnVmZmVyLCBkYXRlKSB8fCAhYnVmZmVyLmF0RW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgfSk7CiB9CkBAIC00OTAsOCAr
NDkwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBEYXRlQ29tcG9u
ZW50czo6cGFyc2VUaW1lKFN0cmluZ1BhcnNpbmdCdWYKIAogICAgIG1faG91ciA9ICpob3VyOwog
ICAgIG1fbWludXRlID0gKm1pbnV0ZTsKLSAgICBtX3NlY29uZCA9IHNlY29uZC52YWx1ZU9yKDAp
OwotICAgIG1fbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZC52YWx1ZU9yKDApOworICAgIG1fc2Vj
b25kID0gc2Vjb25kLnZhbHVlX29yKDApOworICAgIG1fbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29u
ZC52YWx1ZV9vcigwKTsKICAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50c1R5cGU6OlRpbWU7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjQsNyArNTI0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Rj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBjcmVhdGVGcm9tVGltZU9mZnNldChk
b3VibGUKIHsKICAgICBEYXRlQ29tcG9uZW50cyByZXN1bHQ7CiAgICAgaWYgKCFmdW5jdGlvbihy
ZXN1bHQsIHRpbWVPZmZzZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaAppbmRl
eCAwZTdhNzUzMTU2NDU0ZGVmNjZlOTc4NWViYTNjMGE5ZDI4NmJhY2ViLi4yM2EzMzg2YmI1ODA2
YmFiZGM3YTA5OThkNzFlZWJkNzk0YjgwZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oCkBAIC04Myw2NyArODMsNjcgQEAg
T3B0aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycz4gRGF0ZVRpbWVDaG9vc2VyUGFyYW1l
dGVyczo6ZGVjb2RlKERlY29kZXImIGQKIHsKICAgICBBdG9tU3RyaW5nIHR5cGU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEludFJlY3QgYW5jaG9yUmVjdEluUm9v
dFZpZXc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbmNob3JSZWN0SW5Sb290VmlldykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvY2Fs
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBTdHJpbmcgY3VycmVudFZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY3VycmVudFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25WYWx1
ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdWdnZXN0aW9uVmFsdWVzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFZlY3RvcjxTdHJpbmc+IGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXM7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdWdnZXN0
aW9uTGFiZWxzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBtaW5pbXVtOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWluaW11bSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgbWF4aW11bTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1heGltdW0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHN0ZXA7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGVwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBzdGVwQmFzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0ZXBCYXNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgcmVxdWlyZWQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXF1aXJlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGlzQW5jaG9yRWxlbWVu
dFJUTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQW5jaG9yRWxlbWVudFJUTCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNl
RGFya0FwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNTZWNvbmRGaWVsZDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc1NlY29uZEZpZWxkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzTWlsbGlz
ZWNvbmRGaWVsZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc01pbGxpc2Vjb25kRmllbGQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIGFuY2hvclJlY3RJblJvb3RWaWV3
LCBXVEZNb3ZlKGxvY2FsZSksIFdURk1vdmUoY3VycmVudFZhbHVlKSwgV1RGTW92ZShzdWdnZXN0
aW9uVmFsdWVzKSwgV1RGTW92ZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzKSwgV1RGTW92ZShz
dWdnZXN0aW9uTGFiZWxzKSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcEJhc2UsIHJlcXVp
cmVkLCBpc0FuY2hvckVsZW1lbnRSVEwsIHVzZURhcmtBcHBlYXJhbmNlLCBoYXNTZWNvbmRGaWVs
ZCwgaGFzTWlsbGlzZWNvbmRGaWVsZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IGNlMGRmZjJjZmFmM2I1Y2Y1NTA3MGViOTkxYmQ1ZGIxZjJjOGUxZjcuLmQ5Y2M2YWUz
YzdiZGM3YzNmOTEzN2E4NjYzMjY4NTM2ZDdjMzBmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdn
aW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9
OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9m
IHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0
aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZs
YWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdURjo6
bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxE
cmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rp
b24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERy
YWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJh
Z0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25z
dCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEK
ICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIE9wdGlvblNldDxEcmFn
QXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQg
PSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdE
YXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICBjb25zdCBEcmFnRGF0YU1h
cCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50
JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERh
dGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ltYWdlRXh0cmFjdGlvblJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgKaW5kZXggNzAxOWVlZWEzY2FjNGMwODc1YmM4OTJh
MjVjNzdjN2M4NzkzMzdkNS4uYmY3ZGExMzI5ZjNhM2IwMmFhOTAyZmEyMDg2YmE0NTQxOWE3Zjg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVz
dWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
LmgKQEAgLTYzLDEyICs2MywxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJ
bWFnZUV4dHJhY3Rpb25UZXh0RGF0YT4gSW1hZ2VFeHRyYWN0aW9uVGV4dERhdAogICAgIE9wdGlv
bmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0ZXh0KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVy
ID4+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUoKm5vcm1hbGl6ZWRRdWFkKSB9fTsKIH0K
QEAgLTExNCwxMiArMTE0LDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPElt
YWdlRXh0cmFjdGlvbkxpbmVEYXRhPiBJbWFnZUV4dHJhY3Rpb25MaW5lRGF0CiAgICAgT3B0aW9u
YWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRR
dWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8
SW1hZ2VFeHRyYWN0aW9uVGV4dERhdGE+PiBjaGlsZHJlbjsKICAgICBkZWNvZGVyID4+IGNoaWxk
cmVuOwogICAgIGlmICghY2hpbGRyZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqbm9y
bWFsaXplZFF1YWQpLCBXVEZNb3ZlKCpjaGlsZHJlbikgfX07CiB9CkBAIC0xNjEsMTMgKzE2MSwx
MyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25SZXN1
bHQ+IEltYWdlRXh0cmFjdGlvblJlc3VsdDo6ZAogICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFnZUV4
dHJhY3Rpb25MaW5lRGF0YT4+IGxpbmVzOwogICAgIGRlY29kZXIgPj4gbGluZXM7CiAgICAgaWYg
KCFsaW5lcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICAgICBPcHRpb25hbDxW
ZWN0b3I8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz4+IGRhdGFEZXRlY3RvcnM7CiAg
ICAgZGVjb2RlciA+PiBkYXRhRGV0ZWN0b3JzOwogICAgIGlmICghZGF0YURldGVjdG9ycykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogCiAgICAgcmV0dXJuIHt7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRl
eCAzMmFhZjljNWFkZmNiNThjNDZlNmFjNjNiNmFiNzBhYTRjM2U0NWY0Li4wZjU0MGY5MzcyYWFk
MTBiYTk5ZmE3ZmI1ODBjZWY3MGNjNWMzMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIExlbmd0aCBwYXJzZUxlbmd0aChjb25zdCBVQ2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIH0KICAgICBhdXRvIHIgPSBwYXJzZUludGVn
ZXI8aW50Pih7IGRhdGEsIGludExlbmd0aCB9KTsKICAgICBpZiAobmV4dCA9PSAnKicpCi0gICAg
ICAgIHJldHVybiBMZW5ndGgoci52YWx1ZU9yKDEpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7Cisg
ICAgICAgIHJldHVybiBMZW5ndGgoci52YWx1ZV9vcigxKSwgTGVuZ3RoVHlwZTo6UmVsYXRpdmUp
OwogICAgIGlmIChyKQogICAgICAgICByZXR1cm4gTGVuZ3RoKCpyLCBMZW5ndGhUeXBlOjpGaXhl
ZCk7CiAgICAgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAppbmRleCA4NzdmNmU1YTBlZmUz
MmFlN2Q0YzcyN2Q0YTAyM2NlMjU2ZTYzNjBhLi5kNGIwMjlmMjIzOTcyYjczYTdhOTk3ODFkMmNj
MTRlNzIyYWYzNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0
aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ0luaXRpYWxpemF0
aW9uLmgKQEAgLTM4LDcgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvZ0xldmVsU3Ry
aW5nKCk7CiBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0ZShjb25zdCBTdHJpbmcm
IG5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbExvZ0NoYW5uZWxzVG9BY2N1bXVs
YXRlKCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNz
YXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBXVEY6Om51bGxvcHQpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+ID0gc3Rk
OjpudWxsb3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJp
bGl0aWVzRGVjb2RpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFi
aWxpdGllc0RlY29kaW5nSW5mby5oCmluZGV4IDE4NjE3NzZiMmViNmFmYzk2MDQ5MWU0OWM2ODIy
NGJhOWM5ZjkzZTMuLjE1NWM5ZDUxZjI2OGQxNGRiYTQ2NjkzYjk5OGMyMDUxMDc0ZTY0NTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRGVjb2Rp
bmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNE
ZWNvZGluZ0luZm8uaApAQCAtNjQsMTIgKzY0LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0
aWVzRGVjb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbzo6ZGVjb2RlKERl
CiB7CiAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFEZWNvZGluZ0NvbmZp
Z3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0
ZWRDb25maWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbygKICAgICAgICAgV1RGTW92
ZSgqaW5mbyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFi
aWxpdGllc0VuY29kaW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBh
YmlsaXRpZXNFbmNvZGluZ0luZm8uaAppbmRleCAxMjIwMDYzNTNlNTdmNjY4ODkzYzdlN2QzYjc1
YThjMDU4YTJlOWMzLi45MTU4N2JiMzlhMTRmMDYxMzlmZmQ1MjExNWFkNDFiZDdjM2VkOTE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0VuY29k
aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVz
RW5jb2RpbmdJbmZvLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxp
dGllc0VuY29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm86OmRlY29kZShE
ZQogewogICAgIGF1dG8gaW5mbyA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzo6ZGVjb2RlKGRlY29k
ZXIpOwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRW5jb2RpbmdDb25m
aWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGRlY29kZXIgPj4gc3VwcG9y
dGVkQ29uZmlndXJhdGlvbjsKICAgICBpZiAoIXN1cHBvcnRlZENvbmZpZ3VyYXRpb24pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8oCiAgICAgICAgIFdURk1v
dmUoKmluZm8pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBh
YmlsaXRpZXNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGll
c0luZm8uaAppbmRleCAyMzNhYTQ2NGUyMjc4YzFmMWVmOWFkOWI4MjQ0MWY3Y2JhMzZmMDY3Li43
NzE1YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQwZGZmNzAyMDVlNWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApAQCAtNTIsMTcgKzUyLDE3
IEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNJbmZv
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0ZWQ7
CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWQ7CiAgICAgaWYgKCFzdXBwb3J0ZWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBzbW9vdGg7CiAgICAgZGVjb2RlciA+PiBzbW9vdGg7CiAgICAgaWYg
KCFzbW9vdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwb3dlckVmZmljaWVudDsKICAgICBk
ZWNvZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAgIGlmICghcG93ZXJFZmZpY2llbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sKICAgICAgICAgKnN1cHBvcnRlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggMmNiYzUxZDU2OWRkNmM5ZTgyNzcxNjVmMThjNDEx
NGY3MTYxNWRiMC4uOGM1ZDYxNTk2YjMxZTAzZWEzNWE0ODA1MWIzNjMyYmY5NGVmMmE1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBuZXh0ID0gc21hbGxlc3ROb2RlR3JlYXRl
clRoYW5Gcm9tKHBvaW50LCB0aGlzLT5yb290KCkpOwogICAgICAgICBpZiAoIW5leHQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIG5leHQtPmRhdGEoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggN2MxMGFlYzNjZjU2M2EwN2NjZGYxNWRmZDM1
YjJkZDdiYTFlMDM2My4uMjYxMDRmNDNiZGE2MjFmZGIzMTQyMzc4N2EzZGE1OWViYWI2ZDE0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
T3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3RlYm9hcmQ6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbygpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHN0cmF0ZWd5ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAgICByZXR1cm4gc3RyYXRl
Z3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdlQ291bnQsIGNvbnRleHQo
KSk7CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZDo6cGFz
dGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTc5LDcgKzc5LDcgQEAgT3B0
aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJvYXJkSXRlbUluZm8o
c2l6ZV90IGluZGV4KSBjb25zdAogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3QgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBhZjU0NzE1
ZDhhYzhlNmY4N2M0MWJmYWZlN2ZhYjJmZjYzNjQ4ZDk3Li4wNWM2YWZlNDU3ZmY5ZTkxZGZiMTky
NWUyNDhhNzc0MWM5YzU2ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBA
IC0yMTMsOSArMjEzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhcigpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhcihjb25zdCBT
dHJpbmcmIHR5cGUpOwogCi0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFz
dGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBX
VEY6Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250
ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBX
VEY6Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyJiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBXVEY6Om51bGxv
cHQpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1Bv
bGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3k6OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJl
YWRlciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IHN0YXRpYyBib29sIGNhbldyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkSXRlbUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCmluZGV4IGYwZDVl
YTQwYzdiYzBjNWE1MDIxMTFkY2ZhODM4ZmE3MzNmZDY5Y2YuLmIxYzdkNDc4ZjM3MWY2Y2NjZDU0
YWRlZmQ2NzhlYTJkN2E3NjJlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmRJdGVtSW5mby5oCkBAIC01NiwxMCArNTYsMTAgQEAgT3B0aW9uYWw8UHJlc2VudGF0aW9u
U2l6ZT4gUHJlc2VudGF0aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
UHJlc2VudGF0aW9uU2l6ZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
d2lkdGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGVpZ2h0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzUsMzEgKzEzNSwzMSBAQCBPcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgUGFzdGVib2FyZEl0ZW1JbmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVVcGxvYWQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxvYWQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0J5RmlkZWxpdHkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVkRmlsZU5hbWUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc05vblRleHRUeXBlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRhaW5zRmlsZVVSTEFuZEZp
bGVVcGxvYWRDb250ZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lndl
YlNhZmVUeXBlc0J5RmlkZWxpdHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcAppbmRleCBmN2U5
N2MyYTk0NWI3M2U0ODUwNzNiYjczYjJlMWYzZjJjZTU1YWVhLi5iZTA0NjAxNTA1NWE1ZmJkODQ3
YTc1NzMyYzIxNDkwMjVlZWMzZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZWZlcnJlclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJy
ZXJQb2xpY3kuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxSZWZlcnJlclBv
bGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcgcG9saWN5LCBTaG91CiAg
ICAgaWYgKCFwb2xpY3kuaXNOdWxsKCkgJiYgcG9saWN5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICAgICAKIE9wdGlvbmFsPFJlZmVycmVy
UG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBSZWZl
cnJlclBvbGljeVNvdXJjZSBzb3VyY2UpCkBAIC04Niw3ICs4Niw3IEBAIE9wdGlvbmFsPFJlZmVy
cmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9saWN5U3RyaW5nLCBS
ZWZlcnJlclBvCiAgICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVyUG9saWN5VG9rZW4ocG9saWN5
U3RyaW5nLCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzOjpObyk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIHJlZmVycmVyUG9saWN5VG9TdHJpbmcoY29uc3QgUmVm
ZXJyZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
Z2lzdHJhYmxlRG9tYWluLmgKaW5kZXggYTVmYTA3N2QxNjcxOWI4NmFiZGNmOGY5N2ExNjc4ZjM2
ZmZkNzk0My4uMWI3ZTVkYzEyMzhhZjA0ZmY5ZTkwOWU5YzQxYmQwOTk5Y2QzMmM1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCkBAIC0xNDcsNyArMTQ3
LDcgQEAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IFJlZ2lzdHJhYmxlRG9tYWluOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGRvbWFpbjsKICAgICBk
ZWNvZGVyID4+IGRvbWFpbjsKICAgICBpZiAoIWRvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHJlZ2lzdHJhYmxlRG9tYWluLm1fcmVnaXN0
cmFibGVEb21haW4gPSBXVEZNb3ZlKCpkb21haW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCmluZGV4IDg4Yjc1NGQ4MWViNjY3YThjYWE3NTE0OTU5ODQzZWU4
ZWNlNzE2OGEuLmQ2ZTk3ZTNhMjA5MTQxODkxNzdmNjA3M2EyMDE0OTNhODQwMTQxMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgKQEAgLTgxLDEyICs4MSwx
MiBAQCBPcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0aWVzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gcHJpbWFy
eURpc3BsYXlJRDsKICAgICBkZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5SUQ7CiAgICAgaWYgKCFw
cmltYXJ5RGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2NyZWVuRGF0YU1hcD4gc2NyZWVu
RGF0YU1hcDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRhdGFNYXA7CiAgICAgaWYgKCFzY3JlZW5E
YXRhTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqcHJpbWFyeURpc3BsYXlJRCwgV1RGTW92ZSgq
c2NyZWVuRGF0YU1hcCkgfSB9OwogfQpAQCAtMTExLDcwICsxMTEsNzAgQEAgT3B0aW9uYWw8U2Ny
ZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRlY29kZXIgPj4gc2NyZWVu
QXZhaWxhYmxlUmVjdDsKICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJlY3QpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5SZWN0
OwogICAgIGlmICghc2NyZWVuUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IHNjcmVlbkNvbG9yU3Bh
Y2U7CiAgICAgaWYgKCFzY3JlZW5Db2xvclNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiBz
Y3JlZW5EZXB0aDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRlcHRoOwogICAgIGlmICghc2NyZWVu
RGVwdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50Owog
ICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAgICAgaWYgKCFzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKICAgICBkZWNvZGVyID4+IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
cjsKICAgICBpZiAoIXNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwogICAgIGRlY29kZXIgPj4gc2NyZWVu
SGFzSW52ZXJ0ZWRDb2xvcnM7CiAgICAgaWYgKCFzY3JlZW5IYXNJbnZlcnRlZENvbG9ycykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKICAg
ICBkZWNvZGVyID4+IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKICAgICBpZiAoIXNj
cmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBPcHRpb25hbDxib29sPiBzY3JlZW5Jc01vbm9jaHJvbWU7CiAgICAgZGVjb2RlciA+PiBzY3Jl
ZW5Jc01vbm9jaHJvbWU7CiAgICAgaWYgKCFzY3JlZW5Jc01vbm9jaHJvbWUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDx1aW50MzJfdD4gZGlzcGxheU1hc2s7CiAgICAgZGVjb2RlciA+PiBkaXNwbGF5TWFz
azsKICAgICBpZiAoIWRpc3BsYXlNYXNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8SU9SZWdpc3RyeUdQ
VUlEPiBncHVJRDsKICAgICBkZWNvZGVyID4+IGdwdUlEOwogICAgIGlmICghZ3B1SUQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxEeW5hbWljUmFuZ2VNb2RlPiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2Rl
OwogICAgIGRlY29kZXIgPj4gcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKICAgICBpZiAoIXBy
ZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBPcHRpb25hbDxmbG9hdD4gc2NhbGVGYWN0b3I7
CiAgICAgZGVjb2RlciA+PiBzY2FsZUZhY3RvcjsKICAgICBpZiAoIXNjYWxlRmFjdG9yKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
I2VuZGlmCiAKICAgICByZXR1cm4geyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDFiZDgyZmZhYTllNWYzMThlZGNjOWYy
ZDZjODQxYTg5Y2JjYjk0MDEuLjc4NmM0OTYzYWRlZDA1MGZlYmQzYjI3NjdkNzcyMTM4MjMzMWYy
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktp
bmV0aWMuY3BwCkBAIC0xNzQsOCArMTc0LDggQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGlj
OjpzdGFydChjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24sIGNvbnN0IEZsb2EKIAog
ICAgIGlmICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKICAgICAgICAgbV9wb3Np
dGlvbiA9IGluaXRpYWxQb3NpdGlvbjsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFdURjo6
bnVsbG9wdDsKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIG1fdmVydGljYWxEYXRh
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDIsMTQgKzIw
MiwxNCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0KGNvbnN0IEZsb2F0UG9p
bnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYQogICAgICAgICAgICAgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsUG9zaXRpb24ueCgpLAogICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uLngoKSwg
YWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LngoKSwgbV9ob3Jpem9udGFsRGF0YSkpOwogICAg
IH0gZWxzZQotICAgICAgICBtX2hvcml6b250YWxEYXRhID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1heVZTY3JvbGwp
IHsKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShleHRlbnRzLm1pbmltdW1T
Y3JvbGxQb3NpdGlvbi55KCksCiAgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxQb3Np
dGlvbi55KCksCiAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24ueSgpLCBhY2N1bXVsYXRlVmVs
b2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQotICAgICAg
ICBtX3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX3Bvc2l0aW9uID0gaW5pdGlhbFBvc2l0aW9uOwogICAg
IG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNrVGltZSAvIDIuOwpAQCAt
MjIxLDEwICsyMjEsMTAgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25U
aW1lckZpcmVkKCkKICAgICBhdXRvIGRlbHRhID0gZGVsdGFUb05leHRGcmFtZSgpOwogCiAgICAg
aWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5hbmltYXRl
U2Nyb2xsKGRlbHRhKSkKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX3Zl
cnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRh
KSkKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fdmVy
dGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgb25lIG9mIHRoZSBheGVzIGRp
ZG4ndCBmaW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0LgogICAgIGlmICht
X2hvcml6b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcAppbmRleCAwNTc1ZDIxOTFiYWUyYjc0ODEyYjNiOTJhYWJhMzNiZjM1ZjAy
YWJhLi4zZDJmNjJlZmIwMDA3NTNjNzY2MjQ0MmI3OTM0MTIzNTE0NDc1ZTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDc0LDggKzQ3NCw4IEBAIHZvaWQgU2Ny
b2xsVmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdl
KCkKICAgICBlbHNlIGlmIChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cykKICAgICAgICAgc2Nyb2xs
T2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0
cy52YWx1ZSgpLmZpcnN0LCBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cy52YWx1ZSgpLnNlY29uZCk7
CiAgICAgCi0gICAgbV9kZWZlcnJlZFNjcm9sbERlbHRhID0gV1RGOjpudWxsb3B0OwotICAgIG1f
ZGVmZXJyZWRTY3JvbGxPZmZzZXRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRTY3Jv
bGxEZWx0YSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cyA9IHN0
ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxUbyhjb25zdCBTY3JvbGxQ
b3NpdGlvbiYgbmV3UG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0
ZWJvYXJkLmgKaW5kZXggNjlmMDdmNDRiYmIwMWZjZTBhNjhmYTg1MjMzOTdlOTc5NjQ2ZTNlMC4u
YWVlMGQ4NzZlZjM2NjhjNWEwMTg5ZmMyMjcyNDA3NTcwM2EzMjNiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtNTcsOCArNTcsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0
eXBlKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiwgUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3k6OkFsbG93VVJM
LCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7IH0KLSAgICB2b2lkIHJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwg
T3B0aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9CisgICAgdm9pZCByZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51
bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRl
ciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXplX3Q+ID0gc3RkOjpudWxs
b3B0KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpIGZp
bmFsOwogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggYzY2NmVkYjY4ZWIyMGVmZmNmNDczMjE4ZTMwNWE3
NGNkNzQ3YzlkMi4uYmM5N2U0ZTRiZjU0MjdlY2VkNzFmODdjNGUxYzhhNGZjNWI5MmViYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtNDAsNyArNDAsNyBAQCBpbnQgVGhlbWU6OmJh
c2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdAogCiBPcHRpb25hbDxG
b250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZTo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMZW5ndGhTaXplIFRoZW1lOjpjb250
cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXpl
JiB6b29tZWRTaXplLCBmbG9hdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmluZGV4IGQ1
ZjA2ZWM3Y2MyY2UxZTcxODdkNjEzMjk1NmUwYThiZDYwZTNjY2MuLjU2Zjc2NTc4MWMzYjEzNzRh
MjE2MjU5NWIxYjA5MmI5ZWRkNzU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApAQCAtNzEs
NyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0g
MDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1l
KE1vbm90b25pY1RpbWUpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1
YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1lKE1vbm90b25pY1RpbWUp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0hlYXBJbmRleCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0NhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaAppbmRleCAyMzc2OTBj
MDJjY2FmZGQ2YzU5NDY5OTkzMTU1ODc1NTMxZmEzYTAxLi5jMjliODU4NjYwMmVjZTExMGI2NjJj
NTgxMGU5YmU3YzQyYTMxNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0lPQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0lPQ2FsbGJhY2suaApAQCAtNTMsMTIgKzUzLDEyIEBAIHN0cnVjdCBBdWRpb0lPUG9z
aXRpb24gewogICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlvbjsKICAgICAgICAgZGVj
b2RlciA+PiBwb3NpdGlvbjsKICAgICAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVzdGFtcDsKICAgICAgICAgZGVjb2Rl
ciA+PiB0aW1lc3RhbXA7CiAgICAgICAgIGlmICghdGltZXN0YW1wKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmV0dXJuIEF1ZGlvSU9Qb3NpdGlvbiB7ICpwb3NpdGlvbiwgKnRpbWVzdGFtcCB9Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oCmluZGV4IDQ5NWIxMzAwNTdhNDhlOTQ3ZTgwNTMzMDNkYzYwM2QyMTlhYThh
MDcuLjdhYWM1MjRiNDk2MDU5NmFiZDEyMGYxYTA1ODMwOTFlMjE1ODA4N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaApA
QCAtMjk3LDcgKzI5Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25h
bDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8dHlwZT4+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAo
IW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OyBcCiAKICAgICBERUNPREUodGltZSwgZG91YmxlKTsKICAgICBERUNPREUo
ZmFzdFNlZWssIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJl
YW1lci5jcHAKaW5kZXggMGZlYTkyNWM0ZjMxOTNmYzE2ZTEwMWM1OWNhN2Y1ZTFlMGRjNjhjZi4u
ZGQ0ODI5ZDM3YzIzYTZkNWYyNTA2MzAwNTJiNGIyMGFlZjNlZWRhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdzdEJ1ZmZlcj4+PiB3ZWJLaXRXZWJBdWRp
b1NyY0FsbG9jYXRlQnVmZmVycyhXZWIKICAgICBpZiAoIXByaXYtPmRlc3RpbmF0aW9uIHx8ICFw
cml2LT5idXMpIHsKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBGQUlMRUQs
ICgiSW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJyb3IiKSwgKCJDYW4ndCBzdGFydCB3aXRob3V0IGRl
c3RpbmF0aW9uIG9yIGJ1cyIpKTsKICAgICAgICAgZ3N0X3Rhc2tfc3RvcChzcmMtPnByaXYtPnRh
c2suZ2V0KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVChwcml2LT5wb29sKTsKQEAgLTMxOSw3
ICszMTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4+IHdl
YktpdFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYgogICAgICAgICAgICAgLy8gRkxVU0hJ
TkcgYW5kIEVPUyBhcmUgbm90IGVycm9ycy4KICAgICAgICAgICAgIGlmIChyZXQgPCBHU1RfRkxP
V19FT1MgfHwgcmV0ID09IEdTVF9GTE9XX05PVF9MSU5LRUQpCiAgICAgICAgICAgICAgICAgR1NU
X0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBQQUQsICgiSW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJy
b3IiKSwgKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIGZvciBmbG93OiAlcyIsIGdzdF9mbG93
X2dldF9uYW1lKHJldCkpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJU
KGJ1ZmZlcik7CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxHUmVm
UHRyPEdzdEJ1ZmZlcj4+PiB3ZWJLaXRXZWJBdWRpb1NyY0FsbG9jYXRlQnVmZmVycyhXZWIKICAg
ICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChjaGFubmVsQnVmZmVyTGlzdCk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChjaGFubmVsQnVmZmVyTGlzdCk7CiB9CiAKIHN0
YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVyQW5kUHVzaEZyYW1lcyhHUmVmUHRyPEdz
dEVsZW1lbnQ+JiYgZWxlbWVudCwgVmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4mJiBjaGFubmVs
QnVmZmVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IDI2YmI0MTEwMDFkN2VmYmMwYmYy
NmNiNjEzOWYwMjAxN2U2YTE1ZjcuLmVkZWYzMDdmMjdhYzNiOGRiZGY4MmE3YmNlNjQzMjliM2Vm
ZWFjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtMjQ1LDcgKzI0NSw3IEBAIE1lZGlhU2Vz
c2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKLSAgICB1cGRhdGVDYXJQbGF5SXND
b25uZWN0ZWQoV1RGOjpudWxsb3B0KTsKKyAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3Rk
OjpudWxsb3B0KTsKICNlbmRpZgogfQogCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBNZWRpYVNl
c3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0ZXNJbnRlcm5hbCgpCiAj
aWYgSEFWRShDRUxFU1RJQUwpCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6bWVkaWFTZXJ2
ZXJDb25uZWN0aW9uRGllZCgpCiB7Ci0gICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKFdURjo6
bnVsbG9wdCk7CisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgcmRhcjovLzI3NjYyNzE2IGxhbmRzCiAg
ICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlzQ29ubmVjdGVkRGlkQ2hh
bmdlTm90aWZpY2F0aW9uKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9TdWJzY3JpYmVU
b05vdGlmaWNhdGlvbnNBdHRyaWJ1dGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCmluZGV4IGNhODcwMWYwNmYwN2JjMjg0
NDEyY2VkZWQ1NzhkYmNhZGE0ZjZkYzQuLmY0MTA2NmZkYTQ5OTc5NjM0YTc2MjVhODcyN2ZiZmQx
YjdjZTIxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb1Nlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgQXVkaW9TZXNzaW9u
TWFjOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQogICAgIGlmICghbV9wbGF5aW5nVG9CbHVl
dG9vdGggfHwgKm1fcGxheWluZ1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJ
c0JsdWV0b290aCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsYXlpbmdUb0JsdWV0b290
aCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCmluZGV4IGQzOWY3NWQ0ODFlY2NhZjdjYTI2
NmM2MTY1YWJkZjJkZGExMDdjMTYuLjYxNWNiYjRhMWIwMmFhYmZiOTFlNDhiNTVkYWU0YTA2Nzdl
NWI4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3Jt
UGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXRmb3JtUGFzdGVib2FyZENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+PiBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5nZUNvdW50KQogewogICAg
IGlmIChjaGFuZ2VDb3VudCAhPSBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNvdW50XSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGl0ZW1JbmZvOwogICAgIGludCBudW1iZXJPZkl0
ZW1zID0gY291bnQoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9h
cmRJdGVtSW5mbz4+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGkK
ICAgICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5kZXggPCBudW1iZXJPZkl0
ZW1zOyArK2l0ZW1JbmRleCkgewogICAgICAgICBhdXRvIGl0ZW0gPSBpbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGl0ZW1JbmRleCwgY2hhbmdlQ291bnQpOwogICAgICAgICBpZiAoIWl0ZW0pCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqaXRl
bSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggYmM3MWIx
ODQ2YWM1YTAwZjViZmJlOTE3ZmVmOTMwOGUxNTQ0NDY4MC4uMDg5YjNkODE3OTljZjVkNDc0ZWQy
ZWI2YWZmNDAzMjRlYzAyNDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0K
QEAgLTU4Miw3ICs1ODIsNyBAQCB1aW50NjRfdCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAgICAgaWYgKCFzZWxlY3Rl
ZEluZGV4ICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0Ojpmb3JjZWRPbmx5S2V5
d29yZCgpKQogICAgICAgICBzZWxlY3RlZEluZGV4ID0gb2ZmSW5kZXg7CiAKLSAgICByZXR1cm4g
c2VsZWN0ZWRJbmRleC52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7CisgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXgudmFsdWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0
czx1aW50NjRfdD46Om1heCgpKTsKIH0KIAogYm9vbCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlh
RWxlbWVudDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDg1MjU4N2NlZGEwNTEyMTQ0Nzk1MjJmYWMzOGU0YzBm
Yjk4NzQ5ZmMuLjAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJkMDhiZjZiZWRmYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTY3LDM3ICs2NywzNyBAQCBzdHJ1
Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
bGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gaW5pdERhdGFUeXBl
czsKICAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAoIWluaXRE
YXRhVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFD
YXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gYXVkaW9D
YXBhYmlsaXRpZXM7CiAgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gdmlkZW9DYXBh
YmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAg
IGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxD
RE1SZXF1aXJlbWVudD4gZGlzdGluY3RpdmVJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+
IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZp
ZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPENETVJlcXVpcmVtZW50
PiBwZXJzaXN0ZW50U3RhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlOwog
ICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2Rl
ciA+PiBzZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghc2Vzc2lvblR5cGVzKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1NZWRpYUNh
cGFiaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
ZGlhQ2FwYWJpbGl0eS5oCmluZGV4IGY4NGEwZDEyYWI0Y2Q1MjBlM2YwZTA0ZDY0ZWJlZmM2MzE2
MjU4N2QuLmNiNTAwNGYzY2Q3OGM2NTFhYmJhMTM0MWRlZjZmMmVjYjc3MmMyMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJp
bGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1l
ZGlhQ2FwYWJpbGl0eS5oCkBAIC01NCwxNyArNTQsMTcgQEAgc3RydWN0IENETU1lZGlhQ2FwYWJp
bGl0eSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvYnVzdG5lc3M7CiAgICAgICAgIGRlY29k
ZXIgPj4gcm9idXN0bmVzczsKICAgICAgICAgaWYgKCFyb2J1c3RuZXNzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNjaGVtZT4+IGVuY3J5cHRp
b25TY2hlbWU7CiAgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNjaGVtZTsKICAgICAgICAg
aWYgKCFlbmNyeXB0aW9uU2NoZW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCmluZGV4IGQyNWY2MmUy
YThmODA5NGNiZjUxOTM5ZDYxODRkOWZkYTE5NDc3YzYuLjc0MTU0NDEzN2YwNDkzOGY1ZGIwM2Y1
NDU2MjUyM2IzMWI0Yzc4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgdm9pZCBD
RE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24mJiBjYW5kaWQKICAgICAvLyByZXN0cmljdGlvbnMgYW5kIG9yaWdpbi4KICAgICBh
dXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY2Fu
ZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zLCBhY2Nlc3MpOwogICAgIGlmICghb3B0
aW9uYWxDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBhdXRvIGNvbnNlbnRDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgYWNjZXNzXSAoQ29uc2VudFN0YXR1cyBz
dGF0dXMsIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBDRE1SZXN0
cmljdGlvbnMmJiByZXN0cmljdGlvbnMpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlvbiBhbmQgQ29uc2VudCwg
Y3RkLgpAQCAtMTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKIAogICAgICAg
ICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBlcyBpcyBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRl
ZC4KICAgICAgICAgaWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIC8vIDMuNC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJlciBvZiBhY2N1bXVsYXRl
ZCBjb25maWd1cmF0aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KICAgICAgICAgYWNjdW11bGF0ZWRD
b25maWd1cmF0aW9uLmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBvcnRlZFR5cGVzKTsKQEAg
LTE4Nyw3ICsxODcsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAgICAgICAgIC8vIElmIHRo
ZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHVzZSBvZiBEaXN0aW5jdGl2ZSBJZGVu
dGlmaWVyKHMpIGluIGNvbWJpbmF0aW9uCiAgICAgICAgIC8vIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAg
ICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmln
dXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ0RNUmVxdWlyZW1lbnQ6Ok9wdGlv
bmFsOgpAQCAtMjAwLDcgKzIwMCw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKICAgICAgICAg
Ly8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0aW5jdGl2ZSBJZGVudGlm
aWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVyKHMpCiAgICAgICAgIC8v
IGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJp
Y3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVu
dGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25z
KSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAg
ICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBwZXJzaXN0aW5n
IHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgogICAg
ICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBp
ZiAodGhpcy0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWw6
CkBAIC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4g
Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgICAgICAvLyBJ
ZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBzdGF0ZSBpbiBjb21iaW5h
dGlvbiB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAgICAgLy8gYW5kIHJlc3Ry
aWN0aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZAogICAgICAgICBpZiAodGhpcy0+cGVyc2lzdGVu
dFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMp
ID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTI2MSwxMiArMjYxLDEyIEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKICAg
ICAgICAgLy8gMTMuMi4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRT
dGF0ZSB2YWx1ZSBpcyAibm90LWFsbG93ZWQiIGFuZCB0aGUKICAgICAgICAgLy8gICAgICAgSXMg
cGVyc2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSByZXR1cm5zIHRydWUgZm9yIHNlc3Np
b24gdHlwZSByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAoYWNjdW11bGF0ZWRDb25m
aWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVudDo6Tm90QWxsb3dlZCAm
JiBpc1BlcnNpc3RlbnRUeXBlKHNlc3Npb25UeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8v
IDEzLjMuIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNlc3Npb24gdHlw
ZSBpbiBjb21iaW5hdGlvbiB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAgICAg
Ly8gICAgICAgYW5kIHJlc3RyaWN0aW9ucyBmb3Igb3RoZXIgcmVhc29ucywgcmV0dXJuIE5vdFN1
cHBvcnRlZC4KICAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25UeXBlV2l0aENvbmZpZ3VyYXRp
b24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAvLyAxMy40IElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJzaXN0ZW50
U3RhdGUgdmFsdWUgaXMgIm9wdGlvbmFsIiBhbmQgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJ
cwogICAgICAgICAvLyAgICAgIHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24g
c2Vzc2lvbiB0eXBlIGlzIHRydWUsIGNoYW5nZSBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3Mg
cGVyc2lzdGVudFN0YXRlCkBAIC0yODAsNyArMjgwLDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25z
dAogCiAgICAgLy8gMTUuIElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBhbmQgYXVkaW9DYXBhYmls
aXRpZXMgbWVtYmVycyBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBhcmUgYm90aCBlbXB0eSwg
cmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICBpZiAoY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRl
b0NhcGFiaWxpdGllcy5pc0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmlndXJhdGlvbi5hdWRpb0Nh
cGFiaWxpdGllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxNi4g4oazIElmIHRoZSB2aWRlb0Nh
cGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRpb24gaXMgbm9uLWVtcHR5
OgogICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5pc0Vt
cHR5KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1
cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAKICAg
ICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51bGwsIHJldHVybiBOb3RT
dXBwb3J0ZWQuCiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlkZW9DYXBhYmlsaXRpZXMgbWVtYmVyIG9mIGFjY3Vt
dWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlkZW8gY2FwYWJpbGl0aWVzLgogICAgICAgICBhY2N1
bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSBXVEZNb3ZlKHZpZGVvQ2Fw
YWJpbGl0aWVzLnZhbHVlKCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIE9wdGlvbmFsPENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
Y29uc3QKIAogICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwg
cmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0NhcGFiaWxpdGllcyBtZW1i
ZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBjYXBhYmlsaXRpZXMuCiAg
ICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcyA9IFdURk1v
dmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CkBAIC0zNTAsMTAgKzM1MCwxMCBAQCBPcHRp
b25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRD
b25maWd1cmF0aW9uKGNvbnN0CiAgICAgLy8gMjAuIElmIGltcGxlbWVudGF0aW9uIGluIHRoZSBj
b25maWd1cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHZhbHVlcyBp
biBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCiAgICAgLy8gICAgIGlzIG5vdCBzdXBwb3J0ZWQg
b3Igbm90IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICBp
ZiAoIXN1cHBvcnRzQ29uZmlndXJhdGlvbihhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVy
ID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkgJiYgYWNjZXNzID09
IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBhY2N1bXVs
YXRlZENvbmZpZ3VyYXRpb247CiAgICAgLy8gTk9URTogQ29udGludWVkIGluIGdldENvbnNlbnRT
dGF0dXMoKS4KQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBh
YmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaQogCiAg
ICAgICAgIC8vIDMuMy4gSWYgY29udGVudCB0eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVy
biBudWxsLgogICAgICAgICBpZiAocmVxdWVzdGVkQ2FwYWJpbGl0eS5jb250ZW50VHlwZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAzLjQuIElmIGNvbnRlbnQgdHlwZSBpcyBh
biBpbnZhbGlkIG9yIHVucmVjb2duaXplZCBNSU1FIHR5cGUsIGNvbnRpbnVlIHRvIHRoZSBuZXh0
IGl0ZXJhdGlvbi4KICAgICAgICAgT3B0aW9uYWw8UGFyc2VkQ29udGVudFR5cGU+IGNvbnRlbnRU
eXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRl
bnRUeXBlLCBNb2RlOjpSZmMyMDQ1KTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBPcHRpb25hbDxWZWN0
b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaQogCiAgICAgLy8gNC4gSWYgc3VwcG9ydGVkIG1lZGlhIGNhcGFiaWxpdGllcyBp
cyBlbXB0eSwgcmV0dXJuIG51bGwuCiAgICAgaWYgKHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDUuIFJldHVybiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJp
bGl0aWVzLgogICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxpdGllczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAppbmRl
eCBmZTMwZmYwZTk3YWM4MDNhZjNhYzFlMzE2NGRkNjc0NTJlMjAzNTJkLi41NTE1ZWU3MDUyNjFh
MDgwZWM4Yzk4Njg2ZDgzZDVhMDNhZWYzYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0zMDksMTEgKzMwOSwxMSBA
QCBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdhaXRGb3JLZXlIYW5kbGUo
Y29uc3QgS2V5SURUeXBlJiBrZXlJRCwgVwogICAgIGlmICh3YXNLZXlBdmFpbGFibGUpIHsKICAg
ICAgICAgUmVmUHRyPEtleUhhbmRsZT4gaGFuZGxlID0ga2V5SGFuZGxlKGtleUlEKTsKICAgICAg
ICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3Iga2V5
IElEICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAg
ICAgcmV0dXJuIG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAg
IHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IH0KIAogICAgIExPRyhFTUUsICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJRCAlcyBub3QgYXZhaWxh
YmxlIG9yIG9wZXJhdGlvbiBhYm9ydGVkIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lp
KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGJvb2wgQ0RNUHJveHk6OmtleUF2YWlsYWJsZVVubG9ja2VkKGNvbnN0IEtl
eUlEVHlwZSYga2V5SUQpIGNvbnN0CkBAIC0zMzUsMTQgKzMzNSwxNCBAQCBPcHRpb25hbDxSZWY8
S2V5SGFuZGxlPj4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleUhhbmRsZShjb25zdCBLZXlJRFR5
cGUmIGtleUlELAogICAgIH0KIAogICAgIFJlZlB0cjxLZXlIYW5kbGU+IGhhbmRsZSA9IGtleUhh
bmRsZShrZXlJRCk7Ci0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51
bGwoKSk7CiB9CiAKIE9wdGlvbmFsPEtleUhhbmRsZVZhbHVlVmFyaWFudD4gQ0RNUHJveHk6Omdl
dE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYga2V5SUQsIFdlYWtQdHI8Q0RNUHJv
eHlEZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVudCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBrZXlI
YW5kbGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUoa2V5SUQsIFdURk1vdmUoY2xpZW50KSkpCi0g
ICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoKCprZXlIYW5kbGUpLT52YWx1ZSgpKTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKCgq
a2V5SGFuZGxlKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBDRE1JbnN0YW5jZVByb3h5OjpzdGFydGVkV2FpdGluZ0ZvcktleSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1SZXN0cmljdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5o
CmluZGV4IDljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2OTRmM2UuLjgwN2M4ZTU2
M2I1ZTg3YjQ4MjRkMDNhYjZkZjYyMjE0NWI2NzE3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oCkBAIC01
MSwxNyArNTEsMTcgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKICAgICAgICAgZGVjb2RlciA+PiBk
aXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CiAgICAgICAgIGlmICghZGlzdGluY3RpdmVJZGVu
dGlmaWVyRGVuaWVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gcGVyc2lz
dGVudFN0YXRlRGVuaWVkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRTdGF0ZURlbmll
ZDsKICAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6OkludEhhc2g8Q0RNU2Vz
c2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNlc3Npb25UeXBlPj4+IGRl
bmllZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBkZW5pZWRTZXNzaW9uVHlwZXM7
CiAgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
cmV0dXJuIHt7CiAgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDhlODM2Mzg0N2MyMjFlZjUwZGEzZDIwOTFj
OTNmYjViMWY0YzYxYjcuLmI2YzJhZTlmMjhiMThiOWZhNWI0YmJmMzMzOTQ1MzY4ZWM2OTk2NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFy
a2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTUzLDEyICs1MywxMiBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0
KGNvbnN0IEpTT046Ok9iamVjdAogICAgIC8vIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkICds
aWNlbnNlJyBmb3JtYXQuCiAgICAgYXV0byBpdCA9IHJvb3QuZmluZCgia2V5cyIpOwogICAgIGlm
IChpdCA9PSByb290LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUmV0cmlldmUgdGhlIGtleXMgYXJyYXku
CiAgICAgYXV0byBrZXlzQXJyYXkgPSBpdC0+dmFsdWUtPmFzQXJyYXkoKTsKICAgICBpZiAoIWtl
eXNBcnJheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxlPj4gZGVjb2RlZEtleXM7
CiAgICAgYm9vbCB2YWxpZEZvcm1hdCA9IHN0ZDo6YWxsX29mKGtleXNBcnJheS0+YmVnaW4oKSwg
a2V5c0FycmF5LT5lbmQoKSwKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxSZWZQdHI8S2V5SGFuZGxlPj4+IHBhcnNlTGljZW5zZUZvcm1hdChjb25zdCBKU09OOjpPYmpl
Y3QKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsKICAgICBpZiAoIXZhbGlk
Rm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBkZWNvZGVkS2V5czsKIH0KIApAQCAtNDE4LDcgKzQxOCw3
IEBAIE9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICAvLyBWYWxpZGF0ZSB0aGUgc2Vzc2lv
biBJRCBzdHJpbmcgYXMgYW4gMzItYml0IGludGVnZXIuCiAgICAgaWYgKCFwYXJzZUludGVnZXI8
dWludDMyX3Q+KHNlc3Npb25JZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlc3Npb25JZDsKIH0KIApAQCAt
NDg5LDE0ICs0ODksMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVQKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xvc2VkLCBXVEZNb3ZlKGNo
YW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHN1Y2NlZWRlZCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdl
ZEtleXMpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3VjY2VlZGVkKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfTsKIAogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IHJvb3Qg
PSBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSk7CiAgICAgaWYgKCFyb290
KSB7CiAgICAgICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgdXBkYXRl
IHBheWxvYWQgd2FzIG5vdCB2YWxpZCBKU09OIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkKTsKKyAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUy
MiwxMiArNTIyLDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxp
Y2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUCiAgICAgICAgIExPRyhFTUUs
ICJFTUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgcmVsZWFzZSBhY2tub3dsZWRnZWQsIGNsZWFy
aW5nIGFsbCBrbm93biBrZXlzIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBw
YXJlbnRJbnN0YW5jZSgpLnJlbW92ZUFsbEtleXNGcm9tKG1fa2V5U3RvcmUpOwogICAgICAgICBt
X2tleVN0b3JlLnJlbW92ZUFsbEtleXMoKTsKLSAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayh0cnVl
LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICAgICAgZGlzcGF0
Y2hDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAt
IHNlc3Npb24gJXMgdXBkYXRlIHBheWxvYWQgd2FzIGFuIHVucmVjb2duaXplZCBmb3JtYXQiLCBz
ZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxzZSwgV1RG
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgZGlzcGF0Y2hDYWxsYmFjayhm
YWxzZSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiB9CiAKIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNh
bGxiYWNrKQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJL
ZXk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JCiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOworICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMu
Y3BwCmluZGV4IDFiODNhOTFiMjdhNmFlZjdhODJmMmExNGY4NTRmY2E4MzcyNGI5ZDAuLjZhZWJi
MDU5MDNmNjMzNDlmZjkzNmE0NjJjN2I3ZjcyNTVmYjJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAt
NTMsMTYgKzUzLDE2IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHJlYWRTdHJpbmcoV1RGOjpQ
ZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxzaXplX3Q+IHNpemU7
CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIXNpemUu
dmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyKHNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmVz
dWx0ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpOwogICAg
IGlmIChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0
ZS5jcHAKaW5kZXggMDg0ODAwNWU2NDcyYzU2ZjcxMTk4ZTcyNzI3N2ZkYTQ5OGU1ZTE4My4uNjZj
ZDY1NzRlZGUzNzVjNThiMDRkMDgxODM0YmQ5MDg2ZjAwOTE5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFyZXN0RnVs
bFNwZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyCiBPcHRpb25hbDxGcmFtZXNQ
ZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1Jl
YXNvbj4gcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVy
U2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7CiAgICAgaWYgKHJlYXNv
bnMuY29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghbm9taW5hbEZyYW1lc1BlclNlY29uZCB8fCAqbm9taW5hbEZyYW1lc1BlclNlY29uZCA9
PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpIHsKICAgICAgICAgLy8gRklYTUU6IGhhbmRsZSBU
aHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKaW5kZXggYzgzODc4YzAxMzUz
OTljNDI1MjhhN2FkZjU1ZWRjY2QwMDViMTIxZi4uYjIzYTkzODg2MGU1YTJlMjFjNGI2NmM5YWUy
MDExYzdmYWM4YzM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKQEAgLTU2LDcgKzU2LDcgQEAgY29uc3RleHByIGNv
bnN0IEZyYW1lc1BlclNlY29uZCBIYWxmU3BlZWRUaHJvdHRsaW5nRnJhbWVzUGVyU2Vjb25kID0g
MzA7CiAKIFdFQkNPUkVfRVhQT1JUIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJTZWNvbmROZWFy
ZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCk7CiAKLS8vIFRoaXMgd2lsbCByZXR1cm4gV1RG
OjpudWxsb3B0IGlmIHRocm90dGxpbmcgcmVzdWx0cyBpbiBhIGZyZXF1ZW5jeSA8IDFmcHMuCisv
LyBUaGlzIHdpbGwgcmV0dXJuIHN0ZDo6bnVsbG9wdCBpZiB0aHJvdHRsaW5nIHJlc3VsdHMgaW4g
YSBmcmVxdWVuY3kgPCAxZnBzLgogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RnJhbWVzUGVyU2Vj
b25kPiBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRocm90dGxpbmdSZWFzb24+
LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQsIGJvb2wg
cHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUyk7CiAKIFdFQkNPUkVfRVhQT1JUIFNlY29uZHMgcHJl
ZmVycmVkRnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4sIE9wdGlvbmFs
PEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVmZXJGcmFt
ZVJhdGVzTmVhcjYwRlBTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5o
CmluZGV4IDZlMDYwMmUzYWVhNmUzOWE4NjRlODgxMzMwNWFkZjg5MjI5ZGMzODAuLmRhYWIwYTM1
NThlZGQ1ZjNkNWVjYTcwYmQ2OThmNDcxMjdjZmZjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSBPcHRpb25hbDxT
UkdCQTx1aW50OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygpIGNvbnN0CiB7CiAgICAg
aWYgKGlzSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIHVpbnQ2
NF90IENvbG9yOjplbmNvZGVkRmxhZ3MoT3B0aW9uU2V0PEZsYWdzSW5jbHVkaW5nUHJpdmF0ZT4g
ZmxhZ3MpCkBAIC01NzcsNyArNTc3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9u
YWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBib29sIGlz
VmFsaWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
aXNWYWxpZCkKICAgICAgICAgcmV0dXJuIENvbG9yIHsgfTsKQEAgLTU4Niw0NCArNTg2LDQ0IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPENvbG9yPiBDb2xvcjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAKICAgICBib29sIGlzU2VtYW50aWM7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpc1NlbWFudGljKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc1NlbWFudGljKQogICAgICAgICBm
bGFncy5hZGQoRmxhZ3M6OlNlbWFudGljKTsKIAogICAgIGJvb2wgdXNlc0NvbG9yRnVuY3Rpb25T
ZXJpYWxpemF0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNlc0NvbG9yRnVuY3Rpb25T
ZXJpYWxpemF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh1c2VzQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRp
b24pCiAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6VXNlQ29sb3JGdW5jdGlvblNlcmlhbGl6YXRp
b24pOwogCiAgICAgYm9vbCBpc091dE9mTGluZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlz
T3V0T2ZMaW5lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc091dE9mTGluZSkgewogICAgICAgICBDb2xvclNw
YWNlIGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYzE7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYzEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZsb2F0IGMyOwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGMyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBmbG9hdCBjMzsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjMykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYWxwaGE7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGEpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBDb2xvciB7IE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7IGMxLCBjMiwgYzMsIGFs
cGhhIH0pLCBjb2xvclNwYWNlLCBmbGFncyB9OwogICAgIH0KIAogICAgIHVpbnQzMl90IHZhbHVl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIENvbG9y
IHsgYXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0pLCBmbGFncyB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKaW5kZXggYzRiZjAzMmI3MGM5ODgzYjk3NmUyMjZmYWFjMjYyOTRlMGM4
NGVlNS4uZWU0MzMzYzY0ZDUzNzIyZTMyNGE1ODE0YTY3MTdmNGIzN2Q3MzcwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuY3BwCkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB1bnNpZ25lZCBDb21wbGV4VGV4dENv
bnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxH
bAogICAgICAgICAgICAgICAgIGlmIChjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmlzQm91bmRhcnko
aGl0SW5kZXgpKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBoaXRJbmRleDsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9
IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IucHJlY2VkaW5nKGhpdEluZGV4KS52YWx1ZU9yKDApOwor
ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9y
LnByZWNlZGluZyhoaXRJbmRleCkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgICAgICAgICBpZiAo
IWluY2x1ZGVQYXJ0aWFsR2x5cGhzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
eFRleHRSdW4uc3RyaW5nTG9jYXRpb24oKSArIGNsdXN0ZXJTdGFydDsKIAotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmZvbGxvd2lu
ZyhoaXRJbmRleCkudmFsdWVPcihzdHJpbmdMZW5ndGgpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmZvbGxvd2luZyhoaXRJbmRl
eCkudmFsdWVfb3Ioc3RyaW5nTGVuZ3RoKTsKIAogICAgICAgICAgICAgICAgIGZsb2F0IGNsdXN0
ZXJXaWR0aDsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNlYXJjaCBzdG9wcyBhdCB0
aGUgYm91bmRhcmllcyBvZiBjb21wbGV4VGV4dFJ1bi4gSW4gdGhlb3J5LCBpdCBzaG91bGQgZ28g
b24gaW50byBuZWlnaGJvcmluZyBDb21wbGV4VGV4dFJ1bnMKQEAgLTMxOCwxMyArMzE4LDEzIEBA
IHN0YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlKGNvbnN0IFVD
aGFyKiYgaXRlcmF0b3IsIGNvbnN0IFVDCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFVDaGFyMzI+
IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKIHsKICAgICBpZiAoVV9HRVRfR0Nf
TUFTSyhiYXNlQ2hhcmFjdGVyKSAmIFVfR0NfTV9NQVNLKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVUNoYXIzMiB1cHBl
cmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rlcik7CiAgICAgQVNTRVJUKHVw
cGVyY2FzZUNoYXJhY3RlciA9PSBiYXNlQ2hhcmFjdGVyIHx8IChVX0lTX0JNUChiYXNlQ2hhcmFj
dGVyKSA9PSBVX0lTX0JNUCh1cHBlcmNhc2VDaGFyYWN0ZXIpKSk7CiAgICAgaWYgKHVwcGVyY2Fz
ZUNoYXJhY3RlciAhPSBiYXNlQ2hhcmFjdGVyKQogICAgICAgICByZXR1cm4gdXBwZXJjYXNlQ2hh
cmFjdGVyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkU3ludGhlc2l6ZShib29sIGRvbnRTeW50aGVzaXpl
U21hbGxDYXBzLCBjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBiYXNlQ2hhcmFjdGVyLCBP
cHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZvbnRWYXJpYW50Q2FwcyBmb250VmFy
aWFudENhcHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJvY2Vzc2luZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApp
bmRleCBhY2Y0MzU5ZWIwYmM4N2JjM2JkZWFkOTA1M2IyZTFkZTNmZmM1MjM5Li5lYzJkYTAyMzky
ZjBhYzljYjg0NGRkNDRjMmZiYmFkYjc1YTY4NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCkBAIC0yMTMsNyAr
MjEzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3Vi
bGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaENvbnRleHQo
KTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBjb25zdF9jYXN0
PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0KCk7CiAgICAgICAgICAg
ICByZXR1cm4gYmFja2VuZC0+Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9ybWF0LCBzcmNSZWN0KTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50ID0geyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQg
PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBvdmVycmlkZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNw
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaAppbmRleCBmODgzYWJiZDQ5ZjUzNDY2MjE4ZTc2NjI3OGVjOWFmMGI5OGM4MDRjLi43
ZGEyM2ZkODI3ZGFiZDUxMjZhNzcxODAxZDNlOWNkMTIxN2IyYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aApAQCAtNjYsNyArNjYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZAogICAgIE9wdGlvbmFs
PFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4g
cGxhdGZvcm1Db2xvclNwYWNlOwogICAgIGlmICghcGxhdGZvcm1Db2xvclNwYWNlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JT
cGFjZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IGFlNjhkMzQ3YzdmMmQzMWY0OTNm
YjI4M2I5ZDkyZDMyNTc5Mzc4NjQuLmM2NzY5MDAyYTI1MWZhMTVjYmU5NWIzMGExOTY4ODI0YjI5
MWMwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIE9wdGlvbmFs
PEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjptYXhpbXVtQ2xpZW50UHJl
ZmVycmVkRnJhbWVzUGVyCiB7CiAgICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBtYXhGcmFt
ZXNQZXJTZWNvbmQ7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCi0gICAgICAg
IG1heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4PEZyYW1lc1BlclNlY29uZD4obWF4RnJhbWVz
UGVyU2Vjb25kLnZhbHVlT3IoMCksIGNsaWVudC0+cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkp
OworICAgICAgICBtYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heDxGcmFtZXNQZXJTZWNvbmQ+
KG1heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgY2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQ
ZXJTZWNvbmQoKSk7CiAKICAgICByZXR1cm4gbWF4RnJhbWVzUGVyU2Vjb25kOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuaAppbmRleCBkMWEwOTgyMjlkMjFiYTE0Yjg4Y2M2YjliYzQ3MTRmYzExMGJhYWNkLi5h
MjJiNjMwNTY2Njk2ZDJlZjdmMTE2NGZkZWI1MGU3NjU3YzFkMmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGllbnRQcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudCYpOwogICAgIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25k
KCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQ7IH0K
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZy
YW1lc1BlclNlY29uZCgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0
aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JN
YW5hZ2VyLmNwcAppbmRleCBhYWY4ZjRkZDJjZmUwZDhiYWQ4NzI0MGYxNzNmMmYzMDg1ZjBjMzM1
Li42ODM2Nzc2ZTc2YzAzY2IyNjM5MDdkZjFkZDgyZDJhNmQyYjlkYzQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIE9wdGlvbmFsPEZyYW1l
c1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6bm9taW5hbEZyYW1lc1Bl
clNlY29uZEZvCiAgICAgaWYgKG1vbml0b3IpCiAgICAgICAgIG1vbml0b3ItPmRpc3BsYXlOb21p
bmFsRnJhbWVzUGVyU2Vjb25kKCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
cjo6ZGlzcGxheVdhc1VwZGF0ZWQoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBjb25zdCBE
aXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCmluZGV4IDA2YzQyY2VlYmM0NTQzZTdmNWZkM2Jh
MzQ1YWYyYmViZWVmODI1NmUuLmFiYmVjZjY1YTQyYzI2MTYwYWUyMDI5NThiY2U4OWE1MGI4M2Jh
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlV
cGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5VXBk
YXRlLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25hbDxEaXNwbGF5VXBkYXRlPiBEaXNwbGF5
VXBkYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
dXBkYXRlSW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJbmRleDsKICAgICBpZiAoIXVwZGF0
ZUluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiB1cGRhdGVzUGVyU2Vj
b25kOwogICAgIGRlY29kZXIgPj4gdXBkYXRlc1BlclNlY29uZDsKICAgICBpZiAoIXVwZGF0ZXNQ
ZXJTZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnVwZGF0ZUluZGV4LCAqdXBkYXRlc1BlclNl
Y29uZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExp
bmUuY3BwCmluZGV4IDQ5ODFjNjUwZTVhNzJhM2ZkZTk1ZTU2NGVjNDAzOTQzZWUxNGU0OGIuLmYx
N2E1ODU5ZThjZTg5MzhiZjE4YzMwNDg3OWI3MTJkNTdlYzJmNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcApAQCAtNjgsNyArNjgsNyBAQCBj
b25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVyc2VjdGlvbldpdGgoY29u
c3QgRmxvYXRMaW5lJiBvdGhlckxpbgogICAgIAogICAgIC8vIEEgZGVub21pbmF0b3Igb2YgemVy
byBpbmRpY2F0ZXMgdGhlIGxpbmVzIGFyZSBwYXJhbGxlbCBvciBjb2luY2lkZW50LCB3aGljaCBt
ZWFucyB0aGVyZSBpcyBubyB0cnVlIGludGVyc2VjdGlvbi4KICAgICBpZiAoIWRlbm9taW5hdG9y
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIGZsb2F0IHRoaXNMaW5lQ29tbW9uTnVtZXJhdG9yRmFjdG9yID0gKG1f
c3RhcnQueCgpICogbV9lbmQueSgpKSAtIChtX3N0YXJ0LnkoKSAqIG1fZW5kLngoKSk7CiAgICAg
ZmxvYXQgb3RoZXJMaW5lQ29tbW9uTnVtZXJhdG9yRmFjdG9yID0gKG90aGVyTGluZS5zdGFydCgp
LngoKSAqIG90aGVyTGluZS5lbmQoKS55KCkpIC0gKG90aGVyTGluZS5zdGFydCgpLnkoKSAqIG90
aGVyTGluZS5lbmQoKS54KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdExpbmUuaAppbmRleCAxYTBkYjUwOGIwMDNmNGY2ZTUyNGUyNTUwYTVjZDFlYTllMTkwMWVh
Li4wNjg5NTBjOTMyZWM1YTE5NzE2MjJiNWZlZjY2Yzc4MDllNmRkY2YxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaApAQCAtNzUsMTIgKzc1LDEyIEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEZsb2F0TGluZT4gRmxvYXRMaW5lOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBzdGFydDsK
ICAgICBkZWNvZGVyID4+IHN0YXJ0OwogICAgIGlmICghc3RhcnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGbG9hdFBvaW50PiBlbmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7CiAgICAgaWYgKCFlbmQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgKnN0YXJ0LCAqZW5kIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaAppbmRleCA2MWIzZGVlNDllMGQyYmZkMmFlZDI3
MWRjNDlhNzY3MTZmNzZhMjJhLi5mNWRjYjQ2NjYwMmQzYTE4MzUxYmIwZTYyOTA5NWZjYzQxNjAy
ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaApA
QCAtMTczLDIyICsxNzMsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8Rmxv
YXRRdWFkPiBGbG9hdFF1YWQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PEZsb2F0UG9pbnQ+IHAxOwogICAgIGRlY29kZXIgPj4gcDE7CiAgICAgaWYgKCFwMSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAyOwogICAgIGRlY29kZXIgPj4gcDI7CiAgICAgaWYg
KCFwMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAzOwogICAgIGRlY29kZXIgPj4g
cDM7CiAgICAgaWYgKCFwMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHA0OwogICAg
IGRlY29kZXIgPj4gcDQ7CiAgICAgaWYgKCFwNCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcDEsICpw
MiwgKnAzLCAqcDQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
Y3BwCmluZGV4IGY5OTE4M2Q3Y2NiYjg1NGU0ZTRmYmNjNTUwOWEzMDNhYjNiNTI3ZmYuLmU1OTEy
YTk5ZDBlNmRkMjBmMWVkYjMwMGI2Mzk2ZjkxMTkxMzhjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIE9wdGlv
bmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIgY29kZVBvaW50KQogICAg
ICAgICByZXN1bHQgPSAweDU0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAg
ICByZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmgKaW5kZXggNzVmNjQ2YmZkMGMzODVlMGE0M2JiYjYxZTY3NzJhNDgxYTA5NjZhZS4uZDMz
NDcxM2M3NzQ3ZmY5Mzk2Zjg3YWZjNTVkN2Y2NzNhMTI4NmE1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtOTQsOSArOTQsOSBAQCBwdWJsaWM6CiAgICAgICAg
IE5vCiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShj
b25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0
aWFsID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6
OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxi
YWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRl
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNoZSogZm9udENhY2hlRm9y
VmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLAotICAgICAgICBW
aXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9y
aWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+ID0gV1RGOjpudWxsb3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZp
c2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4m
JiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhl
dGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSogPSBudWxscHRyKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CkBAIC0xODcsNyArMTg3LDcgQEAgcHVibGljOgog
ICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAg
R2x5cGggZ2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0
c0NvZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKLSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2Rl
UG9pbnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgT3B0
aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIFJl
ZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIoVUNoYXIzMiwgY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRDYWNoZSYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRl
eCBiODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2YzU3YTYyZTczLi5iNTAyZDlmZWQyYWY0
ZTc5ZTI5NmRmZmUyZTg2NTdlNDYwNWQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBPcHRpb25hbDxB
U0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcm
IGZhbWlseU5hbWUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRm9udFBsYXRmb3JtRGF0YSog
Rm9udENhY2hlOjpjYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3NlZEZhbWlseU5hbWUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggOTZj
OWYwZTY4ZDFiOWY0YTFhODg1YzAwYTAzZjNiMWY1ZjM0OTc5OS4uZDFlZmM4NWUyMGYwNmM4OGE3
ZDE1ZDJjODAyNWVlZTZmYjg5NGQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEdseXBoQnVmZmVy
IEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRoVG9Vc2UsIGNvbnN0IFRl
eHRSdW4mIHJ1biwKIAogRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywgQ3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QKIHsKLSAgICB1bnNpZ25l
ZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBk
ZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAgICAgYXV0byBnbHlwaEJ1
ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVz
dGluYXRpb24pOwogICAgIGdseXBoQnVmZmVyLmZsYXR0ZW4oKTsKIApAQCAtMjAwLDcgKzIwMCw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgaWYgKGlzTG9hZGluZ0N1c3RvbUZvbnRz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFs
dWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVf
b3IocnVuLmxlbmd0aCgpKTsKIAogICAgIGF1dG8gZ2x5cGhCdWZmZXIgPSBsYXlvdXRUZXh0KGNv
ZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0aW9uLCBGb3JUZXh0RW1w
aGFzaXNPck5vdDo6Rm9yVGV4dEVtcGhhc2lzKTsKICAgICBnbHlwaEJ1ZmZlci5mbGF0dGVuKCk7
CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3Mo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4KIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3Bs
YXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIEFTU0VS
VCghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpOwotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9u
ID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0g
dG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKICAgICAKICAgICAvLyBGSVhNRTogVXNlIHRoZSBm
YXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBh
bmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKICAgICBDb2RlUGF0
aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBib29s
IEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZhaWxhYmxlKGZsb2F0JiB3aWR0
aCkgY29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBm
cm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgZGVzdGlu
YXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRp
b24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlmIChjb2RlUGF0aChydW4sIGZy
b20sIHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0dXJuIGFkanVzdFNlbGVj
dGlvblJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgZnJvbSwgZGVzdGluYXRp
b24pOwogCkBAIC01MDcsNyArNTA3LDcgQEAgRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNj
YWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFsPHVuc2lnbmUKIAogI2lm
ICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFzdCBjb2RlIHBhdGggb25j
ZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5kIGxpZ2F0dXJlcy4gU2Vl
IGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwg
cmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlT3IoMCkgfHwgdG8udmFsdWVPcihydW4u
bGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkpCisgICAgaWYgKChlbmFibGVLZXJuaW5nKCkgfHwg
cmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlX29yKDApIHx8IHRvLnZhbHVlX29yKHJ1
bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgcmV0dXJuIENvZGVQYXRoOjpD
b21wbGV4OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJvbSk7CkBAIC0xMjAxLDE5ICsxMjAx
LDE5IEBAIHN0YXRpYyBHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVuZGVybGluZVR5cGUoY29u
c3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5CiBPcHRpb25hbDxHbHlwaERhdGE+IEZvbnRD
YXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRvbVN0cmluZyYgbWFyaykg
Y29uc3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVQ2hhcjMyIGNoYXJh
Y3RlcjsKICAgICBpZiAoIW1hcmsuaXM4Qml0KCkpIHsKICAgICAgICAgU3Vycm9nYXRlUGFpckF3
YXJlVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKG1hcmsuY2hhcmFjdGVyczE2KCksIDAsIG1hcmsubGVu
Z3RoKCksIG1hcmsubGVuZ3RoKCkpOwogICAgICAgICB1bnNpZ25lZCBjbHVzdGVyTGVuZ3RoOwog
ICAgICAgICBpZiAoIWl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBjbHVzdGVyTGVuZ3RoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0gZWxzZQogICAgICAgICBjaGFyYWN0ZXIgPSBtYXJrWzBdOwogCiAg
ICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNo
YXJhY3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKLSAgICByZXR1cm4gZ2x5cGhE
YXRhLnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBnbHlwaERhdGEudmFsdWUoKS5pc1ZhbGlkKCkgPyBnbHlwaERhdGEgOiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrQXNjZW50KGNvbnN0IEF0b21T
dHJpbmcmIG1hcmspIGNvbnN0CkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9hdFBvaW50IHAxLCBGbG9h
dFBvaW50CiB7CiAgICAgaWYgKChwMS55KCkgPCB5ICYmIHAyLnkoKSA+IHkpIHx8IChwMS55KCkg
PiB5ICYmIHAyLnkoKSA8IHkpKQogICAgICAgICByZXR1cm4gcDEueCgpICsgKHkgLSBwMS55KCkp
ICogKHAyLngoKSAtIHAxLngoKSkgLyAocDIueSgpIC0gcDEueSgpKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyB2b2lkIHVw
ZGF0ZVgoR2x5cGhJdGVyYXRpb25TdGF0ZSYgc3RhdGUsIGZsb2F0IHgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCAxZWY5ZTc2ZmYxNmQ0
MDhmNTc3ODhmZmJjZmQ4NmQ1NzU1NWFiZTJkLi44MDI4YjNhZWE2NjhmZDk3MzAwYWEwZjI0MjU3
MzMxMTk3OGFhZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51bGxwdHIpIGNvbnN0Owog
CiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05vdFBhaW50SWZGb250Tm90
UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0g
V1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250
Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBkcmF3VGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2ln
bmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQsIEN1c3Rv
bUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CiAg
ICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2ln
bmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJv
bSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAg
dm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20g
PSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAg
RGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRSZWN0JiBsaW5lRXh0ZW50
cykgY29uc3Q7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGZsb2F0
IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIEhhc2hTZXQ8
Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKICAgICBpbnQgb2Zmc2V0Rm9yUG9z
aXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29sIGluY2x1ZGVQYXJ0aWFs
R2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0
IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwg
T3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lkIGFk
anVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxl
Y3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMoKSBjb25zdCB7IHJldHVy
biBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRWYXJpYW50Q2Fwczo6U21h
bGw7IH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBmYW1pbHlD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZhbWlseUNvdW50KCk7IH0K
ICAgICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVy
biBtX2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCi0gICAgLy8gQSBXVEY6Om51bGxv
cHQgcmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9ybWFsIi4KKyAgICAvLyBB
IHN0ZDo6bnVsbG9wdCByZXR1cm4gdmFsdWUgaW5kaWNhdGVzICJmb250LXN0eWxlOiBub3JtYWwi
LgogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGljKCkgY29uc3QgeyByZXR1
cm4gbV9mb250RGVzY3JpcHRpb24uaXRhbGljKCk7IH0KICAgICBGb250U2VsZWN0aW9uVmFsdWUg
d2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24ud2VpZ2h0KCk7IH0KICAg
ICBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERl
c2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOyB9CkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKTsKIAogICAg
IGVudW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2ltcGxlLCBDb21wbGV4LCBT
aW1wbGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNvZGVQYXRoKGNvbnN0IFRl
eHRSdW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBDb2RlUGF0aCBjb2RlUGF0
aChjb25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20gPSBzdGQ6Om51bGxvcHQs
IE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgc3RhdGlj
IENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENoYXIqLCB1bnNpZ25lZCkg
eyByZXR1cm4gQ29kZVBhdGg6OlNpbXBsZTsgfQogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0
ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlw
dGlvbi5oCmluZGV4IDBhN2RmMjUyOGRhYzYyYThjNWE4OTBiZDJkZmE0MzBhMjE0ZGQ3ZjYuLmZm
ZjNlNjBlNDA3OTdhN2QyNTdlMGI1YTlmMmFmMjY5N2QxNWJmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9u
LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIEluaXRpYWwg
dmFsdWVzIGZvciBmb250IHByb3BlcnRpZXMuCi0gICAgc3RhdGljIE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4gaW5pdGlhbEl0YWxpYygpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAg
IHN0YXRpYyBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRpYWxJdGFsaWMoKSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgRm9udFN0eWxlQXhpcyBpbml0aWFsRm9u
dFN0eWxlQXhpcygpIHsgcmV0dXJuIEZvbnRTdHlsZUF4aXM6OnNsbnQ7IH0KICAgICBzdGF0aWMg
Rm9udFNlbGVjdGlvblZhbHVlIGluaXRpYWxXZWlnaHQoKSB7IHJldHVybiBub3JtYWxXZWlnaHRW
YWx1ZSgpOyB9CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBpbml0aWFsU3RyZXRjaCgp
IHsgcmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IGYzOTQ3NWRlY2YyMGMz
OGRjOGMzNDE5NjJkM2MxZmNkMGEyNTQ1ZTUuLjk4MDYxZWRiMzRhNjYwOGQ4YzU1ZjdkNTUyNjYx
YWRkNmE5OWNlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnREZXNjcmlwdGlvbi5oCkBAIC0yNTYsMTYyICsyNTYsMTYyIEBAIE9wdGlvbmFsPEZvbnRE
ZXNjcmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBPcHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPiBmZWF0dXJlU2V0dGluZ3M7CiAgICAgZGVj
b2RlciA+PiBmZWF0dXJlU2V0dGluZ3M7CiAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxGb250VmFyaWF0aW9uU2V0dGluZ3M+IHZhcmlhdGlvblNldHRpbmdzOwog
ICAgIGRlY29kZXIgPj4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAgaWYgKCF2YXJpYXRpb25TZXR0
aW5ncykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxvY2FsZTsKICAgICBkZWNvZGVy
ID4+IGxvY2FsZTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4+IGl0YWxpYzsKICAgICBkZWNvZGVyID4+IGl0YWxpYzsKICAg
ICBpZiAoIWl0YWxpYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gc3Ry
ZXRjaDsKICAgICBkZWNvZGVyID4+IHN0cmV0Y2g7CiAgICAgaWYgKCFzdHJldGNoKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7CiAgICAgZGVjb2RlciA+PiB3
ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY29tcHV0
ZWRTaXplOwogICAgIGRlY29kZXIgPj4gY29tcHV0ZWRTaXplOwogICAgIGlmICghY29tcHV0ZWRT
aXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udE9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKICAg
ICBkZWNvZGVyID4+IG9yaWVudGF0aW9uOwogICAgIGlmICghb3JpZW50YXRpb24pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxOb25DSktHbHlwaE9yaWVudGF0aW9uPiBub25DSktHbHlwaE9yaWVudGF0aW9u
OwogICAgIGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhPcmllbnRhdGlvbjsKICAgICBpZiAoIW5vbkNK
S0dseXBoT3JpZW50YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250V2lkdGhWYXJpYW50PiB3
aWR0aFZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7CiAgICAgaWYgKCF3aWR0
aFZhcmlhbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5n
TW9kZTsKICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCFyZW5kZXJpbmdN
b2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VGV4dFJlbmRlcmluZ01vZGU+IHRleHRSZW5kZXJpbmdN
b2RlOwogICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCF0ZXh0UmVu
ZGVyaW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTeW50aGVzaXM+IGZvbnRTeW50aGVz
aXM7CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhlc2lzOwogICAgIGlmICghZm9udFN5bnRoZXNp
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29tbW9u
TGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudENvbW1vbkxpZ2F0dXJlczsKICAgICBp
ZiAoIXZhcmlhbnRDb21tb25MaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFu
dExpZ2F0dXJlcz4gdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+
PiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnREaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+
IHZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEhpc3Rv
cmljYWxMaWdhdHVyZXM7CiAgICAgaWYgKCF2YXJpYW50SGlzdG9yaWNhbExpZ2F0dXJlcykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJpYW50Q29udGV4dHVhbEFs
dGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAg
ICAgaWYgKCF2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CiAgICAgZGVjb2RlciA+PiB2YXJp
YW50UG9zaXRpb247CiAgICAgaWYgKCF2YXJpYW50UG9zaXRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGb250VmFyaWFudENhcHM+IHZhcmlhbnRDYXBzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudENh
cHM7CiAgICAgaWYgKCF2YXJpYW50Q2FwcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50
TnVtZXJpY0ZpZ3VyZT4gdmFyaWFudE51bWVyaWNGaWd1cmU7CiAgICAgZGVjb2RlciA+PiB2YXJp
YW50TnVtZXJpY0ZpZ3VyZTsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljRmlndXJlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gdmFyaWFudE51bWVyaWNTcGFj
aW5nOwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNTcGFjaW5nOwogICAgIGlmICghdmFy
aWFudE51bWVyaWNTcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmlj
RnJhY3Rpb24+IHZhcmlhbnROdW1lcmljRnJhY3Rpb247CiAgICAgZGVjb2RlciA+PiB2YXJpYW50
TnVtZXJpY0ZyYWN0aW9uOwogICAgIGlmICghdmFyaWFudE51bWVyaWNGcmFjdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw+IHZhcmlhbnROdW1lcmljT3Jk
aW5hbDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnROdW1lcmljT3JkaW5hbDsKICAgICBpZiAoIXZh
cmlhbnROdW1lcmljT3JkaW5hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJp
Y1NsYXNoZWRaZXJvPiB2YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4g
dmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljU2xhc2hl
ZFplcm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVybmF0ZXM+IHZhcmlhbnRB
bHRlcm5hdGVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEFsdGVybmF0ZXM7CiAgICAgaWYgKCF2
YXJpYW50QWx0ZXJuYXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWFudD4gdmFyaWFudEVhc3RBc2lhblZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50
RWFzdEFzaWFuVmFyaWFudDsKICAgICBpZiAoIXZhcmlhbnRFYXN0QXNpYW5WYXJpYW50KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gdmFyaWFudEVhc3RBc2lh
bldpZHRoOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEVhc3RBc2lhbldpZHRoOwogICAgIGlmICgh
dmFyaWFudEVhc3RBc2lhbldpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0
QXNpYW5SdWJ5PiB2YXJpYW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRF
YXN0QXNpYW5SdWJ5OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1YnkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGb250T3B0aWNhbFNpemluZz4gb3B0aWNhbFNpemluZzsKICAgICBkZWNvZGVyID4+
IG9wdGljYWxTaXppbmc7CiAgICAgaWYgKCFvcHRpY2FsU2l6aW5nKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxlQXhpczsKICAgICBkZWNvZGVyID4+IGZvbnRTdHls
ZUF4aXM7CiAgICAgaWYgKCFmb250U3R5bGVBeGlzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8QWxsb3dV
c2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzOwogICAgIGRl
Y29kZXIgPj4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAgICAgaWYgKCFzaG91bGRB
bGxvd1VzZXJJbnN0YWxsZWRGb250cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZERp
c2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nOwogICAgIGRlY29kZXIgPj4gc2hvdWxkRGlzYWJsZUxp
Z2F0dXJlc0ZvclNwYWNpbmc7CiAgICAgaWYgKCFzaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3Bh
Y2luZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGZWF0dXJlU2V0dGluZ3MoV1RGTW92
ZSgqZmVhdHVyZVNldHRpbmdzKSk7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldFZhcmlhdGlvblNl
dHRpbmdzKFdURk1vdmUoKnZhcmlhdGlvblNldHRpbmdzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3Bw
CmluZGV4IDZlNWY4YjQ5YjdjNGE0YTc0Yjg5ZWU0MDY0M2YxYzhiZDEyZDI1NmMuLjM1N2I0MDIz
ZWUwOGRhMGNkZTg5NjgyZDhkY2M3NzhlMWM4ZWZlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIGF1dG8gRm9udFNlbGVjdGlvbkFsZ29yaXRobTo6c3RyZXRjaERp
c3RhbmNlKENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpIGNvbnN0IC0+CiBhdXRvIEZvbnRTZWxl
Y3Rpb25BbGdvcml0aG06OnN0eWxlRGlzdGFuY2UoQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcykg
Y29uc3QgLT4gRGlzdGFuY2VSZXN1bHQKIHsKICAgICBhdXRvIHNsb3BlID0gY2FwYWJpbGl0aWVz
LnNsb3BlOwotICAgIGF1dG8gcmVxdWVzdFNsb3BlID0gbV9yZXF1ZXN0LnNsb3BlLnZhbHVlT3Io
bm9ybWFsSXRhbGljVmFsdWUoKSk7CisgICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Qu
c2xvcGUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgQVNTRVJUKHNsb3BlLmlz
VmFsaWQoKSk7CiAgICAgaWYgKHNsb3BlLmluY2x1ZGVzKHJlcXVlc3RTbG9wZSkpCiAgICAgICAg
IHJldHVybiB7IEZvbnRTZWxlY3Rpb25WYWx1ZSgpLCByZXF1ZXN0U2xvcGUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0
aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdv
cml0aG0uaAppbmRleCA2NmY4ZmRjMTc1YjZhMzEwOTcxODZmMmQ0YmM3NzAxZjc1YjQ0ZWZjLi5i
YzhkN2Q5ZTM5ZWNlMzIyNGVjODhmMjM4ODA5ZjlmYmM0NzVlMTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRo
bS5oCkBAIC05Miw3ICs5Miw3IEBAIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gRm9udFNl
bGVjdGlvblZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250
U2VsZWN0aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBiYWNraW5nOwogICAgIGRlY29kZXIgPj4gYmFj
a2luZzsKICAgICBpZiAoIWJhY2tpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250U2VsZWN0aW9uVmFsdWUgcmVz
dWx0OwogICAgIHJlc3VsdC5tX2JhY2tpbmcgPSAqYmFja2luZzsKQEAgLTM2MiwxMiArMzYyLDEy
IEBAIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gRm9udFNlbGVjdGlvblJhbmdlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZh
bHVlPiBtaW5pbXVtOwogICAgIGRlY29kZXIgPj4gbWluaW11bTsKICAgICBpZiAoIW1pbmltdW0p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZhbHVlPiBtYXhpbXVtOwog
ICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sgKm1pbmltdW0sICptYXhpbXVtIH19OwogfQpAQCAtNDA1LDcgKzQwNSw3IEBAIGlubGlu
ZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGb250U2VsZWN0
aW9uVmFsdWUmIGZvbnRTZWxlCiAKIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+JiBvcHRpb25hbEZv
bnRTZWxlY3Rpb25WYWx1ZSkKIHsKLSAgICB0cyA8PCBvcHRpb25hbEZvbnRTZWxlY3Rpb25WYWx1
ZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOworICAgIHRzIDw8IG9wdGlvbmFsRm9udFNl
bGVjdGlvblZhbHVlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOwogICAgIHJldHVybiB0
czsKIH0KIApAQCAtNDg0LDE3ICs0ODQsMTcgQEAgc3RydWN0IEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXMgewogCiAgICAgY29uc3RleHByIFJhbmdlIGNvbXB1dGVXZWlnaHQoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHdlaWdodC52YWx1ZU9yKFJhbmdlIHsgbm9ybWFs
V2VpZ2h0VmFsdWUoKSB9KTsKKyAgICAgICAgcmV0dXJuIHdlaWdodC52YWx1ZV9vcihSYW5nZSB7
IG5vcm1hbFdlaWdodFZhbHVlKCkgfSk7CiAgICAgfQogCiAgICAgY29uc3RleHByIFJhbmdlIGNv
bXB1dGVXaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gd2lkdGgudmFsdWVPcihS
YW5nZSB7IG5vcm1hbFN0cmV0Y2hWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4gd2lkdGgudmFs
dWVfb3IoUmFuZ2UgeyBub3JtYWxTdHJldGNoVmFsdWUoKSB9KTsKICAgICB9CiAKICAgICBjb25z
dGV4cHIgUmFuZ2UgY29tcHV0ZVNsb3BlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBz
bG9wZS52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFsdWUoKSB9KTsKKyAgICAgICAgcmV0
dXJuIHNsb3BlLnZhbHVlX29yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFsdWUoKSB9KTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTIyLDE3ICs1MjIsMTcgQEAgT3B0
aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4gRm9udFNlbGVjdGlvblNw
ZWNpZmllZENhcGFiaWxpdGllczoKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiB3ZWlnaHQ7
CiAgICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxPcHRpb25hbFJhbmdlPiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlm
ICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiBzbG9wZTsKICAgICBk
ZWNvZGVyID4+IHNsb3BlOwogICAgIGlmICghc2xvcGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKndl
aWdodCwgKndpZHRoLCAqc2xvcGUgfX07CiB9CkBAIC01NTIsNyArNTUyLDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIENhcGFiaWxpdGllcyA9IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM7CiAKICAg
ICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKCkgPSBkZWxldGU7Ci0gICAgRm9udFNlbGVjdGlvbkFs
Z29yaXRobShGb250U2VsZWN0aW9uUmVxdWVzdCwgY29uc3QgVmVjdG9yPENhcGFiaWxpdGllcz4m
LCBPcHRpb25hbDxDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllc0JvdW5kcyA9IFdURjo6bnVsbG9w
dCk7CisgICAgRm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0aW9uUmVxdWVzdCwgY29u
c3QgVmVjdG9yPENhcGFiaWxpdGllcz4mLCBPcHRpb25hbDxDYXBhYmlsaXRpZXM+IGNhcGFiaWxp
dGllc0JvdW5kcyA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdHJ1Y3QgRGlzdGFuY2VSZXN1bHQg
ewogICAgICAgICBGb250U2VsZWN0aW9uVmFsdWUgZGlzdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCmluZGV4IDA3
ODNjNTJiMWMzNDNlMWRkNWU3ODdmYTQ3NDA0Y2U0ZWY2NWFkNDcuLjVjY2NmZmJiODU4ZDkyMjIy
YWUzNmI3YTUxY2E2OTQwYjIxYzA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC0xMjEsMjcgKzEyMSwyNyBA
QCBPcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dlZFNldHRpbmc8VD46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIwOwogICAg
IGRlY29kZXIgPj4gY2hhcjA7CiAgICAgaWYgKCFjaGFyMCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVp
bnQ4X3Q+IGNoYXIxOwogICAgIGRlY29kZXIgPj4gY2hhcjE7CiAgICAgaWYgKCFjaGFyMSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIyOwogICAgIGRlY29kZXIgPj4gY2hhcjI7CiAg
ICAgaWYgKCFjaGFyMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIzOwogICAgIGRl
Y29kZXIgPj4gY2hhcjM7CiAgICAgaWYgKCFjaGFyMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFQ+IHZh
bHVlOwogICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBGb250VGFnZ2VkU2V0dGluZzxUPih7ewogICAgICAgICBzdGF0aWNfY2FzdDxjaGFyPigq
Y2hhcjApLApAQCAtMjA4LDcgKzIwOCw3IEBAIE9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nczxU
Pj4gRm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBP
cHRpb25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+PiBsaXN0OwogICAgIGRlY29kZXIg
Pj4gbGlzdDsKICAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250VGFnZ2VkU2V0dGluZ3MgcmVz
dWx0OwogICAgIHJlc3VsdC5tX2xpc3QgPSBXVEZNb3ZlKCpsaXN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCmluZGV4IDRiOGIzZTI3NmI0MzliNTdlYzBj
ZTNjYmQ5MzZkZTI3OTQxYzllOWUuLmNjZDNlODU3YTVjYTljZDhkYTA5NjdjMWFiMDkzNGFmYzM3
NGM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJD
Qy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBPcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6ZnJvbVN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogewogICAgIGF1dG8gYXNjaWlWYWx1ZSA9IHN0cmluZ1Zh
bHVlLmFzY2lpKCk7CiAgICAgaWYgKGFzY2lpVmFsdWUubGVuZ3RoKCkgIT0gNCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGNvbnN0IGNoYXIqIGRhdGEgPSBhc2NpaVZhbHVlLmRhdGEoKTsKICAgICBBU1NFUlQoYXNjaWlW
YWx1ZS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29u
dGV4dC5jcHAKaW5kZXggY2U3YTQzOWUyZDFiMWVjNmY0M2JhMTkxNmVkNjE5OTlmOWE1ODk3OS4u
N2FiYzNjMDhmZTIxODg2ZDJhYjIxOWVkYjkzYTAxMGNkYmRlNTFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xODYsOCArMTg2LDgg
QEAgdW5zaWduZWQgR0xDb250ZXh0Ojp2ZXJzaW9uKCkKICAgICAgICAgICAgIHZlcnNpb25EaWdp
dHMgPSB2ZXJzaW9uU3RyaW5nQ29tcG9uZW50c1swXS5zcGxpdCgnLicpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV92ZXJzaW9uID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5z
aWduZWQ+KHZlcnNpb25EaWdpdHNbMF0pLnZhbHVlT3IoMCkgKiAxMDAKLSAgICAgICAgICAgICsg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNb
MV0pLnZhbHVlT3IoMCkgKiAxMDsKKyAgICAgICAgbV92ZXJzaW9uID0gcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMF0pLnZhbHVlX29yKDAp
ICogMTAwCisgICAgICAgICAgICArIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVu
c2lnbmVkPih2ZXJzaW9uRGlnaXRzWzFdKS52YWx1ZV9vcigwKSAqIDEwOwogICAgIH0KICAgICBy
ZXR1cm4gbV92ZXJzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCmluZGV4IDMwOGRlNTUzZWMxZGZjN2IxNjdk
NDBjZDY3MWRjNWQ5ZmI2ZjdlYmQuLmMxZGI4MTI3N2E5NDA5ZDEyMWE1N2RjODk1MTY3NmI5ZTNi
MWM4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21l
dHJ5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
ZW9tZXRyeVV0aWxpdGllcy5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBSb3RhdGVkUmVjdCByb3Rh
dGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFk
JiBxdWFkLAogewogICAgIGNvbnN0ZXhwciBhdXRvIHR3b1BpRmxvYXQgPSAyICogcGlGbG9hdDsK
IAotICAgIGF1dG8gbWluUm90YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlvbkluUmFkaWFucy52YWx1
ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkpOworICAgIGF1dG8gbWlu
Um90YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlvbkluUmFkaWFucy52YWx1ZV9vcihzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpKTsKIAogICAgIGF1dG8gbGVmdE1pZFBvaW50ID0g
bWlkUG9pbnQocXVhZC5wMSgpLCBxdWFkLnA0KCkpOwogICAgIGF1dG8gcmlnaHRNaWRQb2ludCA9
IG1pZFBvaW50KHF1YWQucDIoKSwgcXVhZC5wMygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCmluZGV4IGQ4Y2VjNjkzNGMw
M2IxZTE1YzZlZjU2NGMxOWIzNDQwNGMxM2Y0ZDUuLjgwZGUxMGVmYWRiOTljNjhkM2UwNWJiNjEx
MjI5Nzk5ODQ2NWZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaApAQCAtNjgsNiArNjgsNiBAQCBzdHJ1Y3QgUm90YXRl
ZFJlY3QgewogICAgIGZsb2F0IGFuZ2xlSW5SYWRpYW5zOwogfTsKIAotV0VCQ09SRV9FWFBPUlQg
Um90YXRlZFJlY3Qgcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVtQW5nbGVPZlJvdGF0aW9u
KGNvbnN0IEZsb2F0UXVhZCYsIE9wdGlvbmFsPGZsb2F0PiBtaW5Sb3RhdGlvbkluUmFkaWFucyA9
IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBSb3RhdGVkUmVjdCByb3RhdGVkQm91bmRp
bmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxvYXRRdWFkJiwgT3B0aW9u
YWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3RkOjpudWxsb3B0KTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgKaW5kZXggNDVj
YWE3ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5Zi4uOTQ5NzUwZGIwZTQwNWVhYWNm
NGI1ZGRjN2Q3NzIxYWM3MWY4YTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gdW5jaGVja2VkU3RyaW5nT2Zmc2V0QXQoaW5kZXgpOwogICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8R2x5cGhCdWZmZXJTdHJp
bmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCA3OWUyZjUzODhjNDZlNTg5MjMwMTYxYzQ3
NDUyNTQxOTI0N2U4MmFiLi5hNDRmNjg0YWMwZTIwN2ExZWU0ZDkwZmI1NmYyMDIxZTBhNzQ1MWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJp
Y3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJp
Y3NNYXAuaApAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIEZsb2F0UmVjdCBH
bHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pjo6dW5rbm93bk1ldHJpY3MoKQogCiB0ZW1wbGF0ZTw+
IGlubGluZSBPcHRpb25hbDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0aW9uYWw8UGF0aD4+Ojp1
bmtub3duTWV0cmljcygpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJp
Y3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFn
ZVNsb3dDYXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnQuaAppbmRleCA5YzNkMDk3ZjU1OGE1Y2U2ODFjZDI5MzViYTIwNDE1
NTA4YTQxODJhLi4xMzllNzM1NWE4NTI0MjJkOGI4MDg2MjllMmNiNmM3ZDg4ZGVjNGYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKQEAgLTE3MywxMiAr
MTczLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPEdyYWRpZW50OjpD
b2xvclN0b3A+IEdyYWRpZW50OjpDb2xvclN0b3A6OmRlCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IG9m
ZnNldDsKICAgICBkZWNvZGVyID4+IG9mZnNldDsKICAgICBpZiAoIW9mZnNldCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICgh
Y29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9yIH19OwogfQpAQCAtMTk0
LDEyICsxOTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8R3JhZGll
bnQ6OkxpbmVhckRhdGE+IEdyYWRpZW50OjpMaW5lYXJEYXRhOjoKICAgICBPcHRpb25hbDxGbG9h
dFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAgICAgaWYgKCFwb2ludDAp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CiAgICAgZGVjb2RlciA+PiBw
b2ludDE7CiAgICAgaWYgKCFwb2ludDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnBvaW50MCwgKnBv
aW50MSB9fTsKIH0KQEAgLTIxOCwyNyArMjE4LDI3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IE9wdGlvbmFsPEdyYWRpZW50OjpSYWRpYWxEYXRhPiBHcmFkaWVudDo6UmFkaWFsRGF0YTo6
CiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQwOwogICAgIGRlY29kZXIgPj4gcG9pbnQw
OwogICAgIGlmICghcG9pbnQwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQx
OwogICAgIGRlY29kZXIgPj4gcG9pbnQxOwogICAgIGlmICghcG9pbnQxKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8ZmxvYXQ+IHN0YXJ0UmFkaXVzOwogICAgIGRlY29kZXIgPj4gc3RhcnRSYWRpdXM7CiAg
ICAgaWYgKCFzdGFydFJhZGl1cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBlbmRSYWRpdXM7
CiAgICAgZGVjb2RlciA+PiBlbmRSYWRpdXM7CiAgICAgaWYgKCFlbmRSYWRpdXMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxmbG9hdD4gYXNwZWN0UmF0aW87CiAgICAgZGVjb2RlciA+PiBhc3BlY3RSYXRp
bzsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpwb2ludDAsICpw
b2ludDEsICpzdGFydFJhZGl1cywgKmVuZFJhZGl1cywgKmFzcGVjdFJhdGlvIH19OwogfQpAQCAt
MjU0LDEyICsyNTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8R3Jh
ZGllbnQ6OkNvbmljRGF0YT4gR3JhZGllbnQ6OkNvbmljRGF0YTo6ZGUKICAgICBPcHRpb25hbDxG
bG9hdFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAgICAgaWYgKCFwb2lu
dDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGVSYWRpYW5zOwogICAgIGRlY29kZXIg
Pj4gYW5nbGVSYWRpYW5zOwogICAgIGlmICghYW5nbGVSYWRpYW5zKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHt7ICpwb2ludDAsICphbmdsZVJhZGlhbnMgfX07CiB9CkBAIC0yNzcsMTcgKzI3NywxNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxSZWY8R3JhZGllbnQ+PiBHcmFkaWVu
dDo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIE9wdGlvbmFsPERhdGE+IGRhdGE7CiAgICAgZGVj
b2RlciA+PiBkYXRhOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKCpkYXRhKSk7CiAKICAgICBPcHRpb25hbDxDb2xvclN0b3BW
ZWN0b3I+IHN0b3BzOwogICAgIGRlY29kZXIgPj4gc3RvcHM7CiAgICAgaWYgKCFzdG9wcykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBPcHRpb25hbDxib29sPiBzdG9wc1NvcnRlZDsKICAgICBkZWNvZGVyID4+IHN0b3BzU29y
dGVkOwogICAgIGlmICghc3RvcHNTb3J0ZWQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoKnN0b3Bz
U29ydGVkKQogICAgICAgICBncmFkaWVudC0+c2V0U29ydGVkQ29sb3JTdG9wcyhXVEZNb3ZlKCpz
dG9wcykpOwogICAgIGVsc2UgewpAQCAtMjk3LDcgKzI5Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IERlY29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjCiAKICAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRNZXRob2Q7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzcHJlYWRNZXRob2QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGdyYWRpZW50LT5zZXRTcHJl
YWRNZXRob2Qoc3ByZWFkTWV0aG9kKTsKIAogICAgIHJldHVybiBncmFkaWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IDk3MGMzNzVjYmQ1ODE5YTIwMGIyMGI2NzEzMjg3MGFkNWQ5MTdhOTAuLmM4YWMzODZiODEx
OTU2YTc3NmZlZGRmYWVlZjIyODJjOTRhYzg2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTE5LDcgKzUxOSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihp
c1JUTCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAg
IHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNl
KSk7CiAKLSAgICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4dCgqdGhpcywgc3VicnVu
LCBjdXJyUG9pbnQsIDAsIFdURjo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsK
KyAgICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4dCgqdGhpcywgc3VicnVuLCBjdXJy
UG9pbnQsIDAsIHN0ZDo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKICAgICAg
ICAgY3VyclBvaW50Lm1vdmUoYWR2YW5jZSk7CiAKICAgICAgICAgYmlkaVJ1biA9IGJpZGlSdW4t
Pm5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggZWUxNDJhMTk0YTRmYTU3MThiOTIyM2RlZGZkOWRiNWE1MGFjNzhk
MC4uZmUxNWVhYjA0YjM1ZmVmOGI3NGVlMWY3M2VlOGY4MTlkOTkwOWI3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE1
MywxMiArMTUzLDEyIEBAIE9wdGlvbmFsPERvY3VtZW50TWFya2VyTGluZVN0eWxlPiBEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8TW9k
ZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFtb2RlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiBz
aG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBpZiAoIXNob3VsZFVzZURhcmtBcHBlYXJhbmNl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UgfX07
CiB9CkBAIC00NjgsOSArNDY4LDkgQEAgcHVibGljOgogCiAgICAgLy8gVGV4dAogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBP
cHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0
IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAw
LCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
dW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250
Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6
OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250
Tm90UmVhZHkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxp
bmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDhk
Yzc0ZmU3YWVhNmU5OWI5MmQ3ZjIzYWQ2MjQ2Y2ZhNTZmNGFmN2YuLjJhZjI2YzljMmQwN2E0NDE3
MjViMmFlM2I3NDA5OGYzZjYyZmM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIGxheWVyICh0aGUgbG9jYXRpb24gb2YgaXRzIHRv
cC1sZWZ0IGNvcm5lciBpbiBpdHMgcGFyZW50KQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IFdU
Rjo6bnVsbG9wdDsgbV9wb3NpdGlvbiA9IHA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcCkgeyBtX2FwcHJveGltYXRlUG9zaXRpb24gPSBzdGQ6Om51
bGxvcHQ7IG1fcG9zaXRpb24gPSBwOyB9CiAKICAgICAvLyBhcHByb3hpbWF0ZVBvc2l0aW9uLCBp
ZiBzZXQsIG92ZXJyaWRlcyBwb3NpdGlvbigpIGFuZCBpcyB1c2VkIGR1cmluZyBjb3ZlcmFnZSBy
ZWN0IGNvbXB1dGF0aW9uLgogICAgIEZsb2F0UG9pbnQgYXBwcm94aW1hdGVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXBwcm94aW1hdGVQb3NpdGlvbiA/IG1fYXBwcm94aW1hdGVQb3NpdGlv
bi52YWx1ZSgpIDogbV9wb3NpdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCAxNmNkOWE0Mzc3ZjE4OGVlNTM0MGU0
ZjRhNDQ5ZmUyMTczOTUzMTgxLi5lNTgwNTJhM2RjY2VkMDQyNTI3ZmY0ZTcxNTgwN2I1M2NiYzll
YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRp
bGl0aWVzLmNwcApAQCAtMzksMjMgKzM5LDIzIEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBw
YXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKICAgICBhdXRv
IGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50
ID0gY29kZWNTcGxpdC5iZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgSEVWQ1BhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIC8vIENv
ZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgc3BlY2lmaWVkIGluIElTTy9JRUMgMTQ0
OTYtMTU6MjAxNCwgc2VjdGlvbiA4OgogICAgIGF1dG8gY29kZWNOYW1lID0gKm5leHRFbGVtZW50
OwogICAgIGlmIChjb2RlY05hbWUgIT0gImh2YzEiICYmIGNvZGVjTmFtZSAhPSAiaGV2MSIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gRmlyc3QgZWxlbWVudDogT3B0aW9uYWwgR2VuZXJhbCBQcm9maWxlIFNwYWNlIHBhcmFtZXRl
ciBbJ0EnLCAnQicsICdDJ10sIG1hcHBpbmcgdG8gWzEsIDIsIDNdCiAgICAgLy8gYW5kIFswXSBm
b3IgYWJzZW50LCB0aGVuIEdlbmVyYWwgUHJvZmlsZSBJREMgYXMgYSA1LWJpdCBkZWNpbWFsIG51
bWJlci4KICAgICBhdXRvIHByb2ZpbGVTcGFjZSA9ICpuZXh0RWxlbWVudDsKICAgICBpZiAoIXBy
b2ZpbGVTcGFjZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBwcm9m
aWxlU3BhY2VbMF07CiAgICAgYm9vbCBoYXNQcm9maWxlU3BhY2UgPSBmaXJzdENoYXJhY3RlciA+
PSAnQScgJiYgZmlyc3RDaGFyYWN0ZXIgPD0gJ0MnOwpAQCAtNjYsMzIgKzY2LDMyIEBAIE9wdGlv
bmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBj
b2RlY1N0cmluZykKIAogICAgIGF1dG8gcHJvZmlsZUlEQyA9IHBhcnNlSW50ZWdlcjx1aW50OF90
Pihwcm9maWxlU3BhY2UpOwogICAgIGlmICghcHJvZmlsZUlEQykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlSURDID0gKnByb2ZpbGVJREM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVu
dCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2Vjb25kIGVsZW1lbnQ6IDMyIGJp
dCBvZiBHZW5lcmFsIFByb2ZpbGUgQ29tcGF0aWJpbGl0eSBGbGFncywgaW4gcmV2ZXJzZSBiaXQg
b3JkZXIsCiAgICAgLy8gaW4gaGV4IHdpdGggbGVhZGluZyB6ZXJvcyBvbWl0dGVkLgogICAgIGF1
dG8gY29tcGF0aWJpbGl0eUZsYWdzID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90PigqbmV4dEVsZW1l
bnQsIDE2KTsKICAgICBpZiAoIWNvbXBhdGliaWxpdHlGbGFncykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0eUZsYWdzID0gKmNvbXBhdGliaWxpdHlGbGFnczsK
IAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBUaGlyZCBlbGVtZW50OiBHZW5lcmFsIFRpZXIgRmxhZyBbJ0wnLCAnSCddLCBtYXBwaW5nIHRv
IFtmYWxzZSwgdHJ1ZV0sIGZvbGxvd2VkIGJ5CiAgICAgLy8gR2VuZXJhbCBMZXZlbCBJREMgYXMg
YSA4LWJpdCBkZWNpbWFsIG51bWJlci4KICAgICBhdXRvIGdlbmVyYWxUaWVyID0gKm5leHRFbGVt
ZW50OwogICAgIGZpcnN0Q2hhcmFjdGVyID0gZ2VuZXJhbFRpZXJbMF07CiAgICAgaWYgKGZpcnN0
Q2hhcmFjdGVyICE9ICdMJyAmJiBmaXJzdENoYXJhY3RlciAhPSAnSCcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGdlbmVyYWxMZXZlbElEQyA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihnZW5lcmFsVGllci5zdWJz
dHJpbmcoMSkpOwogICAgIGlmICghZ2VuZXJhbExldmVsSURDKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
Z2VuZXJhbExldmVsSURDID0gKmdlbmVyYWxMZXZlbElEQzsKIAogICAgIC8vIE9wdGlvbmFsIGZv
dXJ0aCBhbmQgcmVtYWluaW5nIGVsZW1lbnRzOiBhIHNlcXVlbmNlIG9mIDYgMS1ieXRlIGNvbnN0
cmFpbnQgZmxhZ3MsIGVhY2ggYnl0ZSBlbmNvZGVkCkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9u
YWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNv
ZGVjU3RyaW5nKQogICAgICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+
KCpuZXh0RWxlbWVudCwgMTYpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7CkBAIC0xMDksNyArMTA5LDcgQEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNl
SEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxG
cm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCiB7CiAgICAgaWYgKCFwb2ludGVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiAqcG9pbnRlcjsKIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRp
YyBPcHRpb25hbDx1aW50MTZfdD4gbWF4aW11bUxldmVsSURGb3JEb1ZpUHJvZmlsZUlEKHVpbnQx
Nl90IHByb2ZpbGVJRCkKICAgICBjYXNlIDc6IHJldHVybiA5OwogICAgIGNhc2UgODogcmV0dXJu
IDEzOwogICAgIGNhc2UgOTogcmV0dXJuIDU7Ci0gICAgZGVmYXVsdDogcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICBkZWZhdWx0OiByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAt
MTc5LDUzICsxNzksNTMgQEAgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+IHBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICBhdXRvIGNvZGVjU3BsaXQgPSBj
b2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50ID0gY29kZWNTcGxpdC5i
ZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgRG9WaVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGF1dG8gY29kZWMgPSBwYXJzZURv
VmlDb2RlY1R5cGUoKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvZGVjKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMuY29kZWMgPSAqY29kZWM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1Nw
bGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwcm9maWxlSUQgPSAqbmV4dEVsZW1lbnQ7CiAgICAg
aWYgKCFwcm9maWxlSUQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyID0g
cHJvZmlsZUlEWzBdOwogICAgIC8vIFByb2ZpbGUgZGVmaW5pdGlvbiBjYW4gZWl0aGVyIGJlIG51
bWVyaWMgb3IgYWxwaGE6CiAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09ICcwJykgewogICAgICAg
ICBhdXRvIGJpdHN0cmVhbVByb2ZpbGVJRCA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihwcm9maWxl
SUQpOwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRzdHJlYW1Qcm9maWxlSUQ7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBiaXRzdHJlYW1Qcm9maWxlSUQgPSBwcm9maWxlSURG
b3JBbHBoYWJldGljRG9WaVByb2ZpbGUoY29kZWNWaWV3LmxlZnQoNSArIHByb2ZpbGVJRC5sZW5n
dGgoKSkpOwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRzdHJlYW1Qcm9maWxlSUQ7
CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJpdHN0
cmVhbVByb2ZpbGVJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWlzVmFsaWRQcm9maWxlSURGb3JDb2RlYyhw
YXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCwgcGFyYW1ldGVycy5jb2RlYykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBi
aXRzdHJlYW1MZXZlbElEID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAg
ICAgaWYgKCFiaXRzdHJlYW1MZXZlbElEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2
ZWxJRCA9ICpiaXRzdHJlYW1MZXZlbElEOwogCiAgICAgYXV0byBtYXhpbXVtTGV2ZWxJRCA9IG1h
eGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJ
RCk7CiAgICAgaWYgKCFtYXhpbXVtTGV2ZWxJRCB8fCBwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVs
SUQgPiAqbWF4aW11bUxldmVsSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDE3NjQ3NDdkNjE0MGNm
MTE2YzljNjQyNmRkYzk3MWFjMmJlYjk4MDUuLjI0MmZlMDU3OGZjMTRkMjcwOTY0NjUzNTA2NzM1
MmYwZGFmZTVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApA
QCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0KICAgICBmbG9hdCB3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZp
cnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBmYWUwZWQ2NDRjZDc0ZmRhMzk3ZWVlNGUyYjZj
NzQ5ZTgzZjBiOTVhLi42NGVhNDgzNzI2OTZkYWU5MDUwYmEwNDEyNWFjMjBmYTA0ZTAwYjljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAg
LTEyMiw4ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVRvQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
ID0gV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9w
dCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQsIFByZXNl
cnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCA9IHsgfSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZDQ3MDRhNjQ1YTYyNDc3
MWNlYmRiOTA0MjVkNDVjNjkwZjgxNDE3YS4uNDNmNTJiZDRiZDg5ZDUxNjk1MzdjYjk0Y2M4NWUw
NTI5Y2VmOGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5
Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSk7CiAgICAg
aWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc291cmNlUmVjdENsaXBwZWQgPSBpbnRl
cnNlY3Rpb24oYmFja2VuZFJlY3QoKSwgc291cmNlUmVjdFNjYWxlZCk7CiAgICAgSW50UmVjdCBk
ZXN0aW5hdGlvblJlY3QgeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VSZWN0Q2xpcHBlZC5zaXpl
KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVy
LmgKaW5kZXggYTEyYTZkODI4YjI5ZWMzZWU5ZGI4NTdlOWVhZDQ1NGM1NDVlNzg3Ni4uZjhkNjA0
NTdiMjE1MzZmZjM5OTkwYzk4NDZjMDcyNGZlNWY3Y2YyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTczLDEyICs3MywxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBbHBoYTsKICAgICAgICAgICAg
IGRlY29kZXIgPj4gaGFzQWxwaGE7CiAgICAgICAgICAgICBpZiAoIWhhc0FscGhhKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZHVyYXRpb247CiAg
ICAgICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICAgICAgaWYgKCFkdXJhdGlv
bikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVybiB7ewogICAgICAgICAg
ICAgICAgICpoYXNBbHBoYSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCmluZGV4IDg5NzhlNmFmNzEyZTgzY2Q2NzA4
YWEzM2ZiNWMyNTRmZmM0MmIxMDcuLjNjOWY0OGY0NTY0MzkxNjE2ZGM2ZTZmZjVmOGQ1ZDBkZWM2
ZjZiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
UGFpbnRpbmdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VQYWludGluZ09wdGlvbnMuaApAQCAtOTUsMjcgKzk1LDI3IEBAIE9wdGlvbmFsPEltYWdl
UGFpbnRpbmdPcHRpb25zPiBJbWFnZVBhaW50aW5nT3B0aW9uczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNvbXBvc2l0ZU9wZXJhdG9y
OwogICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgaWYgKCFjb21wb3NpdGVP
cGVyYXRvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwogICAgIGRl
Y29kZXIgPj4gYmxlbmRNb2RlOwogICAgIGlmICghYmxlbmRNb2RlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8RGVjb2RpbmdNb2RlPiBkZWNvZGluZ01vZGU7CiAgICAgZGVjb2RlciA+PiBkZWNvZGluZ01v
ZGU7CiAgICAgaWYgKCFkZWNvZGluZ01vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbWFnZU9yaWVu
dGF0aW9uOjpPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+PiBvcmllbnRh
dGlvbjsKICAgICBpZiAoIW9yaWVudGF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8SW50ZXJwb2xh
dGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OwogICAgIGRlY29kZXIgPj4gaW50ZXJw
b2xhdGlvblF1YWxpdHk7CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9uUXVhbGl0eSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBJbWFnZVBhaW50aW5nT3B0aW9ucyB7ICpjb21wb3NpdGVPcGVyYXRvciwgKmJsZW5k
TW9kZSwgKmRlY29kaW5nTW9kZSwgKm9yaWVudGF0aW9uLCAqaW50ZXJwb2xhdGlvblF1YWxpdHkg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
UmVzb2x1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJl
c29sdXRpb24uY3BwCmluZGV4IGMxZTJjMmJiYzkzYzc4YmY4Y2FhY2Q4MzMwMDFkMmQxNzZkZDJl
MGUuLmY3NjYwYjA5NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcApA
QCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPEludFNpemU+
IEltYWdlUmVzb2x1dGlvbjo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoY29uc3QgRmxvYXRTaXplJiBz
b3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIGlm
IChtZXRhZGF0YS5yZXNvbHV0aW9uVW5pdCAhPSBSZXNvbHV0aW9uVW5pdDo6SW5jaGVzIHx8IG1l
dGFkYXRhLnJlc29sdXRpb24uaXNFbXB0eSgpIHx8IG1ldGFkYXRhLnByZWZlcnJlZFNpemUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBzaXplRnJvbVJlc29sdXRpb24gPSBzb3VyY2VTaXplICog
RGVmYXVsdFJlc29sdXRpb24gLyBtZXRhZGF0YS5yZXNvbHV0aW9uOwogCiAgICAgaWYgKHNpemVG
cm9tUmVzb2x1dGlvbiA9PSBtZXRhZGF0YS5wcmVmZXJyZWRTaXplKQogICAgICAgICByZXR1cm4g
cm91bmRlZEludFNpemUobWV0YWRhdGEucHJlZmVycmVkU2l6ZSk7CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA5ZTBjNWYw
OGJiNmVlMTc1M2IyNTg4ODhjZDU1ZmE4MjdlMWI5YTFkLi41ZDkxNmMwZmU1ZDcwMTkxYjkyZDQw
YWM3OTE0Y2JkZTVjMDQzNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAgT3B0aW9uYWw8SW50U2l6
ZT4gSW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24KIHsKICAgICBhdXRvIHNpemUgPSBmaXJzdEZyYW1lTWV0YWRhdGFDYWNoZUlmTmVl
ZGVkKG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1ldGFkYXRhVHlwZTo6RGVuc2l0eUNvcnJlY3Rl
ZFNpemUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSwgSW1hZ2VGcmFtZTo6Q2Fj
aGluZzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChvcmllbnRhdGlv
biA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAgIG9yaWVudGF0aW9uID0g
dGhpcy0+b3JpZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAppbmRleCBjZWQ2ODFiMGI3NDMxMDdlNDRjOTg4NzY2
OTE0ZDMwNDY1Mzg0ZWI5Li4zMjE1MTliZTMyMTNkOTA2ZTFiYTFkZmE4NjI0OWRjNjBhZTY5ZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5l
cmljQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kR2Vu
ZXJpY0N1ZS5oCkBAIC05MCw4MiArOTAsODIgQEAgT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdl
bmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxJbmJh
bmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CiAgICAgZGVjb2RlciA+PiB1bmlxdWVJ
ZDsKICAgICBpZiAoIXVuaXF1ZUlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFy
dFRpbWU7CiAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgaWYgKCFzdGFydFRpbWUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CiAgICAgZGVjb2RlciA+PiBlbmRU
aW1lOwogICAgIGlmICghZW5kVGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gaWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50OwogICAgIGRlY29kZXIgPj4gY29udGVu
dDsKICAgICBpZiAoIWNvbnRlbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGZvbnROYW1l
OwogICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CiAgICAgaWYgKCFmb250TmFtZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPGRvdWJsZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxpbmU7CiAgICAgaWYgKCFs
aW5lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsKICAgICBkZWNvZGVyID4+
IHBvc2l0aW9uOwogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+
IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gYmFzZUZvbnRTaXpl
OwogICAgIGlmICghYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiByZWxh
dGl2ZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250U2l6ZTsKICAgICBpZiAo
IXJlbGF0aXZlRm9udFNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gZm9yZWdyb3VuZENv
bG9yOwogICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOwogICAgIGlmICghZm9yZWdyb3Vu
ZENvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKICAgICBk
ZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoIWJhY2tncm91bmRDb2xvcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKICAgICBkZWNvZGVyID4+IGhp
Z2hsaWdodENvbG9yOwogICAgIGlmICghaGlnaGxpZ2h0Q29sb3IpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxBbGlnbm1lbnQ+IGFsaWdubWVudDsKICAgICBkZWNvZGVyID4+IGFsaWdubWVudDsKICAgICBp
ZiAoIWFsaWdubWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0YXR1cz4gc3RhdHVzOwogICAgIGRl
Y29kZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR2VuZXJpY0N1ZURh
dGEgZGF0YSA9IHsKIApAQCAtMTk0LDcgKzE5NCw3IEBAIE9wdGlvbmFsPEdlbmVyaWNDdWVEYXRh
PiBHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfTsKIAogICAg
IGlmICghZGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oCmluZGV4IGRl
NDUzZDkxOWU4YzRjYzAyOTUwZjdlNjFjZjAzZmNhZjc2MzcwOTMuLjNhMDJlNTYwNWFiMjhjYWUz
NDk0Zjg4NzVmYzQ2NTQzYzMwYmIzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaApAQCAtOTUsNyArOTUsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIE1vdmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhLmxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtMTA5LDEwICsx
MDksMTAgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8TGluZURhdGE+IExpbmVE
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBMaW5lRGF0YSBkYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuZW5kKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpAQCAtMTMyLDI1ICsx
MzIsMjUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXJjRGF0YT4gQXJjRGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXJjRGF0YSBkYXRhOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEuY2VudGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5yYWRp
dXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0QW5nbGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZEFuZ2xlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5jbG9ja3dpc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0xNjYsMTMgKzE2
NiwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxRdWFkQ3VydmVEYXRhPiBR
dWFkQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIFF1YWRDdXJ2ZURhdGEgZGF0
YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2ludCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuY29udHJvbFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5lbmRQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAg
LTE4OSwxNiArMTg5LDE2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEJlemll
ckN1cnZlRGF0YT4gQmV6aWVyQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlCiB7CiAgICAgQmV6aWVy
Q3VydmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0UG9pbnQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRyb2xQb2ludDEpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRyb2xQb2ludDIpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRh
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0
UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCmlu
ZGV4IDI0MmZmYTlkMjYxZjI5YzFmYzIyZWFhNDhlZmI5ZjQxMTA4Y2VkYzAuLmM5Y2JkODFkYjIw
YThiNmU0ZTExZGQwNDdjYTNiOWNkZGIyOGZhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTcwLDEyICs3MCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsKICAgICAgICAgZGVjb2Rl
ciA+PiBsYXlvdXRQb2ludDsKICAgICAgICAgaWYgKCFsYXlvdXRQb2ludCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7CiAgICAgICAgIGRlY29k
ZXIgPj4gbGF5b3V0U2l6ZTsKICAgICAgICAgaWYgKCFsYXlvdXRTaXplKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHt7ICpsYXlvdXRQb2ludCwgKmxheW91dFNpemUgfX07CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDNlNGUxYTI0MzM5ZGY1ZmMwMjJiMjU0YTMwYmM1OTdmYmI4ZjEwOTguLmRmYWNjNjI0YjE4
NzE4OGYzNTFkN2NlYTk5NDM1NjMxODQ0YjVlMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEyODEsNyArMTI4MSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKIHsKICAgICBjbGllbnQoKS5tZWRp
YVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcGVuZGluZ1NlZWtSZXF1ZXN0
ICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTWV0YWRhdGEpCi0gICAgICAgIHNlZWsoKnN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nU2Vla1Jl
cXVlc3QsIFdURjo6bnVsbG9wdCkpOworICAgICAgICBzZWVrKCpzdGQ6OmV4Y2hhbmdlKG1fcGVu
ZGluZ1NlZWtSZXF1ZXN0LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllcjo6
dm9sdW1lQ2hhbmdlZChkb3VibGUgbmV3Vm9sdW1lKQpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6ZW5kZWQoKSBjb25zdAogT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzPiBNZWRpYVBsYXllcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsK
ICAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX3ByaXZhdGUtPnZpZGVvUGxh
eWJhY2tRdWFsaXR5TWV0cmljcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGY5NmZiNDU1ZGZjYmNkMDgyNWM3OWMzOGFkOTY1
OTNlNzUxMDA0ZS4uYWExMTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQzNWJlZDU3YTFjMmEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC0x
MTIsMjcgKzExMiwyNyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAg
ICAgICAgIE9wdGlvbmFsPENvbnRlbnRUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CiAgICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFVS
TD4gdXJsOwogICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAgaWYgKCF1cmwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291cmNlOwogICAgICAgICBk
ZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGlmICghaXNNZWRpYVNvdXJjZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTdHJlYW07CiAgICAgICAg
IGRlY29kZXIgPj4gaXNNZWRpYVN0cmVhbTsKICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENvbnRlbnRUeXBlPj4gdHlwZXNS
ZXF1aXJpbmdIYXJkd2FyZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlc1JlcXVpcmluZ0hhcmR3
YXJlOwogICAgICAgICBpZiAoIXR5cGVzUmVxdWlyaW5nSGFyZHdhcmUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKnVybCksICppc01lZGlh
U291cmNlLCAqaXNNZWRpYVN0cmVhbSwgKnR5cGVzUmVxdWlyaW5nSGFyZHdhcmUgfX07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAppbmRleCA5Y2ZjYjBkNGE0ZTg2YmQ1NTAxYTI4NGU4ZmIwZmUzYmI2MDIwYWRi
Li44NzdmOGMwZWJhNzg2NzFjYmM4YWE1MmVmNjc5NDY3NTFiYWJjYjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApA
QCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8
Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1vdmllTG9h
ZFR5cGU6OlVua25vd247IH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25h
bDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cygpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5o
CmluZGV4IGNmOTE5ZmI3YzlhZjI2NGFjOTU4OGQ1MjJiZjE2ZjY0MjEwZmUyNDQuLjRmYTgyNzNj
ZGNjZDk5MDgxYmIyZjQyMmVjZmQxMWE3Mzg4MDZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEwNSwx
MSArMTA1LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdSYWlzZWRFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKSBmaW5hbCB7IH0KIAotICAg
IEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBXVEY6
Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5z
aWduZWQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgcmV0
dXJuIHsgfTsgfQogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQsIGNvbnN0
IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWwgeyB9CiAKLSAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1
bnNpZ25lZD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgZHJhd0VtcGhhc2lz
TWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiA9
IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCBkcmF3QmlkaVRleHQoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRDYXNjYWRl
OjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6RG9Ob3RQYWludElmRm9u
dE5vdFJlYWR5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJhd0RvdHNGb3JEb2N1bWVudE1hcmtl
cihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgZmluYWwgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmluZGV4IGNlZDcxMmEyM2Vi
YzhmMmFhMWYyOWMzMGQxZjBjYTg3ZTE0OGRlM2YuLmRhZDY0M2Y3ZjE0NmNkYWQ5NjRhNzU4NmVh
ODg2MDVkMzY4OTE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGgu
Y3BwCkBAIC00OTksNyArNDk5LDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBQYXRoOjpib3VuZGlu
Z1JlY3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCAz
MDdjYTUxNWRhOTYwOThhNjRkNWI2NWI2NzFiOTQzNjQ1YzU2ZGNmLi5hMDE1NjQ2YzY3MDg1YzQ1
MzVlNjkzNjFjYWY0NTkzYzdhY2JlMmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICNpZiBFTkFCTEUo
SU5MSU5FX1BBVEhfREFUQSkKICAgICBib29sIGhhc0lubGluZURhdGE7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNJbmxpbmVEYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNJbmxpbmVEYXRhKSB7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGF0aC5tX2lubGluZURhdGEpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgfQpAQCAtMzU0LDM4ICszNTQsMzggQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAKICAgICB1aW50NjRfdCBudW1Qb2ludHM7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShudW1Qb2ludHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGF0aC5jbGVhcigpOwogCiAgICAgZm9yICh1
aW50NjRfdCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKSB7CiAgICAgICAgIFBhdGhFbGVtZW50
OjpUeXBlIGVsZW1lbnRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVsZW1lbnRU
eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN3aXRjaCAoZWxlbWVudFR5cGUpIHsKICAgICAg
ICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZs
b2F0UG9pbnQgcG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvaW50KSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBwYXRoLm1vdmVUbyhwb2ludCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBhdGhFbGVtZW50OjpUeXBl
OjpBZGRMaW5lVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2ludCBwb2ludDsKICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZFF1YWRDdXJ2ZVRvUG9p
bnQ6IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50OwogICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludDsKICAgICAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZW5kUG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcGF0
aC5hZGRRdWFkQ3VydmVUbyhjb250cm9sUG9pbnQsIGVuZFBvaW50KTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9u
YWw8UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGNhc2UgUGF0
aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2lu
dCBjb250cm9sUG9pbnQxOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9s
UG9pbnQxKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29u
dHJvbFBvaW50MjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udHJvbFBvaW50
MikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmRQb2ludCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgICAgICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50
MSwgY29udHJvbFBvaW50MiwgZW5kUG9pbnQpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggZDAyYTQ2YjNhM2FmOGNk
NzJkODgwOTJiOTM4ZTlmMjI3MTBlYzI3Yi4uOGM2ODZhMWYyMjhjODAwODVjNDVlOTllYjgwYWM1
OTM4NGVlYmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aApAQCAtMTA4LDE3ICsxMDgsMTcgQEAgT3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gUGF0
dGVybjo6UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
QWZmaW5lVHJhbnNmb3JtPiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgZGVjb2RlciA+PiBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgaWYgKCFwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxib29sPiByZXBlYXRYOwogICAgIGRlY29kZXIgPj4gcmVwZWF0WDsK
ICAgICBpZiAoIXJlcGVhdFgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiByZXBlYXRZOwogICAg
IGRlY29kZXIgPj4gcmVwZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgKnJlcGVhdFgsICpyZXBlYXRZLCAqcGF0dGVyblNwYWNlVHJhbnNmb3JtIH19OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCmluZGV4
IDhkYjRmYTI3YmU0NWVjMTYzYjljOTViMzMzYTAxNWY5NTUzMjVmMmYuLmZhNzE2NjIzZWJlMzc5
ODg2ZWYwZmVkMzI2ZmQ1NjA1NjNlMzg3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhjb25zdCBQaXhl
bEJ1ZmZlckZvcm1hdCYKIAogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVpbnQ4Q2xhbXBlZEFycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFCeXRlTGVuZ3RoKTsKICAgICBpZiAoIXBpeGVs
QXJyYXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFz
ZU5vbk51bGwoKSB9IH07CiB9CiAKQEAgLTczLDEwICs3MywxMCBAQCBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9y
bWF0LCBjbwogCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0
LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0
byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
YnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9Owog
fQogCkBAIC04NiwxMiArODYsMTIgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVy
Ojp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1hdCwgY28KIAogICAgIGF1
dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYg
KGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChidWZmZXJTaXplLnVuc2Fm
ZUdldCgpICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFy
cmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwg
MCwgYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VOb25OdWxsKCkgfSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
aAppbmRleCBmNzU1Y2UxMDBhNzhiZmMzNjNiODg5NjgyZGFhZjZiMDE0MTg4N2U4Li5jMzUzZmVi
ZGNkZjM5MDJmZjNjNTJlZTEzY2RhZDliZjliOWUwYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTkwLDMxICs5MCwzMSBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3Jt
YXQ7CiAgICAgZGVjb2RlciA+PiBmb3JtYXQ7CiAgICAgaWYgKCFmb3JtYXQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4KICAgICBpZiAoIShmb3JtYXQtPnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOwog
ICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNvbXB1
dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAq
c2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlZEJ1ZmZlclNpemUudW5zYWZlR2V0KCk7CiAg
ICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWlu
dDhfdD4oYnVmZmVyU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0
cnlDcmVhdGVGb3JEZWNvZGluZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7
CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKHJlc3VsdC0+bV9kYXRhLT5kYXRhKCksIHJlc3VsdC0+bV9kYXRhLT5ieXRlTGVuZ3Ro
KCksIDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCmluZGV4IDdmMjA4M2U2
NTc2ZTRmY2UyMTFiOGFhMjA5ZDQ1ZDUyODcwMjFiODYuLjYwODJlNWI4NDY0MTAzZTUxYjQ0ZmVk
ZjBhN2JhNmRmZDU4MGJmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaApAQCAtNTQsMTcgKzU0LDE3IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZv
cm1hdDo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4gYWxw
aGFGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsKICAgICBpZiAoIWFscGhhRm9y
bWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OwogICAgIGRl
Y29kZXIgPj4gcGl4ZWxGb3JtYXQ7CiAgICAgaWYgKCFwaXhlbEZvcm1hdCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+
IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9ybWF0KSwgV1RGTW92ZSgqY29s
b3JTcGFjZSkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAppbmRleCAzZmZiMzZmNTU2N2MxMWUxMjUxYWY5N2Y0
ODFmZWQyNmU4OTJjMWMzLi5jYjk3MDEyNWE0YjA0YjQ2YTVjMzViZGFjYzc2ZjMwODAxZTFjNmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNv
bG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaApAQCAtODAsNyArODAsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKAog
ICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKICAgICBkZWNvZGVy
ID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqbmFtZSB9IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1U
ZXh0VHJhY2suaAppbmRleCAyYmM4ZWZhZTM0OTgwNGVkNTAwMWQ2MDE1ZjNhOTllMGZjOGFhYjRk
Li5mY2JkMjc1Zjk1ZjMwYzJlYmMyMjRhM2FjNjg1ODU1ZGRlNjI2MWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKQEAg
LTg3LDQyICs4Nyw0MiBAQCBPcHRpb25hbDxQbGF0Zm9ybVRleHRUcmFja0RhdGE+IFBsYXRmb3Jt
VGV4dFRyYWNrRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICghbGFiZWwpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGxhbmd1YWdlOwogICAgIGRlY29kZXIgPj4gbGFuZ3VhZ2U7
CiAgICAgaWYgKCFsYW5ndWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdXJsOwogICAg
IGRlY29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhY2tN
b2RlPiBtb2RlOwogICAgIGRlY29kZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxUcmFja0tpbmQ+IGtpbmQ7CiAgICAgZGVjb2RlciA+PiBraW5kOwogICAgIGlm
ICgha2luZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFRyYWNrVHlwZT4gdHlwZTsKICAgICBkZWNvZGVy
ID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiB1bmlxdWVJ
ZDsKICAgICBkZWNvZGVyID4+IHVuaXF1ZUlkOwogICAgIGlmICghdW5pcXVlSWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7CiAg
ICAgaWYgKCFpc0RlZmF1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQbGF0Zm9ybVRleHRUcmFja0RhdGEgZGF0YSA9
IHsKICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRleCA5ODI2ODJjY2ZhMGMw
YjhhNzAyNWY1YzM4Mzg5OTk1MWIzM2RkNmFjLi41ODQ0ODFlOTU2M2ZiY2I5MDZiNjc4Mzg4MWI5
MjkwMzU1OWU1YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtOTcsMTIgKzk3LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0OwogICAgICAgICAgICAgZGVjb2Rl
ciA+PiBzdGFydDsKICAgICAgICAgICAgIGlmICghc3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZDsKICAgICAgICAgICAgIGRlY29k
ZXIgPj4gZW5kOwogICAgICAgICAgICAgaWYgKCFlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhcnQpLCBXVEZNb3ZlKCplbmQpIH19Owog
ICAgICAgICB9CkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVkOwogICAgIGRlY29kZXIgPj4gYnVmZmVyZWQ7CiAg
ICAgaWYgKCFidWZmZXJlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpidWZmZXJlZCkg
fX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDZk
NzE3OWFiZGJkNDliY2E4NzM3ZGM4MTNjOTg3ZjBjZmE1NjY4MDIuLjdlY2IxYzY5NmIyZThmNTg4
YWUxZGZhZWQxNzcwNTIxMDA4N2NhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlZ2lvbi5oCkBAIC0yNDYsMTIgKzI0NiwxMiBAQCBPcHRpb25hbDxSZWdpb246OlNoYXBl
PiBSZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxW
ZWN0b3I8aW50Pj4gc2VnbWVudHM7CiAgICAgZGVjb2RlciA+PiBzZWdtZW50czsKICAgICBpZiAo
IXNlZ21lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbjo6U3Bhbj4+IHNwYW5z
OwogICAgIGRlY29kZXIgPj4gc3BhbnM7CiAgICAgaWYgKCFzcGFucykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFNoYXBl
IHNoYXBlOwogICAgIHNoYXBlLm1fc2VnbWVudHMgPSBXVEZNb3ZlKCpzZWdtZW50cyk7CkBAIC0y
NzYsMTIgKzI3NiwxMiBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8SW50UmVjdD4gYm91bmRzOwogICAgIGRlY29kZXIgPj4g
Ym91bmRzOwogICAgIGlmICghYm91bmRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU2hh
cGU7CiAgICAgZGVjb2RlciA+PiBoYXNTaGFwZTsKICAgICBpZiAoIWhhc1NoYXBlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgUmVnaW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9OwogCkBAIC0yODksNyArMjg5LDcgQEAgT3B0
aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBP
cHRpb25hbDxTaGFwZT4gc2hhcGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhcGU7CiAgICAgICAg
IGlmICghc2hhcGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVnaW9uLm1fc2hhcGUgPSBtYWtlVW5p
cXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCAxODk1YzIxOTM3NjUxOWMy
YzgwZGRkMzA2YTI0ZWY3NjRhOWNiMzQ1Li41ODEwMjg2OWE5YzEzNzQ0MGNlYmQwYTEwMmZkNDVj
YTI4OGViYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFk
b3dCbHVyLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIE9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVy
SW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjCiAg
ICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5
KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9ybS5t
YXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQb2x5
Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29u
KS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbiku
Ym91bmRpbmdCb3goKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXllclJlY3QgPSBzaGFkb3dl
ZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3ZlKG1fb2Zmc2V0KTsKQEAgLTQyMiw3ICs0MjIs
NyBAQCBPcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGllcz4gU2hhZG93Qmx1
cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlYwogICAgIGlmICghY2xpcFJlY3QuY29udGFpbnMo
ZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpKSkgewogICAgICAgICAvLyBJZiB3ZSBhcmUgdG90
YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwgd2UgYXJlbid0IHBhaW50aW5nIGF0IGFsbC4K
ICAgICAgICAgaWYgKGludGVyc2VjdGlvbihsYXllclJlY3QsIGNsaXBSZWN0KS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBJbnRSZWN0IGluZmxhdGVkQ2xpcCA9IGNsaXBSZWN0Owog
ICAgICAgICAvLyBQaXhlbHMgYXQgdGhlIGVkZ2VzIGNhbiBiZSBhZmZlY3RlZCBieSBwaXhlbHMg
b3V0c2lkZSB0aGUgYnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAppbmRleCA3MTEzOGRmMjk0YWY4OWIzMDVkMTNl
ODA5ZDdmNGQyN2Q5MWI2ZDE0Li5kMGIwMmEzNDgyYmY3M2QxYjNmY2ViOTM4ZTZlOTliNDBkMWVh
NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1By
aXZhdGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFj
a1ByaXZhdGVCYXNlLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogT3B0aW9uYWw8dWludDY0X3Q+IFRyYWNrUHJpdmF0ZUJhc2U6OnRyYWNrVUlEKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIE9wdGlvbmFsPGJvb2w+IFRyYWNrUHJpdmF0ZUJhc2U6OmRlZmF1bHRFbmFibGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDcyZWE0ZjQwY2U2ODNkZTIy
ZjMxZDlmNDQyNWZlMDE2ZDczZjFjOWIuLmY1NzcyNGQ5NjQ4NjI2MjAxOGYzY2JhNDViMWYxMDFh
YTQxNWIwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQ
OVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5
VXRpbGl0aWVzLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3
CiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CiAgICAgYXV0byBu
ZXh0RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4oKTsKICAgICBpZiAobmV4dEVsZW1lbnQgPT0g
Y29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkIGNv
bmZpZ3VyYXRpb247CiAKQEAgLTE0NiwzMyArMTQ2LDMzIEBAIE9wdGlvbmFsPFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNW
aWV3CiAKICAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1ZXMgYXJlICd2cDA4JyBv
ciAndnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA4IiAmJiBj
b25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobmV4dEVsZW1l
bnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpcnN0IGVsZW1lbnQ6IHByb2Zp
bGUuIExlZ2FsIHZhbHVlcyBhcmUgMC0zLgogICAgIGF1dG8gcHJvZmlsZSA9IHBhcnNlSW50ZWdl
cjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghcHJvZmlsZSB8fCAqcHJvZmlsZSA+
IDMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgY29uZmlndXJhdGlvbi5wcm9maWxlID0gKnByb2ZpbGU7CiAKICAgICBpZiAo
KytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2Vjb25kIGVs
ZW1lbnQ6IGxldmVsLiBMZWdhbCB2YWx1ZXMgYXJlIGVudW1lcmF0ZWQgaW4gdmFsaWRWUExldmVs
cyBhYm92ZS4KICAgICBhdXRvIGxldmVsID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxl
bWVudCk7CiAgICAgaWYgKCFsZXZlbCB8fCAhaXNWYWxpZFZQTGV2ZWwoKmxldmVsKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBjb25maWd1cmF0aW9uLmxldmVsID0gKmxldmVsOwogCiAgICAgaWYgKCsrbmV4dEVsZW1lbnQg
PT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXJkIGVsZW1lbnQ6IGJpdERlcHRo
LiBMZWdhbCB2YWx1ZXMgYXJlIDgsIDEwLCBhbmQgMTIuCiAgICAgYXV0byBiaXREZXB0aCA9IHBh
cnNlSW50ZWdlcjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghYml0RGVwdGggfHwg
KCpiaXREZXB0aCAhPSA4ICYmICpiaXREZXB0aCAhPSAxMCAmJiAqYml0RGVwdGggIT0gMTIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGNvbmZpZ3VyYXRpb24uYml0RGVwdGggPSAqYml0RGVwdGg7CiAKICAgICAvLyAiY29s
b3JQcmltYXJpZXMsIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzLCBtYXRyaXhDb2VmZmljaWVudHMs
IHZpZGVvRnVsbFJhbmdlRmxhZywgYW5kIGNocm9tYVN1YnNhbXBsaW5nIGFyZSBPUFRJT05BTCwK
QEAgLTE4NSw1NCArMTg1LDU0IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3Jk
PiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3CiAgICAgLy8gRm91
cnRoIGVsZW1lbnQ6IGNocm9tYVN1YnNhbXBsaW5nLiBMZWdhbCB2YWx1ZXMgYXJlIDAtMy4KICAg
ICBhdXRvIGNocm9tYVN1YnNhbXBsaW5nID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxl
bWVudCk7CiAgICAgaWYgKCFjaHJvbWFTdWJzYW1wbGluZyB8fCAqY2hyb21hU3Vic2FtcGxpbmcg
PiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2FtcGxpbmdfNDQ0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGNvbmZpZ3VyYXRpb24uY2hyb21hU3Vic2FtcGxpbmcgPSAqY2hyb21hU3Vic2FtcGxpbmc7
CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gRmlmdGggZWxlbWVudDogY29sb3JQcmltYXJpZXMuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5l
ZCBieSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMg
MjMwOTEtMjoyMDE5LgogICAgIGF1dG8gY29sb3JQcmltYXJpZXMgPSBwYXJzZUludGVnZXI8dWlu
dDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvbG9yUHJpbWFyaWVzIHx8ICFpc1ZhbGlk
VlBDb2xvclByaW1hcmllcygqY29sb3JQcmltYXJpZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JQcmltYXJpZXMgPSAqY29sb3JQcmltYXJpZXM7CiAKICAgICBpZiAoKytuZXh0RWxlbWVu
dCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2l4dGggZWxlbWVudDogdHJhbnNm
ZXJDaGFyYWN0ZXJpc3RpY3MuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIz
MDAxLTg6MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5Lgog
ICAgIGF1dG8gdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBwYXJzZUludGVnZXI8dWludDhfdD4o
Km5leHRFbGVtZW50KTsKICAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzIHx8ICFpc1Zh
bGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcygqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGNvbmZpZ3VyYXRpb24udHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSAqdHJhbnNmZXJD
aGFyYWN0ZXJpc3RpY3M7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gU2V2ZW50aCBlbGVtZW50OiBtYXRyaXhDb2VmZmljaWVudHMuIExl
Z2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRl
ZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1dG8gbWF0cml4Q29lZmZp
Y2llbnRzID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFt
YXRyaXhDb2VmZmljaWVudHMgfHwgIWlzVmFsaWRWUE1hdHJpeENvZWZmaWNpZW50cygqbWF0cml4
Q29lZmZpY2llbnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25maWd1cmF0aW9uLm1hdHJpeENvZWZmaWNpZW50cyA9
ICptYXRyaXhDb2VmZmljaWVudHM7CiAKICAgICAvLyAiSWYgbWF0cml4Q29lZmZpY2llbnRzIGlz
IDAgKFJHQiksIHRoZW4gY2hyb21hIHN1YnNhbXBsaW5nIE1VU1QgYmUgMyAoNDo0OjQpLiIKICAg
ICBpZiAoIWNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzICYmIGNvbmZpZ3VyYXRpb24u
Y2hyb21hU3Vic2FtcGxpbmcgIT0gMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNv
ZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBFaWdodGggZWxlbWVudDogdmlkZW9GdWxsUmFu
Z2VGbGFnLiBMZWdhbCB2YWx1ZXMgYXJlIDAgYW5kIDEuCiAgICAgYXV0byB2aWRlb0Z1bGxSYW5n
ZUZsYWcgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIXZp
ZGVvRnVsbFJhbmdlRmxhZyB8fCAqdmlkZW9GdWxsUmFuZ2VGbGFnID4gMSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25m
aWd1cmF0aW9uLnZpZGVvRnVsbFJhbmdlRmxhZyA9ICp2aWRlb0Z1bGxSYW5nZUZsYWc7CiAKICAg
ICBpZiAoKytuZXh0RWxlbWVudCAhPSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZQOVV0aWxpdGllcy5oCmluZGV4IGExODhhNzQ0ZDQyNjY1ZWY4NDZjNTIwNjUxMGUwMDRiNTI0
Mzk5ZmUuLjhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRlNzRlMWQ2NDVjNzIyOGEyMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCkBAIC0xNDcs
NyArMTQ3LDcgQEAgc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgICAgICBPcHRpb25h
bDx0eXBlPiBuYW1lOyBcCiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgICAgICBpZiAo
IW5hbWUpIFwKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7IFwKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKIAogICAgICAgICBERUNPREUod2lkdGgsIGRvdWJsZSk7
CiAgICAgICAgIERFQ09ERShoZWlnaHQsIGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmlj
cy5oCmluZGV4IDU5MTI0ZjRmZmE0MGE1YTQ3ZjQ4ZDdlNWQ5ZjEwYmQxZmYyMjI1ZTAuLjBhN2Y2
NzNjZTJjMTY0MjY3ZGMxMDBkNWUwMzI4NmNlNTYxZWUzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcy5oCkBAIC01MiwyNyArNTIsMjcgQEAgc3RydWN0IFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcyB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0b3RhbFZpZGVvRnJhbWVzOwog
ICAgICAgICBkZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghdG90YWxW
aWRlb0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkcm9w
cGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGRlY29kZXIgPj4gZHJvcHBlZFZpZGVvRnJhbWVzOwog
ICAgICAgICBpZiAoIWRyb3BwZWRWaWRlb0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPHVpbnQzMl90PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2RlciA+
PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCFjb3JydXB0ZWRWaWRlb0ZyYW1l
cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gdG90YWxGcmFtZURlbGF5
OwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxheTsKICAgICAgICAgaWYgKCF0b3Rh
bEZyYW1lRGVsYXkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGlz
cGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2RlciA+PiBkaXNwbGF5Q29t
cG9zaXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBpZiAoIWRpc3BsYXlDb21wb3NpdGVkVmlkZW9G
cmFtZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sgKnRvdGFsVmlkZW9GcmFtZXMs
ICpkcm9wcGVkVmlkZW9GcmFtZXMsICpjb3JydXB0ZWRWaWRlb0ZyYW1lcywgKnRvdGFsRnJhbWVE
ZWxheSwgKmRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMgfX07CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAppbmRleCBk
YWM0ZTZmMDk2NWNmOTA5ZDg2MjRmYWFkMjE3NzQ4NDQyZDg3MjQ5Li4yYzIzNmI2N2VjYTBjYjAw
YzIzMTFkNjc3ODdlNjE0OGM1YmIzMThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQg
V2lkdGhJdGVyYXRvcjo6YXBwbHlBZGRpdGlvbmFsV2lkdGgoR2x5cGhCdWZmZXImIGdseXBoQnVm
ZmVyLCBHbHlwaEluZGV4UmFuCiAKIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlFeHRyYVNwYWNp
bmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpZ25lZCBjaGFyYWN0
ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBnbHlwaEJ1ZmZlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNo
YXJhY3RlckRlc3RpbmF0aW9uSW5kZXgsIGZsb2F0IHN0YXJ0aW5nUnVuV2lkdGgpCiB7Ci0gICAg
VmVjdG9yPE9wdGlvbmFsPEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlwaElu
ZGV4UmFuZ2UobV9ydW4ubGVuZ3RoKCksIFdURjo6bnVsbG9wdCk7CisgICAgVmVjdG9yPE9wdGlv
bmFsPEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlwaEluZGV4UmFuZ2UobV9y
dW4ubGVuZ3RoKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPGZsb2F0PiBhZHZhbmNlV2lk
dGhzKG1fcnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBnbHlwaEJ1ZmZl
clN0YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRv
IHN0cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLmNoZWNrZWRTdHJpbmdPZmZzZXRBdChpLCBtX3J1
bi5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IGNiMDRm
N2U0M2Y5NWExYmI0ZDJkMWJmYmI2OWE1NGExYWZhZDlkYWIuLjZhNmQyMmQ4MWZhOTIxOTljMTUx
MjQyODlhNzhiYTc2YzA0YTg1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFNjb3Bl
ZFBpeGVsU3RvcmFnZU1vZGUgcGFja0FsaWdubWVudChHTF9QQUNLX0FMSUdOTUVOVCk7CiAgICAg
aWYgKHBhY2tBbGlnbm1lbnQgPiA0KQogICAgICAgICBwYWNrQWxpZ25tZW50LnBpeGVsU3RvcmUo
NCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCmluZGV4IDFmNGFiOGEwYjU4YjlkOWM4YTZiZmIwNWI4MmY0MjY0M2U1NmRmYTIuLjE1MzE2
OTFmMzc4MWUxZmZlYzA4ZGZkNzQ3YzE3ZmU2MGJlNGFmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00OSw3ICs0OSw3IEBA
IGF1dG8gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFyc2VLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pIC0+IE9wCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3Vs
YXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwuZnBzXFwuWzIzXV9cXGQr
KD86LFxcZCspKiQiLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogCiAgICAgaWYg
KGtleVN5c3RlbVJFLmdldCgpLm1hdGNoKGtleVN5c3RlbSkgPCAwKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5n
VmlldyBrZXlTeXN0ZW1WaWV3IHsga2V5U3lzdGVtIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBlZmIxNGY0ZjNkOGI4ZDNkMmM1
MzJjZTZjYTQxZjM1MDliMDk0ZTRiLi5jOTc5ZWI1NzI3ZGJjMzk2MTcyNWIwNTdjN2IxYTJhMmYz
ZmFjYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6fklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYoKQogc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJlZiBjb2xvckFycmF5KQog
ewogICAgIGlmIChDRkFycmF5R2V0Q291bnQoY29sb3JBcnJheSkgPCA0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZmxv
YXQgY29tcG9uZW50QXJyYXlbNF07CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsK
ICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChjb2xvckFycmF5LCBpKSk7CiAgICAgICAgIGlmIChDRkdldFR5
cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IGZsb2F0IGNvbXBvbmVudDsKICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZSwga0NGTnVt
YmVyRmxvYXRUeXBlLCAmY29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IGY5
YWIwMjYyZTM2ZDljOTFhNTAyYzZiNWZiNjk0OGZmMDVlOTNkNTIuLmIxYWE1ZGZlNWFhOGQ0ODY3
ZDc1MmI0ZjRhNWFjOGYzYzViN2NiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTkw
LDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVTZXNzaW9uT3JHcm91cCgpOwog
ICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29uc3Q7CiAKLSAg
ICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMoT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+
ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMo
T3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2
b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVzdCogbGFzdEtleVJlcXVl
c3QoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA3NTY5ZTk4MWIwMmM0
YWY5OGVjYmIyMTk2OTA1ZGE2YWVjZmIwZmU0Li44NzhmNzIyNTg4MTg4Mzc3NzlmNGNmYjQ3MDk0
YTc5ODE2YzgwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzA4LDcgKzMwOCw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBmYWlsKCkKICAgICB7Ci0gICAgICAgIG1fY2Fs
bGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
LCBMaQogCiAgICAgICAgIGlmICghY2VydGlmaWNhdGUgfHwgIXN0b3JhZ2VVUkwpIHsKICAgICAg
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJhY2tub3dsZWRn
ZWRcIiwgRmFpbGVkLCBubyBjZXJ0aWZpY2F0ZSBhbmQgc3RvcmFnZVVSTCIpOwotICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkK
ICAgICAgICAgfSk7CiAgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9IGNlcnRpZmljYXRlLT5j
cmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNz
KCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBpcmVkU2Vzc2lvbnMuZ2V0
KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6c3RvcmFnZVVSTF07Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0sIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQpOworICAgICAgICBjYWxsYmFjayhmYWxzZSwg
eyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAgICAgICAgIGF1dG8gcmVxdWVzdCA9IGxhc3RLZXlSZXF1ZXN0KCk7CiAgICAgICAgIGlmICgh
cmVxdWVzdCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJ
RVIsICJcInJlbmV3XCIsIEZhaWxlZCwgbm8gb3V0c3RhbmRpbmcga2V5cyIpOwotICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
IlwicmVuZXdcIiwgcHJvY2Vzc2luZyByZW5ld2FsIik7CkBAIC03OTMsMTMgKzc5MywxMyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaQogCiAgICAgaWYgKCFtX2N1cnJlbnRSZXF1ZXN0KSB7CiAg
ICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8g
Y3VycmVudFJlcXVlc3QiKTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEtleXMga2V5SURzID0ga2V5SURzRm9yUmVxdWVz
dChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwg
bm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODE4LDI2ICs4MTgsMjYg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKIAogICAgICAgICAgICAgaWYgKCFyZXNwb25zZXMg
fHwgcmVzcG9uc2VzLnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwg
bm8gcmVzcG9uc2VzIik7Ci0gICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2so
dHJ1ZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsK
KyAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIFN1Y2NlZWRlZCwgbm8ga2V5SURz
IGluIGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayhmYWxzZSwga2V5U3RhdHVzZXMoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCk7CisgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwga2V5U3Rh
dHVzZXMoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAg
ICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0gbnVsbHB0cjsKLSAgICAgICAgICAgIG1f
Y3VycmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbmV4dFJlcXVlc3QoKTsKICAgICAgICAg
fSk7CiAKICAgICAgICAgYXV0byByb290ID0gcGFyc2VKU09OVmFsdWUocmVzcG9uc2VEYXRhKTsK
ICAgICAgICAgaWYgKCFyb290KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0
byBhcnJheSA9IHJvb3QtPmFzQXJyYXkoKTsKICAgICAgICAgaWYgKCFhcnJheSkgewotICAgICAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC04OTYsNyArODk2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGkKICAgICAgICAgZm9yIChhdXRvIHZhbHVlIDogKmFycmF5KSB7CiAgICAgICAgICAgICBpZiAo
IXBhcnNlUmVzcG9uc2UoV1RGTW92ZSh2YWx1ZSkpKSB7CiAgICAgICAgICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIEZhaWxlZCwg
Y291bGQgbm90IHBhcnNlIHJlc3BvbnNlIik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiwgTGkKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2VzOwogICAgICAgICBrZXlT
dGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwogICAgICAgICBrZXlTdGF0dXNlcy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZShrZXlJRHMuZmlyc3QoKSksIEtl
eVN0YXR1czo6VXNhYmxlKSk7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBtYWtlT3B0aW9uYWwo
V1RGTW92ZShrZXlTdGF0dXNlcykpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3Zl
KGtleVN0YXR1c2VzKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjUsMTMgKzkyNSwxMyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5z
ZVR5cGUgbGljZW5zZQogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0gbV9pbnN0YW5jZS0+c3Rv
cmFnZVVSTCgpOwogICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQoKSB8fCAhc3RvcmFnZVVSTCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBtaXNtYXRjaGVkIHNlc3Npb24gdHlwZSIpOwotICAg
ICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZSk7Cisg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvKiBjZXJ0aWZpY2F0
ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CiAgICAgICAgIGlmICghY2VydGlm
aWNhdGUpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiIEZhaWxlZCwgbm8gc2Vzc2lvbkNlcnRpZmljYXRlIik7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Np
b25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2Fk
RmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtOTUyLDEyICs5NTIsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxpY2Vuc2UKIAogICAgICAg
ICBpZiAoY2hhbmdlZEtleXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBERUJVR19MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIHNlc3Npb24gZGF0YSBmb3VuZCIp
OwotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOworICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGEpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICIgU3VjY2VlZGVkLCBtaXNtYXRjaGVkIHNlc3Npb24gdHlwZSIpOwotICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKKyAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBT
dWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfQogfQogCkBAIC05Njks
MTQgKzk2OSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsbwogICAgICAgICBBU1NFUlQoIW1f
cmVxdWVzdExpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VD
YWxsYmFjaykgewotICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICBtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxi
YWNrKTsKICAgICB9CiAgICAgaWYgKG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjaykgewotICAg
ICAgICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxl
ZCk7CisgICAgICAgIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sp
OwogICAgIH0KLSAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3Vy
cmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIo
KTsKICAgICBtX3JlcXVlc3RzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2soKTsKQEAgLTk5NSw3ICs5
OTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgIGlmICghbV9pbnN0YW5j
ZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJMIHx8ICFjZXJ0aWZpY2F0
ZSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIg
RmFpbGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93ZWQgb3Igbm8gc3RvcmFnZVVSTCBvciBu
byBjZXJ0aWZpY2F0ZSIpOwotICAgICAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQs
IEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDE4LDcgKzEwMTgsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgIGlmICghZXhwaXJlZFNlc3Npb25z
QXJyYXkuZ2V0KCkuY291bnQpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSLCAiIFN1Y2NlZWRlZCwgbm8gZXhwaXJlZCBzZXNzaW9ucyIpOwotICAgICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURjo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBzdGQ6Om51
bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MTAyOCw3ICsxMDI4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIC8v
IGEgcGVyc2lzdGVudC11c2FnZS1yZWNvcmQgbWVzc2FnZSBvbiBjbG9zZS4gU2lnbmFsIHRoaXMg
YnkgZmFpbGluZyBhbmQgYXNzZXJ0LgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWls
ZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbiBkYXRhIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEZN
b3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FsbGJhY2so
eyB9LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgY2FsbGJhY2soeyB9LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJikKQEAgLTExMjAs
NyArMTEyMCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAgfSBAY2F0Y2goTlNFeGNl
cHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBFUlJPUl9MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlS
ZXF1ZXN0RGF0YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25zOmNvbXBsZXRpb25IYW5k
bGVyOiAiLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwgcmVhc29uIDogIiwgW1tl
eGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlmIChtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjaykKLSAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAg
ICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIH0KQEAgLTEyNTksOSArMTI1OSw5IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVuZXdp
bmdSZXF1ZXN0KEFWQ29uCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAg
ICAgICAgIGlmIChlcnJvciAmJiBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykKLSAgICAgICAgICAg
ICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICAgICAgICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIE1lc3NhZ2UoTWVzc2FnZVR5
cGU6OkxpY2Vuc2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5UmVxdWVz
dERhdGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBNZXNzYWdl
KE1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVu
dEtleVJlcXVlc3REYXRhLmdldCgpKSksIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2Fn
ZShDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghbV91
cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb24KICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAg
ICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiZXhjZXB0aW9uIHRocm93
biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNvbnRlbnRJ
ZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtbZXhjZXB0aW9uIG5hbWVd
IFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiByZWFzb25dIFVURjhTdHJp
bmddKTsKICAgICAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAg
bV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFp
bGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQog
fQpAQCAtMTMwMCwxMSArMTMwMCwxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZDb250ZQogICAgIH0K
IAogICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykgewotICAgICAgICBtX3VwZGF0ZUxp
Y2Vuc2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgRmFpbGVkKTsKKyAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAg
IEFTU0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIAotICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIG5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMzE4LDExICsxMzE4LDExIEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlk
U3VjY2VlZChBVkNvbnRlbnRLZXlSCiAgICAgfQogCiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBtYWtlT3B0
aW9uYWwoa2V5U3RhdHVzZXMoKSksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVk
ZWQpOworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjptYWtlX29w
dGlvbmFsKGtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vl
ZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQog
Ci0gICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1
ZXN0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgbmV4dFJlcXVlc3QoKTsKIH0KQEAgLTE0ODQsNyAr
MTQ4NCw3IEBAIE9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpwcm90ZWN0aW9uU3RhCiAgICAgICAgIC8vIHJlY2VpdmluZyBh
IHJlc3BvbnNlLgogICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgIT0gQVZDb250ZW50S2V5UmVx
dWVzdFN0YXR1c1JlY2VpdmVkUmVzcG9uc2UgJiYgcmVxdWVzdC5zdGF0dXMgIT0gQVZDb250ZW50
S2V5UmVxdWVzdFN0YXR1c1JlbmV3ZWQpIHsKICAgICAgICAgICAgIEFMV0FZU19MT0dfSUZfUE9T
U0lCTEUoTE9HSURFTlRJRklFUiwgInJlcXVlc3QgaGFzIGluc3VmZmljaWVudCBzdGF0dXMgIiwg
KGludClyZXF1ZXN0LnN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8gb2JzY3VyZWQgPSBbcmVxdWVzdCB3aWxsT3V0cHV0QmVPYnNjdXJlZER1ZVRvSW5zdWZmaWNp
ZW50RXh0ZXJuYWxQcm90ZWN0aW9uRm9yRGlzcGxheXM6QFsgXV07CkBAIC0xNDk3LDcgKzE0OTcs
NyBAQCBPcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YQogICAgIGlmIChtX291dHB1dE9ic2N1cmVkKQog
ICAgICAgICByZXR1cm4gQ0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfTsKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKaW5kZXggNTliYzY1ZDQy
MTIzMGYxMGNkNzczNTU4YmVhZTk4M2FiYzAzOTQxYS4uNTgzNjJkYmQyY2MwN2QwMWRkZWE2ZTg5
MzJkZDQ4ZjcxOGYyOGE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2Rl
ckFWRk9iakMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgUmVwZXRpdGlvbkNvdW50
IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyB1dGkoKSBjb25zdCBm
aW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICBP
cHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICBJbnRTaXplIGZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6
RGVmYXVsdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQppbmRleCA1MmY5MThmMWVhYmJiMDczZWI0OTI4NWExZjI2YjYyZGVjMTg3
NTdlLi5iNDEyZDVkYmRjNTVlNjgyZTNmMDJjZTk1OTdjZDA4MzNkYjRlNDY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFn
ZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KQEAgLTI1Nyw3ICsyNTcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChQQUw6OkNNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZl
cihtX3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8IFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRJ
bWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8ICFQQUw6OkNNU2FtcGxl
QnVmZmVyRGF0YUlzUmVhZHkobV9zYW1wbGUuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
cmV0dXJuIGJ5dGVSYW5nZUZvckF0dGFjaG1lbnQoUEFMOjprQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X1NhbXBsZVJlZmVyZW5jZUJ5dGVPZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IDQ2NTVmZTVhMDg0YzM4OTExNjlmMGJlZjI3YzMzZmZjZTE2ZWQyNDAuLmE2
ZmY2YzRlNDg4ODliOTkwNzY0NmI0OTM5MmZlNGMyZjJjODBlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzZXRSYXRlRG91YmxlKGRvdWJsZSByYXRlKQogICAgIG1fcmVxdWVzdGVk
UmF0ZSA9IHJhdGU7CiAgICAgaWYgKG1fcmVxdWVzdGVkUGxheWluZykKICAgICAgICAgc2V0UGxh
eWVyUmF0ZShyYXRlKTsKLSAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBs
YXllclJhdGUoZG91YmxlIHJhdGUpCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBsYXllclJhdGUoZG91YmxlIHJhdGUpCiAg
ICAgc2V0U2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzKHRydWUpOwogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKIAotICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpyYXRlKCkgY29uc3QKQEAgLTIzNzAsNyArMjM3MCw3IEBAIE9wdGlvbmFsPGJvb2w+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgU2Vj
dXJpCiAgICAgaWYgKFtzZXNzaW9uIGlzS2luZE9mQ2xhc3M6W1dlYkNvcmVOU1VSTFNlc3Npb24g
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtzZXNzaW9uIHdvdWxkVGFpbnRPcmlnaW46b3JpZ2lu
XTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCgpCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnRpbWVDb250cm9sU3RhdHVzRGlkQ2hhbmdlKGludCB0aW1lQ29udAog
CiAgICAgbV9jYWNoZWRUaW1lQ29udHJvbFN0YXR1cyA9IHRpbWVDb250cm9sU3RhdHVzOwogICAg
IHJhdGVDaGFuZ2VkKCk7Ci0gICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gV1RG
OjpudWxsb3B0OworICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6bnVs
bG9wdDsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKCFp
c0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkpCkBAIC0zNDI4LDE2ICszNDI4LDE2IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0U2hvdWxkRGlzYWJs
ZVNsZWVwKGJvb2wgZmxhZykKIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4g
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9QbGF5YmFja1F1YWxpdHlN
ZXRyaWNzKCkKIHsKICAgICBpZiAoIVttX3ZpZGVvTGF5ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcih2aWRlb1BlcmZvcm1hbmNlTWV0cmljcyldKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oV0FU
Q0hPUykKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZWxzZQogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KIAogICAgIGF1
dG8gbWV0cmljcyA9IFttX3ZpZGVvTGF5ZXIgdmlkZW9QZXJmb3JtYW5jZU1ldHJpY3NdOwogICAg
IGlmICghbWV0cmljcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQzMl90IGRpc3BsYXlDb21wb3NpdGVkRnJhbWVz
ID0gMDsKICAgICBpZiAoW21ldHJpY3MgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihudW1i
ZXJPZkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMpXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCA1YjU5MmViMThiM2U0OWQ2YTUwMzBlZTQ4MTI5NTAwZWY1ZDVhYzg0Li43ZGE1
ZDM4ZDkyZmM3OGZhYzBlNWI5YWViN2M4MmYwZWFkNDI1MWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC03MzgsNyArNzM4LDcgQEAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnZpZGUKIAog
ICAgIGF1dG8gbWV0cmljcyA9IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciB2aWRlb1BlcmZv
cm1hbmNlTWV0cmljc107CiAgICAgaWYgKCFtZXRyaWNzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDMyX3QgZGlz
cGxheUNvbXBvc2l0ZWRGcmFtZXMgPSAwOwogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFS
RFNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAxNzMwNTJhNzNiNTE2MDA2
N2U3OTU3ZDEzODA4YWY1MmQ2N2VmNGYzLi5lMWFkMTAyYmI5ODFiZjM3NGU2YmQ5MzdjMGM2ZTJh
ODdmNDBmMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC05ODYsNyArOTg2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1fdmlkZW9UcmFuc2Zvcm0pCiAg
ICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0aW9uTWF0cml4KCptX2lt
YWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZGVvVHJhbnNm
b3JtID0gKm1fdmlkZW9UcmFuc2Zvcm07Ci0gICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJl
Y3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUmVjdChkZXN0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJlY3QgPSB2
aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5z
Zm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggNWFjZTYzMDhmOWRjNTQ1NWEyOTY0ZmM4MjVlMWQ5
NGUxNTMzZmY0NC4uN2Q2ZDUwYTVjZmVhYzVlYTc5ZDcwODUzYzA2YjBkMmFkZDQ4OTc3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbQpAQCAtNDgwLDE2
ICs0ODAsMTYgQEAgT3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5nZT4gTWVkaWFTYW1wbGVB
VkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3QKIHsKICAgICBhdXRvIGJ5dGVPZmZz
ZXRDRiA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oUEFMOjpDTUdldEF0dGFjaG1lbnQo
bV9zYW1wbGUuZ2V0KCksIGtleSwgbnVsbHB0cikpOwogICAgIGlmICghYnl0ZU9mZnNldENGKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaW50NjRfdCBieXRlT2Zmc2V0ID0gMDsKICAgICBpZiAoIUNGTnVtYmVyR2V0VmFs
dWUoYnl0ZU9mZnNldENGLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmYnl0ZU9mZnNldCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzID0gMDsKICAgICBQQUw6OkNNU2FtcGxl
QnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5KG1fc2FtcGxlLmdldCgpLCAwLCBudWxscHRyLCAmc2l6
ZUFycmF5RW50cmllcyk7CiAgICAgaWYgKHNpemVBcnJheUVudHJpZXMgIT0gMSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHNpemVfdCBzaW5nbGVTaXplRW50cnkgPSAwOwogICAgIFBBTDo6Q01TYW1wbGVCdWZmZXJHZXRT
YW1wbGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDEsICZzaW5nbGVTaXplRW50cnksIG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQppbmRleCBkMzE3M2ZlYmQ2NThlODMxZTFiMTBhZjcwMDBjNzBiMThjNjY1YWQ0
Li5jMWY4NTE0YmE1MDk2ZWJiODM1YjAxNjY1MDJlZTM3Y2MyZDhkMzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAt
NzcyLDcgKzc3Miw3IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVj
dGVkVmlkZW8oKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFj
a0RpZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3Rl
ZCkKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50NjRfdD4odHJhY2suaWQoKSkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRyYWNrSUQgPSBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2suaWQoKSkudmFs
dWVfb3IoMCk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ2aWRlbyB0cmFja0lE
ID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7CiAKQEAgLTc5OCw3ICs3
OTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNl
bGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjawogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmIHRyYWNr
LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrLmlkKCkpLnZhbHVlT3IoMCk7CisgICAgYXV0
byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRy
YWNrLmlkKCkpLnZhbHVlX29yKDApOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
YXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0gIiwgZW5hYmxlZCk7CiAK
QEAgLTEwNDgsNyArMTA0OCw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNfRU5ECiAK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlT3IoMCk7CisgICAg
YXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+
KHRyYWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVS
LCB0cmFja0lEKTsKIAogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRCkg
ewpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
Zmx1c2hWaWRlbygpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIG1fY2FjaGVkU2l6ZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
YXV0byBwbGF5ZXIgPSB0aGlzLT5wbGF5ZXIoKSkgewogICAgICAgICBwbGF5ZXItPnNldEhhc0F2
YWlsYWJsZVZpZGVvRnJhbWUoZmFsc2UpOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgQUxMT1dfTkVX
X0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG9tU3Ry
aW5nJiB0cmFja0lEU3RyaW5nKQogewotICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDApOwor
ICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2
NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCAhPSBtX2Vu
YWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29udGFpbnModHJhY2tJRCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTIwMyw3ICsxMjAzLDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6YnVmZmVyV2FzQ29uc3VtZWQoKQogCiBib29sIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYg
dHJhY2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVPcigwKTsKKyAgICBh
dXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
dHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVk
VmlkZW9UcmFja0lEKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgaWYgKG1f
ZGlzcGxheUxheWVyV2FzSW50ZXJydXB0ZWQpCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsU2VlaygpCiAKIEZsb2F0U2l6ZSBTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAgIHJldHVybiBtX2NhY2hl
ZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1
ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKQEAgLTEyNzIs
NyArMTI3Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJl
YWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVP
cigwKTsKKyAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNrSUQg
PT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CiAgICAgICAgIGlmIChtX2RlY29tcHJlc3Npb25T
ZXNzaW9uKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNzaW9uLT5yZXF1ZXN0TWVk
aWFEYXRhV2hlblJlYWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC0xMjk3LDcgKzEyOTcsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JN
b3JlU2FtcGxlcyhjb25zdCBBdG9tUwogCiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSURTdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDApID09IG1fZW5h
YmxlZFZpZGVvVHJhY2tJRAorICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCkgPT0gbV9lbmFibGVkVmlk
ZW9UcmFja0lECiAgICAgICAgICYmIFtnZXRBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckNsYXNz
KCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGV4cGVjdE1pbmltdW1VcGNv
bWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6KV07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IDFmNGNkNDQ1NDNmMGU5MzgyYjUwZDEwYTk3YTBjMTlhMGQwOGFjNWYuLjExYWM3OTQxYmE3
YmUzOGUzYjg3ODUxZTc1ZjQzZGNjZjJiMWE3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTU3Nyw3
ICsxNTc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJl
Y3RzKGNvbnN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzJgogICAgIGlmIChhdXRvIGV4dGVudCA9
IGFuaW1hdGlvbkV4dGVudCgpKSB7CiAgICAgICAgIC8vIEFkanVzdCB0aGUgYW5pbWF0aW9uIGV4
dGVudCB0byBtYXRjaCB0aGUgY3VycmVudCBhbmltYXRpb24gcG9zaXRpb24uCiAgICAgICAgIGF1
dG8gYW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50ID0gdHJhbnNmb3JtQnlBcHBseWlu
Z0FuY2hvclBvaW50KHJlY3RzLmFuaW1hdGluZ1RyYW5zZm9ybSk7Ci0gICAgICAgIGJvdW5kcyA9
IGFuaW1hdGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNlKCkudmFsdWVPcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKS5tYXBSZWN0KCpleHRlbnQpOworICAgICAgICBib3VuZHMgPSBh
bmltYXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpLm1hcFJlY3QoKmV4dGVudCk7CiAgICAgfQogCiAgICAgLy8gRklY
TUU6IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0aW9ucyBpbnRvIGFjY291bnQgd2hlbiBkZXRlcm1p
bmluZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50ZXJzZWN0cyB0aGUgY292ZXJhZ2UgcmVjdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKaW5kZXggZmY4ZGRjNTM1YjZjMDQ0NDhmNmQ5OTQyMGUwMDg4YTNjMjVlMWI0NC4uZTVj
ZDgyMmMwZGVjMmFiZmUzOTM0YmNkOTUzZmJkYWNkOTMwMTNmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTQ4
MCw3ICs0ODAsNyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9iZWdp
blRpbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2JlZ2luVGltZSAtIG1fdGltZU9mZnNl
dDsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmlt
YXRpb24+IG1fYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQppbmRl
eCA5ZGM4YTdmOGZiMTMzNjNhN2RmMjhiZjk0YjNjNzkyNGEyZjRhYzM3Li5mZDJjYTIyN2Q4ZmRl
NDEwZmQxNzg3ZWRjMzJjYTI4NDczMWMwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBXZWJDb3IKIAog
ICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihncmFwaGljc0Nv
bnRleHQpOwotICAgICAgICBXVEY6Ok9wdGlvbmFsPExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dD4gcGxhdGZvcm1Db250ZXh0U2F2ZXI7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0PiBwbGF0Zm9ybUNvbnRleHRTYXZlcjsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICAgICBXVEY6Ok9wdGlvbmFsPEZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNh
dmVyPiBmb250QW50aWFsaWFzaW5nU3RhdGU7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Rm9udEFu
dGlhbGlhc2luZ1N0YXRlU2F2ZXI+IGZvbnRBbnRpYWxpYXNpbmdTdGF0ZTsKICNlbmRpZgogCiAg
ICAgICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246
OkJvdHRvbVVwIG9uIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmluZGV4IDJhMTllNDdhOWFhY2VjMjA5NmE2MGU5N2Uz
YjVjNDg3NDUzZGFhZjMuLjYzZWFiY2I0MDgwZmY5Y2E4YmFiYWYxYzhmMWU3ZTVlNmEzNjdhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0
aENhaXJvLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUGF0aDo6YWRkQmV6aWVyQ3VydmVU
b1Nsb3dDYXNlKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDEsIGNvbnN0IEZsb2F0CiAK
IHZvaWQgUGF0aDo6YWRkQXJjU2xvd0Nhc2UoY29uc3QgRmxvYXRQb2ludCYgcCwgZmxvYXQgciwg
ZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lzZSkKIHsK
LSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1cmVDYWlyb1BhdGgoKTsKICAgICBmbG9hdCBz
d2VlcCA9IGVuZEFuZ2xlIC0gc3RhcnRBbmdsZTsKICAgICBjb25zdCBmbG9hdCB0d29QSSA9IDIg
KiBwaUZsb2F0OwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3Qg
RmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAg
IG1fZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZmxvYXQgdGFuZ2VudCA9IHJhZGl1cyAv
IHRhbihhY29zKGNvc19waGkpIC8gMik7CiAgICAgZmxvYXQgZmFjdG9yX3AxcDAgPSB0YW5nZW50
IC8gcDFwMF9sZW5ndGg7CiAgICAgRmxvYXRQb2ludCB0X3AxcDAoKHAxLngoKSArIGZhY3Rvcl9w
MXAwICogcDFwMC54KCkpLCAocDEueSgpICsgZmFjdG9yX3AxcDAgKiBwMXAwLnkoKSkpOwpAQCAt
MzUwLDcgKzM1MCw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEs
IGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAKIHZvaWQgUGF0aDo6YWRkRWxs
aXBzZShGbG9hdFBvaW50IHBvaW50LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9h
dCByb3RhdGlvbiwgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNs
b2Nrd2lzZSkKIHsKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVu
dHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1cmVDYWlyb1BhdGgoKTsK
ICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHBvaW50LngoKSwg
cG9pbnQueSgpKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoRmxv
YXRQb2ludCBwb2ludCwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVzWSwgZmxvYXQgcm90YQog
CiB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIG1f
ZWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBjYWlyb190KiBjciA9IGVuc3VyZUNhaXJvUGF0aCgpOwogICAgIGNhaXJvX3NhdmUoY3Ip
OwogICAgIGZsb2F0IHlSYWRpdXMgPSAuNSAqIHJlY3QuaGVpZ2h0KCk7CkBAIC0zODcsNyArMzg3
LDcgQEAgdm9pZCBQYXRoOjphZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChjYWlyb19tYXRyaXhfaW52ZXJ0KCZtYXRyaXgp
ICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2VsZW1l
bnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBjYWlyb190KiBjciA9IHBhdGguY2Fpcm9QYXRoKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCmluZGV4
IGUzYTAxM2QxZGMyMWYxMzZiODlhOTZjZjA3MDE2ODA3YTYyYjNlMmIuLjUxZTBhOGMwZTY0YzMx
NGFlYTZmMjVkZTRhMjkxNGM5ZDE1MTc5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShDR0NvbG9yUmVm
IGNvbG9yKQogICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNv
bG9yIHNwYWNlcy4KIAogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgbnVtQ29tcG9u
ZW50cyA9IENHQ29sb3JHZXROdW1iZXJPZkNvbXBvbmVudHMoY29sb3IpOwogICAgIGNvbnN0IENH
RmxvYXQqIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhjb2xvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5j
cHAKaW5kZXggZTA0NTEwYzBmZjUxNTc3YmUwMTFkODY3NDM0NjQyNDM1YzcwM2Q2Ny4uNjVjN2E4
MmQ0NGRlOGUwNDViN2JkODBkZmYzMGQwYjFjZDlkYzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMTk2
LDcgKzE5Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRTaXplPiBkZW5zaXR5Q29ycmVjdGVkU2l6
ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBpbWFnCiAgICAgYXV0byB0aWZmRGljdGlv
bmFyeSA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0
aWVzLCBrQ0dJbWFnZVByb3BlcnR5VElGRkRpY3Rpb25hcnkpOwogCiAgICAgaWYgKCFleGlmRGlj
dGlvbmFyeSB8fCAhdGlmZkRpY3Rpb25hcnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHdpZHRoUHJvcGVydHkg
PSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQcm9wZXJ0aWVzLCBrQ0dJ
bWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRQcm9wZXJ0eSA9IChDRk51
bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdlUHJv
cGVydHlQaXhlbEhlaWdodCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIE9wdGlvbmFsPElu
dFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGltYWcKICAgICBhdXRvIHJlc29sdXRpb25Vbml0UHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUodGlmZkRpY3Rpb25hcnksIGtDR0ltYWdlUHJvcGVydHlUSUZGUmVz
b2x1dGlvblVuaXQpOwogCiAgICAgaWYgKCFwcmVmZXJyZWRXaWR0aFByb3BlcnR5IHx8ICFwcmVm
ZXJyZWRIZWlnaHRQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvblhQcm9wZXJ0eSB8fCAhcmVzb2x1dGlv
bllQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvblVuaXRQcm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCByZXNv
bHV0aW9uVW5pdDsKICAgICBmbG9hdCBzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0LCBwcmVmZXJy
ZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0LCByZXNvbHV0aW9uV2lkdGgsIHJlc29sdXRpb25IZWln
aHQ7CkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlD
b3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWcKICAgICAgICAg
fHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblhQcm9wZXJ0eSwga0NGTnVtYmVyRmxvYXQz
MlR5cGUsICZyZXNvbHV0aW9uV2lkdGgpCiAgICAgICAgIHx8ICFDRk51bWJlckdldFZhbHVlKHJl
c29sdXRpb25ZUHJvcGVydHksIGtDRk51bWJlckZsb2F0MzJUeXBlLCAmcmVzb2x1dGlvbkhlaWdo
dCkKICAgICAgICAgfHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblVuaXRQcm9wZXJ0eSwg
a0NGTnVtYmVySW50VHlwZSwgJnJlc29sdXRpb25Vbml0KSkgewotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBJbWFnZVJlc29sdXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEZsb2F0U2l6ZShzb3Vy
Y2VXaWR0aCwgc291cmNlSGVpZ2h0KSwgewpAQCAtMzkxLDE5ICszOTEsMTkgQEAgT3B0aW9uYWw8
SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QKIHsKICAgICBhdXRvIHBy
b3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9u
YXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwogICAg
IGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpbnQgeCA9IC0xLCB5ID0gLTE7CiAgICAg
Q0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb3Bl
cnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKICAgICBpZiAoIW51bSB8fCAhQ0ZOdW1i
ZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBudW0g
PSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGllcy5nZXQoKSwgQ0ZT
VFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdldFZhbHVlKG51bSwg
a0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICByZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CkBAIC00NDgsMTEgKzQ0OCwx
MSBAQCBJbWFnZURlY29kZXI6OkZyYW1lTWV0YWRhdGEgSW1hZ2VEZWNvZGVyQ0c6OmZyYW1lTWV0
YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCkgYwogICAgIAogICAgIGF1dG8gb3JpZW50YXRpb24g
PSBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogICAgIGlmICgh
bWF5SGF2ZURlbnNpdHlDb3JyZWN0ZWRTaXplKHByb3BlcnRpZXMuZ2V0KCkpKQotICAgICAgICBy
ZXR1cm4geyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IG9y
aWVudGF0aW9uLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gcHJvcGVydGllc1dpdGhNZXRh
ZGF0YSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2
ZURlY29kZXIuZ2V0KCksIGluZGV4LCBjcmVhdGVJbWFnZVNvdXJjZU1ldGFkYXRhT3B0aW9ucygp
LmdldCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzV2l0aE1ldGFkYXRhKQotICAgICAgICByZXR1
cm4geyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IG9yaWVu
dGF0aW9uLCBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICByZXR1cm4geyBvcmllbnRhdGlvbiwg
ZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhwcm9wZXJ0aWVzV2l0aE1ldGFkYXRh
LmdldCgpKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKaW5kZXggZmQyNjg4
YTVkZDNkOTY5ZjQzMGRjM2Y4ZTAyODY1NDgyZjUzMWY2Zi4uYTk3NzE2M2EwOTMwM2RjMWE1N2Zl
YTBiMGQ0YTM4OGIzMjMyMDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBA
IC01NSwxNCArNTUsMTQgQEAgT3B0aW9uYWw8dWludDY0X3Q+IEF1ZGlvVHJhY2tQcml2YXRlV2Vi
TTo6dHJhY2tVSUQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVz
ZW50KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9u
YWw8Ym9vbD4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5hYmxlZCgpIGNvbnN0CiB7
CiAgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVy
biBtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEF0b21TdHJpbmcgQXVkaW9UcmFja1ByaXZh
dGVXZWJNOjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggNDc1MmZh
YzI1MDAzODRjODk0ZGE3ZDdlNjM5NjhjZDcxYjNiZmNiMC4uODkxZGQ1MzQzZTY5ZWVjZGRkZTA1
MDFiZjY0ZTUzMzhiNDY2NTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtNTA4LDcg
KzUwOCw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHByZXBhcmVQbGF0Zm9ybUZvbnQoQ1RGb250
UmVmIG9yaWdpbmFsRm9udCwgY29uc3QgRm9udERlc2NyCiAgICAgaWYgKGFwcGx5V2VpZ2h0V2lk
dGhTbG9wZVZhcmlhdGlvbnMgJiYgIWZvbnRJc1N5c3RlbUZvbnQob3JpZ2luYWxGb250KSkgewog
ICAgICAgICBmbG9hdCB3ZWlnaHQgPSBmb250U2VsZWN0aW9uUmVxdWVzdC53ZWlnaHQ7CiAgICAg
ICAgIGZsb2F0IHdpZHRoID0gZm9udFNlbGVjdGlvblJlcXVlc3Qud2lkdGg7Ci0gICAgICAgIGZs
b2F0IHNsb3BlID0gZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUudmFsdWVPcihub3JtYWxJdGFs
aWNWYWx1ZSgpKTsKKyAgICAgICAgZmxvYXQgc2xvcGUgPSBmb250U2VsZWN0aW9uUmVxdWVzdC5z
bG9wZS52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICAgICAgaWYgKGF1dG8gd2Vp
Z2h0VmFsdWUgPSBmb250RmFjZUNhcGFiaWxpdGllcy53ZWlnaHQpCiAgICAgICAgICAgICB3ZWln
aHQgPSBzdGQ6Om1heChzdGQ6Om1pbih3ZWlnaHQsIHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHRW
YWx1ZS0+bWF4aW11bSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0VmFsdWUtPm1pbmltdW0p
KTsKICAgICAgICAgaWYgKGF1dG8gd2lkdGhWYWx1ZSA9IGZvbnRGYWNlQ2FwYWJpbGl0aWVzLndp
ZHRoKQpAQCAtOTM5LDcgKzkzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxNaW5NYXg+IGV4dHJhY3RW
YXJpYXRpb25Cb3VuZHMoQ0ZEaWN0aW9uYXJ5UmVmIGF4aXMpCiAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZShtYXhpbXVtVmFsdWUsIGtDRk51bWJlckZsb2F0VHlwZSwgJnJhd01heGltdW1WYWx1ZSk7CiAg
ICAgaWYgKHJhd01pbmltdW1WYWx1ZSA8IHJhd01heGltdW1WYWx1ZSkKICAgICAgICAgcmV0dXJu
IHt7IHJhd01pbmltdW1WYWx1ZSwgcmF3TWF4aW11bVZhbHVlIH19OwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIFZhcmlhdGlv
bkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JGb250RGVzY3JpcHRvcihDVEZv
bnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgT3B0
aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFt
ZShjb25zdCBTdHJpbmcmIGZhbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIGFkZEF0
dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXMsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Rm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IDBkN2Q5NDVhMmJjMTU0NjIzYjM5NjRkNzhk
MGZhNzY5M2ZlZjAzYTMuLmYwMTZhNTI1YWZkZDY5OWE1MTNjM2UwYTlkM2RiNmQzZDFhNGZlNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRE
ZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGlj
IGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0ZW1Gb250VXNlKGNvbnN0
IEF0b21TdHJpbmcmIHN0cmkKICAgICBpZiAoc3RkOjpiaW5hcnlfc2VhcmNoKHN0cmluZ3MuZ2V0
KCkuYmVnaW4oKSwgc3RyaW5ncy5nZXQoKS5lbmQoKSwgc3RyaW5nLCBjb21wYXJlQXNQb2ludGVy
KSkKICAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnRLaW5kOjpUZXh0U3R5bGU7CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPj4gc3lzdGVtRm9udENh
c2NhZGVMaXN0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIGNvbnN0IEF0b21T
dHJpbmcmIGNzc0ZhbWlseSwgU3lzdGVtRm9udEtpbmQgc3lzdGVtRm9udEtpbmQsIEFsbG93VXNl
ckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZjJhMTU5ZjFkZjIyZjFlM2JmOTQwMTNi
NTUwNTI2YWZlYTJiZTAwMy4uZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZkOTZjNDJjMjMyN2NjZjQ5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCkBAIC02NjUs
OSArNjY1LDkgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogewogICAgIGF1dG8mIGRpc3BsYXlCdWZmZXIgPSBt
X3N3YXBDaGFpbi0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmICghZGlzcGxheUJ1ZmZlci5zdXJm
YWNlIHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZGlzcGxheUJ1ZmZlci5z
dXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAv
LyBOb3RlOiBXZSBhcmUgdXNpbmcgR0wgdG8gcmVhZCB0aGUgSU9TdXJmYWNlLiBBdCB0aGUgdGlt
ZSBvZiB3cml0aW5nLCB0aGVyZSBhcmUgbm8gY29udmluaWVudAogICAgIC8vIGZ1bmN0aW9ucyB0
byBjb252ZXJ0IHRoZSBJT1N1cmZhY2UgcGl4ZWwgZGF0YSB0byBJbWFnZURhdGEuIFRoZSBpbWFn
ZSBkYXRhIGVuZHMgdXAgYmVpbmcKICAgICAvLyBkcmF3biB0byBhIEltYWdlQnVmZmVyLCBidXQg
YXQgdGhlIHRpbWUgdGhlcmUncyBubyBmdW5jdGlvbnMgdG8gY29uc3RydWN0IGEgTmF0aXZlSW1h
Z2UKQEAgLTY3OCw3ICs2NzgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgU2NvcGVkUmVzdG9yZVRl
eHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVl
cnkoKSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9B
UkIpOwogICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKICAgICBp
ZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBkaXNwbGF5QnVmZmVyLmhhbmRsZSwg
RUdMX0JBQ0tfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CiAgICAgU2NvcGVkRnJhbWVidWZm
ZXIgZmJvOwogICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJCaW5kaW5nIGZib0JpbmRp
bmcobV9pc0ZvcldlYkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZibyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0
aWVzQ29jb2EubW0KaW5kZXggZGE0MGEyY2RlOGYwZjg0ZGEwOTMwYjUyZmIyM2I2NmQ1M2Y5MGQz
Ny4uYTg4ZmRlOTAxZjUyMjU5NDRlZjFhOTc0MGNhNTIzODc3MzFjZDA4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5tbQpAQCAtNDMsMTEgKzQzLDExIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFy
CiAgICAgQ01WaWRlb0NvZGVjVHlwZSBjb2RlYyA9IGtDTVZpZGVvQ29kZWNUeXBlX0hFVkM7CiAg
ICAgaWYgKGhhc0FscGhhQ2hhbm5lbCkgewogICAgICAgICBpZiAoIVBBTDo6aXNBVkZvdW5kYXRp
b25GcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0FWRm91bmRhdGlvbl9BVlZp
ZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBj
b2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJpbmcoQVZWaWRlb0NvZGVjVHlwZUhFVkNXaXRoQWxw
aGEpOwogICAgICAgICBpZiAoIWNvZGVjQ29kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGNvZGVj
ID0gY29kZWNDb2RlLnZhbHVlKCkudmFsdWU7CiAgICAgfQpAQCAtNTcsMTIgKzU3LDEyIEBAIE9w
dGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25z
dCBIRVZDUGFyYW1ldGVycyYgcGFyCiAgICAgICAgIGJvb2wgaXNNYWluMTAgPSBwYXJhbWV0ZXJz
LmdlbmVyYWxQcm9maWxlU3BhY2UgPT0gMAogICAgICAgICAgICAgJiYgKHBhcmFtZXRlcnMuZ2Vu
ZXJhbFByb2ZpbGVJREMgPT0gMiB8fCBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlQ29tcGF0aWJp
bGl0eUZsYWdzID09IDEpOwogICAgICAgICBpZiAoIWlzTWFpbjEwKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJ
bnN0YW5jZShjb2RlYywga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgaWYgKHN0YXR1cyAhPSBub0VycikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2FuTG9hZF9WaWRlb1Rvb2xi
b3hfVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkKICAgICAgICAgfHwg
IWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQ
cm9maWxlcygpCkBAIC03MCwzMCArNzAsMzAgQEAgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJ
bmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXIKICAg
ICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFi
aWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkKICAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9U
b29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwoKQog
ICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2Fw
YWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNhcGFiaWxpdGllcyA9
IGFkb3B0Q0YoVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkpOwogICAg
IGlmICghY2FwYWJpbGl0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IChD
RkFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVW
Q0RlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZFByb2ZpbGVzKTsKICAgICBpZiAoIXN1cHBvcnRl
ZFByb2ZpbGVzIHx8IENGR2V0VHlwZUlEKHN1cHBvcnRlZFByb2ZpbGVzKSAhPSBDRkFycmF5R2V0
VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9maWxlSURDID0gcGFyYW1ldGVy
cy5nZW5lcmFsUHJvZmlsZUlEQzsKICAgICBhdXRvIGNmR2VuZXJhbFByb2ZpbGVJREMgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQxNlR5
cGUsICZnZW5lcmFsUHJvZmlsZUlEQykpOwogICAgIGF1dG8gc2VhcmNoUmFuZ2UgPSBDRlJhbmdl
TWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkUHJvZmlsZXMpKTsKICAgICBpZiAoIUNG
QXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFyY2hSYW5nZSwgY2ZHZW5l
cmFsUHJvZmlsZUlEQy5nZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0ID0g
KENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCks
IGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9QZXJQcm9maWxlU3VwcG9ydCk7CiAgICAgaWYgKCFw
ZXJQcm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwZXJQcm9maWxlU3VwcG9ydCkgIT0gQ0ZE
aWN0aW9uYXJ5R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdlbmVyYWxQcm9maWxlSURDU3Ry
aW5nID0gU3RyaW5nOjpudW1iZXIoZ2VuZXJhbFByb2ZpbGVJREMpLmNyZWF0ZUNGU3RyaW5nKCk7
CiAgICAgYXV0byBwcm9maWxlU3VwcG9ydCA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocGVyUHJvZmlsZVN1cHBvcnQsIGdlbmVyYWxQcm9maWxlSURDU3RyaW5nLmdldCgp
KTsKICAgICBpZiAoIXByb2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlEKHByb2ZpbGVTdXBwb3J0
KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbyBpbmZvOwogCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxp
dGllc0luZm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBh
cgogICAgIGlmIChjZk1heERlY29kZUxldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4RGVjb2RlTGV2
ZWwpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKICAgICAgICAgaW50MTZfdCBtYXhEZWNvZGVM
ZXZlbCA9IDA7CiAgICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShjZk1heERlY29kZUxldmVs
LCBrQ0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4RGVjb2RlTGV2ZWwpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgaWYgKHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDID4gbWF4RGVjb2RlTGV2ZWwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGNmTWF4UGxheWJhY2tMZXZlbCA9IChDRk51bWJl
clJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKTsKICAgICBpZiAoY2ZNYXhQbGF5YmFj
a0xldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4UGxheWJhY2tMZXZlbCkgPT0gQ0ZOdW1iZXJHZXRU
eXBlSUQoKSkgewogICAgICAgICBpbnQxNl90IG1heFBsYXliYWNrTGV2ZWwgPSAwOwogICAgICAg
ICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUoY2ZNYXhQbGF5YmFja0xldmVsLCBrQ0ZOdW1iZXJTSW50
MTZUeXBlLCAmbWF4UGxheWJhY2tMZXZlbCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpbmZvLnNt
b290aCA9IHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDIDw9IG1heFBsYXliYWNrTGV2ZWw7CiAg
ICAgfQpAQCAtMTQxLDE2ICsxNDEsMTYgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50MTZf
dD4+IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKEMKIHsKICAg
ICBhdXRvIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwga2V5KTsKICAg
ICBpZiAoIXZhbHVlIHx8IENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgTlNBcnJheSAqYXJyYXkgPSAoX19icmlkZ2UgTlNBcnJheSAqKXZhbHVlOwogICAg
IFZlY3Rvcjx1aW50MTZfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGFycmF5LmNvdW50KTsKICAgICBmb3IgKGlkIHZhbHVlIGluIGFycmF5KSB7CiAgICAgICAg
IGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGF1dG8gbnVtZXJpY1ZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmco
KE5TU3RyaW5nICopdmFsdWUpKTsKICAgICAgICAgaWYgKCFudW1lcmljVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZCgqbnVtZXJpY1ZhbHVlKTsKICAgICB9
CiAgICAgcmV0dXJuIHZlY3RvcjsKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJheUZyb21EaWN0aW9uYXJ5VG9VSW50MTZW
ZWN0b3IoQwogT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJh
bWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGhhc0FscGhhQ2hh
bm5lbCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIGlmIChoYXNBbHBoYUNoYW5uZWwpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoaGRyU3VwcG9ydCkgewogICAgICAgICAvLyBQbGF0Zm9ybSBzdXBwb3J0cyBIRFIg
cGxheWJhY2sgb2YgSEVWQyBNYWluMTAgUHJvZmlsZSwgd2hpY2ggaXMgc2lnbmFsbGVkIGJ5IERv
VmkgcHJvZmlsZXMgNCwgNSwgNywgJiA4LgpAQCAtMTcwLDM5ICsxNzAsMzkgQEAgT3B0aW9uYWw8
TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQ
YXJhbWV0ZXJzJiBwYXIKICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAogICAgIE9TU3RhdHVz
IHN0YXR1cyA9IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoY29kZWNUeXBl
KHBhcmFtZXRlcnMuY29kZWMpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRy
KTsKICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjYW5Mb2FkX1ZpZGVv
VG9vbGJveF9WVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rpb25hcnkoKQogICAgICAg
ICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0
eV9TdXBwb3J0ZWRQcm9maWxlcygpCiAgICAgICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9r
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCiAgICAgICAg
IHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5
X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjYXBhYmlsaXRpZXMgPSBh
ZG9wdENGKFZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlvbmFyeSgpKTsKICAgICBp
ZiAoIWNhcGFiaWxpdGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSBwYXJz
ZVN0cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3RvcihjYXBhYmlsaXRpZXMuZ2V0
KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpOwog
ICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cHBvcnRlZExldmVs
cyA9IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKGNhcGFiaWxp
dGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZl
bHMpOwogICAgIGlmICghc3VwcG9ydGVkTGV2ZWxzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBpc0hhcmR3YXJl
QWNjZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJp
bGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5
cGVJRChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgYm9vbCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hh
cmR3YXJlQWNjZWxlcmF0ZWRDRik7CiAKICAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzLnZhbHVl
KCkuY29udGFpbnMocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpIHx8ICFzdXBwb3J0ZWRM
ZXZlbHMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHsgeyB0cnVlLCB0cnVlLCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgfSB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaAppbmRleCBlMjI1Y2ZkMjc4MGVlYzI3OTc0ZWRmNzFjZTQ3MDAyOTJlZWM4YjE2Li41ZGQz
ZWNiYmU2YjIwMGYyZWZjZWJiZDJhOWMzNjUzZTA1M2UyZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtMTg0LDcgKzE4
NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBtX3N1cmZhY2U7
CiAKLSAgICBzdGF0aWMgV1RGOjpPcHRpb25hbDxJbnRTaXplPiBzX21heGltdW1TaXplOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNfbWF4aW11bVNpemU7CiB9OwogCiBXRUJD
T1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29j
b2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdp
bmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAppbmRleCBjODk2Y2E0MGE2N2MyMTQxZGNk
MjA2M2U1ZDBjNzY4NjFhNzRmMWM4Li5kNWE2MzVmZDE0OGExYjE0MTdmOTkyZWUyNDJjYzc5OWI0
NmQyYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZh
Y3RvcnlDb2NvYS5jcHAKQEAgLTY1LDE3ICs2NSwxNyBAQCBzdGF0aWMgT3B0aW9uYWw8TWVkaWFD
YXBhYmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJbmZvKGNvbnN0IE1lZGlh
RAogICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSh2aWRlb0NvbmZpZ3VyYXRp
b24uY29udGVudFR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSBjb25m
aWd1cmF0aW9uLnR5cGUgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlhU291cmNlOwogICAgICAg
ICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8g
Y29kZWNzID0gcGFyYW1ldGVycy50eXBlLmNvZGVjcygpOwogICAgICAgICBpZiAoY29kZWNzLnNp
emUoKSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaW5mby5zdXBwb3J0ZWQgPSB0cnVlOwog
ICAgICAgICBhdXRvJiBjb2RlYyA9IGNvZGVjc1swXTsKICAgICAgICAgYXV0byB2aWRlb0NvZGVj
VHlwZSA9IHZpZGVvQ29kZWNUeXBlRnJvbVJGQzQyODFUeXBlKGNvZGVjKTsKICAgICAgICAgaWYg
KCF2aWRlb0NvZGVjVHlwZSAmJiAhKGNvZGVjLnN0YXJ0c1dpdGgoImR2aDEiKSB8fCBjb2RlYy5z
dGFydHNXaXRoKCJkdmhlIikpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYm9vbCBoZHJTdXBwb3J0
ZWQgPSB2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCB8fCB2aWRlb0NvbmZpZ3VyYXRpb24u
aGRyTWV0YWRhdGFUeXBlIHx8IHZpZGVvQ29uZmlndXJhdGlvbi50cmFuc2ZlckZ1bmN0aW9uOwog
ICAgICAgICBib29sIGFscGhhQ2hhbm5lbCA9IHZpZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5u
ZWwgJiYgdmlkZW9Db25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbC52YWx1ZSgpOwpAQCAtODMsMzQg
KzgzLDM0IEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IGNvbXB1dGVN
ZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAgICAgICAgIGlmICh2aWRlb0NvZGVj
VHlwZSA9PSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDKSB7CiAgICAgICAgICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29kZWMpOwogICAgICAgICAgICAgaWYg
KCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gcGFyc2Vk
SW5mbyA9IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoKnBhcmFtZXRlcnMsIGFscGhhQ2hhbm5lbCwg
aGRyU3VwcG9ydGVkKTsKICAgICAgICAgICAgIGlmICghcGFyc2VkSW5mbykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICBpbmZvID0gKnBhcnNlZEluZm87CiAgICAgICAgIH0gZWxzZSBp
ZiAoY29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0c1dpdGgoImR2aGUiKSkg
ewogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJz
KGNvZGVjKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEluZm8gPSB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKCpw
YXJhbWV0ZXJzLCBhbHBoYUNoYW5uZWwsIGhkclN1cHBvcnRlZCk7CiAgICAgICAgICAgICBpZiAo
IXBhcnNlZEluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaW5mbyA9ICpwYXJz
ZWRJbmZvOwogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIH0gZWxzZSBpZiAodmlkZW9Db2RlY1R5
cGUgPT0ga0NNVmlkZW9Db2RlY1R5cGVfVlA5KSB7CiAgICAgICAgICAgICBpZiAoIWNvbmZpZ3Vy
YXRpb24uY2FuRXhwb3NlVlA5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8g
cGFyYW1ldGVycyA9IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoY29kZWMpOwogICAgICAgICAgICAg
aWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gcGFy
c2VkSW5mbyA9IHZhbGlkYXRlVlBQYXJhbWV0ZXJzKCpwYXJhbWV0ZXJzLCB2aWRlb0NvbmZpZ3Vy
YXRpb24pOwogICAgICAgICAgICAgaWYgKCFwYXJzZWRJbmZvKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIGluZm8gPSAqcGFyc2VkSW5mbzsKICNlbmRpZgogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKGFscGhhQ2hhbm5lbCB8fCBoZHJTdXBwb3J0ZWQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoY2FuTG9hZF9WaWRlb1Rvb2xib3hfVlRJc0hh
cmR3YXJlRGVjb2RlU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAgICBpbmZvLnBvd2VyRWZm
aWNpZW50ID0gVlRJc0hhcmR3YXJlRGVjb2RlU3VwcG9ydGVkKHZpZGVvQ29kZWNUeXBlKTsKQEAg
LTEyNCwyMiArMTI0LDIyIEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+
IGNvbXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAgICAgICAgIHBhcmFt
ZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbmZpZ3VyYXRpb24uYXVkaW8udmFsdWUoKS5jb250
ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGNvbmZpZ3VyYXRp
b24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7CiAgICAgICAgIGlmIChN
ZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGU6OklzU3VwcG9ydGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgaWYgKGNvbmZpZ3Vy
YXRpb24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVPcihmYWxzZSkpIHsKKyAgICAgICAg
aWYgKGNvbmZpZ3VyYXRpb24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICBhdXRvIGNvbnRleHQgPSBQQUw6Ok91dHB1dENvbnRleHQ6OnNoYXJl
ZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpOwogICAgICAgICAgICAgaWYgKCFjb250
ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBkZXZpY2VzID0gY29u
dGV4dC0+b3V0cHV0RGV2aWNlcygpOwogICAgICAgICAgICAgaWYgKGRldmljZXMuaXNFbXB0eSgp
IHx8ICFXVEY6OmFsbE9mKGRldmljZXMsIFtdKGF1dG8mIGRldmljZSkgewogICAgICAgICAgICAg
ICAgIHJldHVybiBkZXZpY2Uuc3VwcG9ydHNTcGF0aWFsQXVkaW8oKTsKICAgICAgICAgICAgIH0p
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgLy8gT25seSBtdWx0aWNoYW5uZWwg
YXVkaW8gY2FuIGJlIHNwYXRpYWxseSByZW5kZXJlZC4KICAgICAgICAgICAgIGlmICghY29uZmln
dXJhdGlvbi5hdWRpby0+Y2hhbm5lbHMuaXNOdWxsKCkgJiYgY29uZmlndXJhdGlvbi5hdWRpby0+
Y2hhbm5lbHMudG9Eb3VibGUoKSA8PSAyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcAppbmRleCBlNTFiNWQ2OWM0NmY0MTc3ZGE0Yzk5ZjQ3MzdjODJmMDMwZjQy
OWY3Li41ZGEzYjRiYjY5MDk3NzdjY2RiZDFiOWQ3NGM2ZTQwZTE3NWQyNWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pCiAgICAgICAgIH0KIAogICAgICAgICBBTFdBWVNfTE9HX0lGX1BPU1NJQkxF
KExPR0lERU5USUZJRVIsICJyZWNlaXZlZCBFYm1sIGVsZW1lbnQgd2hpbGUgcGFyc2luZyBTZWdt
ZW50IGVsZW1lbnQuIFJld291bmQgcmVhZGVyIGFuZCByZXNldCBwYXJzZXIsIHJldHJ5aW5nIik7
Ci0gICAgICAgIG1fcmV3aW5kVG9Qb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9y
ZXdpbmRUb1Bvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3BhcnNlci0+RGlkU2Vl
aygpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6Ok5vbmU7CiAgICAgICAgIGNvbnRpbnVlOwpA
QCAtOTU1LDcgKzk1NSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0CiAKICAgICAqYWN0aW9u
ID0gQWN0aW9uOjprUmVhZDsKIAotICAgIG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJs
b2NrVmFyaWFudD4oQmxvY2soYmxvY2spKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bWFr
ZV9vcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KEJsb2NrKGJsb2NrKSk7CiAKICAgICByZXR1cm4gU3Rh
dHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTk2Niw3ICs5NjYsNyBAQCB3ZWJtOjpT
dGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZChjb25zdCBFbGVtZW50TWV0
YWRhdGEmIG1ldGFkYXRhLAogICAgIFVOVVNFRF9QQVJBTShibG9jayk7CiAgICAgSU5GT19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSAgICBtX2N1cnJlbnRCbG9jayA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQpAQCAtOTgyLDcgKzk4Miw3IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrQmVnaW4oY29u
c3QgRWxlbWVudE1ldGFkYXRhJiBtCiAKICAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKIAot
ICAgIG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2NrVmFyaWFudD4oU2ltcGxlQmxv
Y2soYmxvY2spKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bWFrZV9vcHRpb25hbDxCbG9j
a1ZhcmlhbnQ+KFNpbXBsZUJsb2NrKGJsb2NrKSk7CiAKICAgICByZXR1cm4gU3RhdHVzKFN0YXR1
czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTk5NCw3ICs5OTQsNyBAQCB3ZWJtOjpTdGF0dXMgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25zdCBFbGVtZW50TWV0YWRh
dGEmIG1ldAogCiAgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKIAotICAgIG1fY3VycmVudEJsb2Nr
ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CkBAIC0xMzA2LDggKzEz
MDYsOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6QXVkaW9UcmFja0Rh
dGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogCiAKICAgICBtX3BhY2tldERlc2NyaXB0
aW9ucy5hcHBlbmQoeyBzdGF0aWNfY2FzdDxpbnQ2NF90PigqbV9jdXJyZW50UGFja2V0Qnl0ZU9m
ZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY3VycmVudFBhY2tldFNpemUpIH0pOwot
ICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9jdXJy
ZW50UGFja2V0U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRQYWNrZXRCeXRlT2Zm
c2V0ID0gc3RkOjpudWxsb3B0OworICAgIG1fY3VycmVudFBhY2tldFNpemUgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gQ01UaW1lR2V0U2Vjb25kcyhDTVRpbWVT
dWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRhdGlvblRpbWUpKSArIENN
VGltZUdldFNlY29uZHMobV9wYWNrZXREdXJhdGlvbikgKiBzYW1wbGVDb3VudDsKICAgICBpZiAo
c2FtcGxlRHVyYXRpb24gPj0gbV9taW5pbXVtU2FtcGxlRHVyYXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNLmgKaW5kZXggNjQxZTQ3MTg2ZWFmMzI3NjBlMTgyNzVhZDNkOGQ1MDQ2ZDVj
NzJmMi4uMzUxYWJmODE3NDUwYjMwYzcxYjRhMjA2N2FiNGU1MThjNTE1MWE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMjA3LDcgKzIwNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogCiAgICAgICAgIHdlYm06OlN0YXR1cyBjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWRl
ciYsIGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB1aW50NjRfdCosIGNvbnN0IENNVGltZSYs
IGludCkgZmluYWw7Ci0gICAgICAgIHZvaWQgY3JlYXRlU2FtcGxlQnVmZmVyKE9wdGlvbmFsPHNp
emVfdD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0ID0gV1RGOjpudWxsb3B0KTsKKyAgICAgICAgdm9p
ZCBjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90PiBsYXRlc3RCeXRlUmFuZ2VPZmZz
ZXQgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkF1ZGlvVHJhY2tEYXRhIjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVlA5VXRpbGl0aWVz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbQppbmRleCAzMmNhZjcxNTY3ZWRmOWRlYjcwYmFjNzFmMjg5YjIzMzRkZjU2
NzUyLi42ZWVkMDE2ZjBiZGUwOTI0NDI2ODA3OGRiZWNlMDQ4YjMwMWQ3ZTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGls
aXRpZXNDb2NvYS5tbQpAQCAtMjMzLDIyICsyMzMsMjIgQEAgYm9vbCBpc1ZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkJiBj
b2QKIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMo
Y29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29uZmlndXJhdGlvbiwgY29u
c3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgaWYgKCFp
c1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVjQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBWaWRlb0NvbmZpZ3VyYXRpb24gYW5kIFZQQ29kZWNDb25maWd1cmF0aW9u
UmVjb3JkIGNhbiBoYXZlIGNvbmZsaWN0aW5nIHZhbHVlcyBmb3IgSERSIHByb3BlcnRpZXMuIElm
IHNvLCByZWplY3QuCiAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi50cmFuc2ZlckZ1bmN0aW9u
KSB7CiAgICAgICAgIC8vIE5vdGU6IFRyYW5zZmVyIENoYXJhY3RlcmlzdGljcyBhcmUgZGVmaW5l
ZCBieSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICAgICAgaWYgKCp2aWRlb0NvbmZpZ3VyYXRp
b24udHJhbnNmZXJGdW5jdGlvbiA9PSBUcmFuc2ZlckZ1bmN0aW9uOjpTUkdCICYmIGNvZGVjQ29u
ZmlndXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA+IDE1KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmICgqdmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rpb24gPT0gVHJhbnNmZXJG
dW5jdGlvbjo6UFEgJiYgY29kZWNDb25maWd1cmF0aW9uLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNz
ICE9IDE2KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqdmlkZW9Db25maWd1cmF0aW9uLnRyYW5z
ZmVyRnVuY3Rpb24gPT0gVHJhbnNmZXJGdW5jdGlvbjo6SExHICYmIGNvZGVjQ29uZmlndXJhdGlv
bi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyAhPSAxOCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IGlmICh2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCkgewogICAgICAgICBpZiAoKnZpZGVv
Q29uZmlndXJhdGlvbi5jb2xvckdhbXV0ID09IENvbG9yR2FtdXQ6OlJlYzIwMjAgJiYgY29kZWND
b25maWd1cmF0aW9uLmNvbG9yUHJpbWFyaWVzICE9IDkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBNZWRpYUNhcGFiaWxpdGllc0luZm8gaW5mbzsKQEAgLTI1NiwxMiArMjU2LDEyIEBAIE9wdGlv
bmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFtZXRlcnMoY29uc3QgVlBD
b2RlY0NvbmZpZ3VyYXRpb25SCiAgICAgaWYgKHZwOUhhcmR3YXJlRGVjb2RlckF2YWlsYWJsZSgp
KSB7CiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVyIGRvZXMgbm90IHN1cHBvcnQgYWxwaGEgY2hh
bm5lbDoKICAgICAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwgJiYgKnZp
ZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBI
VyBWUDkgRGVjb2RlciBjYW4gc3VwcG9ydCB1cCB0byA0SyBAIDEyMCBvciA4SyBAIDMwCiAgICAg
ICAgIGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdXRpb25DYXRlZ29yeSh7IChmbG9hdCl2aWRlb0Nv
bmZpZ3VyYXRpb24ud2lkdGgsIChmbG9hdCl2aWRlb0NvbmZpZ3VyYXRpb24uaGVpZ2h0IH0pOwog
ICAgICAgICBpZiAocmVzb2x1dGlvbiA+IFJlc29sdXRpb25DYXRlZ29yeTo6Ul84SykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAocmVzb2x1dGlvbiA9PSBSZXNvbHV0aW9uQ2F0ZWdvcnk6OlJfOEsg
JiYgdmlkZW9Db25maWd1cmF0aW9uLmZyYW1lcmF0ZSA+IDMwKQogICAgICAgICAgICAgaW5mby5z
bW9vdGggPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAocmVzb2x1dGlvbiA8PSBSZXNvbHV0aW9u
Q2F0ZWdvcnk6OlJfNEsgJiYgdmlkZW9Db25maWd1cmF0aW9uLmZyYW1lcmF0ZSA+IDEyMCkKQEAg
LTMxNSw3ICszMTUsNyBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRl
VlBQYXJhbWV0ZXJzKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUgogICAgIH0KIAogICAgIGlm
ICghaGFzNGtTY3JlZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgcmV0
dXJuIGluZm87CkBAIC02MTYsNyArNjE2LDcgQEAgT3B0aW9uYWw8VlA4RnJhbWVIZWFkZXI+IHBh
cnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXoKIAog
ICAgIC8vIEJhaWwgaWYgdGhlIGhlYWRlciBpcyBiZWxvdyBhIG1pbmltdW0gc2l6ZQogICAgIGlm
IChmcmFtZVNpemUgPCAxMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQOEZyYW1lSGVhZGVyIGhlYWRlcjsKICAgICBz
aXplX3QgaGVhZGVyU2l6ZSA9IDExOwpAQCAtNjI2LDcgKzYyNiw3IEBAIE9wdGlvbmFsPFZQOEZy
YW1lSGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6CiAKICAgICBhdXRvIHVuY29tcHJlc3NlZENodW5rID0gdmlldy0+Z2V0PHVpbnQz
Ml90PigwLCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGhlYWRl
ci5rZXlmcmFtZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAwMDsKICAgICBoZWFkZXIu
dmVyc2lvbiA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7CkBAIC02MzgsMzMgKzYz
OCwzMyBAQCBPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhGcmFtZUhlYWRlcih1aW50
OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpegogCiAgICAgYXV0byBzdGFydENvZGUwID0g
dmlldy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOwogICAgIGlmICghc3RhdHVzIHx8
IHN0YXJ0Q29kZTAgIT0gMHg5ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnRDb2RlMSA9IHZpZXctPmdl
dDx1aW50OF90Pig0LCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENv
ZGUxICE9IDB4MDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2aWV3LT5nZXQ8dWludDhf
dD4oNSwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMgfHwgc3RhcnRDb2RlMiAhPSAw
eDJhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBob3Jpem9udGFsQW5kV2lkdGhGaWVsZCA9IHZpZXctPmdldDx1
aW50MTZfdD4oNiwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBo
ZWFkZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaG9yaXpvbnRhbEFu
ZFdpZHRoRmllbGQgPj4gMTQpOwogICAgIGhlYWRlci53aWR0aCA9IHN0YXRpY19jYXN0PHVpbnQx
Nl90Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CiAKICAgICBhdXRvIHZlcnRp
Y2FsQW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgsIHRydWUsICZzdGF0dXMp
OwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaGVhZGVyLnZlcnRpY2FsU2NhbGUgPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkID4+IDE0KTsKICAgICBoZWFk
ZXIuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQg
JiAweDNGRkYpOwogCiAgICAgYXV0byBjb2xvclNwYWNlQW5kQ2xhbXBpbmdGaWVsZCA9IHZpZXct
PmdldDx1aW50OF90PigxMCwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBoZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkICYgMHg4
MDsKICAgICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxk
ICYgMHg0MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCmluZGV4IDQ4ODY1NDg0MjI3
NGU1YTlhODllOTNiZjVjYzM1ODllZmVlOWYyOWUuLjNlYjI4MTg2MDgwMjBmOWY0MGE0ODg2ZTI2
NWY1NGU2ZmYyZGMzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcApAQCAtNTUs
MTQgKzU1LDE0IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBWaWRlb1RyYWNrUHJpdmF0ZVdlYk06OnRy
YWNrVUlEKCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay50cmFja191aWQuaXNfcHJlc2VudCgp
KQogICAgICAgICByZXR1cm4gbV90cmFjay50cmFja191aWQudmFsdWUoKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPGJv
b2w+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAogewogICAg
IGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gbV90
cmFjay5pc19lbmFibGVkLnZhbHVlKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBBdG9tU3RyaW5nIFZpZGVvVHJhY2tQcml2YXRlV2Vi
TTo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXggZWY4NmU0YzNjMmJiYmE4
NzQ2ZTI0MWU0MzUxZTc4MGU3NDMzZDMxNi4uZGM5MDgwOGNjYThlODM3Y2I3MDRiODlkOTY3MTJi
YWFhM2FiZjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRm9udENvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgc3Rh
dGljIGlubGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVGZWF0dXJlKENGRGljdGlv
bmFyeVJlZiBmZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZO
dW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtDVEZvbnRPcGVuVHlwZUZl
YXR1cmVWYWx1ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVyR2V0VmFsdWUodmFsdWUs
IGtDRk51bWJlckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNz
LCBzdWNjZXNzKTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0cmluZ1JlZj4o
dGFnKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25hbDxDRlN0
cmluZ1JlZj4odGFnKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGluZSBzdGQ6OnBh
aXI8aW50LCBpbnQ+IHRydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCBkNWI5ZjdlMWRkODBi
OGRlMzBmYjMxOWJhOGMxODc3ZDg2OWQ2ZjVlLi41YzQyNDU0MTNiNDAxM2I0YmI1NzE4ODFkMGRi
NzY2NGQ1M2Q2MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5o
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgT3B0aW9uYWw8c3RkOjpz
aXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNv
ZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMTE3Y2ZhODM5MzYwODllNzFmZDA1YWI3ODY0OGJk
MjQ4ZDVlNzkwLi44Mzk0YmQzODJmOTI1NWIzOTQzNDIzZDE5M2EwMDljYzc4YTU4NTg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM4Myw3ICszODMsNyBAQCBPcHRpb25h
bDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzPiBjaGFuZ2VGbGFnczsK
ICAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwogICAgIGlmICghY2hhbmdlRmxhZ3MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKICAgICBzdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwpAQCAtMzk0LDcgKzM5NCw3IEBAIE9w
dGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRvIHN0cm9rZUdyYWRpZW50
ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFzdHJva2VHcmFkaWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlR3JhZGll
bnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7CiAgICAgfQpAQCAtNDAzLDEyICs0MDMsMTIg
QEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOwogICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRl
cnM7CiAgICAgICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICAgICAgaWYgKCFwYXJhbWV0
ZXJzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgKnBhcmFtZXRlcnMgfTsKICAgICB9CkBAIC00MTYsNyArNDE2LDcg
QEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRvIGZpbGxHcmFkaWVu
dCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZmlsbEdyYWRpZW50
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsR3JhZGllbnQg
PSBXVEZNb3ZlKCpmaWxsR3JhZGllbnQpOwogICAgIH0KQEAgLTQyNSwxMiArNDI1LDEyIEBAIE9w
dGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwog
ICAgICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgICAgIGlmICghcGFyYW1ldGVycykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIGZpbGxQYXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCAqcGFyYW1ldGVycyB9OwogICAgIH0KQEAgLTQzOSwyOCArNDM5LDI4IEBAIE9w
dGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwogICAgICAgICBkZWNvZGVyID4+
IHNoYWRvd09mZnNldDsKICAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9ICpzaGFkb3dPZmZzZXQ7
CiAKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CiAgICAgICAgIGRlY29kZXIg
Pj4gc2hhZG93Qmx1cjsKICAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNoYWRvd0JsdXI7CiAKICAg
ICAgICAgT3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHNo
YWRvd0NvbG9yOwogICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFkb3dDb2xvcjsKIAogICAg
ICAgICBPcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBzaGFkb3dSYWRpdXNNb2RlOwogICAgICAg
ICBkZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7CiAgICAgICAgIGlmICghc2hhZG93UmFkaXVz
TW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93UmFk
aXVzTW9kZSA9IFdURk1vdmUoKnNoYWRvd1JhZGl1c01vZGUpOwogICAgIH0KQEAgLTQ2OSw3ICs0
NjksNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICBPcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tuZXNzOwogICAgICAgICBk
ZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgaWYgKCFzdHJva2VUaGlja25lc3Mp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVRoaWNrbmVz
cyA9ICpzdHJva2VUaGlja25lc3M7CiAgICAgfQpAQCAtNDc4LDcgKzQ3OCw3IEBAIE9wdGlvbmFs
PFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9w
dGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01vZGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOwogICAgICAgICBpZiAoIXRleHREcmF3aW5nTW9kZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUudGV4dERyYXdpbmdNb2Rl
ID0gV1RGTW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKICAgICB9CkBAIC00ODcsNyArNDg3LDcgQEAg
T3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgT3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAgICAgICBkZWNvZGVyID4+IHN0
cm9rZUNvbG9yOwogICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJva2VDb2xvcjsKICAgICB9
CkBAIC00OTYsNyArNDk2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAg
ICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsQ29sb3IgPSAqZmlsbENv
bG9yOwogICAgIH0KQEAgLTUwNCw3ICs1MDQsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3Rh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VTdHlsZUNoYW5nZSkp
IHsKICAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwogICAgIH0KQEAgLTUxMyw3ICs1MTMs
NyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICBPcHRpb25hbDxXaW5kUnVsZT4gZmlsbFJ1bGU7CiAgICAgICAgIGRlY29kZXIg
Pj4gZmlsbFJ1bGU7CiAgICAgICAgIGlmICghZmlsbFJ1bGUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxSdWxlID0gKmZpbGxSdWxlOwogICAgIH0KQEAgLTUy
Miw3ICs1MjIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRl
T3BlcmF0b3I7CiAgICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgICAg
IGlmICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gKmNvbXBvc2l0ZU9wZXJhdG9yOwogICAgIH0K
QEAgLTUzMSw3ICs1MzEsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsK
ICAgICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgICAgIGlmICghYmxlbmRNb2RlKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5ibGVuZE1vZGUgPSAqYmxl
bmRNb2RlOwogICAgIH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0
U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxJbnRlcnBv
bGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsKICAgICAgICAgZGVjb2Rl
ciA+PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBpZiAoIWltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAqaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsK
ICAgICB9CkBAIC01NDksNyArNTQ5LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhOwog
ICAgICAgICBkZWNvZGVyID4+IGFscGhhOwogICAgICAgICBpZiAoIWFscGhhKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICphbHBoYTsKICAgICB9CkBA
IC01NTgsNyArNTU4LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkQW50aWFsaWFzOwog
ICAgICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKICAgICAgICAgaWYgKCFzaG91bGRB
bnRpYWxpYXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3Vs
ZEFudGlhbGlhcyA9ICpzaG91bGRBbnRpYWxpYXM7CiAgICAgfQpAQCAtNTY3LDcgKzU2Nyw3IEBA
IE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOwogICAgICAgICBkZWNvZGVy
ID4+IHNob3VsZFNtb290aEZvbnRzOwogICAgICAgICBpZiAoIXNob3VsZFNtb290aEZvbnRzKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaG91bGRTbW9vdGhGb250
cyA9ICpzaG91bGRTbW9vdGhGb250czsKICAgICB9CkBAIC01NzYsNyArNTc2LDcgQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwogICAgICAgICBkZWNv
ZGVyID4+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKICAgICAgICAgaWYgKCFzaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHM7CiAgICAgfQpAQCAtNTg1LDcgKzU4NSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBT
ZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+
IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgICAgICBkZWNvZGVyID4+IHNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zOwogICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CkBAIC02NTAsMTIgKzY1MCwx
MiBAQCBPcHRpb25hbDxTZXRMaW5lRGFzaD4gU2V0TGluZURhc2g6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPERhc2hBcnJheT4gZGFzaEFycmF5OwogICAgIGRlY29kZXIg
Pj4gZGFzaEFycmF5OwogICAgIGlmICghZGFzaEFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Zmxv
YXQ+IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBkYXNoT2Zmc2V0OwogICAgIGlmICghZGFz
aE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqZGFzaEFycmF5LCAqZGFzaE9mZnNldCB9fTsK
IH0KQEAgLTgxMCw3ICs4MTAsNyBAQCBPcHRpb25hbDxDbGlwT3V0VG9QYXRoPiBDbGlwT3V0VG9Q
YXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQYXRoPiBwYXRoOwog
ICAgIGRlY29kZXIgPj4gcGF0aDsKICAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqcGF0aCkgfX07CiB9CkBAIC04NTksMTIgKzg1OSwxMiBAQCBPcHRpb25hbDxDbGlw
UGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBh
dGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFdpbmRSdWxlPiB3aW5kUnVsZTsKICAgICBkZWNvZGVyID4+IHdpbmRSdWxlOwog
ICAgIGlmICghd2luZFJ1bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqcGF0aCksICp3
aW5kUnVsZSB9fTsKIH0KQEAgLTkxMCwxMiArOTEwLDEyIEBAIE9wdGlvbmFsPEJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29k
ZXImCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKICAgICBkZWNvZGVyID4+
IGRlc3RpbmF0aW9uOwogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBjb2xvclNw
YWNlOwogICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqZGVzdGluYXRp
b24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OwogfQpAQCAtOTU2LDcgKzk1Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9ib3Vu
ZHM7IH0KIAogcHJpdmF0ZToKQEAgLTk4NywzNSArOTg3LDM1IEBAIE9wdGlvbmFsPERyYXdHbHlw
aHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiBmb250SWRlbnRpZmllcjsKICAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKICAgICBkZWNvZGVy
ID4+IGdseXBoczsKICAgICBpZiAoIWdseXBocykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxH
bHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOwogICAgIGRlY29kZXIgPj4gYWR2YW5j
ZXM7CiAgICAgaWYgKCFhZHZhbmNlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChnbHlwaHMtPnNpemUoKSAhPSBh
ZHZhbmNlcy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBib3VuZHM7CiAg
ICAgZGVjb2RlciA+PiBib3VuZHM7CiAgICAgaWYgKCFib3VuZHMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGbG9hdFBvaW50PiBsb2NhbEFuY2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5jaG9yOwog
ICAgIGlmICghbG9jYWxBbmNob3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250U21vb3RoaW5nTW9k
ZT4gc21vb3RoaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHNtb290aGluZ01vZGU7CiAgICAgaWYg
KCFzbW9vdGhpbmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpmb250SWRlbnRpZmllciwgV1RG
TW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqYm91bmRzLCAqbG9jYWxBbmNob3Is
ICpzbW9vdGhpbmdNb2RlIH19OwogfQpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgcHVibGljOgogCiAg
ICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25SZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMDc5LDcgKzEwNzksNyBAQCBwdWJs
aWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdl
JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTExMSw3ICsxMTExLDcgQEAg
cHVibGljOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJ
bWFnZSYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgpAQCAtMTE0MCw4ICsxMTQwLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByaXZhdGU6CiAgICAgZmxv
YXQgbV9vcGFjaXR5OwpAQCAtMTE1NSw4ICsxMTU1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiB9OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBAIC0xMTc2LDcgKzExNzYs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
CiAKIHByaXZhdGU6CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xMjI4LDcgKzEyMjgsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMjYwLDMyICsxMjYwLDMyIEBAIE9wdGlv
bmFsPERyYXdMaW5lc0ZvclRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGJsb2NrTG9jYXRpb247CiAgICAgZGVj
b2RlciA+PiBibG9ja0xvY2F0aW9uOwogICAgIGlmICghYmxvY2tMb2NhdGlvbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9jYWxBbmNob3I7CiAgICAgZGVjb2RlciA+PiBsb2NhbEFu
Y2hvcjsKICAgICBpZiAoIWxvY2FsQW5jaG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RGFzaEFycmF5
PiB3aWR0aHM7CiAgICAgZGVjb2RlciA+PiB3aWR0aHM7CiAgICAgaWYgKCF3aWR0aHMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxmbG9hdD4gdGhpY2tuZXNzOwogICAgIGRlY29kZXIgPj4gdGhpY2tuZXNz
OwogICAgIGlmICghdGhpY2tuZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gcHJpbnRpbmc7
CiAgICAgZGVjb2RlciA+PiBwcmludGluZzsKICAgICBpZiAoIXByaW50aW5nKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Ym9vbD4gZG91YmxlTGluZXM7CiAgICAgZGVjb2RlciA+PiBkb3VibGVMaW5lczsK
ICAgICBpZiAoIWRvdWJsZUxpbmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpibG9ja0xvY2F0aW9u
LCAqbG9jYWxBbmNob3IsICp0aGlja25lc3MsICp3aWR0aHMsICpwcmludGluZywgKmRvdWJsZUxp
bmVzIH19OwogfQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Cisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgpAQCAt
MTM3Miw3ICsxMzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTEzOTEsNyAr
MTM5MSw3IEBAIE9wdGlvbmFsPERyYXdQYXRoPiBEcmF3UGF0aDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAg
ICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpIH19OwogfQpA
QCAtMTQyOCw3ICsxNDI4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owog
CiBwcml2YXRlOgpAQCAtMTQ1MywyMiArMTQ1MywyMiBAQCBPcHRpb25hbDxEcmF3Rm9jdXNSaW5n
UGF0aD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9w
dGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwog
ICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gb2Zmc2V0OwogICAgIGRl
Y29kZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29s
b3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpZHRoLCAqb2Zmc2V0LCAqY29sb3IgfX07
CiB9CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CkBAIC0xNTE2LDIyICsxNTE2LDIyIEBAIE9wdGlvbmFsPERyYXdGb2N1c1JpbmdSZWN0
cz4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxWZWN0b3I8RmxvYXRSZWN0Pj4gcmVjdHM7CiAgICAgZGVjb2RlciA+PiByZWN0czsKICAg
ICBpZiAoIXJlY3RzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAgIGRlY29k
ZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBv
ZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAo
IWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0cywgKndpZHRoLCAqb2Zmc2V0LCAqY29s
b3IgfX07CiB9CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xNTc1LDcgKzE1NzUs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CkBAIC0xNTk5LDEyICsxNTk5LDEyIEBAIE9wdGlvbmFsPEZpbGxSZWN0V2l0aENvbG9yPiBG
aWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAgICBpZiAoIXJlY3QpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAg
ICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0LCAqY29sb3IgfX07CiB9CkBA
IC0xNjIyLDcgKzE2MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNjQ2LDExICsxNjQ2LDExIEBAIE9wdGlvbmFsPEZpbGxS
ZWN0V2l0aEdyYWRpZW50PiBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVj
dDsKICAgICBpZiAoIXJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmRl
Y29kZShkZWNvZGVyKTsKICAgICBpZiAoIWdyYWRpZW50KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpy
ZWN0LCBncmFkaWVudC0+Z2V0KCkgfX07CiB9CkBAIC0xNjc2LDcgKzE2NzYsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNzA0
LDIyICsxNzA0LDIyIEBAIE9wdGlvbmFsPEZpbGxDb21wb3NpdGVkUmVjdD4gRmlsbENvbXBvc2l0
ZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29s
b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gb3A7CiAgICAgZGVjb2Rl
ciA+PiBvcDsKICAgICBpZiAoIW9wKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVu
ZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgKnJlY3QsICpjb2xvciwgKm9wLCAqYmxlbmRNb2RlIH19OwogfQpA
QCAtMTc0Niw3ICsxNzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdC5yZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE3NjksMTcgKzE3NjksMTcg
QEAgT3B0aW9uYWw8RmlsbFJvdW5kZWRSZWN0PiBGaWxsUm91bmRlZFJlY3Q6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0Um91bmRlZFJlY3Q+IHJlY3Q7CiAgICAg
ZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9y
PiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29sb3IpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAgICBkZWNvZGVyID4+IGJsZW5kTW9k
ZTsKICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcmVjdCwgKmNvbG9y
LCAqYmxlbmRNb2RlIH19OwogfQpAQCAtMTgwNiw3ICsxODA2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTgy
OSwxNyArMTgyOSwxNyBAQCBPcHRpb25hbDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4gRmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8RmxvYXRSb3VuZGVkUmVjdD4gcm91bmRlZEhvbGVSZWN0OwogICAgIGRl
Y29kZXIgPj4gcm91bmRlZEhvbGVSZWN0OwogICAgIGlmICghcm91bmRlZEhvbGVSZWN0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAg
aWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcmVjdCwgKnJvdW5kZWRIb2xlUmVjdCwg
KmNvbG9yIH19OwogfQpAQCAtMTg4Myw3ICsxODgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIH07CiAK
QEAgLTE5MTIsNyArMTkxMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7
IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHByaXZhdGU6CkBAIC0xOTMx
LDcgKzE5MzEsNyBAQCBPcHRpb25hbDxGaWxsUGF0aD4gRmlsbFBhdGg6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRo
OwogICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSB9fTsK
IH0KQEAgLTE5NTEsNyArMTk1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVj
dD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBtX3JlY3Q7IH0KIAogcHJpdmF0ZToKQEAgLTE5OTksMTIgKzE5OTksMTIgQEAg
T3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OwogICAgIGRlY29kZXIgPj4g
c3JjUmVjdDsKICAgICBpZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxQaXhlbEJ1ZmZl
ckZvcm1hdD4gb3V0cHV0Rm9ybWF0OwogICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OwogICAg
IGlmICghb3V0cHV0Rm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKm91dHB1dEZv
cm1hdCksICpzcmNSZWN0IH19OwogfQpAQCAtMjAzMCw3ICsyMDMwLDcgQEAgcHVibGljOgogICAg
IEludFBvaW50IGRlc3RQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdFBvaW50OyB9CiAgICAg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0
Rm9ybWF0OyB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQb2ludCwgbV9zcmNSZWN0LnNpemUoKSB9
fTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwpAQCAtMjA2MiwxOSArMjA2MiwxOSBAQCBPcHRpb25hbDxQdXRQaXhlbEJ1ZmZlcj4g
UHV0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgZGVjb2RlciA+
PiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2RlciA+
PiBzcmNSZWN0OwogICAgIGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRlY29kZXIgPj4gZGVzdFBv
aW50OwogICAgIGlmICghZGVzdFBvaW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2RlciA+PiBkZXN0Rm9ybWF0
OwogICAgIGlmICghZGVzdEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwaXhl
bEJ1ZmZlciksICpzcmNSZWN0LCAqZGVzdFBvaW50LCAqZGVzdEZvcm1hdCB9fTsKIH0KQEAgLTIw
OTUsNyArMjA5NSw3IEBAIHB1YmxpYzoKIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7IG1fZGVzdGlu
YXRpb24gfTsgfQogCiBwcml2YXRlOgpAQCAtMjEyMSw3ICsyMTIxLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Cisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjE3NCw3
ICsyMTc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogfTsKIApAQCAt
MjIwMyw3ICsyMjAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBw
cml2YXRlOgpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgT3B0aW9uYWw8U3Ryb2tlUGF0aD4gU3Ryb2tl
UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsK
ICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
IFdURk1vdmUoKnBhdGgpIH19OwogfQpAQCAtMjI0Miw3ICsyMjQyLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Cisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjI2NCw3ICsyMjY0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4IGIw
NDkwZDAzNDg1NzNlM2U3ZTBlNDFjZjM5OWRhZDQxNWVmNjBjNzEuLjBhZWYxMjhhYjNiNWI0YjVi
MDIwMTgwMzMyMmMwNDQ5MzE2N2U1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6
OnVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlwZSBpdGVtVHlwZSkgLT4KICAg
ICAgICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKIAogICAgIGlmICghaXNE
cmF3aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50RXh0ZW50ID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAwY2JmNWYzNjk1NzU4YjIxYTM2N2M3ZDk4
MzYwYmMxMmYzYTYwYjFjLi4zZjZiYmJkNWQ4ODdkZTU4NmRlNzA4YTExZjM3YWFlMDg0NTMxZjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogICAgIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdAogICAgIHsK
ICAgICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LAogICAgICAg
ICAgICAgbV9jdXJyZW50RXh0ZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKaW5kZXggMjkyY2I5NjhmMjc5N2NhOTk3Njk3OWI2NGQzMTM4NmQwMTgxZDY2OC4uNjFiZjc5
ZDQ4MDhkYTYwY2JhOTVhNDMwMTM2MDA1ZGY2YWE0ZjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRzKCkpCiAgICAgICAgICAg
ICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgqcmVjdCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4
dGVudChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIG1fZGlzcGxheUxpc3QuYWRkRHJh
d2luZ0l0ZW1FeHRlbnQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDEwN2YyMGVjNGYxYzQxMmY4
MDFlODIwYzA0YjA3MjhmMjQ4ODNhYTMuLjg3ZTIzNDIxY2EyOTkzNGE3ZDc4OWRjNTMyNTdlNDVl
NzA4ZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKICAgICBhdXRvIHJlc291cmNl
SWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKICAg
ICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0KHJlc291cmNlSWRlbnRp
ZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1
ZmZlcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CkBAIC03
Miw3ICs3Miw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAgYXV0byByZXNvdXJjZUlk
ZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1
dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAg
ICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2UpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0
LCBzdHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
VD4KQEAgLTEwNyw3ICsxMDcsNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIGF1dG8g
cmVzb3VyY2VJZGVudGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZpZXIoKTsKICAgICBpZiAo
YXV0byogZm9udCA9IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGZv
bnRJdGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291
cmNlSWRlbnRpZmllcjsKIH0KQEAgLTExNSw2NSArMTE1LDY1IEBAIGlubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNz
Q29udGV4CiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRs
ZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0s
IGNvbnRleHQoKSkpCi0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAg
ICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKICAgICAgICAgaWYgKGF1dG8gbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPERyYXdJ
bWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQo
KSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7CiAgICAgICAg
IGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUlt
YWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0p
KQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJl
c291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAg
ICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVy
biB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0u
aXM8RHJhd0dseXBocz4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9u
dHMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2lu
Z0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIp
IH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAg
ICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAg
aWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0Nh
Y2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJu
Pihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CiAgICAg
ICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0
YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpKSB7CiAgICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdU
Rjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52
YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVt
ID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fbWFz
a0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0
ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0
KTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7
IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAg
cmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51bGxvcHQgfTsKKyAgICAg
ICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBp
ZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKICAgICAgICAgaWYgKCFt
X21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246
OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07
CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdl
QnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZm
ZXIgPSBudWxscHRyOwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAg
IH0KIAogICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0lu
TWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDk4MjIyZGQ5NGNlZmZlNTAxMTM0NjQ0ZjRmZjlj
NTgzMThmNTk1NjguLjEyYjAyNjVhOWM5MDNkMTFjOWZkOWMxNzY2OTAwNTgyYzRkMGY4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9J
bk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIEluTWVtb3J5RGlzcGxh
eUxpc3Q6OlJlYWRpbmdDbGllbnQ6OmRlY28KICAgICBJdGVtSGFuZGxlIHJlc3VsdCB7IGhhbmRs
ZUxvY2F0aW9uIH07CiAgICAgaWYgKGRhdGFIYW5kbGUuc2FmZUNvcHkodHlwZSwgcmVzdWx0KSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlz
cGxheUxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDJhMGVlODBjY2JiMmQ5ZTJiYjAyOTQ5
MTcxZmI0M2RjYmJlMzJkM2MuLjE1ZTE5Yjg4MTg4MWJmMWQ5ZGIzZGFmMGFjODU3N2ZhMGQzMzVl
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIEZFVHVyYnVs
ZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3QgUGFp
bnRpbmdEYXRhJgogICAgIGZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFBvaW50IHBvaW50KDAsIGZpbHRlclJlZ2lvbi55KCkgKyBzdGFydFkpOwog
ICAgIGludCBpbmRleE9mUGl4ZWxDaGFubmVsID0gc3RhcnRZICogKGZpbHRlclJlZ2lvbi53aWR0
aCgpIDw8IDIpOwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNmcm9tID0gZmlsdGVy
KCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0o
KSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5hYnNv
bHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAK
ICAgICBmb3IgKGludCB5ID0gc3RhcnRZOyB5IDwgZW5kWTsgKyt5KSB7CiAgICAgICAgIHBvaW50
LnNldFkocG9pbnQueSgpICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYzAwYjI5MTI2NmVh
Y2M4NzFhODE5OTA3MjQ0ODBkZjU5ZTlhYzY3OS4uZTI1OTYxN2QxMTQ5OGFmMGY4MDgzMzJiOTJh
NGIzZTdmOWNmYzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHZv
aWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpCiB2b2lkIEZp
bHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogewogICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBu
dWxscHRyOwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxvcHQ7Ci0g
ICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV91bm11
bHRpcGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3ByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGaWx0ZXJFZmZlY3Q6OmNsZWFy
UmVzdWx0c1JlY3Vyc2l2ZSgpCkBAIC00NDksNyArNDQ5LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERl
c3RpbmEKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgdG8gc3RvcmUgaW5jb21pbmcgUGl4
ZWxCdWZmZXIKICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgb3Bl
cmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSh0YXJnZXRD
b2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBpeGVsQnVmZmVyLmZvcm1hdCgp
LmFscGhhRm9ybWF0KTsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVz
dGluYQogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0IGNvbG9y
IHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uCiAg
ICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXpl
LCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCksIHRhcmdl
dENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFjb252ZXJ0ZWRCdWZm
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhhcHBlbnMgaW50ZXJuYWxs
eSB3aGVuIGRyYXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFub3RoZXIKICAgICBjb252
ZXJ0ZWRCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW5wdXRCdWZmZXIsIHJlY3Qp
OwpAQCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluCiAKICAgICBtX3Jl
c3VsdENvbG9yU3BhY2UgPSBkZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiAKLSAgICBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gV1RGOjpudWxsb3B0OwotICAgIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gV1RGOjpudWxsb3B0OworICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBz
dGQ6Om51bGxvcHQ7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBzdGQ6Om51bGxv
cHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMjIxMzc1ZTlhNzBhODc2ODExZjQ3
MDk4Mjk1OWViNjkzODIxODE5My4uYTM3MDAwYTNjYzA5NTM1ZDAxYzllMGQ2N2QzZjA3NGI4NTA4
NDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04NCwxMCArODQsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZm
ZXJSZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJl
c3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdU
Rjo6bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVk
UmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0g
V1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFt
cGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBjb3B5UHJlbXVsdGlwbGll
ZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQ
dHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0Jiwg
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3Qm
LCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRB
cnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKICAgICBGaWx0ZXJFZmZlY3RWZWN0b3ImIGlucHV0
RWZmZWN0cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzOyB9CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dEVmZmVjdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZFZmZlY3RJ
bnB1dHMoKSBjb25zdCB7IHJldHVybiBtX2lucHV0RWZmZWN0cy5zaXplKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBlYTM1MDg2N2IyZTkyODkzYjYzMmIyYTBmMWJhNjNj
NjVlOTA4OTcxLi43ZjA4MDhkYjAyYWU0ZmU5ZDAwODlhNmMwNmVjZDczNThiZGFmNjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC01OTgsNyArNTk4LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGUKIAogT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRm
b3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEVOQUJMRShWQVJJ
QVRJT05fRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3Bw
CmluZGV4IGZmNTQwZDUxYzYwY2Q1YTc5OTA0YmMzNWM5OGZjOWE1YWI5NWVjNTguLjQ1NTEyNmQ0
Yzk5NGEwYzRmNWY3NzE1OGRkN2YzOWZiNjliNThhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBo
UGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgR2x5cGhQYWdl
OjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCkKICAgICBpZiAoIWZh
Y2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdURjo6T3B0aW9uYWw8R2x5cGg+IHpl
cm9XaWR0aFNwYWNlR2x5cGhWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEdseXBoPiB6ZXJvV2lk
dGhTcGFjZUdseXBoVmFsdWU7CiAgICAgYXV0byB6ZXJvV2lkdGhTcGFjZUdseXBoID0KICAgICAg
ICAgWyZdIHsKICAgICAgICAgICAgIGlmICghemVyb1dpZHRoU3BhY2VHbHlwaFZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxl
Rm9udERhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAppbmRleCBiOTY3MjdhYjM5ZTc2OTdj
MzdmNzYzY2EyMzdkMWNkOWMzNTVmMWE4Li5lNzkxOTc5YzQ4MTdlMTFiYzkyYTAwZWQ4NDg3NDU4
N2M4MGFmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZvbnRVbml0c1BlckVtKEZU
X0ZhY2UgZnJlZVR5cGVGYWNlKQogICAgIGlmIChhdXRvKiB0dEhlYWRlciA9IHN0YXRpY19jYXN0
PFRUX0hlYWRlcio+KEZUX0dldF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgZnRfc2ZudF9oZWFk
KSkpCiAgICAgICAgIHJldHVybiB0dEhlYWRlci0+VW5pdHNfUGVyX0VNOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZvbnQ6
OnBsYXRmb3JtSW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAppbmRleCAwNGU1NzM0NjE3ZTdiNDE0MmYwZDk1
NGQ1NDI1ZWM1ZTU2YzU5NmFhLi5lMjkyNmJkMDA3N2Y5MzU3MDRiZmE1ZDFmMmNhOGM1MTRmOTA3
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
RXJyb3JTY29wZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVFcnJvclNjb3Blcy5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBHUFVFcnJvclNjb3Blczo6
R1BVRXJyb3JTY29wZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBjYWxsYmFjaykKIAogdm9p
ZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQog
ewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIFdURjo6bnVs
bG9wdCB9KTsKKyAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNjb3BlIHsgZmlsdGVyLCBz
dGQ6Om51bGxvcHQgfSk7CiB9CiAKIE9wdGlvbmFsPEdQVUVycm9yPiBHUFVFcnJvclNjb3Blczo6
cG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQogewogICAgIGlmIChtX2Vycm9yU2Nv
cGVzLmlzRW1wdHkoKSkgewogICAgICAgICBmYWlsTWVzc2FnZSA9ICJObyBlcnJvciBzY29wZSBl
eGlzdHMhIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIHNjb3BlID0gbV9lcnJvclNjb3Blcy50YWtl
TGFzdCgpOwotICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJyb3JGaWx0ZXI6Ok5vbmUg
PyBXVEY6Om51bGxvcHQgOiBzY29wZS5lcnJvcjsKKyAgICByZXR1cm4gc2NvcGUuZmlsdGVyID09
IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxsb3B0IDogc2NvcGUuZXJyb3I7CiB9CiAK
IHZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KaW5k
ZXggZDViNDdkMjFhNTQyNTg2MTZlYTFiNTE1OTllNGViY2JiMThlOTJmNS4uYTllYzE3YjhjYzA0
ZGQyNTJlZDYxZjc3ZWVmNWI3MTgxY2JjYTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRh
bC5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxHUFVCdWZmZXJCaW5kaW5n
PiB0cnlHZXRSZXNvdXJjZUFzQnVmZmVyQmluZGluZyhjb25zdCBHUFVCaW5kaW5nCiAjZW5kaWYK
ICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8R1BVQnVmZmVyQmluZGluZz4ocmVzb3Vy
Y2UpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogUmVzb3VyY2UgaXMgbm90IGEgYnVmZmVy
IHR5cGUhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYXV0byYgYnVmZmVyQmluZGlu
ZyA9IFdURjo6Z2V0PEdQVUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKTsKICAgICBpZiAoIWJ1ZmZl
ckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7CiAgICAgICAgIExPRyhXZWJHUFUs
ICIlczogSW52YWxpZCBNVExCdWZmZXIgaW4gR1BVQnVmZmVyQmluZGluZyEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50ZWdlcj4oYnVmZmVyQmlu
ZGluZy5zaXplKSB8fCBidWZmZXJCaW5kaW5nLnNpemUgPiBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogR1BVQnVmZmVyQmluZGlu
ZyBzaXplIGlzIHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAvLyBN
VExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBzb21lIHBsYXRmb3Jtcy4K
ICAgICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50ZWdlcj4oYnVmZmVyQmluZGluZy5vZmZzZXQpKSB7
CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogQnVmZmVyIG9mZnNldCBpcyB0b28gbGFyZ2UhIiwg
ZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIEdQVUJ1ZmZlckJpbmRpbmcgeyBi
dWZmZXJCaW5kaW5nLmJ1ZmZlci5jb3B5UmVmKCksIGJ1ZmZlckJpbmRpbmcub2Zmc2V0LCBidWZm
ZXJCaW5kaW5nLnNpemUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRh
bC5tbQppbmRleCA0MDdlZTRhYTMwNjdiZjEyYTlhMGIyOTE3ZWY0NDMyZWQwNjFiY2Y0Li43OWE5
OWRjNWM0YjY2ODM2OTcxODg4ODQ0ODQzNzBhMjMwMWU3MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tcHV0ZVBpcGVsaW5lTWV0
YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnM+IHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9n
cmFtbWFibGVTCiAgICAgICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0ID0gV0hMU0w6OnByZXBh
cmUoKmNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCksICp3aGxzbERlc2NyaXB0b3Ip
OwogICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgewogICAgICAgICAgICAgZXJyb3JT
Y29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIldITFNMIGNvbXBpbGUgZXJy
b3I6ICIsIHdobHNsQ29tcGlsZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hsc2xDb21waWxlUmVzdWx0LT5jb21w
dXRlRGltZW5zaW9uczsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V0hMU0w6
OkNvbXB1dGVEaW1lbnNpb25zPiB0cnlTZXRGdW5jdGlvbnMoY29uc3QgR1BVUHJvZ3JhbW1hYmxl
UwogICAgIGlmICh0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb21wdXRlTGlicmFyeS5nZXQoKSwgbXRs
RGVzY3JpcHRvciwgY29tcHV0ZUVudHJ5UG9pbnQsIGVycm9yU2NvcGVzKSkKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVEaW1lbnNpb25zOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ29udmVydFJlc3VsdCB7CkBAIC0xMjks
NyArMTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbnZlcnRSZXN1bHQ+IGNvbnZlcnRDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IEdQVUNvbXB1dGUKIAogICAgIGlmICghbXRsRGVzY3Jp
cHRvcikgewogICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IoIkVycm9y
IGNyZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVzY3JpcHRvci5jb21wdXRlU3RhZ2U7CkBA
IC0xNDUsMTQgKzE0NSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVy
dENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZQogICAgICAgICAgICAg
d2hsc2xEZXNjcmlwdG9yLT5sYXlvdXQgPSBXVEZNb3ZlKCpsYXlvdXQpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3Ig
Y29udmVydGluZyBHUFVQaXBlbGluZUxheW91dCEiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSB0cnlTZXRGdW5jdGlvbnMo
Y29tcHV0ZVN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCksIHdobHNsRGVzY3JpcHRv
ciwgZXJyb3JTY29wZXMpKQogICAgICAgICByZXR1cm4ge3sgbXRsRGVzY3JpcHRvciwgKmNvbXB1
dGVEaW1lbnNpb25zIH19OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ3JlYXRlUmVzdWx0IHsKQEAgLTE2NCwxMiArMTY0
LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQ
aXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYKIHsKICAgICBpZiAoIWRldmljZS5wbGF0Zm9y
bURldmljZSgpKSB7CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigi
SW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBjb252ZXJ0UmVzdWx0
ID0gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoZGVzY3JpcHRvciwgZGV2aWNlLCBl
cnJvclNjb3Blcyk7CiAgICAgaWYgKCFjb252ZXJ0UmVzdWx0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIEFTU0VSVChjb252
ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwogICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9
IGNvbnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKIApAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1UTENvbXB1dGVQaXBlbGlu
ZVN0YXRlKGNvbnN0IEdQVURldmljZSYKICAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5w
bGF0Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRs
RGVzY3JpcHRvci5nZXQoKSBvcHRpb25zOk1UTFBpcGVsaW5lT3B0aW9uTm9uZSByZWZsZWN0aW9u
Om5pbCBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoIXBpcGVsaW5lKSB7CiAgICAgICAgIGVycm9y
U2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvciA/IGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uLlVURjhTdHJpbmcgOiAiVW5hYmxlIHRvIGNyZWF0ZSBNVExDb21wdXRlUGlwZWxpbmVT
dGF0ZSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlw
ZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5b3V0LmNwcAppbmRleCAy
MzFmMWFiZTYzMDZjOTUxYjM0NGEzMTlkNGU4YWZmNmY4NjE1ZjRmLi4zNTRjNmEyYTlmNTMzOTA5
NjQ5OWFhN2JiYjRhZDZiYWI5N2E4MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBl
bGluZU1ldGFsQ29udmVydExheW91dC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIE9wdGlv
bmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gY29udmVydEJpbmRpbmdUeXBlKEdQ
VUJpbmRHcm91cEwKICAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShH
UFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9u
YWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiB7IFdI
TFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIuaW50ZXJuYWxMZW5ndGhO
YW1lIH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpEeW5hbWljVW5pZm9ybUJ1
ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4gT3B0aW9uYWw8V0hMU0w6
OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVybiB7IFdITFNMOjpTYW1w
bGVyQmluZGluZyB7IH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVk
VGV4dHVyZSkgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CkBA
IC01OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0Rl
dGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMCiAgICAgfSwgWyZdKEdQVUJp
bmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVyKSAtPiBPcHRpb25hbDxX
SExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6
OlN0b3JhZ2VCdWZmZXJCaW5kaW5nIHsgc3RvcmFnZUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUg
fSB9OwogICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNTdG9yYWdlQnVmZmVy
KSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
KSwgaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7CiB9CiAKQEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9u
YWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYg
bGF5b3V0KQogewogICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OwogICAgIGlmIChsYXlvdXQuYmlu
ZEdyb3VwTGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheW91dC5iaW5kR3JvdXBMYXlv
dXRzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYgYmluZEdyb3VwTGF5b3V0
ID0gbGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtpXTsKICAgICAgICAgV0hMU0w6OkJpbmRHcm91
cCBiaW5kR3JvdXA7CkBAIC03OCw5ICs3OCw5IEBAIE9wdGlvbmFsPFdITFNMOjpMYXlvdXQ+IGNv
bnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91dCkKICAgICAgICAgICAg
IGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRpbmdUeXBlKGJpbmRpbmdEZXRhaWxz
LmludGVybmFsQmluZGluZ0RldGFpbHMpKQogICAgICAgICAgICAgICAgIGJpbmRpbmcuYmluZGlu
ZyA9ICpiaW5kaW5nVHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5kaW5nLmJpbmRpbmcgPiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgYmluZGluZy5leHRlcm5hbE5hbWUgPSBiaW5kaW5nRGV0YWlscy5leHRlcm5h
bEJpbmRpbmcuYmluZGluZzsKICAgICAgICAgICAgIGJpbmRpbmcuaW50ZXJuYWxOYW1lID0gYmlu
ZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lOwogICAgICAgICAgICAgYmluZEdyb3VwLmJpbmRpbmdz
LmFwcGVuZChXVEZNb3ZlKGJpbmRpbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KaW5kZXggMTU5OWYwYmEyMjlkNGFmYmRhYmE3ZGZjYmJiYmY4Mzk5OTUzYWUxNy4u
YTg0N2NlMDNmNTJmOWEyNTZkOTEyMDMyZWUzZGIyYmM4ODRmOTkxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KQEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0YXRpYyBP
cHRpb25hbDxXSExTTDo6VGV4dHVyZUZvcm1hdD4gY29udmVydFRleHR1cmVGb3JtYXQoR1BVVGV4
dHVyZUZvcm1hdCBmb3JtCiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtOgog
ICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4VW5vcm07CiAgICAgY2Fz
ZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIHRoaXMu
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoYXQg
dG8gZG8gd2l0aCB0aGlzLgogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QmdyYTh1bm9ybVNS
R0I6CiAgICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybVNyZ2I7
CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoKICAgICAgICAgcmV0dXJu
IFdITFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDsKICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmluZGV4IDMzNjg1NTBiMGRiYmM2
OTY1NzQwMTZkODZiOGMzMTcwODMyYjc1MGMuLjY1NmYxNDhjZDczMTRkMTdkOWZiYzQzYmE3YzIy
ZjFiNmIwZGEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTUyLDcgKzUy
LDcgQEAgc3RhdGljIE9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiB0cnlHZXRTdXBwb3J0ZWRQaXhl
bEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm0KICAgICAgICAgcmV0dXJuIG10bEZvcm1hdDsK
ICAgICBkZWZhdWx0OiB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnRyeUNy
ZWF0ZSgpOiBVbnN1cHBvcnRlZCBNVExQaXhlbEZvcm1hdCEiKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggMDZlN2RmYjhjNDYyODRjMGI0OGQwMzkx
MDMxZDc1MTY3YjZjZmQyYi4uYWMyYzQyYmY2MGMyMzYzNDlhZjg2Y2MwYjBkMTZjNDQ4ODVkZTIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2Fn
ZUZsYWdzKE9wdGlvblNlCiAKICAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJl
VXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVk
IH0pICYmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7CiAgICAg
ICAgIExPRyhXZWJHUFUsICIlczogVGV4dHVyZSBjYW5ub3QgaGF2ZSBib3RoIFNUT1JBR0UgYW5k
IGEgcmVhZC1vbmx5IHVzYWdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgTVRM
VGV4dHVyZVVzYWdlIHJlc3VsdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9TaW5rR1N0cmVhbWVy
LmNwcAppbmRleCBiMjcwMDcyOTY1NTJkMGEzODYwYjA4ZmUzMGViZDhjYjU4MWRhMTIwLi5iMTU4
YzVmZTBmNDFiMDc4YjA4ZDk1OTcwMjBiZTVlZjZmMDg1ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HTFZp
ZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBPcHRpb25hbDxHUmVmUHRy
PEdzdENvbnRleHQ+PiByZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNoYXIqIGNvbnRleHRUeXBlKQog
ICAgIGF1dG8qIGdzdEdMQ29udGV4dCA9IHNoYXJlZERpc3BsYXkuZ3N0R0xDb250ZXh0KCk7CiAK
ICAgICBpZiAoIShnc3RHTERpc3BsYXkgJiYgZ3N0R0xDb250ZXh0KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
Z19zdHJjbXAwKGNvbnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpKSB7CiAg
ICAgICAgIEdzdENvbnRleHQqIGRpc3BsYXlDb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3KEdTVF9H
TF9ESVNQTEFZX0NPTlRFWFRfVFlQRSwgVFJVRSk7CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9u
YWw8R1JlZlB0cjxHc3RDb250ZXh0Pj4gcmVxdWVzdEdMQ29udGV4dChjb25zdCBjaGFyKiBjb250
ZXh0VHlwZSkKICAgICAgICAgcmV0dXJuIGFkb3B0R1JlZihhcHBDb250ZXh0KTsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBib29sIHNldEdMQ29udGV4dChHc3RFbGVtZW50KiBlbGVtZW50U2luaywgY29uc3Qg
Y2hhciogY29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IDUwNWY4
NDVjOWJiZmIyZWM5MGQ1YWRmMWVjNDAzNTRjZDUxZGFhNGMuLjU1NThiZmIzMmU5MTkwNWNmNmY5
OTI1MGZmNzNmY2NmMjBkZGI1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC0x
MzAsNyArMTMwLDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9t
Q2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogewogICAgIGlmICghZG9DYXBzSGF2ZVR5cGUoY2Fw
cywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJG
YWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0aGVzZSBhcmUgbm90IGEgdmlkZW8g
Y2FwcyIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CkBAIC0x
NDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9t
Q2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogICAgICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICAg
ICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgICAgIGlmICghZ3N0X3ZpZGVv
X2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHdpZHRo
ID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOwogICAgICAgICBoZWlnaHQgPSBHU1RfVklE
RU9fSU5GT19IRUlHSFQoJmluZm8pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIE9wdGlvbmFsPEZsb2F0
U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0Q2FwcyogY2FwcykKICAg
ICAgICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJREVPX0lORk9fUEFSX0Qo
JmluZm8pOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwoRmxvYXRTaXplKHdpZHRo
LCBoZWlnaHQgKiAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBpeGVsQXNwZWN0UmF0aW9EZW5vbWluYXRv
cikgLyBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb051bWVyYXRvcikpKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChGbG9hdFNpemUod2lkdGgsIGhlaWdodCAqIChz
dGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSAvIHN0YXRpY19j
YXN0PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yKSkpKTsKIH0KIAogYm9vbCBnZXRT
YW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiBzYW1wbGUsIEdzdFZpZGVvSW5mbyYgdmlkZW9JbmZv
KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgZW5zdXJlR1N0cmVhbWVySW5pdGlhbGl6ZWQoKQog
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUaGUgVVNFX1BMQVlCSU4zIHZhcmlhYmxlIHdhcyBk
ZXRlY3RlZCBpbiB0aGUgZW52aXJvbm1lbnQuIEV4cGVjdCBwbGF5YmFjayBpc3N1ZXMgb3IgcGxl
YXNlIHVuc2V0IGl0LiIpOwogCiAjaWYgRU5BQkxFKFZJREVPKSB8fCBFTkFCTEUoV0VCX0FVRElP
KQotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbWV0ZXJzID0gc19VSVByb2Nlc3NDb21tYW5k
TGluZU9wdGlvbnMudmFsdWVPcihleHRyYWN0R1N0cmVhbWVyT3B0aW9uc0Zyb21Db21tYW5kTGlu
ZSgpKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1ldGVycyA9IHNfVUlQcm9jZXNzQ29t
bWFuZExpbmVPcHRpb25zLnZhbHVlX29yKGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1h
bmRMaW5lKCkpOwogICAgICAgICBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5lT3B0aW9ucy5yZXNldCgp
OwogICAgICAgICBjaGFyKiogYXJndiA9IGdfbmV3MChjaGFyKiwgcGFyYW1ldGVycy5zaXplKCkg
KyAyKTsKICAgICAgICAgaW50IGFyZ2MgPSBwYXJhbWV0ZXJzLnNpemUoKSArIDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IGZkZGQ1YzNjMTRlMTYx
ZWVmOTVkMzQwYjBlNjA5YTUyMDRmNDg3M2IuLmEzYTM5MmY4MmM5YjYwMGJhYjYzZDUxODZlZGU3
ZTYwZGNlMDQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIu
Y3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omlu
aXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBhdjFEZWNvZGVyc0Rpc2FsbG93ZWRMaXN0IHsgImF2MWRlYyJf
cyB9OwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Ok5vLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFEZWNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkp
KSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVy
LCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmll
cjo6Tm8sIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MURlY29kZXJzRGlzYWxsb3dlZExp
c3QpKSkpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEq
IiksIGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2
MSIpLCBmYWxzZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4
LWF2MSIpLCBmYWxzZSk7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0
IHsgImF2MWVuYyJfcyB9OwotICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmll
cy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5j
b2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNz
aWZpZXI6OlllcywgbWFrZU9wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNhbGxvd2VkTGlz
dCkpKTsKKyAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0VuY29kZXIsICJ2aWRl
by94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMs
IHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QpKSk7
CiAgICAgaWYgKGF2MUVuY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9lbmNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKICAgICAgICAgbV9lbmNvZGVyQ29k
ZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7CkBAIC02NjMsNyArNjYzLDcgQEAg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXI6OmlzQ29uZmkKICAgICAgICAgYXV0byYgYXVkaW9Db25maWd1cmF0aW9u
ID0gbWVkaWFDb25maWd1cmF0aW9uLmF1ZGlvLnZhbHVlKCk7CiAgICAgICAgIEdTVF9ERUJVRygi
Q2hlY2tpbmcgJXMgc3VwcG9ydCBmb3IgYXVkaW8gY29uZmlndXJhdGlvbjogXCIlc1wiICVzIGNo
YW5uZWxzLCBiaXRyYXRlOiAlIiBHX0dVSU5UNjRfRk9STUFUICIgc2FtcGxlcmF0ZTogJXUiLCBj
b25maWdMb2dTdHJpbmcsCiAgICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5
cGUudXRmOCgpLmRhdGEoKSwgYXVkaW9Db25maWd1cmF0aW9uLmNoYW5uZWxzLnV0ZjgoKS5kYXRh
KCksCi0gICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uYml0cmF0ZS52YWx1ZU9yKDApLCBh
dWRpb0NvbmZpZ3VyYXRpb24uc2FtcGxlcmF0ZS52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgIGF1
ZGlvQ29uZmlndXJhdGlvbi5iaXRyYXRlLnZhbHVlX29yKDApLCBhdWRpb0NvbmZpZ3VyYXRpb24u
c2FtcGxlcmF0ZS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250
ZW50VHlwZShhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUpOwogICAgICAgICBpc1N1cHBv
cnRlZCA9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChjb25maWd1cmF0aW9uLCBjb250ZW50VHlw
ZS5jb250YWluZXJUeXBlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuaAppbmRleCAwMDdmZjg4MDc2OWQ2MTA3NmMyZWQ5ZDY3YjUxOTc2Mjg2NmViODc2
Li5mNzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0MzUyM2EzOTE5MDA0ZjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgR0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAKICAgICAgICAgZW51bSBj
bGFzcyBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsKLSAgICAgICAgUmVnaXN0
cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBj
YXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyOjpObywgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gV1RGOjpu
dWxsb3B0KSBjb25zdDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xh
c3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgICAgICBH
TGlzdCogYXVkaW9EZWNvZGVyRmFjdG9yaWVzIHsgbnVsbHB0ciB9OwogICAgICAgICBHTGlzdCog
YXVkaW9QYXJzZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmgKaW5kZXggOGY5NjlmZWVlMTJiZDBlMDU1Njk2Yzk0NGM4NmIwZGIwZmRmNzQ0
Zi4uOTFmOTJjYmJjY2M4YjI2ZWYwNzVjNzBjODU1MGY5YTg1YTg5ZTRlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdT
dHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAg
UmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmlu
ZyB1dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dCBmaW5hbCB7IHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JN
SU1FVHlwZShtX21pbWVUeXBlKTsgfQotICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVybiBzaXplKCk7IH0KICAg
ICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdCBmaW5hbCB7
IHJldHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1NjZmYmUyNTBhZWE0MzkyNzBiMWRkMDYz
Y2RhNjY5YWM3MmM3NjE2Li4yYmFlZjJhNGVkMjQ5MTc0Mzg2MzgyODJlMTdmYzJkOGEyOWJhMTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2Fk
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKICAgICBtX3BsYXllci0+cmVhZHlTdGF0ZUNoYW5n
ZWQoKTsKICAgICBtX2FyZVZvbHVtZUFuZE11dGVJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIG1f
aGFzVGFpbnRlZE9yaWdpbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2hhc1RhaW50ZWRPcmlnaW4g
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1faXNEZWxheWluZ0xvYWQpCiAgICAgICAgIGNv
bW1pdExvYWQoKTsKQEAgLTM1NTgsNyArMzU1OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVhbVZvbHVtZSogdm9sdW1l
CiBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICBpZiAoIXdl
YmtpdEdzdENoZWNrVmVyc2lvbigxLCAxOCwgMCkgJiYgIW1fZnBzU2luaykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVp
bnQ2NF90IHRvdGFsVmlkZW9GcmFtZXMgPSAwOwogICAgIHVpbnQ2NF90IGRyb3BwZWRWaWRlb0Zy
YW1lcyA9IDA7CkBAIC0zNTY3LDEwICszNTY3LDEwIEBAIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp2aWRlb1BsYXliYWNr
CiAgICAgICAgIGdfb2JqZWN0X2dldChtX3ZpZGVvU2luay5nZXQoKSwgInN0YXRzIiwgJnN0YXRz
Lm91dFB0cigpLCBudWxscHRyKTsKIAogICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X3Vp
bnQ2NChzdGF0cy5nZXQoKSwgInJlbmRlcmVkIiwgJnRvdGFsVmlkZW9GcmFtZXMpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF91aW50NjQoc3RhdHMuZ2V0KCks
ICJkcm9wcGVkIiwgJmRyb3BwZWRWaWRlb0ZyYW1lcykpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2Ug
aWYgKG1fZnBzU2luaykgewogICAgICAgICB1bnNpZ25lZCByZW5kZXJlZEZyYW1lcywgZHJvcHBl
ZEZyYW1lczsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fZnBzU2luay5nZXQoKSwgImZyYW1lcy1y
ZW5kZXJlZCIsICZyZW5kZXJlZEZyYW1lcywgImZyYW1lcy1kcm9wcGVkIiwgJmRyb3BwZWRGcmFt
ZXMsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IDMzM2QwZTkzYzdhYWJhODAxNjA4NDMzOTVhMjFkY2IzMjZlMjIyZDUuLjgwMzkx
ZDkxNjc2NTQ1NDRhZWY1NWY4YTI0YWRmZDE1NWE2MDE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTU1Niw3ICs1NTYsNyBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgdWludDY0X3QgbV9yZWFkUG9zaXRpb25BdExhc3REaWRMb2FkaW5nUHJv
Z3Jlc3MgeyAwIH07CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4+IG1fb3JpZ2luczsKLSAgICBPcHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBX
VEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX2hhc1RhaW50ZWRPcmlnaW4geyBz
dGQ6Om51bGxvcHQgfTsKIAogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9mcHNTaW5rIHsgbnVs
bHB0ciB9OwogICAgIHVpbnQ2NF90IG1fdG90YWxWaWRlb0ZyYW1lcyB7IDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVNhbXBs
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggNWQzZDAxYTI2OGY1MDYxODE5OTUzNzdhNjEy
NThkOWIwNjM5MjUzOC4uODU4MmNiNjYyNTA5YThkMmZiNTA3MjgxOTk1NzIzMjFlYjEzNWJjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxheWluZ0NvcHkoKSBjb25z
dCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQdHI8SlNDOjpVaW50OENs
YW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0QXVkaW9T
aW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDVjNjlmNzM3NjMzNGM2MDY2
NmMwNDU5MTU5MTBlZWM4NjMyNmExMGIuLjI2Yjg2YTVkMDc1ZmE1NjBjNWZhODlmNjQ1OTYyNjBh
ZTJiODExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3Bw
CkBAIC05MCwyMCArOTAsMjAgQEAgc3RydWN0IEF1ZGlvUGFja2V0SG9sZGVyIHsKICAgICB7CiAg
ICAgICAgIGZkID0gbWVtZmRfY3JlYXRlKCJ3cGUtYXVkaW8tYnVmZmVyIiwgTUZEX0NMT0VYRUMp
OwogICAgICAgICBpZiAoKmZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGZ0cnVu
Y2F0ZSgqZmQsIGJ1ZmZlci0+c2l6ZSgpKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNz
aXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5z
aXplKCkpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbikgIT0gYnVmZmVyLT5zaXpl
KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAobHNlZWsoKmZkLCAwLCBTRUVLX1NFVCkgPT0g
LTEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xl
YXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5oCmluZGV4IDg5NmFiZGJkNjU2NTU5MjBhMDgxZDg1MDU5MWFiZjNm
ZmRmMThmNTQuLmUzZDk3YTVjOWVkN2ZmYjE3NWExMzgwZWZlNWExYzIwZTEwODE0OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RN
UHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsb3NlR0NyeXB0SGFuZGxlKCk7CiAKICAgICAvLyBGSVhNRTogSXQgd291
bGQgYmUgbmljZSB0byB1c2Ugc29tZXRoaW5nIGluIFdlYkNvcmUgZm9yIGNyeXB0by4uLgotICAg
IE9wdGlvbmFsPGdjcnlfY2lwaGVyX2hkX3Q+IG1fZ0NyeXB0SGFuZGxlIHsgV1RGOjpudWxsb3B0
IH07CisgICAgT3B0aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5kbGUgeyBzdGQ6
Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCmluZGV4IDE3ZGMxNjM0NDM3YzY0YjkxNDgwMzIzMDg2ZjdkNTg3ZGE4ZjVhZWMu
Ljg1ZjdjZjRkNzg2NGFmODNkMjY1N2Y1YjcyNTY1MjFmNTY3NGM2ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAo
cmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoZXJl
IGFyZSBzaW1wbGVyIHdheXMgdG8gY29udmVydCBhIHNpbmdsZSBkaWdpdCB0byBhIG51bWJlciB0
aGFuIGNhbGxpbmcgcGFyc2VJbnRlZ2VyLgotICAgICAgICAgICAgbV90eXBlID0gbWFrZU9wdGlv
bmFsKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGU+KHBhcnNlSW50ZWdl
cjxpbnQ+KHJlcXVlc3RUeXBlKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICBtX3R5cGUgPSBz
dGQ6Om1ha2Vfb3B0aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlw
ZT4ocGFyc2VJbnRlZ2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlX29yKDApKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBtX3BheWxvYWQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShwYXlsb2FkLmNo
YXJhY3RlcnM4KCkgKyBvZmZzZXQsIHBheWxvYWQubGVuZ3RoKCkgLSBvZmZzZXQpOwpAQCAtNTY0
LDcgKzU2NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIXJl
c3BvbnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgbV9rZXlTdG9y
ZS5jb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNpbmcgSlNPTiByZXBvbnNlIG1lc3Nh
Z2VzIGlzIG11Y2ggY2xlYW5lciB0aGFuIHVzaW5nIHN0cmluZyBwcmVmaXhlcywgSSBiZWxpZXZl
IHRoZXJlCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBldmVuIGJlIG90aGVyIHBhcnRzIG9mIHRo
ZSBzcGVjIHdoZXJlIG5vdCBoYXZpbmcgc3RydWN0dXJlZCBkYXRhIHdpbGwgYmUgYmFkLgpAQCAt
NTc0LDE3ICs1NzQsMTcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgICAgICAg
ICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VN
ZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygiZ290IG1l
c3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAg
ICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJbnQ4UHRyKCksIG1lc3Nh
Z2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VU
eXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92
ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBHU1RfRVJST1IoIm1lc3NhZ2Ugb2Ygc2l6ZSAl
enUgaW5jb3JyZWN0bHkgZm9ybWF0dGVkIiwgcmVzcG9uc2VNZXNzYWdlID8gcmVzcG9uc2VNZXNz
YWdlLT5zaXplKCkgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBHU1RfRVJST1IoInVwZGF0ZSBsaWNlbnNlIHJlcG9ydGVkIGVycm9yIHN0YXRlIik7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICAgICAgY2FsbGJhY2soZmFs
c2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8IG1f
c2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBkYXRlKG1fc2Vzc2lvbi5n
ZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNlLT5zaXplKCkpKQpAQCAt
NTk5LDcgKzU5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Np
b24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAo
IXJlc3BvbnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmNv
bnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9y
KCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwg
U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBVc2luZyBKU09OIHJlcG9uc2UgbWVzc2FnZXMgaXMgbXVjaCBjbGVh
bmVyIHRoYW4gdXNpbmcgc3RyaW5nIHByZWZpeGVzLCBJIGJlbGlldmUgdGhlcmUKICAgICAgICAg
ICAgICAgICAvLyB3aWxsIGV2ZW4gYmUgb3RoZXIgcGFydHMgb2YgdGhlIHNwZWMgd2hlcmUgbm90
IGhhdmluZyBzdHJ1Y3R1cmVkIGRhdGEgd2lsbCBiZSBiYWQuCkBAIC02MDksMTEgKzYwOSwxMSBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgICAgICBSZWY8U2hhcmVk
QnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgp
KTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6
dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9NRU1EVU1QKCJt
ZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHN0
ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3IoTWVkaWFLZXlNZXNzYWdl
VHlwZTo6TGljZW5zZVJlcXVlc3QpLAorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgR1NUX0VSUk9SKCJtZXNzYWdlIG9mIHNpemUgJXp1IGluY29y
cmVjdGx5IGZvcm1hdHRlZCIsIHJlc3BvbnNlTWVzc2FnZSA/IHJlc3BvbnNlTWVzc2FnZS0+c2l6
ZSgpIDogMCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNzaW9uTG9h
ZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIFNl
c3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JRAogICAgICAgICAgICAgYXV0byByZXNwb25zZU1lc3NhZ2VTaXplID0gcmVzcG9uc2VN
ZXNzYWdlID8gcmVzcG9uc2VNZXNzYWdlLT5zaXplKCkgOiAwOwogICAgICAgICAgICAgU3RyaW5n
VmlldyByZXNwb25zZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocmVzcG9uc2VNZXNz
YWdlRGF0YSksIHJlc3BvbnNlTWVzc2FnZVNpemUpOwogICAgICAgICAgICAgR1NUX0VSUk9SKCJz
ZXNzaW9uICVzIG5vdCBsb2FkZWQsIHJlYXNvbiAlcyIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRh
KCksIHJlc3BvbnNlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQs
IHNlc3Npb25Mb2FkRmFpbHVyZUZyb21UaHVuZGVyKHJlc3BvbnNlKSk7CisgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNz
VmFsdWU6OkZhaWxlZCwgc2Vzc2lvbkxvYWRGYWlsdXJlRnJvbVRodW5kZXIocmVzcG9uc2UpKTsK
ICAgICAgICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlz
RW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fbG9hZChtX3Nlc3Npb24uZ2V0KCkpKQpAQCAtNjQ2
LDcgKzY0Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lv
bkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRp
YUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2Vl
ZGVkKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRp
YUtleVN0YXR1czo6UmVsZWFzZWQpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2Vl
ZGVkKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNl
TWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTY1NywxMiArNjU3LDEyIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgR1NUX1dBUk5JTkcoIm1lc3NhZ2Ugb2Ygc2l6ZSAlenUgaW5jb3JyZWN0bHkgZm9y
bWF0dGVkIGFzIHNlc3Npb24gJXMgcmVtb3ZhbCBhbnN3ZXIiLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Nlc3Npb25JRC51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMo
TWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxL
ZXlzQXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygiY291bGQgbm90IHJlbW92ZSBz
ZXNzaW9uICVzIiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBjYWxs
YmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6SW50ZXJuYWxFcnJvciks
IFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICAgICAgY2FsbGJh
Y2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBz
dGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwog
ICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nl
c3Npb25fcmVtb3ZlKG1fc2Vzc2lvbi5nZXQoKSkpCkBAIC02NzgsNyArNjc4LDcgQEAgT3B0aW9u
YWw8Q0RNSW5zdGFuY2VUaHVuZGVyJj4gQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2RtSW5z
dGFuY2VUaHVuZGVyKCkgY28KIHsKICAgICBhdXRvIGluc3RhbmNlID0gY2RtSW5zdGFuY2VQcm94
eSgpOwogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENETUlu
c3RhbmNlVGh1bmRlciY+KCppbnN0YW5jZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZC
dXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBs
ZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCBmNzMxN2JhMWMwOTU1NWQ3MWUxNTBi
N2IwYjQ4OTJhMzU5NTk0M2U1Li40MDFjMjdlYmI3OGFkNmE5M2MyOWI0ZWQzZTliMjAwMjYxZWUy
Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enou
Y3BwCkBAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFVTY3JpcHRDb2RlPiBjaGFy
YWN0ZXJTY3JpcHQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgVUVycm9yQ29kZSBlcnJvckNvZGUg
PSBVX1pFUk9fRVJST1I7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0gdXNjcmlwdF9nZXRTY3Jp
cHQoY2hhcmFjdGVyLCAmZXJyb3JDb2RlKTsKICAgICBpZiAoVV9GQUlMVVJFKGVycm9yQ29kZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtNDIyLDExICs0MjIsMTEgQEAgc3RhdGlj
IE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoLCB1bnMKICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKICAgICB1bnNpZ25lZCBj
bHVzdGVyTGVuZ3RoID0gMDsKICAgICBpZiAoIXRleHRJdGVyYXRvci5jb25zdW1lKGNoYXJhY3Rl
ciwgY2x1c3Rlckxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGN1cnJlbnRTY3JpcHQgPSBjaGFyYWN0
ZXJTY3JpcHQoY2hhcmFjdGVyKTsKICAgICBpZiAoIWN1cnJlbnRTY3JpcHQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1
bnNpZ25lZCBzdGFydEluZGV4ID0gb2Zmc2V0OwogICAgIGZvciAodGV4dEl0ZXJhdG9yLmFkdmFu
Y2UoY2x1c3Rlckxlbmd0aCk7IHRleHRJdGVyYXRvci5jb25zdW1lKGNoYXJhY3RlciwgY2x1c3Rl
ckxlbmd0aCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5ndGgpKSB7CkBAIC00MzUs
NyArNDM1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKIAogICAgICAgICBhdXRvIG5leHRT
Y3JpcHQgPSBjaGFyYWN0ZXJTY3JpcHQoY2hhcmFjdGVyKTsKICAgICAgICAgaWYgKCFuZXh0U2Ny
aXB0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gwqc1LjEgSGFuZGxpbmcgQ2hhcmFjdGVycyB3
aXRoIHRoZSBDb21tb24gU2NyaXB0IFByb3BlcnR5LgogICAgICAgICAvLyBQcm9ncmFtcyBtdXN0
IHJlc29sdmUgYW55IG9mIHRoZSBzcGVjaWFsIFNjcmlwdCBwcm9wZXJ0eSB2YWx1ZXMsIHN1Y2gg
YXMgQ29tbW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNP
Qm94LmNwcAppbmRleCBlMGE0NDY2YmJkZjU1MjBhYzMzOGI3MTRlNTBiNzNlNzgyNjI3NzUwLi5j
MDZlM2E2MzM4ODYwZjExZWIwZWJjZmE0MzhkMzUyMDI2NmY1ZDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcApAQCAtMzYsMTQgKzM2LDE0
IEBAIElTT0JveDo6UGVla1Jlc3VsdCBJU09Cb3g6OnBlZWtCb3goRGF0YVZpZXcmIHZpZXcsIHVu
c2lnbmVkIG9mZnNldCkKIHsKICAgICB1aW50NjRfdCBzaXplID0gMDsKICAgICBpZiAoIWNoZWNr
ZWRSZWFkPHVpbnQzMl90PihzaXplLCB2aWV3LCBvZmZzZXQsIEJpZ0VuZGlhbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBGb3VyQ0MgdHlwZSA9IHsgdWludDMyX3QgeyAwIH0gfTsKICAgICBpZiAoIWNoZWNrZWRSZWFk
PHVpbnQzMl90Pih0eXBlLCB2aWV3LCBvZmZzZXQsIEJpZ0VuZGlhbikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
c2l6ZSA9PSAxICYmICFjaGVja2VkUmVhZDx1aW50NjRfdD4oc2l6ZSwgdmlldywgb2Zmc2V0LCBC
aWdFbmRpYW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKCFzaXplKQogICAgICAgICBzaXplID0gdmlldy5i
eXRlTGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZp
Y0hlYWRlckJveC5jcHAKaW5kZXggMTU4ODljNGVhNTQ4NWZmMmM2YjUyMDRkMzJlODM4ZjJhYzM4
OTMxNi4uNzZjNTRkZjEwZWEyNDUzMTM4MjNhMzVjMjI1M2Q5NWFkMDJhNGM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKQEAgLTM4
LDcgKzM4LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRChKU0MKIHsKICAgICBhdXRvIHBlZWtSZXN1
bHQgPSBJU09Cb3g6OnBlZWtCb3godmlldywgb2Zmc2V0KTsKICAgICBpZiAoIXBlZWtSZXN1bHQg
fHwgcGVla1Jlc3VsdC52YWx1ZSgpLmZpcnN0ICE9IGJveFR5cGVOYW1lKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJ
U09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggcHNzaEJveDsKICAgICBwc3NoQm94
LnBhcnNlKHZpZXcsIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggN2ZhNjNjNzQzMTY1NjAzNWZlZjA5N2FmOWUxYjJk
NDllNWZhNTNmZS4uZTIwYjE5MTc2YzkzZjMyMjZhMjZmYjNmZTA3MDdiYjBkNzNkZDM0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09WVFRDdWUuaApA
QCAtNzUsMzcgKzc1LDM3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBw
cmVzZW50YXRpb25UaW1lOwogICAgICAgICBkZWNvZGVyID4+IHByZXNlbnRhdGlvblRpbWU7CiAg
ICAgICAgIGlmICghcHJlc2VudGF0aW9uVGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPE1lZGlhVGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAg
ICAgICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IHNvdXJjZUlEOwogICAgICAgICBkZWNvZGVyID4+IHNvdXJjZUlEOwogICAgICAgICBpZiAo
IXNvdXJjZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlm
aWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICghaWRlbnRp
ZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWxTdGFy
dFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGlm
ICghb3JpZ2luYWxTdGFydFRpbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IHNldHRpbmdzOwogICAgICAgICBkZWNvZGVyID4+IHNldHRpbmdzOwogICAgICAgICBpZiAo
IXNldHRpbmdzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdWVUZXh0
OwogICAgICAgICBkZWNvZGVyID4+IGN1ZVRleHQ7CiAgICAgICAgIGlmICghY3VlVGV4dCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcHJlc2Vu
dGF0aW9uVGltZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMubW0KaW5kZXggODlkODgyYzU3ZjQ3NjFlNTQ2ZGQ0MjQ3MDFmMzNkMmZiMjAzMWYz
NC4uMDdhYWU4YWZmY2IyNDg1MzA5OGRiNmEwMWQxNWNjOWQyOWMxNGM1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtNjksNyAr
NjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZy
b21OU0NvbG9yKE5TQ29sb3IgKmNvbG9yKQogICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0g
bmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KIAogICAgIGlmICghY29sb3IpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBDR0Zsb2F0IHJlZENvbXBvbmVudDsKICAgICBDR0Zsb2F0IGdyZWVuQ29tcG9uZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0xlZ2FjeURpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCA0ZTgxMmM3MDA1
OTMwYzRiNDdkNWQxNDNhMGJkZGU4NTgxMTExZmM3Li5iNjVkODE3NzM3OTM2NDY2YTBlOTBkNWEw
YzcxNzZhYzQxODkzYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgTGVnYWN5RGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIE9wdGlvbmFsPEZyYW1lc1BlclNl
Y29uZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNwbGF5Tm9taW5hbEZyYW1l
c1BlclNlY29uZCgpCiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGluaygpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAKICAgICByZXR1cm4gbm9taW5hbEZyYW1lc1BlclNlY29uZEZyb21EaXNwbGF5TGluayhtX2Rp
c3BsYXlMaW5rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4
IGJkZjBlYzI1N2Y4NzFhMjU1NzJjZWU3ZGZhODA4MTc5Njg0MTliZTguLjgyNTFiZWUyMjdiZjY5
M2ExMTFmYTFkMGI3NGYyODhhYjllOGY2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmNwcApAQCAtMjMxLDI1ICsyMzEsMjUgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmUK
IHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291bGQgaW52b2x2ZSB1bnBy
ZW11bHRpcGx5aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMo
KS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRz
Rm9yUGFpbnRpbmcoKTsKIH0KIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCkKIHsKICAgICBpZiAo
IW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsK
IH0KIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFk
Q29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1
cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHJlYWRDb21wb3NpdGVkUmVzdWx0cygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGNlNGMwZmI5YTIzN2Fj
OGM3MmEwYzIzZjc5ZjBjMDIzNTMwZDkwYWIuLjE4NDFjNTFlYzcyMTViOTk1M2M3ZmYyNDI0OTYy
YzJhNjc4M2IyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCkBAIC02Niw3ICs2Niw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
R0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1l
bnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24u
Y3BwCmluZGV4IDgwYjlmNWU2Nzc0NmZlNDVmODJmMDZmMWEwN2FlYjliZDU4YzNiNTEuLjM3ZTRm
ODMzNjM4NDQ4YTRjYTI3NGQwZDUxNzg1YzJkNzQ3YWEyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
bW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtOTE5LDEyICs5MTksMTIgQEAgT3B0
aW9uYWw8U3RyaW5nPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFwcGVkU3ltYm9sSW5TaGFk
ZXJTb3VyY2VNYXAoUGxhdGZvcm0KIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNl
TWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1i
b2xNYXAoc3ltYm9sVHlwZSk7CiAgICAgYXV0byBzeW1ib2xFbnRyeSA9IHN5bWJvbE1hcC5maW5k
KG5hbWUpOwogICAgIGlmIChzeW1ib2xFbnRyeSA9PSBzeW1ib2xNYXAuZW5kKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvJiBtYXBwZWROYW1lID0gc3ltYm9sRW50cnktPnZhbHVlLmdldCgpLm1hcHBlZE5hbWU7
CiAgICAgcmV0dXJuIFN0cmluZyhtYXBwZWROYW1lLmNfc3RyKCksIG1hcHBlZE5hbWUubGVuZ3Ro
KCkpOwpAQCAtOTc3LDE0ICs5NzcsMTQgQEAgT3B0aW9uYWw8U3RyaW5nPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xJblNoYWRlclNvdXJjZU1hcChQbGF0Zm8KIHsKICAg
ICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAo
cmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYg
c3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3ltYm9sVHlwZSk7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBzeW1ib2xFbnRyeSA6IHN5bWJvbE1hcCkgewogICAgICAgICBpZiAobmFt
ZSA9PSBzeW1ib2xFbnRyeS52YWx1ZS5nZXQoKS5tYXBwZWROYW1lLmNfc3RyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwg
QU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA3ZmYxMTMyYjBjNzVi
YmE2OWUxOGMyOTFkNWFjNzBmZWYwODM3ZDViLi4yMjU1NjhjNjQ1ZDZhMzQ1MjQ4ZWU5OWVjZTQ5
NDY5NTc0M2NiMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR0xp
bnQgcGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggODc2NDBmNmY0N2Q1MTM2
NGRkODYxNWQ4MDEzNmIzMGMxY2FjOThmNC4uYjAwYjFjOGViZTRmZWE5MTVkYjk3NWE4YThmZWZk
NzdlZDZiOWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTMyMyw3ICszMjMs
NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVw
bGljYShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpbwogVHJhbnNmb3JtYXRpb25NYXRyaXggVGV4dHVy
ZU1hcHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKICAgICByZXR1cm4gVHJhbnNmb3Jt
YXRpb25NYXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fbGF5ZXJUcmFuc2Zvcm1zLmNvbWJp
bmVkKQotICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJz
ZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAgICAgICAubXVsdGlwbHko
bV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzb2x2ZU92ZXJsYXBzKGNvbnN0IElu
dFJlY3QmIG5ld1JlZ2lvbiwgUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBSZWdpb24mIG5vbk92ZXJs
YXBSZWdpb24pCkBAIC03NDcsMTUgKzc0NywxNSBAQCBib29sIFRleHR1cmVNYXBwZXJMYXllcjo6
c3luY0FuaW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQogICAgIE5pY29zaWE6OkFuaW1hdGlv
bjo6QXBwbGljYXRpb25SZXN1bHQgYXBwbGljYXRpb25SZXN1bHRzOwogICAgIG1fYW5pbWF0aW9u
cy5hcHBseShhcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUpOwogCi0gICAgbV9sYXllclRyYW5zZm9y
bXMubG9jYWxUcmFuc2Zvcm0gPSBhcHBsaWNhdGlvblJlc3VsdHMudHJhbnNmb3JtLnZhbHVlT3Io
bV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudE9wYWNpdHkgPSBhcHBsaWNhdGlvblJl
c3VsdHMub3BhY2l0eS52YWx1ZU9yKG1fc3RhdGUub3BhY2l0eSk7Ci0gICAgbV9jdXJyZW50Rmls
dGVycyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlT3IobV9zdGF0ZS5maWx0ZXJz
KTsKKyAgICBtX2xheWVyVHJhbnNmb3Jtcy5sb2NhbFRyYW5zZm9ybSA9IGFwcGxpY2F0aW9uUmVz
dWx0cy50cmFuc2Zvcm0udmFsdWVfb3IobV9zdGF0ZS50cmFuc2Zvcm0pOworICAgIG1fY3VycmVu
dE9wYWNpdHkgPSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1ZV9vcihtX3N0YXRlLm9w
YWNpdHkpOworICAgIG1fY3VycmVudEZpbHRlcnMgPSBhcHBsaWNhdGlvblJlc3VsdHMuZmlsdGVy
cy52YWx1ZV9vcihtX3N0YXRlLmZpbHRlcnMpOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQogICAgIC8vIENhbGN1bGF0ZSBsb2NhbFRyYW5zZm9ybSA1MG1zIGluIHRoZSBmdXR1cmUu
CiAgICAgTmljb3NpYTo6QW5pbWF0aW9uOjpBcHBsaWNhdGlvblJlc3VsdCBmdXR1cmVBcHBsaWNh
dGlvblJlc3VsdHM7CiAgICAgbV9hbmltYXRpb25zLmFwcGx5S2VlcGluZ0ludGVybmFsU3RhdGUo
ZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLCB0aW1lICsgNTBfbXMpOwotICAgIG1fbGF5ZXJUcmFu
c2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtID0gZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLnRy
YW5zZm9ybS52YWx1ZU9yKG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJhbnNmb3JtKTsKKyAgICBt
X2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVMb2NhbFRyYW5zZm9ybSA9IGZ1dHVyZUFwcGxpY2F0aW9u
UmVzdWx0cy50cmFuc2Zvcm0udmFsdWVfb3IobV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zv
cm0pOwogI2VuZGlmCiAKICAgICByZXR1cm4gYXBwbGljYXRpb25SZXN1bHRzLmhhc1J1bm5pbmdB
bmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAppbmRleCBlODNiZjJkYjQ4NzE2Yjc3NWM1M2E3OWZhZDU5MTY2ZWY3
MzUwOWZlLi44NDQ1MjA2ZGZkZTc5ZWNhNzJhZTQ0OTU3YjdjODFlNTNjMGM5Nzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cApAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBDYWxjdWxhdGUgdGhl
IGludmVyc2Ugb2YgdGhlIGxheWVyIHRyYW5zZm9ybWF0aW9uLiBUaGUgaW52ZXJzZSB0cmFuc2Zv
cm0gd2lsbCBoYXZlIHRoZSBpbnZlcnNlIG9mIHRoZQogICAgICAgICAvLyBzY2FsZUZhY3RvciBh
cHBsaWVkLCBzbyB3ZSBuZWVkIHRvIHNjYWxlIGl0IGJhY2suCi0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGludmVyc2UgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsKIAogICAgICAgICAvLyBB
cHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm0gdG8gdGhlIHZpc2libGUgcmVjdGFuZ2xlLCBzbyB3
ZSBoYXZlIHRoZSB2aXNpYmxlIHJlY3RhbmdsZSBpbiBsYXllciBjb29yZGluYXRlcy4KICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QgPSBpbnZlcnNlLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQo
RmxvYXRRdWFkKG1fdmlzaWJsZVJlY3QpKTsKQEAgLTEwNjAsNyArMTA2MCw3IEBAIEludFJlY3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCkKICAgICAv
LyBSZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3QgKHN1cmZhY2UgY29vcmRp
bmF0ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3JkaW5hdGVzKS4KICAgICAv
LyBUaGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQgdGhlIHZpc2libGUgcmVj
dCBpcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAvLyBzbyBpdCBtaWdodCBz
cHJlYWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAoYW5kIHRoZW4gZXZlbiBt
b3JlIGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVyKS4KLSAgICBBU1NFUlQo
bV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5p
bnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgQVNTRVJUKG1f
Y2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBGbG9hdFJlY3Qg
cmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91bmRzT2ZQcm9qZWN0ZWRR
dWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVudHNSZWN0KCkpKTsKICAg
ICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0LCBzaXplKCkpOwogICAg
IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0
KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNmb3JtKGNoaWxkcmVuVHJh
bnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRyYW5zZm9ybXMocGFyZW50
KCkgPyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpwYXJlbnQoKSkubV9sYXll
clRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKIAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29t
YmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICBt
X2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52
ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgLy8gVGhlIGNv
bWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNraW5nU3RvcmVWaXNpYmxl
UmVjdC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zv
cm0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZp
bmVUcmFuc2Zvcm0uY3BwCmluZGV4IDNjMmNjMmFmYzlhYjg3ZjQxMjdiYmUzMmJhZjY0MTAwMDlh
YWQ4YTMuLmQzY2Y4MTAwMzllNjI2YjAzYTZlNTc3ZjM4MjEwYmQ0NGIwYjU1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJh
bnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNvbnN0CiB7CiAgICAgZG91
YmxlIGRldGVybWluYW50ID0gZGV0KG1fdHJhbnNmb3JtKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUoZGV0ZXJtaW5hbnQpIHx8IGRldGVybWluYW50ID09IDApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBZmZpbmVUcmFu
c2Zvcm0gcmVzdWx0OwogICAgIGlmIChpc0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IDM2MDdkOGFlNWE1MjZkMjA4YzU1NWM2MGYyMmM0
YmIxYTNlMzNkODQuLjdkNjQxMzBiOWI4OWY4MDI0ZDk1MTkxZDIyOWM5ODM1Y2NjOTUyNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgRmxvYXRQb2lu
dCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAg
ICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJl
dHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1
cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4g
bV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVh
ZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAt
MTg5LDcgKzE4OSw3IEBAIE9wdGlvbmFsPEZsb2F0UXVhZD4gVHJhbnNmb3JtU3RhdGU6Om1hcHBl
ZFNlY29uZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICAgICAgKndhc0NsYW1w
ZWQgPSBmYWxzZTsKIAogICAgIGlmICghbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEZsb2F0UXVhZCBxdWFkID0gKm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQ7CiAgICAgbWFw
UXVhZChxdWFkLCBtX2RpcmVjdGlvbiwgd2FzQ2xhbXBlZCk7CkBAIC0xOTksNyArMTk5LDcgQEAg
T3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vjb25kYXJ5UXVhZChi
b29sKiB3YXNDbGFtcGVkKSBjb25zdAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6c2V0TGFzdFBsYW5h
clNlY29uZGFyeVF1YWQoY29uc3QgT3B0aW9uYWw8RmxvYXRRdWFkPiYgcXVhZCkKIHsKICAgICBp
ZiAoIXF1YWQpIHsKLSAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIFRy
YW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9u
IGRpcmVjdGlvbiwgYm9vbAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcXVhZCA9IG1f
YWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0
cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSBtX2FjY3Vt
dWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3Rh
dGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBi
b29sKiB3YXNDbGFtcGVkKQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6
OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29s
KiB3CiAgICAgICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHQubWFwUXVh
ZCgqbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ugewot
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNl
KCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1f
bGFzdFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxh
bmFyUG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGIyZWMxNDU4NGI1NmMwNmM4Njg4YTc1ODZiOTQwYTI2
ODIxZDgwOWMuLjhhYTMzZThlNjE5ZWJkMDMwMmU1ODNhNTJjMzcxZDU1YzM2NzNhYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNTkxLDcgKzE1OTEsNyBA
QCBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJhbnNmb3JtYXRpb25NYXRyaXg6Omlu
dmVyc2UoKSBjb25zdAogICAgICAgICBkb3VibGUgZiA9IG00MigpOwogICAgICAgICBkb3VibGUg
ZGV0ZXJtaW5hbnQgPSBhICogZCAtIGIgKiBjOwogICAgICAgICBpZiAoZmFicyhkZXRlcm1pbmFu
dCkgPCBTTUFMTF9OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBkb3VibGUgaW52ZXJzZURl
dGVybWluYW50ID0gMSAvIGRldGVybWluYW50OwogICAgICAgICByZXR1cm4ge3sKQEAgLTE2MDgs
NyArMTYwOCw3IEBAIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVzZSBMVSBkZWNvbXBvc2l0
aW9uIHRvIGFwcGx5IHRoZSBpbnZlcnNlIGluc3RlYWQgb2YgY2FsY3VsYXRpbmcgdGhlIGludmVy
c2UgZXhwbGljaXRseS4KICAgICAvLyBDYWxjdWxhdGluZyB0aGUgaW52ZXJzZSBvZiBhIDR4NCBt
YXRyaXggdXNpbmcgY29mYWN0b3JzIGlzIG51bWVyaWNhbGx5IHVuc3RhYmxlIGFuZCB1bm5lY2Vz
c2FyeSB0byBhcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHBvaW50LgogICAg
IGlmICghV2ViQ29yZTo6aW52ZXJzZShtX21hdHJpeCwgaW52TWF0Lm1fbWF0cml4KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBpbnZNYXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ3Yjk3MTNlZWMzZGI4OWI1ZGU5
ZWQ1ZGZlMjVmMWRkYmJjNjZlYTcuLjgxNDVjNDdmZjkxZDg3YWQ2NDRkZDA0ZGEyN2JkNzUxZTEz
ZmFmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwCkBAIC03MTQsNyArNzE0LDcgQEAgT3B0aW9uYWw8QVNDSUlMaXRl
cmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcm
IGZhbWkKICAgICAgICAgICAgIHJldHVybiAiTWljcm9zb2Z0IFNhbnMgU2VyaWYiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDBmMzM0
MzA5MmY1OTFiNzYyZGJhMTM2MmU4MGNkYWQ0NzA2YTc0ZDEuLmI3Zjg0MmI2OTc2YmMwZWVhN2Mz
MDdjNzJkYmNjZjBhZDlkYTRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMTI1
LDcgKzEyNSw3IEBAIFJlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXJEaXJlY3QyRDo6cmVwZXRp
dGlvbkNvdW50KCkgY29uc3QKIAogT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckRpcmVj
dDJEOjpob3RTcG90KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEludFNpemUgSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZy
YW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5n
TGV2ZWwpIGNvbnN0CkBAIC0xNzQsNyArMTc0LDcgQEAgSW1hZ2VEZWNvZGVyOjpGcmFtZU1ldGFk
YXRhIEltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZU1ldGFkYXRhQXRJbmRleChzaXplX3QpIGMK
ICAgICBQcm9wVmFyaWFudEluaXQoJnZhbHVlKTsKICAgICBociA9IG1ldGFkYXRhLT5HZXRNZXRh
ZGF0YUJ5TmFtZShMIlN5c3RlbS5QaG90by5PcmllbnRhdGlvbiIsICZ2YWx1ZSk7CiAgICAgaWYg
KFNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiB7IEltYWdlT3JpZW50YXRpb24oc3RhdGlj
X2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24+KHZhbHVlLnVpVmFsKSksIFdURjo6
bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBJbWFnZU9yaWVudGF0aW9uKHN0YXRpY19jYXN0
PEltYWdlT3JpZW50YXRpb246Ok9yaWVudGF0aW9uPih2YWx1ZS51aVZhbCkpLCBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRl
eCA1N2MxMmZjMTM2NjljOGJhMDE5M2FkNmM1MTlmOWRjNTYxYmJkNDgzLi45OWQ2YTIxZTIxODcw
NmVkOTdlYjcxOWEyY2Q1MzYwYmEzYzA5NjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgK
QEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEg
Y3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CiAgICAgLy8gYW5kIHJl
dHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCi0gICAgT3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAg
ICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNzQzMzdm
MTUyNDRmYjIyZDBmZWZmNTFmMWVmZmYxZGM5NjljY2QxMi4uYzE4ZDI1Y2ZlNmIyMThmNGI2OGI4
MjYzOWE4MGZkNGI0MzFkYjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTEy
MCw3ICsxMjAsNyBAQCBPcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VEZWNvZGVyOjpob3RTcG90
KCkgY29uc3QKIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3RBdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPj0gbV9kaXJFbnRyaWVz
LnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX2RpckVu
dHJpZXNbaW5kZXhdLm1faG90U3BvdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCAy
MGNiN2I2ZjdiOTkwZjI1MjQ5NGFiMWQ5ZDNiYTc4NDhlZTlkMTdkLi4yZDlmOWEzM2IxNWEyMDUy
ODQzYmM2ZmYzNjI4NmMwZDIyN2U0OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC0x
MTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3VsZCBiZSBkZWNvZGVkLgogICAgIGJv
b2wgcHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsKIAotICAgIC8vIFJldHVybnMgdGhlIGhvdC1z
cG90IGZvciB8aW5kZXh8LCByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGVyZSBpcyBub25lLgor
ICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCByZXR1cm5zIHN0ZDo6bnVs
bG9wdCBpZiB0aGVyZSBpcyBub25lLgogICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90QXRJ
bmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgLy8gUmVhZHMgYW5kIHJldHVybnMgYSBkaXJlY3Rv
cnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDlhMmFkYWJmZTAwNGRhMzlmNWMx
YzgyYzMxOGJkYzgzNTRiYmM0NDkuLjU3NjE2ZTgxNTRjN2Y4YWUyMGNhMmIxYWIyMzQ0ZmNkNWE2
NDIyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hl
LmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGlsZUNhcGFjaXR5
Rm9yR3JpZChMZWdhY3lUaWxlR3JpZCopOwogICAgIENvbG9yIGNvbG9yRm9yR3JpZFRpbGVCb3Jk
ZXIoTGVnYWN5VGlsZUdyaWQqKSBjb25zdDsKICAgICBib29sIHNldE92ZXJyaWRlVmlzaWJsZVJl
Y3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGVhck92ZXJyaWRlVmlzaWJsZVJlY3Qo
KSB7IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdCA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQgY2xl
YXJPdmVycmlkZVZpc2libGVSZWN0KCkgeyBtX292ZXJyaWRlVmlzaWJsZVJlY3QgPSBzdGQ6Om51
bGxvcHQ7IH0KIAogICAgIHZvaWQgZG9QZW5kaW5nUmVwYWludHMoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA3OWY1YWJhYjhlMmE0ZDhl
NmQyNDY3MzVjYzhmNDZhY2Y5YjAzZDRiLi4yZGUxYmNiMDg3ZjUzY2RiZjYzZDAxZDNhYzI5MDRj
YmQ4ODk4Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNl
KCkKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBs
YWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUlu
ZGV4KQogewotICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1JbmRleC52YWx1ZU9yKDAp
OworICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1JbmRleC52YWx1ZV9vcigwKTsKIAog
ICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBlNzU1Y2QyMjZiNGFkZWRiMjM5
YWY0NThiNjBhNGUzMWUzMTNjNGRhLi5jMmM4OGYwZDJkNDBlZWIwZDkwZDNlNGUwMTRmZDQwMDcx
ZDZjMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KQEAgLTIwMiwxMCArMjAyLDEwIEBAIHN0YXRpYyBQYXN0ZWJvYXJk
SXRlbVByZXNlbnRhdGlvblN0eWxlIHBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGUoVUlQ
cmVmZXJyCiBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRmb3JtUGFzdGVib2FyZDo6
aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGludDY0X3QgY2hhbmdlQ291
bnQpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KFttX3Bhc3Rl
Ym9hcmQgbnVtYmVyT2ZJdGVtc10pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHRoaXMtPmNoYW5nZUNvdW50KCkg
IT0gY2hhbmdlQ291bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbzsKICAgICBO
U0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1ttX3Bhc3RlYm9hcmQgaXRlbVByb3ZpZGVy
c10gb2JqZWN0QXRJbmRleDppbmRleF07CkBAIC0yODMsNyArMjgzLDcgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxh
dGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCwgaW50NjRf
dCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNv
cmVNb3Rpb25NYW5hZ2VyLm1tCmluZGV4IGVkYzhiM2MzMmVhMDFmOTg2ZGNiOGM5ZTI2MzNhNDRm
ZDY3NDVkZTIuLjU3NjllOWE1M2Y0MmZjYTJkNGIxODEwNDQ2ZDJmODBmNTY0ZmY3NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1vdGlvbk1hbmFnZXIu
bW0KQEAgLTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKXNlbmRBY2NlbGVyb21ldGVyRGF0YTooQ01B
Y2NlbGVyb21ldGVyRGF0YSAqKW5ld0FjY2VsZXJhdGlvbgogCiAgICAgICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbW90aW9uQ2xpZW50cykgewogICAgICAgICAgICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgICAgICAgICBjbGllbnQtPm1vdGlvbkNoYW5nZWQoMCwgMCwgMCwgYWNjZWwueCAqIGtHcmF2
aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnogKiBrR3Jhdml0eSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY2xpZW50LT5t
b3Rpb25DaGFuZ2VkKDAsIDAsIDAsIGFjY2VsLnggKiBrR3Jhdml0eSwgYWNjZWwueSAqIGtHcmF2
aXR5LCBhY2NlbC56ICoga0dyYXZpdHksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQppbmRleCA2OWE4MzM2NzI0
YjczMDQzZmJkMzVmNjYzZjg5MmQ2YjkwNDVhYzRlLi41NDgyM2EyZDE1NWZkYmIyNTZjODQ2NmM1
YTEzYjg1MzZiNjE2ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTUzMywxMSArNTMzLDExIEBAIGludDY0X3Qg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURh
dGE+JiBpdGVtRGF0YSkKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBj
aGFuZ2VDb3VudCkKIHsKICAgICBpZiAoY2hhbmdlQ291bnQgIT0gW21fcGFzdGVib2FyZCBjaGFu
Z2VDb3VudF0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVtID0gaXRlbUF0SW5kZXgo
aW5kZXgpOwogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZv
OwogICAgIE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKnBsYXRmb3JtVHlwZXMgPSBbaXRlbSB0
eXBlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVy
Lm1tCmluZGV4IDFjNjY4NmY4MTNmOTQ4ZjVlMTE4N2I0ZDVmOGQyZTRjZTM0YzIxN2UuLmU1MmQ2
YmEyZDFlNWJhYTdjMGIzNDI4NWYwMDdkMDk2YjAyNjJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0zNDYsNyArMzQ2LDcgQEAg
T3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9t
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGUKICAgICAgICAgICAgICAgICByZXR1cm4gU2Nyb2xsUmln
aHQ7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIENoZWNrIFkgZmlyc3QgYmVjYXVz
ZSB2ZXJ0aWNhbCBzY3JvbGxpbmcgZG9taW5hdGVzLgpAQCAtMzYyLDcgKzM2Miw3IEBAIE9wdGlv
bmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGlyZWN0aW9uRnJvbUV2ZW50
KGNvbnN0IFBsYXRmb3JtV2hlCiAgICAgaWYgKHdoZWVsRGVsdGEud2lkdGgoKSA8IDApCiAgICAg
ICAgIHJldHVybiBTY3JvbGxSaWdodDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAzMzQ0YTM0OGI0YmQxNjVm
M2NmNWZlYjY3YTI0NDIwMWE4ZmI2ZGQ0Li5mN2RjMjIwMGM3ZDViNGIzYWJjYzEwMmQ3OWUyZWJj
YWNmOTlhZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC04
MDQsNyArODA0LDcgQEAgT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gVGhlbWVNYWM6
OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEYKICAgICAgICAgcmV0dXJuIGZv
bnREZXNjcmlwdGlvbjsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL0F1ZGlvQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMv
QXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXggNTc2NzljNDI5MmY5YTAwNTIxODVmNmY5MzllNWZl
NTgwOGJiYzhlZC4uZDA5NTU2NDQ0NDBmMmJhZDMyMjIyMDdhNTEyNjM0ZWM2MTQyNWVhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9D
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmls
aXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTU3LDI3ICs1NywyNyBAQCBPcHRpb25hbDxB
dWRpb0NvbmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICBkZWNvZGVyID4+
IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxT
dHJpbmc+IGNoYW5uZWxzOwogICAgIGRlY29kZXIgPj4gY2hhbm5lbHM7CiAgICAgaWYgKCFjaGFu
bmVscykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gYml0cmF0ZTsKICAg
ICBkZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8dWludDMyX3Q+PiBzYW1wbGVSYXRlOwogICAgIGRlY29kZXIgPj4gc2FtcGxl
UmF0ZTsKICAgICBpZiAoIXNhbXBsZVJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxi
b29sPj4gc3BhdGlhbFJlbmRlcmluZzsKICAgICBkZWNvZGVyID4+IHNwYXRpYWxSZW5kZXJpbmc7
CiAgICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAg
ICpjb250ZW50VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKaW5kZXggYzA4NjhlNGFi
OWQ0ZTA5OGFiYzUxOTA0N2YxZjU2YmFmMzU0NDhlMS4uYWE5MDlkMzhhMWI3YmNhZDgwMWMwMjUw
NjNhNWZhNTA2MDFiNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKQEAgLTUyLDEy
ICs1MiwxMiBAQCBPcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1lZGlhQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8VmlkZW9D
b25maWd1cmF0aW9uPj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRlbzsKICAgICBpZiAoIXZp
ZGVvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25maWd1cmF0aW9uPj4gYXVk
aW87CiAgICAgZGVjb2RlciA+PiBhdWRpbzsKICAgICBpZiAoIWF1ZGlvKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHt7CiAgICAgICAgICp2aWRlbywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYURlY29kaW5nQ29uZmln
dXJhdGlvbi5oCmluZGV4IGE0N2JkMjc4MThiMzM5YjAzODM0NGViMzllZjhjZjY3MzVjNjNhM2Qu
LjIyNjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2MDM1YWQ3MWVmNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtNTEsMTcgKzUxLDE3IEBAIE9wdGlv
bmFsPE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uPiBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKERlY29kZXImCiB7CiAgICAgYXV0byBtZWRpYUNvbmZpZ3VyYXRpb24gPSBNZWRp
YUNvbmZpZ3VyYXRpb246OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIW1lZGlhQ29uZmlndXJh
dGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBlPiB0eXBlOwogICAgIGRl
Y29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBj
YW5FeHBvc2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBvc2VWUDk7CiAgICAgaWYgKCFjYW5F
eHBvc2VWUDkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1lZGlhQ29uZmlndXJhdGlv
biwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVz
L01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IGJmNzg4
ZDNiZmMwODI3MTdjNGIwY2ViMTI2YmQwZjM1MGM0ZjNiZGQuLjE2NWRjNGYyZjg2NmI5NTIyMGM3
YmE2NjBjOGQ0NzFlMDE4N2NlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNvZGluZ0NvbmZp
Z3VyYXRpb24uaApAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPE1lZGlhRW5jb2RpbmdDb25m
aWd1cmF0aW9uPiBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImCiB7
CiAgICAgYXV0byBtZWRpYUNvbmZpZ3VyYXRpb24gPSBNZWRpYUNvbmZpZ3VyYXRpb246OmRlY29k
ZShkZWNvZGVyKTsKICAgICBpZiAoIW1lZGlhQ29uZmlndXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBp
ZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1lZGlhQ29uZmlndXJhdGlv
biwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVz
L1ZpZGVvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKaW5kZXggNDE3MDg2YTY1MDRkN2VhNGQ5ZjEz
ZGVmMDBkOGQzZDFlNDYwMjcyZS4uN2E5NWJmYjI4YTkxODJkOTNhYWFiODQ1YTM0OGM5YzljZTg1
NDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRp
ZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKQEAgLTY4LDQ3ICs2OCw0NyBAQCBP
cHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+IFZpZGVvQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICBk
ZWNvZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDx1aW50MzJfdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAo
IXdpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGhlaWdodDsKICAgICBkZWNvZGVy
ID4+IGhlaWdodDsKICAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBiaXRyYXRlOwogICAgIGRlY29kZXIgPj4gYml0cmF0ZTsKICAgICBpZiAoIWJpdHJhdGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBkZWNvZGVyID4+IGZyYW1l
cmF0ZTsKICAgICBpZiAoIWZyYW1lcmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJv
b2w+PiBhbHBoYUNoYW5uZWw7CiAgICAgZGVjb2RlciA+PiBhbHBoYUNoYW5uZWw7CiAgICAgaWYg
KCFhbHBoYUNoYW5uZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxDb2xvckdhbXV0Pj4g
Y29sb3JHYW11dDsKICAgICBkZWNvZGVyID4+IGNvbG9yR2FtdXQ7CiAgICAgaWYgKCFjb2xvckdh
bXV0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8SGRyTWV0YWRhdGFUeXBlPj4gaGRyTWV0
YWRhdGFUeXBlOwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGlmICghaGRy
TWV0YWRhdGFUeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8VHJhbnNmZXJGdW5jdGlv
bj4+IHRyYW5zZmVyRnVuY3Rpb247CiAgICAgZGVjb2RlciA+PiB0cmFuc2ZlckZ1bmN0aW9uOwog
ICAgIGlmICghdHJhbnNmZXJGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAq
Y29udGVudFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnMuaAppbmRleCAz
MWViZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Li5kZTc0ODQzODhhY2UyMWFk
MTU0YmFiYzIxY2Q0YTVhNWUzNDVkNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVP
cHRpb25zLmgKQEAgLTU0LDIyICs1NCwyMiBAQCBpbmxpbmUgT3B0aW9uYWw8TWVkaWFSZWNvcmRl
clByaXZhdGVPcHRpb25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlvbnM6OmRlY29kZQogewog
ICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVUeXBlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVkPj4gYXVkaW9CaXRzUGVyU2Vjb25k
OwogICAgIGRlY29kZXIgPj4gYXVkaW9CaXRzUGVyU2Vjb25kOwogICAgIGlmICghYXVkaW9CaXRz
UGVyU2Vjb25kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiB2aWRlb0Jp
dHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYg
KCF2aWRlb0JpdHNQZXJTZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25l
ZD4+IGJpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiBiaXRzUGVyU2Vjb25kOwogICAgIGlm
ICghYml0c1BlclNlY29uZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNlY29uZCwgKnZpZGVvQml0
c1BlclNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggZDhiNDBiNjExOTEzYWU1YjI5NTI5MWU1
NWJkNWE0YmE5YWQ1Y2E0MC4uNTFhM2UxOGEyY2VkZDNjZDVkYTkzZjM0ZWJmMzcxMWUwMjBmOGI2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0K
QEAgLTUzMCw3ICs1MzAsNyBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IEF1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcgogCiB1bnNpZ25lZCBB
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmJpdFJhdGUoKSBjb25zdAogewotICAgIHJldHVy
biBtX291dHB1dEJpdFJhdGUudmFsdWVPcigwKTsKKyAgICByZXR1cm4gbV9vdXRwdXRCaXRSYXRl
LnZhbHVlX29yKDApOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCmluZGV4IDIwMDE4NWJiY2I3NjU0MDYzYmEwMWQxMTg4ZmU3OTRmNmE5
ZTM4NzcuLjk5YmJkZmM5NDA4NDA2YmU2NDY5ZTU3NzRlOGU3MTJhNWNlZTRhZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0xODQsNyAr
MTg0LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIKIAogdW5zaWduZWQgVmlkZW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjpiaXRSYXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9vdXRwdXRC
aXRSYXRlLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG1fb3V0cHV0Qml0UmF0ZS52YWx1ZV9vcigw
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Q2FwdHVyZURldmljZS5oCmluZGV4IDlhODhkMTZlYmJmOTNlYzVlZWQ2OTNjMTcxYTI1ODdmOTJl
MTc5ZWYuLjViODFhNDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2YTM4ZmRhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlLmgK
QEAgLTk1LDM3ICs5NSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcGVy
c2lzdGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRJZDsKICAgICAgICAgaWYg
KCFwZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGxh
YmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBncm91cElkOwogICAgICAgICBkZWNv
ZGVyID4+IGdyb3VwSWQ7CiAgICAgICAgIGlmICghZ3JvdXBJZCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsK
ICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gaXNEZWZhdWx0OwogICAgICAgICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICAgICAgaWYg
KCFpc0RlZmF1bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlm
ICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTW9ja0Rldmlj
ZTsKICAgICAgICAgZGVjb2RlciA+PiBpc01vY2tEZXZpY2U7CiAgICAgICAgIGlmICghaXNNb2Nr
RGV2aWNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gZGV2
aWNlID0ge3sgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUo
KmxhYmVsKSwgV1RGTW92ZSgqZ3JvdXBJZCkgfX07CiAgICAgICAgIGRldmljZS0+c2V0RW5hYmxl
ZCgqZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggMWE3NTNhMTBiZTc5ZTdj
NDM5ODViMmU1ODBkNTQ5MWIxOGU1NzRmMS4uMzZkMjYxZmM5NDU5ZmVmZjI1OTEzMTQzY2VlYTVk
OTAzN2UxZWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtNDAsNiArNDAsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6fkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCit2b2lkIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjb21w
dXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQor
eworICAgIGNhbGxiYWNrKCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQ2Fw
dHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKK30KKwogQ2FwdHVyZURldmljZSBDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURl
dmljZUZyb21QZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJlRGV2aWNlSUQpCiB7CiAg
ICAgZm9yIChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlcygpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFn
ZXIuaAppbmRleCBjN2FmZmI2OTA4NzlhYzAwNTU3YTU4MzA0MGEzN2E4MTZhYzgyMzg4Li5kMWM1
Yzg3NzAxODdkMDg2Yjg3NGMwZDI5ZDc5MDVjMjkxMzZmNjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2Vy
LmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9F
WFBPUlQgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgY29uc3Qg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
YWxsYmFjaykgeyBjYWxsYmFjaygpOyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxDYXB0dXJlRGV2
aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJlRGV2aWNlOjpEZXZpY2VU
eXBlLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IGNhcHR1cmVEZXZpY2VX
aXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmljZU1hbmFnZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3Ry
YWludHMuaAppbmRleCBlOTkwYTMyMWE3ZGQ3ZTY3ZThlNTdlZGFiN2QwM2ZjOGM1ZGU2MjIzLi5l
YjI5NDlmNGU3YzVlZDliNTdkNTNjZTlmY2Q3NzUzYTdjNGJkZjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBA
IC03MDAsMzQgKzcwMCwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBNZWRpYVRyYWNrQ29u
c3RyYWludFNldE1hcCBtYXA7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fd2lk
dGgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1faGVpZ2h0
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX3NhbXBsZVJh
dGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fc2FtcGxl
U2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2Fz
cGVjdFJhdGlvKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5t
X2ZyYW1lUmF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAu
bV92b2x1bWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAu
bV9lY2hvQ2FuY2VsbGF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1hcC5tX2Rpc3BsYXlTdXJmYWNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1hcC5tX2xvZ2ljYWxTdXJmYWNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobWFwLm1fZmFjaW5nTW9kZSkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9kZXZpY2VJZCkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9ncm91cElkKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IHJldHVybiBtYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAppbmRleCA1MGM4M2IwYjMyMzI4MTc4
OTRmMWQyOTRiMTlhOWMxOTQ2N2ZkYmNiLi41OWQ1ZmEzZjM3MmU0YWU3MTg1NTA4NDI1N2FkNDY0
Y2JiMzFkMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaApAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgTWVk
aWFTdHJlYW1SZXF1ZXN0IHsKICAgICAgICAgaWYgKGRlY29kZXIuZGVjb2RlKHJlcXVlc3QudHlw
ZSkgJiYgZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5hdWRpb0NvbnN0cmFpbnRzKSAmJiBkZWNvZGVy
LmRlY29kZShyZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMpICYmIGRlY29kZXIuZGVjb2RlKHJlcXVl
c3QuaXNVc2VyR2VzdHVyZVByaXZpbGVkZ2VkKSkKICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0
OwogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaAppbmRleCBlMzQw
MmViYWFmMzM2NDI0N2E0MzFhYWVlYmVjOTQ1OGVkNWQwZjc5Li5mNjNkOGY2NjBkZTQyNWU5NTll
NzMyNjcwZDc5NzM1OWU1NjYxOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaApAQCAt
NTEsMTIgKzUxLDEyIEBAIGlubGluZSBPcHRpb25hbDxSVENEYXRhQ2hhbm5lbElkZW50aWZpZXI+
IFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kCiAgICAgT3B0aW9uYWw8UHJv
Y2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vz
c0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyPiBjaGFubmVsSWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGNoYW5uZWxJZGVudGlmaWVyOwogICAgIGlmICghY2hhbm5lbElkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciB7ICpwcm9jZXNzSWRl
bnRpZmllciwgKmNoYW5uZWxJZGVudGlmaWVyIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZUluY29taW5n
VmlkZW9Tb3VyY2UuY3BwCmluZGV4IGU2NGY2MGUwNDgwMzllMDc1ZjU5YWUyYmYzOTJkMmFlNThi
OGZhNTEuLjI0YjhiMTdiNjg5N2I4MzkxOTg1M2U1Y2JmOGE1YzMzNWFmYWUwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGNvbnN0
IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
OjpzZXR0aW5ncygpCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZTo6c2V0dGluZ3NE
aWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0
dGluZ3MpCiB7CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpG
bGFnOjpIZWlnaHQgfSkpCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCBjOWJjMDc3MTM4YTgw
YjU4YmNjNDk3ZTBjNDFhMTVlZWNiNzYxNGYxLi45NDE2ZGQ4M2YzNDg2ZDc3MTY5ZjE3ZDY2YjI2
MmFmYWJmMGFjOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtMTA1OCw3ICsxMDU4LDcg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRlKGludCByYXRlKQogCiBP
cHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6ZGlzY3JldGVTYW1wbGVS
YXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUo
aW50IHNpemUpCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldFNhbXBsZVNpemUoaW50IHNpemUpCiAKIE9wdGlvbmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVjaG9DYW5jZWxsYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1By
ZXNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQu
aAppbmRleCA1MzZjZGUxOGM5MzY3OTM2MDYyNzg2OWMzZjNkYzZmZDFiOTgwODc3Li5hODQ5YzRj
NmVhYWEyOWVkYzA0ZjAxNDk3MWU4ZTNkOWQwZDkxOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKQEAgLTU2LDEyICs1NiwxMiBA
QCBPcHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsKICAgICBkZWNvZGVyID4+
IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBt
YXhpbXVtOwogICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gRnJhbWVSYXRlUmFuZ2UgeyAqbWluaW11bSwgKm1heGltdW0gfTsKIH0KQEAg
LTg3LDEyICs4NywxMiBAQCBPcHRpb25hbDxWaWRlb1ByZXNldERhdGE+IFZpZGVvUHJlc2V0RGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsK
ICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
VmVjdG9yPEZyYW1lUmF0ZVJhbmdlPj4gZnJhbWVSYXRlUmFuZ2VzOwogICAgIGRlY29kZXIgPj4g
ZnJhbWVSYXRlUmFuZ2VzOwogICAgIGlmICghZnJhbWVSYXRlUmFuZ2VzKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIFZpZGVvUHJlc2V0RGF0YSB7ICpzaXplLCAqZnJhbWVSYXRlUmFuZ2VzIH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApp
bmRleCBjMDZmZWIxNWNmZjVlNzYxZTVmZGViYjM1MjIwYjJkYThhZmUyNDYyLi4wODViYjA3OTAz
NDE4Mzc1OWMyOTRiYzVjNTYwZmViZDk3MDE0ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAg
T3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0cmVhbWVyQ2FwdHVyZURldmljZU1h
bmFnZXI6OmdzdHJlYW1lckRldmljZVcKICAgICAgICAgaWYgKGRldmljZS5wZXJzaXN0ZW50SWQo
KSA9PSBkZXZpY2VJRCkKICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CiAgICAgfQotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3Qg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlcjo6Y2Fw
dHVyZURldmljZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlci5tbQppbmRleCA4YWZkNGU0NWRjNTIwZDZhZmRhODk1NGM2MDMxZDBlN2Y5NmNl
M2QwLi5hZTZhZDhmYTUwYTM4YmIzYjA3ZjlhNmRiNDIzYTkxMmRiZDIxN2NkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQpAQCAtMTI5
LDcgKzEyOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IEFWQXVkaW9TZXNzaW9uQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAgICAgICAgIGlmIChkZXZpY2Uu
cGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAgICAgICByZXR1cm4gZGV2aWNlOwog
ICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIE9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Np
b25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9TZXNzaW9uRGV2aWNlV2l0aFVJRChjb25zdCBT
dHJpbmcmIGRldmljZUlEKQpAQCAtMTQxLDcgKzE0MSw3IEBAIE9wdGlvbmFsPEFWQXVkaW9TZXNz
aW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVk
aW9TCiAgICAgICAgIGlmIChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAg
ICAgICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQVZBdWRpb1Nlc3Npb25DYXB0dXJl
RGV2aWNlTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRl
b0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMmI0OWIyZTkzZmU1MWViZDY4YTJiZWRmYTU3ZGRhNmZh
YzJkZjFiMi4uNGI3ODhhZTVhYTg3YjcyOWU1YmRjZjljZjcxMzgxMmM2NzcwYTMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0
dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQVZWaWRl
b0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQogCiB2b2lkIEFWVmlkZW9DYXB0
dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJj
ZVNldHRpbmdzOjpGbGFnPikKIHsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dGluZ3Mo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4IDJkZjZmNDdjYWNmZTYx
NjY1MTJiZTFhNTU5ZjhlMGM4MjU4MWVlOTEuLjYzOTYwYzQ1N2I1YTkzMmY5ZDc5ZTNiYTFjZWNl
YTdkMTExNWQ1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKQEAgLTEy
Nyw3ICsxMjcsNyBAQCBPcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSQogICAgIFN0cmluZyBwZXJzaXN0
ZW50SUQ7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGlmICghZ2V0RGV2aWNlSW5mbyhkZXZpY2VJ
RCwgdHlwZSwgcGVyc2lzdGVudElELCBsYWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ29yZUF1ZGlv
Q2FwdHVyZURldmljZShkZXZpY2VJRCwgcGVyc2lzdGVudElELCB0eXBlLCBsYWJlbCwgZ3JvdXBJ
RC5pc051bGwoKSA/IHBlcnNpc3RlbnRJRCA6IGdyb3VwSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9D
b3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggM2I4NGVkM2RjOWZiOGVlYTA2
ZTkzNmFhMjYyMmM5NTZmNGU0ZmE0ZS4uZWViNzAwOGY1YjA5NzdlYjYzMjAxN2EzZmJjMDgxNjdh
Y2Y5Y2UwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0Nh
cHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlCiAgICAgICAgIGlm
IChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAgICAgICByZXR1cm4g
ZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGRldmljZUhhc1N0cmVhbXMoQXVkaW9PYmplY3RJ
RCBkZXZpY2VJRCwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MmIGFkZHJlc3MpCkBA
IC0yNTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVyZURldmljZT4gQ29yZUF1
ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0RldmljZVcKICAgICAgICAgaWYgKGRl
dmljZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCAmJiBkZXZpY2UuZW5hYmxlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGRldmljZTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaGFzRGV2
aWNlKGNvbnN0IFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYgZGV2aWNlcywgdWludDMy
X3QgZGV2aWNlSUQsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2aWNlVHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9D
YXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA3N2Q4MmMxYTQwOGE1ZDdiYzRhYTI5
ZTYxMGM5ZjgwZjdiNTBmZTY3Li40MmUxODQ1NjYyZjZiMjAxZTVjYWI2OWI5ZDA4ZjExMTM3Yjcx
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCkBAIC04MTEsNyArODEx
LDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRp
b25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHQKICAgICBpZiAoc2hvdWxkUmVjb25maWd1cmUp
CiAgICAgICAgIHVuaXQoKS5yZWNvbmZpZ3VyZSgpOwogCi0gICAgbV9jdXJyZW50U2V0dGluZ3Mg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW50ZXJydXB0ZWQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlD
YXB0dXJlTWFuYWdlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKaW5kZXggZjdlY2RjOGFlMDBh
YzA5NjZlMTdhNzJkOTFjMTI3MmQxNjRlYjRmOC4uZTIwOWMxNjk5YmFjMzkyMjczZTNiYWQ3MGVm
NjNhZGZmYWMxODEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2Eu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0
dXJlTWFuYWdlckNvY29hOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpCiAgICAgcmV0dXJu
IFNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0
ZW50SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGV2aWNlSUQpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
fQogCkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IERpc3BsYXlDYXB0
dXJlTWFuYWdlckNvY29hOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpCiAgICAgcmV0dXJu
IFdpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0
ZW50SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZGV2aWNlSUQpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
fQogCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNh
cHR1cmVNYW5hZ2VyQ29jb2E6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudEkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRp
c3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCA4ZWRhYjA3ZmNhMThlNDk5ODNmMWQwOWY4MWJlZTZj
YjM4Y2JjMjkxLi44ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4ZjA1NTI4NjMxMmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTU1LDE5ICs1NSwxOSBAQCBz
dGF0aWMgT3B0aW9uYWw8Q0dEaXJlY3REaXNwbGF5SUQ+IHVwZGF0ZURpc3BsYXlJRChDR0RpcmVj
dERpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgYXV0byBlcnIgPSBDR0dldEFjdGl2ZURpc3BsYXlM
aXN0KDAsIG51bGxwdHIsICZkaXNwbGF5Q291bnQpOwogICAgIGlmIChlcnIpIHsKICAgICAgICAg
UkVMRUFTRV9MT0coV2ViUlRDLCAiQ0dHZXRBY3RpdmVEaXNwbGF5TGlzdCgpIHJldHVybmVkIGVy
cm9yICVkIHdoZW4gdHJ5aW5nIHRvIGdldCBkaXNwbGF5IGNvdW50Iiwgc3RhdGljX2Nhc3Q8aW50
PihlcnIpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXlDb3VudCkgewogICAgICAgICBS
RUxFQVNFX0xPRyhXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgYSBk
aXNwbGF5IGNvdW50IG9mIDAiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBWZWN0b3I8Q0dEaXJlY3REaXNw
bGF5SUQ+IGFjdGl2ZURpc3BsYXlzKGRpc3BsYXlDb3VudCk7CiAgICAgZXJyID0gQ0dHZXRBY3Rp
dmVEaXNwbGF5TGlzdChkaXNwbGF5Q291bnQsIGFjdGl2ZURpc3BsYXlzLmRhdGEoKSwgJmRpc3Bs
YXlDb3VudCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJD
R0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgZXJyb3IgJWQgd2hlbiB0cnlpbmcgdG8g
Z2V0IHRoZSBhY3RpdmUgZGlzcGxheSBsaXN0Iiwgc3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBhdXRvIGRpc3BsYXlNYXNrID0gQ0dEaXNwbGF5SURUb09wZW5HTERpc3Bs
YXlNYXNrKGRpc3BsYXlJRCk7CkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxDR0Rp
cmVjdERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJ
RCkKICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRXhwZWN0ZWQ8VW5pcXVl
UmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwgU3RyaW5nPiBTY3JlZW5E
aXNwbGF5Q2FwdHVyZXJNYWM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRldmljZUlEKQpAQCAtMjY4
LDEyICsyNjgsMTIgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gU2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3QKICAgICBhdXRvIGRpc3BsYXlJ
RCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwogICAgIGlmICghZGlzcGxheUlE
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNjcmVlbkRpc3BsYXlDYXB0dXJlck1h
Yzo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGRpc3BsYXkgSUQgZG9lcyBu
b3QgY29udmVydCB0byAzMi1iaXQgaW50ZWdlciIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gYWN0
dWFsRGlzcGxheUlEID0gdXBkYXRlRGlzcGxheUlEKCpkaXNwbGF5SUQpOwogICAgIGlmICghYWN0
dWFsRGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBkZXZpY2UgPSBDYXB0dXJlRGV2aWNlKFN0cmlu
Zzo6bnVtYmVyKCphY3R1YWxEaXNwbGF5SUQpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlOjpT
Y3JlZW4sICJTY3JlZW5DYXB0dXJlRGV2aWNlIl9zKTsKICAgICBkZXZpY2Uuc2V0RW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCmluZGV4IDdlMDEzMDNm
OWFiOTg3N2Y1NGQ4MGJmYTY5OGI2ODE2MWMzZTI2YmUuLjQxOGY2OTM3ZGU2YzEwN2FkNWQ4YWJk
MDRmZGRhNDkwNWIwMTBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5t
bQpAQCAtMTM5LDcgKzEzOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IFdpbmRvd0Rpc3Bs
YXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0CiAgICAgYXV0byB3
aW5kb3dJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaWRTdHJpbmcpOwogICAgIGlmICghd2lu
ZG93SUQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiV2luZG93RGlzcGxheUNhcHR1
cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogd2luZG93IElEIGRv
ZXMgbm90IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXIiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBTdHJp
bmcgd2luZG93VGl0bGU7CkBAIC0xNTIsNyArMTUyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gV2luZG93RGlzcGxheUNhcHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNp
c3QKIAogICAgIH0pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIldpbmRvd0Rpc3Bs
YXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IHdpbmRv
dyBJRCBpcyBub3QgdmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGRldmljZSA9IENhcHR1
cmVEZXZpY2UoU3RyaW5nOjpudW1iZXIoKndpbmRvd0lEKSwgQ2FwdHVyZURldmljZTo6RGV2aWNl
VHlwZTo6V2luZG93LCB3aW5kb3dUaXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5kZXggMWY1MTlkNGJiZjgw
ZWNhZjZhYjM1MGE2MDViYzIxNTFhNWUxZTM4My4uY2JkNmFkMmYzZWVkMTFhYmU4MDIxMjIzOGRj
ZTNlMDBmMDhiNDNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYQogewogICAgIG1faGFzRXJyb3IgPSB0cnVlOwogICAgIG1fZXJyb3JNZXNz
YWdlID0gZXJyb3JNZXNzYWdlOwotICAgIG1fbGFzdFBvc2l0aW9uID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fbGFzdFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGFzeW5jVXBkYXRlQ29udHJv
bGxlcigpOwogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1v
Y2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKCkKIAogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnJlc2V0KCkKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xh
c3RQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhckVycm9yKCk7CiAgICAgbV9wZXJt
aXNzaW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeU1v
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5TW9jay5jcHAKaW5kZXggZTQyOTQyODhhMjNiZDdkYWUwMzA0MjlmMWU4OTEy
OTg4NGVhNTI3Ni4uY2YxOGZlNzQ2YmEzYWVkM2ZlMGRiNWEzYTAwODg5OWQ0ZTZhMTc1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
c3RhdGljIGJvb2wgY2FuRGVjb2RlTWVkaWEoY29uc3QgTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
Ly8gQ2FuIG9ubHkgc3VwcG9ydCBzcGF0aWFsIHJlbmRlcmluZyBvZiB0cmFja3Mgd2l0aCBtdWx0
aWNoYW5uZWwgYXVkaW86Ci0gICAgICAgIGlmIChhdWRpb0NvbmZpZy0+c3BhdGlhbFJlbmRlcmlu
Zy52YWx1ZU9yKGZhbHNlKSAmJiBhdWRpb0NvbmZpZy0+Y2hhbm5lbHMudG9Eb3VibGUoKSA8PSAy
KQorICAgICAgICBpZiAoYXVkaW9Db25maWctPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVfb3IoZmFs
c2UpICYmIGF1ZGlvQ29uZmlnLT5jaGFubmVscy50b0RvdWJsZSgpIDw9IDIpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrTWVkaWFEZXZpY2UuaAppbmRleCBlOWE1ODZhMjdjZGIxYmYxY2Q2OWM0MTBkNDc2MDZk
ZGJiOWRiM2QxLi41ZmE3OWE5YWI1MzhiZDY0OWRhNGUyZDUzMjE4ZDg5ODU0NzIxY2U2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RydWN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7CiAgICAgICAgIE9w
dGlvbmFsPGludDMyX3Q+IGRlZmF1bHRTYW1wbGVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRl
ZmF1bHRTYW1wbGVSYXRlOwogICAgICAgICBpZiAoIWRlZmF1bHRTYW1wbGVSYXRlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBNb2NrTWljcm9waG9uZVByb3BlcnRpZXMgeyAqZGVmYXVsdFNh
bXBsZVJhdGUgfTsKICAgICB9CiAKQEAgLTY4LDEyICs2OCwxMiBAQCBzdHJ1Y3QgTW9ja1NwZWFr
ZXJQcm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJh
dGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGlmICgh
ZGVmYXVsdFNhbXBsZVJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IHJlbGF0ZWRNaWNyb3Bob25lSWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcmVsYXRlZE1pY3JvcGhv
bmVJZDsKICAgICAgICAgaWYgKCFyZWxhdGVkTWljcm9waG9uZUlkKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmV0dXJuIE1vY2tTcGVha2VyUHJvcGVydGllcyB7IFdURk1vdmUoKnJlbGF0ZWRNaWNy
b3Bob25lSWQpLCAqZGVmYXVsdFNhbXBsZVJhdGUgfTsKICAgICB9CkBAIC05OSwyMiArOTksMjIg
QEAgc3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBkZWZhdWx0RnJhbWVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRGcmFtZVJhdGU7
CiAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9GYWNpbmdNb2RlPiBmYWNp
bmdNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGZhY2luZ01vZGU7CiAgICAgICAgIGlmICghZmFj
aW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxWaWRlb1ByZXNl
dERhdGE+PiBwcmVzZXRzOwogICAgICAgICBkZWNvZGVyID4+IHByZXNldHM7CiAgICAgICAgIGlm
ICghcHJlc2V0cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29s
b3I7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwogICAgICAgICBpZiAoIWZpbGxDb2xv
cikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBNb2NrQ2FtZXJhUHJvcGVydGllcyB7ICpk
ZWZhdWx0RnJhbWVSYXRlLCAqZmFjaW5nTW9kZSwgV1RGTW92ZSgqcHJlc2V0cyksICpmaWxsQ29s
b3IgfTsKICAgICB9CkBAIC0xMzksMTcgKzEzOSwxNyBAQCBzdHJ1Y3QgTW9ja0Rpc3BsYXlQcm9w
ZXJ0aWVzIHsKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRldmljZVR5
cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9y
OwogICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PEludFNpemU+IGRlZmF1bHRTaXplOwogICAgICAgICBkZWNvZGVyID4+IGRlZmF1bHRTaXplOwog
ICAgICAgICBpZiAoIWRlZmF1bHRTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIE1v
Y2tEaXNwbGF5UHJvcGVydGllcyB7ICp0eXBlLCAqZmlsbENvbG9yLCAqZGVmYXVsdFNpemUgfTsK
ICAgICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAg
ICAgIE9wdGlvbmFsPFByb3BlcnRpZXM+IHByb3BlcnRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4g
cHJvcGVydGllczsKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiBNb2NrTWVkaWFEZXZpY2UgeyBXVEZNb3ZlKHBlcnNpc3RlbnRJZCksIFdURk1vdmUo
bGFiZWwpLCBXVEZNb3ZlKCpwcm9wZXJ0aWVzKSB9OwogICAgIH0KIApAQCAtMjMyLDE3ICsyMzIs
MTcgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
cGVyc2lzdGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRJZDsKICAgICAgICAg
aWYgKCFwZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDhfdD4gaW5kZXg7CiAgICAgICAgIGRl
Y29kZXIgPj4gaW5kZXg7CiAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBzd2l0Y2ggKCppbmRleCkgewogICAgICAgICBjYXNlIDE6CkBAIC0yNTQsNyArMjU0LDcgQEAg
c3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgIHJl
dHVybiBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZWNvZGVy
LCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkpOwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgU3RyaW5nIHBlcnNpc3RlbnRJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXgg
YzQ5ZTZmYmYxNjc4OWQ5NjhjYzA1NDczNGI3MTU1MGFlZmY5ZTVmOS4uMDVjODhlYTE3OWZjNDE3
MDdlMjZhNDU2NjQwZmIzNWIyZGM4NzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKIAogdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4pCiB7Ci0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCmluZGV4IDE0ZjRjNmViMThlYWJiOTI4MGRiMDEzM2Q0ZDQwMWNmYTk5ZTFjMWYuLjIy
ZTRhMTc3Yzc1MDRhZTc3NmUyOGNhNjQ1ZmRmNTQzZDFlZGE5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8TW9ja01lZGlhRGV2aWNl
PiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0RldmljZVdpdGhQZXJzaXN0ZW4K
ICAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFwLmZp
bmQoaWQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
aXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMzU1LDcgKzM1NSw3IEBAIE9wdGlvbmFsPENhcHR1cmVE
ZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0dXJlRGV2aWNlV2l0aFBl
cnNpc3RlCiAgICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1hcC5maW5kKGlkKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVuZCgpIHx8IGl0ZXJhdG9y
LT52YWx1ZS50eXBlKCkgIT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0b0NhcHR1cmVEZXZpY2Uo
aXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNDZlYTE1MWVkYjcwYTk1
MDk5YTJlMTU5MDYxZTY1MmVhMDg3MTU0NS4uMjA3M2E2YzNjMmZkYTg2NDJlNWZjZjU1YTUzYjc5
ZDYyMmZkYTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBJbnRTaXpl
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXB0dXJlU2l6ZSgpIGNvbnN0CiAKIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewotICAgIG1fY3VycmVudFNl
dHRpbmdzID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxs
b3B0OwogICAgIGlmIChzZXR0aW5ncy5jb250YWluc0FueSh7IFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6
SGVpZ2h0IH0pKSB7CiAgICAgICAgIG1fYmFzZUZvbnRTaXplID0gY2FwdHVyZVNpemUoKS5oZWln
aHQoKSAqIC4wODsKICAgICAgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1fYmFzZUZvbnRTaXplICog
Mi41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAz
YmViY2QwMjUzMDlhZDRmMmZmMmU0NjBmZDk4ZGM5NjZlNjc4NmU4Li44NjY3N2FlZmY2ODJkODNh
YTIzOGUwODlmYjg2YzFmMDk3YzY4ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQoKQogCiBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3M+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjp2aWRlb1BsYXliYWNrUXVh
bGl0eU1ldHJpY3MoKQogewotICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVk
aWFTb3VyY2VQcml2YXRlLT52aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSA6IFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJp
dmF0ZS0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMmFkYTgwNzRh
ODUyMGU5NDJlNGMzMGE2NTRlYzRjOTZhYTdmMzhkYS4uODhjZjFiZjJhYWE4NjkzNGNjYTgyYzRm
Y2FhNDkxZDc1YTA2Yzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAgICAgU2FtcGxlRmxhZ3Mg
ZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBs
ZSgpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdl
PiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAg
ICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZs
b2F0U2l6ZSgpOyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFUaW1lJiBvZmZzZXQpIG92
ZXJyaWRlIHsgbV9ib3gub2Zmc2V0VGltZXN0YW1wc0J5KG9mZnNldCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcAppbmRleCAxMmY4Mjc0ZWRiZmVhMDcxMWQ1MmJjYTkxMTVlOTkyZWRlMjZlMDdiLi43NDY3
MzcwYTY0MjdmMTZhYzVjMjM2MDcxMDYwYThiNDI5OTM5YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRs
eSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2
ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaW5jb25zaXN0ZW50
IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3RzIHNob3VsZCBiZSBpbnZh
bGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAgIGlmIChtX3JlcGxhY2Vt
ZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
I2VuZGlmCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmlu
ZGV4IDZiMDEyOTBmYzRiZmIwOGZkOGE5YTg5ZTBjNzMyNzg4NmRkYjI0ZmUuLmRhOTg2ZjE2ODdj
ZDg5OTRlOTdhYmRlYWIzM2IyMTM3MzFiMTNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAgLTEwNSw3ICsxMDUsNyBA
QCBTZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBXYWxsVGltZSByZXNwb25zZVRpbQogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0
ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UuCiAgICAg
YXV0byBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0byBhcHBhcmVudEFnZSA9
IGRhdGVWYWx1ZSA/IHN0ZDo6bWF4KDBfdXMsIHJlc3BvbnNlVGltZSAtICpkYXRlVmFsdWUpIDog
MF91czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVPcigwX3VzKTsK
KyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVfb3IoMF91cyk7CiAgICAg
YXV0byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVl
KTsKICAgICBhdXRvIHJlc2lkZW50VGltZSA9IFdhbGxUaW1lOjpub3coKSAtIHJlc3BvbnNlVGlt
ZTsKICAgICByZXR1cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lkZW50VGltZTsKQEAgLTEy
Myw3ICsxMjMsNyBAQCBTZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1p
bHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgICAgIHJldHVybiAqbWF4
QWdlOwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGF1dG8gZWZmZWN0
aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUpOworICAgIGF1dG8gZWZmZWN0aXZl
RGF0ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsKICAgICBpZiAoYXV0byBleHBpcmVz
ID0gcmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1cm4gKmV4cGlyZXMgLSBlZmZlY3Rp
dmVEYXRlOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJz
ZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAog
c3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1
ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3Qp
LCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1
ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CisgICAgcmV0dXJuIHNlc3Npb24uY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBT
YW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1
ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8sIFNob3VsZEFz
a0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0
OwogfQogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBA
IC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3QgUmUKICAgICBpZiAoIWNvb2tp
ZUphcikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjb29raWVKYXItPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
U2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNs
dWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vKS5maXJzdDsK
KyAgICByZXR1cm4gY29va2llSmFyLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1
ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3Qp
LCByZXF1ZXN0LnVybCgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgcmVxdWVzdC51cmwo
KS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1
ZGVTZWN1cmVDb29raWVzOjpObykuZmlyc3Q7CiB9CiAKIHN0YXRpYyBTdHJpbmcgaGVhZGVyVmFs
dWVGb3JWYXJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJOYW1lLCBGdW5jdGlvbjxTdHJpbmcoKT4mJiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDNkZjEyMDZk
MmMzYmJhNTU2NzdiZTQxM2NhMmNkZGExODkwNTE3NWYuLjYzYmVlMWRkNjFlYWZmZWVjYjBjNmYz
Nzc2NTk5ZTZhMDJjMzg0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAgLTYx
LDI5ICs2MSwyOSBAQCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZQogewogICAgIFVSTCBmaXJzdFBh
cnR5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2FtZVNpdGVJ
bmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFVSTCB1cmw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAg
ICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdl
SUQ7CiAgICAgaWYgKCFwYWdlSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluY2x1ZGVTZWN1cmVD
b29raWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7
IFdURk1vdmUoZmlyc3RQYXJ0eSksIFdURk1vdmUoc2FtZVNpdGVJbmZvKSwgV1RGTW92ZSh1cmwp
LCAqZnJhbWVJRCwgKnBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5kZXgg
NjE5OWRiOWI3NTYyMjc5MjExZDkyYTdlNzljMzk4NmMxYWJlZDJmNy4uNzFlZTZhZWVmMmMzMzEw
ZTFmNTg2YTgwZTE5NWMxMTVjNmVkNTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE3NSwxMiArMTc1LDEyIEBAIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gZGVjb2RlRXNjYXBlZChjb25zdCBEZWNvZGVUYXNrJiB0YXNr
KQogc3RhdGljIE9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlU3luY2hyb25vdXNseShEZWNvZGVUYXNr
JiB0YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCF0YXNrLnByb2Nlc3MoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICh0YXNrLmlzQmFzZTY0KSB7CiAgICAgICAgIGF1dG8gZGVjb2RlZERhdGEgPSBkZWNvZGVC
YXNlNjQodGFzaywgbW9kZSk7CiAgICAgICAgIGlmICghZGVjb2RlZERhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IFdURk1vdmUoKmRlY29kZWREYXRhKTsKICAgICB9
IGVsc2UKICAgICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IGRlY29kZUVzY2FwZWQodGFzayk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDcxMzBh
MGM4MWVmNzIwZjQ5MGU4NzJjNTgwZDk3YTdiZmUzNTYxOTAuLjBmZTk0ZjQyOWQ3Y2M0MDRjM2U1
ZDIxYTgzYjI1MmQ2YjE4YzZiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdWludDY0X3QgRm9ybURhdGFFbGVt
ZW50OjpsZW5ndGhJbkJ5dGVzKGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90KGNvbnN0IFVSTCYpPiYg
YmwKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRh
JiBmaWxlRGF0YSkgewogICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZpbGVMZW5ndGggIT0gQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KGZpbGVEYXRhLmZpbGVMZW5ndGgpOwotICAgICAgICAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OmZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1lKS52YWx1ZU9yKDApOworICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1lKS52YWx1
ZV9vcigwKTsKICAgICAgICAgfSwgWyZibG9iU2l6ZV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIGJsb2JTaXpl
KGJsb2JEYXRhLnVybCk7CiAgICAgICAgIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCBGb3JtRGF0YUVs
ZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogCiB2b2lkIEZvcm1E
YXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIG1f
bGVuZ3RoSW5CeXRlcyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFtX2VsZW1lbnRzLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAo
YXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+PihtX2VsZW1lbnRzLmxhc3Qo
KS5kYXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwpAQCAtMTg4LDIwICsxODgsMjAgQEAgdm9pZCBGb3Jt
RGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBG
b3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewotICAgIG1fZWxl
bWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0
b0VuZE9mRmlsZSwgV1RGOjpudWxsb3B0KSk7Ci0gICAgbV9sZW5ndGhJbkJ5dGVzID0gV1RGOjpu
dWxsb3B0OworICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwg
MCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgc3RkOjpudWxsb3B0KSk7CisgICAgbV9sZW5n
dGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxl
UmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcg
bGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewog
ICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgc3RhcnQsIGxl
bmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Ci0gICAgbV9sZW5ndGhJbkJ5dGVzID0g
V1RGOjpudWxsb3B0OworICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpCiB7CiAgICAgbV9l
bGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsKLSAgICBtX2xlbmd0aElu
Qnl0ZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0
OwogfQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG5vcm1hbGl6ZVN0cmluZ0RhdGEoVGV4dEVu
Y29kaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA1NTM5YWYyZWI2ZDBmNWFjNzgwYzhiYjdj
OWIxMjMzZjdjY2M5YzExLi45ZGFjNjBlN2FkM2JlNDk1MGY2OTc5YmM2ZjQzYjZjNzYwOWY0Y2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC02NCw3
ICs2NCw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICBPcHRpb25hbDxEYXRh
PiBkYXRhOwogICAgICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KFdURk1vdmUoKmRhdGEpKTsK
ICAgICB9CiAKQEAgLTk3LDIyICs5NywyMiBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAg
ICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CiAgICAgICAgICAgICBkZWNvZGVy
ID4+IGZpbGVuYW1lOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE9wdGlvbmFsPGludDY0X3Q+IGZpbGVTdGFy
dDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZVN0YXJ0OwogICAgICAgICAgICAgaWYgKCFm
aWxlU3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBP
cHRpb25hbDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwogICAgICAgICAgICAgZGVjb2RlciA+PiBmaWxl
TGVuZ3RoOwogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBl
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgZGVjb2RlciA+PiBleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJu
IHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZW5hbWUpLApAQCAtMTQwLDcgKzE0MCw3
IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgT3B0aW9uYWw8VVJMPiB1
cmw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAgICAgIGlmICghdXJsKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnVybCkg
fX07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
SGVhZGVyTWFwLmgKaW5kZXggYTBlYzIwNjlkOTI5Nzc3YzRiMjFlMmE0ZTMwODBlYTk0ZGFkZDM0
MS4uZjQ0MjE3MDhlMTU2NDllYjEwMGVkOThhMmM0NzRlNDc4YWZhNDRjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKQEAgLTExOSw3ICsx
MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXQgPT0gbV90YWJsZS51bmNvbW1vbkhl
YWRlcnMoKS5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBtX2tleVZhbHVlLmtleSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBtX2tleVZhbHVlLmtleUFz
SFRUUEhlYWRlck5hbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2tleVZhbHVlLmtl
eUFzSFRUUEhlYWRlck5hbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2tleVZhbHVl
LnZhbHVlID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
QEAgLTIyOSwxMCArMjI5LDEwIEBAIGF1dG8gSFRUUEhlYWRlck1hcDo6Q29tbW9uSGVhZGVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8Q29tbW9uSGVhCiB7CiAgICAgSFRU
UEhlYWRlck5hbWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFN0cmluZyB2YWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBDb21tb25IZWFkZXIgeyBuYW1lLCBXVEZNb3ZlKHZhbHVlKSB9OwogfQpAQCAtMjQ5
LDEwICsyNDksMTAgQEAgYXV0byBIVFRQSGVhZGVyTWFwOjpVbmNvbW1vbkhlYWRlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFVuY29tbW8KIHsKICAgICBTdHJpbmcgbmFt
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0cmluZyB2YWx1ZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBVbmNvbW1v
bkhlYWRlciB7IFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDM3NmQ1ZTc2
M2NmMjdhN2M2ZGVkNzQ4MzU5ZDdhMzQ4YjNmZDM2YzMuLmEzMmFkNzc0ODZmNjA3ZmVkN2Q4NjVl
MGNkNDliYzYzOTNiYTA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+
IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBkb3VibGUgZGF0ZUlu
TWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJh
Y3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhdGVJ
bk1pbGxpc2Vjb25kc1NpbmNlRXBvY2gpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIFRoaXMgYXNzdW1lcyBzeXN0ZW1f
Y2xvY2sgZXBvY2ggZXF1YWxzIFVuaXggZXBvY2ggd2hpY2ggaXMgdHJ1ZSBmb3IgYWxsIGltcGxl
bWVudGF0aW9ucyBidXQgdW5zcGVjaWZpZWQuCiAgICAgLy8gRklYTUU6IFRoZSBwYXJzaW5nIGZ1
bmN0aW9uIHNob3VsZCBiZSBzd2l0Y2hlZCB0byBXYWxsVGltZSB0b28uCiAgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoIC8gMTAw
MC4wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmgKaW5kZXggYzFiMjIzNzhmZTU1NmVkMjI3NWY2ZDNkNWJhNjM4
Nzk3YTgyZjQyYy4uNjE5NTljY2QxNDAzYTg3MjY2YTYwNmE4Zjc3YzA4NTJkNTY1ZmE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9hZEluZm9y
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9h
ZEluZm9ybWF0aW9uLmgKQEAgLTY0LDEzICs2NCwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBpbmxpbmUgT3B0aW9uYWw8TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IE5ldHdvcmtU
cgogICAgIE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIGluZm9ybWF0aW9uOwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpbmZvcm1hdGlvbi50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGluZm9ybWF0aW9uLnJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaW5mb3JtYXRpb24ucmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5m
b3JtYXRpb24ubWV0cmljcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaW5mb3JtYXRpb247CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90
aWZpZXIuY3BwCmluZGV4IGFjY2Y5NDQxYzNjNjZhYjkyNTk5YjM1ODdiMWI5OTdiMWUwM2RkODcu
LjQzYjgxMWMzOTMyZGNhNGE2MWFhZDA3Y2E5ZDUxMzVhNWRlOGZjOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgp
CiB7CiAgICAgaWYgKCFtX2lzT25MaW5lKQogICAgICAgICB1cGRhdGVTdGF0ZSgpOwotICAgIHJl
dHVybiBtX2lzT25MaW5lLnZhbHVlT3IodHJ1ZSk7CisgICAgcmV0dXJuIG1faXNPbkxpbmUudmFs
dWVfb3IodHJ1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZExpc3RlbmVy
KFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApp
bmRleCBmOTQ0Yjc3OWI1ZmJhMmEwYjQxMzQyMDUyN2E4MmJhNjdiZTU3MTYzLi5kZjBmYWU5ZTBk
NDRiZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0x
ODAsOSArMTgwLDkgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEV4ZW1wdERv
bWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGMKIAogT3B0aW9uYWw8U2Vjb25k
cz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pKQorICAg
IGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzICYmIHNob3VsZEJsb2Nr
Q29va2llcyhyZXF1ZXN0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKSkKICAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbgogICAgIAogdm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNv
dXJjZXMoKQogewotICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQpAQCAt
NDE1LDcgKzQxNSw3IEBAIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luCiAgICAgYXV0byBpdCA9IHN0
b3JhZ2VBY2Nlc3NRdWlya3MoKS5maW5kKHRvcEZyYW1lRG9tYWluKTsKICAgICBpZiAoaXQgIT0g
c3RvcmFnZUFjY2Vzc1F1aXJrcygpLmVuZCgpKQogICAgICAgICByZXR1cm4gaXQtPnZhbHVlOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFk
ZGl0aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRG9tYWluLCBjb25z
dCBTdWJSZXNvdXJjZURvbWFpbiYgc3ViRG9tYWluKQpAQCAtNDI2LDcgKzQyNiw3IEBAIE9wdGlv
bmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZpbmRBZGRpdGlv
bmFsTG9naW5Eb21haW4oY29uCiAgICAgaWYgKHN1YkRvbWFpbi5zdHJpbmcoKSA9PSAic29ueWVu
dGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyAmJiB0b3BEb21haW4uc3RyaW5nKCkgPT0gInBsYXlz
dGF0aW9uLmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnkuY29tIl9zKTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRl
eCA3OGVjMDZiNzRlNDcyYmQ2MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYzLi45OWI1MzFmOTdhOWFi
MjI1ZWE5NDIwYzUxZmI3ZWYzOTI0MDkwYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTMwMSw3ICsz
MDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlUHJpdmF0ZVN0
b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvbmFsPEhUVFBDb29raWVB
Y2NlcHRQb2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCmluZGV4
IDk3NWRkM2UyZWU1YmNjNmQzZDQxZDAwNWEwMGU0YTU0N2QwZDhkMDkuLjg2MzE0YzQ2NDNlZDli
NzQyMWQzODZjZTVlNGI2MzI0OWIzZTI2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCkBAIC0zMzEsMTMgKzMzMSwx
MyBAQCBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLAogewogICAgIFBhcnNlZENvbnRlbnRUeXBlIHBh
cnNlZENvbnRlbnRUeXBlKG1vZGUgPT0gTW9kZTo6UmZjMjA0NSA/IGNvbnRlbnRUeXBlIDogc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBlKSk7CiAgICAgaWYgKCFw
YXJzZWRDb250ZW50VHlwZS5wYXJzZUNvbnRlbnRUeXBlKG1vZGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
IFdURk1vdmUocGFyc2VkQ29udGVudFR5cGUpIH07CiB9CiAKIGJvb2wgaXNWYWxpZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE1vZGUgbW9kZSkKIHsKLSAgICByZXR1cm4g
UGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShjb250ZW50VHlwZSwgbW9kZSkgIT0gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGNvbnRlbnRUeXBlLCBt
b2RlKSAhPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIFBhcnNlZENvbnRlbnRUeXBlOjpQYXJzZWRDb250
ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCmluZGV4IDFjNGQz
YzNmMjQ3NzQ2ZjRhZmYyMGFjYzljMjAyNjFlNjE5YWFiZDAuLmMxOTQyYWZkNzg0Zjk4MmJkMmRh
MWNlYzBiMmI2ZDFmNWQ0ZjgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKQEAgLTM0LDI5ICszNCwyOSBAQCBP
cHRpb25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFyc2UoU3Ry
aW5nVmlldyBpbnB1dCkKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NzIzMyNzZWN0aW9uLTIuMSBidXQgYXNzdW1pbmcgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBiZWdp
biBhbmQgYW4gZW5kIG9yIHBhcnNpbmcgd2lsbCBmYWlsCiAgICAgaWYgKCFpbnB1dC5zdGFydHNX
aXRoKFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGJlZ2luIHsgMCB9
OwogICAgIHNpemVfdCBlbmQgeyAwIH07CiAgICAgc2l6ZV90IHJhbmdlQmVnaW5Qb3NpdGlvbiA9
IDY7CiAgICAgc2l6ZV90IGRhc2hQb3NpdGlvbiA9IGlucHV0LmZpbmQoJy0nLCByYW5nZUJlZ2lu
UG9zaXRpb24pOwogICAgIGlmIChkYXNoUG9zaXRpb24gPT0gbm90Rm91bmQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGJlZ2luU3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKHJhbmdlQmVnaW5Qb3NpdGlvbiwgZGFz
aFBvc2l0aW9uIC0gcmFuZ2VCZWdpblBvc2l0aW9uKTsKICAgICBhdXRvIG9wdGlvbmFsQmVnaW4g
PSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGJlZ2luU3RyaW5nKTsKICAgICBpZiAoIW9wdGlvbmFs
QmVnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgYmVnaW4gPSAqb3B0aW9uYWxCZWdpbjsKIAogICAgIGF1dG8gZW5kU3Ry
aW5nID0gaW5wdXQuc3Vic3RyaW5nKGRhc2hQb3NpdGlvbiArIDEpOwogICAgIGF1dG8gb3B0aW9u
YWxFbmQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGVuZFN0cmluZyk7CiAgICAgaWYgKCFvcHRp
b25hbEVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBlbmQgPSAqb3B0aW9uYWxFbmQ7CiAKICAgICBpZiAoYmVnaW4gPiBl
bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgYmVnaW4sIGVuZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmlu
ZGV4IGUwNjk4Njg4NjU3YjFmYzFlMzU1MTdjN2I0ZTIyYzlmN2YxMGI4ZWEuLjIwNDc1ODMxYzU5
MTI1N2ZjMTI5YWYyZGNmODg0YjJiZGI1YTg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNjA5LDcg
KzYwOSw3IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNTeXN0ZW1QcmV2aWV3KCkgY29u
c3QKIAogU3lzdGVtUHJldmlld0luZm8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c3lzdGVtUHJldmll
d0luZm8oKSBjb25zdAogewotICAgIHJldHVybiBtX3N5c3RlbVByZXZpZXdJbmZvLnZhbHVlT3Io
U3lzdGVtUHJldmlld0luZm8geyB9KTsKKyAgICByZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mby52
YWx1ZV9vcihTeXN0ZW1QcmV2aWV3SW5mbyB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnNldFN5c3RlbVByZXZpZXdJbmZvKGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBpbmZv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmNwcAppbmRleCBhYTkxNjJlNDkwZmVmNjEwNjkxZGUyNDY5NDNkMzFkODJh
MWUyZTU0Li41MjY1MzIzMzAxNzBlMTZmMTkwMjhhZDkzOTNiYzRiMDY0NDg3ZWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAg
ICBBU1NFUlQocmVzcG9uc2UudGFpbnRpbmcoKSA9PSBUYWludGluZzo6Q29ycyk7CiAgICAgZmls
dGVyZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCi0gICAgYXV0byBhY2Nlc3NDb250
cm9sRXhwb3NlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlT3IoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKKyAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBv
c2VIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vz
c0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKICAgICBpZiAocGVyZm9ybUNoZWNrID09IFBlcmZvcm1F
eHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0
LmNvbnRhaW5zKCIqIikpCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZFJlc3BvbnNlOwogCkBAIC00
NTQsNyArNDU0LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVIVFRQSGVh
ZGVyRmllbGRzQWNjb3JkaW5nVG9UYWludGluZygpCiAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNl
OjpUYWludGluZzo6QmFzaWM6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFJlc291cmNlUmVz
cG9uc2U6OlRhaW50aW5nOjpDb3JzOiB7Ci0gICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQg
PSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiho
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJz
KSkudmFsdWVPcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7IH0p
OworICAgICAgICBhdXRvIGNvcnNTYWZlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxs
b3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlX29yKEhhc2hTZXQ8U3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfSk7CiAgICAgICAgIGlmIChjb3JzU2Fm
ZUhlYWRlclNldC5jb250YWlucygiKiIpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02OTcs
NyArNjk3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdhbGxUaW1lPiBwYXJzZURhdGVWYWx1ZUluSGVh
ZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEgKIHsKICAgICBTdHJpbmcgaGVhZGVy
VmFsdWUgPSBoZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKICAgICBpZiAoaGVhZGVyVmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIC8vIFRoaXMgaGFuZGxlcyBhbGwgZGF0ZSBmb3JtYXRzIHJlcXVpcmVk
IGJ5IFJGQzI2MTY6CiAgICAgLy8gU3VuLCAwNiBOb3YgMTk5NCAwODo0OTozNyBHTVQgIDsgUkZD
IDgyMiwgdXBkYXRlZCBieSBSRkMgMTEyMwogICAgIC8vIFN1bmRheSwgMDYtTm92LTk0IDA4OjQ5
OjM3IEdNVCA7IFJGQyA4NTAsIG9ic29sZXRlZCBieSBSRkMgMTAzNgpAQCAtNzUzLDcgKzc1Myw3
IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICAgICAgLy8gYW4gaW52YWxpZCB2YWx1ZSAocmRhcjovL3Byb2JsZW0vMjIz
NTI4MzgpLgogICAgICAgICBjb25zdCBXYWxsVGltZSBlcG9jaCA9IFdhbGxUaW1lOjpmcm9tUmF3
U2Vjb25kcygwKTsKICAgICAgICAgaWYgKG1fbGFzdE1vZGlmaWVkICYmIG1fbGFzdE1vZGlmaWVk
LnZhbHVlKCkgPT0gZXBvY2gpCi0gICAgICAgICAgICBtX2xhc3RNb2RpZmllZCA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIG1fbGFzdE1vZGlmaWVkID0gc3RkOjpudWxsb3B0OwogI2VuZGlm
CiAgICAgICAgIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA9IHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5jcHAKaW5kZXggMjIzYzA3MTgyNzA3YjEwMzZjZTI1ZTE0NWNkNjAzYTcx
MjRhNjNiNS4uNzBmZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRmYWM4NzgzYTVjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBzaXplX3QgcmVtb3ZlVGVy
bWluYXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
CiBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90PiwgYm9vbD4+IGNvb2tp
ZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJG
aWVsZFByb3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIGF1dG8gW2Nvb2tpZURhdGFTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZF0gPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZp
ZWxkUHJveHkpOwogICAgIGlmIChjb29raWVEYXRhU3RyaW5nLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2VydGlmaWNhdGVJbmZvQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUlu
Zm9DRk5ldC5jcHAKaW5kZXggYmEyZjdhMGMzM2Q0Y2IwNjdhOWY1YjVhMTg3MWUxYmMzZWZlNzE4
NS4uMjAxZmJkOTdlZmJmM2E5MGM0ODkwMTlhNzVkNjllMjg5ZWIxOWU1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUlu
Zm9DRk5ldC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1h
cnk+IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiB7CiAgICAgYXV0byBjaGFpbiA9
IGNlcnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ2VydGlmaWNh
dGVTdW1tYXJ5IHN1bW1hcnlJbmZvOwogCkBAIC0yMDcsMTEgKzIwNywxMSBAQCBzdGF0aWMgT3B0
aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGRlY29kZXIgPj4gc2l6ZTsKIAogICAgIGlmIChVTkxJS0VMWSghaXNJbkJvdW5kczxz
aXplX3Q+KCpzaXplKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvaW50ZXIgPSBkZWNvZGVyLmJ1ZmZlclBv
aW50ZXJGb3JEaXJlY3RSZWFkKHN0YXRpY19jYXN0PHNpemVfdD4oKnNpemUpKTsKICAgICBpZiAo
IXBvaW50ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
cG9pbnRlciwgKnNpemUpKTsKIH0KQEAgLTIzNCwxOCArMjM0LDE4IEBAIHN0YXRpYyBPcHRpb25h
bDxSZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVTZWNUcnVzdFJlZihEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPGJvb2w+IGhhc1RydXN0OwogICAgIGRlY29kZXIgPj4gaGFzVHJ1
c3Q7CiAgICAgaWYgKCFoYXNUcnVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghKmhhc1RydXN0KQogICAgICAg
ICByZXR1cm4geyBudWxscHRyIH07CiAKICAgICBhdXRvIHRydXN0RGF0YSA9IGRlY29kZUNGRGF0
YShkZWNvZGVyKTsKICAgICBpZiAoIXRydXN0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdHJ1c3QgPSBh
ZG9wdENGKFNlY1RydXN0RGVzZXJpYWxpemUodHJ1c3REYXRhLT5nZXQoKSwgbnVsbHB0cikpOwog
ICAgIGlmICghdHJ1c3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdHJ1c3Q7CiB9CkBAIC0yNzMsMTQgKzI3
MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGQXJyYXlSZWY+PiBkZWNvZGVDZXJ0
aWZpY2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNp
emU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
YXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgewog
ICAgICAgICBhdXRvIGRhdGEgPSBkZWNvZGVDRkRhdGEoZGVjb2Rlcik7CiAgICAgICAgIGlmICgh
ZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNl
Y0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoMCwgZGF0YS0+Z2V0KCkpKTsKICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCBjZXJ0aWZpY2F0ZS5nZXQoKSk7CkBAIC0zMTcs
MTQgKzMxNywxNCBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZAogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZvVHlwZTsKICAgICBkZWNv
ZGVyID4+IGNlcnRpZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm9UeXBl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgc3dpdGNoICgqY2VydGlmaWNhdGVJbmZvVHlwZSkgewogI2lmIEhBVkUoU0VD
X1RSVVNUX1NFUklBTElaQVRJT04pCiAgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86
OlR5cGU6OlRydXN0OiB7CiAgICAgICAgIGF1dG8gdHJ1c3QgPSBkZWNvZGVTZWNUcnVzdFJlZihk
ZWNvZGVyKTsKICAgICAgICAgaWYgKCF0cnVzdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oV1RGTW92ZSgqdHJ1c3QpKTsKICAgICB9CkBAIC0z
MzMsNyArMzMzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiBDb2RlcjxX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2QKICAgICBjYXNlIFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjogewogICAgICAgICBhdXRv
IGNlcnRpZmljYXRlQ2hhaW4gPSBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKGRlY29kZXIpOwogICAg
ICAgICBpZiAoIWNlcnRpZmljYXRlQ2hhaW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoKmNlcnRpZmljYXRlQ2hhaW4pKTsKICAg
ICB9CkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
PiBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2QKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygpOwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUGVyc2lzdGVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA5
OTE1ZjBjZWFjYWY5NDZlYjRhZjJkNmI3NDBmNzIyNmUzNDRiNzhkLi5lNjdlODNjNmIxNmVmYmNj
MjU4MmMzYTg2MjQyZjU1ZjljNGI1MmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZO
ZXQuY3BwCkBAIC03MjQsNyArNzI0LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXQKIAogICAg
IENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVuZ3RoKTsKICAgICBpZiAo
cmVzdWx0ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKHJlc3VsdCA+PSAwKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KaW5kZXggYWEzOTAyNzE4MmQ3ODRh
N2Q5NDY3N2E4ZTAwZmYwMDAwZDdlZjU3NS4uOGE1MDY1MGNlYTg2MmUxNTVmMjUzM2I0ZmRkNzM5
ZjdiODNjMTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9Db29raWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL0Nvb2tpZUNvY29hLm1tCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxk
b3VibGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29raWUgKmNvb2tpZSkKIHsKICAgICBOU0RhdGUg
KmV4cGlyeURhdGUgPSBjb29raWUuZXhwaXJlc0RhdGU7CiAgICAgaWYgKCFleHBpcnlEYXRlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBbZXhwaXJ5RGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZTE5NzBdICogMTAwMC4w
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCAxMWM5YTIz
ODNjZDZjOGMzMDFhMWEwOGRjZGVhZmFlNzlkMjYyYjQ0Li5kOTc4MmJiMTA3MDQ2NjI1YWQwOTJj
ZGFmNTIxMTlmNDE0YTkyY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbQogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSB0aGlzLT5jb29raWVTdG9yYWdlKCk7Ci0gICAgUmV0YWlu
UHRyPE5TQXJyYXk+IGNvb2tpZXMgPSBodHRwQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdl
dCgpLCBuaWwsIFdURjo6bnVsbG9wdCwgdXJsKTsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gY29v
a2llcyA9IGh0dHBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIG5pbCwgc3RkOjpu
dWxsb3B0LCB1cmwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVTdHJpbmcgPSBjb29raWVO
YW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXggMTc1MjI2YmRmYThkMDgy
ZDYzZDlhN2U1OTU5MGIwY2RhNTJmNGZiNS4uZmRlMGZmY2RiZjRkYWZhOWIyY2IwNDUwYzU5MDRl
NWM4ZWNmZWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQpAQCAtMTcyLDcgKzE3
Miw3IEBAIE9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVyYXRvcjo6ZXhwZWN0ZWRD
b250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0CiAgICAgLy8gRklYTUU6IFJlc291cmNlUmVz
cG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQgcmV0dXJuIE9wdGlvbmFs
PHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhlcmUuCiAgICAgYXV0byBl
eHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9uc2UuZXhwZWN0ZWRDb250
ZW50TGVuZ3RoKCk7CiAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3Bv
bnNlVW5rbm93bkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCmluZGV4IDQxMGEyNzZm
NGUwNjM5NzU2Y2U0YzBjM2YzY2YzMDVjNTYzNjA0MjEuLjkzY2Q4OGYzMGE2Nzk3NjRhOTg4YzQ4
ZTNlZjlmODNlZjI0ODdiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwu
Y3BwCkBAIC02OCw3ICs2OCw3IEBAIFByb3RlY3Rpb25TcGFjZSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTo6cHJvdGVjdGlvblNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25zdCBDCiAgICAgYXV0byBz
ZXJ2ZXJUeXBlID0gcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkodXJsLCBpc1Byb3h5
QXV0aCk7CiAgICAgYXV0byBhdXRoZW50aWNhdGlvblNjaGVtZSA9IGF1dGhlbnRpY2F0aW9uU2No
ZW1lRnJvbUN1cmxBdXRoKGlzUHJveHlBdXRoID8gY3VybFJlc3BvbnNlLmF2YWlsYWJsZVByb3h5
QXV0aCA6IGN1cmxSZXNwb25zZS5hdmFpbGFibGVIdHRwQXV0aCk7CiAKLSAgICByZXR1cm4gUHJv
dGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0
LnZhbHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBwYXJzZVJlYWxtKHJlc3BvbnNlKSwgYXV0aGVudGlj
YXRpb25TY2hlbWUpOworICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKS50b1N0
cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFsdWVfb3IoMCkpLCBzZXJ2ZXJUeXBlLCBw
YXJzZVJlYWxtKHJlc3BvbnNlKSwgYXV0aGVudGljYXRpb25TY2hlbWUpOwogfQogCiBQcm90ZWN0
aW9uU3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rpb25TcGFjZUZvclNlcnZl
clRydXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbykKQEAgLTc3LDcgKzc3LDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJUcnVzdChjb25zdCBVUkwKICAgICBhdXRv
IHNlcnZlclR5cGUgPSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSSh1cmwsIGZhbHNl
KTsKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uU2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQ7CiAKLSAgICByZXR1
cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50
Pihwb3J0LnZhbHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBTdHJpbmcoKSwgYXV0aGVudGljYXRpb25T
Y2hlbWUsIGNlcnRpZmljYXRlSW5mbyk7CisgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZSh1cmwu
aG9zdCgpLnRvU3RyaW5nKCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52YWx1ZV9vcigwKSksIHNl
cnZlclR5cGUsIFN0cmluZygpLCBhdXRoZW50aWNhdGlvblNjaGVtZSwgY2VydGlmaWNhdGVJbmZv
KTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpkZXRl
cm1pbmVQcm94eVBvcnQoY29uc3QgVVJMJiB1cmwpCkBAIC05Myw3ICs5Myw3IEBAIE9wdGlvbmFs
PHVpbnQxNl90PiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZGV0ZXJtaW5lUHJveHlQb3J0KGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQogICAg
ICAgICByZXR1cm4gc29ja3NQb3J0OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRpb25TY2hlbWVGcm9tQ3Vy
bEF1dGgobG9uZyBjdXJsQXV0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRleCA2MzRlNDFmYmRiN2Y3OTIxNDA4
YzcwOTAxNWZlZGI5MzE0ZjQzNTdlLi5kY2EyMGJhM2M1NDIxNjBhMzE4NTcwYzY3ZGE1MjBkN2Yz
Y2YyYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q2VydGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mby5oCkBAIC04NywxOSArODcsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAgIE9wdGlvbmFsPGlu
dD4gdmVyaWZpY2F0aW9uRXJyb3I7CiAgICAgICAgIGRlY29kZXIgPj4gdmVyaWZpY2F0aW9uRXJy
b3I7CiAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uRXJyb3IpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxzaXplX3Q+IG51bU9mQ2VydHM7CiAgICAgICAgIGRlY29kZXIgPj4gbnVtT2ZD
ZXJ0czsKICAgICAgICAgaWYgKCFudW1PZkNlcnRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUNoYWluIGNlcnRpZmljYXRlQ2hhaW47
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtT2ZDZXJ0cy52YWx1ZSgpOyBpKysp
IHsKICAgICAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6Q2VydGlm
aWNhdGU+IGNlcnRpZmljYXRlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZTsK
ICAgICAgICAgICAgIGlmICghY2VydGlmaWNhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBjZXJ0aWZpY2F0ZUNoYWluLmFwcGVuZChXVEZNb3ZlKGNlcnRpZmljYXRlLnZhbHVl
KCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IDE4ZmEyN2FhZWRk
M2Y3M2Y5MGNjMDY0NjMxMDY3MGE3ZmI2MTdkYzkuLmVjMGY0YmEwY2JlNDFmZDFlY2U4YWI4ZmYy
ZjgzNjVmYjZhMGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0
aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWYKIE9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4g
Q2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2VydGlmaWNh
dGVDaGFpbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gT3BlblNTTDo6Y3JlYXRlU3VtbWFyeUlu
Zm8obV9jZXJ0aWZpY2F0ZUNoYWluLmF0KDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDA1ZDYyNWQwMTYx
ZGNmNGMyNzAwMTA3MzQ2NWQyNTMxZDRmMTU5MzguLmRiYjA1ODM4NWRhYjdiNmUzOTVlMTU5ZDU4
MWNmOTA3NDdiZDE2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzcyLDE0ICszNzIsMTQgQEAgYm9vbCBDb29r
aWVKYXJEQjo6aGFzQ29va2llcyhjb25zdCBVUkwmIHVybCkKIE9wdGlvbmFsPFZlY3RvcjxDb29r
aWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25z
dCBPcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vzc2lvbikK
IHsKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgU3RyaW5nIHJlcXVlc3RIb3N0ID0gcmVxdWVzdFVybC5ob3N0KCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKICAgICBpZiAocmVxdWVzdEhvc3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFjaGVja0Nvb2tpZUFjY2VwdFBvbGljeShmaXJzdFBhcnR5LCByZXF1ZXN0VXJsKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAg
ICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKQEAgLTM5NSw3ICszOTUsNyBAQCBPcHRpb25h
bDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0gPykgT1IgKGRvbWFpbiBH
TE9CID8pKSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgpIERFU0MsIGxhc3R1cGRh
dGVkIl9zKTsKICAgICBpZiAoIXBzdG10KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcHN0bXQtPmJpbmRJbnQ2NCgxLCBX
YWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSk7CiAgICAg
cHN0bXQtPmJpbmRJbnQoMiwgaHR0cE9ubHkgPyAqaHR0cE9ubHkgOiAtMSk7CkBAIC01MTEsNyAr
NTExLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6Y2FuQWNjZXB0Q29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGMKIAogYm9vbCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIGF1dG8gZXhwaXJlcyA9IGNvb2tp
ZS5leHBpcmVzLnZhbHVlT3IoMC4wKTsKKyAgICBhdXRvIGV4cGlyZXMgPSBjb29raWUuZXhwaXJl
cy52YWx1ZV9vcigwLjApOwogICAgIGlmICghY29va2llLnNlc3Npb24gJiYgTW9ub3RvbmljVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoZXhwaXJlcyAvIFdURjo6bXNQZXJTZWNvbmQpIDw9IE1vbm90b25p
Y1RpbWU6Om5vdygpKQogICAgICAgICByZXR1cm4gZGVsZXRlQ29va2llSW50ZXJuYWwoY29va2ll
Lm5hbWUsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCA0ODQ5YzY2N2My
YTEyODg0MWZmYjA1NzZhNjY5MGM0ZDhmZDQ1ZTIxLi4wOTFlOTQ3NzcxODZkYjljNjA0OGYxNzc0
YTc0ZmNmMTU5YWU0NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgSGFz
aFNldDxTdHJpbmc+IGFsbERvbWFpbnMoKTsKICAgICBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4g
c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgcmVxdWVzdFVy
bCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBPcHRpb25hbDxib29sPiYg
c2VjdXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vzc2lvbik7CiAgICAgVmVjdG9yPENvb2tp
ZT4gZ2V0QWxsQ29va2llcygpOwotICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWUsIFNvdXJjZSwgT3B0aW9uYWw8
U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQpOworICAgIGJvb2wgc2V0Q29v
a2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWUsIFNvdXJjZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxv
cHQpOwogICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogCiAgICAgYm9vbCBkZWxl
dGVDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKaW5k
ZXggNWQ1MmM5ODgyYTMzMTUyMDg1NmExYjYyMzBmMWRkYjIxMDgwZDlkNi4uZTM1MDQ0ODIwNjIx
ZmJmNzkyY2VkNzA2ZDFkMDE0ZmNlM2QzNTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IHN0YXRpYyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZSwgYm9vbCYgaGFzTWF4QWdlLCBDb29rCiBPcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVh
ZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5sZW5n
dGgoKSA+PSBNQVhfQ09PS0lFX0xJTkUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIEFsZ29yaXRobSBpcyBi
YXNlZCBvbiB0aGUgYWxnb3JpdGhtIGRlZmluZWQgaW4gUkZDIDYyNjUgNS4yIGh0dHBzOi8vdG9v
bHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4yLwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCAyZjY1
NTZlZTA1YjFkN2MwNTYxZGJiNTIxMWI2Y2MwZWJjZjRhYzM5Li5mZmU3NzBhZGI4ZjJiMWNmMDYw
MGVjZDMxM2I4M2Y5MDk0NjU3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtNjc2LDcgKzY3Niw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybEhhbmRs
ZTo6Z2V0UHJveHlVcmwoKQogewogICAgIGF1dG8mIHByb3h5ID0gQ3VybENvbnRleHQ6OnNpbmds
ZXRvbigpLnByb3h5U2V0dGluZ3MoKTsKICAgICBpZiAocHJveHkubW9kZSgpID09IEN1cmxQcm94
eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHByb3h5LnVybCgpOwog
fQpAQCAtNjg0LDEyICs2ODQsMTIgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsSGFuZGxlOjpnZXRQ
cm94eVVybCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRSZXNwb25zZUNvZGUoKQog
ewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBsb25nIHJlc3BvbnNlQ29kZTsKICAgICBD
VVJMY29kZSBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9f
UkVTUE9OU0VfQ09ERSwgJnJlc3BvbnNlQ29kZSk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJM
RV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiByZXNwb25zZUNvZGU7CiB9CkBAIC02OTcsMTIgKzY5Nywx
MiBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRSZXNwb25zZUNvZGUoKQogT3B0aW9u
YWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKIHsKICAgICBpZiAoIW1f
aGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgbG9uZyBodHRwQ29ubmVjdENvZGU7CiAgICAgQ1VSTGNvZGUgZXJy
b3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBfQ09OTkVD
VENPREUsICZodHRwQ29ubmVjdENvZGUpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0sp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gaHR0cENvbm5lY3RDb2RlOwogfQpAQCAtNzEwLDEzICs3MTAsMTMg
QEAgT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkKIE9wdGlv
bmFsPGxvbmcgbG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVudExlbmd0aCgpCiB7CiAgICAgaWYg
KCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBjb250ZW50TGVuZ3RoOwogCiAgICAgQ1VSTGNv
ZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NPTlRF
TlRfTEVOR1RIX0RPV05MT0FELCAmY29udGVudExlbmd0aCk7CiAgICAgaWYgKGVycm9yQ29kZSAh
PSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGNvbnRl
bnRMZW5ndGgpOwogfQpAQCAtNzI0LDEyICs3MjQsMTIgQEAgT3B0aW9uYWw8bG9uZyBsb25nPiBD
dXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6
OmdldEh0dHBBdXRoQXZhaWwoKQogewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBsb25n
IGh0dHBBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9n
ZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCwgJmh0dHBBdXRoQXZhaWxh
YmxlKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGh0
dHBBdXRoQXZhaWxhYmxlOwogfQpAQCAtNzM3LDEyICs3MzcsMTIgQEAgT3B0aW9uYWw8bG9uZz4g
Q3VybEhhbmRsZTo6Z2V0SHR0cEF1dGhBdmFpbCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxl
OjpnZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGxv
bmcgcHJveHlBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9yQ29kZSA9IGN1cmxfZWFz
eV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19QUk9YWUFVVEhfQVZBSUwsICZwcm94eUF1dGhB
dmFpbGFibGUpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gcHJveHlBdXRoQXZhaWxhYmxlOwogfQpAQCAtNzUwLDEyICs3NTAsMTIgQEAgT3B0aW9uYWw8
bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQogT3B0aW9uYWw8bG9uZz4gQ3Vy
bEhhbmRsZTo6Z2V0SHR0cFZlcnNpb24oKQogewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBsb25nIHZlcnNpb247CiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGlu
Zm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBfVkVSU0lPTiwgJnZlcnNpb24pOwogICAgIGlmIChl
cnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KQEAgLTc2
OSwyNyArNzY5LDI3IEBAIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6
Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kCiAgICAgbG9uZyB2ZXJzaW9u
ID0gMDsKIAogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDVVJMY29kZSBlcnJvckNvZGUg
PSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fTkFNRUxPT0tVUF9USU1FLCAm
bmFtZUxvb2t1cCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGVy
cm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19DT05ORUNUX1RJ
TUUsICZjb25uZWN0KTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0FQUENPTk5F
Q1RfVElNRSwgJmFwcENvbm5lY3QpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9f
U1RBUlRUUkFOU0ZFUl9USU1FLCAmc3RhcnRUcmFuc2Zlcik7CiAgICAgaWYgKGVycm9yQ29kZSAh
PSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFu
ZGxlLCBDVVJMSU5GT19IVFRQX1ZFUlNJT04sICZ2ZXJzaW9uKTsKICAgICBpZiAoZXJyb3JDb2Rl
ICE9IENVUkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0
cmljczsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgQ3VybEhhbmRsZTo6YWRkRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpCiBPcHRp
b25hbDxDZXJ0aWZpY2F0ZUluZm8+IEN1cmxIYW5kbGU6OmNlcnRpZmljYXRlSW5mbygpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3NzbFZlcmlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1fc3NsVmVyaWZp
ZXItPmNlcnRpZmljYXRlSW5mbygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAppbmRleCBjZmRi
ZjBhMTFmNDUwMzJkZWU3YWViY2VmNDRkYjUyMDU4MjI0YjljLi43OWRkYzM5OTI4YTgzOWNjYTc1
NmQ4MjBjNGJlMWNlNGFkZWUzZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21wdXRlQ29udGVudExlbmd0aCgp
CiBPcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIs
IHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9mb3JtRGF0YSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IGF1
dG8gdG90YWxFbGVtZW50U2l6ZSA9IG1fZm9ybURhdGEtPmVsZW1lbnRzKCkuc2l6ZSgpOwogICAg
IGlmIChtX2VsZW1lbnRQb3NpdGlvbiA+PSB0b3RhbEVsZW1lbnRTaXplKQpAQCAtMTMwLDEyICsx
MzAsMTIgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWQoY2hhciog
YnVmZmVyLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVhZEZyb21GaWxl
KGZpbGVEYXRhLCBidWZmZXJQb3NpdGlvbiwgYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICB9LCBb
XSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgfQogICAgICAgICApOwogCiAgICAgICAgIGlmICghcmVhZEJ5dGVzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgdG90YWxSZWFkQnl0ZXMgKz0gKnJlYWRCeXRlczsKICAgICB9CkBAIC0xNTMsNyAr
MTUzLDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06OnJlYWRGcm9tRmls
ZShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWQKICAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQobV9maWxlSGFuZGxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkN1cmwg
LSBGYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9hZFxuIiwgZmlsZURhdGEu
ZmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byByZWFk
Qnl0ZXMgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBidWZmZXIsIHNp
emUpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3Ry
ZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkCiAgICAgICAg
IExPRyhOZXR3b3JrLCAiQ3VybCAtIEZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVhZCAlcyBmb3Ig
dXBsb2FkXG4iLCBmaWxlRGF0YS5maWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIG1fZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
aWYgKCFyZWFkQnl0ZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAppbmRleCBjY2RiYjI4MjM5
ZjIyYzM2MzZjYWMxNGIwNzg1ZDZmNTVhYjJmNWJjLi43MDI0ZWM3YzFlYjgyYjVjYjIzZGE1ODBi
MmUzNmJhYjEwZGVkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6ZXh0cmFjdEJvdW5kYXJ5
KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uCiAgICAgICAgIHJldHVybiBTdHJpbmcoIi0tIiAr
ICpib3VuZGFyeSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5k
bGU6OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbgogCiAgICAgYXV0
byBib3VuZGFyeVN0YXJ0ID0gY29udGVudFR5cGUuZmluZElnbm9yaW5nQVNDSUlDYXNlKCJib3Vu
ZGFyeT0iKTsKICAgICBpZiAoYm91bmRhcnlTdGFydCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJv
dW5kYXJ5U3RhcnQgKz0gbGVuZ3RoOwogICAgIHNpemVfdCBib3VuZGFyeUVuZCA9IDA7CkBAIC05
MSwxMyArOTEsMTMgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRy
YWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW4KICAgICAgICAgKytib3VuZGFy
eVN0YXJ0OwogICAgICAgICBib3VuZGFyeUVuZCA9IGNvbnRlbnRUeXBlLmZpbmQoJyInLCBib3Vu
ZGFyeVN0YXJ0KTsKICAgICAgICAgaWYgKGJvdW5kYXJ5RW5kID09IG5vdEZvdW5kKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZVtib3VuZGFyeVN0YXJ0XSA9PSAnXCcnKSB7
CiAgICAgICAgIC8vIEJvdW5kYXJ5IHZhbHVlIHN0YXJ0cyB3aXRoIGEgJyBxdW90ZS4gU2VhcmNo
IGZvciB0aGUgY2xvc2luZyBvbmUuCiAgICAgICAgICsrYm91bmRhcnlTdGFydDsKICAgICAgICAg
Ym91bmRhcnlFbmQgPSBjb250ZW50VHlwZS5maW5kKCdcJycsIGJvdW5kYXJ5U3RhcnQpOwogICAg
ICAgICBpZiAoYm91bmRhcnlFbmQgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBDaGVjayBmb3IgdGhlIGVuZCBvZiB0aGUgYm91bmRhcnkuIFRoYXQgY2Fu
IGJlIGEgc2VtaWNvbG9uIG9yIGEgbmV3bGluZS4KICAgICAgICAgYm91bmRhcnlFbmQgPSBjb250
ZW50VHlwZS5maW5kKCc7JywgYm91bmRhcnlTdGFydCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0
aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnlGcm9tQ29u
dGVudFR5cGUoY29uc3QgU3RyaW4KIAogICAgIC8vIFRoZSBib3VuZGFyeSBlbmQgc2hvdWxkIG5v
dCBiZSBiZWZvcmUgdGhlIHN0YXJ0CiAgICAgaWYgKGJvdW5kYXJ5RW5kIDw9IGJvdW5kYXJ5U3Rh
cnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gY29udGVudFR5cGUuc3Vic3RyaW5nKGJvdW5kYXJ5U3RhcnQs
IGJvdW5kYXJ5RW5kIC0gYm91bmRhcnlTdGFydCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcAppbmRl
eCAxODM3ZGI0NDc5NzUzNjQ4MDkzMTM5NTljOTlhMzFkNjlmMjZmOWFkLi5kZTA5MjdmZTFhM2E2
ZGEzMTc4MGM1ODQ5NTNhMGE5NjBkNGUxYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKQEAgLTEw
MywyMCArMTAzLDIwIEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UHJveHlQb3J0KGNv
bnN0IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQogICAg
ICAgICByZXR1cm4gU29ja3NQcm94eVBvcnQ7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGNy
ZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQogewogICAgIGlmICh1cmwuaXNFbXB0eSgpIHx8
IHVybC5ob3N0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpICYmICFwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byBwb3J0ID0gZ2V0UHJveHlQb3J0KHVybCk7CiAgICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byB1c2VycGFzcyA9IHVybC5oYXNDcmVkZW50aWFscygpID8gbWFrZVN0cmluZyh1cmwudXNlcigp
LCAiOiIsIHVybC5wYXNzd29yZCgpLCAiQCIpIDogU3RyaW5nKCk7CiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcodXJsLnByb3RvY29sKCksICI6Ly8iLCB1c2VycGFzcywgdXJsLmhvc3QoKSwgIjoiLCAq
cG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFNTTEhhbmRsZS5jcHAKaW5kZXggYWU4NmQyYjEyZGIyZWRlNTQ1MmQ4YjJiYTVhYjIyN2Ni
ZmQ5MDUzMi4uNjllYzI2MmRjYjJiZTgyNmE4OGI4MDA5N2ZkMDk3ZjQ0ZGEzNjRjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFu
ZGxlLmNwcApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxDdXJsU1NMSGFuZGxlOjpDbGllbnRD
ZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2VydGlmaWNhdAogCiAgICAg
YXV0byBpdCA9IG1fYWxsb3dlZENsaWVudEhvc3RzLmZpbmQoaG9zdE5hbWUpOwogICAgIGlmIChp
dCA9PSBtX2FsbG93ZWRDbGllbnRIb3N0cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpdC0+dmFs
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggNzA3NzQ4NDM4
OTNiMzA2MzcxMjI4ZmQ2OTJmYjU0NGE4NjhlMjdiNi4uYjI0ZTliNmVkOWQ0NTAzY2M0MDU4MjAw
NDU5ZTc5MWQwMTc4N2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApA
QCAtNTcsMTAgKzU3LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBjb29raWVzOwogCi0gICAgYXV0byBzZWFyY2hIVFRQT25seSA9IGZvckhUVFBIZWFk
ZXIgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNlIH07Ci0gICAgYXV0byBz
ZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFs
PGJvb2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNlYXJjaEhUVFBPbmx5ID0gZm9ySFRUUEhlYWRl
ciA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNl
Y3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpudWxsb3B0IDogT3B0aW9uYWw8
Ym9vbD4geyBmYWxzZSB9OwogCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0gc2Vzc2lvbi5jb29raWVE
YXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBzZWFyY2hIVFRQT25seSwg
c2VjdXJlLCBXVEY6Om51bGxvcHQpKSB7CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gc2Vzc2lvbi5j
b29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBzZWFyY2hIVFRQ
T25seSwgc2VjdXJlLCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
Y29va2llIDogKnJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCFjb29raWVzLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiOyAiKTsKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lUwogICAgIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExp
ZmV0aW1lID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURvbWFpbiB7IGZpcnN0UGFy
dHkgfSwgcGFnZUlEKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0gICAgT3B0
aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9u
YWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICBj
b29raWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmwsIHZhbHVlLCBDb29raWVK
YXJEQjo6U291cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsKIH0KQEAgLTIwNiw3ICsyMDYs
NyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbAogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewotICAgIGF1dG8g
Y29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gY29v
a2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIGlmICghY29va2ll
cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKaW5kZXggMjFmMDhhOWRiM2Fk
ZTgwZWE1YjljOGVhYmZjYTYyMDczNmEyNDEwYy4uODE2NDI3YjBlYjZlMjgxMDllYTIzN2IxMmFi
ZDM3YjYzNzM1ZWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKICAgICAgICAgYXV0byBsZW5ndGgg
PSA6OkJJT19nZXRfbWVtX2RhdGEobV9iaW8sICZkYXRhKTsKICAgICAgICAgaWYgKGxlbmd0aCA8
IDApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gVmVjdG9yIHsgZGF0YSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihsZW5ndGgpIH07CiAgICAgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBW
ZWN0b3I8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZT4gcGVtRGF0YUZyb21D
dHgoWDUwOV9TVE9SRV9DCiBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IGNyZWF0
ZUNlcnRpZmljYXRlSW5mbyhYNTA5X1NUT1JFX0NUWCogY3R4KQogewogICAgIGlmICghY3R4KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhYNTA5X1NUT1JFX0NUWF9n
ZXRfZXJyb3IoY3R4KSwgcGVtRGF0YUZyb21DdHgoY3R4KSk7CiB9CkBAIC0yMTgsMjEgKzIxOCwy
MSBAQCBzdGF0aWMgU3RyaW5nIGdldFN1YmplY3ROYW1lKGNvbnN0IFg1MDkqIHg1MDkpCiBzdGF0
aWMgT3B0aW9uYWw8U2Vjb25kcz4gY29udmVydEFTTjFUaW1lVG9TZWNvbmRzKGNvbnN0IEFTTjFf
VElNRSogYW5zMVRpbWUpCiB7CiAgICAgaWYgKCFhbnMxVGltZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgoYW5z
MVRpbWUtPnR5cGUgIT0gVl9BU04xX1VUQ1RJTUUgJiYgYW5zMVRpbWUtPnR5cGUgIT0gVl9BU04x
X0dFTkVSQUxJWkVEVElNRSkgfHwgIWFuczFUaW1lLT5kYXRhKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVVRDVElN
RSAgICAgICAgIDogWVltbWRkSEhNTVtTU10KICAgICAvLyBHRU5FUkFMSVpFRFRJTUUgOiBZWVlZ
bW1kZEhITU1bU1NdCiAgICAgaW50IGRpZ2l0TGVuZ3RoID0gYW5zMVRpbWUtPnR5cGUgPT0gVl9B
U04xX1VUQ1RJTUUgPyAxMCA6IDEyOwogICAgIGlmIChhbnMxVGltZS0+bGVuZ3RoIDwgZGlnaXRM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGRhdGEgPSBhbnMxVGltZS0+ZGF0YTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGRpZ2l0TGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoZGF0YVtpXSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdHJ1Y3QgdG0gdGltZSB7IH07
CkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNlY29uZHM+IGNvbnZlcnRBU04x
VGltZVRvU2Vjb25kcyhjb25zdCBBU04xX1RJTUUqIGFuczFUaW1lKQogCiAgICAgdGltZS50bV9t
b24gPSAoZGF0YVswXSAtICcwJykgKiAxMCArIChkYXRhWzFdIC0gJzAnKSAtIDE7CiAgICAgaWYg
KHRpbWUudG1fbW9uIDwgMCB8fCB0aW1lLnRtX21vbiA+IDExKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHRpbWUudG1fbWRh
eSA9IChkYXRhWzJdIC0gJzAnKSAqIDEwICsgKGRhdGFbM10gLSAnMCcpOwogICAgIHRpbWUudG1f
aG91ciA9IChkYXRhWzRdIC0gJzAnKSAqIDEwICsgKGRhdGFbNV0gLSAnMCcpOwogICAgIHRpbWUu
dG1fbWluID0gKGRhdGFbNl0gLSAnMCcpICogMTAgKyAoZGF0YVs3XSAtICcwJyk7CkBAIC0zMDIs
NyArMzAyLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVTdW1tYXJ5PiBjcmVhdGVT
dW1tYXJ5SW5mbyhjb25zdCBWZWN0b3I8dWludDhfdD4mIHAKICAgICBCSU8gYmlvIHsgcGVtIH07
CiAgICAgYXV0byB4NTA5ID0gYmlvLnJlYWRYNTA5KCk7CiAgICAgaWYgKCF4NTA5KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVTdW1tYXJ5IHN1bW1hcnlJbmZvOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCmluZGV4IGQ0YmQ5Y2U4MDdlOWM3ZjE3MGMyODk3ZGNiZmE3MDNlMDNjOTljMDgu
LmI3MTU4NjM3MmFiNjZiOGYxYWFmNTgzNDAxNWY5ZDc0OGZhOGVlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgUmVmPEN1cmxSZXF1ZXN0PiBSZXNvdXJjZUhh
bmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmUKICAg
ICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsKIAogICAgICAgICBhdXRv
IGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIp
ID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsK
LSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9jb250ZXh0LT5zdG9yYWdl
U2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVy
bCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8p
LmZpcnN0OworICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nOjpObykuZmlyc3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVyRmllbGQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvb2tpZSwgY29va2llSGVhZGVyRmllbGQpOwogICAgIH0KQEAgLTM0OSw3ICszNDksNyBAQCBP
cHRpb25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3JlZGVudGlhbChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogICAgIGlmICghZC0+bV9pbml0aWFsQ3JlZGVudGlhbC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBkLT5tX2luaXRpYWxDcmVkZW50aWFsOwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IFJlc291cmNlSGFuZGxlOjpyZXN0YXJ0UmVxdWVzdFdpdGhDcmVkZW50aWFsKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggY2FlOGM0M2Q2MGZj
ZjZhM2Q2OWM1OGE3NDM2NTE2ZjkyM2QyMjdjYi4uOGJlYjNiNTNiOWRiZTRhNjQ3Y2JiMzE3MzFk
MTZhOTUzMGZmZDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6On5Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsKCkKIE9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZv
cm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKIHsKICAg
ICBpZiAoaXNTdHJlYW1JbnZhbGlkYXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1fdG90YWxTZW5kRGF0
YVNpemUgKyBsZW5ndGggPiBtYXhCdWZmZXJTaXplKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKaW5kZXggNGI4MjljNjNjODA0NWI0NmI1
NDE4OTY4NGJkODMzOWExNmEwYThmMi4uYTBjZmVkMGQ5ODBiZmFmYWRkODc3MDU2OTQ1NjA2ZDdh
OTdlYzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgc3RhdGljIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2VGcm9tU291
cEF1dGhBbmRVUkwoU291cEF1dGgqIHNvdXBBdXRoLCBjb24KICAgICBhdXRvIHBvcnQgPSBhdXRo
VVJMLnBvcnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZShob3N0LnRv
U3RyaW5nKCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52YWx1ZU9yKDApKSwKKyAgICByZXR1cm4g
UHJvdGVjdGlvblNwYWNlKGhvc3QudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZh
bHVlX29yKDApKSwKICAgICAgICAgcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkwodXJs
LCBzb3VwX2F1dGhfaXNfZm9yX3Byb3h5KHNvdXBBdXRoKSksCiAgICAgICAgIFN0cmluZzo6ZnJv
bVVURjgoc291cF9hdXRoX2dldF9yZWFsbShzb3VwQXV0aCkpLCBzY2hlbWUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5m
by5oCmluZGV4IGM0NGIwYWMzYTI3NGU2YjIyYzhlMTVlNjRmMGEyOWU3NDUwYWIyYjMuLmNiMjYw
ODQ2NjZiNzJlOWM4YWVmN2U0MDI2ZGRkZmU3ZWI1YmI4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05vblJvb3RTSEExU2lnbmVk
Q2VydGlmaWNhdGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3QgeyBub3RJ
bXBsZW1lbnRlZCgpOyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Q2VydGlm
aWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9j
ZXJ0aWZpY2F0ZTsgfQogCkBAIC04MywxMiArODMsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29k
ZXI8R1JlZlB0cjxHQnl0ZUFycmF5Pj4gewogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gc2l6
ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAoIXNpemUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGJ5dGVBcnJheSA9IGFkb3B0R1JlZihn
X2J5dGVfYXJyYXlfc2l6ZWRfbmV3KCpzaXplKSk7CiAgICAgICAgIGdfYnl0ZV9hcnJheV9zZXRf
c2l6ZShieXRlQXJyYXkuZ2V0KCksICpzaXplKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEsICpzaXplKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICByZXR1cm4gYnl0ZUFycmF5OwogICAgIH0KIH07CkBAIC0xNDksNyArMTQ5LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pj4gY2VydGlmaWNhdGVzRGF0YUxp
c3Q7CiAgICAgICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVzRGF0YUxpc3Q7CiAgICAgICAgIGlm
ICghY2VydGlmaWNhdGVzRGF0YUxpc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBpZiAoY2VydGlmaWNhdGVz
RGF0YUxpc3QtPmlzRW1wdHkoKSkKQEAgLTE1NywxMyArMTU3LDEzIEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gewogCiAgICAgICAgIGF1dG8gY2Vy
dGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZUZyb21DZXJ0aWZpY2F0ZXNEYXRhTGlzdChjZXJ0aWZpY2F0
ZXNEYXRhTGlzdC52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUuZ2V0
KCkpOwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0bHNFcnJvcnM7CiAgICAgICAgIGRl
Y29kZXIgPj4gdGxzRXJyb3JzOwogICAgICAgICBpZiAoIXRsc0Vycm9ycykKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0VExTRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzPigqdGxzRXJyb3JzKSk7CiAKICAgICAgICAgcmV0dXJuIGNlcnRpZmljYXRl
SW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVTb3VwLmNwcAppbmRleCAxZjNjZDI2NzMxNzllMWFlMGQ4ZDgyMjc3ZmEwMTlkOTE5ZTE1ZjRk
Li45YmI5YzcxMjRkNDBlMmIwMzI0NDAxYzg5ZmY1ODdhZDU1NmU3MjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCkBAIC03
MCw5ICs3MCw5IEBAIENvb2tpZTo6Q29va2llKFNvdXBDb29raWUqIGNvb2tpZSkKICAgICAsIGRv
bWFpbihTdHJpbmc6OmZyb21VVEY4KHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llKSkpCiAg
ICAgLCBwYXRoKFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0X3BhdGgoY29va2llKSkp
CiAjaWYgVVNFKFNPVVAyKQotICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhj
b29raWUpID8gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oc291cF9kYXRlX3RvX3Rp
bWVfdChzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IFdURjo6bnVs
bG9wdCkKKyAgICAsIGV4cGlyZXMoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSA/IHN0
ZDo6bWFrZV9vcHRpb25hbChzdGF0aWNfY2FzdDxkb3VibGU+KHNvdXBfZGF0ZV90b190aW1lX3Qo
c291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSkpICogMTAwMCkgOiBzdGQ6Om51bGxvcHQp
CiAjZWxzZQotICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpID8g
bWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oZ19kYXRlX3RpbWVfdG9fdW5peChzb3Vw
X2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IFdURjo6bnVsbG9wdCkKKyAg
ICAsIGV4cGlyZXMoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSA/IHN0ZDo6bWFrZV9v
cHRpb25hbChzdGF0aWNfY2FzdDxkb3VibGU+KGdfZGF0ZV90aW1lX3RvX3VuaXgoc291cF9jb29r
aWVfZ2V0X2V4cGlyZXMoY29va2llKSkpICogMTAwMCkgOiBzdGQ6Om51bGxvcHQpCiAjZW5kaWYK
ICAgICAsIGh0dHBPbmx5KHNvdXBfY29va2llX2dldF9odHRwX29ubHkoY29va2llKSkKICAgICAs
IHNlY3VyZShzb3VwX2Nvb2tpZV9nZXRfc2VjdXJlKGNvb2tpZSkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IDI3NDMyNjgwZmM1MDFiZGExNTM2NjI0ZTAyYTQyNjE2OWM3ZjU2NWQuLjA3MTc2
NjMxMzljYzQ0NDZkNWMwYWQ2MjJmMzY3MGE5MzJiMmQ4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC0zMjQsMTEgKzMyNCwxMSBAQCB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6c2V0SWdu
b3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogT3B0aW9uYWw8UmVzb3VyY2VFcnJv
cj4gU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhjb25zdCBVUkwmIHJlcXVlc3RV
UkwsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRs
c0Vycm9ycykKIHsKICAgICBpZiAobV9pZ25vcmVUTFNFcnJvcnMgfHwgIXRsc0Vycm9ycykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gaXQgPSBhbGxvd2VkQ2VydGlmaWNhdGVzKCkuZmluZChyZXF1ZXN0VVJMLmhv
c3QoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIGlmIChpdCAhPSBhbGxvd2VkQ2Vy
dGlmaWNhdGVzKCkuZW5kKCkgJiYgaXQtPnZhbHVlLmNvbnRhaW5zKGNlcnRpZmljYXRlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihyZXF1ZXN0VVJMLCB0bHNFcnJv
cnMsIGNlcnRpZmljYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9F
bmNvZGluZ1RhYmxlcy5jcHAKaW5kZXggNWMwODNmMTE2MzcxYTg0NzExY2NhZjEyNzJhNGIzZDcx
ODMyOTYwYy4uNjU1ZGY1NjIyZTFjMzA1MmRjNTFjZThkMWJjNzU5NWI3YTQ0NGZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5jcHAKQEAgLTcw
ODIsNyArNzA4Miw3IEBAIGNvbnN0IHN0ZDo6YXJyYXk8c3RkOjpwYWlyPHVpbnQxNl90LCBVQ2hh
cj4sIDE3MDQ4PiYgZXVjS1IoKQogICAgICAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVS
T19FUlJPUjsKICAgICAgICAgICAgIHVjbnZfdG9Vbmljb2RlKGljdUNvbnZlcnRlci5nZXQoKSwg
Jm91dHB1dCwgb3V0cHV0ICsgMiwgJmlucHV0LCBpbnB1dCArIHNpemVvZihpY3VJbnB1dCksIG51
bGxwdHIsIHRydWUsICZlcnJvcik7CiAgICAgICAgICAgICBpZiAoaWN1T3V0cHV0WzBdID09IDB4
RkZGRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4ge3sgcG9pbnRlciwg
aWN1T3V0cHV0WzBdIH19OwogICAgICAgICB9OwogICAgICAgICBzaXplX3QgYXJyYXlJbmRleCA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFi
bGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmgKaW5k
ZXggM2Y3ZDBiMDJlMDcxMmNjMTFmZWNjNmQ0ZWIxZjU4MTBkM2MxOTA0NC4uZTViZDUyMmY4YTY4
ZGNlZjhlYmRmNDg5NmU5YjEyNjcwNzZiMWUwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaApAQCAtMTE2LDExICsxMTYsMTEgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgQ29sbGVjdGlvblR5cGUsIHR5cGVuYW1lIEtleVR5cGU+IHN0YXRpYyBhdXRvIGZp
bmRGaXJzdEluU29ydGUKIHsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfaW50ZWdyYWxfdjxL
ZXlUeXBlPikgewogICAgICAgICBpZiAoa2V5ICE9IGRlY2x0eXBlKHN0ZDo6YmVnaW4oY29sbGVj
dGlvbiktPmZpcnN0KShrZXkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gaXRlcmF0b3Ig
PSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oY29sbGVjdGlvbiksIHN0ZDo6ZW5kKGNvbGxl
Y3Rpb24pLCBtYWtlRmlyc3RBZGFwdGVyKGtleSksIENvbXBhcmVGaXJzdCB7IH0pOwogICAgIGlm
IChpdGVyYXRvciA9PSBzdGQ6OmVuZChjb2xsZWN0aW9uKSB8fCBrZXkgPCBpdGVyYXRvci0+Zmly
c3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAppbmRleCBmYzJhOTIxMTAwMjBkNTll
NDNhODMwYWUzNDU0MTAyYjc3OTcyNDU2Li4yMTE3ZTFhNGI5MDUyMzMxY2RjZDY0MTIyNGU3NjM1
MGIyZTllZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRD
b2RlY0NKSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWND
SksuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6ZGVjb2RlQ29t
bW9uKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXMKICAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7
CiAKLSAgICBpZiAobV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2Uo
bV9wcmVwZW5kZWRCeXRlLCBXVEY6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMp
IHsKKyAgICBpZiAobV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2Uo
bV9wcmVwZW5kZWRCeXRlLCBzdGQ6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMp
IHsKICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICByZXN1bHQuYXBwZW5kKHJlcGxh
Y2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgaWYgKHN0b3BPbkVycm9yKSB7CkBAIC0yMDAsNyAr
MjAwLDcgQEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6ZGVjb2RlQ29tbW9uKGNvbnN0IHVpbnQ4X3Qq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXMKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KG1fcHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVk
Qnl0ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CisgICAgICAg
IGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3ByZXBl
bmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcykgewogICAg
ICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBs
YWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTQy
Nyw3ICs0MjcsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjppc28yMDIySlBEZWNvZGUoY29uc3Qg
dWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZgogICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAotICAgIGlmICht
X3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3ByZXBlbmRlZEJ5
dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcykgeworICAgIGlmICht
X3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3ByZXBlbmRlZEJ5
dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcykgewogICAgICAgICBz
YXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRDaGFyYWN0
ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTQzNSw3ICs0MzUsNyBAQCBTdHJp
bmcgVGV4dENvZGVjQ0pLOjppc28yMDIySlBEZWNvZGUoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgsIGJvb2wgZgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygp
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5
dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRl
ZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcyAmJiBzdG9wT25F
cnJvcikgeworICAgIGlmIChtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBh
cnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUsIHN0ZDo6
bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcyAmJiBzdG9wT25FcnJvcikgewogICAg
ICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRD
aGFyYWN0ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTQ1Miw3ICs0NTIsNyBA
QCBTdHJpbmcgVGV4dENvZGVjQ0pLOjppc28yMDIySlBEZWNvZGUoY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZgogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobV9wcmVw
ZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRlLCBX
VEY6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsKKyAgICAgICAgaWYgKG1f
cHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVkQnl0
ZSwgc3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CiAgICAgICAgICAg
ICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlcGxhY2VtZW50
Q2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDYwLDcgKzQ2
MCw3IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICht
X2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5n
ZShtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkg
PT0gU2F3RXJyb3I6OlllcyAmJiBzdG9wT25FcnJvcikgeworICAgICAgICBpZiAobV9pc28yMDIy
SlBTZWNvbmRQcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9pc28y
MDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlLCBzdGQ6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vy
cm9yOjpZZXMgJiYgc3RvcE9uRXJyb3IpIHsKICAgICAgICAgICAgIHNhd0Vycm9yID0gdHJ1ZTsK
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRDaGFyYWN0ZXIpOwogICAgICAg
ICAgICAgaWYgKHN0b3BPbkVycm9yKSB7CkBAIC04NTQsNyArODU0LDcgQEAgc3RhdGljIGNvbnN0
IHN0ZDo6YXJyYXk8c3RkOjpwYWlyPHVpbnQzMl90LCBVQ2hhcjMyPiwgMjA3PiYgZ2IxODAzMFJh
bmdlcygpCiBzdGF0aWMgT3B0aW9uYWw8VUNoYXIzMj4gZ2IxODAzMFJhbmdlc0NvZGVQb2ludCh1
aW50MzJfdCBwb2ludGVyKQogewogICAgIGlmICgocG9pbnRlciA+IDM5NDE5ICYmIHBvaW50ZXIg
PCAxODkwMDApIHx8IHBvaW50ZXIgPiAxMjM3NTc1KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChwb2ludGVyID09IDc0
NTcpCiAgICAgICAgIHJldHVybiAweEU3Qzc7CiAgICAgYXV0byB1cHBlckJvdW5kID0gc3RkOjp1
cHBlcl9ib3VuZChnYjE4MDMwUmFuZ2VzKCkuYmVnaW4oKSwgZ2IxODAzMFJhbmdlcygpLmVuZCgp
LCBtYWtlRmlyc3RBZGFwdGVyKHBvaW50ZXIpLCBDb21wYXJlRmlyc3QgeyB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVVRGMTYuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKaW5kZXggMjcxNjA5
YWYzNDJiNmE4MWY5MWUzOTJhZDJlZGE0YzYwZTk0MTY3Yi4uYzFjMGQ3NTRjNDhkZTMwMTgwZDk3
OTQzN2E5NzBlMDViY2ZlNTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VU
RjE2OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gs
IGJvb2wKICAgICAgICAgaWYgKHN0ZDo6ZXhjaGFuZ2UobV9zaG91bGRTdHJpcEJ5dGVPcmRlck1h
cmssIGZhbHNlKSAmJiBjb2RlVW5pdCA9PSBieXRlT3JkZXJNYXJrKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAobV9sZWFkU3Vycm9nYXRlKSB7Ci0gICAgICAgICAgICBhdXRvIGxl
YWRTdXJyb2dhdGUgPSAqc3RkOjpleGNoYW5nZShtX2xlYWRTdXJyb2dhdGUsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgICAgICBhdXRvIGxlYWRTdXJyb2dhdGUgPSAqc3RkOjpleGNoYW5nZShtX2xl
YWRTdXJyb2dhdGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBpZiAoVTE2X0lTX1RSQUlM
KGNvZGVVbml0KSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRDaGFyYWN0ZXIoVTE2
X0dFVF9TVVBQTEVNRU5UQVJZKGxlYWRTdXJyb2dhdGUsIGNvZGVVbml0KSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzEwNCw3IEBAIFN0cmluZyBUZXh0Q29kZWNVVEYxNjo6
ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoLCBib29s
CiAgICAgfTsKIAogICAgIGlmIChtX2xlYWRCeXRlICYmIHAgPCBlbmQpIHsKLSAgICAgICAgYXV0
byBsZWFkQnl0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZEJ5dGUsIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGF1dG8gbGVhZEJ5dGUgPSAqc3RkOjpleGNoYW5nZShtX2xlYWRCeXRlLCBzdGQ6Om51
bGxvcHQpOwogICAgICAgICBpZiAobV9saXR0bGVFbmRpYW4pCiAgICAgICAgICAgICBwcm9jZXNz
Qnl0ZXNMRShsZWFkQnl0ZSwgcFswXSk7CiAgICAgICAgIGVsc2UKQEAgLTEzMyw4ICsxMzMsOCBA
QCBTdHJpbmcgVGV4dENvZGVjVVRGMTY6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90
IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogICAgIGlmIChmbHVzaCkgewogICAgICAgICBtX3No
b3VsZFN0cmlwQnl0ZU9yZGVyTWFyayA9IGZhbHNlOwogICAgICAgICBpZiAobV9sZWFkQnl0ZSB8
fCBtX2xlYWRTdXJyb2dhdGUpIHsKLSAgICAgICAgICAgIG1fbGVhZEJ5dGUgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgICAgICBtX2xlYWRTdXJyb2dhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICBtX2xlYWRCeXRlID0gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgbV9sZWFkU3Vycm9n
YXRlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IDY2ZWE4NjI3MGVhYzc0
ZmU1YTM0OTJlODkyNDE0ODg1MzBmYTVkOWYuLjgxZDIyZjJkMzA1YmQ4ZWNiNGEwOTA2YTMxZTBh
ZGYyYjE3MTNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApA
QCAtMzE0LDc3ICszMTQsNzcgQEAgT3B0aW9uYWw8Rm9udFZhcmlhbnRTZXR0aW5ncz4gRm9udFZh
cmlhbnRTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Rm9u
dFZhcmlhbnRMaWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGNvbW1v
bkxpZ2F0dXJlczsKICAgICBpZiAoIWNvbW1vbkxpZ2F0dXJlcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PEZvbnRWYXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGRlY29k
ZXIgPj4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAoIWRpc2NyZXRpb25hcnlMaWdh
dHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gaGlzdG9yaWNh
bExpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgaWYg
KCFoaXN0b3JpY2FsTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdh
dHVyZXM+IGNvbnRleHR1YWxBbHRlcm5hdGVzOwogICAgIGRlY29kZXIgPj4gY29udGV4dHVhbEFs
dGVybmF0ZXM7CiAgICAgaWYgKCFjb250ZXh0dWFsQWx0ZXJuYXRlcykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZvbnRWYXJpYW50UG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGRlY29kZXIgPj4gcG9zaXRp
b247CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50Q2Fw
cz4gY2FwczsKICAgICBkZWNvZGVyID4+IGNhcHM7CiAgICAgaWYgKCFjYXBzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRmlndXJlPiBudW1lcmljRmlndXJlOwogICAgIGRl
Y29kZXIgPj4gbnVtZXJpY0ZpZ3VyZTsKICAgICBpZiAoIW51bWVyaWNGaWd1cmUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiBudW1lcmljU3BhY2luZzsKICAg
ICBkZWNvZGVyID4+IG51bWVyaWNTcGFjaW5nOwogICAgIGlmICghbnVtZXJpY1NwYWNpbmcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlvbj4gbnVtZXJpY0ZyYWN0
aW9uOwogICAgIGRlY29kZXIgPj4gbnVtZXJpY0ZyYWN0aW9uOwogICAgIGlmICghbnVtZXJpY0Zy
YWN0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4gbnVt
ZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiBudW1lcmljT3JkaW5hbDsKICAgICBpZiAoIW51
bWVyaWNPcmRpbmFsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xhc2hl
ZFplcm8+IG51bWVyaWNTbGFzaGVkWmVybzsKICAgICBkZWNvZGVyID4+IG51bWVyaWNTbGFzaGVk
WmVybzsKICAgICBpZiAoIW51bWVyaWNTbGFzaGVkWmVybykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50QWx0ZXJuYXRlcz4gYWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IGFsdGVybmF0
ZXM7CiAgICAgaWYgKCFhbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRF
YXN0QXNpYW5WYXJpYW50PiBlYXN0QXNpYW5WYXJpYW50OwogICAgIGRlY29kZXIgPj4gZWFzdEFz
aWFuVmFyaWFudDsKICAgICBpZiAoIWVhc3RBc2lhblZhcmlhbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiBlYXN0QXNpYW5XaWR0aDsKICAgICBkZWNvZGVy
ID4+IGVhc3RBc2lhbldpZHRoOwogICAgIGlmICghZWFzdEFzaWFuV2lkdGgpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lhblJ1Ynk7CiAgICAgZGVj
b2RlciA+PiBlYXN0QXNpYW5SdWJ5OwogICAgIGlmICghZWFzdEFzaWFuUnVieSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7ewogICAgICAgICAqY29tbW9uTGlnYXR1cmVzLApAQCAtNDQyLDIyICs0NDIsMjIg
QEAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZvbnRWYXJpYW50TGlnYXR1
cmVzVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0
dXJlcz4gY29tbW9uTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gY29tbW9uTGlnYXR1cmVzOwog
ICAgIGlmICghY29tbW9uTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRM
aWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBkaXNjcmV0
aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0dXJlcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGlnYXR1cmVzOwog
ICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIWhpc3RvcmljYWxM
aWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gY29udGV4
dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFsQWx0ZXJuYXRlczsKICAg
ICBpZiAoIWNvbnRleHR1YWxBbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpjb21tb25M
aWdhdHVyZXMsICpkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzLCAqaGlzdG9yaWNhbExpZ2F0dXJlcywg
KmNvbnRleHR1YWxBbHRlcm5hdGVzIH19OwogfQpAQCAtNTAzLDI3ICs1MDMsMjcgQEAgT3B0aW9u
YWw8Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzPiBGb250VmFyaWFudE51bWVyaWNWYWx1ZXM6OmRl
Y29kZShEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+
IGZpZ3VyZTsKICAgICBkZWNvZGVyID4+IGZpZ3VyZTsKICAgICBpZiAoIWZpZ3VyZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc+IHNwYWNpbmc7CiAgICAgZGVj
b2RlciA+PiBzcGFjaW5nOwogICAgIGlmICghc3BhY2luZykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IGZyYWN0
aW9uOwogICAgIGlmICghZnJhY3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51
bWVyaWNPcmRpbmFsPiBvcmRpbmFsOwogICAgIGRlY29kZXIgPj4gb3JkaW5hbDsKICAgICBpZiAo
IW9yZGluYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
bz4gc2xhc2hlZFplcm87CiAgICAgZGVjb2RlciA+PiBzbGFzaGVkWmVybzsKICAgICBpZiAoIXNs
YXNoZWRaZXJvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpmaWd1cmUsICpzcGFjaW5nLCAqZnJhY3Rp
b24sICpvcmRpbmFsLCAqc2xhc2hlZFplcm8gfX07CiB9CkBAIC01NjEsMTcgKzU2MSwxNyBAQCBP
cHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcz4gRm9udFZhcmlhbnRFYXN0QXNpYW5W
YWx1ZXM6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFyaWFudD4gdmFyaWFudDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnQ7CiAgICAgaWYgKCF2YXJp
YW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4gd2lkdGg7
CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAoIXdpZHRoKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiBydWJ5OwogICAgIGRlY29kZXIgPj4gcnVieTsK
ICAgICBpZiAoIXJ1YnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnZhcmlhbnQsICp3aWR0aCwgKnJ1
YnkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggY2M4MDAzZjVlMTUzMjA1YWMwNzVhZDA2OTU0MjE1OTUwMTk5ZGViYy4uOWNkYTM0
OTJiNjk2NTY4MjhkNjFlNTYzODRlYzE2NWI2ZDE5ZWM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjYyLDcgKzI2Miw3IEBAIE9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3Rv
bURhdGEoKQogICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdp
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCAwZjc3NmM0Mjg2
ZGFmZGZkZDY5ZmYwMmEyNWRlYjc1ZmVhYTNiMTgzLi4yZmMyMTExNTdkYTNlMWJmZTBkZjFhNWZi
MGM2MjliY2E4MDgzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5o
CkBAIC0yOTgsMTMgKzI5OCwxMyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRR
dWF0ZXJuaW9uPiBEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uOgogewogICAgIERl
dmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb24gZmxvYXRRdWF0ZXJuaW9uOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLngpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZmxvYXRRdWF0ZXJuaW9uLnopKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0
ZXJuaW9uLncpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBmbG9hdFF1YXRlcm5pb247CiB9CiAKQEAgLTMxOSw5
ICszMTksOSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9zZT4gRGV2aWNlOjpGcmFt
ZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewogICAgIERldmljZTo6RnJhbWVE
YXRhOjpQb3NlIHBvc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NlLnBvc2l0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2Uub3JpZW50YXRpb24pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBwb3NlOwogfQogCkBAIC0zMzYsMTMgKzMzNiwxMyBAQCBPcHRpb25hbDxEZXZpY2U6OkZy
YW1lRGF0YTo6Rm92PiBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcgogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZm92LnVwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi5kb3duKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi5sZWZ0KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZvdi5yaWdodCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGZvdjsKIH0KIApAQCAtMzc0LDMw
ICszNzQsMzAgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlZpZXc+IERldmljZTo6RnJh
bWVEYXRhOjpWaWV3OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKIHsKICAgICBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6VmlldyB2aWV3OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmll
dy5vZmZzZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNGb3Y7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNGb3YpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc0ZvdikgewogICAgICAgICBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6Rm92IGZvdjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
b3YpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9IHsgV1RGTW92ZShmb3Yp
IH07CiAgICAgICAgIHJldHVybiB2aWV3OwogICAgIH0KIAogICAgIGJvb2wgaGFzUHJvamVjdGlv
bk1hdHJpeDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1Byb2plY3Rpb25NYXRyaXgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGhhc1Byb2plY3Rpb25NYXRyaXgpIHsKICAgICAgICAgUGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXggcHJvamVjdGlvbk1hdHJpeDsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6cHJvamVjdGlvbk1hdHJpeFNpemU7ICsraSkgewogICAgICAgICAgICAgZmxvYXQgZjsKICAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgcHJvamVjdGlvbk1hdHJpeFtpXSA9IGY7CiAgICAgICAgIH0KICAgICAgICAgdmll
dy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKHByb2plY3Rpb25NYXRyaXgpIH07CkBAIC00MjAsOSAr
NDIwLDkgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVycz4gRGV2
aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczoKIHsKICAgICBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1ldGVyczsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0YWdlUGFyYW1ldGVycy5pZCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGFnZVBhcmFtZXRlcnMuYm91bmRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc3RhZ2VQYXJh
bWV0ZXJzOwogfQogCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1l
RGF0YTo6TGF5ZXJEYXRhPiBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhOjpkZWNvZGUoRGVj
bwogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgbGF5ZXJE
YXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJEYXRhLm9wYXF1ZVRleHR1cmUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2lmIFVTRShJT1NVUkZBQ0VfRk9SX1hSX0xBWUVSX0RBVEEpCiAgICAgV1RGOjpNYWNoU2Vu
ZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXJmYWNl
U2VuZFJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gbGF5
ZXJEYXRhOwpAQCAtNDcxLDI1ICs0NzEsMjUgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE+
IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmcmFtZURhdGEuc2hvdWxkUmVuZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmcmFtZURhdGEub3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1l
RGF0YS5mbG9vclRyYW5zZm9ybSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURh
dGEuc3RhZ2VQYXJhbWV0ZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0
YS52aWV3cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEubGF5ZXJzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBmcmFtZURhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmNwcAppbmRleCBkM2E4MGIy
ZTMzOTdlNTdlYzgwYjIyNTMzYzliMWUzMzk1MjI4N2VjLi4zZGQxNmNmNjAwYzZhMzQ1ZGRiY2Qx
ZjNiNjcwZTYzZGZlMjc0ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9wZW5YUklucHV0U291cmNl
OjpnZXRJbnB1dFNvdXJjZShYclNwYQogCiAgICAgLy8gVHJpZ2dlciBpcyBtYW5kYXRvcnkgaW4g
eHItc3RhbmRhcmQgbWFwcGluZy4KICAgICBpZiAoYnV0dG9ucy5pc0VtcHR5KCkgfHwgIWJ1dHRv
bnMuZmlyc3QoKS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBi
dXR0b25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChidXR0b25zW2ldKSB7CkBAIC0yOTMs
NyArMjkzLDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9u
PiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW4KIHsKICAgICBhdXRvIGl0ID0gbV9i
dXR0b25BY3Rpb25zLmZpbmQoYnV0dG9uVHlwZSk7CiAgICAgaWYgKGl0ID09IG1fYnV0dG9uQWN0
aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRv
biByZXN1bHQ7CiAgICAgYm9vbCBoYXNWYWx1ZSA9IGZhbHNlOwpAQCAtMzEwLDE4ICszMTAsMTgg
QEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uPiBPcGVuWFJJ
bnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW4KICAgICBxdWVyeUFjdGlvblN0YXRlKGFjdGlvbnMu
dG91Y2gsIHJlc3VsdC50b3VjaGVkLCByZXN1bHQucHJlc3NlZCk7CiAgICAgcXVlcnlBY3Rpb25T
dGF0ZShhY3Rpb25zLnZhbHVlLCByZXN1bHQucHJlc3NlZFZhbHVlLCByZXN1bHQucHJlc3NlZCA/
IDEuMCA6IDAuMCk7CiAKLSAgICByZXR1cm4gaGFzVmFsdWUgPyAgbWFrZU9wdGlvbmFsKHJlc3Vs
dCkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGhhc1ZhbHVlID8gIHN0ZDo6bWFrZV9vcHRp
b25hbChyZXN1bHQpIDogc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxYclZlY3RvcjJmPiBP
cGVuWFJJbnB1dFNvdXJjZTo6Z2V0QXhpcyhPcGVuWFJBeGlzVHlwZSBheGlzVHlwZSkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gbV9heGlzQWN0aW9ucy5maW5kKGF4aXNUeXBlKTsKICAgICBpZiAo
aXQgPT0gbV9heGlzQWN0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFhyVmVjdG9yMmYgYXhpczsKICAg
ICBpZiAoWFJfRkFJTEVEKGdldEFjdGlvblN0YXRlKGl0LT52YWx1ZSwgJmF4aXMpKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBheGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJMYXllci5jcHAKaW5kZXggNzgzYzMzN2UyZTAxZTFhMjA5ZDU2NTJkNDM5YzMw
MDE3OTYyOTNhMi4uYWZlMzQ3M2EwZWYwZDBkNjFjZDRkZmRmYmY4NDc1ZGJkZTNmNWJkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSTGF5ZXIuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+
IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgpCiB7CiAgICAgYXV0byB0ZXh0dXJl
ID0gbV9zd2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOwogICAgIGlmICghdGV4dHVyZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsgKnRleHR1cmUgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJTd2Fw
Y2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBj
aGFpbi5jcHAKaW5kZXggOGU0YWRiNmVkMTJhNTI3MjFlZDEwNGI4YTNlMDhjZTY5OTMxYjlmYy4u
ZmU5ZGFjOTFhZmZlMmI2MzY3YzJmYmI5Nzk3MDQxM2Y2MDY0OTk5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFpbi5jcHAKQEAg
LTgzLDE0ICs4MywxNCBAQCBPcHRpb25hbDxQbGF0Zm9ybUdMT2JqZWN0PiBPcGVuWFJTd2FwY2hh
aW46OmFjcXVpcmVJbWFnZSgpCiAgICAgYXV0byBhY3F1aXJlSW5mbyA9IGNyZWF0ZVN0cnVjdHVy
ZTxYclN3YXBjaGFpbkltYWdlQWNxdWlyZUluZm8sIFhSX1RZUEVfU1dBUENIQUlOX0lNQUdFX0FD
UVVJUkVfSU5GTz4oKTsKICAgICB1aW50MzJfdCBzd2FwY2hhaW5JbWFnZUluZGV4ID0gMDsKICAg
ICBhdXRvIHJlc3VsdCA9IHhyQWNxdWlyZVN3YXBjaGFpbkltYWdlKG1fc3dhcGNoYWluLCAmYWNx
dWlyZUluZm8sICZzd2FwY2hhaW5JbWFnZUluZGV4KTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJl
c3VsdCwgInhyQWNxdWlyZVN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgV1RGOjpudWxsb3B0
KTsKKyAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQWNxdWlyZVN3YXBjaGFpbkltYWdl
IiwgbV9pbnN0YW5jZSwgc3RkOjpudWxsb3B0KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHN3YXBj
aGFpbkltYWdlSW5kZXggPCBtX2ltYWdlQnVmZmVycy5zaXplKCkpOwogCiAgICAgYXV0byB3YWl0
SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN3YXBjaGFpbkltYWdlV2FpdEluZm8sIFhSX1RZUEVf
U1dBUENIQUlOX0lNQUdFX1dBSVRfSU5GTz4oKTsKICAgICB3YWl0SW5mby50aW1lb3V0ID0gWFJf
SU5GSU5JVEVfRFVSQVRJT047CiAgICAgcmVzdWx0ID0geHJXYWl0U3dhcGNoYWluSW1hZ2UobV9z
d2FwY2hhaW4sICZ3YWl0SW5mbyk7Ci0gICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4cldh
aXRTd2FwY2hhaW5JbWFnZSIsIG1faW5zdGFuY2UsIFdURjo6bnVsbG9wdCk7CisgICAgUkVUVVJO
X0lGX0ZBSUxFRChyZXN1bHQsICJ4cldhaXRTd2FwY2hhaW5JbWFnZSIsIG1faW5zdGFuY2UsIHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBtX2FjcXVpcmVkVGV4dHVyZSA9IG1faW1hZ2VCdWZmZXJzW3N3
YXBjaGFpbkltYWdlSW5kZXhdLmltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRh
LmNwcAppbmRleCBhN2U0N2M2ZGY5MWIzMGQwZjk5YjFkMzgzMWI3YzNmMmQ4ZjBiZWY5Li5mYzEx
Y2JjYmYxNDEyZjIxNTg3ZDg5YzI1ODNhMjVjMjkzODM2NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgY29uc3QgVmVjdG9yPFBsdWdpbklu
Zm8+JiBQbHVnaW5EYXRhOjp3ZWJWaXNpYmxlUGx1Z2lucygpIGNvbnN0CiAgICAgYXV0byBkb2N1
bWVudFVSTCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpID8gbV9wYWdlLm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPnVybCgpIDogVVJMIHsgfTsKICAgICBpZiAoIWRvY3VtZW50VVJMLmlz
TnVsbCgpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobV9jYWNoZWRWaXNpYmxlUGx1
Z2lucy5wYWdlVVJMLCBkb2N1bWVudFVSTCkpIHsKICAgICAgICAgbV9jYWNoZWRWaXNpYmxlUGx1
Z2lucy5wYWdlVVJMID0gV1RGTW92ZShkb2N1bWVudFVSTCk7Ci0gICAgICAgIG1fY2FjaGVkVmlz
aWJsZVBsdWdpbnMucGx1Z2luTGlzdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jYWNoZWRW
aXNpYmxlUGx1Z2lucy5wbHVnaW5MaXN0ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlm
ICghbV9jYWNoZWRWaXNpYmxlUGx1Z2lucy5wbHVnaW5MaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGEuaAppbmRleCBlYWE2NDNlNDVlODEwM2IyYWU0NmVmYmMxNTNlNzI5YTc5MmRiYzVl
Li5kY2IwZTUzYzI3Mzc5MGY2MTMyZmFhNzJjNGQ2YjY3ZmY5NTI4N2NjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtMTQxLDEyICsxNDEsMTIgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+IFN1cHBv
cnRlZFBsdWcKICAgICBPcHRpb25hbDxTdHJpbmc+IG1hdGNoaW5nRG9tYWluOwogICAgIGRlY29k
ZXIgPj4gbWF0Y2hpbmdEb21haW47CiAgICAgaWYgKCFtYXRjaGluZ0RvbWFpbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFN0cmluZz4gcGx1Z2luSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHBsdWdp
bklkZW50aWZpZXI7CiAgICAgaWYgKCFwbHVnaW5JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXIgeyBXVEZNb3ZlKG1hdGNoaW5nRG9tYWluLnZhbHVl
KCkpLCBXVEZNb3ZlKHBsdWdpbklkZW50aWZpZXIudmFsdWUoKSkgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXggZTM1MThiYjUyYmIxNDEz
M2E5YmU4OTM3OTM1MDc0ZmNlYzVjYTYyZS4uZDY4NmZhYzk3MDc4MGVmNzk4MjA2Y2M5MGY1NzAw
M2FiZDAxM2NkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJs
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91
dC5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0KCkK
ICAgICAgICAgICAgICAgICBudW1BdXRvRW1wdHlDZWxsc09ubHkrKzsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZOb25FbXB0eUF1dG87Ci0gICAgICAgICAg
ICAgICAgdG90YWxBdXRvID0gdG90YWxBdXRvLnZhbHVlT3IoMC5mKSArIG1fbGF5b3V0U3RydWN0
W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgICAgICB0b3RhbEF1dG8g
PSB0b3RhbEF1dG8udmFsdWVfb3IoMC5mKSArIG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1h
eExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICBhbGxvY0F1dG8gKz0gY2VsbExvZ2ljYWxX
aWR0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9CcmVha0xpbmVzLmgKaW5kZXggMDUzOWM2YTQzM2Q5ZmFlYmY1MWYyMTQ1ZTdjZjMxMjM4
OTAyMDExMy4uYWZiNzAwNDY4OGM0MTJlNjI2NGFhZmIyZGUxZThjZTE0MjQ2ZDIyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCkBAIC0xMDksNyArMTA5LDcgQEAgaW5saW5l
IHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxh
enlCcmVha0l0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICBpZiAoYnJlYWtJdGVyYXRvcikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHVicmtfZm9sbG93aW5n
KGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVUJSS19ET05FKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5leHRCcmVhayA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSBjYW5kaWRhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA+
PSBwcmlvckNvbnRleHRMZW5ndGgpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSB1bnNpZ25l
ZCBuZXh0QnJlYWthYmxlUG9zaXRpb25CcmVha0NoYXJhY3RlcihMYXp5TGluZUJyZWFrSXRlcmF0
b3ImIGxhenlCCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5Nzg3NgogICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXRlcmF0b3Ioc3Ry
aW5nVmlldyk7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHQgPSB1YnJrX2ZvbGxvd2luZyhp
dGVyYXRvciwgc3RhcnRQb3NpdGlvbik7Ci0gICAgcmV0dXJuIG5leHQudmFsdWVPcihzdHJpbmdW
aWV3Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gbmV4dC52YWx1ZV9vcihzdHJpbmdWaWV3Lmxlbmd0
aCgpKTsKIH0KIAogaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxpbmVCcmVha0l0ZXJhdG9y
JiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgT3B0aW9uYWw8dW5z
aWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9vbCBjYW5Vc2VTaG9ydGN1
dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU1ZhbHVlS2V5LmgKaW5kZXggMmRiZjc0NjA5ODIxZjUwNWI0MGYzMzFlNjZiMTdl
NjcwNmJhYmQxNy4uMTc2OTQ3MjJlNzE2MDEwMmI3YTAyYzIzMzFiYWY0ZDZmN2M5ODg1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKQEAgLTYwLDE1ICs2MCwxNSBAQCBP
cHRpb25hbDxDU1NWYWx1ZUtleT4gQ1NTVmFsdWVLZXk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBjc3NWYWx1ZUlEOwogICAgIGRlY29kZXIgPj4gY3Nz
VmFsdWVJRDsKICAgICBpZiAoIWNzc1ZhbHVlSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNl
RGFya0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiB1c2VEYXJrQXBwZWFyYW5jZTsKICAgICBp
ZiAoIXVzZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPGJvb2w+IHVzZUVsZXZhdGVk
VXNlckludGVyZmFjZUxldmVsOwogICAgIGRlY29kZXIgPj4gdXNlRWxldmF0ZWRVc2VySW50ZXJm
YWNlTGV2ZWw7CiAgICAgaWYgKCF1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4geyB7IFdURk1vdmUoKmNzc1ZhbHVlSUQpLCBXVEZNb3ZlKCp1c2VEYXJrQXBwZWFy
YW5jZSksIFdURk1vdmUoKnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKSB9IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKaW5kZXggMmZmNWU5MzYyZjZmNDI2
Zjc2OWI5NmM5YjhhMmEzMTM3OGM0ZjcxOC4uNmExYWM0ZTNiMzk1ZjgyODRlYzdhN2M2ZGJhNjMx
MDk4ZWVhZDgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVn
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKQEAgLTE0
Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJlZ2lvbj4gcmVnaW9uOwogICAgIGRlY29k
ZXIgPj4gcmVnaW9uOwogICAgIGlmICghcmVnaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZlbnRSZWdpb24gZXZl
bnRSZWdpb247CiAgICAgZXZlbnRSZWdpb24ubV9yZWdpb24gPSBXVEZNb3ZlKCpyZWdpb24pOwpA
QCAtMTUyLDE0ICsxNTIsMTQgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+IEV2ZW50UmVnaW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxSZWdpb24+IHdoZWVsRXZlbnRM
aXN0ZW5lclJlZ2lvbjsKICAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsK
ICAgICBpZiAoIXdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGV2ZW50UmVnaW9u
Lm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hlZWxFdmVudExpc3RlbmVy
UmVnaW9uKTsKIAogICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0
ZW5lclJlZ2lvbjsKICAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJS
ZWdpb247CiAgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgZXZlbnRSZWdpb24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0g
V1RGTW92ZSgqbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbik7CiAjZW5kaWYKQEAg
LTE2OCw3ICsxNjgsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFZlY3RvcjxSZWdpb24+PiB0b3VjaEFj
dGlvblJlZ2lvbnM7CiAgICAgZGVjb2RlciA+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAgaWYg
KCF0b3VjaEFjdGlvblJlZ2lvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBldmVudFJlZ2lvbi5tX3RvdWNoQWN0aW9u
UmVnaW9ucyA9IFdURk1vdmUoKnRvdWNoQWN0aW9uUmVnaW9ucyk7CiAjZW5kaWYKQEAgLTE3Nyw3
ICsxNzcsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFJlZ2lvbj4+IGVkaXRhYmxlUmVn
aW9uOwogICAgIGRlY29kZXIgPj4gZWRpdGFibGVSZWdpb247CiAgICAgaWYgKCFlZGl0YWJsZVJl
Z2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBldmVudFJlZ2lvbi5tX2VkaXRhYmxlUmVnaW9uID0gV1RGTW92ZSgqZWRp
dGFibGVSZWdpb24pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0
aW5nT2JqZWN0cy5jcHAKaW5kZXggYWM1OWUzY2FiZjEzMWZmNjNhZjRkNmU5N2MzYWVkYzY0NDRm
ZDc0YS4uNDI5YzBhOTI2Zjc5YWVhNjI0NTYwYzZhMWVhM2JkMGU1MjkyNjI4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTIyMiw4ICsyMjIs
OCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBoaWdoVmFsdWUoKSBjb25zdCB7IHJldHVybiBM
YXlvdXRVbml0OjptYXgoKTsgfQogICAgIHZvaWQgY29sbGVjdElmTmVlZGVkKGNvbnN0IEludGVy
dmFsVHlwZSYpOwogCi0gICAgTGF5b3V0VW5pdCBuZXh0TG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV4dExvZ2ljYWxCb3R0b20udmFsdWVPcigwKTsgfQotICAgIExheW91dFVuaXQg
bmV4dFNoYXBlTG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNoYXBlTG9naWNh
bEJvdHRvbS52YWx1ZU9yKG5leHRMb2dpY2FsQm90dG9tKCkpOyB9CisgICAgTGF5b3V0VW5pdCBu
ZXh0TG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dExvZ2ljYWxCb3R0b20udmFs
dWVfb3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IG5leHRTaGFwZUxvZ2ljYWxCb3R0b20oKSBjb25z
dCB7IHJldHVybiBtX25leHRTaGFwZUxvZ2ljYWxCb3R0b20udmFsdWVfb3IobmV4dExvZ2ljYWxC
b3R0b20oKSk7IH0KIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPGNvbnN0IFJlbmRlckJsb2NrRmxv
dz4gbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
QmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNl
bGluZUFsaWdubWVudC5jcHAKaW5kZXggYWIyYzA2Mzg1ZmEzNTQ5M2JlMGIwODAwNWE0NjJkNDNk
ZjIwODhhMy4uMjIzZTAyOGYyYTNmNzc3ZDliMjIwYzA5MWEzMmUxYWIwN2MwMzIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmxvZ2lj
YWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5b3V0VW5pdCBHcmlk
QmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQs
IEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IG1hcmdpbiA9
IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBtYXJnaW5V
bmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3ZlckZvckNoaWxkKGNo
aWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQYXJhbGxlbFRv
QmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGlsZC5maXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlT3IoTGF5b3V0VW5pdCgtMSkpIDogTGF5b3V0VW5pdCgtMSkpOwor
ICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQo
Y2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29y
KExheW91dFVuaXQoLTEpKSA6IExheW91dFVuaXQoLTEpKTsKICAgICAvLyBXZSB0YWtlIGJvcmRl
ci1ib3gncyB1bmRlciBlZGdlIGlmIG5vIHZhbGlkIGJhc2VsaW5lLgogICAgIGlmIChiYXNlbGlu
ZSA9PSAtMSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJhc2VsaW5l
QXhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwCmluZGV4IGEyNzBkYjhiZDZmODRjZDc5MGRhZjIxMTc2NjhmNWVjMmRk
MjY2ZmUuLjMxNDI2NTMxZTI5YThlZjQ5MGIyY2EzODRlZDk1NThjNzQ4ZGRiYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0u
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgR3JpZFRyYWNrOjpzZXRCYXNlU2l6ZShMYXlvdXRV
bml0IGJhc2VTaXplKQogCiB2b2lkIEdyaWRUcmFjazo6c2V0R3Jvd3RoTGltaXQoTGF5b3V0VW5p
dCBncm93dGhMaW1pdCkKIHsKLSAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5m
aW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dyb3d0aExpbWl0
Q2FwLnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKKyAgICBtX2dyb3d0aExpbWl0ID0gZ3Jvd3RoTGlt
aXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0LCBtX2dy
b3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAgZW5zdXJlR3Jvd3RoTGlt
aXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogfQogCkBAIC0yMTcsNyArMjE3LDcgQEAgTGF5b3V0
VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxCYXNlU2l6ZShjb25zdCBHcmlk
VHJhY2tTaXplJiB0cmFja1MKIAogICAgIGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGggPSBncmlk
TGVuZ3RoLmxlbmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5pc1NwZWNpZmllZCgpKQotICAg
ICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVu
aXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSwgMCkpOworICAgICAgICByZXR1cm4gdmFs
dWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWlsYWJsZVNw
YWNlKCkudmFsdWVfb3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0cmFja0xlbmd0aC5pc01pbkNv
bnRlbnQoKSB8fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFja0xlbmd0aC5pc01heENvbnRl
bnQoKSk7CiAgICAgcmV0dXJuIDA7CkBAIC0yMzEsNyArMjMxLDcgQEAgTGF5b3V0VW5pdCBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxHcm93dGhMaW1pdChjb25zdCBHcmlkVHJhY2tT
aXplJiB0cmEKIAogICAgIGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGggPSBncmlkTGVuZ3RoLmxl
bmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5pc1NwZWNpZmllZCgpKQotICAgICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWls
YWJsZVNwYWNlKCkudmFsdWVPcigwKSwgMCkpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5n
dGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFs
dWVfb3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0cmFja0xlbmd0aC5pc01pbkNvbnRlbnQoKSB8
fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFja0xlbmd0aC5pc01heENvbnRlbnQoKSk7CiAg
ICAgcmV0dXJuIGluZmluaXR5OwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRlbShjb25zdCBHcmlkU3Bh
biYgc3BhCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4Q29udGVudE9yQXV0b01heFRy
YWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jvd3RoTGltaXQgPSBtX3N0cmF0
ZWd5LT5tYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0pOwogICAgICAgICBpZiAodHJhY2tTaXpl
LmlzRml0Q29udGVudCgpKQotICAgICAgICAgICAgZ3Jvd3RoTGltaXQgPSBzdGQ6Om1pbihncm93
dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRlbnRUcmFja0JyZWFkdGgo
KS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApKSk7CisgICAgICAgICAgICBn
cm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1Np
emUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBhdmFpbGFibGVTcGFjZSgpLnZh
bHVlX29yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0KHN0ZDo6bWF4KHRyYWNr
Lmdyb3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpAQCAtNDg1LDggKzQ4NSw4
IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVudGlhbChjb25zdCBHcmlk
VHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAgICAgaWYgKHRyYWNrMUhhc0luZmluaXRlR3Jv
d3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBvdGVudGlh
bFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0cmFjazJIYXNJbmZpbml0ZUdyb3d0aFBvdGVu
dGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0gdHJhY2sxLT5n
cm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKLSAgICBMYXlv
dXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJh
Y2syLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNrMUxpbWl0ID0gdHJhY2sx
LT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSk7CisgICAg
TGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGltaXRDYXAoKS52YWx1ZV9v
cih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAgIHJldHVybiAodHJhY2sxTGltaXQgLSB0cmFj
azEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0IC0gdHJhY2syLT5iYXNlU2l6ZSgpKTsKIH0K
IApAQCAtNTY2LDE0ICs1NjYsMTQgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JDaGlsZCgKICAgICAgICAg
aWYgKG1heFRyYWNrU2l6ZS5pc0NvbnRlbnRTaXplZCgpIHx8IG1heFRyYWNrU2l6ZS5pc0ZsZXgo
KSB8fCBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byhtYXhUcmFja1NpemUsIGRpcmVjdGlvbikp
CiAgICAgICAgICAgICBncmlkQXJlYUlzSW5kZWZpbml0ZSA9IHRydWU7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGdyaWRBcmVhU2l6ZSArPSB2YWx1ZUZvckxlbmd0aChtYXhUcmFja1NpemUu
bGVuZ3RoKCksIGF2YWlsYWJsZVNpemUudmFsdWVPcigwX2x1KSk7CisgICAgICAgICAgICBncmlk
QXJlYVNpemUgKz0gdmFsdWVGb3JMZW5ndGgobWF4VHJhY2tTaXplLmxlbmd0aCgpLCBhdmFpbGFi
bGVTaXplLnZhbHVlX29yKDBfbHUpKTsKICAgICB9CiAKICAgICBncmlkQXJlYVNpemUgKz0gbV9y
ZW5kZXJHcmlkLT5ndXR0ZXJzU2l6ZShtX2dyaWQsIGRpcmVjdGlvbiwgc3Bhbi5zdGFydExpbmUo
KSwgc3Bhbi5pbnRlZ2VyU3BhbigpLCBhdmFpbGFibGVTaXplKTsKIAogICAgIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6
OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCptX3JlbmRlckdyaWQsIGNoaWxkLCBGb3JDb2x1
bW5zKTsKICAgICBpZiAoZ3JpZEFyZWFJc0luZGVmaW5pdGUpCi0gICAgICAgIHJldHVybiBkaXJl
Y3Rpb24gPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBtYWtlT3B0aW9uYWwoc3RkOjptYXgoY2hp
bGQubWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCksIGdyaWRBcmVhU2l6ZSkpIDogV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IGNoaWxkSW5saW5lRGlyZWN0aW9uID8g
c3RkOjptYWtlX29wdGlvbmFsKHN0ZDo6bWF4KGNoaWxkLm1heFByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpLCBncmlkQXJlYVNpemUpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZ3JpZEFyZWFT
aXplOwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OmNvbXB1dGVHcmlkQ29udGFpbmVySW50cmluc2ljU2l6ZXMoKQogICAgICAgICBtX21heENv
bnRlbnRTaXplICs9IHRyYWNrLmdyb3d0aExpbWl0SXNJbmZpbml0ZSgpID8gdHJhY2suYmFzZVNp
emUoKSA6IHRyYWNrLmdyb3d0aExpbWl0KCk7CiAgICAgICAgIC8vIFRoZSBncm93dGggbGltaXQg
Y2FwcyBtdXN0IGJlIGNsZWFyZWQgbm93IGluIG9yZGVyIHRvIHByb3Blcmx5IHNvcnQKICAgICAg
ICAgLy8gdHJhY2tzIGJ5IGdyb3d0aCBwb3RlbnRpYWwgb24gYW4gZXZlbnR1YWwgIk1heGltaXpl
IFRyYWNrcyIuCi0gICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0Q2FwKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0Q2FwKHN0ZDo6bnVsbG9wdCk7CiAgICAgfQog
fQogCkBAIC03NTIsNyArNzUyLDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG1TdHJhdGVneTo6bG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCYgY2gKICAgICAvLyBJ
ZiB8Y2hpbGR8IGhhcyBhIHJlbGF0aXZlIGxvZ2ljYWwgaGVpZ2h0LCB3ZSBzaG91bGRuJ3QgbGV0
IGl0IG92ZXJyaWRlIGl0cyBpbnRyaW5zaWMgaGVpZ2h0LCB3aGljaCBpcwogICAgIC8vIHdoYXQg
d2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRvIHNldCB0aGUgYmxvY2st
YXhpcyBvdmVycmlkZSBzaXplIHRvIG51bGxvcHQgKG5vIHBvc3NpYmxlIHJlc29sdXRpb24pLgog
ICAgIGlmIChzaG91bGRDbGVhck92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZv
ckNoaWxkKGNoaWxkLCBGb3JSb3dzKSkgewotICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRT
aXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CiAgICAgfQogCkBAIC04
MTYsNyArODE2LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVn
eTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAgICAgICAgICAgIGNvbnN0
IGF1dG8mIHRyYWNrU2l6ZSA9IGFsbFRyYWNrc1t0cmFja1Bvc2l0aW9uXS5jYWNoZWRUcmFja1Np
emUoKTsKICAgICAgICAgICAgIGlmICghdHJhY2tTaXplLmhhc0ZpeGVkTWF4VHJhY2tCcmVhZHRo
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1pblNpemU7Ci0gICAgICAgICAgICBtYXhCcmVh
ZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKS5sZW5ndGgo
KSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgIG1heEJyZWFk
dGggKz0gdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgp
LCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDBfbHUpKTsKICAgICAgICAgfQogICAgICAgICBp
ZiAobWluU2l6ZSA+IG1heEJyZWFkdGgpIHsKICAgICAgICAgICAgIGF1dG8gbWFyZ2luQW5kQm9y
ZGVyQW5kUGFkZGluZyA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6Om1hcmdpbkxvZ2ljYWxTaXplRm9y
Q2hpbGQoKnJlbmRlckdyaWQoKSwgZGlyZWN0aW9uKCksIGNoaWxkKTsKQEAgLTkxNCwxMSArOTE0
LDExIEBAIExheW91dFVuaXQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pbkxv
Z2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjCiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJl
RGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIEZvckNvbHVtbnMpOwogICAg
IGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uKCkgPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb247CiAg
ICAgaWYgKGlzUm93QXhpcykKLSAgICAgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsV2lk
dGhJbkZyYWdtZW50VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBhdmFpbGFibGVTaXplLnZh
bHVlT3IoMCksICpyZW5kZXJHcmlkKCksIG51bGxwdHIpICsgR3JpZExheW91dEZ1bmN0aW9uczo6
bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZElubGluZURpcmVj
dGlvbiwgY2hpbGQpOworICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aElu
RnJhZ21lbnRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIGF2YWlsYWJsZVNpemUudmFsdWVf
b3IoMCksICpyZW5kZXJHcmlkKCksIG51bGxwdHIpICsgR3JpZExheW91dEZ1bmN0aW9uczo6bWFy
Z2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZElubGluZURpcmVjdGlv
biwgY2hpbGQpOwogICAgIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCA9IHVwZGF0ZU92ZXJy
aWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZElubGlu
ZURpcmVjdGlvbiwgYXZhaWxhYmxlU2l6ZSk7CiAgICAgbGF5b3V0R3JpZEl0ZW1Gb3JNaW5TaXpl
Q29tcHV0YXRpb24oY2hpbGQsIG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQpOwogICAgIEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBjaGlsZEJsb2NrRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9u
czo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIEZvclJv
d3MpOwotICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1pblNpemUs
IGNoaWxkTWluU2l6ZSwgV1RGOjpudWxsb3B0KS52YWx1ZU9yKDApICsgR3JpZExheW91dEZ1bmN0
aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZEJsb2Nr
RGlyZWN0aW9uLCBjaGlsZCk7CisgICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0
VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBzdGQ6Om51bGxvcHQpLnZhbHVlX29yKDApICsg
R3JpZExheW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3Jp
ZCgpLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBjaGlsZCk7CiB9CiAKIGNsYXNzIEluZGVmaW5pdGVT
aXplU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRl
Z3kgewpAQCAtOTk4LDggKzk5OCw4IEBAIGJvb2wgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6cmVj
b21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0CiAKICAgICBj
b25zdCBSZW5kZXJHcmlkKiByZW5kZXJHcmlkID0gdGhpcy0+cmVuZGVyR3JpZCgpOwogCi0gICAg
YXV0byBtaW5TaXplID0gcmVuZGVyR3JpZC0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1p
blNpemUsIHJlbmRlckdyaWQtPnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLCBXVEY6Om51bGxv
cHQpOwotICAgIGF1dG8gbWF4U2l6ZSA9IHJlbmRlckdyaWQtPmNvbXB1dGVDb250ZW50TG9naWNh
bEhlaWdodChNYXhTaXplLCByZW5kZXJHcmlkLT5zdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKSwg
V1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIG1pblNpemUgPSByZW5kZXJHcmlkLT5jb21wdXRlQ29u
dGVudExvZ2ljYWxIZWlnaHQoTWluU2l6ZSwgcmVuZGVyR3JpZC0+c3R5bGUoKS5sb2dpY2FsTWlu
SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBtYXhTaXplID0gcmVuZGVyR3JpZC0+
Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIHJlbmRlckdyaWQtPnN0eWxlKCku
bG9naWNhbE1heEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgLy8gUmVkbyB0aGUgZmxl
eCBmcmFjdGlvbiBjb21wdXRhdGlvbiB1c2luZyBtaW58bWF4LWhlaWdodCBhcyBkZWZpbml0ZSBh
dmFpbGFibGUgc3BhY2UgaW4gY2FzZQogICAgIC8vIHRoZSB0b3RhbCBoZWlnaHQgaXMgc21hbGxl
ciB0aGFuIG1pbi1oZWlnaHQgb3IgbGFyZ2VyIHRoYW4gbWF4LWhlaWdodC4KQEAgLTEwMTEsNyAr
MTAxMSw3IEBAIGJvb2wgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6cmVjb21wdXRlVXNlZEZsZXhG
cmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0CiAKICAgICBMYXlvdXRVbml0IGZyZWVT
cGFjZSA9IGNoZWNrTWF4U2l6ZSA/IG1heFNpemUudmFsdWUoKSA6IC0xX2x1OwogICAgIGNvbnN0
IEdyaWQmIGdyaWQgPSBtX2FsZ29yaXRobS5ncmlkKCk7Ci0gICAgZnJlZVNwYWNlID0gc3RkOjpt
YXgoZnJlZVNwYWNlLCBtaW5TaXplLnZhbHVlT3IoMF9sdSkpIC0gcmVuZGVyR3JpZC0+Z3V0dGVy
c1NpemUoZ3JpZCwgRm9yUm93cywgMCwgZ3JpZC5udW1UcmFja3MoRm9yUm93cyksIGF2YWlsYWJs
ZVNwYWNlKCkpOworICAgIGZyZWVTcGFjZSA9IHN0ZDo6bWF4KGZyZWVTcGFjZSwgbWluU2l6ZS52
YWx1ZV9vcigwX2x1KSkgLSByZW5kZXJHcmlkLT5ndXR0ZXJzU2l6ZShncmlkLCBGb3JSb3dzLCAw
LCBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSwgYXZhaWxhYmxlU3BhY2UoKSk7CiAKICAgICBzaXpl
X3QgbnVtYmVyT2ZUcmFja3MgPSBtX2FsZ29yaXRobS50cmFja3MoRm9yUm93cykuc2l6ZSgpOwog
ICAgIGZsZXhGcmFjdGlvbiA9IGZpbmRGclVuaXRTaXplKEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVm
aW5pdGVHcmlkU3BhbigwLCBudW1iZXJPZlRyYWNrcyksIGZyZWVTcGFjZSk7CkBAIC0xMDQwLDcg
KzEwNDAsNyBAQCBMYXlvdXRVbml0IEluZGVmaW5pdGVTaXplU3RyYXRlZ3k6OmZyZWVTcGFjZUZv
clN0cmV0Y2hBdXRvVHJhY2tzU3RlcCgpIGNvbnN0CiAgICAgaWYgKGRpcmVjdGlvbigpID09IEZv
ckNvbHVtbnMpCiAgICAgICAgIHJldHVybiAwX2x1OwogCi0gICAgYXV0byBtaW5TaXplID0gcmVu
ZGVyR3JpZCgpLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWluU2l6ZSwgcmVuZGVyR3Jp
ZCgpLT5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRv
IG1pblNpemUgPSByZW5kZXJHcmlkKCktPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNaW5T
aXplLCByZW5kZXJHcmlkKCktPnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLCBzdGQ6Om51bGxv
cHQpOwogICAgIGlmICghbWluU2l6ZSkKICAgICAgICAgcmV0dXJuIDBfbHU7CiAgICAgcmV0dXJu
IG1pblNpemUudmFsdWUoKSAtIGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpOwpAQCAtMTA1MSw3ICsx
MDUxLDcgQEAgTGF5b3V0VW5pdCBEZWZpbml0ZVNpemVTdHJhdGVneTo6bWluTG9naWNhbFNpemVG
b3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdAogICAgIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmZsb3dBd2Fy
ZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBGb3JDb2x1bW5zKTsKICAg
ICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0aW9uID0gR3JpZExheW91
dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hp
bGQsIGRpcmVjdGlvbigpKTsKICAgICBpZiAoaGFzUmVsYXRpdmVNYXJnaW5PclBhZGRpbmdGb3JD
aGlsZChjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSB8fCAoZGlyZWN0aW9uKCkgIT0gY2hpbGRJ
bmxpbmVEaXJlY3Rpb24gJiYgaGFzUmVsYXRpdmVPckludHJpbnNpY1NpemVGb3JDaGlsZChjaGls
ZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSkpIHsKLSAgICAgICAgYXV0byBpbmRlZmluaXRlU2l6ZSA9
IGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0aW9uID8gbWFrZU9wdGlvbmFsKDBfbHUp
IDogV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIGluZGVmaW5pdGVTaXplID0gZGlyZWN0aW9u
KCkgPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoMF9sdSkgOiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24oKSwgaW5kZWZpbml0ZVNpemUpOwogICAgIH0K
ICAgICByZXR1cm4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRlZ3k6Om1pbkxvZ2ljYWxT
aXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZSk7CkBAIC0xMTE5
LDcgKzExMTksNyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbGl6ZVRy
YWNrU2l6ZXMoKQogCiAgICAgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyht
X2RpcmVjdGlvbik7CiAgICAgY29uc3QgYm9vbCBpbmRlZmluaXRlSGVpZ2h0ID0gbV9kaXJlY3Rp
b24gPT0gRm9yUm93cyAmJiAhbV9yZW5kZXJHcmlkLT5oYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQo
KTsKLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heCgwX2x1LCBhdmFpbGFibGVTcGFj
ZSgpLnZhbHVlT3IoMF9sdSkpOworICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KDBf
bHUsIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOwogICAgIC8vIDEuIEluaXRpYWxp
emUgcGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBhbGxUcmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9IGFs
bFRyYWNrc1tpXTsKQEAgLTEzMDYsNyArMTMwNiw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCB1bnNpZ25l
CiAgICAgICAgIExheW91dFVuaXQgZ3V0dGVyc1NpemUgPSBtX3JlbmRlckdyaWQtPmd1dHRlcnNT
aXplKG1fZ3JpZCwgZGlyZWN0aW9uLCAwLCBtX2dyaWQubnVtVHJhY2tzKGRpcmVjdGlvbiksIHRo
aXMtPmF2YWlsYWJsZVNwYWNlKGRpcmVjdGlvbikpOwogICAgICAgICBzZXRGcmVlU3BhY2UoZGly
ZWN0aW9uLCAqYXZhaWxhYmxlU3BhY2UgLSBndXR0ZXJzU2l6ZSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHNldEZyZWVTcGFjZShkaXJlY3Rpb24sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHNldEZy
ZWVTcGFjZShkaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgdHJhY2tzKGRpcmVjdGlvbiku
cmVzaXplKG51bVRyYWNrcyk7CiAKICAgICBtX25lZWRzU2V0dXAgPSBmYWxzZTsKQEAgLTEzNzks
OCArMTM3OSw4IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpyZXNldCgpCiAgICAg
bV9jb250ZW50U2l6ZWRUcmFja3NJbmRleC5zaHJpbmsoMCk7CiAgICAgbV9mbGV4aWJsZVNpemVk
VHJhY2tzSW5kZXguc2hyaW5rKDApOwogICAgIG1fYXV0b1NpemVkVHJhY2tzRm9yU3RyZXRjaElu
ZGV4LnNocmluaygwKTsKLSAgICBzZXRBdmFpbGFibGVTcGFjZShGb3JSb3dzLCBXVEY6Om51bGxv
cHQpOwotICAgIHNldEF2YWlsYWJsZVNwYWNlKEZvckNvbHVtbnMsIFdURjo6bnVsbG9wdCk7Cisg
ICAgc2V0QXZhaWxhYmxlU3BhY2UoRm9yUm93cywgc3RkOjpudWxsb3B0KTsKKyAgICBzZXRBdmFp
bGFibGVTcGFjZShGb3JDb2x1bW5zLCBzdGQ6Om51bGxvcHQpOwogICAgIG1faGFzUGVyY2VudFNp
emVkUm93c0luZGVmaW5pdGVIZWlnaHQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCmluZGV4IDZiNzk3ZWE4
Nzg1NDA5ZGRlYjE4YTA1OWY0MTYwZDU1ZDY1ZDU4ZmYuLjNlZDA1ZTRmZDVkODI5YTQxNTBkZTk1
MDkxYzNiMGIzMmJhZDJlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9H
cmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6ZUNvbXB1dGF0aW9uKFJl
bmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29uc3QgPSAwOwogCiAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JikgY29uc3Q7Ci0gICAg
Ym9vbCB1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChS
ZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlvbmFsPExheW91dFVuaXQ+
ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHVwZGF0ZU92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAg
ICAgLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFjY2Vzc29ycyBmb3Igc3ViY2xhc3Nlcy4K
ICAgICBMYXlvdXRVbml0IGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxnb3JpdGhtLmNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggMmJjMTlkMWU0
ZGFlNjAwNGIzNTIwNDhhMDRhNWZmMWExYjEwOWExYS4uODlhYmNhOWE0ZjEwNGQ0NTU3ODI4N2Q5
MWQ4NzhiNWIwNjZkYWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIE9wdGlvbmFsPElu
dGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjppbnRlcnBvbGF0aW9u
UXVhbGl0eUZyb21TCiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZzo6QXV0bzoKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogSW50ZXJwb2xhdGlvblF1YWxpdHkgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVy
LCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5o
CmluZGV4IDhlOTljOTQxMmVjNDA0NjM1MzcxNzZmZGU0MmZiM2NmMWRiZGUxZDAuLmQ2NGM3MjM0
NTJmYzM3YjczN2FjOWEwODFmOWJmMTcyOGFkNWYyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlUGFyZW50Q2hpbGRMaXN0KCk7CiAjZW5kaWYKIAotICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVz
dGluZyhPcHRpb25hbDxIaXRUZXN0UmVxdWVzdD4gaGl0VGVzdFJlcXVlc3QgPSBXVEY6Om51bGxv
cHQpIGNvbnN0CisgICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKE9wdGlvbmFsPEhpdFRlc3RS
ZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZp
c2libGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggM2IxNzRmYmRiZTNiMDY4OGU2NmRjMDU4ZDk4ZGMy
YTRjN2ZjZDcxOS4uNWE3NDkyNjA3NGJkMWMxMjcyNmY3MGFiMTMzNjNhY2VmYTRlNTNhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMzk2LDcgKzM5
Niw3IEBAIE9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0Fu
ZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0CiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBy
ZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHRleHQgZW1waGFzaXMgbWFya3MgYW5kIHRoZXkgYXJl
IHN1cHByZXNzZWQgYnkgcnVieSB0ZXh0LgogICAgIGlmIChzdHlsZS50ZXh0RW1waGFzaXNNYXJr
KCkgPT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IE9wdGlvblNldDxU
ZXh0RW1waGFzaXNQb3NpdGlvbj4gaG9yaXpvbnRhbE1hc2sgeyBUZXh0RW1waGFzaXNQb3NpdGlv
bjo6TGVmdCwgVGV4dEVtcGhhc2lzUG9zaXRpb246OlJpZ2h0IH07CiAKQEAgLTQyOCw3ICs0Mjgs
NyBAQCBPcHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94OjplbXBoYXNpc01hcmtFeGlzdHNBbmRJ
c0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdAogCiAgICAgLy8gVGhlIGVtcGhhc2lzIG1hcmtz
IG92ZXIgYXJlIHN1cHByZXNzZWQgb25seSBpZiB0aGVyZSBpcyBhIHJ1YnkgdGV4dCBib3ggYW5k
IGl0IG5vdCBlbXB0eS4KICAgICBpZiAocnVieVRleHQgJiYgcnVieVRleHQtPmhhc0xpbmVzKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gaXNBYm92ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludElu
Zm8uaAppbmRleCA0ZGI1YTQ3YzEwNTJjN2QyZTkwYWZiOTk3MGM2MzdiNDNkZmFkYmQ4Li41MWVm
NDFkY2ZkNWU1ZDEyYTlhYjU2ZGJmYjUyNDQwYzg1MGNkNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1BhaW50SW5mby5oCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAg
ICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKKyAgICAg
ICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOwogICAgICAg
ICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3JtZWRSZWN0LmxvY2F0aW9uKCkp
KTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJhbmZvcm1lZFJlY3Quc2l6ZSgp
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXgg
N2ZmZmU2YmMwYmEyZjM1YjNhMTU5MzhlZTVlOWQ1ZWQ0MTEwMmVkNS4uNzEwYzEwMWYyM2QxZDA2
ODg4ZmNhM2Y0MjM0Yjc0ZTcyMWI5NGY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC0yNTc5LDcgKzI1NzksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2Nr
OjptaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlv
dQogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKIHsKICAgICBpZiAoc2hvdWxkQXBwbHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAg
IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwpAQCAtMjc1MSw3ICsyNzUxLDcgQEAgYm9v
bCBSZW5kZXJCbG9jazo6Y2FjaGVkRW5jbG9zaW5nRnJhZ21lbnRlZEZsb3dOZWVkc1VwZGF0ZSgp
IGNvbnN0CiB2b2lkIFJlbmRlckJsb2NrOjpzZXRDYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxv
d05lZWRzVXBkYXRlKCkKIHsKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhJiByYXJlRGF0YSA9IGVu
c3VyZUJsb2NrUmFyZURhdGEoKnRoaXMpOwotICAgIHJhcmVEYXRhLm1fZW5jbG9zaW5nRnJhZ21l
bnRlZEZsb3cgPSBXVEY6Om51bGxvcHQ7CisgICAgcmFyZURhdGEubV9lbmNsb3NpbmdGcmFnbWVu
dGVkRmxvdyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVuZGVyRnJhZ21lbnRlZEZsb3cqIFJlbmRl
ckJsb2NrOjp1cGRhdGVDYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxvdyhSZW5kZXJGcmFnbWVu
dGVkRmxvdyogZnJhZ21lbnRlZEZsb3cpIGNvbnN0CkBAIC0zMjQ0LDcgKzMyNDQsNyBAQCBPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdodEZvclBl
cmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBvdmVycmlkaW5n
Q29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICBlbHNlIGlmIChzdHlsZVRvVXNlLmxvZ2ljYWxI
ZWlnaHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0
ID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoKExheW91dFVuaXQp
c3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAgICAgIGF2YWlsYWJsZUhl
aWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoY29udGVudEJveEhlaWdodCAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgV1RGOjpu
dWxsb3B0KSk7CisgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnN0
cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAtIHNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KSk7CiAgICAgfSBlbHNlIGlmIChz
aG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygpKSB7CiAgICAgICAgIGF2
YWlsYWJsZUhlaWdodCA9IGJsb2NrU2l6ZUZyb21Bc3BlY3RSYXRpbyhob3Jpem9udGFsQm9yZGVy
QW5kUGFkZGluZ0V4dGVudCgpLCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgTGF5
b3V0VW5pdChzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpKSwgc3R5bGUoKS5ib3hTaXppbmdG
b3JBc3BlY3RSYXRpbygpLCBsb2dpY2FsV2lkdGgoKSk7CiAgICAgfSBlbHNlIGlmIChpc091dE9m
Rmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CkBAIC0zMjYwLDcgKzMyNjAsNyBA
QCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBtaW4v
bWF4IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVyIGRvZXMuIFNvIHRoZQogICAgICAg
ICAgICAgLy8gcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpbGwgbm90IGhh
dmUgYmVlbiBhZGp1c3RlZAogICAgICAgICAgICAgLy8geWV0LgotICAgICAgICAgICAgTGF5b3V0
VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRC
eU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudEJv
eEhlaWdodCA9IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVu
dEJveEhlaWdodFdpdGhTY3JvbGxiYXIgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCksIHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBzdGQ6Om1heCgwX2x1LCBj
b250ZW50Qm94SGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXNSZW5kZXJWaWV3
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4
IDE0YWJmNmJlYmRjYTljMDI5YWVkNTBlODdkMTcyNzViMzUzMjU0NTIuLjYyZGU0MTY1YjYxM2Vj
M2NmMDkzOGRkMWMwN2NmNTljYzQxNDFlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMTMzLDE2ICszMTMzLDE2IEBAIHZvaWQgUmVuZGVy
QmxvY2tGbG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExheW91dFVuCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAh
aXNSdWJ5UnVuKCkgJiYgIWlzR3JpZEl0ZW0oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChzaG91bGRBcHBseUxh
eW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkK
ICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogCiAgICAg
aWYgKCFoYXNMaW5lcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAgICAgaWYgKG1vZGVybkxpbmVMYXlvdXQoKSkKQEAgLTMxNTgsNyArMzE1OCw3IEBAIE9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYg
KGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHNob3Vs
ZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQogICAgICAgICByZXR1cm4gUmVuZGVyQmxv
Y2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbik7CkBAIC0zMTY4LDcgKzMxNjgs
NyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZQogICAgICAgICAvLyBwcm9wZXJ0eSBoYXMgYSBj
b21wdXRlZCB2YWx1ZSBvdGhlciB0aGFuICd2aXNpYmxlJy4gc2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9DU1MyMi92aXN1ZGV0Lmh0bWwKICAgICAgICAgYXV0byBzaG91bGRTeW50aGVzaXplQmFz
ZWxpbmUgPSAhc3R5bGUoKS5pc092ZXJmbG93VmlzaWJsZSgpICYmICFpczxIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PihlbGVtZW50KCkpOwogICAgICAgICBpZiAoc2hvdWxkU3ludGhlc2l6ZUJhc2Vs
aW5lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIC8vIE5vdGUgdGhhdCBoZXJlIHdlIG9ubHkgdGFr
ZSB0aGUgbGVmdCBhbmQgYm90dG9tIGludG8gY29uc2lkZXJhdGlvbi4gT3VyIGNhbGxlciB0YWtl
cyB0aGUgcmlnaHQgYW5kIHRvcCBpbnRvIGNvbnNpZGVyYXRpb24uCiAgICAgZmxvYXQgYm94SGVp
Z2h0ID0gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKnRoaXMsIGxpbmVEaXJlY3Rp
b24pICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtX21hcmdpbkJveC5ib3R0
b20oKSA6IG1fbWFyZ2luQm94LmxlZnQoKSk7CkBAIC0zMTgxLDcgKzMxODEsNyBAQCBPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUgbGluZQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghaGFzTGluZXMoKSkg
ewogICAgICAgICAgICAgaWYgKCFoYXNMaW5lSWZFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5bGUoKS5m
b250TWV0cmljcygpOwogICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBMYXlvdXRVbml0
KGZvbnRNZXRyaWNzLmFzY2VudCgpCiAgICAgICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVl
LCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkpIC8gMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oCmluZGV4IGM3Yzk0NmJhZmQ4MTVhNDc0ZDcyMzg4Yjc3ZTIyMzg5ZjQ0NmNjYzQuLjZhNDJh
YWFkNDFjNTVkNDVhNTMxYmE1YTAwZjYwNTEwYWVhM2NiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBwdWJsaWM6CiAg
ICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93KiBtdWx0aUNvbHVtbkZsb3dTbG93Q2FzZSgpIGNvbnN0
OwogICAgIHZvaWQgc2V0TXVsdGlDb2x1bW5GbG93KFJlbmRlck11bHRpQ29sdW1uRmxvdyYpOwog
ICAgIHZvaWQgY2xlYXJNdWx0aUNvbHVtbkZsb3coKTsKLSAgICBib29sIHdpbGxDcmVhdGVDb2x1
bW5zKE9wdGlvbmFsPHVuc2lnbmVkPiBkZXNpcmVkQ29sdW1uQ291bnQgPSBXVEY6Om51bGxvcHQp
IGNvbnN0OworICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMoT3B0aW9uYWw8dW5zaWduZWQ+IGRl
c2lyZWRDb2x1bW5Db3VudCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29s
IHJlcXVpcmVzQ29sdW1ucyhpbnQpIGNvbnN0OwogCiAgICAgYm9vbCBjb250YWluc0Zsb2F0cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5n
T2JqZWN0cy0+c2V0KCkuaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCmluZGV4IDM4MjU5Mjc3NzNjY2ZhY2NlNTc4ZjVmNjk4YTdjNmJmZWIzZTNhZDguLmRi
YTg4ODZiOWM2YjQxZjhhNDM0ZGEyOWM3MWFjMmQzZWQ5ZjZhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMDQzLDcgKzIwNDMsNyBAQCBMYXlvdXRVbml0IFJl
bmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhMYXlvdXRVbml0IGNoaWxk
TWFyZ2luU3RhcgogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKSBjb25zdAogewogICAgIGlmIChoYXNPdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKS52YWx1ZU9yKDBfbHUpOworICAgICAg
ICByZXR1cm4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKS52
YWx1ZV9vcigwX2x1KTsKIAogICAgIGlmIChSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxv
Y2soKSkKICAgICAgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKQEAgLTIw
NTQsNyArMjA1NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250YWluaW5nQmxvY2tMb2dp
Y2FsSGVpZ2h0Rm9yQ29udGVudChBdmFpbGFibGVMb2dpY2FsSGVpCiB7CiAgICAgaWYgKGhhc092
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBDb250YWluaW5nIGJsb2NrIGZvciBhIGdyaWQgaXRlbSBpcyB0aGUgZ3JpZCBh
cmVhIGl0J3MgbG9jYXRlZCBpbi4gV2UgbmVlZCB0byByZXR1cm4gd2hhdGV2ZXIKLSAgICAgICAg
Ly8gaGVpZ2h0IHZhbHVlIHdlIGdldCBmcm9tIG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250
ZW50TG9naWNhbEhlaWdodCgpIGhlcmUsIGluY2x1ZGluZyBXVEY6Om51bGxvcHQuCisgICAgICAg
IC8vIGhlaWdodCB2YWx1ZSB3ZSBnZXQgZnJvbSBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudExvZ2ljYWxIZWlnaHQoKSBoZXJlLCBpbmNsdWRpbmcgc3RkOjpudWxsb3B0LgogICAgICAg
ICBpZiAoYXV0byBoZWlnaHQgPSBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQudmFsdWUoKTsKICAgICB9CkBA
IC0yNDI4LDcgKzI0MjgsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJCb3g6OmNvbXB1
dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmCiAgICAgICAgIGJvb2wg
aXNFbXB0eSA9ICFjb250YWluZXJCb3guYXBwbHlDYWNoZWRDbGlwQW5kU2Nyb2xsUG9zaXRpb24o
YWRqdXN0ZWRSZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogICAgICAgICBpZiAoaXNFbXB0eSkg
ewogICAgICAgICAgICAgaWYgKGNvbnRleHQub3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENv
bnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24pKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIHJldHVybiBhZGp1c3RlZFJlY3Q7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yOTU2LDcgKzI5NTYsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaQogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoaW50cmluc2ljSGVpZ2h0KQogICAgICAg
ICAgICAgICAgICAgICAqaW50cmluc2ljSGVpZ2h0IC09IGJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gY29tcHV0ZUxvZ2ljYWxI
ZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKSwg
aW50cmluc2ljSGVpZ2h0KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKKyAgICAg
ICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKE1haW5P
clByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRyaW5zaWNIZWlnaHQp
LnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChoZWln
aHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDA3LDE0
ICszMDA3LDE0IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjCiB7CiAgICAgaWYgKE9wdGlvbmFs
PExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxv
Z2ljYWxIZWlnaHRVc2luZyhoZWlnaHRUeXBlLCBoZWlnaHQsIGludHJpbnNpY0NvbnRlbnRIZWln
aHQpKQogICAgICAgICByZXR1cm4gYWRqdXN0Qm9yZGVyQm94TG9naWNhbEhlaWdodEZvckJveFNp
emluZyhsb2dpY2FsSGVpZ2h0LnZhbHVlKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVy
Qm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodEluY2x1
ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVz
aW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhl
aWdodEZvckJveFNpemluZyhoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIpIC0gc2Nyb2xsYmFyTG9n
aWNhbEhlaWdodCgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxvZ2ljYWxIZWlnaHRMZW5n
dGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRIZWlnaHQsIExheW91dFVu
aXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKQEAgLTMwMzUsNyArMzAzNSw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVp
Z2h0VXNpbmcoTGVuZ3RoCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVD
b250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUs
IGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250
ZW50SGVpZ2h0KSBjb25zdAogewogICAgIGlmIChoZWlnaHQuaXNBdXRvKCkpCi0gICAgICAgIHJl
dHVybiBoZWlnaHRUeXBlID09IE1pblNpemUgPyBPcHRpb25hbDxMYXlvdXRVbml0PigwKSA6IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IE9wdGlv
bmFsPExheW91dFVuaXQ+KDApIDogc3RkOjpudWxsb3B0OwogICAgIC8vIEZJWE1FOiBUaGUgQ1NT
IHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQgbWluLWNvbnRlbnQvbWF4
LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8uCiAgICAgLy8gSWYgdGhhdCBoYXBwZW5zLCB0aGlz
IGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICBpZiAoaGVpZ2h0LmlzSW50cmluc2ljKCkg
fHwgaGVpZ2h0LmlzTWluSW50cmluc2ljKCkpCkBAIC0zMDQ0LDcgKzMwNDQsNyBAQCBPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNh
bEhlaWdodFVzaW5nKFNpegogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChoZWlnaHQudmFsdWUo
KSk7CiAgICAgaWYgKGhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBSZW5kZXJC
b3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2FsY3VsYXRpb24oY29uc3Qg
UmVuZGVyQm94JiBjb250YWluaW5nQmxvY2ssIGJvb2wgaXNQZXJwZW5kaWN1bGFyV3JpdGluZ01v
ZGUpIGNvbnN0CkBAIC0zMTMxLDcgKzMxMzEsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgmIGhlaQog
ICAgICAgICAgICAgLy8gZG9uJ3QgY2FyZSBpZiB0aGUgY2VsbCBzcGVjaWZpZWQgYSBoZWlnaHQg
b3Igbm90LiBXZSBqdXN0IGFsd2F5cyBtYWtlIG91cnNlbHZlcwogICAgICAgICAgICAgLy8gYmUg
YSBwZXJjZW50YWdlIG9mIHRoZSBjZWxsJ3MgY3VycmVudCBjb250ZW50IGhlaWdodC4KICAgICAg
ICAgICAgIGlmICghY2ItPmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlhbFNpemUoKmNiLCAqdGhp
cywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxTaG91bGRIYXZlWmVyb0lu
aXRpYWxTaXplKCpjYiwgKnRoaXMsIHNjcm9sbHNPdmVyZmxvd1koKSkgPyBPcHRpb25hbDxMYXlv
dXRVbml0PigwKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0
ID0gY2ItPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5n
QmVmb3JlKCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSAtIGNiLT5ib3JkZXJCZWZv
cmUoKSAtIGNiLT5ib3JkZXJBZnRlcigpOwogICAgICAgICB9CkBAIC0zMjc0LDcgKzMyNzQsNyBA
QCBib29sIFJlbmRlckJveDo6cmVwbGFjZWRNaW5NYXhMb2dpY2FsSGVpZ2h0Q29tcHV0ZXNBc05v
bmUoU2l6ZVR5cGUgc2l6ZVR5cGUpIGNvbgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICBpZiAobG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSAmJiBoYXNPdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJu
IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodCgpID09IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIE1ha2Ugc3VyZSAlIG1p
bi1oZWlnaHQgYW5kICUgbWF4LWhlaWdodCByZXNvbHZlIHRvIG5vbmUgaWYgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaGFzIGF1dG8gaGVpZ2h0LgogICAgIC8vIE5vdGUgdGhhdCB0aGUgImhlaWdodCIg
Y2FzZSBmb3IgcmVwbGFjZWQgZWxlbWVudHMgd2FzIGhhbmRsZWQgYnkgaGFzUmVwbGFjZWRMb2dp
Y2FsSGVpZ2h0LCB3aGljaCBpcyB3aHkKQEAgLTMzNzksNyArMzM3OSw3IEBAIExheW91dFVuaXQg
UmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVp
Z2h0VHlwZSwgTGVuCiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVp
Z2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoYXZhaWxhYmxl
TG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBoZWlnaHRUeXBlKSwg
V1RGOjpudWxsb3B0KTsKKyAgICByZXR1cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWln
aHRCeU1pbk1heChhdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsSGVp
Z2h0KCksIGhlaWdodFR5cGUpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBMYXlvdXRVbml0IFJlbmRl
ckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxh
YmxlTG9naWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKQEAgLTM0MDUsNyArMzQwNSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29u
c3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpCiAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50
Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChoLCBhdmFpbGFibGVI
ZWlnaHQpKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5j
bHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0
VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgV1RGOjpudWxsb3B0KSkKKyAgICBpZiAoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRl
bnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwg
c3RkOjpudWxsb3B0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Nj
cm9sbGJhcikgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwogCiAgICAgLy8gRklYTUU6IENo
ZWNrIGxvZ2ljYWxUb3AvbG9naWNhbEJvdHRvbSBoZXJlIHRvIGNvcnJlY3RseSBoYW5kbGUgdmVy
dGljYWwgd3JpdGluZy1tb2RlLgpAQCAtNDg1MCw3ICs0ODUwLDcgQEAgYm9vbCBSZW5kZXJCb3g6
OnBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlKCkgY29uc3QKICAgICAvLyBEbyB0
aGlzIHRvIGF2b2lkIGR1cGxpY2F0aW5nIGFsbCB0aGUgbG9naWMgdGhhdCBhbHJlYWR5IGV4aXN0
cyB3aGVuIGNvbXB1dGluZwogICAgIC8vIGFuIGFjdHVhbCBwZXJjZW50YWdlIGhlaWdodC4KICAg
ICBMZW5ndGggZmFrZUxlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNlbnQpOwotICAgIHJldHVy
biBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoZmFrZUxlbmd0aCkgIT0gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoZmFrZUxlbmd0
aCkgIT0gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckJveDo6aGFzVW5zcGxpdHRhYmxl
U2Nyb2xsaW5nT3ZlcmZsb3coKSBjb25zdApAQCAtNTE4MSw4ICs1MTgxLDggQEAgTGF5b3V0VW5p
dCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oUmVuZGVyRnJh
Z21lbnRDb250YWluZXIKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PiBSZW5kZXJC
b3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0aW8oKSBjb25zdAogewog
ICAgIGF1dG8gcmF0aW8gPSBMYXlvdXRVbml0IHsgc3R5bGUoKS5sb2dpY2FsQXNwZWN0UmF0aW8o
KSB9OwotICAgIExheW91dFVuaXQgYmxvY2tNaW5TaXplID0gY29uc3RyYWluTG9naWNhbEhlaWdo
dEJ5TWluTWF4KExheW91dFVuaXQoKSwgV1RGOjpudWxsb3B0KTsKLSAgICBMYXlvdXRVbml0IGJs
b2NrTWF4U2l6ZSA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0Ojpt
YXgoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBMYXlvdXRVbml0IGJsb2NrTWluU2l6ZSA9IGNvbnN0
cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0KCksIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgTGF5b3V0VW5pdCBibG9ja01heFNpemUgPSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlNaW5N
YXgoTGF5b3V0VW5pdDo6bWF4KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgTGF5b3V0VW5pdCB0cmFu
c2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0VW5pdCB0cmFuc2ZlcnJl
ZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKICAgICBpZiAoYmxvY2tNaW5TaXplID4gTGF5
b3V0VW5pdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGRmYWMwMDli
YmE0NjQwYTBkMjBmZGRmZGJmZGFmNWY3MDdlZDJiYWUuLjFkZDY4ODg0MWZmMWEzMjI0MjYyYTQz
YThlYWQzODdhMTYxYzU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTQ1Miw3ICs0NTIsNyBAQCBvdmVycmlkZTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBMYXlv
dXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0aW5nTWluTWF4SGVpZ2h0
KFQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoTGF5b3V0VW5pdChsb2dpY2FsSGVpZ2h0KSk7IH0K
IAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hv
dWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdDsKLSAgICB2aXJ0dWFs
IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChPcHRpb25hbDxMYXlvdXRV
bml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91
dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBl
bnVtIGNsYXNzIFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50cyB7IFllcyAsIE5vIH07
CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0
KGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHMg
PSBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHM6OlllcykgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAx
NDNhMzU5Y2JhZTg4ZTNlM2M2YjNjNmE3YzczNWJjZmZjNTVlNGU3Li44NzExYmI5NWVlM2RjNjc5
NDdlMzI5NzFiMWJlOWViN2VlYjJjMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI3OSw3ICsyNzksNyBAQCBib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0
b0hlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICBpZiAodGhp
c0JveCAmJiB0aGlzQm94LT5pc0dyaWRJdGVtKCkgJiYgdGhpc0JveC0+aGFzT3ZlcnJpZGluZ0Nv
bnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgIHJldHVybiB0aGlz
Qm94LT5vdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA9PSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB0aGlzQm94LT5vdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA9PSBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
aWYgKGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25l
ZFdpdGhJbXBsaWNpdEhlaWdodCgqdGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg5
LDcgKzI4OSw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omhhc0F1dG9IZWlnaHRPckNv
bnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVpZ2h0KCkgY29uc3QKICAgICBpZiAoIWNiIHx8IChkb2N1
bWVudCgpLmluUXVpcmtzTW9kZSgpICYmICFjYi0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJl
Y2F0ZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodGhpc0JveCAmJiB0aGlz
Qm94LT5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkK
LSAgICAgICAgcmV0dXJuIHRoaXNCb3gtPm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodCgpID09IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRoaXNCb3gt
Pm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gIWNiLT5oYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKTsKIH0K
IApAQCAtMzQ4LDcgKzM0OCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJl
bGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dn
Lm9yZy9jc3MtZ3JpZC8jZ3JpZC1pdGVtLXNpemluZwogICAgIGlmICghc3R5bGUoKS5sZWZ0KCku
aXNBdXRvKCkgfHwgIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSkgewogICAgICAgICBMYXlvdXRV
bml0IGF2YWlsYWJsZVdpZHRoID0gaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRX
aWR0aCgpCi0gICAgICAgICAgICA/IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50V2lk
dGgoKS52YWx1ZU9yKExheW91dFVuaXQoKSkgOiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxl
V2lkdGgoKTsKKyAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRX
aWR0aCgpLnZhbHVlX29yKExheW91dFVuaXQoKSkgOiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxh
YmxlV2lkdGgoKTsKICAgICAgICAgaWYgKCFzdHlsZSgpLmxlZnQoKS5pc0F1dG8oKSkgewogICAg
ICAgICAgICAgaWYgKCFzdHlsZSgpLnJpZ2h0KCkuaXNBdXRvKCkgJiYgIWNvbnRhaW5pbmdCbG9j
aygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgICAgICBv
ZmZzZXQuc2V0V2lkdGgoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkucmlnaHQoKSwgIXN0eWxlKCku
cmlnaHQoKS5pc0ZpeGVkKCkgPyBhdmFpbGFibGVXaWR0aCA6IDBfbHUpKTsKQEAgLTM3NSw3ICsz
NzUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9u
T2Zmc2V0KCkgY29uc3QKICAgICAgICAgLy8gV2UgY291bGQgcmVmYWN0b3IgdGhpcyBhbmQgbW92
ZSBpdCB0byBzb21lIGNvbW1vbiBjb2RlIGZvciBib3RoIGlmcywgaG93ZXZlciBtb3ZpbmcgaXQg
b3V0c2lkZSBvZiB0aGUgaWZzCiAgICAgICAgIC8vIGlzIG5vdCBwb3NzaWJsZSBhcyBpdCdkIGNh
dXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLgogICAgICAgICBvZmZzZXQuZXhwYW5kKDBfbHUs
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkudG9wKCksICFzdHlsZSgpLnRvcCgpLmlzRml4ZWQoKQot
ICAgICAgICAgICAgPyAoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQo
KSA/IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkudmFsdWVPcigwX2x1
KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkKKyAgICAgICAgICAgID8g
KGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgPyBvdmVycmlkaW5n
Q29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpLnZhbHVlX29yKDBfbHUpIDogY29udGFpbmlu
Z0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQogICAgICAgICAgICAgOiBMYXlvdXRVbml0KCkp
KTsKICAgICB9IGVsc2UgaWYgKCFzdHlsZSgpLmJvdHRvbSgpLmlzQXV0bygpCiAgICAgICAgICYm
ICghc3R5bGUoKS5ib3R0b20oKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKQpAQCAtMzg0LDcgKzM4
NCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25P
ZmZzZXQoKSBjb25zdAogICAgICAgICAgICAgfHwgaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRIZWlnaHQoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IENoZWNrIGNvbW1lbnQgYWJv
dmUgZm9yICJ0b3AiLCBpdCBhcHBsaWVzIGhlcmUgdG9vLgogICAgICAgICBvZmZzZXQuZXhwYW5k
KDBfbHUsIC12YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvdHRvbSgpLCAhc3R5bGUoKS5ib3R0b20o
KS5pc0ZpeGVkKCkKLSAgICAgICAgICAgID8gKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50SGVpZ2h0KCkgPyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgp
LnZhbHVlT3IoMF9sdSkgOiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkpCisg
ICAgICAgICAgICA/IChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgp
ID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKS52YWx1ZV9vcigwX2x1
KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkKICAgICAgICAgICAgIDog
TGF5b3V0VW5pdCgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uY3BwCmluZGV4IGFlNmIyMDMxMjg2ZWU3MjdiMDVmOGQ5MDY2YTMzNWJmYzdjNDRjNTcu
LmEwNWVkNjNhZjAzYzJjOWQzNWY3ZDQzNjM4OTc2YTA5NjdiZjQzYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGZvbnRCYXNl
bGluZSwgYm9vbCBmaXJzdEwKICAgICAgICAgcmV0dXJuIFJlbmRlckZsZXhpYmxlQm94OjpiYXNl
bGluZVBvc2l0aW9uKGZvbnRCYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIG1vZGUpOwog
ICAgIC8vIFdlIGNhbm5vdCByZWx5IG9uIFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0
aW9uKCkgYmVjYXVzZSBvZiBmbGV4Ym94ZXMgaGF2ZSBzb21lIHNwZWNpYWwgYmVoYXZpb3IKICAg
ICAvLyByZWdhcmRpbmcgYmFzZWxpbmVzIHRoYXQgc2hvdWxkbid0IGFwcGx5IHRvIGJ1dHRvbnMu
Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRpcmVjdGlvbikpOworICAg
IExheW91dFVuaXQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKHN5bnRo
ZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CiAgICAgTGF5
b3V0VW5pdCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJn
aW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luQXNj
ZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJp
bmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5j
cHAKaW5kZXggNWIxYTI4NzQyNWQwNjkzMzdjMDlmODUyOTI3MmQxODQ4NGYxNGE0NS4uNDQwYjc5
Y2QwMzI0ODhlMWI3YTc0NmY3YjYxOGM5OTMxZWU4YTY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIGZsb2F0
IFJlbmRlckNvbWJpbmVUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IEZvbnRDYXNjYWRlCiBPcHRpb25hbDxGbG9hdFBvaW50PiBSZW5kZXJDb21iaW5lVGV4
dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hSZWN0KSBjb25zdAogewog
ICAgIGlmICghbV9pc0NvbWJpbmVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVmlzdWFsbHkgY2VudGVyIG1fY29t
YmluZWRUZXh0V2lkdGgvQXNjZW50L0Rlc2NlbnQgd2l0aGluIGJveFJlY3QKICAgICBGbG9hdFBv
aW50IHJlc3VsdCA9IGJveFJlY3QubWluWE1heFlDb3JuZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA0MzY5OWZlYWQ5ZjY1YzU5NzJiZmRkNDI5
Yzc3YWVhMTAxNmE2OTkwLi5kM2FjMGMzNjFlMGNmNWUwNThkNzg0Y2YyMTAyY2M2OWI2ZjRlNThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC0xMzEs
OCArMTMxLDggQEAgc3RhdGljIENvdW50ZXJEaXJlY3RpdmVzIGxpc3RJdGVtQ291bnRlckRpcmVj
dGl2ZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVt
PihyZW5kZXJlcikpIHsKICAgICAgICAgYXV0byYgaXRlbSA9IGRvd25jYXN0PFJlbmRlckxpc3RJ
dGVtPihyZW5kZXJlcik7CiAgICAgICAgIGlmIChhdXRvIGV4cGxpY2l0VmFsdWUgPSBpdGVtLmV4
cGxpY2l0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB7ICpleHBsaWNpdFZhbHVlLCBXVEY6
Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBpdGVtLmlzSW5SZXZl
cnNlZE9yZGVyZWRMaXN0KCkgPyAtMSA6IDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7ICpleHBs
aWNpdFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0
LCBpdGVtLmlzSW5SZXZlcnNlZE9yZGVyZWRMaXN0KCkgPyAtMSA6IDEgfTsKICAgICB9CiAgICAg
aWYgKGF1dG8gZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewogICAgICAgICBpZiAoaXM8
SFRNTE9MaXN0RWxlbWVudD4oKmVsZW1lbnQpKSB7CkBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGlj
IENvdW50ZXJEaXJlY3RpdmVzIGxpc3RJdGVtQ291bnRlckRpcmVjdGl2ZXMoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4geyBsaXN0LnN0YXJ0KCksIGxpc3QuaXNS
ZXZlcnNlZCgpID8gMSA6IC0xIH07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzSFRNTExpc3RF
bGVtZW50KCplbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiB7IDAsIFdURjo6bnVsbG9wdCB9
OworICAgICAgICAgICAgcmV0dXJuIHsgMCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQogICAgIHJl
dHVybiB7IH07CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvdW50ZXJQ
bGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgQXRvbVN0cmkK
ICAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5vZGUgb3IgZWxzZSB3ZSBjYW5ub3Qg
aGF2ZSBhIGNvdW50ZXIuCiAgICAgRWxlbWVudCogZ2VuZXJhdGluZ0VsZW1lbnQgPSByZW5kZXJl
ci5nZW5lcmF0aW5nRWxlbWVudCgpOwogICAgIGlmICghZ2VuZXJhdGluZ0VsZW1lbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAKQEAgLTE2NCwxMyArMTY0LDEz
IEBAIHN0YXRpYyBPcHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpCiAgICAgICAgIC8vIFNvbWV0aW1lcyBlbGVtZW50
cyBoYXZlIG1vcmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkgdGhlIGZpcnN0IG9uZSBnZXRzIHRo
ZSBjb3VudGVyCiAgICAgICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY3NzL2NvdW50ZXIt
Y3Jhc2guaHRtbAogICAgICAgICBpZiAoZ2VuZXJhdGluZ0VsZW1lbnQtPnJlbmRlcmVyKCkgIT0g
JnJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHNldWRvSWQ6
OkJlZm9yZToKICAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgLy8gQ291bnRlcnMgYXJlIGZv
cmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4gZnJvbSBhbGwgb3RoZXIgcHNl
dWRvIGVsZW1lbnRzLgogICAgIH0KIAogICAgIENvdW50ZXJEaXJlY3RpdmVzIGRpcmVjdGl2ZXM7
CkBAIC0xODcsMTAgKzE4NywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8Q291bnRlclBsYW4+IHBsYW5D
b3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaQogICAgIH0KIAog
ICAgIGlmIChkaXJlY3RpdmVzLnJlc2V0VmFsdWUpCi0gICAgICAgIHJldHVybiBDb3VudGVyUGxh
biB7IHRydWUsIHNhdHVyYXRlZFN1bTxpbnQ+KCpkaXJlY3RpdmVzLnJlc2V0VmFsdWUsIGRpcmVj
dGl2ZXMuaW5jcmVtZW50VmFsdWUudmFsdWVPcigwKSkgfTsKKyAgICAgICAgcmV0dXJuIENvdW50
ZXJQbGFuIHsgdHJ1ZSwgc2F0dXJhdGVkU3VtPGludD4oKmRpcmVjdGl2ZXMucmVzZXRWYWx1ZSwg
ZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSkgfTsKICAgICBpZiAoZGlyZWN0
aXZlcy5pbmNyZW1lbnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIENvdW50ZXJQbGFuIHsgZmFsc2Us
ICpkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlIH07Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyAtIEZpbmRzIHRoZSBpbnNlcnRpb24g
cG9pbnQgZm9yIHRoZSBjb3VudGVyIGRlc2NyaWJlZCBieSBjb3VudGVyT3duZXIsIGlzUmVzZXQg
YW5kIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0
ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBmYzBjNjU0Njc1NDQ2MGM4ZWViYzI2ZTZkYTcyMThh
ZDQyNjAxZjE4Li45OWU5MWJiODFlMDRiNGYyN2RiNTZiZWViYjA1YTgyN2E2MjMwMTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcApAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKIAog
ICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBoZWlnaHQgYW5kIG92ZXJmbG93IGhlaWdodC4KICAg
ICAgICAgICAgIGlmIChzdHlsZSgpLmJveEFsaWduKCkgPT0gQm94QWxpZ25tZW50OjpCYXNlbGlu
ZSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9t
KCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0gY2hpbGQtPmZpcnN0TGlu
ZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRv
bSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1hcmdpblRvcCgpOwogICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+aGVpZ2h0KCkgKyBjaGls
ZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAgLTUxOSw3ICs1MTksNyBA
QCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0SG9yaXpvbnRhbEJveChi
b29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5t
YXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250ZW50SGVpZ2h0KCkgLSAo
Y2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0ZW50KCkpKSAvIDIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBCb3hBbGlnbm1lbnQ6OkJh
c2VsaW5lOiB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5C
b3R0b20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmly
c3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2lu
Qm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7
CiAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIChtYXhBc2Nl
bnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggYjA3MDA2NjMxNzJlNzZhYzA2Yjc4OGE4OTZiY2Q4
MmNiOWViNTJhYS4uYmJjY2I3MTdhNTdiZDNhNWRjMDIxODg2ZjEyYTllZDNkM2IxNDJlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0xNDYsNyArMTQ2LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxl
KCkub3BhY2l0eSgpIDwgMS4wZjsgfQogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVy
biBzdHlsZSgpLm9wYWNpdHkoKTsgfQogCi0gICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKE9w
dGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IFdURjo6bnVsbG9wdCkgY29u
c3QKKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVlc3Q+
IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcAppbmRleCBlOTBkYzFhOGFkMmMxMjQwOGQ4MDI2NGZmZDE3YmNhOTBkMmE5MjM5
Li42NzdjNDc4MjY3NGYxZmRlMmZkMzQ4ZjE1ZDNiNzhhYzI1Y2Q5ZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTExNzQsNyArMTE3
NCw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnVwZGF0ZUF1dG9NYXJnaW5zSW5Dcm9zc0F4
aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pCiAKIExheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiB7
Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVl
T3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICBMYXlvdXRVbml0IGFzY2Vu
dCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY3Jvc3NBeGlzRXh0ZW50Rm9y
Q2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxvd0F3YXJlTWFyZ2luQmVmb3Jl
Rm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC0xMjA5LDE2ICsxMjA5LDE2IEBAIHZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lucygpCiBMYXlvdXRVbml0
IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVuZGVyQm94
JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAgTGVuZ3RoIG1heCA9IG1haW5T
aXplTGVuZ3RoRm9yQ2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwotICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IG1heEV4dGVudCA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBt
YXhFeHRlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1heC5pc1NwZWNpZmllZE9ySW50cmlu
c2ljKCkpIHsKICAgICAgICAgbWF4RXh0ZW50ID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hp
bGQoY2hpbGQsIE1heFNpemUsIG1heCk7Ci0gICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNo
aWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY2hpbGRTaXplKSk7CisgICAgICAgIGNoaWxkU2l6
ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNoaWxkU2l6ZSkpOwog
ICAgIH0KIAogICAgIExlbmd0aCBtaW4gPSBtYWluU2l6ZUxlbmd0aEZvckNoaWxkKE1pblNpemUs
IGNoaWxkKTsKICAgICAvLyBJbnRyaW5zaWMgc2l6ZXMgaW4gY2hpbGQncyBibG9jayBheGlzIGFy
ZSBoYW5kbGVkIGJ5IHRoZSBtaW4tc2l6ZTphdXRvIGNvZGUgcGF0aC4KICAgICBpZiAobWluLmlz
U3BlY2lmaWVkKCkgfHwgKG1pbi5pc0ludHJpbnNpYygpICYmIG1haW5BeGlzSXNDaGlsZElubGlu
ZUF4aXMoY2hpbGQpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwgc3RkOjpt
YXgoMF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIG1p
bikudmFsdWVPcihjaGlsZFNpemUpKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNp
emUsIHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBN
aW5TaXplLCBtaW4pLnZhbHVlX29yKGNoaWxkU2l6ZSkpKTsKICAgICAKICAgICBpZiAoc2hvdWxk
QXBwbHlNaW5TaXplQXV0b0ZvckNoaWxkKGNoaWxkKSkgewogICAgICAgICAvLyBGSVhNRTogSWYg
dGhlIG1pbiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSB2YWxpZCBoZXJlLCB3ZSBuZWVkIHRvIGNv
bWUgdXAgd2l0aCBhIG5vbiBvcHRpb25hbCB2ZXJzaW9uIG9mIGNvbXB1dGVNYWluQXhpc0V4dGVu
dEZvckNoaWxkIGFuZApAQCAtMTIyOCwxNyArMTIyOCwxNyBAQCBMYXlvdXRVbml0IFJlbmRlckZs
ZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVuZGVyQm94JiBjaGlsZCwg
TGF5bwogICAgICAgICBpZiAoY2hpbGQuaXNSZW5kZXJSZXBsYWNlZCgpICYmIHVzZUNoaWxkQXNw
ZWN0UmF0aW8oY2hpbGQpKQogICAgICAgICAgICAgY29udGVudFNpemUgPSBjb21wdXRlTWFpblNp
emVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY2hpbGRDcm9zc1NpemVMZW5ndGgpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVu
dEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluQ29udGVudCkp
LnZhbHVlT3IoMCk7CisgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4
dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTGVuZ3RoVHlwZTo6TWluQ29udGVu
dCkpLnZhbHVlX29yKDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzSW50cmluc2ljQXNwZWN0UmF0
aW8oKSAmJiBjaGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICBjb250
ZW50U2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jvc3NBeGlzTWluQW5kTWF4
KGNoaWxkLCBjb250ZW50U2l6ZSk7CiAgICAgICAgIEFTU0VSVChjb250ZW50U2l6ZSA+PSAwKTsK
LSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZh
bHVlT3IoY29udGVudFNpemUpKTsKKyAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250
ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNvbnRlbnRTaXplKSk7CiAgICAgICAgIAogICAg
ICAgICBMZW5ndGggbWFpblNpemUgPSBtYWluU2l6ZUxlbmd0aEZvckNoaWxkKE1haW5PclByZWZl
cnJlZFNpemUsIGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkTWFpblNpemVJc0RlZmluaXRlKGNo
aWxkLCBtYWluU2l6ZSkpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2ZWRNYWluU2l6
ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQcmVmZXJyZWRT
aXplLCBtYWluU2l6ZSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgcmVzb2x2
ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNYWluT3JQ
cmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWVfb3IoMCk7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzb2x2ZWRNYWluU2l6ZSA+PSAwKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVk
U2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZU9yKHJlc29s
dmVkTWFpblNpemUpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0
ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZV9vcihyZXNvbHZlZE1haW5T
aXplKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1pbihz
cGVjaWZpZWRTaXplLCBjb250ZW50U2l6ZSkpOwogICAgICAgICB9CiAKQEAgLTEzMjUsOSArMTMy
NSw5IEBAIEZsZXhJdGVtIFJlbmRlckZsZXhpYmxlQm94Ojpjb25zdHJ1Y3RGbGV4SXRlbShSZW5k
ZXJCb3gmIGNoaWxkLCBib29sIHJlbGF5b3V0Q2hpCiAgICAgICAgIC8vIGJ5IGRlZmluaXRpb24g
d2UgaGF2ZSBhbiBpbmRlZmluaXRlIGZsZXggYmFzaXMgaGVyZSBhbmQgdGh1cyBwZXJjZW50YWdl
cyBzaG91bGQgbm90IHJlc29sdmUuCiAgICAgICAgIGlmIChjaGlsZC5uZWVkc0xheW91dCgpIHx8
ICFtX2ludHJpbnNpY1NpemVBbG9uZ01haW5BeGlzLmNvbnRhaW5zKCZjaGlsZCkpIHsKICAgICAg
ICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IGNoaWxkLmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAg
ICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2hp
bGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgY2hpbGQu
Y2xlYXJPdmVycmlkaW5nQ29udGVudFNpemUoKTsKICAgICAgICAgICAgIGNoaWxkLnNldENoaWxk
TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgICAgIGNoaWxkLmxheW91dElmTmVl
ZGVkKCk7CkBAIC0yMDg1LDcgKzIwODUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94
Ojpjb21wdXRlR2FwKFJlbmRlckZsZXhpYmxlQm94OjpHYXBUeXBlIGdhcFR5cGUpIGNvbgogICAg
IGlmIChMSUtFTFkoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byBhdmFpbGFibGVTaXplID0gdXNlc1Jvd0dhcCA/IGF2YWlsYWJsZUxvZ2ljYWxI
ZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKS52YWx1ZU9yKDBfbHUpIDogY29udGVudExv
Z2ljYWxXaWR0aCgpOworICAgIGF1dG8gYXZhaWxhYmxlU2l6ZSA9IHVzZXNSb3dHYXAgPyBhdmFp
bGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9uKCkudmFsdWVfb3IoMF9s
dSkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7CiAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxl
bmd0aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUpOwogfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDY2YmVlZGQyMTFkYjAzNmM0YjAzOTNh
ZDJlNjY1NjVjNzBmZjRhZTguLjhiZmFjYzZlZjBhNjk0MWUzNDBhZWQ4OTZkM2Y2ZTE4MjVjOGMx
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjphdmFpbGFibGVTcGFjZUZv
ckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aQogICAgIGJvb2wgaXNSb3dBeGlzID0gZGly
ZWN0aW9uID09IEZvckNvbHVtbnM7CiAgICAgY29uc3QgR2FwTGVuZ3RoJiBnYXBMZW5ndGggPSBp
c1Jvd0F4aXMgPyBzdHlsZSgpLmNvbHVtbkdhcCgpIDogc3R5bGUoKS5yb3dHYXAoKTsKICAgICBp
ZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkgfHwgIWdhcExlbmd0aC5sZW5ndGgoKS5pc1BlcmNlbnRP
ckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpc1Jvd0F4aXMgPyBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgoKSA6IGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CkBAIC0xOTcsNyArMTk3LDcg
QEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFJlbmRlckJsb2NrOjpo
YXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBvbmx5IGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGZvciBw
b3NpdGlvbmVkIHN0dWZmLgogICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgY2FjaGluZyB0aGUg
aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0IHZhbHVlIHRocm91Z2hvdXQgdGhlIGxheW91dC4KICAg
ICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gY2FjaGUgdGhlIGhhc0RlZmluaXRlTG9n
aWNhbEhlaWdodCBpZiB0aGUgY2FsbCBvZiBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2Fs
SGVpZ2h0KCkgY2F1c2VzIGEgcmVsZXZhbnQgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KLSAgICAg
ICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5p
dGVMb2dpY2FsSGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dp
Y2FsSGVpZ2h0KCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dp
Y2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIHx8IGhh
c092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0
KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxv
cHQpOwogICAgICAgICBtX2hhc0FueU9ydGhvZ29uYWxJdGVtID0gZmFsc2U7CiAgICAgICAgIGZv
ciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9z
aXRpb25lZCgpKQpAQCAtMzI0LDcgKzMyNCw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Z3Jp
ZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBPcHRpb25hbDxMYXlvCiAg
ICAgaWYgKGdhcExlbmd0aC5pc05vcm1hbCgpKQogICAgICAgICByZXR1cm4gMF9sdTsKIAotICAg
IHJldHVybiB2YWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUu
dmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgo
KSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigwKSk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyR3Jp
ZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdApAQCAt
NDEzLDcgKzQxMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxX
aWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAKICAgICBHcmlkIGdyaWQo
Y29uc3RfY2FzdDxSZW5kZXJHcmlkJj4oKnRoaXMpKTsKICAgICBHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0gYWxnb3JpdGhtKHRoaXMsIGdyaWQpOwotICAgIHBsYWNlSXRlbXNPbkdyaWQoYWxnb3Jp
dGhtLCBXVEY6Om51bGxvcHQpOworICAgIHBsYWNlSXRlbXNPbkdyaWQoYWxnb3JpdGhtLCBzdGQ6
Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91dChhbGdvcml0aG0pOwog
CkBAIC00NDMsMTEgKzQ0MywxMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5bwogdm9pZCBSZW5k
ZXJHcmlkOjpjb21wdXRlVHJhY2tTaXplc0ZvckluZGVmaW5pdGVTaXplKEdyaWRUcmFja1Npemlu
Z0FsZ29yaXRobSYgYWxnb3JpdGhtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9u
LCBMYXlvdXRVbml0KiBtaW5JbnRyaW5zaWNTaXplLCBMYXlvdXRVbml0KiBtYXhJbnRyaW5zaWNT
aXplKSBjb25zdAogewogICAgIGNvbnN0IEdyaWQmIGdyaWQgPSBhbGdvcml0aG0uZ3JpZCgpOwot
ICAgIGFsZ29yaXRobS5zZXR1cChkaXJlY3Rpb24sIG51bVRyYWNrcyhkaXJlY3Rpb24sIGdyaWQp
LCBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24sIFdURjo6bnVsbG9wdCk7CisgICAgYWxnb3JpdGht
LnNldHVwKGRpcmVjdGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgZ3JpZCksIEludHJpbnNpY1Np
emVDb21wdXRhdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICBhbGdvcml0aG0ucnVuKCk7CiAKICAg
ICBzaXplX3QgbnVtYmVyT2ZUcmFja3MgPSBhbGdvcml0aG0udHJhY2tzKGRpcmVjdGlvbikuc2l6
ZSgpOwotICAgIExheW91dFVuaXQgdG90YWxHdXR0ZXJzU2l6ZSA9IGd1dHRlcnNTaXplKGdyaWQs
IGRpcmVjdGlvbiwgMCwgbnVtYmVyT2ZUcmFja3MsIFdURjo6bnVsbG9wdCk7CisgICAgTGF5b3V0
VW5pdCB0b3RhbEd1dHRlcnNTaXplID0gZ3V0dGVyc1NpemUoZ3JpZCwgZGlyZWN0aW9uLCAwLCBu
dW1iZXJPZlRyYWNrcywgc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChtaW5JbnRyaW5zaWNTaXpl
KQogICAgICAgICAqbWluSW50cmluc2ljU2l6ZSA9IGFsZ29yaXRobS5taW5Db250ZW50U2l6ZSgp
ICsgdG90YWxHdXR0ZXJzU2l6ZTsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB1bnNpZ25lZCBSZW5kZXJH
cmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlYwogICAgICAgICBpZiAobWF4U2l6ZS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAgICAg
ICBpZiAobWF4U2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgICAgICBj
b250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8gY29udGFpbmluZ0Jsb2Nr
TG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZv
ckNvbnRlbnQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICAgICAgTGF5b3V0
VW5pdCBtYXhTaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXhTaXplLCBjb250YWluaW5nQmxv
Y2tBdmFpbGFibGVTaXplLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7CisgICAgICAgICAgICBMYXlv
dXRVbml0IG1heFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNpemUsIGNvbnRhaW5pbmdC
bG9ja0F2YWlsYWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CiAgICAgICAgICAgICBh
dmFpbGFibGVNYXhTaXplID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0
aEZvckJveFNpemluZyhtYXhTaXplVmFsdWUsIG1heFNpemUudHlwZSgpKSA6IGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG1heFNpemVWYWx1ZSk7CiAgICAgICAgIH0K
IApAQCAtNDg3LDEzICs0ODcsMTMgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9S
ZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICAgICAg
aWYgKG1pblNpemUuaXNTcGVjaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKCFjb250YWluaW5n
QmxvY2tBdmFpbGFibGVTaXplICYmIG1pblNpemUuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAg
ICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSA9IGlzUm93QXhpcyA/
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSA6IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAg
ICAgICAgICAgIExheW91dFVuaXQgbWluU2l6ZVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWluU2l6
ZSwgY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZS52YWx1ZU9yKExheW91dFVuaXQoKSkpOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5TaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtaW5T
aXplLCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkp
OwogICAgICAgICAgICAgYXZhaWxhYmxlTWluU2l6ZSA9IGlzUm93QXhpcyA/IGFkanVzdENvbnRl
bnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluU2l6ZVZhbHVlLCBtaW5TaXplLnR5cGUo
KSkgOiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhtaW5TaXplVmFs
dWUpOwogICAgICAgICAgICAgaWYgKCFtYXhTaXplLmlzU3BlY2lmaWVkKCkpCiAgICAgICAgICAg
ICAgICAgbmVlZHNUb0Z1bGZpbGxNaW5pbXVtU2l6ZSA9IHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBhdmFpbGFibGVTaXplID0gc3RkOjptYXgoYXZhaWxhYmxlTWluU2l6ZS52YWx1ZU9yKExh
eW91dFVuaXQoKSksIGF2YWlsYWJsZU1heFNpemUudmFsdWVPcihMYXlvdXRVbml0KCkpKTsKKyAg
ICAgICAgYXZhaWxhYmxlU2l6ZSA9IHN0ZDo6bWF4KGF2YWlsYWJsZU1pblNpemUudmFsdWVfb3Io
TGF5b3V0VW5pdCgpKSwgYXZhaWxhYmxlTWF4U2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsK
ICAgICB9CiAKICAgICBMYXlvdXRVbml0IGF1dG9SZXBlYXRUcmFja3NTaXplOwpAQCAtNjIzLDcg
KzYyMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0mIGFsZ29yaXRobSwgT3B0aW9uYWw8CiAgICAgICAgIGlmICghY2hpbGQtPmhh
c092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdpZHRoKCkpCiAgICAgICAg
ICAgICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lk
dGgoTGF5b3V0VW5pdCgpKTsKICAgICAgICAgaWYgKCFjaGlsZC0+aGFzT3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAgICAgICBjaGlsZC0+c2V0
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KFdURjo6bnVsbG9w
dCk7CisgICAgICAgICAgICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAgR3JpZEFyZWEgYXJlYSA9
IGdyaWQuZ3JpZEl0ZW1BcmVhKCpjaGlsZCk7CiAgICAgICAgIGlmICghYXJlYS5yb3dzLmlzSW5k
ZWZpbml0ZSgpKQpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjphcHBseVN0
cmV0Y2hBbGlnbm1lbnRUb0NoaWxkSWZOZWVkZWQoUmVuZGVyQm94JiBjaGlsZCkKICAgICBib29s
IGFsbG93ZWRUb1N0cmV0Y2hDaGlsZEJsb2NrU2l6ZSA9IGJsb2NrRmxvd0lzQ29sdW1uQXhpcyA/
IGFsbG93ZWRUb1N0cmV0Y2hDaGlsZEFsb25nQ29sdW1uQXhpcyhjaGlsZCkgOiBhbGxvd2VkVG9T
dHJldGNoQ2hpbGRBbG9uZ1Jvd0F4aXMoY2hpbGQpOwogICAgIGlmIChhbGxvd2VkVG9TdHJldGNo
Q2hpbGRCbG9ja1NpemUpIHsKICAgICAgICAgTGF5b3V0VW5pdCBzdHJldGNoZWRMb2dpY2FsSGVp
Z2h0ID0gYXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZEJlZm9yZVN0cmV0Y2hpbmcoR3Jp
ZExheW91dEZ1bmN0aW9uczo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9y
Q2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24pLnZhbHVlKCksIGNoaWxkKTsKLSAgICAg
ICAgTGF5b3V0VW5pdCBkZXNpcmVkTG9naWNhbEhlaWdodCA9IGNoaWxkLmNvbnN0cmFpbkxvZ2lj
YWxIZWlnaHRCeU1pbk1heChzdHJldGNoZWRMb2dpY2FsSGVpZ2h0LCBXVEY6Om51bGxvcHQpOwor
ICAgICAgICBMYXlvdXRVbml0IGRlc2lyZWRMb2dpY2FsSGVpZ2h0ID0gY2hpbGQuY29uc3RyYWlu
TG9naWNhbEhlaWdodEJ5TWluTWF4KHN0cmV0Y2hlZExvZ2ljYWxIZWlnaHQsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KGRlc2lyZWRMb2dp
Y2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBDaGVja2luZyB0aGUgbG9naWNhbC1oZWlnaHQgb2Yg
YSBjaGlsZCBpc24ndCBlbm91Z2guIFNldHRpbmcgYW4gb3ZlcnJpZGUgbG9naWNhbC1oZWlnaHQK
QEAgLTEyNjcsNyArMTI2Nyw3IEBAIExheW91dFVuaXQgUmVuZGVyR3JpZDo6YmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpCiBPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAg
aWYgKGlzV3JpdGluZ01vZGVSb290KCkgfHwgIW1fZ3JpZC5oYXNHcmlkSXRlbXMoKSB8fCBzaG91
bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IFJlbmRlckJv
eCogYmFzZWxpbmVDaGlsZCA9IG51bGxwdHI7CiAgICAgLy8gRmluZGluZyB0aGUgZmlyc3QgZ3Jp
ZCBpdGVtIGluIGdyaWQgb3JkZXIuCkBAIC0xMjg3LDkgKzEyODcsOSBAQCBPcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgfQogCiAg
ICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBiYXNlbGluZSA9IEdyaWRMYXlv
dXRGdW5jdGlvbnM6OmlzT3J0aG9nb25hbENoaWxkKCp0aGlzLCAqYmFzZWxpbmVDaGlsZCkgPyBX
VEY6Om51bGxvcHQgOiBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpOworICAgIGF1
dG8gYmFzZWxpbmUgPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjppc09ydGhvZ29uYWxDaGlsZCgqdGhp
cywgKmJhc2VsaW5lQ2hpbGQpID8gc3RkOjpudWxsb3B0IDogYmFzZWxpbmVDaGlsZC0+Zmlyc3RM
aW5lQmFzZWxpbmUoKTsKICAgICAvLyBXZSB0YWtlIGJvcmRlci1ib3gncyBib3R0b20gaWYgbm8g
dmFsaWQgYmFzZWxpbmUuCiAgICAgaWYgKCFiYXNlbGluZSkgewogICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVCYXNlbGluZSBhbmQgc3Rv
cCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmgKaW5kZXggMTI5Njc1OTBiNGMzMzg0ZDNkMTU0MWUzYWQwMDg5Y2NlM2UxMzJh
Mi4uYmFkMGFkZDA0NmJiOTI1YTlmMmZjYmJkNjU3ZTA1YThiNmFlMTAyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2hhZG93Q29u
dHJvbHMgfHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJl
cGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFs
KSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gV1RGOjpudWxs
b3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpu
dWxsb3B0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VUb0VtcHR5
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggZTdhMGEyN2E1YmNhNzI4OTk5MjAyYTY1YzNlMjlkMmE2Njk2NjZlNy4uNTI5YjFjNjcwODk0
ODA5ZTI3OGM3NWY2ZWYzZGJkNGY3NDcyOTI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTk2Myw3ICs5NjMsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0
PiBSZW5kZXJJbmxpbmU6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91
dFJlYwogICAgICAgICBib29sIGlzRW1wdHkgPSAhZG93bmNhc3Q8UmVuZGVyQm94PigqbG9jYWxD
b250YWluZXIpLmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbFBvc2l0aW9uKGFkanVzdGVkUmVjdCwg
Y29udGFpbmVyLCBjb250ZXh0KTsKICAgICAgICAgaWYgKGlzRW1wdHkpIHsKICAgICAgICAgICAg
IGlmIChjb250ZXh0Lm9wdGlvbnMuY29udGFpbnMoVmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpV
c2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZTgwZDVlNzAzMmNjYWUyZmYyNDBhNGQx
YjE5NjNkNGU1N2EzZTQ1Ni4uMTg1ZjZjZjZhOWE5M2ZlODA3OWVjNDM1YzZlYTQ2YjE2Zjc4Yjhi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC05NjMsNyAr
OTYzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUmVuZGVyR2Vv
bWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBPcHRpb25TZXQKICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSB3aWxsIGNvbnZlcnQgdGhpcyB0byBqdXN0IHRha2UgdGhlIG9sZCBhbmQgbmV3
IFJlcGFpbnRMYXlvdXRSZWN0cyBvbmNlCiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGNoYW5n
ZSBvdGhlciBjYWxsZXJzIHRvIHVzZSBSZXBhaW50TGF5b3V0UmVjdHMuCi0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gcmVzb2x2ZWRPbGRSZWN0cyA9IG9sZFJlY3RzLnZhbHVlT3IoTGF5ZXJSZXBh
aW50UmVjdHMgeyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byByZXNvbHZlZE9sZFJlY3Rz
ID0gb2xkUmVjdHMudmFsdWVfb3IoTGF5ZXJSZXBhaW50UmVjdHMgeyB9KTsKICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIoKS5yZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChyZXBhaW50Q29u
dGFpbmVyLCByZXNvbHZlZE9sZFJlY3RzLmNsaXBwZWRPdmVyZmxvd1JlY3QsIHJlc29sdmVkT2xk
UmVjdHMub3V0bGluZUJvdW5kc1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3UmVj
dHMtPmNsaXBwZWRPdmVyZmxvd1JlY3QsICZuZXdSZWN0cy0+b3V0bGluZUJvdW5kc1JlY3QpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTM0NjQsNyArMzQ2NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QKICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxPZmZzZXQgPSBvZmZzZXRGb3JU
aGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXll
cik7CiAgICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8ocGFpbnRp
bmdJbmZvKTsKICAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5yb290TGF5ZXIgPSB0aGlzOwot
ICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0gTGF5b3V0UmVjdChl
bmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZp
Y2VTY2FsZUZhY3RvcikpOworICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBh
aW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB0cmFuc2Zvcm1lZFBhaW50
aW5nSW5mby5zdWJwaXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxPZmZzZXQ7CiAgICAgcGFp
bnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5n
SW5mbywgcGFpbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
aW5kZXggNGI5OWQ4MTE5NzMxMTY3YmJjZjcwY2I3NzQ0MjhjN2RlZjY4MmQ2OC4uOTUyYWU0ZDNm
N2VhNjBhOWNiY2I2ODFkNjcyZmY1MDI5MGRlMTZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKQEAgLTY3Miw3ICs2NzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjbGlw
Q3Jvc3Nlc1BhaW50aW5nQm91bmRhcnkoKSBjb25zdDsKIAogICAgIC8vIFBhc3Mgb2Zmc2V0RnJv
bVJvb3QgaWYga25vd24uCi0gICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBMYXlv
dXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3Qs
IGNvbnN0IE9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCA9IFdURjo6bnVs
bG9wdCkgY29uc3Q7CisgICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdlUmVjdChjb25zdCBMYXlvdXRS
ZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIGNv
bnN0IE9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0JveCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Q7CiAKICAgICBlbnVtIENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZyB7CiAgICAgICAg
IEluY2x1ZGVTZWxmVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggMzM2ODE2YTEwODc0Mjk2NDhmYTcyODk5OGIzNzI1M2E1NzBhNDQ4NS4uNDEzYTZlMGYwNGY4
NWM3ZDZjMGVkNzgyYWUyYmRiN2Y1NDkzMWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTIzNDIsMTEgKzIzNDIsMTEg
QEAgT3B0aW9uYWw8U3RyaW5nPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBsYXRmb3JtTGF5ZXJU
cmVlQXNUZXh0KEVsZW1lbnQmIGVsZW1lbnQKIAogICAgIHVwZGF0ZUNvbXBvc2l0aW5nRm9yTGF5
ZXJUcmVlQXNUZXh0RHVtcCgpOwogICAgIGlmICghZWxlbWVudC5yZW5kZXJlcigpIHx8ICFlbGVt
ZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBsYXllck1vZGVsT2Jq
ZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKmVsZW1lbnQucmVuZGVyZXIo
KSk7CiAgICAgaWYgKCFsYXllck1vZGVsT2JqZWN0LmxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byogYmFja2luZyA9IGxheWVyTW9kZWxPYmplY3QubGF5ZXIoKS0+YmFja2lu
ZygpOwogICAgIHJldHVybiBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXJU
cmVlQXNUZXh0KGZsYWdzKTsKQEAgLTQ0NDIsNyArNDQ0Miw3IEBAIFNjcm9sbGluZ05vZGVJRCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmF0dGFjaFNjcm9sbGluZ05vZGUoUmVuZGVyTGF5ZXImIGxh
eWVyLCBTCiAgICAgCiAgICAgbm9kZUlEID0gcmVnaXN0ZXJTY3JvbGxpbmdOb2RlSUQoKnNjcm9s
bGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIG5vZGVUeXBlLCB0cmVlU3RhdGUpOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKFNjcm9sbGluZ1RyZWUsIHN0cmVhbSA8PCAiUmVuZGVyTGF5ZXJDb21wb3Np
dG9yICIgPDwgdGhpcyA8PCAiIGF0dGFjaFNjcm9sbGluZ05vZGUgIiA8PCBub2RlSUQgPDwgIiAo
bGF5ZXIgIiA8PCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1hcnlMYXllcklEKCkgPDwg
IikgdHlwZSAiIDw8IG5vZGVUeXBlIDw8ICIgcGFyZW50ICIgPDwgdHJlZVN0YXRlLnBhcmVudE5v
ZGVJRC52YWx1ZU9yKDApKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nVHJlZSwgc3Ry
ZWFtIDw8ICJSZW5kZXJMYXllckNvbXBvc2l0b3IgIiA8PCB0aGlzIDw8ICIgYXR0YWNoU2Nyb2xs
aW5nTm9kZSAiIDw8IG5vZGVJRCA8PCAiIChsYXllciAiIDw8IGJhY2tpbmctPmdyYXBoaWNzTGF5
ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAiKSB0eXBlICIgPDwgbm9kZVR5cGUgPDwgIiBwYXJl
bnQgIiA8PCB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDApKTsKIAogICAgIGlmICgh
bm9kZUlEKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NjcsNyArNDQ2Nyw3IEBAIFNjcm9sbGlu
Z05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyU2Nyb2xsaW5nTm9kZUlEKFNj
cm9sbGluZ0Nvb3JkaW5hCiAgICAgaWYgKG5vZGVUeXBlID09IFNjcm9sbGluZ05vZGVUeXBlOjpT
dWJmcmFtZSAmJiAhdHJlZVN0YXRlLnBhcmVudE5vZGVJRCkKICAgICAgICAgbm9kZUlEID0gc2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3JlYXRlTm9kZShub2RlVHlwZSwgbm9kZUlEKTsKICAgICBlbHNl
IHsKLSAgICAgICAgYXV0byBuZXdOb2RlSUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci5pbnNlcnRO
b2RlKG5vZGVUeXBlLCBub2RlSUQsIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKSwg
dHJlZVN0YXRlLm5leHRDaGlsZEluZGV4KTsKKyAgICAgICAgYXV0byBuZXdOb2RlSUQgPSBzY3Jv
bGxpbmdDb29yZGluYXRvci5pbnNlcnROb2RlKG5vZGVUeXBlLCBub2RlSUQsIHRyZWVTdGF0ZS5w
YXJlbnROb2RlSUQudmFsdWVfb3IoMCksIHRyZWVTdGF0ZS5uZXh0Q2hpbGRJbmRleCk7CiAgICAg
ICAgIGlmIChuZXdOb2RlSUQgIT0gbm9kZUlEKSB7CiAgICAgICAgICAgICAvLyBXZSdsbCBnZXQg
YSBuZXcgbm9kZUlEIGlmIHRoZSB0eXBlIGNoYW5nZWQgKGFuZCBub3QgaWYgdGhlIG5vZGUgaXMg
bmV3KS4KICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLnVucGFyZW50Q2hpbGRyZW5B
bmREZXN0cm95Tm9kZShub2RlSUQpOwpAQCAtNDU4OCw3ICs0NTg4LDcgQEAgU2Nyb2xsaW5nTm9k
ZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yTGF5
ZXIoUmVuZGVyTGEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXV0byBuZXdOb2Rl
SUQgPSB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlT3IoMCk7CisgICAgYXV0byBuZXdOb2Rl
SUQgPSB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDApOwogCiAgICAgU2Nyb2xsaW5n
VHJlZVN0YXRlIGNoaWxkVHJlZVN0YXRlOwogICAgIFNjcm9sbGluZ1RyZWVTdGF0ZSogY3VycmVu
dFRyZWVTdGF0ZSA9ICZ0cmVlU3RhdGU7CkBAIC00NjQ0LDEwICs0NjQ0LDEwIEBAIFNjcm9sbGlu
Z05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JWaWV3
cG9ydENvbnN0cmFpbmVkCiAgICAgYXV0byBuZXdOb2RlSUQgPSBhdHRhY2hTY3JvbGxpbmdOb2Rl
KGxheWVyLCBub2RlVHlwZSwgdHJlZVN0YXRlKTsKICAgICBpZiAoIW5ld05vZGVJRCkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2Rl
SUQudmFsdWVfb3IoMCk7CiAgICAgfQogCi0gICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5n
LCBzdHJlYW0gPDwgIlJlZ2lzdGVyaW5nIFZpZXdwb3J0Q29uc3RyYWluZWQgIiA8PCBub2RlVHlw
ZSA8PCAiIG5vZGUgIiA8PCBuZXdOb2RlSUQgPDwgIiAobGF5ZXIgIiA8PCBsYXllci5iYWNraW5n
KCktPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAiKSBhcyBjaGlsZCBvZiAi
IDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKSk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgIlJlZ2lzdGVyaW5nIFZpZXdwb3J0Q29uc3RyYWlu
ZWQgIiA8PCBub2RlVHlwZSA8PCAiIG5vZGUgIiA8PCBuZXdOb2RlSUQgPDwgIiAobGF5ZXIgIiA8
PCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAi
KSBhcyBjaGlsZCBvZiAiIDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCkpOwog
CiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQogICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2RlSUQsIHsgbGF5
ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCkgfSk7CkBAIC00NzIwLDcgKzQ3MjAsNyBAQCBT
Y3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2Rl
Rm9yU2Nyb2xsaW5nUm9sZShSZW5kZQogCiAgICAgICAgIGlmICghbmV3Tm9kZUlEKSB7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cmVlU3Rh
dGUucGFyZW50Tm9kZUlELnZhbHVlT3IoMCk7CisgICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRl
LnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjaGFu
Z2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKQEAgLTQ3MzQsNyArNDczNCw3
IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGlu
Z05vZGVGb3JTY3JvbGxpbmdSb2xlKFJlbmRlCiAgICAgICAgIG5ld05vZGVJRCA9IGF0dGFjaFNj
cm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxvdywgdHJlZVN0YXRl
KTsKICAgICAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVP
cigwKTsKKyAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29y
KDApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGlu
Z05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCkBAIC00NzU1LDcgKzQ3NTUsNyBAQCBTY3JvbGxpbmdO
b2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xs
aW5nUHJveHlSb2xlKAogICAgIGF1dG8qIGNsaXBwaW5nU3RhY2sgPSBsYXllci5iYWNraW5nKCkt
PmFuY2VzdG9yQ2xpcHBpbmdTdGFjaygpOwogICAgIGlmICghY2xpcHBpbmdTdGFjaykgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2Rl
SUQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IDA7
CkBAIC00NzY2LDcgKzQ3NjYsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUHJveHlSb2xlKAogICAgICAgICBu
b2RlSUQgPSByZWdpc3RlclNjcm9sbGluZ05vZGVJRCgqc2Nyb2xsaW5nQ29vcmRpbmF0b3IsIGVu
dHJ5Lm92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQsIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVyZmxv
d1Byb3h5LCB0cmVlU3RhdGUpOwogICAgICAgICBpZiAoIW5vZGVJRCkgewogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRC52YWx1ZU9yKDApOworICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnRO
b2RlSUQudmFsdWVfb3IoMCk7CiAgICAgICAgIH0KICAgICAgICAgZW50cnkub3ZlcmZsb3dTY3Jv
bGxQcm94eU5vZGVJRCA9IG5vZGVJRDsKICNpZiBFTkFCTEUoU0NST0xMSU5HX1RIUkVBRCkKQEAg
LTQ3OTUsNyArNDc5NSw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdQcm94eVJvbGUoCiAgICAgLy8gRklYTUU6
IGFsc28gbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrCiAK
ICAgICBpZiAoIW5vZGVJRCkKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQu
dmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVf
b3IoMCk7CiAKICAgICByZXR1cm4gbm9kZUlEOwogfQpAQCAtNDgwNyw3ICs0ODA3LDcgQEAgU2Ny
b2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZv
ckZyYW1lSG9zdGluZ1JvbGUoUmUKICAgICBhdXRvIG5ld05vZGVJRCA9IGF0dGFjaFNjcm9sbGlu
Z05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3RpbmcsIHRyZWVTdGF0ZSk7
CiAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlT3IoMCk7CisgICAgICAg
IHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDApOwogICAgIH0KIAogICAg
IGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKQEAgLTQ4MjMs
NyArNDgyMyw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZVNjcm9sbGluZ05vZGVGb3JQb3NpdGlvbmluZ1JvbGUoUmVuCiAgICAgYXV0byBuZXdOb2RlSUQg
PSBhdHRhY2hTY3JvbGxpbmdOb2RlKGxheWVyLCBTY3JvbGxpbmdOb2RlVHlwZTo6UG9zaXRpb25l
ZCwgdHJlZVN0YXRlKTsKICAgICBpZiAoIW5ld05vZGVJRCkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVP
cigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7
CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6Okxh
eWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5jcHAKaW5kZXggMmJiNWE1NTI4OWY2NDg5ODAxNGY3NDVlYjRlMWIxMzAxMGE1MTQ5
Zi4uMGEzNzE5YTIzNThkNWFhY2Y4ZTliMTY5NjEzMTZkZWRiM2VkNzZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAt
MjI2LDcgKzIyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c2hvdWxkUGxhY2VW
ZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CiAKIE9wdGlvbmFsPExheWVyUmVwYWludFJl
Y3RzPiBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpsYXllclJlcGFpbnRSZWN0cygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGhhc0xheWVyKCkgPyBsYXllcigpLT5yZXBhaW50UmVjdHMoKSA6IFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0cygp
IDogc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwg
Y29uc3QgS2V5ZnJhbWVMaXN0JiBrZXlmcmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggZGUyYmNlNTFm
YTliOGQxMWEwZTQ5ZTkxZjRmYTlmZDFkNTA1ODU4My4uY2RlNDU3MWZkNDk2NGVjZjVhNzU4ZThi
YTA5MDFkNzdmMDFjMjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6YXBwbHlQb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb25J
Zk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNjcm9sbFRvT2Zmc2V0KHNjcm9sbE9m
ZnNldEZyb21Qb3NpdGlvbihtX3Bvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbi52YWx1ZSgpKSk7Ci0g
ICAgbV9wb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wb3N0
TGF5b3V0U2Nyb2xsUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9YUG9zaXRpb24oaW50IHgsIGNvbnN0IFNjcm9sbFBv
c2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE3NTUsNyArMTc1NSw3IEBAIE9wdGlv
bmFsPExheW91dFJlY3Q+IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0ZVNjcm9sbFBv
c2l0aW9uKGNvbnN0IFNjcm9sCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KGJveC0+bG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFF1YWQoRmxvYXRSZWN0KGxvY2FsRXhwb3NlUmVjdFNjcm9sbGVk
KSksIFVzZVRyYW5zZm9ybXMpLmJvdW5kaW5nQm94KCkpOwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNvbnN0IEludFNpemUmIGRl
bHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCA5ZGFkNTE3MTA3OGZjNjIzZWQ4Y2IxYWYwYWM2
NGNiY2E0M2VjOTkzLi4yNmJiM2NiZTJmODlmOTM2NDA2NzA3M2JkOGUwYWE1MDNjOTk3ZmQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yOTMsNyAr
MjkzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0Qm94OjppdGVtQm91bmRpbmdCb3hSZWN0KGNv
bnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2UKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFp
bnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50RnVuY3Rpb24pCiB7CiAgICAgaW50IGxpc3RJ
dGVtc1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2libGVJdGVtID0gbV9pbmRl
eE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlT3IobV9pbmRleE9m
ZnNldCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJ
dGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9mZnNldCk7CiAgICAgaW50
IGVuZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJdGVtcyhDb25zaWRlclBh
ZGRpbmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJsZUl0ZW07IGkgPCBsaXN0
SXRlbXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBwYWludEZ1bmN0aW9uKHBh
aW50SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNjEyLDcgKzYxMiw3IEBAIGJvb2wgUmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgoaW50IGluZGV4KQogCiBi
b29sIFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQgaW5kZXgpCiB7Ci0gICAg
aW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1Rv
cEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmlyc3RJbmRleCA9IG1faW5k
ZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4
T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5z
aWRlUGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVt
SW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9mVmlzaWJsZUl0ZW1zSW5Q
YWRkaW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsgbnVtVmlzaWJsZUl0ZW1z
KCk7CkBAIC02NzksOCArNjc5LDggQEAgaW50IFJlbmRlckxpc3RCb3g6Om51bWJlck9mVmlzaWJs
ZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMaXN0Qm94Ojpjb21w
dXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKCkKIHsKLSAgICBt
X2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdCb3R0b21BcmVh
ID0gV1RGOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRk
aW5nVG9wQXJlYSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVt
SW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgbWF4aW11
bU51bWJlck9mSXRlbXNUaGF0Rml0SW5QYWRkaW5nVG9wQXJlYSA9IHBhZGRpbmdUb3AoKSAvIGl0
ZW1IZWlnaHQoKTsKICAgICBpZiAobWF4aW11bU51bWJlck9mSXRlbXNUaGF0Rml0SW5QYWRkaW5n
VG9wQXJlYSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAK
aW5kZXggYjFiMTRhOWQ4Y2UwOTM0NDg0ZGI0NzY5YWEyNmFlZGYwOTUwNzdjOC4uZmRiZTEzMDlm
NzE5NjljYjBlZWExOWQwMWU2YWQ1ZDI1MTZhMmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBSZW5kZXJM
aXN0SXRlbTo6dXBkYXRlVmFsdWVOb3coKSBjb25zdAogdm9pZCBSZW5kZXJMaXN0SXRlbTo6dXBk
YXRlVmFsdWUoKQogewogICAgIGlmICghbV92YWx1ZVdhc1NldEV4cGxpY2l0bHkpIHsKLSAgICAg
ICAgbV92YWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92YWx1ZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgaWYgKG1fbWFya2VyKQogICAgICAgICAgICAgbV9tYXJrZXItPnNldE5lZWRz
TGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggNGYxM2I4Mzk1NzczZTdmNzYxMGQ5MDYyMDAwNThk
ZWE2NjFmMzJhMC4uZDZkOWIzZTcyYjEwMGMxZDI2ZjkzYWQzZmEwYjFiN2YxZWI3MWRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAgLTQwLDcgKzQwLDcg
QEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlVmFsdWUo
KTsKIAotICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVXYXNTZXRFeHBsaWNpdGx5ID8gbV92YWx1ZSA6IFdURjo6bnVsbG9wdDsgfQorICAgIE9w
dGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVXYXNTZXRF
eHBsaWNpdGx5ID8gbV92YWx1ZSA6IHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgc2V0RXhwbGlj
aXRWYWx1ZShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQgc2V0Tm90SW5MaXN0KGJvb2wgbm90
SW5MaXN0KSB7IG1fbm90SW5MaXN0ID0gbm90SW5MaXN0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCAwZWZkNTkzNTliNGNi
MjA0YzdkNTYzNzY3OTQ1ZTE5NzlmYjNjMzE3Li5mZmNiYTA0YWEzNDVjNDg0YTk5ZDgzYzY2YmI0
YmY0YmUwYTBkZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBMYXlvdXRVbml0IFJlbmRlck11
bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQoKSBjb25zdAogICAgIExheW91
dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0gbXVsdGlDb2x1bW5GbG93KCktPmNvbHVtbkhlaWdodEF2
YWlsYWJsZSgpOwogICAgIExheW91dFVuaXQgbWF4Q29sdW1uSGVpZ2h0ID0gYXZhaWxhYmxlSGVp
Z2h0ID8gYXZhaWxhYmxlSGVpZ2h0IDogUmVuZGVyRnJhZ21lbnRlZEZsb3c6Om1heExvZ2ljYWxI
ZWlnaHQoKTsKICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLmlzVW5k
ZWZpbmVkKCkpCi0gICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1heENvbHVtbkhl
aWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUs
IG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBXVEY6Om51bGxvcHQpLnZhbHVlT3Io
bWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6bWluKG1h
eENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0
KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBzdGQ6Om51bGxvcHQp
LnZhbHVlX29yKG1heENvbHVtbkhlaWdodCkpOwogICAgIHJldHVybiBoZWlnaHRBZGp1c3RlZEZv
clNldE9mZnNldChtYXhDb2x1bW5IZWlnaHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGJhYTEzM2VmN2IzOTc2NWFmYmUyNGJlMGY3Yzk0NzNi
OTJmMGYyNmIuLmM4YTMxZGNmOTdiM2FkZTEwMmU0NTBjZTg2Y2NkN2Y0YzIzMmIyNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMDA4LDcgKzEwMDgs
NyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJPYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlYwogICAgICAgICBib29sIGlzRW1wdHkgPSAhZG93
bmNhc3Q8UmVuZGVyQm94PigqcGFyZW50KS5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxQb3NpdGlv
bihhZGp1c3RlZFJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgICAgIGlmIChpc0VtcHR5
KSB7CiAgICAgICAgICAgICBpZiAoY29udGV4dC5vcHRpb25zLmNvbnRhaW5zKFZpc2libGVSZWN0
Q29udGV4dE9wdGlvbjo6VXNlRWRnZUluY2x1c2l2ZUludGVyc2VjdGlvbikpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBkY2I0ZGY1MzM4
ZGRjYjA2MTgxNGQ3ZjZmYjA3ZjJkOTRjYzc0ZThkLi42NDRlMTgzYjQ2Y2ZlMDYyMTMwZDBlMzU3
NWJiYzg1ZDI3YmY1NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CkBAIC02NDQsNyArNjQ0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKIAogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0
aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSB0aGUgbG9jYXRpb24gaW4gY29u
dGFpbmVyIHNwYWNlIHdoZXJlIHRoaXMgcmVjdCBpcyB2aXNpYmxlLAotICAgIC8vIHdoZW4gY2xp
cHBpbmcgYW5kIHNjcm9sbGluZyBhcyBzcGVjaWZpZWQgYnkgdGhlIGNvbnRleHQuIFdoZW4gdXNp
bmcgZWRnZS1pbmNsdXNpdmUgaW50ZXJzZWN0aW9uLCByZXR1cm4gV1RGOjpudWxsb3B0CisgICAg
Ly8gd2hlbiBjbGlwcGluZyBhbmQgc2Nyb2xsaW5nIGFzIHNwZWNpZmllZCBieSB0aGUgY29udGV4
dC4gV2hlbiB1c2luZyBlZGdlLWluY2x1c2l2ZSBpbnRlcnNlY3Rpb24sIHJldHVybiBzdGQ6Om51
bGxvcHQKICAgICAvLyByYXRoZXIgdGhhbiBhbiBlbXB0eSByZWN0IGlmIHRoZSByZWN0IGlzIGNv
bXBsZXRlbHkgY2xpcHBlZCBvdXQgaW4gY29udGFpbmVyIHNwYWNlLgogICAgIHZpcnR1YWwgT3B0
aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5
b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIs
IFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Q7CiAgICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlzaWJsZVJl
Y3RDb250ZXh0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmgKaW5kZXggYzVlOTcyY2E1NTUzZTE4NTgzODIzMzNiZDc3Zjk5NTRhOTc0Y2UyNy4uNTJjZTY0
OWIxM2Y0ZGQyOWRiMGExMjU3MzgyNjMxMDdmYWZjNmNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNl
ZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkID0gQ29tcHV0ZUFjdHVhbCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVp
Z2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9w
dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3Qo
Y29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBy
ZXBsYWNlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gcmVwbGFjZWRDb250ZW50UmVjdChp
bnRyaW5zaWNTaXplKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAppbmRleCA5YjhjZmM0ODU2ODJhNTRlZDdjMWFiNTVkZjE1NDc3M2JmZTJhNjExLi5mOTJjOTMx
NzFlYjljMmIwMjE5NDEyNjlmNzA5NDViYzM4NmM3OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM1NSw5ICszNTUsOSBAQCBMYXlvdXRVbml0IFJlbmRl
clRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBM
ZW5ndGgmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGVMb2dpY2Fs
SGVpZ2h0LnZhbHVlKCkgLSBib3JkZXJzKTsKICAgICB9IGVsc2UgaWYgKHN0eWxlTG9naWNhbEhl
aWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJj
ZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZhbHVlT3IoMCk7CisgICAg
ICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoc3R5bGVMb2dpY2FsSGVp
Z2h0KS52YWx1ZV9vcigwKTsKICAgICBlbHNlIGlmIChzdHlsZUxvZ2ljYWxIZWlnaHQuaXNJbnRy
aW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhl
aWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5k
UGFkZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdo
dCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFkZGluZyku
dmFsdWVfb3IoMCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gMF9sdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKaW5kZXggYjc1OGI5ZTM5Mzc1YWZhYTgxZmJmZjY4M2ExYmQ5NTBkNGVmMWFjNi4uMGUz
ZDU4NGY2YTRkYTFiMTA4OTdjZDYwOTI5ZDE1YjMwZDUzNDUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRpb24oKSBjb25zdAogICAg
IC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L0NSLUNTUzIxLTIwMDcwNzE5L3RhYmxlcy5o
dG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFzZWxpbmUgb2YgYSBjZWxsIGlzIHRoZSBiYXNlbGlu
ZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1mbG93IGxpbmUgYm94IGluIHRoZSBjZWxsLCBvciB0
aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgaW4gdGhlIGNlbGwsIHdoaWNoZXZlciBjb21lcyBm
aXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBubyBzdWNoIGxpbmUgYm94IG9yIHRhYmxlLXJvdywg
dGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVudCBlZGdlIG9mIHRoZSBjZWxsIGJv
eC4KLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGJvcmRlckFuZFBhZGRp
bmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgIHJldHVybiBmaXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlX29yKGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWFya0NlbGxEaXJ0eVdo
ZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2VzKFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggY2I0NjQx
ZWZmZDFjNjMyYWIxOWY5MTU5NTI4ZWI5N2RlMDk3ODEyYi4uYzNhMDEzOTZhMmJlZjMxMDZlYTk3
NzFiZGZiOTBmMWY2NGRiNWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCBPcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAg
ICAgLy8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2VsaW5lCiAgICAgICAgIGlm
IChjZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIExh
eW91dFVuaXQgY2FuZGlkYXRlID0gY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNhbmRpZGF0ZSksIGNhbmRpZGF0
ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVfb3IoY2FuZGlk
YXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDU5Y2MwYzZiOTE5ZGU4M2M4NDNhMDNlYTk5ZmU5MzU0
NDE3YmM4ZDcuLjY0NWEzZWI1Y2U0OWFkNWI2MmMyNGM2MGZhM2FkN2Q0MTY1NTE2NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTExODYsNyArMTE4Niw3IEBA
IHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVh
ZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBnbHlwaE92
ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVlT3IoZ2x5cGhPdmVyZmxv
dy5sZWZ0KTsKKyAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93
LnZhbHVlX29yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKICAgICBpZiAoKG5lZWRzV29yZFNwYWNp
bmcgJiYgbGVuZ3RoID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFmaXJzdFdvcmQpKQogICAg
ICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CkBAIC0xNzQwLDEzICsxNzQwLDEzIEBA
IGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldChpbnQgY3VycmVudCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCiAgICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRl
cmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkp
OwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVPcihjdXJyZW50
IC0gMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZV9vcihj
dXJyZW50IC0gMSk7CiB9CiAKIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldEZvckJhY2t3
YXJkRGVsZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgQ2FjaGVkVGV4dEJyZWFrSXRl
cmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6RGVsZXRlLCBu
dWxsQXRvbSgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVl
T3IoMCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZV9vcigw
KTsKIH0KIAogaW50IFJlbmRlclRleHQ6Om5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0CkBA
IC0xNzU1LDcgKzE3NTUsNyBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVu
dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAgICAgQ2FjaGVkVGV4dEJy
ZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2Fy
ZXQsIG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5mb2xsb3dpbmcoY3VycmVudCku
dmFsdWVPcihjdXJyZW50ICsgMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhjdXJy
ZW50KS52YWx1ZV9vcihjdXJyZW50ICsgMSk7CiB9CiAKIGJvb2wgUmVuZGVyVGV4dDo6Y29tcHV0
ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CkBAIC0xNzc3LDcgKzE3NzcsNyBAQCB2
b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVkQ2hhcmFjdGVyKHVuc2ln
bmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRlclRleHQ6OnN0cmluZ1Zp
ZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wKSBjb25zdAogewotICAg
IHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9yKHRleHQoKS5sZW5ndGgoKSk7Cisg
ICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRleHQoKS5sZW5ndGgoKSk7
CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb24g
PD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5hdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA3YTZmNTUxY2RkMzI5ZDQ1YzI0YjdjZjYz
ZTExZjY4NWQyZWIyNDU2Li4xYjJiZDNlZTQ2NmNiNjU2ZjYzZjkwYzIxNmVmYzlkOWJiNjVmNGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTE2OSw3ICsxNjksNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHVzZXNDb21wbGV4TGluZUxheW91dFBhdGgoKSBjb25zdDsK
IAotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFs
PHVuc2lnbmVkPiBzdG9wID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBTdHJpbmdWaWV3IHN0
cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gc3RvcCA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjb250YWluc09ubHlIVE1MV2hpdGVz
cGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDkxNWJiNTNkYTc5ZDNk
NjI0OTM3MDE2NDM1MTlhZDgwMDAyMTU1YWQuLmU2ZjhmMjJlMTM5NmE2MmQyMzBhNTA0NzM1OWNj
YzUxMzM4NTJiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
bW0KQEAgLTU3NCw3ICs1NzQsNyBAQCBMZW5ndGhCb3ggUmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50
ZXJuYWxQYWRkaW5nQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29ucwogICAgIGZsb2F0
IHBhZGRpbmcgPSBNZW51TGlzdEJ1dHRvblBhZGRpbmdBZnRlcjsKICAgICBpZiAoc2V0dGluZ3Mu
aU9TRm9ybUNvbnRyb2xSZWZyZXNoRW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8gZW1TaXplID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1VuaXRUeXBlOjpDU1NfRU1TKTsKLSAg
ICAgICAgcGFkZGluZyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RG
OjpudWxsb3B0KSk7CisgICAgICAgIHBhZGRpbmcgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8Zmxv
YXQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCkpOwogICAgIH0KIAogICAgIGlmIChzdHlsZS5hcHBl
YXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSB7CkBAIC0xMTIzLDcgKzExMjMsNyBAQCB2
b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZShSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEVsZW1lbnQqIGVsZW1lbgogICAgIC8vIFNpbmNlIHRoZSBlbGVtZW50IG1pZ2h0IG5v
dCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3IgdGhlIHJvb3QgZWxlbWVu
dCBzdHlsZSwKICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgc3R5bGUsIGFuZCB0aGUgcmVuZGVy
IHZpZXcuCiAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwg
Q1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVM
ZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51bGxvcHQpKTsKKyAgICBpbnQgcGl4ZWxzID0gZW1T
aXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0KSk7CiAgICAgc3R5
bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBwaXhlbHMpKTsKIAogICAg
IGlmICghZWxlbWVudCkKQEAgLTEzNTQsNyArMTM1NCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbihD
U1NWCiAgICAgICAgIHJldHVybiBzeXN0ZW1Db2xvcjsKICAgICB9CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25h
bDxDb2xvcj4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVJRChDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQs
IGJvb2wgdXNlRGFya0FwcGVhcmFuY2UsIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2
ZWwpCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNv
bG9yRnJvbUNTU1ZhbHVlSUQoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBib29sIHVzZQogICAgICAg
ICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlv
bihjc3NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24sIHVzZURhcmtBcHBlYXJhbmNlKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHN0YXRpYyBSZW5kZXJUaGVtZUlPUzo6Q1NTVmFsdWVUb1N5c3RlbUNvbG9yTWFwJiBn
bG9iYWxDU1NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAoKQpAQCAtMjU2Miw3ICsyNTYyLDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zV2l0aEZvcm1D
b250cm9sUmVmcmVzaChjb25zdAogICAgIH0KIAogICAgIGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1VuaXRUeXBlOjpDU1NfRU1TKTsKLSAgICBhdXRvIGVt
UGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51bGxv
cHQpKTsKKyAgICBhdXRvIGVtUGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICBhdXRvIGdseXBoU2NhbGUgPSAwLjY1ZiAqIGVt
UGl4ZWxzIC8gZ2x5cGhTaXplLndpZHRoKCk7CiAgICAgZ2x5cGhTaXplID0gZ2x5cGhTY2FsZSAq
IGdseXBoU2l6ZTsKIApAQCAtMjU5MCw3ICsyNTkwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6
YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwg
Y28KICAgICBjb25zdGV4cHIgaW50IHNlYXJjaEZpZWxkRGVjb3JhdGlvbkVtU2l6ZSA9IDE7CiAg
ICAgY29uc3RleHByIGludCBzZWFyY2hGaWVsZERlY29yYXRpb25NYXJnaW4gPSA0OwogCi0gICAg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RGOjpudWxsb3B0KTsKKyAgICBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKHNlYXJjaEZpZWxkRGVjb3JhdGlvbkVtU2l6ZSwgQ1NTVW5pdFR5cGU6
OkNTU19FTVMpOwogICAgIGF1dG8gc2l6ZSA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4o
Y29udmVyc2lvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmlu
ZGV4IDIwMmIzNDJhNzE4NWZmYWEwZWU4ZWQwNTZhZTgzMzk4MDc2NWVmNzYuLjIzNjQxZmRmZDE3
ZDZlMzBmMTE3YThkNDU4NmMyYjdjMzMwZGE3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91
dCgpCiAgICAgaWYgKCFuZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIHsgfSwgZmFsc2UsIG1fcGFnZUxv
Z2ljYWxTaXplLnZhbHVlT3IoTGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhl
aWdodENoYW5nZWQpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhp
cywgeyB9LCBmYWxzZSwgbV9wYWdlTG9naWNhbFNpemUudmFsdWVfb3IoTGF5b3V0U2l6ZSgpKS5o
ZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwogCiAgICAgbV9wYWdlTG9naWNh
bEhlaWdodENoYW5nZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4IDIyNGVkN2NiMzEwY2VjN2FkNzYyZDdmZjYw
NjU5ODM1ZWQ4NjViODAuLjEyMzY2Zjg1ZmU4NmU4NmM0YzdmYzM4MWU3N2Y0MDBiZjgyYjQ2ZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVGV4dFJ1bjsKIGNsYXNzIFRleHREZWNvcmF0aW9u
UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKLSAgICBUZXh0RGVjb3JhdGlv
blBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNv
cmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgT3B0aW9uYWw8U3R5bGVzPiA9IFdURjo6bnVsbG9wdCk7CisgICAgVGV4dERlY29y
YXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4g
ZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBG
b250Q2FzY2FkZSYsIE9wdGlvbmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOwogICAgIAogICAg
IHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94
KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0KICAgICB2b2lkIHNldElzSG9y
aXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRh
bDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAppbmRleCAxOGU4NGJiNDVjYmMxMWM1MGE5YTIwZThiMWYyMmI5NzIwZjFk
NGVjLi5jZDk2YmQ1YTdjY2QxZGI2OWI4NDlkNjA3MGNmMTIwZjVmZjNjNDdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cApAQCAtMTAyLDcgKzEwMiw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmCiAgICAgaWYgKGxp
bmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoUmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlv
biwgbGluZVBvc2l0aW9uTW9kZSkpOworICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZh
bHVlX29yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKIH0KIAogI2lmIEVOQUJMRShERUJV
R19NQVRIX0xBWU9VVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAzYTYxZmZlZjEzYWY1YTdjOTllNmQ0NTA5OThmNjFi
NWIyNjE0YWVmLi4zNWY2N2E5MjhjZTUyNDE2YWQwZWRhMjU5YzdkYmY5NWVmOWJkNDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oCkBAIC04Miw3ICs4Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBMYXlvdXRVbml0
IGFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLmxvZ2ljYWxIZWln
aHQoKS50b0ludCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVfb3IoY2hpbGQubG9naWNhbEhlaWdodCgpLnRvSW50KCkpOwogICAgIH0KIAogICAgIHZv
aWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCAwODE0ZTUyMzFh
MjMwYzRjNzZiZDhjY2IyYjM4MzE4N2JkN2I5NzBkLi40YjAxZWMyMjZhZTM2Y2M1OTU0OGNmOTI3
Y2U4ZmMxNmEzZWMxYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTczLDcgKzczLDcgQEAgT3B0aW9u
YWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNj
cmlwdHM6OnZhbGlkYXRlQW4KICAgICAvLyBUaGUgZmlyc3QgY2hpbGQgaXMgdGhlIGJhc2UuCiAg
ICAgYXV0byBiYXNlID0gZmlyc3RDaGlsZEJveCgpOwogICAgIGlmICghYmFzZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFJlZmVyZW5jZUNoaWxkcmVuIHJlZmVyZW5jZTsKICAgICByZWZlcmVuY2UuYmFzZSA9IGJhc2U7
CkBAIC05NCw3ICs5NCw3IEBAIE9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5j
ZUNoaWxkcmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuCiAgICAgICAgIC8vIDxt
b3Zlcj4gYmFzZSBvdmVyc2NyaXB0IDwvbW92ZXI+CiAgICAgICAgIGF1dG8gc2NyaXB0ID0gYmFz
ZS0+bmV4dFNpYmxpbmdCb3goKTsKICAgICAgICAgaWYgKCFzY3JpcHQgfHwgaXNQcmVzY3JpcHRE
ZWxpbWl0ZXIoKnNjcmlwdCkgfHwgc2NyaXB0LT5uZXh0U2libGluZ0JveCgpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJlZmVyZW5jZS5maXJzdFBvc3RTY3JpcHQgPSBzY3JpcHQ7CiAgICAgICAgIHJl
dHVybiByZWZlcmVuY2U7CiAgICAgfQpAQCAtMTA2LDEwICsxMDYsMTAgQEAgT3B0aW9uYWw8UmVu
ZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6
OnZhbGlkYXRlQW4KICAgICAgICAgLy8gPG11bmRlcm92ZXI+IGJhc2Ugc3Vic2NyaXB0IHN1cGVy
c2NyaXB0IDwvbXVuZGVyb3Zlcj4KICAgICAgICAgYXV0byBzdWJTY3JpcHQgPSBiYXNlLT5uZXh0
U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXN1YlNjcmlwdCB8fCBpc1ByZXNjcmlwdERlbGlt
aXRlcigqc3ViU2NyaXB0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHN1cGVyU2NyaXB0ID0g
c3ViU2NyaXB0LT5uZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXN1cGVyU2NyaXB0IHx8
IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdXBlclNjcmlwdCkgfHwgc3VwZXJTY3JpcHQtPm5leHRT
aWJsaW5nQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVmZXJlbmNlLmZpcnN0UG9zdFNjcmlw
dCA9IHN1YlNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZTsKICAgICB9CkBAIC0xMzks
MTkgKzEzOSwxOSBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGls
ZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAgICAgICAgICAgaWYgKGlz
UHJlc2NyaXB0RGVsaW1pdGVyKCpzY3JpcHQpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBhIDxtcHJlc2NyaXB0cy8+LiBMZXQncyBjaGVjayAyYSkgYW5kIDJjKS4KICAgICAgICAgICAg
ICAgICBpZiAoIW51bWJlck9mU2NyaXB0SXNFdmVuIHx8IHJlZmVyZW5jZS5maXJzdFByZVNjcmlw
dCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICByZWZlcmVuY2Uu
Zmlyc3RQcmVTY3JpcHQgPSBzY3JpcHQtPm5leHRTaWJsaW5nQm94KCk7IC8vIFdlIGRvIDEpLgog
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5wcmVzY3JpcHREZWxpbWl0ZXIgPSBzY3JpcHQ7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBudW1i
ZXJPZlNjcmlwdElzRXZlbiA9ICFudW1iZXJPZlNjcmlwdElzRXZlbjsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBPcHRpb25hbDxSZWZlcmVuY2VDaGls
ZHJlbj4ocmVmZXJlbmNlKSA6IFdURjo6bnVsbG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KKyAgICAg
ICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVuID8gT3B0aW9uYWw8UmVmZXJlbmNlQ2hpbGRy
ZW4+KHJlZmVyZW5jZSkgOiBzdGQ6Om51bGxvcHQ7IC8vIFdlIHZlcmlmeSAyYikuCiAgICAgfQog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRo
TUxTY3JpcHRzOjpzcGFjZUFmdGVyU2NyaXB0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggZDk5ZjUzZTZkYzA0
MmM1YTFlM2E1ZTRkODU2MmUwMWI2MTFkZmVkNi4uNWY5Y2ZiM2M5Nzg4ZGQ2YTNhYzE0MDYxNDFk
ZWIzNDQwNTNiZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIFJlbmRl
ck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkKIHsKICAgICBBU1NFUlQobV9t
YXRoVmFyaWFudEdseXBoRGlydHkpOwogCi0gICAgbV9tYXRoVmFyaWFudENvZGVQb2ludCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX21hdGhWYXJpYW50Q29kZVBvaW50ID0gc3RkOjpudWxsb3B0Owog
ICAgIG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5ID0gZmFsc2U7CiAKICAgICAvLyBFYXJseSByZXR1
cm4gaWYgdGhlIHRva2VuIGVsZW1lbnQgY29udGFpbnMgUmVuZGVyRWxlbWVudHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5k
ZXggY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1M2EwMGZmYTc4YWVhMmI1YS4uOGNiMjFlZmVmY2Qx
Mzg1NjhkZDVhZDUwMTM2ZmYyYzRkOTliODQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNjQsNyArNjQsNyBAQCBw
cml2YXRlOgogICAgICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSA9IHRydWU7CiAgICAgICAg
IHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KLSAgICBPcHRpb25h
bDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgV1RGOjpudWxsb3B0IH07CisgICAg
T3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRoVmFyaWFudENvZGVQb2ludCB7IHN0ZDo6bnVsbG9wdCB9
OwogICAgIGJvb2wgbV9tYXRoVmFyaWFudElzTWlycm9yZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9tYXRoVmFyaWFudEdseXBoRGlydHkgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKaW5kZXggN2UyYjBiOTQ0ZjU2ZWUz
YmZjNzY5NDVjMGIzNWUzYTk1NGFmNWRlMi4uZDIwNDE4OTg2NzE5M2M5ZTQxNWQ3OTVlMTJlY2I0
MGMxOTA0ZTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQ
b3NpdGlvbi5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgaW50IEdyaWRQb3NpdGlvbjo6c3BhblBvc2l0
aW9uKCkgY29uc3QKIAogaW50IEdyaWRQb3NpdGlvbjo6bWF4KCkKIHsKLSAgICByZXR1cm4gZ01h
eFBvc2l0aW9uRm9yVGVzdGluZy52YWx1ZU9yKGtHcmlkTWF4UG9zaXRpb24pOworICAgIHJldHVy
biBnTWF4UG9zaXRpb25Gb3JUZXN0aW5nLnZhbHVlX29yKGtHcmlkTWF4UG9zaXRpb24pOwogfQog
CiBpbnQgR3JpZFBvc2l0aW9uOjptaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCBkZmU0YTI2MzY1NzNkYWNhNjY3OGIzYWIxZGRm
YmFkMTIyMjQ5N2ZlLi4xNDEzNzllZGE0ZjBmYTZkNmUzY2RmZmZmN2FiOTE0ZjViNDIwNTc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApA
QCAtOTAsNyArOTAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Qm94U2lkZT4gaW1hZ2VQaWVjZUhvcml6
b250YWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiAgICAgaWYgKHBpZWNlID09IEJvdHRvbUxlZnRQ
aWVjZSB8fCBwaWVjZSA9PSBCb3R0b21QaWVjZSB8fCBwaWVjZSA9PSBCb3R0b21SaWdodFBpZWNl
KQogICAgICAgICByZXR1cm4gQm94U2lkZTo6Qm90dG9tOwogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8Qm94
U2lkZT4gaW1hZ2VQaWVjZVZlcnRpY2FsU2lkZShJbWFnZVBpZWNlIHBpZWNlKQpAQCAtMTAxLDcg
KzEwMSw3IEBAIGlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlVmVydGljYWxTaWRl
KEltYWdlUGllY2UgcGllY2UpCiAgICAgaWYgKHBpZWNlID09IFRvcFJpZ2h0UGllY2UgfHwgcGll
Y2UgPT0gUmlnaHRQaWVjZSB8fCBwaWVjZSA9PSBCb3R0b21SaWdodFBpZWNlKQogICAgICAgICBy
ZXR1cm4gQm94U2lkZTo6UmlnaHQ7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNsYXNzIE5pbmVQaWVjZUltYWdlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggN2M4N2NiMTNiYWUy
ZWJiYzY1MWUyMjg5YzhmYzc2ZGI3NjU3YTUxZS4uMWE3NTYzZDA2MWNlZWI5ZmEzNmRiNzVhODVk
MzhmYjI5ODNjNDAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKICAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7
IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdDsgfQogICAgIEF1dG9z
aXplU3RhdHVzIGF1dG9zaXplU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0lkZW1wb3RlbnRU
ZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3ZlcnJpZGVT
dGF0dXMgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgaXNJZGVtcG90ZW50VGV4dEF1
dG9zaXppbmdDYW5kaWRhdGUoT3B0aW9uYWw8QXV0b3NpemVTdGF0dXM+IG92ZXJyaWRlU3RhdHVz
ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICNlbmRpZgogCiAgICAgVGV4dFNlY3VyaXR5IHRleHRT
ZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRTZWN1cml0eT4obV9yYXJl
SW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDdiZjQzOTZkNzdkMmMwYTcxYzI5MTQzNGE2
NjgxMTM2ZDY3YjY5M2QuLjQ0MGY0YTNkNTIzMmFhZDAwNjYwZDhiMjg0MTcxMWYzZWFhY2EyYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgU2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBv
KQogT3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUoY29uc3QgU2hhZG93RGF0
YSogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuICpkYXRhOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9m
ZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZz
ZXQuaAppbmRleCAzOGVkOTNjOTFmNmNiOWY2NGMyY2YyMGIzY2JhZjA0MmI0YTgxYjZiLi44MDdl
NGRiOGI3OTg4NDNmMzM3NTM2Zjk1ZTg4OGM3ODBhZjkyNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKQEAgLTY4LDcg
KzY4LDcgQEAgcHVibGljOgogCiAgICAgZmxvYXQgbGVuZ3RoT3IoZmxvYXQgZGVmYXVsdFZhbHVl
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZhbHVlT3IoZGVmYXVsdFZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZhbHVlX29yKGRlZmF1bHRWYWx1ZSk7CiAg
ICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90
aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwCmluZGV4IDQxZTI1ZjE3MmIyNjNhYjMzZjI3MDFkYjQ1NDhhNDc4MDg1
NjNkNmYuLjkwOTBmZjU4OTM0MTNjODcwYzYzZWU3NjVhODUzODMwODg1YmJkNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAK
QEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAogICAgIGlmICghcG9p
bnRJc0luc2lkZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludElu
UGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5n
QXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwCmluZGV4IDZiMDNjZjExZDFmNDVjNWM2MWNlMWFjY2NmODBjNTMwN2I1MDE5N2EuLjQzMGI0
YjkwMzdjZmNiY2I2ZjdmM2FlNTljNWIxM2E3ZTFiZTQ5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAt
MTA4LDcgKzEwOCw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR0ZvcmVpZ25PYmpl
Y3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVy
KHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgaWYgKGFkanVzdGVkUmVjdCkKICAgICAg
ICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoKmFkanVzdGVkUmVjdCk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKSBjb25zdApAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAg
ICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
IAogICAgIC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBj
bGlwcGVkIHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxv
d0hpZGRlbigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDk1
NzM3ODJjODg1N2YwOTNiYTNjOTYzMDkyZDY2NjQzZWEyNmQzMDguLjkxMWI3ZjhjYThmNjViYzBh
YTJjZWRkODNmZDUzOTI0NzkwMWVhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgYm9vbCBSZW5kZXJT
VkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2
ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2lu
dGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgp
ID09IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVz
LnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9
IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogICAgICAgICAgICAgCiAgICAgICAgIGlm
ICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2lu
dCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggY2Y0
YTc0Y2I4OGE1MjllYmEyMGQ3NzYyNzk4OWU2NjJmY2M0MTk3Mi4uNDE5YmYzNGY0ZDNkZGVmNzBl
YTlhNDE1NWQwYTFlNThiMDIzMmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMjc0LDEwICsy
NzQsMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVu
dChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0Jv
eC5sb2NhdGlvbigpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9iamVjdEJvdW5kaW5nQm94
LnNpemUoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFm
ZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgICAgIHBvaW50ID0gdHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQp
OwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRy
YW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChw
b2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0
Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYWVjNjY5NWMyODc4ZWQyOGMzODk0OWNkOTBhNTgwZTk5
NmEyYTZhZS4uNDE2MmI4MWZmM2JhYzhjYzFjMmQ4ZjQ4OTE4MTQ5OTFlYzc1NTdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwog
CiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVm
ZmVyUmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCku
d2lkdGgoKSwgMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0
KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2Us
IGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggOGEwOTc2YzY5ZmUwNzgyMjFmOWJm
NWIwNWI5NjAyMzJjZDI3MjJjYy4uNDdiMjVhMTBhNzI4NjQ5MGJiNTExODU0YTFiYzQ3MmY4ZTI4
YmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCkBAIC0zODIsNyArMzgyLDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdSb290
Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2EKICAgICBpZiAo
c2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkgewogICAgICAgICBpZiAoY29udGV4dC5vcHRpb25z
LmNvbnRhaW5zKFZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6VXNlRWRnZUluY2x1c2l2ZUludGVy
c2VjdGlvbikpIHsKICAgICAgICAgICAgIGlmICghYWRqdXN0ZWRSZWN0LmVkZ2VJbmNsdXNpdmVJ
bnRlcnNlY3Qoc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFkanVzdGVkUmVjdC5pbnRlcnNlY3Qo
c25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgfQpAQCAtMzk2LDcgKzM5Niw3
IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUZsb2F0VmlzaWJs
ZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hCiAKICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0UmVj
dD4gcmVjdEluQ29udGFpbmVyID0gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVWaXNpYmxlUmVjdElu
Q29udGFpbmVyKGVuY2xvc2luZ0ludFJlY3QoYWRqdXN0ZWRSZWN0KSwgY29udGFpbmVyLCBjb250
ZXh0KSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgqcmVjdEluQ29udGFpbmVyKTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJveCBjb29yZGluYXRlcy4KQEAgLTQzNCw3ICs0
MzQsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIC8vIFRlc3QgU1ZHIGNvbnRlbnQg
aWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhlIHZp
c3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRl
c3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJv
eFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmlld3Bv
cnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVudCkp
KSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQ
b2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxv
Y2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBv
aW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRleCBiNTM5MTYyN2Q1ODA1
YmQ2YmNlMzAwMDliOThhNmMwZDk0NzIzOTU3Li4zZGZkMjU3ZDI1NTRhNjdjMDQwMWQ1NTk4ZjRi
YTlkZTIyZWQ0NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0KIAogICAg
IExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVm
ZXJyZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBj
b21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRl
ZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGlt
YXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBs
YXlvdXQoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmYTAzYWNiZGNkN2ZkNmZhMjE2NjkzOWIz
YmNmMGUwNzdmNTk5ZDA0Li4yYTM1MzA5ODdmNDBkYTk3ZGFlNDIxZDUwZWQzZDQ2NzI1N2Q1MDRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cApAQCAtMzQ2LDcgKzM0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgaWYgKGhp
dFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlm
ICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2lu
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDg1MGVjZjcxZjYyMzI1Y2FkMTZiNmQ5OGU5YWVi
MGUxNTdjODgxYzQuLmZiZTlmNGZhOWQ2ODBhMzdhZTZmZDM4Y2I2MjMxODQwZDliYTZiZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAt
OTcsNyArOTcsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJTVkdUZXh0Ojpjb21wdXRl
VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZQogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gYWRqdXN0ZWRSZWN0ID0gY29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihy
ZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogICAgIGlmIChhZGp1c3RlZFJlY3QpCiAgICAgICAg
IHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KCphZGp1c3RlZFJlY3QpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Rmxv
YXRSZWN0PiBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29u
dGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKQEAgLTQzNSw3ICs0MzUs
NyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1
bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tl
ICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVT
dHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCku
c3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAgICAg
ICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVu
dCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChw
b2ludEluUGFyZW50KTsKIAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2lu
dEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggMGM3ODUyMDRmZTY3MmI0N2QzZjU1NDhmMzEzMzM1Nzg4
MDkyYTQ1NC4uNzE4NTMyNmI2MGM0MzgyNmNlNTBmYzI1YzQ0ZDg4ZTVkMGMyOGI4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBA
IC00MDEsNyArNDAxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwQ29udGV4dFRvQ1NT
Q2xpcHBpbmdBcmVhKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAgICAgcmVmZXJl
bmNlQm94ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybS5tYXBSZWN0KHJlZmVyZW5jZUJveCk7CiAK
ICAgICAgICAgYXV0byBwYXRoID0gY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJl
bmNlQm94KTsKLSAgICAgICAgcGF0aC50cmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgICAgICBwYXRoLnRyYW5z
Zm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkpOwogCiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgocGF0aCwgY2xpcFBhdGgud2lu
ZFJ1bGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjFkOTY4NzQ3MGViZTc4NzM2NTEyMmQwNTg4
MzIyZWM0MTRjZWViNi4uMzg3ODhiOGEyMzAyNzAwZTAxNWIzZTNkOGFhNGUwMzIzYzU2NGUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmkKIAog
ICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNv
b3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAv
LyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJz
b2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRleHQuY29uY2F0Q1RNKGFi
c29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7Cisg
ICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJz
b2x1dGVUcmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCBhYTRlOWM2ZGY3YTAyMjE5ZDU5
Njc3NjJjNmE4ZGU0YWJjOGI3NWZlLi43YmJhYjc3MmNmN2VjYjQyODY2OTZlY2Q3ZDQ0YTQ0YzFi
YmVkM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHZvaWQgUmVuZGVy
VHJlZUJ1aWxkZXI6OnJlcG9ydFZpc3VhbGx5Tm9uRW1wdHlDb250ZW50KGNvbnN0IFJlbmRlckVs
ZW1lbnQmIHBhcmVuCiAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7
CiAgICAgICAgICAgICBpZiAoIXN0eWxlLndpZHRoKCkuaXNGaXhlZCgpIHx8ICFzdHlsZS5oZWln
aHQoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAg
IHJldHVybiBtYWtlT3B0aW9uYWwoSW50U2l6ZSB7IHN0eWxlLndpZHRoKCkuaW50VmFsdWUoKSwg
c3R5bGUuaGVpZ2h0KCkuaW50VmFsdWUoKSB9KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2Vfb3B0aW9uYWwoSW50U2l6ZSB7IHN0eWxlLndpZHRoKCkuaW50VmFsdWUoKSwgc3R5bGUuaGVp
Z2h0KCkuaW50VmFsdWUoKSB9KTsKICAgICAgICAgfTsKICAgICAgICAgLy8gU1ZHIGNvbnRlbnQg
dGVuZHMgdG8gaGF2ZSBhIGZpeGVkIHNpemUgY29uc3RydWN0LiBIb3dldmVyIHRoaXMgaXMga25v
d24gdG8gYmUgaW5hY2N1cmF0ZSBpbiBjZXJ0YWluIGNhc2VzIChib3gtc2l6aW5nOiBib3JkZXIt
Ym94KSBvciBlc3BlY2lhbGx5IHdoZW4gdGhlIHBhcmVudCBib3ggaXMgb3ZlcnNpemVkLgogICAg
ICAgICBhdXRvIGNhbmRpZGF0ZVNpemUgPSBJbnRTaXplIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4
IDc1Y2I3MGViMzgzNjY2OWE2OTM0YzJjNmFjYmQyNDE4ZDJkZGRhYTIuLjAyYmIyZmFjZTZlNjMx
NDI2OWFmNTMxYjFhMTY0YWU2NTYzZjlhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoQ29udGFpbmVyTm9kZSYgcm9v
dCkKIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiAgICAgOiBlbGVtZW50KCZlbGVt
ZW50KQogICAgICwgdXBkYXRlcyh1cGRhdGVzKQotICAgICwgcmVuZGVyVHJlZVBvc2l0aW9uKGVs
ZW1lbnQucmVuZGVyZXIoKSA/IG1ha2VPcHRpb25hbChSZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1l
bnQucmVuZGVyZXIoKSkpIDogV1RGOjpudWxsb3B0KQorICAgICwgcmVuZGVyVHJlZVBvc2l0aW9u
KGVsZW1lbnQucmVuZGVyZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChSZW5kZXJUcmVlUG9zaXRp
b24oKmVsZW1lbnQucmVuZGVyZXIoKSkpIDogc3RkOjpudWxsb3B0KQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRleCA2Zjk0ZmYxYzZjODUz
NzBiMTIzOGJhMTQwZGUwOGM1YTA1Y2EyYmFkLi4xYjMzMmZkYzAxMjYxODcwN2IwM2I3MDkxNzBj
MGZmYWYyZDgxMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVs
ZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVj
dG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU2NvcGVSdWxlU2V0czsKIAogY2xhc3MgUHNl
dWRvRWxlbWVudFJlcXVlc3QgewogcHVibGljOgotICAgIFBzZXVkb0VsZW1lbnRSZXF1ZXN0KFBz
ZXVkb0lkIHBzZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJT
dGF0ZSA9IFdURjo6bnVsbG9wdCkKKyAgICBQc2V1ZG9FbGVtZW50UmVxdWVzdChQc2V1ZG9JZCBw
c2V1ZG9JZCwgT3B0aW9uYWw8U3R5bGVTY3JvbGxiYXJTdGF0ZT4gc2Nyb2xsYmFyU3RhdGUgPSBz
dGQ6Om51bGxvcHQpCiAgICAgICAgIDogcHNldWRvSWQocHNldWRvSWQpCiAgICAgICAgICwgc2Ny
b2xsYmFyU3RhdGUoc2Nyb2xsYmFyU3RhdGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmgKaW5kZXggNDQxOGZmNmFiZTE4OTQzYjAwMzViZjJhODVmNTFjODU0Mzg5MzVlZS4uMWNk
MmUzZmY1N2MwYmU5YWM3M2ZiMThhYzY1ZGI3OTU3NDkxNjRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9S
dWxlRmVhdHVyZS5oCkBAIC00MCw3ICs0MCw3IEBAIGVudW0gY2xhc3MgTWF0Y2hFbGVtZW50IDog
dWludDhfdCB7IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVjdFNpYmxpbmcsIEluCiBj
b25zdGV4cHIgdW5zaWduZWQgbWF0Y2hFbGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oTWF0Y2hFbGVtZW50OjpIb3N0KSArIDE7CiAKIHN0cnVjdCBSdWxlRmVhdHVyZSB7Ci0gICAg
UnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEmLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+ID0gV1RG
OjpudWxsb3B0KTsKKyAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0YSYsIE9wdGlvbmFsPE1h
dGNoRWxlbWVudD4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgUmVmUHRyPGNvbnN0IFN0eWxlUnVs
ZT4gc3R5bGVSdWxlOwogICAgIHVpbnQxNl90IHNlbGVjdG9ySW5kZXg7IC8vIEtlZXAgaW4gc3lu
YyB3aXRoIFJ1bGVEYXRhJ3Mgc2VsZWN0b3JJbmRleCBzaXplLgpAQCAtNTAsNyArNTAsNyBAQCBz
dHJ1Y3QgUnVsZUZlYXR1cmUgewogc3RhdGljX2Fzc2VydChzaXplb2YoUnVsZUZlYXR1cmUpIDw9
IDE2LCAiUnVsZUZlYXR1cmUgaXMgYSBmcnF1ZW50bHkgYWxvY2F0ZWQgb2JqZWN0LiBLZWVwIGl0
IHNtYWxsLiIpOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3Ig
OiBwdWJsaWMgUnVsZUZlYXR1cmUgewotICAgIFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNl
bGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBkYXRhLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNo
RWxlbWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNl
bGVjdG9yID0gbnVsbHB0cikKKyAgICBSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rv
cihjb25zdCBSdWxlRGF0YSYgZGF0YSwgT3B0aW9uYWw8TWF0Y2hFbGVtZW50PiBtYXRjaEVsZW1l
bnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZhbGlkYXRpb25TZWxlY3Rv
ciA9IG51bGxwdHIpCiAgICAgICAgIDogUnVsZUZlYXR1cmUoZGF0YSwgV1RGTW92ZShtYXRjaEVs
ZW1lbnQpKQogICAgICAgICAsIGludmFsaWRhdGlvblNlbGVjdG9yKGludmFsaWRhdGlvblNlbGVj
dG9yKQogICAgIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAppbmRleCA0ZmZmYTJiMDgxM2Y0YjlkNTZlNjMwYjdmMmZiMGUwOTViMzk4NDA3Li4wOGVl
ODUyNmRlNjUxNGQwZTcxYzU1MzA3YjJjNjE3YTFmZGIwNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRQ
b3NpdGlvbihCdWlsZGVyU3RhdGUKICAgICBHcmlkUG9zaXRpb24gZ3JpZFBvc2l0aW9uOwogICAg
IGlmIChjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGdyaWRQb3NpdGlvbikpCiAgICAgICAgIHJl
dHVybiBncmlkUG9zaXRpb247Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgR3JpZEF1dG9GbG93IEJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHcmlkQXV0b0Zsb3coQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQpAQCAtMTIzMywxNCArMTIzMywxNCBAQCBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+IEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUmIGJ1aWxkZQogICAgIGVs
c2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXR1cm4gcGVyc3BlY3Rp
dmUgPCAwID8gT3B0aW9uYWw8ZmxvYXQ+KFdURjo6bnVsbG9wdCkgOiBPcHRpb25hbDxmbG9hdD4o
cGVyc3BlY3RpdmUpOworICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAgPyBPcHRpb25hbDxmbG9h
dD4oc3RkOjpudWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVjdGl2ZSk7CiB9CiAKIGlu
bGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5j
cmVtZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgTGVuZ3RoIGxlbmd0aCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKICAgICBpZiAobGVuZ3Ro
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIApAQCAtMTI0OSw3ICsx
MjQ5LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+IEJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1aWwKICAgICBGaWx0ZXJPcGVyYXRpb25zIG9w
ZXJhdGlvbnM7CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHZh
bHVlLCBvcGVyYXRpb25zKSkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbnM7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgRm9u
dEZlYXR1cmVTZXR0aW5ncyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0
aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC0xMzA1LDcgKzEz
MDUsNyBAQCBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRGb250U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDUwogICAgIHJldHVybiBub3JtYWxTdHJldGNo
VmFsdWUoKTsKIH0KIAotLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRvIHBhcnNlZCBhbmQgdmFs
aWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBXVEY6Om51bGxvcHQgaWYgdGhlIGlucHV0IHdhcyAi
bm9ybWFsIi4KKy8vIFRoZSBpbnB1dCB2YWx1ZSBuZWVkcyB0byBwYXJzZWQgYW5kIHZhbGlkLCB0
aGlzIGZ1bmN0aW9uIHJldHVybnMgc3RkOjpudWxsb3B0IGlmIHRoZSBpbnB1dCB3YXMgIm5vcm1h
bCIuCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQoaXM8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKSk7CkBAIC0xMzEzLDcgKzEzMTMs
NyBAQCBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKAogCiAgICAgYXV0byB2YWx1ZUlEID0gZm9udFN0
eWxlVmFsdWUuZm9udFN0eWxlVmFsdWUtPnZhbHVlSUQoKTsKICAgICBpZiAodmFsdWVJRCA9PSBD
U1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUl0YWxpYykKICAg
ICAgICAgcmV0dXJuIGl0YWxpY1ZhbHVlKCk7CiAgICAgQVNTRVJUKHZhbHVlSUQgPT0gQ1NTVmFs
dWVPYmxpcXVlKTsKQEAgLTE1NTgsNyArMTU1OCw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxkZXJTdGF0ZSYgYnVpbGRl
CiAKICAgICAvLyBGSVhNRTogVGhlIHBhcnNlciBzaG91bGQgb25seSBlbWl0IHRoZSBhYm92ZSB0
eXBlcywgc28gdGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4gV2Ugc2hvdWxkIGNoYW5nZSB0
aGUKICAgICAvLyB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIGp1c3QgYSBMZW5ndGgg
KGFuZCBub3QgYW4gT3B0aW9uYWwpLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEZvbnRTeW50aGVzaXMgQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCA3
ZmY2YzYyZGZlMzNmNzA0NTRhNzBiNzI2Y2UzNDkyOGVlOThiOWE1Li43ZjAxZjljYmE1MDljM2M3
ZDlhOGU0Yzc5MTc2NzQwMTQzZThkNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaApAQCAtMTM0NCw5ICsxMzQ0LDkgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1Zh
bHUKICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5h
Y2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwogICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBtYXAp
IHsKICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKLSAgICAgICAgICAgIGtl
eVZhbHVlLnZhbHVlLnJlc2V0VmFsdWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBrZXlW
YWx1ZS52YWx1ZS5yZXNldFZhbHVlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBrZXlWYWx1ZS52YWx1ZS5pbmNyZW1lbnRWYWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlID0gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIGlmIChzZXRDb3VudGVySW5jcmVtZW50VG9Ob25lKQpAQCAtMTM2MCw3ICsx
MzYwLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoQnVp
bGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAgaWYgKGNvdW50ZXJCZWhh
dmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRpcmVjdGl2ZXMucmVzZXRWYWx1ZSA9IHZhbHVl
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlID0g
c2F0dXJhdGVkU3VtPGludD4oZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZU9yKDApLCB2
YWx1ZSk7CisgICAgICAgICAgICBkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlID0gc2F0dXJhdGVk
U3VtPGludD4oZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSwgdmFsdWUpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRm9udFJhdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250
UmF3LmNwcAppbmRleCA0YjNlZWEzMjY0MWI1MzA3YjhjODI3ZDg5NTM1NDIwNzU1MzRlM2RjLi40
MzY4NzA5MjU0NzA1ZWEwOWMyOWJmOWFlMjlmYmJlZTkxMjE3ZGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcApAQCAtOTAsNyArOTAsNyBA
QCBPcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXcoY29uc3QgRm9udFJhdyYg
Zm9udFJhdywgRm9udENhc2NhZGVEZXNjcgogICAgIH0KIAogICAgIGlmIChmYW1pbGllcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVzKGZhbWlsaWVzKTsKIAog
ICAgIGlmICh1c2VGaXhlZERlZmF1bHRTaXplKGZvbnREZXNjcmlwdGlvbikgIT0gb2xkRmFtaWx5
VXNlZEZpeGVkRGVmYXVsdFNpemUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwCmluZGV4IGYxNjc5YmMyNDYyYmQ3YWIyYzZhMWJkYTEzOGJkZjhhZTE3MjQz
NzIuLmU3ZjYyNDM2NGI2NmI3M2JjM2Y2NjJlNTY2MzVjM2RmYTFkMmY5ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBA
IHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29uc3QKICAgICBtX2F0dHJp
YnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9wc2V1ZG9DbGFzc0ludmFs
aWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAKLSAgICBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3Rv
cnNGb3JTdHlsZUF0dHJpYnV0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZEhhc0NvbXBs
ZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIG1fZmVh
dHVyZXMuc2hyaW5rVG9GaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4
IGZmYjhmNzMxZTIxZWNmN2U5N2M2ZjJjMjdhYTYzZjQyYmJiYzNlYjMuLmI2NDU4MzhhNTA5Yzk0
OTgyNWM2OGUzOWZiMTZhZTQwZWYyMTIyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNw
cApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
U3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFiCiAgICAgICAgICAg
ICAvLyBJZiBhIHRyYW5zaXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZCBvciBzdGFydGVkIHdoZW4g
YW5pbWF0aW9ucyB3ZXJlIGxhc3QgdXBkYXRlZCwgdXNlIHRoZSB0aW1lbGluZSB0aW1lIGF0IGl0
cyBjcmVhdGlvbgogICAgICAgICAgICAgLy8gYXMgaXRzIHN0YXJ0IHRpbWUgdG8gZW5zdXJlIHRo
YXQgaXQgd2lsbCBwcm9kdWNlIGEgc3R5bGUgd2l0aCBwcm9ncmVzcyA+IDAuCiAgICAgICAgICAg
ICBib29sIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPSBpczxDU1NUcmFuc2l0aW9u
PihhbmltYXRpb24pICYmICghYW5pbWF0aW9uLT5zdGFydFRpbWUoKSB8fCAqYW5pbWF0aW9uLT5z
dGFydFRpbWUoKSA9PSBzdHlsZWFibGUuZWxlbWVudC5kb2N1bWVudCgpLnRpbWVsaW5lKCkuY3Vy
cmVudFRpbWUoKSk7Ci0gICAgICAgICAgICBhbmltYXRpb24tPnJlc29sdmUoYW5pbWF0ZWRTdHls
ZSwgbnVsbHB0ciwgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA/IGRvd25jYXN0PENT
U1RyYW5zaXRpb24+KCphbmltYXRpb24pLnRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSA6IFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICBhbmltYXRpb24tPnJlc29sdmUoYW5pbWF0ZWRTdHlsZSwg
bnVsbHB0ciwgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA/IGRvd25jYXN0PENTU1Ry
YW5zaXRpb24+KCphbmltYXRpb24pLnRpbWVsaW5lVGltZUF0Q3JlYXRpb24oKSA6IHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsKICAgICAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDE3ZmQ2MTc5NGRjMzNjYTU0MmI4MmQ4Y2JjYzc1
NTVjMWJkZmIxOGYuLjY0YzExYTk1NmUyZDY5YTc5N2ZjMGJlNjA5MDViMTJkM2VlZTdmM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBTdHlsZWFi
bGUgewogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50
KCkpCiAgICAgICAgICAgICByZXR1cm4gZnJvbUVsZW1lbnQoKmVsZW1lbnQpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZWFibGUmIG90aGVyKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggMGEy
ZGIxZjJjNWViZWJjNWQ3ZGIxZGEwYTliYTQ5OTZkMTU0NWUzZS4uZGU0MThkMzFkM2RjOTQxOGU5
Yjc0ZWRlMDBhNzYwOWI3M2IwMWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xNjAsMjUgKzE2MCwyNSBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQp
CiAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0
aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykKIHsKLSAgICBt
X3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBwYXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0aW9uU3Ry
aW5nKS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRp
b24gPSBwYXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBv
aW50IHsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7Ci0gICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9u
ID0gV1RGOjpudWxsb3B0OwotICAgIG1fZnJvbVBvaW50ID0gcGFyc2VQb2ludChmcm9tU3RyaW5n
KS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKLSAgICBtX3RvUG9pbnQgPSBwYXJzZVBvaW50KHRv
U3RyaW5nKS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3RvUG9pbnRBdEVuZE9mRHVy
YXRpb24gPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21T
dHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3RvUG9pbnQgPSBwYXJzZVBv
aW50KHRvU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAgICAgCiBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5n
KQogewotICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGFuaW1hdGlv
bk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAhaXNBZGRpdGl2ZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21TdHJpbmcpLnZh
bHVlT3IoRmxvYXRQb2ludCB7IH0pOwotICAgIGF1dG8gYnlQb2ludCA9IHBhcnNlUG9pbnQoYnlT
dHJpbmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fZnJvbVBvaW50ID0gcGFyc2VQ
b2ludChmcm9tU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CisgICAgYXV0byBieVBv
aW50ID0gcGFyc2VQb2ludChieVN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOwogICAg
IG1fdG9Qb2ludCA9IEZsb2F0UG9pbnQobV9mcm9tUG9pbnQueCgpICsgYnlQb2ludC54KCksIG1f
ZnJvbVBvaW50LnkoKSArIGJ5UG9pbnQueSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCmluZGV4
IDUxY2E0MmVhYTEwMDM5NzhlZDc0NDNmOGI3YjYwODE3Y2Q3NjgwNmUuLmQxNTNkMTRiYjg2YWFk
NmI1ZDA5YjIwMWQzYWE1ZmE1MzRlMjE5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcApAQCAtNTcsNyArNTcsNyBAQCBib29sIFNW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBjb25zdAog
dm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIG1fdHlwZSA9IFNWR1RyYW5zZm9y
bWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZSh2YWx1ZSkudmFsdWVPcihTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKTsKKyAgICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3Jt
YWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKHZhbHVlKS52YWx1ZV9vcihTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKTsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBTVkdUcmFu
c2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVgpCiAgICAgICAgICAgICBtX3R5cGUgPSBT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKaW5kZXggOGIxZWRh
ODlmMmQ0NjBjYzEwM2Y5ZTE3MTQ3ZDc4MDc2NTk0ZWEyZS4uYjEzYzE5MjFkOGY5MTkwYWYxY2Uy
ZDAxMmM0YTU0YjE5NWM3YmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmNwcApAQCAtODIsNyArODIsNyBAQCBmYWlsOgogc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9y
UGFyc2luZyhzdHJpbmcsIFsmXShhdXRvIGJ1ZmZlcikgLT4gT3B0aW9uYWw8VmVjdG9yPFVuaXRC
ZXppZXI+PiB7CiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwpAQCAtOTQs
MTkgKzk0LDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VW5pdEJlemllcj4+IHBhcnNlS2V5
U3BsaW5lcyhTdHJpbmdWaWV3IHN0cmluZykKICAgICAgICAgICAgIGRlbGltUGFyc2VkID0gZmFs
c2U7CiAgICAgICAgICAgICBhdXRvIHBvc0EgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAg
ICAgICAgaWYgKCFwb3NBKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBw
b3NCID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgICAgIGlmICghcG9zQikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGF1dG8gcG9zQyA9IHBhcnNlTnVtYmVyKGJ1ZmZl
cik7CiAgICAgICAgICAgICBpZiAoIXBvc0MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
ICAgICBhdXRvIHBvc0QgPSBwYXJzZU51bWJlcihidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5
OjpEb250U2tpcCk7CiAgICAgICAgICAgICBpZiAoIXBvc0QpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKIApAQCAtMTE5LDcg
KzExOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VW5pdEJlemllcj4+IHBhcnNlS2V5U3Bs
aW5lcyhTdHJpbmdWaWV3IHN0cmluZykKICAgICAgICAgfQogCiAgICAgICAgIGlmICghKGJ1ZmZl
ci5hdEVuZCgpICYmICFkZWxpbVBhcnNlZCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGVmZjQ0M2M0
MDZmNjBjNzBiMGNhMGFmMDI4MzRhYTliMzA2Njc1MWQuLjdkMmI5ZGE3ZTQwMzE4MjgwMGY0NTkw
NjhjZjEwOTNjMTdkOTYzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTMwNCw3
ICszMDQsNyBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6OmdldEJvdW5kaW5nQm94
KCkgY29uc3QKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5vYmplY3RCb3VuZGluZ0JveCgpOwogICAgIH0K
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IFZlY3RvcjxSZWY8U1ZHRWxlbWVudD4+IFNWR0VsZW1lbnQ6OnJlZmVyZW5jaW5nRWxlbWVudHMo
KSBjb25zdApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsCiAKICAg
ICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnRhYmluZGV4QXR0cikgewogICAgICAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KFdURjo6bnVs
bG9wdCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdl
cih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJ
bmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggZWFjOGVmODk5MTgyNjBiMDU2
YzkxNmE4MTJiNGFiYmNkNTdmMWM0OS4uZjc1MDU4MTVkZWNhYmI0ZWEzNGI0MzViNDdlYTVhODBj
NmEyNmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQuY3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cikgewotICAg
ICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5hbChwYXJzZUludGVnZXI8dW5zaWduZWQ+
KHZhbHVlKS52YWx1ZU9yKDApKTsKKyAgICAgICAgbV90YXJnZXRYLT5zZXRCYXNlVmFsSW50ZXJu
YWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVfb3IoMCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFlBdHRyKSB7
Ci0gICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNp
Z25lZD4odmFsdWUpLnZhbHVlT3IoMCkpOworICAgICAgICBtX3RhcmdldFktPnNldEJhc2VWYWxJ
bnRlcm5hbChwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcAppbmRleCBjMzI0MjQzYWQ3YTQ4YzkwMjg5OGVhOThlZGNjY2VlMzA1ZGVk
MmZlLi4xMTU2MTExOWQ4M2UzZmM3ODhhNDJiMTQ4NjdjNjU2NDEyMzM0YTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIG1fbnVtT2N0YXZlcy0+c2V0QmFzZVZh
bEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCkpOworICAg
ICAgICBtX251bU9jdGF2ZXMtPnNldEJhc2VWYWxJbnRlcm5hbChwYXJzZUludGVnZXI8dW5zaWdu
ZWQ+KHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKaW5kZXggMzc3OGI0Zjk0MDU2YTBhY2ZlNDQw
NWNmNGMxYzI1ZWM1NzlkMDlkYi4uZTYxZTYxYWZlZWRhYTNhNTZhNDc1YmNhNTk1MWIwY2FlMDBm
MDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKQEAgLTExOCwzMCAr
MTE4LDMwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEZsb2F0
UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCCiAKICAgICAgICAgaWYgKCF4IHx8ICF5
IHx8ICF3aWR0aCB8fCAhaGVpZ2h0KSB7CiAgICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdF
eHRlbnNpb25zKCkucmVwb3J0V2FybmluZyhtYWtlU3RyaW5nKCJQcm9ibGVtIHBhcnNpbmcgdmll
d0JveD1cIiIsIHN0cmluZ1RvUGFyc2UsICJcIiIpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3aWR0aCBpcyBwb3NpdGl2ZS4KICAgICAgICAgaWYgKCp3
aWR0aCA8IDAuMCkgewogICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygp
LnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IHdpZHRoIGlzIG5vdCBh
bGxvd2VkIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQg
aGVpZ2h0IGlzIHBvc2l0aXZlLgogICAgICAgICBpZiAoKmhlaWdodCA8IDAuMCkgewogICAgICAg
ICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0
aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBpcyBub3QgYWxsb3dlZCIpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3RoaW5nIHNob3VsZCBjb21lIGFmdGVyIHRoZSBs
YXN0LCBmb3VydGggbnVtYmVyLgogICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVy
KTsKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkpIHsKICAgICAg
ICAgICAgIGRvY3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBvcnRXYXJuaW5nKG1ha2VT
dHJpbmcoIlByb2JsZW0gcGFyc2luZyB2aWV3Qm94PVwiIiwgc3RyaW5nVG9QYXJzZSwgIlwiIikp
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gRmxvYXRSZWN0IHsg
eC52YWx1ZU9yKDApLCB5LnZhbHVlT3IoMCksIHdpZHRoLnZhbHVlT3IoMCksIGhlaWdodC52YWx1
ZU9yKDApIH07CisgICAgcmV0dXJuIEZsb2F0UmVjdCB7IHgudmFsdWVfb3IoMCksIHkudmFsdWVf
b3IoMCksIHdpZHRoLnZhbHVlX29yKDApLCBoZWlnaHQudmFsdWVfb3IoMCkgfTsKIH0KIAogQWZm
aW5lVHJhbnNmb3JtIFNWR0ZpdFRvVmlld0JveDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShjb25z
dCBGbG9hdFJlY3QmIHZpZXdCb3hSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUmIHByZXNlcnZlQXNwZWN0UmF0aW8sIGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKaW5kZXggMTdmN2Uw
Nzc5YmNjMzEyN2FjZDRmYzc0YWY2ZTQ0Mjg2Njg0MTEzYy4uN2VkNjNjMmRmMjBhNjVmNDgzNjEz
NGYzNzRhZjgzNDQ5ZmQ4MGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxl
bWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBTVkdHbHlwaFJlZkVsZW1lbnQ6Omhhc1Zh
bGlkR2x5cGhFbGVtZW50KFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdAogCiBzdGF0aWMgZmxvYXQg
cGFyc2VGbG9hdChjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gcGFyc2VO
dW1iZXIodmFsdWUpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNlTnVtYmVyKHZhbHVlKS52
YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBTVkdHbHlwaFJlZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAppbmRleCBlNGViZmZiYzVkN2VkNmM2Zjgw
ZTllZTEwM2Q5MDQ2YzhlMDlmMTBlLi42ODA3ZjZiYjRiMmQ4NDQwMDE1NDkwZGRlZTNlOWMxZjRl
ZDUwODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcApAQCAtNDksMzAg
KzQ5LDMwIEBAIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBTVkdIS2VybkVsZW1lbnQ6OmJ1aWxk
SG9yaXpvbnRhbEtlcm5pbmdQYWlyKCkgY29uc3QKICAgICBhdXRvJiB1MSA9IGF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnUxQXR0cik7CiAgICAgYXV0byYgZzEgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpnMUF0dHIpOwogICAgIGlm
ICh1MS5pc0VtcHR5KCkgJiYgZzEuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgdTIgPSBhdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp1MkF0dHIpOwogICAgIGF1dG8m
IGcyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZzJBdHRyKTsK
ICAgICBpZiAodTIuaXNFbXB0eSgpICYmIGcyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ2x5
cGhOYW1lMSA9IHBhcnNlR2x5cGhOYW1lKGcxKTsKICAgICBpZiAoIWdseXBoTmFtZTEpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgYXV0byBnbHlwaE5hbWUyID0gcGFyc2VHbHlwaE5hbWUoZzIpOwogICAgIGlmICghZ2x5cGhO
YW1lMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBhdXRvIHVuaWNvZGVTdHJpbmcxID0gcGFyc2VLZXJuaW5nVW5pY29kZVN0
cmluZyh1MSk7CiAgICAgaWYgKCF1bmljb2RlU3RyaW5nMSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHVuaWNvZGVT
dHJpbmcyID0gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyh1Mik7CiAgICAgaWYgKCF1bmljb2Rl
U3RyaW5nMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBhdXRvIGtlcm5pbmcgPSBh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjprQXR0cikuc3RyaW5nKCku
dG9GbG9hdCgmb2spOwogICAgIGlmICghb2spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU1ZHS2VybmluZ1Bh
aXIgewogICAgICAgICBXVEZNb3ZlKHVuaWNvZGVTdHJpbmcxLT5maXJzdCksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAppbmRleCBkYzgyMDJkNDY3MzJiOTlmZDJjYTI3ODE1OGNl
YWM2YjFjYjU3MzI0Li43NzRmNDNlZGQ0YTFlNjQ1ZGRhNjM0MDg1MzIzYTc3MmFhZDIyZTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBP
cHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlIGxlbmd0aE1vZGUsIFN0cgogewogICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aCB7IGxl
bmd0aE1vZGUgfTsKICAgICBpZiAobGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmlu
ZykuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAppbmRleCBiMjBlM2U3MTA4ZTlkODc2YTQx
NmM4ZWIyYmJmMTEyNmI1MjQ0ZjFhLi5lNTQ2NTM1ZmY4MGI0ZDFmMWU4NjNlZmQwYzhiMmM0MTdl
OWFlNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcApAQCAt
NjIsNyArNjIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUg
RmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBPcHRpb25hbDxGbAogICAgIH0gCiAgICAgCiAgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpIHx8ICghaXNBU0NJSURpZ2l0KCpidWZmZXIpICYmICpidWZmZXIg
IT0gJy4nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIHJlYWQgdGhlIGludGVnZXIgcGFydCwgYnVpbGQgcmlnaHQt
dG8tbGVmdAogICAgIGF1dG8gcHRyU3RhcnRJbnRQYXJ0ID0gYnVmZmVyLnBvc2l0aW9uKCk7CkBA
IC03OSw3ICs3OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFt
ZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAgICAgICAgIH0KICAgICAg
ICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhpcyBvdmVyZmxvd3MuCiAgICAgICAgIGlmICghaXNW
YWxpZFJhbmdlKGludGVnZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gcmVhZCB0aGUg
ZGVjaW1hbHMKQEAgLTg4LDcgKzg4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwKICAgICAg
ICAgCiAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgYSBsZWFzdCBvbmUgZGlnaXQgZm9sbG93aW5n
IHRoZSAuCiAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSB8fCAhaXNBU0NJSURpZ2l0KCpidWZm
ZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJh
Y3RlcnNSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCiAgICAgICAgICAgICBk
ZWNpbWFsICs9ICgqKGJ1ZmZlcisrKSAtICcwJykgKiAoZnJhYyAqPSBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KDAuMSkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZs
CiAgICAgICAgIAogICAgICAgICAvLyBUaGVyZSBtdXN0IGJlIGFuIGV4cG9uZW50CiAgICAgICAg
IGlmIChidWZmZXIuYXRFbmQoKSB8fCAhaXNBU0NJSURpZ2l0KCpidWZmZXIpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgd2hpbGUgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkgJiYgaXNB
U0NJSURpZ2l0KCpidWZmZXIpKSB7CiAgICAgICAgICAgICBleHBvbmVudCAqPSBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KDEwKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBPcHRpb25h
bDxGbAogICAgICAgICB9CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBleHBvbmVudCBpcyB2YWxpZC4K
ICAgICAgICAgaWYgKCFpc1ZhbGlkUmFuZ2UoZXhwb25lbnQpIHx8IGV4cG9uZW50ID4gc3RkOjpu
dW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjptYXhfZXhwb25lbnQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBudW1iZXIgPSBpbnRlZ2VyICsgZGVjaW1hbDsKQEAgLTEyOCwxMCArMTI4LDEwIEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBm
bG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAKICAgICAvLyBEb24ndCByZXR1cm4gSW5maW5pdHko
KSBvciBOYU4oKS4KICAgICBpZiAoIWlzVmFsaWRSYW5nZShudW1iZXIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHN0YXJ0ID09IGJ1ZmZlci5wb3NpdGlvbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHNraXAgPT0gU3VmZml4
U2tpcHBpbmdQb2xpY3k6OlNraXApCiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlc09yRGVs
aW1pdGVyKGJ1ZmZlcik7CkBAIC0xNTQsNyArMTU0LDcgQEAgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNl
TnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tp
cCkKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW3NraXBdKGF1
dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxmbG9hdD4gewogICAgICAgICBhdXRvIHJlc3VsdCA9IGdl
bmVyaWNQYXJzZU51bWJlcihidWZmZXIsIHNraXApOwogICAgICAgICBpZiAoIWJ1ZmZlci5hdEVu
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSk7CiB9CkBAIC0x
NjQsNyArMTY0LDcgQEAgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1Zp
ZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVy
LmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlIGZsYWdDaGFyID0gKmJ1ZmZl
cjsKICAgICArK2J1ZmZlcjsKQEAgLTE3NSw3ICsxNzUsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Ym9vbD4gZ2VuZXJpY1BhcnNlQXJjRmxhZyhTdHJpbmdQ
YXJzaQogICAgIGVsc2UgaWYgKGZsYWdDaGFyID09ICcxJykKICAgICAgICAgZmxhZyA9IHRydWU7
CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0ZXIoYnVm
ZmVyKTsKICAgICAKQEAgLTE5NSwyMiArMTk1LDIyIEBAIE9wdGlvbmFsPGJvb2w+IHBhcnNlQXJj
RmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQogT3B0aW9uYWw8c3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3QgU3RyaW5n
VmlldyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBP
cHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gewogICAgICAgICBhdXRvIHggPSBwYXJz
ZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXgpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoKngs
ICp4KTsKIAogICAgICAgICBhdXRvIHkgPSBwYXJzZU51bWJlcihidWZmZXIsIFN1ZmZpeFNraXBw
aW5nUG9saWN5OjpEb250U2tpcCk7CiAgICAgICAgIGlmICgheSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoKngsICp5KTsKICAgICB9KTsKQEAgLTIxOSwxNSArMjE5LDE1IEBAIE9wdGlv
bmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKGNv
bnN0IFN0cmluZ1ZpZXcmIHN0CiBPcHRpb25hbDxGbG9hdFBvaW50PiBwYXJzZVBvaW50KGNvbnN0
IFN0cmluZ1ZpZXcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZl
cikgLT4gT3B0aW9uYWw8RmxvYXRQb2ludD4gewogICAgICAgICBpZiAoIXNraXBPcHRpb25hbFNW
R1NwYWNlcyhidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBwb2ludCA9IHBhcnNl
RmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgLy8gRGlzYWxsb3cgYW55dGhpbmcgZXhjZXB0IHNwYWNlcyBhdCB0aGUgZW5kLgogICAg
ICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKQEAgLTI0MywxNiArMjQzLDE2IEBA
IE9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykK
ICAgICAgICAgCiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAg
IGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHkgPSBwYXJzZU51bWJlcihidWZmZXIp
OwogICAgICAgICBpZiAoIXkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byB3aWR0aCA9IHBhcnNl
TnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICghd2lkdGgpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
YXV0byBoZWlnaHQgPSBwYXJzZU51bWJlcihidWZmZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5OjpE
b250U2tpcCk7CiAgICAgICAgIGlmICghaGVpZ2h0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIEZsb2F0UmVjdCB7ICp4LCAqeSwgKndpZHRoLCAqaGVpZ2h0IH07CiAgICAgfSk7CkBAIC0y
OTMsNyArMjkzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKIHsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCk7CiAgICAgaWYgKGxlbmd0aCA8IDIgfHwg
YnVmZmVyWzBdICE9ICdVJyB8fCBidWZmZXJbMV0gIT0gJysnKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYnVmZmVyICs9
IDI7CiAKQEAgLTMwNiw3ICszMDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgT3B0aW9uYWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNvZGVSYW5nZQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICsrc3RhcnRMZW5ndGg7CiAgICAgICAgIGlmIChzdGFydExl
bmd0aCA+IDYpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc3RhcnRSYW5nZSA9IChzdGFydFJhbmdlIDw8
IDQpIHwgdG9BU0NJSUhleFZhbHVlKCpidWZmZXIpOwogICAgICAgICArK2J1ZmZlcjsKICAgICB9
CkBAIC0zMTQsNyArMzE0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAgICAvLyBIYW5k
bGUgdGhlIGNhc2Ugb2YgcmFuZ2VzIHNlcGFyYXRlZCBieSAiLSIgc2lnbi4KICAgICBpZiAoMiAr
IHN0YXJ0TGVuZ3RoIDwgbGVuZ3RoICYmICpidWZmZXIgPT0gJy0nKSB7CiAgICAgICAgIGlmICgh
c3RhcnRMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIC8vIFBhcnNlIHRoZSBl
bmRpbmcgaGV4IG51bWJlciAob3IgaXRzIHByZWZpeCkuCiAgICAgICAgIHVuc2lnbmVkIGVuZFJh
bmdlID0gMDsKQEAgLTMyNSwxMyArMzI1LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHN0YXRpYyBPcHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICArK2VuZExlbmd0aDsKICAgICAgICAg
ICAgIGlmIChlbmRMZW5ndGggPiA2KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGVu
ZFJhbmdlID0gKGVuZFJhbmdlIDw8IDQpIHwgdG9BU0NJSUhleFZhbHVlKCpidWZmZXIpOwogICAg
ICAgICAgICAgKytidWZmZXI7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghZW5k
TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBVbmljb2RlUmFuZ2UgcmFuZ2U7
CiAgICAgICAgIHJhbmdlLmZpcnN0ID0gc3RhcnRSYW5nZTsKQEAgLTM0NiwxNCArMzQ2LDE0IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxVbmljb2Rl
UmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgKytz
dGFydExlbmd0aDsKICAgICAgICAgaWYgKHN0YXJ0TGVuZ3RoID4gNikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBzdGFydFJhbmdlIDw8PSA0OwogICAgICAgICBlbmRSYW5nZSA9IChlbmRSYW5nZSA8PCA0
KSB8IDB4RjsKICAgICAgICAgKytidWZmZXI7CiAgICAgfQogICAgIAogICAgIGlmICghc3RhcnRM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgVW5pY29kZVJhbmdlIHJhbmdlOwogICAgIHJhbmdlLmZpcnN0
ID0gc3RhcnRSYW5nZTsKQEAgLTM5NywxMSArMzk3LDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRQb2ludD4gZ2VuZXJpY1BhcnNlRmxv
YXRQCiB7CiAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICBpZiAoIXgpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIHkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgIGlmICgheSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBGbG9hdFBvaW50IHsgKngsICp5IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhCbGVuZGVyLmNwcAppbmRleCAyMWMyYTIxN2IxMjlhMzY1MzM4NWMwYjk4MDg2ODViNWVhNjdh
MzEyLi41MTUwYzgyN2Q1NDYzYzk2MjAxNzkxYWY5NDRlN2NlZTdhYjg5ZWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKQEAgLTEyNiwxMyArMTI2LDEzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0aW9uPiBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0UGFpcjxGdW5jdGlvbj4+
IHB1bGxGcm9tU291cmNlCiAgICAgaWYgKGZyb21Tb3VyY2UuaGFzTW9yZURhdGEoKSkgewogICAg
ICAgICBhdXRvIHBhcnNlZEZyb20gPSBzdGQ6Omludm9rZShmdW5jdGlvbiwgZnJvbVNvdXJjZSk7
CiAgICAgICAgIGlmICghcGFyc2VkRnJvbSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBmcm9tUmVzdWx0
ID0gV1RGTW92ZSgqcGFyc2VkRnJvbSk7CiAgICAgfQogCiAgICAgYXV0byBwYXJzZWRUbyA9IHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdGlvbj4oZnVuY3Rpb24pLCB0b1NvdXJjZSk7CiAg
ICAgaWYgKCFwYXJzZWRUbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBSZXN1bHRQYWlyPEZ1bmN0aW9uPiB7
IFdURk1vdmUoZnJvbVJlc3VsdCksIFdURk1vdmUoKnBhcnNlZFRvKSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpc3QuaAppbmRleCA5NGY2ZjM5ZTRlMWYxYjY3NDQzM2NhMjUwMTUzODE4
ZjRmNjJmZTQyLi5jZTg3YjBiNjJlNjY5Zjg3ZDMzOTQzNGM0NGYwNzQ1YjVkOWM1NzBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaApAQCAtMjEwLDcgKzIxMCw3IEBAIHByaXZhdGU6
CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclBhdGhCeXRlU3RyZWFtKCkgeyBtX3BhdGhCeXRlU3Ry
ZWFtLmNsZWFyKCk7IH0KLSAgICB2b2lkIGNsZWFyUGF0aCgpIHsgbV9wYXRoID0gV1RGOjpudWxs
b3B0OyB9CisgICAgdm9pZCBjbGVhclBhdGgoKSB7IG1fcGF0aCA9IHN0ZDo6bnVsbG9wdDsgfQog
CiAgICAgdm9pZCBwYXRoQnl0ZVN0cmVhbVdpbGxDaGFuZ2UoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcAppbmRleCA0NjFkMjhkNTY2YjBlOGYxYjBj
NjkxYWJkMTU5YzA5NTY2YWQzNmVkLi45YmJlOTMzOWQ2MmE1ZjIzMmJjZmEwODlmOGY2NzMwMWJh
NGUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCkBA
IC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
T3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IG5leHRDb21tYW5kSGVsCiAgICAgICAgIHJldHVybiBw
cmV2aW91c0NvbW1hbmQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBTVkdQYXRoU2VnVHlwZSBTVkdQYXRoU3RyaW5nU291
cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSBwcmV2aW91c0NvbW1hbmQpCkBAIC0xNDIs
NyArMTQyLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRvU2VnbWVudD4gU1ZHUGF0
aFN0cmluZ1NvdXJjZTo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKICAgICByZXR1cm4gcGFyc2UoW10o
YXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxNb3ZlVG9TZWdtZW50PiB7CiAgICAgICAgIGF1dG8g
dGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCF0YXJn
ZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgTW92ZVRvU2VnbWVudCBzZWdt
ZW50OwogICAgICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gV1RGTW92ZSgqdGFyZ2V0UG9pbnQp
OwpAQCAtMTU1LDcgKzE1NSw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVUb1NlZ21l
bnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvU2VnbWVudCgpCiAgICAgcmV0dXJu
IHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvU2VnbWVudD4gewogICAg
ICAgICBhdXRvIHRhcmdldFBvaW50ID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAg
IGlmICghdGFyZ2V0UG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIExpbmVUb1Nl
Z21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC50YXJnZXRQb2ludCA9IFdURk1vdmUoKnRh
cmdldFBvaW50KTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpM
aW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVAog
ICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPExpbmVUb0hvcml6
b250YWxTZWdtZW50PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAg
ICAgICAgIGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC54ID0gKng7CkBAIC0xODEsNyAr
MTgxLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVydGljYWxTZWdtZW50PiBT
VkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1YKICAgICByZXR1cm4gcGFyc2UoW10oYXV0
byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IHsKICAgICAgICAg
YXV0byB5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCF5KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIAogICAgICAgICBMaW5lVG9WZXJ0aWNhbFNlZ21lbnQgc2VnbWVudDsKICAgICAg
ICAgc2VnbWVudC55ID0gKnk7CkBAIC0xOTQsMTUgKzE5NCwxNSBAQCBPcHRpb25hbDxTVkdQYXRo
U291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1
cnZlVG9DdQogICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1
cnZlVG9DdWJpY1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byBwb2ludDEgPSBwYXJzZUZsb2F0UG9p
bnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDEpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBh
dXRvIHBvaW50MiA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50
MikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9p
bnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCF0YXJnZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIEN1cnZlVG9DdWJpY1NlZ21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC5wb2ludDEg
PSAqcG9pbnQxOwpAQCAtMjE3LDExICsyMTcsMTEgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6
Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXIK
ICAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxDdXJ2ZVRvQ3Vi
aWNTbW9vdGhTZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcG9pbnQyID0gcGFyc2VGbG9hdFBvaW50
KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0
byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRh
cmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnBvaW50MiA9ICpwb2ludDI7CkBAIC0yMzUsMTEg
KzIzNSwxMSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvUXVhZHJhdGljU2VnbWVu
dD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZQogICAgIHJldHVybiBwYXJzZShbXShh
dXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiB7CiAgICAg
ICAgIGF1dG8gcG9pbnQxID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICgh
cG9pbnQxKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxv
YXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVu
dC5wb2ludDEgPSAqcG9pbnQxOwpAQCAtMjUzLDcgKzI1Myw3IEBAIE9wdGlvbmFsPFNWR1BhdGhT
b3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNl
OjpwYXJzCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3Vy
dmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9
IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQgc2VnbWVudDsK
ICAgICAgICAgc2VnbWVudC50YXJnZXRQb2ludCA9ICp0YXJnZXRQb2ludDsKQEAgLTI2NiwyMiAr
MjY2LDIyIEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2VnbWVudD4gU1ZHUGF0aFN0
cmluZ1NvdXJjZTo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgIHJldHVybiBwYXJzZShbXShhdXRv
JiBidWZmZXIpIC0+IE9wdGlvbmFsPEFyY1RvU2VnbWVudD4gewogICAgICAgICBhdXRvIHJ4ID0g
cGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCFyeCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBhdXRvIHJ5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCFyeSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBhdXRvIGFuZ2xlID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAg
aWYgKCFhbmdsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGxhcmdlQXJjID0gcGFyc2VBcmNG
bGFnKGJ1ZmZlcik7CiAgICAgICAgIGlmICghbGFyZ2VBcmMpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
YXV0byBzd2VlcCA9IHBhcnNlQXJjRmxhZyhidWZmZXIpOwogICAgICAgICBpZiAoIXN3ZWVwKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9pbnQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCF0YXJnZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEFy
Y1RvU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnJ4ID0gKnJ4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmluZGV4IDVmMjAzOTQzYjA1
N2I1YjNiZmRjZTJiYTJmMTQ5OWNkODQwYzRjYjMuLmU1YjhmZWRkMDJmMzRlZjE5YmQ3Y2VjNmJh
NzgyZTgwOTc2Mzk3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZv
bnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVy
dGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5n
CiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAgICAgICAgIG1fbWluUmlnaHRTaWRlQmVhcmlu
ZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVhcmluZywgaG9yaXpvbnRhbEFkdmFuY2UgLSBn
bHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgpKTsKIAotICAgIG1fZ2x5cGhzLmFwcGVuZChH
bHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwg
dmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpLCBj
b2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgp
LCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBo
Qm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CiB9CiAKIHZv
aWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRMaWdhdHVyZUdseXBocygpCkBAIC0xNDE2
LDcgKzE0MTYsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZlcnRl
cihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgICAgICAgICBwcm9jZXNz
R2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwgZGVmYXVsdEhvcml6b250
YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2RlQXR0cmlidXRlLCBib3Vu
ZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVl
T3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1ZV9v
cihGbG9hdFJlY3QoKSk7CiAKICAgICBhcHBlbmRMaWdhdHVyZUdseXBocygpOwogCkBAIC0xNTU4
LDkgKzE1NTgsOSBAQCBPcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZlcnRTVkdUb09URkZvbnQo
Y29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgU1ZHVG9PVEZGb250Q29udmVy
dGVyIGNvbnZlcnRlcihlbGVtZW50KTsKICAgICBpZiAoY29udmVydGVyLmVycm9yKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFjb252ZXJ0ZXIuY29udmVydFNWR1RvT1RGRm9udCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBj
b252ZXJ0ZXIucmVsZWFzZVJlc3VsdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtYWJsZS5jcHAKaW5kZXggNzFhNTFlMjE0OTc2YTNmYjgwZmQxMGY2Y2FiNDk5NDc4NzBiYTYy
Zi4uODljYmQ3OTYzM2I3NjBiMTA3YzAwNGE0ZjJhNWMyMGM2YzQyODdmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcApAQCAtMTAyLDEyICsxMDIsMTIgQEAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgb3B0aW9uYWxWYWx1ZXNGb3JUeXBlW10gPSAgeyAwLCAwLCAxLCAxLCAy
LCAwLCAwIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9u
YWw8U1ZHVHJhbnNmb3JtVmFsdWU+IHBhcnNlVHJhbnNmb3JtVmFsdWVHZW5lcmljKFNWR1RyYW5z
Zm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAodHlwZSA9PSBTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IHZhbHVlQ291bnQgPSAwOwog
ICAgIGZsb2F0IHZhbHVlc1tdID0gezAsIDAsIDAsIDAsIDAsIDB9OwogICAgIGlmICgodmFsdWVD
b3VudCA9IHBhcnNlVHJhbnNmb3JtUGFyYW1MaXN0KGJ1ZmZlciwgdmFsdWVzLCByZXF1aXJlZFZh
bHVlc0ZvclR5cGVbdHlwZV0sIG9wdGlvbmFsVmFsdWVzRm9yVHlwZVt0eXBlXSkpIDwgMCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9ybTsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0
aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbWF0cml4RGVzY1tdID0KIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZH
VHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhTdHJpbmdQYXJzaW5nQnVm
ZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKCpidWZmZXIgPT0gJ3MnKSB7CiAgICAgICAgIGlmIChza2lwQ2hhcmFjdGVy
c0V4YWN0bHkoYnVmZmVyLCBza2V3WERlc2M8Q2hhcmFjdGVyVHlwZT4pKQpAQCAtMTc1LDcgKzE3
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtCiAgICAgICAgICAgICByZXR1cm4gU1ZHVHJh
bnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fU0tFV1k7CiAgICAgICAgIGlmIChza2lwQ2hhcmFj
dGVyc0V4YWN0bHkoYnVmZmVyLCBzY2FsZURlc2M8Q2hhcmFjdGVyVHlwZT4pKQogICAgICAgICAg
ICAgcmV0dXJuIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1NDQUxFOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCB0cmFuc2xhdGVEZXNj
PENoYXJhY3RlclR5cGU+KSkKQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5z
Zm9ybQogICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBtYXRyaXhEZXNjPENo
YXJhY3RlclR5cGU+KSkKICAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJB
TlNGT1JNX01BVFJJWDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU6OlNWR1RyYW5zZm9y
bVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZShTdHJpbmdWaWV3IHN0
cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKaW5kZXggYmMzNTRkYTIz
N2NlYTZkNGMxZTFiNjdmNzliZjNlMjQ3MTE4MDQ5OC4uZGQxYjg5MjBjZDZmMGMwYjg1NmM4ZjJi
NDYzNGJhZGE4Y2JhYTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJu
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAK
QEAgLTQ4LDMwICs0OCwzMCBAQCBPcHRpb25hbDxTVkdLZXJuaW5nUGFpcj4gU1ZHVktlcm5FbGVt
ZW50OjpidWlsZFZlcnRpY2FsS2VybmluZ1BhaXIoKSBjb25zdAogICAgIGF1dG8mIHUxID0gYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTFBdHRyKTsKICAgICBhdXRv
JiBnMSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmcxQXR0cik7
CiAgICAgaWYgKHUxLmlzRW1wdHkoKSAmJiBnMS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB1
MiA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnUyQXR0cik7CiAg
ICAgYXV0byYgZzIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpn
MkF0dHIpOwogICAgIGlmICh1Mi5pc0VtcHR5KCkgJiYgZzIuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBnbHlwaE5hbWUxID0gcGFyc2VHbHlwaE5hbWUoZzEpOwogICAgIGlmICghZ2x5cGhOYW1l
MSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBhdXRvIGdseXBoTmFtZTIgPSBwYXJzZUdseXBoTmFtZShnMik7CiAgICAgaWYg
KCFnbHlwaE5hbWUyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmluZzEgPSBwYXJzZUtlcm5pbmdV
bmljb2RlU3RyaW5nKHUxKTsKICAgICBpZiAoIXVuaWNvZGVTdHJpbmcxKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8g
dW5pY29kZVN0cmluZzIgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKHUyKTsKICAgICBpZiAo
IXVuaWNvZGVTdHJpbmcyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGF1dG8ga2Vy
bmluZyA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmtBdHRyKS5z
dHJpbmcoKS50b0Zsb2F0KCZvayk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTVkdL
ZXJuaW5nUGFpciB7CiAgICAgICAgIFdURk1vdmUodW5pY29kZVN0cmluZzEtPmZpcnN0KSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCBkNWQ5NzdmZmE1ZmNiN2UwNWIyYWY1
NTY1MTAxNWVhYmMyMzQyYzI3Li5kMjdmOGU1MjJkNzQ2MWU2ZGY5MTc4MGM1Yzk3OTdkMDg5MWEx
MjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCkBAIC0zOCw3ICszOCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdab29t
QW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kCiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShi
dWZmZXIsIG1hZ25pZnk8Q2hhcmFjdGVyVHlwZT4pKQogICAgICAgICByZXR1cm4gU1ZHWm9vbUFu
ZFBhbk1hZ25pZnk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBlPiBTVkdab29tQW5kUGFu
OjpwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hhcj4mIGJ1ZmZlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3Jh
dGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
RGVjb3JhdGVkUHJvcGVydHkuaAppbmRleCA0YzE2ZDhmOWU1MDU0ZGEwMzM5ZmEwNjA1MTM5YmZl
Njc2MTg3M2NiLi45MGQ1Mjg2OGFjYzMyMTc3MjU5ODRlYmFmNGQxYzQ2NjRjMGVhNTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERlY29yYXRl
ZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIE9w
dGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4pCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
bV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuOwogICAgICAgICByZXR1cm4gYmFzZVZh
bEFzU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCmluZGV4IGQ5YTExNTk3NDM2NjM3NGY3ZWE4ZGZiYjBh
NDYzZTA4NjFmYWJkYWQuLmQwMWNhNGZiZGQ4NjRmYjE0MTk0MTg5NzIxMzFjYjhjM2UxMWRkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJv
cGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBy
b3BlcnR5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIENvbnRyb2wgdGhlIHN5
bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSBhdHRyaWJ1dGUgYW5kIGl0cyByZWZsZWN0aW9uIGlu
IGJhc2VWYWwuCiAgICAgdmlydHVhbCBib29sIGlzRGlydHkoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXREaXJ0eSgpIHsgfQotICAgIHZpcnR1YWwgT3B0aW9u
YWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZp
cnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIAogICAgIC8vIENvbnRyb2wgdGhlIGFuaW1hdGlvbiBsaWZlIGN5Y2xlLgogICAg
IGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdG9ycy5jb21wdXRlU2l6
ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaAppbmRleCA1N2U5YzQ5
MWMyNDMwYjMxYzdjZTExMGQ3ZjgxYjQxNzNhNmY4YzU5Li45MzRhYzFkM2RhMmE5NmQ1ZDY4OTdl
NWM5NDc0OTY0ZWQ4Yzc4NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBs
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9w
ZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHky
KG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBpZiAoIShkaXJ0eTEgfHwgZGlydHkyKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGF1dG8gdHlwZSA9IHByb3BlcnR5Mihvd25lciktPmJhc2VWYWwo
KTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZGlydHkxID0g
cHJvcGVydHkxKG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBib29sIGRpcnR5MiA9IHByb3Bl
cnR5Mihvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgaWYgKCEoZGlydHkxIHx8IGRpcnR5Mikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBTdHJpbmcgc3RyaW5nMSA9IGRpcnR5MSA/ICpwcm9wZXJ0
eTEob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkxKG93bmVyKS0+YmFzZVZhbEFzU3Ry
aW5nKCk7CiAgICAgICAgIFN0cmluZyBzdHJpbmcyID0gZGlydHkyID8gKnByb3BlcnR5Mihvd25l
ciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTIob3duZXIpLT5iYXNlVmFsQXNTdHJpbmcoKTsK
QEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGRpcnR5MSA9IHByb3Bl
cnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIo
b3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGlmICghKGRpcnR5MSB8fCBkaXJ0eTIpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgU3RyaW5nIHN0cmluZzEgPSBkaXJ0eTEgPyAqcHJvcGVydHkxKG93
bmVyKS0+c3luY2hyb25pemUoKSA6IHByb3BlcnR5MShvd25lciktPmJhc2VWYWxBc1N0cmluZygp
OwogICAgICAgICBTdHJpbmcgc3RyaW5nMiA9IGRpcnR5MiA/ICpwcm9wZXJ0eTIob3duZXIpLT5z
eW5jaHJvbml6ZSgpIDogcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwCmluZGV4IDI2NGFiNjAxNDk5
NTZhNWQxY2U0M2RlNDc1OGQ0ZTcxNWU0YjY2MDQuLjU0OGI5MzlmMThhNmM3M2Y3Y2IxYWJjN2Nm
N2Q1ODNiNzJiZTkwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENvbG9yIFNWR0FuaW1hdGlvbkNvbG9yRnVuY3Rpb246
OmNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zCiAKIE9wdGlv
bmFsPGZsb2F0PiBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb246OmNhbGN1bGF0ZURpc3RhbmNl
KFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6YWJzKHBhcnNlSW50ZWdlcjxpbnQ+KHRvKS52YWx1ZU9yKDAp
IC0gcGFyc2VJbnRlZ2VyPGludD4oZnJvbSkudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHN0ZDo6
YWJzKHBhcnNlSW50ZWdlcjxpbnQ+KHRvKS52YWx1ZV9vcigwKSAtIHBhcnNlSW50ZWdlcjxpbnQ+
KGZyb20pLnZhbHVlX29yKDApKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oCmluZGV4IDRiYTM3YTljYTdjZjhhMzQ0YmE2M2I0NjE3MGFjN2IyNDVhMmM2
NGUuLjk2OTc5OWJiMDBiNWZkZDk5NjUxODRiZmI3ZTJmNjcyNDA0MDE1MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJs
aWM6CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCos
IGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZU51bWJlcih0bykudmFsdWVPcigwKSAt
IHBhcnNlTnVtYmVyKGZyb20pLnZhbHVlT3IoMCkpOworICAgICAgICByZXR1cm4gc3RkOjphYnMo
cGFyc2VOdW1iZXIodG8pLnZhbHVlX29yKDApIC0gcGFyc2VOdW1iZXIoZnJvbSkudmFsdWVfb3Io
MCkpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IDNhNzZmOTE3ZmQyNDBlOTViZDY5YzRjOGZi
MzY3YjIwZWVhZWY2ZTkuLjMzYWY1YmVmOTIzMGE2ZmU1NDlmN2IxNzk1YTAyYmM1Zjg1M2NlMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vz
c29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNz
b3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMo
Y29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IE93bmVyVHlwZSYsIGNvbnN0IFNW
R0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXREaXJ0eShjb25zdCBPd25lclR5cGUmLCBTVkdBbmltYXRlZFByb3BlcnR5JiBhbmlt
YXRlZFByb3BlcnR5KSBjb25zdCB7IGFuaW1hdGVkUHJvcGVydHkuc2V0RGlydHkoKTsgfQotICAg
IHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFN0cmlu
Zz4gc3luY2hyb25pemUoY29uc3QgT3duZXJUeXBlJikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRl
QW5pbWF0b3IoT3duZXJUeXBlJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIEFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmly
dHVhbCB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJUeXBlJiwgU1ZHQXR0cmlidXRl
QW5pbWF0b3ImKSBjb25zdCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eS5oCmluZGV4IDQwNDNmZjQ0ZjIwNmE2NzE5NWU5YjlkY2RlMDY2NjBmZTIxM2Q3NTcu
LmNlM2MyYjI3MWQ5YTIzMGI0ZWQwMGMwOWVmMWU3MThlNTk5NTYwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApAQCAtODIsNyArODIsNyBAQCBwdWJs
aWM6CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpCiAgICAgewogICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CiAgICAgICAgIHJldHVybiB2YWx1
ZUFzU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwCmluZGV4IGFlNGY0NzhkNzEzMmYxOWRmZWM2YjkwMjQw
MDQwOWQzZTFjOTVlYjguLmRmNWJiYjE0N2EzMmIyYjY1OTAzZWY5M2M4ODExYmYxNDdjNGNmODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJh
aXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRy
YWl0cy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbnQgU1ZH
UHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
LSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPGludD4oc3RyaW5nKS52YWx1ZU9yKDApOworICAgIHJl
dHVybiBwYXJzZUludGVnZXI8aW50PihzdHJpbmcpLnZhbHVlX29yKDApOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRl
eCAwY2FkYTdhMDJjYWYwMDQzMjcyMjJiMzhlMWNhZmY5MmJjY2MyMzQwLi42MzMwYzNjNDRhMDJh
YTg1NTRkMWYyNzZlNTk3MTY1MmRmNmI2Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yPiB7CiAgICAgewogICAgICAgICBDb2xvciBjb2xvciA9
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihzdHJpbmcuc3RyaXBXaGl0ZVNwYWNlKCkpOwogICAgICAg
ICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gY29sb3I7
CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgQ29sb3ImIHR5cGUpIHsg
cmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKHR5cGUpOyB9CkBAIC05MCw3ICs5MCw3IEBAIHN0
cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxmbG9hdD4gewogICAgIHN0YXRpYyBmbG9hdCBpbml0aWFs
VmFsdWUoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXIoc3RyaW5n
KS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXIoc3RyaW5nKS52YWx1ZV9v
cigwKTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBwYXJzZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpAQCAtMTA0LDcgKzEwNCw3
IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gewog
ICAgIHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBpbml0aWFsVmFsdWUoKSB7IHJldHVy
biB7IH07IH0KICAgICBzdGF0aWMgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZU51bWJlck9w
dGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVPcihzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB7IH0p
OworICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihzdHJpbmcpLnZhbHVl
X29yKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsgfSk7CiAgICAgfQogICAgIHN0YXRpYyBPcHRp
b25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBpbml0aWFsVmFs
dWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoc3RkOjpwYWlyPGZsb2F0LCBmbG9h
dD4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CkBAIC0x
MTUsNyArMTE1LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UG9pbnQ+IHsKICAg
ICBzdGF0aWMgRmxvYXRQb2ludCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBGbG9hdFBvaW50KCk7
IH0KICAgICBzdGF0aWMgRmxvYXRQb2ludCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9pbnQoc3RyaW5nKS52YWx1ZU9yKEZsb2F0
UG9pbnQgeyB9KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlUG9pbnQoc3RyaW5nKS52YWx1ZV9vcihG
bG9hdFBvaW50IHsgfSk7CiAgICAgfQogICAgIHN0YXRpYyBPcHRpb25hbDxGbG9hdFBvaW50PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpA
QCAtMTMyLDcgKzEzMiw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxGbG9hdFJlY3Q+IHsK
ICAgICBzdGF0aWMgRmxvYXRSZWN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIEZsb2F0UmVjdCgp
OyB9CiAgICAgc3RhdGljIEZsb2F0UmVjdCBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVjdChzdHJpbmcpLnZhbHVlT3IoRmxvYXRS
ZWN0IHsgfSk7CisgICAgICAgIHJldHVybiBwYXJzZVJlY3Qoc3RyaW5nKS52YWx1ZV9vcihGbG9h
dFJlY3QgeyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2Uo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4IDZhOTc1NTkyMDVh
NjRhZGNlMDRiYTg1ZDQxZGMzMWE1YWE3NzM4ZGIuLjFjNzJhNTM1Y2E4OWYyYWM5NGVhM2U2NTVk
MjY2MzkwZTVmZjk5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3Vw
OjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIEZvbnRDYWNoZTo6c2luZ2xldG9u
KCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eShtX3Nob3VsZE1v
Y2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOwogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKLSAgICBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRTYW1wbGVSYXRlRm9yVGVzdGluZyhXVEY6
Om51bGxvcHQpOworICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVsdFNhbXBsZVJhdGVGb3JUZXN0
aW5nKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IDhjZjAyYjE3OWViZmJkZDM3N2E2YTU0OGQwYzZhN2FmNjkxNzdmOTYuLjJm
MTQzNjFmODk2YWM4NDM5MTVkOWU0OTA5NzhiZDQ5MmIzMmIwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIEludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogI2VuZGlmCiAKICAgICBwYWdlLnNldFNo
b3dBbGxQbHVnaW5zKGZhbHNlKTsKLSAgICBwYWdlLnNldExvd1Bvd2VyTW9kZUVuYWJsZWRPdmVy
cmlkZUZvclRlc3RpbmcoV1RGOjpudWxsb3B0KTsKKyAgICBwYWdlLnNldExvd1Bvd2VyTW9kZUVu
YWJsZWRPdmVycmlkZUZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKICAgICBwYWdlLnNldE91dHNp
ZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogI2VuZGlmCiAKICAgICBIVE1MQ2FudmFzRWxlbWVu
dDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKDApOyAvLyBUaGlzIG1lYW5zIHVzZSB0aGUg
ZGVmYXVsdCB2YWx1ZS4KLSAgICBET01XaW5kb3c6Om92ZXJyaWRlVHJhbnNpZW50QWN0aXZhdGlv
bkR1cmF0aW9uRm9yVGVzdGluZyhXVEY6Om51bGxvcHQpOworICAgIERPTVdpbmRvdzo6b3ZlcnJp
ZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25Gb3JUZXN0aW5nKHN0ZDo6bnVsbG9wdCk7CiAK
ICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVuZGVyVGhlbWVJT1M6OnNldENvbnRlbnRTaXplQ2F0
ZWdvcnkoa0NURm9udENvbnRlbnRTaXplQ2F0ZWdvcnlMKTsKQEAgLTY0NywxMyArNjQ3LDEzIEBA
IEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgU3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXM6
OnNpbmdsZXRvbigpLnNldEhhc0FDKFdURjo6bnVsbG9wdCk7Ci0gICAgU3lzdGVtQmF0dGVyeVN0
YXR1c1Rlc3RpbmdPdmVycmlkZXM6OnNpbmdsZXRvbigpLnNldEhhc0JhdHRlcnkoV1RGOjpudWxs
b3B0KTsKKyAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9u
KCkuc2V0SGFzQUMoc3RkOjpudWxsb3B0KTsKKyAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGlu
Z092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0SGFzQmF0dGVyeShzdGQ6Om51bGxvcHQpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkKLSAgICBWUDlUZXN0aW5n
T3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5zZXRIYXJkd2FyZURlY29kZXJEaXNhYmxlZChXVEY6Om51
bGxvcHQpOwotICAgIFZQOVRlc3RpbmdPdmVycmlkZXM6OnNpbmdsZXRvbigpLnNldFZQOVNjcmVl
blNpemVBbmRTY2FsZShXVEY6Om51bGxvcHQpOworICAgIFZQOVRlc3RpbmdPdmVycmlkZXM6OnNp
bmdsZXRvbigpLnNldEhhcmR3YXJlRGVjb2RlckRpc2FibGVkKHN0ZDo6bnVsbG9wdCk7CisgICAg
VlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0VlA5U2NyZWVuU2l6ZUFuZFNjYWxl
KHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApAQCAtMTM4NSw3ICsxMzg1LDcgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoT3B0aW9uYWw8RXZl
bnRUaHJvdHRsaW5nQmVoYXYKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXRFdmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJy
aWRlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldEV2ZW50VGhy
b3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTQwMywxMSArMTQwMywxMSBAQCBPcHRpb25hbDxJbnRlcm5hbHM6OkV2ZW50
VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yTwog
ewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwogICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGJlaGF2aW9yID0g
ZG9jdW1lbnQtPnBhZ2UoKS0+ZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZSgpOwogICAg
IGlmICghYmVoYXZpb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGJlaGF2aW9yLnZhbHVlKCkpIHsKICAg
ICBjYXNlIFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpSZXNwb25zaXZlOgpAQCAt
MTQxNiw3ICsxNDE2LDcgQEAgT3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhh
dmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck8KICAgICAgICAgcmV0dXJu
IEludGVybmFsczo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I6OlVucmVzcG9uc2l2ZTsKICAgICB9
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIFN0cmluZyBJbnRlcm5hbHM6OnZpc2libGVQbGFjZWhvbGRlcihFbGVtZW50JiBlbGVtZW50
KQpAQCAtMjYwNSw3ICsyNjA1LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6
Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFYKICAgICAgICAg
cmV0dXJuIHBhcnNlZE9wdGlvbnMucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgYm9vbCBtYXJr
ID0gbWFya01hdGNoZXMgPT0gIm1hcmsiOwotICAgIHJldHVybiBkb2N1bWVudC0+ZWRpdG9yKCku
Y291bnRNYXRjaGVzRm9yVGV4dCh0ZXh0LCBXVEY6Om51bGxvcHQsIHBhcnNlZE9wdGlvbnMucmVs
ZWFzZVJldHVyblZhbHVlKCksIDEwMDAsIG1hcmssIG51bGxwdHIpOworICAgIHJldHVybiBkb2N1
bWVudC0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0ZXh0LCBzdGQ6Om51bGxvcHQsIHBh
cnNlZE9wdGlvbnMucmVsZWFzZVJldHVyblZhbHVlKCksIDEwMDAsIG1hcmssIG51bGxwdHIpOwog
fQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRNYXRjaGVzKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbmRPcHRpb25zKQpAQCAt
MjY5OCwxMyArMjY5OCwxMyBAQCB1aW50NjRfdCBJbnRlcm5hbHM6OmVsZW1lbnRJZGVudGlmaWVy
KEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB1aW50NjRfdCBJbnRlcm5hbHM6OmZyYW1lSWRlbnRp
Zmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
OworICAgICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZnJhbWVJRCgpLnZh
bHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKIHVpbnQ2NF90IEludGVybmFsczo6cGFnZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudC5wYWdlSUQoKS52YWx1ZU9yKFBh
Z2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQucGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpOwogfQogCiBib29sIElu
dGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0CkBAIC0zNTkzLDcg
KzM1OTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldENvbXBvc2l0aW5nUG9s
aWN5T3ZlcnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQbwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKICAgICBpZiAoIXBvbGljeU92ZXJyaWRlKSB7
Ci0gICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0Q29tcG9zaXRpbmdQ
b2xpY3lPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtMzYxNyw3ICszNjE3LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8SW50ZXJuYWxzOjpD
b21wb3NpdGluZ1BvbGljeT4+IEludGVybmFsczo6Y29tcG9zaXRpbmdQb2xpY3kKIAogICAgIGF1
dG8gcG9saWN5T3ZlcnJpZGUgPSBkb2N1bWVudC0+cGFnZSgpLT5jb21wb3NpdGluZ1BvbGljeU92
ZXJyaWRlKCk7CiAgICAgaWYgKCFwb2xpY3lPdmVycmlkZSkKLSAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgc3dp
dGNoIChwb2xpY3lPdmVycmlkZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpDb21wb3Np
dGluZ1BvbGljeTo6Tm9ybWFsOgpAQCAtNTA2Miw3ICs1MDYyLDcgQEAgc3RhdGljIE9wdGlvbmFs
PFRhc2tTb3VyY2U+IHRhc2tTb3VyY2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFza1NvdXJj
ZU5hbWUpCiB7CiAgICAgaWYgKHRhc2tTb3VyY2VOYW1lID09ICJET01NYW5pcHVsYXRpb24iKQog
ICAgICAgICByZXR1cm4gVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxzOjpxdWV1ZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiB0YXNrU291cmNlTmFtZSwgUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBj
YWxsYmFjaykKQEAgLTU3NTcsNyArNTc1Nyw3IEBAIGF1dG8gSW50ZXJuYWxzOjpwYXJzZURvVmlD
b2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlvbmFsPERvVmlQYXJhCiB7
CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IFdlYkNvcmU6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVy
cyhzdHJpbmcpOwogICAgIGlmICghcGFyc2VSZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgRG9WaVBhcmFtZXRlclNl
dCBjb252ZXJ0ZWRSZXN1bHQ7CiAgICAgc3dpdGNoIChwYXJzZVJlc3VsdC0+Y29kZWMpIHsKICAg
ICBjYXNlIERvVmlQYXJhbWV0ZXJzOjpDb2RlYzo6QVZDMToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IGY4NzliMjhmYzg5ZTYyM2NjNjExOWZhZDgzYjJjNzNhZTZiMDFiNTQuLjE4
NDU2NDY0NjFlZGMzMWZhOWY1OWNlNzBmMDFhNTljZWFhMDY3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMTAwOCw3ICsxMDA4LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
LCB2YWx1ZShjb29raWUudmFsdWUpCiAgICAgICAgICAgICAsIGRvbWFpbihjb29raWUuZG9tYWlu
KQogICAgICAgICAgICAgLCBwYXRoKGNvb2tpZS5wYXRoKQotICAgICAgICAgICAgLCBleHBpcmVz
KGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMCkpCisgICAgICAgICAgICAsIGV4cGlyZXMoY29va2ll
LmV4cGlyZXMudmFsdWVfb3IoMCkpCiAgICAgICAgICAgICAsIGlzSHR0cE9ubHkoY29va2llLmh0
dHBPbmx5KQogICAgICAgICAgICAgLCBpc1NlY3VyZShjb29raWUuc2VjdXJlKQogICAgICAgICAg
ICAgLCBpc1Nlc3Npb24oY29va2llLnNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETUZhY3RvcnkuY3BwCmluZGV4IDg5MTk2NGJhZDU1MDQ5M2RjZDdiODE4ZjcwMGFlZWJmN2Ni
ZjJjODcuLjNlYjExZjAwYjQ5NGRmMDI3NTliMmJlMGE2MjE3NzliM2ExMmQxMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCkgY29uc3QKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoc2Vzc2lvbklkLCAidmFsaWQtbG9hZGVkLXNlc3Npb24iKSkKICAgICAgICAgcmV0dXJuIHNl
c3Npb25JZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIE1vY2tDRE1JbnN0YW5jZTo6TW9ja0NETUluc3RhbmNlKFdlYWtQdHI8TW9ja0NE
TT4gY2RtKQpAQCAtMzI3LDE0ICszMjcsMTQgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9u
Ojp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKIHsK
ICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5m
YWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vz
c1ZhbHVlOjpGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VWZWN0b3IgPSBT
dHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSkuc3BsaXQoJyAnKTsKIAog
ICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImludmFsaWQtZm9ybWF0Il9z
KSkpIHsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2so
ZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzU0LDE0ICszNTQs
MTQgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAvLyBGSVhNRTogU2Vzc2lvbiBjbG9z
dXJlLCBleHBpcmF0aW9uIGFuZCBtZXNzYWdlIGhhbmRsaW5nIHNob3VsZCBiZSBpbXBsZW1lbnRl
ZAogICAgIC8vIG9uY2UgdGhlIHJlbGV2YW50IGFsZ29yaXRobXMgYXJlIHN1cHBvcnRlZC4KIAot
ICAgIGNhbGxiYWNrKGZhbHNlLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICBjYWxsYmFjayhmYWxz
ZSwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNj
ZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIExv
YWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFj
dG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAg
IGlmICghZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpPdGhlcik7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6
Ok90aGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzcwLDcgKzM3MCw3IEBAIHZv
aWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluCiAgICAgQ1N0cmluZyBtZXNzYWdlRGF0YSB7ICJzZXNzaW9u
IGxvYWRlZCIgfTsKICAgICBNZXNzYWdlIG1lc3NhZ2UgeyBNZXNzYWdlVHlwZTo6TGljZW5zZVJl
bmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRhLmRhdGEoKSwgbWVzc2FnZURh
dGEubGVuZ3RoKCkpIH07CiAKLSAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2Fk
RmFpbHVyZTo6Tm9uZSk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZh
aWx1cmU6Ok5vbmUpOwogfQogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OmNsb3NlU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJl
bW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgaWQsIExpY2Vuc2VUeXBlLCBSZQogewogICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3Rv
cnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKHsg
fSwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNr
KHsgfSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlh
U2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBhMTJkMGU4MGRjYzFiZDE0ZWY0MDBlNTA1NmQx
YmYxYTdlYjY1ZWVhLi40MDE0ZDBiZThmNjRmMWNlY2UzMTY4NGU3ZjQ5NDZlODg5N2Q5NDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gTW9ja01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpyZXN1bHQoKSBjb25zdAogICAgIGlmIChtX2ZhaWxDb21t
YW5kcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGJjM2FmZWQ5
YTMxNDBiOTAzM2I5NzUwYjVjYmQwYTBjZjMyYWM0ZWEuLjhkNzNiMWNhODVhZTU2NDk1NWU4NGE4
NjliZThmZGYzYTRhYzlkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxTdHJpbmc+
IE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0
cmluZyYgcAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3Mu
ZmluZChwYXltZW50TmV0d29yayk7CiAgICAgaWYgKHJlc3VsdCA9PSBtX2F2YWlsYWJsZVBheW1l
bnROZXR3b3Jrcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKnJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaAppbmRleCA0MGE0OTM3ODM3OGYyY2VlMDNiMzIyYzViOGMzZmJmYjNjOTdlOGRk
Li4wYzUyNWFmZmYzYzQ3MDhkYTM1MDhkMGJhZjFjY2M4MTRjOTI1MmVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaApAQCAtMTMwLDM3ICsxMzAsMzcgQEAgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGkK
ICAgICBPcHRpb25hbDxVc2VyVmVyaWZpY2F0aW9uPiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGRl
Y29kZXIgPj4gdXNlclZlcmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJWZXJpZmljYXRpb24pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmVzdWx0LnVzZXJWZXJpZmljYXRpb24gPSAqdXNlclZlcmlmaWNhdGlvbjsKIAogICAg
IE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF0dGVzdGF0aW9uOwogICAgIGRlY29kZXIgPj4gYWNjZXB0
QXR0ZXN0YXRpb247CiAgICAgaWYgKCFhY2NlcHRBdHRlc3RhdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
YWNjZXB0QXR0ZXN0YXRpb24gPSAqYWNjZXB0QXR0ZXN0YXRpb247CiAKICAgICBPcHRpb25hbDxT
dHJpbmc+IHByaXZhdGVLZXlCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiBwcml2YXRlS2V5QmFzZTY0
OwogICAgIGlmICghcHJpdmF0ZUtleUJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucHJpdmF0ZUtleUJh
c2U2NCA9IFdURk1vdmUoKnByaXZhdGVLZXlCYXNlNjQpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiB1c2VyQ2VydGlmaWNhdGVC
YXNlNjQ7CiAgICAgaWYgKCF1c2VyQ2VydGlmaWNhdGVCYXNlNjQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCk7CiAK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CiAg
ICAgZGVjb2RlciA+PiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OwogICAgIGlmICgh
aW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaW50ZXJtZWRp
YXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKmludGVybWVkaWF0ZUNBQ2VydGlmaWNh
dGVCYXNlNjQpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVmZXJyZWRDcmVkZW50aWFsSWRC
YXNlNjQ7CiAgICAgZGVjb2RlciA+PiBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiAgICAg
aWYgKCFwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnByZWZlcnJl
ZENyZWRlbnRpYWxJZEJhc2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2
NCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTc3LDI3ICsxNzcsMjcgQEAgT3B0aW9uYWw8
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29uZmlndXJhdGlvbj4gTW9j
a1dlYkF1dGhlbnRpY2EKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
OjpIaWRDb25maWd1cmF0aW9uIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5wYXlsb2FkQmFzZTY0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdGFn
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3ViU3RhZ2UpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmVycm9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pc1UyZikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
a2VlcEFsaXZlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mYXN0RGF0YUFy
cml2YWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRpbnVlQWZ0ZXJF
cnJvckRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNhbkRvd25ncmFk
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwZWN0Q2FuY2VsKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdXBwb3J0Q2xpZW50UGluKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMTIsMTMgKzIxMiwxMyBAQCBPcHRpb25hbDxNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1cmF0aW9uPiBNb2NrV2Vi
QXV0aGVudGljYQogewogICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5m
Y0NvbmZpZ3VyYXRpb24gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmVy
cm9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXlsb2FkQmFzZTY0KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBsZVRhZ3MpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm11bHRpcGxlUGh5c2ljYWxUYWdzKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMzYsMjUgKzIzNiwyNSBAQCBPcHRpb25hbDxNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uOgogICAgIE9wdGlvbmFsPGJvb2w+IHNpbGVudEZhaWx1cmU7CiAgICAgZGVjb2Rl
ciA+PiBzaWxlbnRGYWlsdXJlOwogICAgIGlmICghc2lsZW50RmFpbHVyZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1
bHQuc2lsZW50RmFpbHVyZSA9ICpzaWxlbnRGYWlsdXJlOwogCiAgICAgT3B0aW9uYWw8T3B0aW9u
YWw8TG9jYWxDb25maWd1cmF0aW9uPj4gbG9jYWw7CiAgICAgZGVjb2RlciA+PiBsb2NhbDsKICAg
ICBpZiAoIWxvY2FsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5sb2NhbCA9IFdURk1vdmUoKmxvY2FsKTsKIAog
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPEhpZENvbmZpZ3VyYXRpb24+PiBoaWQ7CiAgICAgZGVjb2Rl
ciA+PiBoaWQ7CiAgICAgaWYgKCFoaWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmhpZCA9IFdURk1vdmUoKmhp
ZCk7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxOZmNDb25maWd1cmF0aW9uPj4gbmZjOwogICAg
IGRlY29kZXIgPj4gbmZjOwogICAgIGlmICghbmZjKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5uZmMgPSBXVEZN
b3ZlKCpuZmMpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBlZDRmNzBkY2MwNzU0YTRhMWY0NDg1NWIxMDJjNzk1
OWFmOTUwNWM1Li42NzQzNjRlYmQwMzcxNWIyYTdlZmQxZDk4NDliYTkxMjY4OWQ1ZTM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwCkBAIC0xNjcsNyArMTY3
LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFNpbXVsYXRlZFhSRGV2aWNl
OjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMKIHsKICAgICB1c2luZyBHTCA9IEdyYXBoaWNz
Q29udGV4dEdMOwogICAgIGlmICghbV9nbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBQbGF0Zm9ybVhSOjpMYXllckhhbmRs
ZSBoYW5kbGUgPSArK21fbGF5ZXJJbmRleDsKICAgICBhdXRvIHRleHR1cmUgPSBtX2dsLT5jcmVh
dGVUZXh0dXJlKCk7CiAgICAgYXV0byBjb2xvckZvcm1hdCA9IGFscGhhID8gR0w6OlJHQkE4IDog
R0w6OlJHQjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuaAppbmRleCA5
ZjM2NmNhMTFmZTA0OTliMTAxZjY2NTIwNTI4NmY2MjdjMWM2Y2FkLi5mNTk3YjNkOTE5MmM3ZjYy
NzIxNTc4MzY1NjMzYTI3NjQwNjBjZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSRGV2aWNlLmgKQEAgLTExMiwxMSArMTEyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZp
ZXdzKGNvbnN0IFZlY3RvcjxGYWtlWFJWaWV3SW5pdD4mKTsKICAgICB2b2lkIGRpc2Nvbm5lY3Qo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgc2V0Vmlld2VyT3JpZ2luKEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IGZh
bHNlKTsKLSAgICB2b2lkIGNsZWFyVmlld2VyT3JpZ2luKCkgeyBtX2RldmljZS5zZXRWaWV3ZXJP
cmlnaW4oV1RGOjpudWxsb3B0KTsgfQorICAgIHZvaWQgY2xlYXJWaWV3ZXJPcmlnaW4oKSB7IG1f
ZGV2aWNlLnNldFZpZXdlck9yaWdpbihzdGQ6Om51bGxvcHQpOyB9CiAgICAgdm9pZCBzaW11bGF0
ZVZpc2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwogICAgIHZvaWQgc2V0Qm91bmRz
R2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYmIGJvdW5kcykgeyBtX2RldmljZS5z
ZXROYXRpdmVCb3VuZHNHZW9tZXRyeShXVEZNb3ZlKGJvdW5kcykpOyB9CiAgICAgdm9pZCBzZXRG
bG9vck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQpOwotICAgIHZvaWQgY2xlYXJGbG9v
ck9yaWdpbigpIHsgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGOjpudWxsb3B0KTsgfQorICAg
IHZvaWQgY2xlYXJGbG9vck9yaWdpbigpIHsgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oc3RkOjpu
dWxsb3B0KTsgfQogICAgIHZvaWQgc2ltdWxhdGVSZXNldFBvc2UoKTsKICAgICBSZWY8V2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbihjb25zdCBG
YWtlWFJJbnB1dFNvdXJjZUluaXQmKTsKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZha2VY
UlZpZXc+PiBwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IDhiNWJjZjM2
NDdlZmNhZGM2OWJiNjhhNjEwYTNkYzk5MzQxMWNiYWEuLjUzOTU5ZTU1YTk4MmMyYmRlMTg2ZmIy
ODhmMTVmYTkwMWMyZDU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUYXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSBtb2RlKSB7IG1fdGFyZ2V0UmF5TW9k
ZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldFByb2ZpbGVzKFZlY3RvcjxTdHJpbmc+JiYgcHJvZmls
ZXMpIHsgbV9wcm9maWxlcyA9IFdURk1vdmUocHJvZmlsZXMpOyB9CiAgICAgdm9pZCBzZXRHcmlw
T3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29sIGVtdWxhdGVk
UG9zaXRpb24gPSBmYWxzZSk7Ci0gICAgdm9pZCBjbGVhckdyaXBPcmlnaW4oKSB7IG1fZ3JpcE9y
aWdpbiA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQgY2xlYXJHcmlwT3JpZ2luKCkgeyBtX2dy
aXBPcmlnaW4gPSBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIHNldFBvaW50ZXJPcmlnaW4oRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvaW50ZXJPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlv
biA9IGZhbHNlKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICB2b2lkIHJlY29ubmVjdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjk1ZjVjNmQ2OWRhZTRjOWNiNzE0Mzk3OGMzZDM4
ZjBhNGU4YjI0NC4uMmNkYjc1NTc5NThiYzg5M2UyNjZkNmZiOWMwY2VjMTc2NzBmMjkwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJl
c3VsdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25v
dXNseSgKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpX
YXNFcnJvcmVkOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdG9yLT5ub3RpZnlMb2Fk
RmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTG9hZGFibGVTY3JpcHQ6OkVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdURjo6bnVsbG9wdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bnVsbG9wdAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2R1bGVGZXRjaEZh
aWx1cmVLaW5kOjpXYXNDYW5jZWxlZDoKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFdvcmtlck9y
V29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwm
IG1vZHVsZVVSTAogICAgICAgICB9KTsKIAogICAgICAgICBhdXRvJiBmdWxmaWxsSGFuZGxlciA9
ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIDEsIFN0cmlu
ZygpLCBbdGFzaywgc2NyaXB0RmV0Y2hlcl0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIC0+IEpTQzo6RW5jb2RlZEpTVmFsdWUgewotICAgICAgICAg
ICAgLy8gdGFzay0+cnVuKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAvLyB0YXNrLT5ydW4o
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKICAgICAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1vZHVsZShj
b25zdCBVUkwmIG1vZHVsZVVSTAogCiAgICAgICAgICAgICBhdXRvKiBjb250ZXh0ID0gZG93bmNh
c3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgICAgICBp
ZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPnNjcmlwdCgpKSB7Ci0gICAgICAgICAgICAgICAgdGFz
ay0+cnVuKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgdGFzay0+cnVuKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgICAgIH0KIApAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYg
bW9kdWxlVVJMCiAgICAgICAgICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIHZtLmlzVGVy
bWluYXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBjb250ZXh0LT5zY3JpcHQo
KS0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPnNjcmlwdCgpKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5zY3JpcHQoKS0+Zm9y
YmlkRXhlY3V0aW9uKCk7Ci0gICAgICAgICAgICAgICAgdGFzay0+cnVuKFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICAgICAgdGFzay0+cnVuKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIH0K
IApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMCiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVwb3J0RXhjZXB0aW9uKG1lc3NhZ2UsIHsgfSwgeyB9LCB7IH0sIHsg
fSwgeyB9KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGFzay0+cnVuKFdURjo6bnVs
bG9wdCk7CisgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggOGJl
ODA4MWE3N2E3MzEzZDAxZTk3NTAxNzQ4YzBlZDg2NWU0MTIzMi4uMGYxOTQ1NDQ4YzQ1Y2IxMTFk
Y2M0YTI1YTZjOWFiZjZmMTY0NGRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjcsMTQgKzY3LDE0IEBAIE9wdGlvbmFsPEV4Y2VwdGlv
bj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0CiAgICAgICAgICAgICBtX3NjcmlwdCA9IHNjcmlwdFJlc291cmNlLT5zY3JpcHQ7CiAg
ICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwog
ICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBl
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoY3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGluaXRp
YXRvcklkZW50aWZpZXIpKTsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9i
YWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1F
VHlwZSB9KTsKICAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgUmVzb3VyY2VSZXF1ZXN0JiYgc2NyaXB0UmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgZmV0Y2hP
cHRpb25zLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJNb2RlLCBX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nJiYgdGFza01vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdl
RXZlbnQuaAppbmRleCA2NDFhMzVkMjFiODg5YWM4Y2Y2ZmE3ZmZjNDg3NTNkZmNjOTk3MGM1Li45
ZTZjYmYyZWNkMzMwZTk1NDQ4M2ExYzM4MmEyMmNkODcyMjM5ZmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50KHN0YXRlLCB0eXBlLCBpbml0aWFsaXplciwgaXNUcnVzdGVk
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVh
dGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlPiYmIHNv
dXJjZSA9IFdURjo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291
cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB+RXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDExOWYzY2ZhMDIwNGM1MmMxOTI2ODExNmE0YTA3YjQ5
ZTAxYmJlZmEuLjc4ZDBhMzMyMGI3MWY1MDU1YzYzYzIyYWM0ZWUzNTRmNjZlNTlmMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmNsZWFy
UGVuZGluZ0pvYnMoKQogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudHMoKQogewogICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpIHsKLSAgICAgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyID0gZG9jdW1lbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSA/IG1h
a2VPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4oZG9jdW1lbnQt
PmFjdGl2ZVNlcnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpKSA6IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gZG9jdW1lbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSA/IHN0ZDo6bWFr
ZV9vcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4oZG9jdW1lbnQt
PmFjdGl2ZVNlcnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpKSA6IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGRvY3VtZW50LT50
b3BPcmlnaW4oKSwgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oKmRvY3VtZW50LCAqdGhp
cyksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGRvY3Vt
ZW50LT51c2VyQWdlbnQoZG9jdW1lbnQtPnVybCgpKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEu
aAppbmRleCAwOTA5YTk1MzgxNjRkOWZkNDBiNGJlNTNmNDc3OWUwNzkzZjY1OWY2Li4wMzMwYjQ5
YmRjMTQ0MGE0NzI4OGUzNWY5MjAyNzdlZjZhYjUzM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAt
NjYsMjcgKzY2LDI3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBp
ZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAo
IXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlPiBm
cmFtZVR5cGU7CiAgICAgZGVjb2RlciA+PiBmcmFtZVR5cGU7CiAgICAgaWYgKCFmcmFtZVR5cGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxVUkw+IHVybDsKICAgICBkZWNvZGVyID4+IHVybDsKICAgICBp
ZiAoIXVybCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3Zl
KCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcAppbmRleCBhNmQ0
NDdkYWI1NGFjOTZlZjZlMGM3Njc3YjI1ZTJjNzM0NGEwODRjLi4zNTU4NGI4YWYwNGM1MmI3Njgw
Y2Q2Yjg3OTQ1YTc2NDg4ZjJhNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAK
QEAgLTQwLDEzICs0MCwxMyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJpbgogICAgIGZvciAoYXV0
byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
cGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihpdGVtKTsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyIHx8
ICEqaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWNvdW50ZXIrKykKICAgICAg
ICAgICAgIGNsaWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBtYWtl
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oaWRlbnRp
Zmllci52YWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoY291bnRlciA9PSAyKQogICAgICAgICAg
ICAgY2xpZW50SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUoKSk7CiAgICAgfQot
ICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IG1ha2VPcHRpb25hbChXVEZNb3ZlKGNsaWVudElk
ZW50aWZpZXIpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gKGNvdW50ZXIgPT0gMikgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSkgOiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgKaW5kZXggOThhNGUzNTU2ZDE3ODAwMjAyZTUzYTMwZmI0MjBkZmY2OGZhODM4NS4uZDYzODFk
N2Q1YmM5MmZlYjdmOWUwNjhjMzdhM2E0ZTQyMTg4MTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmgKQEAgLTYzLDEyICs2MywxMiBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmRlY29kZShEZQogICAg
IE9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAg
ICAgaWYgKCFzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPERv
Y3VtZW50SWRlbnRpZmllcj4gY29udGV4dElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb250
ZXh0SWRlbnRpZmllcjsKICAgICBpZiAoIWNvbnRleHRJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHsgeyAqc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsICpjb250ZXh0SWRlbnRpZmllciB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaAppbmRleCBkNDE4ODJhNmMxOGEz
YmYxOWEyMDRhMTUzYTFkMmVjYzkyZGFiMGY2Li5kMDE4N2M5ODczYTI4MWE0ZTJiNzI5OGNjMmMz
NTljMDM4ZGRkNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgKQEAgLTUyLDEy
ICs1MiwxMiBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zPiBTZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOjpkZWNvZAogICAgIE9wdGlvbmFsPGJvb2w+IGlu
Y2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAgZGVjb2RlciA+PiBpbmNsdWRlVW5jb250cm9sbGVkOwog
ICAgIGlmICghaW5jbHVkZVVuY29udHJvbGxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5
cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICppbmNsdWRlVW5jb250cm9sbGVkLCAqdHlwZSB9IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggZWZkZmE3YzUwMmU4MDg0MzA5NzI1YjY0Yzg3MDMz
ZjZlZDAzNmFjYy4uMmRhMmRiYjE1MzZlOTgwMDU1YmY5NGMwNmI2Y2IyNGQyNTdjMTI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaApAQCAtNTcsMTcgKzU3LDE3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgewogICAgICAgICAgICAgT3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7
CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAgICAgIGlmICghc2NyaXB0
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25z
ZVVSTDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7CiAgICAgICAgICAgICBp
ZiAoIXJlc3BvbnNlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBtaW1lVHlwZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gbWltZVR5cGU7CiAg
ICAgICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqc2NyaXB0KSwKQEAgLTExMSw1
NCArMTExLDU0IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgT3B0aW9uYWw8T3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBpZiAoIWpvYkRhdGFJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IHJl
Z2lzdHJhdGlvbjsKICAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKICAgICBpZiAoIXJlZ2lz
dHJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghc2VydmljZVdvcmtl
cklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNjcmlwdDsKICAg
ICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICBpZiAoIXNjcmlwdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3Ry
aW5nIHJlZmVycmVyUG9saWN5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVmZXJyZXJQb2xp
Y3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNj
cmlwdFVSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh3b3JrZXJUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgZGVjb2RlciA+PiBjZXJ0
aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaAppbmRleCBjMzhjOWU3
YTYwMjliMjg1YWFiYmYyYWRiN2U3OGEwNzQyY2E0ZGFlLi5iYzU2ZTliMDNkZDBiZmZhMDJjNmFm
M2EwZjY2NDZhZWY4MDRjYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckRhdGEuaApAQCAtNTksMjcgKzU5LDI3IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJEYXRhPiBTZXJ2aWNlV29ya2VyRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFVSTD4gc2NyaXB0VVJMOwogICAgIGRlY29kZXIgPj4gc2NyaXB0VVJMOwogICAg
IGlmICghc2NyaXB0VVJMKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclN0YXRlPiBz
dGF0ZTsKICAgICBkZWNvZGVyID4+IHN0YXRlOwogICAgIGlmICghc3RhdGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxXb3JrZXJUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAo
IXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4gcmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlv
bklkZW50aWZpZXI7CiAgICAgaWYgKCFyZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqc2NyaXB0VVJMKSwgV1RG
TW92ZSgqc3RhdGUpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqcmVnaXN0cmF0aW9uSWRlbnRp
ZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCBiODE1NjI0NzJjM2U0ZjY2YTAwZjYyNWJhZWVj
MDg5NDJjNmQxNWIxLi5iNmM5NTYzMzhlMWRmZDIxMWRhYzE3YzJiMzEwNTk1MzI5ZjgxODZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYkRhdGEuaApAQCAtOTEsMzcgKzkxLDM3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBT
ZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhOwogICAgIGpvYkRhdGEubV9pZGVudGlmaWVyID0g
KmlkZW50aWZpZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuc2NyaXB0VVJM
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuY2xpZW50Q3JlYXRpb25VUkwp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAg
ZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgam9iRGF0
YS50b3BPcmlnaW4gPSBXVEZNb3ZlKCp0b3BPcmlnaW4pOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShqb2JEYXRhLnNjb3BlVVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRh
dGEuc291cmNlQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLndv
cmtlclR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50eXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHN3aXRjaCAoam9iRGF0YS50eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9i
VHlwZTo6UmVnaXN0ZXI6IHsKICAgICAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbk9wdGlvbnM+IHJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAgICAgICAgIGRlY29kZXIgPj4gcmVn
aXN0cmF0aW9uT3B0aW9uczsKICAgICAgICAgaWYgKCFyZWdpc3RyYXRpb25PcHRpb25zKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IFdURk1vdmUoKnJl
Z2lzdHJhdGlvbk9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyLmgKaW5kZXggMWNmYzYxMzUzN2I2ZTkyY2M0MDExOTY5YmNjZTExZWM2YWRi
M2RmYy4uN2E3ZDY0ODUzZGRjNDcxNmRlMjVkZTA3YTdmMGY3MWEwN2NkMGQyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXIuaApAQCAtNjEsMTIgKzYxLDEyIEBAIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
OjpkZWNvZGUoCiAgICAgT3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gY29u
bmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsK
ICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYklkZW50aWZpZXI+IGpvYklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBqb2JJ
ZGVudGlmaWVyOwogICAgIGlmICgham9iSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKCpqb2JJZGVudGlmaWVyKSB9
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAppbmRleCA3ZTc2OTVmMmE5MmU2
MWEzN2VjNTQ3YzRhNzc1ZjE5ZDNjYzI4ZTA3Li5kNDA2NjlkM2Y2MzI2OWQwZmFjYjc1YmZlZTQw
YjU3NjMwNDMzYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKQEAgLTM4LDkg
KzM4LDkgQEAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnMKICAgICAgICAgc2NvcGVVUkwuaXNvbGF0
ZWRDb3B5KCksCiAgICAgICAgIHVwZGF0ZVZpYUNhY2hlLAogICAgICAgICBsYXN0VXBkYXRlVGlt
ZSwKLSAgICAgICAgaW5zdGFsbGluZ1dvcmtlciA/IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRh
PihpbnN0YWxsaW5nV29ya2VyLT5pc29sYXRlZENvcHkoKSkgOiBXVEY6Om51bGxvcHQsCi0gICAg
ICAgIHdhaXRpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4od2FpdGluZ1dv
cmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogV1RGOjpudWxsb3B0LAotICAgICAgICBhY3RpdmVXb3Jr
ZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oYWN0aXZlV29ya2VyLT5pc29sYXRlZENv
cHkoKSkgOiBXVEY6Om51bGxvcHQsCisgICAgICAgIGluc3RhbGxpbmdXb3JrZXIgPyBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyRGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDog
c3RkOjpudWxsb3B0LAorICAgICAgICB3YWl0aW5nV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+KHdhaXRpbmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IHN0ZDo6bnVsbG9wdCwK
KyAgICAgICAgYWN0aXZlV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KGFjdGl2
ZVdvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAogICAgIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKaW5kZXggZjNiZjMyYjlmZDc4NzU5ZTE3YmI5ZGY2OGYw
Y2M4MjRhOTY0MGQzNS4uOWY1M2ZhZDJhYjVhZWNhNjZiMjI2ZDU2OTYzMzIyMjBiNWI0YzVmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKQEAgLTY4LDQyICs2OCw0MiBAQCBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE6OmRlY29kZShEZQogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk+IGtleTsKICAgICBkZWNvZGVyID4+IGtleTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gaWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8VVJMPiBzY29wZVVSTDsKICAgICBkZWNvZGVyID4+IHNjb3BlVVJMOwog
ICAgIGlmICghc2NvcGVVUkwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4gdXBkYXRlVmlhQ2FjaGU7
CiAgICAgaWYgKCF1cGRhdGVWaWFDYWNoZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGRvdWJsZT4gcmF3
V2FsbFRpbWU7CiAgICAgZGVjb2RlciA+PiByYXdXYWxsVGltZTsKICAgICBpZiAoIXJhd1dhbGxU
aW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+PiBpbnN0
YWxsaW5nV29ya2VyOwogICAgIGRlY29kZXIgPj4gaW5zdGFsbGluZ1dvcmtlcjsKICAgICBpZiAo
IWluc3RhbGxpbmdXb3JrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29y
a2VyRGF0YT4+IHdhaXRpbmdXb3JrZXI7CiAgICAgZGVjb2RlciA+PiB3YWl0aW5nV29ya2VyOwog
ICAgIGlmICghd2FpdGluZ1dvcmtlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPj4gYWN0aXZlV29ya2VyOwogICAgIGRlY29kZXIgPj4gYWN0aXZlV29ya2Vy
OwogICAgIGlmICghYWN0aXZlV29ya2VyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpr
ZXkpLCBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqc2NvcGVVUkwpLCBXVEZNb3ZlKCp1
cGRhdGVWaWFDYWNoZSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqcmF3V2FsbFRpbWUpLCBX
VEZNb3ZlKCppbnN0YWxsaW5nV29ya2VyKSwgV1RGTW92ZSgqd2FpdGluZ1dvcmtlciksIFdURk1v
dmUoKmFjdGl2ZVdvcmtlcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmlu
ZGV4IGU0NDUyYTdmNDVhODQwNDZiNTM0ZmYwNDVlYWJhMGJjYzYxZDhiYjYuLjcwNWIyZWY1NjAz
NGZjNGNhNjNmNWJlNzBjYTcwZmNhMTllODk4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhcwogICAgIGF1
dG8gdGhpcmQgPSBrZXkuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIsIHNlY29uZCArIDEpOwogCiAg
ICAgaWYgKGZpcnN0ID09IHNlY29uZCB8fCBzZWNvbmQgPT0gdGhpcmQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDx1aW50MTZfdD4gc2hvcnRQb3J0OwogCkBAIC0xMTAsMTIgKzExMCwxMiBAQCBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5Ojpmcm9tRGF0YWJhcwogICAgIGlmICh0aGlyZCAtIHNlY29uZCA+IDEpIHsKICAgICAgICAg
c2hvcnRQb3J0ID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3IHsga2V5IH0uc3Vi
c3RyaW5nKHNlY29uZCArIDEsIHRoaXJkIC0gc2Vjb25kIC0gMSkpOwogICAgICAgICBpZiAoIXNo
b3J0UG9ydCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2NvcGUgPSBVUkwgeyBVUkwo
KSwga2V5LnN1YnN0cmluZyh0aGlyZCArIDEpIH07CiAgICAgaWYgKCFzY29wZS5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IHsga2V5LnN1
YnN0cmluZygwLCBmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJz
dCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCmluZGV4IGNlYWNmZDU5MmE2ZGVmYWI1ZjEwNDVkZDcyZWM5ZjBiZTcwY2E3MTQu
LmQwZjliNDQ1YjUyNDNlOTMwOTAzMDhkN2ExZTM3YWQ0YmRlZjEwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkuaApAQCAtODYsMTEgKzg2LDExIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmRlY29kZShEZWNv
CiAgICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAgZGVjb2Rl
ciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVUkwgc2NvcGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY29wZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IFdURk1vdmUoKnRvcE9yaWdpbiksIFdURk1vdmUoc2Nv
cGUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCmluZGV4IDJlMzU1N2Zh
N2RmNjdmMWJmOThjN2I3YTVkZTRiMGE1YTdiY2NjZjUuLmZlMDJiZjdmY2Q1ZjE1ODllMTJiNWJh
MjY5MDYyMjU3Yzc0ZDU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCkBA
IC01NywxNyArNTcsMTcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlv
bnM+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zOjpkZWMKICAgICBPcHRpb25hbDxT
dHJpbmc+IHNjb3BlOwogICAgIGRlY29kZXIgPj4gc2NvcGU7CiAgICAgaWYgKCFzY29wZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwog
ICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFD
YWNoZT4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVWaWFDYWNoZTsKICAg
ICBpZiAoIXVwZGF0ZVZpYUNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25PcHRpb25zIHsgV1RGTW92ZSgqc2NvcGUpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92
ZSgqdXBkYXRlVmlhQ2FjaGUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4
IGY0MWJmODNmYWMzNTQzMTkzYTJhYjljYTYxMzdjMzhmNzQ5MjZjZjIuLjUwMWQyZWQ4YjhhODgz
YzEwZjU4NjUxYmQ4ODZkZGQ0MzA2OGMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
CkBAIC05MSw3ICs5MSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhy
ZWFkKCkgPSBkZWZhdWx0OwogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiBwYXJh
bXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kYXRhKTsKLSAgICByZXR1cm4gU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhjaGFuZ2UobV9kYXRhLCBXVEY6
Om51bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMsIFdURk1vdmUodG9wT3Jp
Z2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCkpOworICAgIHJldHVy
biBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqc3RkOjpleGNoYW5nZShtX2RhdGEs
IHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0
b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaAppbmRleCAzN2M0YjdhMjIwYzFiODZmNTBjNzY5N2I0ZDdlOTMzZDM4YjE3M2M4Li5i
ZTE3YjJiODUzOTE2OTVlMWE5MGY2NzU1MDE3NzI3NTQ4NWY2NWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAKICAgICBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIE9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gbV9qb2JEYXRhSWRlbnRpZmllcjsKLSAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fZGF0YTsgLy8gQmVjb21lcyBXVEY6Om51
bGxvcHQgYWZ0ZXIgdGhlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBoYXMgYmVlbiBjcmVhdGVk
LgorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9kYXRhOyAvLyBCZWNv
bWVzIHN0ZDo6bnVsbG9wdCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGhhcyBi
ZWVuIGNyZWF0ZWQuCiAgICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7
CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5jcHAKaW5kZXggNjUzN2U5NTE3MzZiZWFmMTcxZmI2MTg1ZmM3ZDI4ZWRlMjQ4NDYw
NC4uYzllY2IzNTUwZjA5Nzk4NWUwNmFkZGJkOTg2OGQ5MGQ5NDkzOTk0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAKQEAgLTExNSwxMiArMTE1LDEyIEBAIHN0cnVjdCBJbXBvcnRlZFNj
cmlwdEF0dHJpYnV0ZXMgewogICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJMOwogICAg
ICAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOwogICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKICAgICAgICAg
ZGVjb2RlciA+PiBtaW1lVHlwZTsKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcmVzcG9uc2VVUkwpLApA
QCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlh
Q2FjaGU+IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoY29uc3QgU3RyaW5nCiAgICAgaWYgKHVwZGF0
ZSA9PSAiTm9uZSIpCiAgICAgICAgIHJldHVybiBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6
Ok5vbmU7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgd29ya2VyVHlwZVRvU3RyaW5nKFdvcmtlclR5cGUgd29y
a2VyVHlwZSkKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V29ya2VyVHlwZT4g
c3RyaW5nVG9Xb3JrZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICBpZiAodHlwZSA9PSAi
TW9kdWxlIikKICAgICAgICAgcmV0dXJuIFdvcmtlclR5cGU6Ok1vZHVsZTsKIAotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZWdp
c3RyYXRpb25EYXRhYmFzZTo6cHVzaENoYW5nZXMoY29uc3QgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+PiYgY2hh
bmdlZFJlZ2lzdHJhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKQEAgLTU2OCw4ICs1NjgsOCBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRvIHdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNl
V29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25J
ZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7
IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0
ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07Ci0gICAgICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCpr
ZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZp
YUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
V1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3Ry
YXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRp
ZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVm
ZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsK
KyAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVV
UkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OworICAgICAgICBhdXRv
IGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgc3RkOjpudWxsb3B0LCBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwg
V1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5
KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5
cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3ZlKHNjcmlwdFJl
c291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHko
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlv
blRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcAppbmRl
eCA3NGE1Y2QyZjQzOTRjYjAzMzE0NGIzMjEzM2EzMDBmZTFiYzEyNTgwLi44ZmYwNmFmNWM5MmE5
YjAwYTYyMmJjZjM1NTFhMGIxMTEwYzEwNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OnJlbW92ZVJlZ2lzdHJhdGlv
bihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrCiAgICAgaWYgKGtleS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2V0
KGtleSwgV1RGOjpudWxsb3B0KTsKKyAgICBtX3VwZGF0ZWRSZWdpc3RyYXRpb25zLnNldChrZXks
IHN0ZDo6bnVsbG9wdCk7CiAgICAgc2NoZWR1bGVEYXRhYmFzZVB1c2hJZk5lY2Vzc2FyeSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggMjYwYTQ1YTM1ZGY3NTE0Njg1OGRiYWMyYWMyMjg1
ZWQ3OTJjMmM3Ni4uOGY3NjBkNjJmN2RiMDA3ZTVjNGFiZWQzOGFhMDhjYmVmZTAxNjUxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VG
aWxlTWFwcGluZyh1aW50NjRfdCBmaWxlU2l6ZSkKIAogU1dTY3JpcHRTdG9yYWdlOjpTV1Njcmlw
dFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgOiBtX2RpcmVjdG9yeShkaXJl
Y3RvcnkpCi0gICAgLCBtX3NhbHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgo
KSkudmFsdWVPcihGaWxlU3lzdGVtOjpTYWx0KCkpKQorICAgICwgbV9zYWx0KEZpbGVTeXN0ZW06
OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpLnZhbHVlX29yKEZpbGVTeXN0ZW06OlNhbHQoKSkp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGFmYzU4ODQzNDI5
NTgwYzdmY2FmOGFiMDdkMThlMWE2MmE2ZDQ5YmUuLmY3YWYwN2QxYjRhOWM3NTQzNzhkZTIzNmU0
YTRmYjlmZTFmMmRiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC05NSwxMCArOTUsMTAgQEAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjpzZXJ2aWNlV29ya2VyQ2xpZW50V2l0aE9yaWdp
bkJ5SUQoY28KIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9y
aWdpbi5maW5kKGNsaWVudE9yaWdpbik7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fY2xpZW50SWRl
bnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS5p
ZGVudGlmaWVycy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY2xp
ZW50SXRlcmF0b3IgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CiAgICAg
QVNTRVJUKGNsaWVudEl0ZXJhdG9yICE9IG1fY2xpZW50c0J5SWQuZW5kKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDEyMDA1MTY5OGJmOTM5ODE4ZTRk
NDNlODVjNjk1NzMwMGJhN2RjYWYuLmIwNTYyOGY0MDBlYTlkOWM2MzdmYzNhYjQ1N2YwMDRmZGM1
ZjI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xhaW0oU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZQogewogICAgIGF1dG8qIHdvcmtl
ciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHNlcnZlciA9IHdvcmtlciA/IHdvcmtlci0+c2Vy
dmVyKCkgOiBudWxscHRyOwotICAgIGNhbGxiYWNrKHNlcnZlciA/IHNlcnZlci0+Y2xhaW0oKndv
cmtlcikgOiBXVEY6Om51bGxvcHQpOworICAgIGNhbGxiYWNrKHNlcnZlciA/IHNlcnZlci0+Y2xh
aW0oKndvcmtlcikgOiBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggOTcyNTcwMDZlOGEyN2NkMDVhYzM0YjQwMDVjOWVj
YzliYTRmN2Q4OC4uMjQwNTI5ODc4YjdiYmEyZDVjOGRlMjVjY2FjMTZmNDYwMGNmOWNmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IFNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcmVn
aXN0cmF0aW9uKTsKIAotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24t
PmRhdGEoKSwgbV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRV
UkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLCBtX3Nj
cmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBtX3JlZ2lzdHJh
dGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJ
bmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNj
cmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQs
IG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dXBkYXRl
QXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4MGRkZDNk
ZTNlZGM0MjRlMzcwZTU2OTlhODEzZDZlOWVlNGZiZTAzLi5kODUyNDRjYTcyMDViMmFmNzBhY2Uy
OTE1YjQ1YTU1N2M4Njc1MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTQwNyw4ICs0MDcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6b3Bl
bihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmwsCiAKIE9wdGlvbmFsPEV4
Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgpCiB7Ci0gICAg
Ly8gQSByZXR1cm4gdmFsdWUgb3RoZXIgdGhhbiBXVEY6Om51bGxvcHQgbWVhbnMgd2Ugc2hvdWxk
IG5vdCB0cnkgdG8gc2VuZCwgYW5kIHdlIHNob3VsZCByZXR1cm4gdGhhdCB2YWx1ZSB0byB0aGUg
Y2FsbGVyLgotICAgIC8vIFdURjo6bnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBh
bmQgc2hvdWxkIGNvbnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgorICAgIC8vIEEgcmV0
dXJuIHZhbHVlIG90aGVyIHRoYW4gc3RkOjpudWxsb3B0IG1lYW5zIHdlIHNob3VsZCBub3QgdHJ5
IHRvIHNlbmQsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIHRoYXQgdmFsdWUgdG8gdGhlIGNhbGxlci4K
KyAgICAvLyBzdGQ6Om51bGxvcHQgbWVhbnMgd2UgYXJlIHJlYWR5IHRvIHNlbmQgYW5kIHNob3Vs
ZCBjb250aW51ZSB3aXRoIHRoZSBzZW5kIGFsZ29yaXRobS4KIAogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uT3I8dm9pZD4geyB9OwpA
QCAtNDM2LDcgKzQzNiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVx
dWVzdDo6cHJlcGFyZVRvU2VuZCgpCiAgICAgfQogCiAgICAgbV9lcnJvciA9IGZhbHNlOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRXhj
ZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoT3B0aW9uYWw8U2VuZFR5cGVzPiYm
IHNlbmRUeXBlKQpAQCAtNjIzLDcgKzYyMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZXhjZXB0
aW9uQ29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fdXBsb2FkQ29tcGxldGUgPSAhcmVxdWVz
dC5odHRwQm9keSgpOwogICAgIG1fc2VuZEZsYWcgPSB0cnVlOwpAQCAtNjk5LDggKzY5OSw4IEBA
IGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAgICAgLy8gQ2FuY2VsbGlu
ZyBtX2xvYWRpbmdBY3Rpdml0eSBtYXkgdHJpZ2dlciBhIHdpbmRvdy5vbmxvYWQgY2FsbGJhY2sg
d2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAgICAvLyBUaGlzIHdvdWxk
IGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgotICAgIC8vIG1fbG9hZGluZ0Fj
dGl2aXR5IGlzIHNldCB0byBXVEY6Om51bGxvcHQgYmVmb3JlIGJlaW5nIGNhbmNlbGxlZCB0byBl
eGl0IGVhcmx5IGluIGFueSByZWVudHJhbnQgaW50ZXJuYWxBYm9ydCgpIGNhbGwuCi0gICAgYXV0
byBsb2FkaW5nQWN0aXZpdHkgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9hZGluZ0FjdGl2aXR5LCBXVEY6
Om51bGxvcHQpOworICAgIC8vIG1fbG9hZGluZ0FjdGl2aXR5IGlzIHNldCB0byBzdGQ6Om51bGxv
cHQgYmVmb3JlIGJlaW5nIGNhbmNlbGxlZCB0byBleGl0IGVhcmx5IGluIGFueSByZWVudHJhbnQg
aW50ZXJuYWxBYm9ydCgpIGNhbGwuCisgICAgYXV0byBsb2FkaW5nQWN0aXZpdHkgPSBzdGQ6OmV4
Y2hhbmdlKG1fbG9hZGluZ0FjdGl2aXR5LCBzdGQ6Om51bGxvcHQpOwogICAgIGxvYWRpbmdBY3Rp
dml0eS0+bG9hZGVyLT5jYW5jZWwoKTsKIAogICAgIC8vIElmIHdpbmRvdy5vbmxvYWQgY2FsbGJh
Y2sgY2FsbHMgb3BlbigpIGFuZCBzZW5kKCkgb24gdGhlIHNhbWUgeGhyLCBtX2xvYWRpbmdBY3Rp
dml0eSBpcyBub3cgc2V0IHRvIGEgbmV3IHZhbHVlLgpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZykKIAogICAgIG1f
cmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKLSAgICBtX2xvYWRpbmdBY3Rpdml0eSA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX2xvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIG1fc2VuZEZsYWcgPSBmYWxzZTsKICAgICBjaGFuZ2VTdGF0ZShET05FKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMu
aAppbmRleCA5ODBkNjQxY2IxZTgxNDc4ZjQ1OTE5OGUyMTY3NjdhNWRhMTgzNDY3Li4xMmFlZDZj
YTNhMmExOWMxYWRkYWExZjM1NWY5NDRkNTgzZTY4ZjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5oCkBAIC01Niwy
MyArNTYsMjMgQEAgc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1ldGVycyB7CiAgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAgICAgZGVjb2RlciA+
PiBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgICAgICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3Rvcnkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IG1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNv
ZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAg
ICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBkZWNvZGVyID4+
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIGlmICghbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5k
bGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgICAgIHJldHVy
biBHUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAK
aW5kZXggOGYxNDQ4NzA3YzJhMGQ2NDBiOTMwYjFkYzUyYzkyYzZhMDg2MTM2MS4uOWNlNDU2NTk0
ZDU3ZmRiYTIwMGNkMTBiMTE3NzYxYjcyYzQzMGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUu
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gRGlzcGxheUxpc3RSZWFkZXJI
YW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKICAgICBhdXRvIHByZXZpb3VzVW5yZWFk
Qnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5nZVN1YihhbW91bnQpOwogICAgIGlm
IChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwgYW1vdW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
cHJldmlvdXNVbnJlYWRCeXRlcyAtIGFtb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApp
bmRleCAzZWI3MGE0NDQwZmUyMTZmODQ5MWRiMjA1ZjgyNGZlZjc5YTE0NzI2Li40OGQ2NmUyZTQ0
MDM0MTdmYmY5ZjY1OWIyNjI3OGFmNDRmNzYxMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuaApA
QCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChoZWFkZXIud2FpdGluZ1N0YXR1
cy5leGNoYW5nZShTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1czo6Tm90V2Fp
dGluZykgPT0gU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OldhaXRpbmdTdGF0dXM6OlJlc3VtaW5n
KQogICAgICAgICAgICAgcmV0dXJuIHsgaGVhZGVyLnJlc3VtZVJlYWRpbmdJbmZvIH07CiAKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZDYyOGI2ZmMw
NjcyNGM3MjY3MTQwOWU3ZDQ1YWQ0N2I2NmY2NjIxNy4uNDRlMWUxYzA1YjNlYmYyMmRkOGJjMzQ1
NWVkOWIwYzY4YTgzZWJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTgxLDcgKzE4
MSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgdXBkYXRlUmVuZGVyaW5nUmVzb3Vy
Y2VSZXF1ZXN0KCk7CiAKICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdX
YWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpCi0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtl
VXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywg
c3RkOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAogRGlzcGxheUxpc3Q6OlJlcGxheVJlc3Vs
dCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKQpAQCAtMjM5LDcg
KzIzOSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bmV4
dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAgICAgICAgICBkZXN0aW5hdGlv
biA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpy
ZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKICAgICAgICAgICAgIGlmICghZGVz
dGluYXRpb24pIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ1dha2V1cEluZm8p
OwotICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50
aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyLCByZWFz
b24gfSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1cElu
Zm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5h
dGlvbkltYWdlQnVmZmVyLCByZWFzb24gfSwgc3RkOjpudWxsb3B0IH19OwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBs
eQogCiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKLSAgICAgICAgICAgICAgICBtX3BlbmRpbmdXYWtl
dXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgbmV3RGVzdGluYXRpb25J
ZGVudGlmaWVyLCByZWFzb24gfSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAgICAgICAgIG1f
cGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCBuZXdE
ZXN0aW5hdGlvbklkZW50aWZpZXIsIHJlYXNvbiB9LCBzdGQ6Om51bGxvcHQgfX07CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMxMyw3ICszMTMs
NyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxheUxp
c3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwogICAgICAgICB9CiAKICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBpdGVtIGJ1ZmZl
ciBmcm9tIHRoZSBzdGFydC4KLSAgICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4Y2hhbmdl
KG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50czsKKyAgICAgICAg
YXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6
bnVsbG9wdCktPmFyZ3VtZW50czsKICAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IG5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0cygqZGVzdGlu
YXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKm5leHRIYW5kbGUsIGFyZ3VtZW50
cy5yZWFzb24pOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpCiAgICAgICAg
ICAgICBicmVhazsKQEAgLTMyMiwxNiArMzIyLDE2IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVz
CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQo
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
bV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFyZWREaXNwbGF5TGlzdEhh
bmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIEdQVVByb2Nlc3NXYWtl
dXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICBtX3BlbmRpbmdX
YWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpoZWFk
ZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1cFJlYXNvbjo6
VW5zcGVjaWZpZWQgfSwgc3RkOjpudWxsb3B0IH19OwogfQogCiBPcHRpb25hbDxTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hhcmVkTWVtb3J5
Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCkKIHsKLSAgICBNRVNTQUdF
X0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IHx8
IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgV1RGOjpu
dWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNobWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFscmVh
ZHkgYmlnIGVub3VnaCB0byBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKKyAgICBNRVNTQUdFX0NIRUNL
X1dJVEhfUkVUVVJOX1ZBTFVFKCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5IHx8IGJ5dGVD
b3VudCA+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgc3RkOjpudWxsb3B0
LCAiVGhlIGV4aXN0aW5nIFNobWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFscmVhZHkgYmln
IGVub3VnaCB0byBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKIAogICAgIGlmIChieXRlQ291bnQgPiA2
NCAqIE1CKSB7CiAgICAgICAgIC8vIEp1c3QgYSBzYW5pdHkgY2hlY2suIEEgNEsgaW1hZ2UgaXMg
MzZNQi4KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBkZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnko
KTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hl
TmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgogICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmltYWdlKSk7CiAKICAg
ICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQ
ZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHdha2VV
cEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBX
VEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpudWxsb3B0KS0+YXJn
dW1lbnRzKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVm
PEZvbnQ+JiYgZm9udCkKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQogICAgIGF1dG8gaWRlbnRpZmllciA9
IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CiAgICAgaWYgKG1fcGVuZGluZ1dha2V1
cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChpZGVudGlm
aWVyKSkKLSAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CisgICAgICAgIHdh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZv
LCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmRlbGV0ZUFsbEZvbnRzKCkKQEAgLTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3BsYXlM
aXN0OjpJdGVtQgogICAgIH0KIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVu
ZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikpCi0gICAgICAg
IHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJ
bmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpudWxsb3B0
KS0+YXJndW1lbnRzKTsKIH0KIAogT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdB
Uk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBl
LCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKQEAgLTU4NSwxMCArNTg1LDEwIEBAIE9wdGlvbmFs
PERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxp
bmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVSZW5kZXJpbmdSZXNvdXJjZVJl
cXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMTAwMDM4OTVjMDQ5NDg4NmI0ZGFjNzRm
NDIxMzY2MDFiYTg2YzRiNC4uZGNjYzgyMDgyMTFjMWZiYzg4ODNhODMxNDgwYTI0YTQ5YTMxOTlj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3QpKSBUKFdURk1v
dmUoKml0ZW0pKTsKICAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlvbiB9fTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXlSZXN1
bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNv
cmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3NjhhMzhiZjhiODEwMTZhNWQxNTRh
NzQ3YzI5NGFjNWJlZDRkN2Y3Li44YWFiNzhmNjViYTRlMDdlYmM4ODY5MGU4MGY0YTFkYTk2ZDhl
ZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTUwLDIyICs1MCwyMiBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ0JhY2tlbmRJZGVu
dGlmaWVyPiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPElQQzo6
U2VtYXBob3JlPiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKICAgICAgICAgZGVjb2RlciA+
PiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKICAgICAgICAgaWYgKCFyZXN1bWVEaXNwbGF5
TGlzdFNlbWFwaG9yZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IHBhZ2VQcm94eUlEOwogICAgICAgICBkZWNvZGVyID4+IHBhZ2VQcm94eUlE
OwogICAgICAgICBpZiAoIXBhZ2VQcm94eUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICAgICAgZGVjb2RlciA+PiBw
YWdlSUQ7CiAgICAgICAgIGlmICghcGFnZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJu
IHt7ICppZGVudGlmaWVyLCBXVEZNb3ZlKCpyZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSksICpw
YWdlUHJveHlJRCwgKnBhZ2VJRCB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9uU2VnbWVudEluZm8uaAppbmRleCAx
ZDM0OGVmZDFlMzdiNzA2N2UyOGVlYmFlNjZhOTJlMjBhMDNlNWQyLi5kMTI3OWE0NTRmZWU4NGUw
NTdlZDNhZmIxMGI2YjVjZGIyNTM4ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9Jbml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKQEAgLTU3LDEy
ICs1NywxMiBAQCBzdHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyB7CiAgICAgICAgICAg
ICBPcHRpb25hbDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAgICAgICAgIGlmICghbWVk
aWFEZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlvbmFs
PFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgICAgICBX
VEZNb3ZlKCptZWRpYURlc2NyaXB0aW9uKSwKQEAgLTkwLDIyICs5MCwyMiBAQCBzdHJ1Y3QgSW5p
dGlhbGl6YXRpb25TZWdtZW50SW5mbyB7CiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZHVy
YXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAgICAgICAgIGlmICghZHVyYXRp
b24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZvcm1hdGlv
bj4+IGF1ZGlvVHJhY2tzOwogICAgICAgICBkZWNvZGVyID4+IGF1ZGlvVHJhY2tzOwogICAgICAg
ICBpZiAoIWF1ZGlvVHJhY2tzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9y
PFRyYWNrSW5mb3JtYXRpb24+PiB2aWRlb1RyYWNrczsKICAgICAgICAgZGVjb2RlciA+PiB2aWRl
b1RyYWNrczsKICAgICAgICAgaWYgKCF2aWRlb1RyYWNrcykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdGV4dFRyYWNrczsKICAgICAgICAg
ZGVjb2RlciA+PiB0ZXh0VHJhY2tzOwogICAgICAgICBpZiAoIXRleHRUcmFja3MpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmR1cmF0aW9uKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDgyNDZkOWM3NTZlZjNiNzFkMGY4
OGJjZGNhNDg2OGNmMWJiODdjMjYuLjEzNjg5M2EwY2QzOTBkNDkwNmMwOGNhNjI2OGMzYWIyMTQx
YTJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzgsMTQgKzc4LDE0
IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
UHJveHk6OnVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNvbXBsZXRpb24pCiB7CiAgICAgaWYgKCFyZXNwb25zZS5idWZmZXIoKSkgewotICAgICAgICBj
b21wbGV0aW9uKHRydWUsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsK
KyAgICAgICAgY29tcGxldGlvbih0cnVlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhl
IENETVByaXZhdGU6OnNhbml0aXplUmVzcG9uc2UoKSBjaGVjayBoZXJlOgogICAgIGF1dG8gc2Fu
aXRpemVkUmVzcG9uc2UgPSBtX2NkbS0+c2FuaXRpemVSZXNwb25zZSgqcmVzcG9uc2UuYnVmZmVy
KCkpOwogICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UpIHsKLSAgICAgICAgY29tcGxldGlvbihm
YWxzZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBj
b21wbGV0aW9uKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgdHlwZSwgU3Ry
aW5nIHNlc3Npb24KICAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplU2Vz
c2lvbklkKCkgY2hlY2sgaGVyZToKICAgICBhdXRvIHNhbml0aXplZFNlc3Npb25JZCA9IG1fY2Rt
LT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogICAgIGlmICghc2FuaXRpemVkU2Vzc2lv
bklkKSB7Ci0gICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
OjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOworICAgICAgICBjb21wbGV0aW9uKHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5kZXggMWY3ZTE0MzBhN2Q3
NjQ5ZDk2NWUyODkxYWMyZThlNTI5YTIwMTdhZC4uZDc2ZmNmMWE2ZmM4MTY2ZTUzNGE5NWRmMjI1
MzYwZWI2NGY4NGMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEoSW1hZ2VEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVy
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFp
bnMoaWRlbnRpZmllcikpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwgeyB9LCBmYWxz
ZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwgeyB9LCBmYWxz
ZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5LmNwcAppbmRleCBiMjkwODk4MWU0Nzc3M2E1N2MyODZjYjYzNWJkOTJjY2YzMGY3
NTZkLi44ZWU5ZWU4ZTEzMjI0MjQxNDY2NmU4YmVkYzk4ZmQ2NGUyMjFkMDBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjgsNyArNjgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHN0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZlcnRUb09wdGlv
bmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFy
cmF5LT5ieXRlTGVuZ3RoKCkpIH07CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIHVw
ZGF0ZSwgVXBkYXRlQwogewogICAgIGF1dG8gdXBkYXRlQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFy
cmF5KFdURk1vdmUodXBkYXRlKSk7CiAgICAgaWYgKCF1cGRhdGVBcnJheSkgewotICAgICAgICBj
b21wbGV0aW9uKGZhbHNlLCBXVEY6Om51bGxvcHQsIDAsIDApOworICAgICAgICBjb21wbGV0aW9u
KGZhbHNlLCBzdGQ6Om51bGxvcHQsIDAsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNj
cmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRGVz
Y3JpcHRpb24uaAppbmRleCA5MDZjZGY2N2ZiNzMyMWQ1ZTAyMmY3M2QxZTlkMzNjZTFlOWY1ODc2
Li5hMzkwMDFmZmI3OTk1OWJhNzU3OGJiNjAzYmYwZjg4OWE4ZTMxY2ZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0aW9u
LmgKQEAgLTczLDIyICs3MywyMiBAQCBzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm8gewogICAg
ICAgICBPcHRpb25hbDxTdHJpbmc+IGNvZGVjOwogICAgICAgICBkZWNvZGVyID4+IGNvZGVjOwog
ICAgICAgICBpZiAoIWNvZGVjKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aXNWaWRlbzsKICAgICAgICAgZGVjb2RlciA+PiBpc1ZpZGVvOwogICAgICAgICBpZiAoIWlzVmlk
ZW8pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0F1ZGlvOwogICAgICAg
ICBkZWNvZGVyID4+IGlzQXVkaW87CiAgICAgICAgIGlmICghaXNBdWRpbykKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzVGV4dDsKICAgICAgICAgZGVjb2RlciA+PiBpc1Rl
eHQ7CiAgICAgICAgIGlmICghaXNUZXh0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7
CiAgICAgICAgICAgICBXVEZNb3ZlKCpjb2RlYyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggZjhl
MTkyYjJjYzY1OWRhZjQ4ZDgwMTlhYjk2MTM5YzJkZTgxNjRkOC4uNWYyYjY1YjI5ZDhjMGQwNGRl
ZjljZGI3NTM1ZjI2MDM5OTVmODE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtOTAsNyArOTAs
NyBAQCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXllclByb3h5KFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtYQogUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6flJl
bW90ZU1lZGlhUGxheWVyUHJveHkoKQogewogICAgIGlmIChtX3BlcmZvcm1UYXNrQXRNZWRpYVRp
bWVDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9wZXJmb3JtVGFza0F0TWVkaWFUaW1lQ29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICBtX3Bl
cmZvcm1UYXNrQXRNZWRpYVRpbWVDb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCk7CiAgICAgc2V0U2hvdWxkRW5hYmxlQXVkaW9Tb3VyY2VQcm92aWRlcihmYWxzZSk7
CiB9CiAKQEAgLTk4NCw3ICs5ODQsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnBl
cmZvcm1UYXNrQXRNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0YXNrVGltZSwgTQogICAgICAg
ICAvLyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwZXJmb3JtVGFza0F0TWVk
aWFUaW1lKSwgc28gY2FuY2VsIHRoZSBleGlzdGluZwogICAgICAgICAvLyBDb21wbGV0aW9uSGFu
ZGxlci4KICAgICAgICAgYXV0byBoYW5kbGVyID0gV1RGTW92ZShtX3BlcmZvcm1UYXNrQXRNZWRp
YVRpbWVDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIGhhbmRsZXIoV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOworICAgICAgICBoYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
KTsKICAgICB9CiAKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaAppbmRleCBkOGY4YzdlN2UxZjUxZjYwZDY4
M2I4ZDI0YmY1MzkxNzIyZjNkMWE0Li4yZWZhMTRlYjc1MzE0ZGQ4ZDY5ZWY3OGE4MTRmMjNjNWI2
NzQzNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaApAQCAtNzMs
NTkgKzczLDU5IEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbiB7
CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcmVmZXJyZXI7CiAgICAgICAgIGRlY29kZXIgPj4g
cmVmZXJyZXI7CiAgICAgICAgIGlmICghcmVmZXJyZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKICAgICAgICAgZGVjb2RlciA+PiB1c2VyQWdlbnQ7
CiAgICAgICAgIGlmICghdXNlckFnZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4g
c291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOwogICAgICAgICBpZiAoIXNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbmV0
d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0ludGVyZmFjZU5h
bWU7CiAgICAgICAgIGlmICghbmV0d29ya0ludGVyZmFjZU5hbWUpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiBtZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKICAgICAgICAgZGVjb2RlciA+PiBtZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKICAgICAgICAgaWYgKCFtZWRpYUNv
bnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljczsK
ICAgICAgICAgZGVjb2RlciA+PiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljczsKICAgICAg
ICAgaWYgKCFwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYg
RU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBs
YXRmb3JtVGV4dFRyYWNrRGF0YT4+IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAgICAgZGVjb2Rl
ciA+PiBvdXRPZkJhbmRUcmFja0RhdGE7CiAgICAgICAgIGlmICghb3V0T2ZCYW5kVHJhY2tEYXRh
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4g
ZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYgKCFkb2N1bWVudFNlY3VyaXR5T3Jp
Z2luKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvZ0lkZW50aWZp
ZXI7CiAgICAgICAgIGRlY29kZXIgPj4gbG9nSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFsb2dJ
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNl
UGVyc2lzdGVudENhY2hlOwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVBlcnNpc3RlbnRD
YWNoZTsKICAgICAgICAgaWYgKCFzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxib29sPiBpc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGlz
VmlkZW87CiAgICAgICAgIGlmICghaXNWaWRlbykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVy
biB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcmVmZXJyZXIpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA4YTdkZjYzOTJmNTI5N2I4Zjg5MzVhMGE3NTllZDhi
OTgxNzMxYjJkLi5lOWZkZjcwMTQwMDQwOTk0ZmUwNWRmMWU3OGFiNGU2YjVjM2VmOTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtNzYsNzIgKzc2LDcyIEBA
IHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9w
dGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsK
ICAgICAgICAgaWYgKCF0cmFja0lkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRv
bVN0cmluZz4gbGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICgh
bGFiZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYW5ndWFn
ZTsKICAgICAgICAgZGVjb2RlciA+PiBsYW5ndWFnZTsKICAgICAgICAgaWYgKCFsYW5ndWFnZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGluQmFuZE1ldGFkYXRh
VHJhY2tEaXNwYXRjaFR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gaW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZTsKICAgICAgICAgaWYgKCFpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hU
eXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBzdGFydFRpbWVW
YXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAg
aWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGlu
dD4gdHJhY2tJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiB0cmFja0luZGV4OwogICAgICAgICBp
ZiAoIXRyYWNrSW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ+IGN1ZUZvcm1hdDsKICAgICAgICAgZGVj
b2RlciA+PiBjdWVGb3JtYXQ7CiAgICAgICAgIGlmICghY3VlRm9ybWF0KQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZD4g
a2luZDsKICAgICAgICAgZGVjb2RlciA+PiBraW5kOwogICAgICAgICBpZiAoIWtpbmQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0Nsb3NlZENhcHRpb25zOwogICAgICAg
ICBkZWNvZGVyID4+IGlzQ2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGlmICghaXNDbG9zZWRDYXB0
aW9ucykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzU0RIOwogICAgICAg
ICBkZWNvZGVyID4+IGlzU0RIOwogICAgICAgICBpZiAoIWlzU0RIKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzOwogICAgICAg
ICBkZWNvZGVyID4+IGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAgICAgaWYgKCFj
b250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxib29sPiBpc01haW5Qcm9ncmFtQ29udGVudDsKICAgICAgICAgZGVjb2RlciA+PiBpc01haW5Q
cm9ncmFtQ29udGVudDsKICAgICAgICAgaWYgKCFpc01haW5Qcm9ncmFtQ29udGVudCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRWFzeVRvUmVhZDsKICAgICAgICAgZGVj
b2RlciA+PiBpc0Vhc3lUb1JlYWQ7CiAgICAgICAgIGlmICghaXNFYXN5VG9SZWFkKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNEZWZhdWx0OwogICAgICAgICBkZWNvZGVy
ID4+IGlzRGVmYXVsdDsKICAgICAgICAgaWYgKCFpc0RlZmF1bHQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXggYThmMDVkMThmZDk5ODhlYmI5OWM3NjczYjY4N2E2
NzBkOTJlMDE0OC4uMjlkZjIzNWZmMWQzMWU2ZGU5MjNiYWVhNGFjNzdkNjI4MTk4NTk4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC02Niw0NyArNjYsNDcgQEAgc3RydWN0
IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxBdG9t
U3RyaW5nPiB0cmFja0lkOwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAgICAgICAgIGlm
ICghdHJhY2tJZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxh
YmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgICAg
IGRlY29kZXIgPj4gbGFuZ3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3VhZ2UpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNlOwogICAgICAg
ICBkZWNvZGVyID4+IHN0YXJ0VGltZVZhcmlhbmNlOwogICAgICAgICBpZiAoIXN0YXJ0VGltZVZh
cmlhbmNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8aW50PiB0cmFja0luZGV4Owog
ICAgICAgICBkZWNvZGVyID4+IHRyYWNrSW5kZXg7CiAgICAgICAgIGlmICghdHJhY2tJbmRleCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ+IGF1ZGlvS2lu
ZDsKICAgICAgICAgZGVjb2RlciA+PiBhdWRpb0tpbmQ7CiAgICAgICAgIGlmICghYXVkaW9LaW5k
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7CiAgICAgICAg
IGRlY29kZXIgPj4gc2VsZWN0ZWQ7CiAgICAgICAgIGlmICghc2VsZWN0ZWQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6S2luZD4gdmlk
ZW9LaW5kOwogICAgICAgICBkZWNvZGVyID4+IHZpZGVvS2luZDsKICAgICAgICAgaWYgKCF2aWRl
b0tpbmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1v
dmUoKnRyYWNrSWQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0KaW5kZXgg
MGUwY2QyY2RjNmE0OTA1MzQ0NmM2ZDExY2Y3NmZhZGVkNjM5ZGU2ZC4uNGIzMzc1ZmRlMzIwMWI5
NzAxZDIwMGViYWZmNjBhYjA5MGEzMDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eUNvY29hLm1tCkBAIC04MSwyNSArODEsMjUgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpzZXRWaWRlb0lubGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJgogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIG5hdGl2ZUltYWdl
ID0gbV9wbGF5ZXItPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKICAgICBpZiAoIW5hdGl2
ZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFn
ZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UocGxhdGZvcm1JbWFnZS5nZXQoKSk7CiAgICAgaWYg
KCFzdXJmYWNlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEwOSwyMiArMTA5LDIyIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmICFVU0UoQVZGT1VOREFUSU9OKQotICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICNlbHNlCiAgICAgaWYgKCFtX3BsYXllcikgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IG1f
cGxheWVyLT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxC
dWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogICAgIGlmICghc3VyZmFjZSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA1NTdk
N2YyNjkzOTcxN2Y2MTY4NWFiNTMzNDFlNmRlYmMxNTk5MzhkLi4yMjVmNzFlMjQzZDYzMjM1MTE4
YzliYzVjMWE3Yzg0ZmUzZTE1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMwNSw4ICszMDUsOCBAQCBzdGF0aWMg
U3RyaW5nIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjb25zdCBjaGFyKiBvcmln
aW5hbFF1ZXJ5KQogc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29k
SGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJsZUFuZEluZGV4
UXVlcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZEluZGV4UXVlcmll
cyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhh
c2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewotICAgICAgICB7ICJPYnNlcnZlZERv
bWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRl
T2JzZXJ2ZWREb21haW4sIFdURjo6bnVsbG9wdCkgfSwKLSAgICAgICAgeyAiVG9wTGV2ZWxEb21h
aW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRv
cExldmVsRG9tYWlucywgV1RGOjpudWxsb3B0KSB9LAorICAgICAgICB7ICJPYnNlcnZlZERvbWFp
bnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4oY3JlYXRlT2Jz
ZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKKyAgICAgICAgeyAiVG9wTGV2ZWxEb21haW5z
Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRvcExl
dmVsRG9tYWlucywgc3RkOjpudWxsb3B0KSB9LAogICAgICAgICB7ICJTdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3Ry
aW5nPj4oY3JlYXRlU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLCBzdHJpcEluZGV4
UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnMpKSB9LAogICAgICAgICB7ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c1RvIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1
ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKSB9LAogICAgICAg
ICB7ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQsIHN0
cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQpKSB9LApAQCAt
NDA0LDEzICs0MDQsMTMgQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWIKICAgICBhdXRvIHN0YXRl
bWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIDEgZnJvbSBzcWxpdGVf
bWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBhbmQgdGJsX25hbWU9PyJfcyk7CiAgICAgaWYgKCFz
dGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0lu
U2NoZW1hIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKS5rZXlzKCkp
IHsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGUpICE9IFNRTElURV9P
SykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2No
ZW1hIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgICAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewogICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hIHNjaGVtYSBpcyBt
aXNzaW5nIHRhYmxlOiAlcyIsIHRoaXMsIHRhYmxlLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTQxOSw3
ICs0MTksNyBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYgogICAgICAgICBzdGF0ZW1lbnQtPnJl
c2V0KCk7CiAgICAgfQogICAgIGlmIChtaXNzaW5nVGFibGVzLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBtaXNzaW5nVGFibGVzOwogfQpAQCAtMTAxOCwxMSArMTAxOCwxMSBAQCBPcHRpb25h
bDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklE
KGNvbnN0IFJlZ2lzdHJhYgogICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8IHNjb3BlZFN0YXRl
bWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJvbVN0cmluZyBmYWlsZWQu
IEVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
ICAgICAKICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKIH0KQEAgLTE1NjEs
NyArMTU2MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluCiAgICAgICAgIGRlYnVnQnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3NhZ2VMZXZlbDo6
SW5mbywgbWFrZVN0cmluZygiW0lUUF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50ZWQgZm9yICci
X3MsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmcoKSwgIicgdW5kZXIgb3BlbmVy
IHBhZ2UgZnJvbSAnIl9zLCBvcGVuZXJEb21haW4uc3RyaW5nKCksICInLCB3aXRoIHVzZXIgaW50
ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIl9zKSk7CiAgICAgfQogCi0gICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mp
LCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlclBhZ2Us
IFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOworICAgIGdyYW50U3RvcmFnZUFjY2Vz
c0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShv
cGVuZXJEb21haW4pLCBzdGQ6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duOjpObywgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJQYWdlLCBbXShTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTIyMDUsNyArMjIwNSw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4KICAgICBpZiAo
IXJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lv
bklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZW5zdXJlUmVz
b3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4gaW5zZXJ0T2JzZXJ2ZWREb21haW4g
ZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBXVEY6Om51bGxvcHQg
fTsKKyAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBzdGQ6Om51bGxvcHQgfTsKICAg
ICB9CiAKICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6WWVzLCBkb21haW5JRChkb21haW4pLnZh
bHVlKCkgfTsKQEAgLTI1MTksNyArMjUxOSw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcihEb21haW5ECiBP
cHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IERvbWFpbkRhdGEmIHN0YXRpc3RpYykK
IHsKICAgICBpZiAoc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA8PSAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZTsKIH0KQEAgLTI5MzYsNyArMjkzNiw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0Rh
dGVzUGFyYW1ldGVycygpCiAgICAgfQogCiAgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXplIDw9
IG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQgLSAxKQotICAgICAgICBtX3Nob3J0V2luZG93T3Bl
cmF0aW5nRGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zaG9ydFdpbmRvd09wZXJhdGlu
Z0RhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChnZXRPcGVyYXRp
bmdEYXRlV2luZG93U3RhdGVtZW50LT5iaW5kSW50KDEsIG9wZXJhdGluZ0RhdGVzV2luZG93U2hv
cnQgLSAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGdldE9wZXJhdGluZ0RhdGVXaW5k
b3dTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CkBAIC0yOTQ4LDcgKzI5NDgsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRp
bmdEYXRlc1BhcmFtZXRlcnMoKQogICAgIH0KIAogICAgIGlmIChtX29wZXJhdGluZ0RhdGVzU2l6
ZSA8PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgLSAxKQotICAgICAgICBtX2xvbmdXaW5kb3dP
cGVyYXRpbmdEYXRlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2xvbmdXaW5kb3dPcGVyYXRp
bmdEYXRlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAgICBnZXRPcGVyYXRpbmdE
YXRlV2luZG93U3RhdGVtZW50LT5yZXNldCgpOwogICAgICAgICBpZiAoZ2V0T3BlcmF0aW5nRGF0
ZVdpbmRvd1N0YXRlbWVudC0+YmluZEludCgxLCBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgLSAx
KSAhPSBTUUxJVEVfT0sKQEAgLTMxMTYsNyArMzExNiw3IEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxV
bmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIE9wdGlvbmFsPEF0dHJpYnV0ZWRQ
cml2CiAgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklEKGRlc3RpbmF0
aW9uU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIXNvdXJjZVNpdGVEb21haW5J
RCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGZpbmRVbmF0
dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9maW5kVW5h
dHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5kUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiX3MpOwogICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNjb3BlZFN0YXRl
bWVudApAQCAtMzIzNyw3ICszMjM3LDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9hZFMKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgYW4g
aW52YWxpZCBhdHRyaWJ1dGlvbi4iKTsKICAgICAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFuIGludmFsaWQg
YXR0cmlidXRpb24uIl9zKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gZGF0YSA9
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKQEAgLTMyNDgsNyArMzI0OCw3IEBAIE9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmRE
YXRhPiBSZXNvdXJjZUxvYWRTCiAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6SW5m
bywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBhdHRyaWJ1
dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwgIicgYW5kIHBy
aW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSk7CiAgICAgfQogCi0gICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgc2Vjb25kc1Vu
dGlsU2VuZCB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgc2Vjb25kc1VudGls
U2VuZCB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBhdXRvIGF0dHJpYnV0
aW9uID0gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRlc3RpbmF0aW9u
U2l0ZSk7CiAgICAgYXV0byYgcHJldmlvdXNseVVuYXR0cmlidXRlZCA9IGF0dHJpYnV0aW9uLmZp
cnN0OwpAQCAtMzI2Miw3ICszMjYyLDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9hZFMKICAgICAg
ICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGlsU2VuZCB2YWx1
ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhlcmUgY2FuIGJl
IG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuCiAgICAgICAg
IGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CkBAIC0zMjg1
LDcgKzMyODUsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwogICAgICAgICBpZiAoIXByZXZp
b3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCkuaGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpKSB7CiAg
ICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0cmlidXRlZC52
YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3ZlKGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEpKTsKICAgICAgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNW
YWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgICAgIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnByZXZpb3VzbHlB
dHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJp
YnV0ZWQpOwogCkBAIC0zMjk3LDcgKzMyOTcsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwog
ICAgIH0KIAogICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNl
bmRWYWx1ZXMoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzZWNvbmRzVW50aWxTZW5kOwogfQpAQCAtMzQ0
NSw3ICszNDQ1LDcgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZD4sIE9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG8KICAgICBhdXRvIGRlc3RpbmF0
aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRpb25TaXRlKCku
cmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRl
c3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQg
PSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5kU3RhdGVtZW50LCBl
YXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5kIl9zKTsKIApAQCAt
MzUxNSw3ICszNTE1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUMKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoKnNvdXJj
ZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKTsKLSAgICAgICAgc291cmNl
RWFybGllc3RUaW1lVG9TZW5kID0gV1RGOjpudWxsb3B0OworICAgICAgICBzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0
aW9uOgogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSB7CkBAIC0z
NTIzLDcgKzM1MjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3RpbmF0aW9uKCpz
b3VyY2VTaXRlRG9tYWluSUQsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCk7Ci0gICAgICAgIGRl
c3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gV1RGOjpudWxsb3B0OworICAgICAgICBkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBEb24ndCBjbGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVubGVzcyBpdCBo
YXMgYmVlbiByZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHNpdGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CmluZGV4IDYwYzY2MjRlMjk1NGE3OGM5NGI5OTUxNThiYzI1ZWUyZGE5OWVkYTAuLjkzMGUyYjQ1
NTFhZmUyMTlhZDAxN2FkNTQxNTI1NjQ3NThmYjcyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICAgICAgICAgZGVidWdCcm9hZGNhc3RDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpJVFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJbmZvLCBtYWtlU3Ry
aW5nKCJbSVRQXSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJyJfcywgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLCAiJyB1bmRlciBvcGVuZXIgcGFnZSBmcm9tICci
X3MsIG9wZW5lckRvbWFpbi5zdHJpbmcoKSwgIicsIHdpdGggdXNlciBpbnRlcmFjdGlvbiBpbiB0
aGUgb3BlbmVkIHdpbmRvdy4iX3MpKTsKICAgICB9CiAKLSAgICBncmFudFN0b3JhZ2VBY2Nlc3NJ
bnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3Bl
bmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bjo6Tm8sIFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyUGFnZSwgW10oU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RG
TW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiks
IHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246
Ok5vLCBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlclBhZ2UsIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkKSB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZy
YW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNT
aG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkzMiw3ICs5
MzIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6c2hvdWxkRW5m
b3JjZVNhbWVTaXRlU3RyaWN0Rm9yKFJlc291cmNlTAogT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKQogewogICAgIGlmIChz
dGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2go
KS52YWx1ZSgpIDw9IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAppbmRleCA0NTAwYjg1YjZmOTY5MmYyOGEwMTVlYTFkYWNkYzRhMTc1ZTRhOTlkLi5i
ZjFjNzUzN2JiMzQzY2UxNGExY2NjOTc3ODQ1OWE0NTNmMmVlOTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYW5jZWxQZW5kaW5nU3RhdGlzdGljc1Byb2Nl
c3NpbmdSZXF1ZXN0KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IG1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0SWRlbnRpZmll
ciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAyMWY4ZGU5NjA5
NDlhYTA4YjBlNjUwYTkyNzY1MTE4ZmZkN2JhZDQ1Li5mYTBmOTcyZDBlNzY5NjVkNDA0ZGFmMzM2
NjVmMGEwOTBiZjhlZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyRXBoZW1lcmFsKFJl
CiAKICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKLSAg
ICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVs
bG9wdCwgb3BlbmVyUGFnZUlEKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5ncmFudFN0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlEKTsKICAgICB9CiB9CiAK
QEAgLTU3Nyw3ICs1NzcsNyBAQCBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0luU3RvcgogCiAgICAgaWYgKG1f
bmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9u
ZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKLSAgICAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFy
dHlEb21haW4sIChzY29wZSA9PSBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlckZyYW1lID8gZnJhbWVJ
RCA6IFdURjo6bnVsbG9wdCksIHBhZ2VJRCk7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
Z3JhbnRTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCAoc2Nv
cGUgPT0gU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJGcmFtZSA/IGZyYW1lSUQgOiBzdGQ6Om51bGxv
cHQpLCBwYWdlSUQpOwogICAgICAgICAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9uLT5oYXNTdG9y
YWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdl
SUQpKTsKICAgICAgICAgICAgIGlzU3RvcmFnZUdyYW50ZWQgPSB0cnVlOwogICAgICAgICB9CkBA
IC0xNTQ0LDcgKzE1NDQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgUHJpdgogICAgIHBvc3RUYXNr
KFt0aGlzLCBzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBpZiAoIW1f
c3RhdGlzdGljc1N0b3JlKSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCgpCiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KICAgICAKQEAgLTE2
OTgsMTcgKzE2OTgsMTcgQEAgYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUKICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKICAgICBkZWNvZGVyID4+
IGRlY29kZWREb21haW47CiAgICAgaWYgKCFkZWNvZGVkRG9tYWluKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkU3Rv
cmFnZUFjY2VzczsKICAgICBpZiAoIWRlY29kZWRTdG9yYWdlQWNjZXNzKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8U2Vjb25kcz4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsKICAgICBkZWNvZGVyID4+IGRl
Y29kZWRUaW1lTGFzdFVwZGF0ZWQ7CiAgICAgaWYgKCFkZWNvZGVkVGltZUxhc3RVcGRhdGVkKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3ZlKCpkZWNv
ZGVkU3RvcmFnZUFjY2VzcyksIFdURk1vdmUoKmRlY29kZWRUaW1lTGFzdFVwZGF0ZWQpIH19Owog
fQpAQCAtMTczOSwxMiArMTczOSwxMiBAQCBhdXRvIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWluOwogICAgIGRl
Y29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+PiBk
ZWNvZGVkRmlyc3RQYXJ0aWVzOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZEZpcnN0UGFydGllczsK
ICAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92
ZSgqZGVjb2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMpIH19OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjNDRhNDgzOGZjOTc0OWVhNjU3YWMwZWZm
MDJlNTk4N2VhZTU2N2M5Li5iNDhjODQzYmNhNDhlYTU5N2E1MGUxOTk1NjNkZjJhMWE5OGEwNWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykg
JiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9y
RE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBm
cmFtZUlELCBwYWdlSUQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
Pih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCks
IHJlc3VsdC5zZWNvbmQpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAg
ICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAg
ICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFn
ZUlELCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjps
b2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMp
LCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNl
bmRpZgogfQpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cygpCiBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2lu
Z1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCwgYm9vbCBpc1RvcFJlc291cmNlKQogewogICAgIGlmIChtX3Nlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRWl0aGVyIGdldCB0aGUgZXhpc3Rpbmcgcm9v
dCBhY3Rpdml0eSB0cmFja2VyIGZvciB0aGlzIHBhZ2Ugb3IgY3JlYXRlIGEKICAgICAvLyBuZXcg
b25lIGlmIHRoaXMgaXMgdGhlIG1haW4gcmVzb3VyY2UuCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RhcnRUcmFja2luZ1JlcwogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpZiB0
aGUgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoZXMsIHRha2luZyBpdHMKICAgICAgICAgLy8gcHJl
dmlvdXMgc3RhdGUgd2l0aCBpdC4KICAgICAgICAgaWYgKHJvb3RBY3Rpdml0eUluZGV4ID09IG5v
dEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBIQVZFKE5XX0FDVElWSVRZKQogICAgICAgICBBU1NF
UlQobV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vyc1tyb290QWN0aXZpdHlJbmRleF0ubmV0d29ya0Fj
dGl2aXR5LmdldFBsYXRmb3JtT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzNjRjMjM2MThiM2NlMjVlMGM0M2I1NGJm
NTM4NTgyYWRhYjgzMTkyLi5mZjBmZjRhZjFjZmNjNzMyMDA5ZjBmOWE2YmQxMWI3NDVhYjBjZjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMTYwOCw3ICsxNjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICNlbmRpZgog
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YShtb2RpZmllZFNpbmNlLCBXVEY6Om51bGxvcHQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
KyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShtb2RpZmll
ZFNpbmNlLCBzdGQ6Om51bGxvcHQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsKIAogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSAm
JiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNsZWFyRGlza0NhY2hlKG1vZGlm
aWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNrc0hhbmRsZXIp
XSB7IH0pOwpAQCAtMTc0Miw3ICsxNzQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAg
ICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3RyYWJsZURvbWFpbnMpCiAgICAgICAgICAg
ICBkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvci5hZGQoZG9tYWluKTsKIAotICAgICAgICBu
ZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKFdURjo6bnVsbG9wdCwgV1RG
TW92ZShkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvciksIFtjbGVhclRhc2tzSGFuZGxlcl0g
eyB9KTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0YShz
dGQ6Om51bGxvcHQsIFdURk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFGb3IpLCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDM5YTE0MjdlMGI2NTVhYjU4NGFjMmZkZGM3ZjMyZjUwNzZkZmU1NDAuLmNmMTE3
YWE5NzU3ZjJmMGJlNGUxNTI1OWFhYjk4YmIyOTFhMWQwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMzEsNDMgKzEzMSw0MyBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAog
ICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc3VsdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdlUHJveHlJRDsKICAgICBkZWNvZGVyID4+
IHdlYlBhZ2VQcm94eUlEOwogICAgIGlmICghd2ViUGFnZVByb3h5SUQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0
LndlYlBhZ2VQcm94eUlEID0gKndlYlBhZ2VQcm94eUlEOwogCiAgICAgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHdlYlBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKICAgICBpZiAo
IXdlYlBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQud2ViUGFnZUlEID0gKndlYlBhZ2VJRDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYkZyYW1lSUQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQucGFyZW50UElEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNIVFRQQm9keTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0hUVFBCb2R5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNIVFRQQm9k
eSkgewogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gRm9ybURhdGE6OmRlY29k
ZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXN1bHQucmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAKICAgICAgICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHJlcXVlc3RCb2R5U2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGRlY29kZXIgPj4gcmVxdWVzdEJvZHlTYW5kYm94
RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFyZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNp
b25IYW5kbGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVx
dWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3Zl
KHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMtPmF0KGkpKSkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUo
ZXh0ZW5zaW9uKSk7CkBAIC0xNzgsMTQ1ICsxNzgsMTQ1IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KElQCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gcmVzb3VyY2VT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IHJlc291cmNlU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFyZXNvdXJjZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnJlc291cmNlU2FuZGJveEV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpyZXNvdXJjZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5j
b250ZW50U25pZmZpbmdQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY2xpZW50Q3JlZGVudGlhbFBvbGljeSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkUHJlY29ubmVjdE9ubHkpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5lZWRzQ2VydGlmaWNhdGVJ
bmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc01haW5GcmFtZU5hdmln
YXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFpblJlc291cmNl
TmF2aWdhdGlvbkZvckFueUZyYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubWF4aW11bUJ1ZmZlcmluZ1RpbWUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBo
YXNTb3VyY2VPcmlnaW47CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTb3VyY2VPcmlnaW4p
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmIChoYXNTb3VyY2VPcmlnaW4pIHsKICAgICAgICAgcmVzdWx0LnNvdXJjZU9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghcmVz
dWx0LnNvdXJjZU9yaWdpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGJvb2wgaGFzVG9wT3Jp
Z2luOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVG9wT3JpZ2luKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
aGFzVG9wT3JpZ2luKSB7CiAgICAgICAgIHJlc3VsdC50b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bjo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC50b3BPcmlnaW4pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM+IG9wdGlvbnM7CiAgICAg
ZGVjb2RlciA+PiBvcHRpb25zOwogICAgIGlmICghb3B0aW9ucykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQub3B0
aW9ucyA9ICpvcHRpb25zOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3NwUmVz
cG9uc2VIZWFkZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5h
bFJlcXVlc3RIZWFkZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFJlc3RyaWN0
SFRUUFJlc3BvbnNlQWNjZXNzOwogICAgIGRlY29kZXIgPj4gc2hvdWxkUmVzdHJpY3RIVFRQUmVz
cG9uc2VBY2Nlc3M7CiAgICAgaWYgKCFzaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSAqc2hvdWxk
UmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5wcmVmbGlnaHRQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkRW5h
YmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBkZWNvZGVyID4+IHNob3VsZEVuYWJs
ZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k7CiAgICAgaWYgKCFzaG91bGRFbmFibGVDcm9zc09y
aWdpblJlc291cmNlUG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5zaG91bGRFbmFibGVDcm9zc09yaWdp
blJlc291cmNlUG9saWN5ID0gKnNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k7
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUFuY2VzdG9yT3JpZ2lucykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAg
IGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICBpZiAoIXBhZ2VIYXNS
ZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJjZUxvYWRDbGll
bnQgPSAqcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICAKICAgICBPcHRpb25hbDxPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29kZXIgPj4gcGFy
ZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhcmVu
dEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRGcmFtZUlEKTsKIAogICAgIE9wdGlvbmFsPGJvb2w+
IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuY3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZDsKICAgICAKICAgICBPcHRpb25hbDxVUkw+IGRvY3VtZW50VVJMOwogICAgIGRlY29kZXIg
Pj4gZG9jdW1lbnRVUkw7CiAgICAgaWYgKCFkb2N1bWVudFVSTCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZG9j
dW1lbnRVUkwgPSAqZG9jdW1lbnRVUkw7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAg
ZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2Vyc01v
ZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2aWNlV29ya2Vyc01v
ZGU7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI7CiAKICAgICBPcHRpb25hbDxPcHRpb25TZXQ8SFRUUEhlYWRlcnNUb0tlZXBGcm9t
Q2xlYW5pbmc+PiBodHRwSGVhZGVyc1RvS2VlcDsKICAgICBkZWNvZGVyID4+IGh0dHBIZWFkZXJz
VG9LZWVwOwogICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lmh0dHBI
ZWFkZXJzVG9LZWVwID0gV1RGTW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1haW5Eb2N1bWVudFVSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAg
aWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBkZWNvZGVyID4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgaWYgKCFpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID0gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ+PiBwY21E
YXRhQ2FycmllZDsKICAgICBkZWNvZGVyID4+IHBjbURhdGFDYXJyaWVkOwogICAgIGlmICghcGNt
RGF0YUNhcnJpZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBjbURhdGFDYXJyaWVkID0gKnBjbURhdGFDYXJy
aWVkOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZDk5NzkxNmQ3
YmZlMTVlN2E0NjBkZjAzNDY4N2U2NDMzZTlhMmY0Mi4uY2NiZTMxYzRmMjA1MzA3YjkzNjMzOTlk
MDE5N2E3ZmUwMDMwZDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtODEyLDcgKzgxMiw3IEBAIE9wdGlv
bmFsPFNlY29uZHM+IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNoZUVudHJ5Rm9y
TWF4QWdlQ2FwVmFsaWRhdGlvCiAgICAgICAgICAgICByZXR1cm4gbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KTsKICAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCBzdGF0aWMg
dm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aQogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJkb21haW4iOiAiJXtw
dWJsaWN9cyIsKSIsIGVzY2FwZWREb21haW4udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIExPQ0FM
X0xPRyhSIiggICAgInBhdGgiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRQYXRoLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJjcmVhdGVkIjogJWYsKSIsIGNvb2tp
ZS5jcmVhdGVkKTsKLSAgICAgICAgTE9DQUxfTE9HKFIiKCAgICAiZXhwaXJlcyI6ICVmLCkiLCBj
b29raWUuZXhwaXJlcy52YWx1ZU9yKDApKTsKKyAgICAgICAgTE9DQUxfTE9HKFIiKCAgICAiZXhw
aXJlcyI6ICVmLCkiLCBjb29raWUuZXhwaXJlcy52YWx1ZV9vcigwKSk7CiAgICAgICAgIExPQ0FM
X0xPRyhSIiggICAgImh0dHBPbmx5IjogJXtwdWJsaWN9cywpIiwgY29va2llLmh0dHBPbmx5ID8g
InRydWUiIDogImZhbHNlIik7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICAgInNlY3VyZSI6ICV7
cHVibGljfXMsKSIsIGNvb2tpZS5zZWN1cmUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKICAgICAgICAg
TE9DQUxfTE9HKFIiKCAgICAic2Vzc2lvbiI6ICV7cHVibGljfXMsKSIsIGNvb2tpZS5zZXNzaW9u
ID8gInRydWUiIDogImZhbHNlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDBmZWQ2YzRhNmM4Y2M2MGI5NTFhNzE0NjI4OTcyMGIz
OTFhNDU3ZmEuLjE0Mzk2MjRiNzkyOGQyYmUyMWFlNzAzYTgwYWEzOTIwZjU5MGIyZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0y
ODMsMjIgKzI4MywyMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gTmV0
d29ya1Nlc3Npb246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oYwogewogI2lmIEhBVkUoQ0ZO
RVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKICAgICBpZiAoIWRlY2x0eXBl
KG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMpOjppc1ZhbGlkS2V5KGZpcnN0UGFydHlIb3N0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21haW5z
LmZpbmQoZmlyc3RQYXJ0eUhvc3QpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5SG9zdCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKIHZvaWQgTmV0
d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRhKCkKIHsKICAgICBtX2ZpcnN0UGFydHlI
b3N0Q05BTUVEb21haW5zLmNsZWFyKCk7Ci0gICAgbV90aGlyZFBhcnR5Q05BTUVEb21haW5Gb3JU
ZXN0aW5nID0gV1RGOjpudWxsb3B0OworICAgIG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVz
dGluZyA9IHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDJmZmY4
ZDUwNGJkMjI1MTEzMDY5Nzk0YTg2YjNmZWNkZDNkMjdhNWIuLjZmOGFjMzk2ODI4ZjE4ZmY5MDE4
MmQxYmNmZDUyMjA3YzQyYTMzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC05NCwyMDQgKzk0LDIwNCBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgIE9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CiAgICAgZGVjb2RlciA+PiBzZXNzaW9uSUQ7
CiAgICAgaWYgKCFzZXNzaW9uSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBib3Vu
ZEludGVyZmFjZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBib3VuZEludGVyZmFjZUlkZW50
aWZpZXI7CiAgICAgaWYgKCFib3VuZEludGVyZmFjZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8QWxsb3dzQ2VsbHVsYXJBY2Nlc3M+IGFsbG93c0NlbGx1bGFyQWNjZXNzOwogICAg
IGRlY29kZXIgPj4gYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7CiAgICAgaWYgKCFhbGxvd3NDZWxsdWxh
ckFjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBwcm94eUNvbmZpZ3VyYXRpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwcm94eUNvbmZpZ3VyYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gc291
cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc291cmNlQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIGlmICghc291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlQXBwbGlj
YXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyOwogICAgIGlmICghc291cmNlQXBwbGljYXRpb25TZWNvbmRh
cnlJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBhdHRyaWJ1dGVkQnVuZGxl
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyOwog
ICAgIGlmICghYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9u
YWw8Ym9vbD4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247CiAgICAgZGVjb2RlciA+PiBzaG91
bGRMb2dDb29raWVJbmZvcm1hdGlvbjsKICAgICBpZiAoIXNob3VsZExvZ0Nvb2tpZUluZm9ybWF0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VVJMPiBodHRwUHJveHk7CiAgICAgZGVjb2RlciA+PiBo
dHRwUHJveHk7CiAgICAgaWYgKCFodHRwUHJveHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVUkw+IGh0
dHBzUHJveHk7CiAgICAgZGVjb2RlciA+PiBodHRwc1Byb3h5OwogICAgIGlmICghaHR0cHNQcm94
eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKICAgICBk
ZWNvZGVyID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKICAgICBpZiAoIWFsdGVybmF0
aXZlU2VydmljZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwog
ICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGh0dHAzRW5hYmxlZDsKICAgICBkZWNvZGVyID4+IGh0
dHAzRW5hYmxlZDsKICAgICBpZiAoIWh0dHAzRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGhzdHNT
dG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNTdG9yYWdlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICNpZiBVU0UoU09VUCkKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlUGF0aDsKICAgICBpZiAoIWNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU+IGNvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlVHlwZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZTsKICAgICBpZiAoIWNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IHBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAgICAgZGVjb2Rl
ciA+PiBwZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGlmICghcGVyc2lz
dGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGln
bm9yZVRMU0Vycm9yczsKICAgICBkZWNvZGVyID4+IGlnbm9yZVRMU0Vycm9yczsKICAgICBpZiAo
IWlnbm9yZVRMU0Vycm9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNvdXBOZXR3b3Jr
UHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGlu
Z3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKICAgICBk
ZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKICAgICBpZiAoIWNvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlRmlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkN1cmxQcm94
eVNldHRpbmdzPiBwcm94eVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gcHJveHlTZXR0aW5nczsK
ICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPFN0cmlu
Zz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGly
ZWN0b3J5OwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlOwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Vu
YWJsZWQ7CiAgICAgZGVjb2RlciA+PiBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxl
ZDsKICAgICBpZiAoIWRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRm9yVGVzdGluZzsKICAgICBkZWNvZGVyID4+IGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CiAgICAgaWYgKCFhbGxMb2Fkc0Jsb2Nr
ZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBkYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGRlY29kZXIgPj4g
ZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAgICBpZiAoIWRhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gZmFzdFNlcnZlclRydXN0RXZhbHVh
dGlvbkVuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBmYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5h
YmxlZDsKICAgICBpZiAoIWZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPGJvb2w+IG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVu
YWJsZWQ7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25F
bmFibGVkOwogICAgIGlmICghbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb247CiAgICAgZGVjb2RlciA+PiBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAg
ICAgaWYgKCFzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxib29sPiBzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBzdGFs
ZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAgICAgaWYgKCFzdGFsZVdoaWxlUmV2YWxpZGF0ZUVu
YWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gdGVzdFNwZWVkTXVsdGlwbGllcjsK
ICAgICBkZWNvZGVyID4+IHRlc3RTcGVlZE11bHRpcGxpZXI7CiAgICAgaWYgKCF0ZXN0U3BlZWRN
dWx0aXBsaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBkZWNvZGVyID4+IHN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBpZiAoIXN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJv
b2w+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd3NTZXJ2ZXJQ
cmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247CiAgICAgZGVj
b2RlciA+PiByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOwogICAgIGlmICghcmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxi
b29sPiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAgIGRlY29kZXIg
Pj4gcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBpZiAoIXByZXZl
bnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8
Ym9vbD4gYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uOwogICAg
IGRlY29kZXIgPj4gYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9u
OwogICAgIGlmICghYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNlTmV0d29ya0xvYWRlcjsKICAgICBkZWNvZGVy
ID4+IHVzZU5ldHdvcmtMb2FkZXI7CiAgICAgaWYgKCF1c2VOZXR3b3JrTG9hZGVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM+IHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gcmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BhcmFtZXRlcnM7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICByZXR1cm4ge3sKICAgICAgICAgKnNlc3Npb25JRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDg3MTFmZjg3YzY2N2RkOTkzZTdmZTNhN2VkYThiNDI4
MTU0ZmJmOWEuLjg3ZjEzNzRjYWE2ZjU0ODBiMGYxZWNhOTllZDIyODc1ODAxNzc2NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5n
KFVSTCYmIHRlc3RVUgogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldEF0
dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBVUkwmJiBkZXN0
aW5hdGlvblVSTCkKIHsKICAgICBpZiAoc291cmNlVVJMLmlzRW1wdHkoKSB8fCBkZXN0aW5hdGlv
blVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG1fYXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX2F0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyA9IHN0
ZDo6bnVsbG9wdDsKICAgICBlbHNlCiAgICAgICAgIG1fYXR0cmlidXRpb25SZXBvcnRUZXN0Q29u
ZmlnID0gQXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnIHsgV1RGTW92ZShzb3VyY2VVUkwpLCBX
VEZNb3ZlKGRlc3RpbmF0aW9uVVJMKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCBiMjQzZDE0Y2IyM2M2M2NhNzVhMjQzZTUzZjg1MDUyNzUwM2MyMjM4
Li5mM2NjNjcwMzIyYzBlZWRkMDdlM2U4NzFjZmJiMWJmN2JjZmM5YWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRp
b25NYXRjaFJlcXVlc3RJCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVu
dGlmaWVyLCByZWdpc3RyYXRpb24tPmRhdGEoKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0
cmF0aW9uIHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxsb3B0
IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hS
ZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om51
bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25S
ZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggMzFkYjRhMDliZmU2MzFlMmM5YjRhYzYw
ODczOTcyYWUwYjUzMDU2YS4uM2I2YjQxZDE2NTI3NDQxY2Q4MzRlYTM1ZGExODRjMjhlYmEzNDg2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApAQCAtOTMsMTMg
KzkzLDEzIEBAIE9wdGlvbmFsPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0
YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyCiB7CiAgICAgTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5jcmVhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCAzZjNlZDQ0OTMwNDJiMTlhNDAzMWFlNDNkNjkwMDIw
ZjJmNGEwODYwLi42MTMzNWE3OTNlMzU2OGEzYjVkZmU4Y2I1OTAyZDY4MTEwMDk0N2FjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhOjpkaXNwYXRj
aEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rpb24sIFN0bwog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChzdG9yYWdlQXJlYUlt
cGxJRCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdpbigpLCBlbmQg
PSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgT3B0
aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJ
RCA9ICppdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gbWFrZU9wdGlvbmFsKHN0b3JhZ2VBcmVhSW1w
bElEKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRl
bnRpZmllcj4gb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9ICppdCA9PSBzb3VyY2VDb25uZWN0
aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1wbElEKSA6IHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9ICpp
dCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyLCBrZXkgPSBrZXkuaXNv
bGF0ZWRDb3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRDb3B5KCksIG5ld1ZhbHVl
ID0gbmV3VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmluZy5pc29sYXRl
ZENvcHkoKSwgb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9IFdURk1vdmUob3B0aW9uYWxTdG9y
YWdlQXJlYUltcGxJRCldIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gSVBD
OjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
U2V0LmNwcAppbmRleCBmOWU4NDNkZTM3MzE5ZGQ2YzVjMTA2M2EzY2RjZjVjMWQ0YmJhMTk1Li40
NjU1NDg3YTZlY2QzMDBjNDEzYzFhYTU2MTNiZGZmYjQ4Y2U4ZGE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlclNldC5jcHAKQEAgLTMxMiwxMyArMzEyLDEzIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQ
CiAKICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNz
aW9uSUQpOwogICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0g
c3RvcmFnZU1hbmFnZXItPmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlE
LCBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFzdG9y
YWdlQXJlYSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zMzcsMTMgKzMzNywxMyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25u
ZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubgogCiAg
ICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklE
KTsKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0b3Jh
Z2VNYW5hZ2VyLT5jcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBt
X3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjIsMTMgKzM2Miwx
MyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNzaW9uU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogCiAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIg
PSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXN0b3JhZ2VNYW5h
Z2VyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVhdGVTZXNzaW9u
U3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBtX3F1
ZXVlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5k
ZXggMmFjZTUxYzYxMDhlMjM1ZjgwNjFkYzJlODg5OWJkNTZiZDc4MjM4Mi4uY2Q2ODBmMDNkZjI2
MTZlZTljYWEzZmVjYTVjZGE3OTQ0ODk5ZjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtMjE3
LDcgKzIxNyw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZXREaXJlY3RvcnlTaXplKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5UGF0aCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9Ci0gICAgICAgIGRpcmVjdG9yeVNpemUgKz0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
cGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgZGlyZWN0b3J5U2l6ZSArPSBGaWxlU3lzdGVtOjpm
aWxlU2l6ZShwYXRoKS52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgcmV0dXJuIGRpcmVjdG9yeVNp
emU7CiB9CkBAIC0zNTIsMTMgKzM1MiwxMyBAQCB2b2lkIEVuZ2luZTo6aW5pdGlhbGl6ZShDb21w
bGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9CiAKICAgICBpZiAobV9zYWx0KSB7Ci0g
ICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXNob3VsZFBlcnNpc3Qo
KSkgewogICAgICAgICBtX3NhbHQgPSBOZXR3b3JrQ2FjaGU6OlNhbHQgeyB9OwotICAgICAgICBj
YWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBFbmdpbmU6
OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAKICAgICAgICAgICAg
IGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKICAg
ICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAgICAgICAgICAg
ICAgY2FsbGJhY2sobV9zYWx0ID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKEVycm9yOjpX
cml0ZURpc2spKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX3NhbHQgPyBzdGQ6Om51bGxv
cHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoRXJyb3I6OldyaXRlRGlzaykpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCBDYWNoZSogRW5naW5lOjpjYWNoZSh1aW50
NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6OkRPTUNhY2hl
RW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIXNob3Vs
ZFBlcnNpc3QoKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAgICAgICAgICAgICAgICBjYWxs
YmFjayhFcnJvcjo6V3JpdGVEaXNrKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC01NjEs
MjEgKzU2MSwyMSBAQCBPcHRpb25hbDx1aW50NjRfdD4gRW5naW5lOjpyZWFkU2l6ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIH0pOwogCiAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGVIYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06
OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0
ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogICAgIGlmICghZmlsZVNpemUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICB1bnNpZ25lZCBieXRlc1RvUmVhZDsKICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShm
aWxlU2l6ZSwgYnl0ZXNUb1JlYWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IE5vIHJlYXNvbiB3ZSBu
ZWVkIGEgaGVhcCBidWZmZXIgdG8gcmVhZCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGJ5dGVzIHdo
ZW4gd2Ugb25seSBzdXBwb3J0IHNtYWxsIGZpbGVzIHRoYXQgY29udGFpbiBudW1lcmFscy4KICAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICB1bnNpZ25lZCB0b3RhbEJ5
dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlSGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1Jl
YWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih7IGJ1ZmZlci5kYXRh
KCksIHRvdGFsQnl0ZXNSZWFkIH0pOwogfQpAQCAtNzc0LDcgKzc3NCw3IEBAIHZvaWQgRW5naW5l
OjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYg
b3JpZ2luLCBXZWJDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgcmVz
dWx0LnZhbHVlKCkuZ2V0KCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwotICAgICAgICBj
YWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDk0MDlkOGYyNGMz
MThjZGFiNGZjMmJiYzU4MWQ5ZDU3YzYyYTRmZDUuLjFmZWY1ZTYxNmQ3NWM3MDQ3NWNkM2Q3M2Mz
OTNlY2E5NzczMDhlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgc3RhdGljIFRyYXZlcnNhbFJlc3VsdCBpc29sYXRlZENvcHkoVHJhdmVyc2FsUmVz
dWx0JiYgcmVzdWx0KQogdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6T3BlbikgewotICAgICAgICBjYWxs
YmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpPcGVuaW5nKSB7
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBjYWNoZS0+bV9yZWNvcmRzID0gV1RGTW92ZSh0cmF2ZXJzYWxS
ZXN1bHQucmVjb3Jkcyk7Ci0gICAgICAgICAgICAgICAgY2FjaGUtPmZpbmlzaE9wZW5pbmcoV1RG
TW92ZShjYWxsYmFjayksIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY2FjaGUtPmZp
bmlzaE9wZW5pbmcoV1RGTW92ZShjYWxsYmFjayksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjI3LDEwICsyMjcsMTAg
QEAgdm9pZCBDYWNoZTo6ZmluaXNoT3BlbmluZyhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFj
aywgT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IKICAgICB9CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpP
cGVuOwogCi0gICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwogICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdPcGVuaW5nQ2Fs
bGJhY2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQotICAgICAgICBj
YWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
fQogCiBjbGFzcyBSZWFkUmVjb3JkVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWFk
UmVjb3JkVGFza0NvdW50ZXI+IHsKQEAgLTU4MiwzNyArNTgyLDM3IEBAIHN0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBkZWNvZGVET01DYWNoZVJlY29yZChX
VEY6OlBlcnNpCiAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVxdWVzdEhlYWRl
cnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAgICAgaWYgKCFy
ZXF1ZXN0SGVhZGVyc0d1YXJkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
OwogICAgIGlmICghcmVxdWVzdC5kZWNvZGVXaXRob3V0UGxhdGZvcm1EYXRhKGRlY29kZXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIEZldGNoT3B0aW9ucyBvcHRpb25zOwogICAgIGlmICghRmV0Y2hPcHRpb25z
OjpkZWNvZGVQZXJzaXN0ZW50KGRlY29kZXIsIG9wdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlv
bmFsPFN0cmluZz4gcmVmZXJyZXI7CiAgICAgZGVjb2RlciA+PiByZWZlcnJlcjsKICAgICBpZiAo
IXJlZmVycmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPEZldGNoSGVhZGVyczo6R3VhcmQ+IHJl
c3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGRlY29kZXIgPj4gcmVzcG9uc2VIZWFkZXJzR3VhcmQ7
CiAgICAgaWYgKCFyZXNwb25zZUhlYWRlcnNHdWFyZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CiAgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNlOjpkZWNvZGUoZGVjb2Rlciwg
cmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXNwb25zZUJvZHlT
aXplOwogICAgIGRlY29kZXIgPj4gcmVzcG9uc2VCb2R5U2l6ZTsKICAgICBpZiAoIXJlc3BvbnNl
Qm9keVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0oKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7ewogICAgICAgICAwLApAQCAtNjM1LDE2ICs2MzUsMTYgQEAgT3B0aW9uYWw8
Q2FjaGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJgogICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGltZTsKICAgICBk
ZWNvZGVyID4+IGluc2VydGlvblRpbWU7CiAgICAgaWYgKCFpbnNlcnRpb25UaW1lKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlm
ICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpSZWNv
cmQ+IHJlY29yZCA9IGRlY29kZURPTUNhY2hlUmVjb3JkKGRlY29kZXIpOwogICAgIGlmICghcmVj
b3JkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmluc2VydGlvblRpbWUp
LApAQCAtNjU4LDcgKzY1OCw3IEBAIE9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRlY29kZShjb25z
dCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgYXV0byByZXN1bHQgPSBkZWNvZGVSZWNv
cmRIZWFkZXIoc3RvcmFnZSk7CiAKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVj
b3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7CiAgICAgcmVjb3JkLnJlc3BvbnNlQm9keSA9
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRhKCksIHN0b3Jh
Z2UuYm9keS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGZjZWZi
ZjcxMjAzNGY3M2Q3NTRiODliMTlhMjQ3NzE1MWYyNzdjYmYuLjg3NTUxNTNhYzgzYTk0Yjk1MjJj
YjNkZGU4NjI2MzRjMzdkYWY3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICBxdWV1ZS5kaXNwYXRj
aChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZmlsZW5h
bWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21E
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1CiAgICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdlLCAiQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkgZmFpbGVkIHJlYWRpbmcgY2hhbm5lbCB3aXRo
IGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihyZWFkT3JpZ2luKGRhdGEpKTsKQEAgLTExNywxMiArMTE3LDEy
IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNv
bnN0IERhdGEmIGRhdGEpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmln
aW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGNsaWVu
dE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9y
aWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCp0b3BPcmlnaW4pLApA
QCAtMTMzLDE0ICsxMzMsMTQgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBDYWNo
ZXM6OnJlYWRPcmlnaW4oY29uc3QgRGF0YSYgZGF0YSkKIHZvaWQgQ2FjaGVzOjppbml0aWFsaXpl
KFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAobV9pc0luaXRpYWxpemVkKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobV9yb290UGF0aC5pc051bGwoKSkgewogICAgICAgICBtYWtlRGly
dHkoKTsKICAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQ2FjaGVzOjppbml0aWFs
aXplU2l6ZSgpCiAgICAgICAgICAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVuZGluZ0luaXRp
YWxpemF0aW9uQ2FsbGJhY2tzKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNr
IDogcGVuZGluZ0NhbGxiYWNrcykKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00ODAsNyAr
NDgwLDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKQogICAgIEFTU0VSVCghbV9pc1dyaXRpbmdDYWNoZXNUb0Rpc2spOwogICAg
IEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogICAgIGlmICghc2hvdWxkUGVyc2lzdCgpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IENhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CiAKICAgICBpZiAobV9jYWNoZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fZW5naW5lLT5yZW1v
dmVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSk7Ci0gICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIENhY2hlczo6d3JpdGVD
YWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAKICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1dyaXRpbmdD
YWNoZXNUb0Rpc2tDYWxsYmFja3MuaXNFbXB0eSgpICYmICFtX2lzV3JpdGluZ0NhY2hlc1RvRGlz
aykKLSAgICAgICAgICAgIG1fcGVuZGluZ1dyaXRpbmdDYWNoZXNUb0Rpc2tDYWxsYmFja3MudGFr
ZUZpcnN0KCkoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1dyaXRpbmdDYWNo
ZXNUb0Rpc2tDYWxsYmFja3MudGFrZUZpcnN0KCkoc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0K
IApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgQ2FjaGVzOjp3cml0ZVJlY29yZChjb25zdCBDYWNo
ZSYgY2FjaGUsIGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvCiAKICAgICBpZiAo
IXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBtX3ZvbGF0aWxlU3RvcmFnZS5zZXQocmVjb3Jk
SW5mb3JtYXRpb24ua2V5LCBtYWtlVW5pcXVlPFJlY29yZD4oV1RGTW92ZShyZWNvcmQpKSk7Ci0g
ICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Niw3ICs1NTYsNyBAQCB2b2lk
IENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBSZWNvcmRJbmZv
cm1hdGlvbiYgcmVjb3JkSW5mbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIHVwZGF0ZVNpemVGaWxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUJsb2JTdG9yYWdlLmNwcAppbmRleCAyYWFiN2IwNjJjZGM4NGQxMDY5NzM0OWQ4OTJiYWNhOTgw
NGY3MDg2Li43MGY4MzU4NDczZTljMTZlZWI3OWFmMzdkZjYwMTQ4ZDQ1MjY1ZDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEJsb2JTdG9yYWdl
OjpzeW5jaHJvbml6ZSgpCiAgICAgICAgIGlmIChsaW5rQ291bnQgJiYgKmxpbmtDb3VudCA9PSAx
KQogICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9hcHByb3hpbWF0ZVNpemUgKz0gRmlsZVN5c3RlbTo6ZmlsZVNpemUo
cGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIG1fYXBwcm94aW1hdGVTaXplICs9IEZpbGVT
eXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogICAgIH0pOwogCiAgICAgTE9HKE5l
dHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGJsb2Igc3luY2hyb25pemF0aW9u
IGNvbXBsZXRlZCBhcHByb3hpbWF0ZVNpemU9JXp1IiwgYXBwcm94aW1hdGVTaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVDb2RlcnMuY3BwCmluZGV4IGFhYmI1YmVhODkxMzhmNDFlZGEzODQzYTJmN2Y1YWEwOTc1NjQx
MGEuLjJjZGM0MjJmMzA4ZmEwMGU2NjY2ZWE4NzVlZGVmNmZhNWIwMzZmY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNv
ZGVycy5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBPcHRpb25hbDxXZWJDb3JlOjpIVFRQSGVhZGVy
TWFwPiBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPjo6ZGVjb2RlKERlY29kZXImCiAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4gaGVhZGVyc1Np
emU7CiAgICAgaWYgKCFoZWFkZXJzU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAgaGVhZGVyczsKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgKmhlYWRlcnNTaXplOyAr
K2kpIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgICAgICBkZWNvZGVyID4+
IG5hbWU7CiAgICAgICAgIGlmICghbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZh
bHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGhlYWRlcnMuYXBwZW5kKFdURk1vdmUoKm5hbWUpLCBX
VEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KICAgICByZXR1cm4gaGVhZGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDNiZDBjNzQ4N2I2MDAzNGUyZjQyYmMwMDI5N2ZiODI0YjAzNmU1
MmUuLmM4NzVjOTM2NGVlMDUzNTI2ZDNmOWU3YzM2Mjc1ZDkzMTljNWMxMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCBGaWxlVGltZXMgZmlsZVRpbWVzKGNv
bnN0IFN0cmluZyYgcGF0aCkKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgYXV0byBjcmVhdGVUaW1l
ID0gRmlsZVN5c3RlbTo6ZmlsZUNyZWF0aW9uVGltZShwYXRoKTsKICAgICBhdXRvIG1vZGlmeVRp
bWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKLSAgICByZXR1cm4g
eyBjcmVhdGVUaW1lLnZhbHVlT3IoV2FsbFRpbWUoKSksIG1vZGlmeVRpbWUudmFsdWVPcihXYWxs
VGltZSgpKSB9OworICAgIHJldHVybiB7IGNyZWF0ZVRpbWUudmFsdWVfb3IoV2FsbFRpbWUoKSks
IG1vZGlmeVRpbWUudmFsdWVfb3IoV2FsbFRpbWUoKSkgfTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCA1YTNkOTI5NGIxNGQ5ZGYxZmE2OTU3MmRhZjNi
MmY0YzZjNjU4OTFkLi44OTc5YjE0MzQ0NGFkYzFiNTBmY2I4ZTZlOTE2OGY4NzQyZGZkOTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTY2LDE3ICs2NiwxNyBAQCBJT0No
YW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUsIE9wdGlv
bmFsPFdvcmtRdWV1ZTo6UU9TPgogICAgICAgICB1bmxpbmsocGF0aC5kYXRhKCkpOwogICAgICAg
ICBvZmxhZyA9IE9fUkRXUiB8IE9fQ1JFQVQgfCBPX05PTkJMT0NLOwogICAgICAgICBtb2RlID0g
U19JUlVTUiB8IFNfSVdVU1I7Ci0gICAgICAgIGRpc3BhdGNoUU9TID0gcW9zLnZhbHVlT3IoV29y
a1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpOworICAgICAgICBkaXNwYXRjaFFPUyA9IHFvcy52YWx1
ZV9vcihXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgVHlwZTo6V3JpdGU6CiAgICAgICAgIG9mbGFnID0gT19XUk9OTFkgfCBPX05PTkJMT0NLOwog
ICAgICAgICBtb2RlID0gU19JUlVTUiB8IFNfSVdVU1I7Ci0gICAgICAgIGRpc3BhdGNoUU9TID0g
cW9zLnZhbHVlT3IoV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpOworICAgICAgICBkaXNwYXRj
aFFPUyA9IHFvcy52YWx1ZV9vcihXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVHlwZTo6UmVhZDoKICAgICAgICAgb2ZsYWcgPSBPX1JET05MWSB8
IE9fTk9OQkxPQ0s7CiAgICAgICAgIG1vZGUgPSAwOwotICAgICAgICBkaXNwYXRjaFFPUyA9IHFv
cy52YWx1ZU9yKFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0KTsKKyAgICAgICAgZGlzcGF0Y2hRT1Mg
PSBxb3MudmFsdWVfb3IoV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpOwogICAgIH0KIAogICAgIGlu
dCBmZCA9IDo6b3BlbihwYXRoLmRhdGEoKSwgb2ZsYWcsIG1vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCmluZGV4
IDIyNjVhZTFkMTgxNWVkOWRlNjNkZTUxYTJlNWQ3M2I5M2E5OWQxMDQuLjU4ZGQzZTczMzJjYjA5
NzhhZDk2Y2I2ZGNiOWFjMGIwNjk1ZTg5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTE4MCwzNyArMTgw
LDM3IEBAIE9wdGlvbmFsPEtleT4gS2V5OjpkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2Rl
ciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IHBhcnRpdGlvbjsKICAgICBkZWNvZGVy
ID4+IHBhcnRpdGlvbjsKICAgICBpZiAoIXBhcnRpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV9wYXJ0aXRp
b24gPSBXVEZNb3ZlKCpwYXJ0aXRpb24pOwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOwog
ICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fdHlwZSA9
IFdURk1vdmUoKnR5cGUpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5
Lm1faWRlbnRpZmllciA9IFdURk1vdmUoKmlkZW50aWZpZXIpOwogCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAga2V5Lm1fcmFuZ2UgPSBXVEZNb3ZlKCpyYW5nZSk7CiAKICAgICBPcHRpb25hbDxIYXNoVHlw
ZT4gaGFzaDsKICAgICBkZWNvZGVyID4+IGhhc2g7CiAgICAgaWYgKCFoYXNoKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtl
eS5tX2hhc2ggPSBXVEZNb3ZlKCpoYXNoKTsKIAogICAgIE9wdGlvbmFsPEhhc2hUeXBlPiBwYXJ0
aXRpb25IYXNoOwogICAgIGRlY29kZXIgPj4gcGFydGl0aW9uSGFzaDsKICAgICBpZiAoIXBhcnRp
dGlvbkhhc2gpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fcGFydGl0aW9uSGFzaCA9IFdURk1vdmUoKnBhcnRpdGlv
bkhhc2gpOwogCiAgICAgcmV0dXJuIHsgV1RGTW92ZShrZXkpIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IDg1NmNkNWQ0NTA5MzY2ZTU4YmZkNjVh
YWZiNzUzOWZjOTBkY2Q2ZjEuLmVmNzZhOWFiYmU2ZGM5ODVjN2M2MDZmZGVlNzU0NmU1ZDdlNjU3
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCkBAIC02
Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7CiAKICAgICBz
dGF0aWMgYm9vbCBzaG91bGRSZWdpc3RlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgdm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiYmIHJldmFsaWRhdGlvblJlcXVlc3QgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgYWRkUHJl
bG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYs
IE9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25SZXF1ZXN0
ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHByZWxvYWRFbnRyeShjb25zdCBLZXkmLCBjb25z
dCBTdWJyZXNvdXJjZUluZm8mLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICB2b2lkIHJldHJpZXZlRW50cnlGcm9tU3RvcmFn
ZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYpOwog
ICAgIHZvaWQgcmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggZDA1YWU5
YmQyZGI3OWIzMTM0ODZiMDYyYTI1ODhlOTJiOGE4ODg0OS4uNzRjZGI3ZDEyNTQ3Nzg3ZDA0MWVh
ZGZjODg0YWE1ODgwNDY4MmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC04NzIsNyArODcy
LDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0
cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5h
Y3RpdmVDb3VudDsKIAogICAgICAgICBib29sIHNob3VsZFN0b3JlQXNCbG9iID0gc2hvdWxkU3Rv
cmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uLnJlY29yZC5ib2R5KTsKLSAgICAgICAgYXV0byBi
bG9iID0gc2hvdWxkU3RvcmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3JpdGVPcGVyYXRpb24p
IDogV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIGJsb2IgPSBzaG91bGRTdG9yZUFzQmxvYiA/
IHN0b3JlQm9keUFzQmxvYih3cml0ZU9wZXJhdGlvbikgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgYXV0byByZWNvcmREYXRhID0gZW5jb2RlUmVjb3JkKHdyaXRlT3BlcmF0aW9uLnJlY29yZCwg
YmxvYik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKaW5kZXggZmJj
NWQwMmMyYTg1OTIyZDVmYzI2M2RkYzU4Mjk5MmFkMGUzOTVmZS4uZGY0ZjE2ODEwZjkzMTRhOGFk
YTMwMGQ0MDgxN2RjNzVhMmI2ZmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNF
bnRyeS5jcHAKQEAgLTU5LDI1ICs1OSwyNSBAQCBPcHRpb25hbDxTdWJyZXNvdXJjZUluZm8+IFN1
YnJlc291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlYwogICAg
IE9wdGlvbmFsPEtleT4ga2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGluZm8ubV9rZXkgPSBXVEZNb3ZlKCprZXkpOwogCiAgICAgT3B0aW9uYWw8V2FsbFRp
bWU+IGxhc3RTZWVuOwogICAgIGRlY29kZXIgPj4gbGFzdFNlZW47CiAgICAgaWYgKCFsYXN0U2Vl
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpbmZvLm1fbGFzdFNlZW4gPSBXVEZNb3ZlKCpsYXN0U2Vlbik7CiAKICAgICBP
cHRpb25hbDxXYWxsVGltZT4gZmlyc3RTZWVuOwogICAgIGRlY29kZXIgPj4gZmlyc3RTZWVuOwog
ICAgIGlmICghZmlyc3RTZWVuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9maXJzdFNlZW4gPSBXVEZNb3ZlKCpm
aXJzdFNlZW4pOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAgICAgZGVjb2Rl
ciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9p
c1RyYW5zaWVudCA9IFdURk1vdmUoKmlzVHJhbnNpZW50KTsKIAogICAgIGlmIChpbmZvLm1faXNU
cmFuc2llbnQpCkBAIC04NiwyNSArODYsMjUgQEAgT3B0aW9uYWw8U3VicmVzb3VyY2VJbmZvPiBT
dWJyZXNvdXJjZUluZm86OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWMKICAg
ICBPcHRpb25hbDxib29sPiBpc1NhbWVTaXRlOwogICAgIGRlY29kZXIgPj4gaXNTYW1lU2l0ZTsK
ICAgICBpZiAoIWlzU2FtZVNpdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2lzU2FtZVNpdGUgPSBXVEZNb3Zl
KCppc1NhbWVTaXRlKTsKIAogICAgIE9wdGlvbmFsPFVSTD4gZmlyc3RQYXJ0eUZvckNvb2tpZXM7
CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBpZiAoIWZpcnN0UGFy
dHlGb3JDb29raWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IFdURk1v
dmUoKmZpcnN0UGFydHlGb3JDb29raWVzKTsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXA+IHJlcXVlc3RIZWFkZXJzOwogICAgIGRlY29kZXIgPj4gcmVxdWVzdEhlYWRlcnM7
CiAgICAgaWYgKCFyZXF1ZXN0SGVhZGVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fcmVxdWVzdEhlYWRlcnMg
PSBXVEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyk7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAg
ICBpZiAoIXByaW9yaXR5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9wcmlvcml0eSA9IFdURk1vdmUoKnByaW9y
aXR5KTsKICAgICAKICAgICByZXR1cm4geyBXVEZNb3ZlKGluZm8pIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKaW5kZXggZTlmZGYzNTdkNjRmODkxNmIzNWU1ZTAwNDY5Yjk5NzU4MGRiM2FiZC4uMmM5MzFl
YTFkMzNmOGYzNDE3YTJhNWVmYmY0M2U3N2YyNjdkODRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVzdGFydFdpdGhD
cmVkZW50aWFsKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiB2b2lkIE5ldHdvcmtE
YXRhVGFza0N1cmw6OmFwcGVuZENvb2tpZUhlYWRlcihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB7CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHJlcXVlc3QudXJs
KCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNs
dWRlU2VjdXJlQ29va2llczo6Tm87Ci0gICAgYXV0byBjb29raWVIZWFkZXJGaWVsZCA9IG1fc2Vz
c2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
OjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFdlYkNvcmU6OlNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CisgICAgYXV0byBj
b29raWVIZWFkZXJGaWVsZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCks
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQOjpZZXMsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
OjpObykuZmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb29raWUsIGNv
b2tpZUhlYWRlckZpZWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2ds
aWIvRE5TQ2FjaGUuY3BwCmluZGV4IDI0ZGEzODg3OWNiMDQyNmUxOWY0ZmJjNzFkYTkyZTgzMTRm
ZmNiNjQuLmE4YmUyZjNkMzVlMGRkNzJiMjQxYzdlM2Q5NTY0MTczOWNiZTBjZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcApAQCAtNjgsMTIg
KzY4LDEyIEBAIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+PiBETlNDYWNo
ZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5CiAgICAgYXV0byYgbWFwID0gbWFwRm9y
VHlwZSh0eXBlKTsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaG9zdCk7CiAgICAgaWYgKGl0ID09
IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHJlc3BvbnNlID0gaXQtPnZhbHVlOwogICAgIGlm
IChyZXNwb25zZS5leHBpcmF0aW9uVGltZSA8PSBNb25vdG9uaWNUaW1lOjpub3coKSkgewogICAg
ICAgICBtYXAucmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzcG9uc2UuYWRk
cmVzc0xpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggMjI4MmNiNTU4ZTI0MTliOGMxZTNhN2M0
ZTMwNThiNjNmNWZhYzU5Mi4uNWY5NjY5OWM1NzgzY2YxZDJjYmMyOGEzZDRmOWU1NGJmZDgxMmE0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtE
YXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6Y2xlYXJSZXF1ZXN0KCkKIAogICAgIHN0b3BUaW1lb3V0KCk7CiAgICAgbV9w
ZW5kaW5nUmVzdWx0ID0gbnVsbHB0cjsKLSAgICBtX3BlbmRpbmdEYXRhVVJMUmVzdWx0ID0gV1RG
OjpudWxsb3B0OworICAgIG1fcGVuZGluZ0RhdGFVUkxSZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9maWxlID0gbnVsbHB0cjsKICAgICBtX2lucHV0U3RyZWFtID0gbnVsbHB0cjsKICAgICBt
X211bHRpcGFydElucHV0U3RyZWFtID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCA1ZWZkMzI2ZWJmZmExM2IyMzA1NmJjYTQxNWM3Y2E2
NmIwMTVkNjkyLi5kMjhhMDMxYTg1M2U0NzkwMDc5OGQxOTc5MDQ4YTRmZDNhY2VjNzg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC01Nyw3ICs1Nyw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0IEFyZ3VtZW50
Q29kZXIgewogICAgICAgICAgICAgVCB0OwogICAgICAgICAgICAgaWYgKFQ6OmRlY29kZShkZWNv
ZGVyLCB0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSh0KTsKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgfQogCkBAIC04OCw3ICs4OCw3IEBAIHN0cnVjdCBBcmd1bWVudENvZGVy
PFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGljX3Y8VD4+PiB7
CiAgICAgICAgIFQgcmVzdWx0OwogICAgICAgICBpZiAoZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnJlc3VsdCksIHNpemVvZihUKSwgYWxp
Z25vZihUKSkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKQEAg
LTEwNyw3ICsxMDcsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4gewogICAgICAgICBkZWNvZGVyID4+IHZhbHVl
OwogICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxUPigqdmFsdWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KCp2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGI2
MjkzOWU2YmFjYzJmZWI0YTM1MTNkYWQyOTdlOTlhZmMxYzMzMWYuLjZhODU2YWVmZjQzNGY0MDM2
ODZiODFiN2Q0YTQ5YzM0ZjJjOGZhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJO
IE9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBPcHRpb25hbDxkb3VibGU+IHRpbWU7CiAgICAgZGVjb2RlciA+PiB0aW1lOwog
ICAgIGlmICghdGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCp0
aW1lKTsKIH0KIApAQCAtMTM5LDEyICsxMzksMTIgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxT
dHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMyX3QgbGVuZ3QK
IHsKICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0
aGUgZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpj
cmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxl
bmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSwgYWxpZ25vZihDaGFyYWN0ZXJUeXBlKSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBXQVJOX1VO
VVNFRF9SRVRVUk4gT3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmluZz46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZAogewogICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKGxlbmd0aCA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbnVs
bCBzdHJpbmcuCkBAIC0xNjIsNyArMTYyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFs
PFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAg
ICAKICAgICBib29sIGlzOEJpdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzOEJpdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgaWYgKGlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8
TENoYXI+KGRlY29kZXIsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAzN2VmNGRhNzM4M2EzY2ZiNWE0ZWI4YTBjN2EyZjY5YzNiNGQy
MDY1Li5hNmZlNTkwMGRkODg2NjY3NDAwZGVjODI5ODE5NjJhYjY2MDBkODlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTY5LDcgKzY5LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW4KICAgICAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5j
ZVR5cGUoKTsKICAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsKICAgICAg
ICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBBcnJheVJlZmVyZW5jZVR5
cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7CiAgICAgfQogfTsK
QEAgLTg4LDE3ICs4OCwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaQogICAgIHsKICAgICAg
ICAgdWludDY0X3Qgc2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZl
cmVuY2VUeXBlKCk7CiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IENoZWNrZWRTaXplIHsgc2l6
ZSB9ICogc2l6ZW9mKFQpOwogICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZs
b3dlZCgpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLnVuc2FmZUdldCgpLCBhbGln
bm9mKFQpKTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBB
cnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIHN0YXRp
Y19jYXN0PHNpemVfdD4oc2l6ZSkpOwogICAgIH0KIH07CkBAIC0xMjYsMTAgKzEyNiwxMCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25TZXQ8VD4+IHsK
ICAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgT3B0aW9uU2V0PFQ+OjpTdG9yYWdlVHlwZT4gdmFs
dWU7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYXV0byBvcHRpb25TZXQgPSBPcHRpb25TZXQ8VD46OmZyb21SYXcoKnZh
bHVlKTsKICAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRPcHRpb25TZXQob3B0aW9uU2V0KSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm4gb3B0aW9uU2V0OwogICAgIH0KIH07CkBAIC0xNTQsNyAr
MTU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8T3B0aW9u
YWw8VD4+IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoIWlzRW5n
YWdlZCkgewotICAgICAgICAgICAgb3B0aW9uYWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKQEAgLTE3MSwxNSArMTcxLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlz
RW5nYWdlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc0VuZ2FnZWQ7CiAgICAgICAgIGlmICghaXNF
bmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7CiAgICAgICAgICAg
ICBPcHRpb25hbDxUPiB2YWx1ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVy
biBPcHRpb25hbDxPcHRpb25hbDxUPj4oV1RGTW92ZSgqdmFsdWUpKTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+KE9wdGlvbmFsPFQ+KFdURjo6bnVsbG9w
dCkpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+KE9wdGlvbmFsPFQ+KHN0
ZDo6bnVsbG9wdCkpOwogICAgIH0KIH07CiAKQEAgLTIxOSwxMiArMjE5LDEyIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEJveDxUPj4gewogICAgICAgICBPcHRp
b25hbDxib29sPiBpc0VuZ2FnZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNFbmdhZ2VkOwogICAg
ICAgICBpZiAoIWlzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoKmlzRW5nYWdlZCkg
ewogICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8VD46OmNyZWF0ZShXVEZNb3ZlKCp2
YWx1ZSkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8
VD4obnVsbHB0cikpOwpAQCAtMjU3LDEyICsyNTcsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWlyPFQsIFU+PiB7CiAgICAg
ICAgIE9wdGlvbmFsPFQ+IGZpcnN0OwogICAgICAgICBkZWNvZGVyID4+IGZpcnN0OwogICAgICAg
ICBpZiAoIWZpcnN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxVPiBz
ZWNvbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29uZCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmZpcnN0KSwg
V1RGTW92ZSgqc2Vjb25kKSB9fTsKICAgICB9CkBAIC0zMDUsMTEgKzMwNSwxMSBAQCBzdHJ1Y3Qg
VHVwbGVEZWNvZGVySW1wbCB7CiAgICAgICAgIE9wdGlvbmFsPFR5cGU+IG9wdGlvbmFsOwogICAg
ICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFsKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlcy4uLj4+IHN1YlR1cGxlID0g
VHVwbGVEZWNvZGVySW1wbDxUeXBlcy4uLj46OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYg
KCFzdWJUdXBsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB0dXBsZUZyb21UdXBsZUFu
ZE9iamVjdChXVEZNb3ZlKCpvcHRpb25hbCksIFdURk1vdmUoKnN1YlR1cGxlKSk7CiAgICAgfQpA
QCAtMzIyLDcgKzMyMiw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+IHsKICAgICAg
ICAgT3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7
CiAgICAgICAgIGlmICghb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV90dXBsZShXVEZNb3ZlKCpvcHRpb25hbCkpOwogICAgIH0KIH07CkBAIC00MDMsMTQgKzQw
MywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVu
YW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHsKICAgICAgICAgdWludDY0X3Qg
c2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBh
Y2l0eT4gdmVjdG9yOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkg
ewogICAgICAgICAgICAgT3B0aW9uYWw8VD4gZWxlbWVudDsKICAgICAgICAgICAgIGRlY29kZXIg
Pj4gZWxlbWVudDsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUoKmVsZW1lbnQpKTsKICAgICAgICAg
fQogICAgICAgICB2ZWN0b3Iuc2hyaW5rVG9GaXQoKTsKQEAgLTQ1NywxMCArNDU3LDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgewogICAgICAgICB1aW50NjRfdCBkZWNvZGVkU2l6
ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVkU2l6ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90PihkZWNvZGVkU2l6ZSkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBhdXRvIHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGRlY29kZWRTaXpl
KTsKIApAQCAtNDY4LDEzICs0NjgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW4KICAgICAg
ICAgLy8gb25lIGZlbGwgc3dvb3AuIEJlZm9yZSBhbGxvY2F0aW5nIHdlIG11c3QgaG93ZXZlciBt
YWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIKICAgICAgICAgLy8gaXMgYmlnIGVub3Vn
aC4KICAgICAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48VD4o
c2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdmVjdG9yOwogICAgICAgICB2ZWN0
b3IuZ3JvdyhzaXplKTsKIAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRhKCkpLCBzaXplICogc2l6
ZW9mKFQpLCBhbGlnbm9mKFQpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB2ZWN0b3I7
CiAgICAgfQpAQCAtNDk2LDI2ICs0OTYsMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0
eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKICAg
ICB7CiAgICAgICAgIHVpbnQzMl90IGhhc2hNYXBTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc2hNYXBTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEhhc2hNYXBUeXBlIGhh
c2hNYXA7CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBoYXNoTWFwU2l6ZTsgKytp
KSB7CiAgICAgICAgICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRlY29k
ZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFrZXkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8TWFwcGVkQXJnPiB2YWx1ZTsKICAgICAgICAg
ICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaE1hcFR5
cGU6OmlzVmFsaWRLZXkoKmtleSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
aWYgKFVOTElLRUxZKCFoYXNoTWFwLmFkZChXVEZNb3ZlKCprZXkpLCBXVEZNb3ZlKCp2YWx1ZSkp
LmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVhZHkg
aGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCkBAIC01NTgsMjEgKzU1OCwyMSBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5h
bWUgSGFzaAogICAgIHsKICAgICAgICAgdWludDY0X3QgaGFzaFNldFNpemU7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzaFNldFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFz
aFNldFR5cGUgaGFzaFNldDsKICAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGhhc2hT
ZXRTaXplOyArK2kpIHsKICAgICAgICAgICAgIE9wdGlvbmFsPEtleUFyZz4ga2V5OwogICAgICAg
ICAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaFNldFR5cGU6OmlzVmFsaWRW
YWx1ZSgqa2V5KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoIWhhc2hTZXQuYWRkKFdURk1vdmUoKmtleSkpLmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGhhc2ggc2V0IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWls
LgotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC02NDAs
MTMgKzY0MCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEVycm9y
VHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8RXhwZWN0ZWQ8VgogICAgICAgICBPcHRpb25hbDxi
b29sPiBoYXNWYWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNWYWx1ZTsKICAgICAgICAgaWYg
KCFoYXNWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgaWYgKCpoYXNWYWx1ZSkg
ewogICAgICAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgRXhwZWN0ZWQ8VmFsdWVUeXBlLCBFcnJvclR5
cGU+IGV4cGVjdGVkKFdURk1vdmUoKnZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm4gZXhwZWN0
ZWQ7CkBAIC02NTQsNyArNjU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBl
bmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPEV4cGVjdGVkPFYKICAgICAgICAg
T3B0aW9uYWw8RXJyb3JUeXBlPiBlcnJvcjsKICAgICAgICAgZGVjb2RlciA+PiBlcnJvcjsKICAg
ICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyBtYWtlVW5leHBl
Y3RlZChXVEZNb3ZlKCplcnJvcikpIH07CiAgICAgfQogfTsKQEAgLTY3Niw3ICs2NzYsNyBAQCBz
dHJ1Y3QgVmFyaWFudENvZGVyIHsKICAgICAgICAgICAgIE9wdGlvbmFsPHR5cGVuYW1lIFdURjo6
dmFyaWFudF9hbHRlcm5hdGl2ZTxpbmRleCwgV1RGOjpWYXJpYW50PFR5cGVzLi4uPj46OnR5cGU+
IG9wdGlvbmFsOwogICAgICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAgICAgICAgICAg
IGlmICghb3B0aW9uYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZSgqb3B0aW9uYWwpIH07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFZhcmlhbnRD
b2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIGkpOwpAQCAtNjk3LDcg
KzY5Nyw3IEBAIHN0cnVjdCBWYXJpYW50Q29kZXI8MCwgVHlwZXMuLi4+IHsKICAgICAgICAgT3B0
aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlPDAsIFdURjo6VmFyaWFudDxU
eXBlcy4uLj4+Ojp0eXBlPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsK
ICAgICAgICAgaWYgKCFvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyBXVEZN
b3ZlKCpvcHRpb25hbCkgfTsKICAgICB9CiB9OwpAQCAtNzE1LDcgKzcxNSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OlZhcmlhbnQ8VHlw
ZXMuLi4+PiB7CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBpOwogICAgICAgICBkZWNvZGVy
ID4+IGk7CiAgICAgICAgIGlmICghaSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gVmFyaWFu
dENvZGVyPHNpemVvZi4uLihUeXBlcykgLSAxLCBUeXBlcy4uLj46OmRlY29kZShkZWNvZGVyLCAq
aSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rl
Y29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaAppbmRleCA5OWY4
MWMzNDE5OGE4ZTI1MTE2MGUyM2RlMDI5OGMyZDA3NDUyYTI3Li43ZWJjYWVmM2ZjMjM0MTVjNTQy
OTFhM2ZhNjZmZjY5ZTA0ZTZlNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5o
CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxUPiByZXN1bHQ7
CiAgICAgICAgIERlY29kZXIgZGVjb2Rlcihzb3VyY2UsIG51bWJlck9mQnl0ZXMsIENvbnN0cnVj
dFdpdGhvdXRIZWFkZXIpOwogICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgZGVjb2RlciA+PiByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5j
ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaAppbmRl
eCAxMTYxNTdkMTdiNmMwMGMzNDZmM2Q4ZDI4NTU1NWEyYzdiZWU5YTdiLi5lYzY4ZGZhZGQ5Yjdl
NGQ3OGFkNzYzZmU2NTg2MTM1OTQwMDgyMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTcyLDE4ICs3MiwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0Zvcm1EYXRhOwogICAgICAgICBkZWNvZGVyID4+IGhh
c0Zvcm1EYXRhOwogICAgICAgICBpZiAoIWhhc0Zvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmICghaGFzRm9ybURhdGEudmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YVJl
ZmVyZW5jZSB7IH07CiAKICAgICAgICAgYXV0byBmb3JtRGF0YSA9IFdlYkNvcmU6OkZvcm1EYXRh
OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZm9ybURhdGEpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVu
dGx5KCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvSlNJUENCaW5kaW5nLmgKaW5kZXggOGMyMzE3NzMwNTFkNDRiMmRiOGJlMGNjOTNmMDNiNWVm
MDRiMjg3Mi4uMmRjZDk1YTdkYTY0ZmU1M2RlYmFlNTlhZWU3YzdlNmRlMTU4NTMyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKQEAgLTEzMyw3ICsxMzMsNyBA
QCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1dEpTVmFsdWVGb3JEZWNvZGVBcmd1bWVudEluQXJy
YXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZwogICAgIE9wdGlvbmFsPFQ+IHZhbHVlOwogICAgIGRl
Y29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8ganNWYWx1ZSA9
IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIFdURk1vdmUoKnZh
bHVlKSk7CiAgICAgaWYgKGpzVmFsdWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IGJkNzI4MmJkNWYxMWY2YWVhZDU4ODU3Zjc3MjZj
MTU5NTE2OThkYzAuLjBlNWFkM2Q5NDgwZmVlOTMwNTRiZDFjZTQ1N2QwMjgzOTljNGZmZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0ZW5lcklEOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0
PFNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJ
UEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdmlydHVh
bCBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmID0gc3RkOjpudWxsb3B0KTsKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIENvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRl
eCA1MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4Li4wNjE2MDFmNzIxMDI5
MzQ2MGYyOTY0NDhmM2U0MTgwOGIzZThmZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBPcHRpb25hbDxT
aGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
ZGF0YS5zaXplKCkpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMGRiYTg3NWU3MWFhOGJhY2U5ZWQ5YjU4
YTVjMTMwOTU2MzY3MDY0Ni4uZDgxZTU0NmNiNjJiZmI1Y2EwNmE3YTAwYWM2MDhjNjljODRjZTIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENv
bm5lY3Rpb24uaApAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBPcHRp
b25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xpZW50
Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmIHJlcGx5LCBUaW1lb3V0IHRpbWVvdXQsIFNwYW4mIHNwYW4pCiB7CiAgICAgLy8gSW4gdGhp
cyBmdW5jdGlvbiwgU2VuZFN5bmNSZXN1bHQgeyB9IG1lYW5zIGVycm9yIGhhcHBlbmVkIGFuZCBj
YWxsZXIgc2hvdWxkIHN0b3AgcHJvY2Vzc2luZy4KLSAgICAvLyBXVEY6Om51bGxvcHQgbWVhbnMg
d2UgY291bGRuJ3Qgc2VuZCB0aHJvdWdoIHRoZSBzdHJlYW0sIHNvIHRyeSBzZW5kaW5nIG91dCBv
ZiBzdHJlYW0uCisgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhy
b3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgogICAgIGF1dG8g
c3luY1JlcXVlc3RJRCA9IG1fY29ubmVjdGlvbi5tYWtlU3luY1JlcXVlc3RJRCgpOwogICAgIGlm
ICghbV9jb25uZWN0aW9uLnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVxdWVzdElEKSkK
ICAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBP
cHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6dHJ5U2VuZAogICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkgLT4gT3B0aW9u
YWw8U2VuZFN5bmNSZXN1bHQ+IHsKICAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIgbWVz
c2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07CiAgICAgICAg
IGlmICghKG1lc3NhZ2VFbmNvZGVyIDw8IHN5bmNSZXF1ZXN0SUQgPDwgbWVzc2FnZS5hcmd1bWVu
dHMoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSByZWxlYXNlKG1l
c3NhZ2VFbmNvZGVyLnNpemUoKSk7CiAKICAgICAgICAgaWYgKHdha2V1cFJlc3VsdCA9PSBTdHJl
YW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6OlllcykKQEAgLTI1MCw3ICsyNTAsNyBA
QCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBj
bGllbnRPZmZzZXQgPCBjbGllbnRMaW1pdCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0dWF0aW9uIHdo
ZXJlCiAgICAgICAgIC8vIDAgPCByZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZS4KICAg
ICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4gU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbChUaW1lb3V0IHRpbWVvdXQpCkBAIC0yNzMs
NyArMjczLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rpb246OlNwYW4+
IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKIAogICAgICAgICBtX2J1ZmZlci5j
bGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKICAgICAgICAgaWYgKHRpbWVv
dXQuZGlkVGltZU91dCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIC8vIEluIGNhc2UgdGhlIHRy
YW5zYWN0aW9uIHdhcyBjYW5jZWxsZWQsIHVuZG8gdGhlIHRyYW5zYWN0aW9uIG1hcmtlci4KICAg
ICBzaGFyZWRDbGllbnRMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENsaWVudExpbWl0PigwKSwg
c3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCmluZGV4IGMyMWJkYzY4ZjhmZDc1
YWZjZWE4OWUxZDZiMDY5ZDVjNzhmNGFhMGQuLjAyMTAyZjgyMjZkOTM3NGE2ZDY4YWIwNzIzZTll
ZWI5OTMxN2I3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNvbm5lY3Rpb25CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0
cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC04MiwxOSArODIsMTkgQEAgT3B0aW9uYWw8U3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIKICAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
PiBpcGNIYW5kbGU7CiAgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CiAgICAgaWYgKCFpcGNIYW5k
bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7CiAgICAgZGVjb2RlciA+
PiBzZW1hcGhvcmU7CiAgICAgaWYgKCFzZW1hcGhvcmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2l6ZV90IGRhdGFTaXpl
ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKICAgICBpZiAoZGF0
YVNpemUgPCBoZWFkZXJTaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGRhdGFTaXplID4gaGVhZGVyU2l6ZSgp
ICsgbWF4aW11bVNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hh
cmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLT5oYW5kbGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogICAgIGlmIChzaGFyZWRNZW1vcnktPnNpemUoKSA8IGRh
dGFTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsgc2hhcmVkTWVt
b3J5LnJlbGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBob3JlKSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDA3NTQ5NmNiMTQyOTc5MjlmZmIzNmI4NGIyZDE5ZGY1ZGI4M2Zi
ZDEuLjhkM2ZmYjQ3YTIwZWQ5ZmVjMjI0NmYxYTU2NmZmNGMyYjQwMGZiNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIE9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpT
cGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyCiB7CiAgICAgU2VydmVy
TGltaXQgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3RkOjptZW1vcnlf
b3JkZXJfYWNxdWlyZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxpbWl0OjpzZXJ2
ZXJJc1NsZWVwaW5nVGFnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVkU3BhbihtX3Nl
cnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgaWYgKHJlc3VsdC5z
aXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFN0
cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFz
ZTo6dHJ5QWNxdWlyCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3Nh
Z2VTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAyZDliNzFlYWU0
OTZmNjBjYjlkZTI3Mzg5YTY0ZWE1YWZiOTM1N2JjLi41ZWM4ZmYzM2NhZGY5ZDJmNGU2MWY2ZmJh
Y2UyZDdkYmYxOGE1ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9j
b2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OmlkZW50aWZpZXIoKSBjb25zdAogT3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4gQ29ubmVjdGlvbjo6Z2V0QXVkaXRUb2tlbigpCiB7CiAgICAgaWYgKCFt
X3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwog
ICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihtX3hwY0Nvbm5lY3Rpb24uZ2V0KCks
ICZhdWRpdFRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rh
cndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
ZGFyd2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAKaW5kZXggYTMzZTkzMmVjYjlhOGVkMmY4NjVi
MWZkYjYyMTMxYjQ4NTNkYWM2MC4uYmMwOGY2MDFhNzE1MDA3ZTVhNzA3NzBhYjg1Mzk4NmQxNTll
OWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvZGFyd2luL0lQQ1Nl
bWFwaG9yZURhcndpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvZGFyd2lu
L0lQQ1NlbWFwaG9yZURhcndpbi5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxTZW1h
cGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTWFjaFNl
bmRSaWdodCBzZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBPcHRpb25hbDxTZW1hcGhvcmU+IHsgc3RkOjppbl9wbGFjZSwgV1RGTW92
ZShzZW5kUmlnaHQpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
d2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKaW5kZXggN2FiYTVjNDg1NzY2OGFmN2YyZDUwOGFmNjIz
N2RhNGFhNzY4OWI1ZC4uYzllNjU2ZDI2MTY0NTJmNDY1ZWM0OWMwYWVjMjQxOGJhMzU3ZTY2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdp
bi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gaGFuZGxlID0gV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwogICAgIGlmICghaGFuZGxl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBTZW1hcGhvcmUoKmhhbmRsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAppbmRleCBlOGI2NGNlMmY1NDAyZmE1YTBmMTY5
NzY5NjgxMzM5NmUzZTY3MzNiLi5jOTk4Zjk3OTYxYjE4NDRhNmIwZmFiZmZkZTljYzIwNGY0Njc2
MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIGluaXRpYWxpemVMb2dD
aGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBXVEY6Om51bGxvcHQpOwordm9p
ZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+ID0gc3Rk
OjpudWxsb3B0KTsKIFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVt
b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlD
b2NvYS5jcHAKaW5kZXggMTVhNmU3ZGIwMDNhNmE0ZDI1MWNmYWJkZGJmNmM5Nzk3OTZjZWU3ZC4u
OGRmNjY4ZDBlMzAzNWYwMmY0OWYyYmU2YTFlODczNzBhNzY0ZTlkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IHNhZmVSb3VuZFBhZ2Uoc2l6
ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IHJvdW5kZWRTaXplOwogICAgIGlmIChfX2J1aWx0aW5f
YWRkX292ZXJmbG93KHNpemUsIHN0YXRpY19jYXN0PHNpemVfdD4oUEFHRV9NQVNLKSwgJnJvdW5k
ZWRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByb3VuZGVkU2l6ZSAmPSB+c3RhdGljX2Nhc3Q8c2l6ZV90PihQQUdF
X01BU0spOwogICAgIHJldHVybiByb3VuZGVkU2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCBhZmY3YjBkMThkYThlMzJm
MTZlMGI0MzRjOTgwNWNhYWViYmRkZjgzLi45OThhMmE3Njc5MzA1YTQzNWZhMzVjYzFhZWViNzA4
ZjM0Njc1NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVk
TWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1l
bW9yeVVuaXguY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hh
cmVkTWVtb3J5OjptYXAoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24gcHJvdGVjdGkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBpbnN0
YW5jZSA9IHdyYXBNYXAoZGF0YSwgaGFuZGxlLm1fYXR0YWNobWVudC5zaXplKCksIC0xKTsKLSAg
ICBpbnN0YW5jZS0+bV9maWxlRGVzY3JpcHRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBpbnN0YW5j
ZS0+bV9maWxlRGVzY3JpcHRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICBpbnN0YW5jZS0+bV9pc1dy
YXBwaW5nTWFwID0gZmFsc2U7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKaW5kZXggMjRjZmRkN2UwMmRk
NDdlMzU0MDRmMWRiNGNiM2JkNmZjZjc2YWFhZC4uMTViOWU0MjU2NDI1ZDc2OGRhNGFiOTU0OTgz
YWZiNmExNjQzYTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hh
cmVkTWVtb3J5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRN
ZW1vcnlXaW4uY3BwCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCBPcHRpb25hbDxIQU5ETEU+IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJj
ZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICB1aW50MzJfdCBzb3VyY2VQSUQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzb3VyY2VQSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSEFORExFIGR1cGxpY2F0ZWRIYW5kbGU7CiAg
ICAgaWYgKCFnZXREdXBsaWNhdGVkSGFuZGxlKHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihzb3Vy
Y2VIYW5kbGUpLCBzb3VyY2VQSUQsIGR1cGxpY2F0ZWRIYW5kbGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGR1cGxpY2F0ZWRIYW5kbGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQppbmRleCBjZGZhN2JmNDFlZGI3YjM2OWJmMThjNTc4YWIyZDZiODdiNjVlYzc4Li44MzBk
YWVkMWVkZjA0NjY0MWU5MmMzYzkyZGIxNDZiOWZhNThmYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTExNTQsNyArMTE1NCw3IEBAIGRlZiBnZW5lcmF0
ZV9qc192YWx1ZV9jb252ZXJzaW9uX2Z1bmN0aW9uKHJlc3VsdCwgcmVjZWl2ZXJzLCBmdW5jdGlv
bl9uYW1lLCBhcmd1CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGRlZmF1bHQ6XG4nKQogICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgYnJlYWs7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICB9
XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gV1RGOjpudWxsb3B0O1xuJykKKyAg
ICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDtcbicpCiAgICAgcmVzdWx0
LmFwcGVuZCgnfVxuJykKIAogCkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBkZWYgZ2VuZXJhdGVfanNf
YXJndW1lbnRfZGVzY3JpcHRpb25zKHJlY2VpdmVycywgZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRz
X2Zyb21fbQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWZhdWx0OlxuJykKICAgICByZXN1bHQu
YXBwZW5kKCcgICAgICAgIGJyZWFrO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykK
LSAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIFdURjo6bnVsbG9wdDtcbicpCisgICAgcmVz
dWx0LmFwcGVuZCgnICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7XG4nKQogICAgIHJlc3VsdC5hcHBl
bmQoJ31cbicpCiAgICAgcmV0dXJuIHJlc3VsdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0
aW9ucy5jcHAKaW5kZXggY2FmNzY3OTcyODc5ZWE5NTZmZjlkYWFjZmJiYWI0NzEwZGNiYmFiMi4u
MDg2YWQ5OWZhZjUzMTExMjRkNjBlYzI4NzE5NTc2NWFjMmFjZGRmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMvTWVzc2FnZUFy
Z3VtZW50RGVzY3JpcHRpb25zLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIE9wdGlvbmFsPEpTQzo6
SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIE1lCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8
SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNvZGVyKQpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvclJlcGx5QXJn
dW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVzY3JpcHRpb24+
PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkKQEAgLTU4OSw3
ICs1ODksNyBAQCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VB
cmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYQogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVz
c2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkKQEAgLTYzOSw3
ICs2MzksNyBAQCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VS
ZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYQogICAgIGRlZmF1bHQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCA4NDdiZDViZTgx
NjRiOWFlMzZhYzZmNDAxMTZkOGQ4ZjUwMGExZjIwLi40YTE3YzI3YzBhYzI5YTk4MjdlMmQ3NzEy
NDdjYmQxYzcxOGRjYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNzksNSArNzksNSBAQCBXS1N0cmluZ1JlZiBXS1Nl
Y3VyaXR5T3JpZ2luQ29weUhvc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikK
IAogdW5zaWduZWQgc2hvcnQgV0tTZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9yaWdp
blJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2VjdXJp
dHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQudmFsdWVPcigwKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQudmFs
dWVfb3IoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9B
cHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQppbmRleCAzMzk4MTAwMmMxMDJj
NWUwYmI4MThjNWI0N2Y1YjVhYmI0MGUzNGM4Li4yZDQwOGQ4NTEzMGJhYzM3MjY1ODY0YmI2YmM0
YjE5NGNlMTQ5YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9B
cHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KQEAgLTc2LDcgKzc2LDcg
QEAgT3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZlYXR1cmVzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKIAogICAgIGF1dG8gcGxhdGZvcm1GZWF0dXJlcyA9
IElQQzo6ZGVjb2RlPE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+PihkZWNvZGVyLCBh
bGxvd2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUZlYXR1cmVzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZSgqcGxhdGZvcm1G
ZWF0dXJlcykgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4IDA1ODc4OTY4NDVkN2I3Y2Yx
MzUwNmM5OWQ2MWJlOWI5ZTQzMWU2ODguLjUwY2RkYTUxMWJiOGQwMjVhOGMzZjFiYzBjMjUzMTAx
Y2FmMzllNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtOTUsNyArOTUsNyBAQCBPcHRpb25h
bDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8
UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcy5nZXQo
KS5nZXQoKSk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFBheW1l
bnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDNiMjRmZGE5MWJkYjRmOTE4M2Q2ZGJkOTUyZTIyYWQ0
YTMyYjc0OGIuLjkwNWRlYzM1Y2RlZTc4NDA1MWQ4YjcxZjViZDYxMDkyMzc5NWJiMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpkaWRSZWFjaEZpbmFsU3RhdGUoV2ViQ29yZTo6UGF5bWVudFNlc3Np
b25FcnJvcgogICAgIHBsYXRmb3JtSGlkZVBheW1lbnRVSSgpOwogCiAgICAgbV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKLSAgICBtX2Rlc3RpbmF0aW9uSUQgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9kZXN0aW5hdGlvbklEID0gc3RkOjpudWxsb3B0OwogICAgIG1fbWVyY2hhbnRW
YWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZTsKICAgICBtX3N0
YXRlID0gU3RhdGU6OklkbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4
IDMxYzgwNTk5ZTk3MDAyYzQwMDMxOWY0NWRlNjkwNGMxMzQ0MDk5NzMuLjhkN2I1YzMzMzcxMGE2
YzJlMDZjZjQyZDcyMzVmZDEyMDUzNmJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bi5tbQpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9u
PihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFjb25maWd1
cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZN
b3ZlKCpjb25maWd1cmF0aW9uKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCmluZGV4
IDA2MzA1YzdmY2QwYTU4MTQyZDczNjg5YjZiMzM5MzYxZTViNTg4OGIuLmU4ZmNmZGNhY2E3M2Ew
MjY1NDM2Y2UzN2JiNTQ5MzFjMzE2YzdjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NhbGxiYWNrSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgK
QEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlk
ZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNWYWxpZENhbGxi
YWNrSUQoKmlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGZyb21JbnRlZ2VyKCppZGVudGlm
aWVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1
bWVudENvZGVyc0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENv
ZGVyc0NvY29hLmgKaW5kZXggZTZiMjM1Yjc0Zjk0MzkyZjVlNjI1ZTYyN2MzNmQ4MzRlZjc5MWFm
MC4uNzExZGZiZTYwMjViOWI0NzBiODk1OWY4YjJmNWYzZDg1NmIyOTRjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApAQCAtNzYsNyAr
NzYsNyBAQCBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBO
U0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCiB7CiAgICAgYXV0byByZXN1bHQgPSBkZWNv
ZGVPYmplY3QoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIEFTU0VSVCghKnJlc3VsdCB8fCBpc09iamVjdENsYXNzQWxsb3dlZCgoKnJlc3VsdCkuZ2V0
KCksIGFsbG93ZWRDbGFzc2VzKSk7CiAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
ZjVkZTRmMmViOTNiZTgzNDc0NjE0ZjExNGYyODBiNGE3NTI1MTA0ZS4uYzU0YjUzYjZmYjYxNDNi
YmVkMGI3MDAxYjE3ZDdhMDkyNDhhMDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yNTksMTMgKzI1OSwxMyBAQCBzdGF0
aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hbChEZWNvZGVyJiBk
ZWNvZGVyLCBOU0FycmF5PENsYQogewogICAgIHVpbnQ2NF90IHNpemU7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWNvZGVPYmplY3QoZGVjb2RlciwgYWxs
b3dlZENsYXNzZXMpOwogICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS52YWx1ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmFsdWUudmFsdWUoKS5nZXQoKV07CiAg
ICAgfQogCkBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29s
b3IgY29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHsgbnNDb2xvcihjb2xvcikgfTsKIH0KICNlbHNlCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRX
aXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV0pIH07CiB9CiAjZW5kaWYKQEAgLTMxMyw3
ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZURh
dGFJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyBh
ZG9wdE5TKChOU0RhdGEgKilkYXRhLmxlYWtSZWYoKSkgfTsKIH0KIApAQCAtMzI4LDcgKzMyOCw3
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGF0ZUludGVy
bmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGRGF0ZVJlZj4gZGF0ZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IGFkb3B0TlMo
KE5TRGF0ZSAqKWRhdGUubGVha1JlZigpKSB9OwogfQogCkBAIC0zNzAsMTcgKzM3MCwxNyBAQCBz
dGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlvbmFyeUludGVybmFsKERl
Y29kZXImIGRlY29kZXIsIE5TQXJyYQogewogICAgIHVpbnQ2NF90IHNpemU7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiBkaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6c2l6ZV0pOwogICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgYXV0byBrZXkgPSBkZWNvZGVPYmplY3QoZGVjb2RlciwgYWxsb3dl
ZENsYXNzZXMpOwogICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8g
dmFsdWUgPSBkZWNvZGVPYmplY3QoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZh
bHVlLnZhbHVlKCkuZ2V0KCkgZm9yS2V5OmtleS52YWx1ZSgpLmdldCgpXTsKICAgICB9CkBAIC0z
OTksNyArMzk5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZUZvbnRJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGZvbnRBdHRyaWJ1dGVzOwogICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGZvbnRBdHRyaWJ1dGVz
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCkBAIC00MjEsNyArNDIx
LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVOdW1iZXJJ
bnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4g
bnVtYmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobnVtYmVyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
eyBhZG9wdE5TKChOU051bWJlciAqKW51bWJlci5sZWFrUmVmKCkpIH07CiB9CiAKQEAgLTQ0NSwx
MSArNDQ1LDExIEBAIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVTZWN1cmVD
b2RpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FyCiB7CiAgICAgQVNTRVJUKGFsbG93
ZWRDbGFzc2VzICYmIGFsbG93ZWRDbGFzc2VzLmNvdW50KTsKICAgICBpZiAoIWFsbG93ZWRDbGFz
c2VzIHx8ICFhbGxvd2VkQ2xhc3Nlcy5jb3VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
dW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJl
YWRpbmdGcm9tRGF0YTooX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSBlcnJvcjpudWxscHRy
XSk7CiAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kgPSBOU0RlY29k
aW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRp
YyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVTZWN1cmVDb2RpbmdJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyLCBOU0FyCiAgICAgICAgIHJldHVybiB7IHJlc3VsdCB9OwogICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3NlcyAlQDogJUAiLCBhbGxvd2VkQ2xhc3NlcywgZXhj
ZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9IEBmaW5hbGx5IHsKICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNo
RGVjb2RpbmddOwogICAgICAgICB1bmFyY2hpdmVyLmdldCgpLmRlbGVnYXRlID0gbmlsOwpAQCAt
NDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVj
b2RlU3RyaW5nSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHN0cmluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmluZykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHsgYWRvcHROUygoTlNTdHJpbmcgKilzdHJpbmcubGVha1JlZigpKSB9OwogfQog
CkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+
PiBkZWNvZGVVUkxJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gVVJMOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoVVJMKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4geyBhZG9wdE5TKChOU1VSTCAqKVVSTC5sZWFrUmVmKCkpIH07CiB9CiAKQEAgLTU1NiwxMyAr
NTU2LDEzIEBAIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBk
ZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsCiB7CiAgICAgYm9vbCBpc051bGw7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc051bGwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc051bGwpCiAgICAg
ICAgIHJldHVybiB7IG51bGxwdHIgfTsKIAogICAgIE5TVHlwZSB0eXBlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIE5T
VHlwZTo6QXJyYXk6CkBAIC01OTAsNyArNTkwLDcgQEAgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4g
ZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2VkQ2wK
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3Vs
dC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0K
aW5kZXggYTdhMmE5NGJlNDQzNmUzMzI0NGRiZTA1OGZiYmE2YTJlZGI2MjI2YS4uNGU2MDhiOGFh
ZjU2ODliMWMxZjAyZGQzZDc2YTZkYTYxOTRkMmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCkBAIC00Nyw3ICs0Nyw3IEBAIE9w
dGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1bHQ+IERhdGFEZXRlY3Rpb25SZXN1bHQ6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byByZXN1bHRzID0gSVBDOjpkZWNvZGU8
TlNBcnJheT4oZGVjb2RlciwgQFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5uZXJSZXN1bHRD
bGFzcygpIF0pOwogICAgIGlmICghcmVzdWx0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERhdGFEZXRlY3Rpb25SZXN1
bHQgcmVzdWx0OwogICAgIHJlc3VsdC5yZXN1bHRzID0gV1RGTW92ZSgqcmVzdWx0cyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNr
cy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tz
Lm1tCmluZGV4IGFiYzhkNzEzOTBjZWMyOTAyOWUzZjBlZTY2NDRiNDg4MTU0ODVmNTUuLmYzMWJj
YTFhMDJjMTNhZGY1OTUyN2NjN2JmZGZjY2FhM2Y2ZDJhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCkBAIC02MCw3
ICs2MCw3IEBAIGJvb2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogT3B0
aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBwQm91bmREb21h
aW5zVGVzdGluZyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogewogICAgIGlmIChidW5kbGVJRC5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHN0YXRpYyBhdXRvIGFwcEJvdW5kRG9tYWluTGlzdCA9IG1ha2VO
ZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiB7CiAgICAgICAgIHsiaW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IHsgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiMTI3LjAuMC4xIikgfX0sCkBAIC03MCw3ICs3
MCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGdldEFw
cEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyCiAgICAgaWYgKGFwcEJvdW5kRG9tYWluSXRl
ciAhPSBhcHBCb3VuZERvbWFpbkxpc3QtPmVuZCgpKQogICAgICAgICByZXR1cm4gYXBwQm91bmRE
b21haW5JdGVyLT52YWx1ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKaW5kZXggYTk4MjdkNzk1M2Vl
OTI3NzQyMzMwZmNiOTA2NTQzM2E3ZWQ0YWY2YS4uOGYwYjc2OTZkYzRhZmUyMDZjNzFjZTNlM2Nk
OWEyZWMxNzRiMTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5z
ZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2Vy
dFRleHRPcHRpb25zLmNwcApAQCAtNDEsMTUgKzQxLDE1IEBAIE9wdGlvbmFsPFdlYktpdDo6SW5z
ZXJ0VGV4dE9wdGlvbnM+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucz46
OmRlCiB7CiAgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShvcHRpb25zLnN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuc2hvdWxkU2ltdWxhdGVLZXlib2FyZElucHV0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1JhbmdlSXNSZWxh
dGl2ZVRvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDFlZThlODYy
ODQ0N2E3NzM4ZGM2OGUzNTdjNjhjZjUwMjQzNTE5ZDAuLjExMGMzZjFmZDJiMGM4ZmEzNTRhNWE3
MzMzNGNkNWFiOWMwMjI3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94RXh0
ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGUgdHlwZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IFdURjo6bnVsbG9w
dCwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncyA9IFNhbmRib3hFeHRl
bnNpb246OkZsYWdzOjpEZWZhdWx0KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJv
eEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4gPSBzdGQ6Om51
bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3MgPSBTYW5kYm94
RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1wbCB7IG5ldyBTYW5kYm94RXh0ZW5zaW9uSW1wbChw
YXRoLCB0eXBlLCBhdWRpdFRva2VuLCBmbGFncykgfTsKICAgICAgICAgaWYgKCFpbXBsLT5tX3Rv
a2VuKQpAQCAtMTYyLDcgKzE2Miw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+CiB7CiAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIHt7IH19OwpAQCAtMjI0LDE0ICsyMjQsMTQgQEAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpkZWNvZGUoSVAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBkZWNvZGVyID4+
IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgaGFuZGxlczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXplOyArK2kpIHsK
ICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGU7CiAgICAg
ICAgIGRlY29kZXIgPj4gaGFuZGxlOwogICAgICAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBoYW5kbGVzLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICB9CiAgICAgcmV0
dXJuIFdURk1vdmUoaGFuZGxlcyk7CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgsIFR5cGUKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogCi0g
ICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVh
dGUocGF0aC51dGY4KCkuZGF0YSgpLCB0eXBlLCBXVEY6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNp
b246OkZsYWdzOjpEb05vdENhbm9uaWNhbGl6ZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCB0
eXBlLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpEb05vdENhbm9uaWNh
bGl6ZSk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciAnJXMnIiwg
cGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5t
bQppbmRleCAyYjY2NWVlZDE1OTY3Zjk3MGZlNmY0OWE4Yzc5ZWU4NzkyZDBlODJmLi4zNjQzNjg4
NmVlN2FhZTdkYmNmZDlmYjE4NjVlYzkwN2ZjMDFmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAt
ODAsMTAgKzgwLDEwIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmRlCiB7CiAgICAgUmV0YWluUHRy
PE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZzsKICAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIGF0dHJpYnV0ZWRTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IGRvY3VtZW50QXR0cmlidXRlczsKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIs
IGRvY3VtZW50QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKGF0dHJpYnV0
ZWRTdHJpbmcpLCBXVEZNb3ZlKGRvY3VtZW50QXR0cmlidXRlcykgfSB9OwogfQogCkBAIC0xMDAs
NyArMTAwLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJh
dGlvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW4KIHsKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+KGRl
Y29kZXIsIFBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uQ2xhc3MoKSk7
CiAgICAgaWYgKCFjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqY29u
ZmlndXJhdGlvbikgfTsKIH0KQEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjbwogewogICAgIGF1dG8gcGF5bWVudCA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudD4oZGVjb2Rl
ciwgUEFMOjpnZXRQS1BheW1lbnRDbGFzcygpKTsKICAgICBpZiAoIXBheW1lbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gUGF5bWVudCB7IFdURk1vdmUoKnBheW1lbnQpIH07CiB9CkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aAogICAgIE9wdGlvbmFsPFBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzPiBzdGF0dXM7CiAgICAgZGVjb2RlciA+PiBzdGF0dXM7CiAgICAgaWYg
KCFzdGF0dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+
Pj4gZXJyb3JzOwogICAgIGRlY29kZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJyb3JzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0YXR1cyksIFdURk1vdmUoKmVycm9ycykgfX07CiB9
CkBAIC0xNTEsNyArMTUxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUKIHsKICAgICBhdXRv
IGNvbnRhY3QgPSBJUEM6OmRlY29kZTxQS0NvbnRhY3Q+KGRlY29kZXIsIFBBTDo6Z2V0UEtDb250
YWN0Q2xhc3MoKSk7CiAgICAgaWYgKCFjb250YWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdlYkNvcmU6
OlBheW1lbnRDb250YWN0IHsgV1RGTW92ZSgqY29udGFjdCkgfTsKIH0KQEAgLTE2NSw3ICsxNjUs
NyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudAogewogICAgIGF1dG8gcGF5bWVudE1lcmNoYW50
U2Vzc2lvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4oZGVjb2Rlciwg
UEFMOjpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpKTsKICAgICBpZiAoIXBheW1l
bnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6UGF5bWVudE1lcmNo
YW50U2Vzc2lvbiB7IFdURk1vdmUoKnBheW1lbnRNZXJjaGFudFNlc3Npb24pIH07CiB9CkBAIC0x
NzksNyArMTc5LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKEQKIHsKICAgICBhdXRvIHBheW1l
bnRNZXRob2QgPSBJUEM6OmRlY29kZTxQS1BheW1lbnRNZXRob2Q+KGRlY29kZXIsIFBBTDo6Z2V0
UEtQYXltZW50TWV0aG9kQ2xhc3MoKSk7CiAgICAgaWYgKCFwYXltZW50TWV0aG9kKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIFBheW1lbnRNZXRob2QgeyBXVEZNb3ZlKCpwYXltZW50TWV0aG9kKSB9OwogfQpA
QCAtMzY0LDcgKzM2NCw3IEBAIE9wdGlvbmFsPFJlZlB0cjxBcHBsZVBheUVycm9yPj4gQXJndW1l
bnRDb2RlcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+OjpkZWNvZGUoRGVjCiAgICAgT3B0aW9uYWw8
Ym9vbD4gaXNWYWxpZDsKICAgICBkZWNvZGVyID4+IGlzVmFsaWQ7CiAgICAgaWYgKCFpc1ZhbGlk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgUmVmUHRyPEFwcGxlUGF5RXJyb3I+IGVycm9yOwogICAgIGlmICghKmlzVmFs
aWQpCkBAIC0zNzIsNyArMzcyLDcgQEAgT3B0aW9uYWw8UmVmUHRyPEFwcGxlUGF5RXJyb3I+PiBB
cmd1bWVudENvZGVyPFJlZlB0cjxBcHBsZVBheUVycm9yPj46OmRlY29kZShEZWMKIAogICAgIGVy
cm9yID0gQXBwbGVQYXlFcnJvcjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghZXJyb3IpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC0zODUsNyArMzg1LDcgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6UGF5bWVudFNlc3Npb25FcnJvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50
U2Vzc2lvbkVycm8KIHsKICAgICBhdXRvIHBsYXRmb3JtRXJyb3IgPSBJUEM6OmRlY29kZTxOU0Vy
cm9yPihkZWNvZGVyKTsKICAgICBpZiAoIXBsYXRmb3JtRXJyb3IpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
eyBXVEZNb3ZlKCpwbGF0Zm9ybUVycm9yKSB9OwogfQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiBlbmNvZGVyCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBk
ZWNvZGVyLCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsKICAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGF0dHJpYnV0ZXMuZm9udCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGF0
dHJpYnV0ZXM7CiB9CiAKQEAgLTQ3Miw2MCArNDcyLDYwIEBAIE9wdGlvbmFsPEZvbnRQbGF0Zm9y
bURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29k
ZXImCiAgICAgT3B0aW9uYWw8Rm9udE9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKICAgICBkZWNv
ZGVyID4+IG9yaWVudGF0aW9uOwogICAgIGlmICghb3JpZW50YXRpb24uaGFzVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZvbnRXaWR0aFZhcmlhbnQ+IHdpZHRoVmFyaWFudDsKICAgICBkZWNv
ZGVyID4+IHdpZHRoVmFyaWFudDsKICAgICBpZiAoIXdpZHRoVmFyaWFudC5oYXNWYWx1ZSgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8VGV4dFJlbmRlcmluZ01vZGU+IHRleHRSZW5kZXJpbmdNb2RlOwog
ICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCF0ZXh0UmVuZGVyaW5n
TW9kZS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNpemU7CiAgICAgZGVj
b2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gc3ludGhldGljQm9sZDsKICAgICBkZWNvZGVyID4+IHN5bnRoZXRpY0JvbGQ7CiAg
ICAgaWYgKCFzeW50aGV0aWNCb2xkLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29s
PiBzeW50aGV0aWNPYmxpcXVlOwogICAgIGRlY29kZXIgPj4gc3ludGhldGljT2JsaXF1ZTsKICAg
ICBpZiAoIXN5bnRoZXRpY09ibGlxdWUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBhdHRyaWJ1dGVzOwogICAgIGRlY29kZXIgPj4gYXR0
cmlidXRlczsKICAgICBpZiAoIWF0dHJpYnV0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBp
bmNsdWRlc0NyZWF0aW9uRGF0YTsKICAgICBkZWNvZGVyID4+IGluY2x1ZGVzQ3JlYXRpb25EYXRh
OwogICAgIGlmICghaW5jbHVkZXNDcmVhdGlvbkRhdGEuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
IChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7CiAgICAgICAgIE9wdGlvbmFsPFJlZjxT
aGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gZm9udEZhY2VE
YXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YS5oYXNWYWx1ZSgpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAgICAgICBkZWNv
ZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGlmICghaXRlbUluQ29sbGVjdGlvbi5o
YXNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBmb250Q3VzdG9tUGxhdGZvcm1E
YXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250RmFjZURhdGEudmFsdWUoKSwg
aXRlbUluQ29sbGVjdGlvbi52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFmb250Q3VzdG9tUGxhdGZv
cm1EYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gYmFzZUZvbnREZXNjcmlwdG9yID0gZm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS0+Zm9udERlc2NyaXB0b3IuZ2V0KCk7CiAgICAgICAgIGlmICgh
YmFzZUZvbnREZXNjcmlwdG9yKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoYmFz
ZUZvbnREZXNjcmlwdG9yLCBhdHRyaWJ1dGVzLT5nZXQoKSkpOwogICAgICAgICBhdXRvIGN0Rm9u
dCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9y
LmdldCgpLCBzaXplLnZhbHVlKCksIG51bGxwdHIpKTsKIApAQCAtNTM2LDE2ICs1MzYsMTYgQEAg
T3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICBPcHRpb25hbDxTdHJpbmc+IHJlZmVyZW5jZVVS
TDsKICAgICBkZWNvZGVyID4+IHJlZmVyZW5jZVVSTDsKICAgICBpZiAoIXJlZmVyZW5jZVVSTC5o
YXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwb3N0U2NyaXB0TmFtZTsKICAg
ICBkZWNvZGVyID4+IHBvc3RTY3JpcHROYW1lOwogICAgIGlmICghcG9zdFNjcmlwdE5hbWUuaGFz
VmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVz
Y3JpcHRvciA9IGZpbmRGb250RGVzY3JpcHRvcihyZWZlcmVuY2VVUkwudmFsdWUoKSwgcG9zdFNj
cmlwdE5hbWUudmFsdWUoKSk7CiAgICAgaWYgKCFmb250RGVzY3JpcHRvcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb250
RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmli
dXRlcyhmb250RGVzY3JpcHRvci5nZXQoKSwgYXR0cmlidXRlcy0+Z2V0KCkpKTsKICAgICBhdXRv
IGN0Rm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNj
cmlwdG9yLmdldCgpLCBzaXplLnZhbHVlKCksIG51bGxwdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCmluZGV4IGQ5NmVmMDA0MTE3MzkxOWVhOTViMmUx
NDZlMzUzNzI2ZDU5NzdhYzcuLmI3NjczYmQyN2VmMDA5N2Q2MTA1MDMzOTdlZDkyMzBkNDU2MmVh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KQEAgLTQx
LDE2ICs0MSwxNiBAQCBPcHRpb25hbDxYUkRldmljZUluZm8+IFhSRGV2aWNlSW5mbzo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBYUkRldmljZUluZm8gZGV2aWNlRmVhdHVy
ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5pZGVudGlmaWVyKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNPcmll
bnRhdGlvblRyYWNraW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVh
dHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGV2aWNlRmVh
dHVyZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmlj
ZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbQpp
bmRleCA0OTJkMDJjNzE1YTkzOTZhZTQyOGM1MzMwMWRkOTIyZmNlYWM1MzcwLi42YmEwMmZhMDRk
OWMxMGQyN2FiMjg0NDRkYzQxMTQxYzBlYmNmZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1hSRGV2aWNlUHJveHkubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBYUkRldmljZVBy
b3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJhbWVDYWxsYmFj
ayYmIGNhbGwKIAogT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhSRGV2aWNlUHJv
eHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0
LCBib29sIGFscGhhKQogewotICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5c3RlbS0+Y3Jl
YXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlv
bih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgWFJEZXZp
Y2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6TGF5ZXI+JiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcAppbmRleCBlZDc0
M2FmMzYzNmE0NTJiNWI4NmRhMmRkMmU1MDBiNzI4NmE0ZjFjLi5mNjA2ZmY0YjgxNGVhNjk0ZDli
MjczZGY0YTNjZDQ0OTZiYjE4ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9E
ZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RlYnVnZ2Fi
bGVJbmZvRGF0YS5jcHAKQEAgLTU2LDI3ICs1NiwyNyBAQCBPcHRpb25hbDxEZWJ1Z2dhYmxlSW5m
b0RhdGE+IERlYnVnZ2FibGVJbmZvRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
ICAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBkZWJ1Z2dhYmxlVHlwZTsK
ICAgICBkZWNvZGVyID4+IGRlYnVnZ2FibGVUeXBlOwogICAgIGlmICghZGVidWdnYWJsZVR5cGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHRhcmdldFBsYXRmb3JtTmFtZTsKICAgICBkZWNv
ZGVyID4+IHRhcmdldFBsYXRmb3JtTmFtZTsKICAgICBpZiAoIXRhcmdldFBsYXRmb3JtTmFtZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0QnVpbGRWZXJzaW9uOwogICAgIGRlY29k
ZXIgPj4gdGFyZ2V0QnVpbGRWZXJzaW9uOwogICAgIGlmICghdGFyZ2V0QnVpbGRWZXJzaW9uKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRQcm9kdWN0VmVyc2lvbjsKICAgICBkZWNv
ZGVyID4+IHRhcmdldFByb2R1Y3RWZXJzaW9uOwogICAgIGlmICghdGFyZ2V0UHJvZHVjdFZlcnNp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiB0YXJnZXRJc1NpbXVsYXRvcjsKICAgICBkZWNv
ZGVyID4+IHRhcmdldElzU2ltdWxhdG9yOwogICAgIGlmICghdGFyZ2V0SXNTaW11bGF0b3IpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKmRlYnVnZ2FibGVUeXBlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXggMTlmZTdhODMxYmEz
NTkzNDExMTNiYzIwYjdmNTBkNjE0Mjc4NGUwYy4uNDFiOTJhYjQ2NmIzNjBhZmFhYmIxMDI2MmFh
MDJkNjViMTY4MzI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRF
ZGl0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRp
bmdDb250ZXh0Lm1tCkBAIC04NSw5ICs4NSw5IEBAIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRF
ZGl0aW5nQ29udGV4dDo6UmFuZ2U+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1bWVudEVkCiAg
ICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZSByYW5nZTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmFuZ2UubG9jYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmFuZ2UubGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByYW5nZTsKIH0KQEAgLTEwMywx
MiArMTAzLDEyIEBAIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4
dFJlY3RBbmRSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6CiAgICAgV2ViS2l0OjpEb2N1bWVu
dEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlIHJlY3Q7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlY3QucmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAg
IGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVjdC5yYW5nZSA9ICpyYW5nZTsKIAogICAgIHJldHVybiBy
ZWN0OwpAQCAtMTM0LDQxICsxMzQsNDEgQEAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ28KICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0QmVmb3JlOwogICAgIGRl
Y29kZXIgPj4gY29udGV4dEJlZm9yZTsKICAgICBpZiAoIWNvbnRleHRCZWZvcmUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y29udGV4dC5jb250ZXh0QmVmb3JlID0gKmNvbnRleHRCZWZvcmU7CiAKICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBz
ZWxlY3RlZFRleHQ7CiAgICAgaWYgKCFzZWxlY3RlZFRleHQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5zZWxl
Y3RlZFRleHQgPSAqc2VsZWN0ZWRUZXh0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmli
dXRlZFN0cmluZz4gY29udGV4dEFmdGVyOwogICAgIGRlY29kZXIgPj4gY29udGV4dEFmdGVyOwog
ICAgIGlmICghY29udGV4dEFmdGVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEFmdGVyID0gKmNv
bnRleHRBZnRlcjsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IG1h
cmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBtYXJrZWRUZXh0OwogICAgIGlmICghbWFya2VkVGV4
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSAqbWFya2VkVGV4dDsKIAogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGFubm90YXRlZFRleHQ7CiAgICAgZGVjb2Rl
ciA+PiBhbm5vdGF0ZWRUZXh0OwogICAgIGlmICghYW5ub3RhdGVkVGV4dCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250
ZXh0LmFubm90YXRlZFRleHQgPSAqYW5ub3RhdGVkVGV4dDsKIAogICAgIE9wdGlvbmFsPFdlYktp
dDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRl
eHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0OwogICAgIGlmICgh
c2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LnNlbGVjdGVkUmFuZ2VJ
bk1hcmtlZFRleHQgPSAqc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29udGV4dC50ZXh0UmVjdHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNvbnRleHQ7
CiB9CkBAIC0xODcsMjEgKzE4NywyMSBAQCBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGlu
Z0NvbnRleHRSZXF1ZXN0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZAogICAgIFdl
YktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5vcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdC5ncmFudWxhcml0eUNvdW50KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdC5yZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0Pj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0OwogICAgIGRl
Y29kZXIgPj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0OwogICAgIGlmICghb3B0aW9uYWxUZXh0
SW5wdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmVxdWVzdC50ZXh0SW5wdXRDb250ZXh0ID0gb3B0aW9u
YWxUZXh0SW5wdXRDb250ZXh0LnZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFu
Z2UuY3BwCmluZGV4IDlmN2M3MzEwOTNjZjg3MWE3ZTRjNjNmMWIxZjFhNmMzMDUzZjM1MzQuLmM0
NDc5ZTFhNjA0MTM4ODk2NDk5ZTk0OTExZTQxM2NkNDNhOWJkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpT
aW1wbGVSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwg
Y29ucwogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9mIGFuIGlucHV0
IGNvbnRleHQuCiAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpOwogICAgIH0KIApAQCAt
NTUsNyArNTUsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gRWRpdGluZ1Jhbmdl
Ojp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29ucwogCiAgICAgYXV0byBwYXJhZ3Jh
cGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFncmFwaFN0
YXJ0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBzY29wZUVuZCA9IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2Rl
Q29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9vdE5vZGUo
KSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdURk1vdmUo
KnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpOwpAQCAtOTEsOSAr
OTEsOSBAQCBPcHRpb25hbDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJL
aXQ6OkVkaXRpbmdSYW5nZT46OmRlY29kZShEZWNvZAogICAgIFdlYktpdDo6RWRpdGluZ1Jhbmdl
IGVkaXRpbmdSYW5nZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZWRpdGluZ1JhbmdlLmxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVkaXRpbmdSYW5nZS5sZW5ndGgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIGVkaXRpbmdSYW5nZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2
aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRleCAzZDhlNGY4
NzUxNWVjNGEzZTJjM2NmMGY4OWJjMGM0ZWIwNTc1NTg0Li5jOTFkY2ZjYjI4NjliOTdlZDZjMTJh
ZmMyMDc4YmQyMmI0ZDIzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgWFBD
U2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1bmRsZUlkZW50aWZpZXIoU3Ry
aW5nJiBjbGllbnRCdW5kCiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRD
bGllbnRTREtWZXJzaW9uKHVpbnQzMl90JiBjbGllbnRTREtWZXJzaW9uKQogewogICAgIGF1dG8g
dmVyc2lvbiA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmlu
ZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1zZGstdmVyc2lvbiIpKTsKLSAgICBjbGll
bnRTREtWZXJzaW9uID0gdmVyc2lvbi52YWx1ZU9yKDApOworICAgIGNsaWVudFNES1ZlcnNpb24g
PSB2ZXJzaW9uLnZhbHVlX29yKDApOwogICAgIHJldHVybiB2ZXJzaW9uLmhhc1ZhbHVlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlv
bi5jcHAKaW5kZXggYjM5ZjNmNTY1MmNjYTZkODNlZjAyZWNjY2QxMDBlZmI3ZWY1Mjg0MS4uMDc2
NGRhOGE2MGVjYmM4ODdlMzUxNzIxZWQ1MzgyNTEwZGFiNTcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKQEAgLTQ0LDE5ICs0
NCwxOSBAQCBPcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVtOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIE9wdGlvbkl0ZW0gcmVzdWx0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaXNHcm91cCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc1NlbGVj
dGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc2FibGVkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVudEdyb3VwSUQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1l
SW5mb0RhdGEuY3BwCmluZGV4IGFmNmQ5ZTRmOGFmZGFhMjI4NGRhMjY3ZTMxMGY4M2UxOWFkZWY4
YmYuLjhkY2Y3ZDc0N2I0MDgyNzQ5ZjUxN2Q4OWJjMjE4M2FmOWU4YjQ2MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCkBAIC00NCwyNyArNDQsMjcgQEAgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKICAgICBkZWNvZGVyID4+IGlzTWFp
bkZyYW1lOwogICAgIGlmICghaXNNYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgZGVjb2RlciA+PiByZXF1ZXN0OwogICAg
IGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1cml0eU9yaWdpbjsKICAg
ICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAg
ICAgaWYgKCFmcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPj4gcGFyZW50RnJhbWVJRDsKICAgICBkZWNvZGVyID4+IHBhcmVudEZyYW1l
SUQ7CiAgICAgaWYgKCFwYXJlbnRGcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAg
IFdURk1vdmUoKmlzTWFpbkZyYW1lKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0ZyYW1lVHJlZU5vZGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZVRyZWVOb2Rl
RGF0YS5oCmluZGV4IDI3MDUzNzA0ZmQwZjBlMzczZWEzNmJhODQ1YWFiNzQ2NjI0MzZlNmYuLjli
N2ZiNjUyMTlkOWY5NDc2NGJhNzFkN2I3Y2QxMDcxOTdmN2FhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHN0cnVjdCBGcmFt
ZVRyZWVOb2RlRGF0YSB7CiAgICAgICAgIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+IGluZm87CiAg
ICAgICAgIGRlY29kZXIgPj4gaW5mbzsKICAgICAgICAgaWYgKCFpbmZvKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURhdGE+PiBjaGls
ZHJlbjsKICAgICAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICAgICAgaWYgKCFjaGlsZHJl
bikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBX
VEZNb3ZlKCppbmZvKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgKaW5kZXggMGU0MzkyMjE1YmIzZTUyOTNhZTlhNDhlYzY4
ZjU1ZGViZmU3MTk1OC4uYmJkMjBlMmY3OGM3ODQ3ZWU5NWQ4MWRkM2Y5Mjc2OTYwYTk0NDM3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25Q
YXJhbWV0ZXJzLmgKQEAgLTU3LDE5ICs1NywxOSBAQCBzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b25QYXJhbWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gd2ViUHJvY2Vz
c0lkZW50aXR5VG9rZW47CiAgICAgICAgIGRlY29kZXIgPj4gd2ViUHJvY2Vzc0lkZW50aXR5VG9r
ZW47CiAgICAgICAgIGlmICghd2ViUHJvY2Vzc0lkZW50aXR5VG9rZW4pCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBvdmVycmlkZUxhbmd1YWdl
czsKICAgICAgICAgZGVjb2RlciA+PiBvdmVycmlkZUxhbmd1YWdlczsKICAgICAgICAgaWYgKCFv
dmVycmlkZUxhbmd1YWdlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKElQQ19URVNUSU5HX0FQ
SSkKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlSW52YWxpZE1lc3NhZ2VGb3JUZXN0aW5n
OwogICAgICAgICBkZWNvZGVyID4+IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKICAg
ICAgICAgaWYgKCFpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAgICAgICAgIHJldHVybiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdl
QXJndW1lbnRzLmgKaW5kZXggYzI5Y2YyNTEyMDE2Y2RhMmRmZTcwZDllMTQwYTkwZjAzYzE5ZTYw
NC4uYzViN2QxNzE4NmI4NzI5YmNjOTVhODAwMzQyNWM2NTdhNDIzMGFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50
cy5oCkBAIC02MiwyMiArNjIsMjIgQEAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHM+IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjpkZWMKICAgICBPcHRp
b25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+IGl0ZW1CdWZm
ZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaXRlbUJ1ZmZlcklkZW50aWZpZXI7CiAgICAg
aWYgKCFpdGVtQnVmZmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBv
ZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGRlc3RpbmF0
aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBSZWFzb24+IHJlYXNvbjsK
ICAgICBkZWNvZGVyID4+IHJlYXNvbjsKICAgICBpZiAoIXJlYXNvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biB7eyAqaXRlbUJ1ZmZlcklkZW50aWZpZXIsICpvZmZzZXQsICpkZXN0aW5hdGlvbkltYWdlQnVm
ZmVySWRlbnRpZmllciwgKnJlYXNvbiB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR2Ft
ZXBhZC9HYW1lcGFkRGF0YS5jcHAKaW5kZXggYTljZWM0MjY4YjdjMWE1NjY3MzAwYTFjNWMxNWZj
N2UwMTk5OTYzMy4uNDc0YTU0M2QyNmJmYzllYWRiYjEzYmU0ZTA2YjJmMTlhNGNjNzc4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAKQEAgLTU4LDI4
ICs1OCwyOCBAQCBPcHRpb25hbDxHYW1lcGFkRGF0YT4gR2FtZXBhZERhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgR2FtZXBhZERhdGEgZGF0YTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEubV9pc051bGwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRhdGEubV9pc051bGwp
CiAgICAgICAgIHJldHVybiBkYXRhOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1f
aW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faWQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fbWFwcGluZykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEubV9heGlzVmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5tX2J1dHRvblZhbHVlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEubV9sYXN0VXBkYXRlVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCmluZGV4
IGNhNzBhNWEwZWNhN2RjYzM0NmFjMDU4ZjMwZDhjZTdiMmY3MmFiNmYuLmNmZThmM2UzNGYzYTg5
N2YyOGMxNjJmMGE2N2ZiNjZkNzdhMTVjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaApAQCAtNzUsMjIgKzc1LDIyIEBAIHN0cnVj
dCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+
IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgaWYgKCFoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAoIWhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAg
IE9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwogICAgICAgICBkZWNvZGVyID4+
IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwogICAgICAgICBpZiAoIWRpZFBlcmZvcm1Tb2Z0VXBkYXRl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxSZXF1ZXN0RG9tYWluLCBD
b250ZXh0RG9tYWluPj4gY29udGV4dERhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gY29udGV4dERh
dGE7CiAgICAgICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUsIFdURk1vdmUoKmNvbnRl
eHREYXRhKSB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW9uQWN0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0
aW9uRGF0YS5jcHAKaW5kZXggNGIyYTU2MmM0YTdkNzU4YmM0NzU5YTJkNmQ2YWMyMzI3YzVmMTBm
MC4uODA0MTQxNGViNTAwYjZkYzAzNjVjNTllODczMWMwMGQ0MzU5YzU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcApAQCAtNjEsOTUgKzYxLDk1
IEBAIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlCiB7CiAgICAgV2ViQ29yZTo6TmF2aWdhdGlvblR5
cGUgbmF2aWdhdGlvblR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYXZpZ2F0aW9uVHlw
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4gbW9kaWZpZXJz
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9kaWZpZXJzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vdXNl
QnV0dG9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUg
c3ludGhldGljQ2xpY2tUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3ludGhldGljQ2xp
Y2tUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcjsK
ICAgICBpZiAoIXVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlv
bmFsPGJvb2w+IGNhbkhhbmRsZVJlcXVlc3Q7CiAgICAgZGVjb2RlciA+PiBjYW5IYW5kbGVSZXF1
ZXN0OwogICAgIGlmICghY2FuSGFuZGxlUmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGRvd25sb2FkQXR0cmlidXRlOwogICAgIGRl
Y29kZXIgPj4gZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgaWYgKCFkb3dubG9hZEF0dHJpYnV0ZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBpc1JlZGlyZWN0
OwogICAgIGRlY29kZXIgPj4gaXNSZWRpcmVjdDsKICAgICBpZiAoIWlzUmVkaXJlY3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxib29sPiB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CiAgICAgZGVj
b2RlciA+PiB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CiAgICAgaWYgKCF0cmVhdEFzU2Ft
ZU9yaWdpbk5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBoYXNPcGVuZWRGcmFt
ZXM7CiAgICAgZGVjb2RlciA+PiBoYXNPcGVuZWRGcmFtZXM7CiAgICAgaWYgKCFoYXNPcGVuZWRG
cmFtZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBvcGVuZWRCeURPTVdpdGhPcGVuZXI7CiAg
ICAgZGVjb2RlciA+PiBvcGVuZWRCeURPTVdpdGhPcGVuZXI7CiAgICAgaWYgKCFvcGVuZWRCeURP
TVdpdGhPcGVuZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IHJlcXVlc3Rlck9yaWdpbjsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Rlck9yaWdpbjsKICAg
ICBpZiAoIXJlcXVlc3Rlck9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiB0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsK
ICAgICBpZiAoIXRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPj4gc291cmNl
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHNvdXJjZUJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3Rvcnk7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsb2NrSGlzdG9yeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpMb2NrQmFj
a0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShsb2NrQmFja0ZvcndhcmRMaXN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gY2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGRlY29kZXIgPj4gY2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5OwogICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBkZWNvZGVyID4+IHByaXZhdGVD
bGlja01lYXN1cmVtZW50OwogICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sgV1RGTW92ZShuYXZpZ2F0aW9uVHlwZSksIG1vZGlmaWVycywgV1RGTW92
ZShtb3VzZUJ1dHRvbiksIFdURk1vdmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1
ZXN0KSwgV1RGTW92ZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93
bmxvYWRBdHRyaWJ1dGUpLCBXVEZNb3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0
ZXMpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAppbmRleCA0Nzg2
OTc0N2UwZmMxNTQ2MTM2MTRlYjA2ZTExNDRjNmQ0MmVlMDYzLi5jNzgwYmM0ZjgxMWFmOGZiMzg3
ZmIwZDIyYzdmZGU0ZjFkMTM2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
ZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5j
eVV0aWxzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVy
PiBjcmVhdGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAoaGFuZGxlID09IEZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGhhbmRsZSku
dmFsdWVPcigwKTsKKyAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoaGFu
ZGxlKS52YWx1ZV9vcigwKTsKICAgICBpZiAoIWZpbGVTaXplKSB7CiAgICAgICAgIEZpbGVTeXN0
ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCmluZGV4
IGQ5MTU2NzIyYjMxNTk2NjJkYTNkNTdkZTM4NDUwMDY0M2I5ODkzZjguLjNlNDI3MGRjYWYzMGY4
NjM5ZWZlMTI2MjUzNmJhOWU2ZjVkZDBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIE9wdGlvbmFsPFBs
YXRmb3JtUG9wdXBNZW51RGF0YT4gUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvCiB7CiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGE7CiAgICAgaWYg
KCFkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwCmluZGV4
IDkzYTkxNDk4OGM5MmE3MmIwZjZkM2NhYWJhMWE5MGFkYTE2ZDM3YjMuLjI2Njg4ZTk5MTdkZWU1
ZGRhNTYzNDg0NzcyZDI1MmYxMTRhZDlkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcApAQCAtNzksMTYgKzc5LDE2IEBAIE9wdGlv
bmFsPE5QSWRlbnRpZmllckRhdGE+IE5QSWRlbnRpZmllckRhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgTlBJZGVudGlmaWVyRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubV9pc1N0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgIGlmIChy
ZXN1bHQubV9pc1N0cmluZykgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X3N0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX251bWJlcikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZh
cmlhbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0
YS5jcHAKaW5kZXggOWIzMGU3ZjEzZTk4NTA2ODczZTVmNjM4YTQxODY3Y2ZhZDMyOGY5YS4uZTBk
ZWIzNjAyNjgwYjk4NGVjNWE5MGEzNGZjNGU3OGNmMGE3MzgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAg
T3B0aW9uYWw8TlBWYXJpYW50RGF0YT4gTlBWYXJpYW50RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKICAgICBOUFZhcmlhbnREYXRhIHJlc3VsdDsKICAgICB1aW50MzJfdCB0eXBl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBXZSBzcGVjaWFs
LWNhc2UgTG9jYWxOUE9iamVjdElEIGFuZCBSZW1vdGVOUE9iamVjdElEIGhlcmUgc28gYSBMb2Nh
bE5QT2JqZWN0SUQgaXMKICAgICAvLyBkZWNvZGVkIGFzIGEgUmVtb3RlTlBPYmplY3RJRCBhbmQg
dmljZSB2ZXJzYS4KQEAgLTE3MSwzMSArMTcxLDMxIEBAIE9wdGlvbmFsPE5QVmFyaWFudERhdGE+
IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpCb29sOgogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Jvb2xWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkludDMyOgogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2ludDMyVmFsdWUpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpEb3VibGU6CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZG91YmxlVmFsdWUpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpTdHJpbmc6
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fc3RyaW5nVmFsdWUpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpM
b2NhbE5QT2JqZWN0SUQ6CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fbG9j
YWxOUE9iamVjdElEVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgY2FzZSBOUFZhcmlhbnREYXRhOjpSZW1vdGVOUE9iamVjdElEOgogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX3JlbW90ZU5QT2JqZWN0SURWYWx1ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKaW5kZXggZjQ1NmRjOTg4MzMxZDMyMzg3
ZmMxMjU2NjEzMmVkNjY0NTEzZWMzZS4uMTkwMTEyMjFkY2ZiNWE0M2Y5YmQwM2I5ZGYyZTBiODVi
MTQ5ZTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCkBAIC0zNSwxMiAr
MzUsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAg
ICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OwotICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBzdGQ6Om51bGxvcHQgfTsK
ICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5
QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07Ci0gICAg
T3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRCB7IFdURjo6bnVsbG9wdCB9OwotICAgIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGEgeyBXVEY6Om51
bGxvcHQgfTsKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGUgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxEb3dubG9hZElE
PiBkb3dubG9hZElEIHsgc3RkOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YSB7IHN0ZDo6bnVsbG9wdCB9OworICAgIE9wdGlv
bmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSB7IHN0
ZDo6bnVsbG9wdCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjAsMzcgKzYwLDM3IEBAIHN0cnVjdCBQ
b2xpY3lEZWNpc2lvbiB7CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllcj4gZGVjb2RlZElkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZElk
ZW50aWZpZXI7CiAgICAgICAgIGlmICghZGVjb2RlZElkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPj4gZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgICAgIGRlY29k
ZXIgPj4gZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgICAgIGlmICgh
ZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lBY3Rpb24+IGRlY29kZWRQb2xpY3lBY3Rpb247CiAg
ICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAgICAgICAgaWYgKCFkZWNv
ZGVkUG9saWN5QWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGRlY29kZWROYXZpZ2F0aW9uSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZE5hdmlnYXRp
b25JRDsKICAgICAgICAgaWYgKCFkZWNvZGVkTmF2aWdhdGlvbklEKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3dubG9hZElEOwog
ICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb3dubG9hZElEOwogICAgICAgICBpZiAoIWRlY29k
ZWREb3dubG9hZElEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4+IGRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhOwogICAgICAgICBk
ZWNvZGVyID4+IGRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhOwogICAgICAgICBpZiAoIWRlY29k
ZWRXZWJzaXRlUG9saWNpZXNEYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsK
ICAgICAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAo
IXNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sg
V1RGTW92ZSgqZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkSXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRQb2xpY3lBY3Rpb24pLCBXVEZNb3Zl
KCpkZWNvZGVkTmF2aWdhdGlvbklEKSwgV1RGTW92ZSgqZGVjb2RlZERvd25sb2FkSUQpLCBXVEZN
b3ZlKCpkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUoKnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUlRD
TmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmNwcAppbmRleCBh
YTlkZjg0NzQyYzc2NTMwNmFlOGVjMGEyMTAxOGU4ZTM4OGU4MTc2Li5iODRhZjM3YjcxOGZhZThh
YWIwM2Q1MGVjNmYyZmRhZDMyMTg5Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SVENOZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmNw
cApAQCAtNjYsNyArNjYsNyBAQCBhdXRvIFJUQ05ldHdvcms6OklQQWRkcmVzczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SVBBZGRyZXNzPgogICAgIElQQWRkcmVz
cyByZXN1bHQ7CiAgICAgaW50IGZhbWlseTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZhbWls
eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBBU1NFUlQoZmFtaWx5ID09IEFGX0lORVQgfHwgZmFtaWx5ID09IEFGX0lO
RVQ2IHx8IGZhbWlseSA9PSBBRl9VTlNQRUMpOwogCkBAIC03NSwxNyArNzUsMTcgQEAgYXV0byBS
VENOZXR3b3JrOjpJUEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9w
dGlvbmFsPElQQWRkcmVzcz4KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQp
IHsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IHNpemVvZihpbl9hZGRyKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXN1bHQudmFsdWUgPSBydGM6OklQQWRkcmVzcygqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbl9hZGRyKj4oZGF0YS5kYXRhKCkpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKICAgICBpZiAoZGF0YS5zaXplKCkgIT0gc2l6ZW9mKGluNl9hZGRyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQudmFsdWUgPSBydGM6OklQQWRkcmVzcygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBp
bjZfYWRkcio+KGRhdGEuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEyNSwy
OCArMTI1LDI4IEBAIGF1dG8gUlRDTmV0d29yazo6U29ja2V0QWRkcmVzczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8U29ja2V0CiAgICAgU29ja2V0QWRkcmVzcyBy
ZXN1bHQ7CiAgICAgdWludDE2X3QgcG9ydDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvcnQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGludCBzY29wZUlkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NvcGVJZCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LnZhbHVlLlNldFBvcnQocG9ydCk7CiAgICAgcmVzdWx0LnZhbHVlLlNl
dFNjb3BlSUQoc2NvcGVJZCk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgaG9zdG5hbWU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShob3N0bmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnZhbHVlLlNl
dElQKHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhvc3RuYW1lLmRh
dGEoKSksIGhvc3RuYW1lLnNpemUoKSkpOwogCiAgICAgYm9vbCBpc1VucmVzb2x2ZWQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc1VucmVzb2x2ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc1VucmVzb2x2
ZWQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBPcHRpb25hbDxJUEFkZHJlc3M+IGlw
QWRkcmVzczsKICAgICBkZWNvZGVyID4+IGlwQWRkcmVzczsKICAgICBpZiAoIWlwQWRkcmVzcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQudmFsdWUuU2V0UmVzb2x2ZWRJUChpcEFkZHJlc3MtPnZhbHVlKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTcyLDQzICsxNzIsNDMgQEAgT3B0aW9uYWw8UlRDTmV0
d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBSVENO
ZXR3b3JrIHJlc3VsdDsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbmFtZSwgZGVzY3JpcHRpb247
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQubmFtZSA9IHN0
ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUuZGF0YSgpKSwgbmFt
ZS5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzY3JpcHRpb24pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC5kZXNjcmlwdGlvbiA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRlc2NyaXB0aW9uLmRhdGEoKSksIGRlc2NyaXB0aW9uLnNpemUoKSk7CiAgICAgT3B0
aW9uYWw8SVBBZGRyZXNzPiBwcmVmaXg7CiAgICAgZGVjb2RlciA+PiBwcmVmaXg7CiAgICAgaWYg
KCFwcmVmaXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnByZWZpeCA9IFdURk1vdmUoKnByZWZpeCk7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZml4TGVuZ3RoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5pZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVyZW5jZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWN0aXZlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZ25vcmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5zY29wZUlEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ2NF90IGxlbmd0aDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lmlwcy5yZXNlcnZlKGxlbmd0
aCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkg
ewogICAgICAgICBPcHRpb25hbDxJUEFkZHJlc3M+IGFkZHJlc3M7CiAgICAgICAgIGRlY29kZXIg
Pj4gYWRkcmVzczsKICAgICAgICAgaWYgKCFhZGRyZXNzKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlu
dCBmbGFnczsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbGFncykpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmVzdWx0Lmlwcy5wdXNoX2JhY2soeyBhZGRyZXNzLT52YWx1ZSwgZmxhZ3MgfSk7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tl
dE9wdGlvbnMuY3BwCmluZGV4IGExMzE2YjY0ZDQzZTFlNTNjYWU5ODJmNDg0ODk3YWZmYjc2NjBi
ZTUuLjllMjk4MzAxMmQzMzU0NjNlZGY1Mjc3YzJiNTdlMjljNDM4MGJkODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCkBAIC01NSwzMSArNTUsMzEgQEAgT3B0
aW9uYWw8UlRDUGFja2V0T3B0aW9ucz4gUlRDUGFja2V0T3B0aW9uczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKIAogICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgZHNjcDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRzY3ApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIG9wdGlvbnMuZHNjcCA9IGRzY3A7CiAK
ICAgICBPcHRpb25hbDxpbnQzMl90PiBwYWNrZXRJZDsKICAgICBkZWNvZGVyID4+IHBhY2tldElk
OwogICAgIGlmICghcGFja2V0SWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgb3B0aW9ucy5wYWNrZXRfaWQgPSBwYWNrZXRJ
ZC52YWx1ZSgpOwogCiAgICAgT3B0aW9uYWw8aW50PiBydHBTZW5kdGltZUV4dGVuc2lvbklkOwog
ICAgIGRlY29kZXIgPj4gcnRwU2VuZHRpbWVFeHRlbnNpb25JZDsKICAgICBpZiAoIXJ0cFNlbmR0
aW1lRXh0ZW5zaW9uSWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1zLnJ0cF9zZW5kdGltZV9leHRlbnNpb25faWQg
PSBydHBTZW5kdGltZUV4dGVuc2lvbklkLnZhbHVlKCk7CiAKICAgICBPcHRpb25hbDxpbnQ2NF90
PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBkZWNvZGVyID4+IHNydHBBdXRoVGFnTGVuZ3RoOwog
ICAgIGlmICghc3J0cEF1dGhUYWdMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1zLnNydHBfYXV0aF90YWdf
bGVuID0gc3J0cEF1dGhUYWdMZW5ndGgudmFsdWUoKTsKIAogICAgIGlmIChwYXJhbXMuc3J0cF9h
dXRoX3RhZ19sZW4gPiAwKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBzcnRwQXV0aEtl
eTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcnRwQXV0aEtleSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBwYXJhbXMuc3J0cF9hdXRoX2tleSA9IHN0ZDo6dmVjdG9yPGNoYXI+KHN0YXRp
Y19jYXN0PHNpemVfdD4oc3J0cEF1dGhLZXkuc2l6ZSgpKSk7CiAgICAgICAgIG1lbWNweShwYXJh
bXMuc3J0cF9hdXRoX2tleS5kYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNy
dHBBdXRoS2V5LmRhdGEoKSksIHNydHBBdXRoS2V5LnNpemUoKSAqIHNpemVvZihjaGFyKSk7CkBA
IC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1BhY2tldE9wdGlv
bnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8aW50NjRfdD4g
c3J0cFBhY2tldEluZGV4OwogICAgIGRlY29kZXIgPj4gc3J0cFBhY2tldEluZGV4OwogICAgIGlm
ICghc3J0cFBhY2tldEluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtcy5zcnRwX3BhY2tldF9pbmRleCA9IHNy
dHBQYWNrZXRJbmRleC52YWx1ZSgpOwogCiAgICAgb3B0aW9ucy5wYWNrZXRfdGltZV9wYXJhbXMg
PSBXVEZNb3ZlKHBhcmFtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggMTdiMmRhOWNjYTM1MjBiM2VmYzE0NmQ5ZWNmZjdlZjA4MDMwZDA5MS4uMTA0N2I3ZDRkMjM1
MjdlOTQ0ZDA5ZmUzNTVhOGNhMzU3OTU2YWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5tbQpAQCAtNzIsMjcgKzcyLDI3IEBAIGF1dG8gUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkCiB7
CiAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmxheWVySUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdGluZ0NvbnRleHRJRCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0aW5nRGV2aWNlU2NhbGVGYWN0b3IpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIC8vIFBsYXRmb3JtQ0FMYXll
clJlbW90ZU1vZGVsSG9zdGluZwogICAgIGJvb2wgaGFzTW9kZWw7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNNb2RlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc01vZGVsKSB7CiAgICAgICAgIGF1dG8g
bW9kZWwgPSBXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIW1v
ZGVsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tb2RlbCA9IG1vZGVsOwogICAgIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCmluZGV4IDA2ZGJjODcyMjU0ZGZjYjUw
OWVlZDEyZDA2NjY0OThmYTc2NmUzZDcuLmU4ZWEzODc5NWI1ZDkxNzFhYzBjY2UzNjE2MzZmNGM5
NWZjYzZjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKQEAgLTQ3LDE2ICs0Nywx
NiBAQCBPcHRpb25hbDxSZW1vdGVTY3JvbGxpbmdVSVN0YXRlPiBSZW1vdGVTY3JvbGxpbmdVSVN0
YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZQogICAgIFJlbW90ZVNjcm9sbGluZ1VJU3RhdGUg
dWlTdGF0ZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodWlTdGF0ZS5tX2NoYW5nZXMpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKHVpU3RhdGUubV9jaGFuZ2VzLmNvbnRhaW5zKENoYW5nZXM6OlNjcm9sbFNu
YXBOb2RlcykpIHsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1aVN0YXRlLm1fbm9kZXNX
aXRoQWN0aXZlU2Nyb2xsU25hcCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAodWlTdGF0
ZS5tX2NoYW5nZXMuY29udGFpbnMoQ2hhbmdlczo6VXNlclNjcm9sbE5vZGVzKSkgewogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVpU3RhdGUubV9ub2Rlc1dpdGhBY3RpdmVVc2VyU2Nyb2xs
cykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gdWlTdGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCBiMTg4YTI0NjI5MzYzMjQ3NzI2OWFmYTQ3
OTk1YzJmZjE3NDU4ZmIwLi4wMDg2NWM2OWRiYmQ2MjRjZDUyNzRiOTUzZTNmZWUwN2EyZWYxOGM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oCkBAIC03OSw0MiArNzks
NDIgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm8gewogICAgICAgICBPcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSUQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gcmVzb3VyY2VMb2FkSUQ7CiAgICAgICAgIGlmICghcmVzb3VyY2VMb2FkSUQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+
PiBmcmFtZUlEOwogICAgICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgICAgIGlmICghZnJh
bWVJRCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGFyZW50
RnJhbWVJRDsKICAgICAgICAgaWYgKCFwYXJlbnRGcmFtZUlEKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8VVJMPiBvcmlnaW5hbFVSTDsKICAgICAgICAgZGVjb2RlciA+PiBvcmlnaW5h
bFVSTDsKICAgICAgICAgaWYgKCFvcmlnaW5hbFVSTCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gb3JpZ2luYWxIVFRQTWV0aG9kOwogICAgICAgICBkZWNvZGVyID4+IG9y
aWdpbmFsSFRUUE1ldGhvZDsKICAgICAgICAgaWYgKCFvcmlnaW5hbEhUVFBNZXRob2QpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZXZlbnRUaW1lc3RhbXA7CiAgICAg
ICAgIGRlY29kZXIgPj4gZXZlbnRUaW1lc3RhbXA7CiAgICAgICAgIGlmICghZXZlbnRUaW1lc3Rh
bXApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBsb2FkZWRGcm9tQ2FjaGU7
CiAgICAgICAgIGRlY29kZXIgPj4gbG9hZGVkRnJvbUNhY2hlOwogICAgICAgICBpZiAoIWxvYWRl
ZEZyb21DYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRJRCks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BhcmFtZXRlcnMuaAppbmRleCA2MGRlMzVmNmFlOTU3ZDcwNjc1OTQ5NjQ3M2NlMzUxNjQyNDFl
MmViLi5mM2Y5ZTZmNTEzYWQyZmQ4NDFkYTk5MTUxODQ4ZWNlYzM3MTQ2ODE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0
ZXJzLmgKQEAgLTc1LDY5ICs3NSw2OSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMgewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsKICAgICAgICAg
ZGVjb2RlciA+PiBkaXJlY3Rvcnk7CiAgICAgICAgIGlmICghZGlyZWN0b3J5KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVkOwogICAgICAg
ICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAg
ICBkZWNvZGVyID4+IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBpZiAoIWlzSXRw
U3RhdGVFeHBsaWNpdGx5U2V0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
ZW5hYmxlTG9nVGVzdGluZ0V2ZW50OwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZUxvZ1Rlc3Rp
bmdFdmVudDsKICAgICAgICAgaWYgKCFlbmFibGVMb2dUZXN0aW5nRXZlbnQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgICAg
ICBkZWNvZGVyID4+IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgICAgIGlmICghc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVu
YWJsZURlYnVnTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVEZWJ1Z01vZGU7CiAgICAg
ICAgIGlmICghZW5hYmxlRGVidWdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgICAg
ICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgICAgIGlmICgh
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkPiBzYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBzYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAgICAgaWYgKCFzYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50RW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU+IGZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOwogICAgICAgICBpZiAoIWZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgZGVjb2RlciA+PiBzdGFu
ZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAgICAgICAgIGlmICghc3RhbmRhbG9uZUFwcGxpY2F0
aW9uRG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKICAgICAgICAgZGVjb2RlciA+
PiBhcHBCb3VuZERvbWFpbnM7CiAgICAgICAgIGlmICghYXBwQm91bmREb21haW5zKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1hbnVh
bFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBkZWNvZGVyID4+IG1hbnVhbFByZXZhbGVudFJl
c291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVudFJlc291cmNlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJlY3RvcnkpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0
aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6
YXRpb25EYXRhLmNwcAppbmRleCBlMDYzYzFmMWJkOTlhMDAyYjQyYWEzZjI2YTNhYmFhMjJhYjNk
ODdhLi5mYzMwZTU4OGMzNDk4MjdiM2JmYmVkYmY2OWNiYTZlN2NhZmE2M2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRlY29kCiAgICAg
T3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+PiBjb250
ZW50UnVsZUxpc3RzOwogICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsKICAgICBpZiAo
IWNvbnRlbnRSdWxlTGlzdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4ge3sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmluZGV4IDdiZDBiNThmNDRkNTYzMmZiOTFmZmFm
NDQ2NzZkZWY5ZDA5YzU2YjkuLmMwZTQzNWI3ZmRkMTMxZGE3ZTJkYzY3YzVkMzEwMTQ3ZTEyYzY4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtNzAsMTkgKzcwLDE5
IEBAIGF1dG8gSFRUUEJvZHk6OkVsZW1lbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
IC0+IE9wdGlvbmFsPEVsZW1lbnQ+CiB7CiAgICAgRWxlbWVudCByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkgfHwgIWlzVmFsaWRFbnVtKHJlc3VsdC50eXBlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5maWxlUGF0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZmlsZVN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5m
aWxlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5i
bG9iVVJMU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzgsNTMgKzEz
OCw1MyBAQCBPcHRpb25hbDxGcmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIEZyYW1lU3RhdGUgcmVzdWx0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnVybFN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQub3JpZ2luYWxVUkxTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnJlZmVycmVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50YXJnZXQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kb2N1bWVudFN0YXRlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQudmFsaWRhdGVEb2N1bWVudFN0YXRlKCk7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zdGF0ZU9iamVjdERhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaXRlbVNlcXVlbmNlTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5zaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VTY2FsZUZhY3RvcikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5odHRwQm9keSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmV4cG9zZWRDb250ZW50UmVjdCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudW5vYnNjdXJlZENvbnRlbnRSZWN0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5taW5pbXVtTGF5b3V0U2l6ZUlu
U2Nyb2xsVmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5jb250ZW50U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2NhbGVJ
c0luaXRpYWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9ic2N1cmVkSW5z
ZXRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hpbGRy
ZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI0MCwxNCArMjQwLDE0IEBAIE9w
dGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
OjpkZWNvZGUoSVBDOjpEZWNvZGVyCiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFpZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5wYWdlU3RhdGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuaGFzQ2FjaGVkUGFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
MjYzLDExICsyNjMsMTEgQEAgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0U3RhdGU+IEJhY2tGb3J3
YXJkTGlzdFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKICAgICBPcHRpb25hbDxW
ZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPj4gaXRlbXM7CiAgICAgZGVjb2RlciA+PiBp
dGVtczsKICAgICBpZiAoIWl0ZW1zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGN1cnJl
bnRJbmRleDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRJbmRleCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4ge3sgV1RGTW92ZSgqaXRlbXMpLCBXVEZNb3ZlKGN1cnJlbnRJbmRleCkgfX07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKaW5kZXgg
M2IyZDM0ZDE4ZTczZjgzMTEwYzNiZWVlNmUxNTI2ZWU5NTA1NTFhYy4uYmE5OTM3YTlkYzgxMzM4
NTJjMWZjMzVmODg5Y2MxMWFmNmZiYzhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Rv
dWNoQmFyTWVudUl0ZW1EYXRhLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIE9wdGlvbmFsPFRvdWNo
QmFyTWVudUl0ZW1EYXRhPiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlCiB7CiAgICAgVG91Y2hCYXJNZW51SXRlbURhdGEgcmVzdWx0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnByaW9yaXR5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsKFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKHJl
c3VsdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2Fj
dGlvbklELmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgKaW5kZXggZGMx
NmM3NzhhMGJhMDAzYjFlMzY2ZmE0MDYyMmU1NjlhZDAyMmZmMC4uNTM2NDA4OTQwOGUxNjFjZmIz
YzAwNmE0MjMzMmZjNjgzZTMyNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VHJhbnNhY3Rpb25JRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0aW9uSUQu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgIGlmICgh
aWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBBU1NFUlQoaXNWYWxpZElkZW50aWZpZXIo
KmlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIE1vbm90b25pY09iamVjdElkZW50aWZpZXIg
eyAqaWRlbnRpZmllciB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAppbmRleCBkYzg1MmE3MDgwYjkxNjM0Y2IyOWRiNTNmOWY5
MDdkNzhmODkwN2U5Li5hY2MyZWI4OTM0YWMxYzc4YWIwODFiMmQyMTY1YjhkNTQ5NzY0MjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3Bw
CkBAIC01MCwzMiArNTAsMzIgQEAgT3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFtZXRlcnM+IFVS
TFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGhhbmRsZXJJZGVu
dGlmaWVyOwogICAgIGlmICghaGFuZGxlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFza0lkZW50aWZp
ZXI7CiAgICAgaWYgKCF0YXNrSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxib29sPiBoYXNIVFRQQm9keTsKICAgICBkZWNvZGVyID4+IGhhc0hUVFBC
b2R5OwogICAgIGlmICghaGFzSFRUUEJvZHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCpoYXNIVFRQQm9keSkgewog
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IGZvcm1EYXRhID0gV2ViQ29yZTo6Rm9y
bURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9
CiAgICAgCiAgICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOwogICAgIGRlY29k
ZXIgPj4gZnJhbWVJbmZvOwogICAgIGlmICghZnJhbWVJbmZvKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
CiAgICAgICAgIFdURk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAKaW5k
ZXggYWU5NGIwYWRkNWM4M2M0MzdiZmQ1NDU5ODQ0M2YxYWM4ZjdkZmUxZi4uZTNjOWNkYmI2Yjdm
YzAyZjMzZDhmYmI4Y2RiOTg1YWYxYTBjZDVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAKQEAgLTQ5LDMz
ICs0OSwzMyBAQCBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzPiBVc2Vy
Q29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZAogICAgIE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVu
dGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0
b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+PiB1c2VyQ29udGVu
dFdvcmxkczsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50V29ybGRzOwogICAgIGlmICghdXNl
ckNvbnRlbnRXb3JsZHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNlclNjcmlwdERh
dGE+PiB1c2VyU2NyaXB0czsKICAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzOwogICAgIGlmICgh
dXNlclNjcmlwdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYlVzZXJTdHlsZVNo
ZWV0RGF0YT4+IHVzZXJTdHlsZVNoZWV0czsKICAgICBkZWNvZGVyID4+IHVzZXJTdHlsZVNoZWV0
czsKICAgICBpZiAoIXVzZXJTdHlsZVNoZWV0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0
b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPj4gbWVzc2FnZUhhbmRsZXJzOwogICAgIGRl
Y29kZXIgPj4gbWVzc2FnZUhhbmRsZXJzOwogICAgIGlmICghbWVzc2FnZUhhbmRsZXJzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+PiBjb250
ZW50UnVsZUxpc3RzOwogICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsKICAgICBpZiAo
IWNvbnRlbnRSdWxlTGlzdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIHJldHVybiB7ewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaAppbmRleCA0NDc1Yzhk
MDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgzMmMzNDIxLi42YjZlMWVlYTkxNDQxZTk4MDg1MGFk
MWUzYzRjNjdhZGE3NGFmMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RDb3VudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RDb3VudHMuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHN0cnVjdCBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMgewogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gYmFja0NvdW50Owog
ICAgICAgICBkZWNvZGVyID4+IGJhY2tDb3VudDsKICAgICAgICAgaWYgKCFiYWNrQ291bnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZm9yd2FyZENvdW50OwogICAg
ICAgICBkZWNvZGVyID4+IGZvcndhcmRDb3VudDsKICAgICAgICAgaWYgKCFmb3J3YXJkQ291bnQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsg
KmJhY2tDb3VudCwgKmZvcndhcmRDb3VudCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3BwCmluZGV4IGU4
YjAzZDY5ZTVjZDIxYTg5NzI2NDVjMDI4MDMyMTMyNTZmNTI0YTQuLjkyYzg2MzcwNGQ5N2ZhYWZj
MjgxYTM5NzQxNjExMjM1ZGEwYjMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtNjIsNTMgKzYyLDUz
IEBAIE9wdGlvbmFsPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhOjpkZWNvZGUoCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5k
bGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBkYXRhID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxl
LmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAKICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0OwogICAgIGRl
Y29kZXIgPj4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0OwogICAgIGlmICghY29u
ZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGFjdGlvbnNPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBhY3Rpb25zT2Zmc2V0OwogICAgIGlm
ICghYWN0aW9uc09mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBhY3Rpb25zU2l6
ZTsKICAgICBkZWNvZGVyID4+IGFjdGlvbnNTaXplOwogICAgIGlmICghYWN0aW9uc1NpemUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZU9mZnNldDsKICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZTsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlU2l6ZTsKICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZU9mZnNldDsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlT2Zm
c2V0OwogICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
OwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplOwogICAg
IGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKICAgICBkZWNvZGVyID4+
IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKICAgICBpZiAoIXRvcFVSTEZpbHRlcnNCeXRl
Y29kZU9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJzQnl0
ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAg
ICBpZiAoIXRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgV1RGTW92ZShkYXRhKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4
dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggMGM1ZGM3OTU2YThlMzE2NjQwOGIwMDJlMDA1ZjdiNTRi
NzA2NWViYy4uNjRjMTU3Y2U0N2M5ZGIwNDFjMzE4OTdkODFiY2E2YjA3N2I3ZmE3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKQEAgLTEx
NywzMiArMTE3LDMyIEBAIE9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRl
eHRNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlCiB7CiAgICAgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb247CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIHRpdGxlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGl0bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBjaGVja2VkOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoY2hlY2tlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGVuYWJsZWQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShlbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIGluZGVudGF0aW9u
TGV2ZWw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmRlbnRhdGlvbkxldmVsKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPj4gc3VibWVudTsKICAg
ICBkZWNvZGVyID4+IHN1Ym1lbnU7CiAgICAgaWYgKCFzdWJtZW51KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNo
ICh0eXBlKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBY3Rpb25UeXBlOgpAQCAtMTU1LDcgKzE1NSw3
IEBAIE9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRNZW51SXRlbURh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBraXRJ
dGVtcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgY29yZUl0ZW1WZWN0
b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApp
bmRleCAzNWMyY2QzM2RmM2QzNzMxNjIwMzc0NjgxYTEzMWFlNTJlMDk5ZTFiLi5mMWE4YWM4ODVm
NDYxMDBmZGM2NTY1ODhiZGExNzE5MmVhNjY0M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4MywxMiArMjgzLDEyIEBAIE9wdGlv
bmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdlPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0aW9uOwogICAg
IGRlY29kZXIgPj4gbG9jYXRpb247CiAgICAgaWYgKCFsb2NhdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBsZW5ndGg7CiAgICAgZGVjb2RlciA+PiBsZW5ndGg7CiAgICAgaWYgKCFs
ZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICpsb2NhdGlvbiwgKmxlbmd0aCB9IH07CiB9CkBA
IC0zMDQsMTIgKzMwNCwxMiBAQCBhdXRvIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OkNh
Y2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpbwogICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBp
ZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAg
IGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7
IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpuYW1lKSB9fTsKIH0KQEAgLTM0NSw2MCAr
MzQ1LDYwIEBAIE9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3VtZW50Q29kZXI8
RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZShECiB7CiAgICAgdWludDY0X3QgaWRlbnRp
ZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRmV0
Y2hIZWFkZXJzOjpHdWFyZCByZXF1ZXN0SGVhZGVyc0d1YXJkOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVxdWVzdEhlYWRlcnNHdWFyZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RmV0Y2hPcHRpb25zPiBvcHRpb25zOwogICAgIGRlY29kZXIg
Pj4gb3B0aW9uczsKICAgICBpZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgcmVmZXJyZXI7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGZXRjaEhlYWRl
cnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzcG9uc2VIZWFkZXJzR3VhcmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHVpbnQ2NF90IHVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHVwZGF0ZVJlc3BvbnNlQ291bnRlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCByZXNwb25zZUJvZHlT
aXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VCb2R5U2l6ZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHJlc3BvbnNlQm9keTsKICAg
ICBib29sIGhhc1NoYXJlZEJ1ZmZlckJvZHk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNT
aGFyZWRCdWZmZXJCb2R5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJCb2R5KSB7CiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoYnVm
ZmVyKQogICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBoYXNGb3JtRGF0YUJvZHk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzRm9ybURhdGFCb2R5KSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoaGFzRm9ybURhdGFCb2R5KSB7CiAgICAgICAgICAgICBhdXRvIGZvcm1EYXRhID0gRm9ybURh
dGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICghZm9ybURhdGEpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gZm9ybURhdGEucmVsZWFzZU5v
bk51bGwoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMiw3ICs2MzIsNyBAQCBPcHRpb25hbDxG
bG9hdFBvaW50PiBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQ7CiAgICAgaWYgKCFTaW1wbGVBcmd1
bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIGZsb2F0UG9pbnQ7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBPcHRpb25hbDxG
bG9hdFJlY3Q+IEFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0UmVjdDsKICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50
Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0UmVjdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIGZsb2F0UmVjdDsKIH0KIApAQCAtNzEzLDcgKzcxMyw3IEBAIE9wdGlvbmFsPFZpZXdwb3J0
QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKERlY29k
ZXImIGRlCiB7CiAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHM7CiAgICAg
aWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVjb2RlKGRlY29k
ZXIsIHZpZXdwb3J0QXJndW1lbnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmlld3BvcnRBcmd1bWVudHM7
CiB9CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gQXJn
dW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElu
dFBvaW50IGludFBvaW50OwogICAgIGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRQb2ludD46
OmRlY29kZShkZWNvZGVyLCBpbnRQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGludFBvaW50OwogfQog
CkBAIC03NjEsNyArNzYxLDcgQEAgT3B0aW9uYWw8SW50UmVjdD4gQXJndW1lbnRDb2RlcjxJbnRS
ZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW50UmVjdCByZWN0OwogICAg
IGlmICghZGVjb2RlKGRlY29kZXIsIHJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZWN0OwogfQogCkBA
IC03ODUsNyArNzg1LDcgQEAgT3B0aW9uYWw8SW50U2l6ZT4gQXJndW1lbnRDb2RlcjxJbnRTaXpl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW50U2l6ZSBpbnRTaXplOwogICAg
IGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2RlKGRlY29kZXIsIGludFNp
emUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBpbnRTaXplOwogfQogCkBAIC04MjAsMTIgKzgyMCwxMiBAQCBP
cHRpb25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNoPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVj
b2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8
V2FsbFRpbWU+IHRpbWU7CiAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgIGlmICghdGltZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RyaW5nKSwgV1RGTW92ZSgqdGltZSkgfX07
CiB9CkBAIC04ODAsMTEgKzg4MCwxMSBAQCBPcHRpb25hbDxNaW1lQ2xhc3NJbmZvPiBBcmd1bWVu
dENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBN
aW1lQ2xhc3NJbmZvIG1pbWVDbGFzc0luZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtaW1l
Q2xhc3NJbmZvLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNsYXNzSW5m
by5kZXNjKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVDbGFzc0luZm8uZXh0ZW5z
aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbWltZUNsYXNzSW5mbzsKIH0KQEAgLTkwOCwyMiArOTA4
LDIyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkluZm8+IEFyZ3VtZW50Q29kZXI8UGx1Z2lu
SW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyCiB7CiAgICAgUGx1Z2luSW5mbyBwbHVnaW5J
bmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5uYW1lKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8uZmlsZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwbHVnaW5JbmZvLmRlc2MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1
Z2luSW5mby5taW1lcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLmlz
QXBwbGljYXRpb25QbHVnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5m
by5jbGllbnRMb2FkUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbklu
Zm8uYnVuZGxlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGx1Z2luSW5mby52ZXJzaW9uU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHBsdWdpbkluZm87CkBAIC0xMTIyLDMxICsxMTIyLDMxIEBAIE9wdGlvbmFsPFJlZjxG
b250Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBPcHRpb25hbDxGb250OjpPcmlnaW4+IG9yaWdpbjsKICAgICBkZWNvZGVyID4+IG9yaWdp
bjsKICAgICBpZiAoIW9yaWdpbi5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udDo6
SW50ZXJzdGl0aWFsPiBpc0ludGVyc3RpdGlhbDsKICAgICBkZWNvZGVyID4+IGlzSW50ZXJzdGl0
aWFsOwogICAgIGlmICghaXNJbnRlcnN0aXRpYWwuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZvbnQ6OlZpc2liaWxpdHk+IHZpc2liaWxpdHk7CiAgICAgZGVjb2RlciA+PiB2aXNpYmls
aXR5OwogICAgIGlmICghdmlzaWJpbGl0eS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udDo6T3JpZW50YXRpb25GYWxsYmFjaz4gaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjazsKICAg
ICBkZWNvZGVyID4+IGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7CiAgICAgaWYgKCFpc1RleHRP
cmllbnRhdGlvbkZhbGxiYWNrLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcjsKICAgICBpZiAoIXJlbmRlcmlu
Z1JlcnNvdWNlSWRlbnRpZmllci5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwbGF0Zm9ybURh
dGEgPSBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rlcik7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEu
aGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhLnZh
bHVlKCksIG9yaWdpbi52YWx1ZSgpLCBpc0ludGVyc3RpdGlhbC52YWx1ZSgpLCB2aXNpYmlsaXR5
LnZhbHVlKCksIGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2sudmFsdWUoKSwgcmVuZGVyaW5nUmVy
c291Y2VJZGVudGlmaWVyKTsKIH0KQEAgLTEzMjgsNjAgKzEzMjgsNjAgQEAgT3B0aW9uYWw8U2Vs
ZWN0aW9uR2VvbWV0cnk+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+OjpkZWNvZGUo
RGVjb2RlciYgZGUKICAgICBTZWxlY3Rpb25HZW9tZXRyeSBzZWxlY3Rpb25HZW9tZXRyeTsKICAg
ICBGbG9hdFF1YWQgcXVhZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHF1YWQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHNlbGVjdGlvbkdlb21ldHJ5LnNldFF1YWQocXVhZCk7CiAKICAgICBPcHRpb25hbDxTZWxlY3Rp
b25SZW5kZXJpbmdCZWhhdmlvcj4gYmVoYXZpb3I7CiAgICAgZGVjb2RlciA+PiBiZWhhdmlvcjsK
ICAgICBpZiAoIWJlaGF2aW9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldEJlaGF2aW9y
KCpiZWhhdmlvcik7CiAKICAgICB1aW50MzJfdCBkaXJlY3Rpb247CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkaXJlY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldERpcmVjdGlv
bigoVGV4dERpcmVjdGlvbilkaXJlY3Rpb24pOwogCiAgICAgaW50IGludFZhbHVlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNl
dE1pblgoaW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0TWF4WChpbnRWYWx1ZSk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGludFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRNYXhZ
KGludFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHNlbGVjdGlvbkdlb21ldHJ5LnNldExpbmVOdW1iZXIoaW50VmFsdWUpOwogCiAgICAgYm9vbCBi
b29sVmFsdWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNl
bGVjdGlvbkdlb21ldHJ5LnNldElzTGluZUJyZWFrKGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0SXNG
aXJzdE9uTGluZShib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFs
dWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzTGFzdE9uTGluZShib29sVmFsdWUp
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlv
bkdlb21ldHJ5LnNldENvbnRhaW5zU3RhcnQoYm9vbFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRDb250YWlu
c0VuZChib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzSG9yaXpvbnRhbChib29sVmFsdWUpOwogCiAg
ICAgcmV0dXJuIHNlbGVjdGlvbkdlb21ldHJ5OwpAQCAtMTUwNiwxNSArMTUwNiwxNSBAQCBPcHRp
b25hbDxDb21wb3NpdGlvblVuZGVybGluZT4gQXJndW1lbnRDb2RlcjxDb21wb3NpdGlvblVuZGVy
bGluZT46OmRlY29kZShEZWNvZAogICAgIENvbXBvc2l0aW9uVW5kZXJsaW5lIHVuZGVybGluZTsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodW5kZXJsaW5lLnN0YXJ0T2Zmc2V0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVuZGVybGluZS5lbmRPZmZzZXQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodW5kZXJsaW5lLnRoaWNrKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVuZGVybGluZS5jb21wb3NpdGlvblVuZGVybGluZUNvbG9yKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVuZGVybGluZS5jb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdW5kZXJsaW5l
OwogfQpAQCAtMTgxMCwxMiArMTgxMCwxMiBAQCBPcHRpb25hbDxEaWN0YXRpb25BbHRlcm5hdGl2
ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShEZWNvZAogICAg
IE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwog
ICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxEaWN0YXRpb25Db250ZXh0PiBjb250
ZXh0OwogICAgIGRlY29kZXIgPj4gY29udGV4dDsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4ge3sgKnJhbmdlLCAqY29udGV4dCB9fTsKIH0KQEAgLTE5MTUsMTcgKzE5MTUsMTcg
QEAgT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFyRGV0YWlsPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJh
bmdlOwogICAgIGRlY29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwogICAgIGRlY29kZXIgPj4gZ3Vlc3NlczsK
ICAgICBpZiAoIWd1ZXNzZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJEZXNjcmlw
dGlvbjsKICAgICBkZWNvZGVyID4+IHVzZXJEZXNjcmlwdGlvbjsKICAgICBpZiAoIXVzZXJEZXNj
cmlwdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpndWVzc2VzKSwg
V1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CkBAIC0xOTcyLDIyICsxOTcyLDIyIEBA
IE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKIHsKICAgICBUZXh0Q2hlY2tpbmdUeXBlIHR5cGU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxDaGFy
YWN0ZXJSYW5nZT4gcmFuZ2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJhbmdl
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdyYW1tYXJEZXRhaWw+PiBkZXRhaWxzOwogICAg
IGRlY29kZXIgPj4gZGV0YWlsczsKICAgICBpZiAoIWRldGFpbHMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxTdHJpbmc+IHJlcGxhY2VtZW50OwogICAgIGRlY29kZXIgPj4gcmVwbGFjZW1lbnQ7CiAgICAg
aWYgKCFyZXBsYWNlbWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgdHlwZSwgKnJhbmdlLCBXVEZN
b3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KQEAgLTI0MDcsMjYg
KzI0MDcsMjYgQEAgT3B0aW9uYWw8QmxvYlBhcnQ+IEFyZ3VtZW50Q29kZXI8QmxvYlBhcnQ+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxCbG9iUGFydDo6VHlwZT4gdHlw
ZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNo
ICgqdHlwZSkgewogICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6OkRhdGE6IHsKICAgICAgICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOwogICAgICAgICBkZWNvZGVyID4+IGRhdGE7CiAg
ICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQmxvYlBhcnQoV1RG
TW92ZSgqZGF0YSkpOwogICAgIH0KICAgICBjYXNlIEJsb2JQYXJ0OjpUeXBlOjpCbG9iOiB7CiAg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gQmxvYlBhcnQodXJsKTsKICAgICB9CiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dEluZGljYXRvckRh
dGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dEluZGljYXRvckRhdGEmIHRl
eHRJbmRpY2F0b3JEYXRhKQpAQCAtMjQ0OSwzNyArMjQ0OSwzNyBAQCBPcHRpb25hbDxUZXh0SW5k
aWNhdG9yRGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRlY29kZShEZWNv
ZGVyJiBkZQogewogICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3JEYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEuc2VsZWN0aW9uUmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRp
Y2F0b3JEYXRhLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0UmVjdHNJbkJvdW5k
aW5nUmVjdENvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dElu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29v
cmRpbmF0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0
YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHRleHRJbmRpY2F0b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLnByZXNlbnRhdGlvblRyYW5zaXRp
b24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS5vcHRp
b25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVyLCB0ZXh0SW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbElt
YWdlKGRlY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRpY2F0
b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRl
eHRJbmRpY2F0b3JEYXRhOwogfQpAQCAtMjY0MywxMDYgKzI2NDMsMTA2IEBAIE9wdGlvbmFsPFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz46OmRlY29kZShECiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJlZ2lzdHJhYmxl
RG9tYWluOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmFibGVEb21haW47CiAgICAgaWYgKCFyZWdp
c3RyYWJsZURvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9tYWluID0gV1RG
TW92ZSgqcmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgZG91YmxlIGxhc3RTZWVuVGltZUFzRG91
YmxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdFNlZW5UaW1lQXNEb3VibGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobGFzdFNl
ZW5UaW1lQXNEb3VibGUpOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlKTsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBkZWNvZGVy
ID4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBpZiAoIXN0b3JhZ2VB
Y2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWlucyA9IFdURk1vdmUoKnN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZy
YW1lRG9tYWlucyk7CiAKICAgICAvLyBUb3AgZnJhbWUgc3RhdHMKICAgICBPcHRpb25hbDxIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbzsKICAgICBk
ZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgaWYgKCF0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUbyA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogCiAgICAgT3B0aW9u
YWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bTsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsKICAgICBpZiAo
IXRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RzRnJvbSA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJv
bSk7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVM
b2FkZWRUaGlyZFBhcnR5U2NyaXB0czsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lTG9hZGVkVGhp
cmRQYXJ0eVNjcmlwdHM7CiAgICAgaWYgKCF0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyA9IFdU
Rk1vdmUoKnRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAgLy8gU3ViZnJh
bWUgc3RhdHMKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBkZWNvZGVyID4+IHN1YmZyYW1lVW5kZXJUb3BG
cmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyA9IFdURk1vdmUoKnN1
YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMK
ICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lRG9tYWluczsKICAgICBkZWNvZGVyID4+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnM7CiAgICAgaWYgKCFzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyA9IFdURk1vdmUo
KnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgT3B0aW9uYWw8SGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CiAgICAg
ZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGlmICghc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8gPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsK
IAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c0Zyb207CiAgICAgaWYgKCFzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSBXVEZNb3ZlKCpz
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCiAgICAgLy8gUHJldmFsZW50IFJlc291
cmNlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3Vy
Y2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzVmVyeVByZXZh
bGVudFJlc291cmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3MuZGF0YVJlY29yZHNSZW1vdmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoV0VCX0FQSV9TVEFU
SVNUSUNTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5mb250c0ZhaWxlZFRv
TG9hZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmZvbnRz
U3VjY2Vzc2Z1bGx5TG9hZGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2VkV2ViQVBJcykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmNhbnZhc0FjdGl2
aXR5UmVjb3JkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
bmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAog
ICAgIHJldHVybiBzdGF0aXN0aWNzOwpAQCAtMjg3NywxMiArMjg3NywxMiBAQCBPcHRpb25hbDxN
ZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46
OmRlY29kZShEZWNvZAogICAgIE9wdGlvbmFsPFN0cmluZz4gZGlzcGxheU5hbWU7CiAgICAgZGVj
b2RlciA+PiBkaXNwbGF5TmFtZTsKICAgICBpZiAoIWRpc3BsYXlOYW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB0eXBlOwogICAgIGRlY29kZXIg
Pj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7IFdURk1vdmUo
KmRpc3BsYXlOYW1lKSwgV1RGTW92ZSgqdHlwZSkgfX07CiB9CkBAIC0yOTE3LDcgKzI5MTcsNyBA
QCBPcHRpb25hbDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+OjpkZWNvZGUoRAogewogICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
b3JpZ2luOwogfQogCkBAIC0yOTM5LDMyICsyOTM5LDMyIEBAIE9wdGlvbmFsPEZvbnRBdHRyaWJ1
dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgRm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShhdHRyaWJ1dGVzLmZvcmVncm91bmRDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZm9udFNoYWRvdykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy50ZXh0TGlzdHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhdHRyaWJ1dGVzLmhvcml6b250YWxBbGlnbm1lbnQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN1YnNjcmlwdE9yU3VwZXJzY3JpcHQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ym9vbCBoYXNQbGF0Zm9ybURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9y
bURhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCiAgICAgICAgIHJldHVybiBkZWNv
ZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgYXR0cmlidXRlcyk7CiAKQEAgLTI5ODIsMTUgKzI5ODIs
MTUgQEAgT3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGEKIHsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG1p
bWVUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1pbWVUeXBlKSwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSB9
fTsKIH0KQEAgLTMwMTIsMTEgKzMwMTIsMTEgQEAgT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm8KIHsK
ICAgICBib29sIGhhc1BsYXRmb3JtRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1Bs
YXRmb3JtRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
VmFsdWU6OlBsYXRmb3JtVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQogICAgICAgICByZXR1cm4gZGVjb2RlUGxh
dGZvcm1EYXRhKGRlY29kZXIsIHR5cGUpOwpAQCAtMzAzNSw3ICszMDM1LDcgQEAgT3B0aW9uYWw8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWMKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAg
aWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBidWZmZXI7CiB9CkBAIC0zMDQ5LDcgKzMwNDksNyBAQCBPcHRpb25hbDxSZWY8U2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShE
ZQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
YnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CkBAIC0zMDc4LDEwICszMDc4LDEwIEBAIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hh
cmVhYmxlUmVzb3VyY2VIYW5kCiB7CiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBoYW5k
bGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpIHx8IGhhbmRsZS5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHsgV1RG
TW92ZShidWZmZXIpIH07CiB9CiAjZW5kaWYKQEAgLTMxMDYsMTQgKzMxMDYsMTQgQEAgT3B0aW9u
YWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj46OmRlY29kZShEZWMKICAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJlc291cmNl
SGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICAgICBp
ZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCppc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlKQogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHsgV1RGTW92ZShidWZm
ZXIpIH07CiB9CkBAIC0zMTMxLDEzICszMTMxLDEzIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkNETUlu
c3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
CiB7CiAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlwZSB0eXBlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKKyAgICByZXR1
cm4gc3RkOjptYWtlX29wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogCkBAIC0zMTY2LDM0ICszMTY2LDM0IEBAIE9wdGlvbmFsPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpHcmFwaGljc0NvCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dHJpYnV0
ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYXR0cmlidXRlcy5zdGVuY2lsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJp
YnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0
dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMud2ViR0xWZXJzaW9uKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2lmIEVO
QUJMRShXRUJYUikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMueHJDb21wYXRp
YmxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQpAQCAtMzIxNSwxMSAr
MzIxNSwxMSBAQCBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5m
bz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljcwogewogICAgIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhY3RpdmVJbmZvLm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZl
SW5mby50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8uc2l6ZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGFjdGl2ZUluZm87CiB9CiAKQEAgLTMyMzcsMTIgKzMyMzcsMTIgQEAg
T3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz4gQXJndW1lbnRDb2RlcjxJ
bWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWMKIHsKICAgICBJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0
b3JJbmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCByZXN1
bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UXVhZD4+IG5vcm1hbGl6ZWRRdWFk
czsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkczsKICAgICBpZiAoIW5vcm1hbGl6ZWRR
dWFkcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJlc3VsdC5ub3JtYWxpemVkUXVhZHMgPSBXVEZNb3ZlKCpub3JtYWxp
emVkUXVhZHMpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGZiMmE2ZmI5
MTRjN2Y5NmRjYzkzNzQzN2EwMjQ4Mzk5OTdiNTcyYjUuLmFiODY5YjQxMDc3YjJkYmEyODFkNDJj
MTQ2MWQ5ZWUzZDlhZTg4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xOTIsMTYzICsxOTIsMTYzIEBAIE9wdGlvbmFs
PFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kCiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdTaXplKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnN0b3JlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxE
cmF3aW5nQXJlYUlkZW50aWZpZXI+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBpZiAoIWRyYXdpbmdBcmVhSWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciA9ICpkcmF3aW5nQXJl
YUlkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gd2ViUGFn
ZVByb3h5SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHdlYlBhZ2VQcm94eUlkZW50aWZpZXI7
CiAgICAgaWYgKCF3ZWJQYWdlUHJveHlJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMud2Vi
UGFnZVByb3h5SWRlbnRpZmllciA9IFdURk1vdmUoKndlYlBhZ2VQcm94eUlkZW50aWZpZXIpOwog
ICAgIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IHBhZ2VHcm91cERhdGE7CiAgICAgZGVjb2Rl
ciA+PiBwYWdlR3JvdXBEYXRhOwogICAgIGlmICghcGFnZUdyb3VwRGF0YSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJh
bWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaXNFZGl0YWJsZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51c2VGaXhlZExheW91dCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9s
bGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5hdGlvbk1v
ZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
cGFnZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmdhcEJl
dHdlZW5QYWdlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2lu
YXRpb25MaW5lR3JpZEVuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB1c2VyQWdl
bnQ7CiAgICAgZGVjb2RlciA+PiB1c2VyQWdlbnQ7CiAgICAgaWYgKCF1c2VyQWdlbnQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy51c2VyQWdlbnQgPSBXVEZNb3ZlKCp1c2VyQWdlbnQpOwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdDsKICAgICBkZWNv
ZGVyID4+IGl0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3Q7CiAgICAgaWYgKCFpdGVt
U3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuaXRlbVN0
YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdCA9ICppdGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlB
UElSZXF1ZXN0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZT4+IGl0ZW1TdGF0ZXM7CiAgICAgZGVjb2RlciA+PiBpdGVtU3RhdGVzOwogICAgIGlmICghaXRl
bVN0YXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMgPSBXVEZNb3ZlKCppdGVtU3Rh
dGVzKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aXNpdGVkTGlua1Rh
YmxlSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5jYW5SdW5Nb2RhbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmRldmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudmlld1NjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudGV4dFpvb21GYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5wYWdlWm9vbUZhY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnRvcENvbnRlbnRJbnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
Lm1lZGlhVm9sdW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6
Ok11dGVkU3RhdGVGbGFncz4gbXV0ZWRTdGF0ZUZsYWdzOwogICAgIGRlY29kZXIgPj4gbXV0ZWRT
dGF0ZUZsYWdzOwogICAgIGlmICghbXV0ZWRTdGF0ZUZsYWdzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
bXV0ZWQgPSAqbXV0ZWRTdGF0ZUZsYWdzOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaXplVG9Db250ZW50QXV0b1NpemVN
YXhpbXVtU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmF1dG9T
aXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Nyb2xsUGlubmluZ0JlaGF2aW9yKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQzMl90Pj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
OwogICAgIGRlY29kZXIgPj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGlmICghc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
ID0gV1RGTW92ZSgqc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWltZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQ
cm92aWRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb250cm9s
bGVkQnlBdXRvbWF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
aXNQcm9jZXNzU3dhcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVz
ZURhcmtBcHBlYXJhbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
dXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4g
aGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29kZXIgPj4gaGFzUmVzb3VyY2VMb2FkQ2xp
ZW50OwogICAgIGlmICghaGFzUmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
aGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBPcHRpb25hbDxPcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+PiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKICAgICBp
ZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb2xvclNwYWNlID0gV1RGTW92ZSgq
Y29sb3JTcGFjZSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZVN5c3Rl
bUFwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1p
dHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3cG9ydENvbmZp
Z3VyYXRpb25WaWV3TGF5b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbkxheW91dFNpemVTY2FsZUZhY3RvcikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbk1p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdTaXplKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25h
bDxPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4+IG92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogICAg
IGlmICghb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMgPSBXVEZNb3ZlKCpvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRz
KTsKICNlbmRpZgogCkBAIC0zNTYsNjEgKzM1Niw2MSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Pj4g
YXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gYXR0YWNo
bWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghYXR0YWNobWVudEVsZW1lbnRF
eHRlbnNpb25IYW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRl
bnNpb25IYW5kbGVzID0gV1RGTW92ZSgqYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVz
KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmF2YWlsYWJsZVNjcmVlblNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZVNjcmVlblNpemUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy50ZXh0QXV0b3NpemluZ1dpZHRoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRpb24pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5rZXlib2FyZElzQXR0YWNoZWQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jYW5TaG93V2hpbGVMb2NrZWQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pc0NhcHR1cmluZ1NjcmVlbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBGSVhNRSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVk
IHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgogICAgIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2Rl
ciA+PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFtZWRpYUV4dGVuc2lvbkhhbmRs
ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpt
ZWRpYUV4dGVuc2lvbkhhbmRsZXMpOwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4g
bWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFtZWRpYUlPS2l0RXh0ZW5zaW9u
SGFuZGxlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzID0g
V1RGTW92ZSgqbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIC8vIEZJWE1FKDIwNzcx
Nik6IEVuZCByZWdpb24gdG8gcmVtb3ZlLgogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+
IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdUlPS2l0RXh0ZW5zaW9uSGFu
ZGxlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1v
dmUoKmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2Rl
ciA+PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdU1hY2hFeHRlbnNpb25I
YW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZN
b3ZlKCpncHVNYWNoRXh0ZW5zaW9uSGFuZGxlcyk7CiAjZW5kaWYKIApAQCAtNDE4LDE4NSArNDE4
LDE4NSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGRl
Y29kZXIgPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFmb250TWFjaEV4dGVu
c2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICNpZiBIQVZFKEFQ
UF9BQ0NFTlRfQ09MT1JTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hY2Nl
bnRDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShXUEVfUkVOREVSRVIpCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
bmF0aXZlV2luZG93SGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vYnNlcnZlZExheW91dE1p
bGVzdG9uZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPGRv
dWJsZT4+IGNwdUxpbWl0OwogICAgIGRlY29kZXIgPj4gY3B1TGltaXQ7CiAgICAgaWYgKCFjcHVM
aW1pdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNwdUxpbWl0ID0gV1RGTW92ZSgqY3B1TGltaXQpOwog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdXJsU2NoZW1lc1dpdGhMZWdh
Y3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGRlY29kZXIgPj4gdXJsU2NoZW1lc1dpdGhM
ZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGlmICghdXJsU2NoZW1lc1dpdGhMZWdh
Y3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1dp
dGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzID0gV1RGTW92ZSgqdXJsU2NoZW1lc1dpdGhM
ZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKTsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0Pj4gYXBwbGljYXRpb25NYW5pZmVzdDsKICAgICBkZWNvZGVyID4+IGFwcGxpY2F0aW9uTWFu
aWZlc3Q7CiAgICAgaWYgKCFhcHBsaWNhdGlvbk1hbmlmZXN0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YXBwbGljYXRpb25NYW5pZmVzdCA9IFdURk1vdmUoKmFwcGxpY2F0aW9uTWFuaWZlc3QpOwogI2Vu
ZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5lZWRzRm9udEF0dHJpYnV0
ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljZUNhbmRpZGF0
ZUZpbHRlcmluZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IHVzZXJDb250ZW50Q29udHJv
bGxlclBhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJQYXJh
bWV0ZXJzOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgPSBXVEZNb3ZlKCp1
c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzKTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYkNvcmU6OkNvbG9yPj4gYmFja2dyb3VuZENvbG9yOwogICAgIGRlY29kZXIgPj4gYmFja2dy
b3VuZENvbG9yOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAogICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRl
Y29kZXIgPj4gb2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMub2xkUGFnZUlEID0gV1RGTW92ZSgqb2xkUGFnZUlEKTsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAgZGVjb2RlciA+PiBj
b3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAgaWYgKCFjb3JzRGlzYWJsaW5nUGF0dGVybnMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKCpjb3JzRGlz
YWJsaW5nUGF0dGVybnMpOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gbG9hZHNTdWJyZXNvdXJjZXM7
CiAgICAgZGVjb2RlciA+PiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBpZiAoIWxvYWRzU3VicmVz
b3VyY2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSAqbG9hZHNTdWJy
ZXNvdXJjZXM7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+PiBhbGxv
d2VkTmV0d29ya0hvc3RzOwogICAgIGRlY29kZXIgPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKICAg
ICBpZiAoIWFsbG93ZWROZXR3b3JrSG9zdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5hbGxvd2VkTmV0
d29ya0hvc3RzID0gKmFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBPcHRpb25hbDxib29sPiB1
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHVz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGlmICghdXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1Nob3VsZFdhaXRV
bnRpbE5vdGlmaWNhdGlvbjsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAg
IAogICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIGRlY29kZXIg
Pj4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIGlmICghcHJvY2Vzc0Rpc3BsYXlOYW1lKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMucHJvY2Vzc0Rpc3BsYXlOYW1lID0gV1RGTW92ZSgqcHJvY2Vzc0Rpc3Bs
YXlOYW1lKTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxk
Q2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5VSVByb2Nlc3Mp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVW
aWRlb0luR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9jZXNzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJET01JbkdQ
VVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BVUHJvY2Vzcykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRF
bmFibGVWUDhEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlD
b29raWVCbG9ja2luZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVtZU5hbWUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaHR0cHNVcGdyYWRlRW5hYmxlZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmFsbG93c0RlcHJlY2F0ZWRTeW5jaHJvbm91c1hNTEh0dHBSZXF1ZXN0RHVyaW5nVW5sb2FkKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDA2ZGRiZWY1ZDc1YTNhZDY3NWUxMTIyYzhkMjFh
OTQ1MzM2MThkMjYuLmIwOWYxYzI5YTcyMTA1OTUwMzM3MWM5YWVkY2FhMGE3MzVkNGM1OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC00MSwxMiArNDEs
MTIgQEAgT3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUdyb3VwSUQ7CiAgICAgZGVjb2RlciA+PiBw
YWdlR3JvdXBJRDsKICAgICBpZiAoIXBhZ2VHcm91cElEKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksICpwYWdlR3JvdXBJRCB9fTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCmluZGV4IGNlNzRhYmZm
OTFjYzY5Y2IwOTI4NDM0OTMyNGZhNDgwOGE2M2ZmOTAuLjlkNDQwNmE0MGE0ZmFkZGZiMzBjMmU2
MDE4NWYyOGYzYWEzMmY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBs
YXRmb3JtVG91Y2hQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxhdGZv
cm1Ub3VjaFBvaW50LmNwcApAQCAtNjksMTkgKzY5LDE5IEBAIE9wdGlvbmFsPFdlYlBsYXRmb3Jt
VG91Y2hQb2ludD4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvCiB7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tX2lkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX3N0YXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3NjcmVlblBv
c2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Bvc2l0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JhZGl1cykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yb3RhdGlvbkFuZ2xlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX2ZvcmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAppbmRleCA2ZmI3YTVjYjA0OGVmYTFl
MmJkNWJjNWE3YThhMDY4MjUzYTMyZTBlLi4xMzgxNjVhMzUwNDU0YTVlMzYyZjdhYjY5MDA0YjMy
ZThmZTM5MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAKQEAgLTgwLDM5
ICs4MCwzOSBAQCBPcHRpb25hbDxXZWJQb3B1cEl0ZW0+IFdlYlBvcHVwSXRlbTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBUeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyB0ZXh0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiB0ZXh0RGly
ZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dERpcmVjdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgdG9vbFRpcDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHRvb2xUaXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGFjY2Vzc2li
aWxpdHlUZXh0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWNjZXNzaWJpbGl0eVRleHQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYm9vbCBpc0VuYWJsZWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0VuYWJs
ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYm9vbCBpc0xhYmVsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNM
YWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBib29sIGlzU2VsZWN0ZWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpc1NlbGVjdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyB0eXBlLCB0ZXh0LCB0ZXh0RGlyZWN0
aW9uLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0
LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCA2ZjEy
NWY5ODJkMGNjZTZlMzcxZDZkOGRhYjhkY2UzNjgzYzlmNTE0Li4xZGE1ZTMwYTI0MzZlOWYwZmI1
YzAwMzkwMDIxZTlmNDNlMDhkN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTg1LDY4ICs4NSw2OCBAQCBPcHRp
b25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM6OmRlY29kZShEZQogICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9u
SUQ7CiAgICAgZGVjb2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9uSUQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGRlY29kZXIgPj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICAgICBpZiAoIWFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5
TmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1
YmRpcmVjdG9yeU5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUNhY2hlRGlyZWN0b3J5KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAg
IGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbjsKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwogICAgIGlm
ICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8SGFz
aE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+PiBkb21haW5zV2l0aFN0b3Jh
Z2VBY2Nlc3NRdWlyazsKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoU3RvcmFnZUFjY2Vzc1F1
aXJrOwogICAgIGlmICghZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYK
IAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgICAgIFdURk1v
dmUoKnNlc3Npb25JRCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAppbmRleCAyMjBiNWY5MDA5MmVmZDZj
OTMwYTE4OTAzZDU5ZDlmOWFmYTFkYzdhLi42ODBiNjJmMjE2NzA5MGQwODMwZDg1OWE2ZGVmYzZj
OTcxNzI4ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKQEAgLTQyLDE3ICs0MiwxNyBAQCBPcHRp
b25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwdERhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBPcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50aWZpZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNjcmlwdDsKICAg
ICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CiAgICAgaWYgKCF1c2VyU2NyaXB0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29ybGRJZGVudGlm
aWVyKSwgV1RGTW92ZSgqdXNlclNjcmlwdCkgfX07CiB9CkBAIC02OSwxNiArNjksMTYgQEAgT3B0
aW9uYWw8V2ViVXNlclN0eWxlU2hlZXREYXRhPiBXZWJVc2VyU3R5bGVTaGVldERhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY28KICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxkSWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJTdHlsZVNoZWV0KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKndvcmxkSWRlbnRpZmllciks
IFdURk1vdmUodXNlclN0eWxlU2hlZXQpIH19OwogfQpAQCAtOTYsMTcgKzk2LDE3IEBAIE9wdGlv
bmFsPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJE
YXRhOjpkZWNvZGUoSVBDOjpECiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICBPcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFt
ZTsKICAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKm5hbWUpIH19OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAppbmRleCBi
NTBmOTk5MzZkYzgwMjYxMDg1YTljMDdiMmNlNDhmYTczM2U5MzdkLi5jNGY4M2VjMjY5ZjdmN2Mx
Y2YyNjExMjg5NmM4NGI3OWRkZTIxOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgV2ViV2hl
ZWxFdmVudENvYWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudE5vdyhjb25zdCBXZWJXaGVlbEV2
ZW50JiBldmVudCkKIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ+IFdlYldoZWVsRXZlbnRDb2FsZXNj
ZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQogewogICAgIGlmIChtX3doZWVsRXZlbnRRdWV1ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNvYWxlc2NlZEV2ZW50ID0gbV93aGVlbEV2ZW50UXVl
dWUudGFrZUZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhLmNwcAppbmRleCA3Y2U0ZWIzNGIzZTU1YWYxZWFkNDcwOWRiZDJhOWJjYjVj
ZTBkZWFiLi44ZGZhYTNkYzkwOTA0YTJiYzFmMWFiM2EyMjE3NGJkMWI1MGU5ZTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC00
OSwxNCArNDksMTQgQEAgYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEVudHJ5PgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIGRlY29kZXIgPj4gc2Vj
dXJpdHlPcmlnaW5EYXRhOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
c3VsdC5vcmlnaW4gPSBXVEZNb3ZlKCpzZWN1cml0eU9yaWdpbkRhdGEpOwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5zaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAKaW5kZXggZjA1
OTJkNmI2ZTY2OGI2Yjc3ZTMyY2I1ZWYyMjNlY2JmYTk0ZWFhOC4uY2IyZTY3MGYxNTc0NTUxMzFk
M2VkYTUyZTNiYzMzZjg0YjE4MDJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNjEsODcgKzYxLDg3IEBAIE9wdGlv
bmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjCiAgICAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM+IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICBkZWNvZGVyID4+IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IFdURk1vdmUoKm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycyk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdWlQcm9j
ZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgaWYgKCF1aVByb2Nlc3NDb29raWVTdG9y
YWdlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJ
ZGVudGlmaWVyID0gV1RGTW92ZSgqdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOwog
CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb29raWVTdG9yYWdlUGF0
aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5z
aW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gaW5kZXhlZERh
dGFiYXNlRGlyZWN0b3J5OwogICAgIGlmICghaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92ZSgqaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBk
ZWNvZGVyID4+IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBp
ZiAoIWluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJh
bWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRpcmVjdG9yeTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5ID0g
V1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7CiAgICAgCiAgICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIXNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1l
dGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5RW5hYmxlZDsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQ7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXlFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQpOwogI2VuZGlmCiAKICAgICBPcHRpb25hbDxTdHJpbmc+
IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeSk7
CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2FsU3RvcmFnZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBk
ZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAoIWNhY2hlU3RvcmFnZURp
cmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IFdURk1v
dmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeSk7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBk
ZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IWNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmNhY2hlU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4g
cGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRlY29kZXIgPj4gcGVyT3JpZ2luU3RvcmFnZVF1
b3RhOwogICAgIGlmICghcGVyT3JpZ2luU3RvcmFnZVF1b3RhKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
cGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gKnBlck9yaWdpblN0b3JhZ2VRdW90YTsKIAogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRl
Y29kZXIgPj4gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBpZiAoIXBlclRo
aXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wZXJUaGlyZFBh
cnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gKnBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGE7
CiAgICAgCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVQb2xpY2llc0RhdGEuY3BwCmluZGV4IGQ0Nzc1M2IzOTA0ZDhiMjljZWUyY2FhNWJlZDhm
MjFmMTBmYTQwZDMuLjRhNWZlMTRmMmVhNGY4NThmZGEyYzdkZWE5Y2RmNzhiZjFhM2FlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCkBAIC02MSw4
OSArNjEsODkgQEAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gV2Vic2l0ZVBvbGljaWVz
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxib29sPiBj
b250ZW50QmxvY2tlcnNFbmFibGVkOwogICAgIGRlY29kZXIgPj4gY29udGVudEJsb2NrZXJzRW5h
YmxlZDsKICAgICBpZiAoIWNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRvcGxheVBvbGljeTsKICAgICBkZWNvZGVy
ID4+IGF1dG9wbGF5UG9saWN5OwogICAgIGlmICghYXV0b3BsYXlQb2xpY3kpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU+IGRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzU3RhdGU7CiAgICAgZGVjb2RlciA+PiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc1N0YXRlOwogICAgIGlmICghZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NT
dGF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogICAgIAogICAgIE9wdGlvbmFsPE9wdGlvblNldDxXZWJzaXRlQXV0
b3BsYXlRdWlyaz4+IGFsbG93ZWRBdXRvcGxheVF1aXJrczsKICAgICBkZWNvZGVyID4+IGFsbG93
ZWRBdXRvcGxheVF1aXJrczsKICAgICBpZiAoIWFsbG93ZWRBdXRvcGxheVF1aXJrcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmllbGRzPj4gY3Vz
dG9tSGVhZGVyRmllbGRzOwogICAgIGRlY29kZXIgPj4gY3VzdG9tSGVhZGVyRmllbGRzOwogICAg
IGlmICghY3VzdG9tSGVhZGVyRmllbGRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vic2l0ZVBvcFVw
UG9saWN5PiBwb3BVcFBvbGljeTsKICAgICBkZWNvZGVyID4+IHBvcFVwUG9saWN5OwogICAgIGlm
ICghcG9wVXBQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3RvbVVzZXJBZ2Vu
dDsKICAgICBkZWNvZGVyID4+IGN1c3RvbVVzZXJBZ2VudDsKICAgICBpZiAoIWN1c3RvbVVzZXJB
Z2VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50QXNTaXRlU3Bl
Y2lmaWNRdWlya3M7CiAgICAgZGVjb2RlciA+PiBjdXN0b21Vc2VyQWdlbnRBc1NpdGVTcGVjaWZp
Y1F1aXJrczsKICAgICBpZiAoIWN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybTsKICAgICBk
ZWNvZGVyID4+IGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOwogICAgIGlmICghY3VzdG9tTmF2aWdh
dG9yUGxhdGZvcm0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5
PiBtZXRhVmlld3BvcnRQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtZXRhVmlld3BvcnRQb2xpY3k7
CiAgICAgaWYgKCFtZXRhVmlld3BvcnRQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJzaXRl
TWVkaWFTb3VyY2VQb2xpY3k+IG1lZGlhU291cmNlUG9saWN5OwogICAgIGRlY29kZXIgPj4gbWVk
aWFTb3VyY2VQb2xpY3k7CiAgICAgaWYgKCFtZWRpYVNvdXJjZVBvbGljeSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBPcHRpb25hbDxXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeT4gc2lt
dWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeTsKICAgICBkZWNvZGVyID4+IHNpbXVsYXRl
ZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k7CiAgICAgaWYgKCFzaW11bGF0ZWRNb3VzZUV2ZW50
c0Rpc3BhdGNoUG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vic2l0ZUxlZ2FjeU92ZXJmbG93
U2Nyb2xsaW5nVG91Y2hQb2xpY3k+IGxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k7
CiAgICAgZGVjb2RlciA+PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5OwogICAg
IGlmICghbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcms7CiAgICAgZGVjb2RlciA+
PiBhbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrOwogICAgIGlmICghYWxsb3dDb250ZW50
Q2hhbmdlT2JzZXJ2ZXJRdWlyaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFsbG93c0Nv
bnRlbnRKYXZhU2NyaXB0PiBhbGxvd3NDb250ZW50SmF2YVNjcmlwdDsKICAgICBkZWNvZGVyID4+
IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OwogICAgIGlmICghYWxsb3dzQ29udGVudEphdmFTY3Jp
cHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5PiBtb3VzZUV2
ZW50UG9saWN5OwogICAgIGRlY29kZXIgPj4gbW91c2VFdmVudFBvbGljeTsKICAgICBpZiAoIW1v
dXNlRXZlbnRQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZGVtcG90ZW50TW9kZUF1
dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXM7CiAgICAgZGVjb2RlciA+PiBpZGVtcG90ZW50
TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXM7CiAgICAgaWYgKCFpZGVtcG90ZW50
TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7
CiAgICAgICAgIFdURk1vdmUoKmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAK
aW5kZXggNTdiNjM5NTMyZGExMWE3ZDFlNWU2OGZjNGMxMzM2NGEzODJjOGNiNi4uYWU5Yzk2OWVm
ODliNDViMWVlYzczNjI1M2UwYWZlNDM5MjRkN2FjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCkBAIC0xOTUs
MTggKzE5NSwxOCBAQCBPcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1lbnRDb2RlcjxD
dXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZQogewogICAgIEN1cmxQcm94eVNl
dHRpbmdzOjpNb2RlIG1vZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChtb2RlICE9IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20pCiAgICAgICAg
IHJldHVybiBDdXJsUHJveHlTZXR0aW5ncyB7IG1vZGUgfTsKIAogICAgIFVSTCB1cmw7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGlnbm9yZUhvc3RzOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWdub3JlSG9zdHMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEN1
cmxQcm94eVNldHRpbmdzIHsgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlnbm9yZUhvc3RzKSB9Owog
fQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYKIE9wdGlvbmFsPFNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIs
IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBs
YXRmb3JtVHlwZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCmluZGV4IDMw
OGE3NWFjMTMyNzlhOWYyNzE4MGE2NjM1NWRiZjllMmVmZGFjZTMuLjE4ZmViYjhiMzgyZjY2NDY3
NzIyZDYzZjgyNmUwZmQ1ZDMxYzI5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBPcHRpb25hbDxH
UmVmUHRyPEdWYXJpYW50Pj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50Pj46OmRlY29k
ZShEZWNvZGVyJiBkZQogewogICAgIENTdHJpbmcgdmFyaWFudFR5cGVTdHJpbmc7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh2YXJpYW50VHlwZVN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAodmFyaWFu
dFR5cGVTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBHUmVmUHRyPEdWYXJpYW50Pigp
OwogCiAgICAgaWYgKCFnX3ZhcmlhbnRfdHlwZV9zdHJpbmdfaXNfdmFsaWQodmFyaWFudFR5cGVT
dHJpbmcuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR1VuaXF1ZVB0cjxHVmFyaWFudFR5cGU+IHZh
cmlhbnRUeXBlKGdfdmFyaWFudF90eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5kYXRhKCkpKTsK
ICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXcoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8R1JlZlB0
cjxHVGxzQ2VydGlmaWNhdGU+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRl
Pj46OmRlY28KIHsKICAgICB1aW50MzJfdCBjaGFpbkxlbmd0aDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNoYWluTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2hhaW5MZW5ndGgpCiAgICAgICAg
IHJldHVybiBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4oKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBP
cHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8R1JlZlB0cjxH
VGxzQ2VydGlmaWNhdGU+Pjo6ZGVjbwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBjaGFp
bkxlbmd0aDsgaSsrKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0aWZpY2F0ZURh
dGFSZWZlcmVuY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVEYXRh
UmVmZXJlbmNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gY2Vy
dGlmaWNhdGVEYXRhID0gYWRvcHRHUmVmKGdfYnl0ZV9hcnJheV9zaXplZF9uZXcoY2VydGlmaWNh
dGVEYXRhUmVmZXJlbmNlLnNpemUoKSkpOwogICAgICAgICBnX2J5dGVfYXJyYXlfYXBwZW5kKGNl
cnRpZmljYXRlRGF0YS5nZXQoKSwgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLmRhdGEoKSwgY2Vy
dGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAppbmRleCAxMmM4M2JmNjc3MWYxN2MzNDMzMWQ1MjBl
ODk5YTNjYTAyMDAyYTY4Li40MTBmOGZhMzhjOGYwYTM3OTNlZGRmNDAxYzFlNThjMGVkMWNiYmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAK
QEAgLTExMyw5ICsxMTMsOSBAQCBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBJbnB1dE1ldGhv
ZFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElucHV0TWV0aG9k
U3RhdGUgc3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5wdXJwb3NlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmhpbnRzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc3Rh
dGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3Nh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKaW5kZXgg
ZjFlOGIxNDUxMzc5ZGZlMDgyOWM4MTFjNTcxMGFjYWE1NjkyODMzZS4uYTczOWU4MjZiZTQ4OTI3
M2VkZmE5YTIxMDc2YTA1NTZmOWEzNjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9V
c2VyTWVzc2FnZS5jcHAKQEAgLTYwLDE5ICs2MCwxOSBAQCBPcHRpb25hbDxVc2VyTWVzc2FnZT4g
VXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgVXNlck1l
c3NhZ2UgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKHJlc3VsdC50eXBlID09IFR5cGU6Ok51bGwpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
IChyZXN1bHQudHlwZSA9PSBUeXBlOjpFcnJvcikgewogICAgICAgICBPcHRpb25hbDx1aW50MzJf
dD4gZXJyb3JDb2RlOwogICAgICAgICBkZWNvZGVyID4+IGVycm9yQ29kZTsKICAgICAgICAgaWYg
KCFlcnJvckNvZGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXN1bHQuZXJyb3JDb2RlID0gZXJy
b3JDb2RlLnZhbHVlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04MSwxOCArODEsMTgg
QEAgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEdSZWZQdHI8R1ZhcmlhbnQ+PiBwYXJhbWV0ZXJzOwog
ICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICBpZiAoIXBhcmFtZXRlcnMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LnBhcmFtZXRlcnMgPSBXVEZNb3ZlKCpwYXJhbWV0ZXJzKTsKIAogICAgIE9wdGlvbmFs
PFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+PiBhdHRhY2htZW50czsKICAgICBkZWNvZGVyID4+IGF0
dGFjaG1lbnRzOwogICAgIGlmICghYXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFhdHRhY2htZW50
cy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIHJlc3VsdC5maWxlRGVzY3JpcHRvcnMgPSBhZG9wdEdS
ZWYoZ191bml4X2ZkX2xpc3RfbmV3KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQg
OiAqYXR0YWNobWVudHMpIHsKICAgICAgICAgICAgIGlmIChnX3VuaXhfZmRfbGlzdF9hcHBlbmQo
cmVzdWx0LmZpbGVEZXNjcmlwdG9ycy5nZXQoKSwgYXR0YWNobWVudC5yZWxlYXNlRmlsZURlc2Ny
aXB0b3IoKSwgbnVsbHB0cikgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAppbmRleCA5ODcwZWZmZGE1ODUxMmE5MDAzNzg3YjFhZTZiNTU1NTliMzJmYThjLi43MzUyODg5
YWYzZGQ4MzZiMGZjMDk4NTViM2U0NmNjYWMxYzEyYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTEwNyw2NyArMTA3LDY3IEBAIE9w
dGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgYm9vbCBoYXNUZXh0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaGFzVGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1RleHQpIHsKICAgICAgICAgU3RyaW5n
IHRleHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgc2VsZWN0aW9uLnNldFRleHQodGV4dCk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNNYXJr
dXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNNYXJrdXApKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNN
YXJrdXApIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtYXJrdXApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRNYXJrdXAobWFy
a3VwKTsKICAgICB9CiAKICAgICBib29sIGhhc1VSTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhc1VSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1VSTCkgewogICAgICAgICBTdHJpbmcgdXJsOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0
aW9uLnNldFVSTChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKICAgICB9CiAKICAgICBib29s
IGhhc1VSSUxpc3Q7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNVUklMaXN0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoaGFzVVJJTGlzdCkgewogICAgICAgICBTdHJpbmcgdXJpTGlzdDsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh1cmlMaXN0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24u
c2V0VVJJTGlzdCh1cmlMaXN0KTsKICAgICB9CiAKICAgICBib29sIGhhc0ltYWdlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNJbWFnZSkgewogICAg
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWRlY29kZUltYWdlKGRlY29k
ZXIsIGltYWdlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24uc2V0SW1hZ2UoaW1hZ2Uu
Z2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21EYXRhKSB7CiAg
ICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRDdXN0b21E
YXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBib29sIGNhblNt
YXJ0UmVwbGFjZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNhblNtYXJ0UmVwbGFjZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc2VsZWN0aW9uLnNldENhblNtYXJ0UmVwbGFjZShjYW5TbWFydFJlcGxhY2UpOwogCiAg
ICAgcmV0dXJuIHNlbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAppbmRleCBjNzZhOWUxZjdkYWU3YTMxYzQw
NDhkOGYwMGQ4NDlhMThlYmFmZjIzLi44M2NiNDFhNGIwYmZjZjkyMDZlYmMyMjc0YTUxM2EzZTBh
NTE1ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdl
YktleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChHZGtF
dmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5k
cykKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXli
b2FyZEV2ZW50KGV2ZW50LCB0ZXh0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IFdURk1vdmUoY29tbWFuZHMpKSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCB0ZXh0LCBmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoY29tbWFuZHMpKSkKICAgICAsIG1fbmF0aXZlRXZl
bnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogewogfQpAQCAtNDUsNyArNDUsNyBAQCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4
dCwgT3B0aW9uYWw8VmVjdAogfQogCiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50aWZpZXIsIGlu
dCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgVmVjdG9y
PFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgT3B0aW9uU2V0PE1vZGlmaWVyPiBt
b2RpZmllcnMpCi0gICAgOiBXZWJLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIGtleSwgY29kZSwg
a2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0dWFsS2V5Q29k
ZSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNvbW1hbmRzKSwg
aXNLZXlwYWQsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKQorICAgIDogV2ViS2V5Ym9hcmRF
dmVudCh0eXBlLCB0ZXh0LCBrZXksIGNvZGUsIGtleUlkZW50aWZpZXIsIHdpbmRvd3NWaXJ0dWFs
S2V5Q29kZSwgbmF0aXZlVmlydHVhbEtleUNvZGUsIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgV1RGTW92ZShjb21tYW5kcyksIGlzS2V5cGFkLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05h
dGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2
ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDQ2ZWYzYjM3MWY1MmMxMDU0NTFkOTE3ZmY4ZmQz
ODRkYjUxOGIzOWYuLjhkYmU3YWQ3MWMzZGQwZjliY2FhMWM3NGMxNGIxY2FlYTRhMzBmOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0
ay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0aXZlV2ViTW91
c2VFdmVudChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pCiB9CiAKIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9u
LCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50IGNsaWNrQ291
bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9h
dFNpemU+IGRlbHRhLCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBTdHJpbmcm
IHBvaW50ZXJUeXBlKQotICAgIDogV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIGJ1dHRvbnMs
IHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEudmFsdWVPcihXZWJDb3JlOjpGbG9hdFNp
emUoKSkud2lkdGgoKSwgZGVsdGEudmFsdWVPcihXZWJDb3JlOjpGbG9hdFNpemUoKSkuaGVpZ2h0
KCksIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCwg
cG9pbnRlcklkLCBwb2ludGVyVHlwZSkKKyAgICA6IFdlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9u
LCBidXR0b25zLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhLnZhbHVlX29yKFdlYkNv
cmU6OkZsb2F0U2l6ZSgpKS53aWR0aCgpLCBkZWx0YS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNp
emUoKSkuaGVpZ2h0KCksIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
LCAwLCBOb1RhcCwgcG9pbnRlcklkLCBwb2ludGVyVHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oCmluZGV4IDVm
YWIwNTRlYTgzZWEyYzc0NjVmMDFhOTc4ZDhiMTY3MzVkY2U5N2IuLjk0YTljNTBjNGI0NzVhZTg4
M2Q4N2QyOTkxYjA2OGVkMGYxMGFmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgKQEAgLTU3LDE1ICs1NywxNSBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQ+IFdl
YkF1dG9jb3JyZWN0aW9uQ29udAogewogICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCBjb3Jy
ZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29ycmVjdGlvbi5jb250ZXh0QmVmb3Jl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvcnJlY3Rpb24ubWFya2VkVGV4dCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLnNlbGVjdGVkVGV4dCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLmNvbnRleHRBZnRlcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLm1hcmtlZFRleHRSYW5nZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIGNvcnJlY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCmluZGV4IDUzMjRmNjM4ODM0NjQ4NjVhM2FlMDU4YmE5
NDc2OTYwM2EyMzgzOTkuLmMxMjg3ZDFiNzYxMGZmNWIyMjUwZTUzZjcwZDdkNTBlNWFjM2ZlYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkRh
dGEubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0
YS5tbQpAQCAtNDksMTEgKzQ5LDExIEBAIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0aW9uRGF0YT4g
V2ViQXV0b2NvcnJlY3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvCiAgICAgT3B0
aW9uYWw8VmVjdG9yPEZsb2F0UmVjdD4+IHRleHRSZWN0czsKICAgICBkZWNvZGVyID4+IHRleHRS
ZWN0czsKICAgICBpZiAoIXRleHRSZWN0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxVSUZvbnQ+IGZv
bnQ7CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBmb250LCBAWyBVSUZvbnQuY2xhc3Mg
XSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnRleHRSZWN0cywgZm9udCB9fTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaAppbmRleCBhNDE5ZDgwMjNl
NzVhMzNkMzU2M2QwZjUyMDJiYzhjYjZhNzk0OWZhLi4yNjEwYzExNGE3MjY3ZTVlZmNlMmI2OWY5
MWJiODJlZjlmMThiYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2Vi
SU9TRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2
ZW50RmFjdG9yeS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAqKTsKIAogI2lm
IEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFORExJTkcpCi0g
ICAgc3RhdGljIFdlYktpdDo6V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Ny
b2xsRXZlbnQgKiwgVUlWaWV3ICpjb250ZW50VmlldywgT3B0aW9uYWw8V2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZSA9IFdURjo6bnVsbG9wdCk7CisgICAgc3RhdGlj
IFdlYktpdDo6V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQg
KiwgVUlWaWV3ICpjb250ZW50VmlldywgT3B0aW9uYWw8V2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQ
aGFzZT4gb3ZlcnJpZGVQaGFzZSA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogICAgIHN0YXRp
YyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlmaWVyRmxhZ3MoT3B0aW9uU2V0PFdlYktp
dDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dl
YklPU0V2ZW50RmFjdG9yeS5tbQppbmRleCA5ODFlYzQ3ZjE1M2U0ZTAzMzdkMzIxMDg4Zjc5ZTI2
NmZiMWQ3MDg5Li5hZGJkNTE1OGUzM2ZmNDg2ZGRjNDE0MmI2ZTZhMWYzNjk2M2I4M2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KQEAgLTE3
MCw3ICsxNzAsNyBAQCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgV2ViSU9TRXZlbnRGYWN0b3J5Ojpj
cmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZQogICAgICAgICB3aGVlbFRpY2tz
LAogICAgICAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5OjpTY3JvbGxCeVBp
eGVsV2hlZWxFdmVudCwKICAgICAgICAgZmFsc2UsCi0gICAgICAgIG92ZXJyaWRlUGhhc2UudmFs
dWVPcih0b1dlYlBoYXNlKGV2ZW50LnBoYXNlKSksCisgICAgICAgIG92ZXJyaWRlUGhhc2UudmFs
dWVfb3IodG9XZWJQaGFzZShldmVudC5waGFzZSkpLAogICAgICAgICBXZWJLaXQ6OldlYldoZWVs
RXZlbnQ6OlBoYXNlTm9uZSwKICAgICAgICAgdHJ1ZSwKICAgICAgICAgMSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAKaW5k
ZXggMmE5ZGI0ZjhhY2FmZTlkNjRkNWQ0ZWJkOTkxM2FhMTYxZWEwZjRjMC4uZTRjODExYjE3Y2Mw
YjhhODMyMWM3NzQ2MGQ1YTFkNTM0OGIxMjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAKQEAgLTUzLDI2ICs1Mywy
NiBAQCBPcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91Y2hQb2lu
dDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjbwogewogICAgIFdlYlBsYXRmb3JtVG91Y2hQb2lu
dCByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZGVudGlmaWVyKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2xvY2F0aW9uKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3BoYXNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoSU9TX1RP
VUNIX0VWRU5UUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JhZGl1c1gpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmFkaXVzWSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yb3RhdGlvbkFuZ2xlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX2ZvcmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX2FsdGl0dWRlQW5nbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fYXppbXV0aEFuZ2xlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X3RvdWNoVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRl
eCBkYWFmZDhkOGJkMzI3MWU0OGE1OWMwNjA4Y2FjZGZlYWU2Nzc1NmUyLi4xYzg1NTcxYmRkZDhj
ZDU0YTAxMjY1NmViNzAwZGJkNDI5MTYwNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8Y2hhcj4+IGZpbGVDb250ZW50cyhjb25zdCBTdHJpbmcmIHBhdGgsIGJv
b2wgc2hvdWxkTG9jayA9CiAgICAgRmlsZUhhbmRsZSBmaWxlID0gc2hvdWxkTG9jayA/IEZpbGVI
YW5kbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCBsb2NrTW9kZSkgOiBG
aWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgZmls
ZS5vcGVuKCk7CiAgICAgaWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY2hhciBjaHVua1s0MDk2XTsKICAg
ICBjb25zdGV4cHIgc2l6ZV90IGNodW5rU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgoY2h1bmspOwpA
QCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDU3RyaW5nPiBzZXRBbmRTZXJpYWxp
emVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5kYm94SW5pdGlhbGl6CiAgICAgaWYgKGlzUHJv
ZmlsZVBhdGgpIHsKICAgICAgICAgYXV0byBjb250ZW50cyA9IGZpbGVDb250ZW50cyhwcm9maWxl
T3JQcm9maWxlUGF0aCk7CiAgICAgICAgIGlmICghY29udGVudHMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKGNvbnRlbnRzLT5kYXRhKCksIGNvbnRlbnRzLT5z
aXplKCkpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZChwcm9maWxlT3JQcm9m
aWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCAwZGVhMDk2ZDlh
YTA3YWJhOWI2YWRjMzRiNzQxN2JiNWI1ZjM2NTg5Li5jMzhjYTJlMGI3ZTc0NzQxMTFjOGIzOWUx
ZDk0MWNkMDY3NTRjMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVTb3VyY2UoUmV0
YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogCiAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fcGFyc2VUcmFja3NMb2NrIH07CiAgICAgbV9ieXRlU291cmNlID0gV1RGTW92ZShieXRl
U291cmNlKTsKLSAgICBtX3BhcnNlVHJhY2tzU3RhdHVzID0gV1RGOjpudWxsb3B0OworICAgIG1f
cGFyc2VUcmFja3NTdGF0dXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9kdXJhdGlvbiA9IE1lZGlh
VGltZTo6aW52YWxpZFRpbWUoKTsKICAgICBtX3RyYWNrUmVhZGVycy5jbGVhcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFT
YW1wbGVDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAppbmRleCA3NTdhYjZiNmYwMmI0MWVmMmY2ZjBlMmNj
OWM3YmU3YmY4MGY1MWE4Li5lNTQzZTAzZTJmNGVmMDQ1N2MyMTdlZmM2MDMwMzgzMWM2NjlmZjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFTYW1wbGVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBP
cHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gTWVkaWFTYW1wbGVDdXJzb3I6
OmxvY2F0ZUl0ZXJhdG9yKE9yZGVyZQogICAgICAgICAgICAgZWxzZSBpZiAoaGFzQWxsU2FtcGxl
cyB8fCBpdGVyYXRvciAhPSBzYW1wbGVzLmVuZCgpKQogICAgICAgICAgICAgICAgIG1fbG9jYXRv
ciA9IHN0ZDo6cHJldihpdGVyYXRvcik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUl0ZXJhdG9yKHNhbXBsZXMsIGhhc0FsbFNh
bXBsZXMpOwogICAgICAgICB9LAogICAgICAgICBbJl0oY29uc3QgYXV0byYgb3RoZXJJdGVyYXRv
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFw
aC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KaW5kZXgg
ZDFhYTVjZDMyNmI2ZThkYjEzZDQ2NzkwNzNjNDkzM2QzYTliOWNkZC4uNzBhNWM4MDQ0NmNlYzhl
ZWU0NzM1NjkzZTFjODZlNGI2MzE1ODNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIE9wdGlvbmFsPE9i
akNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgICAgIHJldHVybiBPYmpDVHlw
ZTo6V0tUeXBlUmVmV3JhcHBlcjsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBPYmpDT2JqZWN0R3JhcGg6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIs
IGlkIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250
ZXh0TWVudS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1BERkNvbnRleHRNZW51LmgKaW5k
ZXggN2QxOGYwOWIwMDdhMWY2YTI5MTMwMGY1ZWI4MGEyNTJiYzY3OGUxMi4uODFjZGJlODAxYzJm
Y2M3NmNiOThiZDMzNjEzM2EyN2Q1YWM5YzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1BERkNvbnRleHRNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1BERkNvbnRleHRNZW51LmgKQEAgLTQ2LDMyICs0NiwzMiBAQCBzdHJ1Y3QgUERGQ29udGV4dE1l
bnVJdGVtIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAgICAgICAgZGVjb2Rl
ciA+PiB0aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAg
ICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2Vw
YXJhdG9yOwogICAgICAgICBkZWNvZGVyID4+IHNlcGFyYXRvcjsKICAgICAgICAgaWYgKCFzZXBh
cmF0b3IpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxpbnQ+IHN0YXRlOwogICAgICAg
ICBkZWNvZGVyID4+IHN0YXRlOwogICAgICAgICBpZiAoIXN0YXRlKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGhhc0Fj
dGlvbjsKICAgICAgICAgaWYgKCFoYXNBY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxpbnQ+IHRhZzsKICAgICAgICAgZGVjb2RlciA+PiB0YWc7CiAgICAgICAgIGlmICghdGFn
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp0aXRsZSksIFdURk1v
dmUoKmVuYWJsZWQpLCBXVEZNb3ZlKCpzZXBhcmF0b3IpLCBXVEZNb3ZlKCpzdGF0ZSksIFdURk1v
dmUoKmhhc0FjdGlvbiksIFdURk1vdmUoKnRhZykgfSB9OwogICAgIH0KQEAgLTkyLDE3ICs5Miwx
NyBAQCBzdHJ1Y3QgUERGQ29udGV4dE1lbnUgewogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gcG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gcG9pbnQ7CiAgICAgICAgIGlmICgh
cG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8UERGQ29udGV4dE1l
bnVJdGVtPj4gaXRlbXM7CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbXM7CiAgICAgICAgIGlmICgh
aXRlbXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxpbnQ+PiBvcGVu
SW5QcmV2aWV3SW5kZXg7CiAgICAgICAgIGRlY29kZXIgPj4gb3BlbkluUHJldmlld0luZGV4Owog
ICAgICAgICBpZiAoIW9wZW5JblByZXZpZXdJbmRleCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJl
dHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcG9pbnQpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCmluZGV4IDBlMDg0MDJiMWE1ZmY3
OTMxMTM1NjkxYjE5ZmFmMDYxZjk2Zjc2NTUuLmQ4YmFmOWZlYzlhMTczMzQyNzMxYjBkNGYzMGFi
ZWMwYWI5MTZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJl
c3BvbnNlRGF0YS5jcHAKQEAgLTQ5LDE1ICs0OSwxNSBAQCBPcHRpb25hbDxTZWNJdGVtUmVzcG9u
c2VEYXRhPiBTZWNJdGVtUmVzcG9uc2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIGludDY0X3QgcmVzdWx0Q29kZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdENvZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBleHBlY3RSZXN1bHRPYmplY3Q7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShleHBlY3RSZXN1bHRPYmplY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0YWluUHRyPENG
VHlwZVJlZj4gcmVzdWx0OwogICAgIGlmIChleHBlY3RSZXN1bHRPYmplY3QgJiYgIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgc3RhdGljX2Nhc3Q8T1NTdGF0dXM+
KHJlc3VsdENvZGUpLCBXVEZNb3ZlKHJlc3VsdCkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1NlY0l0ZW1TaGltLmNwcAppbmRleCA5MGFkOTk5M2Q4ZTBjZDMxZWY3YTk4YmUzN2I1ODdi
NGExNWVkMjMzLi5lZmUyZjIyMzc3ZWViYTkyM2VlYWFlNzI4YjFhODZkYTk1ZTkxMzEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHNlbmRTZWNJdGVtUmVxdWVzdChT
ZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUKIAogICAgIGlmIChSdW5Mb29wOjppc01haW4oKSkgewog
ICAgICAgICBpZiAoIWdsb2JhbE5ldHdvcmtQcm9jZXNzKCktPnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpTZWNJdGVtU2hpbVByb3h5OjpTZWNJdGVtUmVxdWVz
dFN5bmMoU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RUeXBlLCBxdWVyeSwgYXR0cmlidXRlc1Rv
TWF0Y2gpKSwgTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6OlNlY0l0ZW1SZXF1ZXN0U3luYzo6
UmVwbHkocmVzcG9uc2UpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVzcG9uc2U7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbQppbmRleCBlMGIxMjVhZWI4MmVjZGE3ODlmNzUxNDNhYTFkZmZmYmRh
YTZjYWYwLi41NmI1OGY4MzQ1YmVmMmIyNzZmNDM4ZGQ4NzMxM2Q4YmYyZGI5ZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMu
bW0KQEAgLTI4NSwxMiArMjg1LDEyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OktleXByZXNzQ29tbWFu
ZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjpkZWNvCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBjb21tYW5kTmFtZTsKICAgICBkZWNvZGVyID4+IGNvbW1hbmROYW1lOwog
ICAgIGlmICghY29tbWFuZE5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0
OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2Vi
Q29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQ7CiAgICAgY29tbWFuZC5jb21tYW5kTmFtZSA9
IFdURk1vdmUoKmNvbW1hbmROYW1lKTsKQEAgLTQxMCwxMSArNDEwLDExIEBAIE9wdGlvbmFsPFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2VyaWFsCiAgICAgQVNTRVJUKHBsYXRmb3JtVHlwZSA9PSBXZWJDb3JlOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU6OlBsYXRmb3JtVHlwZTo6T2JqQyk7CiAKICAgICBpZiAo
cGxhdGZvcm1UeXBlICE9IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6
UGxhdGZvcm1UeXBlOjpPYmpDKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBvYmplY3QgPSBkZWNvZGVPYmplY3Qo
ZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6YWxsb3dlZENs
YXNzZXNGb3JOYXRpdmVWYWx1ZXMoKSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlIHsgcGxhdGZvcm1UeXBl
LCBvYmplY3QudmFsdWUoKS5nZXQoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRpb24uY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxh
eVN0YXRpb24uY3BwCmluZGV4IDIxMmE4ZTA1ZWI1ZjNmODg5YzM1ODE1YWU3ZWJjNWNhYzU0MmFj
YjAuLmNiZWI0MDBkYWNlNTZiODgyZDJlN2M0NDNhZWRkYjdiZTQ5ZDlmZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1bWVudENvZGVyc1Bs
YXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3RhdGlvbi9XZWJD
b3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBB
cmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXIm
LCBjb25zdCBGb250QXR0cmkKIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVy
PEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBGb250QXR0cmli
dXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
ZjxGb250PiYgZm9udCkKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8Rm8K
IE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDQ0OTIzNGIwODEx
NzJlYWNmMTMxN2E1YzFlMTJjZjBkZDE5OTNmMDEuLjk4N2Y4YjU1NTIxODFhMjg4M2IxYTY0NDQ1
ZDhmYTY4MWMwZTk3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVy
JiwgY29uc3QgRm9udEF0dHJpCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2Rl
cjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJp
YnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVy
PERpY3Rpb25hcnlQb3B1cEluZm8+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0
IERpY3Rpb25hcnlQb3B1cEluZm8mKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IFJlZjxG
b250PiYpCiBPcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250
Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJgogT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiAgQXJn
dW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4
aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGls
aWFyeVByb2Nlc3NNYWluV2luLmNwcAppbmRleCBkYmUwZDAzYzkyMTkwZWIwYmMyOWViNjZjNDc1
M2EwYWE5YzBiNDdjLi42MjE4ODMwMDQ4YmEyNWZlNDQ0M2E1Y2FiMTM2NjY4ZjNhZWJmNDQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFp
bldpbi5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzTWFpbkNvbW1v
bjo6cGFyc2VDb21tYW5kTGluZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwg
Ii1jbGllbnRJZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgbV9wYXJh
bWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2WysraV0pLnZhbHVl
T3IoMCkpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0g
cmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQ2NF90Pihhcmd2WysraV0pLnZhbHVlX29yKDApKTsKICAgICAgICAgZWxzZSBpZiAoIXN0
cmNtcChhcmd2W2ldLCAiLXByb2Nlc3NJZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQotICAg
ICAgICAgICAgbV9wYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50
aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPihwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAg
ICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8dWludDY0X3Q+KGFyZ3ZbKytpXSkudmFsdWVfb3IoMCkpOwogICAgICAgICBlbHNl
IGlmICghc3RyY21wKGFyZ3ZbaV0sICItY29uZmlndXJlLWpzYy1mb3ItdGVzdGluZyIpKQogICAg
ICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKICAgICAgICAgZWxz
ZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWRpc2FibGUtaml0IikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCmluZGV4IGJk
MTkwODA2NmJkMTI1ZWQ4MTBhY2QwMTdiM2RjMWM2NDc5ZWZlMDMuLjAwMDNhYjM3ZDEzNjUxZmY4
N2RmMzYyN2E0ZjY1M2ZjNGFkZWRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNv
ZGVyJiwgY29uc3QgRm9udEF0dHJpCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRD
b2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0
dHJpYnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxMT0dGT05UPiB7CkBAIC01Nyw3ICs1Nyw3IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8TE9HRk9OVD4gewogICAgIHsKICAgICAgICAgTE9HRk9OVCBs
b2dGb250OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZsb2dGb250KSwgc2l6ZW9mKGxvZ0ZvbnQpLCAxKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm4gbG9nRm9udDsKICAgICB9CiB9OwpAQCAtODYsMjIgKzg2
LDIyIEBAIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNpemU7
CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZS5oYXNWYWx1ZSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gc3ludGhldGljQm9sZDsKICAgICBkZWNvZGVyID4+IHN5bnRoZXRp
Y0JvbGQ7CiAgICAgaWYgKCFzeW50aGV0aWNCb2xkLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxib29sPiBzeW50aGV0aWNPYmxpcXVlOwogICAgIGRlY29kZXIgPj4gc3ludGhldGljT2Js
aXF1ZTsKICAgICBpZiAoIXN5bnRoZXRpY09ibGlxdWUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGluY2x1ZGVzQ3JlYXRpb25EYXRhOwogICAgIGRlY29kZXIgPj4gaW5jbHVk
ZXNDcmVhdGlvbkRhdGE7CiAgICAgaWYgKCFpbmNsdWRlc0NyZWF0aW9uRGF0YS5oYXNWYWx1ZSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURhdGE+IGZvbnRD
dXN0b21QbGF0Zm9ybURhdGE7CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRpb25EYXRhKiBj
cmVhdGlvbkRhdGEgPSBudWxscHRyOwpAQCAtMTEwLDMwICsxMTAsMzAgQEAgT3B0aW9uYWw8Rm9u
dFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURh
dGEoRGVjb2RlciYKICAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGZvbnRGYWNl
RGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGlmICghZm9u
dEZhY2VEYXRhLmhhc1ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUluQ29sbGVjdGlv
bjsKICAgICAgICAgaWYgKCFpdGVtSW5Db2xsZWN0aW9uLmhhc1ZhbHVlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBmb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRm
b3JtRGF0YShmb250RmFjZURhdGEudmFsdWUoKSwgaXRlbUluQ29sbGVjdGlvbi52YWx1ZSgpKTsK
ICAgICAgICAgaWYgKCFmb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGNyZWF0aW9uRGF0YSA9ICZmb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5jcmVhdGlvbkRhdGE7CiAg
ICAgfQogCiAgICAgT3B0aW9uYWw8TE9HRk9OVD4gbG9nRm9udDsKICAgICBkZWNvZGVyID4+IGxv
Z0ZvbnQ7CiAgICAgaWYgKCFsb2dGb250Lmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZm9udEN1
c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgd2NzY3B5X3MobG9nRm9udC0+bGZGYWNlTmFtZSwg
TEZfRkFDRVNJWkUsIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPm5hbWUud2lkZUNoYXJhY3RlcnMo
KS5kYXRhKCkpOwogICAgIAogICAgIGF1dG8gZ2RpRm9udCA9IGFkb3B0R0RJT2JqZWN0KENyZWF0
ZUZvbnRJbmRpcmVjdCgmKmxvZ0ZvbnQpKTsKICAgICBpZiAoIWdkaUZvbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gRm9udFBsYXRmb3JtRGF0YShXVEZNb3ZlKGdkaUZvbnQpLCAqc2l6ZSwgKnN5bnRoZXRp
Y0JvbGQsICpzeW50aGV0aWNPYmxpcXVlLCBmYWxzZSwgY3JlYXRpb25EYXRhKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRleCBiMTgyMGUw
NDhjMDc3NTYxYzk4MWIxOTNmZjNiNWQzNDY3MDAxODAxLi5hMjdkMTI1NGJlNzY1ODJkZWM4MTZm
ZTNiZDkzNjZiNjczM2YwMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF0dGFjaG1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFdURjo6U3RyaW5nIEF0dGFjaG1lbnQ6
OmZpbGVOYW1lKCkgY29uc3QKIAogT3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVT
aXplRm9yRGlzcGxheSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBB
dHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRl
eCAyYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2Li5mNDY5MTE2NzZjZDk4
YTZhMTc0N2U4MDFlODhkYjI4Y2YxZmM5YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNjksNyAr
NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2VwdEN1cnJlbnRKYXZhU2NyaXB0
RGlhbG9nT25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbWVzc2FnZU9mQ3VycmVudEph
dmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktp
dDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdE9uUGFnZShXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6
OlN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8SmF2YVNjcmlwdERpYWxvZ1R5cGU+
IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsg
fQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5cGVPZkN1cnJl
bnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1
YWwgQnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIGN1cnJlbnRQcmVzZW50YXRpb25PZlBhZ2Uo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyBy
ZXR1cm4gQnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uOjpXaW5kb3c7IH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3Rv
cmUuY3BwCmluZGV4IGIyNzEwYmZmYzQxNDhmYmZiYTY0YzllYWVmZWY0ZWUzNjY0MWFmOWEuLjhk
YmU3OTVlZDllYTM0YmZlZTNmMTI5NjVlNWYwMzMwMGRiZmE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApA
QCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb250ZW50UnVsZUxpc3RNZXRhRGF0
YT4gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoY29uc3QgVCYKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0pOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWV0YURh
dGE7CiB9CiAKQEAgLTIxOCwxMCArMjE4LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxNYXBwZWREYXRh
PiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKQogICAg
IEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgpOwogICAgIFdl
YktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhID0gbWFwRmlsZShmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoZmlsZURhdGEuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgYXV0byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKGZpbGVE
YXRhKTsKICAgICBpZiAoIW1ldGFEYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBXVEZNb3ZlKCptZXRh
RGF0YSksIHsgV1RGTW92ZShmaWxlRGF0YSkgfX19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5k
ZXggMWY1MDc5Yzg1ZmRiOTU0Y2Q2YTZjN2M5Y2Y3MDE5YjRkMmMxNmY3OS4uYmZkNzVkYmViODNm
N2I0Y2JiODMzNTg3NDM5ODQ0OTM2ZGFmZTM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNTYs
NyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdF
bmFibGVkKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzQXV0b21hdGljUHJvY2Vz
c1dhcm1pbmdFbmFibGVkQnlDbGllbnQudmFsdWVPcihtX2NsaWVudFdvdWxkQmVuZWZpdEZyb21B
dXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyk7CisgICAgICAgIHJldHVybiBtX2lzQXV0b21hdGlj
UHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQudmFsdWVfb3IobV9jbGllbnRXb3VsZEJlbmVm
aXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcpOwogICAgIH0KIAogICAgIGJvb2wgd2Fz
QXV0b21hdGljUHJvY2Vzc1dhcm1pbmdTZXRCeUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICEhbV9p
c0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OyB9CkBAIC0xMjAsNyArMTIw
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzU3dhcHNPbk5hdmlnYXRpb24oKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUNs
aWVudC52YWx1ZU9yKG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUNs
aWVudC52YWx1ZV9vcihtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxG
ZWF0dXJlcyk7CiAgICAgfQogICAgIHZvaWQgc2V0UHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKGJv
b2wgc3dhcHMpIHsgbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xpZW50ID0gc3dhcHM7
IH0KICAgICB2b2lkIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxG
ZWF0dXJlcyhib29sIHN3YXBzKSB7IG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVy
aW1lbnRhbEZlYXR1cmVzID0gc3dhcHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCmluZGV4IGQ0ODJkM2MzNGQ4ZjRhMWM4ZGI2NTFkOTc3MDYyNWMzMmQ1MDdlYzIu
LjdiMjY5YWIwNzQyNjczMGM4NTI1NjkyMTZlMmE5MGM5MmU2MDEzODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjYwMCw3ICsyNjAwLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFnZVN0YXRlQ2xp
ZW50QmFzZSogY2xpZW50KQogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29udGV4dCwgV0tQ
YWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIENSQVNIX0lGX1NVU1BF
TkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHRv
SW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwg
dHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7CisgICAgdG9JbXBs
KHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+
c3RyaW5nKCksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQs
IGNhbGxiYWNrXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdWx0LnZhbHVlKCkuZ2V0KCkpLCBu
dWxscHRyLCBjb250ZXh0KTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5kZXggMTI5MmNj
Y2NmODhlODg5MzlmZjlmZGU0NDk1YTM0ZjI5ZGE5MmJhMi4uMjM3ZmI3ZWZhZjU3ZmVkMjc0NmI4
NjdiY2Q0MDgzNTczZDI5Y2Q0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAg
T3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0
CiAKICAgICBpZiAoIVtmaWxlV3JhcHBlciBpc1JlZ3VsYXJGaWxlXSkgewogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGRpc3BsYXkgYSBzaXplIGVzdGltYXRlIGZvciBkaXJlY3RvcnktdHlw
ZSBmaWxlIHdyYXBwZXJzLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRvIGZpbGVTaXplID0gW1tm
aWxlV3JhcHBlciBmaWxlQXR0cmlidXRlc11bTlNGaWxlU2l6ZV0gdW5zaWduZWRMb25nTG9uZ1Zh
bHVlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Nl
Y3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2Vj
dXJpdHlPcmlnaW4ubW0KaW5kZXggNGY5ZjlmZjk5Yjk0ZGMzOWNiY2Y2YWMyZTcxM2MyNzMyYjg5
OGI5OC4uMDBmZWNiYmUzMjlmZmZiNDEwOTY5YTY4OGUyMjYwN2I4OTM3MjZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlPcmlnaW4u
bW0KQEAgLTYwLDcgKzYwLDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0gKE5TSW50ZWdlcilw
b3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmlnaW4o
KS5wb3J0LnZhbHVlX29yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wg
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IDg5MmFhNDg1OGY0OGE3OWJiMmEzZDllM2Y0YzY1YmYxZDhjOTQzNzcu
LmFlMWYzYjU2MjI2ZmZhMDQzMjgyMjFmMjQ1YmVmYTIwOGFlZjUyM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjA3MCw3ICsyMDcw
LDcgQEAgLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm8KIAogICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VuczsKICAgICBm
b3IgKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqd2tUb2tlbiBpbiBpdGVtLnRva2VucykKLSAg
ICAgICAgdG9rZW5zLmFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRva2VuSWRlbnRpZmllckZy
b21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250ZW50LCBXVEY6Om51bGxv
cHQgfSk7CisgICAgICAgIHRva2Vucy5hcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuIHsgY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklk
ZW50aWZpZXJGcm9tU3RyaW5nKHdrVG9rZW4uaWRlbnRpZmllciksIHdrVG9rZW4uY29udGVudCwg
c3RkOjpudWxsb3B0IH0pOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtPiBjb3JlSXRlbXM7CiAgICAgY29yZUl0ZW1zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCAtICh2b2lkKV9j
b21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqPiAqKQogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBjb3JlVG9rZW5zOwogICAgICAgICBjb3JlVG9r
ZW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2tJdGVtLnRva2Vucy5jb3VudCk7CiAgICAgICAg
IGZvciAoX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICp3a1Rva2VuIGluIHdrSXRlbS50b2tlbnMp
Ci0gICAgICAgICAgICBjb3JlVG9rZW5zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxh
dGlvblRva2VuSWRlbnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tl
bi5jb250ZW50LCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgICAgICBjb3JlVG9rZW5zLnVuY2hl
Y2tlZEFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRva2VuSWRlbnRpZmllckZyb21TdHJpbmco
d2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250ZW50LCBzdGQ6Om51bGxvcHQgfSk7CiAg
ICAgICAgIGNvcmVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0geyBjb3JlVGV4dE1hbmlwdWxhdGlvbkl0ZW1J
ZGVudGlmaWVyRnJvbVN0cmluZyh3a0l0ZW0uaWRlbnRpZmllciksIFdURk1vdmUoY29yZVRva2Vu
cykgfSk7CiAgICAgfQogCkBAIC0yMjg4LDcgKzIyODgsNyBAQCAtICh2b2lkKV9yZXN0b3JlQXBw
SGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiAgICAgZm9yIChOU0Rh
dGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKQogICAgICAgICBjb252ZXJ0QW5kQWRkSGlnaGxp
Z2h0KGJ1ZmZlcnMsIGhpZ2hsaWdodCk7CiAgICAgCi0gICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBXVEY6Om51bGxvcHQpOworICAgIF9wYWdl
LT5yZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVycywgc3RkOjpudWxs
b3B0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tCmluZGV4IGNlNWI3YmQ1YjAxYWJjODIxMDk1ZDA1NTk1YWFlOTY5YjY4
Y2Y1ZmUuLjczNjdlODgwMjc2ZmE2NDE3YTllNDlmZTg5ODc5Y2ZjZTk4OWMxNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tCkBAIC01MzcsMTIgKzUzNywxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKmRl
ZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKQogCiAtIChOU1N0cmluZyAqKV9hcHBs
aWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50CiB7Ci0gICAgcmV0dXJuIF9hcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQudmFsdWVPcihuaWwpLmdldCgpOworICAgIHJldHVybiBfYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50LnZhbHVlX29yKG5pbCkuZ2V0KCk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7Ci0gICAgcmV0dXJuIF9hcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQudmFsdWVPcihkZWZhdWx0QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KCkpLmdldCgpOworICAgIHJldHVybiBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
LnZhbHVlX29yKGRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKSkuZ2V0KCk7CiB9
CiAKIC0gKHZvaWQpc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0cmluZyAqKWFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudApAQCAtOTUyLDE4ICs5NTIsMTggQEAgLSAodm9pZClf
c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVybnMK
IAogLSAodm9pZClfc2V0TG9hZHNGcm9tTmV0d29yazooQk9PTClsb2FkcwogewotICAgIF9wYWdl
Q29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhsb2FkcyA/IFdURjo6bnVsbG9w
dCA6IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmluZz4geyB9IH0pOwor
ICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhsb2FkcyA/IHN0
ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmluZz4g
eyB9IH0pOwogfQogCiAtIChCT09MKV9sb2Fkc0Zyb21OZXR3b3JrCiB7Ci0gICAgcmV0dXJuIF9w
YWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpID09IFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5hbGxvd2VkTmV0d29ya0hvc3RzKCkgPT0g
c3RkOjpudWxsb3B0OwogfQogCiAtICh2b2lkKV9zZXRBbGxvd2VkTmV0d29ya0hvc3RzOihOU1Nl
dDxOU1N0cmluZyAqPiAqKWhvc3RzCiB7CiAgICAgaWYgKCFob3N0cykKLSAgICAgICAgcmV0dXJu
IF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhXVEY6Om51bGxvcHQp
OworICAgICAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29ya0hv
c3RzKHN0ZDo6bnVsbG9wdCk7CiAgICAgSGFzaFNldDxTdHJpbmc+IHNldDsKICAgICBmb3IgKE5T
U3RyaW5nICpob3N0IGluIGhvc3RzKQogICAgICAgICBzZXQuYWRkKGhvc3QpOwpAQCAtMTE1Niw3
ICsxMTU2LDcgQEAgLSAodm9pZClfc2V0Q1BVTGltaXQ6KGRvdWJsZSljcHVMaW1pdAogCiAtIChk
b3VibGUpX2NwdUxpbWl0CiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+Y3B1TGlt
aXQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmNwdUxpbWl0
KCkudmFsdWVfb3IoMCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZEludGVybmFsLmgKaW5kZXggYWU2YTRkMjZlNzBjMDRhYmI2ZmZkOWY2MmNiODQ1NmRl
MGU3YjA1My4uNmNmZWI5ZWNjNGRiODExZDc1YzNjYmNmMzdjYmUyYmU0ZDU5YTNiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgaW5saW5l
IE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndl
YnNpdGVEYXRhVAogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tX
ZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKICAgICAgICAgcmV0dXJuIFdlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczsKICNlbmRpZgotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGluZSBP
cHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFUeXBlcyhOU1Nl
dCAqd2Vic2l0ZURhdGFUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IGQ3NDIwNDU5N2M3
OWY1MGI2YTNlY2FkZWZiYjljZmM1MDA3M2U2MGMuLjNiYWJlYmY4MTU3YTNhZjlmZTk5MTQ3M2Nl
ZTA3OTJlODRhOTAyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtODMsOCArODMsOCBAQCAt
ICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRhYk5hbWUgdGFiSWNvblVSTDoo
TlNVUkwgKil0YWJJY29uVVJMIHNvdQogCiAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmlu
ZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZXh0U2VjdXJp
dHlPcmlnaW46KE5TVVJMICopY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRlbnRTY3JpcHRD
b250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TRXJyb3IgKiwgTlNEaWN0aW9uYXJ5ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0g
ICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBtYWtlT3B0aW9u
YWwoVVJMKGZyYW1lVVJMKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8VVJMPiBvcHRp
b25hbENvbnRleHRTZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IG1ha2VP
cHRpb25hbChVUkwoY29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxvcHQ7CisgICAg
T3B0aW9uYWw8VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwoVVJMKGZyYW1lVVJMKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8VVJMPiBv
cHRpb25hbENvbnRleHRTZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdpbiA/IHN0
ZDo6bWFrZV9vcHRpb25hbChVUkwoY29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBzdGQ6Om51bGxv
cHQ7CiAgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHQoc2NyaXB0U291cmNlLCBvcHRpb25h
bEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29udGVudFNjcmlw
dENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2Nr
ID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghcmVzdWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JU
b1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKQEAgLTEwNCw4ICsxMDQsOCBAQCAtICh2
b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNV
UkwgKilmcmFtZVVSTCBjb250ZQogCiAtICh2b2lkKXJlbG9hZElnbm9yaW5nQ2FjaGU6KEJPT0wp
aWdub3JlQ2FjaGUgdXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2VudCBpbmplY3RlZFNjcmlw
dDooTlNTdHJpbmcgKilpbmplY3RlZFNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShO
U0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRp
b25hbFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IG1ha2VPcHRpb25hbChTdHJpbmcodXNlckFnZW50
KSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbEluamVjdGVk
U2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBtYWtlT3B0aW9uYWwoU3RyaW5nKGluamVjdGVkU2Ny
aXB0KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbFVzZXJB
Z2VudCA9IHVzZXJBZ2VudCA/IHN0ZDo6bWFrZV9vcHRpb25hbChTdHJpbmcodXNlckFnZW50KSkg
OiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbEluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5nKGluamVjdGVk
U2NyaXB0KSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lvbi0+cmVsb2FkSWdub3JpbmdD
YWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9wdGlvbmFsSW5qZWN0ZWRTY3Jp
cHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFr
ZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rvcjo6RXh0ZW5z
aW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghcmVz
dWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6
ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDhmYjUxZGE0YzY0ZTUzNWUz
NDhiMmVhMmM0NTkwZTg4NDQ5YmRjY2MuLjBlMzQ5NGIzNzFhNWZmYmQ2Yzk4N2VlYTRkOTZkMDAw
YTc0ZTk2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTU3LDcgKzU3LDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJhc2VVUkwsIG1ha2VWZWN0b3I8U3RyaW5n
PihpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0b3I8U3RyaW5nPihleGNsdWRl
TWF0Y2hQYXR0ZXJuU3RyaW5ncyksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNvcmU6OlVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRvV2ViQ29yZVVz
ZXJTdHlsZUxldmVsKGxldmVsKSwgd2ViVmlldyA/IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPihbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6IFdURjo6bnVsbG9wdCB9LCBj
b250ZW50V29ybGQgPyAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkIDogQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdElu
V3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dCB7IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+KGluY2x1ZGVNYXRjaFBhdHRl
cm5TdHJpbmdzKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdz
KSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6
OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
czo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2ZWwobGV2ZWwp
LCB3ZWJWaWV3ID8gT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KFt3ZWJWaWV3IF9w
YWdlXS0+d2ViUGFnZUlEKCkpIDogc3RkOjpudWxsb3B0IH0sIGNvbnRlbnRXb3JsZCA/ICpjb250
ZW50V29ybGQtPl9jb250ZW50V29ybGQgOiBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRX
b3JsZCgpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQppbmRleCBiYmUxMzU5OGE5YTMyNjA4OTMyYzg4M2YwYmE0NDNkOWIyZDEzMDk4Li5iMjBjYzI5
YzhkNGNkZDQ0YWRhMDg1NDdkYjcyYjU3NzY0N2U2NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQpAQCAtMzY4LDE0ICszNjgsMTQgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBdHRhY2htZW50PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudChfV0tBdXQKIHsK
ICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIF9XS0F1dGhlbnRpY2F0b3JBdHRh
Y2htZW50QWxsOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNhc2UgX1dLQXV0aGVudGljYXRvckF0dGFjaG1lbnRQbGF0Zm9y
bToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0
Zm9ybTsKICAgICBjYXNlIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Q3Jvc3NQbGF0Zm9ybToK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1Bs
YXRmb3JtOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIH0KIApAQCAtNDcxLDcgKzQ3MSw3IEBAIC0gKHZvaWQpbWFrZUNyZWRlbnRpYWxXaXRo
Q2hhbGxlbmdlOihOU0RhdGEgKiljaGFsbGVuZ2Ugb3JpZ2luOihOU1N0cmluZyAqKW9yaWdpCiAg
ICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAgfSk7CiAg
ICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25zV2l0aE9wdGlv
bnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3Vs
dDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmco
KSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVSZXF1
ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRv
Q29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJLaXQ6
OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6
Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxsYmFj
aykpOwogI2VuZGlmCiB9CiAKQEAgLTUyMSw3ICs1MjEsNyBAQCAtICh2b2lkKWdldEFzc2VydGlv
bldpdGhDaGFsbGVuZ2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3Jp
Z2luCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAgICAg
fSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBb
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRo
T3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVs
UmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0
cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBfcGFuZWwtPmhhbmRs
ZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252
ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2Vi
S2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2Fs
bGJhY2spKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAzYWI4MzNjOGUwN2NmZmZiZDU4NzM0MDczYWFj
NzgxYzcwY2JlYWMxLi5kNjRhMTgzODAyMmZhYzAyNDRiYmY1NmE4NzZjOTM5YTJjYjY2ZGFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHAKQEAgLTI5NCwxNCArMjk0LDE0IEBAIE9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFzZTo6
aWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGJvb2wmIGV4CiAgICAgICAg
IGF1dG8gaWNvbklERm9ySWNvblVSTFN0YXRlbWVudCA9IG1fZGIucHJlcGFyZUhlYXBTdGF0ZW1l
bnQoIlNFTEVDVCBJY29uSW5mby5pY29uSUQsIEljb25JbmZvLnN0YW1wIEZST00gSWNvbkluZm8g
V0hFUkUgSWNvbkluZm8udXJsID0gKD8pOyJfcyk7CiAgICAgICAgIGlmICghaWNvbklERm9ySWNv
blVSTFN0YXRlbWVudCkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJpbmcgc3RhdGVt
ZW50IGljb25JREZvckljb25VUkwgZmFpbGVkIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAg
ICAgICBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQgPSBpY29uSURGb3JJY29uVVJMU3RhdGVt
ZW50LnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgfQogCiAgICAgaWYgKG1faWNvbklE
Rm9ySWNvblVSTFN0YXRlbWVudC0+YmluZFRleHQoMSwgaWNvblVSTCkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIExPR19FUlJPUigiRmF2aWNvbkRhdGFic2U6Omljb25JREZvckljb25VUkwgZmFp
bGVkOiAlcyIsIG1fZGIubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE9wdGlvbmFs
PGludDY0X3Q+IHJlc3VsdDsKQEAgLTM3Niw3ICszNzYsNyBAQCBPcHRpb25hbDxpbnQ2NF90PiBJ
Y29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8
Y2hhcgogICAgICAgICBhdXRvIGFkZEljb25TdGF0ZW1lbnQgPSBtX2RiLnByZXBhcmVIZWFwU3Rh
dGVtZW50KCJJTlNFUlQgSU5UTyBJY29uSW5mbyAodXJsLCBzdGFtcCkgVkFMVUVTICg/LCAwKTsi
X3MpOwogICAgICAgICBpZiAoIWFkZEljb25TdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCBhZGRJY29uIGZhaWxlZCIpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICAgICAgbV9hZGRJY29uU3RhdGVtZW50ID0gYWRkSWNvblN0YXRlbWVudC52
YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgIH0KQEAgLTM4NCwxNCArMzg0LDE0IEBAIE9w
dGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFzZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25V
UkwsIGNvbnN0IFZlY3RvcjxjaGFyCiAgICAgICAgIGF1dG8gYWRkSWNvbkRhdGFTdGF0ZW1lbnQg
PSBtX2RiLnByZXBhcmVIZWFwU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBJY29uRGF0YSAoaWNvbklE
LCBkYXRhKSBWQUxVRVMgKD8sID8pOyJfcyk7CiAgICAgICAgIGlmICghYWRkSWNvbkRhdGFTdGF0
ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCBhZGRJ
Y29uRGF0YSBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIG1fYWRkSWNv
bkRhdGFTdGF0ZW1lbnQgPSBhZGRJY29uRGF0YVN0YXRlbWVudC52YWx1ZSgpLm1vdmVUb1VuaXF1
ZVB0cigpOwogICAgIH0KIAogICAgIGlmIChtX2FkZEljb25TdGF0ZW1lbnQtPmJpbmRUZXh0KDEs
IGljb25VUkwpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkljb25EYXRhYmFz
ZTo6YWRkSWNvbiBmYWlsZWQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgbV9hZGRJY29uU3RhdGVtZW50LT5zdGVwKCk7CkBAIC00MDAsNyArNDAwLDcgQEAgT3B0
aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNvbnN0IFN0cmluZyYgaWNvblVS
TCwgY29uc3QgVmVjdG9yPGNoYXIKICAgICBhdXRvIGljb25JRCA9IG1fZGIubGFzdEluc2VydFJv
d0lEKCk7CiAgICAgaWYgKG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpY29u
SUQpICE9IFNRTElURV9PSyB8fCBtX2FkZEljb25EYXRhU3RhdGVtZW50LT5iaW5kQmxvYigyLCBp
Y29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAg
IExPR19FUlJPUigiSWNvbkRhdGFiYXNlOjphZGRJY29uIGZhaWxlZDogJXMiLCBtX2RiLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBtX2FkZEljb25EYXRhU3RhdGVtZW50LT5zdGVw
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRB
dXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAppbmRleCA4YWQ4YzUzODllMzdkOGY5
NzNlNWJkNDYzNmRmYmYzNWY5NzBhNWY4Li41MDFhNzA4MWY5ZjcyOTY3NmZjZGNiMjY5MWJiYmIz
MjQ2ZDIwZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiB3ZWJraXRBdXRoZW50aWNhdGlv
blJlcXVlc3RHZXRBdXRoZW50aWNhdGlvbkNoYWxsZQogCiB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0
aW9uUmVxdWVzdERpZEF1dGhlbnRpY2F0ZShXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJl
cXVlc3QpCiB7Ci0gICAgYXV0byogY3JlZGVudGlhbCA9IHdlYmtpdENyZWRlbnRpYWxDcmVhdGUo
cmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlT3IoV2ViQ29yZTo6Q3JlZGVu
dGlhbCgpKSk7CisgICAgYXV0byogY3JlZGVudGlhbCA9IHdlYmtpdENyZWRlbnRpYWxDcmVhdGUo
cmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlX29yKFdlYkNvcmU6OkNyZWRl
bnRpYWwoKSkpOwogICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2lnbmFsc1tBVVRIRU5USUNB
VEVEXSwgMCwgY3JlZGVudGlhbCk7CiAgICAgd2Via2l0X2NyZWRlbnRpYWxfZnJlZShjcmVkZW50
aWFsKTsKIH0KQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9y
ZXF1ZXN0X3NldF9wcm9wb3NlZF9jcmVkZW50aWFsKFdlYktpdEF1dGhlbnRpY2F0aW9uUgogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX1JFUVVFU1QocmVxdWVz
dCkpOwogCiAgICAgaWYgKCFjcmVkZW50aWFsKSB7Ci0gICAgICAgIHJlcXVlc3QtPnByaXYtPnBy
b3Bvc2VkQ3JlZGVudGlhbCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+
cHJvcG9zZWRDcmVkZW50aWFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTUsOCArNDU1LDggQEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9hdXRoZW50aWNhdGUoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXEKICAgICBpZiAo
Y3JlZGVudGlhbCkKICAgICAgICAgcmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsID0g
d2Via2l0Q3JlZGVudGlhbEdldENyZWRlbnRpYWwoY3JlZGVudGlhbCk7CiAgICAgZWxzZQotICAg
ICAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwgPSBXVEY6Om51bGxvcHQ7Ci0g
ICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpVc2VDcmVkZW50aWFsLCByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwudmFsdWVP
cihXZWJDb3JlOjpDcmVkZW50aWFsKCkpKTsKKyAgICAgICAgcmVxdWVzdC0+cHJpdi0+YWNjZXB0
ZWRDcmVkZW50aWFsID0gc3RkOjpudWxsb3B0OworICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgcmVxdWVzdC0+
cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlX29yKFdlYkNvcmU6OkNyZWRlbnRpYWwoKSkp
OwogICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gdHJ1ZTsKIH0KIApAQCAtNDc3
LDcgKzQ3Nyw3IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuY2VsKFdl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOwotICAgIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbCA9IFdURjo6
bnVsbG9wdDsKKyAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVlOwogCiAgICAg
Z19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0NBTkNFTExFRF0sIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDQzYWZkMzU0OTc3NWQxYTNlMGE5MzE3MzBiMThmZWE4NGY5NzI3
ZmYuLjZmZmZlNTlkZGQ2Mjc0YzA0MWQ5MjBjYTMyOTY3Nzg0YWUwY2VjMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKQEAgLTE2OSwxMCArMTY5LDEwIEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdGb3JQYWdlKG1f
c2Vzc2lvbi0+cHJpdi0+d2ViQ29udGV4dCwgJnBhZ2UpOwogICAgICAgICBpZiAoIXdlYlZpZXcp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBkaWFsb2dUeXBlID0gd2Via2l0V2ViVmlld0dldEN1
cnJlbnRTY3JpcHREaWFsb2dUeXBlKHdlYlZpZXcpOwogICAgICAgICBpZiAoIWRpYWxvZ1R5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgc3dpdGNoIChkaWFsb2dUeXBlLnZhbHVlKCkpIHsKICAgICAg
ICAgY2FzZSBXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVDoKICAgICAgICAgICAgIHJldHVybiBB
UEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlwZTo6QWxlcnQ7
CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFQSTo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQ6OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiBjdXJyZW50UHJlc2VudGF0aW9uT2ZQ
YWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2Vj
dXJpdHlPcmlnaW4uY3BwCmluZGV4IDI1YWU5Mzc0MGMwYmE5YTBhNzdhNzY5YmJhOTU5ZTc5MjUz
NmU1ODIuLjY2NWUwZWU3NjFkNDIyOWRiODBlYzg0MThkMjc4MWU1NjAzY2M0ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBndWludDE2IHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3BvcnQoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChvcmlnaW4sIDApOwogCi0gICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJp
dHlPcmlnaW5EYXRhLnBvcnQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbkRhdGEucG9ydC52YWx1ZV9vcigwKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDc2ZWU2ZDI3
OWI3YTcyNjU1Njk2YjFmODEwNDhhNWFhOTE0OTdkZjIuLjY3M2Q5NTRjN2VhMWVhMGVmODQzYWU1
MzQ2ZDUwMTVkZmMzZTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNTY0LDcgKzI1NjQsNyBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdEaXNtaXNzQ3VycmVudFNjcmlwdERpYWxvZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogT3B0aW9uYWw8V2ViS2l0U2NyaXB0RGlhbG9nVHlwZT4gd2Via2l0V2ViVmlld0dldEN1cnJl
bnRTY3JpcHREaWFsb2dUeXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgaWYgKCF3
ZWJWaWV3LT5wcml2LT5jdXJyZW50U2NyaXB0RGlhbG9nKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+KHdlYlZpZXctPnByaXYtPmN1cnJlbnRTY3Jp
cHREaWFsb2ctPnR5cGUpOwogfQpAQCAtMjgzNiw3ICsyODM2LDcgQEAgdm9pZCB3ZWJraXRXZWJW
aWV3U2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb24KIAogdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlybUNvbXBvc2l0aW9uKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICB3ZWJraXRXZWJWaWV3
U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3Mod2ViVmlldywgdGV4dCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQpOworICAgIHdlYmtpdFdlYlZpZXdTeW50aGVzaXplQ29tcG9zaXRpb25L
ZXlQcmVzcyh3ZWJWaWV3LCB0ZXh0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAK
IHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbENvbXBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTM4MTUsNyArMzgxNSw3IEBAIHZvaWQgd2Via2l0
V2ViVmlld1J1bkphdmFzY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmYWxzZSB9OworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwg
c3RkOjpudWxsb3B0LCBmYWxzZSB9OwogICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0V2l0
aFBhcmFtcyh3ZWJWaWV3LCBzY3JpcHQsIFdURk1vdmUocGFyYW1zKSwgY2FuY2VsbGFibGUsIGNh
bGxiYWNrLCB1c2VyRGF0YSk7CiB9CiAKQEAgLTM4MzgsNyArMzgzOCw3IEBAIHZvaWQgd2Via2l0
X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBzY3JpcHQsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2Vi
VmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH07CisgICAgUnVuSmF2YVNjcmlwdFBhcmFtZXRl
cnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBz
dGQ6Om51bGxvcHQsIHRydWUgfTsKICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFdpdGhQ
YXJhbXMod2ViVmlldywgc2NyaXB0LCBXVEZNb3ZlKHBhcmFtcyksIGNhbmNlbGxhYmxlLCBjYWxs
YmFjaywgdXNlckRhdGEpOwogfQogCkBAIC0zOTM2LDcgKzM5MzYsNyBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBnY2hhcgogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tf
bmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKICAgICBhdXRv
IHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUoU3RyaW5nOjpm
cm9tVVRGOCh3b3JsZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJ
bkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdvcmxkLmdldCgpLCBb
dGFzayA9IFdURk1vdmUodGFzayldIChhdXRvJiYgcmVzdWx0KSB7CisgICAgZ2V0UGFnZSh3ZWJW
aWV3KS5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6OmZyb21VVEY4
KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUgfSwgc3RkOjpudWxs
b3B0LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSAoYXV0byYmIHJlc3VsdCkg
ewogICAgICAgICBSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwog
ICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQpAQCAtMzk4MSw3ICszOTgxLDcgQEAgc3Rh
dGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0Fz
eW5jUmVzdWx0KiByZXN1bHQsIGcKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBn
cG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0
YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwotICAgIGdldFBhZ2Uod2ViVmlldyku
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9j
YXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwgeyB9LCBmYWxzZSwgV1RG
OjpudWxsb3B0LCB0cnVlIH0sCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2NoYXIq
PihvdXRwdXRTdHJlYW1EYXRhKSksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUg
fSwKICAgICAgICAgW3Rhc2tdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBSZWZQdHI8
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICAg
ICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKaW5kZXggYTM5MjRl
OWNhYTQ5NGU1ODlhOTA4YzQ3OTA5OWM1N2Q0NTczNWEzYy4uNjFmMDcxM2YxMTZkZWQzNWFhODY5
ZDM3OWFjNDgzMDIyZjRkNDE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgRHJhZ1NvdXJjZTo6
RHJhZ1NvdXJjZShHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgIGlmICghZHJhZy5tX3NlbGVj
dGlvbkRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZHJhZy5tX3NlbGVjdGlv
bkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWcubV9zZWxlY3Rpb25EYXRhID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51bGxwdHI7CiAKICAgICAgICAgR2Rr
RGV2aWNlKiBkZXZpY2UgPSBnZGtfZHJhZ19jb250ZXh0X2dldF9kZXZpY2UoY29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3Bw
CmluZGV4IGQ1NWRmYjMwZjkyMDk3ZTM5ZDNhM2M3ODZlMjEyZjJmZjQwNTFmMTguLmZmZWUxYjA0
OTI1ZmMwYjUyNjA5Y2FjZWI3NjFlNmFjYzM2MTlkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCkBAIC0xMDEsNyArMTAxLDcg
QEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KICAgICAgICAgaWYgKGRyYWcubV9kcmFnLmdldCgp
ICE9IGd0a0RyYWcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZHJhZy5tX3NlbGVj
dGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWcubV9zZWxlY3Rpb25EYXRhID0g
c3RkOjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51bGxwdHI7CiAKICAgICAgICAg
R2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZHJhZ19nZXRfZGV2aWNlKGd0a0RyYWcpOwpAQCAtMTIx
LDcgKzEyMSw3IEBAIHZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVj
dGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvCiAgICAgICAgIGlmIChkcmFnLm1f
ZHJhZy5nZXQoKSAhPSBndGtEcmFnKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGRy
YWcubV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAgICAgICBkcmFnLm1fc2VsZWN0
aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZHJhZy5tX2RyYWcgPSBudWxscHRyOwog
ICAgIH0pLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXQuaAppbmRleCBmOWM1ZGQ3NjA4YTA5YTExMjM0YjM0MTk0NWY2ZmU2NTg5ZTQwM2RjLi5l
OWU0OGZiMDg3ZmViN2Q5YTYzYjI3OTg3ZjI5ZGZjYjZhZTAzODcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBh
Y2NlcHQoUGxhdGZvcm1Ecm9wQ29udGV4dCosIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiA9
IFdURjo6bnVsbG9wdCwgdW5zaWduZWQgPSAwKTsKKyAgICB2b2lkIGFjY2VwdChQbGF0Zm9ybURy
b3BDb250ZXh0KiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+ID0gc3RkOjpudWxsb3B0LCB1
bnNpZ25lZCA9IDApOwogICAgIHZvaWQgZW50ZXIoV2ViQ29yZTo6SW50UG9pbnQmJiwgdW5zaWdu
ZWQgPSAwKTsKICAgICB2b2lkIHVwZGF0ZShXZWJDb3JlOjpJbnRQb2ludCYmLCB1bnNpZ25lZCA9
IDApOwogICAgIHZvaWQgbGVhdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggNmJmNDlhNDEyODljMWY3OTlmNDdjM2U4
MWM5MmZmZWM3MjAwMzAzOC4uOGNmYTcwYjgyOGEyMDQ1M2I3OTMzOGRkMGI0Y2Y0NWIzOWY3YzBi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmFjY2VwdChHZGtE
cmFnQ29udGV4dCogZHJvcCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IHBvc2l0aQogICAg
IG1fZHJvcCA9IGRyb3A7CiAgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIG1fZGF0YVJl
cXVlc3RDb3VudCA9IDA7Ci0gICAgbV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAg
IG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlYkNvcmUgbmVlZHMg
dGhlIHNlbGVjdGlvbiBkYXRhIHRvIGRlY2lkZSwgc28gd2UgbmVlZCB0byBwcmVsb2FkIHRoZQog
ICAgIC8vIGRhdGEgb2YgdGFyZ2V0cyB3ZSBzdXBwb3J0LiBPbmNlIGFsbCBkYXRhIHJlcXVlc3Rz
IGFyZSBkb25lIHdlIHN0YXJ0CkBAIC0yNDYsOCArMjQ2LDggQEAgdm9pZCBEcm9wVGFyZ2V0Ojps
ZWF2ZVRpbWVyRmlyZWQoKQogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigp
OwogCiAgICAgbV9kcm9wID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uID0gV1RGOjpudWxsb3B0
OwotICAgIG1fc2VsZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc2l0aW9uID0g
c3RkOjpudWxsb3B0OworICAgIG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZSgpCkBAIC0yNzcsOCArMjc3LDggQEAgdm9pZCBEcm9wVGFy
Z2V0Ojpkcm9wKEludFBvaW50JiYgcG9zaXRpb24sIHVuc2lnbmVkIHRpbWUpCiAgICAgZ3RrX2Ry
YWdfZmluaXNoKG1fZHJvcC5nZXQoKSwgVFJVRSwgRkFMU0UsIHRpbWUpOwogCiAgICAgbV9kcm9w
ID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uID0gV1RGOjpudWxsb3B0OwotICAgIG1fc2VsZWN0
aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc2l0aW9uID0gc3RkOjpudWxsb3B0Owor
ICAgIG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azQuY3BwCmluZGV4IDFjZGEzYWEyMzg4ZTA3NjhiYjQ2Yzc5NTViYTJkZTEwMGZjYjg2OTku
LjI0MDZlMGY4NjczNmU1ZDkwMmVhZTEzYTBiOTEwNDEzY2IxMGY3YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC0yOTQs
MTQgKzI5NCwxNCBAQCB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlKCkKICAgICBhdXRvKiBwYWdlID0g
d2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykp
OwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBtX3Bvc2l0aW9uLnZh
bHVlT3IoSW50UG9pbnQoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fcG9zaXRpb24udmFsdWVf
b3IoSW50UG9pbnQoKSk7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0YS52
YWx1ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIHsgfSk7CiAgICAgcGFnZS0+ZHJhZ0V4aXRlZChk
cmFnRGF0YSk7CiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAKICAg
ICBtX2Ryb3AgPSBudWxscHRyOwotICAgIG1fcG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7Ci0gICAg
bV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9zaXRpb24gPSBzdGQ6Om51
bGxvcHQ7CisgICAgbV9zZWxlY3Rpb25EYXRhID0gc3RkOjpudWxsb3B0OwogICAgIG1fY2FuY2Vs
bGFibGUgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAKaW5kZXggOGIxMWVhYzZkZDhhZTNmZDcyMmIyM2Uz
NDA3ZWRlNzcyNjgyNGE3Ny4uYmVmODM0YmY0NmI3ODNhNjhjOGI3OTVkOGIxNTdjNzQyYmQ2M2Jh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1
cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9w
dXBNZW51LmNwcApAQCAtMzQsNyArMzQsNyBAQCBXZWJLaXRQb3B1cE1lbnU6OldlYktpdFBvcHVw
TWVudShHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQmCiAKIHN0
YXRpYyB2b2lkIG1lbnVDbG9zZUNhbGxiYWNrKFdlYktpdFBvcHVwTWVudSogcG9wdXBNZW51KQog
ewotICAgIHBvcHVwTWVudS0+YWN0aXZhdGVJdGVtKFdURjo6bnVsbG9wdCk7CisgICAgcG9wdXBN
ZW51LT5hY3RpdmF0ZUl0ZW0oc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJLaXRQb3B1cE1l
bnU6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBwbGF0Zm9ybURhdGEsIGludDMy
X3Qgc2VsZWN0ZWRJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcAppbmRleCAwOWY3NjIzYmYyZGI0ZWQ5OWRhYjU3ZTM3M2U2ODQxMWQzNmRhYmQ1Li40
ODM4OGQ2OTEwZTM0OWU2OThhMTA3NDMxNWY4NjI2MjViOTBkNDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7
IH0sIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKLSAgICAgICAgbV9pbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMF0pLnZhbHVlT3IoMCksIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMV0pLnZhbHVl
T3IoMCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmlu
c3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKS52YWx1ZV9vcigwKSwgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSkudmFsdWVfb3IoMCksIHRva2Vu
c1syXSk7CiAgICAgfQogCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAppbmRleCBlNzgyODU0OTRjODI5YzA1Yjg2MDQ5YzU5ZTVkNGVmZjNmZGM5ZGY5Li5m
NTczN2VkOWIzMjQ5OTE1YmI0NDE2YTkyNTYzZTRiNThhYTY1ZDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAt
MTIyMyw3ICsxMjIzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VCdXR0b25QcmVz
c2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgaW50IGMKICAgICBpZiAoYnV0dG9u
ID09IEdES19CVVRUT05fU0VDT05EQVJZKQogICAgICAgICBwcml2LT5jb250ZXh0TWVudUV2ZW50
LnJlc2V0KGdka19ldmVudF9jb3B5KGV2ZW50KSk7CiAKLSAgICBwcml2LT5wYWdlUHJveHktPmhh
bmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgeyBjbGFtcFRvSW50ZWdl
cih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSwgY2xpY2tDb3VudCwgV1RGOjpudWxsb3B0KSk7Cisg
ICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZXZlbnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0sIGNsaWNrQ291
bnQsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUJ1
dHRvblJlbGVhc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgaW50IGNsaWNrQ291
bnQsIGRvdWJsZSB4LCBkb3VibGUgeSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKQEAgLTEyMzksNyAr
MTIzOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVsZWFzZWQoV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBpbnQKICAgICBhdXRvKiBzZXF1ZW5jZSA9IGd0
a19nZXN0dXJlX3NpbmdsZV9nZXRfY3VycmVudF9zZXF1ZW5jZShHVEtfR0VTVFVSRV9TSU5HTEUo
Z2VzdHVyZSkpOwogICAgIGd0a19nZXN0dXJlX3NldF9zZXF1ZW5jZV9zdGF0ZShnZXN0dXJlLCBz
ZXF1ZW5jZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgcHJpdi0+cGFnZVBy
b3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZ3RrX2dlc3R1cmVfZ2V0
X2xhc3RfZXZlbnQoZ2VzdHVyZSwgc2VxdWVuY2UpLCB7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFt
cFRvSW50ZWdlcih5KSB9LCBjbGlja0NvdW50LCBXVEY6Om51bGxvcHQpKTsKKyAgICBwcml2LT5w
YWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChndGtfZ2VzdHVy
ZV9nZXRfbGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSksIHsgY2xhbXBUb0ludGVnZXIoeCks
IGNsYW1wVG9JbnRlZ2VyKHkpIH0sIGNsaWNrQ291bnQsIHN0ZDo6bnVsbG9wdCkpOwogfQogI2Vu
ZGlmCiAKQEAgLTEyNTksNyArMTI1OSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEludmVydERpcmVj
dGlvbkZvclNjcm9sbEV2ZW50KFdlYkhpdFRlc3RSZXN1bHREYXRhOjpJc1Njcm9sbGJhCiB9CiAK
ICNpZiAhVVNFKEdUSzQpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVs
RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudCogZXZlbnQsIE9w
dGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNlPiBwaGFzZSA9IFdURjo6bnVsbG9wdCwgT3B0aW9u
YWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IG1vbWVudHVtID0gV1RGOjpudWxsb3B0KQorc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQ
aGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNl
PiBtb21lbnR1bSA9IHN0ZDo6bnVsbG9wdCkKIHsKICAgICBWaWV3R2VzdHVyZUNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0dXJlQ29udHJvbGxlcih3ZWJW
aWV3QmFzZSk7CiAgICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci0+aXNTd2lwZUdlc3R1
cmVFbmFibGVkKCkpIHsKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2Us
IEdkCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgQVNTRVJUKCFwcml2LT5kaWFsb2cpOwogICAgIGlmIChwaGFzZSkKLSAgICAgICAg
cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZl
bnQsIHBoYXNlLnZhbHVlKCksIG1vbWVudHVtLnZhbHVlT3IoV2ViV2hlZWxFdmVudDo6UGhhc2U6
OlBoYXNlTm9uZSkpKTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50
KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHBoYXNlLnZhbHVlKCksIG1vbWVudHVtLnZhbHVl
X29yKFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUpKSk7CiAgICAgZWxzZQogICAgICAg
ICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChl
dmVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0d0ay5jcHAKaW5kZXggOGIwYzg5MGMyMWJkMmU1M2Q3ODAzZjIwZThkZmE0MGM3
YzIxMDJiYy4uOTdkMDlkZmZiYzY3NmNjNWNkMzg1NTVjMTEyNWI0NDBiZWM3ZDEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsu
Y3BwCkBAIC00NjMsNSArNDYzLDUgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91
bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSogcmdiYSkKICAgICBnX3Jl
dHVybl9pZl9mYWlsKHJnYmEpOwogCiAgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRXZWJWaWV3QmFz
ZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdlYlZpZXcpKTsK
LSAgICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVPcihXZWJDb3JlOjpDb2xv
cjo6d2hpdGUpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKS52YWx1ZV9vcihX
ZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA4Y2MzMzk3NmMzMzQ2NTMzN2Q1NjAwMDIwNWMz
ZjUzZTE2Mjg2MTQ5Li5jNzIzYTczYjhhNmUwN2E0YzE5MzE3N2RlZWEzOTEwOGE0NWExOTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQpA
QCAtNjU4LDIzICs2NTgsMjMgQEAgLSAodm9pZClfcHJvY2Vzc1dpbGxTd2FwT3JEaWRFeGl0CiAg
ICAgX2FuaW1hdGVkUmVzaXplT3JpZ2luYWxDb250ZW50V2lkdGggPSAwOwogICAgIF9hbmltYXRl
ZFJlc2l6ZU9sZEJvdW5kcyA9IHsgfTsKICAgICBbX2NvbnRlbnRWaWV3IHNldEhpZGRlbjpOT107
Ci0gICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKLSAgICBfdW5vYnNj
dXJlZENlbnRlclRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICBfc2Nyb2xsT2Zmc2V0VG9S
ZXN0b3JlID0gc3RkOjpudWxsb3B0OworICAgIF91bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlID0g
c3RkOjpudWxsb3B0OwogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0gV2ViQ29yZTo6
Q29sb3IoKTsKICAgICBfaW52b2tpbmdVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gTk87
CiAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Nyb2xsVmlld0Rl
bGVnYXRlQ2FsbGJhY2sgPSBOTzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzRm9yQW55UmVhc29uID0gTk87CiAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IE5POwogICAgIF9jdXJyZW50bHlBZGp1c3RpbmdT
Y3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgPSBOTzsKLSAgICBfbGFzdFNlbnRWaWV3TGF5b3V0
U2l6ZSA9IFdURjo6bnVsbG9wdDsKLSAgICBfbGFzdFNlbnRNYXhpbXVtVW5vYnNjdXJlZFNpemUg
PSBXVEY6Om51bGxvcHQ7Ci0gICAgX2xhc3RTZW50RGV2aWNlT3JpZW50YXRpb24gPSBXVEY6Om51
bGxvcHQ7CisgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSBzdGQ6Om51bGxvcHQ7CisgICAg
X2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplID0gc3RkOjpudWxsb3B0OworICAgIF9sYXN0
U2VudERldmljZU9yaWVudGF0aW9uID0gc3RkOjpudWxsb3B0OwogCi0gICAgX2Zyb3plblZpc2li
bGVDb250ZW50UmVjdCA9IFdURjo6bnVsbG9wdDsKLSAgICBfZnJvemVuVW5vYnNjdXJlZENvbnRl
bnRSZWN0ID0gV1RGOjpudWxsb3B0OworICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBz
dGQ6Om51bGxvcHQ7CisgICAgX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rpb25JRCA9IHsg
fTsKLSAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IFdURjo6bnVsbG9w
dDsKKyAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIF9sYXN0VHJhbnNhY3Rpb25JRCA9IHsgfTsKIApAQCAtNzk0LDcgKzc5NCw3IEBA
IC0gKHZvaWQpX3RyYWNrVHJhbnNhY3Rpb25Db21taXQ6KGNvbnN0IFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyCiAgICAgICAgIGF1dG8gdGltZVNpbmNlRmlyc3RSZXF1
ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtICpfdGltZU9mRmly
c3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdDsKICAgICAgICAgaWYg
KHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlCZWZvcmVOb0Nv
bW1pdHNMb2dnaW5nKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiJXAgKHBh
Z2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6XSAtIGZpbmFs
bHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29udGVudCByZWN0IHVwZGF0
ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRlbnRpZmllcigp
LnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0LnZhbHVl
KCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2NCgpKTsKLSAg
ICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0aFBlbmRpbmdDb21t
aXQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF90aW1lT2ZGaXJzdFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAt
ODMxLDEzICs4MzEsMTMgQEAgLSAoQk9PTClfcmVzdG9yZVNjcm9sbEFuZFpvb21TdGF0ZUZvclRy
YW5zYWN0aW9uOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVQKICAgICBpZiAoIV9maXJz
dFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0b3JlIHx8IGxheWVyVHJlZVRyYW5zYWN0aW9uLnRy
YW5zYWN0aW9uSUQoKSA8IF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0b3JlLnZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBh
Z2VSZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgIF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBh
Z2VSZXN0b3JlID0gc3RkOjpudWxsb3B0OwogCiAgICAgQk9PTCBuZWVkVXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0cyA9IE5POwogCiAgICAgaWYgKF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUpIHsKICAg
ICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQgPSBfc2Nyb2xsT2Zm
c2V0VG9SZXN0b3JlLnZhbHVlKCk7Ci0gICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbDxmbG9hdD4oY29udGVu
dFpvb21TY2FsZShzZWxmKSwgX3NjYWxlVG9SZXN0b3JlKSkgewogICAgICAgICAgICAgc2NhbGVk
U2Nyb2xsT2Zmc2V0LnNjYWxlKF9zY2FsZVRvUmVzdG9yZSk7CkBAIC04NTIsNyArODUyLDcgQEAg
LSAoQk9PTClfcmVzdG9yZVNjcm9sbEFuZFpvb21TdGF0ZUZvclRyYW5zYWN0aW9uOihjb25zdCBX
ZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVQKIAogICAgIGlmIChfdW5vYnNjdXJlZENlbnRlclRvUmVz
dG9yZSkgewogICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHVub2JzY3VyZWRDZW50ZXJUb1Jl
c3RvcmUgPSBfdW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZS52YWx1ZSgpOwotICAgICAgICBfdW5v
YnNjdXJlZENlbnRlclRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX3Vub2JzY3Vy
ZWRDZW50ZXJUb1Jlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKFdURjo6YXJl
RXNzZW50aWFsbHlFcXVhbDxmbG9hdD4oY29udGVudFpvb21TY2FsZShzZWxmKSwgX3NjYWxlVG9S
ZXN0b3JlKSkgewogICAgICAgICAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0gVUlFZGdlSW5z
ZXRzSW5zZXRSZWN0KHNlbGYuYm91bmRzLCBfb2JzY3VyZWRJbnNldHMpOwpAQCAtOTcxLDcgKzk3
MSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246KE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uCiAgICAgaWYgKHNjcm9sbFBvc2l0aW9uKQog
ICAgICAgICBfc2Nyb2xsT2Zmc2V0VG9SZXN0b3JlID0gV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6
OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KHNjcm9sbFBvc2l0
aW9uLnZhbHVlKCkpLCBXZWJDb3JlOjp0b0Zsb2F0U2l6ZShzY3JvbGxPcmlnaW4pKTsKICAgICBl
bHNlCi0gICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfb2JzY3Vy
ZWRJbnNldHNXaGVuU2F2ZWQgPSBvYnNjdXJlZEluc2V0czsKICAgICBfc2NhbGVUb1Jlc3RvcmUg
PSBzY2FsZTsKQEAgLTE2NDYsNyArMTY0Niw3IEBAIC0gKHZvaWQpX3Njcm9sbFZpZXc6KFVJU2Ny
b2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxFdmVudDooCiAg
ICAgfQogCiAgICAgaWYgKHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhhc2VCZWdhbikg
ewotICAgICAgICBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IF93aGVlbEV2ZW50Q291bnRJbkN1cnJlbnRTY3JvbGxHZXN0dXJlID0gMDsKICAgICB9CiAKQEAg
LTIxNjksNyArMjE2OSw3IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lCiAKIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgYWN0aXZlTWF4aW11bVVub2JzY3Vy
ZWRTaXplKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgQ0dSZWN0JiBib3VuZHMpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSh3ZWJWaWV3LT5fbWF4aW11bVVub2JzY3VyZWRTaXpl
T3ZlcnJpZGUudmFsdWVPcihib3VuZHMuc2l6ZSkpOworICAgIHJldHVybiBXZWJDb3JlOjpGbG9h
dFNpemUod2ViVmlldy0+X21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLnZhbHVlX29yKGJv
dW5kcy5zaXplKSk7CiB9CiAKIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0aW9uKFdLV2Vi
VmlldyAqd2ViVmlldykKQEAgLTI0MTksOCArMjQxOSw4IEBAIC0gKHZvaWQpX25hdmlnYXRpb25H
ZXN0dXJlRGlkQmVnaW4KIAogLSAodm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQKIHsKLSAg
ICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gV1RGOjpudWxsb3B0OwotICAgIF9mcm96ZW5V
bm9ic2N1cmVkQ29udGVudFJlY3QgPSBXVEY6Om51bGxvcHQ7CisgICAgX2Zyb3plblZpc2libGVD
b250ZW50UmVjdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRS
ZWN0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKF9jb250ZW50Vmlld1Nob3VsZEJlY29tZUZp
cnN0UmVzcG9uZGVyQWZ0ZXJOYXZpZ2F0aW9uR2VzdHVyZSkgewogICAgICAgICBpZiAoc2VsZi53
aW5kb3cgJiYgIVtfY29udGVudFZpZXcgaXNGaXJzdFJlc3BvbmRlcl0pCkBAIC0yNTQzLDcgKzI1
NDMsNyBAQCAtICh2b2lkKV9zZXRVSUV2ZW50QXR0cmlidXRpb246KFVJRXZlbnRBdHRyaWJ1dGlv
biAqKWF0dHJpYnV0aW9uCiAgICAgICAgICk7CiAgICAgICAgIF9wYWdlLT5zZXRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAgfSBlbHNlCi0gICAgICAg
IF9wYWdlLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEY6Om51bGxvcHQpOworICAgICAg
ICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0KTsKICNlbmRp
ZgogfQogCkBAIC0yNTcxLDcgKzI1NzEsNyBAQCAtIChDR1JlY3QpX2NvbnRlbnRWaXNpYmxlUmVj
dAogLSAoQ0dTaXplKV9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlCiB7CiAgICAgQVNTRVJUKF92
aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKTsKLSAgICByZXR1cm4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJp
ZGUudmFsdWVPcihDR1NpemVaZXJvKTsKKyAgICByZXR1cm4gX3ZpZXdMYXlvdXRTaXplT3ZlcnJp
ZGUudmFsdWVfb3IoQ0dTaXplWmVybyk7CiB9CiAKIC0gKHZvaWQpX3NldFZpZXdMYXlvdXRTaXpl
T3ZlcnJpZGU6KENHU2l6ZSl2aWV3TGF5b3V0U2l6ZU92ZXJyaWRlCkBAIC0yNTg2LDcgKzI1ODYs
NyBAQCAtICh2b2lkKV9zZXRWaWV3TGF5b3V0U2l6ZU92ZXJyaWRlOihDR1NpemUpdmlld0xheW91
dFNpemVPdmVycmlkZQogLSAoQ0dTaXplKV9tYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZQog
ewogICAgIEFTU0VSVChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpOwotICAgIHJldHVy
biBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUudmFsdWVPcihDR1NpemVaZXJvKTsKKyAg
ICByZXR1cm4gX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLnZhbHVlX29yKENHU2l6ZVpl
cm8pOwogfQogCiAtICh2b2lkKV9zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dT
aXplKXNpemUKQEAgLTMxMzgsMTQgKzMxMzgsMTQgQEAgLSAodm9pZClfb3ZlcnJpZGVMYXlvdXRQ
YXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOihDR1NpemUpbWluaW11bUxheW91dFNpemUK
IAogLSAodm9pZClfY2xlYXJPdmVycmlkZUxheW91dFBhcmFtZXRlcnMKIHsKLSAgICBfdmlld0xh
eW91dFNpemVPdmVycmlkZSA9IFdURjo6bnVsbG9wdDsKLSAgICBfbWF4aW11bVVub2JzY3VyZWRT
aXplT3ZlcnJpZGUgPSBXVEY6Om51bGxvcHQ7CisgICAgX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUg
PSBzdGQ6Om51bGxvcHQ7CisgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlID0gc3Rk
OjpudWxsb3B0OwogfQogCi1zdGF0aWMgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1lbnRQYWlycywgYm9vbCB2aWV3cG9y
dEZpdEVuYWJsZWQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1lbnRQYWlycywgYm9vbCB2aWV3cG9ydEZp
dEVuYWJsZWQpCiB7CiAgICAgaWYgKCF2aWV3cG9ydEFyZ3VtZW50UGFpcnMpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cyhXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4IGRhMGU0Zjhl
MTRlMmNlMWE5YjdlOGIzOWNhOWQyMTZkMTAwZDI1ZWQuLmNlMWZiZTBhZDllN2VlNmNkMzdhNjAy
OTdiNmEyZjVlN2JmNGFiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTQwNCw3ICs0MDQsNyBAQCAtICh2
b2lkKV9zZXRVSUV2ZW50QXR0cmlidXRpb25Gb3JUZXN0aW5nOihVSUV2ZW50QXR0cmlidXRpb24g
KilhdHRyaWJ1dGlvbiB3aXRoTgogCiAgICAgICAgIF9wYWdlLT5zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIF9wYWdl
LT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEY6Om51bGxvcHQpOworICAgICAgICBfcGFn
ZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2Vi
Vmlld01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFj
Lm1tCmluZGV4IDQzZDE2YWQyOGY1NDFhNmZmN2JlYzIzMjgwMjU4NjI4ODMzYzNhYTQuLmE2ZTIw
YTUzOWUwYjc3MjkyYWEwZGVjM2RhODlmMGY2MTY1YWQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tCkBAIC03Miw3ICs3Miw3IEBAIE9w
dGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Nyb2xsYmFyU3R5
bGUoX1dLT3ZlcmxheVNjcm9sbGJhCiAgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVB
dXRvbWF0aWM6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChX
S0ltcGxlbWVudGF0aW9uTWFjKSA8TlNUZXh0SW5wdXRDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGQ1MzNhMTQ5YmQ2MjgwNzQwNjI0NGU1
MTUwYWFlOTkwZmVkNGUxY2EuLmU2OTk1ZTI2MmRjZTdhYjQxMWQyYTJiNzdjM2FmOTExMzZmZmU0
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAt
MzEyLDcgKzMxMiw3IEBAIHZvaWQgVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChzdHJ1Y3Qgd3Bl
X2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCkKICAgICBpZiAoZmlsdGVyUmVzdWx0LmhhbmRs
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UoKS5oYW5kbGVLZXlib2FyZEV2ZW50KFdl
YktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgZXZlbnQtPnByZXNzZWQgPyBmaWx0
ZXJSZXN1bHQua2V5VGV4dCA6IFN0cmluZygpLCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpIYW5k
bGVkQnlJbnB1dE1ldGhvZDo6Tm8sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KSk7CisgICAg
cGFnZSgpLmhhbmRsZUtleWJvYXJkRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50
KGV2ZW50LCBldmVudC0+cHJlc3NlZCA/IGZpbHRlclJlc3VsdC5rZXlUZXh0IDogU3RyaW5nKCks
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kOjpObywgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogdm9pZCBWaWV3OjpzeW50aGVzaXplQ29tcG9z
aXRpb25LZXlQcmVzcyhjb25zdCBTdHJpbmcmIHRleHQsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3Jl
OjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgdW5kZXJsaW5lcywgT3B0aW9uYWw8RWRpdGluZ1Jh
bmdlPiYmIHNlbGVjdGlvblJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwCmluZGV4IDVlZGZlNzZhMDc2NjBlNTAyYTUyNmEw
ZDdhOWQ5YWM4NWNkMjk4NDEuLjk5MTZmM2Q3YTA3ODdiYzFlMzM2YjM0NThlNjQwNDFjMTc4NjQy
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9w
dXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBv
cHVwTWVudS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViS2l0UG9wdXBNZW51OjpXZWJLaXRQb3B1
cE1lbnUoV0tXUEU6OlZpZXcmIHZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQmIGMKIAog
c3RhdGljIHZvaWQgbWVudUNsb3NlQ2FsbGJhY2soV2ViS2l0UG9wdXBNZW51KiBwb3B1cE1lbnUp
CiB7Ci0gICAgcG9wdXBNZW51LT5hY3RpdmF0ZUl0ZW0oV1RGOjpudWxsb3B0KTsKKyAgICBwb3B1
cE1lbnUtPmFjdGl2YXRlSXRlbShzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYktpdFBvcHVw
TWVudTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIHBsYXRmb3JtRGF0YSwgaW50
MzJfdCBzZWxlY3RlZEluZGV4KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYktpdFBvcHVwTWVu
dTo6c2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtSW5kZXgpCiB2b2lkIFdlYktpdFBvcHVwTWVudTo6
YWN0aXZhdGVJdGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMs
IGl0ZW1JbmRleC52YWx1ZU9yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlT3IoLTEpKSk7CisgICAgICAg
IG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVl
X29yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlX29yKC0xKSkpOwogICAgIGlmIChtX21lbnUpIHsKICAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fbWVudS5nZXQoKSwg
R19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CiAgICAg
ICAgIG1fbWVudSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCA1OTYzNjY4NTViZjM1ZWU1NDEwMWM2
MGRlNWQ1YTM5NTY3MTBiMGMxLi4yMjQwMzA0Yzk2MWUxMDM4OTJkZWJmMjgzM2IwMDFiZjAwMWRi
YjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdl
YlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0
V2ViVmlld1dQRS5jcHAKQEAgLTIyNSw1ICsyMjUsNSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19n
ZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb2xvciog
YwogICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KTsKIAogICAg
IGF1dG8mIHdlYkNvcmVDb2xvciA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCk7Ci0gICAgd2Via2l0
Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IudmFsdWVPcihXZWJDb3JlOjpD
b2xvcjo6d2hpdGUpLCBjb2xvcik7CisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xv
cih3ZWJDb3JlQ29sb3IudmFsdWVfb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKSwgY29sb3IpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCmluZGV4IDgwNDkxODJlNjg3YzkxZDcyNjQw
M2E3YjMxODRmNTQ5YmQ2NzI1N2MuLmUzNWU1MTRiMzMyYmQzZTBiMzkxYzI1YTNhZjcwNjQ1ZDlj
OWIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
U2Vjb25kcyBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVtRHVyYXRpb24oKSBjb25zdAog
ICAgIC8vIFRoZSAiY29tcHV0ZSB0aGUgdGljayBkdXJhdGlvbiIgYWxnb3JpdGhtICjCpzE3LjQg
RGlzcGF0Y2hpbmcgQWN0aW9ucykuCiAgICAgU2Vjb25kcyByZXN1bHQ7CiAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IHN0YXRlcykKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LCBlbnRy
eS5zZWNvbmQuZHVyYXRpb24udmFsdWVPcihTZWNvbmRzKDApKSk7CisgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25kLmR1cmF0aW9uLnZhbHVlX29yKFNlY29uZHMo
MCkpKTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZv
aWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25EdXJhdGlvblRp
bWVyRmlyZWQoKQogCiAgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGUoKSkgewog
ICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhjaGFuZ2UobV9rZXlGcmFtZVRyYW5zaXRpb25D
b21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgICAgIGZpbmlzaChXVEY6Om51bGxvcHQp
OworICAgICAgICBmaW5pc2goc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAKQEAgLTE0Niw3ICsx
NDYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvblRvTmV4dEtl
eUZyYW1lKCkKIHsKICAgICArK21fa2V5ZnJhbWVJbmRleDsKICAgICBpZiAobV9rZXlmcmFtZUlu
ZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgewotICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhX
VEY6Om51bGxvcHQpOworICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51bGxvcHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0YXRlKCkKIHsK
ICAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CiAgICAgICAgIGF1dG8g
ZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRpb25IYW5k
bGVyLCBudWxscHRyKTsKLSAgICAgICAgZmluaXNoKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGZp
bmlzaChzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDcsMzQg
KzIwNywzNCBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbkJldHdl
ZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZQogdm9pZCBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXI6OnJlc29sdmVMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY3VycmVu
dExvY2F0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE1vdXNlTW92
ZU9yaWdpbiBvcmlnaW4sIE9wdGlvbmFsPFN0cmluZz4gbm9kZUhhbmRsZSwgRnVuY3Rpb248dm9p
ZCAoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFsb2NhdGlvbikgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjdXJyZW50TG9jYXRpb24sIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRMb2NhdGlvbiwgc3RkOjpudWxsb3B0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAob3JpZ2luKSB7CiAgICAg
Y2FzZSBNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0OgotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihsb2NhdGlvbi52YWx1ZSgpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihsb2NhdGlvbi52YWx1ZSgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1vdXNlTW92ZU9yaWdpbjo6UG9pbnRlcjogewogICAgICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBkZXN0aW5hdGlvbihjdXJyZW50TG9jYXRpb24pOwogICAgICAgICBkZXN0aW5hdGlvbi5t
b3ZlQnkobG9jYXRpb24udmFsdWUoKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlc3Rp
bmF0aW9uLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZXN0aW5h
dGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTW91
c2VNb3ZlT3JpZ2luOjpFbGVtZW50OiB7CiAgICAgICAgIG1fY2xpZW50LnZpZXdwb3J0SW5WaWV3
Q2VudGVyUG9pbnRPZkVsZW1lbnQobV9wYWdlLCBtX2ZyYW1lSUQsIG5vZGVIYW5kbGUudmFsdWUo
KSwgW2Rlc3RpbmF0aW9uID0gbG9jYXRpb24udmFsdWUoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGlu
Vmlld0NlbnRlclBvaW50LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGVycm9yKTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW5WaWV3Q2VudGVyUG9pbnQp
IHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIEFVVE9N
QVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoRWxlbWVudE5vdEludGVyYWN0YWJsZSkpOwor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShFbGVtZW50Tm90SW50ZXJhY3RhYmxlKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZXN0aW5h
dGlvbi5tb3ZlQnkoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKSk7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihkZXN0aW5hdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGRlc3RpbmF0aW9uLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYyLDIwICsyNjIsMjAgQEAgdm9pZCBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVk
SW5wdXRTb3VyY2UKICNlbmRpZgogCiAgICAgICAgIGlucHV0U291cmNlLnN0YXRlID0gbmV3U3Rh
dGU7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfTsKIAogICAgIHN3aXRjaCAoaW5w
dXRTb3VyY2UudHlwZSkgewogICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlOjpOdWxs
OgogICAgICAgICAvLyBUaGUgbWF4aW11bSBkdXJhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSBrZXlm
cmFtZSBsZXZlbCBieSBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIuCi0gICAgICAg
IGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICBldmVudERpc3Bh
dGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaW11
bGF0ZWRJbnB1dFNvdXJjZVR5cGU6Ok1vdXNlOgogICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3Vy
Y2VUeXBlOjpQZW46IHsKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMp
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICBy
ZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBvaW50KCkpLCBi
LmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBi
Lm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlw
ZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
XShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxvY2F0aW9u
KGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIu
b3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUs
IFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZlbnREaXNw
YXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJy
b3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzA1LDkgKzMwNSw5IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0
cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlvbikgewogICAgICAgICAgICAg
ICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogc2ltdWxh
dGluZyBNb3VzZU1vdmUgZnJvbSAoJWQsICVkKSB0byAoJWQsICVkKSBmb3IgdHJhbnNpdGlvbiB0
byAlZC4lZCIsIHRoaXMsIGEubG9jYXRpb24udmFsdWUoKS54KCksIGEubG9jYXRpb24udmFsdWUo
KS55KCksIGIubG9jYXRpb24udmFsdWUoKS54KCksIGIubG9jYXRpb24udmFsdWUoKS55KCksIG1f
a2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGludGVycG9sYXRlIG1vdXNlbW92ZXMgcGVyIHRoZSAi
cGVyZm9ybSBhIHBvaW50ZXIgbW92ZSIgYWxnb3JpdGhtICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0
aW9ucykuCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9u
KG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFs
dWVPcihNb3VzZUJ1dHRvbjo6Tm9uZSksIGIubG9jYXRpb24udmFsdWUoKSwgcG9pbnRlclR5cGUs
IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9jbGll
bnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92
ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5vbmUpLCBiLmxv
Y2F0aW9uLnZhbHVlKCksIHBvaW50ZXJUeXBlLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZp
bmlzaGVkKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlz
aGVkKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwogI2VuZGlmIC8vIEVOQUJMRShXRUJEUklW
RVJfTU9VU0VfSU5URVJBQ1RJT05TKQogICAgICAgICBicmVhazsKQEAgLTMxNiw3ICszMTYsNyBA
QCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9T
dGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX1RPVUNIX0lO
VEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNl
Ci0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlT3IoV2ViQ29yZTo6SW50
UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlT3IoTW91c2VNb3ZlT3JpZ2luOjpW
aWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlz
aGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9y
KSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3Io
V2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNl
TW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50
RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAg
ICAgICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEgcG9pbnRlcntEb3duLFVwLE1vdmV9IGFjdGlv
biIgYWxnb3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgogICAgICAgICAgICAg
aWYgKCFhLnByZXNzZWRNb3VzZUJ1dHRvbiAmJiBiLnByZXNzZWRNb3VzZUJ1dHRvbikgewogICAg
ICAgICAgICAgICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVw
XTogc2ltdWxhdGluZyBUb3VjaERvd24gQCAoJWQsICVkKSBmb3IgdHJhbnNpdGlvbiB0byAlZC4l
ZCIsIHRoaXMsIGIubG9jYXRpb24udmFsdWUoKS54KCksIGIubG9jYXRpb24udmFsdWUoKS55KCks
IG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRvdWNoSW50ZXJh
Y3Rpb246OlRvdWNoRG93biwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuc2lt
dWxhdGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6VG91Y2hEb3du
LCBiLmxvY2F0aW9uLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShldmVudERpc3BhdGNo
RmluaXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYS5wcmVzc2VkTW91c2VCdXR0b24g
JiYgIWIucHJlc3NlZE1vdXNlQnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgTE9HKEF1dG9tYXRp
b24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBdOiBzaW11bGF0aW5nIExpZnRVcCBAICgl
ZCwgJWQpIGZvciB0cmFuc2l0aW9uIHRvICVkLiVkIiwgdGhpcywgYi5sb2NhdGlvbi52YWx1ZSgp
LngoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLnkoKSwgbV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291
cmNlU3RhdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVUb3VjaElu
dGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6TGlmdFVwLCBiLmxvY2F0aW9uLnZh
bHVlKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24obV9wYWdlLCBU
b3VjaEludGVyYWN0aW9uOjpMaWZ0VXAsIGIubG9jYXRpb24udmFsdWUoKSwgc3RkOjpudWxsb3B0
LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChhLmxvY2F0aW9uICE9IGIubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coQXV0b21h
dGlvbiwgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcgTW92ZVRvIGZy
b20gKCVkLCAlZCkgdG8gKCVkLCAlZCkgZm9yIHRyYW5zaXRpb24gdG8gJWQuJWQiLCB0aGlzLCBh
LmxvY2F0aW9uLnZhbHVlKCkueCgpLCBhLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBiLmxvY2F0aW9u
LnZhbHVlKCkueCgpLCBiLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBtX2tleWZyYW1lSW5kZXgsIG1f
aW5wdXRTb3VyY2VTdGF0ZUluZGV4KTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0
ZVRvdWNoSW50ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpNb3ZlVG8sIGIubG9j
YXRpb24udmFsdWUoKSwgYS5kdXJhdGlvbi52YWx1ZU9yKDBfcyksIFdURk1vdmUoZXZlbnREaXNw
YXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVUb3VjaElu
dGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6TW92ZVRvLCBiLmxvY2F0aW9uLnZh
bHVlKCksIGEuZHVyYXRpb24udmFsdWVfb3IoMF9zKSwgV1RGTW92ZShldmVudERpc3BhdGNoRmlu
aXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsKICNlbmRpZiAvLyAhRU5BQkxFKFdF
QkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCiAgICAgICAgIGJyZWFrOwpAQCAtNDE0LDcgKzQx
NCw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3Vy
Y2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CiAjZW5kaWYgLy8gIUVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJ
T05TKQogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxh
dGVkSW5wdXRTb3VyY2UKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRFUkFDVElPTlMp
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICBy
ZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBvaW50KCkpLCBi
LmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBi
Lm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1v
dmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxv
Y2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7
CisgICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6Oklu
dFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46
OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmlu
aXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJy
b3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAg
ZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC00NDMsNyArNDQzLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRp
b25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBpbnRlcnBvbGF0ZSBtb3VzZSBzY3JvbGxzIHBlciB0
aGUgInBlcmZvcm0gYSBzY3JvbGwiIGFsZ29yaXRobSAowqcxNS40LjQgV2hlZWwgYWN0aW9ucyku
CiAgICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVXaGVlbEludGVyYWN0aW9uKG1fcGFn
ZSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBiLnNjcm9sbERlbHRhLnZhbHVlKCksIFdURk1vdmUoZXZl
bnREaXNwYXRjaEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBldmVudERpc3BhdGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBl
dmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAjZW5kaWYg
Ly8gIUVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgICAgICBicmVhazsK
QEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6ZmluaXNo
RGlzcGF0Y2hpbmcoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcgogICAgIExPRyhBdXRv
bWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogZmluaXNoZWQgYWxsIGlucHV0
IHNpbXVsYXRpb24gYXQgWyV1LiV1XSIsIHRoaXMsIG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNv
dXJjZVN0YXRlSW5kZXgpOwogCiAgICAgYXV0byBmaW5pc2ggPSBzdGQ6OmV4Y2hhbmdlKG1fcnVu
Q29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgIG1fZnJhbWVJRCA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX2ZyYW1lSUQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9rZXlmcmFtZXMuY2xlYXIo
KTsKICAgICBtX2tleWZyYW1lSW5kZXggPSAwOwogICAgIG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZTk0ZTA2Y2YyMDJlNDE5MTkxMjE0NGRi
MTcxNTIxZjNhMzdmMDVlNy4uZDg2ZjJmMTFiNTExYmM5ZjRiNTE1YmE0NDAwODIzMjQ4YjIxOWQ2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIwOCwxMiArMjA4LDEyIEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmRpZERlc3Ryb3lGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCkKIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Npb246OndlYkZy
YW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1lTm90Rm91bmQp
CiB7CiAgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGl0ZXIgPSBtX2hh
bmRsZVdlYkZyYW1lTWFwLmZpbmQoaGFuZGxlKTsKICAgICBpZiAoaXRlciA9PSBtX2hhbmRsZVdl
YkZyYW1lTWFwLmVuZCgpKSB7CiAgICAgICAgIGZyYW1lTm90Rm91bmQgPSB0cnVlOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIHJldHVybiBpdGVyLT52YWx1ZTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdAogICAgICAgICB0aGlzLT5yZXN0b3JlV2luZG93Rm9yUGFnZSh3ZWJQ
YWdlLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IFdURk1vdmUocGFnZSks
IHdpZHRoLCBoZWlnaHQsIHgsIHldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBhdXRvJiB3ZWJQ
YWdlID0gKnBhZ2U7CiAgICAgICAgICAgICB3ZWJQYWdlLmdldFdpbmRvd0ZyYW1lV2l0aENhbGxi
YWNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92ZShwYWdlKSwg
d2lkdGgsIGhlaWdodCwgeCwgeV0oV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdpbmFsRnJhbWUpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdl
YkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVPcihvcmlnaW5hbEZy
YW1lLmxvY2F0aW9uKCkueCgpKSwgeS52YWx1ZU9yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS55
KCkpKSwgV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5zaXpl
KCkud2lkdGgoKSksIGhlaWdodC52YWx1ZU9yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLmhlaWdodCgp
KSkpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFtZSA9IFdlYkNv
cmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVfb3Iob3JpZ2luYWxGcmFt
ZS5sb2NhdGlvbigpLngoKSksIHkudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLnko
KSkpLCBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5zaXpl
KCkud2lkdGgoKSksIGhlaWdodC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLnNpemUoKS5oZWlnaHQo
KSkpKTsKICAgICAgICAgICAgICAgICBpZiAobmV3RnJhbWUgIT0gb3JpZ2luYWxGcmFtZSkKICAg
ICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0V2luZG93RnJhbWUobmV3RnJhbWUpOwogICAgICAg
ICAgICAgICAgIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihX
aW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBh
Z2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7CisgICAgYXV0
byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKGRl
ZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGltZW91dCA9IG9wdGlv
bmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqb3B0aW9uYWxQ
YWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAogICAgIC8vIElmIHBh
Z2UgaXMgbG9hZGluZyBhbmQgdGhlcmUncyBhbiBhY3RpdmUgSmF2YVNjcmlwdCBkaWFsb2cgaXMg
cHJvYmFibHkgYmVjYXVzZSB0aGUKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5JiBwYWdlKQog
ICAgICAgICBpZiAoIW1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygpKSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEY6
Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lO
VEVSQUNUSU9OUykKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
Ojp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICAgICBp
ZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fcGVuZGlu
Z0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygpKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEY6
Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJE
X0lOVEVSQUNUSU9OUykKQEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5JiBwYWdlKQogICAgICAg
ICBpZiAoIW1fcGVuZGluZ1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9yKG1fcGVuZGlu
Z1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygpKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNU
SU9OUykKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpuYXZp
Z2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdQogICAgIGlm
ICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93
Tm90Rm91bmQpOwogCi0gICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9h
ZFN0cmF0ZWd5LnZhbHVlT3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAgIGF1dG8gcGFn
ZUxvYWRTdHJhdGVneSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihkZWZhdWx0
UGFnZUxvYWRTdHJhdGVneSk7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBh
Z2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxv
YWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5sb2FkUmVx
dWVzdChVUkwoVVJMKCksIHVybCkpOwpAQCAtNzEyLDcgKzcxMiw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVG
SU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kg
PSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVn
eSk7CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5
LnZhbHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGlt
ZW91dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25k
cygqb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAog
ICAgIHBhZ2UtPmdvQmFjaygpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJv
dG9jb2w6CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7
CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGltZW91
dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygq
b3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAogICAg
IHBhZ2UtPmdvRm9yd2FyZCgpOwpAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7
CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGltZW91
dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygq
b3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAogICAg
IHBhZ2UtPnJlbG9hZCh7IH0pOwpAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBw
YWdlKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQogICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOwogI2VuZGlmCkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBXZWJQYWdlUHJv
eHkmIHBhZ2UKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykK
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIoKSkpCi0gICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgpAQCAtODIzLDcgKzgyMyw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OndoZWVsRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2Vi
UGFnZVByb3h5JiBwYWdlKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJ
T05TKQogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKLSAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCkBAIC05NjMsNyArOTYzLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0RXZh
bHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZhU2NyaXB0RnVu
Y3Rpb25DYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIAotICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwg
ZnVuY3Rpb24sIGFyZ3VtZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dC52YWx1ZU9yKGZhbHNlKSwgV1RGTW92ZShjYWxsYmFja1RpbWVvdXQpLCBjYWxsYmFja0lEKSwg
MCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBhZ2UtPndlYlBhZ2VJRCgpLCBm
cmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBlY3RzSW1wbGljaXRDYWxsYmFj
a0FyZ3VtZW50LnZhbHVlX29yKGZhbHNlKSwgV1RGTW92ZShjYWxsYmFja1RpbWVvdXQpLCBjYWxs
YmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZEV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKQEAgLTEwNTQsNyArMTA1NCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2NvbFN0cmluZ1RvQ29vcmRpbmF0ZVN5
c3RlbShJbnNwZWN0b3I6OlByCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dz
aW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxlLCBPcHRpb25hbDxib29sPiYmIG9wdGlvbmFs
U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtVmFsdWUsIFJlZjxDb21wdXRlRWxlbWVu
dExheW91dENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjoKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGJ1aWxkQXJy
YXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0
Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0Q29va2llc0ZvckZy
YW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBzdGQ6Om51bGxvcHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNv
b2tpZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRl
eHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMzg2LDcg
KzEzODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVTaW5nbGVDb29raWUo
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdAogICAgICAgICBjYWxsYmFjay0+c2Vu
ZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVsZXRlQ29va2llKHBh
Z2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVsZXRlQ29va2llKHBhZ2UtPndl
YlBhZ2VJRCgpLCBzdGQ6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5l
ZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTU3MSwxNiArMTU3MSwxNiBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZQogewogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50
ZXJQb2ludCwgYm9vbCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUpIHsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgQVVUT01BVElPTl9DT01NQU5E
X0VSUk9SX1dJVEhfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX01FU1NB
R0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGOjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9OQU1FKFRhcmdl
dE91dE9mQm91bmRzKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGFyZ2V0T3V0T2ZCb3VuZHMp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGluVmlld0NlbnRlclBvaW50LCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwgc3RkOjpudWxsb3B0KTsKICAgICB9OwogCiAg
ICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLndlYlBhZ2VJRCgpLCBm
cmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRpbmF0ZVN5c3RlbTo6TGF5b3V0Vmlld3Bv
cnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5b3V0SGFuZGxlcikpOwpAQCAtMTYzNCw3
ICsxNjM0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVNb3VzZUludGVy
YWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAgLy8gSWYgdGhlIGV2
ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQgbWF5
IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAh
cGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewogICAgICAgICAgICAgYXV0byBjYWxs
YmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFn
ZS50YWtlKHBhZ2UtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2Vs
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UsIHdhaXQgZm9yIG1vdXNlRXZl
bnRzRmx1c2hlZENhbGxiYWNrIHRvIHJ1biB3aGVuIGFsbCBldmVudHMgYXJlIGhhbmRsZWQuCkBA
IC0xNjgwLDcgKzE2ODAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzaW11bGF0ZUtl
eWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAgIC8vIFRoaXMg
aGFwcGVucyBpbiBzb21lIGNvcm5lciBjYXNlcyBvbiBtYWNPUywgc3VjaCBhcyByZWxlYXNpbmcg
YSBrZXkgd2hpbGUgQ29tbWFuZCBpcyBwcmVzc2VkLgogICAgIGlmIChjYWxsYmFja0luTWFwICYm
ICFwYWdlLmlzUHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkpIHsKICAgICAgICAgYXV0byBjYWxs
YmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVy
UGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKTsKLSAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChX
VEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBrZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgpAQCAtMTcxMyw3ICsx
NzEzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVXaGVlbEludGVyYWN0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2UKICAgICAgICAgLy8gSWYgdGhlIGV2ZW50
IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4gaXQgbWF5IG5v
dCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFn
ZS0+aXNQcm9jZXNzaW5nV2hlZWxFdmVudHMoKSkgewogICAgICAgICAgICAgYXV0byBjYWxsYmFj
a1RvQ2FuY2VsID0gbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50
YWtlKHBhZ2UtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UsIHdhaXQgZm9yIHdoZWVsRXZlbnRz
Rmx1c2hlZENhbGxiYWNrIHRvIHJ1biB3aGVuIGFsbCBldmVudHMgYXJlIGhhbmRsZWQuCkBAIC0x
ODA1LDcgKzE4MDUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtTW91c2VJ
bnRlcmFjdGlvbihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdQogICAgICAgICAvLyBJbiBX
M0Mtb25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFjdGlvbnMgd2hv
c2UgY29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCiAgICAgICAgIGlm
IChjYWxsYmFja0luTWFwICYmICFwYWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50cygpKSB7CiAg
ICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3VzZUV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNhbGxiYWNr
VG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0pOwogI2VuZGlmIC8vIEVO
QUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQpAQCAtMTk2NSw3ICsxOTY1LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFVDaGFyMzI+IHByZXNzZWRDaGFyS2V5KGNvbnN0IFN0cmluZyYgcHJl
c3NlZENoYXJLZXlTdHJpbmcpCiAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJ
VkVSX0FDVElPTlNfQVBJKQogCkBAIC0yMTA4LDcgKzIxMDgsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sOgogICAgICAgICAgICAgYXV0byBwcmVzc2VkQnV0dG9uU3RyaW5nID0gc3RhdGVPYmpl
Y3QtPmdldFN0cmluZygicHJlc3NlZEJ1dHRvbiJfcyk7CiAgICAgICAgICAgICBpZiAoISFwcmVz
c2VkQnV0dG9uU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcm90b2NvbEJ1dHRvbiA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZy
b21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VCdXR0b24+KHBy
ZXNzZWRCdXR0b25TdHJpbmcpOwotICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRN
b3VzZUJ1dHRvbiA9IHByb3RvY29sQnV0dG9uLnZhbHVlT3IoTW91c2VCdXR0b246Ok5vbmUpOwor
ICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRNb3VzZUJ1dHRvbiA9IHByb3RvY29s
QnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb25lKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgYXV0byBvcmlnaW5TdHJpbmcgPSBzdGF0ZU9iamVjdC0+Z2V0U3RyaW5nKCJvcmln
aW4iX3MpOwpAQCAtMjIyNCw3ICsyMjI0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjoKICAg
ICB9OwogCiAgICAgaWYgKG5vZGVIYW5kbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRha2VWaWV3
U25hcHNvdCgqcGFnZSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IHRha2VWaWV3U25hcHNvdCgqcGFnZSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyNjcsMTkgKzIyNjcsMTkgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU2hhcmVhYmwKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0FJUk8pCiBP
cHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVu
Y29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikKIHsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFs
PFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBO
R0RhdGEoY29uc3QgVmlld1NuYXBzaG90JikKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKSAm
JiAhVVNFKENBSVJPKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogT3B0aW9uYWw8U3RyaW5nPiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JSZW1v
dGVGaWxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vICFQTEFURk9S
TShDT0NPQSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDU2ZjRhNDAzZjdmOTUxY2M4MGFmNjZm
NWYwNjhmYTQyZmUzOTBkYjUuLjhiNzFhODgzZTgzNWY1YmMyNjQyMDZiZjE1MWNjZmQzNWI5YzRl
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoKICAgICBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsKLSAgICBPcHRp
b25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxTdHJp
bmc+IG1lc3NhZ2UgeyBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICBBdXRvbWF0aW9uQ29tbWFu
ZEVycm9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZSB0eXBl
KQogICAgICAgICA6IHR5cGUodHlwZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgK
aW5kZXggNGQzNmQ2NGZkNDBmNDNmM2U3ODFkNWU1OTVhM2JlODRjY2VlZDY1My4uZGFiN2EwNmYz
NWI0YzNhNjQ4MGQ5MzlmZWY3MjI5OTk4OWQ2ZWUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25N
YWNyb3MuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBlcnJvck5hbWVBbmREZXRhaWxzU2Vw
YXJhdG9yICI7IgogCiAvLyBNYWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJyb3IgbmFtZSBpcyB2
YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBWQUxJREFURURfRVJS
T1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZU9yKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikKKyNkZWZpbmUg
VkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZykudmFsdWVfb3Io
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnRlcm5hbEVy
cm9yKQogCiAvLyBJZiB0aGUgZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRoZXNlIG1hY3Jv
cywgaXQgd2lsbCBiZSBhIGNvbXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUgU1RSSU5HX0ZPUl9Q
UkVERUZJTkVEX0VSUk9SX05BTUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjplcnJvck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fp
cm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRv
bWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCBmMzQyZTYxZDkwODhkNTgxYjhhODQ3ZjY0Yjhi
ZmFmNWI5ZjRiYjdlLi45ZjZiZDAxOTA4OTk3ODEzODg4MzMyODMxYzE3MGVhMGQzNGU5YTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1
dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKQEAgLTM3LDcgKzM3
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBi
YXNlNjRFbmNvZGVkUE5HRGF0YShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiB7CiAgICAgaWYg
KCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBuZ0RhdGE7CiAgICAg
Y2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKHN1cmZhY2UsIFtdKHZvaWQqIHVzZXJE
YXRhLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIC0+IGNhaXJv
X3N0YXR1c190IHsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gYmFz
ZTY0RW5jb2RlZFBOR0RhdGEoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAgIH0sICZwbmdE
YXRhKTsKIAogICAgIGlmIChwbmdEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBiYXNl
NjRFbmNvZGVUb1N0cmluZyhwbmdEYXRhKTsKIH0KQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5H
RGF0YShjb25zdCBTaGEKIHsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3Jl
YXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYg
KCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cmZhY2UgPSBiaXRtYXAtPmNyZWF0ZUNhaXJvU3Vy
ZmFjZSgpOwogICAgIHJldHVybiBiYXNlNjRFbmNvZGVkUE5HRGF0YShzdXJmYWNlLmdldCgpKTsK
QEAgLTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWUKICNpZiBQTEFURk9STShH
VEspCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHNuYXBzaG90LnN1cmZhY2UoKSk7
CiAjZWxzZQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0K
aW5kZXggMTFiYjhlZjVjNjViMDQ2YjA4ODE2NGY2YjEzYjJmZDg5MzVhYmRhOS4uOGExNWZlNmNm
NTQ0NDMxZTljNjQ1ZDdkOGFjZTMwMmNkYzBkMTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2EvV2ViQXV0b21h
dGlvblNlc3Npb25Db2NvYS5tbQpAQCAtNDMsNyArNDMsNyBAQCBPcHRpb25hbDxTdHJpbmc+IFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0
IFNoYQogewogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaW1hZ2VE
YXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBpZiAo
IWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gYml0bWFw
LT5tYWtlQ0dJbWFnZSgpOwogICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBpbWFnZURhdGEg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwpAQCAtNTEsNyArNTEsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFJldGFpblB0cjxDR0lt
YWdlRGVzdGluYXRpb25SZWY+IGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRp
b25DcmVhdGVXaXRoRGF0YSgoQ0ZNdXRhYmxlRGF0YVJlZilpbWFnZURhdGEuZ2V0KCksIGtVVFR5
cGVQTkcsIDEsIDApKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGlm
ICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShkZXN0
aW5hdGlvbi5nZXQoKSwgY2dJbWFnZS5nZXQoKSwgMCk7CiAgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9jYWxGaWxlUGF0
aEZvclJlbW90ZUZpbAogICAgIFJldGFpblB0cjxOU0RhdGE+IGZpbGVDb250ZW50cyA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpiYXNlNjRFbmNv
ZGVkRmlsZUNvbnRlbnRzIG9wdGlvbnM6MF0pOwogICAgIGlmICghZmlsZUNvbnRlbnRzKSB7CiAg
ICAgICAgIExPR19FUlJPUigiV2ViQXV0b21hdGlvblNlc3Npb246IHVuYWJsZSB0byBkZWNvZGUg
YmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cy4iKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBOU1N0cmlu
ZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiV2ViRHJpdmVyIik7CkBAIC03NSw3ICs3NSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2Vi
QXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3Rl
RmlsCiAgICAgW2ZpbGVDb250ZW50cy5nZXQoKSB3cml0ZVRvRmlsZTpsb2NhbEZpbGVQYXRoIG9w
dGlvbnM6TlNEYXRhV3JpdGluZ0F0b21pYyBlcnJvcjomZmlsZVdyaXRlRXJyb3JdOwogICAgIGlm
IChmaWxlV3JpdGVFcnJvcikgewogICAgICAgICBMT0dfRVJST1IoIldlYkF1dG9tYXRpb25TZXNz
aW9uOiBFcnJvciB3cml0aW5nIGltYWdlIGRhdGEgdG8gdGVtcG9yYXJ5IGZpbGU6ICVAIiwgZmls
ZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcobG9jYWxGaWxlUGF0
aCk7CkBAIC04OSw3ICs4OSw3IEBAIE9wdGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpjaGFyQ29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvCiAgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRlcm5hdGU6CiAg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpNZXRh
OgogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6
Q29tbWFuZDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJldHVybiBOU0hlbHBGdW5jdGlvbktleTsKICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkJhY2tzcGFj
ZToKQEAgLTE5Myw3ICsxOTMsNyBAQCBPcHRpb25hbDx1bmljaGFyPiBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6Y2hhckNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jbwogICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24xMjoK
ICAgICAgICAgcmV0dXJuIE5TRjEyRnVuY3Rpb25LZXk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9z
L1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggMDgxYmE5OTQ2YWQ3
NGE2MGM4NWI3MGUzZjE0MjE4ZTVmZjhhZjNjZi4uYjg1NDRmZmE0NWQ4MmIxMDI5MTkyOTNmYWNl
YTY3MTYxZTE3ZmMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KQEAgLTE5
NywxMCArMTk3LDEwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uKQogdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
bG9jYXRpb25JblZpZXdwb3J0LCBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbiwgQXV0b21hdGlv
bkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbG9jYXRpb25PblNjcmVlbiA9IHBhZ2Uuc3luY1Jvb3RWaWV3VG9TY3JlZW4oSW50
UmVjdChsb2NhdGlvbkluVmlld3BvcnQsIEludFNpemUoKSkpLmxvY2F0aW9uKCk7Ci0gICAgTE9H
X1dJVEhfU1RSRUFNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMsIHN0cmVhbSA8PCAicGxhdGZvcm1T
aW11bGF0ZVRvdWNoSW50ZXJhY3Rpb246IGludGVyYWN0aW9uPSIgPDwgaW50ZXJhY3Rpb24gPDwg
IiwgbG9jYXRpb25JblZpZXdwb3J0PSIgPDwgbG9jYXRpb25JblZpZXdwb3J0IDw8ICIsIGxvY2F0
aW9uT25TY3JlZW49IiA8PCBsb2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1cmF0aW9uPSIgPDwgZHVy
YXRpb24udmFsdWVPcigwX3MpLnNlY29uZHMoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEF1dG9t
YXRpb25JbnRlcmFjdGlvbnMsIHN0cmVhbSA8PCAicGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJh
Y3Rpb246IGludGVyYWN0aW9uPSIgPDwgaW50ZXJhY3Rpb24gPDwgIiwgbG9jYXRpb25JblZpZXdw
b3J0PSIgPDwgbG9jYXRpb25JblZpZXdwb3J0IDw8ICIsIGxvY2F0aW9uT25TY3JlZW49IiA8PCBs
b2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1cmF0aW9uPSIgPDwgZHVyYXRpb24udmFsdWVfb3IoMF9z
KS5zZWNvbmRzKCkpOwogCiAgICAgYXV0byBpbnRlcmFjdGlvbkZpbmlzaGVkID0gbWFrZUJsb2Nr
UHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIAogICAgIF9XS1Rv
dWNoRXZlbnRHZW5lcmF0b3IgKmdlbmVyYXRvciA9IFtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIHNo
YXJlZFRvdWNoRXZlbnRHZW5lcmF0b3JdOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwKICAgICAgICAgW2dlbmVyYXRvciBsaWZ0VXA6bG9jYXRpb25PblNjcmVlbiBj
b21wbGV0aW9uQmxvY2s6aW50ZXJhY3Rpb25GaW5pc2hlZC5nZXQoKV07CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVG91Y2hJbnRlcmFjdGlvbjo6TW92ZVRvOgotICAgICAgICBbZ2VuZXJhdG9y
IG1vdmVUb1BvaW50OmxvY2F0aW9uT25TY3JlZW4gZHVyYXRpb246ZHVyYXRpb24udmFsdWVPcigw
X3MpLnNlY29uZHMoKSBjb21wbGV0aW9uQmxvY2s6aW50ZXJhY3Rpb25GaW5pc2hlZC5nZXQoKV07
CisgICAgICAgIFtnZW5lcmF0b3IgbW92ZVRvUG9pbnQ6bG9jYXRpb25PblNjcmVlbiBkdXJhdGlv
bjpkdXJhdGlvbi52YWx1ZV9vcigwX3MpLnNlY29uZHMoKSBjb21wbGV0aW9uQmxvY2s6aW50ZXJh
Y3Rpb25GaW5pc2hlZC5nZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggZDk1Mzc0
NDg3YTRlODEwZmEzZDJlYTQ1ZjllNmViYjQ1MGVhYWZkMy4uMTIyNDdjZWE5YTU1YTg3ZDllOGY4
M2U5M2ZjOTgyMGQxOTg1NWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgUHJv
Y2Vzc0lEIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNo
ZXIgPyBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKSA6IDA7IH0KIAogICAg
IGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpICE9IFN0YXRlOjpU
ZXJtaW5hdGVkO30KLSAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+
JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5
SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
PSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKKyAgICBib29sIHNl
bmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRP
cHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRl
Y29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IHN0ZDo6bnVsbG9wdCwgU2hv
dWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJv
dHRsZXJBY3Rpdml0eTo6WWVzKTsKIAogICAgIHZvaWQgcmVwbHlUb1BlbmRpbmdNZXNzYWdlcygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRp
b25TZXNzaW9uQ2xpZW50Lm1tCmluZGV4IGVjODlhY2VlYzcwYTVkYTYwNjc0NTkxMmU2ZWJmMjE1
YjZmM2E1MjMuLmRmMTYxMzhjNTQ2MGNlNWIxNWRhZWE4ZThiYTgyMDhiYTkyMmRiYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNz
aW9uQ2xpZW50Lm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIE9wdGlvbmFsPEFQSTo6QXV0
b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiB0b0ltcGwoX1dLQXUK
IHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIF9XS0F1dG9tYXRpb25TZXNzaW9uSmF2
YVNjcmlwdERpYWxvZ1R5cGVOb25lOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgX1dLQXV0b21hdGlvblNlc3Npb25K
YXZhU2NyaXB0RGlhbG9nVHlwZVByb21wdDoKICAgICAgICAgcmV0dXJuIEFQSTo6QXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlOjpQcm9tcHQ7CiAgICAgY2FzZSBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkphdmFTY3JpcHREaWFsb2dUeXBlQ29uZmlybToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKaW5kZXggYzk3ZGM0YjRkZWM0
ZmE1ODBkNDkwZjFkNGNmYzg2Y2RmY2UwYmNjMi4uMWQ1ZWMyOTYyYmRmZTNjYmQ2OThjZDAyMzQ5
MGJiOTllNmEzYjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tTaGFyZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFy
ZVNoZWV0LmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLV2ViVmlldyAqKXZpZXc7CiAKLS0g
KHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihj
b25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZv
aWQpZGlzbWlzczsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS1NoYXJlU2hl
ZXREZWxlZ2F0ZT4gZGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
S1NoYXJlU2hlZXQubW0KaW5kZXggZTQ3NTdhYjhjODg5ODVhMDg0Yjc3NTEwMTg1ZTgzZTZiZDBk
NzEyYy4uZDQxMzQxYTFiOTc0OGZjNTI4ZDRhNjI2NzQzM2RhOTEyMDhjMjk1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAtODksNyArODks
NyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS1dlYlZpZXcgKil2aWV3CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJlY3Q6KFdURjo6T3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpcHJl
c2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJM
ICYpZGF0YSBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNv
bXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIHNoYXJlRGF0YUFycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgCkBAIC0xNTIsNyArMTUyLDcgQEAgLSAo
dm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkwgJilkYXRhIGluUmUKICAgICBbc2VsZiBwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5
OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKIH0KIAotLSAodm9pZClwcmVzZW50
V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICopc2hhcmluZ0l0ZW1zIGluUmVjdDooV1RGOjpP
cHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QKKy0gKHZvaWQpcHJlc2VudFdpdGhTaGFy
ZURhdGFBcnJheTooTlNBcnJheSAqKXNoYXJpbmdJdGVtcyBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0CiB7CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gX3dl
YlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMmQxMDNmMGVkMGE3ZDI2MTQxZWMy
ZjMzYjJiZjY2NTBiYzhjNWUyZi4uMzQ2ODAzYTllOGIwNTk0Zjg0MDMwMjIxMjc3YTk3N2JiYzcx
MDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KQEAgLTE3MiwxMSArMTcyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjphZGRQ
bGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgTG9hZFBhcmFt
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghcHJvY2Vzcy5oYXNNYW5hZ2VkU2Vzc2lvblNh
bmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRT
ZXNzaW9uXSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwotICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUki
X3MsIFdURjo6bnVsbG9wdCwgaGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5h
cHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQsIGhhbmRsZSk7
CiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKGhhbmRsZSk7CiAKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250
Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVt
YXBwc2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25I
YW5kbGUpKQorICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6
bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpKQogICAgICAgICAgICAg
bG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNzLm1h
cmtIYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsKQEAgLTYwMSw3ICs2MDEsNyBAQCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ldHdvcmtF
eHRlbnNpb25zU2FuZGJveEV4dGVucwogI2Vsc2UKICAgICAgICAgY29uc3RleHByIEFTQ0lJTGl0
ZXJhbCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB7ICJjb20uYXBwbGUubmVzZXNzaW9ubWFuYWdl
ci5jb250ZW50LWZpbHRlciJfcyB9OwogI2VuZGlmCi0gICAgICAgIHJldHVybiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7IG5lSGVscGVyU2VydmljZSwgbmVT
ZXNzaW9uTWFuYWdlclNlcnZpY2UgfSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgbmVIZWxwZXJTZXJ2
aWNlLCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB9LCBzdGQ6Om51bGxvcHQpOwogICAgIH0KICNl
bmRpZgogICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSgpOwpAQCAtNjU1
LDcgKzY1NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIFdURjo6bnVs
bG9wdCwgbW9iaWxlQXNzZXRIYW5kbGVWMik7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgc3RkOjpu
dWxsb3B0LCBtb2JpbGVBc3NldEhhbmRsZVYyKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxlQXNzZXRIYW5k
bGVWMiksIDApOwogfQogCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN3
aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKQogU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCkK
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7
Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLmZvbnRzIl9zLCBXVEY6Om51bGxvcHQsIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
Zm9udHMiX3MsIHN0ZDo6bnVsbG9wdCwgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOwogICAgIHJl
dHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCBj
MTdkMzhmYTRkYmNlZmY2Mjg1NzE0M2ExMmM0ZDVjMDNmNTE5ZTg0Li4wZGFhMTFjZDJlYjc3MmI3
MTY4ZjczZWNmMTJlYTczYWU2YzYwNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtOTcsMTAgKzk3
LDEwIEBAIGJvb2wgV2ViUGFzdGVib2FyZFByb3h5OjpjYW5BY2Nlc3NQYXN0ZWJvYXJkRGF0YShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvCiAKIE9wdGlvbmFsPFdlYlBhc3RlYm9hcmRQ
cm94eTo6UGFzdGVib2FyZEFjY2Vzc1R5cGU+IFdlYlBhc3RlYm9hcmRQcm94eTo6YWNjZXNzVHlw
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpIGNvbnN0CiB7Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRSghcGFzdGVi
b2FyZE5hbWUuaXNFbXB0eSgpLCBXVEY6Om51bGxvcHQpOworICAgIE1FU1NBR0VfQ0hFQ0tfV0lU
SF9SRVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgc3RkOjpudWxsb3B0KTsK
IAogICAgIGF1dG8qIHByb2Nlc3MgPSB3ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0aW9uKGNvbm5l
Y3Rpb24pOwotICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUocHJvY2VzcywgV1RG
OjpudWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHByb2Nlc3Ms
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwcm9jZXNzLT5wYWdlcygp
KSB7CiAgICAgICAgIGF1dG8mIHByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXMoKTsKQEAg
LTExOCwxMSArMTE4LDExIEBAIE9wdGlvbmFsPFdlYlBhc3RlYm9hcmRQcm94eTo6UGFzdGVib2Fy
ZEFjY2Vzc1R5cGU+IFdlYlBhc3RlYm9hcmRQcm94eTo6YWNjZXNzVHlwCiAKICAgICBhdXRvIGNo
YW5nZUNvdW50QW5kUHJvY2Vzc2VzID0gbV9wYXN0ZWJvYXJkTmFtZVRvQWNjZXNzSW5mb3JtYXRp
b25NYXAuZmluZChwYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNoYW5nZUNvdW50QW5kUHJvY2Vz
c2VzID09IG1fcGFzdGVib2FyZE5hbWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFwLmVuZCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byYgaW5mb3JtYXRpb24gPSBjaGFuZ2VDb3VudEFuZFByb2Nlc3Nlcy0+dmFsdWU7
CiAgICAgaWYgKGluZm9ybWF0aW9uLmNoYW5nZUNvdW50ICE9IFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpbmZvcm1hdGlv
bi5hY2Nlc3NUeXBlKCpwcm9jZXNzKTsKIH0KQEAgLTQ4NiwxMCArNDg2LDEwIEBAIHZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBjb25zCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJ
dGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxQ
YXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
Y2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lKSkKLSAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBkYXRhT3du
ZXIgPSBkZXRlcm1pbmVEYXRhT3duZXIoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5hbWUsIHBhZ2VJ
RCwgUGFzdGVib2FyZEFjY2Vzc0ludGVudDo6UmVhZCk7Ci0gICAgTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OKGRhdGFPd25lciwgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KSk7CisgICAg
TUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGRhdGFPd25lciwgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpudWxsb3B0KSk7CiAKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBlcmZvcm1Bc0RhdGFPd25l
cigqZGF0YU93bmVyLCBbJl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgs
IGNoYW5nZUNvdW50KSk7CkBAIC02NTYsMTAgKzY1NiwxMCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBpZAogCiBPcHRpb25hbDxEYXRhT3duZXJUeXBlPiBXZWJQYXN0ZWJvYXJkUHJveHk6OmRldGVy
bWluZURhdGFPd25lcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFBhc3RlYm9h
cmRBY2Nlc3NJbnRlbnQgaW50ZW50KSBjb25zdAogewotICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9S
RVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgV1RGOjpudWxsb3B0KTsKKyAg
ICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFwYXN0ZWJvYXJkTmFtZS5pc0VtcHR5
KCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvKiBwcm9jZXNzID0gd2ViUHJvY2Vzc1Byb3h5
Rm9yQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLSAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJO
X1ZBTFVFKHByb2Nlc3MsIFdURjo6bnVsbG9wdCk7CisgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JF
VFVSTl9WQUxVRShwcm9jZXNzLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKCFwYWdlSUQpCiAg
ICAgICAgIHJldHVybiBEYXRhT3duZXJUeXBlOjpVbmRlZmluZWQ7CkBAIC02NzQsNyArNjc0LDcg
QEAgT3B0aW9uYWw8RGF0YU93bmVyVHlwZT4gV2ViUGFzdGVib2FyZFByb3h5OjpkZXRlcm1pbmVE
YXRhT3duZXIoSVBDOjpDb25uZWN0aW9uJgogICAgIH0KICAgICAvLyBJZiB0aGlzIG1lc3NhZ2Ug
Y2hlY2sgaXMgaGl0LCB0aGVuIHRoZSBpbmNvbWluZyB3ZWIgcGFnZSBJRCBkb2Vzbid0IGNvcnJl
c3BvbmQgdG8gYW55IHBhZ2UKICAgICAvLyBjdXJyZW50bHkga25vd24gdG8gdGhlIFVJIHByb2Nl
c3MuCi0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShyZXN1bHQuaGFzVmFsdWUo
KSwgV1RGOjpudWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKHJl
c3VsdC5oYXNWYWx1ZSgpLCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwpAQCAtNzE1LDcgKzcxNSw3IEBAIE9wdGlvbmFs
PFdlYlBhc3RlYm9hcmRQcm94eTo6UGFzdGVib2FyZEFjY2Vzc1R5cGU+IFdlYlBhc3RlYm9hcmRQ
cm94eTo6UGFzdGVib2FyCiAgICAgfSk7CiAKICAgICBpZiAobWF0Y2hJbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBwcm9jZXNzZXNbbWF0Y2hJbmRleF0uc2Vjb25kOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggMDljZTRjN2Y1MGJhMDY3OTc5YTIzM2MxNmI3ZDAxYzA3Y2Y4NGQ3OS4uNWZhYzY2
MmM5MmJlYTY2YjVkZGVkOWM3ZmU1NGNiNGIwMDUyMjgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0zMTMsNyAr
MzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICNpZiBQTEFURk9STShDT0NPQSkgJiYg
RU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgaWYgKFdlYlByb2Nlc3NQcm94eTo6c2hvdWxk
RW5hYmxlUmVtb3RlSW5zcGVjdG9yKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZTsKLSAgICAgICAgaWYg
KFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS53
ZWJpbnNwZWN0b3IiX3MsIFdURjo6bnVsbG9wdCwgZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCwg
ZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgICAgIHBh
cmFtZXRlcnMuZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92
ZShlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KICNlbmRp
ZgpAQCAtMzc4LDI2ICszNzgsMjYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICAKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FHWENvbXBpbGVyU2Vy
dmljZSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRs
ZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3Jl
OjphZ3hDb21waWxlclNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRl
cnMuY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwg
c3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBp
ZiAoIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQotICAgICAgICBw
YXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJTZXJ2aWNlcygpLCBXVEY6Om51
bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJT
ZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FH
WENvbXBpbGVyU2VydmljZSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFz
c0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhXZWJDb3Jl
OjphZ3hDb21waWxlckNsYXNzZXMoKSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAgaWYg
KGlzSW50ZXJuYWxJbnN0YWxsKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGlhZ25vc3RpY3NFeHRl
bnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoZGlhZ25vc3RpY1NlcnZpY2VzKCksIFdURjo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6
RmxhZ3M6Ok5vUmVwb3J0KTsKKyAgICAgICAgcGFyYW1ldGVycy5kaWFnbm9zdGljc0V4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChk
aWFnbm9zdGljU2VydmljZXMoKSwgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpGbGFn
czo6Tm9SZXBvcnQpOwogCiAgICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNCYXR0ZXJ5ID0gc3lzdGVt
SGFzQmF0dGVyeSgpOwotICAgIHBhcmFtZXRlcnMuc3lzdGVtSGFzQUMgPSBjYWNoZWRTeXN0ZW1I
YXNBQygpLnZhbHVlT3IodHJ1ZSk7CisgICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNBQyA9IGNhY2hl
ZFN5c3RlbUhhc0FDKCkudmFsdWVfb3IodHJ1ZSk7CiAKICAgICBpZiAocmVxdWlyZXNDb250YWlu
ZXJNYW5hZ2VyQWNjZXNzKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmNvbnRhaW5lcm1hbmFnZXJkIl9zLCBXVEY6Om51bGxvcHQsIGhhbmRsZSk7
CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5jb250YWluZXJtYW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0LCBoYW5kbGUpOwogICAg
ICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3Zl
KGhhbmRsZSk7CiAgICAgfQogCkBAIC00MTIsMjAgKzQxMiwyMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpICYmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKF9BWFNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlFbmFibGVkKCkp
Ci0gICAgICAgIHBhcmFtZXRlcnMucHJlZmVyZW5jZXNFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmNmcHJl
ZnNkLmFnZW50Il9zLCAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiJfcyB9LCBXVEY6Om51bGxv
cHQpOworICAgICAgICBwYXJhbWV0ZXJzLnByZWZlcmVuY2VzRXh0ZW5zaW9uSGFuZGxlcyA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5j
ZnByZWZzZC5hZ2VudCJfcywgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iX3MgfSwgc3RkOjpu
dWxsb3B0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQogICAgIGlmICghX01HQ2FjaGVWYWxpZCgpKSB7CiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywg
V1RGOjpudWxsb3B0LCBoYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlZ2VzdGFsdC54cGMiX3MsIHN0ZDo6
bnVsbG9wdCwgaGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5tb2JpbGVHZXN0YWx0RXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOwogICAgIH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsYXVuY2hTZXJ2aWNlc0V4dGVu
c2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNlcnZpY2VzZCJfcywgV1RGOjpudWxs
b3B0LCBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmNvcmVzZXJ2aWNlcy5sYXVu
Y2hzZXJ2aWNlc2QiX3MsIHN0ZDo6bnVsbG9wdCwgbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5k
bGUpOwogICAgIHBhcmFtZXRlcnMubGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmlu
ZGV4IDdiMTQ3M2M1ZDJlZGE5NDgyMjA0YWJhYjAyZDZlMGY2Y2RkM2VhNjEuLjFjZTI2NWZmOWNk
M2FhZjdlNzQ5MmZmODQwMzY5MGU3NTU3M2M3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZO
ZWVkZWQoKQogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFuZGxlQXJyYXk7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhz
ZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZp
Y2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDog
V1RGOjpudWxsb3B0KTsKKyAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lzdGVt
d2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0sIGNv
bm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0
KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlmCiAKQEAgLTI2
Miw3ICsyNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja1ByZWZlcmVuY2VTZXJ2
aWNlSWZOZWVkZWQoKQogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5jZnByZWZzZC5hZ2VudCJfcywgImNvbS5hcHBs
ZS5jZnByZWZzZC5kYWVtb24iX3MgfSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRB
dWRpdFRva2VuKCkgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGFuZGxlQXJyYXkgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuY2Zw
cmVmc2QuYWdlbnQiX3MsICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIl9zIH0sIGNvbm5lY3Rp
b24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0KTsKICAg
ICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogICAgIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShXVEZNb3ZlKGhhbmRsZUFy
cmF5KSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQppbmRleCA4ODg4MjE1N2MwYjE3NmM2NWExNmY2OGE1ODlkNzBiZGNhZjRkYTEyLi41YThhNjMy
MWE0ZGI4ZGZjM2RhMzg1ZWJhMGQxMTk2NTQwMjc3Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4cG9zZWRSZWN0KCkKICAgICBpZiAobV91c2VDb250ZW50
UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3QpCiAgICAgICAgIGV4cG9zZWRSZWN0ID0gQ0dS
ZWN0VW5pb24obV9jb250ZW50UHJlcGFyYXRpb25SZWN0LCBleHBvc2VkUmVjdCk7CiAKLSAgICBt
X3BhZ2UtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/IE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogV1RGOjpudWxsb3B0KTsKKyAgICBt
X3BhZ2UtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/IE9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogc3RkOjpudWxsb3B0KTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGJvb2wgY2xpcHNUb1Zpc2li
bGVSZWN0KQpAQCAtMzAxNCw3ICszMDE0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2hvd1NoYXJl
U2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgZGF0YSwgV1QKICAg
ICBfc2hhcmVTaGVldCA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgYWxsb2NdIGluaXRXaXRoVmll
dzp2aWV3XSk7CiAgICAgW19zaGFyZVNoZWV0IHNldERlbGVnYXRlOnZpZXddOwogCi0gICAgW19z
aGFyZVNoZWV0IHByZXNlbnRXaXRoUGFyYW1ldGVyczpkYXRhIGluUmVjdDpXVEY6Om51bGxvcHQg
Y29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOworICAgIFtfc2hh
cmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6ZGF0YSBpblJlY3Q6c3RkOjpudWxsb3B0IGNv
bXBsZXRpb25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6c2hhcmVTaGVldERpZERpc21pc3MoV0tTaGFyZVNoZWV0ICpzaGFyZVNoZWV0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNoU2FsdFN0b3Jh
Z2UuY3BwCmluZGV4IGMzNTZkYjhmZjM3ZWI0MDY5NzZlZTQyNGRhN2ViZjNiZjZkNzU5MDEuLjky
Mjg1ODc0MDI0YWMyYWQ5YTY5ZDIxOGVkNDA3OTY1MzFiMDc0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAKQEAgLTkzLDE2
ICs5MywxNiBAQCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6fkRldmljZUlkSGFzaFNhbHRTdG9y
YWdlKCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotc3RhdGljIFdURjo6T3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEoY29uc3QgY2hh
ciogbmFtZSwgS2V5ZWREZWNvZGVyKiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vj
dXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEoY29uc3QgY2hhciogbmFtZSwg
S2V5ZWREZWNvZGVyKiBkZWNvZGVyKQogewogICAgIFN0cmluZyBvcmlnaW47CiAKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZVN0cmluZyhuYW1lLCBvcmlnaW4pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWN1
cml0eU9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIob3JpZ2luKTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBzZWN1cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBjMGE2OWQyZGIzYWJlMjVjMmQ1ZDEwNWI1ZGIx
Zjc3Mzg2ZGFkODMuLmI4OTJjOTY3ZDgwZWZmNTBhNDMwZTBmNTM1ZDY5MTY0OWJmYmUzOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBA
IC0xNjIsMTIgKzE2MiwxMiBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVByb2Nlc3NQcm94eSgpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VI
YXNBR1hDb21waWxlclNlcnZpY2UoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2Vy
dmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7
Ci0gICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhXZWJDb3Jl
OjphZ3hDb21waWxlckNsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVy
cy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBz
dGQ6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVu
c2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAg
fQogCiAgICAgaWYgKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkK
LSAgICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChub25Ccm93c2VyU2VydmljZXMo
KSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChu
b25Ccm93c2VyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAjaWYgIUxPR19E
SVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIwOSwxMyArMjA5LDEzIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBhZGRDYW1lcmFTYW5kYm94RXh0ZW5zaW9ucyhWZWN0b3I8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBpZiAo
c2hvdWxkQ3JlYXRlQXBwbGVDYW1lcmFTZXJ2aWNlU2FuZGJveEV4dGVuc2lvbigpKSB7CiAgICAg
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNh
bmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVyYWQiX3MsIFdU
Rjo6bnVsbG9wdCwgYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUp
KSB7CisgICAgICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCwgYXBwbGVD
YW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUu
YXBwbGVjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFf
U0VSVklDRSkKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhZGRpdGlvbmFs
QXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAg
ICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5h
cHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIFdURjo6bnVsbG9wdCwgYWRkaXRpb25hbEFwcGxlQ2Ft
ZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgICAgICAgICAgaWYg
KCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
YXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNl
cnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS5hcHBsZWgx
M2NhbWVyYWQgc2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFj
ay5oCmluZGV4IDAzNTQxOWQwMjE5NDM0ZTU3MGZkN2JkNTNjMGU5NDBlZmJkZTExZDMuLmUyNzNh
ZmM2ZWY2NmI1YmMyYjA5NTMzYWI4ZGEyNDQ5MGNlNWIwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAg
ICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0
byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgY2FsbGJhY2sudmFsdWUoKShyZXR1cm5WYWx1ZS4uLiwgRXJyb3I6Ok5v
bmUpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFt
X2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY2FsbGJhY2sg
PSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2ssIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2ssIHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIGNhbGxiYWNrLnZhbHVlKCkodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0
eXBlKCkuLi4sIGVycm9yKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhOWVhNjI4ZmQxOTg1YTJlZTdjYjE2MDBjZDE3
ODI4ZjA2ZjRiYmE4Li40MTg4Nzg2NTM5MzZkNDJhZmYxZDRkOWUwMTIzNzFkMTQwYzAzOWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBV
UkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkgfTsKLSAgICAg
ICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQ
b3J0KCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1swXSkudmFsdWVPcigwKSwgcGFyc2VJbnRl
Z2VyPGludD4odG9rZW5zWzFdKS52YWx1ZU9yKDApLCB0b2tlbnNbMl0pOworICAgICAgICBtX2lu
c3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBvcnQoKSwg
cGFyc2VJbnRlZ2VyPGludD4odG9rZW5zWzBdKS52YWx1ZV9vcigwKSwgcGFyc2VJbnRlZ2VyPGlu
dD4odG9rZW5zWzFdKS52YWx1ZV9vcigwKSwgdG9rZW5zWzJdKTsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBwYXJzZURlYnVnZ2FibGVU
eXBlRnJvbVN0cmluZyhjb25zdCBTCiAgICAgaWYgKGRlYnVnZ2FibGVUeXBlU3RyaW5nID09ICJ3
ZWItcGFnZSJfcykKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGU6Oldl
YlBhZ2U7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjppbnNwZWN0KGNv
bnN0IFN0cmluZyYgaG9zdEFuZFBvcnQsIENvbm5lY3Rpb25JRCBjb25uZWN0aW9uSUQsIFRhcmdl
dElEIHRhcmdldElELCBjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6Omluc3BlY3QoY29uc3QgU3RyaW5nJiBo
b3N0QW5kUG9ydCwgQ29ubmVjdGkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBtX3BhZ2UucnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0
LCBmYWxzZSB9LCAKKyAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgc2NyaXB0
LCBVUkwgeyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmYWxzZSB9LCAKICAgICAgICAgW10gKGF1
dG8mJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkV4Y2VwdGlvbiBydW5uaW5nIHNjcmlwdCBcIiVzXCIiLCByZXN1bHQu
ZXJyb3IoKS5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZjhjOWZh
YjQ4Yjg5ZGQxN2E4NDI0NjZhMWM4NGRjMTEyNTU1MTQyNy4uOTg2MmVmMjU5NTlkYTFjMjZmNWE0
MmNjOTNmODg0Njk2ODRkNmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShUZXJt
aW5hdGlvblJlYXNvbiByZWFzb24pCiAKICAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZp
bGVzID0gbnVsbHB0cjsKIAotICAgIG1fdXBsb2FkQWN0aXZpdHkgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV91cGxvYWRBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChkZWZhdWx0TmV0
d29ya1Byb2Nlc3MoKSA9PSB0aGlzKQogICAgICAgICBkZWZhdWx0TmV0d29ya1Byb2Nlc3MoKSA9
IG51bGxwdHI7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHBybwog
CiAgICAgICAgIGlmIChtX3VwbG9hZEFjdGl2aXR5LT53ZWJQcm9jZXNzQXNzZXJ0aW9ucy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHM6IFRoZSBudW1iZXIgb2Yg
dXBsb2FkcyBpbiBwcm9ncmVzcyBpcyBub3cgemVyby4gUmVsZWFzaW5nIE5ldHdvcmtpbmcgYW5k
IFVJIHByb2Nlc3MgYXNzZXJ0aW9ucy4iKTsKLSAgICAgICAgICAgIG1fdXBsb2FkQWN0aXZpdHkg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX3VwbG9hZEFjdGl2aXR5ID0gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCBhNTUxYTJjM2Y0OWUyYzY3YTc3OTRh
MjM3ZDRlN2EwMThiOTgxZTk3Li4xYTY0NjYwNWJiNTk3Yzg4NTk2YTcyZmI4YjYyOTlmZTQ1YTJl
NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcubW0KQEAg
LTIyNCw3ICsyMjQsNyBAQCAtIChPcHRpb25hbDxOU1VJbnRlZ2VyPilfY29udHJvbEluZGV4Rm9y
RXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgICAgICBpZiAoQ0dSZWN0Q29udGFpbnNQb2ludCh3
aW5kb3dTcGFjZVJlY3QsIGluaXRpYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7
CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogLSAoTlNTdHJpbmcgKilfY29udHJvbEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZjkzMzhjMmExYjNlN2I4YTMx
ZjBkNDU5ZTRiMTNkNTRmNDJlMWQ3Li5iNDkxMjcwODlkNDI4Nzk1MGY1NGQ2MjQ4OGMwOWQ5ODA0
MzhlOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNjcsNyArMjY3
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIEFQSTo6T3Bl
blBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG93U2hhcmVTaGVldChjb25zdCBXZWJD
b3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
IChib29sKT4mJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRh
Y3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQp
OyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNv
bnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKQEAgLTYw
OSw3ICs2MDksNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25p
emVyKikgeyB9Ci0gICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVUb3Vj
aElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNv
Z25pemVyKikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogI2lmIFVTRShXUEVf
UkVOREVSRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5jcHAKaW5kZXggN2JkOGMxOWMyNjNhY2RhZGRiMTZlOTUwMDhhMWNiN2EyOGFj
YjI4MC4uNzlmMzFjNjA0MTRmZmI0NjUwMWNkMjVhNjRhNmJlNzY2MzVlNDZlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApA
QCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgUGx1Z2luSW5mb1N0b3JlOjppc1N1cHBvcnRlZFBsdWdp
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpCiBPcHRpb25hbDxWZWN0
b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbkluZm9TdG9yZTo6c3VwcG9ydGVk
UGx1Z2luSWRlbnRpZmllcnMoKQogewogICAgIGlmICghbV9zdXBwb3J0ZWRQbHVnaW5zKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIFdURjo6bWFwKCptX3N1cHBvcnRlZFBsdWdpbnMsIFtdIChhdXRvJiYgaXRl
bSkgewogICAgICAgICByZXR1cm4gU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllciB7IGl0ZW0ubWF0
Y2hpbmdEb21haW4sIGl0ZW0uaWRlbnRpZmllciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggN2Y4MWVkNzRjODQ1YjAxZGNh
NGFjYTJmOGNmMmE0OGI5YzcyYTc1Ny4uNzVhZTZiYjYyZDg0Y2E0MTlkMjhmZmRmNjgwMDJmMGZm
MmVkZDRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bkluZm9TdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3VwcG9y
dGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1Z2luVVJMLCBj
b25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBVUkwmIHBhZ2VVUkwpOwogICAgIE9w
dGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4gc3VwcG9y
dGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBsdWdpbihTdHJp
bmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmc+
JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7Ci0gICAgdm9pZCBjbGVh
clN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IFdURjo6bnVsbG9wdDsg
fQorICAgIHZvaWQgY2xlYXJTdXBwb3J0ZWRQbHVnaW5zKCkgeyBtX3N1cHBvcnRlZFBsdWdpbnMg
PSBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQ
bHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpQbHVnaW5E
YXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAzNTNmYzk1NDU1NjQ1Nzk0YWNkODhiYTg1NDc5
MDg1YzYyZDA3NDRhLi5jMDkxNTlmYThlMDAwYmU0Nzc3NzZlM2QzNmRiZjViZGQyNjcxMmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6cHJvY2Vzc1JlYWR5VG9TdXNwZW5k
KCkKIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6Y2xlYXJQZW5kaW5nUmVxdWVzdFRvU3VzcGVuZCgp
CiB7CiAgICAgbV9wcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBtX3Bl
bmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nUmVx
dWVzdFRvU3VzcGVuZElEID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFByb2Nlc3NUaHJvdHRs
ZXI6OnNlbmRQcmVwYXJlVG9TdXNwZW5kSVBDKElzU3VzcGVuc2lvbkltbWluZW50IGlzU3VzcGVu
c2lvbkltbWluZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IDIyNmQyOTMzNDA1ZWE1YjZmMGJjMzY5ZTUxZmQwNzg2MmUzN2Fm
NzYuLmFjZmY5MGM4OGZkYWU3NmIyOWM0N2VlODIyNjQzNWNjYzBjZDZkNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE0NCw3
ICsxNDQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogICAgICAgICBt
X3JlcXVlc3QsCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChtX3JlcXVlc3Qu
dXJsKCkpLAogICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVJRCgpLAotICAgICAgICBXVEY6Om51
bGxvcHQsCisgICAgICAgIHN0ZDo6bnVsbG9wdCwKICAgICB9OwogICAgIGRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBXVEZNb3ZlKGZyYW1lSW5m
byksIFJlc291cmNlUmVxdWVzdCB7IG1fcmVxdWVzdCB9LCBtX25hdmlnYXRpb25JRCwgbV9wcm92
aXNpb25hbExvYWRVUkwuc3RyaW5nKCksIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29udGludWVMb2Fk
aW5nOjpObywgVXNlckRhdGEgeyB9KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgogfQpAQCAtMzYz
LDcgKzM2Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmllciBmCiAgICAgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKCFpc01haW5G
cmFtZSB8fCAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFtZUlE
KSB8fCBuYXZpZ2F0aW9uSUQgIT0gbV9uYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAgcmVwbHkoUG9s
aWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlBvbGljeUFj
dGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0p
OworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9w
dCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDBlMjZkYjc5
YWIzNGUyNmY4MzI4NzJiYTkyYTljMmVjM2MwMmM1ZjAuLjVjM2I2ZmIwZDE2MTMxY2I5NzIwNzBi
MzEwZDEwMjVkZjdmMDU3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaApAQCAtOTgsOCArOTgsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICNlbmRp
ZgogCi0gICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlv
biYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmln
YXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxv
YWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2Fu
Y2VsKCk7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2b2lk
IGluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJik7Ci0gICAg
Ym9vbCB2YWxpZGF0ZUlucHV0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgT3B0aW9u
YWw8dWludDY0X3Q+JiBuYXZpZ2F0aW9uSUQgPSBXVEY6Om51bGxvcHQpOworICAgIGJvb2wgdmFs
aWRhdGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2
NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKIAogICAgIFdlYlBhZ2VQcm94eSYg
bV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9u
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uTWFuYWdlci5oCmluZGV4IDQ3N2M1N2Y3Y2Y0ZjIwMTg2M2UwOGQyMjBkM2EyN2E2OGVi
YzIwNGUuLjQwYTlmMjkwN2U1MThiYzE3OGYyODY5NGFhOGRmOWQ1ZmVlNGM1NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25NYW5hZ2VyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
YXJ0TmV4dFJlcXVlc3QoKTsKICAgICB2b2lkIHN0YXJ0UHJvY2Vzc2luZ1JlcXVlc3QoKTsKICAg
ICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKLSAgICB2b2lkIGNvbXBsZXRlQ3Vy
cmVudFJlcXVlc3QoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9
IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KE9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RTcGVlY2hS
ZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RVc2VyUGVybWlzc2lv
bihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgKaW5kZXggYTE5
MTI5OTAyYjBlYThkMTEzZGI0NWQ5MGQ0ZDE0N2MxZjczNWZkMC4uNTA2MTE5YWViZjgyYjNkZGM5
ZTQzMTZlZjQxOTdiOTc2N2M2YjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0KFVuaXF1ZVJl
ZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwotICAgIHZvaWQgc2VuZFVw
ZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51bGxvcHQpOwor
ICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9w
dGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gc3RkOjpudWxsb3B0LCBP
cHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAK
aW5kZXggZjBkY2M3ZTE3Nzc1ZDEwNTQwMGNkNWU2ZDIzZmI3MmQ4NzNlYzA0NS4uOTQ2MDJiYzQ1
YzUxOWVkOWUyMGM3YzRiMzVlZmQ3MmEyZDVlZGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMTA3LDEwICsxMDcs
MTAgQEAgYm9vbCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFt
KFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWEKICAgICAgICAgICAgICAgICBpZHMudW5jaGVj
a2VkQXBwZW5kKHZpZGVvRXh0ZW5zaW9uUGF0aCk7CiAKICAgICAgICAgICAgIGlmIChuZWVkc0Fw
cGxlQ2FtZXJhU2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIGlmIChTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJhU2VydmljZVBh
dGgsIFdURjo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCisgICAgICAgICAg
ICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYXBw
bGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291
bnRdKSkKICAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhcHBsZUNhbWVy
YVNlcnZpY2VQYXRoKTsKICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0Up
Ci0gICAgICAgICAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIFdURjo6bnVsbG9wdCwg
aGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCisgICAgICAgICAgICAgICAgaWYgKFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJh
U2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCiAg
ICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYWRkaXRpb25hbEFwcGxlQ2Ft
ZXJhU2VydmljZVBhdGgpOwogI2VuZGlmCiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5kZXggMjMzMTkyYThmMTQxMWU5NTY5
YzkwYTE4MDA4NGI4MTNhN2IwZDEyNy4uNjI3YWZmNjY5YmM4NTdiNjIyMmVhZjE5YTg0N2Y1MTU5
NTEzMTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3Jl
LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpyZWNvcmRTbmFw
c2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0ZvcndhcgogCiAgICAgd2Vi
UGFnZVByb3h5LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiAKLSAgICBhdXRv
IHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoV1RGOjpudWxsb3B0KTsK
KyAgICBhdXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3Qoc3RkOjpu
dWxsb3B0KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA3YTkzNDg0NzU5ZjJkYjg0ZjI1YjRkOWQ5
N2I5ODJiMjQxYTc4MmU0Li44MzQ0ZmRkNDEyYzU5NjdmYzI1NDg0YmJhN2NmMzA1ZWJhMzM1OTEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC00MzEsNyArNDMxLDcg
QEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW5pdFRpbWVPdXRUaW1lcigpCiAgICAgICAg
IHRpbWVPdXRJbk1zID0gb3B0aW9ucy50aW1lb3V0OwogICAgIH0pOwogCi0gICAgdW5zaWduZWQg
dGltZU91dEluTXNWYWx1ZSA9IHN0ZDo6bWluKG1heFRpbWVPdXRWYWx1ZSwgdGltZU91dEluTXMu
dmFsdWVPcihtYXhUaW1lT3V0VmFsdWUpKTsKKyAgICB1bnNpZ25lZCB0aW1lT3V0SW5Nc1ZhbHVl
ID0gc3RkOjptaW4obWF4VGltZU91dFZhbHVlLCB0aW1lT3V0SW5Ncy52YWx1ZV9vcihtYXhUaW1l
T3V0VmFsdWUpKTsKICAgICBtX3JlcXVlc3RUaW1lT3V0VGltZXIuc3RhcnRPbmVTaG90KFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHModGltZU91dEluTXNWYWx1ZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggYTIxZWYwMGNhMWFkZDFhN2I4NjFh
MzdmYWU1ZjNkODNjMzQ3NGFkZi4uMWFhYzFjYTI2MWVjM2E5YzI5N2IxYzkzYjMzNDA4MzIyZjdk
YmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMTM3
LDcgKzEzNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpCiAgICAgQ0ZUeXBlUmVmIGF0dHJp
YnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNv
cHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgpLCAmYXR0cmli
dXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJp
YnV0ZXNBcnJheVJlZik7CiAgICAgTlNBcnJheSAqc29ydGVkQXR0cmlidXRlc0FycmF5ID0gWyhO
U0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmIHNvcnRlZEFycmF5VXNpbmdDb21wYXJhdG9yOl4o
TlNEaWN0aW9uYXJ5ICphLCBOU0RpY3Rpb25hcnkgKmIpIHsKICAgICAgICAgcmV0dXJuIFtiWyhp
ZClrU2VjQXR0ck1vZGlmaWNhdGlvbkRhdGVdIGNvbXBhcmU6YVsoaWQpa1NlY0F0dHJNb2RpZmlj
YXRpb25EYXRlXV07CkBAIC0xNDksMjEgKzE0OSwyMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmVkZW50
aQogICAgICAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQo
dmVjdG9yRnJvbU5TRGF0YShhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkp
OwogICAgICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01h
cCgpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRN
YXAoKTsKIAogICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGZpZG86OmtF
bnRpdHlJZE1hcEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgYXV0byYgdXNlckhhbmRsZSA9
IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogCiAgICAgICAgIGl0ID0gcmVzcG9uc2VNYXAu
ZmluZChDQk9SKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KSk7CiAgICAgICAgIGlmIChpdCA9PSBy
ZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygpKSB7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGF1
dG8mIHVzZXJuYW1lID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCA4ZTljNzZkYzBlODhjZTU3ODU0NzFjYjE1NGE1
MDE4OWJkMTU5ODIyLi44NDhmNTMxOWM4NjdjNzM4ZTQ2ZTE3ZTk2MTZlMTYzODZkZDE5MTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAgfQogCiAgICAg
bV9jdXJyZW50Q2hhbm5lbCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgpOwotICAgIG1f
cmVxdWVzdE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0TWVzc2FnZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+ZmFzdERhdGFBcnJpdmFs
KQogICAgICAgICBmZWVkUmVwb3J0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRpb25SZXF1ZXN0RGF0YS5oCmluZGV4IGMyNWQ5MDViNWQwMWU4MDQzZmIyYjVjMzEzZWEwNDFh
MTBkYTU3MDUuLjRjM2JiYWFhZjhmYzk0OGVkMDU2ZWI4YTc2ZGM5Y2YxY2U4YTQ2OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0aW9uUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKQEAgLTUwLDcgKzUw
LDcgQEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAgIFdlYWtQdHI8
V2ViUGFnZVByb3h5PiBwYWdlOwogICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcGFu
ZWxSZXN1bHQgeyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSB9Owog
ICAgIFJlZlB0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IHBhbmVsOwotICAgIFdURjo6
T3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwogICAg
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAKICAgICBib29sIHByb2Nlc3NpbmdV
c2VyR2VzdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCmluZGV4IDA2ZjIzMTU1
MjZhZjFmMjM4NGI1NTBhZGVmYTlmMTllMTBlZWQ1YWYuLmRiZmJlNjM5N2ZjMTIwMTU5OTQwMjk3
NmNjNzdjNGMzZjU1MWViODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVyLmNwcApAQCAt
NzEsNyArNzEsNyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUoSGlkQ29ubmVj
dGlvbjo6RGF0YVNlbnQgc2VudCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6V3JpdGUpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoc2VudCAhPSBIaWRDb25uZWN0aW9uOjpEYXRhU2VudDo6
WWVzKSB7Ci0gICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX3Jlc3BvbnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuTWVzc2Fn
ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ3Rh
cEhpZERyaXZlcjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlLT5hZGRDb250aW51YXRp
b25QYWNrZXQoZGF0YSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgcGFyc2Ug
YSBoaWQgY29udGludWF0aW9uIHBhY2tldC4iKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VNZXNz
YWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldv
cmtlcjo6cmVzZXQoKQogewogICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3RlckRhdGFSZWNlaXZl
ZENhbGxiYWNrKCk7CiAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgbV9yZXNwb25zZU1l
c3NhZ2UgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9yZXF1ZXN0TWVzc2FnZSA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3JlcXVlc3RN
ZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRsZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXgg
ZTQ4ZjU5OTIwZmU0YTNhYjM5MTEyNmEzN2M2MzI3MjE5OGEwNDRlMy4uNGM1NGM2YWYwNzAxY2M5
YjNmMjZjZGEzNTUxNjBkMzVkMzUxYzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0OjpwYWdlQ2xvc2VkKCkKIAogICAgIG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9l
bnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0ZW0pCkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0+JiYgbmV3SXRlbSkKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1v
dmUoMCk7CiAKICAgICAgICAgICAgIGlmIChtX2VudHJpZXMuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIC0tKm1fY3VycmVudEluZGV4OwogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAg
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKCkKICAgICB9CiAKICAgICBt
X2VudHJpZXMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX2N1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwogfQogCkBAIC0z
NzYsNyArMzc2LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkKICAgICAgICAg
fQogCiAgICAgICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgICAgICBtX2N1cnJlbnRJbmRleCA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURk1vdmUo
cmVtb3ZlZEl0ZW1zKSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgaWYgKGN1cnJlbnRJdGVtKQogICAg
ICAgICBtX2VudHJpZXMuYXBwZW5kKGN1cnJlbnRJdGVtLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0KG51bGxwdHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKQEAgLTQyNiw3
ICs0MjYsNyBAQCBCYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExpc3Q6OmJhY2tG
b3J3YXJkTGlzdFN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbAogICAgIH0KIAogICAgIGlmIChiYWNr
Rm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIGJhY2tGb3J3YXJkTGlz
dFN0YXRlLmN1cnJlbnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYmFja0ZvcndhcmRM
aXN0U3RhdGUuY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKGJhY2tG
b3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSA8PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJy
ZW50SW5kZXgudmFsdWUoKSkKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudElu
ZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIC0gMTsKIApAQCAtNDQ2LDcg
KzQ0Niw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tG
b3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgICAgIGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIE9iamVjdElk
ZW50aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPjo6
Z2VuZXJhdGUoKSB9OwogICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgbV9w
YWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9Ci0gICAgbV9jdXJyZW50SW5kZXggPSBiYWNrRm9y
d2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpiYWNrRm9yd2Fy
ZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudElu
ZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9uYWw8c2l6ZV90
PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9yd2FyZCwgIihC
YWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9tIHN0YXRlICho
YXMgJXp1IGVudHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFlNGEzNDA0NGYy
MmQ2ODMyYzgwZWMzMzg0Li5hZmQ3NjI3YzkwMDdjNzQ0ZDYyNTAwN2UxNTJhNmY2MWFjMWZiZGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwNjAsNyAr
MTA2MCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJv
Y2Vzc0ZvclJlbG9hZCgpCiAgICAgfQogCiAgICAgLy8gV2UgYWxsb3cgc3RhbGUgY29udGVudCB3
aGVuIHJlbG9hZGluZyBhIFdlYlByb2Nlc3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9yIGNyYXNoZWQu
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0
ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1f
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6
SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzdGQ6
Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwog
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNs
aWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlv
bkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVu
dCBuYXZpZ2F0aW9uIl9zKSk7CiAKLSAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlw
ZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwg
TUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBzdGQ6Om51bGxv
cHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9u
OwogfQogCkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKICAgICBt
X3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24sIHsgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS51cmwoKSB9KTsKIAot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlv
biA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVM
b2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0
aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFt
ZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzdGQ6Om51bGxvcHQp
KTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgcmV0
dXJuIG5hdmlnYXRpb247CkBAIC0yNjU2LDcgKzI2NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRW5kRHJhZ2dpbmcoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0lu
Zm9ybWF0aW9uKCkKIHsKLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0
OworICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jdXJy
ZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwogICAgIG1f
Y3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnREcmFnTnVt
YmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7CkBAIC0yNzUyLDcgKzI3NTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICNpZiBQTEFURk9STShN
QUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9u
ICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnRE
cmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJjb20u
YXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHNh
bmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2Vydmlj
ZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAgIAogICAgIExPRyhNb3Vz
ZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBzaXplICV6
dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1
ZS5zaXplKCkpOwpAQCAtMzI5MCw3ICszMjkwLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWkK
ICAgICB9CiAKICAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsKLSAgICAg
ICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobV9pZ25vcmVzQXBwQm91bmREb21haW5zKQpA
QCAtMzQ0NSw3ICszNDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdl
YnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVm
PFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNl
bmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKKyAgICAg
ICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zNDkzLDcgKzM0OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQ
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIEFTU0VSVCht
X3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJv
Y2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0
aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWlu
RnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLnB0cigpICE9ICZtX3Byb3Zpc2lvbmFs
UGFnZS0+cHJvY2VzcygpKTsKIApAQCAtMzg5OCw3ICszODk4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIE9w
dGlvbmFsPHUKIAogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IudmFsdWVPcihtX2ludHJp
bnNpY0RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbV9jdXN0b21EZXZpY2VTY2FsZUZh
Y3Rvci52YWx1ZV9vcihtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxl
RmFjdG9yKQpAQCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3Rv
bURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQogICAgIGlmIChjdXN0
b21TY2FsZUZhY3RvcikKICAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciA9IGN1c3Rv
bVNjYWxlRmFjdG9yOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3Rv
ciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3RvciA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDI0OCw3ICs0MjQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRp
YWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewotICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEY6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCks
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzdGQ6Om51bGxvcHQsIEFQSTo6Q29udGVu
dFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxk
KFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
QEAgLTUyMTUsNyArNTIxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICBpZiAo
IWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3Ms
IHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVj
YXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQ
b2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVy
LT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC01Mjc2LDcgKzUyNzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2NlcwogICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBX
ZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICBhdXRvIHVzZXJJbml0
aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYXV0byBuYXZpZ2F0
aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUlu
Zm8ucHRyKCksIFdURjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5h
bFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVk
QWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rp
b24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIo
KSwgc3RkOjpudWxsb3B0LCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVz
dC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24o
cmVxdWVzdCkpIHsKQEAgLTU0NzMsNyArNTQ3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3MpLCAq
ZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVz
dEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlS
ZWYoKSk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91
c2x5LCBwcm9jZWVkIHdpdGggdGhlIGxvYWQuCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lz
aW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVu
dGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpV
c2UsIG5hdmlnYXRpb25JRCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNTY5
NCw3ICs1Njk0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICAgICBhdXRvIG1haW5GcmFt
ZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgPSBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudF0gKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgewogICAgICAg
ICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgIHJlcGx5KHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01NzIyLDcgKzU3MjIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBXZWJQYQogICAgICAgICB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBt
X3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAKICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgpICE9IHJlcXVlc3Qu
dXJsKCkuaG9zdCgpOwotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGlu
Z0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSkpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5m
by5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwg
c2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCiAg
ICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksICp0aGlzLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKV0gKFJlZjxB
UEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMsIFdURk1vdmUo
d2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CkBAIC02NTI5LDcgKzY1MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKAogICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1BdEluZGV4
KGluZGV4KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlEKCkpOwogICAg
IGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmJhY2tGb3J3YXJkTGlzdENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZExpc3RDb3VudHNEZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTY5MTMsOSAr
NjkxMyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdp
dGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNvblNlcnZpY2Vz
U2FuZGJveEV4dGVuc2lvbjsKICNpZiBIQVZFKEZST05UQk9BUkRfU1lTVEVNX0FQUF9TRVJWSUNF
UykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgV1RGOjpudWxsb3B0LCBmcm9u
dGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBz
ZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0LCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5z
aW9uKTsKICNlbmRpZgotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwgaWNvblNlcnZp
Y2VzU2FuZGJveEV4dGVuc2lvbik7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0LCBp
Y29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZp
bGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNl
KCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVu
c2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikpOwogCkBAIC03NzYxLDcgKzc3NjEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0
U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgbV93ZWJz
aXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQ
YWdlSUQsIFdURjo6bnVsbG9wdCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNh
dG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAj
ZW5kaWYKIAogICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlciA9IG51bGxw
dHI7CkBAIC04MDE0LDcgKzgwMTQsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIGlm
IChtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJP
dmVybGF5U3R5bGUgPSBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZS52YWx1ZSgpOwogICAgIGVsc2UK
LSAgICAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3RkOjpudWxsb3B0
OwogICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlID0gbV9iYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAgICAgcGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlID0g
bV9sYXllckhvc3RpbmdNb2RlOwogICAgIHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlv
biA9IG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKQEAgLTgwNTYsOCArODA1Niw4IEBAIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jCiAKICAgICBpZiAobmVlZFdlYlByb2Nlc3NFeHRlbnNpb25zKSB7
CiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxkIGJlIHJlbW92
ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCi0gICAgICAgIHBhcmFtZXRlcnMu
bWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7Ci0g
ICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVk
SU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMubWVkaWFF
eHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxhdGVkSU9LaXRD
bGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFwcmVmZXJlbmNlcygp
LnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKQpAQCAtODA2NSw4ICs4MDY1LDggQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICAgICAgfHwgKCFwcmVmZXJlbmNlcygpLmNhcHR1cmVB
dWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQoKSAmJiAhcHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9J
blVJUHJvY2Vzc0VuYWJsZWQoKSkKICAgICAgICAgfHwgIXByZWZlcmVuY2VzKCkudXNlR1BVUHJv
Y2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAgICB8fCAhcHJlZmVyZW5jZXMo
KS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKLSAgICAgICAgcGFyYW1ldGVycy5n
cHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7
Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVNYWNoU2VydmljZXMoKSwgV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMo
Z3B1SU9LaXRDbGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZ3B1
TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChncHVNYWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5k
aWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQpAQCAtODEwNCw3ICs4MTA0LDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IG1fY29uZmln
dXJhdGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCktPmFw
cGxpY2F0aW9uTWFuaWZlc3QoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5hcHBs
aWNhdGlvbk1hbmlmZXN0ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkg
PyBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihtX2NvbmZpZ3VyYXRpb24t
PmFwcGxpY2F0aW9uTWFuaWZlc3QoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpKSA6IHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbV9u
ZWVkc0ZvbnRBdHRyaWJ1dGVzOwpAQCAtODE2NSw3ICs4MTY1LDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJv
eHkmIHByb2MKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBMQVRGT1JNKENP
Q09BKQogICAgIGlmIChtX3ByZWZlcmVuY2VzLT5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAm
JiAhbV9wcm9jZXNzLT5oYXNJc3N1ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0
ZW5zaW9ucygpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1lbnRFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
YXR0YWNobWVudEVsZW1lbnRTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJh
bWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGF0dGFjaG1lbnRFbGVtZW50U2VydmljZXMo
KSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgbV9wcm9jZXNzLT5zZXRIYXNJc3N1ZWRBdHRhY2ht
ZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIH0KICNlbmRpZgpAQCAt
MTAxNDQsNyArMTAxNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0UGFnZUxvYWRSZXN1
bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8gcGFnZUxvYWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSAqbV9wYWdlTG9hZFN0YXJ0
OwotICAgIG1fcGFnZUxvYWRTdGFydCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BhZ2VMb2FkU3Rh
cnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBDb21wbGV0aW9uQ29uZGl0aW9uIGNvbmRpdGlvbiB7
IENvbXBsZXRpb25Db25kaXRpb246OlN1Y2Nlc3MgfTsKICAgICBpZiAoZXJyb3IuaXNDYW5jZWxs
YXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjc2Yzdj
MzAwYzQ0ODYwZmM4MjIzNmJjNjRhZjZmNTA0YjgzNWFlNS4uMDMyM2Y2OWYwZDYxMjcwYzdjZmE3
MmI2M2I1ZmFmNzI5NDg3OTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9TaXppbmdT
aG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIFdlYkNv
cmU6OkludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52YWx1ZU9yKFdlYkNvcmU6Oklu
dFNpemUoKSk7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5p
dHMudmFsdWVfb3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eT4mJiwgTmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCk7CkBAIC0xNzMwLDggKzE3MzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3Rh
cnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0g
V1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdh
dGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFt
ZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0xODMz
LDcgKzE4MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc0ZvcmNlZEludG9BcHBCb3VuZE1vZGVU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjsgfQogI2Vsc2UKLSAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH0KKyAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCAxMmUyMGJhN2U2YWNlZmU2N2YzYzFl
ZThiNmQ2NDMwYmEyNDJkYTBiLi40YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAzMWQ5NTA2MWY5
MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5j
cHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0
b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOgogCiB2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYsIGludDY0X3QsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJ
bmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6
OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmE5MzBmYTRlNzY3M2I1ZDUyZTJmNGQ1YWMzOWE1
Y2M0ZmMzYzMxNi4uYjUyNGMyNGQxODlhNWQwNzNjNmUzMDlmNWExMjliNjYwMTgxMzM2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjA1Niw3ICsy
MDU2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9u
cygpCiB7CiAgICAgaWYgKCFtX3dlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291bnRlci52YWx1
ZSgpKSB7CiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAidXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9uczogVGhlIG51bWJlciBvZiBwcm9jZXNz
ZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIG5vdyB6ZXJvLiBSZWxlYXNpbmcgVUkgcHJvY2VzcyBh
c3NlcnRpb24uIik7Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCmluZGV4IGY1YmE1MGI5OWFlYzY0NzcyZGJmYTEwZWE4OGNhNWM3MzM0MmVjNWYu
LmQ2YmIzMzczN2JiZjk5ZGM3NDNhNzc3NzZmMzUxMDhmMzllNmM2ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDYzLDcgKzQ2Myw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVy
LmludmFsaWRhdGUoKTsKICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyLmludmFs
aWRhdGUoKTsKICAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsK
LSAgICBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgIG1fYXVkaWJs
ZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8mIGZyYW1lIDog
Y29weVRvVmVjdG9yKG1fZnJhbWVNYXAudmFsdWVzKCkpKQogICAgICAgICBmcmFtZS0+d2ViUHJv
Y2Vzc1dpbGxTaHV0RG93bigpOwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6
OkNvbm5lY3QKICNlbmRpZgogCiAgICAgaWYgKG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1Rp
bWVyV2hlbkxhdW5jaGVkKSB7Ci0gICAgICAgIGF1dG8gdXNlTGF6eVN0b3AgPSAqc3RkOjpleGNo
YW5nZShtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgYXV0byB1c2VMYXp5U3RvcCA9ICpzdGQ6OmV4Y2hhbmdlKG1fc2hv
dWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkLCBzdGQ6Om51bGxvcHQpOwog
ICAgICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIodXNlTGF6eVN0b3ApOwogICAgIH0KIH0K
QEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVBdWRpYmxl
TWVkaWFBc3NlcnRpb25zKCkKICAgICAgICAgfTsKICAgICB9IGVsc2UgewogICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUmVsZWFzaW5nIE1lZGlhUGxheWJhY2sg
YXNzZXJ0aW9uIGZvciBXZWJQcm9jZXNzIHdpdGggUElEICVkIiwgdGhpcywgcHJvY2Vzc0lkZW50
aWZpZXIoKSk7Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDA4Yjg0
NjdjYzhhZTI3MmQ5NDFjMTUyNzk0MjMxMDY0ZjZkOWY0NGEuLmUyNTM4NzY2MWI0NjM2OTBhYjQ4
OGFhZThkYTM2NDkwYTljOWZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc01hdGNoaW5nUmVnaXN0cmFibGVE
b21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QgeyBy
ZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA/ICptX3JlZ2lzdHJhYmxlRG9tYWluID09IGRvbWFp
biA6IGZhbHNlOyB9Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVlT3IoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB9KTsgfQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bi52YWx1ZV9vcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CiAgICAgdm9pZCBz
ZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KaW5kZXggY2ZjZDlmM2MwM2M5YzZhMWEzZDM0ZWQxY2M5Nzc3YTgwNzI3
ZTk5MC4uYjM5NzhmMjRlNGFiOTQ2OTgyNDU3NDhkMWE3YmNhZjVjNjFjY2UzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGNvbnN0IFN0cmluZyYgaG9z
dCwgY29uc3QgU3RyaW5nCiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkgaGF2ZSBh
cHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJvdW5kRG9t
YWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CiAgICAgICAgIGlmICghaGFz
QXBwQm91bmREb21haW5zKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZUFwcEJv
dW5kRG9tYWluUmVzdWx0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBsaXN0ZW5lci0+ZGlk
UmVjZWl2ZUFwcEJvdW5kRG9tYWluUmVzdWx0KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3VuZERv
bWFpblJlc3VsdChzY2hlbWVPckRvbWFpbklzQXBwQm91bmQoaG9zdCwgcHJvdG9jb2wsIGRvbWFp
bnMsIHNjaGVtZXMpKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBPcHRpb25hbDxIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5z
SQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFoYXNJbml0aWFs
aXplZEFwcEJvdW5kRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYXBwQm91bmREb21haW5zKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNjNiZWFhMTY5ODUyY2RmNWFhYzc1ZTYwYTJhNjc3NDEz
Njk5ZjRmNC4uYmQ5NmFiMWVjZDQxYTlmNDk4NGYxYmY2YWRkOWY2ZDcxOTBiZWVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTE5NDgsNyArMTk0OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKLSAgICAg
ICAgYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVl
T3IoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyB9KTsKKyAgICAgICAgYXBw
Qm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZhbHVlX29yKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYKICAgICBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFs
ZW50UmVzb3VyY2U7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3Bw
CmluZGV4IDQxMTA1NmQ0M2VhNzY0YzQyYmNlMDQwM2U2YzY5ZGRiOGIyNGIwNGUuLjY5MmE0NWE0
OGZhMDI3ZjkyMjEzMzhkNzRmNTM1MWJlZjRiYWYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlk
ZXIuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBHZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRl
cjo6bG9jYXRpb25VcGRhdGVkKEdSZWZQdHI8R0RCdXNQcm94eT4mJiBwcm94eSkKICAgICBndWlu
dDY0IHRpbWVzdGFtcDsKICAgICBnX3ZhcmlhbnRfZ2V0KHByb3BlcnR5LmdldCgpLCAiKHR0KSIs
ICZ0aW1lc3RhbXAsIG51bGxwdHIpOwogICAgIHBvc2l0aW9uLnRpbWVzdGFtcCA9IHN0YXRpY19j
YXN0PGRvdWJsZT4odGltZXN0YW1wKTsKLSAgICBtX3VwZGF0ZU5vdGlmeUZ1bmN0aW9uKFdURk1v
dmUocG9zaXRpb24pLCBXVEY6Om51bGxvcHQpOworICAgIG1fdXBkYXRlTm90aWZ5RnVuY3Rpb24o
V1RGTW92ZShwb3NpdGlvbiksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgR2VvY2x1ZUdlb2xv
Y2F0aW9uUHJvdmlkZXI6OmRpZEZhaWwoQ1N0cmluZyBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcAppbmRl
eCA1YjQ2MDk5NzkyYjY5OWUwYWUwNDc5YzI4YWEwM2MzYTc5MzRiMTFlLi40YTNkYTJkNTZjNTMz
NmMzZjQ4MDUxNDkzZmUxM2RiZDEzNGQyMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
dm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtSW5kZXgp
CiB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0aW9uYWw8dW5zaWdu
ZWQ+IGl0ZW1JbmRleCkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT52
YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVlT3IobV9zZWxlY3Rl
ZEl0ZW0udmFsdWVPcigtMSkpKTsKKyAgICAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudSh0aGlzLCBpdGVtSW5kZXgudmFsdWVfb3IobV9zZWxlY3RlZEl0ZW0udmFsdWVfb3Io
LTEpKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRlSXRlbUF0UGF0
aChHdGtUcmVlUGF0aCogcGF0aCkKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5R3RrOjpoaWRlUG9wdXBNZW51KCkKICAgICB9CiAjZW5kaWYKIAotICAgIGFjdGl2YXRl
SXRlbShXVEY6Om51bGxvcHQpOworICAgIGFjdGl2YXRlSXRlbShzdGQ6Om51bGxvcHQpOwogCiAg
ICAgaWYgKG1fY3VycmVudFNlYXJjaFN0cmluZykgewogICAgICAgICBnX3N0cmluZ19mcmVlKG1f
Y3VycmVudFNlYXJjaFN0cmluZywgVFJVRSk7CkBAIC00MzIsMTAgKzQzMiwxMCBAQCBPcHRpb25h
bDx1bnNpZ25lZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNp
Z25lZCBrZXl2YWwsIHVpbgogewogICAgIGd1bmljaGFyIGtleWNoYXIgPSBnZGtfa2V5dmFsX3Rv
X3VuaWNvZGUoa2V5dmFsKTsKICAgICBpZiAoIWdfdW5pY2hhcl9pc3ByaW50KGtleWNoYXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKHRpbWUgPCBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHR5cGVhaGVhZFRpbWVvdXRNcyA9IDEwMDA7CiAgICAgaWYgKHRp
bWUgLSBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lID4gdHlwZWFoZWFkVGltZW91dE1zKSB7CkBAIC00
NjksNyArNDY5LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlBvcHVwTWVudVByb3h5R3RrOjp0
eXBlQWhlYWRGaW5kSW5kZXgodW5zaWduZWQga2V5dmFsLCB1aW4KICAgICBHVW5pcXVlUHRyPGNo
YXI+IG5vcm1hbGl6ZWRQcmVmaXgoZ191dGY4X25vcm1hbGl6ZShtX2N1cnJlbnRTZWFyY2hTdHJp
bmctPnN0ciwgcHJlZml4TGVuZ3RoLCBHX05PUk1BTElaRV9BTEwpKTsKICAgICBHVW5pcXVlUHRy
PGNoYXI+IHByZWZpeChub3JtYWxpemVkUHJlZml4ID8gZ191dGY4X2Nhc2Vmb2xkKG5vcm1hbGl6
ZWRQcmVmaXguZ2V0KCksIC0xKSA6IG51bGxwdHIpOwogICAgIGlmICghcHJlZml4KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgbW9kZWwgPSBndGtfdHJlZV92aWV3X2dldF9tb2RlbChHVEtfVFJFRV9WSUVXKG1fdHJlZVZp
ZXcpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbUNvdW50OyBpKyssIGluZGV4
ID0gKGluZGV4ICsgMSkgJSBpdGVtQ291bnQpIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBPcHRpb25h
bDx1bnNpZ25lZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJbmRleCh1bnNp
Z25lZCBrZXl2YWwsIHVpbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9v
bCBXZWJQb3B1cE1lbnVQcm94eUd0azo6dHlwZUFoZWFkRmluZCh1bnNpZ25lZCBrZXl2YWwsIHVp
bnQzMl90IHRpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDBkM2RhOTJjZDQxNTUwN2E4YjE4
ODkyNDczMzYxNjdiOGM4NWQ2YjQuLmY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3Y2RhYTdlZDRk
ZWZiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgc3RhdGljIGJvb2wg
Y2FuVXBkYXRlUHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRl
JiBzb3VyY2UpCiBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IERyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZTo6YWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqaXRlbSkgY29uc3QKIHsK
ICAgICBpZiAoIVtpdGVtLnByaXZhdGVMb2NhbENvbnRleHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IFsoTlNOdW1iZXIgKilpdGVt
LnByaXZhdGVMb2NhbENvbnRleHQgaW50ZWdlclZhbHVlXTsKICAgICBmb3IgKGF1dG8mIHNvdXJj
ZSA6IG1fYWN0aXZlRHJhZ1NvdXJjZXMpIHsKICAgICAgICAgaWYgKHNvdXJjZS5pdGVtSWRlbnRp
ZmllciA9PSBpZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKICAgICB9Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKSBjb25zdApAQCAtMzY0LDcgKzM2NCw3IEBAIHZv
aWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpjbGVhclN0YWdlZERyYWdTb3VyY2UoRGlkQmVj
b21lQWN0aXZlIGRpZEJlY29tZUFjCiB7CiAgICAgaWYgKGRpZEJlY29tZUFjdGl2ZSA9PSBEaWRC
ZWNvbWVBY3RpdmU6OlllcykKICAgICAgICAgbV9hY3RpdmVEcmFnU291cmNlcy5hcHBlbmQoc3Rh
Z2VkRHJhZ1NvdXJjZSgpKTsKLSAgICBtX3N0YWdlZERyYWdTb3VyY2UgPSBXVEY6Om51bGxvcHQ7
CisgICAgbV9zdGFnZWREcmFnU291cmNlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDA0OWFk
YzVhOWNhNmJiZWM5MTZhYzIxNWY3OGVlODU5OGZlZmM2NWMuLmQ2Mzg4YzA4NTAxNzlkOTZhYTMw
YzcyNzRlNTkwYzNlY2UxNWE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yOTAsNyArMjkwLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgdm9pZCBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVy
ZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKLSAgICBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBhY3Rp
dmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVy
Kikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVu
dGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDUwYzlh
MDFjNDA4ZDQ2YjE3YTQ3NTgwNTE0NGY1YjQ4ZjQ1NzI0ZGEuLmU0MjhkYWMwYTBiNDJmZmQ2ZDgy
YzI5ZDY3YzM3NzFiNWY2NTE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTY3Miw3ICs2NzIsNyBAQCBib29sIFBhZ2VDbGll
bnRJbXBsOjpoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IEZyYQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVldChjb25zdCBT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzaGFyZURhdGEsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBbbV9jb250ZW50VmlldyBf
c2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDpXVEY6Om51bGxvcHQgY29tcGxldGlvbkhh
bmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOworICAgIFttX2NvbnRlbnRWaWV3IF9z
aG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OnN0ZDo6bnVsbG9wdCBjb21wbGV0aW9uSGFu
ZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5jZWxQb2ludGVyc0Zv
ckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlcwogICAgIFttX2NvbnRl
bnRWaWV3IGNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVyZVJlY29nbml6
ZXJdOwogfQogCi1XVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBQYWdlQ2xpZW50SW1wbDo6YWN0aXZl
VG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciog
Z2VzdHVyZVJlY29nbml6ZXIpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBQYWdlQ2xpZW50SW1w
bDo6YWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVj
b2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIpCiB7CiAgICAgcmV0dXJuIFttX2NvbnRlbnRWaWV3
IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25p
emVyXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW0KaW5kZXggN2RiYzAxMzJkODJlZDBjZDY1ODEwZjBmY2VmYmYzZmM0
ZDI4NWZkYy4uYjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUxNjQwMzRhZDhjZjBlYWQ3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQubW0KQEAgLTEwNDksNyArMTA0OSw3IEBAIC0gKHZvaWQpY2xlYW51cFNoZWV0CiAgICAgW19p
bnRlcmFjdGlvblNoZWV0IHNldFNoZWV0RGVsZWdhdGU6bmlsXTsKICAgICBfaW50ZXJhY3Rpb25T
aGVldCA9IG5pbDsKICAgICBfZWxlbWVudEluZm8gPSBuaWw7Ci0gICAgX3Bvc2l0aW9uSW5mb3Jt
YXRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24gPSBzdGQ6Om51
bGxvcHQ7CiAgICAgX25lZWRzTGlua0luZGljYXRvciA9IE5POwogICAgIF9pc1ByZXNlbnRpbmdE
RFVzZXJJbnRlcmZhY2UgPSBOTzsKICAgICBfaGFzUGVuZGluZ0FjdGlvblNoZWV0ID0gTk87CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IDRjZTUx
NWIxOGQ5MGMxMjQ1OTQzNjRiMmZjODcwYWFhZWE0ZDRmMTUuLjZiMDQ5YjQwN2IxMjFlODkzMDQy
ZGYzOWExNTFmYzk2MjkxMGVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC0xODAsNyArMTgwLDcgQEAgLSAoaW5zdGFuY2V0eXBlKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYp
cHIKICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRoZSByYW5nZSBv
ZiBEaXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwgaXQgaXMgbm90
IGVudGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIGFuZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGluIHRoZSBzYW1l
IHByb2Nlc3MuCi0gICAgX3BhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSBfcGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSwg
V1RGOjpudWxsb3B0KTsKKyAgICBfcGFnZS0+d2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIF9wYWdlLT53ZWJQYWdlSUQoKS50b1VJbnQ2
NCgpLCBzdGQ6Om51bGxvcHQpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIF9w
YWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxsc2NyZWVuQ2xp
ZW50PihzZWxmLndlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBiYjQ1NDNjMzY4MTE4N2YyNzJi
NDA5M2Q4NzY3ZmJhOGM4NGZiM2FmLi43Mjc1OTRiM2YzNDA1NjYwM2Y3MGVhYzhjYjJkMmU1NWMz
MzUxNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC01NTgsNyArNTU4LDcgQEAgdXNpbmcgSW1hZ2VFeHRy
YWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdlRXh0cmFjdGlv
blJlcXVlc3QKIC0gKHZvaWQpX3pvb21Ub1JldmVhbEZvY3VzZWRFbGVtZW50OwogCiAtICh2b2lk
KWNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIg
KilnZXN0dXJlUmVjb2duaXplcjsKLS0gKFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+KWFjdGl2ZVRv
dWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICop
Z2VzdHVyZVJlY29nbml6ZXI7CistIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPilhY3RpdmVUb3Vj
aElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyOwogCiAjZGVmaW5lIERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05f
Rk9SX1dFQl9WSUVXKF9hY3Rpb24pIFwKICAgICAtICh2b2lkKV9hY3Rpb24gIyMgRm9yV2ViVmll
dzooaWQpc2VuZGVyOwpAQCAtNjA0LDcgKzYwNCw3IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05U
RU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcp
CiAtICh2b2lkKV9zY3JvbGxpbmdOb2RlU2Nyb2xsaW5nRGlkRW5kOwogLSAodm9pZClfc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyOihCT09MKWhhc1ZpZGVvIGZyb21SZWN0Oihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JillbGVtZW50UmVjdCByb3V0ZVNoYXJpbmdQb2xpY3k6KFdlYkNvcmU6OlJvdXRl
U2hhcmluZ1BvbGljeSlwb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5nICopY29udGV4
dFVJRDsKIC0gKHZvaWQpX3Nob3dSdW5PcGVuUGFuZWw6KEFQSTo6T3BlblBhbmVsUGFyYW1ldGVy
cyopcGFyYW1ldGVycyBmcmFtZUluZm86KGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYpZnJh
bWVJbmZvIHJlc3VsdExpc3RlbmVyOihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkqKWxpc3RlbmVyOwotLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKXNoYXJlRGF0YSBpblJlY3Q6KFdURjo6T3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9zaG93
U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYpc2hhcmVE
YXRhIGluUmVjdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxl
dGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0
aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3Nob3dDb250YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpD
b250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5m
bz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWZp
bGVQaWNrZXJBY2NlcHRlZFR5cGVJZGVudGlmaWVyczsKIC0gKHZvaWQpZGlzbWlzc0ZpbGVQaWNr
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxOGExY2RlOWNlODljZDJmNDZjNjI1MDEwNjgxMTE4NmVk
NGI0ZGMwLi5hN2FlMWI0OTc0Y2NiOWU2ZTZmOTA0YmM0MWVhMjY1ZWM1M2UwMzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTk3MSw3ICs5NzEsNyBAQCAtICh2b2lkKWNsZWFuVXBJbnRlcmFjdGlvbgog
ICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKICAgICBfZm9ybUlucHV0U2Vzc2lv
biA9IG5pbDsKICAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAg
X2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gV1RGOjpudWxsb3B0
OworICAgIF9sYXN0T3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVzdCA9IHN0ZDo6
bnVsbG9wdDsKICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9ybWF0aW9uID0gTk87CiAKICAg
ICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POwpAQCAtMTAwMCw3
ICsxMDAwLDcgQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICAgICAgX2ludGVyYWN0
aW9uVmlld3NDb250YWluZXJWaWV3ID0gbmlsOwogICAgIH0KIAotICAgIF9sYXN0SW5zZXJ0ZWRD
aGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RGOjpudWxsb3B0
OworICAgIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2Vs
ZWN0aW9uID0gc3RkOjpudWxsb3B0OwogCiAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpf
dG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTE1NDQsNyArMTU0NCw3IEBA
IC0gKHZvaWQpY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pCiAgICAgfQogfQogCi0tIChXVEY6Ok9wdGlvbmFsPHVu
c2lnbmVkPilhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCistIChzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPilhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJl
UmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgTlNNYXBUYWJsZTxOU051bWJl
ciAqLCBVSVRvdWNoICo+ICphY3RpdmVUb3VjaGVzID0gW190b3VjaEV2ZW50R2VzdHVyZVJlY29n
bml6ZXIgYWN0aXZlVG91Y2hlc0J5SWRlbnRpZmllcl07CiAgICAgZm9yIChOU051bWJlciAqdG91
Y2hJZGVudGlmaWVyIGluIGFjdGl2ZVRvdWNoZXMpIHsKQEAgLTE1NTIsNyArMTU1Miw3IEBAIC0g
KFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+KWFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVS
ZWNvZ25pemVyOihVSUdlc3R1cmVSCiAgICAgICAgIGlmIChbdG91Y2guZ2VzdHVyZVJlY29nbml6
ZXJzIGNvbnRhaW5zT2JqZWN0Omdlc3R1cmVSZWNvZ25pemVyXSkKICAgICAgICAgICAgIHJldHVy
biBbdG91Y2hJZGVudGlmaWVyIHVuc2lnbmVkSW50VmFsdWVdOwogICAgIH0KLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBzdGF0
aWMgVUlLZXlNb2RpZmllckZsYWdzIGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJGbGFncyhVSUdl
c3R1cmVSZWNvZ25pemVyICpyZWNvZ25pemVyKQpAQCAtMjUyNSw3ICsyNTI1LDcgQEAgLSAodm9p
ZClfaW52b2tlQW5kUmVtb3ZlUGVuZGluZ0hhbmRsZXJzVmFsaWRGb3JDdXJyZW50UG9zaXRpb25J
bmZvcm1hdGlvbgogICAgICAgICBpZiAoIVtzZWxmIF9jdXJyZW50UG9zaXRpb25JbmZvcm1hdGlv
bklzVmFsaWRGb3JSZXF1ZXN0OnJlcXVlc3RBbmRIYW5kbGVyLT5maXJzdF0pCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBfcGVuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25IYW5kbGVy
c1tpbmRleF0gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9wZW5kaW5nUG9zaXRpb25JbmZvcm1h
dGlvbkhhbmRsZXJzW2luZGV4XSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAocmVxdWVz
dEFuZEhhbmRsZXItPnNlY29uZCkKICAgICAgICAgICAgIHJlcXVlc3RBbmRIYW5kbGVyLT5zZWNv
bmQodXBkYXRlZFBvc2l0aW9uSW5mb3JtYXRpb24pOwpAQCAtMjYyNCw3ICsyNjI0LDcgQEAgLSAo
Qk9PTClnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luOihVSUdlc3R1cmVSZWNvZ25pemVyICop
Z2VzdHVyZVJlY29nbml6ZXIKICAgICAgICAgICAgIGlmICghW3NlbGYgZW5zdXJlUG9zaXRpb25J
bmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5P
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5ub2RlQXRQ
b3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlci52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSGFzRG91YmxlQ2xpY2tIYW5k
bGVyLnZhbHVlX29yKGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIg
PT0gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCkBAIC0zMTM2LDcgKzMxMzYs
NyBAQCAtICh2b2lkKV9pbnZhbGlkYXRlQ3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KIC0gKHZv
aWQpX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm8KIHsKICAgICBpZiAoX2xhc3RPdXRzdGFuZGlu
Z1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ICYmIGluZm8ucmVxdWVzdC5pc1ZhbGlkRm9yUmVx
dWVzdCgqX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0KSkKLSAgICAg
ICAgX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gV1RGOjpudWxs
b3B0OworICAgICAgICBfbGFzdE91dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlvblJlcXVlc3Qg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9ybWF0aW9uID0g
Tk87CiAKQEAgLTQ0MjAsNyArNDQyMCw3IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhCb3VuZGFyeTooVUlUZXh0R3JhbnVsCiAKIC0g
KFVURjMyQ2hhcilfY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24KIHsKLSAgICByZXR1cm4g
X2xhc3RJbnNlcnRlZENoYXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24u
dmFsdWVPcihfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3RlckJl
Zm9yZVNlbGVjdGlvbik7CisgICAgcmV0dXJuIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJy
aWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLnZhbHVlX29yKF9wYWdlLT5lZGl0b3JTdGF0ZSgp
LnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKIH0KIAogLSAoVVRG
MzJDaGFyKV9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjooaW50KWFtb3VudApA
QCAtNjQyOSw3ICs2NDI5LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKICAgICBpZiAoIV9p
c0NoYW5naW5nRm9jdXMpCiAgICAgICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0ZUZvY3VzID0g
Tk87CiAKLSAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9y
ZVNlbGVjdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9P
dmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogLSAo
dm9pZClfdXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50
CkBAIC03MDI5LDcgKzcwMjksNyBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2VkCiAgICAgW193
ZWJWaWV3IF9kaWRDaGFuZ2VFZGl0b3JTdGF0ZV07CiAKICAgICBpZiAoIV9wYWdlLT5lZGl0b3JT
dGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIF9sYXN0SW5zZXJ0ZWRD
aGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RGOjpudWxsb3B0
OworICAgICAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9y
ZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFfdXNpbmdHZXN0dXJlRm9y
U2VsZWN0aW9uICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmF1dG9jYXBpdGFsaXplVHlw
ZSA9PSBXZWJDb3JlOjpBdXRvY2FwaXRhbGl6ZVR5cGU6OldvcmRzKQogICAgICAgICAgICAgW1VJ
S2V5Ym9hcmRJbXBsLnNoYXJlZEluc3RhbmNlIGNsZWFyU2hpZnRTdGF0ZV07CiAgICAgfQpAQCAt
NzI0MSw3ICs3MjQxLDcgQEAgLSAoQk9PTClmaWxlVXBsb2FkUGFuZWxEZXN0aW5hdGlvbklzTWFu
YWdlZDooV0tGaWxlVXBsb2FkUGFuZWwgKilmaWxlVXBsb2FkUGFuZWwKICAgICAgICAgJiYgW3Vp
RGVsZWdhdGUgX3dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaWxlVXBsb2FkUGFuZWxDb250ZW50SXNN
YW5hZ2VkV2l0aEluaXRpYXRpbmdGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
V1RGTW92ZShfZnJhbWVJbmZvRm9yRmlsZVVwbG9hZFBhbmVsKSwgX3BhZ2UuZ2V0KCkpKV07CiB9
CiAKLS0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+
KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
Y29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3Jl
OjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiAhUExBVEZPUk0oV0FUQ0hP
UykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgaWYgKF9zaGFyZVNoZWV0KQpAQCAtNzI5MCw3
ICs3MjkwLDcgQEAgLSAodm9pZClfc2hvd0NvbnRhY3RQaWNrZXI6KGNvbnN0IFdlYkNvcmU6OkNv
bnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXAKICAgICBbX2NvbnRhY3RQaWNrZXIg
c2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW19jb250YWN0UGlja2VyIHByZXNlbnRXaXRoUmVxdWVz
dERhdGE6cmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildOwogI2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApAQCAtNzQwNSw3
ICs3NDA1LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbj4pcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGkKICAgICByZXF1ZXN0LmluY2x1ZGVM
aW5rSW5kaWNhdG9yID0gYXNzaXN0YW50Lm5lZWRzTGlua0luZGljYXRvcjsKICAgICByZXF1ZXN0
LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFzZWxmLl9zaG91bGRVc2VD
b250ZXh0TWVudXM7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9ybWF0aW9uSXNV
cFRvRGF0ZTpyZXF1ZXN0XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbjsK
IH0KQEAgLTc5OTksNyArNzk5OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyCiB7CiAgICAg
c3dpdGNoIChkcm9wT3BlcmF0aW9uKSB7CiAgICAgY2FzZSBVSURyb3BPcGVyYXRpb25DYW5jZWw6
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRkZW46CiAgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpQcml2YXRlOwogICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9u
Q29weToKQEAgLTgwMDgsNyArODAwOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyCiAgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNl
c3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjoo
V0tEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCkBAIC05Mzk2LDcg
KzkzOTYsNyBAQCAtICh2b2lkKV9wb2ludGVySW50ZXJhY3Rpb246KFVJUG9pbnRlckludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gcmVnaW9uRm9yUmVxdWVzdAogICAgICAgICBjb21wbGV0aW9uKFtz
ZWxmIHBvaW50ZXJSZWdpb25Gb3JQb3NpdGlvbkluZm9ybWF0aW9uOmludGVyYWN0aW9uSW5mb3Jt
YXRpb24gcG9pbnQ6cmVxdWVzdC5sb2NhdGlvbl0pOwogCiAgICAgICAgIGlmIChfZGVmZXJyZWRQ
b2ludGVySW50ZXJhY3Rpb25SZXF1ZXN0KSB7Ci0gICAgICAgICAgICBhdXRvIGRlZmVycmVkUmVx
dWVzdCA9IHN0ZDo6ZXhjaGFuZ2UoX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9uUmVxdWVzdCwg
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gZGVmZXJyZWRSZXF1ZXN0ID0gc3RkOjpl
eGNoYW5nZShfZGVmZXJyZWRQb2ludGVySW50ZXJhY3Rpb25SZXF1ZXN0LCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3Jt
YXRpb24pIHsKICAgICAgICAgICAgICAgICByZXBseUhhbmRsZXIoaW50ZXJhY3Rpb25JbmZvcm1h
dGlvbiwgZGVmZXJyZWRSZXF1ZXN0LT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAgICAgfSBmb3JS
ZXF1ZXN0OmRlZmVycmVkUmVxdWVzdC0+Zmlyc3RdOwpAQCAtOTYzMyw4ICs5NjMzLDggQEAgLSAo
dm9pZClfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KHZvaWQoXikoV2ViS2l0OjpQcm9j
ZWVkV2l0aEltYWdlRXh0cmFjdGkKIAogLSAodm9pZClfaW52b2tlQWxsQWN0aW9uc1RvUGVyZm9y
bUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjooV2ViS2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0
cmFjdGlvbilwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogewotICAgIF9wZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Ci0gICAgX2VsZW1lbnRQ
ZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIF9wZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2VsZW1lbnRQ
ZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGZvciAoYXV0byBibG9j
ayA6IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJh
Y3Rpb24sIHsgfSkpCiAgICAgICAgIGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRyYWN0aW9uKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Ny
b2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2Fy
ZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IGI3OTFjZmVhYWUwYzNjZmIwNTliY2Q0NzI3NzZj
OGMzOWY0ZWU3MmUuLjdiNjUwNWZhNzhlNjYzMTQ2NzlkNDhmNjZlYzJkOTBkYWQ3MTQ0YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRT
Y3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgLSAoT3B0aW9uYWw8V2Vi
S2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAq
KWV2ZW50CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9IDB4MjA7CiAK
ICAgICBpZiAoIVtfc2Nyb2xsYWJsZSBpc0tleWJvYXJkU2Nyb2xsYWJsZV0pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoZXZlbnQua2V5Ym9hcmRGbGFncyAmIFdlYkV2ZW50S2V5Ym9hcmRJbnB1dE1vZGlmaWVyRmxh
Z3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVy
cyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKICAgICBpZiAoIWNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVycy5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBlbnVtIGNsYXNzIEtleSA6IHVp
bnQ4X3QgeyBPdGhlciwgTGVmdEFycm93LCBSaWdodEFycm93LCBVcEFycm93LCBEb3duQXJyb3cs
IFBhZ2VVcCwgUGFnZURvd24sIFNwYWNlIH07CiAgICAgCkBAIC0yMTYsNyArMjE2LDcgQEAgLSAo
T3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDoo
OjpXZWJFdmVudCAqKWV2ZW50CiAgICAgfSgpOwogICAgIAogICAgIGlmIChrZXkgPT0gS2V5OjpP
dGhlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICBCT09MIHNoaWZ0UHJlc3NlZCA9IGV2ZW50Lm1vZGlmaWVyRmxh
Z3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnRLZXk7CiAgICAgQk9PTCBhbHRQcmVzc2VkID0gZXZl
bnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXk7CkBAIC0yMjUsNyAr
MjI1LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3Jv
bGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gTm8gc2hvcnRjdXRzIGluY2x1
ZGUgbW9yZSB0aGFuIG9uZSBtb2RpZmllcjsgd2Ugc2hvdWxkIG5vdCBlYXQga2V5IGV2ZW50cwog
ICAgIC8vIHRoYXQgY29udGFpbiBtb3JlIHRoYW4gb25lIG1vZGlmaWVyIGJlY2F1c2UgdGhleSBt
aWdodCBiZSB1c2VkIGZvciBvdGhlciBzaG9ydGN1dHMuCiAgICAgaWYgKHNoaWZ0UHJlc3NlZCAr
IGFsdFByZXNzZWQgKyBjbWRQcmVzc2VkID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYWxsb3dlZE1vZGlm
aWVycyA9IF4gV2ViRXZlbnRGbGFncyB7CiAgICAgICAgIHN3aXRjaCAoa2V5KSB7CkBAIC0yNDgs
NyArMjQ4LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRT
Y3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAKICAgICBhdXRvIHJlbGV2YW50TW9k
aWZpZXJGbGFncyA9IFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXkgfCBXZWJFdmVudEZsYWdNYXNr
Q29tbWFuZEtleSB8IFdlYkV2ZW50RmxhZ01hc2tTaGlmdEtleTsKICAgICBpZiAoZXZlbnQubW9k
aWZpZXJGbGFncyAmIHJlbGV2YW50TW9kaWZpZXJGbGFncyAmIH5hbGxvd2VkTW9kaWZpZXJzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSBeewogICAgICAgICBzd2l0Y2ggKGtleSkgewpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIC0gKHZvaWQpc3RvcEFuaW1hdGVkU2Nyb2xsCiAgICAgLy8gb3V0IHRv
IHRoYXQgcG9pbnQuCiAgICAgX2lkZWFsUG9zaXRpb24gPSBbX3Njcm9sbGFibGUgYm91bmRlZENv
bnRlbnRPZmZzZXQ6ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKF9jdXJyZW50UG9zaXRpb24gKyBk
aXNwbGFjZW1lbnQsIF9pZGVhbFBvc2l0aW9uRm9yTWluaW11bVRyYXZlbCwgX2N1cnJlbnRTY3Jv
bGwtPmRpcmVjdGlvbildOwogCi0gICAgX2N1cnJlbnRTY3JvbGwgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgX2N1cnJlbnRTY3JvbGwgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJPT0wpc2Nyb2xsVHJp
Z2dlcmluZ0tleUlzUHJlc3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDY5MGUzY2VlOTBjYTE1NWY1NjQ3
ODFlYjZhMDA5OWVhMjhkOTZmNWIuLmZmNDg0MTE2Zjc2NGI1NGIxMzk5Yzg0NDZhYjFiOTc4NGU5
YWEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogQGludGVyZmFjZSBXS01v
dXNlR2VzdHVyZVJlY29nbml6ZXIgOiBVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIKIAotLSAoV1RG
OjpPcHRpb25hbDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbjsKKy0gKHN0ZDo6b3B0aW9uYWw8
Q0dQb2ludD4pbGFzdE1vdXNlTG9jYXRpb247CiAtIChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZl
bnQgKilsYXN0TW91c2VFdmVudDsKIAogLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2g7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXpl
ci5tbQppbmRleCBiOWY3ZWQ3ZmY5MjdlZjUwNjNkN2Q5MmIxNzhhOGY1NmJlZDMyZTVlLi4yODFj
MmZjOGEwZDA5ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRkNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0KQEAg
LTgyLDggKzgyLDggQEAgLSAodm9pZClzZXRFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICAgICAg
X2N1cnJlbnRUb3VjaCA9IG5pbDsKICAgICAgICAgX3RvdWNoaW5nID0gTk87CiAgICAgICAgIF9s
YXN0RXZlbnQgPSBuaWw7Ci0gICAgICAgIF9sYXN0TG9jYXRpb24gPSBXVEY6Om51bGxvcHQ7Ci0g
ICAgICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX2xhc3RM
b2NhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgX3ByZXNzZWRCdXR0b25NYXNrID0gc3Rk
OjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCAtIChXZWJLaXQ6Ok5hdGl2
ZVdlYk1vdXNlRXZlbnQgKilsYXN0TW91c2VFdmVudAogICAgIHJldHVybiBfbGFzdEV2ZW50Lmdl
dCgpOwogfQogCi0tIChXVEY6Ok9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9uCist
IChzdGQ6Om9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9uCiB7CiAgICAgcmV0dXJu
IF9sYXN0TG9jYXRpb247CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgLSAodm9pZCl0b3VjaGVzRW5k
ZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50
CiAgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYudmlld107CiAK
ICAgICBfdG91Y2hpbmcgPSBOTzsKLSAgICBfcHJlc3NlZEJ1dHRvbk1hc2sgPSBXVEY6Om51bGxv
cHQ7CisgICAgX3ByZXNzZWRCdXR0b25NYXNrID0gc3RkOjpudWxsb3B0OwogCiAgICAgc2VsZi5z
dGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7CiB9CkBAIC0xNzQsNyArMTc0
LDcgQEAgLSAodm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91Y2hl
cyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAogICAgIF9sYXN0TG9jYXRpb24gPSBbc2VsZiBs
b2NhdGlvbkluVmlldzpzZWxmLnZpZXddOwogCiAgICAgX3RvdWNoaW5nID0gTk87Ci0gICAgX3By
ZXNzZWRCdXR0b25NYXNrID0gV1RGOjpudWxsb3B0OworICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGVDaGFuZ2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5k
ZXggMDIyY2RjN2ZmNDM4ODZlZTVlM2M4ZWI2YmNmNDRjOTI3YzQ4MDc1Ni4uZDAxMDJiYzhlNjQ4
MWYyNDQ1NjUyYWI2Mjg4NTcxNDQwMTE5N2E4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAodm9pZClfcmVzZXRGaW5kCiAg
ICAgX2ZpbmRTdHJpbmcgPSBuaWw7CiAgICAgX2ZpbmRTdHJpbmdDb3VudCA9IDA7CiAgICAgX2Zp
bmRTdHJpbmdNYXhDb3VudCA9IDA7Ci0gICAgX2ZvY3VzZWRTZWFyY2hSZXN1bHRJbmRleCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBfZm9jdXNlZFNlYXJjaFJlc3VsdEluZGV4ID0gc3RkOjpudWxsb3B0
OwogICAgIF9mb2N1c2VkU2VhcmNoUmVzdWx0UGVuZGluZ09mZnNldCA9IDA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDMyYjBm
MjhhNTZmNmU3NWVlYmY1OGU3NTU5NTYzNmNkYzYxODE5YWMuLjgxMGJlMTdjMWM5NmQ2OWMyZTQ5
ZTllMzdhOGFmOWU5NmZlNjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp1cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0VsZW1lbnQoKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5nLCBib29sIGJs
dXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBh
Y3Rpdml0eVN0YXRlQ2hhbmdlcywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIG1f
cGVuZGluZ0lucHV0TW9kZUNoYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BlbmRpbmdJbnB1
dE1vZGVDaGFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBBUEk6Ok9iamVjdCogdXNlckRhdGFP
YmplY3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudCgpLmVsZW1lbnREaWRGb2N1cyhpbmZvcm1hdGlv
biwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5U3RhdGVDaGFu
Z2VzLCB1c2VyRGF0YU9iamVjdCk7CkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZv
cm1hdGlvbiwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRCbHVyKCkKIHsKLSAgICBt
X3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nSW5w
dXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0OwogICAgIHBhZ2VDbGllbnQoKS5lbGVtZW50RGlk
Qmx1cigpOwogfQogCkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
bGVhc2VBbGxUb3VjaFBvaW50cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHBhZ2VDbGllbnQo
KS5mb2N1c2VkRWxlbWVudERpZENoYW5nZUlucHV0TW9kZSgqbV9wZW5kaW5nSW5wdXRNb2RlQ2hh
bmdlKTsKLSAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9wZW5kaW5nSW5wdXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYgdXNlcm5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRT
aXplPiYgaW1hZ2VTaQogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3BwZWRJbWFnZVBsYWNl
aG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVs
c2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZp
ZXcubW0KaW5kZXggZTY2ZGY4NGEyMmI4MzgxM2JlZWU0NTEwZDViOWVlZTc4ODAyMjVmNi4uNDdm
MDQ1OTMzZmQxNjc1YmNhNWIyOTBmYmM5YTAyM2ZjODM4ZTI2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRy
b2xWaWV3Lm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZSBkZWxlZ2F0ZTooaWQgPFdLRm9jdXNlZEZvcm1Db250cm9sVmkKICAg
ICBbc2VsZiBhZGRTdWJ2aWV3Ol9zdWJtaXRCdXR0b25CYWNrZ3JvdW5kVmlldy5nZXQoKV07CiAK
ICAgICBfaGFzUGVuZGluZ0ZvY3VzUmVxdWVzdCA9IE5POwotICAgIF9pbml0aWFsU2Nyb2xsVmll
d0NvbnRlbnRPZmZzZXQgPSBXVEY6Om51bGxvcHQ7CisgICAgX2luaXRpYWxTY3JvbGxWaWV3Q29u
dGVudE9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMzA0YmYwNDky
YWRjMTdmM2YwNDY4ZDJkNmZiYzdmZDhjNmU3NjFhNy4uMjU4NTY2YWZlZmI2Y2EwOWQwZjc2YjA1
ZDk2OTlkMTc5MjlkNzNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCkBAIC04MTgsNyArODE4LDcgQEAgLSAodm9pZClfY29tcGxldGVkRXhpdEZ1
bGxTY3JlZW4KIAogICAgIF92aWV3U3RhdGUuYXBwbHlUbyh3ZWJWaWV3LmdldCgpKTsKICAgICBp
ZiAoYXV0byBwYWdlID0gW3dlYlZpZXcgX3BhZ2VdKQotICAgICAgICBwYWdlLT5zZXRPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhZ2UtPnNldE92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMoc3RkOjpudWxsb3B0KTsKIAogICAgIFt3ZWJWaWV3IHNldE5l
ZWRzTGF5b3V0XTsKICAgICBbd2ViVmlldyBsYXlvdXRJZk5lZWRlZF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCA1YjAwZWM1ODJkMTQyZWJlMzMy
MTkxYTFmYmY2MWFiODhlODlhZWEwLi4wZTdkNDk0MTBjZDY3MTlkNDJmMDExNzgyY2FkYWU4ZTBl
NGYxNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxp
bmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGluay5jcHAK
QEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNlcnZlcnNEaXNw
bGF5V2FzUmVmcmVzaGVkKCkKICAgICBhdXRvIG1heEZyYW1lc1BlclNlY29uZCA9IFtdKGNvbnN0
IFZlY3RvcjxPYnNlcnZlckluZm8+JiBvYnNlcnZlcnMpIHsKICAgICAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVzUGVyU2Vjb25kPiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQ7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCi0gICAgICAgICAgICBv
YnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heChvYnNlcnZlcnNNYXhGcmFtZXNQ
ZXJTZWNvbmQudmFsdWVPcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsK
KyAgICAgICAgICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4KG9ic2Vy
dmVyc01heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKTsKICAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29u
ZDsKICAgICB9OwogCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBEaXNwbGF5TGluazo6bm90aWZ5
T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpCiAgICAgICAgIGFueUNvbm5lY3Rpb25IYWRP
YnNlcnZlcnMgPSB0cnVlOwogCiAgICAgICAgIGF1dG8gb2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vj
b25kID0gbWF4RnJhbWVzUGVyU2Vjb25kKGNvbm5lY3Rpb25JbmZvLm9ic2VydmVycyk7Ci0gICAg
ICAgIGF1dG8gbWFpblRocmVhZFdhbnRzVXBkYXRlID0gbV9jdXJyZW50VXBkYXRlLnJlbGV2YW50
Rm9yVXBkYXRlRnJlcXVlbmN5KG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZC52YWx1ZU9yKFdl
YkNvcmU6OkZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkpOworICAgICAgICBhdXRvIG1haW5UaHJl
YWRXYW50c1VwZGF0ZSA9IG1fY3VycmVudFVwZGF0ZS5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5j
eShvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQudmFsdWVfb3IoV2ViQ29yZTo6RnVsbFNwZWVk
RnJhbWVzUGVyU2Vjb25kKSk7CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaW5r
LCBzdHJlYW0gPDwgIltVSSBdIERpc3BsYXlMaW5rICIgPDwgdGhpcyA8PCAiIGZvciBkaXNwbGF5
ICIgPDwgbV9kaXNwbGF5SUQgPDwgIiAoZGlzcGxheSBmcHMgIiA8PCBtX2Rpc3BsYXlOb21pbmFs
RnJhbWVzUGVyU2Vjb25kIDw8ICIpIHVwZGF0ZSAiIDw8IG1fY3VycmVudFVwZGF0ZSA8PCAiICIg
PDwgY29ubmVjdGlvbkluZm8ub2JzZXJ2ZXJzLnNpemUoKQogICAgICAgICAgICAgPDwgIiBvYnNl
cnZlcnMsIG9uIGJhY2tncm91bmQgcXVldWUgIiA8PCBzaG91bGRTZW5kSVBDT25CYWNrZ3JvdW5k
UXVldWUgPDwgIiBtYXhGcmFtZXNQZXJTZWNvbmQgIiA8PCBvYnNlcnZlcnNNYXhGcmFtZXNQZXJT
ZWNvbmQgPDwgIiBmdWxsIHNwZWVkIGNsaWVudHMgIiA8PCBjb25uZWN0aW9uSW5mby5mdWxsU3Bl
ZWRVcGRhdGVzQ2xpZW50Q291bnQgPDwgIiByZWxldmFudCAiIDw8IG1haW5UaHJlYWRXYW50c1Vw
ZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vz
c2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lT
ZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IGEzOTQwNjQ5ZmRiZjJkZWQ0ODRhNGUyNjEwMmI5
MjFjYzI4MDc4ZjcuLmVhZGFkNGU4ZmEzMzY2NTg0N2UxNzJmZjVlOTJjMGU0NmI5YTE1NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVD
b2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9u
U3RhdGVDb2RpbmcuY3BwCkBAIC0yODksOCArMjg5LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9y
bURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQ
Qm8KICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKIAogICAgICAgICBlbmNvZGVyIDw8IGVsZW1l
bnQuZmlsZVN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1
ZU9yKC0xKTsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUudmFsdWVPcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoLTEp
OworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKTsK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9i
OgpAQCAtNzE4LDcgKzcxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPj4gdW5kZXJseWlu
Z0VudW1WYWx1ZTsKIAogICAgICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNWYWxpZEVudW0oc3Rh
dGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSkpKQotICAgICAgICAgICAgdmFsdWUgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICB2YWx1ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPih1bmRlcmx5aW5nRW51bVZh
bHVlKTsKIApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIGRlY29kZVYxU2Vzc2lvbkhpc3RvcnkoQ0ZEaWN0aW9uYXJ5UmVmIHNlc3Npb25IaXMKICAg
ICBhdXRvIGN1cnJlbnRJbmRleE51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBzZXNzaW9uSGlz
dG9yeUN1cnJlbnRJbmRleEtleSkpOwogICAgIGlmICghY3VycmVudEluZGV4TnVtYmVyKSB7CiAg
ICAgICAgIC8vIE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkgcmVwcmVzZW50
cyBhbiBlbXB0eSBzZXNzaW9uLgotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50
SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJl
bnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRl
bXMgPSB7IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGEzMzc3M2FiOWMwYTQxYTJm
OWVjMzk4NmZkYzQxMGIxYjRiYmY4NzMuLjIxN2U5ZGNmODA5NDJmNzJmOWM2Mjk2NGI1MTJmNmQz
OWJjNGU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpvcGVuUERGRnJv
bVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihGcmFtZUluZm9EYXRhCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4
dE1lbnUmIGNvbnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudS5pdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAKICAgICBSZXRhaW5QdHI8V0tQREZNZW51
VGFyZ2V0PiBtZW51VGFyZ2V0ID0gYWRvcHROUyhbW1dLUERGTWVudVRhcmdldCBhbGxvY10gaW5p
dF0pOwogICAgIFJldGFpblB0cjxOU01lbnU+IG5zTWVudSA9IGFkb3B0TlMoW1tOU01lbnUgYWxs
b2NdIGluaXRdKTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BE
RkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51LAog
I2VuZGlmCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0YWcpOwogICAgIH0KLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNTFlNzNhNmYyZjk3MmM3NjYzZTI4NjAwMmQ0OWE0N2QzOGMxZGYxNS4uNjRjYmFm
YzkzMTliY2ZhNDgxNWRjOTVmMWU1NDc4NDM2ZmE0YTI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGMK
IAogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1ha2VDcmVkZW50aWFsKFZl
Y3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMm
JiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENvbXBsZXRpb25I
YW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwg
V1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6
VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOworICAgIGhhbmRs
ZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxscHRyLCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxs
b3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RG
TW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRBc3NlcnRpb24oVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFJl
cXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlUmVxdWVzdCh7
IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIHsgfSwg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92ZShvcHRpb25z
KSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51
bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIFN0cmluZygp
LCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1dGhuQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlvblJlcXVlc3RE
YXRhJiYgZGF0YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKaW5kZXggMjIwM2Q2OGI3ODFjMTNlMzFkOWFjNjgwYjNhZDhkNjgwZjA1Njcy
NS4uYTRiM2ZjNTRiZTBjZjE1ZmU1YzI5ZjRiMTA0NGJkZTYxMTZlYTI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJQYXltZW50
Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYgcGEKIAog
ICAgIGF1dG8gcmVzdWx0ID0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MtPmZpbmQocGF5bWVu
dE5ldHdvcmspOwogICAgIGlmIChyZXN1bHQgPT0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3Mt
PmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiAqcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkuY3BwCmluZGV4IGIyZWZjOGZmOGQzYjIzZjE5MTY0MWM2MWE4ZjIxM2YxMGIxM2Iy
N2YuLjEzZmM1NjU0YmEzOTZjOTEyZDU5M2M1Njk3ZDkyMDc1MWQ0ODIzZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmkKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgZnJhbWVJRC50
b1VJbnQ2NCgpKSwKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY2FsbGJhY2tJ
RCksCiAgICAgICAgIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNvbnRleHQsIG51
bGxwdHIsIGV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrKSwKLSAgICAgICAgSlNWYWx1ZU1ha2VO
dW1iZXIoY29udGV4dCwgY2FsbGJhY2tUaW1lb3V0LnZhbHVlT3IoLTEpKQorICAgICAgICBKU1Zh
bHVlTWFrZU51bWJlcihjb250ZXh0LCBjYWxsYmFja1RpbWVvdXQudmFsdWVfb3IoLTEpKQogICAg
IH07CiAKICAgICB7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGkK
ICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdl
SUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZv
dW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3
aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDI1LDI5ICs0MjUsMjkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGkKIAog
ICAgIGF1dG8qIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZy
YW1lKCpmcmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3Jl
OjpGcmFtZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZUZy
YW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUs
IFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRF
cnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBX
ZWJDb3JlOjpGcmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5zY29wZWRD
aGlsZChvcmRpbmFsKTsKICAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9
IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlQ2hpbGRGcmFtZSk7CiAgICAgaWYgKCFjaGls
ZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlE
KCkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZy
YW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhh
bmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ1NSw3
ICs0NTUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZy
YW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CiAgICAgICAgIFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBl
LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NjMsNDEgKzQ2
Myw0MSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogCiAgICAgYXV0byogZnJhbWUgPSBmcmFt
ZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2Ut
Pm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZE5vZGVIYW5kbGUobm9kZUhh
bmRsZSkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW52YWxp
ZE5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52YWxpZE5vZGVJ
ZGVudGlmaWVycnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBl
bGVtZW50Rm9yTm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOwogICAgIGlmICghY29yZUVs
ZW1lbnQpIHsKICAgICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5kRXJyb3JUeXBl
LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpczxX
ZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZT4oY29yZUVsZW1lbnQpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29y
ZUZyYW1lRnJvbUVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFz
ZT4oKmNvcmVFbGVtZW50KS5jb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZUZyb21F
bGVtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJGcmFtZSogZnJhbWVGcm9tRWxlbWVudCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpj
b3JlRnJhbWVGcm9tRWxlbWVudCk7CiAgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5mcmFtZUlEKCkp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZQogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmlu
ZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTMsMjkgKzUxMywyOSBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZQogCiAgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5XZWJGcmFtZSgp
OwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZS0+Y29yZUZyYW1l
KCk7CiAgICAgaWYgKCFjb3JlRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFtZSA9IGNvcmVG
cmFtZS0+dHJlZSgpLnNjb3BlZENoaWxkKG5hbWUpOwogICAgIGlmICghY29yZUNoaWxkRnJhbWUp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9y
VHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkZy
YW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1l
KTsKICAgICBpZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRG
cmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGNo
aWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJCiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRv
d05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBl
cnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1MSwxNyArNTUxLDE3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJCiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgV2ViRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUtPnBhcmVudEZyYW1lKCk7CiAgICAg
aWYgKCFwYXJlbnRGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZv
dW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBwYXJlbnRGcmFtZS0+
ZnJhbWVJRCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHBhcmVudEZy
YW1lLT5mcmFtZUlEKCkpOwogfQogCiBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCogY29udGFpbmVy
RWxlbWVudEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKQEAgLTYxOCwyNyAr
NjE4LDI3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRM
YXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgV2ViUGFnZSogcGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsK
ICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBXVEY6
Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91
bmRFcnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCktPnZp
ZXcoKSkgewogICAgICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91bmQp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCB7IH0s
IFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkTm9kZUhhbmRsZShub2RlSGFuZGxlKSkgewog
ICAgICAgICBTdHJpbmcgaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlkTm9kZUlkZW50
aWZpZXIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9kZUlkZW50aWZpZXJy
cm9yVHlwZSwgeyB9LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBm
YWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBj
b3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CiAg
ICAgaWYgKCFjb3JlRWxlbWVudCkgewogICAgICAgICBTdHJpbmcgbm9kZU5vdEZvdW5kRXJyb3JU
eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25z
dGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6
Tm9kZU5vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5kRXJy
b3JUeXBlLCB7IH0sIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihub2RlTm90Rm91bmRFcnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZwogCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgZW50aXJlbHkgb3V0c2lkZSB0
aGUgdmlld3BvcnQsIHN0aWxsIGNhbGN1bGF0ZSBpdCdzIGJvdW5kcy4KICAgICBpZiAodmlzaWJs
ZVBvcnRpb25PZkVsZW1lbnRSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRl
clBvaW50LCBpc09ic2N1cmVkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNj
dXJlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZwogICAgIH0KICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBv
aW50LCBpc09ic2N1cmVkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHJl
c3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsK
IH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTc3Niw3ICs3
NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1l
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZQogICAgICAgICAvLyBvcHRpb25TZWxlY3Rl
ZEJ5VXNlcigpIHdpbGwgZmlyZSBpbnB1dCBhbmQgY2hhbmdlIGV2ZW50cyBpZiBuZWVkZWQsIGJ1
dCBhbGwgb3RoZXIgZXZlbnRzIHNob3VsZCBiZSBmaXJlZCBtYW51YWxseSBoZXJlLgogICAgICAg
ICBzZWxlY3RFbGVtZW50LT5vcHRpb25TZWxlY3RlZEJ5VXNlcihvcHRpb25FbGVtZW50LmluZGV4
KCksIHRydWUsIHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkpOwogICAgIH0KLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0RmlsZXNGb3JJ
bnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBWZWN0
b3I8U3RyaW5nPiYmIGZpbGVuYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBsb2FkKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaQogICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2ViQ29yZTo6Rmls
ZTo6Y3JlYXRlKCZpbnB1dEVsZW1lbnQuZG9jdW1lbnQoKSwgcGF0aCkpOwogICAgIGlucHV0RWxl
bWVudC5zZXRGaWxlcyhXZWJDb3JlOjpGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUoZmlsZU9iamVj
dHMpKSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0
IHNuYXBzaG90RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6
OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2xpcFRvVmlld3BvcnQpCkBAIC05MDksNyArOTA5LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RGb3JTY3JlZW5z
aG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVjdChmcmFtZS0+
Y29yZUZyYW1lKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVudFJlY3Qoc25h
cHNob3RSZWN0KSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgV2ViQ29y
ZTo6SW50UmVjdChmcmFtZS0+Y29yZUZyYW1lKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1l
bnRUb0NsaWVudFJlY3Qoc25hcHNob3RSZWN0KSkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzQsNyArOTM0LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUkKICAgICBpZiAoIWRvY3VtZW50LmNvb2tpZVVSTCgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZ2V0UmF3Q29va2llcyhkb2N1bWVu
dCwgZG9jdW1lbnQuY29va2llVVJMKCksIGZvdW5kQ29va2llcyk7CiAKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RkOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5nIGNvb2tp
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpkZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHQK
ICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAg
ICAgcGFnZS0+Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZGVsZXRlQ29va2llKGRvY3VtZW50LCBk
b2N1bWVudC5jb29raWVVUkwoKSwgY29va2llTmFtZSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRl
eCAwMzRhZmE0MGFmZjY5YWM4MzI0Mzg0YTdkNmQzNmIxMDU3M2Y2MWIxLi4xMjNkNTM5YzgyYTQ2
NTIzZTZlYTg4YzA5NGNjZDljMWI3ZmI5Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aApAQCAtMTY0LDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIobWltZVR5cGUs
IHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCBv
dmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTk4LDE3ICsxOTgsMTcgQEAgcHJv
dGVjdGVkOgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0LnNpemUoKSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplID0gcGl4
ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCk7CiAKICAgICAgICAgSVBDOjpUaW1lb3V0IHRp
bWVvdXQgPSA1X3M7CiAgICAgICAgIFNoYXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5ID0gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKGRh
dGFTaXplLCB0aW1lb3V0KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBhdXRvJiBtdXRhYmxlVGhpcyA9IGNvbnN0X2Nhc3Q8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eSY+KCp0aGlzKTsKICAgICAgICAgbXV0YWJsZVRoaXMubV9kcmF3aW5nQ29udGV4dC5y
ZWNvcmRlcigpLmdldFBpeGVsQnVmZmVyKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3OTRjOGJiZjJiODI1
ODRlZjZjOWQ2ZGNkNWIyM2I4MDljMTFlM2Y4Li43MTk4YWRlMDE2ODZjZTIyYTIyNzZlMjJiZGQy
ODkzMWQxMjUxMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC05MCwxMyArOTAsMTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omdw
dVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKIAogICAgIG1faWRl
bnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5jbGVhcigpOwogICAgIG1fc2hhcmVkRGlzcGxheUxp
c3RIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklk
ZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1
bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZl
cklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VB
cmd1bWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVm
b3JlU2VuZGluZ1dha2V1cCA9IDA7CiAKICAgICBpZiAobV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJT
aGFyZWRNZW1vcnlUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Rlc3Ryb3lHZXRQaXhlbEJ1
ZmZlclNoYXJlZE1lbW9yeVRpbWVyLnN0b3AoKTsKLSAgICBtX2dldFBpeGVsQnVmZmVyU2VtYXBo
b3JlID0gV1RGOjpudWxsb3B0OworICAgIG1fZ2V0UGl4ZWxCdWZmZXJTZW1hcGhvcmUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeUxlbmd0aCA9IDA7CiAg
ICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxwdHI7CiB9CkBAIC0yNDksNyAr
MjQ5LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0ZUFsbEZvbnRz
KCkKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBpZiAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID09IG1fY3VycmVudERl
c3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnJlbnREZXN0aW5h
dGlvbkltYWdlQnVmZmVySWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXJy
ZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVz
b3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVz
c2FnCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVmZXJyZWRXYWtl
dXBNZXNzYWdlSWZOZWVkZWQoKQogewotICAgIGF1dG8gYXJndW1lbnRzID0gc3RkOjpleGNoYW5n
ZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KTsKKyAgICBh
dXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1
bWVudHMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFhcmd1bWVudHMpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzI2LDExICszMjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW4KICAgICAg
ICAgaWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzKSB7CiAgICAgICAgICAgICBp
ZiAoc2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzLT5vZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLT5kZXN0aW5h
dGlvbkltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7CiAgICAgICAgICAgICAg
ICAgbV9wYXJhbWV0ZXJzLnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLnNpZ25hbCgpOwotICAg
ICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJl
Zm9yZVNlbmRpbmdXYWtldXAgPSAwOwogICAgICAgICAgICAgfSBlbHNlIGlmICghLS1tX3JlbWFp
bmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwKSB7CiAgICAgICAgICAgICAgICAg
bV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMtPnJlYXNvbiA9IEdQVVByb2Nlc3NXYWtl
dXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZDsKLSAgICAgICAgICAgICAgICBz
ZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFy
Z3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICAgICAgc2VuZFdha2V1cE1lc3Nh
Z2UoKnN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIHN0ZDo6
bnVsbG9wdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
T3ZlcnJpZGVzRm9yVGVzdGluZy5oCmluZGV4IGUzMWY5ZGE3Yzk3Mzk2M2MzNGIyZWEzZTI5ZTFh
Y2Q2YzZkZmUxOTAuLjFkYzU5MGE1NTc4ZTQ3Y2JlYjgzMTUzYWJkNzM0Y2RhYWI5ZDcwN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlk
ZXNGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaApAQCAtNTMsMjIgKzUzLDIyIEBAIHN0cnVjdCBNZWRp
YU92ZXJyaWRlc0ZvclRlc3RpbmcgewogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4g
c3lzdGVtSGFzQUM7CiAgICAgICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQUM7CiAgICAgICAgIGlm
ICghc3lzdGVtSGFzQUMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxi
b29sPj4gc3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0ZW1IYXNCYXR0
ZXJ5OwogICAgICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CiAgICAgICAgIGlm
ICghdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxPcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5EYXRhT3ZlcnJpZGVzPj4gdnA5U2NyZWVuU2l6
ZUFuZFNjYWxlOwogICAgICAgICBkZWNvZGVyID4+IHZwOVNjcmVlblNpemVBbmRTY2FsZTsKICAg
ICAgICAgaWYgKCF2cDlTY3JlZW5TaXplQW5kU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBy
ZXR1cm4ge3sKICAgICAgICAgICAgICpzeXN0ZW1IYXNBQywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcAppbmRleCBiOTVlNTkxYjE4MmRlMzQ2M2VlN2UxOGYwNTVhMTNmYWM5NDBlOWI0Li5h
ZmNkNGI1YjMxY2QwNWY1MDRmNWZiOTY1MDQyOGQ3NTI3MjNjNzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgT3B0aW9uYWw8Ym9vbD4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JgogCiAgICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsKICAgICBpZiAoIWNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6V291bGRUYWludE9y
aWdpbihvcmlnaW4uZGF0YSgpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Oldv
dWxkVGFpbnRPcmlnaW46OlJlcGx5KHdvdWxkVGFpbnQpLCBtX2lkKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIG1fd291
bGRUYWludE9yaWdpbkNhY2hlLmFkZChvcmlnaW4uZGF0YSgpLCB3b3VsZFRhaW50KTsKIApAQCAt
MTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETShM
ZWdhY3lDRE0qIGNkbSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNz
aW9uKExlZ2FjeUNETVNlc3Npb24qIHNlc3Npb24pCiB7CiAgICAgaWYgKCFzZXNzaW9uIHx8IHNl
c3Npb24tPnR5cGUoKSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgewotICAgICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVnYWN5Q0RN
U2Vzc2lvbihXVEY6Om51bGxvcHQpLCBtX2lkKTsKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24oc3Rk
OjpudWxsb3B0KSwgbV9pZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKaW5kZXggNmZjOGJhOGI2OWQ5MDg5Njc1Y2I1NmU3
ZWU0NmEyMDg4MWVhYjkyYy4uYWI1NmQ2M2FjMzgxZTRiYTlhZGJlZDg1MGMyZDg5NjEzMWQ1OTM4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKQEAgLTYwLDQyICs2
MCw0MiBAQCBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiB7CiAgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGRlY29kZXIgPj4g
cm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGlmICghcm91dGluZ0NvbnRleHRVSUQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKICAgICAgICAgZGVj
b2RlciA+PiBzYW1wbGVSYXRlOwogICAgICAgICBpZiAoIXNhbXBsZVJhdGUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IGJ1ZmZlclNpemU7CiAgICAgICAgIGRlY29kZXIg
Pj4gYnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8c2l6ZV90PiBudW1iZXJPZk91dHB1dENoYW5uZWxzOwogICAgICAgICBk
ZWNvZGVyID4+IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbWF4
aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4gbWF4aW11bU51
bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbWF4aW11bU51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IHByZWZlcnJl
ZEJ1ZmZlclNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVyU2l6ZTsKICAg
ICAgICAgaWYgKCFwcmVmZXJyZWRCdWZmZXJTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gaXNNdXRlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc011dGVkOwogICAgICAg
ICBpZiAoIWlzTXV0ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0Fj
dGl2ZTsKICAgICAgICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAgaWYgKCFpc0FjdGl2
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgq
cm91dGluZ0NvbnRleHRVSUQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IDczNzVmYjQxNmU5NDRmMjNlMTQ4MzdjNmNiNTE3NTZh
YTYxNTU0N2QuLjQyMjQ0NmI5YTgxMjVjNGFmNmY5ZDMwM2QxNTBiNTJkZjk3MDUxMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1vdGVDRE1GYWN0
b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJgogdm9pZCBSZW1vdGVDRE06Omdl
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZp
Z3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENvbmZpZ3VyYXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKaW5kZXggZTY0
NTA4NGJjZDYwYzQ1Y2U3NmYzYTAzY2ZkM2Y3ODNmMTY5MzQ5MS4uZGNiNDFiYWExOWJmMTY1ZTFk
M2I2NDIwMTZiOTlhNGEwOTcyNTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKQEAgLTUyLDIy
ICs1MiwyMiBAQCBzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlv
bmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsKICAgICAgICAg
ZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAoIXN1cHBvcnRl
ZEluaXREYXRhVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRv
bVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKICAgICAgICAgZGVjb2RlciA+PiBzdXBw
b3J0ZWRSb2J1c3RuZXNzZXM7CiAgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0bmVzc2VzKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXM7CiAg
ICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAgICBkZWNvZGVyID4+
IHN1cHBvcnRzU2Vzc2lvbnM7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9ucykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqc3VwcG9ydGVk
SW5pdERhdGFUeXBlcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaAppbmRl
eCBhODY1ODBiZjE4NjMxYmIzYmM4MjZiNTNhZjFmMmQ1NDg2ZTQ2MjU0Li5lODg5NjEyYWVkMDlj
MTM5ZDJlNjkwNmI4Y2Q1Mjk2NWEyZmM4ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VDb25m
aWd1cmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlbW90ZUNETUluc3RhbmNlQ29u
ZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVtOwogICAgICAg
ICBkZWNvZGVyID4+IGtleVN5c3RlbTsKICAgICAgICAgaWYgKCFrZXlTeXN0ZW0pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmtleVN5c3RlbSks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggMGE3YzY4YWU1MTBkZTQzZTgyNWM0
MjRjN2QyZjQ4ZTNjOGNjMTNhNi4uOTFhZDRmOTI5Y2E1ZGZmZDljMWIyZTYzNjRlMzg5Yjk3OTRl
OTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNjksNyArNjksNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUg
dHlwZSwgY29uc3QgQXRvbVN0cmluZwogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJl
ZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNlLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEsNyArODEsNyBAQCB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7
CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvCiB2
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFj
ayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9LCBzdGQ6
Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2ZhY3Rv
cnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92ZVNlc3Npb25E
YXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoS2V5
U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29w
eT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgIE9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
T3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAg
ICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFs
TWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuaAppbmRleCBhYjIyZWFhYjMzZmI1NWZhOTAzOWUyNzYwMzQyNDk2OGFiNmVhN2U0Li5kZTlk
YzMzZjA5ZDU2ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0aXRpb25Db3Vu
dCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3Qg
ZmluYWw7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAg
T3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaG90U3Bv
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIFN0cmluZyBhY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfQog
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgV2ViQ29yZTo6
U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5kZXggY2I5MWU1NmUzYTVlMTlm
NDAxMjUyZGU4NTJlOTgyODBkOTRhN2I4NS4uOGExOTdlMWRhNmRiOWNjZTY3Y2M3NWE3ZmUzYmMx
NWZjZGJlY2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IGJvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCiAgICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOwogCiAg
ICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9wdCksIE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBw
b3J0ZWQpLCB7IH0pOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5
U3lzdGVtKGtleVN5c3RlbSwgc3RkOjpudWxsb3B0KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7
CiAgICAgbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlLnNldChrZXlTeXN0ZW0sIHN1cHBvcnRlZCk7
CiAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbi5oCmluZGV4IGMwNmY4ODMyNDlkNTE4Yzc5OTEzYzVjMmU3NDg1YTM3YzFhZjg0MTIuLjBk
ZTk1ZWQ1ZWQyNmNmOGE2ZDA3MDQ2ZjY2NGNmMTU4ZWQxZDhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24uaApAQCAtNjIsNDIgKzYyLDQyIEBAIHN0cnVjdCBSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGVuZ2lu
ZURlc2NyaXB0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGVuZ2luZURlc2NyaXB0aW9uOwogICAg
ICAgICBpZiAoIWVuZ2luZURlc2NyaXB0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8ZG91YmxlPiBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAgICAgICBkZWNv
ZGVyID4+IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAgIGlmICghbWF4
aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IHN1cHBvcnRzU2Nhbm5pbmc7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNT
Y2FubmluZzsKICAgICAgICAgaWYgKCFzdXBwb3J0c1NjYW5uaW5nKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNGdWxsc2NyZWVuOwogICAgICAgICBkZWNvZGVy
ID4+IHN1cHBvcnRzRnVsbHNjcmVlbjsKICAgICAgICAgaWYgKCFzdXBwb3J0c0Z1bGxzY3JlZW4p
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1BpY3R1cmVJblBp
Y3R1cmU7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOwogICAg
ICAgICBpZiAoIXN1cHBvcnRzUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmc7CiAgICAgICAgIGRl
Y29kZXIgPj4gc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKICAgICAgICAgaWYgKCFzdXBw
b3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsKICAgICAgICAgZGVjb2RlciA+
PiBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OwogICAgICAgICBpZiAoIWNhblBsYXlU
b1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxi
b29sPiBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplOwogICAgICAgICBkZWNvZGVyID4+IHNob3Vs
ZElnbm9yZUludHJpbnNpY1NpemU7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3JlSW50cmluc2lj
U2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92
ZSgqZW5naW5lRGVzY3JpcHRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAppbmRleCAxZjc5Y2U1
MzgxN2IwNWE3NjVjMmE3Y2Y5M2NlYjQzNzU3NTIzMDczLi5hNjI3YTczNzBjMmJjMWYyNTM5MWMw
YmViMjEwOGViZGVhYjEyOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaApAQCAtMTA3LDE0MyAr
MTA3LDE0MyBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7CiAgICAgICAgIE9wdGlv
bmFsPE1lZGlhVGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAg
ICAgICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRp
YVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5UaW1lU2Vla2Fi
bGU7CiAgICAgICAgIGlmICghbWluVGltZVNlZWthYmxlKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGRlY29kZXIgPj4g
bWF4VGltZVNlZWthYmxlOwogICAgICAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnREYXRlOwogICAgICAgICBkZWNv
ZGVyID4+IHN0YXJ0RGF0ZTsKICAgICAgICAgaWYgKCFzdGFydERhdGUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKICAgICAgICAgZGVjb2RlciA+
PiBzdGFydFRpbWU7CiAgICAgICAgIGlmICghc3RhcnRUaW1lKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7CiAgICAgICAg
IGRlY29kZXIgPj4gbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrOwogICAgICAgICBpZiAoIWxh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PFN0cmluZz4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4g
d2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGlmICghd2lyZWxlc3NQbGF5YmFj
a1RhcmdldE5hbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQbGF0
Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzOwogICAgICAgICBkZWNvZGVyID4+IGJ1ZmZl
cmVkUmFuZ2VzOwogICAgICAgICBpZiAoIWJ1ZmZlcmVkUmFuZ2VzKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuZXR3b3JrU3RhdGUpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlYWR5U3RhdGUpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2FkVHlwZSBtb3Zp
ZUxvYWRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vdmllTG9hZFR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6V2lyZWxlc3NQ
bGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGU7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUod2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBuYXR1cmFsU2l6ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBuYXR1cmFsU2l6ZTsKICAgICAgICAgaWYgKCFuYXR1cmFsU2l6ZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZvcndhcmRSYXRl
OwogICAgICAgICBkZWNvZGVyID4+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAgICAgaWYgKCFt
YXhGYXN0Rm9yd2FyZFJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxkb3VibGU+
IG1pbkZhc3RSZXZlcnNlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5GYXN0UmV2ZXJzZVJh
dGU7CiAgICAgICAgIGlmICghbWluRmFzdFJldmVyc2VSYXRlKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lOwog
ICAgICAgICBkZWNvZGVyID4+IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAg
ICAgICAgIGlmICghc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbGl2ZVVwZGF0ZUludGVydmFsOwogICAgICAg
ICBkZWNvZGVyID4+IGxpdmVVcGRhdGVJbnRlcnZhbDsKICAgICAgICAgaWYgKCFsaXZlVXBkYXRl
SW50ZXJ2YWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gdG90YWxC
eXRlczsKICAgICAgICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVzOwogICAgICAgICBpZiAoIXRvdGFs
Qnl0ZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+PiB2aWRlb01ldHJpY3M7CiAgICAgICAgIGRlY29k
ZXIgPj4gdmlkZW9NZXRyaWNzOwogICAgICAgICBpZiAoIXZpZGVvTWV0cmljcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiB3b3VsZFRhaW50RG9jdW1lbnRT
ZWN1cml0eU9yaWdpbjsKICAgICAgICAgZGVjb2RlciA+PiB3b3VsZFRhaW50RG9jdW1lbnRTZWN1
cml0eU9yaWdpbjsKICAgICAgICAgaWYgKCF3b3VsZFRhaW50RG9jdW1lbnRTZWN1cml0eU9yaWdp
bikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsKICAgICAgICAg
ZGVjb2RlciA+PiBwYXVzZWQ7CiAgICAgICAgIGlmICghcGF1c2VkKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gY2FuU2F2ZU1lZGlhRGF0YTsKICAgICAgICAgZGVjb2RlciA+
PiBjYW5TYXZlTWVkaWFEYXRhOwogICAgICAgICBpZiAoIWNhblNhdmVNZWRpYURhdGEpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBdWRpbzsKICAgICAgICAgZGVjb2Rl
ciA+PiBoYXNBdWRpbzsKICAgICAgICAgaWYgKCFoYXNBdWRpbykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+IGhhc1ZpZGVv
OwogICAgICAgICBpZiAoIWhhc1ZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaGFzQ2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQ2xvc2VkQ2Fw
dGlvbnM7CiAgICAgICAgIGlmICghaGFzQ2xvc2VkQ2FwdGlvbnMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxib29sPiBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lOwogICAgICAgICBkZWNv
ZGVyID4+IGhhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAgICAgICAgIGlmICghaGFzQXZhaWxhYmxl
VmlkZW9GcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkOwogICAgICAgICBkZWNvZGVyID4+IHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkOwogICAgICAgICBpZiAoIXdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4gaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW47CiAg
ICAgICAgIGlmICghaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxib29sPiBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrOwogICAgICAgICBkZWNvZGVy
ID4+IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2s7CiAgICAgICAgIGlmICghZGlkUGFzc0NPUlNBY2Nl
c3NDaGVjaykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RG
TW92ZSgqZHVyYXRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
CmluZGV4IDEyMDc4ZTIzOTc3YjY0MTIxZGMzZjM3YmExZjEwMzQ1ZjBlMTgxYTguLjgyMzhlNjQz
MGVkN2Y5NDc4OTIxYzYwYjcxYzNiNWI0ODA4NjJiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHByaXZhdGU6CiAgICAg
T3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29u
dGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViS2l0OjpXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXks
IFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIGZpbmFsCiAgICAgewogICAgICAgICBpZiAo
IW1fY2xpZW50LmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBhcGlSYW5nZSA9IG51bGxwdHI7CiAgICAgICAg
IGF1dG8gYWN0aW9uQ29udGV4dCA9IChEREFjdGlvbkNvbnRleHQgKiltX2NsaWVudC5hY3Rpb25D
b250ZXh0Rm9yUmVzdWx0QXRQb2ludCh0b0FQSSgmcGFnZU92ZXJsYXkpLCBXS1BvaW50TWFrZShs
b2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSksICZhcGlSYW5nZSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgaWYgKCFhY3Rpb25Db250ZXh0IHx8ICFhcGlSYW5nZSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiB7IHsgYWN0aW9uQ29udGV4dCwgbWFrZVNpbXBsZVJhbmdl
KFdlYktpdDo6dG9JbXBsKGFwaVJhbmdlKS0+Y29yZVJhbmdlKCkpIH0gfTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAppbmRleCBmMzMxYmUwMzIzNDZk
OGI0NWFhYjdmMmJiZGQ3MDE4NmM1ODU1OTMyLi44OWI2M2ZmODYxOTA0YjAzNWFhZWJjNDFlMzMw
ZjJiNmM5OTdiYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIE5vdGU6IFRoZXNlIHNob3VsZCBv
bmx5IGJlIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KICAg
ICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZHMoKTsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlbmRlclJlY3QoYm9vbCopOwotICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVyZWRJbWFnZShT
bmFwc2hvdE9wdGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25zdCBPcHRpb25h
bDxmbG9hdD4mIGJpdG1hcFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8V2ViSW1h
Z2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zLCBib29sIHNob3VsZEV4Y2x1ZGVPdmVy
ZmxvdywgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHZpc2libGVSYW5nZSgpOwog
ICAgIHZvaWQgc2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZChib29sKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCBhNDc0ZmEy
OTIyYWE2YzcyZGExMTg0NGU0YWVjYjJkMTViNDc5MzFlLi5hYzk0Y2MwYjgyZTgxMjhmNzc3YTEw
OTY2MDI3M2NiMjc4NTI1MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUV4dGUK
ICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7
CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3Nh
Z2VzLgpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFCiB2b2lkIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNp
b24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwgY29uc3QgT3B0
aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25hbDxib29sPiYg
dXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0
ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzYsMjAgKzIzNiwyMCBAQCB2b2lkIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24o
Y29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRj
aGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0ZVNjcmlwdEZvckV4
dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6
Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogZnJvbnRlbmRH
bG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNw
YXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYgKCFmcm9udGVuZEds
b2JhbE9iamVjdCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51
bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFy
c2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsKICAgICAgICAg
ICAgIGF1dG8gZXhjZXB0aW9uRGV0YWlscyA9IHJlc3VsdC52YWx1ZSgpLmVycm9yKCk7CiAgICAg
ICAgICAgICBMT0coSW5zcGVjdG9yLCAiSW50ZXJuYWwgZXJyb3IgZW5jb3VudGVyZWQgd2hpbGUg
ZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogYXQgJXM6JWQ6JWQ6ICVzIiwgZXhjZXB0aW9u
RGV0YWlscy5zb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZXhjZXB0aW9uRGV0YWlscy5saW5lTnVt
YmVyLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5tZXNz
YWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBX
VEY6Om51bGxvcHQsIHBhcnNlZEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgc3RkOjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAg
ICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1YXRpb25SZXN1
bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkgewogICAgICAg
ICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1ZSByZXR1cm5l
ZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lvbigpLiIpOwot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6Oklu
dGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFT
U0VSVChyZXN1bHQudmFsdWUoKSk7CkBAIC0yNjUsMjIgKzI2NSwyMiBAQCB2b2lkIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdAogICAgICAgICBKU0M6OkpTVmFsdWUgZXJyb3JQYXlsb2FkID0gb2JqZWN0UmVz
dWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImVycm9yIl9zKSk7CiAgICAgICAgIGlmICgh
ZXJyb3JQYXlsb2FkLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIGlmICghZXJyb3JQYXls
b2FkLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0s
IFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5nKGZyb250ZW5k
R2xvYmFsT2JqZWN0KSB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5nKGZy
b250ZW5kR2xvYmFsT2JqZWN0KSB9LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBheWxvYWQgPSBvYmpl
Y3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9zKSk7CiAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVjdCwgcmVzdWx0
UGF5bG9hZCk7CiAgICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRl
bnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0
VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQog
CkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGUKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAppbmRleCA2NTc3NGUxNDU5ZThjNDIwMzQxODAxY2FhNjFmMDYwODZk
ODJkZTM4Li41MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZmMDQ0NDQxNGI3NmJhZDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJl
c291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXMKICAgICAg
ICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNvdXJj
ZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVu
RG93bmdyYWRlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoUkVM
RUFTRV9MT0dfSVNfQUxMT1dFRCwgTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQg
IiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZTog
VW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1lLT5wYWdlSUQo
KS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZyYW1lLT5mcmFtZUlEKCku
dmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRihSRUxFQVNFX0xPR19JU19BTExPV0VELCBOZXR3b3JrLCAiJXAgLSBbd2ViUGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBXZWJMb2FkZXJTdHJhdGVneTo6
bG9hZFJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFN1YnJlc291cmNlTG9hZGVyIiwgdGhpcywg
ZnJhbWUtPnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZy
YW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpOwog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGxvYWRlcikpOwogICAgIH0pOwogfQpA
QCAtMTgxLDEzICsxODEsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIFdlYlJl
c291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAg
IGlmIChhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQo
ZnJhbWVMb2FkZXJDbGllbnQpKQotICAgICAgICB0cmFja2luZ1BhcmFtZXRlcnMud2ViUGFnZVBy
b3h5SUQgPSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5SUQoKS52YWx1ZU9yKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEID0gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYlBhZ2VQcm94eUlEKCkudmFs
dWVfb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciB7IH0pOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBlbHNlIGlmIChpczxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KGZy
YW1lTG9hZGVyQ2xpZW50KSkKICAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxvYWRl
ckNsaWVudCkud2ViUGFnZVByb3h5SUQoKTsKICNlbmRpZgotICAgIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSk7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFtZUxvYWRlckNs
aWVudC5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVfb3Io
UGFnZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZy
YW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIgeyB9KTsK
ICAgICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU2NSwxMSArNTY1LDExIEBA
IE9wdGlvbmFsPFdlYkxvYWRlclN0cmF0ZWd5OjpTeW5jTG9hZFJlc3VsdD4gV2ViTG9hZGVyU3Ry
YXRlZ3k6OnRyeUxvYWRpbmdTeW5jaHJvCiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxv
YWRlckNsaWVudCA/ICZ3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7
CiAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxw
dHI7CiAgICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogaGFuZGxlciA9IHdlYlBhZ2Ut
PnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgpLnRvU3Ry
aW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFoYW5kbGVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHN5bmMgbG9hZCB0byBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nl
c3MgVVJMIHNjaGVtZSBoYW5kbGVyLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBiMmViNDdl
MzkxMWU1NDY2ZmM2ODM1NWM3YzFkYWVjNmIyMzczNjc1Li4wMDY3ODk5MDkzMmM0MzgyYmI2MWZm
MDA0OTg0YzRiMzk5MGZiNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
CkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVmZmVyKGJvb2wg
aXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAgICAgICAgICAg
ICAgICBTdHJpbmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5h
bWU6OkNvbnRlbnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb250ZW50TGVuZ3Ro
LmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3RkOjptaW4ocGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRlbnRMZW5ndGgpLnZh
bHVlT3IoMCksIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0g
c3RkOjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRl
bnRMZW5ndGgpLnZhbHVlX29yKDApLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBoZWFk
ZXJGaWVsZHMucmVtb3ZlKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsKIAogICAgICAg
ICAgICAgICAgIHBvc3RCdWZmZXIgKz0gbG9jYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlNDdhNDRjYzQ3ZTk5MWRl
ZTk4ZjliNGEzNmM1YTJjZGY2ZjBkMDY3Li5mYWIwMGRhZGM2NjQ2MzUzYzY4MmY5MTliMDVlMWVh
YWMyYjMxYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KQEAgLTIwMTMsMTMgKzIwMTMsMTMgQEAgSW50UG9pbnQgUERGUGx1Z2lu
Ojpjb252ZXJ0RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25z
dAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29v
cmRpbmF0ZXMocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJl
dHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0
dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAKIElu
dFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFJl
Y3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0SW5QbHVnaW5Db29yZGluYXRlcyhy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0
dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJu
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFJlY3QocmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBJbnRQb2lu
dCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdApAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJv
dW5kc09uU2NyZWVuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UmVj
dCBib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAgIEZsb2F0UmVj
dCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3Jt
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvdW5kcyk7Cisg
ICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RWaWV3VG9QbHVn
aW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0
KGJvdW5kcyk7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjA3OSw3ICsyMDc5LDcg
QEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXpl
ID0gcGx1Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5U
b1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAgW21fcGRmTGF5
ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0
aW9uIGJlZ2luXTsKQEAgLTI2MDYsNyArMjYwNiw3IEBAIHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0
aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJv
YXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5
cGVzKQogewogICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0gbWFrZVZlY3RvcjxTdHJpbmc+KHR5
cGVzKTsKLSAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IFdURjo6bnVsbG9wdDsK
KyAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5jb3JlRnJhbWUo
KSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAg
IGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCA0NTk5ZjU3YWJiYzA2MGY2YTg4N2NkMGM2YTFhNWVmZjM0MThi
MGI1Li5iNmZkNDQ0MDdjMjk3NzU0YmIyMWJkNDA2ZWVhMjBkZGU3YzZkMWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTE1Nyw3
ICsxMTU3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChV
UkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5hbGxvd1BvcHVwcygpID8g
T3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgOiBXVEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAg
IC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdldCBmcmFtZS4KICAgICBGcmFtZSogdGFyZ2V0
RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihyZXF1ZXN0LT50
YXJnZXQoKSk7CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBib29sIFBsdWdpblZpZXc6OmV2YWx1YXRl
KE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaQog
ICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmlldyBmcm9tIGRlc3RydWN0aW9uLgogICAgIE5Q
UnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3RvcigmbV9ucFJ1
bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGlj
YXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9uYWw8UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQp
OwogICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5ldmFsdWF0ZShucE9iamVjdCwgc2Ny
aXB0U3RyaW5nLCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAxM2YzYjk2
NjVlODM1ZTk2NGViZDBlMjY0YmY0NzAyMTUzYTExY2U4Li5hYjU3MGJmZTI5M2Y2NGFjNzI3MzAz
YzlhZWY2ZjA3ODQ0M2YzNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTE2Niw3ICsxNjYs
NyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJp
dHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwogCiAgICAgaWYgKCFtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4odG9w
T3JpZ2luKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyKCkKIHsKICAgICBhdXRv
IHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRjaFJlZ2lzdHJhdGlvblRh
c2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uVGFza3MudmFsdWVz
KCkpCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGdldFJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZSht
X29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MpOwogICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBnZXRSZWdpc3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKaW5kZXggMWNiYzgwNjFmNDQyZTQ4ZjFkNWE0NmM2MjJhNWU4ZDcwNzE3
MDM4NS4uODU0MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0NjJkMGQ1YTcxZWNiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZp
bmlzaChSZWY8Rm9ybURhdGE+JgogICAgICAgICBtX2Jsb2JMb2FkZXIuZW1wbGFjZSgqdGhpcyk7
CiAgICAgICAgIGF1dG8gbG9hZGVyID0gc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5jcmVhdGVC
bG9iTG9hZGVyKCptX2Jsb2JMb2FkZXIsIGJsb2JVUkwpOwogICAgICAgICBpZiAoIWxvYWRlcikg
ewotICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
bV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZGlkRmFpbChpbnRlcm5h
bEVycm9yKGJsb2JVUkwpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQy
LDcgKzE0Miw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmlu
aXNoQmxvYkxvYWRpbmcoKQogewogICAgIGRpZEZpbmlzaCgpOwogCi0gICAgc3RkOjpleGNoYW5n
ZShtX2Jsb2JMb2FkZXIsIFdURjo6bnVsbG9wdCk7CisgICAgc3RkOjpleGNoYW5nZShtX2Jsb2JM
b2FkZXIsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggMDQyOWRhZDZhZjZhODk5MmI5ZTJlZjk3NzUyYWVm
MTllZGQzOTI5ZC4uZmI2MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0OThlODBkMGVmNTYxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFsKEluamVjdGVk
QnVuZGxlU2NyaXB0V29ybGQmCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRV
c2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBVc2VyU2NyaXB0JiYg
dXNlclNjcmlwdCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZSh1c2VyU2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OjpO
byk7CisgICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCBzdGQ6Om51bGxvcHQsIFdURk1v
dmUodXNlclNjcmlwdCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOwogfQogCiB2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdpdGhVUkwoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpAQCAtNDg4LDcg
KzQ4OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVl
dEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29yCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3
b3JsZCwgVXNlclN0eWxlU2hlZXQmJiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBhZGRVc2VyU3R5
bGVTaGVldEludGVybmFsKHdvcmxkLCBXVEY6Om51bGxvcHQsIFdURk1vdmUodXNlclN0eWxlU2hl
ZXQpKTsKKyAgICBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKHdvcmxkLCBzdGQ6Om51bGxvcHQs
IFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNo
ZWV0Q2FjaGVJbkFsbEZyYW1lc0luQWxsUGFnZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCmluZGV4IGQ1ZTIwZjQxMTdhYTUxZWM2YmI3MTNmMTYwNzdhY2YxZGJl
MmFiYzIuLjgzM2M4MmM1NGQzN2FlMDE1YTE4MWE3YjkzMjRmNzA1MzA3YzY4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMg
UmVmPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZp
bGU6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBh
dGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcihCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0
aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6
OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgKaW5kZXggODBi
ZGU1YzMwMTNiMGZiOGMzODVkMzc1ZTViOTIxN2ZmYzY2MGQ2NS4uYWYzZDllOGFkNGI2ZTZkNDE0
ZDQyMzU0OGEzMjk0NzIyZjE3MTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRp
ZXMuaApAQCAtMzgsNiArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNoYXJlYWJs
ZUJpdG1hcDsKIAogZW51bSBjbGFzcyBBbGxvd0FuaW1hdGVkSW1hZ2VzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChXZWJD
b3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4gc2NyZWVuU2l6
ZUluUGl4ZWxzID0gV1RGOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzID0gQWxsb3dBbmlt
YXRlZEltYWdlczo6WWVzKTsKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJs
ZUJpdG1hcChXZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6
ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2Vz
ID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
aW5kZXggNGU3Yjk4MWUxMjExYmZmMjllN2Q3MzAyYTIwZDUzY2I3YmZkNzNhNS4uMzI1M2FhMGFi
ODM4OWYyOTVmMmVhZTY5N2EwMDJhNDg0MWMxMTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
QEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hh
bmdlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBX
ZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IG1ha2VPcHRpb25h
bCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdCksIG1fcGFnZS5pZGVudGlmaWVy
KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJG
cmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVs
bG9wdCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dG
ZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGEwMGRkYzhhNjY5NDg3OTczMTA0OTIxYTk3
OWNkMmU4OTcyMDUwMDguLjNlYTFjYTA2NzBiY2MwNDQ0ZDEwNDEyMTc0ZTY4ZWYwOThjOWUyYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIE9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJQ
YWdlUHJveHlJRCgpIGNvbnN0CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0
dXJuIG1fZnJhbWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CkBA
IC0xMzQsNyArMTM0LDcgQEAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpwYWdlSUQoKSBjb25zdAogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAg
IHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CkBAIC0yMDUs
NyArMjA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50
MigpCiAgICAgaWYgKG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyKSB7CiAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKAogICAgICAgICAgICAgbV9mcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKLSAgICAgICAgbV9mcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
ZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogICAg
IH0KICNlbmRpZgogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50VXJsLCBjb24K
ICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgJiYgIVdlYkNv
cmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGN1cnJlbnRVcmwsIG5ld1VybCkpIHsKICAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCiAgICAgICAgICAgICBtX2ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFtZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwotICAgICAgICBtX2ZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9m
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogI2VuZGlmCiB9CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMK
ICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihp
ZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rp
b246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZv
KCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dS
ZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5l
dHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBpZ25vcmluZyBiZWNhdXNl
IFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgZmFpbGVkIik7Ci0gICAgICAg
IG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNp
c2lvbiB7IGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAs
IHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBv
bGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CiB9CiAKQEAgLTEwMTUs
NyArMTAxNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAKICAgICAgICAgaWYgKCF3ZWJQ
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1l
KCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkg
fSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5
KHBvbGljeURlY2lzaW9uKSkpIHsKICAgICAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246IGlnbm9yaW5nIGJlY2F1c2Ugb2YgZmFpbGluZyB0byBzZW5kIHN5bmMgSVBDIik7
Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5k
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1
ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9
LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTAyNyw3ICsx
MDI3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBBU1NFUlQocG9saWN5RGVjaXNp
b25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKICAgICBpZiAoIXdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCByZXF1
ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwg
bmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkgewogICAgICAgICBXRUJGUkFNRUxP
QURFUkNMSUVOVF9SRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBpZ25vcmluZyBiZWNhdXNlIG9mIGZhaWxpbmcgdG8gc2Vu
ZCBhc3luYyBJUEMiKTsKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFdURjo6bnVs
bG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2Zy
YW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24g
eyByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNw
cAppbmRleCA2YjE4OGJiOTc1NWIzOTdjNWJiOWE2NzQ3MzAzNzZkNDhjZDRjZDY0Li41YzhjMDlk
N2ZlNjMxZDFkNDBmNTM4OWNlYTA3ZjYxMDE2MjE3M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6
c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkKIAogT3B0aW9uYWw8R2VvbG9jYXRp
b25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogewot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24m
IGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0OTU0
MDQzYmMwODExN2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3Li5hNjlkZDY1MjNiMWNmNmRjOWY1
YWQ1OGM2OWQ5ZDNjYzViMTVjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cApAQCAtMTEzLDcgKzExMyw3IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSWRlbnRpZmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkKIHsKICAgICBp
ZiAoIWlzPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
ZG93bmNhc3Q8UGFnZVBhc3RlYm9hcmRDb250ZXh0PigqY29udGV4dCkucGFnZUlEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDAyNTM4Y2QzYjA2ODdlNWViZjhj
N2ZmNjQxMDcyOGVkYzBiYmJlMWIuLmY0NzVjYjMzZWE4OTc0MmNhNGUzMzdlY2Q1NjBjOGZjOTAz
OTQ2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC01NiwyNyArNTYs
MjcgQEAgT3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTdHJpbmc+IHZvaWNl
VVJJOwogICAgIGRlY29kZXIgPj4gdm9pY2VVUkk7CiAgICAgaWYgKCF2b2ljZVVSSSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYg
KCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5nOwogICAgIGRlY29kZXIgPj4g
bGFuZzsKICAgICBpZiAoIWxhbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBsb2NhbFNlcnZp
Y2U7CiAgICAgZGVjb2RlciA+PiBsb2NhbFNlcnZpY2U7CiAgICAgaWYgKCFsb2NhbFNlcnZpY2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBkZWZhdWx0TGFuZzsKICAgICBkZWNvZGVyID4+IGRl
ZmF1bHRMYW5nOwogICAgIGlmICghZGVmYXVsdExhbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RG
TW92ZSgqdm9pY2VVUkkpLCBXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqbGFuZyksIFdURk1vdmUo
KmxvY2FsU2VydmljZSksIFdURk1vdmUoKmRlZmF1bHRMYW5nKSB9fTt9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNs
aWVudEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2ds
aWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKaW5kZXggNDg1ZjFmZDA5OTY5MDExMTM0ZTU3NzY5
NWRjMmIwNGQzYjFmZDEzZS4uMGE1MTNiZjJlZWRjOTY5MGUyZjlmYzMxNWUyZjMxYjVkNDAxNmRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2ds
aWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKQEAgLTQ2LDggKzQ2
LDggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRNZXRob2RLZXlkb3du
KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIEFTU0VSVChmcmFtZSk7CiAKICAgICBpZiAoY29u
c3QgYXV0byYgdW5kZXJsaW5lcyA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRVbmRlcmxpbmVzKCkp
IHsKLSAgICAgICAgYXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVj
dGlvblJhbmdlU3RhcnQoKS52YWx1ZU9yKDApOwotICAgICAgICBhdXRvIHJhbmdlTGVuZ3RoID0g
cGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkudmFsdWVPcigwKTsK
KyAgICAgICAgYXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlv
blJhbmdlU3RhcnQoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byByYW5nZUxlbmd0aCA9IHBs
YXRmb3JtRXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZUxlbmd0aCgpLnZhbHVlX29yKDApOwog
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+dGV4
dCgpLCB1bmRlcmxpbmVzLnZhbHVlKCksIHsgfSwgcmFuZ2VTdGFydCwgcmFuZ2VTdGFydCArIHJh
bmdlTGVuZ3RoKTsKICAgICB9IGVsc2UKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbmZpcm1D
b21wb3NpdGlvbihwbGF0Zm9ybUV2ZW50LT50ZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5n
Q29udHJvbGxlclByb3h5Lm1tCmluZGV4IDc4ZjFkZDEwOTU3MTA1ZTIxNTY2YTgyM2YyYTI1MGM1
ODk2MTNiMDQuLjRlZDNlZjk1MDVmNTFmMzI4NTU0MzAxNDkyYWM1YTRlNjkyNGRjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTc4LDE3ICs3OCwxNyBA
QCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5kT2Zmc2V0PiBU
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogCiAgICAgYXV0byByb290ID0gZnJhbWVTZWxlY3Rp
b24ucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFyb290
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBzZWxlY3Rpb25MaXZlUmFuZ2UgPSBzZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKTsKICAgICBpZiAoIXNlbGVjdGlvbkxpdmVSYW5nZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHNl
bGVjdGlvblJhbmdlID0gU2ltcGxlUmFuZ2UgeyAqc2VsZWN0aW9uTGl2ZVJhbmdlIH07CiAKICAg
ICBhdXRvIHNjb3BlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpyb290KTsKICAg
ICBpbnQ2NF90IGFkanVzdGVkU3RhcnRMb2NhdGlvbiA9IGNoYXJhY3RlckNvdW50KHsgc2NvcGUu
c3RhcnQsIHNlbGVjdGlvblJhbmdlLnN0YXJ0IH0pICsgb2Zmc2V0OwogICAgIGlmIChhZGp1c3Rl
ZFN0YXJ0TG9jYXRpb24gPCAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gYWRqdXN0ZWRTZWxlY3Rpb25DaGFyYWN0
ZXJSYW5nZSA9IENoYXJhY3RlclJhbmdlIHsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFkanVzdGVk
U3RhcnRMb2NhdGlvbiksIGxlbmd0aCB9OwogCiAgICAgcmV0dXJuIHsgeyByZXNvbHZlQ2hhcmFj
dGVyUmFuZ2Uoc2NvcGUsIGFkanVzdGVkU2VsZWN0aW9uQ2hhcmFjdGVyUmFuZ2UpLCBhZGp1c3Rl
ZFNlbGVjdGlvbkNoYXJhY3RlclJhbmdlLmxvY2F0aW9uIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0Fy
ZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNw
cAppbmRleCBlOTk0NTdjNzQyMzIxYjUzZTFmNmVhNWRjOTBkZGVhODY1MjNlYjg0Li5iYzZkOTM3
YmQ2MmMxYzlhODAxMDgwZjI0MmI0MGRhNmQ0YzgwYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3M6
OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAgICBhdXRvIGNo
YW5nZVdpbmRvd1NjcmVlbiA9IFsmXSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRvIGVuc3VyZSB0
aGF0IHdlIGdldCBhIHVuaXF1ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgcGVyLURyYXdpbmdBcmVh
IChuZWNlc3NhcnkgYmVjYXVzZSBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcgogICAgICAg
ICAvLyBpcyBkcml2ZW4gYnkgdGhlIFRocmVhZGVkQ29tcG9zaXRvciBvZiB0aGUgZHJhd2luZyBh
cmVhKSwgZ2l2ZSBlYWNoIHBhZ2UgYSB1bmlxdWUgRGlzcGxheUlEIGRlcml2ZWQgZnJvbSBXZWJQ
YWdlJ3MgdW5pcXVlIElELgotICAgICAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdl
KG1fbGF5ZXJUcmVlSG9zdC0+ZGlzcGxheUlEKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1f
d2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UobV9sYXllclRyZWVIb3N0LT5kaXNwbGF5SUQo
KSwgc3RkOjpudWxsb3B0KTsKICAgICB9OwogCiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZUhvc3Qp
OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNz
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogICAgIG1fZGlzY2FyZFByZXZpb3Vz
TGF5ZXJUcmVlSG9zdFRpbWVyLnN0YXJ0T25lU2hvdCg1X3MpOwogCiAgICAgLy8gQWx3YXlzIHVz
ZSB0aGUgcHJpbWFyeSBkaXNwbGF5IElEICgwKSB3aGVuIG5vdCBpbiBhY2NlbGVyYXRlZCBjb21w
b3NpdGluZyBtb2RlLgotICAgIG1fd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoMCwgV1RG
OjpudWxsb3B0KTsKKyAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKDAsIHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBtX2RpcnR5UmVnaW9uID0gbV93ZWJQYWdlLmJvdW5kcygpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJ
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
CmluZGV4IGRlNjcyM2I3OTRlOTIwODM0ZTU0ODgwNTk0ZmNhMmIzMDk0NGE3ODYuLmI2Mjk4ZDVk
ZDdmNDZhN2Y4YTVmNDIxMzcwMjA3YWE1N2MzZGM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMTQsMTIgKzIxNCwx
MiBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGNvbnZlcnRUb1VpbnQ2NChKU0M6OkpTVmFs
dWUganNWYWx1ZSkKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB0
cnVuYyh2YWx1ZSkgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHZhbHVlOwog
ICAgIH0KICAgICBpZiAoanNWYWx1ZS5pc0JpZ0ludCgpKQogICAgICAgICByZXR1cm4gSlNDOjpK
U0JpZ0ludDo6dG9CaWdVSW50NjQoanNWYWx1ZSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBKU09iamVjdFJlZiBKU0lQQ1NlbWFwaG9y
ZTo6Y3JlYXRlSlNXcmFwcGVyKEpTQ29udGV4dFJlZiBjb250ZXh0KQpAQCAtNzQ4LDEwICs3NDgs
MTAgQEAgT3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVyVHlwZT4+IGdl
dE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHkKIHsKICAgICBhdXRvIGpzUHJvcGVydHlWYWx1
ZSA9IGpzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoc2NvcGUuZXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0VG9VaW50NjQoanNQcm9wZXJ0
eVZhbHVlKTsKICAgICBpZiAoIW51bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZU9iamVjdElkZW50
aWZpZXI8T2JqZWN0SWRlbnRpZmllclR5cGU+KCpudW1iZXIpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDFmNDRkMjg1
NDY4MjJkMDQ1NWE1MjZkMjI2ZjVjNmQ3ZmQyZDU3MTEuLmUyNTUxMDEwNmU5MTA4YTc4MWM2NDgz
MmZlZGY4MjFhMmNiNTc2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0xMjMsMzIgKzEyMywzMiBAQCBzdGF0aWMgT3B0aW9u
YWw8UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPj4gZGVjb2RlVGltaW5nRnVuY3Rpb24oSVBDOjpEZWNv
ZGVyJiBkZWNvZAogewogICAgIFRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvblR5cGUgdHlw
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPFRpbWlu
Z0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbjsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNl
IFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24g
PSBMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKnN0YXRpY19jYXN0PExpbmVhclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24u
Z2V0KCkpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGltaW5nRnVu
Y3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246CiAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoKnN0YXRpY19jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5j
dGlvbi5nZXQoKSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUaW1p
bmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBTdGVw
c1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
c3RhdGljX2Nhc3Q8U3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uLmdldCgpKSkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpT
cHJpbmdGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBTcHJpbmdUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0YXRpY19jYXN0
PFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24uZ2V0KCkpKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE5NCw2NyArMTk0LDY3IEBAIE9wdGlvbmFs
PFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+IFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OlByb3BlCiB7CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVy
dGllcyBwcm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5rZXlQ
YXRoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5hbmltYXRpb25U
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5iZWdpblRpbWUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmR1cmF0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy50aW1lT2Zmc2V0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5yZXBlYXRDb3VudCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMuc3BlZWQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmZpbGxNb2RlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvcGVydGllcy52YWx1ZUZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzVGlt
aW5nRnVuY3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUaW1pbmdGdW5jdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoaGFzVGltaW5nRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKGF1dG8gdGlt
aW5nRnVuY3Rpb24gPSBkZWNvZGVUaW1pbmdGdW5jdGlvbihkZWNvZGVyKSkKICAgICAgICAgICAg
IHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKCp0aW1pbmdGdW5jdGlvbik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cHJvcGVydGllcy5hdXRvUmV2ZXJzZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
cm9wZXJ0aWVzLnJlbW92ZWRPbkNvbXBsZXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwcm9wZXJ0aWVzLmFkZGl0aXZlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cHJvcGVydGllcy5yZXZlcnNlVGltaW5nRnVuY3Rpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvcGVydGllcy5oYXNFeHBsaWNpdEJlZ2luVGltZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5VmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocHJvcGVydGllcy5rZXlUaW1lcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCBudW1U
aW1pbmdGdW5jdGlvbnM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1UaW1pbmdGdW5jdGlv
bnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIGlmIChudW1UaW1pbmdGdW5jdGlvbnMpIHsKICAgICAgICAgcHJv
cGVydGllcy50aW1pbmdGdW5jdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1UaW1pbmdG
dW5jdGlvbnMpOwpAQCAtMjYzLDEyICsyNjMsMTIgQEAgT3B0aW9uYWw8UGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6UHJvcGVydGllcz4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGUK
ICAgICAgICAgICAgIGlmIChhdXRvIHRpbWluZ0Z1bmN0aW9uID0gZGVjb2RlVGltaW5nRnVuY3Rp
b24oZGVjb2RlcikpCiAgICAgICAgICAgICAgICAgcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnRpbWluZ0Z1bmN0aW9uKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwcm9wZXJ0aWVzLmFuaW1hdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdURk1v
dmUocHJvcGVydGllcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXggZWNkYTYzYjBjMjJkZWZhOGU3ZWJhMTgxODgwOTZm
MTQ1ODkzMDMxYy4uMmQ4ZWQ1N2ZlYjA5YzY4NjdmNTgyZTI4MjUxOWE3MTQ0YTNlYWEyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5t
bQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmJ1
aWxkVHJhbnNhY3Rpb24oUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuCiAvLyBOb3RpZmlj
YXRpb24gZnJvbSB0aGUgVUkgcHJvY2VzcyB0aGF0IHdlIHNjcm9sbGVkLgogdm9pZCBSZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShTY3JvbGxp
bmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBz
eW5jTGF5ZXJQb3NpdGlvbikKIHsKLSAgICBhcHBseVNjcm9sbFVwZGF0ZShub2RlSUQsIHNjcm9s
bFBvc2l0aW9uLCBXVEY6Om51bGxvcHQsIFNjcm9sbFR5cGU6OlVzZXIsIHN5bmNMYXllclBvc2l0
aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgYXBwbHlTY3JvbGxVcGRhdGUobm9kZUlELCBzY3Jv
bGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0LCBTY3JvbGxUeXBlOjpVc2VyLCBzeW5jTGF5ZXJQb3Np
dGlvbiA/IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uOjpTZXQpOwogfQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2Vz
dHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBlMTYwY2VhNjAxMTMwMzAxODQzZmJkMDJl
MWUzYmM5MTJjOWE2ZmIxLi5kNmEwMDdmZWYwZmNmN2VhY2ViMmExYWVjYjhkY2IzMzNmNjg2MmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVy
ZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBA
IE9wdGlvbmFsPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OmNvbXB1dGVUZXh0TGVnCiAKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihtX3dlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIGlmICghZG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5NzdkNjk5YzFkMWQ5Y2NmOTIwNjM0
N2M4MDY2MmMxNzRmNTI4Zjc5Li5lYTM1ZTQ5ZWZiNTI0MmViNzcxMDQxMzZhMjZhZjM2MTNkYzFk
YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgY29uc3Qg
V2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2FjaGVM
aXN0Q291bnRzSWZOZWNlc3MKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xlYXJD
YWNoZWRMaXN0Q291bnRzKCkKIHsKLSAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50cyA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5k
ZXggMjVkOWVmYzUzOWM4YjdiMjFhNzA0MWJjZjE4MjMwODY4ZjhjYzc3Ni4uNGU1NDU5NTFmODJm
MjQ5YzFjZTcxNjhiZTdlZjc4MGRlNDFkZGM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMzgsOCArMjM4LDggQEAgYm9v
bCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHUKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCi0gICAg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9u
YWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtl
T3B0aW9uYWwod2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsK
KyAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHN0ZDo6
bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBh
Z2UoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkp
IDogc3RkOjpudWxsb3B0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxMzQyMjkzMzM1MjY2ZGMyOTkw
OWUwNjFhOTYxODcwNjFmMjNjZmRlLi5iNzJmZDkyMDY2NTdjZTdiZjI0NzgyNGI3NGMxN2IyNjBk
OTYwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgRnJhbWVJbmZvRGF0YSBXZWJGcmFtZTo6aW5mbygpIGNv
bnN0CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCh1cmwoKSksCiAgICAgICAgIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbUZyYW1lKG1fY29yZUZyYW1lLmdldCgpKSwKICAgICAgICAgbV9mcmFtZUlE
LAotICAgICAgICBwYXJlbnQgPyBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IHsg
cGFyZW50LT5mcmFtZUlEKCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgcGFyZW50ID8gT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB7IHBhcmVudC0+ZnJhbWVJRCgpIH0gOiBz
dGQ6Om51bGxvcHQsCiAgICAgfTsKIAogICAgIHJldHVybiBpbmZvOwpAQCAtMjQzLDcgKzI0Myw3
IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpCiAgICAgbV9wb2xp
Y3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgYXV0
byBpZGVudGlmaWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOwotICAgIG1fcG9saWN5SWRlbnRpZmll
ciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24s
IG51bGxwdHIpKQogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgKmlkZW50
aWZpZXIpOwogICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gRm9yTmF2
aWdhdGlvbkFjdGlvbjo6Tm87CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
JiYgcG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uLmlkZW50
aWZpZXIgPT0gbV9wb2xpY3lJZGVudGlmaWVyKTsKLSAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9wb2xpY3lJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlv
bik7CiAgICAgYm9vbCBmb3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5jdGlvbkZvck5h
dmlnYXRpb25BY3Rpb24gPT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwpAQCAtMjkzLDcgKzI5
Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93bmxvYWRJRCA9
ICpzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0KTsKKyAgICBh
dXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25sb2FkSUQs
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKICAgICBpc0Fw
cEJvdW5kID0gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwpAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93bmxvYWRJRCA9ICpz
dGQ6OmV4Y2hhbmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRv
IHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25sb2FkSUQsIHN0
ZDo6bnVsbG9wdCk7CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVy
ID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhYTM1M2Y1MGVkODRkNGMx
MDBkOGMwMGQ0YWU2N2EyYTFlMjI4YTkuLjBkMmZkODIxZDRkZDJhMzA5ZWY0ODY1ZjQyNTU2YjUz
Y2I1YzRlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIg
OiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLnZhbHVlcygpKSB7CiAgICAg
ICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzcxNyw3ICszNzE3LDcgQEAgdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXIKIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29y
bGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IGZy
YW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnZhbHVlT3IoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IHsgfSkudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAi
cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJh
bWVJRC52YWx1ZV9vcihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsK
ICAgICBhdXRvIHdlYkZyYW1lID0gbWFrZVJlZlB0cihmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJm1haW5XZWJGcmFtZSgpKTsKIAogICAgIGlm
IChhdXRvKiBuZXdXb3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50V29y
bGQod29ybGREYXRhKSkgewpAQCAtNDA4Nyw3ICs0MDg3LDcgQEAgdm9pZCBXZWJQYWdlOjp3aWxs
Q29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXllclRyYW5zYWN0
aW9uKQogICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxpbmcoYWxsb3dzVXNl
clNjYWxpbmcoKSk7CiAgICAgaWYgKG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGVJ
RCkgewogICAgICAgICBsYXllclRyYW5zYWN0aW9uLnNldER5bmFtaWNWaWV3cG9ydFNpemVVcGRh
dGVJRCgqbV9wZW5kaW5nRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKTsKLSAgICAgICAgbV9w
ZW5kaW5nRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX3BlbmRpbmdEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogICAgIGlmIChtX2xhc3RUcmFuc2FjdGlvblBhZ2VTY2FsZUZhY3RvciAhPSBsYXllclRy
YW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpKSB7CiAgICAgICAgIG1fbGFzdFRyYW5zYWN0aW9u
UGFnZVNjYWxlRmFjdG9yID0gbGF5ZXJUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3IoKTsKQEAg
LTQyNzMsNyArNDI3Myw3IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciog
V2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24s
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdBcHBsaWNh
dGlvbkZsYWdzPiBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6
Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHN0ZDo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxz
ZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDMwNCw3ICs0
MzA0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRi
b3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0s
IHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9u
ZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQz
MjEsNyArNDMyMSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAgICAgfQogICAgIGNhc2Ug
RHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KHN0ZDo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdDb250cm9sbGVy
QWN0aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbjogewpAQCAtNTUxOCwxOCArNTUxOCwxOCBAQCB2
b2lkIFdlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYg
cmVzdWx0KQogdm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlRG93bihpbnQgYnV0dG9uLCBXZWJD
b3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lKQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdL
RXZlbnRNb2RpZmllcnMpID49IHNpemVvZihXZWJFdmVudDo6TW9kaWZpZXIpLCAiV0tFdmVudE1v
ZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2l6ZSBvZiBXZWJF
dmVudDo6TW9kaWZpZXIiKTsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VF
dmVudDo6TW91c2VEb3duLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+KGJ1dHRv
biksIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgT3B0aW9uU2V0
PFdlYkV2ZW50OjpNb2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwgV2ViQ29yZTo6
Rm9yY2VBdENsaWNrLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIFdURjo6bnVsbG9wdCk7CisgICAg
bW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93biwgc3RhdGlj
X2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRp
b24sIDAsIDAsIDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpm
cm9tUmF3KG1vZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VF
dmVudDo6Tm9UYXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRl
TW91c2VVcChpbnQgYnV0dG9uLCBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgaW50IGNsaWNr
Q291bnQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lKQogewogICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLRXZlbnRNb2RpZmllcnMpID49IHNpemVvZihXZWJFdmVu
dDo6TW9kaWZpZXIpLCAiV0tFdmVudE1vZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBl
cXVhbCB0byB0aGUgc2l6ZSBvZiBXZWJFdmVudDo6TW9kaWZpZXIiKTsKLSAgICBtb3VzZUV2ZW50
KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VVcCwgc3RhdGljX2Nhc3Q8V2ViTW91
c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAsIDAsIDAs
IGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9tUmF3KG1vZGlm
aWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVudDo6Tm9UYXAp
LCBXVEY6Om51bGxvcHQpOworICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChXZWJNb3VzZUV2
ZW50OjpNb3VzZVVwLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+KGJ1dHRvbiks
IDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgT3B0aW9uU2V0PFdl
YkV2ZW50OjpNb2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwgV2ViQ29yZTo6Rm9y
Y2VBdENsaWNrLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlv
biwgV2FsbFRpbWUgdGltZSkKIHsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91
c2VFdmVudDo6TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgMCwgcG9zaXRpb24s
IHBvc2l0aW9uLCAwLCAwLCAwLCAwLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0s
IHRpbWUsIDAsIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgV1RGOjpudWxsb3B0KTsKKyAgICBtb3Vz
ZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlLCBXZWJNb3VzZUV2
ZW50OjpOb0J1dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCAwLCBPcHRpb25T
ZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHRpbWUsIDAsIFdlYk1vdXNlRXZlbnQ6Ok5vVGFw
KSwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkZvclRl
c3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3QgZnJvbSwgdWlu
dDY0X3QgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25IaWdobGlnaHQ+JiBoaWdobGlnaHRzKQpAQCAtNjMwMCw3ICs2MzAwLDcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX3VzZXJIYXNDaGFu
Z2VkUGFnZVNjYWxlRmFjdG9yID0gZmFsc2U7CiAgICAgbV9lc3RpbWF0ZWRMYXRlbmN5ID0gU2Vj
b25kcygxLjAgLyA2MCk7CiAgICAgbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9uQWZ0ZXJJ
bnNlcnRpb24gPSB0cnVlOwotICAgIG1fbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBbmRQYWdl
U2NhbGVCZWZvcmVTY2FsaW5nUGFnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xhc3RMYXllclRy
ZWVUcmFuc2FjdGlvbklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2UgPSBzdGQ6Om51bGxv
cHQ7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBFdmVudERpc3BhdGNoZXI6
OlRvdWNoRXZlbnRRdWV1ZSBxdWV1ZWRFdmVudHM7CkBAIC02NDE0LDcgKzY0MTQsNyBAQCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6Y3VycmVudFNlbGVjdGlvbkFzUmFuZ2UoKQogewog
ICAgIGF1dG8qIGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fcGFnZS5nZXQoKSk7CiAgICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKIH0KQEAgLTY1OTUsNyArNjU5NSw3IEBAIFJlZjxEb2N1
bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBj
b25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmIChtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMpIHsK
ICAgICAgICAgICAgIG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmln
YXRpb24gPSBtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMtPmFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
OwogICAgICAgICAgICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVy
KFdURk1vdmUoKm1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyksIGRvY3VtZW50TG9hZGVyKTsKLSAg
ICAgICAgICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogICAgIH0KIApAQCAtNjcxMiw3ICs2NzEyLDcgQEAgdm9pZCBXZWJQYWdlOjpyZW1vdmVBbGxV
c2VyQ29udGVudCgpCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSW50cmluc2ljQ29udGVudFNpemVJ
Zk5lZWRlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewotICAgIG1fcGVuZGluZ0lu
dHJpbnNpY0NvbnRlbnRTaXplID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ0ludHJpbnNp
Y0NvbnRlbnRTaXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbWluaW11bVNpemVGb3JBdXRv
TGF5b3V0KCkud2lkdGgoKSAmJiAhc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUoKS53
aWR0aCgpICYmICFzaXplVG9Db250ZW50QXV0b1NpemVNYXhpbXVtU2l6ZSgpLmhlaWdodCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1haW5GcmFtZVZpZXcoKSk7CkBAIC02NzI2LDcg
KzY3MjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplSWZOZWVk
ZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBXZWJQYWdlOjpmbHVzaFBl
bmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZVVwZGF0ZSgpCiB7Ci0gICAgaWYgKGF1dG8gcGVuZGlu
Z1NpemUgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ0ludHJpbnNpY0NvbnRlbnRTaXplLCBXVEY6
Om51bGxvcHQpKQorICAgIGlmIChhdXRvIHBlbmRpbmdTaXplID0gc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZSwgc3RkOjpudWxsb3B0KSkKICAgICAgICAgdXBkYXRl
SW50cmluc2ljQ29udGVudFNpemVJZk5lZWRlZCgqcGVuZGluZ1NpemUpOwogfQogCkBAIC03MTMx
LDExICs3MTMxLDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvCiAgICAgRG9jdW1lbnQqIG1h
aW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwog
ICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1bWVudCA/IG1haW5GcmFt
ZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFsb2FkZXIpCi0gICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAogICAgIGF1dG8gY29yZUNhbGxiYWNr
SUQgPSBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CiAgICAgaWYgKCFjb3JlQ2Fs
bGJhY2tJRCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogCiAgICAg
bV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC5hZGQoY29yZUNhbGxiYWNrSUQs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTcxOTEsMTEgKzcxOTEsMTEgQEAg
T3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRleHRGb3JFbGVt
ZW50KFdlYkNvcmU6OkVsZW1lbnQmIGUKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9IGVsZW1lbnQu
ZG9jdW1lbnQoKTsKICAgICBpZiAoIW1fcGFnZSB8fCBkb2N1bWVudC5wYWdlKCkgIT0gbV9wYWdl
LmdldCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCB7IGVsZW1l
bnQuY2xpZW50UmVjdCgpLCBtX2lkZW50aWZpZXIsIGRvY3VtZW50LmlkZW50aWZpZXIoKSwgZG9j
dW1lbnQuaWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCkgfTsKIH0KQEAgLTczODksNyArNzM4
OSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEltYWdlRXh0cmFjdGlvbihXZWJDb3JlOjpFbGVt
ZW50JiBlbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlCiAgICAgfQogCiAgICAgYXV0byYgcmVuZGVy
SW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKLSAgICBhdXRvIGJpdG1h
cCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChyZW5kZXJJbWFnZSwgV1RGOjpudWxsb3B0LCBBbGxv
d0FuaW1hdGVkSW1hZ2VzOjpObyk7CisgICAgYXV0byBiaXRtYXAgPSBjcmVhdGVTaGFyZWFibGVC
aXRtYXAocmVuZGVySW1hZ2UsIHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlczo6Tm8p
OwogICAgIGlmICghYml0bWFwKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQogICAgICAgICAg
ICAgY29tcGxldGlvbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VPdmVybGF5LmgKaW5kZXggYTNlNjg2MjZiYjliNzY5Zjg2MDk2OTViMDk3YmUw
NzU3YzJhM2IxOC4uZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVkZTcyYWZlNGEzNzNlNzQyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNjcm9s
bEZyYW1lKFdlYlBhZ2VPdmVybGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICAgICAgdmlydHVhbCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0
Rm9yUmVzdWx0QXRQb2ludChXZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgICAgICB2aXJ0dWFsIE9wdGlvbmFsPEFjdGlvbkNv
bnRleHQ+IGFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KFdlYlBhZ2VPdmVybGF5JiwgV2Vi
Q29yZTo6RmxvYXRQb2ludCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYlBhZ2VPdmVybGF5JikgeyB9CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUkoV2ViUGFnZU92ZXJs
YXkmKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRIaWRlVUkoV2Vi
UGFnZU92ZXJsYXkmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKaW5kZXggMzczOTNlMTdhNDE3YThmYTdlNTljZmQ1
NTE4YTRhYWQ2ZjRjZTIxMC4uMzc4M2I0N2EwMzQ0MDc0YWI3Zjc5NzgwMTkwODcxZDMwODk4ZDk1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQ
YWdlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9X
ZWJQYWdlR0xpYi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRm
b3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAog
c3RhdGljIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IGlucHV0TWV0aG9kU2F0ZUZvckVsZW1l
bnQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnNo
b3VsZFVzZUlucHV0TWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwog
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZmQ5ZmI4
YjRiMDMyZGM3MjY3MzE5ZmM0ZmIwODliYjFhZjM3YzcyZS4uNmI3OWQ1YWEwZjQ1NjY5NDk4MzUw
OThlYjg4MzNmYWYwZTYyMWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEwMTEsMTMgKzEwMTEsMTMgQEAgdm9pZCBX
ZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzLAogICAgIGF1dG8gaW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UoKTsKICAgICBp
ZiAocGxhY2Vob2xkZXJSZWN0cy5zaXplKCkgIT0gaW1hZ2VTaXplcy5zaXplKCkpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0IGRyb3BwZWQgaW1h
Z2UgcGxhY2Vob2xkZXJzOiBwbGFjZWhvbGRlciByZWN0IGNvdW50ICgldHUpIGRvZXMgbm90IG1h
dGNoIGltYWdlIHNpemUgY291bnQgKCV0dSkuIiwgcGxhY2Vob2xkZXJSZWN0cy5zaXplKCksIGlt
YWdlU2l6ZXMuc2l6ZSgpKTsKLSAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQpOworICAg
ICAgICByZXBseSh7IH0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIWltYWdlUGxhY2Vob2xkZXJSYW5nZSkgewogICAgICAgICBSRUxFQVNFX0xPRyhE
cmFnQW5kRHJvcCwgIkZhaWxlZCB0byBpbnNlcnQgZHJvcHBlZCBpbWFnZSBwbGFjZWhvbGRlcnM6
IG5vIGltYWdlIHBsYWNlaG9sZGVyIHJhbmdlLiIpOwotICAgICAgICByZXBseSh7IH0sIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIHJlcGx5KHsgfSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRE
cm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVz
LAogCiB2b2lkIFdlYlBhZ2U6OmRpZENvbmNsdWRlRHJvcCgpCiB7Ci0gICAgbV9yYW5nZUZvckRy
b3BTbmFwc2hvdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3JhbmdlRm9yRHJvcFNuYXBzaG90ID0g
c3RkOjpudWxsb3B0OwogICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3Qu
Y2xlYXIoKTsKIH0KIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRl
QW5kU2VuZEVkaXREcmFnU25hcHNob3QoKQogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpV
c2VTZWxlY3Rpb25SZWN0Rm9yU2l6aW5nLAogICAgICAgICBUZXh0SW5kaWNhdG9yT3B0aW9uOjpJ
bmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0CiAgICAgfTsKLSAgICBpZiAoYXV0
byByYW5nZSA9IHN0ZDo6ZXhjaGFuZ2UobV9yYW5nZUZvckRyb3BTbmFwc2hvdCwgV1RGOjpudWxs
b3B0KSkgeworICAgIGlmIChhdXRvIHJhbmdlID0gc3RkOjpleGNoYW5nZShtX3JhbmdlRm9yRHJv
cFNuYXBzaG90LCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGlmIChhdXRvIHRleHRJbmRpY2F0
b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZhdWx0VGV4dElu
ZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5z
aXRpb246Ok5vbmUsIHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0YSA9IHRleHRJ
bmRpY2F0b3ItPmRhdGEoKTsKICAgICB9CkBAIC0xNDgxLDcgKzE0ODEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUg
Z2VzdHVyZVR5cGUsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdl
c3R1cmVSZWNvZ25pemVyU3RhdGU6OkVuZGVkOgogICAgICAgICAgICAgY2FzZSBHZXN0dXJlUmVj
b2duaXplclN0YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICAgICAgbV9zdGFydGluZ0dlc3R1
cmVSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0aW5nR2VzdHVy
ZVJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAgICAgICBjYXNl
IEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlOgpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAg
dm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIEdl
c3R1cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICAgICAgaWYgKHJhbmdlKQogICAgICAgICAg
ICAgICAgIG1fY3VycmVudFdvcmRSYW5nZSA9IHsgeyAqcmFuZ2UgfSB9OwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fY3VycmVudFdvcmRSYW5nZSA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDaGFu
Z2VkOgogICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRXb3JkUmFuZ2UpCkBAIC0xNTEyLDcgKzE1
MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBw
b2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKICAgICAgICAgY2FzZSBHZXN0
dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICBtX2N1cnJlbnRXb3Jk
UmFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVj
b2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZTo6UG9zc2libGU6CkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZyYW1lLCBj
bwogCiAgICAgYXV0byB0YXJnZXROb2RlID0gbWFrZVJlZlB0cihoaXRUZXN0LnRhcmdldE5vZGUo
KSk7CiAgICAgaWYgKHRhcmdldE5vZGUgJiYgIUhUTUxFbGVtZW50OjpzaG91bGRFeHRlbmRTZWxl
Y3Rpb25Ub1RhcmdldE5vZGUoKnRhcmdldE5vZGUsIGV4aXN0aW5nU2VsZWN0aW9uKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9zaXRpb24gcmVz
dWx0OwpAQCAtMTYzNCw3ICsxNjM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBy
YW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdAogCiAgICAg
aWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3Jk
IGJvdW5kYXJ5LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
aWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFyaXR5OjpXb3Jk
R3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewpAQCAtMTY3MSw3ICsxNjcxLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRp
b24oRnJhbWUqIGZyYW1lLCBjb25zdAogICAgIGlmIChleHRlbnQuaXNOdWxsKCkgfHwgZXh0ZW50
ID09IGJhc2UpCiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICBpZiAoZXh0ZW50
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCEoYmFzZSA8IGV4dGVudCkpCiAgICAgICAgIHN0ZDo6
c3dhcChiYXNlLCBleHRlbnQpOwpAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgSW50UmVjdCBXZWJQYWdl
Ojpyb290Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKIHsKLSAgICBtX3N0YXJ0aW5n
R2VzdHVyZVJhbmdlID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2Ug
PSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCkBAIC0yMDc0LDExICsyMDc0LDEx
IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VOZWFyUG9zaXRpb25NYXRjaGVz
VGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24mCiB7CiAgICAgYXV0byBsaXZlUmFuZ2UgPSBzZWxl
Y3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIGlmICghbGl2ZVJhbmdlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFNpbXBsZVJh
bmdlIHJhbmdlIHsgKmxpdmVSYW5nZSB9OwogICAgIGF1dG8gYm91bmRhcnlQb2ludCA9IG1ha2VC
b3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKICAgICBpZiAoIWJvdW5kYXJ5UG9pbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsgfSwgY2hhcmFj
dGVyQ291bnQoeyByYW5nZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0ZXJhdG9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIApAQCAtMjE2OCwy
NSArMjE2OCwyNSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFuZ2VGb3JHcmFu
dWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZQogICAgIGNhc2UgVGV4dEdyYW51
bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCB0aGlzIG11dGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGFuZCByZXR1cm5z
IG51bGwuCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNh
c2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91bmRhcnk6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5
OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEJv
dW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9vQmlnRm9yU2Vs
ZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbWUmIGZyYW1lKQpAQCAt
MjQ5NCw3ICsyNDk0LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0aW9uSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAgICAgICAgIHdo
aWxlICh0ZXh0Rm9yUmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0aCgpID4gb3Jp
Z2luYWxUZXh0Lmxlbmd0aCgpICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0dGVtcHRzKSB7
CiAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5uZXh0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uID49IGZyYW1lLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpCi0gICAgICAgICAgICAgICAgICAgIHJhbmdlID0g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gbWFrZVNp
bXBsZVJhbmdlKHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KTsKICAgICAgICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JDb250ZXh0KHJh
bmdlKTsKQEAgLTI3NjUsMTUgKzI3NjUsMTUgQEAgc3RhdGljIHZvaWQgZGF0YURldGVjdG9yTGlu
a1Bvc2l0aW9uSW5mb3JtYXRpb24oRWxlbWVudCYgZWxlbWVudCwgSW50ZXJhY3Rpb25JbmYKIHN0
YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJbWFnZSY+PiBpbWFnZVJlbmRl
cmVyQW5kSW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPFJlbmRlckltYWdl
PihlbGVtZW50LnJlbmRlcmVyKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcmVuZGVySW1hZ2UgPSBkb3du
Y2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJJ
bWFnZS5jYWNoZWRJbWFnZSgpIHx8IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCktPmVycm9yT2Nj
dXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIGltYWdlID0gcmVuZGVySW1hZ2UuY2FjaGVkSW1hZ2Uo
KS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVySW1hZ2UpOwogICAgIGlmICghaW1hZ2UgfHwgaW1h
Z2UtPndpZHRoKCkgPD0gMSB8fCBpbWFnZS0+aGVpZ2h0KCkgPD0gMSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biB7eyByZW5kZXJJbWFnZSwgKmltYWdlIH19OwogfQpAQCAtMzE4MCw3ICszMTgwLDcgQEAgT3B0
aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBmb2N1c2Vk
RWxlbWVudCA9IG1fZm9jdXNlZEVsZW1lbnQuY29weVJlZigpOwogICAgIGJvb2wgd2lsbExheW91
dCA9IGRvY3VtZW50LT52aWV3KCktPm5lZWRzTGF5b3V0KCk7CkBAIC0zMTg4LDcgKzMxODgsNyBA
QCBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBXZWJQYWdlOjpmb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uKCkKIAogICAgIC8vIExheW91dCBtYXkgaGF2ZSBkZXRhY2hlZCB0aGUg
ZG9jdW1lbnQgb3IgY2F1c2VkIGEgY2hhbmdlIG9mIGZvY3VzLgogICAgIGlmICghZG9jdW1lbnQt
PnZpZXcoKSB8fCBmb2N1c2VkRWxlbWVudCAhPSBtX2ZvY3VzZWRFbGVtZW50KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKHdpbGxMYXlvdXQpCiAgICAgICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtMzQw
Niw3ICszNDA2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3
TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGRvdWIKICAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50aWZpZXIgPDwg
IiBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNpemUgPDwgIiBz
Y2FsZUZhY3RvciAiIDw8IHNjYWxlRmFjdG9yIDw8ICIgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoICIgPDwgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKIAogICAgIGF1dG8gcHJldmlv
dXNMYXlvdXRTaXplU2NhbGVGYWN0b3IgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5sYXlvdXRT
aXplU2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNl
ID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3Bv
cnQoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURl
dmljZVdpZHRoKTsKKyAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNlID0gbV92
aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoKSA/
IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoKTsKICAgICBpZiAoIW1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldFZpZXdMYXlvdXRTaXpl
KHNpemUsIHNjYWxlRmFjdG9yLCBXVEZNb3ZlKGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2aWNl
KSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ3OSw3ICszNDc5LDcgQEAgdm9pZCBXZWJQYWdl
OjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNp
emUsIGNvbnN0IFcKIAogICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8
PCAiV2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSBzZXR0aW5nIHZpZXcgbGF5b3V0
IHNpemUgdG8gIiA8PCB2aWV3TGF5b3V0U2l6ZSk7CiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZWQg
PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRJc0tub3duVG9MYXlPdXRXaWRlclRoYW5WaWV3
cG9ydChmYWxzZSk7Ci0gICAgdmlld3BvcnRDaGFuZ2VkIHw9IG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBXVEY6Om51bGxvcHQsIG1pbmlt
dW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CisgICAgdmlld3BvcnRDaGFuZ2VkIHw9IG1fdmlld3Bv
cnRDb25maWd1cmF0aW9uLnNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBzdGQ6Om51
bGxvcHQsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CiAgICAgaWYgKHZpZXdwb3J0Q2hh
bmdlZCkKICAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogCkBAIC0zOTI5
LDcgKzM5MjksNyBAQCBPcHRpb25hbDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNz
KGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mCiB7CiAgICAgYXV0byB0cmFuc2Fj
dGlvbklERm9yTGFzdFNjYWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8ubGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKICAgICBpZiAobV9sYXN0VHJhbnNh
Y3Rpb25JRFdpdGhTY2FsZUNoYW5nZSA+IHRyYW5zYWN0aW9uSURGb3JMYXN0U2NhbGVGcm9tVUlQ
cm9jZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgZmxvYXQgc2NhbGVGcm9tVUlQcm9jZXNzID0gdmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby5zY2FsZSgpOwogICAgIGZsb2F0IGN1cnJlbnRTY2FsZSA9IG1fcGFn
ZS0+cGFnZVNjYWxlRmFjdG9yKCk7CkBAIC0zOTQzLDcgKzM5NDMsNyBAQCBPcHRpb25hbDxmbG9h
dD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8mCiAgICAgCiAgICAgc2NhbGVGcm9tVUlQcm9jZXNzID0gc3RkOjptaW48ZmxvYXQ+
KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSgpLCBzdGQ6Om1heDxmbG9hdD4o
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCksIHNjYWxlRnJvbVVJUHJvY2Vz
cykpOwogICAgIGlmIChhcmVFc3NlbnRpYWxseUVxdWFsQXNGbG9hdChjdXJyZW50U2NhbGUsIHNj
YWxlRnJvbVVJUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2NhbGVGcm9tVUlQcm9jZXNzOwog
fQpAQCAtMzk5Miw3ICszOTkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAg
ICAgIG1fb2xkZXN0Tm9uU3RhYmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1RpbWVzdGFtcCA9
IG9sZGVzdFRpbWVzdGFtcDsKICAgICB9CiAKLSAgICBmbG9hdCBzY2FsZVRvVXNlID0gc2NhbGVG
cm9tVUlQcm9jZXNzLnZhbHVlT3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CisgICAgZmxv
YXQgc2NhbGVUb1VzZSA9IHNjYWxlRnJvbVVJUHJvY2Vzcy52YWx1ZV9vcihtX3BhZ2UtPnBhZ2VT
Y2FsZUZhY3RvcigpKTsKICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0ID0gdmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5leHBvc2VkQ29udGVudFJlY3QoKTsKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRFeHBvc2VkQ29udGVudFJlY3QgPSBhZGp1c3RFeHBvc2VkUmVjdEZvck5ld1Nj
YWxlKGV4cG9zZWRDb250ZW50UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5zY2Fs
ZSgpLCBzY2FsZVRvVXNlKTsKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2VkQ29udGVudFJl
Y3QoYWRqdXN0ZWRFeHBvc2VkQ29udGVudFJlY3QpOwpAQCAtNDA4MCw3ICs0MDgwLDcgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAgaWYgKHZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgIT0gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mby51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkpCiAg
ICAgICAgICAgICBmcmFtZVZpZXcuc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0
UmVjdCh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnVub2JzY3VyZWRDb250ZW50UmVjdFJl
c3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBm
cmFtZVZpZXcuc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgICAgIGZyYW1lVmlldy5zZXRWaXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om51
bGxvcHQpOwogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8
PCAiV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyAtIHNldExheW91dFZpZXdwb3J0
T3ZlcnJpZGVSZWN0ICIgPDwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5sYXlvdXRWaWV3
cG9ydFJlY3QoKSk7CiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRl
UmVjdChMYXlvdXRSZWN0KHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8ubGF5b3V0Vmlld3Bv
cnRSZWN0KCkpKTsKQEAgLTQyNzksNyArNDI3OSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
CiAgICAgLy8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFTY3JpcHQsIHdo
aWNoIGNhbiBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9uLgogICAgIFJl
ZjxGcmFtZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRvcigpLmluc2Vy
dFRleHRQbGFjZWhvbGRlcihzaXplKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhvbGRl
ciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxvcHQpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1lbnQoKnBsYWNl
aG9sZGVyKSA6IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVtb3ZlVGV4dFBs
YWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmNwcAppbmRleCBiNzAyZDc5MmE5OGY0NzEzYzM5NzAzMGM0ZDhhMGQxNjExYWNkMDA4
Li4xNjRjNGNjM2I2YTNkZTdmYmI2MTA5OTVjMTU4ZGExODg1NGI5MTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIERpc3BsYXlSZWZy
ZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJb
V2ViXSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2sgZm9y
IGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIC0gc3RhcnRpbmciKTsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklELCBkaXNwbGF5
SUQoKSwgbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkudmFsdWVPcihGdWxsU3Bl
ZWRGcmFtZXNQZXJTZWNvbmQpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpT
dGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCksIG1heENsaWVudFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZCgpLnZhbHVlX29yKEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkp
LCAwKTsKICAgICBpZiAoIW1fcnVuTG9vcE9ic2VydmVyKSB7CiAgICAgICAgIC8vIFRoZSBSdW5M
b29wT2JzZXJ2ZXIgcmVwZWF0cy4KICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIgPSBtYWtlVW5p
cXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDBhYzhiODc2MDczYzhjYTM5MWNmNjRjYWQ4MjcwMmUxNzY5NmY1ZTAuLjU3OWM0ZTg5NDkxZDJh
YTQ1ZmZlZWUwNDlhYjBlMjU2NDEyMTljYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC05NjAsNyArOTYwLDcgQEAgT3B0
aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBX
ZWJQYWdlOjpsb29rdXBUZXh0QXQKIHsKICAgICBhdXRvJiBtYWluRnJhbWUgPSBjb3JlUGFnZSgp
LT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZS52aWV3KCkgfHwgIW1haW5GcmFtZS52
aWV3KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEaWN0aW9uYXJ5TG9va3VwOjpy
YW5nZUF0SGl0VGVzdFJlc3VsdChtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMocm91
bmRlZEludFBvaW50KGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpKSwgewogICAgICAgICBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXgg
MzkxMzgzZDM2ZWU1ZjhlMGViYjA3ZWVlMjcyNmVjMjQ5ZDNkNTZjNC4uYTE0MjBhMThlYTZiYThi
NWU0YTQ1MzA4ZDE3NDk3Y2YyMmU1MzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAt
NTksMTIgKzU5LDEyIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElkCiAKIFJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVz
cGFjZShJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
TG9jYWwsIGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5
cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIG51bGxwdHIsIHF1b3RhSW5CeXRl
cykpOwogfQogCiBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNl
SW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsIFdURjo6bnVsbG9w
dCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsK
IH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBsKFdlYkNvcmU6
OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwg
Y29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCmluZGV4IGUwYjQyZTU2ODJhNGQ0NzAxZjk4MzdlNzI0NGU4ODM0NTg2NmQ5
OTkuLmI2MjFhNjJiYjU3YTJjMmI3MTNjYzUzYTZhOTY5NjZjZmNjZDM1NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIKICAgICBp
ZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVtZW50LT5k
aWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZU9yKFdlYkNvcmU6
OkZsb2F0U2l6ZSgpKSk7CisgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBp
Y3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUoKSkpOwogCiAg
ICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkgfHwgaW50ZXJmYWNlLT5mdWxs
c2NyZWVuU3RhbmRieSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA3MDIyMjdjMTkyYzMwNDEy
OTUzZWYxNGY3ZjYxMmU0ZTM0OWE5YjMwLi40MThhNGE1NzMxOTlmZTc3Yjc4YmZjZWIzNDRlNDVj
NDgzOWMzOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0
ZUNQVUxpbWl0KCkKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVlcygp
KSB7CiAgICAgICAgICAgICBhdXRvIHBhZ2VDUFVMaW1pdCA9IHBhZ2UtPmNwdUxpbWl0KCk7CiAg
ICAgICAgICAgICBpZiAoIXBhZ2VDUFVMaW1pdCkgewotICAgICAgICAgICAgICAgIGNwdUxpbWl0
ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIGNwdUxpbWl0ID0gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFjcHVMaW1pdCB8fCBwYWdlQ1BVTGltaXQgPiBjcHVMaW1pdC52YWx1ZSgpKQpAQCAtODQwLDcg
Kzg0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0
b3JVcGRhdGVSZWFzb24gcmVhc29uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIW1fY3B1
TGltaXQpIHsKICAgICAgICAgaWYgKG1fY3B1TW9uaXRvcikKLSAgICAgICAgICAgIG1fY3B1TW9u
aXRvci0+c2V0Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1fY3B1TW9uaXRv
ci0+c2V0Q1BVTGltaXQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRl
KENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0gZWxzZSBpZiAocmVhc29uID09
IENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlIYXNDaGFuZ2VkKSB7CiAgICAgICAg
IC8vIElmIHRoZSB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkLCBzdG9wIHRoZSBDUFUgbW9uaXRvciBi
ZWZvcmUgc2V0dGluZyBpdHMgbGltaXQuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIENQVSB1
c2FnZSBjYW4gdmFyeSB3aWxkbHkgYmFzZWQgb24gdmlzaWJpbGl0eSBhbmQgd2Ugd291bGQKICAg
ICAgICAgLy8gbm90IHdhbnQgdG8gcmVwb3J0IHRoYXQgYSBwcm9jZXNzIGhhcyBleGNlZWRlZCBp
dHMgYmFja2dyb3VuZCBDUFUgbGltaXQgZXZlbiB0aG91Z2ggbW9zdCBvZiB0aGUgQ1BVIHRpbWUg
d2FzIHVzZWQgd2hpbGUgdGhlIHByb2Nlc3Mgd2FzIHZpc2libGUuCi0gICAgICAgIG1fY3B1TW9u
aXRvci0+c2V0Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jcHVNb25pdG9yLT5z
ZXRDUFVMaW1pdChzdGQ6Om51bGxvcHQpOwogICAgIH0KICAgICBtX2NwdU1vbml0b3ItPnNldENQ
VUxpbWl0KG1fY3B1TGltaXQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCBjZmVjZjBh
MDUzODAyOTM1MjVmOGZmYzA1MWNmYzZlYzBiMmU5ZThmLi41YjgxMzMyNTMzZjY5ZWU2ZjhiNWU2
MDVhMjRjYjUyN2IzZGEyMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Z2xpYi9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENv
bnN0cmFpbnRzKFdlYkNvcmU6Ok1lZGlhCiAgICAgfTsKIAogICAgIGF1dG8gdmFsaWRIYW5kbGVy
ID0gW3RoaXNdKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywgVmVjdG9yPENh
cHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVySGFz
aFNhbHQpIG11dGFibGUgewotICAgICAgICBtX3ZhbGlkYXRlVXNlck1lZGlhUmVxdWVzdENvbnN0
cmFpbnRzQ2FsbGJhY2soV1RGOjpudWxsb3B0LCBhdWRpb0RldmljZXMsIHZpZGVvRGV2aWNlcywg
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICAgICAgbV92YWxpZGF0ZVVzZXJNZWRpYVJl
cXVlc3RDb25zdHJhaW50c0NhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgYXVkaW9EZXZpY2VzLCB2aWRl
b0RldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAgICAgfTsKIAogICAgIFJlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVxdWVzdENvbnN0cmFp
bnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlkSGFuZGxlciksIHJlcXVl
c3QsIFdURk1vdmUoaGFzaFNhbHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDFkZThlNDY4ODFmY2MxMTNhNmJmYmJlNDBhODlkYjRl
NWY0MDY1ODQuLmVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtNjQw
LDcgKzY0MCw3IEBAIHVpbnQ2NF90IFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAocGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVl
T3IoMCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDAp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkubW0KaW5kZXggZGRiYTQyNjU0ZDYyY2YwZWEwNTJiNmQwZjE1YmQwYjczZDE2
ZTEzYi4uOWIxMDJmMWU0MmJkZTA1MTkwZTk1ZWM1ZTk3MDRhOTlmYTlhZmFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9z
dGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODgzLDcgKzg4Myw3IEBAIGJv
b2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50MzJfdCBvYmplY3RJ
RCwgY29uc3QgU3RyaW5nJiBzY3JpCiAKICAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IGdsb2Jh
bE9iamVjdCh2bSwgZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKSk7
CiAKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBz
ID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJ
bmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0
ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC5nZXQoKSwgSlNDOjptYWtl
U291cmNlKHNjcmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDhmZmYyNDVl
MTY4ZDM0YWRiZWRiMDJkNDc0OGY5Y2I4NzExMDc3YjYuLmU0OTRmYzdkZmI2YjliYTQ2Mjc4ODcz
OTM0YjA4YjUwZDA4MjNkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNjMsNyArMzYzLDcgQEAg
LSAoQk9PTClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wpZXZlbnRJc0Ry
YXdSZWN0CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAgICAgSlNDOjpK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9uVk0oKSk7Ci0gICAgICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxlci0+Y3VycmVu
dEV2ZW50SXNVc2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAgICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRF
dmVudElzVXNlckdlc3R1cmUoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKICAgICAgICAgYWNjZXB0
ZWRFdmVudCA9IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc10tPmV2ZW50KHBsdWdp
biwgZXZlbnQpOwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rpb25dOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1Y2JkZmIwYzQzNGEyNWZhMTdhN2IxMTg1NjMw
NjgzNjIzMTkwYmM5Li43MmE1Mjg5ZDBmNmFkZmIwNTk1NGUwYWRhZGYzYThmZmE0NTcxZmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA3LDEyICsyMDcsMTIgQEAgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkK
IAogT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGlu
YXRvckNsaWVudC5tbQppbmRleCBjZmM0NDQ1MmVmMjNhYmY4Njc4NTNkN2MzMDdjM2NkMzg1NWNk
ZGRiLi40YTFiYTNjNjdhZWY3NjUxMDBmY2ExMjM1MjFjOThkZGExZjUwZTI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRp
bmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00MSw3ICs0MSw3IEBAIFdlYlBh
eW1lbnRDb29yZGluYXRvckNsaWVudDo6fldlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCgpCiAK
IE9wdGlvbmFsPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojp2YWxpZGF0ZWRQ
YXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBXZWJQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDJk
NDE0MWVkYjIxOTYxOTYxNzgyOTc2ODAxZTBhZjEzMzM2ODAyMGIuLmI1MjViYjBkOGI0ODUxY2Qx
YWE1MzMyNzk3OWQxMDY0ZjZlZWU3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBAIC05Miw3
ICs5Miw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWduZWQgc2hvcnQp
cG9ydAogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3By
aXZhdGUpLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxT
ZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwogfQogCiAvLyBG
SVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFzaCB3aWxsIGNh
dXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBpcyB0aGUga2V5
IGluIGFuIE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IDYzMzc2ZTY4OGFmYmFlOWNj
YzZhOGI0NGVhNTMxOTUwNjE2YzgwNWMuLjdkMTJiZTY2YmM1ZDI4MTNhNjBjY2JhYmNmZDljMDVl
OTk5MjFiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtNjMsNyArNjMsNyBAQCBEZXZpY2VPcmllbnRh
dGlvbkRhdGEqIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9uKQogc3RhdGlj
IE9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJsZSB2YWx1ZSkK
IHsKICAgICBpZiAoIWNhblByb3ZpZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC03
NSw5ICs3NSw5IEBAIC0gKGlkKWluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOihib29sKWNhblByb3Zp
ZGVBbHBoYSBhbHBoYTooZG91YmxlKWFscGhhIGNhblByb3ZpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBXZSBkb24ndCB1c2UgdGhpcyBBUEksIGJ1dCBtYWtlIHN1cmUgdGhhdCBp
dCBjb21waWxlcyB3aXRoIHRoZSBuZXcKICAgICAvLyBjb21wYXNzIHBhcmFtZXRlcnMuCi0gICAg
bV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxvY10gaW5pdFdp
dGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoY29u
dmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Qcm92aWRlQmV0YSwgYmV0
YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KV07CisgICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5h
bCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25E
YXRhOjpjcmVhdGUoY29udmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Q
cm92aWRlQmV0YSwgYmV0YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0KV07CiAjZWxzZQotICAgIG1faW50ZXJuYWwgPSBbW1dlYkRl
dmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0
aW9uOkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJvdmlkZUFscGhh
LCBhbHBoYSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0KGNhblByb3Zp
ZGVHYW1tYSwgZ2FtbWEpLCBXVEY6Om51bGxvcHQpXTsKKyAgICBtX2ludGVybmFsID0gW1tXZWJE
ZXZpY2VPcmllbnRhdGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRh
dGlvbjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShjb252ZXJ0KGNhblByb3ZpZGVBbHBo
YSwgYWxwaGEpLCBjb252ZXJ0KGNhblByb3ZpZGVCZXRhLCBiZXRhKSwgY29udmVydChjYW5Qcm92
aWRlR2FtbWEsIGdhbW1hKSwgc3RkOjpudWxsb3B0KV07CiAjZW5kaWYKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4
IDk1YmRhMzkwY2E2OWJhNmI5NjIwZjUxYmVlNjk2YjIxMjM5YWIxNGQuLjYxOTlhOGM0N2I0YjBm
ZWY0ZTliMjM1MDRiMjQ5MjM1NDViMmNkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODEyLDcgKzgxMiw3IEBAIC0gKE9wdGlvbmFsPFdlYkNv
cmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNyYW5nZQogLSAo
T3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5n
ZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8pcmFuZ2VJc1Jl
bGF0aXZlVG8KIHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVUbzo6RWRpdGFi
bGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRoYXQgdGhp
cyBjb2RlIHBhdGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0CkBAIC04MjMs
NyArODIzLDcgQEAgLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9E
T01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXQKICAgICAgICAgLy8gVGhhdCBmaXRz
IHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgICAgICBhdXRvKiBl
bGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxl
bWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKTsKICAgICB9CiAKQEAgLTgzMSw3ICs4MzEs
NyBAQCAtIChPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdl
OihOU1JhbmdlKXJhbmdlIHJhbmdlSXNSZWxhdAogCiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9
IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNvcmVGcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBhcmFn
cmFwaFN0YXJ0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzY29wZUVuZCA9IG1ha2VCb3VuZGFyeVBvaW50QWZ0
ZXJOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCkucm9v
dE5vZGUoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7IFdU
Rk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBv
c2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLm1tCmluZGV4IDVkYmZkMzU1YTg1Yzk3ZTAyOWJlNTFmNzQ1NzU1ZDMxNWQ0MGU5
MmQuLjQzYzQ3Y2UxYzU0NTlmYTBlNzkwMjUxYmIyYzljODQzYWQ1YTg2MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9z
aXRpb24ubW0KQEAgLTU5LDcgKzU5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24KIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHBvc2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNjFkNmY0ZTg2NTk0
ZGNhYjdlNjE3OTA3MDRiNzA5ZWY1Y2NjMmJlMC4uMDg0YWI3MzE0Zjk0MzZlZjEzNDgxNDE4Mzdl
YTJlNjljZGY2NjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCkBAIC00MjksNyArNDI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogICAgIGNhc2UgV2Vi
TWVudUl0ZW1UYWdUcmFuc2xhdGU6CiAgICAgICAgIHJldHVybiBDb250ZXh0TWVudUl0ZW1UYWdU
cmFuc2xhdGU7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoV2ViQ29y
ZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQpAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBP
cHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlv
bikKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb246Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c6CiAgICAgICAgIHJldHVybiBXZWJNZW51
SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c7CkBAIC02MDksNyArNjA5LDcgQEAgc3RhdGljIE9w
dGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9u
KQogICAgICAgICByZXR1cm4gV2ViTWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxzY3JlZW47CiAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1cnJlbnRHcm91cDoKICAg
ICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXA6Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnU6CiAgICAgICAgIHJldHVybiBXZWJNZW51
SXRlbVRhZ1NoYXJlTWVudTsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZVZpZGVv
RW5oYW5jZWRGdWxsc2NyZWVuOgpAQCAtNjE3LDcgKzYxNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxO
U0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZToKICAgICAgICAgcmV0dXJuIFdlYk1lbnVJ
dGVtVGFnVHJhbnNsYXRlOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmV2ZWFsSW1hZ2U6
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBjYXNlIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgLi4uIENvbnRleHRN
ZW51SXRlbUxhc3RDdXN0b21UYWc6CiAgICAgICAgIC8vIFdlIGp1c3QgcGFzcyB0aGVzZSB0aHJv
dWdoLgpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFn
KFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBAaW1wbGVtZW50YXRpb24gV2ViTWVudVRhcmdldApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDMwMTBhNmE4OGI5NTdj
OTA3NzkxNDY4ODhjNjY4OTNjNGI1ZDdiMTcuLjFiYWQzZjhhZjY5NjIwYmNkNTMwYzBlYmY5NzMy
YmIzNWMzYjNkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTU2ODIsNyArNTY4Miw3IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogLSAo
dm9pZClkb1dpbmRvd0RpZENoYW5nZVNjcmVlbgogewogICAgIGlmIChfcHJpdmF0ZSAmJiBfcHJp
dmF0ZS0+cGFnZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndpbmRvd1NjcmVl
bkRpZENoYW5nZShXZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVuKSwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndpbmRvd1NjcmVlbkRp
ZENoYW5nZShXZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVuKSwgc3RkOjpudWxs
b3B0KTsKIH0KIAogLSAodm9pZClfd2luZG93Q2hhbmdlZEtleVN0YXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4
IGY2MzNjMzRhMTM0YjBiNjViZThhYTExYjY1NmIzZmU5MGUyMWUwNjIuLjg0MjcwODFjYWM5YTdk
MDhlN2JmMTY3MDM1OTdiODRmM2EwOTc3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0xMzQsNyArMTM0LDcg
QEAgc3RhdGljIGlubGluZSBWZWN0b3I8aW50PiBwYXJzZVZlcnNpb25TdHJpbmcoY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uU3RyaW5nKQogICAgICAgICBmb3IgKGVuZFBvcyA9IHN0YXJ0UG9zOyBlbmRQ
b3MgPCB2ZXJzaW9uU3RyaW5nLmxlbmd0aCgpOyArK2VuZFBvcykKICAgICAgICAgICAgIGlmICh2
ZXJzaW9uU3RyaW5nW2VuZFBvc10gPT0gJy4nIHx8IHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAn
XycpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHZlcnNpb24uYXBwZW5kKHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJp
bmcgfS5zdWJzdHJpbmcoc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVPcigwKSk7
CisgICAgICAgIHZlcnNpb24uYXBwZW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJzdHJpbmcoc3RhcnRQb3MsIGVu
ZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVfb3IoMCkpOwogICAgICAgICBzdGFydFBvcyA9IGVuZFBv
cyArIDE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBlMzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjliYjllMDMwN2E2
Li5jMGM0MDU3ZjZiZWY4M2M4MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVl
c3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5n
SWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6
Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVx
dWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKIAogICAgIGlm
IChqc1N0cmluZy5pc051bGwoKSkgewogICAgICAgICAvLyBpZiB0aGlzIGlzIG5vdCBhIHRhcmdl
dGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwKQEAgLTEwNzIs
NyArMTA3Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdChjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuCiAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbnRlbnRMZW5ndGggPSBoZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250
ZW50TGVuZ3RoKTsKIAogICAgICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0aC5pc051bGwo
KSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52YWx1ZU9yKDAp
LCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWlu
KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3Ro
KS52YWx1ZV9vcigwKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGRz
LnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAgICAgICAgICAg
ICBwb3N0RGF0YSArPSBsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCAwZTY2OTA4MjdmODBhYjE3ZTNlMzBiN2UyYTg5MjVkMTM3YzY2ZDM1Li5hNzMxOTY4MjEwY2Q3
MDljNTM4YmIyMzFmM2E1NTFlNTZiYTc0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0xMjAsMTIgKzEyMCwxMiBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1l
TG9hZGVyQ2xpZW50KCkKIAogT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcAppbmRleCA3MjFmYzkwODRiZjY4MzE1Njg0NmQ2MmE0NmUxNThjMmNi
ZjZlMzJkLi4zOGNhMTcxY2M2Yjg4MmE0ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgT3B0aW9uYWw8R2Vv
bG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24o
KQogewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlkZXI7CiAgICAg
aWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3ZpZGVyKSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsKICAgICBpZiAo
RkFJTEVEKHByb3ZpZGVyLT5sYXN0UG9zaXRpb24oJnBvc2l0aW9uKSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGU2MGViMjFmZGMwMTYyMTVlNzYy
ZWY5MDM4ZjNkNDU5ZDBiNDczYWIuLmQ2NGU3NmE4NTY1OTIwNDIxYTE4YjQ2ZGE4ZDE1NGUyYTAw
MWVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uY3BwCkBAIC04NiwxMSArODYsMTEgQEAgSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBv
c2l0aW9uOjppbml0V2l0aFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1wLCBkb3VibGUgbGF0aXQK
IE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9sb2NhdGlvblBv
c2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ09NUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24oUXVlcnksIHBv
c2l0aW9uKTsKICAgICBpZiAoIXdlYkdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDU3Y2E4MGUxNzNkZDliNTMyNWY5
MmYzNDlmYTg5NGQxYWU2NDI2ODQuLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2
YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KF9P
dXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdpbi0+cG9ydCgp
LnZhbHVlT3IoMCk7CisgICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1
ZV9vcigwKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMwNjhmMmM2NDcxNjQyZWJhNWE4YTI2ZmQ0YmVi
NWQ1YmJlOTg3YjguLjdlNWY3Y2ZlODc0ZDQ4YTU5YTBkYzM0Nzg0N2YwMDEzYmFhNzgyYWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0wNS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3Rl
YWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZTog
VXNlIHNjcmlwdCB0byByZW5hbWUgdmFsdWVPciwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHRf
dCwKKyAgICAgICAgV1RGOjpPcHRpb25hbCwgV1RGOjptYWtlT3B0aW9uYWwsIGFuZCBtYWtlT3B0
aW9uYWwuIE90aGVyIHJlbmFtaW5ncyBjYW4ndCBuZWNlc3NhcmlseQorICAgICAgICBiZSBkb25l
IGJ5IHRoZSBzY3JpcHQgYW5kIHNvIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXNzZXMuCisKKyAg
ICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJj
b3JlLXJlbmFtZS4KKwogMjAyMS0wNS0yNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgTWVkaWFTZXNzaW9uIHJlYWR5c3RhdGUgZW51bXMgYWxsIGxv
d2VyY2FzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rv
b2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKaW5kZXggMmE5MWU1N2U1YWYwNThmMTFlZTNi
MTBmNGM4YmY1Y2U5NjgyMmM0My4uMjUyMDQ1ZDVhNjg5MDQzODBhNTRjOWJiNjE1Nzc0MzFjMTk4
ZDI2NyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9U
b29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBzdWIg
d2FudGVkCiBteSAkaXNET01UeXBlUmVuYW1lID0gMDsKIG15ICVyZW5hbWVzID0gKAogICAgICMg
UmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAgICJEcmFnT3BlcmF0aW9uQ29weSIg
PT4gIkRyYWdPcGVyYXRpb246OkNvcHkiLAotICAgICJEcmFnT3BlcmF0aW9uTGluayIgPT4gIkRy
YWdPcGVyYXRpb246OkxpbmsiLAotICAgICJEcmFnT3BlcmF0aW9uR2VuZXJpYyIgPT4gIkRyYWdP
cGVyYXRpb246OkdlbmVyaWMiLAotICAgICJEcmFnT3BlcmF0aW9uUHJpdmF0ZSIgPT4gIkRyYWdP
cGVyYXRpb246OlByaXZhdGUiLAotICAgICJEcmFnT3BlcmF0aW9uTW92ZSIgPT4gIkRyYWdPcGVy
YXRpb246Ok1vdmUiLAotICAgICJEcmFnT3BlcmF0aW9uRGVsZXRlIiA9PiAiRHJhZ09wZXJhdGlv
bjo6RGVsZXRlIiwKKyAgICAidmFsdWVPciIgPT4gInZhbHVlX29yIiwKKyAgICAiV1RGOjpudWxs
b3B0IiA9PiAic3RkOjpudWxsb3B0IiwKKyAgICAiV1RGOjpudWxsb3B0X3QiID0+ICJzdGQ6Om51
bGxvcHRfdCIsCisgICAgIldURjo6T3B0aW9uYWwiID0+ICJzdGQ6Om9wdGlvbmFsIiwKKyAgICAi
V1RGOjptYWtlT3B0aW9uYWwiID0+ICJzdGQ6Om1ha2Vfb3B0aW9uYWwiLAorICAgICJtYWtlT3B0
aW9uYWwiID0+ICJzdGQ6Om1ha2Vfb3B0aW9uYWwiLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1w
bGF0ZWRGb3JUaGVGdXR1cmUgPSAoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1RD
UFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKaW5kZXggMDA0
YjJkYTAzYTk1YTNmZGNhMGNmNzg2ZDI5MGQ2NWExZGVjMTdmYS4uNjZkN2VhZTM5MmYwNTkxMGI3
MDk0YWM5NDYzZmFiMGE4ZTkyMmQzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
Q1BTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcApAQCAt
MjYzLDcgKzI2Myw3IEBAIGF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBj
b25uZWN0aW9ucykgLT4gT3B0aW9uYWw8U29ja2V0PgogewogICAgIFNvY2tldCBsaXN0ZW5pbmdT
b2NrZXQgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwogICAgIGlmIChsaXN0ZW5p
bmdTb2NrZXQgPT0gLTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gUG9ydHMgNDkxNTItNjU1MzUgYXJlIHVu
YWxsb2NhdGVkIHBvcnRzLiBUcnkgdW50aWwgd2UgZmluZCBvbmUgdGhhdCdzIGZyZWUuCiAgICAg
Zm9yIChQb3J0IHBvcnQgPSA0OTE1MjsgcG9ydDsgcG9ydCsrKSB7CkBAIC0yNzksNyArMjc5LDcg
QEAgYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAt
PiBPcHRpb25hbDxTb2NrZXQ+CiAgICAgICAgIGlmIChsaXN0ZW4obGlzdGVuaW5nU29ja2V0LCBj
b25uZWN0aW9ucykgPT0gLTEpIHsKICAgICAgICAgICAgIC8vIExpc3RlbmluZyBmYWlsZWQuCiAg
ICAgICAgICAgICBjbG9zZShsaXN0ZW5pbmdTb2NrZXQpOwotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0K
ICAgICAgICAgbV9wb3J0ID0gcG9ydDsKICAgICAgICAgcmV0dXJuIGxpc3RlbmluZ1NvY2tldDsg
Ly8gU3VjY2Vzc2Z1bGx5IHNldCB1cCBsaXN0ZW5pbmcgcG9ydC4KQEAgLTI4Nyw3ICsyODcsNyBA
QCBhdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMpIC0+
IE9wdGlvbmFsPFNvY2tldD4KICAgICAKICAgICAvLyBDb3VsZG4ndCBmaW5kIGFuIGF2YWlsYWJs
ZSBwb3J0LgogICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IFZlY3Rvcjx1
aW50OF90PiBUQ1BTZXJ2ZXI6OnJlYWQoU29ja2V0IHNvY2tldCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZl
ci5oCmluZGV4IDkwZTJlMzE4YjBmMmE0ZGE4YWRkYzRjMjExM2Q5YmRlMjY4ZTY2MGYuLjMzNjRh
Y2QzZTE4NjU2MDJhY2RjMDVhZWNiZjI1Y2I2N2NkMTcwNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVENQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6
IHVpbnQ4X3QgewogICAgICAgICBIVFRQUywgSFRUUFNQcm94eSwgSFRUUFNXaXRoQ2xpZW50Q2Vy
dGlmaWNhdGVSZXF1ZXN0CiAgICAgfTsKLSAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9u
PHZvaWQoU1NMKik+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gV1RGOjpu
dWxsb3B0LCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKKyAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2ws
IEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9u
ID0gc3RkOjpudWxsb3B0LCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKICNlbmRpZiAvLyBIQVZF
KFNTTCkKICAgICB+VENQU2VydmVyKCk7CiAgICAgCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoK
ICAgICAKICNpZiBIQVZFKFNTTCkKICAgICBzdGF0aWMgdm9pZCByZXNwb25kV2l0aE9LKFNTTCop
OwotICAgIHN0YXRpYyB2b2lkIHN0YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQsIEZ1bmN0aW9u
PHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENsaWVu
dENlcnRpZmljYXRlID0gZmFsc2UsIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0g
V1RGOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgdm9pZCBzdGFydFNlY3VyZUNvbm5lY3Rpb24oU29j
a2V0LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBib29s
IHJlcXVlc3RDbGllbnRDZXJ0aWZpY2F0ZSA9IGZhbHNlLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4
VExTVmVyc2lvbiA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAgICBzdGF0aWMgdm9pZCByZXNw
b25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9GdW5jdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9GdW5jdGlvbi5jcHAKaW5kZXggZmNmOGU2YmIzOGEyZDNiZjUwNTJlYjUyMzU3OGVk
MzE4OTM4MWQ5MC4uMGQ1OWQzZWJiNDAzMmU4MGI5ODQ3NWNmYjUxN2ExMGI5ZTZkZWE0YyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcApAQCAtMjA5LDggKzIw
OSw4IEBAIFRFU1QoV1RGX0Z1bmN0aW9uLCBBc3NpZ25CZWZvcmVEZXN0cm95KQogICAgIEVYUEVD
VF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5j
dGlvblJlc3VsdCkpOwogICAgIEVYUEVDVF9UUlVFKEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2Vy
OjpmdW5jdGlvbkFzQm9vbC52YWx1ZSgpKTsKICAgICBFWFBFQ1RfRVEoMVUsIEZ1bmN0aW9uRGVz
dHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3VsdC52YWx1ZSgpKTsKLSAgICBGdW5jdGlvbkRl
c3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25Bc0Jvb2wgPSBXVEY6Om51bGxvcHQ7Ci0gICAgRnVu
Y3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0ID0gV1RGOjpudWxsb3B0Owor
ICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IHN0ZDo6bnVs
bG9wdDsKKyAgICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhID0gRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXIoYSk7CiAg
ICAgYSA9IE1vdmVPbmx5IHsgMiB9OwpAQCAtMjE4LDggKzIxOCw4IEBAIFRFU1QoV1RGX0Z1bmN0
aW9uLCBBc3NpZ25CZWZvcmVEZXN0cm95KQogICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJv
b2w+KEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3VsdCkpOwogICAgIEVY
UEVDVF9UUlVFKEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbC52YWx1
ZSgpKTsKICAgICBFWFBFQ1RfRVEoMlUsIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5j
dGlvblJlc3VsdC52YWx1ZSgpKTsKLSAgICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVu
Y3Rpb25Bc0Jvb2wgPSBXVEY6Om51bGxvcHQ7Ci0gICAgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNr
ZXI6OmZ1bmN0aW9uUmVzdWx0ID0gV1RGOjpudWxsb3B0OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rp
b25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBGdW5jdGlvbkRl
c3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0
YXRpYyBpbnQgcmV0dXJuVGhyZWUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvSGFzaGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hl
ci5jcHAKaW5kZXggNDE3ZjY0YjAyZDMwYzY4YTljMzU1ZDk3OTc1ZWU3MjBiYTIxZjYwYS4uMGU3
NzAzZTZmMzBkZDAyNWM3NTBmNTM1OGM4MmUyNTQxYzg4NjYxZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChXVEYsIEhh
c2hlcl9tdWx0aXBsZSkKICAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2go
c3RkOjphcnJheTxpbnQsIDE+IHsgeyAwIH0gfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRI
YXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50PiB7IDAgfSkpOwogICAgIEVYUEVDVF9FUSh6ZXJv
MzJCaXRIYXNoLCBjb21wdXRlSGFzaChWZWN0b3I8aW50LCAxPiB7IDAgfSkpOwotICAgIEVYUEVD
VF9FUSh6ZXJvMzJCaXRIYXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgV1RGOjpudWxs
b3B0IH0pKTsKKyAgICBFWFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goT3B0aW9u
YWw8aW50PiB7IHN0ZDo6bnVsbG9wdCB9KSk7CiAgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gs
IGNvbXB1dGVIYXNoKHN0ZDo6bWFrZV90dXBsZSgwKSkpOwogCiAgICAgRVhQRUNUX0VRKG9uZTY0
Qml0SGFzaCwgY29tcHV0ZUhhc2goMSwgMCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvTWFya2FibGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvTWFya2FibGUuY3BwCmluZGV4IGI5MzU1NzUyMjhkYjkyNTI1YWVmZTMyMzkyMjM0OWQ0OGVh
MmRmN2IuLjViN2UxNTMxN2NiZmU5YjYzZGUzOGY0YWQwNzlkZGU4NzVjNGI4MjggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAg
VEVTVChXVEZfTWFya2FibGUsIERpc2VuZ2FnZWQpCiAgICAgfQogCiAgICAgewotICAgICAgICBN
YXJrYWJsZTxpbnQsIEludGVncmFsTWFya2FibGVUcmFpdHM8aW50LCA0Mj4+IG9wdGlvbmFsIHsg
V1RGOjpudWxsb3B0IH07CisgICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRy
YWl0czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBzdGQ6Om51bGxvcHQgfTsKIAogICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKICAgICB9CkBAIC01Nyw3ICs1
Nyw3IEBAIFRFU1QoV1RGX01hcmthYmxlLCBFbmdhZ2VkKQogICAgICAgICBFWFBFQ1RfVFJVRShz
dGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwogICAgICAgICBFWFBFQ1RfRVEoNDEsIG9wdGlv
bmFsLnZhbHVlKCkpOwogCi0gICAgICAgIG9wdGlvbmFsID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19j
YXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAKICAgICAgICAgb3B0aW9uYWwgPSA0MjsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1RvSW50ZWdlckNvbnZlcnNp
b24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5jcHAKaW5kZXggYjRjNmM5ZTlmYmNmOWRmZTQ5OGI1NTYwZTg3NWU3Y2VhMGQxYzdk
ZS4uZDMxNjBkYWQ2NGM3MTMxYTI1OGM4ZDY3MmM4MjMxOTJmMDk5YTcwZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVG9JbnRlZ2VyQ29u
dmVyc2lvbi5jcHAKQEAgLTMwLDggKzMwLDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBURVNUKFdURiwgUGFyc2VJbnRlZ2VyKQogewotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQs
IHBhcnNlSW50ZWdlcjxpbnQ+KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihudWxscHRyKSkpOwot
ICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIiKSk7CisgICAg
RVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG51bGxwdHIpKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyPGludD4oIiIpKTsKICAgICBFWFBFQ1RfRVEoMCwgcGFyc2VJbnRlZ2VyPGludD4oIjAi
KSk7CiAgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxIikpOwogICAgIEVYUEVD
VF9FUSgzLCBwYXJzZUludGVnZXI8aW50PigiMyIpKTsKQEAgLTM5LDI2ICszOSwyNiBAQCBURVNU
KFdURiwgUGFyc2VJbnRlZ2VyKQogICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyPGlu
dD4oIjEyMzQ1IikpOwogICAgIEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlcjxpbnQ+KCIt
MTIzNDUiKSk7CiAgICAgRVhQRUNUX0VRKDIxNDc0ODM2NDcsIHBhcnNlSW50ZWdlcjxpbnQ+KCIy
MTQ3NDgzNjQ3IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxp
bnQ+KCIyMTQ3NDgzNjQ4IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50
ZWdlcjxpbnQ+KCIyMTQ3NDgzNjQ4IikpOwogICAgIEVYUEVDVF9FUSgtMjE0NzQ4MzY0NyAtIDEs
IHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiLTIxNDc0ODM2NDkiKSk7Ci0gICAgRVhQRUNUX0VR
KFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIngxIikpOworICAgIEVYUEVDVF9FUShz
dGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBF
Q1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigieDEiKSk7CiAgICAgRVhQRUNU
X0VRKDEsIHBhcnNlSW50ZWdlcjxpbnQ+KCIgMSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxs
b3B0LCBwYXJzZUludGVnZXI8aW50PigiMXgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyPGludD4oIjF4IikpOwogCiAgICAgRVhQRUNUX0VRKDBVLCAwVSArICpw
YXJzZUludGVnZXI8dWludDE2X3Q+KCIwIikpOwogICAgIEVYUEVDVF9FUSgzVSwgMFUgKyAqcGFy
c2VJbnRlZ2VyPHVpbnQxNl90PigiMyIpKTsKICAgICBFWFBFQ1RfRVEoMTIzNDVVLCAwVSArICpw
YXJzZUludGVnZXI8dWludDE2X3Q+KCIxMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoNjU1MzVVLCAw
VSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RG
OjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKLSAgICBFWFBFQ1RfRVEo
V1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsKLSAgICBFWFBFQ1Rf
RVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUzNiIpKTsKKyAgICBF
WFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMSIpKTsKKyAg
ICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCItMyIpKTsK
KyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8dWludDE2X3Q+KCI2NTUz
NiIpKTsKIH0KIAogVEVTVChXVEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQog
ewotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7Ci0gICAgRVhQ
RUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigiIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KG51bGxwdHIpKSk7Cisg
ICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50PigiIikpOwogICAgIEVYUEVDVF9FUSgwLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazxpbnQ+KCIwIikpOwogICAgIEVYUEVDVF9FUSgxLCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIxIikpOwogICAgIEVYUEVDVF9FUSgzLCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIzIikpOwpAQCAtNjYsMTAgKzY2LDEwIEBAIFRFU1Qo
V1RGLCBQYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuaykKICAgICBFWFBFQ1RfRVEoMTIz
NDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEyMzQ1IikpOwogICAg
IEVYUEVDVF9FUSgtMTIzNDUsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
Ii0xMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0NyIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpu
dWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ4
IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPGludD4oIjIxNDc0ODM2NDgiKSk7CiAgICAgRVhQRUNUX0VRKC0yMTQ3NDgzNjQ3
IC0gMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDgi
KSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8aW50PigiLTIxNDc0ODM2NDkiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigieDEiKSk7CisgICAgRVhQ
RUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigiLTIxNDc0ODM2NDkiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigieDEiKSk7CiAgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIiAxIikpOwogICAgIEVYUEVDVF9F
USgxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIxeCIpKTsKIApAQCAt
NzcsOSArNzcsOSBAQCBURVNUKFdURiwgUGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bmsp
CiAgICAgRVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50MTZfdD4oIjMiKSk7CiAgICAgRVhQRUNUX0VRKDEyMzQ1VSwgMFUgKyAqcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCIxMjM0NSIpKTsKICAgICBFWFBFQ1Rf
RVEoNjU1MzVVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZf
dD4oIjY1NTM1IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTEiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6
bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMyIp
KTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oIjY1NTM2IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQs
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiLTEiKSk7CisgICAg
RVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
dWludDE2X3Q+KCItMyIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjY1NTM2IikpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9VUkxQYXJzZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
UGFyc2VyLmNwcAppbmRleCA1ZmMzOTMzYTI0OWIwNTI1MjA5ZTk3MWYxYjUxMjc4MzExNWY0N2Qy
Li45ODFmMmQ3MGMzYjMwZmYyZDFkMWYwOTNlZGU0ODFiOTE3N2MzY2VhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVk
UGFydHMmIHBhcnRzLCBUZXN0VGEKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwu
dXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29y
ZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVD
VF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
cXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQs
IHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyB2
b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTFN0cmluCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFzc3dvcmQoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBF
Q1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEo
cGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5
LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmZyYWdtZW50LCB1cmwu
ZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBj
aGVja1VSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBFeHBlY3Rl
ZFBhcnRzJiBwYQogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAg
RVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQ
RUNUX0VRKHBhcnRzTmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xNzksNyArMTc5
LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIGIKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGFzc3dv
cmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwg
dXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVl
X29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKaW5kZXggMjJjZWNh
NTdlNWEwNGJiZTBhN2IwNDdlNDliNmNkMTRjOWEwMWViZS4uZmRhYmE5NDcwMzk1ZWE4MDE5ODUw
ZThmYjhhZWEwOWFmZTM3YWY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0
b3IuY3BwCkBAIC04OTgsMTAgKzg5OCwxMCBAQCBURVNUKFdURl9WZWN0b3IsIE1hcEZyb21IYXNo
TWFwKQogCiB9CiAKLVdURjo6T3B0aW9uYWw8aW50PiBldmVuTXVsdGlwbGllZEJ5Rml2ZShpbnQg
aW5wdXQpCitzdGQ6Om9wdGlvbmFsPGludD4gZXZlbk11bHRpcGxpZWRCeUZpdmUoaW50IGlucHV0
KQogewogICAgIGlmIChpbnB1dCAlIDIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGlucHV0ICogNTsKIH0KIApA
QCAtOTY1LDcgKzk2NSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0
aW9uUmV0dXJuUmVmUHRyKQogT3B0aW9uYWw8UmVmPFJlZkNvdW50ZWRPYmplY3Q+PiBjcmVhdGVS
ZWZDb3VudGVkRm9yRXZlbihpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gUmVmQ291bnRlZE9iamVjdDo6Y3JlYXRlKGlucHV0KTsKIH0KIApAQCAtOTg3LDcg
Kzk4Nyw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgQ29tcGFjdE1hcFN0YXRpY0Z1bmN0aW9uUmV0dXJu
T3B0aW9uYWxSZWYpCiBPcHRpb25hbDxSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4+IGNyZWF0ZVJl
ZkNvdW50ZWRXaGVuRGl2aXNpYmxlQnlUaHJlZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0
ICUgMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoaW5wdXQgJSAyKQogICAgICAgICByZXR1cm4gUmVmUHRyPFJlZkNv
dW50ZWRPYmplY3Q+KCk7CiAgICAgcmV0dXJuIFJlZlB0cjxSZWZDb3VudGVkT2JqZWN0PihSZWZD
b3VudGVkT2JqZWN0OjpjcmVhdGUoaW5wdXQpKTsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIFRFU1Qo
V1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsKQogCiAgICAgYXV0byBm
dW5jdGlvbiA9IFtdKGNvbnN0IFN0cmluZyYgdmFsdWUpIC0+IE9wdGlvbmFsPFN0cmluZz4gewog
ICAgICAgICBpZiAodmFsdWUubGVuZ3RoKCkgPCA1KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biB2YWx1ZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwogICAgIH07CiAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoV1RGOjpjb21wYWN0TWFwKHZlY3RvciwgZnVuY3Rp
b24pKSwgdHlwZW5hbWUgV1RGOjpWZWN0b3I8U3RyaW5nPj46OnZhbHVlLApAQCAtMTA2Myw3ICsx
MDYzLDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhQ29weVZlY3RvclJldHVy
bk9wdGlvbmFsQ291bnRlZE9iamVjdCkKICAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3QgQ291
bnRlZE9iamVjdCYgb2JqZWN0KSAtPiBPcHRpb25hbDxDb3VudGVkT2JqZWN0PiB7CiAgICAgICAg
IGlmIChvYmplY3QudmFsdWUoKSAlIDIpCiAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNv
bXBhY3RNYXAodmVjdG9yLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxDb3VudGVk
T2JqZWN0Pj46OnZhbHVlLApAQCAtMTA4Niw3ICsxMDg2LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBD
b21wYWN0TWFwTGFtYmRhTW92ZVZlY3RvclJldHVybk9wdGlvbmFsQ291bnRlZE9iamVjdCkKICAg
ICBhdXRvIGZ1bmN0aW9uID0gW10oQ291bnRlZE9iamVjdCYmIG9iamVjdCkgLT4gT3B0aW9uYWw8
Q291bnRlZE9iamVjdD4gewogICAgICAgICBpZiAob2JqZWN0LnZhbHVlKCkgJSAyKQogICAgICAg
ICAgICAgcmV0dXJuIFdURk1vdmUob2JqZWN0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgUmVmQ291bnRl
ZE9iamVjdDo6c190b3RhbFJlZkNvdW50ID0gMDsKQEAgLTExNTcsNyArMTE1Nyw3IEBAIFRFU1Qo
V1RGX1ZlY3RvciwgQ29tcGFjdE1hcExhbWJkYVJldHVybk9wdGlvbmFsUmVmUHRyKQogCiAgICAg
YXV0byBmdW5jdGlvbiA9IFsmXShpbnQgdmFsdWUpIC0+IE9wdGlvbmFsPFJlZlB0cjxSZWZDb3Vu
dGVkT2JqZWN0Pj4gewogICAgICAgICBpZiAoISh2YWx1ZSAlIDIpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmICghKHZhbHVlICUgMykpCiAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPFJlZkNvdW50
ZWRPYmplY3Q+KCk7CiAgICAgICAgIHJldHVybiBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oUmVm
Q291bnRlZE9iamVjdDo6Y3JlYXRlKHZhbHVlKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQWJvcnRhYmxlVGFza1F1ZXVlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCmluZGV4IDExNDc5
MWIzNmFhOTVmZGMxODZkYWI1NmQwOGUxMjlmNTRlNTU2YTUuLjk3NmQ2ODMyNjhmYTQyNWU1NzY3
OTkwYTE1NTU2ZTllYzJiMWNhMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUuY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgVEVTVChBYm9ydGFibGVUYXNrUXVldWUsIFN5bmNUYXNrcykKICAgICAgICAgRVhQRUNUX1RS
VUUocmVzcG9uc2UpOwogICAgICAgICBFWFBFQ1RfRkFMU0UoZGVzdHJ1Y3RlZFJlc3BvbnNlRmxh
Zyk7CiAgICAgICAgIEVYUEVDVF9FUSgxMDAsIHJlc3BvbnNlLT5mYW5jeUludCk7Ci0gICAgICAg
IHJlc3BvbnNlID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXNwb25zZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgRVhQRUNUX1RSVUUoZGVzdHJ1Y3RlZFJlc3BvbnNlRmxhZyk7CiAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbJl0oKSB7CiAgICAgICAgICAgICB0ZXN0RmluaXNo
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcAppbmRleCBlZDhlNmMyYmMwYTlmNWI5MjAyMjBhN2Vl
OGI0ODg2ZWQ5YmRjMmMxLi44MDlhOTBhYThhZjk1MjM1ZGVlNGU5Y2RmZjNkY2MyMmJhYjliZGQ4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9u
RnJhbWVSYXRlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5p
bWF0aW9uRnJhbWVSYXRlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFRFU1QoQW5pbWF0aW9uRnJh
bWVSYXRlLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGUpCiAg
ICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246
Okxvd1Bvd2VyTW9kZSB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFs
RnJhbWVSYXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDQ1KSk7CiAgICAgQVNT
RVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bv
d2VyTW9kZSB9LCA1MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVS
YXRlU2V0dGluZykudmFsdWUoKSwgRnJhbWVzUGVyU2Vjb25kKDI1KSk7CiAKLSAgICBBU1NFUlRf
RVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZp
ZXdwb3J0IH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZyksIFdURjo6bnVsbG9wdCk7CisgICAgQVNT
RVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNp
ZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZE1hdGNoTm9taW5hbEZyYW1lUmF0ZVNldHRpbmcpLCBzdGQ6Om51bGxvcHQpOwogfQog
CiBURVNUKEFuaW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0
NjBGUFMpCkBAIC0yMDcsNyArMjA3LDcgQEAgVEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTKQogICAgIEFTU0VSVF9FUShwcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpMb3dQb3dlck1vZGUgfSwgOTAsIHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZykudmFsdWUoKSwgRnJhbWVz
UGVyU2Vjb25kKDQ1KSk7CiAgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7
IFRocm90dGxpbmdSZWFzb246Okxvd1Bvd2VyTW9kZSB9LCA1MCwgcHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoMjUpKTsK
IAotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVh
c29uOjpPdXRzaWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLCBXVEY6Om51bGxvcHQpOworICAg
IEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5nUmVhc29uOjpP
dXRzaWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBURVNU
KEFuaW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kRnJvbUludGVydmFs
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1
ZXN0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVl
c3RUZXN0LmNwcAppbmRleCA2NWVhY2QwMzkyZjdlYzFiZDQwYTQ1MzYzMDRjMmQzMjgxMzE2Y2Q5
Li5lNGY3ZTNjMWNjYjE4MzlmZThlM2Y2YzYwNzc3MjA0MTUwYWYxNTBmIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VD
cmVkZW50aWFsUmVxdWVzdFBhcmFtKQogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzPiBwYXJhbXMgeyB7IFB1YmxpY0tleUNyZWRlbnRpYWxU
eXBlOjpQdWJsaWNLZXksIDcgfSwgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5
LCAyNTcgfSB9OwogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhl
bnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb24geyBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm0sIHRydWUsIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVy
cmVkIH07CiAKLSAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMg
eyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0
dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAg
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7
IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6
ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRh
ID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhl
bnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5Ojpr
U3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC04NCw3ICs4NCw3IEBAIFRFU1QoQ1RBUFJlcXVl
c3RUZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1Ob1VWTm9SSykK
ICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVy
cz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsg
UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVy
aWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwg
VXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCB9OwogCi0gICAgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFy
YW1zLCBXVEY6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlOjpOb25lLCBXVEY6Om51bGxvcHQgfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0ZDo6bnVs
bG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5v
bmUsIHN0ZDo6bnVsbG9wdCB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOwogICAgIGhhc2gu
YXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVu
dERhdGFIYXNoKSk7CiAgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VDcmVkZW5p
dGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0
aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3Vy
ZWQpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3Ry
dWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW1VVlJlcXVpcmVkQnV0Tm90U3VwCiAgICAgVmVj
dG9yPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFt
cyB7IHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tl
eUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXksIDI1NyB9IH07CiAgICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhIHNlbGVj
dGlvbiB7IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgZmFsc2UsIFVzZXJWZXJp
ZmljYXRpb25SZXF1aXJlbWVudDo6UmVxdWlyZWQgfTsKIAotICAgIFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgV1RGOjpu
dWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6
Tm9uZSwgV1RGOjpudWxsb3B0IH07CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwg
c2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51
bGxvcHQgfTsKICAgICBWZWN0b3I8dWludDhfdD4gaGFzaDsKICAgICBoYXNoLmFwcGVuZChUZXN0
RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkp
OwogICAgIGF1dG8gc2VyaWFsaXplZERhdGEgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RB
c0NCT1IoaGFzaCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJW
ZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtOb3RTdXBwb3J0ZWQpOwpAQCAtMTM0LDcgKzEzNCw3
IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1
ZXN0UGFyYW1XaXRoUGluKQogICAgIHBpbi5wcm90b2NvbCA9IHBpbjo6a1Byb3RvY29sVmVyc2lv
bjsKICAgICBwaW4uYXV0aC5hcHBlbmQoVGVzdERhdGE6OmtDdGFwMlBpbkF1dGgsIHNpemVvZihU
ZXN0RGF0YTo6a0N0YXAyUGluQXV0aCkpOwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBXVEY6Om51bGxvcHQs
IHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBX
VEY6Om51bGxvcHQgfTsKKyAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9w
dGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0ZDo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rp
b24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6bnVsbG9wdCB9
OwogICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOwogICAgIGhhc2guYXBwZW5kKFRlc3REYXRhOjpr
Q2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSk7CiAgICAg
YXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUiho
YXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNh
dGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQsIHBpbik7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGFyc2VkQ29udGVudFJhbmdl
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFu
Z2UuY3BwCmluZGV4IDI1ZDJkNjc3ZmI4ODg2MjI1ZmUzMWRiNDk4ZTVkNzVkNmM2MDBmNDAuLjY0
ZmUwMTc0MWEzODJiMTc1ZjgyODIzMjMyOWMzZmFlZmI0Njg5OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3Bw
CkBAIC0xMTIsMTEgKzExMiwxMSBAQCBURVNUKFdlYkNvcmUsIFBhcnNlZFJlcXVlc3RSYW5nZSkK
ICAgICAgICAgImJ5dGVzPTEtOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5IgogICAgIH07CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBpbnB1dCA6IGZhaWx1cmVDYXNlcykKLSAgICAgICAgRVhQRUNUX0VR
KFdURjo6bnVsbG9wdCwgUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCkpOworICAgICAg
ICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBQYXJzZWRSZXF1ZXN0UmFuZ2U6OnBhcnNlKGlucHV0
KSk7CiAKICAgICBhdXRvIGNvbXBhcmUgPSBbXSAoY29uc3QgU3RyaW5nJiBpbnB1dCwgT3B0aW9u
YWw8c2l6ZV90PiBiZWdpbiwgT3B0aW9uYWw8c2l6ZV90PiBlbmQpIHsKICAgICAgICAgYXV0byBy
YW5nZSA9IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFyc2UoaW5wdXQpOwotICAgICAgICBFWFBFQ1Rf
TkUoV1RGOjpudWxsb3B0LCByYW5nZSk7CisgICAgICAgIEVYUEVDVF9ORShzdGQ6Om51bGxvcHQs
IHJhbmdlKTsKICAgICAgICAgCiAgICAgfTsKICAgICBjb21wYXJlKCJieXRlcz0xLTEiLCAxLCAx
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TYW1wbGVN
YXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAK
aW5kZXggNGJiNDJlZWFkYmM0NGZhODc4NGVkYzJkODk0NGJjNTIxNjY3ZmQzMy4uNDgxOGYzZjgx
M2YzMmUxYjVjZWNjY2YwODA5Nzg5OGZmOGFlODg3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIGZpbmFsIHsgcmV0
dXJuIHsgUGxhdGZvcm1TYW1wbGU6Ok5vbmUsIHtudWxscHRyfX07IH0KLSAgICBPcHRpb25hbDxC
eXRlUmFuZ2U+IGJ5dGVSYW5nZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsg
fQorICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBm
aW5hbCB7IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcAppbmRleCBlMjYxNzkzMzQyNTIyNDNiYTVm
MTQxODBmNzIyNGViNzc1NGRjYTFmLi5lYjIxYmNkYmU3YWIwOGVkNmZlZGU0MTdlNGZmYWFlNjUy
ZTY1MWIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJM
UGFyc2VyVGV4dEVuY29kaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcApAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMg
dm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVGV4dEVuY29kaW5n
KiBlbmNvZGluZywgY29ucwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQ
RUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VR
KHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVy
eSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJs
LmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQg
Y2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0
cmluZywgY29uc3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9F
UShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0
cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVy
bC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAppbmRleCBhNTk4ZDU0YTI3
NTI5NThjNDJlNGUyYjc5ZTUzMzdjNTdiMTc0YjQ2Li4wZTBlNDA0NzY2ODViNjkyNzMzMDlhNTc4
NjhkN2U2YWZkMjk5ZWZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcApAQCAtNzksNyArNzksNyBA
QCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nUmVzb3VyY2UpCiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9FUShy
ZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIGxpc3Quc2l6ZUluQnl0ZXMoKSk7CiAgICAgICAgIEVY
UEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OlJlcGxh
eWVkQWxsSXRlbXMpOwotICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIEVYUEVDVF9FUShyZXN1bHQu
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciwgc3RkOjpudWxsb3B0KTsKICAgICB9CiB9
CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxJdGVtSGFuZGxlPiBX
QVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBJdGVt
VHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9FUSh0eXBl
LCBJdGVtVHlwZTo6RmlsbFBhdGgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKQEAgLTEzNCw4ICsxMzQsOCBA
QCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIE91dE9mTGluZUl0ZW1EZWNvZGluZ0ZhaWx1cmUpCiAg
ICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBzaGFsbG93Q29weSB9OwogICAgIGF1dG8g
cmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgRVhQRUNUX0dUKHJlc3VsdC5udW1iZXJP
ZkJ5dGVzUmVhZCwgMFUpOwotICAgIEVYUEVDVF9FUShyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIsIFdURjo6bnVsbG9wdCk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1
bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIHN0ZDo6bnVsbG9wdCk7CisgICAgRVhQRUNU
X0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQp
OwogICAgIEVYUEVDVF9FUShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFz
b246OkludmFsaWRJdGVtT3JFeHRlbnQpOwogfQogCkBAIC0xNTgsOCArMTU4LDggQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBJbmxpbmVJdGVtVmFsaWRhdGlvbkZhaWx1cmUpCiAgICAgICAgIFJl
cGxheWVyIHJlcGxheWVyIHsgY29udGV4dCwgbGlzdCB9OwogICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlcGxheWVyLnJlcGxheSgpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm51bWJlck9mQnl0
ZXNSZWFkLCAwVSk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIsIFdURjo6bnVsbG9wdCk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQubWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgRVhQRUNU
X0VRKHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgc3RkOjpudWxsb3B0KTsKKyAg
ICAgICAgRVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBz
dGQ6Om51bGxvcHQpOwogICAgICAgICBFWFBFQ1RfRVEocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5n
LCBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50KTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VU
cmFja2VyVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9E
YXRhYmFzZVRyYWNrZXJUZXN0Lm1tCmluZGV4IDc1N2VjMjQyNTg1MTFhN2Y5MTIxMWFhY2NhMTQ1
MWYzYWJkZTJiMTEuLjA5MDVjN2UwMDE4ZWQ0OGJlNzA0OGU0MTIwMTBlNjQ3MDkyZWNkOTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tCkBAIC00NCw3ICs0NCw3IEBAIFRFU1QoRGF0YWJh
c2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogICAgIFN0cmluZyBkYXRhYmFz
ZUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eURhdGFi
YXNlIiwgaGFuZGxlKTsKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAg
IGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoKS52
YWx1ZU9yKDApOworICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShkYXRh
YmFzZUZpbGVQYXRoKS52YWx1ZV9vcigwKTsKICAgICBFWFBFQ1RfRVEoMFUsIGZpbGVTaXplKTsK
IAogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZF
bXB0eShkYXRhYmFzZUZpbGVQYXRoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCmluZGV4IGJkZWFjYjQ0Yzg2ZTYzOWE5NGE2MDg4
NDJlYWIyN2Y2Y2E4ZjBiN2IuLjRkN2IwNDM4NGI3NTA1MmYwYjhlYjJmODUxNTVmNTg2OTM2NWQ2
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hh
bGxlbmdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hh
bGxlbmdlLm1tCkBAIC01NTEsNyArNTUxLDcgQEAgVEVTVChXZWJLaXQsIEZhc3RTZXJ2ZXJUcnVz
dCkKICNlbHNlCiAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQ
UywgW10oU1NMKiBzc2wpIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7Ci0gICAgfSwgV1RG
OjpudWxsb3B0LCAyKTsKKyAgICB9LCBzdGQ6Om51bGxvcHQsIDIpOwogI2VuZGlmCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCmluZGV4IDdjNGQxZTU0ZGI3NWM5Mjg2MTA4NDYxMzU4MTc2ZDg1NGY3MmMz
M2EuLjYxMTFmNmIzNjdhYzM2NmEzNTJkY2Y2NTY5ZDNiOTJiODA0YjUxNGUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQpAQCAtMTE1Miw4ICsxMTUyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5k
bGVyLCBMb2Fkc0Zyb21OZXR3b3JrKQogICAgIH1dOwogICAgIAogICAgIGF1dG8gcnVuVGVzdCA9
IFsmXSB7Ci0gICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxsb3B0OwotICAgICAgICB3ZWJT
b2NrZXRTdWNjZXNzID0gV1RGOjpudWxsb3B0OworICAgICAgICBsb2FkU3VjY2VzcyA9IHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgd2ViU29ja2V0U3VjY2VzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgZG9uZSA9IGZhbHNlOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CkBAIC0xMjMwLDcgKzEyMzAsNyBAQCBURVNUKFVS
TFNjaGVtZUhhbmRsZXIsIEFsbG93ZWROZXR3b3JrSG9zdHNSZWRpcmVjdCkKICAgICB9XTsKIAog
ICAgIGF1dG8gcnVuVGVzdCA9IFsmXSB7Ci0gICAgICAgIGxvYWRTdWNjZXNzID0gV1RGOjpudWxs
b3B0OworICAgICAgICBsb2FkU3VjY2VzcyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZG9uZSA9
IGZhbHNlOwogICAgICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBb
V0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVdOwogICAgICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwpAQCAtMTYwMiw4ICsxNjAyLDggQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBSYW5nZXMpCiAK
ICAgICAgICAgYXV0byByYW5nZUJlZ2luU3RyaW5nID0gcmVxdWVzdFJhbmdlU3RyaW5nLnN1YnN0
cmluZyhiZWdpbiArIHJhbmdlQnl0ZXMubGVuZ3RoKCksIGRhc2ggLSBiZWdpbiAtIHJhbmdlQnl0
ZXMubGVuZ3RoKCkpOwogICAgICAgICBhdXRvIHJhbmdlRW5kU3RyaW5nID0gcmVxdWVzdFJhbmdl
U3RyaW5nLnN1YnN0cmluZyhkYXNoICsgMSwgZW5kIC0gZGFzaCAtIDEpOwotICAgICAgICBhdXRv
IHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZh
bHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIg
PyBbdmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3Ry
aW5nKS52YWx1ZU9yKDApOworICAgICAgICBhdXRvIHJhbmdlQmVnaW4gPSBwYXJzZUludGVnZXI8
dWludDY0X3Q+KHJhbmdlQmVnaW5TdHJpbmcpLnZhbHVlX29yKDApOworICAgICAgICBhdXRvIHJh
bmdlRW5kID0gcmFuZ2VFbmRTdHJpbmcgPT0gIioiID8gW3ZpZGVvRGF0YSBsZW5ndGhdIDogcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PihyYW5nZUVuZFN0cmluZykudmFsdWVfb3IoMCk7CiAKICAgICAg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10gaW5p
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0gc3Rh
dHVzQ29kZToyMDYgSFRUUFZlcnNpb246QCJIVFRQLzEuMSIgaGVhZGVyRmllbGRzOkB7CiAgICAg
ICAgICAgICBAIkNvbnRlbnQtUmFuZ2UiIDogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJi
eXRlcyAlbGx1LSVsbHUvJWx1IiwgcmFuZ2VCZWdpbiwgcmFuZ2VFbmQsICh1bnNpZ25lZCBsb25n
KVt2aWRlb0RhdGEgbGVuZ3RoXV0sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDI5MzIxNDBkNjNmNzFk
YzA3NDkxMzZlNDcyMzkwM2YzYWRiM2ZiMTAuLjY2NGQ5NTczYWJkZTkyMDcxM2ZkOWRmMGJlNTdl
ZTU2MDQzYjE5NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgVEVTVChX
ZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1dG9w
bGF5KQogCiAgICAgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIw
LCAyNTYpOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAg
IHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBOU1VSTFJlcXVlc3Qg
KmpzUGxheVJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJqcy1wbGF5LXdpdGgtY29udHJvbHMiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRlZCJdOwpAQCAtMzgzLDcgKzM4Myw3IEBAIFRFU1QoV2Vi
cGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxh
eSkKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRv
cGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAgICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3Bs
YXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdzUGxheWJhY2tXYXNQcmV2ZW50ZWQp
OwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0
cmluZzpAIiIgYmFzZVVSTDpuaWxdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICphdXRvcGxheVJlcXVl
c3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheS13aXRoLWNvbnRyb2xzIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC0zOTgs
NyArMzk4LDcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlB
ZnRlclByZXZlbnRlZEF1dG9wbGF5KQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5
RXZlbnRGbGFncyAmIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRf
VFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQ
bGF5YmFja1dhc1ByZXZlbnRlZCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6
Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJl
cXVlc3QgKm5vQXV0b3BsYXlSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibm8tYXV0b3BsYXktd2l0aC1j
b250cm9scyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwpAQCAtNDA3LDkgKzQwNyw5IEBAIFRFU1QoV2VicGFnZVByZWZlcmVu
Y2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5QWZ0ZXJQcmV2ZW50ZWRBdXRvcGxheSkKICAgICBbd2Vi
VmlldyBtb3VzZURvd25BdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50IHNpbXVsYXRlUHJlc3N1
cmU6Tk9dOwogICAgIFt3ZWJWaWV3IG1vdXNlVXBBdFBvaW50OnBsYXlCdXR0b25DbGlja1BvaW50
XTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXllZCJdOwotICAgIEFTU0VSVF9U
UlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9U
UlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51bGxvcHQpOwogCi0gICAgcmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVu
dCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVS
TDpuaWxdOwogCiAgICAgW2RlbGVnYXRlIHNldEF1dG9wbGF5UG9saWN5Rm9yVVJMOl4oTlNVUkwg
KikgewpAQCAtNDQ2LDcgKzQ0Niw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRl
UG9saWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxv
cHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIE5TUG9pbnQgcGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2lu
dCgyMCwgNTgwKTsKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywg
V2Vic2l0ZVBvbGljaWVzUGxheWluZ1dpdGhVc2VyR2VzdHVyZSkKICAgICBBU1NFUlRfVFJVRSgq
cmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRp
byk7CiAgICAgQVNTRVJUX0ZBTFNFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIF9XS0F1
dG9wbGF5RXZlbnRGbGFnc01lZGlhSXNNYWluQ29udGVudCk7CiAKLSAgICByZWNlaXZlZEF1dG9w
bGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtcGxheS1i
dXR0b24iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTUw
Miw3ICs1MDIsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxh
eWluZ1dpdGhvdXRJbnRlcmZlcmVuY2UpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAg
ICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgTlNVUkxSZXF1ZXN0
ICpqc1BsYXlSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAianMtYXV0b3BsYXktYXVkaW8iIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBydW5VbnRpbFJl
Y2VpdmVzQXV0b3BsYXlFdmVudChfV0tBdXRvcGxheUV2ZW50RGlkQXV0b3BsYXlNZWRpYVBhc3RU
aHJlc2hvbGRXaXRob3V0VXNlckludGVyZmVyZW5jZSk7CkBAIC01MjYsMjAgKzUyNiwyMCBAQCBU
RVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNlckludGVyZmVyZW5jZVdp
dGhQbGF5aW5nKQogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAg
ICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRv
cGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIE5TVVJMUmVxdWVzdCAqanNQbGF5UmVxdWVz
dCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAImpzLXBsYXktd2l0aC1jb250cm9scyIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAicGxheWluZyJdOwotICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
PSBzdGQ6Om51bGxvcHQpOwogCiAgICAgV0tQYWdlU2V0TXV0ZWQoW3dlYlZpZXcgX3BhZ2VGb3JU
ZXN0aW5nXSwgX1dLTWVkaWFBdWRpb011dGVkKTsKICAgICBydW5VbnRpbFJlY2VpdmVzQXV0b3Bs
YXlFdmVudChfV0tBdXRvcGxheUV2ZW50VXNlckRpZEludGVyZmVyZVdpdGhQbGF5YmFjayk7CiAg
ICAgQVNTRVJUX1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlF
dmVudEZsYWdzSGFzQXVkaW8pOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpu
dWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpqc1BsYXlSZXF1ZXN0XTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAInBsYXlpbmciXTsKLSAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZl
bnQgPT0gV1RGOjpudWxsb3B0KTsKKyAgICBBU1NFUlRfVFJVRShyZWNlaXZlZEF1dG9wbGF5RXZl
bnQgPT0gc3RkOjpudWxsb3B0KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb25zdCBOU1Bv
aW50IG11dGVCdXR0b25DbGlja1BvaW50ID0gTlNNYWtlUG9pbnQoODAsIDI1Nik7CkBAIC01NTIs
MTAgKzU1MiwxMCBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXNl
ckludGVyZmVyZW5jZVdpdGhQbGF5aW5nKQogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2
ZW50KF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBB
U1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50
RmxhZ3NIYXNBdWRpbyk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxv
cHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAicGxheWluZyJdOwotICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
PSBzdGQ6Om51bGxvcHQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGNvbnN0IE5TUG9pbnQg
cGxheUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCgyMCwgMjU2KTsKQEAgLTc2NSw3ICs3
NjUsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzVXBkYXRlcykK
ICAgICBbd2ViVmlldyBfdXBkYXRlV2VicGFnZVByZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgp
XTsKIAogICAgIC8vIEEgc2NyaXB0IHNob3VsZCBubyBsb25nZXIgYmUgYWJsZSB0byBhdXRvcGxh
eSBtZWRpYS4KLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwbGF5VmlkZW8oKSJdOwogICAgIHJ1blVudGlsUmVj
ZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1dG9wbGF5RXZlbnREaWRQcmV2ZW50RnJvbUF1dG9wbGF5
aW5nKTsKIH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vi
c2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3MpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJkaWQtbm90LXBsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNl
Il07CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVj
ZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRo
QXVkaW9JbkZyYW1lID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2staW4taWZyYW1lIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV07CkBAIC04NDYsNyArODQ2LDcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQ
b2xpY2llc0F1dG9wbGF5UXVpcmtzKQogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlk
LW5vdC1wbGF5Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJvbi1wYXVzZSJdOwog
Ci0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVk
QXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIiIgYmFzZVVSTDpuaWxdOwogCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0VGhhdEluaGVy
aXRzR2VzdHVyZSA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LWluaGVyaXRzLWdlc3R1cmUtZnJvbS1k
b2N1bWVudCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwpAQCAtODc0LDcgKzg3NCw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVu
Y2VzLCBXZWJzaXRlUG9saWNpZXNQZXJEb2N1bWVudEF1dG9wbGF5QmVoYXZpb3JRdWlya3MpCiAg
ICAgV0tQcmVmZXJlbmNlc1NldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2VzLmdl
dCgpLCB0cnVlKTsKICAgICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VH
cm91cChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddKSwgcHJlZmVyZW5jZXMuZ2V0KCkpOwogCi0g
ICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0
b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdp
dGhNdWx0aXBsZU1lZGlhRWxlbWVudHMgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheWluZy1tdWx0aXBs
ZS1tZWRpYS1lbGVtZW50cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogCkBAIC05MDMsNyArOTAzLDcgQEAgVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlCZWhhdmlv
clF1aXJrcykKIAogICAgIC8vIE5vdyBsZXQncyB0ZXN0IHRoaXMgd2l0aG91dCB0aGUgcXVpcmsu
CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKLSAgICByZWNl
aXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2
ZW50ID0gc3RkOjpudWxsb3B0OwogCiAgICAgW2RlbGVnYXRlIHNldEFsbG93ZWRBdXRvcGxheVF1
aXJrc0ZvclVSTDpeX1dLV2Vic2l0ZUF1dG9wbGF5UXVpcmsoTlNVUkwgKnVybCkgewogICAgICAg
ICByZXR1cm4gMDsKQEAgLTk1MSw3ICs5NTEsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywg
V2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3NBc3luY1BvbGljeURlbGVnYXRlKQogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiZGlkLW5vdC1wbGF5Il07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJvbi1wYXVzZSJdOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0g
V1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOwogCiAgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aEF1ZGlvSW5GcmFtZSA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5
LWNoZWNrLWluLWlmcmFtZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCmluZGV4IGI5MjI5NzdlMDA0ZDNmOGYwZjVhMWY0OWRmYmYyMDZkNTNkZWY5OTcuLjlhMzE4
MzM5MTU4YWFlOWIzNWFlYWY1Y2RmN2I5MjljMjljNzZjNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KQEAgLTE1MjQsOSArMTUyNCw5IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01pbmltdW4pCiAg
ICAgRVhQRUNUX0VRKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zWzBdLnR5cGUsIFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkpOwogICAgIEVYUEVDVF9FUShyZXN1bHQu
cHViS2V5Q3JlZFBhcmFtc1swXS5hbGcsIC03KTsKIAotICAgIEVYUEVDVF9FUShyZXN1bHQudGlt
ZW91dCwgV1RGOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnRpbWVvdXQsIHN0ZDo6
bnVsbG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgp
LCAwbHUpOwotICAgIEVYUEVDVF9FUShyZXN1bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbiwgV1RG
OjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24s
IHN0ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdHRlc3RhdGlvbiwgQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0
LmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4dGVu
c2lvbnMtPmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCwgZmFsc2UpOwpAQCAtMTU3Nyw3ICsxNTc3
LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zTWF4aW11bURlZmF1bHQpCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRl
Q3JlZGVudGlhbHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwogICAg
IEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5k
YXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogCi0gICAgRVhQRUNU
X0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5hdXRoZW50aWNhdG9yQXR0YWNobWVu
dCwgV1RGOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb24tPmF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBzdGQ6Om51bGxvcHQpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbi0+cmVxdWlyZVJlc2lkZW50S2V5LCBm
YWxzZSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT51c2Vy
VmVyaWZpY2F0aW9uLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCk7CiAK
QEAgLTE3OTgsNyArMTc5OCw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zTWluaW11bikKICAgICBhdXRvIG9wdGlvbnMgPSBh
ZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zIGFsbG9jXSBpbml0
XSk7CiAgICAgYXV0byByZXN1bHQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0
VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zLmdldCgpXTsKIAotICAgIEVY
UEVDVF9FUShyZXN1bHQudGltZW91dCwgV1RGOjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVz
dWx0LnRpbWVvdXQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0LnJwSWQu
aXNOdWxsKCkpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFscy5zaXplKCks
IDBsdSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyVmVyaWZpY2F0aW9uLCBVc2VyVmVyaWZp
Y2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5j
cHAKaW5kZXggODA0YTRmMjEyZTRlMzk3OWQxMGM4MGQ4MWI2NGFiZDA0OTQ2YTg0My4uNmY2ZWRk
MTFmNmY4ZTVlM2Y5Y2Y3NzZlYjEzYWNlNDI5OWM4Yzc3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5
Q2xpZW50LmNwcApAQCAtMTE1LDE0ICsxMTUsMTQgQEAgcHVibGljOgogCiAgICAgYm9vbCBsb2Fk
VVJJQW5kV2FpdEZvckF1dG9QbGF5ZWQoY29uc3QgY2hhciogdXJpLCBXZWJLaXRBdXRvcGxheVBv
bGljeSBwb2xpY3kpCiAgICAgewotICAgICAgICBtX2F1dG9wbGF5ZWQgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fYXV0b3BsYXllZCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV93ZWJzaXRl
UG9saWNpZXMgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfcG9saWNpZXNfbmV3X3dpdGhfcG9s
aWNpZXMoImF1dG9wbGF5IiwgcG9saWN5LCBudWxscHRyKSk7CiAgICAgICAgIG1fcG9saWN5RGVj
aXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZVdpdGhQb2xpY3k7CiAKICAgICAg
ICAgbG9hZFVSSSh1cmkpOwogICAgICAgICAvLyBSdW4gdW50aWwgdGhlIHVzZXIgY29udGVudCBt
ZXNzYWdlcyBjb21lIGJhY2sgZnJvbSB0aGUgdGVzdCBIVE1MLgogICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7Ci0gICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQudmFsdWVPcihm
YWxzZSk7CisgICAgICAgIHJldHVybiBtX2F1dG9wbGF5ZWQudmFsdWVfb3IoZmFsc2UpOwogICAg
IH0KIAogICAgIGJvb2wgcnVuSlNBbmRXYWl0Rm9yQXV0b1BsYXllZChjb25zdCBjaGFyKiBzY3Jp
cHQpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJL
aXRUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YktpdFRlc3RTZXJ2ZXIuY3BwCmluZGV4IGZmMDQzZGI2M2RmNmE1YmE5YWRiNzhhMDY5ZTY2YjBh
NzBlOTM5NDQuLjdkMGNhZTNkYTMzOGMxY2IyMTUyYzcwMzA2OWYyNGM2ZmQyYmIzM2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2
ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwCkBAIC0xMDgsNSArMTA4LDUgQEAgQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVy
OjpnZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0CiAKIHVuc2lnbmVkIFdlYktp
dFRlc3RTZXJ2ZXI6OnBvcnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2Jhc2VVUkwucG9ydCgp
LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG1fYmFzZVVSTC5wb3J0KCkudmFsdWVfb3IoMCk7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429887</attachid>
            <date>2021-05-27 09:30:02 -0700</date>
            <delta_ts>2021-05-27 14:54:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226280-20210527093001.patch</filename>
            <type>text/plain</type>
            <size>2553816</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi41NjFmZTkzNzIwOTlhZjZj
MTMwYjg0ZTA5ZTNjNmMzMDYxNzg0M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJl
bmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB5YXJyL1lhcnJT
eW50YXhDaGVja2VyLmNwcDogU2luY2UgdGhlIHN0eWxlIGNoZWNrZXIgY29tcGxhaW5lZCBhYm91
dCB0aGlzIGZpbGUsCisgICAgICAgIHR3ZWFrZWQgc3R5bGUgdG8gbWFrZSBpdCBoYXBweSBhZnRl
ciB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZSwgYW5kCisgICAgICAgIGFs
c28gaGFuZC11cGRhdGVkIE9wdGlvbmFsIHRvIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3ZSB3
ZXJlIHRvdWNoaW5nIGl0LgorCiAyMDIxLTA1LTI3ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGxh
dGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5Nzk3ZDVlYTg5NjNlZTk4ODRhNDBmNjhiNGMyZDZi
ZWE1ZTUzMGEzLi5mNzBmMGRjNWE2NTlkMjBlYjNhZjNmMTg5ZDE5ZmQ0YzVjYTMzNmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0
bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwgdHlwZWRlZgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0
aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZS4KKworICAgICAgICAqIHd0Zi9P
cHRpb25hbC5oOiBSZW1vdmUgV1RGOjpudWxsb3B0X3QgYW5kIFdURjo6bWFrZU9wdGlvbmFsLgor
CisgICAgICAgICogd3RmL1VSTEhlbHBlcnMuY3BwOgorICAgICAgICAoV1RGOjpVUkxIZWxwZXJz
OjptYXBIb3N0TmFtZSk6IENvbnZlcnQgZnJvbSBudWxsb3B0IHRvIHN0ZDo6bnVsbG9wdC4KKwog
MjAyMS0wNS0yNiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIFByZXZlbnQgc2JpeCBnbHlwaHMgZnJvbSBiZWluZyByZW5kZXJlZCBpbiB0aGUgR1BVIHBy
b2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBkNTE3ODUzZjFmNjQ0ZjQyMWQyM2ViMGQxOWIzZDUyMjNlNDky
ZjI2Li5lZDQ0ZTM3M2Y1YzdkYmJkMzM1MzdmNjliODhkZWQxNmUxNzU0ZDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMDUtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE5leHQgc3RlcCB0b3dhcmQgdXNpbmcgc3RkOjpvcHRpb25hbCBkaXJl
Y3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpPcHRpb25hbCB0eXBlZGVmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogQWNjZXB0
IHRoZSByZW5hbWluZyBkb25lIGJ5IGRvLXdlYmNvcmUtcmVuYW1lLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuaDogU2luY2Ugc3R5bGUg
Y2hlY2tlciBjb21wbGFpbmVkCisgICAgICAgIGFib3V0IHRoZSBuYW1lcyBvZiBzb21lIGFyZ3Vt
ZW50cywgZml4ZWQgdGhlbSwgYW5kIGFsc28gaGFuZC11cGRhdGVkIE9wdGlvbmFsIHRvCisgICAg
ICAgIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3ZSB3ZXJlIHRvdWNoaW5nIGl0LgorCisgICAg
ICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6IFNpbmNlIHN0eWxlIGNoZWNrZXIgY29tcGxh
aW5lZCBhYm91dCB0aGUgbWl4IG9mCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGFuZCBpbmxpbmVk
IGZ1bmN0aW9ucywgbW92ZWQgdGhlbSBvdXQgb2YgbGluZSwgYW5kCisgICAgICAgIGFsc28gaGFu
ZC11cGRhdGVkIE9wdGlvbmFsIHRvIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3ZSB3ZXJlIHRv
dWNoaW5nIGl0LgorICAgICAgICBBbHNvIHJlbW92ZWQgaXM8RW1wdHlGcmFtZUxvYWRlckNsaWVu
dD4oKS4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOiBEaXR0by4K
KwogMjAyMS0wNS0yNyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTiAocjI0NDQzNCkgRGlzcGF0Y2ggaW50cmluc2ljQ29udGVudHNTaXplQ2hhbmdl
ZCBvbiB0aGUgbWFpbiBmcmFtZSBvbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjYTQxYWNhZjQz
ZDE3MDQ5NWM3OGE2ZmI5YWUyYThkNmJjNDk5YWU5Li4zMTZhMDM0ZDQyMWUxMTNiNDI0OWU5NGJl
NDQ0OGNiMjZhN2M2MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4dCBz
dGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3Vn
aCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6
LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkg
ZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjYgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5
Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50IHNiaXggZ2x5cGhzIGZyb20gYmVpbmcg
cmVuZGVyZWQgaW4gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliNDk4OGJlYjYyZmU4MjE2
NmIwMDU2ZDk5N2E1YjQ2Yjk0M2VkYWEuLmVlNDA1ZDJjNTk0ZGFiNWNkYmM2NzJmMDgzYTFmYTlm
NGJjN2M0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3RlcCB0b3dhcmQgdXNpbmcg
c3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpPcHRpb25hbCB0
eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIDxt
YW55IGZpbGVzPjogQWNjZXB0IHRoZSByZW5hbWluZyBkb25lIGJ5IGRvLXdlYmNvcmUtcmVuYW1l
LgorCiAyMDIxLTA1LTI3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFUgUHJvY2Vzc10gQWRkIHZhbGlkYXRpb24gd2hlbiByZWFkaW5nIERpc3Bs
YXlMaXN0U2hhcmVkTWVtb3J5SGVhZGVyOjp3YWl0aW5nU3RhdHVzIGluIERpc3BsYXlMaXN0UmVh
ZGVySGFuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDdhNWExY2FlNGMxMWI4NjUwM2RmNjFj
MGE4OTM0Zjk5MGYxNTBjNDIuLjUwY2FjZTAzZTNlNzYyYWZjMGYyMmQ0NTNhZDkzZjY2NWQyYTFm
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMjcgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3RlcCB0b3dhcmQg
dXNpbmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpPcHRp
b25hbCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKTogQWNjZXB0IHRoZSByZW5hbWluZyBkb25lIGJ5
IGRvLXdlYmNvcmUtcmVuYW1lLgorCiAyMDIxLTA1LTI0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kTGl0ZXJhbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDE5Nzg2MTk2MzAyNWRkODUyZWUwMmRmMzIy
YjIzMmUwMjhmY2UwODkuLjg2ZWMyMjg0MTY3N2FlZWNmNDc4MWMzZmZhNTdiY2MwMDFiZjMwNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0y
NyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRv
d2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6
Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisg
ICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2Vi
Y29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVmlydHVhbGl6ZSBHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCBmOTZhNmM0ZDlkZjRiNDBjZGNiZWI3NjVmNzdlNjRlODAz
YWJlNjQ4Li42M2RiOWEyMTU5NTUwYjg1NDdjYTQ5MGFmYWZhNmM1NjRkOTdiOWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMjcgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3RlcCB0b3dhcmQgdXNp
bmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpPcHRpb25h
bCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAq
IDxtYW55IGZpbGVzPjogQWNjZXB0IHRoZSByZW5hbWluZyBkb25lIGJ5IGRvLXdlYmNvcmUtcmVu
YW1lLgorCiAyMDIxLTA1LTI1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFZpcnR1YWxpemUgR3JhcGhpY3NDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDA1
YTFmZWQ2NTc2MDhkM2ZjNTFkOWUzNTM4YTZmMzg1MDgwYzg5ZWIuLjYwZWQyMjE0MjYzODU3MDZi
YTExMjVmMWI5MGViNGE4NDcyZDM2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0zNSw2ICszNSw2IEBAIHVp
bnQxNl90IEpTUmVtb3RlSW5zcGVjdG9yU2VydmVyU3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywg
dWludDE2X3QgcG9ydCkKICAgICBpZiAoIXNlcnZlci5zdGFydChhZGRyZXNzLCBwb3J0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gc2VydmVyLmdldFBvcnQoKS52YWx1ZU9yKDAp
OworICAgIHJldHVybiBzZXJ2ZXIuZ2V0UG9ydCgpLnZhbHVlX29yKDApOwogfQogI2VuZGlmIC8v
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDbGFzcy5jcHAKaW5kZXggYmU1N2EyZTFiN2YwNzQ4OTg2ODA5ZjNiNTc3ZTEwMGFkYzU5
ZTA1Zi4uYTRlMWI1NDJiZmZjNDk2N2VhZTc5ZDk0ODlkMmM4NDA3MGQzOTZlYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCkBAIC02OTgsNyArNjk4LDcg
QEAgSlNDVmFsdWUqIGpzY19jbGFzc19hZGRfY29uc3RydWN0b3JfdmFyaWFkaWMoSlNDQ2xhc3Mq
IGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW0KICAgICBpZiAoIW5hbWUpCiAgICAgICAgIG5hbWUg
PSBwcml2LT5uYW1lLmRhdGEoKTsKIAotICAgIHJldHVybiBqc2NDbGFzc0NyZWF0ZUNvbnN0cnVj
dG9yKGpzY0NsYXNzLCBuYW1lID8gbmFtZSA6IHByaXYtPm5hbWUuZGF0YSgpLCBjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnksIHJldHVyblR5cGUsIFdURjo6bnVsbG9wdCkubGVha1Jl
ZigpOworICAgIHJldHVybiBqc2NDbGFzc0NyZWF0ZUNvbnN0cnVjdG9yKGpzY0NsYXNzLCBuYW1l
ID8gbmFtZSA6IHByaXYtPm5hbWUuZGF0YSgpLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lO
b3RpZnksIHJldHVyblR5cGUsIHN0ZDo6bnVsbG9wdCkubGVha1JlZigpOwogfQogCiBzdGF0aWMg
dm9pZCBqc2NDbGFzc0FkZE1ldGhvZChKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNoYXIqIG5h
bWUsIEdDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5
IGRlc3Ryb3lOb3RpZnksIEdUeXBlIHJldHVyblR5cGUsIE9wdGlvbmFsPFZlY3RvcjxHVHlwZT4+
JiYgcGFyYW1ldGVycykKQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIGpzY19jbGFzc19hZGRfbWV0
aG9kX3ZhcmlhZGljKEpTQ0NsYXNzKiBqc2NDbGFzcywgY29uc3QgY2hhciogbmFtZSwgR0NhbGxi
YQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY2FsbGJhY2spOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
anNjQ2xhc3MtPnByaXYtPmNvbnRleHQpOwogCi0gICAganNjQ2xhc3NBZGRNZXRob2QoanNjQ2xh
c3MsIG5hbWUsIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSwgcmV0dXJuVHlwZSwg
V1RGOjpudWxsb3B0KTsKKyAgICBqc2NDbGFzc0FkZE1ldGhvZChqc2NDbGFzcywgbmFtZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBzdGQ6Om51bGxvcHQp
OwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3Bw
CmluZGV4IDE5MGNiODg1ZmM0YTU4ZDIxZTgxMzI0Njk0YjVhNjBkZWE2ZDhiZjMuLjM1OTFiYjc5
MjQ0NDUyNTFjNTkyN2VhY2IyZmUyODg5MmFmYzUwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcApAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgSlNDVmFsdWUq
IGpzY192YWx1ZV9uZXdfZnVuY3Rpb25fdmFyaWFkaWMoSlNDQ29udGV4dCogY29udGV4dCwgY29u
c3QgY2hhciogbmFtZSwKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfQ09OVEVYVChj
b250ZXh0KSwgbnVsbHB0cik7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY2FsbGJhY2ssIG51
bGxwdHIpOwogCi0gICAgcmV0dXJuIGpzY1ZhbHVlRnVuY3Rpb25DcmVhdGUoY29udGV4dCwgbmFt
ZSwgY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBXVEY6Om51
bGxvcHQpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4ganNjVmFsdWVGdW5jdGlvbkNyZWF0ZShjb250
ZXh0LCBuYW1lLCBjYWxsYmFjaywgdXNlckRhdGEsIGRlc3Ryb3lOb3RpZnksIHJldHVyblR5cGUs
IHN0ZDo6bnVsbG9wdCkubGVha1JlZigpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9TY3JpcHRzL3drYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc190ZW1wbGF0
ZXMucHkKaW5kZXggNzRjOTY5NGYxNWJhOTQxODE3MDY2NmMyNTE3MjYyOTc3OWRmZDc5NC4uNDk4
YTI4ZTJhNDgxZTM0NDkyNDRhMDdhYjQwMmNmZTRiNGEwOWZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvd2tidWlsdGlucy9idWlsdGluc190
ZW1wbGF0ZXMucHkKQEAgLTg1LDcgKzg1LDcgQEAgJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29i
amVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICNkZWZp
bmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJy
aWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNv
ZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxcCiB7XFwKLSAgICByZXR1cm4gdm0uYnVp
bHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIG51bGxw
dHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjU291cmNlKCksIFdURjo6bnVs
bG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBcCisgICAgcmV0dXJuIHZtLmJ1aWx0aW5F
eGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCB2
bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpAQCAtOTYsNyArOTYsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JV
SUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiAjZGVmaW5lIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBvdmVycmlkZGVuTmFtZSwgYXJn
dW1lbnRDb3VudCkgXFwKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJh
dG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCi0gICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxscHRyLCB2bS5idWlsdGlu
RXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpLCBXVEY6Om51bGxvcHQsIHNfIyNjb2Rl
TmFtZSMjSW50cmluc2ljKTsgXAorICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31f
QlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJ
TFRJTl9HRU5FUkFUT1IKQEAgLTEwOCw3ICsxMDgsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNI
XyR7b2JqZWN0TWFjcm99X0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiBK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkg
XFwKIHtcXAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+
YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4
ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9u
cygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBXVEY6Om51
bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUj
I0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0
aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6
Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9
X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBE
RUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKQEAgLTEyMCw3ICsxMjAsNyBAQCAke21hY3JvUHJlZml4
fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IpCiBKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihKU0M6OlZNJiB2bSkgXFwKIHtc
XAogICAgIEpTVk1DbGllbnREYXRhKiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKTsgXFwKLSAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1dGFi
bGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLiR7
b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBXVEY6Om51bGxvcHQs
IHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKKyAgICByZXR1cm4gY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI0V4ZWN1
dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgY2xpZW50RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygp
LiR7b2JqZWN0TmFtZUxDfUJ1aWx0aW5zKCkuY29kZU5hbWUjI1NvdXJjZSgpLCBzdGQ6Om51bGxv
cHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXFwKIH0KICR7bWFjcm9QcmVmaXh9X0ZPUkVB
Q0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikK
ICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKaW5kZXggZTUxNzU3ZTliOGZjNjQyODc4MjdjMTZkMDJk
MjFjYzIxOGZiMTMyNi4uODE1ZGNmODczNzRhYTNiMzU3OTg5ZGY2N2ZlNzJiYTk0MGIzM2E1OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKQEAgLTM0
MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRBbHJlYWR5RGlzYXNzZW1ibGUoKSB7
IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGNsZWFyUHJvZmlsZVN0YXRpc3RpY3MoKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3RpY3MoT3B0aW9uYWw8UHJpbnRTdHJl
YW0qPiA9IFdURjo6bnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
ZHVtcFByb2ZpbGVTdGF0aXN0aWNzKE9wdGlvbmFsPFByaW50U3RyZWFtKj4gPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGFkZE1haW5U
aHJlYWRGaW5hbGl6YXRpb25UYXNrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmlu
ZGV4IDRmZWQ1ZGU4MzJiMGNhNThiZGZiOWQzYmEwMDcyOWJiZjIzM2RlMTkuLjU3ZDViOTRmN2I4
NTI0ZDE5MTIzNmMxZWRlZTlkOWY4NWRlMGE3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC00MDU3LDcgKzQw
NTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUG9zaXRpdmVPclplcm87CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggZTQ0OWVmNzhjZDk3NzgyZjIwMWY4MWVkNzgx
OGE1MmI1Y2UwMjE0Ni4uNDhlOTUwZTljOGU0MWNkY2JkNmY1NDczZGY2M2Y0NThhNWE5MTg1YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtMzEyMSw3ICszMTIxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuIFBvc2l0aXZlT3JaZXJvOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKaW5kZXggZWUzM2MyMTQ5N2I5NTJjOWQyMzZk
YjRkMzU3NmU5YmE4OTYzYzY1YS4uYzI3ZmI0YzEzNGExNDZlZThiZTgxOTk0ZDJjMTJhOWUzMjYz
NDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFs
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCkBA
IC0xNTQsNyArMTU0LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IENoZWNrU3BlY2lhbDo6c2hvdWxk
VHJ5QWxpYXNpbmdEZWYoSW5zdCYgaW5zdCkKIHsKICAgICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+
IGJyYW5jaERlZiA9IGhpZGRlbkJyYW5jaChpbnN0KS5zaG91bGRUcnlBbGlhc2luZ0RlZigpKQog
ICAgICAgICByZXR1cm4gKmJyYW5jaERlZiArIDE7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQ2FsbEhlbHBlcnM6Okp1bXAgQ2hlY2tT
cGVjaWFsOjpnZW5lcmF0ZShJbnN0JiBpbnN0LCBDQ2FsbEhlbHBlcnMmIGppdCwgR2VuZXJhdGlv
bkNvbnRleHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcAppbmRl
eCBlODUzYTIwMmMyNDgwMjJhNzZhN2UwMzQzY2E0MDAzNjk3Yjg2MDk1Li5iMGViYTVhNDEzMjBk
ZTg3NjgzODdjNDg5MTg3YmY3M2RhZTNlMmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb21tb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bW1vbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgT3B0aW9uYWw8R1BSUmVnPiBwaW5uZWRFeHRlbmRl
ZE9mZnNldEFkZHJSZWdpc3RlcigpCiAjaWYgQ1BVKEFSTTY0KQogICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKICNlcnJvciBV
bmhhbmRsZWQgYXJjaGl0ZWN0dXJlLgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCmluZGV4IDg3ZWZiOTc2YzBlYmFjMWE0OTFlMTcxMjI3YTZhYzhiMTNj
MTE4OTUuLmI5N2IyODUwNzJmNTNlN2E1ZDQ5NWVkMDE2NDI3NjNjNDRiMGYyYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC01MDEsMTIgKzUwMSwxMiBA
QCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUg
PSBWYWx1ZTo6SXNMZWdhbE9mZnNldDxJbnQ+PgotICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzY2Fs
ZUZvclNobChWYWx1ZSogc2hsLCBJbnQgb2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBX
VEY6Om51bGxvcHQpCisgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBz
aGwsIEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkKICAg
ICB7CiAgICAgICAgIGlmIChzaGwtPm9wY29kZSgpICE9IFNobCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoIXNobC0+Y2hpbGQoMSktPmhhc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdW5z
aWduZWQgbG9nU2NhbGUgPSBzaGwtPmNoaWxkKDEpLT5hc0ludDMyKCk7CiAgICAgICAgIGlmIChz
aGwtPnR5cGUoKSA9PSBJbnQzMikKICAgICAgICAgICAgIGxvZ1NjYWxlICY9IDMxOwpAQCAtNTE2
LDEwICs1MTYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdG8gc2lnbmVkIHNpbmNlIHRoYXQn
cyB3aGF0IGFsbCBvZiBvdXIgQVBJcyB3YW50LgogICAgICAgICBpbnQ2NF90IGJpZ1NjYWxlID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KDEpIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb2dTY2Fs
ZSk7CiAgICAgICAgIGlmICghaXNSZXByZXNlbnRhYmxlQXM8aW50MzJfdD4oYmlnU2NhbGUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHVuc2lnbmVkIHNjYWxlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
YmlnU2NhbGUpOwogICAgICAgICBpZiAoIUFyZzo6aXNWYWxpZEluZGV4Rm9ybShzY2FsZSwgb2Zm
c2V0LCB3aWR0aCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHNjYWxlOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCmluZGV4IDZjZmQ4YTlmMmZjODc1
YmYzOTQzZjc5N2NjZmRhMWJmMWZiM2IyNjkuLjdjMmZhMGMwOTI0OGNhN2ZjYTRmNDc2NWUwMjZl
NGIyZWY0OTIxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29k
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcApAQCAtNDYs
MTkgKzQ2LDE5IEBAIE9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wY29kZSBvcGNv
ZGUsIFR5cGUgdHlwZSkKICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICBpZiAodHlwZS5pc0lu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJFcXVhbDsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEdyZWF0
ZXJUaGFuOgogICAgICAgICBpZiAodHlwZS5pc0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIExl
c3NFcXVhbDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBjYXNlIExlc3NFcXVhbDoKICAgICAgICAgaWYgKHR5cGUuaXNJbnQo
KSkKICAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEdyZWF0ZXJF
cXVhbDoKICAgICAgICAgaWYgKHR5cGUuaXNJbnQoKSkKICAgICAgICAgICAgIHJldHVybiBMZXNz
VGhhbjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBjYXNlIEFib3ZlOgogICAgICAgICByZXR1cm4gQmVsb3dFcXVhbDsKICAg
ICBjYXNlIEJlbG93OgpAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxPcGNvZGU+IGludmVydGVk
Q29tcGFyZShPcGNvZGUgb3Bjb2RlLCBUeXBlIHR5cGUpCiAgICAgY2FzZSBCZWxvd0VxdWFsOgog
ICAgICAgICByZXR1cm4gQWJvdmU7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRTcGVjaWFsLmNwcAppbmRleCA5
NGY1OGEzNzNlODJkNzQ0YjZlOGM0MzZmZjgwNzkxZmNkYTg1ODQ2Li5mOGRjMzY1MWY5NGNlNTgx
ZDk0MDZkYjMzMWE4OTg0MzAxOGM5MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgUGF0Y2hw
b2ludFNwZWNpYWw6OmZvckVhY2hBcmcoSW5zdCYgaW5zdCwgY29uc3QgU2NvcGVkTGFtYmRhPElu
c3Q6OkVhY2hBcmdDCiAgICAgICAgIGNhbGxiYWNrKGluc3QuYXJnc1thcmdJbmRleF0sIHJvbGUs
IGJhbmtGb3JUeXBlKGFyZ1R5cGUpLCB3aWR0aEZvclR5cGUoYXJnVHlwZSkpOwogICAgIH0KIAot
ICAgIGZvckVhY2hBcmdJbXBsKDAsIGFyZ0luZGV4LCBpbnN0LCBTYW1lQXNSZXAsIFdURjo6bnVs
bG9wdCwgY2FsbGJhY2ssIFdURjo6bnVsbG9wdCk7CisgICAgZm9yRWFjaEFyZ0ltcGwoMCwgYXJn
SW5kZXgsIGluc3QsIFNhbWVBc1JlcCwgc3RkOjpudWxsb3B0LCBjYWxsYmFjaywgc3RkOjpudWxs
b3B0KTsKICAgICBhcmdJbmRleCArPSBpbnN0Lm9yaWdpbi0+bnVtQ2hpbGRyZW4oKTsKIAogICAg
IGZvciAodW5zaWduZWQgaSA9IHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsgaS0t
OykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCmluZGV4IGEwZGE3MTg4N2NkMjY4
NWRlOTk2MzFlOTFhNDQ3NjI2YTNjMGM0OGEuLjVmMGEzYTQ5ZDRhYmUzMzlkNzc5OTMyMWVlZDNl
YjhkNzczMDJhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNTg2
LDcgKzU4Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBh
IFdpZHRoLCB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3UncmUgdXNpbmcgdGhl
IHJpZ2h0IHdpZHRoLgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2Fs
ZSwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gV1RGOjpudWxsb3B0KQorICAgIHN0YXRpYyBib29s
IGlzVmFsaWRTY2FsZSh1bnNpZ25lZCBzY2FsZSwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3Rk
OjpudWxsb3B0KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzY2FsZSkgewogICAgICAgICBjYXNl
IDE6CkBAIC0xMTgyLDcgKzExODIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zmc2V0PEludD4+Ci0gICAg
c3RhdGljIGJvb2wgaXNWYWxpZEFkZHJGb3JtKEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3
aWR0aCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQWRkckZvcm0oSW50
IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAg
ICAgICAgaWYgKGlzWDg2KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEyMDgsNyAr
MTIwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5
cGVuYW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1Zh
bGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQgb2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4g
d2lkdGggPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZEluZGV4Rm9ybSh1
bnNpZ25lZCBzY2FsZSwgSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpu
dWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKCFpc1ZhbGlkU2NhbGUoc2NhbGUsIHdpZHRoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMjIsNyArMTIyMiw3IEBAIHB1YmxpYzoK
ICAgICAvLyBJZiB5b3UgZG9uJ3QgcGFzcyBhIHdpZHRoIHRoZW4gdGhpcyBvcHRpbWlzdGljYWxs
eSBhc3N1bWVzIHRoYXQgeW91J3JlIHVzaW5nIHRoZSByaWdodCB3aWR0aC4gQnV0CiAgICAgLy8g
dGhlIHdpZHRoIGlzIHJlbGV2YW50IHRvIHZhbGlkaXR5LCBzbyBwYXNzaW5nIGEgbnVsbCB3aWR0
aCBpcyBvbmx5IHVzZWZ1bCBmb3IgYXNzZXJ0aW9ucy4gRG9uJ3QKICAgICAvLyBwYXNzIG51bGwg
d2lkdGhzIHdoZW4gY2FzY2FkaW5nIHRocm91Z2ggQXJncyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc2Vs
ZWN0b3IhCi0gICAgYm9vbCBpc1ZhbGlkRm9ybShPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBXVEY6
Om51bGxvcHQpIGNvbnN0CisgICAgYm9vbCBpc1ZhbGlkRm9ybShPcHRpb25hbDxXaWR0aD4gd2lk
dGggPSBzdGQ6Om51bGxvcHQpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQoKSkg
ewogICAgICAgICBjYXNlIEludmFsaWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcAppbmRleCA5MDQxODFiNTc5NTNjOWQ3MjRmMjVmNjU4MTQ0ODUxOTk5ZGZkM2YxLi5j
MDRmMDk1Y2RkNjM3YWNlMzY2MjdiMmU0MThhOGJiNDQ1NjY4MzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBPcHRpb25hbDx1
bnNpZ25lZD4gQ29kZTo6ZW50cnlwb2ludEluZGV4KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAog
ICAgICAgICBpZiAobV9lbnRyeXBvaW50c1tpXS5ibG9jaygpID09IGJsb2NrKQogICAgICAgICAg
ICAgcmV0dXJuIGk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBDb2RlOjpzZXRDYWxsZWVTYXZlUmVnaXN0ZXJBdE9m
ZnNldExpc3QoUmVnaXN0ZXJBdE9mZnNldExpc3QmJiByZWdpc3RlckF0T2Zmc2V0TGlzdCwgU3Rh
Y2tTbG90KiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggYzFiMDMxNzI3YmNkODlkNzg2ZjU4MDAyNjhiNTJi
YTgxZmMwMTVmMy4uOTc1MGFkZjdmNDkwZjA5MTc3NTkzMWU1MTMxZGE0NzNhZjA2ZjhjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGls
bHMuY3BwCkBAIC01MDksMTQgKzUwOSwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGFy
Zy5pc1JlZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0IFJlZ0NvbnN0KiBhbGlhcyA9
IGdldFJlZ0NvbnN0KGFyZy5yZWcoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlh
cy0+Y29uc3RhbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGFyZy5pc1N0YWNrKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3QgU2xvdENv
bnN0KiBhbGlhcyA9IGdldFNsb3RDb25zdChhcmcuc3RhY2tTbG90KCkpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYWxpYXMtPmNvbnN0YW50OwotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBjbG9iYmVyKGNv
bnN0IEFyZyYgYXJnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJJbnN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0SW5s
aW5lcy5oCmluZGV4IGFmMGQyMDM5ZGQ4NjU4ZTMwYWUxZjkxZjk1YzFmZjE2MTY5Y2VkNTUuLmRh
YTg5NTMwNGE0Y2M4MzJiNzFlNGM0N2JlMWMzYTU5ZTBlMjMzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySW5zdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKQEAgLTExOSw3ICsxMTksNyBAQCBp
bmxpbmUgYm9vbCBJbnN0OjphZG1pdHNFeHRlbmRlZE9mZnNldEFkZHIoQXJnJiBhcmcpCiBpbmxp
bmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkKIHsKICAg
ICBpZiAoIWlzWDg2KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKSB7CiAgICAgY2Fz
ZSBBZGQzMjoKQEAgLTE0Nyw3ICsxNDcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IElu
c3Q6OnNob3VsZFRyeUFsaWFzaW5nRGVmKCkKICAgICBjYXNlIE11bEZsb2F0OgogI2lmIENQVShY
ODYpIHx8IENQVShYODZfNjQpCiAgICAgICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNB
VlgoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAgICAgICAgIGlmIChhcmdzLnNpemUoKSA9PSAzKQog
ICAgICAgICAgICAgcmV0dXJuIDI7CkBAIC0xNzgsNyArMTc4LDcgQEAgaW5saW5lIE9wdGlvbmFs
PHVuc2lnbmVkPiBJbnN0OjpzaG91bGRUcnlBbGlhc2luZ0RlZigpCiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIGJvb2wgaXNTaGlmdFZhbGlkKGNvbnN0IEluc3Qm
IGluc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNp
YWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNwcAppbmRl
eCBjMGMwMTM2OWE5YWFhMjRlYzY2YTZlMTJkOWQ5MDgwYzRlZDc2MzgyLi45NTVlOGE5NzAxNTJj
N2IwMjYzNmQzOGFjMTE5MDBkNWUzNzQyNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BlY2lhbC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQ1N0cmluZyBTcGVjaWFsOjpu
YW1lKCkgY29uc3QKIAogT3B0aW9uYWw8dW5zaWduZWQ+IFNwZWNpYWw6OnNob3VsZFRyeUFsaWFz
aW5nRGVmKEluc3QmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBTcGVjaWFsOjppc1Rlcm1pbmFsKEluc3QmKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cAppbmRleCA2NjQxN2M0MTMyMWQyNDc5YjU2ODg4ZmFhZmFkZGE5Y2NkOWMzZWMzLi5lOGU3NWY2
ZDE2OTQ4ZmYzNTgzODA2OWQ5NTI5NDEyYWExYTRmZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMjUxLDcg
KzI1MSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6
OmNyZWF0ZUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCAmbWV0YWRhdGEsIGtpbmQs
IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwg
V1RGOjpudWxsb3B0LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIG5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyLCBwcml2YXRlQnJhbmRSZXF1aXJlbWVudCwgaXNCdWlsdGluRGVmYXVsdENsYXNz
Q29uc3RydWN0b3IpOworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2Us
ICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpD
bGFzc2ljLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwg
bmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVCcmFuZFJlcXVpcmVtZW50LCBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0
YWJsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDJhNzU4OGQ2ZDVjYzdhMzU4
ZThjYzFjODkzMzFjYjkyMWY3OWI3OWEuLjMzOWNhYTk0YTM0MzQ5N2MyN2UyZDk3MzNjZWQ2Yjc0
ZjhjMDRmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTExOSwxMCArMTE5LDEwIEBA
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0m
IHZtKQogT3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
IHsKICAgICBpZiAoIWlkZW50LmlzUHJpdmF0ZU5hbWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9ieXRlY29kZUludHJpbnNpY01hcC5maW5kKGlkZW50LmltcGwoKSk7CiAgICAgaWYgKGl0
ZXJhdG9yID09IG1fYnl0ZWNvZGVJbnRyaW5zaWNNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0
ZXJhdG9yLT52YWx1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA3ZGYwNWUxMGJjOTBiNjU2ZjM1MDNjODVjMDU0YzVkM2FmYTdjNmI5
Li4xY2Y5MzJiNjVmNTk1ZTFiZTAxNWU4YmI5Zjg2Yjg5M2U1ZTEyNzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKQog
ICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0
ZWRSYW5nZShvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+
dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2Zp
bGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCh2bSwgdGhp
cywgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVy
RXhlY3V0YWJsZS0+c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhl
Y3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKKyAgICAgICAgbV9mdW5jdGlv
bkRlY2xzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BM
ZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIHN0ZDo6bnVsbG9wdCwg
Tm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkp
KTsKICAgICB9CiAKICAgICBtX2Z1bmN0aW9uRXhwcnMgPSBGaXhlZFZlY3RvcjxXcml0ZUJhcnJp
ZXI8RnVuY3Rpb25FeGVjdXRhYmxlPj4odW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rp
b25FeHBycygpKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
ICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0g
dW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihpKTsKICAgICAgICAgaWYgKHNob3VsZFVw
ZGF0ZUZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSkKICAgICAgICAgICAgIHZtLmZ1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1dGVkUmFuZ2Uob3duZXJFeGVjdXRhYmxlLT5z
b3VyY2VJRCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9mZnNldCgp
LCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7Ci0gICAgICAg
IG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZS0+bGlu
ayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpLCBXVEY6
Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbigpKSk7CisgICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQodm0sIHRoaXMsIHVu
bGlua2VkRXhlY3V0YWJsZS0+bGluayh2bSwgdG9wTGV2ZWxFeGVjdXRhYmxlLCBvd25lckV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIE5vSW50cmluc2ljLCBvd25lckV4ZWN1dGFi
bGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpKSk7CiAgICAgfQogCiAgICAgaWYgKHVubGlu
a2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCkpIHsKQEAgLTM0NjUsNyAr
MzQ2NSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBj
KQogICAgIGlmIChPcHRpb25hbDxDb2RlT3JpZ2luPiBjb2RlT3JpZ2luID0gbV9qaXRDb2RlLT5m
aW5kUEModGhpcywgcGMpKQogICAgICAgICByZXR1cm4gY29kZU9yaWdpbjsKIAotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoSklUKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAppbmRleCAxYzU5OTM3MzMxM2Jm
ODgxMDNjOTViZjZkZTJlMmM0ZDkxMTQ5MDFiLi4xOWEzNTU2Y2RlMWE0Mjc3ODFjMTNlMDZlMGM1
NTI1ZWE2ZGY0ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKQEAgLTUyNywyMSArNTI3
LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBh
cmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGlmICghY3Vy
cmVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzQmVlbkZsYXR0ZW5l
ZEJlZm9yZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc3RydWN0dXJlLT5m
bGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgYXNPYmplY3QoY3VycmVudCkpOwogICAgICAg
ICAgICAgZmxhdHRlbmVkRGljdGlvbmFyeSA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aXNQcm94eSgpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudCA9PSB0YXJnZXQpIHsKICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG90eXBlQ2hh
aW5DYWNoaW5nU3RhdHVzPiBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKEpTR2xvYmFsT2JqZQogICAg
ICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVBy
b3RvKCkpIHsKICAgICAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICB1c2VzUG9seVByb3RvID0gdHJ1ZTsKICAgICAgICAgICAgIHByb3RvdHlwZSA9
IHN0cnVjdHVyZS0+cHJvdG90eXBlRm9yTG9va3VwKGdsb2JhbE9iamVjdCwgY3VycmVudCk7CiAg
ICAgICAgIH0gZWxzZQpAQCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b3R5
cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmpl
CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZCAmJiAhIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFByb3RvdHlw
ZUNoYWluQ2FjaGluZ1N0YXR1cyByZXN1bHQ7CiAgICAgcmVzdWx0LnVzZXNQb2x5UHJvdG8gPSB1
c2VzUG9seVByb3RvOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5jcHAKaW5kZXggNTlmYTY1NmM3NWYxNmU2MWIzZTFkZWNlMzQ1NDFjYjZiZjMw
MzI5Yy4uODUyNzk0MGJmMDU0NjdhM2QxZGM2NGNiOTEzMjEzODU2MWFkOGEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkBAIC03
MTgsNyArNzE4LDcgQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5cGU+IHNwZWN1bGF0aW9uRnJvbUpT
VHlwZShKU1R5cGUgdHlwZSkKICAgICBjYXNlIERhdGFWaWV3VHlwZToKICAgICAgICAgcmV0dXJu
IFNwZWNEYXRhVmlld09iamVjdDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAppbmRleCAwMDQ0YTYyZGMyNTdkN2E5NmU5ZjVlYWNhMDAyMTQ0NzdmMzIy
MzA5Li5kMTY5MmUxNzZlMTBlODFhYjA1OWEyZGJlZWIxNmNmNzYzOTdkNjdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgaW50IG92
ZXJyaWRlTGluZU51bWJlciwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uKTsKIAogICAgIFNvdXJjZUNvZGUgbGlua2VkU291cmNlQ29kZShjb25z
dCBTb3VyY2VDb2RlJikgY29uc3Q7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVuY3Rpb25FeGVj
dXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVjdXRhYmxlLCBj
b25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9wdGlvbmFsPGludD4gb3ZlcnJpZGVMaW5l
TnVtYmVyID0gV1RGOjpudWxsb3B0LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgYm9vbCBpc0lu
c2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBsaW5rKFZNJiwgU2NyaXB0RXhlY3V0YWJsZSogdG9wTGV2ZWxFeGVj
dXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIE9wdGlvbmFsPGludD4gb3Zl
cnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0LCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywg
Ym9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSk7CiAKICAgICB2b2lkIGNsZWFy
Q29kZShWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiZGJhYTIxNDk1ZTAxM2U5
N2NmNTlkZDU0ZTc1M2VjOGIwOTIzMGU0Li41ZGE2NTI3OGQ3ZjBmNzBjYTJhNDIyMDY5ODNiZTVj
NTMyYzE2MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzAyNSw3ICszMDI1LDcgQEAgT3B0aW9u
YWw8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJs
ZVByaXZhdGVBY2Nlc3NOYW0KICAgICB9CiAKICAgICBpZiAoIXJlc3VsdC5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDQ2MCw3ICs0NDYwLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRUZW1wbGF0ZU9iamVjdChSZWdpc3RlcklEKiBkc3Qs
IFRhZ2dlZFRlbXAKICAgICAgICAgQVNTRVJUKHN0cmluZy0+cmF3KCkpOwogICAgICAgICByYXdT
dHJpbmdzLmFwcGVuZChzdHJpbmctPnJhdygpLT5pbXBsKCkpOwogICAgICAgICBpZiAoIXN0cmlu
Zy0+Y29va2VkKCkpCi0gICAgICAgICAgICBjb29rZWRTdHJpbmdzLmFwcGVuZChXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgY29va2VkU3RyaW5ncy5hcHBlbmQoc3RyaW5nLT5jb29r
ZWQoKS0+aW1wbCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYTQ5Y2E3MDc0NTY5ZmNhNWRlNmM5ZWRh
MmYwYTZiZmJmZDVmM2YyOS4uN2MxOGI4MTNkZmU2MzZkZDY0Y2M1OTk4ZDUyZjE0ZWI2MWU3MzRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMzAyNiw3ICszMDI2LDcgQEAgUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoK
ICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpICYmIHZhbHVlLmFzSW50MzIoKSA+
PSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVUludDMyUmVzdWx0OjpDb25zdGFudDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9OwogICAgICAgICBhdXRvIGxlZnRS
ZXN1bHQgPSBpc1VJbnQzMihtX2V4cHIxKTsKICAgICAgICAgYXV0byByaWdodFJlc3VsdCA9IGlz
VUludDMyKG1fZXhwcjIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyUGFyc2VEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKaW5kZXggN2ZjYjU4NTAwMDM2NjA5MjRiNGI3OTk0ZmNh
N2YxMDZmMDgwYjZmYy4uNTY4ZmUzMzhhYTA2NzUxZjI3NmQzNTRlMmI4ZTAwMWRhM2FlMzUzMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VE
YXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJz
ZURhdGEuY3BwCkBAIC00MCw3ICs0MCw3IEBAIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiBEZWJ1
Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uCiAgICAg
ICAgIHJldHVybiBhLnBvc2l0aW9uLmxpbmUgPCBiLnBvc2l0aW9uLmxpbmU7CiAgICAgfSk7CiAg
ICAgaWYgKGl0ID09IG1fcG9zaXRpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGxpbmUgPT0gaXQt
PnBvc2l0aW9uLmxpbmUgJiYgY29sdW1uID09IGl0LT5wb3NpdGlvbi5jb2x1bW4oKSkgewogICAg
ICAgICAvLyBGb3VuZCBhbiBleGFjdCBwb3NpdGlvbiBtYXRjaC4gUm9sbCBmb3J3YXJkIGlmIHRo
aXMgd2FzIGEgZnVuY3Rpb24gRW50cnkuCkBAIC05OSw3ICs5OSw3IEBAIE9wdGlvbmFsPEpTVGV4
dFBvc2l0aW9uPiBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpicmVha3BvaW50TG9jYXRpb25Gb3JM
aW5lQ29sdW1uCiAgICAgfQogCiAgICAgLy8gTm8gcGF1c2UgcG9zaXRpb25zIGZvdW5kLgotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBEZWJ1Z2dlclBhdXNlUG9zaXRpb25zOjpzb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCmluZGV4IDg3ZTk5YTk0ZjYzYzdlYTM1NmQzZGMxZWJkMjM4ZjU3NWJh
ZmQ4MzcuLjI0NDk4MDFmZjBiNGUxMTZiZDRiZTQ5OWI1M2NkNjRlMzhkYTMxMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIE9w
dGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBKSVRDb2RlOjpmaW5hbGl6ZU9TUkVudHJ5cG9pbnRz
KFZlY3RvcjxPU1JFbnRyeURhdGE+JiYgb3NyRW50cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlMzM2OThlOGU2NTFhMzY5MzE0OWJjMDgyOWM1
NjM5YmJkYzUzMTkzLi43NTEzYjRkNGJlMGQwOWZhMTAzZjU4YjE3N2UzYWZiZWM5ODBhMzVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE4MjIs
NyArMTgyMiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQ4QXJy
YXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYWxPCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQ4QXJyYXk+KGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTSW50OEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0ludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgs
IGNoYXIqIHZlY3RvcikpCkBAIC0xODM4LDcgKzE4MzgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3SW50MTZBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0ds
b2JhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9n
dWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTSW50MTZBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1
ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xODU0LDcgKzE4
NTQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdp
dGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2JhbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTSW50MzJBcnJheT4oZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk5ld1VpbnQ4QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDhBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2Jh
bAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTVWludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwg
MCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsK
IH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xhbXBlZEFy
cmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTg4Niw3
ICsxODg2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQ4Q2xh
bXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEoKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4Q2xhbXBlZEFycmF5PihnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aFNpemUsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld1VpbnQxNkFycmF5V2l0aE9uZUFyZ3Vt
ZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3Vt
ZW50czxKU1VpbnQxNkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0
b3IpKQpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld1VpbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmEKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBE
RUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1Vp
bnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6
Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQzMkFycmF5PihnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAog
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhTaXpl
LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE5MzQsNyArMTkzNCw3IEBA
IEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25l
QXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAg
ICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMyQXJyYXk+KGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzPEpTRmxvYXQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hh
ciogdmVjdG9yKSkKQEAgLTE5NTAsNyArMTk1MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVu
dHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQp
KTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ0ludDY0QXJy
YXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xOTY2LDcg
KzE5NjYsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRB
cnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsbwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFN
RSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnSW50NjRBcnJheT4oZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVj
dHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aFNpemUsIGNoYXIqLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMy
X3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTk4Miw3ICsxOTgyLDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0JpZ1VpbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2wKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlW
aWV3V2l0aEFyZ3VtZW50czxKU0JpZ1VpbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0JpZ1VpbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbk5ld0FycmF5SXRlcmF0b3IsIEpTQ2VsbCosIChWTSogdm1Qb2ludGVyLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBjNGM4
MjhmNGZmMWQ5Y2E0NjUxYTM3NmNhZGUyZDAyZDVlYjU5MDY5Li5kMjkzZWM3NDgxZjkyMzgyNGY3
ZjhjYzdlMTdkZmJmZmEwMjllMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhhbmRsZVZhbHVlc0lm
TmVjZXNzYXJ5KCkKIAogICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSBtX211c3RIYW5kbGVWYWx1
ZXMubnVtYmVyT2ZMb2NhbHMoKTsgbG9jYWwtLTspIHsKICAgICAgICAgaWYgKCFsaXZlbmVzc1ts
b2NhbF0pCi0gICAgICAgICAgICBtX211c3RIYW5kbGVWYWx1ZXMubG9jYWwobG9jYWwpID0gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgbV9tdXN0SGFuZGxlVmFsdWVzLmxvY2FsKGxvY2FsKSA9
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCA5ODFlODZjZDdkZGIwMWNhNDk1NDNiNGU1
Mzc2MDAxYmU4MTYwMTI2Li5lNTAwOTViYjZhZmVmODdmN2ExZTEyOTY3ZDEyNGI4ODQ4NTI3ZjQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRv
ci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaml0LT5tX291dE9mTGluZVN0
cmVhbUluZGV4ID0gbV9zdHJlYW1JbmRleDsKICAgICAgICAgaml0LT5tX29yaWdpbiA9IG1fb3Jp
Z2luOwogICAgICAgICBnZW5lcmF0ZUludGVybmFsKGppdCk7Ci0gICAgICAgIGppdC0+bV9vdXRP
ZkxpbmVTdHJlYW1JbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgaml0LT5tX291dE9mTGlu
ZVN0cmVhbUluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQp
CiAgICAgICAgICAgICBqaXQtPm1faml0LmFib3J0V2l0aFJlYXNvbihERkdTbG93UGF0aEdlbmVy
YXRvckZlbGxUaHJvdWdoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4ODNjZWVmOWNhMDNiODRmMTZl
ZTY0NGU2ZDI4ZjguLjM1ZDdmZTViYTI1NWNmMTEwNDg5NTM1ZjgxMzNlNzg1ZmIzZGYxYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC00MTgsNyArNDE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6cnVuU2xvd1BhdGhHZW5lcmF0
b3JzKFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciYgcGNUb0NvZGVPcmkKICAgICAgICAgbV9vdXRP
ZkxpbmVTdHJlYW1JbmRleCA9IHNsb3dQYXRoTGFtYmRhLnN0cmVhbUluZGV4OwogICAgICAgICBw
Y1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIuYXBwZW5kSXRlbShtX2ppdC5sYWJlbElnbm9yaW5nV2F0
Y2hwb2ludHMoKSwgY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIHNsb3dQ
YXRoTGFtYmRhLmdlbmVyYXRvcigpOwotICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0gc3RkOjpudWxs
b3B0OwogICAgIH0KIH0KIApAQCAtOTEyNiw3ICs5MTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJs
aWNMZW5ndGgoKSksIGxlbmd0aEdQUik7CiAKICAgICAgICAgaWYgKG5vZGUtPm51bUNoaWxkcmVu
KCkgPT0gNCkKLSAgICAgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAyKSwgV1RGOjpudWxsb3B0LCBsZW5ndGhHUFIsIHRlbXBHUFIp
OworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxvcHQsIGxlbmd0aEdQUiwgdGVtcEdQUik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1vdmUobGVuZ3RoR1BSLCB0ZW1wR1BSKTsKIApA
QCAtOTEzNiw3ICs5MTM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xp
Y2UoTm9kZSogbm9kZSkKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wU3RhcnRJbmRleCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyBzdGFydEdQUiA9IHRl
bXBTdGFydEluZGV4LmdwcigpOwotICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleCht
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBXVEY6Om51bGxvcHQsIGxlbmd0aEdQ
Uiwgc3RhcnRHUFIpOworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpLCBzdGQ6Om51bGxvcHQsIGxlbmd0aEdQUiwgc3Rh
cnRHUFIpOwogCiAgICAgICAgICAgICBhdXRvIHRvb0JpZyA9IG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZSwgc3RhcnRHUFIsIHRlbXBHUFIpOwogICAgICAgICAgICAgbV9qaXQu
c3ViMzIoc3RhcnRHUFIsIHRlbXBHUFIpOyAvLyB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgd2UnbGwg
bWFrZS4KQEAgLTkyMjYsMTAgKzkyMjYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICB9IGVsc2UgewogICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSwgdGVtcFZhbHVlKTsKICAgICAgICAgaWYgKG5vZGUtPm51bUNoaWxk
cmVuKCkgPT0gNCkKLSAgICAgICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwgV1RGOjpudWxsb3B0LCB0ZW1wVmFsdWUsIHRlbXBH
UFIpOworICAgICAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxvcHQsIHRlbXBWYWx1ZSwgdGVtcEdQUik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faml0Lm1vdmUodGVtcFZhbHVlLCB0ZW1wR1BSKTsK
LSAgICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDEpLCBXVEY6Om51bGxvcHQsIHRlbXBWYWx1ZSwgbG9hZEluZGV4KTsKKyAgICAgICAg
ZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEp
LCBzdGQ6Om51bGxvcHQsIHRlbXBWYWx1ZSwgbG9hZEluZGV4KTsKICAgICB9CiAKICAgICBHUFJU
ZW1wb3JhcnkgdGVtcDUodGhpcyk7CkBAIC05MjgzLDcgKzkyODMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSksIGxlbmd0aEdQUik7CiAKICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4o
KSA9PSA0KQotICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMiksIFdURjo6bnVsbG9wdCwgbGVuZ3RoR1BSLCBpbmRleEdQUik7Cisg
ICAgICAgIGVtaXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAyKSwgc3RkOjpudWxsb3B0LCBsZW5ndGhHUFIsIGluZGV4R1BSKTsKICAgICBlbHNlCiAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBpbmRleEdQUik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCmluZGV4IGJmMzY0NDFhNzM1YWE1ZTU4N2Qy
OTkwZmNhZTE2OTdlOGJmZjYyY2YuLjBjNjViOTYwN2QyOTM1YWQwMWUxY2EwMTQ3OGE3NDViN2Fh
OGEyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcApAQCAtMTc5
LDcgKzE3OSw3IEBAIE9wdGlvbmFsPENvZGVPcmlnaW4+IEpJVENvZGU6OmZpbmRQQyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgdm9pZCogcGMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggYTcxYjcw
MmY2ZjZiYzBjYzA4ZWE4YzNjMTNlMTgwODg0NGVlOWU0OC4uZDIxZTcxNmIyODZiZmFjOWE3NjU1
NzM0OTY0NTI1OTg5NmU1ZTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAg
LTIzNDAsNyArMjM0MCw3IEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbigpCiAKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2NvbGxlY3Rpb25TY29wZSk7CiAgICAgbV9sYXN0Q29sbGVjdGlv
blNjb3BlID0gbV9jb2xsZWN0aW9uU2NvcGU7Ci0gICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9jb2xsZWN0aW9uU2NvcGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBm
b3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5kaWRH
YXJiYWdlQ29sbGVjdChzY29wZSk7CkBAIC0yOTMzLDcgKzI5MzMsNyBAQCB2b2lkIEhlYXA6Om5v
dGlmeUlzU2FmZVRvQ29sbGVjdCgpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyAqbV90aHJlYWRMb2NrIH07CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9yZXF1ZXN0cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3JlcXVlc3RzLmFwcGVuZChXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcmVxdWVzdHMuYXBwZW5kKHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXN0R3JhbnRlZFRpY2tldCsrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLT5ub3RpZnlPbmUobG9ja2VyKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRl
eCBlOTk3NzIzZDFmYzdmNTQ3NWRhZDliYWE5NjU4MmUzZDM2N2E3ZGNiLi4zYWQ3ODFhY2M4MTkw
MDU4YjQwMmE3MjA4MzgwZGVjNTAxZGIyM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CkBAIC0xOTAsOCArMTkwLDggQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ29sbGVjdEhldXJp
c3RpYygpOwogICAgIAogICAgIC8vIFF1ZXVlIHVwIGEgY29sbGVjdGlvbi4gUmV0dXJucyBpbW1l
ZGlhdGVseS4gVGhpcyB3aWxsIG5vdCBxdWV1ZSBhIGNvbGxlY3Rpb24gaWYgYSBjb2xsZWN0aW9u
Ci0gICAgLy8gb2YgZXF1YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBleGlzdHMuIEZ1bGwgY29sbGVj
dGlvbnMgYXJlIHN0cm9uZ2VyIHRoYW4gV1RGOjpudWxsb3B0IGNvbGxlY3Rpb25zCi0gICAgLy8g
YW5kIFdURjo6bnVsbG9wdCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBFZGVuIGNvbGxl
Y3Rpb25zLiBXVEY6Om51bGxvcHQgbWVhbnMgdGhhdCB0aGUgR0MgY2FuCisgICAgLy8gb2YgZXF1
YWwgb3IgZ3JlYXRlciBzdHJlbmd0aCBleGlzdHMuIEZ1bGwgY29sbGVjdGlvbnMgYXJlIHN0cm9u
Z2VyIHRoYW4gc3RkOjpudWxsb3B0IGNvbGxlY3Rpb25zCisgICAgLy8gYW5kIHN0ZDo6bnVsbG9w
dCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBFZGVuIGNvbGxlY3Rpb25zLiBzdGQ6Om51
bGxvcHQgbWVhbnMgdGhhdCB0aGUgR0MgY2FuCiAgICAgLy8gY2hvb3NlIEVkZW4gb3IgRnVsbC4g
VGhpcyBpbXBsaWVzIHRoYXQgaWYgeW91IHJlcXVlc3QgYSBHQyB3aGlsZSB0aGF0IEdDIGlzIG9u
Z29pbmcsIG5vdGhpbmcKICAgICAvLyB3aWxsIGhhcHBlbi4KICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGNvbGxlY3RBc3luYyhHQ1JlcXVlc3QgPSBHQ1JlcXVlc3QoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcAppbmRleCAxNGEzYmEwMzIwMGUxYTcx
YjU2Y2RlN2U5YjAzMGJmNjlkZTZkNzA5Li5mZTQ0N2RmNzdhMjFhNjljNDhhMzZkNDg2YWMyNTIy
MTgwMThjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25h
cHNob3Q6Om5vZGVGb3JDZWxsKEpTQ2VsbCogY2VsbCkKICAgICBpZiAobV9wcmV2aW91cykKICAg
ICAgICAgcmV0dXJuIG1fcHJldmlvdXMtPm5vZGVGb3JDZWxsKGNlbGwpOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxI
ZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVu
c2lnbmVkIG9iamVjdElkZW50aWZpZXIpCkBAIC0xNjIsMTYgKzE2MiwxNiBAQCBPcHRpb25hbDxI
ZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JPYmplY3RJZGVudGlmaWVyKHVu
c2lnbmVkIG9iamVjdAogICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcHJldmlv
dXMpCiAgICAgICAgICAgICByZXR1cm4gbV9wcmV2aW91cy0+bm9kZUZvck9iamVjdElkZW50aWZp
ZXIob2JqZWN0SWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKG9iamVjdElkZW50aWZp
ZXIgPiBtX2xhc3RPYmplY3RJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG9iamVjdElkZW50aWZp
ZXIgPCBtX2ZpcnN0T2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICBpZiAobV9wcmV2aW91cykK
ICAgICAgICAgICAgIHJldHVybiBtX3ByZXZpb3VzLT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihv
YmplY3RJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX25v
ZGVzKSB7CkBAIC0xNzksNyArMTc5LDcgQEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSGVh
cFNuYXBzaG90Ojpub2RlRm9yT2JqZWN0SWRlbnRpZmllcih1bnNpZ25lZCBvYmplY3QKICAgICAg
ICAgICAgIHJldHVybiBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPihub2RlKTsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCmluZGV4IGJiNTViOWNiZTI2MDBjNzkyYzg1
ZGViMTE1ZDFhYzI1YjliYzA1MTAuLjZjN2ZhNmMwOGZlMDljMGQ4NTk3OThkYWI1ZWNiNGIwMjI1
ZTY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25z
dHJhaW50U29sdmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5n
Q29uc3RyYWludFNvbHZlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBNYXJraW5nQ29uc3Ry
YWludFNvbHZlcjo6ZHJhaW4oQml0VmVjdG9yJiB1bmV4ZWN1dGVkKQogICAgIGF1dG8gcGlja05l
eHQgPSBzY29wZWRMYW1iZGE8T3B0aW9uYWw8dW5zaWduZWQ+KCk+KAogICAgICAgICBbJl0gKCkg
LT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgICAgIGlmIChpdGVyID09IGVuZCkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gKml0ZXIrKzsKICAgICAgICAgfSk7
CiAgICAgZXhlY3V0ZShOZXh0Q29uc3RyYWludEZpcnN0LCBwaWNrTmV4dCk7CkBAIC0xMjgsMTAg
KzEyOCwxMCBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpjb252ZXJnZShjb25zdCBW
ZWN0b3I8TWFya2luZ0NvbnN0cmFpbnQqPiYgb3JkZXIpCiAgICAgYXV0byBwaWNrTmV4dCA9IHNj
b3BlZExhbWJkYTxPcHRpb25hbDx1bnNpZ25lZD4oKT4oCiAgICAgICAgIFsmXSAoKSAtPiBPcHRp
b25hbDx1bnNpZ25lZD4gewogICAgICAgICAgICAgaWYgKGRpZFZpc2l0U29tZXRoaW5nKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
b3JkZXIuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgTWFya2luZ0NvbnN0cmFpbnQmIGNvbnN0cmFpbnQgPSAqb3JkZXJbaW5kZXgrK107CiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RyYWludC5pbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcAppbmRleCAwMzNhMWI0NzEzMzUyNzc3ZWUwZGU1ZWQ1M2U2NGY4MzkxZjlkNzRmLi40NjA0
NmVkYjAxM2I0NzAwMjAxZTI1MzEyNzdjMTVhZjY4NDAxNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRp
c3BhdGNoKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIEluIGNhc2Ug
dGhpcyBpcyBhIHJlLWVudHJhbnQgY2FsbCBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCB3ZSBkb24n
dCB3YW50IHRvIGxvc2UKICAgICAgICAgLy8gdGhlIG91dGVyIHJlcXVlc3QncyBpZCBqdXN0IGJl
Y2F1c2UgdGhlIGlubmVyIHJlcXVlc3QgaXMgYm9ndXMuCi0gICAgICAgIFNldEZvclNjb3BlPE9w
dGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCBXVEY6Om51
bGxvcHQpOworICAgICAgICBTZXRGb3JTY29wZTxPcHRpb25hbDxsb25nPj4gc2NvcGVkUmVxdWVz
dElkKG1fY3VycmVudFJlcXVlc3RJZCwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBhdXRvIHBh
cnNlZE1lc3NhZ2UgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKG1lc3NhZ2UpOwogICAgICAgICBp
ZiAoIXBhcnNlZE1lc3NhZ2UpIHsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIEJhY2tlbmREaXNw
YXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycygpCiAgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJl
c3BvbnNlKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIAogICAgIG1fcHJvdG9jb2xFcnJvcnMu
Y2xlYXIoKTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9j
dXJyZW50UmVxdWVzdElkID0gc3RkOjpudWxsb3B0OwogfQogICAgIAogdm9pZCBCYWNrZW5kRGlz
cGF0Y2hlcjo6cmVwb3J0UHJvdG9jb2xFcnJvcihDb21tb25FcnJvckNvZGUgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaAppbmRleCA4
YTVlZmIzMTZlOWQwOTMzN2FkYTIzMjNkYzZmOTI2MDU2YTljMmY5Li4yMTdiMzE5M2U1OGYzZjEx
Y2RhNmU2OGE4MjlhOWI4YTljMTAxZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCkBAIC0x
MjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZvciBzeW5jaHJvbm91c2x5IGhhbmRs
ZWQgcmVxdWVzdHMsIGF2b2lkIHBsdW1iaW5nIHJlcXVlc3RJZCB0aHJvdWdoIGV2ZXJ5CiAgICAg
Ly8gY2FsbCB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGZhaWwgd2l0aCBhIHByb3RvY29sIGVycm9y
LgotICAgIE9wdGlvbmFsPGxvbmc+IG1fY3VycmVudFJlcXVlc3RJZCB7IFdURjo6bnVsbG9wdCB9
OworICAgIE9wdGlvbmFsPGxvbmc+IG1fY3VycmVudFJlcXVlc3RJZCB7IHN0ZDo6bnVsbG9wdCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IDkzMzUzMTMzNjQ5Mzg5YTBhMjUyN2U5M2RkZmE1Zjk2MmI2YTg3ODgu
LmYyZDk0NDNkNWNhYjlkNDUyZjNiMGYxZmQ0MWM1N2FhMGVkOTI5ZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxK
U0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4gYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJp
bmcoUHJvCiAgICAgYXV0byB0eXBlID0gUHJvdG9jb2w6OkhlbHBlcnM6OnBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU+KHR5
cGVTdHJpbmcpOwogICAgIGlmICghdHlwZSkgewogICAgICAgICBlcnJvclN0cmluZyA9IG1ha2VT
dHJpbmcoIlVua25vd24gYnJlYWtwb2ludCBhY3Rpb24gdHlwZTogIl9zLCB0eXBlU3RyaW5nKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBzd2l0Y2ggKCp0eXBlKSB7CkBAIC04OCw3ICs4OCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4gYnJlYWtwb2ludEFjdGlv
blR5cGVGb3JTdHJpbmcoUHJvCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyOSwxNiArMTI5LDE2IEBAIHN0YXRpYyBUIHBhcnNl
QnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVm
UHRyPEpTT046CiAKICAgICAgICAgICAgICAgICAvLyBTcGVjaWZ5aW5nIGFuIGlkZW50aWZpZXIg
aXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRlIHByb2JlIHNhbXBsZXMKICAg
ICAgICAgICAgICAgICAvLyBpbiB0aGUgZnJvbnRlbmQgYWNyb3NzIG11bHRpcGxlIGJhY2tlbmQg
cHJvYmUgYWN0aW9ucyBhbmQgc2VncmVnYXRlIG9iamVjdCBncm91cHMuCi0gICAgICAgICAgICAg
ICAgYWN0aW9uLmlkID0gYWN0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludEFjdGlvbjo6aWRLZXkpLnZhbHVlT3IoSlNDOjpub0JyZWFrcG9pbnRBY3Rp
b25JRCk7CisgICAgICAgICAgICAgICAgYWN0aW9uLmlkID0gYWN0aW9uT2JqZWN0LT5nZXRJbnRl
Z2VyKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6aWRLZXkpLnZhbHVlX29y
KEpTQzo6bm9CcmVha3BvaW50QWN0aW9uSUQpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmVt
dWxhdGVVc2VyR2VzdHVyZSA9IGFjdGlvbk9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmVtdWxhdGVVc2VyR2VzdHVyZUtleSkudmFsdWVPcihm
YWxzZSk7CisgICAgICAgICAgICAgICAgYWN0aW9uLmVtdWxhdGVVc2VyR2VzdHVyZSA9IGFjdGlv
bk9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246
OmVtdWxhdGVVc2VyR2VzdHVyZUtleSkudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgICAgICAgICAg
ICAgYWN0aW9ucy5hcHBlbmQoV1RGTW92ZShhY3Rpb24pKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG9Db250aW51ZSA9IG9wdGlvbnMtPmdldEJvb2xlYW4oUHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YXV0b0NvbnRpbnVlS2V5KS52YWx1ZU9y
KGZhbHNlKTsKLSAgICAgICAgaWdub3JlQ291bnQgPSBvcHRpb25zLT5nZXRJbnRlZ2VyKFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6Omlnbm9yZUNvdW50S2V5KS52YWx1ZU9y
KDApOworICAgICAgICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3Io
ZmFsc2UpOworICAgICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29y
KDApOwogICAgIH0KIAogICAgIHJldHVybiBjYWxsYmFjayhjb25kaXRpb24sIFdURk1vdmUoYWN0
aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwpAQCAtNDk4LDcgKzQ5OCw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKQogICAgIGF1
dG8mIGFzeW5jU3RhY2tUcmFjZSA9IGl0LT52YWx1ZTsKICAgICBhc3luY1N0YWNrVHJhY2UtPmRp
ZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKLSAgICBtX2N1cnJlbnRBc3luY0NhbGxJZGVudGlmaWVy
ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWFzeW5jU3RhY2tUcmFjZS0+aXNQZW5kaW5nKCkpCiAgICAg
ICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMucmVtb3ZlKGlkZW50aWZpZXIpOwpAQCAtNTM0LDggKzUz
NCw4IEBAIHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBzb3VyY2VJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPEpT
Qzo6U291cmNlSUQ+KHNjcmlwdElEU3RyKS52YWx1ZU9yKDApOwotICAgIGNvbHVtbk51bWJlciA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1u
TnVtYmVyS2V5KS52YWx1ZU9yKDApOworICAgIHNvdXJjZUlEID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIpLnZhbHVlX29yKDApOwor
ICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtNTQ2LDcgKzU0Niw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6
dHVwbGU8UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQsIFJlZjxKU09OOjpBCiAKICAg
ICBQcm90b2NvbDo6RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAKLSAgICBhdXRvIHByb3RvY29s
QnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoZXJyb3JTdHJpbmcs
ICEhdXJsID8gdXJsIDogdXJsUmVnZXgsICEhdXJsUmVnZXgsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlci52YWx1ZU9yKDApLCBXVEZNb3ZlKG9wdGlvbnMpKTsKKyAgICBhdXRvIHByb3RvY29sQnJl
YWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsICEh
dXJsID8gdXJsIDogdXJsUmVnZXgsICEhdXJsUmVnZXgsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ci52YWx1ZV9vcigwKSwgV1RGTW92ZShvcHRpb25zKSk7CiAgICAgaWYgKCFwcm90b2NvbEJyZWFr
cG9pbnQpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChlcnJvclN0cmluZyk7CiAKQEAg
LTczMCwxNiArNzMwLDE2IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihSZWY8SlNPCiAKIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChjb25z
dCBQcm90b2NvbDo6RGVidWdnZXI6OlNjcmlwdElkJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5nJiBx
dWVyeSwgT3B0aW9uYWw8Ym9vbD4mJiBjYXNlU2Vuc2l0aXZlLCBPcHRpb25hbDxib29sPiYmIGlz
UmVnZXgpCiB7Ci0gICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52YWx1ZU9yKDApKTsKKyAg
ICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SWQpLnZhbHVlX29yKDApKTsKICAgICBpZiAoaXQgPT0g
bV9zY3JpcHRzLmVuZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3Npbmcg
c2NyaXB0IGZvciBnaXZlbiBzY3JpcHRJZCJfcyk7CiAKLSAgICByZXR1cm4gQ29udGVudFNlYXJj
aFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+dmFsdWUuc291cmNlLCBxdWVyeSwg
Y2FzZVNlbnNpdGl2ZS52YWx1ZU9yKGZhbHNlKSwgaXNSZWdleC52YWx1ZU9yKGZhbHNlKSk7Cisg
ICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMoaXQt
PnZhbHVlLnNvdXJjZSwgcXVlcnksIGNhc2VTZW5zaXRpdmUudmFsdWVfb3IoZmFsc2UpLCBpc1Jl
Z2V4LnZhbHVlX29yKGZhbHNlKSk7CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmlu
Zz4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0U2NyaXB0U291cmNlKGNvbnN0IFByb3RvY29s
OjpEZWJ1Z2dlcjo6U2NyaXB0SWQmIHNjcmlwdElkKQogewotICAgIGF1dG8gaXQgPSBtX3Njcmlw
dHMuZmluZChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxKU0M6OlNvdXJjZUlEPihz
Y3JpcHRJZCkudmFsdWVPcigwKSk7CisgICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52YWx1
ZV9vcigwKSk7CiAgICAgaWYgKGl0ID09IG1fc2NyaXB0cy5lbmQoKSkKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIHNjcmlwdCBmb3IgZ2l2ZW4gc2NyaXB0SWQiKTsKIApA
QCAtMTAxNSw3ICsxMDE1LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxS
ZWY8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKICAgICBPcHRpb25h
bDxib29sPiB3YXNUaHJvd247CiAgICAgT3B0aW9uYWw8aW50PiBzYXZlZFJlc3VsdEluZGV4Owog
Ci0gICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9j
dXJyZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3Jv
dXAsIGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZU9yKGZhbHNlKSwgcmV0dXJuQnlWYWx1ZS52
YWx1ZU9yKGZhbHNlKSwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlT3IoZmFsc2UpLCBzYXZlUmVzdWx0
LnZhbHVlT3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7Cisg
ICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGVPbkNhbGxGcmFtZShlcnJvclN0cmluZywgbV9jdXJy
ZW50Q2FsbFN0YWNrLmdldCgpLCBjYWxsRnJhbWVJZCwgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAs
IGluY2x1ZGVDb21tYW5kTGluZUFQSS52YWx1ZV9vcihmYWxzZSksIHJldHVybkJ5VmFsdWUudmFs
dWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0
LnZhbHVlX29yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwog
CiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAtMTAz
MSw4ICsxMDMxLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0U2hvdWxkQmxhY2tib3hVUkwoY29uc3QKICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVUkwgbXVzdCBub3QgYmUgZW1w
dHkiX3MpOwogCi0gICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZl
LnZhbHVlT3IoZmFsc2UpOwotICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleC52YWx1
ZU9yKGZhbHNlKTsKKyAgICBib29sIGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRp
dmUudmFsdWVfb3IoZmFsc2UpOworICAgIGJvb2wgaXNSZWdleCA9IG9wdGlvbmFsSXNSZWdleC52
YWx1ZV9vcihmYWxzZSk7CiAKICAgICBpZiAoIWNhc2VTZW5zaXRpdmUgJiYgIWlzUmVnZXggJiYg
aXNXZWJLaXRJbmplY3RlZFNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIkJsYWNrYm94aW5nIG9mIGludGVybmFsIHNjcmlwdHMgaXMgY29udHJvbGxlZCBieSAnRGVi
dWdnZXIuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMnIl9zKTsKQEAgLTEwOTYsNyArMTA5Niw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzCiAKICAgICBtX3BhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzID0gc2hvdWxkUGF1c2U7CiAKLSAgICBhdXRvIGJsYWNrYm94VHlwZSA9ICFtX3BhdXNlRm9y
SW50ZXJuYWxTY3JpcHRzID8gT3B0aW9uYWw8SlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlPihK
U0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU6Oklnbm9yZWQpIDogV1RGOjpudWxsb3B0OworICAg
IGF1dG8gYmxhY2tib3hUeXBlID0gIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPyBPcHRpb25h
bDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+KEpTQzo6RGVidWdnZXI6OkJsYWNrYm94VHlw
ZTo6SWdub3JlZCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvJiBbc291cmNlSUQsIHNj
cmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAgaWYgKCFpc1dlYktpdEluamVjdGVkU2NyaXB0
KHNjcmlwdC5zb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNDA0LDcgKzE0
MDQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRXhjZXB0aW9uVmFsdWUo
KQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckFzeW5jU3RhY2tUcmFjZURhdGEo
KQogewogICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRBc3lu
Y0NhbGxJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEFzeW5jQ2FsbElk
ZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURh
dGEoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCmluZGV4IDg1Y2VkOWYzZGY2MjIzMDFi
OTVlMzNlNDkzNWNiYmYxNjJiN2UzMzAuLmNmMmNkOGZmYzllODkxNWE4NGIxNjg5MzgzN2QyZTli
ZTllNzQ5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcApAQCAtMTU3LDE5ICsxNTcsMTkg
QEAgT3B0aW9uYWw8SGVhcFNuYXBzaG90Tm9kZT4gSW5zcGVjdG9ySGVhcEFnZW50Ojpub2RlRm9y
SGVhcE9iamVjdElkZW50aWZpZXIoUHJvdG8KICAgICBIZWFwUHJvZmlsZXIqIGhlYXBQcm9maWxl
ciA9IG1fZW52aXJvbm1lbnQudm0oKS5oZWFwUHJvZmlsZXIoKTsKICAgICBpZiAoIWhlYXBQcm9m
aWxlcikgewogICAgICAgICBlcnJvclN0cmluZyA9ICJObyBoZWFwIHNuYXBzaG90Il9zOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIEhlYXBTbmFwc2hvdCogc25hcHNob3QgPSBoZWFwUHJvZmlsZXItPm1vc3RS
ZWNlbnRTbmFwc2hvdCgpOwogICAgIGlmICghc25hcHNob3QpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTm8gaGVhcCBzbmFwc2hvdCJfczsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb25zdCBPcHRpb25h
bDxIZWFwU25hcHNob3ROb2RlPiBvcHRpb25hbE5vZGUgPSBzbmFwc2hvdC0+bm9kZUZvck9iamVj
dElkZW50aWZpZXIoaGVhcE9iamVjdElkZW50aWZpZXIpOwogICAgIGlmICghb3B0aW9uYWxOb2Rl
KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vIG9iamVjdCBmb3IgaWRlbnRpZmllciwgaXQg
bWF5IGhhdmUgYmVlbiBjb2xsZWN0ZWQiX3M7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlv
bmFsTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDQwNDM3MjExZjEz
MmVhOTU3NDgwODZiNWVhM2VkMjg2ODM0MWU3NjYuLjA0ZDJmMzFmOTMxNmFjNDgyNjE1NzJhZGM2
OWQwMWE3YjY2NDhkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMTM1
LDEzICsxMzUsMTMgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxSZWY8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4sIE9wdGlvbmEKIAogICAgIEpTQzo6RGVidWdn
ZXI6OlRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzIHRlbXBvcmFyaWx5RGlz
YWJsZUV4Y2VwdGlvbkJyZWFrcG9pbnRzKG1fZGVidWdnZXIpOwogCi0gICAgYm9vbCBwYXVzZUFu
ZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUudmFsdWVPcihmYWxz
ZSk7CisgICAgYm9vbCBwYXVzZUFuZE11dGUgPSBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUudmFsdWVfb3IoZmFsc2UpOwogICAgIGlmIChwYXVzZUFuZE11dGUpIHsKICAgICAg
ICAgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMucmVwbGFjZSgpOwogICAg
ICAgICBtdXRlQ29uc29sZSgpOwogICAgIH0KIAotICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRl
KGVycm9yU3RyaW5nLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLnZhbHVlT3IoZmFsc2UpLCByZXR1cm5CeVZhbHVlLnZhbHVlT3IoZmFsc2UpLCBnZW5lcmF0
ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVPcihmYWxzZSksIHJlc3Vs
dCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmplY3RlZFNjcmlwdC5ldmFs
dWF0ZShlcnJvclN0cmluZywgZXhwcmVzc2lvbiwgb2JqZWN0R3JvdXAsIGluY2x1ZGVDb21tYW5k
TGluZUFQSS52YWx1ZV9vcihmYWxzZSksIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBn
ZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNl
KSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwogCiAgICAgaWYgKHBhdXNl
QW5kTXV0ZSkKICAgICAgICAgdW5tdXRlQ29uc29sZSgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojphd2FpdFByb21pc2UoY29uc3QgUHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdElkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpbmpl
Y3RlZFNjcmlwdC5hd2FpdFByb21pc2UocHJvbWlzZU9iamVjdElkLCByZXR1cm5CeVZhbHVlLnZh
bHVlT3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHNhdmVSZXN1bHQu
dmFsdWVPcihmYWxzZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYmIHdhc1Rocm93biwgT3B0aW9uYWw8
aW50PiYmIHNhdmVkUmVzdWx0SW5kZXgpIHsKKyAgICBpbmplY3RlZFNjcmlwdC5hd2FpdFByb21p
c2UocHJvbWlzZU9iamVjdElkLCByZXR1cm5CeVZhbHVlLnZhbHVlX29yKGZhbHNlKSwgZ2VuZXJh
dGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgc2F2ZVJlc3VsdC52YWx1ZV9vcihmYWxzZSksIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiYgcmVzdWx0
LCBPcHRpb25hbDxib29sPiYmIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYmIHNhdmVkUmVzdWx0
SW5kZXgpIHsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBjYWxsYmFjay0+c2Vu
ZEZhaWx1cmUoZXJyb3JTdHJpbmcpOwogICAgICAgICBlbHNlCkBAIC0xODEsMTMgKzE4MSwxMyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogCiAgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJp
bHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9u
QnJlYWtwb2ludHMobV9kZWJ1Z2dlcik7CiAKLSAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90
UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1ZU9yKGZhbHNlKTsKKyAgICBib29s
IHBhdXNlQW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1
ZV9vcihmYWxzZSk7CiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkgewogICAgICAgICB0ZW1wb3Jhcmls
eURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAgICAgICAgIG11dGVDb25z
b2xlKCk7CiAgICAgfQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuY2FsbEZ1bmN0aW9uT24oZXJyb3JT
dHJpbmcsIG9iamVjdElkLCBmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmd1bWVudHMgPyBhcmd1bWVu
dHMtPnRvSlNPTlN0cmluZygpIDogbnVsbFN0cmluZygpLCByZXR1cm5CeVZhbHVlLnZhbHVlT3Io
ZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHJlc3VsdCwgd2FzVGhyb3du
KTsKKyAgICBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25PbihlcnJvclN0cmluZywgb2JqZWN0
SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3VtZW50cyA/IGFyZ3VtZW50cy0+dG9KU09OU3Ry
aW5nKCkgOiBudWxsU3RyaW5nKCksIHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5l
cmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93bik7CiAKICAgICBp
ZiAocGF1c2VBbmRNdXRlKQogICAgICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0yMzEsMTEgKzIz
MSwxMSBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIGlmIChpbmplY3RlZFNjcmlwdC5o
YXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmpl
Y3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAotICAgIGludCBzdGFydCA9IGZl
dGNoU3RhcnQudmFsdWVPcigwKTsKKyAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlX29y
KDApOwogICAgIGlmIChzdGFydCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
ZmV0Y2hTdGFydCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCi0gICAgaW50IGNvdW50ID0gZmV0
Y2hDb3VudC52YWx1ZU9yKDApOworICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVfb3Io
MCk7CiAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJm
ZXRjaENvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7CiAKQEAgLTI0NywxMSArMjQ3LDExIEBA
IFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5CiAKICAgICBtdXRlQ29uc29sZSgpOwogCi0gICAgaW5q
ZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIG93blByb3Bl
cnRpZXMudmFsdWVPcihmYWxzZSksIHN0YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVl
T3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKKyAgICBpbmplY3RlZFNjcmlwdC5nZXRQcm9wZXJ0aWVz
KGVycm9yU3RyaW5nLCBvYmplY3RJZCwgb3duUHJvcGVydGllcy52YWx1ZV9vcihmYWxzZSksIHN0
YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgcHJvcGVydGllcyk7
CiAKICAgICAvLyBPbmx5IGluY2x1ZGUgaW50ZXJuYWwgcHJvcGVydGllcyBmb3IgdGhlIGZpcnN0
IGZldGNoLgogICAgIGlmICghc3RhcnQpCi0gICAgICAgIGluamVjdGVkU2NyaXB0LmdldEludGVy
bmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldy52YWx1
ZU9yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQu
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZ2VuZXJhdGVQcmV2
aWV3LnZhbHVlX29yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsKIAogICAgIHVubXV0ZUNv
bnNvbGUoKTsKIApAQCAtMjY5LDExICsyNjksMTEgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHkK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk1pc3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJf
cyk7CiAKLSAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlT3IoMCk7CisgICAgaW50IHN0
YXJ0ID0gZmV0Y2hTdGFydC52YWx1ZV9vcigwKTsKICAgICBpZiAoc3RhcnQgPCAwKQogICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoImZldGNoU3RhcnQgY2Fubm90IGJlIG5lZ2F0aXZlIl9z
KTsKIAotICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVPcigwKTsKKyAgICBpbnQgY291
bnQgPSBmZXRjaENvdW50LnZhbHVlX29yKDApOwogICAgIGlmIChjb3VudCA8IDApCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiX3Mp
OwogCkBAIC0yODUsMTEgKzI4NSwxMSBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1
cGxlPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogCiAgICAg
bXV0ZUNvbnNvbGUoKTsKIAotICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3
LnZhbHVlT3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKKyAgICBpbmplY3RlZFNjcmlwdC5nZXREaXNw
bGF5YWJsZVByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBzdGFydCwgY291bnQsIGdl
bmVyYXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHByb3BlcnRpZXMpOwogCiAgICAgLy8gT25s
eSBpbmNsdWRlIGludGVybmFsIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCBmZXRjaC4KICAgICBp
ZiAoIXN0YXJ0KQotICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRJbnRlcm5hbFByb3BlcnRpZXMo
ZXJyb3JTdHJpbmcsIG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIGlu
dGVybmFsUHJvcGVydGllcyk7CisgICAgICAgIGluamVjdGVkU2NyaXB0LmdldEludGVybmFsUHJv
cGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGdlbmVyYXRlUHJldmlldy52YWx1ZV9vcihm
YWxzZSksIGludGVybmFsUHJvcGVydGllcyk7CiAKICAgICB1bm11dGVDb25zb2xlKCk7CiAKQEAg
LTMwNywxMSArMzA3LDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+Pj4KICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1p
c3NpbmcgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBvYmplY3RJZCJfcyk7CiAKLSAgICBpbnQg
c3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlT3IoMCk7CisgICAgaW50IHN0YXJ0ID0gZmV0Y2hTdGFy
dC52YWx1ZV9vcigwKTsKICAgICBpZiAoc3RhcnQgPCAwKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoImZldGNoU3RhcnQgY2Fubm90IGJlIG5lZ2F0aXZlIl9zKTsKIAotICAgIGludCBj
b3VudCA9IGZldGNoQ291bnQudmFsdWVPcigwKTsKKyAgICBpbnQgY291bnQgPSBmZXRjaENvdW50
LnZhbHVlX29yKDApOwogICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiZmV0Y2hDb3VudCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCkBAIC0zOTIsOSAr
MzkyLDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OlJ1bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQog
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3Qg
aXRlbSBpbiBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0
aW9uLT5nZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZv
cm1hdGlvbkRlc2NyaXB0b3JLZXkpLnZhbHVlT3IoVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ck5vcm1hbCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5nZXRJbnRlZ2Vy
KFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0
b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwpOwogICAg
ICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQcm90b2NvbDo6
UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1dG8gZGl2b3Qg
PSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpk
aXZvdEtleSkudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBkaXZvdCA9IGxvY2F0aW9uLT5nZXRJ
bnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OmRpdm90S2V5KS52YWx1ZV9v
cigwKTsKIAogICAgICAgICBhdXRvIHR5cGVMb2NhdGlvbiA9IG1fdm0udHlwZVByb2ZpbGVyKCkt
PmZpbmRMb2NhdGlvbihkaXZvdCwgcGFyc2VJbnRlZ2VyPHVpbnRwdHJfdD4oc291cmNlSURTdHJp
bmcpLnZhbHVlKCksIHN0YXRpY19jYXN0PFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3I+KGRl
c2NyaXB0b3IpLCBtX3ZtKTsKIApAQCAtNTAzLDcgKzUwMyw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4+
IEluc3BlCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVk0gaGFzIG5vIGNvbnRyb2wg
ZmxvdyBpbmZvcm1hdGlvbiJfcyk7CiAKICAgICBhdXRvIGJhc2ljQmxvY2tzID0gSlNPTjo6QXJy
YXlPZjxQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz46OmNyZWF0ZSgpOwotICAgIGZvciAo
Y29uc3QgYXV0byYgYmxvY2sgOiBtX3ZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFzaWNC
bG9ja3NGb3JTb3VyY2VJRChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50cHRy
X3Q+KHNvdXJjZUlEKS52YWx1ZU9yKDApLCBtX3ZtKSkgeworICAgIGZvciAoY29uc3QgYXV0byYg
YmxvY2sgOiBtX3ZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKS0+Z2V0QmFzaWNCbG9ja3NGb3JTb3Vy
Y2VJRChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50cHRyX3Q+KHNvdXJjZUlE
KS52YWx1ZV9vcigwKSwgbV92bSkpIHsKICAgICAgICAgYXV0byBsb2NhdGlvbiA9IFByb3RvY29s
OjpSdW50aW1lOjpCYXNpY0Jsb2NrOjpjcmVhdGUoKQogICAgICAgICAgICAgLnNldFN0YXJ0T2Zm
c2V0KGJsb2NrLm1fc3RhcnRPZmZzZXQpCiAgICAgICAgICAgICAuc2V0RW5kT2Zmc2V0KGJsb2Nr
Lm1fZW5kT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKaW5kZXgg
ZTA2ZmJkOTk5NWJhZWE2ZDU4NzBhM2NiYmI1MjY4NzNlYTk2YzZhMS4uYzU0ZmZlMGE2NmQ4NDNl
ODJjNjdiOTMzM2VmOTMyYjk4ZDg3OWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
OjpzZXR1cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAg
aWYgKCFtX3RhcmdldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0YXJnZXRJ
ZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlT3IoMCk7CisgICAgYXV0
byB0YXJnZXRJZGVudGlmaWVyID0gdGhpcy0+dGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlX29yKDAp
OwogCiAgICAgaWYgKCFtX3RhcmdldCB8fCAhbV90YXJnZXQtPnJlbW90ZUNvbnRyb2xBbGxvd2Vk
KCkpIHsKICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0
YXJnZXRJZGVudGlmaWVyKTsKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6dGFyZ2V0Q2xvc2VkKCkKIAogT3B0aW9uYWw8VGFyZ2V0SUQ+IFJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fdGFyZ2V0ID8gT3B0aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVy
KCkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBtX3RhcmdldCA/IE9wdGlvbmFsPFRhcmdl
dElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmNwcAppbmRleCBkMWQ5NTJjOTQ0NTk2
N2FhOGExMWYxMjQzODJhYmEyYTJiOWU3MzllLi4xY2M0MDkzNDYzNWZlZjU0OTFhY2Y0YWNmYmU3
YmY4MjcyMTEwMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlQ2xpZW50Q2FwYWJpbGl0aWVzKCkKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9j
bGllbnRDYXBhYmlsaXRpZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fY2xpZW50Q2FwYWJp
bGl0aWVzID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAgICBSZW1vdGVJbnNwZWN0
b3I6OkNsaWVudDo6Q2FwYWJpbGl0aWVzIHVwZGF0ZWRDYXBhYmlsaXRpZXMgPSB7CiAgICAgICAg
ICAgICBtX2NsaWVudC0+cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldENvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KaW5kZXggOGIyYTdmYTM4
YWEwNjhlNDUzNDNmMzRhNDcyY2YxYWUwNTBhZTA4Ni4uZTgyNDVlMWU3OTFjYzU4ZmI4MDMzNGJh
YjdkYzFlY2ZiZTc2ZmRkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVj
dGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTEyMyw3ICsxMjMsNyBAQCBSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQ6On5SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQoKQogCiBPcHRpb25hbDxUYXJnZXRJ
RD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdl
dElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1fdGFyZ2V0ID8gT3B0
aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50YXJnZXRJZGVudGlmaWVyKCkpIDogc3RkOjpudWxs
b3B0OwogfQogCiBOU1N0cmluZyAqUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRvbWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9t
YXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigw
KTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCku
dmFsdWVfb3IoMCk7CiAKICAgICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoW3RoaXMsIHRhcmdldElk
ZW50aWZpZXIsIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYXV0b21hdGljYWxseVBhdXNlLCBzdHJv
bmdUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90
YXJnZXRNdXRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQuY3BwCmluZGV4IDVlMzg3OThlYTBiMTg1NTQ5MGJlNWM2ZjljMzgx
YTVjNWE0ZTJhZDYuLjdlOWRmZjM4M2ExN2JkNjg3ZjVkZmVmZDYwZDZkMTA5YTQxOTNmNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNs
aWVudC5jcHAKQEAgLTg4LDIzICs4OCwyMyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNvbm5lY3Rp
b25DbGllbnQ6OmRpZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLAogT3B0
aW9uYWw8UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6RXZlbnQ+IFJlbW90ZUluc3Bl
Y3RvckNvbm5lY3Rpb25DbGllbnQ6OmV4dHJhY3RFdmVudChDb25uZWN0aW9uSUQgY2xpZW50SUQs
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgU3RyaW5nIGpzb25EYXRhID0gU3RyaW5nOjpmcm9tVVRGOChkYXRhKTsKIAogICAgIGF1
dG8gbWVzc2FnZVZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihqc29uRGF0YSk7CiAgICAg
aWYgKCFtZXNzYWdlVmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG1lc3NhZ2VPYmplY3QgPSBtZXNzYWdl
VmFsdWUtPmFzT2JqZWN0KCk7CiAgICAgaWYgKCFtZXNzYWdlT2JqZWN0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZl
bnQgZXZlbnQ7CiAKICAgICBldmVudC5tZXRob2ROYW1lID0gbWVzc2FnZU9iamVjdC0+Z2V0U3Ry
aW5nKCJldmVudCJfcyk7CiAgICAgaWYgKCFldmVudC5tZXRob2ROYW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXZl
bnQuY2xpZW50SUQgPSBjbGllbnRJRDsKIApAQCAtMTIzLDExICsxMjMsMTEgQEAgT3B0aW9uYWw8
VmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+Pj4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dDo6cGFyc2VUYXJnZXQKIHsKICAgICBhdXRvIG1lc3NhZ2VWYWx1ZSA9IEpTT046OlZhbHVlOjpw
YXJzZUpTT04obWVzc2FnZSk7CiAgICAgaWYgKCFtZXNzYWdlVmFsdWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IG1lc3NhZ2VBcnJheSA9IG1lc3NhZ2VWYWx1ZS0+YXNBcnJheSgpOwogICAgIGlmICghbWVzc2Fn
ZUFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFJlZjxKU09OOjpPYmplY3Q+PiB0YXJnZXRMaXN0Owog
ICAgIGZvciAoYXV0byYgaXRlbVZhbHVlIDogKm1lc3NhZ2VBcnJheSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBmMmI0ODBmOTBhYzRjOTE4M2Y1
NmQ5YWQ3MWEyZTNjYmFjZjIxNzBlLi42MjA0ZDQxZDM4ZDQ2YTE5NzI5ZmM4MjgwMjRmZDUyODQ2
NjQyNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBib29sIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c3RhcnQoY29uc3Qg
Y2hhciogYWRkcmVzcywgdWludDE2X3QgcG9ydCkKIE9wdGlvbmFsPHVpbnQxNl90PiBSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXI6OmdldFBvcnQoKSBjb25zdAogewogICAgIGlmICghaXNSdW5uaW5nKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBjb25zdCBhdXRvJiBlbmRwb2ludCA9IEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yU29ja2V0RW5kcG9pbnQ6OnNpbmdsZXRvbigpOwogICAgIHJldHVybiBlbmRwb2ludC5nZXRQ
b3J0KG1fc2VydmVyLnZhbHVlKCkpOwpAQCAtNzUsNyArNzUsNyBAQCBPcHRpb25hbDxDb25uZWN0
aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcAogICAgIGF1dG8mIGluc3BlY3RvciA9IFJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9u
KCk7CiAgICAgaWYgKGluc3BlY3Rvci5pc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIExPR19FUlJP
UigiUmVtb3RlSW5zcGVjdG9yIGNhbiBhY2NlcHQgb25seSAxIGNsaWVudCIpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGlmIChhdXRvIG5ld0lEID0gZW5kcG9pbnQuY3JlYXRlQ2xpZW50KHNvY2tldCwgaW5z
cGVjdG9yKSkgewpAQCAtODMsNyArODMsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90
ZUluc3BlY3RvclNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcAogICAg
ICAgICByZXR1cm4gbmV3SUQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggZTMwNThmNTAx
ZGM3MDlmYjI4ZTY4NjViNjk1MzNhNmI1OWM4NjVkNi4uZDg1ZjBjYmZhMDlkMGJkMDMxOTcwNzAz
YTJlYzk3M2YzM2JlZmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNv
Y2tldC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OmRpZENsb3Nl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklEKQogewogICAgIEFT
U0VSVChpc0Nvbm5lY3RlZCgpKTsKIAotICAgIG1fY2xpZW50Q29ubmVjdGlvbiA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2NsaWVudENvbm5lY3Rpb24gPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWz1dIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQuY3BwCmluZGV4IGE1MGM5NDIwODJhYWU0YWQ0YTY0ZDQzOWU3OWI3NWJmMTg1MGNj
MWIuLmU0NTAxZGY1ZGI3ODA1MjExZDFlYzVhNDFmMjkwOTBhOTZiZWZjMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50LmNwcApAQCAt
ODQsNyArODQsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tl
dEVuZHBvaW50Ojpjb25uZWN0SW5ldChjb25zdCBjaGFyKiBzZQogewogICAgIGlmIChhdXRvIHNv
Y2tldCA9IFNvY2tldDo6Y29ubmVjdChzZXJ2ZXJBZGRyZXNzLCBzZXJ2ZXJQb3J0KSkKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUNsaWVudCgqc29ja2V0LCBjbGllbnQpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Q29ubmVj
dGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVuSW5ldChjb25zdCBj
aGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0LCBMaXN0ZW5lciYgbGlzdGVuZXIpCkBAIC05Myw3
ICs5Myw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5k
cG9pbnQ6Omxpc3RlbkluZXQoY29uc3QgY2hhciogYWRkCiAgICAgYXV0byBpZCA9IGdlbmVyYXRl
Q29ubmVjdGlvbklEKCk7CiAgICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxMaXN0ZW5l
ckNvbm5lY3Rpb24+KGlkLCBsaXN0ZW5lciwgYWRkcmVzcywgcG9ydCk7CiAgICAgaWYgKCFjb25u
ZWN0aW9uLT5pc0xpc3RlbmluZygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbV9saXN0ZW5lcnMuYWRkKGlkLCBXVEZN
b3ZlKGNvbm5lY3Rpb24pKTsKICAgICB3YWtldXBXb3JrZXJUaHJlYWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50OjpjcmVhdGVDbGllbnQoUGxhdGZvcm1Tb2NrZQogICAgIGF1dG8gaWQgPSBnZW5lcmF0ZUNv
bm5lY3Rpb25JRCgpOwogICAgIGF1dG8gY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8Q2xpZW50Q29u
bmVjdGlvbj4oaWQsIHNvY2tldCwgY2xpZW50KTsKICAgICBpZiAoIVNvY2tldDo6aXNWYWxpZChj
b25uZWN0aW9uLT5zb2NrZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbV9jbGllbnRzLmFkZChpZCwgV1RGTW92ZShj
b25uZWN0aW9uKSk7CiAgICAgd2FrZXVwV29ya2VyVGhyZWFkKCk7CkBAIC0yNzEsNyArMjcxLDcg
QEAgT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50OjpnZXRQ
b3J0KENvbm5lY3Rpb25JRCBpZCkgY29uc3QKICAgICBpZiAoY29uc3QgYXV0byYgY29ubmVjdGlv
biA9IG1fY2xpZW50cy5nZXQoaWQpKQogICAgICAgICByZXR1cm4gU29ja2V0OjpnZXRQb3J0KGNv
bm5lY3Rpb24tPnNvY2tldCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6
OnJlY3ZJZkVuYWJsZWQoQ29ubmVjdGlvbklEIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNv
Y2tldFBPU0lYLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3Nv
Y2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRQT1NJWC5jcHAKaW5kZXggN2ZlNjc4NjU4
YmQ1ZDc1MmM2YmVmN2I2OTcwYmRkYzcyM2I4NzMxZi4uZGE2ODUxODlkNTJmMDY2NGM1NDFkMzVh
NjQyOWFhNDBiMDE3MTRiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUluc3BlY3RvclNvY2tldFBPU0lYLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvcG9zaXgv
UmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwCkBAIC01NSwxNCArNTUsMTQgQEAgT3B0aW9u
YWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3Ms
IHVpbnQxNl90IHNlcnZlclAKICAgICBpbnQgZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJF
QU0sIElQUFJPVE9fVENQKTsKICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBzb2NrZXQgZm9yICVzOiVkLCBlcnJubyA9ICVkIiwgc2VydmVyQWRk
cmVzcywgc2VydmVyUG9ydCwgZXJybm8pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGludCBlcnJvciA9IDo6
Y29ubmVjdChmZCwgKHN0cnVjdCBzb2NrYWRkciopJmFkZHJlc3MsIHNpemVvZihhZGRyZXNzKSk7
CiAgICAgaWYgKGVycm9yIDwgMCkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjb25u
ZWN0IHRvICVzOiV1LCBlcnJubyA9ICVkIiwgc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCwgZXJy
bm8pOwogICAgICAgICA6OmNsb3NlKGZkKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gZmQ7CkBA
IC03NSw3ICs3NSw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0
IGNoYXIqIGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgaW50IGZkTGlzdGVuID0gc29j
a2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1RDUCk7CiAgICAgaWYgKGZkTGlzdGVu
IDwgMCkgewogICAgICAgICBMT0dfRVJST1IoInNvY2tldCgpIGZhaWxlZCwgZXJybm8gPSAlZCIs
IGVycm5vKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb25zdCBpbnQgZW5hYmxlZCA9IDE7CkBAIC04Mywy
MSArODMsMjEgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hh
ciogYWRkcmVzc1N0ciwgdWludDE2X3QgcG9ydCkKICAgICBpZiAoZXJyb3IgPCAwKSB7CiAgICAg
ICAgIExPR19FUlJPUigic2V0c29ja29wdCgpIFNPX1JFVVNFQUREUiwgZXJybm8gPSAlZCIsIGVy
cm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgZXJyb3Ig
PSBzZXRzb2Nrb3B0KGZkTGlzdGVuLCBTT0xfU09DS0VULCBTT19SRVVTRVBPUlQsICZlbmFibGVk
LCBzaXplb2YoZW5hYmxlZCkpOwogICAgIGlmIChlcnJvciA8IDApIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJzZXRzb2Nrb3B0KCkgU09fUkVVU0VQT1JULCBlcnJubyA9ICVkIiwgZXJybm8pOwogICAg
ICAgICA6OmNsb3NlKGZkTGlzdGVuKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICNpZiBQTEFURk9STShQTEFZU1RB
VElPTikKICAgICBpZiAoc2V0c29ja29wdChmZExpc3RlbiwgU09MX1NPQ0tFVCwgU09fVVNFX0RF
VkxBTiwgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSkgPCAwKSB7CiAgICAgICAgIExPR19FUlJP
Uigic2V0c29ja2V0b3B0KCkgU09fVVNFX0RFVkxBTiwgZXJybm8gPSAlZCIsIGVycm5vKTsKICAg
ICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogI2VuZGlmCiAKQEAgLTExMiwxNCAr
MTEyLDE0IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIq
IGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAgICAgaWYgKGVycm9yIDwgMCkgewogICAgICAg
ICBMT0dfRVJST1IoImJpbmQoKSBmYWlsZWQsIGVycm5vID0gJWQiLCBlcnJubyk7CiAgICAgICAg
IDo6Y2xvc2UoZmRMaXN0ZW4pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVycm9yID0gOjpsaXN0ZW4oZmRM
aXN0ZW4sIDEpOwogICAgIGlmIChlcnJvciA8IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJsaXN0
ZW4oKSBmYWlsZWQsIGVycm5vID0gJWQiLCBlcnJubyk7CiAgICAgICAgIDo6Y2xvc2UoZmRMaXN0
ZW4pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBmZExpc3RlbjsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGFjY2VwdChQbGF0Zm9ybVNvY2tldFR5cGUg
c29ja2V0KQogICAgICAgICByZXR1cm4gZmQ7CiAKICAgICBMT0dfRVJST1IoImFjY2VwdChpbmV0
KSBlcnJvciAoZXJybm8gPSAlZCkiLCBlcnJubyk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRm
b3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQpAQCAtMTQzLDcgKzE0Myw3IEBAIE9wdGlv
bmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCiAgICAg
c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+IHNvY2tldHM7CiAKICAgICBpZiAoc29j
a2V0cGFpcihBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCwgJnNvY2tldHNbMF0pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHNvY2tldHM7CiB9CkBAIC0xOTcsNyArMTk3LDcgQEAgT3B0aW9uYWw8dWludDE2X3Q+
IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICBzb2NrbGVuX3QgbGVuID0g
c2l6ZW9mKGFkZHJlc3MpOwogICAgIGlmIChnZXRzb2NrbmFtZShzb2NrZXQsIHJlaW50ZXJwcmV0
X2Nhc3Q8c3RydWN0IHNvY2thZGRyKj4oJmFkZHJlc3MpLCAmbGVuKSkgewogICAgICAgICBMT0df
RVJST1IoImdldHNvY2tuYW1lKCkgZXJyb3IgKGVycm5vID0gJWQpIiwgZXJybm8pOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICByZXR1cm4gYWRkcmVzcy5zaW5fcG9ydDsKIH0KQEAgLTIxMSw3ICsyMTEsNyBAQCBP
cHRpb25hbDxzaXplX3Q+IHJlYWQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgdm9pZCogYnVm
ZmVyLCBpbnQgYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
cmVhZFNpemUpOwogCiAgICAgTE9HX0VSUk9SKCJyZWFkIGVycm9yIChlcnJubyA9ICVkKSIsIGVy
cm5vKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIE9wdGlvbmFsPHNpemVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwg
Y29uc3Qgdm9pZCogZGF0YSwgaW50IHNpemUpCkBAIC0yMjMsNyArMjIzLDcgQEAgT3B0aW9uYWw8
c2l6ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRh
LCBpbnQgc2l6ZSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4od3JpdGVTaXpl
KTsKIAogICAgIExPR19FUlJPUigid3JpdGUgZXJyb3IgKGVycm5vID0gJWQpIiwgZXJybm8pOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dm9pZCBjbG9zZShQbGF0Zm9ybVNvY2tldFR5cGUmIHNvY2tldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93aW4vUmVtb3RlSW5zcGVj
dG9yU29ja2V0V2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC93aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcAppbmRleCAwNWYyOGExMDQ3
ZTU5MjExMWUzYTBhN2NmMWVlZGI3OWIwYjRmNjk3Li42ZWQ4MGViYjdiYWQ0NjE2ZDZjYjIzZDFh
YzJkOWY4ZmU4YmY2NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9zb2NrZXQvd2luL1JlbW90ZUluc3BlY3RvclNvY2tldFdpbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRXaW4uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgT3B0aW9uYWw8UGxhdGZv
cm1Tb2NrZXRUeXBlPiBjb25uZWN0KGNvbnN0IGNoYXIqIHNlcnZlckFkZHJlc3MsIHVpbnQxNl90
IHNlcnZlclAKICAgICBhdXRvIHNvY2tldCA9IGNvbm5lY3RUbyhhZGRyZXNzKTsKICAgICBpZiAo
IWlzVmFsaWQoc29ja2V0KSkgewogICAgICAgICBMT0dfRVJST1IoImNvbm5lY3RpbmcgdG8gJXM6
JXUgZmFpbGVkIChlcnJubyA9ICVkKSIsIHNlcnZlckFkZHJlc3MsIHNlcnZlclBvcnQsIFdTQUdl
dExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gc29ja2V0OwpAQCAtMTg3LDcg
KzE4Nyw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0VHlwZT4gbGlzdGVuKGNvbnN0IGNoYXIq
IGFkZHJlc3NTdHIsIHVpbnQxNl90IHBvcnQpCiAKICAgICBhdXRvIHNvY2tldCA9IGJpbmRBbmRM
aXN0ZW4oYWRkcmVzcyk7CiAgICAgaWYgKCFpc1ZhbGlkKHNvY2tldCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gc29ja2V0OwogfQpAQCAtMjAyLDcgKzIwMiw3IEBAIE9wdGlvbmFsPFBsYXRmb3JtU29ja2V0
VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgICAgIHJldHVybiBm
ZDsKIAogICAgIExPR19FUlJPUigiZmFpbGVkIChlcnJubyA9ICVkKSIsIFdTQUdldExhc3RFcnJv
cigpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRl
UGFpcigpCkBAIC0yMTQsMTEgKzIxNCwxMSBAQCBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3Jt
U29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogCiAgICAgU29ja2V0IHNlcnZlcihiaW5kQW5k
TGlzdGVuKGFkZHJlc3MpKTsKICAgICBpZiAoIXNlcnZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVp
bnQxNl90PiBzZXJ2ZXJQb3J0ID0gZ2V0UG9ydChzZXJ2ZXIpOwogICAgIGlmICghc2VydmVyUG9y
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGFkZHJlc3Muc2luX3BvcnQgPSBodG9ucygqc2VydmVyUG9ydCk7CiAKQEAg
LTIyNiw3ICsyMjYsNyBAQCBPcHRpb25hbDxzdGQ6OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwg
Mj4+IGNyZWF0ZVBhaXIoKQogICAgIHNvY2tldHNbMF0gPSBjb25uZWN0VG8oYWRkcmVzcyk7CiAg
ICAgaWYgKCFpc1ZhbGlkKHNvY2tldHNbMF0pKSB7CiAgICAgICAgIExPR19FUlJPUigiY29ubmVj
dGluZyBmYWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGlmIChhdXRvIHNvY2tldCA9IGFjY2VwdChzZXJ2ZXIpKSB7CkBAIC0yMzQsNyArMjM0
LDcgQEAgT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQ
YWlyKCkKICAgICAgICAgcmV0dXJuIHNvY2tldHM7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIHNldHVwKFBsYXRm
b3JtU29ja2V0VHlwZSBzb2NrZXQpCkBAIC0yNzIsNyArMjcyLDcgQEAgT3B0aW9uYWw8dWludDE2
X3Q+IGdldFBvcnQoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICBpbnQgbGVuID0gc2l6
ZW9mKGFkZHJlc3MpOwogICAgIGlmIChnZXRzb2NrbmFtZShzb2NrZXQsIHJlaW50ZXJwcmV0X2Nh
c3Q8c3RydWN0IHNvY2thZGRyKj4oJmFkZHJlc3MpLCAmbGVuKSkgewogICAgICAgICBMT0dfRVJS
T1IoImdldHNvY2tuYW1lKCkgZmFpbGVkIChlcnJubyA9ICVkKSIsIFdTQUdldExhc3RFcnJvcigp
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAgICAgcmV0dXJuIG50b2hzKGFkZHJlc3Muc2luX3BvcnQpOwogfQpAQCAt
Mjg2LDcgKzI4Niw3IEBAIE9wdGlvbmFsPHNpemVfdD4gcmVhZChQbGF0Zm9ybVNvY2tldFR5cGUg
c29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihyZWFkU2l6ZSk7CiAKICAgICBMT0dfRVJST1IoInJlY3YoKSBmYWls
ZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c2l6ZV90PiB3
cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBpbnQgc2l6
ZSkKQEAgLTI5OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29j
a2V0VHlwZSBzb2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3cml0ZVNpemUpOwogCiAgICAgTE9HX0VSUk9SKCJzZW5k
KCkgZmFpbGVkIChlcnJubyA9ICVkKSIsIFdTQUdldExhc3RFcnJvcigpKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgY2xvc2Uo
UGxhdGZvcm1Tb2NrZXRUeXBlJiBzb2NrZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlw
ZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkKaW5kZXggNDUyZmM3MDFlODRmZmMxZGZjMTIwNjM3NTY3ZjA3YThlNGUxZTdhZC4uY2Q4OTM5
NjVjYjdjY2EwN2JjYjJkNmM4MmFiOTcwZWIyNWYzZGM1MiAxMDA3NTUKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3Rv
Y29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weQpAQCAtMTI0LDcgKzEyNCw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvcihDcHBHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICcg
ICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFu
dFZhbHVlc1tpXV0pJywKICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgcmV0dXJuICglcylj
b25zdGFudFZhbHVlc1tpXTsnICUgY3BwX3Byb3RvY29sX3R5cGUsCiAgICAgICAgICAgICAgICAg
JycsCi0gICAgICAgICAgICAgICAgJyAgICByZXR1cm4gV1RGOjpudWxsb3B0OycsCisgICAgICAg
ICAgICAgICAgJyAgICByZXR1cm4gc3RkOjpudWxsb3B0OycsCiAgICAgICAgICAgICAgICAgJ30n
LAogICAgICAgICAgICAgXSkKICAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4oYm9keV9saW5l
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CmluZGV4IDg1ZjBmY2M5
MTMyZDY5YzU5N2YxYTY4YjBhM2I5MDE1NjM2NGNhZGIuLmE2YTY0M2ZjODg1MzMyZjFiMGJkZDhi
NzU4ZTI4NDA4ZmVmNWY1MTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZV9jb252ZXJz
aW9uc19oZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRl
ci5weQpAQCAtMTY4LDYgKzE2OCw2IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9u
c0hlYWRlckdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAgZm9yIGVudW1fdmFsdWUg
aW4gZW51bV92YWx1ZXM6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAodmFsdWUg
PT0gIiVzIiknICUgZW51bV92YWx1ZSkKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAg
ICByZXR1cm4gJXMlczsnICUgKG9iamNfZW51bV9uYW1lLCBHZW5lcmF0b3Iuc3R5bGl6ZWRfbmFt
ZV9mb3JfZW51bV92YWx1ZShlbnVtX3ZhbHVlKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKGxpbmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
CmluZGV4IGVlODZlYjU3ZGVmMTc4ZGZhYWQ3NDI2MTk2ZWNhZWY5ZGQ0M2NiYmQuLjQ1Y2VjZjI4
NDFiM2IxZTI0ZmQ1ZWEwMjE3NjY1NGJjMThlOGQ5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQKQEAgLTc4MCw3ICs3ODAsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6
RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2Nv
bDo6RAogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNb
Y29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChQcm90b2NvbDo6RGF0YWJh
c2U6OlByaW1hcnlDb2xvcnMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RIZWxwZXJzCkBAIC0xNDE5LDcgKzE0MTksNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFByb3Rv
Y29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW47CiAg
ICAgaWYgKHZhbHVlID09ICJibHVlIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9yc0JsdWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvciB2YWx1ZSkKQEAgLTE0NDcsNyArMTQ0Nyw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJv
dG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9y
CiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9u
YWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2si
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29s
U3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQ3NSw3ICsxNDc1LDcgQEAgaW5saW5lIE9wdGlv
bmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG8KICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNR
TEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1
ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JCbGFjazsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJp
bmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJp
bnRDb2xvciB2YWx1ZSkKQEAgLTE1MDMsNyArMTUwMyw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvcj4gZnJvbVByb3RvY29sU3Ry
aW5nCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJp
bnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yQmxhY2s7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxp
bmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FM
QXN5bmNQcmludENvbG9yIHZhbHVlKQpAQCAtMTUzMSw3ICsxNTMxLDcgQEAgaW5saW5lIE9wdGlv
bmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvcj4gZnJvbVBy
b3RvY29sU3RyaW4KICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNR
TEFzeW5jUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckJs
YWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5ODA2OGJm
ZjA4NDkxMWRmZjhmYjJkMzdiYTJlYTNhODllMGYwMzNjLi5kZDc3NjVlNWI3YjI1ODJjN2U4ZGJl
OTUzNTkzMTc4NWJhZmMyNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTY5Myw3ICs2OTMsNyBAQCBP
cHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnM+IHBhcnNlRW51bVZhbHVl
RnJvbVN0cmluZzxQcm90b2NvbDo6RAogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51
bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJu
IChQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMpY29uc3RhbnRWYWx1ZXNbaV07CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCkBAIC0xMjg4LDcgKzEyODgsNyBAQCBpbmxpbmUg
T3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmlt
YXJ5Q29sb3JzR3JlZW47CiAgICAgaWYgKHZhbHVlID09ICJibHVlIikKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0JsdWU7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRv
UHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciB2YWx1ZSkKQEAgLTEzMTYsNyArMTMxNiw3IEBAIGlubGluZSBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yPiBmcm9tCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAi
YmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogCkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBp
bmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvcj4gZnJvbQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAo
dmFsdWUgPT0gImJsYWNrIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3IgdmFsdWUpCkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBpbmxpbmUgT3B0
aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yPiBmcm9tUAogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAi
YmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2s7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAKQEAgLTE0MDQsNyArMTQwNCw3IEBAIGlu
bGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3I+IGZyb21QCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZh
bHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjazsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpz
b24tcmVzdWx0CmluZGV4IGI1ODE2NWI0YmQxZDNkZTJhMWNmYWRiN2RjMjhlMjVkYjcxY2FiZGEu
LmYyNjIzNzE4N2U2N2MzOGFmNDEyNzI5NmU1MDUxNDY5NzNmN2U4Y2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKQEAgLTU5OCw3
ICs1OTgsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bT4gcGFyc2VFbnVt
VmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUeXBlRG9tYQogICAgICAgICBpZiAocHJvdG9jb2xT
dHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAg
ICAgICAgcmV0dXJuIChQcm90b2NvbDo6VHlwZURvbWFpbjo6RW51bSljb25zdGFudFZhbHVlc1tp
XTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKQEAgLTExMTEsNyArMTExMSw3IEBAIGlu
bGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bT4gZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9t
YWluRW51bTE7CiAgICAgaWYgKHZhbHVlID09ICIyIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFR5cGVEb21haW5FbnVtMjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRp
b25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggZGVhM2FjNzI0YTFiMTU4ZjllZmU1
ZWJmZjg4ZTRkM2Y4YTY1MDA1ZS4uOWMzYjAyYzEzMWQ1OWM5ZmUwNmM1ZTUzZWFkYjZkZDQwOThh
YmVhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3Vs
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC00OTIs
NyArNDkyLDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGU+IHBh
cnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6UnUKICAgICAgICAgaWYgKHByb3RvY29s
U3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAg
ICAgICAgIHJldHVybiAoUHJvdG9jb2w6OlJ1bnRpbWU6OktleVBhdGg6OlR5cGUpY29uc3RhbnRW
YWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCkBAIC04OTEsNyArODkxLDcg
QEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4gZnJvbVBy
b3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1
bnRpbWVLZXlQYXRoVHlwZVN0cmluZzsKICAgICBpZiAodmFsdWUgPT0gImFycmF5IikKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5OwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSW5zcGVjdG9yCkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidHlwZSJdLCBAInR5cGUiKTsKLSAgICBPcHRpb25h
bDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+IHR5cGUgPSBmcm9tUHJvdG9jb2xTdHJp
bmc8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPihwYXlsb2FkW0AidHlwZSJdKTsKKyAg
ICBPcHRpb25hbDxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+IHR5cGUgPSBmcm9tUHJv
dG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpcGF5bG9hZFtAInR5cGUiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURf
RU5VTV9WQUxVRSh0eXBlLCBAInR5cGUiKTsKICAgICBzZWxmLnR5cGUgPSB0eXBlLnZhbHVlKCk7
CiAKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0g
KFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSl0eXBlCiB7Ci0gICAgcmV0dXJuIGZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KFtzdXBlciBzdHJp
bmdGb3JLZXk6QCJ0eXBlIl0pLnZhbHVlKCk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilb
c3VwZXIgc3RyaW5nRm9yS2V5OkAidHlwZSJdKS52YWx1ZSgpOwogfQogCiAtICh2b2lkKXNldFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
CmluZGV4IGRiM2JmZDVjZTk0ZWNlNzcwNDM3Yjc2NmUyN2JjZjlkZjM0MTgwZjMuLjUzNGFiNjRi
NTY5YjQ2MTkxNDA3NDg5YTJiODA3YTcyZjk0ZGEzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlw
ZS5qc29uLXJlc3VsdApAQCAtNDUyLDcgKzQ1Miw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpEZWJ1
Z2dlcjo6UmVhc29uPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OkRlYnVnZ2Vy
CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25z
dGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpEZWJ1Z2dlcjo6
UmVhc29uKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwpA
QCAtODQzLDcgKzg0Myw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEZWJ1Z2dlclJl
YXNvbj4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50ZWQ7CiAgICAgaWYgKHZhbHVlID09ICJI
dW5ncnkiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25IdW5ncnk7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCA4MTY4NzY5NGRhNjYwMDk5
ZGVkY2UxMzEwZmIzMzg3NjEzMDMyMTQxLi44NDVmZjhkOTUxM2VlZWViMjg1Mzg2YTJjZjA4ZDEw
Njk4NDVjOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC00NTgsNyAr
NDU4LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzPiBwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlJ1bnQKICAgICAgICAgaWYgKHByb3RvY29sU3Ry
aW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAg
ICAgIHJldHVybiAoUHJvdG9jb2w6OlJ1bnRpbWU6OkZhcm1BbmltYWxzKWNvbnN0YW50VmFsdWVz
W2ldOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB0ZW1wbGF0ZTw+CkBAIC00NzQsNyArNDc0LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6
OlJ1bnRpbWU6OlR3b0xlZ2dlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90
b2NvbDoKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVz
W2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoUHJvdG9jb2w6OlJ1bnRp
bWU6OlR3b0xlZ2dlZEFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RIZWxwZXJzCkBAIC04NzcsNyArODc3LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0NhdHM7CiAgICAg
aWYgKHZhbHVlID09ICJIZW5zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVG
YXJtQW5pbWFsc0hlbnM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgdmFsdWUpCkBAIC05MDUsNyArOTA1LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzPiBmcm9tUHJv
dG9jb2xTdHJpbmcoY29uc3QgU3QKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVU
d29MZWdnZWRBbmltYWxzQ3Jvd3M7CiAgICAgaWYgKHZhbHVlID09ICJGbGFtaW5nb3MiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNGbGFtaW5nb3M7
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9i
amVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQKaW5kZXggMDBjNDUxNzg5YTdmMWY3MTE5NjM0NTM2N2I0M2NmZGJkNDAxMThjZC4uNmJi
OWY1MjI5ODQ1NzBhOTVlYTFiM2Q2N2UwMjBmMzMwZGNiM2YzYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2Jq
ZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEwMzYsNyArMTAzNiw3IEBAIE9wdGlvbmFsPFByb3Rv
Y29sOjpEYXRhYmFzZTo6TW91c2VCdXR0b24+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90
b2NvbDo6RGF0CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3Zh
bHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpE
YXRhYmFzZTo6TW91c2VCdXR0b24pY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4KQEAg
LTEwNTAsNyArMTA1MCw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQ
YXJhbWV0ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WCiAgICAgICAgIGlmIChw
cm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0p
CiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpEYXRhYmFzZTo6T3B0aW9uYWxQYXJhbWV0
ZXJCdW5kbGU6OkRpcmVjdGlvbmFsaXR5KWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+
CkBAIC0xMDY0LDcgKzEwNjQsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFt
ZXRlckJ1bmRsZTo6RGlyZWN0aW9uYWxpdHk+IHBhcnNlRW51bVZhbHVlRnJvbQogICAgICAgICBp
ZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNb
aV1dKQogICAgICAgICAgICAgcmV0dXJuIChQcm90b2NvbDo6RGF0YWJhc2U6OlBhcmFtZXRlckJ1
bmRsZTo6RGlyZWN0aW9uYWxpdHkpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIEVudW1zIGluIHRo
ZSAnVGVzdCcgRG9tYWluCkBAIC0xMDgwLDcgKzEwODAsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6
VGVzdDo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9t
U3RyaQogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNb
Y29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChQcm90b2NvbDo6VGVzdDo6
UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0eSljb25zdGFudFZhbHVlc1tpXTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKQEAgLTE1NjUsNyArMTU2NSw3IEBAIGlubGluZSBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0dG9uPiBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZU1vdXNlQnV0
dG9uTWlkZGxlOwogICAgIGlmICh2YWx1ZSA9PSAiUmlnaHQiKQogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sRGF0YWJhc2VNb3VzZUJ1dHRvblJpZ2h0OwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eSB2YWx1ZSkKQEAgLTE1ODUsNyArMTU4NSw3IEBAIGlubGluZSBPcHRpb25hbDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+
IGZyb21QCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1l
dGVyQnVuZGxlRGlyZWN0aW9uYWxpdHlMVFI7CiAgICAgaWYgKHZhbHVlID09ICJSVEwiKQogICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURp
cmVjdGlvbmFsaXR5UlRMOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkgdmFsdWUpCkBAIC0xNjA1
LDcgKzE2MDUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0
ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJvbVByb3RvY29sUwogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eUxUUjsKICAgICBp
ZiAodmFsdWUgPT0gIlJUTCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5UlRMOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29s
U3RyaW5nKFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSB2YWx1
ZSkKQEAgLTE2MjUsNyArMTYyNSw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0
UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGZyb21Qcm90b2NvbFN0cmluCiAgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHlMVFI7
CiAgICAgaWYgKHZhbHVlID09ICJSVEwiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVz
dFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5UlRMOwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCkBAIC0xODU1LDcgKzE4NTUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAg
ICAgc2VsZi5idXR0b25zID0gcGF5bG9hZFtAImJ1dHRvbnMiXTsKIAotICAgIE9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4g
ZGlyZWN0aW9uYWxpdHkgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VP
cHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PihwYXlsb2FkW0AiZGlyZWN0aW9u
YWxpdHkiXSk7CisgICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFt
ZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0
cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSk7
CiAgICAgaWYgKGRpcmVjdGlvbmFsaXR5KQogICAgICAgICBzZWxmLmRpcmVjdGlvbmFsaXR5ID0g
ZGlyZWN0aW9uYWxpdHkudmFsdWUoKTsKIApAQCAtMTkwOCw3ICsxOTA4LDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFt
ZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5KWRpcmVjdGlvbmFsaXR5CiB7Ci0gICAgcmV0dXJuIGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVu
ZGxlRGlyZWN0aW9uYWxpdHk+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJkaXJlY3Rpb25hbGl0eSJd
KS52YWx1ZSgpOworICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0
YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZT
dHJpbmdSZWYpW3N1cGVyIHN0cmluZ0ZvcktleTpAImRpcmVjdGlvbmFsaXR5Il0pLnZhbHVlKCk7
CiB9CiAKIC0gKHZvaWQpc2V0Tm90ZXM6KE5TU3RyaW5nICopbm90ZXMKQEAgLTE5OTcsNyArMTk5
Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgc2VsZi5idXR0b25zID0gcGF5
bG9hZFtAImJ1dHRvbnMiXTsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJP
UEVSVFkocGF5bG9hZFtAImRpcmVjdGlvbmFsaXR5Il0sIEAiZGlyZWN0aW9uYWxpdHkiKTsKLSAg
ICBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFs
aXR5PiBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRh
YmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PihwYXlsb2FkW0AiZGlyZWN0aW9uYWxp
dHkiXSk7CisgICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVE
aXJlY3Rpb25hbGl0eT4gZGlyZWN0aW9uYWxpdHkgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFBy
b3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKICAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9FTlVNX1ZBTFVFKGRpcmVjdGlvbmFsaXR5LCBAImRpcmVjdGlvbmFsaXR5Iik7
CiAgICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9IGRpcmVjdGlvbmFsaXR5LnZhbHVlKCk7CiAKQEAg
LTIwODMsNyArMjA4Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKFRlc3RQ
cm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkpZGlyZWN0aW9uYWxp
dHkKIHsKLSAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNl
UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KFtzdXBlciBzdHJpbmdGb3JLZXk6QCJkaXJl
Y3Rpb25hbGl0eSJdKS52YWx1ZSgpOworICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdl
IENGU3RyaW5nUmVmKVtzdXBlciBzdHJpbmdGb3JLZXk6QCJkaXJlY3Rpb25hbGl0eSJdKS52YWx1
ZSgpOwogfQogCiAtICh2b2lkKXNldE5vdGVzOihOU1N0cmluZyAqKW5vdGVzCkBAIC0yMjg5LDcg
KzIyODksNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Ai
ZGlyZWN0aW9uYWxpdHkiXSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAgIE9wdGlvbmFsPFRlc3RQ
cm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZGlyZWN0aW9uYWxpdHkg
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVj
dGlvbmFsaXR5PihwYXlsb2FkW0AiZGlyZWN0aW9uYWxpdHkiXSk7CisgICAgT3B0aW9uYWw8VGVz
dFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0
eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGly
ZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0AiZGlyZWN0aW9uYWxp
dHkiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShkaXJlY3Rpb25h
bGl0eSwgQCJkaXJlY3Rpb25hbGl0eSIpOwogICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSBkaXJl
Y3Rpb25hbGl0eS52YWx1ZSgpOwogCkBAIC0yMzU1LDcgKzIzNTUsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAtIChUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0
aW9uYWxpdHkpZGlyZWN0aW9uYWxpdHkKIHsKLSAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5n
PFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oW3N1cGVyIHN0
cmluZ0ZvcktleTpAImRpcmVjdGlvbmFsaXR5Il0pLnZhbHVlKCk7CisgICAgcmV0dXJuIGZyb21Q
cm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxp
dHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilbc3VwZXIgc3RyaW5nRm9yS2V5OkAiZGlyZWN0aW9u
YWxpdHkiXSkudmFsdWUoKTsKIH0KIAogLSAodm9pZClzZXRCdXR0b25zOihOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKilidXR0b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0Cmlu
ZGV4IGUxYTlhYjU1ZjUyZjU4NzUxZTRhNDY5OTIyMDU3YTgxNjE2NmM1NGQuLmU2YzU1NGFhZTcy
NTc4N2MxYTc4ZGI4NjFkMTFhMjcwN2EwNzJhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1y
dW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3Rz
Lmpzb24tcmVzdWx0CkBAIC02NzUsNyArNjc1LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OlRlc3Q6
OlVuY2FzdGVkQW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpUZXMK
ICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0
YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoUHJvdG9jb2w6OlRlc3Q6OlVuY2Fz
dGVkQW5pbWFscyljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgpAQCAtNjkxLDcgKzY5
MSw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPiBwYXJzZUVudW1W
YWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlc3Q6CiAgICAgICAgIGlmIChwcm90b2NvbFN0cmlu
ZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAg
ICByZXR1cm4gKFByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzKWNvbnN0YW50VmFsdWVzW2ld
OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVscGVycwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHM+IGZyb21Qcm90b2Nv
bFN0cmluZyhjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNh
c3RlZEFuaW1hbHNDYXRzOwogICAgIGlmICh2YWx1ZSA9PSAiSGVucyIpCiAgICAgICAgIHJldHVy
biBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzSGVuczsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Q
cm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyB2YWx1ZSkKQEAgLTEy
NDUsNyArMTI0NSw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5p
bWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzQ3Jvd3M7CiAgICAgaWYgKHZhbHVlID09ICJGbGFt
aW5nb3MiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFt
aW5nb3M7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTE0MDgsNyArMTQwOCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgc2VsZi5udW1iZXIgPSBbcGF5bG9hZFtAIm51
bWJlciJdIGludGVnZXJWYWx1ZV07CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVE
X1BST1BFUlRZKHBheWxvYWRbQCJhbmltYWxzIl0sIEAiYW5pbWFscyIpOwotICAgIE9wdGlvbmFs
PFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPiBhbmltYWxzID0gZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihwYXlsb2FkW0AiYW5pbWFscyJdKTsK
KyAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4gYW5pbWFscyA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscz4oKF9fYnJpZGdl
IENGU3RyaW5nUmVmKXBheWxvYWRbQCJhbmltYWxzIl0pOwogICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX0VOVU1fVkFMVUUoYW5pbWFscywgQCJhbmltYWxzIik7CiAgICAgc2VsZi5hbmltYWxz
ID0gYW5pbWFscy52YWx1ZSgpOwogCkBAIC0xNDcyLDcgKzE0NzIsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAtIChUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxz
CiB7Ci0gICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xUZXN0Q2FzdGVk
QW5pbWFscz4oW3N1cGVyIHN0cmluZ0ZvcktleTpAImFuaW1hbHMiXSkudmFsdWUoKTsKKyAgICBy
ZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPigo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpW3N1cGVyIHN0cmluZ0ZvcktleTpAImFuaW1hbHMiXSkudmFs
dWUoKTsKIH0KIAogLSAodm9pZClzZXRJZGVudGlmaWVyOihpbnQpaWRlbnRpZmllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRl
eCA4ZjY3ZGE0NmE4MDUwNGEyYjQ2MTVjMGM1ZmVhZmRlZjEyNGNlOWM2Li4yZDQ5Mjg2YzE3Yjdk
N2QzMGFhYzRjMzFlYzFkMTU0MjdhYmVhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjU0LDE2ICsyNTQsMTYgQEAg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6Q29kZVR5cGUgU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y29kZVR5
cGUoKSBjb25zdAogT3B0aW9uYWw8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IFN0YWNrVmlzaXRvcjo6
RnJhbWU6OmNhbGxlZVNhdmVSZWdpc3RlcnNGb3JVbndpbmRpbmcoKQogewogICAgIGlmICghTlVN
QkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXNJbmxpbmVkRnJh
bWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoaXNXYXNtRnJhbWUo
KSkgewogICAgICAgICBpZiAoY2FsbGVlKCkuaXNDZWxsKCkpIHsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGlzV2ViQXNzZW1ibHlNb2R1bGUoY2FsbGVlKCkuYXNDZWxsKCkpKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgICAgIFdhc206OkNhbGxlZSogd2FzbUNhbGxlZSA9IGNhbGxl
ZSgpLmFzV2FzbUNhbGxlZSgpOwogICAgICAgICByZXR1cm4gKndhc21DYWxsZWUtPmNhbGxlZVNh
dmVSZWdpc3RlcnMoKTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBPcHRpb25hbDxSZWdpc3RlckF0T2Zm
c2V0TGlzdD4gU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJlZ2lzdGVyc0ZvclVud2lu
ZAogICAgIGlmIChDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHRoaXMtPmNvZGVCbG9jaygpKQogICAg
ICAgICByZXR1cm4gKmNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8v
IEVOQUJMRShBU1NFTUJMRVIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuY3BwCmluZGV4IDYxOTQ1NWIxZjZkYmFjYTRhN2RkYWM3Y2JmNmQ5
YzkyZmExNmNhMmQuLmVlNWUzOGEyODM0ZWNiYTg0NWU2MjkxZGM3NjVjNTIwN2IyZjA3OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNw
cApAQCAtNzg5LDcgKzc4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50cHRyX3QgZW5k
ID0gdGhpcy0+ZW5kKCk7CiAgICAgICAgICAgICBpZiAoaXNsYW5kQmVnaW4oKSA8PSBpc2xhbmQg
JiYgaXNsYW5kIDwgZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAoKGVuZCAtIGlzbGFuZCkg
LyBpc2xhbmRTaXplSW5CeXRlcykgLSAxOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIGZyZWVJc2xhbmQodWludHB0cl90IGlzbGFuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgKaW5kZXggNmZhNzI0NGVmMGEwOGM5ZjA0N2EzMjIwNGY3MzdkMjkyODcxOTA2Zi4u
ODU1N2QwZWU1ZDhhZDhiMTQ0MmQ4MzBlNGQ2NzcxZmYwY2E4YjM3MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKQEAgLTIwNiw3ICsyMDYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoSklUKQogICAgIHZpcnR1YWwgUmVnaXN0ZXJTZXQgbGl2ZVJlZ2lzdGVyc1RvUHJlc2VydmVB
dEV4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGUoQ29kZUJsb2NrKiwgQ2FsbFNpdGVJbmRleCk7Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxDb2RlT3JpZ2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCog
cGMpIHsgVU5VU0VEX1BBUkFNKHBjKTsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1
YWwgT3B0aW9uYWw8Q29kZU9yaWdpbj4gZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKSB7IFVO
VVNFRF9QQVJBTShwYyk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiAgICAgSW50
cmluc2ljIGludHJpbnNpYygpIHsgcmV0dXJuIG1faW50cmluc2ljOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BDVG9Db2RlT3JpZ2luTWFwLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwCmluZGV4IDI2NDcxOGQ5N2M3
ODRiYzJmYTc3NDAzMWFmY2RiMDgwOTlkMWU1OTMuLjBiMzdhNDE5NTk3ZDMzNTYzMjZmYTY0NWY5
ZWMyNzY0MjU3ZTUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENU
b0NvZGVPcmlnaW5NYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUENUb0Nv
ZGVPcmlnaW5NYXAuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4g
UENUb0NvZGVPcmlnaW5NYXA6OmZpbmRQQyh2b2lkKiBwYykgY29uc3QKIHsKICAgICB1aW50cHRy
X3QgcGNBc0ludCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKTsKICAgICBpZiAoIShtX3Bj
UmFuZ2VTdGFydCA8PSBwY0FzSW50ICYmIHBjQXNJbnQgPD0gbV9wY1JhbmdlRW5kKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHVpbnRwdHJfdCBjdXJyZW50UEMgPSAwOwogICAgIEJ5dGVjb2RlSW5kZXggY3VycmVudEJ5
dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KDApOwpAQCAtMzAwLDcgKzMwMCw3IEBAIE9wdGlv
bmFsPENvZGVPcmlnaW4+IFBDVG9Db2RlT3JpZ2luTWFwOjpmaW5kUEModm9pZCogcGMpIGNvbnN0
CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBmZjhmNTdl
NDZhZmMxMTQ1Zjc2ZTRjNTljNmI4YzRmYmM0NTkwYjA4Li42NzMwMzk0MjYzZjMyZjFiNTM1NGMy
MGQ1NGRlMjQzMDQ3Mjk5YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cApAQCAtMTUzOSw3ICsxNTM5LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJz
ZUhleCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIGRvIHsKICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnXycpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUhleERpZ2l0KHBlZWsoMSkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNo
aWZ0KCk7CiAgICAgICAgIH0KQEAgLTE1NjYsNyArMTU2Niw3IEBAIEFMV0FZU19JTkxJTkUgYXV0
byBMZXhlcjxUPjo6cGFyc2VIZXgoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAg
ICB3aGlsZSAoaXNBU0NJSUhleERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FT
Q0lJSGV4RGlnaXQocGVlaygxKSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
c2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgQUxXQVlTX0lOTElORSBh
dXRvIExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0
PgogICAgIGRvIHsKICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnXycpIHsKICAgICAgICAgICAg
IGlmIChVTkxJS0VMWSghaXNBU0NJSUJpbmFyeURpZ2l0KHBlZWsoMSkpKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIH0KQEAgLTE2MTcsNyArMTYx
Nyw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VCaW5hcnkoKSAtPiBPcHRp
b25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB3aGlsZSAoaXNBU0NJSUJpbmFyeURpZ2l0T3JT
ZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAt
MTYzMCw3ICsxNjMwLDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUJpbmFy
eSgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgICAgICByZXR1cm4gTnVtYmVy
UGFyc2VSZXN1bHQgeyBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjgu
c2l6ZSgpKSB9OwogCiAgICAgaWYgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgcGFyc2VJbnRPdmVyZmxvdyhtX2J1ZmZlcjguZGF0
YSgpLCBtX2J1ZmZlcjguc2l6ZSgpLCAyKSB9OwogfQpAQCAtMTY1Myw3ICsxNjUzLDcgQEAgQUxX
QVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVy
UGFyc2VSZXN1bHQ+CiAgICAgZG8gewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSB8fCBp
c0xlZ2FjeUxpdGVyYWwpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQo
KTsKICAgICAgICAgfQpAQCAtMTY3Myw3ICsxNjczLDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExl
eGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAg
d2hpbGUgKGlzQVNDSUlPY3RhbERpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkgewogICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FT
Q0lJT2N0YWxEaWdpdChwZWVrKDEpKSB8fCBpc0xlZ2FjeUxpdGVyYWwpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTY4Niw3ICsxNjg2
LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZU9jdGFsKCkgLT4gT3B0aW9u
YWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7
IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpIH07CiAK
ICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTnVtYmVy
UGFyc2VSZXN1bHQgeyBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVy
OC5zaXplKCksIDgpIH07CiB9CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBBTFdBWVNfSU5MSU5FIGF1
dG8gTGV4ZXI8VD46OnBhcnNlRGVjaW1hbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0
PgogICAgICAgICBkbyB7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJSURpZ2l0KHBlZWsoMSkpIHx8IGlzTGVn
YWN5TGl0ZXJhbCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgICAg
ICBzaGlmdCgpOwogICAgICAgICAgICAgfQpAQCAtMTczMyw3ICsxNzMzLDcgQEAgQUxXQVlTX0lO
TElORSBhdXRvIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJz
ZVJlc3VsdD4KICAgICB3aGlsZSAoaXNBU0NJSURpZ2l0T3JTZXBhcmF0b3IobV9jdXJyZW50KSkg
ewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElL
RUxZKCFpc0FTQ0lJRGlnaXQocGVlaygxKSkgfHwgaXNMZWdhY3lMaXRlcmFsKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIH0KQEAgLTE3NDUsNyAr
MTc0NSw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VEZWNpbWFsKCkgLT4g
T3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9
PSAnbicgJiYgIWlzTGVnYWN5TGl0ZXJhbCkpCiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJl
c3VsdCB7IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkp
IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKaW5kZXggMDlhYzdjMjRkYTQ1YTRlNTY0YTA2NzA1NDEwMmU4OTk1ZjgxNzgyYS4uM2Y1
ZDNjOWE1NjMxMzA0MmEwZjczNzU1NWY1Y2Y5YzJiYWQ3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCkBAIC05OTIsNyArOTkyLDcgQEAgcHVibGljOgogICAgIH5QYXJz
ZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQ
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiA9IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRy
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBj
b25zdCBJZGVudGlmaWVyJiwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgUHJp
dmF0ZU5hbWVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBGaXhlZFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2Vu
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTI3
Niw3ICsxMjc2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fc2NvcGVTdGFja1tpXS5pc1By
aXZhdGVOYW1lU2NvcGUoKSkKICAgICAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0
YWNrLCBpKTsKIAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFNjb3BlUmVmIHByaXZhdGVOYW1lU2NvcGUoKQpA
QCAtMTc0OSw5ICsxNzQ5LDkgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5cGUg
eyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VDbGFzc0RlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRXhw
b3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250
ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQpOwogICAgIGVudW0gY2xh
c3MgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgeyBEZWNsYXJhdGlvbiwgU3RhdGVtZW50IH07Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVuY3Rp
b25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlID0gRnVu
Y3Rpb25EZWNsYXJhdGlvblR5cGU6OkRlY2xhcmF0aW9uLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlw
ZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRl
ZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRy
ZWVCdWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlvbkRlY2xhcmF0aW9u
VHlwZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwg
RGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0
YW5kYXJkLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImLCBib29sIHBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRpb25Bc1N0YXRlbWVudCk7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlQXN5bmNG
dW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6
Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZh
dWx0Q29udGV4dDo6U3RhbmRhcmQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCk7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9u
KFRyZWVCdWlsZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRh
cmQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIERlY2xhcmF0
aW9uVHlwZSwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VEb1doaWxlU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IHBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsKQEAgLTE4MjEsNyAr
MTgyMSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIGNyZWF0ZVJlc29sdmVBbmRVc2VWYXJpYWJsZShUcmVl
QnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqLCBib29sIGlzRXZhbCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIGVudW0gY2xhc3MgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZSB7IEV4cHJlc3Npb24sIERlY2xhcmF0aW9uLCBNZXRob2QgfTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVu
Y3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5h
bWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jiwg
RnVuY3Rpb25EZWZpbml0aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmlu
Z1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0
aW9uVHlwZSwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uID0gc3RkOjpudWxsb3B0KTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJik7CiAgICAgCkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsK
ICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAg
IFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJz
aW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQs
IHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAg
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQ
cm9ncmFtLCBzdGQ6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxk
TG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAg
ICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiA9PSBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVjaWFsIGNvbnN0cnVjdG9y
cyBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAgICAgICBQYXJzZXI8TGV4
ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5k
Rm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNl
ZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvciwgbmFtZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6
OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBwYXJlbnRTY29w
ZVByaXZhdGVOYW1lcywgY2xhc3NGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgaXNFdmFsTm9kZTxQYXJzZWROb2Rl
PigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgc3Rk
OjpudWxsb3B0LCBwYXJlbnRTY29wZVByaXZhdGVOYW1lcywgY2xhc3NGaWVsZExvY2F0aW9ucyk7
CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291
cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5
LmgKaW5kZXggNjQyMzI3MGQ4YWUwOTFhNzMwMWNhOGM4NTM1OTBiOGEzN2JjYTQ2OS4uNGIzYjNi
ZTMwM2ViZWFkYzg2NDAwOTdjN2Y4ODU3ZTE3YTRlZGJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgOiBtX3NvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fZmxhZ3MoY29kZVR5cGUsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBjb2RlR2VuZXJhdGlvbk1vZGUpCi0gICAgICAgICAgICAsIG1fZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uLnZhbHVlT3IoLTEpKQorICAgICAgICAgICAgLCBtX2Z1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24oZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFt
ZXRlcnNFbmRQb3NpdGlvbi52YWx1ZV9vcigtMSkpCiAgICAgICAgICAgICAsIG1faGFzaChzb3Vy
Y2VDb2RlLmhhc2goKSBeIG1fZmxhZ3MuYml0cygpKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAK
aW5kZXggNWU3NjIzMjlkNWRiNmFkZDAxYjY2ZjVkYTNhNjRmMTBmZjBhOGQxMS4uN2JmNWMzZTAx
YmNjMDAxNjZmNzA0MTVmODMzY2QxNzJkZjVkNTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMTA3LDcg
KzEwNyw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnRyeUdldEltcG9ydEVudHJ5KFVu
aXF1ZWRTdHJpbmdJbXBsKiBsb2NhbE5hbWUpIC0+IE9wCiB7CiAgICAgY29uc3QgYXV0byBpdGVy
YXRvciA9IG1faW1wb3J0RW50cmllcy5maW5kKGxvY2FsTmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9y
ID09IG1faW1wb3J0RW50cmllcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gT3B0aW9uYWw8SW1wb3J0
RW50cnk+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBhdXRvIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjp0cnlHZXRFeHBvcnRFbnRyeShVbmlxdWVkU3RyaW5nSW1wbCog
ZXhwb3J0TmFtZSkgLT4gTwogewogICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2V4cG9ydEVu
dHJpZXMuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9leHBvcnRFbnRy
aWVzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBPcHRpb25hbDxFeHBvcnRFbnRyeT4oaXRlcmF0b3It
PnZhbHVlKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNv
cmQ6OnRyeUdldENhY2hlZFJlc29sdXRpb24oVW5pcXVlZFN0cmluZ0ltcGwqIGV4cG9ydE5hbWUp
CiB7CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fcmVzb2x1dGlvbkNhY2hlLmZpbmQoZXhw
b3J0TmFtZSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb2x1dGlvbkNhY2hlLmVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBPcHRpb25hbDxSZXNvbHV0aW9uPihpdGVyYXRvci0+dmFsdWUpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXgg
NWQ1YzBhOGM2YjYxNTY4OTg4ZmIzYjRiM2IxZjZiZjAwZjM2ZDI1Ni4uY2IxZjlmZjA3YTNmMjc2
YjQ0OWJjODNhOTgwMGUyYTdhM2E4YzAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGF1dG8gaXQgPSBtX3B0clRvT2Zmc2V0TWFwLmZpbmQocHRyKTsKICAgICAgICAg
aWYgKGl0ID09IG1fcHRyVG9PZmZzZXRNYXAuZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIHsgaXQtPnZhbHVlIH07CiAgICAgfQogCkBAIC0zMTQsMTEgKzMxNCwxMSBAQCB2b2lkIERl
Y29kZXI6OmNhY2hlT2Zmc2V0KHB0cmRpZmZfdCBvZmZzZXQsIHZvaWQqIHB0cikKICAgICBtX29m
ZnNldFRvUHRyTWFwLmFkZChvZmZzZXQsIHB0cik7CiB9CiAKLVdURjo6T3B0aW9uYWw8dm9pZCo+
IERlY29kZXI6OmNhY2hlZFB0ckZvck9mZnNldChwdHJkaWZmX3Qgb2Zmc2V0KQorc3RkOjpvcHRp
b25hbDx2b2lkKj4gRGVjb2Rlcjo6Y2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZfdCBvZmZzZXQp
CiB7CiAgICAgYXV0byBpdCA9IG1fb2Zmc2V0VG9QdHJNYXAuZmluZChvZmZzZXQpOwogICAgIGlm
IChpdCA9PSBtX29mZnNldFRvUHRyTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IGl0LT52YWx1
ZSB9OwogfQogCkBAIC04MzYsNyArODM2LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPFNvdXJj
ZVR5cGU8VD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKHRoaXMtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7IHRoaXMt
PnRlbXBsYXRlIGJ1ZmZlcjxUPigpLT5kZWNvZGUoZGVjb2RlcikgfTsKICAgICB9CkBAIC04NDks
NyArODQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IHN0ZDo6dW5pcXVlX3B0cjxTb3VyY2VUeXBlPFQ+PiYgc291cmNlKQogICAgIHsKICAgICAg
ICAgaWYgKCFzb3VyY2UpCi0gICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIGVuY29kZShlbmNvZGVyLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgeyAqc291cmNlIH0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCmluZGV4IDZiOTZiNTI5
NGQ2NDNlNzMyNDIwZWIwNzhlY2Q4MzQwZDk3MTE2NmIuLjU5NDU4NzMzMDJjYzIyNTQ5MWIzZWFj
OGVlYzk2MzQxMTQ1YTBjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlZFR5cGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fj
aGVkVHlwZXMuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICBwdHJkaWZmX3Qgb2Zm
c2V0T2YoY29uc3Qgdm9pZCopOwogICAgIHZvaWQgY2FjaGVPZmZzZXQocHRyZGlmZl90LCB2b2lk
Kik7Ci0gICAgV1RGOjpPcHRpb25hbDx2b2lkKj4gY2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZf
dCk7CisgICAgc3RkOjpvcHRpb25hbDx2b2lkKj4gY2FjaGVkUHRyRm9yT2Zmc2V0KHB0cmRpZmZf
dCk7CiAgICAgY29uc3Qgdm9pZCogcHRyRm9yT2Zmc2V0RnJvbUJhc2UocHRyZGlmZl90KTsKICAg
ICBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OkhhbmRsZSBoYW5kbGVGb3JURFpFbnZpcm9ubWVu
dChDb21wYWN0VERaRW52aXJvbm1lbnQqKSBjb25zdDsKICAgICB2b2lkIHNldEhhbmRsZUZvclRE
WkVudmlyb25tZW50KENvbXBhY3RURFpFbnZpcm9ubWVudCosIGNvbnN0IENvbXBhY3RURFpFbnZp
cm9ubWVudE1hcDo6SGFuZGxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAppbmRleCAyNmU1MjJmZDVhNjJmZDM5MmY5MzI5NWE2NjEzODI0MGM3NDBiZDk5
Li4xNDk0YzdlOGNmY2ZjODdhNzUwMWE0OWM4NmI3MmUxZjMzMjdmYWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBV
bmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxDb2RlQmxv
Y2soVk0mIHZtLCBFeGVjdXRhYmxlVAogICAgIFNvdXJjZUNvZGVLZXkga2V5KAogICAgICAgICBz
b3VyY2UsIFN0cmluZygpLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNvZGVU
eXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCAKICAgICAgICAgZGVyaXZlZENvbnRleHRUeXBl
LCBldmFsQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvZGVHZW5lcmF0aW9u
TW9kZSwKLSAgICAgICAgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc3RkOjpudWxsb3B0KTsKICAg
ICBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIHVubGlua2VkQ29kZUJsb2NrID0gbV9zb3VyY2VDb2Rl
LmZpbmRDYWNoZUFuZFVwZGF0ZUFnZTxVbmxpbmtlZENvZGVCbG9ja1R5cGU+KHZtLCBrZXkpOwog
ICAgIGlmICh1bmxpbmtlZENvZGVCbG9jayAmJiBPcHRpb25zOjp1c2VDb2RlQ2FjaGUoKSkgewog
ICAgICAgICB1bnNpZ25lZCBsaW5lQ291bnQgPSB1bmxpbmtlZENvZGVCbG9jay0+bGluZUNvdW50
KCk7CkBAIC0yNTAsNyArMjUwLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVD
YWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYKICAgICAvLyBU
aGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJs
ZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWiB1bmxlc3MgdGhleSdyZQogICAg
IC8vIGluIHRoZSBnbG9iYWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgd2hpY2ggd2UgYWx3YXlzIFRE
WiBjaGVjayBhY2Nlc3NlcyBmcm9tLgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSA9IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgp
KTsKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwg
VW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwg
bWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBEZXJpdmVkQ29u
dGV4dFR5cGU6Ok5vbmUsIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywgUHJpdmF0ZUJy
YW5kUmVxdWlyZW1lbnQ6Ok5vbmUpOwogCiAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291
cmNlVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkpCiAgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+
c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3Rp
dmUoKSk7CkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIFNvdXJjZUNvZGVLZXkgc291cmNlQ29k
ZUtleUZvclNlcmlhbGl6ZWRCeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICBy
ZXR1cm4gU291cmNlQ29kZUtleSgKICAgICAgICAgc291cmNlQ29kZSwgU3RyaW5nKCksIGNvZGVU
eXBlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLAogICAgICAgICBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgZmFsc2UsIGNvZGVHZW5lcmF0aW9uTW9kZSwK
LSAgICAgICAgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc3RkOjpudWxsb3B0KTsKIH0KIAogU291
cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZFByb2dyYW0oVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCmluZGV4IDg2MzExN2Q4OTE1YzQzZTRhNjc3MjA4MmI5
YmM1NWIzOWEyZDFjYTEuLjIyZjQ2NjE3ZGI3NDY3Zjc3YjAyZGRkMzMwMTE5N2Y0MTExYjI4MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNMb2Nr
LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgQ29uY3VycmVudEpTTG9ja2VyKE5v
TG9ja2luZ05lY2Vzc2FyeVRhZykKICAgICAgICAgOiBDb25jdXJyZW50SlNMb2NrZXJCYXNlKE5v
TG9ja2luZ05lY2Vzc2FyeSkKICNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgICAgICwgbV9kaXNh
bGxvd0dDKFdURjo6bnVsbG9wdCkKKyAgICAgICAgLCBtX2Rpc2FsbG93R0Moc3RkOjpudWxsb3B0
KQogI2VuZGlmCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RlZmluZVByb3BlcnR5QXR0cmlidXRlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKaW5kZXggYzBiYzczZTA3YTE1
NDcwNzgyZTgyZDg3MDA4MzY4N2JiMGMyMzVhMi4uZjNiOGU5MTQxOTQyMmYyMDdjNGY2MTE4NTlh
NGFlZDQ1NjZjNzUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJs
aWM6CiAgICAgT3B0aW9uYWw8Ym9vbD4gd3JpdGFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFoYXNXcml0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJp
U3RhdGUoV3JpdGFibGVTaGlmdCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCkBAIC0xMTQs
NyArMTE0LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpID09IFRyaVN0
YXRlOjpUcnVlOwogICAgIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBPcHRp
b25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51
bWVyYWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51
bWVyYWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDgzYzUx
MDA2MzUyMzMzZmNjOTBhNzQwMjNlY2RlYTM2ZTNmNzMyZC4uMTlkYjZjY2RmZGFkNzAwMmYzMGM1
YjYwZjM4Y2JjMzJkYjU0NDQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBFcnJvckNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEVycm9yUHJvdG90eXBlKiBlcnJvclBy
b3RvdHlwZSkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgdm0ucHJvcGVydHlOYW1l
cy0+RXJyb3Iuc3RyaW5nKCksIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJl
VHJhbnNpdGlvbik7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZXJyb3JQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKLSAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tU
cmFjZUxpbWl0LCBqc051bWJlcihnbG9iYWxPYmplY3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFs
dWVPcihPcHRpb25zOjpkZWZhdWx0RXJyb3JTdGFja1RyYWNlTGltaXQoKSkpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RhY2tUcmFjZUxpbWl0LCBqc051
bWJlcihnbG9iYWxPYmplY3QoKS0+c3RhY2tUcmFjZUxpbWl0KCkudmFsdWVfb3IoT3B0aW9uczo6
ZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0KCkpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiB9CiAKIC8vIEVDTUEgMTUuOS4zCkBAIC04Miw3ICs4
Miw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1Y3Rvcjo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOCiAgICAgICAgICAgICBlZmZlY3RpdmVMaW1p
dCA9IHN0ZDo6bWluKGVmZmVjdGl2ZUxpbWl0LCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogICAgICAgICAgICAgdGhpc09iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZWZmZWN0aXZlTGltaXQpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KFdURjo6bnVsbG9wdCk7CisgICAg
ICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0
ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtOTQsNyArOTQsNyBA
QCBib29sIEVycm9yQ29uc3RydWN0b3I6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIEVycm9yQ29uc3RydWN0b3IqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8RXJyb3JDb25zdHJ1Y3Rvcio+KGNlbGwpOwogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQpCi0gICAgICAgIHRoaXNP
YmplY3QtPmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPnNldFN0YWNrVHJhY2VMaW1pdChz
dGQ6Om51bGxvcHQpOwogCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXgg
MTdiYzI0NjE0OTUxOWMwZTMwNWFjODJlZDk0MzZmMmMxYzQ1NjcwMC4uZDIzZGZmOTliZWE5OTBk
MTA1MGM4YWVlMTExYmZkZDdmYTgyM2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAg
ICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBm
b3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKLSAgICBPcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51
bGxvcHQ7CisgICAgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKICAgICAg
ICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG5cbn0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJh
ZGNiNzg1MGZiNmY5MzY1NTZjZTQ5YzI2MTYwMmM1OTU5ZDRmZGEuLmFlODI0NjRlOTYyYmMzNTEz
YzBhODkyMjQ0M2M0MWVjZjlhOTE4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgaWYgKG92ZXJyaWRlTGluZU51bWJlciA9PSAtMSkgewogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQotICAgICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9vdmVy
cmlkZUxpbmVOdW1iZXIgPSBvdmVycmlkZUxpbmVOdW1iZXI7CkBAIC0xODYsNyArMTg2LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fcmFyZURhdGEpKQogICAgICAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fb3ZlcnJpZGVMaW5lTnVtYmVyOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGludCBsaW5lQ291bnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwCmluZGV4IDVhYjVkOWE4YTY1MTdmNzc0
NWY1ZjNkMjM5MTU4NjQ5ODg3MzM5ZmIuLjNjMDQ4OWY4ODY3ZGMxZjg3NjlkOTcwMTdlMTYxZmQx
OWRmOTYzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enpl
clByZWRpY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6
ZXJQcmVkaWN0aW9ucy5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8U3BlY3VsYXRlZFR5
cGU+IEZ1enplclByZWRpY3Rpb25zOjpwcmVkaWN0aW9uRm9yKGNvbnN0IFN0cmluZyYga2V5KQog
ewogICAgIGF1dG8gaXQgPSBtX3ByZWRpY3Rpb25zLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0g
bV9wcmVkaWN0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gaXQtPnZhbHVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgK
aW5kZXggYjczNGRmZDJlYTczMTNhZjQ0OGJlOWU2ODEzZjNjZDA0NDZkZDJiZi4uNzIwZTY4ZThi
NmFiM2ZmZTRjMGEyMDVlOWY4MmVkMWU3NzQ1NTFiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaApAQCAtNzYsNyArNzYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEVudHJ5JiBlbnRyeSA9IGJpdHdpc2VfY2FzdDxFbnRyeSo+KHRo
aXMpW2luZGV4XTsKICAgICAgICAgaWYgKGVudHJ5LnN0cnVjdHVyZUlEID09IGlkICYmIGVudHJ5
LmltcGwuZ2V0KCkgPT0gaW1wbCkKICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZXN1bHQ7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHRyeUFkZChWTSYgdm0sIFByb3BlcnR5
U2xvdCYgc2xvdCwgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BOYW1lLCBib29s
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hN
YXBJbXBsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGxJbmxpbmVzLmgKaW5kZXggYTM2M2I1ZDA2YjVhNGUyZGJhMDlmOGZmOWY5ZjhjYThmMzE3ZmFl
ZC4uZjExZjBhNWI0YzZhOTVmYjg0ODllNzU1MGUwMmI2NjFjMTFiODhhNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmgKQEAgLTEy
MywxMCArMTIzLDEwIEBAIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJl
bnRKU01hcEhhc2goSlNWYWx1ZSBrZXkpCiAgICAgaWYgKGtleS5pc1N0cmluZygpKSB7CiAgICAg
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhrZXkpOwogICAgICAgICBpZiAoc3RyaW5n
LT5sZW5ndGgoKSA+IDEwICogMTAyNCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb25zdCBTdHJpbmdJ
bXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKTsKICAgICAgICAgaWYgKCFpbXBs
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBpbXBsLT5jb25jdXJyZW50SGFzaCgpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IGFl
NmRiYjBmOGY1OTIzNTBhNGNmMmU0MTBkZjBiZDJkYWJjNzhhMDkuLjE3MTRiOGFkZDVkYjlkZTY1
ZTVjMTYzOTk5MDRiYzMzMWRlMzZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmgKQEAgLTQyLDM4ICs0MiwzOCBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFs
PHVpbnQzMl90PiBwYXJzZUluZGV4KGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZAogewogICAgIC8vIEFuIGVtcHR5IHN0cmluZyBpcyBub3QgYSBudW1iZXIuCiAgICAgaWYgKCFs
ZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBHZXQgdGhlIGZpcnN0IGNoYXJhY3RlciwgdHVybmluZyBpdCBp
bnRvIGEgZGlnaXQuCiAgICAgdWludDMyX3QgdmFsdWUgPSBjaGFyYWN0ZXJzWzBdIC0gJzAnOwog
ICAgIGlmICh2YWx1ZSA+IDkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDaGVjayBmb3IgbGVhZGluZyB6ZXJvcy4g
SWYgdGhlIGZpcnN0IGNoYXJhY2hlciBpcyAwLCB0aGVuIHRoZQogICAgIC8vIGxlbmd0aCBvZiB0
aGUgc3RyaW5nIG11c3QgYmUgb25lIC0gZS5nLiAiMDQyIiBpcyBub3QgZXF1YWwgdG8gIjQyIi4K
ICAgICBpZiAoIXZhbHVlICYmIGxlbmd0aCA+IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB3aGlsZSAoLS1sZW5ndGgp
IHsKICAgICAgICAgLy8gTXVsdGlwbHkgdmFsdWUgYnkgMTAsIGNoZWNraW5nIGZvciBvdmVyZmxv
dyBvdXQgb2YgMzIgYml0cy4KICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGRkZGRlUgLyAxMCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB2YWx1ZSAqPSAxMDsKIAogICAgICAgICAvLyBHZXQgdGhlIG5l
eHQgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KICAgICAgICAgdWludDMyX3Qg
bmV3VmFsdWUgPSAqKCsrY2hhcmFjdGVycykgLSAnMCc7CiAgICAgICAgIGlmIChuZXdWYWx1ZSA+
IDkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBBZGQgaW4gdGhlIG9sZCB2YWx1ZSwgY2hlY2tp
bmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBiaXRzLgogICAgICAgICBuZXdWYWx1ZSArPSB2YWx1
ZTsKICAgICAgICAgaWYgKG5ld1ZhbHVlIDwgdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmFs
dWUgPSBuZXdWYWx1ZTsKICAgICB9CiAKICAgICBpZiAoIWlzSW5kZXgodmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjc2LDkgKzI3Niw5IEBAIEFMV0FZU19JTkxJTkUgT3B0
aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5kZXgoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
IHsKICAgICBhdXRvIHVpZCA9IGlkZW50aWZpZXIuaW1wbCgpOwogICAgIGlmICghdWlkKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBhcnNlSW5kZXgoKnVpZCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNw
bGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlO
YW1lcy5jcHAKaW5kZXggZDc5YzM0MTc4YTJiYmVkYTg5NzI3MmNhMTg4YWI3NzU4ODBkZjdjZC4u
NGZkZGFmMTVmM2ZmNzA0ZWQwZTdjMDEwMjIzODUwMDQzOWI4ODRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5hbWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX3N0eWxlID0gaW50bE9wdGlv
bjxTdHlsZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwg
eyB7ICJuYXJyb3ciX3MsIFN0eWxlOjpOYXJyb3cgfSwgeyAic2hvcnQiX3MsIFN0eWxlOjpTaG9y
dCB9LCB7ICJsb25nIl9zLCBTdHlsZTo6TG9uZyB9IH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBc
Im5hcnJvd1wiLCBcInNob3J0XCIsIG9yIFwibG9uZ1wiIl9zLCBTdHlsZTo6TG9uZyk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgIGF1dG8gdHlwZSA9IGlu
dGxPcHRpb248T3B0aW9uYWw8VHlwZT4+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVy
dHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJfcywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVn
aW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2NyaXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAi
Y3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0gfSwgInR5cGUgbXVzdCBiZSBlaXRoZXIgXCJs
YW5ndWFnZVwiLCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBvciBcImN1cnJlbmN5XCIiX3MsIFdU
Rjo6bnVsbG9wdCk7CisgICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxPcHRpb25hbDxUeXBlPj4o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsgImxhbmd1
YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lvbiB9LCB7
ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6Q3VycmVu
Y3kgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9uXCIsIFwi
c2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgc3RkOjpudWxsb3B0KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghdHlwZSkgewogICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidHlwZSBtdXN0IG5vdCBiZSB1bmRl
ZmluZWQiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcAppbmRleCBhZmU0NjA2NjAzZTQ0ZDcwZTgzMDRhOTU5ZjY4YTcyYjBjOTBk
NjNlLi41ZTI0Yzk0NTMwYTJkN2E1YWM4OTgxNTAzNGZhMGM0OTU3MzU1NThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAt
MjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBPcHRpb25hbDxNZWFzdXJlVW5pdD4gc2FuY3Rpb25lZFNp
bXBsZVVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZW50CiAgICAgICAgIH0pOwogICAg
IGlmIChpdGVyYXRvciAhPSBzdGQ6OmVuZChzaW1wbGVVbml0cykgJiYgaXRlcmF0b3ItPnN1YlR5
cGUgPT0gdW5pdElkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiAqaXRlcmF0b3I7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3Qg
V2VsbEZvcm1lZFVuaXQgewpAQCAtMjQ2LDIxICsyNDYsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFdl
bGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIoU3RyaW5nVmlldyB1bml0SWRl
bnRpZmkKICAgICBhdXRvIHBlciA9IFN0cmluZ1ZpZXcoIi1wZXItIl9zKTsKICAgICBhdXRvIHBv
c2l0aW9uID0gdW5pdElkZW50aWZpZXIuZmluZChwZXIpOwogICAgIGlmIChwb3NpdGlvbiA9PSBX
VEY6Om5vdEZvdW5kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh1bml0SWRlbnRpZmllci5maW5kKHBlciwgcG9zaXRp
b24gKyBwZXIubGVuZ3RoKCkpICE9IFdURjo6bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUg
cmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcikgaXMg
ZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50
aWZpZXIuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKICAgICBhdXRvIG51bWVyYXRvclVuaXQgPSBz
YW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKTsKICAgICBpZiAoIW51bWVy
YXRvclVuaXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBs
ZVVuaXRJZGVudGlmaWVyKGRlbm9taW5hdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2Uu
CiAgICAgYXV0byBkZW5vbWluYXRvciA9IHVuaXRJZGVudGlmaWVyLnN1YnN0cmluZyhwb3NpdGlv
biArIHBlci5sZW5ndGgoKSk7CiAgICAgYXV0byBkZW5vbWluYXRvclVuaXQgPSBzYW5jdGlvbmVk
U2ltcGxlVW5pdElkZW50aWZpZXIoZGVub21pbmF0b3IpOwogICAgIGlmICghZGVub21pbmF0b3JV
bml0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIFdlbGxGb3JtZWRVbml0KG51bWVyYXRvclVuaXQudmFsdWUo
KSwgZGVub21pbmF0b3JVbml0LnZhbHVlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBjNjdkNTQyZjJiOWQxODM2ZWYzYWI1Y2NiM2U3
OGIyYjM0MWE1MDljLi43Y2Y5Yzg2NzA2YmY2NTU0M2Y4ZGU5YTMxNDkzZmVlYzEwMjhjMTExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTQ0
OCwxMiArMTQ0OCwxMiBAQCBPcHRpb25hbDxWZWN0b3I8Y2hhciwgMzI+PiBjYW5vbmljYWxpemVM
b2NhbGVJRFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdCBjaGFyKgogICAgIC8vIGh0dHBzOi8v
dW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIxNTA2CiAgICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWFsb2NfY2Fub25pY2FsRm9ybSwgbG9j
YWxlSUQsIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBidWZmZXI7CiAjZWxzZQogICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVsb2NfY2Fub25pY2FsaXplLCBsb2NhbGVJRCwgYnVmZmVyKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmNwcAppbmRleCBiODljYWU4NjYyYTEwNjY5MTZhZGRjN2MzYjFkYTU2MzdmMzVjOGM3Li42
MmM0ODhmMDU0MzdhZjIzMDNlYmRkNGRmYTQ4ZTYxNGMzYjg3ZDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cApAQCAtMjI4LDcgKzIyOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVu
aXQ+IHJlbGF0aXZlVGltZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKICAgICBpZiAoc2luZ3Vs
YXIgPT0gInllYXIiKQogICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9ZRUFSOwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBTdHJp
bmcgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAppbmRleCAxNDRiYTNjYzZh
NjdmZGI2MGJjNDgwMWRlM2JhN2JiMmZkMDY2NDI5Li5kNGFiNDlhYTFjNDVlZjY0NDIxMDM1NDM1
NmIxOTkwZmQ0ZTgyMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJp
bnNpYy5jcHAKQEAgLTM1Nyw3ICszNTcsNyBAQCBPcHRpb25hbDxJdGVyYXRpb25LaW5kPiBpbnRl
cmF0aW9uS2luZEZvckludHJpbnNpYyhJbnRyaW5zaWMgaW50cmluc2ljKQogICAgIGNhc2UgVHlw
ZWRBcnJheUVudHJpZXNJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25LaW5kOjpF
bnRyaWVzOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4
IDUxY2FiYWZiMmQwOThkNzk4YTZiYzViMGUzZjcwNWU3ZjExYTFlMGIuLjc3YzkyZWNmOGE1ZWQ1
N2EyODAxYTIwMWQzNTg2Y2JlZDNmMjUyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC00NSwzMSAr
NDUsMzEgQEAgT3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JT
bG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBib29sIGlzVmFsaWQgPSBzcGVj
aWVzV2F0Y2hwb2ludElzVmFsaWQodm0sIHRoaXNPYmplY3QsIG1vZGUpOwogICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEpT
VmFsdWUgY29uc3RydWN0b3IgPSB0aGlzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
V1RGOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBzdGQ6Om51bGxv
cHQpOwogICAgIGlmIChjb25zdHJ1Y3Rvci5pc0NvbnN0cnVjdG9yKHZtKSkgewogICAgICAgICBK
U09iamVjdCogY29uc3RydWN0b3JPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjb25zdHJ1Y3Rv
cik7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGcm9tQ29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgYm9vbCBpc0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3JGcm9tQW5vdGhlclJlYWxtID0gZ2xvYmFsT2JqZWN0ICE9IGds
b2JhbE9iamVjdEZyb21Db25zdHJ1Y3RvcgogICAgICAgICAgICAgJiYgY29uc3RydWN0b3JPYmpl
Y3QgPT0gZ2xvYmFsT2JqZWN0RnJvbUNvbnN0cnVjdG9yLT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9y
KG1vZGUpOwogICAgICAgICBpZiAoaXNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yRnJvbUFub3RoZXJS
ZWFsbSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7CiAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb25zdHJ1Y3RvciBwcm9wZXJ0eSBz
aG91bGQgbm90IGJlIG51bGwiX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEpTVmFsdWUgc3BlY2llcyA9
IGNvbnN0cnVjdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNT
eW1ib2wpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFdURjo6bnVsbG9wdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAotICAgIHJldHVy
biBzcGVjaWVzLmlzVW5kZWZpbmVkT3JOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9u
YWwoc3BlY2llcyk7CisgICAgcmV0dXJuIHNwZWNpZXMuaXNVbmRlZmluZWRPck51bGwoKSA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChzcGVjaWVzKTsKIH0KIAogZW51bSBjbGFz
cyBTcGVjaWVzQ29uc3RydWN0UmVzdWx0IDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGlu
ZXMuaAppbmRleCBhMDI5YzczN2VjZTY2MDEwN2UxZTA5NTNlYjVkMzNlMDFiNmY0YmVjLi41YmE4
M2VhYTg1MjAyYjdhZDhlNTgzYWQxODNkYzBiY2UzYjE2ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJ
bmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDxKU1ZhbHVl
PiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2wKICAgICBi
b29sIGlzVmFsaWQgPSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQodm0sIHRoaXNPYmplY3QsIG1v
ZGUpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgaWYgKExJS0VMWShpc1Zh
bGlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJyYXlCdWZmZXJTcGVj
aWVzQ29uc3RydWN0b3JTbG93KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgbW9kZSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDRjNDJjODY3
ZTAzYzViNmZiODZlNWRiMzUwOTE2NzdhZGM3ZTRhNTkuLjAwYWJiOTkyNWY3MTYzMjRlNDgyZTE3
NmE4ZjRjNzlmZGZlYzBhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAKQEAgLTI3MTEsMTMgKzI3MTEsMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0lu
dEltcGw+CiBPcHRpb25hbDxKU0JpZ0ludDo6RGlnaXQ+IEpTQmlnSW50Ojp0b1NoaWZ0QW1vdW50
KEJpZ0ludEltcGwgeCkKIHsKICAgICBpZiAoeC5sZW5ndGgoKSA+IDEpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
RGlnaXQgdmFsdWUgPSB4LmRpZ2l0KDApOwogICAgIHN0YXRpY19hc3NlcnQobWF4TGVuZ3RoQml0
cyA8IHN0ZDo6bnVtZXJpY19saW1pdHM8RGlnaXQ+OjptYXgoKSwgIm1heExlbmd0aEJpdHMgbmVl
ZHMgdG8gYmUgbGVzcyB0aGFuIGRpZ2l0Iik7CiAgICAgCiAgICAgaWYgKHZhbHVlID4gbWF4TGVu
Z3RoQml0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTMwNzgsNyArMzA3OCw3IEBA
IE9wdGlvbmFsPHVuc2lnbmVkPiBKU0JpZ0ludDo6Y29uY3VycmVudEhhc2goKQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgSlNCaWdJbnQ6OmNvbmN1cnJlbnRIYXNoIGJ5IGluc2VydGluZyBy
aWdodCBzdG9yZSBiYXJyaWVycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE2ODAxCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB1bnNpZ25lZCBKU0JpZ0ludDo6aGFzaFNsb3coKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCBjNzU5NGE4NDky
Y2U2NzRjMjQ0ZjFhZTJhM2FjMTQ3MTU1ODMxMjU0Li5hOTc0ZDk1YzdjNzJiNDA0ZmM3YTM2YmYw
Y2YxZWU2NmE0Zjg5YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogT3B0aW9uYWw8ZG91Ymxl
PiBKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAogewogICAgIGlmIChpc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBhc051bWJlcigp
OwogICAgIGlmIChpc0Jvb2xlYW4oKSkKQEAgLTg3LDcgKzg3LDcgQEAgT3B0aW9uYWw8ZG91Ymxl
PiBKU1ZhbHVlOjp0b051bWJlckZyb21QcmltaXRpdmUoKSBjb25zdAogICAgICAgICByZXR1cm4g
UE5hTjsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gaHR0cHM6Ly90
YzM5LmVzL2VjbWEyNjIvI3NlYy10b2JpZ2ludApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggYThkZTQ5M2MwYjBhYTIyYjY0ZTQ3
YWM5NGRlMTE5OGJkZTFlMzliMC4uODgzNGRkODcwOTViYzJkYmM3ZDQ0MjA1N2RiNTBjZDE3ZTFh
MzAyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oCkBAIC0xMTksNyArMTE5LDcgQEAgaW5saW5lIE9wdGlvbmFsPHVpbnQzMl90PiBK
U1ZhbHVlOjp0cnlHZXRBc1VpbnQzMkluZGV4KCkKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRv
dWJsZT4oYXNVaW50KSA9PSBudW1iZXIgJiYgaXNJbmRleChhc1VpbnQpKQogICAgICAgICAgICAg
cmV0dXJuIGFzVWludDsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNWYWx1ZTo6
dHJ5R2V0QXNJbnQzMigpCkBAIC0xMzIsNyArMTMyLDcgQEAgaW5saW5lIE9wdGlvbmFsPGludDMy
X3Q+IEpTVmFsdWU6OnRyeUdldEFzSW50MzIoKQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91
YmxlPihhc0ludCkgPT0gbnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIGFzSW50OwogICAgIH0K
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IGlubGluZSBKU1ZhbHVlIGpzTmFOKCkKQEAgLTg1Nyw3ICs4NTcsNyBAQCBBTFdBWVNfSU5MSU5F
IE9wdGlvbmFsPHVpbnQzMl90PiBKU1ZhbHVlOjp0b1VJbnQzMkFmdGVyVG9OdW1lcmljKEpTR2xv
YmFsT2JqZWN0KgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYg
KExJS0VMWShyZXN1bHQuaXNJbnQzMigpKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQzMl90PihyZXN1bHQuYXNJbnQzMigpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU1ZhbHVl
Ojp0b0JpZ0ludE9ySW50MzIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKaW5kZXggOTc2N2NjNzYwN2JmNTE4YTg4
Yjc1MTU5NTM4NzQyZDc3MzdhNGQ3ZC4uY2NmZjRhOGI2MGU5YWJlM2E0Yzc3ZTVmMTIzZjU1YWFi
NmU3ZjI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKQEAgLTE0OSw3
ICsxNDksNyBAQCBpbmxpbmUgYm9vbCBpbmhlcml0c0pTVHlwZUltcGwoVk0mIHZtLCBGcm9tKiBm
cm9tLCBKU1R5cGVSYW5nZSByYW5nZSkKIC8vIHdheSB0byBzYXkgdGhhdCB3ZSBhcmUgb3Zlcmxv
YWRpbmcganVzdCB0aGUgZmlyc3QgdHlwZSBpbiBhIHRlbXBsYXRlIGxpc3QuLi4KIHRlbXBsYXRl
PHR5cGVuYW1lIFRhcmdldD4KIHN0cnVjdCBJbmhlcml0c1RyYWl0cyB7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsgV1RGOjpudWxsb3B0IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBPcHRpb25hbDxKU1R5cGVSYW5nZT4gdHlwZVJhbmdlIHsg
c3RkOjpudWxsb3B0IH07CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnJvbT4KICAgICBzdGF0aWMg
aW5saW5lIGJvb2wgaW5oZXJpdHMoVk0mIHZtLCBGcm9tKiBmcm9tKSB7IHJldHVybiBGaW5hbFR5
cGVEaXNwYXRjaGVyPHN0ZDo6aXNfZmluYWw8VGFyZ2V0Pjo6dmFsdWU+Ojp0ZW1wbGF0ZSBpbmhl
cml0c0dlbmVyaWM8VGFyZ2V0Pih2bSwgZnJvbSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdldHRlckZ1bmN0aW9uLmgKaW5kZXggZmVh
MzE4N2ZmODdhNzdiMmZiZGI2MDliMzRlYWJjM2FhZTUwZDYzNS4uMjM4YjlhMDMwNWQ5Nzk0NjM2
MTFlNzhkM2Y2ZDJlYTljYWJiZWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDdXN0b21HZXR0ZXJGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7CiAgICAgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQ3VzdG9tR2V0
dGVyRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJvcGVydHlO
YW1lJiwgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVBbm5vdGF0
aW9uPiA9IFdURjo6bnVsbG9wdCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQ3Vz
dG9tR2V0dGVyRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgUHJv
cGVydHlOYW1lJiwgQ3VzdG9tRnVuY3Rpb25Qb2ludGVyLCBPcHRpb25hbDxET01BdHRyaWJ1dGVB
bm5vdGF0aW9uPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCA2
ZDRlOWY5YmJiMTFkN2ExZjliYTcxOTJlOWEwMWZhZjhkMTM2MTY5Li5lOWRmODQzNWU2OThlMmMw
ODUxNjZiZWNhNzU1ZmQ4ZDZkZWEyYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAgLTI3Niw3ICsyNzYsNyBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxP
YmplY3QqCiAKICAgICBKU1ZhbHVlIGZpcnN0VmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IDA7Ci0gICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGxlbmd0aCA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3Ro
ID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2
bSwgZmlyc3RWYWx1ZSkgJiYgYXJnQ291bnQgPiAxKSB7CiAgICAgICAgIG9mZnNldCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zm
c2V0Iik7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaAppbmRleCAyZTAyYmEzZDY0
MDVlZTcyZGQ0YWRlMGJhNjdjYjk1OGYxYTY0NjBiLi42ZmJhYTA3MmIwMzA5ZGIzMTU5OGI2OWZk
MmFjYmFiYjU2ZmMxZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaApA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAobV9oYXNPd25lclRo
cmVhZCkKICAgICAgICAgICAgIHJldHVybiBtX293bmVyVGhyZWFkOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBi
b29sIGN1cnJlbnRUaHJlYWRJc0hvbGRpbmdMb2NrKCkgeyByZXR1cm4gbV9oYXNPd25lclRocmVh
ZCAmJiBtX293bmVyVGhyZWFkLmdldCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxvb3BUaW1lci5jcHAKaW5kZXgg
ZjM1NDZhODgzNDUzM2ZlZDdmODgxZTVkZDUyZTY1MmVmY2Y2OGU4Yy4uMjFkMGJjZmIzMDNhMDY2
MDM2NTM1ZjdhMmZhYTFhNTBjZjg3ZTA5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNSdW5Mb29wVGltZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIE9wdGlvbmFs
PFNlY29uZHM+IEpTUnVuTG9vcFRpbWVyOjpNYW5hZ2VyOjp0aW1lVW50aWxGaXJlKEpTUnVuTG9v
cFRpbWVyJiB0aW1lcikKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBKU1J1bkxvb3BUaW1lcjo6
dGltZXJEaWRGaXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5l
Q29udGV4dC5oCmluZGV4IDg2YjM2Y2EyMmY3MDYyNWU3N2Q4ZjZmZmVmYjAyODI5ZDZiMjdjOTQu
LmRkMjliMDNlY2NhOThjNjBmM2FiZmUyNGJiZWRlMWUyYWFkOTMyZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaApAQCAtNDU0LDEyICs0NTQs
MTIgQEAgaW5saW5lIE9wdGlvbmFsPE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lz
dGVyc1BDUHRyVGFnPj4gaW5zdHJ1Y3Rpb25Qb2kKICAgICB2b2lkKiB2YWx1ZSA9IGluc3RydWN0
aW9uUG9pbnRlckltcGwoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKICNl
bmRpZgogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KG51bGxwdHIpKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxh
dGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4obnVsbHB0cikpOwogICAgIGlmICghdXNlc1BvaW50ZXJU
YWdnaW5nKCkpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KHZhbHVlKSk7CisgICAgICAgIHJldHVybiBz
dGQ6Om1ha2Vfb3B0aW9uYWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJz
UENQdHJUYWc+KHZhbHVlKSk7CiAgICAgaWYgKGlzVGFnZ2VkV2l0aDxQbGF0Zm9ybVJlZ2lzdGVy
c1BDUHRyVGFnPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KHZhbHVlKSk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChNYWNy
b0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgdm9pZCBzZXRJbnN0cnVjdGlvblBv
aW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxDRnVu
Y3Rpb25QdHJUYWc+IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aENvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aENv
bW1vbi5oCmluZGV4IGEyMjQ3ZDViY2NjNjE1M2ZlY2U2OTg5Mjg5Nzk4Zjg1ZGU2MTk5NzEuLjYz
MTcxN2Y5MGE0OTEzMDZlNDU0YzI3MTE3MzhiZjJlZWE0ZjA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKQEAgLTE4MiwxMSArMTgyLDExIEBAIGlubGlu
ZSBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNpcHJvY2FsRm9yRGl2QnlDb25zdChkb3VibGUgY29u
c3RhbnQpCiB7CiAgICAgLy8gTm8gIndlaXJkIiBudW1iZXJzIChOYU4sIERlbm9ybWFsLCBldGMp
LgogICAgIGlmICghY29uc3RhbnQgfHwgIXN0ZDo6aXNub3JtYWwoY29uc3RhbnQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaW50IGV4cG9uZW50OwogICAgIGlmIChzdGQ6OmZyZXhwKGNvbnN0YW50LCAmZXhwb25lbnQp
ICE9IDAuNSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIE5vdGUgdGhhdCBmcmV4cCgpIHJldHVybnMgdGhlIHZhbHVl
IGRpdmlkZWQgYnkgdHdvCiAgICAgLy8gc28gd2UgdG8gb2Zmc2V0IHRoaXMgZXhwb25lbnQgYnkg
b25lLgpAQCAtMTk1LDcgKzE5NSw3IEBAIGlubGluZSBPcHRpb25hbDxkb3VibGU+IHNhZmVSZWNp
cHJvY2FsRm9yRGl2QnlDb25zdChkb3VibGUgY29uc3RhbnQpCiAgICAgLy8gQSBkb3VibGUgZXhw
b25lbnQgaXMgYmV0d2VlbiAtMTAyMiBhbmQgMTAyMy4KICAgICAvLyBOb3RoaW5nIHdlIGNhbiBk
byB0byBpbnZlcnQgMTAyMy4KICAgICBpZiAoZXhwb25lbnQgPT0gMTAyMykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRv
dWJsZSByZWNpcHJvY2FsID0gc3RkOjpsZGV4cCgxLCAtZXhwb25lbnQpOwogICAgIEFTU0VSVChz
dGQ6Omlzbm9ybWFsKHJlY2lwcm9jYWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCAwYzZhOWM3NDFmNjYyNTIxNWI3
ZDU3MDRjN2FkZjBmOTVhNzI4NGE4Li5iMTdmNTkzNmZlZmM5NjM4ZWNmNDlhZWViZWM4NzBjMDg2
NGNlYmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlTeW1ib2xzLCAoSlNHbG9iYWxPYmpl
Y3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtl
eXMoZ2xvYmFsT2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRF
bnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIFdURjo6bnVsbG9wdCkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFs
T2JqZWN0LCBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGU6OlN5bWJvbHMsIERvbnRFbnVtUHJvcGVy
dGllc01vZGU6OkluY2x1ZGUsIHN0ZDo6bnVsbG9wdCkpKTsKIH0KIAogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yS2V5cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKaW5kZXggYTAxMTgzZjdkZmJiZjdkNTVlZGQ1MzAxNjAxZThiNDg5ZmIy
Y2E2My4uY2NjOTMwYzNmOTYxZGVjNTc5NzJiZTFmNWFhZDZkNzIyZjcyZjQ4NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgT3B0
aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OkJvb2w+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZywgImZhbHNlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
LCAibm8iKSB8fCAhc3RyY21wKHN0cmluZywgIjAiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8PgpAQCAtNzcsNyArNzcsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6SW50
MzI+IHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICBpbnQzMl90IHZhbHVlOwogICAgIGlm
IChzc2NhbmYoc3RyaW5nLCAiJWQiLCAmdmFsdWUpID09IDEpCiAgICAgICAgIHJldHVybiB2YWx1
ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHRlbXBsYXRlPD4KQEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6
OlVuc2lnbmVkPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgdW5zaWduZWQgdmFsdWU7
CiAgICAgaWYgKHNzY2FuZihzdHJpbmcsICIldSIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogI2lmIENQVShBRERSRVNTNjQpIHx8IE9TKERBUldJTikKQEAgLTk2LDcgKzk2
LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6OlNpemU+IHBhcnNlKGNvbnN0IGNoYXIqIHN0
cmluZykKICAgICBzaXplX3QgdmFsdWU7CiAgICAgaWYgKHNzY2FuZihzdHJpbmcsICIlenUiLCAm
dmFsdWUpID09IDEpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gQ1BVKEFERFJFU1M2
NCkgfHwgT1MoREFSV0lOKQogCkBAIC0xMDYsNyArMTA2LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0
b3JhZ2U6OkRvdWJsZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIGRvdWJsZSB2YWx1
ZTsKICAgICBpZiAoc3NjYW5mKHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAg
cmV0dXJuIHZhbHVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgpAQCAtMTE1LDcgKzExNSw3IEBAIE9wdGlvbmFsPE9w
dGlvbnNTdG9yYWdlOjpPcHRpb25SYW5nZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAg
IE9wdGlvblJhbmdlIHJhbmdlOwogICAgIGlmIChyYW5nZS5pbml0KHN0cmluZykpCiAgICAgICAg
IHJldHVybiByYW5nZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4KQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxP
cHRpb25zU3RvcmFnZTo6R0NMb2dMZXZlbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJ2ZXJib3NlIikgfHwg
IXN0cmNtcChzdHJpbmcsICIyIikpCiAgICAgICAgIHJldHVybiBHQ0xvZ2dpbmc6OlZlcmJvc2U7
CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGJvb2wgT3B0aW9uczo6aXNBdmFpbGFibGUoT3B0aW9uczo6SUQgaWQsIE9wdGlvbnM6OkF2
YWlsYWJpbGl0eSBhdmFpbGFiaWxpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZS5oCmluZGV4IGZlYjUyZTZjZjBhODgyYzE5MGY1Zjk4ZTVlY2M5MWZlMzZh
YTg1YjUuLjlkNDA1MWM1ZjJmMmE0MGRhM2JlNjNlZmY4MDllNTA4NWZiOTVlODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCkBAIC0xMjYsOSArMTI2
LDkgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFyc2VJbmRleChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIGF1dG8gdWlkID0gcHJvcGVydHlOYW1lLnVpZCgp
OwogICAgIGlmICghdWlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICh1aWQtPmlzU3ltYm9sKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHBhcnNlSW5kZXgoKnVpZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlTbG90LmgKaW5kZXggYzEwYzY1MDc5OWRkNjFmNzZkNDczOTAyMDZkMDgzMDEx
MGIxYjdlNS4uNWIwNjQyMmNiZGFkMzI3MDBhNDM1NzkzOTA5MDA5YTgxNWM0ZWE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTE5Miw3ICsx
OTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAobV9hZGRpdGlvbmFsRGF0YVR5cGUg
PT0gQWRkaXRpb25hbERhdGFUeXBlOjpET01BdHRyaWJ1dGUpCiAgICAgICAgICAgICByZXR1cm4g
bV9hZGRpdGlvbmFsRGF0YS5kb21BdHRyaWJ1dGU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc3RydWN0IE1v
ZHVsZU5hbWVzcGFjZVNsb3QgewpAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIGlmIChtX2FkZGl0aW9uYWxEYXRhVHlwZSA9PSBBZGRpdGlvbmFsRGF0YVR5cGU6Ok1v
ZHVsZU5hbWVzcGFjZSkKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRhLm1vZHVs
ZU5hbWVzcGFjZVNsb3Q7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgdm9pZCBzZXRWYWx1ZShKU09iamVjdCog
c2xvdEJhc2UsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4IDQxMTkyY2Ni
MzdlODJmZGZkZGU3YjZmMTk1YjRjNDE3ZDYxZTBiODkuLmU1ZjhkNTQzN2E5NjViMDhlYjc5MzU1
MjNmNTIyMTEwOTYwNjQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHJlZmxlY3RPYmplY3RPd25LZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2EKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5vd25LZXlzIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKLSAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2Jq
ZWN0LCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
QW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgV1RGOjpudWxsb3B0
KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blBy
b3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJ
bmNsdWRlLCBzdGQ6Om51bGxvcHQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IDA4Mjg3ODA3MjI1
NWQ4OTczNzA4MjU5ODJjZmU3ZTJlNTA0OThiYmUuLmUwMDJjNjQ2YjgwNmVjZGRiY2VkYTkwZTAw
Y2Y2OGY3NjgxMzgxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihyZWdFeHBQcm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlzVW5kZWZpbmVkKCkgPyBlbXB0
eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgICAgICBhdXRv
IGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgpID8gbWFrZU9wdGlvbmFsKE9wdGlvblNldDxZYXJy
OjpGbGFncz4geyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmluZyhnbG9iYWxP
YmplY3QpKTsKKyAgICAgICAgYXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IHN0ZDo6
bWFrZV9vcHRpb25hbChPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZs
YWdzKGFyZzEudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQog
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iX3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggNTBhNzA1MjIwZWZhZmJjN2U5NWM2MTNl
MWIwYmJiMjQ4MzU3ZDI3OS4uNTM4NTIzOGY3MDJiYmQ0NTlmNmNkODc3ZWQxNTg4YzczMzdiYTY3
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAKQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cmVw
b3J0VG9wQnl0ZWNvZGVzKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIGF1dG8gZnJhbWVEZXNj
cmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWUuZGlzcGxheU5hbWUobV92bSksIGRlc2NyaXB0aW9u
Rm9yTG9jYXRpb24oZnJhbWUuc2VtYW50aWNMb2NhdGlvbiwgZnJhbWUud2FzbUNvbXBpbGF0aW9u
TW9kZSkpOwogICAgICAgICBpZiAoT3B0aW9uYWw8c3RkOjpwYWlyPFN0YWNrRnJhbWU6OkNvZGVM
b2NhdGlvbiwgQ29kZUJsb2NrKj4+IG1hY2hpbmVMb2NhdGlvbiA9IGZyYW1lLm1hY2hpbmVMb2Nh
dGlvbikgewogICAgICAgICAgICAgZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWVE
ZXNjcmlwdGlvbiwgIiA8LS0gIiwKLSAgICAgICAgICAgICAgICBtYWNoaW5lTG9jYXRpb24tPnNl
Y29uZC0+aW5mZXJyZWROYW1lKCkuZGF0YSgpLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9uKG1hY2hp
bmVMb2NhdGlvbi0+Zmlyc3QsIFdURjo6bnVsbG9wdCkpOworICAgICAgICAgICAgICAgIG1hY2hp
bmVMb2NhdGlvbi0+c2Vjb25kLT5pbmZlcnJlZE5hbWUoKS5kYXRhKCksIGRlc2NyaXB0aW9uRm9y
TG9jYXRpb24obWFjaGluZUxvY2F0aW9uLT5maXJzdCwgc3RkOjpudWxsb3B0KSk7CiAgICAgICAg
IH0KICAgICAgICAgYnl0ZWNvZGVDb3VudHMuYWRkKGZyYW1lRGVzY3JpcHRpb24sIDApLml0ZXJh
dG9yLT52YWx1ZSsrOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggMjcwNjU1ZTljMzEwOWUxMmRjNTNmMzgy
YmMzNGMyNDg4YmEyM2NiMS4uMmVlZDE5Y2FhNTdiY2QxMzMzNWM5ZGQ5Y2I4ZDM1NTc1NThlY2I2
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBPcHRpb25hbDxpbnQ+IFNjcmlwdEV4ZWN1dGFi
bGU6Om92ZXJyaWRlTGluZU51bWJlcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgaWYgKGluaGVyaXRz
PEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0pKQogICAgICAgICByZXR1cm4ganNDYXN0PGNvbnN0IEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KHRoaXMpLT5vdmVycmlkZUxpbmVOdW1iZXIoKTsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHVuc2lnbmVk
IFNjcmlwdEV4ZWN1dGFibGU6OnR5cGVQcm9maWxpbmdTdGFydE9mZnNldChWTSYgdm0pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCBhZjUy
NjExNzM3MGQ5NTI5MDU3MzQ0MjNiNjc3ZTE5OTVlNWIwYjA2Li43ZDBmNTk4Njc4NmI5YWM0MWYz
ZjM4YWY1Zjg3OTRjMjhkMDRjMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKQEAgLTE1MDIsNyArMTUwMiw3IEBAIGF1dG8gU3RydWN0dXJlOjpmaW5k
UHJvcGVydHlIYXNoRW50cnkoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QgLT4gT3B0
aW9uCiAgICAgICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5SGFzaEVudHJ5IHsgcHJvcEhhc2hU
YWJsZSwgZW50cnkgfTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjpz
ZXRCcmFuZFRyYW5zaXRpb25Gcm9tRXhpc3RpbmdTdHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBVbmlxdWVkU3RyaW5nSW1wbCogYnJhbmRJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RvTmF0aXZlRnJvbVZhbHVlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCmluZGV4IGJiMjhjYzgwYWQzYWUy
MWRlN2M2ZmI2NzUzZTg0ZDBiMjM2ODQ4MzYuLmJiN2YxYzU4YTA2NGMzNGM1ZmZkODVjYzA5ODFm
NjQ2OTA1ZGMwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rv
TmF0aXZlRnJvbVZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9O
YXRpdmVGcm9tVmFsdWUuaApAQCAtNjEsMTQgKzYxLDE0IEBAIE9wdGlvbmFsPHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGU+IHRvTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKEpTVmFsdWUgdmFs
dWUpCiB7CiAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWVfdjxBZGFwdG9yLCBCaWdJbnQ2
NEFkYXB0b3I+IHx8IHN0ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ1VpbnQ2NEFkYXB0b3I+KSB7
CiAgICAgICAgIGlmICghdmFsdWUuaXNCaWdJbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ0ludDY0QWRhcHRvcj4pCiAgICAg
ICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnRvQmlnSW50NjQodmFsdWUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OnRvQmlnVUludDY0KHZhbHVlKTsKICAgICB9
IGVsc2UgewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKICAgICAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05h
dGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbih2YWx1ZS5hc0ludDMyKCkpOwogICAgICAgICBy
ZXR1cm4gQWRhcHRvcjo6dG9OYXRpdmVGcm9tRG91YmxlV2l0aG91dENvZXJjaW9uKHZhbHVlLmFz
RG91YmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZWRBcnJheUFkYXB0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFy
cmF5QWRhcHRvcnMuaAppbmRleCAzZDliM2U0N2ZjMDViZTk3Mjk2NDM3N2EwNzE2NjhhNGUyMjc0
MDdkLi41MzQ5ZGYxNmEyZWM0NDFlZTQ2MTJlM2M5NjY0OGZmODNkMzZlYzI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaApAQCAt
ODEsMTQgKzgxLDE0IEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICBz
dGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNpb24oaW50
MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICgodmFsdWUgPj0gMCAmJiBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4odmFsdWUpID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1heFZhbHVlKSkgfHwg
dmFsdWUgPCBzdGF0aWNfY2FzdDxpbnQzMl90PihtaW5WYWx1ZSkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CiAKICAgICBzdGF0aWMg
T3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tVWludDMyV2l0aG91dENvZXJjaW9uKHVpbnQzMl90
IHZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1heFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBl
Pih2YWx1ZSk7CiAgICAgfQpAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgSW50ZWdyYWxUeXBlZEFy
cmF5QWRhcHRvciB7CiAgICAgewogICAgICAgICBUeXBlIGludGVnZXIgPSBzdGF0aWNfY2FzdDxU
eXBlPih2YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGludGVnZXIpICE9
IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHZhbHVlIDwgMCkKICAgICAgICAgICAg
IHJldHVybiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihzdGF0aWNfY2FzdDxpbnQz
Ml90Pih2YWx1ZSkpOwpAQCAtMTU4LDEwICsxNTgsMTAgQEAgc3RydWN0IEZsb2F0VHlwZWRBcnJh
eUFkYXB0b3IgewogICAgICAgICBUeXBlIHZhbHVlUmVzdWx0ID0gc3RhdGljX2Nhc3Q8VHlwZT4o
dmFsdWUpOwogCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlUmVzdWx0KSAh
PSB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICh2YWx1ZSA8IG1pblZhbHVlIHx8IHZh
bHVlID4gbWF4VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gdmFsdWVSZXN1bHQ7
CiAgICAgfQpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0cnVjdCBVaW50OENsYW1wZWRBZGFwdG9yIHsK
ICAgICBzdGF0aWMgT3B0aW9uYWw8VHlwZT4gdG9OYXRpdmVGcm9tSW50MzJXaXRob3V0Q29lcmNp
b24oaW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmICh2YWx1ZSA+IG1heFZhbHVlIHx8
IHZhbHVlIDwgbWluVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VHlwZT4odmFsdWUpOwogICAgIH0KQEAgLTMwOSw3ICszMDksNyBAQCBzdHJ1Y3QgVWludDhD
bGFtcGVkQWRhcHRvciB7CiAgICAgewogICAgICAgICB1aW50OF90IGludGVnZXIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Pih2YWx1ZSk7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGlu
dGVnZXIpICE9IHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIGludGVnZXI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCA5YjQ0
MDZiMTE1NjNkYWY1NzM5ZWIzMzhhZjgyNTlhNWUxOGE0MTU5Li5mZGVjNmJmMTIzNDIzM2NhYWUw
MjQ4YWI4NWVhYWMxNWIyMmZhNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TVRyYXBzLmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBhdXRv
IGluc3RydWN0aW9uUG9pbnRlciA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIo
cmVnaXN0ZXJzKTsKICAgICAgICAgaWYgKCFpbnN0cnVjdGlvblBvaW50ZXIpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIFNpZ25hbENvbnRleHQocmVnaXN0ZXJzLCAqaW5zdHJ1Y3Rpb25Qb2lu
dGVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9T
aWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdp
bGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAwZTQzMmNiM2U5YTEyMjY2YTdmMjI4YzA2ZWU3NDdl
NmM5YmZkYTYwLi4xN2MyYTVmMzhjNDQ1ZGRiMDRmNzYwNDRiNmRjZTk2ODk3M2MwZjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1
Y3Rpb25Qb2ludGVyID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3Rl
cnMpOwogICAgICAgICBpZiAoIWluc3RydWN0aW9uUG9pbnRlcikKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gU2lnbmFsQ29udGV4dChyZWdpc3RlcnMsICppbnN0cnVjdGlvblBvaW50ZXIpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCmluZGV4IDUxYmY1YjA2YzYwNTlhZGViODFkNTgxZjliY2I4YWI1M2M0MWUwZTEuLjE1
ODc4ZTM2MzQwZDI0YTFmOTEyNTIxMjBmZWMxZjBiNDkyOTQ3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTI5NSw3ICsyOTUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nTG9jYWxzKCkgeyB9CiAgICAg
dm9pZCBkaWRQb3BWYWx1ZUZyb21TdGFjaygpIHsgfQogCi0gICAgVmFsdWUqIGNvbnN0YW50KEIz
OjpUeXBlLCB1aW50NjRfdCBiaXRzLCBPcHRpb25hbDxPcmlnaW4+ID0gV1RGOjpudWxsb3B0KTsK
KyAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJpdHMsIE9wdGlvbmFsPE9y
aWdpbj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIFZhbHVlKiBmcmFtZVBvaW50ZXIoKTsKICAgICB2
b2lkIGluc2VydENvbnN0YW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmgKaW5kZXggODA3YWRiOGU3MDVkOGY3NTI5YTU0YzhmMjQzMTMwY2RlYWNmZjQ1Mi4uZmE5
NmIzNGQ4NGIxNzA3NjJmZDY5N2E1MTc1NmZjOTA5ZDVlMGQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0cnVjdCBFbGVtZW50
IHsKICAgICB7IH0KIAogICAgIEVsZW1lbnQoRWxlbWVudDo6S2luZCBraW5kLCBUYWJsZUVsZW1l
bnRUeXBlIGVsZW1UeXBlKQotICAgICAgICA6IEVsZW1lbnQoa2luZCwgZWxlbVR5cGUsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgICAgICA6IEVsZW1lbnQoa2luZCwgZWxlbVR5cGUs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KQogICAgIHsgfQogCiAgICAgdWludDMyX3QgbGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gZnVuY3Rpb25JbmRpY2VzLnNpemUoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU5hbWVTZWN0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaAppbmRleCBiYzJlYmRmYzExMDMz
MDQ2OGZiMTY4MTAxMDk3NWJlZGEyZTc2ZDVmLi42ODlhMDlmZGMzY2M4OTI5MThkMjEyZjM2NjJm
NzZmYmNkYWEzYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TmFtZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTmFtZVNl
Y3Rpb24uaApAQCAtMzksNyArMzksNyBAQCBzdHJ1Y3QgTmFtZVNlY3Rpb24gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8TmFtZVNlY3Rpb24+IHsKIHB1YmxpYzoKICAgICBOYW1lU2VjdGlv
bigpCiAgICAgewotICAgICAgICBzZXRIYXNoKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHNldEhh
c2goc3RkOjpudWxsb3B0KTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPE5hbWVTZWN0aW9uPiBj
cmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwCmluZGV4IGVmZjhiYzFjOTk3ZjAyMjlhMmViYzgzNzZiZTIxNzQ5YzcyZmIzMTYuLmJm
ZGE5YjNiMGVmZTQ2MDI0ZTRjN2VhNmFlZTNhYzMyOTY1YTU1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTc3Niw3ICs3NzYs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRGF0YSgpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGRhdGFCeXRlTGVu
Z3RoKSwgImNhbid0IGdldCAiLCBzZWdtZW50TnVtYmVyLCAidGggRGF0YSBzZWdtZW50J3MgZGF0
YSBieXRlIGxlbmd0aCIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihkYXRhQnl0
ZUxlbmd0aCA+IG1heE1vZHVsZVNpemUsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQn
cyBkYXRhIGJ5dGUgbGVuZ3RoIGlzIHRvbyBiaWcgIiwgZGF0YUJ5dGVMZW5ndGgsICIgbWF4aW11
bSAiLCBtYXhNb2R1bGVTaXplKTsKIAotICAgICAgICAgICAgYXV0byBzZWdtZW50ID0gU2VnbWVu
dDo6Y3JlYXRlKFdURjo6bnVsbG9wdCwgZGF0YUJ5dGVMZW5ndGgsIFNlZ21lbnQ6OktpbmQ6OlBh
c3NpdmUpOworICAgICAgICAgICAgYXV0byBzZWdtZW50ID0gU2VnbWVudDo6Y3JlYXRlKHN0ZDo6
bnVsbG9wdCwgZGF0YUJ5dGVMZW5ndGgsIFNlZ21lbnQ6OktpbmQ6OlBhc3NpdmUpOwogICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighc2VnbWVudCwgImNhbid0IGFsbG9jYXRlIGVub3Vn
aCBtZW1vcnkgZm9yICIsIHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQgb2Ygc2l6ZSAi
LCBkYXRhQnl0ZUxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGRhdGFCeXRlID0g
MDsgZGF0YUJ5dGUgPCBkYXRhQnl0ZUxlbmd0aDsgKytkYXRhQnl0ZSkgewogICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgYnl0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TdHJlYW1pbmdQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVN0cmVhbWluZ1BhcnNlci5jcHAKaW5kZXggMWQyMjVjNzhlMDNiOGRhOTk0MmYzMjJiYTgyMzAz
N2NlMDJmOGM4Yy4uMWVjYTQzNmRmNTkyZjA3ZjM4M2VkMDdhOWQxOWI0N2I1NGRjZGRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50OF90PiBwYXJz
ZVVJbnQ3KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCYgb2Zmc2V0LAogICAgIHVpbnQ4X3Qg
cmVzdWx0ID0gZGF0YVtvZmZzZXQrK107CiAgICAgaWYgKHJlc3VsdCA8IDB4ODApCiAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgLi4uQXJncz4KQEAgLTIwOSw3ICsy
MDksNyBAQCBhdXRvIFN0cmVhbWluZ1BhcnNlcjo6Y29uc3VtZShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGJ5dGVzU2l6ZSwgc2l6ZV90JiBvZgogICAgIGlmICh0b3RhbERhdGFTaXplIDwg
cmVxdWlyZWRTaXplKSB7CiAgICAgICAgIG1fcmVtYWluaW5nLmFwcGVuZChieXRlcyArIG9mZnNl
dEluQnl0ZXMsIGJ5dGVzUmVtYWluaW5nU2l6ZSk7CiAgICAgICAgIG9mZnNldEluQnl0ZXMgPSBi
eXRlc1NpemU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc2l6ZV90IHVzZWRTaXplID0gcmVxdWlyZWRTaXpl
IC0gbV9yZW1haW5pbmcuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJs
ZS5jcHAKaW5kZXggZmEyNjZkMjk3YjFiNmQ1ZWFjNzQ4NmI3YTUxOGI5YjNjZTI3MGU0OC4uOWFh
NjcwMjMwZWU3MTc5ZThlYjE4YTRjYWQ1N2I0OWY5MTgwNjNkZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtVGFibGUuY3BwCkBAIC05MiwxMiArOTIsMTIgQEAgT3B0aW9uYWw8dWlu
dDMyX3Q+IFRhYmxlOjpncm93KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkK
ICAgICBuZXdMZW5ndGhDaGVja2VkICs9IGRlbHRhOwogICAgIHVpbnQzMl90IG5ld0xlbmd0aDsK
ICAgICBpZiAobmV3TGVuZ3RoQ2hlY2tlZC5zYWZlR2V0KG5ld0xlbmd0aCkgPT0gQ2hlY2tlZFN0
YXRlOjpEaWRPdmVyZmxvdykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtYXhpbXVtKCkgJiYgbmV3TGVuZ3RoID4g
Km1heGltdW0oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWlzVmFsaWRMZW5ndGgobmV3TGVuZ3RoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gY2hlY2tlZEdyb3cgPSBbJl0gKGF1dG8mIGNvbnRhaW5lciwgYXV0byBpbml0aWFs
aXplcikgewogICAgICAgICBpZiAobmV3TGVuZ3RoQ2hlY2tlZC51bnNhZmVHZXQoKSA+IGFsbG9j
YXRlZExlbmd0aChtX2xlbmd0aCkpIHsKQEAgLTExOCwxMyArMTE4LDEzIEBAIE9wdGlvbmFsPHVp
bnQzMl90PiBUYWJsZTo6Z3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUp
CiAKICAgICBpZiAoYXV0byogZnVuY1JlZlRhYmxlID0gYXNGdW5jcmVmVGFibGUoKSkgewogICAg
ICAgICBpZiAoIWNoZWNrZWRHcm93KGZ1bmNSZWZUYWJsZS0+bV9pbXBvcnRhYmxlRnVuY3Rpb25z
LCBbXSAoYXV0byYpIHsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFjaGVja2VkR3Jvdyhm
dW5jUmVmVGFibGUtPm1faW5zdGFuY2VzLCBbXSAoYXV0byYpIHsgfSkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBpZiAoIWNoZWNrZWRHcm93KG1fanNWYWx1ZXMsIFtkZWZhdWx0VmFsdWVdIChX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIHNsb3QpIHsgc2xvdC5zZXRTdGFydGluZ1ZhbHVlKGRlZmF1
bHRWYWx1ZSk7IH0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2V0TGVuZ3RoKG5ld0xlbmd0aCk7CiAgICAgcmV0dXJu
IG5ld0xlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA1OGU4Y2QwMDA2ODIzZGVhZjRlZTY4
NzNhMTcxOGFkNTc4MzZmNWIzLi45ZmIxZTkzYjZmOTFiOTUwNTNiOWJiMTAwMDFlNmE3ZjYzNTE4
NjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNPYmplY3QqIGkKIAogICAgIGJvb2wgaGFzU3RhcnQgPSAhIW1vZHVsZUluZm9ybWF0aW9uLnN0
YXJ0RnVuY3Rpb25JbmRleFNwYWNlOwogICAgIGlmIChoYXNTdGFydCkgewotICAgICAgICBhdXRv
IHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlID0gbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlv
bkluZGV4U3BhY2UudmFsdWVPcigwKTsKKyAgICAgICAgYXV0byBzdGFydEZ1bmN0aW9uSW5kZXhT
cGFjZSA9IG1vZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlLnZhbHVlX29y
KDApOwogICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVs
ZS0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRl
eFNwYWNlKTsKICAgICAgICAgY29uc3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNt
OjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgLy8g
VGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3VtZW50cyBvciByZXR1cm4g
YW55dGhpbmcuIFRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHBhcnNlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCmluZGV4IDE3NTA0ZmJhMTZlOTBkYmNmMGQ1YjlmNjM4
MGRmYjAyMTk4NjUxNGEuLjI5NzAxZjYxZmQ5Nzg4ZDEwZmRkNjA0ZDBmMjBlZWM5YjgwZjAwOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFncy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcApAQCAtMzksNTIgKzM5
LDUyIEBAIE9wdGlvbmFsPE9wdGlvblNldDxGbGFncz4+IHBhcnNlRmxhZ3MoU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CiAgICAgICAgIGNhc2UgJ2QnOgog
ICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpIYXNJbmRpY2VzKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6Okhhc0luZGljZXMpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBpZiAo
ZmxhZ3MuY29udGFpbnMoRmxhZ3M6Okdsb2JhbCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgZmxhZ3MuYWRkKEZsYWdzOjpHbG9iYWwpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICBpZiAoZmxhZ3MuY29udGFpbnMoRmxhZ3M6Okln
bm9yZUNhc2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFn
czo6SWdub3JlQ2FzZSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdtJzoK
ICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFnczo6TXVsdGlsaW5lKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6Ok11bHRpbGluZSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIGlmIChm
bGFncy5jb250YWlucyhGbGFnczo6RG90QWxsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBmbGFncy5hZGQoRmxhZ3M6OkRvdEFsbCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlu
cyhGbGFnczo6VW5pY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZmxhZ3Mu
YWRkKEZsYWdzOjpVbmljb2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IAogICAgICAgICBjYXNlICd5JzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFn
czo6U3RpY2t5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxh
Z3M6OlN0aWNreSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsKGZsYWdz
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKGZsYWdzKTsKIH0KIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OllhcnIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50
ZXJwcmV0ZXIuY3BwCmluZGV4IGNiYjZjNTY5NWE3OWUyYzhlN2Y1YmMzODdhOGYzNGE0OWEwNzIw
OGMuLmRlNjI3NWJkZjhhYWE1NDA3MTljZDliOGYzNjJiNGFmNzcxOTVhODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcApAQCAtMjE3Niw3ICsy
MTc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wRGlzanVuY3Rpb24o
Qnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbiwgdW5zaWduZWQgbmVzdGluZyA9IDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKaW5kZXggNWY0ZmRmOTBjZDdjZWQ4ZDRkM2Y4YmIx
YTdhODlhNzEyMGNiMTYyNC4uM2E4ZTVmMjNmYjI4OThhOTU0N2ZmMDg5NDU3ODFmM2Q5MmQyNmMy
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApAQCAtMTk2LDcgKzE5Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9yZWYxNiA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyMTZC
aXRQdHJUYWc+KCk7CiAgICAgICAgIG1fbWF0Y2hPbmx5OCA9IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxZYXJyTWF0Y2hPbmx5OEJpdFB0clRhZz4oKTsKICAgICAgICAgbV9tYXRjaE9ubHkxNiA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KCk7Ci0gICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mYWlsdXJlUmVhc29u
ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95
YXJyL1lhcnJQYXJzZXIuaAppbmRleCA5N2FlM2NmN2FiNGY0Nzg1NmQ0MWMyNGJmYzc3ZTRiZjBi
ODU3NGQ2Li5mZWFmYWFjYmFmMTM3ZmQxNTQ4NzgzNDdmMjRlNmNkNTExYWQ1MWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCkBAIC0xMTIxLDcgKzExMjEsNyBAQCBw
cml2YXRlOgogICAgIE9wdGlvbmFsPFN0cmluZz4gdHJ5Q29uc3VtZUdyb3VwTmFtZSgpCiAgICAg
ewogICAgICAgICBpZiAoYXRFbmRPZlBhdHRlcm4oKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFBh
cnNlU3RhdGUgc3RhdGUgPSBzYXZlU3RhdGUoKTsKICAgICAgICAgCkBAIC0xMTQ1LDE0ICsxMTQ1
LDE0IEBAIHByaXZhdGU6CiAKICAgICAgICAgcmVzdG9yZVN0YXRlKHN0YXRlKTsKIAotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB0cnlDb25zdW1lVW5p
Y29kZVByb3BlcnR5RXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICBpZiAoYXRFbmRPZlBhdHRl
cm4oKSB8fCAhaXNVbmljb2RlUHJvcGVydHlWYWx1ZUV4cHJlc3Npb25DaGFyKHBlZWsoKSkpIHsK
ICAgICAgICAgICAgIG1fZXJyb3JDb2RlID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3Bl
cnR5RXhwcmVzc2lvbjsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nQnVp
bGRlciBleHByZXNzaW9uQnVpbGRlcjsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgY29uc3VtZSgpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkludmFsaWRVbmlj
b2RlUHJvcGVydHlFeHByZXNzaW9uOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmIChmb3VuZEVxdWFscykgewpAQCAtMTE5
OSw3ICsxMTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIG1fZXJyb3JDb2Rl
ID0gRXJyb3JDb2RlOjpJbnZhbGlkVW5pY29kZVByb3BlcnR5RXhwcmVzc2lvbjsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBlbnVtIGNsYXNzIFBhcmVudGhlc2VzVHlwZSA6IHVpbnQ4X3QgeyBTdWJwYXR0ZXJu
LCBBc3NlcnRpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNw
cAppbmRleCBhMTEzYWFjMzJmZWEzNTIwZWE5NDI2ZGVlOGI1MTIwOTUyNjA1MDg4Li45ZTM2MTcw
ODVkMWE4YWU3N2ViZjY4ZGYzNGU0ODE3ZGI1ZWRjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgcHVibGljOgogICAg
ICAgICBtX3BhdHRlcm4ubV91c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdD
aGFyYWN0ZXJDbGFzcykpOwogICAgIH0KIAotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0
dGVybkJlZ2luKGJvb2wgY2FwdHVyZSA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gb3B0R3JvdXBO
YW1lID0gV1RGOjpudWxsb3B0KQorICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJl
Z2luKGJvb2wgY2FwdHVyZSA9IHRydWUsIE9wdGlvbmFsPFN0cmluZz4gb3B0R3JvdXBOYW1lID0g
c3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0gbV9w
YXR0ZXJuLm1fbnVtU3VicGF0dGVybnMgKyAxOwogICAgICAgICBpZiAoY2FwdHVyZSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRheENoZWNrZXIuY3BwCmluZGV4
IDNjN2E1ZGMzNDgyZmYyZTczMWRkN2Y4MmVmNmNkNmYwNTgzMjQwMGEuLjNmZTU4NTdhYTY1NDEx
NDhmMzlmZmFhZGI4YjFjMTcxNzI3ZjA5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJTeW50YXhDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKQEAgLTI4LDMxICsyOCwzMCBAQAogCiAjaW5j
bHVkZSAiWWFyckZsYWdzLmgiCiAjaW5jbHVkZSAiWWFyclBhcnNlci5oIgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogCiBjbGFz
cyBTeW50YXhDaGVja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGFzc2VydGlvbkJPTCgpIHt9Ci0g
ICAgdm9pZCBhc3NlcnRpb25FT0woKSB7fQotICAgIHZvaWQgYXNzZXJ0aW9uV29yZEJvdW5kYXJ5
KGJvb2wpIHt9Ci0gICAgdm9pZCBhdG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMyKSB7fQotICAg
IHZvaWQgYXRvbUJ1aWx0SW5DaGFyYWN0ZXJDbGFzcyhCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwg
Ym9vbCkge30KLSAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0JlZ2luKGJvb2wgPSBmYWxzZSkg
e30KLSAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0F0b20oVUNoYXIpIHt9Ci0gICAgdm9pZCBh
dG9tQ2hhcmFjdGVyQ2xhc3NSYW5nZShVQ2hhciwgVUNoYXIpIHt9Ci0gICAgdm9pZCBhdG9tQ2hh
cmFjdGVyQ2xhc3NCdWlsdEluKEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lELCBib29sKSB7fQotICAg
IHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzRW5kKCkge30KLSAgICB2b2lkIGF0b21QYXJlbnRoZXNl
c1N1YnBhdHRlcm5CZWdpbihib29sID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiA9IFdURjo6bnVs
bG9wdCkge30KLSAgICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCA9
IGZhbHNlKSB7fQotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzRW5kKCkge30KLSAgICB2b2lkIGF0
b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKSB7fQotICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVy
ZW5jZShjb25zdCBTdHJpbmcmKSB7fQotICAgIHZvaWQgYXRvbU5hbWVkRm9yd2FyZFJlZmVyZW5j
ZShjb25zdCBTdHJpbmcmKSB7fQotICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVuc2lnbmVkLCB1bnNp
Z25lZCwgYm9vbCkge30KLSAgICB2b2lkIGRpc2p1bmN0aW9uKCkge30KLSAgICB2b2lkIHJlc2V0
Rm9yUmVwYXJzaW5nKCkge30KKyAgICB2b2lkIGFzc2VydGlvbkJPTCgpIHsgfQorICAgIHZvaWQg
YXNzZXJ0aW9uRU9MKCkgeyB9CisgICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRhcnkoYm9vbCkg
eyB9CisgICAgdm9pZCBhdG9tUGF0dGVybkNoYXJhY3RlcihVQ2hhcjMyKSB7IH0KKyAgICB2b2lk
IGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wp
IHsgfQorICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzQmVnaW4oYm9vbCA9IGZhbHNlKSB7IH0K
KyAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0F0b20oVUNoYXIpIHsgfQorICAgIHZvaWQgYXRv
bUNoYXJhY3RlckNsYXNzUmFuZ2UoVUNoYXIsIFVDaGFyKSB7IH0KKyAgICB2b2lkIGF0b21DaGFy
YWN0ZXJDbGFzc0J1aWx0SW4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wpIHsgfQorICAg
IHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzRW5kKCkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGVz
ZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCA9IHRydWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiA9IHN0
ZDo6bnVsbG9wdCkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
KGJvb2wgPSBmYWxzZSkgeyB9CisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7IH0KKyAg
ICB2b2lkIGF0b21CYWNrUmVmZXJlbmNlKHVuc2lnbmVkKSB7IH0KKyAgICB2b2lkIGF0b21OYW1l
ZEJhY2tSZWZlcmVuY2UoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdm9pZCBhdG9tTmFtZWRGb3J3
YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZvaWQgcXVhbnRpZnlBdG9tKHVu
c2lnbmVkLCB1bnNpZ25lZCwgYm9vbCkgeyB9CisgICAgdm9pZCBkaXNqdW5jdGlvbigpIHsgfQor
ICAgIHZvaWQgcmVzZXRGb3JSZXBhcnNpbmcoKSB7IH0KIH07CiAKIEVycm9yQ29kZSBjaGVja1N5
bnRheChjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFN0cmluZyYgZmxhZ3MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclVuaWNvZGVQcm9wZXJ0aWVzLmNwcApp
bmRleCAzMjFlOThmODI4MWVjODA3NTg3ZTJjYjVkMzE4OWI2MzNjNmVkMjBlLi4wMGI4YWJkMmNi
ODkwZmRiNjRkNzdjMTlmMDNkYWI2YWYyYThkOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5
VmFsdWUoV1RGOjpTdHJpbmcgdW5pY29kZVAKICAgICAgICAgcHJvcGVydHlJbmRleCA9IGdlbmVy
YWxDYXRlZ29yeUhhc2hUYWJsZS5lbnRyeSh1bmljb2RlUHJvcGVydHlWYWx1ZSk7CiAKICAgICBp
ZiAocHJvcGVydHlJbmRleCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBPcHRpb25hbDxCdWlsdElu
Q2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0
YXRpY19jYXN0PGludD4oQnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ6OkJhc2VVbmljb2RlUHJvcGVy
dHlJRCkgKyBwcm9wZXJ0eUluZGV4KSk7CiB9CkBAIC05OCw3ICs5OCw3IEBAIE9wdGlvbmFsPEJ1
aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPiB1bmljb2RlTWF0Y2hQcm9wZXJ0eShXVEY6OlN0cmluZyB1
bmljb2RlUHJvcGVyCiAgICAgICAgIHByb3BlcnR5SW5kZXggPSBnZW5lcmFsQ2F0ZWdvcnlIYXNo
VGFibGUuZW50cnkodW5pY29kZVByb3BlcnR5VmFsdWUpOwogICAgIAogICAgIGlmIChwcm9wZXJ0
eUluZGV4ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJD
bGFzc0lEPihzdGF0aWNfY2FzdDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8
aW50PihCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRDo6QmFzZVVuaWNvZGVQcm9wZXJ0eUlEKSArIHBy
b3BlcnR5SW5kZXgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFk
Q29waWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IGFhM2I3
ODNlNjJkNTJlMjg1YTAzMGQ5MWY3NmQ2MjhkZGJmZDQzNWYuLjY4MGFhZWM5NGFhYzQ4OWE0ZGQ0
MzJjODdiODgyNzA0Yjg5YjYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAt
MTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBPcHRpb25hbDxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IHN0YXRpYyBPcHRpb25hbDxUPiBjb3B5KFUmJiBzb3VyY2UpCiAgICAgewogICAgICAg
ICBpZiAoIXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQ3Jvc3NUaHJlYWRDb3Bp
ZXI8VD46OmNvcHkoc3RkOjpmb3J3YXJkPFU+KHNvdXJjZSkudmFsdWUoKSk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGVNYXRoLmNwcAppbmRleCAxZTEyOGZiOWYyMGI1MGI2ODc0YTg4NjU2OTA3YmI0YzA1OWJj
MjI5Li4wZmY4ZGUzYjZmMGYxNzJmNzA3M2UxZDBiMmYxZGEzODQ2NTVmZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1h
dGguY3BwCkBAIC04MTcsNyArODE3LDcgQEAgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWlu
YXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbCYgaXNMb2MKICAgICAg
ICAgICAgIGlmICgqbmV3UG9zU3RyICE9ICc6JykKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICAgICAgICAgIC8vIFRo
ZXJlIHdhcyBubyB5ZWFyOyB0aGUgbnVtYmVyIHdhcyB0aGUgaG91ci4KLSAgICAgICAgICAgIHll
YXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB5ZWFyID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gaW4gdGhlIG5vcm1hbCBjYXNlICh3ZSBwYXJz
ZWQgdGhlIHllYXIpLCBhZHZhbmNlIHRvIHRoZSBuZXh0IG51bWJlcgogICAgICAgICAgICAgZGF0
ZVN0cmluZyA9ICsrbmV3UG9zU3RyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAppbmRleCAyNDcwZTQ4NTlm
ZjdlNDg2MDI5ZDdjOTUzMTEzMDkxZDlkNTU5NWE4Li40ODMxYjA0N2Q1ODk5OWJlNzZiYTk1MDdl
NGQwNTA1ZTIxM2VkM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcApAQCAtNTkzLDcgKzU5Myw3IEBA
IE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgc3Rk
OjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gc2l6ZSA9IHN0ZDo6ZmlsZXN5c3RlbTo6ZmlsZV9z
aXplKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHNpemU7CiB9CiAKQEAgLTYwOSw3ICs2MDksNyBAQCBPcHRpb25hbDx1aW50NjRfdD4g
dm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBzdGQ6OmVycm9yX2NvZGUg
ZWM7CiAgICAgYXV0byBzcGFjZUluZm8gPSBzdGQ6OmZpbGVzeXN0ZW06OnNwYWNlKHRvU3RkRmls
ZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNwYWNl
SW5mby5hdmFpbGFibGU7CiB9CiAKQEAgLTY0NSw3ICs2NDUsNyBAQCBPcHRpb25hbDx1aW50NjRf
dD4gaGFyZExpbmtDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc3RkOjplcnJvcl9j
b2RlIGVjOwogICAgIHVpbnQ2NF90IGxpbmtDb3VudCA9IHN0ZDo6ZmlsZXN5c3RlbTo6aGFyZF9s
aW5rX2NvdW50KHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKTsKLSAgICByZXR1cm4gZWMg
PyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwobGlua0NvdW50KTsKKyAgICByZXR1cm4gZWMg
PyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwobGlua0NvdW50KTsKIH0KIAogYm9v
bCBkZWxldGVOb25FbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC02NjAsNyAr
NjYwLDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBtb2RpZmljYXRp
b25UaW1lID0gc3RkOjpmaWxlc3lzdGVtOjpsYXN0X3dyaXRlX3RpbWUodG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdG9XYWxsVGltZSht
b2RpZmljYXRpb25UaW1lKTsKIH0KIApAQCAtNjg5LDcgKzY4OSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxvd2luZ1N5bUxpbmtzKGNvbnN0IFN0
cmluZyYgcGF0CiAgICAgc3RkOjplcnJvcl9jb2RlIGVjOwogICAgIGF1dG8gc3RhdHVzID0gc2hv
dWxkRm9sbG93U3ltYm9saWNMaW5rcyA9PSBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMg
PyBzdGQ6OmZpbGVzeXN0ZW06OnN0YXR1cyh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYykg
OiBzdGQ6OmZpbGVzeXN0ZW06OnN5bWxpbmtfc3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0
aCksIGVjKTsKICAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3dpdGNoIChzdGF0dXMudHlwZSgpKSB7CiAg
ICAgY2FzZSBzdGQ6OmZpbGVzeXN0ZW06OmZpbGVfdHlwZTo6ZGlyZWN0b3J5OgogICAgICAgICBy
ZXR1cm4gRmlsZVR5cGU6OkRpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0pT
T05WYWx1ZXMuY3BwIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKaW5kZXggM2QyNTZi
ZWYyZGE5MTE0ODMyOWE1MDNhZjJiNGI2NzdlYjUyMTljYy4uZWM5ZTUzNDFiM2JhZGExMzdlMzBh
MTdhMTRmMTVmYTdmZWQ3OWRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVl
cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAKQEAgLTU2OSwyMSArNTY5
LDIxIEBAIFN0cmluZyBWYWx1ZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIE9wdGlvbmFsPGJvb2w+
IFZhbHVlOjphc0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6Qm9v
bGVhbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5ib29sZWFuOwogfQogCiBPcHRpb25hbDxkb3Vi
bGU+IFZhbHVlOjphc0RvdWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpE
b3VibGUgJiYgdHlwZSgpICE9IFR5cGU6OkludGVnZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUu
bnVtYmVyOwogfQogCiBPcHRpb25hbDxpbnQ+IFZhbHVlOjphc0ludGVnZXIoKSBjb25zdAogewog
ICAgIGlmICh0eXBlKCkgIT0gVHlwZTo6RG91YmxlICYmIHR5cGUoKSAhPSBUeXBlOjpJbnRlZ2Vy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1fdmFsdWUubnVtYmVyKTsKIH0KIApA
QCAtNjUyLDcgKzY1Miw3IEBAIE9wdGlvbmFsPGJvb2w+IE9iamVjdEJhc2U6OmdldEJvb2xlYW4o
Y29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShu
YW1lKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZS0+YXNCb29sZWFuKCk7
CiB9CiAKQEAgLTY2MCw3ICs2NjAsNyBAQCBPcHRpb25hbDxkb3VibGU+IE9iamVjdEJhc2U6Omdl
dERvdWJsZShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdl
dFZhbHVlKG5hbWUpOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlLT5hc0Rv
dWJsZSgpOwogfQogCkBAIC02NjgsNyArNjY4LDcgQEAgT3B0aW9uYWw8aW50PiBPYmplY3RCYXNl
OjpnZXRJbnRlZ2VyKGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVl
ID0gZ2V0VmFsdWUobmFtZSk7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmFsdWUt
PmFzSW50ZWdlcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxw
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCmluZGV4IDU0MmMyMzRmYWZmZjUx
OGZkZmI1YmRjYTg4ZDM5M2ZkZjdiYjQxM2YuLjVjODJmZTZiZDlmNjE2YmE2Y2RlZGQ2M2ExNmJl
MTkwNmM5NTA3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCkBAIC04Nyw3ICs4Nyw3IEBAIHB1Ymxp
YzoKICAgICB9CiAjZWxzZSAvLyBSRUxFQVNFX0xPR19ESVNBQkxFRAogCi0jZGVmaW5lIExPR0lE
RU5USUZJRVIgKFdURjo6bnVsbG9wdCkKKyNkZWZpbmUgTE9HSURFTlRJRklFUiAoc3RkOjpudWxs
b3B0KQogCiAjZGVmaW5lIEFMV0FZU19MT0coY2hhbm5lbE5hbWUsIC4uLikgIChVTlVTRURfUEFS
QU0oY2hhbm5lbE5hbWUpKQogI2RlZmluZSBFUlJPUl9MT0coY2hhbm5lbE5hbWUsIC4uLikgICAo
VU5VU0VEX1BBUkFNKGNoYW5uZWxOYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01h
cmthYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXJrYWJsZS5oCmluZGV4IDg4NWMwNWViMDc0YTZl
Y2UxNGFjMzNlY2I4NmZkNTI1ZGE0ZTc4ZDYuLmMzOWRkMzY2ZWY3ODhlNDQ0ZmU2NDY2ODc4ODY4
ZmVkOWU3MmU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKKysrIGIv
U291cmNlL1dURi93dGYvTWFya2FibGUuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogbV92YWx1ZShUcmFpdHM6OmVtcHR5VmFsdWUoKSkKICAgICB7IH0KIAotICAgIGNvbnN0
ZXhwciBNYXJrYWJsZShXVEY6Om51bGxvcHRfdCkKKyAgICBjb25zdGV4cHIgTWFya2FibGUoc3Rk
OjpudWxsb3B0X3QpCiAgICAgICAgIDogTWFya2FibGUoKQogICAgIHsgfQogCkBAIC0xMzIsMTQg
KzEzMiwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoYm9vbCgqdGhpcykpCiAgICAg
ICAgICAgICByZXR1cm4gV1RGTW92ZShtX3ZhbHVlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBvcGVyYXRv
ciBPcHRpb25hbDxUPigpIGNvbnN0JgogICAgIHsKICAgICAgICAgaWYgKGJvb2woKnRoaXMpKQog
ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8VD4g
YXNPcHRpb25hbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cAppbmRleCAxZjg2YjhkMzk3OTEyNTg1Y2NmNTA2NjdmMjFkYjJmMjMwYWY5MjI4Li45ZTA4ODI0
YmU1NTgzNjc5NjU5MDAxMzUwYWI0MjdmMDEzMzc2MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lbW9y
eVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxzaXplX3Q+
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6dGhyZXNob2xkRm9yTWVtb3J5S2lsbCgpCiAgICAgY2Fz
ZSBXZWJzYW1Qcm9jZXNzU3RhdGU6OkFjdGl2ZToKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3Rh
dGljIHNpemVfdCB0aHJlc2hvbGRGb3JQb2xpY3koTWVtb3J5VXNhZ2VQb2xpY3kgcG9saWN5KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oIGIvU291cmNlL1dURi93
dGYvTW9ub3RvbmljVGltZS5oCmluZGV4IDFhM2U4NmYwYWFhZWZlMzNhODJkYTBhNjMxYjEyNzQ3
YmNjNWJkYjQuLjU0NGFhNDc3YzAyNWZiNDE0NWYyZTY2YjAxY2Y1MGE3ODkxZjA0NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Nb25vdG9uaWNUaW1lLmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9w
dGlvbmFsPGRvdWJsZT4gdGltZTsKICAgICAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgICAgICBp
ZiAoIXRpbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6OmZyb21S
YXdTZWNvbmRzKCp0aW1lKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09i
amVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRl
eCA3ZDg4ODk4MTYyMGE4NmU1OWM1YjM1NzU4MTlmY2YxZDFhNDMwNGEzLi5iMDhmMDU0ODQ1NWE2
NGUzZWQ2ZmI0ZThhODgwZmJjMjJhMTQ1ZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9P
YmplY3RJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5o
CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFp
ZGVudGlmaWVyIHx8ICFpc1ZhbGlkSWRlbnRpZmllcigqaWRlbnRpZmllcikpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXIgeyAqaWRlbnRpZmllciB9OwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaAppbmRleCAzNmJjYzA0ZDc1ZmRmNDI1YWI5ZWI5ZjllZDMxNmU5YzcyMTFk
ODM2Li43N2U2Mjg5YmM1MDYzZDQ3M2FkZjdiYTk5MjU1ZTY2ZjU0Nzk1ZGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0ZXhwciBPcHRpb25h
bDxFPiB0b1NpbmdsZVZhbHVlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBoYXNFeGFj
dGx5T25lQml0U2V0KCkgPyBPcHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2UpKSA6
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/IE9w
dGlvbmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMs
IE9wdGlvblNldCByaHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIv
U291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRleCBlOTU4YWMzNjk3OTRkNjJmYjBjN2IyYmVi
ZWY5YjkzMzQ3ZjY4ZDI2Li43OWRlOTI2NjY3MGVhM2RiZGVlZjYyYzA4MGVmMTM1ZGU3NzkyMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL09wdGlvbmFsLmgKQEAgLTI1LDIzICsyNSw2IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdXNpbmcgT3B0aW9uYWwgPSBzdGQ6Om9wdGlvbmFsPFQ+OwotY29u
c3RleHByIGF1dG8gbnVsbG9wdCA9IHN0ZDo6bnVsbG9wdDsKLXVzaW5nIG51bGxvcHRfdCA9IHN0
ZDo6bnVsbG9wdF90OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVu
dFR5cGVzPiBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxzdGQ6OmRlY2F5X3Q8VD4+IG1ha2VPcHRp
b25hbChUJiYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbDxzdGQ6OmRl
Y2F5X3Q8VD4+KHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPiBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxU
PiBtYWtlT3B0aW9uYWwoQXJndW1lbnRUeXBlcyYmLi4uIGFyZ3VtZW50cykKLXsKLSAgICByZXR1
cm4gc3RkOjptYWtlX29wdGlvbmFsPFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1
bWVudHMpLi4uKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUuLi4gQXJndW1lbnRUeXBlcz4gY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8VD4gbWFrZU9wdGlv
bmFsKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxVPiBsaXN0LCBBcmd1bWVudFR5cGVzJiYuLi4gYXJn
dW1lbnRzKQotewotICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWw8VD4obGlzdCwgc3RkOjpm
b3J3YXJkPEFyZ3VtZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOwotfQogCiAvLyBGSVhNRTogV2Ug
cHJvYmFibHkgZG9uJ3QgbmVlZCB0aGlzOyBpdCdzIG9ubHkgdXNlZCBpbiA1IHBsYWNlcy4KIHRl
bXBsYXRlPHR5cGVuYW1lIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IGF1dG8gdmFsdWVP
ckNvbXB1dGUoT3B0aW9uYWxUeXBlIG9wdGlvbmFsLCBDYWxsYmFjayBjYWxsYmFjaykgLT4gdHlw
ZW5hbWUgT3B0aW9uYWxUeXBlOjp2YWx1ZV90eXBlCkBAIC01Miw5ICszNSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IGF1dG8gdmFsdWVPckNvbXB1
dGUoT3B0aW9uYWxUeXBlCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpPcHRpb25h
bDsKLXVzaW5nIFdURjo6bWFrZU9wdGlvbmFsOwogdXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsK
IAotLy8gRklYTUU6IFRoZXNlIG1hY3JvcyBhcmUgYSB3b3JrYXJvdW5kIHRvIGFsbG93IHVzIHRv
IHVzZSBzdGQ6Om9wdGlvbmFsIHdpdGhvdXQgYSBnbG9iYWwgcmVwbGFjZTsgdGhleSBjYW4gYmUg
cmVtb3ZlZCBhZnRlciBzYWlkIGdsb2JhbCByZXBsYWNlLgorLy8gRklYTUU6IFRoaXMgbWFjcm8g
aXMgYSB3b3JrYXJvdW5kIHRvIGFsbG93IHVzIHRvIHVzZSBzdGQ6Om9wdGlvbmFsIHdpdGhvdXQg
YSBnbG9iYWwgcmVwbGFjZTsgaXQgY2FuIGJlIHJlbW92ZWQgYWZ0ZXIgdGhlIGdsb2JhbCByZXBs
YWNlLgogI2RlZmluZSBoYXNWYWx1ZSBoYXNfdmFsdWUKLSNkZWZpbmUgdmFsdWVPciB2YWx1ZV9v
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dURi93dGYv
U2Vjb25kcy5oCmluZGV4IDUzYmNiYzY1OTlkYzUzMGM4N2Y4NTc2YzZhOWRhZGNiM2EwNjIxMzYu
Ljg1ZjAzNzI4MjU5NzYwNzI3ZTlhNDJlZDE0YmY5NTc2NTY5NzhlMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKQEAg
LTIzNCw3ICsyMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gc2Vjb25k
czsKICAgICAgICAgZGVjb2RlciA+PiBzZWNvbmRzOwogICAgICAgICBpZiAoIXNlY29uZHMpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIFNlY29uZHMoKnNlY29uZHMpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaCBiL1NvdXJjZS9XVEYvd3Rm
L1NvcnRlZEFycmF5TWFwLmgKaW5kZXggZjA3ZWEyNmU2ZTgzOTMyN2NiN2VlYjMwNDk1ZmFmYTdm
ZTVkYTk1MC4uZjkyODEyYmE5MjQ2NzJlNGJiOThlMWUyY2ExMGNmOTQ5MzY5Yzc4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Tb3J0ZWRBcnJheU1hcC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
QXJyYXlUeXBlPiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4gaW5saW5lIGF1dG8gU29y
dGVkQXIKICAgICAgICAgaWYgY29uc3RleHByIChIYXNQYXJzZU1lbWJlcjxLZXlUeXBlPikKICAg
ICAgICAgICAgIHJldHVybiBLZXlUeXBlOjpwYXJzZShrZXkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXR1cm4gbWFrZU9wdGlvbmFsKGtleSk7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX29wdGlvbmFsKGtleSk7CiAgICAgfSgpOwogICAgIGlmICghcGFyc2VkS2V5KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIwMiw3ICsyMDIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBcnJheVR5cGU+IHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYm9vbCBT
b3J0ZWRBcgogICAgICAgICBpZiBjb25zdGV4cHIgKEhhc1BhcnNlTWVtYmVyPEtleVR5cGU+KQog
ICAgICAgICAgICAgcmV0dXJuIEtleVR5cGU6OnBhcnNlKGtleSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoa2V5KTsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2Vfb3B0aW9uYWwoa2V5KTsKICAgICB9KCk7CiAgICAgaWYgKCFwYXJzZWRLZXkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NCwxMiArMzQ0LDEyIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFN0b3JhZ2VJbnRlZ2VyPiB0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgU3Rv
cmFnZUludGVnCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdlcj4gYXV0byBQYWNrZWRB
U0NJSUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+OjpwYXJzZShTdHJpbmdWaWV3IHN0cmluZykg
LT4gT3B0aW9uYWw8UGFja2VkQVNDSUlMb3dlckNvZGVzPgogewogICAgIGlmIChzdHJpbmcubGVu
Z3RoKCkgPiBzaXplb2YoU3RvcmFnZUludGVnZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0b3JhZ2VJbnRlZ2VyIHJl
c3VsdCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgc3RyaW5nLmxl
bmd0aCgpOyArK2luZGV4KSB7CiAgICAgICAgIFVDaGFyIGNvZGUgPSBzdHJpbmdbaW5kZXhdOwog
ICAgICAgICBpZiAoIWlzQVNDSUkoY29kZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0IHw9
IHN0YXRpY19jYXN0PFN0b3JhZ2VJbnRlZ2VyPih0b0FTQ0lJTG93ZXIoY29kZSkpIDw8ICgoc2l6
ZW9mKFN0b3JhZ2VJbnRlZ2VyKSAtIGluZGV4IC0gMSkgKiA4KTsKICAgICB9CiAgICAgcmV0dXJu
IFBhY2tlZEFTQ0lJTG93ZXJDb2RlcyhyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvU3RhY2tUcmFjZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcAppbmRleCA3
YmYwOTg4NzQ3MWU5OWVjNDJiNDMwZWRjNjcyMzYwNDcyMWQ0NzMxLi5mZjYxZTY2YjM0M2ZhYmRj
N2E3YjE5N2Q3OTMxY2M0NmI3MDBjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFj
a1RyYWNlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIGF1dG8gU3RhY2tUcmFjZTo6ZGVtYW5nbGUodm9pZCogcGMpIC0+IE9wdGlvbmFs
PERlbWFuZ2xlRW50cnk+CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYyk7CiAjZW5kaWYKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgU3RhY2tUcmFjZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBpbmRlbnRT
dHJpbmcpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCBhZjA4Y2JlN2I1ZDg5Mzg4MDdhN2Ux
MDkyYmZmZjkyN2YwYTI4YWFmLi4zMTdhNDZmYzIwNGU5NzRkYWJkYjUwM2U4MjMyYTNhNGJlMjAy
OGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIE9wdGlvbmFs
PHNpemVfdD4gc3RhY2tTaXplKFRocmVhZFR5cGUgdGhyZWFkVHlwZSkKICAgICByZXR1cm4gMSAq
IE1COwogI2Vsc2UKICAgICAvLyBVc2UgdGhlIHBsYXRmb3JtJ3MgZGVmYXVsdCBzdGFjayBzaXpl
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCmluZGV4IGVlM2NlZDRiZjYxYmVjM2YyMGU0OTU4ZWQ0NTZhODZlMTVjM2Ri
NzguLjc1ODEzNzgxNDU2ZTkxM2ZiZGY0M2M3ZThlOGQ3ODg2OTlhYzFmNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpob3N0KCkgY29uc3QKIAogT3B0aW9uYWw8
dWludDE2X3Q+IFVSTDo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcG9ydExlbmd0aCA/
IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oU3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKG1f
aG9zdEVuZCArIDEsIG1fcG9ydExlbmd0aCAtIDEpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0TGVuZ3RoIC0gMSkpIDogc3RkOjpu
dWxsb3B0OwogfQogCiBTdHJpbmcgVVJMOjpob3N0QW5kUG9ydCgpIGNvbnN0CkBAIC0xNTksMTEg
KzE1OSwxMSBAQCBTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKIHN0YXRp
YyBPcHRpb25hbDxMQ2hhcj4gZGVjb2RlRXNjYXBlU2VxdWVuY2UoU3RyaW5nVmlldyBpbnB1dCwg
dW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoaW5kZXggKyAzID4g
bGVuZ3RoIHx8IGlucHV0W2luZGV4XSAhPSAnJScpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBkaWdpdDEgPSBpbnB1
dFtpbmRleCArIDFdOwogICAgIGF1dG8gZGlnaXQyID0gaW5wdXRbaW5kZXggKyAyXTsKICAgICBp
ZiAoIWlzQVNDSUlIZXhEaWdpdChkaWdpdDEpIHx8ICFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQyKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gdG9BU0NJSUhleFZhbHVlKGRpZ2l0MSwgZGlnaXQyKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRl
eCBiMjI1OTM1ZWJkOTRmNzI2NmU1ZTM2YzkyN2JjNmY5MTZkMGViNGQwLi45MGU3NTg2N2FjZjlj
ZDNjMjFiMTc0MDNlYjNmYmMwMDEwYjM1NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9V
UkwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaApAQCAtMzAyLDcgKzMwMiw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKICAgICBkZWNvZGVyID4+IHN0
cmluZzsKICAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3Zl
KCpzdHJpbmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAppbmRleCBjYTQ4NmUxNzQwYTRjYjQy
OGFjNjI3ZjYyZjdmYjMwNGVjY2Q5YTNmLi5jYjU5NDRhOGM3ODk3MmQwYzY5NDIzY2NlODU4ZGY1
NmUxMzE2YzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcApAQCAtNTg0LDcgKzU4NCw3IEBAIE9wdGlv
bmFsPFN0cmluZz4gbWFwSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSwgVVJMRGVjb2Rl
RnVuY3Rpb24gZGVjb2RlRnVuCiAgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0g
KGRlY29kZUZ1bmN0aW9uID8gdWlkbmFfbmFtZVRvQVNDSUkgOiB1aWRuYV9uYW1lVG9Vbmljb2Rl
KSgmVVJMUGFyc2VyOjppbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgc291cmNl
QnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBkZXN0aW5hdGlvbkJ1ZmZlciwgaG9zdE5hbWVCdWZmZXJM
ZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJnVlcnJvcik7CiAgICAgaW50IGFsbG93ZWRFcnJv
cnMgPSBkZWNvZGVGdW5jdGlvbiA/IDAgOiBVSUROQV9FUlJPUl9FTVBUWV9MQUJFTCB8IFVJRE5B
X0VSUk9SX0xFQURJTkdfSFlQSEVOIHwgVUlETkFfRVJST1JfVFJBSUxJTkdfSFlQSEVOIHwgVUlE
TkFfRVJST1JfSFlQSEVOXzNfNDsKICAgICBpZiAobGVuZ3RoICYmIChVX0ZBSUxVUkUodWVycm9y
KSB8fCBwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMgJiB+YWxsb3dlZEVycm9ycykpCi0gICAgICAg
IHJldHVybiBudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IGlmIChudW1DaGFyYWN0ZXJzQ29udmVydGVkID09IHN0YXRpY19jYXN0PGludDMyX3Q+KGxlbmd0
aCkgJiYgIW1lbWNtcChzb3VyY2VCdWZmZXIuZGF0YSgpLCBkZXN0aW5hdGlvbkJ1ZmZlciwgbGVu
Z3RoICogc2l6ZW9mKFVDaGFyKSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJz
ZXIuY3BwCmluZGV4IDRlZDNmNDUwZDU3NjkyNWY2NDI3YjQ3Y2YyODg4NTc3ODhiMmJhZjAuLjQ2
ZTQ1MzljNWRiZDMxMTgwYzdmMjAyY2RhYzgxMjdmZmViZGI0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNw
cApAQCAtNTg0LDE5ICs1ODQsMTkgQEAgT3B0aW9uYWw8dWludDE2X3Q+IFVSTFBhcnNlcjo6ZGVm
YXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHNjaGVtZSkKICAgICAKICAgICBhdXRvIGxl
bmd0aCA9IHNjaGVtZS5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzd2l0Y2gg
KHNjaGVtZVswXSkgewogICAgIGNhc2UgJ3cnOgogICAgICAgICBzd2l0Y2ggKGxlbmd0aCkgewog
ICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICdzJykKICAgICAg
ICAgICAgICAgICByZXR1cm4gd3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgMzoKICAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1l
WzJdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1cm4gd3NzUG9ydDsKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC02MDcsMjUgKzYwNywyNSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0
UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgICAgICAgICAgICAgICYmIHNj
aGVtZVsyXSA9PSAndCcKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnKQogICAg
ICAgICAgICAgICAgIHJldHVybiBodHRwUG9ydDsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjYXNlIDU6
CiAgICAgICAgICAgICBpZiAoc2NoZW1lWzFdID09ICd0JwogICAgICAgICAgICAgICAgICYmIHNj
aGVtZVsyXSA9PSAndCcKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbM10gPT0gJ3AnCiAgICAg
ICAgICAgICAgICAgJiYgc2NoZW1lWzRdID09ICdzJykKICAgICAgICAgICAgICAgICByZXR1cm4g
aHR0cHNQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogICAgIGNhc2UgJ2YnOgogICAgICAgICBpZiAobGVuZ3RoID09IDMKICAgICAgICAgICAg
ICYmIHNjaGVtZVsxXSA9PSAndCcKICAgICAgICAgICAgICYmIHNjaGVtZVsyXSA9PSAncCcpCiAg
ICAgICAgICAgICByZXR1cm4gZnRwUG9ydDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0K
IApAQCAtNzAxLDE1ICs3MDEsMTUgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NoZW1lIHNjaGVt
ZShTdHJpbmdWaWV3IHNjaGVtZSkKIE9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjptYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBpZiAoc2NoZW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5sZW5ndGgoKTsgKytpKSB7CiAgICAg
ICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtpXSkgfHwgc2NoZW1lW2ldID09ICcr
JyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9PSAnLicpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCk7CkBAIC0yMjk1LDI0ICsyMjk1LDI0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CiBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVjZUlu
c2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yKQogewog
ICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90IHBpZWNlID0gMDsKICAg
ICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOwogICAgIHNpemVfdCBkaWdpdENvdW50ID0gMDsK
ICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoKml0ZXJhdG9yKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICArK2RpZ2l0Q291bnQ7CiAgICAgICAg
IGlmICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykgewogICAgICAgICAgICAgaWYgKGxlYWRp
bmdaZXJvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBsZWFkaW5nWmVyb3MgPSB0
cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9yID09ICcwJykK
ICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CiAgICAgICAgIHBpZWNlID0gcGllY2Ug
KiAxMCArICppdGVyYXRvciAtICcwJzsKICAgICAgICAgaWYgKHBpZWNlID4gMjU1KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9u
OjpObz4oaXRlcmF0b3IpOwogICAgICAgICBpZiAoaXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjMyMCw3ICsyMzIwLDcgQEAgT3B0aW9uYWw8dWludDMyX3Q+IFVSTFBh
cnNlcjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3QK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAocGllY2UgJiYgbGVhZGluZ1plcm9z
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBwaWVjZTsKIH0KIApAQCAtMjMzMiwxNSArMjMzMiwxNSBAQCBPcHRp
b25hbDxVUkxQYXJzZXI6OklQdjRBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2NEFkZHJlc3NJ
bnNpZGVJUHY2KENvZGVQb2ludAogICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IHBpZWNl
ID0gcGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KGl0ZXJhdG9yKSkKICAgICAgICAgICAgIGFkZHJl
c3MgPSAoYWRkcmVzcyA8PCA4KSArIHBpZWNlLnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoaSA8IDMpIHsKICAgICAgICAgICAgIGlmIChpdGVyYXRvci5hdEVu
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmICgqaXRlcmF0b3IgIT0gJy4n
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwg
UmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOwogICAgICAgICB9IGVsc2UgaWYg
KCFpdGVyYXRvci5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFTU0VSVChpdGVyYXRv
ci5hdEVuZCgpKTsKICAgICByZXR1cm4gYWRkcmVzczsKQEAgLTIzNTMsNyArMjM1Myw3IEBAIE9w
dGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChD
b2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgY29uc3QgYXV0byBob3N0QmVnaW4gPSBjOwogICAg
IGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICBpZiAoYy5hdEVuZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSVB2
NkFkZHJlc3MgYWRkcmVzcyA9IHt7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMH19OwogICAgIHNpemVf
dCBwaWVjZVBvaW50ZXIgPSAwOwpAQCAtMjM2NCw5ICsyMzY0LDkgQEAgT3B0aW9uYWw8VVJMUGFy
c2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJh
dG9yPENoYXIKICAgICBpZiAoKmMgPT0gJzonKSB7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJl
Z2luKTsKICAgICAgICAgaWYgKGMuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoKmMg
IT0gJzonKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAg
ICAgKytwaWVjZVBvaW50ZXI7CiAgICAgICAgIGNvbXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRl
cjsKQEAgLTIzNzUsMTAgKzIzNzUsMTAgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2QWRkcmVz
cz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIKICAgICAK
ICAgICB3aGlsZSAoIWMuYXRFbmQoKSkgewogICAgICAgICBpZiAocGllY2VQb2ludGVyID09IDgp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCpjID09ICc6JykgewogICAgICAgICAgICAgaWYgKGNv
bXByZXNzUG9pbnRlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhZHZhbmNlKGMs
IGhvc3RCZWdpbik7CiAgICAgICAgICAgICArK3BpZWNlUG9pbnRlcjsKICAgICAgICAgICAgIGNv
bXByZXNzUG9pbnRlciA9IHBpZWNlUG9pbnRlcjsKQEAgLTIzOTAsNyArMjM5MCw3IEBAIE9wdGlv
bmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9zdChDb2Rl
UG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gNiB8fCAoY29t
cHJlc3NQb2ludGVyICYmIHBpZWNlUG9pbnRlciA8IDYpKSB7CiAgICAgICAgICAgICBpZiAoT3B0
aW9uYWw8SVB2NEFkZHJlc3M+IGlwdjRBZGRyZXNzID0gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQ
djYoYykpIHsKICAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyICYmIHBpZWNlUG9p
bnRlciA9PSA1KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIHN5
bnRheFZpb2xhdGlvbihob3N0QmVnaW4pOwogICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQ
b2ludGVyKytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSA+PiAxNjsKICAgICAgICAgICAgICAgICBh
ZGRyZXNzW3BpZWNlUG9pbnRlcisrXSA9IGlwdjRBZGRyZXNzLnZhbHVlKCkgJiAweEZGRkY7CkBA
IC0yNDIyLDcgKzI0MjIsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQ
YXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAgICBpZiAo
Yy5hdEVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIg
PT0gOCB8fCAqYyAhPSAnOicpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOwogICAgICAgICBpZiAoYy5hdEVuZCgpKQogICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9u
KGhvc3RCZWdpbik7CkBAIC0yNDMxLDcgKzI0MzEsNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQ
djZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hh
cgogICAgIH0KICAgICAKICAgICBpZiAoIWMuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoY29t
cHJlc3NQb2ludGVyKSB7CiAgICAgICAgIHNpemVfdCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNv
bXByZXNzUG9pbnRlci52YWx1ZSgpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAgT3B0aW9uYWw8VVJM
UGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0
ZXJhdG9yPENoYXIKICAgICAgICAgd2hpbGUgKHN3YXBzKQogICAgICAgICAgICAgc3RkOjpzd2Fw
KGFkZHJlc3NbcGllY2VQb2ludGVyLS1dLCBhZGRyZXNzW2NvbXByZXNzUG9pbnRlci52YWx1ZSgp
ICsgc3dhcHMtLSAtIDFdKTsKICAgICB9IGVsc2UgaWYgKHBpZWNlUG9pbnRlciAhPSA4KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBwb3NzaWJsZUNvbXByZXNzUG9pbnRlciA9IGZpbmRMb25n
ZXN0WmVyb1NlcXVlbmNlKGFkZHJlc3MpOwogICAgIGlmIChwb3NzaWJsZUNvbXByZXNzUG9pbnRl
cikKQEAgLTI1NTksNyArMjU1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmFsPFVSTFBhcnNlcjo6TENoYXJCdWZmZXI+IFVSTFBhcnNlcjo6ZG9tCiAgICAgICAg
ICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7
CiAgICAgICAgIHJldHVybiBhc2NpaTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFVSTFBhcnNlcjo6aGFzRm9yYmlk
ZGVuSG9zdENvZGVQb2ludChjb25zdCBVUkxQYXJzZXI6OkxDaGFyQnVmZmVyJiBhc2NpaURvbWFp
bikKQEAgLTI3OTEsNyArMjc5MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3Jt
VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRm
OChTdHJpY3RDb252ZXJzaW9uKTsKICAgICBpZiAodXRmOC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRv
IHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOFJlcGxhY2luZ0ludmFsaWRTZXF1ZW5jZXMocGVyY2VudERlY29kZWQuZGF0YSgpLCBw
ZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvQ1BVVGltZUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5j
cHAKaW5kZXggOTYxZjBjZmZjNjhiMWNhZjFhOTc3MDcwNmM0ZDE2MzcyYWIzYTcwNy4uYmRmOWNm
NTE4ODVhYWYzNzEzZDAwZGJlZTllMWRkNTViOTk3ZTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9D
UFVUaW1lQ29jb2EuY3BwCkBAIC01NCw3ICs1NCw3IEBAIE9wdGlvbmFsPENQVVRpbWU+IENQVVRp
bWU6OmdldCgpCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0aHJlYWRJbmZvQ291bnQgPSBU
QVNLX1RIUkVBRF9USU1FU19JTkZPX0NPVU5UOwogICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0g
dGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVEhSRUFEX1RJTUVTX0lORk8sIHJlaW50
ZXJwcmV0X2Nhc3Q8dGFza19pbmZvX3Q+KCZ0aHJlYWRJbmZvRGF0YSksICZ0aHJlYWRJbmZvQ291
bnQpOwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50NjRfdCB1
c2VyVGltZSA9IHRpbWVWYWx1ZVRvTWljcm9zZWNvbmRzKHRocmVhZEluZm9EYXRhLnVzZXJfdGlt
ZSk7CiAgICAgaW50NjRfdCBzeXN0ZW1UaW1lID0gdGltZVZhbHVlVG9NaWNyb3NlY29uZHModGhy
ZWFkSW5mb0RhdGEuc3lzdGVtX3RpbWUpOwpAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxDUFVU
aW1lPiBDUFVUaW1lOjpnZXQoKQogICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdGFza0luZm9D
b3VudCA9IFRBU0tfQkFTSUNfSU5GT19DT1VOVDsKICAgICByZXN1bHQgPSB0YXNrX2luZm8obWFj
aF90YXNrX3NlbGYoKSwgVEFTS19CQVNJQ19JTkZPLCByZWludGVycHJldF9jYXN0PHRhc2tfaW5m
b190PigmdGFza0luZm9EYXRhKSwgJnRhc2tJbmZvQ291bnQpOwogICAgIGlmIChyZXN1bHQgIT0g
S0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdXNlclRpbWUgKz0gdGltZVZhbHVlVG9NaWNyb3NlY29u
ZHModGFza0luZm9EYXRhLnVzZXJfdGltZSk7CiAgICAgc3lzdGVtVGltZSArPSB0aW1lVmFsdWVU
b01pY3Jvc2Vjb25kcyh0YXNrSW5mb0RhdGEuc3lzdGVtX3RpbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IDgzNzVjZmM2OTY5NWQ3MWY2NzZhZGNmNmNlNGEz
Mzg2MzIyOGQ3YTAuLjA3MGExZmU5YWVlNDlhNDRlNTMxNjZiZTAyZTVmNmI0NjlhNjI1NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0ZpbGVTeXN0ZW1Db2NvYS5tbQorKysgYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW0KQEAgLTE3Nyw3ICsxNzcsNyBA
QCBPcHRpb25hbDxib29sPiBhbGxvd3NNYXRlcmlhbGl6aW5nRGF0YWxlc3NGaWxlcyhQb2xpY3lT
Y29wZSBzY29wZSkKICAgICBpZiAocmV0ID09IElPUE9MX01BVEVSSUFMSVpFX0RBVEFMRVNTX0ZJ
TEVTX09GRikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIExPR19FUlJPUigiRmlsZVN5c3Rl
bTo6YWxsb3dzTWF0ZXJpYWxpemluZ0RhdGFsZXNzRmlsZXMoKTogZ2V0aW9wb2xpY3lfbnAgY2Fs
bCBmYWlsZWQsIGVycm5vOiAlZCIsIGVycm5vKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29j
b2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5t
bQppbmRleCA0NmYwNTdhM2VjNDkyMTQyYWQyZTM3N2E4ZDEyYzZkZDZjY2Y3NThhLi5iNjg3Mzdk
YTZlMjkyMzVkNTEyNTA4MDIxMTlmMmI4ZmM2MzdkMzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbQpAQCAtMTk4LDcgKzE5OCw3
IEBAIE9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlV
c2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBj
b3VudCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKICAgICBrZXJuX3JldHVybl90IGVyciA9IHRhc2tf
aW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5m
bywgJmNvdW50KTsKICAgICBpZiAoZXJyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBNZW1vcnlVc2FnZSB7c3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8uaW50ZXJuYWwpLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3RwcmludCl9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9V
UkxDb2NvYS5tbQppbmRleCA5ODc3ZmM3ZWJiN2FmNTk0YWRiZWRjNTc1MTA0NWI2ZDZmNmI1ZWM0
Li5hMTc5NzIwMzc5MzA2ZDA5Mjc1NzhiNDBkYTI0MjAzYTRhMzIwYjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9VUkxDb2NvYS5tbQpAQCAtOTUsNyArOTUsNyBAQCBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5
RWxlbWVudChjb25zdCBVUkwmIHZlY3RvckVsZW1lbnQpCiBPcHRpb25hbDxVUkw+IG1ha2VWZWN0
b3JFbGVtZW50KGNvbnN0IFVSTCosIGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJh
eUVsZW1lbnQgaXNLaW5kT2ZDbGFzczpOU1VSTC5jbGFzc10pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBh
cnJheUVsZW1lbnQgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmlj
L01lbW9yeVByZXNzdXJlSGFuZGxlckdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJp
Yy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJHZW5lcmljLmNwcAppbmRleCBlN2YzMmI4ZTk0OGU0MTI3
NWEzOGY2NzUxNmNjNTdlZjc3YzZmMGUzLi4xYWVhNDZhYWVhMjY5NmQwMGJjZmMyYThhNzVkZjFj
OTQyNDI3YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNz
dXJlSGFuZGxlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5
UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsLCBTeW5jaHJv
bm91cykKIAogT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1l
bW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1N
ZW1vcnlVc2FnZSgpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvQ2hhc3Npc1R5cGUuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lz
VHlwZS5jcHAKaW5kZXggMThiZWY3N2Q0ZWY2YjQ3MDdjMTM4YzlmNGI2ZjNhYWM1MTJiNmUxOC4u
MmRkNjVmNDZiNWIwOGNiOTgwOGMwOTEzYjM2NzBkNjAzMGMyM2UwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lzVHlwZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9DaGFzc2lzVHlwZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENoYXNz
aXNUeXBlPiByZWFkTWFjaGluZUluZm9DaGFzc2lzVHlwZSgpCiAgICAgaWYgKCFnX2ZpbGVfZ2V0
X2NvbnRlbnRzKCIvZXRjL21hY2hpbmUtaW5mbyIsICZidWZmZXIub3V0UHRyKCksIG51bGxwdHIs
ICZlcnJvci5vdXRQdHIoKSkpIHsKICAgICAgICAgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3Iu
Z2V0KCksIEdfRklMRV9FUlJPUiwgR19GSUxFX0VSUk9SX05PRU5UKSkKICAgICAgICAgICAgIGdf
d2FybmluZygiQ291bGQgbm90IG9wZW4gL2V0Yy9tYWNoaW5lLWluZm86ICVzIiwgZXJyb3ItPm1l
c3NhZ2UpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIEdVbmlxdWVQdHI8Y2hhcio+IHNwbGl0KGdfc3Ryc3Bs
aXQoYnVmZmVyLmdldCgpLCAiXG4iLCAtMSkpOwpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRNYWNoaW5lSW5mb0NoYXNzaXNUeXBlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkRE1JQ2hhc3Npc1R5
cGUoKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRE
TUlDaGFzc2lzVHlwZSgpCiAgICAgfSBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdl
dCgpLCBHX0ZJTEVfRVJST1IsIEdfRklMRV9FUlJPUl9OT0VOVCkpCiAgICAgICAgIGdfd2Fybmlu
ZygiQ291bGQgbm90IG9wZW4gL3N5cy9jbGFzcy9kbWkvaWQvY2hhc3Npc190eXBlOiAlcyIsIGVy
cm9yLT5tZXNzYWdlKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPENoYXNzaXNUeXBlPiByZWFkQUNQSUNo
YXNzaXNUeXBlKCkKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5
cGU+IHJlYWRBQ1BJQ2hhc3Npc1R5cGUoKQogICAgIH0gZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hl
cyhlcnJvci5nZXQoKSwgR19GSUxFX0VSUk9SLCBHX0ZJTEVfRVJST1JfTk9FTlQpKQogICAgICAg
ICBnX3dhcm5pbmcoIkNvdWxkIG5vdCBvcGVuIC9zeXMvZmlybXdhcmUvYWNwaS9wbV9wcm9maWxl
OiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ2hhc3Npc1R5cGUgY2hhc3Npc1R5cGUoKQpAQCAt
MTM0LDcgKzEzNCw3IEBAIENoYXNzaXNUeXBlIGNoYXNzaXNUeXBlKCkKICAgICAgICAgICAgIG9w
dGlvbmFsQ2hhc3Npc1R5cGUgPSByZWFkRE1JQ2hhc3Npc1R5cGUoKTsKICAgICAgICAgaWYgKCFv
cHRpb25hbENoYXNzaXNUeXBlKQogICAgICAgICAgICAgb3B0aW9uYWxDaGFzc2lzVHlwZSA9IHJl
YWRBQ1BJQ2hhc3Npc1R5cGUoKTsKLSAgICAgICAgY2hhc3Npc1R5cGUgPSBvcHRpb25hbENoYXNz
aXNUeXBlLnZhbHVlT3IoQ2hhc3Npc1R5cGU6OkRlc2t0b3ApOworICAgICAgICBjaGFzc2lzVHlw
ZSA9IG9wdGlvbmFsQ2hhc3Npc1R5cGUudmFsdWVfb3IoQ2hhc3Npc1R5cGU6OkRlc2t0b3ApOwog
ICAgIH0pOwogCiAgICAgcmV0dXJuIGNoYXNzaXNUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCBiZDkzZjBiM2E4MmU4M2VhYTZmNTk0ZjdmNTYxMTBjMWNjMjIx
ZDI5Li40MzAyZmE5ZjFiNGJiYWE5ZjNlOTk3MzJmNWIyOGM2Y2IzZmQ4MzliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIE9wdGlvbmFs
PHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogewogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBpbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9pb19zdHJlYW1fcXVlcnlf
aW5mbyhoYW5kbGUsIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgbnVsbHB0ciwgbnVs
bHB0cikpOwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBnX2ZpbGVfaW5mb19nZXRf
c2l6ZShpbmZvLmdldCgpKTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBPcHRpb25hbDx1aW50NjRf
dD4gZmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIE9wdGlvbmFsPFdhbGxUaW1l
PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IElzIHRo
ZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0
Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSwgY29uc3QgU3RyaW5nJiBz
dWZmaXgpCkBAIC0yNDEsNyArMjQxLDcgQEAgT3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmlj
ZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdSZWZQdHI8
R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3RlbV9p
bmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGdfZmlsZV9pbmZv
X2dldF9hdHRyaWJ1dGVfdWludDMyKGZpbGVJbmZvLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VO
SVhfREVWSUNFKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVu
dENvZGVycy5jcHAKaW5kZXggODNmMTE5YWMzZDMwMmI0MGQ3MDQyOWFjN2QzMzZlYTVlMGQ1OTIw
OC4uYjYwMzVkYjRlNzRkNzY3ODRlOGJhYWU2ZDA4YjQ4MWQ0Mzc2N2E3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgT3B0aW9uYWw8QXRvbVN0cmluZz4gQ29kZXI8QXRvbVN0cmluZz46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIg
Pj4gc3RyaW5nOwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUo
KnN0cmluZykgfX07CiB9CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFsPENTdHJpbmc+IENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50MzJf
dD4gbGVuZ3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGxlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkp
IHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbnVsbCBzdHJpbmcuCkBAIC03NCwxMiArNzQsMTIg
QEAgT3B0aW9uYWw8Q1N0cmluZz4gQ29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogCiAgICAgLy8gQmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRo
YXQgdGhlIGRlY29kZXIgYnVmZmVyIGlzIGJpZyBlbm91Z2guCiAgICAgaWYgKCFkZWNvZGVyLmJ1
ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Y2hhcj4oKmxlbmd0aCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjaGFy
KiBidWZmZXI7CiAgICAgQ1N0cmluZyBzdHJpbmcgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxpemVk
KCpsZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCAqbGVuZ3RoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBzdHJpbmc7CiB9CkBAIC0xMDgsMTIgKzEwOCwxMiBAQCBzdGF0aWMgaW5saW5lIE9w
dGlvbmFsPFN0cmluZz4gZGVjb2RlU3RyaW5nVGV4dChEZWNvZGVyJiBkZWNvZGVyLCB1aW50MzJf
dCBsZW5ndAogewogICAgIC8vIEJlZm9yZSBhbGxvY2F0aW5nIHRoZSBzdHJpbmcsIG1ha2Ugc3Vy
ZSB0aGF0IHRoZSBkZWNvZGVyIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLgogICAgIGlmICghZGVjb2Rl
ci5idWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXI7CiAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmlu
Zzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIp
LCBsZW5ndGggKiBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBz
dHJpbmc7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBDb2RlcjxTdHJp
bmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50MzJfdD4gbGVu
Z3RoOwogICAgIGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCpsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTMzLDcgKzEzMyw3IEBAIE9w
dGlvbmFsPFN0cmluZz4gQ29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gaXM4Qml0OwogICAgIGRlY29kZXIgPj4gaXM4Qml0OwogICAgIGlm
ICghaXM4Qml0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCppczhCaXQpCiAgICAgICAgIHJldHVybiBkZWNvZGVT
dHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCAqbGVuZ3RoKTsKQEAgLTE0OSw3ICsxNDksNyBAQCBP
cHRpb25hbDxTSEExOjpEaWdlc3Q+IENvZGVyPFNIQTE6OkRpZ2VzdD46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIFNIQTE6OkRpZ2VzdCB0bXA7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YSh0bXAuZGF0YSgpLCBzaXplb2YodG1wKSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHRtcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVy
c2lzdGVudENvZGVycy5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5oCmluZGV4IDkyYzRiYjI1ZThkZDcwYzMwYTdiMWEwM2NjMDFkMjZmNDU0MmZmYWIuLjU2
ZDhkNjk5ZjYwMDNhNTAzZGQ5MTc1YmNkOGMzMzBmYTk1OWYzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgKQEAgLTUxLDEyICs1MSwxMiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgQ29kZXI8c3RkOjpwYWlyPFQs
IFU+PiB7CiAgICAgICAgIE9wdGlvbmFsPFQ+IGZpcnN0OwogICAgICAgICBkZWNvZGVyID4+IGZp
cnN0OwogICAgICAgICBpZiAoIWZpcnN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
VT4gc2Vjb25kOwogICAgICAgICBkZWNvZGVyID4+IHNlY29uZDsKICAgICAgICAgaWYgKCFzZWNv
bmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZmlyc3QpLCBXVEZN
b3ZlKCpzZWNvbmQpIH19OwogICAgIH0KQEAgLTc5LDE0ICs3OSwxNCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29kZXI8T3B0aW9uYWw8VD4+IHsKICAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gaXNFbmdhZ2VkOwogICAgICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYg
KCFpc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCEqaXNFbmdhZ2VkKQotICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiB7IE9wdGlvbmFsPFQ+IHsgV1RGOjpu
dWxsb3B0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4geyBP
cHRpb25hbDxUPiB7IHN0ZDo6bnVsbG9wdCB9IH07CiAgICAgICAgIAogICAgICAgICBPcHRpb25h
bDxUPiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlvbmFs
PFQ+PiB7IE9wdGlvbmFsPFQ+IHsgV1RGTW92ZSgqdmFsdWUpIH0gfTsKICAgICB9CkBAIC0xMDMs
MTIgKzEwMywxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5
cGU+IHN0cnVjdCBDb2RlcjxXVEY6OktleVZhbHVlUGFpcjxLZQogICAgICAgICBPcHRpb25hbDxL
ZXlUeXBlPiBrZXk7CiAgICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICBpZiAoIWtleSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gdmFsdWU7CiAgICAgICAg
IGRlY29kZXIgPj52YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCprZXkpLCBXVEZNb3ZlKCp2YWx1ZSkgfX07CiAgICAgfQpA
QCAtMTI5LDE0ICsxMjksMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5PiBzdHJ1Y3QgVmVjdG9yQ29kZXI8ZmFsc2UsIFQsIGlubGluZUMKICAgICAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IHNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICAgICAg
aWYgKCFzaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
PiB0bXA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKnNpemU7ICsraSkgewogICAg
ICAgICAgICAgT3B0aW9uYWw8VD4gZWxlbWVudDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZWxl
bWVudDsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICB0bXAuYXBwZW5kKFdURk1vdmUoKmVsZW1lbnQpKTsKICAgICAgICAgfQogCkBAIC0x
NTcsMTAgKzE1NywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IHN0cnVjdCBWZWN0b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZGVjb2RlZFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFNpemU7
CiAgICAgICAgIGlmICghZGVjb2RlZFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWlz
SW5Cb3VuZHM8c2l6ZV90PigqZGVjb2RlZFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0
byBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigqZGVjb2RlZFNpemUpOwogCkBAIC0xNjgsMTMg
KzE2OCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0
cnVjdCBWZWN0b3JDb2Rlcjx0cnVlLCBULCBpbmxpbmVDYQogICAgICAgICAvLyBvbmUgZmVsbCBz
d29vcC4gQmVmb3JlIGFsbG9jYXRpbmcgd2UgbXVzdCBob3dldmVyIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBkZWNvZGVyIGJ1ZmZlcgogICAgICAgICAvLyBpcyBiaWcgZW5vdWdoLgogICAgICAgICBpZiAo
IWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxUPihzaXplKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT4gdGVtcDsKICAgICAgICAgdGVt
cC5ncm93KHNpemUpOwogCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odGVtcC5kYXRhKCkpLCBzaXplICogc2l6ZW9m
KFQpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB0ZW1wOwogICAgIH0KQEAgLTE5Nyw3
ICsxOTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywg
dHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQogICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gaGFzaE1hcFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaE1hcFNpemU7CiAgICAg
ICAgIGlmICghaGFzaE1hcFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBIYXNoTWFwVHlwZSB0
ZW1wSGFzaE1hcDsKICAgICAgICAgdGVtcEhhc2hNYXAucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oKmhhc2hNYXBTaXplKSk7CkBAIC0yMDUsMTUgKzIwNSwxNSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUg
SGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaQogICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBr
ZXk7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgICAgIGlmICgha2V5KQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIE9wdGlvbmFsPE1hcHBlZEFyZz4gdmFsdWU7
CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmICghdGVtcEhhc2hNYXAuYWRkKFdU
Rk1vdmUoKmtleSksIFdURk1vdmUoKnZhbHVlKSkuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAg
ICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUgc3BlY2lmaWVkIGtleSwgYmFpbC4K
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjM2LDE4
ICsyMzYsMTggQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBDb2RlcjwKICAgICAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGhhc2hTZXRTaXplOwogICAgICAgICBkZWNvZGVyID4+IGhhc2hTZXRTaXplOwogICAg
ICAgICBpZiAoIWhhc2hTZXRTaXplKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgSGFzaFNldFR5cGUg
dGVtcEhhc2hTZXQ7CiAgICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCAqaGFzaFNldFNp
emU7ICsraSkgewogICAgICAgICAgICAgT3B0aW9uYWw8S2V5QXJnPiBrZXk7CiAgICAgICAgICAg
ICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaFNldC5hZGQoV1RGTW92ZSgqa2V5KSkuaXNO
ZXdFbnRyeSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0
aGUgc3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMjY2LDcgKzI2Niw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvZGVy
PFNlY29uZHM+IHsKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZTsKICAgICAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gU2Vjb25kcygqdmFsdWUpOwogICAgIH0KIH07CkBAIC0yODIsNyArMjgyLDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2FsbFRpbWU+IHsKICAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoKnZh
bHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxl
U3lzdGVtUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5
c3RlbVBsYXlTdGF0aW9uLmNwcAppbmRleCBiOThhZDc1ODJhYzI1MzMzZWVjZTc0N2E1NDU2YTI5
NmY4MTA0MDA2Li42YTI1NTQ2OGIwYzQ5MGYwODNmODVmOTIwMTMzZmIzMWM4NzJiNzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlv
bi5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8RmlsZVR5cGU+IGZpbGVU
eXBlUG90ZW50aWFsbHlGb2xsb3dpbmdTeW1MaW5rcyhjb25zdCBTdHJpbmcmIHBhdAogICAgIENT
dHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
c3RhdEZ1bmMgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzID09IFNob3VsZEZvbGxvd1N5bWJv
bGljTGlua3M6OlllcyA/IHN0YXQgOiBsc3RhdDsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsK
ICAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KFNfSVNESVIoZmlsZUluZm8uc3RfbW9kZSkpCiAgICAgICAgIHJldHVybiBGaWxlVHlwZTo6RGly
ZWN0b3J5OwpAQCAtMTIyLDEyICsxMjIsMTIgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgp
WzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlmIChz
dGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmaWxlSW5mby5z
dF9zaXplOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVG
cmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHN0cnVjdCBzdGF0dmZzIGZpbGVTeXN0
ZW1TdGF0OwogICAgIGlmICghc3RhdHZmcyhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpLCAmZmlsZVN5c3RlbVN0YXQpKQogICAgICAgICByZXR1cm4gZmlsZVN5c3RlbVN0YXQu
Zl9iYXZhaWwgKiBmaWxlU3lzdGVtU3RhdC5mX2Zyc2l6ZTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKQpAQCAtMjM0LDcgKzIzNCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBhdXRvIGxpbmtQYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChs
aW5rUGF0aC5kYXRhKCksICZzdGF0KSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBMaW5rIGNvdW50IGlzIDIg
aW4gdGhlIHNpbmdsZSBjbGllbnQgY2FzZSAodGhlIGJsb2IgZmlsZSBhbmQgYSBsaW5rKS4KICAg
ICByZXR1cm4gc3RhdC5zdF9ubGluayAtIDE7CkBAIC0yNTcsMTIgKzI1NywxMiBAQCBPcHRpb25h
bDxXYWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBp
ZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0
cnVjdCBzdGF0IGZpbGVJbmZvOwogCiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUlu
Zm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5z
dF9tdGltZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRl
eCBlYzMyMjJjZWEwOTM1NWE2ZmJlNzZkNWRjM2U1MjM2Yzg2NDdjYzliLi5hN2JhMDQ3YjA1N2M3
YmM0Mzc3N2VlMjI5MTk0Y2Y5YjhmMmZlNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmls
ZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBmaWxl
SW5mbzsKICAgICBpZiAoZnN0YXQoaGFuZGxlLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGZpbGVJbmZvLnN0X3NpemU7CiB9CkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBPcHRpb25hbDxXYWxs
VGltZT4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RydWN0IHN0YXQg
ZmlsZUluZm87CiAKICAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X2JpcnRodGlt
ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApAQCAtMjMwLDcgKzIz
MCw3IEBAIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBm
c0ZpbGUpCiB7CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxl
LmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmaWxlU3RhdC5zdF9k
ZXY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOTRlNDE1YzQ2NDk2NzAxMTgxZTY4Yjk4
OTFhNTQ3NDUyOGQ3YWJkNS4uYWEyN2JjZGIxM2FjODIzMTc1ZWEzYWM0MDJmNjRjODdiMDZmYzk2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMTkzLDE2ICsxOTMsMTYgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2Rl
SW50ZXJuYWwoY29uc3QKICAgICAgICAgICAgICsrZXF1YWxzU2lnbkNvdW50OwogICAgICAgICAg
ICAgLy8gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhhbiAyIHBhZGRpbmcgY2hhcmFjdGVy
cy4KICAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9wdGlvbnM6
OlZhbGlkYXRlUGFkZGluZykgJiYgZXF1YWxzU2lnbkNvdW50ID4gMikgewotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNoYXIg
ZGVjb2RlZENoYXJhY3RlciA9IGNoIDwgZGVjb2RlTWFwU2l6ZSA/IGRlY29kZU1hcFtjaF0gOiBu
b25BbHBoYWJldDsKICAgICAgICAgICAgIGlmIChkZWNvZGVkQ2hhcmFjdGVyICE9IG5vbkFscGhh
YmV0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsc1NpZ25Db3VudCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltkZXN0aW5hdGlvbkxl
bmd0aCsrXSA9IGRlY29kZWRDaGFyYWN0ZXI7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRp
b25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9wdGlvbnM6Oklnbm9yZVNwYWNlc0FuZE5ld0xpbmVz
KSB8fCAoIWlzTGF0aW4xKGNoKSB8fCAhaXNBU0NJSVNwYWNlKGNoKSB8fCAob3B0aW9ucy5jb250
YWlucyhCYXNlNjREZWNvZGVPcHRpb25zOjpEaXNjYXJkVmVydGljYWxUYWIpICYmIGNoID09ICdc
dicpKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTIxNCwyMyArMjE0LDIzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZUludGVybmFsKGNvbnN0CiAKICAgICBp
ZiAoIWRlc3RpbmF0aW9uTGVuZ3RoKSB7CiAgICAgICAgIGlmIChlcXVhbHNTaWduQ291bnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PiB7IH07CiAgICAgfQogCiAg
ICAgLy8gVGhlIHNob3VsZCBiZSBubyBwYWRkaW5nIGlmIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9m
IDQuCiAgICAgLy8gV2UgdXNlIChkZXN0aW5hdGlvbkxlbmd0aCArIGVxdWFsc1NpZ25Db3VudCkg
aW5zdGVhZCBvZiBsZW5ndGggYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFjY291bnQgZm9yIGln
bm9yZWQgY2hhcmFjdGVycyAoaS5lLiBzcGFjZXMpLgogICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KEJhc2U2NERlY29kZU9wdGlvbnM6OlZhbGlkYXRlUGFkZGluZykgJiYgZXF1YWxzU2lnbkNvdW50
ICYmIChkZXN0aW5hdGlvbkxlbmd0aCArIGVxdWFsc1NpZ25Db3VudCkgJSA0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gVmFsaWQgZGF0YSBpcyAobiAqIDQgKyBbMCwyLDNdKSBjaGFyYWN0ZXJzIGxvbmcuCiAgICAg
aWYgKChkZXN0aW5hdGlvbkxlbmd0aCAlIDQpID09IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gNC1ieXRl
IHRvIDMtYnl0ZSBjb252ZXJzaW9uCiAgICAgZGVzdGluYXRpb25MZW5ndGggLT0gKGRlc3RpbmF0
aW9uTGVuZ3RoICsgMykgLyA0OwogICAgIGlmICghZGVzdGluYXRpb25MZW5ndGgpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICB1bnNpZ25lZCBzaWR4ID0gMDsKICAgICB1bnNpZ25lZCBkaWR4ID0gMDsKQEAgLTI3NCwxNCAr
Mjc0LDE0IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKFN0cmluZ1Zp
ZXcgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPCiBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGlucHV0LCBPcHRpb25TZXQ8
QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9ucywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAg
ICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0
LnNpemUoKSwgb3B0aW9ucywgbWFwKTsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBi
YXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbnB1dCwgT3B0aW9uU2V0PEJhc2U2NERl
Y29kZU9wdGlvbnM+IG9wdGlvbnMsIEJhc2U2NERlY29kZU1hcCBtYXApCiB7CiAgICAgaWYgKGlu
cHV0LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpLCBvcHRpb25zLCBtYXApOwogfQogCkBA
IC0zMTQsMTQgKzMxNCwxNCBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERl
Y29kZShTdHJpbmdWaWV3IGlucHV0KQogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRV
UkxEZWNvZGUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQu
c2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbChpbnB1dC5kYXRhKCksIGlucHV0LnNpemUoKSwgeyB9
LCBCYXNlNjREZWNvZGVNYXA6OlVSTCk7CiB9CiAKIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
YmFzZTY0VVJMRGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW5wdXQpCiB7CiAgICAgaWYgKGlu
cHV0LnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6
VVJMKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZl
cnNpb24uaAppbmRleCAwOWYzMDRjNGI1MTgwMDYwMDI1ZDRjYWM0MDk4NGM3ZGQwOTEwM2VjLi4z
NTZjNzU2YzY5YTRkMzZkYTk3YjMwNTFhMDFhNDA1YWJkNDVlMGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaApAQCAtNDUsNyArNDUsNyBA
QCBlbnVtIGNsYXNzIFRyYWlsaW5nSnVua1BvbGljeSB7IERpc2FsbG93LCBBbGxvdyB9OwogdGVt
cGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRp
b25hbDxJbnRlZ3JhbFR5cGU+IHBhcnNlSW50ZWdlcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IGJhc2UsIFRyYWlsaW5nSnVua1BvbGljeSBwb2xpY3kp
CiB7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgd2hpbGUgKGxlbmd0aCAmJiBpc0FTQ0lJU3Bh
Y2UoKmRhdGEpKSB7CiAgICAgICAgIC0tbGVuZ3RoOwpAQCAtNjksNyArNjksNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFs
PEludGVncmFsVHlwZT4gcAogICAgIH07CiAKICAgICBpZiAoIShsZW5ndGggJiYgaXNDaGFyYWN0
ZXJBbGxvd2VkSW5CYXNlKCpkYXRhLCBiYXNlKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDaGVja2VkPEludGVncmFs
VHlwZSwgUmVjb3JkT3ZlcmZsb3c+IHZhbHVlOwogICAgIGRvIHsKQEAgLTgyLDcgKzgyLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICB9IHdoaWxlICgtLWxlbmd0aCAmJiBpc0NoYXJh
Y3RlckFsbG93ZWRJbkJhc2UoKisrZGF0YSwgYmFzZSkpOwogCiAgICAgaWYgKFVOTElLRUxZKHZh
bHVlLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAocG9saWN5ID09IFRyYWlsaW5nSnVu
a1BvbGljeTo6RGlzYWxsb3cpIHsKICAgICAgICAgd2hpbGUgKGxlbmd0aCAmJiBpc0FTQ0lJU3Bh
Y2UoKmRhdGEpKSB7CkBAIC05MCw3ICs5MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwCiAg
ICAgICAgICAgICArK2RhdGE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHJldHVybiB2YWx1ZS51bnNhZmVHZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwCmluZGV4IDM3NTY5MWVhYzg2ZDM0YjBkOGRjMjA0OWJkMDdjZmM0ZWRk
ZDc4ZDAuLmUwOTY3MjkwMWVmOTNmZjkzYjMzNDkwMTA2N2E3NTM2ZmJkMTI3MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZhdGU6CiB9Owog
CiBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCi0gICAgOiBtX2ltcGwobWFr
ZVVuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBzdHJpbmdWaWV3LmlzTnVsbCgpID8gV1RGOjpudWxs
b3B0IDogT3B0aW9uYWw8Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcj4oTm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcihzdHJpbmdWaWV3KSksIGluZGV4KSkKKyAgICA6IG1faW1w
bChtYWtlVW5pcXVlPEltcGw+KHN0cmluZ1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBzdGQ6
Om51bGxvcHQgOiBPcHRpb25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0cmluZ0NvY29hLm1tIGIv
U291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQppbmRleCBlZjY2OWJjNDEz
OTk2ZmUyYWM4ZjFmZjdkYTRkN2M1MjhhYzlmMTVmLi5mNWEzNjM1MDUwZWQ1ZTdjMzA1NzFmNWRk
NzkzOTkwMjFmMDkzNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1N0
cmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2Eu
bW0KQEAgLTM4LDcgKzM4LDcgQEAgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1lbnQoY29u
c3QgU3RyaW5nJiB2ZWN0b3JFbGVtZW50KQogT3B0aW9uYWw8U3RyaW5nPiBtYWtlVmVjdG9yRWxl
bWVudChjb25zdCBTdHJpbmcqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlF
bGVtZW50IGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsg
YXJyYXlFbGVtZW50IH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCA0OGM2
YWFjNDRmNDNmODcxYmY1YTQ1MzBjMGU1N2JlM2VmNWI0ZDFhLi42NjU3NzQ4YWUxZDU0NDY0NWM5
ZjMzN2M1ODhhYjBjZjdmNTI5MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRz
L1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtNjMs
MTIgKzYzLDEyIEBAIGlubGluZSBzdGQ6OnR1cGxlPGludCwgT3B0aW9uYWw8aW50Pj4gdG9TeXN0
ZW1TaWduYWwoU2lnbmFsIHNpZ25hbCkKIHsKICAgICBzd2l0Y2ggKHNpZ25hbCkgewogICAgIGNh
c2UgU2lnbmFsOjpBY2Nlc3NGYXVsdDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdTRUdWLCBT
SUdCVVMpOwotICAgIGNhc2UgU2lnbmFsOjpJbGxlZ2FsSW5zdHJ1Y3Rpb246IHJldHVybiBzdGQ6
Om1ha2VfdHVwbGUoU0lHSUxMLCBXVEY6Om51bGxvcHQpOwotICAgIGNhc2UgU2lnbmFsOjpVc3I6
IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHSUxMLCBXVEY6Om51bGxvcHQpOwotICAgIGNhc2Ug
U2lnbmFsOjpGbG9hdGluZ1BvaW50OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0ZQRSwgV1RG
OjpudWxsb3B0KTsKLSAgICBjYXNlIFNpZ25hbDo6QnJlYWtwb2ludDogcmV0dXJuIHN0ZDo6bWFr
ZV90dXBsZShTSUdUUkFQLCBXVEY6Om51bGxvcHQpOworICAgIGNhc2UgU2lnbmFsOjpJbGxlZ2Fs
SW5zdHJ1Y3Rpb246IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHSUxMLCBzdGQ6Om51bGxvcHQp
OworICAgIGNhc2UgU2lnbmFsOjpVc3I6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHSUxMLCBz
dGQ6Om51bGxvcHQpOworICAgIGNhc2UgU2lnbmFsOjpGbG9hdGluZ1BvaW50OiByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFNJR0ZQRSwgc3RkOjpudWxsb3B0KTsKKyAgICBjYXNlIFNpZ25hbDo6QnJl
YWtwb2ludDogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdUUkFQLCBzdGQ6Om51bGxvcHQpOwog
I2lmICFPUyhEQVJXSU4pCi0gICAgY2FzZSBTaWduYWw6OkFib3J0OiByZXR1cm4gc3RkOjptYWtl
X3R1cGxlKFNJR0FCUlQsIFdURjo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6OkFib3J0OiBy
ZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR0FCUlQsIHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKICAg
ICBkZWZhdWx0OiBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
Q1BVVGltZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKaW5kZXgg
ZDcwYmZiNTFhZDM3NzMyMTA3NWFjMDhlNzk0YTM5MmFjMzIyMjc5Yy4uNGExYTNlNTQyMjVmNTI4
MGE5MGZlZWVhNzQwMzE3MTZhY2VhNTE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0NQVVRpbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBPcHRpb25hbDxDUFVUaW1lPiBDUFVUaW1lOjpnZXQoKQogICAgIEZJ
TEVUSU1FIGtlcm5lbFRpbWU7CiAgICAgRklMRVRJTUUgdXNlclRpbWU7CiAgICAgaWYgKCE6Okdl
dFByb2Nlc3NUaW1lcyg6OkdldEN1cnJlbnRQcm9jZXNzKCksICZjcmVhdGlvblRpbWUsICZleGl0
VGltZSwgJmtlcm5lbFRpbWUsICZ1c2VyVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ1BVVGltZSB7
IE1vbm90b25pY1RpbWU6Om5vdygpLCBmaWxlVGltZVRvU2Vjb25kcyh1c2VyVGltZSksIGZpbGVU
aW1lVG9TZWNvbmRzKGtlcm5lbFRpbWUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdp
bi5jcHAKaW5kZXggMGQyYThhZGY4Zjg2YTY2YmIyODIxNDY1YjI2NDA1MTdlMTE3ZDA0Ny4uMWQw
YTIwNDRlODYyYWEzMGVmODA1NTFiZTFkNmMwZWQ3MmI5MzNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0
X3Q+IGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGNvbnN0
CiAgICAgZmlsZVNpemUuTG93UGFydCA9IGZpbGVJbmZvcm1hdGlvbi5uRmlsZVNpemVMb3c7CiAK
ICAgICBpZiAoZmlsZVNpemUuUXVhZFBhcnQgPiBzdGF0aWNfY2FzdDxVTE9OR0xPTkc+KHN0ZDo6
bnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVT
aXplLlF1YWRQYXJ0OwogfQpAQCAtMTA3LDcgKzEwNyw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBm
aWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSkKIHsKICAgICBCWV9IQU5ETEVf
RklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCE6OkdldEZpbGVJbmZv
cm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZp
bGVJbmZvcm1hdGlvbik7CiB9CkBAIC0xMTYsNyArMTE2LDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+
IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJTkRf
REFUQVcgZmluZERhdGE7CiAgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICB0aW1lX3QgdGltZSA9IDA7CiAgICAgZmlsZUNyZWF0aW9uVGltZUZyb21GaW5kRGF0
YShmaW5kRGF0YSwgdGltZSk7CkBAIC0zNDMsMTIgKzM0MywxMiBAQCBPcHRpb25hbDxpbnQzMl90
PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewogICAgIGF1dG8gaGFu
ZGxlID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBp
ZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9S
TUFUSU9OIGZpbGVJbmZvcm1hdGlvbiA9IHsgfTsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0
aW9uQnlIYW5kbGUoaGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgewogICAgICAgICBjbG9zZUZp
bGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKaW5kZXggMWFlZTQ4
NmRlZjk5NzI3OGZiOGQwMGUyYjFjMjFmYTMyZDI5YWI0Ni4uN2FiNGEwNGYxNzgyYWMxZDY0YmMy
N2I2OWU4ZmYwNDQyYjE0MDY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL01lbW9y
eVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL01lbW9yeVBy
ZXNzdXJlSGFuZGxlcldpbi5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5j
aHJvbm8KIAogT3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1l
bW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1N
ZW1vcnlVc2FnZSgpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3dpbi9UaHJlYWRpbmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL1RocmVhZGlu
Z1dpbi5jcHAKaW5kZXggNGIzNzI0N2Y5OTA3MjNlMzI4ZTdkYzkyZGUyNWI1YzMwODZhZTkyNi4u
NjAwNmQwMTM0NTIzMDJhZGE5MGI4NThmNGIzN2E0MzFmYTA0MTgwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvd2luL1RocmVhZGluZ1dpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2lu
L1RocmVhZGluZ1dpbi5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBib29sIFRocmVhZDo6ZXN0YWJs
aXNoSGFuZGxlKE5ld1RocmVhZENvbnRleHQqIGRhdGEsIE9wdGlvbmFsPHNpemVfdD4gc3RhY2tT
aXplLAogewogICAgIHVuc2lnbmVkIHRocmVhZElkZW50aWZpZXIgPSAwOwogICAgIHVuc2lnbmVk
IGluaXRGbGFnID0gc3RhY2tTaXplID8gU1RBQ0tfU0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9O
IDogMDsKLSAgICBIQU5ETEUgdGhyZWFkSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+
KF9iZWdpbnRocmVhZGV4KG51bGxwdHIsIHN0YWNrU2l6ZS52YWx1ZU9yKDApLCB3dGZUaHJlYWRF
bnRyeVBvaW50LCBkYXRhLCBpbml0RmxhZywgJnRocmVhZElkZW50aWZpZXIpKTsKKyAgICBIQU5E
TEUgdGhyZWFkSGFuZGxlID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KF9iZWdpbnRocmVhZGV4
KG51bGxwdHIsIHN0YWNrU2l6ZS52YWx1ZV9vcigwKSwgd3RmVGhyZWFkRW50cnlQb2ludCwgZGF0
YSwgaW5pdEZsYWcsICZ0aHJlYWRJZGVudGlmaWVyKSk7CiAgICAgaWYgKCF0aHJlYWRIYW5kbGUp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRocmVhZCBhdCBlbnRyeSBw
b2ludCAlcCB3aXRoIGRhdGEgJXA6ICVsZCIsIHd0ZlRocmVhZEVudHJ5UG9pbnQsIGRhdGEsIGVy
cm5vKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaAppbmRleCBi
Nzk2MDY3MTI4YzU2Nzc1OWUzZDRlY2ViYmU5MzBkMzQzMGY0OWU1Li45NDhmYjU1ODU2ZWU5OTYy
NjY5MTM0NjhkZmU4ODNmNjQ2OTM0Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaApAQCAtNTYs
NyArNTYsNyBAQCBPcHRpb25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlPiBBcHBsZVBheURl
dGFpbHNVcGRhdGVCYXNlOjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIEFwcGxlUGF5RGV0YWls
c1VwZGF0ZUJhc2UgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2Rlcikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAppbmRleCA4
MDc4Zjk1NzIxNDNiZGUzODBmZDRlNDRhYmM0ODMxOGY4Yzc5MmQ2Li5lODMxZDAyZjJmYWUzNzJk
N2U2NDUzNzJmYjE5YjE2MWYzZjBiOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaApAQCAtNTks
NyArNTksNyBAQCBPcHRpb25hbDxBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhPiBBcHBsZVBheURl
dGFpbHNVcGRhdGVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIEFwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGEgcmVzdWx0OwogICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2Rlcikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0ZW0uaAppbmRleCBlNzRiZmQ4M2ZiMjEzZWE1YzBm
Y2I3MGQ2NDMyNmJlNDM4Y2NiZGZjLi5iZWE0YjIzYTM2ZmNjZmQzNTQwMTUwNTk2ZjkxMGUxMTI1
MWY4NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5TGluZUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5TGluZUl0ZW0uaApAQCAtNjMsMjQgKzYzLDI0IEBAIE9wdGlvbmFsPEFwcGxlUGF5TGluZUl0
ZW0+IEFwcGxlUGF5TGluZUl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIEFwcGxl
UGF5TGluZUl0ZW0gcmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwog
ICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudHlwZSA9IFdURk1vdmUoKnR5cGUpOwogCiAg
ICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlm
ICghbGFiZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmxhYmVsID0gV1RGTW92ZSgqbGFiZWwpOwogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBhbW91bnQ7CiAgICAgZGVjb2RlciA+PiBhbW91bnQ7CiAgICAgaWYg
KCFhbW91bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmFtb3VudCA9IFdURk1vdmUoKmFtb3VudCk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oCmluZGV4IDg4ODFkZGNkZmJkMzYyY2IxMmE3Yjg1
OWUxZWU0ZTdmYWNhMzZhMjQuLjk1OGUzNmZjMGI2NTQyN2YzNWI2MDA4ZDc2MDAzMGViN2FmMDNl
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlM
aW5lSXRlbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5TGluZUl0ZW1EYXRhLmgKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlMaW5l
SXRlbURhdGE+IEFwcGxlUGF5TGluZUl0ZW1EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBBcHBsZVBheUxpbmVJdGVtRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQuZGVj
b2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZE1v
ZGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXlt
ZW50TWV0aG9kTW9kZVVwZGF0ZS5oCmluZGV4IGJhODA2ODEyNjAzYjIzMzEyY2M3OWRkODZiM2Rh
OTUyOGQ5MjIwMmYuLmFjN2Y2MjlmMmIwZWYwZGIwZjJiOTRmY2VhZTE5MDc3YTUwNzdmODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oCkBAIC01OSwxOCArNTksMTggQEAgT3B0
aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4gQXBwbGVQYXlQYXltZW50TWV0
aG9kTW9kZVVwZGF0ZTo6ZGVjb2QKICAgICBBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRl
IHJlc3VsdDsKIAogICAgIGlmICghcmVzdWx0LmRlY29kZUJhc2UoZGVjb2RlcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRl
Y29kZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJyb3JzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5lcnJvcnMg
PSBXVEZNb3ZlKCplcnJvcnMpOwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEFwcGxlUGF5U2hpcHBp
bmdNZXRob2Q+PiBuZXdTaGlwcGluZ01ldGhvZHM7CiAgICAgZGVjb2RlciA+PiBuZXdTaGlwcGlu
Z01ldGhvZHM7CiAgICAgaWYgKCFuZXdTaGlwcGluZ01ldGhvZHMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm5l
d1NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUoKm5ld1NoaXBwaW5nTWV0aG9kcyk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKaW5kZXggMjk0NmNjYzg5OTQ0
YTgyMWM4OWRkN2Q4Y2NlMTliM2ZkNzBlMzI5NS4uNzE5NWM5Mzc4NTkwNjc1YTk4YzRjMzUzYmJh
NGI4YjQ4MTQxM2NkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC01NywxMyArNTcs
MTMgQEAgT3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiBBcHBsZVBheVBheW1l
bnRNZXRob2RVcGRhdGU6OmRlY29kZShEZWNvZGUKICAgICBBcHBsZVBheVBheW1lbnRNZXRob2RV
cGRhdGUgcmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7
IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAgICAg
cmVzdWx0Lm5hbWUgPSBXVEZNb3ZlKCpuYW1lKTsgXAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9J
TlNUQUxMTUVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggODUyYTBjYTk5N2MzMDVjMGIzZGYwMDg1ZmQzNzQxZDFi
ZTM4ODNhOC4uODFiN2FiMzcyNTczOTRiNjFlZjVjN2ZiOGNkOGM3M2ZmY2I4MDNkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5bWVuCiAKICAgICBjYXNl
IEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0lOVkFMSURfQklMTElOR19QT1NUQUxfQUREUkVTUzoK
ICAgICAgICAgY29udmVydGVkUmVzdWx0LnN0YXR1cyA9IFBheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzOjpGYWlsdXJlOwotICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJyb3JzLmFwcGVuZChBcHBs
ZVBheUVycm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxp
ZCwgV1RGOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKKyAgICAgICAgY29udmVydGVkUmVzdWx0
LmVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpC
aWxsaW5nQ29udGFjdEludmFsaWQsIHN0ZDo6bnVsbG9wdCwgbnVsbFN0cmluZygpKSk7CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBBcHBsZVBheVNlc3Npb246OlNUQVRVU19JTlZBTElEX1NI
SVBQSU5HX1BPU1RBTF9BRERSRVNTOgpAQCAtMjA3LDcgKzIwNyw3IEBAIHN0YXRpYyBFeGNlcHRp
b25PcjxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxl
UGF5UGF5bWVuCiAKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0lOVkFMSURfU0hJ
UFBJTkdfQ09OVEFDVDoKICAgICAgICAgY29udmVydGVkUmVzdWx0LnN0YXR1cyA9IFBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOwotICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJy
b3JzLmFwcGVuZChBcHBsZVBheUVycm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OlNoaXBw
aW5nQ29udGFjdEludmFsaWQsIFdURjo6bnVsbG9wdCwgbnVsbFN0cmluZygpKSk7CisgICAgICAg
IGNvbnZlcnRlZFJlc3VsdC5lcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJyb3I6OmNyZWF0ZShBcHBs
ZVBheUVycm9yQ29kZTo6U2hpcHBpbmdDb250YWN0SW52YWxpZCwgc3RkOjpudWxsb3B0LCBudWxs
U3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvbjo6
U1RBVFVTX1BJTl9SRVFVSVJFRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5U2V0dXAuY3BwCmluZGV4IGFmMTc1MTYzNDIxM2FjMmNkNjBiN2RkZThkODdi
MzhiZWNlNjg4MDQuLjhhMmEwYjlhMzNlZWQ0YmYxYjc4NGYzZjVkZjFhYzBiOGU1MGU3ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEFwcGxlUGF5U2V0dXA6OmdldFNldHVwRmVhdHVyZXMo
RG9jdW1lbnQmIGRvY3VtZW50LCBTZXR1cEZlYXR1cmVzUHJvbWlzZSYmCiAKICAgICBwYWdlLT5w
YXltZW50Q29vcmRpbmF0b3IoKS5nZXRTZXR1cEZlYXR1cmVzKG1fY29uZmlndXJhdGlvbiwgZG9j
dW1lbnQudXJsKCksIFt0aGlzLCBwZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKV0oVmVjdG9yPFJlZjxBcHBsZVBheVNldHVwRmVhdHVyZT4+JiYgc2V0dXBGZWF0dXJl
cykgewogICAgICAgICBpZiAobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSkKLSAgICAgICAgICAgIHN0
ZDo6ZXhjaGFuZ2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxl
KFdURk1vdmUoc2V0dXBGZWF0dXJlcykpOworICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3Nl
dHVwRmVhdHVyZXNQcm9taXNlLCBzdGQ6Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZl
YXR1cmVzKSk7CiAgICAgfSk7CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEFwcGxlUGF5
U2V0dXA6OmJlZ2luKERvY3VtZW50JiBkb2N1bWVudCwgVmVjdG9yPFJlZlB0cjxBcHBsZVBheVNl
dHVwRmVhdHVyZQogCiAgICAgcGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCkuYmVnaW5BcHBsZVBh
eVNldHVwKG1fY29uZmlndXJhdGlvbiwgZG9jdW1lbnQudXJsKCksIFdURk1vdmUoZmVhdHVyZXMp
LCBbdGhpc10oYm9vbCByZXN1bHQpIHsKICAgICAgICAgaWYgKG1fYmVnaW5Qcm9taXNlKQotICAg
ICAgICAgICAgc3RkOjpleGNoYW5nZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0
dGxlKHJlc3VsdCk7CisgICAgICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBz
dGQ6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0KTsKICAgICB9KTsKIH0KIApAQCAtMTI1LDEwICsx
MjUsMTAgQEAgQXBwbGVQYXlTZXR1cDo6QXBwbGVQYXlTZXR1cChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBBcHBsZVBheVNldHVwQ29uZmkKIHZvaWQgQXBwbGVQYXlTZXR1cDo6c3Rv
cCgpCiB7CiAgICAgaWYgKG1fc2V0dXBGZWF0dXJlc1Byb21pc2UpCi0gICAgICAgIHN0ZDo6ZXhj
aGFuZ2UobV9zZXR1cEZlYXR1cmVzUHJvbWlzZSwgV1RGOjpudWxsb3B0KS0+c2V0dGxlKEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9zZXR1cEZlYXR1
cmVzUHJvbWlzZSwgc3RkOjpudWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3Ig
fSk7CiAKICAgICBpZiAobV9iZWdpblByb21pc2UpCi0gICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9i
ZWdpblByb21pc2UsIFdURjo6bnVsbG9wdCktPnNldHRsZShFeGNlcHRpb24geyBBYm9ydEVycm9y
IH0pOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fYmVnaW5Qcm9taXNlLCBzdGQ6Om51bGxvcHQp
LT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIGlmIChhdXRvIHBhZ2Ug
PSBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkucGFnZSgpKQog
ICAgICAgICBwYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5lbmRBcHBsZVBheVNldHVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBp
bmdDb250YWN0VXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxl
UGF5U2hpcHBpbmdDb250YWN0VXBkYXRlLmgKaW5kZXggODc1MmEwMzQ2ODgyY2QyZjU4MmIzOTkw
YWY2NjJmZDA0MTNiMzliYy4uZGYyN2RjODUxNjI1MWZjMjM5ZWIzMDVmM2U3ODlmNDZlYTViYTIz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNo
aXBwaW5nQ29udGFjdFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaApAQCAtNTksMTMgKzU5LDEzIEBAIE9w
dGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlPiBBcHBsZVBheVNoaXBwaW5nQ29u
dGFjdFVwZGF0ZTo6ZGVjb2RlKERlCiAgICAgQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUg
cmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2Rl
ZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAg
ICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAgICAgcmVzdWx0
Lm5hbWUgPSBXVEZNb3ZlKCpuYW1lKTsgXAogCiAgICAgREVDT0RFKGVycm9ycywgVmVjdG9yPFJl
ZlB0cjxBcHBsZVBheUVycm9yPj4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCmluZGV4IDg0ZjkyZTkzZWFmZDQ3
ODQzNDRkYjY2ZjJjNGQ3YzJlMDhkMjFiODEuLmNjZmJkNzE0NjE3NTM4YjljNjM2NDZkMzZjOTll
MDRkYzMxOGE2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZC5oCkBAIC01OCwxMyArNTgsMTMgQEAgT3B0aW9u
YWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIKICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKIAog
ICAgIGlmICghcmVzdWx0LmRlY29kZURhdGEoZGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNkZWZpbmUgREVDT0RF
KG5hbWUsIHR5cGUpIFwKICAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgZGVjb2RlciA+
PiBuYW1lOyBcCiAgICAgaWYgKCFuYW1lKSBcCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
IFwKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgXAogICAgIHJlc3VsdC5uYW1lID0gV1RG
TW92ZSgqbmFtZSk7IFwKIAogICAgIERFQ09ERShsYWJlbCwgU3RyaW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0
aG9kRGF0YS5oCmluZGV4IGU0MGNmNmQxYmI5MTA1NjBlN2ZjY2M3MWY5NDc4ZTUxNTIwZjBiZDku
LjhiYmE1NDFlN2E3MDM1OTM4NGE0NTUwYjQ4MjFhODgzZWRiM2JkYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdN
ZXRob2REYXRhLmgKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01l
dGhvZERhdGE+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhOjpkZWNvZGUoRGVjb2RlciYKIHsK
ICAgICBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFyZXN1bHQu
ZGVjb2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRo
b2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlw
cGluZ01ldGhvZFVwZGF0ZS5oCmluZGV4IDYzOWJlMGQyYmI5MmExMTQzNjdiYmEzNmI5ODdiOWM2
NmRkOTFmNTMuLjg3ZmFjODhjNWQ0NjY3YjgyOTJlYjYxYTNhYjM0M2UwYzgxMTNlN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01l
dGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oCkBAIC00OCw3ICs0OCw3IEBAIE9wdGlvbmFsPEFwcGxl
UGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU6OmRl
Y29kZShEZWNvCiAgICAgQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZSByZXN1bHQ7CiAKICAg
ICBpZiAoIXJlc3VsdC5kZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVu
dENvb3JkaW5hdG9yLmNwcAppbmRleCAxMTE1ODU0ZTk1YTE1MDNlYTBmMDgwYzUyMjFhYmEyMGFj
OTkwNGMxLi40ODkzYmUyMTFjNzk0NGNmYTkxNmIyOTFmYmE5ODQ1ODVjZDJkZjZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0
b3IuY3BwCkBAIC0yNzksMTAgKzI3OSwxMCBAQCB2b2lkIFBheW1lbnRDb29yZGluYXRvcjo6ZGlk
Q2FuY2VsUGF5bWVudFNlc3Npb24oUGF5bWVudFNlc3Npb25FcnJvciYmIGVycm9yKQogT3B0aW9u
YWw8U3RyaW5nPiBQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKERv
Y3VtZW50JiwgdW5zaWduZWQgdmVyc2lvbiwgY29uc3QgU3RyaW5nJiBwYXltZW50TmV0d29yaykg
Y29uc3QKIHsKICAgICBpZiAodmVyc2lvbiA8IDIgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShw
YXltZW50TmV0d29yaywgImpjYiIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHZlcnNpb24gPCAzICYmIGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UocGF5bWVudE5ldHdvcmssICJjYXJ0ZUJhbmNhaXJlIikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gbV9jbGllbnQudmFsaWRhdGVkUGF5bWVudE5ldHdvcmsocGF5bWVudE5ldHdv
cmspOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9QYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uLm1tCmluZGV4IDdlMjMxOWU2
OTZjMjk5MTRiMDVlYjFiNThkNDlhMDc5Y2ViNWM0NGIuLmNlNTcwODk2ZmZkOWJkZWRjOTRmYzdj
NmZhM2ExM2QxMDRmNTg0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24ubW0K
QEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPGlkPiBtYWtlTlNBcnJheUVsZW1l
bnQoY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0mIGl0ZW0pCiBzdGF0aWMgT3B0aW9uYWw8
QXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IEFwcGxlUGF5
SW5zdGFsbG1lbnRJdGVtKiwgaWQgYXJyYXlFbGVtZW50KQogewogICAgIGlmICghW2FycmF5RWxl
bWVudCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRJdGVtQ2xhc3Mo
KV0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBQS1BheW1lbnRJbnN0YWxsbWVudEl0ZW0gKml0ZW0gPSBhcnJheUVsZW1l
bnQ7CiAgICAgcmV0dXJuIEFwcGxlUGF5SW5zdGFsbG1lbnRJdGVtIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50U2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KaW5kZXggMDMzMmI4MzQwYjg4MzFmYTczMDU0M2YxMTEw
ZTcyNDg2ZDVlYzlkMS4uMTI5MzNhNDFiOWI5ZjkwMGE3MWYwY2Q2ZDc4YmE0OTdhZTRhNzM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KQEAgLTM4LDExICszOCwx
MSBAQCBPcHRpb25hbDxQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBQYXltZW50TWVyY2hhbnRTZXNz
aW9uOjpmcm9tSlMoSlNDOjpKU0dsb2JhbE9iagogICAgIC8vIEZJWE1FOiBEb24ndCByb3VuZC10
cmlwIHVzaW5nIE5TU3RyaW5nLgogICAgIGF1dG8ganNvblN0cmluZyA9IEpTT05TdHJpbmdpZnko
JmxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCAwKTsKICAgICBpZiAoIWpzb25TdHJpbmcpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5hbWljX29iamNfY2FzdDxOU0RpY3Rpb25hcnk+
KFtOU0pTT05TZXJpYWxpemF0aW9uIEpTT05PYmplY3RXaXRoRGF0YTpbKE5TU3RyaW5nICopanNv
blN0cmluZyBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gb3B0aW9uczow
IGVycm9yOm5pbF0pOwogICAgIGlmICghZGljdGlvbmFyeSB8fCAhW2RpY3Rpb25hcnkgaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBrUGF5bWVudE1l
cmNoYW50U2Vzc2lvbiA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRNZXJjaGFudFNlc3Np
b25JbnN0YW5jZSgpIGluaXRXaXRoRGljdGlvbmFyeTpkaWN0aW9uYXJ5XSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KaW5kZXggNDhiNTE0ZDlmMDNkZGZiMTVmYTE4ZGY4ZGExYWFkODFjMzMzOWRj
Ni4uM2JiNjNmMDE3NmFlMjgxMWRiMmMzMTg1MzU0OTYzNzk0MzhhMzcyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0
aG9kQ29jb2EubW0KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIEFwcGxlUGF5UGF5bWVudFBhc3M6
OkFjdGl2YXRpb25TdGF0ZSBjb252ZXJ0KFBLUGF5bWVudFBhc3NBY3RpdmF0aW9uU3RhdGUKIHN0
YXRpYyBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRQYXNzPiBjb252ZXJ0KFBLUGF5bWVudFBhc3Mg
KnBheW1lbnRQYXNzKQogewogICAgIGlmICghcGF5bWVudFBhc3MpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBcHBsZVBh
eVBheW1lbnRQYXNzIHJlc3VsdDsKIApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
QXBwbGVQYXlQYXltZW50TWV0aG9kOjpUeXBlPiBjb252ZXJ0KFBLUGF5bWVudE1ldGhvZFR5cGUg
cGF5bWVudAogICAgICAgICByZXR1cm4gQXBwbGVQYXlQYXltZW50TWV0aG9kOjpUeXBlOjpTdG9y
ZTsKICAgICBjYXNlIFBLUGF5bWVudE1ldGhvZFR5cGVVbmtub3duOgogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgY29udmVydChDTkxh
YmVsZWRWYWx1ZTxDTlBvc3RhbEFkZHJlc3MqPiAqcG9zdGFsQWRkcmVzcywgQXBwbGVQYXlQYXkK
IHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRDb250YWN0PiBjb252ZXJ0KENOQ29udGFj
dCAqYmlsbGluZ0NvbnRhY3QpCiB7CiAgICAgaWYgKCFiaWxsaW5nQ29udGFjdCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEFwcGxlUGF5UGF5bWVudENvbnRhY3QgcmVzdWx0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9u
RXJyb3JDb2NvYS5tbQppbmRleCAwMDZjNjQ1ZDY3MDMzNGVhYzE5NmRlNDA4NTA4YTk2ZTVjMTll
NDJlLi4yYzA2YjQ2ZTgzNDRiNmY3N2U2NGNjNTRiY2JmYTRhYzY4MGI4Y2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJy
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1Bh
eW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQpAQCAtNDIsMTQgKzQyLDE0IEBAIHN0YXRpYyBPcHRp
b25hbDxBcHBsZVBheVNlc3Npb25FcnJvcj4gYWRkaXRpb25hbEVycm9yKE5TRXJyb3IgKmVycm9y
KQogICAgIHN0YXRpYyBjb25zdGV4cHIgTlNJbnRlZ2VyIHBrUGF5bWVudEF1dGhvcml6YXRpb25G
ZWF0dXJlQXBwbGljYXRpb25FcnJvciA9IC0yMDE2OwogCiAgICAgaWYgKGVycm9yLmNvZGUgIT0g
cGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlvbkVycm9yKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWQgYmluZFRva2VuVmFsdWUgPSBlcnJvci51c2VySW5mb1tiaW5kVG9rZW5LZXldOwogICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWJpbmRUb2tlblZhbHVlIHx8
IFtiaW5kVG9rZW5WYWx1ZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSk7CiAgICAgcmV0
dXJuIEFwcGxlUGF5U2Vzc2lvbkVycm9yIHsgImZlYXR1cmVBcHBsaWNhdGlvbkVycm9yIl9zLCB7
IHsgImJpbmRUb2tlbiJfcywgKE5TU3RyaW5nICopYmluZFRva2VuVmFsdWUgfSB9IH07CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IDQ4YmZhODk1NDliYzQzMThjMTg3Mzhl
MTM0NGE5MjIzNGQ5OGM2NDIuLjU2MDE0MTg1OWUxY2IyYjI4YjdlZDU5ZDE1MGQ4YTc5Y2JjNjc4
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJl
cXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApA
QCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6Y29tcHV0ZUFk
ZHJlc3NFcnJvcnMoU3RyaW5nJiYgZXJyb3IsIEFkZHJlc3NFcnJvcnMmCiAgICAgaWYgKCFtX3Bh
eW1lbnRSZXF1ZXN0LT5wYXltZW50T3B0aW9ucygpLnJlcXVlc3RTaGlwcGluZykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUo
ZXJyb3IpLCBXVEY6Om51bGxvcHQsIGVycm9ycyk7CisgICAgYXBwZW5kU2hpcHBpbmdDb250YWN0
SW52YWxpZEVycm9yKFdURk1vdmUoZXJyb3IpLCBzdGQ6Om51bGxvcHQsIGVycm9ycyk7CiAgICAg
YXBwZW5kU2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yKFdURk1vdmUoYWRkcmVzc0Vycm9ycy5h
ZGRyZXNzTGluZSksIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lcywgZXJy
b3JzKTsKICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRy
ZXNzRXJyb3JzLmNpdHkpLCBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkOjpMb2NhbGl0eSwgZXJy
b3JzKTsKICAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRy
ZXNzRXJyb3JzLmNvdW50cnkpLCBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkOjpDb3VudHJ5LCBl
cnJvcnMpOwpAQCAtNDYxLDcgKzQ2MSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPHN0ZDo6dHVw
bGU8UGF5bWVudERldGFpbHNNb2RpZmllciwgQXBwbGVQYXlNb2RpZmllcj4+PiBBcHBsCiB7CiAg
ICAgYXV0byYgZGV0YWlscyA9IG1fcGF5bWVudFJlcXVlc3QtPnBheW1lbnREZXRhaWxzKCk7CiAg
ICAgaWYgKCFkZXRhaWxzLm1vZGlmaWVycykKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgYXV0byYgbGV4aWNh
bEdsb2JhbE9iamVjdCA9ICpkb2N1bWVudCgpLmdsb2JhbE9iamVjdCgpOwogCkBAIC01MDAsNyAr
NTAwLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQYXltZW50RGV0YWlsc01v
ZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+IEFwcGwKICAgICAgICAgcmV0dXJuIHsgeyB7IG1v
ZGlmaWVyLCBXVEZNb3ZlKGFwcGxlUGF5TW9kaWZpZXIpIH0gfSB9OwogICAgIH0KIAotICAgIHJl
dHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkZXRhaWxzVXBkYXRl
ZChQYXltZW50UmVxdWVzdDo6VXBkYXRlUmVhc29uIHJlYXNvbiwgU3RyaW5nJiYgZXJyb3IsIEFk
ZHJlc3NFcnJvcnMmJiBhZGRyZXNzRXJyb3JzLCBQYXllckVycm9yRmllbGRzJiYgcGF5ZXJFcnJv
cnMsIEpTQzo6SlNPYmplY3QqIHBheW1lbnRNZXRob2RFcnJvcnMpCkBAIC02NDcsOCArNjQ3LDgg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhv
ZFVwZGF0ZWQoVmVjdG9yPFJlZlB0cjxBcHAKIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6
Y29tcGxldGUoT3B0aW9uYWw8UGF5bWVudENvbXBsZXRlPiYmIHJlc3VsdCkKIHsKICAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICBBU1NFUlQoaXNGaW5hbFN0YXRlUmVzdWx0KFdURjo6bnVsbG9w
dCkpOwotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRTZXNzaW9u
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIEFTU0VSVChpc0ZpbmFsU3RhdGVSZXN1bHQoc3RkOjpu
dWxsb3B0KSk7CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNl
c3Npb24oc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjgwLDcg
KzY4MCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnJldHJ5
KFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzJiYgdmFsaWRhCiAKICAgICAvLyBFbnN1cmUgdGhlcmUg
aXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBlcnJvciB0byBhdm9pZCBoYXZpbmcgYSBmaW5hbCByZXN1
bHQuCiAgICAgaWYgKGVycm9ycy5pc0VtcHR5KCkpCi0gICAgICAgIGVycm9ycy5hcHBlbmQoQXBw
bGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpVbmtub3duLCBXVEY6Om51bGxv
cHQsIG51bGxTdHJpbmcoKSkpOworICAgICAgICBlcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJyb3I6
OmNyZWF0ZShBcHBsZVBheUVycm9yQ29kZTo6VW5rbm93biwgc3RkOjpudWxsb3B0LCBudWxsU3Ry
aW5nKCkpKTsKIAogICAgIFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0IGF1dGhvcml6YXRpb25S
ZXN1bHQgeyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZSwgV1RGTW92ZShlcnJv
cnMpIH07CiAgICAgQVNTRVJUKCFpc0ZpbmFsU3RhdGVSZXN1bHQoYXV0aG9yaXphdGlvblJlc3Vs
dCkpOwpAQCAtNzAxLDcgKzcwMSw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFs
aWRhdGVNZXJjaGFudChVUkwmJiB2YWxpZGF0aW9uVVJMKQogCiBzdGF0aWMgUmVmPFBheW1lbnRB
ZGRyZXNzPiBjb252ZXJ0KGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmIGNvbnRhY3QpCiB7
Ci0gICAgcmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwg
Y29udGFjdC5hZGRyZXNzTGluZXMudmFsdWVPcihWZWN0b3I8U3RyaW5nPigpKSwgY29udGFjdC5h
ZG1pbmlzdHJhdGl2ZUFyZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxpdHks
IGNvbnRhY3QucG9zdGFsQ29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXpl
ZE5hbWUsIGNvbnRhY3QucGhvbmVOdW1iZXIpOworICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6
Y3JlYXRlKGNvbnRhY3QuY291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29y
KFZlY3RvcjxTdHJpbmc+KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5s
b2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmco
KSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1lbnQmIHBh
eW1lbnQpCiAgICAgQVNTRVJUKG1fdXBkYXRlU3RhdGUgPT0gVXBkYXRlU3RhdGU6Ok5vbmUpOwog
CiAgICAgYXV0byBhcHBsZVBheVBheW1lbnQgPSBwYXltZW50LnRvQXBwbGVQYXlQYXltZW50KHZl
cnNpb24oKSk7Ci0gICAgYXV0byBzaGlwcGluZ0NvbnRhY3QgPSBhcHBsZVBheVBheW1lbnQuc2hp
cHBpbmdDb250YWN0LnZhbHVlT3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsKKyAgICBhdXRv
IHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0NvbnRhY3QudmFsdWVf
b3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsKICAgICBhdXRvIGRldGFpbHNGdW5jdGlvbiA9
IFthcHBsZVBheVBheW1lbnQgPSBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudCldKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgcmV0dXJuIHRvSlNEaWN0
aW9uYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIGFwcGxlUGF5UGF5bWVudCk7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IDdiZTFhMGQxZGUzMDgxNjgzOGRjNTcy
ZTQ0ZTRlNTM5NTljYmNjMGIuLmJlMTgzMjMxYWU5NWMzNzM2MzNhNzRlMWM3NGU3MWE5YjFhYzQx
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
aWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtNjYsMTkgKzY2LDE5IEBA
IE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QgcmVzdWx0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuc2hvcnROYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5kZXNjcmlwdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2Nv
cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc3BsYXkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YXJ0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC50aGVtZUNvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJv
YXJkLmNwcAppbmRleCA0MGJiMDZhZjI5ZDllNDVkMGQ1OTliMzE4OWIwZDYzMGM0NWI4NWM0Li4x
OTk3MDVlNTc5N2IwODdlNzMzNzA1ZDlhMTA1M2RhZTIyMmE2MjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGVUZXh0KGNvbnN0IFN0cmluZyYgZGF0
YSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogdm9pZCBDbGlwYm9hcmQ6OnJlYWQo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGF1dG8gcmVqZWN0UHJvbWlz
ZUFuZENsZWFyQWN0aXZlU2Vzc2lvbiA9IFsmXSB7Ci0gICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90QWxsb3dlZEVycm9yKTsKICAgICB9OwogCkBAIC0x
OTgsNyArMTk4LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OmdldFR5cGUoQ2xpcGJvYXJkSXRlbSYgaXRl
bSwgY29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8RGVmZXJyZWRQcm8KIAogICAgIGF1dG8gZnJhbWUg
PSBtYWtlUmVmUHRyKHRoaXMtPmZyYW1lKCkpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAg
bV9hY3RpdmVTZXNzaW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2FjdGl2ZVNlc3Npb24g
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RBbGxvd2VkRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjYyLDcgKzI2Miw3IEBAIENsaXBib2FyZDo6
U2Vzc2lvbklzVmFsaWQgQ2xpcGJvYXJkOjp1cGRhdGVTZXNzaW9uVmFsaWRpdHkoKQogICAgICAg
ICByZXR1cm4gU2Vzc2lvbklzVmFsaWQ6Ok5vOwogCiAgICAgaWYgKG1fYWN0aXZlU2Vzc2lvbi0+
Y2hhbmdlQ291bnQgIT0gYWN0aXZlUGFzdGVib2FyZCgpLmNoYW5nZUNvdW50KCkpIHsKLSAgICAg
ICAgbV9hY3RpdmVTZXNzaW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2FjdGl2ZVNlc3Np
b24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBTZXNzaW9uSXNWYWxpZDo6Tm87CiAg
ICAgfQogCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBDbGlwYm9hcmQ6Okl0ZW1Xcml0ZXI6Ondy
aXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q2xpcGJvYXJkSXRlbT4+JiBpdGVtcykKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBtX2NoYW5nZUNvdW50QXRTdGFydCA9IG1fcGFzdGVib2FyZC0+Y2hh
bmdlQ291bnQoKTsKICNlbmRpZgotICAgIG1fZGF0YVRvV3JpdGUuZmlsbChXVEY6Om51bGxvcHQs
IGl0ZW1zLnNpemUoKSk7CisgICAgbV9kYXRhVG9Xcml0ZS5maWxsKHN0ZDo6bnVsbG9wdCwgaXRl
bXMuc2l6ZSgpKTsKICAgICBtX3BlbmRpbmdJdGVtQ291bnQgPSBpdGVtcy5zaXplKCk7CiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLnNpemUoKTsgKytpbmRleCkgewog
ICAgICAgICBpdGVtc1tpbmRleF0tPmNvbGxlY3REYXRhRm9yV3JpdGluZygqbV9jbGlwYm9hcmQs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluZGV4XSAoYXV0byBkYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9D
bGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCmlu
ZGV4IDRlZGRmODVkMjdjYzQwNDUwZjJhMzFlYTA3ZjdiZTZkNmI3MDFmNDguLmE2MjAxNmJiNTUw
NDFlM2RhODg3ZjRmMWRmZjdjNzkyMDQ4YzA4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2Fy
ZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBDbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAK
ICAgICBhdXRvIGRvY3VtZW50ID0gZG9jdW1lbnRGcm9tQ2xpcGJvYXJkKGNsaXBib2FyZC5nZXQo
KSk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZva2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgICAg
IGVsc2UgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEp
KQogICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2Fy
ZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3RlYm9hcmREYXRhU291cmNl
LmNwcAppbmRleCA0MzFlMmI1ZDNiNzUyZWY4ZWZlYWU4OTQxZjVhMDkxNzkzOTBhZmRhLi43ODU1
YzBlZDE1MDhlYmQ1NGQ1OWVmNmZkOGRiYzZkZGFiYjU5ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERh
dGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJk
L0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2U6OmNvbGxlY3REYXRhRm9yV3Jp
dGluZyhDbGlwYm9hcmQmLCBDb21wbGUKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IHdyaXRpbmcgcGxhdGZvcm0tYmFja2VkIENsaXBi
b2FyZEl0ZW1zCiAgICAgLy8gYmFjayB0byB0aGUgcGFzdGVib2FyZCB1c2luZyBDbGlwYm9hcmQu
d3JpdGUoKS4KLSAgICBjb21wbGV0aW9uKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxldGlvbihz
dGQ6Om51bGxvcHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCmluZGV4IDZmYTQwMzAxNmEwZTI5NzMzNTE0Y2Ix
ZjU5N2E2MWJlYzdjYzhjOGMuLjk1YTg3ZGQ3OTFhMzEyNDUyZDA3ZmM3YmNjYTgxNGFlYjJmNzA0
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCkBAIC03Nyw3
ICs3Nyw3IEBAIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlUmVzcG9uc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QKIHsKICAgICBhdXRvIHJlc291cmNlUmVz
cG9uc2UgPSByZWNvcmQucmVzcG9uc2U7CiAgICAgcmVzb3VyY2VSZXNwb25zZS5zZXRTb3VyY2Uo
UmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpET01DYWNoZSk7Ci0gICAgYXV0byByZXNwb25zZSA9
IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBXVEY6Om51bGxvcHQsIHJlY29yZC5yZXNw
b25zZUhlYWRlcnNHdWFyZCwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CisgICAgYXV0byBy
ZXNwb25zZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBzdGQ6Om51bGxvcHQsIHJl
Y29yZC5yZXNwb25zZUhlYWRlcnNHdWFyZCwgV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAg
ICAgcmVzcG9uc2UtPnNldEJvZHlEYXRhKGNvcHlSZXNwb25zZUJvZHkocmVjb3JkLnJlc3BvbnNl
Qm9keSksIHJlY29yZC5yZXNwb25zZUJvZHlTaXplKTsKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9
CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBET01DYWNoZTo6cmVtb3ZlKFJlcXVlc3RJbmZvJiYg
aW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBET01Qcm9taXMKIHN0YXRpYyBSZWY8
RmV0Y2hSZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IERPTUNhY2hlRW5naW5lOjpSZWNvcmQmIHJlY29yZCkKIHsKICAgICBhdXRvIHJl
cXVlc3RIZWFkZXJzID0gRmV0Y2hIZWFkZXJzOjpjcmVhdGUocmVjb3JkLnJlcXVlc3RIZWFkZXJz
R3VhcmQsIEhUVFBIZWFkZXJNYXAgeyByZWNvcmQucmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkg
fSk7Ci0gICAgcmV0dXJuIEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3QgeyByZWNvcmQucmVx
dWVzdCB9LCBGZXRjaE9wdGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJpbmcgeyByZWNvcmQu
cmVmZXJyZXIgfSk7CisgICAgcmV0dXJuIEZldGNoUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0SGVhZGVycyksICBSZXNvdXJjZVJlcXVlc3QgeyBy
ZWNvcmQucmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyByZWNvcmQub3B0aW9ucyB9LCBTdHJpbmcg
eyByZWNvcmQucmVmZXJyZXIgfSk7CiB9CiAKIHZvaWQgRE9NQ2FjaGU6OmtleXMoT3B0aW9uYWw8
UmVxdWVzdEluZm8+JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcHRpb25zLCBLZXlzUHJv
bWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlRW5naW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
RW5naW5lLmgKaW5kZXggMDdhMTgyM2U1OWQyNjg2NDc0OGQ0MTA3MGVlNGEyMjgzZThmMzU2My4u
OGU2MmZhMTkxYzJjOWU4MzdmOGVkMDkzMjRkNzk4ZWI1MmY1Yzg0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZUVuZ2luZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaApAQCAtMTI4LDEyICsxMjgsMTIg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPENhY2hlSW5mb3M+IENh
Y2hlSW5mb3M6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPFZlY3RvcjxDYWNoZUluZm8+
PiBpbmZvczsKICAgICBkZWNvZGVyID4+IGluZm9zOwogICAgIGlmICghaW5mb3MpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXBkYXRlQ291bnRlcjsKICAgICBkZWNvZGVyID4+IHVwZGF0
ZUNvdW50ZXI7CiAgICAgaWYgKCF1cGRhdGVDb3VudGVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmluZm9zKSwgV1RGTW92ZSgqdXBkYXRlQ291bnRlcikgfX07CiB9CkBAIC0xNDksMTIg
KzE0OSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJ
ZGVudGlmaWVyT3BlcmF0aW9uUmVzdWx0PiBDYWNoZUlkZQogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50
aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBoYWRTdG9yYWdlRXJyb3I7CiAgICAgZGVj
b2RlciA+PiBoYWRTdG9yYWdlRXJyb3I7CiAgICAgaWYgKCFoYWRTdG9yYWdlRXJyb3IpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpoYWRTdG9yYWdlRXJy
b3IpIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hl
U3RvcmFnZS5jcHAKaW5kZXggNTAyNjcwYjk0NDhlOTMxODZhMGQyZDI3YzEyY2U4YWYzNjA1MWM3
YS4uZmEwNTBjMjhjZmZlNWZmZWQ5NmQ4ODhmOTgyMjlkZDQyMjQ5NWE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBPcHRpb25hbDxDbGllbnRPcmlnaW4+IERPTUNhY2hlU3RvcmFnZTo6b3JpZ2luKCkg
Y29uc3QKIHsKICAgICBhdXRvKiBvcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPyBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOwogICAg
IGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIENsaWVudE9yaWdpbiB7IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+dG9wT3JpZ2luKCkuZGF0YSgpLCBvcmlnaW4tPmRhdGEoKSB9OwogfQpA
QCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZUNhY2hlcyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGlvbj4mCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZpbmRDYWNoZU9yQ3JlYXRlKFdURk1vdmUoaW5mbykpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9SZXRyaWV2ZVJlY29yZHNPcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaAppbmRleCBkZmFm
YTA4M2NjNzAwMzgxZTBiODNlZTBjYzJhODNjZmI3NTQxMzQ3Li5hZmYyNzhkNzUxZmNkM2Q4YjA0
OTc5NjBkM2EyODJkZjg2YTUwYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaApAQCAtNTMsMjcgKzUzLDI3IEBAIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxSZXRyaWV2ZVJlY29yZHNPcHRp
b25zPiBSZXRyaWV2ZVJlY29yZHNPCiAgICAgT3B0aW9uYWw8UmVzb3VyY2VSZXF1ZXN0PiByZXF1
ZXN0OwogICAgIGRlY29kZXIgPj4gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBpZ25vcmVTZWFyY2g7CiAgICAgZGVjb2RlciA+PiBpZ25vcmVTZWFy
Y2g7CiAgICAgaWYgKCFpZ25vcmVTZWFyY2gpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZ25v
cmVNZXRob2Q7CiAgICAgZGVjb2RlciA+PiBpZ25vcmVNZXRob2Q7CiAgICAgaWYgKCFpZ25vcmVN
ZXRob2QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVWYXJ5OwogICAgIGRlY29kZXIg
Pj4gaWdub3JlVmFyeTsKICAgICBpZiAoIWlnbm9yZVZhcnkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxi
b29sPiBzaG91bGRQcm92aWRlUmVzcG9uc2U7CiAgICAgZGVjb2RlciA+PiBzaG91bGRQcm92aWRl
UmVzcG9uc2U7CiAgICAgaWYgKCFzaG91bGRQcm92aWRlUmVzcG9uc2UpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4geyB7IFdURk1vdmUoKnJlcXVlc3QpLCBXVEZNb3ZlKCppZ25vcmVTZWFyY2gpLCBXVEZNb3Zl
KCppZ25vcmVNZXRob2QpLCBXVEZNb3ZlKCppZ25vcmVWYXJ5KSwgV1RGTW92ZSgqc2hvdWxkUHJv
dmlkZVJlc3BvbnNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NvbnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nv
bnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmgKaW5kZXggMTJmZjUxNGVhZjU0ZTMxZWI1ODNiNGIx
OTdiZDQzZjk2MGVlNzIwNS4uMzBlYjQ2MTdiYWE4ODJjZDllZDE5ODZkMTYyZTFhM2RlODdmZDNh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250
YWN0SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29u
dGFjdEluZm8uaApAQCAtNTQsMTcgKzU0LDE3IEBAIE9wdGlvbmFsPENvbnRhY3RJbmZvPiBDb250
YWN0SW5mbzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+IG5hbWU7CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBlbWFpbDsKICAgICBkZWNvZGVyID4+IGVtYWls
OwogICAgIGlmICghZW1haWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGVs
OwogICAgIGRlY29kZXIgPj4gdGVsOwogICAgIGlmICghdGVsKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
ICpuYW1lLCAqZW1haWwsICp0ZWwgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RzUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCmluZGV4IDRm
ZTA3ZjdhODhjZWZhMDgzNTZjYWNlY2UwMTNjZWNiNzc2OTNlOWQuLjMwYjBjZjI3MzhjOGJhNDFl
ZWM1ODBlNmQ5NWIyODZhZTQ0NTJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oCkBAIC01Niwx
NyArNTYsMTcgQEAgT3B0aW9uYWw8Q29udGFjdHNSZXF1ZXN0RGF0YT4gQ29udGFjdHNSZXF1ZXN0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPENvbnRh
Y3RQcm9wZXJ0eT4+IHByb3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBwcm9wZXJ0aWVzOwogICAg
IGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IG11bHRpcGxlOwogICAg
IGRlY29kZXIgPj4gbXVsdGlwbGU7CiAgICAgaWYgKCFtdWx0aXBsZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFN0cmluZz4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHt7ICpwcm9wZXJ0aWVzLCAqbXVsdGlwbGUsICp1cmwgfX07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggYjRkZTFh
ZWNmMjNlYWYyYjFkYmU5YTRlMjU5ZThjYzVlZjJkZTdlMy4uMDE2ZTAzZjhmNzczZjc0OGYwNmJh
YTVjZTM0MmZkYThmOGE4ZTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIENETTo6Z2V0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWRhdGVDb25m
aQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhbV9wcml2YXRlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVy
JiByZXNwb25zZSkKIE9wdGlvbmFsPFN0cmluZz4gQ0RNOjpzYW5pdGl6ZVNlc3Npb25JZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmNwcAppbmRleCAzNDYyM2IxZDMzMTE0YWMxZWEyZDA2MDgzNDI2NjllOTZlNTk4NDI1
Li40MTlkYjhkNTE3ZGZiM2E0MzQwN2U4YTFiMTEwZmZlMDIxNTkxMTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdp
c3RyeS5jcHAKQEAgLTU5LDIwICs1OSwyMCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZmZQogICAg
IC8vIDEuIEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdAogICAgIGlmIChi
dWZmZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIFN0cmluZyBqc29uIHsgYnVmZmVyLmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJ1
ZmZlci5zaXplKCkpIH07CiAKICAgICBhdXRvIHZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNP
Tihqc29uKTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBvYmplY3QgPSB2YWx1ZS0+
YXNPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8ga2lkc0FycmF5ID0g
b2JqZWN0LT5nZXRBcnJheSgia2lkcyJfcyk7CiAgICAgaWYgKCFraWRzQXJyYXkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBmb3IgKGF1dG8mIHZhbHVl
IDogKmtpZHNBcnJheSkgewpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjb25zdCBTaGFyZWRCdWZm
ZQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGtleUlERGF0YS0+c2l6ZSgp
IDwga0tleUlkc01pbktleUlkU2l6ZUluQnl0ZXMgfHwga2V5SUREYXRhLT5zaXplKCkgPiBrS2V5
SWRzTWF4S2V5SWRTaXplSW5CeXRlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGtleUlEcy5hcHBl
bmQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5SUREYXRhKSkpOwogICAgIH0KQEAg
LTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3Rl
Y3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogICAgIC8vIDQuIENvbW1v
biBTeXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2Nv
bW1vbi1zeXN0ZW0KICAgICBpZiAoYnVmZmVyLnNpemUoKSA+PSBrQ2VuY01heEJveFNpemUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4gcHNzaEJveGVzOwpAQCAtMTI3
LDE0ICsxMjcsMTQgQEAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0
aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4gSW5pdERhdGEKICAgICAgICAgYXV0byYgYm94
U2l6ZSA9IG9wdGlvbmFsQm94VHlwZS52YWx1ZSgpLnNlY29uZDsKIAogICAgICAgICBpZiAoYm94
VHlwZU5hbWUgIT0gSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94Ojpib3hUeXBl
TmFtZSgpIHx8IGJveFNpemUgPiBidWZmZXIuc2l6ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
YXV0byBzeXN0ZW1JRCA9IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveDo6cGVl
a1N5c3RlbUlEKHZpZXcsIG9mZnNldCk7CiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5D
X0lOSVREQVRBKQogICAgICAgICBpZiAoc3lzdGVtSUQgPT0gSVNPRmFpclBsYXlTdHJlYW1pbmdQ
c3NoQm94OjpmYWlyUGxheVN5c3RlbUlEKCkpIHsKICAgICAgICAgICAgIGF1dG8gZnBzUHNzaCA9
IG1ha2VVbmlxdWU8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigpOwogICAgICAgICAgICAg
aWYgKCFmcHNQc3NoLT5yZWFkKHZpZXcsIG9mZnNldCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgcHNzaEJveGVzLmFwcGVuZChXVEZNb3ZlKGZwc1Bzc2gpKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xNDMsNyArMTQzLDcgQEAgT3B0aW9uYWw8VmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g+Pj4g
SW5pdERhdGEKICNlbmRpZgogICAgICAgICBhdXRvIHBzc2hCb3ggPSBtYWtlVW5pcXVlPElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4oKTsKICAgICAgICAgaWYgKCFwc3NoQm94
LT5yZWFkKHZpZXcsIG9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBwc3NoQm94ZXMuYXBw
ZW5kKFdURk1vdmUocHNzaEJveCkpOwogICAgIH0KQEAgLTE1NywxMiArMTU3LDEyIEBAIE9wdGlv
bmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RL
ZXlJRHNDZW5jKGNvbnN0IFNoCiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94
ZXNGcm9tQ2VuYyhidWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChh
dXRvJiBwc3NoQm94IDogcHNzaEJveGVzLnZhbHVlKCkpIHsKICAgICAgICAgQVNTRVJUKHBzc2hC
b3gpOwogICAgICAgICBpZiAoIXBzc2hCb3gpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEhBVkUoRkFJUlBM
QVlTVFJFQU1JTkdfQ0VOQ19JTklUREFUQSkKICAgICAgICAgaWYgKGlzPElTT0ZhaXJQbGF5U3Ry
ZWFtaW5nUHNzaEJveD4oKnBzc2hCb3gpKSB7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0
IFNoYXJlZEJ1ZmZlciYKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVm
ZmVyKTsKICAgICBpZiAoIXNhbml0aXplZEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDEuIEZvcm1hdAog
ICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lz
dHJ5L2luaXRkYXRhL3dlYm0uaHRtbCNmb3JtYXQKQEAgLTI0NSw3ICsyNDUsNyBAQCBPcHRpb25h
bDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5
SURzKGNvbnN0IEF0b21TdAogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0
YVR5cGUpOwogICAgIGlmIChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNh
bml0aXplSW5pdERhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLmV4dHJhY3RLZXlJRHMo
YnVmZmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGM4NWY3OTk3ZWY4NDFjNjE5NTQy
ZTE3YjY3OTA2NTViOWVjYzhhMjMuLmI0OTEzMzFhMTY3ODYzNDZlOGU3Yzc3NDM5OTE4OWE0YTdk
Yjk5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taQogCiAgICAgICAgICAgICAgICAgLy8gOC45LjUuIFJ1biB0aGUgVXBkYXRl
IEV4cGlyYXRpb24gYWxnb3JpdGhtIG9uIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgZXhwaXJhdGlv
biB0aW1lLgogICAgICAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBydW4sIGFuZCBOYU4gaXMg
dGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIENETSBpbnN0YW5jZSBkb2Vzbid0IHByb3ZpZGUgb25l
LgotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGlyYXRpb24oZXhwaXJhdGlvbi52YWx1ZU9yKHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpKTsKKyAgICAgICAgICAgICAg
ICB1cGRhdGVFeHBpcmF0aW9uKGV4cGlyYXRpb24udmFsdWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKSkpOwogCiAgICAgICAgICAgICAgICAgLy8gOC45LjYuIElm
IG1lc3NhZ2UgaXMgbm90IG51bGwsIHJ1biB0aGUgUXVldWUgYSAibWVzc2FnZSIgRXZlbnQgYWxn
b3JpdGhtIG9uIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgbWVzc2FnZSB0eXBlIGFuZCBtZXNzYWdl
LgogICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVN0YXR1c01hcC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAppbmRl
eCA3YTdkMDA4NmFiZWFjZmJkNTVjODE5MTE4M2UzZmRkNjZiMTI5NjVjLi5kOTM3ZmM5M2FhZGM3
OGY0MDBkZTJkOTNkMTlmNjE4YjNiNmEyMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcApAQCAt
OTcsMTEgKzk3LDExIEBAIE1lZGlhS2V5U3RhdHVzTWFwOjpJdGVyYXRvcjo6SXRlcmF0b3IoTWVk
aWFLZXlTdGF0dXNNYXAmIG1hcCkKIE9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPEJ1ZmZlclNv
dXJjZTo6VmFyaWFudFR5cGUsIE1lZGlhS2V5U3RhdHVzPj4gTWVkaWFLZXlTdGF0dXNNYXA6Okl0
ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBpZiAoIW1fbWFwLT5tX3Nlc3Npb24pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvJiBzdGF0dXNlcyA9IG1fbWFwLT5tX3Nlc3Npb24tPnN0YXR1c2VzKCk7CiAgICAgaWYgKG1f
aW5kZXggPj0gc3RhdHVzZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHN0YXR1c2Vz
W21faW5kZXgrK107CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHBhaXIu
Zmlyc3QtPmRhdGEoKSwgcGFpci5maXJzdC0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBlNmUyY2JmY2Yx
MTYwZmNkOGI1ZWI1Njg5ZDMyZTBmNDYwZWRlMTViLi5iMDBhNDhkYTQzYzk4ZDMwNDg1OGFjZWE2
MTY1YjI2NTg0ZDQ0MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJp
ZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBMaXN0ZWRD
aGlsZCB7CiBzdGF0aWMgT3B0aW9uYWw8RmlsZVN5c3RlbTo6RmlsZVR5cGU+IGZpbGVUeXBlSWdu
b3JpbmdIaWRkZW5GaWxlcyhjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQogewogICAgIGlmIChGaWxl
U3lzdGVtOjppc0hpZGRlbkZpbGUoZnVsbFBhdGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBGaWxlU3lzdGVt
OjpmaWxlVHlwZShmdWxsUGF0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCBlOGM2MmFlZWMzOTJmNWUyNGRiNmU4ZDQ4ZjlhMGU3ZTZkMmVk
NDc2Li40MjJlMDYzZjFhNWU3ZmVhMWU2YzY0Nzg4OWIwOWExNzQwMjM1MmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC05NSw3ICs5NSw3IEBAIE9w
dGlvbmFsPEZldGNoQm9keT4gRmV0Y2hCb2R5Ojpmcm9tRm9ybURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgRm9yCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgZm9y
bSBkYXRhIGJvZGllcy4KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihGZXRjaEJvZHlPd25l
ciYgb3duZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggOWI2OTU2
MDMwMGFiNjk5MjM1M2EzYTljMTk3MDQyMTc0ZmM2NmQ1Yi4uZmM2YTZhMWIwOTQ5N2QxZTUzN2U5
YzgzZjdjZmZmOWRlNzRlMzc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTExMiwxNiArMTEyLDE2IEBAIHN0YXRpYyBP
cHRpb25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogICAgIFN0cmluZyBpbnB1dCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhj
b250ZW50VHlwZSk7CiAgICAgc2l6ZV90IHNsYXNoSW5kZXggPSBpbnB1dC5maW5kKCcvJyk7CiAg
ICAgaWYgKHNsYXNoSW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgdHlwZSA9IGlu
cHV0LnN1YnN0cmluZygwLCBzbGFzaEluZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3RoKCkgfHwg
IWlzVmFsaWRIVFRQVG9rZW4odHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc2l6ZV90IHNlbWljb2xvbklu
ZGV4ID0gaW5wdXQuZmluZCgnOycsIHNsYXNoSW5kZXgpOwogICAgIFN0cmluZyBzdWJ0eXBlID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGlucHV0LnN1YnN0cmluZyhzbGFzaElu
ZGV4ICsgMSwgc2VtaWNvbG9uSW5kZXggLSBzbGFzaEluZGV4IC0gMSkpOwogICAgIGlmICghc3Vi
dHlwZS5sZW5ndGgoKSB8fCAhaXNWYWxpZEhUVFBUb2tlbihzdWJ0eXBlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiB7eyBXVEZNb3ZlKHR5cGUpLCBXVEZNb3ZlKHN1YnR5cGUpLCBwYXJzZVBhcmFtZXRlcnMo
U3RyaW5nVmlldyhpbnB1dCksIHNlbWljb2xvbkluZGV4ICsgMSkgfX07CiB9CkBAIC0xNzUsMTMg
KzE3NSwxMyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIAogICAgIGF1dG8gcGFyc2VN
dWx0aXBhcnRCb3VuZGFyeSA9IFtdIChjb25zdCBPcHRpb25hbDxNaW1lVHlwZT4mIG1pbWVUeXBl
KSAtPiBPcHRpb25hbDxTdHJpbmc+IHsKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+dHlwZSwgIm11
bHRpcGFydCIpICYmIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUtPnN1YnR5cGUsICJm
b3JtLWRhdGEiKSkgewogICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1pbWVUeXBlLT5wYXJh
bWV0ZXJzLmZpbmQoImJvdW5kYXJ5Il9zKTsKICAgICAgICAgICAgIGlmIChpdGVyYXRvciAhPSBt
aW1lVHlwZS0+cGFyYW1ldGVycy5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0
b3ItPnZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIGF1dG8gZm9ybSA9IERPTUZv
cm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcAppbmRleCBjMzI0ZTdkYTY0MmUzNTY2NWEyZmEx
OTE4M2M3MjA4MDM1MTc4YzM0Li4zMWNjYTkyYzczNmZkYmI1YTcwNDg3Y2NkMmI5OTVlMmMxMWY0
OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKGNv
bnN0IEJsb2ImIGJsb2IsIEZldGNoQm9keUNvbnN1bWVyKiBjb25zdW1lcikKICAgICBtX2Jsb2JM
b2FkZXItPmxvYWRlci0+c3RhcnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYik7CiAg
ICAgaWYgKCFtX2Jsb2JMb2FkZXItPmxvYWRlci0+aXNTdGFydGVkKCkpIHsKICAgICAgICAgbV9i
b2R5LT5sb2FkaW5nRmFpbGVkKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJsb2IgbG9hZGluZyBm
YWlsZWQiX3N9KTsKLSAgICAgICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2Jsb2JMb2FkZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9
CkBAIC0yNjEsNyArMjYxLDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6ZmluaXNoQmxvYkxvYWRp
bmcoKQogewogICAgIEFTU0VSVChtX2Jsb2JMb2FkZXIpOwogCi0gICAgbV9ibG9iTG9hZGVyID0g
V1RGOjpudWxsb3B0OworICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBGZXRjaEJvZHlPd25lcjo6YmxvYkxvYWRpbmdTdWNjZWVkZWQoKQpAQCAtMzgyLDcgKzM4Miw3
IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbj4gRmV0Y2hCb2R5T3duZXI6OmxvYWRpbmdFeGNlcHRpb24o
KSBjb25zdAogICAgIH0sIFtdKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKSB7CiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBleGNlcHRpb24gfTsKICAgICB9LCBbXShhdXRvJiYpIC0+IE9w
dGlvbmFsPEV4Y2VwdGlvbj4gewotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKaW5kZXggNTdhZGRkMzRhOWExNmM4ZGZkODcw
MjQzNTE3OWIxYTNkNWU0ZWIwYS4uODYzNzU5OTYyYzg5MzlmNmU2ZjlhODFmY2ExNTZmMTJkOWIx
NWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmNw
cApAQCAtMjMwLDcgKzIzMCw3IEBAIE9wdGlvbmFsPFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywg
U3RyaW5nPj4gRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6bmV4dCgpCiAgICAgICAgIGlmICghdmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5n
LCBTdHJpbmc+IHsgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHZhbHVlKSB9OwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEZldGNo
SGVhZGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKEZldGNoSGVhZGVycyYgaGVhZGVycykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCA0OWU1YTVi
NTFmMmVkNmFhYjNmYjc1NWE5OGJlZjBjMWQ5NDYwYzk1Li4zNDhhYjQ0MjQ5Y2Q5MmFkYjJlNDdl
MzdjMDQyNzZlMjA5OGE0OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxFeGNlcHRp
b24+IHNldE1ldGhvZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgaW5p
CiAgICAgaWYgKGlzRm9yYmlkZGVuTWV0aG9kKGluaXRNZXRob2QpKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTWV0aG9kIGlzIGZvcmJpZGRlbi4iX3MgfTsKICAgICBy
ZXF1ZXN0LnNldEhUVFBNZXRob2Qobm9ybWFsaXplSFRUUE1ldGhvZChpbml0TWV0aG9kKSk7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiBjb21wdXRlUmVmZXJyZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKQEAgLTExOSw3ICsxMTks
NyBAQCBzdGF0aWMgT3B0aW9uYWw8RXhjZXB0aW9uPiBidWlsZE9wdGlvbnMoRmV0Y2hPcHRpb25z
JiBvcHRpb25zLCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9u
OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogc3RhdGljIGJvb2wgbWV0aG9kQ2FuSGF2ZUJvZHkoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMjczLDcgKzI3Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEZl
dGNoUmVxdWVzdDo6c2V0Qm9keShGZXRjaFJlcXVlc3QmIHJlcXVlc3QpCiAKIEV4Y2VwdGlvbk9y
PFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBJbmZvJiYgaW5wdXQsIEluaXQmJiBpbml0KQogewotICAgIGF1dG8g
cmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURjo6bnVsbG9w
dCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsg
fSwgeyB9LCB7IH0pKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVx
dWVzdChjb250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVh
ZGVyczo6R3VhcmQ6OlJlcXVlc3QpLCB7IH0sIHsgfSwgeyB9KSk7CiAKICAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGlucHV0KSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9
IHJlcXVlc3QtPmluaXRpYWxpemVXaXRoKFdURjo6Z2V0PFN0cmluZz4oaW5wdXQpLCBXVEZNb3Zl
KGluaXQpKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0
Pj4gRmV0Y2hSZXF1ZXN0OjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZQogICAg
IGlmIChpc0Rpc3R1cmJlZE9yTG9ja2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJCb2R5IGlzIGRpc3R1cmJlZCBvciBsb2NrZWQiX3MgfTsKIAotICAgIGF1dG8g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBXVEY6Om51bGxvcHQs
IEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291cmNlUmVxdWVzdCB7
IG1fcmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyBtX29wdGlvbnN9LCBTdHJpbmcgeyBtX3JlZmVy
cmVyIH0pKTsKKyAgICBhdXRvIGNsb25lID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlcXVlc3QoY29u
dGV4dCwgc3RkOjpudWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShtX2hlYWRlcnMuZ2V0KCkp
LCBSZXNvdXJjZVJlcXVlc3QgeyBtX3JlcXVlc3QgfSwgRmV0Y2hPcHRpb25zIHsgbV9vcHRpb25z
fSwgU3RyaW5nIHsgbV9yZWZlcnJlciB9KSk7CiAgICAgY2xvbmUtPmNsb25lQm9keSgqdGhpcyk7
CiAgICAgY2xvbmUtPm1fc2lnbmFsLT5zaWduYWxGb2xsb3cobV9zaWduYWwpOwogICAgIHJldHVy
biBjbG9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IDZkMjI4M2Y0N2QxMTlkM2E0YjcyN2VhM2MxYjY2NTdiMzZjNmM5ODAuLmNlZmVm
YzczZmMyNTZmN2EwMTUwNmI3NDVlMzE3OWJhODdhMWQ3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMTg3LDcgKzE4Nyw3IEBAIEV4
Y2VwdGlvbk9yPFJlZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29uCiAgICAgaWYgKG1faW50ZXJuYWxSZXNwb25zZS50eXBlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCkKICAgICAgICAgbV9pbnRlcm5hbFJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoSFRUUEhlYWRlck1hcCB7IGhlYWRlcnMoKS5pbnRl
cm5hbEhlYWRlcnMoKSB9KTsKIAotICAgIGF1dG8gY2xvbmUgPSBGZXRjaFJlc3BvbnNlOjpjcmVh
dGUoY29udGV4dCwgV1RGOjpudWxsb3B0LCBoZWFkZXJzKCkuZ3VhcmQoKSwgUmVzb3VyY2VSZXNw
b25zZSB7IG1faW50ZXJuYWxSZXNwb25zZSB9KTsKKyAgICBhdXRvIGNsb25lID0gRmV0Y2hSZXNw
b25zZTo6Y3JlYXRlKGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgaGVhZGVycygpLmd1YXJkKCksIFJl
c291cmNlUmVzcG9uc2UgeyBtX2ludGVybmFsUmVzcG9uc2UgfSk7CiAgICAgY2xvbmUtPmNsb25l
Qm9keSgqdGhpcyk7CiAgICAgY2xvbmUtPm1fb3BhcXVlTG9hZElkZW50aWZpZXIgPSBtX29wYXF1
ZUxvYWRJZGVudGlmaWVyOwogICAgIGNsb25lLT5tX2JvZHlTaXplV2l0aFBhZGRpbmcgPSBtX2Jv
ZHlTaXplV2l0aFBhZGRpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0FwcEhpZ2hsaWdodC5oCmluZGV4IDA4ZGIxNTczNmFkNzYyMjY0MjAzNTdiNWU2M2Y2NTg3YzUw
M2Q0MDEuLjBlZDQyN2I3NDAwOWYxZDk1MzY1ZGNlMTM2OGY2NzgxZDgxNmU2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodC5oCkBAIC02OCwy
OCArNjgsMjggQEAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0PiBBcHBIaWdobGlnaHQ6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHNpemVfdD4gbGVuZ3RoOwogICAgIGRlY29k
ZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLnRl
bXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4obGVuZ3RoLnZhbHVl
KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhpZ2hsaWdodDsKICAgICBoaWdobGlnaHQu
Z3JvdygqbGVuZ3RoKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKGhp
Z2hsaWdodC5kYXRhKCksIGhpZ2hsaWdodC5zaXplKCksIDEpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8U3RyaW5nPj4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYgKCF0
ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgaXNOZXdHcm91cDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTmV3R3JvdXApKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSGlnaGxpZ2h0UmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShoaWdobGlnaHQpKSwgV1RGTW92ZSgqdGV4dCks
IGlzTmV3R3JvdXAsIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgfX07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRh
LmNwcAppbmRleCA3MTRlYWVkNzgwZWUzNjczZmMwMDQ2MTQ1ODRlYWM0Zjc0MWQxNWNjLi4yOTVj
NThmYTZlZWEwOWU1Yjc0NmQ2MmVjM2ExYzUxNjU1OWFmZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5j
cHAKQEAgLTY5LDIyICs2OSwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxB
cHBIaWdobGlnaHRSYW5nZURhdGE6Ok5vZGVQYXRoQ29tcG9uZW50PiBBcHBIaQogICAgIE9wdGlv
bmFsPFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
aWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBub2RlTmFtZTsKICAg
ICBkZWNvZGVyID4+IG5vZGVOYW1lOwogICAgIGlmICghbm9kZU5hbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTdHJpbmc+IHRleHREYXRhOwogICAgIGRlY29kZXIgPj4gdGV4dERhdGE7CiAgICAgaWYg
KCF0ZXh0RGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBwYXRoSW5kZXg7CiAgICAg
ZGVjb2RlciA+PiBwYXRoSW5kZXg7CiAgICAgaWYgKCFwYXRoSW5kZXgpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKm5vZGVOYW1lKSwgV1RGTW92ZSgq
dGV4dERhdGEpLCAqcGF0aEluZGV4IH19OwogfQpAQCAtMTAzLDI3ICsxMDMsMjcgQEAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBBcHBIaWdo
bGlnaHRSYW5nZURhdGE6OmQKICAgICBPcHRpb25hbDxTdHJpbmc+IHRleHQ7CiAgICAgZGVjb2Rl
ciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE5vZGVQYXRoPiBz
dGFydENvbnRhaW5lcjsKICAgICBkZWNvZGVyID4+IHN0YXJ0Q29udGFpbmVyOwogICAgIGlmICgh
c3RhcnRDb250YWluZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7
CiAgICAgZGVjb2RlciA+PiBzdGFydE9mZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IGVuZENvbnRhaW5lcjsKICAgICBkZWNvZGVyID4+IGVu
ZENvbnRhaW5lcjsKICAgICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVu
c2lnbmVkPiBlbmRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBlbmRPZmZzZXQ7CiAgICAgaWYgKCFl
bmRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgq
c3RhcnRDb250YWluZXIpLCAqc3RhcnRPZmZzZXQsIFdURk1vdmUoKmVuZENvbnRhaW5lciksICpl
bmRPZmZzZXQgfX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdo
dC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCmluZGV4IGRhNGY3MGFjMmZjNjE2NzFmNzdhNzdi
MTcwNDY3OTY0Yjg5ZjM5NGQuLmFiMzdkZDIyODU2OTI1ZjlkZDE0OTNhMGE3NzgwMzk4YzAwMTQw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0Fw
cEhpZ2hsaWdodFN0b3JhZ2UuY3BwCkBAIC0xMTYsMTYgKzExNiwxNiBAQCBzdGF0aWMgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IGZpbmRSYW5nZUJ5SWRlbnRpZnlpbmdTdGFydEFuZEVuZFBvc2l0aW9u
cyhjb25zdCBBcAogewogICAgIGF1dG8gc3RhcnRDb250YWluZXIgPSBmaW5kTm9kZShyYW5nZS5z
dGFydENvbnRhaW5lcigpLCBkb2N1bWVudCk7CiAgICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gZW5kQ29udGFpbmVyID0gZmluZE5vZGUocmFuZ2UuZW5kQ29udGFpbmVyKCks
IGRvY3VtZW50KTsKICAgICBpZiAoIWVuZENvbnRhaW5lcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnQg
PSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oc3RhcnRDb250YWluZXIuZ2V0KCksIHJhbmdl
LnN0YXJ0T2Zmc2V0KCkpOwogICAgIGF1dG8gZW5kID0gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0
aW9uKGVuZENvbnRhaW5lci5nZXQoKSwgcmFuZ2UuZW5kT2Zmc2V0KCkpOwogICAgIGlmIChzdGFy
dC5pc09ycGhhbigpIHx8IGVuZC5pc09ycGhhbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1ha2VTaW1w
bGVSYW5nZShzdGFydCwgZW5kKTsKIH0KQEAgLTE1MCwxNCArMTUwLDE0IEBAIHN0YXRpYyBPcHRp
b25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlQnlTZWFyY2hpbmdUZXh0KGNvbnN0IEFwcEhpZ2hs
aWdodFJhbmdlRGF0CiAgICAgfQogCiAgICAgaWYgKCFmb3VuZEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGZvdW5kRWxlbWVudFJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpm
b3VuZEVsZW1lbnQpOwogICAgIGF1dG8gZm91bmRUZXh0ID0gcGxhaW5UZXh0KGZvdW5kRWxlbWVu
dFJhbmdlKTsKICAgICBpZiAoYXV0byBpbmRleCA9IGZvdW5kVGV4dC5maW5kKHJhbmdlLnRleHQo
KSk7IGluZGV4ICE9IG5vdEZvdW5kICYmIGluZGV4ID09IGZvdW5kVGV4dC5yZXZlcnNlRmluZChy
YW5nZS50ZXh0KCkpKQogICAgICAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKGZvdW5k
RWxlbWVudFJhbmdlLCB7IGluZGV4LCByYW5nZS50ZXh0KCkubGVuZ3RoKCkgfSk7CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRp
YyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmluZFJhbmdlKGNvbnN0IEFwcEhpZ2hsaWdodFJhbmdl
RGF0YSYgcmFuZ2UsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDllNzVjNzE5N2ZmOWI5ZDJiNTE0NGZj
MzRlZTdiMGUzZTBjZjhiM2UuLmUwNjVhNDg0ODNlZjhhZjUwOTMwMWYxMmIxNGQ5OThlYmZlMjEw
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cApAQCAtMzY5LDcgKzM2OSw3IEBAIE9wdGlvbmFsPElEQkdldFJlc3VsdD4gSURCQ3Vyc29yOjpp
dGVyYXRlV2l0aFByZWZldGNoZWRSZWNvcmRzKHVuc2lnbmVkIGNvdW50LCB1CiB7CiAgICAgdW5z
aWduZWQgc3RlcCA9IGNvdW50ID4gMCA/IGNvdW50IDogMTsKICAgICBpZiAoc3RlcCA+IG1fcHJl
ZmV0Y2hlZFJlY29yZHMuc2l6ZSgpIHx8IG1fcHJlZmV0Y2hPcGVyYXRpb25JRCA8PSBsYXN0V3Jp
dGVPcGVyYXRpb25JRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHdoaWxlICgtLXN0ZXApCiAgICAgICAgIG1fcHJlZmV0
Y2hlZFJlY29yZHMucmVtb3ZlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKaW5kZXggNDJkNGMwZTAx
OTg5OWI3MGViMGUzZGRlMjZhZmRkNTk1NmE0Y2FiNS4uYzJmMTcwNzRlOGViYmVhNjU4NzQ2MmUx
OGQ2MGNmOTA0ODAyZWRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmgKQEAgLTEyMywxNyArMTIzLDE3IEBA
IE9wdGlvbmFsPElEQkRhdGFiYXNlSWRlbnRpZmllcj4gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGRhdGFiYXNlTmFt
ZTsKICAgICBkZWNvZGVyID4+IGRhdGFiYXNlTmFtZTsKICAgICBpZiAoIWRhdGFiYXNlTmFtZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luOwogICAgIGRlY29kZXIgPj4g
b3JpZ2luOwogICAgIGlmICghb3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFu
c2llbnQ7CiAgICAgZGVjb2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIGlkZW50aWZpZXI7CiAgICAgaWRlbnRp
Zmllci5tX2RhdGFiYXNlTmFtZSA9IFdURk1vdmUoKmRhdGFiYXNlTmFtZSk7IC8vIEZJWE1FOiBX
aGVuIGRlY29kaW5nIGZyb20gSVBDLCBkYXRhYmFzZU5hbWUgY2FuIGJlIG51bGwsIGFuZCB0aGUg
bm9uLWVtcHR5IGNvbnN0cnVjdG9yIGFzc2VydHMgdGhhdCB0aGlzIGlzIG5vdCB0aGUgY2FzZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5k
ZXggNDM2ZmUwMTVkNDM5YmM4NmM0MTEwOGZjMDc4NmI1MDU2ODE2ZDM3OS4uMDU0NGVmMDY2YjM0
YTVlMWVlZGM5NTM4NTY0YmM4YTc2ZjIxMzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPElEQk9wZW5EQlJlcXVlc3Q+PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnQKICAgICBpZiAodmVyc2lvbiAmJiAhdmVyc2lvbi52YWx1ZSgpKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSURCRmFjdG9yeS5vcGVuKCkgY2Fs
bGVkIHdpdGggYSB2ZXJzaW9uIG9mIDAiX3MgfTsKIAotICAgIHJldHVybiBvcGVuSW50ZXJuYWwo
Y29udGV4dCwgbmFtZSwgdmVyc2lvbi52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gb3BlbkludGVy
bmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24udmFsdWVfb3IoMCkpOwogfQogCiBFeGNlcHRpb25P
cjxSZWY8SURCT3BlbkRCUmVxdWVzdD4+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZl
cnNpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgK
aW5kZXggZjZmYTFmZjgxMTQ4YWYyOGMwYmMxMGYwMTMxMjBlMGMwMDcyNjllMy4uMDQzZWM2YjZh
N2ZiN2Y0ZTYwZDY0NWNkOWQ1ZmM3YTVjMTQ3MDNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApAQCAtMjU1LDEzICsyNTUsMTMgQEAgT3B0aW9u
YWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgSURCS2V5RGF0YSBrZXlEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5t
X2lzTnVsbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoa2V5RGF0YS5tX2lzTnVsbCkKICAgICAgICAgcmV0dXJu
IGtleURhdGE7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEubV90eXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHN3aXRjaCAoa2V5RGF0YS5tX3R5cGUpIHsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6SW52YWxpZDoKQEAgLTI3MSwyMyArMjcxLDIzIEBAIE9wdGlvbmFsPElEQktleURhdGE+
IElEQktleURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpBcnJheToKICAgICAgICAga2V5RGF0YS5tX3ZhbHVlID0gVmVjdG9yPElEQktl
eURhdGE+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8VmVjdG9yPElE
QktleURhdGE+PihrZXlEYXRhLm1fdmFsdWUpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgogICAgICAgICBrZXlEYXRhLm1f
dmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihrZXlEYXRhLm1fdmFsdWUpKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3Ry
aW5nOgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBTdHJpbmcoKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShXVEY6OmdldDxTdHJpbmc+KGtleURhdGEubV92YWx1ZSkpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgog
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGtleURhdGEubV92
YWx1ZSA9IDAuMDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxkb3VibGU+
KGtleURhdGEubV92YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKaW5kZXggNjYxMzAy
NDA3NTdlOGQ1YmZiNjIwYThkMGUyYmY0ZjIyMjY2ZWJlOC4uMmE2NjQzMmI1YmQ5NzE5MmExYWI0
ZmY2MDkwYzBiZTk1ZDIzYmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWYWx1ZS5oCkBAIC03MiwxMyArNzIsMTMgQEAgT3B0aW9uYWw8SURCVmFsdWU+IElEQlZh
bHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJREJWYWx1ZSByZXN1bHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kYXRhKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fYmxvYlVSTHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV9ibG9iRmlsZVBhdGhzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcAppbmRleCA4YTlmZDhiZTQyYjI4YjViYmY4ZDJmMmI0NmQ5NGZj
ZmMwNDAwODY3Li4zZjcyYzcwYzZmNTE3M2Q4MDQwYTkxNWIwMTNmMmQxNDNjNjFjNzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSURCVmVyc2lvbkNoYW5nZUV2ZW50
OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1
ZXMKICAgICBpZiAobmV3VmVyc2lvbikKICAgICAgICAgbV9uZXdWZXJzaW9uID0gbmV3VmVyc2lv
bjsKICAgICBlbHNlCi0gICAgICAgIG1fbmV3VmVyc2lvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV9uZXdWZXJzaW9uID0gc3RkOjpudWxsb3B0OwogfQogCiBJREJWZXJzaW9uQ2hhbmdlRXZl
bnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBjb25zdCBJ
bml0JiBpbml0LCBJc1RydXN0ZWQgaXNUcnVzdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9y
ZUN1cnNvci5jcHAKaW5kZXggYTA1OWEwZDk1MGE3NjY4NzZhMGZmZDMyZWZhMGUxNjY5NTRlNDMw
Ny4uYjczYTllOGVmZmQ5NzRiOGY1M2IzODMyZGExZWY3Zjk1NzA0MThiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIE1lbW9yeU9iamVj
dFN0b3JlQ3Vyc29yOjpNZW1vcnlPYmplY3RTdG9yZUN1cnNvcihNZW1vcnlPYmplY3RTdG9yZSYg
b2JqZWN0U3RvcmUsCiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Om9iamVjdFN0b3Jl
Q2xlYXJlZCgpCiB7Ci0gICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJh
dG9yID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjpr
ZXlEZWxldGVkKGNvbnN0IElEQktleURhdGEmIGtleSkKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBN
ZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5RGVsZXRlZChjb25zdCBJREJLZXlEYXRhJiBrZXkp
CiAgICAgaWYgKG1fY3VycmVudFBvc2l0aW9uS2V5ICE9IGtleSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjprZXlBZGRlZChJREJL
ZXlEYXRhU2V0OjppdGVyYXRvciBpdGVyYXRvcikKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcjo6a2V5QWRkZWQoSURCS2V5RGF0YVNldDo6aXRlcmF0b3IgaXRl
cmF0b3IpCiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0SW5SZW1haW5p
bmdSYW5nZShJREJLZXlEYXRhU2V0JiBzZXQpCiB7Ci0gICAgbV9pdGVyYXRvciA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1faW5mby5p
c0RpcmVjdGlvbkZvcndhcmQoKSkgewogICAgICAgICBzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVt
YWluaW5nUmFuZ2Uoc2V0KTsKQEAgLTkzLDE5ICs5MywxOSBAQCB2b2lkIE1lbW9yeU9iamVjdFN0
b3JlQ3Vyc29yOjpzZXRGaXJzdEluUmVtYWluaW5nUmFuZ2UoSURCS2V5RGF0YVNldCYgc2V0KQog
dm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJhdG9yRnJvbVJlbWFp
bmluZ1JhbmdlKElEQktleURhdGFTZXQmIHNldCkKIHsKICAgICBpZiAoIXNldC5zaXplKCkpIHsK
LSAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9pdGVyYXRvciA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX3JlbWFp
bmluZ1JhbmdlLmlzRXhhY3RseU9uZUtleSgpKSB7CiAgICAgICAgIG1faXRlcmF0b3IgPSBzZXQu
ZmluZChtX3JlbWFpbmluZ1JhbmdlLmxvd2VyS2V5KTsKICAgICAgICAgaWYgKCptX2l0ZXJhdG9y
ID09IHNldC5lbmQoKSkKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3Ig
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGxvd2VzdCA9IHNldC5sb3dlcl9ib3VuZChtX3Jl
bWFpbmluZ1JhbmdlLmxvd2VyS2V5KTsKICAgICBpZiAobG93ZXN0ID09IHNldC5lbmQoKSkKQEAg
LTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZvcndh
cmRJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0CiB2b2lkIE1lbW9yeU9i
amVjdFN0b3JlQ3Vyc29yOjpzZXRSZXZlcnNlSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2UoSURC
S2V5RGF0YVNldCYgc2V0KQogewogICAgIGlmICghc2V0LnNpemUoKSkgewotICAgICAgICBtX2l0
ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNF
eGFjdGx5T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWlu
aW5nUmFuZ2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgp
KQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1f
aXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0
NiwxMiArMTQ2LDEyIEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldFJldmVyc2VJ
dGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0CiAgICAgaWYgKCFtX3JlbWFp
bmluZ1JhbmdlLnVwcGVyS2V5LmlzVmFsaWQoKSkgewogICAgICAgICBtX2l0ZXJhdG9yID0gLS1z
ZXQuZW5kKCk7CiAgICAgICAgIGlmICghbV9yZW1haW5pbmdSYW5nZS5jb250YWluc0tleSgqKm1f
aXRlcmF0b3IpKQotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgaXMgb25lIHJlY29yZCBwYXN0IHRoZSBhY3R1YWwg
a2V5IHdlJ3JlIGxvb2tpbmcgZm9yLgogICAgIGF1dG8gaGlnaGVzdCA9IHNldC51cHBlcl9ib3Vu
ZChtX3JlbWFpbmluZ1JhbmdlLnVwcGVyS2V5KTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIE1l
bW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRGb3J3YXJkSXRlcmF0b3IoSURCS2V5RGF0
YVNldCYgc2V0LCBjb25zdAogICAgICAgICArKyptX2l0ZXJhdG9yOwogCiAgICAgICAgIGlmICgq
bV9pdGVyYXRvciA9PSBzZXQuZW5kKCkgfHwgIW1faW5mby5yYW5nZSgpLmNvbnRhaW5zS2V5KCoq
bV9pdGVyYXRvcikpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3I6OmluY3JlbWVudFJldmVyc2VJdGVyYXRvcihJREJLZXlEYXRhU2V0JiBzZXQs
IGNvbnN0CiAKICAgICB3aGlsZSAoY291bnQpIHsKICAgICAgICAgaWYgKCptX2l0ZXJhdG9yID09
IHNldC5iZWdpbigpKSB7Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvcjo6aW5jcmVtZW50UmV2ZXJzZUl0ZXJhdG9yKElEQktleURhdGFTZXQmIHNldCwgY29u
c3QKICAgICAgICAgLS0qbV9pdGVyYXRvcjsKIAogICAgICAgICBpZiAoIW1faW5mby5yYW5nZSgp
LmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRvcikpIHsKLSAgICAgICAgICAgIG1faXRlcmF0b3IgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAppbmRleCAyOGI5OGM5NzZmYzZlOWNhM2QwY2FlYWQ1NmUyOTUzMDkyNjIwODY2
Li44ZTlhNWU3NDE2NzExMGIxNTJjNWMxMDQyYWE4ODAyZjU3NzQ1ODdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIE9wdGlvbmFsPElzU2No
ZW1hVXBncmFkZWQ+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRPYmplY3RTdG9y
ZUluZm9UYWJsCiAKICAgICBTdHJpbmcgdGFibGVTdGF0ZW1lbnQgPSBtX3NxbGl0ZURCLT50YWJs
ZVNRTCgiT2JqZWN0U3RvcmVJbmZvIl9zKTsKICAgICBpZiAodGFibGVTdGF0ZW1lbnQuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIGlmICh0YWJsZVN0YXRlbWVudCA9PSB2Mk9iamVjdFN0b3JlSW5m
b1NjaGVtYSB8fCB0YWJsZVN0YXRlbWVudCA9PSBjcmVhdGVWMk9iamVjdFN0b3JlSW5mb1NjaGVt
YShvYmplY3RTdG9yZUluZm9UYWJsZU5hbWVBbHRlcm5hdGUpKQogICAgICAgICByZXR1cm4geyBJ
c1NjaGVtYVVwZ3JhZGVkOjpObyB9OwpAQCAtNTA1LDIyICs1MDUsMjIgQEAgT3B0aW9uYWw8SXNT
Y2hlbWFVcGdyYWRlZD4gU1FMaXRlSURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0
b3JlSW5mb1RhYmwKIAogICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmRTbG93KGNy
ZWF0ZVYyT2JqZWN0U3RvcmVJbmZvU2NoZW1hKCJfVGVtcF9PYmplY3RTdG9yZUluZm8iX3MpKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5IE9iamVjdFN0
b3JlSW5mbyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICgh
bV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIklOU0VSVCBJTlRPIF9UZW1wX09iamVjdFN0b3Jl
SW5mbyAoaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmMpIFNFTEVDVCBpZCwgbmFtZSwga2V5UGF0
aCwgYXV0b0luYyBGUk9NIE9iamVjdFN0b3JlSW5mbyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJDb3VsZCBub3QgbWlncmF0ZSBleGlzdGluZyBPYmplY3RTdG9yZUluZm8gY29udGVudCAoJWkp
IC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNn
KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkRS
T1AgVEFCTEUgT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxk
IG5vdCBkcm9wIGV4aXN0aW5nIE9iamVjdFN0b3JlSW5mbyB0YWJsZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkFMVEVSIFRBQkxFIF9U
ZW1wX09iamVjdFN0b3JlSW5mbyBSRU5BTUUgVE8gT2JqZWN0U3RvcmVJbmZvIl9zKSkgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCByZW5hbWUgdGVtcG9yYXJ5IE9iamVjdFN0b3JlSW5m
byB0YWJsZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOwpA
QCAtOTQyLDE3ICs5NDIsMTcgQEAgT3B0aW9uYWw8SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbj4g
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVBbmRWZXJzaW8KICAgICBTUUxpdGVE
YXRhYmFzZSBkYXRhYmFzZTsKICAgICBpZiAoIWRhdGFiYXNlLm9wZW4oZGF0YWJhc2VQYXRoKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBw
YXRoICclcycgd2hlbiBnZXR0aW5nIGRhdGFiYXNlIG5hbWUiLCBkYXRhYmFzZVBhdGgudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGlmICghZGF0YWJhc2UudGFibGVFeGlzdHMoIklEQkRh
dGFiYXNlSW5mbyJfcykpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZmluZCBJREJE
YXRhYmFzZUluZm8gdGFibGUgYW5kIGdldCBkYXRhYmFzZSBuYW1lKCVpKSAtICVzIiwgZGF0YWJh
c2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBhdXRvIG5hbWVzcWwgPSBkYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgdmFsdWUg
RlJPTSBJREJEYXRhYmFzZUluZm8gV0hFUkUga2V5ID0gJ0RhdGFiYXNlTmFtZSc7Il9zKTsKICAg
ICBpZiAoIW5hbWVzcWwpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHJlcGFyZSBz
dGF0ZW1lbnQgdG8gZ2V0IGRhdGFiYXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0RXJy
b3IoKSwgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBhdXRvIGRhdGFi
YXNlTmFtZSA9IG5hbWVzcWwtPmNvbHVtblRleHQoMCk7CiAKQEAgLTk2MSw3ICs5NjEsNyBAQCBP
cHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmRhdGFiYXNlTmFtZUFuZFZlcnNpbwogICAgIGF1dG8gZGF0YWJhc2VWZXJzaW9uID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ2NF90PihzdHJpbmdWZXJzaW9uKTsKICAgICBpZiAoIWRhdGFiYXNlVmVyc2lv
bikgewogICAgICAgICBMT0dfRVJST1IoIkRhdGFiYXNlIHZlcnNpb24gb24gZGlzayAoJyVzJykg
ZG9lcyBub3QgY2xlYW5seSBjb252ZXJ0IHRvIGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHZl
cnNpb24iLCBzdHJpbmdWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uIHsgZGF0YWJhc2VOYW1lLCAqZGF0YWJhc2VW
ZXJzaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaAppbmRleCA0N2Rm
ZmZkODg4YmNjZWQzODFiNTE4MTRlNjMyOWNlMGNhNjBhYWJkLi45YzEwYjQzMDEzMjJkOWQ1ZjBm
NGI1ZTU2ZDE3OTk4NGIyOGI4YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uLmgKQEAgLTUxLDEwICs1MSwxMCBAQCBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJz
aW9uPiBJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uOjpkZWNvZGUoRGVjb2RlciYgZAogICAgIElE
QkRhdGFiYXNlTmFtZUFuZFZlcnNpb24gaW5mbzsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aW5mby5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby52ZXJzaW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBpbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCBmNTJjZTRkZDA2M2VhNTA5OTM0Njc1
ZTRlZGRlODk0M2FlZmE2NzdhLi43NGZjYzc0NzRmMGQ0OTBjMjcyYzgxY2MyNWE4NDY4Y2Q4NTVm
NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IElEQkVycm9yIHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJv
cihPcHRpb25hbDxFeGNlcHRpb25Db2RlPiA9IFdURjo6bnVsbG9wdCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJFcnJvcihPcHRp
b25hbDxFeGNlcHRpb25Db2RlPiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
ID0geyB9KTsKIAogICAgIHN0YXRpYyBJREJFcnJvciB1c2VyRGVsZXRlRXJyb3IoKQogICAgIHsK
QEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBJREJFcnJvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IElEQkVycm9yJiBlcnJvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZXJy
b3IubV9jb2RlID0gZWM7CiAgICAgfSBlbHNlCi0gICAgICAgIGVycm9yLm1fY29kZSA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgZXJyb3IubV9jb2RlID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShlcnJvci5tX21lc3NhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuaAppbmRleCBjYmJiMjA2NWRiMDQ5Y2Q5ZmRhOTJjY2MzNDAyMzVkMzE0NTc1
NmYzLi5iYjk0ZmE3MzczMWU2N2Q3MWNkZTI1ZGNkNzI0MjcxMzFjNGExMzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHRE
YXRhLmgKQEAgLTE2NSw2NyArMTY1LDY3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPElEQlJlc3VsdERhdGE+IElEQlJlc3VsdERhdGE6OmRlY29kZShEZWNvZGVyJiBkCiB7CiAg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9yZXF1ZXN0SWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX2Vycm9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX3Jlc3VsdEludGVnZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubV90eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzT2JqZWN0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNPYmplY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV9kYXRh
YmFzZUluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNPYmplY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0byBv
YmplY3QgPSBtYWtlVW5pcXVlPElEQlRyYW5zYWN0aW9uSW5mbz4oKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSgqb2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQubV90cmFu
c2FjdGlvbkluZm8gPSBXVEZNb3ZlKG9iamVjdCk7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShoYXNPYmplY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNPYmplY3QpIHsKICAgICAgICAgYXV0
byBvYmplY3QgPSBtYWtlVW5pcXVlPElEQktleURhdGE+KCk7CiAgICAgICAgIE9wdGlvbmFsPElE
QktleURhdGE+IG9wdGlvbmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAg
ICBpZiAoIW9wdGlvbmFsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICpvYmplY3QgPSBXVEZNb3ZlKCpv
cHRpb25hbCk7CiAgICAgICAgIHJlc3VsdC5tX3Jlc3VsdEtleSA9IFdURk1vdmUob2JqZWN0KTsK
ICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0UmVz
dWx0PigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJlc3VsdC5tX2dldFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc09iamVj
dCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8SURCR2V0QWxsUmVzdWx0Pigp
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmplY3QpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJlc3VsdC5tX2dldEFsbFJlc3VsdCA9IFdURk1vdmUob2JqZWN0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFD
b250cm9sc0hvc3QuY3BwCmluZGV4IDJhZmU3ZWJkNWVhNTI0Y2VmMGU4NzViYTJkY2E5NjhjN2Fj
NDVjNDcuLjlmYmZmYzEwMDA0ZTQ0MTg0MTU4MTA3MjNmOTVhZjg0M2NlNDQzYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29u
dHJvbHNIb3N0LmNwcApAQCAtNTQwLDE0ICs1NDAsMTQgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9z
dDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJp
bmcKICAgICBWZWN0b3I8TWVudUl0ZW0+IGl0ZW1zOwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNF
TlRBVElPTl9NT0RFKQotICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVhbigiaW5j
bHVkZVBpY3R1cmVJblBpY3R1cmUiX3MpLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgaWYgKG9wdGlv
bnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlUGljdHVyZUluUGljdHVyZSJfcykudmFs
dWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIEFTU0VSVChpczxIVE1MVmlkZW9FbGVtZW50PihtZWRp
YUVsZW1lbnQpKTsKICAgICAgICAgQVNTRVJUKGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KG1l
ZGlhRWxlbWVudCkud2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25Nb2RlKEhUTUxWaWRlb0VsZW1l
bnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZSkpOwogICAgICAgICBp
dGVtcy5hcHBlbmQoY3JlYXRlTWVudUl0ZW0oUGljdHVyZUluUGljdHVyZVRhZzo6SW5jbHVkZVBp
Y3R1cmVJblBpY3R1cmUsIFdFQl9VSV9TVFJJTkdfS0VZKCJQaWN0dXJlIGluIFBpY3R1cmUiLCAi
UGljdHVyZSBpbiBQaWN0dXJlIChNZWRpYSBDb250cm9scyBNZW51KSIsICJQaWN0dXJlIGluIFBp
Y3R1cmUgbWVkaWEgY29udHJvbHMgY29udGV4dCBtZW51IHRpdGxlIiksIGZhbHNlLCAicGlwLmVu
dGVyIl9zKSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkKIAotICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVhbigiaW5jbHVkZUxhbmd1
YWdlcyJfcykudmFsdWVPcihmYWxzZSkpIHsKKyAgICBpZiAob3B0aW9uc0pTT05PYmplY3QtPmdl
dEJvb2xlYW4oImluY2x1ZGVMYW5ndWFnZXMiX3MpLnZhbHVlX29yKGZhbHNlKSkgewogICAgICAg
ICBpZiAoYXV0byogYXVkaW9UcmFja3MgPSBtZWRpYUVsZW1lbnQuYXVkaW9UcmFja3MoKTsgYXVk
aW9UcmFja3MgJiYgYXVkaW9UcmFja3MtPmxlbmd0aCgpID4gMSkgewogICAgICAgICAgICAgVmVj
dG9yPE1lbnVJdGVtPiBsYW5ndWFnZU1lbnVJdGVtczsKIApAQCAtNTYwLDcgKzU2MCw3IEBAIGJv
b2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoSFRNTEVs
ZW1lbnQmIHRhcmdldCwgU3RyaW5nCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAob3B0aW9u
c0pTT05PYmplY3QtPmdldEJvb2xlYW4oImluY2x1ZGVTdWJ0aXRsZXMiX3MpLnZhbHVlT3IoZmFs
c2UpKSB7CisgICAgaWYgKG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlU3Vi
dGl0bGVzIl9zKS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgaWYgKGF1dG8qIHRleHRUcmFj
a3MgPSBtZWRpYUVsZW1lbnQudGV4dFRyYWNrcygpOyB0ZXh0VHJhY2tzICYmIHRleHRUcmFja3Mt
Pmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBWZWN0b3I8TWVudUl0ZW0+IHN1YnRpdGxlTWVudUl0
ZW1zOwogCkBAIC01OTEsNyArNTkxLDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpICYmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRF
WFRfTUVOVVMpCi0gICAgaWYgKChpdGVtcy5zaXplKCkgPT0gMSAmJiBpdGVtc1swXS50eXBlKCkg
PT0gU3VibWVudVR5cGUpIHx8IG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJwcm9tb3Rl
U3ViTWVudXMiX3MpLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgaWYgKChpdGVtcy5zaXplKCkgPT0g
MSAmJiBpdGVtc1swXS50eXBlKCkgPT0gU3VibWVudVR5cGUpIHx8IG9wdGlvbnNKU09OT2JqZWN0
LT5nZXRCb29sZWFuKCJwcm9tb3RlU3ViTWVudXMiX3MpLnZhbHVlX29yKGZhbHNlKSkgewogICAg
ICAgICBmb3IgKGF1dG8mJiBpdGVtIDogc3RkOjpleGNoYW5nZShpdGVtcywgeyB9KSkgewogICAg
ICAgICAgICAgaWYgKCFpdGVtcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgaXRlbXMuYXBw
ZW5kKHsgU2VwYXJhdG9yVHlwZSwgaW52YWxpZE1lbnVJdGVtSWRlbnRpZmllciwgLyogdGl0bGUg
Ki8gbnVsbFN0cmluZygpIH0pOwpAQCAtNjU0LDcgKzY1NCw3IEBAIGJvb2wgTWVkaWFDb250cm9s
c0hvc3Q6OnNob3dNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnUoSFRNTEVsZW1lbnQmIHRhcmdldCwg
U3RyaW5nCiAjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCiAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkuc2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShib3VuZHMsIFdURk1vdmUoaXRlbXMpLCBX
VEZNb3ZlKGhhbmRsZUl0ZW1TZWxlY3RlZCkpOwogI2VsaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
ICYmIFVTRShBQ0NFU1NJQklMSVRZX0NPTlRFWFRfTUVOVVMpCi0gICAgdGFyZ2V0LmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmNvbnRleHRtZW51RXZlbnQsIE1lZGlhQ29udHJvbHNDb250
ZXh0TWVudUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVQcm92
aWRlcjo6Y3JlYXRlKFdURk1vdmUoaXRlbXMpLCBXVEZNb3ZlKGhhbmRsZUl0ZW1TZWxlY3RlZCkp
KSwgeyAvKmNhcHR1cmUgKi8gdHJ1ZSwgLyogcGFzc2l2ZSAqLyBXVEY6Om51bGxvcHQsIC8qIG9u
Y2UgKi8gdHJ1ZSB9KTsKKyAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Y29udGV4dG1lbnVFdmVudCwgTWVkaWFDb250cm9sc0NvbnRleHRNZW51RXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKE1lZGlhQ29udHJvbHNDb250ZXh0TWVudVByb3ZpZGVyOjpjcmVhdGUoV1RGTW92ZShp
dGVtcyksIFdURk1vdmUoaGFuZGxlSXRlbVNlbGVjdGVkKSkpLCB7IC8qY2FwdHVyZSAqLyB0cnVl
LCAvKiBwYXNzaXZlICovIHN0ZDo6bnVsbG9wdCwgLyogb25jZSAqLyB0cnVlIH0pOwogICAgIHBh
Z2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLnNob3dDb250ZXh0TWVudUF0KCp0YXJnZXQuZG9j
dW1lbnQoKS5mcmFtZSgpLCBib3VuZHMuY2VudGVyKCkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlci5oCmluZGV4
IDM0MzQzNDJlNDFmNjcxZGMyNTE2NjcwNDQ1YTRkZDk4MTUyMjFhNzEuLmI4OWQ1MTNmYTA1ZmNj
ZTY3NTI5Mjc4MTZhNTFmNGRmYWE5NzExYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaApAQCAtNzUsOCArNzUsOCBAQCBw
dWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcGF1c2VSZWNvcmRpbmcoKTsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZXN1bWVSZWNvcmRpbmcoKTsKIAotICAgIHVuc2lnbmVkIHZpZGVvQml0
c1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy52aWRlb0JpdHNQZXJTZWNvbmQu
dmFsdWVPcigwKTsgfQotICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZCgpIGNvbnN0IHsg
cmV0dXJuIG1fb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQudmFsdWVPcigwKTsgfQorICAgIHVu
c2lnbmVkIHZpZGVvQml0c1BlclNlY29uZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy52aWRl
b0JpdHNQZXJTZWNvbmQudmFsdWVfb3IoMCk7IH0KKyAgICB1bnNpZ25lZCBhdWRpb0JpdHNQZXJT
ZWNvbmQoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuYXVkaW9CaXRzUGVyU2Vjb25kLnZhbHVl
X29yKDApOyB9CiAKICAgICBNZWRpYVN0cmVhbSYgc3RyZWFtKCkgeyByZXR1cm4gbV9zdHJlYW0u
Z2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhU2Vzc2lvbi5jcHAKaW5kZXggNWQwNDY4NTAxMGUwMWIzOWIwMmUxN2E3NzBkODA0MTA1
YWI2NmIxNC4uZWZlMDU4ODA1OTFmYTkwNjgyNzI5NmY1MzE2MjUzMDFhYTkzOTg2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24u
Y3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpz
ZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4mJgogICAgICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ7IH0iKTsKIAogICAgIGlmICghc3RhdGUpIHsKLSAg
ICAgICAgbV9wb3NpdGlvblN0YXRlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc2l0aW9u
U3RhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG5vdGlmeVBvc2l0aW9uU3RhdGVPYnNlcnZl
cnMoKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0zMjEsNyArMzIxLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFTZXNzaW9uOjpzZXRQb3NpdGlvblN0YXRlKE9wdGlvbmFsPE1l
ZGlhUG9zaXRpb25TdGF0ZT4mJgogT3B0aW9uYWw8ZG91YmxlPiBNZWRpYVNlc3Npb246OmN1cnJl
bnRQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Bvc2l0aW9uU3RhdGUgfHwgIW1fbGFz
dFJlcG9ydGVkUG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGFjdHVhbFBsYXliYWNrUmF0ZSA9IG1f
cGxheWJhY2tTdGF0ZSA9PSBNZWRpYVNlc3Npb25QbGF5YmFja1N0YXRlOjpQbGF5aW5nID8gbV9w
b3NpdGlvblN0YXRlLT5wbGF5YmFja1JhdGUgOiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0NhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwCmluZGV4IDQwMjZkOWE0NDE0N2UwNjk2MDI4ZWMxNjk2NWQ0YmI1YWEz
MWNhZDkuLmM4NTI0NWVkZmQxYWE2ODQwMTBhNTgxNWY3MDMxOTM2YTczZTBlZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlh
U3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Q2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgY29u
c3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1U
cmFjazo6U291cmNlOjpzZXR0aW4KIHZvaWQgQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2s6
OlNvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55
KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRp
YVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCi0gICAgICAgIG1fY3VycmVudFNldHRp
bmdzID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpj
YW52YXNSZXNpemVkKENhbnZhc0Jhc2UmIGNhbnZhcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDc2Y2M1
ODVhNzA1NmI5ODc5YjJkYzllMTA5YWY1NzA1ZWJhN2Q2YmQuLjkyYzhkZjhiYjExYjBkNjFjYjc0
NzRkNDlkZmFhNTVlZDU2ZmY4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBA
IHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBPcHRpb25hbDxN
ZWRpYVRyYWNrQ29uc3RyYWludHM+JiBjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgbV9wcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIG1fY29uc3RyYWludHMgPSBj
b25zdHJhaW50cy52YWx1ZU9yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOworICAgICAgICBt
X2NvbnN0cmFpbnRzID0gY29uc3RyYWludHMudmFsdWVfb3IoTWVkaWFUcmFja0NvbnN0cmFpbnRz
IHsgfSk7CiAgICAgfTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoY3JlYXRlTWVk
aWFDb25zdHJhaW50cyhjb25zdHJhaW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNl
Q2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNl
Q2FuZGlkYXRlLmNwcAppbmRleCA5YzQ4ZTVhNDZhMDYyZjdkZmUzYTZjYjZmNWEzYmIzZjViZjE1
MTIyLi43YzA1OTEzNGMwN2Y2OTMzOTlkZjQ4YTQ0ODBlODliMDg1MTU3NDNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJY2VDYW5kaWRhdGU+PiBS
VENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBSVENJY2VDYW5kaWRhdGVJCiAgICAgaWYgKGRp
Y3Rpb25hcnkuc2RwTWlkLmlzTnVsbCgpICYmICFkaWN0aW9uYXJ5LnNkcE1MaW5lSW5kZXgpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJDYW5kaWRhdGUgbXVzdCBub3Qg
aGF2ZSBib3RoIG51bGwgc2RwTWlkIGFuZCBzZHBNTGluZUluZGV4IiB9OwogCi0gICAgYXV0byBm
aWVsZHMgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChkaWN0aW9uYXJ5LmNhbmRpZGF0ZSkudmFsdWVP
cihSVENJY2VDYW5kaWRhdGU6OkZpZWxkcyB7IH0pOworICAgIGF1dG8gZmllbGRzID0gcGFyc2VJ
Y2VDYW5kaWRhdGVTRFAoZGljdGlvbmFyeS5jYW5kaWRhdGUpLnZhbHVlX29yKFJUQ0ljZUNhbmRp
ZGF0ZTo6RmllbGRzIHsgfSk7CiAgICAgZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQgPSBkaWN0aW9u
YXJ5LnVzZXJuYW1lRnJhZ21lbnQ7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2Fu
ZGlkYXRlKGRpY3Rpb25hcnkuY2FuZGlkYXRlLCBkaWN0aW9uYXJ5LnNkcE1pZCwgZGljdGlvbmFy
eS5zZHBNTGluZUluZGV4LCBXVEZNb3ZlKGZpZWxkcykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKaW5k
ZXggZjYxNDI1YWNkM2VjZTc5MzRkYjAzZTJmNGMzZGQ2YjhiNzExYWY0OS4uMzY3NmFiNDVjMmQ2
OTRmNWY2OWViZjgwZGY5OWU3YzA2YzJjYmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gUlRDUnRwVHJhbnNjZWl2ZXI6OmRp
cmVjdGlvbigpIGNvbnN0CiBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRD
UnRwVHJhbnNjZWl2ZXI6OmN1cnJlbnREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9i
YWNrZW5kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBtX2JhY2tlbmQtPmN1cnJlbnREaXJlY3Rpb24oKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcAppbmRl
eCBjYTIyZjBhOGM5M2RkZWU5MjkwNWE0MTcwOWY0NzljYjY3NWJmNWEwLi5iNjg3ODAyYjY0NzQ0
MmJhMmJkNGYwNDE4OTUxMTg1MzI5ZDY1ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZDo6c2V0UGFyYW1ldGVycyhjb25zdCBSVENSdHBTZW5kUGFyYW1l
dGVycyYgcGFyYW1lCiAKICAgICBhdXRvIHJ0Y1BhcmFtZXRlcnMgPSBXVEZNb3ZlKCptX2N1cnJl
bnRQYXJhbWV0ZXJzKTsKICAgICB1cGRhdGVSVENSdHBTZW5kUGFyYW1ldGVycyhwYXJhbWV0ZXJz
LCBydGNQYXJhbWV0ZXJzKTsKLSAgICBtX2N1cnJlbnRQYXJhbWV0ZXJzID0gV1RGOjpudWxsb3B0
OworICAgIG1fY3VycmVudFBhcmFtZXRlcnMgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGVy
cm9yID0gbV9ydGNTZW5kZXItPlNldFBhcmFtZXRlcnMocnRjUGFyYW1ldGVycyk7CiAgICAgaWYg
KCFlcnJvci5vaygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJh
bnNjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCBkMzI5ZjBjOWZiMzI0N2M0MmNkNzdjOTZkMGI5YTg3
NzZlMGQ3MjYyLi42M2U0Y2U3MjBjMjhiYjM1M2YzODgzNTA2ZGYzNjQwNDNiY2RiOTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24+
IExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDo6Y3VycmVudERpcmUKIHsKICAgICBhdXRv
IHZhbHVlID0gbV9ydGNUcmFuc2NlaXZlci0+Y3VycmVudF9kaXJlY3Rpb24oKTsKICAgICBpZiAo
IXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB0b1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uKCp2YWx1
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGF5bWVudHJlcXVl
c3QvUGF5bWVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVx
dWVzdC9QYXltZW50UmVxdWVzdC5jcHAKaW5kZXggZWJiYTg0NzZjOTVjNjZjZDliZjBkN2UzNjhk
YjRlNDNkNGFkMzAyYy4uOWI5MDIyMDBmZGM4YWQyMTMyNDhiYWZhM2RjYjc5ZjZkZDM2NzVkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9Q
YXltZW50UmVxdWVzdC5jcHAKQEAgLTE4MCwxMyArMTgwLDEzIEBAIE9wdGlvbmFsPFBheW1lbnRS
ZXF1ZXN0OjpNZXRob2RJZGVudGlmaWVyPiBjb252ZXJ0QW5kVmFsaWRhdGVQYXltZW50TWV0aG9k
SWRlbnRpCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGlmIChpc1ZhbGlkU3Rh
bmRhcmRpemVkUGF5bWVudE1ldGhvZElkZW50aWZpZXIoaWRlbnRpZmllcikpCiAgICAgICAgICAg
ICByZXR1cm4geyBpZGVudGlmaWVyIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGlzVmFsaWRVUkxC
YXNlZFBheW1lbnRNZXRob2RJZGVudGlmaWVyKHVybCkpCiAgICAgICAgIHJldHVybiB7IFdURk1v
dmUodXJsKSB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBlbnVtIGNsYXNzIElzVXBkYXRlIHsKQEAgLTIyOSw3ICsyMjksNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp0dXBsZTxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+Pj4gY2hl
Y2tBbmRDYW5vbmljYWxpemVEZXRhaQogICAgICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09IElz
VXBkYXRlOjpObykKICAgICAgICAgICAgIGRldGFpbHMuc2hpcHBpbmdPcHRpb25zID0geyB7IH0g
fTsKICAgICB9IGVsc2UgaWYgKGlzVXBkYXRlID09IElzVXBkYXRlOjpObykKLSAgICAgICAgZGV0
YWlscy5zaGlwcGluZ09wdGlvbnMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRldGFpbHMuc2hp
cHBpbmdPcHRpb25zID0gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gc2VyaWFs
aXplZE1vZGlmaWVyRGF0YTsKICAgICBpZiAoZGV0YWlscy5tb2RpZmllcnMpIHsKQEAgLTQ1Myw3
ICs0NTMsNyBAQCB2b2lkIFBheW1lbnRSZXF1ZXN0OjpzZXR0bGVTaG93UHJvbWlzZShFeGNlcHRp
b25PcjxQYXltZW50UmVzcG9uc2UmPiYmIHJlc3VsdCkKIAogdm9pZCBQYXltZW50UmVxdWVzdDo6
Y2xvc2VBY3RpdmVQYXltZW50SGFuZGxlcigpCiB7Ci0gICAgaWYgKGF1dG8gYWN0aXZlUGF5bWVu
dEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIFdURjo6bnVs
bG9wdCkpCisgICAgaWYgKGF1dG8gYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fYWN0aXZlUGF5bWVudEhhbmRsZXIsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIGFjdGl2ZVBh
eW1lbnRIYW5kbGVyLT5wYXltZW50SGFuZGxlci0+aGlkZSgpOwogCiAgICAgbV9pc1VwZGF0aW5n
ID0gZmFsc2U7CkBAIC01MjgsNyArNTI4LDcgQEAgT3B0aW9uYWw8UGF5bWVudFNoaXBwaW5nVHlw
ZT4gUGF5bWVudFJlcXVlc3Q6OnNoaXBwaW5nVHlwZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fb3B0
aW9ucy5yZXF1ZXN0U2hpcHBpbmcpCiAgICAgICAgIHJldHVybiBtX29wdGlvbnMuc2hpcHBpbmdU
eXBlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBQYXltZW50UmVxdWVzdDo6c2hpcHBpbmdBZGRyZXNzQ2hhbmdlZChSZWY8UGF5
bWVudEFkZHJlc3M+JiYgc2hpcHBpbmdBZGRyZXNzKQpAQCAtNzMyLDcgKzczMiw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0Ojpjb21wbGV0ZShPcHRpb25hbDxQYXltZW50Q29t
cGxldGU+JiYgcmVzdWx0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9
OwogCiAgICAgYWN0aXZlUGF5bWVudEhhbmRsZXIoKS0+Y29tcGxldGUoV1RGTW92ZShyZXN1bHQp
KTsKLSAgICBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyID0gV1RGOjpudWxsb3B0OworICAgIG1fYWN0
aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApA
QCAtNzQ4LDcgKzc0OCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBheW1lbnRSZXF1ZXN0OjpyZXRy
eShQYXltZW50VmFsaWRhdGlvbkVycm9ycyYmIGVycm9ycykKIAogdm9pZCBQYXltZW50UmVxdWVz
dDo6Y2FuY2VsKCkKIHsKLSAgICBtX2FjdGl2ZVBheW1lbnRIYW5kbGVyID0gV1RGOjpudWxsb3B0
OworICAgIG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
bV9pc1VwZGF0aW5nKSB7CiAgICAgICAgIG1faXNDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uRXJy
b3IuaAppbmRleCBkZjJkMzJmOGM2NGM5ZTRkYjBiMzBlZDMwNzRiMGJmZGVkODdiM2MyLi43NjM0
YmQwMDMzMzdiYmZmYjI3MTZjZjA3MjQxZWZkMDI4YmIxYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oCkBAIC02
MCwxMiArNjAsMTIgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4gU3BlZWNoUmVj
b2duaXRpb25FcnJvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIKICAgICBPcHRpb25hbDxTcGVl
Y2hSZWNvZ25pdGlvbkVycm9yVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAg
aWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOwogICAgIGRlY29k
ZXIgPj4gbWVzc2FnZTsKICAgICBpZiAoIW1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIFNw
ZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqbWVzc2FnZSkg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJl
Y29nbml0aW9uUmVxdWVzdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8uaAppbmRleCBlN2Q0MGJmMDM4NjNkY2YzYzdkMDM3
ZTE0MjRmZDhhZWEzYmM2MzU4Li45NDI2Yzk0Yzc5YjQzODM4YWYzMDdkOTJiN2Y3NDAzYjU3MDQ4
ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlcXVlc3RJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mby5oCkBAIC01NiwzNyArNTYsMzcgQEAgT3B0aW9u
YWw8U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5mbz4gU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0
SW5mbzo6ZGVjb2RlKERlY28KICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rp
b25DbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gY2xp
ZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTdHJpbmc+IGxhbmc7CiAgICAgZGVjb2RlciA+PiBsYW5nOwogICAgIGlmICghbGFuZykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGNvbnRpbnVvdXM7CiAgICAgZGVjb2RlciA+PiBjb250
aW51b3VzOwogICAgIGlmICghY29udGludW91cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlu
dGVyaW1SZXN1bHRzOwogICAgIGRlY29kZXIgPj4gaW50ZXJpbVJlc3VsdHM7CiAgICAgaWYgKCFp
bnRlcmltUmVzdWx0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtYXhBbHRlcm5hdGl2
ZXM7CiAgICAgZGVjb2RlciA+PiBtYXhBbHRlcm5hdGl2ZXM7CiAgICAgaWYgKCFtYXhBbHRlcm5h
dGl2ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDbGllbnRPcmlnaW4+IGNsaWVudE9yaWdpbjsKICAg
ICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAoIWNsaWVudE9yaWdpbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gZnJhbWVJZGVudGlmaWVyOwogICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmNsaWVudElkZW50aWZpZXIpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGEuaAppbmRleCA2MTQ0ZDFmZjA3MDY4OWNhYmJiODE2YzRmYmEyOTcyM2FhNDNm
MWIyLi41YWE0ODUyMGNiOGY2Nzc2ZDMwNTM4NGQ3NDY5NDE0MzczNWM3MGQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGEuaApAQCAtNDYsMTAgKzQ2LDEwIEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmVEYXRhPiBTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YTo6ZGVj
CiB7CiAgICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgcmVzdWx0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zY3JpcHQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY29uZmlkZW5jZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtNzMsMTAgKzczLDEwIEBAIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0
YT4gU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhOjpkZWNvZGUoRGVjb2RlCiB7CiAgICAgU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5hbHRlcm5hdGl2ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaXNGaW5hbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKaW5k
ZXggODkxNDkxNzkzZjRlMDFlYzJmZjYwMTA3Y2I0ODVmNDg4ZmE0M2U4NC4uYzI5YmIyNWEzMTY0
YzRhMWMyZTFhZTEyYThiNjBiYzkwNTQzOTQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oCkBAIC04NCwxNyAr
ODQsMTcgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25VcGRhdGU+IFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU+IHR5cGU7CiAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENv
bnRlbnQ+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50OwogICAgIGlmICghY29udGVu
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSB7IFdURk1vdmUoKmNs
aWVudElkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqY29udGVudCkgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml6ZXIuaApp
bmRleCBiZGM0YjlhZjJjNWFmZmYwYzNkNjg2NzY0OThiNWQ3Yjk3NzRlOWQyLi5hNmI4ODIwZGMx
Y2QzZjdiNTQ4ZWNhZjMwM2Q5NDE0NWMyZjQxMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnQoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGJvb2wgbW9ja1NwZWVjaFJlY29nbml0aW9u
RW5hYmxlZCk7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFib3J0KE9wdGlvbmFs
PFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25FcnJvcj4mJiA9IHN0
ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CmluZGV4IGRjNmYwMmQ3YWE0OGI1MDU2MDg4ZDhlYzA0OThhMjAyNWNiZWQxYjIuLjA5MmM3ZDZm
ZjRlMGJlMGNlZTc5ZTk5ZmJmYTVhNTQ0MzI4MzIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAg
LTQ2MCw3ICs0NjAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk9mZgogRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzdGFydFBsYXlpbmcoZG91YmxlIHdoZW4sIGRvdWJs
ZSBncmFpbk9mZnNldCwgT3B0aW9uYWw8ZG91YmxlPiBncmFpbkR1cmF0aW9uKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAid2hl
biA9ICIsIHdoZW4sICIsIG9mZnNldCA9ICIsIGdyYWluT2Zmc2V0LCAiLCBkdXJhdGlvbiA9ICIs
IGdyYWluRHVyYXRpb24udmFsdWVPcigwKSk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAid2hlbiA9ICIsIHdoZW4sICIsIG9mZnNldCA9ICIsIGdyYWluT2Zmc2V0LCAiLCBkdXJhdGlv
biA9ICIsIGdyYWluRHVyYXRpb24udmFsdWVfb3IoMCkpOwogCiAgICAgaWYgKG1fcGxheWJhY2tT
dGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiQ2Fubm90IGNhbGwgc3RhcnQgbW9yZSB0aGFuIG9uY2UuIl9zIH07
CkBAIC00ODEsNyArNDgxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzdGFydFBsYXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk8KIAogICAgIG1faXNH
cmFpbiA9IHRydWU7CiAgICAgbV9ncmFpbk9mZnNldCA9IGdyYWluT2Zmc2V0OwotICAgIG1fZ3Jh
aW5EdXJhdGlvbiA9IGdyYWluRHVyYXRpb24udmFsdWVPcigwKTsKKyAgICBtX2dyYWluRHVyYXRp
b24gPSBncmFpbkR1cmF0aW9uLnZhbHVlX29yKDApOwogICAgIG1fd2FzR3JhaW5EdXJhdGlvbkdp
dmVuID0gISFncmFpbkR1cmF0aW9uOwogICAgIG1fc3RhcnRUaW1lID0gd2hlbjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IGZlYmEzMzBl
ZDAyMGE3YTY5YTQ0M2YzMjJlZGFkZDdlMWE5NmQ2ZWMuLjA2MDRmNWFjNzhmZDQ3NGQ4MjExZTQ1
YTljYzk2MTJlMmUwZmNlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHAKQEAgLTY3NCwxNSArNjc0LDE1IEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZldpdGhMb2NrKCkKIAogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpoYW5kbGVBdWRpb05v
ZGVPcHRpb25zKGNvbnN0IEF1ZGlvTm9kZU9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IERlZmF1bHRB
dWRpb05vZGVPcHRpb25zJiBkZWZhdWx0cykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IHNldENoYW5u
ZWxDb3VudChvcHRpb25zLmNoYW5uZWxDb3VudC52YWx1ZU9yKGRlZmF1bHRzLmNoYW5uZWxDb3Vu
dCkpOworICAgIGF1dG8gcmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50KG9wdGlvbnMuY2hhbm5lbENv
dW50LnZhbHVlX29yKGRlZmF1bHRzLmNoYW5uZWxDb3VudCkpOwogICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwog
Ci0gICAgcmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50TW9kZShvcHRpb25zLmNoYW5uZWxDb3VudE1v
ZGUudmFsdWVPcihkZWZhdWx0cy5jaGFubmVsQ291bnRNb2RlKSk7CisgICAgcmVzdWx0ID0gc2V0
Q2hhbm5lbENvdW50TW9kZShvcHRpb25zLmNoYW5uZWxDb3VudE1vZGUudmFsdWVfb3IoZGVmYXVs
dHMuY2hhbm5lbENvdW50TW9kZSkpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgcmVzdWx0ID0g
c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKG9wdGlvbnMuY2hhbm5lbEludGVycHJldGF0aW9uLnZh
bHVlT3IoZGVmYXVsdHMuY2hhbm5lbEludGVycHJldGF0aW9uKSk7CisgICAgcmVzdWx0ID0gc2V0
Q2hhbm5lbEludGVycHJldGF0aW9uKG9wdGlvbnMuY2hhbm5lbEludGVycHJldGF0aW9uLnZhbHVl
X29yKGRlZmF1bHRzLmNoYW5uZWxJbnRlcnByZXRhdGlvbikpOwogICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1U
aW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1U
aW1lbGluZS5jcHAKaW5kZXggN2EwNGE1YWZiNDkyYzMyNDNkYTA4MWVhZDc3MDU2MWVlZmJiYzU3
ZS4uNTRmY2FiYTQ1MjRmZDI4ODA3YjM3OTFlOWUyZjk0YmMyMDAxOTc4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNw
cApAQCAtMjYyLDcgKzI2Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6Y2FuY2VsQW5kSG9sZEF0VGltZShTZWNvbmRzIGNhbmNlbFRpbWUpCiAgICAgICAgICAgICAv
LyB3ZSBnZXQgdGhlcmUuCiAgICAgICAgICAgICArK2NhbmNlbGxlZEV2ZW50SW5kZXg7CiAKLSAg
ICAgICAgICAgIG5ld0V2ZW50ID0gUGFyYW1FdmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQo
Y2FuY2VsVGltZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG5ld0V2ZW50ID0gUGFyYW1F
dmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQoY2FuY2VsVGltZSwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODUsNyArMjg1LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxBbmRIb2xkQXRUaW1lKFNl
Y29uZHMgY2FuY2VsVGltZSkKICAgICAgICAgICAgICAgICBmbG9hdCBlbmRWYWx1ZSA9IHZhbHVl
Q3VydmVBdFRpbWUoY2FuY2VsVGltZSwgY2FuY2VsbGVkRXZlbnQudGltZSgpLCBjYW5jZWxsZWRF
dmVudC5kdXJhdGlvbigpLCBjYW5jZWxsZWRFdmVudC5jdXJ2ZSgpLmRhdGEoKSwgY2FuY2VsbGVk
RXZlbnQuY3VydmUoKS5zaXplKCkpOwogCiAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUg
ZXhpc3RpbmcgU2V0VmFsdWVDdXJ2ZSB3aXRoIHRoaXMgbmV3IG9uZSB0aGF0IGlzIGlkZW50aWNh
bCBleGNlcHQgZm9yIHRoZSBkdXJhdGlvbi4KLSAgICAgICAgICAgICAgICBuZXdFdmVudCA9IFBh
cmFtRXZlbnQgeyBldmVudFR5cGUsIGNhbmNlbGxlZEV2ZW50LnZhbHVlKCksIGNhbmNlbGxlZEV2
ZW50LnRpbWUoKSwgY2FuY2VsbGVkRXZlbnQudGltZUNvbnN0YW50KCksIG5ld0R1cmF0aW9uLCBW
ZWN0b3I8ZmxvYXQ+IHsgY2FuY2VsbGVkRXZlbnQuY3VydmUoKSB9LCBjYW5jZWxsZWRFdmVudC5j
dXJ2ZVBvaW50c1BlclNlY29uZCgpLCBlbmRWYWx1ZSwgV1RGOjpudWxsb3B0IH07CisgICAgICAg
ICAgICAgICAgbmV3RXZlbnQgPSBQYXJhbUV2ZW50IHsgZXZlbnRUeXBlLCBjYW5jZWxsZWRFdmVu
dC52YWx1ZSgpLCBjYW5jZWxsZWRFdmVudC50aW1lKCksIGNhbmNlbGxlZEV2ZW50LnRpbWVDb25z
dGFudCgpLCBuZXdEdXJhdGlvbiwgVmVjdG9yPGZsb2F0PiB7IGNhbmNlbGxlZEV2ZW50LmN1cnZl
KCkgfSwgY2FuY2VsbGVkRXZlbnQuY3VydmVQb2ludHNQZXJTZWNvbmQoKSwgZW5kVmFsdWUsIHN0
ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgICAgIG5ld1NldFZhbHVlRXZlbnQgPSBQYXJhbUV2
ZW50OjpjcmVhdGVTZXRWYWx1ZUV2ZW50KGVuZFZhbHVlLCBjYW5jZWxsZWRFdmVudC50aW1lKCkg
KyBuZXdEdXJhdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMyOCwxMCArMzI4
LDEwIEBAIE9wdGlvbmFsPGZsb2F0PiBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4
dFRpbWUoQmFzZUF1ZGlvQ29udGV4dCYgY29udGV4CiB7CiAgICAgewogICAgICAgICBpZiAoIW1f
ZXZlbnRzTG9jay50cnlMb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IEFkb3B0TG9jaywgbV9ldmVudHNMb2NrIH07CiAgICAgICAgIGlmICghbV9ldmVudHMuc2l6ZSgp
IHx8IFNlY29uZHMgeyBjb250ZXh0LmN1cnJlbnRUaW1lKCkgfSA8IG1fZXZlbnRzWzBdLnRpbWUo
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEFzayBmb3IganVzdCBhIHNpbmdsZSB2YWx1
ZS4KQEAgLTkwNCwxNyArOTA0LDE3IEBAIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpoYW5kbGVD
YW5jZWxWYWx1ZXMoUGFyYW1FdmVudCYgZXZlbnQsIFBhcmFtRXZlbnQqIG5leHRFCiAKIGF1dG8g
QXVkaW9QYXJhbVRpbWVsaW5lOjpQYXJhbUV2ZW50OjpjcmVhdGVTZXRWYWx1ZUV2ZW50KGZsb2F0
IHZhbHVlLCBTZWNvbmRzIHRpbWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4gUGFyYW1F
dmVudCB7IFBhcmFtRXZlbnQ6OlNldFZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0s
IFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gUGFy
YW1FdmVudCB7IFBhcmFtRXZlbnQ6OlNldFZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7
IH0sIFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBB
dWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUxpbmVhclJhbXBFdmVudChmbG9h
dCB2YWx1ZSwgU2Vjb25kcyB0aW1lKSAtPiBQYXJhbUV2ZW50CiB7Ci0gICAgcmV0dXJuIHsgUGFy
YW1FdmVudDo6TGluZWFyUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwg
VmVjdG9yPGZsb2F0PiB7IH0sIDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBh
cmFtRXZlbnQ6OkxpbmVhclJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25kcyB7IH0s
IFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0byBBdWRp
b1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUV4cG9uZW50aWFsUmFtcEV2ZW50KGZs
b2F0IHZhbHVlLCBTZWNvbmRzIHRpbWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4geyBQ
YXJhbUV2ZW50OjpFeHBvbmVudGlhbFJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwgU2Vjb25k
cyB7IH0sIFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1
cm4geyBQYXJhbUV2ZW50OjpFeHBvbmVudGlhbFJhbXBUb1ZhbHVlLCB2YWx1ZSwgdGltZSwgMCwg
U2Vjb25kcyB7IH0sIFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0K
IAogYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFRhcmdldEV2
ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcyB0aW1lLCBmbG9hdCB0aW1lQ29uc3RhbnQpIC0+IFBh
cmFtRXZlbnQKQEAgLTkyMiwxNCArOTIyLDE0IEBAIGF1dG8gQXVkaW9QYXJhbVRpbWVsaW5lOjpQ
YXJhbUV2ZW50OjpjcmVhdGVTZXRUYXJnZXRFdmVudChmbG9hdCB0YXJnZXQsIFNlY29uZHMKICAg
ICAvLyBUaGUgdGltZSBsaW5lIGNvZGUgZG9lcyBub3QgZXhwZWN0IGEgdGltZUNvbnN0YW50IG9m
IDAuIChJdCByZXR1cm5zIE5hTiBvciBJbmZpbml0eSBkdWUgdG8gZGl2aXNpb24gYnkgemVyby4g
VGhlIGNhbGxlcgogICAgIC8vIHNob3VsZCBoYXZlIGNvbnZlcnRlZCB0aGlzIHRvIGEgU2V0VmFs
dWVFdmVudC4KICAgICBBU1NFUlQoISF0aW1lQ29uc3RhbnQpOwotICAgIHJldHVybiB7IFBhcmFt
RXZlbnQ6OlNldFRhcmdldCwgdGFyZ2V0LCB0aW1lLCB0aW1lQ29uc3RhbnQsIFNlY29uZHMgeyB9
LCBWZWN0b3I8ZmxvYXQ+IHsgfSwgMCwgMCwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsg
UGFyYW1FdmVudDo6U2V0VGFyZ2V0LCB0YXJnZXQsIHRpbWUsIHRpbWVDb25zdGFudCwgU2Vjb25k
cyB7IH0sIFZlY3RvcjxmbG9hdD4geyB9LCAwLCAwLCBzdGQ6Om51bGxvcHQgfTsKIH0KIAogYXV0
byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVlQ3VydmVFdmVu
dChWZWN0b3I8ZmxvYXQ+JiYgY3VydmUsIFNlY29uZHMgdGltZSwgU2Vjb25kcyBkdXJhdGlvbikg
LT4gUGFyYW1FdmVudAogewogICAgIGRvdWJsZSBjdXJ2ZVBvaW50c1BlclNlY29uZCA9IChjdXJ2
ZS5zaXplKCkgLSAxKSAvIGR1cmF0aW9uLnZhbHVlKCk7CiAgICAgZmxvYXQgY3VydmVFbmRWYWx1
ZSA9IGN1cnZlLmxhc3QoKTsKLSAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpTZXRWYWx1ZUN1cnZl
LCAwLCB0aW1lLCAwLCBkdXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSksIGN1cnZlUG9pbnRzUGVyU2Vj
b25kLCBjdXJ2ZUVuZFZhbHVlLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBQYXJhbUV2
ZW50OjpTZXRWYWx1ZUN1cnZlLCAwLCB0aW1lLCAwLCBkdXJhdGlvbiwgV1RGTW92ZShjdXJ2ZSks
IGN1cnZlUG9pbnRzUGVyU2Vjb25kLCBjdXJ2ZUVuZFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKIH0K
IAogYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZUNhbmNlbFZhbHVl
c0V2ZW50KFNlY29uZHMgY2FuY2VsVGltZSwgT3B0aW9uYWw8U2F2ZWRFdmVudD4mJiBzYXZlZEV2
ZW50KSAtPiBQYXJhbUV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDIwNzBmYzdjMTA5
ODExZWQ5MzM2ZTUxMGY5ZGJmNmYzODMzNmIxMTcuLmQ0NmQ4Mzg1MWJkMGFhMzFlNzNmZGQ0Mzg0
N2VkMjgxNzBkZjM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC0xOTUsNyArMTk1LDcg
QEAgdm9pZCBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6aGFuZGxlUG9zdFJlbmRlclRhc2tzKHNp
emVfdCBjdXJyZW50RnJhbWUpCiAgICAgICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxv
d2luZyBhbGxvY2F0aW9uKHMpLgogICAgICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9y
Q3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7CiAgICAgICAgIC8v
IFRoaXMgdGFrZXMgY2FyZSBvZiBwcm9jZXNzaW5nIHRoZSBNaWNyb1Rhc2sgcXVldWUgYWZ0ZXIg
cmVuZGVyaW5nLgotICAgICAgICBtX2xvY2tEdXJpbmdSZW5kZXJpbmcgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fbG9ja0R1cmluZ1JlbmRlcmluZyA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmFzZUF1ZGlv
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250
ZXh0LmgKaW5kZXggZmFiNzdhOTNiY2MzMTIxZGZhMjg4YzE4MjhkMjNlNTU1OGRmOWZiOS4uMzJm
YTJjYzY5YmJlNDIyN2VlOTdiYjk0YTk0YzEwNTlkNTAyYzRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKQEAgLTExNiw3ICsx
MTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwog
CiAgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KLSAgICB2b2lk
IGRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNh
bGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgT3B0aW9uYWw8UmVmPERl
ZmVycmVkUHJvbWlzZT4+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgZGVjb2RlQXVkaW9E
YXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBPcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNl
Pj4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBBdWRpb0xpc3RlbmVyJiBsaXN0ZW5lcigpIHsg
cmV0dXJuIG1fbGlzdGVuZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4
IDcyOGJiOTI4NmEzNTVkMDA3ZDljYjAxODEzNWNmNmMxOTM0YjFhNzguLmI2MGMyMmEzNzFjNWY5
Mjg1NGJmYzM2ZTBjNWM4MzY3YzY0NzVmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAKIERlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgT3B0aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUpCi0gICAgOiBBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLnZhbHVlT3IoQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkpKQorICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZS52YWx1ZV9vcihBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJh
dGUoKSkpCiB7CiAgICAgQVNTRVJUKEJhc2VBdWRpb0NvbnRleHQ6OmlzU3VwcG9ydGVkU2FtcGxl
UmF0ZShBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkpOwogICAgIGluaXRp
YWxpemVEZWZhdWx0Tm9kZU9wdGlvbnMoMiwgQ2hhbm5lbENvdW50TW9kZTo6RXhwbGljaXQsIENo
YW5uZWxJbnRlcnByZXRhdGlvbjo6U3BlYWtlcnMpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkF1ZGlvRGVzdGluYXRpb25Ob2RlIGlzIG5vdCBp
bml0aWFsaXplZCJfcyB9KTsKIAogICAgIGF1dG8gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShib29sIHN1Y2Nl
c3MpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8gV1RGOjpu
dWxsb3B0IDogbWFrZU9wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFp
bGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdWNjZXNzID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZp
Y2UiX3MgfSkpOwogICAgIH07CiAKICAgICBtX3dhc0Rlc3RpbmF0aW9uU3RhcnRlZCA9IHRydWU7
CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJl
c3VtZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPEV4Y2VwdGkKICAgICB9CiAgICAg
bV93YXNEZXN0aW5hdGlvblN0YXJ0ZWQgPSB0cnVlOwogICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0
KGRpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IFdURjo6bnVsbG9wdCA6IG1ha2VPcHRpb25h
bChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdGFydCB0aGUgYXVk
aW8gZGV2aWNlIl9zIH0pKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IHN0
ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIkZhaWxlZCB0byBzdGFydCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKICAgICB9KTsK
IH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0CiAKICAgICBt
X3dhc0Rlc3RpbmF0aW9uU3RhcnRlZCA9IGZhbHNlOwogICAgIG1fZGVzdGluYXRpb24tPnN0b3Ao
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3Vj
Y2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBXVEY6
Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJG
YWlsZWQgdG8gc3RvcCB0aGUgYXVkaW8gZGV2aWNlIl9zIH0pKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3VjY2VzcyA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdG9wIHRoZSBhdWRpbyBkZXZp
Y2UiX3MgfSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBl
NWU0Nzg1OGEwMTYwMmJhNjgyMjQxMjQxODIxZDdjODUyY2VmYTVmLi44Y2YxNDg5M2VjNWMzZGVm
YTRkOTBlMDhhNTRiM2QzZmQwZGYwNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSwgcHVi
bGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIGV4cGxpY2l0IERlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0
ZSA9IFdURjo6bnVsbG9wdCk7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dCYsIE9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gc3RkOjpudWxs
b3B0KTsKICAgICB+RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKICAgICBBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBhZWZl
MmE4NDM2ZDM2NWUxODY4MTMyNjdlMzhhYzg2MTc0YmJmZWY1Li43Y2JhNDFjOTNjMzdiYmRmYWI2
MDA5NDdjMTgxMzEwNTIyYjFhNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBA
IC0xNDEsMTIgKzE0MSwxMiBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Rh
cnRSZW5kZXJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbAogICAgICAgICB3b3Jr
bGV0UHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3BlKFtvZmZUaHJlYWRS
ZW5kZXJpbmcgPSBXVEZNb3ZlKG9mZlRocmVhZFJlbmRlcmluZyldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgICAgIG9mZlRocmVhZFJlbmRlcmluZygpOwogICAg
ICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKLSAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cHJvYmFibHkgbGltaXQgdGhlIG51bWJlciBvZiB0aHJlYWRzIHdlIGNyZWF0ZSBmb3Igb2ZmbGlu
ZSBhdWRpby4KICAgICBtX3JlbmRlclRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJvZmZsaW5lIHJl
bmRlcmVyIiwgV1RGTW92ZShvZmZUaHJlYWRSZW5kZXJpbmcpLCBUaHJlYWRUeXBlOjpBdWRpbywg
VGhyZWFkOjpRT1M6OkRlZmF1bHQpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogYXV0byBPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlck9uQXVkaW9UaHJlYWQoKSAtPiBSZW5kZXJS
ZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCmluZGV4IGRi
YmVlMzNiMzc0ZTNiZTJlNTAxNWRlNzVlYTBmNjM4ZDRhMTc3OTUuLjlkZmJjZmE1NmY0MWUxOTE1
ZmM5OTVmNGZhNDMwN2I0NzA0NmU3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHMuaApAQCAtNTMsMTMgKzUzLDEzIEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudElucHV0cz4gQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5w
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBhcHBpZDsKICAgICBkZWNvZGVyID4+IGFwcGlkOwogICAg
IGlmICghYXBwaWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmFwcGlkID0gV1RGTW92ZSgqYXBwaWQpOwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogICAgIGRlY29kZXIg
Pj4gZ29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0OwogICAgIGlmICghZ29vZ2xlTGVnYWN5QXBwaWRT
dXBwb3J0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC5nb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQgPSBXVEZNb3Zl
KCpnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAppbmRleCAxYzBjMDQxZWNiMzdlOTE4MTY2YTVh
YjNlYzA0ZDllZGZhYjVlMGU5Li4wYmYyM2YwMjg1NmI4MDA3NWFkYzZhYzA5ZGRlNzRlMWVmMzgz
YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiB1c2Vy
aGFuZGxlQnVmZmVyOwogICAgIGlmICghdXNlckhhbmRsZS5pc0VtcHR5KCkpCiAgICAgICAgIHVz
ZXJoYW5kbGVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHVzZXJIYW5kbGUuZGF0YSgpLCB1
c2VySGFuZGxlLnNpemUoKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRl
KHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50
aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVy
OjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNl
cmhhbmRsZUJ1ZmZlciksIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIGNyZWF0ZShBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNy
ZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0b3JEYXRhLnNpemUoKSks
IEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLnNpemUoKSks
IFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIFJlZjxBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVz
ZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJv
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKaW5kZXggMjc2NDJlOGJiMjU0NDY3ZWQ1NTgyNDE5Mjgz
YjY5N2YzNDViNmFhYi4uNjFhMWJiYjAyNGE2ZmE1MDMxYmMxMDk0YjgyM2Q4MTU3Zjc2NGViYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRo
ZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAgLTEyMSw1MSArMTIxLDUxIEBAIE9wdGlvbmFsPEF1
dGhlbnRpY2F0b3JSZXNwb25zZURhdGE+IEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGE6OmRlY29k
ZShEZWNvZGVyJiBkCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNFbXB0eTsKICAgICBkZWNvZGVyID4+
IGlzRW1wdHk7CiAgICAgaWYgKCFpc0VtcHR5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc0VtcHR5LnZhbHVlKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICByZXN1bHQucmF3SWQgPSBkZWNvZGVBcnJh
eUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC5yYXdJZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgZGVjb2Rl
ciA+PiBpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOwogICAgIGlmICghaXNBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaXNBdXRoZW50aWNh
dG9yQXR0ZXN0YXRpb25SZXNwb25zZSA9IGlzQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2UudmFsdWUoKTsKIAogICAgIGlmIChyZXN1bHQuaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25S
ZXNwb25zZSkgewogICAgICAgICByZXN1bHQuYXR0ZXN0YXRpb25PYmplY3QgPSBkZWNvZGVBcnJh
eUJ1ZmZlcihkZWNvZGVyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuYXR0ZXN0YXRpb25PYmplY3Qp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICByZXN1bHQu
YXV0aGVudGljYXRvckRhdGEgPSBkZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAo
IXJlc3VsdC5hdXRoZW50aWNhdG9yRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJlc3VsdC5zaWduYXR1cmUgPSBk
ZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC5zaWduYXR1cmUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gYXBwaWQ7CiAgICAgZGVjb2RlciA+PiBh
cHBpZDsKICAgICBpZiAoIWFwcGlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hcHBpZCA9IFdURk1vdmUoKmFw
cGlkKTsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGhhc1VzZXJIYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBoYXNVc2VySGFuZGxlOwogICAgIGlmICghaGFzVXNlckhhbmRsZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoISpo
YXNVc2VySGFuZGxlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgcmVzdWx0LnVzZXJI
YW5kbGUgPSBkZWNvZGVBcnJheUJ1ZmZlcihkZWNvZGVyKTsKICAgICBpZiAoIXJlc3VsdC51c2Vy
SGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmgKaW5kZXggYmJlOTIyMTA2NzM3YmRlYzMzMWJhODY4YmU3YWFmZDdk
NGQwYjJlMy4uNzI4NDA2NzQ5MzdmMjk0ZmIzMjVlYzZhODg1NjZiODlmMmZkMDI3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKQEAgLTEwMSw5ICsxMDEsOSBAQCBP
cHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzPiBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYQogewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM6OlBhcmFtZXRlcnMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsZykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxLDE3ICsxMjEsMTcgQEAgT3B0aW9uYWw8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNy
aXRlcmlhPiBQdWIKICAgICBPcHRpb25hbDxPcHRpb25hbDxBdXRoZW50aWNhdG9yQXR0YWNobWVu
dD4+IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OwogICAgIGRlY29kZXIgPj4gYXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ7CiAgICAgaWYgKCFhdXRoZW50aWNhdG9yQXR0YWNobWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuYXV0aGVudGljYXRvckF0dGFjaG1lbnQgPSBXVEZNb3ZlKCphdXRoZW50aWNhdG9yQXR0
YWNobWVudCk7CiAKICAgICBPcHRpb25hbDxib29sPiByZXF1aXJlUmVzaWRlbnRLZXk7CiAgICAg
ZGVjb2RlciA+PiByZXF1aXJlUmVzaWRlbnRLZXk7CiAgICAgaWYgKCFyZXF1aXJlUmVzaWRlbnRL
ZXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmVzdWx0LnJlcXVpcmVSZXNpZGVudEtleSA9ICpyZXF1aXJlUmVzaWRlbnRL
ZXk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyVmVyaWZpY2F0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNTAsNDcgKzE1MCw0NyBAQCBPcHRpb25h
bDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zOgogewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnMgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJwLmlkKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ycC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5ycC5pY29uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC51c2VyLmlkVmVjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51
c2VyLmRpc3BsYXlOYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2Vy
Lm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuaWNvbikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHViS2V5Q3JlZFBhcmFtcykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAgZGVjb2RlciA+
PiB0aW1lb3V0OwogICAgIGlmICghdGltZW91dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudGltZW91dCA9IFdU
Rk1vdmUoKnRpbWVvdXQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhjbHVk
ZUNyZWRlbnRpYWxzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JT
ZWxlY3Rpb25Dcml0ZXJpYT4+IGF1dGhlbnRpY2F0b3JTZWxlY3Rpb247CiAgICAgZGVjb2RlciA+
PiBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOwogICAgIGlmICghYXV0aGVudGljYXRvclNlbGVjdGlv
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbiA9IFdURk1vdmUoKmF1dGhl
bnRpY2F0b3JTZWxlY3Rpb24pOwogCiAgICAgT3B0aW9uYWw8QXR0ZXN0YXRpb25Db252ZXlhbmNl
UHJlZmVyZW5jZT4gYXR0ZXN0YXRpb247CiAgICAgZGVjb2RlciA+PiBhdHRlc3RhdGlvbjsKICAg
ICBpZiAoIWF0dGVzdGF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hdHRlc3RhdGlvbiA9IFdURk1vdmUo
KmF0dGVzdGF0aW9uKTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0
ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVuc2lvbnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNp
b25zOwogICAgIGlmICghZXh0ZW5zaW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdU
Rk1vdmUoKmV4dGVuc2lvbnMpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3IuaAppbmRleCA5YzViNTFjYWMzZjRkNzQ5MzM1ZjVhYTRhYWQwZGQwZDQ2ZTE4
NTJiLi4zMmJiNzI4YWJlODE2Njk1MmNkNTk3NTFjY2E4ZDk0ZjhjNmRmZDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlD
cmVkZW50aWFsRGVzY3JpcHRvci5oCkBAIC01NywxMSArNTcsMTEgQEAgT3B0aW9uYWw8UHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpk
ZWNvZGUoRGUKIHsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciByZXN1bHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaWRWZWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnRyYW5zcG9ydHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCmluZGV4IGNlMTQwODQxN2I3OTBjNWJkOWQ1ZjFlNzI0
ZGI0ZmE1Y2FiNWUzNzcuLmVhMjUyYTRmMzM1YTYyNDQzZjFiYmE1YjhlZTA3YmVmOTcxZWY3NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaApAQCAtNjYsMjQgKzY2LDI0
IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4gUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zOjpkCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWdu
ZWQ+PiB0aW1lb3V0OwogICAgIGRlY29kZXIgPj4gdGltZW91dDsKICAgICBpZiAoIXRpbWVvdXQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LnRpbWVvdXQgPSBXVEZNb3ZlKCp0aW1lb3V0KTsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJwSWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmFsbG93Q3JlZGVudGlhbHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VXNlclZlcmlmaWNh
dGlvblJlcXVpcmVtZW50PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNlclZl
cmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJWZXJpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVz
ZXJWZXJpZmljYXRpb24gPSBXVEZNb3ZlKCp1c2VyVmVyaWZpY2F0aW9uKTsKIAogICAgIE9wdGlv
bmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4+IGV4dGVu
c2lvbnM7CiAgICAgZGVjb2RlciA+PiBleHRlbnNpb25zOwogICAgIGlmICghZXh0ZW5zaW9ucykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdURk1vdmUoKmV4dGVuc2lvbnMpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vYXBkdS9BcGR1Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2FwZHUvQXBkdUNvbW1hbmQuY3BwCmluZGV4IDk1OGIzMjc2Nzg1YjI4NjA4Zjc1OTFiYzI2ZjI3
NWQ2NzEwZTI4YzIuLjczZDI2M2ZjMjJjOTFlZDAzZDFmOTNiNjI4ZjBmODg3YzM1Y2E0ZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21t
YW5kLmNwcApAQCAtNTAsNyArNTAsNyBAQCB1aW50MTZfdCBwYXJzZU1lc3NhZ2VMZW5ndGgoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlLCBzaXplX3Qgb2Zmc2V0KQogT3B0aW9uYWw8QXBk
dUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpIDwga0FwZHVNaW5IZWFk
ZXIgfHwgbWVzc2FnZS5zaXplKCkgPiBrQXBkdU1heExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ4X3Qg
Y2xhID0gbWVzc2FnZVswXTsKICAgICB1aW50OF90IGlucyA9IG1lc3NhZ2VbMV07CkBAIC02Nywx
MiArNjcsMTIgQEAgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9t
TWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3MKICAgICAvLyBJbnZhbGlkIGVuY29k
aW5nIHNpemVzLgogICAgIGNhc2Uga0FwZHVNaW5IZWFkZXIgKyAxOgogICAgIGNhc2Uga0FwZHVN
aW5IZWFkZXIgKyAyOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIE5vIGRhdGEgcHJlc2VudDsgcmVzcG9uc2UgZXhwZWN0
ZWQuCiAgICAgY2FzZSBrQXBkdU1pbkhlYWRlciArIDM6CiAgICAgICAgIC8vIEZpZnRoIGJ5dGUg
bXVzdCBiZSAwLgogICAgICAgICBpZiAobWVzc2FnZVs0XSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXNwb25zZUxlbmd0aCA9IHBhcnNlTWVzc2FnZUxlbmd0aChtZXNzYWdlLCBrQXBkdUNvbW1hbmRM
ZW5ndGhPZmZzZXQpOwogICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlcmUgcmVzcG9uc2UgbGVu
Z3RoIG9mIDB4MDAwMCBjb3JyZXNwb25kcyB0byA2NTUzNgogICAgICAgICAvLyBhcyBkZWZpbmVk
IGluIElTTzc4MTYtNC4KQEAgLTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFw
ZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3MK
ICAgICBkZWZhdWx0OgogICAgICAgICAvLyBGaWZ0aCBieXRlIG11c3QgYmUgMC4KICAgICAgICAg
aWYgKG1lc3NhZ2VbNF0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcGFy
c2VNZXNzYWdlTGVuZ3RoKG1lc3NhZ2UsIGtBcGR1Q29tbWFuZExlbmd0aE9mZnNldCk7CiAKICAg
ICAgICAgaWYgKG1lc3NhZ2Uuc2l6ZSgpID09IGRhdGFMZW5ndGggKyBrQXBkdUNvbW1hbmREYXRh
T2Zmc2V0KSB7CkBAIC05OCw3ICs5OCw3IEBAIE9wdGlvbmFsPEFwZHVDb21tYW5kPiBBcGR1Q29t
bWFuZDo6Y3JlYXRlRnJvbU1lc3NhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzCiAgICAg
ICAgICAgICBpZiAoIXJlc3BvbnNlTGVuZ3RoKQogICAgICAgICAgICAgICAgIHJlc3BvbnNlTGVu
Z3RoID0ga0FwZHVNYXhSZXNwb25zZUxlbmd0aDsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2FwZHUvQXBkdVJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vYXBkdS9BcGR1UmVzcG9uc2UuY3BwCmluZGV4IDRlYjc0NzViMjJmNWIxYjUz
MGEzNTllY2U1NTA3ZjJkMmM0YWY2MzguLjkzYTVmYWFkNGMxNWQ1NWRjYjc3ZjdlODJlODA0MDAz
Mzk5OGI3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBk
dS9BcGR1UmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
YXBkdS9BcGR1UmVzcG9uc2UuY3BwCkBAIC00MSw3ICs0MSw3IEBAIE9wdGlvbmFsPEFwZHVSZXNw
b25zZT4gQXBkdVJlc3BvbnNlOjpjcmVhdGVGcm9tTWVzc2FnZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGRhCiB7CiAgICAgLy8gSW52YWxpZCBtZXNzYWdlIHNpemUsIGRhdGEgaXMgYXBwZW5kZWQg
Ynkgc3RhdHVzIGJ5dGUuCiAgICAgaWYgKGRhdGEuc2l6ZSgpIDwgMikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQx
Nl90IHN0YXR1c0J5dGVzID0gZGF0YVtkYXRhLnNpemUoKSAtIDJdIDw8IDg7CiAgICAgc3RhdHVz
Qnl0ZXMgfD0gZGF0YVtkYXRhLnNpemUoKSAtIDFdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3BwCmluZGV4IDU5ZDZjNDIxMTEyNGJh
NDhmZWQyMzgxMTk1YjhhZjEzZjJlMjg2OGMuLmVlNTgzMjBhZTM4ZTlhMTljNDI2ZDlkNmRiZjBh
YTc2N2Q3M2UzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Y2Jvci9DQk9SUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUlJlYWRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVl
PiBDQk9SUmVhZGVyOjpyZWFkKGNvbnN0IEJ5dGVzJiBkYXRhLCBEZWNvZGVyRXJyb3IqIGVycm9y
Q29kZU8KICAgICAgICAgKmVycm9yQ29kZU91dCA9IHJlYWRlci5nZXRFcnJvckNvZGUoKTsKIAog
ICAgIGlmIChyZWFkZXIuZ2V0RXJyb3JDb2RlKCkgIT0gRGVjb2RlckVycm9yOjpDQk9STm9FcnJv
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gZGVjb2RlZENib3I7CiB9CiAKQEAgLTk5LDEyICs5OSwxMiBAQCBP
cHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1IoaW50IG1heE5lc3RpbmdM
ZXZlbCkKIHsKICAgICBpZiAobWF4TmVzdGluZ0xldmVsIDwgMCB8fCBtYXhOZXN0aW5nTGV2ZWwg
PiBrQ0JPUk1heERlcHRoKSB7CiAgICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpU
b29NdWNoTmVzdGluZzsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoIWNhbkNvbnN1bWUoMSkpIHsKICAg
ICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29tcGxldGVDQk9SRGF0YTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBjb25zdCB1aW50OF90IGluaXRpYWxCeXRlID0gKm1faXQrKzsKQEAgLTEx
Myw3ICsxMTMsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRlY29kZUNCT1Io
aW50IG1heE5lc3RpbmdMZXZlbCkKIAogICAgIHVpbnQ2NF90IHZhbHVlOwogICAgIGlmICghcmVh
ZFZhcmlhZGljTGVuZ3RoSW50ZWdlcihhZGRpdGlvbmFsSW5mbywgJnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHN3aXRjaCAobWFqb3JfdHlwZSkgewogICAgIGNhc2UgQ0JPUlZhbHVlOjpUeXBlOjpVbnNpZ25l
ZDoKQEAgLTEzNSw3ICsxMzUsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OmRl
Y29kZUNCT1IoaW50IG1heE5lc3RpbmdMZXZlbCkKICAgICB9CiAKICAgICBtX2Vycm9yQ29kZSA9
IERlY29kZXJFcnJvcjo6VW5zdXBwb3J0ZWRNYWpvclR5cGU7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIENCT1JSZWFkZXI6OnJl
YWRWYXJpYWRpY0xlbmd0aEludGVnZXIodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3Qq
IHZhbHVlKQpAQCAtMTc4LDcgKzE3OCw3IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRl
cjo6ZGVjb2RlVmFsdWVUb05lZ2F0aXZlKHVpbnQ2NF90IHZhbHVlKQogewogICAgIGlmICh2YWx1
ZSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSkpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6Ok91dE9mUmFuZ2VJ
bnRlZ2VyVmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBDQk9SVmFsdWUoLXN0YXRpY19jYXN0
PGludDY0X3Q+KHZhbHVlKSAtIDEpOwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPENC
T1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlVmFsdWVUb1Vuc2lnbmVkKHVpbnQ2NF90IHZhbHVl
KQogewogICAgIGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptYXgoKSkpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVy
RXJyb3I6Ok91dE9mUmFuZ2VJbnRlZ2VyVmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBDQk9S
VmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBA
QCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTaW1wbGVWYWx1ZSh1aW50OF90
IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdAogICAgIC8vIEZsb2F0aW5nIHBvaW50IG51bWJlcnMg
YXJlIG5vdCBzdXBwb3J0ZWQuCiAgICAgaWYgKGFkZGl0aW9uYWxJbmZvID4gMjQgJiYgYWRkaXRp
b25hbEluZm8gPCAyOCkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VW5z
dXBwb3J0ZWRGbG9hdGluZ1BvaW50VmFsdWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVNTRVJUKHZhbHVl
IDw9IDI1NXUpOwpAQCAtMjExLDE0ICsyMTEsMTQgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9S
UmVhZGVyOjpyZWFkU2ltcGxlVmFsdWUodWludDhfdCBhZGRpdGlvbmFsSW5mbywgdWludDY0X3QK
ICAgICB9CiAKICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6VW5zdXBwb3J0ZWRTaW1w
bGVWYWx1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZFN0cmluZyh1aW50
NjRfdCBudW1CeXRlcykKIHsKICAgICBpZiAoIWNhbkNvbnN1bWUobnVtQnl0ZXMpKSB7CiAgICAg
ICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpJbmNvbXBsZXRlQ0JPUkRhdGE7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgQVNTRVJUKG51bUJ5dGVzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOwpAQCAtMjI5LDE0ICsyMjksMTQgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9S
UmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKQogICAgIC8vIE5vdCB0byBjb25m
dXNlIGl0IHdpdGggYW4gYWN0dWFsIGVtcHR5IFdURlN0cmluZy4KICAgICBpZiAoIW51bUJ5dGVz
IHx8IGhhc1ZhbGlkVVRGOEZvcm1hdChjYm9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIENCT1JW
YWx1ZShXVEZNb3ZlKGNib3JTdHJpbmcpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRl
cjo6cmVhZEJ5dGVzKHVpbnQ2NF90IG51bUJ5dGVzKQogewogICAgIGlmICghY2FuQ29uc3VtZShu
dW1CeXRlcykpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OkluY29tcGxl
dGVDQk9SRGF0YTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBCeXRlcyBjYm9yQnl0ZVN0cmluZzsKQEAgLTI1
Myw3ICsyNTMsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRDQk9SQXJy
YXkodWludDY0X3QgbGVuZ3RoLCBpbnQgbWF4TmVzdGluZ0xldgogICAgIHdoaWxlIChsZW5ndGgt
LSA+IDApIHsKICAgICAgICAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBjYm9yRWxlbWVudCA9IGRlY29k
ZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CiAgICAgICAgIGlmICghY2JvckVsZW1lbnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgY2JvckFycmF5LmFwcGVuZChXVEZNb3ZlKGNib3JFbGVtZW50LnZh
bHVlKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJheSkp
OwpAQCAtMjY2LDE1ICsyNjYsMTUgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpy
ZWFkQ0JPUk1hcCh1aW50NjRfdCBsZW5ndGgsIGludCBtYXhOZXN0aW5nTGV2ZWwKICAgICAgICAg
T3B0aW9uYWw8Q0JPUlZhbHVlPiBrZXkgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEp
OwogICAgICAgICBPcHRpb25hbDxDQk9SVmFsdWU+IHZhbHVlID0gZGVjb2RlQ0JPUihtYXhOZXN0
aW5nTGV2ZWwgLSAxKTsKICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbHVlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgLy8gT25seSBDQk9SIG1hcHMgd2l0aCBpbnRlZ2VyIG9yIHN0cmluZyB0eXBlIGtl
eXMgYXJlIGFsbG93ZWQuCiAgICAgICAgIGlmICgha2V5LT5pc1N0cmluZygpICYmICFrZXktPmlz
SW50ZWdlcigpKSB7CiAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5j
b3JyZWN0TWFwS2V5VHlwZTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hl
Y2tEdXBsaWNhdGVLZXkoa2V5LnZhbHVlKCksIGNib3JNYXApIHx8ICFjaGVja091dE9mT3JkZXJL
ZXkoa2V5LnZhbHVlKCksIGNib3JNYXApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgY2Jvck1hcC5l
bXBsYWNlKHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUoa2V5LnZhbHVlKCkpLCBXVEZNb3ZlKHZhbHVl
LnZhbHVlKCkpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwCmluZGV4IDc2OWIyNzI3MWIwN2RlZjY3Y2JiZjBhMTI5
YWQ5NGM1MTQyYTk3YzguLjhjZWY0ZWFiY2M5ZjMwZTZlYjgwYjFlYTY4MWMyODUzYmIzNjMxMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3Jp
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldy
aXRlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDQk9S
V3JpdGVyOjp3cml0ZShjb25zdCBDQk9SVmFsdWUmIG5vZGUsIHNpemVfdCBtYXhOZXMKICAgICBD
Qk9SV3JpdGVyIHdyaXRlcigmY2Jvcik7CiAgICAgaWYgKHdyaXRlci5lbmNvZGVDQk9SKG5vZGUs
IHN0YXRpY19jYXN0PGludD4obWF4TmVzdGluZ0xldmVsKSkpCiAgICAgICAgIHJldHVybiBjYm9y
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogQ0JPUldyaXRlcjo6Q0JPUldyaXRlcihWZWN0b3I8dWludDhfdD4qIGNib3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENv
bnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
cXVlc3RDb252ZXJ0ZXIuaAppbmRleCBhODk3NmUwYzkwNDhjM2JhMzgyMWJjZmRjY2QyZTY0NTIw
OWU2ZDc4Li43OWYyYThhZjlmNzg1ZTVlNmZmZjBmMGFmZmI1NTQwZWJlNzMwZDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENv
bnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZp
Y2VSZXF1ZXN0Q29udmVydGVyLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBzdHJ1Y3QgUGluUGFyYW1l
dGVycyB7CiAvLyBTZXJpYWxpemVzIE1ha2VDcmVkZW50aWFsIHJlcXVlc3QgcGFyYW1ldGVyIGlu
dG8gQ0JPUiBlbmNvZGVkIG1hcCB3aXRoCiAvLyBpbnRlZ2VyIGtleXMgYW5kIENCT1IgZW5jb2Rl
ZCB2YWx1ZXMgYXMgZGVmaW5lZCBieSB0aGUgQ1RBUCBzcGVjLgogLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1wcy0yMDE3MDkyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtcHMtMjAxNzA5MjcuaHRtbCNhdXRoZW50aWNhdG9yTWFr
ZUNyZWRlbnRpYWwKLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVNYWtlQ3Jl
ZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQXV0aGVudGljYXRv
clN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIE9wdGlvbmFs
PFBpblBhcmFtZXRlcnM+IHBpbiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8dWludDhfdD4gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5LCBzdGQ6Om9wdGlvbmFsPFBpblBhcmFtZXRlcnM+ID0gc3RkOjpudWxs
b3B0KTsKIAogLy8gU2VyaWFsaXplcyBHZXRBc3NlcnRpb24gcmVxdWVzdCBwYXJhbWV0ZXIgaW50
byBDQk9SIGVuY29kZWQgbWFwIHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNvZGVk
IHZhbHVlcyBhcyBkZWZpbmVkIGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxp
YW5jZS5vcmcvc3BlY3MvZmlkby12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhl
bnRpY2F0b3ItcHJvdG9jb2wtdjIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JHZXRB
c3NlcnRpb24KLVdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3NlcnRp
b25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1cHBv
cnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIE9wdGlvbmFsPFBpblBh
cmFtZXRlcnM+IHBpbiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWlu
dDhfdD4gZW5jb2RlR2V0QXNzZXJ0aW9uUmVxdWVzdEFzQ0JPUihjb25zdCBWZWN0b3I8dWludDhf
dD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9u
cyYsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5LCBzdGQ6Om9wdGlvbmFsPFBpblBhcmFtZXRlcnM+ID0gc3RkOjpudWxsb3B0KTsKIAog
Ly8gUmVwcmVzZW50cyBDVEFQIHJlcXVlc3RzIHdpdGggZW1wdHkgcGFyYW1ldGVycywgaW5jbHVk
aW5nCiAvLyBBdXRoZW50aWNhdG9yR2V0SW5mbywgQXV0aGVudGljYXRvclJlc2V0IGFuZCBBdXRo
ZW50aWNhdG9yR2V0TmV4dEFzc2VydGlvbiBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252
ZXJ0ZXIuY3BwCmluZGV4IDg0YzE3Yjc3MzZjODVkNjE3ZWU5MmZjZmMyYjY4Mjk5ODMwMWQ1MjEu
LjlhMjE1NTM5ZmZjOGVlNDliMTg2OTg0NzY0N2EyNGI5YjIyMjE3YzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcApAQCAtNTcsMTIgKzU3LDEyIEBAIHN0YXRpYyBQcm90b2NvbFZl
cnNpb24gY29udmVydFN0cmluZ1RvUHJvdG9jb2xWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
bikKIE9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKIHsKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtS
ZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2
aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIgeyBpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07CiAgICAgT3B0
aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZm
ZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFw
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIGRlY29kZWRSZXNwb25zZTsKIH0KIApAQCAtMjAyLDE2ICsyMDIs
MTYgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJ
bmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBk
ZWNvZGVSZXNwb25zZU1hcChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZE1hcC0+Z2V0TWFwKCk7CiAKICAgICBh
dXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDEpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9u
c2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNBcnJheSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFN0ZFNldDxQcm90
b2NvbFZlcnNpb24+IHByb3RvY29sVmVyc2lvbnM7CiAgICAgZm9yIChjb25zdCBhdXRvJiB2ZXJz
aW9uIDogaXQtPnNlY29uZC5nZXRBcnJheSgpKSB7CiAgICAgICAgIGlmICghdmVyc2lvbi5pc1N0
cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBwcm90b2NvbCA9IGNvbnZlcnRTdHJp
bmdUb1Byb3RvY29sVmVyc2lvbih2ZXJzaW9uLmdldFN0cmluZygpKTsKICAgICAgICAgaWYgKHBy
b3RvY29sID09IFByb3RvY29sVmVyc2lvbjo6a1Vua25vd24pIHsKQEAgLTIyMCwyNiArMjIwLDI2
IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5m
b1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXBy
b3RvY29sVmVyc2lvbnMuaW5zZXJ0KHByb3RvY29sKS5zZWNvbmQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgaWYgKHByb3RvY29sVmVyc2lvbnMuZW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGl0ID0gcmVzcG9u
c2VNYXAuZmluZChDQk9SKDMpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkgfHwgaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCku
c2l6ZSgpICE9IGFhZ3VpZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVz
cG9uc2UgcmVzcG9uc2UoV1RGTW92ZShwcm90b2NvbFZlcnNpb25zKSwgVmVjdG9yPHVpbnQ4X3Q+
KGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpKSk7CiAKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZp
bmQoQ0JPUigyKSk7CiAgICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAg
IGlmICghaXQtPnNlY29uZC5pc0FycmF5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8
U3RyaW5nPiBleHRlbnNpb25zOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGV4dGVuc2lvbiA6
IGl0LT5zZWNvbmQuZ2V0QXJyYXkoKSkgewogICAgICAgICAgICAgaWYgKCFleHRlbnNpb24uaXNT
dHJpbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGV4dGVuc2lvbnMuYXBw
ZW5kKGV4dGVuc2lvbi5nZXRTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTI1MCwxMiArMjUwLDEy
IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5m
b1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENC
T1IoNCkpOwogICAgIGlmIChpdCAhPSByZXNwb25zZU1hcC5lbmQoKSkgewogICAgICAgICBpZiAo
IWl0LT5zZWNvbmQuaXNNYXAoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb25zdCBhdXRvJiBvcHRp
b25NYXAgPSBpdC0+c2Vjb25kLmdldE1hcCgpOwogICAgICAgICBhdXRvIG9wdGlvbk1hcEl0ID0g
b3B0aW9uTWFwLmZpbmQoQ0JPUihrUGxhdGZvcm1EZXZpY2VNYXBLZXkpKTsKICAgICAgICAgaWYg
KG9wdGlvbk1hcEl0ICE9IG9wdGlvbk1hcC5lbmQoKSkgewogICAgICAgICAgICAgaWYgKCFvcHRp
b25NYXBJdC0+c2Vjb25kLmlzQm9vbCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgb3B0aW9ucy5zZXRJc1BsYXRmb3JtRGV2aWNlKG9wdGlvbk1hcEl0LT5zZWNvbmQuZ2V0Qm9v
bCgpKTsKICAgICAgICAgfQpAQCAtMjYzLDcgKzI2Myw3IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0
b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1
aW50CiAgICAgICAgIG9wdGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQoQ0JPUihrUmVzaWRlbnRL
ZXlNYXBLZXkpKTsKICAgICAgICAgaWYgKG9wdGlvbk1hcEl0ICE9IG9wdGlvbk1hcC5lbmQoKSkg
ewogICAgICAgICAgICAgaWYgKCFvcHRpb25NYXBJdC0+c2Vjb25kLmlzQm9vbCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgb3B0aW9ucy5zZXRTdXBwb3J0c1Jlc2lkZW50S2V5
KG9wdGlvbk1hcEl0LT5zZWNvbmQuZ2V0Qm9vbCgpKTsKICAgICAgICAgfQpAQCAtMjcxLDcgKzI3
MSw3IEBAIE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0
SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50CiAgICAgICAgIG9wdGlvbk1hcEl0ID0gb3B0
aW9uTWFwLmZpbmQoQ0JPUihrVXNlclByZXNlbmNlTWFwS2V5KSk7CiAgICAgICAgIGlmIChvcHRp
b25NYXBJdCAhPSBvcHRpb25NYXAuZW5kKCkpIHsKICAgICAgICAgICAgIGlmICghb3B0aW9uTWFw
SXQtPnNlY29uZC5pc0Jvb2woKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIG9w
dGlvbnMuc2V0VXNlclByZXNlbmNlUmVxdWlyZWQob3B0aW9uTWFwSXQtPnNlY29uZC5nZXRCb29s
KCkpOwogICAgICAgICB9CkBAIC0yNzksNyArMjc5LDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRv
ckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVp
bnQKICAgICAgICAgb3B0aW9uTWFwSXQgPSBvcHRpb25NYXAuZmluZChDQk9SKGtVc2VyVmVyaWZp
Y2F0aW9uTWFwS2V5KSk7CiAgICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRpb25NYXAuZW5k
KCkpIHsKICAgICAgICAgICAgIGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jvb2woKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChvcHRpb25NYXBJdC0+c2Vjb25kLmdl
dEJvb2woKSkKICAgICAgICAgICAgICAgICBvcHRpb25zLnNldFVzZXJWZXJpZmljYXRpb25BdmFp
bGFiaWxpdHkoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25B
dmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkKTsKQEAgLTI5MCw3ICsyOTAsNyBA
QCBPcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9S
ZXNwb25zZShjb25zdCBWZWN0b3I8dWludAogICAgICAgICBvcHRpb25NYXBJdCA9IG9wdGlvbk1h
cC5maW5kKENCT1Ioa0NsaWVudFBpbk1hcEtleSkpOwogICAgICAgICBpZiAob3B0aW9uTWFwSXQg
IT0gb3B0aW9uTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbk1hcEl0LT5zZWNv
bmQuaXNCb29sKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAob3B0aW9u
TWFwSXQtPnNlY29uZC5nZXRCb29sKCkpCiAgICAgICAgICAgICAgICAgb3B0aW9ucy5zZXRDbGll
bnRQaW5BdmFpbGFiaWxpdHkoQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OkNsaWVudFBp
bkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZFBpblNldCk7CkBAIC0zMDMsNyArMzAzLDcgQEAg
T3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVz
cG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig1
KSk7CiAgICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQt
PnNlY29uZC5pc1Vuc2lnbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXNwb25zZS5zZXRN
YXhNc2dTaXplKGl0LT5zZWNvbmQuZ2V0VW5zaWduZWQoKSk7CiAgICAgfQpAQCAtMzExLDEyICsz
MTEsMTIgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBH
ZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZp
bmQoQ0JPUig2KSk7CiAgICAgaWYgKGl0ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAg
IGlmICghaXQtPnNlY29uZC5pc0FycmF5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8
dWludDhfdD4gc3VwcG9ydGVkUGluUHJvdG9jb2xzOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHByb3RvY29sIDogaXQtPnNlY29uZC5nZXRBcnJheSgpKSB7CiAgICAgICAgICAgICBpZiAoIXBy
b3RvY29sLmlzVW5zaWduZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHN1
cHBvcnRlZFBpblByb3RvY29scy5hcHBlbmQocHJvdG9jb2wuZ2V0VW5zaWduZWQoKSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9G
aWRvSGlkTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
Rmlkb0hpZE1lc3NhZ2UuY3BwCmluZGV4IGIxMmRhZWZlZTE0ZTUxMmI0ZmY0YTc0YTEyNjEwNDFk
NzM1OWQ2ZDguLjA1NTNmY2IzZDAxZDBkMjQwNmM1NzU4Mzg4N2UzM2E4ZDA1Y2RhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2Fn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRN
ZXNzYWdlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgZmlkbyB7CiBPcHRpb25hbDxG
aWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQs
IEZpZG9IaWREZXZpY2VDb21tYW5kIHR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkK
IHsKICAgICBpZiAoZGF0YS5zaXplKCkgPiBrSGlkTWF4TWVzc2FnZVNpemUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprUGluZzoKQEAg
LTUwLDMwICs1MCwzMCBAQCBPcHRpb25hbDxGaWRvSGlkTWVzc2FnZT4gRmlkb0hpZE1lc3NhZ2U6
OmNyZWF0ZSh1aW50MzJfdCBjaGFubmVsSWQsIEZpZG9IaWREZXZpYwogICAgIGNhc2UgRmlkb0hp
ZERldmljZUNvbW1hbmQ6OmtNc2c6CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Ni
b3I6IHsKICAgICAgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtDYW5jZWw6CiAg
ICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a1dpbms6IHsKICAgICAgICAgaWYgKCFkYXRh
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBG
aWRvSGlkRGV2aWNlQ29tbWFuZDo6a0xvY2s6IHsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9
IDEgfHwgZGF0YVswXSA+IGtIaWRNYXhMb2NrU2Vjb25kcykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0luaXQ6IHsKICAg
ICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IDgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtLZWVwQWxpdmU6CiAgICAgY2Fz
ZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0Vycm9yOgogICAgICAgICBpZiAoZGF0YS5zaXplKCkg
IT0gMSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShjaGFu
bmVsSWQsIHR5cGUsIGRhdGEpOwpAQCAtODQsMTIgKzg0LDEyIEBAIE9wdGlvbmFsPEZpZG9IaWRN
ZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGNvbnN0IFZl
Y3Rvcjx1CiB7CiAgICAgc2l6ZV90IHJlbWFpbmluZ1NpemUgPSAwOwogICAgIGlmIChzZXJpYWxp
emVkRGF0YS5zaXplKCkgPiBrSGlkUGFja2V0U2l6ZSB8fCBzZXJpYWxpemVkRGF0YS5zaXplKCkg
PCBrSGlkSW5pdFBhY2tldEhlYWRlclNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGluaXRQYWNrZXQgPSBG
aWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKHNlcmlhbGl6ZWREYXRh
LCAmcmVtYWluaW5nU2l6ZSk7CiAKICAgICBpZiAoIWluaXRQYWNrZXQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gRmlkb0hpZE1lc3NhZ2UoV1RGTW92ZShpbml0UGFja2V0KSwgcmVtYWluaW5nU2l6ZSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCmluZGV4IDU4
Mzc2NTBkM2JmMjBiYTBiMmI3MDg4ZGVkOWUwMzM2ZTkwMTRjYjEuLmFkMjg5YmZkY2RjMjUwYzY3
ZGE3NmFhYzY1OWE5N2U5ZDRhZDgwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9QaW4uY3BwCkBAIC04MywxMCArODMsMTAgQEAgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZVJhd1B1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHgsIGNvbnN0IFZlY3Rvcjx1
aW50OF8KIE9wdGlvbmFsPENTdHJpbmc+IHZhbGlkYXRlQW5kQ29udmVydFRvVVRGOChjb25zdCBT
dHJpbmcmIHBpbikKIHsKICAgICBpZiAoIWhhc0F0TGVhc3RGb3VyQ29kZXBvaW50cyhwaW4pKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gcmVzdWx0ID0gcGluLnV0ZjgoKTsKICAgICBpZiAocmVzdWx0Lmxlbmd0aCgp
IDwga01pbkJ5dGVzIHx8IHJlc3VsdC5sZW5ndGgoKSA+IGtNYXhCeXRlcykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xMTYsMTIgKzExNiwxMiBAQCBPcHRpb25hbDxSZXRyaWVzUmVz
cG9uc2U+IFJldHJpZXNSZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1
ZmZlcgogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGluQnVmZmVy
KTsKICAgICBpZiAoIWRlY29kZWRNYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uc3QgYXV0byYgcmVzcG9uc2VNYXAg
PSBkZWNvZGVkTWFwLT5nZXRNYXAoKTsKIAogICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5k
KENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihSZXNwb25zZUtleTo6a1JldHJpZXMpKSk7
CiAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzVW5zaWdu
ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFJldHJpZXNSZXNwb25zZSByZXQ7CiAgICAgcmV0LnJldHJpZXMgPSBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oaXQtPnNlY29uZC5nZXRVbnNpZ25lZCgpKTsKQEAgLTEzNywx
MyArMTM3LDEzIEBAIE9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1lbnRS
ZXNwb25zZTo6cGFyc2UoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiB7CiAgICAgYXV0byBkZWNvZGVk
TWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2RlZE1hcCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBjb25zdCBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRNYXAtPmdldE1hcCgpOwog
CiAgICAgLy8gVGhlIGVwaGVtZXJhbCBrZXkgaXMgZW5jb2RlZCBhcyBhIENPU0Ugc3RydWN0dXJl
LgogICAgIGF1dG8gaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxp
bnQ2NF90PihSZXNwb25zZUtleTo6a0tleUFncmVlbWVudCkpKTsKICAgICBpZiAoaXQgPT0gcmVz
cG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBhdXRv
JiBjb3NlS2V5ID0gaXQtPnNlY29uZC5nZXRNYXAoKTsKIAogICAgIHJldHVybiBwYXJzZUZyb21D
T1NFKGNvc2VLZXkpOwpAQCAtMTYwLDIwICsxNjAsMjAgQEAgT3B0aW9uYWw8S2V5QWdyZWVtZW50
UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JW
YWwKICAgICB9KSkgewogICAgICAgICBhdXRvIGl0ID0gY29zZUtleS5maW5kKENCT1JWYWx1ZShw
YWlyLmZpcnN0KSk7CiAgICAgICAgIGlmIChpdCA9PSBjb3NlS2V5LmVuZCgpIHx8ICFpdC0+c2Vj
b25kLmlzSW50ZWdlcigpIHx8IGl0LT5zZWNvbmQuZ2V0SW50ZWdlcigpICE9IHBhaXIuc2Vjb25k
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM4MTUyI3NlY3Rpb24tMTMuMS4xCiAgICAgY29uc3QgYXV0byYgeEl0ID0gY29zZUtl
eS5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihDT1NFOjp4KSkpOwogICAgIGNv
bnN0IGF1dG8mIHlJdCA9IGNvc2VLZXkuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8aW50NjRf
dD4oQ09TRTo6eSkpKTsKICAgICBpZiAoeEl0ID09IGNvc2VLZXkuZW5kKCkgfHwgeUl0ID09IGNv
c2VLZXkuZW5kKCkgfHwgIXhJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpIHx8ICF5SXQtPnNlY29u
ZC5pc0J5dGVTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IGF1dG8mIHggPSB4SXQtPnNlY29uZC5n
ZXRCeXRlU3RyaW5nKCk7CiAgICAgY29uc3QgYXV0byYgeSA9IHlJdC0+c2Vjb25kLmdldEJ5dGVT
dHJpbmcoKTsKICAgICBhdXRvIHBlZXJLZXkgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UmF3KENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OkVDREgsICJQLTI1NiIsIGVuY29kZVJhd1B1YmxpY0tleSh4
LCB5KSwgdHJ1ZSwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKTsKICAgICBpZiAoIXBlZXJLZXkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gS2V5QWdyZWVtZW50UmVzcG9uc2UocGVlcktleS5yZWxlYXNlTm9u
TnVsbCgpKTsKIH0KQEAgLTIwMywxNyArMjAzLDE3IEBAIE9wdGlvbmFsPFRva2VuUmVzcG9uc2U+
IFRva2VuUmVzcG9uc2U6OnBhcnNlKGNvbnN0IFdlYkNvcmU6OkNyeXB0b0tleUFFUyYgc2hhcmVk
CiB7CiAgICAgYXV0byBkZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwog
ICAgIGlmICghZGVjb2RlZE1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25zdCBhdXRvJiByZXNwb25zZU1hcCA9IGRl
Y29kZWRNYXAtPmdldE1hcCgpOwogCiAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JP
UlZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KFJlc3BvbnNlS2V5OjprUGluVG9rZW4pKSk7CiAg
ICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmlu
ZygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGNvbnN0IGF1dG8mIGVuY3J5cHRlZFRva2VuID0gaXQtPnNlY29uZC5nZXRC
eXRlU3RyaW5nKCk7CiAKICAgICBhdXRvIHRva2VuUmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6cGxhdGZvcm1EZWNyeXB0KHsgfSwgc2hhcmVkS2V5LCBlbmNyeXB0ZWRUb2tlbiwgQ3J5
cHRvQWxnb3JpdGhtQUVTX0NCQzo6UGFkZGluZzo6Tm8pOwogICAgIGlmICh0b2tlblJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHRva2VuID0gdG9rZW5SZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CiAKICAgICBhdXRvIHRva2VuS2V5ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0
UmF3KHRva2VuLnNpemUoKSAqIDgsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTYs
IFdURk1vdmUodG9rZW4pLCB0cnVlLCBDcnlwdG9LZXlVc2FnZVNpZ24pOwpAQCAtMjU0LDcgKzI1
NCw3IEBAIE9wdGlvbmFsPFRva2VuUmVxdWVzdD4gVG9rZW5SZXF1ZXN0Ojp0cnlDcmVhdGUoY29u
c3QgQ1N0cmluZyYgcGluLCBjb25zdCBDcnlwdG9LCiAgICAgLy8gMi4gVXNlIEVDREggYW5kIFNI
QS0yNTYgdG8gY29tcHV0ZSB0aGUgc2hhcmVkIEFFUy1DQkMga2V5LgogICAgIGF1dG8gc2hhcmVk
S2V5UmVzdWx0ID0gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKGRvd25j
YXN0PENyeXB0b0tleUVDPigqa2V5UGFpci5wcml2YXRlS2V5KSwgcGVlcktleSk7CiAgICAgaWYg
KCFzaGFyZWRLZXlSZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAg
Y3J5cHRvLT5hZGRCeXRlcyhzaGFyZWRLZXlSZXN1bHQtPmRhdGEoKSwgc2hhcmVkS2V5UmVzdWx0
LT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCA5OWJkMWE5NDk0MDYy
ZjZmNGMzMGIzYmNlMGQwMjlkOGM4Njc5Mjk0Li40MTJiMjk1ZTAwN2RiM2EwYWY1YjA2ZDFiMWQw
NTc4YWRkMjA0ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpYwogc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBs
aWNhdGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0
ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKIHsK
ICAgICBpZiAoa2V5SGFuZGxlLnNpemUoKSA+IGtNYXhLZXlIYW5kbGVMZW5ndGgpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YTsKICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
a1UyZkNoYWxsZW5nZVBhcmFtTGVuZ3RoICsga1UyZkFwcGxpY2F0aW9uUGFyYW1MZW5ndGggKyAx
ICsga2V5SGFuZGxlLnNpemUoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBpc0NvbnZlcnRp
YmxlVG9VMmZTaWduQ29tbWFuZChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmIHJlcXUKIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJD
b21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50RGF0YUhhc2gsIGNvbnN0IFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFpc0Nv
bnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGFw
cElkID0gcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbihyZXF1ZXN0LmV4
dGVuc2lvbnMpOwogICAgIHJldHVybiBjb25zdHJ1Y3RVMmZSZWdpc3RlckNvbW1hbmQocHJvZHVj
ZVJwSWRIYXNoKCFhcHBJZCA/IHJlcXVlc3QucnAuaWQgOiBhcHBJZCksIGNsaWVudERhdGFIYXNo
KTsKQEAgLTExMCw3ICsxMTAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRU
b1UyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaQogT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zJiByZXF1ZXN0LCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvciYga2V5SGFuZGxlKQogewogICAgIGlmIChrZXlIYW5kbGUudHlwZSAhPSBQdWJsaWNLZXlD
cmVkZW50aWFsVHlwZTo6UHVibGljS2V5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNvbnN0cnVjdFUyZlNp
Z25Db21tYW5kKHByb2R1Y2VScElkSGFzaChyZXF1ZXN0LnJwLmlkKSwgY2xpZW50RGF0YUhhc2gs
IGtleUhhbmRsZS5pZFZlY3RvciwgdHJ1ZSAvKiBjaGVja09ubHkgKi8pOwogfQpAQCAtMTE4LDcg
KzExOCw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmQ2hlY2tPbmx5
U2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+CiBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpZW50
RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgcmVxdWVz
dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNBcHBJZCkKIHsKICAg
ICBpZiAoIWlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKHJlcXVlc3QpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFpc0FwcElkKQogICAgICAgICByZXR1cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJv
ZHVjZVJwSWRIYXNoKHJlcXVlc3QucnBJZCksIGNsaWVudERhdGFIYXNoLCBrZXlIYW5kbGUsIGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5j
cHAKaW5kZXggNWFlMjQ3OWU3Mzg3ZTYyNGUxOGI2NDhkOTdmZjRmOWYyNjFlZDQ5ZC4uOWFkMTFk
NDA4OGY2NjM3N2RiMWRiYzA5ZGM1MTA1ZTNmOTE2ODBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBT
dHJpbmcgRGF0YWJhc2U6OmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgY29uc3QKIERhdGFiYXNlRGV0
YWlscyBEYXRhYmFzZTo6ZGV0YWlscygpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGgg
aXMgb25seSB1c2VkIGZvciBkYXRhYmFzZSBxdW90YSBkZWxlZ2F0ZSBjYWxscywgc28gZmlsZSBk
YXRlcyBhcmUgaXJyZWxldmFudCBhbmQgbGVmdCB1bmluaXRpYWxpemVkLgotICAgIHJldHVybiBE
YXRhYmFzZURldGFpbHMoc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFt
ZUlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplKCksIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KTsKKyAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXJJc29s
YXRlZENvcHkoKSwgZGlzcGxheU5hbWVJc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSgpLCAw
LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2Fi
bGVBdXRob3JpemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCAyYzlhYTUyYTEwODk1M2U0ODc2ZDQ1ZDBj
NGNkOTkyOTVlMjJhMmI0Li45YWYwMjNhMjBkMjNiMDViN2M4ZWU0OTQ2NTU3YWI1NmMyMjIyMzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiBEYXRhYmFzZU1hbmFn
ZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0YWJhc2UoRGF0YWJhc2VNYW5hZ2VyJiBt
YW5hZ2VyLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICA6
IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luLmlzb2xhdGVkQ29weSgp
KQotICAgICwgbV9kZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCkK
KyAgICAsIG1fZGV0YWlscyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRl
ZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpCiB7
CiAgICAgbV9tYW5hZ2VyLmFkZFByb3Bvc2VkRGF0YWJhc2UoKnRoaXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IGZjODE5MmY5NGUyYWYxNDJhM2M0Y2UwYjUxZmVlZjMyOWVjZjYzNjUuLjU5NGY3ODZi
NWVmNTk0M2RiOTk3ZDkwZjZkYWUxNzM4OTQwMDU1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTQ2MCw3
ICs0NjAsNyBAQCBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9yTmFt
ZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbgogCiAgICAgU3RyaW5nIHBhdGggPSBm
dWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgbmFtZSwgZmFsc2UpOwogICAgIGlmIChwYXRoLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFt
ZSwgZXhwZWN0ZWRVc2FnZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAg
ICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdl
LCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgcmV0dXJuIERhdGFiYXNlRGV0
YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwgZXhwZWN0ZWRVc2FnZSwgU1FMaXRlRmlsZVN5c3RlbTo6
ZGF0YWJhc2VGaWxlU2l6ZShwYXRoKSwgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlv
blRpbWUocGF0aCksIFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShw
YXRoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggZDE0ZWJmYzU3OWNlYTYzODM0YTg3OTNhMzVlZGVj
ZDU2NDg2OWFlNy4uMmJjNTllY2UyM2UwNDZjZjIyYmJkODMxYjVjZTY3MjgzZTlkMmNkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1FMVHJhbnNhY3Rp
b246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0ZW1lbnQsIE9wdGlvbmEKICAgICBl
bHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNzaW9ucyB8PSBEYXRhYmFzZUF1dGhv
cml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxT
UUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlT3Io
VmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFj
a0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxT
UUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLnZhbHVlX29y
KFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJh
Y2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkp
CiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NT
cGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRk
cmVzc1NwYWNlLmgKaW5kZXggZTc1N2ZkMGI3ZTdhNmRkYjhmM2JlYmVjY2MwZmVmOGNiMTFlNmU3
Yy4uNzc5MjJjYWNhZTBhNzM0NjI1MWU2NWZhYzg2NDM1NjcwZjViMjBmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRk
cmVzc1NwYWNlLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgh
bV9lbXB0eSk7CiAgICAgICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPExlZnRWYWx1ZT4o
bV9pbm5lcikpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8TGVmdFZhbHVlPihtX2lubmVy
KS5hZGRyZXNzU3BhY2U7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYm9vbCBpc1JpZ2h0VmFsdWUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQnVpbHRJblNlbWFudGljLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaAppbmRleCBmNTA4MDU5ODQ5ZTY2NGI5MTI1Mjlj
OTg2MmIwNDIyYjBlMGM4ODY3Li4zM2ExMTY4NWU1MmYxMzNlMDRmMWQzM2IzNzc1ODI5ODdjOTBh
OTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xCdWlsdEluU2VtYW50aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFNWR3JvdXBUaHJlYWRJRAogICAgIH07CiAKLSAgICBCdWlsdEluU2VtYW50
aWMoQ29kZUxvY2F0aW9uIGxvY2F0aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8dW5z
aWduZWQ+JiYgdGFyZ2V0SW5kZXggPSBXVEY6Om51bGxvcHQpCisgICAgQnVpbHRJblNlbWFudGlj
KENvZGVMb2NhdGlvbiBsb2NhdGlvbiwgVmFyaWFibGUgdmFyaWFibGUsIE9wdGlvbmFsPHVuc2ln
bmVkPiYmIHRhcmdldEluZGV4ID0gc3RkOjpudWxsb3B0KQogICAgICAgICA6IEJhc2VTZW1hbnRp
Yyhsb2NhdGlvbikKICAgICAgICAgLCBtX3ZhcmlhYmxlKHZhcmlhYmxlKQogICAgICAgICAsIG1f
dGFyZ2V0SW5kZXgoV1RGTW92ZSh0YXJnZXRJbmRleCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0
aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCmluZGV4IGQ0YTAxMmFlNmQzODJmMjQ5OGM3ZmU2YWUyNzg1
ODJlOTA4YmYxODcuLmFhM2E2OTg0YjYxNmY2NWQwYjBhMDBiZjlmMmI1N2Q0ZmI0MTNhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNM
TmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwCkBAIC0xMjcsNyAr
MTI3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNhbXBsZVR5cGU+IHNhbXBsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUpCiAgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVCaWFz
OwogICAgIGlmIChmdW5jdGlvbk5hbWUgPT0gIlNhbXBsZUdyYWQiKQogICAgICAgICByZXR1cm4g
U2FtcGxlVHlwZTo6U2FtcGxlR3JhZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5n
QnVpbGRlciYgc3RyaW5nQnVpbGRlciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBu
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLCBjb25zdCBWZWN0b3I8TWFuZ2xlZFZhcmlhYmxlTmFt
ZT4mIGFyZ3MsIE1hbmdsZWRWYXJpYWJsZU5hbWUgcmVzdWx0TmFtZSwgVHlwZU5hbWVyJiB0eXBl
TmFtZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xDaGVja2VyLmNwcAppbmRleCA2Mzk5Y2I1ZmU4OWFiZTg0NDFmY2FhMWNkMWY3NjVmNzA5MWU0
MTI2Li43MjFjYmEzMGFjMTljNWY0NzZhYzJkM2UxMTMwZTRjMTNjZDUxNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAK
QEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9u
IHJlc29sdmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihDb2RlTG9jYXRpbwogICAgIEFTVDo6VmFy
aWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmFwcGVuZChtYWtl
VW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlm
aWVycygpLCBhcmd1bWVudFR5cGUuY29weVJlZigpLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIFdURk1vdmUoYXJndW1lbnRU
eXBlKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwg
QVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmV0dXJuVHlwZSks
IFN0cmluZygib3BlcmF0b3I9PSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRh
cmRMaWJyYXJ5KSk7CisgICAgcmV0dXJuIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwg
c3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJldHVyblR5cGUpLCBTdHJpbmcoIm9wZXJhdG9yPT0iLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0
ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogfQogCiBlbnVt
IGNsYXNzIEFjY2VwdGFiaWxpdHkgewpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24+IHJlc29sdmVCeUluc3RhbnRpYXRpb24o
Y29uc3QgU3RyCiAgICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuIHJlc29s
dmVXaXRoUmVmZXJlbmNlQ29tcGFyYXRvcihsb2NhdGlvbiwgdHlwZXNbMF0uZ2V0KCksIHR5cGVz
WzFdLmdldCgpLCBpbnRyaW5zaWNzKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgYm9vbCBjaGVja1NlbWFudGlj
cyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+JiBpbnB1dEl0ZW1zLCBWZWN0b3I8RW50cnlQb2ludEl0
ZW0+JiBvdXRwdXRJdGVtcywgY29uc3QgT3B0aW9uYWw8QVNUOjpFbnRyeVBvaW50VHlwZT4mIGVu
dHJ5UG9pbnRUeXBlLCBjb25zdCBJbnRyaW5zaWNzJiBpbnRyaW5zaWNzKQpAQCAtNzM3LDcgKzcz
Nyw3IEBAIGF1dG8gQ2hlY2tlcjo6cmVjdXJzZUFuZEdldEluZm8oQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uLCBib29sIHJlcXVpcmVzTGVmdFZhCiB7CiAgICAgVmlzaXRvcjo6dmlzaXQoZXhw
cmVzc2lvbik7CiAgICAgaWYgKGhhc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGdldEluZm8oZXhw
cmVzc2lvbiwgcmVxdWlyZXNMZWZ0VmFsdWUpOwogfQogCkBAIC03NDksNyArNzQ5LDcgQEAgYXV0
byBDaGVja2VyOjpnZXRJbmZvKEFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbiwgYm9vbCByZXF1
aXJlc0xlZnRWYWx1ZSkgLT4gT3AKICAgICBjb25zdCBhdXRvJiB0eXBlQW5ub3RhdGlvbiA9IGV4
cHJlc3Npb24udHlwZUFubm90YXRpb24oKTsKICAgICBpZiAocmVxdWlyZXNMZWZ0VmFsdWUgJiYg
dHlwZUFubm90YXRpb24uaXNSaWdodFZhbHVlKCkpIHsKICAgICAgICAgc2V0RXJyb3IoRXJyb3Io
IlVuZXhwZWN0ZWQgcnZhbHVlLiIsIGV4cHJlc3Npb24uY29kZUxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAgICAgcmV0dXJuIHt7ICp0eXBlSXRlcmF0b3ItPnZhbHVlLCB0eXBlQW5ub3RhdGlvbiB9
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMQ29tcHV0ZURpbWVuc2lvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAKaW5kZXggNmNlMTRiYzc1ZGIwYTEzOTBm
YWY2NGIyMGI3MzAwMTQ1MWQzYzA2OS4uNGU1MWFiNzkzZTcwNGQ2M2NmMTQ3ODZjNTNjNTkzYTA1
ZWQ0NGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9ucy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
T3B0aW9uYWw8Q29tcHV0ZURpbWVuc2lvbnM+IGNvbXB1dGVEaW1lbnNpb25zKFByb2dyYW0mIHBy
b2dyYW0sIEFTVDo6RnVuY3Rpb25EZWYKICAgICAgICAgICAgIH0pLCBmdW5jdGlvbkF0dHJpYnV0
ZSk7CiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAvLyBDYW5u
b3QgZGVjbGFyZSBtdWx0aXBsZSBudW10aHJlYWQgYXR0cmlidXRlcyBvbiBhIHNpbmdsZSBmdW5j
dGlvbi4KLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExl
eGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIu
Y3BwCmluZGV4IDk1YWE2ODFmYzJiZGFhZjQ2MGI4YmEwNTZlYTM1ZTdlNDkxYWEzOTYuLmE5YzZh
MjY4NGUxYzQ2YmQzNzdjMjViNWMyMDkxYjg2YThhYmE1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwCkBAIC0xNjg5LDcgKzE2
ODksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nVmlldz4gc291cmNlRnJvbU5hbWVTcGFjZShB
U1Q6Ok5hbWVTcGFjZSBuYW1lU3BhY2UsIGNvbnN0CiB7CiAgICAgc3dpdGNoIChuYW1lU3BhY2Up
IHsKICAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpTdGFuZGFyZExpYnJhcnk6Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2Fz
ZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMToKICAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXco
c291cmNlMSk7CiAgICAgY2FzZSBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZUNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4
dC5jcHAKaW5kZXggY2M4ZWI0M2ZmZDhhNDQxMjlkYjU0OTRiMjJiOWUyM2NmNGQzZmM4Zi4uYThk
YWVhNWNlYzY0NDVmNDdiYjA3NDBmYzhmZDM0Yzg1YzM3ZWIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAK
QEAgLTI0Niw3ICsyNDYsNyBAQCBPcHRpb25hbDxDb2RlTG9jYXRpb24+IE5hbWVDb250ZXh0Ojp0
b3BMZXZlbEV4aXN0cyhTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgICAgIHJldHVybiB0eXBlLT5j
b2RlTG9jYXRpb24oKTsKICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBzZWFyY2hGdW5jdGlvbnMo
bmFtZSkpCiAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+Y29kZUxvY2F0aW9uKCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb24qIE5hbWVDb250ZXh0Ojpsb2NhbEV4aXN0cyhTdHJpbmcmIG5hbWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBhcnNlci5jcHAKaW5kZXggYjkwNzkzNTZhYTdmOTA2NjNjOTcyMjhjMDc4N2NlYjAyNmExOTYy
Yy4uZmYzM2ZjNDU5MTMyYjExZjQwMDhmN2RhMzdlNTQ2NzM1YTQ1MDcxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcApAQCAt
MjA3LDcgKzIwNyw3IEBAIE9wdGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGUoVG9rZW46OlR5
cGUgdHlwZSkKICAgICBhdXRvIHRva2VuID0gbV9sZXhlci5wZWVrKCk7CiAgICAgaWYgKHRva2Vu
LnR5cGUgPT0gdHlwZSkKICAgICAgICAgcmV0dXJuIHsgbV9sZXhlci5jb25zdW1lVG9rZW4oKSB9
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdGVtcGxhdGUgPFRva2VuOjpUeXBlLi4uIHR5cGVzPgpAQCAtMjE2LDcgKzIxNiw3IEBAIE9w
dGlvbmFsPFRva2VuPiBQYXJzZXI6OnRyeVR5cGVzKCkKICAgICBhdXRvIHRva2VuID0gbV9sZXhl
ci5wZWVrKCk7CiAgICAgaWYgKFR5cGVzPHR5cGVzLi4uPjo6aW5jbHVkZXModG9rZW4udHlwZSkp
CiAgICAgICAgIHJldHVybiB7IG1fbGV4ZXIuY29uc3VtZVRva2VuKCkgfTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGF1dG8gUGFyc2Vy
Ojpjb25zdW1lVHlwZShUb2tlbjo6VHlwZSB0eXBlKSAtPiBFeHBlY3RlZDxUb2tlbiwgRXJyb3I+
CkBAIC0zNDUsNyArMzQ1LDcgQEAgYXV0byBQYXJzZXI6OmNvbnN1bWVOb25OZWdhdGl2ZUludGVn
cmFsTGl0ZXJhbCgpIC0+IEV4cGVjdGVkPHVuc2lnbmVkLCBFcnJvcj4KICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGludGVncmFsTGl0ZXJhbC5lcnJvcigpKTsKICAgICBhdXRvIHJlc3Vs
dCA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbXShpbnQgeCkgLT4gT3B0aW9uYWw8dW5z
aWduZWQ+IHsKICAgICAgICAgaWYgKHggPCAwKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB4
OwogICAgIH0sIFtdKHVuc2lnbmVkIHgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CiAgICAgICAg
IHJldHVybiB4OwpAQCAtNDcxLDcgKzQ3MSw3IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZm
aXhBYmJyZXZpYXRlZCgpIC0+IEV4cGVjdGVkPFR5cGVTdWZmaXhBYmJyZXZpYXRlZCwgRXJyCiAg
ICAgICAgIENPTlNVTUVfVFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJhY2tl
dCk7CiAgICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9LCAq
dG9rZW4sICpudW1FbGVtZW50cyB9fTsKICAgICB9Ci0gICAgcmV0dXJuIHt7IHsgKnRva2VuIH0s
ICp0b2tlbiwgV1RGOjpudWxsb3B0IH19OworICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9r
ZW4sIHN0ZDo6bnVsbG9wdCB9fTsKIH0KIAogYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeE5v
bkFiYnJldmlhdGVkKCkgLT4gRXhwZWN0ZWQ8VHlwZVN1ZmZpeE5vbkFiYnJldmlhdGVkLCBFcnJv
cj4KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZQogICAgICAgICBp
ZiAoIW51bUVsZW1lbnRzKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bUVs
ZW1lbnRzLmVycm9yKCkpOwogICAgICAgICBDT05TVU1FX1RZUEUocmlnaHRTcXVhcmVCcmFja2V0
LCBSaWdodFNxdWFyZUJyYWNrZXQpOwotICAgICAgICByZXR1cm4ge3sgeyAqdG9rZW4sICpyaWdo
dFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCBXVEY6Om51bGxvcHQsICpudW1FbGVtZW50cyB9fTsK
KyAgICAgICAgcmV0dXJuIHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tl
biwgc3RkOjpudWxsb3B0LCAqbnVtRWxlbWVudHMgfX07CiAgICAgfQogICAgIGF1dG8gYWRkcmVz
c1NwYWNlVG9rZW4gPSBjb25zdW1lVHlwZXM8CiAgICAgICAgIFRva2VuOjpUeXBlOjpDb25zdGFu
dCwKQEAgLTUxMiw3ICs1MTIsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJi
cmV2aWF0ZWQoKSAtPiBFeHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZQogICAgICAgICBh
ZGRyZXNzU3BhY2UgPSBBU1Q6OkFkZHJlc3NTcGFjZTo6VGhyZWFkOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2Ug
fSwgV1RGOjpudWxsb3B0IH19OworICAgIHJldHVybiB7eyB7ICp0b2tlbiB9LCAqdG9rZW4sIHsg
YWRkcmVzc1NwYWNlIH0sIHN0ZDo6bnVsbG9wdCB9fTsKIH0KIAogYXV0byBQYXJzZXI6OnBhcnNl
VHlwZSgpIC0+IEV4cGVjdGVkPFJlZjxBU1Q6OlVubmFtZWRUeXBlPiwgRXJyb3I+CkBAIC0xMDM1
LDcgKzEwMzUsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VSZWd1bGFyRnVuY3Rpb25EZWNsYXJhdGlv
bigpIC0+IEV4cGVjdGVkPEFTVDo6RnVuY3Rpb25EZWNsYXJhdAogCiAgICAgYXV0byBlbmRPZmZz
ZXQgPSBtX2xleGVyLnBlZWsoKS5zdGFydE9mZnNldCgpOwogCi0gICAgcmV0dXJuIEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xl
eGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgbmFt
ZS0+c3RyaW5nVmlldyhtX2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwg
V1RGTW92ZSgqc2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOworICAgIHJldHVybiBBU1Q6
OkZ1bmN0aW9uRGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwg
bV9sZXhlci5uYW1lU3BhY2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSks
IG5hbWUtPnN0cmluZ1ZpZXcobV9sZXhlcikudG9TdHJpbmcoKSwgV1RGTW92ZSgqcGFyYW1ldGVy
cyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsKIH0KIAogYXV0byBQ
YXJzZXI6OnBhcnNlT3BlcmF0b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uLCBFcnJvcj4KQEAgLTEwNDgsNyArMTA0OCw3IEBAIGF1dG8g
UGFyc2VyOjpwYXJzZU9wZXJhdG9yRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVkPEFT
VDo6RnVuY3Rpb25EZWNsYXJhCiAgICAgYXV0byBlbmRPZmZzZXQgPSBtX2xleGVyLnBlZWsoKS5z
dGFydE9mZnNldCgpOwogCiAgICAgYm9vbCBpc09wZXJhdG9yID0gdHJ1ZTsKLSAgICByZXR1cm4g
QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsgb3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZz
ZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoKnR5
cGUpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgq
c2VtYW50aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOworICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9u
RGVjbGFyYXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5u
YW1lU3BhY2UoKSB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksICJvcGVyYXRv
ciBjYXN0Il9zdHIsIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlz
T3BlcmF0b3IsIG1fbW9kZSk7CiB9CiAKIGF1dG8gUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24sIEVycm9yPgpAQCAt
MTE2NSw3ICsxMTY1LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlU3dpdGNoQ2FzZSgpIC0+IEV4cGVj
dGVkPEFTVDo6U3dpdGNoQ2FzZSwgRXJyb3I+CiAKICAgICAgICAgUEFSU0UoYmxvY2ssIEJsb2Nr
Qm9keSk7CiAKLSAgICAgICAgcmV0dXJuIEFTVDo6U3dpdGNoQ2FzZSh7IG9yaWdpbi0+Y29kZUxv
Y2F0aW9uLCAgYmxvY2stPmNvZGVMb2NhdGlvbigpfSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKCpi
bG9jaykpOworICAgICAgICByZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9j
YXRpb24sICBibG9jay0+Y29kZUxvY2F0aW9uKCl9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoKmJs
b2NrKSk7CiAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU2VtYW50aWNNYXRjaGVyLmNwcAppbmRleCBiMTFi
ODYwNGFkNzUzNWM0ZTMxMWY4Nzg2YjkzN2M1ZjhlNTdkZjY1Li41ZTNmMGYwMzY2ODY1ZjQwMjM5
YWVlZmY5ZTBlMjU4NGQyMTRkZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNoTWFwPEJpbmRpbmcqLCBzaXplX3Q+PiBtYXRj
aFJlc291cmNlcyhWZWN0b3I8RW50cnlQb2ludEl0ZW0+CiAgICAgICAgIGlmICghV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxBU1Q6OlJlc291cmNlU2VtYW50aWM+KHNlbWFudGljKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZl
cnRleEF0dHJpYnV0ZXMoVmVjdG9yPAogICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRp
Yy5pbmRleCgpICE9IHZlcnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghaXNBY2NlcHRhYmxlRm9ybWF0KHZlcnRl
eEF0dHJpYnV0ZS52ZXJ0ZXhGb3JtYXQsICppdGVtLnVubmFtZWRUeXBlLCBpbnRyaW5zaWNzKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXN1bHQuYWRkKCZ2ZXJ0ZXhBdHRyaWJ1
dGUsIGkpOwogICAgICAgICAgICAgaXRlbUluZGljZXMuYWRkKGkpOwogICAgICAgICB9CkBAIC0x
NjMsNyArMTYzLDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8VmVydGV4QXR0cmlidXRlKiwg
c2l6ZV90Pj4gbWF0Y2hWZXJ0ZXhBdHRyaWJ1dGVzKFZlY3RvcjwKICAgICAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYykpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlucyhp
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzcsNyArMjM3
LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXpl
X3Q+PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmUKICAgICAgICAgICAgIGlmIChzdGFnZUluT3V0
U2VtYW50aWMuaW5kZXgoKSAhPSBhdHRhY2htZW50RGVzY3JpcHRvci5uYW1lKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQoYXR0
YWNobWVudERlc2NyaXB0b3IudGV4dHVyZUZvcm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJp
bnNpY3MsIHRydWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJlc3VsdC5hZGQo
JmF0dGFjaG1lbnREZXNjcmlwdG9yLCBpKTsKICAgICAgICAgICAgIGl0ZW1JbmRpY2VzLmFkZChp
KTsKICAgICAgICAgfQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNoTWFw
PEF0dGFjaG1lbnREZXNjcmlwdG9yKiwgc2l6ZV90Pj4gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKFZl
CiAgICAgICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxBU1Q6OlN0YWdlSW5PdXRTZW1h
bnRpYz4oc2VtYW50aWMpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghaXRl
bUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMjc4LDM4ICsyNzgsMzggQEAgT3B0aW9uYWw8TWF0Y2hlZFJlbmRlclNlbWFudGlj
cz4gbWF0Y2hTZW1hbnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgUmVuZGVyUGlwZWxpbmUKIHsKICAg
ICBhdXRvIHZlcnRleEZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRleHQoKS5nZXRGdW5jdGlv
bnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleEVudHJ5UG9pbnROYW1lLCBBU1Q6Ok5h
bWVTcGFjZTo6TmFtZVNwYWNlMSk7CiAgICAgaWYgKHZlcnRleEZ1bmN0aW9ucy5zaXplKCkgIT0g
MSB8fCAhdmVydGV4RnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBlKCkgfHwgIWlzPEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGF1dG8mIHZlcnRleFNoYWRlckVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9uRGVm
aW5pdGlvbj4odmVydGV4RnVuY3Rpb25zWzBdLmdldCgpKTsKICAgICBhdXRvIHZlcnRleFNoYWRl
ckVudHJ5UG9pbnRJdGVtcyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNp
Y3MoKSwgdmVydGV4U2hhZGVyRW50cnlQb2ludCk7CiAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXJFbnRy
eVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byB2ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNo
UmVzb3VyY2VzKHZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzLCByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IubGF5b3V0LCBTaGFkZXJTdGFnZTo6VmVydGV4KTsKICAgICBpZiAoIXZl
cnRleFNoYWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gbWF0Y2hlZFZlcnRleEF0dHJpYnV0
ZXMgPSBtYXRjaFZlcnRleEF0dHJpYnV0ZXModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5p
bnB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci52ZXJ0ZXhBdHRyaWJ1dGVzLCBwcm9ncmFt
LmludHJpbnNpY3MoKSk7CiAgICAgaWYgKCFtYXRjaGVkVmVydGV4QXR0cmlidXRlcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWZyYWdtZW50U2hhZGVyRXhpc3RzKQogICAgICAgICByZXR1cm4ge3sgJnZlcnRleFNo
YWRlckVudHJ5UG9pbnQsIG51bGxwdHIsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsIEVu
dHJ5UG9pbnRJdGVtcygpLCAqdmVydGV4U2hhZGVyUmVzb3VyY2VNYXAsIEhhc2hNYXA8QmluZGlu
ZyosIHNpemVfdD4oKSwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCBIYXNoTWFwPEF0dGFjaG1l
bnREZXNjcmlwdG9yKiwgc2l6ZV90PigpIH19OwogCiAgICAgYXV0byBmcmFnbWVudE5hbWVTcGFj
ZSA9IGRpc3RpbmN0RnJhZ21lbnRTaGFkZXIgPyBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMiA6
IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxOwogICAgIGF1dG8gZnJhZ21lbnRGdW5jdGlvbnMg
PSBwcm9ncmFtLm5hbWVDb250ZXh0KCkuZ2V0RnVuY3Rpb25zKHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5mcmFnbWVudEVudHJ5UG9pbnROYW1lLCBmcmFnbWVudE5hbWVTcGFjZSk7CiAgICAgaWYg
KGZyYWdtZW50RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICFmcmFnbWVudEZ1bmN0aW9uc1swXS5n
ZXQoKS5lbnRyeVBvaW50VHlwZSgpIHx8ICFpczxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oZnJh
Z21lbnRGdW5jdGlvbnNbMF0uZ2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8mIGZyYWdtZW50U2hhZGVyRW50
cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0
aW9uc1swXS5nZXQoKSk7CiAgICAgYXV0byBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcyA9
IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZnJhZ21lbnRTaGFk
ZXJFbnRyeVBvaW50KTsKICAgICBpZiAoIWZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5sYXlvdXQsIFNoYWRlclN0YWdlOjpGcmFnbWVudCk7CiAgICAgaWYgKCFmcmFnbWVudFNo
YWRlclJlc291cmNlTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghbWF0Y2hJbnB1dHNPdXRwdXRzKHZlcnRleFNo
YWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cywgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRl
bXMtPmlucHV0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBtYXRjaGVkQ29sb3JBdHRhY2htZW50cyA9IG1hdGNo
Q29sb3JBdHRhY2htZW50cyhmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cywg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yLmF0dGFj
aG1lbnREZXNjcmlwdG9ycywgcHJvZ3JhbS5pbnRyaW5zaWNzKCkpOwogICAgIGlmICghbWF0Y2hl
ZENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtYXRjaERlcHRoQXR0YWNobWVudChmcmFn
bWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+b3V0cHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmF0dGFjaG1lbnRzU3RhdGVEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNj
cmlwdG9yLCBwcm9ncmFtLmludHJpbnNpY3MoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7ICZ2ZXJ0ZXhT
aGFkZXJFbnRyeVBvaW50LCAmZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50LCAqdmVydGV4U2hhZGVy
RW50cnlQb2ludEl0ZW1zLCAqZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMsICp2ZXJ0ZXhT
aGFkZXJSZXNvdXJjZU1hcCwgKmZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXAsICptYXRjaGVkVmVy
dGV4QXR0cmlidXRlcywgKm1hdGNoZWRDb2xvckF0dGFjaG1lbnRzIH19OwogfQogCkBAIC0zMTcs
MTUgKzMxNywxNSBAQCBPcHRpb25hbDxNYXRjaGVkQ29tcHV0ZVNlbWFudGljcz4gbWF0Y2hTZW1h
bnRpY3MoUHJvZ3JhbSYgcHJvZ3JhbSwgQ29tcHV0ZVBpcGVsaQogewogICAgIGF1dG8gZnVuY3Rp
b25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhjb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLmVudHJ5UG9pbnROYW1lLCBBU1Q6Ok5hbWVTcGFjZTo6TmFtZVNwYWNlMSk7CiAg
ICAgaWYgKGZ1bmN0aW9ucy5zaXplKCkgIT0gMSB8fCAhZnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5
UG9pbnRUeXBlKCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5jdGlvbnNbMF0u
Z2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGF1dG8mIGVudHJ5UG9pbnQgPSBkb3duY2FzdDxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbj4oZnVuY3Rpb25zWzBdLmdldCgpKTsKICAgICBhdXRvIGVudHJ5UG9pbnRJdGVt
cyA9IGdhdGhlckVudHJ5UG9pbnRJdGVtcyhwcm9ncmFtLmludHJpbnNpY3MoKSwgZW50cnlQb2lu
dCk7CiAgICAgaWYgKCFlbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQVNTRVJUKGVudHJ5UG9pbnRJ
dGVtcy0+b3V0cHV0cy5pc0VtcHR5KCkpOwogICAgIGF1dG8gcmVzb3VyY2VNYXAgPSBtYXRjaFJl
c291cmNlcyhlbnRyeVBvaW50SXRlbXMtPmlucHV0cywgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ci5sYXlvdXQsIFNoYWRlclN0YWdlOjpDb21wdXRlKTsKICAgICBpZiAoIXJlc291cmNlTWFwKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB7eyAmZW50cnlQb2ludCwgKmVudHJ5UG9pbnRJdGVtcywgKnJlc291cmNl
TWFwIH19OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAppbmRleCAz
MTdkMGM1ZmJlY2U0NDkxODA1OTcyMGE0NWJkY2Y4NDFiYTQ3NDFmLi5iY2M5MGEzNjQwNWEyZWQx
NzRkZDM1NjMyZDY2OWE0OTcxMjhiZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5jcHAKQEAgLTEyOCwxMSArMTI4LDExIEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50
aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBhdXRvIHZh
cmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCAmdW5uYW1lZFR5cGUsIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFT
VDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCB1bm5hbWVkVHlwZSwgIm9wZXJhdG9y
IGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFy
c2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOworICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCB1bm5hbWVkVHlw
ZSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNP
cGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogICAgICAgICAgICAgcHJv
Z3JhbS5hcHBlbmQoV1RGTW92ZShjb3B5Q29uc3RydWN0b3IpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdU
Rjo6bnVsbG9wdCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkpOworICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVm
YXVsdENvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpB
dHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2Fz
dCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3Is
IFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgaWYgKCFwcm9ncmFtLmFw
cGVuZChXVEZNb3ZlKGRlZmF1bHRDb25zdHJ1Y3RvcikpKQogICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKEVycm9yKCJDb3VsZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVj
dG9yIikpOwogICAgIH0KQEAgLTE0OCw3ICsxNDgsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
c3ludGhlc2l6ZUNvbnN0cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICBhdXRvIHZh
cmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlv
bj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAo
bG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsK
ICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICBw
YXJhbWV0ZXJzLmFwcGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAg
QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxs
b3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSks
ICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3Bl
cmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgQVNUOjpOYXRp
dmVGdW5jdGlvbkRlY2xhcmF0aW9uIGNvcHlDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6
OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSksICJvcGVyYXRv
ciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBh
cnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgcHJvZ3JhbS5hcHBlbmQoV1RG
TW92ZShjb3B5Q29uc3RydWN0b3IpKTsKIAogICAgICAgICBpZiAoaXM8QVNUOjpOYXRpdmVUeXBl
RGVjbGFyYXRpb24+KHN0YXRpY19jYXN0PEFTVDo6TmFtZWRUeXBlJj4obmFtZWRUeXBlKSkpIHsK
QEAgLTE1Niw3ICsxNTYsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6ZUNvbnN0
cnVjdG9ycyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAgaWYgKG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbi5pc09wYXF1ZVR5cGUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gZGVmYXVsdENvbnN0
cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVC
bG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwg
bmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9ucygpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJy
YXJ5KSk7CisgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29u
c3RydWN0b3IoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0
ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9u
LCBuYW1lZFR5cGUuZ2V0KCkpLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVj
bGFyYXRpb25zKCksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExp
YnJhcnkpKTsKICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGRlZmF1bHRDb25z
dHJ1Y3RvcikpKQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDb3Vs
ZCBub3Qgc3ludGhlc2l6ZSBkZWZhdWx0IGNvbnN0cnVjdG9yIikpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUVu
dW1lcmF0aW9uRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAppbmRleCAyYTdlMGQ2
OTYwN2VkMzlhZTA1NWZlMDBhZGM5YjE5ZGY5NTBhZTFhLi5mMDUwNzM4MjNjN2RhMWQ3YTEyN2Yz
ZDU2YmI2ZjIwNTFhOWRmZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVy
YXRpb25GdW5jdGlvbnMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9y
PiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAg
ICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAgICAgICAgICAg
IHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjEpKTsKICAgICAg
ICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbjIpKTsK
LSAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRy
aWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2Nh
dGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSksICJvcGVyYXRvcj09Il9zdHIs
IFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpT
dGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihs
b2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJl
ZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkuYm9vbFR5cGUoKSks
ICJvcGVyYXRvcj09Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0
b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKICAgICAgICAgICAgIGlmICghcHJv
Z3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9yKCJDYW5ub3QgY3JlYXRlIG9wZXJh
dG9yPT0gZm9yIGVudW0gdHlwZS4iKSk7CiAgICAgICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgRXhw
ZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucyhQcm9ncmFt
JiBwcm9ncmFtKQogICAgICAgICAgICAgYXV0byB2YXJpYWJsZURlY2xhcmF0aW9uID0gbWFrZVVu
aXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9uLCBBU1Q6OlF1YWxpZmll
cnMoKSwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRlZmlu
aXRpb24pLCBTdHJpbmcoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgICAgICBBU1Q6OlZh
cmlhYmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChXVEZNb3ZlKHZhcmlhYmxlRGVjbGFyYXRpb24pKTsKLSAgICAgICAgICAgIEFTVDo6TmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVu
Y3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51
bGxvcHQsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCAib3BlcmF0b3IgY2FzdCJfc3Ry
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6
U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxsb3B0LCBlbnVtZXJhdGlv
bkRlZmluaXRpb24tPnR5cGUoKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkp
OwogICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJy
b3IoIkNhbm5vdCBjcmVhdGUgY29weSBjb25zdHJ1Y3RvciBmb3IgZW51bSB0eXBlLiIpKTsKICAg
ICAgICAgfQpAQCAtNjUsNyArNjUsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4gc3ludGhlc2l6
ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgICAgICBhdXRv
IHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFibGVEZWNsYXJh
dGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCAmZW51bWVyYXRpb25EZWZpbml0aW9u
LT50eXBlKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnMgcGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMu
YXBwZW5kKFdURk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6
bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxs
cHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAgICAg
ICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxv
Y2soKSwgc3RkOjpudWxsb3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVu
dW1lcmF0aW9uRGVmaW5pdGlvbiksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1l
dGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkp
KTsKICAgICAgICAgICAgIGlmICghcHJvZ3JhbS5hcHBlbmQoV1RGTW92ZShuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVy
cm9yKCJDYW5ub3QgY3JlYXRlICdvcGVyYXRvciBjYXN0JyBmb3IgZW51bSB0eXBlLiIpKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
QmluZEdyb3VwRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcAppbmRleCAzZTUxMGM1NzRmM2VmODYzYjFhMTAx
MmY1ZWY2Mzk5MTM0YjljMTdjLi44ZWZlYTU1NWNlOTJjMWM0MTk5NjFhNGY1NjJlYTU1MzRlMjEw
YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5k
R3JvdXBEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIE9wdGlvbmFs
PEdQVUJpbmRHcm91cERlc2NyaXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNy
ZWF0ZUdQVUJpbmRHcm91CiAKICAgICBpZiAoIWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBM
YXlvdXQoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVQmluZEdyb3Vw
TGF5b3V0ISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGJpbmRpbmdzLnNp
emUoKSAhPSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01hcCgpLnNpemUoKSkg
ewogICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1pc21hdGNoZWQgbnVtYmVyIG9mIEdQVUJpbmRH
cm91cExheW91dEJpbmRpbmdzIGFuZCBHUFVCaW5kR3JvdXBCaW5kaW5ncyEiLCBmdW5jdGlvbk5h
bWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gbGF5b3V0TWFwID0gbGF5b3V0LT5iaW5kR3JvdXBM
YXlvdXQoKS0+YmluZGluZ3NNYXAoKTsKQEAgLTgzLDM2ICs4MywzNiBAQCBPcHRpb25hbDxHUFVC
aW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlDcmVhdGVH
UFVCaW5kR3JvdQogICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbGF5b3V0TWFwLmZpbmQoYmluZGlu
Zy5iaW5kaW5nKTsKICAgICAgICAgaWYgKGl0ZXJhdG9yID09IGxheW91dE1hcC5lbmQoKSkgewog
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCaW5kR3JvdXBMYXlvdXRCaW5kaW5nICV1
IG5vdCBmb3VuZCBpbiBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25OYW1lLCBiaW5kaW5n
LmJpbmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBhdXRvIGxh
eW91dEJpbmRpbmcgPSBpdGVyYXRvci0+dmFsdWU7CiAKICAgICAgICAgYXV0byBiaW5kaW5nUmVz
b3VyY2VWaXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbXShjb25zdCBSZWZQdHI8V2ViR1BVU2Ft
cGxlcj4mIHNhbXBsZXIpIC0+IE9wdGlvbmFsPEdQVUJpbmRpbmdSZXNvdXJjZT4gewogICAgICAg
ICAgICAgaWYgKCFzYW1wbGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8g
Z3B1U2FtcGxlciA9IHNhbXBsZXItPnNhbXBsZXIoKTsKICAgICAgICAgICAgIGlmICghZ3B1U2Ft
cGxlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHUFVCaW5kaW5nUmVzb3VyY2U+KG1ha2VSZWYoKmdwdVNhbXBsZXIpKTsKICAgICAgICAgfSwg
W10oY29uc3QgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiYgdmlldykgLT4gT3B0aW9uYWw8R1BV
QmluZGluZ1Jlc291cmNlPiB7CiAgICAgICAgICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gdmlldy0+dGV4dHVyZSgpOwogICAgICAg
ICAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4obWFrZVJlZigqdGV4dHVyZSkpOwog
ICAgICAgICB9LCBbJmxheW91dEJpbmRpbmcsIGZ1bmN0aW9uTmFtZV0gKFdlYkdQVUJ1ZmZlckJp
bmRpbmcgYnVmZmVyQmluZGluZykgLT4gT3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CiAg
ICAgICAgICAgICBpZiAoIWJ1ZmZlckJpbmRpbmcuYnVmZmVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gYnVmZmVyQmluZGluZy5idWZmZXItPmJ1ZmZlcigp
OwogICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
ICAgICBpZiAoIXZhbGlkYXRlQnVmZmVyQmluZGluZ1R5cGUoYnVmZmVyLCBsYXlvdXRCaW5kaW5n
LmV4dGVybmFsQmluZGluZywgZnVuY3Rpb25OYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFVCaW5kaW5nUmVzb3VyY2U+KEdQVUJ1ZmZl
ckJpbmRpbmcgeyBtYWtlUmVmKCpidWZmZXIpLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVy
QmluZGluZy5zaXplIH0pOwogICAgICAgICB9KTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBPcHRpb25h
bDxHUFVCaW5kR3JvdXBEZXNjcmlwdG9yPiBXZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yOjp0cnlD
cmVhdGVHUFVCaW5kR3JvdQogICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZSA9IFdURjo6dmlz
aXQoYmluZGluZ1Jlc291cmNlVmlzaXRvciwgYmluZGluZy5yZXNvdXJjZSk7CiAgICAgICAgIGlm
ICghYmluZGluZ1Jlc291cmNlKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFs
aWQgcmVzb3VyY2UgZm9yIGJpbmRpbmcgJXUhIiwgZnVuY3Rpb25OYW1lLCBsYXlvdXRCaW5kaW5n
LmV4dGVybmFsQmluZGluZy5iaW5kaW5nKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAg
ICAgYmluZEdyb3VwQmluZGluZ3MudW5jaGVja2VkQXBwZW5kKEdQVUJpbmRHcm91cEJpbmRpbmcg
eyBiaW5kaW5nLmJpbmRpbmcsIFdURk1vdmUoYmluZGluZ1Jlc291cmNlLnZhbHVlKCkpIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEVu
Y29kZXIuY3BwCmluZGV4IGVlNzEyMTRiNWMwYWVlZGQ5Nzc5ZTMzMjJhZjlmYzMzZGQ5Zjk3MjYu
Ljk3NzA5ZGVhNjE2NDE2MmU2MzQ4NTkxMDA4MmQ0MjI2MTdkNDYzMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAK
QEAgLTQ1LDcgKzQ1LDcgQEAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IFdlYkdQVUJ1ZmZl
ckNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVCdWZmZXJDb3B5VmlldygpIGMKIHsKICAgICBpZiAoIWJ1
ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewogICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BV
Q29tbWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgpAQCAtNTcsNyArNTcsNyBAQCBP
cHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6dHJ5Q3Jl
YXRlR1BVVGV4dHVyZUNvcHlWaWV3KAogewogICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+
dGV4dHVyZSgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2Rlcjog
SW52YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBB
ZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApp
bmRleCBkMjczZGViMGMyNWIzYjk0MTMzYjNmYzNhZmFmYzdmMGI4YTljNzhlLi5iNGVjNThjOWY3
NWRlMjg1MmFmYWVkYmI2OTcwZWFkYzRhODc1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcApAQCAtNDAsNyArNDAsNyBAQCBPcHRpb25hbDxHUFVDb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yPiBXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVhdAogICAg
IGF1dG8gY29tcHV0ZSA9IGNvbXB1dGVTdGFnZS50cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IoKTsKICAgICBpZiAoIWNvbXB1dGUpIHsKICAgICAgICAgZXJyb3JTY29wZXMu
Z2VuZXJhdGVFcnJvcigiR1BVRGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoKTogSW52YWxp
ZCBHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0
dXJuIEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0
KSwgV1RGTW92ZSgqY29tcHV0ZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCmlu
ZGV4IDIzYTZmMTcyNDU5MjEwMzc5YmQzYzJmNjU0NjA4MmRlMWExNzc3NmUuLjExZWQxYWVkZGE4
OTc1ZGI1ZDUxYTg2NjVjZWQ4MWE1NGNjODIzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBPcHRpb25hbDxHUFVQaXBlbGluZUxheW91dERlc2Ny
aXB0b3I+IFdlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjo6dHJ5Q3JlYXRlRwogICAgIGZv
ciAoY29uc3QgYXV0byYgbGF5b3V0IDogYmluZEdyb3VwTGF5b3V0cykgewogICAgICAgICBpZiAo
IWxheW91dCB8fCAhbGF5b3V0LT5iaW5kR3JvdXBMYXlvdXQoKSkgewogICAgICAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVURldmljZTo6Y3JlYXRlUGlwZWxpbmVMYXlvdXQoKTogSW52YWxpZCBHUFVC
aW5kR3JvdXBMYXlvdXQhIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgZ3B1TGF5b3V0cy51bmNoZWNrZWRBcHBlbmQobWFrZVJlZigqbGF5b3V0LT5iaW5kR3JvdXBM
YXlvdXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKaW5kZXggMGU1
ZjNiZTIyMjMwMGQ1YjRhYjZlMGZlNjA5YWU3ZDgwYTRiMmIxNy4uNDc3NWE4ODVmYzc2YjRjZjk1
YzU4M2U1ODY5OTQ5ZWUxODk5ZWFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0
b3IuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPEdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcj4gV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNj
cmlwdG9yOjp0cnlDcmVhdGVHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IoKSBjb25zdAog
ewogICAgIGlmICghbW9kdWxlIHx8ICFtb2R1bGUtPm1vZHVsZSgpIHx8IGVudHJ5UG9pbnQuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvciB7
IG1ha2VSZWYoKm1vZHVsZS0+bW9kdWxlKCkpLCAqdGhpcyB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY3BwCmluZGV4IGJmNDhlODNhYzljYjBiY2I3NjVkNDQwZjUxMzVhODZmY2VjMDE3ZjguLjQz
OTU3MTdiYjVlYzQzNWUxNTJiZjgxOWJkZWExNjBlMmI3MTJhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3I+IFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjp0cnlDcmVhdGVHUFVSZW5kZXIKICAgICAv
LyBGSVhNRTogSW1wcm92ZSBlcnJvciBjaGVja2luZyBhcyBXZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvciBpcyBhZGRlZCB0byBzcGVjLgogICAgIGlmIChjb2xvckF0dGFjaG1lbnRzLmlzRW1wdHko
KSkgewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6IE5vIGNv
bG9yIGF0dGFjaG1lbnRzIHNwZWNpZmllZCBmb3IgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IhIik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgVmVjdG9yPEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yPiBncHVDb2xvckF0dGFjaG1lbnRzOwpAQCAtNjAsNyArNjAsNyBAQCBPcHRpb25hbDxH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I6OnRyeUNy
ZWF0ZUdQVVJlbmRlcgogICAgICAgICAgICAgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50
LT50ZXh0dXJlKCkKICAgICAgICAgICAgIHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+
dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IhIik7Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogICAgICAgICBncHVDb2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciB7IG1ha2VSZWYoKmNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50
LT50ZXh0dXJlKCkpLCBjb2xvckF0dGFjaG1lbnQgfSk7CiAgICAgfQpAQCAtNzIsNyArNzIsNyBA
QCBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlcgogICAgICAgICAgICAgfHwgIWRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKQogICAgICAgICAgICAgfHwgIWRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKS0+aXNPdXRwdXRBdHRhY2htZW50
KCkpIHsKICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjog
SW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50
RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGdwdURlcHRoQXR0
YWNobWVudCA9IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciB7
IG1ha2VSZWYoKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSks
ICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAKaW5kZXggNDlmODM5MDRlZjdjZTlmYmQ1YjdjOWYyNGRmZGIxOGQ3YTNkOTU4Yy4u
NDUwNmU1NDgwMGRhMzBkNjU3OWVhZTAzNDUzMTBiOGY5MzY5NGRmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIE9wdGlvbmFsPEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjp0cnlDcmVh
dGVHCiAKICAgICBpZiAoIXZlcnRleCB8fCAoZnJhZ21lbnRTdGFnZSAmJiAhZnJhZ21lbnQpKSB7
CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVQ
cm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3IhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IFdlYiBHUFUgdmFsaWRhdGlvbiwgZS5nLiBmYWlsIGlmIGNvbG9yU3RhdGVzIGlzIGxhcmdlciB0
aGFuIChtYXggbnVtYmVyIG9mIHN1cHBvcnRlZCBjb2xvciBzdGF0ZXMpLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmNwcAppbmRleCBiNzNhZWQ3ODRhMmMyODY2YWU0ZDE0OTA5MGEyOTAwMjc4ZTYwNmU2Li5k
YzgyODI3ZmYzMDQ4NjgyZTA1MDkyNzg0ODRjNzkzMjc0NzBmOGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlw
dG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQCBPcHRpb25hbDxHUFVTd2FwQ2hhaW5EZXNjcmlwdG9y
PiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOjphc0dQVVN3YXBDaGFpbkRlc2NyaQogewogICAg
IGlmICghZGV2aWNlKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVDYW52YXNDb250ZXh0Ojpj
b25maWd1cmVTd2FwQ2hhaW4oKTogSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAg
IAogICAgIHJldHVybiBHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsgbWFrZVJlZihkZXZpY2UtPmRl
dmljZSgpKSwgKnRoaXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlRnJhbWVyLmNwcAppbmRleCA3OWQ3OThiNmU0
NmZkOGYwN2ViOTY3ODA3N2I2NTE4MmI2MzRlOTRmLi4wMWZkZmUwMjllNDZmY2U4NjJkNWU2MTZj
ZmM0OTVkNjljYzYxNDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVGcmFtZXIuY3BwCkBAIC03OCw3ICs3OCw3
IEBAIGJvb2wgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lOjpwcm9jZXNzUmVzcG9uc2Uo
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluCiAgICAgaW50IHdpbmRvd0JpdHMgPSAxNTsKICAg
ICBhdXRvIHBhcmFtZXRlciA9IHNlcnZlclBhcmFtZXRlcnMuZmluZCgibWF4X3dpbmRvd19iaXRz
Iik7CiAgICAgaWYgKHBhcmFtZXRlciAhPSBzZXJ2ZXJQYXJhbWV0ZXJzLmVuZCgpKSB7Ci0gICAg
ICAgIHdpbmRvd0JpdHMgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBh
cmFtZXRlci0+dmFsdWUpLnZhbHVlT3IoMCk7CisgICAgICAgIHdpbmRvd0JpdHMgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHBhcmFtZXRlci0+dmFsdWUpLnZhbHVlX29y
KDApOwogICAgICAgICBpZiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSB7CiAg
ICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiUmVjZWl2ZWQgaW52YWxpZCBtYXhfd2luZG93
X2JpdHMgcGFyYW1ldGVyIl9zOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlLmNwcAppbmRleCAwYTFhYmVhODgzZDdjY2U2NGM4N2YzY2E2ODcxZWE2YTI5OTZmMDcw
Li4xZTU1Yjg3MjVkZTYxMDZkYjJkZDAzNzU0YTFiODBjMGI5ODU4MjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5j
ZVNwYWNlLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNw
YWNlOjp1cGRhdGVJZk5lZWRlZCgpCiAKICAgICBpZiAoZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVy
cy5ib3VuZHMuc2l6ZSgpID49IE1pbmltdW1Cb3VuZHNWZXJ0aWNlcykgewogICAgICAgICAvLyBF
YWNoIHBvaW50IGhhcyB0byBtdWx0aXBsaWVkIGJ5IHRoZSBpbnZlcnNlIG9mIG9yaWdpbk9mZnNl
dC4KLSAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgYXV0
byB0cmFuc2Zvcm0gPSBvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGZvciAoYXV0byYgcG9pbnQg
OiBmcmFtZURhdGEuc3RhZ2VQYXJhbWV0ZXJzLmJvdW5kcykgewogICAgICAgICAgICAgYXV0byBt
YXBwZWRQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CiAgICAgICAgICAgICAvLyBU
aGUgeSB2YWx1ZSBvZiBlYWNoIHBvaW50IE1VU1QgYmUgMC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCmluZGV4IDcwMDcxYmNiZDI4OWFmM2UwZDQwYjA4OTc3
NzM5OWQxNDY5MWNhM2IuLjliMDVmNzBlNDVhODk4ZGQzNmU1MTM0MjZmMGU2MDgzYTM4N2FlYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTIz
LDEyICsxMjMsMTIgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVk
UG9zZT4+IFdlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjb25zdAogICAgICAgICAvLyBGSVhNRTog
Y2hlY2sgaWYgc3BhY2XigJlzIHBvc2UgcmVsYXRpdmUgdG8gYmFzZVNwYWNlIGhhcyBiZWVuIGRl
dGVybWluZWQgaW4gdGhlIHBhc3QuCiAgICAgICAgIC8vIEFueXdheSB0aGlzIGVtdWxhdGlvbiBp
cyB1c3VhbGx5IHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gaW4gdGhlIHBvc2UgKGUuZy4gT3BlblhS
KQogICAgICAgICAvLyBzbyB3ZSBzaG91bGRuJ3QgaGl0IHRoaXMgcGF0aCBpbiBtb3N0IFhSUGxh
dGZvcm0gcG9ydHMuCi0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBhdXRvIGJhc2VUcmFuc2Zvcm0g
PSBiYXNlU3BhY2UuZWZmZWN0aXZlT3JpZ2luKCk7CiAgICAgaWYgKCFiYXNlVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpKQotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRy
YW5zZm9ybS5pbnZlcnNlKCkgKiBzcGFjZS5lZmZlY3RpdmVPcmlnaW4oKTsKICAgICBib29sIGVt
dWxhdGVkUG9zaXRpb24gPSBzcGFjZS5pc1Bvc2l0aW9uRW11bGF0ZWQoKSB8fCBiYXNlU3BhY2Uu
aXNQb3NpdGlvbkVtdWxhdGVkKCk7CkBAIC0xOTIsNyArMTkyLDcgQEAgRXhjZXB0aW9uT3I8UmVm
UHRyPFdlYlhSVmlld2VyUG9zZT4+IFdlYlhSRnJhbWU6OmdldFZpZXdlclBvc2UoY29uc3QgRG9j
dW1lbnQmIGQKICAgICAgICAgICAgIHJldHVybiBtYXRyaXg7CiAgICAgICAgIH0sIFsmXShjb25z
dCBzdGQ6Om51bGxwdHJfdCYpIHsKICAgICAgICAgICAgIC8vIFVzZSBhc3BlY3QgcHJvamVjdGlv
biBmb3IgaW5saW5lIHNlc3Npb25zCi0gICAgICAgICAgICBkb3VibGUgZm92ID0gIG1fc2Vzc2lv
bi0+cmVuZGVyU3RhdGUoKS5pbmxpbmVWZXJ0aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVPcihwaU92
ZXJUd29Eb3VibGUpOworICAgICAgICAgICAgZG91YmxlIGZvdiA9ICBtX3Nlc3Npb24tPnJlbmRl
clN0YXRlKCkuaW5saW5lVmVydGljYWxGaWVsZE9mVmlldygpLnZhbHVlX29yKHBpT3ZlclR3b0Rv
dWJsZSk7CiAgICAgICAgICAgICBmbG9hdCBhc3BlY3QgPSAxOwogICAgICAgICAgICAgYXV0byBs
YXllciA9IG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5iYXNlTGF5ZXIoKTsKICAgICAgICAgICAg
IGlmIChsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJSZW5kZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSUmVu
ZGVyU3RhdGUuY3BwCmluZGV4IDFjOGNiNjcyZmQxMWFlYzZlZDMyNmMwM2M3YTVjMGI2ODZkOTMz
YjkuLjk0MzJhNWFmMTkzOGI0OTRiMTFlOWNiYzZkM2QzOTE0Mjk1NTk2NDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBSZWY8V2ViWFJSZW5kZXJTdGF0ZT4gV2ViWFJSZW5kZXJTdGF0ZTo6Y3JlYXRl
KFhSU2Vzc2lvbk1vZGUgbW9kZSkKIHsKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLyNpbml0aWFsaXplLXRoZS1yZW5kZXItc3RhdGUKICAgICAvLyBkZXB0aE5l
YXIsIGRlcHRoRmFyIGFuZCBiYXNlTGF5ZXIgYXJlIGluaXRpYWxpemVkIGluIHRoZSBjbGFzcyBk
ZWZpbml0aW9uCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZW5kZXJTdGF0ZShtb2Rl
ID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSA/IG1ha2VPcHRpb25hbChwaU92ZXJUd29Eb3VibGUp
IDogV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJSZW5kZXJT
dGF0ZShtb2RlID09IFhSU2Vzc2lvbk1vZGU6OklubGluZSA/IHN0ZDo6bWFrZV9vcHRpb25hbChw
aU92ZXJUd29Eb3VibGUpIDogc3RkOjpudWxsb3B0KSk7CiB9CiAKIFdlYlhSUmVuZGVyU3RhdGU6
OldlYlhSUmVuZGVyU3RhdGUoT3B0aW9uYWw8ZG91YmxlPiBpbmxpbmVWZXJ0aWNhbEZpZWxkT2ZW
aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmlu
ZGV4IDk3ZDIzMmRkMmI1ZWY4NTljMWIxOWJiMWZiOTNjNWJlZTRiMDljZmUuLjA1NGQ5YWJkOTdm
Y2E5YzQ3OTM0OTE0MzhhZTk5NTk2N2Y3NjExZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYlhS
U2Vzc2lvbjo6ZGlkQ29tcGxldGVTaHV0ZG93bigpCiAgICAgLy8gUmVzb2x2ZSBlbmQgcHJvbWlz
ZSBmcm9tIFhSU2Vzc2lvbjo6ZW5kKCkKICAgICBpZiAobV9lbmRQcm9taXNlKSB7CiAgICAgICAg
IG1fZW5kUHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICBtX2VuZFByb21pc2UgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fZW5kUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBGcm9tIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI3NodXQtZG93
bi10aGUtc2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVt
LmNwcAppbmRleCA3NDFhNjM4NTk1NTY2MzBmMzBhNDAyOTIxODI3OWQ3YWYxYjlkMTFmLi42ZTNh
YjdjMjEyM2QzNDA0MjAyYmU0MWUwZDBlZjBhYjVkYjQ0YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIE9wdGlv
bmFsPFdlYlhSU3lzdGVtOjpSZXNvbHZlZFJlcXVlc3RlZEZlYXR1cmVzPiBXZWJYUlN5c3RlbTo6
cmVzb2x2ZVJlcXVlc3RlZEZlCiAgICAgfTsKIAogICAgIGlmICghcGFyc2VGZWF0dXJlcyhyZXF1
aXJlZEZlYXR1cmVzV2l0aERlZmF1bHRGZWF0dXJlcywgUGFyc2luZ01vZGU6OlN0cmljdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBwYXJzZUZlYXR1cmVzKGluaXQub3B0aW9uYWxGZWF0dXJlcywgUGFyc2luZ01vZGU6
Okxvb3NlKTsKICAgICByZXR1cm4gcmVzb2x2ZWRGZWF0dXJlczsKQEAgLTMzOSw3ICszMzksNyBA
QCBPcHRpb25hbDxXZWJYUlN5c3RlbTo6RmVhdHVyZUxpc3Q+IFdlYlhSU3lzdGVtOjpyZXNvbHZl
RmVhdHVyZVBlcm1pc3Npb25zKFhSU2VzcwogICAgIC8vICA2LjEuIFNldCBzdGF0dXMncyBzdGF0
ZSB0byAiZGVuaWVkIi4KICAgICAvLyAgNi4yLiBBYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAo
IXJlc29sdmVkRmVhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyA3LiBMZXQgKGNvbnNlbnRSZXF1aXJlZCwg
Y29uc2VudE9wdGlvbmFsLCBncmFudGVkKSBiZSB0aGUgZmllbGRzIG9mIHJlc3VsdC4KICAgICAv
LyA4LiBUaGUgdXNlciBhZ2VudCBNQVkgYXQgdGhpcyBwb2ludCBhc2sgdGhlIHVzZXIncyBwZXJt
aXNzaW9uIGZvciB0aGUgY2FsbGluZyBhbGdvcml0aG0gdG8gdXNlIGFueSBvZiB0aGUgZmVhdHVy
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uaAppbmRleCAwYWMy
NGI1YzZmZjUxMGVjMzRlYTQ4OTk0MzI0YWVmZDM5OTYyOThjLi42NDU4NTc0ZTAxODQ5NTFhYTgw
MzQ3ZjE5ODAzOWFjZTBlOGI5MjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlN5c3RlbS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lk
IHJlcXVlc3RGcmFtZShQbGF0Zm9ybVhSOjpEZXZpY2U6OlJlcXVlc3RGcmFtZUNhbGxiYWNrJiYp
IGZpbmFsOwogICAgICAgICBWZWN0b3I8RGV2aWNlOjpWaWV3RGF0YT4gdmlld3MoWFJTZXNzaW9u
TW9kZSkgY29uc3QgZmluYWw7Ci0gICAgICAgIE9wdGlvbmFsPFBsYXRmb3JtWFI6OkxheWVySGFu
ZGxlPiBjcmVhdGVMYXllclByb2plY3Rpb24odWludDMyX3QsIHVpbnQzMl90LCBib29sKSBmaW5h
bCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6
TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJv
b2wpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgICAgICB2b2lkIGRlbGV0ZUxh
eWVyKFBsYXRmb3JtWFI6OkxheWVySGFuZGxlKSBmaW5hbCB7IH0KICAgICB9OwogICAgIER1bW15
SW5saW5lRGV2aWNlIG1fZGVmYXVsdElubGluZURldmljZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJWaWV3LmNwcAppbmRleCAyM2M4ZWVhNDE1Mjc0ZDA4NWQzZjljMzY3MjY2
ODM4MTFlMmQ4NTIxLi5mY2U2YmYxMTQ1ZmUwM2UwY2QxNzZmZDE3MTdhODhmZWVjOTU1MDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIFdlYlhSVmlldzo6fldlYlhSVmlldygpID0gZGVmYXVsdDsKIE9wdGlvbmFsPGRvdWJs
ZT4gV2ViWFJWaWV3OjpyZWNvbW1lbmRlZFZpZXdwb3J0U2NhbGUoKSBjb25zdAogewogICAgIC8v
IFJldHVybiBudWxsIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgaW1wbGVtZW50IGEgaGV1cmlzdGlj
IG9yIG1ldGhvZCBmb3IgZGV0ZXJtaW5pbmcgYSByZWNvbW1lbmRlZCBzY2FsZS4KLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIGh0dHBz
Oi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2RvbS14cnZpZXctcmVxdWVzdHZpZXdw
b3J0c2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCmluZGV4IDZjN2EyNjIyNTgxYTIx
NmIwZTZiNzBjN2RiMmZkYTUzY2U4NGY2MjkuLjViMzU2YTMxZmZhMGU5NWZiOThiMzM0OTljYWI1
MTgwODFiNjAzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaApAQCAtOTksNyArOTks
NyBAQCBPcHRpb25hbDxTZXNzaW9uSUQ+IFNlc3Npb25JRDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNlc3Npb25JRDsKICAgICBkZWNvZGVyID4+IHNl
c3Npb25JRDsKICAgICBpZiAoIXNlc3Npb25JRCB8fCAhaXNWYWxpZFNlc3Npb25JRFZhbHVlKCpz
ZXNzaW9uSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBTZXNzaW9uSUQgeyAqc2Vzc2lvbklEIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENv
bnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9PdXRwdXRDb250
ZXh0Lm1tCmluZGV4IDkzMzRhYTExNzU3NzkxNjdhNGNmM2JjMTcwY2E2Yzc4ZjQ2ZWZjMWEuLjBj
OTFmNjVkNjU0MDNjY2Y1Y2MyNGUzNDg4MTA1ZmExNmJmMTI1NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbQpAQCAtNDcs
NyArNDcsNyBAQCBPcHRpb25hbDxPdXRwdXRDb250ZXh0PiYgT3V0cHV0Q29udGV4dDo6c2hhcmVk
QXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8T3B0aW9uYWw8T3V0cHV0Q29udGV4dD4+IHNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0
cHV0Q29udGV4dCA9IFtdICgpIC0+IE9wdGlvbmFsPE91dHB1dENvbnRleHQ+IHsKICAgICAgICAg
aWYgKCFbUEFMOjpnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KV0pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgICAg
IEFWT3V0cHV0Q29udGV4dCogY29udGV4dCA9IFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHNo
YXJlZFN5c3RlbUF1ZGlvQ29udGV4dF07CkBAIC01NSw3ICs1NSw3IEBAIE9wdGlvbmFsPE91dHB1
dENvbnRleHQ+JiBPdXRwdXRDb250ZXh0OjpzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENv
bnRleHQoKQogICAgICAgICBhdXRvIGNvbnRleHQgPSBbZ2V0QVZPdXRwdXRDb250ZXh0Q2xhc3Mo
KSBzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHRdOwogI2VuZGlmCiAgICAgICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBPdXRwdXRDb250ZXh0
KHJldGFpblB0cihjb250ZXh0KSk7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oCmluZGV4IDU5YmYyNGQ1ZWMyMzQxNTMxY2Iy
M2E3MjFiYWQwZWVmOWY2OTM5YWYuLjI3NGUwYWFmMWRmZWI4YzcyMTYxODA3NWFhNzJiZTA3NmE0
MTY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9V
dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvVXRp
bGl0aWVzLmgKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxpbnQ+IGFl
c0FsZ29yaXRobUZvcktleVNpemUoc2l6ZV90IGtleVNpemUpCiAgICAgY2FzZSAyNTY6CiAgICAg
ICAgIHJldHVybiBHQ1JZX0NJUEhFUl9BRVMyNTY7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by90YXNuMS9VdGlsaXRpZXMu
Y3BwCmluZGV4IGM0MzhlNDI0ZjhjM2VlOWJmNzYzNWNmMDc2YmFkMTNkNTU4NDg3NzEuLjQ1NWUw
ODM5M2VlNTAzNjhkNzg0Nzg1Mjk3Mjk2MjNmNjBiODQ3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcApAQCAtMTI2LDE4ICsxMjYs
MTggQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBlbGVtZW50RGF0YShhc24xX25vZGUgcm9v
dCwgY29uc3QgY2hhciogZWxlbWVudE5hbWUpCiAgICAgdW5zaWduZWQgdHlwZSA9IDA7CiAgICAg
aW50IHJldCA9IGFzbjFfcmVhZF92YWx1ZV90eXBlKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRy
LCAmbGVuZ3RoLCAmdHlwZSk7CiAgICAgaWYgKHJldCAhPSBBU04xX01FTV9FUlJPUikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICh0eXBlID09IEFTTjFfRVRZUEVfQklUX1NUUklORykgewogICAgICAgICBpZiAobGVu
Z3RoICUgOCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBsZW5ndGggLz0gODsKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YShsZW5ndGgpOwogICAgIHJldCA9IGFzbjFfcmVhZF92YWx1ZShy
b290LCBlbGVtZW50TmFtZSwgZGF0YS5kYXRhKCksICZsZW5ndGgpOwogICAgIGlmIChyZXQgIT0g
QVNOMV9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0xNDcsMTIgKzE0Nywx
MiBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGVuY29kZWREYXRhKGFzbjFfbm9kZSByb290
LCBjb25zdCBjaGFyKiBlbGVtZW50TmFtZSkKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBpbnQg
cmV0ID0gYXNuMV9kZXJfY29kaW5nKHJvb3QsIGVsZW1lbnROYW1lLCBudWxscHRyLCAmbGVuZ3Ro
LCBudWxscHRyKTsKICAgICBpZiAocmV0ICE9IEFTTjFfTUVNX0VSUk9SKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGEobGVuZ3RoKTsKICAgICByZXQgPSBhc24xX2Rlcl9jb2Rpbmcocm9v
dCwgZWxlbWVudE5hbWUsIGRhdGEuZGF0YSgpLCAmbGVuZ3RoLCBudWxscHRyKTsKICAgICBpZiAo
cmV0ICE9IEFTTjFfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggYWZjYzZkYmQy
YmU2MDlmNGZiYTA4YWY5MTk0N2FkZTljMmIxYTliMC4uZWFiODA0NWJhNzhhMjVmNGY1NTMyYmQy
NjkxMmU4YTRjYjUxMmJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVS
YW5nZQogCiAgICAgYXV0byBzZWFyY2hSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzdGFydFBvc2l0
aW9uLCBlbmRQb3NpdGlvbik7CiAgICAgaWYgKCFzZWFyY2hSYW5nZSB8fCBzZWFyY2hSYW5nZS0+
Y29sbGFwc2VkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHRhcmdldE9mZnNldCA9IGNoYXJhY3RlckNvdW50
KHsgc2VhcmNoUmFuZ2UtPnN0YXJ0LCBvcmlnaW5hbFJhbmdlLnN0YXJ0IH0sIFRleHRJdGVyYXRv
ckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKICAgICByZXR1cm4g
ZmluZENsb3Nlc3RQbGFpblRleHQoKnNlYXJjaFJhbmdlLCBtYXRjaFRleHQsIHsgfSwgdGFyZ2V0
T2Zmc2V0KTsKQEAgLTIxMjQsNyArMjEyNCw3IEBAIHN0YXRpYyBOb2RlKiByZXNldE5vZGVBbmRP
ZmZzZXRGb3JSZXBsYWNlZE5vZGUoTm9kZSYgcmVwbGFjZWROb2RlLCBpbnQmIG9mZnNldCwKIHN0
YXRpYyBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBib3VuZGFyeVBvaW50KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlzU3RhcnQpCiB7CiAgICAgaWYgKGNoYXJh
Y3Rlck9mZnNldC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCBvZmZzZXQgPSBjaGFyYWN0ZXJPZmZz
ZXQuc3RhcnRJbmRleCArIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgTm9kZSogbm9kZSA9
IGNoYXJhY3Rlck9mZnNldC5ub2RlOwpAQCAtMjE0MCw3ICsyMTQwLDcgQEAgc3RhdGljIE9wdGlv
bmFsPEJvdW5kYXJ5UG9pbnQ+IGJvdW5kYXJ5UG9pbnQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmYKICAgICAgICAgbm9kZSA9IHJlc2V0Tm9kZUFuZE9mZnNldEZvclJlcGxhY2Vk
Tm9kZSgqbm9kZSwgb2Zmc2V0LCBjaGFyYWN0ZXJDb3VudCk7CiAKICAgICBpZiAoIW5vZGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4geyB7ICpub2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob2Zmc2V0KSB9
IH07CiB9CkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmpl
Y3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYQogICAg
IGF1dG8gc3RhcnQgPSBib3VuZGFyeVBvaW50KGFscmVhZHlJbk9yZGVyID8gY2hhcmFjdGVyT2Zm
c2V0MSA6IGNoYXJhY3Rlck9mZnNldDIsIHRydWUpOwogICAgIGF1dG8gZW5kID0gYm91bmRhcnlQ
b2ludChhbHJlYWR5SW5PcmRlciA/IGNoYXJhY3Rlck9mZnNldDIgOiBjaGFyYWN0ZXJPZmZzZXQx
LCBmYWxzZSk7CiAgICAgaWYgKCFzdGFydCB8fCAhZW5kKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgKnN0
YXJ0LCAqIGVuZCB9IH07CiB9CiAKQEAgLTI0NTIsMTYgKzI0NTIsMTYgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJE
YXRhKFRleHRNYXIKIE9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0
TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3MpCiB7CiAgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQb3NpdGlv
biBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwogICAgIE5vZGUqIGRvbU5v
ZGUgPSBkZWVwUG9zLmRlcHJlY2F0ZWROb2RlKCk7CiAgICAgQVNTRVJUKGRvbU5vZGUpOwogICAg
IGlmICghZG9tTm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9k
ZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVs
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0
eXBlIHJlZmVycmluZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ug
c2hvdWxkCiAgICAgLy8gc2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zm
c2V0IHNvIHRoYXQgdGhlIG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCkBAIC0y
NDc1LDcgKzI0NzUsNyBAQCBPcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6
dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVgogICAgIC8vIGZpbmQgb3Ig
Y3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUKICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAg
IGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKIAogICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUg
emVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBi
eXRlLWVxdWl2YWxlbmNlLgpAQCAtMjUwMCwxNSArMjUwMCwxNSBAQCBPcHRpb25hbDxUZXh0TWFy
a2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24o
Y29uc3QgVgogT3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJr
ZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQmIHRleHRDb250cm9sKQogewogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pih0ZXh0
Q29udHJvbCkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpLmlzUGFz
c3dvcmRGaWVsZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSB0ZXh0Q29udHJv
bC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmdGV4
dENvbnRyb2wpOwogICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBi
ZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9y
IGJ5dGUtZXF1aXZhbGVuY2UuCiAgICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFk
IGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDNmNzRlOTVlOTFhZDc5
ZDUyODM4YTcwZWQ4YWVhN2QyMzEwYWRhNWYuLjVjM2JmMmYxN2Y2ODk3ZGIxNTgzY2VkYzM1MDZi
OTU5NWFlYTg4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCkBAIC02MjEsNyArNjIxLDcgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2Vs
ZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpzZXRJc1N5bmNocm9uaXppbmdTZWxlY3Rpb24oYm9vbCkgeyB9CiBp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0U2VsZWN0aW9uSW50ZW50KGNvbnN0IEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50JikgeyB9Ci1pbmxpbmUgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKSB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH0KK2lubGluZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFu
Z2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogaW5saW5lIElu
dFJlY3QgQVhPYmplY3RDYWNoZTo6YWJzb2x1dGVDYXJldEJvdW5kc0ZvckNoYXJhY3Rlck9mZnNl
dChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIGlubGluZSBD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgoaW50
LCBjb25zdCBBWENvcmVPYmplY3QqKSB7IHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsgfQogaW5s
aW5lIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sLCBib29sKSB7IHJldHVybiBDaGFy
YWN0ZXJPZmZzZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNTQzOTUyOWFhNzk2MDkzOTg5ZWJkNDNhZGFl
ZWY4OGM0ZGRmZmIyNy4uNWRmZGQ4ZDIzYmEyZjYwOTFmZjRmYWQ2ZjYxMzM5NmM4MTk0MTk1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCkBAIC0yODEsMjAgKzI4MSwyMCBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNj
ZXNzaWJpbGl0eU9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcwog
ewogICAgIGF1dG8gbm9kZSA9IHRoaXMtPm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLT5lZGl0b3IoKTsKIAogICAgIFRleHRDaGVja2Vy
Q2xpZW50KiB0ZXh0Q2hlY2tlciA9IGVkaXRvci50ZXh0Q2hlY2tlcigpOwogICAgIGlmICghdGV4
dENoZWNrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBtaXNzcGVsbGlu
Z3M7CiAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoKnRleHRDaGVja2VyLCBzdHJpbmdWYWx1ZSgp
LCBUZXh0Q2hlY2tpbmdUeXBlOjpTcGVsbGluZywgbWlzc3BlbGxpbmdzLCBmcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkpOwpAQCAtMzE0LDcgKzMxNCw3IEBAIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjptaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiBzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0CkBAIC01MjYsNyArNTI2LDcgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJhbmdlT2ZTdHJpbmdDbG9zZXN0VG9SYW5n
ZUluRGlyZWN0aW8KIHsKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYm9vbCBpc0JhY2t3YXJkU2VhcmNoID0gc2VhcmNoRGly
ZWN0aW9uID09IEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb246OlByZXZpb3VzOwogICAgIEZp
bmRPcHRpb25zIGZpbmRPcHRpb25zIHsgQXRXb3JkU3RhcnRzLCBBdFdvcmRFbmRzLCBDYXNlSW5z
ZW5zaXRpdmUsIFN0YXJ0SW5TZWxlY3Rpb24gfTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0aW9uUmFuZ2UoKSBjb25z
dAogewogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoYXV0byByYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5m
aXJzdFJhbmdlKCkpCiAgICAgICAgIHJldHVybiAqcmFuZ2U7CkBAIC01OTEsNyArNTkxLDcgQEAg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZpbmRUZXh0UmFuZ2Uo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHMKICAgICAgICAgaWYgKGVsZW1lbnQoKSAmJiBlbGVtZW50
KCktPmlzVGV4dEZpZWxkKCkpIHsKICAgICAgICAgICAgIGlmICghZm91bmQtPnN0YXJ0Q29udGFp
bmVyKCkuaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoZWxlbWVudCgpKQogICAgICAg
ICAgICAgICAgIHx8ICFmb3VuZC0+ZW5kQ29udGFpbmVyKCkuaXNEZXNjZW5kYW50T3JTaGFkb3dE
ZXNjZW5kYW50T2YoZWxlbWVudCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIGZvdW5kOwpAQCAtMTEwNywxNyArMTEwNywxNyBAQCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRSYW5nZShj
b25zdCBQbGFpblRleAogewogICAgIHVuc2lnbmVkIHRleHRMZW5ndGggPSBnZXRMZW5ndGhGb3JU
ZXh0UmFuZ2UoKTsKICAgICBpZiAocmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGggPiB0ZXh0TGVu
Z3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIC8vIEF2b2lkIHNldHRpbmcgc2VsZWN0aW9uIHRvIHVuZWRpdGFibGUgcGFy
ZW50IG5vZGUgaW4gRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UuIFNlZSB3ZWJraXQu
b3JnL2IvMjA2MDkzLgogICAgIGlmIChyYW5nZS5pc051bGwoKSAmJiAhdGV4dExlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpIHsK
ICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0ID0gY2FjaGUtPmNoYXJhY3Rlck9mZnNldEZv
ckluZGV4KHJhbmdlLnN0YXJ0LCB0aGlzKTsKICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9
IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5zdGFydCArIHJhbmdlLmxlbmd0
aCwgdGhpcyk7CiAgICAgICAgIHJldHVybiBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0
ZXJPZmZzZXRzKHN0YXJ0LCBlbmQpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFZpc2libGVQb3NpdGlvblJhbmdlIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmxpbmVSYW5nZUZvclBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgdmlzaWJsZVBvc2l0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCBiZDcxY2YwZDM1MzY0MGIyNWVjN2U2NzYzZWNiZDY2ODI1ZTUxODE5Li40
ODk0Zjg3NzFkY2E1MzliMTUyZjZmZWQ1NzEwN2NjMGQxZmE2OWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMjM5Myw3ICsyMzkzLDcgQEAgLSAoTlNSYW5n
ZSlfY29udmVydFRvTlNSYW5nZTooY29uc3QgU2ltcGxlUmFuZ2UmKXJhbmdlCiAtIChPcHRpb25h
bDxTaW1wbGVSYW5nZT4pX2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlCiB7CiAgICAg
aWYgKHJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBvdXIgY3JpdGlj
YWwgYXNzdW1wdGlvbiBpcyB0aGF0IHdlIGFyZSBvbmx5IGNhbGxlZCBieSBpbnB1dCBtZXRob2Rz
IHRoYXQKICAgICAvLyBjb25jZW50cmF0ZSBvbiBhIGdpdmVuIGFyZWEgY29udGFpbmluZyB0aGUg
c2VsZWN0aW9uCkBAIC0yNDA1LDcgKzI0MDUsNyBAQCAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4p
X2NvbnZlcnRUb0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlCiAgICAgYXV0byBzZWxlY3Rpb25Sb290
ID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKTsKICAgICBhdXRvIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJv
b3QgOiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFzY29wZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKCpzY29wZSksIHJhbmdlKTsKIH0KQEAgLTI3NzgsMTEgKzI3NzgsMTEgQEAgLSAoT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRnJvbU1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIHdp
dGhUZXh0OihOU1N0cmluZwogewogICAgIGF1dG8gb3JpZ2luYWxSYW5nZSA9IFtzZWxmIHJhbmdl
Rm9yVGV4dE1hcmtlcnM6bWFya2Vyc107CiAgICAgaWYgKCFvcmlnaW5hbFJhbmdlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBjYWNoZS0+
cmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZSgqb3JpZ2luYWxSYW5nZSwgdGV4dCk7CiB9CkBAIC0y
ODUxLDE3ICsyODUxLDE3IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlv
dXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNlCiAtIChPcHRpb25hbDxT
aW1wbGVSYW5nZT4pcmFuZ2VGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKXRleHRNYXJrZXJzCiB7
CiAgICAgaWYgKFt0ZXh0TWFya2VycyBjb3VudF0gIT0gMikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciAqc3RhcnRNYXJrZXIgPSBbdGV4dE1hcmtlcnMgb2JqZWN0QXRJ
bmRleDowXTsKICAgICBXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqZW5kTWFya2VyID0gW3Rl
eHRNYXJrZXJzIG9iamVjdEF0SW5kZXg6MV07CiAgICAgCiAgICAgaWYgKCFbc3RhcnRNYXJrZXIg
aXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgY2xhc3NdXSB8fCAhW2Vu
ZE1hcmtlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11d
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIENoYXJh
Y3Rlck9mZnNldCBzdGFydENoYXJhY3Rlck9mZnNldCA9IFtzdGFydE1hcmtlciBjaGFyYWN0ZXJP
ZmZzZXRdOwogICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBbZW5kTWFy
a2VyIGNoYXJhY3Rlck9mZnNldF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGFl
NWMzZDkxNWQwZWQ1MTRiNjIyOGM3OGQxOGE5YTM2NDMwZTE1NjguLmQ2NDY3MDYxYzY1ZDQ4NzY4
NTBiZTFhY2RmMjE3NGEzODIzMGY0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBA
IC05NzAsNyArOTcwLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6
OnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmEKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0
KCk7Ci0gICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmplY3QtPnJhbmdlRm9yUGxhaW5UZXh0UmFu
Z2UoYXhSYW5nZSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGF4T2JqZWN0ID8gYXhPYmpl
Y3QtPnJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoYXhSYW5nZSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IFN0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpzdHJpbmdGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpIGNvbnN0CkBAIC0xMTQ2LDcgKzExNDYsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQVhJc29sYXRlZE9iamVjdDo6bWlzc3BlbGxpbmdSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYg
cmFuZwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byogYXhPYmplY3Qg
PSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKLSAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+
bWlzc3BlbGxpbmdSYW5nZShyYW5nZSwgZGlyZWN0aW9uKSA6IFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+bWlzc3BlbGxpbmdSYW5nZShyYW5nZSwgZGlyZWN0
aW9uKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogRmxvYXRSZWN0IEFYSXNvbGF0ZWRPYmplY3Q6OnJl
bGF0aXZlRnJhbWUoKSBjb25zdApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRSYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9i
amVjdCgpOwotICAgIHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT5lbGVtZW50UmFuZ2UoKSA6
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+ZWxlbWVudFJh
bmdlKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBBWElzb2xhdGVkT2JqZWN0OjpzZWxl
Y3RlZFRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggM2NmNGEyYThiMjYzMTEyYWFkYmRhZmVkZDAy
OTljMmU0NDFjZDBiNi4uYzg4YTNkNjYxMzM2YTVkZTFlMGYxOTQ1OGUzOGMwMzI0Mjc2NzAxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNo
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCkBAIC03NjUsMTIgKzc2NSwxMiBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlcgog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFjYWNoZSB8fCAhdGV4dE1h
cmtlclJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFydFRleHRNYXJrZXIgPSBBWFRleHRNYXJrZXJS
YW5nZVN0YXJ0KHRleHRNYXJrZXJSYW5nZSk7CiAgICAgYXV0byBlbmRUZXh0TWFya2VyID0gQVhU
ZXh0TWFya2VyUmFuZ2VFbmQodGV4dE1hcmtlclJhbmdlKTsKICAgICBpZiAoIXN0YXJ0VGV4dE1h
cmtlciB8fCAhZW5kVGV4dE1hcmtlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENoYXJhY3Rlck9mZnNldCBzdGFydENo
YXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHN0YXJ0
VGV4dE1hcmtlci5nZXQoKSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9mZnNl
dCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIGVuZFRleHRNYXJrZXIuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IDQ0ODU4
N2RhOGJjOGI0NTZmNWYxY2RmODNhMmJjNmVjOGI5N2I5NjcuLmFkYzc0MDU4NWU5MjFlMDFiMmVk
OThmNWNkNjBhN2IxYWY5NWM1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UubW0KQEAgLTY2MSw3ICs2NjEsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eSBhY2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdQogc3Rh
dGljIE9wdGlvbmFsPEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IG1ha2VWZWN0b3JFbGVtZW50KGNv
bnN0IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkqLCBpZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYg
KCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7IHsgYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZyhhcnJheUVsZW1lbnQpIH0g
fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApp
bmRleCA3MmE5ZWYxYjUxY2ZhN2JlMDRlN2M5YjVjNjM4YjE4NDI0MDY1NDIyLi5jOWU4ZGYxZmNk
NTg3ZTlhMWEyODAyY2Y4NDQyODk1YjI5ZDFiYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcApAQCAtODIsNyArODIsNyBAQCBCYXNpY0VmZmVjdFRp
bWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJhc2ljVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0
YXJ0VGltZSkgYwogICAgICAgICAvLyBPdGhlcndpc2UsIHRoZSBsb2NhbCB0aW1lIGlzIHVucmVz
b2x2ZWQuCiAgICAgICAgIGlmIChtX2FuaW1hdGlvbikKICAgICAgICAgICAgIHJldHVybiBtX2Fu
aW1hdGlvbi0+Y3VycmVudFRpbWUoc3RhcnRUaW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9KCk7CiAKICAgICBhdXRv
IHBoYXNlID0gW3RoaXMsIGxvY2FsVGltZV0oKSAtPiBBbmltYXRpb25FZmZlY3RQaGFzZSB7CkBA
IC0xMzUsNyArMTM1LDcgQEAgQmFzaWNFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRC
YXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpIGMKICAgICAgICAgICAgIGlm
IChtX2ZpbGwgPT0gRmlsbE1vZGU6OkJhY2t3YXJkcyB8fCBtX2ZpbGwgPT0gRmlsbE1vZGU6OkJv
dGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsb2NhbFRpbWUgLSBtX2RlbGF5
LCAwX3MpOwogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0
aW1lIHZhbHVlLgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUgYW5p
bWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWN0aXZlIHBoYXNlLCByZXR1cm4gdGhlIHJlc3VsdCBv
ZiBldmFsdWF0aW5nIGxvY2FsIHRpbWUgLSBzdGFydCBkZWxheS4KQEAgLTE1MCwxMSArMTUwLDEx
IEBAIEJhc2ljRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0QmFzaWNUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjCiAgICAgICAgICAgICBpZiAobV9maWxsID09IEZp
bGxNb2RlOjpGb3J3YXJkcyB8fCBtX2ZpbGwgPT0gRmlsbE1vZGU6OkJvdGgpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KHN0ZDo6bWluKCpsb2NhbFRpbWUgLSBtX2RlbGF5LCBtX2Fj
dGl2ZUR1cmF0aW9uKSwgMF9zKTsKICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIGFu
IHVucmVzb2x2ZWQgdGltZSB2YWx1ZS4KLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gT3RoZXJ3aXNlICh0aGUgbG9jYWwgdGltZSBpcyB1bnJlc29sdmVkKSwgcmV0dXJuIGFuIHVu
cmVzb2x2ZWQgdGltZSB2YWx1ZS4KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9KCk7CiAKICAgICByZXR1cm4geyBsb2NhbFRp
bWUsIGFjdGl2ZVRpbWUsIG1fZW5kVGltZSwgbV9hY3RpdmVEdXJhdGlvbiwgcGhhc2UgfTsKQEAg
LTE4NSw3ICsxODUsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6Omdl
dENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VAogCiAgICAgICAgIC8vIDEu
IElmIHRoZSBhY3RpdmUgdGltZSBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KICAg
ICAgICAgaWYgKCFhY3RpdmVUaW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gMi4gQ2FsY3Vs
YXRlIGFuIGluaXRpYWwgdmFsdWUgZm9yIG92ZXJhbGwgcHJvZ3Jlc3MgYmFzZWQgb24gdGhlIGZp
cnN0IG1hdGNoaW5nIGNvbmRpdGlvbiBmcm9tIGJlbG93LAogICAgICAgICBkb3VibGUgb3ZlcmFs
bFByb2dyZXNzOwpAQCAtMjE0LDcgKzIxNCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1h
dGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAK
ICAgICAgICAgLy8gMS4gSWYgdGhlIG92ZXJhbGwgcHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0
dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICghb3ZlcmFsbFByb2dyZXNzKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgLy8gMi4gSWYgb3ZlcmFsbCBwcm9ncmVzcyBpcyBpbmZpbml0eSwgbGV0IHRo
ZSBzaW1wbGUgaXRlcmF0aW9uIHByb2dyZXNzIGJlIGl0ZXJhdGlvbiBzdGFydCAlIDEuMCwKICAg
ICAgICAgLy8gb3RoZXJ3aXNlLCBsZXQgdGhlIHNpbXBsZSBpdGVyYXRpb24gcHJvZ3Jlc3MgYmUg
b3ZlcmFsbCBwcm9ncmVzcyAlIDEuMC4KQEAgLTI0MSw3ICsyNDEsNyBAQCBDb21wdXRlZEVmZmVj
dFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29u
ZHM+IHN0YXJ0VAogCiAgICAgICAgIC8vIDEuIElmIHRoZSBhY3RpdmUgdGltZSBpcyB1bnJlc29s
dmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKCFhY3RpdmVUaW1lKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgLy8gMi4gSWYgdGhlIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gdGhlIGFm
dGVyIHBoYXNlIGFuZCB0aGUgaXRlcmF0aW9uIGNvdW50IGlzIGluZmluaXR5LCByZXR1cm4gaW5m
aW5pdHkuCiAgICAgICAgIGlmIChwaGFzZSA9PSBBbmltYXRpb25FZmZlY3RQaGFzZTo6QWZ0ZXIg
JiYgc3RkOjppc2luZihtX2l0ZXJhdGlvbnMpKQpAQCAtMjkwLDcgKzI5MCw3IEBAIENvbXB1dGVk
RWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8
U2Vjb25kcz4gc3RhcnRUCiAKICAgICAgICAgLy8gMS4gSWYgdGhlIHNpbXBsZSBpdGVyYXRpb24g
cHJvZ3Jlc3MgaXMgdW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICgh
c2ltcGxlSXRlcmF0aW9uUHJvZ3Jlc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAyLiBDYWxj
dWxhdGUgdGhlIGN1cnJlbnQgZGlyZWN0aW9uICh3ZSBpbXBsZW1lbnQgdGhpcyBhcyBhIHNlcGFy
YXRlIG1ldGhvZCkuCiAKQEAgLTMxMCw3ICszMTAsNyBAQCBDb21wdXRlZEVmZmVjdFRpbWluZyBB
bmltYXRpb25FZmZlY3Q6OmdldENvbXB1dGVkVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0
VAogICAgICAgICAvLwogICAgICAgICAvLyAxLiBJZiB0aGUgZGlyZWN0ZWQgcHJvZ3Jlc3MgaXMg
dW5yZXNvbHZlZCwgcmV0dXJuIHVucmVzb2x2ZWQuCiAgICAgICAgIGlmICghZGlyZWN0ZWRQcm9n
cmVzcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChhdXRvIGl0ZXJhdGlvbkR1cmF0aW9uID0g
bV9pdGVyYXRpb25EdXJhdGlvbi5zZWNvbmRzKCkpIHsKICAgICAgICAgICAgIGJvb2wgYmVmb3Jl
ID0gZmFsc2U7CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBBbmltYXRpb25FZmZlY3Q6OnNldFRp
bWluZ0Z1bmN0aW9uKGNvbnN0IFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4mIHRpbWluZ0Z1bmMKIE9w
dGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uRWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0ZXAoZG91
YmxlIGl0ZXJhdGlvblByb2dyZXNzKSBjb25zdAogewogICAgIGlmICghaXM8U3RlcHNUaW1pbmdG
dW5jdGlvbj4obV90aW1pbmdGdW5jdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG51bWJlck9mU3RlcHMg
PSBkb3duY2FzdDxTdGVwc1RpbWluZ0Z1bmN0aW9uPigqbV90aW1pbmdGdW5jdGlvbikubnVtYmVy
T2ZTdGVwcygpOwogICAgIGF1dG8gbmV4dFN0ZXBQcm9ncmVzcyA9IGNlaWwoaXRlcmF0aW9uUHJv
Z3Jlc3MgKiBudW1iZXJPZlN0ZXBzKSAvIG51bWJlck9mU3RlcHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKaW5kZXggZmRkYzg2NzJmZjUwZTVkMzdmMGUzZGJj
NjFiNDE1MzUwZTYzMzFmYS4uYTAyZDI2MjljY2JiOTI5NzQxMzQyYWNkN2RhMTBhMTQ4YzVjNzBk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuaApAQCAtNTUs
MTMgKzU1LDEzIEBAIHB1YmxpYzoKIAogICAgIEVmZmVjdFRpbWluZyBnZXRCaW5kaW5nc1RpbWlu
ZygpIGNvbnN0OwogICAgIEVmZmVjdFRpbWluZyBnZXRUaW1pbmcoKSBjb25zdDsKLSAgICBCYXNp
Y0VmZmVjdFRpbWluZyBnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6bnVs
bG9wdCkgY29uc3Q7CisgICAgQmFzaWNFZmZlY3RUaW1pbmcgZ2V0QmFzaWNUaW1pbmcoT3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIENvbXB1dGVkRWZmZWN0VGlt
aW5nIGdldEJpbmRpbmdzQ29tcHV0ZWRUaW1pbmcoKSBjb25zdDsKLSAgICBDb21wdXRlZEVmZmVj
dFRpbWluZyBnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6bnVsbG9w
dCkgY29uc3Q7CisgICAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgZ2V0Q29tcHV0ZWRUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGJpbmRpbmdzVXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaW5nPik7
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gdXBkYXRlVGltaW5nKE9wdGlvbmFsPE9wdGlvbmFsRWZm
ZWN0VGltaW5nPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdl
dFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxT
ZWNvbmRzPiA9IFdURjo6bnVsbG9wdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhcHBseShSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5
bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkRpZFRpY2so
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkRpZFBsYXkoKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uUGxheWJhY2tFdmVudC5jcHAKaW5k
ZXggODI5YTNiZGEzZDg4M2RmODU3NzEwNGZjMmU4NTkwZWE5MmNiMTE4Zi4uYTI2NzBkNzkyMDk2
OGMwYTI1NDFkNzZmNjFiMjAwM2U0NWE4NDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcApAQCAtMzksMTIgKzM5LDEyIEBA
IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OkFuaW1hdGlvblBsYXliYWNrRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgY29uc3QgQW5pCiAgICAgaWYgKGluaXRpYWxpemVyLmN1cnJlbnRUaW1l
KQogICAgICAgICBtX2N1cnJlbnRUaW1lID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqaW5p
dGlhbGl6ZXIuY3VycmVudFRpbWUpOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXJyZW50VGltZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChpbml0aWFsaXplci50aW1lbGluZVRpbWUpCiAgICAgICAgIG1fdGltZWxpbmVUaW1l
ID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqaW5pdGlhbGl6ZXIudGltZWxpbmVUaW1lKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fdGltZWxpbmVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX3RpbWVsaW5lVGltZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogQW5pbWF0aW9uUGxheWJhY2tF
dmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBPcHRp
b25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1l
LCBXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKQEAgLTU4LDE0ICs1OCwxNCBAQCBBbmltYXRpb25Q
bGF5YmFja0V2ZW50Ojp+QW5pbWF0aW9uUGxheWJhY2tFdmVudCgpID0gZGVmYXVsdDsKIE9wdGlv
bmFsPGRvdWJsZT4gQW5pbWF0aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NDdXJyZW50VGltZSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRz
VG9XZWJBbmltYXRpb25zQVBJVGltZShtX2N1cnJlbnRUaW1lLnZhbHVlKCkpOwogfQogCiBPcHRp
b25hbDxkb3VibGU+IEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6OmJpbmRpbmdzVGltZWxpbmVUaW1l
KCkgY29uc3QKIHsKICAgICBpZiAoIXRpbWVsaW5lVGltZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNv
bmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSh0aW1lbGluZVRpbWUoKS52YWx1ZSgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXgg
YWVmMzFkMzAxZTc1ODBhZTI0Y2Q1Yjc2YTJiMTQwYzZiYmI4NTU5Yy4uNTAyNzQ0ZGZkYjI0NmEx
ZjY0NDFmYjFjN2YxYmI5ZWQ5ZGM0OTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPGRvdWJs
ZT4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQogewogICAgIGF1dG8g
dGltZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCF0aW1lKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNv
bmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqdGltZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDdkMmNiOTE3NGNi
Mjg1NzhkMGMwZGY2MDc1OGRlMDY5ODViNzMzYTcuLjFiNDI3YjdlN2JiNjYxZmI4OTM1NTMwNjc4
MWJlMWM1YmUwODE1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMTk2MCw3ICsxOTYwLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBjbGFzcyBBdXRvUHJvcGVydHlXcmFwcGVyIGZpbmFsIDogcHVibGljIFByb3BlcnR5
V3JhcHBlcjxUPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
QXV0b1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHls
ZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29s
IChSZW5kZXJTdHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoq
YXV0b1NldHRlcikoKSwgT3B0aW9uYWw8VD4gbWluVmFsdWUgPSBXVEY6Om51bGxvcHQpCisgICAg
QXV0b1Byb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBUIChSZW5kZXJTdHls
ZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFQpLCBib29s
IChSZW5kZXJTdHlsZTo6KmF1dG9HZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoq
YXV0b1NldHRlcikoKSwgT3B0aW9uYWw8VD4gbWluVmFsdWUgPSBzdGQ6Om51bGxvcHQpCiAgICAg
ICAgIDogUHJvcGVydHlXcmFwcGVyPFQ+KHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlcikKICAgICAg
ICAgLCBtX2F1dG9HZXR0ZXIoYXV0b0dldHRlcikKICAgICAgICAgLCBtX2F1dG9TZXR0ZXIoYXV0
b1NldHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmlt
YXRpb24uY3BwCmluZGV4IDdhNjQ0ZDNjYWQyYTk5MDI3M2NmYWFjMGE3ZTJiZTZhODkzMDdiYTgu
LjcyNWU4ZmJhYTBiMTg2MzM4NjMzMTBmMjk3ZjI4ZTk5MDExM2U4NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcApAQCAtNTksNyAr
NTksNyBAQCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IERlY2xhcmF0aXZlQW5pbWF0
aW9uOjpvd25pbmdFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9vd25pbmdFbGVtZW50KQog
ICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX293bmluZ0VsZW1lbnQuZ2V0KCksIG1fb3duaW5n
UHNldWRvSWQpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6dGljaygpCkBAIC0zNTAsNyAr
MzUwLDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgU2Vjb25kcwogCiAgICAgYXV0byB0aW1lID0gc2Vjb25k
c1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoZWxhcHNlZFRpbWUpIC8gMTAwMDsKICAgICBhdXRvIHBz
ZXVkb0lkID0gcHNldWRvSWRBc1N0cmluZyhtX293bmluZ1BzZXVkb0lkKTsKLSAgICBhdXRvIHRp
bWVsaW5lVGltZSA9IHRpbWVsaW5lKCkgPyB0aW1lbGluZSgpLT5jdXJyZW50VGltZSgpIDogV1RG
OjpudWxsb3B0OworICAgIGF1dG8gdGltZWxpbmVUaW1lID0gdGltZWxpbmUoKSA/IHRpbWVsaW5l
KCktPmN1cnJlbnRUaW1lKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBldmVudCA9IGNyZWF0
ZUV2ZW50KGV2ZW50VHlwZSwgdGltZSwgcHNldWRvSWQsIHRpbWVsaW5lVGltZSk7CiAgICAgZXZl
bnQtPnNldFRhcmdldChtX293bmluZ0VsZW1lbnQuZ2V0KCkpOwogICAgIGVucXVldWVBbmltYXRp
b25FdmVudChXVEZNb3ZlKGV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5jcHAKaW5kZXggYWYzYWMyYzY0OWI0MjI5NzEyYjFhMTA4OWRlMjM3OGEw
ZDMxMjg4YS4uNDkxNDQxMThlMjdiNzE0N2NiOWZkOTBjYTQ5YmYwYjM0Mzc1NjU5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMTM5LDcg
KzEzOSw3IEBAIE9wdGlvbmFsPFNlY29uZHM+IERvY3VtZW50VGltZWxpbmU6OmN1cnJlbnRUaW1l
KCkKICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHRoaXMtPmNvbnRyb2xsZXIoKSkgewogICAg
ICAgICBpZiAoYXV0byBjdXJyZW50VGltZSA9IGNvbnRyb2xsZXItPmN1cnJlbnRUaW1lKCkpCiAg
ICAgICAgICAgICByZXR1cm4gKmN1cnJlbnRUaW1lIC0gbV9vcmlnaW5UaW1lOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
ICAgICByZXR1cm4gQW5pbWF0aW9uVGltZWxpbmU6OmN1cnJlbnRUaW1lKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xs
ZXIuY3BwCmluZGV4IGNiMjZjN2JkN2U0NDQyMzY1ZTUzMTgyMzVjZTc5ZmMyMDQ2NjJlZjIuLmJm
OTJjYzcwNGNmNGM3NGI2OWU3OTdlMzJmMzAzMWJmZGZiMDZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3Bw
CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6OnJl
c3VtZUFuaW1hdGlvbnMoKQogICAgIGlmICghbV9pc1N1c3BlbmRlZCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9jYWNoZWRDdXJyZW50VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hl
ZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNl
OwogCkBAIC0yMTcsNyArMjE3LDcgQEAgUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIERvY3VtZW50
VGltZWxpbmVzQ29udHJvbGxlcjo6bGl2ZUN1cnJlbnRUaW1lKCkgY29uc3QKIE9wdGlvbmFsPFNl
Y29uZHM+IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6Y3VycmVudFRpbWUoKQogewogICAg
IGlmICghbV9kb2N1bWVudC5kb21XaW5kb3coKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9jYWNoZWRDdXJy
ZW50VGltZSkKICAgICAgICAgY2FjaGVDdXJyZW50VGltZShsaXZlQ3VycmVudFRpbWUoKSk7CkBA
IC0yNDksNyArMjQ5LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXI6Om1heWJl
Q2xlYXJDYWNoZWRDdXJyZW50VGltZSgpCiAgICAgLy8gd2UncmUgZ3VhcmFudGVlZCB0byBoYXZl
IGEgY29uc2lzdGVudCBjdXJyZW50IHRpbWUgcmVwb3J0ZWQgZm9yIGFsbCB3b3JrIGhhcHBlbmlu
ZyBpbiBhIGdpdmVuCiAgICAgLy8gSlMgZnJhbWUgb3IgdGhyb3VnaG91dCB1cGRhdGluZyBhbmlt
YXRpb25zIGluIFdlYkNvcmUuCiAgICAgaWYgKCFtX2lzU3VzcGVuZGVkICYmICFtX3dhaXRpbmdP
blZNSWRsZSAmJiAhbV9jdXJyZW50VGltZUNsZWFyaW5nVGFza1F1ZXVlLmhhc1BlbmRpbmdUYXNr
cygpKQotICAgICAgICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2NhY2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApp
bmRleCA3ZDEyMDEwZTYxYTQ4OWFjMDY4ZmUwNjk5ZGJkYjM4NTAzZjc1YjllLi41NzFmMDM1YjI2
Y2MwMzgyNWQ2ZTI5MWFkNzM3YzQyMjAyM2M0Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgaW5saW5l
IEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9i
YWxPYmplY3QmCiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHBy
b3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCiAgICAgICAgIG9m
ZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFz
ZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2
ZTxzdGQ6Om51bGxwdHJfdD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMu
b2Zmc2V0KSkKLSAgICAgICAgb2Zmc2V0cy5hcHBlbmQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
b2Zmc2V0cy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKIAogICAgIC8vIDYuIEFzc2lnbiBlYWNoIHZh
bHVlIGluIG9mZnNldHMgdG8gdGhlIGtleWZyYW1lIG9mZnNldCBvZiB0aGUga2V5ZnJhbWUgd2l0
aCBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHByb3BlcnR5IGtleWZyYW1lcyB1bnRpbCB0aGUg
ZW5kIG9mIGVpdGhlciBzZXF1ZW5jZSBpcyByZWFjaGVkLgogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2Zmc2V0cy5zaXplKCkgJiYgaSA8IHBhcnNlZEtleWZyYW1lcy5zaXplKCk7ICsraSkK
QEAgLTExNTIsNyArMTE1Miw3IEBAIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gS2V5
ZnJhbWVFZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdGFyZ2V0
KQogICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX3RhcmdldCwgbV9wc2V1ZG9JZCk7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29s
IEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CkBAIC0xNDY5LDcg
KzE0NjksNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0
eWxlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgZG91YgogICAgICAgICAvLyAgICBvZmZzZXQg
b2YgMCwgYSBwcm9wZXJ0eSB2YWx1ZSBzZXQgdG8gdGhlIG5ldXRyYWwgdmFsdWUgZm9yIGNvbXBv
c2l0aW9uLCBhbmQgYSBjb21wb3NpdGUgb3BlcmF0aW9uIG9mIGFkZCwgYW5kIHByZXBlbmQgaXQg
dG8gdGhlIGJlZ2lubmluZyBvZgogICAgICAgICAvLyAgICBwcm9wZXJ0eS1zcGVjaWZpYyBrZXlm
cmFtZXMuCiAgICAgICAgIGlmICghbnVtYmVyT2ZLZXlmcmFtZXNXaXRoWmVyb09mZnNldCkgewot
ICAgICAgICAgICAgcHJvcGVydHlTcGVjaWZpY0tleWZyYW1lcy5pbnNlcnQoMCwgV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXMuaW5zZXJ0KDAsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zmc2V0
ID0gMTsKICAgICAgICAgfQogCkBAIC0xNDc3LDcgKzE0NzcsNyBAQCB2b2lkIEtleWZyYW1lRWZm
ZWN0OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHls
ZSwgZG91YgogICAgICAgICAvLyAgICBrZXlmcmFtZSBvZmZzZXQgb2YgMSwgYSBwcm9wZXJ0eSB2
YWx1ZSBzZXQgdG8gdGhlIG5ldXRyYWwgdmFsdWUgZm9yIGNvbXBvc2l0aW9uLCBhbmQgYSBjb21w
b3NpdGUgb3BlcmF0aW9uIG9mIGFkZCwgYW5kIGFwcGVuZCBpdCB0byB0aGUgZW5kIG9mCiAgICAg
ICAgIC8vICAgIHByb3BlcnR5LXNwZWNpZmljIGtleWZyYW1lcy4KICAgICAgICAgaWYgKCFudW1i
ZXJPZktleWZyYW1lc1dpdGhPbmVPZmZzZXQpIHsKLSAgICAgICAgICAgIHByb3BlcnR5U3BlY2lm
aWNLZXlmcmFtZXMuYXBwZW5kKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBwcm9wZXJ0eVNw
ZWNpZmljS2V5ZnJhbWVzLmFwcGVuZChzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgbnVtYmVy
T2ZLZXlmcmFtZXNXaXRoT25lT2Zmc2V0ID0gMTsKICAgICAgICAgfQogCkBAIC0xNzMxLDcgKzE3
MzEsNyBAQCBPcHRpb25TZXQ8QWNjZWxlcmF0ZWRBY3Rpb25BcHBsaWNhdGlvblJlc3VsdD4gS2V5
ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZQogICAgIG1fcGVuZGluZ0FjY2VsZXJhdGVk
QWN0aW9ucy5jbGVhcigpOwogCiAgICAgLy8gVG8gc2ltcGxpZnkgdGhlIGNvZGUgd2UgdXNlIGEg
ZGVmYXVsdCBvZiAwcyBmb3IgYW4gdW5yZXNvbHZlZCBjdXJyZW50IHRpbWUgc2luY2UgZm9yIGEg
U3RvcCBhY3Rpb24gdGhhdCBpcyBhY2NlcHRhYmxlLgotICAgIGF1dG8gdGltZU9mZnNldCA9IGFu
aW1hdGlvbigpLT5jdXJyZW50VGltZSgpLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkgLSBkZWxheSgp
LnNlY29uZHMoKTsKKyAgICBhdXRvIHRpbWVPZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRp
bWUoKS52YWx1ZV9vcigwX3MpLnNlY29uZHMoKSAtIGRlbGF5KCkuc2Vjb25kcygpOwogCiAgICAg
YXV0byBzdGFydEFuaW1hdGlvbiA9IFsmXSgpIC0+IFJ1bm5pbmdBY2NlbGVyYXRlZCB7CiAgICAg
ICAgIGlmIChtX3J1bm5pbmdBY2NlbGVyYXRlZCA9PSBSdW5uaW5nQWNjZWxlcmF0ZWQ6OlllcykK
QEAgLTIwMDUsMTQgKzIwMDUsMTQgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6
cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICAgICAg
cmV0dXJuIHByb2dyZXNzOwogCiAgICAgaWYgKCFpczxMaW5lYXJUaW1pbmdGdW5jdGlvbj4odGlt
aW5nRnVuY3Rpb24oKSkgfHwgIW1fc29tZUtleWZyYW1lc1VzZVN0ZXBzVGltaW5nRnVuY3Rpb24p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAobV9ibGVuZGluZ0tleWZyYW1lcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHByb2dyZXNzVW50aWxOZXh0U3RlcEluSW50ZXJ2YWwgPSBbaXRlcmF0aW9uUHJvZ3Jlc3Nd
KGRvdWJsZSBpbnRlcnZhbFN0YXJ0UHJvZ3Jlc3MsIGRvdWJsZSBpbnRlcnZhbEVuZFByb2dyZXNz
LCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24pIC0+IE9wdGlvbmFsPGRvdWJsZT4gewog
ICAgICAgICBpZiAoIWlzPFN0ZXBzVGltaW5nRnVuY3Rpb24+KHRpbWluZ0Z1bmN0aW9uKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGF1dG8gbnVtYmVyT2ZTdGVwcyA9IGRvd25jYXN0PFN0ZXBzVGlt
aW5nRnVuY3Rpb24+KCp0aW1pbmdGdW5jdGlvbikubnVtYmVyT2ZTdGVwcygpOwogICAgICAgICBh
dXRvIGludGVydmFsUHJvZ3Jlc3MgPSBpbnRlcnZhbEVuZFByb2dyZXNzIC0gaW50ZXJ2YWxTdGFy
dFByb2dyZXNzOwpAQCAtMjAzMyw3ICsyMDMzLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFt
ZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVwKGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykK
ICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NTQW5pbWF0aW9uPihhbmlt
YXRpb24oKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb2dyZXNzVW50aWxOZXh0U3RlcElu
SW50ZXJ2YWwoMCwgaW50ZXJ2YWxFbmRQcm9ncmVzcywgZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmlt
YXRpb24+KCphbmltYXRpb24oKSkuYmFja2luZ0FuaW1hdGlvbigpLnRpbWluZ0Z1bmN0aW9uKCkp
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NVbnRpbE5l
eHRTdGVwSW5JbnRlcnZhbChtX2JsZW5kaW5nS2V5ZnJhbWVzW2kgLSAxXS5rZXkoKSwgaW50ZXJ2
YWxFbmRQcm9ncmVzcywgdGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZUF0SW5kZXgoaSAtIDEpKTsK
QEAgLTIwNDcsNyArMjA0Nyw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gS2V5ZnJhbWVFZmZlY3Q6OnBy
b2dyZXNzVW50aWxOZXh0U3RlcChkb3VibGUgaXRlcmF0aW9uUHJvZ3Jlc3MpCiAgICAgICAgIHJl
dHVybiBwcm9ncmVzc1VudGlsTmV4dFN0ZXBJbkludGVydmFsKGxhc3RFeHBsaWNpdEtleWZyYW1l
LmtleSgpLCAxLCBkb3duY2FzdDxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbigpKS5i
YWNraW5nQW5pbWF0aW9uKCkudGltaW5nRnVuY3Rpb24oKSk7CiAKICAgICAvLyBJbiBhbnkgb3Ro
ZXIgY2FzZSwgd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggYW4gaW50ZXJ2YWwgd2l0aCBhIHN0ZXBz
KCkgdGltaW5nIGZ1bmN0aW9uLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogU2Vjb25kcyBLZXlmcmFtZUVmZmVjdDo6dGltZVRvTmV4dFRp
Y2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRl
eCA5ODdlOTIyNGM1ODRkMjFmNTUwZTJjYjQ1MGI4ZTQ2NzZiNzM2NmUyLi41OGRhOGRmYzAyNzMz
ZDBhYmI2ZjUwYzI1YzlhZjUyYzdkYjg4ODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENvbXBvc2l0ZShDb21wb3NpdGVPcGVyYXRpb24gY29tcG9zaXRlT3BlcmF0aW9uKSB7IG1fY29t
cG9zaXRlT3BlcmF0aW9uID0gY29tcG9zaXRlT3BlcmF0aW9uOyB9CiAKICAgICB2b2lkIGdldEFu
aW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7
Ci0gICAgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBz
dGQ6Om51bGxvcHQpIG92ZXJyaWRlOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYW5pbWF0aW9uRGlkVGljaygpIGZpbmFsOwogICAgIHZvaWQgYW5pbWF0aW9uRGlk
UGxheSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApp
bmRleCA5MGZlMjlhYmIzMzM5NjQ4N2ZiZDc2YmRlZDYyODdlZjI4NDhjZWFhLi43ZTU1NDQwMTk2
OTcyNmRlNTU1Yjc2NzM5ZjNhMGI0NzllZTIyZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2LDggKzIwNiw4IEBAIHZvaWQgV2ViQW5pbWF0aW9u
OjpzZXRFZmZlY3RJbnRlcm5hbChSZWZQdHI8QW5pbWF0aW9uRWZmZWN0PiYmIG5ld0VmZmVjdCwg
Ym9vbCBkCiAKICAgICBhdXRvIG9sZEVmZmVjdCA9IHN0ZDo6ZXhjaGFuZ2UobV9lZmZlY3QsIFdU
Rk1vdmUobmV3RWZmZWN0KSk7CiAKLSAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZp
b3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlm
cmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51
bGxvcHQ7Ci0gICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlm
cmFtZUVmZmVjdD4obV9lZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0
LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiBwcmV2aW91c1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihvbGRF
ZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5nZXQoKSktPnRhcmdl
dFN0eWxlYWJsZSgpIDogc3RkOjpudWxsb3B0OworICAgIE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJs
ZT4gbmV3VGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSA/IGRvd25jYXN0PEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpIDogc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gVXBkYXRlIHRoZSBlZmZlY3QtdG8tYW5pbWF0aW9uIHJlbGF0aW9u
c2hpcHMgYW5kIHRoZSB0aW1lbGluZSdzIGFuaW1hdGlvbiBtYXAuCiAgICAgaWYgKG9sZEVmZmVj
dCkgewpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRUaW1lbGluZShS
ZWZQdHI8QW5pbWF0aW9uVGltZWxpbmU+JiYgdGltZWxpbmUpCiAKICAgICAvLyA0LiBJZiB0aGUg
YW5pbWF0aW9uIHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9uIGlzIHJlc29sdmVkLCBtYWtlIGFuaW1h
dGlvbidzIGhvbGQgdGltZSB1bnJlc29sdmVkLgogICAgIGlmIChtX3N0YXJ0VGltZSkKLSAgICAg
ICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAgICAg
ICAgIGlmIChhdXRvIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5n
ZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpKSB7CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBXZWJB
bmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHls
ZWFibGU+JiBwcmV2aW8KIE9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc1N0
YXJ0VGltZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3N0YXJ0VGltZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
c2Vjb25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUoKm1fc3RhcnRUaW1lKTsKIH0KIApAQCAtMzA1
LDcgKzMwNSw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc1N0YXJ0VGltZShPcHRp
b25hbDxkb3VibGU+IG5ld1N0YXJ0VGltZSkKICAgICBpZiAobmV3U3RhcnRUaW1lKQogICAgICAg
ICBzZXRTdGFydFRpbWUoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygqbmV3U3RhcnRUaW1lKSk7
CiAgICAgZWxzZQotICAgICAgICBzZXRTdGFydFRpbWUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
c2V0U3RhcnRUaW1lKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRT
dGFydFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQpAQCAtMzE2LDExICszMTYs
MTEgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxTZWNvbmRzPiBu
ZXdTdGFydFRpbWUpCiAgICAgLy8gMS4gTGV0IHRpbWVsaW5lIHRpbWUgYmUgdGhlIGN1cnJlbnQg
dGltZSB2YWx1ZSBvZiB0aGUgdGltZWxpbmUgdGhhdCBhbmltYXRpb24gaXMgYXNzb2NpYXRlZCB3
aXRoLiBJZgogICAgIC8vICAgIHRoZXJlIGlzIG5vIHRpbWVsaW5lIGFzc29jaWF0ZWQgd2l0aCBh
bmltYXRpb24gb3IgdGhlIGFzc29jaWF0ZWQgdGltZWxpbmUgaXMgaW5hY3RpdmUsIGxldCB0aGUg
dGltZWxpbmUKICAgICAvLyAgICB0aW1lIGJlIHVucmVzb2x2ZWQuCi0gICAgYXV0byB0aW1lbGlu
ZVRpbWUgPSBtX3RpbWVsaW5lID8gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVs
bG9wdDsKKyAgICBhdXRvIHRpbWVsaW5lVGltZSA9IG1fdGltZWxpbmUgPyBtX3RpbWVsaW5lLT5j
dXJyZW50VGltZSgpIDogc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gSWYgdGltZWxpbmUgdGlt
ZSBpcyB1bnJlc29sdmVkIGFuZCBuZXcgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwgbWFrZSBhbmlt
YXRpb24ncyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICBpZiAoIXRpbWVsaW5lVGltZSAmJiBu
ZXdTdGFydFRpbWUpCi0gICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAzLiBMZXQgcHJldmlvdXMgY3Vy
cmVudCB0aW1lIGJlIGFuaW1hdGlvbidzIGN1cnJlbnQgdGltZS4KICAgICBhdXRvIHByZXZpb3Vz
Q3VycmVudFRpbWUgPSBjdXJyZW50VGltZSgpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgV2Vi
QW5pbWF0aW9uOjpzZXRTdGFydFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gbmV3U3RhcnRUaW1lKQog
ICAgICAgICAvLyBJZiBuZXcgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwKICAgICAgICAgLy8gSWYg
YW5pbWF0aW9uJ3MgcGxheWJhY2sgcmF0ZSBpcyBub3QgemVybywgbWFrZSBhbmltYXRpb24ncyBo
b2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQotICAgICAg
ICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faG9sZFRpbWUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gT3RoZXJ3aXNlIChuZXcg
c3RhcnQgdGltZSBpcyB1bnJlc29sdmVkKSwKICAgICAgICAgLy8gU2V0IGFuaW1hdGlvbidzIGhv
bGQgdGltZSB0byBwcmV2aW91cyBjdXJyZW50IHRpbWUgZXZlbiBpZiBwcmV2aW91cyBjdXJyZW50
IHRpbWUgaXMgdW5yZXNvbHZlZC4KQEAgLTM2MCwxNCArMzYwLDE0IEBAIE9wdGlvbmFsPGRvdWJs
ZT4gV2ViQW5pbWF0aW9uOjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBhdXRv
IHRpbWUgPSBjdXJyZW50VGltZSgpOwogICAgIGlmICghdGltZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vj
b25kc1RvV2ViQW5pbWF0aW9uc0FQSVRpbWUodGltZS52YWx1ZSgpKTsKIH0KIAogRXhjZXB0aW9u
T3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpzZXRCaW5kaW5nc0N1cnJlbnRUaW1lKE9wdGlvbmFsPGRv
dWJsZT4gY3VycmVudFRpbWUpCiB7CiAgICAgaWYgKCFjdXJyZW50VGltZSkKLSAgICAgICAgcmV0
dXJuIHNldEN1cnJlbnRUaW1lKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBzZXRDdXJy
ZW50VGltZShzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiBzZXRDdXJyZW50VGltZShTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKGN1cnJlbnRUaW1lLnZhbHVlKCkpKTsKIH0KIApAQCAtMzkzLDEw
ICszOTMsMTAgQEAgT3B0aW9uYWw8U2Vjb25kcz4gV2ViQW5pbWF0aW9uOjpjdXJyZW50VGltZShS
ZXNwZWN0SG9sZFRpbWUgcmVzcGVjdEhvbGRUaW1lLCBPcHQKICAgICAvLyAgICAgMy4gdGhlIGFu
aW1hdGlvbidzIHN0YXJ0IHRpbWUgaXMgdW5yZXNvbHZlZC4KICAgICAvLyBUaGUgY3VycmVudCB0
aW1lIGlzIGFuIHVucmVzb2x2ZWQgdGltZSB2YWx1ZS4KICAgICBpZiAoIW1fdGltZWxpbmUgfHwg
IW1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgfHwgIW1fc3RhcnRUaW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
T3RoZXJ3aXNlLCBjdXJyZW50IHRpbWUgPSAodGltZWxpbmUgdGltZSAtIHN0YXJ0IHRpbWUpICog
cGxheWJhY2sgcmF0ZQotICAgIHJldHVybiAoKm1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBz
dGFydFRpbWUudmFsdWVPcigqbV9zdGFydFRpbWUpKSAqIG1fcGxheWJhY2tSYXRlOworICAgIHJl
dHVybiAoKm1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgLSBzdGFydFRpbWUudmFsdWVfb3IoKm1f
c3RhcnRUaW1lKSkgKiBtX3BsYXliYWNrUmF0ZTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gV2Vi
QW5pbWF0aW9uOjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IHNlZWtU
aW1lKQpAQCAtNDMxLDEwICs0MzEsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
OjpzaWxlbnRseVNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IHNlZWtUaW0KIAogICAg
IC8vIDMuIElmIGFuaW1hdGlvbiBoYXMgbm8gYXNzb2NpYXRlZCB0aW1lbGluZSBvciB0aGUgYXNz
b2NpYXRlZCB0aW1lbGluZSBpcyBpbmFjdGl2ZSwgbWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1l
IHVucmVzb2x2ZWQuCiAgICAgaWYgKCFtX3RpbWVsaW5lIHx8ICFtX3RpbWVsaW5lLT5jdXJyZW50
VGltZSgpKQotICAgICAgICBtX3N0YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9z
dGFydFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyA0LiBNYWtlIGFuaW1hdGlvbidzIHBy
ZXZpb3VzIGN1cnJlbnQgdGltZSB1bnJlc29sdmVkLgotICAgIG1fcHJldmlvdXNDdXJyZW50VGlt
ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3ByZXZpb3VzQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNDU4LDcgKzQ1OCw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYkFuaW1hdGlvbjo6c2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vl
a1RpbWUpCiAgICAgICAgIC8vIDIuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUgdG8g
YW5pbWF0aW9uLgogICAgICAgICBhcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKTsKICAgICAgICAg
Ly8gMy4gTWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIHVucmVzb2x2ZWQuCi0gICAgICAgIG1f
c3RhcnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgLy8gNC4gQ2FuY2VsIHRoZSBwZW5kaW5nIHBhdXNlIHRhc2suCiAgICAg
ICAgIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayA9IFRpbWVUb1J1blBlbmRpbmdUYXNrOjpO
b3RTY2hlZHVsZWQ7CiAgICAgICAgIC8vIDUuIFJlc29sdmUgYW5pbWF0aW9uJ3MgY3VycmVudCBy
ZWFkeSBwcm9taXNlIHdpdGggYW5pbWF0aW9uLgpAQCAtNDg5LDcgKzQ4OSw3IEBAIHZvaWQgV2Vi
QW5pbWF0aW9uOjpzZXRQbGF5YmFja1JhdGUoZG91YmxlIG5ld1BsYXliYWNrUmF0ZSkKICAgICAv
LyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlvbnMtMS8jdXBkYXRpbmctdGhl
LXBsYXliYWNrLXJhdGUtb2YtYW4tYW5pbWF0aW9uCiAKICAgICAvLyAxLiBDbGVhciBhbnkgcGVu
ZGluZyBwbGF5YmFjayByYXRlIG9uIGFuaW1hdGlvbi4KLSAgICBtX3BlbmRpbmdQbGF5YmFja1Jh
dGUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nUGxheWJhY2tSYXRlID0gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIC8vIDIuIExldCBwcmV2aW91cyB0aW1lIGJlIHRoZSB2YWx1ZSBvZiB0
aGUgY3VycmVudCB0aW1lIG9mIGFuaW1hdGlvbiBiZWZvcmUgY2hhbmdpbmcgdGhlIHBsYXliYWNr
IHJhdGUuCiAgICAgYXV0byBwcmV2aW91c1RpbWUgPSBjdXJyZW50VGltZSgpOwpAQCAtNTc3LDcg
KzU3Nyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjphcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKQog
ICAgIG1fcGxheWJhY2tSYXRlID0gbV9wZW5kaW5nUGxheWJhY2tSYXRlLnZhbHVlKCk7CiAKICAg
ICAvLyAzLiBDbGVhciBhbmltYXRpb24ncyBwZW5kaW5nIHBsYXliYWNrIHJhdGUuCi0gICAgbV9w
ZW5kaW5nUGxheWJhY2tSYXRlID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ1BsYXliYWNr
UmF0ZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogYXV0byBXZWJBbmltYXRpb246OnBsYXlTdGF0ZSgp
IGNvbnN0IC0+IFBsYXlTdGF0ZQpAQCAtNjU0LDE0ICs2NTQsMTQgQEAgdm9pZCBXZWJBbmltYXRp
b246OmNhbmNlbCgpCiAgICAgICAgIC8vICAgIHRvIG9yaWdpbi1yZWxhdGl2ZSB0aW1lLCBsZXQg
dGhlIHNjaGVkdWxlZCBldmVudCB0aW1lIGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgdGhhdCBw
cm9jZWR1cmUgdG8gdGltZWxpbmUgdGltZS4gT3RoZXJ3aXNlLCB0aGUKICAgICAgICAgLy8gICAg
c2NoZWR1bGVkIGV2ZW50IHRpbWUgaXMgYW4gdW5yZXNvbHZlZCB0aW1lIHZhbHVlLgogICAgICAg
ICAvLyBPdGhlcndpc2UsIHF1ZXVlIGEgdGFzayB0byBkaXNwYXRjaCBjYW5jZWxFdmVudCBhdCBh
bmltYXRpb24uIFRoZSB0YXNrIHNvdXJjZSBmb3IgdGhpcyB0YXNrIGlzIHRoZSBET00gbWFuaXB1
bGF0aW9uIHRhc2sgc291cmNlLgotICAgICAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVu
dChldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIFdURjo6bnVsbG9wdCwgbV90aW1lbGluZSA/IG1f
dGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgOiBXVEY6Om51bGxvcHQpOworICAgICAgICBlbnF1ZXVl
QW5pbWF0aW9uUGxheWJhY2tFdmVudChldmVudE5hbWVzKCkuY2FuY2VsRXZlbnQsIHN0ZDo6bnVs
bG9wdCwgbV90aW1lbGluZSA/IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgOiBzdGQ6Om51bGxv
cHQpOwogICAgIH0KIAogICAgIC8vIDIuIE1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVucmVz
b2x2ZWQuCi0gICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2hvbGRUaW1lID0g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gMy4gTWFrZSBhbmltYXRpb24ncyBzdGFydCB0aW1lIHVu
cmVzb2x2ZWQuCi0gICAgbV9zdGFydFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9zdGFydFRp
bWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICB0aW1pbmdEaWRDaGFuZ2UoRGlkU2Vlazo6Tm8sIFN5
bmNocm9ub3VzbHlOb3RpZnk6Ok5vKTsKIApAQCAtNzYwLDcgKzc2MCw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFdlYkFuaW1hdGlvbjo6ZmluaXNoKCkKICAgICAvLyA2LiBJZiB0aGVyZSBpcyBhIHBl
bmRpbmcgcGF1c2UgdGFzayBhbmQgc3RhcnQgdGltZSBpcyByZXNvbHZlZCwKICAgICBpZiAoaGFz
UGVuZGluZ1BhdXNlVGFzaygpICYmIG1fc3RhcnRUaW1lKSB7CiAgICAgICAgIC8vIDEuIExldCB0
aGUgaG9sZCB0aW1lIGJlIHVucmVzb2x2ZWQuCi0gICAgICAgIG1faG9sZFRpbWUgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIDIu
IENhbmNlbCB0aGUgcGVuZGluZyBwYXVzZSB0YXNrLgogICAgICAgICBtX3RpbWVUb1J1blBlbmRp
bmdQYXVzZVRhc2sgPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkOwogICAgICAg
ICAvLyAzLiBSZXNvbHZlIHRoZSBjdXJyZW50IHJlYWR5IHByb21pc2Ugb2YgYW5pbWF0aW9uIHdp
dGggYW5pbWF0aW9uLgpAQCAtODQ1LDcgKzg0NSw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjp1cGRh
dGVGaW5pc2hlZFN0YXRlKERpZFNlZWsgZGlkU2VlaywgU3luY2hyb25vdXNseU5vdGlmeSBzeW5j
CiAgICAgICAgICAgICBpZiAoZGlkU2VlayA9PSBEaWRTZWVrOjpZZXMgJiYgbV9ob2xkVGltZSkK
ICAgICAgICAgICAgICAgICBtX3N0YXJ0VGltZSA9IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCku
dmFsdWUoKSAtIChtX2hvbGRUaW1lLnZhbHVlKCkgLyBtX3BsYXliYWNrUmF0ZSk7CiAgICAgICAg
ICAgICAvLyAyLiBMZXQgdGhlIGhvbGQgdGltZSBiZSB1bnJlc29sdmVkLgotICAgICAgICAgICAg
bV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faG9sZFRpbWUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkwNyw3ICs5MDcsNyBAQCB2b2lkIFdl
YkFuaW1hdGlvbjo6ZmluaXNoTm90aWZpY2F0aW9uU3RlcHMoKQogICAgIC8vICAgIHF1ZXVlIGFs
b25nIHdpdGggaXRzIHRhcmdldCwgYW5pbWF0aW9uLiBGb3IgdGhlIHNjaGVkdWxlZCBldmVudCB0
aW1lLCB1c2UgdGhlIHJlc3VsdCBvZiBjb252ZXJ0aW5nIGFuaW1hdGlvbidzIHRhcmdldAogICAg
IC8vICAgIGVmZmVjdCBlbmQgdG8gYW4gb3JpZ2luLXJlbGF0aXZlIHRpbWUuCiAgICAgLy8gICAg
T3RoZXJ3aXNlLCBxdWV1ZSBhIHRhc2sgdG8gZGlzcGF0Y2ggZmluaXNoRXZlbnQgYXQgYW5pbWF0
aW9uLiBUaGUgdGFzayBzb3VyY2UgZm9yIHRoaXMgdGFzayBpcyB0aGUgRE9NIG1hbmlwdWxhdGlv
biB0YXNrIHNvdXJjZS4KLSAgICBlbnF1ZXVlQW5pbWF0aW9uUGxheWJhY2tFdmVudChldmVudE5h
bWVzKCkuZmluaXNoRXZlbnQsIGN1cnJlbnRUaW1lKCksIG1fdGltZWxpbmUgPyBtX3RpbWVsaW5l
LT5jdXJyZW50VGltZSgpIDogV1RGOjpudWxsb3B0KTsKKyAgICBlbnF1ZXVlQW5pbWF0aW9uUGxh
eWJhY2tFdmVudChldmVudE5hbWVzKCkuZmluaXNoRXZlbnQsIGN1cnJlbnRUaW1lKCksIG1fdGlt
ZWxpbmUgPyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIDogc3RkOjpudWxsb3B0KTsKIAogICAg
IGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAgICAgICAgIGlmIChhdXRvIHRh
cmdldCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCkudGFy
Z2V0KCkpKSB7CkBAIC05ODAsNyArOTgwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0
aW9uOjpwbGF5KEF1dG9SZXdpbmQgYXV0b1Jld2luZCkKIAogICAgIC8vIDYuIElmIGFuaW1hdGlv
bidzIGhvbGQgdGltZSBpcyByZXNvbHZlZCwgbGV0IGl0cyBzdGFydCB0aW1lIGJlIHVucmVzb2x2
ZWQuCiAgICAgaWYgKG1faG9sZFRpbWUpCi0gICAgICAgIG1fc3RhcnRUaW1lID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDcuIElm
IGhhcyBwZW5kaW5nIHJlYWR5IHByb21pc2UgaXMgZmFsc2UsIGxldCBhbmltYXRpb24ncyBjdXJy
ZW50IHJlYWR5IHByb21pc2UgYmUgYSBuZXcgKHBlbmRpbmcpIFByb21pc2Ugb2JqZWN0LgogICAg
IGlmICghaGFzUGVuZGluZ1JlYWR5UHJvbWlzZSkKQEAgLTEwMjYsMTggKzEwMjYsMTggQEAgdm9p
ZCBXZWJBbmltYXRpb246OnJ1blBlbmRpbmdQbGF5VGFzaygpCiAgICAgICAgIC8vIFN1YnNlcXVl
bnRseSwgdGhlIHJlc3VsdGluZyByZWFkeVRpbWUgdmFsdWUgY2FuIGJlIG51bGwuIFVuaWZ5IGJl
aGF2aW9yIGJldHdlZW4gQysrMTcgYW5kCiAgICAgICAgIC8vIEMrKzE0IGJ1aWxkcyAodGhlIGxh
dHRlciB1c2luZyBXVEYncyBPcHRpb25hbCkgYW5kIGF2b2lkIG51bGwgT3B0aW9uYWwgZGVyZWZl
cmVuY2luZwogICAgICAgICAvLyBieSBkZWZhdWx0aW5nIHRvIGEgU2Vjb25kcygwKSB2YWx1ZS4g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODYxODkuCi0gICAg
ICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1lLnZhbHVlT3IoMF9zKTsKKyAgICAgICAg
YXV0byBuZXdTdGFydFRpbWUgPSByZWFkeVRpbWUudmFsdWVfb3IoMF9zKTsKICAgICAgICAgaWYg
KG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgbmV3U3RhcnRUaW1lIC09IG1faG9sZFRpbWUu
dmFsdWUoKSAvIG1fcGxheWJhY2tSYXRlOwogICAgICAgICAvLyAzLiBTZXQgdGhlIHN0YXJ0IHRp
bWUgb2YgYW5pbWF0aW9uIHRvIG5ldyBzdGFydCB0aW1lLgogICAgICAgICBtX3N0YXJ0VGltZSA9
IG5ld1N0YXJ0VGltZTsKICAgICAgICAgLy8gNC4gSWYgYW5pbWF0aW9uJ3MgcGxheWJhY2sgcmF0
ZSBpcyBub3QgMCwgbWFrZSBhbmltYXRpb24ncyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KICAgICAg
ICAgaWYgKG1fcGxheWJhY2tSYXRlKQotICAgICAgICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfSBlbHNl
IGlmIChtX3N0YXJ0VGltZSAmJiBtX3BlbmRpbmdQbGF5YmFja1JhdGUpIHsKICAgICAgICAgLy8g
SWYgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZSBpcyByZXNvbHZlZCBhbmQgYW5pbWF0aW9uIGhhcyBh
IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSwKICAgICAgICAgLy8gMS4gTGV0IGN1cnJlbnQgdGltZSB0
byBtYXRjaCBiZSB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgKHJlYWR5IHRpbWUgLSBzdGFydCB0
aW1lKSDDlyBwbGF5YmFjayByYXRlIGZvciBhbmltYXRpb24uCi0gICAgICAgIGF1dG8gY3VycmVu
dFRpbWVUb01hdGNoID0gKHJlYWR5VGltZS52YWx1ZU9yKDBfcykgLSBtX3N0YXJ0VGltZS52YWx1
ZSgpKSAqIG1fcGxheWJhY2tSYXRlOworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lVG9NYXRjaCA9
IChyZWFkeVRpbWUudmFsdWVfb3IoMF9zKSAtIG1fc3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5
YmFja1JhdGU7CiAgICAgICAgIC8vIDIuIEFwcGx5IGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUg
b24gYW5pbWF0aW9uLgogICAgICAgICBhcHBseVBlbmRpbmdQbGF5YmFja1JhdGUoKTsKICAgICAg
ICAgLy8gMy4gSWYgYW5pbWF0aW9uJ3MgcGxheWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgYW5pbWF0
aW9uJ3MgaG9sZCB0aW1lIGJlIGN1cnJlbnQgdGltZSB0byBtYXRjaC4KQEAgLTEwNDUsNyArMTA0
NSw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGxheVRhc2soKQogICAgICAgICAg
ICAgbV9ob2xkVGltZSA9IGN1cnJlbnRUaW1lVG9NYXRjaDsKICAgICAgICAgLy8gNC4gTGV0IG5l
dyBzdGFydCB0aW1lIGJlIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyByZWFkeSB0aW1lIC0gY3Vy
cmVudCB0aW1lIHRvIG1hdGNoIC8gcGxheWJhY2sgcmF0ZSBmb3IgYW5pbWF0aW9uLgogICAgICAg
ICAvLyBJZiB0aGUgcGxheWJhY2sgcmF0ZSBpcyB6ZXJvLCBsZXQgbmV3IHN0YXJ0IHRpbWUgYmUg
c2ltcGx5IHJlYWR5IHRpbWUuCi0gICAgICAgIGF1dG8gbmV3U3RhcnRUaW1lID0gcmVhZHlUaW1l
LnZhbHVlT3IoMF9zKTsKKyAgICAgICAgYXV0byBuZXdTdGFydFRpbWUgPSByZWFkeVRpbWUudmFs
dWVfb3IoMF9zKTsKICAgICAgICAgaWYgKG1fcGxheWJhY2tSYXRlKQogICAgICAgICAgICAgbmV3
U3RhcnRUaW1lIC09IGN1cnJlbnRUaW1lVG9NYXRjaCAvIG1fcGxheWJhY2tSYXRlOwogICAgICAg
ICAvLyA1LiBTZXQgdGhlIHN0YXJ0IHRpbWUgb2YgYW5pbWF0aW9uIHRvIG5ldyBzdGFydCB0aW1l
LgpAQCAtMTE4MiwxNCArMTE4MiwxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVuUGVuZGluZ1Bh
dXNlVGFzaygpCiAgICAgICAgIC8vIFN1YnNlcXVlbnRseSwgdGhlIHJlc3VsdGluZyByZWFkeVRp
bWUgdmFsdWUgY2FuIGJlIG51bGwuIFVuaWZ5IGJlaGF2aW9yIGJldHdlZW4gQysrMTcgYW5kCiAg
ICAgICAgIC8vIEMrKzE0IGJ1aWxkcyAodGhlIGxhdHRlciB1c2luZyBXVEYncyBPcHRpb25hbCkg
YW5kIGF2b2lkIG51bGwgT3B0aW9uYWwgZGVyZWZlcmVuY2luZwogICAgICAgICAvLyBieSBkZWZh
dWx0aW5nIHRvIGEgU2Vjb25kcygwKSB2YWx1ZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODYxODkuCi0gICAgICAgIG1faG9sZFRpbWUgPSAocmVhZHlUaW1l
LnZhbHVlT3IoMF9zKSAtIGFuaW1hdGlvblN0YXJ0VGltZS52YWx1ZSgpKSAqIG1fcGxheWJhY2tS
YXRlOworICAgICAgICBtX2hvbGRUaW1lID0gKHJlYWR5VGltZS52YWx1ZV9vcigwX3MpIC0gYW5p
bWF0aW9uU3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1JhdGU7CiAgICAgfQogCiAgICAg
Ly8gMy4gQXBwbHkgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSBvbiBhbmltYXRpb24uCiAgICAg
YXBwbHlQZW5kaW5nUGxheWJhY2tSYXRlKCk7CiAKICAgICAvLyA0LiBNYWtlIGFuaW1hdGlvbidz
IHN0YXJ0IHRpbWUgdW5yZXNvbHZlZC4KLSAgICBtX3N0YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsK
KyAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDUuIFJlc29sdmUgYW5p
bWF0aW9uJ3MgY3VycmVudCByZWFkeSBwcm9taXNlIHdpdGggYW5pbWF0aW9uLgogICAgIGlmICgh
bV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmgKaW5kZXggOGVhMjVkZDE5ZGJhYTFmMTE4MmVmZjY1MGMxN2Y5ZTlhMjg4ZjRm
Ni4uN2ViODRjNmRkYTliMDdjYWYwNDM5NzhjNjc5MTY4YzA5NDI1MmFlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgQW5pbWF0aW9uVGltZWxpbmUqIHRpbWVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lbGlu
ZS5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lbGluZShSZWZQdHI8QW5pbWF0aW9u
VGltZWxpbmU+JiYpOwogCi0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoT3B0aW9u
YWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPFNlY29uZHM+
IGN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPik7CiAK
ICAgICBkb3VibGUgcGxheWJhY2tSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUg
KyAwOyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNUaWNrKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHRpY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZWNv
bmRzIHRpbWVUb05leHRUaWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHJlc29sdmUoUmVu
ZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50RWxlbWVudFN0
eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6bnVsbG9wdCk7CisgICAgdmlydHVhbCB2b2lk
IHJlc29sdmUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBlZmZlY3RUYXJnZXREaWRDaGFuZ2UoY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxl
PiYgcHJldmlvdXNUYXJnZXQsIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1Rh
cmdldCk7CiAgICAgdm9pZCBhY2NlbGVyYXRlZFN0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB3
aWxsQ2hhbmdlUmVuZGVyZXIoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwcml2YXRlOgogICAgIFNl
Y29uZHMgZWZmZWN0RW5kVGltZSgpIGNvbnN0OwogICAgIFdlYkFuaW1hdGlvbiYgcmVhZHlQcm9t
aXNlUmVzb2x2ZSgpOwogICAgIFdlYkFuaW1hdGlvbiYgZmluaXNoZWRQcm9taXNlUmVzb2x2ZSgp
OwotICAgIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSwgT3B0
aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPFNlY29u
ZHM+IGN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNpbGVudGx5U2V0Q3VycmVu
dFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIHZvaWQgZmluaXNoTm90aWZpY2F0aW9uU3Rl
cHMoKTsKICAgICBib29sIGhhc1BlbmRpbmdQYXVzZVRhc2soKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVUb1J1blBlbmRpbmdQYXVzZVRhc2sgIT0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVk
dWxlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggYzU0MTk4MTVhZDExNThk
ZDYwMTAxOTBmM2U4NTc3NTgxY2U1YzA2Yy4uOGRjN2EwN2VmZTcxMzI5NTU2ZjdlYjVmMWJjMjk4
MjcyOGM3YTQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC03MCw3ICs3MCw3
IEBAIHN0cnVjdCBJRExUeXBlIHsKICAgICB1c2luZyBOdWxsYWJsZUlubmVyUGFyYW1ldGVyVHlw
ZSA9IE9wdGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47CiAKICAgICB1c2luZyBOdWxsYWJsZVR5
cGUgPSBPcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwotICAgIHN0YXRpYyBOdWxsYWJsZVR5
cGUgbnVsbFZhbHVlKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgc3RhdGljIE51bGxh
YmxlVHlwZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMg
Ym9vbCBpc051bGxWYWx1ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFs
dWU7IH0KICAgICBzdGF0aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NUHJvbWlzZVBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAppbmRl
eCAyMmYwOWMzMTcyNjVjY2M4ZDE3MmQwMWY3MWYyNWQ5ZDMyZjIyMmRmLi42NGMzYmQ2Mjk5Y2Vi
MzYwM2EzYWFmODM4NGQ3MzE5NTc2ZTIxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01Qcm9taXNlUHJveHkuaApAQCAtMTQyLDcgKzE0Miw3IEBAIGlubGluZSBKU0M6OkpT
VmFsdWUgRE9NUHJvbWlzZVByb3h5PElETFR5cGU+Ojpwcm9taXNlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPgogaW5saW5lIHZvaWQgRE9NUHJv
bWlzZVByb3h5PElETFR5cGU+OjpjbGVhcigpCiB7Ci0gICAgbV92YWx1ZU9yRXhjZXB0aW9uID0g
V1RGOjpudWxsb3B0OworICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX2RlZmVycmVkUHJvbWlzZXMuY2xlYXIoKTsKIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIGlu
bGluZSBKU0M6OkpTVmFsdWUgRE9NUHJvbWlzZVByb3h5PElETFVuZGVmaW5lZD46OnByb21pc2Uo
SlNDOjpKU0dsb2JhbE9iamVjdCYKIAogaW5saW5lIHZvaWQgRE9NUHJvbWlzZVByb3h5PElETFVu
ZGVmaW5lZD46OmNsZWFyKCkKIHsKLSAgICBtX3ZhbHVlT3JFeGNlcHRpb24gPSBXVEY6Om51bGxv
cHQ7CisgICAgbV92YWx1ZU9yRXhjZXB0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIG1fZGVmZXJy
ZWRQcm9taXNlcy5jbGVhcigpOwogfQogCkBAIC0yODEsNyArMjgxLDcgQEAgaW5saW5lIEpTQzo6
SlNWYWx1ZSBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETFR5cGU+Ojpwcm9t
aXNlKEpTQzo6SlMKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+CiBpbmxpbmUgdm9pZCBET01Q
cm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETFR5cGU+OjpjbGVhcigpCiB7Ci0gICAg
bV92YWx1ZU9yRXhjZXB0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fdmFsdWVPckV4Y2VwdGlv
biA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2RlZmVycmVkUHJvbWlzZXMuY2xlYXIoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNw
cAppbmRleCA2ZjU0MjU5NWMyZTlmNDZkZDM5OWZhODNkNWEyODgwMDBlNGRmZGRhLi5kZjVkMTU3
ZjNiMTdmYTQ2MTM1MzgzMjdjNDQ4YzEzODg5OWYzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNTEzLDcgKzUxMyw3
IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmpl
Y3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljCiAgICAgaWYgKCFpbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwga2V5LCBqc1ZhbHVlLCBrZXlQYXRoLnZhbHVl
KCkpKSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUobGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIEV4Y2VwdGlvbihVbmtub3duRXJyb3IsICJDYW5u
b3QgaW5qZWN0IGtleSBpbnRvIHNjcmlwdCB2YWx1ZSJfcykpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBqc1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01BYnN0cmFjdE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QWJzdHJhY3RPcGVyYXRpb25zLmgKaW5kZXggYjk5NTNhMzJlZTExNTk4ZWIxZTBkOTMzOGZhZWZi
ODRmNjI1MTBiOC4uNWQzNDA1YzhmZmI4MDhlMzA4MjFhY2JlNzVmMTY3NTI4OGU1ODI1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0
aW9ucy5oCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBkZWNsdHlwZShhdXRvKSB2aXNpYmxlTmFt
ZWRQcm9wZXJ0eUl0ZW1BY2Nlc3NvckZ1bmN0b3IoSW5uZXJJdGVtQWNjZXNzb3ImCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFJldHVyblR5cGUgeyByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpIH07
CiAgICAgICAgICAgICBpZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5cGU6OmV4dHJh
Y3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpIH07Ci0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfTsKICAgICB9IGVsc2UgewogICAgICAgICB1c2luZyBSZXR1cm5UeXBl
ID0gdHlwZW5hbWUgSURMVHlwZTo6SW1wbGVtZW50YXRpb25UeXBlOwpAQCAtMTA2LDcgKzEwNiw3
IEBAIHN0YXRpYyBkZWNsdHlwZShhdXRvKSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0ZW1BY2Nlc3Nv
ckZ1bmN0b3IoSW5uZXJJdGVtQWNjZXNzb3ImCiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGlu
bmVySXRlbUFjY2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBp
ZiAoIUlETFR5cGU6OmlzTnVsbFZhbHVlKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFJldHVyblR5cGUgeyBJRExUeXBlOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUocmVzdWx0KSB9
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH07CiAgICAgfQogfQpAQCAtMTIyLDE3ICsxMjIsMTcgQEAg
c3RhdGljIGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICAgICAvLyBOT1RFOiBXaGlsZSBpdCBpcyBub3Qgc3Bl
Y2lmaWVkLCBhIFN5bWJvbCBjYW4gbmV2ZXIgYmUgYSAnc3VwcG9ydGVkIHByb3BlcnR5CiAgICAg
Ly8gbmFtZScgc28gd2UgY2hlY2sgdGhhdCBmaXJzdC4KICAgICBpZiAocHJvcGVydHlOYW1lLmlz
U3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxLiBJZiBQIGlzIG5vdCBhIHN1cHBvcnRlZCBwcm9wZXJ0
eSBuYW1lIG9mIE8sIHRoZW4gcmV0dXJuIGZhbHNlLgogICAgIGF1dG8gcmVzdWx0ID0gaXRlbUFj
Y2Vzc29yKHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyAyLiBJZiBPIGhhcyBhbiBvd24gcHJvcGVydHkgbmFtZWQgUCwgdGhlbiByZXR1cm4g
ZmFsc2UuCiAgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCB7ICZ0aGlzT2JqZWN0LCBKU0M6OlBy
b3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCkgfTsKICAgICBpZiAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KCZ0aGlzT2JqZWN0LCAmbGV4aWNhbEdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIDMuIElmIE8gaW1wbGVtZW50cyBhbiBpbnRlcmZhY2UgdGhhdCBoYXMgdGhl
IFtMZWdhY3lPdmVycmlkZUJ1aWx0SW5zXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJu
IHRydWUuCiAgICAgaWYgKG92ZXJyaWRlQnVpbHRpbnMgPT0gTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6WWVzICYmICF3b3JsZEZvckRPTU9iamVjdCh0aGlzT2JqZWN0KS5zaG91bGREaXNhYmxlTGVn
YWN5T3ZlcnJpZGVCdWlsdEluc0JlaGF2aW9yKCkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGlj
IGF1dG8gYWNjZXNzVmlzaWJsZU5hbWVkUHJvcGVydHkoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwKICAgICAvLyAgICAyLiBTZXQgcHJvdG90eXBlIHRvIGJlIHRoZSB2
YWx1ZSBvZiB0aGUgaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiBwcm90b3R5cGUu
CiAgICAgYXV0byBwcm90b3R5cGUgPSB0aGlzT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdChKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgaWYgKHByb3RvdHlwZS5pc09iamVj
dCgpICYmIEpTQzo6YXNPYmplY3QocHJvdG90eXBlKS0+Z2V0UHJvcGVydHlTbG90KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNi4gUmV0dXJu
IHRydWUuCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydEFueS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0QW55LmgKaW5kZXggZjFkNzViN2ZhNGQxZjljODZhYzQzYWZiZDNkMjE2N2Yz
MzczOGU4MS4uZmJhMWMwOWVhZTdmMmM2N2Q3MWFmNGVmNDYzOGI0YTg5MjVkMTY0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0QW55LmgKQEAgLTcwLDcgKzcw
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFyaWFkaWNDb252ZXJ0ZXI8SURMQW55PiB7CiAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgICAgICBhdXRv
IHJlc3VsdCA9IENvbnZlcnRlcjxJRExBbnk+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAog
ICAgICAgICByZXR1cm4gSXRlbSB7IHZtLCByZXN1bHQgfTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCmluZGV4IGJmMTll
OTczYTMwOTM2OTM2YWQzMGZjZWE2ZjVlYTc0OTg5Nzc5YmMuLjQ4ZWExN2MwZWU3MjZiYjc5YWFl
OTMzZDE3NjFiOWRhNDcwMDMzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oCkBAIC05NSw3ICs5NSw3IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBWYXJpYWRpY0NvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+IHsKICAg
ICB7CiAgICAgICAgIGF1dG8qIHJlc3VsdCA9IENvbnZlcnRlcjxJRExJbnRlcmZhY2U8VD4+Ojpj
b252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICAgICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEl0ZW0+IHsgKnJlc3VsdCB9Owog
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRVbmlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0VW5p
b24uaAppbmRleCBmOGM3MDFiZTE5MDYwYzQ5ZDY3YTVmMDBmYmY5YTY3Mjg1ZWZlZmEzLi5hMzIz
NjZjOTM5MGZmMTI1MGEyM2U2ZTRlYTMxY2FlNWYxZjRkMGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgc3Ry
dWN0IENvbmRpdGlvbmFsUmV0dXJuZXI8UmV0dXJuVHlwZSwgZmFsc2U+IHsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBnZXQoVCYmKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiB9OwogCkBAIC03Miw3ICs3Miw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFJldHVyblR5cGUsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxDb252ZXJ0ZXI8UmV0
dXJuVHlwZSwgVCwgZmFsc2U+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8UmV0dXJuVHlwZT4gY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiB9OwogCkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5
cGVuYW1lIFQ+CiBzdHJ1Y3QgQ29uZGl0aW9uYWxTZXF1ZW5jZUNvbnZlcnRlcjxSZXR1cm5UeXBl
LCBULCBmYWxzZT4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnZlcnRWYXJpYWRpYy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01D
b252ZXJ0VmFyaWFkaWMuaAppbmRleCAxZmUzODkyM2MwODBiMWQzODU2OTQxYzg2ZmY2ZmYyMWE1
OTk0YWI0Li40NDQzMjVmNmQ3ZTdkNWM3MzhiNDZjYzU1MDY3ZmU4ZTJhOGI5MzljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKQEAg
LTQwLDcgKzQwLDcgQEAgc3RydWN0IFZhcmlhZGljQ29udmVydGVyIHsKICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0g
Q29udmVydGVyPElETFR5cGU+Ojpjb252ZXJ0KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRl
cmF0b3IuaAppbmRleCBiMWQyN2Q0NWJjOTAyZWNlNTY1YTYzMjA4ZDg1NjcwYzE2ODcxNzRiLi5h
M2M2YmRhNjNiZmUwZjBiYTZiYjkxZWE2NjljODE5YTVkNzZlNjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCkBAIC0yNDAsNyArMjQwLDcgQEAgSlNDOjpK
U1ZhbHVlIEpTRE9NSXRlcmF0b3JCYXNlPEpTV3JhcHBlciwgSXRlcmF0b3JUcmFpdHM+OjpuZXh0
KEpTQzo6SlNHbG9iYWxPYmoKICAgICAgICAgYXV0byBpdGVyYXRvclZhbHVlID0gbV9pdGVyYXRv
ci0+bmV4dCgpOwogICAgICAgICBpZiAoaXRlcmF0b3JWYWx1ZSkKICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgYXNKUyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBpdGVyYXRvclZhbHVlKSwgZmFsc2UpOwotICAgICAgICBtX2l0
ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICByZXR1cm4gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoJmxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6anNVbmRlZmluZWQoKSwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMuaAppbmRleCA2
ZGNiOWRkZWM1MTcxNDY2ZTljOTU1MjBkZDRlMWNkYzlmMWRkYzU0Li44NGIwZmMwZGIxZjE3NTdj
NzNkMjZhZjAyMjkzNzVkMmEyMDYyOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmgKQEAgLTgwLDIzICs4MCwyMyBAQCBz
dHJ1Y3QgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgewogICAgIHsKICAgICAgICAgU3RyaW5nIHNv
dXJjZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgVVJMIHNvdXJjZVVSTDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3Vy
Y2VVUkwpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUnVuQXNBc3luY0Z1bmN0aW9uIHJ1bkFzQXN5
bmNGdW5jdGlvbjsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShydW5Bc0FzeW5jRnVuY3Rp
b24pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXJndW1lbnRXaXJlQnl0ZXNNYXA+
IGFyZ3VtZW50czsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcmd1bWVudHMpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgRm9yY2VVc2VyR2VzdHVyZSBmb3JjZVVzZXJHZXN0dXJlOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvcmNlVXNlckdlc3R1cmUpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHsgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgeyBXVEZNb3ZlKHNvdXJj
ZSksIFdURk1vdmUoc291cmNlVVJMKSwgcnVuQXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3Vt
ZW50cyksIGZvcmNlVXNlckdlc3R1cmUgfSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjA3YjVkMTBiMDYyZDk5M2Fi
YWViMzZjMDlhNDkzODA4ZmZmNDQ5Yi4uZGQ2ODEyYmY4MDUzMDgwOGUyOTU4YTBjYWJlMDA4Mjhj
MGJjNzRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVw
TW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAg
ICAgICAgICAgICAgIGNhc2UgTW9kdWxlRmV0Y2hGYWlsdXJlS2luZDo6V2FzRXJyb3JlZDoKICAg
ICAgICAgICAgICAgICAgICAgbW9kdWxlU2NyaXB0LT5ub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxl
U2NyaXB0OjpFcnJvciB7CiAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkYWJsZVNjcmlwdDo6
RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBXVEY6Om51
bGxvcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVsbG9wdAogICAgICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
Y2FzZSBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNDYW5jZWxlZDoKQEAgLTU3NSw3ICs1NzUs
NyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElnbm9yaW5n
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgc2NyaQogCiBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGRJZ25vcmluZ0V4Y2VwdGlvbihET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0
LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOworICAg
IGF1dG8gcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdEluV29ybGQod29ybGQsIHsgc2NyaXB0LCBVUkwg
eyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQudmFsdWUoKSA6IEpTQzo6SlNWYWx1ZSB7IH07CiB9CiAKQEAgLTU5
MSw3ICs1OTEsNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVT
Y3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAgICAgbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAjZW5kaWYKIAotICAg
IFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFyYW1ldGVycy5mb3JjZVVz
ZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0LCBt
X2ZyYW1lLmRvY3VtZW50KCkpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocGFyYW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6Olll
cyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdl
c3R1cmUpIDogc3RkOjpudWxsb3B0LCBtX2ZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgaWYgKCFj
YW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkgfHwgaXNQYXVzZWQoKSkKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiQ2Fubm90IGV4
ZWN1dGUgSmF2YVNjcmlwdCBpbiB0aGlzIGRvY3VtZW50Il9zIH0pOwpAQCAtNzAzLDcgKzcwMyw3
IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPCiB9CiBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIHsg
c2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0p
OworICAgIHJldHVybiBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxk
LCB7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVy
ZSB9KTsKIH0KIAogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNl
ckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDZiNjA1NDk0MThj
OWQwMmJmNzhiOTAxOGQwMGQxMjk3YjRkYzk4MWIuLmQ1MDk5NjY1NjM5ZWU3ZGIzZjM2ZTBjNjhm
ZmYxODJlOTdiYjIzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTU2Myw3ICsxNTYzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgd3JpdGUoZmlsZS51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHdyaXRlKGZpbGUu
dHlwZSgpKTsKICAgICAgICAgd3JpdGUoZmlsZS5uYW1lKCkpOwotICAgICAgICB3cml0ZShzdGF0
aWNfY2FzdDxkb3VibGU+KGZpbGUubGFzdE1vZGlmaWVkT3ZlcnJpZGUoKS52YWx1ZU9yKC0xKSkp
OworICAgICAgICB3cml0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGZpbGUubGFzdE1vZGlmaWVkT3Zl
cnJpZGUoKS52YWx1ZV9vcigtMSkpKTsKICAgICB9CiAKICAgICB2b2lkIHdyaXRlKFByZWRlZmlu
ZWRDb2xvclNwYWNlIGNvbG9yU3BhY2UpCkBAIC0zMDM3LDEzICszMDM3LDEzIEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBET01Qb2ludEluaXQgcG9pbnQ7CiAgICAgICAgIGlmICghcmVhZChw
b2ludC54KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXJlYWQocG9pbnQueSkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50LnopKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgh
cmVhZChwb2ludC53KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBwb2ludDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IGEyN2M2ZDI4OTYxNGRkNzVkMWZlZjJhOTlhZjFhZjQwOTBjMTBiYWYuLmJhM2Y0
YzU1ODJkYTIxYTljNjcxMjRiZGU0Njk2YzAyMzBmZDI3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC04NTMsNyArODUz
LDcgQEAgc3ViIEdlbmVyYXRlTmFtZWRHZXR0ZXJMYW1iZGEKIHsKICAgICBteSAoJG91dHB1dEFy
cmF5LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1l
ZEdldHRlckZ1bmN0aW9uTmFtZSwgJElETFR5cGUpID0gQF87CiAgICAgCi0gICAgbXkgQGFyZ3Vt
ZW50cyA9IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgIldURjo6
bnVsbG9wdCIsICJ0aGlzT2JqZWN0IiwgIiAgICAgICAgIik7CisgICAgbXkgQGFyZ3VtZW50cyA9
IEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgInN0ZDo6bnVsbG9w
dCIsICJ0aGlzT2JqZWN0IiwgIiAgICAgICAgIik7CiAgICAgcHVzaChAYXJndW1lbnRzLCAicHJv
cGVydHlOYW1lVG9BdG9tU3RyaW5nKHByb3BlcnR5TmFtZSkiKTsKIAogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBhdXRvIGdldHRlckZ1bmN0b3IgPSB2aXNpYmxlTmFtZWRQcm9wZXJ0eUl0
ZW1BY2Nlc3NvckZ1bmN0b3I8JHtJRExUeXBlfSwgJHtjbGFzc05hbWV9PihbXSAoJHtjbGFzc05h
bWV9JiB0aGlzT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSAtPiBkZWNsdHlwZShh
dXRvKSB7XG4iKTsKQEAgLTIzNzYsNyArMjM3Niw3IEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgIH0KICAgICAgICAgJHJlc3VsdCAuPSAiICAg
ICAgICByZXR1cm4gJHtjbGFzc05hbWV9Ojoke2VudW1lcmF0aW9uVmFsdWVOYW1lfTtcbiI7CiAg
ICAgfQotICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4gV1RGOjpudWxsb3B0O1xuIjsKKyAgICAk
cmVzdWx0IC49ICIgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAi
fVxuXG4iOwogCiAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3Rl
ZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KClcbiI7CkBAIC0yNDYyLDcgKzI0NjIsNyBA
QCBzdWIgR2VuZXJhdGVEZWZhdWx0VmFsdWUKIAogICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJu
dWxsIikgewogICAgICAgICBpZiAoJHR5cGUtPmlzVW5pb24pIHsKLSAgICAgICAgICAgIHJldHVy
biAiV1RGOjpudWxsb3B0IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKKyAgICAgICAgICAgIHJldHVy
biAic3RkOjpudWxsb3B0IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKIAogICAgICAgICAgICAgbXkg
JElETFR5cGUgPSBHZXRJRExUeXBlKCR0eXBlU2NvcGUsICR0eXBlKTsKICAgICAgICAgICAgIHJl
dHVybiAiY29udmVydDwke0lETFR5cGV9PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBqc051bGwoKSk7
IjsKQEAgLTI0NzQsNyArMjQ3NCw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgICAg
ICAgICAgbXkgJHVzZUF0b21TdHJpbmcgPSAkdHlwZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRv
bVN0cmluZ307CiAgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21TdHJpbmcgPyAibnVsbEF0b20o
KSIgOiAiU3RyaW5nKCkiOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiV1RGOjpudWxsb3B0
IjsKKyAgICAgICAgcmV0dXJuICJzdGQ6Om51bGxvcHQiOwogICAgIH0KIAogICAgIGlmICgkZGVm
YXVsdFZhbHVlIGVxICJbXSIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3Bw
CmluZGV4IDFkMjkxZDYyN2MzODg5YzcwZmI5NjU2MjJjNzUxZmU3NTQyOTQ0YzIuLmM0NWI1ODlj
ZjdkODNiOWFmOGEyMTRjNGZjYTUyMmQwMTljZWI5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrSW50ZXJmYWNlLmNwcApAQCAtNzIsNyArNzIsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJ
bgogICAgICAgICByZXR1cm4gVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtOjpWYWx1ZTE7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJ2YWx1ZTIiKQogICAgICAgICByZXR1cm4gVGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpFbnVtOjpWYWx1ZTI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkVudW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcAppbmRleCBkYWMwMGRjMzQ3NzRjNDlmNzA1
M2MxMGE3NDQxNDQ4ZTc2NWJlNDBiLi42MGExMmNlNGQ1NjVmNGU3OGYxOTU1ZWY2OTMwNjEzMDgw
MTg2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVmYXVsdFRvSlNPTkVudW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0RGVmYXVsdFRvSlNPTkVudW0+IHBhcnNl
RW51bWVyYXRpb248VGVzdERlZmF1bHRUb0pTT05FbnUKICAgICAgICAgcmV0dXJuIFRlc3REZWZh
dWx0VG9KU09ORW51bTo6RW51bVZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1W
YWx1ZTIiKQogICAgICAgICByZXR1cm4gVGVzdERlZmF1bHRUb0pTT05FbnVtOjpFbnVtVmFsdWUy
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RE
ZWZhdWx0VG9KU09ORW51bT4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjYTMzMTNlM2NiNmI5ZTY4ZjliMDg2
N2I3NDM1OWE4NTI4ZTRjNWNhLi5iMGI0OGRhMjRiNDEwODQwMDRlOTY3MmE4YjQyZTk2Y2Q2NDMw
YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6RW51bVR5cGU+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+KEpT
R2xvCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMjsKICAgICBp
ZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTMiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6
RW51bVR5cGU6OkVudW1WYWx1ZTM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkKQEAgLTE5NCw3ICsxOTQsNyBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwYXJzZUVudW1lcmF0aW9uPFRl
c3RPYmo6Ok9wdGlvbmFsPihKU0dsbwogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6
Ok9wdGlvbmFsVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiT3B0aW9uYWxWYWx1ZTMi
KQogICAgICAgICByZXR1cm4gVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6Ok9w
dGlvbmFsPigpCkBAIC0yMjYsNyArMjI2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5h
dGVFbnVtTmFtZT4gcGFyc2VFbnVtZXJhdGlvbjxBbHRlcm5hdGVFbnVtTmFtZT4oSlNHbG8KICAg
ICAgICAgcmV0dXJuIEFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUxOwogICAgIGlmIChzdHJp
bmdWYWx1ZSA9PSAiRW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBBbHRlcm5hdGVFbnVtTmFt
ZTo6RW51bVZhbHVlMjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczxBbHRlcm5hdGVFbnVtTmFtZT4oKQpAQCAtMjU2LDcgKzI1Niw3IEBAIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51
bUE+KEpTR2xvYmFsT2JqCiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5n
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkEiKQogICAg
ICAgICByZXR1cm4gVGVzdE9iajo6RW51bUE6OkE7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUE+KCkKQEAgLTI4OCw3ICsyODgs
NyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1CPiBwYXJzZUVudW1lcmF0aW9u
PFRlc3RPYmo6OkVudW1CPihKU0dsb2JhbE9iagogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJCIikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBj
b25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1CPigpCkBA
IC0zMjAsNyArMzIwLDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFy
c2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQz4oSlNHbG9iYWxPYmoKICAgICBhdXRvIHN0cmlu
Z1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGlm
IChzdHJpbmdWYWx1ZSA9PSAiQyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtQzo6QzsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2Jq
OjpFbnVtQz4oKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6S2luZD4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpLaW5kPihKU0dsb2JhbE9iamVjCiAg
ICAgICAgIHJldHVybiBUZXN0T2JqOjpLaW5kOjpRdWljazsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gImRlYWQiKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6RGVhZDsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRl
PD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpLaW5kPigp
CkBAIC0zODYsNyArMzg2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpTaXplPiBw
YXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OlNpemU+KEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0
dXJuIFRlc3RPYmo6OlNpemU6OlNtYWxsOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1t
dWNoLWxhcmdlciIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdl
cjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0
T2JqOjpTaXplPigpCkBAIC00MTgsNyArNDE4LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0
T2JqOjpDb25maWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEoK
ICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CiAgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJraW5kYS1sb3ciKQogICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5j
ZTo6S2luZGFMb3c7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4oKQpAQCAtNjU2LDcgKzY1Niw3IEBAIHRlbXBsYXRl
PD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9u
YXJ5PihKU0dsb2JhbE9iCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZUVudW0gPSBjb252ZXJ0PElE
TE51bGxhYmxlPElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4+KGxleGljYWxHbG9i
YWxPYmplY3QsIG51bGxhYmxlRW51bVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAgICByZXN1bHQubnVsbGFibGVF
bnVtID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVFbnVtID0gc3RkOjpu
dWxsb3B0OwogICAgIEpTVmFsdWUgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZTsKICAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxlSW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUgPSBqc1VuZGVmaW5lZCgpOwpAQCAtNjY4LDcgKzY2OCw3IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
PihKU0dsb2JhbE9iCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdCA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMTG9uZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51bGxh
YmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxsYWJsZUlu
dGVnZXJXaXRoRGVmYXVsdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxl
SW50ZWdlcldpdGhEZWZhdWx0ID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFsdWUgbnVsbGFibGVO
b2RlVmFsdWU7CiAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQogICAgICAgICBudWxsYWJsZU5v
ZGVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CkBAIC03MDQsNyArNzA0LDcgQEAgdGVtcGxhdGU8PiBU
ZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+
KEpTR2xvYmFsT2IKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2RlPj4+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBudWxsYWJsZVVuaW9uTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdC5udWxsYWJsZVVuaW9uTWVtYmVyID0gV1RGOjpudWxsb3B0OworICAgICAgICByZXN1bHQu
bnVsbGFibGVVbmlvbk1lbWJlciA9IHN0ZDo6bnVsbG9wdDsKICAgICBKU1ZhbHVlIHJlcXVpcmVk
QnVmZmVyU291cmNlVmFsdWVWYWx1ZTsKICAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCiAgICAg
ICAgIHJlcXVpcmVkQnVmZmVyU291cmNlVmFsdWVWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CkBAIC02
OTU5LDcgKzY5NTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25fbWV0aG9kV2l0aE9wdGlvbmFsUgogICAgIFVOVVNFRF9QQVJB
TShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MCk7Ci0gICAgYXV0byByZWNvcmQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8g
V1RGOjpudWxsb3B0IDogY29udmVydDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5n
LCBJRExMb25nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7Cisg
ICAgYXV0byByZWNvcmQgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gc3RkOjpu
dWxsb3B0IDogY29udmVydDxJRExOdWxsYWJsZTxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExM
b25nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoV1RGTW92ZShyZWNv
cmQpKTsgfSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
CmluZGV4IDZkOTIwN2ZmMTI3MDEwM2VmYmM2OGI0YWZhYmY2MDM2ZmRkMjM2NjguLjhhZTg5MzNl
YmMzY2Y1N2E4NGJkYWM2M2Y4MWFhOTA5MTZlNjcxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gRGlj
dGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oSlNH
bG9iYWxPYmplCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFs
dWUgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFVuaW9uPElETERPTVN0cmluZywgSURMQm9vbGVh
bj4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBudWxsYWJsZVVuaW9uV2l0aE51bGxEZWZhdWx0VmFs
dWVWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRW
YWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVs
bERlZmF1bHRWYWx1ZSA9IHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxMykg
fHwgRU5BQkxFKENvbmRpdGlvbmFsMTQpCiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJl
clZhbHVlOwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKQEAgLTM1NCw3ICszNTQsNyBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRh
bG9uZURpY3Rpb25hcnlGaWxlPiBwYQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU6OkVudW1WYWx1ZTE7CiAgICAg
aWYgKHN0cmluZ1ZhbHVlID09ICJlbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFu
ZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlOjpFbnVtVmFs
dWUyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRl
c3RTdGFuZGFsb25lRGljdGlvbmFyeTo6RW51bUluU3RhbmRhbG9uZURpY3Rpb25hcnlGaWxlPigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCmluZGV4IDVlZDc5
ODA4ZWU4MTg2NGIxZDY4NmM4YjY0M2NhYjMzY2RjYTEzOTIuLjRhN2E5MWE1NDU5NTAwZDgxNGJk
OTVlZDRmYTk1ZTBmYjE1ZmVjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51
bWVyYXRpb24uY3BwCkBAIC01Niw3ICs1Niw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdFN0
YW5kYWxvbmVFbnVtZXJhdGlvbj4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0U3RhbmRhbG9uZUVuCiAg
ICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uOjpFbnVtVmFsdWUxOwogICAg
IGlmIChzdHJpbmdWYWx1ZSA9PSAiZW51bVZhbHVlMiIpCiAgICAgICAgIHJldHVybiBUZXN0U3Rh
bmRhbG9uZUVudW1lcmF0aW9uOjpFbnVtVmFsdWUyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24+KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKaW5kZXggODMzYmFjMzNkMmVmYTU4M2RhYmI0NWQzM2JkZWFlNGY0
YTUwZGQwYS4uMTY0MzI5MDQ5MThlNzNjZTBjZmMwYzllYjQ2NGU2MThlYjQzYzgyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8T3B0
aW9uYWw8QWN0aW9uPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkQWN0aW9uKEpTR2xvYmFsT2JqZWN0
JiBsZQogICAgICAgICBTdHJpbmcgc2VsZWN0b3JTdHJpbmcgPSBhc1N0cmluZyhzZWxlY3Rvcikt
PnZhbHVlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgaWYgKCFpc1ZhbGlkQ1NTU2Vs
ZWN0b3Ioc2VsZWN0b3JTdHJpbmcpKSB7CiAgICAgICAgICAgICAvLyBTa2lwIHJ1bGVzIHdpdGgg
aW52YWxpZCBzZWxlY3RvcnMgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuCi0gICAgICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCB9OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB7IEFjdGlvbihBY3Rpb25UeXBlOjpD
U1NEaXNwbGF5Tm9uZVNlbGVjdG9yLCBzZWxlY3RvclN0cmluZykgfTsKICAgICB9CkBAIC0zMDQs
NyArMzA0LDcgQEAgc3RhdGljIEV4cGVjdGVkPE9wdGlvbmFsPENvbnRlbnRFeHRlbnNpb25SdWxl
Piwgc3RkOjplcnJvcl9jb2RlPiBsb2FkUnVsZShKU0dsb2IKICAgICBpZiAoYWN0aW9uLnZhbHVl
KCkpCiAgICAgICAgIHJldHVybiB7e3sgV1RGTW92ZSh0cmlnZ2VyLnZhbHVlKCkpLCBXVEZNb3Zl
KGFjdGlvbi52YWx1ZSgpLnZhbHVlKCkpIH19fTsKIAotICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9OwogfQogCiBzdGF0aWMgRXhwZWN0ZWQ8
VmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiwgc3RkOjplcnJvcl9jb2RlPiBsb2FkRW5jb2Rl
ZFJ1bGVzKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IHJ1bGVKU09OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudFJ1bGVMaXN0UmVzdWx0cy5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oCmluZGV4IDlhN2JlNWFjMTAxNmM0NWJkNThlM2Iz
MWVkN2I2N2UzNTI0ZmI2YzIuLmU3MmMxNDQ3YWQ2ZjNiMjAzOGMyYjE4ZTQ5OWYzN2U5NWJjYTA1
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRS
dWxlTGlzdFJlc3VsdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50UnVsZUxpc3RSZXN1bHRzLmgKQEAgLTgxLDEyICs4MSwxMiBAQCBzdHJ1Y3QgQ29udGVu
dFJ1bGVMaXN0UmVzdWx0cyB7CiAgICAgICAgIE9wdGlvbmFsPFN1bW1hcnk+IHN1bW1hcnk7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3VtbWFyeTsKICAgICAgICAgaWYgKCFzdW1tYXJ5KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRS
dWxlTGlzdElkZW50aWZpZXIsIFJlc3VsdD4+PiByZXN1bHRzOwogICAgICAgICBkZWNvZGVyID4+
IHJlc3VsdHM7CiAgICAgICAgIGlmICghcmVzdWx0cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAg
ICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpzdW1tYXJ5KSwKQEAgLTEwOCwy
MiArMTA4LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGF1dG8gQ29udGVudFJ1bGVMaXN0
UmVzdWx0czo6UmVzdWx0OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgT3B0aW9uYWw8Ym9vbD4g
YmxvY2tlZExvYWQ7CiAgICAgZGVjb2RlciA+PiBibG9ja2VkTG9hZDsKICAgICBpZiAoIWJsb2Nr
ZWRMb2FkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IG1hZGVIVFRQUzsKICAgICBkZWNv
ZGVyID4+IG1hZGVIVFRQUzsKICAgICBpZiAoIW1hZGVIVFRQUykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxib29sPiBibG9ja2VkQ29va2llczsKICAgICBkZWNvZGVyID4+IGJsb2NrZWRDb29raWVz
OwogICAgIGlmICghYmxvY2tlZENvb2tpZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IG5vdGlmaWNhdGlvbnM7CiAgICAgZGVjb2RlciA+PiBub3RpZmljYXRpb25zOwog
ICAgIGlmICghbm90aWZpY2F0aW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZN
b3ZlKCpibG9ja2VkTG9hZCksCkBAIC0xNDYsMjIgKzE0NiwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBhdXRvIENvbnRlbnRSdWxlTGlzdFJlc3VsdHM6OlN1bW1hcnk6OmRlY29kZShEZWNv
ZGVyJiBkZQogICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRMb2FkOwogICAgIGRlY29kZXIgPj4g
YmxvY2tlZExvYWQ7CiAgICAgaWYgKCFibG9ja2VkTG9hZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25h
bDxib29sPiBtYWRlSFRUUFM7CiAgICAgZGVjb2RlciA+PiBtYWRlSFRUUFM7CiAgICAgaWYgKCFt
YWRlSFRUUFMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gYmxvY2tlZENvb2tpZXM7CiAg
ICAgZGVjb2RlciA+PiBibG9ja2VkQ29va2llczsKICAgICBpZiAoIWJsb2NrZWRDb29raWVzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGhhc05vdGlmaWNhdGlvbnM7CiAgICAgZGVjb2Rl
ciA+PiBoYXNOb3RpZmljYXRpb25zOwogICAgIGlmICghaGFzTm90aWZpY2F0aW9ucykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqYmxvY2tlZExvYWQpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCmluZGV4IGIzNzA0MTk4
ZWRhYjNjM2ZlZDFkZWEwMjZkMDI5ZTMyZTQ3ZjZlMjYuLjY0ODNhMWYxYjNhOTFmMmNiMTNkM2E4
OGVhM2Q1ZGExOTgyZWI0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL05GQVRvREZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9ORkFUb0RGQS5jcHAKQEAgLTMyNSw3ICszMjUsNyBAQCBPcHRpb25hbDxERkE+IE5GQVRvREZB
Ojpjb252ZXJ0KE5GQSYmIG5mYSkKIHsKICAgICBhdXRvIHNlcmlhbGl6ZWRORkEgPSBTZXJpYWxp
emVkTkZBOjpzZXJpYWxpemUoV1RGTW92ZShuZmEpKTsKICAgICBpZiAoIXNlcmlhbGl6ZWRORkEp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBORkFOb2RlQ2xvc3VyZXMgbmZhTm9kZUNsb3N1cmVzID0gcmVzb2x2ZUVwc2ls
b25DbG9zdXJlcygqc2VyaWFsaXplZE5GQSk7CiAgICAgREZBIGRmYTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKaW5kZXggZjRhNjFi
NDkyNTU0ODMyYmQwNGEyNzhmYTVkNTU2MjIxMDM3MjdhMi4uNTlkY2RhNmI5MDI5MGRjMTNmMzFh
YWRhMGM5ZDlhOTU4Zjk1MTdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8U2Vy
aWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2VyaWFsaXplKE5GQSYmIG5mYSkKICAgICBhdXRv
IGZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIGF1dG8g
ZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiU2VyaWFsaXplZE5GQSIs
IGZpbGUpOwogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGJvb2wgd3JvdGVTdWNjZXNzZnVsbHkgPSB3cml0ZUFsbFRvRmlsZShmaWxlLCBuZmEubm9k
ZXMpCiAgICAgICAgICYmIHdyaXRlQWxsVG9GaWxlKGZpbGUsIG5mYS50cmFuc2l0aW9ucykKQEAg
LTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2VyaWFsaXplZE5GQTo6c2Vy
aWFsaXplKE5GQSYmIG5mYSkKICAgICBpZiAoIXdyb3RlU3VjY2Vzc2Z1bGx5KSB7CiAgICAgICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmaWxlbmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYm9vbCBtYXBwZWRTdWNjZXNzZnVsbHkg
PSBmYWxzZTsKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8U2VyaWFsaXplZE5GQT4gU2VyaWFs
aXplZE5GQTo6c2VyaWFsaXplKE5GQSYmIG5mYSkKICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZSk7CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgaWYgKCFt
YXBwZWRTdWNjZXNzZnVsbHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBNZXRhZGF0YSBtZXRhZGF0YSB7CiAgICAgICAg
IG5mYS5ub2Rlcy5zaXplKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9VUkxGaWx0ZXJQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcAppbmRleCBlZjUwY2JiMjNkYmMzZjFkYTU1Y2ZhNGFi
ZTRjMTc1M2I4YzhhNzc5Li41OWZkY2NiNTA2MzczYWVkNDE4MmRiYWI2MWNkN2Q4N2EyMmNlZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRl
clBhcnNlci5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZhaWwoVVJM
RmlsdGVyUGFyc2VyOjpBdG9tQ2hhcmFjdGVyKTsKICAgICB9CiAKLSAgICB2b2lkIGF0b21QYXJl
bnRoZXNlc1N1YnBhdHRlcm5CZWdpbihib29sID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiA9IFdU
Rjo6bnVsbG9wdCkKKyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbihib29s
ID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAg
IGlmIChoYXNFcnJvcigpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAKaW5kZXggMzY0NmI0N2NiNTFm
MmQzMjU0YmYxOThkMjVlMTYxNTFiZDkzM2VlMS4uODJkZmJjZWRkYzI5ZThmYzZiYjIxNDhlOGY4
MjQ3ZGZjNmQ3NWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxn
b3JpdGhtUmVnaXN0cnkuY3BwCkBAIC01MSwxNCArNTEsMTQgQEAgQ3J5cHRvQWxnb3JpdGhtUmVn
aXN0cnk6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5KCkKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI+IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjppZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAvLyBGSVhNRTogSG93IGlzIGl0IGhlbHBmdWwgdG8g
Y2FsbCBpc29sYXRlZENvcHkgb24gdGhlIGFyZ3VtZW50IHRvIGZpbmQ/CiAgICAgYXV0byBpZGVu
dGlmaWVyID0gbV9pZGVudGlmaWVycy5maW5kKG5hbWUuaXNvbGF0ZWRDb3B5KCkpOwogICAgIGlm
IChpZGVudGlmaWVyID09IG1faWRlbnRpZmllcnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaWRl
bnRpZmllci0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3Vi
dGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmlu
ZGV4IDgzNTg0MGRiNWY1ZTdiYTAxYjIwNzc0MTgwMGQwOWZjNWVjNTE1ZmYuLmEyMjJjZDAzYmM0
OTg4ZGUxY2Y3OWI5YWYyMDJjN2E0ZThhYzhmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0
bGVDcnlwdG8uY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEtleURhdGE+
IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzoK
ICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oa2V5RGF0YVZhcmlhbnQsCiAgICAgICAgICAg
ICBbJnByb21pc2VdIChKc29uV2ViS2V5JikgLT4gT3B0aW9uYWw8S2V5RGF0YT4gewogICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IgfSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZm
ZXJTb3VyY2UpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKICAgICAgICAgICAgICAgICByZXR1cm4g
S2V5RGF0YSB7IFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJTb3Vy
Y2UtPmRhdGEoKSksIGJ1ZmZlclNvdXJjZS0+Ynl0ZUxlbmd0aCgpIH0gfTsKQEAgLTQ2OSw3ICs0
NjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRhKFN1YnRsZUNyeXB0bzo6
S2V5Rm9ybWF0IGZvcm1hdCwgU3VidGxlQ3J5cHRvOgogICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgIFsmcHJvbWlzZV0gKGF1dG8mKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNw
cAppbmRleCA0YmZiNGVmYjhlMDU3YWI2ZDk3ZGEyMTFjYjhjN2E5OTdiOTY0OWNkLi4wMmIyMTcx
MWU3ZmJlNGJmZjI0YWQyODE2MGUzNTMxNmE2ZmQ3MWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFy
YW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIs
IGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgIGF1dG8gcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6
Z2VuZXJhdGUoaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVy
cy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgaWYgKCFyZXN1bHQp
IHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnMKICAgICBS
ZWZQdHI8Q3J5cHRvS2V5SE1BQz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAg
Y2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1B
Qzo6aW1wb3J0UmF3KGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZU9yKDApLCBobWFjUGFyYW1l
dGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRh
dGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhN
QUM6OmltcG9ydFJhdyhobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
ZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
cnlwdG9LZXlGb3JtYXQ6Okp3azogewogICAgICAgICBhdXRvIGNoZWNrQWxnQ2FsbGJhY2sgPSBb
XShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGNvbnN0IFN0cmluZyYgYWxnKSAtPiBi
b29sIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9y
dEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29ucwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICBy
ZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZh
bHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0
PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0Fs
Z0NhbGxiYWNrKSk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydEp3ayho
bWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVu
dGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApp
bmRleCBmMjJjYzUxNWY0Zjc4Nzg4NWZkY2NmYzdiOGU0MjRjN2ZhYTcwODI3Li43OGIyNzdlZmRh
ZmM5NzBiZWJlMmM0MDhhYjhlYjhkMWU1N2Y4YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FF
U19QS0NTMV92MV81LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURh
dGEmCiAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhEYXRhRXJyb3IpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1w
b3J0SndrKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGtleSks
IGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6Omlt
cG9ydEp3ayhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShrZXkp
LCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
Q3J5cHRvS2V5Rm9ybWF0OjpTcGtpOiB7CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1h
dCwgS2V5RGF0YSYKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9L
ZXlSU0E6OmltcG9ydFNwa2kocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdU
Rk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kocGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4
X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlBrY3M4OiB7CkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5
Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5
bnRheEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRy
YWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQ
a2NzOChwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShXVEY6Omdl
dDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKaW5k
ZXggYTUxYjY2ZDhkZGU4MTEzNGI1ODMwYzJhNmEwOTlkODFhYjBjZWQ1OC4uZjJmODY2ZjJlNmNj
ODhlODMzNThhNzM5NTkwNjBiNGVkYzAzODc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3Bw
CkBAIC00MSwyOCArNDEsMjggQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2Ny
eXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRl
cm1pbmUgdGhlIEFFUyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRv
IGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXpl
KCkgKiA4KTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBH
Q3J5cHQgY2lwaGVyIG9iamVjdCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBDQkMgY2lw
aGVyIG1vZGUuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5k
bGU7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAq
YWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0NCQywgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2Jq
ZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwg
a2V5LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAg
ICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2Ug
dGhlIGdpdmVuIElWIGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2Np
cGhlcl9zZXRpdihoYW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgUEtDUyM3IHBhZGRpbmcuCkBAIC03NCw3
ICs3NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIC8vIFBhZGRlZCBzaXpl
IHNob3VsZCBiZSBiaWdnZXIgdGhhbiBzaXplLCBidXQgYmFpbCBpZiB0aGUgdmFsdWUgZG9lc24n
dCBmaXQgaW50byBhIGJ5dGUuCiAgICAgICAgIEFTU0VSVChwYWRkZWRTaXplID4gc2l6ZSk7CiAg
ICAgICAgIGlmIChwYWRkZWRTaXplIC0gc2l6ZSA+IDI1NSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB1
aW50OF90IHBhZGRpbmdWYWx1ZSA9IHBhZGRlZFNpemUgLSBzaXplOwogCiAgICAgICAgIHBsYWlu
VGV4dC5ncm93KHBhZGRlZFNpemUpOwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIGVuY3J5cHRpb24gYW5k
IHJldHJpZXZlIHRoZSBlbmNyeXB0ZWQgb3V0cHV0LgpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5LCBjb25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZW5jcnlwdChoYW5kbGUs
IG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4
dC5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91
dHB1dDsKQEAgLTEwNCwzNSArMTA0LDM1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAg
ICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShr
ZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUg
YSBuZXcgR0NyeXB0IGNpcGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUg
Q0JDIGNpcGhlciBtb2RlLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRf
dD4gaGFuZGxlOwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhh
bmRsZSwgKmFsZ29yaXRobSwgR0NSWV9DSVBIRVJfTU9ERV9DQkMsIDApOwogICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMgY2lw
aGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5k
YXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
Ly8gVXNlIHRoZSBnaXZlbiBJViBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0g
Z2NyeV9jaXBoZXJfc2V0aXYoaGFuZGxlLCBpdi5kYXRhKCksIGl2LnNpemUoKSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgY2lwaGVyIG9iamVj
dCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZGVjcnlwdGlvbi4KICAgICBlcnJvciA9IGdjcnlfY2lw
aGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBQZXJmb3JtIHRoZSBkZWNyeXB0aW9uIGFuZCByZXRyaWV2ZSB0aGUgZGVjcnlwdGVkIG91dHB1
dC4KQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGVycm9y
ID0gZ2NyeV9jaXBoZXJfZGVjcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXpl
KCksIGNpcGhlclRleHQuZGF0YSgpLCBjaXBoZXJUZXh0LnNpemUoKSk7CiAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBSZW1vdmUgdGhlIFBLQ1MjNyBwYWRkaW5nIGZyb20g
dGhlIGRlY3J5cHRlZCBvdXRwdXQuCkBAIC0xNDgsMTYgKzE0OCwxNiBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogICAgICAgICAvLyBUaGUgcGFkZGluZyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVk
IGZyb20gdGhlIGxhc3QgYnl0ZS4KICAgICAgICAgdWludDhfdCBwYWRkaW5nVmFsdWUgPSBvdXRw
dXQubGFzdCgpOwogICAgICAgICBpZiAocGFkZGluZ1ZhbHVlID4gZ2NyeV9jaXBoZXJfZ2V0X2Fs
Z29fYmxrbGVuKCphbGdvcml0aG0pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUGFkZGluZyB2
YWx1ZSBtdXN0bid0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcGFkZGVkIG91dHB1
dC4KICAgICAgICAgc2l6ZV90IHNpemUgPSBvdXRwdXQuc2l6ZSgpOwogICAgICAgICBpZiAocGFk
ZGluZ1ZhbHVlID4gc2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEJhaWwgaWYgdGhlIGxh
c3QgYHBhZGRpbmdWYWx1ZWAgYnl0ZXMgZG9uJ3QgaGF2ZSB0aGUgdmFsdWUgb2YgYHBhZGRpbmdW
YWx1ZWAuCiAgICAgICAgIGlmIChzdGQ6OmNvdW50KG91dHB1dC5lbmQoKSAtIHBhZGRpbmdWYWx1
ZSwgb3V0cHV0LmVuZCgpLCBwYWRkaW5nVmFsdWUpICE9IHBhZGRpbmdWYWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIC8vIFNocmluayB0aGUgb3V0cHV0IFZlY3RvciBvYmplY3QgdG8gZHJvcCB0
aGUgUEtDUyM3IHBhZGRpbmcuCiAgICAgICAgIG91dHB1dC5zaHJpbmsoc2l6ZSAtIHBhZGRpbmdW
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcAppbmRleCAzYzkwNTk0MGFkNWFjOWU4MWNk
ODRiNDM2ZWYyMjUxYjI4NmI2ZGY3Li43MmMxZWY0NzlkZjkyMmNjNzg5MjU5NDcyYzBkODJlNjgz
MzRkMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKQEAgLTQ0LDI2ICs0NCwyNiBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxsT3BlcmF0aW9uKFBBTDo6R0NyeXB0
OjpDaXBoZXJPcGVyYXRpb24gb3BlcgogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lw
aGVyX3Jlc2V0KGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBl
cnJvciA9IGdjcnlfY2lwaGVyX3NldGN0cihoYW5kbGUsIGNvdW50ZXIuZGF0YSgpLCBjb3VudGVy
LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IGdj
cnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gb3V0cHV0KHNpemUpOwogICAgIGVycm9yID0gb3BlcmF0aW9u
KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgZGF0YSwgc2l6ZSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtNzQsNyAr
NzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRBRVNfQ1RSKFBB
TDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcgogICAgIGNvbnN0ZXhwciBzaXplX3QgYmxv
Y2tTaXplID0gMTY7CiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3Jp
dGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBDb25zdHJ1Y3QgdGhlIGxpYmdjcnlwdCBjaXBoZXIgb2JqZWN0IGFuZCBhdHRhY2gg
dGhlIGtleSB0byBpdC4gS2V5IGluZm9ybWF0aW9uIG9uIHRoaXMKICAgICAvLyBjaXBoZXIgb2Jq
ZWN0IHdpbGwgbGl2ZSB0aHJvdWdoIGFueSBnY3J5X2NpcGhlcl9yZXNldCgpIGNhbGxzLgpAQCAt
ODIsMTMgKzgyLDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFF
U19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgZ2NyeV9lcnJvcl90
IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhF
Ul9NT0RFX0NUUiwgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJv
ciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkpOwog
ICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0
Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBibG9j
ayBjb3VudDogKChpbnB1dFRleHQuc2l6ZSgpICsgYmxvY2tTaXplIC0gMSkgLyBibG9ja1NpemUp
LCByZW1haW5kZXIgZGlzY2FyZGVkLgpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJh
dGlvbiBvcGVyCiAgICAgLy8gdGhlIG51bWJlciBvZiB1bmlxdWUgY291bnRlciB2YWx1ZXMgd2Ug
Y291bGQgcHJvZHVjZSBmb3IgdGhlIHNwZWNpZmllZCBjb3VudGVyCiAgICAgLy8gbGVuZ3RoKSBp
cyBsb3dlciB0aGFuIHRoZSBkZWR1Y2VkIGJsb2NrIGNvdW50LCB3ZSBiYWlsLgogICAgIGlmIChn
Y3J5X21waV9jbXAoY291bnRlckxpbWl0TVBJLCBibG9ja0NvdW50TVBJKSA8IDApCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBJZiB0aGUgY291bnRlciBsZW5ndGgsIGluIGJpdHMsIG1hdGNoZXMgdGhlIHNpemUgb2Yg
dGhlIGNvdW50ZXIgZGF0YSwgd2UgZG9uJ3QgaGF2ZSB0bwogICAgIC8vIHVzZSBhbnkgcGFydCBv
ZiB0aGUgY291bnRlciBWZWN0b3I8PiBhcyBub25jZS4gVGhpcyBhbGxvd3MgdXMgdG8gZGlyZWN0
bHkgZW5jcnlwdCBvcgpAQCAtMTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVy
CiAgICAgZXJyb3IgPSBnY3J5X21waV9zY2FuKCZjb3VudGVyRGF0YU1QSSwgR0NSWU1QSV9GTVRf
VVNHLCBjb3VudGVyLmRhdGEoKSwgY291bnRlci5zaXplKCksIG51bGxwdHIpOwogICAgIGlmIChl
cnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRXh0cmFjdCB0aGUgY291bnRlciBNUEkgZnJv
bSB0aGUgY291bnRlckRhdGFNUEk6IChjb3VudGVyRGF0YU1QSSAlIGNvdW50ZXJMaW1pdE1QSSku
CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcgogICAgICAgICBl
cnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgYmxvY2tDb3VudGVyRGF0YS5k
YXRhKCksIGJsb2NrQ291bnRlckRhdGEuc2l6ZSgpLCBudWxscHRyLCBibG9ja0NvdW50ZXJNUEkp
OwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRW5jcnlwdC9kZWNyeXB0IHRoaXMgc2luZ2xlIGJsb2NrIHdpdGggdGhlIGJsb2Nr
LXNwZWNpZmljIGNvdW50ZXIuIE91dHB1dCBmb3IgdGhpcwogICAgICAgICAvLyBzaW5nbGUgYmxv
Y2sgaXMgYXBwZW5kZWQgdG8gdGhlIGdlbmVyYWwgb3V0cHV0IHZlY3Rvci4KICAgICAgICAgYXV0
byBibG9ja091dHB1dCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBoYW5kbGUsIGJsb2NrQ291
bnRlckRhdGEsIGlucHV0VGV4dC5kYXRhKCkgKyBpLCBibG9ja0lucHV0U2l6ZSk7CiAgICAgICAg
IGlmICghYmxvY2tPdXRwdXQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVj
dG9yKCpibG9ja091dHB1dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCmluZGV4IGZmYmM5
M2M5MWU5NWJjMDlhMGRjZTU3YWQ3ZGU1MTU5YTQ2ZTZkYzkuLjRhNTFkMWQ3MjNkOTJjODE2ZDI3
MjAzNDYwNGQxOWUyMTQ2MGFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcApAQCAtNDQs
MjggKzQ0LDI4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5
cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRo
ZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0
aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNp
cGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgR0NNIGNpcGhlciBtb2Rl
LgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAg
IGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRo
bSwgR0NSWV9DSVBIRVJfTU9ERV9HQ00sIEdDUllfQ0lQSEVSX1NFQ1VSRSk7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBj
aXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5
LmRhdGEoKSwga2V5LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBVc2UgdGhlIGdpdmVuIElWIGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3Ig
PSBnY3J5X2NpcGhlcl9zZXRpdihoYW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBp
ZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4gYWRkaXRvbmFs
IGRhdGEsIGlmIGFueSwgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEgZm9yIHRoaXMgY2lwaGVy
IG9iamVjdC4KQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAg
ICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0
YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRs
ZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpH
Q3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBl
bmNyeXB0aW9uIGFuZCByZXRyaWV2ZSB0aGUgZW5jcnlwdGVkIG91dHB1dC4KQEAgLTg5LDcgKzg5
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2Vu
Y3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBwbGFpblRleHQuZGF0
YSgpLCBwbGFpblRleHQuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIC8vIElmIHRhZyBsZW5ndGggd2FzIHNwZWNpZmllZCwgcmV0cmlldmUgdGhlIHRhZyBkYXRh
IGFuZCBhcHBlbmQgaXQgdG8gdGhlIG91dHB1dCB2ZWN0b3IuCkBAIC05OCw3ICs5OCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZ2V0dGFn
KGhhbmRsZSwgdGFnLmRhdGEoKSwgdGFnLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBvdXRwdXQuYXBwZW5kVmVjdG9y
KHRhZyk7CkBAIC0xMTIsMjggKzExMiwyOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAg
IC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgog
ICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUo
a2V5LnNpemUoKSAqIDgpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ3JlYXRl
IGEgbmV3IEdDcnlwdCBjaXBoZXIgb2JqZWN0IGZvciB0aGUgQUVTIGFsZ29yaXRobSBhbmQgdGhl
IEdDTSBjaXBoZXIgbW9kZS4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hk
X3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZo
YW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfR0NNLCAwKTsKICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNp
cGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXku
ZGF0YSgpLCBrZXkuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIFVzZSB0aGUgZ2l2ZW4gSVYgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9
IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOwogICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBhZGRpdG9uYWwg
ZGF0YSwgaWYgYW55LCBhcyB0aGUgYXV0aGVudGljYXRpb24gZGF0YSBmb3IgdGhpcyBjaXBoZXIg
b2JqZWN0LgpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAg
ICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfYXV0aGVudGljYXRlKGhhbmRsZSwgYWRkaXRpb25hbERh
dGEuZGF0YSgpLCBhZGRpdGlvbmFsRGF0YS5zaXplKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDksNyArMTQ5LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhh
bmRsZSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBBY2NvdW50IGZv
ciB0aGUgc3BlY2lmaWVkIHRhZyBsZW5ndGggd2hlbiBwZXJmb3JtaW5nIHRoZSBkZWNyeXB0aW9u
IGFuZCByZXRyaWV2aW5nIHRoZSBkZWNyeXB0ZWQgb3V0cHV0LgpAQCAtMTU4LDcgKzE1OCw3IEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9kZWNyeXB0
KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgY2lwaGVyVGV4dC5kYXRhKCks
IGNpcGhlckxlbmd0aCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBJ
ZiB0YWcgbGVuZ3RoIHdhcyBpbmRlZWQgc3BlY2lmaWVkLCByZXRyaWV2ZSB0aGUgdGFnIGRhdGEg
YW5kIGNvbXBhcmUgaXQgc2VjdXJlbHkgdG8gdGhlIHRhZyBkYXRhIHRoYXQKQEAgLTE2OSwxMSAr
MTY5LDExIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAgIGVycm9yID0gZ2NyeV9j
aXBoZXJfZ2V0dGFnKGhhbmRsZSwgdGFnLmRhdGEoKSwgdGFnTGVuZ3RoKTsKICAgICAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb25z
dGFudFRpbWVNZW1jbXAodGFnLmRhdGEoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJMZW5n
dGgsIHRhZ0xlbmd0aCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpA
QCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlw
dERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAKIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1FbmNyeXB0
KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewotICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0
b3IoKSwgcGxhaW5UZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFt
ZXRlcnMudGFnTGVuZ3RoLnZhbHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFy
YW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1
ZV9vcigwKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKQEAgLTE4
OSw3ICsxODksNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlwdChjb25z
dCBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgYXV0
byBvdXRwdXQgPSBnY3J5cHREZWNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3Rvcigp
LCBjaXBoZXJUZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRl
cnMudGFnTGVuZ3RoLnZhbHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERl
Y3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFt
ZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVf
b3IoMCkgLyA4KTsKICAgICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dD
cnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFF
U19LV0dDcnlwdC5jcHAKaW5kZXggYmFiMjYwZDY1OGY4MDFkNmM5NGQ2MjAzYWQzMTM3OWJkNTM4
YmJkMi4uYjYyMmI0ZTlmOTg2NDcwMDY0NTA0MjIwMDRkOTgwZGZlYmU0NGY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
QUVTX0tXR0NyeXB0LmNwcApAQCAtNDAsMjggKzQwLDI4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5
IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9y
S2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNpcGhlciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGht
IGFuZCB0aGUgQUVTLVdyYXAgY2lwaGVyIG1vZGUuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxn
Y3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9j
aXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RFX0FFU1dSQVAs
IDApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZl
biBrZXkgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3Nl
dGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgLy8gRmluYWxpemUgdGhlIGNpcGhlciBvYmplY3QgYmVmb3JlIHBl
cmZvcm1pbmcgdGhlIGVuY3J5cHRpb24uCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9maW5hbCho
YW5kbGUpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSB0
aGUgZW5jcnlwdGlvbi4gVGhlIHByb3ZpZGVkIG91dHB1dCBidWZmZXIgbXVzdCBiZSA2NCBiaXRz
IGxhcmdlciB0aGFuIHRoZSBpbnB1dCBidWZmZXIuCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwg
b3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC04
MCwyOCArODAsMjggQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0VW53
cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb24KICAgICAvLyBEZXRlcm1pbmUg
dGhlIEFFUyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29y
aXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4
KTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQg
Y2lwaGVyIG9iamVjdCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBBRVMtV3JhcCBjaXBo
ZXIgbW9kZS4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRs
ZTsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICph
bGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfQUVTV1JBUCwgMCk7CiAgICAgaWYgKGVycm9yICE9
IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9y
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIg
b2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEo
KSwga2V5LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBG
aW5hbGl6ZSB0aGUgY2lwaGVyIG9iamVjdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZW5jcnlwdGlv
bi4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBkZWNyeXB0aW9uLiBUaGUgb3V0
cHV0IGJ1ZmZlciBtYXkgYmUgc3BlY2lmaWVkIDY0IGJpdHMgc2hvcnRlciB0aGFuIHRoZSBpbnB1
dCBidWZmZXIuCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb24KICAg
ICBlcnJvciA9IGdjcnlfY2lwaGVyX2RlY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBvdXRw
dXQuc2l6ZSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4
IDBmZTY3NTExNTQ1NDZjNjQ3Njk5NDFiODVkODMwZGJlNDAxYWVlYmYuLjA1NGVjODI1MmIxMjlj
OGQxMDI2YjJjOTc0ZDQwNjcyYTg1NjM3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtNDgs
MTUgKzQ4LDE1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2
ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgewogICAgICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBkU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihi
YXNlS2V5U2V4cCwgImQiLCAwKSk7CiAgICAgICAgIGlmICghZFNleHApCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBhdXRvIGRhdGEgPSBtcGlEYXRhKGRTZXhwKTsKICAgICAgICAgaWYgKCFkYXRhKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwg
IihkYXRhKGZsYWdzIHJhdykodmFsdWUgJWIpKSIsIGRhdGEtPnNpemUoKSwgZGF0YS0+ZGF0YSgp
KTsKICAgICAgICAgaWYgKCFkYXRhU2V4cCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEVu
Y3J5cHQgdGhlIGRhdGEgcy1leHByZXNzaW9uIHdpdGggdGhlIHB1YmxpYyBrZXkuCkBAIC02NCw3
ICs2NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZShn
Y3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9wa19lbmNyeXB0KCZjaXBoZXJTZXhwLCBkYXRhU2V4cCwgcHVibGljS2V5U2V4cCk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUgc2hh
cmVkIHBvaW50IHZhbHVlIGZyb20gdGhlIGdlbmVyYXRlZCBzLWV4cHJlc3Npb24sIHdoaWNoIGlz
IG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKQEAgLTc0LDI0ICs3NCwyNCBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAs
IGdjcnlfc2V4cAogICAgIC8vICAgICAoZSAuLi4pKSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfbXBpX3Q+IHhNUEkoZ2NyeV9tcGlfbmV3KDApKTsKICAgICBpZiAoIXhNUEkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICB7CiAgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdj
cnlfc2V4cF9maW5kX3Rva2VuKGNpcGhlclNleHAsICJzIiwgMCkpOwogICAgICAgICBpZiAoIXNT
ZXhwKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90
PiBzTVBJKGdjcnlfc2V4cF9udGhfbXBpKHNTZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKICAg
ICAgICAgaWYgKCFzTVBJKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRs
ZTxnY3J5X21waV9wb2ludF90PiBwb2ludChnY3J5X21waV9wb2ludF9uZXcoMCkpOwogICAgICAg
ICBpZiAoIXBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X21waV9lY19k
ZWNvZGVfcG9pbnQocG9pbnQsIHNNUEksIG51bGxwdHIpOwogICAgICAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIFdlJ3JlIG9ubHkgaW50
ZXJlc3RlZCBpbiB0aGUgeC1jb29yZGluYXRlLgogICAgICAgICBnY3J5X21waV9wb2ludF9zbmF0
Y2hfZ2V0KHhNUEksIG51bGxwdHIsIG51bGxwdHIsIHBvaW50LnJlbGVhc2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNE
U0FHQ3J5cHQuY3BwCmluZGV4IDg4MTgyM2Y4MTkwZWNmMWYzZjU3YTM1NWNjNDE1Y2FjODRkYTI5
YTkuLjJkYmJhMDk2YmYxNjgzNzhhMTY2MTE2YjI0ODQ4MGE0MTQ4N2M4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNE
U0FHQ3J5cHQuY3BwCkBAIC02OSwxMSArNjksMTEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkK
ICAgICB7CiAgICAgICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFs
Z29yaXRobShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxn
b3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKCpkaWdlc3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKICAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC04NCwx
MyArODQsMTMgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICB7CiAgICAgICAgIGF1dG8g
c2hhQWxnb3JpdGhtID0gaGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIXNoYUFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGdjcnlf
ZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0
YShmbGFncyByYXcpKGhhc2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBk
YXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtl
eVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtf
c2lnbigmc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAh
PSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJv
cik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIHJlc3VsdGlu
ZyByIGFuZCBzIGludGVnZXJzLiBUaGV5IGFyZSBjb25jYXRlbmF0ZWQgaW50bwpAQCAtMTEzLDcg
KzExMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAKICAgICBpZiAoIWV4dHJhY3RFQ0RT
QVNpZ25hdHVyZUludGVnZXIoc2lnbmF0dXJlLCBzaWduYXR1cmVTZXhwLCAiciIsIGtleVNpemVJ
bkJ5dGVzKQogICAgICAgICB8fCAhZXh0cmFjdEVDRFNBU2lnbmF0dXJlSW50ZWdlcihzaWduYXR1
cmUsIHNpZ25hdHVyZVNleHAsICJzIiwga2V5U2l6ZUluQnl0ZXMpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHNpZ25hdHVyZTsKIH0KQEAgLTEyOSwxMSArMTI5LDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29s
PiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzCiAgICAgewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdl
c3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2Vz
dEFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3Qp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9z
ZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIGtleVNpemVJ
bkJ5dGVzLCBzaWduYXR1cmUuZGF0YSgpLCBrZXlTaXplSW5CeXRlcywgc2lnbmF0dXJlLmRhdGEo
KSArIGtleVNpemVJbkJ5dGVzKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIENvbnN0cnVjdCB0aGUgZGF0YSBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyByYXcgaGFz
aGVkIGRhdGEuCkBAIC0xNTMsMTMgKzE1MywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gZ2Ny
eXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcwog
ICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNo
QWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRy
LCAiKGRhdGEoZmxhZ3MgcmF3KShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29y
aXRobSwgZGF0YUhhc2guc2l6ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0
LmNwcAppbmRleCBiZjY2OTZhM2EzMThkODBhNzI1Y2UwZWViYjIwZmYzOGJlOTY3ZmExLi4xYjE2
MmI3MjdlOWNiNDQ0ZGJhMDVhNGIzNWE4YmU5NDA0NDlmZDllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5j
cHAKQEAgLTQ4LDE4ICs0OCwxOCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogCiAgICAgYXV0
byBtYWNBbGdvcml0aG0gPSBobWFjQWxnb3JpdGhtKGlkZW50aWZpZXIpOwogICAgIGlmICghbWFj
QWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gV2UgY2FuIGltbWVkaWF0ZWx5IGRpc2NhcmQgaW52YWxp
ZCBvdXRwdXQgbGVuZ3Rocywgb3RoZXJ3aXNlIG5lZWRlZCBmb3IgdGhlIGV4cGFuZCBzdGVwLgog
ICAgIHNpemVfdCBtYWNMZW5ndGggPSBnY3J5X21hY19nZXRfYWxnb19tYWNsZW4oKm1hY0FsZ29y
aXRobSk7CiAgICAgaWYgKGxlbmd0aEluQnl0ZXMgPiBtYWNMZW5ndGggKiAyNTUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbWFjX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vy
cm9yX3QgZXJyb3IgPSBnY3J5X21hY19vcGVuKCZoYW5kbGUsICptYWNBbGdvcml0aG0sIDAsIG51
bGxwdHIpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBB
TDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU3RlcCAxIC0t
IEV4dHJhY3QuIEEgcHNldWRvLXJhbmRvbSBrZXkgaXMgZ2VuZXJhdGVkIHdpdGggdGhlIHNwZWNp
ZmllZCBhbGdvcml0aG0KQEAgLTc0LDI1ICs3NCwyNSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBj
bwogICAgICAgICAgICAgZXJyb3IgPSBnY3J5X21hY19zZXRrZXkoaGFuZGxlLCBzYWx0LmRhdGEo
KSwgc2FsdC5zaXplKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGtleS5k
YXRhKCksIGtleS5zaXplKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAKICAgICAgICAgc2l6ZV90IHBzZXVkb1JhbmRvbUtleVNpemUgPSBwc2V1
ZG9SYW5kb21LZXkuc2l6ZSgpOwogICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3JlYWQoaGFuZGxl
LCBwc2V1ZG9SYW5kb21LZXkuZGF0YSgpLCAmcHNldWRvUmFuZG9tS2V5U2l6ZSk7CiAgICAgICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBT
b21ldGhpbmcgd2VudCB3cm9uZyBpZiBsaWJnY3J5cHQgZGlkbid0IHdyaXRlIG91dCB0aGUgcHJv
cGVyIGFtb3VudCBvZiBkYXRhLgogICAgICAgICBpZiAocHNldWRvUmFuZG9tS2V5U2l6ZSAhPSBt
YWNMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBTdGVwICMyIC0tIEV4cGFuZC4K
QEAgLTEwOCwxMyArMTA4LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAgICAgICAgICAg
ICBlcnJvciA9IGdjcnlfbWFjX3Jlc2V0KGhhbmRsZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dF
cnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBlcnJvciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHBzZXVkb1JhbmRvbUtleS5kYXRh
KCksIHBzZXVkb1JhbmRvbUtleS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gVCgwKSA9IGVtcHR5IHN0cmluZyAoemVybyBsZW5ndGgpIC0tIGkuZS4gZW1wdHkgbGFzdEJs
b2NrCkBAIC0xMjgsMTkgKzEyOCwxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjbwogICAgICAg
ICAgICAgZXJyb3IgPSBnY3J5X21hY193cml0ZShoYW5kbGUsIGJsb2NrRGF0YS5kYXRhKCksIGJs
b2NrRGF0YS5zaXplKCkpOwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2l6ZV90IGJsb2Nr
U2l6ZSA9IGxhc3RCbG9jay5zaXplKCk7CiAgICAgICAgICAgICBlcnJvciA9IGdjcnlfbWFjX3Jl
YWQoaGFuZGxlLCBsYXN0QmxvY2suZGF0YSgpLCAmYmxvY2tTaXplKTsKICAgICAgICAgICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGlmIGxpYmdjcnlwdCBkaWRuJ3Qg
d3JpdGUgb3V0IHRoZSBwcm9wZXIgYW1vdW50IG9mIGRhdGEuCiAgICAgICAgICAgICBpZiAoYmxv
Y2tTaXplICE9IGxhc3RCbG9jay5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
ICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQgYmxvY2sgZGF0YSB0byB0aGUgb3V0cHV0IHZlY3Rv
ci4KICAgICAgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3IobGFzdEJsb2NrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNH
Q3J5cHQuY3BwCmluZGV4IDBkMjMxMmQxY2UxMDg1NDhkZDNjNDBjNWI0Yzc2NWUzYzkyYTA5MDIu
LjMwYTMyODkyNTY2NWIxZjY5YzcyZTVjYmIzOTZkZmM0NjAzZjY2ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0Ny
eXB0LmNwcApAQCAtNjIsMjEgKzYyLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiAgICAg
UEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21hY19oZF90PiBoZDsKICAgICBnY3J5X2Vycm9yX3Qg
ZXJyID0gZ2NyeV9tYWNfb3BlbigmaGQsIGFsZ29yaXRobSwgMCwgbnVsbHB0cik7CiAgICAgaWYg
KGVycikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGVyciA9IGdjcnlfbWFjX3NldGtleShoZCwga2V5RGF0YSwga2V5LnNp
emUoKSk7CiAgICAgaWYgKGVycikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGVyciA9IGdjcnlfbWFjX3dyaXRlKGhkLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKICAgICBpZiAoZXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGRpZ2VzdExl
bmd0aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbihhbGdvcml0aG0pOwogICAgIFZlY3Rvcjx1
aW50OF90PiBzaWduYXR1cmUoZGlnZXN0TGVuZ3RoKTsKICAgICBlcnIgPSBnY3J5X21hY19yZWFk
KGhkLCBzaWduYXR1cmUuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoKTsKICAgICBpZiAoZXJyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgc2lnbmF0dXJlLnJlc2l6ZShkaWdlc3RMZW5ndGgpOwogICAgIHJldHVybiBzaWduYXR1
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggN2M5MDA1MTViYzE5MGI2NWE2OGZmODg2
ZGU5ZDhiOTRhNjVjOWU3NS4uOWIxMWJhYWMyZmE2Njc4YjQ5Y2FlMzExNTIyMDY1NzBlN2IyYzJl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5RGF0YQogICAgIC8vIERldGVybWluZSB0aGUgaGFzaCBhbGdvcml0aG0gdGhhdCB3
aWxsIGJlIHVzZWQgZm9yIGRlcml2YXRpb24uCiAgICAgYXV0byBoYXNoQWxnb3JpdGhtID0gZGln
ZXN0QWxnb3JpdGhtKGhhc2hJZGVudGlmaWVyKTsKICAgICBpZiAoIWhhc2hBbGdvcml0aG0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBMZW5ndGgsIGluIGJpdHMsIGlzIGEgbXVsdGlwbGUgb2YgOCwgYXMgZ3VhcmFu
dGVlZCBieSBDcnlwdG9BbGdvcml0aG1QQktERjI6OmRlcml2ZUJpdHMoKS4KICAgICBBU1NFUlQo
IShsZW5ndGggJSA4KSk7CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRh
CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9rZGZfZGVyaXZlKGtleURhdGEuZGF0YSgp
LCBrZXlEYXRhLnNpemUoKSwgR0NSWV9LREZfUEJLREYyLCAqaGFzaEFsZ29yaXRobSwgc2FsdERh
dGEuZGF0YSgpLCBzYWx0RGF0YS5zaXplKCksIGl0ZXJhdGlvbnMsIHJlc3VsdC5zaXplKCksIHJl
c3VsdC5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAg
ICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4
IDM4OWZiYmRhM2I1OGY1Mjk4NmIwNWI5NjQzMjRkMzA0M2I0MmMxMDIuLjA2ZTI4ZTc0MGUyZDRm
NDQyMjY4Y2ZjMTg3NzAyYmYwNzk4NjMzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81R0NyeXB0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cgogICAgICAgICBwbGFpblRleHQuc2l6ZSgpLCBwbGFpblRleHQuZGF0YSgpKTsKICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEVuY3J5cHQgZGF0YSB3aXRoIHRoZSBwcm92
aWRlZCBrZXkuIFRoZSByZXR1cm5lZCBzLWV4cHJlc3Npb24gaXMgb2YgdGhpcyBmb3JtOgpAQCAt
NTIsMTMgKzUyLDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVu
Y3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgZXJyb3IgPSBnY3J5
X3BrX2VuY3J5cHQoJmNpcGhlclNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRk
ZWQgYGFgIGludGVnZXIuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gYVNl
eHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oY2lwaGVyU2V4cCwgImEiLCAwKSk7CiAgICAgaWYgKCFh
U2V4cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXpl
SW5CeXRlcyk7CiB9CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAg
ICAgICAgIGNpcGhlclRleHQuc2l6ZSgpLCBjaXBoZXJUZXh0LmRhdGEoKSk7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBEZWNyeXB0IGRhdGEgd2l0aCB0aGUgcHJvdmlk
ZWQga2V5LiBUaGUgcmV0dXJuZWQgcy1leHByZXNzaW9uIGlzIG9mIHRoaXMgZm9ybToKQEAgLTgy
LDEzICs4MiwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNy
eXB0KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3RvcgogICAgIGVycm9yID0gZ2NyeV9w
a19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRl
ZCBgdmFsdWVgIGludGVnZXIuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4g
dmFsdWVTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKHBsYWluU2V4cCwgInZhbHVlIiwgMCkpOwog
ICAgIGlmICghdmFsdWVTZXhwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhwKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggNGNh
NDAwZmJhMTQ2ZWEwNTU1NjNmNzBmN2U0OGFhMDkyMzU0NTM1Ny4uMmMxYTMxZGYzN2IzMGU1ODdj
Y2IyZWRkODIzOGY2Njc1ZjdhNjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNUdDcnlwdC5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1
aQogICAgIHsKICAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkaWdlc3RB
bGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CiAgICAgICAgIGlmICghZGlnZXN0KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpOwogICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKQEAgLTU3
LDEzICs1NywxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWdu
KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0
byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmll
cik7CiAgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihk
YXRhKGZsYWdzIHBrY3MxKShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgKnNoYUFsZ29yaXRo
bSwgZGF0YUhhc2guc2l6ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC03NSwxMyArNzUsMTMg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBf
dCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWkKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5
X3BrX3NpZ24oJnNpZ25hdHVyZVNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRk
ZWQgcyBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhw
KGdjcnlfc2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOwogICAgIGlmICgh
c1NleHApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShzU2V4cCwga2V5U2l6
ZUluQnl0ZXMpOwogfQpAQCAtOTMsMTEgKzkzLDExIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBn
Y3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBz
CiAgICAgewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RB
bGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFs
Z29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9E
aWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtMTA5
LDcgKzEwOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAgIHNpZ25hdHVyZS5z
aXplKCksIHNpZ25hdHVyZS5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gQ29uc3RydWN0IHRoZSBkYXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBL
Q1MjMS1wYWRkZWQgaGFzaGVkIGRhdGEuCkBAIC0xMTcsMTMgKzExNywxMyBAQCBzdGF0aWMgT3B0
aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgcwogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxn
b3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hhQWxn
b3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRh
dGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3MgcGtjczEpKGhhc2ggJXMgJWIpKSIsCiAgICAg
ICAgICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7
CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKaW5kZXggZTUxZTBkN2I1MGQzOWZjY2Q3Mjdl
MjQ0NjM5MzMxY2M0Y2QwMjlkMi4uZDc0ZTc5MjRlZjFhMGM2MzQ4M2Q1MjZhZTlhOTBjNjI1MmFl
YjkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaGFzaEFsZwogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0g
PSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlm
ICghc2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIG9hZXAp
KGhhc2gtYWxnbyAlcykobGFiZWwgJWIpKHZhbHVlICViKSkiLAogICAgICAgICAgICAgKnNoYUFs
Z29yaXRobSwgbGFiZWxWZWN0b3Iuc2l6ZSgpLCBsYWJlbFZlY3Rvci5kYXRhKCksIHBsYWluVGV4
dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC02MiwxMyArNjIsMTMgQEAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGhhc2hBbGcKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5
cHQoJmNpcGhlclNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BH
X0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIC8vIFJldHVybiBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYSBpbnRl
Z2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGFTZXhwKGdjcnlfc2V4
cF9maW5kX3Rva2VuKGNpcGhlclNleHAsICJhIiwgMCkpOwogICAgIGlmICghYVNleHApCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShhU2V4cCwga2V5U2l6ZUluQnl0ZXMpOwog
fQpAQCAtODEsMTMgKzgxLDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgewogICAg
ICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmVuY1ZhbFNleHAsIG51
bGxwdHIsICIoZW5jLXZhbChmbGFncyBvYWVwKShoYXNoLWFsZ28gJXMpKGxhYmVsICViKShyc2Eo
YSAlYikpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rvci5zaXplKCks
IGxhYmVsVmVjdG9yLmRhdGEoKSwgY2lwaGVyVGV4dC5zaXplKCksIGNpcGhlclRleHQuZGF0YSgp
KTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAg
IH0KIApAQCAtOTksMTMgKzk5LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnCiAgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19kZWNyeXB0KCZwbGFpblNleHAsIGVuY1ZhbFNleHAs
IGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0dXJu
IE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCB2YWx1ZSBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHZhbHVlU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihwbGFp
blNleHAsICJ2YWx1ZSIsIDApKTsKICAgICBpZiAoIXZhbHVlU2V4cCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biBtcGlEYXRhKHZhbHVlU2V4cCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCBi
ZjczZDg0YzMzYzhiM2JkN2ZiOGZlZWRmMTc2NTMzYzAzY2I1ZTM3Li43ZGU5ZWVkMjAzZjhlYWQ5
Zjc0MmFhODBmN2M1NThhMWYwZGE3MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAg
LTQzLDExICs0MywxMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRT
aWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAg
YXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRp
Z2VzdEFsZ29yaXRobSk7CiAgICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBk
YXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKQEAgLTU4LDEzICs1OCwxMyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNl
eHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBo
YXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICgh
c2hhQWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2Fs
dC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIsCiAgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hh
QWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlm
IChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2LDEz
ICs3NiwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdj
cnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2Yg
dGhlIGVtYmVkZGVkIGBzYCBpbnRlZ2VyLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9z
ZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkp
OwogICAgIGlmICghc1NleHApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpWmVyb1ByZWZpeGVkRGF0YShz
U2V4cCwga2V5U2l6ZUluQnl0ZXMpOwogfQpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyBPcHRp
b25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hD
cnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0g
UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYg
KCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFz
aCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJp
ZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgICAg
IHNpZ25hdHVyZS5zaXplKCksIHNpZ25hdHVyZS5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0IHRoZSBgZGF0YWAgcy1leHByZXNzaW9uIHRo
YXQgY29udGFpbnMgUFNTLXBhZGRlZCBoYXNoZWQgZGF0YS4KQEAgLTExOCwxMyArMTE4LDEzIEBA
IHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRo
bSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAg
aWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBlcnJvciA9IGdjcnlfc2V4
cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwc3MpKHNhbHQtbGVuZ3Ro
ICV1KShoYXNoICVzICViKSkiLAogICAgICAgICAgICAgc2FsdExlbmd0aCwgKnNoYUFsZ29yaXRo
bSwgZGF0YUhhc2guc2l6ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IDZhZDQwM2Y0
NTU4YWM4Njg0YTg2MDRlMDVmYzQ0YzdkZWViZjg0OGYuLjAzYTBiODkzNzEwZTFiNGJiMWFjNDQw
NmE2Yjc3ZjFhOTJiNDE4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCkBAIC0xMjAsMjAgKzEyMCwyMCBAQCBPcHRpb25hbDxD
cnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0ZVBhaXIoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZgogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgm
Z2Vua2V5U2V4cCwgbnVsbHB0ciwgIihnZW5rZXkoZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1l
KGN1cnZlKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAg
UEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBQQUw6OkdDcnlw
dDo6SGFuZGxlPGdjcnlfc2V4cF90PiBrZXlQYWlyU2V4cDsKICAgICBlcnJvciA9IGdjcnlfcGtf
Z2Vua2V5KCZrZXlQYWlyU2V4cCwgZ2Vua2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwdWJsaWNLZXlT
ZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGtleVBhaXJTZXhwLCAicHVibGljLWtleSIsIDApKTsK
ICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBwcml2YXRlS2V5U2V4cChnY3J5
X3NleHBfZmluZF90b2tlbihrZXlQYWlyU2V4cCwgInByaXZhdGUta2V5IiwgMCkpOwogICAgIGlm
ICghcHVibGljS2V5U2V4cCB8fCAhcHJpdmF0ZUtleVNleHApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHB1Ymxp
Y0tleSA9IENyeXB0b0tleUVDOjpjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5
cGU6OlB1YmxpYywgUGxhdGZvcm1FQ0tleUNvbnRhaW5lcihwdWJsaWNLZXlTZXhwLnJlbGVhc2Uo
KSksIHRydWUsIHVzYWdlcyk7CiAgICAgYXV0byBwcml2YXRlS2V5ID0gQ3J5cHRvS2V5RUM6OmNy
ZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZvcm1F
Q0tleUNvbnRhaW5lcihwcml2YXRlS2V5U2V4cC5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q3J5cHRvS2V5RUM6Ok5h
bWVkQ3VydmU+IGN1cnZlRm9ySWRlbnRpZmllcihjb25zdCBWZWN0b3I8dWludDhfdAogICAgIGlm
IChDcnlwdG9Db25zdGFudHM6Om1hdGNoZXMoZGF0YSwgc2l6ZSwgQ3J5cHRvQ29uc3RhbnRzOjpz
X3NlY3A1MjFyMUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RUM6Ok5hbWVk
Q3VydmU6OlA1MjE7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3Jt
SW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3Vy
dmUgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAppbmRleCA1Yjg5NzI3NTA3NmM5OGExMWZh
Y2M4MzFmMjc1YjAwNmYxMTU3NzNhLi41YTVmMzY0ZWNlNzBiYjI3YmRmM2Q2YzUxNDUyNmYzYzQ4
OWI0NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tl
eVJTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9L
ZXlSU0FHQ3J5cHQuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQz
Ml90PiBleHBvbmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25l
bnQKIHsKICAgICBpZiAoZXhwb25lbnQuc2l6ZSgpID4gNCkgewogICAgICAgICBpZiAoc3RkOjph
bnlfb2YoZXhwb25lbnQuYmVnaW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1aW50OF90IGVs
ZW1lbnQpIHsgcmV0dXJuICEhZWxlbWVudDsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICB1
aW50MzJfdCByZXN1bHQgPSAwOwpAQCAtMzA2LDcgKzMwNiw3IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0
b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgUGxhdGZvcm1SU0FLZXlD
b250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFs
dWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tl
eVR5cGU6OlB1YmxpYywgUGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFz
ZSgpKSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBD
cnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVp
bnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQpAQCAtNDAxLDcgKzQwMSw3IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tl
eVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVu
dGlmaWVyLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAh
IWhhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyKHBs
YXRmb3JtS2V5LnJlbGVhc2UoKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2
YXRlLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihwbGF0Zm9ybUtleS5yZWxlYXNlKCkpLCBleHRy
YWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvS2V5UlNBOjpleHBvcnRTcGtpKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcAppbmRleCA5ODg5NTFkMGUyMTc5YjRiYTFhZGQ5
M2ZlZThhZGY3NTVjOTAyYzQ1Li44MzAwZTcwNWU3MjdkNDMwYzY1OGM4YjUyZDk3MTU0YTgyZTg4
NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRp
ZXMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIE9wdGlvbmFsPGNvbnN0IGNoYXIqPiBoYXNoQWxnb3Jp
dGhtTmFtZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4gInNoYTUx
MiI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9u
YWw8aW50PiBobWFjQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAgICAgICAg
IHJldHVybiBHQ1JZX01BQ19ITUFDX1NIQTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0K
IApAQCAtODIsNyArODIsNyBAQCBPcHRpb25hbDxpbnQ+IGRpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4gR0NSWV9NRF9TSEE1MTI7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBPcHRpb25hbDxQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
ICAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAg
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBPcHRpb25hbDxz
aXplX3Q+IG1waUxlbmd0aChnY3J5X21waV90IHBhcmFtTVBJKQogICAgIGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgbnVsbHB0ciwgMCwgJmRhdGFM
ZW5ndGgsIHBhcmFtTVBJKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewog
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJl
dHVybiBkYXRhTGVuZ3RoOwpAQCAtMTIyLDcgKzEyMiw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBp
TGVuZ3RoKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZh
bHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBtcGktZGF0YSkKICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBh
cmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CiAgICAgaWYgKCFwYXJhbU1QSSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBtcGlMZW5ndGgocGFyYW1NUEkpOwogfQpAQCAtMTMyLDE0ICsxMzIsMTQgQEAg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfbXBpX3QgcGFyYW1NUEkpCiAg
ICAgLy8gUmV0cmlldmUgdGhlIE1QSSBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5n
dGgocGFyYW1NUEkpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ29weSB0aGUgTVBJ
IGRhdGEgaW50byBhIHByb3Blcmx5LXNpemVkIGJ1ZmZlci4KICAgICBWZWN0b3I8dWludDhfdD4g
b3V0cHV0KCpsZW5ndGgpOwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50
KEdDUllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwg
cGFyYW1NUEkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91
dHB1dDsKQEAgLTE1MCw3ICsxNTAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVpl
cm9QcmVmaXhlZERhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIC8v
IFJldHJpZXZlIHRoZSBNUEkgbGVuZ3RoLiBCYWlsIGlmIHRoZSByZXRyaWV2ZWQgbGVuZ3RoIGlz
IGxvbmdlciB0aGFuIHRhcmdldCBsZW5ndGguCiAgICAgYXV0byBsZW5ndGggPSBtcGlMZW5ndGgo
cGFyYW1NUEkpOwogICAgIGlmICghbGVuZ3RoIHx8ICpsZW5ndGggPiB0YXJnZXRMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBGaWxsIG91dCB0aGUgb3V0cHV0IGJ1ZmZlciB3aXRoIHplcm9zLiBQcm9wZXJs
eSBkZXRlcm1pbmUgdGhlIHplcm8gcHJlZml4IGxlbmd0aCwKICAgICAvLyBhbmQgY29weSB0aGUg
TVBJIGRhdGEgaW50byBtZW1vcnkgYXJlYSBmb2xsb3dpbmcgdGhlIHByZWZpeCAoaWYgYW55KS4K
QEAgLTE1OSw3ICsxNTksNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVm
aXhlZERhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSwgc2l6ZV90IHRhcmdldAogICAgIGdjcnlfZXJy
b3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgb3V0cHV0LmRhdGEo
KSArIHByZWZpeExlbmd0aCwgdGFyZ2V0TGVuZ3RoLCBudWxscHRyLCBwYXJhbU1QSSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTcwLDcg
KzE3MCw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBw
YXJhbVNleHApCiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMt
ZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEpCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5
X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBfbnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElf
Rk1UX1VTRykpOwogICAgIGlmICghcGFyYW1NUEkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbXBpRGF0YShw
YXJhbU1QSSk7CiB9CkBAIC0xODAsNyArMTgwLDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBtcGlaZXJvUHJlZml4ZWREYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCwgc2l6ZV90IHRhcmcK
ICAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9u
OiAobmFtZSBtcGktZGF0YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBh
cmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7
CiAgICAgaWYgKCFwYXJhbU1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRh
KHBhcmFtTVBJLCB0YXJnZXRMZW5ndGgpOwogfQpAQCAtMTg5LDcgKzE4OSw3IEBAIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5X21waV90IG1waSkKIHsKICAgICBh
dXRvIGRhdGEgPSBtcGlEYXRhKG1waSk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRh
dGEtPmF0KDApICYgMHg4MCkKICAgICAgICAgZGF0YS0+aW5zZXJ0KDAsIDB4MDApOwpAQCAtMjAx
LDcgKzIwMSw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpU2lnbmVkRGF0YShnY3J5
X3NleHBfdCBwYXJhbVNleHApCiB7CiAgICAgYXV0byBkYXRhID0gbXBpRGF0YShwYXJhbVNleHAp
OwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChkYXRhLT5hdCgwKSAmIDB4ODApCiAgICAg
ICAgIGRhdGEtPmluc2VydCgwLCAweDAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvU2VyaWFsaXplZENyeXB0b0tleVdyYXBHQ3J5cHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKaW5k
ZXggMzRjZDA2N2NmMjRmNjJiYzZlY2ZhNjcyMDc2NTA3N2JiZjlhNjUxMy4uMjUwZDJmMjM1Y2Rh
MmQ0NGQxZDc0N2Q0ZjMyOGRlMmZjMjc2ZGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogLy8gSW5pdGlhbGx5IHRoZXNlIGhlbHBlciBmdW5jdGlvbnMgd2VyZSBpbnRlbmRl
ZCB0byBwZXJmb3JtIEtFSyB3cmFwcGluZyBhbmQgdW53cmFwcGluZywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcAppbmRleCBiYmNkOGQ4MTI1ZGU3NWQ3OTBkMDQ0
MTJhY2VmMmFlMDRmODg3YTBiLi4zZGM1OGY1MzQ3NzU0Njc4MzhhNjZiYTVmYzQ4ZGRjY2I2NjZl
NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gdG9O
YW1lZEN1cnZlKGNvbnN0IFN0cmluZyYgY3VydmUpCiAgICAgaWYgKGN1cnZlID09IFA1MjEpCiAg
ICAgICAgIHJldHVybiBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDUyMTsKIAotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQ3J5cHRvS2V5
RUM6OkNyeXB0b0tleUVDKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFt
ZWRDdXJ2ZSBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZSB0eXBlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVy
JiYgcGxhdGZvcm1LZXksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVz
YWdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJT
QS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3BwCmluZGV4
IGE3YzYwNzkxYjkxZTlmNWQyZDQ4MTczZDY4NzJlYWMyZTQzY2Q3YTYuLjhkMGJmZDgxYmQ0NTQ0
YzhlZWY3N2U5NDUwN2Y5OTJmMDI1ZjAxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5UlNBLmNwcApAQCAtNTcsOCArNTcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobQogICAgIGlmIChrZXlEYXRhLmQuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gaW1wb3J0IHB1
YmxpYyBrZXkKICAgICAgICAgYXV0byBwdWJsaWNLZXlDb21wb25lbnRzID0gQ3J5cHRvS2V5UlNB
Q29tcG9uZW50czo6Y3JlYXRlUHVibGljKFdURk1vdmUoKm1vZHVsdXMpLCBXVEZNb3ZlKCpleHBv
bmVudCkpOwotICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3Qg
aWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNy
ZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMSksICEhaGFzaCwgKnB1YmxpY0tleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OworICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlz
IGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFz
aCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShh
bGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsICpwdWJsaWNLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAg
ICB9CiAKICAgICAvLyBpbXBvcnQgcHJpdmF0ZSBrZXkKQEAgLTY3LDggKzY3LDggQEAgUmVmUHRy
PENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBhbGdvcml0aG0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGtleURh
dGEucC5pc051bGwoKSAmJiBrZXlEYXRhLnEuaXNOdWxsKCkgJiYga2V5RGF0YS5kcC5pc051bGwo
KSAmJiBrZXlEYXRhLmRwLmlzTnVsbCgpICYmIGtleURhdGEucWkuaXNOdWxsKCkpIHsKICAgICAg
ICAgYXV0byBwcml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNy
ZWF0ZVByaXZhdGUoV1RGTW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSwgV1RGTW92
ZSgqcHJpdmF0ZUV4cG9uZW50KSk7Ci0gICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhh
dmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICAgICAgcmV0dXJuIENy
eXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJh
Y3RhYmxlLCB1c2FnZXMpOworICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFu
eSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgICAgIHJldHVybiBDcnlwdG9L
ZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiAgICAgfQogCiAgICAgaWYgKGtleURhdGEucC5pc051bGwoKSB8fCBrZXlE
YXRhLnEuaXNOdWxsKCkgfHwga2V5RGF0YS5kcC5pc051bGwoKSB8fCBrZXlEYXRhLmRxLmlzTnVs
bCgpIHx8IGtleURhdGEucWkuaXNOdWxsKCkpCkBAIC0xMDEsOCArMTAxLDggQEAgUmVmUHRyPENy
eXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmllciBhbGdvcml0aG0KIAogICAgIGlmICgha2V5RGF0YS5vdGgpIHsKICAgICAgICAgYXV0byBw
cml2YXRlS2V5Q29tcG9uZW50cyA9IENyeXB0b0tleVJTQUNvbXBvbmVudHM6OmNyZWF0ZVByaXZh
dGVXaXRoQWRkaXRpb25hbERhdGEoV1RGTW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50
KSwgV1RGTW92ZSgqcHJpdmF0ZUV4cG9uZW50KSwgV1RGTW92ZShmaXJzdFByaW1lSW5mbyksIFdU
Rk1vdmUoc2Vjb25kUHJpbWVJbmZvKSwgeyB9KTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3Vs
ZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAgICAgICBy
ZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50
cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90
IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJu
IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBl
eHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9CiAKICAgICBWZWN0b3I8Q3J5cHRvS2V5UlNBQ29t
cG9uZW50czo6UHJpbWVJbmZvPiBvdGhlclByaW1lSW5mb3M7CkBAIC0xMjYsOCArMTI2LDggQEAg
UmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2soQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG0KICAgICB9CiAKICAgICBhdXRvIHByaXZhdGVLZXlDb21w
b25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlv
bmFsRGF0YShXVEZNb3ZlKCptb2R1bHVzKSwgV1RGTW92ZSgqZXhwb25lbnQpLCBXVEZNb3ZlKCpw
cml2YXRlRXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQ
cmltZUluZm8pLCBXVEZNb3ZlKG90aGVyUHJpbWVJbmZvcykpOwotICAgIC8vIE5vdGljZTogQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBz
aG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVsbG9wdC4KLSAgICBy
ZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50
cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2
ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgc3RkOjpudWxsb3B0LgorICAgIHJldHVybiBDcnlwdG9L
ZXlSU0E6OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiB9CiAKIEpzb25XZWJLZXkgQ3J5cHRvS2V5UlNBOjpleHBvcnRKd2soKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1BRVNfR0NNTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTU1hYy5jcHAKaW5kZXggMmU3NzY0MGYwYzA4NTE3NTAxYWVjMmM5YzY3ZGJmYjc2
OTQ1NWRjNy4uOGI5YjNiZmU4ZDhlNjkxYTc3Y2I2NDRiNWJhMzJhMzUzMDMwMjdiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19H
Q01NYWMuY3BwCkBAIC03MywxMiArNzMsMTIgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gZGVjeXB0QUVTX0dDTShjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb24KIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0
Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRl
eHQpCiB7Ci0gICAgcmV0dXJuIGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwg
a2V5LmtleSgpLCBwbGFpblRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwg
cGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVPcigwKSAvIDgpOworICAgIHJldHVybiBlbmNyeXB0
QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGtleS5rZXkoKSwgcGxhaW5UZXh0LCBwYXJh
bWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVl
X29yKDApIC8gOCk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0dj
bVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICByZXR1cm4gZGVjeXB0QUVTX0dDTShwYXJh
bWV0ZXJzLml2VmVjdG9yKCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRp
dGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7
CisgICAgcmV0dXJuIGRlY3lwdEFFU19HQ00ocGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5
KCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1l
dGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1FQ0RITWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
RUNESE1hYy5jcHAKaW5kZXggZDc4MGVmMDE2MGRiMDliNDFiZDgwNjAxNmUxNDgxMDRjNWEzMDY4
Zi4uZWU4NGFlOTcyZTdhNTJjNWEyYWFjNTcyMjQ4OWYwMWY4MzMyODQ4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5
cHRvS2V5RUMmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleUVDJiBwdWJsaWNLZXkpCiB7Ci0gICAg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRlcml2ZWRLZXkoYmFzZUtleS5rZXlTaXplSW5CaXRzKCkgLyA4KTsgLy8gUGVy
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MDkwI3NlY3Rpb24tNC4KICAgICBzaXpl
X3Qgc2l6ZSA9IGRlcml2ZWRLZXkuc2l6ZSgpOwogICAgIGlmICghQ0NFQ0NyeXB0b3JDb21wdXRl
U2hhcmVkU2VjcmV0KGJhc2VLZXkucGxhdGZvcm1LZXkoKSwgcHVibGljS2V5LnBsYXRmb3JtS2V5
KCksIGRlcml2ZWRLZXkuZGF0YSgpLCAmc2l6ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAppbmRleCBmOGRiM2IyZjk5M2Zl
MDY4YTM4ZjZjM2EzY2NiZDUzNTVjYTk4MTVjLi4zMDMwNzcyMDBkNzU3Yzc4YmEzNmZlNjI5N2Jj
ZGVmM2RiY2UzNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhNQUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIE9wdGlvbmFs
PENDSG1hY0FsZ29yaXRobT4gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0
aG1JZGVudGkKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6CiAg
ICAgICAgIHJldHVybiBrQ0NIbWFjQWxnU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFs
Z29yaXRobS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9EaWdlc3RBbGdvcml0
aG0uaAppbmRleCAwODkxZDM5MTRhOTRkZTQ0OGYxYzUyNDIxZWYzYWIyYTFmMjFlMTE5Li44ZDE3
ODE3ZTc0MThlOTUxMGU4ZTAzODdmYTk4ZTdkMjVjNTZlMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgc3RhdGljIE9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0Rp
Z2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcmkKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCmluZGV4IGY0N2UxZDhhNzM3MGIyNjU2
ZjA5OGMxNTNlYzUxZDQ0OGFlYWNlMTEuLmY1NGRiNzdkMjkzNjIwMDY5NjA0YzNlMjEzYzg3NzY5
MTBkMzdlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5
RUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMu
Y3BwCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBDQ0VD
Q3J5cHRvclJlZiBjY1B1YmxpY0tleSA9IG51bGxwdHI7CiAgICAgQ0NFQ0NyeXB0b3JSZWYgY2NQ
cml2YXRlS2V5ID0gbnVsbHB0cjsKICAgICBpZiAoQ0NFQ0NyeXB0b3JHZW5lcmF0ZVBhaXIoc2l6
ZSwgJmNjUHVibGljS2V5LCAmY2NQcml2YXRlS2V5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHVibGljS2V5
ID0gQ3J5cHRvS2V5RUM6OmNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6
UHVibGljLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyKGNjUHVibGljS2V5KSwgdHJ1ZSwgdXNhZ2Vz
KTsKICAgICBhdXRvIHByaXZhdGVLZXkgPSBDcnlwdG9LZXlFQzo6Y3JlYXRlKGlkZW50aWZpZXIs
IGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyKGNj
UHJpdmF0ZUtleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCmluZGV4IDI3NTVlNzM1ZmU2ZGM4NDZiYjRmMWJl
OGRkZTUyYzE0N2I5ZjA5OTIuLjZmMWE4NDIyMmFiMmZiMTNmYjQ4ZjRiYzU1MzZkNTNhMGIxNDg5
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJTQU1hYy5jcHAK
QEAgLTMxOCw4ICszMTgsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6Omlt
cG9ydFNwa2koQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIGlmIChDQ1JT
QUNyeXB0b3JJbXBvcnQoa2V5RGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBrZXlEYXRhLnNpemUo
KSAtIGhlYWRlclNpemUsICZjY1B1YmxpY0tleSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0
IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMg
V1RGOjpudWxsb3B0LgotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50
aWZpZXIsIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEh
aGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1B1
YmxpY0tleSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsKKyAgICAvLyBOb3RpY2U6IENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxk
IG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBzdGQ6Om51bGxvcHQuCisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVi
bGljLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1B1YmxpY0tleSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpKTsKIH0KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6
OmV4cG9ydFNwa2koKSBjb25zdApAQCAtMzc1LDggKzM3NSw4IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBp
ZGVudGlmCiAgICAgaWYgKENDUlNBQ3J5cHRvckltcG9ydChrZXlEYXRhLmRhdGEoKSArIGhlYWRl
clNpemUsIGtleURhdGEuc2l6ZSgpIC0gaGVhZGVyU2l6ZSwgJmNjUHJpdmF0ZUtleSkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBh
bnkgZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgUGxhdGZv
cm1SU0FLZXlDb250YWluZXIoY2NQcml2YXRlS2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwor
ICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBh
IHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0
ZDo6bnVsbG9wdC4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlm
aWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFo
YXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihjY1By
aXZhdGVLZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5t
bQppbmRleCBhN2YwOGZkMTc3NDMzZmYyYmY2NTQwN2ZjZGRhMjY4MjNkY2U0ZGM2Li44OTkzMzg4
OGIyMmQ5YTM5ODg0ZjkxYWU4MmViMzM4OWI5YWQxMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTEw
Miw3ICsxMDIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcmVhdGVBbmRT
dG9yZU1hc3RlcktleSgpCiAgICAgc3RhdHVzID0gU2VjQWNjZXNzQ3JlYXRlKChfX2JyaWRnZSBD
RlN0cmluZ1JlZilsb2NhbGl6ZWRJdGVtTmFtZSwgbnVsbHB0ciwgJmFjY2Vzc1JlZik7CiAgICAg
aWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSBzZWN1
cml0eSBhY2Nlc3Mgb2JqZWN0IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBlcnJv
ciAlZCIsIChpbnQpc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgUmV0YWluUHRyPFNlY0FjY2Vzc1Jl
Zj4gYWNjZXNzID0gYWRvcHRDRihhY2Nlc3NSZWYpOwogCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNh
bm5vdCBjcmVhdGUgYSB0cnVzdGVkIGFwcGxpY2F0aW9uIG9iamVjdCBmb3Igc3RvcmluZyBXZWJD
cnlwdG8gbWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAg
IFJldGFpblB0cjxTZWNUcnVzdGVkQXBwbGljYXRpb25SZWY+IHRydXN0ZWRBcHAgPSBhZG9wdENG
KHRydXN0ZWRBcHBSZWYpOwogCiAgICAgc3RhdHVzID0gU2VjQUNMU2V0Q29udGVudHMoYWNsLCAo
X19icmlkZ2UgQ0ZBcnJheVJlZilAWyAoX19icmlkZ2UgaWQpdHJ1c3RlZEFwcC5nZXQoKSBdLCAo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpbG9jYWxpemVkSXRlbU5hbWUsIGtTZWNLZXljaGFpblByb21w
dFJlcXVpcmVQYXNzcGhhc2UpOwogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDYW5ub3Qgc2V0IEFDTCBmb3IgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwg
KGludClzdGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICNlbmRpZgogCkBAIC0xNDQsNyArMTQ0LDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgc3RhdHVzID0gU2VjSXRlbUFkZCgo
Q0ZEaWN0aW9uYXJ5UmVmKWF0dHJpYnV0ZXMsIG51bGxwdHIpOwogICAgIGlmIChzdGF0dXMpIHsK
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJDYW5ub3Qgc3RvcmUgV2ViQ3J5cHRvIG1hc3RlciBrZXks
IGVycm9yICVkIiwgKGludClzdGF0dXMpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBtYXN0ZXJL
ZXlEYXRhOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGZpbmRNYXN0ZXJLZXkoKQogICAgIGlmIChzdGF0dXMpIHsKICAgICAgICAgaWYgKHN0YXR1
cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQgJiYgc3RhdHVzICE9IGVyclNlY1VzZXJDYW5jZWxlZCkK
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGZpbmQgV2ViQ3J5cHRvIG1hc3Rl
ciBrZXkgaW4gS2V5Y2hhaW4sIGVycm9yICVkIiwgKGludClzdGF0dXMpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKICAg
ICByZXR1cm4gYmFzZTY0RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0
YUdldEJ5dGVQdHIoa2V5RGF0YS5nZXQoKSkpLCBDRkRhdGFHZXRMZW5ndGgoa2V5RGF0YS5nZXQo
KSkpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVs
dFdlYkNyeXB0b01hc3RlcktleSgpCiAgICAgICAgIHJldHVybiBtYXN0ZXJLZXk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBib29sIGRlbGV0ZURlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NC
Q09wZW5TU0wuY3BwCmluZGV4IDRiM2RlYTMwZGE2NjJmMWU5NWE3YTU1OGY0ZDY1MWM4ZDgyZTM1
MmUuLmM5ZWM5OWM5YTg5YjFhYTk5ZDcwNDBlZGZkMWVmMWYyMTM2YTgwNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVu
U1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0
aG1BRVNfQ0JDT3BlblNTTC5jcHAKQEAgLTUzLDE0ICs1MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGht
KGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4
UHRyIGN0eDsKICAgICBpbnQgbGVuOwogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRo
ZSBjb250ZXh0CiAgICAgaWYgKCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RY
X25ldygpKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgcGxhaW5TaXplID0gcGxhaW5UZXh0LnNpemUoKTsK
ICAgICBjb25zdCBzaXplX3QgY2lwaGVyVGV4dExlbiA9IHJvdW5kVXBUb011bHRpcGxlT2YoRVZQ
X0NJUEhFUl9ibG9ja19zaXplKGFsZ29yaXRobSksIHBsYWluU2l6ZSArIDEpOwpAQCAtNjgsMTUg
KzY4LDE1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIEluaXRpYWxpemUgdGhl
IGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0
eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4g
dGhlIGVuY3J5cHRlZCBvdXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHgu
Z2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblNp
emUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gRmluYWxpemUgdGhlIGVuY3J5cHRpb24uIEZ1cnRoZXIgY2lwaGVy
dGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQ
X0VuY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpICsgbGVuLCAmbGVu
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBjaXBoZXJUZXh0OwogfQpAQCAtODUsNyArODUsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0g
YWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
RXZwQ2lwaGVyQ3R4UHRyIGN0eDsKIApAQCAtOTYsMjAgKzk2LDIwIEBAIHN0YXRpYyBPcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAg
IGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVjcnlwdGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAh
PSBFVlBfRGVjcnlwdEluaXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5k
YXRhKCksIGl2LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJl
IGRlY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAogICAgIGlmICgxICE9
IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgY2lw
aGVyVGV4dC5kYXRhKCksIGNpcGhlclNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiA9IGxlbjsK
IAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9uLiBGdXJ0aGVyIHBsYWludGV4dCBieXRl
cyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRG
aW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHBsYWluVGV4dExlbiArPSBsZW47CiAKICAgICBwbGFpblRleHQuc2hyaW5rKHBsYWluVGV4dExl
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3BlblNTTC5jcHAKaW5kZXggZjgwZGExYjY0NmQ5ZTI2MzU0
NjkyMzI2MDA2MmM4YTk2MmY1NGQ4NS4uYWI2ODdmNmNjZTNhMjM2MWNiNWU0MmMxNWQ4NWNhOGZk
MTc4Njc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NGQk9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DRkJPcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3Jp
dGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKIApAQCAtNjIsMjMgKzYyLDIzIEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4
dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9D
VFhfc2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhl
IGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0
eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4g
dGhlIGVuY3J5cHRlZCBvdXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHgu
Z2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRl
eHQuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBGdXJ0aGVy
IGNpcGhlcnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAgIGlmICgx
ICE9IEVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGxl
biwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTg3LDcgKzg3LDcg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29y
aXRobSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIEV2cENpcGhlckN0eFB0ciBjdHg7CiAKQEAgLTk3LDE5ICs5NywxOSBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRl
eHQKICAgICBpZiAoIShjdHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkp
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGRlY3J5cHRpb24gb3BlcmF0aW9uCiAgICAg
aWYgKDEgIT0gRVZQX0RlY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRy
LCBrZXkuZGF0YSgpLCBpdi5kYXRhKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2Fn
ZSB0byBiZSBkZWNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIHBsYWludGV4dCBvdXRwdXQKICAgICBp
ZiAoMSAhPSBFVlBfRGVjcnlwdFVwZGF0ZShjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCksICZs
ZW4sIGNpcGhlclRleHQuZGF0YSgpLCBjaXBoZXJTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXpl
IHRoZSBkZWNyeXB0aW9uLiBGdXJ0aGVyIHBsYWludGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBh
dCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCks
IHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHBsYWluVGV4
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUFFU19DVFJPcGVuU1NMLmNwcAppbmRleCBiMWQxOGEwOWUwNDYwNDk5
NDMyZTk4YWFmZjcwYTZiMjZiYjg5ZTUwLi45MzE0NjIzOTZkZDFjMjNhYTI2Zjk2MDI3NjU1Yjky
YTkwZTI5OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1BRVNfQ1RST3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5TU0wuY3BwCkBAIC01NCwyMCArNTQs
MjAgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHQoaW50IG9wZXJhdGlv
biwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkKICAgICBjb25zdGV4cHIgc2l6ZV90IGJsb2Nr
U2l6ZSA9IDE2OwogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRobSA9IGFlc0FsZ29yaXRo
bShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEV2cENpcGhlckN0
eFB0ciBjdHg7CiAgICAgaW50IGxlbjsKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0
aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NU
WF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgY29uc3Qgc2l6ZV90IGJsb2NrcyA9IHJvdW5kVXBUb011bHRp
cGxlT2YoYmxvY2tTaXplLCBpbnB1dFRleHQuc2l6ZSgpKSAvIGJsb2NrU2l6ZTsKIAogICAgIC8v
IERldGVjdCBsb29wCiAgICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDgg
JiYgYmxvY2tzID4gKChzaXplX3QpMSA8PCBjb3VudGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENh
bGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKICAgICBDcnlwdG9BbGdvcml0aG1BRVNf
Q1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50
ZXJMZW5ndGgpOwpAQCAtODMsMTkgKzgzLDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNyeXB0KGludCBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5CiAg
ICAgewogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pIG9w
ZXJhdGlvbgogICAgICAgICBpZiAoMSAhPSBFVlBfQ2lwaGVySW5pdF9leChjdHguZ2V0KCksIGFs
Z29yaXRobSwgbnVsbHB0ciwga2V5LmRhdGEoKSwgY291bnRlci5kYXRhKCksIG9wZXJhdGlvbikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBEaXNhYmxlIHBhZGRpbmcKICAgICAgICAgaWYgKDEg
IT0gRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIC8vIFByb3ZpZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkKGRlY3J5cHRl
ZCksIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZChkZWNyeXB0ZWQpIG91dHB1dAogICAgICAgICBp
ZiAoMSAhPSBFVlBfQ2lwaGVyVXBkYXRlKGN0eC5nZXQoKSwgb3V0cHV0VGV4dC5kYXRhKCksICZs
ZW4sIGlucHV0VGV4dC5kYXRhKCksIGhlYWRTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8v
IEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9IEVW
UF9DaXBoZXJGaW5hbF9leChjdHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgbGVuLCAmbGVu
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFNlZG9uZCBwYXJ0CkBAIC0xMDYsMTkgKzEw
NiwxOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0
aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleQogCiAgICAgICAgIC8vIEluaXRpYWxpemUg
dGhlIGVuY3J5cHRpb24oZGVjcnlwdGlvbikgb3BlcmF0aW9uCiAgICAgICAgIGlmICgxICE9IEVW
UF9DaXBoZXJJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBrZXkuZGF0YSgp
LCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwgb3BlcmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIC8vIERpc2FibGUgcGFkZGluZwogICAgICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9z
ZXRfcGFkZGluZyhjdHguZ2V0KCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUHJvdmlk
ZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQoZGVjcnlwdGVkKSwgYW5kIG9idGFpbiB0aGUg
ZW5jcnlwdGVkKGRlY3J5cHRlZCkgb3V0cHV0CiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJV
cGRhdGUoY3R4LmdldCgpLCBvdXRwdXRUZXh0LmRhdGEoKSArIGhlYWRTaXplLCAmbGVuLCBpbnB1
dFRleHQuZGF0YSgpICsgaGVhZFNpemUsIHRhaWxTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uKGRlY3J5cHRpb24pCiAgICAgICAgIGlmICgxICE9
IEVWUF9DaXBoZXJGaW5hbF9leChjdHguZ2V0KCksIG91dHB1dFRleHQuZGF0YSgpICsgaGVhZFNp
emUgKyBsZW4sICZsZW4pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dFRl
eHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfR0NNT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKaW5kZXggMjcyYTYyNDMzOWVhNDY0NTVk
NTc1Y2EwOGRkYWNmN2VlZWJiNzU5NS4uMDVmNmVjOTU0ZWRjNjM3YWIyYTc5YzZmMTVkMzIwNzlj
MzZhODk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcApAQCAtNTMsNyArNTMsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdEVuY3J5cHQoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3Jp
dGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKICAgICBpbnQgbGVuOwpAQCAtNjMsNDIgKzYzLDQy
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6
ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVS
X0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0g
RVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5
cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIFNldCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NU
WF9jdHJsKGN0eC5nZXQoKSwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxs
cHRyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVW
UF9FbmNyeXB0SW5pdF9leChjdHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCks
IGl2LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChh
ZGRpdGlvbmFsRGF0YS5zaXplKCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9FbmNyeXB0
VXBkYXRlKGN0eC5nZXQoKSwgbnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBh
ZGRpdGlvbmFsRGF0YS5zaXplKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gUHJvdmlk
ZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBvYnRhaW4gdGhlIGVuY3J5cHRlZCBv
dXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0ZShjdHguZ2V0KCksIGNpcGhlclRl
eHQuZGF0YSgpLCAmbGVuLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQuc2l6ZSgpKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNyeXB0aW9uLiBOb3JtYWxseSBjaXBoZXJ0ZXh0IGJ5
dGVzIG1heSBiZSB3cml0dGVuIGF0CiAgICAgLy8gdGhpcyBzdGFnZSwgYnV0IHRoaXMgZG9lcyBu
b3Qgb2NjdXIgaW4gR0NNIG1vZGUKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEZpbmFsX2V4KGN0
eC5nZXQoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0
IHRoZSB0YWcKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9jdHJsKGN0eC5nZXQoKSwgRVZQ
X0NUUkxfR0NNX0dFVF9UQUcsIHRhZ0xlbmd0aCwgY2lwaGVyVGV4dC5kYXRhKCkgKyB0YWdPZmZz
ZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIGNpcGhlclRleHQ7CiB9CkBAIC0xMDcsNyArMTA3LDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LCBjb25zdAogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRo
bSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEV2cENpcGhlckN0eFB0ciBjdHg7CiAgICAgaW50IGxlbjsKQEAgLTExOSw0MiArMTE5LDQy
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6
ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVS
X0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRGlzYWJsZSBwYWRkaW5nCiAgICAgaWYgKDEgIT0g
RVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoY3R4LmdldCgpLCAwKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5
cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIFNldCBJViBsZW5ndGgKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NU
WF9jdHJsKGN0eC5nZXQoKSwgRVZQX0NUUkxfR0NNX1NFVF9JVkxFTiwgaXYuc2l6ZSgpLCBudWxs
cHRyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIEluaXRpYWxpemUga2V5IGFuZCBJVgogICAgIGlmICgxICE9IEVW
UF9EZWNyeXB0SW5pdF9leChjdHguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIGtleS5kYXRhKCks
IGl2LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIGFueSBBQUQgZGF0YQogICAgIGlmIChh
ZGRpdGlvbmFsRGF0YS5zaXplKCkgPiAwKSB7CiAgICAgICAgIGlmICgxICE9IEVWUF9EZWNyeXB0
VXBkYXRlKGN0eC5nZXQoKSwgbnVsbHB0ciwgJmxlbiwgYWRkaXRpb25hbERhdGEuZGF0YSgpLCBh
ZGRpdGlvbmFsRGF0YS5zaXplKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gU2V0IGV4
cGVjdGVkIHRhZyB2YWx1ZQogICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4Lmdl
dCgpLCBFVlBfQ1RSTF9HQ01fU0VUX1RBRywgdGFnLnNpemUoKSwgdGFnLmRhdGEoKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0
aGUgZW5jcnlwdGVkIG91dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5n
ZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRl
eHRMZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiA9IGxlbjsKIAogICAgIC8vIEZpbmFsaXplIHRo
ZSBkZWNyeXB0aW9uCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRGaW5hbF9leChjdHguZ2V0KCks
IHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGxhaW5UZXh0TGVuICs9
IGxlbjsKIApAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9y
bUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQp
CiB7Ci0gICAgYXV0byBvdXRwdXQgPSBjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJz
Lml2VmVjdG9yKCksIHBsYWluVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3Rvcigp
LCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZU9yKDApIC8gOCk7CisgICAgYXV0byBvdXRwdXQg
PSBjcnlwdEVuY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIHBsYWluVGV4
dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0
aC52YWx1ZV9vcigwKSAvIDgpOwogICAgIGlmICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsK
QEAgLTE3Myw3ICsxNzMsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0Fs
Z29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdAogCiBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENy
eXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0g
ICAgYXV0byBvdXRwdXQgPSBjcnlwdERlY3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVj
dG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFy
YW1ldGVycy50YWdMZW5ndGgudmFsdWVPcigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gY3J5
cHREZWNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBjaXBoZXJUZXh0LCBw
YXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZh
bHVlX29yKDApIC8gOCk7CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfS1dPcGVuU1NMLmNwcAppbmRleCBhNDU5NDkzNjI4YzFjZWIxZjgwNTMyZmZiOWFi
Yzk3NDU0YWRjMjc1Li5hMTdjMjljYTRkMjYyY2JlOGE2YzNlZjY5N2IxNWRjNjNhZGEzYjliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1B
RVNfS1dPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdFdyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxn
b3JpdGhtKGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lw
aGVyQ3R4UHRyIGN0eDsKICAgICBWZWN0b3I8dWludDhfdD4gY2lwaGVyVGV4dChkYXRhLnNpemUo
KSArIDgpOwpAQCAtNjAsMjEgKzYwLDIxIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogICAg
IC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2
cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRVZQX0NJUEhF
Ul9DVFhfc2V0X2ZsYWdzKGN0eC5nZXQoKSwgRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQX0FMTE9X
KTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGVuY3J5cHRpb24gb3BlcmF0aW9uCiAgICAgaWYg
KDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBr
ZXkuZGF0YSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFByb3ZpZGUgdGhlIG1lc3NhZ2UgdG8g
YmUgZW5jcnlwdGVkLCBhbmQgb2J0YWluIHRoZSBlbmNyeXB0ZWQgb3V0cHV0CiAgICAgaWYgKDEg
IT0gRVZQX0VuY3J5cHRVcGRhdGUoY3R4LmdldCgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgJmxlbiwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBlbmNy
eXB0aW9uLiBGdXJ0aGVyIGNpcGhlcnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBz
dGFnZQogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJU
ZXh0LmRhdGEoKSArIGxlbiwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY2lwaGVyVGV4dDsKIH0K
QEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRV
bndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnMKIHsKICAgICBjb25zdCBF
VlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAgaWYg
KCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4OwogICAgIFZlY3Rvcjx1
aW50OF90PiBwbGFpblRleHQoZGF0YS5zaXplKCkpOwpAQCAtOTIsMjIgKzkyLDIyIEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0VW53cmFwS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBjb25zCiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNv
bnRleHQKICAgICBpZiAoIShjdHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3
KCkpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIEVWUF9DSVBIRVJfQ1RYX3NldF9mbGFncyhjdHguZ2V0KCksIEVWUF9D
SVBIRVJfQ1RYX0ZMQUdfV1JBUF9BTExPVyk7CiAKICAgICAvLyBJbml0aWFsaXplIHRoZSBkZWNy
eXB0aW9uIG9wZXJhdGlvbgogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9leChjdHguZ2V0
KCksIGFsZ29yaXRobSwgbnVsbHB0ciwga2V5LmRhdGEoKSwgbnVsbHB0cikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJlIGRlY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgcGxh
aW50ZXh0IG91dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0VXBkYXRlKGN0eC5nZXQoKSwg
cGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwbGFpblRleHRMZW4gPSBsZW47CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgZGVjcnlwdGlvbi4g
RnVydGhlciBwbGFpbnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4gYXQgdGhpcyBzdGFnZQogICAg
IGlmICgxICE9IEVWUF9EZWNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBwbGFpblRleHQuZGF0YSgp
ICsgbGVuLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwbGFpblRleHRMZW4gKz0gbGVuOwogCiAgICAgcGxhaW5U
ZXh0LnNocmluayhwbGFpblRleHRMZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtSE1BQ09wZW5TU0wuY3BwCmluZGV4IGRm
ZmM5YzllNDAyM2NmYzViMTgyNDJmNTUzYzQ4NjJiMzk2NzQ3YzUuLjIyMjZiN2YwMDhkYjc5Njgx
OWMyYThmNzBjNTM2OTcyYTNhOTc4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUhNQUNPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKQEAgLTQx
LDI5ICs0MSwyOSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVT
aWduYXR1cmUoY29uc3QgRVZQX01EKiBhbGdvcml0aG0sIGNvbgogICAgIC8vIENyZWF0ZSB0aGUg
TWVzc2FnZSBEaWdlc3QgQ29udGV4dAogICAgIEV2cERpZ2VzdEN0eFB0ciBjdHg7CiAgICAgaWYg
KCEoY3R4ID0gRXZwRGlnZXN0Q3R4UHRyKEVWUF9NRF9DVFhfY3JlYXRlKCkpKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIERpZ2VzdFNpZ24gb3BlcmF0aW9uCiAgICAgRXZwUEtleVB0ciBo
a2V5OwogICAgIGlmICghKGhrZXkgPSBFdnBQS2V5UHRyKEVWUF9QS0VZX25ld19tYWNfa2V5KEVW
UF9QS0VZX0hNQUMsIG51bGxwdHIsIGtleS5kYXRhKCksIGtleS5zaXplKCkpKSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoMSAhPSBFVlBfRGlnZXN0U2lnbkluaXQoY3R4LmdldCgpLCBudWxscHRyLCBhbGdvcml0
aG0sIG51bGxwdHIsIGhrZXkuZ2V0KCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ2FsbCB1cGRhdGUgd2l0aCB0
aGUgbWVzc2FnZQogICAgIGlmICgxICE9IEVWUF9EaWdlc3RTaWduVXBkYXRlKGN0eC5nZXQoKSwg
ZGF0YSwgZGF0YUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGaW5hbGl6ZSB0aGUgRGlnZXN0U2lnbiBv
cGVyYXRpb24KICAgICBzaXplX3QgbGVuID0gMDsKICAgICBpZiAoMSAhPSBFVlBfRGlnZXN0U2ln
bkZpbmFsKGN0eC5nZXQoKSwgbnVsbHB0ciwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBPYnRhaW4gdGhl
IHNpZ25hdHVyZQogICAgIFZlY3Rvcjx1aW50OF90PiBjaXBoZXJUZXh0KGxlbik7CiAgICAgaWYg
KDEgIT0gRVZQX0RpZ2VzdFNpZ25GaW5hbChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAm
bGVuKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBjaXBoZXJUZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvS2V5UlNBT3BlblNTTC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAppbmRleCBlNjMx
Y2UxMjg1ODRjZTI4OTIzZTdlOTdhZTZjY2JhNTc2OWI4YjE1Li45M2ZhMGFlOGMyOTVlNjkyZjVm
ZWRmMmE2NTBlZDEyNWIwMTEyYzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHN0
YXRpYyBPcHRpb25hbDx1aW50MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihjb25zdCBWZWN0
b3I8dWludDhfdD4mIGV4cG9uZW50CiB7CiAgICAgaWYgKGV4cG9uZW50LnNpemUoKSA+IDQpIHsK
ICAgICAgICAgaWYgKHN0ZDo6YW55X29mKGV4cG9uZW50LmJlZ2luKCksIGV4cG9uZW50LmVuZCgp
IC0gNCwgW10odWludDhfdCBlbGVtZW50KSB7IHJldHVybiAhIWVsZW1lbnQ7IH0pKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgdWludDMyX3QgcmVzdWx0ID0gMDsKQEAgLTIxOSw3ICsyMTksNyBA
QCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2koQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaQogICAgIGlmICghcGtleSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0b0tleVJTQShpZGVudGlm
aWVyLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhh
c2gsIENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVz
YWdlcykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIs
IGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gs
IENyeXB0b0tleVR5cGU6OlB1YmxpYywgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdl
cykpOwogfQogCiBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgT3B0aW9uYWw8Q3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcj4gaGFzaCwgVmVjdG9yPHVpbnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpAQCAtMjM2LDcgKzIzNiw3
IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmCiAgICAgaWYgKCFwa2V5KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50
aWZpZXIsIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEh
aGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUs
IHVzYWdlcykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZp
ZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhh
c2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIFdURk1vdmUocGtleSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpKTsKIH0KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6
OmV4cG9ydFNwa2koKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29w
ZW5zc2wvT3BlblNTTFV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9PcGVuU1NMVXRpbGl0aWVzLmNwcAppbmRleCBkZDlmNDU0NDZhMGY0YzBkYjFlZDc2YzVmYjBi
MTRhZGUyMTVkY2M4Li44YzIxMjM3YzJmY2FmOWI5YWI2MWEzNWRmNjQwZjY2YmQ1MzQ1OTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0aWVz
LmNwcApAQCAtNTQsMjEgKzU0LDIxIEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3Vs
YXRlRGlnZXN0KGNvbnN0IEVWUF9NRCogYWxnb3JpdGhtLCBjb25zdCBWZWN0b3I8CiB7CiAgICAg
RXZwRGlnZXN0Q3R4UHRyIGN0eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RDdHhQdHIoRVZQ
X01EX0NUWF9jcmVhdGUoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IGRpZ2VzdExlbmd0aCA9IEVWUF9NRF9z
aXplKGFsZ29yaXRobSk7CiAgICAgaWYgKGRpZ2VzdExlbmd0aCA8PSAwKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFZlY3Rv
cjx1aW50OF90PiBkaWdlc3QoZGlnZXN0TGVuZ3RoKTsKIAogICAgIGlmIChFVlBfRGlnZXN0SW5p
dF9leChjdHguZ2V0KCksIGFsZ29yaXRobSwgbnVsbHB0cikgIT0gMSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChF
VlBfRGlnZXN0VXBkYXRlKGN0eC5nZXQoKSwgbWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgp
KSAhPSAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKEVWUF9EaWdlc3RGaW5hbF9leChjdHguZ2V0KCksIGRpZ2Vz
dC5kYXRhKCksIG51bGxwdHIpICE9IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGlnZXN0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tl
eVdyYXBPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6
ZWRDcnlwdG9LZXlXcmFwT3BlblNTTC5jcHAKaW5kZXggOGVkMGVkZDYzNmRmZmFiNzMxZDExZDY3
YThhNWRhNTUxYTMwZTAxZS4uMTIzZGE1NzRjMzFmZmE5NWEyZjEzNjIyYzNmNDI5ZGM2ZmFlNDI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBPcGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNz
bC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGVmYXVsdFdlYkNy
eXB0b01hc3RlcktleSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIEluaXRpYWxseSB0
aGVzZSBoZWxwZXIgZnVuY3Rpb25zIHdlcmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBLRUsgd3JhcHBp
bmcgYW5kIHVud3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFy
YW1ldGVycy9DcnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCmluZGV4IDg2ODg3
YjVhZmFhNWMyZDgxMDRiNDk4MjIzZDk1ZWQ2NGYzZTY2OWMuLmUyOTY2MmEyMjc1NTdjZjYxZDRi
MTQwN2NhNTg3OTUzMjgwNDFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9w
YXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0djbVBhcmFtcy5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRh
VmVjdG9yOwogCiAgICAgICAgIEJ1ZmZlclNvdXJjZSBhZGRpdGlvbmFsRGF0YUJ1ZmZlciA9IFdU
Rk1vdmUoKmFkZGl0aW9uYWxEYXRhKTsKLSAgICAgICAgYWRkaXRpb25hbERhdGEgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIGFkZGl0aW9uYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoIWFkZGl0aW9uYWxEYXRhQnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIG1f
YWRkaXRpb25hbERhdGFWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaAppbmRl
eCAwYjMzMmM0MjY2MzM0ODNiNDdlY2VjOGU1YzU1MWU1MGRlMTY3MWIwLi4zNWQ0NTAxZGE3NmIy
ZWFjNTdhOWIxYzRhMGU3MTQ3NDI3OTMyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2xhYmVs
VmVjdG9yOwogCiAgICAgICAgIEJ1ZmZlclNvdXJjZSBsYWJlbEJ1ZmZlciA9IFdURk1vdmUoKmxh
YmVsKTsKLSAgICAgICAgbGFiZWwgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxhYmVsID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoIWxhYmVsQnVmZmVyLmxlbmd0aCgpKQogICAgICAgICAg
ICAgcmV0dXJuIG1fbGFiZWxWZWN0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcAppbmRleCA5Y2Y2MjkyZTQzODllYzIzOWNlMDE4ZTU1MjY1NGZjMGRlMjM1
YTE4Li40MTljNmFiMjBhY2VjZWQzYTIzZGU5MGIzYWM1OTBhNWZhYWMzNzljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC04OTIsNyArODkyLDcgQEAg
UmVmUHRyPENTU0NhbGNPcGVyYXRpb25Ob2RlPiBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6Y3JlYXRl
TWluT3JNYXhPckNsYW1wKENhbGNPcGUKICAgICBBU1NFUlQob3AgPT0gQ2FsY09wZXJhdG9yOjpN
aW4gfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpNYXggfHwgb3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFt
cCk7CiAgICAgQVNTRVJUX0lNUExJRVMob3AgPT0gQ2FsY09wZXJhdG9yOjpDbGFtcCwgdmFsdWVz
LnNpemUoKSA9PSAzKTsKIAotICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNhdGVn
b3J5ID0gV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPENhbGN1bGF0aW9uQ2F0ZWdvcnk+IGNh
dGVnb3J5ID0gc3RkOjpudWxsb3B0OwogICAgIGZvciAoYXV0byYgdmFsdWUgOiB2YWx1ZXMpIHsK
ICAgICAgICAgYXV0byB2YWx1ZUNhdGVnb3J5ID0gcmVzb2x2ZWRUeXBlRm9yTWluT3JNYXhPckNs
YW1wKHZhbHVlLT5jYXRlZ29yeSgpLCBkZXN0aW5hdGlvbkNhdGVnb3J5KTsKIApAQCAtMTc0Myw3
ICsxNzQzLDcgQEAgYm9vbCBDU1NDYWxjRXhwcmVzc2lvbk5vZGVQYXJzZXI6OnBhcnNlQ2FsY0Z1
bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHRva2VucywKICAgICBzd2l0Y2ggKGZ1bmN0aW9u
SUQpIHsKICAgICBjYXNlIENTU1ZhbHVlTWluOgogICAgIGNhc2UgQ1NTVmFsdWVNYXg6Ci0gICAg
ICAgIG1heEFyZ3VtZW50Q291bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1heEFyZ3VtZW50
Q291bnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVD
bGFtcDoKICAgICAgICAgbWluQXJndW1lbnRDb3VudCA9IDM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGJhYzUyOTg0MTAy
ZWIwMDQ1ZGM2NTM1YWU2OGU2OGI5YjQ2NjhkMDMuLmE2ZDU0M2JjZWRmNTkzNTgzM2FhMmNhNzk3
NDliYjAwNTU1YTMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCBzdGF0aWMgUmVmPENT
U1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENTU1By
b3BlcnR5SUQgcAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBh
cmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDogKm1hcCkgewogICAgICAgICBsaXN0
LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGtleVZhbHVlLmtleSwgQ1NTVW5pdFR5
cGU6OkNTU19TVFJJTkcpKTsKLSAgICAgICAgZG91YmxlIG51bWJlciA9IChwcm9wZXJ0eUlEID09
IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/IGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZh
bHVlIDoga2V5VmFsdWUudmFsdWUucmVzZXRWYWx1ZSkudmFsdWVPcigwKTsKKyAgICAgICAgZG91
YmxlIG51bWJlciA9IChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q291bnRlckluY3JlbWVudCA/
IGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlIDoga2V5VmFsdWUudmFsdWUucmVzZXRWYWx1
ZSkudmFsdWVfb3IoMCk7CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUobnVtYmVyLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUikpOwogICAgIH0KICAgICByZXR1
cm4gbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IGI3N2QxMWZjNjQ1ZDkx
OGE3NTY4YzdkZDMxZDIxN2ZlMTk2ZmM4NTQuLmU1MmY3ZjgyNjg0YmViOGE1OTc4NjJlM2M3OTE4
NmZhYWEzZDY3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMjIxLDcgKzIy
MSw3IEBAIHN0YXRpYyBGb250U2VsZWN0aW9uUmFuZ2UgY2FsY3VsYXRlSXRhbGljUmFuZ2UoQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc0ZvbnRTdHlsZVZhbHVlKCkpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSBTdHlsZTo6QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRT
dHlsZUZyb21WYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIHJldHVybiB7IHJlc3VsdC52YWx1ZU9yKG5v
cm1hbEl0YWxpY1ZhbHVlKCkpLCByZXN1bHQudmFsdWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9
OworICAgICAgICByZXR1cm4geyByZXN1bHQudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSks
IHJlc3VsdC52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKSB9OwogICAgIH0KIAogICAgIEFT
U0VSVCh2YWx1ZS5pc0ZvbnRTdHlsZVJhbmdlVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZS5oCmluZGV4IGYzZjAxNTdkMTAyMjRiNmE2ZTA0ZGYyYjM3NjUxZTY2YjY0MTAxOGIuLjQyYzg1
Y2U4ODY0NjQzMzY1MzNhMmViZWM3ZTQwODI3YzNhNDhmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5oCkBAIC04NCwxNCArODQsMTQgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFu
Z2U7CiAgICAgCiAgICAgLy8gT3B0aW9uYWwgcmV0dXJuIHZhbHVlcyB0byByZXByZXNlbnQgZGVm
YXVsdCBzdHJpbmcgZm9yIG1lbWJlcnMgb2YgRm9udEZhY2UuaAotICAgIGNvbnN0IE9wdGlvbmFs
PENTU1ZhbHVlTGlzdCo+IGZhbWlsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3Rh
dHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFs
dWVMaXN0Kj4+KG1fZmFtaWxpZXMuZ2V0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlv
blJhbmdlPiB3ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1
cmUgPyBXVEY6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFu
Z2U+PihtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQotICAg
IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5j
b21wdXRlV2lkdGgoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxp
YygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVs
bG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlU2xvcGUoKSk7IH0KLSAgICBPcHRpb25hbDxGb250
U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3Rh
dGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVj
dGlvbkNhcGFiaWxpdGllcy5jb21wdXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQot
ICAgIGNvbnN0IE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7
IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiBzdGF0
aWNfY2FzdDxPcHRpb25hbDxWZWN0b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQotICAg
IGNvbnN0IE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6
IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0
aW5ncyk7IH0KLSAgICBPcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZp
b3IoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51
bGxvcHQgOiAgc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9h
ZGluZ0JlaGF2aW9yKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPENTU1ZhbHVlTGlzdCo+IGZhbWls
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpu
dWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4+KG1fZmFtaWxpZXMu
Z2V0KCkpOyB9CisgICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiB3ZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBz
dGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+PihtX2ZvbnRTZWxlY3Rpb25D
YXBhYmlsaXRpZXMuY29tcHV0ZVdlaWdodCgpKTsgfQorICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25SYW5nZT4gc3RyZXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFp
bHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25S
YW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRlV2lkdGgoKSk7IH0KKyAg
ICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IGl0YWxpYygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5j
b21wdXRlU2xvcGUoKSk7IH0KKyAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBmb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0g
U3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllcz4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21w
dXRlRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcygpKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPFZl
Y3RvcjxVbmljb2RlUmFuZ2U+PiByYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBT
dGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxWZWN0
b3I8VW5pY29kZVJhbmdlPj4+KG1fcmFuZ2VzKTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPEZvbnRG
ZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVz
ID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFs
PEZvbnRGZWF0dXJlU2V0dGluZ3M+PihtX2ZlYXR1cmVTZXR0aW5ncyk7IH0KKyAgICBPcHRpb25h
bDxGb250TG9hZGluZ0JlaGF2aW9yPiBsb2FkaW5nQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBt
X3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiAgc3RhdGljX2Nhc3Q8
T3B0aW9uYWw8Rm9udExvYWRpbmdCZWhhdmlvcj4+KG1fbG9hZGluZ0JlaGF2aW9yKTsgfQogICAg
IHZvaWQgc2V0V2VpZ2h0KEZvbnRTZWxlY3Rpb25SYW5nZSB3ZWlnaHQpIHsgbV9mb250U2VsZWN0
aW9uQ2FwYWJpbGl0aWVzLndlaWdodCA9IHdlaWdodDsgfQogICAgIHZvaWQgc2V0U3RyZXRjaChG
b250U2VsZWN0aW9uUmFuZ2Ugc3RyZXRjaCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMu
d2lkdGggPSBzdHJldGNoOyB9CiAgICAgdm9pZCBzZXRTdHlsZShGb250U2VsZWN0aW9uUmFuZ2Ug
aXRhbGljKSB7IG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5zbG9wZSA9IGl0YWxpYzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKaW5kZXggMWEzZmYxNDBmYWFiODM5NGQw
ZjNmZTBkMmUyNmEyY2JmY2U5NzMwZC4uNjM0ZTc4MGM4OTZkYTAwYWEwYTM3OTc1YzE4MWJiNjIx
ZmQ1MGIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCkBAIC0zMzAsMTMg
KzMzMCwxMyBAQCBzdGF0aWMgRm9udFNlbGVjdGlvblJlcXVlc3QgY29tcHV0ZUZvbnRTZWxlY3Rp
b25SZXF1ZXN0KENTU1Byb3BlcnR5UGFyc2VySGVscGVycwogCiAgICAgLy8gQmVjYXVzZSB0aGlz
IGlzIGEgRm9udFJhdywgd2Uga25vdyB3ZSBzaG91bGQgYmUgYWJsZSB0byBkZXJlZmVyZW5jZSBz
dHJldGNoU2VsZWN0aW9uVmFsdWUgYXMKICAgICAvLyBjb25zdW1lRm9udFN0cmV0Y2hLZXl3b3Jk
VmFsdWVSYXcgb25seSByZXR1cm5zIHJlc3VsdHMgdmFsaWQgdG8gcGFzcyB0byBmb250U3RyZXRj
aFZhbHVlLgotICAgIGF1dG8gc3RyZXRjaFNlbGVjdGlvblZhbHVlID0gZm9udFN0cmV0Y2hWYWx1
ZShmb250LnN0cmV0Y2gudmFsdWVPcihDU1NWYWx1ZU5vcm1hbCkpOworICAgIGF1dG8gc3RyZXRj
aFNlbGVjdGlvblZhbHVlID0gZm9udFN0cmV0Y2hWYWx1ZShmb250LnN0cmV0Y2gudmFsdWVfb3Io
Q1NTVmFsdWVOb3JtYWwpKTsKICAgICBBU1NFUlQoc3RyZXRjaFNlbGVjdGlvblZhbHVlKTsKIAog
ICAgIGF1dG8gc3R5bGVLZXl3b3JkID0gZm9udC5zdHlsZSA/IGZvbnQuc3R5bGUtPnN0eWxlIDog
Q1NTVmFsdWVOb3JtYWw7CiAgICAgYXV0byBzdHlsZVNlbGVjdGlvblZhbHVlID0gWyZdICgpIC0+
IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gewogICAgICAgICBpZiAoc3R5bGVLZXl3b3Jk
ID09IENTU1ZhbHVlTm9ybWFsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQg
PT0gQ1NTVmFsdWVJdGFsaWMpCiAgICAgICAgICAgICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAg
ICAgICAgQVNTRVJUKGZvbnQuc3R5bGUgJiYgc3R5bGVLZXl3b3JkID09IENTU1ZhbHVlT2JsaXF1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCmluZGV4IGYxZGY3MDYzMjExYjE4ODVi
NmNiNTk2ZjU3YzU3MzNhZjg1MzU3MWYuLjMxYzAwMDgxY2M2NDhjYjdjYTQwMWZjM2Y0NTEyMDEy
ODZkOWE2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgRm9udFNlbGVjdGlvbktleUhhc2hUcmFpdHMgOiBT
aW1wbGVDbGFzc0hhc2hUcmFpdHM8Rm9udFNlbGVjdGlvbktleT4gewogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgICAgIHN0YXRpYyBGb250
U2VsZWN0aW9uS2V5IGVtcHR5VmFsdWUoKSB7IHJldHVybiBGb250U2VsZWN0aW9uUmVxdWVzdCB7
IH07IH0KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvbnRTZWxl
Y3Rpb25LZXkmIHNsb3QpIHsgc2xvdCA9IFdURjo6bnVsbG9wdDsgfQorICAgICAgICBzdGF0aWMg
dm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udFNlbGVjdGlvbktleSYgc2xvdCkgeyBzbG90
ID0gc3RkOjpudWxsb3B0OyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IEZvbnRTZWxlY3Rpb25LZXkmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KICAgICB9Owog
ICAgIHVzaW5nIEZvbnRTZWxlY3Rpb25IYXNoTWFwID0gSGFzaE1hcDxGb250U2VsZWN0aW9uS2V5
LCBSZWZQdHI8Q1NTU2VnbWVudGVkRm9udEZhY2U+LCBGb250U2VsZWN0aW9uS2V5SGFzaCwgRm9u
dFNlbGVjdGlvbktleUhhc2hUcmFpdHM+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9y
LmNwcAppbmRleCBhY2QyYTFjYzI0ZTM0YzA1NGQwMzc4MjM0ODc3MzdjZmVjN2ZlYjY0Li4xOGY5
N2ZlZjdjNjk1YTFkM2I2ZWRlMzA1M2ZiMGVhY2QyOGFhM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIE9wdGlvbmFsPEF0b21TdHJp
bmc+IENTU0ZvbnRTZWxlY3Rvcjo6cmVzb2x2ZUdlbmVyaWNGYW1pbHkoY29uc3QgRm9udERlc2Ny
aXB0aW9uCiAgICAgICAgIHJldHVybiBwbGF0Zm9ybVJlc3VsdDsKIAogICAgIGlmICghbV9jb250
ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYgc2V0dGluZ3MgPSBtX2NvbnRleHQtPnNldHRpbmdz
VmFsdWVzKCk7CiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBPcHRpb25hbDxBdG9tU3RyaW5nPiBDU1NG
b250U2VsZWN0b3I6OnJlc29sdmVHZW5lcmljRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbgog
ICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmcoKmZhbWlseVN0cmluZyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBG
b250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5TmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAppbmRleCA0NDU0MTZhOGZk
Y2YwZDU1NjNlYTgzZDFlNGRmNjNiNTlkMDQ2ODY2Li4wMDk0YzY4NGNkZjFiN2M1ODE5NjUyYjMx
MTc5M2QwYjUxYmJjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJh
bWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3Bw
CkBAIC0xMTAsMTIgKzExMCwxMiBAQCBPcHRpb25hbDxzaXplX3Q+IFN0eWxlUnVsZUtleWZyYW1l
czo6ZmluZEtleWZyYW1lSW5kZXgoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0CiAgICAgcGFyc2VE
ZWZlcnJlZFJ1bGVzSWZOZWVkZWQoKTsKICAgICBhdXRvIGtleXMgPSBDU1NQYXJzZXI6OnBhcnNl
S2V5ZnJhbWVLZXlMaXN0KGtleSk7CiAgICAgaWYgKGtleXMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZv
ciAoYXV0byBpID0gbV9rZXlmcmFtZXMuc2l6ZSgpOyBpLS07ICkgewogICAgICAgICBpZiAobV9r
ZXlmcmFtZXNbaV0tPmtleXMoKSA9PSBrZXlzKQogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAg
fQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBTdHlsZVJ1bGVLZXlmcmFtZXM6OnNocmlua1RvRml0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGYwZGI0Y2E1YjE1M2MxOTUyZTlhY2JhNDQz
NGZlMTg0ZWQ4OWQ4OTguLjY5ZjA3YTg2MmE1ZDdkYTdiNjNkYzFhOGUyMGY2NjM2N2I0YjQ5YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtODI0LDcgKzgy
NCw3IEBAIEV4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1
ZShDU1NVbml0VHlwZSB1bml0VHlwZSkgY29uc3QKIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVl
Ojpkb3VibGVWYWx1ZShDU1NVbml0VHlwZSB1bml0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZG91YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gZG91
YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSkudmFsdWVfb3IoMCk7CiB9CiAKIGRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBjb25zdApAQCAtODM1LDIxICs4MzUsMjEgQEAg
ZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSgpIGNvbnN0CiBPcHRpb25hbDxi
b29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNaZXJvKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0
aXZlVW5pdFR5cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuICFt
X3ZhbHVlLm51bTsKIH0KIAogT3B0aW9uYWw8Ym9vbD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUG9z
aXRpdmUoKSBjb25zdAogewogICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENTU1VuaXRU
eXBlOjpDU1NfQ0FMQykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5udW0gPiAwOwogfQogCiBPcHRp
b25hbDxib29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNOZWdhdGl2ZSgpIGNvbnN0CiB7CiAgICAg
aWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiBtX3ZhbHVlLm51bSA8IDA7CiB9CiAKQEAgLTg2MSw3ICs4NjEsNyBAQCBib29sIENT
U1ByaW1pdGl2ZVZhbHVlOjppc0NlbnRlclBvc2l0aW9uKCkgY29uc3QKIE9wdGlvbmFsPGRvdWJs
ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUgcmVx
dWVzdGVkVW5pdFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JE
b3VibGVDb252ZXJzaW9uKHByaW1pdGl2ZVVuaXRUeXBlKCkpIHx8ICFpc1ZhbGlkQ1NTVW5pdFR5
cGVGb3JEb3VibGVDb252ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENTU1Vu
aXRUeXBlIHNvdXJjZVVuaXRUeXBlID0gcHJpbWl0aXZlVHlwZSgpOwogICAgIGlmIChyZXF1ZXN0
ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NV
bml0VHlwZTo6Q1NTX0RJTUVOU0lPTikKQEAgLTg3NiwyMCArODc2LDIwIEBAIE9wdGlvbmFsPGRv
dWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoQ1NTVW5pdFR5cGUg
cmVxdWVzdGVkVW5pCiAKICAgICAvLyBDYW5ub3QgY29udmVydCBiZXR3ZWVuIHVucmVsYXRlZCB1
bml0IGNhdGVnb3JpZXMgaWYgb25lIG9mIHRoZW0gaXMgbm90IENTU1VuaXRDYXRlZ29yeTo6TnVt
YmVyLgogICAgIGlmIChzb3VyY2VDYXRlZ29yeSAhPSB0YXJnZXRDYXRlZ29yeSAmJiBzb3VyY2VD
YXRlZ29yeSAhPSBDU1NVbml0Q2F0ZWdvcnk6Ok51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBD
U1NVbml0Q2F0ZWdvcnk6Ok51bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0YXJnZXRDYXRlZ29yeSA9PSBD
U1NVbml0Q2F0ZWdvcnk6Ok51bWJlcikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29udmVy
c2lvbiB0byBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25p
Y2FsIHVuaXQgaW4gdGhpcyB2YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlw
ZSA9IGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAg
ICBpZiAodGFyZ2V0VW5pdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgaWYgKHNvdXJjZVVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1Nf
TlVNQkVSKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIgaW4gdGhlIHNhbWUgd2F5IGFzIENTU1BhcnNlcjo6dmFsaWRVbml0
KCkgd2hpbGUgdXNpbmcgbm9uLXN0cmljdCBtb2RlLgogICAgICAgICBzb3VyY2VVbml0VHlwZSA9
IGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkodGFyZ2V0Q2F0ZWdvcnkpOwogICAgICAgICBp
ZiAoc291cmNlVW5pdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19VTktOT1dOKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgZG91YmxlIGNvbnZlcnRlZFZhbHVlID0gZG91YmxlVmFsdWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCmluZGV4IGZhNWYxODE5NjE5OTIwNjk4ZTdl
MGNkZjUwNGQ2NTg0MjZjY2ZkMWMuLjVkNjdkM2ViNzU0YTkzMmRkMjZiYjA0ZmUyYmUyMjNmMWZi
NTQ5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgpAQCAtNTEsNyArNTEs
NyBAQAogICAgICAgICAiIiwKICAgICAgICAgIiogY29uZGl0aW9uYWwtY29udmVydGVyOiIsCiAg
ICAgICAgICJTaW1pbGFyIHRvIHByb3BlcnR5IGNvbnZlcnRlciwgYnV0IHRoZSBjb252ZXJ0ZXIg
ZnVuY3Rpb24gcmV0dXJucyBhIiwKLSAgICAgICAgIldURjo6T3B0aW9uYWw8PiB0byBpbmRpY2F0
ZSBpZiB0aGUgcHJvcGVydHkgc2V0dGVyIHNob3VsZCBiZSBjYWxsZWQiLAorICAgICAgICAic3Rk
OjpvcHRpb25hbDw+IHRvIGluZGljYXRlIGlmIHRoZSBwcm9wZXJ0eSBzZXR0ZXIgc2hvdWxkIGJl
IGNhbGxlZCIsCiAgICAgICAgICJvciBub3QuIiwKICAgICAgICAgIiIsCiAgICAgICAgICIqIGN1
c3RvbToiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDUxOTNjMzJjMmVm
NWExYjQ0NDI5YzRmMzM1ZjNkN2FhNzI5OTUwNDYuLjZiNDM4OTZkMzhiNjZjMTRhMDY1ODBhZjZk
YTA5ZGFjNDQ4ZjVjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTI4
OSw3ICsyODksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxl
KHVuc2lnbmVkIGluZGV4KQogRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxl
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVu
c2lnbmVkPiBpbmRleCkKIHsKICAgICBhdXRvIHRleHQgPSBtYWtlU3RyaW5nKHNlbGVjdG9yLCAi
IHsgIiwgc3R5bGUsICFzdHlsZS5pc0VtcHR5KCkgPyAiICIgOiAiIiwgJ30nKTsKLSAgICBhdXRv
IGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4LnZhbHVlT3IobGVuZ3Ro
KCkpKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQsIGluZGV4
LnZhbHVlX29yKGxlbmd0aCgpKSk7CiAgICAgaWYgKGluc2VydFJ1bGVSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBpbnNlcnRSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICAvLyBBcyBwZXIgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24sIGFsd2F5cyByZXR1cm4g
LTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCA5OTcxNWNlMjhhN2Y2MDlkYTAw
N2JkMjQyOWEwZWI2ODViY2VhY2M1Li5lN2JkZTNhNGJkZDBmZTdlYjM2OWE0Y2RiYWRjMzVjMTE5
OTg2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ5LDcgKzQ5LDcgQEAg
Y2xhc3MgU2NvcGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0IGZpbmFsIDogcHVibGljIFN0eWxlU2hl
ZXQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxT
dHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwotICAg
IHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGlzT3JpZ2luQ2xlYW4g
PSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyBSZWY8Q1NTU3R5bGVTaGVldD4gY3JlYXRlKFJl
ZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUmIG93bmVyTm9kZSwgY29uc3QgT3B0aW9uYWw8
Ym9vbD4mIGlzT3JpZ2luQ2xlYW4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8Q1NT
U3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIEVsZW1l
bnQmIG93bmVyLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgdmly
dHVhbCB+Q1NTU3R5bGVTaGVldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhLmgKaW5kZXggYjk1NmY2YjNhNjMwYTdmMzJkZjRmMWUwMzVkODlmMjg1
ZDM1NDg3MS4uNjhkMmI2MDNhOTgwY2IwZDEyZWJhNzhhMzdhNjJlMmU2MjhhYWZmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIFJlbmRlclZpZXc7CiAKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEgewogcHVibGljOgotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0
IHpvb20sIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gV1RGOjpu
dWxsb3B0LCBSZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBu
dWxscHRyKQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSog
cGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGZsb2F0IHpvb20sIE9w
dGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0LCBS
ZW5kZXJTdHlsZSogdmlld3BvcnREZXBlbmRlbmN5RGV0ZWN0aW9uU3R5bGUgPSBudWxscHRyKQog
ICAgICAgICA6IG1fc3R5bGUoc3R5bGUpCiAgICAgICAgICwgbV9yb290U3R5bGUocm9vdFN0eWxl
KQogICAgICAgICAsIG1fcGFyZW50U3R5bGUocGFyZW50U3R5bGUpCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHpvb20gPiAwKTsKICAgICB9CiAKLSAgICBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBPcHRpb25hbDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0eVRv
Q29tcHV0ZSA9IFdURjo6bnVsbG9wdCkKKyAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBjb25zdCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
LCBPcHRpb25hbDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0eVRvQ29tcHV0ZSA9IHN0ZDo6bnVsbG9w
dCkKICAgICAgICAgOiBtX3N0eWxlKHN0eWxlKQogICAgICAgICAsIG1fcm9vdFN0eWxlKHJvb3RT
dHlsZSkKICAgICAgICAgLCBtX3BhcmVudFN0eWxlKHBhcmVudFN0eWxlKQpAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgem9vbSgpIGNvbnN0OwogICAgIGJvb2wgY29tcHV0aW5n
Rm9udFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3Bl
cnR5Rm9udFNpemU7IH0KICAgICBib29sIGNvbXB1dGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3BlcnR5VG9Db21wdXRlID09IENTU1Byb3BlcnR5TGluZUhlaWdodDsgfQotICAg
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlUb0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bl
cnR5VG9Db21wdXRlLnZhbHVlT3IoQ1NTUHJvcGVydHlJbnZhbGlkKTsgfQorICAgIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlUb0NvbXB1dGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5VG9Db21w
dXRlLnZhbHVlX29yKENTU1Byb3BlcnR5SW52YWxpZCk7IH0KICAgICBjb25zdCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKICAgICBkb3Vi
bGUgdmlld3BvcnRXaWR0aEZhY3RvcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0RPTU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApp
bmRleCBhMDBmMTY1YjQ4MzczY2JhZTA0NDAwNjBjYTAxMjJhMWZlYWNkYTYxLi5jMzU0ZTk3ODI3
M2JhNTZlMmZmYjU0N2ZmMzkxODMzOWNkMGZjY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNw
cApAQCAtMTg5LDggKzE4OSw4IEBAIFJlZjxET01NYXRyaXg+IERPTU1hdHJpeDo6cm90YXRlU2Vs
Zihkb3VibGUgcm90WCwgT3B0aW9uYWw8ZG91YmxlPiByb3RZLCBPcHRpb25hCiAgICAgICAgIHJv
dFggPSAwOwogICAgICAgICByb3RZID0gMDsKICAgICB9Ci0gICAgbV9tYXRyaXgucm90YXRlM2Qo
cm90WCwgcm90WS52YWx1ZU9yKDApLCByb3RaLnZhbHVlT3IoMCkpOwotICAgIGlmIChyb3RYIHx8
IHJvdFkudmFsdWVPcigwKSkKKyAgICBtX21hdHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLnZhbHVl
X29yKDApLCByb3RaLnZhbHVlX29yKDApKTsKKyAgICBpZiAocm90WCB8fCByb3RZLnZhbHVlX29y
KDApKQogICAgICAgICBtX2lzMkQgPSBmYWxzZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4LmgKaW5kZXggMDZkMDJiMTEzMGVmNmJjN2JiYzFlMGQzMzZjZmI2Mjc1YjNi
NWZiNC4uMzk4MTZjMWQ2NjM5ZWJmZWUyYmJjNmE4MWRlMzhkYzJiMzUyNmU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXguaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeD4+IG11bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5p
dCYmIG90aGVyKTsKICAgICBSZWY8RE9NTWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9
IDAsIGRvdWJsZSB0eSA9IDAsIGRvdWJsZSB0eiA9IDApOwotICAgIFJlZjxET01NYXRyaXg+IHNj
YWxlU2VsZihkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBXVEY6
Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBv
cmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKKyAgICBSZWY8RE9NTWF0cml4PiBzY2Fs
ZVNlbGYoZG91YmxlIHNjYWxlWCA9IDEsIE9wdGlvbmFsPGRvdWJsZT4gc2NhbGVZID0gc3RkOjpu
dWxsb3B0LCBkb3VibGUgc2NhbGVaID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3Jp
Z2luWSA9IDAsIGRvdWJsZSBvcmlnaW5aID0gMCk7CiAgICAgUmVmPERPTU1hdHJpeD4gc2NhbGUz
ZFNlbGYoZG91YmxlIHNjYWxlID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2lu
WSA9IDAsIGRvdWJsZSBvcmlnaW5aID0gMCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gcm90YXRlU2Vs
Zihkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdURjo6bnVsbG9wdCwg
T3B0aW9uYWw8ZG91YmxlPiByb3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBk
ZWdyZWVzLgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZVNlbGYoZG91YmxlIHJvdFggPSAwLCBP
cHRpb25hbDxkb3VibGU+IHJvdFkgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4gcm90
WiA9IHN0ZDo6bnVsbG9wdCk7IC8vIEFuZ2xlcyBhcmUgaW4gZGVncmVlcy4KICAgICBSZWY8RE9N
TWF0cml4PiByb3RhdGVGcm9tVmVjdG9yU2VsZihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7
CiAgICAgUmVmPERPTU1hdHJpeD4gcm90YXRlQXhpc0FuZ2xlU2VsZihkb3VibGUgeCA9IDAsIGRv
dWJsZSB5ID0gMCwgZG91YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMg
aW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiBza2V3WFNlbGYoZG91YmxlIHN4ID0gMCk7
IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRP
bmx5LmNwcAppbmRleCA1ZDg5NTVkYTExZmFjOTJlMzBhZThiYTUwMjM2OTA5ZmNiMTFmZGY3Li5j
MjZjYTQ2MmM4ODViYmE0ODcxNWZmM2M1NGUwOGRjYTg1ZmEwZjQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKQEAgLTEyMywxNyArMTIzLDE3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IERPTU1hdHJpeFJlYWRPbmx5Ojp2YWxpZGF0ZUFuZEZpeHVwKERPTU1hdHJpeDJE
SW5pdCYgaW5pdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgImluaXQu
ZiBhbmQgaW5pdC5tNDIgZG8gbm90IG1hdGNoIl9zIH07CiAKICAgICBpZiAoIWluaXQubTExKQot
ICAgICAgICBpbml0Lm0xMSA9IGluaXQuYS52YWx1ZU9yKDEpOworICAgICAgICBpbml0Lm0xMSA9
IGluaXQuYS52YWx1ZV9vcigxKTsKICAgICBpZiAoIWluaXQubTEyKQotICAgICAgICBpbml0Lm0x
MiA9IGluaXQuYi52YWx1ZU9yKDApOworICAgICAgICBpbml0Lm0xMiA9IGluaXQuYi52YWx1ZV9v
cigwKTsKICAgICBpZiAoIWluaXQubTIxKQotICAgICAgICBpbml0Lm0yMSA9IGluaXQuYy52YWx1
ZU9yKDApOworICAgICAgICBpbml0Lm0yMSA9IGluaXQuYy52YWx1ZV9vcigwKTsKICAgICBpZiAo
IWluaXQubTIyKQotICAgICAgICBpbml0Lm0yMiA9IGluaXQuZC52YWx1ZU9yKDEpOworICAgICAg
ICBpbml0Lm0yMiA9IGluaXQuZC52YWx1ZV9vcigxKTsKICAgICBpZiAoIWluaXQubTQxKQotICAg
ICAgICBpbml0Lm00MSA9IGluaXQuZS52YWx1ZU9yKDApOworICAgICAgICBpbml0Lm00MSA9IGlu
aXQuZS52YWx1ZV9vcigwKTsKICAgICBpZiAoIWluaXQubTQyKQotICAgICAgICBpbml0Lm00MiA9
IGluaXQuZi52YWx1ZU9yKDApOworICAgICAgICBpbml0Lm00MiA9IGluaXQuZi52YWx1ZV9vcigw
KTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RE9NTWF0cml4UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25s
eS5oCmluZGV4IDYzOGJkM2E2OWZhOTVjNTQwZDZhYjZjMDRhYjRlZDJlMGM5YThjZWUuLjhmOWVl
ZTExNjM4ZmRhNjIzNjdkMTFiN2U5YzZkYTkwZjZiMGUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01NYXRyaXhSZWFkT25seS5oCkBAIC0xMDEsOSArMTAxLDkgQEAgcHVibGljOgogICAgIEV4Y2Vw
dGlvbk9yPFJlZjxET01NYXRyaXg+PiBtdWx0aXBseShET01NYXRyaXhJbml0JiYgb3RoZXIpIGNv
bnN0OwogICAgIFJlZjxET01NYXRyaXg+IGZsaXBYKCk7CiAgICAgUmVmPERPTU1hdHJpeD4gZmxp
cFkoKTsKLSAgICBSZWY8RE9NTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9u
YWw8ZG91YmxlPiBzY2FsZVkgPSBXVEY6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3Vi
bGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsK
KyAgICBSZWY8RE9NTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYID0gMSwgT3B0aW9uYWw8ZG91
YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2FsZVogPSAxLCBkb3VibGUgb3Jp
Z2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdpblogPSAwKTsKICAgICBS
ZWY8RE9NTWF0cml4PiBzY2FsZTNkKGRvdWJsZSBzY2FsZSA9IDEsIGRvdWJsZSBvcmlnaW5YID0g
MCwgZG91YmxlIG9yaWdpblkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwotICAgIFJlZjxET01N
YXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IFdU
Rjo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiByb3RaID0gV1RGOjpudWxsb3B0KTsgLy8gQW5n
bGVzIGFyZSBpbiBkZWdyZWVzLgorICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90
WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91
YmxlPiByb3RaID0gc3RkOjpudWxsb3B0KTsgLy8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgogICAg
IFJlZjxET01NYXRyaXg+IHJvdGF0ZUZyb21WZWN0b3IoZG91YmxlIHggPSAwLCBkb3VibGUgeSA9
IDApOwogICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCA9IDAsIGRv
dWJsZSB5ID0gMCwgZG91YmxlIHogPSAwLCBkb3VibGUgYW5nbGUgPSAwKTsgLy8gQW5nbGUgaXMg
aW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiBza2V3WChkb3VibGUgc3ggPSAwKTsgLy8g
QW5nbGUgaXMgaW4gZGVncmVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFNlbGVjdGlv
blZhbHVlSW5saW5lcy5oCmluZGV4IGM4MWYwMDBmOGRiMmFiMTJhYmQ5MjA1OWFlMzM4NWZiN2Yw
ZWQ4ZTQuLjk4OGJmOTdkMDdiNDJmMzkxNjYyYjM4NjcwZDRjZjA3YzY2OTczMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaApAQCAtNTQsNyAr
NTQsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFdlaWdodEtleXdvcmQoRm9u
dFNlbGVjdGlvblZhbHVlIHdlaWdodCkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwog
ICAgIGlmICh3ZWlnaHQgPT0gYm9sZFdlaWdodFZhbHVlKCkpCiAgICAgICAgIHJldHVybiBDU1NW
YWx1ZUJvbGQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBmb250V2VpZ2h0
VmFsdWUoQ1NTVmFsdWVJRCB2YWx1ZSkKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFdlaWdodFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCiAg
ICAgY2FzZSBDU1NWYWx1ZUxpZ2h0ZXI6CiAgICAgICAgIHJldHVybiBsaWdodFdlaWdodFZhbHVl
KCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5l
IE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGZvbnRTdHJldGNoS2V5d29yZChGb250U2VsZWN0aW9uVmFs
dWUgc3RyZXRjaCkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlRXh0cmFFeHBhbmRlZDsKICAgICBp
ZiAoc3RyZXRjaCA9PSB1bHRyYUV4cGFuZGVkU3RyZXRjaFZhbHVlKCkpCiAgICAgICAgIHJldHVy
biBDU1NWYWx1ZVVsdHJhRXhwYW5kZWQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZh
bHVlPiBmb250U3RyZXRjaFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCkBAIC0xMTcsNyArMTE3LDcg
QEAgaW5saW5lIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZm9udFN0cmV0Y2hWYWx1ZShD
U1NWYWx1ZUlEIHZhbHVlKQogICAgIGNhc2UgQ1NTVmFsdWVVbHRyYUV4cGFuZGVkOgogICAgICAg
ICByZXR1cm4gdWx0cmFFeHBhbmRlZFN0cmV0Y2hWYWx1ZSgpOwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogfQogCkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIE9wdGlvbmFsPENTU1ZhbHVlSUQ+
IGZvbnRTdHlsZUtleXdvcmQoT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHlsZSwKICAg
ICAgICAgcmV0dXJuIENTU1ZhbHVlTm9ybWFsOwogICAgIGlmIChzdHlsZS52YWx1ZSgpID09IGl0
YWxpY1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBheGlzID09IEZvbnRTdHlsZUF4aXM6Oml0YWwg
PyBDU1NWYWx1ZUl0YWxpYyA6IENTU1ZhbHVlT2JsaXF1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCAxMTYxOWE5Njg4ODU2YjQ0ODhkMDU5Mjcz
MzU5NzU3ZGEzOTc4YTg5Li5iMzYwOWMyZTgxMmU4NzVmNzAxOWZiODM5YmIwNzFjMDlkZjI5MjZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yNjAs
NyArMjYwLDcgQEAgc3RhdGljIGJvb2wgY29tcGFyZUFzcGVjdFJhdGlvVmFsdWUoQ1NTVmFsdWUq
IHZhbHVlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIE1lZGkKIHN0YXRpYyBPcHRpb25hbDxkb3Vi
bGU+IGRvdWJsZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUp
LmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpLmRvdWJsZVZhbHVlKENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKIH0KIApAQCAtNDg1
LDIxICs0ODUsMjEgQEAgc3RhdGljIGJvb2wgZ3JpZEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIEZyYW0KIHN0YXRpYyBPcHRpb25hbDxk
b3VibGU+IGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBib29sIHN0cmljdCwgY29uc3Qg
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpCiB7CiAgICAgaWYgKCFp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKICAgICBpZiAocHJpbWl0
aXZlVmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBwcmltaXRpdmVW
YWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAvLyBUaGUgb25seSB1bml0bGVzcyBudW1iZXIg
dmFsdWUgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZSBpcyB6ZXJvLgogICAgICAgICBpZiAoc3RyaWN0
ICYmIHZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSk7CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBi
b29sIGRldmljZUhlaWdodEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0
dXJlUHJlZml4IG9wKQpAQCAtODcyLDcgKzg3Miw3IEBAIHN0YXRpYyBib29sIGRpc3BsYXlNb2Rl
RXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
CiAKICAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KS52YWx1ZUlEKCk7CiAKLSAgICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFnZSgpID8gZnJhbWUu
cGFnZSgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBt
YW5pZmVzdCA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+YXBwbGljYXRpb25NYW5pZmVz
dCgpIDogc3RkOjpudWxsb3B0OwogICAgIGlmICghbWFuaWZlc3QpCiAgICAgICAgIHJldHVybiBr
ZXl3b3JkID09IENTU1ZhbHVlQnJvd3NlcjsKIApAQCAtOTI2LDcgKzkyNiw3IEBAIGJvb2wgTWVk
aWFRdWVyeUV2YWx1YXRvcjo6ZXZhbHVhdGUoY29uc3QgTWVkaWFRdWVyeUV4cHJlc3Npb24mIGV4
cHJlc3Npb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAvLyBQYXNz
IGBudWxscHRyYCBmb3IgYHBhcmVudFN0eWxlYCBiZWNhdXNlIHdlIGFyZSBpbiB0aGUgY29udGV4
dCBvZiBhIG1lZGlhIHF1ZXJ5LgotICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVl
KCksIHsgbV9zdHlsZSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCks
IG51bGxwdHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMSwgV1RGOjpudWxsb3B0IH0sICpmcmFt
ZSwgTm9QcmVmaXgpOworICAgIHJldHVybiBmdW5jdGlvbihleHByZXNzaW9uLnZhbHVlKCksIHsg
bV9zdHlsZSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCksIG51bGxw
dHIsIGRvY3VtZW50LnJlbmRlclZpZXcoKSwgMSwgc3RkOjpudWxsb3B0IH0sICpmcmFtZSwgTm9Q
cmVmaXgpOwogfQogCiBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhQXR0cmlidXRlTWF0
Y2hlcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCmluZGV4IDQ1YWRlMjJhMjg5ZjMxMjQ2
NTE5MjYwZGI0MWU5ZDAyZDcyY2JmOTAuLmMxMzdjNTk4MWY3N2VlZjUyZWNhNjUzYmI4ZjlhZTRh
MGVlNmVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC0zMDgs
NyArMzA4LDcgQEAgT3B0aW9uYWw8Q29sb3I+IFN0eWxlUHJvcGVydGllczo6cHJvcGVydHlBc0Nv
bG9yKENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgYXV0byBjb2xvclZhbHVl
ID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eSk7CiAgICAgaWYgKCFpczxDU1NQcmltaXRp
dmVWYWx1ZT4oY29sb3JWYWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwcmltaXRpdmVDb2xvciA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqY29sb3JWYWx1ZSk7CiAgICAgcmV0dXJuIHByaW1p
dGl2ZUNvbG9yLmlzUkdCQ29sb3IoKSA/IHByaW1pdGl2ZUNvbG9yLmNvbG9yKCkgOiBDU1NQYXJz
ZXI6OnBhcnNlQ29sb3IoY29sb3JWYWx1ZS0+Y3NzVGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZUltcG9ydC5jcHAKaW5kZXggY2UxN2ZiNGMyODliODk4MzA1ZmU2ZWIxNjAyZGYyYTIx
MGJjYmJjOC4uNTIxNzM1ODkzOTY0ZmQ4N2RjZDhmNDlmMjMwZjRjMTc3OWIxNmRkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IFN0eWxlUnVsZUltcG9ydDo6cmVxdWVzdFN0eWxlU2hlZXQoKQogCiAgICAgLy8gRklYTUU6IFNr
aXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgd2hlbiBzdHlsZXNoZWV0IGlzIGluIGEg
dXNlciBhZ2VudCBzaGFkb3cgdHJlZS4KICAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2NjM+LgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KGFic1VSTCwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKSwgV1RGOjpudWxsb3B0LCBTdHJpbmcobV9wYXJlbnRTdHlsZVNoZWV0LT5jaGFy
c2V0KCkpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChhYnNVUkwsIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6bnVs
bG9wdCwgU3RyaW5nKG1fcGFyZW50U3R5bGVTaGVldC0+Y2hhcnNldCgpKSk7CiAgICAgcmVxdWVz
dC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAg
ICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVu
dChtX3N0eWxlU2hlZXRDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuY3BwCmluZGV4IGZiOTAxYmExY2NjYTFmYmUzYjM1ZmYwOTliMWQ3
NTU4MWI1ODU3NzEuLmNkYjVmNTAzNDY2ZWVjYTk2YWYwMzg2MTdmZWZkN2YxZmJlZTI0YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5jcHAK
QEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvcklu
dE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgICAgICBjdXJy
ZW50Kys7CiAgICAgfQogICAgIGlmIChjdXJyZW50ID09IGVuZCB8fCAhaXNBU0NJSURpZ2l0KCpj
dXJyZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpj
dXJyZW50KSkgewogICAgICAgICBkb3VibGUgbmV3VmFsdWUgPSBsb2NhbFZhbHVlICogMTAgKyAq
Y3VycmVudCsrIC0gJzAnOwogICAgICAgICBpZiAobmV3VmFsdWUgPj0gMjU1KSB7CkBAIC0yNzcs
MTAgKzI3NywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVy
Y2VudGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgIH0KIAogICAgIGlmIChj
dXJyZW50ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVIgJiYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCpjdXJyZW50ID09ICcuJykgewogICAgICAgICAvLyBXZSBhbHJlYWR5IHBhcnNlZCB0aGUg
aW50ZWdyYWwgcGFydCwgdHJ5IHRvIHBhcnNlCkBAIC0yODgsMTUgKzI4OCwxNSBAQCBzdGF0aWMg
T3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjb25zdCBDaGFyYWN0
ZXJUeXBlKiYgc3RyaW5nLAogICAgICAgICBkb3VibGUgcGVyY2VudGFnZSA9IDA7CiAgICAgICAg
IGludCBudW1DaGFyYWN0ZXJzUGFyc2VkID0gcGFyc2VEb3VibGUoY3VycmVudCwgZW5kLCAnJScs
IHBlcmNlbnRhZ2UpOwogICAgICAgICBpZiAoIW51bUNoYXJhY3RlcnNQYXJzZWQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgY3VycmVudCArPSBudW1DaGFyYWN0ZXJzUGFyc2VkOwogICAgICAgICBpZiAo
KmN1cnJlbnQgIT0gJyUnKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGxvY2FsVmFsdWUgKz0gcGVyY2Vu
dGFnZTsKICAgICB9CiAKICAgICBpZiAoZXhwZWN0ID09IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VO
VEFHRSAmJiAqY3VycmVudCAhPSAnJScpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1cnJlbnQgPT0gJyUnKSB7
CiAgICAgICAgIGV4cGVjdCA9IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKQEAgLTMxMSw3
ICszMTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDhfdD4gcGFyc2VDb2xvckludE9yUGVyY2Vu
dGFnZShjb25zdCBDaGFyYWN0ZXJUeXBlKiYgc3RyaW5nLAogICAgIHdoaWxlIChjdXJyZW50ICE9
IGVuZCAmJiBpc0hUTUxTcGFjZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCiAgICAgICAgIGN1
cnJlbnQrKzsKICAgICBpZiAoY3VycmVudCA9PSBlbmQgfHwgKmN1cnJlbnQrKyAhPSB0ZXJtaW5h
dG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHN0cmluZyA9IGN1cnJlbnQ7CiAKICAgICAvLyBDbGFtcCBuZWdhdGl2ZSB2
YWx1ZXMgYXQgemVyby4KQEAgLTM0OCwxNyArMzQ4LDE3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8dWludDhfdD4gcGFyc2VBbHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcs
IGNvCiAKICAgICBpbnQgbGVuZ3RoID0gZW5kIC0gc3RyaW5nOwogICAgIGlmIChsZW5ndGggPCAy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKHN0cmluZ1tsZW5ndGggLSAxXSAhPSB0ZXJtaW5hdG9yIHx8ICFpc0FT
Q0lJRGlnaXQoc3RyaW5nW2xlbmd0aCAtIDJdKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChzdHJpbmdbMF0gIT0g
JzAnICYmIHN0cmluZ1swXSAhPSAnMScgJiYgc3RyaW5nWzBdICE9ICcuJykgewogICAgICAgICBp
ZiAoY2hlY2tGb3JWYWxpZERvdWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvcikpIHsKICAgICAg
ICAgICAgIHN0cmluZyA9IGVuZDsKICAgICAgICAgICAgIHJldHVybiBuZWdhdGl2ZSA/IDAgOiAy
NTU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAobGVuZ3RoID09IDIgJiYgc3RyaW5n
WzBdICE9ICcuJykgewpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
dWludDhfdD4gcGFyc2VBbHBoYVZhbHVlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsIGNv
CiAKICAgICBkb3VibGUgYWxwaGEgPSAwOwogICAgIGlmICghcGFyc2VEb3VibGUoc3RyaW5nLCBl
bmQsIHRlcm1pbmF0b3IsIGFscGhhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0cmluZyA9IGVuZDsKICAgICByZXR1
cm4gbmVnYXRpdmUgPyAwIDogY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PihhbHBoYSk7CkBA
IC00MzMsMTggKzQzMywxOCBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlz
aFBhcnNpbmdIZXhDb2xvcih1aW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgbAogICAgIGNhc2UgODoK
ICAgICAgICAgcmV0dXJuIGFzU1JHQkEoUGFja2VkQ29sb3I6OlJHQkEgeyB2YWx1ZSB9KTsKICAg
ICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1JH
QkE8dWludDhfdD4+IHBhcnNlSGV4Q29sb3JJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXBlKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgaWYgKGxlbmd0aCAhPSAzICYmIGxl
bmd0aCAhPSA0ICYmIGxlbmd0aCAhPSA2ICYmIGxlbmd0aCAhPSA4KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVpbnQzMl90
IHZhbHVlID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgYXV0byBkaWdpdCA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmICghaXNBU0NJ
SUhleERpZ2l0KGRpZ2l0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA8PD0gNDsKICAgICAg
ICAgdmFsdWUgfD0gdG9BU0NJSUhleFZhbHVlKGRpZ2l0KTsKICAgICB9CkBAIC00NzEsMTggKzQ3
MSwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8
U1JHQkE8dWludDhfdD4+IHBhcnNlTnVtZXJpY0NvbAogICAgICAgICBhdXRvIGVuZCA9IGNoYXJh
Y3RlcnMgKyBsZW5ndGg7CiAgICAgICAgIGF1dG8gcmVkID0gcGFyc2VDb2xvckludE9yUGVyY2Vu
dGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhwZWN0KTsKICAgICAgICAgaWYgKCFyZWQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYXV0byBncmVlbiA9IHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3Vy
cmVudCwgZW5kLCAnLCcsIGV4cGVjdCk7CiAgICAgICAgIGlmICghZ3JlZW4pCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYXV0byBibHVlID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBl
bmQsICcsJywgZXhwZWN0KTsKICAgICAgICAgaWYgKCFibHVlKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGF1dG8gYWxwaGEgPSBwYXJzZUFscGhhVmFsdWUoY3VycmVudCwgZW5kLCAnKScpOwogICAgICAg
ICBpZiAoIWFscGhhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm4gU1JHQkE8dWludDhfdD4geyAqcmVkLCAqZ3JlZW4sICpi
bHVlLCAqYWxwaGEgfTsKICAgICB9CiAKQEAgLTQ5MiwxOSArNDkyLDE5IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFy
c2VOdW1lcmljQ29sCiAgICAgICAgIGF1dG8gZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKICAg
ICAgICAgYXV0byByZWQgPSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwg
JywnLCBleHBlY3QpOwogICAgICAgICBpZiAoIXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IGdyZWVuID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhw
ZWN0KTsKICAgICAgICAgaWYgKCFncmVlbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGJsdWUg
PSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJyknLCBleHBlY3QpOwog
ICAgICAgICBpZiAoIWJsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5k
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBTUkdCQTx1aW50OF90PiB7ICpyZWQsICpncmVl
biwgKmJsdWUgfTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFy
c2VOdW1lcmljQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQpCkBAIC01MzQsNyArNTM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4
X3Q+PiBmaW5pc2hQYXJzaW5nTmFtZWRDb2xvcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGwKICAg
ICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7CiAgICAgYXV0byBuYW1lZENvbG9yID0gZmluZENvbG9y
KGJ1ZmZlciwgbGVuZ3RoKTsKICAgICBpZiAoIW5hbWVkQ29sb3IpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGFz
U1JHQkEoUGFja2VkQ29sb3I6OkFSR0IgeyBuYW1lZENvbG9yLT5BUkdCVmFsdWUgfSk7CiB9CiAK
QEAgLTU0MiwxMSArNTQyLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VOYW1lZENvbG9yCiB7CiAgICAgY2hh
ciBidWZmZXJbNjRdOyAvLyBFYXNpbHkgYmlnIGVub3VnaCBmb3IgdGhlIGxvbmdlc3QgY29sb3Ig
bmFtZS4KICAgICBpZiAobGVuZ3RoID4gc2l6ZW9mKGJ1ZmZlcikgLSAxKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBhdXRvIGNoYXJhY3Rl
ciA9IGNoYXJhY3RlcnNbaV07CiAgICAgICAgIGlmICghY2hhcmFjdGVyIHx8ICFpc0FTQ0lJKGNo
YXJhY3RlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnVmZmVyW2ldID0gdG9BU0NJSUxvd2VyKHN0
YXRpY19jYXN0PGNoYXI+KGNoYXJhY3RlcikpOwogICAgIH0KICAgICByZXR1cm4gZmluaXNoUGFy
c2luZ05hbWVkQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXggZWMwYzFhNjgyMWI1NmJkYTk5ZDBhZWYxYWI2NGMz
MTJiNGFhODg5Mi4uNzI0ZjFiMzkxZDMyYjYzODc4NDhiN2I0ZTAxNzkyZjNmYmRmOGUyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCkBAIC04OCw3ICs4
OCw3IEBAIENTU1BhcnNlckltcGw6OkNTU1BhcnNlckltcGwoY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBzdHJpCiBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENT
U1BhcnNlckltcGw6OnBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRp
b24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wg
aW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewogICAgIENTU1Bh
cnNlckltcGwgcGFyc2VyKGNvbnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxlVHlwZSA9IGNv
bnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7Cisg
ICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVfb3IoU3R5
bGVSdWxlVHlwZTo6U3R5bGUpOwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRpb25WYWx1ZShw
YXJzZXIudG9rZW5pemVyKCktPnRva2VuUmFuZ2UoKSwgcHJvcGVydHlJRCwgaW1wb3J0YW50LCBy
dWxlVHlwZSk7CiAgICAgaWYgKHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3I7CkBAIC0yMDcsNyAr
MjA3LDcgQEAgdm9pZCBDU1NQYXJzZXJJbXBsOjpwYXJzZURlZmVycmVkS2V5ZnJhbWVMaXN0KENT
U1BhcnNlclRva2VuUmFuZ2UgdG9rZW5SYW5nZSwgQ1MKIGJvb2wgQ1NTUGFyc2VySW1wbDo6cGFy
c2VEZWNsYXJhdGlvbkxpc3QoTXV0YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIENTU1BhcnNlckltcGwgcGFyc2VyKGNvbnRleHQsIHN0cmluZyk7Ci0gICAgYXV0byBydWxl
VHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFsdWVPcihTdHlsZVJ1bGVUeXBlOjpT
dHlsZSk7CisgICAgYXV0byBydWxlVHlwZSA9IGNvbnRleHQuZW5jbG9zaW5nUnVsZVR5cGUudmFs
dWVfb3IoU3R5bGVSdWxlVHlwZTo6U3R5bGUpOwogICAgIHBhcnNlci5jb25zdW1lRGVjbGFyYXRp
b25MaXN0KHBhcnNlci50b2tlbml6ZXIoKS0+dG9rZW5SYW5nZSgpLCBydWxlVHlwZSk7CiAgICAg
aWYgKHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwCmluZGV4IDljY2RiNjE1N2Q4YTVjOWZlOTc1ZGVhYTcyYTY3ODBlMWRhNDY2MzUuLmZkNTEw
NjE5NzNlMjUwYzlmNWRkMTI2ZDgxYzhhNzgzMzM1YzdhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCkBAIC00NTMsOCArNDUzLDggQEAg
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURpc3BsYXkoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiAgICAgfQogCiAgICAgLy8gU2V0IGRlZmF1bHRzIHdoZW4gb25lIG9mIHRoZSB0
d28gdmFsdWVzIGFyZSB1bnNwZWNpZmllZAotICAgIENTU1ZhbHVlSUQgZGlzcGxheU91dHNpZGUg
PSBwYXJzZWREaXNwbGF5T3V0c2lkZS52YWx1ZU9yKENTU1ZhbHVlQmxvY2spOwotICAgIENTU1Zh
bHVlSUQgZGlzcGxheUluc2lkZSA9IHBhcnNlZERpc3BsYXlJbnNpZGUudmFsdWVPcihDU1NWYWx1
ZUZsb3cpOworICAgIENTU1ZhbHVlSUQgZGlzcGxheU91dHNpZGUgPSBwYXJzZWREaXNwbGF5T3V0
c2lkZS52YWx1ZV9vcihDU1NWYWx1ZUJsb2NrKTsKKyAgICBDU1NWYWx1ZUlEIGRpc3BsYXlJbnNp
ZGUgPSBwYXJzZWREaXNwbGF5SW5zaWRlLnZhbHVlX29yKENTU1ZhbHVlRmxvdyk7CiAKICAgICBh
dXRvIHNlbGVjdFNob3J0VmFsdWUgPSBbJl0oKSAtPiBDU1NWYWx1ZUlEIHsKICAgICAgICAgaWYg
KGRpc3BsYXlPdXRzaWRlID09IENTU1ZhbHVlQmxvY2spIHsKQEAgLTEyNTgsNyArMTI1OCw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb2x1bW5XaWR0aChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKICAgICAvLyBBbHdheXMgcGFyc2UgbGVuZ3RocyBpbiBzdHJpY3QgbW9k
ZSBoZXJlLCBzaW5jZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBp
bgogICAgIC8vIHRoZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gY29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1M
U3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7Ci0gICAgaWYgKCFjb2x1bW5X
aWR0aCB8fCBjb2x1bW5XaWR0aC0+aXNaZXJvKCkudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKCFj
b2x1bW5XaWR0aCB8fCBjb2x1bW5XaWR0aC0+aXNaZXJvKCkudmFsdWVfb3IoZmFsc2UpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBjb2x1bW5XaWR0aDsKQEAgLTIzOTMs
NyArMjM5Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVQZXJz
cGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwKICAgICAgICAgcmV0dXJuIGNvbnN1
bWVJZGVudChyYW5nZSk7CiAKICAgICBpZiAoYXV0byBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCkpIHsKLSAgICAgICAgaWYg
KCFwYXJzZWRWYWx1ZS0+aXNOZWdhdGl2ZSgpLnZhbHVlT3IoZmFsc2UpKQorICAgICAgICBpZiAo
IXBhcnNlZFZhbHVlLT5pc05lZ2F0aXZlKCkudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlZFZhbHVlOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5jcHAKaW5kZXggMTI4NjlkYWE0ZWVmZjU4YmE1NWY3YzZlZDIyN2ViNWNkNDk2N2ZkNC4uYmU4
MmZmZGYxZGIzYTdiZTIzYWVhMDQwYmJjYzlmMjdkMTFiNWFjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyT3JQZXJj
ZW50RGl2aWRlZEJ5MTAwUmF3KENTU1BhcnNlclRva2VuUmFuZwogICAgICAgICByZXR1cm4gKnBl
cmNlbnQgLyAxMDAuMDsKICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJh
bmdlLCB2YWx1ZVJhbmdlKSkKICAgICAgICAgcmV0dXJuICpudW1iZXI7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBGSVhNRTogY29u
c2lkZXIgcHVsbGluZyBpbiB0aGUgcGFyc2luZyBsb2dpYyBmcm9tIENTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwLgpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJbnRUeXBlPiBPcHRpb25hbDxJbnRUeXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoZG91Ymxl
IG1pbmltdW1WYWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAgIHJldHVybiBjbGFt
cFRvPEludFR5cGU+KHN0ZDo6cm91bmQoc3RkOjptYXgobV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVl
KCksIG1pbmltdW1WYWx1ZSkpKTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51bWJlclJhdygpCiAgICAgewogICAgICAgICBp
ZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1bGF0aW9u
Q2F0ZWdvcnk6Ok51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9y
YW5nZTsKICAgICAgICAgcmV0dXJuIG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIH0K
QEAgLTE1MywxMCArMTUzLDEwIEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxkb3VibGU+IGNvbnN1
bWVQZXJjZW50UmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYXV0byBjYXRlZ29yeSA9IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpOwogICAg
ICAgICBpZiAoY2F0ZWdvcnkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6UGVyY2VudCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0dXJuIG1f
Y2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJs
aWM6CiAgICAgT3B0aW9uYWw8QW5nbGVSYXc+IGNvbnN1bWVBbmdsZVJhdygpCiAgICAgewogICAg
ICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29yeSgpICE9IENhbGN1
bGF0aW9uQ2F0ZWdvcnk6OkFuZ2xlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fc291cmNlUmFuZ2Ug
PSBtX3JhbmdlOwogICAgICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBl
KCksIG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CkBAIC0xNzIsNyArMTcy
LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdygp
CiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlIHx8IG1fY2FsY1ZhbHVlLT5jYXRlZ29y
eSgpICE9IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBt
X3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0dXJuIHsgeyBtX2NhbGNWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpLCBtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSB9IH07CiAgICAgfQpA
QCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxMZW5ndGhPclBlcmNlbnRS
YXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2Nh
bGNWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN3aXRjaCAobV9jYWxjVmFsdWUtPmNhdGVn
b3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpMZW5ndGg6CkBAIC0x
OTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFu
Z2U7CiAgICAgICAgICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0g
fTsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0y
MDgsMjEgKzIwOCwyMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRUeXBlPiBPcHRpb25hbDxJbnRU
eXBlPiBjb25zdW1lSW50ZWdlclR5cGVSYXcoQ1NTUGFyc2VyVG9rZQogICAgIGNvbnN0IENTU1Bh
cnNlclRva2VuJiB0b2tlbiA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09
IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmICh0b2tlbi5udW1lcmljVmFsdWVUeXBlKCkgPT0g
TnVtYmVyVmFsdWVUeXBlIHx8IHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgbWluaW11bVZhbHVlKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBjbGFtcFRvPEludFR5cGU+KHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkpOwogICAgIH0KIAogICAgIGlmICh0
b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1Bh
cnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKTsKICAgICBpZiAoY29uc3Qg
Q1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewogICAgICAg
ICBpZiAoY2FsY3VsYXRpb24tPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVt
YmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVJbnRlZ2Vy
VHlwZVJhdzxJbnRUeXBlPihtaW5pbXVtVmFsdWUpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8aW50PiBj
b25zdW1lSW50ZWdlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgZG91YmxlIG1pbmlt
dW1WYWx1ZSkKQEAgLTI1NCwxMiArMjU0LDEyIEBAIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU51
bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgVmFsdWVSYW5nZSB2YWx1ZVJhCiAg
ICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwogICAgIGlmICh0
b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKICAgICAgICAgaWYgKHZhbHVlUmFuZ2UgPT0g
VmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgp
Lm51bWVyaWNWYWx1ZSgpOwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rp
b25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRp
b25DYXRlZ29yeTo6TnVtYmVyLCB2YWx1ZVJhbmdlKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5j
b25zdW1lTnVtYmVyUmF3KCk7CkBAIC0zMDMsNyArMzAzLDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBj
b25zdW1lRm9udFdlaWdodE51bWJlclJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UpOwogCiAgICAgaWYgKHRva2VuLnR5
cGUoKSAhPSBGdW5jdGlvblRva2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gIltGb3IgY2FsYygpXSwgdGhlIHVz
ZWQgdmFsdWUgcmVzdWx0aW5nIGZyb20gYW4gZXhwcmVzc2lvbiBtdXN0IGJlIGNsYW1wZWQgdG8g
dGhlIHJhbmdlIGFsbG93ZWQgaW4gdGhlIHRhcmdldCBjb250ZXh0LiIKICAgICBDYWxjUGFyc2Vy
IGNhbGNQYXJzZXIocmFuZ2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlciwgVmFsdWVSYW5n
ZTo6QWxsKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250
V2VpZ2h0TnVtYmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KCpyZXN1bHQsIHN0ZDo6bmV4dGFmdGVyKDAuLCAx
LikpLCBzdGQ6Om5leHRhZnRlcigxMDAwLiwgMC4pKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBjb25zdW1lRm9udFdlaWdodE51bWJlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
QEAgLTM0OSw3ICszNDksNyBAQCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5ndGhSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAgICBzd2l0
Y2ggKHRva2VuLnVuaXRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1FV
SVJLWV9FTVM6CiAgICAgICAgICAgICBpZiAoY3NzUGFyc2VyTW9kZSAhPSBVQVNoZWV0TW9kZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX0VNUzoKICAgICAgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1JF
TVM6CkBAIC0zNzAsMjMgKzM3MCwyMyBAQCBPcHRpb25hbDxMZW5ndGhSYXc+IGNvbnN1bWVMZW5n
dGhSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgYwogICAgICAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCh2YWx1ZVJhbmdlID09
IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlICYmIHRva2VuLm51bWVyaWNWYWx1ZSgpIDwgMCkgfHwg
c3RkOjppc2luZih0b2tlbi5udW1lcmljVmFsdWUoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIHsgeyB0b2tlbi51bml0VHlwZSgpLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLm51bWVyaWNWYWx1ZSgpIH0gfTsKICAgICB9CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbikgewogICAgICAgICBpZiAoIXNob3VsZEFjY2VwdFVuaXRsZXNzVmFsdWUodG9r
ZW4ubnVtZXJpY1ZhbHVlKCksIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzLCBVbml0bGVzc1plcm9R
dWlyazo6QWxsb3cpCiAgICAgICAgICAgICB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlOjpO
b25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGlmIChzdGQ6OmlzaW5mKHRva2VuLm51bWVyaWNWYWx1ZSgpKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICByZXR1cm4geyB7IENTU1VuaXRUeXBlOjpDU1NfUFgsIHJhbmdlLmNvbnN1bWVJbmNsdWRp
bmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkgfSB9OwogICAgIH0KIAogICAgIGlmICh0b2tl
bi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNl
cihyYW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICBy
ZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTGVuZ3RoUmF3KCk7CkBAIC00MTIsMTIgKzQxMiwxMiBA
QCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVQZXJjZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUgogICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
biA9IHJhbmdlLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tl
bikgewogICAgICAgICBpZiAoc3RkOjppc2luZih0b2tlbi5udW1lcmljVmFsdWUoKSkgfHwgKHZh
bHVlUmFuZ2UgPT0gVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVl
KCkgPCAwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmFuZ2UuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKTsKICAgICB9CiAKICAgICBpZiAodG9rZW4udHlw
ZSgpICE9IEZ1bmN0aW9uVG9rZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDYWxjUGFyc2VyIGNhbGNQYXJzZXIocmFu
Z2UsIENhbGN1bGF0aW9uQ2F0ZWdvcnk6OlBlcmNlbnQsIHZhbHVlUmFuZ2UpOwogICAgIHJldHVy
biBjYWxjUGFyc2VyLmNvbnN1bWVQZXJjZW50UmF3KCk7CkBAIC00NjYsMjMgKzQ2NiwyMyBAQCBP
cHRpb25hbDxMZW5ndGhPclBlcmNlbnRSYXc+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gRGltZW5zaW9u
VG9rZW4gfHwgdG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAgICAgIGlmIChhdXRv
IHJlc3VsdCA9IGNvbnN1bWVMZW5ndGhSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHZhbHVlUmFu
Z2UsIHVuaXRsZXNzKSkKICAgICAgICAgICAgIHJldHVybiB7ICpyZXN1bHQgfTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBQZXJjZW50YWdlVG9rZW4pIHsKICAgICAgICAgaWYg
KGF1dG8gcmVzdWx0ID0gY29uc3VtZVBlcmNlbnRSYXcocmFuZ2UsIHZhbHVlUmFuZ2UpKQogICAg
ICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICh0b2tlbi50
eXBlKCkgIT0gRnVuY3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihy
YW5nZSwgQ2FsY3VsYXRpb25DYXRlZ29yeTo6TGVuZ3RoLCB2YWx1ZVJhbmdlKTsKICAgICBpZiAo
Y29uc3QgQ1NTQ2FsY1ZhbHVlKiBjYWxjdWxhdGlvbiA9IGNhbGNQYXJzZXIudmFsdWUoKSkgewog
ICAgICAgICBpZiAoY2FuQ29uc3VtZUNhbGNWYWx1ZShjYWxjdWxhdGlvbi0+Y2F0ZWdvcnkoKSwg
Y3NzUGFyc2VyTW9kZSkpCiAgICAgICAgICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lTGVu
Z3RoT3JQZXJjZW50UmF3KCk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25z
dW1lTGVuZ3RoT3JQZXJjZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2UgdmFsdWVSYW5nZSwgVW5pdGxlc3NRdWlyayB1
bml0bGVzcykKQEAgLTUxOSw3ICs1MTksNyBAQCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFu
Z2xlUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAg
ICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKICAgICAgICAgICAgIHJldHVybiB7IHsg
dW5pdFR5cGUsIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVl
KCkgfSB9OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTUyNyw3ICs1MjcsNyBAQCBPcHRpb25hbDxBbmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAgICAgICByZXR1
cm4geyB7IENTU1VuaXRUeXBlOjpDU1NfREVHLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLm51bWVyaWNWYWx1ZSgpIH0gfTsKIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVu
Y3Rpb25Ub2tlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3Vs
YXRpb25DYXRlZ29yeTo6QW5nbGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgcmV0dXJuIGNhbGNQ
YXJzZXIuY29uc3VtZUFuZ2xlUmF3KCk7CkBAIC02MzcsNyArNjM3LDcgQEAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBjb25zdW1lUmVzb2x1dGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQWxsb3dYUmUKIE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5cGUoKSAhPSBJ
ZGVudFRva2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCk7CiB9CiAKQEAgLTY1Niw3ICs2NTYsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVJZGVudFdvcmtlclNhZmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
UwogT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmFuZ2VSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1ZhbHVlSUQgbG93ZXIsIENTU1ZhbHVlSUQgdXBwZXIpCiB7CiAg
ICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpIDwgbG93ZXIgfHwgcmFuZ2UucGVlaygpLmlkKCkgPiB1
cHBlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gY29uc3VtZUlkZW50UmF3KHJhbmdlKTsKIH0KIApAQCAtNzQ0
LDcgKzc0NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVPcHRpb25hbEFscGhh
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIGlmIChhdXRvIGFscGhhUGFyYW1ldGVy
ID0gY29uc3VtZU51bWJlck9yUGVyY2VudERpdmlkZWRCeTEwMFJhdyhyYW5nZSkpCiAgICAgICAg
IHJldHVybiBjbGFtcFRvKCphbHBoYVBhcmFtZXRlciwgMC4wLCAxLjApOwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxD
U1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJs
ZSwgQ1NTVmFsdWVJRD4+IGNvbnN1bWVPcHRpb25hbEFscGhhT3JJZGVudChDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKQEAgLTc1NSw3ICs3NTUsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RAogICAgIGlmIChhdXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+
KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRpb25hbDxk
b3VibGU+IGNvbnN1bWVIdWUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC03NzQsNyArNzc0LDcgQEAgdGVtcGxhdGU8Q1NTVmFs
dWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENT
U1ZhbHVlSUQKICAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRl
bnRzLi4uPihyYW5nZSkpCiAgICAgICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgZG91
YmxlIG5vcm1hbGl6ZUh1ZShkb3VibGUgaHVlKQpAQCAtNzkwLDcgKzc5MCw3IEBAIHRlbXBsYXRl
PENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91
YmxlLCBDU1NWYWx1ZUlECiAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXc8YWxs
b3dlZElkZW50cy4uLj4ocmFuZ2UpKQogICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFu
dDxkb3VibGUsIENTU1ZhbHVlSUQ+PiBjb25zdW1lUGVyY2VudE9ySWRlbnQoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCkBAIC04MDEsNyArODAxLDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4u
LiBhbGxvd2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVl
SUQKICAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4u
PihyYW5nZSkpCiAgICAgICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1
ZUlEIEMxLCBDU1NWYWx1ZUlEIEMyLCBDU1NWYWx1ZUlEIEMzLCBDU1NWYWx1ZUlEIEFscGhhQ2hh
bm5lbCwgdHlwZW5hbWUgQ29sb3JUeXBlPiBzdGF0aWMgYXV0byBleHRyYWN0Q2hhbm5lbFZhbHVl
KENTU1ZhbHVlSUQgY2hhbm5lbCwgY29uc3QgQ29sb3JUeXBlJiBvcmlnaW5Db2xvcikgLT4gdHlw
ZW5hbWUgQ29sb3JUeXBlOjpDb21wb25lbnRUeXBlCkBAIC04ODcsOCArODg3LDggQEAgdGVtcGxh
dGU8Q1NTVmFsdWVJRCBDPiBzdGF0aWMgT3B0aW9uYWw8UmVsYXRpdmVSR0JDb21wb25lbnQ+IGNv
bnN1bWVSZWxhdGl2ZVJHQkMKICAgICAgICAgaWYgKGF1dG8gcGVyY2VudCA9IGNvbnN1bWVQZXJj
ZW50UmF3KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsg
KnBlcmNlbnQsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfTsKICAgICAgICAgaWYgKGF1
dG8gY2hhbm5lbCA9IGNvbnN1bWVJZGVudFJhdzxDPihhcmdzKSkKLSAgICAgICAgICAgIHJldHVy
biBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpjaGFubmVsLCBXVEY6Om51bGxvcHQgfTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNv
bXBvbmVudCB7ICpjaGFubmVsLCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBzd2l0Y2ggKCpjb21wb25lbnRUeXBlKSB7CkBAIC04OTcs
MTQgKzg5NywxNCBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEM+IHN0YXRpYyBPcHRpb25hbDxSZWxh
dGl2ZVJHQkNvbXBvbmVudD4gY29uc3VtZVJlbGF0aXZlUkdCQwogICAgICAgICAgICAgcmV0dXJu
IFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKm51bWJlciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVy
IH07CiAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25zdW1lSWRlbnRSYXc8Qz4oYXJncykp
CiAgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqY2hhbm5lbCwgUkdC
Q29tcG9uZW50VHlwZTo6TnVtYmVyIH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGNhc2UgUkdCQ29tcG9uZW50
VHlwZTo6UGVyY2VudGFnZTogewogICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBl
cmNlbnRSYXcoYXJncykpCiAgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQg
eyAqcGVyY2VudCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OwogICAgICAgICBpZiAo
YXV0byBjaGFubmVsID0gY29uc3VtZUlkZW50UmF3PEM+KGFyZ3MpKQogICAgICAgICAgICAgcmV0
dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKmNoYW5uZWwsIFJHQkNvbXBvbmVudFR5cGU6OlBl
cmNlbnRhZ2UgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgfQogCkBAIC05NTMsNyArOTUzLDcgQEAgc3RhdGlj
IENvbG9yIHBhcnNlUmVsYXRpdmVSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IENTU1BhcnMKICAgICAvLyBzdXBwb3J0IGNhbGN1bGF0aW9ucyBvbiB0aGUgb3Jp
Z2luJ3MgY29tcG9uZW50cy4KICAgICBhdXRvIG9yaWdpbkNvbG9yQXNTUkdCID0gb3JpZ2luQ29s
b3IudG9TUkdCQUxvc3N5PHVpbnQ4X3Q+KCk7CiAKLSAgICBhdXRvIHJlc29sdmVkQ29tcG9uZW50
VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVPcihSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdl
KTsKKyAgICBhdXRvIHJlc29sdmVkQ29tcG9uZW50VHlwZSA9IGNvbXBvbmVudFR5cGUudmFsdWVf
b3IoUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSk7CiAgICAgYXV0byBjaGFubmVsUmVzb2x2
ZXIgPSBbcmVzb2x2ZWRDb21wb25lbnRUeXBlXShhdXRvIHZhbHVlKSB7CiAgICAgICAgIHJldHVy
biBjbGFtcFJHQkNvbXBvbmVudCh2YWx1ZSwgcmVzb2x2ZWRDb21wb25lbnRUeXBlKTsKICAgICB9
OwpAQCAtOTkwLDcgKzk5MCw3IEBAIHRlbXBsYXRlPFJHQkZ1bmN0aW9uTW9kZSBNb2RlPiBzdGF0
aWMgQ29sb3IgcGFyc2VSR0JQYXJhbWV0ZXJzKENTU1BhcnNlclRva2VuUmFuCiAgICAgICAgICAg
ICByZXR1cm4geyB7ICpudW1iZXIsIFJHQkNvbXBvbmVudFR5cGU6Ok51bWJlciB9IH07CiAgICAg
ICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKICAgICAgICAg
ICAgIHJldHVybiB7IHsgKnBlcmNlbnQsIFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UgfSB9
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH07CiAKICAgICBhdXRvIGNvbnN1bWVDb21wb25lbnQgPSBbXShhdXRvJiBhcmdz
LCBhdXRvIGNvbXBvbmVudFR5cGUpIHsKQEAgLTE2MzMsNyArMTYzMyw3IEBAIHN0YXRpYyBPcHRp
b25hbDxDb2xvck1peENvbG9yU3BhY2U+IGNvbnN1bWVDb2xvck1peENvbG9yU3BhY2VBbmRDb21t
YShDU1NQYXJzZXJUCiAgICAgYXV0byBjb25zdW1lSWRlbnRBbmRDb21tYSA9IFtdKENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIENvbG9yTWl4Q29sb3JTcGFjZSBjb2xvclNwYWNlKSAtPiBPcHRp
b25hbDxDb2xvck1peENvbG9yU3BhY2U+IHsKICAgICAgICAgY29uc3VtZUlkZW50UmF3KGFyZ3Mp
OwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGNvbG9yU3BhY2U7CiAgICAgfTsKIApAQCAtMTY1MSw3
ICsxNjUxLDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbG9yTWl4Q29sb3JTcGFjZT4gY29uc3VtZUNv
bG9yTWl4Q29sb3JTcGFjZUFuZENvbW1hKENTU1BhcnNlclQKICAgICBjYXNlIENTU1ZhbHVlU1JH
QjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudEFuZENvbW1hKGFyZ3MsIENvbG9yTWl4Q29s
b3JTcGFjZTo6U3JnYik7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTE2NjksNyAr
MTY2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvck1peENvbXBvbmVudD4gY29uc3VtZUNvbG9y
TWl4Q29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmCiAKICAgICByZXN1bHQuY29sb3IgPSBj
b25zdW1lT3JpZ2luQ29sb3IoYXJncywgY29udGV4dCk7CiAgICAgaWYgKCFyZXN1bHQuY29sb3Iu
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFyZXN1bHQucGVyY2VudGFnZSkgewogICAgICAgICBp
ZiAoYXV0byBwZXJjZW50YWdlID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCkBAIC0xODQ5LDE1
ICsxODQ5LDE1IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VIZXhDb2xv
cihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYm9vbCBhCiAgICAgICAgIHZpZXcgPSB0b2tl
bi52YWx1ZSgpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIWFjY2VwdFF1aXJreUNvbG9ycykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAodG9rZW4udHlwZSgpID09IElkZW50VG9rZW4pCiAgICAg
ICAgICAgICBzdHJpbmcgPSB0b2tlbi52YWx1ZSgpLnRvU3RyaW5nKCk7IC8vIGUuZy4gRkYwMDAw
CiAgICAgICAgIGVsc2UgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiB8fCB0b2tlbi50
eXBlKCkgPT0gRGltZW5zaW9uVG9rZW4pIHsKICAgICAgICAgICAgIGlmICh0b2tlbi5udW1lcmlj
VmFsdWVUeXBlKCkgIT0gSW50ZWdlclZhbHVlVHlwZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBhdXRvIG51bWVyaWNWYWx1ZSA9IHRva2VuLm51bWVyaWNWYWx1ZSgpOwogICAgICAg
ICAgICAgaWYgKCEobnVtZXJpY1ZhbHVlID49IDAgJiYgbnVtZXJpY1ZhbHVlIDwgMTAwMDAwMCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBpbnRlZ2VyVmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQ+KHRva2VuLm51bWVyaWNWYWx1ZSgpKTsKICAgICAgICAgICAgIGlmICh0b2tl
bi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pCiAgICAgICAgICAgICAgICAgc3RyaW5nID0gU3RyaW5n
OjpudW1iZXIoaW50ZWdlclZhbHVlKTsgLy8gZS5nLiAxMTIyMzMKQEAgLTE4NjcsMTIgKzE4Njcs
MTIgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBib29sIGEKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBt
YWtlU3RyaW5nKCYiMDAwMDAwIltzdHJpbmcubGVuZ3RoKCldLCBzdHJpbmcpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoKCkgIT0gMyAmJiBzdHJpbmcubGVuZ3RoKCkgIT0g
NikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB2aWV3ID0gc3RyaW5nOwogICAgIH0KICAgICBhdXRvIHJl
c3VsdCA9IENTU1BhcnNlcjo6cGFyc2VIZXhDb2xvcih2aWV3KTsKICAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIHJldHVybiAq
cmVzdWx0OwogfQpAQCAtMTk5Niw3ICsxOTk2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9u
Q29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbVR3b1ZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSYgdmEK
ICAgICBib29sIG11c3RPcmRlckFzWFkgPSBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5
KHZhbHVlMSkgfHwgaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUyKSB8fCAhdmFs
dWUxLmlzVmFsdWVJRCgpIHx8ICF2YWx1ZTIuaXNWYWx1ZUlEKCk7CiAgICAgYm9vbCBtdXN0T3Jk
ZXJBc1lYID0gaXNWZXJ0aWNhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc0hvcml6
b250YWxQb3NpdGlvbktleXdvcmRPbmx5KHZhbHVlMik7CiAgICAgaWYgKG11c3RPcmRlckFzWFkg
JiYgbXVzdE9yZGVyQXNZWCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobXVzdE9yZGVyQXNZWCkKICAgICAgICAgcmV0
dXJuIFBvc2l0aW9uQ29vcmRpbmF0ZXMgeyB2YWx1ZTIsIHZhbHVlMSB9OwogICAgIHJldHVybiBQ
b3NpdGlvbkNvb3JkaW5hdGVzIHsgdmFsdWUxLCB2YWx1ZTIgfTsKQEAgLTIwMjksMTIgKzIwMjks
MTIgQEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3Np
dGlvbkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVz
W2ldOyBpKyspIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZh
bHVlc1tpXTsKICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwog
ICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAgIGlmIChjZW50
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgY2VudGVyID0gY3VycmVudFZhbHVl
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTIwNDcsMTIgKzIwNDcsMTIg
QEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlv
bkZyb21UaHJlZVZhbHVlcyhjb25zdCBzdGQKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVM
ZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0g
Q1NTVmFsdWVCb3R0b20pOwogICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAg
LTIwNjAsNyArMjA2MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBi
YWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1ZXMoY29uc3Qgc3RkCiAgICAgaWYgKGNlbnRl
cikgewogICAgICAgICBBU1NFUlQocmVzdWx0WCB8fCByZXN1bHRZKTsKICAgICAgICAgaWYgKHJl
c3VsdFggJiYgcmVzdWx0WSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXJlc3VsdFgpCiAgICAg
ICAgICAgICByZXN1bHRYID0gY2VudGVyOwogICAgICAgICBlbHNlCkBAIC0yMDg5LDExICsyMDg5
LDExIEBAIHN0YXRpYyBPcHRpb25hbDxQb3NpdGlvbkNvb3JkaW5hdGVzPiBwb3NpdGlvbkZyb21G
b3VyVmFsdWVzKGNvbnN0IHN0ZDo6YXJyYXk8Q1NTCiAgICAgZm9yIChpbnQgaSA9IDA7IHZhbHVl
c1tpXTsgaSsrKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSB2
YWx1ZXNbaV07CiAgICAgICAgIGlmICghY3VycmVudFZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPnZhbHVlSUQoKTsK
ICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQ2VudGVyKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXN1bHQ7CiAgICAgICAgIGlmICh2YWx1ZXNbaSAr
IDFdICYmICF2YWx1ZXNbaSArIDFdLT5pc1ZhbHVlSUQoKSkKQEAgLTIxMDMsMTIgKzIxMDMsMTIg
QEAgc3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJW
YWx1ZXMoY29uc3Qgc3RkOjphcnJheTxDU1MKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVM
ZWZ0IHx8IGlkID09IENTU1ZhbHVlUmlnaHQpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRYKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJlc3VsdFggPSByZXN1bHQ7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaWQgPT0gQ1NTVmFsdWVUb3AgfHwgaWQgPT0g
Q1NTVmFsdWVCb3R0b20pOwogICAgICAgICAgICAgaWYgKHJlc3VsdFkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgcmVzdWx0WSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAg
LTIxMjMsNyArMjEyMyw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVQ
b3NpdGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhCiB7CiAgICAgYXV0byB2
YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVu
aXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdmFsdWUyID0gY29uc3Vt
ZVBvc2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAg
aWYgKCF2YWx1ZTIpCkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBPcHRpb25hbDxQb3NpdGlvbkNvb3Jk
aW5hdGVzPiBjb25zdW1lUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YQogICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9tRm91clZhbHVlcyh2YWx1ZXMpOwogICAgIAog
ICAgIGlmIChwb3NpdGlvblN5bnRheCAhPSBQb3NpdGlvblN5bnRheDo6QmFja2dyb3VuZFBvc2l0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Gcm9tVGhyZWVWYWx1
ZXModmFsdWVzKTsKIH0KQEAgLTIxNjMsNyArMjE2Myw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29v
cmRpbmF0ZXM+IGNvbnN1bWVPbmVPclR3b1ZhbHVlZFBvc2l0aW9uQ29vcmRpbmF0ZXMoQ1NTUGFy
c2VyCiB7CiAgICAgYXV0byB2YWx1ZTEgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQocmFuZ2Us
IGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRv
IHZhbHVlMiA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
dW5pdGxlc3MpOwogICAgIGlmICghdmFsdWUyKQogICAgICAgICByZXR1cm4gcG9zaXRpb25Gcm9t
T25lVmFsdWUoKnZhbHVlMSk7CkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBPcHRpb25hbDxGb250V2Vp
Z2h0UmF3PiBjb25zdW1lRm9udFdlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkK
ICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwogICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1
bWVGb250V2VpZ2h0TnVtYmVyUmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogT3B0aW9uYWw8Q1NTVmFsdWVJRD4gY29uc3VtZUZvbnRTdHJldGNoS2V5d29yZFZhbHVlUmF3
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzAwMywxMSArMzAwMywxMSBAQCBPcHRp
b25hbDxGb250U3R5bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UsIENTU1BhcnNlcgogewogICAgIGF1dG8gcmVzdWx0ID0gY29uc3VtZUZvbnRTdHls
ZUtleXdvcmRWYWx1ZVJhdyhyYW5nZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGlkZW50ID0gKnJlc3VsdDsKICAgICBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgaWRl
bnQgPT0gQ1NTVmFsdWVJdGFsaWMpCi0gICAgICAgIHJldHVybiB7IHsgaWRlbnQsIFdURjo6bnVs
bG9wdCB9IH07CisgICAgICAgIHJldHVybiB7IHsgaWRlbnQsIHN0ZDo6bnVsbG9wdCB9IH07CiAg
ICAgQVNTRVJUKGlkZW50ID09IENTU1ZhbHVlT2JsaXF1ZSk7CiAjaWYgRU5BQkxFKFZBUklBVElP
Tl9GT05UUykKICAgICBpZiAoIXJhbmdlLmF0RW5kKCkpIHsKQEAgLTMwMTUsMTMgKzMwMTUsMTMg
QEAgT3B0aW9uYWw8Rm9udFN0eWxlUmF3PiBjb25zdW1lRm9udFN0eWxlUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICAgICAgaWYgKGF1dG8gYW5nbGUgPSBjb25z
dW1lQW5nbGVSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwg
VW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KSkgewogICAgICAgICAgICAgaWYgKGlzRm9udFN0eWxl
QW5nbGVJblJhbmdlKENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyhhbmdsZS0+dHlw
ZSwgYW5nbGUtPnZhbHVlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBDU1NWYWx1ZU9i
bGlxdWUsIFdURk1vdmUoYW5nbGUpIH0gfTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY3NzUGFyc2VyTW9kZSk7CiAjZW5kaWYKLSAgICByZXR1
cm4geyB7IENTU1ZhbHVlT2JsaXF1ZSwgV1RGOjpudWxsb3B0IH0gfTsKKyAgICByZXR1cm4geyB7
IENTU1ZhbHVlT2JsaXF1ZSwgc3RkOjpudWxsb3B0IH0gfTsKIH0KIAogU3RyaW5nIGNvbmNhdGVu
YXRlRmFtaWx5TmFtZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTMwNjQsNyArMzA2
NCw3IEBAIE9wdGlvbmFsPFdURjo6VmVjdG9yPEZvbnRGYW1pbHlSYXc+PiBjb25zdW1lRm9udEZh
bWlseVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByCiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgYXV0byBmYW1pbHlOYW1lID0gY29uc3VtZUZhbWlseU5hbWVSYXcocmFuZ2UpOwogICAgICAg
ICAgICAgaWYgKGZhbWlseU5hbWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgbGlzdC5hcHBlbmQoeyBmYW1pbHlOYW1lIH0pOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwpAQCAtMzA3NiwxMyAr
MzA3NiwxMyBAQCBPcHRpb25hbDxGb250U2l6ZVJhdz4gY29uc3VtZUZvbnRTaXplUmF3KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgIGlmIChyYW5nZS5wZWVrKCku
aWQoKSA+PSBDU1NWYWx1ZVh4U21hbGwgJiYgcmFuZ2UucGVlaygpLmlkKCkgPD0gQ1NTVmFsdWVM
YXJnZXIpIHsKICAgICAgICAgaWYgKGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnRSYXcocmFuZ2Up
KQogICAgICAgICAgICAgcmV0dXJuIHsgKmlkZW50IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1
dG8gcmVzdWx0ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUsIHVuaXRsZXNzKSkKICAgICAgICAgcmV0dXJuIHsg
KnJlc3VsdCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBPcHRpb25hbDxMaW5lSGVpZ2h0UmF3PiBjb25zdW1lTGluZUhlaWdodFJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
KQpAQCAtMzA5MCw3ICszMDkwLDcgQEAgT3B0aW9uYWw8TGluZUhlaWdodFJhdz4gY29uc3VtZUxp
bmVIZWlnaHRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgaWYgKGF1dG8g
aWRlbnQgPSBjb25zdW1lSWRlbnRSYXcocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIHsgKmlk
ZW50IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbnVtYmVyID0gY29uc3VtZU51bWJlclJh
dyhyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpKQpAQCAtMzA5OSw3ICszMDk5LDcgQEAg
T3B0aW9uYWw8TGluZUhlaWdodFJhdz4gY29uc3VtZUxpbmVIZWlnaHRSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICBpZiAoYXV0byBsZW5ndGhPclBlcmNlbnQgPSBj
b25zdW1lTGVuZ3RoT3JQZXJjZW50UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdl
OjpOb25OZWdhdGl2ZSkpCiAgICAgICAgIHJldHVybiB7ICpsZW5ndGhPclBlcmNlbnQgfTsKIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKQEAgLTMxMDksNyArMzEwOSw3IEBAIE9w
dGlvbmFsPEZvbnRSYXc+IGNvbnN1bWVGb250UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhCiAgICAgd2hpbGUgKCFyYW5nZUNvcHkuYXRFbmQoKSkgewog
ICAgICAgICBDU1NWYWx1ZUlEIGlkID0gcmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNw
YWNlKCkuaWQoKTsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlSW5oZXJpdCB8fCBpZCA9PSBD
U1NWYWx1ZUluaXRpYWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBGb250UmF3IHJlc3VsdDsK
QEAgLTMxMzgsMzAgKzMxMzgsMzAgQEAgT3B0aW9uYWw8Rm9udFJhdz4gY29uc3VtZUZvbnRSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGEKICAgICB9CiAK
ICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIE5vdyBhIGZvbnQgc2l6ZSBfbXVz
dF8gY29tZS4KICAgICBpZiAoYXV0byBzaXplID0gY29uc3VtZUZvbnRTaXplUmF3KHJhbmdlLCBj
c3NQYXJzZXJNb2RlKSkKICAgICAgICAgcmVzdWx0LnNpemUgPSAqc2l6ZTsKICAgICBlbHNlCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAocmFuZ2UuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChjb25zdW1lU2xhc2hJbmNs
dWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSkgewogICAgICAgICBpZiAoIShyZXN1bHQubGluZUhlaWdo
dCA9IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlKSkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICAvLyBGb250IGZhbWlseSBtdXN0IGNvbWUgbm93LgogICAgIGlmIChh
dXRvIGZhbWlseSA9IGNvbnN1bWVGb250RmFtaWx5UmF3KHJhbmdlKSkKICAgICAgICAgcmVzdWx0
LmZhbWlseSA9ICpmYW1pbHk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFyYW5nZS5hdEVuZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oCmluZGV4IDlhYmEzZGM5MDk3ZWQy
NWFlNTU1OGMxODZjNTMyMDhmZTAwMmNiOTMuLjE1ZWRlNGI1NzZiYThmNWRkZjFjNGIwZWVhYTRm
NTQ4MmJlZjk2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHRlbXBsYXRlPENTU1Zh
bHVlSUQgaGVhZCwgQ1NTVmFsdWVJRC4uLiB0YWlsPiBpbmxpbmUgYm9vbCBpZGVudE1hdGNoZXMo
Q1NTVmFsdWVJCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIG5hbWVzPiBPcHRpb25hbDxDU1NWYWx1
ZUlEPiBjb25zdW1lSWRlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7CiAgICAg
aWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbiB8fCAhaWRlbnRNYXRjaGVzPG5h
bWVzLi4uPihyYW5nZS5wZWVrKCkuaWQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJhbmdlLmNvbnN1bWVJ
bmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NTZWxlY3RvclBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1NlbGVjdG9yUGFyc2VyLmNwcAppbmRleCAzMGRlN2JjMmRhZDE5ODE5ZjExYTZk
YjgxMzNmMGM4ZDZiMDQyNWJhLi42ZjViMjVlNDNkYjg3OGIxOGYxNjA2Y2RiYjcxMDY0NzYwZGZk
MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1NlbGVjdG9yUGFyc2Vy
LmNwcApAQCAtODg2LDcgKzg4Niw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVBTlBsdXNCKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBzdGQ6OnBhaXI8aW50LCBpbnQ+JiByZXN1CiAKICAgICBp
ZiAoblN0cmluZy5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgYXV0byBwYXJzZWROdW1iZXIgPSBw
YXJzZUludGVnZXI8aW50PihTdHJpbmdWaWV3IHsgblN0cmluZyB9LnN1YnN0cmluZygxKSk7Ci0g
ICAgICAgIHJlc3VsdC5zZWNvbmQgPSBwYXJzZWROdW1iZXIudmFsdWVPcigwKTsKKyAgICAgICAg
cmVzdWx0LnNlY29uZCA9IHBhcnNlZE51bWJlci52YWx1ZV9vcigwKTsKICAgICAgICAgcmV0dXJu
IHBhcnNlZE51bWJlci5oYXNWYWx1ZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggMGEyM2Q0Yzg5NzdmZWQ1MjM1ZDVk
YmFiZDIwNzc3YTZhMWVkZmEwYy4uODc2Yzk5YmQyZTgwNzk4Mzc4Zjk1ODczMWQ0MjM0YTI0OGY2
YjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIu
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpjb21taXRNZWRp
YVF1ZXJ5KCkKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBi
dXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBiZWNhdXNlIG9mIHRoZQog
ICAgIC8vIG9sZCBwYXJzZXIuCiAgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKLSAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVl
cnkgeyBtX21lZGlhUXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRp
YVR5cGUoKS52YWx1ZU9yKGRlZmF1bHRNZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURh
dGEuZXhwcmVzc2lvbnMoKSkgfTsKKyAgICBNZWRpYVF1ZXJ5IG1lZGlhUXVlcnkgeyBtX21lZGlh
UXVlcnlEYXRhLnJlc3RyaWN0b3IoKSwgbV9tZWRpYVF1ZXJ5RGF0YS5tZWRpYVR5cGUoKS52YWx1
ZV9vcihkZWZhdWx0TWVkaWFUeXBlKSwgV1RGTW92ZShtX21lZGlhUXVlcnlEYXRhLmV4cHJlc3Np
b25zKCkpIH07CiAgICAgbV9tZWRpYVF1ZXJ5RGF0YS5jbGVhcigpOwogICAgIG1fcXVlcnlTZXQt
PmFkZE1lZGlhUXVlcnkoV1RGTW92ZShtZWRpYVF1ZXJ5KSk7CiB9CkBAIC0yODgsNyArMjg4LDcg
QEAgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFRdWVyeURhdGE6Ok1lZGlhUXVlcnlEYXRhKE1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0IGNvbnRleHQKIHZvaWQgTWVkaWFRdWVyeVBhcnNlcjo6TWVkaWFR
dWVyeURhdGE6OmNsZWFyKCkKIHsKICAgICBtX3Jlc3RyaWN0b3IgPSBNZWRpYVF1ZXJ5OjpOb25l
OwotICAgIG1fbWVkaWFUeXBlID0gV1RGOjpudWxsb3B0OworICAgIG1fbWVkaWFUeXBlID0gc3Rk
OjpudWxsb3B0OwogICAgIG1fbWVkaWFGZWF0dXJlID0gU3RyaW5nKCk7CiAgICAgbV9leHByZXNz
aW9ucy5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNw
bGF5VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCmluZGV4IGFk
Njk3OTU5MTcwM2NmMWEwNWM4Y2Q1MTJjZTIxYWQyMGZkNTg4ZjcuLmIwYThhZTc0ZmI1NjE5N2Nl
ZWQxNjNkZWJlNTg1NGEyMGZhZmI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvRGlzcGxheVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVl
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0YWNraW5nSXRlbSYgcm9v
dFN0YWNraW5nSXRlbSgpIGNvbnN0IHsgcmV0dXJuICptX3Jvb3RTdGFja2luZ0l0ZW07IH0KICAg
ICAgY29uc3QgQ29udGFpbmVyQm94JiByb290Qm94KCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEJv
eE5lZWRzRGlzcGxheShCb3gmLCBPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9
IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgdm9pZCBzZXRCb3hOZWVkc0Rpc3BsYXkoQm94Jiwg
T3B0aW9uYWw8QWJzb2x1dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0Um9vdFN0YWNraW5nSXRlbShzdGQ6OnVuaXF1ZV9w
dHI8U3RhY2tpbmdJdGVtPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3gu
aAppbmRleCAxNzgyZDJkZGQ1Mjk4OGZkZDE3ZGU0YmE4Y2UyMDQ3MzUzNzM5YjAxLi42NWZmZTNh
YzQxYTgxYmRjZmU3MDU0YTY2ZGRmOGIxMGU4ZGI1OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheUJveC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBC
b3gqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0TmV4dFNpYmxpbmcoc3RkOjp1bmlxdWVfcHRyPEJveD4mJik7CiAKLSAgICB2
b2lkIHNldE5lZWRzRGlzcGxheShPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVjdCA9
IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoT3B0aW9uYWw8QWJzb2x1
dGVGbG9hdFJlY3Q+IHN1YnJlY3QgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgdmlydHVhbCBTdHJp
bmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKaW5k
ZXggYmVjZTQ3MGUzZmEyNTBiNDllNjdkZmQwY2RjYjY3ZGZmZTU0OGJiYS4uODJkZDM4YzQ5ZjE2
NDYyNDFhNmVlZTc5MjY4N2U5YmVjMzg0ODkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcApA
QCAtMjY4LDEwICsyNjgsMTAgQEAgc3RhdGljIEZpbGxMYXllckltYWdlR2VvbWV0cnkgZ2VvbWV0
cnlGb3JMYXllcihjb25zdCBGaWxsTGF5ZXImIGZpbGxMYXllciwgTGF5b3UKICAgICAgICAgICAg
IHRvcCA9IGdlb21ldHJ5LmJvcmRlclRvcCgpOwogICAgICAgICAgICAgYm90dG9tID0gZ2VvbWV0
cnkuYm9yZGVyQm90dG9tKCk7CiAgICAgICAgICAgICBpZiAoZmlsbExheWVyLm9yaWdpbigpID09
IEZpbGxCb3g6OkNvbnRlbnQpIHsKLSAgICAgICAgICAgICAgICBsZWZ0ICs9IGdlb21ldHJ5LnBh
ZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKLSAgICAgICAgICAgICAgICByaWdodCArPSBnZW9tZXRy
eS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwotICAgICAgICAgICAgICAgIHRvcCArPSBnZW9t
ZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICAgICAgICAgICAgICBib3R0b20gKz0g
Z2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgbGVm
dCArPSBnZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApOworICAgICAgICAgICAgICAg
IHJpZ2h0ICs9IGdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOworICAgICAgICAg
ICAgICAgIHRvcCArPSBnZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgICAg
ICAgICAgICAgYm90dG9tICs9IGdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
aXNwbGF5L2Nzcy9EaXNwbGF5U3RhY2tpbmdJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlTdGFja2luZ0l0ZW0uY3BwCmluZGV4IDQ5YjgxOTYzOTY1YTM0MTE4ZTQ2
ZTk4MDc5OTI3Y2MxNDEwMzVhYjYuLmEzMTU5NmIyMGMxYTcxYzllZmMzN2RmMzJjMDMxMGJjZjY5
YmUwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFj
a2luZ0l0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlTdGFj
a2luZ0l0ZW0uY3BwCkBAIC00OCw3ICs0OCw3IEBAIGJvb2wgU3RhY2tpbmdJdGVtOjppc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0CiAKIHZvaWQgU3RhY2tpbmdJdGVtOjphZGRDaGlsZFN0YWNraW5n
SXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYmIGl0ZW0pCiB7Ci0gICAgYXV0byB6
SW5kZXggPSBpdGVtLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCk7CisgICAgYXV0
byB6SW5kZXggPSBpdGVtLT5ib3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApOwogICAg
IGlmICh6SW5kZXggPCAwKQogICAgICAgICBtX25lZ2F0aXZlWk9yZGVyTGlzdC5hcHBlbmQoV1RG
TW92ZShpdGVtKSk7CiAgICAgZWxzZQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFN0YWNraW5nSXRl
bTo6YWRkQ2hpbGRTdGFja2luZ0l0ZW0oc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mJiBp
dGVtKQogdm9pZCBTdGFja2luZ0l0ZW06OnNvcnRMaXN0cygpCiB7CiAgICAgYXV0byBjb21wYXJl
WkluZGV4ID0gW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFN0YWNraW5nSXRlbT4mIGEsIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiBiKSB7Ci0gICAgICAgIHJldHVybiBhLT5i
b3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlT3IoMCkgPCBiLT5ib3goKS5zdHlsZSgpLnpJbmRl
eCgpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBhLT5ib3goKS5zdHlsZSgpLnpJbmRleCgp
LnZhbHVlX29yKDApIDwgYi0+Ym94KCkuc3R5bGUoKS56SW5kZXgoKS52YWx1ZV9vcigwKTsKICAg
ICB9OwogCiAgICAgc3RkOjpzdGFibGVfc29ydChtX3Bvc2l0aXZlWk9yZGVyTGlzdC5iZWdpbigp
LCBtX3Bvc2l0aXZlWk9yZGVyTGlzdC5lbmQoKSwgY29tcGFyZVpJbmRleCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQWJzdHJhY3RSYW5nZS5jcHAKaW5kZXggZmRiMjA5N2RlZjhhNDM1MWQ0MDNkNzRiNDNlNmY2
MmYzZjg1OTZjNy4uNDBmNTg1NjE4M2IyNzYxODY1MjdjZTMwZGMwMTliMTMyM2Q5OTIwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBTaW1wbGVS
YW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgUmVmPEFic3RyYWN0UmFuZ2U+JiByYW5nZSkKIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSog
cmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdl
KCpyYW5nZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BZGRFdmVudExp
c3RlbmVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRp
b25zLmgKaW5kZXggY2IxMzRmYWJhYmExNTAwZjUwYzk3ZGNlZDQ4OWJlZTllNDc2MGRhOC4uYTA3
N2E1YzYzNGY3OTE5OWY0N2YyODgyYTFkNDkzZmQ3ODU1OTUyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmgKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zIDogRXZlbnRM
aXN0ZW5lck9wdGlvbnMgewotICAgIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKGJvb2wgY2FwdHVy
ZSA9IGZhbHNlLCBPcHRpb25hbDxib29sPiBwYXNzaXZlID0gV1RGOjpudWxsb3B0LCBib29sIG9u
Y2UgPSBmYWxzZSwgUmVmUHRyPEFib3J0U2lnbmFsPiYmIHNpZ25hbCA9IG51bGxwdHIpCisgICAg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIE9wdGlvbmFsPGJv
b2w+IHBhc3NpdmUgPSBzdGQ6Om51bGxvcHQsIGJvb2wgb25jZSA9IGZhbHNlLCBSZWZQdHI8QWJv
cnRTaWduYWw+JiYgc2lnbmFsID0gbnVsbHB0cikKICAgICAgICAgOiBFdmVudExpc3RlbmVyT3B0
aW9ucyhjYXB0dXJlKQogICAgICAgICAsIHBhc3NpdmUocGFzc2l2ZSkKICAgICAgICAgLCBvbmNl
KG9uY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKaW5kZXggNzQ4YjEwNzUwZTM0
ZmQwN2JkOTczNGQ5Yjg5YzgwZmU0ZTRkYjEyZC4uZDI2ZDJlY2E2NDZiOGFlYzRjNGVlZTg0NDIx
YTNlYTg4MzA4YTViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMzcs
NyArMzcsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9y
ZU5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgp
OwogICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBCb3VuZGFyeVBvaW50IHsgKnBhcmVu
dCwgbm9kZS5jb21wdXRlTm9kZUluZGV4KCkgfTsKIH0KIApAQCAtNDUsNyArNDUsNyBAQCBPcHRp
b25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJiBub2Rl
KQogewogICAgIGF1dG8gcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJl
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIEJvdW5kYXJ5UG9pbnQgeyAqcGFyZW50LCBub2RlLmNvbXB1dGVO
b2RlSW5kZXgoKSArIDEgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVu
dC5jcHAKaW5kZXggYmU3MGM5YjA1Y2RjOGMwYmY0MmVjMTI0YjgyMTA4YmZjNzRjNDg3ZC4uODQy
ZjZlZWNiMzNjYjNkZTFiYzZlMzVmYTQ5NzBiOGFiNWQwZmEyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlTW90aW9uRXZlbnQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIERldmljZU1vdGlvbkV2
ZW50OjpEZXZpY2VNb3Rpb25FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIERldmlj
ZU1vdGlvbkRhCiBzdGF0aWMgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlv
bj4gY29udmVydChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJh
dGlvbikKIHsKICAgICBpZiAoIWFjY2VsZXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEZXZpY2VN
b3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uIHsgYWNjZWxlcmF0aW9uLT54KCksIGFjY2VsZXJhdGlv
bi0+eSgpLCBhY2NlbGVyYXRpb24tPnooKSB9OwogfQpAQCAtNTksNyArNTksNyBAQCBzdGF0aWMg
T3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OkFjY2VsZXJhdGlvbj4gY29udmVydChjb25zdCBE
ZXZpY2VNb3Rpb25EYXRhOgogc3RhdGljIE9wdGlvbmFsPERldmljZU1vdGlvbkV2ZW50OjpSb3Rh
dGlvblJhdGU+IGNvbnZlcnQoY29uc3QgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRpb25SYXRlKiBy
b3RhdGlvblJhdGUpCiB7CiAgICAgaWYgKCFyb3RhdGlvblJhdGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZSB7IHJvdGF0aW9uUmF0ZS0+YWxwaGEoKSwg
cm90YXRpb25SYXRlLT5iZXRhKCksIHJvdGF0aW9uUmF0ZS0+Z2FtbWEoKSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggNDBmMTIxNmZiMjQ1MDllMWFlOTQ3OTM0NjhhZjJmYWYzMDMy
ZGFlNS4uZDdkNDJlYTIwZjkxMTNjZjQ1NmJkZWYxZTU5MzdlODQ5NjYzMGNmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0zNDQsOCArMzQ0LDggQEAKICNpbmNsdWRlICJIVE1MVmlkZW9F
bGVtZW50LmgiCiAjZW5kaWYKIAotI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
Y2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwg
bWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVu
dGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVy
IHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykK
LSNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWws
ICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRd
IERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7
IH0pLnRvVUludDY0KCksIGZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRv
VUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5l
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRo
aXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJh
bWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0g
JnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAi
LCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBh
Z2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgp
LnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERv
Y3VtZW50KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTU5
OCwxOSArMTU5OCwxOSBAQCBSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBv
aW50KGludCB4LCBpbnQgeSkKIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IERvY3VtZW50OjpjYXJl
dFBvc2l0aW9uRnJvbVBvaW50KGNvbnN0IExheW91dFBvaW50JiBjbGllbnRQb2ludCkKIHsKICAg
ICBpZiAoIWhhc0xpdmluZ1JlbmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExheW91dFBvaW50IGxvY2Fs
UG9pbnQ7CiAgICAgYXV0byBub2RlID0gbm9kZUZyb21Qb2ludChjbGllbnRQb2ludCwgJmxvY2Fs
UG9pbnQpOwogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmFuZ2VDb21wbGlh
bnRQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQpLnBhcmVu
dEFuY2hvcmVkRXF1aXZhbGVudCgpOwogICAgIGlmIChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gcmFuZ2VDb21wbGlhbnRQb3NpdGlv
bi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICBub2RlID0gcmV0YXJnZXRUb1Njb3BlKCpy
YW5nZUNvbXBsaWFudFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7CkBAIC0yMTIwLDcgKzIxMjAs
NyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYgdGV4dCwgdW5zaWdu
ZWQgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIHVucwogICAgIGlmICghbV9wZW5kaW5nUmVuZGVyVHJl
ZVRleHRVcGRhdGUpCiAgICAgICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlID0gbWFr
ZVVuaXF1ZTxTdHlsZTo6VXBkYXRlPigqdGhpcyk7CiAKLSAgICBtX3BlbmRpbmdSZW5kZXJUcmVl
VGV4dFVwZGF0ZS0+YWRkVGV4dCh0ZXh0LCB7IG9mZnNldE9mUmVwbGFjZWRUZXh0LCBsZW5ndGhP
ZlJlcGxhY2VkVGV4dCwgV1RGOjpudWxsb3B0IH0pOworICAgIG1fcGVuZGluZ1JlbmRlclRyZWVU
ZXh0VXBkYXRlLT5hZGRUZXh0KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9m
UmVwbGFjZWRUZXh0LCBzdGQ6Om51bGxvcHQgfSk7CiAKICAgICBzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSh7IH0pOwogfQpAQCAtMzg0MSw3ICszODQxLDcgQEAgVmlld3BvcnRBcmd1bWVudHMgRG9j
dW1lbnQ6OnZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QKICAgICBhdXRvKiBwYWdlID0gdGhpcy0+
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVu
dHM7Ci0gICAgcmV0dXJuIHBhZ2UtPm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoKS52YWx1ZU9y
KG1fdmlld3BvcnRBcmd1bWVudHMpOworICAgIHJldHVybiBwYWdlLT5vdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzKCkudmFsdWVfb3IobV92aWV3cG9ydEFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCkKQEAgLTM4NjMsNyArMzg2Myw3IEBAIHZv
aWQgRG9jdW1lbnQ6Om1ldGFFbGVtZW50VGhlbWVDb2xvckNoYW5nZWQoSFRNTE1ldGFFbGVtZW50
JiBtZXRhRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBvbGRUaGVtZUNvbG9y
ID0gc3RkOjpleGNoYW5nZShtX2NhY2hlZFRoZW1lQ29sb3IsIENvbG9yKCkpOwotICAgIG1fbWV0
YVRoZW1lQ29sb3JFbGVtZW50cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX21ldGFUaGVtZUNvbG9y
RWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9hY3RpdmVUaGVtZUNvbG9yTWV0YUVsZW1l
bnQgPSBudWxscHRyOwogICAgIGlmICh0aGVtZUNvbG9yKCkgPT0gb2xkVGhlbWVDb2xvcikKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjM2MSwxMSArNjM2MSwxMSBAQCBPcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0PiBEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbgogewogICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gZ2V0Q1NTQ2FudmFzRWxl
bWVudChuYW1lKTsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZWxlbWVudC0+c2V0U2l6ZSh7
IHdpZHRoLCBoZWlnaHQgfSk7CiAgICAgYXV0byBjb250ZXh0ID0gZWxlbWVudC0+Z2V0Q29udGV4
dCh0eXBlKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
aWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQpAQCAtNjY5MSw3ICs2Njkx
LDcgQEAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyJiBEb2N1bWVudDo6ZGV2aWNlT3JpZW50
YXRpb25Db250cm9sbGVyKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6c2ltdWxhdGVEZXZpY2VP
cmllbnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEp
CiB7Ci0gICAgYXV0byBvcmllbnRhdGlvbiA9IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRl
KGFscGhhLCBiZXRhLCBnYW1tYSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGF1
dG8gb3JpZW50YXRpb24gPSBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShhbHBoYSwgYmV0
YSwgZ2FtbWEsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICBkZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihvcmllbnRhdGlvbi5w
dHIoKSk7CiB9CiAKQEAgLTc3ODYsMTIgKzc3ODYsMTIgQEAgc3RhdGljIE9wdGlvbmFsPExheW91
dFJlY3Q+IGNvbXB1dGVDbGlwcGVkUmVjdEluUm9vdENvbnRlbnRzU3BhY2UoY29uc3QgTGF5b3V0
UmUKIAogICAgIGJvb2wgaW50ZXJzZWN0cyA9IHJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZS0+ZWRn
ZUluY2x1c2l2ZUludGVyc2VjdChyZW5kZXJlci0+dmlldygpLmZyYW1lVmlldygpLmxheW91dFZp
ZXdwb3J0UmVjdCgpKTsKICAgICBpZiAoIWludGVyc2VjdHMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBMYXlvdXRSZWN0
IHJlY3RJbkZyYW1lVmlld1NwYWNlKHJlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkuY29udGVu
dHNUb1ZpZXcoc25hcHBlZEludFJlY3QoKnJlY3RJbkZyYW1lQWJzb2x1dGVTcGFjZSkpKTsKICAg
ICBhdXRvKiBvd25lclJlbmRlcmVyID0gcmVuZGVyZXItPmZyYW1lKCkub3duZXJSZW5kZXJlcigp
OwogICAgIGlmICghb3duZXJSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJlY3RJbkZyYW1lVmlld1NwYWNl
Lm1vdmVCeShvd25lclJlbmRlcmVyLT5jb250ZW50Qm94TG9jYXRpb24oKSk7CiAgICAgcmV0dXJu
IGNvbXB1dGVDbGlwcGVkUmVjdEluUm9vdENvbnRlbnRzU3BhY2UocmVjdEluRnJhbWVWaWV3U3Bh
Y2UsIG93bmVyUmVuZGVyZXIpOwpAQCAtNzgwOCwyMCArNzgwOCwyMCBAQCBzdGF0aWMgT3B0aW9u
YWw8SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25TdGF0ZT4gY29tcHV0ZUludGVyc2VjdGlvblN0YXRl
KEZyYW1lVmlldwogewogICAgIGF1dG8qIHRhcmdldFJlbmRlcmVyID0gdGFyZ2V0LnJlbmRlcmVy
KCk7CiAgICAgaWYgKCF0YXJnZXRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZsb2F0UmVjdCBsb2NhbFJv
b3RCb3VuZHM7CiAgICAgUmVuZGVyQmxvY2sqIHJvb3RSZW5kZXJlcjsKICAgICBpZiAob2JzZXJ2
ZXIucm9vdCgpKSB7CiAgICAgICAgIGlmIChvYnNlcnZlci50cmFja2luZ0RvY3VtZW50KCkgIT0g
JnRhcmdldC5kb2N1bWVudCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFvYnNlcnZlci5y
b290KCktPnJlbmRlcmVyKCkgfHwgIWlzPFJlbmRlckJsb2NrPihvYnNlcnZlci5yb290KCktPnJl
bmRlcmVyKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcm9vdFJlbmRlcmVyID0gZG93bmNhc3Q8
UmVuZGVyQmxvY2s+KG9ic2VydmVyLnJvb3QoKS0+cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmICgh
cm9vdFJlbmRlcmVyLT5pc0NvbnRhaW5pbmdCbG9ja0FuY2VzdG9yRm9yKCp0YXJnZXRSZW5kZXJl
cikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAob2JzZXJ2ZXIucm9vdCgpID09ICZ0YXJnZXQu
ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlv
dXRWaWV3cG9ydFJlY3QoKTsKQEAgLTc4MzMsNyArNzgzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxJ
bnRlcnNlY3Rpb25PYnNlcnZhdGlvblN0YXRlPiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJh
bWVWaWV3CiAgICAgICAgIEFTU0VSVChmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKTsK
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSB0aGUgY2FzZSBvZiBhbiBpbXBsaWNpdC1yb290IG9i
c2VydmVyIHRoYXQgaGFzIGEgdGFyZ2V0IGluIGEgZGlmZmVyZW50IGZyYW1lIHRyZWUuCiAgICAg
ICAgIGlmICgmdGFyZ2V0UmVuZGVyZXItPmZyYW1lKCkubWFpbkZyYW1lKCkgIT0gJmZyYW1lVmll
dy5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJvb3RSZW5kZXJlciA9IGZyYW1lVmlldy5y
ZW5kZXJWaWV3KCk7CiAgICAgICAgIGxvY2FsUm9vdEJvdW5kcyA9IGZyYW1lVmlldy5sYXlvdXRW
aWV3cG9ydFJlY3QoKTsKICAgICB9CkBAIC04NTM2LDcgKzg1MzYsNyBAQCB2b2lkIERvY3VtZW50
OjpzZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qIHNlcnZpY2VX
b3JrZXJDb25uZQogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlcigpID8gbWFrZU9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lz
dHJhdGlvbklkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtl
cigpID8gc3RkOjptYWtlX29wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkgOiBz
dGQ6Om51bGxvcHQ7CiAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KHRvcE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSgqdGhpcywgKnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKSwgY29udHJvbGxpbmdTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50KHVybCgpKSk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggODRmZDIxYTY2ZDc4YTRmNDI4NjdmMWY0ZDA1NDRiNDY2
OTg1MzIwNy4uOTgxMzQ3ZmU3NTA3MTgwMmMwMjI3MTMwZjQyNjNmNThlYTQwZGQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTQxNSw3ICs0MTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3kpOwotICAgIFJlZmVycmVyUG9s
aWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZWZlcnJlclBvbGlj
eS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7IH0KKyAg
ICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cmVmZXJyZXJQb2xpY3kudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlKTsgfQogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCA1
MDk4ZWJkMDVlNGFlYjVlMTliZjU3YWEzMzUwNzBhNWVkYWZhODFlLi4yMzcwOTU0ZTM2YTg4OWZi
ZWU4Zjg3NjJiNGJkYzc4MmJlOGFhYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBPcHRpb25hbDxib29sPiBEb2N1
bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAt
MTcyLDcgKzE3Miw3IEBAIE9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1l
bnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1CiAgICAgaWYgKCFVc2VyR2Vz
dHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCiAgICAgICAgIHJldHVybiBT
dG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsKIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaAppbmRleCBlYzEw
NzllZGIxMjQ2NmZkOTU0NWU1Mjc2ZTJkMmI1NWM2MzRjZWYyLi45ZjAyOTc5OTVmMjA3NWUwMDU3
YjEyYjBkMzA2ZjM5OGEzNWQ2MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3Rv
cmFnZUFjY2Vzcy5oCkBAIC0xMjQsMjcgKzEyNCwyNyBAQCBPcHRpb25hbDxSZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1Jlc3VsdD4gUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OmRlY29kZShEZWNvZGVy
JgogICAgIE9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkPiB3YXNHcmFudGVkOwogICAg
IGRlY29kZXIgPj4gd2FzR3JhbnRlZDsKICAgICBpZiAoIXdhc0dyYW50ZWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24+IHByb21wdFdhc1Nob3duOwogICAg
IGRlY29kZXIgPj4gcHJvbXB0V2FzU2hvd247CiAgICAgaWYgKCFwcm9tcHRXYXNTaG93bikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NTY29wZT4gc2NvcGU7CiAgICAgZGVjb2RlciA+
PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVE
b21haW4+IHRvcEZyYW1lRG9tYWluOwogICAgIGRlY29kZXIgPj4gdG9wRnJhbWVEb21haW47CiAg
ICAgaWYgKCF0b3BGcmFtZURvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9t
YWluPiBzdWJGcmFtZURvbWFpbjsKICAgICBkZWNvZGVyID4+IHN1YkZyYW1lRG9tYWluOwogICAg
IGlmICghc3ViRnJhbWVEb21haW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKndhc0dy
YW50ZWQpLCBXVEZNb3ZlKCpwcm9tcHRXYXNTaG93biksIFdURk1vdmUoKnNjb3BlKSwgV1RGTW92
ZSgqdG9wRnJhbWVEb21haW4pLCBXVEZNb3ZlKCpzdWJGcmFtZURvbWFpbikgfSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCmluZGV4IDIzZjEzNDk1ZmZhOGEwMDQ0ODMwY2U1NjZjMWUwMGQyMDc0
NTIyMTEuLjBhNTI4ZWJiNzVmMjMwZjJmNjk3MTRjYzYzMTUyZGUzZmY0NDM4NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBPcHRpb25hbDxpbnQ+IEVsZW1lbnQ6
OnRhYkluZGV4U2V0RXhwbGljaXRseSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0YWJJbmRleFN0
YXRlKCkpIHsKICAgICBjYXNlIFRhYkluZGV4U3RhdGU6Ok5vdFNldDoKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRh
YkluZGV4U3RhdGU6Olplcm86CiAgICAgICAgIHJldHVybiAwOwogICAgIGNhc2UgVGFiSW5kZXhT
dGF0ZTo6TmVnYXRpdmVPbmU6CkBAIC0yODMsNyArMjgzLDcgQEAgT3B0aW9uYWw8aW50PiBFbGVt
ZW50Ojp0YWJJbmRleFNldEV4cGxpY2l0bHkoKSBjb25zdAogICAgICAgICByZXR1cm4gZWxlbWVu
dFJhcmVEYXRhKCktPnVudXN1YWxUYWJJbmRleCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGludCBFbGVtZW50OjpkZWZhdWx0VGFiSW5kZXgoKSBjb25zdApAQCAtMzEzLDcg
KzMxMyw3IEBAIHZvaWQgRWxlbWVudDo6c2V0VGFiSW5kZXhGb3JCaW5kaW5ncyhpbnQgdmFsdWUp
CiAKIGJvb2wgRWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29u
c3QKIHsKLSAgICBpZiAoIShpc0ZvY3VzYWJsZSgpICYmICFzaG91bGRCZUlnbm9yZWRJblNlcXVl
bnRpYWxGb2N1c05hdmlnYXRpb24oKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9y
KDApID49IDApKQorICAgIGlmICghKGlzRm9jdXNhYmxlKCkgJiYgIXNob3VsZEJlSWdub3JlZElu
U2VxdWVudGlhbEZvY3VzTmF2aWdhdGlvbigpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZh
bHVlX29yKDApID49IDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGF1dG8qIHJv
b3QgPSBzaGFkb3dSb290KCkpIHsKICAgICAgICAgaWYgKHJvb3QtPmRlbGVnYXRlc0ZvY3VzKCkp
CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBFbGVtZW50OjpzZXRCZWluZ0RyYWdnZWQoYm9vbCBm
bGFnKQogCiBpbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5l
RGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9sbExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBib29sIGlzTFRSKQogewotICAgIHN3aXRjaCAocG9zaXRpb24u
dmFsdWVPcihTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CisgICAgc3dpdGNoIChw
b3NpdGlvbi52YWx1ZV9vcihTY3JvbGxMb2dpY2FsUG9zaXRpb246Ok5lYXJlc3QpKSB7CiAgICAg
Y2FzZSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0OiB7CiAgICAgICAgIHN3aXRjaCAod3Jp
dGluZ01vZGUpIHsKICAgICAgICAgY2FzZSBXcml0aW5nTW9kZTo6VG9wVG9Cb3R0b206CkBAIC04
NjYsNyArODY2LDcgQEAgaW5saW5lIFNjcm9sbEFsaWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZv
cklubGluZURpcmVjdGlvbihPcHRpb25hbDxTY3JvbGxMb2dpY2EKIAogaW5saW5lIFNjcm9sbEFs
aWdubWVudCB0b1Njcm9sbEFsaWdubWVudEZvckJsb2NrRGlyZWN0aW9uKE9wdGlvbmFsPFNjcm9s
bExvZ2ljYWxQb3NpdGlvbj4gcG9zaXRpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewot
ICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVPcihTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0
KSkgeworICAgIHN3aXRjaCAocG9zaXRpb24udmFsdWVfb3IoU2Nyb2xsTG9naWNhbFBvc2l0aW9u
OjpTdGFydCkpIHsKICAgICBjYXNlIFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQ6IHsKICAg
ICAgICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewogICAgICAgICBjYXNlIFdyaXRpbmdNb2RlOjpU
b3BUb0JvdHRvbToKQEAgLTkzNiw3ICs5MzYsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9W
aWV3KE9wdGlvbmFsPFZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRpb25zPj4mJiBhcgog
ICAgICAgICBpc0hvcml6b250YWwgPyBhbGlnblggOiBhbGlnblksCiAgICAgICAgIGlzSG9yaXpv
bnRhbCA/IGFsaWduWSA6IGFsaWduWCwKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6Tm8sCi0gICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVPcihTY3JvbGxCZWhh
dmlvcjo6QXV0byksCisgICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVo
YXZpb3I6OkF1dG8pLAogICAgICAgICBTbW9vdGhTY3JvbGxGZWF0dXJlRW5hYmxlbWVudDo6RGVm
YXVsdAogICAgIH07CiAgICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0
ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHZpc2libGVPcHRpb25zKTsKQEAgLTEwMzksNyArMTAzOSw3
IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25z
LCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZywKICAgICAgICAgY2xhbXBUb0ludGVnZXIoc2Nyb2xs
VG9PcHRpb25zLnRvcC52YWx1ZSgpICogcmVuZGVyZXItPnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgp
KQogICAgICk7CiAKLSAgICBhdXRvIGFuaW1hdGVkID0gdXNlU21vb3RoU2Nyb2xsaW5nKHNjcm9s
bFRvT3B0aW9ucy5iZWhhdmlvci52YWx1ZU9yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgdGhpcykg
PyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRTY3JvbGw6Ok5vOworICAgIGF1dG8gYW5p
bWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9yLnZhbHVl
X29yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwgdGhpcykgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDog
QW5pbWF0ZWRTY3JvbGw6Ok5vOwogICAgIGF1dG8gc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25z
ID0gU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWNXaXRoT3B0
aW9ucyhjbGFtcGluZywgYW5pbWF0ZWQsIHNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7CiAgICAg
cmVuZGVyZXItPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnMpOwogfQpAQCAtMTU5NCwxMCArMTU5NCwxMCBAQCBzdGF0aWMgT3B0aW9u
YWw8c3RkOjpwYWlyPFJlbmRlck9iamVjdCosIExheW91dFJlY3Q+PiBsaXN0Qm94RWxlbWVudEJv
dW5kaW5nQm94KAogICAgICAgICBzZWxlY3RFbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9wdEdyb3Vw
RWxlbWVudD4oZWxlbWVudCkub3duZXJTZWxlY3RFbGVtZW50KCk7CiAgICAgICAgIGlzR3JvdXAg
PSB0cnVlOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFzZWxlY3RFbGVtZW50IHx8ICFzZWxl
Y3RFbGVtZW50LT5yZW5kZXJlcigpIHx8ICFpczxSZW5kZXJMaXN0Qm94PihzZWxlY3RFbGVtZW50
LT5yZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVy
TGlzdEJveD4oKnNlbGVjdEVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIE9wdGlvbmFsPExheW91
dFJlY3Q+IGJvdW5kaW5nQm94OwpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIE9wdGlvbmFs
PHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCBMYXlvdXRSZWN0Pj4gbGlzdEJveEVsZW1lbnRCb3Vu
ZGluZ0JveCgKICAgICB9CiAKICAgICBpZiAoIWJvdW5kaW5nQm94KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHN0ZDo6cGFpcjxSZW5kZXJPYmplY3QqLCBMYXlvdXRSZWN0PiB7ICZyZW5kZXJlciwgYm91bmRp
bmdCb3gudmFsdWUoKSB9OwogfQpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgT3B0aW9uYWw8c3RkOjpw
YWlyPFJlbmRlck9iamVjdCosIEZsb2F0UmVjdD4+IEVsZW1lbnQ6OmJvdW5kaW5nQWJzb2x1dGVS
ZWN0V2l0aG8KICAgICAgICAgcmVuZGVyQm94TW9kZWxPYmplY3QtPmFic29sdXRlUXVhZHMocXVh
ZHMpOwogCiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihyZW5kZXJlciwgdW5pdGVkQm91bmRpbmdCb3hlcyhxdWFkcykpOwogfQpAQCAtNDM1
NCw3ICs0MzU0LDcgQEAgdm9pZCBFbGVtZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogT3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgUmVuZGVyU3R5bGUqKQogewogICAgIEFTU0VSVChoYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRl
c0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENv
bnRleHQuaAppbmRleCA2ODliMDYxMGFiZTI3YzE4NjE1OWI5NDBiNDVjMjdlMDFiM2NmNzVkLi4x
MjE3NmNhYWVkNTIyMGZjNzhkYmQxNDZhZTkxZjY2YTg5MDBhN2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudENvbnRleHQuaApAQCAtNzAsMjEgKzcwLDIxIEBAIE9wdGlvbmFsPEVsZW1lbnRDb250
ZXh0PiBFbGVtZW50Q29udGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgRWxlbWVu
dENvbnRleHQgY29udGV4dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC5ib3Vu
ZGluZ1JlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwYWdlSWRlbnRpZmllciA9IFBhZ2VJZGVudGlmaWVy
OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250
ZXh0LndlYlBhZ2VJZGVudGlmaWVyID0gKnBhZ2VJZGVudGlmaWVyOwogCiAgICAgYXV0byBkb2N1
bWVudElkZW50aWZpZXIgPSBEb2N1bWVudElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAg
ICBpZiAoIWRvY3VtZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LmRvY3VtZW50SWRlbnRp
ZmllciA9ICpkb2N1bWVudElkZW50aWZpZXI7CiAKICAgICBhdXRvIGVsZW1lbnRJZGVudGlmaWVy
ID0gRWxlbWVudElkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWVsZW1lbnRJ
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuZWxlbWVudElkZW50aWZpZXIgPSAqZWxlbWVudElk
ZW50aWZpZXI7CiAKICAgICByZXR1cm4gY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCmluZGV4IDI5ZjJlZWEzNjQyNWEwNTY4Yzk4YmE0
MGEwZTQ4MzUxYWFmY2IzMjIuLjg1ZDE5OGM1NDBmZjk5MTBjNTQ2ZWVmMzY5MDE5N2E3OWQ0MDRm
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRp
b25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMu
aApAQCAtNTksMTQgKzU5LDE0IEBAIGlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvckFzc2VydGlv
bnM6OmRvbVRyZWVIYXNNdXRhdGVkKCkgY29uc3QKIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9uczo6ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogewotICAgIG1fZXZl
bnREaXNwYXRjaEFzc2VydGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24gPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRv
ckFzc2VydGlvbnM6OmNsZWFyKCkKIHsKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKICAgICBt
X2luaXRpYWxET01UcmVlVmVyc2lvbiA9IDA7Ci0gICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9u
ID0gV1RGOjpudWxsb3B0OworICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCA2ZDJm
ZGNhMDNmY2M1MDU5YjNiM2YyYzk3ZjhkZDM3OGYxMTdkODA5Li41MjgxNTA1Nzc3ZTZlNWMwYjMx
N2MxNjNiMTMxMTExNjQzMjhlNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaApAQCAtNzQsNyArNzQsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmKTsKIAogICAg
IEV2ZW50VGFyZ2V0KiBjdXJyZW50VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VGFy
Z2V0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiwgT3B0
aW9uYWw8Ym9vbD4gaXNJblNoYWRvd1RyZWUgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0
Q3VycmVudFRhcmdldChFdmVudFRhcmdldCosIE9wdGlvbmFsPGJvb2w+IGlzSW5TaGFkb3dUcmVl
ID0gc3RkOjpudWxsb3B0KTsKICAgICBib29sIGN1cnJlbnRUYXJnZXRJc0luU2hhZG93VHJlZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFRhcmdldElzSW5TaGFkb3dUcmVlOyB9CiAKICAgICB1
bnNpZ25lZCBzaG9ydCBldmVudFBoYXNlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFBoYXNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDAyYWNjZTA3ZDUwNzJk
NWUzMzQzYjNmMjJjMjlhM2E2OTI1YjVhZDUuLjRiZjA0NTQ2NDQ5NGIyZmUwYTczNGM4MzUzODUx
YmEwOGExNWU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0y
MDUsNyArMjA1LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYg
bm9kZSwgRXZlbnQmIGV2ZW50KQogICAgICAgICBldmVudC5zZXRUYXJnZXQoZmluYWxUYXJnZXQp
OwogICAgIH0KIAotICAgIGlmIChzaG91bGRDbGVhclRhcmdldHNBZnRlckRpc3BhdGNoLnZhbHVl
T3IoZmFsc2UpKSB7CisgICAgaWYgKHNob3VsZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2gudmFs
dWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIGV2ZW50LnNldFRhcmdldChudWxscHRyKTsKICAgICAg
ICAgZXZlbnQuc2V0UmVsYXRlZFRhcmdldChudWxscHRyKTsKICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBhbHNvIGNsZWFyIHRoZSBldmVudCdzIHRvdWNoIHRhcmdldCBsaXN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNh
NmY4MTQwYmZmYS4uMGNjZGM0YWIzYmVjM2VjNmE4NTJlM2RlMDA0ZmU1NjMxMDY3MzY2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgRXZlbnRU
YXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8
RXZlbnRMaXN0ZW5lCiAKICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBsaXN0
ZW5lci0+dHlwZSgpID09IEV2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lclR5cGUgJiYgIWxp
c3RlbmVyLT53YXNDcmVhdGVkRnJvbU1hcmt1cCgpOwogCi0gICAgaWYgKCFlbnN1cmVFdmVudFRh
cmdldERhdGEoKS5ldmVudExpc3RlbmVyTWFwLmFkZChldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlS
ZWYoKSwgeyBvcHRpb25zLmNhcHR1cmUsIHBhc3NpdmUudmFsdWVPcihmYWxzZSksIG9wdGlvbnMu
b25jZSB9KSkKKyAgICBpZiAoIWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJN
YXAuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB7IG9wdGlvbnMuY2FwdHVyZSwg
cGFzc2l2ZS52YWx1ZV9vcihmYWxzZSksIG9wdGlvbnMub25jZSB9KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKG9wdGlvbnMuc2lnbmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vR0NSZWFjaGFibGVSZWYuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNo
YWJsZVJlZi5oCmluZGV4IDMwOTAzZmMyOTVmNGQyZjI3Y2EwYTU1NmRkZGEzYTdjNGJhOWI2YTIu
LjIxNjE2ZDdiYmM4MzY3Y2M0ZjYxMTBmODFmZjNiYTIzZDM1N2NhZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNoYWJsZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9HQ1JlYWNoYWJsZVJlZi5oCkBAIC0xMjUsNyArMTI1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
UD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6R0NSZWFjaGFibGVSZWY8UD4+IDogU2ltcGxl
Q2xhc3MKICAgICBzdGF0aWMgUGVla1R5cGUgcGVlayhQKiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7
IH0KIAogICAgIHR5cGVkZWYgT3B0aW9uYWw8UmVmPFA+PiBUYWtlVHlwZTsKLSAgICBzdGF0aWMg
VGFrZVR5cGUgdGFrZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVl
KSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9Cisg
ICAgc3RhdGljIFRha2VUeXBlIHRha2UoUmVmPFA+JiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlW
YWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxSZWY8UD4+KFdURk1vdmUodmFs
dWUpKTsgfQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXggYjg3ZmYzZWJiYmM3YTY3ZjZjZTY0NDAwYjEz
MDM2NzcwNDFkNDgzMi4uYWNmM2JhMWM1ZTU2ZjkxMjRkMDYxNWMwYjM3NGQ1YTdlYTZmMjExZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmNwcApAQCAtMTY1LDEyICsxNjUsMTIgQEAg
dm9pZCBLZXlib2FyZEV2ZW50Ojppbml0S2V5Ym9hcmRFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KIAogICAgIHNldE1vZGlmaWVyS2V5cyhjdHJsS2V5LCBh
bHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBhbHRHcmFwaEtleSk7CiAKLSAgICBtX2NoYXJDb2Rl
ID0gV1RGOjpudWxsb3B0OworICAgIG1fY2hhckNvZGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9p
c0NvbXBvc2luZyA9IGZhbHNlOwotICAgIG1fa2V5Q29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2tleUNvZGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9yZXBlYXQgPSBmYWxzZTsKICAgICBtX3Vu
ZGVybHlpbmdQbGF0Zm9ybUV2ZW50ID0gbnVsbHB0cjsKLSAgICBtX3doaWNoID0gV1RGOjpudWxs
b3B0OworICAgIG1fd2hpY2ggPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9jb2RlID0geyB9OwogICAg
IG1fa2V5ID0geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVD
bGFzc2ljU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3Jp
cHQuY3BwCmluZGV4IDc2YjY2ZDg4ZDMzODI5OTA4NzBlNTU0ZDkyYmE2MzU4NTJiNDhiOTMuLjQ4
ZTgzMWJhODYxMmM1ZjU0M2QyODQxOGEyZDM2ZWIyYzJmY2VmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIE9wdGlv
bmFsPExvYWRhYmxlU2NyaXB0OjpFcnJvcj4gTG9hZGFibGVDbGFzc2ljU2NyaXB0OjplcnJvcigp
IGNvbnN0CiAgICAgICAgIHJldHVybiBtX2Vycm9yOwogCiAgICAgaWYgKG1fY2FjaGVkU2NyaXB0
LT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBFcnJvciB7IEVycm9yVHlwZTo6Q2Fj
aGVkU2NyaXB0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JU
eXBlOjpDYWNoZWRTY3JpcHQsIHN0ZDo6bnVsbG9wdCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIExvYWRhYmxlQ2xhc3Np
Y1NjcmlwdDo6d2FzQ2FuY2VsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxl
Q2xhc3NpY1NjcmlwdC5oCmluZGV4IDkwYzQ3YTExNTJhMWI5NTFmYTM4MDQ4MjQzYTVlNzI4YmJh
YmNmNTcuLjM4YzAzMTAxNzhmOWMzNmQ2ZTJiMGE4MDFlMzYzZjI4OTQ1ZjE1ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0IHsgfTsKLSAgICBPcHRpb25hbDxFcnJvcj4gbV9l
cnJvciB7IFdURjo6bnVsbG9wdCB9OworICAgIE9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgc3Rk
OjpudWxsb3B0IH07CiAgICAgU3RyaW5nIG1faW50ZWdyaXR5OwogICAgIGJvb2wgbV9pc0FzeW5j
IHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjhkMzgzMGY3
ZWMzMzI5ZWI3OTNmMjgwOWFmNGVkOWQxNjA3M2RkZS4uOTcyODRmYzNiN2QwYzNiMTY5YjM5OGY1
YWY5YjcwYWUzZmE5ZGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsNyAr
NDgsNyBAQCB1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxXaW5kb3dQ
cm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4+OwogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDog
cHVibGljIEV2ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lc3NhZ2VFdmVudCk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9w
dGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UgPSBXVEY6Om51bGxvcHQpOworICAg
IHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiYsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
ID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKICAgICBzdGF0aWMgUmVmPE1l
c3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkKTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVz
c2FnZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
OwpAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1l
c3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7CiAg
ICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQpOwotICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2
ZW50U291cmNlPiYmID0gV1RGOjpudWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiA9IHsgfSk7CisgICAgTWVzc2FnZUV2ZW50KERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZl
bnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
ID0geyB9KTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaAppbmRleCBi
OGEwZDA2NTljZWY2NmQ5YzJmODgyYjRkYjkwNGFhYjBjMWM0ODRkLi4xZjU0ZDg3ZmNkMGExODli
YTMyOGNjOTdjMmM5MDk0ZDMyMTRmNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0SWRlbnRpZmllci5oCkBAIC02MywxMiArNjMsMTIgQEAgT3B0aW9uYWw8TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyPiBNZXNzYWdlUG9ydElkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJvY2Vzc0lkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPFBvcnRJZGVudGlmaWVyVHlw
ZT4+IHBvcnRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcG9ydElkZW50aWZpZXI7CiAgICAg
aWYgKCFwb3J0SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcHJvY2Vz
c0lkZW50aWZpZXIpLCBXVEZNb3ZlKCpwb3J0SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDhiM2EyNWY5NWM5ZjliYzRhNjE3OWVj
MmIwMTU4YmE2Zjg5OTg5MDIuLmJkNzA4YjE3M2QwOTM0OWJhZjYxZDczZjEwODBkNzJkMWNiNzQ1
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKQEAgLTg1LDkgKzg1
LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2ZShOb2RlJiBu
b2RlLCBjb25zdCBJbml0JiBpbml0KQogICAgICAgICBvcHRpb25zIHw9IENoaWxkTGlzdDsKICAg
ICBpZiAoaW5pdC5zdWJ0cmVlKQogICAgICAgICBvcHRpb25zIHw9IFN1YnRyZWU7Ci0gICAgaWYg
KGluaXQuYXR0cmlidXRlT2xkVmFsdWUudmFsdWVPcihmYWxzZSkpCisgICAgaWYgKGluaXQuYXR0
cmlidXRlT2xkVmFsdWUudmFsdWVfb3IoZmFsc2UpKQogICAgICAgICBvcHRpb25zIHw9IEF0dHJp
YnV0ZU9sZFZhbHVlOwotICAgIGlmIChpbml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZU9y
KGZhbHNlKSkKKyAgICBpZiAoaW5pdC5jaGFyYWN0ZXJEYXRhT2xkVmFsdWUudmFsdWVfb3IoZmFs
c2UpKQogICAgICAgICBvcHRpb25zIHw9IENoYXJhY3RlckRhdGFPbGRWYWx1ZTsKIAogICAgIEhh
c2hTZXQ8QXRvbVN0cmluZz4gYXR0cmlidXRlRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAK
aW5kZXggZmU3Y2I1NGE3OWIyMTkxOGI4MDI0M2NjNjY3ZjZjODU0N2JkYmM5Ni4uMmI3Y2E3ZjYz
Nzc3NmNiODAwMmQzYzBkNmYzZTc5MDRkMzIyOWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CkBAIC0xNjA2LDcgKzE2MDYsNyBAQCBPcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRh
cnlQb2ludChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBjb250YWluZXIg
PSBtYWtlUmVmUHRyKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFjb250YWlu
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIEJvdW5kYXJ5UG9pbnQgeyBjb250YWluZXIucmVsZWFzZU5vbk51
bGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmNwcAppbmRleCBmOTA1NWJkMTlhMjEwN2IwOWNlZDdlMmI5OTI0ODU3NTdjNGI5NzM0
Li4xNzZiYzNiNDg5MjBmZWQwOGEyYWE5NWFhMmJhZTY2N2FlZGY0MmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogI2VuZGlmCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNoYXJzZXQgPSBhdHRyaWJ1dGVz
LT5nZXQoImNoYXJzZXQiKTsKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBXVEY6Om51bGxvcHQsIGNoYXJzZXQu
aXNFbXB0eSgpID8gZG9jdW1lbnQoKS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKKyAg
ICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGhyZWYpLCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpLCBzdGQ6Om51bGxvcHQsIGNoYXJzZXQuaXNFbXB0eSgpID8gZG9jdW1lbnQo
KS5jaGFyc2V0KCkgOiBXVEZNb3ZlKGNoYXJzZXQpKTsKIAogICAgICAgICAgICAgICAgIG1fY2Fj
aGVkU2hlZXQgPSBkb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCkucmVxdWVzdENTU1N0
eWxlU2hlZXQoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCBlNzk2OTk2MWU0OWQyNzAzYTI0MjY2ODQwNjE5NTk2
OTI2Yzc4ZjlkLi4yODVhNzBkNzI4Y2ZlYTUxODU5NDEzYmI5YTE5OWU0Y2YyMmQxYTIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZS5jcHAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIFNpbXBsZVJhbmdlIG1ha2VTaW1w
bGVSYW5nZShjb25zdCBSZWY8UmFuZ2U+JiByYW5nZSkKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBt
YWtlU2ltcGxlUmFuZ2UoY29uc3QgUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZSgqcmFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RWxlbWVudC5jcHAKaW5kZXggN2Q0ZTkxODU5MzI3MzQxNzU4NWFiZGNmODRlYWNhNzBi
YTA1Y2Q1MS4uNGEyZGRmODM5ZTdkZmE2YjQ2NzFiYzZiOTM4N2E3NDQ5MjhlZDc2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIE9wdGlvbmFs
PFNjcmlwdEVsZW1lbnQ6OlNjcmlwdFR5cGU+IFNjcmlwdEVsZW1lbnQ6OmRldGVybWluZVNjcmlw
dFR5cGUoTGVnYWN5VHlwCiAgICAgICAgICAgICByZXR1cm4gU2NyaXB0VHlwZTo6Q2xhc3NpYzsK
ICAgICAgICAgaWYgKGlzTGVnYWN5U3VwcG9ydGVkSmF2YVNjcmlwdExhbmd1YWdlKGxhbmd1YWdl
KSkKICAgICAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAg
ICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUodHlw
ZS5zdHJpcFdoaXRlU3BhY2UoKSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2lj
OwpAQCAtMTU4LDEzICsxNTgsMTMgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2NyaXB0VHlw
ZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAgICAvLyBP
bmNlICJkZWZlciIgaXMgaW1wbGVtZW50ZWQsIHdlIGNhbiByZWNvbnNpZGVyIGVuYWJsaW5nIG1v
ZHVsZXMgaW4gWEhUTUwuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMzM4NwogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuaXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3NjcmlwdGluZy5odG1sI2F0dHItc2NyaXB0LXR5cGUKICAgICAvLyBTZXR0aW5nIHRoZSBhdHRy
aWJ1dGUgdG8gYW4gQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3IgdGhlIHN0cmluZyAi
bW9kdWxlIiBtZWFucyB0aGF0IHRoZSBzY3JpcHQgaXMgYSBtb2R1bGUgc2NyaXB0LgogICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAibW9kdWxlIikpCiAgICAgICAg
IHJldHVybiBTY3JpcHRUeXBlOjpNb2R1bGU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9z
cGVjL092ZXJ2aWV3Lmh0bWwjcHJlcGFyZS1hLXNjcmlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5n
ZS5jcHAKaW5kZXggOTFhMDUxNzFmZWU5MjQ4MmY5ZGI5Y2UwOWZmYTQzMzc4ZDM1YWJlMy4uYWQ2
ZTk2ZDFmMjJlZmU5NmNjYTkwODA0ZGQ2NTk2MDI0MGM2NTFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
cGxlUmFuZ2UuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtl
UmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJlbnQgPSBub2Rl
LnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB1bnNpZ25lZCBvZmZzZXQg
PSBub2RlLmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICByZXR1cm4gU2ltcGxlUmFuZ2UgeyB7ICpw
YXJlbnQsIG9mZnNldCB9LCB7ICpwYXJlbnQsIG9mZnNldCArIDEgfSB9OwogfQpAQCAtMjUwLDcg
KzI1MCw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBpbnRlcnNlY3Rpb24oY29uc3QgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JiBhLCBjb25zdCBPcHRpb25hCiB7CiAgICAgLy8gRklYTUU6IENhbiB0
aGlzIGJlIGRvbmUgbW9yZSBlZmZpY2llbnRseSwgd2l0aCBmZXdlciBjYWxscyB0byB0cmVlT3Jk
ZXI/CiAgICAgaWYgKCFhIHx8ICFiIHx8ICFpbnRlcnNlY3RzPENvbXBvc2VkVHJlZT4oKmEsICpi
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4geyB7IHN0ZDo6bWF4KGEtPnN0YXJ0LCBiLT5zdGFydCwgY29tcGFy
ZUJ5Q29tcG9zZWRUcmVlT3JkZXIpLCBzdGQ6Om1pbihhLT5lbmQsIGItPmVuZCwgY29tcGFyZUJ5
Q29tcG9zZWRUcmVlT3JkZXIpIH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NpbXBsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRl
eCBiYjQ0YjFiODNlMGNlODZkODM0NjA4OTk1Mjk2NWQ1MzNlY2M1ZGMyLi5lZmQ4ZmRmNTJiNTI1
NzNkMmEyYTYwZjY5ZGNhN2Y1MWY2OTVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApA
QCAtMTgwLDcgKzE4MCw3IEBAIGlubGluZSBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxw
ZXIoQm91bmRhcnlQb2ludCYmIHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYKIGlubGluZSBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKE9wdGlvbmFsPEJvdW5kYXJ5UG9p
bnQ+JiYgc3RhcnQsIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgZW5kKQogewogICAgIGlmICgh
c3RhcnQgfHwgIWVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1v
dmUoKnN0YXJ0KSwgV1RGTW92ZSgqZW5kKSk7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxp
bmUgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlSGVscGVyKEJvdW5kYXJ5UG9pbnQmJiBwb2lu
dCkKIGlubGluZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKE9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+JiYgcG9pbnQpCiB7CiAgICAgaWYgKCFwb2ludCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlSGVscGVyKFdURk1vdmUoKnBvaW50KSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXgg
YThkNzViMWM1OWU5N2Y2YWFmMWQ4YjIyZTYyM2VjOGU0ZTAxODhhNC4uMzBmZTA3ZGU1NThlYWJj
ZTMzNjk2MzUwMTA1NDkyNWJkNzI0ZjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rl
eHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmUHRyPFVpbnQ4
QXJyYXk+IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rlcjo6ZW5jb2RlKGNvbnN0IFN0cmluZyYgaW5w
dXQpCiAgICAgICAgIGF1dG8gdG9rZW4gPSB2aWV3W2NwdHJdOwogICAgICAgICBpZiAobV9wZW5k
aW5nSGlnaFN1cnJvZ2F0ZSkgewogICAgICAgICAgICAgYXV0byBoaWdoU3Vycm9nYXRlID0gKm1f
cGVuZGluZ0hpZ2hTdXJyb2dhdGU7Ci0gICAgICAgICAgICBtX3BlbmRpbmdIaWdoU3Vycm9nYXRl
ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9wZW5kaW5nSGlnaFN1cnJvZ2F0ZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlmICh0b2tlbiA+PSAweERDMDAgJiYgdG9rZW4gPD0g
MHhERkZGKSB7CiAgICAgICAgICAgICAgICAgYXV0byBjb2RlUG9pbnQgPSAweDEwMDAwICsgKCho
aWdoU3Vycm9nYXRlIC0gMHhEODAwKSA8PCAxMCkgKyAodG9rZW4gLSAweERDMDApOwogICAgICAg
ICAgICAgICAgIFU4X0FQUEVORF9VTlNBRkUoYnl0ZXMuZGF0YSgpLCBieXRlc1dyaXR0ZW4sIGNv
ZGVQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGI2NzlhMGEzYmI2YWFkZmI1
NGYzMDY0MTE1ZDEzYjdkM2MxMTJkNTUuLjAzNzQ5ZTc3YTljYzc3ZDUyNTAwOTBmYzZiZTY3MDZj
ZDFkZTc2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMTUsMTggKzMxNSwxOCBA
QCBIVE1MTGFiZWxFbGVtZW50KiBUcmVlU2NvcGU6OmxhYmVsRWxlbWVudEZvcklkKGNvbnN0IEF0
b21TdHJpbmcmIGZvckF0dHJpYnV0ZVZhbAogc3RhdGljIE9wdGlvbmFsPExheW91dFBvaW50PiBh
YnNvbHV0ZVBvaW50SWZOb3RDbGlwcGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgTGF5b3V0
UG9pbnQmIGNsaWVudFBvaW50KQogewogICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSB8fCAhZG9j
dW1lbnQudmlldygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC5m
cmFtZSgpLT5zZXR0aW5ncygpOwogICAgIGlmIChzZXR0aW5ncy52aXN1YWxWaWV3cG9ydEVuYWJs
ZWQoKSAmJiBzZXR0aW5ncy5jbGllbnRDb29yZGluYXRlc1JlbGF0aXZlVG9MYXlvdXRWaWV3cG9y
dCgpKSB7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUxheW91dCgpOwogICAgICAgICBpZiAoIWRv
Y3VtZW50LnZpZXcoKSB8fCAhZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGF1dG8qIHZpZXcgPSBkb2N1bWVudC52aWV3KCk7CiAgICAgICAgIEZsb2F0
UG9pbnQgbGF5b3V0Vmlld3BvcnRQb2ludCA9IHZpZXctPmNsaWVudFRvTGF5b3V0Vmlld3BvcnRQ
b2ludChjbGllbnRQb2ludCk7CiAgICAgICAgIEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEJvdW5k
cyh7IH0sIHZpZXctPmxheW91dFZpZXdwb3J0UmVjdCgpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bGF5b3V0Vmlld3BvcnRCb3VuZHMuY29udGFpbnMobGF5b3V0Vmlld3BvcnRQb2ludCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIExheW91dFBvaW50KHZpZXctPmxheW91dFZpZXdwb3J0VG9B
YnNvbHV0ZVBvaW50KGxheW91dFZpZXdwb3J0UG9pbnQpKTsKICAgICB9CiAKQEAgLTM0Niw3ICsz
NDYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJZk5vdENs
aXBwZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdAogI2VuZGlmCiAgICAgaWYgKHZpc2libGVS
ZWN0LmNvbnRhaW5zKGFic29sdXRlUG9pbnQpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVQb2lu
dDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIFJlZlB0cjxOb2RlPiBUcmVlU2NvcGU6Om5vZGVGcm9tUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9WaXNpdGVkTGlua1N0YXRlLmNwcAppbmRleCBhMDNhZjE0N2YzOWMyMWU0ZWY3NzdiZmNiZjQ0
MTFkMTRhYWIwYzgxLi5lYmQxNWU0MTE4ZTQ2ZjhhYmY5M2I4NGE1ZWZhMzQyN2ExNjRmNzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlzaXRlZExpbmtTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUuY3BwCkBAIC03NCw3ICs3NCw3IEBA
IGlubGluZSBzdGF0aWMgT3B0aW9uYWw8U2hhcmVkU3RyaW5nSGFzaD4gbGlua0hhc2hGb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lCiAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5j
aG9yRWxlbWVudD4oZWxlbWVudCkudmlzaXRlZExpbmtIYXNoKCk7CiAgICAgaWYgKGlzPFNWR0FF
bGVtZW50PihlbGVtZW50KSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFNWR0FFbGVtZW50Pihl
bGVtZW50KS52aXNpdGVkTGlua0hhc2goKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgVmlzaXRlZExpbmtTdGF0ZTo6aW52YWxp
ZGF0ZVN0eWxlRm9yTGluayhTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1do
ZWVsRXZlbnQuY3BwCmluZGV4IGFlNzZhNmZmM2RjOTFiODlmNzIwZmVjNzJmNjgzMWE2ZjdkOTNh
M2YuLjQwMjg1ZDM5MDMxODZiMTVhODcxMGQ4NTAxYTlmYWNhZjBlY2U3ZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBXaGVlbEV2ZW50Ojppbml0
V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBSZWZQdHI8V2lu
ZG8KIAogICAgIG1fZGVsdGFNb2RlID0gRE9NX0RFTFRBX1BJWEVMOwogCi0gICAgbV91bmRlcmx5
aW5nUGxhdGZvcm1FdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3VuZGVybHlpbmdQbGF0Zm9y
bUV2ZW50ID0gc3RkOjpudWxsb3B0OwogfQogCiBFdmVudEludGVyZmFjZSBXaGVlbEV2ZW50Ojpl
dmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVz
c2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKaW5kZXggY2U2ZThhN2NhZWMzZDIyYzE5
MmJhOWExZDU1MWMzZTBiMjQzZjgzMC4uZmM2Njc1NTc4YmVlYWQ0NDM4NWQxYzViMjlkNDg2YjQ4
MGE0ZGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMv
TWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTWVzc2FnZVBv
cnRDaGFubmVsOjpkaXNlbnRhbmdsZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBw
b3J0KQogICAgIHNpemVfdCBpID0gcG9ydCA9PSBtX3BvcnRzWzBdID8gMCA6IDE7CiAKICAgICBB
U1NFUlQobV9wcm9jZXNzZXNbaV0gfHwgbV9pc0Nsb3NlZFtpXSk7Ci0gICAgbV9wcm9jZXNzZXNb
aV0gPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9wZW5kaW5nTWVzc2FnZVBvcnRUcmFuc2ZlcnNbaV0uYWRkKHRoaXMpOwogCiAgICAgLy8g
VGhpcyBzZXQgb2Ygc3RlcHMgaXMgdG8gZ3VhcmFudGVlIHRoYXQgdGhlIGxvY2sgaXMgdW5sb2Nr
ZWQgYmVmb3JlIHRoZQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVs
OjpjbG9zZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0KQogICAgIEFTU0VS
VChwb3J0ID09IG1fcG9ydHNbMF0gfHwgcG9ydCA9PSBtX3BvcnRzWzFdKTsKICAgICBzaXplX3Qg
aSA9IHBvcnQgPT0gbV9wb3J0c1swXSA/IDAgOiAxOwogCi0gICAgbV9wcm9jZXNzZXNbaV0gPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9wcm9jZXNzZXNbaV0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9p
c0Nsb3NlZFtpXSA9IHRydWU7CiAKICAgICAvLyBUaGlzIHNldCBvZiBzdGVwcyBpcyB0byBndWFy
YW50ZWUgdGhhdCB0aGUgbG9jayBpcyB1bmxvY2tlZCBiZWZvcmUgdGhlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
LmgKaW5kZXggZWExOGY5M2Q2NjY4NDY4MDNhZjMzMzE3ZmI5OTMxZmQ3ZWZkMGU2ZS4uYzU2MGFm
MGUwZGIwM2I5NzU2MTM2NTU5NjJmNDA0Y2I0NjdlMTMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaApA
QCAtNTksMTAgKzU5LDEwIEBAIE9wdGlvbmFsPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0czo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAKICAgICByZXN1bHQu
bWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlm
ICghcmVzdWx0Lm1lc3NhZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50
cmFuc2ZlcnJlZFBvcnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRl
eCBkOWJiNzBjNDExM2QzYzRmZTI0ZTcxOTExNThkNTUzMTYwMTJkMDdjLi44ZTQzNTVmZDQ4NTc4
Nzc3NDVmMDc4NTU2MTg0MTU2YjRmOTY1ZmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBA
QCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnN0YXJ0QWx0ZXJuYXRpdmVUZXh0VUlU
aW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlCiAKICAgICAvLyBJZiB0eXBlIGlzIFBhbmVsVHlwZVJl
dmVyc2lvbiwgdGhlbiB0aGUgbmV3IHJhbmdlIGhhcyBiZWVuIHNldC4gU28gd2Ugc2hvdWxkbid0
IGNsZWFyIGl0LgogICAgIGlmICh0eXBlID09IEFsdGVybmF0aXZlVGV4dFR5cGVDb3JyZWN0aW9u
KQotICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogICAgIG1fdHlwZSA9IHR5
cGU7CiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoY29ycmVjdGlvblBhbmVsVGltZXJJbnRlcnZh
bCk7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJuYXRpdmVUZXh0VHlwZQogdm9pZCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpzdG9wQWx0ZXJuYXRpdmVUZXh0VUlUaW1lcigpCiB7
CiAgICAgbV90aW1lci5zdG9wKCk7Ci0gICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnN0b3BQZW5kaW5nQ29ycmVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24pCkBAIC0xNDEsNyArMTQxLDcgQEAg
dm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjphcHBseVBlbmRpbmdDb3JyZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHMKICAgICBpZiAoZG9BcHBseUNvcnJlY3Rpb24pCiAgICAg
ICAgIGhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGRpc21pc3NTb29uKFJlYXNvbkZvckRp
c21pc3NpbmdBbHRlcm5hdGl2ZVRleHRBY2NlcHRlZCkpOyAKICAgICBlbHNlCi0gICAgICAgIG1f
cmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcmFuZ2VXaXRo
QWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aGFzUGVuZGluZ0NvcnJlY3Rpb24oKSBjb25zdApAQCAtMjQ0LDcgKzI0NCw3IEBA
IHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6dGltZXJGaXJlZCgpCiAgICAgICAgIFZp
c2libGVQb3NpdGlvbiBwID0gc3RhcnRPZldvcmQoc3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5
KTsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVj
dGlvbihwLCBzdGFydCk7CiAgICAgICAgIGF1dG8gYWRqYWNlbnRXb3JkUmFuZ2UgPSBhZGphY2Vu
dFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCku
bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5
cGU6OlNwZWxsaW5nLCBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5n
VHlwZTo6U2hvd0NvcnJlY3Rpb25QYW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRX
b3JkUmFuZ2UsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1fZG9jdW1lbnQuZWRpdG9yKCkubWFy
a0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh7IFRleHRDaGVja2luZ1R5cGU6
OlNwZWxsaW5nLCBUZXh0Q2hlY2tpbmdUeXBlOjpSZXBsYWNlbWVudCwgVGV4dENoZWNraW5nVHlw
ZTo6U2hvd0NvcnJlY3Rpb25QYW5lbCB9LCBhZGphY2VudFdvcmRSYW5nZSwgYWRqYWNlbnRXb3Jk
UmFuZ2UsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEFs
dGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb246IHsKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBzdWdnZXN0aW9uczsKICAgICAgICAgdGV4dENoZWNrZXIoKS0+Z2V0R3Vlc3Nlc0Zvcldv
cmQobV9vcmlnaW5hbFRleHQsIHBhcmFncmFwaFRleHQsIG1fZG9jdW1lbnQuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCksIHN1Z2dlc3Rpb25zKTsKICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBTdHJpbmcgdG9wU3VnZ2VzdGlv
biA9IHN1Z2dlc3Rpb25zLmZpcnN0KCk7CkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBBbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyOjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBT
dHJpbmcmIHJlc3UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9yYW5nZVdpdGhBbHRl
cm5hdGl2ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gc3Rk
OjpudWxsb3B0OwogfQogCiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmNhbkVuYWJs
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAKaW5kZXggMmFkYWI2Y2Y4ZTE5MzEz
YmE4MWM1NmJlOGNhMjUyYTFkNThmZTAyZi4uMzI5MWFiZTUyZjkxN2YyOGRmMDZjMzU2MWZmZTFl
MTkzZDIxNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0
VHlwZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlzdFR5
cGVDb21tYW5kLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWly
PENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6VHlwZSwgUmVmPEhUTUxFbGVtZW50Pj4+IGxpc3RDbwog
ICAgIGlmIChpczxIVE1MT0xpc3RFbGVtZW50PihsaXN0VG9SZXBsYWNlKSkKICAgICAgICAgcmV0
dXJuIHt7IENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6VHlwZTo6Q29udmVydFRvVW5vcmRlcmVkTGlz
dCwgbGlzdFRvUmVwbGFjZS5yZWxlYXNlTm9uTnVsbCgpIH19OwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxDaGFuZ2VM
aXN0VHlwZUNvbW1hbmQ6OlR5cGU+IENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6bGlzdENvbnZlcnNp
b25UeXBlKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8Q2hh
bmdlTGlzdFR5cGVDb21tYW5kOjpUeXBlPiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6Omxpc3RDb252
ZXJzaW9uVHlwZSgKICAgICAgICAgaWYgKGF1dG8gdHlwZUFuZEVsZW1lbnQgPSBsaXN0Q29udmVy
c2lvblR5cGVGb3JTZWxlY3Rpb24oZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAg
ICAgICAgICAgIHJldHVybiB0eXBlQW5kRWxlbWVudC0+Zmlyc3Q7CiAgICAgfQotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmPEhUTUxF
bGVtZW50PiBDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6OmNyZWF0ZU5ld0xpc3QoY29uc3QgSFRNTEVs
ZW1lbnQmIGxpc3RUb1JlcGxhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IGJjMjM0YTcyYzJjNGE0YzNlMjBkMWVlMzY4Y2NkOTU4
NDc3MGEzMzMuLjc2ZWQxMTVjYjViNmFiZTE1ZmE3MmE5NWUxMzBmNzg3MDRjYmM3OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCkBAIC0x
NTQ5LDcgKzE1NDksNyBAQCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0oKQogewogICAgIGF1dG8gZW1w
dHlMaXN0SXRlbSA9IGVuY2xvc2luZ0VtcHR5TGlzdEl0ZW0oZW5kaW5nU2VsZWN0aW9uKCkudmlz
aWJsZVN0YXJ0KCkpOwogICAgIGlmICghZW1wdHlMaXN0SXRlbSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbGlz
dE5vZGUgPSBlbXB0eUxpc3RJdGVtLT5wYXJlbnROb2RlKCk7CiAgICAgLy8gRklYTUU6IENhbid0
IHdlIGRvIHNvbWV0aGluZyBiZXR0ZXIgd2hlbiB0aGUgaW1tZWRpYXRlIHBhcmVudCB3YXNuJ3Qg
YSBsaXN0IG5vZGU/CkBAIC0xNTU3LDcgKzE1NTcsNyBAQCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0
aW9uPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6c2hvdWxkQnJlYWtPdXRPZkVtcHR5TGlzdEl0ZW0o
KQogICAgICAgICB8fCAoIWxpc3ROb2RlLT5oYXNUYWdOYW1lKHVsVGFnKSAmJiAhbGlzdE5vZGUt
Pmhhc1RhZ05hbWUob2xUYWcpKQogICAgICAgICB8fCAhbGlzdE5vZGUtPmhhc0VkaXRhYmxlU3R5
bGUoKQogICAgICAgICB8fCBsaXN0Tm9kZSA9PSBlbXB0eUxpc3RJdGVtLT5yb290RWRpdGFibGVF
bGVtZW50KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdTZWxlY3Rp
b24oKS5zdGFydCgpLnByZXZpb3VzKEJhY2t3YXJkRGVsZXRpb24pLCBlbmRpbmdTZWxlY3Rpb24o
KS5lbmQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0
aW9uSGlnaGxpZ2h0LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0aW9uSGlnaGxp
Z2h0LmgKaW5kZXggZjQ2ZDAxZGU5NDkxMTI1NTc1ODgzZTk3M2UxYzUxODZmODcxYTFiMC4uNjVm
MTZlZmI2ODRjMTdhMGM1ZWNhMDMzOTgyOTc4MjcyYTUwODg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGlvbkhpZ2hsaWdodC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaApAQCAtNjcsMTcgKzY3LDE3IEBAIE9w
dGlvbmFsPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiBDb21wb3NpdGlvbkhpZ2hsaWdodDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IHN0YXJ0T2Zmc2V0Owog
ICAgIGRlY29kZXIgPj4gc3RhcnRPZmZzZXQ7CiAgICAgaWYgKCFzdGFydE9mZnNldCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBlbmRPZmZz
ZXQ7CiAgICAgaWYgKCFlbmRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7
CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHt7ICpzdGFydE9mZnNldCwgKmVuZE9mZnNldCwgKmNvbG9yIH19OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDA2MThkNzYxOGJkNWNiMGZlNDBjZTQ3YzYy
MjdmZGQzYWE5YWJkMTguLmYzMDYxMzg5N2VkZTE0MTM1NDhlZWJjZjRjMTY2YTY5ZmJmMmNmYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTU2MywxNyArNTYz
LDE3IEBAIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBFZGl0aW5nU3R5bGU6OnN0eWxlV2l0
aFJlc29sdmVkVGV4dERlY29yYXRpb25zKCkgY29uCiBPcHRpb25hbDxXcml0aW5nRGlyZWN0aW9u
PiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghbV9tdXRh
YmxlU3R5bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHVuaWNvZGVCaWRpID0gbV9tdXRh
YmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7CiAg
ICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odW5pY29kZUJpZGkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ1NT
VmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1
bmljb2RlQmlkaSkudmFsdWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1Zh
bHVlRW1iZWQpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFi
bGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAg
ICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGRpcmVjdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUx0ciA/IFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0IDog
V3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ7CiAgICAgfQpAQCAtNTgxLDcgKzU4MSw3IEBA
IE9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbigp
IGNvbnN0CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAg
ICAgIHJldHVybiBXcml0aW5nRGlyZWN0aW9uOjpOYXR1cmFsOwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEVkaXRpbmdTdHls
ZTo6c2V0U3R5bGUoUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+JiYgc3R5bGUpCkBAIC0x
NjExLDcgKzE2MTEsNyBAQCBSZWY8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OmludmVyc2VU
cmFuc2Zvcm1Db2xvcklmTmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgYXV0byBjb2xvckZv
clByb3BlcnR5SWZJbnZlcnRpYmxlID0gWyZdKENTU1Byb3BlcnR5SUQgaWQpIC0+IE9wdGlvbmFs
PENvbG9yPiB7CiAgICAgICAgIGF1dG8gY29sb3IgPSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlB
c0NvbG9yKGlkKTsKICAgICAgICAgaWYgKCFjb2xvciB8fCAhY29sb3ItPmlzVmlzaWJsZSgpIHx8
IGNvbG9yLT5pc1NlbWFudGljKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGNvbG9yOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0NTk3YmRlYTVkOTNkN2Nk
M2FmMTgwMWMzZjU5MjgwZmI5MzYzOWMzLi41ZDgxYzJmMjU2NzQ1YjY5NTM5OWQ5MjA1Y2U3YWQw
YjVmYWY5YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNjMzLDM0ICsyNjMz
LDM0IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NPckJh
ZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1
c2VkIG9ubHkgZm9yIGFzLXlvdS10eXBlIGNoZWNraW5nLCBzbyBpZiB0aGF0J3Mgb2ZmIHdlIGRv
IG5vdGhpbmcuIE5vdGUgdGhhdAogICAgIC8vIGdyYW1tYXIgY2hlY2tpbmcgY2FuIG9ubHkgYmUg
b24gaWYgc3BlbGwgY2hlY2tpbmcgaXMgYWxzbyBvbi4KICAgICBpZiAoIWlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYXV0byBzZWFyY2hSYW5nZSA9IHNl
bGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGlmICghc2VhcmNoUmFuZ2UpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgLy8gSWYgd2UncmUgbm90IGluIGFuIGVkaXRhYmxlIG5vZGUsIGJhaWwuCiAgICAg
Tm9kZSYgZWRpdGFibGVOb2RlID0gc2VhcmNoUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAg
aWYgKCFlZGl0YWJsZU5vZGUuaGFzRWRpdGFibGVTdHlsZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpc1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkRm9yKCZlZGl0YWJsZU5vZGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gR2V0IHRo
ZSBzcGVsbCBjaGVja2VyIGlmIGl0IGlzIGF2YWlsYWJsZQogICAgIGlmICghY2xpZW50KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgVGV4dENoZWNraW5nSGVscGVyIGNoZWNrZXIoKmNsaWVudCgpLCAqc2VhcmNo
UmFuZ2UpOwogICAgIGlmIChjaGVja1NwZWxsaW5nKQogICAgICAgICByZXR1cm4gY2hlY2tlci5t
YXJrQWxsTWlzc3BlbGxlZFdvcmRzKCk7CiAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpKQogICAgICAgICBjaGVja2VyLm1hcmtBbGxVbmdyYW1tYXRpY2FsUGhyYXNlcygpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKGNoZWNrU3BlbGxp
bmcpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogfQogCkBAIC0zMDk1LDEzICszMDk1LDEzIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdl
PiBFZGl0b3I6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewog
ICAgIGF1dG8gZG9jdW1lbnQgPSBtX2RvY3VtZW50LmZyYW1lKCktPmRvY3VtZW50QXRQb2ludCh3
aW5kb3dQb2ludCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lID0gZG9j
dW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZyYW1lVmlldyA9
IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24geyBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVWaWV3LT53
aW5kb3dUb0NvbnRlbnRzKHdpbmRvd1BvaW50KSkgfS50b05vcm1hbGl6ZWRSYW5nZSgpOwogfQog
CkBAIC0zMTMyLDEyICszMTMyLDEyIEBAIHZvaWQgRWRpdG9yOjpzZXRJZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzKGJvb2wgaWdub3JlLCBSZXZlYWxTZWxlY3Rpb24gc2hvdWxkUmV2ZWFsCiBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpjb21wb3NpdGlvblJhbmdlKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fY29tcG9zaXRpb25Ob2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fY29tcG9z
aXRpb25Ob2RlLT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bWluKG1fY29t
cG9zaXRpb25TdGFydCwgbGVuZ3RoKTsKICAgICB1bnNpZ25lZCBlbmQgPSBzdGQ6OmNsYW1wKG1f
Y29tcG9zaXRpb25FbmQsIHN0YXJ0LCBsZW5ndGgpOwogICAgIGlmIChzdGFydCA+PSBlbmQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHsgeyB7ICptX2NvbXBvc2l0aW9uTm9kZSwgc3RhcnQgfSwgeyAqbV9jb21w
b3NpdGlvbk5vZGUsIGVuZCB9IH0gfTsKIH0KIApAQCAtMzUxNiw3ICszNTE2LDcgQEAgc3RhdGlj
IFNpbXBsZVJhbmdlIGNvbGxhcHNlSWZSb290c0RpZmZlcihTaW1wbGVSYW5nZSYmIHJhbmdlKQog
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZWZlcmVuY2VSYW5nZSwgRmlu
ZE9wdGlvbnMgb3B0aW9ucykKIHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIFN0YXJ0IGZyb20gYW4gZWRnZSBvZiB0aGUgcmVmZXJlbmNlIHJhbmdlLCBpZiB0aGVyZSdz
IGEgcmVmZXJlbmNlIHJhbmdlIHRoYXQncyBub3QgaW4gc2hhZG93IGNvbnRlbnQuIFdoaWNoIGVk
Z2UKICAgICAvLyBpcyB1c2VkIGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBzZWFyY2hpbmcgZm9y
d2FyZCBvciBiYWNrd2FyZCwgYW5kIHdoZXRoZXIgc3RhcnRJblNlbGVjdGlvbiBpcyBzZXQuCkBA
IC0zNTU5LDcgKzM1NTksNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5nZU9m
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbAogICAgICAgICAvLyB0
aGlzIHNob3VsZCBiZSBhIHN1Y2Nlc3MgY2FzZSBpbnN0ZWFkLCBzbyB3ZSdsbCBqdXN0IGZhbGwg
dGhyb3VnaCBpbiB0aGF0IGNhc2UuCiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdFJhbmdlLmNv
bGxhcHNlZCgpID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKHJlc3VsdFJhbmdlKTsKKyAg
ICByZXR1cm4gcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om1h
a2Vfb3B0aW9uYWwocmVzdWx0UmFuZ2UpOwogfQogCiBzdGF0aWMgYm9vbCBpc0ZyYW1lSW5SYW5n
ZShGcmFtZSYgZnJhbWUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKQEAgLTM5NDksMTAgKzM5
NDksMTAgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6Y29udGV4dFJhbmdlRm9yQ2Fu
ZGlkYXRlUmVxdWVzdCgpIGNvbnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRWRpdG9yOjpyYW5n
ZUZvclRleHRDaGVja2luZ1Jlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCkg
Y29uc3QKIHsKICAgICBpZiAoIXJlc3VsdC5yYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBjb250
ZXh0UmFuZ2UgPSBjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCk7CiAgICAgaWYgKCFj
b250ZXh0UmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqY29udGV4
dFJhbmdlLCByZXN1bHQucmFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA3
OGYzZWM4YWRiYjEyOWI0MzkwNGQ4Y2NjYzhkYzZlNTU4OTljZjNiLi45MmRiNGViYjk5NDQ2ODA4
YzJlYmJiYTQ5OGI1NmZhY2YzZjYyZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEy
Niw3ICsxMjYsNyBAQCBlbnVtIGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbiA6IHVpbnQ4
X3QgewogCiBjbGFzcyBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UgewogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShEb2N1bWVudCYsIE9wdGlvbmFs
PFZpc2libGVTZWxlY3Rpb24+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uPiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlKERvY3VtZW50JiwgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51
bGxvcHQsIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB+VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CkBA
IC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKIGNsYXNzIElnbm9yZVNlbGVjdGlvbkNoYW5nZUZv
clNjb3BlIHsKIHB1YmxpYzoKICAgICBJZ25vcmVTZWxlY3Rpb25DaGFuZ2VGb3JTY29wZShGcmFt
ZSYgZnJhbWUpCi0gICAgICAgIDogbV9zZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLmRvY3VtZW50KCks
IFdURjo6bnVsbG9wdCwgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25D
aGFuZ2VzKQorICAgICAgICA6IG1fc2VsZWN0aW9uQ2hhbmdlKCpmcmFtZS5kb2N1bWVudCgpLCBz
dGQ6Om51bGxvcHQsIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6SWdub3JlU2VsZWN0aW9uQ2hh
bmdlcykKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZvbnRBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVz
LmgKaW5kZXggNjJhYjE2NWU5ZmE0ZWFjYzY4ZWFmZDNkMTA2MWZlZWFmNTkzMTdmOS4uZmYyZjIy
Njk2MmVlMmIwMDM1NzQxYmY5M2MyMDE2ZmEwNWY4MDQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9udEF0dHJpYnV0ZXMuaApAQCAtNTksMTcgKzU5LDE3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGlubGluZSBPcHRpb25hbDxUZXh0TGlzdD4gVGV4dExpc3Q6OmRlY29kZShEZWNvZGVy
JiBkZWNvCiAgICAgT3B0aW9uYWw8dWludDhfdD4gc3R5bGU7CiAgICAgZGVjb2RlciA+PiBzdHls
ZTsKICAgICBpZiAoIXN0eWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8aW50PiBzdGFydGluZ0l0ZW1O
dW1iZXI7CiAgICAgZGVjb2RlciA+PiBzdGFydGluZ0l0ZW1OdW1iZXI7CiAgICAgaWYgKCFzdGFy
dGluZ0l0ZW1OdW1iZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBvcmRlcmVkOwogICAgIGRl
Y29kZXIgPj4gb3JkZXJlZDsKICAgICBpZiAoIW9yZGVyZWQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
c3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4oV1RGTW92ZSgqc3R5bGUpKSwgV1RGTW92ZSgqc3Rh
cnRpbmdJdGVtTnVtYmVyKSwgV1RGTW92ZSgqb3JkZXJlZCkgfX07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGFkMzIyMjc0YWMxMjhhMTIyYzJkMzE0
ZmM3MDkxMTc1MTU2MWJiOWIuLjI0ZGU4ZDdkMGFiMDJmZjBmZGE1NzdmMTg4NmJiNTk2YTk2NjY0
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC00MTAs
NyArNDEwLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0
aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW8KIAogICAgIC8vIEFsd2F5cyBjbGVh
ciB0aGUgeCBwb3NpdGlvbiB1c2VkIGZvciB2ZXJ0aWNhbCBhcnJvdyBuYXZpZ2F0aW9uLgogICAg
IC8vIEl0IHdpbGwgYmUgcmVzdG9yZWQgYnkgdGhlIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24g
Y29kZSBpZiBuZWNlc3NhcnkuCi0gICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24g
PSBXVEY6Om51bGxvcHQ7CisgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBz
dGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0
ZWQoKTsKICAgICBtX2RvY3VtZW50LT5lZGl0b3IoKS5yZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KG9sZFNlbGVjdGlvbiwgb3B0aW9ucyk7CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3Nl
bGVjdGlvbi1hcGkvI3NlbGVjdGlvbmNoYW5nZS1ldmVudApAQCAtMjUyNywxMiArMjUyNywxMiBA
QCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rpb246OmVsZW1lbnRSYW5nZUNvbnRh
aW5pbmdDYXJldFNlbGVjdGlvbigpIGNvbgogewogICAgIGF1dG8gZWxlbWVudCA9IGRlcHJlY2F0
ZWRFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KG1fc2VsZWN0aW9uLnZpc2libGVTdGFydCgpLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgaWYgKCFlbGVtZW50KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byBzdGFydCA9IFZpc2libGVQb3NpdGlvbihtYWtlQ29udGFpbmVyT2Zmc2V0UG9z
aXRpb24oZWxlbWVudCwgMCkpOwogICAgIGF1dG8gZW5kID0gVmlzaWJsZVBvc2l0aW9uKG1ha2VD
b250YWluZXJPZmZzZXRQb3NpdGlvbihlbGVtZW50LCBlbGVtZW50LT5jb3VudENoaWxkTm9kZXMo
KSkpOwogICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9uOwogICAgIHNlbGVjdGlvbi5zZXRCYXNlKHN0YXJ0
KTsKQEAgLTI3NTEsNyArMjc1MSw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNlbGVjdGlvbkF0
U2VudGVuY2VTdGFydCgpIGNvbnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWVTZWxlY3Rp
b246OnJhbmdlQnlBbHRlcmluZ0N1cnJlbnRTZWxlY3Rpb24oRUFsdGVyYXRpb24gYWx0ZXJhdGlv
biwgaW50IGFtb3VudCkgY29uc3QKIHsKICAgICBpZiAobV9zZWxlY3Rpb24uaXNOb25lKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoIWFtb3VudCkKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hl
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5kZXgg
MTQ4OTNmMWY0OWRhNGVkOTY0ZTBhYzM2Y2ZmNDYxYmVlZjE0YzE1Ny4uNTkxMDVkOTM3ZTQ2OWYy
ZWRhMTkyZWIwYWNjYTgyNjhhMmMzZTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcApAQCAtNDgsNyArNDgsNyBAQCBTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVj
a1JlcXVlc3QoY29uc3QgU2ltcGxlUmFuZ2UmIGNoZWNraW5nUmFuZ2UsIGNvbnN0IFNpbQogICAg
ICwgbV9hdXRvbWF0aWNSZXBsYWNlbWVudFJhbmdlKGF1dG9tYXRpY1JlcGxhY2VtZW50UmFuZ2Up
CiAgICAgLCBtX3BhcmFncmFwaFJhbmdlKHBhcmFncmFwaFJhbmdlKQogICAgICwgbV9yb290RWRp
dGFibGVFbGVtZW50KG1fY2hlY2tpbmdSYW5nZS5zdGFydC5jb250YWluZXItPnJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSkKLSAgICAsIG1fcmVxdWVzdERhdGEoV1RGOjpudWxsb3B0LCB0ZXh0LCBvcHRp
b25zLCB0eXBlKQorICAgICwgbV9yZXF1ZXN0RGF0YShzdGQ6Om51bGxvcHQsIHRleHQsIG9wdGlv
bnMsIHR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAppbmRleCA5MjE2YzU4YWIwM2E0ZDkzZDU4Y2Y5MmRkODQwNjA5NWI3ZTNjNzEw
Li44ZjcxNWY0ZjEwOGE2N2Y1NDYzYTM2YzZmYjE5MmIxZjVhZjkxZTMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgdm9pZCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OmludmFsaWRhdGVQYXJhZ3JhcGhSYW5nZVZh
bHVlcygpCiAgICAgbV9jaGVja2luZ1N0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBs
YWNlbWVudFN0YXJ0LnJlc2V0KCk7CiAgICAgbV9hdXRvbWF0aWNSZXBsYWNlbWVudExlbmd0aC5y
ZXNldCgpOwotICAgIG1fb2Zmc2V0QXNSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX29mZnNl
dEFzUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV90ZXh0ID0gU3RyaW5nKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggNDE5MWI0ZGM4ZDgwY2I4OWRlYTVhODBhMDk3ZWZjMTQwYjAwNGFjYy4uZDA2
MzBlMzJkYzkwZTQ3Y2U2YzQ0NmNiMDY2NGU4MTkxMmQ0YmY3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEw
OCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUudHlwZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTY1LDcgKzE2NSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYWR2YW5jZSgpCiAgICAgewotICAgICAgICBtX3RleHQgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIG1fdGV4dCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5j
ZU5vZGUoKTsKIAogICAgICAgICBpZiAoc2hvdWxkQWR2YW5jZUl0ZXJhdG9yUGFzdEN1cnJlbnRO
b2RlKCkpCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGJvb2wgYXJlRXF1YWxJZ25vcmluZ0xl
YWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzKGNvbnN0IFN0cmluZyYgY29udGVudCwKIHN0YXRp
YyBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5J
bmZvPiB0b2tlbkluZm8oTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvIHJlc3VsdDsK
ICAgICByZXN1bHQuZG9jdW1lbnRVUkwgPSBub2RlLT5kb2N1bWVudCgpLnVybCgpOwpAQCAtNzgx
LDcgKzc4MSw3IEBAIGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29u
c3QgTWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0CiAgICAgICAgICAgICBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkuc2V0VmFsdWUobmV3VmFsdWUudG9TdHJpbmco
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShpdGVt
LmF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlLnRvU3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHNp
emVfdCBjdXJyZW50VG9rZW5JbmRleCA9IDA7CkBAIC05MjgsNyArOTI4LDcgQEAgYXV0byBUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtRGF0
YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWROb2Rlcy5hZGQoaW5zZXJ0
aW9uLmNoaWxkLmdldCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6OnJlbW92ZU5vZGUoTm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAppbmRleCA3YzBiNmRjODZlZjczZjE2M2I3
ZGY2MTVlYjJlMThkODNmYWZlYTk2Li4xYmMwMTgxYmFmYjRlZTRmYTJiZTcxZTU4YzVlNGQyZWZl
M2Q3ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5oCkBAIC0yMTMsMTYgKzIxMywxNiBAQCBPcHRpb25hbDxUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5JbmZvPiBUZXh0TWFuaXB1bGF0aW9u
Q29udAogewogICAgIE1hbmlwdWxhdGlvblRva2VuSW5mbyByZXN1bHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQudGFnTmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5yb2xlQXR0cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmRvY3VtZW50VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmlz
VmlzaWJsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMjM4LDEzICsyMzgsMTMg
QEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
PiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGwKIHsKICAgICBNYW5pcHVsYXRpb25Ub2tlbiByZXN1
bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aXNFeGNsdWRlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjU5LDkgKzI1OSw5
IEBAIE9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVt
PiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlCiB7CiAgICAgTWFuaXB1bGF0aW9uSXRlbSByZXN1
bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudG9rZW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0yNzYsOSArMjc2LDkgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6OkV4Y2x1c2lvblJ1bGU+IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjoKIHsKICAg
ICBFeGNsdXNpb25SdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ydWxlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yOTMsNyArMjkzLDcgQEAgT3B0aW9uYWw8VGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OkVsZW1lbnRSdWxlPiBUZXh0TWFuaXB1
bGF0aW8KIHsKICAgICBFbGVtZW50UnVsZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQubG9jYWxOYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMDgs
OSArMzA4LDkgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lv
blJ1bGU6OkF0dHJpYnV0ZVJ1bGU+IFRleHRNYW5pcHVsYXQKIHsKICAgICBBdHRyaWJ1dGVSdWxl
IHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIE9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpFeGNsdXNpb25SdWxlOjpDbGFzc1J1bGU+IFRleHRNYW5pcHVsYXRpb25DCiB7CiAgICAg
Q2xhc3NSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGFzc05h
bWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTM0MCwxMSArMzQwLDExIEBAIE9w
dGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlPiBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvCiB7CiAgICAgTWFuaXB1bGF0aW9uRmFpbHVyZSByZXN1bHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCmluZGV4IGY5YThlMWQ4YjIyNzk3NDRl
ZTJkMmE1NTk1OGUyMDU0MjQ0YzgxZmYuLjMxNzY0ZGU2ZmFhYTRkZWIyOTQwNjA2ZTFkZDM4ZWI5
YjQ5NDlhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIFJlZlB0cjxEb2N1bWVudD4gVmlzaWJsZVNlbGVjdGlvbjo6
ZG9jdW1lbnQoKSBjb25zdAogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2libGVTZWxlY3Rpb246
OmZpcnN0UmFuZ2UoKSBjb25zdAogewogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgLy8gRklYTUU6IFNlZW1zIGxpa2VseSB3ZSBkb24ndCBuZWVkIHRvIGNhbGwgcGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50IGhlcmUuCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShtX3N0YXJ0
LnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBtX2VuZC5wYXJlbnRBbmNob3JlZEVxdWl2YWxl
bnQoKSk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZpc2li
bGVTZWxlY3Rpb246OmZpcnN0UmFuZ2UoKSBjb25zdAogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFZp
c2libGVTZWxlY3Rpb246OnRvTm9ybWFsaXplZFJhbmdlKCkgY29uc3QKIHsKICAgICBpZiAoaXNO
b25lT3JPcnBoYW5lZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgYW4gdXBkYXRl
ZCBsYXlvdXQgc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKICAgICAvLyBpbiB0aGUgY291
cnNlIG9mIHJ1bm5pbmcgZWRpdCBjb21tYW5kcyB3aGljaCBtb2RpZnkgdGhlIERPTS4KQEAgLTE4
MCw3ICsxODAsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9O
b3JtYWxpemVkUmFuZ2UoKSBjb25zdAogCiAgICAgLy8gQ2hlY2sgYWdhaW4sIGJlY2F1c2UgdXBk
YXRpbmcgbGF5b3V0IGNhbiBjbGVhciB0aGUgc2VsZWN0aW9uLgogICAgIGlmIChpc05vbmVPck9y
cGhhbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBQb3NpdGlvbiBzLCBlOwogICAgIGlmIChpc0NhcmV0KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0MWFjNGM0ZTRiM2Y5
ODVjMjk1YjNlODY2NDM1ZTE0ZGNiY2Y2ZTYwLi5iYzk5ZmQ1OTFmYWQwZmE1MTE2NmNhNWUzYmE0
YzlkYTE1ODRmZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVV
bml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBA
IC0xNzQyLDcgKzE3NDIsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZW5jbG9zaW5nVGV4dFVu
aXRPZkdyYW51bGFyaXR5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdnAsCiB7CiAgICAgLy8gVGhp
cyBpcyBwYXJ0aWN1bGFybHkgaW5lZmZpY2llbnQuICBXZSBjb3VsZCBlYXNpbHkgb2J0YWluIHRo
ZSBhbnN3ZXIgd2l0aCB0aGUgYm91bmRhcmllcyBjb21wdXRlZCBiZWxvdy4KICAgICBpZiAoIXdp
dGhpblRleHRVbml0T2ZHcmFudWxhcml0eSh2cCwgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcHJldkJvdW5kYXJ5OwogICAgIFZpc2libGVQb3NpdGlv
biBuZXh0Qm91bmRhcnk7CkBAIC0xNzk0LDE0ICsxNzk0LDE0IEBAIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2cCwKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAocHJldkJvdW5kYXJ5LmlzTnVsbCgpIHx8
IG5leHRCb3VuZGFyeS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh2cCA8IHByZXZCb3VuZGFyeSB8
fCB2cCA+IG5leHRCb3VuZGFyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UocHJl
dkJvdW5kYXJ5LCBuZXh0Qm91bmRhcnkpOwogfQpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBj
aGFyYWN0ZXJzQXJvdW5kUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwg
VUNoYXIzMiYgb25lQWZ0ZXIKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiB3b3JkUmFuZ2VGcm9tUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAocG9zaXRp
b24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0byByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0
T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgVGV4dEdyYW51bGFyaXR5OjpXb3JkR3JhbnVsYXJpdHks
IFNlbGVjdGlvbkRpcmVjdGlvbjo6QmFja3dhcmQpKQogICAgICAgICByZXR1cm4gcmFuZ2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRvZmlsbEVsZW1lbnRzLmNwcApp
bmRleCA0NjZlYWQyYWU3NDNhYzlkODlkMzhjNGEwN2RiMDBkNTlkZWI4NzRkLi4wYTgwMjhiZWRm
OGI5Y2EzNWM4NzExZjI4MGViYjgyMDUxMzZjMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgQXV0
b2ZpbGxFbGVtZW50czo6QXV0b2ZpbGxFbGVtZW50cyhSZWZQdHI8SFRNTElucHV0RWxlbWVudD4m
JiB1c2VybmFtZSwgUmVmUHRyPEgKIE9wdGlvbmFsPEF1dG9maWxsRWxlbWVudHM+IEF1dG9maWxs
RWxlbWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5wdXRFbGVtZW50PiBz
dGFydCkKIHsKICAgICBpZiAoIXN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBGb2N1
c0NvbnRyb2xsZXImIGZvY3VzQ29udHJvbGxlciA9IHN0YXJ0LT5kb2N1bWVudCgpLnBhZ2UoKS0+
Zm9jdXNDb250cm9sbGVyKCk7CiAgICAgaWYgKHN0YXJ0LT5pc1Bhc3N3b3JkRmllbGQoKSkgewog
ICAgICAgICBhdXRvIHByZXZpb3VzRWxlbWVudCA9IHByZXZpb3VzQXV0b2ZpbGxhYmxlRWxlbWVu
dChzdGFydC5wdHIoKSwgZm9jdXNDb250cm9sbGVyKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBPcHRp
b25hbDxBdXRvZmlsbEVsZW1lbnRzPiBBdXRvZmlsbEVsZW1lbnRzOjpjb21wdXRlQXV0b2ZpbGxF
bGVtZW50cyhSZWY8SFRNTElucAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEF1dG9maWxsRWxl
bWVudHM6OmF1dG9maWxsKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IDIxZTc0NGM4
Yzk3OTMxNGI1YjM0YjFhOGRjYzk2NTI4MGU5NDI3MjcuLjUwZTQ2Yzk1ZjJhOTI2MjQ2MzQ3ZWU5
ODk3ZDYxNWRhYTliNTAzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0Rh
dGFEZXRlY3Rpb24ubW0KQEAgLTIwMywxMiArMjAzLDEyIEBAIGJvb2wgRGF0YURldGVjdGlvbjo6
Y2FuUHJlc2VudERhdGFEZXRlY3RvcnNVSUZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKIAog
ICAgIGF1dG8gcmVzdWx0SW5kaWNlcyA9IFN0cmluZ1ZpZXcgeyByZXN1bHRBdHRyaWJ1dGUgfS5z
cGxpdCgnLycpOwogICAgIGF1dG8gaW5kZXhJdGVyYXRvciA9IHJlc3VsdEluZGljZXMuYmVnaW4o
KTsKLSAgICBhdXRvIHJlc3VsdCA9IFtyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oKmluZGV4SXRlcmF0b3IpLnZhbHVlT3IoMCldIGNvcmVSZXN1bHRdOworICAg
IGF1dG8gcmVzdWx0ID0gW3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
aW50PigqaW5kZXhJdGVyYXRvcikudmFsdWVfb3IoMCldIGNvcmVSZXN1bHRdOwogCiAgICAgLy8g
SGFuZGxlIHRoZSBjYXNlIG9mIGEgc2lnbmF0dXJlIGJsb2NrLCB3aGVyZSB3ZSBuZWVkIHRvIGZv
bGxvdyB0aGUgcGF0aCBkb3duIG9uZSBvciBtb3JlIHN1YnJlc3VsdCBsZXZlbHMuCiAgICAgd2hp
bGUgKCsraW5kZXhJdGVyYXRvciAhPSByZXN1bHRJbmRpY2VzLmVuZCgpKSB7CiAgICAgICAgIHJl
c3VsdHMgPSAoX19icmlkZ2UgTlNBcnJheSAqKVBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc0Nv
cmVfRERSZXN1bHRHZXRTdWJSZXN1bHRzKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IChfX2Jy
aWRnZSBERFJlc3VsdFJlZilyZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oKmluZGV4SXRlcmF0b3IpLnZhbHVlT3IoMCldOworICAgICAgICByZXN1bHQgPSAoX19i
cmlkZ2UgRERSZXN1bHRSZWYpcmVzdWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KCppbmRleEl0ZXJhdG9yKS52YWx1ZV9vcigwKV07CiAgICAgfQogCiAgICAgcmV0dXJu
IFBBTDo6c29mdExpbmtfRGF0YURldGVjdG9yc0NvcmVfRERTaG91bGRJbW1lZGlhdGVseVNob3dB
Y3Rpb25TaGVldEZvclJlc3VsdChyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCmluZGV4IGE0MGUwZmQ1YTM0NzRiNzQzN2QzZDk4
ZjdkN2M2MTQzM2I5ODk4YmQuLjUwNjJiY2I4ODI1NmJlZWZmOTc2OTUxM2FlNmJjMDJiODliZGUw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxv
b2t1cC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlMb29r
dXAubW0KQEAgLTI2Nyw3ICsyNjcsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdl
LCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgaWYgKCFjYW5DcmVhdGVSZXZlYWxJdGVt
cygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByYW5nZSB3ZSB3YW50
LCB3ZSBqdXN0IG5lZWQgdG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9ucy4KICAgICBhdXRvIHNl
bGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwpAQCAtMjc3LDcgKzI3Nyw3
IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGlj
dGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiAgICAgYXV0byBwYXJhZ3JhcGhTdGFydCA9IHN0
YXJ0T2ZQYXJhZ3JhcGgoc2VsZWN0aW9uU3RhcnQpOwogICAgIGF1dG8gcGFyYWdyYXBoRW5kID0g
ZW5kT2ZQYXJhZ3JhcGgoc2VsZWN0aW9uRW5kKTsKICAgICBpZiAocGFyYWdyYXBoU3RhcnQuaXNO
dWxsKCkgfHwgcGFyYWdyYXBoRW5kLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsZW5ndGhUb1Nl
bGVjdGlvblN0YXJ0ID0gY2hhcmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShwYXJhZ3JhcGhT
dGFydCwgc2VsZWN0aW9uU3RhcnQpKTsKICAgICBhdXRvIHNlbGVjdGlvbkNoYXJhY3RlckNvdW50
ID0gY2hhcmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0
aW9uRW5kKSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVS
YW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKIAog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1w
bGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVz
dFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQpAQCAtMjk5LDIwICsy
OTksMjAgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+
PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKICAgICAKICAgICBpZiAoIWNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgYXV0byogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAg
ICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogZnJhbWUg
PSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG5vIGNoYXJhY3RlciBhdCB0aGUgcG9pbnQu
CiAgICAgYXV0byBmcmFtZVBvaW50ID0gaGl0VGVzdFJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVy
Tm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+cmFuZ2VGb3JQb2ludChmcmFtZVBvaW50KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gcG9zaXRpb24gPSBmcmFtZS0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
ZnJhbWVQb2ludCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQpAQCAtMzMwLDcgKzMzMCw3
IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGlj
dGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFy
ZSBnb2luZyB0byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4KICAgICAg
ICAgZnVsbENoYXJhY3RlclJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJhZ3JhcGgo
c2VsZWN0aW9uU3RhcnQpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAgICAgICAg
aWYgKCFmdWxsQ2hhcmFjdGVyUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzZWxlY3Rpb25S
YW5nZSA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENo
YXJhY3RlclJhbmdlLT5zdGFydCwgc2VsZWN0aW9uU3RhcnQpKSwKICAgICAgICAgICAgIGNoYXJh
Y3RlckNvdW50KCptYWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkp
KTsKQEAgLTM0Myw3ICszNDMsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBO
U0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogICAgICAgICAv
LyBBcyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQg
YmVmb3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCiAgICAgICAgIGZ1bGxDaGFyYWN0ZXJSYW5nZSA9
IHJhbmdlRXhwYW5kZWRBcm91bmRQb3NpdGlvbkJ5Q2hhcmFjdGVycyhwb3NpdGlvbiwgMjUwKTsK
ICAgICAgICAgaWYgKCFmdWxsQ2hhcmFjdGVyUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBz
ZWxlY3Rpb25SYW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogICAgICAgICBoaXRJ
bmRleCA9IGNoYXJhY3RlckNvdW50KCptYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdl
LT5zdGFydCwgcG9zaXRpb24pKTsKQEAgLTM1NSwxMyArMzU1LDEzIEBAIE9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VBdEhpdFRlCiAgICAgYXV0byBoaWdobGlnaHRSYW5nZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NS
Vkl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoVGV4dDppdGVtU3RyaW5nIHNlbGVjdGVkUmFuZ2U6c2Vs
ZWN0ZWRSYW5nZV0pLmdldCgpLmhpZ2hsaWdodFJhbmdlOwogCiAgICAgaWYgKGhpZ2hsaWdodFJh
bmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgfHwgIWhpZ2hsaWdodFJhbmdlLmxlbmd0aCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICByZXR1cm4geyB7IHJlc29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3Rl
clJhbmdlLCBoaWdobGlnaHRSYW5nZSksIG5pbCB9IH07CiAgICAgCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKIH0KIApAQCAtNTIzLDEyICs1MjMsMTIgQEAgV0tSZXZlYWxD
b250cm9sbGVyIERpY3Rpb25hcnlMb29rdXA6OmFuaW1hdGlvbkNvbnRyb2xsZXJGb3JQb3B1cChj
b25zdCBEaWN0aW9uYXIKIAogT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0
aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGVjdGlvbihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGlj
dGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQppbmRleCBkYTAyY2Iy
YzRjZWZmODNhZDQ1NWZmYjJkZWJjNjYyOTk0YTdlNzZmLi5kNDMxZjcyMmUyNGFhYjNiZDE3NzI4
YjQzNThiNzg2OThiNzg2ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCkBAIC00Niw4ICs0Niw4IEBA
IGNvbnN0IFN0cmluZyYgRm9udENoYW5nZXM6OnBsYXRmb3JtRm9udEZhbWlseU5hbWVGb3JDU1Mo
KSBjb25zdAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9udE5hbWVGcm9tRGVzY3JpcHRp
b247CiAKICAgICBGb250RGVzY3JpcHRpb24gZGVzY3JpcHRpb247Ci0gICAgZGVzY3JpcHRpb24u
c2V0SXNJdGFsaWMobV9pdGFsaWMudmFsdWVPcihmYWxzZSkpOwotICAgIGRlc2NyaXB0aW9uLnNl
dFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUgeyBtX2JvbGQudmFsdWVPcihmYWxzZSkgPyA5MDAg
OiA1MDAgfSk7CisgICAgZGVzY3JpcHRpb24uc2V0SXNJdGFsaWMobV9pdGFsaWMudmFsdWVfb3Io
ZmFsc2UpKTsKKyAgICBkZXNjcmlwdGlvbi5zZXRXZWlnaHQoRm9udFNlbGVjdGlvblZhbHVlIHsg
bV9ib2xkLnZhbHVlX29yKGZhbHNlKSA/IDkwMCA6IDUwMCB9KTsKICAgICBpZiAoYXV0byBmb250
ID0gRm9udENhY2hlOjpzaW5nbGV0b24oKS5mb250Rm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBtX2Zv
bnRGYW1pbHkpKQogICAgICAgICBmb250TmFtZUZyb21EZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ1RG
b250Q29weVBvc3RTY3JpcHROYW1lKGZvbnQtPmdldENURm9udCgpKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRleCBkNDVmNWI3NDgwZDU4
M2Q4ZDk5NWZkYjViMjVmZDBjNjAzNjRmZTU3Li42YmZkZjkwNTE3YTU2OTJiOWJhMDYyNDIzMDlm
OTgzMGE2OGJhZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29u
dmVydGVyLm1tCkBAIC05NzksNyArOTc5LDcgQEAgTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVy
Ojpjb21wdXRlZEF0dHJpYnV0ZXNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IH0KIAogICAgICAgICBTdHJpbmcgZm9udFdlaWdodCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVG
b3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udFN0eWxlKTsKLSAgICAgICAgaWYgKGZvbnRX
ZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4oZm9udFdlaWdodCkudmFsdWVPcigwKSA+PSA3MDApIHsKKyAgICAgICAgaWYgKGZv
bnRXZWlnaHQuc3RhcnRzV2l0aCgiYm9sZCIpIHx8IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oZm9udFdlaWdodCkudmFsdWVfb3IoMCkgPj0gNzAwKSB7CiAgICAgICAgICAg
ICAvLyA/Pz8gaGFuZGxlIHdlaWdodCBwcm9wZXJseSB1c2luZyBOU0ZvbnRNYW5hZ2VyCiAgICAg
ICAgICAgICBQbGF0Zm9ybUZvbnQgKm9yaWdpbmFsRm9udCA9IGZvbnQ7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggZGEyOTc5N2I5NTkwODI3MmNmZTU1MzA0ZWE4Y2I4
N2E4YjEwMTEyMS4uNjk5YzQ2ZWMzMThkNDM1NzMwY2E3NDY1NGZhMmIyZTRlMTAwZjM1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KQEAgLTQzMCwxNSArNDMwLDE1IEBAIHN0YXRpYyBPcHRpb25hbDxNYXJrdXBBbmRB
cmNoaXZlPiBleHRyYWN0TWFya3VwQW5kQXJjaGl2ZShTaGFyZWRCdWZmZXImIGJ1ZmZlciwKIHsK
ICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoVVJMKCksIGJ1ZmZl
cik7CiAgICAgaWYgKCFhcmNoaXZlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
bWFpblJlc291cmNlID0gYXJjaGl2ZS0+bWFpblJlc291cmNlKCk7CiAgICAgaWYgKCFtYWluUmVz
b3VyY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIHR5cGUgPSBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCk7CiAg
ICAgaWYgKCFjYW5TaG93TUlNRVR5cGVBc0hUTUwodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTWFy
a3VwQW5kQXJjaGl2ZSB7IFN0cmluZzo6ZnJvbVVURjgobWFpblJlc291cmNlLT5kYXRhKCkuZGF0
YSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpLCBtYWluUmVzb3VyY2UucmVsZWFzZU5v
bk51bGwoKSwgYXJjaGl2ZS5yZWxlYXNlTm9uTnVsbCgpIH07CiB9CkBAIC03MjgsNyArNzI4LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gZmlsZVNpemVGb3JEaXNwbGF5OwogICAgIGlmICghaXNEaXJlY3RvcnkpCi0gICAgICAg
IGZpbGVTaXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3Io
MCk7CisgICAgICAgIGZpbGVTaXplRm9yRGlzcGxheSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBh
dGgpLnZhbHVlX29yKDApOwogCiAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50
SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIGNvbnRlbnRU
eXBlLCBwYXRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGlj
dGlvbmFyeUxvb2t1cExlZ2FjeS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rp
b25hcnlMb29rdXBMZWdhY3kubW0KaW5kZXggOGIxMjA4NTMxNmU2ZTBjNDU2YWNjMDEzMDA1OTY3
NGZjNDViZjJlZi4uMTYyM2U5OWQ2YjEyYjQ4OTFhOWNlYjJmMDJmZmIyMTBhZDVlMTUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2Fj
eS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVn
YWN5Lm1tCkBAIC03Niw3ICs3Niw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2Us
IE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiB7CiAgICAg
YXV0byBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAg
aWYgKCFzZWxlY3RlZFJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRo
ZSByYW5nZSB3ZSB3YW50LCB3ZSBqdXN0IG5lZWQgdG8gZ3JhYiB0aGUgcmV0dXJuZWQgb3B0aW9u
cy4KICAgICBhdXRvIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwpA
QCAtODUsNyArODUsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rp
b25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogICAgIC8vIEFzIGNvbnRl
eHQsIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHN1cnJvdW5kaW5nIHBhcmFncmFwaHMgb2YgdGV4
dC4KICAgICBhdXRvIHBhcmFncmFwaFJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0T2ZQYXJh
Z3JhcGgoc2VsZWN0aW9uU3RhcnQpLCBlbmRPZlBhcmFncmFwaChzZWxlY3Rpb25FbmQpKTsKICAg
ICBpZiAoIXBhcmFncmFwaFJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9ICpt
YWtlU2ltcGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CiAKQEAgLTk5LDE2
ICs5OSwxNiBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkg
Kj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZQogewogICAgIGF1dG8qIG5vZGUgPSBo
aXRUZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCAhbm9k
ZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5m
cmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBp
ZiB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgYXQgdGhlIHBvaW50LgogICAgIGF1dG8gZnJhbWVQb2lu
dCA9IGhpdFRlc3RSZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpOwogICAgIGlm
ICghZnJhbWUtPnJhbmdlRm9yUG9pbnQoZnJhbWVQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvc2l0
aW9uID0gZnJhbWUtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KGZyYW1lUG9pbnQpOwogICAgIGlm
IChwb3NpdGlvbi5pc051bGwoKSkKQEAgLTEyNiwxMSArMTI2LDExIEBAIE9wdGlvbmFsPHN0ZDo6
dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1cDo6cmFu
Z2VBdEhpdFRlCiAgICAgLy8gQXMgY29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSAyNTAgY2hh
cmFjdGVycyBvZiB0ZXh0IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHBvaW50LgogICAgIGF1dG8gZnVs
bENoYXJhY3RlclJhbmdlID0gcmFuZ2VFeHBhbmRlZEFyb3VuZFBvc2l0aW9uQnlDaGFyYWN0ZXJz
KHBvc2l0aW9uLCAyNTApOwogICAgIGlmICghZnVsbENoYXJhY3RlclJhbmdlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byByYW5nZVRvUG9zaXRpb24gPSBtYWtlU2ltcGxlUmFuZ2UoZnVsbENoYXJhY3RlclJhbmdl
LT5zdGFydCwgcG9zaXRpb24pOwogICAgIGlmICghcmFuZ2VUb1Bvc2l0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
TlNSYW5nZSByYW5nZVRvUGFzcyA9IE5TTWFrZVJhbmdlKGNoYXJhY3RlckNvdW50KCpyYW5nZVRv
UG9zaXRpb24pLCAwKTsKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBuaWw7CkBAIC0xMzks
NyArMTM5LDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5
ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICAvLyB0b2tlblJhbmdlIHNv
bWV0aW1lcyByZXR1cm5zIHtOU05vdEZvdW5kLCAwfSBpZiBpdCB3YXMgdW5hYmxlIHRvIGRldGVy
bWluZSBhIGdvb2Qgc3RyaW5nLgogICAgIC8vIEZJWE1FICgxNTkwNjMpOiBXZSBzaG91bGRuJ3Qg
bmVlZCB0byBjaGVjayBmb3IgemVybyBsZW5ndGggaGVyZS4KICAgICBpZiAoZXh0cmFjdGVkUmFu
Z2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCB8fCAhZXh0cmFjdGVkUmFuZ2UubGVuZ3RoKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHsgeyByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoKmZ1bGxDaGFyYWN0ZXJSYW5n
ZSwgZXh0cmFjdGVkUmFuZ2UpLCBvcHRpb25zIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5o
CmluZGV4IGZmYTMyN2U5ZWVjZTU1ZGU1N2YyNDRjZThiNWFhMmZlZWQ4YjY0ZGEuLjI4ZWRiNjE0
ODYzMDQ3MTA0NzQzMTI1MWU3NThiODQwZmRiMmY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhS
ZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgV1RGOjpGdW5jdGlvbjxib29sKAogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7CiBlbnVtIGNs
YXNzIE1TT0xpc3RRdWlya3MgOiBib29sIHsgQ2hlY2tJZk5lZWRlZCwgRGlzYWJsZWQgfTsKLVN0
cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlz
dFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFsPFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZy
YWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXplciA9IFdURjo6bnVsbG9wdCk7CitTdHJpbmcgc2Fu
aXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiwgTVNPTGlzdFF1aXJrcyA9IE1TT0xpc3RRdWlya3M6
OkRpc2FibGVkLCBPcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYp
Pj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwogU3RyaW5nIHNhbml0aXplZE1h
cmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgRG9jdW1l
bnQmLCBNU09MaXN0UXVpcmtzLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWFya3VwKTsKIAogV0VC
Q09SRV9FWFBPUlQgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
Y29uc3QgU2ltcGxlUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYkxvYWRlci5oCmluZGV4IGJmNzMxYzFmOWI1NjJkZDI3ZWM0OWJjMGM3Njg1
Y2ZhZTg1NDUwZjYuLmE0Mjg3Y2RkOTNkNzljZWVlYzE4YTMyZDcxNzc3YWMyMTJmNjNjYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYkxvYWRlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyICYmIG1fY29tcGxl
dGlvbkhhbmRsZXI7IH0KICAgICBTdHJpbmcgc3RyaW5nUmVzdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9sb2FkZXIgPyBtX2xvYWRlci0+c3RyaW5nUmVzdWx0KCkgOiBTdHJpbmcoKTsgfQogICAgIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZGVyID8gbV9sb2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkgOiBudWxscHRyOyB9Ci0g
ICAgT3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9s
b2FkZXIgPyBtX2xvYWRlci0+ZXJyb3JDb2RlKCkgOiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRp
b25hbDxFeGNlcHRpb25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/
IG1fbG9hZGVyLT5lcnJvckNvZGUoKSA6IHN0ZDo6bnVsbG9wdDsgfQogCiBwcml2YXRlOgogICAg
IHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApp
bmRleCA5ZWQyZGU2NTA1MGQwNjhkMGVjYjk5NDY4YmZkYWQ0MzQwMzA1MDhmLi40NzNjMDMxOTkw
ZTE3Y2I3Y2VlYjViM2MzYWVhYjdiNTEyODMzODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgRmlsZTo6RmlsZShEZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHIKIEZpbGU6OkZpbGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBi
bG9iUGFydFZhcmlhbnRzLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBQcm9wZXJ0eUJh
ZyYgcHJvcGVydHlCYWcpCiAgICAgOiBCbG9iKGNvbnRleHQsIFdURk1vdmUoYmxvYlBhcnRWYXJp
YW50cyksIHByb3BlcnR5QmFnKQogICAgICwgbV9uYW1lKGZpbGVuYW1lKQotICAgICwgbV9sYXN0
TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVlT3IoV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQorICAgICwg
bV9sYXN0TW9kaWZpZWREYXRlT3ZlcnJpZGUocHJvcGVydHlCYWcubGFzdE1vZGlmaWVkLnZhbHVl
X29yKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAppbmRleCAwMWJjODJjYTE4ZDJkNDgwOTE4ODFmYTJi
MTBkZTZhOTVhNGMxNzMxLi45Zjc4MDBhZTU0MzNiNjFhOGRkM2Q5MDMyODU3NzM1ZmEzYzEyOWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBmaWxlOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8RmlsZT4gZGVzZXJpYWxpemUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IE9wdGlvbmFsPGludDY0X3Q+JiBsYXN0TW9kaWZpZWQgPSBXVEY6Om51bGxvcHQpCisgICAg
c3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRfdD4mIGxhc3RN
b2RpZmllZCA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAgICAgICAgIGF1dG8gZmlsZSA9IGFkb3B0
UmVmKCpuZXcgRmlsZShkZXNlcmlhbGl6YXRpb25Db250cnVjdG9yLCBjb250ZXh0LCBwYXRoLCBz
cmNVUkwsIHR5cGUsIG5hbWUsIGxhc3RNb2RpZmllZCkpOwogICAgICAgICBmaWxlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDE0Yzhi
ZDUyMWI2N2IwZTI4ODNiNTgwODgwOGU1MWFkY2M0ZjQ0NjIuLjA5YjJhMDM4YmExMmRlOWFjYWU5
NGY2N2NhMTdiMjc1ZTE0YWVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cApAQCAtMjI0LDE2ICsyMjQsMTYgQEAgdm9pZCBGaWxlUmVhZGVyOjpmaXJlRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgdHlwZSkKIE9wdGlvbmFsPFZhcmlhbnQ8U3RyaW5nLCBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4+PiBGaWxlUmVhZGVyOjpyZXN1bHQoKSBjb25zdAogewogICAgIGlmICghbV9s
b2FkZXIgfHwgbV9lcnJvciB8fCBtX3N0YXRlICE9IERPTkUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1fcmVhZFR5
cGUgPT0gRmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpIHsKICAgICAgICAgYXV0
byByZXN1bHQgPSBtX2xvYWRlci0+YXJyYXlCdWZmZXJSZXN1bHQoKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0IH07CiAgICAgfQogICAg
IFN0cmluZyByZXN1bHQgPSBtX2xvYWRlci0+c3RyaW5nUmVzdWx0KCk7CiAgICAgaWYgKHJlc3Vs
dC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyBXVEZNb3ZlKHJlc3VsdCkgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApp
bmRleCBmYTRlODY2Y2FmZWUyODk5MjQ3NDM4OGRlYjFjNjBkOGJiNjQ3MDQwLi45YzcyNjBjNDIy
NjBhNGI1Y2QxYzcxZWFhOWEyYmFlYTgwOGZjNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtODMsMTYgKzgzLDE2IEBA
IE9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkCiAgICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+
IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAg
ICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9iamVjdElkZW50
aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPj4gaXRlbUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiBpdGVtSWRlbnRpZmllcjsKICAgICBpZiAoIWl0ZW1JZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciByZXN1bHQgPSB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlm
aWVyKSwgV1RGTW92ZSgqaXRlbUlkZW50aWZpZXIpIH07CiAgICAgaWYgKCFyZXN1bHQuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA4YzBlMWY1MzBmZDA1NzM3MjAw
YmFjYjU5ODBiZDY1NzgyYTgyMDMwLi4wYWE4M2I5MzdmZGJkMjljZTVhYTc4OTg3NmUxOTIwYWRi
ZTVmZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5
cGU6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXIKICAg
ICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICBwYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJh
bmNlID0gZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoY29tcHV0ZWRTdHlsZSk7CiAKLSAgICBh
dXRvIGRhdGUgPSBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudC52YWx1ZSgpKS52YWx1ZU9y
KERhdGVDb21wb25lbnRzKCkpOworICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50
cyhlbGVtZW50LnZhbHVlKCkpLnZhbHVlX29yKERhdGVDb21wb25lbnRzKCkpOwogICAgIHBhcmFt
ZXRlcnMuaGFzU2Vjb25kRmllbGQgPSBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSk7CiAgICAg
cGFyYW1ldGVycy5oYXNNaWxsaXNlY29uZEZpZWxkID0gc2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmll
bGQoZGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMzM3
OWI4YmNjMmFlNWZkMmNlMmJlOTViZDNjZTMyZDY4OWM5OTU2OS4uMzJjM2I0NGZhYzA1NTE4MGJi
NDU0MDBmNjBiNjc5OTczMDE1OTllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlw
ZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFNpbXBsZUNvbG9yKFN0
cmluZ1ZpZXcgc3RyaW5nKQogc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZVNp
bXBsZUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYgKCFpc1ZhbGlkU2lt
cGxlQ29sb3Ioc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IHRvQVNDSUlIZXhWYWx1ZShzdHJp
bmdbMV0sIHN0cmluZ1syXSksIHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbM10sIHN0cmluZ1s0XSks
IHRvQVNDSUlIZXhWYWx1ZShzdHJpbmdbNV0sIHN0cmluZ1s2XSkgfSB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDg0Zjc5MzkyMWY0M2Y1YTZjNzY3MDJiZWIyMmU5
ZmNlNDdiYTE4MzQuLjY4MDJhMTVmZTY4ZjBlYThlNTk4ODZkZTFkNjEwYzg4OTM5ZDc4NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGF1dG8gRE9N
Rm9ybURhdGE6OmdldChjb25zdCBTdHJpbmcmIG5hbWUpIC0+IE9wdGlvbmFsPEZvcm1EYXRhRW50
cnlWYWx1ZT4KICAgICAgICAgICAgIHJldHVybiBpdGVtLmRhdGE7CiAgICAgfQogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBhdXRvIERP
TUZvcm1EYXRhOjpnZXRBbGwoY29uc3QgU3RyaW5nJiBuYW1lKSAtPiBWZWN0b3I8Rm9ybURhdGFF
bnRyeVZhbHVlPgpAQCAtMTU5LDcgKzE1OSw3IEBAIE9wdGlvbmFsPEtleVZhbHVlUGFpcjxTdHJp
bmcsIERPTUZvcm1EYXRhOjpGb3JtRGF0YUVudHJ5VmFsdWU+PiBET01Gb3JtRGF0YTo6SXRlCiB7
CiAgICAgYXV0byYgaXRlbXMgPSBtX3RhcmdldC0+aXRlbXMoKTsKICAgICBpZiAobV9pbmRleCA+
PSBpdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBpdGVtID0gaXRlbXNbbV9pbmRleCsrXTsK
ICAgICByZXR1cm4gbWFrZUtleVZhbHVlUGFpcihpdGVtLm5hbWUsIGl0ZW0uZGF0YSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKaW5kZXggN2FmMjBhM2Y0YmE5NmMyOGExOTA2ZTUw
OTJjYjhiOTFkYTRjNjg0Yi4uOWE0MTBjNzBlNGMwN2UzYjQzNWE3MGY4ZjFjODBlNjM2MWVmY2Jm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBA
IEV4Y2VwdGlvbk9yPGJvb2w+IERPTVRva2VuTGlzdDo6dG9nZ2xlKGNvbnN0IEF0b21TdHJpbmcm
IHRva2VuLCBPcHRpb25hbDxib29sPiBmCiAgICAgYXV0byYgdG9rZW5zID0gdGhpcy0+dG9rZW5z
KCk7CiAKICAgICBpZiAodG9rZW5zLmNvbnRhaW5zKHRva2VuKSkgewotICAgICAgICBpZiAoIWZv
cmNlLnZhbHVlT3IoZmFsc2UpKSB7CisgICAgICAgIGlmICghZm9yY2UudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICB0b2tlbnMucmVtb3ZlRmlyc3QodG9rZW4pOwogICAgICAgICAgICAg
dXBkYXRlQXNzb2NpYXRlZEF0dHJpYnV0ZUZyb21Ub2tlbnMoKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0
aW9uSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0YUxpc3RTdWdnZXN0aW9u
SW5mb3JtYXRpb24uaAppbmRleCBlYzg2ZjcwNDg0Y2UzZTRkZTg1MDZmYTdjNjExMzE1NzFlMTRh
NjRlLi40ZDZkMDJjZmRmM2YxMjQwZGQzYzg2N2NiOWM0OWZhNWRjZWY5YmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCkBA
IC02MCwxMiArNjAsMTIgQEAgT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uPiBEYXRhTGlzdFN1
Z2dlc3Rpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4g
dmFsdWU7CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlmICgh
bGFiZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnZhbHVlLCAqbGFiZWwgfX07CiB9CkBAIC05Miwx
NyArOTIsMTcgQEAgT3B0aW9uYWw8RGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24+IERhdGFM
aXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uOjpkZWNvZGUoRGUKIHsKICAgICBEYXRhTGlzdFN1Z2dl
c3Rpb25BY3RpdmF0aW9uVHlwZSBhY3RpdmF0aW9uVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGFjdGl2YXRpb25UeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxEYXRhTGlzdFN1
Z2dlc3Rpb24+PiBzdWdnZXN0aW9uczsKICAgICBkZWNvZGVyID4+IHN1Z2dlc3Rpb25zOwogICAg
IGlmICghc3VnZ2VzdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRSZWN0PiBlbGVtZW50UmVj
dDsKICAgICBkZWNvZGVyID4+IGVsZW1lbnRSZWN0OwogICAgIGlmICghZWxlbWVudFJlY3QpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgYWN0aXZhdGlvblR5cGUsICpzdWdnZXN0aW9ucywgKmVsZW1lbnRS
ZWN0IH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUZpZWxk
c1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaAppbmRl
eCBmYTlhNTQ4MDM4OTcyOGEwZTg0MWI1M2M5OGFjZDhiN2RhYzI0MDc5Li5jNWEzMTA0NmU0ZmZm
NGMwYWVhYTA2MWZkMjNiZDFiNzliNmM1NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVU
aW1lRmllbGRzU3RhdGUuaApAQCAtNDEsNyArNDEsNyBAQCBzdHJ1Y3QgRGF0ZVRpbWVGaWVsZHNT
dGF0ZSB7CiAgICAgaW5saW5lIE9wdGlvbmFsPHVuc2lnbmVkPiBob3VyMjMoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKCFob3VyIHx8ICFtZXJpZGllbSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gKCpob3VyICUgMTIpICsgKCptZXJpZGllbSA9PSBEYXRlVGltZUZpZWxkc1N0YXRlOjpN
ZXJpZGllbTo6UE0gPyAxMiA6IDApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAppbmRleCA3YWVkNjExOTY0ZGIzN2YwNTAzMWQzNWVhZWE4OTkwNTU2MzYyMWU1
Li40NGY3ODRiN2ExMjUwYmVkNzU3Yjk4ODM0NGU1M2I1OTg0MTQ0M2NmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXJpYWxpemVGb3JtQ29udHJvbFN0YXRlVG8oY29uc3QgRm9ybUNvbnRyb2xTdGF0
ZSYgZm9ybUNvbnRyCiBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPEZvcm1Db250cm9sU3RhdGU+IGRl
c2VyaWFsaXplRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0
b3IsIHNpemVfdCYgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHNpemUgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KHN0YXRlVmVjdG9yW2luZGV4KytdKS52
YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGF1dG8gc2l6ZSA9
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oc3RhdGVWZWN0b3JbaW5k
ZXgrK10pLnZhbHVlX29yKDApOwogICAgIGlmIChpbmRleCArIHNpemUgPiBzdGF0ZVZlY3Rvci5z
aXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgVmVjdG9yPFN0cmluZz4gc3VidmVjdG9yOwogICAgIHN1YnZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1T
dGF0ZT4gU2F2ZWRGb3JtU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFZlY3RvcjxTdHJpbmc+CiB7
CiAgICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBpdGVtQ291bnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxzaXplX3Q+KHN0YXRlVmVjdG9yW2luZGV4KytdKS52YWx1ZU9yKDApOworICAgIGF1dG8g
aXRlbUNvdW50ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8c2l6ZV90PihzdGF0
ZVZlY3RvcltpbmRleCsrXSkudmFsdWVfb3IoMCk7CiAgICAgaWYgKCFpdGVtQ291bnQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc2F2ZWRGb3JtU3RhdGUgPSBtYWtlVW5pcXVl
PFNhdmVkRm9ybVN0YXRlPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmNwcAppbmRleCA3NzdjNGU3ZjViZThiNDRmNTJmMGQ0Mzg4OGFjNjI0NDRhOTdkMTFiLi5jYzY1
ZWFjOGJiMjViYTkxMWQ5Mzc1MmNiOTMxZDE3NTdjNjhmYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgSFRNTEFs
bENvbGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVj
dGlvblR5cGUgdAogT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQ
dHI8RWxlbWVudD4+PiBIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRPckluZGV4ZWRJdGVtT3JJdGVt
cyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lT3JJbmRleCkgY29uc3QKIHsKICAgICBpZiAobmFtZU9y
SW5kZXguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0byBpbmRleCA9IEpTQzo6cGFyc2VJbmRl
eCgqbmFtZU9ySW5kZXguaW1wbCgpKSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50PiB7IGl0ZW0o
aW5kZXgudmFsdWUoKSkgfSB9OwpAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxWYXJpYW50PFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxBbGxDb2xsZWN0aW9u
OjpuYQogICAgIGF1dG8gbmFtZWRJdGVtcyA9IHRoaXMtPm5hbWVkSXRlbXMobmFtZSk7CiAKICAg
ICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgp
ID09IDEpCiAgICAgICAgIHJldHVybiBWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJl
ZlB0cjxFbGVtZW50Pj4geyBSZWZQdHI8RWxlbWVudD4geyBXVEZNb3ZlKG5hbWVkSXRlbXNbMF0p
IH0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCBl
ZjA1NzU4NGE4NWI3MDllMWM5YzFhNDg3ZTdkYmNhNjIxNDhkM2VjLi5hM2Q3NjU3ZDY0NDdkZDEz
MjViNjg0MmM0NGIyOWJhYzRkMmVmNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcApAQCAtNDA1LDQ4ICs0MDUsNDggQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ+IEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVt
ZW4KICAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKQogICAg
ICAgICB8fCAhZG9jdW1lbnQoKS5zZXR0aW5ncygpLnByaXZhdGVDbGlja01lYXN1cmVtZW50RW5h
YmxlZCgpCiAgICAgICAgIHx8ICFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGhhc0F0dHJpYnV0aW9uU291cmNlSURBdHRyID0gaGFz
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGlvbnNvdXJjZWlkQXR0cik7
CiAgICAgYXV0byBoYXNBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uQXR0ciA9IGhhc0F0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25kZXN0aW5hdGlvbkF0dHIpOwogICAgIGlm
ICghaGFzQXR0cmlidXRpb25Tb3VyY2VJREF0dHIgJiYgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRp
b25BdHRyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZUlEQXR0ciA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25zb3VyY2VpZEF0dHIpOwogICAgIGF1
dG8gYXR0cmlidXRpb25EZXN0aW5hdGlvbkF0dHIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKGF0dHJpYnV0aW9uZGVzdGluYXRpb25BdHRyKTsKIAogICAgIGlmICghaGFzQXR0cmli
dXRpb25Tb3VyY2VJREF0dHIgfHwgIWhhc0F0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyIHx8IGF0
dHJpYnV0aW9uU291cmNlSURBdHRyLmlzRW1wdHkoKSB8fCBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
QXR0ci5pc0VtcHR5KCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQm90aCBhdHRyaWJ1
dGlvbnNvdXJjZWlkIGFuZCBhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uIG5lZWQgdG8gYmUgc2V0IGZv
ciBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IHRvIHdvcmsuIl9zKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUgfHwgIWZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
IlByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIG1haW4g
ZnJhbWUuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCiAgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZUlE
ID0gcGFyc2VIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKGF0dHJpYnV0aW9uU291cmNlSURBdHRyKTsK
ICAgICBpZiAoIWF0dHJpYnV0aW9uU291cmNlSUQpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiYXR0cmlidXRpb25zb3VyY2VpZCBpcyBub3QgYSBub24tbmVnYXRpdmUgaW50ZWdlciB3aGlj
aCBpcyByZXF1aXJlZCBmb3IgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4iX3MpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICAKICAgICBpZiAoYXR0cmlidXRpb25Tb3VyY2VJRC52YWx1ZSgpID4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEOjpNYXhFbnRyb3B5KSB7CiAgICAgICAgIGRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgbWFrZVN0cmluZygiYXR0cmlidXRpb25zb3VyY2VpZCBtdXN0IGhhdmUgYSBub24t
bmVnYXRpdmUgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICIsIFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VJRDo6TWF4RW50cm9weSwgIiBmb3IgUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudC4iKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgVVJMIGRlc3RpbmF0aW9uVVJMIHsgVVJMKCksIGF0
dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyIH07CiAgICAgaWYgKCFkZXN0aW5hdGlvblVSTC5pc1Zh
bGlkKCkgfHwgIWRlc3RpbmF0aW9uVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAg
ICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uIGNvdWxkIG5vdCBi
ZSBjb252ZXJ0ZWQgdG8gYSB2YWxpZCBIVFRQLWZhbWlseSBVUkwuIl9zKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluIHsgZG9jdW1l
bnQoKS51cmwoKSB9OwogICAgIGlmIChkb2N1bWVudFJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMo
ZGVzdGluYXRpb25VUkwpKSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9u
ZGVzdGluYXRpb24gY2FuIG5vdCBiZSB0aGUgc2FtZSBzaXRlIGFzIHRoZSBjdXJyZW50IHdlYnNp
dGUuIl9zKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgeyBTb3VyY2VJRChhdHRyaWJ1dGlvblNvdXJjZUlELnZh
bHVlKCkpLCBTb3VyY2VTaXRlKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4pLCBBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZShkZXN0aW5hdGlvblVSTCkgfTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBP
cHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gSFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgICAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgYXR0cmlidXRpb25T
b3VyY2VOb25jZUF0dHIgfTsKICAgICAgICAgaWYgKCFlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgImF0dHJpYnV0aW9uc291cmNlbm9uY2Ug
d2FzIG5vdCB2YWxpZC4iX3MpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuc2V0RXBoZW1lcmFsU291cmNlTm9uY2UoV1RGTW92ZShlcGhlbWVy
YWxOb25jZSkpOwogICAgIH0KQEAgLTUwOCw3ICs1MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVt
ZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZlbnQpCiAgICAgaWYgKHN5c3RlbVByZXZpZXdJbmZv
LmlzUHJldmlldykgewogICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1lbnRJ
ZGVudGlmaWVyID0gZG9jdW1lbnQoKS5pZGVudGlmaWVyRm9yRWxlbWVudCgqdGhpcyk7CiAgICAg
ICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1l
bnQoKS5pZGVudGlmaWVyKCk7Ci0gICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2Vi
UGFnZUlkZW50aWZpZXIgPSBkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZh
bHVlT3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxl
bWVudC53ZWJQYWdlSWRlbnRpZmllciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFn
ZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKICAgICAgICAgaWYgKGF1dG8qIGNo
aWxkID0gZmlyc3RFbGVtZW50Q2hpbGQoKSkKICAgICAgICAgICAgIHN5c3RlbVByZXZpZXdJbmZv
LnByZXZpZXdSZWN0ID0gY2hpbGQtPmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOwogICAgIH0KQEAg
LTYzNyw3ICs2MzcsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnJlZmVycmVyUG9saWN5
Rm9yQmluZGluZ3MoKSBjb25zdAogUmVmZXJyZXJQb2xpY3kgSFRNTEFuY2hvckVsZW1lbnQ6OnJl
ZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJl
ZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZl
cnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5
QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFs
dWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VS
ZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9s
aWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSku
dmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5jcHAKaW5kZXggMzAwZTE4MGQ3NjRhNDRjYWJkZjI1MWM1MjRlMWU0ZjYwNDczMGI0MS4u
YWQzZTExODA5NTJjMzVlMzdhMmIxZGRmMWI3OGNhOTg4MjkwYTQ3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgSFRNTEFy
ZWFFbGVtZW50Ojppc0ZvY3VzYWJsZSgpIGNvbnN0CiAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2Ut
PmlzVmlzaWJsZVdpdGhvdXRSZXNvbHZpbmdGdWxsU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJbmRleFNldEV4cGxpY2l0
bHkoKS52YWx1ZU9yKDApID49IDA7CisgICAgcmV0dXJuIHN1cHBvcnRzRm9jdXMoKSAmJiB0YWJJ
bmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZV9vcigwKSA+PSAwOwogfQogICAgIAogdm9pZCBIVE1M
QXJlYUVsZW1lbnQ6OnNldEZvY3VzKGJvb2wgc2hvdWxkQmVGb2N1c2VkLCBGb2N1c1Zpc2liaWxp
dHkgdmlzaWJpbGl0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAK
aW5kZXggYzAyMTE2ZjlmODBkYjI5MTIzOTNiYzkyMmFjZTZiYTk0Y2YwZDIwYy4uYjgzMmI2MDI3
ZDU1MDRiZmQwNGQ3OTRlOWQ5NDIzOTQwOWI5MTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTI0NSwyMyArMjQ1LDIzIEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChK
U0M6OkpTR2xvCiAKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXMyZCgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzMmRUeXBlKGNvbnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+
KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2NvbnRleHQtPmlz
Qml0bWFwUmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKCFpc0JpdG1hcFJlbmRlcmVyVHlw
ZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdD
b250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25h
bDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dD4geyAmZG93bmNhc3Q8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PigqbV9jb250
ZXh0KSB9IH07CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICAgICAgaWYgKG1f
Y29udGV4dC0+aXNXZWJHTCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzV2ViR0xUeXBlKGNvbnRl
eHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICBhdXRvIHZlcnNpb24g
PSB0b1dlYkdMVmVyc2lvbihjb250ZXh0SWQpOwogICAgICAgICAgICAgaWYgKCh2ZXJzaW9uID09
IFdlYkdMVmVyc2lvbjo6V2ViR0wxKSAhPSBtX2NvbnRleHQtPmlzV2ViR0wxKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0
IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
c3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICBpZiAoaXM8V2ViR0xSZW5kZXJpbmdDb250ZXh0
PigqbV9jb250ZXh0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBSZWZQdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICNpZiBFTkFCTEUoV0VCR0wyKQpA
QCAtMjc0LDEzICsyNzQsMTMgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KICNpZiBFTkFCTEUo
V0VCR1BVKQogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1dlYkdQVSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWlzV2ViR1BVVHlwZShjb250ZXh0SWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBP
cHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAg
ICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9Owog
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQ
VUNhbnZhc0NvbnRleHQ+IHsgJmRvd25jYXN0PEdQVUNhbnZhc0NvbnRleHQ+KCptX2NvbnRleHQp
IH0gfTsKICAgICAgICAgfQogI2VuZGlmCiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9w
dCB9OworICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51
bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXMyZFR5cGUoY29udGV4dElkKSkgewpAQCAtMjkw
LDcgKzI5MCw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250
ZXh0ID0gY3JlYXRlQ29udGV4dDJkKGNvbnRleHRJZCwgV1RGTW92ZShzZXR0aW5ncykpOwogICAg
ICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxS
ZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4gT3B0aW9u
YWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7
IGNvbnRleHQgfSB9OwogICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIEV4Y2VwdGlvbk9yPE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChK
U0M6OkpTR2xvCiAKICAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dEJpdG1hcFJl
bmRlcmVyKGNvbnRleHRJZCwgV1RGTW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7IGNvbnRleHQgfSB9
OwogICAgIH0KIApAQCAtMzEzLDcgKzMxMyw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPFJlbmRl
cmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChKU0M6OkpTR2xvCiAK
ICAgICAgICAgYXV0byBjb250ZXh0ID0gY3JlYXRlQ29udGV4dFdlYkdMKHRvV2ViR0xWZXJzaW9u
KGNvbnRleHRJZCksIFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgICAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51
bGxvcHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7
IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+
KCpjb250ZXh0KSkKICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IFJlZlB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4oKmNvbnRleHQpIH0gfTsKQEAgLTMyOCwxMiArMzI4LDEyIEBAIEV4Y2VwdGlv
bk9yPE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+PiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29u
dGV4dChKU0M6OkpTR2xvCiAgICAgaWYgKGlzV2ViR1BVVHlwZShjb250ZXh0SWQpKSB7CiAgICAg
ICAgIGF1dG8gY29udGV4dCA9IGNyZWF0ZUNvbnRleHRXZWJHUFUoY29udGV4dElkKTsKICAgICAg
ICAgaWYgKCFjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPEdQVUNhbnZhc0NvbnRleHQ+IHsgY29udGV4dCB9
IH07CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBzdGQ6Om51bGxvcHQgfTsKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENh
bnZhc0VsZW1lbnQ6OmdldENvbnRleHQoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNTcwLDcgKzU3
MCw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmRpZERyYXcoY29uc3QgT3B0aW9uYWw8Rmxv
YXRSZWN0PiYgcmVjdCkKICAgICBjbGVhckNvcGllZEltYWdlKCk7CiAgICAgCiAgICAgaWYgKCFy
ZWN0KSB7Ci0gICAgICAgIG5vdGlmeU9ic2VydmVyc0NhbnZhc0NoYW5nZWQoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChzdGQ6Om51bGxvcHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MDksMTEgKzcwOSwxMSBAQCBzdGF0aWMgU3Ry
aW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogc3RhdGljIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eUZyb21KU1ZhbHVlKEpTQzo6SlNWYWx1ZSBxdWFsaXR5VmFs
dWUpCiB7CiAgICAgaWYgKCFxdWFsaXR5VmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJs
ZSBxdWFsaXR5TnVtYmVyID0gcXVhbGl0eVZhbHVlLmFzTnVtYmVyKCk7CiAgICAgaWYgKHF1YWxp
dHlOdW1iZXIgPCAwIHx8IHF1YWxpdHlOdW1iZXIgPiAxKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHF1YWxp
dHlOdW1iZXI7CiB9CkBAIC05NTAsNyArOTUwLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gc2hv
dWxkQWNjZWxlcmF0ZShzaXplKCkpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogICAgIC8vIEZJWE1FOiBBZGQgYSBuZXcgc2V0dGlu
ZyBmb3IgRGlzcGxheUxpc3QgZHJhd2luZyBvbiBjYW52YXMuCi0gICAgYXV0byB1c2VEaXNwbGF5
TGlzdCA9IG1fdXNlc0Rpc3BsYXlMaXN0RHJhd2luZy52YWx1ZU9yKGRvY3VtZW50KCkuc2V0dGlu
Z3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6
OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKKyAgICBhdXRvIHVzZURpc3BsYXlMaXN0
ID0gbV91c2VzRGlzcGxheUxpc3REcmF3aW5nLnZhbHVlX29yKGRvY3VtZW50KCkuc2V0dGluZ3Mo
KS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6Olll
cyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKIAogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBp
eGVsRm9ybWF0XSA9IFsmXSB7CiAgICAgICAgIGlmIChtX2NvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEb2N1bWVudC5jcHAKaW5kZXggMDBiZjY3YWVkNTY1YWM5MGY0NmQ4ZmE3MzhkZjdhNTI5
Mzc2MGRlNi4uYWJmNDQwZmFmY2FmZDAwZjdjMjZmM2E1YjFkM2Q2OGVlYjdiMzg1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIFJlZjxEb2N1
bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVhdGVQYXJzZXIoKQogT3B0aW9uYWw8VmFyaWFu
dDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8RWxlbWVudD4sIFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4+PiBIVE1MRG9jdW1lbnQ6Om5hbWVkSXRlbShjb25zdCBBdG9tU3RyaW5nJiBuYW1lKQog
ewogICAgIGlmIChuYW1lLmlzTnVsbCgpIHx8ICFoYXNEb2N1bWVudE5hbWVkSXRlbSgqbmFtZS5p
bXBsKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNN
dWx0aXBsZUVsZW1lbnRzKCpuYW1lLmltcGwoKSkpKSB7CiAgICAgICAgIGF1dG8gY29sbGVjdGlv
biA9IGRvY3VtZW50TmFtZWRJdGVtcyhuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKaW5kZXggMDJiNTc5ODhlNDdkYjQ5ZjA5ZjY0YWQ0Y2QzODQwNWFiMjE4YTk2NS4uMDEzZmFm
NTMzNmY0YmJmYWVlYWNlNmU1OTMwMTJmZjlkM2I2ODRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YQog
ICAgICAgICBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0gcGFyc2VIVE1MSW50ZWdlcih2YWx1
ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkob3B0aW9uYWxUYWJJbmRleC52
YWx1ZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBsaWNpdGx5
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTYyNiwxMCArNjI2LDEw
IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OmFwcGx5QXNwZWN0UmF0aW9Gcm9tV2lkdGhBbmRIZWlnaHRB
dHRyaWJ1dGVzVG9TdHlsZShNdXRhYmxlU3R5CiAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdz
KCkuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZG91YmxlIHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50
TnVtYmVyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVP
cigtMSk7CisgICAgZG91YmxlIHdpZHRoID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVt
YmVyKGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyKSkudmFsdWVfb3Io
LTEpOwogICAgIGlmICh3aWR0aCA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgaGVp
Z2h0ID0gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGF0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oaGVpZ2h0QXR0cikpLnZhbHVlT3IoLTEpOworICAgIGRvdWJsZSBoZWln
aHQgPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihoZWlnaHRBdHRyKSkudmFsdWVfb3IoLTEpOwogICAgIGlmIChoZWlnaHQg
PCAwKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VMZWdhY3lDb2xvclZhbHVlKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIC8vIEFuIGVtcHR5IHN0cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuCiAg
ICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdHJpbmcgPSBzdHJpbmcuc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0hUTUxTcGFjZTxVQ2hhcj4pOwog
ICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTA1OCw3ICsxMDU4LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBz
dHJpbmcpCiAKICAgICAvLyAidHJhbnNwYXJlbnQiIGRvZXNuJ3QgYXBwbHkgYSBjb2xvciBlaXRo
ZXIuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInRyYW5z
cGFyZW50IikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYXV0byBuYW1lZENvbG9yID0gQ1NTUGFyc2VyOjpwYXJz
ZU5hbWVkQ29sb3Ioc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIG5hbWVkQ29sb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKaW5kZXggMDkyZGNkMTkzYmU4MDM4OWQ3ZDE5
ZGU0MzJjMDllYTE0MjUxYjhmMC4uNGViNjUxOTEwZTQ2OGRjN2Q2ZWVjYWYxOTUzZTE0NjBkMDZm
NTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIHN0YXRpYyBib29sIHBhcnNlRm9udFNpemUoY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBpbnQmCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIFN0ZXAgOAotICAgIGludCB2YWx1ZSA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0
cykudmFsdWVPcigwKTsKKyAgICBpbnQgdmFsdWUgPSBwYXJzZUludGVnZXI8aW50PihkaWdpdHMp
LnZhbHVlX29yKDApOwogCiAgICAgLy8gU3RlcCA5CiAgICAgaWYgKG1vZGUgPT0gUmVsYXRpdmVQ
bHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcAppbmRleCBhZjFjZDBlYTRlMWY5YzQ3NGJlZjgxY2U5NzM2OTM4Y2MyNzE0MjQwLi5m
MzUzZTlhOWJlZjgxNzAyOTQ1ZGM3NTgwNzFiMWU4MWJlMjlmYjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtNTksNyAr
NTksNyBAQCBPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVs
ZW1lbnQ+Pj4gSFRNTEZvcm1Db250cm9sc0NvbGxlYwogICAgIGF1dG8gbmFtZWRJdGVtcyA9IHRo
aXMtPm5hbWVkSXRlbXMobmFtZSk7CiAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiBWYXJpYW50
PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0cjxFbGVtZW50
PiB7IFdURk1vdmUobmFtZWRJdGVtc1swXSkgfSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKaW5kZXggNTU1ZjE1NDFjMDA4YWI2ZjFhYThmYzRjZWQ3NDJlZjBlZjUw
ZDFmYS4uMWU2ZWUxMDAxYjgwYzkzZDcxMzZhNzUzZWQ1NzQ1YmJmOWE0OGM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIE9wdGlv
bmFsPFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1M
Rm9ybUVsZW1lbnQ6Om5hbWVkCiAgICAgYXV0byBuYW1lZEl0ZW1zID0gbmFtZWRFbGVtZW50cyhu
YW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobmFtZWRJ
dGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9k
ZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgV1RGTW92ZShuYW1l
ZEl0ZW1zWzBdKSB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHAKaW5kZXggNzk4MjE5NDllNWNhZmQxM2Q1N2U1NjE5OWRhMWFhNGJiNGQ2NDA3Zi4uMGM1YmQ3
ZTRkZDgzMzkzMmVjNzcwMjgwYWQyNDgxNzgzMzBkZmE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEhUTUxJRnJh
bWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaQogICAgICAgICBpZiAoIWludmFsaWRUb2tlbnMuaXNOdWxsKCkpCiAgICAgICAg
ICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiRXJyb3Igd2hpbGUgcGFyc2luZyB0aGUgJ3NhbmRib3gnIGF0
dHJpYnV0ZTogIiArIGludmFsaWRUb2tlbnMpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhbGxv
d0F0dHIgfHwgbmFtZSA9PSBhbGxvd2Z1bGxzY3JlZW5BdHRyIHx8IG5hbWUgPT0gd2Via2l0YWxs
b3dmdWxsc2NyZWVuQXR0cikgewotICAgICAgICBtX2ZlYXR1cmVQb2xpY3kgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fZmVhdHVyZVBvbGljeSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2Ug
aWYgKG5hbWUgPT0gbG9hZGluZ0F0dHIpIHsKICAgICAgICAgLy8gQWxsb3cgbG9hZGluZz1lYWdl
ciB0byBsb2FkIHRoZSBmcmFtZSBpbW1lZGlhdGVseSBpZiB0aGUgbGF6eSBsb2FkIHdhcyBzdGFy
dGVkLCBidXQKICAgICAgICAgLy8gZG8gbm90IGFsbG93IHRoZSByZXZlcnNlIHNpdHVhdGlvbiBz
aW5jZSB0aGUgZWFnZXIgbG9hZCBpcyBhbHJlYWR5IHN0YXJ0ZWQuCkBAIC0xNDMsNyArMTQzLDcg
QEAgUmVmZXJyZXJQb2xpY3kgSFRNTElGcmFtZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29u
c3QKICAgICBpZiAobV9sYXp5TG9hZEZyYW1lT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybiBtX2xh
enlMb2FkRnJhbWVPYnNlcnZlci0+cmVmZXJyZXJQb2xpY3koKTsKICAgICBpZiAoZG9jdW1lbnQo
KS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGlj
eUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAg
ICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBv
bGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAg
ICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAyYWU3ZjE3ZDA1MjYzYzY3MjhlMTIyYmE0
ZjgwYjM1M2ZiZjM5NjRhLi43Zjg3ODhlODc0YWUxZTBhODNlMzAzNGIzMzMwMzdhZWM5ZjBmMDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI0Nyw4ICsy
NDcsOCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogICAgIEhUTUxFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSwgcmVhc29uKTsKIAogICAgIGlmIChu
YW1lID09IHJlZmVycmVycG9saWN5QXR0ciAmJiBkb2N1bWVudCgpLnNldHRpbmdzKCkucmVmZXJy
ZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBvbGRSZWZlcnJlclBv
bGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3kob2xkVmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNl
OjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlT
dHJpbmcpOwotICAgICAgICBhdXRvIG5ld1JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBv
bGljeShuZXdWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmli
dXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIGF1dG8g
b2xkUmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KG9sZFZhbHVlLCBSZWZlcnJl
clBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlX29yKFJlZmVycmVy
UG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIGF1dG8gbmV3UmVmZXJyZXJQb2xpY3kgPSBw
YXJzZVJlZmVycmVyUG9saWN5KG5ld1ZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJy
ZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7
CiAgICAgICAgIGlmIChvbGRSZWZlcnJlclBvbGljeSAhPSBuZXdSZWZlcnJlclBvbGljeSkKICAg
ICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91
c0Vycm9yKFJlbGV2YW50TXV0YXRpb246Olllcyk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNy
b3Nzb3JpZ2luQXR0cikgewpAQCAtNzk1LDcgKzc5NSw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVt
ZW50OjpyZWZlcnJlclBvbGljeUZvckJpbmRpbmdzKCkgY29uc3QKIFJlZmVycmVyUG9saWN5IEhU
TUxJbWFnZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBv
bGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOworICAg
ICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJl
clBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsK
ICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBiM2MyMDkzZjA4YzBhYjI2MzBiOWY1
ZTJhYjgwNjM5N2Y1ZjBhMmY5Li5kOTExODg3YTQ2ZWI2YmIxNDA4MjgwYWJjZDkwMzdlNTI1NzM4
NDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTQxNCw3
ICs0MTQsNyBAQCBPcHRpb25hbDxkb3VibGU+IEhUTUxJbnB1dEVsZW1lbnQ6Omxpc3RPcHRpb25W
YWx1ZUFzRG91YmxlKGNvbnN0IEhUTUxPcHRpb25FbGVtZQogewogICAgIGF1dG8gb3B0aW9uVmFs
dWUgPSBvcHRpb25FbGVtZW50LnZhbHVlKCk7CiAgICAgaWYgKCFpc1ZhbGlkVmFsdWUob3B0aW9u
VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHNhbml0
aXplVmFsdWUob3B0aW9uVmFsdWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmNwcAppbmRleCBlZDAxMmM3MTgyZmUzMzViM2Q5MTc0NmM2ZGU2YTk1OGE1OWY3MzEzLi5m
MGUwMmM5NzFkYzM1OTg3YTZiYzRjYTJjMzIyODdkM2ExNzQ5YjczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC02NzcsNyArNjc3LDcgQEAgU3RyaW5nIEhUTUxM
aW5rRWxlbWVudDo6cmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncygpIGNvbnN0CiBSZWZlcnJlclBv
bGljeSBIVE1MTGlua0VsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsKICAgICBpZiAo
ZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZl
cnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcp
OworICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291cmNlOjpS
ZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nKTsKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjMDdhMmM2YzE2YmE5ZDRi
YTY5MWEzZjU4YTIyNjY3ZGUwNzg2NjQxLi5iZDE5YmJiYTEwN2QyZGE3Njk2YjM1MDZkYjNjMWQy
YWY2OTEzYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTY2NTAsNyArNjY1MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5
ZXIoKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lTCiAKICAgICBtX3BsYXllciA9
IE1lZGlhUGxheWVyOjpjcmVhdGUoKnRoaXMpOwogICAgIG1fcGxheWVyLT5zZXRCdWZmZXJpbmdQ
b2xpY3kobV9idWZmZXJpbmdQb2xpY3kpOwotICAgIG1fcGxheWVyLT5zZXRQcmVmZXJyZWREeW5h
bWljUmFuZ2VNb2RlKG1fb3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2RlLnZhbHVlT3IocHJlZmVycmVk
RHluYW1pY1JhbmdlTW9kZShkb2N1bWVudCgpLnZpZXcoKSkpKTsKKyAgICBtX3BsYXllci0+c2V0
UHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZShtX292ZXJyaWRlRHluYW1pY1JhbmdlTW9kZS52YWx1
ZV9vcihwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKGRvY3VtZW50KCkudmlldygpKSkpOwogICAg
IG1fcGxheWVyLT5zZXRNdXRlZChlZmZlY3RpdmVNdXRlZCgpKTsKICAgICBzY2hlZHVsZVBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyVXBkYXRlKCk7CiAKQEAgLTcyMTQsNyArNzIxNCw3IEBAIFJlZlB0
cjxWaWRlb1BsYXliYWNrUXVhbGl0eT4gSFRNTE1lZGlhRWxlbWVudDo6Z2V0VmlkZW9QbGF5YmFj
a1F1YWxpdHkoKQogICAgIFJlZlB0cjxET01XaW5kb3c+IGRvbVdpbmRvdyA9IGRvY3VtZW50KCku
ZG9tV2luZG93KCk7CiAgICAgZG91YmxlIHRpbWVzdGFtcCA9IGRvbVdpbmRvdyA/IGRvbVdpbmRv
dy0+bm93VGltZXN0YW1wKCkubWlsbGlzZWNvbmRzKCkgOiAwOwogCi0gICAgYXV0byBtZXRyaWNz
ID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBX
VEY6Om51bGxvcHQ7CisgICAgYXV0byBtZXRyaWNzID0gbV9wbGF5ZXIgPyBtX3BsYXllci0+dmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtZXRy
aWNzKQogICAgICAgICByZXR1cm4gVmlkZW9QbGF5YmFja1F1YWxpdHk6OmNyZWF0ZSh0aW1lc3Rh
bXAsIHsgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcAppbmRleCBj
OTRhYTc5YzZiOWFhNzAxZDI5M2RiZjdhOTk3ZTBlOTVkODBmYjAwLi5hM2MwNzIwYTY3MTAyOGVm
NzNmODFiODE4Mjg2MWEyMmU3NDhhYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVs
ZW1lbnQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBIVE1MTWV0YUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcKICAg
ICB9CiAKICAgICBpZiAobmFtZSA9PSBjb250ZW50QXR0cikgewotICAgICAgICBtX2NvbnRlbnRD
b2xvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jb250ZW50Q29sb3IgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHByb2Nlc3MoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCmluZGV4IGJlOGNiNWE5OGY4N2JhMzFiODY2
MjNiNmNkYjAyNjhlM2MwZWM4MmMuLjdjOGI5MzU0MTFlMGM5OTUwYzYzOGJjNGZjZGI1MjI5NjU4
MTBjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcApAQCAtMzQs
NyArMzQsNyBAQAogLy8gTWF5YmUgd2Ugc2hvdWxkIHB1dCB0aGlzIGludG8gdGhlIGhlYWRlciBm
aWxlIGZvciBFeHBlY3RlZCBhbmQgZ2l2ZSBpdCBhIGJldHRlciBuYW1lLgogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRT4gaW5saW5lIE9wdGlvbmFsPFQ+IG9wdGlvbmFsVmFsdWUoRXhw
ZWN0ZWQ8VCwgRT4mJiBleHBlY3RlZCkKIHsKLSAgICByZXR1cm4gZXhwZWN0ZWQgPyBPcHRpb25h
bDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gZXhwZWN0ZWQgPyBPcHRpb25hbDxUPihXVEZNb3ZlKGV4cGVjdGVkLnZhbHVlKCkpKSA6IHN0
ZDo6bnVsbG9wdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPTGlzdEVsZW1lbnQuaAppbmRleCBmMzA1Y2E1OWI5OTYxZDZlYzkyZDYyNGExYTg4NjY0ODhm
MDNjYmVkLi4yZjRjMzk3MjBlY2U4NGFmMmMyOGFiOTcwYjY3ZDNmY2VhMWNiNjI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxIVE1MT0xpc3RFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKICAg
ICBzdGF0aWMgUmVmPEhUTUxPTGlzdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKIAotICAgIGludCBzdGFydEZvckJpbmRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydC52YWx1ZU9yKDEpOyB9CisgICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0LnZhbHVlX29yKDEpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTdGFydEZvckJpbmRpbmdzKGludCk7CiAKICAgICAvLyBGSVhNRTogVGhlIHJlYXNvbiBz
dGFydCgpIGRvZXMgbm90IHRyaWdnZXIgbGF5b3V0IGlzIGJlY2F1c2UgaXQgaXMgY2FsbGVkCkBA
IC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIGludCBzdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnQgPyBtX3N0YXJ0LnZhbHVlKCkgOiAobV9pc1JldmVyc2VkID8gaXRlbUNvdW50KCkg
OiAxKTsgfQogICAgIGJvb2wgaXNSZXZlcnNlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXZlcnNl
ZDsgfQotICAgIHZvaWQgaXRlbUNvdW50Q2hhbmdlZCgpIHsgbV9pdGVtQ291bnQgPSBXVEY6Om51
bGxvcHQ7IH0KKyAgICB2b2lkIGl0ZW1Db3VudENoYW5nZWQoKSB7IG1faXRlbUNvdW50ID0gc3Rk
OjpudWxsb3B0OyB9CiAKIHByaXZhdGU6CiAgICAgSFRNTE9MaXN0RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHAKaW5kZXggYmJiYzg0MDJiMmU1NTUwZDRhZGFlMWU2YzQ4MTQ3NTI2NTIzODlmZi4u
NDlmZDI4ZDBkOTIyYjgxNTZlNGExOWRmNDliYWEyMTJkMDg5Yzg0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBTdHJpbmcg
SFRNTFNjcmlwdEVsZW1lbnQ6OnJlZmVycmVyUG9saWN5Rm9yQmluZGluZ3MoKSBjb25zdAogUmVm
ZXJyZXJQb2xpY3kgSFRNTFNjcmlwdEVsZW1lbnQ6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKIHsK
ICAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLnJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5h
YmxlZCgpKQotICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5U291
cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJlclBvbGljeTo6RW1w
dHlTdHJpbmcpOworICAgICAgICByZXR1cm4gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHJlZmVycmVycG9saWN5QXR0ciksIFJlZmVycmVyUG9saWN5
U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6
OkVtcHR5U3RyaW5nKTsKICAgICByZXR1cm4gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU5MWZm
NGYzODg2NzBkYjkzMjhjMzYzYmUxZGZiNzE3MDUyNzJmYmUuLjM0ZGFlYjhkYzQzZmQyZjYzZjAw
ODQyYzdhODczY2FiZjc5MGQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCkBAIC00NjksNyArNDY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFNlbGVj
dEVsZW1lbnQ6OnNldExlbmd0aCh1bnNpZ25lZCBuZXdMZW5ndGgpCiAKICAgICBpZiAoZGlmZiA8
IDApIHsgLy8gQWRkIGR1bW15IGVsZW1lbnRzLgogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IGFkZChIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLnB0
cigpLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhZGQoSFRNTE9w
dGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKS5wdHIoKSwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfSB3aGlsZSAoKytkaWZmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU291cmNlRWxlbWVudC5jcHAKaW5kZXggYTJjMGI5MjdlNGRiZjMxZjgxYzRjMDhiNmQz
OTQ5YWQ4MGRiMDNiMC4uYWM0MjRkZTZkZjM1YWJjMzMxZDdhNTE4ZjRmMTNjMjM4ODEzOTk4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsx
NzksNyBAQCB2b2lkIEhUTUxTb3VyY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgaWYgKG5hbWUgPT0gc3Jjc2V0QXR0ciB8fCBuYW1l
ID09IHNpemVzQXR0ciB8fCBuYW1lID09IG1lZGlhQXR0ciB8fCBuYW1lID09IHR5cGVBdHRyKSB7
CiAgICAgICAgIGlmIChuYW1lID09IG1lZGlhQXR0cikKLSAgICAgICAgICAgIG1fY2FjaGVkUGFy
c2VkTWVkaWFBdHRyaWJ1dGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2NhY2hlZFBh
cnNlZE1lZGlhQXR0cmlidXRlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHBhcmVudCA9
IG1ha2VSZWZQdHIocGFyZW50Tm9kZSgpKTsKICAgICAgICAgaWYgKG1fc2hvdWxkQ2FsbFNvdXJj
ZXNDaGFuZ2VkKQogICAgICAgICAgICAgZG93bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PigqcGFy
ZW50KS5zb3VyY2VzQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKaW5kZXggZjM2MjRhY2JmMzYzOWFhM2QyZGY0MjdjYWYyYzBjZjM5ZmJmMjk1
ZC4uNWM2ZjhlYjBlZjA3NTZiZTAyYzdjZWExM2I1ZTgxYzI4Zjg2ZmZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAg
dm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChC
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCYKICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8g
Zm9jdXMsIHdlIGRvbid0IG5lZWQgdG8gdGFrZSBhY2NvdW50IG9mIHRoZQogICAgIC8vIHNlbGVj
dGlvbiBsZW5ndGguIFRoZSBzZWxlY3Rpb24gaXMgdGhlIHNvdXJjZSBvZiB0ZXh0IGRyYWctYW5k
LWRyb3AgaW4KICAgICAvLyB0aGF0IGNhc2UsIGFuZCBub3RoaW5nIGluIHRoZSB0ZXh0IGZpZWxk
IHdpbGwgYmUgcmVtb3ZlZC4KLSAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gZm9jdXNlZCgpID8g
ZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRS
YW5nZSgpIDogV1RGOjpudWxsb3B0OworICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBmb2N1c2Vk
KCkgPyBkb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgdW5zaWduZWQgc2VsZWN0aW9uTGVuZ3Ro
ID0gc2VsZWN0aW9uUmFuZ2UgPyBjb21wdXRlTGVuZ3RoRm9yU3VibWlzc2lvbihwbGFpblRleHQo
KnNlbGVjdGlvblJhbmdlKSkgOiAwOwogICAgIEFTU0VSVChjdXJyZW50TGVuZ3RoID49IHNlbGVj
dGlvbkxlbmd0aCk7CiAgICAgdW5zaWduZWQgYmFzZUxlbmd0aCA9IGN1cnJlbnRMZW5ndGggLSBz
ZWxlY3Rpb25MZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDViMjMxNTVlMGFlOGVlYWE5NTQxZmRlYTU5MTQ1MTFk
ZTliYmYzMWUuLjRjYTAzZGI4NDkyY2VlYWU4ZjJjNmE4NzY1OWQ1ZmM3OWEyMTNhOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CkBAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIHZvaWQgc2V0Q29udGFpbmVyQW5kT2Zmc2V0Rm9y
UmFuZ2UoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlKiYgY28KIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2VsZWN0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWlzVGV4dEZpZWxkKCkgfHwgIWhhc0NhY2hlZFNl
bGVjdGlvbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX2NhY2hlZFNlbGVjdGlvblN0
YXJ0OwogICAgIHVuc2lnbmVkIGVuZCA9IG1fY2FjaGVkU2VsZWN0aW9uRW5kOwpAQCAtNDYzLDcg
KzQ2Myw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6c2VsZWN0aW9uKCkgY29uc3QKICAgICBBU1NFUlQoc3RhcnQgPD0gZW5kKTsKICAgICBhdXRv
IGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKICAgICBpZiAoIWlubmVyVGV4dCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghaW5uZXJUZXh0LT5maXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiBTaW1w
bGVSYW5nZSB7IHsgKmlubmVyVGV4dCwgMCB9LCB7ICppbm5lclRleHQsIDAgfSB9OwpAQCAtNDg5
LDcgKzQ4OSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2VsZWN0aW9uKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIXN0YXJ0Tm9kZSB8fCAh
ZW5kTm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKnN0YXJ0Tm9kZSwgc3Rh
cnQgfSwgeyAqZW5kTm9kZSwgZW5kIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKaW5kZXggOGYwM2M2ZmZjNzg2ZmI3MDUzNDJhZTU2NTRiYWQ1MjQ4ODU5NzcwMS4uMGI0YjE4
MDY2NDYwNDQzOTI4MTFlOGQxMGYxNzNkZmVkOTg5ODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogewog
ICAgIFdURjo6c3dpdGNoT24oc291cmNlLAogICAgICAgICBbJl0gKGF1dG8mIHNwZWNpZmljU291
cmNlKSB7Ci0gICAgICAgICAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHNwZWNpZmljU291cmNlLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICAgICAgY3JlYXRlUHJvbWlzZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBzcGVjaWZpY1NvdXJjZSwgV1RGTW92ZShvcHRpb25zKSwgc3RkOjpudWxsb3B0LCBXVEZN
b3ZlKHByb21pc2UpKTsKICAgICAgICAgfQogICAgICk7CiB9CkBAIC0xNzksNyArMTc5LDcgQEAg
c3RhdGljIEV4Y2VwdGlvbk9yPEludFJlY3Q+IGNyb3BwZWRTb3VyY2VSZWN0YW5nbGVXaXRoRm9y
bWF0dGluZyhJbnRTaXplIGlucHV0U2kKICAgICAvLyAgICBPdGhlcndpc2UgbGV0IHNvdXJjZVJl
Y3RhbmdsZSBiZSBhIHJlY3RhbmdsZSB3aG9zZSBjb3JuZXJzIGFyZSB0aGUgZm91ciBwb2ludHMK
ICAgICAvLyAgICAoMCwwKSwgKHdpZHRoIG9mIGlucHV0LCAwKSwgKHdpZHRoIG9mIGlucHV0LCBo
ZWlnaHQgb2YgaW5wdXQpLCAoMCwgaGVpZ2h0IG9mCiAgICAgLy8gICAgaW5wdXQpLgotICAgIGF1
dG8gc291cmNlUmVjdGFuZ2xlID0gcmVjdC52YWx1ZU9yKEludFJlY3QgeyAwLCAwLCBpbnB1dFNp
emUud2lkdGgoKSwgaW5wdXRTaXplLmhlaWdodCgpIH0pOworICAgIGF1dG8gc291cmNlUmVjdGFu
Z2xlID0gcmVjdC52YWx1ZV9vcihJbnRSZWN0IHsgMCwgMCwgaW5wdXRTaXplLndpZHRoKCksIGlu
cHV0U2l6ZS5oZWlnaHQoKSB9KTsKIAogICAgIC8vIDQuIENsaXAgc291cmNlUmVjdGFuZ2xlIHRv
IHRoZSBkaW1lbnNpb25zIG9mIGlucHV0LgogICAgIHNvdXJjZVJlY3RhbmdsZS5pbnRlcnNlY3Qo
SW50UmVjdCB7IDAsIDAsIGlucHV0U2l6ZS53aWR0aCgpLCBpbnB1dFNpemUuaGVpZ2h0KCkgfSk7
CkBAIC04NDgsNyArODQ4LDcgQEAgSW1hZ2VCaXRtYXA6On5JbWFnZUJpdG1hcCgpCiAKIE9wdGlv
bmFsPEltYWdlQml0bWFwQmFja2luZz4gSW1hZ2VCaXRtYXA6OnRha2VJbWFnZUJpdG1hcEJhY2tp
bmcoKQogewotICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBXVEY6Om51
bGxvcHQpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fYmFja2luZ1N0b3JlLCBzdGQ6Om51
bGxvcHQpOwogfQogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0bWFwOjp0YWtlSW1hZ2VC
dWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEYXRhLmgKaW5kZXggMTY0Zjg4MmNkZjdjMGY4OTEyMTZi
YTY4ZGNhNDE3NTY1ZmJiNTI3NC4uY2ExMjhlZGJmZWFmOGJlNzIxMTU5ZGZlMzc1YWRhZWUyNDE3
OTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPElt
YWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEltYWdlRGF0YT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBSZWY8VWludDhDbGFt
cGVkQXJyYXk+JiYsIFByZWRlZmluZWRDb2xvclNwYWNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5z
aWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVyUm93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBk
ZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1hZ2VEYXRhU2V0dGluZ3M+ID0gV1RGOjpudWxs
b3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0
YT4+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgcm93cywgdW5zaWduZWQgcGl4ZWxzUGVy
Um93LCBQcmVkZWZpbmVkQ29sb3JTcGFjZSBkZWZhdWx0Q29sb3JTcGFjZSwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+ID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPEltYWdlRGF0YT4+IGNyZWF0ZSh1bnNpZ25lZCBzdywgdW5zaWdu
ZWQgc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxJbWFnZURhdGE+PiBjcmVhdGUoUmVmPFVpbnQ4Q2xhbXBl
ZEFycmF5PiYmLCB1bnNpZ25lZCBzdywgT3B0aW9uYWw8dW5zaWduZWQ+IHNoLCBPcHRpb25hbDxJ
bWFnZURhdGFTZXR0aW5ncz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOTZk
ZGZlY2MxYmM5ODBlYWQzNGM1OWU1YWUwOWY5MmM3YzBhMGE3My4uNGQzYTc4YTJjN2UzYjFjMzVl
ZTg3MmU2Y2RmYjgyZDAwODM2MGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAt
ODY4LDcgKzg2OCw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkYXRhTGlzdE1heUhhdmVDaGFuZ2VkKCkK
IE9wdGlvbmFsPERlY2ltYWw+IElucHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNv
bnN0IERlY2ltYWwmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5jcHAKaW5kZXggY2IxMzJi
NTE0NmQ4NjM5YTJmYWMxNDI2ZTMyY2VmNzU0ODlmN2M1OC4uN2MyYmExNWE1MTRlNDNkZDk3MjI3
NTEwOWUzZGI5NDJlODUyMzJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5
TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRG
cmFtZU9ic2VydmVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciog
TGF6eUxvYWRGcmFtZU9ic2VydmVyOjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9j
dQogewogICAgIGlmICghbV9vYnNlcnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6
eUZyYW1lTG9hZEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxv
cHQsIGVtcHR5U3RyaW5nKCksIHsgfSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6
SW5pdCBvcHRpb25zIHsgc3RkOjpudWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAg
ICAgYXV0byBvYnNlcnZlciA9IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2Vy
dmVyLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAKaW5kZXggYWRlOWE3YzU1
MzdlZTkyNmEwN2E0ZWRlY2IwY2ViMGI5YzRjODEzYy4uZjZjNjQyMGRjYjc3ZDUzYzZiYTBlMjIz
ZjNiY2EwNDdkYzRlOThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9h
ZEltYWdlT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6eUxvYWRJbWFn
ZU9ic2VydmVyLmNwcApAQCAtODQsNyArODQsNyBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlciogTGF6
eUxvYWRJbWFnZU9ic2VydmVyOjppbnRlcnNlY3Rpb25PYnNlcnZlcihEb2N1bWVudCYgZG9jdQog
ewogICAgIGlmICghbV9vYnNlcnZlcikgewogICAgICAgICBhdXRvIGNhbGxiYWNrID0gTGF6eUlt
YWdlTG9hZEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2s6OmNyZWF0ZShkb2N1bWVudCk7Ci0g
ICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBXVEY6Om51bGxvcHQs
IGVtcHR5U3RyaW5nKCksIHsgfSB9OworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6SW5p
dCBvcHRpb25zIHsgc3RkOjpudWxsb3B0LCBlbXB0eVN0cmluZygpLCB7IH0gfTsKICAgICAgICAg
YXV0byBvYnNlcnZlciA9IEludGVyc2VjdGlvbk9ic2VydmVyOjpjcmVhdGUoZG9jdW1lbnQsIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICAgICAgaWYgKG9ic2VydmVy
Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcAppbmRleCBmNDY3ZjRmMTM4
ZDdlNzU1ZGZjNjVhYWUyZDkxYmUwYzZmOGViMzIwLi5jYjA1ZDkwYzA5ZTIwZDljMzhkZjBlYTlj
MTM5ZjJmNmFkMTc4ZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXI6OnBhcnNlTlBUVGltZShjb25zdCBMQ2hhciogdGltZVN0cmluZywgdW5zaWduZWQgbGVu
ZwogICAgIC8vIG5wdC1zcyAgICAgICAgPSAgIDJESUdJVCAgICAgIDsgMC01OQogCiAgICAgU3Ry
aW5nIGRpZ2l0czEgPSBjb2xsZWN0RGlnaXRzKHRpbWVTdHJpbmcsIGxlbmd0aCwgb2Zmc2V0KTsK
LSAgICBpbnQgdmFsdWUxID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVPcigwKTsK
KyAgICBpbnQgdmFsdWUxID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzMSkudmFsdWVfb3IoMCk7
CiAgICAgaWYgKG9mZnNldCA+PSBsZW5ndGggfHwgdGltZVN0cmluZ1tvZmZzZXRdID09ICcsJykg
ewogICAgICAgICB0aW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHZhbHVlMSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
CmluZGV4IGQ5ZThlYjdlZjU5YjViYjdkNTgzYTBlMDhmZjMwMGU3NzI0ZTk5M2IuLjRlOGZjMjZj
YzcyMTIxNzFiNmFmZTRlZDAzM2JiMDQ4ZDRhMDVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25h
bDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0
KEpTQwogICAgIGlmIChjb250ZXh0VHlwZSA9PSBSZW5kZXJpbmdDb250ZXh0VHlwZTo6XzJkKSB7
CiAgICAgICAgIGlmIChtX2NvbnRleHQpIHsKICAgICAgICAgICAgIGlmICghaXM8T2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4geyB7IFdURjo6bnVsbG9wdCB9IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBz
dGQ6Om51bGxvcHQgfSB9OwogICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8T2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPiB7ICZkb3duY2FzdDxPZmZzY3JlZW5DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ+KCptX2NvbnRleHQpIH0gfSB9OwogICAgICAgICB9CiAKQEAgLTIzMSw3
ICsyMzEsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxPZmZzY3JlZW5SZW5kZXJpbmdDb250ZXh0
Pj4gT2Zmc2NyZWVuQ2FudmFzOjpnZXRDb250ZXh0KEpTQwogCiAgICAgICAgIG1fY29udGV4dCA9
IG1ha2VVbmlxdWU8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqdGhpcywgV1RG
TW92ZShzZXR0aW5ncykpOwogICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJl
dHVybiB7IHsgV1RGOjpudWxsb3B0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpu
dWxsb3B0IH0gfTsKIAogICAgICAgICByZXR1cm4geyB7IFJlZlB0cjxPZmZzY3JlZW5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ+IHsgJmRvd25jYXN0PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRD4oKm1fY29udGV4dCkgfSB9IH07CiAgICAgfQpAQCAtMjQ0LDcgKzI0NCw3IEBAIEV4
Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5D
YW52YXM6OmdldENvbnRleHQoSlNDCiAgICAgICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5n
Q29udGV4dD4oKm1fY29udGV4dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgeyBSZWZQdHI8
V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0wyUmVuZGVyaW5nQ29udGV4
dD4oKm1fY29udGV4dCkgfSB9IH07CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RG
OjpudWxsb3B0IH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsK
ICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0
YXRlLnZtKCkpOwpAQCAtMjUzLDcgKzI1Myw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNj
cmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDCiAK
ICAgICAgICAgY3JlYXRlQ29udGV4dFdlYkdMKGNvbnRleHRUeXBlLCBXVEZNb3ZlKGF0dHJpYnV0
ZXMpKTsKICAgICAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm4geyB7IFdU
Rjo6bnVsbG9wdCB9IH07CisgICAgICAgICAgICByZXR1cm4geyB7IHN0ZDo6bnVsbG9wdCB9IH07
CiAKICNpZiBFTkFCTEUoV0VCR0wyKQogICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dD4oKm1fY29udGV4dCkpCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIFN0cmluZyB0b0Vu
Y29kaW5nTWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHN0YXRpYyBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHlGcm9tRG91YmxlKGRvdWJsZSBxdWFsaXR5TnVtYmVyKQogewogICAgIGlm
ICghKHF1YWxpdHlOdW1iZXIgPj0gMCAmJiBxdWFsaXR5TnVtYmVyIDw9IDEpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHF1YWxpdHlOdW1iZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1JhbmdlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUu
Y3BwCmluZGV4IDc5MDRiZjQxNmQwZjM3MjUwNTZkY2M4MTYzZDc1Yzc4MDA1NGY3YzQuLjRmZjUw
Y2IzOWVkNGYzMzI3ODhkOGQ5NWRhOTA1MDgzZjE0YTU4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgT3B0aW9uYWw8RGVjaW1hbD4g
UmFuZ2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJiB2
YWx1ZSkKIHsKICAgICB1cGRhdGVUaWNrTWFya1ZhbHVlcygpOwogICAgIGlmICghbV90aWNrTWFy
a1ZhbHVlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgbGVmdCA9IDA7CiAgICAgc2l6ZV90IHJp
Z2h0ID0gbV90aWNrTWFya1ZhbHVlcy5zaXplKCk7CkBAIC00MjQsOCArNDI0LDggQEAgT3B0aW9u
YWw8RGVjaW1hbD4gUmFuZ2VJbnB1dFR5cGU6OmZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25z
dCBEZWNpbWFsJiB2YWx1ZSkKICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlOwogICAgIH0KIAot
ICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gbWFrZU9wdGlvbmFs
KG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDogV1RGOjpudWxsb3B0OwotICAgIE9wdGlv
bmFsPERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tNYXJrVmFsdWVzLnNp
emUoKSA/IG1ha2VPcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21pZGRsZV0pIDogV1RGOjpudWxs
b3B0OworICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RMZWZ0ID0gbWlkZGxlID8gc3RkOjpt
YWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlIC0gMV0pIDogc3RkOjpudWxsb3B0
OworICAgIE9wdGlvbmFsPERlY2ltYWw+IGNsb3Nlc3RSaWdodCA9IG1pZGRsZSAhPSBtX3RpY2tN
YXJrVmFsdWVzLnNpemUoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3RpY2tNYXJrVmFsdWVzW21p
ZGRsZV0pIDogc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjbG9zZXN0TGVmdCkKICAgICAgICAg
cmV0dXJuIGNsb3Nlc3RSaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlw
ZUFoZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAppbmRleCA5MDY5
ZDBmMzU3ZDk4MmRiY2VmZDcwZjdjNTQ4OTJjYmU0MWM0MjZlLi41YWUwMmVlODY0ZmE4NmQxMzMx
NzU4MGM4ZDU3M2ZhYjg1NzQxNmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1R5
cGVBaGVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgaW50IFR5cGVBaGVhZDo6aGFuZGxlRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQsIE1hdGNoTW9kZUZsYWdzIG1hdGNoTW9kZSkKICAgICB9CiAKICAgICBpZiAobWF0Y2hN
b2RlICYgTWF0Y2hJbmRleCkgewotICAgICAgICBpbnQgaW5kZXggPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fYnVmZmVyKS52YWx1ZU9yKDApOworICAgICAgICBpbnQg
aW5kZXggPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KG1fYnVmZmVyKS52
YWx1ZV9vcigwKTsKICAgICAgICAgaWYgKGluZGV4ID4gMCAmJiBpbmRleCA8PSBvcHRpb25Db3Vu
dCkKICAgICAgICAgICAgIHJldHVybiBpbmRleCAtIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggMDQ5ODYyOGY4ZTZhNjliNjJmNGFiOGQ1MjAw
YmExNjlhNWQ0Njk5ZS4uMWU3MTg3MTVkYzgwNDlhOTJlNmJkYTI4Y2Q3MTBiOGI1OGI3MzI5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC0xNzIsMTIgKzE3
MiwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8T3B0aW9uYWw8dWludDE2X3Q+PiBwYXJzZVBvcnQoU3Ry
aW5nVmlldyBzdHJpbmcsIFN0cmluZ1ZpZXcgcHJvdAogewogICAgIGF1dG8gZGlnaXRzT25seSA9
IHN0cmluZy5sZWZ0KGNvdW50QVNDSUlEaWdpdHMoc3RyaW5nKSk7CiAgICAgaWYgKGRpZ2l0c09u
bHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RGOjpu
dWxsb3B0IH07CisgICAgICAgIHJldHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBzdGQ6Om51bGxv
cHQgfTsKICAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGRpZ2l0c09ubHkp
OwogICAgIGlmICghcG9ydCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoV1RGOjppc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woKnBvcnQsIHByb3RvY29sKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPHVpbnQxNl90PiB7
IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgc3Rk
OjpudWxsb3B0IH07CiAgICAgcmV0dXJuIHsgeyAqcG9ydCB9IH07CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAppbmRleCBhOGU1N2YzNDIzNGEwMjY3YWU4NjVjNzVh
MWNiNmI5ZTBhMTk4OWE2Li4wYzg4YTA1ZTdkYjQ0MTBlYWMzZDBjNTJmNWQ5OGQ5MjU2MTcyMmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJhbXMuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBVUkxTZWFy
Y2hQYXJhbXM6Okl0ZXJhdG9yOjpuZXh0KCkKIHsKICAgICBhdXRvJiBwYWlycyA9IG1fdGFyZ2V0
LT5wYWlycygpOwogICAgIGlmIChtX2luZGV4ID49IHBhaXJzLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIHBhaXIgPSBwYWlyc1ttX2luZGV4KytdOwogICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFp
cjxTdHJpbmcsIFN0cmluZz4geyBwYWlyLmtleSwgcGFpci52YWx1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAppbmRleCAwYWExZjEyMWJmNjg1NzY3
NDg0YTVkNmIyZTI3OTM1YmQ4NjE2NjgzLi44ZjE5MzgyY2IyMDNkMmU0MTFiY2E5NTdhNjkxYjFm
YWM5OGEyY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNQYXR0ZXJuOjpz
ZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0JiYgbWF0cml4SW5pdCkKICAgICBpZiAoY2hlY2tW
YWxpZC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNoZWNrVmFsaWQucmVsZWFzZUV4
Y2VwdGlvbigpOwogCi0gICAgbV9wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oeyBt
YXRyaXhJbml0LmEudmFsdWVPcigxKSwgbWF0cml4SW5pdC5iLnZhbHVlT3IoMCksIG1hdHJpeElu
aXQuYy52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmQudmFsdWVPcigxKSwgbWF0cml4SW5pdC5lLnZh
bHVlT3IoMCksIG1hdHJpeEluaXQuZi52YWx1ZU9yKDApIH0pOworICAgIG1fcGF0dGVybi0+c2V0
UGF0dGVyblNwYWNlVHJhbnNmb3JtKHsgbWF0cml4SW5pdC5hLnZhbHVlX29yKDEpLCBtYXRyaXhJ
bml0LmIudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuYy52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5k
LnZhbHVlX29yKDEpLCBtYXRyaXhJbml0LmUudmFsdWVfb3IoMCksIG1hdHJpeEluaXQuZi52YWx1
ZV9vcigwKSB9KTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGViMDE4Mjgz
ZDhmODBlNjFmY2ZjNjQxMWQxOGMxNWIyMzI3NzA2ZmMuLjQ5ZmVlMmU5MTNmNzAyZTFmYmM3YWMw
N2MxZDc5OTA3NTY5ZWU1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoK
IAogICAgIENhbnZhc0RpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIHZvaWQgZmls
bFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9h
dD4gbWF4V2lkdGggPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9
IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7
CisgICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQg
eSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4
dE1ldHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CkBA
IC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEZvbnRXaXRob3V0VXBkYXRp
bmdTdHlsZShjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0SW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFs
PGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lm
TmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYsIEVsZW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAppbmRleCBlN2MwMjg1Zjc1NTQ1NDgwM2IxNDBjOTIwYmQ0YjJhZmRmZTYxZjRlLi5kNzkw
YzYyYmVkYjJjYThmZDgwOTRkOTZhMGFkMTcyMjRiZDdjNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcApAQCAtMTA2Miw3ICsxMDYyLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzRmlsbFJ1bGUKICAgICAg
ICAgYy0+ZmlsbFBhdGgocGF0aCk7CiAgICAgCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3Jl
RGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3
KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAg
ICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTExMDEsNyArMTEwMSw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6c3Ryb2tlSW50ZXJuYWwoY29uc3Qg
UGF0aCYgcGF0aCkKICAgICAgICAgYy0+c3Ryb2tlUGF0aChwYXRoKTsKIAogICAgIGlmIChpc0Vu
dGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJlcGFpbnRFbnRp
cmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBlbHNlIHsKQEAg
LTExNjUsNyArMTE2NSw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQ
b2ludEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0CiAgICAgaWYgKCFzdGF0
ZS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8g
dHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3Rk
Ojppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNm
b3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExODAsNyArMTE4
MCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tl
SW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvCiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRp
YmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9y
bWVkUG9pbnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQ
b2ludCA9IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0
cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55
KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEyNzEsNyArMTI3MSw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgd2lkdGgsIGZsb2F0CiAgICAgICAgIGMtPmZpbGxSZWN0KHJlY3QpOwogCiAgICAgaWYg
KGlzRW50aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxv
cHQpOworICAgICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWlu
dEVudGlyZUNhbnZhcykKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UK
QEAgLTEzMTEsNyArMTMxMSw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
c3Ryb2tlUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvCiAgICAgICAgIGMt
PnN0cm9rZVJlY3QocmVjdCwgc3RhdGUoKS5saW5lV2lkdGgpOwogCiAgICAgaWYgKGlzRW50aXJl
QmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAg
ICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNh
bnZhcykKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UgewpAQCAtMTU5
MSw3ICsxNTkxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgYy0+ZHJhd0lt
YWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcHRpb25z
KTsKIAogICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERy
YXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVs
c2UgaWYgKHJlcGFpbnRFbnRpcmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMo
KTsKICAgICBlbHNlCkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoQ2FudmFzQmFzZSYgc291cmNlQ2Fu
dgogICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwg
eyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAogICAg
IGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYgKHJl
cGFpbnRFbnRpcmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICBl
bHNlCkBAIC0xNjg5LDcgKzE2ODksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgICAg
ICBjLT5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBGbG9hdFNpemUodmlkZW8udmlkZW9XaWR0aCgp
LCB2aWRlby52aWRlb0hlaWdodCgpKSwgZHN0UmVjdCwgc3JjUmVjdCk7CiAKICAgICAgICAgaWYg
KGlzRW50aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgICAgIGRpZERyYXcoV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgICAgIGRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICAgICAgZWxz
ZSBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKQogICAgICAgICAgICAgZGlkRHJhd0Vu
dGlyZUNhbnZhcygpOwogICAgICAgICBlbHNlCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTFZp
ZGVvRWxlbWVudCYgdmlkZQogICAgIHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogCiAgICAgaWYgKGlz
RW50aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQp
OworICAgICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZQogICAgICAgICBkaWRE
cmF3KGRzdFJlY3QpOwogCkBAIC0xNzU5LDcgKzE3NTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdl
Qml0bQogICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVj
dCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKIAog
ICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYg
KHJlcGFpbnRFbnRpcmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICBlbHNlCkBAIC0yMDY3LDcgKzIwNjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmRpZERyYXcoT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25TZXQ8RAogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIXJlY3QpIHsKLSAgICAgICAgY2FudmFzQmFzZSgpLmRp
ZERyYXcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA5Miw3ICsyMDkyLDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkaWREcmF3KE9wdGlvbmFsPEZsb2F0
UmVjdD4gcmVjdCwgT3B0aW9uU2V0PEQKICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBhcHBs
eSB0aGUgY2xpcCBiZWNhdXNlIHdlIGhhdmUgbm8gd2F5IG9mIHJlYWRpbmcgdGhlIGNsaXAgb3V0
IG9mIHRoZSBHcmFwaGljc0NvbnRleHQuCiAKICAgICBpZiAobV9kaXJ0eVJlY3QuY29udGFpbnMo
ZGlydHlSZWN0KSkKLSAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgY2FudmFzQmFzZSgpLmRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAgICBlbHNlIHsK
ICAgICAgICAgbV9kaXJ0eVJlY3QudW5pdGUoZGlydHlSZWN0KTsKICAgICAgICAgY2FudmFzQmFz
ZSgpLmRpZERyYXcobV9kaXJ0eVJlY3QpOwpAQCAtMjU0MCw3ICsyNTQwLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3VGV4dFVuY2hlY2tlZChjb25zdCBUZXh0UnVu
JiB0ZXh0UnVuLCBmbG8KICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1
biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKIAog
ICAgIGlmIChpc0VudGlyZUJhY2tpbmdTdG9yZURpcnR5KCkpCi0gICAgICAgIGRpZERyYXcoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgaWYg
KHJlcGFpbnRFbnRpcmVDYW52YXMpCiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKaW5kZXggMmQ1NDkzMDdlMmNlZThiZWNkZGYxYTBkMDM0
ZjRiMjg3MjM3NmIxYy4uMGM5ZWQxY2U5NWE3ODZiZDhiYTE5ZGIwMjlmODkzZDMxYTQyZGM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2UuaApAQCAtMTQxLDExICsxNDEsMTEgQEAgcHVibGljOgogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJik7CiAgICAgdm9p
ZCByZXNldFRyYW5zZm9ybSgpOwogCi0gICAgdm9pZCBzZXRTdHJva2VDb2xvcihjb25zdCBTdHJp
bmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFs
cGhhID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGZsb2F0IGdyYXlM
ZXZlbCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQg
ciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSk7CiAKLSAgICB2b2lkIHNldEZpbGxDb2xvcihj
b25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQp
OworICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFsPGZs
b2F0PiBhbHBoYSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQg
Z3JheUxldmVsLCBmbG9hdCBhbHBoYSA9IDEuMGYpOwogICAgIHZvaWQgc2V0RmlsbENvbG9yKGZs
b2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpOwogCkBAIC0xNjksNyArMTY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZmlsbFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCk7CiAgICAgdm9pZCBzdHJva2VSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwogCi0gICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmlu
ZygpLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgc2V0
U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmlu
ZyYgY29sb3IgPSBTdHJpbmcoKSwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpudWxsb3B0
KTsKICAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBi
bHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhID0gMS4wKTsKICAgICB2b2lkIHNldFNo
YWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9h
dCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKIApAQCAtMzAyLDkgKzMwMiw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCi0g
ICAgdm9pZCBkcmF3VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJv
b2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKLSAgICBi
b29sIGNhbkRyYXdUZXh0KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8Zmxv
YXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2Vk
KGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZs
b2F0PiBtYXhXaWR0aCA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBkcmF3VGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+
IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICBib29sIGNhbkRyYXdUZXh0KGZsb2F0IHgs
IGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mLCBmbG9hdCB4
LCBmbG9hdCB5LCBib29sIGZpbGwsIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVs
bG9wdCk7CiAKICAgICBSZWY8VGV4dE1ldHJpY3M+IG1lYXN1cmVUZXh0SW50ZXJuYWwoY29uc3Qg
VGV4dFJ1biYpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25z
dCBTdHJpbmcmIHRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUu
Y3BwCmluZGV4IGIwYzYyNTk0MmIyYjUwYjgxYjQ4NjBkNGNiZWI5ZThhMmNmODFmOWQuLjkwYTBl
YzU3ZGQwZDVlZTVmZGI0NzBiYThmZTg3NjE4MTc5MGM1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBpbmxpbmUgQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKEN1cnJlbnRDb2xvciBjb2xvcikKIENhbnZhc1N0eWxlIENh
bnZhc1N0eWxlOjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIENh
bnZhc0Jhc2UmIGNhbnZhc0Jhc2UpCiB7CiAgICAgaWYgKGlzQ3VycmVudENvbG9yU3RyaW5nKGNv
bG9yU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIEN1cnJlbnRDb2xvciB7IFdURjo6bnVsbG9wdCB9
OworICAgICAgICByZXR1cm4gQ3VycmVudENvbG9yIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBD
b2xvciBjb2xvciA9IHBhcnNlQ29sb3IoY29sb3JTdHJpbmcsIGNhbnZhc0Jhc2UpOwogICAgIGlm
ICghY29sb3IuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBiMTY4
MTkyMWQ4ZTM3NTgxMWE2ZmU5YTUxYTE4YTcwZTc5MWZmNWExLi40MTNkZTkyMjk5NzhlOGY2ZWFl
MThkOTE5NjBmYmI2OGM0MjBlNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAt
NDcsOCArNDcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEZvbnQoY29uc3QgU3RyaW5nJik7
CiAgICAgQ2FudmFzRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwotICAgIHZvaWQgZmlsbFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4g
bWF4V2lkdGggPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgc3Ryb2tlVGV4dChjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwg
T3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKICAgICBSZWY8VGV4dE1l
dHJpY3M+IG1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUGF0aDJELmNwcAppbmRleCAzODVlOWRhYmY1ZGNiY2EzYmQyMmZl
YWE5NWY3ODRkMmY0Nzk0YjMxLi4yMTViN2QzYmFkMmI4NTQzMzFmNjRiM2YxYzAzMzQ1ZjJjMmNl
MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QYXRoMkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gUGF0aDJEOjphZGRQYXRoKFBhdGgyRCYgcGF0aCwgRE9NTWF0
cml4MkRJbml0JiYgbWF0cml4SW5pdCkKICAgICBpZiAoY2hlY2tWYWxpZC5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGNoZWNrVmFsaWQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAg
bV9wYXRoLmFkZFBhdGgocGF0aC5wYXRoKCksIHsgbWF0cml4SW5pdC5hLnZhbHVlT3IoMSksIG1h
dHJpeEluaXQuYi52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmMudmFsdWVPcigwKSwgbWF0cml4SW5p
dC5kLnZhbHVlT3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmYudmFs
dWVPcigwKSB9KTsKKyAgICBtX3BhdGguYWRkUGF0aChwYXRoLnBhdGgoKSwgeyBtYXRyaXhJbml0
LmEudmFsdWVfb3IoMSksIG1hdHJpeEluaXQuYi52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5jLnZh
bHVlX29yKDApLCBtYXRyaXhJbml0LmQudmFsdWVfb3IoMSksIG1hdHJpeEluaXQuZS52YWx1ZV9v
cigwKSwgbWF0cml4SW5pdC5mLnZhbHVlX29yKDApIH0pOwogICAgIHJldHVybiB7IH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNw
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
LmNwcAppbmRleCBlZjdkMTA4Mjk3NDhhZDI3ZWM4YTg2NjdhNDlkNDQ4MGU1ZjVmM2E4Li40YjNh
NDE5NjhlMzU0Mjk2OTY2NjgwMTIwMzlmMWZlNzFhZjUwMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIE9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjCiAgICAgICAgIHJldHVybiBQcmVkZWZpbmVk
Q29sb3JTcGFjZTo6RGlzcGxheVAzOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYmU5ZDkz
M2QzYjI4ZGI1NjY0NzZhYzQ5MWY0YTFiYjI0ZmZkMzI0OS4uNDQ3YzEyMGFkMTQyOGU2MzljYmMy
NTU4ZmM2M2ZkOWE4Y2UyMWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI1MTksNyArMjUxOSw3IEBAIFdl
YkdMQW55IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMdWludCBpCiBPcHRpb25hbDxWZWN0b3I8R0NHTHVpbnQ+PiBXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtSW5kaWNlcyhXZWJHTFByb2dyYW0mIHByb2dyYW0s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBuYW1lcykKIHsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQ
cm9ncmFtT3JTaGFkZXIoImdldFVuaWZvcm1JbmRpY2VzIiwgJnByb2dyYW0pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiBtX2NvbnRleHQtPmdldFVuaWZvcm1JbmRpY2VzKHByb2dyYW0ub2JqZWN0KCksIG5hbWVz
KTsKIH0KIApAQCAtMjcxMSw3ICsyNzExLDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVkRXh0ZW5z
aW9ucygpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3Bw
CmluZGV4IDdiNTc3YTQ5NDMzMmJiZTA1ODFhOWJlYzgzODM1YmI4YTQzYmFhNGMuLjNlMzRhMThm
N2Y2ZjY5NGU0Y2FmZWU1ZTExNTM3ZmY1NDA1NmFlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBPcHRpb25hbDx1bnNp
Z25lZD4gV2ViR0xCdWZmZXI6OmdldENhY2hlZE1heEluZGV4KEdDR0xlbnVtIHR5cGUpCiAgICAg
ICAgIGlmIChjYWNoZS50eXBlID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUubWF4
SW5kZXg7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVu
dW0gdHlwZSwgdW5zaWduZWQgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjOWE5NDRjNmUxMDI5ZjQ0ZDNk
MDRmMjczMzUyMGE5MTBlYzQ4ZDI0Li5mYTY3NTgzZGUzYTIwNmIxMDhjYTQwMjc2OWE3YmNlNTZk
MmQwYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIyMCw3ICsyMjAsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVk
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCBiY2JjODkyNGE5ZjQ4MmVj
YzA1ZTE0NDIwOTNmN2QxNjdiM2M3OTc3Li4xY2FmMDQ2YTUxMDU0Zjk3MDk0MDNjZTZlY2M2YTNk
MzVkZmRiOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMTIzOSw3ICsxMjM5LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygp
CiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9QaXhlbEJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RP
clBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhcklmQ29tcG9zaXRlZChDbGVhckNhbGxlck90aGVyKTsK
ICAgICByZXR1cm4gbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb1BpeGVsQnVmZmVy
KCk7CiB9CkBAIC0yODY5LDcgKzI4NjksNyBAQCBSZWZQdHI8V2ViR0xBY3RpdmVJbmZvPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogT3B0
aW9uYWw8VmVjdG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtJiBwcm9ncmFtKQogewogICAgIGlm
ICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0QXR0YWNoZWRTaGFkZXJzIiwgJnBy
b2dyYW0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgY29uc3QgR0NHTGVudW0gc2hhZGVyVHlwZXNbXSA9IHsKICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0R0w6OlZFUlRFWF9TSEFERVIsCkBAIC0yOTQxLDcgKzI5NDEsNyBA
QCBXZWJHTEFueSBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRCdWZmZXJQYXJhbWV0ZXIo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMZW51bQogT3B0aW9uYWw8V2ViR0xDb250ZXh0QXR0cmlidXRl
cz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewog
ICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBBbHNvLCB3ZSBu
ZWVkIHRvIGVuZm9yY2UgcmVxdWVzdGVkIHZhbHVlcyBvZiAiZmFsc2UiIGZvciBkZXB0aAogICAg
IC8vIGFuZCBzdGVuY2lsLCByZWdhcmRsZXNzIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSB1bmRl
cmx5aW5nCkBAIC01MzE0LDcgKzUzMTQsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBUZQogCiAg
ICAgaWYgKCF2YWxpZGF0ZVNldHRhYmxlVGV4SW50ZXJuYWxGb3JtYXQoZnVuY3Rpb25OYW1lLCBm
b3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCF2YWxpZGF0ZUFycmF5QnVm
ZmVyVHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlvbmFsPEpTQzo6VHlwZWRB
cnJheVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IFdURjo6bnVsbG9wdCkpCisgICAgaWYgKCF2
YWxpZGF0ZUFycmF5QnVmZmVyVHlwZShmdW5jdGlvbk5hbWUsIHR5cGUsIHBpeGVscyA/IE9wdGlv
bmFsPEpTQzo6VHlwZWRBcnJheVR5cGU+KHBpeGVscy0+Z2V0VHlwZSgpKSA6IHN0ZDo6bnVsbG9w
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXNSZXF1
aXJlZCwgc2tpcEJ5dGVzOwpAQCAtNzQ0Myw3ICs3NDQzLDcgQEAgT3B0aW9uYWw8Ym9vbD4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDR0x1aW50IG51
bVZlcnQKICAgICAgICAgICAgIG1fdmVydGV4QXR0cmliMFVzZWRCZWZvcmUgPSBmYWxzZTsKICAg
ICAgICAgICAgIG1fdmVydGV4QXR0cmliMEJ1ZmZlclNpemUgPSAwOwogICAgICAgICAgICAgbV9m
b3JjZUF0dHJpYjBCdWZmZXJSZWZpbGwgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAg
ICAgICAgbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyU2l6ZSA9IGJ1ZmZlckRhdGFTaXplOwogICAgICAg
ICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJlZmlsbCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggMWMz
MWU4NzhmNzExNGUzNWU2NmQ3ODdhNGQ4NDM5ZWRmOGQ4YjNhMy4uN2RiNDkxZTZkODRmNTZmYzA4
MjYyMTBhM2UzZDk2MDIyYzllMWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtMTE0NCw3ICsxMTQ0LDcg
QEAgaW5saW5lIE9wdGlvbmFsPFQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrZWRB
ZGRBbmRNdWx0aXBseShUIHZhbHVlLCBUIGEKICAgICBjaGVja2VkUmVzdWx0ICs9IENoZWNrZWQ8
VD4oYWRkKTsKICAgICBjaGVja2VkUmVzdWx0ICo9IENoZWNrZWQ8VD4obXVsdGlwbHkpOwogICAg
IGlmIChjaGVja2VkUmVzdWx0Lmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBjaGVj
a2VkUmVzdWx0LnVuc2FmZUdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IGU1ZmViOTNlYzhiNzNkYjUzZjAw
OTdjY2QwNjBkYTNmMGRkZmQyNGIuLmJjZmY4YTdlY2JjMTAyOTlkNGY5MWQ0NzA1NTYwMzM0YWJm
OGE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTcyNSwxNCArNzI1LDE0IEBAIFJlZjxIVE1MU3RhY2tJdGVtPiBI
VE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRlRWxlbWVudEZyb21TYXZlZFRva2VuKEhUTUxTdGFj
a0l0CiBPcHRpb25hbDx1bnNpZ25lZD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmluZGV4T2ZGaXJz
dFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAobV9hY3RpdmVGb3Jt
YXR0aW5nRWxlbWVudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9hY3Rp
dmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpOwogICAgIGRvIHsKICAgICAgICAgLS1pbmRleDsK
ICAgICAgICAgY29uc3QgYXV0byYgZW50cnkgPSBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5h
dChpbmRleCk7CiAgICAgICAgIGlmIChlbnRyeS5pc01hcmtlcigpIHx8IG1fb3BlbkVsZW1lbnRz
LmNvbnRhaW5zKGVudHJ5LmVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGZpcnN0
VW5vcGVuRWxlbWVudEluZGV4ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgcmV0dXJuIGZpcnN0
VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuc2l6ZSgpID8g
Zmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBPcHRpb25hbDx1bnNpZ25lZD4oV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIHJldHVybiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCA8IG1fYWN0aXZl
Rm9ybWF0dGluZ0VsZW1lbnRzLnNpemUoKSA/IGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDogT3B0
aW9uYWw8dW5zaWduZWQ+KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChp
bmRleCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKaW5kZXggNzY3OTg0NjdlMzQwNDZmY2RiNWU1NjRmYjkxZTdmYTM0MjRjNDJhYi4uYzkx
NzJjMGE0ZjIxMjRmOWYxYzhjMWRhYzAwNWI2M2ZmN2M1MTE1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTIyNSwxMiArMjI1LDEy
IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2Vy
SW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwCiAgICAgLy8gQSBzdHJpbmcgaXMgYSB2YWxpZCBu
b24tbmVnYXRpdmUgaW50ZWdlciBpZiBpdCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBBU0NJSSBk
aWdpdHMuCiAgICAgZm9yIChhdXRvKiBjID0gcG9zaXRpb247IGMgPCBlbmQ7ICsrYykgewogICAg
ICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqYykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRv
IG9wdGlvbmFsU2lnbmVkVmFsdWUgPSBwYXJzZUhUTUxJbnRlZ2VySW50ZXJuYWwocG9zaXRpb24s
IGVuZCk7CiAgICAgaWYgKCFvcHRpb25hbFNpZ25lZFZhbHVlIHx8IG9wdGlvbmFsU2lnbmVkVmFs
dWUudmFsdWUoKSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gb3B0aW9uYWxTaWduZWRWYWx1ZS52YWx1
ZSgpOwogfQpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlVmFs
aWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwCiBPcHRp
b25hbDxpbnQ+IHBhcnNlVmFsaWRIVE1MTm9uTmVnYXRpdmVJbnRlZ2VyKFN0cmluZ1ZpZXcgaW5w
dXQpCiB7CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFkoaW5w
dXQuaXM4Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgo
KTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwYXJzZVZhbGlk
SFRNTEZsb2F0aW5nUG9pbnROdW1iZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZQogICAgIC8vIHBh
cnNlRG91YmxlKCkgYWxsb3dzIHRoZSBzdHJpbmcgdG8gc3RhcnQgd2l0aCBhICcrJyBvciB0byBl
bmQgd2l0aCBhICcuJyBidXQgdGhvc2UKICAgICAvLyBhcmUgbm90IHZhbGlkIGZsb2F0aW5nIHBv
aW50IG51bWJlcnMgYXMgcGVyIEhUTUwuCiAgICAgaWYgKCpwb3NpdGlvbiA9PSAnKycgfHwgKihw
b3NpdGlvbiArIGxlbmd0aCAtIDEpID09ICcuJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBwYXJzZWRMZW5n
dGggPSAwOwogICAgIGRvdWJsZSBudW1iZXIgPSBwYXJzZURvdWJsZShwb3NpdGlvbiwgbGVuZ3Ro
LCBwYXJzZWRMZW5ndGgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3Vi
bGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlckludGVybmFsKGNvbnN0IENoYXJh
Y3RlCiBPcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihT
dHJpbmdWaWV3IGlucHV0KQogewogICAgIGlmIChpbnB1dC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoTElLRUxZKGlucHV0LmlzOEJpdCgpKSkgewogICAgICAgICBhdXRvKiBzdGFydCA9IGlucHV0
LmNoYXJhY3RlcnM4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAppbmRleCBjMzEzZGQ1NGY5NDY0NzMxY2U2NmE3NDdkMjg4YTY2Mjcx
NjBlMGUxLi5iNzFmMWI0ZTRiMDMzZjI2YTJiMzk3MWJkOGQ4YzE3NGVjM2IxNGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAg
LTI1NCw3ICsyNTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fbm9uY2VBdHRyaWJ1
dGUgPSBhdHRyaWJ1dGVWYWx1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgcmVmZXJyZXJwb2xpY3lBdHRyKSkgewot
ICAgICAgICAgICAgICAgIG1fcmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGF0
dHJpYnV0ZVZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1
dGUpLnZhbHVlT3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKKyAgICAgICAgICAgICAg
ICBtX3JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVWYWx1ZSwg
UmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZV9vcihS
ZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBub21vZHVsZUF0dHIpKSB7
CiAgICAgICAgICAgICAgICAgbV9zY3JpcHRJc05vbW9kdWxlID0gdHJ1ZTsKQEAgLTI4NSw3ICsy
ODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFt
ZSwgdHlwZUF0dHIpKQogICAgICAgICAgICAgICAgIG1fdHlwZUF0dHJpYnV0ZSA9IGF0dHJpYnV0
ZVZhbHVlOwogICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgcmVmZXJy
ZXJwb2xpY3lBdHRyKSkKLSAgICAgICAgICAgICAgICBtX3JlZmVycmVyUG9saWN5ID0gcGFyc2VS
ZWZlcnJlclBvbGljeShhdHRyaWJ1dGVWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVy
cmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7
CisgICAgICAgICAgICAgICAgbV9yZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3ko
YXR0cmlidXRlVmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJp
YnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRhZ0lkOjpJbnB1dDoKICAgICAgICAgICAgIGlmIChtYXRj
aChhdHRyaWJ1dGVOYW1lLCBzcmNBdHRyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAppbmRleCBiZWJkNTJhNTRlN2MyYmNlZTAw
OWQ1M2ZlOGFjYzUzNzQwZWQ5ZjA2Li5lZGQwYzE4MTkwOWExZDZjODNkMTcyMTRhZjM4NWFjMWRi
MTJhMjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZp
ZWxkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50
U3R5bGU+IERhdGVUaW1lRmllbGRFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVu
CiB7CiAgICAgYXV0byBlbGVtZW50U3R5bGUgPSByZXNvbHZlU3R5bGUoJnBhcmVudFN0eWxlKTsK
ICAgICBpZiAoIWVsZW1lbnRTdHlsZS5yZW5kZXJTdHlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0eWxl
ID0gKmVsZW1lbnRTdHlsZS5yZW5kZXJTdHlsZTsKICAgICBhZGp1c3RNaW5XaWR0aChzdHlsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNG
aWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1l
cmljRmllbGRFbGVtZW50LmNwcAppbmRleCA2ZjYxNDBjYmEzNTcxOGRlY2Q1ZWYyZWRjMWNhNjZj
ODliNDQ1ZWRiLi5hMzFlOTI0NmY4MTUwY2ZlYzA0ODc2ZTZhNTliYzNkMDJlNTY3NzQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJp
Y0ZpZWxkRWxlbWVudC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIERhdGVUaW1lTnVtZXJp
Y0ZpZWxkRWxlbWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBrZXlib2Fy
ZEV2ZQogICAgIH0KIAogICAgIG1fdHlwZUFoZWFkQnVmZmVyLmFwcGVuZChudW1iZXIpOwotICAg
IHNldFZhbHVlQXNJbnRlZ2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
bV90eXBlQWhlYWRCdWZmZXIpLnZhbHVlT3IoMCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVu
dHMpOworICAgIHNldFZhbHVlQXNJbnRlZ2VyKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4obV90eXBlQWhlYWRCdWZmZXIpLnZhbHVlX29yKDApLCBEaXNwYXRjaElucHV0QW5k
Q2hhbmdlRXZlbnRzKTsKIAogICAgIGtleWJvYXJkRXZlbnQuc2V0RGVmYXVsdEhhbmRsZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCmluZGV4IDYzZjczMTFiMDlkOTUxNjdkNGVmOGJlYzJkYzVlYjAyZTY4NGJhYWQuLjU3NTJl
Nzk3NDlkYmNjMDFlYjc0YjNmYjgzMjYzN2UyZWIyYzA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAtNTkzLDcgKzU5Myw3
IEBAIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlclRodW1iRWxlbWVudDo6cmVz
b2x2ZUN1c3RvbVN0eWxlKGNvbnN0IFJlbmRlCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRl
c3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBtZWRpYVNsaWRlclRodW1iU2hhZG93UHNldWRvSWQo
Ii13ZWJraXQtbWVkaWEtc2xpZGVyLXRodW1iIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpOwogCiAgICAgaWYgKCFob3N0U3R5bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGhvc3RTdHls
ZS0+YXBwZWFyYW5jZSgpKSB7CiAgICAgY2FzZSBNZWRpYVNsaWRlclBhcnQ6CkBAIC02MDgsNyAr
NjA4LDcgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50
OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGUKICAgICAgICAgbV9zaGFkb3dQc2V1ZG9J
ZCA9IHNsaWRlclRodW1iU2hhZG93UHNldWRvSWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBBdG9tU3RyaW5n
JiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTY0Nyw3ICs2
NDcsNyBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUgogICAgIHN0YXRpYyBNYWluVGhyZWFkTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc2xpZGVyQ29udGFpbmVyKCItd2Via2l0LXNs
aWRlci1jb250YWluZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAg
ICBpZiAoIWhvc3RTdHlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJhbmNl
KCkpIHsKICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoKQEAgLTY2Miw3ICs2NjIsNyBAQCBPcHRp
b25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpyZXNvbHZl
Q3VzdG9tU3R5bGUoY29uc3QgUgogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVyQ29u
dGFpbmVyOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgQXRvbVN0cmluZyYgU2xpZGVyQ29udGFpbmVyRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKaW5kZXggNTMzMTIxMjUxMDE1
NjhmMDhiMWMxMzM0NjJkMWUxOGRhODg3NGE2OS4uYTQ5YmM5MDAwZDk2MWNlZDk5MDlmZmM1ZjJi
NjFhY2FiZDg4NmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgT3B0aW9u
YWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OnJlc29sdmVD
dXN0b21TdHlsZShjb25zdAogICAgICAgICAvLyBzdHlsZSB0byBjYWxjdWxhdGUgZW0gbGVuZ3Ro
cy4gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJlIGluIGEgZG9jdW1lbnQsIGp1c3QgcGFz
cyBudWxscHRyCiAgICAgICAgIC8vIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0eWxlLCB0aGUgcGFy
ZW50IGVsZW1lbnQgc3R5bGUsIGFuZCB0aGUgcmVuZGVyIHZpZXcuCiAgICAgICAgIGF1dG8gZW1T
aXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLCBDU1NVbml0VHlwZTo6Q1NTX0VNUyk7
Ci0gICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDEuMCwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBpbnQgcGl4ZWxzID0gZW1TaXpl
LT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7IG5ld1N0eWxl
LmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCB9KTsK
ICAgICAgICAgbmV3U3R5bGUtPnNldEZsZXhCYXNpcyhMZW5ndGggeyBwaXhlbHMsIExlbmd0aFR5
cGU6OkZpeGVkIH0pOwogICAgIH0KIApAQCAtMjQzLDE0ICsyNDMsMTQgQEAgT3B0aW9uYWw8U3R5
bGU6OkVsZW1lbnRTdHlsZT4gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDo6cmVzb2x2
ZUN1c3RvbVN0eWwKIHsKICAgICBhdXRvIGlucHV0ID0gbWFrZVJlZlB0cihkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PihzaGFkb3dIb3N0KCkpKTsKICAgICBpZiAoaW5wdXQgJiYgaW5wdXQtPm1h
eFJlc3VsdHMoKSA+PSAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHNoYWRvd0hvc3RTdHlsZSAmJiBzaGFkb3dI
b3N0U3R5bGUtPmFwcGVhcmFuY2UoKSAhPSBTZWFyY2hGaWVsZFBhcnQpIHsKICAgICAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gY2FuQWRqdXN0U3R5bGVGb3JBcHBlYXJhbmNlKG1fY2FuQWRqdXN0U3R5
bGVGb3JBcHBlYXJhbmNlLCBmYWxzZSk7CiAgICAgICAgIHJldHVybiByZXNvbHZlU3R5bGUoJnBh
cmVudFN0eWxlKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJlYWRlci5jcHAKaW5kZXggNTdkZDJiZjhhMWM2NzZk
OTgzOWRkMjgyOThjOTZiOTMyYzhjZDMxNi4uYjU4ZmQzOGMwNGEwZjVkYTU5NThkNWY5NTRiNmY1
NGNhNzEwMDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJl
ZExpbmVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVyZWRM
aW5lUmVhZGVyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEJ1ZmZlcmVk
TGluZVJlYWRlcjo6bmV4dExpbmUoKQogICAgIH0KIAogICAgIEFTU0VSVChtX2J1ZmZlci5pc0Vt
cHR5KCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwCmluZGV4IDcyN2E4ZWExOGRlMTAyYjIwYmQ2NTI4MDk1YmI5NTJlY2FhN2U2
ZmIuLmQ5YjQ3ZDIwYjg5YmI2Nzg2OGIwZGZjZTcxMjI0Mjk2NzE4MGEwMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQ5MCw4ICs0OTAsOCBAQCBpbnQgVGV4
dFRyYWNrOjp0cmFja0luZGV4KCkKIAogdm9pZCBUZXh0VHJhY2s6OmludmFsaWRhdGVUcmFja0lu
ZGV4KCkKIHsKLSAgICBtX3RyYWNrSW5kZXggPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9yZW5kZXJl
ZFRyYWNrSW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgbV90cmFja0luZGV4ID0gc3RkOjpudWxs
b3B0OworICAgIG1fcmVuZGVyZWRUcmFja0luZGV4ID0gc3RkOjpudWxsb3B0OwogfQogCiBib29s
IFRleHRUcmFjazo6aXNSZW5kZXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2
ZW50LmNwcAppbmRleCA2NjMyMGQ3NDc1ZTdlNmM2MzhkMGVkMTA2ZWQwMGNlYzY5NGMxZjAzLi44
NjA5ZjhmYTE0ZjA1NTRkOWRkOTFkNjljNTIyNGZkMjdlNDkwM2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGlubGlu
ZSBPcHRpb25hbDxUcmFja0V2ZW50OjpUcmFja0V2ZW50VHJhY2s+IGNvbnZlcnRUb1RyYWNrRXZl
bnRUcmFjayhSZWYKIHsKICAgICBzd2l0Y2ggKHRyYWNrLT50eXBlKCkpIHsKICAgICBjYXNlIFRy
YWNrQmFzZTo6QmFzZVRyYWNrOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVHJhY2tCYXNlOjpUZXh0VHJhY2s6CiAg
ICAgICAgIHJldHVybiBUcmFja0V2ZW50OjpUcmFja0V2ZW50VHJhY2sgeyBSZWZQdHI8VGV4dFRy
YWNrPigmZG93bmNhc3Q8VGV4dFRyYWNrPih0cmFjay5nZXQoKSkpIH07CiAgICAgY2FzZSBUcmFj
a0Jhc2U6OkF1ZGlvVHJhY2s6CkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8VHJhY2tFdmVudDo6VHJhY2tFdmVudFRyYWNrPiBjb252ZXJ0VG9UcmFja0V2ZW50VHJhY2so
UmVmCiAgICAgfQogICAgIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogVHJhY2tFdmVudDo6
VHJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJ
c0NhbmNlbGFibGUgY2FuY2VsYWJsZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCmluZGV4IGM3ODA1Yzg3ZDVhNDVmZjhhOTIz
YjBiMzBhMzE4Y2IyMTVlNjk1YzIuLmExMjBhOWJmZGU3NTgzMjc3ZGM4MzBhMmViYzRhNDY4N2Vm
NzQ2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUU2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcApAQCAtMTMz
LDcgKzEzMyw3IEBAIHVuc2lnbmVkIFZUVFNjYW5uZXI6OnNjYW5EaWdpdHMoaW50JiBudW1iZXIp
CiAgICAgICAgIHN0cmluZyA9IHsgbV9kYXRhLmNoYXJhY3RlcnMxNiwgbnVtRGlnaXRzIH07CiAK
ICAgICAvLyBTaW5jZSB0aGVzZSBhcmUgQVNDSUkgZGlnaXRzLCB0aGUgb25seSBmYWlsdXJlIG1v
ZGUgaXMgb3ZlcmZsb3csIHNvIHVzZSB0aGUgbWF4aW11bSBpbnQgdmFsdWUuCi0gICAgbnVtYmVy
ID0gcGFyc2VJbnRlZ2VyPGludD4oc3RyaW5nKS52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50Pjo6bWF4KCkpOworICAgIG51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KHN0cmluZykudmFs
dWVfb3Ioc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CiAKICAgICAvLyBDb25zdW1l
IHRoZSBkaWdpdHMuCiAgICAgc2Vla1RvKHJ1bk9mRGlnaXRzLmVuZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNWYyMGIzYzc0YWY5Njli
NTc5NDkxNWRhNmEwYzU4ZDA0NDRkYmJiMy4uYzljZTgwYjJkMWRhYWQ4ZGVlYTI5M2JmYjA5ZDgw
OGE1OGI5MzQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhczo6cmVzZXRSZWNv
cmRpbmdEYXRhKCkKICAgICBtX3JlY29yZGluZ05hbWUgPSB7IH07CiAgICAgbV9idWZmZXJMaW1p
dCA9IDEwMCAqIDEwMjQgKiAxMDI0OwogICAgIG1fYnVmZmVyVXNlZCA9IDA7Ci0gICAgbV9mcmFt
ZUNvdW50ID0gV1RGOjpudWxsb3B0OworICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX2ZyYW1lc0NhcHR1cmVkID0gMDsKICAgICBtX2NvbnRlbnRDaGFuZ2VkID0gZmFsc2U7
CiAKQEAgLTM4OCwxOSArMzg4LDE5IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoRE9NTWF0cml4MkRJbml0JiBhcmd1bWVudCkKIHsKICAg
ICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAgICBhcnJh
eS0+YWRkSXRlbShhcmd1bWVudC5hLnZhbHVlT3IoMSkpOwotICAgIGFycmF5LT5hZGRJdGVtKGFy
Z3VtZW50LmIudmFsdWVPcigwKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYy52YWx1
ZU9yKDApKTsKLSAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5kLnZhbHVlT3IoMSkpOwotICAg
IGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmUudmFsdWVPcigwKSk7Ci0gICAgYXJyYXktPmFkZEl0
ZW0oYXJndW1lbnQuZi52YWx1ZU9yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5h
LnZhbHVlX29yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5iLnZhbHVlX29yKDAp
KTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5jLnZhbHVlX29yKDApKTsKKyAgICBhcnJh
eS0+YWRkSXRlbShhcmd1bWVudC5kLnZhbHVlX29yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShh
cmd1bWVudC5lLnZhbHVlX29yKDApKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5mLnZh
bHVlX29yKDApKTsKICAgICByZXR1cm4ge3sgV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpET01NYXRyaXggfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChFbGVtZW50KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
RWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemFibGUsIHNvIGFkZCBhIHN0cmluZyBhcyBhIHBsYWNl
aG9sZGVyIHNpbmNlIHRoZSBhY3R1YWwKICAgICAvLyBlbGVtZW50IGNhbm5vdCBiZSByZWNvbnN0
cnVjdGVkIGluIHRoZSBmcm9udGVuZC4KQEAgLTQxMCwyOCArNDEwLDI4IEBAIE9wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSFRNTEltYWdlRWxl
bWVudCogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sg
dmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2Ug
fX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZUJpdG1hcCogYXJn
dW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRl
eEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VCaXRtYXAgfX07
CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZURhdGEqIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlRGF0YSB9fTsKIH0KIAog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YVNldHRpbmdzJikKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KElt
YWdlU21vb3RoaW5nUXVhbGl0eSBhcmd1bWVudCkKQEAgLTQ0MiwzNSArNDQyLDM1IEBAIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9u
YWw8ZmxvYXQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oKmFyZ3VtZW50KSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChQYXRoMkQqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJn
dW1lbnQtPnBhdGgoKSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OwogfQogCiBP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJn
dW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRl
eEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFzR3JhZGllbnQg
fX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzUGF0
dGVybj4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7
IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZh
c1BhdHRlcm4gfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbnQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpJbWFnZSB9fTsKIH0KIApAQCAtNDkyLDM1ICs0OTIsMzUgQEAgT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBl
ZEFycmF5IH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXJWaWV3PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChS
ZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KFJlZlB0cjxKU0M6OkludDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxKU0M6OlVpbnQzMkFycmF5PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFh
cmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCBP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJl
ZlB0cjxUeXBlZE9NQ1NTSW1hZ2VWYWx1ZT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1l
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6OkltYWdlIH19OwogfQogCkBAIC02MTQsNyArNjE0LDcgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8
T2Zmc2NyZWVuQ2FudmFzPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6SW1hZ2UgfX07CiB9CiAKQEAgLTYyNSw3ICs2MjUsNyBAQCBPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQQogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9F
bGVtZW50PiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1h
Z2UgfX07CiB9CiAKQEAgLTYzNiw3ICs2MzYsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2U+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3Vt
ZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8m
IHZhbHVlKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwpAQCAtNjQ2
LDcgKzY0Niw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VT
b3VyY2U+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CiAgICAgICAgIHJl
dHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwpAQCAtNjU2LDM1ICs2NTYsMzUgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTEJ1
ZmZlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sg
SlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMQnVmZmVy
IH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xGcmFtZWJ1ZmZl
ciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMRnJhbWVidWZm
ZXIgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFByb2dyYW0q
IGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046
OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFByb2dyYW0gfX07
CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFF1ZXJ5KiBhcmd1bWVu
dCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xRdWVyeSB9fTsKIH0KIAogT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyYnVmZmVyKiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3Jl
YXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xSZW5kZXJidWZmZXIgfX07CiB9CiAK
QEAgLTcxOSw0MiArNzE5LDQyIEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKIHsKICAgICBpZiAo
IWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTYW1wbGVyIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoV2ViR0xTaGFkZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1l
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpXZWJHTFNoYWRlciB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFdlYkdMU3luYyogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OldlYkdMU3luYyB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdM
VGV4dHVyZSogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4
dHVyZSB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9y
bUxvY2F0aW9uKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xV
bmlmb3JtTG9jYXRpb24gfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChX
ZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCB9fTsKIH0KIApAQCAtNzY1LDcgKzc2NSw3IEBA
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2sgfX07CiB9CiAKQEAgLTg4OSw3ICs4ODksNyBA
QCB2b2lkIEluc3BlY3RvckNhbnZhczo6c2V0RnJhbWVDb3VudChsb25nIGZyYW1lQ291bnQpCiAg
ICAgaWYgKGZyYW1lQ291bnQgPiAwKQogICAgICAgICBtX2ZyYW1lQ291bnQgPSBzdGQ6Om1pbjxs
b25nPihmcmFtZUNvdW50LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fZnJhbWVDb3VudCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mcmFt
ZUNvdW50ID0gc3RkOjpudWxsb3B0OwogfQogCiBib29sIEluc3BlY3RvckNhbnZhczo6b3ZlckZy
YW1lQ291bnQoKSBjb25zdApAQCAtOTE1LDcgKzkxNSw3IEBAIFJlZjxQcm90b2NvbDo6Q2FudmFz
OjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RGb3JDYW52YXMoYm9vbCBjYXB0
dXJlCiAgICAgICAgICAgICBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIFByb3RvY29sOjpDYW52YXM6OkNvbnRleHRUeXBlOjpX
ZWJHTDI7CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9LAogI2lmIEVOQUJMRShXRUJHUFUp
CiAgICAgICAgIFtdIChzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFdlYkdQVURldmljZT4pIHsKQEAg
LTkyNCw3ICs5MjQsNyBAQCBSZWY8UHJvdG9jb2w6OkNhbnZhczo6Q2FudmFzPiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkT2JqZWN0Rm9yQ2FudmFzKGJvb2wgY2FwdHVyZQogI2VuZGlmCiAgICAgICAg
IFtdIChNb25vc3RhdGUpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICApOwogICAgIGlmICghY29udGV4dFR5cGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
LmNwcAppbmRleCAyZTU3ZDI4NDRlMzBjNzBiMjliMGYyMmJiYjhmZDg5YjAzMTU1NjQ2Li42OTNh
Y2ZlNTM0MzUxNzBkMmRmNWU5MDI5Y2NmNTJjMDZhYjEzNjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyCiB7IFwKICAgICBpZiAoYXV0byog
Y2FudmFzQWdlbnQgPSBlbmFibGVkQ2FudmFzQWdlbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCkp
IFwKICAgICAgICAgcmV0dXJuIGNhbnZhc0FnZW50LT5wcm9jZXNzQXJndW1lbnQoY2FudmFzUmVu
ZGVyaW5nQ29udGV4dCwgYXJndW1lbnQpOyBcCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKIH0gXAogLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1F
TlRfREVGSU5JVElPTgogICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJf
QVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmlu
ZGV4IDYzMWMzYWE2YjM3MjVkNzhlODgxOWQ5ZjE4MjNmNmJlNmEyZmM0MjQuLmU3NzA2YmU0NDJm
OTE3ZmNjOGY0N2JiOTljZGRmNmU5NjQ3MTE2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTMx
Nyw3ICszMTcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVB
dHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7CiAgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhlaWdo
dCA9IG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUo
KS52aWV3KCktPnZpc2libGVIZWlnaHQoKTsKICAgICBTdHJpbmcgdmFsdWUgPSBtX3NldHRpbmdz
LT5nZXRQcm9wZXJ0eShpbnNwZWN0b3JBdHRhY2hlZEhlaWdodFNldHRpbmcpOwotICAgIHVuc2ln
bmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hlZEhl
aWdodCA6IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2YWx1ZSku
dmFsdWVPcigwKTsKKyAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSB2YWx1ZS5pc0VtcHR5
KCkgPyBkZWZhdWx0QXR0YWNoZWRIZWlnaHQgOiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1bnNpZ25lZD4odmFsdWUpLnZhbHVlX29yKDApOwogCiAgICAgLy8gVGhpcyBjYWxsIG1p
Z2h0IG5vdCBnbyB0aHJvdWdoIChpZiB0aGUgd2luZG93IHN0YXJ0cyBvdXQgZGV0YWNoZWQpLCBi
dXQgaWYgdGhlIHdpbmRvdyBpcyBpbml0aWFsbHkgY3JlYXRlZCBhdHRhY2hlZCwKICAgICAvLyBJ
bnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3cgaXMgbmV2ZXIgY2FsbGVkLCBzbyB3ZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0byBzZXQgdGhlIGF0dGFjaGVkV2luZG93SGVpZ2h0LgpAQCAtMzI4
LDEyICszMjgsMTIgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3Jl
QXR0YWNoZWRXaW5kb3dIZWlnaHQoKQogT3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6ZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byB2YWx1ZU9yRXhjZXB0aW9uID0gcmVzdWx0LnZhbHVlKCk7CiAgICAg
aWYgKCF2YWx1ZU9yRXhjZXB0aW9uKSB7CiAgICAgICAgIExPRyhJbnNwZWN0b3IsICJFbmNvdW50
ZXJlZCBleGNlcHRpb24gd2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogJXMiLCB2
YWx1ZU9yRXhjZXB0aW9uLmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICByZXR1cm4gdmFsdWVPckV4Y2VwdGlvbi52YWx1ZSgpLnRvQm9vbGVhbihtX2Zyb250
ZW5kQVBJRGlzcGF0Y2hlci0+ZnJvbnRlbmRHbG9iYWxPYmplY3QoKSk7CkBAIC0zNDEsNyArMzQx
LDcgQEAgT3B0aW9uYWw8Ym9vbD4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZXZhbHVh
dGlvblJlc3VsdFRvQm9vbGVhbihJbnNwZWN0b3IKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjppc0RlYnVnZ2luZ0VuYWJsZWQoKQogewotICAgIHJldHVybiBldmFsdWF0aW9u
UmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRX
aXRoUmVzdWx0U3luYygiaXNEZWJ1Z2dpbmdFbmFibGVkIl9zKSkudmFsdWVPcihmYWxzZSk7Cisg
ICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNo
ZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc0RlYnVnZ2luZ0VuYWJsZWQiX3Mp
KS52YWx1ZV9vcihmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6c2V0RGVidWdnaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0zNTEsNyArMzUxLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZXREZWJ1Z2dpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1RpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jv
b2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRT
eW5jKCJpc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCJfcykpLnZhbHVlT3IoZmFsc2UpOworICAg
IHJldHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVy
LT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygiaXNUaW1lbGluZVByb2ZpbGluZ0VuYWJs
ZWQiX3MpKS52YWx1ZV9vcihmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldFRpbWVs
aW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAKIGJvb2wgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6aXNQcm9maWxpbmdKYXZhU2NyaXB0KCkKIHsKLSAgICByZXR1cm4gZXZh
bHVhdGlvblJlc3VsdFRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hD
b21tYW5kV2l0aFJlc3VsdFN5bmMoImlzUHJvZmlsaW5nSmF2YVNjcmlwdCJfcykpLnZhbHVlT3Io
ZmFsc2UpOworICAgIHJldHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFuKG1fZnJvbnRlbmRB
UElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3luYygiaXNQcm9maWxpbmdK
YXZhU2NyaXB0Il9zKSkudmFsdWVfb3IoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OnN0YXJ0UHJvZmlsaW5nSmF2YVNjcmlwdCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IGEyNDk1
OGI3YjJkZTE3MWNhNzZiYWU5NmY1MzYwYWFlZjkyZjEzZmIuLjUxMjJhMjMxYzVmZWE5OGEyNThh
MzM0M2QxOTAwMDUyNDI3MDZlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIE9w
dGlvbmFsPEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZT4gZG9ja1NpZGVGcm9tU3Ry
aW5nKGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpE
b2NrU2lkZTo6TGVmdDsKICAgICBpZiAoZG9ja1NpZGVTdHJpbmcgPT0gImJvdHRvbSIpCiAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6RG9ja1NpZGU6OkJvdHRvbTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJv
b2wgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzdXBwb3J0c0RvY2tTaWRlKGNvbnN0IFN0cmluZyYg
ZG9ja1NpZGVTdHJpbmcpCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OnNldEZvcmNlZEFwcGVhcmFuY2UoU3RyaW5nIGFwcGVhcmFuY2UpCiAgICAgfQogCiAg
ICAgaWYgKG1fZnJvbnRlbmRQYWdlKQotICAgICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0VXNlRGFy
a0FwcGVhcmFuY2VPdmVycmlkZShXVEY6Om51bGxvcHQpOworICAgICAgICBtX2Zyb250ZW5kUGFn
ZS0+c2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgIGlmICht
X2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnNldEZvcmNlZEFwcGVhcmFuY2UoSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OkFwcGVhcmFuY2U6OlN5c3RlbSk7CiB9CkBAIC00MTUsNyArNDE1LDcg
QEAgU3RyaW5nIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydCgpIGNvbnN0CiAKIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAg
YXV0byBwYWdlSUQgPSBtX2Zyb250ZW5kUGFnZSA/IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUo
KS5wYWdlSUQoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fZnJvbnRlbmRQ
YWdlID8gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogc3RkOjpudWxsb3B0
OwogICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShQYWdlUGFzdGVib2FyZENv
bnRleHQ6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VJRCkpKS0+d3JpdGVQbGFpblRleHQodGV4dCwgUGFz
dGVib2FyZDo6Q2Fubm90U21hcnRSZXBsYWNlKTsKIH0KIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0
YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnUoVmVjdG9yPEluc3BlY3RvckZyb250ZW5kSG9z
dDo6Q29udGV4dE1lbnVJdGVtPiYmCiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIHR5cGUgPSBp
dGVtLnR5cGUgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBl
OwotICAgICAgICBhdXRvIGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihD
b250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICsgaXRlbS5pZC52YWx1ZU9yKDApKTsKKyAgICAg
ICAgYXV0byBhY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1l
bnVJdGVtQmFzZUN1c3RvbVRhZyArIGl0ZW0uaWQudmFsdWVfb3IoMCkpOwogICAgICAgICBDb250
ZXh0TWVudUl0ZW0gbWVudUl0ZW0gPSB7IHR5cGUsIGFjdGlvbiwgaXRlbS5sYWJlbCB9OwogICAg
ICAgICBpZiAoaXRlbS5lbmFibGVkKQogICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZCgq
aXRlbS5lbmFibGVkKTsKQEAgLTYzNywyMyArNjM3LDIzIEBAIHN0YXRpYyBPcHRpb25hbDxEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkPiB2YWx1ZVBheWxvYWRGcm9tSlNPTlZh
bHVlCiAgICAgY2FzZSBKU09OOjpWYWx1ZTo6VHlwZTo6TnVsbDoKICAgICBjYXNlIEpTT046OlZh
bHVlOjpUeXBlOjpPYmplY3Q6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgY2FzZSBKU09OOjpWYWx1ZTo6VHlwZTo6Qm9vbGVhbjoKLSAgICAgICAgcmV0dXJuIERpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQodmFsdWUtPmFzQm9vbGVhbigpLnZhbHVl
T3IoZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1
ZVBheWxvYWQodmFsdWUtPmFzQm9vbGVhbigpLnZhbHVlX29yKGZhbHNlKSk7CiAKICAgICBjYXNl
IEpTT046OlZhbHVlOjpUeXBlOjpEb3VibGU6Ci0gICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHZhbHVlLT5hc0RvdWJsZSgpLnZhbHVlT3IoMCkpOwor
ICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZCh2YWx1
ZS0+YXNEb3VibGUoKS52YWx1ZV9vcigwKSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBl
OjpJbnRlZ2VyOgotICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVl
UGF5bG9hZChzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZhbHVlLT5hc0ludGVnZXIoKS52YWx1ZU9y
KDApKSk7CisgICAgICAgIHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXls
b2FkKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmFsdWUtPmFzSW50ZWdlcigpLnZhbHVlX29yKDAp
KSk7CiAKICAgICBjYXNlIEpTT046OlZhbHVlOjpUeXBlOjpTdHJpbmc6CiAgICAgICAgIHJldHVy
biBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHZhbHVlLT5hc1N0cmluZygp
KTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpsb2dEaWFnbm9zdGljRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGNv
bnN0IFN0cmluZyYgcGF5bG9hZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAppbmRleCBkOTA5OWYxYmU4NzY4MmRiMjlj
MzZjOTZiZGE5OWMxNThiYzgwMDZiLi5kZTVjZDZlOTUxOTk4NGJhNWJkMzhmMzFiNzBkNTczMTIz
YWUwMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hh
ZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNo
YWRlclByb2dyYW0uY3BwCkBAIC0yNDksMTQgKzI0OSwxNCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q2FudmFzOjpTaGFkZXJQcm9ncmFtPiBJbnNwZWN0b3JTaGFkZXJQcm9ncmFtOjpidWls
ZE9iagogICAgICAgICAgICAgICAgICAgICBzaGFyZXNWZXJ0ZXhGcmFnbWVudFNoYWRlciA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNhbnZhczo6
UHJvZ3JhbVR5cGU6OlJlbmRlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9
LAogI2VuZGlmCiAgICAgICAgIFsmXSAoTW9ub3N0YXRlKSAtPiBQcm9ncmFtVHlwZVR5cGUgewog
I2lmIEVOQUJMRShXRUJHTCkgfHwgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2VuZGlmCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICk7CiAgICAg
aWYgKCFwcm9ncmFtVHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDhjNzIxNTdiOGM5YzJhNTI1NDJkNDU4NjNiZTZjODM2
ZTNhZWUzYmYuLjEwY2YyODU5MDRmOWQ2MTMzNjZjNmI3MDViNWFlY2FjNjA3YjVmM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTkzNSw3ICs5MzUsNyBAQCBFeGNlcHRpb25PcjxDU1NTdHlsZVJ1bGUqPiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCiAgICAgaWYgKHRleHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0ZXh0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAot
ICAgIGF1dG8gYWRkUnVsZVJlc3VsdCA9IG1fcGFnZVN0eWxlU2hlZXQtPmFkZFJ1bGUoc2VsZWN0
b3IsIGVtcHR5U3RyaW5nKCksIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBhZGRSdWxlUmVzdWx0
ID0gbV9wYWdlU3R5bGVTaGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgc3Rk
OjpudWxsb3B0KTsKICAgICBpZiAoYWRkUnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGFkZFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDZjZWRhYjNj
NTg5OGZhODRkZDU5ZjYxMWY3MTUwMTgzYzAyY2FlZWUuLjllNjliMjM0MWI5NTFhZWZjYjlkMTlk
NDM1YTk4YjY1OWI2YTUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFJlc291
cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVzb3Vy
Y2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8
U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQg
Y2xlYXIoT3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7
CisgICAgdm9pZCBjbGVhcihPcHRpb25hbDxTdHJpbmc+IHByZXNlcnZlZExvYWRlcklkID0gc3Rk
OjpudWxsb3B0KTsKICAgICBWZWN0b3I8UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzKCk7CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckFuaW1hdGlvbkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCmluZGV4IDllN2FkOTk1MDk2YzlhYWY5Njg4NGU3
NDE4NTRhMTNkYWFiMzljZTIuLjMwZDc2MmZjM2M4Y2E1M2RhN2I4MzllNGZmODMxMDIwMGFkZTc5
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QW5pbWF0aW9uQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBwcm90b2NvbFZhbHVlRm9y
U2Vjb25kcyhjb25zdCBTZWNvbmRzJiBzZWNvbmRzKQogewogICAgIGlmIChzZWNvbmRzID09IFNl
Y29uZHM6OmluZmluaXR5KCkgfHwgc2Vjb25kcyA9PSBTZWNvbmRzOjpuYW4oKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc2Vjb25kcy5taWxsaXNlY29uZHMoKTsKIH0KIApAQCAtODYsNyArODYsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8UHJvdG9jb2w6OkFuaW1hdGlvbjo6UGxheWJhY2tEaXJlY3Rpb24+IHByb3Rv
Y29sVmFsdWVGb3JQbGF5YmFjawogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
c3RhdGljIE9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZh
bHVlRm9yRmlsbE1vZGUoRmlsbE1vZGUgZmlsbE1vZGUpCkBAIC0xMDUsNyArMTA1LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPFByb3RvY29sOjpBbmltYXRpb246OkZpbGxNb2RlPiBwcm90b2NvbFZhbHVl
Rm9yRmlsbE1vZGUoRmlsbE1vZGUKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6QW5pbWF0aW9uOjpLZXlmcmFtZT4+
IGJ1aWxkT2JqZWN0Rm9yS2V5ZnJhbWVzKEtleWZyYW1lRWZmZWN0JiBrZXlmcmFtZUVmZmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKaW5kZXggZDYyNjc2OTE3ZWEwNzFlZWMxOGMwZjYwNTZlZGU2OWQ4Y2IzYjc4OS4u
YzJiMTgwMDM3ZTk0N2NjNmJkNTI2YzM0NmNkYzdhOGFjNmZmYmExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTkzOSw3ICs5MzksNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6Q1NTOjpMYXlvdXRDb250ZXh0VHlw
ZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmxheW91dENvbnRleHRUeXBlRgogewogICAgIGlmIChpczxS
ZW5kZXJHcmlkPihyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBQcm90b2NvbDo6Q1NTOjpMYXlv
dXRDb250ZXh0VHlwZTo6R3JpZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyB2b2lkIHB1c2hDaGlsZHJlbk5vZGVzVG9Gcm9u
dGVuZElmTGF5b3V0Q29udGV4dFR5cGVQcmVzZW50KEluc3BlY3RvckRPTUFnZW50JiBkb21BZ2Vu
dCwgQ29udGFpbmVyTm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggYjE2Nzg0ODA5MDgy
ZTY5YzIxZjNmOTYwZTI2ZTAxY2RlNzY3YTU4Ny4uZjA0NWMzNDI2MWY1OGY3NzZlZDNhY2JhZDkx
NDhmMmNhNGNkOWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlzYWJsZSgp
CiAKICAgICByZXNldCgpOwogCi0gICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjg0LDcgKzI4NCw3IEBAIFBy
b3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzZXRSZWNv
cmRpbmdBdXRvQ2FwdHVyZUZyYW1lCiAgICAgaWYgKGNvdW50ID4gMCkKICAgICAgICAgbV9yZWNv
cmRpbmdBdXRvQ2FwdHVyZUZyYW1lQ291bnQgPSBjb3VudDsKICAgICBlbHNlCi0gICAgICAgIG1f
cmVjb3JkaW5nQXV0b0NhcHR1cmVGcmFtZUNvdW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBt
X3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDAwYzRkYjNkNmU3ZDk5NDk0OWZiOTBjZWRjMWJj
OTdjMmYxOTc4YmUuLmU2MzYyYzU2ZWNhNzAwNzU0ZDFhNDNlNDZhMDFmOGFlZmJjOGNlOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCBzdGF0aWMgY29uc3QgVUNoYXIgZWxsaXBz
aXNVQ2hhcltdID0geyAweDIwMjYsIDAgfTsKIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VD
b2xvcihSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogewogICAgIGlmICghY29s
b3JPYmplY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90
b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkpOwogICAgIGF1dG8gZyA9IGNvbG9yT2JqZWN0LT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6Z0tleSk7CiAgICAgYXV0byBiID0g
Y29sb3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpiS2V5KTsK
ICAgICBpZiAoIXIgfHwgIWcgfHwgIWIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+
Z2V0RG91YmxlKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6YUtleSk7CiAgICAgaWYgKCFhKQpA
QCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogCiBzdGF0aWMgQ29sb3IgcGFyc2VDb25m
aWdDb2xvcihjb25zdCBTdHJpbmcmIGZpZWxkTmFtZSwgSlNPTjo6T2JqZWN0JiBjb25maWdPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIHBhcnNlQ29sb3IoY29uZmlnT2JqZWN0LmdldE9iamVjdChmaWVs
ZE5hbWUpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICByZXR1cm4gcGFy
c2VDb2xvcihjb25maWdPYmplY3QuZ2V0T2JqZWN0KGZpZWxkTmFtZSkpLnZhbHVlX29yKENvbG9y
Ojp0cmFuc3BhcmVudEJsYWNrKTsKIH0KIAogc3RhdGljIGJvb2wgcGFyc2VRdWFkKFJlZjxKU09O
OjpBcnJheT4mJiBxdWFkQXJyYXksIEZsb2F0UXVhZCogcXVhZCkKQEAgLTEyNDAsNyArMTI0MCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdoCiAgICAgfQogCiAgICAgYXV0byBoaWdobGlnaHRD
b25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6Q29uZmlnPigp
OwotICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmpl
Y3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tl
eSkudmFsdWVPcihmYWxzZSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRD
b25maWc6OnNob3dJbmZvS2V5KS52YWx1ZV9vcihmYWxzZSk7CiAgICAgaGlnaGxpZ2h0Q29uZmln
LT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25m
aWc6OmNvbnRlbnRDb2xvcktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGln
aGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcihQcm90b2NvbDo6RE9NOjpI
aWdobGlnaHRDb25maWc6OnBhZGRpbmdDb2xvcktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3Rv
Y29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6Ym9yZGVyQ29sb3JLZXksICpoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QpOwpAQCAtMTI5Niw4ICsxMjk2LDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoUmVmPEpTT046OkFycmF5
PiYKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1
ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGNvbG9yLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIG91dGxpbmVDb2xvciwgT3B0aW9uYWw8Ym9vbD4mJiB1c2VQYWdl
Q29vcmRpbmF0ZXMpCiB7CiAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPElu
c3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudCA9IHBhcnNlQ29sb3IoV1RGTW92ZShjb2xvcikpLnZhbHVlT3IoQ29sb3I6OnRy
YW5zcGFyZW50QmxhY2spOwotICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBw
YXJzZUNvbG9yKFdURk1vdmUob3V0bGluZUNvbG9yKSkudmFsdWVPcihDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjayk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihXVEZN
b3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIGhpZ2hs
aWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1vdmUob3V0bGluZUNv
bG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgIGhpZ2hsaWdodENv
bmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VD
b29yZGluYXRlcyA6IGZhbHNlOwogICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVhZChXVEZNb3Zl
KHF1YWQpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KQEAgLTE0NjMsOCArMTQ2Myw4IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFt
ZShjb25zdCBQcm90b2NvbDo6CiAgICAgaWYgKGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewogICAg
ICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6
SGlnaGxpZ2h0OjpDb25maWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8g
PSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgotICAgICAgICBoaWdo
bGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKFdURk1vdmUoY29sb3IpKS52YWx1ZU9y
KENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3IoV1RGTW92ZShvdXRsaW5lQ29sb3IpKS52YWx1ZU9yKENv
bG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50
ID0gcGFyc2VDb2xvcihXVEZNb3ZlKGNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2spOworICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VD
b2xvcihXVEZNb3ZlKG91dGxpbmVDb2xvcikpLnZhbHVlX29yKENvbG9yOjp0cmFuc3BhcmVudEJs
YWNrKTsKICAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKGZyYW1lLT5vd25lckVsZW1l
bnQoKSwgKmhpZ2hsaWdodENvbmZpZyk7CiAgICAgfQogCkBAIC0xNDkxLDExICsxNDkxLDExIEBA
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NQWdl
bnQ6OnNob3dHcmlkT3ZlcmxheShJbnNwCiAKICAgICBJbnNwZWN0b3JPdmVybGF5OjpHcmlkOjpD
b25maWcgY29uZmlnOwogICAgIGNvbmZpZy5ncmlkQ29sb3IgPSAqcGFyc2VkQ29sb3I7Ci0gICAg
Y29uZmlnLnNob3dMaW5lTmFtZXMgPSBzaG93TGluZU5hbWVzLnZhbHVlT3IoZmFsc2UpOwotICAg
IGNvbmZpZy5zaG93TGluZU51bWJlcnMgPSBzaG93TGluZU51bWJlcnMudmFsdWVPcihmYWxzZSk7
Ci0gICAgY29uZmlnLnNob3dFeHRlbmRlZEdyaWRMaW5lcyA9IHNob3dFeHRlbmRlZEdyaWRMaW5l
cy52YWx1ZU9yKGZhbHNlKTsKLSAgICBjb25maWcuc2hvd1RyYWNrU2l6ZXMgPSBzaG93VHJhY2tT
aXplcy52YWx1ZU9yKGZhbHNlKTsKLSAgICBjb25maWcuc2hvd0FyZWFOYW1lcyA9IHNob3dBcmVh
TmFtZXMudmFsdWVPcihmYWxzZSk7CisgICAgY29uZmlnLnNob3dMaW5lTmFtZXMgPSBzaG93TGlu
ZU5hbWVzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0xpbmVOdW1iZXJzID0gc2hv
d0xpbmVOdW1iZXJzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0V4dGVuZGVkR3Jp
ZExpbmVzID0gc2hvd0V4dGVuZGVkR3JpZExpbmVzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25m
aWcuc2hvd1RyYWNrU2l6ZXMgPSBzaG93VHJhY2tTaXplcy52YWx1ZV9vcihmYWxzZSk7CisgICAg
Y29uZmlnLnNob3dBcmVhTmFtZXMgPSBzaG93QXJlYU5hbWVzLnZhbHVlX29yKGZhbHNlKTsKIAog
ICAgIG1fb3ZlcmxheS0+c2V0R3JpZE92ZXJsYXlGb3JOb2RlKCpub2RlLCBjb25maWcpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQyMjEzZjZkYzc3MWRmMWE0NzU0OTI4NmZhODMzZjgw
MTQ5YzMzYmUuLjc1ZGU1N2E1ZWQ4ZjhlN2NmMGVmMDY3ZGVkZmZiY2ZhNzlhZGQyMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0
aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbios
IGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gcmVzdWx0ID0gaWRiRmFj
dG9yeS0+b3BlbigqY29udGV4dCgpLCBkYXRhYmFzZU5hbWUsIFdURjo6bnVsbG9wdCk7CisgICAg
YXV0byByZXN1bHQgPSBpZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0KCksIGRhdGFiYXNlTmFtZSwg
c3RkOjpudWxsb3B0KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAg
IHJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZS4i
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDQzMDAxMmM1ZjE3YWI3
ZTMzMmQ5MjBlOTkzODViODMyZWQ1YWM1YzUuLmQ5OTgzYzAwNjgzMTYzNzUyMTMwYmM2NThkNmQ1
ZDc3MDk1ZmY1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEzNTksNyArMTM1OSw3IEBAIFJl
ZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmNyZWF0ZVRleHRE
ZWNvZGVyKGNvbnN0IFN0cmluZyYKIE9wdGlvbmFsPFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojp0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlJiBjYWNoZWRS
ZXNvdXJjZSkKIHsKICAgICBpZiAoIUluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2hvdWxkVHJlYXRB
c1RleHQoY2FjaGVkUmVzb3VyY2UubWltZVR5cGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgcmVzdWx0
OwogICAgIGJvb2wgYmFzZTY0RW5jb2RlZDsKQEAgLTEzNjgsNyArMTM2OCw3IEBAIE9wdGlvbmFs
PFN0cmluZz4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp0ZXh0Q29udGVudEZvckNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCkBAIC0xNDI5
LDcgKzE0MjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0Q29udGVudEZvclJlc291
cmNlRGF0YShjb25zdCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UgogICAgIGlmIChyZXNvdXJjZURh
dGEuY2FjaGVkUmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6dGV4dENvbnRlbnRGb3JDYWNoZWRSZXNvdXJjZSgqcmVzb3VyY2VEYXRhLmNhY2hlZFJlc291
cmNlKCkpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6c2VhcmNoT3RoZXJSZXF1ZXN0
cyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgUmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
aW5kZXggNjM5MzJkYWY5MTY4YmZiYzZhZWUzYmUyZWY3Y2MzMTJjNGMyMTQxZC4uMTExMWFjYzI1
ODhjNjkxNzhjYzY0YjkzMTI4OTRjNDZhMTI0OGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtMzY2LDI1
ICszNjYsMjUgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFn
ZW50OjpkaXNhYmxlKCkKICAgICBvdmVycmlkZVVzZXJBZ2VudChudWxsU3RyaW5nKCkpOwogICAg
IHNldEVtdWxhdGVkTWVkaWEoZW1wdHlTdHJpbmcoKSk7CiAjaWYgRU5BQkxFKERBUktfTU9ERV9D
U1MpIHx8IEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgc2V0Rm9yY2VkQXBwZWFyYW5j
ZShXVEY6Om51bGxvcHQpOworICAgIHNldEZvcmNlZEFwcGVhcmFuY2Uoc3RkOjpudWxsb3B0KTsK
ICNlbmRpZgogCiAgICAgYXV0byYgaW5zcGVjdGVkUGFnZVNldHRpbmdzID0gbV9pbnNwZWN0ZWRQ
YWdlLnNldHRpbmdzKCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNw
ZWN0ZWRQYWdlU2V0dGluZ3Muc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZEluc3BlY3Rv
ck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldElt
YWdlc0VuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3Rl
ZFBhZ2VTZXR0aW5ncy5zZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb25JbnNw
ZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5z
ZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0
KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3NJ
bnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5n
cy5zZXRTY3JpcHRFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBp
bnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rvck92ZXJyaWRl
KFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNob3dSZXBhaW50
Q291bnRlckluc3BlY3Rvck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFn
ZVNldHRpbmdzLnNldFdlYlJUQ0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RG
OjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2VjdXJpdHlFbmFi
bGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLQotICAgIG1fY2xpZW50LT5zZXRE
ZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZlbG9wZXJQcmVm
ZXJlbmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQsIFdURjo6bnVs
bG9wdCk7Ci0gICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlkZShJbnNw
ZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVuYWJsZWQsIFdU
Rjo6bnVsbG9wdCk7Ci0gICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVycmlk
ZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQsIFdURjo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsK
KyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0SUNFQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxl
ZEluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRp
bmdzLnNldEltYWdlc0VuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAg
IGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5l
Y3Rpb25JbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VT
ZXR0aW5ncy5zZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3Rk
OjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0TmVlZHNTaXRlU3BlY2lm
aWNRdWlya3NJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBh
Z2VTZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0
KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVyc0luc3BlY3Rv
ck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNo
b3dSZXBhaW50Q291bnRlckluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5z
cGVjdGVkUGFnZVNldHRpbmdzLnNldFdlYlJUQ0VuY3J5cHRpb25FbmFibGVkSW5zcGVjdG9yT3Zl
cnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViU2Vj
dXJpdHlFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKworICAgIG1fY2xp
ZW50LT5zZXREZXZlbG9wZXJQcmVmZXJlbmNlT3ZlcnJpZGUoSW5zcGVjdG9yQ2xpZW50OjpEZXZl
bG9wZXJQcmVmZXJlbmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQs
IHN0ZDo6bnVsbG9wdCk7CisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VPdmVy
cmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OklUUERlYnVnTW9kZUVu
YWJsZWQsIHN0ZDo6bnVsbG9wdCk7CisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVu
Y2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6Ok1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICByZXR1cm4geyB9OwogfQpA
QCAtNTEwLDcgKzUxMCw3IEBAIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZT4gYnVp
bGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAgICAgICAgIC5zZXRWYWx1
ZShjb29raWUudmFsdWUpCiAgICAgICAgIC5zZXREb21haW4oY29va2llLmRvbWFpbikKICAgICAg
ICAgLnNldFBhdGgoY29va2llLnBhdGgpCi0gICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBp
cmVzLnZhbHVlT3IoMCkpCisgICAgICAgIC5zZXRFeHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVl
X29yKDApKQogICAgICAgICAuc2V0U2Vzc2lvbihjb29raWUuc2Vzc2lvbikKICAgICAgICAgLnNl
dEh0dHBPbmx5KGNvb2tpZS5odHRwT25seSkKICAgICAgICAgLnNldFNlY3VyZShjb29raWUuc2Vj
dXJlKQpAQCAtNTY5LDMxICs1NjksMzEgQEAgc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VD
b29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmUKICAgICBj
b29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29r
aWU6Om5hbWVLZXkpOwogICAgIGlmICghY29va2llLm5hbWUpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IG5hbWUgaW4gZ2l2ZW4gY29va2llIjsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBjb29raWUudmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2Nv
bDo6UGFnZTo6Q29va2llOjp2YWx1ZUtleSk7CiAgICAgaWYgKCFjb29raWUudmFsdWUpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHZhbHVlIGluIGdpdmVu
IGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2llLmRvbWFpbiA9IGNvb2tpZU9iamVjdC0+
Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmRvbWFpbktleSk7CiAgICAgaWYgKCFj
b29raWUuZG9tYWluKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9y
IGtleSBkb21haW4gaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUucGF0
aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnBhdGhL
ZXkpOwogICAgIGlmICghY29va2llLnBhdGgpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52
YWxpZCB2YWx1ZSBmb3Iga2V5IHBhdGggaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBhdXRvIGh0dHBPbmx5ID0gY29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdl
OjpDb29raWU6Omh0dHBPbmx5S2V5KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29r
aWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5odHRwT25seSA9ICpodHRwT25seTsKQEAgLTYw
MSw3ICs2MDEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZQogICAgIGF1dG8gc2VjdXJlID0g
Y29va2llT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtl
eSk7CiAgICAgaWYgKCFzZWN1cmUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHNlY3VyZSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNv
b2tpZS5zZWN1cmUgPSAqc2VjdXJlOwpAQCAtNjEwLDcgKzYxMCw3IEBAIHN0YXRpYyBPcHRpb25h
bDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIFJlCiAgICAgY29va2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShQ
cm90b2NvbDo6UGFnZTo6Q29va2llOjpleHBpcmVzS2V5KTsKICAgICBpZiAoIXNlc3Npb24gJiYg
IWNvb2tpZS5leHBpcmVzKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUg
Zm9yIGtleSBleHBpcmVzIGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2ll
LnNlc3Npb24gPSAqc2Vzc2lvbjsKQEAgLTYxOCwxMyArNjE4LDEzIEBAIHN0YXRpYyBPcHRpb25h
bDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIFJlCiAgICAgYXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNhbWVTaXRlS2V5KTsKICAgICBpZiAoIXNhbWVT
aXRlU3RyaW5nKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtl
eSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2FtZVNp
dGUgPSBQcm90b2NvbDo6SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29s
OjpQYWdlOjpDb29raWVTYW1lU2l0ZVBvbGljeT4oc2FtZVNpdGVTdHJpbmcpOwogICAgIGlmICgh
c2FtZVNpdGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5
IHNhbWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc3dpdGNoIChzYW1l
U2l0ZS52YWx1ZSgpKSB7CkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEVtdWxhdGVkTWVkaWEoY29uc3QgU3Ry
aW5nJgogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRGb3JjZWRBcHBlYXJhbmNlKE9wdGlvbmFsPFByb3RvY29sOjpQYWdlOjpBcHBlYXJhbmNlPiYm
IGFwcGVhcmFuY2UpCiB7CiAgICAgaWYgKCFhcHBlYXJhbmNlKSB7Ci0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIG1faW5zcGVjdGVkUGFnZS5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRlKHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VBZ2VudDo6c25h
cHNob3ROb2RlKFByb3RvY29sOjpET006OgogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3QiX3MpOwogCi0g
ICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0
LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFV
UkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7
CiB9CiAKIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yUGFnZUFnZW50
OjpzbmFwc2hvdFJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIFByb3Rv
Y29sOjpQYWdlOjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCkBAIC0xMDkxLDcg
KzEwOTEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxTdHJpbmc+IEluc3BlY3RvclBhZ2VB
Z2VudDo6c25hcHNob3RSZWN0KGludCB4LCBpbnQgeSwgaQogICAgIGlmICghc25hcHNob3QpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQgbm90IGNhcHR1cmUgc25hcHNob3Qi
X3MpOwogCi0gICAgcmV0dXJuIHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RG
OjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAgcmV0dXJuIHNuYXBzaG90
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRp
b246Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpICYmIFVTRShDRikKQEAgLTEx
MTgsNyArMTExOCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvclBh
Z2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKE9wdGlvbmFsCiAgICAgaWYgKGhlaWdodCAm
JiAqaGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiU2NyZWVuIGhl
aWdodCBvdmVycmlkZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIl9zKTsKIAotICAgIG1f
aW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5zZXRPdmVycmlkZVNjcmVlblNpemUoRmxvYXRTaXpl
KHdpZHRoLnZhbHVlT3IoMCksIGhlaWdodC52YWx1ZU9yKDApKSk7CisgICAgbV9pbnNwZWN0ZWRQ
YWdlLm1haW5GcmFtZSgpLnNldE92ZXJyaWRlU2NyZWVuU2l6ZShGbG9hdFNpemUod2lkdGgudmFs
dWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSkpOwogICAgIHJldHVybiB7IH07CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDkwNmE4ZTg0M2JmNzQ1ZDBlNGQzMGNkMWRlMjRi
ZWZlYzVjNTkwOTEuLjU0MTM3MDdiNTdkOTRlYWIyM2I1ODk2NGI0M2ZmZWMwY2ZiNWYxNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlTWVtb3J5SW5zdHJ1bWVudChJbnN0cnVtZW50U3RhdGUgc3RhdGUp
CiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnRvZ2dsZVRpbWVsaW5lSW5zdHJ1bWVudChJ
bnN0cnVtZW50U3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlID09IEluc3RydW1lbnRTdGF0
ZTo6U3RhcnQpCi0gICAgICAgIGludGVybmFsU3RhcnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
aW50ZXJuYWxTdGFydChzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UKICAgICAgICAgaW50ZXJuYWxT
dG9wKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBjODhiYmRjMDNkMjU0MTBm
YjY5NThiMGYwOWFmYzViZjE4OGRiMjU3Li41ZmY5NTZjMGQ1MjI3NmY5Yzk0MDQ4NmZmNWMwMGQ0
NWI4ZmZjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBjYWxjdWxhdGVEaXN0YW5jZShOb2RlJiBjaGlsZCwg
Tm9kZSYgYW5jZXN0b3IpCiAKICAgICAgICAgY3VycmVudCA9IEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lclBhcmVudE5vZGUoY3VycmVudCk7CiAgICAgICAgIGlmICghY3VycmVudCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIHJldHVybiBkaXN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlv
blNjb3BlLmNwcAppbmRleCA2MzNiY2U2ZThmM2MwNzg1NjMyZWI3ZjI2ZDE3MmY2MDE2YjNlZmQ5
Li4yYjkwNzM1N2NiY2JhYjViNTA5ZTlkNTgyYzAzNGNkMDhmM2M0ZTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1VzZXJH
ZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVXNlckdlc3R1cmVFbXVsYXRpb25TY29wZTo6VXNlckdlc3R1cmVFbXVsYXRpb25T
Y29wZShQYWdlJiBpbnNwZWN0ZWRQYWdlLCBib29sIGVtdWxhdGVVc2VyR2VzdHVyZSkKICAgICA6
IG1fcGFnZUNocm9tZUNsaWVudChpbnNwZWN0ZWRQYWdlLmNocm9tZSgpLmNsaWVudCgpKQotICAg
ICwgbV9nZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlvbmFsPFByb2Nl
c3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxs
b3B0KQorICAgICwgbV9nZXN0dXJlSW5kaWNhdG9yKGVtdWxhdGVVc2VyR2VzdHVyZSA/IE9wdGlv
bmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDog
c3RkOjpudWxsb3B0KQogICAgICwgbV9lbXVsYXRlVXNlckdlc3R1cmUoZW11bGF0ZVVzZXJHZXN0
dXJlKQogICAgICwgbV91c2VyV2FzSW50ZXJhY3RpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9NYXJnaW5UeXBlcy5oCmluZGV4IGVhYTI0MmYxOGRmMGU5YTcyZTJlM2QwMmI1NzVhYjY3YjE5
Zjg2ZTMuLmMzOWQ1NjUzNDQ1NzQ0ZDJmYTYyMjg4ZjNhMjlmZGU5NmRmYzFmODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9NYXJnaW5UeXBlcy5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBVc2VkVmVy
dGljYWxNYXJnaW4gewogICAgIC8vIGluZmxvdyBjaGlsZCdzIGNhY2hlZCBtYXJnaW4gdmFsdWVz
LgogICAgIHN0cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpciB7CiAgICAgICAgIHN0cnVjdCBW
YWx1ZXMgewotICAgICAgICAgICAgYm9vbCBpc05vblplcm8oKSBjb25zdCB7IHJldHVybiBwb3Np
dGl2ZS52YWx1ZU9yKDApIHx8IG5lZ2F0aXZlLnZhbHVlT3IoMCk7IH0KKyAgICAgICAgICAgIGJv
b2wgaXNOb25aZXJvKCkgY29uc3QgeyByZXR1cm4gcG9zaXRpdmUudmFsdWVfb3IoMCkgfHwgbmVn
YXRpdmUudmFsdWVfb3IoMCk7IH0KIAogICAgICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
cG9zaXRpdmU7CiAgICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBuZWdhdGl2ZTsKQEAg
LTc0LDE0ICs3NCwxNCBAQCBzdHJ1Y3QgVXNlZFZlcnRpY2FsTWFyZ2luIHsKIAogc3RhdGljIGlu
bGluZSBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZShjb25zdCBVc2VkVmVydGljYWxNYXJnaW4mIHVz
ZWRWZXJ0aWNhbE1hcmdpbikKIHsKLSAgICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxh
cHNlZFZhbHVlcy5iZWZvcmUudmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2Vk
VmFsdWVzLmJlZm9yZSk7CisgICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBzZWRW
YWx1ZXMuYmVmb3JlLnZhbHVlX29yKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1
ZXMuYmVmb3JlKTsKIH0KIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNv
bnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKQogewogICAgIGlmICh1
c2VkVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzLmlzQ29sbGFwc2VkVGhyb3VnaCkKICAg
ICAgICAgcmV0dXJuIDBfbHU7Ci0gICAgcmV0dXJuIHVzZWRWZXJ0aWNhbE1hcmdpbi5jb2xsYXBz
ZWRWYWx1ZXMuYWZ0ZXIudmFsdWVPcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFs
dWVzLmFmdGVyKTsKKyAgICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVl
cy5hZnRlci52YWx1ZV9vcih1c2VkVmVydGljYWxNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzLmFm
dGVyKTsKIH0KIAogc3RydWN0IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB7CkBAIC05NSw3ICs5
NSw3IEBAIHN0cnVjdCBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7CiB9OwogCiBzdHJ1Y3QgUHJlY29t
cHV0ZWRNYXJnaW5CZWZvcmUgewotICAgIExheW91dFVuaXQgdXNlZFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gY29sbGFwc2VkVmFsdWUudmFsdWVPcihub25Db2xsYXBzZWRWYWx1ZSk7IH0KKyAgICBM
YXlvdXRVbml0IHVzZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGNvbGxhcHNlZFZhbHVlLnZhbHVl
X29yKG5vbkNvbGxhcHNlZFZhbHVlKTsgfQogICAgIExheW91dFVuaXQgbm9uQ29sbGFwc2VkVmFs
dWU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29sbGFwc2VkVmFsdWU7CiAgICAgVXNlZFZl
cnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIHBvc2l0aXZlQW5k
TmVnYXRpdmVNYXJnaW5CZWZvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggNTA2ZTQ3M2Y2Y2RkYjFhMjdmOTRjYjZjNzQ5Zjlj
MGUxZjdhMGNhNS4uY2U1Y2E3NDc2MThjYzc4NmZhYzlhOTg0ZjljNTk4OTRlMDg4YjhkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApA
QCAtMTI3LDggKzEyNyw4IEBAIHN0YXRpYyBib29sIGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRl
ZChjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQogICAgIGF1dG8mIGZsb2F0cyA9
IGZsb2F0aW5nU3RhdGUuZmxvYXRzKCk7CiAgICAgYXV0byByaWdodEVkZ2VPZkxlZnRGbG9hdHMg
PSBMYXlvdXRVbml0OjptaW4oKTsKICAgICBhdXRvIGxlZnRFZGdlT2ZSaWdodEZsb2F0cyA9IExh
eW91dFVuaXQ6Om1heCgpOwotICAgIFdURjo6T3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVmdEJvdHRv
bTsKLSAgICBXVEY6Ok9wdGlvbmFsPExheW91dFVuaXQ+IHJpZ2h0Qm90dG9tOworICAgIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gbGVmdEJvdHRvbTsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IHJpZ2h0Qm90dG9tOwogCiAgICAgZm9yIChhdXRvJiBmbG9hdEl0ZW0gOiBmbG9hdHMp
IHsKICAgICAgICAgaWYgKGZsb2F0SXRlbS5pc0xlZnRQb3NpdGlvbmVkKCkpIHsKQEAgLTE3Miw3
ICsxNzIsNyBAQCBzdGF0aWMgRmxvYXRQYWlyOjpMZWZ0UmlnaHRJbmRleCBmaW5kQXZhaWxhYmxl
UG9zaXRpb24oRmxvYXRBdm9pZGVyJiBmbG9hdEF2b2lkZQogICAgIGZvciAoYXV0byBpdGVyYXRv
ciA9IGJlZ2luKGZsb2F0cywgeyBmbG9hdEF2b2lkZXIudG9wKCkgfSk7IGl0ZXJhdG9yICE9IGVu
ZDsgKytpdGVyYXRvcikgewogICAgICAgICBBU1NFUlQoISgqaXRlcmF0b3IpLmlzRW1wdHkoKSk7
CiAgICAgICAgIGF1dG8gbGVmdFJpZ2h0RmxvYXRQYWlyID0gKml0ZXJhdG9yOwotICAgICAgICBp
bm5lck1vc3RMZWZ0QW5kUmlnaHQgPSBpbm5lck1vc3RMZWZ0QW5kUmlnaHQudmFsdWVPcigqbGVm
dFJpZ2h0RmxvYXRQYWlyKTsKKyAgICAgICAgaW5uZXJNb3N0TGVmdEFuZFJpZ2h0ID0gaW5uZXJN
b3N0TGVmdEFuZFJpZ2h0LnZhbHVlX29yKCpsZWZ0UmlnaHRGbG9hdFBhaXIpOwogCiAgICAgICAg
IC8vIE1vdmUgdGhlIGJveCBob3Jpem9udGFsbHkgc28gdGhhdCBpdCBlaXRoZXIKICAgICAgICAg
Ly8gMS4gYWxpZ25zIHdpdGggdGhlIGN1cnJlbnQgZmxvYXRpbmcgcGFpcgpAQCAtNDg3LDcgKzQ4
Nyw3IEBAIHZvaWQgRmxvYXRpbmdDb250ZXh0OjpmaW5kUG9zaXRpb25Gb3JGb3JtYXR0aW5nQ29u
dGV4dFJvb3QoRmxvYXRBdm9pZGVyJiBmbG9hdEF2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfTsKIAotICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1heChpbm5l
ck1vc3RMZWZ0QW5kUmlnaHQubGVmdC52YWx1ZU9yKDApLCBpbm5lck1vc3RMZWZ0QW5kUmlnaHQu
cmlnaHQudmFsdWVPcigwKSkgKyAxOworICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBzdGQ6Om1h
eChpbm5lck1vc3RMZWZ0QW5kUmlnaHQubGVmdC52YWx1ZV9vcigwKSwgaW5uZXJNb3N0TGVmdEFu
ZFJpZ2h0LnJpZ2h0LnZhbHVlX29yKDApKSArIDE7CiAgICAgICAgIGF1dG8qIGludGVyc2VjdGVk
RmxvYXRCb3ggPSBvdmVybGFwcGluZ0Zsb2F0Qm94KHN0YXJ0SW5kZXgsIGZsb2F0QXZvaWRlcik7
CiAgICAgICAgIGlmICghaW50ZXJzZWN0ZWRGbG9hdEJveCkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTU5Miw4ICs1OTIsOCBAQCBQb3NpdGlvbkluQ29udGV4dFJvb3QgRmxvYXRQYWlyOjpib3R0
b20oKSBjb25zdAogICAgIGF1dG8qIHJpZ2h0ID0gdGhpcy0+cmlnaHQoKTsKICAgICBBU1NFUlQo
bGVmdCB8fCByaWdodCk7CiAKLSAgICBhdXRvIGxlZnRCb3R0b20gPSBsZWZ0ID8gT3B0aW9uYWw8
UG9zaXRpb25JbkNvbnRleHRSb290PihQb3NpdGlvbkluQ29udGV4dFJvb3QgeyBsZWZ0LT5yZWN0
V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogV1RGOjpudWxsb3B0OwotICAgIGF1dG8gcmlnaHRC
b3R0b20gPSByaWdodCA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25J
bkNvbnRleHRSb290IHsgcmlnaHQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBXVEY6
Om51bGxvcHQ7CisgICAgYXV0byBsZWZ0Qm90dG9tID0gbGVmdCA/IE9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgbGVmdC0+cmVjdFdpdGhNYXJn
aW4oKS5ib3R0b20oKSB9KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0g
cmlnaHQgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KFBvc2l0aW9uSW5Db250ZXh0
Um9vdCB7IHJpZ2h0LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDogc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGxlZnRCb3R0b20gJiYgcmlnaHRCb3R0b20pCiAgICAgICAgIHJldHVybiBz
dGQ6Om1heCgqbGVmdEJvdHRvbSwgKnJpZ2h0Qm90dG9tKTsKQEAgLTY2Miw4ICs2NjIsOCBAQCBJ
dGVyYXRvciYgSXRlcmF0b3I6Om9wZXJhdG9yKysoKQogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBu
ZXcgZmxvYXRpbmcncyBib3R0b20gZWRnZSBpcyBwb3NpdGlvbmVkIGxvd2VyIHRoYW4gdGhlIGN1
cnJlbnQgb25lIC13aGljaCBlc3NlbnRpYWxseSBtZWFucyBza2lwcGluZyBpbi1iZXR3ZWVuIGZs
b2F0cyB0aGF0IGFyZSBwb3NpdGlvbmVkIGhpZ2hlcikuCiAgICAgLy8gMy4gUmVzZXQgdGhlIHZl
cnRpY2FsIHBvc2l0aW9uIGFuZCBhbGlnbiBpdCB3aXRoIHRoZSBuZXcgbGVmdC1yaWdodCBwYWly
LiBUaGVzZSBmbG9hdHMgYXJlIG5vdyB0aGUgaW5uZXItbW9zdCBib3hlcyBmb3IgdGhlIGN1cnJl
bnQgdmVydGljYWwgcG9zaXRpb24uCiAgICAgLy8gQXMgdGhlIHJlc3VsdCB3ZSBoYXZlIG1vcmUg
aG9yaXpvbnRhbCBzcGFjZSBvbiB0aGUgY3VycmVudCB2ZXJ0aWNhbCBwb3NpdGlvbi4KLSAgICBh
dXRvIGxlZnRCb3R0b20gPSBtX2N1cnJlbnQubGVmdCgpID8gT3B0aW9uYWw8UG9zaXRpb25JbkNv
bnRleHRSb290PihtX2N1cnJlbnQubGVmdCgpLT5ib3R0b20oKSkgOiBXVEY6Om51bGxvcHQ7Ci0g
ICAgYXV0byByaWdodEJvdHRvbSA9IG1fY3VycmVudC5yaWdodCgpID8gT3B0aW9uYWw8UG9zaXRp
b25JbkNvbnRleHRSb290PihtX2N1cnJlbnQucmlnaHQoKS0+Ym90dG9tKCkpIDogV1RGOjpudWxs
b3B0OworICAgIGF1dG8gbGVmdEJvdHRvbSA9IG1fY3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQ
b3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5sZWZ0KCktPmJvdHRvbSgpKSA6IHN0ZDo6
bnVsbG9wdDsKKyAgICBhdXRvIHJpZ2h0Qm90dG9tID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRp
b25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkg
OiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHVwZGF0ZUxlZnQgPSAobGVmdEJvdHRvbSA9PSBy
aWdodEJvdHRvbSkgfHwgKCFyaWdodEJvdHRvbSB8fCAobGVmdEJvdHRvbSAmJiAqbGVmdEJvdHRv
bSA8ICpyaWdodEJvdHRvbSkpOwogICAgIGF1dG8gdXBkYXRlUmlnaHQgPSAobGVmdEJvdHRvbSA9
PSByaWdodEJvdHRvbSkgfHwgKCFsZWZ0Qm90dG9tIHx8IChyaWdodEJvdHRvbSAmJiAqbGVmdEJv
dHRvbSA+ICpyaWdodEJvdHRvbSkpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHZvaWQgSXRlcmF0b3I6
OnNldChQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbikKIAogICAgICAgICBh
dXRvIGluZGV4ID0gZmxvYXRpbmdUeXBlID09IEZsb2F0OjpMZWZ0ID8gbV9jdXJyZW50Lm1fZmxv
YXRQYWlyLmxlZnQgOiBtX2N1cnJlbnQubV9mbG9hdFBhaXIucmlnaHQ7CiAgICAgICAgIC8vIFN0
YXJ0IGZyb20gdGhlIGVuZCBpZiB3ZSBkb24ndCBoYXZlIGN1cnJlbnQgeWV0LgotICAgICAgICBp
bmRleCA9IGluZGV4LnZhbHVlT3IobV9mbG9hdHMuc2l6ZSgpKTsKKyAgICAgICAgaW5kZXggPSBp
bmRleC52YWx1ZV9vcihtX2Zsb2F0cy5zaXplKCkpOwogICAgICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICAgICAgaW5kZXggPSBwcmV2aW91c0Zsb2F0aW5nSW5kZXgoZmxvYXRpbmdUeXBlLCBt
X2Zsb2F0cywgKmluZGV4KTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGVhMzA4NDMxZmE0MTNjNzE4OTQzOGZkODM4MWFjZWU4NzY3Mzlm
M2IuLmM2YjMwYzRlNzgwMTcxNTkwYzY2MDQwOTljYjgxM2VkNTgwZTMxNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yOTUsOCArMjk1LDggQEAgdm9pZCBGb3JtYXR0aW5nQ29u
dGV4dDo6dmFsaWRhdGVHZW9tZXRyeUNvbnN0cmFpbnRzQWZ0ZXJMYXlvdXQoKSBjb25zdAogICAg
ICAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gu
aXNSZXBsYWNlZEJveCgpKSB7CiAgICAgICAgICAgICAvLyB0b3AgKyBtYXJnaW4tdG9wICsgYm9y
ZGVyLXRvcC13aWR0aCArIHBhZGRpbmctdG9wICsgaGVpZ2h0ICsgcGFkZGluZy1ib3R0b20gKyBi
b3JkZXItYm90dG9tLXdpZHRoICsgbWFyZ2luLWJvdHRvbSArIGJvdHRvbSA9IGhlaWdodCBvZiBj
b250YWluaW5nIGJsb2NrCiAgICAgICAgICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9
IGNvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKTsKLSAgICAgICAgICAg
IEFTU0VSVChCb3hHZW9tZXRyeTo6Ym9yZGVyQm94VG9wKGJveEdlb21ldHJ5KSArIGJveEdlb21l
dHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRy
eS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGJveEdlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQo
KQotICAgICAgICAgICAgICAgICsgYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3Io
MCkgKyBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20oKSArIGJveEdlb21ldHJ5Lm1hcmdpbkFmdGVy
KCkgPT0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgICAgIEFTU0VSVChCb3hHZW9t
ZXRyeTo6Ym9yZGVyQm94VG9wKGJveEdlb21ldHJ5KSArIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9y
ZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVfb3IoMCkgKyBib3hHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCkKKyAgICAgICAgICAg
ICAgICArIGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKSArIGJveEdlb21l
dHJ5LmJvcmRlckJvdHRvbSgpICsgYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWlu
aW5nQmxvY2tIZWlnaHQpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4
dC5oCmluZGV4IGQ0Y2Q3YzIxMWRkMTA1NGU1YTE4ZjQ2NWIzOGFhNzkxOWFiYmM4NDUuLmQyM2Y5
ZmZkMDIyNzVhMjNlMGI4YmNlYTQwM2Y4NjM3MzAxZDA4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICBCb2R5U3RyZXRjaGVzVG9W
aWV3cG9ydFF1aXJrLAogICAgICAgICBUYWJsZU5lZWRzQWNjZXNzVG9UYWJsZVdyYXBwZXIKICAg
ICB9OwotICAgIGNvbnN0IEJveEdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChjb25zdCBCb3gmLCBP
cHRpb25hbDxFc2NhcGVSZWFzb24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBjb25zdCBC
b3hHZW9tZXRyeSYgZ2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiwgT3B0aW9uYWw8RXNjYXBlUmVh
c29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAyMTQ3YjExN2ZiMmVkMmM1Mjg5NWQw
N2NkNjk5NDE1ZDRlZGU4MjAzLi40ZTdjMjA5YTk5ZTMxNWNkNmIxMmY5NTZiM2M3NWEzZjM3YjY3
MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEhlaWdodChj
b25zdCBCb3gmIGxheW91dEJveCwgT3AKICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmJv
eFNpemluZygpID09IEJveFNpemluZzo6Q29udGVudEJveCkKICAgICAgICAgICAgIHJldHVybiBo
ZWlnaHQ7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5n
ZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgICAgICByZXR1cm4gKmhlaWdodCAtIChib3hH
ZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCku
dmFsdWVPcigwKSk7CisgICAgICAgIHJldHVybiAqaGVpZ2h0IC0gKGJveEdlb21ldHJ5LnZlcnRp
Y2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7
CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFdpZHRoKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBMYXkKICAgICAgICAgaWYgKHN0eWxlLmJveFNpemluZygpID09IEJveFNpemlu
Zzo6Q29udGVudEJveCB8fCBzdHlsZS53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCiAgICAg
ICAgICAgICByZXR1cm4gY29tcHV0ZWRXaWR0aDsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAg
IHJldHVybiAqY29tcHV0ZWRXaWR0aCAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkg
KyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkpOworICAgICAgICBy
ZXR1cm4gKmNvbXB1dGVkV2lkdGggLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsg
Ym94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwKSk7CiAgICAgfQogICAg
IHJldHVybiB7IH07CiB9CkBAIC0zNjAsOCArMzYwLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3Jt
YXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25z
dAogICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92
ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KGxh
eW91dEJveCwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKICAgICBhdXRvIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5
b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6
Tm9uQ29sbGFwc2VkVmFsdWVzIHVzZWRWZXJ0aWNhbE1hcmdpbjsgCi0gICAgYXV0byBwYWRkaW5n
VG9wID0gYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7Ci0gICAgYXV0byBwYWRk
aW5nQm90dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAg
YXV0byBwYWRkaW5nVG9wID0gYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOwor
ICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1
ZV9vcigwKTsKICAgICBhdXRvIGJvcmRlclRvcCA9IGJveEdlb21ldHJ5LmJvcmRlclRvcCgpOwog
ICAgIGF1dG8gYm9yZGVyQm90dG9tID0gYm94R2VvbWV0cnkuYm9yZGVyQm90dG9tKCk7CiAKQEAg
LTM4OSwzOSArMzg5LDM5IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5Ojpv
dXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QKICAgICBpZiAoIXRvcCAm
JiAhaGVpZ2h0ICYmIGJvdHRvbSkgewogICAgICAgICAvLyAjMQogICAgICAgICBoZWlnaHQgPSBj
b250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGxheW91dEJveCk7Ci0gICAgICAg
IHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFs
dWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAg
ICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUu
dmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsK
ICAgICAgICAgdG9wID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKHVzZWRWZXJ0aWNhbE1hcmdp
bi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0
b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tKTsg
CiAgICAgfQogCiAgICAgaWYgKCF0b3AgJiYgIWJvdHRvbSAmJiBoZWlnaHQpIHsKICAgICAgICAg
Ly8gIzIKICAgICAgICAgdG9wID0gc3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bv
c2l0aW9uZWQobGF5b3V0Qm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzKTsKLSAgICAgICAgdXNlZFZl
cnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDAp
LCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNl
ZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9v
cigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAg
ICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1h
cmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdC
b3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0K
IAogICAgIGlmICghaGVpZ2h0ICYmICFib3R0b20gJiYgdG9wKSB7CiAgICAgICAgIC8vICMzCiAg
ICAgICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5
b3V0Qm94KTsKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZh
bHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRl
ci52YWx1ZV9vcigwKSB9OwogICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQg
LSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5n
VG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIpOwogICAgIH0KIAogICAgIGlmICghdG9wICYmIGhlaWdodCAmJiBib3R0
b20pIHsKICAgICAgICAgLy8gIzQKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICB0b3AgPSBjb250YWluaW5nQmxv
Y2tIZWlnaHQgLSAodXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRp
bmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0
aWNhbE1hcmdpbi5hZnRlciArICpib3R0b20pOwogICAgIH0KIAogICAgIGlmICghaGVpZ2h0ICYm
IHRvcCAmJiBib3R0b20pIHsKICAgICAgICAgLy8gIzUKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFy
Z2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2Fs
TWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBoZWlnaHQg
PSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRv
bSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciArICpib3R0b20pOwogICAgIH0KIAogICAgIGlm
ICghYm90dG9tICYmIHRvcCAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAgdXNl
ZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9y
KDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAg
dXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1
ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAg
ICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCArIHVzZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIpOwogICAg
IH0KIApAQCAtNDgwLDE1ICs0ODAsMTUgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KICAgICBh
dXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZGVu
SG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgobGF5b3V0Qm94LCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBGb3Jt
YXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7CiAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250
YWxNYXJnaW47Ci0gICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0
KCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBhZGRp
bmdSaWdodCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5
LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hH
ZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKICAgICBhdXRvIGJvcmRlckxlZnQg
PSBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCk7CiAgICAgYXV0byBib3JkZXJSaWdodCA9IGJveEdl
b21ldHJ5LmJvcmRlclJpZ2h0KCk7CiAgICAgaWYgKCFsZWZ0ICYmICF3aWR0aCAmJiAhcmlnaHQp
IHsKICAgICAgICAgLy8gSWYgYWxsIHRocmVlIG9mICdsZWZ0JywgJ3dpZHRoJywgYW5kICdyaWdo
dCcgYXJlICdhdXRvJzogRmlyc3Qgc2V0IGFueSAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLWxl
ZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLgogICAgICAgICAvLyBUaGVuLCBpZiB0aGUgJ2Rp
cmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQgZXN0YWJsaXNoaW5nIHRoZSBzdGF0aWMt
cG9zaXRpb24gY29udGFpbmluZyBibG9jayBpcyAnbHRyJyBzZXQgJ2xlZnQnIHRvIHRoZSBzdGF0
aWMKICAgICAgICAgLy8gcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIHRocmVlIGJlbG93
OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5
IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KLSAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJn
aW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwKSB9OwogCiAgICAgICAgIGF1dG8gc3Rh
dGljSG9yaXpvbnRhbFBvc2l0aW9uID0gc3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZG
bG93UG9zaXRpb25lZChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQpAQCAtNTMwLDcgKzUzMCw3IEBAIEhvcml6b250
YWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpv
bnRhbEdlb21ldHJ5KGNvCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBPdGhl
cndpc2UsIHNldCAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJp
Z2h0JyB0byAwLCBhbmQgcGljayB0aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRo
YXQgYXBwbGllcy4KLSAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4u
ZW5kLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLmVuZC52YWx1ZV9vcigwKSB9OwogICAgIH0KIAogICAgIGlmICghbGVmdCAmJiAhd2lk
dGggJiYgcmlnaHQpIHsKQEAgLTYwOSw4ICs2MDksOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1h
dHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IFJl
cAogICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5iZWZvcmU7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdp
bkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKLSAgICBhdXRvIHBhZGRpbmdU
b3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRp
bmdCb3R0b20gPSBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKKyAgICBh
dXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7Cisg
ICAgYXV0byBwYWRkaW5nQm90dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVl
X29yKDApOwogICAgIGF1dG8gYm9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CiAg
ICAgYXV0byBib3JkZXJCb3R0b20gPSBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20oKTsKIApAQCAt
NjIxLDcgKzYyMSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwCiAKICAgICBpZiAoIWJvdHRv
bSkgewogICAgICAgICAvLyAjMgotICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkJlZm9y
ZSA9IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApOwogICAgICAgICB1
c2VkTWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQmVmb3JlOwogICAgIH0KIApAQCAtNjk0LDggKzY5
NCw4IEBAIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd1Jl
cGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0OwogICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4uZW5kOwogICAgIGF1dG8gd2lkdGggPSBpbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0aEFuZE1h
cmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB2ZXJ0aWNhbENvbnN0cmFp
bnRzLCBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcykuY29udGVudFdpZHRoOwotICAgIGF1dG8g
cGFkZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAg
YXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDAp
OworICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVl
X29yKDApOworICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0
KCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gYm94R2VvbWV0cnkuYm9yZGVy
TGVmdCgpOwogICAgIGF1dG8gYm9yZGVyUmlnaHQgPSBib3hHZW9tZXRyeS5ib3JkZXJSaWdodCgp
OwogCkBAIC03MTAsOCArNzEwLDggQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9t
ZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QKIAogICAgIGlm
ICghbGVmdCB8fCAhcmlnaHQpIHsKICAgICAgICAgLy8gIzIKLSAgICAgICAgdXNlZE1hcmdpblN0
YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAg
IHVzZWRNYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7
CisgICAgICAgIHVzZWRNYXJnaW5TdGFydCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFy
dC52YWx1ZV9vcigwKTsKKyAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgaWYgKCF1c2VkTWFyZ2luU3Rh
cnQgJiYgIXVzZWRNYXJnaW5FbmQpIHsKQEAgLTc4Niw3ICs3ODYsNyBAQCBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyhjb25zdCBCb3gm
IGxheW91dEJveAogICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhl
aWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVk
SGVpZ2h0KGxheW91dEJveCk7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKTsKICAgICAvLyAjMQotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2lu
ID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
LnZhbHVlT3IoMCkgfTsgCisgICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGlj
YWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVm
b3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDAp
IH07IAogICAgIC8vICMyCiAgICAgaWYgKCFoZWlnaHQpIHsKICAgICAgICAgQVNTRVJUKGlzSGVp
Z2h0QXV0byhsYXlvdXRCb3gpKTsKQEAgLTgzMSw3ICs4MzEsNyBAQCBDb250ZW50V2lkdGhBbmRN
YXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkQ29udGVudFdpZHRo
QW5kTWFyZwogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dl
b21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMpOwogCiAgICAgLy8gIzEKLSAgICBhdXRvIHVzZWRIb3Jpem9udGFsbE1hcmdpbiA9
IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZh
bHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OworICAg
IGF1dG8gdXNlZEhvcml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5lbmQudmFsdWVfb3IoMCkgfTsKICAgICAvLyAjMgogICAgIGF1dG8gd2lkdGggPSBv
dmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFs
dWVzLndpZHRoIDogY29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50
cy5sb2dpY2FsV2lkdGgpOwogICAgIGlmICghd2lkdGgpCkBAIC04NjIsNyArODYyLDcgQEAgQ29u
dGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZENv
bnRlbnRXaWR0aEFuZE1hcmdpbigKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9
IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKHJlcGxhY2VkQm94
LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRp
bmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gZmxvYXRpbmcg
cmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKLSAgICBhdXRvIHVz
ZWRNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3Io
MCkgfTsKKyAgICBhdXRvIHVzZWRNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLmVuZC52YWx1ZV9vcigwKSB9OwogICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZENvbnRl
bnRXaWR0aEFuZE1hcmdpbihyZXBsYWNlZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCB7IH0s
IHsgb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGgsIHVzZWRNYXJnaW4gfSk7CiB9CiAK
QEAgLTkxNywxMCArOTE3LDEwIEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0dl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRIZWlnaHRBbmRNYXJnaW4oCiAgICAgLy8gIzEK
ICAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7
CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpj
b21wdXRlZFZlcnRpY2FsTWFyZ2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMp
OwotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25D
b2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDAp
LCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIHVz
ZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVz
IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IHJlcGxh
Y2VkQm94LnN0eWxlKCk7CiAKLSAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZh
bHVlcy5oZWlnaHQgPyBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBj
b21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2Fs
Q29uc3RyYWludHMtPmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGVp
Z2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJyaWRkZW5WZXJ0aWNh
bFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxhY2VkQm94LCB2ZXJ0
aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxDb25zdHJhaW50cy0+bG9naWNhbEhlaWdodCA6IHN0
ZDo6bnVsbG9wdCk7CiAgICAgYXV0byBoZWlnaHRJc0F1dG8gPSAhb3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzLmhlaWdodCAmJiBpc0hlaWdodEF1dG8ocmVwbGFjZWRCb3gpOwogICAgIGF1dG8gd2lk
dGhJc0F1dG8gPSBzdHlsZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIApAQCAtOTcxLDE4ICs5
NzEsMTggQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5l
UmVwbGFjZWRDb250ZW50V2lkdGhBbmRNYXJnaW4oY28KICAgICBhdXRvIHVzZWRNYXJnaW5TdGFy
dCA9IFsmXSB7CiAgICAgICAgIGlmIChvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4p
CiAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5z
dGFydDsKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1
ZU9yKDBfbHUpOworICAgICAgICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
LnZhbHVlX29yKDBfbHUpOwogICAgIH07CiAKICAgICBhdXRvIHVzZWRNYXJnaW5FbmQgPSBbJl0g
ewogICAgICAgICBpZiAob3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luKQogICAgICAg
ICAgICAgcmV0dXJuIG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLm1hcmdpbi0+ZW5kOwotICAg
ICAgICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1
KTsKICAgICB9OwogCiAgICAgYXV0byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVz
LndpZHRoID8gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRlZFdpZHRo
KHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbFdpZHRoKTsKICAgICBh
dXRvIGhlaWdodElzQXV0byA9IGlzSGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7Ci0gICAgYXV0byBo
ZWlnaHQgPSBjb21wdXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/
IHZlcnRpY2FsQ29uc3RyYWludHMtPmxvZ2ljYWxIZWlnaHQgOiBXVEY6Om51bGxvcHQpOworICAg
IGF1dG8gaGVpZ2h0ID0gY29tcHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3Ry
YWludHMgPyB2ZXJ0aWNhbENvbnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0
KTsKIAogICAgIGlmICghd2lkdGggJiYgaGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkQm94Lmhhc0lu
dHJpbnNpY1dpZHRoKCkpIHsKICAgICAgICAgLy8gIzEKQEAgLTk5MCw3ICs5OTAsNyBAQCBDb250
ZW50V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRl
bnRXaWR0aEFuZE1hcmdpbihjbwogICAgIH0gZWxzZSBpZiAoKCF3aWR0aCAmJiBoZWlnaHRJc0F1
dG8gJiYgIXJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgcmVwbGFjZWRCb3guaGFz
SW50cmluc2ljSGVpZ2h0KCkgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0aW8oKSkKICAg
ICAgICAgfHwgKCF3aWR0aCAmJiBoZWlnaHQgJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljUmF0
aW8oKSkpIHsKICAgICAgICAgLy8gIzIKLSAgICAgICAgd2lkdGggPSBoZWlnaHQudmFsdWVPcihy
ZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNIZWlnaHQoKSkgKiByZXBsYWNlZEJveC5pbnRyaW5zaWNS
YXRpbygpOworICAgICAgICB3aWR0aCA9IGhlaWdodC52YWx1ZV9vcihyZXBsYWNlZEJveC5oYXNJ
bnRyaW5zaWNIZWlnaHQoKSkgKiByZXBsYWNlZEJveC5pbnRyaW5zaWNSYXRpbygpOwogICAgIH0g
ZWxzZSBpZiAoIXdpZHRoICYmIGhlaWdodElzQXV0byAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5z
aWNSYXRpbygpICYmICFyZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNXaWR0aCgpICYmICFyZXBsYWNl
ZEJveC5oYXNJbnRyaW5zaWNIZWlnaHQoKSkgewogICAgICAgICAvLyAjMwogICAgICAgICAvLyBG
SVhNRTogdW5kZWZpbmVkIGJ1dCBzdXJlbHkgZG9hYmxlLgpAQCAtMTAzOSw3ICsxMDM5LDcgQEAg
TGF5b3V0U2l6ZSBGb3JtYXR0aW5nR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9m
ZnNldChjb25zdCBCb3gmIGxheW91dEIKICAgICAgICAgYm90dG9tID0gLSp0b3A7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gIzQKLSAgICAgICAgYm90dG9tID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBib3R0b20gPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRm9yIHJlbGF0aXZl
bHkgcG9zaXRpb25lZCBlbGVtZW50cywgJ2xlZnQnIGFuZCAncmlnaHQnIG1vdmUgdGhlIGJveChl
cykgaG9yaXpvbnRhbGx5LCB3aXRob3V0IGNoYW5naW5nIHRoZWlyIHNpemUuCkBAIC0xMDcxLDE0
ICsxMDcxLDE0IEBAIExheW91dFNpemUgRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dQb3NpdGlv
bmVkUG9zaXRpb25PZmZzZXQoY29uc3QgQm94JiBsYXlvdXRCCiAgICAgICAgIGlmIChpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKQogICAgICAgICAgICAgcmlnaHQgPSAtKmxlZnQ7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGxlZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBsZWZ0ID0g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVCghYm90dG9tIHx8ICp0b3AgPT0gLSpi
b3R0b20pOwogICAgIEFTU0VSVCghbGVmdCB8fCAqbGVmdCA9PSAtKnJpZ2h0KTsKIAogICAgIGF1
dG8gdG9wUG9zaXRpb25PZmZzZXQgPSAqdG9wOwotICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0
ID0gbGVmdC52YWx1ZU9yKC0qcmlnaHQpOworICAgIGF1dG8gbGVmdFBvc2l0aW9uT2Zmc2V0ID0g
bGVmdC52YWx1ZV9vcigtKnJpZ2h0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dIC0+IHBvc2l0aW9uZWQgaW5mbG93
IC0+IHRvcCBvZmZzZXQoIiA8PCB0b3BQb3NpdGlvbk9mZnNldCA8PCAicHgpIGxlZnQgb2Zmc2V0
KCIgPDwgbGVmdFBvc2l0aW9uT2Zmc2V0IDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJv
eCA8PCAiKSIpOwogICAgIHJldHVybiB7IGxlZnRQb3NpdGlvbk9mZnNldCwgdG9wUG9zaXRpb25P
ZmZzZXQgfTsKQEAgLTExMDUsNyArMTEwNSw3IEBAIEVkZ2VzIEZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRCb3JkZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiBPcHRpb25hbDxFZGdl
cz4gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0CiB7CiAgICAg
aWYgKCFsYXlvdXRCb3guaXNQYWRkaW5nQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgc3R5
bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0Nv
bnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1BhZGRpbmddIC0+IGxheW91dEJveDogIiA8PCAmbGF5
b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IGFiNzlhZmI0Y2RmZjYyMjFm
MDE5ZTczMmYwYmY0MDE2MjRiMGFkMjAuLjA2MjRmMmY0ZGUxZjE4Mzk1ODQ4MTQzYzQ3ZjhhOGU3
NmU4MWNkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNzMsOCArNzMsOCBAQCBw
dWJsaWM6CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRWYWx1ZShjb25zdCBMZW5n
dGgmIGdlb21ldHJ5UHJvcGVydHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNv
bnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpeGVkVmFsdWUoY29uc3QgTGVuZ3RoJiBn
ZW9tZXRyeVByb3BlcnR5KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVkTWluSGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdC
bG9ja0hlaWdodCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gY29tcHV0ZWRNYXhIZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb21wdXRlZE1pbkhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRV
bml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkTWF4SGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7
CiAKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1pbldpZHRoKGNvbnN0IEJveCYs
IExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpIGNvbnN0OwogICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGNvbXB1dGVkTWF4V2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCkgY29uc3Q7CkBAIC04NCw5ICs4NCw5IEBAIHB1YmxpYzoKICAgICBMYXlv
dXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY29uc3QgQ29udGFp
bmVyQm94JikgY29uc3Q7CiAKICAgICBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQgY29u
c3RyYWludHNGb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IENvbnRhaW5lckJveCYpIGNvbnN0Owot
ICAgIENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQoY29uc3QgQ29udGFpbmVyQm94JiwgT3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2Fw
ZVJlYXNvbj4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCBjb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94Jiwg
T3B0aW9uYWw8Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbj4gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRIZWlnaHQoY29uc3Qg
Qm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpu
dWxsb3B0KSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChj
b25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkV2lk
dGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAK
ICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLmlzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWly
a3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nUXVpcmtzLmNwcAppbmRleCA2M2YyMjAyMmVmN2ZmZjk5MjljNGI1NWM0ODcxNDc0YjdjNTA3
ZWVkLi4wNDk0ODEzMTU3ZjUzNzY0NGQ3YTBkMTkwMmRhNjE1NzNmM2M2MzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWly
a3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ1F1aXJrcy5jcHAKQEAgLTYyLDkgKzYyLDkgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5n
UXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdo
dCgKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnku
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigqY29udGFpbmluZ0Jsb2NrLCBob3Jpem9udGFsQ29uc3Ry
YWludHMpOwogCiAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpF
c2NhcGVSZWFzb246OkZpbmRGaXhlZEhlaWdodEFuY2VzdG9yUXVpcmspOwotICAgICAgICAgICAg
YXV0byB2ZXJ0aWNhbFBhZGRpbmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigw
KSArIGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOworICAgICAgICAgICAg
YXV0byB2ZXJ0aWNhbFBhZGRpbmcgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3Io
MCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CiAgICAgICAgICAg
ICBhdXRvIHZlcnRpY2FsQm9yZGVyID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9t
ZXRyeS5ib3JkZXJCb3R0b20oKTsKLSAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2Fs
TWFyZ2luUGFkZGluZ0FuZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigw
KSArIHZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgKyB2ZXJ0aWNhbFBhZGRpbmcgKyB2
ZXJ0aWNhbEJvcmRlcjsKKyAgICAgICAgICAgIGJvZHlBbmREb2N1bWVudFZlcnRpY2FsTWFyZ2lu
UGFkZGluZ0FuZEJvcmRlciArPSB2ZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyB2
ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRp
Y2FsQm9yZGVyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPEluaXRpYWxDb250YWluaW5n
QmxvY2s+KCpjb250YWluaW5nQmxvY2spKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYzBmYjFmYTQ4NjczNTg4MGYzZDczZTdkZmJhOGE2YWI2
NGZiMTIyMi4uOTNkZjY0ZDgzZDNjN2I4MDRhMDdhMjk1YTkxNWUwZDhiOGRlZDM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xOTcsOSAr
MTk3LDkgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhl
aWdodCgpIGNvbnN0CiAKICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4
dCB7ICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKICAgICBpZiAo
YXV0byBmbG9hdFRvcCA9IGZsb2F0aW5nQ29udGV4dC50b3AoKSkgewotICAgICAgICB0b3AgPSBz
dGQ6Om1pbigqZmxvYXRUb3AsIHRvcC52YWx1ZU9yKCpmbG9hdFRvcCkpOworICAgICAgICB0b3Ag
PSBzdGQ6Om1pbigqZmxvYXRUb3AsIHRvcC52YWx1ZV9vcigqZmxvYXRUb3ApKTsKICAgICAgICAg
YXV0byBmbG9hdEJvdHRvbSA9ICpmbG9hdGluZ0NvbnRleHQuYm90dG9tKCk7Ci0gICAgICAgIGJv
dHRvbSA9IHN0ZDo6bWF4KGZsb2F0Qm90dG9tLCBib3R0b20udmFsdWVPcihmbG9hdEJvdHRvbSkp
OworICAgICAgICBib3R0b20gPSBzdGQ6Om1heChmbG9hdEJvdHRvbSwgYm90dG9tLnZhbHVlX29y
KGZsb2F0Qm90dG9tKSk7CiAgICAgfQogICAgIHJldHVybiAqYm90dG9tIC0gKnRvcDsKIH0KQEAg
LTI5Niw3ICsyOTYsNyBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnByZWNvbXB1dGVW
ZXJ0aWNhbFBvc2l0aW9uRm9yQm94QW5kQW5jZXN0b3JzKGNvbnN0CiAgICAgICAgIH0oKTsKIAog
ICAgICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnku
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbigqYW5jZXN0b3IsIGNvbnN0cmFpbnRzRm9yQW5jZXN0b3Iu
aG9yaXpvbnRhbCk7Ci0gICAgICAgIGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRW
ZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9y
KDApIH07CisgICAgICAgIGF1dG8gdXNlZE5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNh
bE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkg
fTsKICAgICAgICAgYXV0byBwcmVjb21wdXRlZE1hcmdpbkJlZm9yZSA9IG1hcmdpbkNvbGxhcHNl
KCkucHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUoKmFuY2VzdG9yLCB1c2VkTm9uQ29sbGFwc2VkTWFy
Z2luLCBmb3JtYXR0aW5nR2VvbWV0cnkpOwogCiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkoKmFuY2VzdG9yKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggZWE5OWY3MjUwNDlkZGQw
OGY1ZjJhY2M3ZGNkNWNjNDE1OWM2NmY3MS4uNTU5ZmUzNjM2ZjQ5OTg5Njc3ODUzODZhZDY2ZTE0
ZDQ2ZGU0YmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9t
ZXRyeS5jcHAKQEAgLTcwLDggKzcwLDggQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRDb250ZW50SGVpZ2h0QW4KIAogICAg
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JC
b3gobGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gRm9y
bWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKTsKLSAgICAgICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2Vk
VmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVP
cigwKSB9OyAKLSAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnku
Ym9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKKyAgICAg
ICAgYXV0byBub25Db2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxh
cHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07IAorICAgICAgICBhdXRv
IGJvcmRlckFuZFBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21l
dHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsKICAgICAgICAgYXV0byBoZWlnaHQgPSBvdmVy
cmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhl
aWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94KTsKIAogICAgICAgICBpZiAo
aGVpZ2h0KQpAQCAtMTU1LDE0ICsxNTUsMTQgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZENvbnRlbnRXaWR0aEFuZE0KICAg
ICAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6b250YWxNYXJnaW47CiAgICAgICAg
IGF1dG8gYm9yZGVyTGVmdCA9IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKICAgICAgICAgYXV0
byBib3JkZXJSaWdodCA9IGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIGF1dG8g
cGFkZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7Ci0gICAg
ICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVP
cigwKTsKKyAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0
KCkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnku
cGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgLy8gIzEKICAgICAgICAgaWYg
KHdpZHRoKSB7Ci0gICAgICAgICAgICBhdXRvIGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNv
bnRhaW5pbmdCbG9ja1dpZHRoIC0gKGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1
ZU9yKDApICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkp
OworICAgICAgICAgICAgYXV0byBob3Jpem9udGFsU3BhY2VGb3JNYXJnaW4gPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtIChjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCkg
KyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3Jk
ZXJSaWdodCArIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkpOwogICAg
ICAgICAgICAgaWYgKGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA8IDApCi0gICAgICAgICAgICAg
ICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFy
dC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsK
KyAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5k
LnZhbHVlX29yKDApIH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAjMgpAQCAtMTkwLDcgKzE5
MCw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRDb250ZW50V2lkdGhBbmRNCiAKICAgICAgICAgLy8gIzQKICAgICAgICAg
aWYgKCF3aWR0aCkgewotICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApLCBjb21wdXRlZEhvcml6b250YWxN
YXJnaW4uZW5kLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2lu
ID0geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkgfTsKICAgICAgICAgICAgIHdpZHRoID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSAodXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3Jk
ZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIHVzZWRI
b3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgICAgIH0KIApAQCAtMjAzLDggKzIwMyw4IEBAIENv
bnRlbnRXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW5GbG93Tm9uUmVw
bGFjZWRDb250ZW50V2lkdGhBbmRNCiAgICAgICAgIGF1dG8gc2hvdWxkQXBwbHlDZW50ZXJBbGln
bkZvckJsb2NrQ29udGVudCA9IGNvbnRhaW5pbmdCbG9ja1N0eWxlLnRleHRBbGlnbigpID09IFRl
eHRBbGlnbk1vZGU6OldlYktpdENlbnRlciAmJiAoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0
YXJ0IHx8IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQpOwogICAgICAgICBpZiAoc2hvdWxk
QXBwbHlDZW50ZXJBbGlnbkZvckJsb2NrQ29udGVudCkgewogICAgICAgICAgICAgYXV0byBib3Jk
ZXJCb3hXaWR0aCA9IChib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgICsgKndpZHRoICsgcGFkZGlu
Z1JpZ2h0ICsgYm9yZGVyUmlnaHQpOwotICAgICAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDApOwotICAgICAgICAgICAgYXV0
byBtYXJnaW5FbmQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCk7Cisg
ICAgICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0
YXJ0LnZhbHVlX29yKDApOworICAgICAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDApOwogICAgICAgICAgICAgYXV0byBjZW50ZXJl
ZExvZ2ljYWxMZWZ0Rm9yTWFyZ2luQm94ID0gc3RkOjptYXgoKGNvbnRhaW5pbmdCbG9ja1dpZHRo
IC0gYm9yZGVyQm94V2lkdGggLSBtYXJnaW5TdGFydCAtIG1hcmdpbkVuZCkgLyAyLCAwX2x1KTsK
ICAgICAgICAgICAgIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ID0gY2VudGVyZWRMb2dpY2Fs
TGVmdEZvck1hcmdpbkJveCArIG1hcmdpblN0YXJ0OwogICAgICAgICAgICAgdXNlZEhvcml6b250
YWxNYXJnaW4uZW5kID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSBib3JkZXJCb3hXaWR0aCAtIG1h
cmdpblN0YXJ0ICsgbWFyZ2luRW5kOwpAQCAtMzI2LDcgKzMyNiw3IEBAIENvbnRlbnRXaWR0aEFu
ZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRDb250ZW50V2lkdGhBbmRN
YXJnaW4oY29uCiAgICAgICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBtYXhXaWR0aEFu
ZE1hcmdpbjsKICAgICB9CiAKLSAgICBhdXRvIG1pbldpZHRoID0gY29tcHV0ZWRNaW5XaWR0aChs
YXlvdXRCb3gsIGF2YWlsYWJsZVdpZHRoKS52YWx1ZU9yKDApOworICAgIGF1dG8gbWluV2lkdGgg
PSBjb21wdXRlZE1pbldpZHRoKGxheW91dEJveCwgYXZhaWxhYmxlV2lkdGgpLnZhbHVlX29yKDAp
OwogICAgIGF1dG8gbWluV2lkdGhBbmRNYXJnaW4gPSBjb21wdXRlKGhvcml6b250YWxDb25zdHJh
aW50cywgbWluV2lkdGgpOwogICAgIGlmIChjb250ZW50V2lkdGhBbmRNYXJnaW4uY29udGVudFdp
ZHRoIDwgbWluV2lkdGhBbmRNYXJnaW4uY29udGVudFdpZHRoKQogICAgICAgICBjb250ZW50V2lk
dGhBbmRNYXJnaW4gPSBtaW5XaWR0aEFuZE1hcmdpbjsKQEAgLTMzNywxMiArMzM3LDEyIEBAIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6OmludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMoY29uCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJvcmRlckFuZFBh
ZGRpbmcgPSBbJl0oYXV0byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0eWxlID0gbGF5
b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpblN0
YXJ0KCkpLnZhbHVlT3IoMCkKKyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2lu
U3RhcnQoKSkudmFsdWVfb3IoMCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7IHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5n
TGVmdCgpKS52YWx1ZU9yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGlu
Z1JpZ2h0KCkpLnZhbHVlT3IoMCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRk
aW5nTGVmdCgpKS52YWx1ZV9vcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBh
ZGRpbmdSaWdodCgpKS52YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5
bGUuYm9yZGVyUmlnaHRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5t
YXJnaW5FbmQoKSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5t
YXJnaW5FbmQoKSkudmFsdWVfb3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcHV0ZWRJbnRy
aW5zaWNXaWR0aENvbnN0cmFpbnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXgg
OTVhMGVlOGQ1OTZjOWI4NTUzZWEyYmQ5YzQ1NzljNzM1OWMzN2RkYy4uOGZjZjI4MjhjM2RlMGRl
ZmUxMjc5MzZiMTNlMDE1YzQ2MDk3ZTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tG
b3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0
PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJs
ZShjbwogICAgICAgICBhdXRvIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCA9IGZvcm1hdHRpbmdD
b250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCks
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkRvY3VtZW50Qm94U3RyZXRjaGVzVG9W
aWV3cG9ydFF1aXJrKS5jb250ZW50Qm94SGVpZ2h0KCk7CiAgICAgICAgIC8vIERvY3VtZW50IGJv
eCdzIG93biB2ZXJ0aWNhbCBtYXJnaW4vYm9yZGVyL3BhZGRpbmcgdmFsdWVzIGFsd2F5cyBzaHJp
bmsgdGhlIGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICBhdXRvJiBkb2N1bWVudEJveEdlb21ldHJ5
ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAg
ZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0IC09IG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luICsg
ZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRy
eS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDApOworICAgICAgICBkb2N1bWVudEJveENvbnRl
bnRIZWlnaHQgLT0gbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJveEdlb21l
dHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGlu
ZygpLnZhbHVlX29yKDApOwogICAgICAgICByZXR1cm4gc3RkOjptYXgoY29udGVudEhlaWdodEFu
ZE1hcmdpbi5jb250ZW50SGVpZ2h0LCAgZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0KTsKICAgICB9
CiAKQEAgLTg0LDIzICs4NCwyMyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRp
bmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjbwogICAgIGF1dG8g
Ym9keUJveENvbnRlbnRIZWlnaHQgPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrR2VvbWV0cnkuY29u
dGVudEJveEhlaWdodCgpOwogICAgIC8vIEJvZHkgYm94J3Mgb3duIGJvcmRlciBhbmQgcGFkZGlu
ZyBzaHJpbmsgdGhlIGNvbnRlbnQgaGVpZ2h0LgogICAgIGF1dG8mIGJvZHlCb3hHZW9tZXRyeSA9
IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYm9keUJv
eENvbnRlbnRIZWlnaHQgLT0gYm9keUJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib2R5
Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29u
dGVudEhlaWdodCAtPSBib2R5Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJvZHlCb3hH
ZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwKTsKICAgICAvLyBCb2R5IGJveCBu
ZXZlciBjb2xsYXBzZXMgaXRzIHZlcnRpY2FsIG1hcmdpbnMgd2l0aCB0aGUgZG9jdW1lbnQgYm94
IGJ1dCBpdCBtaWdodCBjb2xsYXBzZSBpdHMgbWFyZ2luIHdpdGggaXRzIGRlc2NlbmRhbnRzLgog
ICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25D
b2xsYXBzZWRNYXJnaW47CiAgICAgYXV0byBtYXJnaW5Db2xsYXBzZSA9IEJsb2NrTWFyZ2luQ29s
bGFwc2UgeyBmb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpLCBmb3JtYXR0aW5nQ29udGV4
dC5mb3JtYXR0aW5nU3RhdGUoKSB9OwogICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gbWFyZ2lu
Q29sbGFwc2UuY29sbGFwc2VkVmVydGljYWxWYWx1ZXMobGF5b3V0Qm94LCBub25Db2xsYXBzZWRN
YXJnaW4pLmNvbGxhcHNlZFZhbHVlczsKLSAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IGNv
bGxhcHNlZE1hcmdpbi5iZWZvcmUudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlKTsK
LSAgICB1c2VkVmVydGljYWxNYXJnaW4gKz0gY29sbGFwc2VkTWFyZ2luLmlzQ29sbGFwc2VkVGhy
b3VnaCA/IG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA6IGNvbGxhcHNlZE1hcmdpbi5hZnRlci52
YWx1ZU9yKG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlcik7CisgICAgYXV0byB1c2VkVmVydGljYWxN
YXJnaW4gPSBjb2xsYXBzZWRNYXJnaW4uYmVmb3JlLnZhbHVlX29yKG5vbkNvbGxhcHNlZE1hcmdp
bi5iZWZvcmUpOworICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiArPSBjb2xsYXBzZWRNYXJnaW4uaXND
b2xsYXBzZWRUaHJvdWdoID8gbm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDogY29sbGFwc2VkTWFy
Z2luLmFmdGVyLnZhbHVlX29yKG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlcik7CiAgICAgYm9keUJv
eENvbnRlbnRIZWlnaHQgLT0gdXNlZFZlcnRpY2FsTWFyZ2luOwogICAgIC8vIERvY3VtZW50IGJv
eCdzIHBhZGRpbmcgYW5kIGJvcmRlciBhbHNvIHNocmluayB0aGUgYm9keSBib3gncyBjb250ZW50
IGhlaWdodC4KICAgICBhdXRvJiBkb2N1bWVudEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKICAg
ICBhdXRvJiBkb2N1bWVudEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlG
b3JCb3goZG9jdW1lbnRCb3gsIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlT
dHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspOwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRv
Y3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnku
dmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAt
PSBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21l
dHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDApOwogICAgIC8vIEhvd2V2ZXIgdGhlIG5v
bi1pbi1mbG93IGRvY3VtZW50IGJveCdzIHZlcnRpY2FsIG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRo
ZXkgZG9uJ3QgYWZmZWN0IHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0LgogICAgIGlmIChk
b2N1bWVudEJveC5pc0luRmxvdygpKSB7CiAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9tZXRy
eSA9IGZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdHZW9tZXRyeSgpOwogICAgICAgICBhdXRv
IHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5
LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGZvcm1hdHRpbmdHZW9tZXRyeS5j
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyayku
aG9yaXpvbnRhbCk7Ci0gICAgICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHByZWNvbXB1dGVE
b2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgcHJlY29tcHV0ZURv
Y3VtZW50Qm94VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKTsKKyAgICAgICAgYm9keUJv
eENvbnRlbnRIZWlnaHQgLT0gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYmVm
b3JlLnZhbHVlX29yKDApICsgcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYWZ0
ZXIudmFsdWVfb3IoMCk7CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0
QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQsICBib2R5Qm94Q29udGVudEhlaWdodCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAppbmRleCBjNjc1MmY1YjgwNjQ1
YTliY2ViNjAxMzY5ZDA0ZWE3NmJhMjI2NDJjLi40YjQ5YmI1MmYyMjAzZmVmNTNmNjVhNjI0OWQ4
OTAzMTY2NzE2ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAKQEAgLTUzOSw3ICs1MzksNyBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVn
YXRpdmVQYWlyOjpWYWx1ZXMgQmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdgogTGF5b3V0VW5p
dCBCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVJZ25vcmluZ0NvbGxhcHNpbmdUaHJv
dWdoKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNl
ZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Js
b2NrTGV2ZWxCb3goKSk7Ci0gICAgcmV0dXJuIG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVN
YXJnaW5CZWZvcmUobGF5b3V0Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpKS52YWx1ZU9yKG5vbkNv
bGxhcHNlZFZhbHVlcy5iZWZvcmUpOworICAgIHJldHVybiBtYXJnaW5WYWx1ZShwb3NpdGl2ZU5l
Z2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dEJveCwgbm9uQ29sbGFwc2VkVmFsdWVzKSkudmFsdWVf
b3Iobm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9yZSk7CiB9CiAKIFVzZWRWZXJ0aWNhbE1hcmdpbiBC
bG9ja01hcmdpbkNvbGxhcHNlOjpjb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhjb25zdCBCb3gmIGxh
eW91dEJveCwgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgbm9uQ29sbGFw
c2VkVmFsdWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDNiYTcyMTQ1ZWE4MTk3MGZiNTliODZlYTZmNjE2NjY3
ZTkwN2UwN2EuLmZiYTI1ZDQ1ZTA4NjhlNGIyMzg0ZjY4MzY2MjJiYjQ2NzE0MThjODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJl
Y29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBz
ZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5l
Z2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OnByZWNvbXAKIAogICAgIGF1
dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmhvcml6b250YWw7
CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNv
bXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwot
ICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xs
YXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICBhdXRvIG5vbkNv
bGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsg
Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsKICAgICByZXR1cm4gcHJlY29tcHV0ZWRQb3Np
dGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlKGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luLCBm
b3JtYXR0aW5nR2VvbWV0cnkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGI2NzlhMzMxNGFlMjEwOGM1NmE4NjYxYmFlMjEwYWYyMGYzNTI5
MWUuLmVmZTk3ODIwNGVjYzYxY2QyNzU2YTQ4MzMwMzIwOTYxNDBiNTEwZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC05MywxMCArOTMsMTAgQEAg
dm9pZCBGbGV4Rm9ybWF0dGluZ0NvbnRleHQ6OnNpemVBbmRQbGFjZUZsZXhJdGVtcyhjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnQKICAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0
UGFkZGluZyhmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRQYWRkaW5nKGZsZXhJdGVtLCBjb25z
dHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aCkpOwogCiAgICAgICAgICAgICBhdXRvIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZEhvcml6
b250YWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwotICAgICAgICAg
ICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5l
bmQudmFsdWVPcigwX2x1KSB9KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0SG9y
aXpvbnRhbE1hcmdpbih7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigw
X2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwX2x1KSB9KTsKIAog
ICAgICAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21l
dHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250
YWwpOwotICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwX2x1KSB9KTsKKyAgICAgICAgICAgIGZsZXhJdGVtR2Vv
bWV0cnkuc2V0VmVydGljYWxNYXJnaW4oeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52
YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwX2x1
KSB9KTsKIAogICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0
KGZvcm1hdHRpbmdHZW9tZXRyeS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290
KGZsZXhJdGVtKSk7CiAgICAgICAgICAgICBmbGV4SXRlbUdlb21ldHJ5LnNldENvbnRlbnRCb3hX
aWR0aChmbGV4SXRlbUxvZ2ljYWxXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1h
dHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggNTMxYTNkMjI2MDAwN2ZkMTIyNjdhODg3NzEwOGY5YTE0
OTllMzFkNS4uZmU1OGRkM2FmNjgzOTZlOGExNGU4MDVmYTBhZmNkNjdlYjYxZjNmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNDMsMTIgKzQz
LDEyIEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgRmxleEZvcm1hdHRpbmdHZW9tZXRyeTo6
aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhjb25zCiB7CiAgICAgYXV0byBmaXhlZE1hcmdpbkJv
cmRlckFuZFBhZGRpbmcgPSBbJl0oYXV0byYgbGF5b3V0Qm94KSB7CiAgICAgICAgIGF1dG8mIHN0
eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgIHJldHVybiBmaXhlZFZhbHVlKHN0eWxl
Lm1hcmdpblN0YXJ0KCkpLnZhbHVlT3IoMCkKKyAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5
bGUubWFyZ2luU3RhcnQoKSkudmFsdWVfb3IoMCkKICAgICAgICAgICAgICsgTGF5b3V0VW5pdCB7
IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHls
ZS5wYWRkaW5nTGVmdCgpKS52YWx1ZU9yKDApCi0gICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5
bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVlT3IoMCkKKyAgICAgICAgICAgICsgZml4ZWRWYWx1ZShz
dHlsZS5wYWRkaW5nTGVmdCgpKS52YWx1ZV9vcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVl
KHN0eWxlLnBhZGRpbmdSaWdodCgpKS52YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRV
bml0IHsgc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpIH0KLSAgICAgICAgICAgICsgZml4ZWRWYWx1
ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICsgZml4ZWRWYWx1
ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVfb3IoMCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29t
cHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzID0gWyZdKCkgLT4gSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAKaW5kZXggOTQwYTZkYTlmOWMxNGYwMTQ0NTFmYWRhMjQ2ZmIwZWJjZDEyZDJiOC4uOGU3MWE3
NTkxYTc5YjBlN2IzNGQ0MGZlOWEwZjIzNjg1ZmQ0MGFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJyZWFr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIE92ZXJmbG93
aW5nVGV4dENvbnRlbnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0Nv
bnRlbnRXaXRoVGV4dChjCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3Vic2Vx
dWVudCBlbXB0eSBpbmxpbmUgYm94ZXMgZS5nLgogICAgICAgICBhdXRvIHRyYWlsaW5nQ2FuZGlk
YXRlSW5kZXggPSBicmVha2FibGVSdW5JbmRleCAtIDE7CiAgICAgICAgIGF1dG8gaXNBdElubGlu
ZUJveCA9IHJ1bnNbdHJhaWxpbmdDYW5kaWRhdGVJbmRleF0uaW5saW5lSXRlbS5pc0lubGluZUJv
eFN0YXJ0KCk7Ci0gICAgICAgIHJldHVybiAhaXNBdElubGluZUJveCA/IHRyYWlsaW5nQ2FuZGlk
YXRlSW5kZXggOiB0cmFpbGluZ0NhbmRpZGF0ZUluZGV4ID8gbWFrZU9wdGlvbmFsKHRyYWlsaW5n
Q2FuZGlkYXRlSW5kZXggLSAxKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuICFpc0F0
SW5saW5lQm94ID8gdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA6IHRyYWlsaW5nQ2FuZGlkYXRlSW5k
ZXggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwodHJhaWxpbmdDYW5kaWRhdGVJbmRleCAtIDEpIDogc3Rk
OjpudWxsb3B0OwogICAgIH07CiAKICAgICAvLyBDaGVjayB3aGVyZSB0aGUgb3ZlcmZsb3cgb2Nj
dXJzIGFuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgdG8gZmlndXJlIG91dCB0aGUgYnJl
YWtpbmcgYmVoYXZpb3VyLgpAQCAtMzQxLDcgKzM0MSw3IEBAIE92ZXJmbG93aW5nVGV4dENvbnRl
bnQgSW5saW5lQ29udGVudEJyZWFrZXI6OnByb2Nlc3NPdmVyZmxvd2luZ0NvbnRlbnRXaXRoVGV4
dChjCiAgICAgICAgICAgICAgICAgLy8gc2luY2UgaXQncyBlaXRoZXIgYXQgaHlwaGVuIHBvc2l0
aW9uIG9yIHRoZSBlbnRpcmUgcnVuIGlzIHJldHVybmVkLgogICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJ0aWFsUnVuLT5sZW5ndGgpOwogICAgICAgICAgICAgICAgIGF1dG8gcnVuSXNGdWxseUFj
Y29tbW9kYXRlZCA9IHBhcnRpYWxSdW4tPmxlbmd0aCA9PSBkb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4ocnVuLmlubGluZUl0ZW0pLmxlbmd0aCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBPdmVy
Zmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uIHsgaW5kZXgsIE92ZXJmbG93aW5n
VGV4dENvbnRlbnQ6OkJyZWFraW5nUG9zaXRpb246OlRyYWlsaW5nQ29udGVudCB7IGZhbHNlLCBy
dW5Jc0Z1bGx5QWNjb21tb2RhdGVkID8gV1RGOjpudWxsb3B0IDogcGFydGlhbFJ1biB9IH07Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6OkJyZWFraW5nUG9z
aXRpb24geyBpbmRleCwgT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbjo6
VHJhaWxpbmdDb250ZW50IHsgZmFsc2UsIHJ1bklzRnVsbHlBY2NvbW1vZGF0ZWQgPyBzdGQ6Om51
bGxvcHQgOiBwYXJ0aWFsUnVuIH0gfTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDI2ZWIxOWYxMjM0YzRiMDVkNjdhZTIxZTY0ZGFjMGI3ZmIwNjVkODEu
LmVlODFhMTcxMTczODhjY2YxZjg4NmFiNmNhZDhiOTY0NTlmMzY1NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5NCw3ICsxOTQs
NyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1z
JiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogICAgICAgICAvLyBUdXJuIHByZXZpb3VzIGxp
bmUncyBvdmVyZmxvdyBjb250ZW50IGxlbmd0aCBpbnRvIHRoZSBuZXh0IGxpbmUncyBsZWFkaW5n
IGNvbnRlbnQgcGFydGlhbCBsZW5ndGguCiAgICAgICAgIC8vICJzcFs8LWxpbmUgYnJlYWstPl1s
aXRfY29udGVudCIgLT4gb3ZlcmZsb3cgbGVuZ3RoOiAxMSAtPiBsZWFkaW5nIHBhcnRpYWwgY29u
dGVudCBsZW5ndGg6IDExLgogICAgICAgICBhdXRvIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCA9IHByZXZpb3VzTGluZSA/IHByZXZpb3VzTGluZS0+b3ZlcmZsb3dDb250ZW50TGVuZ3RoIDog
MDsKLSAgICAgICAgYXV0byBsZWFkaW5nTG9naWNhbFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJl
dmlvdXNMaW5lLT5vdmVyZmxvd0xvZ2ljYWxXaWR0aCA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
YXV0byBsZWFkaW5nTG9naWNhbFdpZHRoID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5v
dmVyZmxvd0xvZ2ljYWxXaWR0aCA6IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBpbml0aWFs
TGluZUhlaWdodCA9IFsmXSgpIC0+IElubGluZUxheW91dFVuaXQgewogICAgICAgICAgICAgaWYg
KGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJvb3QoKS5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwpAQCAtMzUwLDcgKzM1MCw3IEBA
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZv
cm1hdHRpbmdSb290KGNvbnN0IEJveCYKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVIb3Jpem9udGFsTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBhdXRvIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgZm9ybWF0
dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0Qm94KS5zZXRIb3Jpem9udGFsTWFyZ2luKHsg
Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9KTsKKyAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hH
ZW9tZXRyeShsYXlvdXRCb3gpLnNldEhvcml6b250YWxNYXJnaW4oeyBjb21wdXRlZEhvcml6b250
YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQu
dmFsdWVfb3IoMCkgfSk7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdAogICAgICAgICAgICAgY29udGVudFdpZHRoQW5kTWFyZ2luID0g
bWF4V2lkdGhBbmRNYXJnaW47CiAgICAgfQogCi0gICAgYXV0byBtaW5XaWR0aCA9IGZvcm1hdHRp
bmdHZW9tZXRyeSgpLmNvbXB1dGVkTWluV2lkdGgobGF5b3V0Qm94LCBhdmFpbGFibGVXaWR0aCku
dmFsdWVPcigwKTsKKyAgICBhdXRvIG1pbldpZHRoID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29t
cHV0ZWRNaW5XaWR0aChsYXlvdXRCb3gsIGF2YWlsYWJsZVdpZHRoKS52YWx1ZV9vcigwKTsKICAg
ICBhdXRvIG1pbldpZHRoQW5kTWFyZ2luID0gY29tcHV0ZShtaW5XaWR0aCk7CiAgICAgaWYgKGNv
bnRlbnRXaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGggPCBtaW5XaWR0aEFuZE1hcmdpbi5jb250
ZW50V2lkdGgpCiAgICAgICAgIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IG1pbldpZHRoQW5kTWFy
Z2luOwpAQCAtNTg5LDkgKzU4OSw5IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsCiAgICAgICAg
ICAgICBpZiAoaW5saW5lQm94U3RhcnRTZXQuY29udGFpbnMoJmxheW91dEJveCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGlu
ZS4KICAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChsb2dpY2Fs
UmVjdC50b3BMZWZ0KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJveEhlaWdodCA9
IGxvZ2ljYWxSZWN0LmhlaWdodCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBi
b3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvIGNvbnRlbnRCb3hIZWlnaHQgPSBsb2dpY2FsUmVjdC5oZWlnaHQoKSAtIChib3hH
ZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCku
dmFsdWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRC
b3hIZWlnaHQoY29udGVudEJveEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50
Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxC
b3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwX2x1KSk7
CisgICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94V2lkdGggPSBsb2dpY2FsUmVjdC53aWR0
aCgpIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6
b250YWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpOwogICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldENvbnRlbnRCb3hXaWR0aChjb250ZW50Qm94V2lkdGgpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNjAwLDggKzYwMCw4IEBAIElubGluZVJlY3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnN0IExpbmVCdWlsCiAgICAgICAgICAgICBlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmV4cGFuZFRv
Q29udGFpbihsb2dpY2FsUmVjdCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2Fs
TGVmdChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmxlZnQoKSk7CiAKLSAgICAgICAgICAgIGJveEdl
b21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQo
KSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQ
YWRkaW5nKCkudmFsdWVPcigwX2x1KSkpOwotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29u
dGVudEJveFdpZHRoKGVuY2xvc2luZ0JvcmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRy
eS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZh
bHVlT3IoMF9sdSkpKTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWln
aHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNh
bEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkp
KTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdC
b3JkZXJCb3hSZWN0LndpZHRoKCkgLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsg
Ym94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwogICAgICAg
ICB9CiAgICAgfTsKICAgICB1cGRhdGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCBj
MjVmYTE0M2ZhNzI2NjVlMDM1ZTViZDk4ODAzNzJjM2M2Mzk4NTdlLi5iYzZjMGU1NzU4ZDQ0MmRm
OTc5ZjVjYjUwNzE4NjE2MzU2ZWNmOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBMaW5lQm94IExp
bmVCb3hCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVD
b250ZW50KQogICAgIGF1dG8gbGluZUxvZ2ljYWxXaWR0aCA9IGxpbmVDb250ZW50LmxpbmVMb2dp
Y2FsV2lkdGg7CiAgICAgYXV0byBjb250ZW50TG9naWNhbFdpZHRoID0gbGluZUNvbnRlbnQuY29u
dGVudExvZ2ljYWxXaWR0aDsKICAgICBhdXRvIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQgPSBM
YXlvdXQ6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocnVucywgcm9vdEJveCgpLnN0eWxlKCku
dGV4dEFsaWduKCksIGxpbmVMb2dpY2FsV2lkdGgsIGNvbnRlbnRMb2dpY2FsV2lkdGgsIGxpbmVD
b250ZW50LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCk7Ci0gICAgYXV0byBsaW5lQm94ID0g
TGluZUJveCB7IHJvb3RCb3goKSwgbGluZUNvbnRlbnQubG9naWNhbFRvcExlZnQsIGxpbmVMb2dp
Y2FsV2lkdGgsIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQudmFsdWVPcihJbmxpbmVMYXlvdXRV
bml0IHsgfSksIGNvbnRlbnRMb2dpY2FsV2lkdGgsIGxpbmVDb250ZW50Lm5vblNwYW5uaW5nSW5s
aW5lTGV2ZWxCb3hDb3VudCB9OworICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyByb290Qm94
KCksIGxpbmVDb250ZW50LmxvZ2ljYWxUb3BMZWZ0LCBsaW5lTG9naWNhbFdpZHRoLCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0LnZhbHVlX29yKElubGluZUxheW91dFVuaXQgeyB9KSwgY29udGVu
dExvZ2ljYWxXaWR0aCwgbGluZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50
IH07CiAgICAgY29uc3RydWN0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIHJ1bnMp
OwogICAgIHJldHVybiBsaW5lQm94OwogfQpAQCAtMjg1LDkgKzI4NSw5IEBAIHZvaWQgTGluZUJv
eEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5l
Qm94LCBjb25zdCBMCiAgICAgICAgICAgICBhdXRvJiBpbmxpbmVCb3hHZW9tZXRyeSA9IGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICAgICAgICAgIC8v
IEV2ZW4gbmVnYXRpdmUgaG9yaXpvbnRhbCBtYXJnaW4gbWFrZXMgdGhlIGxpbmUgImNvbnRlbnRm
dWwiLgogICAgICAgICAgICAgaWYgKHJ1bi5pc0lubGluZUJveFN0YXJ0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGlubGluZUJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgfHwgaW5saW5lQm94
R2VvbWV0cnkuYm9yZGVyTGVmdCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCku
dmFsdWVPcigwX2x1KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94R2VvbWV0cnku
bWFyZ2luU3RhcnQoKSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgfHwgaW5saW5l
Qm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZV9vcigwX2x1KTsKICAgICAgICAgICAgIGlm
IChydW4uaXNJbmxpbmVCb3hFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5lQm94
R2VvbWV0cnkubWFyZ2luRW5kKCkgfHwgaW5saW5lQm94R2VvbWV0cnkuYm9yZGVyUmlnaHQoKSB8
fCBpbmxpbmVCb3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDBfbHUpOworICAgICAg
ICAgICAgICAgIHJldHVybiBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5FbmQoKSB8fCBpbmxpbmVC
b3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpIHx8IGlubGluZUJveEdlb21ldHJ5LnBhZGRpbmdSaWdo
dCgpLnZhbHVlX29yKDBfbHUpOwogICAgICAgICAgICAgaWYgKHJ1bi5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMTMsMTAgKzMxMywxMCBAQCB2b2lkIExpbmVCb3hCdWls
ZGVyOjpjb25zdHJ1Y3RBbmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwg
Y29uc3QgTAogICAgICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBsYXlv
dXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRh
aW5lckJveD4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5l
ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVzKCkubGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBh
dXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBsYXN0TGluZS5saW5lQm94TG9naWNhbFJlY3QoKS50
b3AoKSArIGxhc3RMaW5lLmJhc2VsaW5lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzY2VudCA9
IGlubGluZUxldmVsQm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZlbEJveEdl
b21ldHJ5LmJvcmRlclRvcCgpICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCku
dmFsdWVPcigwKSArIGlubGluZUJsb2NrQmFzZWxpbmU7CisgICAgICAgICAgICAgICAgICAgIGFz
Y2VudCA9IGlubGluZUxldmVsQm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBpbmxpbmVMZXZl
bEJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5wYWRkaW5n
VG9wKCkudmFsdWVfb3IoMCkgKyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzUmVwbGFjZWRCb3goKSkKLSAg
ICAgICAgICAgICAgICBhc2NlbnQgPSBkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KS5i
YXNlbGluZSgpLnZhbHVlT3IobWFyZ2luQm94SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBhc2Nl
bnQgPSBkb3duY2FzdDxSZXBsYWNlZEJveD4obGF5b3V0Qm94KS5iYXNlbGluZSgpLnZhbHVlX29y
KG1hcmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYXNj
ZW50ID0gbWFyZ2luQm94SGVpZ2h0OwogICAgICAgICAgICAgbG9naWNhbExlZnQgKz0gc3RkOjpt
YXgoMF9sdSwgaW5saW5lTGV2ZWxCb3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpKTsKQEAgLTQ1Miw3
ICs0NTIsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFs
aWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAgICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7CiAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRl
eHQtYm90dG9tIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRv
bSAoZGVzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCiAgICAgICAgICAg
ICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gu
bGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dp
Y2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50
SW5saW5lQm94TGF5b3V0Qm91bmRzLmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgp
LnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVp
Z2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGlu
ZUJveC5kZXNjZW50KCkudmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgICAg
ICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGlubGluZUxl
dmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNDY2LDE0ICs0NjYsMTQgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6
Y29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRBbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExp
bmUKICAgICAgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRk
KCZpbmxpbmVMZXZlbEJveCwgQWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxU
b3AsIGFic29sdXRlTG9naWNhbEJvdHRvbSB9KTsKICAgICAgICAgICAgIC8vIFN0cmV0Y2ggdGhl
IG1pbi9tYXggYWJzb2x1dGUgdmFsdWVzIGlmIGFwcGxpY2FibGUuCiAgICAgICAgICAgICBpZiAo
Zm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2
ZWxCb3gsIGxpbmVCb3gpKSB7Ci0gICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBz
dGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKGFic29sdXRlTG9naWNhbFRvcCksIGFi
c29sdXRlTG9naWNhbFRvcCk7Ci0gICAgICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20g
PSBzdGQ6Om1heChtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKGFic29sdXRlTG9naWNhbEJv
dHRvbSksIGFic29sdXRlTG9naWNhbEJvdHRvbSk7CisgICAgICAgICAgICAgICAgbWluaW11bUxv
Z2ljYWxUb3AgPSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZV9vcihhYnNvbHV0ZUxv
Z2ljYWxUb3ApLCBhYnNvbHV0ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIG1heGltdW1M
b2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVfb3IoYWJz
b2x1dGVMb2dpY2FsQm90dG9tKSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAvLyBUaGUgbGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9u
IGlzIGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEuIFN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGgg
dGhlIG5vbi1saW5lLWJveCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3ggYWJzb2x1dGUgdG9w
IGFuZCBib3R0b20gdmFsdWVzLgogICAgICAgICAvLyAyLiBDaGVjayBpZiB0aGUgbGluZSBib3gg
cmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUgYm94ZXMgKHRvcCwgYm90dG9tIGV0YykgaGF2ZSBlbm91
Z2ggcm9vbSBhbmQgc3RyZXRjaCB0aGUgbGluZSBib3ggZnVydGhlciBpZiBuZWVkZWQuCi0gICAg
ICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1
ZU9yKElubGluZUxheW91dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKElubGlu
ZUxheW91dFVuaXQoKSk7CisgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhp
bXVtTG9naWNhbEJvdHRvbS52YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gbWluaW11bUxv
Z2ljYWxUb3AudmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgZm9yIChhdXRv
KiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94ZXMpIHsKICAgICAgICAgICAgIGlmICghZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxl
dmVsQm94QWZmZWN0c0xpbmVCb3goKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94LCBsaW5l
Qm94KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lk
IExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxC
b3hlc1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRv
cE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUudmFsdWVPcigwLmYpIC0gcm9vdElubGlu
ZUJveC5iYXNlbGluZSgpOworICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0g
bWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUudmFsdWVfb3IoMC5mKSAt
IHJvb3RJbmxpbmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgcm9vdElubGluZUJveC5zZXRMb2dp
Y2FsVG9wKHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wKTsKICAgICB9OwogICAgIGNvbXB1dGVSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOwpAQCAtNzExLDcgKzcxMSw3IEBAIENvbnRlbnRX
aWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUJsb2NrQ29udGVu
dFdpZHRoQW5kTWFyZ2luCiAgICAgLy8gIzIKICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1h
cmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGZvcm1h
dHRpbmdDb250ZXh0Um9vdCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKIAotICAgIHJldHVybiBD
b250ZW50V2lkdGhBbmRNYXJnaW4geyAqd2lkdGgsIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0LnZhbHVlT3IoMF9sdSksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVP
cigwX2x1KSB9IH07CisgICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwg
eyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSksIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMF9sdSkgfSB9OwogfQogCiBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cywgY29uc3QgT3ZlcnJpZGRlblZlcnRpY2Fs
VmFsdWVzJiBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDBlOGFjZjZiNDc4NjgwM2Y1
ODYwNWRkMDExZGRiNDYzYTljMThiYzIuLmYzMDBiMjdiZDhiNDVkODUyMDAxZTIxYmVlNDM3NWRl
ZGZkYTMxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWly
a3MuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5s
aW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMCiAgICAgICAg
IH0KICAgICAgICAgLy8gTm9uLXJvb3QgaW5saW5lIGJveGVzIChlLmcuIDxzcGFuPikuCiAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJv
eChpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKSk7Ci0gICAgICAgIGlmIChib3hHZW9tZXRyeS5o
b3Jpem9udGFsQm9yZGVyKCkgfHwgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1
ZU9yKDBfbHUpKSB7CisgICAgICAgIGlmIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkg
fHwgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkgewogICAg
ICAgICAgICAgLy8gSG9yaXpvbnRhbCBib3JkZXIgYW5kIHBhZGRpbmcgbWFrZSB0aGUgaW5saW5l
IGJveCBzdHJldGNoIHRoZSBsaW5lIChlLmcuIDxzcGFuIHN0eWxlPSJwYWRkaW5nOiAxMHB4OyI+
PC9zcGFuPikuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmNwcAppbmRleCA1YjMzNWJjNDBlZWZjOWMyODMzZDRkMTM3YjRhNTg0Nzg3
MDc1MmZjLi40YTFkMjhlNGIzYWVhZjdlMjRmNTI3NzNkYmU2NTJmNDVkOWViNmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgTGluZTo6YXBw
ZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBJbmxp
bmVMYXlvdXRVCiAgICAgbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVzZXQoKTsKICAgICBp
ZiAoIWZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5zaG91bGRJZ25vcmVUcmFpbGlu
Z0xldHRlclNwYWNpbmcoKSAmJiAhaW5saW5lVGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgc3R5
bGUubGV0dGVyU3BhY2luZygpID4gMCkKICAgICAgICAgbV90cmltbWFibGVUcmFpbGluZ0NvbnRl
bnQuYWRkUGFydGlhbGx5VHJpbW1hYmxlQ29udGVudChtX3J1bnMuc2l6ZSgpIC0gMSwgc3R5bGUu
bGV0dGVyU3BhY2luZygpKTsKLSAgICBtX3RyYWlsaW5nU29mdEh5cGhlbldpZHRoID0gaW5saW5l
VGV4dEl0ZW0uaGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCkgPyBtYWtlT3B0aW9uYWwoc3R5bGUuZm9u
dENhc2NhZGUoKS53aWR0aChUZXh0UnVuIHsgU3RyaW5nVmlldyB7IHN0eWxlLmh5cGhlblN0cmlu
ZygpIH0gfSkpIDogV1RGOjpudWxsb3B0OworICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGgg
PSBpbmxpbmVUZXh0SXRlbS5oYXNUcmFpbGluZ1NvZnRIeXBoZW4oKSA/IHN0ZDo6bWFrZV9vcHRp
b25hbChzdHlsZS5mb250Q2FzY2FkZSgpLndpZHRoKFRleHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5
bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTGluZTo6
YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKQEAgLTM1OSw3ICsz
NTksNyBAQCB2b2lkIExpbmU6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6YWRkRnVsbHlUcmlt
bWFibGVDb250ZW50KHNpemVfdCBydW5JbmRleCwgSQogICAgIG1fZnVsbHlUcmltbWFibGVXaWR0
aCA9IHRyaW1tYWJsZVdpZHRoOwogICAgIC8vIE5vdGUgdGhhdCBqdXN0IGJlY2F1c2UgdGhlIHRy
aW1tYWJsZSB3aWR0aCBpcyAwIChmb250LXNpemU6IDBweCksIGl0IGRvZXMgbm90IG1lYW4gd2Ug
ZG9uJ3QgaGF2ZSBhIHRyaW1tYWJsZSB0cmFpbGluZyBjb250ZW50LgogICAgIG1faGFzRnVsbHlU
cmltbWFibGVDb250ZW50ID0gdHJ1ZTsKLSAgICBtX2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXggPSBt
X2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXgudmFsdWVPcihydW5JbmRleCk7CisgICAgbV9maXJzdFRy
aW1tYWJsZVJ1bkluZGV4ID0gbV9maXJzdFRyaW1tYWJsZVJ1bkluZGV4LnZhbHVlX29yKHJ1bklu
ZGV4KTsKIH0KIAogdm9pZCBMaW5lOjpUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ6OmFkZFBhcnRp
YWxseVRyaW1tYWJsZUNvbnRlbnQoc2l6ZV90IHJ1bkluZGV4LCBJbmxpbmVMYXlvdXRVbml0IHRy
aW1tYWJsZVdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBlZDIx
M2FlMDFjYWEzOTVhNzk4NDIxMThiOTk5NzIzMWU4ZDIwZTI5Li5kN2FhNzI4NDIwYWMzZTRkNWVk
NjA3NGRhMjk2MzdmMTNmMjg1OWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNw
cApAQCAtMTYyLDkgKzE2Miw5IEBAIElubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJv
eEZvcklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94CiB7CiAgICAgYXV0
byBsb2dpY2FsUmVjdCA9IGxvZ2ljYWxSZWN0Rm9ySW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94KTsK
ICAgICAvLyBUaGlzIGxvZ2ljYWwgcmVjdCBpcyBhcyB0YWxsIGFzIHRoZSAidGV4dCIgY29udGVu
dCBpcy4gTGV0J3MgYWRqdXN0IHdpdGggdmVydGljYWwgYm9yZGVyIGFuZCBwYWRkaW5nLgotICAg
IGF1dG8gdmVydGljYWxCb3JkZXJBbmRQYWRkaW5nID0gYm94R2VvbWV0cnkudmVydGljYWxCb3Jk
ZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMF9sdSk7CisgICAg
YXV0byB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcgPSBib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRl
cigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSk7CiAgICAg
bG9naWNhbFJlY3QuZXhwYW5kVmVydGljYWxseSh2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmcpOwot
ICAgIGxvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkg
KyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwX2x1KSkpOworICAgIGxvZ2ljYWxS
ZWN0Lm1vdmVWZXJ0aWNhbGx5KC0oYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRy
eS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMF9sdSkpKTsKICAgICByZXR1cm4gbG9naWNhbFJlY3Q7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBjMzNm
NjQ4M2JhYTJmZjM5MTgyNGMxZmQ2NmMzYTgxOWYzOGNkNGEzLi5hMzU5OTNkM2Y1ZjRhZTA0NTE5
OWE4ZTQ4ZDNhZTg5MWYxNDcwYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1
aWxkZXIuY3BwCkBAIC0yMzEsMTAgKzIzMSwxMCBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWls
ZGVyOjppbmxpbmVJdGVtV2lkdGgoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saQog
ICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2luQm94V2lkdGgoKTsKIAogICAgIGlmIChp
bmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSkKLSAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5
Lm1hcmdpblN0YXJ0KCkgKyBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCkgKyBib3hHZW9tZXRyeS5w
YWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJn
aW5TdGFydCgpICsgYm94R2VvbWV0cnkuYm9yZGVyTGVmdCgpICsgYm94R2VvbWV0cnkucGFkZGlu
Z0xlZnQoKS52YWx1ZV9vcigwKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5k
KCkpCi0gICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5
LmJvcmRlclJpZ2h0KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOwor
ICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2luRW5kKCkgKyBib3hHZW9tZXRyeS5ib3Jk
ZXJSaWdodCgpICsgYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CiAKICAg
ICAvLyBOb24tcmVwbGFjZWQgaW5saW5lIGJveCAoZS5nLiBpbmxpbmUtYmxvY2spCiAgICAgcmV0
dXJuIGJveEdlb21ldHJ5Lm1hcmdpbkJveFdpZHRoKCk7CkBAIC0zMDUsNyArMzA1LDcgQEAgTGlu
ZUJ1aWxkZXI6OkNvbW1pdHRlZENvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQ29udGVu
dChjb25zdCBJbmxpbmVJdGVtUmEKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRzIGFuZCBzaHJp
bmsgdGhlIGF2YWlsYWJsZSBob3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50cnVfPGRpdiBz
dHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAgICAgICAvLyAz
LiBDaGVjayBpZiB0aGUgY29udGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQgdGhlIGNvbnRl
bnQgYWNjb3JkaW5nbHkgKGZ1bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBhbGwpLgogICAg
ICAgICAvLyA0LiBSZXR1cm4gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgZWl0aGVy
IGJ5IG5vdCBiZWluZyBhYmxlIHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVzZSBvZiBhbiBl
eHBsaWNpdCBsaW5lIGJyZWFrLgotICAgICAgICBjYW5kaWRhdGVDb250ZW50Rm9yTGluZShsaW5l
Q2FuZGlkYXRlLCBjdXJyZW50SXRlbUluZGV4LCBuZWVkc0xheW91dFJhbmdlLCBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGgsIHN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgV1RG
OjpudWxsb3B0KSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsUmlnaHQoKSk7CisgICAgICAgIGNhbmRp
ZGF0ZUNvbnRlbnRGb3JMaW5lKGxpbmVDYW5kaWRhdGUsIGN1cnJlbnRJdGVtSW5kZXgsIG5lZWRz
TGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgc3RkOjpleGNoYW5nZShs
ZWFkaW5nTG9naWNhbFdpZHRoLCBzdGQ6Om51bGxvcHQpLCBtX2xpbmUuY29udGVudExvZ2ljYWxS
aWdodCgpKTsKICAgICAgICAgLy8gTm93IGNoZWNrIGlmIHdlIGNhbiBwdXQgdGhpcyBjb250ZW50
IG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gUmVzdWx0IHsgfTsK
ICAgICAgICAgaWYgKGxpbmVDYW5kaWRhdGUuZmxvYXRJdGVtKSB7CkBAIC00NzQsNyArNDc0LDcg
QEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGluZUNhbmRpZGF0
ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICAgICAgLy8gSGFuZGxlIGxlYWRpbmcgcGFy
dGlhbCBjb250ZW50IGZpcnN0IChvdmVyZmxvd2luZyB0ZXh0IGZyb20gdGhlIHByZXZpb3VzIGxp
bmUpLgogICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwYXJ0aWFsIGxlYWRpbmcgaW5saW5lIGl0ZW0u
CiAgICAgICAgIG1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJ
dGVtPihtX2lubGluZUl0ZW1zW2N1cnJlbnRJbmxpbmVJdGVtSW5kZXhdKS5yaWdodChwYXJ0aWFs
TGVhZGluZ0NvbnRlbnRMZW5ndGgpOwotICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdM
b2dpY2FsV2lkdGggPyAqc3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBXVEY6Om51
bGxvcHQpIDogaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJl
bnRMb2dpY2FsUmlnaHQpOworICAgICAgICBhdXRvIGl0ZW1XaWR0aCA9IGxlYWRpbmdMb2dpY2Fs
V2lkdGggPyAqc3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBzdGQ6Om51bGxvcHQp
IDogaW5saW5lSXRlbVdpZHRoKCptX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0sIGN1cnJlbnRMb2dp
Y2FsUmlnaHQpOwogICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5s
aW5lSXRlbSgqbV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtLCBpdGVtV2lkdGgpOwogICAgICAgICBj
dXJyZW50TG9naWNhbFJpZ2h0ICs9IGl0ZW1XaWR0aDsKICAgICAgICAgKytjdXJyZW50SW5saW5l
SXRlbUluZGV4OwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmNhbmRpZGF0
ZUNvbnRlbnRGb3JMaW5lKExpbmVDYW5kaWRhdGUmIGxpbmVDYW5kaWRhdGUsIHNpemVfdCBjCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5p
c0lubGluZUJveFN0YXJ0KCkgfHwgaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpIHx8IGlubGlu
ZUl0ZW0uaXNCb3goKSkgewogICAgICAgICAgICAgQVNTRVJUKCFsZWFkaW5nTG9naWNhbFdpZHRo
IHx8IGlubGluZUl0ZW0uaXNUZXh0KCkpOwotICAgICAgICAgICAgYXV0byBsb2dpY2FsV2lkdGgg
PSBsZWFkaW5nTG9naWNhbFdpZHRoID8gKnN0ZDo6ZXhjaGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0
aCwgV1RGOjpudWxsb3B0KSA6IGlubGluZUl0ZW1XaWR0aChpbmxpbmVJdGVtLCBjdXJyZW50TG9n
aWNhbFJpZ2h0KTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gbGVhZGluZ0xvZ2lj
YWxXaWR0aCA/ICpzdGQ6OmV4Y2hhbmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9w
dCkgOiBpbmxpbmVJdGVtV2lkdGgoaW5saW5lSXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAg
ICAgICAgICAgICBsaW5lQ2FuZGlkYXRlLmlubGluZUNvbnRlbnQuYXBwZW5kSW5saW5lSXRlbShp
bmxpbmVJdGVtLCBsb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgY3VycmVudExvZ2ljYWxSaWdo
dCArPSBsb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVS
dW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVSdW4uaAppbmRleCAwYjBlZTE0ZGVkMGJlMmNjZDUyZDM0MzNiMDg4NDU0NmMxZjBk
MmIyLi5jZTAwNzA5NzBiYWQ4OWNhMzhkMzRhMzFhZDI0MTZhZWJjN2Q2ZGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZVJ1bi5oCkBAIC02MCw3ICs2MCw3IEBAIHN0cnVjdCBMaW5lUnVuIHsK
ICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFuc2lvbjsKLSAgICBMaW5lUnVuKHNpemVfdCBsaW5l
SW5kZXgsIGNvbnN0IEJveCYsIGNvbnN0IElubGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFs
PFRleHQ+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBMaW5lUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNv
bnN0IEJveCYsIGNvbnN0IElubGluZVJlY3QmLCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHQ+ID0g
c3RkOjpudWxsb3B0KTsKIAogICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgKaW5k
ZXggYWNkMDlhYjFlNzEwMWFhNmVjZjQzM2QyNjQwMDRmZmU4ZmI3YThjNC4uMmRmMTQ0NmMwMDE2
MDZmNzA4NTZmZjNhOWQwMjhjZWM4ZDYyMzlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaApA
QCAtMjU0LDcgKzI1NCw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZChPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8SW5saW5lCiB7CiAgICAgQVNTRVJU
KCF3aWR0aCB8fCBtX2hhc1ZhbGlkV2lkdGgpOwogICAgIEFTU0VSVCghaGVpZ2h0IHx8IG1faGFz
VmFsaWRIZWlnaHQpOwotICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0
LnZhbHVlT3IoMCkpOworICAgIG1fcmVjdC5leHBhbmQod2lkdGgudmFsdWVfb3IoMCksIGhlaWdo
dC52YWx1ZV9vcigwKSk7CiB9CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OmV4cGFuZFRvQ29u
dGFpbihjb25zdCBJbmxpbmVSZWN0JiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJ
dGVtLmNwcAppbmRleCA5YzczN2FmMGJkYmE5NWE1ZjQwNWVjYjQ5NDVmY2NkMTljZDhiYzM5Li5m
NWQ2MTBkZTE3NjBkZTBmYWE4MTY2ZTEyOThhNTFjMGNlMzNmYTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lVGV4dEl0ZW0uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxX
aGl0ZXNwYWNlQ29udGVudD4gbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBT
dHJpbmdWCiAgICAgYXV0byBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uID0gc3RhcnRQb3NpdGlv
bjsKICAgICB3aGlsZSAobmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA8IHRleHRDb250ZW50Lmxl
bmd0aCgpICYmIGlzV2hpdGVzcGFjZUNoYXJhY3Rlcih0ZXh0Q29udGVudFtuZXh0Tm9uV2hpdGVT
cGFjZVBvc2l0aW9uXSkpCiAgICAgICAgICsrbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbjsKLSAg
ICByZXR1cm4gbmV4dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA9PSBzdGFydFBvc2l0aW9uID8gV1RG
OjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKFdoaXRlc3BhY2VDb250ZW50IHsgbmV4dE5vbldoaXRl
U3BhY2VQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24sIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIg
fSk7CisgICAgcmV0dXJuIG5leHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPT0gc3RhcnRQb3NpdGlv
biA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChXaGl0ZXNwYWNlQ29udGVudCB7
IG5leHROb25XaGl0ZVNwYWNlUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uLCBoYXNXb3JkU2VwYXJh
dG9yQ2hhcmFjdGVyIH0pOwogfQogCiBzdGF0aWMgdW5zaWduZWQgbW92ZVRvTmV4dEJyZWFrYWJs
ZVBvc2l0aW9uKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIExhenlMaW5lQnJlYWtJdGVyYXRvciYg
bGluZUJyZWFrSXRlcmF0b3IsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIElubGluZVRleHRJdGVtOjpjcmVhdGVBbmRBcHBlbmRUZXh0SXRlbXMoSW5s
aW5lSXRlbXMmIGlubGluZUNvbnRlbnQsIGNvbnN0CiAgICAgICAgICAgICBBU1NFUlQod2hpdGVz
cGFjZUNvbnRlbnQtPmxlbmd0aCk7CiAgICAgICAgICAgICBhdXRvIGFwcGVuZFdoaXRlc3BhY2VJ
dGVtID0gWyZdIChhdXRvIHN0YXJ0UG9zaXRpb24sIGF1dG8gaXRlbUxlbmd0aCkgewogICAgICAg
ICAgICAgICAgIGF1dG8gc2ltcGxlU2luZ2xlV2hpdGVzcGFjZUNvbnRlbnQgPSBpbmxpbmVUZXh0
Qm94LmNhblVzZVNpbXBsaWZpZWRDb250ZW50TWVhc3VyaW5nKCkgJiYgKGl0ZW1MZW5ndGggPT0g
MSB8fCB3aGl0ZXNwYWNlQ29udGVudElzVHJlYXRlZEFzU2luZ2xlU3BhY2UpOwotICAgICAgICAg
ICAgICAgIGF1dG8gd2lkdGggPSBzaW1wbGVTaW5nbGVXaGl0ZXNwYWNlQ29udGVudCA/IG1ha2VP
cHRpb25hbChJbmxpbmVMYXlvdXRVbml0IHsgZm9udC5zcGFjZVdpZHRoKCkgfSkgOiBpbmxpbmVJ
dGVtV2lkdGgoc3RhcnRQb3NpdGlvbiwgaXRlbUxlbmd0aCk7CisgICAgICAgICAgICAgICAgYXV0
byB3aWR0aCA9IHNpbXBsZVNpbmdsZVdoaXRlc3BhY2VDb250ZW50ID8gc3RkOjptYWtlX29wdGlv
bmFsKElubGluZUxheW91dFVuaXQgeyBmb250LnNwYWNlV2lkdGgoKSB9KSA6IGlubGluZUl0ZW1X
aWR0aChzdGFydFBvc2l0aW9uLCBpdGVtTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBpbmxpbmVD
b250ZW50LmFwcGVuZChJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlV2hpdGVzcGFjZUl0ZW0oaW5saW5l
VGV4dEJveCwgc3RhcnRQb3NpdGlvbiwgaXRlbUxlbmd0aCwgd2hpdGVzcGFjZUNvbnRlbnQtPmlz
V29yZFNlcGFyYXRvciwgd2lkdGgpKTsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBpZiAo
c3R5bGUud2hpdGVTcGFjZSgpID09IFdoaXRlU3BhY2U6OkJyZWFrU3BhY2VzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVUZXh0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lVGV4dEl0ZW0uaAppbmRleCA1MmRjOThkY2YwNmExOWFhMDVmYzRhYTBhYTI0
ZDk4M2E1YjdjZDE1Li4zYzBjZjI2YmI4MDE1ZGNkNTI1YzkxMjgyZDA0ZmNiZDA3YThmNDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVUZXh0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNXaGl0ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SXRlbVR5cGUg
PT0gVGV4dEl0ZW1UeXBlOjpXaGl0ZXNwYWNlOyB9CiAgICAgYm9vbCBpc1dvcmRTZXBhcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX2lzV29yZFNlcGFyYXRvcjsgfQogICAgIGJvb2wgaGFzVHJhaWxp
bmdTb2Z0SHlwaGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFpbGluZ1NvZnRIeXBoZW47IH0K
LSAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzV2lkdGggPyBtYWtlT3B0aW9uYWwobV93aWR0aCkgOiBPcHRpb25hbDxJbmxpbmVMYXlvdXRV
bml0PiB7IH07IH0KKyAgICBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzV2lkdGggPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV93aWR0aCkgOiBPcHRp
b25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07IH0KICAgICBib29sIGlzRW1wdHlDb250ZW50KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KCkpOyB9CkBAIC05MSw3
ICs5MSw3IEBAIGlubGluZSBJbmxpbmVUZXh0SXRlbTo6SW5saW5lVGV4dEl0ZW0oY29uc3QgSW5s
aW5lVGV4dEJveCYgaW5saW5lVGV4dEJveCwgdW5zaWduCiAgICAgbV9oYXNXaWR0aCA9ICEhd2lk
dGg7CiAgICAgbV9oYXNUcmFpbGluZ1NvZnRIeXBoZW4gPSBoYXNUcmFpbGluZ1NvZnRIeXBoZW47
CiAgICAgbV9pc1dvcmRTZXBhcmF0b3IgPSBpc1dvcmRTZXBhcmF0b3I7Ci0gICAgbV93aWR0aCA9
IHdpZHRoLnZhbHVlT3IoMCk7CisgICAgbV93aWR0aCA9IHdpZHRoLnZhbHVlX29yKDApOwogICAg
IG1fdGV4dEl0ZW1UeXBlID0gdGV4dEl0ZW1UeXBlOwogfQogCkBAIC0xMDUsNyArMTA1LDcgQEAg
aW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpsZWZ0KHVuc2lnbmVkIGxlbmd0
aCkgY29uc3QKICAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwog
ICAgIEFTU0VSVChtX3RleHRJdGVtVHlwZSAhPSBUZXh0SXRlbVR5cGU6OlVuZGVmaW5lZCk7CiAg
ICAgQVNTRVJUKGxlbmd0aCk7Ci0gICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBzdGFydCgp
LCBsZW5ndGgsIGZhbHNlLCBpc1dvcmRTZXBhcmF0b3IoKSwgV1RGOjpudWxsb3B0LCBtX3RleHRJ
dGVtVHlwZSB9OworICAgIHJldHVybiB7IGlubGluZVRleHRCb3goKSwgc3RhcnQoKSwgbGVuZ3Ro
LCBmYWxzZSwgaXNXb3JkU2VwYXJhdG9yKCksIHN0ZDo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUg
fTsKIH0KIAogaW5saW5lIElubGluZVRleHRJdGVtIElubGluZVRleHRJdGVtOjpyaWdodCh1bnNp
Z25lZCBsZW5ndGgpIGNvbnN0CkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIElubGluZVRleHRJ
dGVtIElubGluZVRleHRJdGVtOjpyaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgUkVM
RUFTRV9BU1NFUlQobGVuZ3RoIDw9IHRoaXMtPmxlbmd0aCgpKTsKICAgICBBU1NFUlQobV90ZXh0
SXRlbVR5cGUgIT0gVGV4dEl0ZW1UeXBlOjpVbmRlZmluZWQpOwogICAgIEFTU0VSVChsZW5ndGgp
OwotICAgIHJldHVybiB7IGlubGluZVRleHRCb3goKSwgZW5kKCkgLSBsZW5ndGgsIGxlbmd0aCwg
aGFzVHJhaWxpbmdTb2Z0SHlwaGVuKCksIGlzV29yZFNlcGFyYXRvcigpLCBXVEY6Om51bGxvcHQs
IG1fdGV4dEl0ZW1UeXBlIH07CisgICAgcmV0dXJuIHsgaW5saW5lVGV4dEJveCgpLCBlbmQoKSAt
IGxlbmd0aCwgbGVuZ3RoLCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4oKSwgaXNXb3JkU2VwYXJhdG9y
KCksIHN0ZDo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYmQ2MDJkYzZiODVlMWM0
YWNkYzc2N2IyNzcwNjY1MTcwMDQyN2FhMi4uNWJiMzNlOWY4NWRjNTFhNmE2NzU2NWVjZmE4NjBi
MWU0ODU1YWE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xMDksOCArMTA5LDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpz
ZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KIAogICAg
ICAgICAgICAgLy8gRklYTUU6IEZpbmQgb3V0IGlmIGl0IGlzIG9rIHRvIHVzZSB0aGUgcmVndWxh
ciBwYWRkaW5nIGhlcmUgdG8gYWxpZ24gdGhlIGNvbnRlbnQgYm94IGluc2lkZSBhIHRhbGwgY2Vs
bCBvciB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAvLyB1c2Ugc29tZSBraW5kIG9mIGludHJpbnNp
YyBwYWRkaW5nIHNpbWlsYXIgdG8gUmVuZGVyVGFibGVDZWxsLgotICAgICAgICAgICAgYXV0byBw
YWRkaW5nVG9wID0gY2VsbEJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKExheW91dFVu
aXQgeyB9KTsKLSAgICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRy
eS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcihMYXlvdXRVbml0IHsgfSk7CisgICAgICAgICAgICBh
dXRvIHBhZGRpbmdUb3AgPSBjZWxsQm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlX29yKExh
eW91dFVuaXQgeyB9KTsKKyAgICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hH
ZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IH0pOwogICAgICAg
ICAgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nVG9wID0gTGF5b3V0VW5pdCB7IH07CiAgICAgICAg
ICAgICBhdXRvIGludHJpbnNpY1BhZGRpbmdCb3R0b20gPSBMYXlvdXRVbml0IHsgfTsKIApAQCAt
MjU1LDggKzI1NSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21l
dHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsCiAgICAgICAgIC8vIFNlY3Rp
b24gYm9yZGVycyBhcmUgZWl0aGVyIGNvbGxhcHNlZCBvciBpZ25vcmVkLgogICAgICAgICBzZWN0
aW9uQm94R2VvbWV0cnkuc2V0Qm9yZGVyKHsgfSk7CiAgICAgICAgIC8vIFVzZSBmYWtlIHZlcnRp
Y2FsIHBhZGRpbmcgdG8gc3BhY2Ugb3V0IHRoZSBzZWN0aW9ucy4KLSAgICAgICAgc2VjdGlvbkJv
eEdlb21ldHJ5LnNldFBhZGRpbmcoRWRnZXMgeyB7IH0sIHsgcGFkZGluZ0JlZm9yZS52YWx1ZU9y
KDBfbHUpLCBwYWRkaW5nQWZ0ZXIgfSB9KTsKLSAgICAgICAgcGFkZGluZ0JlZm9yZSA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldFBhZGRpbmcoRWRnZXMgeyB7
IH0sIHsgcGFkZGluZ0JlZm9yZS52YWx1ZV9vcigwX2x1KSwgcGFkZGluZ0FmdGVyIH0gfSk7Cisg
ICAgICAgIHBhZGRpbmdCZWZvcmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIC8vIEludGVybmFs
IHRhYmxlIGVsZW1lbnRzIGRvIG5vdCBoYXZlIG1hcmdpbnMuCiAgICAgICAgIHNlY3Rpb25Cb3hH
ZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgfSk7CiAgICAgICAgIHNlY3Rpb25Cb3hHZW9t
ZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCA3MjlhYzI4MDM2MWZlNTQ4MDdiMzdkNTM2NjczZTNkODIx
ODZmZTYwLi5iYjI0MTFkNDFkZjFhZjdlNjc0N2JmNWQ3N2VkNDQ0MzM5YmIyZDhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogICAgIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0IHRhYmxl
TGF5b3V0KCkgY29uc3QgeyByZXR1cm4gVGFibGVMYXlvdXQoKnRoaXMsIGZvcm1hdHRpbmdTdGF0
ZSgpLnRhYmxlR3JpZCgpKTsgfQogCiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21w
dXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGxheW91
dENlbGwoY29uc3QgVGFibGVHcmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9u
dGFsU3BhY2UsIE9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JD
b250ZW50ID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxheW91dENlbGwoY29uc3QgVGFibGVH
cmlkOjpDZWxsJiwgTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVZlcnRpY2FsU3BhY2VGb3JDb250ZW50ID0gc3RkOjpudWxs
b3B0KTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxh
YmxlSG9yaXpvbnRhbFNwYWNlKTsKICAgICB2b2lkIHNldFVzZWRHZW9tZXRyeUZvclJvd3MoTGF5
b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UpOwogICAgIHZvaWQgc2V0VXNlZEdlb21l
dHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGM2ODQz
YzgzNGQ5YzllM2ExOWNkYjg3ZDBiOTViZDg2YjBhNTk2YmQuLjNlM2I2Zjc2YTBmNGU4ZWVkZjgx
NTRkOTU2OWJlMzczZjYxNDMxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0xNDAsOSArMTQwLDkgQEAgSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cyBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50
c0ZvckMKICAgICAvLyBFeHBhbmQgd2l0aCBib3JkZXIKICAgICBpbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzLmV4cGFuZChjb21wdXRlZENlbGxCb3JkZXIoY2VsbCkud2lkdGgoKSk7CiAgICAgLy8g
cGFkZGluZwotICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUo
c3R5bGUucGFkZGluZ0xlZnQoKSkudmFsdWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGlu
Z1JpZ2h0KCkpLnZhbHVlT3IoMCkpOworICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhw
YW5kKGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ0xlZnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZh
bHVlKHN0eWxlLnBhZGRpbmdSaWdodCgpKS52YWx1ZV9vcigwKSk7CiAgICAgLy8gYW5kIG1hcmdp
bgotICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVkVmFsdWUoc3R5bGUu
bWFyZ2luU3RhcnQoKSkudmFsdWVPcigwKSArIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkp
LnZhbHVlT3IoMCkpOworICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGZpeGVk
VmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVfb3IoMCkgKyBmaXhlZFZhbHVlKHN0eWxl
Lm1hcmdpbkVuZCgpKS52YWx1ZV9vcigwKSk7CiAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRoQ29u
c3RyYWludHM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtz
LmNwcAppbmRleCA1NmIyNzJiMmRiMDAzNWE1Y2ZiZDdmNjUwNjY2M2ZhYTAwM2FiZmUzLi5lNWNl
NjVhYjU0MjE3YTA1Yzk5YzkzZjE5NDI5ZTVkOWQ4NjM5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1
aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC02Myw3ICs2Myw3IEBAIExheW91dFVu
aXQgVGFibGVGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdC
bG9ja1dpdGhGaXhlZEhlCiAgICAgLy8gZS5nIDxkaXYgc3R5bGU9ImhlaWdodDogMTAwcHgiPjx0
YWJsZT48dHI+PHRkIHN0eWxlPSJoZWlnaHQ6IDEwMCUiPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2
PiBpcyByZXNvbHZlZCB0byAwcHguCiAgICAgYXV0byBmaXhlZExvZ2ljYWxIZWlnaHQgPSBbJl0o
Y29uc3QgYXV0byYgYW5jZXN0b3JCb3gpIHsKICAgICAgICAgYXV0byBoZWlnaHQgPSBhbmNlc3Rv
ckJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuIGhlaWdodC5pc0Zp
eGVkKCkgPyBtYWtlT3B0aW9uYWwoTGF5b3V0VW5pdCB7IGhlaWdodC52YWx1ZSgpIH0pIDogV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gaGVpZ2h0LmlzRml4ZWQoKSA/IHN0ZDo6bWFrZV9v
cHRpb25hbChMYXlvdXRVbml0IHsgaGVpZ2h0LnZhbHVlKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfTsKIAogICAgIGF1dG8mIHRhYmxlQm94ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCmluZGV4IGQ4NTY3NjUzMjNkY2NlZDQyYmNiMzBl
NzQ0MTY2MDM2ZjhiOWZjMjQuLjI0NTE5N2RkOWIyZTQzMjI5Yjg1N2Y1OTA3NTU1OGU5YmFmYjZl
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6OlQKICAgICBhdXRvIGNvbHVtbldpZHRoQmFsYW5jaW5nQmFzZSA9
IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSA+PSBtX2dyaWQud2lkdGhDb25zdHJhaW50cygpLT5t
YXhpbXVtID8gQ29sdW1uV2lkdGhCYWxhbmNpbmdCYXNlOjpNYXhpbXVtV2lkdGggOiBDb2x1bW5X
aWR0aEJhbGFuY2luZ0Jhc2U6Ok1pbmltdW1XaWR0aDsKICAgICByZXR1cm4gZGlzdHJpYnV0ZUF2
YWlsYWJsZVNwYWNlPENvbHVtblNwYW4+KG1fZ3JpZCwgYXZhaWxhYmxlSG9yaXpvbnRhbFNwYWNl
LCBbJl0gKGNvbnN0IFRhYmxlR3JpZDo6U2xvdCYgc2xvdCwgc2l6ZV90IGNvbHVtbkluZGV4KSB7
CiAgICAgICAgIGF1dG8mIGNvbHVtbiA9IG1fZ3JpZC5jb2x1bW5zKCkubGlzdCgpW2NvbHVtbklu
ZGV4XTsKLSAgICAgICAgYXV0byBjb2x1bW5Cb3hGaXhlZFdpZHRoID0gY29sdW1uLmJveCgpID8g
Y29sdW1uLmJveCgpLT5jb2x1bW5XaWR0aCgpLnZhbHVlT3IoMF9sdSkgOiAwX2x1OworICAgICAg
ICBhdXRvIGNvbHVtbkJveEZpeGVkV2lkdGggPSBjb2x1bW4uYm94KCkgPyBjb2x1bW4uYm94KCkt
PmNvbHVtbldpZHRoKCkudmFsdWVfb3IoMF9sdSkgOiAwX2x1OwogICAgICAgICBhdXRvIG1pbmlt
dW1XaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PihzbG90LndpZHRoQ29uc3RyYWludHMoKS5taW5pbXVt
LCBjb2x1bW5Cb3hGaXhlZFdpZHRoKTsKICAgICAgICAgYXV0byBtYXhpbXVtV2lkdGggPSBzdGQ6
Om1heDxmbG9hdD4oc2xvdC53aWR0aENvbnN0cmFpbnRzKCkubWF4aW11bSwgY29sdW1uQm94Rml4
ZWRXaWR0aCk7CiAKQEAgLTI3Miw3ICsyNzIsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpU
YWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VAog
ICAgICAgICBhdXRvIG1heGltdW1Db2x1bW5Bc2NlbnQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsK
ICAgICAgICAgYXV0byBtYXhpbXVtQ29sdW1uRGVzY2VudCA9IElubGluZUxheW91dFVuaXQgeyB9
OwogICAgICAgICAvLyBJbml0aWFsIG1pbmltdW0gaGVpZ2h0IGlzIHRoZSBjb21wdXRlZCBoZWln
aHQgaWYgYXZhaWxhYmxlIDx0ciBzdHlsZT0iaGVpZ2h0OiAxMDBweCI+PHRkPjwvdGQ+PC90cj4K
LSAgICAgICAgcm93SGVpZ2h0W3Jvd0luZGV4XSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZm9ybWF0
dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRIZWlnaHQocm93cy5saXN0KClbcm93SW5kZXhdLmJveCgp
LCBhdmFpbGFibGVWZXJ0aWNhbFNwYWNlKS52YWx1ZU9yKDBfbHUpOworICAgICAgICByb3dIZWln
aHRbcm93SW5kZXhdID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5j
b21wdXRlZEhlaWdodChyb3dzLmxpc3QoKVtyb3dJbmRleF0uYm94KCksIGF2YWlsYWJsZVZlcnRp
Y2FsU3BhY2UpLnZhbHVlX29yKDBfbHUpOwogICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW5JbmRl
eCA9IDA7IGNvbHVtbkluZGV4IDwgY29sdW1ucy5zaXplKCk7ICsrY29sdW1uSW5kZXgpIHsKICAg
ICAgICAgICAgIGF1dG8mIHNsb3QgPSAqbV9ncmlkLnNsb3QoeyBjb2x1bW5JbmRleCwgcm93SW5k
ZXggfSk7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc1Jvd1NwYW5uZWQoKSkKQEAgLTI5NiwxNCAr
Mjk2LDE0IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpEaXN0cmlidXRl
ZFNwYWNlcyBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUCiAgICAgLy8gRklYTUU6IENvbGxlY3Qg
c3Bhbm5pbmcgcm93IG1heGltdW0gaGVpZ2h0cy4KIAogICAgIHRhYmxlVXNlZEhlaWdodCArPSAo
cm93cy5zaXplKCkgKyAxKSAqIG1fZ3JpZC52ZXJ0aWNhbFNwYWNpbmcoKTsKLSAgICBhdXRvIGF2
YWlsYWJsZVNwYWNlID0gc3RkOjptYXgoYXZhaWxhYmxlVmVydGljYWxTcGFjZS52YWx1ZU9yKDBf
bHUpLCB0YWJsZVVzZWRIZWlnaHQpOworICAgIGF1dG8gYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1h
eChhdmFpbGFibGVWZXJ0aWNhbFNwYWNlLnZhbHVlX29yKDBfbHUpLCB0YWJsZVVzZWRIZWlnaHQp
OwogICAgIC8vIERpc3RyaWJ1dGUgZXh0cmEgc3BhY2UgaWYgdGhlIHRhYmxlIGlzIHN1cHBvc2Vk
IHRvIGJlIHRhbGxlciB0aGFuIHRoZSBzdW0gb2YgdGhlIHJvdyBoZWlnaHRzLgogICAgIHJldHVy
biBkaXN0cmlidXRlQXZhaWxhYmxlU3BhY2U8Um93U3Bhbj4obV9ncmlkLCBhdmFpbGFibGVTcGFj
ZSwgWyZdIChjb25zdCBUYWJsZUdyaWQ6OlNsb3QmIHNsb3QsIHNpemVfdCByb3dJbmRleCkgewog
ICAgICAgICBpZiAoc2xvdC5oYXNSb3dTcGFuKCkpCiAgICAgICAgICAgICByZXR1cm4gR3JpZFNw
YWNlIHsgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3go
KSkuYm9yZGVyQm94SGVpZ2h0KCksIGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
c2xvdC5jZWxsKCkuYm94KCkpLmJvcmRlckJveEhlaWdodCgpIH07CiAgICAgICAgIGF1dG8mIHJv
d3MgPSBtX2dyaWQucm93cygpOwogICAgICAgICBhdXRvIGNvbXB1dGVkUm93SGVpZ2h0ID0gZm9y
bWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZEhlaWdodChyb3dz
Lmxpc3QoKVtyb3dJbmRleF0uYm94KCksIHsgfSk7Ci0gICAgICAgIGF1dG8gaGVpZ2h0ID0gc3Rk
OjptYXg8ZmxvYXQ+KHJvd0hlaWdodFtyb3dJbmRleF0sIGNvbXB1dGVkUm93SGVpZ2h0LnZhbHVl
T3IoMF9sdSkpOworICAgICAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWF4PGZsb2F0Pihyb3dIZWln
aHRbcm93SW5kZXhdLCBjb21wdXRlZFJvd0hlaWdodC52YWx1ZV9vcigwX2x1KSk7CiAgICAgICAg
IHJldHVybiBHcmlkU3BhY2UgeyBoZWlnaHQsIGhlaWdodCB9OwogICAgIH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Q292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQ292ZXJhZ2UuY3BwCmluZGV4IDk0ZDk2MzkwMzllYWQzOWJlODA4YWZiMGRmMWM0
ZGM0YTRhZjlkYzcuLmUzMDQ4YjZiNGNkNWI0NzhmNDk5Y2E3YjZkODM5N2QyN2VlN2UyMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMg
T3B0aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBJbmNsdQogICAgIGlmIChzdHlsZS50ZXh0U2VjdXJpdHkoKSAhPSBUZXh0U2Vj
dXJpdHk6Ok5vbmUpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1RleHRTZWN1cml0eSwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIGlmIChzdHls
ZS5oeXBoZW5zKCkgPT0gSHlwaGVuczo6QXV0bykgewotICAgICAgICBhdXRvIHRleHRSZWFzb25z
ID0gY2FuVXNlRm9yVGV4dChzdHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9udENhc2NhZGUo
KSwgV1RGOjpudWxsb3B0LCBmYWxzZSwgaW5jbHVkZVJlYXNvbnMpOworICAgICAgICBhdXRvIHRl
eHRSZWFzb25zID0gY2FuVXNlRm9yVGV4dChzdHlsZS5oeXBoZW5TdHJpbmcoKSwgc3R5bGUuZm9u
dENhc2NhZGUoKSwgc3RkOjpudWxsb3B0LCBmYWxzZSwgaW5jbHVkZVJlYXNvbnMpOwogICAgICAg
ICBpZiAodGV4dFJlYXNvbnMpCiAgICAgICAgICAgICBBRERfUkVBU09OU19BTkRfUkVUVVJOX0lG
X05FRURFRCh0ZXh0UmVhc29ucywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuLmgKaW5kZXggYmY5NWM2NmZlMTcxNTBiMzhkNDA2ODkzNTBmZDIyNzIzMmVlNzY4
OS4uM2RmZWVjYjIxYmNmY2M2NDliY2E3N2MyZTFhYjFmMWMzOWJkNTY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
UnVuLmgKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IFJ1biB7CiAgICAgfTsKIAogICAgIHN0cnVj
dCBFeHBhbnNpb247Ci0gICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uLCBPcHRpb25hbDxUZXh0Q29udGVudD4gPSBXVEY6Om51bGxvcHQpOworICAgIFJ1bihzaXpl
X3QgbGluZUluZGV4LCBjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dENvbnRlbnQ+
ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3hHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnkuaAppbmRleCAwODMwNWIzNDY0OTRlZGU4
OWQxNWE1NjA1YWFjZWYwZjVhNDNkNGEwLi42ZDBmYjgxOGNjZDZmMDExMDUwZDFhMDZiNjE5YjU5
ZTkzMWVkMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3hHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveEdlb21ldHJ5LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IHZlcnRpY2FsUGFkZGluZygpIGNvbnN0OwogICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGhvcml6b250YWxQYWRkaW5nKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRVbml0IGNv
bnRlbnRCb3hUb3AoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9w
KCkudmFsdWVPcigwKTsgfQotICAgIExheW91dFVuaXQgY29udGVudEJveExlZnQoKSBjb25zdCB7
IHJldHVybiBwYWRkaW5nQm94TGVmdCgpICsgcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOyB9Cisg
ICAgTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveFRv
cCgpICsgcGFkZGluZ1RvcCgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50
Qm94TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdCb3hMZWZ0KCkgKyBwYWRkaW5nTGVmdCgp
LnZhbHVlX29yKDApOyB9CiAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94Qm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gY29udGVudEJveFRvcCgpICsgY29udGVudEJveEhlaWdodCgpOyB9CiAgICAgTGF5
b3V0VW5pdCBjb250ZW50Qm94UmlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94TGVmdCgp
ICsgY29udGVudEJveFdpZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQo
KSBjb25zdDsKQEAgLTg4LDE2ICs4OCwxNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBwYWRk
aW5nQm94TGVmdCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKTsgfQogICAgIExheW91dFVu
aXQgcGFkZGluZ0JveEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBh
ZGRpbmdCb3hIZWlnaHQoKTsgfQogICAgIExheW91dFVuaXQgcGFkZGluZ0JveFJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpOyB9Ci0gICAg
TGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ1RvcCgp
LnZhbHVlT3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVP
cigwKTsgfQotICAgIExheW91dFVuaXQgcGFkZGluZ0JveFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
cGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApICsgY29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmln
aHQoKS52YWx1ZU9yKDApOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gcGFkZGluZ1RvcCgpLnZhbHVlX29yKDApICsgY29udGVudEJveEhlaWdodCgp
ICsgcGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5n
Qm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nTGVmdCgpLnZhbHVlX29yKDApICsgY29u
dGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsgfQogCiAgICAgTGF5
b3V0VW5pdCBib3JkZXJCb3hIZWlnaHQoKSBjb25zdCB7IHJldHVybiBib3JkZXJUb3AoKSArIHBh
ZGRpbmdCb3hIZWlnaHQoKSArIHZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoKSArIGJvcmRlckJv
dHRvbSgpOyB9CiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IGJvcmRlckxlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpICsgaG9yaXpvbnRhbFNwYWNlRm9yU2Ny
b2xsYmFyKCkgKyBib3JkZXJSaWdodCgpOyB9CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hIZWln
aHQoKSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveEhlaWdodCgpICsg
bWFyZ2luQWZ0ZXIoKTsgfQogICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7
IHJldHVybiBtYXJnaW5TdGFydCgpICsgYm9yZGVyQm94V2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9
CiAKLSAgICBMYXlvdXRVbml0IHZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0
IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpICsgdmVydGljYWxCb3JkZXIoKSArIHZlcnRpY2FsUGFk
ZGluZygpLnZhbHVlT3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9Ci0gICAgTGF5b3V0VW5pdCBob3Jp
em9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0
KCkgKyBob3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkg
KyBtYXJnaW5FbmQoKTsgfQorICAgIExheW91dFVuaXQgdmVydGljYWxNYXJnaW5Cb3JkZXJBbmRQ
YWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVmb3JlKCkgKyB2ZXJ0aWNhbEJvcmRlcigp
ICsgdmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9CisgICAg
TGF5b3V0VW5pdCBob3Jpem9udGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1hcmdpblN0YXJ0KCkgKyBob3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGlu
ZygpLnZhbHVlX29yKDApICsgbWFyZ2luRW5kKCk7IH0KIAogICAgIExheW91dFVuaXQgdmVydGlj
YWxTcGFjZUZvclNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGljYWxTcGFjZUZvclNj
cm9sbGJhcjsgfQogICAgIExheW91dFVuaXQgaG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXI7IH0KQEAgLTM3Nyw3
ICszNzcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6OnZlcnRp
Y2FsUGFkZGluZygpIGNvbnN0CiAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gdGhpcy0+cGFkZGlu
Z0JvdHRvbSgpOwogICAgIGlmICghcGFkZGluZ1RvcCAmJiAhcGFkZGluZ0JvdHRvbSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gcGFkZGluZ1RvcC52YWx1ZU9yKDApICsgcGFkZGlu
Z0JvdHRvbS52YWx1ZU9yKDApOworICAgIHJldHVybiBwYWRkaW5nVG9wLnZhbHVlX29yKDApICsg
cGFkZGluZ0JvdHRvbS52YWx1ZV9vcigwKTsKIH0KIAogaW5saW5lIE9wdGlvbmFsPExheW91dFVu
aXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZygpIGNvbnN0CkBAIC0zODYsNyArMzg2
LDcgQEAgaW5saW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEJveEdlb21ldHJ5Ojpob3Jpem9udGFs
UGFkZGluZygpIGNvbnN0CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSB0aGlzLT5wYWRkaW5nUmln
aHQoKTsKICAgICBpZiAoIXBhZGRpbmdMZWZ0ICYmICFwYWRkaW5nUmlnaHQpCiAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgcmV0dXJuIHBhZGRpbmdMZWZ0LnZhbHVlT3IoMCkgKyBwYWRkaW5nUmln
aHQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFkZGluZ0xlZnQudmFsdWVfb3IoMCkgKyBwYWRk
aW5nUmlnaHQudmFsdWVfb3IoMCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveEdlb21ldHJ5
Ojpib3JkZXJUb3AoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0R2VvbWV0cnlSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRHZW9tZXRyeVJlY3QuaAppbmRleCAzMjU1ZDkyNDVjZWI2Yzg3OTZjODBh
ODlkYTYwYTRjNzdiYzc0MDQ2Li41MjFmNjEyNzNjNTcxYzNjYzQ5MjFjNjAyZWNjYzc5YTgzYzE4
OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRH
ZW9tZXRyeVJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRHZW9tZXRyeVJlY3QuaApAQCAtMjkwLDcgKzI5MCw3IEBAIGlubGluZSB2b2lkIFJlY3Q6OmV4
cGFuZChPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVp
Z2h0CiB7CiAgICAgQVNTRVJUKCF3aWR0aCB8fCBtX2hhc1ZhbGlkV2lkdGgpOwogICAgIEFTU0VS
VCghaGVpZ2h0IHx8IG1faGFzVmFsaWRIZWlnaHQpOwotICAgIG1fcmVjdC5leHBhbmQod2lkdGgu
dmFsdWVPcigwKSwgaGVpZ2h0LnZhbHVlT3IoMCkpOworICAgIG1fcmVjdC5leHBhbmQod2lkdGgu
dmFsdWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSk7CiB9CiAKIGlubGluZSB2b2lkIFJlY3Q6
OmV4cGFuZFRvQ29udGFpbihjb25zdCBSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJlYzE5
OGMyODNiYzkyMDg0ZTNkMDFiYzg2NDU0ZjE3MTQ1ODcxODIuLjk0NTY0ZDBiZTJkMmY0ZWI5ZWNh
YTJjZTU4ZWQ5ODgxMWYyZTcwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBC
b3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJl
bnRDb250YWluZXIsIGNvbnN0IFJlbgogICAgICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1l
bnRBdHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6SUZyYW1lIH07CiAgICAgICAgICAgICBy
ZXR1cm4gQm94OjpFbGVtZW50QXR0cmlidXRlcyB7IEJveDo6RWxlbWVudFR5cGU6OkdlbmVyaWNF
bGVtZW50IH07CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgQm94KiBjaGlsZExheW91dEJv
eCA9IG51bGxwdHI7CkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBzaG93SW5saW5lVHJlZUFuZFJ1
bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGMK
ICAgICAgICAgICAgICAgICA8PCAiIHNpemUgKCIgPDwgbG9naWNhbFJlY3Qud2lkdGgoKSA8PCAi
eCIgPDwgbG9naWNhbFJlY3QuaGVpZ2h0KCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiBi
YXNlbGluZSAoIiA8PCBsb2dpY2FsUmVjdC50b3AoKSArIGlubGluZUxldmVsQm94LmJhc2VsaW5l
KCkgPDwgIikiCiAgICAgICAgICAgICAgICAgPDwgIiBhc2NlbnQgKCIgPDwgaW5saW5lTGV2ZWxC
b3guYmFzZWxpbmUoKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuYXNj
ZW50IDw8ICIpIgotICAgICAgICAgICAgICAgIDw8ICIgZGVzY2VudCAoIiA8PCBpbmxpbmVMZXZl
bEJveC5kZXNjZW50KCkudmFsdWVPcigwLjBmKSA8PCAiLyIgPDwgaW5saW5lTGV2ZWxCb3gubGF5
b3V0Qm91bmRzKCkuZGVzY2VudCA8PCAiKSI7CisgICAgICAgICAgICAgICAgPDwgIiBkZXNjZW50
ICgiIDw8IGlubGluZUxldmVsQm94LmRlc2NlbnQoKS52YWx1ZV9vcigwLjBmKSA8PCAiLyIgPDwg
aW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCkuZGVzY2VudCA8PCAiKSI7CiAgICAgICAgICAg
ICBzdHJlYW0ubmV4dExpbmUoKTsKICAgICAgICAgfTsKICAgICAgICAgb3V0cHV0SW5saW5lTGV2
ZWxCb3gobGluZUJveC5yb290SW5saW5lQm94KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAppbmRleCBmMWMzMzYxYjJkMzdhODNh
ZTdjM2Y3NmU4MDdiNWIwZWY5ZmJkMDEzLi5lNTgyYTAyM2IxZTMzOTA3OWVhYTc5M2YyYThjYjRm
MDU1MDkwNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5B
Y2Nlc3NDb250cm9sLmNwcApAQCAtMzA4LDE0ICszMDgsMTQgQEAgT3B0aW9uYWw8UmVzb3VyY2VF
cnJvcj4gdmFsaWRhdGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5KGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJgogewogICAgIGlmIChzaG91bGRDcm9zc09yaWdpblJlc291cmNlUG9saWN5Q2FuY2VsTG9h
ZChvcmlnaW4sIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0VVJMLCBtYWtlU3RyaW5nKCJDYW5jZWxs
ZWQgbG9hZCB0byAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSwgIiBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSByZXNvdXJjZSdzIENyb3NzLU9yaWdpbi1S
ZXNvdXJjZS1Qb2xpY3kgcmVzcG9uc2UgaGVhZGVyLiIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpB
Y2Nlc3NDb250cm9sIH07Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJhbmdlUmVx
dWVzdGVkRmxhZyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmIChyZXNwb25zZS5pc1JhbmdlUmVxdWVzdGVk
KCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAyMDYgJiYgcmVzcG9uc2UudHlwZSgp
ID09IFJlc291cmNlUmVzcG9uc2U6OlR5cGU6Ok9wYXF1ZSAmJiAhcmVxdWVzdC5oYXNIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlKSkKICAgICAgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoeyB9LCAwLCByZXNwb25zZS51cmwoKSwgeyB9LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5
OWNhOWM0YTBkOTc2NjEyYTBmOGJkMzNkYTA4NGZhNDQ2ODVlOTliLi45MmU3NjhhYTdkOGU4NDJi
ZmUwYTdmNDcwYmRlNGViMTRlYTc5YjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIHN0YXRpYyBib29sIHBhcnNlQWNjZXNzQ29udHJvbE1heEFnZShjb25zdCBTdHJpbmcm
IHN0cmluZywgU2Vjb25kcyYgZXhwaXJ5RGVsdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IHJlamVjdCBzdHJpbmdzIHRoYXQgaGF2ZSBhIGxlYWRpbmcgIisiLgogICAg
IGF1dG8gcGFyc2VkSW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oc3RyaW5nKTsKLSAg
ICBleHBpcnlEZWx0YSA9IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXJzZWRJbnRlZ2Vy
LnZhbHVlT3IoMCkpKTsKKyAgICBleHBpcnlEZWx0YSA9IFNlY29uZHMoc3RhdGljX2Nhc3Q8ZG91
YmxlPihwYXJzZWRJbnRlZ2VyLnZhbHVlX29yKDApKSk7CiAgICAgcmV0dXJuIHBhcnNlZEludGVn
ZXIuaGFzVmFsdWUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1
c3RvbUhlYWRlckZpZWxkcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1c3RvbUhlYWRlckZp
ZWxkcy5oCmluZGV4IDY2MGZmMGEwMTZiMTk4NjMzYmJmNmRhYzQzOTQ2ZDg0M2EzZGE1NDguLjdm
MTQxY2Y4MTFkMTVhOTc4MThlNjIyYjhlZWMyZWQ1YzFiYzIyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9DdXN0b21IZWFkZXJGaWVsZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmllbGRzLmgKQEAgLTU0LDEyICs1NCwxMiBAQCBPcHRpb25h
bDxDdXN0b21IZWFkZXJGaWVsZHM+IEN1c3RvbUhlYWRlckZpZWxkczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPEhUVFBIZWFkZXJGaWVsZD4+IGZpZWxkczsK
ICAgICBkZWNvZGVyID4+IGZpZWxkczsKICAgICBpZiAoIWZpZWxkcykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdGhpcmRQYXJ0eURvbWFpbnM7CiAgICAgZGVjb2RlciA+
PiB0aGlyZFBhcnR5RG9tYWluczsKICAgICBpZiAoIXRoaXJkUGFydHlEb21haW5zKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpmaWVsZHMpLCBXVEZNb3ZlKCp0aGlyZFBhcnR5RG9t
YWlucykgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA0YzY3YjYzODIzZmY2YTQ5N2E2MTJkNmQ2M2FlNDVhNmQ4ZGIwYTA1Li5lMjU1NTVlZDFiZDRk
ZjQ3YjQxODExMzdlMDQ4M2ZhOGZkMmI5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKQEAgLTEyMyw4ICsxMjMsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBtX2Zy
YW1lLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+ZnJh
bWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRv
VUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgp
KQorI2RlZmluZSBGUkFNRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5mcmFtZUlEKCkudmFsdWVf
b3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAj
ZGVmaW5lIElTX01BSU5fRlJBTUUgKG1fZnJhbWUgPyBtX2ZyYW1lLT5pc01haW5GcmFtZSgpIDog
ZmFsc2UpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbcGFnZUlE
PSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudExvYWRl
cjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBJU19NQUlOX0ZSQU1FLCAjI19fVkFf
QVJHU19fKQogCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICBmb3Ig
KGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy52
YWx1ZXMoKSkKLSAgICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVz
dChjYWxsYmFja0lkZW50aWZpZXIsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIG5vdGlmeUZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om51
bGxvcHQpOwogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuY2xlYXIoKTsKICNlbmRp
ZgogCkBAIC01NTYsMTMgKzU1NiwxMyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjptYXRjaFJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHVybCwgU1dDbGllbnRDb25uZWN0aW9uOjpSZWdpcwogewogICAg
IGF1dG8gc2hvdWxkVHJ5TG9hZGluZ1Rocm91Z2hTZXJ2aWNlV29ya2VyID0gIWZyYW1lTG9hZGVy
KCktPmlzUmVsb2FkaW5nRnJvbU9yaWdpbigpICYmIG1fZnJhbWUtPnBhZ2UoKSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlcnZpY2VXb3JrZXJFbmFibGVkKCkg
JiYgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKTsKICAgICBpZiAoIXNob3VsZFRyeUxvYWRp
bmdUaHJvdWdoU2VydmljZVdvcmtlcikgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQp
OworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgYXV0byBvcmlnaW4gPSAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbV9mcmFt
ZS0+ZG9jdW1lbnQoKSkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKS5kYXRhKCkg
OiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwodXJsKTsKICAgICBpZiAoIVNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKS5tYXlIYXZl
U2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4ob3JpZ2luKSkgewotICAgICAgICBjYWxs
YmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTgzLDcgKzIxODMsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKIAogICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbGlu
a0ljb25zLmZpbmRNYXRjaGluZyhbXShhdXRvJiBpY29uKSB7IHJldHVybiBpY29uLnR5cGUgPT0g
TGlua0ljb25UeXBlOjpGYXZpY29uOyB9KTsKICAgICBpZiAoZmluZFJlc3VsdCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgbV9saW5rSWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNvbXBsZXRlVVJMKCIv
ZmF2aWNvbi5pY28iX3MpLCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmluZygpLCBXVEY6Om51
bGxvcHQsIHsgfSB9KTsKKyAgICAgICAgbV9saW5rSWNvbnMuYXBwZW5kKHsgZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKCIvZmF2aWNvbi5pY28iX3MpLCBMaW5rSWNvblR5cGU6OkZhdmljb24sIFN0cmlu
ZygpLCBzdGQ6Om51bGxvcHQsIHsgfSB9KTsKIAogICAgIGlmICghbV9saW5rSWNvbnMuc2l6ZSgp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDliNjNlNDY4ODAxYTBkZmJlODVkMDA5MGQ2ZDk1
YjcyMDM1NDEwZTEuLmI5Mzk2NWRjMTBhN2IxNGE3MzQwNjZmYjk1MmU4ZWFhNzM0ODZmNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNs
ZWFyUmVzb3VyY2UoKQogICAgICAgICByZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAg
ICB9CiAgICAgaWYgKG1fcHJlZmxpZ2h0Q2hlY2tlcikKLSAgICAgICAgbV9wcmVmbGlnaHRDaGVj
a2VyID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01MDYs
NyArNTA2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwodW5zaWdu
ZWQgbG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IKICAgICAgICAgbV9vcHRpb25zLnNl
cnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZTsKICAgICAgICAgbWFr
ZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoV1RGTW92ZShtX2J5cGFzc2lu
Z1ByZWZsaWdodEZvclNlcnZpY2VXb3JrZXJSZXF1ZXN0LnZhbHVlKCkpKTsKICAgICAgICAgQVNT
RVJUKG1fYnlwYXNzaW5nUHJlZmxpZ2h0Rm9yU2VydmljZVdvcmtlclJlcXVlc3QtPmlzTnVsbCgp
KTsKLSAgICAgICAgbV9ieXBhc3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdCA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ieXBhc3NpbmdQcmVmbGlnaHRGb3JTZXJ2aWNlV29y
a2VyUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVm
bGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IGFjdHVhbFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgdXBkYXRlUmVxdWVzdEZv
ckFjY2Vzc0NvbnRyb2woYWN0dWFsUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25z
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAotICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBJdCBzaG91bGQgYmUgb2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2luY2Ugd2Ug
YWxyZWFkeSBhc2tlZCBhYm91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCiAgICAgbG9hZFJlcXVl
c3QoV1RGTW92ZShhY3R1YWxSZXF1ZXN0KSwgU2VjdXJpdHlDaGVja1BvbGljeTo6U2tpcFNlY3Vy
aXR5Q2hlY2spOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV9wcmVmbGln
aHRDaGVja2VyID0gV1RGOjpudWxsb3B0OworICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmco
bV9kb2N1bWVudC5mcmFtZSgpLCBtX2RvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCksIGlkZW50aWZpZXIsIGVycm9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCA3YjkwMjgxY2E3NjI3N2IzN2Y0Zjk2ZmVlNGVjMTUzOTIyZWM0YjUy
Li5lZmQ5M2VhZTRmMTdkZDM2ZjczNzExNDdlZDBmMWM5NTJmNWVhNzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAg
ICBFbXB0eUVkaXRvckNsaWVudCgpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSAgICBib29sIHNo
b3VsZERlbGV0ZVJhbmdlKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICBib29sIGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTI0OCwxMSArMjQ4LDExIEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHNob3VsZEJlZ2luRWRpdGluZyhjb25zdCBTaW1wbGVSYW5nZSYpIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdl
JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydE5vZGUoTm9k
ZSYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5n
ZShjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mLCBBZmZpbml0eSwgYm9vbCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZEluc2VydE5vZGUoTm9kZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jiwg
RWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hv
dWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIEVkaXRvckluc2VydEFjdGlvbikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBib29s
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNv
bnN0IFN0eWxlUHJvcGVydGllcyYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKGNvbnN0IFN0eWxl
UHJvcGVydGllcyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRpZEFwcGx5U3R5bGUoKSBmaW5hbCB7IH0KICAgICBi
b29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC0yNjUsOSArMjY1LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFVwZGF0ZUNvbXBvc2l0aW9uKCkgZmluYWwgeyB9CiAg
ICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJp
Z2dlcmVkU2VsZWN0aW9uQ2hhbmdlcygpIGZpbmFsIHsgfQotICAgIHZvaWQgd2lsbFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpIGZpbmFsIHsg
fQorICAgIHZvaWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGEoY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CisgICAgdm9pZCBnZXRDbGllbnRQYXN0
ZWJvYXJkRGF0YShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIFZlY3RvcjxTdHJp
bmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIGZpbmFsIHsgfQogICAgIHZvaWQg
cmVxdWVzdENhbmRpZGF0ZXNGb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpIGZp
bmFsIHsgfQogICAgIHZvaWQgaGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhU
ZXh0Q2hlY2tpbmdSZXN1bHQpIGZpbmFsIHsgfQogCkBAIC00MDIsMTkgKzQwMiwxOSBAQCBjbGFz
cyBFbXB0eUluc3BlY3RvckNsaWVudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgewog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKIGNsYXNzIEVtcHR5UGF5bWVudENvb3JkaW5hdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNsaWVudCB7Ci0gICAgT3B0aW9u
YWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKSBmaW5hbCB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdmFsaWRh
dGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgYm9vbCBjYW5NYWtlUGF5bWVudHMoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwgeyBjYWxsT25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeyBjb21wbGV0aW9uSGFuZGxlcihm
YWxzZSk7IH0pOyB9CiAgICAgdm9pZCBvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsIHsgY2FsbE9uTWFpblRocmVhZChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOyB9KTsgfQogICAgIGJvb2wgc2hvd1BheW1lbnRVSShjb25zdCBVUkwmLCBjb25zdCBWZWN0
b3I8VVJMPiYsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JikgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0
IFBheW1lbnRNZXJjaGFudFNlc3Npb24mKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0
ZT4mJikgZmluYWwgeyB9Ci0gICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9Ci0g
ICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8QXBwbGVQYXlQ
YXltZW50TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBk
YXRlPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHN0ZDo6b3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiYpIGZpbmFs
IHsgfQorICAgIHZvaWQgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKHN0ZDo6b3B0aW9u
YWw8QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KICNpZiBFTkFCTEUo
QVBQTEVfUEFZX1BBWU1FTlRfTUVUSE9EX01PREUpCi0gICAgdm9pZCBjb21wbGV0ZVBheW1lbnRN
ZXRob2RNb2RlQ2hhbmdlKE9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGU+
JiYpIGZpbmFsIHsgfQotI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9NRVRIT0Rf
TU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oT3B0aW9uYWw8UGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQ+JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVQYXltZW50
TWV0aG9kTW9kZUNoYW5nZShzdGQ6Om9wdGlvbmFsPEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVV
cGRhdGU+JiYpIGZpbmFsIHsgfQorI2VuZGlmCisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRTZXNz
aW9uKHN0ZDo6b3B0aW9uYWw8UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiYpIGZpbmFsIHsg
fQogICAgIHZvaWQgY2FuY2VsUGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGFi
b3J0UGF5bWVudFNlc3Npb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIHBheW1lbnRDb29yZGluYXRv
ckRlc3Ryb3llZCgpIGZpbmFsIHsgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGNsYXNzIEVtcHR5UGF5
bWVudENvb3JkaW5hdG9yQ2xpZW50IGZpbmFsIDogcHVibGljIFBheW1lbnRDb29yZGluYXRvckNs
aWVudCB7CiAKIGNsYXNzIEVtcHR5UGx1Z2luSW5mb1Byb3ZpZGVyIGZpbmFsIDogcHVibGljIFBs
dWdpbkluZm9Qcm92aWRlciB7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpIGZpbmFsIHsgfTsK
LSAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luSW5mbyhQYWdlJiwgT3B0aW9uYWw8VmVjdG9y
PFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXI+PiYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAg
IFZlY3RvcjxQbHVnaW5JbmZvPiBwbHVnaW5JbmZvKFBhZ2UmLCBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjxTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyPj4mKSBmaW5hbCB7IHJldHVybiB7IH07IH0KICAg
ICBWZWN0b3I8UGx1Z2luSW5mbz4gd2ViVmlzaWJsZVBsdWdpbkluZm8oUGFnZSYsIGNvbnN0IFVS
TCYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogfTsKIApAQCAtNTUwLDkgKzU1MCwxMSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGF0ZVRpbWVDaG9vc2VyPiBFbXB0eUNocm9tZUNsaWVudDo6Y3JlYXRlRGF0
ZVRpbWVDaG9vc2VyKERhdGVUaQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CisKIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnN0b3JlQXBwSGlnaGxpZ2h0KEFwcEhpZ2hsaWdo
dCYmKSBjb25zdAogewogfQorCiAjZW5kaWYKIAogdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6c2V0
VGV4dEluZGljYXRvcihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYpIGNvbnN0CkBAIC02MDQsNiAr
NjA2LDQ5MSBAQCBSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbAogICAgIHJldHVybiBudWxscHRyOwog
fQogCitzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZnJhbWVJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlE
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitib29sIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6Omhhc1dlYlZpZXcoKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOyAv
LyBtYWlubHkgZm9yIGFzc2VydGlvbnMKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKQoreworfQorCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91
dE9uUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0Rm9y
Tm9uSFRNTCgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0Q29waWVz
T25TY3JvbGwoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFjaGVk
RnJvbVBhcmVudDIoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRldGFj
aGVkRnJvbVBhcmVudDMoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworfQorCit2b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKK3sK
K30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCit7Cit9
CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorCitib29sIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKQor
eworICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorCitSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
Ojpjb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nKQoreworfQorCisjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQorCit2b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0Fy
cmF5ICopCit7Cit9CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25z
dCBSZXNvdXJjZUVycm9yJikKK3sKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQpCit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENh
bmNlbENsaWVudFJlZGlyZWN0KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBX
YWxsVGltZSwgTG9ja0JhY2tGb3J3YXJkTGlzdCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCit7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5Q
YWdlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
cGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkKK3sKK30KKwordm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCit7Cit9
CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1cmVD
b250ZW50Piwgc3RkOjpvcHRpb25hbDxVc2VkTGVnYWN5VExTPikKK3sKK30KKwordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYsIFdpbGxDb250aW51ZUxvYWRpbmcpCit7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlz
aERvY3VtZW50TG9hZCgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxMYXlvdXRNaWxlc3Rv
bmU+KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVh
Y2hWaXN1YWxseU5vbkVtcHR5U3RhdGUoKQoreworfQorCitGcmFtZSogRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdG
cmFtZU9wZW5lclBvbGljeSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3coKQoreworfQorCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBvbGljeUNoZWNrSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQoreworfQorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKK3sKK30KKwordm9p
ZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5
KGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3Zv
aWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCit7Cit9CisKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c3RhcnREb3dubG9hZChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OndpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQoreworfQorCit2
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgp
Cit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KQoreworfQorCit2b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopCit7
Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1cm4geyBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworI2VuZGlmCisKK1Jlc291cmNlRXJyb3Ig
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VF
cnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVzb3Vy
Y2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdAoreworICAgIHJldHVybiB7IH07Cit9CisK
K2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlw
ZUFzSFRNTChjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNj
aGVtZShjb25zdCBTdHJpbmcmKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3Ry
aW5nIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1l
KGNvbnN0IFN0cmluZyYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKK3sKK30K
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZXN0b3JlVmlld1N0YXRlKCkKK3sKK30K
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkK
K3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkKCkKK3sK
K30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVD
YWNoZWREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpCit7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFVSTCYpCit7Cit9CisKK1N0cmluZyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgVVJMJikgY29uc3QKK3sKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwor
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFt
ZShDYWNoZWRGcmFtZSopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sKK30KKwor
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUmVzdG9yZUZyYW1lSGllcmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKQoreworfQorCisjZW5kaWYK
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCkKK3sKK30KKworCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlc3Rv
cmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpCit7Cit9CisKKwordm9pZCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5KCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCit7Cit9CisKK2Jv
b2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtJikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6c2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSYpCit7Cit9CisKK2Jv
b2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgVVJMJikKK3sKK30K
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwg
Ym9vbCkKK3sKK30KKworT2JqZWN0Q29udGVudFR5cGUgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1
cm4gT2JqZWN0Q29udGVudFR5cGU6Ok5vbmU7Cit9CisKK1N0cmluZyBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30K
Kwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRn
ZXQmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpCit7Cit9CisKKyNpZiBQTEFU
Rk9STShDT0NPQSkKKworUmVtb3RlQVhPYmplY3RSZWYgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChOU0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSBjb25zdAoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsKK30KKwor
I2VuZGlmCisKKyNpZiBVU0UoQ0ZVUkxDT05ORUNUSU9OKQorCitib29sIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2ln
bmVkIGxvbmcgbG9uZykKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKK2Jvb2wg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6aXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKQoreworfQorCisjaWYgVVNFKFFVSUNLX0xPT0spCisK
K1JlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpoYXNG
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisj
ZW5kaWYKKwogaW5saW5lIEVtcHR5RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6RW1wdHlGcmFtZU5l
dHdvcmtpbmdDb250ZXh0KCkKICAgICA6IEZyYW1lTmV0d29ya2luZ0NvbnRleHQgeyBudWxscHRy
IH0KIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBhNzFkYzg1NGVmNTBj
MzU5MmEwNGY1Mjc5YjVkNTE0OTk4NTE0ODU5Li4zMTYwNWU2ODJkYjRkY2Q2MTZmMWI4ZjA1Y2Vl
NmNkNzRkYjkwZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0xMDQs
NyArMTA0LDcgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQ2xpZW50
IHsKIAogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeVByaW1hcnlQb2ludGluZ0RldmljZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIGJvb2wgaG92ZXJTdXBwb3J0ZWRCeUFu
eUF2YWlsYWJsZVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBPcHRpb25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0
aWNzT2ZQcmltYXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXVEY6Om51
bGxvcHQ7IH07CisgICAgT3B0aW9uYWw8UG9pbnRlckNoYXJhY3RlcmlzdGljcz4gcG9pbnRlckNo
YXJhY3RlcmlzdGljc09mUHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9OwogICAgIE9wdGlvblNldDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNz
PiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZBbGxBdmFpbGFibGVQb2ludGluZ0RldmljZXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZVJvb3RWaWV3
KGNvbnN0IEludFJlY3QmKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg5NTJmMGY5ODYzMGZhOTg3YjExMGU5ZjA4NTkx
YTY5OTIxNzE1ZWYuLmZlYTAzODI2OTYzNjA1YzM4M2Y2YmEyMzEzZThlNDU3NzdjZTExNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MjYsMTg3ICsyNiwxODIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCi0KLSNpZiBVU0UoUVVJQ0tfTE9P
SykKLSNpbmNsdWRlICJMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgiCi0jZW5kaWYKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50IDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKK3ByaXZhdGU6CiAgICAgUmVmPERv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOwogCi0gICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0
OyB9Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhc1dlYlZpZXco
KSBjb25zdCBmaW5hbDsKIAotICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCisgICAgdm9pZCBtYWtlUmVwcmVz
ZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgZmluYWwgeyB9CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBib29sIGZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9t
QmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsOwogI2VuZGlmCi0gICAgdm9pZCBmb3JjZUxheW91dEZv
ck5vbkhUTUwoKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgc2V0Q29waWVzT25TY3JvbGwoKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIGZpbmFsOwogCi0gICAgdm9p
ZCBkZXRhY2hlZEZyb21QYXJlbnQyKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkZXRhY2hlZEZyb21Q
YXJlbnQzKCkgZmluYWwgeyB9CisgICAgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIGZpbmFsOwog
Ci0gICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmlu
YWwgeyB9CisgICAgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQyKCkgZmluYWw7CisgICAgdm9pZCBk
ZXRhY2hlZEZyb21QYXJlbnQzKCkgZmluYWw7CiAKLSAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJU
b0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgZmluYWwgeyB9Ci0gICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3Rv
cmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKworICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBmaW5hbDsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwg
dW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBmaW5hbDsKICNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIGJvb2wgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
Ym9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZywgY29uc3QgUHJvdGVjdGlvblNwYWNlJikgZmluYWw7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJl
Zj4gY29ubmVjdGlvblByb3BlcnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
Y29ubmVjdGlvblByb3BlcnRpZXMoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5h
bDsKICNlbmRpZgogCi0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7
IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRG
aW5pc2hMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWw7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9O
KQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikgZmlu
YWwgeyB9CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAq
KSBmaW5hbDsKICNlbmRpZgotICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0K
LSAgICBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IGludCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNw
YXRjaE9ubG9hZEV2ZW50cygpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIFdhbGxUaW1l
LCBMb2NrQmFja0ZvcndhcmRMaXN0KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFB1
c2hTdGF0ZVdpdGhpblBhZ2UoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFj
ZVN0YXRlV2l0aGluUGFnZSgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0
ZVdpdGhpblBhZ2UoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiwgT3B0aW9uYWw8VXNlZExlZ2FjeVRMUz4pIGZpbmFsIHsg
fQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImLCBXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91
dE1pbGVzdG9uZShPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPikgZmluYWwgeyB9Ci0gICAgdm9p
ZCBkaXNwYXRjaERpZFJlYWNoVmlzdWFsbHlOb25FbXB0eVN0YXRlKCkgZmluYWwgeyB9Ci0KLSAg
ICBGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdG
cmFtZU9wZW5lclBvbGljeSkgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQgZGlz
cGF0Y2hTaG93KCkgZmluYWwgeyB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFBvbGljeUNoZWNrSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5jdGlv
biYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAg
Ym9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBpbnQp
IGZpbmFsOworCisgICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgZmlu
YWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVj
dCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFVSTCYsIGRvdWJsZSwgV2FsbFRpbWUsIExvY2tCYWNrRm9yd2FyZExpc3QpIGZpbmFsOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBmaW5hbDsKKyAg
ICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hXaWxs
Q2xvc2UoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChzdGQ6
Om9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4sIHN0ZDo6b3B0aW9uYWw8VXNlZExlZ2FjeVRM
Uz4pIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImLCBXaWxsQ29udGludWVMb2FkaW5nKSBmaW5hbDsKKyAgICB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNo
RGlkRmluaXNoTG9hZCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1p
bGVzdG9uZShPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPikgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlYWNoVmlzdWFsbHlOb25FbXB0eVN0YXRlKCkgZmluYWw7CisKKyAgICBGcmFtZSog
ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBOZXdGcmFtZU9wZW5l
clBvbGljeSkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbDsKKworICAgIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNo
ZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKICAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSwgRm9ybVN0YXRlKiwgUG9saWN5RGVjaXNpb25Nb2RlLCBQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVuY3Rpb24mJikgZmluYWw7Ci0gICAgdm9pZCBjYW5j
ZWxQb2xpY3lDaGVjaygpIGZpbmFsIHsgfQorICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBm
aW5hbDsKIAotICAgIHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWwgeyB9CisgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzcGF0
Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFJlZjxGb3JtU3RhdGU+JiYpIGZpbmFsOwogICAgIHZvaWQg
ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGb3JtU3RhdGUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpIGZpbmFsOwogCi0gICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmV2
ZXJ0VG9Qcm92aXNpb25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikgZmluYWw7CisgICAgdm9pZCBz
ZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIAotICAgIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgZmluYWw7CiAK
LSAgICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJikgZmluYWwgeyB9CisgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKikgZmluYWwgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikg
ZmluYWw7CiAKLSAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsg
fQotICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVw
bGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChE
b2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIGZpbmFsIHsgfQotICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWwgeyB9CisgICAgdm9pZCBjb21taXR0
ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgZmluYWw7CisgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIFJlc291cmNl
RXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwg
eyByZXR1cm4geyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfTsgfQotICAgIFJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7
IH07IH0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNvdXJjZUVycm9y
IGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
Y29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVy
cm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAg
ICBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VF
cnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICBSZXNv
dXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCi0gICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9Ci0gICAg
UmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNlRXJyb3IgcGx1Z2lu
V2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWwg
eyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VFcnJv
ciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0IGZp
bmFsOworICAgIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWw7CiAKLSAgICBib29sIHNob3VsZEZhbGxCYWNr
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0IGZpbmFsOwog
Ci0gICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29sIGNhblNob3dN
SU1FVHlwZUFzSFRNTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBTdHJpbmcgZ2VuZXJhdGVkTUlN
RVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWwgeyByZXR1cm4gZW1w
dHlTdHJpbmcoKTsgfQorICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBT
dHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJM
U2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyBnZW5lcmF0ZWRN
SU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgZnJhbWVMb2FkQ29tcGxldGVkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCByZXN0b3JlVmlld1N0
YXRlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgZmluYWwgeyB9CisgICAgdm9pZCBmcmFtZUxvYWRD
b21wbGV0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSBmaW5hbDsKKyAg
ICB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlz
aExvYWQoKSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQo
KSBmaW5hbDsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRM
b2FkZXImKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBVUkwmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3Vt
ZW50TG9hZGVyKERvY3VtZW50TG9hZGVyJikgZmluYWw7CisgICAgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgZmluYWw7CiAKLSAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7IH0KKyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIGZp
bmFsIHsgfQotICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENh
Y2hlZEZyYW1lKikgZmluYWwgeyB9CisgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShDYWNoZWRGcmFtZSopIGZpbmFsOworICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmluYWw7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICB2b2lkIGRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkg
ZmluYWwgeyB9CisgICAgdm9pZCBkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFt
ZSgpIGZpbmFsOwogI2VuZGlmCi0gICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQ
YWdlKCkgZmluYWwgeyB9Ci0KLSAgICB2b2lkIGRpZFJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNo
ZSgpIGZpbmFsIHsgfQotCi0gICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWwgeyB9
Ci0gICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIGZpbmFsIHsgfQot
ICAgIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0
ZW0mKSBmaW5hbCB7IH0KLSAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWwg
eyB9Ci0gICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBVUkwmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29s
KSBmaW5hbCB7IH0KKyAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBm
aW5hbDsKKworICAgIHZvaWQgZGlkUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkgZmluYWw7
CisKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CisgICAgYm9vbCBzaG91bGRHb1Rv
SGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNhdmVWaWV3
U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0mKSBmaW5hbDsKKyAgICBib29sIGNhbkNhY2hlUGFnZSgp
IGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIGZpbmFs
OworICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
VVJMJikgZmluYWw7CisgICAgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgZmlu
YWw7CiAgICAgUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBTdHJpbmcmLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQmKSBmaW5hbDsKICAgICBSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
IGZpbmFsOwogCi0gICAgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGU6Ok5v
bmU7IH0KLSAgICBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB7IH07IH0KKyAgICBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUo
KSBjb25zdCBmaW5hbDsKIAotICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0Jikg
ZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJikgZmluYWw7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotICAgIHZvaWQgd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICpyZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChOU0NhY2hlZFVSTFJlc3BvbnNlICopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBjb25zdCBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKHJlc3BvbnNlKTsgfQorICAgIFJl
bW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbDsKKyAgICB2
b2lkIHdpbGxDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgTlND
YWNoZWRVUkxSZXNwb25zZSAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKik+JiYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKICNpZiBVU0UoQ0ZVUkxDT05ORUNU
SU9OKQotICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwg
dW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcp
IGZpbmFsOwogI2VuZGlmCiAKICAgICBSZWY8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRl
TmV0d29ya2luZ0NvbnRleHQoKSBmaW5hbDsKIAotICAgIGJvb2wgaXNFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgcHJlZmV0Y2hE
TlMoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgYm9vbCBpc0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsK
IAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50PiBjcmVhdGVQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBSZWZQdHI8TGVnYWN5UHJldmlld0xv
YWRlckNsaWVudD4gY3JlYXRlUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
KCkgZmluYWw7CiAjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KQot
ICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCYg
ZnJhbWVMb2FkZXJDbGllbnQpIHsgcmV0dXJuIGZyYW1lTG9hZGVyQ2xpZW50LmlzRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCgpOyB9Ci1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IDRmOTIzOTAwOGY5
MGI1YjU4ODBmMWIyZDc1ZjJmNTFmZDY2OTlmNjEuLjI0ZTgyNWIzYmU2NGJjYWY1MWY1ZGI0MDZj
MmQ4MzQ2Njc0MDA2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJl
Y3RvcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GVFBEaXJlY3RvcnlQ
YXJzZXIuY3BwCkBAIC0xMTgyLDcgKzExODIsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBM
aW5lKGNvbnN0IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExpc3RSZXN1bHQmIHJlcwog
ICAgICAgICB7CiAgICAgICAgICAgLyogRmlyc3QgdHJ5IHRvIHVzZSByZXN1bHQuZmVfc2l6ZSB0
byBmaW5kICIgLT4gIiBzZXF1ZW5jZS4KICAgICAgICAgICAgICBUaGlzIGNhbiBnaXZlIHByb3Bl
ciByZXN1bHQgZm9yIGNhc2VzIGxpa2UgImFhYSAtPiBiYmIgLT4gY2NjIi4gKi8KLSAgICAgICAg
ICAgIGF1dG8gZmlsZVNpemUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNp
Z25lZD4ocmVzdWx0LmZpbGVTaXplKS52YWx1ZU9yKDApOworICAgICAgICAgICAgYXV0byBmaWxl
U2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQu
ZmlsZVNpemUpLnZhbHVlX29yKDApOwogCiAgICAgICAgICAgaWYgKHJlc3VsdC5maWxlbmFtZUxl
bmd0aCA+IChmaWxlU2l6ZSArIDQpICYmCiAgICAgICAgICAgICAgIHN0cm5jbXAocmVzdWx0LmZp
bGVuYW1lICsgcmVzdWx0LmZpbGVuYW1lTGVuZ3RoIC0gZmlsZVNpemUgLSA0LCAiIC0+ICIsIDQp
ID09IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggN2JhYTA4OTE2NzNh
M2FjZTAwMzc3MzE2ZjU0NWI3M2Y5N2U3MTI5Mi4uZTM1Y2E4M2E1MDQ1Y2Y2MTBjOTNiMzc4NWNk
MzRhYjAyZTIyZjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtMjUz
LDEyICsyNTMsMTIgQEAgaW5saW5lIE9wdGlvbmFsPEZldGNoT3B0aW9ucz4gRmV0Y2hPcHRpb25z
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsK
ICAgICBpZiAoIWRlY29kZVBlcnNpc3RlbnQoZGVjb2Rlciwgb3B0aW9ucykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxPcHRpb25hbDxEb2N1bWVudElkZW50aWZpZXI+PiBjbGllbnRJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gY2xpZW50SWRlbnRpZmllcjsKICAgICBpZiAoIWNsaWVudElkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgb3B0aW9ucy5jbGllbnRJZGVudGlmaWVyID0gV1RGTW92ZShjbGllbnRJZGVu
dGlmaWVyLnZhbHVlKCkpOwogCiAgICAgcmV0dXJuIG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCBlOTM3Y2ZlOTE3NjY2MmVkZGNmYzM4ZjJhMWMwNjZlMDg4
Yzk1NGUxLi40NjQyNzhmYjUwMWE5NjYwZDcxMTcwZWMwM2M2YTBjMmVlOTMzY2RiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE1MCw4ICsxNTAsOCBAQAogI2luY2x1
ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9J
RCAoKHBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCi0jZGVm
aW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpKS50b1VJ
bnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEICgocGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZp
ZXIoKSkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllcigpKSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVMT0FERVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhp
cywgUEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1Nf
XykKICNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIs
IG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykKIApAQCAtNDI3LDcgKzQyNyw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHBhc3NlZFRhcmdldCwgRXZlCiAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVG
cm9tQ29tbW9uVk0oKTsKICAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gZnJhbWUgJiYg
ZnJhbWUtPmlzTWFpbkZyYW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlVua25vd247CiAKLSAgICBOZXdGcmFtZU9wZW5lclBvbGljeSBuZXdG
cmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZU9yKHJlZmVycmVyUG9saWN5ID09
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHBy
ZXNzIDogTmV3RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKKyAgICBOZXdGcmFtZU9wZW5lclBv
bGljeSBuZXdGcmFtZU9wZW5lclBvbGljeSA9IG9wZW5lclBvbGljeS52YWx1ZV9vcihyZWZlcnJl
clBvbGljeSA9PSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlciA/IE5ld0ZyYW1lT3BlbmVyUG9s
aWN5OjpTdXBwcmVzcyA6IE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpBbGxvdyk7CiAgICAgRnJhbWVM
b2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBpbml0
aWF0ZWRCeU1haW5GcmFtZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHN5c3RlbVByZXZpZXdJbmZvKTsK
ICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldE5ld0ZyYW1lT3BlbmVyUG9saWN5KG5ld0ZyYW1lT3Bl
bmVyUG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFJlZmVycmVyUG9saWN5KHJlZmVy
cmVyUG9saWN5KTsKQEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZl
ZEZpcnN0RGF0YSgpCiB7CiAgICAgYXV0byBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFt
ZSk7CiAgICAgCi0gICAgZGlzcGF0Y2hEaWRDb21taXRMb2FkKFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KTsKKyAgICBkaXNwYXRjaERpZENvbW1pdExvYWQoc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQpOwogICAgIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsK
ICAgICBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKQEAgLTk3
Miw3ICs5NzIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRgogICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdCB7ICptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgIl9zZWxmIl9zLCBpbml0aWF0ZWRCeU1h
aW5GcmFtZSB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3ko
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNl
dExvY2tCYWNrRm9yd2FyZExpc3QoTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKLSAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVy
ZXIsIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVs
bHB0ciwgeyB9LCBXVEY6Om51bGxvcHQsIFtdIHsgfSk7CisgICAgY2hpbGRGcmFtZS0+bG9hZGVy
KCkubG9hZFVSTChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpLCByZWZlcmVyLCBGcmFtZUxvYWRU
eXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QsIG51bGxwdHIsIHsgfSwgc3Rk
OjpudWxsb3B0LCBbXSB7IH0pOwogfQogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCkBAIC0yMzI5LDcgKzIzMjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENh
Y2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgQVNTRVJUKHZpZXcpOwogICAgIHZpZXct
PnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAotICAgIE9wdGlvbmFsPEludFJlY3Q+IHBy
ZXZpb3VzVmlld0ZyYW1lUmVjdCA9IG1fZnJhbWUudmlldygpID8gIG1fZnJhbWUudmlldygpLT5m
cmFtZVJlY3QoKSA6IE9wdGlvbmFsPEludFJlY3Q+KFdURjo6bnVsbG9wdCk7CisgICAgT3B0aW9u
YWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9m
cmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDogT3B0aW9uYWw8SW50UmVjdD4oc3RkOjpudWxsb3B0
KTsKICAgICBtX2ZyYW1lLnNldFZpZXcodmlldyk7CiAKICAgICAvLyBVc2UgdGhlIHByZXZpb3Vz
IFNjcm9sbFZpZXcncyBmcmFtZSByZWN0LgpAQCAtNDA0OSw4ICs0MDQ5LDggQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y29tcGxldGVQYWdlVHJhbnNpdGlvbklmTmVlZGVkKCkKIAogdm9pZCBGcmFtZUxv
YWRlcjo6Y2xlYXJUZXN0aW5nT3ZlcnJpZGVzKCkKIHsKLSAgICBtX292ZXJyaWRlQ2FjaGVQb2xp
Y3lGb3JUZXN0aW5nID0gV1RGOjpudWxsb3B0OwotICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQ
cmlvcml0eUZvclRlc3RpbmcgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9vdmVycmlkZUNhY2hlUG9s
aWN5Rm9yVGVzdGluZyA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRlUmVzb3VyY2VMb2Fk
UHJpb3JpdHlGb3JUZXN0aW5nID0gc3RkOjpudWxsb3B0OwogICAgIG1faXNTdHJpY3RSYXdSZXNv
dXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZEZvclRlc3RpbmcgPSBmYWxzZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBmMjk3YjUwY2ExZWVlNTBjYzNmMDU2YWJk
NmM2NDhjMDRlMmQ5MzNjLi4yN2QwZDUzOWJjYjEwMWIxNjdlODM3Mjk2NDMzZDViODRjMGQ0N2Jl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwogCiAgICAgLy8gRklYTUU6IFRoZXNl
IGFyZSBhbGwgZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55Lgot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0
JiYsIEV2ZW50KiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgPSBXVEY6Om51bGxvcHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2Fs
bHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBsb2FkVVJMLgorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0JiYsIEV2ZW50KiwgUmVmUHRyPEZvcm1T
dGF0ZT4mJiwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51bGxv
cHQpOyAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFuZCBs
b2FkVVJMLgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkKEZyYW1lTG9hZFJlcXVlc3Qm
Jik7CiAKQEAgLTEzMCw4ICsxMzAsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBs
b25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRl
ck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGFuZ2VMb2NhdGlvbihj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBjb25zdCBSZWZlcnJlclBv
bGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IFdURjo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0sIE9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lk
IGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqID0gbnVsbHB0ciwgT3B0
aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEV2ZW50KiwgY29uc3QgUmVmZXJyZXJQb2xpY3kmLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBPcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gPSBzdGQ6Om51bGxv
cHQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSwgY29u
c3QgU3lzdGVtUHJldmlld0luZm8mID0geyB9LCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihGcmFtZUxv
YWRSZXF1ZXN0JiYsIEV2ZW50KiA9IG51bGxwdHIsIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUmVmPEZvcm1T
dWJtaXNzaW9uPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVsb2FkKE9wdGlvblNl
dDxSZWxvYWRPcHRpb24+ID0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oCmluZGV4IDM1NzE2NzVmMjdkMDE3ZGQ1ZjIxZGJmN2RiMjdmOWQ2MzM4MWE5ZDEuLjli
YzI1MzE0YTkzY2ExMTlkNWFiMGFlMDZiNGQ4NDk2MmMyNzRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApAQCAtMTA0LDExICsxMDQsMTEgQEAgT3B0aW9uYWw8
UG9saWN5Q2hlY2tJZGVudGlmaWVyPiBQb2xpY3lDaGVja0lkZW50aWZpZXI6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gcHJvY2VzcyA9IFByb2Nlc3NJZGVudGlmaWVyOjpk
ZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFwcm9jZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDY0X3QgcG9s
aWN5Q2hlY2s7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb2xpY3lDaGVjaykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gUG9saWN5Q2hlY2tJZGVudGlmaWVyIHsgKnByb2Nlc3MsIHBvbGljeUNoZWNrIH07
CiB9CkBAIC0yMDgsMTcgKzIwOCwxNyBAQCBPcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gU3lz
dGVtUHJldmlld0luZm86OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEVs
ZW1lbnRDb250ZXh0PiBlbGVtZW50OwogICAgIGRlY29kZXIgPj4gZWxlbWVudDsKICAgICBpZiAo
IWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aWV3UmVjdDsKICAgICBk
ZWNvZGVyID4+IHByZXZpZXdSZWN0OwogICAgIGlmICghcHJldmlld1JlY3QpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxib29sPiBpc1ByZXZpZXc7CiAgICAgZGVjb2RlciA+PiBpc1ByZXZpZXc7CiAgICAg
aWYgKCFpc1ByZXZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmVsZW1lbnQpLCBX
VEZNb3ZlKCpwcmV2aWV3UmVjdCksIFdURk1vdmUoKmlzUHJldmlldykgfSB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA2MGE2ZmM0NTEzY2MwZTg3
MzFjNjcyOTkzODBjYTY1NTFiMDNhYzBjLi5iMjMwYmZmNDhmYjU1NGM0ZDI2NjE0N2NhMmVkZTgx
ZDIyYjZlOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZp
ZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcApA
QCAtMjA3LDcgKzIwNyw3IEBAIE9wdGlvbmFsPEhUVFBIZWFkZXJGaWVsZD4gSFRUUEhlYWRlckZp
ZWxkOjpjcmVhdGUoU3RyaW5nJiYgdW5wYXJzZWROYW1lLCBTdHJpbmcmCiAgICAgU3RyaW5nVmll
dyBzdHJpcHBlZE5hbWUgPSBTdHJpbmdWaWV3KHVucGFyc2VkTmFtZSkuc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2UpOwogICAgIFN0
cmluZ1ZpZXcgc3RyaXBwZWRWYWx1ZSA9IFN0cmluZ1ZpZXcodW5wYXJzZWRWYWx1ZSkuc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhSRkM3MjMwOjppc1doaXRlc3BhY2Up
OwogICAgIGlmICghUkZDNzIzMDo6aXNWYWxpZE5hbWUoc3RyaXBwZWROYW1lKSB8fCAhUkZDNzIz
MDo6aXNWYWxpZFZhbHVlKHN0cmlwcGVkVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG5hbWUgPSBz
dHJpcHBlZE5hbWUubGVuZ3RoKCkgPT0gdW5wYXJzZWROYW1lLmxlbmd0aCgpID8gV1RGTW92ZSh1
bnBhcnNlZE5hbWUpIDogc3RyaXBwZWROYW1lLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nIHZhbHVl
ID0gc3RyaXBwZWRWYWx1ZS5sZW5ndGgoKSA9PSB1bnBhcnNlZFZhbHVlLmxlbmd0aCgpID8gV1RG
TW92ZSh1bnBhcnNlZFZhbHVlKSA6IHN0cmlwcGVkVmFsdWUudG9TdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaAppbmRleCA1NDNlOGIzMGZhZGJkODUyOTVjMjBh
YTcyMjY2NzMxNDA0Yzg4ZWZmLi4wZjc2MGZiYzhjMThhZGI0MTdhYzgzZDBlOTkzMDBmYjBkOGE1
Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oCkBAIC02MSwxMiAr
NjEsMTIgQEAgT3B0aW9uYWw8SFRUUEhlYWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNv
ZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB2
YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqbmFtZSksIFdURk1vdmUoKnZhbHVlKSB9fTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9MaW5rSGVhZGVyLmNwcAppbmRleCA3Y2YxYzBmNGVkMTA5MmU1MTE4NDcwNTU4ZDg4
MGRkOGNkMDJkYTdhLi40OGRmZWFjZDk1YWQwOGRmNTgwOGEwMzkwNDZlMTg2YmY0MzllNDI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFkZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGZpbmRV
UkxCb3VuZGFyaWVzKFN0cmluCiB7CiAgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVy
KTsKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZlciwgJzwnKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBza2lwV2hpbGU8
aXNTcGFjZU9yVGFiPihidWZmZXIpOwogCiAgICAgYXV0byB1cmxTdGFydCA9IGJ1ZmZlci5wb3Np
dGlvbigpOwpAQCAtOTMsNyArOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgT3B0aW9uYWw8U3RyaW5nPiBmaW5kVVJMQm91bmRhcmllcyhTdHJpbgogICAgIGF1
dG8gdXJsRW5kID0gYnVmZmVyLnBvc2l0aW9uKCk7CiAgICAgc2tpcFVudGlsKGJ1ZmZlciwgJz4n
KTsKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZlciwgJz4nKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBT
dHJpbmcodXJsU3RhcnQsIHVybEVuZCAtIHVybFN0YXJ0KTsKIH0KQEAgLTE4NSw3ICsxODUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8TGlua0hl
YWRlcjo6TGlua1BhcmFtZXRlck5hbWU+CiAgICAgYm9vbCB2YWxpZFBhcmFtZXRlclZhbHVlRW5k
ID0gYnVmZmVyLmF0RW5kKCkgfHwgaXNQYXJhbWV0ZXJWYWx1ZUVuZCgqYnVmZmVyKTsKICAgICBp
ZiAodmFsaWRQYXJhbWV0ZXJWYWx1ZUVuZCAmJiBpc0V4dGVuc2lvblBhcmFtZXRlcihuYW1lKSkK
ICAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBCZWZvcmU6CkBAIC0yOTksNyArMjk5LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgZmluZE5leHRIZWFkZXIo
U3RyaW5nUGFyc2luZ0J1ZmZlcjwKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExp
bmtIZWFkZXI6OkxpbmtIZWFkZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyKQogewogICAgIGF1dG8gdXJsUmVzdWx0ID0gZmluZFVSTEJvdW5kYXJpZXMoYnVmZmVy
KTsKLSAgICBpZiAodXJsUmVzdWx0ID09IFdURjo6bnVsbG9wdCkgeworICAgIGlmICh1cmxSZXN1
bHQgPT0gc3RkOjpudWxsb3B0KSB7CiAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAg
ICBmaW5kTmV4dEhlYWRlcihidWZmZXIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTGlua0xvYWRlci5jcHAKaW5kZXggNjU3MmM3ZGU2NmIxMjMwOTZkZDQ5MWJlNGE2YmI0MGRj
MjM5NDIyMy4uY2M4OGFlODE4NzgyOWY3MDFhNmNkNjE2MTc5NjhiYzgyYjNhNDRmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIE9wdGlvbmFs
PENhY2hlZFJlc291cmNlOjpUeXBlPiBMaW5rTG9hZGVyOjpyZXNvdXJjZVR5cGVGcm9tQXNBdHRy
aWJ1dGUoY29uc3QgU3RyCiAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6Rm9u
dFJlc291cmNlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhcywgInRy
YWNrIikpCiAgICAgICAgIHJldHVybiBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6VGV4dFRyYWNrUmVz
b3VyY2U7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQ+
IGNyZWF0ZUxpbmtQcmVsb2FkUmVzb3VyY2VDbGllbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBMaW5rTG9hZGVyJiBsb2FkZXIsIERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCA1YjE3N2M3ODExNzBjMzQ3
M2VlZjNhYjQ0MWVlYWRlYmI5OTIzMWEwLi41MTY5NjcxZjU5N2Q0M2Y2ZTQ2NTJhZDNiMzA0ZDU5
MjY5NDNiOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBNaXhlZENvbnRlbnRD
aGVja2VyOjpjaGVja0Zvck1peGVkQ29udGVudEluRnJhbWVUcmVlKGNvbnN0IEZyYW0KICAgICAg
ICAgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAK
aW5kZXggODg2NzdhNzMwNjFjZGMwMGQ5MTBmMTE0MjdmMTA3MTg2ZWQ4MTk4ZC4uYTZiZjZhZmU1
YjVhNzU3Y2E2ODViZWQzZTU2ZWVjM2I5MDk4NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgR2xvYmFsRnJhbWVJZGVudGlmaWVyIGNyZWF0ZUdsb2JhbEZyYW1lSWRlbnRp
Zmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50LmZyYW1l
KCkpCi0gICAgICAgIHJldHVybiB7IGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgp
LnZhbHVlT3IoUGFnZUlkZW50aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCku
ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyIHsgfSkgfTsKKyAgICAgICAgcmV0dXJu
IHsgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50
aWZpZXIgeyB9KSwgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllciB7IH0pIH07CiAgICAgcmV0dXJuIEdsb2JhbEZyYW1lSWRlbnRpZmll
cigpOwogfQogCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YT4ga2V5U3RhdGVEYXRhRm9yRmlyc3RFCiB7CiAg
ICAgaWYgKFVJRXZlbnRXaXRoS2V5U3RhdGUqIHVpRXZlbnQgPSBmaW5kRXZlbnRXaXRoS2V5U3Rh
dGUoZXZlbnQpKQogICAgICAgICByZXR1cm4gTmF2aWdhdGlvbkFjdGlvbjo6VUlFdmVudFdpdGhL
ZXlTdGF0ZURhdGEgeyAqdWlFdmVudCB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rp
b246Ok1vdXNlRXZlbnREYXRhPiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmVudChFdmVu
dCogZXZlbnQpCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uOjpNb3VzZUV2ZW50RGF0YT4gbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlCiAgICAg
ICAgIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybiBOYXZpZ2F0aW9u
QWN0aW9uOjpNb3VzZUV2ZW50RGF0YSB7IHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQmPigq
ZSkgfTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50
JiByZXF1ZXN0ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBJbml0
aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGUgdHlw
ZSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBFdmVudCogZXZlbnQsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQpA
QCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbjo6c2V0VGFyZ2V0QmFja0Zv
cndhcmRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogCiB2b2lkIE5hdmlnYXRpb25BY3Rpb246OnNl
dFNvdXJjZUJhY2tGb3J3YXJkSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKIHsKLSAgICBtX3NvdXJj
ZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgPSBpdGVtID8gbWFrZU9wdGlvbmFsKGl0ZW0tPmlk
ZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgbV9zb3VyY2VCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyID0gaXRlbSA/IHN0ZDo6bWFrZV9vcHRpb25hbChpdGVtLT5pZGVudGlmaWVyKCkp
IDogc3RkOjpudWxsb3B0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHAKaW5kZXggN2QwZGE3Y2EyZGM0MzBiODQyYWRkZGMyYjE4MTA0NmVjYTk4NDViMi4uOThl
OTYxOTc3NTY3MDgwZTg0ODA5NWZlMTAyMzY2NmVkZTA1ZDBlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtNTUsOCArNTUsOCBAQAogI2VuZGlmCiAKICNkZWZp
bmUgSVNfQUxMT1dFRCAobV9mcmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgOiBmYWxzZSkKLSNkZWZpbmUgUEFHRV9JRCAo
bV9mcmFtZS5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1
ZU9yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEIChtX2Zy
YW1lLmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0
KCkpCisjZGVmaW5lIEZSQU1FX0lEIChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZV9v
cihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoSVNfQUxMT1dFRCwgTG9hZGluZywgIiVw
IC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gUG9saWN5Q2hlY2tl
cjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCAjI19fVkFfQVJHU19fKQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oCmluZGV4IDIzNWFjMWFkNzI4NzdkYzY2NjhiZDRlN2FhODIyM2IzZTEyMGQ2
YWQuLjg1Y2ZkZDY0OWZkMjE5OTkyMWEzZmUxMTExZmRkZDM2OGUyZWZlNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC0xOTgsNyAr
MTk4LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBtaW5TZWNvbmRzVW50
aWxTZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VTZWNvbmRzICYmICFk
ZXN0aW5hdGlvblNlY29uZHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAo
c291cmNlU2Vjb25kcyAmJiBkZXN0aW5hdGlvblNlY29uZHMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bWluKHNvdXJjZVNlY29uZHMsIGRlc3RpbmF0aW9uU2Vjb25kcyk7CkBAIC0yMTgs
MTIgKzIxOCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxTZWNv
bmRzPj4gc291cmNlU2Vjb25kczsKICAgICAgICAgICAgIGRlY29kZXIgPj4gc291cmNlU2Vjb25k
czsKICAgICAgICAgICAgIGlmICghc291cmNlU2Vjb25kcykKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBkZXN0aW5hdGlvblNlY29u
ZHM7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uU2Vjb25kczsKICAgICAgICAg
ICAgIGlmICghZGVzdGluYXRpb25TZWNvbmRzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgcmV0dXJuIEF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgeyBXVEZNb3ZlKCpz
b3VyY2VTZWNvbmRzKSwgV1RGTW92ZSgqZGVzdGluYXRpb25TZWNvbmRzKSB9OwogICAgICAgICB9
CkBAIC0yMzYsNyArMjM2LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4g
ZWFybGllc3RUaW1lVG9TZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQgJiYgIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZCAmJiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjptaW4oc291cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0
VGltZVRvU2VuZCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25h
bDxXYWxsVGltZT4gbGF0ZXN0VGltZVRvU2VuZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmICFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRv
U2VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQgJiYgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWF4KHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCwgZGVzdGluYXRp
b25FYXJsaWVzdFRpbWVUb1NlbmQpOwpAQCAtMjcwLDcgKzI3MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGlmIChkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gQXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6RGVzdGluYXRpb247CiAKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTI4
NSwxMiArMjg1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdh
bGxUaW1lPj4gc291cmNlRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+
PiBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdhbGxUaW1lPj4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAg
ICAgICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogICAgICAg
ICAgICAgaWYgKCFkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgICAgIHJldHVybiBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIHsgV1RG
TW92ZSgqc291cmNlRWFybGllc3RUaW1lVG9TZW5kKSwgV1RGTW92ZSgqZGVzdGluYXRpb25FYXJs
aWVzdFRpbWVUb1NlbmQpIH07CiAgICAgICAgIH0KQEAgLTQxMyw0NyArNDEzLDQ3IEBAIE9wdGlv
bmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVj
b2RlKERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHNvdXJjZUlEOwogICAg
IGRlY29kZXIgPj4gc291cmNlSUQ7CiAgICAgaWYgKCFzb3VyY2VJRCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAg
ZGVjb2RlciA+PiBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIXNvdXJjZVJlZ2lz
dHJhYmxlRG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBk
ZXN0aW5hdGlvblJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25S
ZWdpc3RyYWJsZURvbWFpbjsKICAgICBpZiAoIWRlc3RpbmF0aW9uUmVnaXN0cmFibGVEb21haW4p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VEZXNjcmlwdGlvbjsKICAgICBk
ZWNvZGVyID4+IHNvdXJjZURlc2NyaXB0aW9uOwogICAgIGlmICghc291cmNlRGVzY3JpcHRpb24p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwdXJjaGFzZXI7CiAgICAgZGVjb2RlciA+
PiBwdXJjaGFzZXI7CiAgICAgaWYgKCFwdXJjaGFzZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8
V2FsbFRpbWU+IHRpbWVPZkFkQ2xpY2s7CiAgICAgZGVjb2RlciA+PiB0aW1lT2ZBZENsaWNrOwog
ICAgIGlmICghdGltZU9mQWRDbGljaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEVwaGVt
ZXJhbFNvdXJjZU5vbmNlPj4gZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAgZGVjb2RlciA+PiBl
cGhlbWVyYWxTb3VyY2VOb25jZTsKICAgICBpZiAoIWVwaGVtZXJhbFNvdXJjZU5vbmNlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4+IGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE7CiAgICAgZGVjb2RlciA+PiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwog
ICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxB
dHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhPiB0aW1lc1RvU2VuZDsKICAgICBkZWNvZGVyID4+IHRp
bWVzVG9TZW5kOwogICAgIGlmICghdGltZXNUb1NlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24gewogICAgICAgICBTb3VyY2VJRCB7IFdURk1vdmUo
KnNvdXJjZUlEKSB9LApAQCAtNDgyLDcgKzQ4Miw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBub25jZTsKICAgICBkZWNvZGVyID4+IG5vbmNlOwogICAg
IGlmICghbm9uY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsg
V1RGTW92ZSgqbm9uY2UpIH07CiB9CkBAIC00OTksMTcgKzQ5OSwxNyBAQCBPcHRpb25hbDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbgogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkYXRhOwogICAgIGRlY29kZXIgPj4g
ZGF0YTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8UHJpb3JpdHlWYWx1
ZT4gcHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlvcml0eTsKICAgICBpZiAoIXByaW9yaXR5
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPFdhc1NlbnQ+IHdhc1NlbnQ7CiAgICAgZGVjb2RlciA+
PiB3YXNTZW50OwogICAgIGlmICghd2FzU2VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gQXR0cmli
dXRpb25UcmlnZ2VyRGF0YSB7IFdURk1vdmUoKmRhdGEpLCBQcmlvcml0eSB7ICpwcmlvcml0eSB9
LCAqd2FzU2VudCB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRleCBhZjQyMmYyMWZiZTMyMDQ1YzJhODYxNGRl
NzRlNjM5YjdkZjhhNjAzLi5kODdiZDQ2MThmMDViMzU2OGNkY2Y1N2EzZTM1NDUwZGQzYTU3MGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGlj
RGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcApAQCAtNDYsMjAgKzQ2LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFs
CiAgICAgaWYgKHNraXBFeGFjdGx5SWdub3JpbmdBU0NJSUNhc2UoYnVmZmVyLCAic2hhNTEyIikp
CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobTo6
U0hBNTEyOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9u
YWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNyeXB0b2dyYXBoaWNEaWdlc3RJ
bXBsKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFs
Z29yaXRobUFkdmFuY2luZ1Bvc2l0aW9uKGJ1ZmZlcik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoIXNraXBFeGFjdGx5KGJ1ZmZlciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVn
aW5IYXNoVmFsdWUgPSBidWZmZXIucG9zaXRpb24oKTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRP
ckJhc2U2NFVSTENoYXJhY3Rlcj4oYnVmZmVyKTsKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdD4gcGEKICAgICBza2lwRXhhY3RseShidWZmZXIsICc9Jyk7CiAKICAgICBpZiAo
YnVmZmVyLnBvc2l0aW9uKCkgPT0gYmVnaW5IYXNoVmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmdWaWV3
IGhhc2hWYWx1ZShiZWdpbkhhc2hWYWx1ZSwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbkhhc2hW
YWx1ZSk7CiAKQEAgLTc3LDcgKzc3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGEKICAgICBp
ZiAoYXV0byBkaWdlc3QgPSBiYXNlNjRVUkxEZWNvZGUoaGFzaFZhbHVlKSkKICAgICAgICAgcmV0
dXJuIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7ICphbGdvcml0aG0sIFdURk1vdmUoKmRp
Z2VzdCkgfTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogT3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUNy
eXB0b2dyYXBoaWNEaWdlc3QoU3RyaW5nUGFyc2luZ0J1ZmZlcjxVQ2hhcj4mIGJ1ZmZlcikKQEAg
LTkzLDE0ICs5MywxNCBAQCBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBh
cnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChTdHJpbmdQYXJzaW5nQnVmZgogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlc3RJbXBsKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IHBhcnNlSGFzaEFsZ29yaXRobUFkdmFu
Y2luZ1Bvc2l0aW9uKGJ1ZmZlcik7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IXNraXBFeGFjdGx5KGJ1ZmZlciwgJy0nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVnaW5IYXNoVmFsdWUg
PSBidWZmZXIucG9zaXRpb24oKTsKICAgICBza2lwV2hpbGU8aXNCYXNlNjRPckJhc2U2NFVSTENo
YXJhY3Rlcj4oYnVmZmVyKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZwogICAgIHNraXBFeGFjdGx5KGJ1ZmZlciwgJz0nKTsKIAogICAgIGlmIChidWZmZXIucG9z
aXRpb24oKSA9PSBiZWdpbkhhc2hWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IHsgKmFsZ29yaXRobSwgU3RyaW5nKGJlZ2luSGFzaFZhbHVl
LCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luSGFzaFZhbHVlKSB9OwogfQpAQCAtMTMxLDcgKzEz
MSw3IEBAIE9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2Rl
ZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjCiAgICAgaWYgKGF1dG8gZGlnZXN0ID0gYmFz
ZTY0VVJMRGVjb2RlKGVuY29kZWREaWdlc3QuZGlnZXN0KSkKICAgICAgICAgcmV0dXJuIFJlc291
cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7IGVuY29kZWREaWdlc3QuYWxnb3JpdGhtLCBXVEZNb3Zl
KCpkaWdlc3QpIH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRJbmZvLmNwcApp
bmRleCAyYzU3NmY2NGNkNDRjNzllNGFkYTkzNmFhZDQ5M2Q2YzhmYTg2Y2Q3Li5lNDg1MmYyOTNh
MGZmNTlkOTE3NDUxZWRkNTBiZmJlYjA0MTIyMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZEluZm8uY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgT3B0aW9uYWw8T3B0aW9u
U2V0PFJlc291cmNlVHlwZT4+IHJlYWRSZXNvdXJjZVR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAg
ICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6OlBvcHVwIH07CiAgICAgaWYgKG5hbWUgPT0gInBp
bmciKQogICAgICAgICByZXR1cm4geyBSZXNvdXJjZVR5cGU6OlBpbmcgfTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPE9w
dGlvblNldDxMb2FkVHlwZT4+IHJlYWRMb2FkVHlwZShTdHJpbmdWaWV3IG5hbWUpCkBAIC0xMjIs
NyArMTIyLDcgQEAgT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRUeXBlPj4gcmVhZExvYWRUeXBlKFN0
cmluZ1ZpZXcgbmFtZSkKICAgICAgICAgcmV0dXJuIHsgTG9hZFR5cGU6OkZpcnN0UGFydHkgfTsK
ICAgICBpZiAobmFtZSA9PSAidGhpcmQtcGFydHkiKQogICAgICAgICByZXR1cm4geyBMb2FkVHlw
ZTo6VGhpcmRQYXJ0eSB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRDb250ZXh0Pj4gcmVhZExv
YWRDb250ZXh0KFN0cmluZ1ZpZXcgbmFtZSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBPcHRpb25hbDxP
cHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmlldyBuYW1lKQog
ICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6VG9wRnJhbWUgfTsKICAgICBpZiAobmFtZSA9
PSAiY2hpbGQtZnJhbWUiKQogICAgICAgICByZXR1cm4geyBMb2FkQ29udGV4dDo6Q2hpbGRGcmFt
ZSB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogYm9vbCBSZXNvdXJjZUxvYWRJbmZvOjppc1RoaXJkUGFydHkoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzU4NTgzZGFhNWQ2MjJhMTlj
ODllNGM3ZDZlMTc4ODBlOGU3NzExMi4uMWU4Njg4OWE3NTgwMGE0MjJlMmE0MGZkMGRmNzIzZDBh
ZTMyZDg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02
NCw4ICs2NCw4IEBACiAjZW5kaWYKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKLSNk
ZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJ
ZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJB
TUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlm
aWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQg
KChmcmFtZSgpID8gZnJhbWUoKS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkg
OiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1l
KCkgPyBmcmFtZSgpLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJh
bWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBO
ZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBm
cmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhp
cywgUEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZB
X0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKaW5kZXggZTIwMmIwM2IzMmRkZWYxNjY0Yzc2MGVi
MzFhYzJkNWZmODg5MTAwOS4uNjI5NWFlYTVlMzBjOTkyNmQ2ZGRlYzk5MjYwMTRlNmQ3NGE5MGM5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3IoKShTdHJpbmdQ
YXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiAgICAgewotICAgICAgICAvLyBJ
bml0aWFsaXplIGhhc2hlcyB0byBiZSBzb21ldGhpbmcgb3RoZXIgV1RGOjpudWxsb3B0LCB0byBp
bmRpY2F0ZQorICAgICAgICAvLyBJbml0aWFsaXplIGhhc2hlcyB0byBiZSBzb21ldGhpbmcgb3Ro
ZXIgc3RkOjpudWxsb3B0LCB0byBpbmRpY2F0ZQogICAgICAgICAvLyB0aGF0IGF0IGxlYXN0IG9u
ZSB0b2tlbiB3YXMgc2VlbiwgYW5kIHRodXMgc2V0dGluZyB0aGUgZW1wdHkgZmxhZwogICAgICAg
ICAvLyBmcm9tIHNlY3Rpb24gMy4zLjMgUGFyc2UgbWV0YWRhdGEsIHRvIGZhbHNlLgogICAgICAg
ICBpZiAoIW1fZGlnZXN0cykKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNw
bGl0T25TcGFjZXMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIsIEZ1
bmMKIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdD4+IHBhcnNlSW50ZWdyaXR5TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHlNZXRh
ZGF0YSkKIHsKICAgICBpZiAoaW50ZWdyaXR5TWV0YWRhdGEuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8VmVjdG9yPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+PiByZXN1
bHQ7CiAgICAgCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIGJvb2wgaXNSZXNwb25zZUVsaWdp
YmxlKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHN0YXRpYyBPcHRpb25hbDxFbmNv
ZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0+IHByaW9yaXRpemVkSGFz
aEZ1bmN0aW9uKEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBh
LCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYikKIHsKICAg
ICBpZiAoYSA9PSBiKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAoYSA+IGIpID8gYSA6IGI7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYwZGQ4NWJlZDU1
NzBkYjQ5Zjg2MzlkYzUwY2FjOTg3NDZjZjdmYjkuLmYwNWU1YzY4NTBiOGI4NTI5NGY0ZjkzZTRk
MWI1YTE0ZWEzMWViYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcApAQCAtNjksOCArNjksOCBAQAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RAogI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKLSNkZWZpbmUgUEFHRV9JRCAo
KGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpIDog
UGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgp
ID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJh
bWUoKS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmll
cigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5m
cmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkp
LnRvVUludDY0KCkpCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICNkZWZpbmUgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCiAjZGVmaW5lIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlz
KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAg
ICBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50ID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gV2Ug
ZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJlc291cmNlTG9hZGVyJ3MgcmVxdWVz
dCBjb3VudAotICAgICAgICAgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2Fk
IGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1hZ2UiKTsKICAgICAg
ICAgICAgICAgICBjYW5jZWwoKTsKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSB0eXBlKQogICAgIGlmIChyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3JlcXVlc3RDb3Vu
dFRyYWNrZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0Q291bnRUcmFja2VyID0gc3Rk
OjpudWxsb3B0OwogICAgIGJvb2wgc2hvdWxkUGVyZm9ybVBvc3RMb2FkQWN0aW9ucyA9IHRydWU7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAobV9zdGF0ZSA9PSBDYW5jZWxsZWRX
aGlsZUluaXRpYWxpemluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKaW5kZXgg
MDA3ZTRhYWUyNmM3YmYyMzA2ZWMzNzNlY2IwMzI3NWFjZDM0ZjYwNy4uNzBkMTUxN2JiYmYyOGZj
YmY1ZmZkYWY5MDY3YWJhYWU3YzkxODYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNl
ci5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBPcHRpb25hbDxBcHBsaWNhdGlvbkNhY2hlTWFuaWZl
c3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaQogICAgICAg
ICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1QgI2NvbW1lbnQiIGlzIGEgdmFsaWQgc2lnbmF0
dXJlLgogICAgICAgICAvLyBFeGFtcGxlOiAiQ0FDSEUgTUFOSUZFU1Q7VjIiIGlzIG5vdC4KICAg
ICAgICAgaWYgKCFza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBjYWNoZU1hbmlmZXN0SWRl
bnRpZmllcjxDaGFyYWN0ZXJUeXBlPikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAgICAgaWYgKGJ1
ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWluaW5nKCkgJiYgIWlzTWFuaWZlc3RXaGl0ZXNwYWNlT3JO
ZXdsaW5lKCpidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gU2tpcCB0byB0aGUgZW5k
IG9mIHRoZSBsaW5lLgogICAgICAgICBza2lwVW50aWw8aXNNYW5pZmVzdE5ld2xpbmU+KGJ1ZmZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA4YjI3MTFmYmQ1YzhhNWUyZTc4ZWZkNDQzZTg1
MjE5NjQ4N2M1YmRlLi41ZTY4MTFlMWJhYTM3NTUwNGNhOGNlNzIzZGQ1Y2U5MjcwYTYxZTEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTExMjEsNyArMTEyMSw3IEBAIFJlZlB0cjxBcHBsaWNh
dGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0
b3JhZ2VJRCkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXplKCk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBzaXplID0gRmlsZVN5c3Rl
bTo6ZmlsZVNpemUocGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHNpemUgPSBGaWxlU3lz
dGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZV9vcigwKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlID0gY2FjaGVTdGF0ZW1lbnQtPmNvbHVtblRleHQoMyk7CkBA
IC0xMzA5LDExICsxMzA5LDExIEBAIE9wdGlvbmFsPFZlY3RvcjxVUkw+PiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKCkKIAogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3RVUkxzID0g
bV9kYXRhYmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgbWFuaWZlc3RVUkwgRlJPTSBDYWNo
ZUdyb3VwcyJfcyk7CiAgICAgaWYgKCFzZWxlY3RVUkxzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFVSTD4g
dXJsczsKICAgICB3aGlsZSAoc2VsZWN0VVJMcy0+c3RlcCgpID09IFNRTElURV9ST1cpCkBAIC0x
NDUwLDcgKzE0NTAsNyBAQCBsb25nIGxvbmcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRG
aWxlQXJlYVNpemUoKQogICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZSk7CiAgICAgd2hpbGUgKHNlbGVjdFBhdGhzLT5zdGVwKCkgPT0gU1FMSVRF
X1JPVykgewogICAgICAgICBhdXRvIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBzZWxlY3RQYXRocy0+Y29sdW1uVGV4dCgw
KSk7Ci0gICAgICAgIHRvdGFsU2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShmdWxsUGF0aCku
dmFsdWVPcigwKTsKKyAgICAgICAgdG90YWxTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZ1
bGxQYXRoKS52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlv
bk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNh
dGlvbk1hbmlmZXN0LmNwcAppbmRleCA1MWQ4ZDBhODZjNGFhYWMzZGFkMWFjNjkzZWQxNDVjODA1
ZmE4MDcxLi4yYjY1YWMwZjM2MzI1OTNjOTg3NDJlN2RlMzg1OGZjNmFhMGI3NGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9u
TWFuaWZlc3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZyBDYWNoZWRBcHBsaWNhdGlvbk1h
bmlmZXN0OjplbmNvZGluZygpIGNvbnN0CiBPcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0Ojpwcm9jZXNzKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkws
IGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAo
IW1fdGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyOjpwYXJzZSgqZG9jdW1lbnQsICptX3RleHQsIG1hbmlmZXN0VVJMLCBk
b2N1bWVudFVSTCk7CiAgICAgcmV0dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNl
KCptX3RleHQsIG1hbmlmZXN0VVJMLCBkb2N1bWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCAwMTk3ZWQ4MzVkMTkw
MzgzMTBiZDIxODIzMzhmNWRhZmFhNzI5OGVhLi43OGQ4NGJmYWJjZGVlNjJiMWU2ZmZiZTdhN2Ni
ZjMyMzE4NTQzMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgT3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
aygKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAg
ICBpZiAoIWRhdGEgfHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKIH0KIApAQCAt
ODUsNyArODUsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoU2hhcmVk
QnVmZmVyJiBkYXRhKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEp
OwogCiAgICAgaWYgKG1fZGVsYXllZEZpbmlzaExvYWRpbmcpIHsKLSAgICAgICAgYXV0byBkZWxh
eWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWxheWVkRmluaXNoTG9hZGluZywg
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgYXV0byBkZWxheWVkRmluaXNoTG9hZGluZyA9IHN0ZDo6
ZXhjaGFuZ2UobV9kZWxheWVkRmluaXNoTG9hZGluZywgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
ZmluaXNoTG9hZGluZyhkZWxheWVkRmluaXNoTG9hZGluZy0+YnVmZmVyLmdldCgpLCB7IH0pOwog
ICAgIH0KIH0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaQogICAg
IGlmIChtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5KSB7CiAgICAgICAgIC8vIFdlIG1heSBnZXQg
aGVyZSBzeW5jaHJvbm91c2x5IGZyb20gdXBkYXRlQnVmZmVyKCkgaWYgdGhlIGNhbGxiYWNrIHRo
ZXJlIGVuZHMgdXAgc3Bpbm5pbmcgYSBydW5sb29wLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2Ug
ZGVsYXkgdGhlIGNhbGwuCi0gICAgICAgIG1fZGVsYXllZEZpbmlzaExvYWRpbmcgPSBtYWtlT3B0
aW9uYWwoRGVsYXllZEZpbmlzaExvYWRpbmcgeyBkYXRhIH0pOworICAgICAgICBtX2RlbGF5ZWRG
aW5pc2hMb2FkaW5nID0gc3RkOjptYWtlX29wdGlvbmFsKERlbGF5ZWRGaW5pc2hMb2FkaW5nIHsg
ZGF0YSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH07CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzMzM3NTg2MjJmNjI5
N2ZiMjIzODc2ZTQ5ODBjNDAyYWZkMDM3ZjhjLi4yZGE5N2YxNDI5NTQxZjNiNTY5MDFmNzhmYzhk
N2I4MTQxM2JiN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKQEAgLTY1LDggKzY1LDggQEAKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQKICN1bmRlZiBSRUxFQVNFX0xPR19BTFdBWVMKLSNkZWZpbmUgUEFHRV9JRChmcmFtZSkg
KGZyYW1lLnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNk
ZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1F
X0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50
b1VJbnQ2NCgpKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihjYWNoZWRSZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhfRlJBTUUoZm10LCBmcmFt
ZSwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRSZXNvdXJjZUxvYWRlci5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1l
KSwgRlJBTUVfSUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19B
TFdBWVMoZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNl
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJjYzBmNGUzN2ZkYTUz
ZDIyYzllYTAyY2NmMjgxNTZiYTg0YjgyYzkuLjg1NmU1ZTVkNGRiMTQ2MDkyYjFiNzRlMzRjYjMw
ZmQ3ZDA3OTBhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtOTUsOCArOTUsOCBAQAogI2VuZGlmCiAKICN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECi0jZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5w
YWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZS
QU1FX0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkp
LnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1
ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRChmcmFt
ZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQo
KSkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291
cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRF9XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJ
dTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwg
dGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVz
dC5oCmluZGV4IDNlNWRhM2QwOWM3NzcyMjdiYjgyMDQ3ZDJjNzVlOWYxZjAwZGRmNjMuLmYzMDAw
MTJmMDVjOWVhOWM5NzVjMDYwM2Q3MWRmOGEzM2Q1MjMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgYm9vbCBpc1JlcXVlc3RDcm9zc09yaWdpbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgUmVzb3VyY2UKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHsKIHB1YmxpYzoKLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFBy
aW9yaXR5PiA9IFdURjo6bnVsbG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKKyAg
ICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYsIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IHN0ZDo6bnVs
bG9wdCwgU3RyaW5nJiYgY2hhcnNldCA9IFN0cmluZygpKTsKIAogICAgIFJlc291cmNlUmVxdWVz
dCYmIHJlbGVhc2VSZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVzb3VyY2VS
ZXF1ZXN0KTsgfQogICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxFbGVtZW50LmNwcAppbmRleCA0YWY0MDFkNmFkMmQxNjFmNzUyZTQyODIwNTNlMDA2YzVi
OWQxZTA5Li42MDdlNjJlYzA4NjgyNzMyZjUyYmJmYjRjNzU0OWRkMzdiNjFmZGNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
TWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4o
cmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7CiAgICAgfSBlbHNlIGlmIChu
YW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwogICAgICAg
ICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVl
KSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZh
bHVlKCkpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApp
bmRleCA1ZGMxOTUwYTA1ZGM2M2E2ZDgyYjhiZDI5YmViMGI1YzhlY2Y5ZmY4Li5lN2U4NWNhNmNl
MTE5YTViMWY3NDczNDgyZGQwMTMzMDU4N2FiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJldGNoZWQg
PSAxOAogICAgIH07CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPE1hdGhWYXJpYW50PiBzcGVjaWZp
ZWRNYXRoVmFyaWFudCgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0
aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VsZWN0ZWRDaGlsZCgpIHsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRnJhY3Rpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCmlu
ZGV4IGJiNGFkZDRjYmU5MjU2MWQ4OWJkMGFiMTUyM2ZlNGM3Yzk1MTlkY2IuLjNjNDM5MzkwMGNm
ZTc2OTc3MDk3ZGE5MGZjYTE2N2NjNGIwMmE4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDYsMTEgKzEwNiwxMSBAQCBNYXRo
TUxGcmFjdGlvbkVsZW1lbnQ6OkZyYWN0aW9uQWxpZ25tZW50IE1hdGhNTEZyYWN0aW9uRWxlbWVu
dDo6ZGVub21pbmF0b3JBbGlnbgogdm9pZCBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQogewogICAgIGlmIChuYW1lID09IGxpbmV0aGlja25lc3NBdHRyKQotICAgICAgICBtX2xpbmVU
aGlja25lc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IHN0ZDo6
bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IG51bWFsaWduQXR0cikKLSAgICAgICAgbV9u
dW1lcmF0b3JBbGlnbm1lbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbnVtZXJhdG9yQWxp
Z25tZW50ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVub21hbGlnbkF0
dHIpCi0gICAgICAgIG1fZGVub21pbmF0b3JBbGlnbm1lbnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fZGVub21pbmF0b3JBbGlnbm1lbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcAppbmRleCBjMzE4MTRmNzc2ODM0NTQ0MDhiNGUz
NjBmOTBhYWM0YjdmMmJkNWVkLi4wZTVkMDIwZjI2NDdhMjAxNmEyMjc3MGZkMjNlOWRkMWI0NjNh
NjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgdm9pZCBNYXRoTUxNYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHsKICAgICBib29sIG1hdGhW
YXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHI7CiAgICAgaWYgKG1hdGhW
YXJpYW50QXR0cmlidXRlKQotICAgICAgICBtX21hdGhWYXJpYW50ID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBtX21hdGhWYXJpYW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgobWF0aFZhcmlh
bnRBdHRyaWJ1dGUpICYmIHJlbmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZl
TWF0aE1MU3R5bGVUcmVlKHJlbmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuY3BwCmluZGV4IGNjODQ5ZmU4ZWJmMmVmNTJiM2QxYzQ2
ZmM1Nzc5MGQzMmM3ZjE5YWMuLmMyZmQ1ZDU0ZGI1Zjc1YTcyNzIwYzQ2MDBlZGYxZTNmNzMyY2Ux
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6Omhhc05v
dGF0aW9uKE1lbmNsb3NlTm90YXRpb25GbGFnIG5vdGF0aW9uRmxhZykKIHZvaWQgTWF0aE1MTWVu
Y2xvc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBub3RhdGlvbkF0dHIp
Ci0gICAgICAgIG1fbm90YXRpb25GbGFncyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ub3Rh
dGlvbkZsYWdzID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MUm93RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE9wZXJhdG9yRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5LmNwcAppbmRleCAyZDJiYzJiZTYwMTUwZTBjYTkwYjgz
YzI5YTNlOTg4ODM5MDlkOGI1Li5lYzUwNTIwOTY0MzFhYWI4NjBiZDFkYTVjZTc0MzU5MjRjNmZi
NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JEaWN0
aW9uYXJ5LmNwcApAQCAtMTEyOSwxNCArMTEyOSwxNCBAQCBzdGF0aWMgY29uc3QgVUNoYXIzMiBo
b3Jpem9udGFsT3BlcmF0b3JzW10gPSB7CiBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9ybSwgYm9vbCBl
eHBsaWNpdEZvcm0pCiB7CiAgICAgaWYgKCFjaGFyYWN0ZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBXZSB0cnkg
YW5kIGZpbmQgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnku
CiAgICAgaWYgKGF1dG8qIGVudHJ5ID0gdHJ5QmluYXJ5U2VhcmNoPGNvbnN0IEVudHJ5LCBLZXk+
KGRpY3Rpb25hcnksIGRpY3Rpb25hcnlTaXplLCBLZXkoY2hhcmFjdGVyLCBmb3JtKSwgRXh0cmFj
dEtleSkpCiAgICAgICAgIHJldHVybiBFeHRyYWN0UHJvcGVydHkoKmVudHJ5KTsKIAogICAgIGlm
IChleHBsaWNpdEZvcm0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB3ZSBkaWQgbm90IGZpbmQgdGhlIGRlc2ly
ZWQgb3BlcmF0b3IgZm9ybSBhbmQgaWYgaXQgd2FzIG5vdCBzZXQgZXhwbGljaXRseSwgd2UgdXNl
IHRoZSBmaXJzdCBvbmUgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjogSW5maXgsIFByZWZpeCwgUG9z
dGZpeC4KICAgICAvLyBUaGlzIGlzIHRvIGhhbmRsZSBiYWQgTWF0aE1MIG1hcmt1cCB3aXRob3V0
IGV4cGxpY2l0IDxtcm93PiBkZWxpbWl0ZXJzIGxpa2UgIjxtbz4oPC9tbz48bWk+YTwvbWk+PG1v
Pik8L21vPjxtbz4oPC9tbz48bWk+YjwvbWk+PG1vPik8L21vPiIgd2hlcmUgaW5uZXJmZW5jZXMg
c2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGluZml4LgpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgT3B0
aW9uYWw8UHJvcGVydHk+IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6c2VhcmNoKFVDaGFyMzIg
Y2hhcmFjdGVyLCBGb3JtIGZvcm0KICAgICAgICAgcmV0dXJuIEV4dHJhY3RQcm9wZXJ0eSgqZW50
cnkpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogYm9vbCBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmlzVmVydGljYWwo
VUNoYXIzMiB0ZXh0Q29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxPcGVyYXRvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9w
ZXJhdG9yRWxlbWVudC5jcHAKaW5kZXggMWEyMTNmNGViMmYyN2IxOGZiMjU2OTMzYzM0MzNlN2Vj
MDcxNmEyNi4uMzRiYjgxYWQ3ZGUzMWIzZWVjNjM5MTJiMDg0NGFkM2U0NTMyMjg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5jcHAKQEAgLTIw
Myw4ICsyMDMsOCBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTE9wZXJhdG9y
RWxlbWVudDo6bWF4U2l6ZSgpCiAKIHZvaWQgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKLSAgICBtX29wZXJhdG9yQ2hh
ciA9IFdURjo6bnVsbG9wdDsKLSAgICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX29wZXJhdG9yQ2hhciA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RpY3Rpb25hcnlQ
cm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyA9IE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6YWxsRmxhZ3M7CiAgICAgTWF0aE1MVG9rZW5FbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKIH0KQEAgLTIyNSwyNCArMjI1LDI0IEBAIHN0YXRp
YyBPcHRpb25hbDxNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWc+IGF0dHJpYnV0ZU5hbWVU
b1Byb3BlcnR5RmxhZyhjb25zCiAgICAgICAgIHJldHVybiBTdHJldGNoeTsKICAgICBpZiAobmFt
ZSA9PSBzeW1tZXRyaWNBdHRyKQogICAgICAgICByZXR1cm4gU3ltbWV0cmljOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNYXRo
TUxPcGVyYXRvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1lID09IGZvcm1BdHRy
KSB7Ci0gICAgICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9wcm9wZXJ0
aWVzLmRpcnR5RmxhZ3MgPSBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OmFsbEZsYWdzOwogICAg
IH0gZWxzZSBpZiAoYXV0byBmbGFnID0gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKG5hbWUp
KQogICAgICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyB8PSBmbGFnLnZhbHVlKCk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBsc3BhY2VBdHRyKQotICAgICAgICBtX2xlYWRpbmdTcGFjZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgbV9sZWFkaW5nU3BhY2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSByc3BhY2VBdHRyKQotICAgICAgICBtX3RyYWlsaW5nU3BhY2UgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBlbHNlIGlmIChuYW1lID09IG1pbnNpemVBdHRyKQotICAgICAgICBtX21pblNpemUgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIG1fbWluU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlm
IChuYW1lID09IG1heHNpemVBdHRyKQotICAgICAgICBtX21heFNpemUgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fbWF4U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgobmFtZSA9PSBz
dHJldGNoeUF0dHIgfHwgbmFtZSA9PSBsc3BhY2VBdHRyIHx8IG5hbWUgPT0gcnNwYWNlQXR0ciB8
fCBuYW1lID09IG1vdmFibGVsaW1pdHNBdHRyKSAmJiByZW5kZXJlcigpKSB7CiAgICAgICAgIGRv
d25jYXN0PFJlbmRlck1hdGhNTE9wZXJhdG9yPigqcmVuZGVyZXIoKSkudXBkYXRlRnJvbUVsZW1l
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckVsZW1lbnQuaApp
bmRleCBjN2Q4ZDY2OWJmYzYwYzNlMTkzZjU0YmMwODlkNmI3NjM4MjJhYTg3Li5iYjU2Zjc5NDZl
OGYxNWU5MmIyOGY0NjFlNGIyZTdmY2U5Yzc2YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICB9OwogICAgIHN0YXRpYyBPcGVyYXRvckNoYXIgcGFyc2VPcGVyYXRvckNoYXIoY29uc3QgU3Ry
aW5nJik7CiAgICAgY29uc3QgT3BlcmF0b3JDaGFyJiBvcGVyYXRvckNoYXIoKTsKLSAgICB2b2lk
IHNldE9wZXJhdG9yRm9ybURpcnR5KCkgeyBtX2RpY3Rpb25hcnlQcm9wZXJ0eSA9IFdURjo6bnVs
bG9wdDsgfQorICAgIHZvaWQgc2V0T3BlcmF0b3JGb3JtRGlydHkoKSB7IG1fZGljdGlvbmFyeVBy
b3BlcnR5ID0gc3RkOjpudWxsb3B0OyB9CiAgICAgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpG
b3JtIGZvcm0oKSB7IHJldHVybiBkaWN0aW9uYXJ5UHJvcGVydHkoKS5mb3JtOyB9CiAgICAgYm9v
bCBoYXNQcm9wZXJ0eShNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcpOwogICAgIExlbmd0
aCBkZWZhdWx0TGVhZGluZ1NwYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
UGFkZGVkRWxlbWVudC5jcHAKaW5kZXggZjc1OTQ1OWI5MjUzNDk1Y2M5NzU2YjEyYWI3ZWI5ZDc0
YjM0YmZlZC4uOTRmMmMzZTIyMTFjZjA2OTcwOGJlMDgxYWIzMjg5ZmYyZmIyOWViMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcApAQCAtNzYsMTUg
Kzc2LDE1IEBAIGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MUGFkZGVkRWxlbWVu
dDo6dm9mZnNldCgpCiB2b2lkIE1hdGhNTFBhZGRlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV93aWR0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhl
aWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2hl
aWdodCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAg
ICAgICAgbV9kZXB0aCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVs
bG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGxzcGFjZUF0dHIpCi0gICAgICAgIG1fbHNwYWNl
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2xzcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBl
bHNlIGlmIChuYW1lID09IHZvZmZzZXRBdHRyKQotICAgICAgICBtX3ZvZmZzZXQgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fdm9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCAyNmY0NWI0
ZTk3YjkyMTNjYzA2ZWIzOTc2NmNkYzcyZjA4OWU2ZTQzLi5hMjY5ZGM5YTA3NjUwZTljZTk1ZmEy
MzRkM2U4YmFkMWFhZmI3M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0zNjQsMTcgKzM2NCwxNyBAQCBNYXRoTUxF
bGVtZW50OjpNYXRoVmFyaWFudCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU1hdGhW
YXJpYW50QXR0cmlidXRlKAogT3B0aW9uYWw8TWF0aE1MRWxlbWVudDo6TWF0aFZhcmlhbnQ+IE1h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnNwZWNpZmllZE1hdGhWYXJpYW50KCkKIHsKICAgICBp
ZiAoIWFjY2VwdHNNYXRoVmFyaWFudEF0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghbV9tYXRoVmFy
aWFudCkKICAgICAgICAgbV9tYXRoVmFyaWFudCA9IHBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUo
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihtYXRodmFyaWFudEF0dHIpKTsKLSAgICBy
ZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgpID09IE1hdGhWYXJpYW50OjpOb25lID8gV1RGOjpu
dWxsb3B0IDogbV9tYXRoVmFyaWFudDsKKyAgICByZXR1cm4gbV9tYXRoVmFyaWFudC52YWx1ZSgp
ID09IE1hdGhWYXJpYW50OjpOb25lID8gc3RkOjpudWxsb3B0IDogbV9tYXRoVmFyaWFudDsKIH0K
IAogdm9pZCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBib29s
IG1hdGhWYXJpYW50QXR0cmlidXRlID0gbmFtZSA9PSBtYXRodmFyaWFudEF0dHIgJiYgYWNjZXB0
c01hdGhWYXJpYW50QXR0cmlidXRlKCk7CiAgICAgaWYgKG1hdGhWYXJpYW50QXR0cmlidXRlKQot
ICAgICAgICBtX21hdGhWYXJpYW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX21hdGhWYXJp
YW50ID0gc3RkOjpudWxsb3B0OwogICAgIGlmICgobWF0aFZhcmlhbnRBdHRyaWJ1dGUpICYmIHJl
bmRlcmVyKCkpCiAgICAgICAgIE1hdGhNTFN0eWxlOjpyZXNvbHZlTWF0aE1MU3R5bGVUcmVlKHJl
bmRlcmVyKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJl
c2VudGF0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRh
dGlvbkVsZW1lbnQuaAppbmRleCBlNzVhNjM0MTFjMTBhZjFjNzgzZDJjNDMxNzVjMDUyZDc3NDBl
MDUyLi5lMjQ2NWYxZGZjOWYwNzkxOGEyZmJlNmQ2M2ZhMTM0Nzc4YjJjM2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBib29sIGlzUGhyYXNpbmdDb250ZW50
KGNvbnN0IE5vZGUmKTsKICAgICBzdGF0aWMgYm9vbCBpc0Zsb3dDb250ZW50KGNvbnN0IE5vZGUm
KTsKIAotICAgIHN0YXRpYyBPcHRpb25hbDxib29sPiB0b09wdGlvbmFsQm9vbChjb25zdCBCb29s
ZWFuVmFsdWUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OkRlZmF1bHQg
PyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPih2YWx1ZSA9PSBCb29sZWFuVmFsdWU6OlRy
dWUpOyB9CisgICAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJv
b2xlYW5WYWx1ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVs
dCA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6
VHJ1ZSk7IH0KICAgICBjb25zdCBCb29sZWFuVmFsdWUmIGNhY2hlZEJvb2xlYW5BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIE9wdGlvbmFsPEJvb2xlYW5WYWx1ZT4mKTsKIAogICAgIHN0
YXRpYyBMZW5ndGggcGFyc2VNYXRoTUxMZW5ndGgoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAppbmRleCAzMmZhNGJiZjVi
ZDQzYjYxNWFmZDlkNmZlYmVkNzc0MjZmZTdmM2E1Li4wNjRlYTA4OWY5Y2E2Zjc3ZjFhODYxMjIz
MGY5YWJhMmQzOGFiMzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
U2NyaXB0c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3Jp
cHRzRWxlbWVudC5jcHAKQEAgLTgwLDkgKzgwLDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVu
Z3RoJiBNYXRoTUxTY3JpcHRzRWxlbWVudDo6c3VwZXJzY3JpcHRTaGlmdCgpCiB2b2lkIE1hdGhN
TFNjcmlwdHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSBzdWJzY3JpcHRz
aGlmdEF0dHIpCi0gICAgICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fc3Vic2NyaXB0U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBzdXBlcnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAgbV9zdXBlcnNjcmlwdFNoaWZ0ID0gV1RG
OjpudWxsb3B0OworICAgICAgICBtX3N1cGVyc2NyaXB0U2hpZnQgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU3BhY2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwCmluZGV4IGNjZDc4ODYx
NWUzMzhlZGI3NWFlNGMzNGIxOGZhMTA1Yzg0NWE4NjguLmQ1NmUzYTA0MGQ1OTc3NDlkYjJjYmQw
M2M2NjM5MzBkZjY0M2QxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxTcGFjZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTcGFj
ZUVsZW1lbnQuY3BwCkBAIC02NiwxMSArNjYsMTEgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6TGVu
Z3RoJiBNYXRoTUxTcGFjZUVsZW1lbnQ6OmRlcHRoKCkKIHZvaWQgTWF0aE1MU3BhY2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9PSB3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lk
dGggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fd2lkdGggPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodCA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9oZWlnaHQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBkZXB0aEF0dHIpCi0gICAgICAgIG1fZGVwdGggPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fZGVwdGggPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MVG9rZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCmluZGV4IGRiOGQwMzczNTI4NmMzOGFlNzE0NmI5MTY5
MzBhZWVjMTBhYjUyZmQuLjdiZGFmNjEwNGU4ODg5M2FlYzkzN2ZmNTJmMWE3MzNjODM4NzVmNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUb2tlbkVsZW1lbnQuY3BwCkBAIC04
NiwxMCArODYsMTAgQEAgT3B0aW9uYWw8VUNoYXIzMj4gTWF0aE1MVG9rZW5FbGVtZW50Ojpjb252
ZXJ0VG9TaW5nbGVDb2RlUG9pbnQoU3RyaW5nVmlldyBzdHJpbmcKICAgICBhdXRvIGNvZGVQb2lu
dHMgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoc3RyaW5nKS5jb2RlUG9pbnRz
KCk7CiAgICAgYXV0byBpdGVyYXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBpZiAoaXRl
cmF0b3IgPT0gY29kZVBvaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxVQ2hhcjMyPiBjaGFy
YWN0ZXIgPSAqaXRlcmF0b3I7CiAgICAgKytpdGVyYXRvcjsKLSAgICByZXR1cm4gaXRlcmF0b3Ig
PT0gY29kZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gaXRlcmF0b3IgPT0gY29kZVBvaW50cy5lbmQoKSA/IGNoYXJhY3RlciA6IHN0ZDo6bnVsbG9w
dDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVy
T3ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVs
ZW1lbnQuY3BwCmluZGV4IDUzOWZiZDg1Y2Y4NmFhZjcyM2VlZWZiMDczYzdmZTBkOWEwZmUyNzgu
LjA0ZmIwMTI3OTNkZjFmZWNiYzY0NmIzZjIyN2M4ODhiOWJjMGFmY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTYxLDkgKzYx
LDkgQEAgY29uc3QgTWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxVbmRlck92ZXJF
bGVtZW50OjphY2NlbnRVbmRlcigpCiB2b2lkIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IGFjY2VudEF0dHIpCi0gICAgICAgIG1fYWNjZW50ID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX2FjY2VudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNl
IGlmIChuYW1lID09IGFjY2VudHVuZGVyQXR0cikKLSAgICAgICAgbV9hY2NlbnRVbmRlciA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgbV9hY2NlbnRVbmRlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IGI2ZDkxYTgzMzE3ZTIyMmM5YzJiMTdiMTY4YzMwNjg4
OWQ0NjZiMTMuLjZlYjc1NmVhZmU4NDE3ZTljNzEzMWRjYTg3ZGUzN2I4Y2I5YzVjNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBydW5PcGVuUGFuZWwoRnJhbWUmLCBGaWxlQ2hvb3NlciYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NoYXJlU2hlZXQoU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFj
ayhmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29u
dGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxW
ZWN0b3I8Q29udGFjdEluZm8+PiYmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IENvbnRhY3Rz
UmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8VmVjdG9y
PENvbnRhY3RJbmZvPj4mJik+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsg
fQogICAgIAogICAgIC8vIEFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIGxvYWQgYW4gaWNvbiBmb3Ig
c3BlY2lmaWVkIGZpbGVuYW1lcy4KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyJikgPSAwOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlz
aWJsZUluUmVjdChjb25zdCBJbnRSZWN0JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlY29tbWVu
ZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoU2Nyb2xsYmFyU3R5bGUpIHsgfQogCi0gICAgdmly
dHVhbCBPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9u
YWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUo
KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKGJvb2wgaGFzSGFuZGxlcnMpID0gMDsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCAxOWUyN2EwMjJhNTcxOGFlZDQyOGYzZGFiMGE0NmI5
ZjBmYzUyZmQ0Li5lODQ5YWJkNTBmMDVlMjkwMDVjNDhlNDEwOGRiZTZhNDg0ODg0N2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTgxLDEwICs4MSwxMCBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBDbGllbnRPcmlnaW46
OmRlY29kZShEZWNvZAogICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gY2xpZW50T3Jp
Z2luOwogICAgIGRlY29kZXIgPj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luIHx8IHRv
cE9yaWdpbi0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGRlY29kZXIgPj4gY2xpZW50T3JpZ2luOwogICAg
IGlmICghY2xpZW50T3JpZ2luIHx8IGNsaWVudE9yaWdpbi0+aXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIENsaWVudE9yaWdpbiB7IFdURk1vdmUoKnRvcE9yaWdpbiksIFdURk1vdmUoKmNsaWVu
dE9yaWdpbikgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCAwZGY3
ZDliNjEwNzc3YzY0ZGRhNzVhYTAyNjJmNzQ5MmJhMDBhOTIxLi43NDIxNDkzZTQyZGEzODdlM2Ey
NTQzNWQ0MWYzNzRjYzM1ZmQzYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3Bw
CkBAIC02OCwxMiArNjgsMTIgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IERPTVNlbGVjdGlvbjo6
cmFuZ2UoKSBjb25zdAogewogICAgIGF1dG8gZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgYXV0byByYW5nZSA9IGZyYW1lLT5zZXR0aW5ncygpLmxpdmVSYW5n
ZVNlbGVjdGlvbkVuYWJsZWQoKQogICAgICAgICA/IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5yYW5nZSgpCiAgICAgICAgIDogZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZp
cnN0UmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlIHx8IHJhbmdlLT5zdGFydC5jb250YWluZXItPmlz
SW5TaGFkb3dUcmVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
VGltZXIuY3BwCmluZGV4IDc1ZDVmMmVjN2U0MDI0MmJlNzliMjkwNjllNmM4MWNkZGJlZmJkODcu
Ljc2ZDJmZTdkOWIwNmU4OWFjM2Y1NTZjMTJkOGFiNDQ5MDViYjQ5ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4g
RE9NVGltZXI6OmFsaWduZWRGaXJlVGltZShNb25vdG9uaWNUaW1lIGZpcmVUaW1lKSBjb25zdAog
ewogICAgIFNlY29uZHMgYWxpZ25tZW50SW50ZXJ2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwobV9uZXN0aW5nTGV2ZWwgPj0gbWF4VGltZXJO
ZXN0aW5nTGV2ZWwpOwogICAgIGlmICghYWxpZ25tZW50SW50ZXJ2YWwpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSByYW5kb21pemVkUHJvcG9ydGlvbiA9IHJhbmRvbU51bWJlcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggZjgyMmE3Y2JiNmQyMmVmNWNjMDIz
NTIyYzBkYTQ1YTk5OTkwNjUxYi4uZjI2Y2U0M2JmM2VkMDI3YTk0ZjI2N2FhZThiNDIwZmI2MGU5
NmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzQ4LDEyICs3NDgsMTIgQEAg
dm9pZCBET01XaW5kb3c6OmZyZWV6ZU5vd1RpbWVzdGFtcCgpCiAKIHZvaWQgRE9NV2luZG93Ojp1
bmZyZWV6ZU5vd1RpbWVzdGFtcCgpCiB7Ci0gICAgbV9mcm96ZW5Ob3dUaW1lc3RhbXAgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9mcm96ZW5Ob3dUaW1lc3RhbXAgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyBET01XaW5kb3c6OmZyb3plbk5vd1RpbWVzdGFtcCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJvemVuTm93VGltZXN0YW1wLnZhbHVlT3Iobm93VGlt
ZXN0YW1wKCkpOworICAgIHJldHVybiBtX2Zyb3plbk5vd1RpbWVzdGFtcC52YWx1ZV9vcihub3dU
aW1lc3RhbXAoKSk7CiB9CiAKIExvY2F0aW9uJiBET01XaW5kb3c6OmxvY2F0aW9uKCkKQEAgLTkz
OSw3ICs5MzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplYwogICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciB1c2VyR2VzdHVyZUluZGljYXRvcih1c2VyR2VzdHVyZVRvRm9yd2FyZCk7CiAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoUG9zdE1lc3NhZ2Uo
ZnJhbWUsIHBvc3RNZXNzYWdlSWRlbnRpZmllcik7CiAKLSAgICAgICAgYXV0byBldmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgp
LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8g
bWFrZU9wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1By
b3h5KSkpIDogV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3Zl
KG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51
bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtl
X29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5
KSkpIDogc3RkOjpudWxsb3B0KTsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlKGZy
YW1lLCBwb3N0TWVzc2FnZUlkZW50aWZpZXIpOwpAQCAtMTcyNiw3ICsxNzI2LDcgQEAgdm9pZCBE
T01XaW5kb3c6OnNjcm9sbFRvKGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYgb3B0aW9ucywgU2Nyb2xs
Q2xhbXBpbmcgY2xhbXBpbmcKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGRvY3VtZW50
KCktPnNjcm9sbGluZ0VsZW1lbnQoKT8KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTA1OQotICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhT
Y3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlT3IoU2Nyb2xsQmVoYXZpb3I6
OkF1dG8pLCBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkgPyBBbmltYXRlZFNjcm9sbDo6
WWVzIDogQW5pbWF0ZWRTY3JvbGw6Ok5vOworICAgIGF1dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhT
Y3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2aW9y
OjpBdXRvKSwgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpID8gQW5pbWF0ZWRTY3JvbGw6
OlllcyA6IEFuaW1hdGVkU2Nyb2xsOjpObzsKICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uQ2hhbmdl
T3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGlj
V2l0aE9wdGlvbnMoY2xhbXBpbmcsIGFuaW1hdGVkLCBzbmFwUG9pbnRTZWxlY3Rpb25NZXRob2Qp
OwogICAgIHZpZXctPnNldENvbnRlbnRzU2Nyb2xsUG9zaXRpb24obGF5b3V0UG9zLCBzY3JvbGxQ
b3NpdGlvbkNoYW5nZU9wdGlvbnMpOwogfQpAQCAtMjE0NSw3ICsyMTQ1LDcgQEAgdm9pZCBET01X
aW5kb3c6OmZhaWxlZFRvUmVnaXN0ZXJEZXZpY2VNb3Rpb25FdmVudExpc3RlbmVyKCkKICAgICAg
ICAgZG9jdW1lbnQoKS0+cG9zdFRhc2soW10oYXV0byYgY29udGV4dCkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3co
KSkgewogICAgICAgICAgICAgICAgIGF1dG8gYWNjZWxlcmF0aW9uID0gRGV2aWNlTW90aW9uRGF0
YTo6QWNjZWxlcmF0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICB3aW5kb3ctPmRpc3Bh
dGNoRXZlbnQoRGV2aWNlTW90aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlbW90
aW9uRXZlbnQsIERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uY29weVJlZigp
LCBhY2NlbGVyYXRpb24uY29weVJlZigpLCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6
OmNyZWF0ZSgpLCBXVEY6Om51bGxvcHQpLnB0cigpKSk7CisgICAgICAgICAgICAgICAgd2luZG93
LT5kaXNwYXRjaEV2ZW50KERldmljZU1vdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRl
dmljZW1vdGlvbkV2ZW50LCBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoYWNjZWxlcmF0aW9uLmNv
cHlSZWYoKSwgYWNjZWxlcmF0aW9uLmNvcHlSZWYoKSwgRGV2aWNlTW90aW9uRGF0YTo6Um90YXRp
b25SYXRlOjpjcmVhdGUoKSwgc3RkOjpudWxsb3B0KS5wdHIoKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IDBhOTIxNWUxNGY2MmQ3OTQwMmRlODI0ZGRiZTkwOTA2MzdhZTQ0NGIuLjg4NjAwYTY1ZDk4
YzYyYjRkNzI5NTY3YmMzYzk4YWVlNThiNzhjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVy
Zm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmICgh
bV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuaXNFbXB0eSgpICYmIG1fZHJvcHBlZEltYWdlUGxh
Y2Vob2xkZXJSYW5nZSAmJiB0cnlUb1VwZGF0ZURyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhkcmFn
RGF0YSkpIHsKICAgICAgICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMuY2xlYXIoKTsKLSAg
ICAgICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICAgICAgY2xlYXJEcmFnQ2Fy
ZXQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTQsNyArMzE0LDcgQEAgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0
IERyYWdEYXRhJiBkcmEKICAgICBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBkcmFnRGF0
YS5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCk7CiAgICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzay5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklY
TUU6IFdoeSBub3QgY2FsbCBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG51bGxwdHIpPwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CkBAIC00NjEs
NyArNDYxLDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVu
dERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAgICAgICBtX251
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoIW1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlLT5z
ZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92ZXIgYSBmaWxlIGlu
cHV0IGVsZW1lbnQuIFRoZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQgaW50byB0aGUgdmll
dywKQEAgLTUwNyw3ICs1MDcsNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJv
bGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdAogICAgIH0KIAog
ICAgIGlmIChkb2N1bWVudCAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3Vt
ZW50PigqZG9jdW1lbnQpICYmICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1l
bnQtPmhhc0VkaXRhYmxlU3R5bGUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJh
Z0RhdGEpOwogfQogCkBAIC03MDAsNyArNzAwLDcgQEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVy
YXRpb24+IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPgog
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6
Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluaywgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09w
ZXJhdGlvbjo6UHJpdmF0ZSwgRHJhZ09wZXJhdGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlvbjo6RGVs
ZXRlIH0pKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKICAgICBpZiAoc291
cmNlT3BlcmF0aW9uTWFzay5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6TW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uOjpNb3ZlOwogICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb246OkdlbmVyaWMpKQpAQCAtNzMyLDcgKzczMiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERyYWdP
cGVyYXRpCiAgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQogICAgICAgICBv
cGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsK
ICAgICBlbHNlIGlmICghc291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNw
b25zZS5vcGVyYXRpb25NYXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3Bl
cmF0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KLSAgICAgICAgb3Bl
cmF0aW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBvcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7
CiAgICAgZWxzZQogICAgICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0
YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrLnZhbHVlKCkpOwogCkBAIC05NDAsNyArOTQwLDcg
QEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNl
LCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGkKIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdD
b250cm9sbGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKICAgICBpZiAo
IXNvdXJjZS52aWV3KCkgfHwgIXNvdXJjZS5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNv
bnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0
UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3RpdmUsIEhp
dFRlc3RSZXF1ZXN0OjpUeXBlOjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgYXV0byBo
aXRUZXN0UmVzdWx0ID0gc291cmNlLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50
KGxvY2F0aW9uLCBoaXRUeXBlKTsKQEAgLTk1MCw3ICs5NTAsNyBAQCBPcHRpb25hbDxIaXRUZXN0
UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYg
c291cmNlLAogICAgICAgICAvLyBUaGUgb3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0
IHVuZGVyIHRoZSBkcmFnIG9yaWdpbiBhbnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAv
LyBoaWRkZW4gb3IgbW92ZWQgb3V0IGZyb20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywg
d2UgZG9uJ3Qgd2FudCB0byBzdGFydCBhIGRyYWcgb24KICAgICAgICAgLy8gc29tZXRoaW5nIHRo
YXQncyBub3QgYWN0dWFsbHkgdW5kZXIgdGhlIGRyYWcgb3JpZ2luLgotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IHJldHVybiB7IGhpdFRlc3RSZXN1bHQgfTsKQEAgLTEzNzQsNyArMTM3NCw3IEBAIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBkcmFnTG9jLCBjb25zCiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnJlbW92ZUFsbERyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycygpCiB7Ci0gICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdl
ID0gV1RGOjpudWxsb3B0OworICAgIG1fZHJvcHBlZEltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IHN0
ZDo6bnVsbG9wdDsKICAgICBmb3IgKGF1dG8mIHBsYWNlaG9sZGVyIDogc3RkOjpleGNoYW5nZSht
X2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycywgeyB9KSkgewogICAgICAgICBpZiAocGxhY2Vob2xk
ZXItPmlzQ29ubmVjdGVkKCkpCiAgICAgICAgICAgICBwbGFjZWhvbGRlci0+cmVtb3ZlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggOTk0M2Y0YjMzN2RlZmRlMzUwYTA2
MzljNGNjZTBhNmNiZDQ3ODNmOS4uYmI2MTc2ZmU4MzU4ZDdjOWRhOGFkYTdlNGIxYTJjMmQwMjg4
NDA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTQxOCwxNCArMTQx
OCwxNCBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKEZyYW1lVmlldyYgdmlldywg
Y29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBibwogT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhh
bmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hp
ZnRLZXkpCiB7CiAgICAgaWYgKG1fcmVzaXplTGF5ZXIgJiYgbV9yZXNpemVMYXllci0+aW5SZXNp
emVNb2RlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1fZnJhbWUucGFnZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxF
KFBBTl9TQ1JPTExJTkcpCiAgICAgaWYgKG1fZnJhbWUubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkucGFuU2Nyb2xsSW5Qcm9ncmVzcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RlZEZyYW1lKG1fZnJhbWUpOwpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgT3B0aW9uYWw8Q3Vy
c29yPiBFdmVudEhhbmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGJvb2wgc2gKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwog
ICAgIGF1dG8qIHN0eWxlID0gcmVuZGVyZXIgPyAmcmVuZGVyZXItPnN0eWxlKCkgOiBudWxscHRy
OwpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgT3B0aW9uYWw8Q3Vyc29yPiBFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2gKICAgICAgICAg
Y2FzZSBTZXRDdXJzb3I6CiAgICAgICAgICAgICByZXR1cm4gb3ZlcnJpZGVDdXJzb3I7CiAgICAg
ICAgIGNhc2UgRG9Ob3RTZXRDdXJzb3I6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMjMwNSw3ICsyMzA1LDcgQEAgc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZl
cnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHIKICAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb246Ok1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsi
KQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6TGluazsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgY29u
dmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRp
b24+IG9wZXJhdGlvbikKQEAgLTIzNjcsNyArMjM2Nyw3IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1Rh
cmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZl
bnQoCiAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYg
KGFjY2VwdCAmJiAhZGF0YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCiAg
ICAgICAgIHJldHVybiB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb25N
YXNrKCkgfTsKLSAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVy
biB7IGFjY2VwdCwgc3RkOjpudWxsb3B0IH07CiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1Rhcmdl
dFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQpAQCAtMjg2OCw3ICsyODY4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVl
bEV2ZW50JiB3aGVlbEV2ZW50LCBPcHRpb24KIHsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCiAgICAgaWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVl
bFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9s
bEdlc3R1cmVTdGF0ZSA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PEV2
ZW50SGFuZGxpbmc+IGhhbmRsaW5nOwpAQCAtMzA2OCw3ICszMDY4LDcgQEAgT3B0aW9uYWw8V2hl
ZWxTY3JvbGxHZXN0dXJlU3RhdGU+IEV2ZW50SGFuZGxlcjo6dXBkYXRlV2hlZWxHZXN0dXJlU3Rh
dGUoY29uc3QgUGwKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdoZWVsRXZlbnQpOwogICAgIFVO
VVNFRF9QQVJBTShldmVudEhhbmRsaW5nKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCmluZGV4IGJmYmJhZGVhNzJlMTRjOWJjNzYwN2VhZTllM2UwM2Y5NTA5
ZjJiZDcuLmJlNzZlMWJkMjc3NTUxMzFkMDgzMTZmMmQzYmU5OWJjY2E2OGRjMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0
aWMgaW5saW5lIGludCBzaGFkb3dBZGp1c3RlZFRhYkluZGV4KEVsZW1lbnQmIGVsZW1lbnQsIEtl
eWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBpZiAoIWVsZW1lbnQudGFiSW5kZXhTZXRFeHBs
aWNpdGx5KCkpCiAgICAgICAgICAgICByZXR1cm4gMDsgLy8gVHJlYXQgYSBzaGFkb3cgaG9zdCB3
aXRob3V0IHRhYmluZGV4IGlmIGl0IGhhcyB0YWJpbmRleD0wIGV2ZW4gdGhvdWdoIEhUTUxFbGVt
ZW50Ojp0YWJJbmRleCByZXR1cm5zIC0xIG9uIHN1Y2ggYW4gZWxlbWVudC4KICAgICB9Ci0gICAg
cmV0dXJuIGVsZW1lbnQuc2hvdWxkQmVJZ25vcmVkSW5TZXF1ZW50aWFsRm9jdXNOYXZpZ2F0aW9u
KCkgPyAtMSA6IGVsZW1lbnQudGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVPcigwKTsKKyAg
ICByZXR1cm4gZWxlbWVudC5zaG91bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmlnYXRp
b24oKSA/IC0xIDogZWxlbWVudC50YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZV9vcigwKTsK
IH0KIAogRm9jdXNDb250cm9sbGVyOjpGb2N1c0NvbnRyb2xsZXIoUGFnZSYgcGFnZSwgT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CmluZGV4IDI0ZWFlYjNmMjVjODQzOGNiY2U3N2ZiZDcxZjc3NmI0YTRhYmJmYTcuLmUwZThjMzUy
ZDRkZjk5NjQ5OTQzN2NjZjI3N2RkNTgzNjY3MjlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBA
IC04NDcsNyArODQ3LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBv
aW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogCiAgICAgYXV0byBjb250YWluZXJUZXh0
ID0gcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJUZXh0KCk7CiAgICAgaWYgKCFj
b250YWluZXJUZXh0IHx8ICFjb250YWluZXJUZXh0LT5yZW5kZXJlcigpIHx8IGNvbnRhaW5lclRl
eHQtPnJlbmRlcmVyKCktPnN0eWxlKCkudXNlclNlbGVjdCgpID09IFVzZXJTZWxlY3Q6Ok5vbmUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoYXV0byBwcmV2aW91c0NoYXJhY3RlclJhbmdlID0gbWFrZVNpbXBsZVJh
bmdlKHBvc2l0aW9uLnByZXZpb3VzKCksIHBvc2l0aW9uKSkgewogICAgICAgICBpZiAoZWRpdG9y
KCkuZmlyc3RSZWN0Rm9yUmFuZ2UoKnByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UpLmNvbnRhaW5zKGZy
YW1lUG9pbnQpKQpAQCAtODU5LDcgKzg1OSw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFt
ZTo6cmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKICAgICAgICAgICAg
IHJldHVybiAqbmV4dENoYXJhY3RlclJhbmdlOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGcmFtZTo6Y3JlYXRl
Vmlldyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IE9wdGlvbmFsPENvbG9yPiYg
YmFja2dyb3VuZENvbG9yLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDg1NzYwODQz
Y2FlMzMyZjk1OThkZWM1MDU0ZmRjOTQ5NmJkYzU1ZGMuLjJmNGNlMTM2NjFjNzZhMGMzODkzOWYw
MWNkMjVkMjM5ZjdkODRiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzNSw4
ICsxMzUsOCBAQAogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCi0jZGVmaW5l
IFBBR0VfSUQgZnJhbWUoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkKLSNkZWZpbmUgRlJBTUVfSUQgZnJhbWUoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlk
ZW50aWZpZXIoKSkudG9VSW50NjQoKQorI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQorI2RlZmluZSBGUkFNRV9JRCBm
cmFtZSgpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQog
I2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoZnJhbWUoKS5wYWdlKCkgJiYgZnJhbWUoKS5wYWdlKCktPmlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAi
LCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQ
QUdFX0lELCBGUkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCB2b2lkIEZyYW1lVmll
dzo6c2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoT3B0aW9uYWw8TGF5b3V0UmVjdD4gcmVj
dCwgVHJpZ2dlcgogICAgIGlmIChvbGRSZWN0LmhlaWdodCgpICE9IGxheW91dFZpZXdwb3J0UmVj
dCgpLmhlaWdodCgpKQogICAgICAgICBsYXlvdXRUcmlnZ2VyaW5nID0gVHJpZ2dlckxheW91dE9y
Tm90OjpZZXM7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxu
RnJhbWVWaWV3ICIgPDwgdGhpcyA8PCAiIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkg
LSBjaGFuZ2luZyBvdmVycmlkZSBsYXlvdXQgdmlld3BvcnQgZnJvbSAiIDw8IG9sZFJlY3QgPDwg
IiB0byAiIDw8IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWVPcihMYXlvdXRSZWN0
KCkpIDw8ICIgbGF5b3V0VHJpZ2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09IFRyaWdn
ZXJMYXlvdXRPck5vdDo6WWVzID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhfU1RSRUFN
KFNjcm9sbGluZywgc3RyZWFtIDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlv
dXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdw
b3J0IGZyb20gIiA8PCBvbGRSZWN0IDw8ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0T3ZlcnJp
ZGVSZWN0LnZhbHVlX29yKExheW91dFJlY3QoKSkgPDwgIiBsYXlvdXRUcmlnZ2VyaW5nICIgPDwg
KGxheW91dFRyaWdnZXJpbmcgPT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMgPyAieWVzIiA6ICJu
byIpKTsKIAogICAgIGlmIChvbGRSZWN0ICE9IGxheW91dFZpZXdwb3J0UmVjdCgpICYmIGxheW91
dFRyaWdnZXJpbmcgPT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMpCiAgICAgICAgIHNldFZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzTmVlZExheW91dCgpOwpAQCAtMzAzNSw5ICszMDM1LDkgQEAg
dm9pZCBGcmFtZVZpZXc6OnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGJhY2tn
cm91bmRDb2xvcikKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCYWNrZ3JvdW5kUmVjdXJzaXZlbHko
Y29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAjaWYgSEFWRShPU19E
QVJLX01PREVfU1VQUE9SVCkKLSAgICBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dy
b3VuZENvbG9yLnZhbHVlT3IoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENT
U1ZhbHVlQXBwbGVTeXN0ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkp
OworICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVf
b3IoUmVuZGVyVGhlbWU6OnNpbmdsZXRvbigpLnN5c3RlbUNvbG9yKENTU1ZhbHVlQXBwbGVTeXN0
ZW1Db250cm9sQmFja2dyb3VuZCwgc3R5bGVDb2xvck9wdGlvbnMoKSkpOwogI2Vsc2UKLSAgICBD
b2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLnZhbHVlT3IoQ29sb3I6
OndoaXRlKTsKKyAgICBDb2xvciBiYXNlQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
LnZhbHVlX29yKENvbG9yOjp3aGl0ZSk7CiAjZW5kaWYKIAogICAgIGZvciAoYXV0byogZnJhbWUg
PSBtX2ZyYW1lLnB0cigpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dChtX2ZyYW1lLnB0cigpKSkgewpAQCAtNDkzMyw3ICs0OTMzLDcgQEAgSW50UG9pbnQgRnJhbWVW
aWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2lu
dCkgY29uc3QKIGZsb2F0IEZyYW1lVmlldzo6ZG9jdW1lbnRUb0Fic29sdXRlU2NhbGVGYWN0b3Io
T3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CiB7CiAgICAgLy8gSWYgZWZmZWN0
aXZlWm9vbSBpcyBwYXNzZWQsIGl0IGFscmVhZHkgZmFjdG9ycyBpbiBwYWdlWm9vbUZhY3Rvcigp
LiAKLSAgICByZXR1cm4gZWZmZWN0aXZlWm9vbS52YWx1ZU9yKGZyYW1lKCkucGFnZVpvb21GYWN0
b3IoKSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gZWZmZWN0aXZl
Wm9vbS52YWx1ZV9vcihmcmFtZSgpLnBhZ2Vab29tRmFjdG9yKCkpICogZnJhbWUoKS5mcmFtZVNj
YWxlRmFjdG9yKCk7CiB9CiAKIGZsb2F0IEZyYW1lVmlldzo6YWJzb2x1dGVUb0RvY3VtZW50U2Nh
bGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20pIGNvbnN0CkBAIC01NDk0LDcg
KzU0OTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6Y2xlYXJWaWV3cG9ydFNpemVPdmVycmlkZUZvckNT
U1ZpZXdwb3J0VW5pdHMoKQogICAgIGlmICghbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA9IFdURjo6bnVsbG9wdDsK
KyAgICBtX292ZXJyaWRlVmlld3BvcnRTaXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPnN0eWxl
U2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKIH0KQEAgLTU1MDYsMTIg
KzU1MDYsMTIgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoSW50U2l6ZSBzaXplKQogCiB2b2lkIEZyYW1lVmlldzo6b3ZlcnJpZGVWaWV3cG9ydFdp
ZHRoRm9yQ1NTVmlld3BvcnRVbml0cyhpbnQgd2lkdGgpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUg
PyBtX292ZXJyaWRlVmlld3BvcnRTaXplLT5oZWlnaHQgOiBXVEY6Om51bGxvcHQgfSk7CisgICAg
b3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHsgd2lkdGgsIG1fb3ZlcnJp
ZGVWaWV3cG9ydFNpemUgPyBtX292ZXJyaWRlVmlld3BvcnRTaXplLT5oZWlnaHQgOiBzdGQ6Om51
bGxvcHQgfSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpyZXNldE92ZXJyaWRkZW5WaWV3cG9ydFdp
ZHRoRm9yQ1NTVmlld3BvcnRVbml0cygpCiB7Ci0gICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzKHsgeyB9LCBtX292ZXJyaWRlVmlld3BvcnRTaXplID8gbV9vdmVycmlk
ZVZpZXdwb3J0U2l6ZS0+aGVpZ2h0IDogV1RGOjpudWxsb3B0IH0pOworICAgIG92ZXJyaWRlVmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyh7IHsgfSwgbV9vdmVycmlkZVZpZXdwb3J0U2l6
ZSA/IG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0K
IAogdm9pZCBGcmFtZVZpZXc6Om92ZXJyaWRlVmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0
cyhPdmVycmlkZVZpZXdwb3J0U2l6ZSBzaXplKQpAQCAtNTUzOCwxNiArNTUzOCwxNiBAQCBJbnRT
aXplIEZyYW1lVmlldzo6dmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0CiAK
ICAgICBpZiAodXNlRml4ZWRMYXlvdXQoKSkgewogICAgICAgICBhdXRvIGZpeGVkTGF5b3V0U2l6
ZSA9IHRoaXMtPmZpeGVkTGF5b3V0U2l6ZSgpOwotICAgICAgICB2aWV3cG9ydFNpemUud2lkdGgg
PSB2aWV3cG9ydFNpemUud2lkdGgudmFsdWVPcihmaXhlZExheW91dFNpemUud2lkdGgoKSk7Ci0g
ICAgICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSB2aWV3cG9ydFNpemUuaGVpZ2h0LnZhbHVlT3Io
Zml4ZWRMYXlvdXRTaXplLmhlaWdodCgpKTsKKyAgICAgICAgdmlld3BvcnRTaXplLndpZHRoID0g
dmlld3BvcnRTaXplLndpZHRoLnZhbHVlX29yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKKyAg
ICAgICAgdmlld3BvcnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVfb3Io
Zml4ZWRMYXlvdXRTaXplLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIHsgKnZpZXdwb3J0U2l6
ZS53aWR0aCwgKnZpZXdwb3J0U2l6ZS5oZWlnaHQgfTsKICAgICB9CiAgICAgCiAgICAgLy8gRklY
TUU6IHRoZSB2YWx1ZSByZXR1cm5lZCBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgdGhlIHZhbHVl
IG9mIHRoZSBvdmVyZmxvdwogICAgIC8vIHByb3BlcnR5IG9uIHRoZSByb290IGVsZW1lbnQuCiAg
ICAgYXV0byB2aXNpYmxlQ29udGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJzID0gdmlzaWJsZUNv
bnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKTsKLSAgICB2aWV3cG9ydFNpemUu
d2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGgudmFsdWVPcih2aXNpYmxlQ29udGVudFNpemVJbmNs
dWRpbmdTY3JvbGxiYXJzLndpZHRoKCkpOwotICAgIHZpZXdwb3J0U2l6ZS5oZWlnaHQgPSB2aWV3
cG9ydFNpemUuaGVpZ2h0LnZhbHVlT3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xs
YmFycy5oZWlnaHQoKSk7CisgICAgdmlld3BvcnRTaXplLndpZHRoID0gdmlld3BvcnRTaXplLndp
ZHRoLnZhbHVlX29yKHZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lkdGgo
KSk7CisgICAgdmlld3BvcnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVf
b3IodmlzaWJsZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy5oZWlnaHQoKSk7CiAgICAg
cmV0dXJuIHsgKnZpZXdwb3J0U2l6ZS53aWR0aCwgKnZpZXdwb3J0U2l6ZS5oZWlnaHQgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZjhlMDIxMTcwMDdjYzlmMDZlZGVjZTUxZmY3
OWY1ODA0ODVhMTdkMy4uMDJhOTA2OGM3YzM3MDFkMWZiMzNkM2Y1YzA4MzIyMmRmYWJhZjE5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00OTMsMTMgKzQ5MywxMyBAQCBwdWJsaWM6CiAg
ICAgRmxvYXRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBGbG9hdFBvaW50Jikg
Y29uc3QgZmluYWw7CiAgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0IGZpbmFsOwogCi0gICAgZmxvYXQgZG9jdW1lbnRUb0Fic29sdXRl
U2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBXVEY6Om51bGxvcHQp
IGNvbnN0OwotICAgIGZsb2F0IGFic29sdXRlVG9Eb2N1bWVudFNjYWxlRmFjdG9yKE9wdGlvbmFs
PGZsb2F0PiBlZmZlY3RpdmVab29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBmbG9hdCBk
b2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9v
bSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgZmxvYXQgYWJzb2x1dGVUb0RvY3VtZW50U2Nh
bGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9Eb2N1bWVudFJl
Y3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9w
dCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0ZVRvRG9jdW1l
bnRQb2ludChGbG9hdFBvaW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6
bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGFic29sdXRlVG9E
b2N1bWVudFJlY3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBhYnNvbHV0
ZVRvRG9jdW1lbnRQb2ludChGbG9hdFBvaW50LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9v
bSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUb0NsaWVu
dFJlY3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVs
bG9wdCkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGFic29sdXRlVG9DbGllbnRSZWN0KEZsb2F0UmVj
dCwgT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpvb20gPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owog
CiAgICAgRmxvYXRTaXplIGRvY3VtZW50VG9DbGllbnRPZmZzZXQoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFJlY3QgZG9jdW1lbnRUb0NsaWVudFJlY3QoRmxvYXRSZWN0KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDcw
OTM0NjdiMTJmODU2NjFhOGY3ZmFkZjAyYjM1Nzc5OTRlYjZhMDMuLjQzMDE4NDlkZDdkNmUxN2Q0
NzBmZmJhMTgwODZiMTQ0MzI5YTVkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxG
cmFtZUlkZW50aWZpZXIuaApAQCAtNTIsMTIgKzUyLDEyIEBAIE9wdGlvbmFsPEdsb2JhbEZyYW1l
SWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGRlY29kZXIgPj4g
cGFnZUlEOwogICAgIGlmICghcGFnZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEOwogICAgIGRlY29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKnBhZ2VJRCksIFdURk1vdmUoKmZyYW1lSUQp
IH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93SWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgK
aW5kZXggZjJiY2QwNTA0YTY5NTNhNTJiNjA1NzNhNzdjMDU3NTAyOTdkZjJjNC4uODYyOTM3MDU5
YTQzNGNmZDAxMTJjMjNhMjNiM2RjMDYwY2NjZjUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKQEAgLTcxLDEyICs3MSwxMiBAQCBPcHRpb25hbDxH
bG9iYWxXaW5kb3dJZGVudGlmaWVyPiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcgogICAgIE9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiBwcm9jZXNzSWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGlmICghcHJv
Y2Vzc0lkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXaW5kb3dJZGVudGlmaWVyPiB3aW5k
b3dJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gd2luZG93SWRlbnRpZmllcjsKICAgICBpZiAo
IXdpbmRvd0lkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKnByb2Nlc3NJ
ZGVudGlmaWVyKSwgV1RGTW92ZSgqd2luZG93SWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA5YmE1YWM4MWM0M2I0
NDViYjE2MWMxOTc0YTY2ZmM1NTUzZWI4YjQ4Li43MzFjYzA2YzljMTZhZDUwMjk5Zjc5ZmIyYTBi
NGI4MTZlMWRkMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlv
bk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2Vy
dmVyLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om9i
c2VydmUoRWxlbWVudCYgdGFyZ2V0KQogICAgIGlmICghdHJhY2tpbmdEb2N1bWVudCgpIHx8ICFt
X2NhbGxiYWNrIHx8IG1fb2JzZXJ2YXRpb25UYXJnZXRzLmNvbnRhaW5zKCZ0YXJnZXQpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB0YXJnZXQuZW5zdXJlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRh
KCkucmVnaXN0cmF0aW9ucy5hcHBlbmQoeyBtYWtlV2Vha1B0cih0aGlzKSwgV1RGOjpudWxsb3B0
IH0pOworICAgIHRhcmdldC5lbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKS5yZWdpc3Ry
YXRpb25zLmFwcGVuZCh7IG1ha2VXZWFrUHRyKHRoaXMpLCBzdGQ6Om51bGxvcHQgfSk7CiAgICAg
Ym9vbCBoYWRPYnNlcnZhdGlvblRhcmdldHMgPSBoYXNPYnNlcnZhdGlvblRhcmdldHMoKTsKICAg
ICBtX29ic2VydmF0aW9uVGFyZ2V0cy5hcHBlbmQoJnRhcmdldCk7CiAgICAgYXV0byogZG9jdW1l
bnQgPSB0cmFja2luZ0RvY3VtZW50KCk7CkBAIC0yNDAsMTggKzI0MCwxOCBAQCB2b2lkIEludGVy
c2VjdGlvbk9ic2VydmVyOjpyb290RGVzdHJveWVkKCkKIE9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcz4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2NhbGxiYWNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogY29udGV4dCA9IG1fY2FsbGJh
Y2stPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CiAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvY3Vt
ZW50LmRvbVdpbmRvdygpKQogICAgICAgICByZXR1cm4gd2luZG93LT5mcm96ZW5Ob3dUaW1lc3Rh
bXAoKTsKICAgICAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFwcGVuZFF1ZXVlZEVudHJ5
KFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiYmIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaAppbmRleCA5YWIyZTZh
NmRkYjBkZGU2MTg2ZTE1YTRmMzY4MzYyNTkyZjU0NTRhLi41NWVhMDJhY2VjZmM4MGU3ZWZkNjFm
NWJiYTlmNDA4YjA1ZGUzZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
Q29udHJvbHNDb250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
Q29udHJvbHNDb250ZXh0TWVudUl0ZW0uaApAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxNZWRp
YUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtPiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtOjpk
ZWNvZGUoRGVjbwogICAgIE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5h
bWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAKICAgICBERUNPREUoaWQsIElEKTsKICAg
ICBERUNPREUodGl0bGUsIFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXgg
YmI1ZjFmYzYwZmI0M2YzNzFiZWQ1OWFkYzBiYjdjYjk2NWNiYWViYS4uYzU0ODMzOTFkZWFjYmU2
ZjY4M2UyNGIyOTY4MzA3YzhkODBiM2RmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApA
QCAtMTEzLDEzICsxMTMsMTMgQEAgYm9vbCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiBzdGF0
aWMgT3B0aW9uYWw8VVJMPiBzaGFyZWFibGVVUkxGb3JTaGFyZURhdGEoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU2hhcmVEYXRhJiBkYXRhKQogewogICAgIGlmIChkYXRh
LnVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTChk
YXRhLnVybCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghdXJsLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNjFkZDg2MDU4ZTdhMWU3MjMwZWRk
Njc4NmNlODRlMTQzNGZjY2RiZS4uOTliYTM5MjZjNGFiZTg3ZjZhNDBjMWRkMjlmNmNhYTg4NTRj
NmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC02NzEsNyArNjcxLDcgQEAgaW5saW5lIE9wdGlv
bmFsPHN0ZDo6cGFpcjxNZWRpYUNhblN0YXJ0TGlzdGVuZXImLCBEb2N1bWVudCY+PiAgUGFnZTo6
dGFrZUFueU1lZGkKICAgICAgICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpKQogICAg
ICAgICAgICAgcmV0dXJuIHsgeyAqbGlzdGVuZXIsICpmcmFtZS0+ZG9jdW1lbnQoKSB9IH07CiAg
ICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBQYWdlOjpzZXRDYW5TdGFydE1lZGlhKGJvb2wgY2FuU3RhcnRNZWRpYSkKQEAg
LTc3NiwxNiArNzc2LDE2IEBAIGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiBPcHRpb25hbDxTaW1w
bGVSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByZWZlcmVuY2VSYW5nZSwgRmluZE9wdGlvbnMgb3B0aW9u
cykKIHsKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChyZWZlcmVuY2VS
YW5nZSAmJiByZWZlcmVuY2VSYW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5wYWdlKCkgIT0gdGhpcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIENhbldyYXAgY2FuV3JhcCA9IG9wdGlvbnMuY29udGFpbnMoV3JhcEFyb3VuZCkg
PyBDYW5XcmFwOjpZZXMgOiBDYW5XcmFwOjpObzsKICAgICBGcmFtZSogZnJhbWUgPSByZWZlcmVu
Y2VSYW5nZSA/IHJlZmVyZW5jZVJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmZyYW1lKCkgOiAmbWFp
bkZyYW1lKCk7CiAgICAgRnJhbWUqIHN0YXJ0RnJhbWUgPSBmcmFtZTsKICAgICBkbyB7Ci0gICAg
ICAgIGlmIChhdXRvIHJlc3VsdFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLnJhbmdlT2ZTdHJpbmco
dGFyZ2V0LCBmcmFtZSA9PSBzdGFydEZyYW1lID8gcmVmZXJlbmNlUmFuZ2UgOiBXVEY6Om51bGxv
cHQsIG9wdGlvbnMgLSBXcmFwQXJvdW5kKSkKKyAgICAgICAgaWYgKGF1dG8gcmVzdWx0UmFuZ2Ug
PSBmcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1lID09IHN0YXJ0RnJh
bWUgPyByZWZlcmVuY2VSYW5nZSA6IHN0ZDo6bnVsbG9wdCwgb3B0aW9ucyAtIFdyYXBBcm91bmQp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlOwogICAgICAgICBmcmFtZSA9IGluY3Jl
bWVudEZyYW1lKGZyYW1lLCAhb3B0aW9ucy5jb250YWlucyhCYWNrd2FyZHMpLCBjYW5XcmFwKTsK
ICAgICB9IHdoaWxlIChmcmFtZSAmJiBmcmFtZSAhPSBzdGFydEZyYW1lKTsKQEAgLTc5Nyw3ICs3
OTcsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gUGFnZTo6cmFuZ2VPZlN0cmluZyhjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgT3B0aW9uYWw8UwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dFJhbmdlOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogdW5zaWduZWQgUGFnZTo6ZmluZE1hdGNoZXNGb3JUZXh0KGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50LCBTaG91bGRIaWdobGlnaHRNYXRjaGVzIHNob3VsZEhpZ2hsaWdodE1hdGNoZXMsIFNob3Vs
ZE1hcmtNYXRjaGVzIHNob3VsZE1hcmtNYXRjaGVzKQpAQCAtODExLDcgKzgxMSw3IEBAIHVuc2ln
bmVkIFBhZ2U6OmZpbmRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zCiAgICAgZG8gewogICAgICAgICBpZiAoc2hvdWxkTWFya01hdGNo
ZXMgPT0gTWFya01hdGNoZXMpCiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0TWFya2Vk
VGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZChzaG91bGRIaWdobGlnaHRNYXRjaGVzID09IEhpZ2hs
aWdodE1hdGNoZXMpOwotICAgICAgICBtYXRjaENvdW50ICs9IGZyYW1lLT5lZGl0b3IoKS5jb3Vu
dE1hdGNoZXNGb3JUZXh0KHRhcmdldCwgV1RGOjpudWxsb3B0LCBvcHRpb25zLCBtYXhNYXRjaENv
dW50ID8gKG1heE1hdGNoQ291bnQgLSBtYXRjaENvdW50KSA6IDAsIHNob3VsZE1hcmtNYXRjaGVz
ID09IE1hcmtNYXRjaGVzLCBudWxscHRyKTsKKyAgICAgICAgbWF0Y2hDb3VudCArPSBmcmFtZS0+
ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0YXJnZXQsIHN0ZDo6bnVsbG9wdCwgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCA/IChtYXhNYXRjaENvdW50IC0gbWF0Y2hDb3VudCkgOiAwLCBzaG91
bGRNYXJrTWF0Y2hlcyA9PSBNYXJrTWF0Y2hlcywgbnVsbHB0cik7CiAgICAgICAgIGZyYW1lID0g
aW5jcmVtZW50RnJhbWUoZnJhbWUsIHRydWUsIENhbldyYXA6Ok5vKTsKICAgICB9IHdoaWxlIChm
cmFtZSk7CiAKQEAgLTEyNjksNyArMTI2OSw3IEBAIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgp
CiAjZW5kaWYKIAogI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAgc2V0VXNlRGFy
a0FwcGVhcmFuY2VPdmVycmlkZShXVEY6Om51bGxvcHQpOworICAgIHNldFVzZURhcmtBcHBlYXJh
bmNlT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAgICAgcmVzZXRTZWVuUGx1Z2lu
cygpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0
aW9uQ2hhbmdlZCgpCiAKICAgICBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCA9IGZhbHNlOwogICAg
IG1fdXNlclN0eWxlU2hlZXQgPSBTdHJpbmcoKTsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZp
Y2F0aW9uVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0
aW9uVGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1l
bmNvZGVkIFVURi04IHN0eWxlIHNoZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVt
CiAgICAgLy8gc3luY2hyb25vdXNseSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMjM5
Myw3ICsyMzkzLDcgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc2libGVJbnRlcm5hbChib29sIGlzVmlz
aWJsZSkKIAogICAgICAgICBpZiAobV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSkgewogICAg
ICAgICAgICAgbG9nTmF2aWdhdGlvbihtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlLnZhbHVl
KCkpOwotICAgICAgICAgICAgbV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1NzYsNyArMjU3Niw3IEBAIENvbG9yIFBh
Z2U6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKIENvbG9yIFBhZ2U6OnNh
bXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9w
Q29sb3IudmFsdWVPcihDb2xvcigpKTsKKyAgICByZXR1cm4gbV9zYW1wbGVkUGFnZVRvcENvbG9y
LnZhbHVlX29yKENvbG9yKCkpOwogfQogCiB2b2lkIFBhZ2U6OnNldFVuZGVyUGFnZUJhY2tncm91
bmRDb2xvck92ZXJyaWRlKENvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUp
CkBAIC0yODgxLDcgKzI4ODEsNyBAQCB2b2lkIFBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKGNv
bnN0IFVSTCYgZGVzdGluYXRpb25VUkwsIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBsb2dOYXZpZ2F0aW9uKG5hdmlnYXRpb24pOwogfQogCkBAIC0zMzAzLDcgKzMzMDMsNyBA
QCB2b2lkIFBhZ2U6OmRpZENoYW5nZU1haW5Eb2N1bWVudCgpCiAgICAgbV9wb2ludGVyQ2FwdHVy
ZUNvbnRyb2xsZXItPnJlc2V0KCk7CiAKICAgICBpZiAobV9zYW1wbGVkUGFnZVRvcENvbG9yKSB7
Ci0gICAgICAgIG1fc2FtcGxlZFBhZ2VUb3BDb2xvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
bV9zYW1wbGVkUGFnZVRvcENvbG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICBjaHJvbWUoKS5j
bGllbnQoKS5zYW1wbGVkUGFnZVRvcENvbG9yQ2hhbmdlZCgpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCmluZGV4IDFiMjI4YzY2NjA0MTkwMTZhNzA0
NTI0YWI0NzljNDk3YjA2ZjZkYWUuLjFlNTA5YWE0MDNiZGVlNTZmYzM0OGI3MWQyODhhODg5NjBl
ZGIyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcApAQCAtOTcs
MTYgKzk3LDE2IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcihEb2N1
bWVudCYgZG9jdW1lbnQsIEludFBvaW50JiYgbG9jYXRpb24pCiAgICAgLy8gRklYTUU6IDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMjUxNjc+IChTYW1wbGVkIFBhZ2UgVG9wIENvbG9yOiBob29rIGlu
dG8gcGFpbnRpbmcgbG9naWMgaW5zdGVhZCBvZiB0YWtpbmcgc25hcHNob3RzKQogCiAgICAgaWYg
KCFpc1ZhbGlkU2FtcGxlTG9jYXRpb24oZG9jdW1lbnQsIGxvY2F0aW9uKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFT
U0VSVChkb2N1bWVudC52aWV3KCkpOwogICAgIGF1dG8gc25hcHNob3QgPSBzbmFwc2hvdEZyYW1l
UmVjdChkb2N1bWVudC52aWV3KCktPmZyYW1lKCksIEludFJlY3QobG9jYXRpb24sIEludFNpemUo
MSwgMSkpLCBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nIHwgU25h
cHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uKTsKICAgICBpZiAo
IXNuYXBzaG90KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhl
bEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwgc25h
cHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEFTU0VSVChwaXhlbEJ1ZmZlci0+ZGF0YSgpLmxlbmd0aCgpID49IDQpOwogCkBAIC0xMzksNyAr
MTM5LDcgQEAgc3RhdGljIExhYjxmbG9hdD4gYXZlcmFnZUNvbG9yKExhYjxmbG9hdD4gY29sb3Jz
W10sIHNpemVfdCBjb3VudCkKIAogT3B0aW9uYWw8Q29sb3I+IFBhZ2VDb2xvclNhbXBsZXI6OnNh
bXBsZVRvcChQYWdlJiBwYWdlKQogewotICAgIC8vIElmIGBXVEY6Om51bGxvcHRgIGlzIHJldHVy
bmVkIHRoZW4gdGhhdCBtZWFucyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0aGUg
YFBhZ2VgIGlzIG5vdCByZWFkeSB5ZXQpLgorICAgIC8vIElmIGBzdGQ6Om51bGxvcHRgIGlzIHJl
dHVybmVkIHRoZW4gdGhhdCBtZWFucyB0aGF0IG5vIHNhbXBsZXMgd2VyZSB0YWtlbiAoaS5lLiB0
aGUgYFBhZ2VgIGlzIG5vdCByZWFkeSB5ZXQpLgogICAgIC8vIElmIGFuIGludmFsaWQgYENvbG9y
YCBpcyByZXR1cm5lZCB0aGVuIHRoYXQgbWVhbnMgdGhhdCBzYW1wbGVzIFdlcmUgdGFrZW4gYnV0
IHRoZXkgd2VyZSB0b28gZGlmZmVyZW50LgogCiAgICAgYXV0byBtYXhEaWZmZXJlbmNlID0gcGFn
ZS5zZXR0aW5ncygpLnNhbXBsZWRQYWdlVG9wQ29sb3JNYXhEaWZmZXJlbmNlKCk7CkBAIC0xNTAs
MTkgKzE1MCwxOSBAQCBPcHRpb25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9w
KFBhZ2UmIHBhZ2UpCiAKICAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIocGFnZS5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKTsKICAgICBpZiAoIW1haW5Eb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gZnJhbWVWaWV3ID0gbWFrZVJlZlB0cihwYWdlLm1haW5GcmFtZSgpLnZpZXcoKSk7CiAg
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBEb24ndCB0YWtlIHNhbXBsZXMgaWYgdGhl
IGxheWVyIHRyZWUgaXMgc3RpbGwgZnJvemVuLgogICAgIGlmIChmcmFtZVZpZXctPm5lZWRzTGF5
b3V0KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBEb24ndCBhdHRlbXB0IHRvIGhpdCB0ZXN0IG9yIHNhbXBsZSBp
ZiB3ZSBkb24ndCBoYXZlIGFueSBjb250ZW50IHlldC4KICAgICBpZiAoIWZyYW1lVmlldy0+aXNW
aXN1YWxseU5vbkVtcHR5KCkgfHwgIWZyYW1lVmlldy0+aGFzQ29udGVudGZ1bERlc2NlbmRhbnRz
KCkgfHwgIUNvbnRlbnRmdWxQYWludENoZWNrZXI6OnF1YWxpZmllc0ZvckNvbnRlbnRmdWxQYWlu
dCgqZnJhbWVWaWV3KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIERlY3JlYXNlIHRoZSB3aWR0aCBieSBvbmUgcGl4
ZWwgc28gdGhhdCB0aGUgbGFzdCBzYW1wbGUgaXMgd2l0aGluIGJvdW5kcyBhbmQgbm90IG9mZi1i
eS1vbmUuCiAgICAgYXV0byBmcmFtZVdpZHRoID0gZnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCkg
LSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCA0NzM3
Y2RhYTg1MDU3OTViZGNkM2RmZTE2ODJkNzkzZGE4ZTQ2ZWI5Li4zYzJhYzgzZmVmZjMyODRjY2Iy
NmZmY2MyN2RkMTZlOWE0MGQxMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xl
Q2xpZW50LmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHNu
YXBzaG90Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBDYW52YXNSCiAg
ICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCkuc3RyaW5nOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3Jl
ZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZjxTY3Jp
cHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgUmVmCiAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IFdlYkNvcmU6
OnNuYXBzaG90Tm9kZShtX3BhZ2UubWFpbkZyYW1lKCksICpub2RlKTsKIAogICAgICAgICAgICAg
ICAgICAgICBpZiAoc25hcHNob3QpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
c25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBzbmFw
c2hvdC0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChhdXRvKiBpbWFnZURhdGEgPSBKU0ltYWdlRGF0YTo6dG9XcmFwcGVkKHZtLCBw
b3NzaWJsZVRhcmdldCkpIHsKQEAgLTM3MSwxNCArMzcxLDE0IEBAIHZvaWQgUGFnZUNvbnNvbGVD
bGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgUmVmCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNvdXJjZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXpl
KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdl
RGF0YS0+cGl4ZWxCdWZmZXIoKSwgc291cmNlUmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9w
dCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogaW1hZ2VCaXRtYXAgPSBKU0ltYWdlQml0bWFwOjp0
b1dyYXBwZWQodm0sIHBvc3NpYmxlVGFyZ2V0KSkgewogICAgICAgICAgICAgdGFyZ2V0ID0gcG9z
c2libGVUYXJnZXQ7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpoYXNGcm9udGVuZHMoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byogaW1h
Z2VCdWZmZXIgPSBpbWFnZUJpdG1hcC0+YnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgICAgIGRh
dGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9w
dCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOworICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChhdXRvKiBjb250ZXh0ID0gY2FudmFzUmVuZGVyaW5nQ29udGV4dCh2bSwgcG9zc2libGVUYXJn
ZXQpKSB7CiAgICAgICAgICAgICBhdXRvJiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXNCYXNlKCk7
CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAg
IC8vIElmIG5vIHRhcmdldCBpcyBwcm92aWRlZCwgY2FwdHVyZSBhbiBpbWFnZSBvZiB0aGUgdmll
d3BvcnQuCiAgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludDo6emVybygpLCBt
X3BhZ2UubWFpbkZyYW1lKCkudmlldygpLT5zaXplRm9yVmlzaWJsZUNvbnRlbnQoKSk7CiAgICAg
ICAgICAgICBpZiAoYXV0byBzbmFwc2hvdCA9IFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0KG1f
cGFnZS5tYWluRnJhbWUoKSwgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGlu
YXRlcykpCi0gICAgICAgICAgICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CisgICAg
ICAgICAgICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywg
c3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoZGF0YVVSTC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VQ
YXN0ZWJvYXJkQ29udGV4dC5oCmluZGV4IGExMGM2MzZlZmRmMjMyNzE0ZTgzZDJjZmRjYjBhZjY0
YWI2NGFlZjcuLjRlYjRiZDYyYTBhMzY5NWM2NmM1NTMwMTFlMmExMDZkMWQ3MThmMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaApAQCAtMzUsNyArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQYWdlUGFzdGVib2FyZENvbnRleHQgZmlu
YWwgOiBwdWJsaWMgUGFzdGVib2FyZENvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dChPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4mJiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpCisgICAgUGFnZVBhc3RlYm9hcmRDb250
ZXh0KE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAg
ICAgICAgOiBQYXN0ZWJvYXJkQ29udGV4dCgpCiAgICAgICAgICwgbV9wYWdlSUQoV1RGTW92ZShw
YWdlSUQpKQogICAgIHsKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAgflBhZ2VQYXN0
ZWJvYXJkQ29udGV4dCgpIHsgfQogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4gY3JlYXRlKE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9IFdU
Rjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0
PiBjcmVhdGUoT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFnZVBhc3RlYm9hcmRDb250ZXh0
PihXVEZNb3ZlKHBhZ2VJRCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
RW50cnkuY3BwCmluZGV4IGRiNTg2ZjMyZmIzYjA1NmEzNGFlMDFhMDlhZThhNmQyNmZhOTM4M2Eu
LmRlNzg2NzZkYjg5YTg2NDM4ZGM2MzY4MjI3ZWI3OWFmNjJiZGUzYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5LmNwcApAQCAtNjUsNyArNjUsNyBAQCBPcHRpb25hbDxQ
ZXJmb3JtYW5jZUVudHJ5OjpUeXBlPiBQZXJmb3JtYW5jZUVudHJ5OjpwYXJzZUVudHJ5VHlwZVN0
cmluZyhjb25zdCBTdAogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFR5cGU+KFR5cGU6OlBh
aW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcAppbmRleCBjNjg0OTQ1YTgwZTA0MGE2N2Y0MTMwMjg3
NDIwNjcxODE3NGNkZmQwLi4xZDVlY2ViYTU3Y2U0ZTI2YTQzZjQwZTBiY2U3NmUzYmZiOTA0N2E3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBQZXJmb3JtYW5jZUxvZ2dpbmc6OmRpZFJlYWNoUG9pbnRPZkludGVy
ZXN0KFBvaW50T2ZJbnRlcmVzdCBwb2kpCiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFBl
cmZvcm1hbmNlTG9nZ2luZzo6Z2V0UGxhdGZvcm1NZW1vcnlVc2FnZVN0YXRpc3RpY3MoSGFzaE1h
cDxjb25zdCBjaGFyKiwgc2l6ZV90PiYpIHsgfQotT3B0aW9uYWw8dWludDY0X3Q+IFBlcmZvcm1h
bmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
K09wdGlvbmFsPHVpbnQ2NF90PiBQZXJmb3JtYW5jZUxvZ2dpbmc6OnBoeXNpY2FsRm9vdHByaW50
KCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCmluZGV4IDg5ODYyMjRjYzNlOTlhMjg5MTUzYzUy
ZDY5NjRhMDc3YzhjZTkxMTEuLjBhNmQyMDM5OWE3NjIyZWZkMmU5NjVhNDgzNDY1NjlhODQzMWZk
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgUGVyZm9ybWFuY2VNb25pdG9yOjpQZXJmb3JtYW5jZU1vbml0b3IoUGFnZSYg
cGFnZSkKIAogdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkKIHsKLSAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc3RM
b2FkQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGlt
ZXIuc3RvcCgpOwogICAgIG1fcG9zdFBhZ2VMb2FkTWVtb3J5VXNhZ2VUaW1lci5zdG9wKCk7CiB9
CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjpkaWRGaW5pc2hMb2Fk
KCkKIHsKICAgICAvLyBPbmx5IGRvIHBvc3QtbG9hZCBDUFUgdXNhZ2UgbWVhc3VyZW1lbnQgaWYg
dGhlcmUgaXMgYSBzaW5nbGUgUGFnZSBpbiB0aGUgcHJvY2VzcyBpbiBvcmRlciB0byByZWR1Y2Ug
bm9pc2UuCiAgICAgaWYgKG1fcGFnZS5zZXR0aW5ncygpLmlzUG9zdExvYWRDUFVVc2FnZU1lYXN1
cmVtZW50RW5hYmxlZCgpICYmIG1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKSB7Ci0gICAg
ICAgIG1fcG9zdExvYWRDUFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RMb2Fk
Q1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9wb3N0UGFnZUxvYWRDUFVVc2FnZVRp
bWVyLnN0YXJ0T25lU2hvdChjcHVVc2FnZU1lYXN1cmVtZW50RGVsYXkpOwogICAgIH0KIApAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjphY3Rpdml0eVN0YXRlQ2hh
bmdlZChPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gb2xkCiAKICAgICAvLyBNZWFzdXJl
IENQVSB1c2FnZSBvZiBwYWdlcyB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciB2aXNpYmxlLgogICAg
IGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5pc1Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVXNhZ2VNZWFzdXJl
bWVudEVuYWJsZWQoKSAmJiB2aXNpYmlsaXR5Q2hhbmdlZCkgewotICAgICAgICBtX3Bvc3RCYWNr
Z3JvdW5kaW5nQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0QmFja2dyb3Vu
ZGluZ0NQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChuZXdTdGF0ZSAmIEFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSkKICAgICAgICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVV
c2FnZVRpbWVyLnN0b3AoKTsKICAgICAgICAgZWxzZSBpZiAobV9wYWdlLmlzT25seU5vblV0aWxp
dHlQYWdlKCkpCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQ
b3N0TG9hZFJlc291cmNlVGhyZXNob2xkKFBhZ2UmIHBhZ2UsIFJlcG9ydGluZ1JlYXNvbgogdm9p
ZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVQb3N0TG9hZENQVVVzYWdlKCkKIHsKICAgICBp
ZiAoIW1fcGFnZS5pc09ubHlOb25VdGlsaXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcG9zdExvYWRD
UFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RMb2FkQ1BVVGltZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI2LDcgKzIyNiw3IEBAIHZv
aWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdNZW1vcnlVc2Fn
ZSgpCiB2b2lkIFBlcmZvcm1hbmNlTW9uaXRvcjo6bWVhc3VyZVBvc3RCYWNrZ3JvdW5kaW5nQ1BV
VXNhZ2UoKQogewogICAgIGlmICghbV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpIHsKLSAg
ICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBzdHJpbmdGb3JDUFVTYW1wbGluZ0FjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUZvckNQVVMK
IHZvaWQgUGVyZm9ybWFuY2VNb25pdG9yOjptZWFzdXJlQ1BVVXNhZ2VJbkFjdGl2aXR5U3RhdGUo
QWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nIGFjdGl2aXR5U3RhdGUpCiB7CiAgICAgaWYgKCFt
X3BhZ2UuaXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSkgewotICAgICAgICBtX3BlckFjdGl2aXR5U3Rh
dGVDUFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVU
aW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODIsNyAr
MjgyLDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGwKIAogICAgIE9wdGlvbmFsPENQVVRpbWU+
IGNwdVRpbWUgPSBDUFVUaW1lOjpnZXQoKTsKICAgICBpZiAoIWNwdVRpbWUpIHsKLSAgICAgICAg
bV9wZXJBY3Rpdml0eVN0YXRlQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wZXJB
Y3Rpdml0eVN0YXRlQ1BVVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRp
b25UaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGlt
aW5nLmgKaW5kZXggNzNjMGY3YWRlY2MwYzQ2MWU2YmM4Nzg0YjhiMzJhNWQxYWNjYzE3Zi4uYjBl
NjIyNjUzODFiZmMzYmUyNDkxNWY1NDM0MjIxZmFiYjE1Y2JhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCkBAIC03MSw3ICs3MSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nKE1v
bm90b25pY1RpbWUgdGltZU9yaWdpbiwgQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBMb2FkVGltaW5n
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgY29uc3QgRG9jdW1lbnRUaW1pbmcmLCBjb25z
dCBTZWN1cml0eU9yaWdpbiYsIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlKTsKIAotICAgIGRvdWJs
ZSBtaWxsaXNlY29uZHNTaW5jZU9yaWdpbihNb25vdG9uaWNUaW1lLCBPcHRpb25hbDxNb25vdG9u
aWNUaW1lPiB0aW1lT3JpZ2luID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBkb3VibGUgbWls
bGlzZWNvbmRzU2luY2VPcmlnaW4oTW9ub3RvbmljVGltZSwgT3B0aW9uYWw8TW9ub3RvbmljVGlt
ZT4gdGltZU9yaWdpbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgYm9vbCBzYW1lT3JpZ2lu
Q2hlY2tGYWlscygpIGNvbnN0OwogCiAgICAgRG9jdW1lbnRUaW1pbmcgbV9kb2N1bWVudFRpbWlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCmlu
ZGV4IGU5ZDMwYzdjMDY2MTgxNzdjYmFiMDRlMzViNzU3MzVkYzI5MWFkMWYuLjZiMmJjMWJkYjM4
YmUwNTQzZjIwZDUxZDIwMDk0NGIzZjU0N2Y2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91
Y2hFdmVudHNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJs
ZWQudmFsdWVPcihzY3JlZW5IYXNUb3VjaERldmljZSgpKTsKKyAgICByZXR1cm4gbV90b3VjaEV2
ZW50c0VuYWJsZWQudmFsdWVfb3Ioc2NyZWVuSGFzVG91Y2hEZXZpY2UoKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBmNDQ5ZmM3MGRmNTc4
OGVmZWQwYzhlZTRiNjNlMmE1NzkyYWY2MDlkLi42YjY5NmQ0YzBkYjM0OGIwODcxY2FhMzE5Zjll
OThkOTZhYzZhZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAt
MTgzLDcgKzE4Myw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwm
IHVybCkKICAgICBtX2RvbWFpbiA9IG1fZGF0YS5ob3N0OwogCiAgICAgaWYgKG1fZGF0YS5wb3J0
ICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fZGF0YS5wb3J0LnZhbHVlKCksIG1f
ZGF0YS5wcm90b2NvbCkpCi0gICAgICAgIG1fZGF0YS5wb3J0ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2RhdGEucG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG9u
bHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBt
X2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB9CiAKIFNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbigpCi0gICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygp
LCBlbXB0eVN0cmluZygpLCBXVEY6Om51bGxvcHQgfQorICAgIDogbV9kYXRhIHsgZW1wdHlTdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSwgc3RkOjpudWxsb3B0IH0KICAgICAsIG1fZG9tYWluIHsgZW1w
dHlTdHJpbmcoKSB9CiAgICAgLCBtX2lzVW5pcXVlIHsgdHJ1ZSB9CiAgICAgLCBtX2lzUG90ZW50
aWFsbHlUcnVzdHdvcnRoeSB7IGZhbHNlIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcAppbmRleCBlZWQzYTMyMGYzMjc5NzY3ZjNjN2Q5N2VmYTI0NTdjMzNiNWM1
ZWZhLi5hMDBkYWM0NzkwZWUyZTk1NWFlMmZlMmNmYzY1ZjBhNDBkYTgzNmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFN0
cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJvdG9jb2wsICJmaWxlIikpCiAgICAgICAgIHJl
dHVybiAiZmlsZV9fMCJfczsKIAotICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBh
cmF0b3JDaGFyYWN0ZXIsIHBvcnQudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
cHJvdG9jb2wsIHNlcGFyYXRvckNoYXJhY3RlciwgRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5h
bWUoaG9zdCksIHNlcGFyYXRvckNoYXJhY3RlciwgcG9ydC52YWx1ZV9vcigwKSk7CiB9CiAKIE9w
dGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQpAQCAtODYsMTcg
Kzg2LDE3IEBAIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0CiAgICAgLy8gTWFrZSBzdXJlIHRoZXJl
J3MgYSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRl
bnRpZmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0g
bm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2Vw
YXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJz
ZUZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICAvLyBFbnN1cmUgdGhlcmUgd2VyZSBhdCBsZWFzdCAyIHNlcGFyYXRv
ciBjaGFyYWN0ZXJzLiBTb21lIGhvc3RuYW1lcyBvbiBpbnRyYW5ldHMgaGF2ZQogICAgIC8vIHVu
ZGVyc2NvcmVzIGluIHRoZW0sIHNvIHdlJ2xsIGFzc3VtZSB0aGF0IGFueSBhZGRpdGlvbmFsIHVu
ZGVyc2NvcmVzIGFyZSBwYXJ0IG9mIHRoZSBob3N0LgogICAgIGlmIChzZXBhcmF0b3IxID09IHNl
cGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBwb3J0IHNlY3Rpb24gaXMg
YSB2YWxpZCBwb3J0IG51bWJlciBvciBkb2Vzbid0IGV4aXN0LgogICAgIGF1dG8gcG9ydExlbmd0
aCA9IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxOwpAQCAtMTA0
LDExICsxMDQsMTEgQEAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3QKIAogICAgIC8vIE5vdGhpbmcg
YWZ0ZXIgdGhlIGNvbG9uIGlzIGZpbmUuIEZhaWx1cmUgdG8gcGFyc2UgYWZ0ZXIgdGhlIGNvbG9u
IGlzIG5vdC4KICAgICBpZiAoIXBvcnQgJiYgcG9ydExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRyZWF0
IHBvcnQgMCBsaWtlIHRoZXJlIGlzIHdhcyBubyBwb3J0IHNwZWNpZmllZC4KICAgICBpZiAocG9y
dCAmJiAhKnBvcnQpCi0gICAgICAgIHBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHBvcnQg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFzZUlkZW50
aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAt
IDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKaW5kZXggMGY2NjI2
MmE2MGNmYjc5NDUxMmY5ZjVlZmYyOGE3MGNlZjQyZTZmOS4uOTA3OWM1YjU1MjhiMGViYjk0Yjgw
ZDZmZTg1MzcxN2I2NDEyMGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCkBAIC03Niw3ICs3Niw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogCiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBwcm90b2NvbC5p
c051bGwoKSAmJiBob3N0LmlzTnVsbCgpICYmIHBvcnQgPT0gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gcHJvdG9jb2wuaXNOdWxsKCkgJiYgaG9zdC5pc051bGwoKSAmJiBwb3J0ID09IHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0CkBAIC0xMDgsMjEgKzEwOCwyMSBAQCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRh
dGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBwcm90b2NvbDsKICAgICBkZWNvZGVyID4+IHByb3RvY29sOwogICAgIGlm
ICghcHJvdG9jb2wpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBob3N0OwogICAgIGRl
Y29kZXIgPj4gaG9zdDsKICAgICBpZiAoIWhvc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8dWludDE2X3Q+PiBwb3J0OwogICAgIGRlY29kZXIgPj4gcG9ydDsKICAgICBpZiAoIXBv
cnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIGRhdGEgeyBXVEZNb3ZlKCpwcm90
b2NvbCksIFdURk1vdmUoKmhvc3QpLCBXVEZNb3ZlKCpwb3J0KSB9OwogICAgIGlmIChkYXRhLmlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTEz
OSw3ICsxMzksNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhSGFzaCB7CiAgICAgICAgIHVu
c2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsKICAgICAgICAgICAgIGRhdGEucHJvdG9jb2wuaW1wbCgp
ID8gZGF0YS5wcm90b2NvbC5pbXBsKCktPmhhc2goKSA6IDAsCiAgICAgICAgICAgICBkYXRhLmhv
c3QuaW1wbCgpID8gZGF0YS5ob3N0LmltcGwoKS0+aGFzaCgpIDogMCwKLSAgICAgICAgICAgIGRh
dGEucG9ydC52YWx1ZU9yKDApCisgICAgICAgICAgICBkYXRhLnBvcnQudmFsdWVfb3IoMCkKICAg
ICAgICAgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2Yo
aGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkhhc2guaAppbmRleCA0ZTMyMDk3ZmQ5MWZhNzMwMjY5Yzk1MWM0NjBhYTMwMGRjYTk3
Mjg2Li45ZmE4MjE2ODMxMzI5YTNhMGZkOWFiZDIxMWJhY2RmMzg0ODA3YzJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKQEAgLTQwLDcgKzQwLDcgQEAgc3RydWN0
IFNlY3VyaXR5T3JpZ2luSGFzaCB7CiAgICAgICAgIHVuc2lnbmVkIGhhc2hDb2Rlc1szXSA9IHsK
ICAgICAgICAgICAgIG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCkgPyBvcmlnaW4tPnByb3RvY29s
KCkuaW1wbCgpLT5oYXNoKCkgOiAwLAogICAgICAgICAgICAgb3JpZ2luLT5ob3N0KCkuaW1wbCgp
ID8gb3JpZ2luLT5ob3N0KCkuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgb3JpZ2lu
LT5wb3J0KCkudmFsdWVPcigwKQorICAgICAgICAgICAgb3JpZ2luLT5wb3J0KCkudmFsdWVfb3Io
MCkKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxz
aXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmgKaW5kZXggYzU0YTRlMTQ3MWVmMzIx
OWNjYmM2NWMwZDFkMDBjYjM3NmRmMDljOC4uMTIxYWZhYTgzZTU1YzAzMjNmY2IyNDFkNmMzN2U0
YzQ4YWY0MjRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9UcmFuc2xhdGlvbkNv
bnRleHRNZW51SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25Db250
ZXh0TWVudUluZm8uaApAQCAtNTksMjIgKzU5LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPFRyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvPiBUcmFuc2xhdGlvbkNvbnRleHRN
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBp
ZiAoIXRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRSZWN0PiBzZWxlY3Rpb25Cb3VuZHNJblJv
b3RWaWV3OwogICAgIGRlY29kZXIgPj4gc2VsZWN0aW9uQm91bmRzSW5Sb290VmlldzsKICAgICBp
ZiAoIXNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRQb2lu
dD4gbG9jYXRpb25JblJvb3RWaWV3OwogICAgIGRlY29kZXIgPj4gbG9jYXRpb25JblJvb3RWaWV3
OwogICAgIGlmICghbG9jYXRpb25JblJvb3RWaWV3KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhbnNs
YXRpb25Db250ZXh0TWVudU1vZGU+IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlm
ICghbW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqc2Vs
ZWN0aW9uQm91bmRzSW5Sb290VmlldyksIFdURk1vdmUoKmxvY2F0aW9uSW5Sb290VmlldyksICpt
b2RlIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAppbmRleCAzZjJlNjU2MTU2ZGU0Y2Fi
MzcyZmJiZDY3M2VhZThkZjY2ZGRmOTEwLi44Y2Q5YzMwYzZiNmE2NGVlNjZkZjk5MzNlYjM3ODU4
OGM0OThhMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtOTEsMzcgKzkxLDM3IEBA
IE9wdGlvbmFsPFVzZXJTY3JpcHQ+IFVzZXJTY3JpcHQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlOwogICAgIGRlY29kZXIgPj4gc291cmNlOwog
ICAgIGlmICghc291cmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRl
Y29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3Rv
cjxTdHJpbmc+PiBhbGxvd2xpc3Q7CiAgICAgZGVjb2RlciA+PiBhbGxvd2xpc3Q7CiAgICAgaWYg
KCFhbGxvd2xpc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGJsb2Nr
bGlzdDsKICAgICBkZWNvZGVyID4+IGJsb2NrbGlzdDsKICAgICBpZiAoIWJsb2NrbGlzdCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxVc2VyU2NyaXB0SW5qZWN0aW9uVGltZT4gaW5qZWN0aW9uVGlt
ZTsKICAgICBkZWNvZGVyID4+IGluamVjdGlvblRpbWU7CiAgICAgaWYgKCFpbmplY3Rpb25UaW1l
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+IGluamVj
dGVkRnJhbWVzOwogICAgIGRlY29kZXIgPj4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgaWYgKCFpbmpl
Y3RlZEZyYW1lcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxXYWl0Rm9yTm90aWZpY2F0aW9uQmVm
b3JlSW5qZWN0aW5nPiB3YWl0Rm9yTm90aWZpY2F0aW9uOwogICAgIGRlY29kZXIgPj4gd2FpdEZv
ck5vdGlmaWNhdGlvbjsKICAgICBpZiAoIXdhaXRGb3JOb3RpZmljYXRpb24pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKnNvdXJjZSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTdHlsZVNoZWV0LmgKaW5kZXggYThjNDBkOWU1NmM5OTY2MWMzZjk5ZDg4YjMwNDcwZjgzYmY3
M2RjOS4uY2Y2YTFjNDAzZjJmMGI2YzY5ZmNmM2I2YmVlNzJjZDFjZTY4NTM5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgIH0KIAotICAgIFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPFN0cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYg
YmxvY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2Vy
U3R5bGVMZXZlbCBsZXZlbCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdURjo6
bnVsbG9wdCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgYWxsb3dsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJs
b2NrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0
eWxlTGV2ZWwgbGV2ZWwsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBzdGQ6Om51
bGxvcHQpCiAgICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkK
ICAgICAgICAgLCBtX2FsbG93bGlzdChXVEZNb3ZlKGFsbG93bGlzdCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggY2U3MWM2Mzg2OGYyNjI3
OWM4NmVjZmRjYzZhMWQyODdmODhmOTJhNy4uMTRkMGM1ZjVhNTEyMDk5NzM1ZDg1MDg4NzUxMWFl
ZmY1MmU2OWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0
aW9uLmNwcApAQCAtMTE2LDggKzExNiw4IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpz
ZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpCiAKIGJvb2wgVmlld3Bv
cnRDb25maWd1cmF0aW9uOjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHZpZXdM
YXlvdXRTaXplLCBPcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IsIE9wdGlvbmFsPGRvdWJs
ZT4mJiBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpCiB7Ci0gICAgZG91YmxlIG5ld1NjYWxl
RmFjdG9yID0gc2NhbGVGYWN0b3IudmFsdWVPcihtX2xheW91dFNpemVTY2FsZUZhY3Rvcik7Ci0g
ICAgZG91YmxlIG5ld0VmZmVjdGl2ZVdpZHRoID0gbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRo
LnZhbHVlT3IobV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOworICAgIGRvdWJsZSBuZXdT
Y2FsZUZhY3RvciA9IHNjYWxlRmFjdG9yLnZhbHVlX29yKG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9y
KTsKKyAgICBkb3VibGUgbmV3RWZmZWN0aXZlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNl
V2lkdGgudmFsdWVfb3IobV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwogICAgIGlmICht
X3ZpZXdMYXlvdXRTaXplID09IHZpZXdMYXlvdXRTaXplICYmIG1fbGF5b3V0U2l6ZVNjYWxlRmFj
dG9yID09IG5ld1NjYWxlRmFjdG9yICYmIG5ld0VmZmVjdGl2ZVdpZHRoID09IG1fbWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCmluZGV4IDZkZjQwZWJhNTI0MTRmNWVm
ZTU3N2U5MDcxYWJjZWJmNTRiNDMzNGMuLmM0NDY3OTNmOGQ3YzE3MjQ0NDZlZjg5YzdkMGI1MmQ5
ODZkZmM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24u
aApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRTaXplJiB2aWV3TGF5
b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld0xheW91dFNpemU7IH0KIAogICAgIGNvbnN0
IEZsb2F0U2l6ZSYgbWluaW11bUxheW91dFNpemUoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1M
YXlvdXRTaXplOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShj
b25zdCBGbG9hdFNpemUmLCBPcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBXVEY6Om51
bGxvcHQsIE9wdGlvbmFsPGRvdWJsZT4mJiBlZmZlY3RpdmVXaWR0aCA9IFdURjo6bnVsbG9wdCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNp
emUmLCBPcHRpb25hbDxkb3VibGU+JiYgc2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQsIE9wdGlv
bmFsPGRvdWJsZT4mJiBlZmZlY3RpdmVXaWR0aCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBjb25z
dCBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9ucz4mIGRpc2FibGVkQWRhcHRhdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX2Rpc2FibGVkQWRhcHRhdGlvbnM7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNldERpc2FibGVkQWRhcHRhdGlvbnMoY29uc3QgT3B0aW9uU2V0PERpc2FibGVkQWRh
cHRhdGlvbnM+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0ZlYXR1
cmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwCmluZGV4IDhj
MGE0MmM4NzMzNTUyZjdlZWFmMzg1OTZlZGZmMWI1YjJlZTdlYjUuLjUyOWY5OTY0MTBmYWNhZTYx
NGQ5OGNhYzMyZjQzMjkyOTA4MTA2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2luZG93RmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVy
ZXMuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc2V0V2luZG93RmVhdHVyZShX
aW5kb3dGZWF0dXJlcyYgZmVhdHVyZXMsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWUKICAgICBp
ZiAodmFsdWUuaXNFbXB0eSgpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVl
LCAieWVzIikpCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IDE7CiAgICAgZWxzZQotICAgICAgICBu
dW1lcmljVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVl
KS52YWx1ZU9yKDApOworICAgICAgICBudW1lcmljVmFsdWUgPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KHZhbHVlKS52YWx1ZV9vcigwKTsKIAogICAgIC8vIFdlIHRyZWF0
IGtleSBvZiAicmVzaXphYmxlIiBoZXJlIGFzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSByYXRoZXIg
dGhhbiBzZXR0aW5nIHJlc2l6ZWFibGUgdG8gdHJ1ZS4KICAgICAvLyBUaGlzIGlzIGNvbnNpc3Rl
bnQgd2l0aCBGaXJlZm94LCBidXQgY291bGQgYWxzbyBiZSBoYW5kbGVkIGF0IGFub3RoZXIgbGV2
ZWwuCkBAIC0xODUsOCArMTg1LDggQEAgV2luZG93RmVhdHVyZXMgcGFyc2VEaWFsb2dGZWF0dXJl
cyhjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBjb25zdCBGbG8KICAgICBmZWF0
dXJlcy5sb2NhdGlvbkJhclZpc2libGUgPSBmYWxzZTsKICAgICBmZWF0dXJlcy5kaWFsb2cgPSB0
cnVlOwogCi0gICAgZmxvYXQgd2lkdGggPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFs
b2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxlUmVjdC53aWR0aCgpKS52YWx1ZU9yKDYyMCk7
IC8vIGRlZmF1bHQgaGVyZSBjYW1lIGZyb20gZnJhbWUgc2l6ZSBvZiBkaWFsb2cgaW4gTWFjSUUK
LSAgICBmbG9hdCBoZWlnaHQgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2doZWln
aHQiLCAxMDAsIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpLnZhbHVlT3IoNDUwKTsgLy8g
ZGVmYXVsdCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAg
IGZsb2F0IHdpZHRoID0gZmxvYXRGZWF0dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9nd2lkdGgiLCAx
MDAsIHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSkudmFsdWVfb3IoNjIwKTsgLy8gZGVmYXVs
dCBoZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQorICAgIGZsb2F0
IGhlaWdodCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwg
c2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVfb3IoNDUwKTsgLy8gZGVmYXVsdCBo
ZXJlIGNhbWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQogCiAgICAgZmVhdHVy
ZXMud2lkdGggPSB3aWR0aDsKICAgICBmZWF0dXJlcy5oZWlnaHQgPSBoZWlnaHQ7CkBAIC0xOTQs
MTYgKzE5NCwxNiBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0
cmluZyYgZGlhbG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLnggPSBm
bG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2dsZWZ0Iiwgc2NyZWVuQXZhaWxhYmxlUmVj
dC54KCksIHNjcmVlbkF2YWlsYWJsZVJlY3QubWF4WCgpIC0gd2lkdGgpOwogICAgIGZlYXR1cmVz
LnkgPSBmbG9hdEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d0b3AiLCBzY3JlZW5BdmFpbGFi
bGVSZWN0LnkoKSwgc2NyZWVuQXZhaWxhYmxlUmVjdC5tYXhZKCkgLSBoZWlnaHQpOwogCi0gICAg
aWYgKGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVPcih0cnVlKSkgewor
ICAgIGlmIChib29sRmVhdHVyZShmZWF0dXJlc01hcCwgImNlbnRlciIpLnZhbHVlX29yKHRydWUp
KSB7CiAgICAgICAgIGlmICghZmVhdHVyZXMueCkKICAgICAgICAgICAgIGZlYXR1cmVzLnggPSBz
Y3JlZW5BdmFpbGFibGVSZWN0LngoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LndpZHRoKCkgLSB3
aWR0aCkgLyAyOwogICAgICAgICBpZiAoIWZlYXR1cmVzLnkpCiAgICAgICAgICAgICBmZWF0dXJl
cy55ID0gc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyAoc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWln
aHQoKSAtIGhlaWdodCkgLyAyOwogICAgIH0KIAotICAgIGZlYXR1cmVzLnJlc2l6YWJsZSA9IGJv
b2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAicmVzaXphYmxlIikudmFsdWVPcihmYWxzZSk7Ci0gICAg
ZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInNj
cm9sbCIpLnZhbHVlT3IodHJ1ZSk7Ci0gICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9IGJv
b2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3RhdHVzIikudmFsdWVPcihmYWxzZSk7CisgICAgZmVh
dHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNNYXAsICJyZXNpemFibGUiKS52
YWx1ZV9vcihmYWxzZSk7CisgICAgZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUgPSBib29sRmVh
dHVyZShmZWF0dXJlc01hcCwgInNjcm9sbCIpLnZhbHVlX29yKHRydWUpOworICAgIGZlYXR1cmVz
LnN0YXR1c0JhclZpc2libGUgPSBib29sRmVhdHVyZShmZWF0dXJlc01hcCwgInN0YXR1cyIpLnZh
bHVlX29yKGZhbHNlKTsKIAogICAgIHJldHVybiBmZWF0dXJlczsKIH0KQEAgLTIxMiw3ICsyMTIs
NyBAQCBzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gYm9vbEZlYXR1cmUoY29uc3QgRGlhbG9nRmVhdHVy
ZXNNYXAmIGZlYXR1cmVzLCBjb25zdCBjaGFyKgogewogICAgIGF1dG8gaXQgPSBmZWF0dXJlcy5m
aW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYg
dmFsdWUgPSBpdC0+dmFsdWU7CiAgICAgcmV0dXJuIHZhbHVlLmlzTnVsbCgpCkBAIC0yMjUsMTQg
KzIyNSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZsb2F0RmVhdHVyZShjb25zdCBEaWFs
b2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNvbnN0IGNoYQogewogICAgIGF1dG8gaXQgPSBmZWF0
dXJlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGZlYXR1cmVzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gRklYTUU6IFRoZSB0b0RvdWJsZSBmdW5jdGlvbiBkb2VzIG5vdCBvZmZlciBhIHdheSB0byB0
ZWxsICIwcSIgZnJvbSBzdHJpbmcgd2l0aCBubyBkaWdpdHMgaW4gaXQ6IEJvdGgKICAgICAvLyBy
ZXR1cm4gdGhlIG51bWJlciAwIGFuZCBmYWxzZSBmb3Igb2suIEJ1dCAiMHEiIHNob3VsZCB5aWVs
ZCB0aGUgbWluaW11bSByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdC4KICAgICBib29sIG9rOwogICAg
IGRvdWJsZSBwYXJzZWROdW1iZXIgPSBpdC0+dmFsdWUudG9Eb3VibGUoJm9rKTsKICAgICBpZiAo
KCFwYXJzZWROdW1iZXIgJiYgIW9rKSB8fCBzdGQ6OmlzbmFuKHBhcnNlZE51bWJlcikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKHBhcnNlZE51bWJlciA8IG1pbiB8fCBtYXggPD0gbWluKQogICAgICAgICByZXR1cm4g
bWluOwogICAgIGlmIChwYXJzZWROdW1iZXIgPiBtYXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1BlcmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9QZXJmb3JtYW5jZUxvZ2dpbmdDb2NvYS5tbQppbmRleCAyMTExNTczMmY1
NDZlMGViMWQ4MjcxMDE0YzE1NjcxYTA4MmMzODM3Li43ZDMyMzllZDcyMGUxNmU5ZmMyNGY3NWY2
YzYzYjcwOWE3OGZlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Bl
cmZvcm1hbmNlTG9nZ2luZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UGVyZm9ybWFuY2VMb2dnaW5nQ29jb2EubW0KQEAgLTM3LDcgKzM3LDcgQEAgT3B0aW9uYWw8dWlu
dDY0X3Q+IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKQogICAgIG1hY2hf
bXNnX3R5cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAga2Vybl9y
ZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZP
LCAodGFza19pbmZvX3QpICZ2bUluZm8sICZjb3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJO
X1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZtSW5mby5waHlzX2Zvb3RwcmludDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJjZVVzYWdlVGhyZWFkQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2Nv
YS5tbQppbmRleCA5YmM2ZDI5NzdlZjkxMjM4ZWZhMDE1YzZjZGMzODMxNTBhYThjMzYxLi5iN2Y4
NDQ3ZTlmZWJkODYwODU0ZWQzNTk3MzgzNzdmZDhkNzA4NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbQpAQCAtMjcy
LDggKzI3Miw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0TWVt
b3J5RGF0YShKU0M6OlZNKiB2bSwgUmVzb3VyY2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFsRXh0
ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlD
YWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xs
ZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygp
LT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0g
ZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50
aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGlt
ZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgp
LnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCmluZGV4IDAxNzZiNGQzNTgzMDEzOWQ4MDQ5ZjRhMzAxMDhkYWFlMzE5ZGQ1
OGEuLjZhZDZiMjM3NzdlYTYyZmFlMDc4ZjRmOGE4MzVkMmM5NmNlNjRmNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMTg2
LDcgKzE4Niw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVy
KGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiAgICAgICAgIG1faGFzQVBJUG9s
aWN5ID0gdHJ1ZTsKICAgICB9CiAKLSAgICBtX2NhY2hlZFJlc3BvbnNlSGVhZGVycyA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX2NhY2hlZFJlc3BvbnNlSGVhZGVycyA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIFJGQzI2MTYsIHNlY3Rpb24gNC4yIHNwZWNpZmllcyB0aGF0IGhlYWRlcnMgYXBwZWFy
aW5nIG11bHRpcGxlIHRpbWVzIGNhbgogICAgIC8vIGJlIGNvbWJpbmVkIHdpdGggYSBjb21tYS4g
V2FsayB0aGUgaGVhZGVyIHN0cmluZywgYW5kIHBhcnNlIGVhY2ggY29tbWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAKaW5kZXggZDdiNzA2NmQyMTRkYTkxN2E5ZTQ3MzQ4NDkxMDQ1YmQ5NzVj
YTgxZS4uMTYxNDM0ZWI5MjJmMjRlMTE4Zjg1MDhhY2NjZjU5ZmFiYmY4MDY1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnBhcnNlRAogCiAgICAgLy8gRW1wdHkgZGlyZWN0aXZlIChlLmcuICI7OzsiKS4gRXhpdCBlYXJs
eS4KICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIG5hbWVCZWdpbiA9IGJ1
ZmZlci5wb3NpdGlvbigpOwogICAgIHNraXBXaGlsZTxpc0RpcmVjdGl2ZU5hbWVDaGFyYWN0ZXI+
KGJ1ZmZlcik7CkBAIC0zODIsNyArMzgyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYXV0byBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJzZUQKICAg
ICBpZiAobmFtZUJlZ2luID09IGJ1ZmZlci5wb3NpdGlvbigpKSB7CiAgICAgICAgIHNraXBXaGls
ZTxpc05vdEFTQ0lJU3BhY2U+KGJ1ZmZlcik7CiAgICAgICAgIG1fcG9saWN5LnJlcG9ydFVuc3Vw
cG9ydGVkRGlyZWN0aXZlKFN0cmluZyhuYW1lQmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gbmFt
ZUJlZ2luKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBuYW1lID0gU3RyaW5nKG5hbWVCZWdpbiwg
YnVmZmVyLnBvc2l0aW9uKCkgLSBuYW1lQmVnaW4pOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6cGFyc2VECiAgICAgaWYgKCFza2lwRXhhY3RseTxpc0FTQ0lJU3BhY2U+KGJ1
ZmZlcikpIHsKICAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4oYnVmZmVyKTsKICAg
ICAgICAgbV9wb2xpY3kucmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoU3RyaW5nKG5hbWVCZWdp
biwgYnVmZmVyLnBvc2l0aW9uKCkgLSBuYW1lQmVnaW4pKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBza2lw
V2hpbGU8aXNBU0NJSVNwYWNlPihidWZmZXIpOwpAQCAtNDAzLDcgKzQwMyw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGF1dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6cGFyc2VECiAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKSB7CiAgICAgICAgIG1f
cG9saWN5LnJlcG9ydEludmFsaWREaXJlY3RpdmVWYWx1ZUNoYXJhY3RlcihuYW1lLCBTdHJpbmco
dmFsdWVCZWdpbiwgYnVmZmVyLmVuZCgpIC0gdmFsdWVCZWdpbikpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIFRoZSBkaXJlY3RpdmUtdmFsdWUgbWF5IGJlIGVtcHR5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMuaAppbmRleCBiYzk4MmJlM2I2YTEzMTgxZjIzZjhjZTMwNzI3ZjQ3Y2JjY2NhZGFhLi5m
M2JiMWE3YmI5ZDNiMjkzMjQzNmIzYzFjOWVlNTNjYjIyM2JkOGFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMuaApAQCAtOTEsMTYgKzkxLDE2IEBAIE9wdGlvbmFsPENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4gaGVh
ZGVyc1NpemU7CiAgICAgaWYgKCFoZWFkZXJzU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gaGVh
ZGVyOwogICAgICAgICBkZWNvZGVyID4+IGhlYWRlcjsKICAgICAgICAgaWYgKCFoZWFkZXIpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyVHlw
ZT4gaGVhZGVyVHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBoZWFkZXJUeXBlOwogICAgICAgICBp
ZiAoIWhlYWRlclR5cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaGVhZGVycy5tX2hlYWRlcnMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUoKmhlYWRlciksIFdURk1vdmUoKmhlYWRlclR5cGUp
KSk7CiAgICAgfQogICAgIGhlYWRlcnMubV9oZWFkZXJzLnNocmlua1RvRml0KCk7CkBAIC0xMDgs
NyArMTA4LDcgQEAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
PiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWQKICAgICBPcHRpb25hbDxpbnQ+IGh0
dHBTdGF0dXNDb2RlOwogICAgIGRlY29kZXIgPj4gaHR0cFN0YXR1c0NvZGU7CiAgICAgaWYgKCFo
dHRwU3RhdHVzQ29kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBoZWFkZXJzLm1faHR0cFN0YXR1c0NvZGUgPSAqaHR0cFN0
YXR1c0NvZGU7CiAKICAgICByZXR1cm4gaGVhZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKaW5k
ZXggNmEzMzZiNWEzZTE2MmIzYzIxZmEyNTk2OTM1NjVlNzI0NTQzYmVjOC4uYjg3ZDg1YWZkMTM3
NTQ5NDM3NDU2ZmRhYzM0Y2JiNjkzMDJlNTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAKQEAg
LTIwMSwxMCArMjAxLDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2UoU3RyCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpTb3VyY2U+IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OnBhcnNlU291cmNl
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4gYnVmZmVyKQogewogICAgIGlmIChi
dWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChza2lwRXhhY3RseUlnbm9yaW5nQVNDSUlDYXNl
KGJ1ZmZlciwgIidub25lJyIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU291cmNlIHNvdXJjZTsKIApAQCAtMjQwLDcg
KzI0MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgICAgIC8vICAgICBeCiAgICAg
ICAgIGF1dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0
LCBidWZmZXIucG9zaXRpb24oKSB9KTsKICAgICAgICAgaWYgKCFob3N0KQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgc291cmNlLmhvc3QgPSBXVEZNb3ZlKCpob3N0KTsKICAgICAgICAgcmV0dXJuIHNv
dXJjZTsKQEAgLTI1MSwxMSArMjUxLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAg
ICAgIC8vICAgICBeICAgICAgICAgICAgXiAgICBeCiAgICAgICAgIGF1dG8gaG9zdCA9IHBhcnNl
SG9zdChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5Ib3N0LCBidWZmZXIucG9zaXRpb24oKSB9
KTsKICAgICAgICAgaWYgKCFob3N0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBwYXRoID0g
cGFyc2VQYXRoKGJ1ZmZlcik7CiAgICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHNvdXJjZS5ob3N0ID0gV1RGTW92ZSgqaG9zdCk7CiAgICAgICAgIHNvdXJjZS5wYXRoID0g
V1RGTW92ZSgqcGF0aCk7CkBAIC0yNjgsNyArMjY4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6U291
cmMKICAgICAgICAgICAgIC8vICAgICAgIF4KICAgICAgICAgICAgIGF1dG8gc2NoZW1lID0gcGFy
c2VTY2hlbWUoU3RyaW5nUGFyc2luZ0J1ZmZlciB7IGJlZ2luLCBidWZmZXIucG9zaXRpb24oKSB9
KTsKICAgICAgICAgICAgIGlmICghc2NoZW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgc291cmNlLnNjaGVtZSA9IFdURk1vdmUoKnNjaGVtZSk7CiAgICAgICAgICAgICByZXR1
cm4gc291cmNlOwpAQCAtMjgyLDkgKzI4Miw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAg
ICAgICAgICAgICAgICAgfHwgIXNraXBFeGFjdGx5KGJ1ZmZlciwgJzonKQogICAgICAgICAgICAg
ICAgIHx8ICFza2lwRXhhY3RseShidWZmZXIsICcvJykKICAgICAgICAgICAgICAgICB8fCAhc2tp
cEV4YWN0bHkoYnVmZmVyLCAnLycpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGlm
IChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHNvdXJj
ZS5zY2hlbWUgPSBXVEZNb3ZlKCpzY2hlbWUpOwogCkBAIC0zMDQsMTkgKzMwNCwxOSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0OjpTb3VyYwogICAgICAgICAvLyBzY2hlbWU6Ly9ob3N0L3BhdGggfHwgc2No
ZW1lOi8vaG9zdDpwb3J0L3BhdGgKICAgICAgICAgLy8gICAgICAgICAgICAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KICAgICAgICAgaWYgKGJ1ZmZlci5wb3NpdGlvbigpID09IGJlZ2lu
SG9zdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGJlZ2luUGF0aCA9IGJ1ZmZlci5wb3NpdGlvbigp
OwogICAgIH0KIAogICAgIGF1dG8gaG9zdCA9IHBhcnNlSG9zdChTdHJpbmdQYXJzaW5nQnVmZmVy
IHsgYmVnaW5Ib3N0LCBiZWdpblBvcnQgPyBiZWdpblBvcnQgOiBiZWdpblBhdGggfSk7CiAgICAg
aWYgKCFob3N0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJlZ2luUG9ydCkgewogICAgICAgICBhdXRvIHBvcnQg
PSBwYXJzZVBvcnQoU3RyaW5nUGFyc2luZ0J1ZmZlciB7IGJlZ2luUG9ydCwgYmVnaW5QYXRoIH0p
OwogICAgICAgICBpZiAoIXBvcnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzb3VyY2UucG9ydCA9
IFdURk1vdmUoKnBvcnQpOwogICAgIH0KQEAgLTMyNCw3ICszMjQsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0OjpTb3VyYwogICAgIGlmIChiZWdpblBhdGggIT0gYnVmZmVyLmVuZCgpKSB7CiAgICAgICAg
IGF1dG8gcGF0aCA9IHBhcnNlUGF0aChTdHJpbmdQYXJzaW5nQnVmZmVyIHsgYmVnaW5QYXRoLCBi
dWZmZXIuZW5kKCkgfSk7CiAgICAgICAgIGlmICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IHNvdXJjZS5wYXRoID0gV1RGTW92ZSgqcGF0aCk7CiAgICAgfQpAQCAtMzQxLDE3ICszNDEsMTcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8U3RyaW5nPiBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXMKICAgICBBU1NFUlQoYnVmZmVyLnBvc2l0aW9uKCkg
PD0gYnVmZmVyLmVuZCgpKTsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gYmVnaW4gPSBidWZmZXIucG9zaXRpb24oKTsKIAogICAgIGlmICghc2tpcEV4YWN0bHk8aXNB
U0NJSUFscGhhPihidWZmZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2tpcFdoaWxlPGlzU2NoZW1lQ29udGludWF0
aW9uQ2hhcmFjdGVyPihidWZmZXIpOwogCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBTdHJpbmcoYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW4pOwogfQpA
QCAtMzY1LDcgKzM2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlv
bmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Okhvc3Q+CiAgICAgQVNTRVJUKGJ1
ZmZlci5wb3NpdGlvbigpIDw9IGJ1ZmZlci5lbmQoKSk7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBIb3N0IGhvc3Q7CiAKQEAgLTM3NiwxOSArMzc2LDE5IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3Q6Okhvc3Q+CiAgICAgICAgICAgICByZXR1cm4gaG9zdDsKIAogICAgICAgICBpZiAo
IXNraXBFeGFjdGx5KGJ1ZmZlciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8g
aG9zdEJlZ2luID0gYnVmZmVyLnBvc2l0aW9uKCk7CiAKICAgICB3aGlsZSAoYnVmZmVyLmhhc0No
YXJhY3RlcnNSZW1haW5pbmcoKSkgewogICAgICAgICBpZiAoIXNraXBFeGFjdGx5PGlzSG9zdENo
YXJhY3Rlcj4oYnVmZmVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNraXBXaGlsZTxpc0hvc3RD
aGFyYWN0ZXI+KGJ1ZmZlcik7CiAKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVt
YWluaW5nKCkgJiYgIXNraXBFeGFjdGx5KGJ1ZmZlciwgJy4nKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIEFTU0VSVChidWZmZXIuYXRFbmQoKSk7CkBAIC00MjMsNyArNDIzLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdDo6UG9ydD4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCiAg
ICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgPT0gMSAmJiAqYnVmZmVyID09ICcqJykgewogICAgICAgICBQb3J0IHBvcnQ7CkBA
IC00MzUsMTIgKzQzNSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRp
b25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0PgogICAgIHNraXBXaGls
ZTxpc0FTQ0lJRGlnaXQ+KGJ1ZmZlcik7CiAgICAgCiAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1ZmZlci5wb3NpdGlvbigpIC0gYmVnaW47Ci0g
ICAgYXV0byBwb3J0SW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oeyBiZWdpbiwgbGVu
Z3RoIH0pLnZhbHVlT3IoMCk7CisgICAgYXV0byBwb3J0SW50ZWdlciA9IHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oeyBiZWdpbiwgbGVuZ3RoIH0pLnZhbHVlX29yKDApOwogICAgIGlmICghcG9ydElu
dGVnZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBQb3J0IHBvcnQ7CiAgICAgcG9ydC52YWx1ZSA9IHBvcnRJbnRlZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4
IGQ0OTA3ZjkxNDJiM2QzMzM3MGY0NzA1N2YxMGI0OWM1MDM4MTkzZmMuLmI2YTljMzZkMTJlYmRk
OTYwYWM2NzcwOWYwZDE3NjRjMjVlZjhjNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0
ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8RHJhZ09w
ZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbjo6Q29weTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1h
eERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZl
bnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tCmluZGV4IDJmMDY1NTgzNTAzNDIzZDVkZDI1ZDc4Mzg4N2JjMmUwZmE0YWM3ODcuLmY5YTQz
MGExZGJkZTVkYmYzZDBhYWMxODBkNWE0ZjBmN2FmMmQwOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTExMSw3ICsxMTEsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6d2hlZWxFdmVudChXZWJFdmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwczo6TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYg
KHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSkKLSAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1
cmVTdGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmICh3aGVlbEV2ZW50LnBoYXNlKCkgPT0gUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNoYW5nZWQgfHwgd2hlZWxFdmVudC5tb21lbnR1bVBoYXNl
KCkgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6OkNoYW5nZWQpIHsKICAgICAgICAgaWYgKG1f
d2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgJiYgKm1fd2hlZWxTY3JvbGxHZXN0dXJlU3RhdGUgPT0g
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcHJvY2Vz
c2luZ1N0ZXBzID0geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Ny
b2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tp
bmdET01FdmVudERpc3BhdGNoIH07CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OnN0YXJ0U2VsZWN0aW9uQXV0b3Njcm9sbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBGbG9hdFAKIHZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxTZWxlY3Rpb25BdXRvc2Nyb2xsKCkK
IHsKICAgICBtX2lzQXV0b3Njcm9sbGluZyA9IGZhbHNlOwotICAgIG1faW5pdGlhbFRhcmdldEF1
dG9zY3JvbGxQb3NpdGlvbkluVW5zY3JvbGxlZFJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9pbml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5VbnNjcm9sbGVk
Um9vdFZpZXdDb29yZGluYXRlcyA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2F1dG9zY3JvbGxDb250
cm9sbGVyLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRocmVhZExpbnV4LmNwcAppbmRleCAwMmU1
ZDQ4OWNhYjQzZjgzOTMzM2Q0OWJkMjRhNTk2OTI5ODk0N2MzLi5mZTFkZjZmNjkxYjlkMTRkYjkz
YzY1YmViM2M3NzFhNGRiOTU2Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xp
bnV4L1Jlc291cmNlVXNhZ2VUaHJlYWRMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9saW51eC9SZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RDUFVEYXRhKEpTQzo6Vk0q
LCBSZXNvdXJjZVVzYWdlRGF0YSYgZGEKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJp
bmcgdGhyZWFkSWRlbnRpZmllciA9IGtub3duV29ya2VyVGhyZWFkcy5nZXQoaWQpOwogICAgICAg
ICAgICAgYm9vbCBpc1dvcmtlclRocmVhZCA9ICF0aHJlYWRJZGVudGlmaWVyLmlzRW1wdHkoKTsK
LSAgICAgICAgICAgIFN0cmluZyBuYW1lID0gaXQudmFsdWUubmFtZS52YWx1ZU9yKGVtcHR5U3Ry
aW5nKCkpOworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBpdC52YWx1ZS5uYW1lLnZhbHVlX29y
KGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAgICAgVGhyZWFkQ1BVSW5mbzo6VHlwZSB0eXBlID0g
KGlzV29ya2VyVGhyZWFkIHx8IGlzV2ViS2l0VGhyZWFkKGlkLCBuYW1lKSkgPyBUaHJlYWRDUFVJ
bmZvOjpUeXBlOjpXZWJLaXQgOiBUaHJlYWRDUFVJbmZvOjpUeXBlOjpVbmtub3duOwogICAgICAg
ICAgICAgZGF0YS5jcHVUaHJlYWRzLmFwcGVuZChUaHJlYWRDUFVJbmZvIHsgbmFtZSwgdGhyZWFk
SWRlbnRpZmllciwgY3B1VXNhZ2UsIHR5cGUgfSk7CiAgICAgICAgIH0KQEAgLTMxNSw4ICszMTUs
OCBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdE1lbW9yeURhdGEo
SlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYQogCiAgICAgZGF0YS50b3RhbEV4dGVybmFsU2l6
ZSA9IGN1cnJlbnRHQ093bmVkRXh0ZXJuYWw7CiAKLSAgICBkYXRhLnRpbWVPZk5leHRFZGVuQ29s
bGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2so
KS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpKTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29sbGVjdGlvbiA9
IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVu
dGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omlu
ZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEudGlt
ZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgp
LnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
KSk7CisgICAgZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCAr
IHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9v
cihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdD
b250cm9sbGVyTWFjLm1tCmluZGV4IGM0MGUzMDFhYmU4MWYwMWNjMjQ3MTc4Mjk1NTMzZTgzNjM4
OTY4MjIuLjU4NjQ5MzE5NjI2YjBmY2ZlMmEyN2RlNWMyNmZiYWM4M2Y1ZTJiN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02Nyw3ICs2Nyw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFnRGF0YS5mbGFn
cygpLmNvbnRhaW5zKERyYWdBcHBsaWNhdGlvbkZsYWdzOjpJc01vZGFsKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJv
b2wgbWF5Q29udGFpblVSTDsKICAgICBpZiAoY2FuTG9hZERhdGFGcm9tRHJhZ2dpbmdQYXN0ZWJv
YXJkKCkpCkBAIC03NiwxMiArNzYsMTIgQEAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAg
ICBtYXlDb250YWluVVJMID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigpOwog
CiAgICAgaWYgKCFtYXlDb250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1Byb21pc2UoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3Mo
KS5jb250YWluc0FsbCh7IERyYWdBcHBsaWNhdGlvbkZsYWdzOjpIYXNBdHRhY2hlZFNoZWV0LCBE
cmFnQXBwbGljYXRpb25GbGFnczo6SXNTb3VyY2UgfSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb246OkNvcHk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFn
SW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpp
bmRleCA4NjQ2NWY4MDVlMjA1MzU2ODcwNjRjMmZmNzYwNGQ1Yjg5YTQyNDdkLi5kMDE5NTQzNzQ4
YTNkMjU2MTJjNDgzOTA2MTFhOTNkMmViYzAwMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdTdGVwcyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdT
dGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6
TWFpblRocmVhZEZvckJsb2NraW5nRE9NRXZlbnREaXNwYXRjaCB9OwogCiAgICAgaWYgKHdoZWVs
RXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdlZCB8fCB3aGVl
bEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6Q2hhbmdl
ZCkgewotICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZlbnRHZXN0dXJlc0Jl
Y29tZU5vbkJsb2NraW5nKCkgJiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZS52YWx1ZU9yKFdo
ZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU6Ok5vbkJsb2NraW5nKQorICAgICAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLndoZWVsRXZl
bnRHZXN0dXJlc0JlY29tZU5vbkJsb2NraW5nKCkgJiYgbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZS52YWx1ZV9vcihXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Ny
b2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykKICAgICAgICAgICAgIHByb2Nlc3NpbmdTdGVw
cyA9IHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZywg
V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvck5vbkJsb2NraW5nRE9NRXZl
bnREaXNwYXRjaCB9OwogICAgIH0KICAgICByZXR1cm4gaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50LCBwcm9jZXNzaW5nU3RlcHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9w
bGF5c3RhdGlvbi9SZXNvdXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9wbGF5c3RhdGlvbi9SZXNvdXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3Bw
CmluZGV4IGUwOGJlMzgxNTI4NWM1MzdiN2UyYTc1M2M4ZTgxNDk0NWE2Mjg5NDIuLmRiOTU4MGRl
MmU3NTlhMWUwMTliZGM1MjU1MDA5NWEwM2NhNDc4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvcGxheXN0YXRpb24vUmVzb3VyY2VVc2FnZVRocmVhZFBsYXlTdGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3BsYXlzdGF0aW9uL1Jlc291cmNlVXNhZ2VUaHJlYWRQ
bGF5U3RhdGlvbi5jcHAKQEAgLTY5LDggKzY5LDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFk
OjpwbGF0Zm9ybUNvbGxlY3RNZW1vcnlEYXRhKEpTQzo6Vk0qIHZtLCBSZXNvdXJjZVVzYWdlRGEK
IAogICAgIGRhdGEudG90YWxFeHRlcm5hbFNpemUgPSBjdXJyZW50R0NPd25lZEV4dGVybmFsOwog
Ci0gICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZt
LT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNl
Y29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7Ci0gICAgZGF0
YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1
bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1lT2ZO
ZXh0RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEZ1bGxD
b2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFj
aygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCA5NmYxZmIxZTVhMmJiNjQ1ZmYxMjczMzczMjhiN2RiNzAx
ZmNhNTk1Li4xMzlmNGU3NjUxZGM4ODExNzA0ZWMzNGVmNDZiOTMxNGY4MWNjZDc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcApAQCAtNjYwLDcgKzY2MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0RnJhbWVTY3JvbGxpbmdOb2RlU3RhdGUoU2Nyb2xsaW5nTm9kZUlEIG5v
ZGVJCiAgICAgaWYgKGF1dG8gdmlzdWFsT3ZlcnJpZGVSZWN0ID0gZnJhbWVWaWV3LnZpc3VhbFZp
ZXdwb3J0T3ZlcnJpZGVSZWN0KCkpCiAgICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRPdmVy
cmlkZVZpc3VhbFZpZXdwb3J0U2l6ZShGbG9hdFNpemUodmlzdWFsT3ZlcnJpZGVSZWN0LnZhbHVl
KCkuc2l6ZSgpKSk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0T3Zl
cnJpZGVWaXN1YWxWaWV3cG9ydFNpemUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZnJhbWVTY3Jv
bGxpbmdOb2RlLnNldE92ZXJyaWRlVmlzdWFsVmlld3BvcnRTaXplKHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9G
cmFtZShmcmFtZVZpZXcuZml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5jcHAKaW5kZXggMzdiNjYzN2I0ODYwZDk4Y2UzODA2OGY1MWIzMWZlY2U2OGFjNmQx
NS4uZThlMTY1ZWRlMzM3NGMzYzVkYmM1M2Y5NDkxZjg5MTM4N2NjNjM3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8u
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0
U25hcFN0b3BPZmZzZXRCZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiB7CiAgICAgTGF5
b3V0VHlwZSBkaWZmZXJlbmNlID0gc2Nyb2xsRGVzdGluYXRpb25PZmZzZXQgLSBzY3JvbGxPcmln
aW5PZmZzZXQ7CiAgICAgaWYgKCFkaWZmZXJlbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgc2VhcmNo
U3RhcnRPZmZzZXQgPSAwOwogICAgIHNpemVfdCBpdGVyYXRpb24gPSAxOwpAQCAtMTAzLDcgKzEw
Myw3IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZmluZEZpcnN0U25hcFN0b3BPZmZzZXRC
ZXR3ZWVuT3JpZ2luQW5kRGVzdGluYXRpb24oY29uCiAgICAgICAgICAgICByZXR1cm4gaTsKICAg
ICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBJbmZvVHlwZSwgdHlwZW5hbWUgU2l6ZVR5cGUsIHR5
cGVuYW1lIExheW91dFR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4IGQxNjBjOTViYzQzZmY5ODFjMGE0N2Jm
MzYwM2M0MDA2ZGNlZTMxY2MuLjFlY2ZhZDE2ZTEzOGUwZmJjNTkxOGZkMjJiN2FiZGY2NDdiNjcz
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oCkBAIC03Myw3ICs3Myw3IEBAIHN0cnVjdCBTY3JvbGxTbmFwT2Zmc2V0
c0luZm8gewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0VHlwZT4gT3V0cHV0VHlwZSBj
b252ZXJ0VW5pdHMoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAwLjApIGNvbnN0OwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPgotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxV
bml0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29u
c3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Nyb2xsRGVzdGluYXRpb25PZmZz
ZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxVbml0VHlwZT4gb3JpZ2luYWxQb3NpdGlvbkZv
ckRpcmVjdGlvbmFsU25hcHBpbmcgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+IGNsb3Nlc3RTbmFwT2Zmc2V0KFNj
cm9sbEV2ZW50QXhpcywgY29uc3QgU2l6ZVR5cGUmIHZpZXdwb3J0U2l6ZSwgVW5pdFR5cGUgc2Ny
b2xsRGVzdGluYXRpb25PZmZzZXQsIGZsb2F0IHZlbG9jaXR5LCBPcHRpb25hbDxVbml0VHlwZT4g
b3JpZ2luYWxQb3NpdGlvbkZvckRpcmVjdGlvbmFsU25hcHBpbmcgPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogfTsKIAogdXNpbmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Nyb2xsU25h
cE9mZnNldHNJbmZvPExheW91dFVuaXQsIExheW91dFJlY3Q+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRleCBlNmFmOGYzOTY5M2ZjN2Jk
NjhhY2ZiMDdkNDY5OWFmZjZmZTRlNTRlLi43NDcxNDgyY2Y0YTNlMDUzMzg2YmIwOGU4N2I1YjM2
YTVlYzM2OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmNwcApAQCAtODcsNyArODcsNyBAQCBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3Np
bmdTdGVwcz4gU2Nyb2xsaW5nVHJlZTo6Y29tcHV0ZVdoZWVsUHJvY2Vzc2luZ1N0ZXBzKAogI2lm
IEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05TKQogICAgIGF1dG8gZXZlbnRMaXN0ZW5lclR5cGVz
ID0gZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzRm9yUG9pbnQocG9zaXRpb24pOwogICAgIGlmIChl
dmVudExpc3RlbmVyVHlwZXMuY29udGFpbnMoRXZlbnRMaXN0ZW5lclJlZ2lvblR5cGU6Ok5vblBh
c3NpdmVXaGVlbCkpIHsKLSAgICAgICAgaWYgKG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZS52YWx1
ZU9yKFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU6Ok5vbkJsb2NraW5nKQorICAgICAgICBpZiAobV90cmVlU3RhdGUuZ2VzdHVyZVN0
YXRlLnZhbHVlX29yKFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIHsgV2hl
ZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJvY2Vz
c2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAK
ICAgICAgICAgcmV0dXJuIHsgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZv
clNjcm9sbGluZywgV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvckJsb2Nr
aW5nRE9NRXZlbnREaXNwYXRjaCB9OwpAQCAtMTEwLDcgKzExMCw3IEBAIE9wdGlvblNldDxXaGVl
bEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdUcmVlOjpkZXRlcm1pbmVXaGVlbEV2ZW50
UHJvY2Vzc2luCiAgICAgICAgIHJldHVybiBsYXRjaGVkTm9kZUFuZFN0ZXBzLT5wcm9jZXNzaW5n
U3RlcHM7CiAgICAgfQogICAgIGlmICh3aGVlbEV2ZW50LmlzR2VzdHVyZVN0YXJ0KCkgfHwgd2hl
ZWxFdmVudC5pc05vbkdlc3R1cmVFdmVudCgpKQotICAgICAgICBtX3RyZWVTdGF0ZS5nZXN0dXJl
U3RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZSA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHJvY2Vzc2luZ1N0ZXBzID0gY29tcHV0ZVdoZWVs
UHJvY2Vzc2luZ1N0ZXBzKHdoZWVsRXZlbnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUuY3BwCmluZGV4IDU0MGM4MWRiYjliMDhhN2I5OTNmYWZiMGZlMTZlMmIyMTRmYjI5YzYuLjIy
MDNjZTJmMzBiMmVjZTZmNTJiZmJjNTNjNDY5YmZkNzVlN2RlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6c2Nyb2xsUG9zaXRpb25BbmRMYXlvdXRWaWV3cG9ydE1hdGNoKGNv
bnN0CiAKIEZsb2F0UmVjdCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpsYXlvdXRW
aWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHZpc2libGVDb250ZW50
T3JpZ2luLCBmbG9hdCBzY2FsZSwgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGZpeGVk
QmVoYXZpb3IpIGNvbnN0CiB7Ci0gICAgRmxvYXRTaXplIHZpc3VhbFZpZXdwb3J0U2l6ZSA9IG1f
b3ZlcnJpZGVWaXN1YWxWaWV3cG9ydFNpemUudmFsdWVPcihzY3JvbGxhYmxlQXJlYVNpemUoKSk7
CisgICAgRmxvYXRTaXplIHZpc3VhbFZpZXdwb3J0U2l6ZSA9IG1fb3ZlcnJpZGVWaXN1YWxWaWV3
cG9ydFNpemUudmFsdWVfb3Ioc2Nyb2xsYWJsZUFyZWFTaXplKCkpOwogICAgIEZsb2F0UmVjdCB2
aXNpYmxlQ29udGVudFJlY3QodmlzaWJsZUNvbnRlbnRPcmlnaW4sIHZpc3VhbFZpZXdwb3J0U2l6
ZSk7CiAgICAgTGF5b3V0UmVjdCB2aXN1YWxWaWV3cG9ydChGcmFtZVZpZXc6OnZpc2libGVEb2N1
bWVudFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0LCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0
KCksIHRvdGFsQ29udGVudHNTaXplKCksIHNjYWxlKSk7CiAgICAgTGF5b3V0UmVjdCBsYXlvdXRW
aWV3cG9ydChtX2xheW91dFZpZXdwb3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5j
cHAKaW5kZXggMGM3ZjRhNjBhZTUwYzMyYmNlYjZiOTUwOTk4NGFjMjc0ZjNmZjUwZi4uNGFkZDlm
YjNmODdlOTZjOTYwYmExMGNhNzdjMjc1NDg0MjkxOGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5n
Q29udHJvbGxlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hp
bmdDb250cm9sbGVyOjpyZWNlaXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW4K
IE9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05vZGVB
bmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNo
aW5nRGF0YUZvckV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9v
bCBhbGxvd0xhdGNoaW5nKSBjb25zdAogewogICAgIGlmICghYWxsb3dMYXRjaGluZykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX2xhdGNoZWROb2RlTG9jayB9OwogCkBAIC02OSw3ICs2OSw3
IEBAIE9wdGlvbmFsPFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OlNjcm9sbGluZ05v
ZGVBbmRQcm9jZXNzaW5nU3RlcHM+IFNjcm9sCiAgICAgICAgIHJldHVybiBtX2xhdGNoZWROb2Rl
QW5kU3RlcHM7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdApAQCAtNzgsNyArNzgs
NyBAQCBPcHRpb25hbDxTY3JvbGxpbmdOb2RlSUQ+IFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRy
b2xsZXI6OmxhdGNoZWROb2RlSUQoKSBjb25zdAogICAgIGlmIChtX2xhdGNoZWROb2RlQW5kU3Rl
cHMpCiAgICAgICAgIHJldHVybiBtX2xhdGNoZWROb2RlQW5kU3RlcHMtPnNjcm9sbGluZ05vZGVJ
RDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogT3B0aW9uYWw8U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5n
Tm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6
bGF0Y2hlZE5vZGVBbmRTdGVwcygpIGNvbnN0CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpub2RlRGlkSGFuZGxlRXZlbnQoU2Nyb2xsaW5n
Tm9kZUlEIHNjcm9sbGkKICAgICAgICAgaWYgKCF3aGVlbEV2ZW50LmlzR2VzdHVyZUNvbnRpbnVh
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmIChtX3Byb2Nl
c3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJlLnZhbHVlT3IoT3B0aW9uU2V0PFdoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM+IHsgfSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6
TWFpblRocmVhZEZvclNjcm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCisgICAgICAgIGlmIChtX3By
b2Nlc3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJlLnZhbHVlX29yKE9wdGlvblNldDxXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzPiB7IH0pLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpICYmIHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQpKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXgg
MDQwMTVjNzE4NGRiMzI5YTdiMmUxNTJmZTA3ZDIzNzI4NTQ0MWRkMC4uMmUwZTgzNmU2ZTQ5NWU5
MjgyMTAwZDJkNjgwNzYyOWU4NjA3Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIGJvb2wgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50QWZ0ZXJNYWlu
VGhyZWFkKGNvbnN0IFBsYXRmb3JtV2hlZWxFCiAKICAgICBib29sIGFsbG93TGF0Y2hpbmcgPSBm
YWxzZTsKICAgICBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJvY2Vzc2lu
Z1N0ZXBzOwotICAgIGlmIChnZXN0dXJlU3RhdGUudmFsdWVPcihXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZTo6QmxvY2tpbmcpID09IFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykg
eworICAgIGlmIChnZXN0dXJlU3RhdGUudmFsdWVfb3IoV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6
OkJsb2NraW5nKSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpIHsKICAg
ICAgICAgYWxsb3dMYXRjaGluZyA9IHRydWU7CiAgICAgICAgIHByb2Nlc3NpbmdTdGVwcyA9IHsg
V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkLCBXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07
CiAgICAgfQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjp3
aWxsU3RhcnRSZW5kZXJpbmdVcGRhdGUoKQogU2Vjb25kcyBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
Om1heEFsbG93YWJsZVJlbmRlcmluZ1VwZGF0ZUR1cmF0aW9uRm9yU3luY2hyb25pemF0aW9uKCkK
IHsKICAgICBjb25zdGV4cHIgZG91YmxlIGFsbG93YWJsZUZyYW1lRnJhY3Rpb24gPSAwLjU7Ci0g
ICAgYXV0byBkaXNwbGF5RlBTID0gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpLnZhbHVlT3IoNjAp
OworICAgIGF1dG8gZGlzcGxheUZQUyA9IG5vbWluYWxGcmFtZXNQZXJTZWNvbmQoKS52YWx1ZV9v
cig2MCk7CiAgICAgU2Vjb25kcyBmcmFtZUR1cmF0aW9uID0gMV9zIC8gKGRvdWJsZSlkaXNwbGF5
RlBTOwogICAgIHJldHVybiBhbGxvd2FibGVGcmFtZUZyYWN0aW9uICogZnJhbWVEdXJhdGlvbjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmluZGV4IDc1ZDczZWY0ODQ3
ZDk2NDEyNDAxMGYyZDRmNDc3ZTg3ZjcyMThkN2QuLjdhMzczMjBlN2QyZGQ4MDk4NWRmMjRkMzY1
Nzc5ZGFlZWQxMTE1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpA
QCAtODMsNyArODMsNyBAQCBTZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6
YW5pbWF0aW9uRHVyYXRpb24oKQogCiBib29sIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yzo6cmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpCiB7Ci0gICAgaWYgKG1fcmVxdWlyZXNNb21l
bnR1bVNjcm9sbGluZyA9PSBXVEY6Om51bGxvcHQpCisgICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1
bVNjcm9sbGluZyA9PSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIG1fcmVxdWlyZXNNb21lbnR1bVNj
cm9sbGluZyA9IG1faW5pdGlhbFNjcm9sbE9mZnNldCAhPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0
KCkgfHwgbV9pbml0aWFsVmVsb2NpdHkuYXJlYSgpOwogICAgIHJldHVybiBtX3JlcXVpcmVzTW9t
ZW50dW1TY3JvbGxpbmcudmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Ry
YWdDb250cm9sbGVyV2luLmNwcAppbmRleCAzMmY1YjNhZTQxNTRhMzdmZDhjMjI3OWNhMDE1OWI1
NjdjYjY5NDViLi5kNTA4YjZmOWM4ZDMzODAwYmUzNTZjMTNiMDc2YzhmYWVkYTNlMmNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCkBAIC00NCwx
MyArNDQsMTMgQEAgY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0g
MC43NWY7CiAKIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3Bl
cmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAgICAvLyBGSVhNRTogVG8gbWF0
Y2ggdGhlIG1hY09TIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4KKyAg
ICAvLyBGSVhNRTogVG8gbWF0Y2ggdGhlIG1hY09TIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJu
IHN0ZDo6bnVsbG9wdC4KICAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0
aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCiAgICAg
Ly8gSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlv
bkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCiAgICAgLy8gV2ViQ29yZSBpdHNlbGYuCiAgICAg
aWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29w
eUtleURvd24oY29uc3QgRHJhZ0RhdGEmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vUmVzb3VyY2VVc2FnZVRocmVhZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9SZXNvdXJjZVVzYWdlVGhyZWFkV2luLmNwcAppbmRleCA2Y2NkMTZjOTdkMGNmZTFlNDkyNDM2
OWZmMWE0ZDU1ZWYzYjU3NjExLi5mNzc0MWFmMDdkYmZiZGIyODA5MjgwMzc5ZWQ5ZGZiZTI0ZDM0
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhy
ZWFkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdlVGhy
ZWFkV2luLmNwcApAQCAtMTMxLDggKzEzMSw4IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6
cGxhdGZvcm1Db2xsZWN0TWVtb3J5RGF0YShKU0M6OlZNKiB2bSwgUmVzb3VyY2VVc2FnZURhCiAK
ICAgICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRFeHRlcm5hbDsKIAot
ICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+
aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNv
bmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOwotICAgIGRhdGEu
dGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5mdWxs
QWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihTZWNvbmRzKHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4
dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlD
YWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29s
bGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2so
KS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Fib3J0YWJsZVRhc2tRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QWJvcnRhYmxlVGFza1F1ZXVlLmgKaW5kZXggMmE2NTAyM2E5MjAzODhhMGMyOThlMzlhNGVkZjE1
ODUzMDM3ZGUyZC4uMWQwY2Y0NjdiZTJjMmU3NjE3MzliNDEyMmMxMWQ5MjExMDM0MDdmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxlVGFza1F1ZXVlLmgKQEAgLTE0NSw5
ICsxNDUsOSBAQCBwdWJsaWM6CiAKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9Owog
ICAgICAgICBpZiAobV9hYm9ydGluZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgIE9wdGlvbmFsPFI+
IHJlc3BvbnNlID0gV1RGOjpudWxsb3B0OworICAgICAgICBPcHRpb25hbDxSPiByZXNwb25zZSA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcG9zdFRhc2soW3RoaXMsICZyZXNwb25zZSwgJm1haW5U
aHJlYWRUYXNrSGFuZGxlcl0oKSB7CiAgICAgICAgICAgICBSIHJlc3BvbnNlVmFsdWUgPSBtYWlu
VGhyZWFkVGFza0hhbmRsZXIoKTsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCmluZGV4IGVlZjhiOTNjYTlhOTUy
ODIyNGFlYTIzYzQ0NWU4YTQ3NTVjMjNkYjAuLmQyMjMwMTg0N2EyMDIzNmFjMDhlYjFkMGIzNDVj
ZWI2NTMxODIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaApAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICAg
ICAgZGVjb2RlciA+PiB0eXBlOwogICAgICAgICBpZiAoIXR5cGUpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4geyBDb250ZW50VHlwZShXVEZNb3ZlKCp0eXBlKSkgfTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nvb2tpZS5oCmluZGV4IDVmMDk4MDZmMTgzMzMzNzQ3ZmY2ZTkyNDBlMzQ1ZTdh
MTBmYzFlZWYuLjg5M2E5NDUwYTUyM2Q3ZjcyM2ZiYzQ1NjZmNWE1MmRkZjY0NDc4ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oCkBAIC0xMzQsMzEgKzEzNCwzMSBAQCBPcHRpb25hbDxDb29r
aWU+IENvb2tpZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29va2llIGNvb2tp
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5uYW1lKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvb2tpZS52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
b29raWUuZG9tYWluKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5wYXRoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5jcmVhdGVkKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvb2tpZS5leHBpcmVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvb2tpZS5odHRwT25seSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUu
c2VjdXJlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZXNzaW9uKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5jb21tZW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvb2tpZS5jb21tZW50VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvb2tpZS5wb3J0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb29raWUuc2Ft
ZVNpdGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBjb29raWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGVDb21wb25lbnRzLmNwcAppbmRleCBlZGI1YThkNTIyNjJiYTlmYjdlMTNlOWFjY2Y4
ODUwNGVmZjFkMWExLi45Yzg4MTVkZTQxYjJjN2IwNmI0NjMzZTZhMTNhMTAwYjRjNmY2NDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHVuc2lnbmVk
IGNvdW50RGlnaXRzKFN0cmluZ1BhcnNpbmdCdWZmZXIKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxpbnQ+IHBhcnNlSW50KFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwgdW5zaWduZWQgbWF4aW11bU51bWJlck9mRGlnaXRz
VG9QYXJzZSkKIHsKICAgICBpZiAobWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSA+IGJ1ZmZl
ci5sZW5ndGhSZW1haW5pbmcoKSB8fCAhbWF4aW11bU51bWJlck9mRGlnaXRzVG9QYXJzZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMgZm9yIElT
TyA4NjAxLgogCkBAIC0xMTcsMTAgKzExNywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8aW50PiBwYXJzZUludChTdHJpbmdQYXJzaW5nQnVmZgog
ICAgIHVuc2lnbmVkIGRpZ2l0c1JlbWFpbmluZyA9IDA7CiAgICAgd2hpbGUgKGRpZ2l0c1JlbWFp
bmluZyA8IG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpIHsKICAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoKmJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaW50IGRpZ2l0ID0gKmJ1ZmZl
ciAtICcwJzsKICAgICAgICAgaWYgKHZhbHVlID4gKElOVF9NQVggLSBkaWdpdCkgLyAxMCkgLy8g
Q2hlY2sgZm9yIG92ZXJmbG93LgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHZhbHVlID0gdmFsdWUgKiAx
MCArIGRpZ2l0OwogICAgICAgICArK2RpZ2l0c1JlbWFpbmluZzsKICAgICAgICAgKytidWZmZXI7
CkBAIC0xMzIsNyArMTMyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3Rh
dGljIE9wdGlvbmFsPGludD4gcGFyc2VJbnRXaXRoaW5MaW1pdHMoU3RyaW4KIHsKICAgICBhdXRv
IHZhbHVlID0gcGFyc2VJbnQoYnVmZmVyLCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKTsK
ICAgICBpZiAoISh2YWx1ZSAmJiAqdmFsdWUgPj0gbWluaW11bVZhbHVlICYmICp2YWx1ZSA8PSBt
YXhpbXVtVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTkwLDEyICsxOTAs
MTIgQEAgc3RhdGljIGJvb2wgd2l0aGluSFRNTERhdGVMaW1pdHMoaW50IHllYXIsIGludCBtb250
aCwgaW50IG1vbnRoRGF5LCBpbnQgaG91ciwgaW4KIHRlbXBsYXRlPHR5cGVuYW1lIEY+IHN0YXRp
YyBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gY3JlYXRlRnJvbVN0cmluZyhTdHJpbmdWaWV3IHNv
dXJjZSwgRiYmIHBhcnNlRnVuY3Rpb24pCiB7CiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHNvdXJjZSwgWyZdKGF1dG8g
YnVmZmVyKSAtPiBPcHRpb25hbDxEYXRlQ29tcG9uZW50cz4gewogICAgICAgICBEYXRlQ29tcG9u
ZW50cyBkYXRlOwogICAgICAgICBpZiAoIXBhcnNlRnVuY3Rpb24oYnVmZmVyLCBkYXRlKSB8fCAh
YnVmZmVyLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGRhdGU7CiAgICAgfSk7
CiB9CkBAIC00OTAsOCArNDkwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBEYXRlQ29tcG9uZW50czo6cGFyc2VUaW1lKFN0cmluZ1BhcnNpbmdCdWYKIAogICAgIG1f
aG91ciA9ICpob3VyOwogICAgIG1fbWludXRlID0gKm1pbnV0ZTsKLSAgICBtX3NlY29uZCA9IHNl
Y29uZC52YWx1ZU9yKDApOwotICAgIG1fbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZC52YWx1ZU9y
KDApOworICAgIG1fc2Vjb25kID0gc2Vjb25kLnZhbHVlX29yKDApOworICAgIG1fbWlsbGlzZWNv
bmQgPSBtaWxsaXNlY29uZC52YWx1ZV9vcigwKTsKICAgICBtX3R5cGUgPSBEYXRlQ29tcG9uZW50
c1R5cGU6OlRpbWU7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01MjQsNyArNTI0LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21wb25lbnRzPiBjcmVhdGVG
cm9tVGltZU9mZnNldChkb3VibGUKIHsKICAgICBEYXRlQ29tcG9uZW50cyByZXN1bHQ7CiAgICAg
aWYgKCFmdW5jdGlvbihyZXN1bHQsIHRpbWVPZmZzZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3Nl
clBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVUaW1lQ2hvb3NlclBh
cmFtZXRlcnMuaAppbmRleCAwZTdhNzUzMTU2NDU0ZGVmNjZlOTc4NWViYTNjMGE5ZDI4NmJhY2Vi
Li4yM2EzMzg2YmI1ODA2YmFiZGM3YTA5OThkNzFlZWJkNzk0YjgwZTFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oCkBAIC04
Myw2NyArODMsNjcgQEAgT3B0aW9uYWw8RGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycz4gRGF0ZVRp
bWVDaG9vc2VyUGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGQKIHsKICAgICBBdG9tU3RyaW5n
IHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEludFJlY3Qg
YW5jaG9yUmVjdEluUm9vdFZpZXc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbmNob3JSZWN0
SW5Sb290VmlldykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxvY2FsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgY3VycmVudFZhbHVlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY3VycmVudFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IHN1Z2dlc3Rpb25WYWx1ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdWdnZXN0aW9uVmFs
dWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXM7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25MYWJlbHM7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdWdnZXN0aW9uTGFiZWxzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBtaW5pbXVtOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobWluaW11bSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgbWF4aW11bTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1heGltdW0pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHN0ZXA7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGVwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBzdGVwQmFz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZXBCYXNlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgcmVx
dWlyZWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1aXJlZCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29s
IGlzQW5jaG9yRWxlbWVudFJUTDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQW5jaG9yRWxl
bWVudFJUTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodXNlRGFya0FwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNTZWNvbmRG
aWVsZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1NlY29uZEZpZWxkKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGJvb2wgaGFzTWlsbGlzZWNvbmRGaWVsZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc01p
bGxpc2Vjb25kRmllbGQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodHlwZSksIGFuY2hv
clJlY3RJblJvb3RWaWV3LCBXVEZNb3ZlKGxvY2FsZSksIFdURk1vdmUoY3VycmVudFZhbHVlKSwg
V1RGTW92ZShzdWdnZXN0aW9uVmFsdWVzKSwgV1RGTW92ZShsb2NhbGl6ZWRTdWdnZXN0aW9uVmFs
dWVzKSwgV1RGTW92ZShzdWdnZXN0aW9uTGFiZWxzKSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwg
c3RlcEJhc2UsIHJlcXVpcmVkLCBpc0FuY2hvckVsZW1lbnRSVEwsIHVzZURhcmtBcHBlYXJhbmNl
LCBoYXNTZWNvbmRGaWVsZCwgaGFzTWlsbGlzZWNvbmRGaWVsZCB9fTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGNlMGRmZjJjZmFmM2I1Y2Y1NTA3MGViOTkxYmQ1ZGIxZjJj
OGUxZjcuLmQ5Y2M2YWUzYzdiZGM3YzNmOTEzN2E4NjYzMjY4NTM2ZDdjMzBmMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICBl
bnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZv
ckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUg
dGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywg
d2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShE
cmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCA9IFdURjo6bnVsbG9wdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4sIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdBcHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwg
T3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rp
b24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJl
Y2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQg
bm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQ
TEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQgPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdE
YXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICBj
b25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVz
Y3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERy
YWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ltYWdlRXh0cmFjdGlvblJlc3VsdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmgKaW5kZXggNzAxOWVlZWEz
Y2FjNGMwODc1YmM4OTJhMjVjNzdjN2M4NzkzMzdkNS4uYmY3ZGExMzI5ZjNhM2IwMmFhOTAyZmEy
MDg2YmE0NTQxOWE3Zjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1h
Z2VFeHRyYWN0aW9uUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSW1hZ2VF
eHRyYWN0aW9uUmVzdWx0LmgKQEAgLTYzLDEyICs2MywxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBPcHRpb25hbDxJbWFnZUV4dHJhY3Rpb25UZXh0RGF0YT4gSW1hZ2VFeHRyYWN0aW9uVGV4
dERhdAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAg
ICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVh
ZDsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1
YWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdGV4dCksIFdURk1vdmUoKm5vcm1hbGl6
ZWRRdWFkKSB9fTsKIH0KQEAgLTExNCwxMiArMTE0LDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPEltYWdlRXh0cmFjdGlvbkxpbmVEYXRhPiBJbWFnZUV4dHJhY3Rpb25MaW5l
RGF0CiAgICAgT3B0aW9uYWw8RmxvYXRRdWFkPiBub3JtYWxpemVkUXVhZDsKICAgICBkZWNvZGVy
ID4+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGlmICghbm9ybWFsaXplZFF1YWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxWZWN0b3I8SW1hZ2VFeHRyYWN0aW9uVGV4dERhdGE+PiBjaGlsZHJlbjsKICAgICBk
ZWNvZGVyID4+IGNoaWxkcmVuOwogICAgIGlmICghY2hpbGRyZW4pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgV1RGTW92ZSgqbm9ybWFsaXplZFF1YWQpLCBXVEZNb3ZlKCpjaGlsZHJlbikgfX07CiB9CkBA
IC0xNjEsMTMgKzE2MSwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxJbWFn
ZUV4dHJhY3Rpb25SZXN1bHQ+IEltYWdlRXh0cmFjdGlvblJlc3VsdDo6ZAogICAgIE9wdGlvbmFs
PFZlY3RvcjxJbWFnZUV4dHJhY3Rpb25MaW5lRGF0YT4+IGxpbmVzOwogICAgIGRlY29kZXIgPj4g
bGluZXM7CiAgICAgaWYgKCFsaW5lcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICAgICBPcHRpb25hbDxWZWN0b3I8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz4+IGRh
dGFEZXRlY3RvcnM7CiAgICAgZGVjb2RlciA+PiBkYXRhRGV0ZWN0b3JzOwogICAgIGlmICghZGF0
YURldGVjdG9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcmV0dXJuIHt7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmNwcAppbmRleCAzMmFhZjljNWFkZmNiNThjNDZlNmFjNjNiNmFiNzBhYTRjM2U0NWY0
Li4wZjU0MGY5MzcyYWFkMTBiYTk5ZmE3ZmI1ODBjZWY3MGNjNWMzMGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIExlbmd0aCBwYXJzZUxl
bmd0aChjb25zdCBVQ2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIH0KICAgICBhdXRv
IHIgPSBwYXJzZUludGVnZXI8aW50Pih7IGRhdGEsIGludExlbmd0aCB9KTsKICAgICBpZiAobmV4
dCA9PSAnKicpCi0gICAgICAgIHJldHVybiBMZW5ndGgoci52YWx1ZU9yKDEpLCBMZW5ndGhUeXBl
OjpSZWxhdGl2ZSk7CisgICAgICAgIHJldHVybiBMZW5ndGgoci52YWx1ZV9vcigxKSwgTGVuZ3Ro
VHlwZTo6UmVsYXRpdmUpOwogICAgIGlmIChyKQogICAgICAgICByZXR1cm4gTGVuZ3RoKCpyLCBM
ZW5ndGhUeXBlOjpGaXhlZCk7CiAgICAgcmV0dXJuIExlbmd0aCgwLCBMZW5ndGhUeXBlOjpSZWxh
dGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXph
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAppbmRl
eCA4NzdmNmU1YTBlZmUzMmFlN2Q0YzcyN2Q0YTAyM2NlMjU2ZTYzNjBhLi5kNGIwMjlmMjIzOTcy
YjczYTdhOTk3ODFkMmNjMTRlNzIyYWYzNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ0luaXRpYWxpemF0aW9uLmgKQEAgLTM4LDcgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGxvZ0xldmVsU3RyaW5nKCk7CiBib29sIGlzTG9nQ2hhbm5lbEVuYWJsZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nQ2hhbm5lbFRvQWNjdW11bGF0
ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckFsbExvZ0No
YW5uZWxzVG9BY2N1bXVsYXRlKCk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIGluaXRpYWxpemVMb2dD
aGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBXVEY6Om51bGxvcHQpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25h
bDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KTsKIAogI2VuZGlmIC8vICFMT0dfRElTQUJMRUQgfHwg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mby5oCmluZGV4IDE4NjE3NzZiMmViNmFm
Yzk2MDQ5MWU0OWM2ODIyNGJhOWM5ZjkzZTMuLjE1NWM5ZDUxZjI2OGQxNGRiYTQ2NjkzYjk5OGMy
MDUxMDc0ZTY0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2Fw
YWJpbGl0aWVzRGVjb2RpbmdJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVk
aWFDYXBhYmlsaXRpZXNEZWNvZGluZ0luZm8uaApAQCAtNjQsMTIgKzY0LDEyIEBAIE9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5n
SW5mbzo6ZGVjb2RlKERlCiB7CiAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZv
OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVk
aWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgZGVj
b2RlciA+PiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9ydGVkQ29uZmln
dXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNZWRpYUNhcGFiaWxpdGllc0RlY29kaW5nSW5mbygK
ICAgICAgICAgV1RGTW92ZSgqaW5mbyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8uaAppbmRleCAxMjIwMDYzNTNlNTdm
NjY4ODkzYzdlN2QzYjc1YThjMDU4YTJlOWMzLi45MTU4N2JiMzlhMTRmMDYxMzlmZmQ1MjExNWFk
NDFiZDdjM2VkOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNh
cGFiaWxpdGllc0VuY29kaW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJbmZvLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25h
bDxNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbz4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGlu
Z0luZm86OmRlY29kZShEZQogewogICAgIGF1dG8gaW5mbyA9IE1lZGlhQ2FwYWJpbGl0aWVzSW5m
bzo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghaW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE1l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uOwogICAgIGRl
Y29kZXIgPj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbjsKICAgICBpZiAoIXN1cHBvcnRlZENvbmZp
Z3VyYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTWVkaWFDYXBhYmlsaXRpZXNFbmNvZGluZ0luZm8o
CiAgICAgICAgIFdURk1vdmUoKmluZm8pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZWRpYUNhcGFiaWxpdGllc0luZm8uaAppbmRleCAyMzNhYTQ2NGUyMjc4YzFmMWVmOWFkOWI4MjQ0
MWY3Y2JhMzZmMDY3Li43NzE1YzIzNjk3MDRiZDkyZWFlYjEwZTg4NGQwZGZmNzAyMDVlNWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0luZm8uaApA
QCAtNTIsMTcgKzUyLDE3IEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gTWVkaWFD
YXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxi
b29sPiBzdXBwb3J0ZWQ7CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWQ7CiAgICAgaWYgKCFzdXBw
b3J0ZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBzbW9vdGg7CiAgICAgZGVjb2RlciA+PiBz
bW9vdGg7CiAgICAgaWYgKCFzbW9vdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwb3dlckVm
ZmljaWVudDsKICAgICBkZWNvZGVyID4+IHBvd2VyRWZmaWNpZW50OwogICAgIGlmICghcG93ZXJF
ZmZpY2llbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKnN1cHBvcnRlZCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgKaW5kZXggMmNiYzUxZDU2OWRkNmM5
ZTgyNzcxNjVmMThjNDExNGY3MTYxNWRiMC4uOGM1ZDYxNTk2YjMxZTAzZWEzNWE0ODA1MWIzNjMy
YmY5NGVmMmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2
YWxUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBuZXh0ID0gc21h
bGxlc3ROb2RlR3JlYXRlclRoYW5Gcm9tKHBvaW50LCB0aGlzLT5yb290KCkpOwogICAgICAgICBp
ZiAoIW5leHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIG5leHQtPmRhdGEoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKaW5kZXggN2MxMGFlYzNjZjU2
M2EwN2NjZGYxNWRmZDM1YjJkZDdiYTFlMDM2My4uMjYxMDRmNDNiZGE2MjFmZGIzMTQyMzc4N2Ez
ZGE1OWViYWI2ZDE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBhc3Rl
Ym9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHN0cmF0
ZWd5ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpKQogICAgICAg
ICByZXR1cm4gc3RyYXRlZ3ktPmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhuYW1lKCksIG1fY2hhbmdl
Q291bnQsIGNvbnRleHQoKSk7CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4g
UGFzdGVib2FyZDo6cGFzdGVib2FyZEl0ZW1JbmZvKHNpemVfdCBpbmRleCkgY29uc3QKQEAgLTc5
LDcgKzc5LDcgQEAgT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0
ZWJvYXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdAogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oaW5kZXgpOwogI2VuZGlmCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhzaXplX3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAppbmRleCBhZjU0NzE1ZDhhYzhlNmY4N2M0MWJmYWZlN2ZhYjJmZjYzNjQ4ZDk3Li4wNWM2YWZl
NDU3ZmY5ZTkxZGZiMTkyNWUyNDhhNzc0MWM5YzU2ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCkBAIC0yMTMsOSArMjEzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjbGVhcigpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpOwogCi0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90
PiBpdGVtSW5kZXggPSBXVEY6Om51bGxvcHQpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5k
ZXggPSBXVEY6Om51bGxvcHQpOworICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5ID0gUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5cGUsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkRmlsZVJlYWRlciYsIE9wdGlvbmFsPHNpemVfdD4gaXRlbUluZGV4ID0gc3RkOjpu
dWxsb3B0KTsKIAogICAgIHN0YXRpYyBib29sIGNhbldyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJv
YXJkVHlwZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkSXRlbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5m
by5oCmluZGV4IGYwZDVlYTQwYzdiYzBjNWE1MDIxMTFkY2ZhODM4ZmE3MzNmZDY5Y2YuLmIxYzdk
NDc4ZjM3MWY2Y2NjZDU0YWRlZmQ2NzhlYTJkN2E3NjJlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oCkBAIC01NiwxMCArNTYsMTAgQEAgT3B0aW9u
YWw8UHJlc2VudGF0aW9uU2l6ZT4gUHJlc2VudGF0aW9uU2l6ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgUHJlc2VudGF0aW9uU2l6ZSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQud2lkdGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMzUsMzEgKzEzNSwz
MSBAQCBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmRJdGVtSW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUGFzdGVib2FyZEl0ZW1JbmZvIHJlc3VsdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYXRoc0ZvckZpbGVVcGxvYWQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0ZvckZpbGVVcGxv
YWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGxhdGZvcm1UeXBlc0J5
RmlkZWxpdHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3VnZ2VzdGVk
RmlsZU5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmVycmVk
UHJlc2VudGF0aW9uU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5p
c05vblRleHRUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRh
aW5zRmlsZVVSTEFuZEZpbGVVcGxvYWRDb250ZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LndlYlNhZmVUeXBlc0J5RmlkZWxpdHkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
ZmVycmVyUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5
LmNwcAppbmRleCBmN2U5N2MyYTk0NWI3M2U0ODUwNzNiYjczYjJlMWYzZjJjZTU1YWVhLi5iZTA0
NjAxNTA1NWE1ZmJkODQ3YTc1NzMyYzIxNDkwMjVlZWMzZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxSZWZlcnJlclBvbGljeT4gcGFyc2VSZWZlcnJlclBvbGljeVRva2VuKFN0cmluZ1ZpZXcg
cG9saWN5LCBTaG91CiAgICAgaWYgKCFwb2xpY3kuaXNOdWxsKCkgJiYgcG9saWN5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICAgICAKIE9w
dGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcgcG9s
aWN5U3RyaW5nLCBSZWZlcnJlclBvbGljeVNvdXJjZSBzb3VyY2UpCkBAIC04Niw3ICs4Niw3IEBA
IE9wdGlvbmFsPFJlZmVycmVyUG9saWN5PiBwYXJzZVJlZmVycmVyUG9saWN5KFN0cmluZ1ZpZXcg
cG9saWN5U3RyaW5nLCBSZWZlcnJlclBvCiAgICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVyUG9s
aWN5VG9rZW4ocG9saWN5U3RyaW5nLCBTaG91bGRQYXJzZUxlZ2FjeUtleXdvcmRzOjpObyk7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIHJlZmVycmVyUG9saWN5VG9T
dHJpbmcoY29uc3QgUmVmZXJyZXJQb2xpY3kmIHJlZmVycmVyUG9saWN5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKaW5kZXggYTVmYTA3N2QxNjcxOWI4NmFi
ZGNmOGY5N2ExNjc4ZjM2ZmZkNzk0My4uMWI3ZTVkYzEyMzhhZjA0ZmY5ZTkwOWU5YzQxYmQwOTk5
Y2QzMmM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVE
b21haW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5o
CkBAIC0xNDcsNyArMTQ3LDcgQEAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IFJlZ2lzdHJh
YmxlRG9tYWluOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+
IGRvbWFpbjsKICAgICBkZWNvZGVyID4+IGRvbWFpbjsKICAgICBpZiAoIWRvbWFpbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHJlZ2lzdHJhYmxl
RG9tYWluLm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKCpkb21haW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCmluZGV4IDg4Yjc1NGQ4MWViNjY3YThj
YWE3NTE0OTU5ODQzZWU4ZWNlNzE2OGEuLmQ2ZTk3ZTNhMjA5MTQxODkxNzdmNjA3M2EyMDE0OTNh
ODQwMTQxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3Bl
cnRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgK
QEAgLTgxLDEyICs4MSwxMiBAQCBPcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9w
ZXJ0aWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQbGF0Zm9ybURp
c3BsYXlJRD4gcHJpbWFyeURpc3BsYXlJRDsKICAgICBkZWNvZGVyID4+IHByaW1hcnlEaXNwbGF5
SUQ7CiAgICAgaWYgKCFwcmltYXJ5RGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2NyZWVu
RGF0YU1hcD4gc2NyZWVuRGF0YU1hcDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRhdGFNYXA7CiAg
ICAgaWYgKCFzY3JlZW5EYXRhTWFwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyAqcHJpbWFyeURpc3Bs
YXlJRCwgV1RGTW92ZSgqc2NyZWVuRGF0YU1hcCkgfSB9OwogfQpAQCAtMTExLDcwICsxMTEsNzAg
QEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBzY3JlZW5BdmFpbGFibGVSZWN0OwogICAgIGRl
Y29kZXIgPj4gc2NyZWVuQXZhaWxhYmxlUmVjdDsKICAgICBpZiAoIXNjcmVlbkF2YWlsYWJsZVJl
Y3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHNjcmVlblJlY3Q7CiAgICAgZGVjb2Rl
ciA+PiBzY3JlZW5SZWN0OwogICAgIGlmICghc2NyZWVuUmVjdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gc2NyZWVuQ29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+
IHNjcmVlbkNvbG9yU3BhY2U7CiAgICAgaWYgKCFzY3JlZW5Db2xvclNwYWNlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8aW50PiBzY3JlZW5EZXB0aDsKICAgICBkZWNvZGVyID4+IHNjcmVlbkRlcHRoOwog
ICAgIGlmICghc2NyZWVuRGVwdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50OwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAg
ICAgaWYgKCFzY3JlZW5EZXB0aFBlckNvbXBvbmVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcjsKICAgICBkZWNvZGVyID4+IHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvcjsKICAgICBpZiAoIXNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwogICAgIGRl
Y29kZXIgPj4gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CiAgICAgaWYgKCFzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNjcmVlblN1cHBvcnRzSGlnaER5
bmFtaWNSYW5nZTsKICAgICBkZWNvZGVyID4+IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZTsKICAgICBpZiAoIXNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBPcHRpb25hbDxib29sPiBzY3JlZW5Jc01vbm9jaHJvbWU7CiAgICAg
ZGVjb2RlciA+PiBzY3JlZW5Jc01vbm9jaHJvbWU7CiAgICAgaWYgKCFzY3JlZW5Jc01vbm9jaHJv
bWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gZGlzcGxheU1hc2s7CiAgICAgZGVjb2Rl
ciA+PiBkaXNwbGF5TWFzazsKICAgICBpZiAoIWRpc3BsYXlNYXNrKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8SU9SZWdpc3RyeUdQVUlEPiBncHVJRDsKICAgICBkZWNvZGVyID4+IGdwdUlEOwogICAgIGlm
ICghZ3B1SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxEeW5hbWljUmFuZ2VNb2RlPiBwcmVmZXJyZWRE
eW5hbWljUmFuZ2VNb2RlOwogICAgIGRlY29kZXIgPj4gcHJlZmVycmVkRHluYW1pY1JhbmdlTW9k
ZTsKICAgICBpZiAoIXByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBPcHRpb25hbDxmbG9h
dD4gc2NhbGVGYWN0b3I7CiAgICAgZGVjb2RlciA+PiBzY2FsZUZhY3RvcjsKICAgICBpZiAoIXNj
YWxlRmFjdG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICByZXR1cm4geyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCmluZGV4IDFiZDgyZmZh
YTllNWYzMThlZGNjOWYyZDZjODQxYTg5Y2JjYjk0MDEuLjc4NmM0OTYzYWRlZDA1MGZlYmQzYjI3
NjdkNzcyMTM4MjMzMWYyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBAIC0xNzQsOCArMTc0LDggQEAgdm9pZCBTY3JvbGxB
bmltYXRpb25LaW5ldGljOjpzdGFydChjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsUG9zaXRpb24s
IGNvbnN0IEZsb2EKIAogICAgIGlmICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsK
ICAgICAgICAgbV9wb3NpdGlvbiA9IGluaXRpYWxQb3NpdGlvbjsKLSAgICAgICAgbV9ob3Jpem9u
dGFsRGF0YSA9IFdURjo6bnVsbG9wdDsKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IG1fdmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMDIsMTQgKzIwMiwxNCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYQogICAgICAgICAg
ICAgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsUG9zaXRpb24ueCgpLAogICAgICAgICAgICAgaW5pdGlh
bFBvc2l0aW9uLngoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LngoKSwgbV9ob3Jpem9u
dGFsRGF0YSkpOwogICAgIH0gZWxzZQotICAgICAgICBtX2hvcml6b250YWxEYXRhID0gV1RGOjpu
dWxsb3B0OworICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKG1heVZTY3JvbGwpIHsKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBQZXJBeGlzRGF0YShl
eHRlbnRzLm1pbmltdW1TY3JvbGxQb3NpdGlvbi55KCksCiAgICAgICAgICAgICBleHRlbnRzLm1h
eGltdW1TY3JvbGxQb3NpdGlvbi55KCksCiAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24ueSgp
LCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAg
IH0gZWxzZQotICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
bV92ZXJ0aWNhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX3Bvc2l0aW9uID0gaW5pdGlh
bFBvc2l0aW9uOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSB0aWNr
VGltZSAvIDIuOwpAQCAtMjIxLDEwICsyMjEsMTAgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5l
dGljOjphbmltYXRpb25UaW1lckZpcmVkKCkKICAgICBhdXRvIGRlbHRhID0gZGVsdGFUb05leHRG
cmFtZSgpOwogCiAgICAgaWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERhdGEu
dmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5hbmlt
YXRlU2Nyb2xsKGRlbHRhKSkKLSAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fdmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSWYgb25l
IG9mIHRoZSBheGVzIGRpZG4ndCBmaW5pc2ggaXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVl
IGl0LgogICAgIGlmIChtX2hvcml6b250YWxEYXRhIHx8IG1fdmVydGljYWxEYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAwNTc1ZDIxOTFiYWUyYjc0ODEyYjNi
OTJhYWJhMzNiZjM1ZjAyYWJhLi4zZDJmNjJlZmIwMDA3NTNjNzY2MjQ0MmI3OTM0MTIzNTE0NDc1
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNDc0LDggKzQ3
NCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6aGFuZGxlRGVmZXJyZWRTY3JvbGxVcGRhdGVBZnRlckNv
bnRlbnRTaXplQ2hhbmdlKCkKICAgICBlbHNlIGlmIChtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cykK
ICAgICAgICAgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0SW1wbChtX2RlZmVy
cmVkU2Nyb2xsT2Zmc2V0cy52YWx1ZSgpLmZpcnN0LCBtX2RlZmVycmVkU2Nyb2xsT2Zmc2V0cy52
YWx1ZSgpLnNlY29uZCk7CiAgICAgCi0gICAgbV9kZWZlcnJlZFNjcm9sbERlbHRhID0gV1RGOjpu
dWxsb3B0OwotICAgIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzID0gV1RGOjpudWxsb3B0OworICAg
IG1fZGVmZXJyZWRTY3JvbGxEZWx0YSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2RlZmVycmVkU2Ny
b2xsT2Zmc2V0cyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxU
byhjb25zdCBTY3JvbGxQb3NpdGlvbiYgbmV3UG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggNjlmMDdmNDRiYmIwMWZjZTBhNjhmYTg1MjMz
OTdlOTc5NjQ2ZTNlMC4uYWVlMGQ4NzZlZjM2NjhjNWEwMTg5ZmMyMjcyNDA3NTcwM2EzMjNiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApAQCAtNTcsOCAr
NTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXIo
Y29uc3QgU3RyaW5nJiB0eXBlKSBmaW5hbDsKIAotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7
IH0KLSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSwgT3B0aW9uYWw8c2l6ZV90PiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9
CisgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRVUkxSZWFkaW5n
UG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9wdGlvbmFsPHNp
emVfdD4gPSBzdGQ6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBPcHRpb25hbDxzaXpl
X3Q+ID0gc3RkOjpudWxsb3B0KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYpIGZpbmFsOwogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKaW5kZXggYzY2NmVkYjY4ZWIyMGVm
ZmNmNDczMjE4ZTMwNWE3NGNkNzQ3YzlkMi4uYmM5N2U0ZTRiZjU0MjdlY2VkNzFmODdjNGUxYzhh
NGZjNWI5MmViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBpbnQgVGhlbWU6OmJhc2VsaW5lUG9zaXRpb25BZGp1c3RtZW50KENvbnRyb2xQYXJ0KSBjb25z
dAogCiBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZTo6Y29udHJvbEZvbnQo
Q29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgZmxvYXQpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMZW5ndGhT
aXplIFRoZW1lOjpjb250cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9U
aW1lci5oCmluZGV4IGQ1ZjA2ZWM3Y2MyY2UxZTcxODdkNjEzMjk1NmUwYThiZDYwZTNjY2MuLjU2
Zjc2NTc4MWMzYjEzNzRhMjE2MjU5NWIxYjA5MmI5ZWRkNzU3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4g
YWxpZ25lZEZpcmVUaW1lKE1vbm90b25pY1RpbWUpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gYWxpZ25lZEZpcmVUaW1l
KE1vbm90b25pY1RpbWUpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9p
ZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAgICAgdm9pZCBjaGVja0hlYXBJbmRleCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9JT0Nh
bGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2su
aAppbmRleCAyMzc2OTBjMDJjY2FmZGQ2YzU5NDY5OTkzMTU1ODc1NTMxZmEzYTAxLi5jMjliODU4
NjYwMmVjZTExMGI2NjJjNTgxMGU5YmU3YzQyYTMxNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaApAQCAtNTMsMTIgKzUzLDEyIEBAIHN0
cnVjdCBBdWRpb0lPUG9zaXRpb24gewogICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBwb3NpdGlv
bjsKICAgICAgICAgZGVjb2RlciA+PiBwb3NpdGlvbjsKICAgICAgICAgaWYgKCFwb3NpdGlvbikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVzdGFtcDsK
ICAgICAgICAgZGVjb2RlciA+PiB0aW1lc3RhbXA7CiAgICAgICAgIGlmICghdGltZXN0YW1wKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIEF1ZGlvSU9Qb3NpdGlvbiB7ICpwb3NpdGlvbiwg
KnRpbWVzdGFtcCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IDQ5NWIxMzAwNTdhNDhlOTQ3ZTgwNTMz
MDNkYzYwM2QyMTlhYThhMDcuLjdhYWM1MjRiNDk2MDU5NmFiZDEyMGYxYTA1ODMwOTFlMjE1ODA4
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaApAQCAtMjk3LDcgKzI5Nyw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IGlubGluZSBPcHRpb25hbDxQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3Vt
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dHlwZT4+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5h
bWU7IFwKICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OyBcCiAKICAgICBERUNPREUodGltZSwgZG91Ymxl
KTsKICAgICBERUNPREUoZmFzdFNlZWssIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJB
dWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggMGZlYTkyNWM0ZjMxOTNmYzE2ZTEwMWM1OWNh
N2Y1ZTFlMGRjNjhjZi4uZGQ0ODI5ZDM3YzIzYTZkNWYyNTA2MzAwNTJiNGIyMGFlZjNlZWRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktp
dFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0z
MDMsNyArMzAzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdzdEJ1ZmZlcj4+
PiB3ZWJLaXRXZWJBdWRpb1NyY0FsbG9jYXRlQnVmZmVycyhXZWIKICAgICBpZiAoIXByaXYtPmRl
c3RpbmF0aW9uIHx8ICFwcml2LT5idXMpIHsKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3Jj
LCBDT1JFLCBGQUlMRUQsICgiSW50ZXJuYWwgV2ViQXVkaW9TcmMgZXJyb3IiKSwgKCJDYW4ndCBz
dGFydCB3aXRob3V0IGRlc3RpbmF0aW9uIG9yIGJ1cyIpKTsKICAgICAgICAgZ3N0X3Rhc2tfc3Rv
cChzcmMtPnByaXYtPnRhc2suZ2V0KCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFTU0VSVChwcml2LT5w
b29sKTsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8
R3N0QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYgogICAgICAg
ICAgICAgLy8gRkxVU0hJTkcgYW5kIEVPUyBhcmUgbm90IGVycm9ycy4KICAgICAgICAgICAgIGlm
IChyZXQgPCBHU1RfRkxPV19FT1MgfHwgcmV0ID09IEdTVF9GTE9XX05PVF9MSU5LRUQpCiAgICAg
ICAgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBDT1JFLCBQQUQsICgiSW50ZXJuYWwg
V2ViQXVkaW9TcmMgZXJyb3IiKSwgKCJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIGZvciBmbG93
OiAlcyIsIGdzdF9mbG93X2dldF9uYW1lKHJldCkpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
ICAgICAgICAgQVNTRVJUKGJ1ZmZlcik7CkBAIC0zMzAsNyArMzMwLDcgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3RvcjxHUmVmUHRyPEdzdEJ1ZmZlcj4+PiB3ZWJLaXRXZWJBdWRpb1NyY0FsbG9jYXRl
QnVmZmVycyhXZWIKICAgICAgICAgY2hhbm5lbEJ1ZmZlckxpc3QudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChjaGFubmVs
QnVmZmVyTGlzdCk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChjaGFubmVsQnVmZmVy
TGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYktpdFdlYkF1ZGlvU3JjUmVuZGVyQW5kUHVzaEZy
YW1lcyhHUmVmUHRyPEdzdEVsZW1lbnQ+JiYgZWxlbWVudCwgVmVjdG9yPEdSZWZQdHI8R3N0QnVm
ZmVyPj4mJiBjaGFubmVsQnVmZmVyTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCmluZGV4IDI2YmI0
MTEwMDFkN2VmYmMwYmYyNmNiNjEzOWYwMjAxN2U2YTE1ZjcuLmVkZWYzMDdmMjdhYzNiOGRiZGY4
MmE3YmNlNjQzMjliM2VmZWFjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbQpAQCAtMjQ1LDcgKzI0
NSw3IEBAIE1lZGlhU2Vzc2lvbkhlbHBlcmlPUzo6TWVkaWFTZXNzaW9uSGVscGVyaU9TKCkKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKICNpZiBIQVZFKENFTEVTVElBTCkKLSAgICB1
cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxsb3B0KTsKKyAgICB1cGRhdGVDYXJQbGF5
SXNDb25uZWN0ZWQoc3RkOjpudWxsb3B0KTsKICNlbmRpZgogfQogCkBAIC0yOTksNyArMjk5LDcg
QEAgdm9pZCBNZWRpYVNlc3Npb25IZWxwZXJpT1M6OnN0b3BNb25pdG9yaW5nV2lyZWxlc3NSb3V0
ZXNJbnRlcm5hbCgpCiAjaWYgSEFWRShDRUxFU1RJQUwpCiB2b2lkIE1lZGlhU2Vzc2lvbkhlbHBl
cmlPUzo6bWVkaWFTZXJ2ZXJDb25uZWN0aW9uRGllZCgpCiB7Ci0gICAgdXBkYXRlQ2FyUGxheUlz
Q29ubmVjdGVkKFdURjo6bnVsbG9wdCk7CisgICAgdXBkYXRlQ2FyUGxheUlzQ29ubmVjdGVkKHN0
ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG9uY2UgcmRhcjovLzI3
NjYyNzE2IGxhbmRzCiAgICAgaWYgKGNhbkxvYWRBVlN5c3RlbUNvbnRyb2xsZXJfQ2FyUGxheUlz
Q29ubmVjdGVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uKCkgJiYgY2FuTG9hZEFWU3lzdGVtQ29udHJv
bGxlcl9TdWJzY3JpYmVUb05vdGlmaWNhdGlvbnNBdHRyaWJ1dGUoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCmluZGV4IGNh
ODcwMWYwNmYwN2JjMjg0NDEyY2VkZWQ1NzhkYmNhZGE0ZjZkYzQuLmY0MTA2NmZkYTQ5OTc5NjM0
YTc2MjVhODcyN2ZiZmQxYjdjZTIxNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZv
aWQgQXVkaW9TZXNzaW9uTWFjOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQogICAgIGlmICgh
bV9wbGF5aW5nVG9CbHVldG9vdGggfHwgKm1fcGxheWluZ1RvQmx1ZXRvb3RoID09IGRlZmF1bHRE
ZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bs
YXlpbmdUb0JsdWV0b290aCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290
aCA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QbGF0Zm9ybVBhc3RlYm9hcmRDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCmluZGV4IGQzOWY3
NWQ0ODFlY2NhZjdjYTI2NmM2MTY1YWJkZjJkZGExMDdjMTYuLjYxNWNiYjRhMWIwMmFhYmZiOTFl
NDhiNTVkYWU0YTA2NzdlNWI4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BsYXRmb3JtUGFzdGVib2FyZENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wdGlvbmFsPFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+
PiBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhpbnQ2NF90IGNoYW5n
ZUNvdW50KQogewogICAgIGlmIChjaGFuZ2VDb3VudCAhPSBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNv
dW50XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFZlY3RvcjxQYXN0ZWJvYXJkSXRlbUluZm8+IGl0ZW1JbmZvOwogICAg
IGludCBudW1iZXJPZkl0ZW1zID0gY291bnQoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgT3B0aW9uYWw8
VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBsYXRmb3JtUGFzdGVib2FyZDo6YWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKGkKICAgICBmb3IgKE5TSW50ZWdlciBpdGVtSW5kZXggPSAwOyBpdGVtSW5k
ZXggPCBudW1iZXJPZkl0ZW1zOyArK2l0ZW1JbmRleCkgewogICAgICAgICBhdXRvIGl0ZW0gPSBp
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGl0ZW1JbmRleCwgY2hhbmdlQ291bnQpOwogICAgICAg
ICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpdGVtSW5mby51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZSgqaXRlbSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQu
bW0KaW5kZXggYmM3MWIxODQ2YWM1YTAwZjViZmJlOTE3ZmVmOTMwOGUxNTQ0NDY4MC4uMDg5YjNk
ODE3OTljZjVkNDc0ZWQyZWI2YWZmNDAzMjRlYzAyNDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW0KQEAgLTU4Miw3ICs1ODIsNyBAQCB1aW50NjRfdCBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAg
ICAgaWYgKCFzZWxlY3RlZEluZGV4ICYmIGRpc3BsYXlNb2RlID09IE1lZGlhQ29udHJvbHNIb3N0
Ojpmb3JjZWRPbmx5S2V5d29yZCgpKQogICAgICAgICBzZWxlY3RlZEluZGV4ID0gb2ZmSW5kZXg7
CiAKLSAgICByZXR1cm4gc2VsZWN0ZWRJbmRleC52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDY0X3Q+OjptYXgoKSk7CisgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXgudmFsdWVfb3Ioc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKIH0KIAogYm9vbCBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5
U3lzdGVtQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbi5oCmluZGV4IDg1MjU4N2NlZGEwNTEyMTQ0
Nzk1MjJmYWMzOGU0YzBmYjk4NzQ5ZmMuLjAwMDBjMmU3YmZlMjg0NjE0ODIyMzBlMWQ4MmJkMDhi
ZjZiZWRmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgKQEAgLTY3LDM3
ICs2NywzNyBAQCBzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gbGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAg
IGlmICghbGFiZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gaW5pdERhdGFUeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBpbml0RGF0YVR5cGVzOwogICAg
ICAgICBpZiAoIWluaXREYXRhVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRl
Y29kZXIgPj4gYXVkaW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGlmICghYXVkaW9DYXBhYmlsaXRp
ZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmls
aXR5Pj4gdmlkZW9DYXBhYmlsaXRpZXM7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9DYXBhYmls
aXRpZXM7CiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxDRE1SZXF1aXJlbWVudD4gZGlzdGluY3RpdmVJZGVudGlmaWVyOwogICAg
ICAgICBkZWNvZGVyID4+IGRpc3RpbmN0aXZlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFkaXN0
aW5jdGl2ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFs
PENETVJlcXVpcmVtZW50PiBwZXJzaXN0ZW50U3RhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gcGVy
c2lzdGVudFN0YXRlOwogICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1TZXNzaW9uVHlwZT4+IHNlc3Npb25UeXBlczsK
ICAgICAgICAgZGVjb2RlciA+PiBzZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghc2Vzc2lvblR5
cGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3Zl
KCpsYWJlbCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1NZWRpYUNhcGFiaWxpdHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCmluZGV4IGY4NGEwZDEyYWI0Y2Q1MjBlM2Yw
ZTA0ZDY0ZWJlZmM2MzE2MjU4N2QuLmNiNTAwNGYzY2Q3OGM2NTFhYmJhMTM0MWRlZjZmMmVjYjc3
MmMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETU1lZGlhQ2FwYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJpbGl0eS5oCkBAIC01NCwxNyArNTQsMTcgQEAgc3RydWN0
IENETU1lZGlhQ2FwYWJpbGl0eSB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5
cGU7CiAgICAgICAgIGRlY29kZXIgPj4gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghY29udGVu
dFR5cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvYnVzdG5lc3M7
CiAgICAgICAgIGRlY29kZXIgPj4gcm9idXN0bmVzczsKICAgICAgICAgaWYgKCFyb2J1c3RuZXNz
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Q0RNRW5jcnlwdGlvblNj
aGVtZT4+IGVuY3J5cHRpb25TY2hlbWU7CiAgICAgICAgIGRlY29kZXIgPj4gZW5jcnlwdGlvblNj
aGVtZTsKICAgICAgICAgaWYgKCFlbmNyeXB0aW9uU2NoZW1lKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpjb250ZW50VHlwZSksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3Bw
CmluZGV4IGQyNWY2MmUyYThmODA5NGNiZjUxOTM5ZDYxODRkOWZkYTE5NDc3YzYuLjc0MTU0NDEz
N2YwNDkzOGY1ZGIwM2Y1NDU2MjUyM2IzMWI0Yzc4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwCkBAIC03MSwxMyAr
NzEsMTMgQEAgdm9pZCBDRE1Qcml2YXRlOjpkb1N1cHBvcnRlZENvbmZpZ3VyYXRpb25TdGVwKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjYW5kaWQKICAgICAvLyByZXN0cmljdGlvbnMgYW5k
IG9yaWdpbi4KICAgICBhdXRvIG9wdGlvbmFsQ29uZmlndXJhdGlvbiA9IGdldFN1cHBvcnRlZENv
bmZpZ3VyYXRpb24oY2FuZGlkYXRlQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zLCBhY2Nlc3Mp
OwogICAgIGlmICghb3B0aW9uYWxDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBhdXRvIGNvbnNlbnRDYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgYWNjZXNzXSAo
Q29uc2VudFN0YXR1cyBzdGF0dXMsIENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uLCBDRE1SZXN0cmljdGlvbnMmJiByZXN0cmljdGlvbnMpIG11dGFibGUgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwor
ICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAvLyAzLjEuMS4yIEdldCBTdXBwb3J0ZWQgQ29uZmlndXJhdGlv
biBhbmQgQ29uc2VudCwgY3RkLgpAQCAtMTY2LDcgKzE2Niw3IEBAIE9wdGlvbmFsPENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
Y29uc3QKIAogICAgICAgICAvLyAzLjMuIElmIHN1cHBvcnRlZCB0eXBlcyBpcyBlbXB0eSwgcmV0
dXJuIE5vdFN1cHBvcnRlZC4KICAgICAgICAgaWYgKHN1cHBvcnRlZFR5cGVzLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIC8vIDMuNC4gU2V0IHRoZSBpbml0RGF0YVR5cGVzIG1lbWJl
ciBvZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIHN1cHBvcnRlZCB0eXBlcy4KICAgICAg
ICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmluaXREYXRhVHlwZXMgPSBXVEZNb3ZlKHN1cHBv
cnRlZFR5cGVzKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAg
ICAgICAgIC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHVzZSBvZiBE
aXN0aW5jdGl2ZSBJZGVudGlmaWVyKHMpIGluIGNvbWJpbmF0aW9uCiAgICAgICAgIC8vIHdpdGgg
YWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3Vw
cG9ydGVkLgogICAgICAgICBpZiAoZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFj
Y3VtdWxhdGVkQ29uZmlndXJhdGlvbiwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6
Tm90QWxsb3dlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ0RNUmVx
dWlyZW1lbnQ6Ok9wdGlvbmFsOgpAQCAtMjAwLDcgKzIwMCw3IEBAIE9wdGlvbmFsPENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
Y29uc3QKICAgICAgICAgLy8gSWYgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIHVzZSBEaXN0
aW5jdGl2ZSBJZGVudGlmaWVyKHMpIG9yIERpc3RpbmN0aXZlIFBlcm1hbmVudCBJZGVudGlmaWVy
KHMpCiAgICAgICAgIC8vIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJh
dGlvbiBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAo
ZGlzdGluY3RpdmVJZGVudGlmaWVyc1JlcXVpcmVtZW50KGFjY3VtdWxhdGVkQ29uZmlndXJhdGlv
biwgcmVzdHJpY3Rpb25zKSA9PSBDRE1SZXF1aXJlbWVudDo6UmVxdWlyZWQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgT3B0aW9uYWw8Q0RN
S2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJh
dGlvbihjb25zdAogICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3Vw
cG9ydCBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29u
ZmlndXJhdGlvbgogICAgICAgICAvLyBhbmQgcmVzdHJpY3Rpb25zLCByZXR1cm4gTm90U3VwcG9y
dGVkLgogICAgICAgICBpZiAodGhpcy0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11
bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpOb3RB
bGxvd2VkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDRE1SZXF1aXJl
bWVudDo6T3B0aW9uYWw6CkBAIC0yMzUsNyArMjM1LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25z
dAogICAgICAgICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgcGVyc2lzdGluZyBz
dGF0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAg
ICAgLy8gYW5kIHJlc3RyaWN0aW9ucywgcmV0dXJuIE5vdFN1cHBvcnRlZAogICAgICAgICBpZiAo
dGhpcy0+cGVyc2lzdGVudFN0YXRlUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9u
LCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI2MSwxMiArMjYxLDEyIEBAIE9wdGlvbmFsPENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3Vy
YXRpb24oY29uc3QKICAgICAgICAgLy8gMTMuMi4gSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlv
bidzIHBlcnNpc3RlbnRTdGF0ZSB2YWx1ZSBpcyAibm90LWFsbG93ZWQiIGFuZCB0aGUKICAgICAg
ICAgLy8gICAgICAgSXMgcGVyc2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSByZXR1cm5z
IHRydWUgZm9yIHNlc3Npb24gdHlwZSByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAo
YWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSA9PSBDRE1SZXF1aXJlbWVu
dDo6Tm90QWxsb3dlZCAmJiBpc1BlcnNpc3RlbnRUeXBlKHNlc3Npb25UeXBlKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIC8vIDEzLjMuIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBw
b3J0IHNlc3Npb24gdHlwZSBpbiBjb21iaW5hdGlvbiB3aXRoIGFjY3VtdWxhdGVkIGNvbmZpZ3Vy
YXRpb24KICAgICAgICAgLy8gICAgICAgYW5kIHJlc3RyaWN0aW9ucyBmb3Igb3RoZXIgcmVhc29u
cywgcmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICAgICAgaWYgKCFzdXBwb3J0c1Nlc3Npb25UeXBl
V2l0aENvbmZpZ3VyYXRpb24oc2Vzc2lvblR5cGUsIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAxMy40IElmIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRp
b24ncyBwZXJzaXN0ZW50U3RhdGUgdmFsdWUgaXMgIm9wdGlvbmFsIiBhbmQgdGhlIHJlc3VsdCBv
ZiBydW5uaW5nIHRoZSBJcwogICAgICAgICAvLyAgICAgIHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBl
PyBhbGdvcml0aG0gb24gc2Vzc2lvbiB0eXBlIGlzIHRydWUsIGNoYW5nZSBhY2N1bXVsYXRlZCBj
b25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRlCkBAIC0yODAsNyArMjgwLDcgQEAgT3B0aW9u
YWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29u
ZmlndXJhdGlvbihjb25zdAogCiAgICAgLy8gMTUuIElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBh
bmQgYXVkaW9DYXBhYmlsaXRpZXMgbWVtYmVycyBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBh
cmUgYm90aCBlbXB0eSwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICBpZiAoY2FuZGlkYXRlQ29u
ZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkgJiYgY2FuZGlkYXRlQ29uZmln
dXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyAxNi4g4oaz
IElmIHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgaW4gY2FuZGlkYXRlIGNvbmZpZ3VyYXRp
b24gaXMgbm9uLWVtcHR5OgogICAgIGlmICghY2FuZGlkYXRlQ29uZmlndXJhdGlvbi52aWRlb0Nh
cGFiaWxpdGllcy5pc0VtcHR5KCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBPcHRpb25hbDxDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0
aW9uKGNvbnN0CiAKICAgICAgICAgLy8gMTYuMi4gSWYgdmlkZW8gY2FwYWJpbGl0aWVzIGlzIG51
bGwsIHJldHVybiBOb3RTdXBwb3J0ZWQuCiAgICAgICAgIGlmICghdmlkZW9DYXBhYmlsaXRpZXMp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAxNi4zIFNldCB0aGUgdmlkZW9DYXBhYmlsaXRpZXMg
bWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gdG8gdmlkZW8gY2FwYWJpbGl0aWVz
LgogICAgICAgICBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMgPSBX
VEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzLnZhbHVlKCkpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIE9w
dGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24oY29uc3QKIAogICAgICAgICAvLyAxNy4yLiBJZiBhdWRpbyBjYXBhYmls
aXRpZXMgaXMgbnVsbCwgcmV0dXJuIE5vdFN1cHBvcnRlZC4KICAgICAgICAgaWYgKCFhdWRpb0Nh
cGFiaWxpdGllcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDE3LjMgU2V0IHRoZSBhdWRpb0Nh
cGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbiB0byBhdWRpbyBj
YXBhYmlsaXRpZXMuCiAgICAgICAgIGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5hdWRpb0NhcGFi
aWxpdGllcyA9IFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMudmFsdWUoKSk7CkBAIC0zNTAsMTAg
KzM1MCwxMCBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Qcml2YXRl
OjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAgICAgLy8gMjAuIElmIGltcGxlbWVu
dGF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHNwZWNpZmllZCBieSB0aGUgY29tYmluYXRpb24g
b2YgdGhlIHZhbHVlcyBpbiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCiAgICAgLy8gICAgIGlz
IG5vdCBzdXBwb3J0ZWQgb3Igbm90IGFsbG93ZWQgaW4gdGhlIG9yaWdpbiwgcmV0dXJuIE5vdFN1
cHBvcnRlZC4KICAgICBpZiAoIXN1cHBvcnRzQ29uZmlndXJhdGlvbihhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24uZGlzdGlu
Y3RpdmVJZGVudGlmaWVyID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCB8fCBhY2N1bXVsYXRl
ZENvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpSZXF1aXJl
ZCkgJiYgYWNjZXNzID09IExvY2FsU3RvcmFnZUFjY2Vzczo6Tm90QWxsb3dlZCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb247CiAgICAgLy8gTk9URTogQ29udGludWVk
IGluIGdldENvbnNlbnRTdGF0dXMoKS4KQEAgLTM4NCw3ICszODQsNyBAQCBPcHRpb25hbDxWZWN0
b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aWVzRm9yQXVkaQogCiAgICAgICAgIC8vIDMuMy4gSWYgY29udGVudCB0eXBlIGlzIHRoZSBlbXB0
eSBzdHJpbmcsIHJldHVybiBudWxsLgogICAgICAgICBpZiAocmVxdWVzdGVkQ2FwYWJpbGl0eS5j
b250ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAzLjQuIElmIGNv
bnRlbnQgdHlwZSBpcyBhbiBpbnZhbGlkIG9yIHVucmVjb2duaXplZCBNSU1FIHR5cGUsIGNvbnRp
bnVlIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4KICAgICAgICAgT3B0aW9uYWw8UGFyc2VkQ29udGVu
dFR5cGU+IGNvbnRlbnRUeXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShyZXF1ZXN0ZWRD
YXBhYmlsaXR5LmNvbnRlbnRUeXBlLCBNb2RlOjpSZmMyMDQ1KTsKQEAgLTQ0OCw3ICs0NDgsNyBA
QCBPcHRpb25hbDxWZWN0b3I8Q0RNTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNUHJpdmF0ZTo6Z2V0U3Vw
cG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVkaQogCiAgICAgLy8gNC4gSWYgc3VwcG9ydGVkIG1lZGlh
IGNhcGFiaWxpdGllcyBpcyBlbXB0eSwgcmV0dXJuIG51bGwuCiAgICAgaWYgKHN1cHBvcnRlZE1l
ZGlhQ2FwYWJpbGl0aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDUuIFJldHVybiBzdXBwb3J0
ZWQgbWVkaWEgY2FwYWJpbGl0aWVzLgogICAgIHJldHVybiBzdXBwb3J0ZWRNZWRpYUNhcGFiaWxp
dGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByb3h5LmNwcAppbmRleCBmZTMwZmYwZTk3YWM4MDNhZjNhYzFlMzE2NGRkNjc0NTJlMjAzNTJk
Li41NTE1ZWU3MDUyNjFhMDgwZWM4Yzk4Njg2ZDgzZDVhMDNhZWYzYTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCkBAIC0z
MDksMTEgKzMwOSwxMSBAQCBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OnRyeVdh
aXRGb3JLZXlIYW5kbGUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwgVwogICAgIGlmICh3YXNLZXlB
dmFpbGFibGUpIHsKICAgICAgICAgUmVmUHRyPEtleUhhbmRsZT4gaGFuZGxlID0ga2V5SGFuZGxl
KGtleUlEKTsKICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0gc3VjY2Vzc2Z1bGx5
IHdhaXRlZCBmb3Iga2V5IElEICVzIiwgdmVjdG9yVG9IZXhTdHJpbmcoa2V5SUQpLmFzY2lpKCku
ZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoaGFuZGxlLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgIH0KIAogICAgIExPRyhFTUUsICJFTUUgLSBDRE1Qcm94eSAtIGtleSBJ
RCAlcyBub3QgYXZhaWxhYmxlIG9yIG9wZXJhdGlvbiBhYm9ydGVkIiwgdmVjdG9yVG9IZXhTdHJp
bmcoa2V5SUQpLmFzY2lpKCkuZGF0YSgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQ0RNUHJveHk6OmtleUF2YWlsYWJsZVVu
bG9ja2VkKGNvbnN0IEtleUlEVHlwZSYga2V5SUQpIGNvbnN0CkBAIC0zMzUsMTQgKzMzNSwxNCBA
QCBPcHRpb25hbDxSZWY8S2V5SGFuZGxlPj4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleUhhbmRs
ZShjb25zdCBLZXlJRFR5cGUmIGtleUlELAogICAgIH0KIAogICAgIFJlZlB0cjxLZXlIYW5kbGU+
IGhhbmRsZSA9IGtleUhhbmRsZShrZXlJRCk7Ci0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChoYW5k
bGUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChoYW5k
bGUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIE9wdGlvbmFsPEtleUhhbmRsZVZhbHVlVmFyaWFu
dD4gQ0RNUHJveHk6OmdldE9yV2FpdEZvcktleVZhbHVlKGNvbnN0IEtleUlEVHlwZSYga2V5SUQs
IFdlYWtQdHI8Q0RNUHJveHlEZWNyeXB0aW9uQ2xpZW50PiYmIGNsaWVudCkgY29uc3QKIHsKICAg
ICBpZiAoYXV0byBrZXlIYW5kbGUgPSBnZXRPcldhaXRGb3JLZXlIYW5kbGUoa2V5SUQsIFdURk1v
dmUoY2xpZW50KSkpCi0gICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoKCprZXlIYW5kbGUpLT52
YWx1ZSgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX29wdGlvbmFsKCgqa2V5SGFuZGxlKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVByb3h5OjpzdGFydGVkV2FpdGluZ0ZvcktleSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1S
ZXN0cmljdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVJlc3RyaWN0aW9ucy5oCmluZGV4IDljYTJhYzU5ZThiMTM1NDYzYTUyZGI0NWU4MDczMWY1MGM2
OTRmM2UuLjgwN2M4ZTU2M2I1ZTg3YjQ4MjRkMDNhYjZkZjYyMjE0NWI2NzE3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3Ry
aWN0aW9ucy5oCkBAIC01MSwxNyArNTEsMTcgQEAgc3RydWN0IENETVJlc3RyaWN0aW9ucyB7CiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmllZDsKICAgICAg
ICAgZGVjb2RlciA+PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQ7CiAgICAgICAgIGlmICgh
ZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gcGVyc2lzdGVudFN0YXRlRGVuaWVkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNp
c3RlbnRTdGF0ZURlbmllZDsKICAgICAgICAgaWYgKCFwZXJzaXN0ZW50U3RhdGVEZW5pZWQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxIYXNoU2V0PENETVNlc3Npb25UeXBlLCBXVEY6
OkludEhhc2g8Q0RNU2Vzc2lvblR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENETVNl
c3Npb25UeXBlPj4+IGRlbmllZFNlc3Npb25UeXBlczsKICAgICAgICAgZGVjb2RlciA+PiBkZW5p
ZWRTZXNzaW9uVHlwZXM7CiAgICAgICAgIGlmICghZGVuaWVkU2Vzc2lvblR5cGVzKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAqZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCmluZGV4IDhlODM2Mzg0N2My
MjFlZjUwZGEzZDIwOTFjOTNmYjViMWY0YzYxYjcuLmI2YzJhZTlmMjhiMThiOWZhNWI0YmJmMzMz
OTQ1MzY4ZWM2OTk2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKQEAgLTUzLDEy
ICs1MywxMiBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+Pj4gcGFy
c2VMaWNlbnNlRm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdAogICAgIC8vIGFjY29yZGluZyB0byB0
aGUgc3BlY2lmaWVkICdsaWNlbnNlJyBmb3JtYXQuCiAgICAgYXV0byBpdCA9IHJvb3QuZmluZCgi
a2V5cyIpOwogICAgIGlmIChpdCA9PSByb290LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUmV0cmlldmUg
dGhlIGtleXMgYXJyYXkuCiAgICAgYXV0byBrZXlzQXJyYXkgPSBpdC0+dmFsdWUtPmFzQXJyYXko
KTsKICAgICBpZiAoIWtleXNBcnJheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxl
Pj4gZGVjb2RlZEtleXM7CiAgICAgYm9vbCB2YWxpZEZvcm1hdCA9IHN0ZDo6YWxsX29mKGtleXNB
cnJheS0+YmVnaW4oKSwga2V5c0FycmF5LT5lbmQoKSwKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGlj
IE9wdGlvbmFsPFZlY3RvcjxSZWZQdHI8S2V5SGFuZGxlPj4+IHBhcnNlTGljZW5zZUZvcm1hdChj
b25zdCBKU09OOjpPYmplY3QKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsK
ICAgICBpZiAoIXZhbGlkRm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBkZWNvZGVkS2V5czsKIH0KIApA
QCAtNDE4LDcgKzQxOCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ0RNUHJpdmF0ZUNsZWFyS2V5Ojpz
YW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkKIHsKICAgICAvLyBWYWxp
ZGF0ZSB0aGUgc2Vzc2lvbiBJRCBzdHJpbmcgYXMgYW4gMzItYml0IGludGVnZXIuCiAgICAgaWYg
KCFwYXJzZUludGVnZXI8dWludDMyX3Q+KHNlc3Npb25JZCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlc3Np
b25JZDsKIH0KIApAQCAtNDg5LDE0ICs0ODksMTQgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25D
bGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVQK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXNzaW9uV2FzQ2xv
c2VkLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHN1
Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQs
IFdURk1vdmUoY2hhbmdlZEtleXMpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3VjY2Vl
ZGVkKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfTsKIAogICAgIFJlZlB0cjxKU09O
OjpPYmplY3Q+IHJvb3QgPSBDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSk7
CiAgICAgaWYgKCFyb290KSB7CiAgICAgICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHNl
c3Npb24gJXMgdXBkYXRlIHBheWxvYWQgd2FzIG5vdCB2YWxpZCBKU09OIiwgc2Vzc2lvbklkLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTUyMiwxMiArNTIyLDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xl
YXJLZXk6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUCiAg
ICAgICAgIExPRyhFTUUsICJFTUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgcmVsZWFzZSBhY2tu
b3dsZWRnZWQsIGNsZWFyaW5nIGFsbCBrbm93biBrZXlzIiwgc2Vzc2lvbklkLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBwYXJlbnRJbnN0YW5jZSgpLnJlbW92ZUFsbEtleXNGcm9tKG1fa2V5U3Rv
cmUpOwogICAgICAgICBtX2tleVN0b3JlLnJlbW92ZUFsbEtleXMoKTsKLSAgICAgICAgZGlzcGF0
Y2hDYWxsYmFjayh0cnVlLCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsK
KyAgICAgICAgZGlzcGF0Y2hDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIExPRyhFTUUsICJF
TUUgLSBDbGVhcktleSAtIHNlc3Npb24gJXMgdXBkYXRlIHBheWxvYWQgd2FzIGFuIHVucmVjb2du
aXplZCBmb3JtYXQiLCBzZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAgZGlzcGF0Y2hDYWxs
YmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgZGlz
cGF0Y2hDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7
CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKExpY2Vu
c2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uQ2xlYXJLZXk6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShrZXlTdGF0dXNWZWN0b3IpLCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgU3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRE
ZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVk
RGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IDFiODNhOTFiMjdhNmFlZjdhODJmMmExNGY4NTRmY2E4
MzcyNGI5ZDAuLjZhZWJiMDU5MDNmNjMzNDlmZjkzNmE0NjJjN2I3ZjcyNTVmYjJlMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJH
ZW5lcmljLmNwcApAQCAtNTMsMTYgKzUzLDE2IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IHJl
YWRTdHJpbmcoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25h
bDxzaXplX3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIXNpemUudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyKHNpemUudmFsdWUoKSk7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShidWZmZXIuZGF0YSgpLCBzaXplLnZhbHVlKCkpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gcmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpLCBzaXpl
LnZhbHVlKCkpOwogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5p
bWF0aW9uRnJhbWVSYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Fu
aW1hdGlvbkZyYW1lUmF0ZS5jcHAKaW5kZXggMDg0ODAwNWU2NDcyYzU2ZjcxMTk4ZTcyNzI3N2Zk
YTQ5OGU1ZTE4My4uNjZjZDY1NzRlZGUzNzVjNThiMDRkMDgxODM0YmQ5MDg2ZjAwOTE5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVS
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25G
cmFtZVJhdGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIEZyYW1lc1BlclNlY29uZCBmcmFtZXNQZXJT
ZWNvbmROZWFyZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCBub21pbmFsRnJhbWVzUGVyCiBP
cHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25T
ZXQ8VGhyb3R0bGluZ1JlYXNvbj4gcmVhc29ucywgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBu
b21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0ZXNOZWFyNjBGUFMpCiB7
CiAgICAgaWYgKHJlYXNvbnMuY29udGFpbnMoVGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdw
b3J0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghbm9taW5hbEZyYW1lc1BlclNlY29uZCB8fCAqbm9taW5hbEZy
YW1lc1BlclNlY29uZCA9PSBGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpIHsKICAgICAgICAgLy8g
RklYTUU6IGhhbmRsZSBUaHJvdHRsaW5nUmVhc29uOjpWaXN1YWxseUlkbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKaW5k
ZXggYzgzODc4YzAxMzUzOTljNDI1MjhhN2FkZjU1ZWRjY2QwMDViMTIxZi4uYjIzYTkzODg2MGU1
YTJlMjFjNGI2NmM5YWUyMDExYzdmYWM4YzM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKQEAgLTU2LDcgKzU2LDcg
QEAgY29uc3RleHByIGNvbnN0IEZyYW1lc1BlclNlY29uZCBIYWxmU3BlZWRUaHJvdHRsaW5nRnJh
bWVzUGVyU2Vjb25kID0gMzA7CiAKIFdFQkNPUkVfRVhQT1JUIEZyYW1lc1BlclNlY29uZCBmcmFt
ZXNQZXJTZWNvbmROZWFyZXN0RnVsbFNwZWVkKEZyYW1lc1BlclNlY29uZCk7CiAKLS8vIFRoaXMg
d2lsbCByZXR1cm4gV1RGOjpudWxsb3B0IGlmIHRocm90dGxpbmcgcmVzdWx0cyBpbiBhIGZyZXF1
ZW5jeSA8IDFmcHMuCisvLyBUaGlzIHdpbGwgcmV0dXJuIHN0ZDo6bnVsbG9wdCBpZiB0aHJvdHRs
aW5nIHJlc3VsdHMgaW4gYSBmcmVxdWVuY3kgPCAxZnBzLgogV0VCQ09SRV9FWFBPUlQgT3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoT3B0aW9uU2V0PFRo
cm90dGxpbmdSZWFzb24+LCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQ
ZXJTZWNvbmQsIGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUyk7CiAKIFdFQkNPUkVfRVhQ
T1JUIFNlY29uZHMgcHJlZmVycmVkRnJhbWVJbnRlcnZhbChPcHRpb25TZXQ8VGhyb3R0bGluZ1Jl
YXNvbj4sIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwg
Ym9vbCBwcmVmZXJGcmFtZVJhdGVzTmVhcjYwRlBTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCmluZGV4IDZlMDYwMmUzYWVhNmUzOWE4NjRlODgxMzMwNWFkZjg5MjI5
ZGMzODAuLmRhYWIwYTM1NThlZGQ1ZjNkNWVjYTcwYmQ2OThmNDcxMjdjZmZjMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlu
bGluZSBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gQ29sb3I6OnRyeUdldEFzU1JHQkFCeXRlcygp
IGNvbnN0CiB7CiAgICAgaWYgKGlzSW5saW5lKCkpCiAgICAgICAgIHJldHVybiBhc0lubGluZSgp
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogaW5saW5lIHVpbnQ2NF90IENvbG9yOjplbmNvZGVkRmxhZ3MoT3B0aW9uU2V0PEZsYWdzSW5j
bHVkaW5nUHJpdmF0ZT4gZmxhZ3MpCkBAIC01NzcsNyArNTc3LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBib29sIGlzVmFsaWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1ZhbGlkKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghaXNWYWxpZCkKICAgICAgICAgcmV0dXJuIENvbG9yIHsgfTsKQEAgLTU4
Niw0NCArNTg2LDQ0IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPENvbG9yPiBD
b2xvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICBib29sIGlzU2VtYW50aWM7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1NlbWFudGljKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc1NlbWFu
dGljKQogICAgICAgICBmbGFncy5hZGQoRmxhZ3M6OlNlbWFudGljKTsKIAogICAgIGJvb2wgdXNl
c0NvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXNl
c0NvbG9yRnVuY3Rpb25TZXJpYWxpemF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh1c2VzQ29sb3JGdW5j
dGlvblNlcmlhbGl6YXRpb24pCiAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6VXNlQ29sb3JGdW5j
dGlvblNlcmlhbGl6YXRpb24pOwogCiAgICAgYm9vbCBpc091dE9mTGluZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlzT3V0T2ZMaW5lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc091dE9mTGluZSkgewog
ICAgICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29sb3JTcGFjZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYzE7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYzEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZsb2F0IGMyOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGMyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBmbG9hdCBj
MzsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjMykpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ZmxvYXQgYWxwaGE7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGEpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBDb2xvciB7IE91dE9mTGluZUNvbXBvbmVudHM6OmNyZWF0ZSh7
IGMxLCBjMiwgYzMsIGFscGhhIH0pLCBjb2xvclNwYWNlLCBmbGFncyB9OwogICAgIH0KIAogICAg
IHVpbnQzMl90IHZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIENvbG9yIHsgYXNTUkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0pLCBm
bGFncyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggYzRiZjAzMmI3MGM5ODgzYjk3NmUy
MjZmYWFjMjYyOTRlMGM4NGVlNS4uZWU0MzMzYzY0ZDUzNzIyZTMyNGE1ODE0YTY3MTdmNGIzN2Q3
MzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxl
eFRleHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB1bnNpZ25l
ZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBvc2l0aW9uKGZsb2F0IGgsIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbAogICAgICAgICAgICAgICAgIGlmIChjdXJzb3JQb3NpdGlvbkl0ZXJh
dG9yLmlzQm91bmRhcnkoaGl0SW5kZXgpKQogICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3Rh
cnQgPSBoaXRJbmRleDsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGNsdXN0ZXJTdGFydCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IucHJlY2VkaW5nKGhpdEluZGV4
KS52YWx1ZU9yKDApOworICAgICAgICAgICAgICAgICAgICBjbHVzdGVyU3RhcnQgPSBjdXJzb3JQ
b3NpdGlvbkl0ZXJhdG9yLnByZWNlZGluZyhoaXRJbmRleCkudmFsdWVfb3IoMCk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoIWluY2x1ZGVQYXJ0aWFsR2x5cGhzKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcGxleFRleHRSdW4uc3RyaW5nTG9jYXRpb24oKSArIGNsdXN0ZXJTdGFydDsK
IAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0
ZXJhdG9yLmZvbGxvd2luZyhoaXRJbmRleCkudmFsdWVPcihzdHJpbmdMZW5ndGgpOworICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNsdXN0ZXJFbmQgPSBjdXJzb3JQb3NpdGlvbkl0ZXJhdG9yLmZv
bGxvd2luZyhoaXRJbmRleCkudmFsdWVfb3Ioc3RyaW5nTGVuZ3RoKTsKIAogICAgICAgICAgICAg
ICAgIGZsb2F0IGNsdXN0ZXJXaWR0aDsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIHNl
YXJjaCBzdG9wcyBhdCB0aGUgYm91bmRhcmllcyBvZiBjb21wbGV4VGV4dFJ1bi4gSW4gdGhlb3J5
LCBpdCBzaG91bGQgZ28gb24gaW50byBuZWlnaGJvcmluZyBDb21wbGV4VGV4dFJ1bnMKQEAgLTMx
OCwxMyArMzE4LDEzIEBAIHN0YXRpYyBib29sIGFkdmFuY2VCeUNvbWJpbmluZ0NoYXJhY3RlclNl
cXVlbmNlKGNvbnN0IFVDaGFyKiYgaXRlcmF0b3IsIGNvbnN0IFVDCiBzdGF0aWMgaW5saW5lIE9w
dGlvbmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkKFVDaGFyMzIgYmFzZUNoYXJhY3RlcikKIHsKICAg
ICBpZiAoVV9HRVRfR0NfTUFTSyhiYXNlQ2hhcmFjdGVyKSAmIFVfR0NfTV9NQVNLKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgVUNoYXIzMiB1cHBlcmNhc2VDaGFyYWN0ZXIgPSB1X3RvdXBwZXIoYmFzZUNoYXJhY3Rlcik7
CiAgICAgQVNTRVJUKHVwcGVyY2FzZUNoYXJhY3RlciA9PSBiYXNlQ2hhcmFjdGVyIHx8IChVX0lT
X0JNUChiYXNlQ2hhcmFjdGVyKSA9PSBVX0lTX0JNUCh1cHBlcmNhc2VDaGFyYWN0ZXIpKSk7CiAg
ICAgaWYgKHVwcGVyY2FzZUNoYXJhY3RlciAhPSBiYXNlQ2hhcmFjdGVyKQogICAgICAgICByZXR1
cm4gdXBwZXJjYXNlQ2hhcmFjdGVyOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkU3ludGhlc2l6ZShib29s
IGRvbnRTeW50aGVzaXplU21hbGxDYXBzLCBjb25zdCBGb250KiBuZXh0Rm9udCwgVUNoYXIzMiBi
YXNlQ2hhcmFjdGVyLCBPcHRpb25hbDxVQ2hhcjMyPiBjYXBpdGFsaXplZEJhc2UsIEZvbnRWYXJp
YW50Q2FwcyBmb250VmFyaWFudENhcHMsIGJvb2wgZW5nYWdlQWxsU21hbGxDYXBzUHJvY2Vzc2lu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAppbmRleCBhY2Y0MzU5ZWIwYmM4N2JjM2JkZWFkOTA1M2IyZTFkZTNmZmM1
MjM5Li5lYzJkYTAyMzkyZjBhYzljYjg0NGRkNDRjMmZiYmFkYjc1YTY4NTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0IG92
ZXJyaWRlCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0IG92ZXJyaWRl
CiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVk
KCkpIHsKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlz
KS5mbHVzaENvbnRleHQoKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
ICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hDb250ZXh0
KCk7CiAgICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+Z2V0UGl4ZWxCdWZmZXIob3V0cHV0Rm9y
bWF0LCBzcmNSZWN0KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHZvaWQgcHV0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIGRlc3RGb3JtYXQgPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkKSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVz
dGluYXRpb25Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAppbmRleCBmODgzYWJiZDQ5ZjUzNDY2MjE4ZTc2NjI3OGVj
OWFmMGI5OGM4MDRjLi43ZGEyM2ZkODI3ZGFiZDUxMjZhNzcxODAxZDNlOWNkMTIxN2IyYzc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaApAQCAtNjYsNyArNjYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
ZAogICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOwog
ICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOwogICAgIGlmICghcGxhdGZvcm1Db2xv
clNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUo
KnBsYXRmb3JtQ29sb3JTcGFjZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IGFlNjhk
MzQ3YzdmMmQzMWY0OTNmYjI4M2I5ZDkyZDMyNTc5Mzc4NjQuLmM2NzY5MDAyYTI1MWZhMTVjYmU5
NWIzMGExOTY4ODI0YjI5MWMwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMTE1LDcgKzEx
NSw3IEBAIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yOjpt
YXhpbXVtQ2xpZW50UHJlZmVycmVkRnJhbWVzUGVyCiB7CiAgICAgT3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBtYXhGcmFtZXNQZXJTZWNvbmQ7CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2Ns
aWVudHMpCi0gICAgICAgIG1heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4PEZyYW1lc1BlclNl
Y29uZD4obWF4RnJhbWVzUGVyU2Vjb25kLnZhbHVlT3IoMCksIGNsaWVudC0+cHJlZmVycmVkRnJh
bWVzUGVyU2Vjb25kKCkpOworICAgICAgICBtYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heDxG
cmFtZXNQZXJTZWNvbmQ+KG1heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgY2xpZW50LT5w
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSk7CiAKICAgICByZXR1cm4gbWF4RnJhbWVzUGVyU2Vj
b25kOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuaAppbmRleCBkMWEwOTgyMjlkMjFiYTE0Yjg4Y2M2YjliYzQ3
MTRmYzExMGJhYWNkLi5hMjJiNjMwNTY2Njk2ZDJlZjdmMTE2NGZkZWI1MGU3NjU3YzFkMmQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVz
aE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3IuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGll
bnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoTW9uaXRvckNs
aWVudCYpOwogICAgIE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbWF4Q2xpZW50UHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9tYXhDbGllbnRQcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmQ7IH0KIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBk
aXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQor
ICAgIHZpcnR1YWwgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25kPiBkaXNwbGF5Tm9taW5hbEZyYW1l
c1BlclNlY29uZCgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcAppbmRleCBhYWY4ZjRkZDJjZmUwZDhiYWQ4NzI0MGYx
NzNmMmYzMDg1ZjBjMzM1Li42ODM2Nzc2ZTc2YzAzY2IyNjM5MDdkZjFkZDgyZDJhNmQyYjlkYzQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IE9wdGlvbmFsPEZyYW1lc1BlclNlY29uZD4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6
bm9taW5hbEZyYW1lc1BlclNlY29uZEZvCiAgICAgaWYgKG1vbml0b3IpCiAgICAgICAgIG1vbml0
b3ItPmRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCk7CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFuYWdlcjo6ZGlzcGxheVdhc1VwZGF0ZWQoUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlELCBjb25zdCBEaXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0ZS5oCmluZGV4IDA2YzQyY2Vl
YmM0NTQzZTdmNWZkM2JhMzQ1YWYyYmViZWVmODI1NmUuLmFiYmVjZjY1YTQyYzI2MTYwYWUyMDI5
NThiY2U4OWE1MGI4M2JhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5VXBkYXRlLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBPcHRpb25hbDxEaXNwbGF5
VXBkYXRlPiBEaXNwbGF5VXBkYXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gdXBkYXRlSW5kZXg7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVJbmRleDsK
ICAgICBpZiAoIXVwZGF0ZUluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25k
PiB1cGRhdGVzUGVyU2Vjb25kOwogICAgIGRlY29kZXIgPj4gdXBkYXRlc1BlclNlY29uZDsKICAg
ICBpZiAoIXVwZGF0ZXNQZXJTZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnVwZGF0ZUluZGV4
LCAqdXBkYXRlc1BlclNlY29uZCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdExpbmUuY3BwCmluZGV4IDQ5ODFjNjUwZTVhNzJhM2ZkZTk1ZTU2NGVjNDAz
OTQzZWUxNGU0OGIuLmYxN2E1ODU5ZThjZTg5MzhiZjE4YzMwNDg3OWI3MTJkNTdlYzJmNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcApAQCAt
NjgsNyArNjgsNyBAQCBjb25zdCBPcHRpb25hbDxGbG9hdFBvaW50PiBGbG9hdExpbmU6OmludGVy
c2VjdGlvbldpdGgoY29uc3QgRmxvYXRMaW5lJiBvdGhlckxpbgogICAgIAogICAgIC8vIEEgZGVu
b21pbmF0b3Igb2YgemVybyBpbmRpY2F0ZXMgdGhlIGxpbmVzIGFyZSBwYXJhbGxlbCBvciBjb2lu
Y2lkZW50LCB3aGljaCBtZWFucyB0aGVyZSBpcyBubyB0cnVlIGludGVyc2VjdGlvbi4KICAgICBp
ZiAoIWRlbm9taW5hdG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGZsb2F0IHRoaXNMaW5lQ29tbW9uTnVtZXJh
dG9yRmFjdG9yID0gKG1fc3RhcnQueCgpICogbV9lbmQueSgpKSAtIChtX3N0YXJ0LnkoKSAqIG1f
ZW5kLngoKSk7CiAgICAgZmxvYXQgb3RoZXJMaW5lQ29tbW9uTnVtZXJhdG9yRmFjdG9yID0gKG90
aGVyTGluZS5zdGFydCgpLngoKSAqIG90aGVyTGluZS5lbmQoKS55KCkpIC0gKG90aGVyTGluZS5z
dGFydCgpLnkoKSAqIG90aGVyTGluZS5lbmQoKS54KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaAppbmRleCAxYTBkYjUwOGIwMDNmNGY2ZTUyNGUyNTUw
YTVjZDFlYTllMTkwMWVhLi4wNjg5NTBjOTMyZWM1YTE5NzE2MjJiNWZlZjY2Yzc4MDllNmRkY2Yx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuaApAQCAt
NzUsMTIgKzc1LDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEZsb2F0TGlu
ZT4gRmxvYXRMaW5lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9h
dFBvaW50PiBzdGFydDsKICAgICBkZWNvZGVyID4+IHN0YXJ0OwogICAgIGlmICghc3RhcnQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBlbmQ7CiAgICAgZGVjb2RlciA+PiBlbmQ7CiAg
ICAgaWYgKCFlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnN0YXJ0LCAqZW5kIH19OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaAppbmRleCA2MWIzZGVl
NDllMGQyYmZkMmFlZDI3MWRjNDlhNzY3MTZmNzZhMjJhLi5mNWRjYjQ2NjYwMmQzYTE4MzUxYmIw
ZTYyOTA5NWZjYzQxNjAyZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFF1YWQuaApAQCAtMTczLDIyICsxNzMsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8RmxvYXRRdWFkPiBGbG9hdFF1YWQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAxOwogICAgIGRlY29kZXIgPj4gcDE7CiAgICAg
aWYgKCFwMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAyOwogICAgIGRlY29kZXIg
Pj4gcDI7CiAgICAgaWYgKCFwMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHAzOwog
ICAgIGRlY29kZXIgPj4gcDM7CiAgICAgaWYgKCFwMykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0
UG9pbnQ+IHA0OwogICAgIGRlY29kZXIgPj4gcDQ7CiAgICAgaWYgKCFwNCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiB7eyAqcDEsICpwMiwgKnAzLCAqcDQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGY5OTE4M2Q3Y2NiYjg1NGU0ZTRmYmNjNTUwOWEzMDNh
YjNiNTI3ZmYuLmU1OTEyYTk5ZDBlNmRkMjBmMWVkYjMwMGI2Mzk2ZjkxMTkxMzhjYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC0yNjMsNyArMjYzLDcg
QEAgc3RhdGljIE9wdGlvbmFsPHNpemVfdD4gY29kZVBvaW50U3VwcG9ydEluZGV4KFVDaGFyMzIg
Y29kZVBvaW50KQogICAgICAgICByZXN1bHQgPSAweDU0OwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgotICAgICAgICByZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdCA9
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggZjI0OTc3ZmZmYjA3MGUxYWMzYWU2M2ZhYmRkY2Ix
ODRhNDc0YjhlYS4uZTVmYTdhZTQ2MTc3NGVmYWZiYzYzZTBiOTJhNDg0Y2U1ODk0ODgwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtOTQsOSArOTQsOSBAQCBw
dWJsaWM6CiAgICAgICAgIE5vCiAgICAgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
PEZvbnQ+IGNyZWF0ZShjb25zdCBGb250UGxhdGZvcm1EYXRhJiwgT3JpZ2luID0gT3JpZ2luOjpM
b2NhbCwgSW50ZXJzdGl0aWFsID0gSW50ZXJzdGl0aWFsOjpObywKLSAgICAgICAgVmlzaWJpbGl0
eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlv
bkZhbGxiYWNrOjpObywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBP
cmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBS
ZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEZvbnRDYWNo
ZSogZm9udENhY2hlRm9yVmVydGljYWxEYXRhLCBJbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6
Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJsZSwgT3JpZW50YXRp
b25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+ID0gV1RGOjpudWxsb3B0KTsKKyAgICAgICAgVmlzaWJpbGl0eSA9
IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZh
bGxiYWNrOjpObywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNp
emUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIEZvbnRDYWNoZSog
PSBudWxscHRyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250KCk7CkBAIC0xODcsNyArMTg3
LDcgQEAgcHVibGljOgogICAgIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIz
MikgY29uc3Q7CiAgICAgR2x5cGggZ2x5cGhGb3JDaGFyYWN0ZXIoVUNoYXIzMikgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyKSBjb25zdDsKLSAgICBib29sIHBsYXRm
b3JtU3VwcG9ydHNDb2RlUG9pbnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9u
ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNDb2RlUG9p
bnQoVUNoYXIzMiwgT3B0aW9uYWw8VUNoYXIzMj4gdmFyaWF0aW9uID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKIAogICAgIFJlZlB0cjxGb250PiBzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIo
VUNoYXIzMiwgY29uc3QgRm9udERlc2NyaXB0aW9uJiwgSXNGb3JQbGF0Zm9ybUZvbnQsIEZvbnRD
YWNoZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcAppbmRleCBiODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2YzU3YTYyZTcz
Li5iNTAyZDlmZWQyYWY0ZTc5ZTI5NmRmZmUyZTg2NTdlNDYwNWQ3ODU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIwMyw3ICsyMDMs
NyBAQCBPcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6YWx0ZXJuYXRlRmFtaWx5TmFt
ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRm9u
dFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3NlZEZhbWls
eU5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKaW5kZXggOTZjOWYwZTY4ZDFiOWY0YTFhODg1YzAwYTAzZjNiMWY1ZjM0OTc5OS4uZDFl
ZmM4NWUyMGYwNmM4OGE3ZDE1ZDJjODAyNWVlZTZmYjg5NGQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMTgzLDcgKzE4Myw3
IEBAIEdseXBoQnVmZmVyIEZvbnRDYXNjYWRlOjpsYXlvdXRUZXh0KENvZGVQYXRoIGNvZGVQYXRo
VG9Vc2UsIGNvbnN0IFRleHRSdW4mIHJ1biwKIAogRmxvYXRTaXplIEZvbnRDYXNjYWRlOjpkcmF3
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIGZyb20sIE9wdGlvbmFsPHVuc2lnbmVkPiB0bywg
Q3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbikgY29uc3QK
IHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsK
KyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAg
ICAgYXV0byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBhdGgocnVuLCBmcm9tLCB0byks
IHJ1biwgZnJvbSwgZGVzdGluYXRpb24pOwogICAgIGdseXBoQnVmZmVyLmZsYXR0ZW4oKTsKIApA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuCiAgICAgaWYgKGlzTG9h
ZGluZ0N1c3RvbUZvbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVuc2lnbmVkIGRlc3Rp
bmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3RpbmF0
aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKIAogICAgIGF1dG8gZ2x5cGhCdWZmZXIg
PSBsYXlvdXRUZXh0KGNvZGVQYXRoKHJ1biwgZnJvbSwgdG8pLCBydW4sIGZyb20sIGRlc3RpbmF0
aW9uLCBGb3JUZXh0RW1waGFzaXNPck5vdDo6Rm9yVGV4dEVtcGhhc2lzKTsKICAgICBnbHlwaEJ1
ZmZlci5mbGF0dGVuKCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4KIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9u
dENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4dFJ1bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRv
LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25z
dAogewogICAgIEFTU0VSVCghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpOwotICAgIHVuc2ln
bmVkIGRlc3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVk
IGRlc3RpbmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKICAgICAKICAgICAvLyBG
SVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0IGhhbmRsZXMgcGFydGlhbCBydW5z
IHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDAw
NTAKICAgICBDb2RlUGF0aCBjb2RlUGF0aFRvVXNlID0gY29kZVBhdGgocnVuKTsKQEAgLTQzMyw3
ICs0MzMsNyBAQCBib29sIEZvbnRDYXNjYWRlOjpmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZhaWxh
YmxlKGZsb2F0JiB3aWR0aCkgY29uc3QKIAogdm9pZCBGb250Q2FzY2FkZTo6YWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25S
ZWN0LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8pIGNvbnN0CiB7Ci0gICAg
dW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5z
aWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIGlmIChj
b2RlUGF0aChydW4sIGZyb20sIHRvKSAhPSBDb2RlUGF0aDo6Q29tcGxleCkKICAgICAgICAgcmV0
dXJuIGFkanVzdFNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwg
ZnJvbSwgZGVzdGluYXRpb24pOwogCkBAIC01MDcsNyArNTA3LDcgQEAgRm9udENhc2NhZGU6OkNv
ZGVQYXRoIEZvbnRDYXNjYWRlOjpjb2RlUGF0aChjb25zdCBUZXh0UnVuJiBydW4sIE9wdGlvbmFs
PHVuc2lnbmUKIAogI2lmICFVU0UoRlJFRVRZUEUpCiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZmFz
dCBjb2RlIHBhdGggb25jZSBpdCBoYW5kbGVzIHBhcnRpYWwgcnVucyB3aXRoIGtlcm5pbmcgYW5k
IGxpZ2F0dXJlcy4gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTAwMDUwCi0gICAgaWYgKChlbmFi
bGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlT3IoMCkgfHwg
dG8udmFsdWVPcihydW4ubGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkpCisgICAgaWYgKChlbmFi
bGVLZXJuaW5nKCkgfHwgcmVxdWlyZXNTaGFwaW5nKCkpICYmIChmcm9tLnZhbHVlX29yKDApIHx8
IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKICAgICAgICAgcmV0
dXJuIENvZGVQYXRoOjpDb21wbGV4OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJvbSk7CkBA
IC0xMjAxLDE5ICsxMjAxLDE5IEBAIHN0YXRpYyBHbHlwaFVuZGVybGluZVR5cGUgY29tcHV0ZVVu
ZGVybGluZVR5cGUoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5CiBPcHRpb25hbDxH
bHlwaERhdGE+IEZvbnRDYXNjYWRlOjpnZXRFbXBoYXNpc01hcmtHbHlwaERhdGEoY29uc3QgQXRv
bVN0cmluZyYgbWFyaykgY29uc3QKIHsKICAgICBpZiAobWFyay5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBVQ2hhcjMyIGNoYXJhY3RlcjsKICAgICBpZiAoIW1hcmsuaXM4Qml0KCkpIHsKICAgICAgICAg
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKG1hcmsuY2hhcmFjdGVyczE2
KCksIDAsIG1hcmsubGVuZ3RoKCksIG1hcmsubGVuZ3RoKCkpOwogICAgICAgICB1bnNpZ25lZCBj
bHVzdGVyTGVuZ3RoOwogICAgICAgICBpZiAoIWl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBj
bHVzdGVyTGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0gZWxzZQogICAgICAgICBjaGFyYWN0ZXIg
PSBtYXJrWzBdOwogCiAgICAgT3B0aW9uYWw8R2x5cGhEYXRhPiBnbHlwaERhdGEoZ2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgZmFsc2UsIEVtcGhhc2lzTWFya1ZhcmlhbnQpKTsKLSAg
ICByZXR1cm4gZ2x5cGhEYXRhLnZhbHVlKCkuaXNWYWxpZCgpID8gZ2x5cGhEYXRhIDogV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBnbHlwaERhdGEudmFsdWUoKS5pc1ZhbGlkKCkgPyBnbHlwaERh
dGEgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGludCBGb250Q2FzY2FkZTo6ZW1waGFzaXNNYXJrQXNj
ZW50KGNvbnN0IEF0b21TdHJpbmcmIG1hcmspIGNvbnN0CkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChmbG9hdCB5LCBGbG9h
dFBvaW50IHAxLCBGbG9hdFBvaW50CiB7CiAgICAgaWYgKChwMS55KCkgPCB5ICYmIHAyLnkoKSA+
IHkpIHx8IChwMS55KCkgPiB5ICYmIHAyLnkoKSA8IHkpKQogICAgICAgICByZXR1cm4gcDEueCgp
ICsgKHkgLSBwMS55KCkpICogKHAyLngoKSAtIHAxLngoKSkgLyAocDIueSgpIC0gcDEueSgpKTsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyB2b2lkIHVwZGF0ZVgoR2x5cGhJdGVyYXRpb25TdGF0ZSYgc3RhdGUsIGZsb2F0IHgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRl
eCAxZWY5ZTc2ZmYxNmQ0MDhmNTc3ODhmZmJjZmQ4NmQ1NzU1NWFiZTJkLi44MDI4YjNhZWE2Njhm
ZDk3MzAwYWEwZjI0MjU3MzMxMTk3OGFhZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTExNiw5ICsxMTYsOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiA9IG51
bGxwdHIpIGNvbnN0OwogCiAgICAgZW51bSBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24geyBEb05v
dFBhaW50SWZGb250Tm90UmVhZHksIFVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkgfTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8
dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0LCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0
U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxv
YXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6
Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9v
dGhpbmdNb2RlKTsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50
JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9w
dCkgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYs
IHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQp
IGNvbnN0OwogCiAgICAgRGFzaEFycmF5IGRhc2hlc0ZvckludGVyc2VjdGlvbnNXaXRoUmVjdChj
b25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRS
ZWN0JiBsaW5lRXh0ZW50cykgY29uc3Q7CiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGZsb2F0IHdpZHRoKFRleHRMYXlvdXQmLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25l
ZCBsZW4sIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCk7CiAKICAgICBp
bnQgb2Zmc2V0Rm9yUG9zaXRpb24oY29uc3QgVGV4dFJ1biYsIGZsb2F0IHBvc2l0aW9uLCBib29s
IGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSBjb25zdDsKLSAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJl
Y3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNp
Z25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25z
dDsKKyAgICB2b2lkIGFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0KGNvbnN0IFRleHRSdW4mLCBM
YXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCB1bnNpZ25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGJvb2wgaXNTbWFsbENhcHMo
KSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi52YXJpYW50Q2FwcygpID09IEZvbnRW
YXJpYW50Q2Fwczo6U21hbGw7IH0KIApAQCAtMTQ5LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBmYW1pbHlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLmZh
bWlseUNvdW50KCk7IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlBdCh1bnNpZ25lZCBp
KSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi5mYW1pbHlBdChpKTsgfQogCi0gICAg
Ly8gQSBXVEY6Om51bGxvcHQgcmV0dXJuIHZhbHVlIGluZGljYXRlcyAiZm9udC1zdHlsZTogbm9y
bWFsIi4KKyAgICAvLyBBIHN0ZDo6bnVsbG9wdCByZXR1cm4gdmFsdWUgaW5kaWNhdGVzICJmb250
LXN0eWxlOiBub3JtYWwiLgogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaXRhbGlj
KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24uaXRhbGljKCk7IH0KICAgICBGb250
U2VsZWN0aW9uVmFsdWUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24u
d2VpZ2h0KCk7IH0KICAgICBGb250V2lkdGhWYXJpYW50IHdpZHRoVmFyaWFudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udERlc2NyaXB0aW9uLndpZHRoVmFyaWFudCgpOyB9CkBAIC0xOTEsNyArMTkx
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFp
bGFibGUoKTsKIAogICAgIGVudW0gY2xhc3MgQ29kZVBhdGggOiB1aW50OF90IHsgQXV0bywgU2lt
cGxlLCBDb21wbGV4LCBTaW1wbGVXaXRoR2x5cGhPdmVyZmxvdyB9OwotICAgIENvZGVQYXRoIGNv
ZGVQYXRoKGNvbnN0IFRleHRSdW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IFdURjo6bnVs
bG9wdCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBD
b2RlUGF0aCBjb2RlUGF0aChjb25zdCBUZXh0UnVuJiwgT3B0aW9uYWw8dW5zaWduZWQ+IGZyb20g
PSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CiAgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJhbmdlQ29kZVBhdGgoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCkgeyByZXR1cm4gQ29kZVBhdGg6OlNpbXBsZTsgfQogICAgIHN0YXRpYyBD
b2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGVEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGVEZXNjcmlwdGlvbi5oCmluZGV4IDBhN2RmMjUyOGRhYzYyYThjNWE4OTBiZDJkZmE0
MzBhMjE0ZGQ3ZjYuLmZmZjNlNjBlNDA3OTdhN2QyNTdlMGI1YTlmMmFmMjY5N2QxNWJmYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZURlc2NyaXB0aW9uLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIC8vIEluaXRpYWwgdmFsdWVzIGZvciBmb250IHByb3BlcnRpZXMuCi0gICAgc3RhdGljIE9w
dGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaW5pdGlhbEl0YWxpYygpIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIHN0YXRpYyBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGluaXRp
YWxJdGFsaWMoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBzdGF0aWMgRm9udFN0eWxl
QXhpcyBpbml0aWFsRm9udFN0eWxlQXhpcygpIHsgcmV0dXJuIEZvbnRTdHlsZUF4aXM6OnNsbnQ7
IH0KICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGluaXRpYWxXZWlnaHQoKSB7IHJldHVy
biBub3JtYWxXZWlnaHRWYWx1ZSgpOyB9CiAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25WYWx1ZSBp
bml0aWFsU3RyZXRjaCgpIHsgcmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1ZSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4
IGYzOTQ3NWRlY2YyMGMzOGRjOGMzNDE5NjJkM2MxZmNkMGEyNTQ1ZTUuLjk4MDYxZWRiMzRhNjYw
OGQ4YzU1ZjdkNTUyNjYxYWRkNmE5OWNlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC0yNTYsMTYyICsyNTYsMTYyIEBA
IE9wdGlvbmFsPEZvbnREZXNjcmlwdGlvbj4gRm9udERlc2NyaXB0aW9uOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250RmVhdHVyZVNldHRpbmdzPiBmZWF0dXJlU2V0
dGluZ3M7CiAgICAgZGVjb2RlciA+PiBmZWF0dXJlU2V0dGluZ3M7CiAgICAgaWYgKCFmZWF0dXJl
U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWF0aW9uU2V0dGluZ3M+IHZhcmlh
dGlvblNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAgaWYg
KCF2YXJpYXRpb25TZXR0aW5ncykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxvY2Fs
ZTsKICAgICBkZWNvZGVyID4+IGxvY2FsZTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4+IGl0YWxpYzsKICAgICBkZWNvZGVy
ID4+IGl0YWxpYzsKICAgICBpZiAoIWl0YWxpYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZT4gc3RyZXRjaDsKICAgICBkZWNvZGVyID4+IHN0cmV0Y2g7CiAgICAgaWYgKCFz
dHJldGNoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiB3ZWlnaHQ7CiAg
ICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxmbG9hdD4gY29tcHV0ZWRTaXplOwogICAgIGRlY29kZXIgPj4gY29tcHV0ZWRTaXplOwogICAg
IGlmICghY29tcHV0ZWRTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udE9yaWVudGF0aW9uPiBv
cmllbnRhdGlvbjsKICAgICBkZWNvZGVyID4+IG9yaWVudGF0aW9uOwogICAgIGlmICghb3JpZW50
YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxOb25DSktHbHlwaE9yaWVudGF0aW9uPiBub25DSktH
bHlwaE9yaWVudGF0aW9uOwogICAgIGRlY29kZXIgPj4gbm9uQ0pLR2x5cGhPcmllbnRhdGlvbjsK
ICAgICBpZiAoIW5vbkNKS0dseXBoT3JpZW50YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250
V2lkdGhWYXJpYW50PiB3aWR0aFZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7
CiAgICAgaWYgKCF3aWR0aFZhcmlhbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250UmVuZGVyaW5n
TW9kZT4gcmVuZGVyaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ01vZGU7CiAgICAg
aWYgKCFyZW5kZXJpbmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VGV4dFJlbmRlcmluZ01vZGU+
IHRleHRSZW5kZXJpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7CiAg
ICAgaWYgKCF0ZXh0UmVuZGVyaW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTeW50aGVz
aXM+IGZvbnRTeW50aGVzaXM7CiAgICAgZGVjb2RlciA+PiBmb250U3ludGhlc2lzOwogICAgIGlm
ICghZm9udFN5bnRoZXNpcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVz
PiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudENvbW1vbkxp
Z2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnRDb21tb25MaWdhdHVyZXMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXM7
CiAgICAgZGVjb2RlciA+PiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAo
IXZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZh
cmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGRlY29kZXIg
Pj4gdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgaWYgKCF2YXJpYW50SGlzdG9yaWNh
bExpZ2F0dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiB2YXJp
YW50Q29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29udGV4dHVh
bEFsdGVybmF0ZXM7CiAgICAgaWYgKCF2YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxGb250VmFyaWFudFBvc2l0aW9uPiB2YXJpYW50UG9zaXRpb247CiAgICAg
ZGVjb2RlciA+PiB2YXJpYW50UG9zaXRpb247CiAgICAgaWYgKCF2YXJpYW50UG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudENhcHM+IHZhcmlhbnRDYXBzOwogICAgIGRlY29k
ZXIgPj4gdmFyaWFudENhcHM7CiAgICAgaWYgKCF2YXJpYW50Q2FwcykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gdmFyaWFudE51bWVyaWNGaWd1cmU7CiAgICAg
ZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY0ZpZ3VyZTsKICAgICBpZiAoIXZhcmlhbnROdW1lcmlj
RmlndXJlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gdmFy
aWFudE51bWVyaWNTcGFjaW5nOwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNTcGFjaW5n
OwogICAgIGlmICghdmFyaWFudE51bWVyaWNTcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9u
dFZhcmlhbnROdW1lcmljRnJhY3Rpb24+IHZhcmlhbnROdW1lcmljRnJhY3Rpb247CiAgICAgZGVj
b2RlciA+PiB2YXJpYW50TnVtZXJpY0ZyYWN0aW9uOwogICAgIGlmICghdmFyaWFudE51bWVyaWNG
cmFjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY09yZGluYWw+IHZh
cmlhbnROdW1lcmljT3JkaW5hbDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnROdW1lcmljT3JkaW5h
bDsKICAgICBpZiAoIXZhcmlhbnROdW1lcmljT3JkaW5hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvPiB2YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvOwog
ICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIXZhcmlh
bnROdW1lcmljU2xhc2hlZFplcm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEFsdGVy
bmF0ZXM+IHZhcmlhbnRBbHRlcm5hdGVzOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEFsdGVybmF0
ZXM7CiAgICAgaWYgKCF2YXJpYW50QWx0ZXJuYXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudEVhc3RBc2lhblZhcmlhbnQ7CiAgICAgZGVj
b2RlciA+PiB2YXJpYW50RWFzdEFzaWFuVmFyaWFudDsKICAgICBpZiAoIXZhcmlhbnRFYXN0QXNp
YW5WYXJpYW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aD4g
dmFyaWFudEVhc3RBc2lhbldpZHRoOwogICAgIGRlY29kZXIgPj4gdmFyaWFudEVhc3RBc2lhbldp
ZHRoOwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhbldpZHRoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiB2YXJpYW50RWFzdEFzaWFuUnVieTsKICAgICBkZWNv
ZGVyID4+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblJ1
YnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250T3B0aWNhbFNpemluZz4gb3B0aWNhbFNpemluZzsK
ICAgICBkZWNvZGVyID4+IG9wdGljYWxTaXppbmc7CiAgICAgaWYgKCFvcHRpY2FsU2l6aW5nKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8Rm9udFN0eWxlQXhpcz4gZm9udFN0eWxlQXhpczsKICAgICBkZWNv
ZGVyID4+IGZvbnRTdHlsZUF4aXM7CiAgICAgaWYgKCFmb250U3R5bGVBeGlzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8QWxsb3dVc2VySW5zdGFsbGVkRm9udHM+IHNob3VsZEFsbG93VXNlckluc3RhbGxl
ZEZvbnRzOwogICAgIGRlY29kZXIgPj4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAg
ICAgaWYgKCFzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PGJvb2w+IHNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nOwogICAgIGRlY29kZXIgPj4g
c2hvdWxkRGlzYWJsZUxpZ2F0dXJlc0ZvclNwYWNpbmc7CiAgICAgaWYgKCFzaG91bGREaXNhYmxl
TGlnYXR1cmVzRm9yU3BhY2luZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGZWF0dXJl
U2V0dGluZ3MoV1RGTW92ZSgqZmVhdHVyZVNldHRpbmdzKSk7CiAgICAgZm9udERlc2NyaXB0aW9u
LnNldFZhcmlhdGlvblNldHRpbmdzKFdURk1vdmUoKnZhcmlhdGlvblNldHRpbmdzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxn
b3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rp
b25BbGdvcml0aG0uY3BwCmluZGV4IDZlNWY4YjQ5YjdjNGE0YTc0Yjg5ZWU0MDY0M2YxYzhiZDEy
ZDI1NmMuLjM1N2I0MDIzZWUwOGRhMGNkZTg5NjgyZDhkY2M3NzhlMWM4ZWZlMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0
aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rp
b25BbGdvcml0aG0uY3BwCkBAIC02Niw3ICs2Niw3IEBAIGF1dG8gRm9udFNlbGVjdGlvbkFsZ29y
aXRobTo6c3RyZXRjaERpc3RhbmNlKENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMpIGNvbnN0IC0+
CiBhdXRvIEZvbnRTZWxlY3Rpb25BbGdvcml0aG06OnN0eWxlRGlzdGFuY2UoQ2FwYWJpbGl0aWVz
IGNhcGFiaWxpdGllcykgY29uc3QgLT4gRGlzdGFuY2VSZXN1bHQKIHsKICAgICBhdXRvIHNsb3Bl
ID0gY2FwYWJpbGl0aWVzLnNsb3BlOwotICAgIGF1dG8gcmVxdWVzdFNsb3BlID0gbV9yZXF1ZXN0
LnNsb3BlLnZhbHVlT3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CisgICAgYXV0byByZXF1ZXN0U2xv
cGUgPSBtX3JlcXVlc3Quc2xvcGUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAg
QVNTRVJUKHNsb3BlLmlzVmFsaWQoKSk7CiAgICAgaWYgKHNsb3BlLmluY2x1ZGVzKHJlcXVlc3RT
bG9wZSkpCiAgICAgICAgIHJldHVybiB7IEZvbnRTZWxlY3Rpb25WYWx1ZSgpLCByZXF1ZXN0U2xv
cGUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRT
ZWxlY3Rpb25BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRTZWxlY3Rpb25BbGdvcml0aG0uaAppbmRleCA2NmY4ZmRjMTc1YjZhMzEwOTcxODZmMmQ0YmM3
NzAxZjc1YjQ0ZWZjLi5iYzhkN2Q5ZTM5ZWNlMzIyNGVjODhmMjM4ODA5ZjlmYmM0NzVlMTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9u
QWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNl
bGVjdGlvbkFsZ29yaXRobS5oCkBAIC05Miw3ICs5Miw3IEBAIE9wdGlvbmFsPEZvbnRTZWxlY3Rp
b25WYWx1ZT4gRm9udFNlbGVjdGlvblZhbHVlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU6OkJhY2tpbmdUeXBlPiBiYWNraW5nOwogICAg
IGRlY29kZXIgPj4gYmFja2luZzsKICAgICBpZiAoIWJhY2tpbmcpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250U2Vs
ZWN0aW9uVmFsdWUgcmVzdWx0OwogICAgIHJlc3VsdC5tX2JhY2tpbmcgPSAqYmFja2luZzsKQEAg
LTM2MiwxMiArMzYyLDEyIEBAIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gRm9udFNlbGVj
dGlvblJhbmdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250U2Vs
ZWN0aW9uUmFuZ2U6OlZhbHVlPiBtaW5pbXVtOwogICAgIGRlY29kZXIgPj4gbWluaW11bTsKICAg
ICBpZiAoIW1pbmltdW0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U6OlZh
bHVlPiBtYXhpbXVtOwogICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAoIW1heGltdW0p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4ge3sgKm1pbmltdW0sICptYXhpbXVtIH19OwogfQpAQCAtNDA1LDcg
KzQwNSw3IEBAIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBGb250U2VsZWN0aW9uVmFsdWUmIGZvbnRTZWxlCiAKIGlubGluZSBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFs
dWU+JiBvcHRpb25hbEZvbnRTZWxlY3Rpb25WYWx1ZSkKIHsKLSAgICB0cyA8PCBvcHRpb25hbEZv
bnRTZWxlY3Rpb25WYWx1ZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOworICAgIHRzIDw8
IG9wdGlvbmFsRm9udFNlbGVjdGlvblZhbHVlLnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkp
OwogICAgIHJldHVybiB0czsKIH0KIApAQCAtNDg0LDE3ICs0ODQsMTcgQEAgc3RydWN0IEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgewogCiAgICAgY29uc3RleHByIFJhbmdlIGNv
bXB1dGVXZWlnaHQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHdlaWdodC52YWx1ZU9y
KFJhbmdlIHsgbm9ybWFsV2VpZ2h0VmFsdWUoKSB9KTsKKyAgICAgICAgcmV0dXJuIHdlaWdodC52
YWx1ZV9vcihSYW5nZSB7IG5vcm1hbFdlaWdodFZhbHVlKCkgfSk7CiAgICAgfQogCiAgICAgY29u
c3RleHByIFJhbmdlIGNvbXB1dGVXaWR0aCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
d2lkdGgudmFsdWVPcihSYW5nZSB7IG5vcm1hbFN0cmV0Y2hWYWx1ZSgpIH0pOworICAgICAgICBy
ZXR1cm4gd2lkdGgudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxTdHJldGNoVmFsdWUoKSB9KTsKICAg
ICB9CiAKICAgICBjb25zdGV4cHIgUmFuZ2UgY29tcHV0ZVNsb3BlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBzbG9wZS52YWx1ZU9yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFsdWUoKSB9
KTsKKyAgICAgICAgcmV0dXJuIHNsb3BlLnZhbHVlX29yKFJhbmdlIHsgbm9ybWFsSXRhbGljVmFs
dWUoKSB9KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtNTIyLDE3
ICs1MjIsMTcgQEAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcz4g
Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllczoKICAgICBPcHRpb25hbDxPcHRpb25h
bFJhbmdlPiB3ZWlnaHQ7CiAgICAgZGVjb2RlciA+PiB3ZWlnaHQ7CiAgICAgaWYgKCF3ZWlnaHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdlPiB3aWR0aDsKICAgICBkZWNvZGVyID4+
IHdpZHRoOwogICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbFJhbmdl
PiBzbG9wZTsKICAgICBkZWNvZGVyID4+IHNsb3BlOwogICAgIGlmICghc2xvcGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4ge3sgKndlaWdodCwgKndpZHRoLCAqc2xvcGUgfX07CiB9CkBAIC01NTIsNyArNTUy
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhcGFiaWxpdGllcyA9IEZvbnRTZWxlY3Rpb25DYXBh
YmlsaXRpZXM7CiAKICAgICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKCkgPSBkZWxldGU7Ci0gICAg
Rm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0aW9uUmVxdWVzdCwgY29uc3QgVmVjdG9y
PENhcGFiaWxpdGllcz4mLCBPcHRpb25hbDxDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllc0JvdW5k
cyA9IFdURjo6bnVsbG9wdCk7CisgICAgRm9udFNlbGVjdGlvbkFsZ29yaXRobShGb250U2VsZWN0
aW9uUmVxdWVzdCwgY29uc3QgVmVjdG9yPENhcGFiaWxpdGllcz4mLCBPcHRpb25hbDxDYXBhYmls
aXRpZXM+IGNhcGFiaWxpdGllc0JvdW5kcyA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBzdHJ1Y3Qg
RGlzdGFuY2VSZXN1bHQgewogICAgICAgICBGb250U2VsZWN0aW9uVmFsdWUgZGlzdGFuY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0
aW5ncy5oCmluZGV4IDA3ODNjNTJiMWMzNDNlMWRkNWU3ODdmYTQ3NDA0Y2U0ZWY2NWFkNDcuLjVj
Y2NmZmJiODU4ZDkyMjIyYWUzNmI3YTUxY2E2OTQwYjIxYzA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC0x
MjEsMjcgKzEyMSwyNyBAQCBPcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZzxUPj4gRm9udFRhZ2dl
ZFNldHRpbmc8VD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQ4
X3Q+IGNoYXIwOwogICAgIGRlY29kZXIgPj4gY2hhcjA7CiAgICAgaWYgKCFjaGFyMCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIxOwogICAgIGRlY29kZXIgPj4gY2hhcjE7CiAgICAg
aWYgKCFjaGFyMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+IGNoYXIyOwogICAgIGRlY29k
ZXIgPj4gY2hhcjI7CiAgICAgaWYgKCFjaGFyMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ4X3Q+
IGNoYXIzOwogICAgIGRlY29kZXIgPj4gY2hhcjM7CiAgICAgaWYgKCFjaGFyMykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFQ+IHZhbHVlOwogICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBGb250VGFnZ2VkU2V0dGluZzxUPih7ewogICAgICAgICBzdGF0
aWNfY2FzdDxjaGFyPigqY2hhcjApLApAQCAtMjA4LDcgKzIwOCw3IEBAIE9wdGlvbmFsPEZvbnRU
YWdnZWRTZXR0aW5nczxUPj4gRm9udFRhZ2dlZFNldHRpbmdzPFQ+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+PiBsaXN0
OwogICAgIGRlY29kZXIgPj4gbGlzdDsKICAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBGb250VGFn
Z2VkU2V0dGluZ3MgcmVzdWx0OwogICAgIHJlc3VsdC5tX2xpc3QgPSBXVEZNb3ZlKCpsaXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCmluZGV4IDRiOGIz
ZTI3NmI0MzliNTdlYzBjZTNjYmQ5MzZkZTI3OTQxYzllOWUuLmNjZDNlODU3YTVjYTljZDhkYTA5
NjdjMWFiMDkzNGFmYzM3NGM1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvdXJDQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm91ckNDLmNwcApAQCAtMzIsNyArMzIsNyBAQCBPcHRpb25hbDxGb3VyQ0M+IEZvdXJDQzo6
ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZ1ZhbHVlKQogewogICAgIGF1dG8gYXNjaWlW
YWx1ZSA9IHN0cmluZ1ZhbHVlLmFzY2lpKCk7CiAgICAgaWYgKGFzY2lpVmFsdWUubGVuZ3RoKCkg
IT0gNCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBhc2NpaVZhbHVlLmRhdGEoKTsKICAg
ICBBU1NFUlQoYXNjaWlWYWx1ZS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggY2U3YTQzOWUyZDFiMWVjNmY0M2JhMTkxNmVk
NjE5OTlmOWE1ODk3OS4uN2FiYzNjMDhmZTIxODg2ZDJhYjIxOWVkYjkzYTAxMGNkYmRlNTFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBA
IC0xODYsOCArMTg2LDggQEAgdW5zaWduZWQgR0xDb250ZXh0Ojp2ZXJzaW9uKCkKICAgICAgICAg
ICAgIHZlcnNpb25EaWdpdHMgPSB2ZXJzaW9uU3RyaW5nQ29tcG9uZW50c1swXS5zcGxpdCgnLicp
OwogICAgICAgICB9CiAKLSAgICAgICAgbV92ZXJzaW9uID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNbMF0pLnZhbHVlT3IoMCkgKiAxMDAK
LSAgICAgICAgICAgICsgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+
KHZlcnNpb25EaWdpdHNbMV0pLnZhbHVlT3IoMCkgKiAxMDsKKyAgICAgICAgbV92ZXJzaW9uID0g
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZlcnNpb25EaWdpdHNb
MF0pLnZhbHVlX29yKDApICogMTAwCisgICAgICAgICAgICArIHBhcnNlSW50ZWdlckFsbG93aW5n
VHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2ZXJzaW9uRGlnaXRzWzFdKS52YWx1ZV9vcigwKSAqIDEw
OwogICAgIH0KICAgICByZXR1cm4gbV92ZXJzaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCmluZGV4IDMwOGRl
NTUzZWMxZGZjN2IxNjdkNDBjZDY3MWRjNWQ5ZmI2ZjdlYmQuLmMxZGI4MTI3N2E5NDA5ZDEyMWE1
N2RjODk1MTY3NmI5ZTNiMWM4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCBS
b3RhdGVkUmVjdCByb3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24o
Y29uc3QgRmxvYXRRdWFkJiBxdWFkLAogewogICAgIGNvbnN0ZXhwciBhdXRvIHR3b1BpRmxvYXQg
PSAyICogcGlGbG9hdDsKIAotICAgIGF1dG8gbWluUm90YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlv
bkluUmFkaWFucy52YWx1ZU9yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkp
OworICAgIGF1dG8gbWluUm90YXRpb25BbW91bnQgPSBtaW5Sb3RhdGlvbkluUmFkaWFucy52YWx1
ZV9vcihzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6ZXBzaWxvbigpKTsKIAogICAgIGF1dG8g
bGVmdE1pZFBvaW50ID0gbWlkUG9pbnQocXVhZC5wMSgpLCBxdWFkLnA0KCkpOwogICAgIGF1dG8g
cmlnaHRNaWRQb2ludCA9IG1pZFBvaW50KHF1YWQucDIoKSwgcXVhZC5wMygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW9tZXRyeVV0aWxpdGllcy5oCmlu
ZGV4IGQ4Y2VjNjkzNGMwM2IxZTE1YzZlZjU2NGMxOWIzNDQwNGMxM2Y0ZDUuLjgwZGUxMGVmYWRi
OTljNjhkM2UwNWJiNjExMjI5Nzk5ODQ2NWZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaApAQCAtNjgsNiArNjgsNiBA
QCBzdHJ1Y3QgUm90YXRlZFJlY3QgewogICAgIGZsb2F0IGFuZ2xlSW5SYWRpYW5zOwogfTsKIAot
V0VCQ09SRV9FWFBPUlQgUm90YXRlZFJlY3Qgcm90YXRlZEJvdW5kaW5nUmVjdFdpdGhNaW5pbXVt
QW5nbGVPZlJvdGF0aW9uKGNvbnN0IEZsb2F0UXVhZCYsIE9wdGlvbmFsPGZsb2F0PiBtaW5Sb3Rh
dGlvbkluUmFkaWFucyA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCBSb3RhdGVkUmVj
dCByb3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29uc3QgRmxv
YXRRdWFkJiwgT3B0aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gc3RkOjpudWxs
b3B0KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVm
ZmVyLmgKaW5kZXggNDVjYWE3ODI5Y2YwMGYyNWMxMTM5YzcyMWQ1MjA1M2ZmYWVlYmU5Zi4uOTQ5
NzUwZGIwZTQwNWVhYWNmNGI1ZGRjN2Q3NzIxYWM3MWY4YTlkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gdW5jaGVja2VkU3RyaW5nT2Zmc2V0
QXQoaW5kZXgpOwogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c3RkOjptYWtlX3Vuc2lnbmVkX3Q8
R2x5cGhCdWZmZXJTdHJpbmdPZmZzZXQ+PihyZXN1bHQpID49IHN0cmluZ0xlbmd0aCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCA3OWUyZjUzODhj
NDZlNTg5MjMwMTYxYzQ3NDUyNTQxOTI0N2U4MmFiLi5hNDRmNjg0YWMwZTIwN2ExZWU0ZDkwZmI1
NmYyMDIxZTBhNzQ1MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIEZsb2F0UmVjdCBHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pjo6dW5rbm93bk1ldHJpY3Mo
KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBPcHRpb25hbDxQYXRoPiBHbHlwaE1ldHJpY3NNYXA8T3B0
aW9uYWw8UGF0aD4+Ojp1bmtub3duTWV0cmljcygpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBl
bmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01h
cDxUPjo6bG9jYXRlUGFnZVNsb3dDYXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAppbmRleCA5YzNkMDk3ZjU1OGE1Y2U2
ODFjZDI5MzViYTIwNDE1NTA4YTQxODJhLi4xMzllNzM1NWE4NTI0MjJkOGI4MDg2MjllMmNiNmM3
ZDg4ZGVjNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
LmgKQEAgLTE3MywxMiArMTczLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlv
bmFsPEdyYWRpZW50OjpDb2xvclN0b3A+IEdyYWRpZW50OjpDb2xvclN0b3A6OmRlCiAgICAgT3B0
aW9uYWw8ZmxvYXQ+IG9mZnNldDsKICAgICBkZWNvZGVyID4+IG9mZnNldDsKICAgICBpZiAoIW9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNv
bG9yOwogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKm9mZnNldCwgKmNvbG9y
IH19OwogfQpAQCAtMTk0LDEyICsxOTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
T3B0aW9uYWw8R3JhZGllbnQ6OkxpbmVhckRhdGE+IEdyYWRpZW50OjpMaW5lYXJEYXRhOjoKICAg
ICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAg
ICAgaWYgKCFwb2ludDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CiAg
ICAgZGVjb2RlciA+PiBwb2ludDE7CiAgICAgaWYgKCFwb2ludDEpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgKnBvaW50MCwgKnBvaW50MSB9fTsKIH0KQEAgLTIxOCwyNyArMjE4LDI3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPEdyYWRpZW50OjpSYWRpYWxEYXRhPiBHcmFkaWVu
dDo6UmFkaWFsRGF0YTo6CiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcG9pbnQwOwogICAgIGRl
Y29kZXIgPj4gcG9pbnQwOwogICAgIGlmICghcG9pbnQwKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gcG9pbnQxOwogICAgIGRlY29kZXIgPj4gcG9pbnQxOwogICAgIGlmICghcG9pbnQx
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHN0YXJ0UmFkaXVzOwogICAgIGRlY29kZXIgPj4g
c3RhcnRSYWRpdXM7CiAgICAgaWYgKCFzdGFydFJhZGl1cykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZs
b2F0PiBlbmRSYWRpdXM7CiAgICAgZGVjb2RlciA+PiBlbmRSYWRpdXM7CiAgICAgaWYgKCFlbmRS
YWRpdXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gYXNwZWN0UmF0aW87CiAgICAgZGVjb2Rl
ciA+PiBhc3BlY3RSYXRpbzsKICAgICBpZiAoIWFzcGVjdFJhdGlvKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHt7ICpwb2ludDAsICpwb2ludDEsICpzdGFydFJhZGl1cywgKmVuZFJhZGl1cywgKmFzcGVjdFJh
dGlvIH19OwogfQpAQCAtMjU0LDEyICsyNTQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gT3B0aW9uYWw8R3JhZGllbnQ6OkNvbmljRGF0YT4gR3JhZGllbnQ6OkNvbmljRGF0YTo6ZGUK
ICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7
CiAgICAgaWYgKCFwb2ludDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gYW5nbGVSYWRpYW5z
OwogICAgIGRlY29kZXIgPj4gYW5nbGVSYWRpYW5zOwogICAgIGlmICghYW5nbGVSYWRpYW5zKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHt7ICpwb2ludDAsICphbmdsZVJhZGlhbnMgfX07CiB9CkBAIC0yNzcs
MTcgKzI3NywxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxSZWY8R3Jh
ZGllbnQ+PiBHcmFkaWVudDo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIE9wdGlvbmFsPERhdGE+
IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRv
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKCpkYXRhKSk7CiAKICAgICBPcHRp
b25hbDxDb2xvclN0b3BWZWN0b3I+IHN0b3BzOwogICAgIGRlY29kZXIgPj4gc3RvcHM7CiAgICAg
aWYgKCFzdG9wcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxib29sPiBzdG9wc1NvcnRlZDsKICAgICBkZWNv
ZGVyID4+IHN0b3BzU29ydGVkOwogICAgIGlmICghc3RvcHNTb3J0ZWQuaGFzVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoKnN0b3BzU29ydGVkKQogICAgICAgICBncmFkaWVudC0+c2V0U29ydGVkQ29sb3JT
dG9wcyhXVEZNb3ZlKCpzdG9wcykpOwogICAgIGVsc2UgewpAQCAtMjk3LDcgKzI5Nyw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50
OjpkZWNvZGUoRGVjb2RlciYgZGVjCiAKICAgICBHcmFkaWVudFNwcmVhZE1ldGhvZCBzcHJlYWRN
ZXRob2Q7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcHJlYWRNZXRob2QpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGdy
YWRpZW50LT5zZXRTcHJlYWRNZXRob2Qoc3ByZWFkTWV0aG9kKTsKIAogICAgIHJldHVybiBncmFk
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCmluZGV4IDk3MGMzNzVjYmQ1ODE5YTIwMGIyMGI2NzEzMjg3MGFkNWQ5MTdh
OTAuLmM4YWMzODZiODExOTU2YTc3NmZlZGRmYWVlZjIyODJjOTRhYzg2MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApA
QCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVu
LnNldERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246
OkxUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRp
ck92ZXJyaWRlKGZhbHNlKSk7CiAKLSAgICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4
dCgqdGhpcywgc3VicnVuLCBjdXJyUG9pbnQsIDAsIFdURjo6bnVsbG9wdCwgY3VzdG9tRm9udE5v
dFJlYWR5QWN0aW9uKTsKKyAgICAgICAgYXV0byBhZHZhbmNlID0gZm9udC5kcmF3VGV4dCgqdGhp
cywgc3VicnVuLCBjdXJyUG9pbnQsIDAsIHN0ZDo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uKTsKICAgICAgICAgY3VyclBvaW50Lm1vdmUoYWR2YW5jZSk7CiAKICAgICAgICAgYmlk
aVJ1biA9IGJpZGlSdW4tPm5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZWUxNDJhMTk0YTRmYTU3MThiOTIyM2Rl
ZGZkOWRiNWE1MGFjNzhkMC4uZmUxNWVhYjA0YjM1ZmVmOGI3NGVlMWY3M2VlOGY4MTlkOTkwOWI3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKQEAgLTE1MywxMiArMTUzLDEyIEBAIE9wdGlvbmFsPERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlPiBEb2N1bWVudE1hcmtlckxpbmVTdHlsZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAg
ICAgT3B0aW9uYWw8TW9kZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFt
b2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkVXNlRGFya0FwcGVhcmFuY2U7CiAg
ICAgZGVjb2RlciA+PiBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBpZiAoIXNob3VsZFVz
ZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICptb2RlLCAqc2hvdWxkVXNlRGFy
a0FwcGVhcmFuY2UgfX07CiB9CkBAIC00NjgsOSArNDY4LDkgQEAgcHVibGljOgogCiAgICAgLy8g
VGV4dAogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29u
c3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2ln
bmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0g
MCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIHVu
c2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBG
b250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdCaWRp
VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0
IGNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJp
bnRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCmluZGV4IDhkYzc0ZmU3YWVhNmU5OWI5MmQ3ZjIzYWQ2MjQ2Y2ZhNTZmNGFmN2YuLjJh
ZjI2YzljMmQwN2E0NDE3MjViMmFlM2I3NDA5OGYzZjYyZmM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM0MCw3ICszNDAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIGxheWVyICh0aGUgbG9j
YXRpb24gb2YgaXRzIHRvcC1sZWZ0IGNvcm5lciBpbiBpdHMgcGFyZW50KQogICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94aW1h
dGVQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsgbV9wb3NpdGlvbiA9IHA7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcCkgeyBtX2FwcHJveGltYXRlUG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7IG1fcG9zaXRpb24gPSBwOyB9CiAKICAgICAvLyBhcHByb3hp
bWF0ZVBvc2l0aW9uLCBpZiBzZXQsIG92ZXJyaWRlcyBwb3NpdGlvbigpIGFuZCBpcyB1c2VkIGR1
cmluZyBjb3ZlcmFnZSByZWN0IGNvbXB1dGF0aW9uLgogICAgIEZsb2F0UG9pbnQgYXBwcm94aW1h
dGVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwcm94aW1hdGVQb3NpdGlvbiA/IG1fYXBw
cm94aW1hdGVQb3NpdGlvbi52YWx1ZSgpIDogbV9wb3NpdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAppbmRleCAxNmNkOWE0
Mzc3ZjE4OGVlNTM0MGU0ZjRhNDQ5ZmUyMTczOTUzMTgxLi5lNTgwNTJhM2RjY2VkMDQyNTI3ZmY0
ZTcxNTgwN2I1M2NiYzllYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMzksMjMgKzM5LDIzIEBAIE9wdGlvbmFsPEhF
VkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1N0
cmluZykKICAgICBhdXRvIGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBh
dXRvIG5leHRFbGVtZW50ID0gY29kZWNTcGxpdC5iZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVu
dCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSEVWQ1BhcmFtZXRlcnMgcGFyYW1ldGVy
czsKIAogICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgc3BlY2lmaWVk
IGluIElTTy9JRUMgMTQ0OTYtMTU6MjAxNCwgc2VjdGlvbiA4OgogICAgIGF1dG8gY29kZWNOYW1l
ID0gKm5leHRFbGVtZW50OwogICAgIGlmIChjb2RlY05hbWUgIT0gImh2YzEiICYmIGNvZGVjTmFt
ZSAhPSAiaGV2MSIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gRmlyc3QgZWxlbWVudDogT3B0aW9uYWwgR2VuZXJhbCBQcm9maWxl
IFNwYWNlIHBhcmFtZXRlciBbJ0EnLCAnQicsICdDJ10sIG1hcHBpbmcgdG8gWzEsIDIsIDNdCiAg
ICAgLy8gYW5kIFswXSBmb3IgYWJzZW50LCB0aGVuIEdlbmVyYWwgUHJvZmlsZSBJREMgYXMgYSA1
LWJpdCBkZWNpbWFsIG51bWJlci4KICAgICBhdXRvIHByb2ZpbGVTcGFjZSA9ICpuZXh0RWxlbWVu
dDsKICAgICBpZiAoIXByb2ZpbGVTcGFjZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZmlyc3RD
aGFyYWN0ZXIgPSBwcm9maWxlU3BhY2VbMF07CiAgICAgYm9vbCBoYXNQcm9maWxlU3BhY2UgPSBm
aXJzdENoYXJhY3RlciA+PSAnQScgJiYgZmlyc3RDaGFyYWN0ZXIgPD0gJ0MnOwpAQCAtNjYsMzIg
KzY2LDMyIEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJzPiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRl
cnMoU3RyaW5nVmlldyBjb2RlY1N0cmluZykKIAogICAgIGF1dG8gcHJvZmlsZUlEQyA9IHBhcnNl
SW50ZWdlcjx1aW50OF90Pihwcm9maWxlU3BhY2UpOwogICAgIGlmICghcHJvZmlsZUlEQykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlSURDID0gKnByb2ZpbGVJREM7CiAKICAgICBp
ZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2Vjb25k
IGVsZW1lbnQ6IDMyIGJpdCBvZiBHZW5lcmFsIFByb2ZpbGUgQ29tcGF0aWJpbGl0eSBGbGFncywg
aW4gcmV2ZXJzZSBiaXQgb3JkZXIsCiAgICAgLy8gaW4gaGV4IHdpdGggbGVhZGluZyB6ZXJvcyBv
bWl0dGVkLgogICAgIGF1dG8gY29tcGF0aWJpbGl0eUZsYWdzID0gcGFyc2VJbnRlZ2VyPHVpbnQz
Ml90PigqbmV4dEVsZW1lbnQsIDE2KTsKICAgICBpZiAoIWNvbXBhdGliaWxpdHlGbGFncykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0eUZsYWdzID0gKmNvbXBh
dGliaWxpdHlGbGFnczsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBUaGlyZCBlbGVtZW50OiBHZW5lcmFsIFRpZXIgRmxhZyBbJ0wnLCAn
SCddLCBtYXBwaW5nIHRvIFtmYWxzZSwgdHJ1ZV0sIGZvbGxvd2VkIGJ5CiAgICAgLy8gR2VuZXJh
bCBMZXZlbCBJREMgYXMgYSA4LWJpdCBkZWNpbWFsIG51bWJlci4KICAgICBhdXRvIGdlbmVyYWxU
aWVyID0gKm5leHRFbGVtZW50OwogICAgIGZpcnN0Q2hhcmFjdGVyID0gZ2VuZXJhbFRpZXJbMF07
CiAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyICE9ICdMJyAmJiBmaXJzdENoYXJhY3RlciAhPSAnSCcp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIGdlbmVyYWxMZXZlbElEQyA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihn
ZW5lcmFsVGllci5zdWJzdHJpbmcoMSkpOwogICAgIGlmICghZ2VuZXJhbExldmVsSURDKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDID0gKmdlbmVyYWxMZXZlbElEQzsKIAogICAg
IC8vIE9wdGlvbmFsIGZvdXJ0aCBhbmQgcmVtYWluaW5nIGVsZW1lbnRzOiBhIHNlcXVlbmNlIG9m
IDYgMS1ieXRlIGNvbnN0cmFpbnQgZmxhZ3MsIGVhY2ggYnl0ZSBlbmNvZGVkCkBAIC0xMDAsNyAr
MTAwLDcgQEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVy
cyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogICAgICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBj
b2RlY1NwbGl0LmVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghcGFyc2VJ
bnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCwgMTYpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7CkBAIC0xMDksNyArMTA5LDcgQEAgT3B0aW9uYWw8SEVWQ1Bh
cmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5n
KQogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPiBpbmxpbmUgT3B0aW9uYWw8VmFsdWVUeXBl
PiBtYWtlT3B0aW9uYWxGcm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCiB7CiAg
ICAgaWYgKCFwb2ludGVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAqcG9pbnRlcjsKIH0KIApAQCAtMTYyLDcg
KzE2Miw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4gbWF4aW11bUxldmVsSURGb3JEb1Zp
UHJvZmlsZUlEKHVpbnQxNl90IHByb2ZpbGVJRCkKICAgICBjYXNlIDc6IHJldHVybiA5OwogICAg
IGNhc2UgODogcmV0dXJuIDEzOwogICAgIGNhc2UgOTogcmV0dXJuIDU7Ci0gICAgZGVmYXVsdDog
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBkZWZhdWx0OiByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIH0KIApAQCAtMTc5LDUzICsxNzksNTMgQEAgT3B0aW9uYWw8RG9WaVBhcmFtZXRlcnM+
IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjVmlldykKICAgICBhdXRv
IGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRFbGVtZW50
ID0gY29kZWNTcGxpdC5iZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgRG9WaVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGF1dG8g
Y29kZWMgPSBwYXJzZURvVmlDb2RlY1R5cGUoKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvZGVj
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMuY29kZWMgPSAqY29kZWM7CiAKICAgICBpZiAoKytuZXh0RWxl
bWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwcm9maWxlSUQgPSAqbmV4
dEVsZW1lbnQ7CiAgICAgaWYgKCFwcm9maWxlSUQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGZp
cnN0Q2hhcmFjdGVyID0gcHJvZmlsZUlEWzBdOwogICAgIC8vIFByb2ZpbGUgZGVmaW5pdGlvbiBj
YW4gZWl0aGVyIGJlIG51bWVyaWMgb3IgYWxwaGE6CiAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09
ICcwJykgewogICAgICAgICBhdXRvIGJpdHN0cmVhbVByb2ZpbGVJRCA9IHBhcnNlSW50ZWdlcjx1
aW50OF90Pihwcm9maWxlSUQpOwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRzdHJl
YW1Qcm9maWxlSUQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBiaXRzdHJlYW1Qcm9maWxl
SUQgPSBwcm9maWxlSURGb3JBbHBoYWJldGljRG9WaVByb2ZpbGUoY29kZWNWaWV3LmxlZnQoNSAr
IHByb2ZpbGVJRC5sZW5ndGgoKSkpOwogICAgICAgICBpZiAoIWJpdHN0cmVhbVByb2ZpbGVJRCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9ICpiaXRz
dHJlYW1Qcm9maWxlSUQ7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkRG9WaVByb2ZpbGVJRChw
YXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWlzVmFsaWRQcm9m
aWxlSURGb3JDb2RlYyhwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCwgcGFyYW1ldGVycy5j
b2RlYykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYXV0byBiaXRzdHJlYW1MZXZlbElEID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpu
ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFiaXRzdHJlYW1MZXZlbElEKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuYml0c3RyZWFtTGV2ZWxJRCA9ICpiaXRzdHJlYW1MZXZlbElEOwogCiAgICAgYXV0byBtYXhp
bXVtTGV2ZWxJRCA9IG1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJp
dHN0cmVhbVByb2ZpbGVJRCk7CiAgICAgaWYgKCFtYXhpbXVtTGV2ZWxJRCB8fCBwYXJhbWV0ZXJz
LmJpdHN0cmVhbUxldmVsSUQgPiAqbWF4aW11bUxldmVsSUQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4
IDE3NjQ3NDdkNjE0MGNmMTE2YzljNjQyNmRkYzk3MWFjMmJlYjk4MDUuLjI0MmZlMDU3OGZjMTRk
MjcwOTY0NjUzNTA2NzM1MmYwZGFmZTVlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qg
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUoKSk7IH0K
ICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS53aWR0aCgpOyB9CiAgICAg
ZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCBmYWUwZWQ2NDRjZDc0
ZmRhMzk3ZWVlNGUyYjZjNzQ5ZTgzZjBiOTVhLi42NGVhNDgzNzI2OTZkYWU5MDUwYmEwNDEyNWFj
MjBmYTA0ZTAwYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKQEAgLTEyMiw4ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9y
bVRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8
ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8dWludDhf
dD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVS
TChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6
Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0
IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRl
c3RQb2ludCA9IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0ID0gQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXgg
ZDQ3MDRhNjQ1YTYyNDc3MWNlYmRiOTA0MjVkNDVjNjkwZjgxNDE3YS4uNDNmNTJiZDRiZDg5ZDUx
Njk1MzdjYjk0Y2M4NWUwNTI5Y2VmOGMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMDIsNyArMTAy
LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQKIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzb3VyY2VSZWN0U2NhbGVk
LnNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc291cmNlUmVj
dENsaXBwZWQgPSBpbnRlcnNlY3Rpb24oYmFja2VuZFJlY3QoKSwgc291cmNlUmVjdFNjYWxlZCk7
CiAgICAgSW50UmVjdCBkZXN0aW5hdGlvblJlY3QgeyBJbnRQb2ludDo6emVybygpLCBzb3VyY2VS
ZWN0Q2xpcHBlZC5zaXplKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKaW5kZXggYTEyYTZkODI4YjI5ZWMzZWU5ZGI4NTdlOWVhZDQ1NGM1
NDVlNzg3Ni4uZjhkNjA0NTdiMjE1MzZmZjM5OTkwYzk4NDZjMDcyNGZlNWY3Y2YyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTcz
LDEyICs3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBbHBo
YTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gaGFzQWxwaGE7CiAgICAgICAgICAgICBpZiAoIWhh
c0FscGhhKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8U2Vjb25k
cz4gZHVyYXRpb247CiAgICAgICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIHJldHVy
biB7ewogICAgICAgICAgICAgICAgICpoYXNBbHBoYSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCmluZGV4IDg5Nzhl
NmFmNzEyZTgzY2Q2NzA4YWEzM2ZiNWMyNTRmZmM0MmIxMDcuLjNjOWY0OGY0NTY0MzkxNjE2ZGM2
ZTZmZjVmOGQ1ZDBkZWM2ZjZiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaApAQCAtOTUsMjcgKzk1LDI3IEBA
IE9wdGlvbmFsPEltYWdlUGFpbnRpbmdPcHRpb25zPiBJbWFnZVBhaW50aW5nT3B0aW9uczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Q29tcG9zaXRlT3BlcmF0b3I+IGNv
bXBvc2l0ZU9wZXJhdG9yOwogICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAg
aWYgKCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxl
bmRNb2RlOwogICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOwogICAgIGlmICghYmxlbmRNb2RlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8RGVjb2RpbmdNb2RlPiBkZWNvZGluZ01vZGU7CiAgICAgZGVjb2Rl
ciA+PiBkZWNvZGluZ01vZGU7CiAgICAgaWYgKCFkZWNvZGluZ01vZGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVj
b2RlciA+PiBvcmllbnRhdGlvbjsKICAgICBpZiAoIW9yaWVudGF0aW9uKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8SW50ZXJwb2xhdGlvblF1YWxpdHk+IGludGVycG9sYXRpb25RdWFsaXR5OwogICAgIGRl
Y29kZXIgPj4gaW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgaWYgKCFpbnRlcnBvbGF0aW9uUXVh
bGl0eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBJbWFnZVBhaW50aW5nT3B0aW9ucyB7ICpjb21wb3NpdGVP
cGVyYXRvciwgKmJsZW5kTW9kZSwgKmRlY29kaW5nTW9kZSwgKm9yaWVudGF0aW9uLCAqaW50ZXJw
b2xhdGlvblF1YWxpdHkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlUmVzb2x1dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVJlc29sdXRpb24uY3BwCmluZGV4IGMxZTJjMmJiYzkzYzc4YmY4Y2FhY2Q4
MzMwMDFkMmQxNzZkZDJlMGUuLmY3NjYwYjA5NmM2NGQwMjM2NmIxYmU4N2M1NjI5ZTUzNmQxOTQ5
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVz
b2x1dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VS
ZXNvbHV0aW9uLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9w
dGlvbmFsPEludFNpemU+IEltYWdlUmVzb2x1dGlvbjo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoY29u
c3QgRmxvYXRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBSZXNvbHV0aW9uTWV0YWRhdGEmIG1ldGFk
YXRhKQogewogICAgIGlmIChtZXRhZGF0YS5yZXNvbHV0aW9uVW5pdCAhPSBSZXNvbHV0aW9uVW5p
dDo6SW5jaGVzIHx8IG1ldGFkYXRhLnJlc29sdXRpb24uaXNFbXB0eSgpIHx8IG1ldGFkYXRhLnBy
ZWZlcnJlZFNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzaXplRnJvbVJlc29sdXRpb24g
PSBzb3VyY2VTaXplICogRGVmYXVsdFJlc29sdXRpb24gLyBtZXRhZGF0YS5yZXNvbHV0aW9uOwog
CiAgICAgaWYgKHNpemVGcm9tUmVzb2x1dGlvbiA9PSBtZXRhZGF0YS5wcmVmZXJyZWRTaXplKQog
ICAgICAgICByZXR1cm4gcm91bmRlZEludFNpemUobWV0YWRhdGEucHJlZmVycmVkU2l6ZSk7CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAppbmRleCA5ZTBjNWYwOGJiNmVlMTc1M2IyNTg4ODhjZDU1ZmE4MjdlMWI5YTFkLi41ZDkxNmMw
ZmU1ZDcwMTkxYjkyZDQwYWM3OTE0Y2JkZTVjMDQzNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC01NzQsNyArNTc0LDcgQEAg
T3B0aW9uYWw8SW50U2l6ZT4gSW1hZ2VTb3VyY2U6OmRlbnNpdHlDb3JyZWN0ZWRTaXplKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24KIHsKICAgICBhdXRvIHNpemUgPSBmaXJzdEZyYW1lTWV0
YWRhdGFDYWNoZUlmTmVlZGVkKG1fZGVuc2l0eUNvcnJlY3RlZFNpemUsIE1ldGFkYXRhVHlwZTo6
RGVuc2l0eUNvcnJlY3RlZFNpemUsICZJbWFnZUZyYW1lOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZSwg
SW1hZ2VGcmFtZTo6Q2FjaGluZzo6TWV0YWRhdGEpOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCiAgICAgICAg
IG9yaWVudGF0aW9uID0gdGhpcy0+b3JpZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWNDdWUuaAppbmRleCBjZWQ2ODFiMGI3
NDMxMDdlNDRjOTg4NzY2OTE0ZDMwNDY1Mzg0ZWI5Li4zMjE1MTliZTMyMTNkOTA2ZTFiYTFkZmE4
NjI0OWRjNjBhZTY5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRHZW5lcmljQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oCkBAIC05MCw4MiArOTAsODIgQEAgT3B0aW9uYWw8R2Vu
ZXJpY0N1ZURhdGE+IEdlbmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBPcHRpb25hbDxJbmJhbmRHZW5lcmljQ3VlSWRlbnRpZmllcj4gdW5pcXVlSWQ7CiAgICAgZGVj
b2RlciA+PiB1bmlxdWVJZDsKICAgICBpZiAoIXVuaXF1ZUlkKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBzdGFydFRpbWU7CiAgICAgZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgaWYg
KCFzdGFydFRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZFRpbWU7CiAgICAg
ZGVjb2RlciA+PiBlbmRUaW1lOwogICAgIGlmICghZW5kVGltZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYg
KCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50OwogICAgIGRl
Y29kZXIgPj4gY29udGVudDsKICAgICBpZiAoIWNvbnRlbnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxT
dHJpbmc+IGZvbnROYW1lOwogICAgIGRlY29kZXIgPj4gZm9udE5hbWU7CiAgICAgaWYgKCFmb250
TmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGRvdWJsZT4gbGluZTsKICAgICBkZWNvZGVyID4+IGxp
bmU7CiAgICAgaWYgKCFsaW5lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBwb3NpdGlvbjsK
ICAgICBkZWNvZGVyID4+IHBvc2l0aW9uOwogICAgIGlmICghcG9zaXRpb24pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxkb3VibGU+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmFzZUZvbnRTaXplOwogICAgIGRlY29kZXIg
Pj4gYmFzZUZvbnRTaXplOwogICAgIGlmICghYmFzZUZvbnRTaXplKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8ZG91YmxlPiByZWxhdGl2ZUZvbnRTaXplOwogICAgIGRlY29kZXIgPj4gcmVsYXRpdmVGb250
U2l6ZTsKICAgICBpZiAoIXJlbGF0aXZlRm9udFNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xv
cj4gZm9yZWdyb3VuZENvbG9yOwogICAgIGRlY29kZXIgPj4gZm9yZWdyb3VuZENvbG9yOwogICAg
IGlmICghZm9yZWdyb3VuZENvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKICAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoIWJhY2tn
cm91bmRDb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBoaWdobGlnaHRDb2xvcjsKICAg
ICBkZWNvZGVyID4+IGhpZ2hsaWdodENvbG9yOwogICAgIGlmICghaGlnaGxpZ2h0Q29sb3IpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxBbGlnbm1lbnQ+IGFsaWdubWVudDsKICAgICBkZWNvZGVyID4+IGFs
aWdubWVudDsKICAgICBpZiAoIWFsaWdubWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0YXR1cz4g
c3RhdHVzOwogICAgIGRlY29kZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgR2VuZXJpY0N1ZURhdGEgZGF0YSA9IHsKIApAQCAtMTk0LDcgKzE5NCw3IEBAIE9wdGlvbmFs
PEdlbmVyaWNDdWVEYXRhPiBHZW5lcmljQ3VlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgfTsKIAogICAgIGlmICghZGF0YS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0
YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGlu
ZVBhdGhEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmxpbmVQYXRo
RGF0YS5oCmluZGV4IGRlNDUzZDkxOWU4YzRjYzAyOTUwZjdlNjFjZjAzZmNhZjc2MzcwOTMuLjNh
MDJlNTYwNWFiMjhjYWUzNDk0Zjg4NzVmYzQ2NTQzYzMwYmIzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaApAQCAtOTUsNyArOTUs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxNb3ZlRGF0YT4gTW92ZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1vdmVEYXRhIGRhdGE7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLmxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZGF0YTsKIH0K
IApAQCAtMTA5LDEwICsxMDksMTAgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
TGluZURhdGE+IExpbmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBMaW5l
RGF0YSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZW5kKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwog
fQpAQCAtMTMyLDI1ICsxMzIsMjUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
QXJjRGF0YT4gQXJjRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQXJjRGF0
YSBkYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuY2VudGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5yYWRpdXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnN0
YXJ0QW5nbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZEFuZ2xlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5jbG9ja3dpc2UpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9
CkBAIC0xNjYsMTMgKzE2NiwxMyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxR
dWFkQ3VydmVEYXRhPiBRdWFkQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIFF1
YWRDdXJ2ZURhdGEgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2lu
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuY29udHJvbFBvaW50KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5lbmRQb2ludCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gZGF0YTsKIH0KQEAgLTE4OSwxNiArMTg5LDE2IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPEJlemllckN1cnZlRGF0YT4gQmV6aWVyQ3VydmVEYXRhOjpkZWNvZGUoRGVjb2Rl
CiB7CiAgICAgQmV6aWVyQ3VydmVEYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhLnN0YXJ0UG9pbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRy
b2xQb2ludDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmNvbnRyb2xQb2lu
dDIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmVuZFBvaW50KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5oCmluZGV4IDI0MmZmYTlkMjYxZjI5YzFmYzIyZWFhNDhlZmI5ZjQxMTA4Y2Vk
YzAuLmM5Y2JkODFkYjIwYThiNmU0ZTExZGQwNDdjYTNiOWNkZGIyOGZhZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKQEAgLTcwLDEyICs3MCwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPExheW91dFBvaW50PiBsYXlvdXRQb2ludDsK
ICAgICAgICAgZGVjb2RlciA+PiBsYXlvdXRQb2ludDsKICAgICAgICAgaWYgKCFsYXlvdXRQb2lu
dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPExheW91dFNpemU+IGxheW91dFNpemU7
CiAgICAgICAgIGRlY29kZXIgPj4gbGF5b3V0U2l6ZTsKICAgICAgICAgaWYgKCFsYXlvdXRTaXpl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7ICpsYXlvdXRQb2ludCwgKmxheW91dFNp
emUgfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCmluZGV4IDNlNGUxYTI0MzM5ZGY1ZmMwMjJiMjU0YTMwYmM1OTdmYmI4ZjEw
OTguLmRmYWNjNjI0YjE4NzE4OGYzNTFkN2NlYTk5NDM1NjMxODQ0YjVlMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEyODEs
NyArMTI4MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKIHsKICAg
ICBjbGllbnQoKS5tZWRpYVBsYXllclJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgaWYgKG1fcGVu
ZGluZ1NlZWtSZXF1ZXN0ICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpID09IE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlOjpIYXZlTWV0YWRhdGEpCi0gICAgICAgIHNlZWsoKnN0ZDo6ZXhjaGFuZ2Uo
bV9wZW5kaW5nU2Vla1JlcXVlc3QsIFdURjo6bnVsbG9wdCkpOworICAgICAgICBzZWVrKCpzdGQ6
OmV4Y2hhbmdlKG1fcGVuZGluZ1NlZWtSZXF1ZXN0LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllcjo6dm9sdW1lQ2hhbmdlZChkb3VibGUgbmV3Vm9sdW1lKQpAQCAtMTU2Miw3
ICsxNTYyLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6ZW5kZWQoKSBjb25zdAogT3B0aW9uYWw8Vmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllcjo6dmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzKCkKIHsKICAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX3By
aXZhdGUtPnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggOGY5NmZiNDU1ZGZjYmNk
MDgyNWM3OWMzOGFkOTY1OTNlNzUxMDA0ZS4uYWExMTNiMzhmNWMyZDA0NmI3NjMwZWUxOGQzNWJl
ZDU3YTFjMmEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCkBAIC0xMTIsMjcgKzExMiwyNyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyB7CiAgICAgICAgIE9wdGlvbmFsPENvbnRlbnRUeXBlPiB0eXBlOwogICAgICAg
ICBkZWNvZGVyID4+IHR5cGU7CiAgICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAg
aWYgKCF1cmwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc01lZGlhU291
cmNlOwogICAgICAgICBkZWNvZGVyID4+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGlmICghaXNN
ZWRpYVNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTWVkaWFT
dHJlYW07CiAgICAgICAgIGRlY29kZXIgPj4gaXNNZWRpYVN0cmVhbTsKICAgICAgICAgaWYgKCFp
c01lZGlhU3RyZWFtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPENvbnRl
bnRUeXBlPj4gdHlwZXNSZXF1aXJpbmdIYXJkd2FyZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBl
c1JlcXVpcmluZ0hhcmR3YXJlOwogICAgICAgICBpZiAoIXR5cGVzUmVxdWlyaW5nSGFyZHdhcmUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUo
KnVybCksICppc01lZGlhU291cmNlLCAqaXNNZWRpYVN0cmVhbSwgKnR5cGVzUmVxdWlyaW5nSGFy
ZHdhcmUgfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCA5Y2ZjYjBkNGE0ZTg2YmQ1NTAxYTI4NGU4
ZmIwZmUzYmI2MDIwYWRiLi44NzdmOGMwZWJhNzg2NzFjYmM4YWE1MmVmNjc5NDY3NTFiYWJjYjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
Ym9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZp
cnR1YWwgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgdmlydHVhbCBNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFQ
bGF5ZXI6Ok1vdmllTG9hZFR5cGU6OlVua25vd247IH0KIApAQCAtMjc2LDcgKzI3Niw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
dmlydHVhbCBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IHZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcygpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAjaWYgRU5BQkxF
KEFWRl9DQVBUSU9OUykKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGNmOTE5ZmI3YzlhZjI2NGFjOTU4OGQ1MjJiZjE2ZjY0MjEw
ZmUyNDQuLjRmYTgyNzNjZGNjZDk5MDgxYmIyZjQyMmVjZmQxMWE3Mzg4MDZmOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTEwNSwxMSArMTA1LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdSYWlz
ZWRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKSBm
aW5hbCB7IH0KIAotICAgIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1
bnNpZ25lZD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIEZsb2F0
U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBG
bG9hdFBvaW50JiwgdW5zaWduZWQgPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBzdGQ6Om51bGxv
cHQpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWwgeyB9
CiAKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
PSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQorICAgIHZv
aWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwg
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlv
bmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyB9CiAgICAgdm9pZCBkcmF3Qmlk
aVRleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBGb250Q2FzY2FkZTo6
RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgZHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFJlY3QmLCBEb2N1bWVudE1hcmtlckxpbmVTdHls
ZSkgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCmlu
ZGV4IGNlZDcxMmEyM2ViYzhmMmFhMWYyOWMzMGQxZjBjYTg3ZTE0OGRlM2YuLmRhZDY0M2Y3ZjE0
NmNkYWQ5NjRhNzU4NmVhODg2MDVkMzY4OTE3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguY3BwCkBAIC00OTksNyArNDk5LDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBQYXRoOjpib3VuZGluZ1JlY3RGcm9tSW5saW5lRGF0YSgpIGNvbnN0CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGguaAppbmRleCAzMDdjYTUxNWRhOTYwOThhNjRkNWI2NWI2NzFiOTQzNjQ1YzU2ZGNmLi5h
MDE1NjQ2YzY3MDg1YzQ1MzVlNjkzNjFjYWY0NTkzYzdhY2JlMmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKICAgICBib29sIGhhc0lubGluZURhdGE7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNJbmxpbmVEYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICho
YXNJbmxpbmVEYXRhKSB7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGF0aC5tX2lubGlu
ZURhdGEpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgfQpAQCAtMzU0
LDM4ICszNTQsMzggQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0
aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICB1aW50NjRfdCBudW1Qb2ludHM7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1Qb2ludHMpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcGF0aC5jbGVhcigp
OwogCiAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IG51bVBvaW50czsgKytpKSB7CiAgICAg
ICAgIFBhdGhFbGVtZW50OjpUeXBlIGVsZW1lbnRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGVsZW1lbnRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN3aXRjaCAoZWxlbWVu
dFR5cGUpIHsKICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ6IHsK
ICAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9pbnQ7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBvaW50KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBwYXRoLm1vdmVU
byhwb2ludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFBh
dGhFbGVtZW50OjpUeXBlOjpBZGRMaW5lVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQb2lu
dCBwb2ludDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9pbnQpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKHBvaW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFk
ZFF1YWRDdXJ2ZVRvUG9pbnQ6IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50
OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgRmxvYXRQb2ludCBlbmRQb2ludDsKICAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5kUG9pbnQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgcGF0aC5hZGRRdWFkQ3VydmVUbyhjb250cm9sUG9pbnQsIGVuZFBvaW50KTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzLDE1ICszOTMsMTUgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gT3B0aW9uYWw8UGF0aD4gUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFkZEN1cnZlVG9Qb2ludDogewogICAgICAg
ICAgICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQxOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb250cm9sUG9pbnQxKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAg
IEZsb2F0UG9pbnQgY29udHJvbFBvaW50MjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29udHJvbFBvaW50MikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBGbG9h
dFBvaW50IGVuZFBvaW50OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmRQb2lu
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBwYXRoLmFkZEJlemllckN1cnZl
VG8oY29udHJvbFBvaW50MSwgY29udHJvbFBvaW50MiwgZW5kUG9pbnQpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXgg
ZDAyYTQ2YjNhM2FmOGNkNzJkODgwOTJiOTM4ZTlmMjI3MTBlYzI3Yi4uOGM2ODZhMWYyMjhjODAw
ODVjNDVlOTllYjgwYWM1OTM4NGVlYmVmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uaApAQCAtMTA4LDE3ICsxMDgsMTcgQEAgT3B0aW9uYWw8UGF0dGVybjo6
UGFyYW1ldGVycz4gUGF0dGVybjo6UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAg
ICAgZGVjb2RlciA+PiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiAgICAgaWYgKCFwYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiByZXBlYXRYOwogICAgIGRlY29k
ZXIgPj4gcmVwZWF0WDsKICAgICBpZiAoIXJlcGVhdFgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29s
PiByZXBlYXRZOwogICAgIGRlY29kZXIgPj4gcmVwZWF0WTsKICAgICBpZiAoIXJlcGVhdFkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgKnJlcGVhdFgsICpyZXBlYXRZLCAqcGF0dGVyblNwYWNlVHJhbnNm
b3JtIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXIuY3BwCmluZGV4IDhkYjRmYTI3YmU0NWVjMTYzYjljOTViMzMzYTAxNWY5NTUzMjVmMmYu
LmZhNzE2NjIzZWJlMzc5ODg2ZWYwZmVkMzI2ZmQ1NjA1NjNlMzg3OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNv
ZGluZyhjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYKIAogICAgIGF1dG8gcGl4ZWxBcnJheSA9IFVp
bnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICBpZiAoIXBpeGVsQXJyYXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBp
eGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAKQEAgLTczLDEwICs3MywxMCBAQCBP
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdCYgZm9ybWF0LCBjbwogCiAgICAgYXV0byBidWZmZXJTaXplID0gY29tcHV0ZUJ1
ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2Vk
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhlbEFy
cmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVhc2VO
b25OdWxsKCkgfSB9OwogfQogCkBAIC04NiwxMiArODYsMTIgQEAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIGZvcm1h
dCwgY28KIAogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwg
c2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChi
dWZmZXJTaXplLnVuc2FmZUdldCgpICE9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZShXVEZNb3Zl
KGFycmF5QnVmZmVyKSwgMCwgYnVmZmVyU2l6ZS51bnNhZmVHZXQoKSk7CiAgICAgaWYgKCFwaXhl
bEFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiB7IHsgZm9ybWF0LCBzaXplLCBwaXhlbEFycmF5LnJlbGVh
c2VOb25OdWxsKCkgfSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuaAppbmRleCBmNzU1Y2UxMDBhNzhiZmMzNjNiODg5NjgyZGFhZjZiMDE0
MTg4N2U4Li5jMzUzZmViZGNkZjM5MDJmZjNjNTJlZTEzY2RhZDliZjliOWUwYTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKQEAgLTkwLDMx
ICs5MCwzMSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyRm9ybWF0PiBmb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBmb3JtYXQ7CiAgICAgaWYgKCFmb3Jt
YXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4KICAgICBp
ZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQt
PnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJ
bnRTaXplPiBzaXplOwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVy
U2l6ZSgqZm9ybWF0LCAqc2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVy
Zmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlZEJ1ZmZlclNpemUu
dW5zYWZlR2V0KCk7CiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlc3VsdCA9
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6
ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlc3VsdC0+bV9kYXRhLT5kYXRhKCksIHJlc3VsdC0+bV9k
YXRhLT5ieXRlTGVuZ3RoKCksIDEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5o
CmluZGV4IDdmMjA4M2U2NTc2ZTRmY2UyMTFiOGFhMjA5ZDQ1ZDUyODcwMjFiODYuLjYwODJlNWI4
NDY0MTAzZTUxYjQ0ZmVkZjBhN2JhNmRmZDU4MGJmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaApAQCAtNTQsMTcgKzU0
LDE3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0
PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4gYWxwaGFGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsKICAg
ICBpZiAoIWFscGhhRm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVs
Rm9ybWF0OwogICAgIGRlY29kZXIgPj4gcGl4ZWxGb3JtYXQ7CiAgICAgaWYgKCFwaXhlbEZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsK
ICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9ybWF0
KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAppbmRleCAzZmZiMzZmNTU2
N2MxMWUxMjUxYWY5N2Y0ODFmZWQyNmU4OTJjMWMzLi5jYjk3MDEyNWE0YjA0YjQ2YTVjMzViZGFj
Yzc2ZjMwODAxZTFjNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaApAQCAtODAsNyArODAsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JT
cGFjZTo6ZGVjb2RlKAogICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFt
ZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHsgeyAqbmFtZSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaAppbmRleCAyYmM4ZWZhZTM0OTgwNGVkNTAwMWQ2MDE1
ZjNhOTllMGZjOGFhYjRkLi5mY2JkMjc1Zjk1ZjMwYzJlYmMyMjRhM2FjNjg1ODU1ZGRlNjI2MWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRl
eHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGV4dFRyYWNrLmgKQEAgLTg3LDQyICs4Nyw0MiBAQCBPcHRpb25hbDxQbGF0Zm9ybVRleHRUcmFj
a0RhdGE+IFBsYXRmb3JtVGV4dFRyYWNrRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJlbDsKICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgIGlm
ICghbGFiZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGxhbmd1YWdlOwogICAgIGRlY29k
ZXIgPj4gbGFuZ3VhZ2U7CiAgICAgaWYgKCFsYW5ndWFnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlmICghdXJsKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8VHJhY2tNb2RlPiBtb2RlOwogICAgIGRlY29kZXIgPj4gbW9kZTsKICAgICBpZiAo
IW1vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxUcmFja0tpbmQ+IGtpbmQ7CiAgICAgZGVjb2RlciA+
PiBraW5kOwogICAgIGlmICgha2luZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFRyYWNrVHlwZT4gdHlw
ZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8aW50PiB1bmlxdWVJZDsKICAgICBkZWNvZGVyID4+IHVuaXF1ZUlkOwogICAgIGlmICghdW5p
cXVlSWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpc0RlZmF1bHQ7CiAgICAgZGVjb2RlciA+
PiBpc0RlZmF1bHQ7CiAgICAgaWYgKCFpc0RlZmF1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQbGF0Zm9ybVRleHRU
cmFja0RhdGEgZGF0YSA9IHsKICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAppbmRl
eCA5ODI2ODJjY2ZhMGMwYjhhNzAyNWY1YzM4Mzg5OTk1MWIzM2RkNmFjLi41ODQ0ODFlOTU2M2Zi
Y2I5MDZiNjc4Mzg4MWI5MjkwMzU1OWU1YjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaApAQCAtOTcsMTIgKzk3LDEy
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0OwogICAg
ICAgICAgICAgZGVjb2RlciA+PiBzdGFydDsKICAgICAgICAgICAgIGlmICghc3RhcnQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGVuZDsKICAg
ICAgICAgICAgIGRlY29kZXIgPj4gZW5kOwogICAgICAgICAgICAgaWYgKCFlbmQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RhcnQpLCBXVEZN
b3ZlKCplbmQpIH19OwogICAgICAgICB9CkBAIC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPFZlY3RvcjxSYW5nZT4+IGJ1ZmZlcmVkOwogICAgIGRlY29kZXIg
Pj4gYnVmZmVyZWQ7CiAgICAgaWYgKCFidWZmZXJlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZN
b3ZlKCpidWZmZXJlZCkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5oCmluZGV4IDZkNzE3OWFiZGJkNDliY2E4NzM3ZGM4MTNjOTg3ZjBjZmE1NjY4MDIuLjdl
Y2IxYzY5NmIyZThmNTg4YWUxZGZhZWQxNzcwNTIxMDA4N2NhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC0yNDYsMTIgKzI0NiwxMiBAQCBPcHRpb25h
bDxSZWdpb246OlNoYXBlPiBSZWdpb246OlNoYXBlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBPcHRpb25hbDxWZWN0b3I8aW50Pj4gc2VnbWVudHM7CiAgICAgZGVjb2RlciA+PiBzZWdt
ZW50czsKICAgICBpZiAoIXNlZ21lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lv
bjo6U3Bhbj4+IHNwYW5zOwogICAgIGRlY29kZXIgPj4gc3BhbnM7CiAgICAgaWYgKCFzcGFucykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFNoYXBlIHNoYXBlOwogICAgIHNoYXBlLm1fc2VnbWVudHMgPSBXVEZNb3ZlKCpz
ZWdtZW50cyk7CkBAIC0yNzYsMTIgKzI3NiwxMiBAQCBPcHRpb25hbDxSZWdpb24+IFJlZ2lvbjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8SW50UmVjdD4gYm91bmRzOwog
ICAgIGRlY29kZXIgPj4gYm91bmRzOwogICAgIGlmICghYm91bmRzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gaGFzU2hhcGU7CiAgICAgZGVjb2RlciA+PiBoYXNTaGFwZTsKICAgICBpZiAoIWhh
c1NoYXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgUmVnaW9uIHJlZ2lvbiA9IHsgKmJvdW5kcyB9OwogCkBAIC0yODks
NyArMjg5LDcgQEAgT3B0aW9uYWw8UmVnaW9uPiBSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgICAgICBPcHRpb25hbDxTaGFwZT4gc2hhcGU7CiAgICAgICAgIGRlY29kZXIgPj4g
c2hhcGU7CiAgICAgICAgIGlmICghc2hhcGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVnaW9uLm1f
c2hhcGUgPSBtYWtlVW5pcXVlPFNoYXBlPihXVEZNb3ZlKCpzaGFwZSkpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCAx
ODk1YzIxOTM3NjUxOWMyYzgwZGRkMzA2YTI0ZWY3NjRhOWNiMzQ1Li41ODEwMjg2OWE5YzEzNzQ0
MGNlYmQwYTEwMmZkNDVjYTI4OGViYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIE9wdGlvbmFsPFNo
YWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjCiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5z
Zm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdv
biA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAg
dHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJh
bnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOworICAgICAgICBsYXllclJlY3QgPSB0cmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5z
Zm9ybWVkUG9seWdvbikuYm91bmRpbmdCb3goKTsKICAgICB9IGVsc2UgewogICAgICAgICBsYXll
clJlY3QgPSBzaGFkb3dlZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3ZlKG1fb2Zmc2V0KTsK
QEAgLTQyMiw3ICs0MjIsNyBAQCBPcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVy
dGllcz4gU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlYwogICAgIGlmICghY2xp
cFJlY3QuY29udGFpbnMoZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpKSkgewogICAgICAgICAv
LyBJZiB3ZSBhcmUgdG90YWxseSBvdXRzaWRlIHRoZSBjbGlwIHJlZ2lvbiwgd2UgYXJlbid0IHBh
aW50aW5nIGF0IGFsbC4KICAgICAgICAgaWYgKGludGVyc2VjdGlvbihsYXllclJlY3QsIGNsaXBS
ZWN0KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBJbnRSZWN0IGluZmxhdGVkQ2xp
cCA9IGNsaXBSZWN0OwogICAgICAgICAvLyBQaXhlbHMgYXQgdGhlIGVkZ2VzIGNhbiBiZSBhZmZl
Y3RlZCBieSBwaXhlbHMgb3V0c2lkZSB0aGUgYnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhY2tQcml2YXRlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAppbmRleCA3MTEzOGRm
Mjk0YWY4OWIzMDVkMTNlODA5ZDdmNGQyN2Q5MWI2ZDE0Li5kMGIwMmEzNDgyYmY3M2QxYjNmY2Vi
OTM4ZTZlOTliNDBkMWVhNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8dWludDY0X3Q+IFRyYWNrUHJpdmF0ZUJhc2U6OnRy
YWNrVUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPGJvb2w+IFRyYWNrUHJpdmF0ZUJhc2U6OmRlZmF1
bHRFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuY3BwCmluZGV4IDcy
ZWE0ZjQwY2U2ODNkZTIyZjMxZDlmNDQyNWZlMDE2ZDczZjFjOWIuLmY1NzcyNGQ5NjQ4NjI2MjAx
OGYzY2JhNDViMWYxMDFhYTQxNWIwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIE9wdGlvbmFs
PFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmlu
Z1ZpZXcgY29kZWNWaWV3CiAgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcu
Jyk7CiAgICAgYXV0byBuZXh0RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4oKTsKICAgICBpZiAo
bmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkIGNvbmZpZ3VyYXRpb247CiAKQEAgLTE0NiwzMyArMTQ2LDMzIEBAIE9wdGlv
bmFsPFZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0
cmluZ1ZpZXcgY29kZWNWaWV3CiAKICAgICAvLyBDb2RlYyBpZGVudGlmaWVyOiBsZWdhbCB2YWx1
ZXMgYXJlICd2cDA4JyBvciAndnAwOScuCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uY29kZWNOYW1l
ICE9ICJ2cDA4IiAmJiBjb25maWd1cmF0aW9uLmNvZGVjTmFtZSAhPSAidnAwOSIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpcnN0
IGVsZW1lbnQ6IHByb2ZpbGUuIExlZ2FsIHZhbHVlcyBhcmUgMC0zLgogICAgIGF1dG8gcHJvZmls
ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghcHJvZmls
ZSB8fCAqcHJvZmlsZSA+IDMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uZmlndXJhdGlvbi5wcm9maWxlID0gKnByb2Zp
bGU7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gU2Vjb25kIGVsZW1lbnQ6IGxldmVsLiBMZWdhbCB2YWx1ZXMgYXJlIGVudW1lcmF0ZWQg
aW4gdmFsaWRWUExldmVscyBhYm92ZS4KICAgICBhdXRvIGxldmVsID0gcGFyc2VJbnRlZ2VyPHVp
bnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFsZXZlbCB8fCAhaXNWYWxpZFZQTGV2ZWwo
KmxldmVsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBjb25maWd1cmF0aW9uLmxldmVsID0gKmxldmVsOwogCiAgICAgaWYg
KCsrbmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXJkIGVs
ZW1lbnQ6IGJpdERlcHRoLiBMZWdhbCB2YWx1ZXMgYXJlIDgsIDEwLCBhbmQgMTIuCiAgICAgYXV0
byBiaXREZXB0aCA9IHBhcnNlSW50ZWdlcjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlm
ICghYml0RGVwdGggfHwgKCpiaXREZXB0aCAhPSA4ICYmICpiaXREZXB0aCAhPSAxMCAmJiAqYml0
RGVwdGggIT0gMTIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24uYml0RGVwdGggPSAqYml0RGVwdGg7
CiAKICAgICAvLyAiY29sb3JQcmltYXJpZXMsIHRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzLCBtYXRy
aXhDb2VmZmljaWVudHMsIHZpZGVvRnVsbFJhbmdlRmxhZywgYW5kIGNocm9tYVN1YnNhbXBsaW5n
IGFyZSBPUFRJT05BTCwKQEAgLTE4NSw1NCArMTg1LDU0IEBAIE9wdGlvbmFsPFZQQ29kZWNDb25m
aWd1cmF0aW9uUmVjb3JkPiBwYXJzZVZQQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNW
aWV3CiAgICAgLy8gRm91cnRoIGVsZW1lbnQ6IGNocm9tYVN1YnNhbXBsaW5nLiBMZWdhbCB2YWx1
ZXMgYXJlIDAtMy4KICAgICBhdXRvIGNocm9tYVN1YnNhbXBsaW5nID0gcGFyc2VJbnRlZ2VyPHVp
bnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFjaHJvbWFTdWJzYW1wbGluZyB8fCAqY2hy
b21hU3Vic2FtcGxpbmcgPiBWUENvbmZpZ3VyYXRpb25DaHJvbWFTdWJzYW1wbGluZzo6U3Vic2Ft
cGxpbmdfNDQ0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24uY2hyb21hU3Vic2FtcGxpbmcgPSAqY2hy
b21hU3Vic2FtcGxpbmc7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gRmlmdGggZWxlbWVudDogY29sb3JQcmltYXJpZXMuIExlZ2FsIHZh
bHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRlZAogICAg
IC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1dG8gY29sb3JQcmltYXJpZXMgPSBw
YXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIWNvbG9yUHJpbWFy
aWVzIHx8ICFpc1ZhbGlkVlBDb2xvclByaW1hcmllcygqY29sb3JQcmltYXJpZXMpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNvbmZpZ3VyYXRpb24uY29sb3JQcmltYXJpZXMgPSAqY29sb3JQcmltYXJpZXM7CiAKICAgICBp
ZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2l4dGgg
ZWxlbWVudDogdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5l
ZCBieSBJU08vSUVDIDIzMDAxLTg6MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMg
MjMwOTEtMjoyMDE5LgogICAgIGF1dG8gdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgPSBwYXJzZUlu
dGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIXRyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzIHx8ICFpc1ZhbGlkVlBUcmFuc2ZlckNoYXJhY3RlcmlzdGljcygqdHJhbnNmZXJDaGFy
YWN0ZXJpc3RpY3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24udHJhbnNmZXJDaGFyYWN0ZXJpc3Rp
Y3MgPSAqdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3M7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9
PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2V2ZW50aCBlbGVtZW50OiBtYXRyaXhD
b2VmZmljaWVudHMuIExlZ2FsIHZhbHVlcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDAxLTg6
MjAxNiwgc3VwZXJzZWRlZAogICAgIC8vIGJ5IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgIGF1
dG8gbWF0cml4Q29lZmZpY2llbnRzID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVu
dCk7CiAgICAgaWYgKCFtYXRyaXhDb2VmZmljaWVudHMgfHwgIWlzVmFsaWRWUE1hdHJpeENvZWZm
aWNpZW50cygqbWF0cml4Q29lZmZpY2llbnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb25maWd1cmF0aW9uLm1hdHJp
eENvZWZmaWNpZW50cyA9ICptYXRyaXhDb2VmZmljaWVudHM7CiAKICAgICAvLyAiSWYgbWF0cml4
Q29lZmZpY2llbnRzIGlzIDAgKFJHQiksIHRoZW4gY2hyb21hIHN1YnNhbXBsaW5nIE1VU1QgYmUg
MyAoNDo0OjQpLiIKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzICYm
IGNvbmZpZ3VyYXRpb24uY2hyb21hU3Vic2FtcGxpbmcgIT0gMykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgrK25l
eHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBFaWdodGggZWxlbWVu
dDogdmlkZW9GdWxsUmFuZ2VGbGFnLiBMZWdhbCB2YWx1ZXMgYXJlIDAgYW5kIDEuCiAgICAgYXV0
byB2aWRlb0Z1bGxSYW5nZUZsYWcgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50
KTsKICAgICBpZiAoIXZpZGVvRnVsbFJhbmdlRmxhZyB8fCAqdmlkZW9GdWxsUmFuZ2VGbGFnID4g
MSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjb25maWd1cmF0aW9uLnZpZGVvRnVsbFJhbmdlRmxhZyA9ICp2aWRlb0Z1bGxS
YW5nZUZsYWc7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCAhPSBjb2RlY1NwbGl0LmVuZCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4IGExODhhNzQ0ZDQyNjY1ZWY4NDZj
NTIwNjUxMGUwMDRiNTI0Mzk5ZmUuLjhiOTc0ZTI4ZWI5MGY0YjA2OGUzZTRlNzRlMWQ2NDVjNzIy
OGEyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxp
dGllcy5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewog
ICAgICAgICBPcHRpb25hbDx0eXBlPiBuYW1lOyBcCiAgICAgICAgIGRlY29kZXIgPj4gbmFtZTsg
XAogICAgICAgICBpZiAoIW5hbWUpIFwKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
IFwKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKIAogICAgICAgICBERUNPREUo
d2lkdGgsIGRvdWJsZSk7CiAgICAgICAgIERFQ09ERShoZWlnaHQsIGRvdWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1BsYXliYWNrUXVhbGl0
eU1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJh
Y2tRdWFsaXR5TWV0cmljcy5oCmluZGV4IDU5MTI0ZjRmZmE0MGE1YTQ3ZjQ4ZDdlNWQ5ZjEwYmQx
ZmYyMjI1ZTAuLjBhN2Y2NzNjZTJjMTY0MjY3ZGMxMDBkNWUwMzI4NmNlNTYxZWUzY2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcy5oCkBAIC01MiwyNyArNTIsMjcgQEAgc3RydWN0IFZpZGVv
UGxheWJhY2tRdWFsaXR5TWV0cmljcyB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0b3Rh
bFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsVmlkZW9GcmFtZXM7CiAgICAg
ICAgIGlmICghdG90YWxWaWRlb0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PHVpbnQzMl90PiBkcm9wcGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGRlY29kZXIgPj4gZHJvcHBl
ZFZpZGVvRnJhbWVzOwogICAgICAgICBpZiAoIWRyb3BwZWRWaWRlb0ZyYW1lcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAg
ICAgICAgZGVjb2RlciA+PiBjb3JydXB0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCFjb3Jy
dXB0ZWRWaWRlb0ZyYW1lcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4g
dG90YWxGcmFtZURlbGF5OwogICAgICAgICBkZWNvZGVyID4+IHRvdGFsRnJhbWVEZWxheTsKICAg
ICAgICAgaWYgKCF0b3RhbEZyYW1lRGVsYXkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gZGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2Rl
ciA+PiBkaXNwbGF5Q29tcG9zaXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBpZiAoIWRpc3BsYXlD
b21wb3NpdGVkVmlkZW9GcmFtZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sgKnRv
dGFsVmlkZW9GcmFtZXMsICpkcm9wcGVkVmlkZW9GcmFtZXMsICpjb3JydXB0ZWRWaWRlb0ZyYW1l
cywgKnRvdGFsRnJhbWVEZWxheSwgKmRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMgfX07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcAppbmRleCBkYWM0ZTZmMDk2NWNmOTA5ZDg2MjRmYWFkMjE3NzQ4NDQyZDg3MjQ5Li4y
YzIzNmI2N2VjYTBjYjAwYzIzMTFkNjc3ODdlNjE0OGM1YmIzMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcApAQCAtMzkyLDcg
KzM5Miw3IEBAIHZvaWQgV2lkdGhJdGVyYXRvcjo6YXBwbHlBZGRpdGlvbmFsV2lkdGgoR2x5cGhC
dWZmZXImIGdseXBoQnVmZmVyLCBHbHlwaEluZGV4UmFuCiAKIHZvaWQgV2lkdGhJdGVyYXRvcjo6
YXBwbHlFeHRyYVNwYWNpbmdBZnRlclNoYXBpbmcoR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1
bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBnbHlwaEJ1ZmZlclN0YXJ0SW5k
ZXgsIHVuc2lnbmVkIGNoYXJhY3RlckRlc3RpbmF0aW9uSW5kZXgsIGZsb2F0IHN0YXJ0aW5nUnVu
V2lkdGgpCiB7Ci0gICAgVmVjdG9yPE9wdGlvbmFsPEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3Rl
ckluZGV4VG9HbHlwaEluZGV4UmFuZ2UobV9ydW4ubGVuZ3RoKCksIFdURjo6bnVsbG9wdCk7Cisg
ICAgVmVjdG9yPE9wdGlvbmFsPEdseXBoSW5kZXhSYW5nZT4+IGNoYXJhY3RlckluZGV4VG9HbHlw
aEluZGV4UmFuZ2UobV9ydW4ubGVuZ3RoKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPGZs
b2F0PiBhZHZhbmNlV2lkdGhzKG1fcnVuLmxlbmd0aCgpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBnbHlwaEJ1ZmZlclN0YXJ0SW5kZXg7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7ICsraSkg
ewogICAgICAgICBhdXRvIHN0cmluZ09mZnNldCA9IGdseXBoQnVmZmVyLmNoZWNrZWRTdHJpbmdP
ZmZzZXRBdChpLCBtX3J1bi5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IGNiMDRmN2U0M2Y5NWExYmI0ZDJkMWJmYmI2OWE1NGExYWZhZDlkYWIuLjZhNmQy
MmQ4MWZhOTIxOTljMTUxMjQyODlhNzhiYTc2YzA0YTg1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9y
bWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIFNjb3BlZFBpeGVsU3RvcmFnZU1vZGUgcGFja0FsaWdubWVudChHTF9QQUNLX0FM
SUdOTUVOVCk7CiAgICAgaWYgKHBhY2tBbGlnbm1lbnQgPiA0KQogICAgICAgICBwYWNrQWxpZ25t
ZW50LnBpeGVsU3RvcmUoNCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDFmNGFiOGEwYjU4YjlkOWM4YTZiZmIwNWI4MmY0MjY0
M2U1NmRmYTIuLjE1MzE2OTFmMzc4MWUxZmZlYzA4ZGZkNzQ3YzE3ZmU2MGJlNGFmNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Q
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBA
IC00OSw3ICs0OSw3IEBAIGF1dG8gQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFyc2VL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pIC0+IE9wCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiBrZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwu
ZnBzXFwuWzIzXV9cXGQrKD86LFxcZCspKiQiLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRp
dmUpOwogCiAgICAgaWYgKGtleVN5c3RlbVJFLmdldCgpLm1hdGNoKGtleVN5c3RlbSkgPCAwKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgU3RyaW5nVmlldyBrZXlTeXN0ZW1WaWV3IHsga2V5U3lzdGVtIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBlZmIx
NGY0ZjNkOGI4ZDNkMmM1MzJjZTZjYTQxZjM1MDliMDk0ZTRiLi5jOTc5ZWI1NzI3ZGJjMzk2MTcy
NWIwNTdjN2IxYTJhMmYzZmFjYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC02NywxMyArNjcsMTMgQEAgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6fkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYoKQogc3RhdGljIE9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJl
ZiBjb2xvckFycmF5KQogewogICAgIGlmIChDRkFycmF5R2V0Q291bnQoY29sb3JBcnJheSkgPCA0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZmxvYXQgY29tcG9uZW50QXJyYXlbNF07CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCA0OyBpKyspIHsKICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxD
Rk51bWJlclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjb2xvckFycmF5LCBpKSk7CiAgICAg
ICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGZsb2F0IGNvbXBvbmVudDsKICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1
ZSh2YWx1ZSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmY29tcG9uZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3Rh
bmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQy5oCmluZGV4IGY5YWIwMjYyZTM2ZDljOTFhNTAyYzZiNWZiNjk0OGZmMDVlOTNkNTIuLmIx
YWE1ZGZlNWFhOGQ0ODY3ZDc1MmI0ZjRhNWFjOGYzYzViN2NiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaApAQCAtMTkwLDcgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBlbnN1cmVTZXNz
aW9uT3JHcm91cCgpOwogICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlw
ZSkgY29uc3Q7CiAKLSAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMoT3B0aW9uYWw8UGxh
dGZvcm1EaXNwbGF5SUQ+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBLZXlTdGF0dXNWZWN0
b3Iga2V5U3RhdHVzZXMoT3B0aW9uYWw8UGxhdGZvcm1EaXNwbGF5SUQ+ID0gc3RkOjpudWxsb3B0
KSBjb25zdDsKICAgICB2b2lkIG5leHRSZXF1ZXN0KCk7CiAgICAgQVZDb250ZW50S2V5UmVxdWVz
dCogbGFzdEtleVJlcXVlc3QoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRl
eCA3NTY5ZTk4MWIwMmM0YWY5OGVjYmIyMTk2OTA1ZGE2YWVjZmIwZmU0Li44NzhmNzIyNTg4MTg4
Mzc3NzlmNGNmYjQ3MDk0YTc5ODE2YzgwZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpA
QCAtMzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBmYWlsKCkKICAgICB7
Ci0gICAgICAgIG1fY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jYWxsYmFjayhz
dGQ6Om51bGxvcHQpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmLCBMaQogCiAgICAgICAgIGlmICghY2VydGlmaWNhdGUgfHwgIXN0b3Jh
Z2VVUkwpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiXCJhY2tub3dsZWRnZWRcIiwgRmFpbGVkLCBubyBjZXJ0aWZpY2F0ZSBhbmQgc3RvcmFnZVVS
TCIpOwotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiwgTGkKICAgICAgICAgfSk7CiAgICAgICAgIGF1dG8gYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKICAgICAgICAgW1BBTDo6Z2V0QVZDb250ZW50
S2V5U2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0czpleHBp
cmVkU2Vzc2lvbnMuZ2V0KCkgd2l0aEFwcElkZW50aWZpZXI6YXBwSWRlbnRpZmllci5nZXQoKSBz
dG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTF07Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNl
LCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQpOworICAgICAgICBj
YWxsYmFjayhmYWxzZSwgeyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzgxLDcgKzc4MSw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYsIExpCiAgICAgICAgIGF1dG8gcmVxdWVzdCA9IGxhc3RLZXlSZXF1ZXN0KCk7
CiAgICAgICAgIGlmICghcmVxdWVzdCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJ
QkxFKExPR0lERU5USUZJRVIsICJcInJlbmV3XCIsIEZhaWxlZCwgbm8gb3V0c3RhbmRpbmcga2V5
cyIpOwotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIlwicmVuZXdcIiwgcHJvY2Vzc2luZyByZW5ld2FsIik7CkBAIC03OTMs
MTMgKzc5MywxMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogCiAgICAgaWYgKCFtX2N1cnJl
bnRSZXF1ZXN0KSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVS
LCAiIEZhaWxlZCwgbm8gY3VycmVudFJlcXVlc3QiKTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2Us
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEtleXMga2V5SURzID0g
a2V5SURzRm9yUmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkpOwogICAgIGlmIChrZXlJ
RHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiIEZhaWxlZCwgbm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgIGNh
bGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBG
YWlsZWQpOworICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
ODE4LDI2ICs4MTgsMjYgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKIAogICAgICAgICAgICAg
aWYgKCFyZXNwb25zZXMgfHwgcmVzcG9uc2VzLnZhbHVlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5p
dERhdGEsIEZhaWxlZCwgbm8gcmVzcG9uc2VzIik7Ci0gICAgICAgICAgICAgICAgbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2sodHJ1ZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0
cnVlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgREVC
VUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5pdERhdGEsIFN1Y2Nl
ZWRlZCwgbm8ga2V5SURzIGluIGN1cnJlbnRSZXF1ZXN0Iik7Ci0gICAgICAgICAgICBtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwga2V5U3RhdHVzZXMoKSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayhmYWxzZSwga2V5U3RhdHVzZXMoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCk7CiAgICAgICAgICAgICBtX3VwZGF0ZVJlc3BvbnNlQ29sbGVjdG9yID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgbmV4dFJlcXVl
c3QoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgYXV0byByb290ID0gcGFyc2VKU09OVmFsdWUo
cmVzcG9uc2VEYXRhKTsKICAgICAgICAgaWYgKCFyb290KSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVk
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgYXV0byBhcnJheSA9IHJvb3QtPmFzQXJyYXkoKTsKICAgICAgICAgaWYgKCFh
cnJheSkgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC04OTYsNyArODk2LDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgZm9yIChhdXRvIHZhbHVlIDogKmFycmF5KSB7CiAg
ICAgICAgICAgICBpZiAoIXBhcnNlUmVzcG9uc2UoV1RGTW92ZSh2YWx1ZSkpKSB7CiAgICAgICAg
ICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICInY2VuYycgaW5p
dERhdGEsIEZhaWxlZCwgY291bGQgbm90IHBhcnNlIHJlc3BvbnNlIik7Ci0gICAgICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIEZhaWxlZCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MTEsNyArOTExLDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgS2V5U3RhdHVzVmVjdG9yIGtleVN0YXR1c2Vz
OwogICAgICAgICBrZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwogICAgICAg
ICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZShrZXlJ
RHMuZmlyc3QoKSksIEtleVN0YXR1czo6VXNhYmxlKSk7Ci0gICAgICAgIGNhbGxiYWNrKGZhbHNl
LCBtYWtlT3B0aW9uYWwoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9v
cHRpb25hbChXVEZNb3ZlKGtleVN0YXR1c2VzKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MjUsMTMgKzkyNSwx
MyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6bG9h
ZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogICAgICAgICBhdXRvKiBzdG9yYWdlVVJMID0g
bV9pbnN0YW5jZS0+c3RvcmFnZVVSTCgpOwogICAgICAgICBpZiAoIW1faW5zdGFuY2UtPnBlcnNp
c3RlbnRTdGF0ZUFsbG93ZWQoKSB8fCAhc3RvcmFnZVVSTCkgewogICAgICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBtaXNtYXRjaGVkIHNlc3Np
b24gdHlwZSIpOwotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRT
ZXNzaW9uVHlwZSk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hl
ZFNlc3Npb25UeXBlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBh
dXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7CiAgICAg
ICAgIGlmICghY2VydGlmaWNhdGUpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gc2Vzc2lvbkNlcnRpZmljYXRlIik7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CisgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWls
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtOTUyLDEyICs5NTIsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIGxp
Y2Vuc2UKIAogICAgICAgICBpZiAoY2hhbmdlZEtleXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWlsZWQsIG5vIHNlc3Np
b24gZGF0YSBmb3VuZCIpOwotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vz
c2lvbkRhdGEpOworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRh
dGEpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgREVCVUdfTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgU3VjY2VlZGVkLCBtaXNtYXRjaGVkIHNlc3Np
b24gdHlwZSIpOwotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25l
KTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAg
fQogfQogCkBAIC05NjksMTQgKzk2OSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsbwogICAg
ICAgICBBU1NFUlQoIW1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogICAgIGlmICht
X3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykgewotICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
ayh0cnVlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQp
OworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVlLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fdXBk
YXRlTGljZW5zZUNhbGxiYWNrKTsKICAgICB9CiAgICAgaWYgKG1fcmVtb3ZlU2Vzc2lvbkRhdGFD
YWxsYmFjaykgewotICAgICAgICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2soeyB9LCBXVEY6
Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayh7
IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3JlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2spOwogICAgIH0KLSAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGOjpudWxs
b3B0OworICAgIG1fY3VycmVudFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wZW5kaW5n
UmVxdWVzdHMuY2xlYXIoKTsKICAgICBtX3JlcXVlc3RzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2so
KTsKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAg
IGlmICghbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgpIHx8ICFzdG9yYWdlVVJM
IHx8ICFjZXJ0aWZpY2F0ZSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExP
R0lERU5USUZJRVIsICIgRmFpbGVkLCBwZXJzaXN0ZW50U3RhdGUgbm90IGFsbG93ZWQgb3Igbm8g
c3RvcmFnZVVSTCBvciBubyBjZXJ0aWZpY2F0ZSIpOwotICAgICAgICAgICAgY2FsbGJhY2soeyB9
LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0sIHN0ZDo6
bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0x
MDE4LDcgKzEwMTgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogCiAgICAgICAgIGlmICgh
ZXhwaXJlZFNlc3Npb25zQXJyYXkuZ2V0KCkuY291bnQpIHsKICAgICAgICAgICAgIERFQlVHX0xP
R19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIFN1Y2NlZWRlZCwgbm8gZXhwaXJlZCBzZXNz
aW9ucyIpOwotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURjo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2hhbmdl
ZEtleXMpLCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMTAyOCw3ICsxMDI4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYK
ICAgICAgICAgICAgIC8vIGEgcGVyc2lzdGVudC11c2FnZS1yZWNvcmQgbWVzc2FnZSBvbiBjbG9z
ZS4gU2lnbmFsIHRoaXMgYnkgZmFpbGluZyBhbmQgYXNzZXJ0LgogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIiBGYWlsZWQsIG5vIGV4cGlyZWQgc2Vzc2lvbiBkYXRhIik7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOwor
ICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwg
RmFpbGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDQ0LDcgKzEw
NDQsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgY2FsbGJhY2so
eyB9LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3Ry
aW5nJikKQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSCiAgICAg
fSBAY2F0Y2goTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewogICAgICAgICBFUlJPUl9MT0dfSUZf
UE9TU0lCTEUoTE9HSURFTlRJRklFUiwgImV4Y2VwdGlvbiB0aHJvd24gZnJvbSAtbWFrZVN0cmVh
bWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDpjb250ZW50SWRlbnRpZmllcjpvcHRpb25z
OmNvbXBsZXRpb25IYW5kbGVyOiAiLCBbW2V4Y2VwdGlvbiBuYW1lXSBVVEY4U3RyaW5nXSwgIiwg
cmVhc29uIDogIiwgW1tleGNlcHRpb24gcmVhc29uXSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGlm
IChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykKLSAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBG
YWlsZWQpOworICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIEFT
U0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0KIH0KQEAgLTEyNTksOSArMTI1
OSw5IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29uCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgICAgIGlmIChlcnJvciAmJiBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFj
aykKLSAgICAgICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICBtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIE1l
c3NhZ2UoTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShj
b250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBNZXNzYWdlKE1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVy
OjpjcmVhdGUoY29udGVudEtleVJlcXVlc3REYXRhLmdldCgpKSksIFN1Y2NlZWRlZCk7CiAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5zZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwpAQCAtMTI3MCw3ICsxMjcwLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFBy
b3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb24KICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKSB7CiAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAi
ZXhjZXB0aW9uIHRocm93biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRh
Rm9yQXBwOmNvbnRlbnRJZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6ICIsIFtb
ZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2VwdGlvbiBy
ZWFzb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KQotICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjayk7CiAgICAgfQogfQpAQCAtMTMwMCwxMSArMTMwMCwxMSBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3Qo
QVZDb250ZQogICAgIH0KIAogICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykgewotICAg
ICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZh
aWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spOwogICAgIH0K
IAotICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50UmVx
dWVzdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIG5leHRSZXF1ZXN0KCk7CiB9CkBAIC0xMzE4LDEx
ICsxMzE4LDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSCiAgICAgfQogCiAgICAgaWYgKG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KGZhbHNlLCBtYWtlT3B0aW9uYWwoa2V5U3RhdHVzZXMoKSksIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0LCBTdWNjZWVkZWQpOworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxz
ZSwgc3RkOjptYWtlX29wdGlvbmFsKGtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjayk7CiAgICAgfQogCi0gICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgbmV4dFJlcXVlc3QoKTsK
IH0KQEAgLTE0ODQsNyArMTQ4NCw3IEBAIE9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpwcm90ZWN0aW9uU3RhCiAgICAgICAg
IC8vIHJlY2VpdmluZyBhIHJlc3BvbnNlLgogICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgIT0g
QVZDb250ZW50S2V5UmVxdWVzdFN0YXR1c1JlY2VpdmVkUmVzcG9uc2UgJiYgcmVxdWVzdC5zdGF0
dXMgIT0gQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1c1JlbmV3ZWQpIHsKICAgICAgICAgICAgIEFM
V0FZU19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgInJlcXVlc3QgaGFzIGluc3VmZmlj
aWVudCBzdGF0dXMgIiwgKGludClyZXF1ZXN0LnN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogCiAgICAgICAgIGF1dG8gb2JzY3VyZWQgPSBbcmVxdWVzdCB3aWxsT3V0cHV0QmVPYnNjdXJl
ZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uRm9yRGlzcGxheXM6QFsgXV07CkBA
IC0xNDk3LDcgKzE0OTcsNyBAQCBPcHRpb25hbDxDRE1LZXlTdGF0dXM+IENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvdGVjdGlvblN0YQogICAgIGlmIChtX291
dHB1dE9ic2N1cmVkKQogICAgICAgICByZXR1cm4gQ0RNS2V5U3RhdHVzOjpPdXRwdXRSZXN0cmlj
dGVkOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgK
aW5kZXggNTliYzY1ZDQyMTIzMGYxMGNkNzczNTU4YmVhZTk4M2FiYzAzOTQxYS4uNTgzNjJkYmQy
Y2MwN2QwMWRkZWE2ZTg5MzJkZDQ4ZjcxOGYyOGE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
UmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmlu
ZyB1dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25z
dCBmaW5hbDsKLSAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgU3RyaW5nIGFjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAg
ICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vi
c2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQppbmRleCA1MmY5MThmMWVhYmJiMDczZWI0OTI4
NWExZjI2YjYyZGVjMTg3NTdlLi5iNDEyZDVkYmRjNTVlNjgyZTNmMDJjZTk1OTdjZDA4MzNkYjRl
NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0K
QEAgLTI1Nyw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChQQUw6OkNNU2FtcGxlQnVm
ZmVyR2V0RGF0YUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8IFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihtX3NhbXBsZS5nZXQoKSkKICAgICAgICAgICAgIHx8
ICFQQUw6OkNNU2FtcGxlQnVmZmVyRGF0YUlzUmVhZHkobV9zYW1wbGUuZ2V0KCkpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIGJ5dGVSYW5nZUZvckF0dGFjaG1lbnQoUEFMOjprQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X1NhbXBsZVJlZmVyZW5jZUJ5dGVPZmZzZXQpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDQ2NTVmZTVhMDg0YzM4OTExNjlmMGJlZjI3YzMz
ZmZjZTE2ZWQyNDAuLmE2ZmY2YzRlNDg4ODliOTkwNzY0NmI0OTM5MmZlNGMyZjJjODBlNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTUzNSw3ICsxNTM1LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRSYXRlRG91YmxlKGRvdWJsZSByYXRlKQog
ICAgIG1fcmVxdWVzdGVkUmF0ZSA9IHJhdGU7CiAgICAgaWYgKG1fcmVxdWVzdGVkUGxheWluZykK
ICAgICAgICAgc2V0UGxheWVyUmF0ZShyYXRlKTsKLSAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3Vy
cmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRU
aW1lID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNldFBsYXllclJhdGUoZG91YmxlIHJhdGUpCkBAIC0xNTUwLDcgKzE1NTAsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFBsYXllclJhdGUo
ZG91YmxlIHJhdGUpCiAgICAgc2V0U2hvdWxkT2JzZXJ2ZVRpbWVDb250cm9sU3RhdHVzKHRydWUp
OwogICAgIHNldERlbGF5Q2FsbGJhY2tzKGZhbHNlKTsKIAotICAgIG1fd2FsbENsb2NrQXRDYWNo
ZWRDdXJyZW50VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3Vy
cmVudFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyYXRlKCkgY29uc3QKQEAgLTIzNzAsNyArMjM3MCw3IEBAIE9wdGlv
bmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndvdWxkVGFpbnRP
cmlnaW4oY29uc3QgU2VjdXJpCiAgICAgaWYgKFtzZXNzaW9uIGlzS2luZE9mQ2xhc3M6W1dlYkNv
cmVOU1VSTFNlc3Npb24gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtzZXNzaW9uIHdvdWxkVGFp
bnRPcmlnaW46b3JpZ2luXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjcmVhdGVWaWRlb091dHB1dCgpCkBAIC0zMzgxLDcgKzMzODEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRpbWVDb250cm9sU3RhdHVzRGlkQ2hhbmdl
KGludCB0aW1lQ29udAogCiAgICAgbV9jYWNoZWRUaW1lQ29udHJvbFN0YXR1cyA9IHRpbWVDb250
cm9sU3RhdHVzOwogICAgIHJhdGVDaGFuZ2VkKCk7Ci0gICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1
cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50
VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgaWYgKCFpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKCkpCkBAIC0zNDI4
LDE2ICszNDI4LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c2V0U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZmxhZykKIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tR
dWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9Q
bGF5YmFja1F1YWxpdHlNZXRyaWNzKCkKIHsKICAgICBpZiAoIVttX3ZpZGVvTGF5ZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih2aWRlb1BlcmZvcm1hbmNlTWV0cmljcyldKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAj
aWYgUExBVEZPUk0oV0FUQ0hPUykKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZWxzZQogICAgIEFMTE9XX05FV19BUElfV0lUSE9VVF9HVUFSRFNf
QkVHSU4KIAogICAgIGF1dG8gbWV0cmljcyA9IFttX3ZpZGVvTGF5ZXIgdmlkZW9QZXJmb3JtYW5j
ZU1ldHJpY3NdOwogICAgIGlmICghbWV0cmljcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQzMl90IGRpc3BsYXlD
b21wb3NpdGVkRnJhbWVzID0gMDsKICAgICBpZiAoW21ldHJpY3MgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihudW1iZXJPZkRpc3BsYXlDb21wb3NpdGVkVmlkZW9GcmFtZXMpXSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA1YjU5MmViMThiM2U0OWQ2YTUwMzBlZTQ4MTI5NTAw
ZWY1ZDVhYzg0Li43ZGE1ZDM4ZDkyZmM3OGZhYzBlNWI5YWViN2M4MmYwZWFkNDI1MWNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC03MzgsNyArNzM4LDcgQEAgT3B0aW9uYWw8Vmlk
ZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnZpZGUKIAogICAgIGF1dG8gbWV0cmljcyA9IFttX3NhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllciB2aWRlb1BlcmZvcm1hbmNlTWV0cmljc107CiAgICAgaWYgKCFtZXRyaWNzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgdWludDMyX3QgZGlzcGxheUNvbXBvc2l0ZWRGcmFtZXMgPSAwOwogICAgIEFMTE9XX05FV19B
UElfV0lUSE9VVF9HVUFSRFNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAx
NzMwNTJhNzNiNTE2MDA2N2U3OTU3ZDEzODA4YWY1MmQ2N2VmNGYzLi5lMWFkMTAyYmI5ODFiZjM3
NGU2YmQ5MzdjMGM2ZTJhODdmNDBmMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBA
IC05ODYsNyArOTg2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1fdmlk
ZW9UcmFuc2Zvcm0pCiAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIHZpZGVvVHJhbnNmb3JtID0gKm1fdmlkZW9UcmFuc2Zvcm07Ci0gICAgRmxvYXRSZWN0IHRy
YW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUmVjdChkZXN0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVv
VHJhbnNmb3JtKTsKICAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVj
dC5zaXplKCksIHRyYW5zZm9ybWVkRGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNhbXBsZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNhbXBsZUFWRk9iakMubW0KaW5kZXggNWFjZTYzMDhmOWRjNTQ1
NWEyOTY0ZmM4MjVlMWQ5NGUxNTMzZmY0NC4uN2Q2ZDUwYTVjZmVhYzVlYTc5ZDcwODUzYzA2YjBk
MmFkZDQ4OTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2Jq
Qy5tbQpAQCAtNDgwLDE2ICs0ODAsMTYgQEAgT3B0aW9uYWw8TWVkaWFTYW1wbGU6OkJ5dGVSYW5n
ZT4gTWVkaWFTYW1wbGVBVkZPYmpDOjpieXRlUmFuZ2VGb3JBdHRhY2htZW50KENGU3QKIHsKICAg
ICBhdXRvIGJ5dGVPZmZzZXRDRiA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oUEFMOjpD
TUdldEF0dGFjaG1lbnQobV9zYW1wbGUuZ2V0KCksIGtleSwgbnVsbHB0cikpOwogICAgIGlmICgh
Ynl0ZU9mZnNldENGKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50NjRfdCBieXRlT2Zmc2V0ID0gMDsKICAgICBpZiAo
IUNGTnVtYmVyR2V0VmFsdWUoYnl0ZU9mZnNldENGLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmYnl0
ZU9mZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBDTUl0ZW1Db3VudCBzaXplQXJyYXlFbnRyaWVzID0gMDsKICAg
ICBQQUw6OkNNU2FtcGxlQnVmZmVyR2V0U2FtcGxlU2l6ZUFycmF5KG1fc2FtcGxlLmdldCgpLCAw
LCBudWxscHRyLCAmc2l6ZUFycmF5RW50cmllcyk7CiAgICAgaWYgKHNpemVBcnJheUVudHJpZXMg
IT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHNpemVfdCBzaW5nbGVTaXplRW50cnkgPSAwOwogICAgIFBBTDo6Q01T
YW1wbGVCdWZmZXJHZXRTYW1wbGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDEsICZzaW5nbGVT
aXplRW50cnksIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCBkMzE3M2ZlYmQ2NThlODMxZTFiMTBhZjcw
MDBjNzBiMThjNjY1YWQ0Li5jMWY4NTE0YmE1MDk2ZWJiODM1YjAxNjY1MDJlZTM3Y2MyZDhkMzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQpAQCAtNzcyLDcgKzc3Miw3IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdAogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFj
aywgYm9vbCBzZWxlY3RlZCkKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2suaWQoKSkudmFsdWVPcigwKTsKKyAgICBh
dXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4o
dHJhY2suaWQoKSkudmFsdWVfb3IoMCk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJ2aWRlbyB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBzZWxlY3RlZCk7
CiAKQEAgLTc5OCw3ICs3OTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0
cmFja0RpZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjawogCiB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFj
a1ByaXZhdGUmIHRyYWNrLCBib29sIGVuYWJsZWQpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrLmlkKCkpLnZhbHVl
T3IoMCk7CisgICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8dWludDY0X3Q+KHRyYWNrLmlkKCkpLnZhbHVlX29yKDApOwogCiAgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAiYXVkaW8gdHJhY2tJRCA9ICIsIHRyYWNrSUQsICIsIHNlbGVjdGVkID0g
IiwgZW5hYmxlZCk7CiAKQEAgLTEwNDgsNyArMTA0OCw3IEBAIEFMTE9XX05FV19BUElfV0lUSE9V
VF9HVUFSRFNfRU5ECiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmZsdXNoKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZh
bHVlT3IoMCk7CisgICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwogICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCB0cmFja0lEKTsKIAogICAgIGlmICh0cmFja0lEID09IG1fZW5hYmxl
ZFZpZGVvVHJhY2tJRCkgewpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6Zmx1c2hWaWRlbygpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIG1f
Y2FjaGVkU2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZFNpemUgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoYXV0byBwbGF5ZXIgPSB0aGlzLT5wbGF5ZXIoKSkgewogICAgICAgICBw
bGF5ZXItPnNldEhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoZmFsc2UpOwpAQCAtMTA5MCw3ICsxMDkw
LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxl
LCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewotICAgIGF1dG8gdHJhY2tJRCA9
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5n
KS52YWx1ZU9yKDApOworICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAo
dHJhY2tJRCAhPSBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgJiYgIW1fYXVkaW9SZW5kZXJlcnMuY29u
dGFpbnModHJhY2tJRCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTIwMyw3ICsxMjAzLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YnVmZmVyV2FzQ29uc3VtZWQoKQogCiBi
b29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29u
c3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFs
dWVPcigwKTsKKyAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgaWYgKHRyYWNr
SUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgaWYgKG1fZGlzcGxheUxheWVyV2FzSW50ZXJydXB0ZWQpCkBAIC0xMjUxLDcgKzEy
NTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsU2VlaygpCiAKIEZs
b2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAg
IHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVPcihGbG9hdFNpemUoKSk7CisgICAgcmV0dXJuIG1f
Y2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJh
Y2tJRCkKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKIAogdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9y
ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRy
YWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJ
RFN0cmluZykudmFsdWVPcigwKTsKKyAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAg
ICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CiAgICAgICAgIGlmICht
X2RlY29tcHJlc3Npb25TZXNzaW9uKSB7CiAgICAgICAgICAgICBtX2RlY29tcHJlc3Npb25TZXNz
aW9uLT5yZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5KFt0aGlzLCB0cmFja0lEXSB7CkBAIC0xMjk3
LDcgKzEyOTcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpub3RpZnlDbGll
bnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tUwogCiBib29sIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSURTdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1
ZU9yKDApID09IG1fZW5hYmxlZFZpZGVvVHJhY2tJRAorICAgIHJldHVybiBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVfb3IoMCkg
PT0gbV9lbmFibGVkVmlkZW9UcmFja0lECiAgICAgICAgICYmIFtnZXRBVlNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllckNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGV4
cGVjdE1pbmltdW1VcGNvbWluZ1NhbXBsZUJ1ZmZlclByZXNlbnRhdGlvblRpbWU6KV07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCmluZGV4IDFmNGNkNDQ1NDNmMGU5MzgyYjUwZDEwYTk3YTBjMTlhMGQwOGFj
NWYuLjExYWM3OTQxYmE3YmUzOGUzYjg3ODUxZTc1ZjQzZGNjZjJiMWE3M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmNwcApAQCAtMTU3Nyw3ICsxNTc3LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldFZpc2li
bGVBbmRDb3ZlcmFnZVJlY3RzKGNvbnN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzJgogICAgIGlm
IChhdXRvIGV4dGVudCA9IGFuaW1hdGlvbkV4dGVudCgpKSB7CiAgICAgICAgIC8vIEFkanVzdCB0
aGUgYW5pbWF0aW9uIGV4dGVudCB0byBtYXRjaCB0aGUgY3VycmVudCBhbmltYXRpb24gcG9zaXRp
b24uCiAgICAgICAgIGF1dG8gYW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50ID0gdHJh
bnNmb3JtQnlBcHBseWluZ0FuY2hvclBvaW50KHJlY3RzLmFuaW1hdGluZ1RyYW5zZm9ybSk7Ci0g
ICAgICAgIGJvdW5kcyA9IGFuaW1hdGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNl
KCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5tYXBSZWN0KCpleHRlbnQpOworICAg
ICAgICBib3VuZHMgPSBhbmltYXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQuaW52ZXJzZSgp
LnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLm1hcFJlY3QoKmV4dGVudCk7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0aW9ucyBpbnRvIGFjY291
bnQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50ZXJzZWN0cyB0aGUgY292
ZXJhZ2UgcmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZmY4ZGRjNTM1YjZjMDQ0NDhmNmQ5OTQyMGUwMDg4
YTNjMjVlMWI0NC4uZTVjZDgyMmMwZGVjMmFiZmUzOTM0YmNkOTUzZmJkYWNkOTMwMTNmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXll
ckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgKQEAgLTQ4MCw3ICs0ODAsNyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobV9iZWdpblRpbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2JlZ2luVGlt
ZSAtIG1fdGltZU9mZnNldDsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IG1fYW5pbWF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5
ZXJDb2NvYS5tbQppbmRleCA5ZGM4YTdmOGZiMTMzNjNhN2RmMjhiZjk0YjNjNzkyNGEyZjRhYzM3
Li5mZDJjYTIyN2Q4ZmRlNDEwZmQxNzg3ZWRjMzJjYTI4NDczMWMwNjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9Q
bGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMTE5Niw5ICsxMTk2LDkgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBXZWJDb3IKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
YXZlcihncmFwaGljc0NvbnRleHQpOwotICAgICAgICBXVEY6Ok9wdGlvbmFsPExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dD4gcGxhdGZvcm1Db250ZXh0U2F2ZXI7CisgICAgICAgIHN0ZDo6b3B0
aW9uYWw8TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0PiBwbGF0Zm9ybUNvbnRleHRTYXZlcjsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBXVEY6Ok9wdGlvbmFsPEZvbnRBbnRp
YWxpYXNpbmdTdGF0ZVNhdmVyPiBmb250QW50aWFsaWFzaW5nU3RhdGU7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXI+IGZvbnRBbnRpYWxpYXNpbmdTdGF0
ZTsKICNlbmRpZgogCiAgICAgICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3NpdGluZ0Nvb3JkaW5h
dGVzT3JpZW50YXRpb246OkJvdHRvbVVwIG9uIE1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCmluZGV4IDJhMTllNDdhOWFh
Y2VjMjA5NmE2MGU5N2UzYjVjNDg3NDUzZGFhZjMuLjYzZWFiY2I0MDgwZmY5Y2E4YmFiYWYxYzhm
MWU3ZTVlNmEzNjdhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcApAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgUGF0aDo6
YWRkQmV6aWVyQ3VydmVUb1Nsb3dDYXNlKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludDEs
IGNvbnN0IEZsb2F0CiAKIHZvaWQgUGF0aDo6YWRkQXJjU2xvd0Nhc2UoY29uc3QgRmxvYXRQb2lu
dCYgcCwgZmxvYXQgciwgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50
aWNsb2Nrd2lzZSkKIHsKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxl
bWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1cmVDYWlyb1BhdGgo
KTsKICAgICBmbG9hdCBzd2VlcCA9IGVuZEFuZ2xlIC0gc3RhcnRBbmdsZTsKICAgICBjb25zdCBm
bG9hdCB0d29QSSA9IDIgKiBwaUZsb2F0OwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUGF0aDo6
YWRkQXJjVG8oY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9h
dCByYWRpdXMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2VsZW1lbnRzID0gV1RG
OjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZmxvYXQgdGFu
Z2VudCA9IHJhZGl1cyAvIHRhbihhY29zKGNvc19waGkpIC8gMik7CiAgICAgZmxvYXQgZmFjdG9y
X3AxcDAgPSB0YW5nZW50IC8gcDFwMF9sZW5ndGg7CiAgICAgRmxvYXRQb2ludCB0X3AxcDAoKHAx
LngoKSArIGZhY3Rvcl9wMXAwICogcDFwMC54KCkpLCAocDEueSgpICsgZmFjdG9yX3AxcDAgKiBw
MXAwLnkoKSkpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgUGF0aDo6YWRkQXJjVG8oY29uc3Qg
RmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBmbG9hdCByYWRpdXMpCiAKIHZv
aWQgUGF0aDo6YWRkRWxsaXBzZShGbG9hdFBvaW50IHBvaW50LCBmbG9hdCByYWRpdXNYLCBmbG9h
dCByYWRpdXNZLCBmbG9hdCByb3RhdGlvbiwgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5n
bGUsIGJvb2wgYW50aWNsb2Nrd2lzZSkKIHsKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0
OworICAgIG1fZWxlbWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgY2Fpcm9fdCogY3IgPSBlbnN1
cmVDYWlyb1BhdGgoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBjYWlyb190cmFuc2xhdGUo
Y3IsIHBvaW50LngoKSwgcG9pbnQueSgpKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFBhdGg6
OmFkZEVsbGlwc2UoRmxvYXRQb2ludCBwb2ludCwgZmxvYXQgcmFkaXVzWCwgZmxvYXQgcmFkaXVz
WSwgZmxvYXQgcm90YQogCiB2b2lkIFBhdGg6OmFkZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewotICAgIG1fZWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9
IHN0ZDo6bnVsbG9wdDsKICAgICBjYWlyb190KiBjciA9IGVuc3VyZUNhaXJvUGF0aCgpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogICAgIGZsb2F0IHlSYWRpdXMgPSAuNSAqIHJlY3QuaGVpZ2h0KCk7
CkBAIC0zODcsNyArMzg3LDcgQEAgdm9pZCBQYXRoOjphZGRQYXRoKGNvbnN0IFBhdGgmIHBhdGgs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChjYWlyb19tYXRyaXhf
aW52ZXJ0KCZtYXRyaXgpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2VsZW1lbnRzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBjYWlyb190KiBjciA9IHBhdGguY2Fpcm9QYXRoKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCmluZGV4IGUzYTAxM2QxZGMyMWYxMzZiODlhOTZjZjA3MDE2ODA3YTYyYjNlMmIu
LjUxZTBhOGMwZTY0YzMxNGFlYTZmMjVkZTRhMjkxNGM5ZDE1MTc5YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcm91bmRBbmRDbGFtcFRvU1JHQkFM
b3NzeShDR0NvbG9yUmVmIGNvbG9yKQogICAgIC8vIEZJWE1FOiBFeHRlbmRlZENvbG9yIC0gbmVl
ZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KIAogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBz
aXplX3QgbnVtQ29tcG9uZW50cyA9IENHQ29sb3JHZXROdW1iZXJPZkNvbXBvbmVudHMoY29sb3Ip
OwogICAgIGNvbnN0IENHRmxvYXQqIGNvbXBvbmVudHMgPSBDR0NvbG9yR2V0Q29tcG9uZW50cyhj
b2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5jcHAKaW5kZXggZTA0NTEwYzBmZjUxNTc3YmUwMTFkODY3NDM0NjQyNDM1
YzcwM2Q2Ny4uNjVjN2E4MmQ0NGRlOGUwNDViN2JkODBkZmYzMGQwYjFjZDlkYzRjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnRTaXplPiBkZW5z
aXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBpbWFnCiAgICAg
YXV0byB0aWZmRGljdGlvbmFyeSA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoaW1hZ2VQcm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5VElGRkRpY3Rpb25hcnkpOwogCiAg
ICAgaWYgKCFleGlmRGljdGlvbmFyeSB8fCAhdGlmZkRpY3Rpb25hcnkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IHdpZHRoUHJvcGVydHkgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2VQ
cm9wZXJ0aWVzLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRQ
cm9wZXJ0eSA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRp
ZXMsIGtDR0ltYWdlUHJvcGVydHlQaXhlbEhlaWdodCk7CkBAIC0yMDcsNyArMjA3LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMo
Q0ZEaWN0aW9uYXJ5UmVmIGltYWcKICAgICBhdXRvIHJlc29sdXRpb25Vbml0UHJvcGVydHkgPSAo
Q0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodGlmZkRpY3Rpb25hcnksIGtDR0ltYWdl
UHJvcGVydHlUSUZGUmVzb2x1dGlvblVuaXQpOwogCiAgICAgaWYgKCFwcmVmZXJyZWRXaWR0aFBy
b3BlcnR5IHx8ICFwcmVmZXJyZWRIZWlnaHRQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvblhQcm9wZXJ0
eSB8fCAhcmVzb2x1dGlvbllQcm9wZXJ0eSB8fCAhcmVzb2x1dGlvblVuaXRQcm9wZXJ0eSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGludCByZXNvbHV0aW9uVW5pdDsKICAgICBmbG9hdCBzb3VyY2VXaWR0aCwgc291cmNl
SGVpZ2h0LCBwcmVmZXJyZWRXaWR0aCwgcHJlZmVycmVkSGVpZ2h0LCByZXNvbHV0aW9uV2lkdGgs
IHJlc29sdXRpb25IZWlnaHQ7CkBAIC0yMTgsNyArMjE4LDcgQEAgc3RhdGljIE9wdGlvbmFsPElu
dFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJvbVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGltYWcKICAgICAgICAgfHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlvblhQcm9wZXJ0eSwg
a0NGTnVtYmVyRmxvYXQzMlR5cGUsICZyZXNvbHV0aW9uV2lkdGgpCiAgICAgICAgIHx8ICFDRk51
bWJlckdldFZhbHVlKHJlc29sdXRpb25ZUHJvcGVydHksIGtDRk51bWJlckZsb2F0MzJUeXBlLCAm
cmVzb2x1dGlvbkhlaWdodCkKICAgICAgICAgfHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1dGlv
blVuaXRQcm9wZXJ0eSwga0NGTnVtYmVySW50VHlwZSwgJnJlc29sdXRpb25Vbml0KSkgewotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIHJldHVybiBJbWFnZVJlc29sdXRpb246OmRlbnNpdHlDb3JyZWN0ZWRTaXpl
KEZsb2F0U2l6ZShzb3VyY2VXaWR0aCwgc291cmNlSGVpZ2h0KSwgewpAQCAtMzkxLDE5ICszOTEs
MTkgQEAgT3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2RlckNHOjpob3RTcG90KCkgY29uc3QK
IHsKICAgICBhdXRvIHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVy
dGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMo
KS5nZXQoKSkpOwogICAgIGlmICghcHJvcGVydGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpbnQgeCA9IC0x
LCB5ID0gLTE7CiAgICAgQ0ZOdW1iZXJSZWYgbnVtID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKHByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJob3RzcG90WCIpKTsKICAgICBpZiAo
IW51bSB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShudW0sIGtDRk51bWJlckludFR5cGUsICZ4KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVy
dGllcy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RZIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJl
ckdldFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJnkpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICh4
IDwgMCB8fCB5IDwgMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gSW50UG9pbnQoeCwgeSk7CiB9CkBA
IC00NDgsMTEgKzQ0OCwxMSBAQCBJbWFnZURlY29kZXI6OkZyYW1lTWV0YWRhdGEgSW1hZ2VEZWNv
ZGVyQ0c6OmZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCBpbmRleCkgYwogICAgIAogICAgIGF1
dG8gb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0
KCkpOwogICAgIGlmICghbWF5SGF2ZURlbnNpdHlDb3JyZWN0ZWRTaXplKHByb3BlcnRpZXMuZ2V0
KCkpKQotICAgICAgICByZXR1cm4geyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAg
ICAgIHJldHVybiB7IG9yaWVudGF0aW9uLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGF1dG8gcHJv
cGVydGllc1dpdGhNZXRhZGF0YSA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVz
QXRJbmRleChtX25hdGl2ZURlY29kZXIuZ2V0KCksIGluZGV4LCBjcmVhdGVJbWFnZVNvdXJjZU1l
dGFkYXRhT3B0aW9ucygpLmdldCgpKSk7CiAgICAgaWYgKCFwcm9wZXJ0aWVzV2l0aE1ldGFkYXRh
KQotICAgICAgICByZXR1cm4geyBvcmllbnRhdGlvbiwgV1RGOjpudWxsb3B0IH07CisgICAgICAg
IHJldHVybiB7IG9yaWVudGF0aW9uLCBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICByZXR1cm4g
eyBvcmllbnRhdGlvbiwgZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhwcm9wZXJ0
aWVzV2l0aE1ldGFkYXRhLmdldCgpKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5j
cHAKaW5kZXggZmQyNjg4YTVkZDNkOTY5ZjQzMGRjM2Y4ZTAyODY1NDgyZjUzMWY2Zi4uYTk3NzE2
M2EwOTMwM2RjMWE1N2ZlYTBiMGQ0YTM4OGIzMjMyMDk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9BdWRpb1RyYWNrUHJp
dmF0ZVdlYk0uY3BwCkBAIC01NSwxNCArNTUsMTQgQEAgT3B0aW9uYWw8dWludDY0X3Q+IEF1ZGlv
VHJhY2tQcml2YXRlV2ViTTo6dHJhY2tVSUQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLnRy
YWNrX3VpZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX3VpZC52
YWx1ZSgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogT3B0aW9uYWw8Ym9vbD4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkp
CiAgICAgICAgIHJldHVybiBtX3RyYWNrLmlzX2VuYWJsZWQudmFsdWUoKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEF0b21TdHJpbmcg
QXVkaW9UcmFja1ByaXZhdGVXZWJNOjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAKaW5kZXggNDc1MmZhYzI1MDAzODRjODk0ZGE3ZDdlNjM5NjhjZDcxYjNiZmNiMC4uODkxZGQ1
MzQzZTY5ZWVjZGRkZTA1MDFiZjY0ZTUzMzhiNDY2NTcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcApAQCAtNTA4LDcgKzUwOCw3IEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHByZXBhcmVQbGF0
Zm9ybUZvbnQoQ1RGb250UmVmIG9yaWdpbmFsRm9udCwgY29uc3QgRm9udERlc2NyCiAgICAgaWYg
KGFwcGx5V2VpZ2h0V2lkdGhTbG9wZVZhcmlhdGlvbnMgJiYgIWZvbnRJc1N5c3RlbUZvbnQob3Jp
Z2luYWxGb250KSkgewogICAgICAgICBmbG9hdCB3ZWlnaHQgPSBmb250U2VsZWN0aW9uUmVxdWVz
dC53ZWlnaHQ7CiAgICAgICAgIGZsb2F0IHdpZHRoID0gZm9udFNlbGVjdGlvblJlcXVlc3Qud2lk
dGg7Ci0gICAgICAgIGZsb2F0IHNsb3BlID0gZm9udFNlbGVjdGlvblJlcXVlc3Quc2xvcGUudmFs
dWVPcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKKyAgICAgICAgZmxvYXQgc2xvcGUgPSBmb250U2Vs
ZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICAg
ICAgaWYgKGF1dG8gd2VpZ2h0VmFsdWUgPSBmb250RmFjZUNhcGFiaWxpdGllcy53ZWlnaHQpCiAg
ICAgICAgICAgICB3ZWlnaHQgPSBzdGQ6Om1heChzdGQ6Om1pbih3ZWlnaHQsIHN0YXRpY19jYXN0
PGZsb2F0Pih3ZWlnaHRWYWx1ZS0+bWF4aW11bSkpLCBzdGF0aWNfY2FzdDxmbG9hdD4od2VpZ2h0
VmFsdWUtPm1pbmltdW0pKTsKICAgICAgICAgaWYgKGF1dG8gd2lkdGhWYWx1ZSA9IGZvbnRGYWNl
Q2FwYWJpbGl0aWVzLndpZHRoKQpAQCAtOTM5LDcgKzkzOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxN
aW5NYXg+IGV4dHJhY3RWYXJpYXRpb25Cb3VuZHMoQ0ZEaWN0aW9uYXJ5UmVmIGF4aXMpCiAgICAg
Q0ZOdW1iZXJHZXRWYWx1ZShtYXhpbXVtVmFsdWUsIGtDRk51bWJlckZsb2F0VHlwZSwgJnJhd01h
eGltdW1WYWx1ZSk7CiAgICAgaWYgKHJhd01pbmltdW1WYWx1ZSA8IHJhd01heGltdW1WYWx1ZSkK
ICAgICAgICAgcmV0dXJuIHt7IHJhd01pbmltdW1WYWx1ZSwgcmF3TWF4aW11bVZhbHVlIH19Owot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
c3RhdGljIFZhcmlhdGlvbkNhcGFiaWxpdGllcyB2YXJpYXRpb25DYXBhYmlsaXRpZXNGb3JGb250
RGVzY3JpcHRvcihDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yKQpAQCAtMTQ2Miw3
ICsxNDYyLDcgQEAgT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0
ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmIGZhbWkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIGFkZEF0dHJpYnV0ZXNGb3JJbnN0YWxsZWRGb250cyhDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIGF0dHJpYnV0ZXMsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvRm9udERlc2NyaXB0aW9uQ29jb2EuY3BwCmluZGV4IDBkN2Q5NDVhMmJj
MTU0NjIzYjM5NjRkNzhkMGZhNzY5M2ZlZjAzYTMuLmYwMTZhNTI1YWZkZDY5OWE1MTNjM2UwYTlk
M2RiNmQzZDFhNGZlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRpb25Db2NvYS5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxTeXN0ZW1Gb250S2luZD4gbWF0Y2hTeXN0
ZW1Gb250VXNlKGNvbnN0IEF0b21TdHJpbmcmIHN0cmkKICAgICBpZiAoc3RkOjpiaW5hcnlfc2Vh
cmNoKHN0cmluZ3MuZ2V0KCkuYmVnaW4oKSwgc3RyaW5ncy5nZXQoKS5lbmQoKSwgc3RyaW5nLCBj
b21wYXJlQXNQb2ludGVyKSkKICAgICAgICAgcmV0dXJuIFN5c3RlbUZvbnRLaW5kOjpUZXh0U3R5
bGU7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVm
Pj4gc3lzdGVtRm9udENhc2NhZGVMaXN0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIGNvbnN0IEF0b21TdHJpbmcmIGNzc0ZhbWlseSwgU3lzdGVtRm9udEtpbmQgc3lzdGVtRm9u
dEtpbmQsIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIGFsbG93VXNlckluc3RhbGxlZEZvbnRzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KaW5kZXggZjJhMTU5ZjFk
ZjIyZjFlM2JmOTQwMTNiNTUwNTI2YWZlYTJiZTAwMy4uZTRlOWE1ODIzNjI0ODVjZjliZDY4ODZk
OTZjNDJjMjMyN2NjZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tCkBAIC02NjUsOSArNjY1LDkgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogewogICAgIGF1dG8mIGRp
c3BsYXlCdWZmZXIgPSBtX3N3YXBDaGFpbi0+ZGlzcGxheUJ1ZmZlcigpOwogICAgIGlmICghZGlz
cGxheUJ1ZmZlci5zdXJmYWNlIHx8ICFkaXNwbGF5QnVmZmVyLmhhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
ZGlzcGxheUJ1ZmZlci5zdXJmYWNlLT5zaXplKCkgIT0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAvLyBOb3RlOiBXZSBhcmUgdXNpbmcgR0wgdG8gcmVhZCB0aGUgSU9TdXJm
YWNlLiBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGVyZSBhcmUgbm8gY29udmluaWVudAogICAg
IC8vIGZ1bmN0aW9ucyB0byBjb252ZXJ0IHRoZSBJT1N1cmZhY2UgcGl4ZWwgZGF0YSB0byBJbWFn
ZURhdGEuIFRoZSBpbWFnZSBkYXRhIGVuZHMgdXAgYmVpbmcKICAgICAvLyBkcmF3biB0byBhIElt
YWdlQnVmZmVyLCBidXQgYXQgdGhlIHRpbWUgdGhlcmUncyBubyBmdW5jdGlvbnMgdG8gY29uc3Ry
dWN0IGEgTmF0aXZlSW1hZ2UKQEAgLTY3OCw3ICs2NzgsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAg
U2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0UXVlcnkoKSwgdGV4dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhU
VVJFX1JFQ1RBTkdMRV9BUkIpOwogICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0
ZXh0dXJlKTsKICAgICBpZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBkaXNwbGF5
QnVmZmVyLmhhbmRsZSwgRUdMX0JBQ0tfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBnbDo6VGV4UGFyYW1ldGVy
aSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CiAgICAg
U2NvcGVkRnJhbWVidWZmZXIgZmJvOwogICAgIFNjb3BlZFJlc3RvcmVSZWFkRnJhbWVidWZmZXJC
aW5kaW5nIGZib0JpbmRpbmcobV9pc0ZvcldlYkdMMiwgbV9zdGF0ZS5ib3VuZFJlYWRGQk8sIGZi
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9I
RVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggZGE0MGEyY2RlOGYwZjg0ZGEwOTMwYjUy
ZmIyM2I2NmQ1M2Y5MGQzNy4uYTg4ZmRlOTAxZjUyMjU5NDRlZjFhOTc0MGNhNTIzODc3MzFjZDA4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVW
Q1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtNDMsMTEgKzQzLDExIEBAIE9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZD
UGFyYW1ldGVycyYgcGFyCiAgICAgQ01WaWRlb0NvZGVjVHlwZSBjb2RlYyA9IGtDTVZpZGVvQ29k
ZWNUeXBlX0hFVkM7CiAgICAgaWYgKGhhc0FscGhhQ2hhbm5lbCkgewogICAgICAgICBpZiAoIVBB
TDo6aXNBVkZvdW5kYXRpb25GcmFtZXdvcmtBdmFpbGFibGUoKSB8fCAhUEFMOjpjYW5Mb2FkX0FW
Rm91bmRhdGlvbl9BVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSgpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgYXV0byBjb2RlY0NvZGUgPSBGb3VyQ0M6OmZyb21TdHJpbmcoQVZWaWRlb0NvZGVj
VHlwZUhFVkNXaXRoQWxwaGEpOwogICAgICAgICBpZiAoIWNvZGVjQ29kZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIGNvZGVjID0gY29kZWNDb2RlLnZhbHVlKCkudmFsdWU7CiAgICAgfQpAQCAtNTcs
MTIgKzU3LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZD
UGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyCiAgICAgICAgIGJvb2wgaXNNYWlu
MTAgPSBwYXJhbWV0ZXJzLmdlbmVyYWxQcm9maWxlU3BhY2UgPT0gMAogICAgICAgICAgICAgJiYg
KHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVJREMgPT0gMiB8fCBwYXJhbWV0ZXJzLmdlbmVyYWxQ
cm9maWxlQ29tcGF0aWJpbGl0eUZsYWdzID09IDEpOwogICAgICAgICBpZiAoIWlzTWFpbjEwKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZWxlY3RBbmRDcmVh
dGVWaWRlb0RlY29kZXJJbnN0YW5jZShjb2RlYywga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0
ciwgbnVsbHB0cik7CiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2Fu
TG9hZF9WaWRlb1Rvb2xib3hfVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5
KCkKICAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyQ2FwYWJp
bGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCkBAIC03MCwzMCArNzAsMzAgQEAgT3B0aW9uYWw8TWVk
aWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJh
bWV0ZXJzJiBwYXIKICAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNv
ZGVyUHJvZmlsZUNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkKICAgICAgICAgfHwg
IWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4
RGVjb2RlTGV2ZWwoKQogICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0Rl
Y29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGNhcGFiaWxpdGllcyA9IGFkb3B0Q0YoVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0
aW9uYXJ5KCkpOwogICAgIGlmICghY2FwYWJpbGl0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdXBwb3J0
ZWRQcm9maWxlcyA9IChDRkFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGll
cy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZFByb2ZpbGVzKTsKICAg
ICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzIHx8IENGR2V0VHlwZUlEKHN1cHBvcnRlZFByb2ZpbGVz
KSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9maWxl
SURDID0gcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQzsKICAgICBhdXRvIGNmR2VuZXJhbFBy
b2ZpbGVJREMgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQxNlR5cGUsICZnZW5lcmFsUHJvZmlsZUlEQykpOwogICAgIGF1dG8gc2VhcmNo
UmFuZ2UgPSBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkUHJvZmlsZXMp
KTsKICAgICBpZiAoIUNGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFy
Y2hSYW5nZSwgY2ZHZW5lcmFsUHJvZmlsZUlEQy5nZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBlclBy
b2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBh
YmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9QZXJQcm9maWxlU3VwcG9y
dCk7CiAgICAgaWYgKCFwZXJQcm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwZXJQcm9maWxl
U3VwcG9ydCkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdlbmVy
YWxQcm9maWxlSURDU3RyaW5nID0gU3RyaW5nOjpudW1iZXIoZ2VuZXJhbFByb2ZpbGVJREMpLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAgICAgYXV0byBwcm9maWxlU3VwcG9ydCA9IChDRkRpY3Rpb25hcnlS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocGVyUHJvZmlsZVN1cHBvcnQsIGdlbmVyYWxQcm9maWxl
SURDU3RyaW5nLmdldCgpKTsKICAgICBpZiAoIXByb2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlE
KHByb2ZpbGVTdXBwb3J0KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbyBpbmZvOwogCkBAIC0xMDcsMTcgKzEwNywxNyBAQCBPcHRpb25h
bDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVW
Q1BhcmFtZXRlcnMmIHBhcgogICAgIGlmIChjZk1heERlY29kZUxldmVsICYmIENGR2V0VHlwZUlE
KGNmTWF4RGVjb2RlTGV2ZWwpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKICAgICAgICAgaW50
MTZfdCBtYXhEZWNvZGVMZXZlbCA9IDA7CiAgICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShj
Zk1heERlY29kZUxldmVsLCBrQ0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4RGVjb2RlTGV2ZWwpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDID4gbWF4
RGVjb2RlTGV2ZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGNmTWF4UGxheWJhY2tM
ZXZlbCA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwg
a1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKTsKICAgICBp
ZiAoY2ZNYXhQbGF5YmFja0xldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4UGxheWJhY2tMZXZlbCkg
PT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkgewogICAgICAgICBpbnQxNl90IG1heFBsYXliYWNrTGV2
ZWwgPSAwOwogICAgICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUoY2ZNYXhQbGF5YmFja0xldmVs
LCBrQ0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4UGxheWJhY2tMZXZlbCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBpbmZvLnNtb290aCA9IHBhcmFtZXRlcnMuZ2VuZXJhbExldmVsSURDIDw9IG1heFBs
YXliYWNrTGV2ZWw7CiAgICAgfQpAQCAtMTQxLDE2ICsxNDEsMTYgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50MTZfdD4+IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2
VmVjdG9yKEMKIHsKICAgICBhdXRvIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlv
bmFyeSwga2V5KTsKICAgICBpZiAoIXZhbHVlIHx8IENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRkFy
cmF5R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgTlNBcnJheSAqYXJyYXkgPSAoX19icmlkZ2UgTlNBcnJh
eSAqKXZhbHVlOwogICAgIFZlY3Rvcjx1aW50MTZfdD4gdmVjdG9yOwogICAgIHZlY3Rvci5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGFycmF5LmNvdW50KTsKICAgICBmb3IgKGlkIHZhbHVlIGluIGFy
cmF5KSB7CiAgICAgICAgIGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3Nd
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gbnVtZXJpY1ZhbHVlID0gcGFyc2VJbnRlZ2VyPHVp
bnQxNl90PihTdHJpbmcoKE5TU3RyaW5nICopdmFsdWUpKTsKICAgICAgICAgaWYgKCFudW1lcmlj
VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZCgqbnVtZXJp
Y1ZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHZlY3RvcjsKQEAgLTE1OSw3ICsxNTksNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQxNl90Pj4gcGFyc2VTdHJpbmdBcnJheUZyb21EaWN0
aW9uYXJ5VG9VSW50MTZWZWN0b3IoQwogT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2
YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBi
b29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQogewogICAgIGlmIChoYXNBbHBo
YUNoYW5uZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGRyU3VwcG9ydCkgewogICAgICAgICAvLyBQbGF0Zm9y
bSBzdXBwb3J0cyBIRFIgcGxheWJhY2sgb2YgSEVWQyBNYWluMTAgUHJvZmlsZSwgd2hpY2ggaXMg
c2lnbmFsbGVkIGJ5IERvVmkgcHJvZmlsZXMgNCwgNSwgNywgJiA4LgpAQCAtMTcwLDM5ICsxNzAs
MzkgQEAgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZURvVmlQYXJhbWV0
ZXJzKGNvbnN0IERvVmlQYXJhbWV0ZXJzJiBwYXIKICAgICAgICAgY2FzZSA4OgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0K
IAogICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5z
dGFuY2UoY29kZWNUeXBlKHBhcmFtZXRlcnMuY29kZWMpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBu
dWxscHRyLCBudWxscHRyKTsKICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9WVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rp
b25hcnkoKQogICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25E
ZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCiAgICAgICAgIHx8ICFjYW5Mb2Fk
X1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExl
dmVscygpCiAgICAgICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRl
Y29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBj
YXBhYmlsaXRpZXMgPSBhZG9wdENGKFZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlv
bmFyeSgpKTsKICAgICBpZiAoIWNhcGFiaWxpdGllcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VwcG9ydGVk
UHJvZmlsZXMgPSBwYXJzZVN0cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3Rvcihj
YXBhYmlsaXRpZXMuZ2V0KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9y
dGVkUHJvZmlsZXMpOwogICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IHN1cHBvcnRlZExldmVscyA9IHBhcnNlU3RyaW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2
VmVjdG9yKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0
eV9TdXBwb3J0ZWRMZXZlbHMpOwogICAgIGlmICghc3VwcG9ydGVkTGV2ZWxzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmls
aXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCk7CiAgICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0
ZWRDRiB8fCBDRkdldFR5cGVJRChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFu
R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgYm9vbCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgPSBDRkJvb2xl
YW5HZXRWYWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRik7CiAKICAgICBpZiAoIXN1cHBvcnRl
ZFByb2ZpbGVzLnZhbHVlKCkuY29udGFpbnMocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQp
IHx8ICFzdXBwb3J0ZWRMZXZlbHMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVh
bUxldmVsSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyB0cnVlLCB0cnVlLCBpc0hhcmR3YXJlQWNj
ZWxlcmF0ZWQgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAppbmRleCBlMjI1Y2ZkMjc4MGVlYzI3OTc0ZWRmNzFjZTQ3MDAy
OTJlZWM4YjE2Li41ZGQzZWNiYmU2YjIwMGYyZWZjZWJiZDJhOWMzNjUzZTA1M2UyZWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aApAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXRhaW5QdHI8SU9TdXJmYWNl
UmVmPiBtX3N1cmZhY2U7CiAKLSAgICBzdGF0aWMgV1RGOjpPcHRpb25hbDxJbnRTaXplPiBzX21h
eGltdW1TaXplOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNfbWF4aW11bVNp
emU7CiB9OwogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgV2ViQ29yZTo6SU9TdXJmYWNlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcAppbmRleCBjODk2
Y2E0MGE2N2MyMTQxZGNkMjA2M2U1ZDBjNzY4NjFhNzRmMWM4Li5kNWE2MzVmZDE0OGExYjE0MTdm
OTkyZWUyNDJjYzc5OWI0NmQyYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTY1LDE3ICs2NSwxNyBAQCBzdGF0aWMg
T3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBjb21wdXRlTWVkaWFDYXBhYmlsaXRpZXNJ
bmZvKGNvbnN0IE1lZGlhRAogICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSh2
aWRlb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmlzTWVk
aWFTb3VyY2UgPSBjb25maWd1cmF0aW9uLnR5cGUgPT0gTWVkaWFEZWNvZGluZ1R5cGU6Ok1lZGlh
U291cmNlOwogICAgICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJz
KSAhPSBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlOjpJc1N1cHBvcnRlZCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVycy50eXBlLmNvZGVjcygpOwogICAgICAg
ICBpZiAoY29kZWNzLnNpemUoKSAhPSAxKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaW5mby5zdXBw
b3J0ZWQgPSB0cnVlOwogICAgICAgICBhdXRvJiBjb2RlYyA9IGNvZGVjc1swXTsKICAgICAgICAg
YXV0byB2aWRlb0NvZGVjVHlwZSA9IHZpZGVvQ29kZWNUeXBlRnJvbVJGQzQyODFUeXBlKGNvZGVj
KTsKICAgICAgICAgaWYgKCF2aWRlb0NvZGVjVHlwZSAmJiAhKGNvZGVjLnN0YXJ0c1dpdGgoImR2
aDEiKSB8fCBjb2RlYy5zdGFydHNXaXRoKCJkdmhlIikpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
Ym9vbCBoZHJTdXBwb3J0ZWQgPSB2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCB8fCB2aWRl
b0NvbmZpZ3VyYXRpb24uaGRyTWV0YWRhdGFUeXBlIHx8IHZpZGVvQ29uZmlndXJhdGlvbi50cmFu
c2ZlckZ1bmN0aW9uOwogICAgICAgICBib29sIGFscGhhQ2hhbm5lbCA9IHZpZGVvQ29uZmlndXJh
dGlvbi5hbHBoYUNoYW5uZWwgJiYgdmlkZW9Db25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbC52YWx1
ZSgpOwpAQCAtODMsMzQgKzgzLDM0IEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGll
c0luZm8+IGNvbXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAgICAgICAg
IGlmICh2aWRlb0NvZGVjVHlwZSA9PSBrQ01WaWRlb0NvZGVjVHlwZV9IRVZDKSB7CiAgICAgICAg
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29kZWMpOwog
ICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIGF1dG8gcGFyc2VkSW5mbyA9IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoKnBhcmFtZXRlcnMs
IGFscGhhQ2hhbm5lbCwgaGRyU3VwcG9ydGVkKTsKICAgICAgICAgICAgIGlmICghcGFyc2VkSW5m
bykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBpbmZvID0gKnBhcnNlZEluZm87CiAg
ICAgICAgIH0gZWxzZSBpZiAoY29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0
c1dpdGgoImR2aGUiKSkgewogICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKGNvZGVjKTsKICAgICAgICAgICAgIGlmICghcGFyYW1ldGVycykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBhdXRvIHBhcnNlZEluZm8gPSB2YWxpZGF0ZURv
VmlQYXJhbWV0ZXJzKCpwYXJhbWV0ZXJzLCBhbHBoYUNoYW5uZWwsIGhkclN1cHBvcnRlZCk7CiAg
ICAgICAgICAgICBpZiAoIXBhcnNlZEluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAg
ICAgaW5mbyA9ICpwYXJzZWRJbmZvOwogI2lmIEVOQUJMRShWUDkpCiAgICAgICAgIH0gZWxzZSBp
ZiAodmlkZW9Db2RlY1R5cGUgPT0ga0NNVmlkZW9Db2RlY1R5cGVfVlA5KSB7CiAgICAgICAgICAg
ICBpZiAoIWNvbmZpZ3VyYXRpb24uY2FuRXhwb3NlVlA5KQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoY29kZWMp
OwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGF1dG8gcGFyc2VkSW5mbyA9IHZhbGlkYXRlVlBQYXJhbWV0ZXJzKCpwYXJhbWV0ZXJz
LCB2aWRlb0NvbmZpZ3VyYXRpb24pOwogICAgICAgICAgICAgaWYgKCFwYXJzZWRJbmZvKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGluZm8gPSAqcGFyc2VkSW5mbzsKICNlbmRpZgog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGFscGhhQ2hhbm5lbCB8fCBoZHJTdXBw
b3J0ZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAoY2FuTG9hZF9WaWRl
b1Rvb2xib3hfVlRJc0hhcmR3YXJlRGVjb2RlU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBpbmZvLnBvd2VyRWZmaWNpZW50ID0gVlRJc0hhcmR3YXJlRGVjb2RlU3VwcG9ydGVkKHZpZGVv
Q29kZWNUeXBlKTsKQEAgLTEyNCwyMiArMTI0LDIyIEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNh
cGFiaWxpdGllc0luZm8+IGNvbXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFE
CiAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKGNvbmZpZ3VyYXRpb24uYXVk
aW8udmFsdWUoKS5jb250ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJj
ZSA9IGNvbmZpZ3VyYXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7
CiAgICAgICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAg
ICAgaWYgKGNvbmZpZ3VyYXRpb24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcudmFsdWVPcihmYWxz
ZSkpIHsKKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24uYXVkaW8tPnNwYXRpYWxSZW5kZXJpbmcu
dmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICBhdXRvIGNvbnRleHQgPSBQQUw6Ok91dHB1
dENvbnRleHQ6OnNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpOwogICAgICAg
ICAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0
byBkZXZpY2VzID0gY29udGV4dC0+b3V0cHV0RGV2aWNlcygpOwogICAgICAgICAgICAgaWYgKGRl
dmljZXMuaXNFbXB0eSgpIHx8ICFXVEY6OmFsbE9mKGRldmljZXMsIFtdKGF1dG8mIGRldmljZSkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2Uuc3VwcG9ydHNTcGF0aWFsQXVkaW8oKTsK
ICAgICAgICAgICAgIH0pKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgLy8gT25s
eSBtdWx0aWNoYW5uZWwgYXVkaW8gY2FuIGJlIHNwYXRpYWxseSByZW5kZXJlZC4KICAgICAgICAg
ICAgIGlmICghY29uZmlndXJhdGlvbi5hdWRpby0+Y2hhbm5lbHMuaXNOdWxsKCkgJiYgY29uZmln
dXJhdGlvbi5hdWRpby0+Y2hhbm5lbHMudG9Eb3VibGUoKSA8PSAyKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogICAgICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCBlNTFiNWQ2OWM0NmY0MTc3ZGE0Yzk5
ZjQ3MzdjODJmMDMwZjQyOWY3Li41ZGEzYjRiYjY5MDk3NzdjY2RiZDFiOWQ3NGM2ZTQwZTE3NWQy
NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNjQ4LDcgKzY0OCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6YXBwZW5kRGF0YShTZWdtZW50JiYgc2Vn
bWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAgICAgICAgIH0KIAogICAgICAgICBBTFdBWVNf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJyZWNlaXZlZCBFYm1sIGVsZW1lbnQgd2hp
bGUgcGFyc2luZyBTZWdtZW50IGVsZW1lbnQuIFJld291bmQgcmVhZGVyIGFuZCByZXNldCBwYXJz
ZXIsIHJldHJ5aW5nIik7Ci0gICAgICAgIG1fcmV3aW5kVG9Qb3NpdGlvbiA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV9yZXdpbmRUb1Bvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgICAgICBt
X3BhcnNlci0+RGlkU2VlaygpOwogICAgICAgICBtX3N0YXRlID0gU3RhdGU6Ok5vbmU7CiAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtOTU1LDcgKzk1NSw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjpPbkJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0
CiAKICAgICAqYWN0aW9uID0gQWN0aW9uOjprUmVhZDsKIAotICAgIG1fY3VycmVudEJsb2NrID0g
bWFrZU9wdGlvbmFsPEJsb2NrVmFyaWFudD4oQmxvY2soYmxvY2spKTsKKyAgICBtX2N1cnJlbnRC
bG9jayA9IHN0ZDo6bWFrZV9vcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KEJsb2NrKGJsb2NrKSk7CiAK
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTk2Niw3ICs5
NjYsNyBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25CbG9ja0VuZChj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLAogICAgIFVOVVNFRF9QQVJBTShibG9jayk7
CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CiAKLSAgICBtX2N1cnJl
bnRCbG9jayA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQpAQCAtOTgy
LDcgKzk4Miw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblNpbXBs
ZUJsb2NrQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtCiAKICAgICAqYWN0aW9uID0gQWN0
aW9uOjprUmVhZDsKIAotICAgIG1fY3VycmVudEJsb2NrID0gbWFrZU9wdGlvbmFsPEJsb2NrVmFy
aWFudD4oU2ltcGxlQmxvY2soYmxvY2spKTsKKyAgICBtX2N1cnJlbnRCbG9jayA9IHN0ZDo6bWFr
ZV9vcHRpb25hbDxCbG9ja1ZhcmlhbnQ+KFNpbXBsZUJsb2NrKGJsb2NrKSk7CiAKICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTk5NCw3ICs5OTQsNyBAQCB3
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25TaW1wbGVCbG9ja0VuZChjb25z
dCBFbGVtZW50TWV0YWRhdGEmIG1ldAogCiAgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKIAotICAg
IG1fY3VycmVudEJsb2NrID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEJsb2NrID0gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9
CkBAIC0xMzA2LDggKzEzMDYsOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogCiAKICAgICBt
X3BhY2tldERlc2NyaXB0aW9ucy5hcHBlbmQoeyBzdGF0aWNfY2FzdDxpbnQ2NF90PigqbV9jdXJy
ZW50UGFja2V0Qnl0ZU9mZnNldCksIDAsIHN0YXRpY19jYXN0PFVJbnQzMj4oKm1fY3VycmVudFBh
Y2tldFNpemUpIH0pOwotICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJl
bnRQYWNrZXRCeXRlT2Zmc2V0ID0gc3RkOjpudWxsb3B0OworICAgIG1fY3VycmVudFBhY2tldFNp
emUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNhbXBsZUR1cmF0aW9uID0gQ01UaW1lR2V0
U2Vjb25kcyhDTVRpbWVTdWJ0cmFjdChwcmVzZW50YXRpb25UaW1lLCBtX3NhbXBsZVByZXNlbnRh
dGlvblRpbWUpKSArIENNVGltZUdldFNlY29uZHMobV9wYWNrZXREdXJhdGlvbikgKiBzYW1wbGVD
b3VudDsKICAgICBpZiAoc2FtcGxlRHVyYXRpb24gPj0gbV9taW5pbXVtU2FtcGxlRHVyYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggNjQxZTQ3MTg2ZWFmMzI3NjBlMTgy
NzVhZDNkOGQ1MDQ2ZDVjNzJmMi4uMzUxYWJmODE3NDUwYjMwYzcxYjRhMjA2N2FiNGU1MThjNTE1
MWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApAQCAtMjA3LDcgKzIwNyw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIHdlYm06OlN0YXR1cyBjb25zdW1lRnJhbWVE
YXRhKHdlYm06OlJlYWRlciYsIGNvbnN0IHdlYm06OkZyYW1lTWV0YWRhdGEmLCB1aW50NjRfdCos
IGNvbnN0IENNVGltZSYsIGludCkgZmluYWw7Ci0gICAgICAgIHZvaWQgY3JlYXRlU2FtcGxlQnVm
ZmVyKE9wdGlvbmFsPHNpemVfdD4gbGF0ZXN0Qnl0ZVJhbmdlT2Zmc2V0ID0gV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90PiBsYXRl
c3RCeXRlUmFuZ2VPZmZzZXQgPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIkF1ZGlvVHJhY2tE
YXRhIjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvVlA5VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQppbmRleCAzMmNhZjcxNTY3ZWRmOWRlYjcwYmFj
NzFmMjg5YjIzMzRkZjU2NzUyLi42ZWVkMDE2ZjBiZGUwOTI0NDI2ODA3OGRiZWNlMDQ4YjMwMWQ3
ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9W
UDlVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9WUDlVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMjMzLDIyICsyMzMsMjIgQEAgYm9vbCBp
c1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvbnN0IFZQQ29kZWNDb25maWd1
cmF0aW9uUmVjb3JkJiBjb2QKIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRh
dGVWUFBhcmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZGVjQ29u
ZmlndXJhdGlvbiwgY29uc3QgVmlkZW9Db25maWd1cmF0aW9uJiB2aWRlb0NvbmZpZ3VyYXRpb24p
CiB7CiAgICAgaWYgKCFpc1ZQQ29kZWNDb25maWd1cmF0aW9uUmVjb3JkU3VwcG9ydGVkKGNvZGVj
Q29uZmlndXJhdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWaWRlb0NvbmZpZ3VyYXRpb24gYW5kIFZQQ29k
ZWNDb25maWd1cmF0aW9uUmVjb3JkIGNhbiBoYXZlIGNvbmZsaWN0aW5nIHZhbHVlcyBmb3IgSERS
IHByb3BlcnRpZXMuIElmIHNvLCByZWplY3QuCiAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi50
cmFuc2ZlckZ1bmN0aW9uKSB7CiAgICAgICAgIC8vIE5vdGU6IFRyYW5zZmVyIENoYXJhY3Rlcmlz
dGljcyBhcmUgZGVmaW5lZCBieSBJU08vSUVDIDIzMDkxLTI6MjAxOS4KICAgICAgICAgaWYgKCp2
aWRlb0NvbmZpZ3VyYXRpb24udHJhbnNmZXJGdW5jdGlvbiA9PSBUcmFuc2ZlckZ1bmN0aW9uOjpT
UkdCICYmIGNvZGVjQ29uZmlndXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA+IDE1KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmICgqdmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rp
b24gPT0gVHJhbnNmZXJGdW5jdGlvbjo6UFEgJiYgY29kZWNDb25maWd1cmF0aW9uLnRyYW5zZmVy
Q2hhcmFjdGVyaXN0aWNzICE9IDE2KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqdmlkZW9Db25m
aWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rpb24gPT0gVHJhbnNmZXJGdW5jdGlvbjo6SExHICYmIGNv
ZGVjQ29uZmlndXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyAhPSAxOCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGlmICh2aWRlb0NvbmZpZ3VyYXRpb24uY29sb3JHYW11dCkgewogICAg
ICAgICBpZiAoKnZpZGVvQ29uZmlndXJhdGlvbi5jb2xvckdhbXV0ID09IENvbG9yR2FtdXQ6OlJl
YzIwMjAgJiYgY29kZWNDb25maWd1cmF0aW9uLmNvbG9yUHJpbWFyaWVzICE9IDkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBNZWRpYUNhcGFiaWxpdGllc0luZm8gaW5mbzsKQEAgLTI1NiwxMiAr
MjU2LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBhcmFt
ZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SCiAgICAgaWYgKHZwOUhhcmR3YXJlRGVj
b2RlckF2YWlsYWJsZSgpKSB7CiAgICAgICAgIC8vIEhXIFZQOSBEZWNvZGVyIGRvZXMgbm90IHN1
cHBvcnQgYWxwaGEgY2hhbm5lbDoKICAgICAgICAgaWYgKHZpZGVvQ29uZmlndXJhdGlvbi5hbHBo
YUNoYW5uZWwgJiYgKnZpZGVvQ29uZmlndXJhdGlvbi5hbHBoYUNoYW5uZWwpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAvLyBIVyBWUDkgRGVjb2RlciBjYW4gc3VwcG9ydCB1cCB0byA0SyBAIDEyMCBv
ciA4SyBAIDMwCiAgICAgICAgIGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdXRpb25DYXRlZ29yeSh7
IChmbG9hdCl2aWRlb0NvbmZpZ3VyYXRpb24ud2lkdGgsIChmbG9hdCl2aWRlb0NvbmZpZ3VyYXRp
b24uaGVpZ2h0IH0pOwogICAgICAgICBpZiAocmVzb2x1dGlvbiA+IFJlc29sdXRpb25DYXRlZ29y
eTo6Ul84SykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAocmVzb2x1dGlvbiA9PSBSZXNvbHV0aW9u
Q2F0ZWdvcnk6OlJfOEsgJiYgdmlkZW9Db25maWd1cmF0aW9uLmZyYW1lcmF0ZSA+IDMwKQogICAg
ICAgICAgICAgaW5mby5zbW9vdGggPSBmYWxzZTsKICAgICAgICAgZWxzZSBpZiAocmVzb2x1dGlv
biA8PSBSZXNvbHV0aW9uQ2F0ZWdvcnk6OlJfNEsgJiYgdmlkZW9Db25maWd1cmF0aW9uLmZyYW1l
cmF0ZSA+IDEyMCkKQEAgLTMxNSw3ICszMTUsNyBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGll
c0luZm8+IHZhbGlkYXRlVlBQYXJhbWV0ZXJzKGNvbnN0IFZQQ29kZWNDb25maWd1cmF0aW9uUgog
ICAgIH0KIAogICAgIGlmICghaGFzNGtTY3JlZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbmZvLnN1cHBvcnRlZCA9
IHRydWU7CiAgICAgcmV0dXJuIGluZm87CkBAIC02MTYsNyArNjE2LDcgQEAgT3B0aW9uYWw8VlA4
RnJhbWVIZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXpl
X3QgZnJhbWVTaXoKIAogICAgIC8vIEJhaWwgaWYgdGhlIGhlYWRlciBpcyBiZWxvdyBhIG1pbmlt
dW0gc2l6ZQogICAgIGlmIChmcmFtZVNpemUgPCAxMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZQOEZyYW1lSGVhZGVy
IGhlYWRlcjsKICAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IDExOwpAQCAtNjI2LDcgKzYyNiw3IEBA
IE9wdGlvbmFsPFZQOEZyYW1lSGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3QqIGZy
YW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6CiAKICAgICBhdXRvIHVuY29tcHJlc3NlZENodW5rID0g
dmlldy0+Z2V0PHVpbnQzMl90PigwLCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGhlYWRlci5rZXlmcmFtZSA9IHVuY29tcHJlc3NlZENodW5rICYgMHg4MDAwMDAw
MDsKICAgICBoZWFkZXIudmVyc2lvbiA9ICh1bmNvbXByZXNzZWRDaHVuayA+PiAyOCkgJiAweDc7
CkBAIC02MzgsMzMgKzYzOCwzMyBAQCBPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VWUDhG
cmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpegogCiAgICAgYXV0
byBzdGFydENvZGUwID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDMsIHRydWUsICZzdGF0dXMpOwogICAg
IGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTAgIT0gMHg5ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnRD
b2RlMSA9IHZpZXctPmdldDx1aW50OF90Pig0LCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0
YXR1cyB8fCBzdGFydENvZGUxICE9IDB4MDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN0YXJ0Q29kZTIgPSB2
aWV3LT5nZXQ8dWludDhfdD4oNSwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMgfHwg
c3RhcnRDb2RlMiAhPSAweDJhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBob3Jpem9udGFsQW5kV2lkdGhGaWVs
ZCA9IHZpZXctPmdldDx1aW50MTZfdD4oNiwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0
dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBoZWFkZXIuaG9yaXpvbnRhbFNjYWxlID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oaG9yaXpvbnRhbEFuZFdpZHRoRmllbGQgPj4gMTQpOwogICAgIGhlYWRlci53aWR0aCA9IHN0
YXRpY19jYXN0PHVpbnQxNl90Pihob3Jpem9udGFsQW5kV2lkdGhGaWVsZCAmIDB4M0ZGRik7CiAK
ICAgICBhdXRvIHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgPSB2aWV3LT5nZXQ8dWludDE2X3Q+KDgs
IHRydWUsICZzdGF0dXMpOwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaGVhZGVyLnZlcnRp
Y2FsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZXJ0aWNhbEFuZEhlaWdodEZpZWxkID4+
IDE0KTsKICAgICBoZWFkZXIuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHZlcnRpY2Fs
QW5kSGVpZ2h0RmllbGQgJiAweDNGRkYpOwogCiAgICAgYXV0byBjb2xvclNwYWNlQW5kQ2xhbXBp
bmdGaWVsZCA9IHZpZXctPmdldDx1aW50OF90PigxMCwgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYg
KCFzdGF0dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBoZWFkZXIuY29sb3JTcGFjZSA9IGNvbG9yU3BhY2VBbmRDbGFt
cGluZ0ZpZWxkICYgMHg4MDsKICAgICBoZWFkZXIubmVlZHNDbGFtcGluZyA9IGNvbG9yU3BhY2VB
bmRDbGFtcGluZ0ZpZWxkICYgMHg0MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCmlu
ZGV4IDQ4ODY1NDg0MjI3NGU1YTlhODllOTNiZjVjYzM1ODllZmVlOWYyOWUuLjNlYjI4MTg2MDgw
MjBmOWY0MGE0ODg2ZTI2NWY1NGU2ZmYyZGMzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvVmlkZW9UcmFja1ByaXZhdGVX
ZWJNLmNwcApAQCAtNTUsMTQgKzU1LDE0IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBWaWRlb1RyYWNr
UHJpdmF0ZVdlYk06OnRyYWNrVUlEKCkgY29uc3QKIHsKICAgICBpZiAobV90cmFjay50cmFja191
aWQuaXNfcHJlc2VudCgpKQogICAgICAgICByZXR1cm4gbV90cmFjay50cmFja191aWQudmFsdWUo
KTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIE9wdGlvbmFsPGJvb2w+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6ZGVmYXVsdEVuYWJsZWQo
KSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLmlzX2VuYWJsZWQuaXNfcHJlc2VudCgpKQogICAg
ICAgICByZXR1cm4gbV90cmFjay5pc19lbmFibGVkLnZhbHVlKCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBBdG9tU3RyaW5nIFZpZGVv
VHJhY2tQcml2YXRlV2ViTTo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKaW5kZXgg
ZjgyMzgxMTFiNGQzYjU2ZTNiNGE4Zjc1ZTk2YzU4N2Y0OTBlYjFkMi4uZWM0OThkNGFlMDNjM2Rh
OWZkMjQ2NjdkY2U2ZjQzMWExNzM3ZjE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwCkBAIC00MzIs
NyArNDMyLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxDRlN0cmluZ1JlZj4gb3BlblR5cGVG
ZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQogICAgIENGTnVtYmVyUmVmIHZhbHVlID0g
c3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGZlYXR1cmUsIGtD
VEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSkpOwogICAgIGF1dG8gc3VjY2VzcyA9IENGTnVtYmVy
R2V0VmFsdWUodmFsdWUsIGtDRk51bWJlckludFR5cGUsICZyYXdWYWx1ZSk7CiAgICAgQVNTRVJU
X1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAgICByZXR1cm4gcmF3VmFsdWUgPyBPcHRpb25h
bDxDRlN0cmluZ1JlZj4odGFnKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmF3VmFsdWUg
PyBPcHRpb25hbDxDRlN0cmluZ1JlZj4odGFnKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGlj
IGlubGluZSBzdGQ6OnBhaXI8aW50LCBpbnQ+IHRydWVUeXBlRmVhdHVyZShDRkRpY3Rpb25hcnlS
ZWYgZmVhdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRl
eCBkNWI5ZjdlMWRkODBiOGRlMzBmYjMxOWJhOGMxODc3ZDg2OWQ2ZjVlLi41YzQyNDU0MTNiNDAx
M2I0YmI1NzE4ODFkMGRiNzY2NGQ1M2Q2MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
T3B0aW9uYWw8c3RkOjpzaXplX3Q+IHJlcXVpcmVkU2l6ZUZvckl0ZW0oY29uc3QgRGlzcGxheUxp
c3RJdGVtJikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgdmlydHVhbCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZMaW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBmMTE3Y2ZhODM5MzYwODll
NzFmZDA1YWI3ODY0OGJkMjQ4ZDVlNzkwLi44Mzk0YmQzODJmOTI1NWIzOTQzNDIzZDE5M2EwMDlj
Yzc4YTU4NTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTM4Myw3ICsz
ODMsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
PiBjaGFuZ2VGbGFnczsKICAgICBkZWNvZGVyID4+IGNoYW5nZUZsYWdzOwogICAgIGlmICghY2hh
bmdlRmxhZ3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5n
ZTsKICAgICBzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwpAQCAtMzk0
LDcgKzM5NCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBhdXRv
IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYg
KCFzdHJva2VHcmFkaWVudCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKCpzdHJva2VHcmFkaWVudCk7CiAgICAgfQpAQCAt
NDAzLDEyICs0MDMsMTIgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3Ryb2tlUGF0dGVybiA9
IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKnBhcmFtZXRlcnMgfTsKICAgICB9CkBA
IC00MTYsNyArNDE2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBh
dXRvIGZpbGxHcmFkaWVudCA9IEdyYWRpZW50OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlm
ICghZmlsbEdyYWRpZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0
ZS5maWxsR3JhZGllbnQgPSBXVEZNb3ZlKCpmaWxsR3JhZGllbnQpOwogICAgIH0KQEAgLTQyNSwx
MiArNDI1LDEyIEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJz
PiBwYXJhbWV0ZXJzOwogICAgICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7CiAgICAgICAgIGlm
ICghcGFyYW1ldGVycykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGZpbGxQYXR0ZXJuID0geyAqcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAqcGFyYW1ldGVycyB9OwogICAgIH0KQEAgLTQzOSwy
OCArNDM5LDI4IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gc2hhZG93T2Zmc2V0OwogICAg
ICAgICBkZWNvZGVyID4+IHNoYWRvd09mZnNldDsKICAgICAgICAgaWYgKCFzaGFkb3dPZmZzZXQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd09mZnNldCA9
ICpzaGFkb3dPZmZzZXQ7CiAKICAgICAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNoYWRvd0JsdXI7CiAg
ICAgICAgIGRlY29kZXIgPj4gc2hhZG93Qmx1cjsKICAgICAgICAgaWYgKCFzaGFkb3dCbHVyKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dCbHVyID0gKnNo
YWRvd0JsdXI7CiAKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IHNoYWRvd0NvbG9yOwogICAgICAg
ICBkZWNvZGVyID4+IHNoYWRvd0NvbG9yOwogICAgICAgICBpZiAoIXNoYWRvd0NvbG9yKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dDb2xvciA9ICpzaGFk
b3dDb2xvcjsKIAogICAgICAgICBPcHRpb25hbDxTaGFkb3dSYWRpdXNNb2RlPiBzaGFkb3dSYWRp
dXNNb2RlOwogICAgICAgICBkZWNvZGVyID4+IHNoYWRvd1JhZGl1c01vZGU7CiAgICAgICAgIGlm
ICghc2hhZG93UmFkaXVzTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc2hhZG93UmFkaXVzTW9kZSA9IFdURk1vdmUoKnNoYWRvd1JhZGl1c01vZGUpOwogICAg
IH0KQEAgLTQ2OSw3ICs0NjksNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxmbG9hdD4gc3Ryb2tlVGhpY2tu
ZXNzOwogICAgICAgICBkZWNvZGVyID4+IHN0cm9rZVRoaWNrbmVzczsKICAgICAgICAgaWYgKCFz
dHJva2VUaGlja25lc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRl
LnN0cm9rZVRoaWNrbmVzcyA9ICpzdHJva2VUaGlja25lc3M7CiAgICAgfQpAQCAtNDc4LDcgKzQ3
OCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgIE9wdGlvbmFsPFRleHREcmF3aW5nTW9kZUZsYWdzPiB0ZXh0RHJhd2luZ01v
ZGU7CiAgICAgICAgIGRlY29kZXIgPj4gdGV4dERyYXdpbmdNb2RlOwogICAgICAgICBpZiAoIXRl
eHREcmF3aW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
dGV4dERyYXdpbmdNb2RlID0gV1RGTW92ZSgqdGV4dERyYXdpbmdNb2RlKTsKICAgICB9CkBAIC00
ODcsNyArNDg3LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IHN0cm9rZUNvbG9yOwogICAgICAg
ICBkZWNvZGVyID4+IHN0cm9rZUNvbG9yOwogICAgICAgICBpZiAoIXN0cm9rZUNvbG9yKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VDb2xvciA9ICpzdHJv
a2VDb2xvcjsKICAgICB9CkBAIC00OTYsNyArNDk2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNl
dFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+
IGZpbGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICgh
ZmlsbENvbG9yKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxs
Q29sb3IgPSAqZmlsbENvbG9yOwogICAgIH0KQEAgLTUwNCw3ICs1MDQsNyBAQCBPcHRpb25hbDxT
ZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmIChzdGF0
ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VTdHlsZUNoYW5nZSkpIHsKICAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Ryb2tlU3R5bGUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VTdHlsZSA9IHN0cm9rZVN0eWxlOwogICAgIH0K
QEAgLTUxMyw3ICs1MTMsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxXaW5kUnVsZT4gZmlsbFJ1bGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gZmlsbFJ1bGU7CiAgICAgICAgIGlmICghZmlsbFJ1bGUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxSdWxlID0gKmZpbGxSdWxl
OwogICAgIH0KQEAgLTUyMiw3ICs1MjIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVy
YXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgICAgIGRlY29kZXIgPj4gY29tcG9zaXRlT3Bl
cmF0b3I7CiAgICAgICAgIGlmICghY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gKmNvbXBvc2l0ZU9w
ZXJhdG9yOwogICAgIH0KQEAgLTUzMSw3ICs1MzEsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0
U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxCbGVuZE1v
ZGU+IGJsZW5kTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgICAgIGlm
ICghYmxlbmRNb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5i
bGVuZE1vZGUgPSAqYmxlbmRNb2RlOwogICAgIH0KQEAgLTU0MCw3ICs1NDAsNyBAQCBPcHRpb25h
bDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBP
cHRpb25hbDxJbnRlcnBvbGF0aW9uUXVhbGl0eT4gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsK
ICAgICAgICAgZGVjb2RlciA+PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBp
ZiAoIWltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0
ZUNoYW5nZS5tX3N0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgPSAqaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eTsKICAgICB9CkBAIC01NDksNyArNTQ5LDcgQEAgT3B0aW9uYWw8U2V0U3Rh
dGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8
ZmxvYXQ+IGFscGhhOwogICAgICAgICBkZWNvZGVyID4+IGFscGhhOwogICAgICAgICBpZiAoIWFs
cGhhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5hbHBoYSA9ICph
bHBoYTsKICAgICB9CkBAIC01NTgsNyArNTU4LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0
YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hv
dWxkQW50aWFsaWFzOwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZEFudGlhbGlhczsKICAgICAg
ICAgaWYgKCFzaG91bGRBbnRpYWxpYXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5n
ZS5tX3N0YXRlLnNob3VsZEFudGlhbGlhcyA9ICpzaG91bGRBbnRpYWxpYXM7CiAgICAgfQpAQCAt
NTY3LDcgKzU2Nyw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFNtb290aEZvbnRzOwog
ICAgICAgICBkZWNvZGVyID4+IHNob3VsZFNtb290aEZvbnRzOwogICAgICAgICBpZiAoIXNob3Vs
ZFNtb290aEZvbnRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5z
aG91bGRTbW9vdGhGb250cyA9ICpzaG91bGRTbW9vdGhGb250czsKICAgICB9CkBAIC01NzYsNyAr
NTc2LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
OwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKICAgICAg
ICAgaWYgKCFzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyA9ICpzaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CiAgICAgfQpAQCAtNTg1LDcgKzU4NSw3IEBAIE9wdGlv
bmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IE9wdGlvbmFsPGJvb2w+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgICAgICBkZWNvZGVy
ID4+IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgICAgICBpZiAoIXNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CkBA
IC02NTAsMTIgKzY1MCwxMiBAQCBPcHRpb25hbDxTZXRMaW5lRGFzaD4gU2V0TGluZURhc2g6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPERhc2hBcnJheT4gZGFzaEFycmF5
OwogICAgIGRlY29kZXIgPj4gZGFzaEFycmF5OwogICAgIGlmICghZGFzaEFycmF5KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IGRhc2hPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBkYXNoT2Zmc2V0
OwogICAgIGlmICghZGFzaE9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqZGFzaEFycmF5LCAq
ZGFzaE9mZnNldCB9fTsKIH0KQEAgLTgxMCw3ICs4MTAsNyBAQCBPcHRpb25hbDxDbGlwT3V0VG9Q
YXRoPiBDbGlwT3V0VG9QYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25h
bDxQYXRoPiBwYXRoOwogICAgIGRlY29kZXIgPj4gcGF0aDsKICAgICBpZiAoIXBhdGgpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4ge3sgV1RGTW92ZSgqcGF0aCkgfX07CiB9CkBAIC04NTksMTIgKzg1OSwxMiBA
QCBPcHRpb25hbDxDbGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICgh
cGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdpbmRSdWxlPiB3aW5kUnVsZTsKICAgICBkZWNvZGVy
ID4+IHdpbmRSdWxlOwogICAgIGlmICghd2luZFJ1bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RG
TW92ZSgqcGF0aCksICp3aW5kUnVsZSB9fTsKIH0KQEAgLTkxMCwxMiArOTEwLDEyIEBAIE9wdGlv
bmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czo6ZGVjb2RlKERlY29kZXImCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsK
ICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOwogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgZGVj
b2RlciA+PiBjb2xvclNwYWNlOwogICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OwogfQpAQCAtOTU2LDcg
Kzk1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHM7IH0KIAogcHJpdmF0ZToKQEAgLTk4NywzNSArOTg3LDM1IEBAIE9w
dGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKICAgICBpZiAoIWZvbnRJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBo
czsKICAgICBkZWNvZGVyID4+IGdseXBoczsKICAgICBpZiAoIWdseXBocykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4+IGFkdmFuY2VzOwogICAgIGRl
Y29kZXIgPj4gYWR2YW5jZXM7CiAgICAgaWYgKCFhZHZhbmNlcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChnbHlw
aHMtPnNpemUoKSAhPSBhZHZhbmNlcy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBib3VuZHM7CiAgICAgZGVjb2RlciA+PiBib3VuZHM7CiAgICAgaWYgKCFib3VuZHMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBsb2NhbEFuY2hvcjsKICAgICBkZWNvZGVyID4+
IGxvY2FsQW5jaG9yOwogICAgIGlmICghbG9jYWxBbmNob3IpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250U21vb3RoaW5nTW9kZT4gc21vb3RoaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHNtb290aGlu
Z01vZGU7CiAgICAgaWYgKCFzbW9vdGhpbmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpmb250
SWRlbnRpZmllciwgV1RGTW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqYm91bmRz
LCAqbG9jYWxBbmNob3IsICpzbW9vdGhpbmdNb2RlIH19OwogfQpAQCAtMTA0NSw3ICsxMDQ1LDcg
QEAgcHVibGljOgogCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMDc5LDcg
KzEwNzksNyBAQCBwdWJsaWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTEx
MSw3ICsxMTExLDcgQEAgcHVibGljOgogICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgpAQCAtMTE0
MCw4ICsxMTQwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHBy
aXZhdGU6CiAgICAgZmxvYXQgbV9vcGFjaXR5OwpAQCAtMTE1NSw4ICsxMTU1LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiB9OwogCiBjbGFzcyBEcmF3UmVjdCB7CkBA
IC0xMTc2LDcgKzExNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xMjI4LDcgKzEyMjgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owog
Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBX
VEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMjYwLDMyICsx
MjYwLDMyIEBAIE9wdGlvbmFsPERyYXdMaW5lc0ZvclRleHQ+IERyYXdMaW5lc0ZvclRleHQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGJsb2NrTG9j
YXRpb247CiAgICAgZGVjb2RlciA+PiBibG9ja0xvY2F0aW9uOwogICAgIGlmICghYmxvY2tMb2Nh
dGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0U2l6ZT4gbG9jYWxBbmNob3I7CiAgICAgZGVj
b2RlciA+PiBsb2NhbEFuY2hvcjsKICAgICBpZiAoIWxvY2FsQW5jaG9yKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8RGFzaEFycmF5PiB3aWR0aHM7CiAgICAgZGVjb2RlciA+PiB3aWR0aHM7CiAgICAgaWYg
KCF3aWR0aHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gdGhpY2tuZXNzOwogICAgIGRlY29k
ZXIgPj4gdGhpY2tuZXNzOwogICAgIGlmICghdGhpY2tuZXNzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Ym9vbD4gcHJpbnRpbmc7CiAgICAgZGVjb2RlciA+PiBwcmludGluZzsKICAgICBpZiAoIXByaW50
aW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZG91YmxlTGluZXM7CiAgICAgZGVjb2RlciA+
PiBkb3VibGVMaW5lczsKICAgICBpZiAoIWRvdWJsZUxpbmVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
ICpibG9ja0xvY2F0aW9uLCAqbG9jYWxBbmNob3IsICp0aGlja25lc3MsICp3aWR0aHMsICpwcmlu
dGluZywgKmRvdWJsZUxpbmVzIH19OwogfQpAQCAtMTMxOCw3ICsxMzE4LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9
CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTM0Miw3ICsxMzQyLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RG
OjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQog
CiBwcml2YXRlOgpAQCAtMTM3Miw3ICsxMzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0
ZToKQEAgLTEzOTEsNyArMTM5MSw3IEBAIE9wdGlvbmFsPERyYXdQYXRoPiBEcmF3UGF0aDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNv
ZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUo
KnBhdGgpIH19OwogfQpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMTQ1MywyMiArMTQ1MywyMiBAQCBPcHRpb25h
bDxEcmF3Rm9jdXNSaW5nUGF0aD4gRHJhd0ZvY3VzUmluZ1BhdGg6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAgZGVjb2RlciA+PiBwYXRoOwog
ICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiB3aWR0aDsKICAgICBkZWNv
ZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4g
b2Zmc2V0OwogICAgIGRlY29kZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYg
KCFjb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpZHRoLCAqb2Zm
c2V0LCAqY29sb3IgfX07CiB9CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNTE2LDIyICsxNTE2LDIyIEBAIE9wdGlvbmFsPERy
YXdGb2N1c1JpbmdSZWN0cz4gRHJhd0ZvY3VzUmluZ1JlY3RzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8RmxvYXRSZWN0Pj4gcmVjdHM7CiAgICAgZGVjb2Rl
ciA+PiByZWN0czsKICAgICBpZiAoIXJlY3RzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdp
ZHRoOwogICAgIGRlY29kZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGZsb2F0PiBvZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFv
ZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBj
b2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0cywgKndpZHRo
LCAqb2Zmc2V0LCAqY29sb3IgfX07CiB9CkBAIC0xNTUxLDcgKzE1NTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBA
IC0xNTc1LDcgKzE1NzUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBj
b25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNTk5LDEyICsxNTk5LDEyIEBAIE9wdGlvbmFsPEZpbGxS
ZWN0V2l0aENvbG9yPiBGaWxsUmVjdFdpdGhDb2xvcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAg
ICBpZiAoIXJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2Rl
ciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0LCAq
Y29sb3IgfX07CiB9CkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsg
fQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250
ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xNjQ2LDExICsxNjQ2LDExIEBA
IE9wdGlvbmFsPEZpbGxSZWN0V2l0aEdyYWRpZW50PiBGaWxsUmVjdFdpdGhHcmFkaWVudDo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0OwogICAg
IGRlY29kZXIgPj4gcmVjdDsKICAgICBpZiAoIXJlY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGdyYWRpZW50
ID0gR3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIWdyYWRpZW50KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHt7ICpyZWN0LCBncmFkaWVudC0+Z2V0KCkgfX07CiB9CkBAIC0xNjc2LDcgKzE2
NzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0
OyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CkBAIC0xNzA0LDIyICsxNzA0LDIyIEBAIE9wdGlvbmFsPEZpbGxDb21wb3NpdGVkUmVj
dD4gRmlsbENvbXBvc2l0ZWRSZWN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVj
dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9y
OwogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4g
b3A7CiAgICAgZGVjb2RlciA+PiBvcDsKICAgICBpZiAoIW9wKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
QmxlbmRNb2RlPiBibGVuZE1vZGU7CiAgICAgZGVjb2RlciA+PiBibGVuZE1vZGU7CiAgICAgaWYg
KCFibGVuZE1vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnJlY3QsICpjb2xvciwgKm9wLCAqYmxl
bmRNb2RlIH19OwogfQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE3
NjksMTcgKzE3NjksMTcgQEAgT3B0aW9uYWw8RmlsbFJvdW5kZWRSZWN0PiBGaWxsUm91bmRlZFJl
Y3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0Um91bmRlZFJl
Y3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICgh
Y29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9kZTsKICAgICBkZWNv
ZGVyID4+IGJsZW5kTW9kZTsKICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
eyAqcmVjdCwgKmNvbG9yLCAqYmxlbmRNb2RlIH19OwogfQpAQCAtMTgwNiw3ICsxODA2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCiBw
cml2YXRlOgpAQCAtMTgyOSwxNyArMTgyOSwxNyBAQCBPcHRpb25hbDxGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZT4gRmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZAog
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVjdDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAg
aWYgKCFyZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRSb3VuZGVkUmVjdD4gcm91bmRlZEhv
bGVSZWN0OwogICAgIGRlY29kZXIgPj4gcm91bmRlZEhvbGVSZWN0OwogICAgIGlmICghcm91bmRl
ZEhvbGVSZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIg
Pj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcmVjdCwgKnJv
dW5kZWRIb2xlUmVjdCwgKmNvbG9yIH19OwogfQpAQCAtMTg4Myw3ICsxODgzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0
OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIHBhdGgoKS5mYXN0Qm91bmRpbmdS
ZWN0KCk7IH0KIH07CiAKQEAgLTE5MTIsNyArMTkxMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0
OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKIHBy
aXZhdGU6CkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBPcHRpb25hbDxGaWxsUGF0aD4gRmlsbFBhdGg6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAg
ZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZN
b3ZlKCpwYXRoKSB9fTsKIH0KQEAgLTE5NTEsNyArMTk1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9w
dGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAogcHJpdmF0ZToKQEAgLTE5OTks
MTIgKzE5OTksMTIgQEAgT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0Owog
ICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKICAgICBpZiAoIXNyY1JlY3QpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9ybWF0OwogICAgIGRlY29kZXIgPj4gb3V0
cHV0Rm9ybWF0OwogICAgIGlmICghb3V0cHV0Rm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKm91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OwogfQpAQCAtMjAzMCw3ICsyMDMwLDcg
QEAgcHVibGljOgogICAgIEludFBvaW50IGRlc3RQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dFBvaW50OyB9CiAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0Rm9ybWF0OyB9CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiB7eyBtX2Rlc3RQb2ludCwgbV9z
cmNSZWN0LnNpemUoKSB9fTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMjA2MiwxOSArMjA2MiwxOSBAQCBPcHRpb25hbDxQ
dXRQaXhlbEJ1ZmZlcj4gUHV0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
CiAgICAgZGVjb2RlciA+PiBwaXhlbEJ1ZmZlcjsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgZGVjb2RlciA+PiBzcmNSZWN0OwogICAgIGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRl
Y29kZXIgPj4gZGVzdFBvaW50OwogICAgIGlmICghZGVzdFBvaW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2Rl
ciA+PiBkZXN0Rm9ybWF0OwogICAgIGlmICghZGVzdEZvcm1hdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpwaXhlbEJ1ZmZlciksICpzcmNSZWN0LCAqZGVzdFBvaW50LCAqZGVzdEZvcm1h
dCB9fTsKIH0KQEAgLTIwOTUsNyArMjA5NSw3IEBAIHB1YmxpYzoKIAogICAgIE5PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9j
YWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxs
b3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJl
dHVybiB7IG1fZGVzdGluYXRpb24gfTsgfQogCiBwcml2YXRlOgpAQCAtMjEyMSw3ICsyMTIxLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RG
OjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjE0
Niw3ICsyMTQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2
YXRlOgpAQCAtMjE3NCw3ICsyMTc0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0OwogfTsKIApAQCAtMjIwMyw3ICsyMjAzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xv
YmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0K
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgT3B0aW9uYWw8U3Ry
b2tlUGF0aD4gU3Ryb2tlUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9u
YWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpIH19OwogfQpAQCAtMjI0Miw3ICsyMjQyLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAot
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gV1RG
OjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2Fs
Qm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtMjI2
NCw3ICsyMjY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJu
IG1fcmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwCmluZGV4IGIwNDkwZDAzNDg1NzNlM2U3ZTBlNDFjZjM5OWRhZDQxNWVmNjBjNzEuLjBh
ZWYxMjhhYjNiNWI0YjViMDIwMTgwMzMyMmMwNDQ5MzE2N2U1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYXV0byBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlwZSBp
dGVtVHlwZSkgLT4KICAgICAgICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsK
IAogICAgIGlmICghaXNEcmF3aW5nSXRlbShpdGVtVHlwZSkpIHsKLSAgICAgICAgbV9jdXJyZW50
RXh0ZW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCAwY2JmNWYzNjk1
NzU4YjIxYTM2N2M3ZDk4MzYwYmMxMmYzYTYwYjFjLi4zZjZiYmJkNWQ4ODdkZTU4NmRlNzA4YTEx
ZjM3YWFlMDg0NTMxZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvcioo
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9y
SXRlbSB9LAogICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggMjkyY2I5NjhmMjc5N2NhOTk3Njk3OWI2NGQzMTM4NmQw
MTgxZDY2OC4uNjFiZjc5ZDQ4MDhkYTYwY2JhOTVhNDMwMTM2MDA1ZGY2YWE0ZjBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVjdCA9IGl0ZW0uZ2xvYmFsQm91bmRz
KCkpCiAgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5nSXRlbUV4dGVudCgq
cmVjdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5h
ZGREcmF3aW5nSXRlbUV4dGVudChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIG1fZGlz
cGxheUxpc3QuYWRkRHJhd2luZ0l0ZW1FeHRlbnQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDEw
N2YyMGVjNGYxYzQxMmY4MDFlODIwYzA0YjA3MjhmMjQ4ODNhYTMuLjg3ZTIzNDIxY2EyOTkzNGE3
ZDc4OWRjNTMyNTdlNDVlNzA4ZDFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWMKICAg
ICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0
KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNv
bnRleHQsICppbWFnZUJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiByZXNvdXJjZUlkZW50
aWZpZXI7CiB9CkBAIC03Miw3ICs3Miw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAg
YXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBuYXRpdmVJbWFnZUl0ZW0uaW1hZ2VJZGVudGlmaWVy
KCk7CiAgICAgaWYgKGF1dG8qIGltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50
aWZpZXIpKSB7CiAgICAgICAgIG5hdGl2ZUltYWdlSXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2Up
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQpAQCAtOTcsNyAr
OTcsNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIHNldFN0YXRlSXRl
bS5hcHBseShjb250ZXh0LCBzdHJva2VQYXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOwot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgVD4KQEAgLTEwNyw3ICsxMDcsNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0Nv
bnRleAogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZp
ZXIoKTsKICAgICBpZiAoYXV0byogZm9udCA9IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIp
KSB7CiAgICAgICAgIGZvbnRJdGVtLmFwcGx5KGNvbnRleHQsICpmb250KTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAg
ICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KQEAgLTExNSw2NSArMTE1LDY1IEBAIGlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZv
bnRJdGVtKEdyYXBoaWNzQ29udGV4CiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNv
bj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBs
eUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdh
dGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCi0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKICAgICAg
ICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VC
dWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRl
bSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVk
UmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0
dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRl
bS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VC
dWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdl
PigpKSB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRp
dmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQog
CiAgICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBocz4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihj
b250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07
CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKICAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwg
V1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0
YXRlPigpKSB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4g
eyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlz
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CiAgICAgICAgIGlmIChtX21hc2tJbWFn
ZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJ
dGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAg
IGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7
CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3Bh
Y2UoKSwgbV9jb250ZXh0KTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAg
ICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBXVEY6Om51bGxv
cHQgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51
bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsK
ICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsK
ICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKLSAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwg
c3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZm
ZXIoKm1fbWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAg
bV9tYXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH07CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0lu
TWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDk4MjIyZGQ5NGNlZmZl
NTAxMTM0NjQ0ZjRmZjljNTgzMThmNTk1NjguLjEyYjAyNjVhOWM5MDNkMTFjOWZkOWMxNzY2OTAw
NTgyYzRkMGY4YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ6OmRlY28KICAgICBJdGVtSGFuZGxl
IHJlc3VsdCB7IGhhbmRsZUxvY2F0aW9uIH07CiAgICAgaWYgKGRhdGFIYW5kbGUuc2FmZUNvcHko
dHlwZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEluTWVtb3J5RGlzcGxheUxp
c3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IDJhMGVlODBj
Y2JiMmQ5ZTJiYjAyOTQ5MTcxZmI0M2RjYmJlMzJkM2MuLjE1ZTE5Yjg4MTg4MWJmMWQ5ZGIzZGFm
MGFjODU3N2ZhMGQzMzVlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKQEAgLTM3NCw3ICszNzQsNyBA
QCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxB
cnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIGZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXIo
KS5maWx0ZXJTY2FsZSgpKTsKICAgICBGbG9hdFBvaW50IHBvaW50KDAsIGZpbHRlclJlZ2lvbi55
KCkgKyBzdGFydFkpOwogICAgIGludCBpbmRleE9mUGl4ZWxDaGFubmVsID0gc3RhcnRZICogKGZp
bHRlclJlZ2lvbi53aWR0aCgpIDw8IDIpOwotICAgIEFmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJh
bnNmcm9tID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihB
ZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20g
PSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSk7CiAKICAgICBmb3IgKGludCB5ID0gc3RhcnRZOyB5IDwgZW5kWTsgKyt5KSB7
CiAgICAgICAgIHBvaW50LnNldFkocG9pbnQueSgpICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5k
ZXggYzAwYjI5MTI2NmVhY2M4NzFhODE5OTA3MjQ0ODBkZjU5ZTlhYzY3OS4uZTI1OTYxN2QxMTQ5
OGFmMGY4MDgzMzJiOTJhNGIzZTdmOWNmYzM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMjQ3
LDggKzI0Nyw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpmb3JjZVZhbGlkUHJlTXVsdGlwbGllZFBp
eGVscygpCiB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1bHQoKQogewogICAgIG1faW1hZ2VC
dWZmZXJSZXN1bHQgPSBudWxscHRyOwotICAgIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBX
VEY6Om51bGxvcHQ7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBGaWx0
ZXJFZmZlY3Q6OmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZSgpCkBAIC00NDksNyArNDQ5LDcgQEAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmEKICAgICAvLyBDcmVhdGUgYW4gSW1hZ2VCdWZmZXIgdG8gc3Rv
cmUgaW5jb21pbmcgUGl4ZWxCdWZmZXIKICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmls
dGVyU2NhbGUoKSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZm
ZXIsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29s
b3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBpeGVs
QnVmZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0KTsKIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCBPcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9y
U3BhY2UoY29uc3QgRGVzdGluYQogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRo
ZSBjb3JyZWN0IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFj
ZSBjb252ZXJzaW9uCiAgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRl
clNjYWxlKCksIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYg
KCFjb252ZXJ0ZWRCdWZmZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDb2xvciBzcGFjZSBjb252ZXJzaW9uIGhh
cHBlbnMgaW50ZXJuYWxseSB3aGVuIGRyYXdpbmcgZnJvbSBvbmUgaW1hZ2UgYnVmZmVyIHRvIGFu
b3RoZXIKICAgICBjb252ZXJ0ZWRCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW5w
dXRCdWZmZXIsIHJlY3QpOwpAQCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVz
dGluCiAKICAgICBtX3Jlc3VsdENvbG9yU3BhY2UgPSBkZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiAK
LSAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0gV1RGOjpudWxsb3B0OwotICAgIG1fcHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0ID0gV1RGOjpudWxsb3B0OworICAgIG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQgPSBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggMjIxMzc1
ZTlhNzBhODc2ODExZjQ3MDk4Mjk1OWViNjkzODIxODE5My4uYTM3MDAwYTNjYzA5NTM1ZDAxYzll
MGQ2N2QzZjA3NGI4NTA4NDBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCkBAIC04NCwxMCArODQsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKICAgICBJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXJSZXN1bHQoKTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+
IHVubXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25D
b2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5
PiBwcmVtdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRS
ZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBj
b3B5UHJlbXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpudWxs
b3B0KTsKKyAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHVubXVsdGlwbGllZFJlc3VsdChj
b25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiA9IHN0ZDo6bnVs
bG9wdCk7CisgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwcmVtdWx0aXBsaWVkUmVzdWx0
KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGNvcHlVbm11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JiwgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xv
clNwYWNlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBjb3B5UHJlbXVsdGlwbGllZFJlc3Vs
dChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKICAgICBGaWx0ZXJFZmZl
Y3RWZWN0b3ImIGlucHV0RWZmZWN0cygpIHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzOyB9CiAgICAg
RmlsdGVyRWZmZWN0KiBpbnB1dEVmZmVjdCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZFZmZlY3RJbnB1dHMoKSBjb25zdCB7IHJldHVybiBtX2lucHV0RWZmZWN0cy5zaXpl
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBlYTM1MDg2N2IyZTkyODkz
YjYzMmIyYTBmMWJhNjNjNjVlOTA4OTcxLi43ZjA4MDhkYjAyYWU0ZmU5ZDAwODlhNmMwNmVjZDcz
NThiZGFmNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
cmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC01OTgsNyArNTk4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZvbnRQbGF0Zm9ybURhdGE+IEZvbnRDYWNoZTo6Y3JlYXRl
Rm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGUKIAogT3B0aW9uYWw8QVNDSUlMaXRlcmFsPiBG
b250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFtZShjb25zdCBTdHJpbmcmKQogewot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
I2lmIEVOQUJMRShWQVJJQVRJT05fRk9OVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVO
b2RlRnJlZVR5cGUuY3BwCmluZGV4IGZmNTQwZDUxYzYwY2Q1YTc5OTA0YmMzNWM5OGZjOWE1YWI5
NWVjNTguLjQ1NTEyNmQ0Yzk5NGEwYzRmNWY3NzE1OGRkN2YzOWZiNjliNThhOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRy
ZWVOb2RlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IGJvb2wgR2x5cGhQYWdlOjpmaWxsKFVDaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0
aCkKICAgICBpZiAoIWZhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdURjo6T3B0
aW9uYWw8R2x5cGg+IHplcm9XaWR0aFNwYWNlR2x5cGhWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEdseXBoPiB6ZXJvV2lkdGhTcGFjZUdseXBoVmFsdWU7CiAgICAgYXV0byB6ZXJvV2lkdGhTcGFj
ZUdseXBoID0KICAgICAgICAgWyZdIHsKICAgICAgICAgICAgIGlmICghemVyb1dpZHRoU3BhY2VH
bHlwaFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAppbmRleCBi
OTY3MjdhYjM5ZTc2OTdjMzdmNzYzY2EyMzdkMWNkOWMzNTVmMWE4Li5lNzkxOTc5YzQ4MTdlMTFi
YzkyYTAwZWQ4NDg3NDU4N2M4MGFmOGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZy
ZWVUeXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQ+IGZv
bnRVbml0c1BlckVtKEZUX0ZhY2UgZnJlZVR5cGVGYWNlKQogICAgIGlmIChhdXRvKiB0dEhlYWRl
ciA9IHN0YXRpY19jYXN0PFRUX0hlYWRlcio+KEZUX0dldF9TZm50X1RhYmxlKGZyZWVUeXBlRmFj
ZSwgZnRfc2ZudF9oZWFkKSkpCiAgICAgICAgIHJldHVybiB0dEhlYWRlci0+VW5pdHNfUGVyX0VN
OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiB2b2lkIEZvbnQ6OnBsYXRmb3JtSW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUVycm9yU2NvcGVzLmNwcAppbmRleCAwNGU1NzM0
NjE3ZTdiNDE0MmYwZDk1NGQ1NDI1ZWM1ZTU2YzU5NmFhLi5lMjkyNmJkMDA3N2Y5MzU3MDRiZmE1
ZDFmMmNhOGM1MTRmOTA3YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJvclNjb3Blcy5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBH
UFVFcnJvclNjb3Blczo6R1BVRXJyb3JTY29wZXMoVW5jYXB0dXJlZEVycm9yQ2FsbGJhY2smJiBj
YWxsYmFjaykKIAogdm9pZCBHUFVFcnJvclNjb3Blczo6cHVzaEVycm9yU2NvcGUoR1BVRXJyb3JG
aWx0ZXIgZmlsdGVyKQogewotICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBm
aWx0ZXIsIFdURjo6bnVsbG9wdCB9KTsKKyAgICBtX2Vycm9yU2NvcGVzLmFwcGVuZChFcnJvclNj
b3BlIHsgZmlsdGVyLCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKIE9wdGlvbmFsPEdQVUVycm9yPiBH
UFVFcnJvclNjb3Blczo6cG9wRXJyb3JTY29wZShTdHJpbmcmIGZhaWxNZXNzYWdlKQogewogICAg
IGlmIChtX2Vycm9yU2NvcGVzLmlzRW1wdHkoKSkgewogICAgICAgICBmYWlsTWVzc2FnZSA9ICJO
byBlcnJvciBzY29wZSBleGlzdHMhIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIHNjb3BlID0gbV9l
cnJvclNjb3Blcy50YWtlTGFzdCgpOwotICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BVRXJy
b3JGaWx0ZXI6Ok5vbmUgPyBXVEY6Om51bGxvcHQgOiBzY29wZS5lcnJvcjsKKyAgICByZXR1cm4g
c2NvcGUuZmlsdGVyID09IEdQVUVycm9yRmlsdGVyOjpOb25lID8gc3RkOjpudWxsb3B0IDogc2Nv
cGUuZXJyb3I7CiB9CiAKIHZvaWQgR1BVRXJyb3JTY29wZXM6OmdlbmVyYXRlRXJyb3IoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBHUFVFcnJvckZpbHRlciBmaWx0ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdy
b3VwTWV0YWwubW0KaW5kZXggZDViNDdkMjFhNTQyNTg2MTZlYTFiNTE1OTllNGViY2JiMThlOTJm
NS4uYTllYzE3YjhjYzA0ZGQyNTJlZDYxZjc3ZWVmNWI3MTgxY2JjYTBiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1l
dGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVCaW5kR3JvdXBNZXRhbC5tbQpAQCAtNDgsMjEgKzQ4LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxH
UFVCdWZmZXJCaW5kaW5nPiB0cnlHZXRSZXNvdXJjZUFzQnVmZmVyQmluZGluZyhjb25zdCBHUFVC
aW5kaW5nCiAjZW5kaWYKICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8R1BVQnVmZmVy
QmluZGluZz4ocmVzb3VyY2UpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogUmVzb3VyY2Ug
aXMgbm90IGEgYnVmZmVyIHR5cGUhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYXV0
byYgYnVmZmVyQmluZGluZyA9IFdURjo6Z2V0PEdQVUJ1ZmZlckJpbmRpbmc+KHJlc291cmNlKTsK
ICAgICBpZiAoIWJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5wbGF0Zm9ybUJ1ZmZlcigpKSB7CiAgICAg
ICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBNVExCdWZmZXIgaW4gR1BVQnVmZmVyQmluZGlu
ZyEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50
ZWdlcj4oYnVmZmVyQmluZGluZy5zaXplKSB8fCBidWZmZXJCaW5kaW5nLnNpemUgPiBidWZmZXJC
aW5kaW5nLmJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczog
R1BVQnVmZmVyQmluZGluZyBzaXplIGlzIHRvbyBsYXJnZSEiLCBmdW5jdGlvbk5hbWUpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KICAgICAvLyBNVExCdWZmZXIgc2l6ZSAoTlNVSW50ZWdlcikgaXMgMzIgYml0cyBvbiBz
b21lIHBsYXRmb3Jtcy4KICAgICBpZiAoIWlzSW5Cb3VuZHM8TlNVSW50ZWdlcj4oYnVmZmVyQmlu
ZGluZy5vZmZzZXQpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogQnVmZmVyIG9mZnNldCBp
cyB0b28gbGFyZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIEdQVUJ1
ZmZlckJpbmRpbmcgeyBidWZmZXJCaW5kaW5nLmJ1ZmZlci5jb3B5UmVmKCksIGJ1ZmZlckJpbmRp
bmcub2Zmc2V0LCBidWZmZXJCaW5kaW5nLnNpemUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21w
dXRlUGlwZWxpbmVNZXRhbC5tbQppbmRleCA0MDdlZTRhYTMwNjdiZjEyYTlhMGIyOTE3ZWY0NDMy
ZWQwNjFiY2Y0Li43OWE5OWRjNWM0YjY2ODM2OTcxODg4ODQ0ODQzNzBhMjMwMWU3MTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
cHV0ZVBpcGVsaW5lTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tCkBAIC03OSw3ICs3OSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxXSExTTDo6Q29tcHV0ZURpbWVuc2lvbnM+IHRyeVNldEZ1bmN0aW9u
cyhjb25zdCBHUFVQcm9ncmFtbWFibGVTCiAgICAgICAgIGF1dG8gd2hsc2xDb21waWxlUmVzdWx0
ID0gV0hMU0w6OnByZXBhcmUoKmNvbXB1dGVTdGFnZS5tb2R1bGUtPndobHNsTW9kdWxlKCksICp3
aGxzbERlc2NyaXB0b3IpOwogICAgICAgICBpZiAoIXdobHNsQ29tcGlsZVJlc3VsdCkgewogICAg
ICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKG1ha2VTdHJpbmcoIldI
TFNMIGNvbXBpbGUgZXJyb3I6ICIsIHdobHNsQ29tcGlsZVJlc3VsdC5lcnJvcigpKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIGNvbXB1dGVEaW1lbnNpb25zID0gd2hsc2xDb21w
aWxlUmVzdWx0LT5jb21wdXRlRGltZW5zaW9uczsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8V0hMU0w6OkNvbXB1dGVEaW1lbnNpb25zPiB0cnlTZXRGdW5jdGlvbnMoY29uc3Qg
R1BVUHJvZ3JhbW1hYmxlUwogICAgIGlmICh0cnlTZXRNZXRhbEZ1bmN0aW9ucyhjb21wdXRlTGli
cmFyeS5nZXQoKSwgbXRsRGVzY3JpcHRvciwgY29tcHV0ZUVudHJ5UG9pbnQsIGVycm9yU2NvcGVz
KSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVEaW1lbnNpb25zOwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ29udmVydFJl
c3VsdCB7CkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbnZlcnRSZXN1bHQ+
IGNvbnZlcnRDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKGNvbnN0IEdQVUNvbXB1dGUKIAogICAg
IGlmICghbXRsRGVzY3JpcHRvcikgewogICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZVByZWZp
eGVkRXJyb3IoIkVycm9yIGNyZWF0aW5nIE1UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IhIik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgY29uc3QgYXV0byYgY29tcHV0ZVN0YWdlID0gZGVzY3JpcHRvci5j
b21wdXRlU3RhZ2U7CkBAIC0xNDUsMTQgKzE0NSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8Q29udmVy
dFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0
ZQogICAgICAgICAgICAgd2hsc2xEZXNjcmlwdG9yLT5sYXlvdXQgPSBXVEZNb3ZlKCpsYXlvdXQp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4
ZWRFcnJvcigiRXJyb3IgY29udmVydGluZyBHUFVQaXBlbGluZUxheW91dCEiKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGF1dG8gY29tcHV0ZURpbWVuc2lvbnMgPSB0
cnlTZXRGdW5jdGlvbnMoY29tcHV0ZVN0YWdlLCBkZXZpY2UsIG10bERlc2NyaXB0b3IuZ2V0KCks
IHdobHNsRGVzY3JpcHRvciwgZXJyb3JTY29wZXMpKQogICAgICAgICByZXR1cm4ge3sgbXRsRGVz
Y3JpcHRvciwgKmNvbXB1dGVEaW1lbnNpb25zIH19OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdHJ1Y3QgQ3JlYXRlUmVzdWx0IHsK
QEAgLTE2NCwxMiArMTY0LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNy
ZWF0ZU1UTENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYKIHsKICAgICBpZiAo
IWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRl
UHJlZml4ZWRFcnJvcigiSW52YWxpZCBHUFVEZXZpY2UhIik7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0
byBjb252ZXJ0UmVzdWx0ID0gY29udmVydENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IoZGVzY3Jp
cHRvciwgZGV2aWNlLCBlcnJvclNjb3Blcyk7CiAgICAgaWYgKCFjb252ZXJ0UmVzdWx0KQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIEFTU0VSVChjb252ZXJ0UmVzdWx0LT5waXBlbGluZURlc2NyaXB0b3IpOwogICAgIGF1dG8g
bXRsRGVzY3JpcHRvciA9IGNvbnZlcnRSZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcjsKIApAQCAt
MTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDcmVhdGVSZXN1bHQ+IHRyeUNyZWF0ZU1U
TENvbXB1dGVQaXBlbGluZVN0YXRlKGNvbnN0IEdQVURldmljZSYKICAgICBwaXBlbGluZSA9IGFk
b3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0NvbXB1dGVQaXBlbGluZVN0YXRlV2l0
aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBvcHRpb25zOk1UTFBpcGVsaW5lT3B0aW9u
Tm9uZSByZWZsZWN0aW9uOm5pbCBlcnJvcjomZXJyb3JdKTsKICAgICBpZiAoIXBpcGVsaW5lKSB7
CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcihlcnJvciA/IGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcgOiAiVW5hYmxlIHRvIGNyZWF0ZSBNVExD
b21wdXRlUGlwZWxpbmVTdGF0ZSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5lTWV0YWxDb252ZXJ0TGF5
b3V0LmNwcAppbmRleCAyMzFmMWFiZTYzMDZjOTUxYjM0NGEzMTlkNGU4YWZmNmY4NjE1ZjRmLi4z
NTRjNmEyYTlmNTMzOTA5NjQ5OWFhN2JiYjRhZDZiYWI5N2E4MDY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENv
bnZlcnRMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gY29udmVy
dEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cEwKICAgICByZXR1cm4gV1RGOjp2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlVuaWZvcm1CdWZmZXIgdW5pZm9ybUJ1
ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAg
ICAgIHJldHVybiB7IFdITFNMOjpVbmlmb3JtQnVmZmVyQmluZGluZyB7IHVuaWZvcm1CdWZmZXIu
aW50ZXJuYWxMZW5ndGhOYW1lIH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpE
eW5hbWljVW5pZm9ybUJ1ZmZlcikgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdE
ZXRhaWxzPiB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U2FtcGxlcikgLT4g
T3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiB7CiAgICAgICAgIHJldHVy
biB7IFdITFNMOjpTYW1wbGVyQmluZGluZyB7IH0gfTsKICAgICB9LCBbJl0oR1BVQmluZEdyb3Vw
TGF5b3V0OjpTYW1wbGVkVGV4dHVyZSkgLT4gT3B0aW9uYWw8V0hMU0w6OkJpbmRpbmc6OkJpbmRp
bmdEZXRhaWxzPiB7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXSExTTDo6Qmlu
ZGluZzo6QmluZGluZ0RldGFpbHM+IGNvbnZlcnRCaW5kaW5nVHlwZShHUFVCaW5kR3JvdXBMCiAg
ICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6U3RvcmFnZUJ1ZmZlciBzdG9yYWdlQnVmZmVy
KSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAg
cmV0dXJuIHsgV0hMU0w6OlN0b3JhZ2VCdWZmZXJCaW5kaW5nIHsgc3RvcmFnZUJ1ZmZlci5pbnRl
cm5hbExlbmd0aE5hbWUgfSB9OwogICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFt
aWNTdG9yYWdlQnVmZmVyKSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFp
bHM+IHsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9KSwgaW50ZXJuYWxCaW5kaW5nRGV0YWlscyk7CiB9CiAKQEAgLTY2LDcg
KzY2LDcgQEAgT3B0aW9uYWw8V0hMU0w6OkxheW91dD4gY29udmVydExheW91dChjb25zdCBHUFVQ
aXBlbGluZUxheW91dCYgbGF5b3V0KQogewogICAgIFdITFNMOjpMYXlvdXQgcmVzdWx0OwogICAg
IGlmIChsYXlvdXQuYmluZEdyb3VwTGF5b3V0cygpLnNpemUoKSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxheW91
dC5iaW5kR3JvdXBMYXlvdXRzKCkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byYg
YmluZEdyb3VwTGF5b3V0ID0gbGF5b3V0LmJpbmRHcm91cExheW91dHMoKVtpXTsKICAgICAgICAg
V0hMU0w6OkJpbmRHcm91cCBiaW5kR3JvdXA7CkBAIC03OCw5ICs3OCw5IEBAIE9wdGlvbmFsPFdI
TFNMOjpMYXlvdXQ+IGNvbnZlcnRMYXlvdXQoY29uc3QgR1BVUGlwZWxpbmVMYXlvdXQmIGxheW91
dCkKICAgICAgICAgICAgIGlmIChhdXRvIGJpbmRpbmdUeXBlID0gY29udmVydEJpbmRpbmdUeXBl
KGJpbmRpbmdEZXRhaWxzLmludGVybmFsQmluZGluZ0RldGFpbHMpKQogICAgICAgICAgICAgICAg
IGJpbmRpbmcuYmluZGluZyA9ICpiaW5kaW5nVHlwZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBpZiAoYmluZGluZ0RldGFpbHMuZXh0ZXJuYWxCaW5k
aW5nLmJpbmRpbmcgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYmluZGluZy5leHRlcm5hbE5hbWUgPSBiaW5kaW5n
RGV0YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZzsKICAgICAgICAgICAgIGJpbmRpbmcuaW50
ZXJuYWxOYW1lID0gYmluZGluZ0RldGFpbHMuaW50ZXJuYWxOYW1lOwogICAgICAgICAgICAgYmlu
ZEdyb3VwLmJpbmRpbmdzLmFwcGVuZChXVEZNb3ZlKGJpbmRpbmcpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGlu
ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW0KaW5kZXggMTU5OWYwYmEyMjlkNGFmYmRhYmE3ZGZjYmJi
YmY4Mzk5OTUzYWUxNy4uYTg0N2NlMDNmNTJmOWEyNTZkOTEyMDMyZWUzZGIyYmM4ODRmOTkxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KQEAgLTEwOCwxMyArMTA4
LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxXSExTTDo6VGV4dHVyZUZvcm1hdD4gY29udmVydFRleHR1
cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtCiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpCZ3JhOHVub3JtOgogICAgICAgICByZXR1cm4gV0hMU0w6OlRleHR1cmVGb3JtYXQ6OkJHUkE4
VW5vcm07CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpEZXB0aDMyZmxvYXRTdGVuY2lsODoK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0
byBkbyB3aXRoIHRoaXMuCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIEZJWE1FOiBG
aWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCB0aGlzLgogICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1h
dDo6QmdyYTh1bm9ybVNSR0I6CiAgICAgICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6
QkdSQThVbm9ybVNyZ2I7CiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSZ2JhMTZmbG9hdDoK
ICAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpSR0JBMTZGbG9hdDsKICAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCmluZGV4
IDMzNjg1NTBiMGRiYmM2OTY1NzQwMTZkODZiOGMzMTcwODMyYjc1MGMuLjY1NmYxNDhjZDczMTRk
MTdkOWZiYzQzYmE3YzIyZjFiNmIwZGEwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwu
bW0KQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIE9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiB0cnlH
ZXRTdXBwb3J0ZWRQaXhlbEZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm0KICAgICAgICAgcmV0
dXJuIG10bEZvcm1hdDsKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVT
d2FwQ2hhaW46OnRyeUNyZWF0ZSgpOiBVbnN1cHBvcnRlZCBNVExQaXhlbEZvcm1hdCEiKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggMDZlN2RmYjhj
NDYyODRjMGI0OGQwMzkxMDMxZDc1MTY3YjZjZmQyYi4uYWMyYzQyYmY2MGMyMzYzNDlhZjg2Y2Mw
YjBkMTZjNDQ4ODVkZTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC02MSw3ICs2
MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZv
ckdQVVRleHR1cmVVc2FnZUZsYWdzKE9wdGlvblNlCiAKICAgICBpZiAoZmxhZ3MuY29udGFpbnNB
bnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpDb3B5U291cmNlLCBHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzOjpTYW1wbGVkIH0pICYmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlN0
b3JhZ2UpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICIlczogVGV4dHVyZSBjYW5ub3QgaGF2ZSBi
b3RoIFNUT1JBR0UgYW5kIGEgcmVhZC1vbmx5IHVzYWdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgTVRMVGV4dHVyZVVzYWdlIHJlc3VsdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBiMjcwMDcyOTY1NTJkMGEzODYwYjA4ZmUzMGViZDhj
YjU4MWRhMTIwLi5iMTU4YzVmZTBmNDFiMDc4YjA4ZDk1OTcwMjBiZTVlZjZmMDg1ODM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRl
b1NpbmtHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBP
cHRpb25hbDxHUmVmUHRyPEdzdENvbnRleHQ+PiByZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNoYXIq
IGNvbnRleHRUeXBlKQogICAgIGF1dG8qIGdzdEdMQ29udGV4dCA9IHNoYXJlZERpc3BsYXkuZ3N0
R0xDb250ZXh0KCk7CiAKICAgICBpZiAoIShnc3RHTERpc3BsYXkgJiYgZ3N0R0xDb250ZXh0KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZ19zdHJjbXAwKGNvbnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05U
RVhUX1RZUEUpKSB7CiAgICAgICAgIEdzdENvbnRleHQqIGRpc3BsYXlDb250ZXh0ID0gZ3N0X2Nv
bnRleHRfbmV3KEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSwgVFJVRSk7CkBAIC0xNzQsNyAr
MTc0LDcgQEAgT3B0aW9uYWw8R1JlZlB0cjxHc3RDb250ZXh0Pj4gcmVxdWVzdEdMQ29udGV4dChj
b25zdCBjaGFyKiBjb250ZXh0VHlwZSkKICAgICAgICAgcmV0dXJuIGFkb3B0R1JlZihhcHBDb250
ZXh0KTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIHNldEdMQ29udGV4dChHc3RFbGVtZW50KiBlbGVt
ZW50U2luaywgY29uc3QgY2hhciogY29udGV4dFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCmluZGV4IDUwNWY4NDVjOWJiZmIyZWM5MGQ1YWRmMWVjNDAzNTRjZDUxZGFhNGMuLjU1NThi
ZmIzMmU5MTkwNWNmNmY5OTI1MGZmNzNmY2NmMjBkZGI1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRl
b1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogewogICAgIGlmICghZG9D
YXBzSGF2ZVR5cGUoY2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAg
IEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlbyByZXNvbHV0aW9uLCB0aGVzZSBh
cmUgbm90IGEgdmlkZW8gY2FwcyIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGludCB3aWR0aCA9IDAsIGhl
aWdodCA9IDA7CkBAIC0xNDUsNyArMTQ1LDcgQEAgT3B0aW9uYWw8RmxvYXRTaXplPiBnZXRWaWRl
b1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogICAgICAgICBHc3RWaWRl
b0luZm8gaW5mbzsKICAgICAgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCgmaW5mbyk7CiAgICAgICAg
IGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzKCZpbmZvLCBjYXBzKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEgoJmluZm8pOwogICAgICAgICBo
ZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQoJmluZm8pOwpAQCAtMTUzLDcgKzE1Myw3IEBA
IE9wdGlvbmFsPEZsb2F0U2l6ZT4gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoY29uc3QgR3N0
Q2FwcyogY2FwcykKICAgICAgICAgcGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yID0gR1NUX1ZJ
REVPX0lORk9fUEFSX0QoJmluZm8pOwogICAgIH0KIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwo
RmxvYXRTaXplKHdpZHRoLCBoZWlnaHQgKiAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBpeGVsQXNwZWN0
UmF0aW9EZW5vbWluYXRvcikgLyBzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb051
bWVyYXRvcikpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChGbG9hdFNpemUod2lk
dGgsIGhlaWdodCAqIChzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5h
dG9yKSAvIHN0YXRpY19jYXN0PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yKSkpKTsK
IH0KIAogYm9vbCBnZXRTYW1wbGVWaWRlb0luZm8oR3N0U2FtcGxlKiBzYW1wbGUsIEdzdFZpZGVv
SW5mbyYgdmlkZW9JbmZvKQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgZW5zdXJlR1N0cmVhbWVy
SW5pdGlhbGl6ZWQoKQogICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJUaGUgVVNFX1BMQVlCSU4z
IHZhcmlhYmxlIHdhcyBkZXRlY3RlZCBpbiB0aGUgZW52aXJvbm1lbnQuIEV4cGVjdCBwbGF5YmFj
ayBpc3N1ZXMgb3IgcGxlYXNlIHVuc2V0IGl0LiIpOwogCiAjaWYgRU5BQkxFKFZJREVPKSB8fCBF
TkFCTEUoV0VCX0FVRElPKQotICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbWV0ZXJzID0gc19V
SVByb2Nlc3NDb21tYW5kTGluZU9wdGlvbnMudmFsdWVPcihleHRyYWN0R1N0cmVhbWVyT3B0aW9u
c0Zyb21Db21tYW5kTGluZSgpKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1ldGVycyA9
IHNfVUlQcm9jZXNzQ29tbWFuZExpbmVPcHRpb25zLnZhbHVlX29yKGV4dHJhY3RHU3RyZWFtZXJP
cHRpb25zRnJvbUNvbW1hbmRMaW5lKCkpOwogICAgICAgICBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5l
T3B0aW9ucy5yZXNldCgpOwogICAgICAgICBjaGFyKiogYXJndiA9IGdfbmV3MChjaGFyKiwgcGFy
YW1ldGVycy5zaXplKCkgKyAyKTsKICAgICAgICAgaW50IGFyZ2MgPSBwYXJhbWV0ZXJzLnNpemUo
KSArIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4
IGZkZGQ1YzNjMTRlMTYxZWVmOTVkMzQwYjBlNjA5YTUyMDRmNDg3M2IuLmEzYTM5MmY4MmM5YjYw
MGJhYjYzZDUxODZlZGU3ZTYwZGNlMDQwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFEZWNvZGVyc0Rpc2FsbG93ZWRM
aXN0IHsgImF2MWRlYyJfcyB9OwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250
YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Iikp
ICYmIGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5
cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tI
YXJkd2FyZUNsYXNzaWZpZXI6Ok5vLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFEZWNvZGVyc0Rp
c2FsbG93ZWRMaXN0KSkpKSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRh
aW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkg
JiYgZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlw
ZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6Tm8sIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MURlY29k
ZXJzRGlzYWxsb3dlZExpc3QpKSkpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRk
KEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBmYWxzZSk7CkBAIC00MTgsNyArNDE4LDcgQEAgdm9pZCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVFbmNvZGVycyhjb25zdCBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiBhdjFFbmNvZGVy
c0Rpc2FsbG93ZWRMaXN0IHsgImF2MWVuYyJfcyB9OwotICAgIGF1dG8gYXYxRW5jb2RlckF2YWls
YWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6
OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hl
Y2tIYXJkd2FyZUNsYXNzaWZpZXI6OlllcywgbWFrZU9wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2Rl
cnNEaXNhbGxvd2VkTGlzdCkpKTsKKyAgICBhdXRvIGF2MUVuY29kZXJBdmFpbGFibGUgPSBmYWN0
b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRl
b0VuY29kZXIsICJ2aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVD
bGFzc2lmaWVyOjpZZXMsIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKGF2MUVuY29kZXJzRGlz
YWxsb3dlZExpc3QpKSk7CiAgICAgaWYgKGF2MUVuY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAg
bV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGZhbHNlKTsKICAgICAg
ICAgbV9lbmNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBmYWxzZSk7CkBAIC02
NjMsNyArNjYzLDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJl
c3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQ29uZmkKICAgICAgICAgYXV0byYgYXVk
aW9Db25maWd1cmF0aW9uID0gbWVkaWFDb25maWd1cmF0aW9uLmF1ZGlvLnZhbHVlKCk7CiAgICAg
ICAgIEdTVF9ERUJVRygiQ2hlY2tpbmcgJXMgc3VwcG9ydCBmb3IgYXVkaW8gY29uZmlndXJhdGlv
bjogXCIlc1wiICVzIGNoYW5uZWxzLCBiaXRyYXRlOiAlIiBHX0dVSU5UNjRfRk9STUFUICIgc2Ft
cGxlcmF0ZTogJXUiLCBjb25maWdMb2dTdHJpbmcsCiAgICAgICAgICAgICBhdWRpb0NvbmZpZ3Vy
YXRpb24uY29udGVudFR5cGUudXRmOCgpLmRhdGEoKSwgYXVkaW9Db25maWd1cmF0aW9uLmNoYW5u
ZWxzLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgICAgICBhdWRpb0NvbmZpZ3VyYXRpb24uYml0cmF0
ZS52YWx1ZU9yKDApLCBhdWRpb0NvbmZpZ3VyYXRpb24uc2FtcGxlcmF0ZS52YWx1ZU9yKDApKTsK
KyAgICAgICAgICAgIGF1ZGlvQ29uZmlndXJhdGlvbi5iaXRyYXRlLnZhbHVlX29yKDApLCBhdWRp
b0NvbmZpZ3VyYXRpb24uc2FtcGxlcmF0ZS52YWx1ZV9vcigwKSk7CiAgICAgICAgIGF1dG8gY29u
dGVudFR5cGUgPSBDb250ZW50VHlwZShhdWRpb0NvbmZpZ3VyYXRpb24uY29udGVudFR5cGUpOwog
ICAgICAgICBpc1N1cHBvcnRlZCA9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChjb25maWd1cmF0
aW9uLCBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuaAppbmRleCAwMDdmZjg4MDc2OWQ2MTA3NmMyZWQ5ZDY3
YjUxOTc2Mjg2NmViODc2Li5mNzc0OGU1ODFmYTY1MGE5ZTZkZTA5ZmI0MzUyM2EzOTE5MDA0ZjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oCkBAIC04NSw3ICs4
NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgR0xpc3QqIGZhY3RvcnkoVHlwZSkgY29uc3Q7CiAK
ICAgICAgICAgZW51bSBjbGFzcyBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciB7IE5vLCBZZXMgfTsK
LSAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBl
LCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNr
SGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93
ZWRMaXN0ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICAgICAgUmVnaXN0cnlMb29rdXBSZXN1
bHQgaGFzRWxlbWVudEZvck1lZGlhVHlwZShUeXBlLCBjb25zdCBjaGFyKiBjYXBzU3RyaW5nLCBD
aGVja0hhcmR3YXJlQ2xhc3NpZmllciA9IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpObywgT3B0
aW9uYWw8VmVjdG9yPFN0cmluZz4+IGRpc2FsbG93ZWRMaXN0ID0gc3RkOjpudWxsb3B0KSBjb25z
dDsKIAogICAgICAgICBHTGlzdCogYXVkaW9EZWNvZGVyRmFjdG9yaWVzIHsgbnVsbHB0ciB9Owog
ICAgICAgICBHTGlzdCogYXVkaW9QYXJzZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggOGY5NjlmZWVlMTJiZDBlMDU1Njk2Yzk0
NGM4NmIwZGIwZmRmNzQ0Zi4uOTFmOTJjYmJjY2M4YjI2ZWYwNzVjNzBjODU1MGY5YTg1YTg5ZTRl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaApAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IGZp
bmFsOwogICAgIFN0cmluZyB1dGkoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJy
ZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtX21pbWVUeXBlKTsgfQotICAgIE9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbCB7IHJldHVy
biBzaXplKCk7IH0KICAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdCBmaW5hbCB7IHJldHVybiBzYW1wbGVBdEluZGV4KGluZGV4KTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1NjZmYmUyNTBh
ZWE0MzkyNzBiMWRkMDYzY2RhNjY5YWM3MmM3NjE2Li4yYmFlZjJhNGVkMjQ5MTc0Mzg2MzgyODJl
MTdmYzJkOGEyOWJhMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogICAgIG1fcmVhZHlTdGF0
ZSA9IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKICAgICBtX3BsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICBtX2FyZVZvbHVtZUFuZE11dGVJbml0aWFsaXplZCA9
IGZhbHNlOwotICAgIG1faGFzVGFpbnRlZE9yaWdpbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2hh
c1RhaW50ZWRPcmlnaW4gPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1faXNEZWxheWluZ0xv
YWQpCiAgICAgICAgIGNvbW1pdExvYWQoKTsKQEAgLTM1NTgsNyArMzU1OCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRTdHJlYW1Wb2x1bWVFbGVtZW50KEdzdFN0cmVh
bVZvbHVtZSogdm9sdW1lCiBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkK
IHsKICAgICBpZiAoIXdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCAxOCwgMCkgJiYgIW1fZnBzU2lu
aykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHVpbnQ2NF90IHRvdGFsVmlkZW9GcmFtZXMgPSAwOwogICAgIHVpbnQ2NF90
IGRyb3BwZWRWaWRlb0ZyYW1lcyA9IDA7CkBAIC0zNTY3LDEwICszNTY3LDEwIEBAIE9wdGlvbmFs
PFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp2aWRlb1BsYXliYWNrCiAgICAgICAgIGdfb2JqZWN0X2dldChtX3ZpZGVvU2luay5nZXQoKSwg
InN0YXRzIiwgJnN0YXRzLm91dFB0cigpLCBudWxscHRyKTsKIAogICAgICAgICBpZiAoIWdzdF9z
dHJ1Y3R1cmVfZ2V0X3VpbnQ2NChzdGF0cy5nZXQoKSwgInJlbmRlcmVkIiwgJnRvdGFsVmlkZW9G
cmFtZXMpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF91aW50
NjQoc3RhdHMuZ2V0KCksICJkcm9wcGVkIiwgJmRyb3BwZWRWaWRlb0ZyYW1lcykpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9IGVsc2UgaWYgKG1fZnBzU2luaykgewogICAgICAgICB1bnNpZ25lZCByZW5kZXJl
ZEZyYW1lcywgZHJvcHBlZEZyYW1lczsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fZnBzU2luay5n
ZXQoKSwgImZyYW1lcy1yZW5kZXJlZCIsICZyZW5kZXJlZEZyYW1lcywgImZyYW1lcy1kcm9wcGVk
IiwgJmRyb3BwZWRGcmFtZXMsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDMzM2QwZTkzYzdhYWJhODAxNjA4NDMzOTVhMjFkY2Iz
MjZlMjIyZDUuLjgwMzkxZDkxNjc2NTQ1NDRhZWY1NWY4YTI0YWRmZDE1NWE2MDE1ZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTU1Niw3ICs1
NTYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDY0X3QgbV9yZWFkUG9zaXRpb25BdExh
c3REaWRMb2FkaW5nUHJvZ3Jlc3MgeyAwIH07CiAKICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbj4+IG1fb3JpZ2luczsKLSAgICBPcHRpb25hbDxib29sPiBtX2hhc1Rh
aW50ZWRPcmlnaW4geyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX2hhc1Rh
aW50ZWRPcmlnaW4geyBzdGQ6Om51bGxvcHQgfTsKIAogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
bV9mcHNTaW5rIHsgbnVsbHB0ciB9OwogICAgIHVpbnQ2NF90IG1fdG90YWxWaWRlb0ZyYW1lcyB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVNhbXBsZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKaW5kZXggNWQzZDAxYTI2OGY1
MDYxODE5OTUzNzdhNjEyNThkOWIwNjM5MjUzOC4uODU4MmNiNjYyNTA5YThkMmZiNTA3MjgxOTk1
NzIzMjFlYjEzNWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0cmVhbWVyLmgKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIFJlZjxNZWRpYVNhbXBsZT4gY3JlYXRlTm9uRGlzcGxh
eWluZ0NvcHkoKSBjb25zdCBvdmVycmlkZTsKICAgICBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9y
bVNhbXBsZSgpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0
ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICBSZWZQ
dHI8SlNDOjpVaW50OENsYW1wZWRBcnJheT4gZ2V0UkdCQUltYWdlRGF0YSgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0QXVkaW9TaW5rR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCmluZGV4IDVj
NjlmNzM3NjMzNGM2MDY2NmMwNDU5MTU5MTBlZWM4NjMyNmExMGIuLjI2Yjg2YTVkMDc1ZmE1NjBj
NWZhODlmNjQ1OTYyNjBhZTJiODExMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1Np
bmtHU3RyZWFtZXIuY3BwCkBAIC05MCwyMCArOTAsMjAgQEAgc3RydWN0IEF1ZGlvUGFja2V0SG9s
ZGVyIHsKICAgICB7CiAgICAgICAgIGZkID0gbWVtZmRfY3JlYXRlKCJ3cGUtYXVkaW8tYnVmZmVy
IiwgTUZEX0NMT0VYRUMpOwogICAgICAgICBpZiAoKmZkID09IC0xKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgaWYgKGZ0cnVuY2F0ZSgqZmQsIGJ1ZmZlci0+c2l6ZSgpKSA9PSAtMSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIHNzaXplX3QgYnl0ZXNXcml0dGVuID0gd3JpdGUoKmZkLCBidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuIDwgMCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbikg
IT0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAobHNlZWsoKmZkLCAw
LCBTRUVLX1NFVCkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCpmZCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL0NETVByb3h5Q2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCmluZGV4IDg5NmFiZGJkNjU2NTU5MjBh
MDgxZDg1MDU5MWFiZjNmZmRmMThmNTQuLmUzZDk3YTVjOWVkN2ZmYjE3NWExMzgwZWZlNWExYzIw
ZTEwODE0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5oCkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsb3NlR0NyeXB0SGFuZGxlKCk7CiAKICAgICAv
LyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byB1c2Ugc29tZXRoaW5nIGluIFdlYkNvcmUgZm9y
IGNyeXB0by4uLgotICAgIE9wdGlvbmFsPGdjcnlfY2lwaGVyX2hkX3Q+IG1fZ0NyeXB0SGFuZGxl
IHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5
cHRIYW5kbGUgeyBzdGQ6Om51bGxvcHQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuY3BwCmluZGV4IDE3ZGMxNjM0NDM3YzY0YjkxNDgwMzIzMDg2
ZjdkNTg3ZGE4ZjVhZWMuLjg1ZjdjZjRkNzg2NGFmODNkMjY1N2Y1YjcyNTY1MjFmNTY3NGM2ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNVGh1bmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcApAQCAtMzUyLDcgKzM1Miw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBpZiAocmVxdWVzdFR5cGUubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoZXJlIGFyZSBzaW1wbGVyIHdheXMgdG8gY29udmVydCBhIHNpbmdsZSBkaWdp
dCB0byBhIG51bWJlciB0aGFuIGNhbGxpbmcgcGFyc2VJbnRlZ2VyLgotICAgICAgICAgICAgbV90
eXBlID0gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5
cGU+KHBhcnNlSW50ZWdlcjxpbnQ+KHJlcXVlc3RUeXBlKS52YWx1ZU9yKDApKSk7CisgICAgICAg
ICAgICBtX3R5cGUgPSBzdGQ6Om1ha2Vfb3B0aW9uYWwoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVk
aWFLZXlNZXNzYWdlVHlwZT4ocGFyc2VJbnRlZ2VyPGludD4ocmVxdWVzdFR5cGUpLnZhbHVlX29y
KDApKSk7CiAgICAgICAgIH0KIAogICAgICAgICBtX3BheWxvYWQgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShwYXlsb2FkLmNoYXJhY3RlcnM4KCkgKyBvZmZzZXQsIHBheWxvYWQubGVuZ3RoKCkgLSBv
ZmZzZXQpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhm
YWxzZSwgbV9rZXlTdG9yZS5jb252ZXJ0VG9KU0tleVN0YXR1c1ZlY3RvcigpLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCBtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9y
KCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNpbmcgSlNP
TiByZXBvbnNlIG1lc3NhZ2VzIGlzIG11Y2ggY2xlYW5lciB0aGFuIHVzaW5nIHN0cmluZyBwcmVm
aXhlcywgSSBiZWxpZXZlIHRoZXJlCiAgICAgICAgICAgICAgICAgLy8gd2lsbCBldmVuIGJlIG90
aGVyIHBhcnRzIG9mIHRoZSBzcGVjIHdoZXJlIG5vdCBoYXZpbmcgc3RydWN0dXJlZCBkYXRhIHdp
bGwgYmUgYmFkLgpAQCAtNTc0LDE3ICs1NzQsMTcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkK
ICAgICAgICAgICAgICAgICAgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9ERUJVRygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogICAg
ICAgICAgICAgICAgICAgICBHU1RfTUVNRFVNUCgibWVzc2FnZSIsIG1lc3NhZ2UtPmRhdGFBc1VJ
bnQ4UHRyKCksIG1lc3NhZ2UtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwKKyAgICAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihN
ZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVxdWVzdCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV1RGTW92ZShtZXNzYWdlKSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBHU1RfRVJST1IoIm1l
c3NhZ2Ugb2Ygc2l6ZSAlenUgaW5jb3JyZWN0bHkgZm9ybWF0dGVkIiwgcmVzcG9uc2VNZXNzYWdl
ID8gcmVzcG9uc2VNZXNzYWdlLT5zaXplKCkgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1
Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6
RmFpbGVkKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBHU1RfRVJST1IoInVwZGF0ZSBsaWNlbnNlIHJlcG9ydGVkIGVycm9y
IHN0YXRlIik7Ci0gICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICAg
ICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgfQogICAgIH0pOwogICAgIGlmICgh
bV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fdXBk
YXRlKG1fc2Vzc2lvbi5nZXQoKSwgcmVzcG9uc2UtPmRhdGFBc1VJbnQ4UHRyKCksIHJlc3BvbnNl
LT5zaXplKCkpKQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1
bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayhtX2tleVN0b3JlLmNvbnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJl
OjpOb25lKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmNvbnZlcnRUb0pT
S2V5U3RhdHVzVmVjdG9yKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2luZyBKU09OIHJlcG9uc2UgbWVzc2Fn
ZXMgaXMgbXVjaCBjbGVhbmVyIHRoYW4gdXNpbmcgc3RyaW5nIHByZWZpeGVzLCBJIGJlbGlldmUg
dGhlcmUKICAgICAgICAgICAgICAgICAvLyB3aWxsIGV2ZW4gYmUgb3RoZXIgcGFydHMgb2YgdGhl
IHNwZWMgd2hlcmUgbm90IGhhdmluZyBzdHJ1Y3R1cmVkIGRhdGEgd2lsbCBiZSBiYWQuCkBAIC02
MDksMTEgKzYwOSwxMSBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNz
aW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAg
ICAgICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1l
c3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVz
c2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEdTVF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2Fn
ZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIHN0ZDo6bWFrZV9wYWlyKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS50eXBlT3Io
TWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlcXVlc3QpLAorICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjptYWtlX3BhaXIocGFy
c2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVx
dWVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1lc3NhZ2UpKSwgU3VjY2Vz
c1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgR1NUX0VSUk9SKCJtZXNzYWdlIG9m
IHNpemUgJXp1IGluY29ycmVjdGx5IGZvcm1hdHRlZCIsIHJlc3BvbnNlTWVzc2FnZSA/IHJlc3Bv
bnNlTWVzc2FnZS0+c2l6ZSgpIDogMCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTYyMSw3ICs2MjEsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgYXV0byByZXNwb25zZU1lc3NhZ2VT
aXplID0gcmVzcG9uc2VNZXNzYWdlID8gcmVzcG9uc2VNZXNzYWdlLT5zaXplKCkgOiAwOwogICAg
ICAgICAgICAgU3RyaW5nVmlldyByZXNwb25zZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocmVzcG9uc2VNZXNzYWdlRGF0YSksIHJlc3BvbnNlTWVzc2FnZVNpemUpOwogICAgICAgICAg
ICAgR1NUX0VSUk9SKCJzZXNzaW9uICVzIG5vdCBsb2FkZWQsIHJlYXNvbiAlcyIsIG1fc2Vzc2lv
bklELnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAg
Y2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vz
c1ZhbHVlOjpGYWlsZWQsIHNlc3Npb25Mb2FkRmFpbHVyZUZyb21UaHVuZGVyKHJlc3BvbnNlKSk7
CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgc2Vzc2lvbkxvYWRGYWlsdXJlRnJvbVRodW5k
ZXIocmVzcG9uc2UpKTsKICAgICAgICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8
IG1fc2Vzc2lvbklELmlzRW1wdHkoKSB8fCBvcGVuY2RtX3Nlc3Npb25fbG9hZChtX3Nlc3Npb24u
Z2V0KCkpKQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3Jl
LmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEY6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3Jl
LmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
IFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTY1NywxMiAr
NjU3LDEyIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRh
dGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgR1NUX1dBUk5JTkcoIm1lc3NhZ2Ugb2Ygc2l6ZSAlenUg
aW5jb3JyZWN0bHkgZm9ybWF0dGVkIGFzIHNlc3Npb24gJXMgcmVtb3ZhbCBhbnN3ZXIiLCBidWZm
ZXIgPyBidWZmZXItPnNpemUoKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3Nlc3Np
b25JRC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobV9rZXlT
dG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBXVEY6Om51bGxv
cHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2so
bV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6OkludGVybmFsRXJyb3IpLCBzdGQ6
Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygiY291
bGQgbm90IHJlbW92ZSBzZXNzaW9uICVzIiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6
SW50ZXJuYWxFcnJvciksIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAg
ICAgICAgICAgY2FsbGJhY2sobV9rZXlTdG9yZS5hbGxLZXlzQXMoTWVkaWFLZXlTdGF0dXM6Oklu
dGVybmFsRXJyb3IpLCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAg
ICAgfQogICAgIH0pOwogICAgIGlmICghbV9zZXNzaW9uIHx8IG1fc2Vzc2lvbklELmlzRW1wdHko
KSB8fCBvcGVuY2RtX3Nlc3Npb25fcmVtb3ZlKG1fc2Vzc2lvbi5nZXQoKSkpCkBAIC02NzgsNyAr
Njc4LDcgQEAgT3B0aW9uYWw8Q0RNSW5zdGFuY2VUaHVuZGVyJj4gQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6Y2RtSW5zdGFuY2VUaHVuZGVyKCkgY28KIHsKICAgICBhdXRvIGluc3RhbmNlID0g
Y2RtSW5zdGFuY2VQcm94eSgpOwogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENETUluc3RhbmNlVGh1bmRlciY+KCppbnN0YW5jZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0NvbXBsZXhUZXh0
Q29udHJvbGxlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0NvbXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAppbmRleCBmNzMxN2Jh
MWMwOTU1NWQ3MWUxNTBiN2IwYjQ4OTJhMzU5NTk0M2U1Li40MDFjMjdlYmI3OGFkNmE5M2MyOWI0
ZWQzZTliMjAwMjYxZWUyMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250
cm9sbGVySGFyZkJ1enouY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIE9wdGlvbmFsPFVT
Y3JpcHRDb2RlPiBjaGFyYWN0ZXJTY3JpcHQoVUNoYXIzMiBjaGFyYWN0ZXIpCiAgICAgVUVycm9y
Q29kZSBlcnJvckNvZGUgPSBVX1pFUk9fRVJST1I7CiAgICAgVVNjcmlwdENvZGUgc2NyaXB0ID0g
dXNjcmlwdF9nZXRTY3JpcHQoY2hhcmFjdGVyLCAmZXJyb3JDb2RlKTsKICAgICBpZiAoVV9GQUlM
VVJFKGVycm9yQ29kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNjcmlwdDsKIH0KIApAQCAtNDIyLDExICs0
MjIsMTEgQEAgc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4dFJ1bihjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsK
ICAgICB1bnNpZ25lZCBjbHVzdGVyTGVuZ3RoID0gMDsKICAgICBpZiAoIXRleHRJdGVyYXRvci5j
b25zdW1lKGNoYXJhY3RlciwgY2x1c3Rlckxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGN1cnJlbnRT
Y3JpcHQgPSBjaGFyYWN0ZXJTY3JpcHQoY2hhcmFjdGVyKTsKICAgICBpZiAoIWN1cnJlbnRTY3Jp
cHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICB1bnNpZ25lZCBzdGFydEluZGV4ID0gb2Zmc2V0OwogICAgIGZvciAodGV4
dEl0ZXJhdG9yLmFkdmFuY2UoY2x1c3Rlckxlbmd0aCk7IHRleHRJdGVyYXRvci5jb25zdW1lKGNo
YXJhY3RlciwgY2x1c3Rlckxlbmd0aCk7IHRleHRJdGVyYXRvci5hZHZhbmNlKGNsdXN0ZXJMZW5n
dGgpKSB7CkBAIC00MzUsNyArNDM1LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhCUnVuPiBmaW5kTmV4
dFJ1bihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKIAogICAg
ICAgICBhdXRvIG5leHRTY3JpcHQgPSBjaGFyYWN0ZXJTY3JpcHQoY2hhcmFjdGVyKTsKICAgICAg
ICAgaWYgKCFuZXh0U2NyaXB0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gwqc1LjEgSGFuZGxp
bmcgQ2hhcmFjdGVycyB3aXRoIHRoZSBDb21tb24gU2NyaXB0IFByb3BlcnR5LgogICAgICAgICAv
LyBQcm9ncmFtcyBtdXN0IHJlc29sdmUgYW55IG9mIHRoZSBzcGVjaWFsIFNjcmlwdCBwcm9wZXJ0
eSB2YWx1ZXMsIHN1Y2ggYXMgQ29tbW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaXNvL0lTT0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pc28vSVNPQm94LmNwcAppbmRleCBlMGE0NDY2YmJkZjU1MjBhYzMzOGI3MTRlNTBi
NzNlNzgyNjI3NzUwLi5jMDZlM2E2MzM4ODYwZjExZWIwZWJjZmE0MzhkMzUyMDI2NmY1ZDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPQm94LmNwcApA
QCAtMzYsMTQgKzM2LDE0IEBAIElTT0JveDo6UGVla1Jlc3VsdCBJU09Cb3g6OnBlZWtCb3goRGF0
YVZpZXcmIHZpZXcsIHVuc2lnbmVkIG9mZnNldCkKIHsKICAgICB1aW50NjRfdCBzaXplID0gMDsK
ICAgICBpZiAoIWNoZWNrZWRSZWFkPHVpbnQzMl90PihzaXplLCB2aWV3LCBvZmZzZXQsIEJpZ0Vu
ZGlhbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBGb3VyQ0MgdHlwZSA9IHsgdWludDMyX3QgeyAwIH0gfTsKICAgICBp
ZiAoIWNoZWNrZWRSZWFkPHVpbnQzMl90Pih0eXBlLCB2aWV3LCBvZmZzZXQsIEJpZ0VuZGlhbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoc2l6ZSA9PSAxICYmICFjaGVja2VkUmVhZDx1aW50NjRfdD4oc2l6ZSwg
dmlldywgb2Zmc2V0LCBCaWdFbmRpYW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKCFzaXplKQogICAgICAg
ICBzaXplID0gdmlldy5ieXRlTGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rp
b25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKaW5kZXggMTU4ODljNGVhNTQ4NWZmMmM2YjUy
MDRkMzJlODM4ZjJhYzM4OTMxNi4uNzZjNTRkZjEwZWEyNDUzMTM4MjNhMzVjMjI1M2Q5NWFkMDJh
NGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRl
ckJveC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBJU09Q
cm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OnBlZWtTeXN0ZW1JRChKU0MKIHsKICAg
ICBhdXRvIHBlZWtSZXN1bHQgPSBJU09Cb3g6OnBlZWtCb3godmlldywgb2Zmc2V0KTsKICAgICBp
ZiAoIXBlZWtSZXN1bHQgfHwgcGVla1Jlc3VsdC52YWx1ZSgpLmZpcnN0ICE9IGJveFR5cGVOYW1l
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3ggcHNzaEJv
eDsKICAgICBwc3NoQm94LnBhcnNlKHZpZXcsIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKaW5kZXggN2ZhNjNjNzQzMTY1NjAz
NWZlZjA5N2FmOWUxYjJkNDllNWZhNTNmZS4uZTIwYjE5MTc2YzkzZjMyMjZhMjZmYjNmZTA3MDdi
YjBkNzNkZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1ZUVEN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lz
by9JU09WVFRDdWUuaApAQCAtNzUsMzcgKzc1LDM3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9u
YWw8TWVkaWFUaW1lPiBwcmVzZW50YXRpb25UaW1lOwogICAgICAgICBkZWNvZGVyID4+IHByZXNl
bnRhdGlvblRpbWU7CiAgICAgICAgIGlmICghcHJlc2VudGF0aW9uVGltZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIg
Pj4gZHVyYXRpb247CiAgICAgICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUlEOwogICAgICAgICBkZWNvZGVyID4+IHNvdXJjZUlE
OwogICAgICAgICBpZiAoIXNvdXJjZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmlu
Zz4gb3JpZ2luYWxTdGFydFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxTdGFydFRp
bWU7CiAgICAgICAgIGlmICghb3JpZ2luYWxTdGFydFRpbWUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxTdHJpbmc+IHNldHRpbmdzOwogICAgICAgICBkZWNvZGVyID4+IHNldHRpbmdz
OwogICAgICAgICBpZiAoIXNldHRpbmdzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
U3RyaW5nPiBjdWVUZXh0OwogICAgICAgICBkZWNvZGVyID4+IGN1ZVRleHQ7CiAgICAgICAgIGlm
ICghY3VlVGV4dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAg
V1RGTW92ZSgqcHJlc2VudGF0aW9uVGltZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KaW5kZXggODlkODgyYzU3ZjQ3NjFlNTQ2ZGQ0MjQ3
MDFmMzNkMmZiMjAzMWYzNC4uMDdhYWU4YWZmY2IyNDg1MzA5OGRiNmEwMWQxNWNjOWQyOWMxNGM1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbQpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1h
a2VTaW1wbGVDb2xvckZyb21OU0NvbG9yKE5TQ29sb3IgKmNvbG9yKQogICAgIC8vIEZJWE1FOiBF
eHRlbmRlZENvbG9yIC0gbmVlZHMgdG8gaGFuZGxlIGNvbG9yIHNwYWNlcy4KIAogICAgIGlmICgh
Y29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBDR0Zsb2F0IHJlZENvbXBvbmVudDsKICAgICBDR0Zsb2F0IGdyZWVu
Q29tcG9uZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0xlZ2FjeURpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApp
bmRleCA0ZTgxMmM3MDA1OTMwYzRiNDdkNWQxNDNhMGJkZGU4NTgxMTExZmM3Li5iNjVkODE3NzM3
OTM2NDY2YTBlOTBkNWEwYzcxNzZhYzQxODkzYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxh
eVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgTGVnYWN5RGlz
cGxheVJlZnJlc2hNb25pdG9yTWFjOjpzdG9wTm90aWZpY2F0aW9uTWVjaGFuaXNtKCkKIE9wdGlv
bmFsPEZyYW1lc1BlclNlY29uZD4gTGVnYWN5RGlzcGxheVJlZnJlc2hNb25pdG9yTWFjOjpkaXNw
bGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCgpCiB7CiAgICAgaWYgKCFlbnN1cmVEaXNwbGF5TGlu
aygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAKICAgICByZXR1cm4gbm9taW5hbEZyYW1lc1BlclNlY29uZEZyb21E
aXNwbGF5TGluayhtX2Rpc3BsYXlMaW5rKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wuY3BwCmluZGV4IGJkZjBlYzI1N2Y4NzFhMjU1NzJjZWU3ZGZhODA4MTc5Njg0MTliZTgu
LjgyNTFiZWUyMjdiZjY5M2ExMTFmYTFkMGI3NGYyODhhYjllOGY2NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMjMxLDI1ICsyMzEsMjUgQEAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFJlbmRlcmluZ1Jlc3Vs
dHNUb1BpeGVsQnVmZmUKIHsKICAgICAvLyBSZWFkaW5nIHByZW11bHRpcGxpZWQgYWxwaGEgd291
bGQgaW52b2x2ZSB1bnByZW11bHRpcGx5aW5nLCB3aGljaCBpcyBsb3NzeS4KICAgICBpZiAoY29u
dGV4dEF0dHJpYnV0ZXMoKS5wcmVtdWx0aXBsaWVkQWxwaGEpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlYWRS
ZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKIH0KIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5n
KCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVhZFJlbmRl
cmluZ1Jlc3VsdHMoKTsKIH0KIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpCiB7CiAgICAgaWYg
KCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlYWRDb21wb3NpdGVkUmVzdWx0cygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4
IGNlNGMwZmI5YTIzN2FjOGM3MmEwYzIzZjc5ZjBjMDIzNTMwZDkwYWIuLjE4NDFjNTFlYzcyMTVi
OTk1M2M3ZmYyNDI0OTYyYzJhNjc4M2IyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Zm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVz
dG9yZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDgwYjlmNWU2Nzc0NmZlNDVmODJmMDZmMWEwN2FlYjli
ZDU4YzNiNTEuLjM3ZTRmODMzNjM4NDQ4YTRjYTI3NGQwZDUxNzg1YzJkNzQ3YWEyMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcApAQCAtOTE5LDEy
ICs5MTksMTIgQEAgT3B0aW9uYWw8U3RyaW5nPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFw
cGVkU3ltYm9sSW5TaGFkZXJTb3VyY2VNYXAoUGxhdGZvcm0KIHsKICAgICBhdXRvIHJlc3VsdCA9
IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hh
ZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgYXV0byYgc3ltYm9sTWFwID0gcmVz
dWx0LT52YWx1ZS5zeW1ib2xNYXAoc3ltYm9sVHlwZSk7CiAgICAgYXV0byBzeW1ib2xFbnRyeSA9
IHN5bWJvbE1hcC5maW5kKG5hbWUpOwogICAgIGlmIChzeW1ib2xFbnRyeSA9PSBzeW1ib2xNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvJiBtYXBwZWROYW1lID0gc3ltYm9sRW50cnktPnZhbHVlLmdl
dCgpLm1hcHBlZE5hbWU7CiAgICAgcmV0dXJuIFN0cmluZyhtYXBwZWROYW1lLmNfc3RyKCksIG1h
cHBlZE5hbWUubGVuZ3RoKCkpOwpAQCAtOTc3LDE0ICs5NzcsMTQgQEAgT3B0aW9uYWw8U3RyaW5n
PiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xJblNoYWRlclNvdXJjZU1h
cChQbGF0Zm8KIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hh
ZGVyKTsKICAgICBpZiAocmVzdWx0ID09IG1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgY29uc3QgYXV0byYgc3ltYm9sTWFwID0gcmVzdWx0LT52YWx1ZS5zeW1ib2xNYXAoc3ltYm9s
VHlwZSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzeW1ib2xFbnRyeSA6IHN5bWJvbE1hcCkgewog
ICAgICAgICBpZiAobmFtZSA9PSBzeW1ib2xFbnRyeS52YWx1ZS5nZXQoKS5tYXBwZWROYW1lLmNf
c3RyKCkpCiAgICAgICAgICAgICByZXR1cm4gc3ltYm9sRW50cnkua2V5OwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6b3JpZ2luYWxTeW1ib2xOYW1lKFBsYXRmb3JtR0xP
YmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5bWJvbFR5cGUsIGNvbnN0IFN0
cmluZyYgbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRl
eCA3ZmYxMTMyYjBjNzViYmE2OWUxOGMyOTFkNWFjNzBmZWYwODM3ZDViLi4yMjU1NjhjNjQ1ZDZh
MzQ1MjQ4ZWU5OWVjZTQ5NDY5NTc0M2NiMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9y
bWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgR0xpbnQgcGFja0FsaWdubWVudCA9IDQ7CiAgICAgYm9vbCBtdXN0UmVzdG9y
ZVBhY2tBbGlnbm1lbnQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXgg
ODc2NDBmNmY0N2Q1MTM2NGRkODYxNWQ4MDEzNmIzMGMxY2FjOThmNC4uYjAwYjFjOGViZTRmZWE5
MTVkYjk3NWE4YThmZWZkNzdlZDZiOWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
QEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5k
Q2hpbGRyZW5XaXRoUmVwbGljYShUZXh0dXJlTWFwcGVyUGFpbnRPcHRpbwogVHJhbnNmb3JtYXRp
b25NYXRyaXggVGV4dHVyZU1hcHBlckxheWVyOjpyZXBsaWNhVHJhbnNmb3JtKCkKIHsKICAgICBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgobV9zdGF0ZS5yZXBsaWNhTGF5ZXItPm1fbGF5ZXJU
cmFuc2Zvcm1zLmNvbWJpbmVkKQotICAgICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMu
Y29tYmluZWQuaW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOworICAg
ICAgICAubXVsdGlwbHkobV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQuaW52ZXJzZSgpLnZhbHVl
X29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVzb2x2ZU92
ZXJsYXBzKGNvbnN0IEludFJlY3QmIG5ld1JlZ2lvbiwgUmVnaW9uJiBvdmVybGFwUmVnaW9uLCBS
ZWdpb24mIG5vbk92ZXJsYXBSZWdpb24pCkBAIC03NDcsMTUgKzc0NywxNSBAQCBib29sIFRleHR1
cmVNYXBwZXJMYXllcjo6c3luY0FuaW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQogICAgIE5p
Y29zaWE6OkFuaW1hdGlvbjo6QXBwbGljYXRpb25SZXN1bHQgYXBwbGljYXRpb25SZXN1bHRzOwog
ICAgIG1fYW5pbWF0aW9ucy5hcHBseShhcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUpOwogCi0gICAg
bV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0gPSBhcHBsaWNhdGlvblJlc3VsdHMudHJh
bnNmb3JtLnZhbHVlT3IobV9zdGF0ZS50cmFuc2Zvcm0pOwotICAgIG1fY3VycmVudE9wYWNpdHkg
PSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1ZU9yKG1fc3RhdGUub3BhY2l0eSk7Ci0g
ICAgbV9jdXJyZW50RmlsdGVycyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZhbHVlT3Io
bV9zdGF0ZS5maWx0ZXJzKTsKKyAgICBtX2xheWVyVHJhbnNmb3Jtcy5sb2NhbFRyYW5zZm9ybSA9
IGFwcGxpY2F0aW9uUmVzdWx0cy50cmFuc2Zvcm0udmFsdWVfb3IobV9zdGF0ZS50cmFuc2Zvcm0p
OworICAgIG1fY3VycmVudE9wYWNpdHkgPSBhcHBsaWNhdGlvblJlc3VsdHMub3BhY2l0eS52YWx1
ZV9vcihtX3N0YXRlLm9wYWNpdHkpOworICAgIG1fY3VycmVudEZpbHRlcnMgPSBhcHBsaWNhdGlv
blJlc3VsdHMuZmlsdGVycy52YWx1ZV9vcihtX3N0YXRlLmZpbHRlcnMpOwogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgIC8vIENhbGN1bGF0ZSBsb2NhbFRyYW5zZm9ybSA1MG1z
IGluIHRoZSBmdXR1cmUuCiAgICAgTmljb3NpYTo6QW5pbWF0aW9uOjpBcHBsaWNhdGlvblJlc3Vs
dCBmdXR1cmVBcHBsaWNhdGlvblJlc3VsdHM7CiAgICAgbV9hbmltYXRpb25zLmFwcGx5S2VlcGlu
Z0ludGVybmFsU3RhdGUoZnV0dXJlQXBwbGljYXRpb25SZXN1bHRzLCB0aW1lICsgNTBfbXMpOwot
ICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtID0gZnV0dXJlQXBwbGlj
YXRpb25SZXN1bHRzLnRyYW5zZm9ybS52YWx1ZU9yKG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJh
bnNmb3JtKTsKKyAgICBtX2xheWVyVHJhbnNmb3Jtcy5mdXR1cmVMb2NhbFRyYW5zZm9ybSA9IGZ1
dHVyZUFwcGxpY2F0aW9uUmVzdWx0cy50cmFuc2Zvcm0udmFsdWVfb3IobV9sYXllclRyYW5zZm9y
bXMubG9jYWxUcmFuc2Zvcm0pOwogI2VuZGlmCiAKICAgICByZXR1cm4gYXBwbGljYXRpb25SZXN1
bHRzLmhhc1J1bm5pbmdBbmltYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBlODNiZjJkYjQ4NzE2Yjc3NWM1
M2E3OWZhZDU5MTY2ZWY3MzUwOWZlLi44NDQ1MjA2ZGZkZTc5ZWNhNzJhZTQ0OTU3YjdjODFlNTNj
MGM5Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtNzcyLDcgKzc3Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAv
LyBDYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgdGhlIGxheWVyIHRyYW5zZm9ybWF0aW9uLiBUaGUg
aW52ZXJzZSB0cmFuc2Zvcm0gd2lsbCBoYXZlIHRoZSBpbnZlcnNlIG9mIHRoZQogICAgICAgICAv
LyBzY2FsZUZhY3RvciBhcHBsaWVkLCBzbyB3ZSBuZWVkIHRvIHNjYWxlIGl0IGJhY2suCi0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2UgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsKKyAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkuc2NhbGUobV9jb250ZW50c1NjYWxlKTsK
IAogICAgICAgICAvLyBBcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm0gdG8gdGhlIHZpc2libGUg
cmVjdGFuZ2xlLCBzbyB3ZSBoYXZlIHRoZSB2aXNpYmxlIHJlY3RhbmdsZSBpbiBsYXllciBjb29y
ZGluYXRlcy4KICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBpbnZlcnNlLmNsYW1wZWRCb3VuZHNP
ZlByb2plY3RlZFF1YWQoRmxvYXRRdWFkKG1fdmlzaWJsZVJlY3QpKTsKQEAgLTEwNjAsNyArMTA2
MCw3IEBAIEludFJlY3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjp0cmFuc2Zvcm1lZFZpc2li
bGVSZWN0KCkKICAgICAvLyBSZXR1cm4gYSBwcm9qZWN0aW9uIG9mIHRoZSB2aXNpYmxlIHJlY3Qg
KHN1cmZhY2UgY29vcmRpbmF0ZXMpIG9udG8gdGhlIGxheWVyJ3MgcGxhbmUgKGxheWVyIGNvb3Jk
aW5hdGVzKS4KICAgICAvLyBUaGUgcmVzdWx0aW5nIHF1YWQgbWlnaHQgYmUgc3F1ZXdlZCBhbmQg
dGhlIHZpc2libGUgcmVjdCBpcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoaXMgcXVhZCwKICAgICAv
LyBzbyBpdCBtaWdodCBzcHJlYWQgZnVydGhlciB0aGFuIHRoZSByZWFsIHZpc2libGUgYXJlYSAo
YW5kIHRoZW4gZXZlbiBtb3JlIGFtcGxpZmllZCBieSB0aGUgY292ZXIgcmVjdCBtdWx0aXBsaWVy
KS4KLSAgICBBU1NFUlQobV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zv
cm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7
CisgICAgQVNTRVJUKG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9PSBtX2xheWVyVHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsK
ICAgICBGbG9hdFJlY3QgcmVjdCA9IG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybS5jbGFtcGVkQm91
bmRzT2ZQcm9qZWN0ZWRRdWFkKEZsb2F0UXVhZChtX2Nvb3JkaW5hdG9yLT52aXNpYmxlQ29udGVu
dHNSZWN0KCkpKTsKICAgICBjbGFtcFRvQ29udGVudHNSZWN0SWZSZWN0SXNJbmZpbml0ZShyZWN0
LCBzaXplKCkpOwogICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpOwpAQCAtMTM0MCw3
ICsxMzQwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVUcmFuc2Zv
cm1lZFZpc2libGVSZWN0KCkKICAgICBtX2xheWVyVHJhbnNmb3JtLnNldENoaWxkcmVuVHJhbnNm
b3JtKGNoaWxkcmVuVHJhbnNmb3JtKCkpOwogICAgIG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZVRy
YW5zZm9ybXMocGFyZW50KCkgPyBkb3duY2FzdDxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KCpw
YXJlbnQoKSkubV9sYXllclRyYW5zZm9ybS5jb21iaW5lZEZvckNoaWxkcmVuKCkgOiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKIAotICAgIG1fY2FjaGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5
ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKKyAgICBtX2NhY2hlZEludmVyc2VUcmFuc2Zvcm0gPSBtX2xheWVyVHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwog
CiAgICAgLy8gVGhlIGNvbWJpbmVkIHRyYW5zZm9ybSB3aWxsIGJlIHVzZWQgaW4gdGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdC4KICAgICBzZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9BZmZpbmVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCmluZGV4IDNjMmNjMmFmYzlhYjg3ZjQxMjdi
YmUzMmJhZjY0MTAwMDlhYWQ4YTMuLmQzY2Y4MTAwMzllNjI2YjAzYTZlNTc3ZjM4MjEwYmQ0NGIw
YjU1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IEFmZmluZVRyYW5zZm9ybTo6aW52ZXJzZSgpIGNv
bnN0CiB7CiAgICAgZG91YmxlIGRldGVybWluYW50ID0gZGV0KG1fdHJhbnNmb3JtKTsKICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUoZGV0ZXJtaW5hbnQpIHx8IGRldGVybWluYW50ID09IDApCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gcmVzdWx0OwogICAgIGlmIChpc0lkZW50aXR5T3JUcmFuc2xh
dGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCmluZGV4IDM2MDdkOGFlNWE1MjZk
MjA4YzU1NWM2MGYyMmM0YmIxYTNlMzNkODQuLjdkNjQxMzBiOWI4OWY4MDI0ZDk1MTkxZDIyOWM5
ODM1Y2NjOTUyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwCkBAIC0xNzAsNyArMTcw
LDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xh
bXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rpb24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rp
b24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5tYXBQb2ludChwb2lu
dCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVl
T3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVk
KTsKKyAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7
CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFt
cGVkKSBjb25zdApAQCAtMTg5LDcgKzE4OSw3IEBAIE9wdGlvbmFsPEZsb2F0UXVhZD4gVHJhbnNm
b3JtU3RhdGU6Om1hcHBlZFNlY29uZGFyeVF1YWQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAg
ICAgICAgKndhc0NsYW1wZWQgPSBmYWxzZTsKIAogICAgIGlmICghbV9sYXN0UGxhbmFyU2Vjb25k
YXJ5UXVhZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIEZsb2F0UXVhZCBxdWFkID0gKm1fbGFzdFBsYW5hclNlY29uZGFy
eVF1YWQ7CiAgICAgbWFwUXVhZChxdWFkLCBtX2RpcmVjdGlvbiwgd2FzQ2xhbXBlZCk7CkBAIC0x
OTksNyArMTk5LDcgQEAgT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVk
U2Vjb25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogdm9pZCBUcmFuc2Zvcm1TdGF0
ZTo6c2V0TGFzdFBsYW5hclNlY29uZGFyeVF1YWQoY29uc3QgT3B0aW9uYWw8RmxvYXRRdWFkPiYg
cXVhZCkKIHsKICAgICBpZiAoIXF1YWQpIHsKLSAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTIyMCw3ICsy
MjAsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBRdWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJh
bnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZU9yKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAg
IHF1YWQgPSBtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CiB9CiAKIHZv
aWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
VHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0LCBib29sKiB3CiAgICAgICAgICAgICAgICAgbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCA9IHQubWFwUXVhZCgqbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNm
b3JtID0gdC5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZh
bHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkK
ICAgICAgICAgICAgIG1fbGFzdFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0
UG9pbnQobV9sYXN0UGxhbmFyUG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
Zm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGIyZWMxNDU4NGI1NmMwNmM4
Njg4YTc1ODZiOTQwYTI2ODIxZDgwOWMuLjhhYTMzZThlNjE5ZWJkMDMwMmU1ODNhNTJjMzcxZDU1
YzM2NzNhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0x
NTkxLDcgKzE1OTEsNyBAQCBPcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OmludmVyc2UoKSBjb25zdAogICAgICAgICBkb3VibGUgZiA9IG00MigpOwog
ICAgICAgICBkb3VibGUgZGV0ZXJtaW5hbnQgPSBhICogZCAtIGIgKiBjOwogICAgICAgICBpZiAo
ZmFicyhkZXRlcm1pbmFudCkgPCBTTUFMTF9OVU1CRVIpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBk
b3VibGUgaW52ZXJzZURldGVybWluYW50ID0gMSAvIGRldGVybWluYW50OwogICAgICAgICByZXR1
cm4ge3sKQEAgLTE2MDgsNyArMTYwOCw3IEBAIE9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4
PiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJzZSgpIGNvbnN0CiAgICAgLy8gRklYTUU6IFVz
ZSBMVSBkZWNvbXBvc2l0aW9uIHRvIGFwcGx5IHRoZSBpbnZlcnNlIGluc3RlYWQgb2YgY2FsY3Vs
YXRpbmcgdGhlIGludmVyc2UgZXhwbGljaXRseS4KICAgICAvLyBDYWxjdWxhdGluZyB0aGUgaW52
ZXJzZSBvZiBhIDR4NCBtYXRyaXggdXNpbmcgY29mYWN0b3JzIGlzIG51bWVyaWNhbGx5IHVuc3Rh
YmxlIGFuZCB1bm5lY2Vzc2FyeSB0byBhcHBseSB0aGUgaW52ZXJzZSB0cmFuc2Zvcm1hdGlvbiB0
byBhIHBvaW50LgogICAgIGlmICghV2ViQ29yZTo6aW52ZXJzZShtX21hdHJpeCwgaW52TWF0Lm1f
bWF0cml4KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpbnZNYXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ3Yjk3
MTNlZWMzZGI4OWI1ZGU5ZWQ1ZGZlMjVmMWRkYmJjNjZlYTcuLjgxNDVjNDdmZjkxZDg3YWQ2NDRk
ZDA0ZGEyN2JkNzUxZTEzZmFmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC03MTQsNyArNzE0LDcgQEAgT3B0
aW9uYWw8QVNDSUlMaXRlcmFsPiBGb250Q2FjaGU6OnBsYXRmb3JtQWx0ZXJuYXRlRmFtaWx5TmFt
ZShjb25zdCBTdHJpbmcmIGZhbWkKICAgICAgICAgICAgIHJldHVybiAiTWljcm9zb2Z0IFNhbnMg
U2VyaWYiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCmluZGV4IDBmMzM0MzA5MmY1OTFiNzYyZGJhMTM2MmU4MGNkYWQ0NzA2YTc0ZDEuLmI3Zjg0
MmI2OTc2YmMwZWVhN2MzMDdjNzJkYmNjZjBhZDlkYTRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIFJlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXJE
aXJlY3QyRDo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKIAogT3B0aW9uYWw8SW50UG9pbnQ+IElt
YWdlRGVjb2RlckRpcmVjdDJEOjpob3RTcG90KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEludFNpemUgSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQ6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xl
dmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CkBAIC0xNzQsNyArMTc0LDcgQEAgSW1hZ2VEZWNv
ZGVyOjpGcmFtZU1ldGFkYXRhIEltYWdlRGVjb2RlckRpcmVjdDJEOjpmcmFtZU1ldGFkYXRhQXRJ
bmRleChzaXplX3QpIGMKICAgICBQcm9wVmFyaWFudEluaXQoJnZhbHVlKTsKICAgICBociA9IG1l
dGFkYXRhLT5HZXRNZXRhZGF0YUJ5TmFtZShMIlN5c3RlbS5QaG90by5PcmllbnRhdGlvbiIsICZ2
YWx1ZSk7CiAgICAgaWYgKFNVQ0NFRURFRChocikpCi0gICAgICAgIHJldHVybiB7IEltYWdlT3Jp
ZW50YXRpb24oc3RhdGljX2Nhc3Q8SW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24+KHZhbHVl
LnVpVmFsKSksIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBJbWFnZU9yaWVudGF0
aW9uKHN0YXRpY19jYXN0PEltYWdlT3JpZW50YXRpb246Ok9yaWVudGF0aW9uPih2YWx1ZS51aVZh
bCkpLCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFn
ZURlY29kZXIuaAppbmRleCA1N2MxMmZjMTM2NjljOGJhMDE5M2FkNmM1MTlmOWRjNTYxYmJkNDgz
Li45OWQ2YTIxZTIxODcwNmVkOTdlYjcxOWEyY2Q1MzYwYmEzYzA5NjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0
aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50
CiAgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCi0gICAg
T3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXVEY6
Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKaW5kZXggNzQzMzdmMTUyNDRmYjIyZDBmZWZmNTFmMWVmZmYxZGM5NjljY2QxMi4uYzE4ZDI1
Y2ZlNmIyMThmNGI2OGI4MjYzOWE4MGZkNGI0MzFkYjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBPcHRpb25hbDxJbnRQb2ludD4gSUNPSW1hZ2VE
ZWNvZGVyOjpob3RTcG90KCkgY29uc3QKIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29k
ZXI6OmhvdFNwb3RBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXgg
Pj0gbV9kaXJFbnRyaWVzLnNpemUoKSB8fCBtX2ZpbGVUeXBlICE9IENVUlNPUikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBtX2RpckVudHJpZXNbaW5kZXhdLm1faG90U3BvdDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuaAppbmRleCAyMGNiN2I2ZjdiOTkwZjI1MjQ5NGFiMWQ5ZDNiYTc4NDhlZTlkMTdkLi4y
ZDlmOWEzM2IxNWEyMDUyODQzYmM2ZmYzNjI4NmMwZDIyN2U0OTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3VsZCBiZSBk
ZWNvZGVkLgogICAgIGJvb2wgcHJvY2Vzc0RpcmVjdG9yeUVudHJpZXMoKTsKIAotICAgIC8vIFJl
dHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0
aGVyZSBpcyBub25lLgorICAgIC8vIFJldHVybnMgdGhlIGhvdC1zcG90IGZvciB8aW5kZXh8LCBy
ZXR1cm5zIHN0ZDo6bnVsbG9wdCBpZiB0aGVyZSBpcyBub25lLgogICAgIE9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90QXRJbmRleChzaXplX3QpIGNvbnN0OwogCiAgICAgLy8gUmVhZHMgYW5kIHJl
dHVybnMgYSBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgY3VycmVudCBvZmZzZXQgaW50bwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNoZS5oCmluZGV4IDlhMmFk
YWJmZTAwNGRhMzlmNWMxYzgyYzMxOGJkYzgzNTRiYmM0NDkuLjU3NjE2ZTgxNTRjN2Y4YWUyMGNh
MmIxYWIyMzQ0ZmNkNWE2NDIyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9MZWdhY3lUaWxlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
TGVnYWN5VGlsZUNhY2hlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgdGlsZUNhcGFjaXR5Rm9yR3JpZChMZWdhY3lUaWxlR3JpZCopOwogICAgIENvbG9yIGNvbG9y
Rm9yR3JpZFRpbGVCb3JkZXIoTGVnYWN5VGlsZUdyaWQqKSBjb25zdDsKICAgICBib29sIHNldE92
ZXJyaWRlVmlzaWJsZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBjbGVhck92ZXJy
aWRlVmlzaWJsZVJlY3QoKSB7IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdCA9IFdURjo6bnVsbG9wdDsg
fQorICAgIHZvaWQgY2xlYXJPdmVycmlkZVZpc2libGVSZWN0KCkgeyBtX292ZXJyaWRlVmlzaWJs
ZVJlY3QgPSBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZG9QZW5kaW5nUmVwYWludHMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA3
OWY1YWJhYjhlMmE0ZDhlNmQyNDY3MzVjYzhmNDZhY2Y5YjAzZDRiLi4yZGUxYmNiMDg3ZjUzY2Ri
ZjYzZDAxZDNhYzI5MDRjYmQ4ODk4Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgUGFzdGVib2FyZDo6
Y2FuU21hcnRSZXBsYWNlKCkKIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFp
blRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgYWxsb3dVUkwsIE9wdGlvbmFs
PHNpemVfdD4gaXRlbUluZGV4KQogewotICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1J
bmRleC52YWx1ZU9yKDApOworICAgIGF1dG8gaXRlbUluZGV4VG9RdWVyeSA9IGl0ZW1JbmRleC52
YWx1ZV9vcigwKTsKIAogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBlNzU1
Y2QyMjZiNGFkZWRiMjM5YWY0NThiNjBhNGUzMWUzMTNjNGRhLi5jMmM4OGYwZDJkNDBlZWIwZDkw
ZDNlNGUwMTRmZDQwMDcxZDZjMWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTIwMiwxMCArMjAyLDEwIEBAIHN0
YXRpYyBQYXN0ZWJvYXJkSXRlbVByZXNlbnRhdGlvblN0eWxlIHBhc3RlYm9hcmRJdGVtUHJlc2Vu
dGF0aW9uU3R5bGUoVUlQcmVmZXJyCiBPcHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBsYXRm
b3JtUGFzdGVib2FyZDo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChzaXplX3QgaW5kZXgsIGlu
dDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KFttX3Bhc3RlYm9hcmQgbnVtYmVyT2ZJdGVtc10pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHRoaXMt
PmNoYW5nZUNvdW50KCkgIT0gY2hhbmdlQ291bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQYXN0ZWJvYXJkSXRlbUlu
Zm8gaW5mbzsKICAgICBOU0l0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyID0gW1ttX3Bhc3RlYm9h
cmQgaXRlbVByb3ZpZGVyc10gb2JqZWN0QXRJbmRleDppbmRleF07CkBAIC0yODMsNyArMjgzLDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIE9wdGlvbmFsPFBhc3RlYm9h
cmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4
KHNpemVfdCwgaW50NjRfdCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCmluZGV4IGVkYzhiM2MzMmVhMDFmOTg2
ZGNiOGM5ZTI2MzNhNDRmZDY3NDVkZTIuLjU3NjllOWE1M2Y0MmZjYTJkNGIxODEwNDQ2ZDJmODBm
NTY0ZmY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3Jl
TW90aW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZU1vdGlvbk1hbmFnZXIubW0KQEAgLTIyMyw3ICsyMjMsNyBAQCAtICh2b2lkKXNlbmRBY2NlbGVy
b21ldGVyRGF0YTooQ01BY2NlbGVyb21ldGVyRGF0YSAqKW5ld0FjY2VsZXJhdGlvbgogCiAgICAg
ICAgIGZvciAoYXV0byYgY2xpZW50IDogbW90aW9uQ2xpZW50cykgewogICAgICAgICAgICAgaWYg
KGNsaWVudCkKLSAgICAgICAgICAgICAgICBjbGllbnQtPm1vdGlvbkNoYW5nZWQoMCwgMCwgMCwg
YWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHksIGFjY2VsLnogKiBrR3Jhdml0
eSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAg
ICAgICAgY2xpZW50LT5tb3Rpb25DaGFuZ2VkKDAsIDAsIDAsIGFjY2VsLnggKiBrR3Jhdml0eSwg
YWNjZWwueSAqIGtHcmF2aXR5LCBhY2NlbC56ICoga0dyYXZpdHksIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpp
bmRleCA2OWE4MzM2NzI0YjczMDQzZmJkMzVmNjYzZjg5MmQ2YjkwNDVhYzRlLi41NDgyM2EyZDE1
NWZkYmIyNTZjODQ2NmM1YTEzYjg1MzZiNjE2ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAgLTUzMywxMSArNTMz
LDExIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBWZWN0b3I8UGFz
dGVib2FyZEN1c3RvbURhdGE+JiBpdGVtRGF0YSkKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5m
bz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBp
bmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCkKIHsKICAgICBpZiAoY2hhbmdlQ291bnQgIT0gW21f
cGFzdGVib2FyZCBjaGFuZ2VDb3VudF0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBOU1Bhc3RlYm9hcmRJdGVtICppdGVt
ID0gaXRlbUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9h
cmRJdGVtSW5mbyBpbmZvOwogICAgIE5TQXJyYXk8TlNQYXN0ZWJvYXJkVHlwZT4gKnBsYXRmb3Jt
VHlwZXMgPSBbaXRlbSB0eXBlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxDb250cm9sbGVyLm1tCmluZGV4IDFjNjY4NmY4MTNmOTQ4ZjVlMTE4N2I0ZDVmOGQyZTRj
ZTM0YzIxN2UuLmU1MmQ2YmEyZDFlNWJhYTdjMGIzNDI4NWYwMDdkMDk2YjAyNjJiMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9sbGVyLm1tCkBAIC0z
NDYsNyArMzQ2LDcgQEAgT3B0aW9uYWw8U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVy
OjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29uc3QgUGxhdGZvcm1XaGUKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2Nyb2xsUmlnaHQ7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIENoZWNr
IFkgZmlyc3QgYmVjYXVzZSB2ZXJ0aWNhbCBzY3JvbGxpbmcgZG9taW5hdGVzLgpAQCAtMzYyLDcg
KzM2Miw3IEBAIE9wdGlvbmFsPFNjcm9sbERpcmVjdGlvbj4gU2Nyb2xsQ29udHJvbGxlcjo6ZGly
ZWN0aW9uRnJvbUV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlCiAgICAgaWYgKHdoZWVsRGVsdGEud2lk
dGgoKSA8IDApCiAgICAgICAgIHJldHVybiBTY3JvbGxSaWdodDsKIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEVOQUJMRShSVUJC
RVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCAz
MzQ0YTM0OGI0YmQxNjVmM2NmNWZlYjY3YTI0NDIwMWE4ZmI2ZGQ0Li5mN2RjMjIwMGM3ZDViNGIz
YWJjYzEwMmQ3OWUyZWJjYWNmOTlhZTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCkBAIC04MDQsNyArODA0LDcgQEAgT3B0aW9uYWw8Rm9udENhc2NhZGVEZXNjcmlw
dGlvbj4gVGhlbWVNYWM6OmNvbnRyb2xGb250KENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEYKICAg
ICAgICAgcmV0dXJuIGZvbnREZXNjcmlwdGlvbjsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJp
bGl0aWVzL0F1ZGlvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKaW5kZXggNTc2NzljNDI5MmY5YTAw
NTIxODVmNmY5MzllNWZlNTgwOGJiYzhlZC4uZDA5NTU2NDQ0NDBmMmJhZDMyMjIyMDdhNTEyNjM0
ZWM2MTQyNWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1cmF0aW9uLmgKQEAgLTU3LDI3ICs1Nywy
NyBAQCBPcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+IEF1ZGlvQ29uZmlndXJhdGlvbjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsK
ICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5cGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGNoYW5uZWxzOwogICAgIGRlY29kZXIgPj4gY2hhbm5lbHM7
CiAgICAgaWYgKCFjaGFubmVscykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90
Pj4gYml0cmF0ZTsKICAgICBkZWNvZGVyID4+IGJpdHJhdGU7CiAgICAgaWYgKCFiaXRyYXRlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDMyX3Q+PiBzYW1wbGVSYXRlOwogICAgIGRl
Y29kZXIgPj4gc2FtcGxlUmF0ZTsKICAgICBpZiAoIXNhbXBsZVJhdGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxPcHRpb25hbDxib29sPj4gc3BhdGlhbFJlbmRlcmluZzsKICAgICBkZWNvZGVyID4+IHNw
YXRpYWxSZW5kZXJpbmc7CiAgICAgaWYgKCFzcGF0aWFsUmVuZGVyaW5nKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHt7CiAgICAgICAgICpjb250ZW50VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgK
aW5kZXggYzA4NjhlNGFiOWQ0ZTA5OGFiYzUxOTA0N2YxZjU2YmFmMzU0NDhlMS4uYWE5MDlkMzhh
MWI3YmNhZDgwMWMwMjUwNjNhNWZhNTA2MDFiNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFDb25maWd1cmF0
aW9uLmgKQEAgLTUyLDEyICs1MiwxMiBAQCBPcHRpb25hbDxNZWRpYUNvbmZpZ3VyYXRpb24+IE1l
ZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8VmlkZW9Db25maWd1cmF0aW9uPj4gdmlkZW87CiAgICAgZGVjb2RlciA+PiB2aWRl
bzsKICAgICBpZiAoIXZpZGVvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXVkaW9Db25m
aWd1cmF0aW9uPj4gYXVkaW87CiAgICAgZGVjb2RlciA+PiBhdWRpbzsKICAgICBpZiAoIWF1ZGlv
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgICp2aWRlbywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRp
YURlY29kaW5nQ29uZmlndXJhdGlvbi5oCmluZGV4IGE0N2JkMjc4MThiMzM5YjAzODM0NGViMzll
ZjhjZjY3MzVjNjNhM2QuLjIyNjMyY2YwMTZlODU1MThkMTdmMTg5YzQ0OGE2MDM1YWQ3MWVmNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01l
ZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtNTEsMTcg
KzUxLDE3IEBAIE9wdGlvbmFsPE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uPiBNZWRpYURlY29k
aW5nQ29uZmlndXJhdGlvbjo6ZGVjb2RlKERlY29kZXImCiB7CiAgICAgYXV0byBtZWRpYUNvbmZp
Z3VyYXRpb24gPSBNZWRpYUNvbmZpZ3VyYXRpb246OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAo
IW1lZGlhQ29uZmlndXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRGVjb2RpbmdUeXBl
PiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxib29sPiBjYW5FeHBvc2VWUDk7CiAgICAgZGVjb2RlciA+PiBjYW5FeHBvc2VWUDk7
CiAgICAgaWYgKCFjYW5FeHBvc2VWUDkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1l
ZGlhQ29uZmlndXJhdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJhdGlv
bi5oCmluZGV4IGJmNzg4ZDNiZmMwODI3MTdjNGIwY2ViMTI2YmQwZjM1MGM0ZjNiZGQuLjE2NWRj
NGYyZjg2NmI5NTIyMGM3YmE2NjBjOGQ0NzFlMDE4N2NlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaApAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPE1l
ZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uPiBNZWRpYUVuY29kaW5nQ29uZmlndXJhdGlvbjo6ZGVj
b2RlKERlY29kZXImCiB7CiAgICAgYXV0byBtZWRpYUNvbmZpZ3VyYXRpb24gPSBNZWRpYUNvbmZp
Z3VyYXRpb246OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIW1lZGlhQ29uZmlndXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPE1lZGlhRW5jb2RpbmdUeXBlPiB0eXBlOwogICAgIGRlY29kZXIg
Pj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKm1l
ZGlhQ29uZmlndXJhdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhY2FwYWJpbGl0aWVzL1ZpZGVvQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKaW5kZXggNDE3MDg2
YTY1MDRkN2VhNGQ5ZjEzZGVmMDBkOGQzZDFlNDYwMjcyZS4uN2E5NWJmYjI4YTkxODJkOTNhYWFi
ODQ1YTM0OGM5YzljZTg1NDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlkZW9Db25maWd1cmF0aW9uLmgKQEAgLTY4
LDQ3ICs2OCw0NyBAQCBPcHRpb25hbDxWaWRlb0NvbmZpZ3VyYXRpb24+IFZpZGVvQ29uZmlndXJh
dGlvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250
ZW50VHlwZTsKICAgICBkZWNvZGVyID4+IGNvbnRlbnRUeXBlOwogICAgIGlmICghY29udGVudFR5
cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3
aWR0aDsKICAgICBpZiAoIXdpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGhlaWdo
dDsKICAgICBkZWNvZGVyID4+IGhlaWdodDsKICAgICBpZiAoIWhlaWdodCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBiaXRyYXRlOwogICAgIGRlY29kZXIgPj4gYml0cmF0ZTsKICAgICBp
ZiAoIWJpdHJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+IGZyYW1lcmF0ZTsKICAgICBk
ZWNvZGVyID4+IGZyYW1lcmF0ZTsKICAgICBpZiAoIWZyYW1lcmF0ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPE9wdGlvbmFsPGJvb2w+PiBhbHBoYUNoYW5uZWw7CiAgICAgZGVjb2RlciA+PiBhbHBoYUNo
YW5uZWw7CiAgICAgaWYgKCFhbHBoYUNoYW5uZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxDb2xvckdhbXV0Pj4gY29sb3JHYW11dDsKICAgICBkZWNvZGVyID4+IGNvbG9yR2FtdXQ7CiAg
ICAgaWYgKCFjb2xvckdhbXV0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8SGRyTWV0YWRh
dGFUeXBlPj4gaGRyTWV0YWRhdGFUeXBlOwogICAgIGRlY29kZXIgPj4gaGRyTWV0YWRhdGFUeXBl
OwogICAgIGlmICghaGRyTWV0YWRhdGFUeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8
VHJhbnNmZXJGdW5jdGlvbj4+IHRyYW5zZmVyRnVuY3Rpb247CiAgICAgZGVjb2RlciA+PiB0cmFu
c2ZlckZ1bmN0aW9uOwogICAgIGlmICghdHJhbnNmZXJGdW5jdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biB7ewogICAgICAgICAqY29udGVudFR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9w
dGlvbnMuaAppbmRleCAzMWViZDY4YzJkYzRiMjZjMzhmOTY2MTQwMGM3ZTZkZGI5ZTkwNDY1Li5k
ZTc0ODQzODhhY2UyMWFkMTU0YmFiYzIxY2Q0YTVhNWUzNDVkNmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVPcHRpb25zLmgKQEAgLTU0LDIyICs1NCwyMiBAQCBpbmxpbmUgT3B0aW9u
YWw8TWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zPiBNZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlv
bnM6OmRlY29kZQogewogICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVkPj4gYXVk
aW9CaXRzUGVyU2Vjb25kOwogICAgIGRlY29kZXIgPj4gYXVkaW9CaXRzUGVyU2Vjb25kOwogICAg
IGlmICghYXVkaW9CaXRzUGVyU2Vjb25kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5z
aWduZWQ+PiB2aWRlb0JpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiB2aWRlb0JpdHNQZXJT
ZWNvbmQ7CiAgICAgaWYgKCF2aWRlb0JpdHNQZXJTZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxP
cHRpb25hbDx1bnNpZ25lZD4+IGJpdHNQZXJTZWNvbmQ7CiAgICAgZGVjb2RlciA+PiBiaXRzUGVy
U2Vjb25kOwogICAgIGlmICghYml0c1BlclNlY29uZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNZWRpYVJl
Y29yZGVyUHJpdmF0ZU9wdGlvbnMgeyBXVEZNb3ZlKG1pbWVUeXBlKSwgKmF1ZGlvQml0c1BlclNl
Y29uZCwgKnZpZGVvQml0c1BlclNlY29uZCwgKmJpdHNQZXJTZWNvbmQgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggZDhiNDBiNjEx
OTEzYWU1YjI5NTI5MWU1NWJkNWE0YmE5YWQ1Y2E0MC4uNTFhM2UxOGEyY2VkZDNjZDVkYTkzZjM0
ZWJmMzcxMWUwMjBmOGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0KQEAgLTUzMCw3ICs1MzAsNyBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZm
ZXJSZWY+IEF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZl
cgogCiB1bnNpZ25lZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmJpdFJhdGUoKSBjb25z
dAogewotICAgIHJldHVybiBtX291dHB1dEJpdFJhdGUudmFsdWVPcigwKTsKKyAgICByZXR1cm4g
bV9vdXRwdXRCaXRSYXRlLnZhbHVlX29yKDApOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2Ev
VmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IGM3ZDY5NWEwMTViZjdlY2VhYmJk
MGQyMGJmODM1NTI0MWE5NWFlMGQuLjc2ZDU2ZDdiOGQxM2M3MmVhMzlmYzM0OTlkMTc5ODk5NzE3
ZjBlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCkBAIC0yMTgsNyArMjE4LDcgQEAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnRha2VPdXRwdXRTYW1wbGVCdWZmZXIKIAogdW5zaWdu
ZWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjpiaXRSYXRlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9vdXRwdXRCaXRSYXRlLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIG1fb3V0cHV0Qml0
UmF0ZS52YWx1ZV9vcigwKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCmluZGV4IDlhODhkMTZlYmJmOTNlYzVlZWQ2
OTNjMTcxYTI1ODdmOTJlMTc5ZWYuLjViODFhNDYzZDAxYTFlOGY0ZThiNzhkOGQwYjEwNGE2YTM4
ZmRhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0Nh
cHR1cmVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlLmgKQEAgLTk1LDM3ICs5NSwzNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gcGVyc2lzdGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3RlbnRJ
ZDsKICAgICAgICAgaWYgKCFwZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBp
ZiAoIWxhYmVsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBncm91cElk
OwogICAgICAgICBkZWNvZGVyID4+IGdyb3VwSWQ7CiAgICAgICAgIGlmICghZ3JvdXBJZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29k
ZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gaXNEZWZhdWx0OwogICAgICAgICBkZWNvZGVyID4+IGlzRGVmYXVs
dDsKICAgICAgICAgaWYgKCFpc0RlZmF1bHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5
cGU7CiAgICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJv
b2w+IGlzTW9ja0RldmljZTsKICAgICAgICAgZGVjb2RlciA+PiBpc01vY2tEZXZpY2U7CiAgICAg
ICAgIGlmICghaXNNb2NrRGV2aWNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Q2Fw
dHVyZURldmljZT4gZGV2aWNlID0ge3sgV1RGTW92ZSgqcGVyc2lzdGVudElkKSwgV1RGTW92ZSgq
dHlwZSksIFdURk1vdmUoKmxhYmVsKSwgV1RGTW92ZSgqZ3JvdXBJZCkgfX07CiAgICAgICAgIGRl
dmljZS0+c2V0RW5hYmxlZCgqZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXgg
MWE3NTNhMTBiZTc5ZTdjNDM5ODViMmU1ODBkNTQ5MWIxOGU1NzRmMS4uMzZkMjYxZmM5NDU5ZmVm
ZjI1OTEzMTQzY2VlYTVkOTAzN2UxZWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAt
NDAsNiArNDAsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6fkNhcHR1cmVEZXZpY2VNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCit2b2lkIENhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNhbGxiYWNrKQoreworICAgIGNhbGxiYWNrKCk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q2Fw
dHVyZURldmljZT4gQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogQ2FwdHVyZURldmljZSBDYXB0dXJlRGV2aWNlTWFu
YWdlcjo6Y2FwdHVyZURldmljZUZyb21QZXJzaXN0ZW50SUQoY29uc3QgU3RyaW5nJiBjYXB0dXJl
RGV2aWNlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBkZXZpY2UgOiBjYXB0dXJlRGV2aWNlcygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJl
RGV2aWNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2Fw
dHVyZURldmljZU1hbmFnZXIuaAppbmRleCBjN2FmZmI2OTA4NzlhYzAwNTU3YTU4MzA0MGEzN2E4
MTZhYzgyMzg4Li5kMWM1Yzg3NzAxODdkMDg2Yjg3NGMwZDI5ZDc5MDVjMjkxMzZmNjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNl
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1
cmVEZXZpY2VNYW5hZ2VyLmgKQEAgLTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgQ2FwdHVyZURldmljZU1hbmFnZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBjYXB0dXJlRGV2aWNlcygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxDYXB0dXJlRGV2aWNlPiBjYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRChDYXB0dXJl
RGV2aWNlOjpEZXZpY2VUeXBlLCBjb25zdCBTdHJpbmcmKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUNhcHR1cmVEZXZpY2VzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUs
IGNvbnN0IFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2FwdHVyZURldmlj
ZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCBlOTkwYTMyMWE3ZGQ3ZTY3ZThlNTdlZGFiN2Qw
M2ZjOGM1ZGU2MjIzLi5lYjI5NDlmNGU3YzVlZDliNTdkNTNjZTlmY2Q3NzUzYTdjNGJkZjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0
cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50cy5oCkBAIC03MDAsMzQgKzcwMCwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBNZWRpYVRyYWNrQ29uc3RyYWludFNldE1hcCBtYXA7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWFwLm1fd2lkdGgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWFwLm1faGVpZ2h0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG1hcC5tX3NhbXBsZVJhdGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWFwLm1fc2FtcGxlU2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1hcC5tX2FzcGVjdFJhdGlvKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1hcC5tX2ZyYW1lUmF0ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtYXAubV92b2x1bWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtYXAubV9lY2hvQ2FuY2VsbGF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2Rpc3BsYXlTdXJmYWNlKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2xvZ2ljYWxTdXJmYWNlKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fZmFjaW5nTW9kZSkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9kZXZpY2VJZCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9ncm91cElkKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAppbmRleCA1
MGM4M2IwYjMyMzI4MTc4OTRmMWQyOTRiMTlhOWMxOTQ2N2ZkYmNiLi41OWQ1ZmEzZjM3MmU0YWU3
MTg1NTA4NDI1N2FkNDY0Y2JiMzFkMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaApAQCAtNTUsNyArNTUs
NyBAQCBzdHJ1Y3QgTWVkaWFTdHJlYW1SZXF1ZXN0IHsKICAgICAgICAgaWYgKGRlY29kZXIuZGVj
b2RlKHJlcXVlc3QudHlwZSkgJiYgZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5hdWRpb0NvbnN0cmFp
bnRzKSAmJiBkZWNvZGVyLmRlY29kZShyZXF1ZXN0LnZpZGVvQ29uc3RyYWludHMpICYmIGRlY29k
ZXIuZGVjb2RlKHJlcXVlc3QuaXNVc2VyR2VzdHVyZVByaXZpbGVkZ2VkKSkKICAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0OwogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZp
ZXIuaAppbmRleCBlMzQwMmViYWFmMzM2NDI0N2E0MzFhYWVlYmVjOTQ1OGVkNWQwZjc5Li5mNjNk
OGY2NjBkZTQyNWU5NTllNzMyNjcwZDc5NzM1OWU1NjYxOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbElk
ZW50aWZpZXIuaApAQCAtNTEsMTIgKzUxLDEyIEBAIGlubGluZSBPcHRpb25hbDxSVENEYXRhQ2hh
bm5lbElkZW50aWZpZXI+IFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kCiAg
ICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsTG9jYWxJZGVudGlmaWVyPiBjaGFubmVs
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNoYW5uZWxJZGVudGlmaWVyOwogICAgIGlmICgh
Y2hhbm5lbElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIFJUQ0RhdGFDaGFubmVsSWRlbnRpZmll
ciB7ICpwcm9jZXNzSWRlbnRpZmllciwgKmNoYW5uZWxJZGVudGlmaWVyIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGU2NGY2MGUwNDgwMzllMDc1ZjU5
YWUyYmYzOTJkMmFlNThiOGZhNTEuLjI0YjhiMTdiNjg5N2I4MzkxOTg1M2U1Y2JmOGE1YzMzNWFm
YWUwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcApAQCAtMTAxLDcg
KzEwMSw3IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYgUmVhbHRpbWVJbmNv
bWluZ1ZpZGVvU291cmNlOjpzZXR0aW5ncygpCiB2b2lkIFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsg
UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNv
dXJjZVNldHRpbmdzOjpGbGFnOjpIZWlnaHQgfSkpCi0gICAgICAgIG1fY3VycmVudFNldHRpbmdz
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9w
dDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRl
eCBjOWJjMDc3MTM4YTgwYjU4YmNjNDk3ZTBjNDFhMTVlZWNiNzYxNGYxLi45NDE2ZGQ4M2YzNDg2
ZDc3MTY5ZjE3ZDY2YjI2MmFmYWJmMGFjOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAt
MTA1OCw3ICsxMDU4LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRTYW1wbGVSYXRl
KGludCByYXRlKQogCiBPcHRpb25hbDxWZWN0b3I8aW50Pj4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6
ZGlzY3JldGVTYW1wbGVSYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6
OnNldFNhbXBsZVNpemUoaW50IHNpemUpCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCB2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVNpemUoaW50IHNpemUpCiAKIE9wdGlvbmFsPFZlY3Rv
cjxpbnQ+PiBSZWFsdGltZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVNpemVzKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RWNob0NhbmNlbGxhdGlvbihib29sIGVj
aG9DYW5jZWxsYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9WaWRlb1ByZXNldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vVmlkZW9QcmVzZXQuaAppbmRleCA1MzZjZGUxOGM5MzY3OTM2MDYyNzg2OWMzZjNkYzZmZDFi
OTgwODc3Li5hODQ5YzRjNmVhYWEyOWVkYzA0ZjAxNDk3MWU4ZTNkOWQwZDkxOTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKQEAg
LTU2LDEyICs1NiwxMiBAQCBPcHRpb25hbDxGcmFtZVJhdGVSYW5nZT4gRnJhbWVSYXRlUmFuZ2U6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPGRvdWJsZT4gbWluaW11bTsK
ICAgICBkZWNvZGVyID4+IG1pbmltdW07CiAgICAgaWYgKCFtaW5pbXVtKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8ZG91YmxlPiBtYXhpbXVtOwogICAgIGRlY29kZXIgPj4gbWF4aW11bTsKICAgICBpZiAo
IW1heGltdW0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gRnJhbWVSYXRlUmFuZ2UgeyAqbWluaW11bSwgKm1h
eGltdW0gfTsKIH0KQEAgLTg3LDEyICs4NywxMiBAQCBPcHRpb25hbDxWaWRlb1ByZXNldERhdGE+
IFZpZGVvUHJlc2V0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
SW50U2l6ZT4gc2l6ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8VmVjdG9yPEZyYW1lUmF0ZVJhbmdlPj4gZnJhbWVSYXRlUmFuZ2VzOwog
ICAgIGRlY29kZXIgPj4gZnJhbWVSYXRlUmFuZ2VzOwogICAgIGlmICghZnJhbWVSYXRlUmFuZ2Vz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIFZpZGVvUHJlc2V0RGF0YSB7ICpzaXplLCAqZnJhbWVSYXRlUmFu
Z2VzIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckNhcHR1cmVEZXZp
Y2VNYW5hZ2VyLmNwcAppbmRleCBjMDZmZWIxNWNmZjVlNzYxZTVmZGViYjM1MjIwYjJkYThhZmUy
NDYyLi4wODViYjA3OTAzNDE4Mzc1OWMyOTRiYzVjNTYwZmViZDk3MDE0ZTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
Q2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKQEAg
LTgzLDcgKzgzLDcgQEAgT3B0aW9uYWw8R1N0cmVhbWVyQ2FwdHVyZURldmljZT4gR1N0cmVhbWVy
Q2FwdHVyZURldmljZU1hbmFnZXI6OmdzdHJlYW1lckRldmljZVcKICAgICAgICAgaWYgKGRldmlj
ZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCkKICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7
CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogY29uc3QgVmVjdG9yPENhcHR1cmVEZXZpY2U+JiBHU3RyZWFtZXJDYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vaW9zL0FWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nl
c3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQppbmRleCA4YWZkNGU0NWRjNTIwZDZhZmRhODk1
NGM2MDMxZDBlN2Y5NmNlM2QwLi5hZTZhZDhmYTUwYTM4YmIzYjA3ZjlhNmRiNDIzYTkxMmRiZDIx
N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3Mv
QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFu
YWdlci5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+IEFWQXVk
aW9TZXNzaW9uQ2FwdHVyZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyCiAgICAg
ICAgIGlmIChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAgICAgICAgICBy
ZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmlj
ZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6YXVkaW9TZXNzaW9uRGV2aWNl
V2l0aFVJRChjb25zdCBTdHJpbmcmIGRldmljZUlEKQpAQCAtMTQxLDcgKzE0MSw3IEBAIE9wdGlv
bmFsPEFWQXVkaW9TZXNzaW9uQ2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6YXVkaW9TCiAgICAgICAgIGlmIChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0g
ZGV2aWNlSUQpCiAgICAgICAgICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQVZBdWRp
b1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlcjo6c2NoZWR1bGVVcGRhdGVDYXB0dXJlRGV2aWNl
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
QVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KaW5kZXggMmI0OWIyZTkzZmU1MWViZDY4
YTJiZWRmYTU3ZGRhNmZhYzJkZjFiMi4uNGI3ODhhZTVhYTg3YjcyOWU1YmRjZjljZjcxMzgxMmM2
NzcwYTMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQpAQCAtMjMzLDcgKzIzMyw3
IEBAIHZvaWQgQVZWaWRlb0NhcHR1cmVTb3VyY2U6OmNvbW1pdENvbmZpZ3VyYXRpb24oKQogCiB2
b2lkIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPikKIHsKLSAgICBtX2N1cnJlbnRTZXR0aW5n
cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsK
IH0KIAogY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBBVlZpZGVvQ2FwdHVyZVNv
dXJjZTo6c2V0dGluZ3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCmluZGV4
IDJkZjZmNDdjYWNmZTYxNjY1MTJiZTFhNTU5ZjhlMGM4MjU4MWVlOTEuLjYzOTYwYzQ1N2I1YTkz
MmY5ZDc5ZTNiYTFjZWNlYTdkMTExNWQ1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURl
dmljZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBPcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2
aWNlPiBDb3JlQXVkaW9DYXB0dXJlRGV2aWNlOjpjcmVhdGUodWludDMyX3QgZGV2aWNlSQogICAg
IFN0cmluZyBwZXJzaXN0ZW50SUQ7CiAgICAgU3RyaW5nIGxhYmVsOwogICAgIGlmICghZ2V0RGV2
aWNlSW5mbyhkZXZpY2VJRCwgdHlwZSwgcGVyc2lzdGVudElELCBsYWJlbCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gQ29yZUF1ZGlvQ2FwdHVyZURldmljZShkZXZpY2VJRCwgcGVyc2lzdGVudElELCB0eXBl
LCBsYWJlbCwgZ3JvdXBJRC5pc051bGwoKSA/IHBlcnNpc3RlbnRJRCA6IGdyb3VwSUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKaW5kZXggM2I4
NGVkM2RjOWZiOGVlYTA2ZTkzNmFhMjYyMmM5NTZmNGU0ZmE0ZS4uZWViNzAwOGY1YjA5NzdlYjYz
MjAxN2EzZmJjMDgxNjdhY2Y5Y2UwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IENvcmVBdWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNlV2l0aFBlcnNp
c3RlCiAgICAgICAgIGlmIChkZXZpY2UucGVyc2lzdGVudElkKCkgPT0gZGV2aWNlSUQpCiAgICAg
ICAgICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGRldmljZUhhc1N0cmVh
bXMoQXVkaW9PYmplY3RJRCBkZXZpY2VJRCwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MmIGFkZHJlc3MpCkBAIC0yNTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8Q29yZUF1ZGlvQ2FwdHVy
ZURldmljZT4gQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvcmVBdWRpb0RldmljZVcK
ICAgICAgICAgaWYgKGRldmljZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCAmJiBkZXZpY2Uu
ZW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGRldmljZTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgaGFzRGV2aWNlKGNvbnN0IFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiYg
ZGV2aWNlcywgdWludDMyX3QgZGV2aWNlSUQsIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgZGV2
aWNlVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlU291cmNlLmNwcAppbmRleCA3N2Q4MmMx
YTQwOGE1ZDdiYzRhYTI5ZTYxMGM5ZjgwZjdiNTBmZTY3Li40MmUxODQ1NjYyZjZiMjAxZTVjYWI2
OWI5ZDA4ZjExMTM3YjcxMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1cmVTb3VyY2UuY3Bw
CkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjpzZXR0aW5n
c0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHQKICAgICBpZiAoc2hv
dWxkUmVjb25maWd1cmUpCiAgICAgICAgIHVuaXQoKS5yZWNvbmZpZ3VyZSgpOwogCi0gICAgbV9j
dXJyZW50U2V0dGluZ3MgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZTo6aW50ZXJydXB0
ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAKaW5k
ZXggZjdlY2RjOGFlMDBhYzA5NjZlMTdhNzJkOTFjMTI3MmQxNjRlYjRmOC4uZTIwOWMxNjk5YmFj
MzkyMjczZTNiYWQ3MGVmNjNhZGZmYWMxODEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2EuY3BwCkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBl
cnNpCiAgICAgcmV0dXJuIFNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6c2NyZWVuQ2FwdHVyZURl
dmljZVdpdGhQZXJzaXN0ZW50SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZGV2aWNlSUQpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogfQogCkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IERpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBl
cnNpCiAgICAgcmV0dXJuIFdpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURl
dmljZVdpdGhQZXJzaXN0ZW50SUQoZGV2aWNlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZGV2aWNlSUQpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURl
dmljZT4gRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2E6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGVudEkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVu
RGlzcGxheUNhcHR1cmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCA4ZWRhYjA3ZmNhMThlNDk5
ODNmMWQwOWY4MWJlZTZjYjM4Y2JjMjkxLi44ZTI5OTQyMDA5ODgxYjZiMzEwM2Q1Mzk2MTE4ZjA1
NTI4NjMxMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTU1
LDE5ICs1NSwxOSBAQCBzdGF0aWMgT3B0aW9uYWw8Q0dEaXJlY3REaXNwbGF5SUQ+IHVwZGF0ZURp
c3BsYXlJRChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgYXV0byBlcnIgPSBDR0dl
dEFjdGl2ZURpc3BsYXlMaXN0KDAsIG51bGxwdHIsICZkaXNwbGF5Q291bnQpOwogICAgIGlmIChl
cnIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQ0dHZXRBY3RpdmVEaXNwbGF5TGlz
dCgpIHJldHVybmVkIGVycm9yICVkIHdoZW4gdHJ5aW5nIHRvIGdldCBkaXNwbGF5IGNvdW50Iiwg
c3RhdGljX2Nhc3Q8aW50PihlcnIpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXlDb3Vu
dCkgewogICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0
KCkgcmV0dXJuZWQgYSBkaXNwbGF5IGNvdW50IG9mIDAiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBWZWN0
b3I8Q0dEaXJlY3REaXNwbGF5SUQ+IGFjdGl2ZURpc3BsYXlzKGRpc3BsYXlDb3VudCk7CiAgICAg
ZXJyID0gQ0dHZXRBY3RpdmVEaXNwbGF5TGlzdChkaXNwbGF5Q291bnQsIGFjdGl2ZURpc3BsYXlz
LmRhdGEoKSwgJmRpc3BsYXlDb3VudCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBSRUxFQVNF
X0xPRyhXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgZXJyb3IgJWQg
d2hlbiB0cnlpbmcgdG8gZ2V0IHRoZSBhY3RpdmUgZGlzcGxheSBsaXN0Iiwgc3RhdGljX2Nhc3Q8
aW50PihlcnIpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGRpc3BsYXlNYXNrID0gQ0dEaXNwbGF5
SURUb09wZW5HTERpc3BsYXlNYXNrKGRpc3BsYXlJRCk7CkBAIC03Niw3ICs3Niw3IEBAIHN0YXRp
YyBPcHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlz
cGxheUlEIGRpc3BsYXlJRCkKICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5OwogICAgIH0KIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
RXhwZWN0ZWQ8VW5pcXVlUmVmPERpc3BsYXlDYXB0dXJlU291cmNlQ29jb2E6OkNhcHR1cmVyPiwg
U3RyaW5nPiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWM6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRl
dmljZUlEKQpAQCAtMjY4LDEyICsyNjgsMTIgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gU2Ny
ZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3QKICAg
ICBhdXRvIGRpc3BsYXlJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oZGV2aWNlSUQpOwogICAg
IGlmICghZGlzcGxheUlEKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIlNjcmVlbkRp
c3BsYXlDYXB0dXJlck1hYzo6c2NyZWVuQ2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQ6IGRp
c3BsYXkgSUQgZG9lcyBub3QgY29udmVydCB0byAzMi1iaXQgaW50ZWdlciIpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGF1dG8gYWN0dWFsRGlzcGxheUlEID0gdXBkYXRlRGlzcGxheUlEKCpkaXNwbGF5SUQp
OwogICAgIGlmICghYWN0dWFsRGlzcGxheUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBkZXZpY2UgPSBDYXB0
dXJlRGV2aWNlKFN0cmluZzo6bnVtYmVyKCphY3R1YWxEaXNwbGF5SUQpLCBDYXB0dXJlRGV2aWNl
OjpEZXZpY2VUeXBlOjpTY3JlZW4sICJTY3JlZW5DYXB0dXJlRGV2aWNlIl9zKTsKICAgICBkZXZp
Y2Uuc2V0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1t
CmluZGV4IDdlMDEzMDNmOWFiOTg3N2Y1NGQ4MGJmYTY5OGI2ODE2MWMzZTI2YmUuLjQxOGY2OTM3
ZGU2YzEwN2FkNWQ4YWJkMDRmZGRhNDkwNWIwMTBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3Bs
YXlDYXB0dXJlck1hYy5tbQpAQCAtMTM5LDcgKzEzOSw3IEBAIE9wdGlvbmFsPENhcHR1cmVEZXZp
Y2U+IFdpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJz
aXN0CiAgICAgYXV0byB3aW5kb3dJRCA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oaWRTdHJpbmcp
OwogICAgIGlmICghd2luZG93SUQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiV2lu
ZG93RGlzcGxheUNhcHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJ
RDogd2luZG93IElEIGRvZXMgbm90IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXIiKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBTdHJpbmcgd2luZG93VGl0bGU7CkBAIC0xNTIsNyArMTUyLDcgQEAgT3B0aW9u
YWw8Q2FwdHVyZURldmljZT4gV2luZG93RGlzcGxheUNhcHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJl
RGV2aWNlV2l0aFBlcnNpc3QKIAogICAgIH0pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJU
QywgIldpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYzo6d2luZG93Q2FwdHVyZURldmljZVdpdGhQZXJz
aXN0ZW50SUQ6IHdpbmRvdyBJRCBpcyBub3QgdmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRv
IGRldmljZSA9IENhcHR1cmVEZXZpY2UoU3RyaW5nOjpudW1iZXIoKndpbmRvd0lEKSwgQ2FwdHVy
ZURldmljZTo6RGV2aWNlVHlwZTo6V2luZG93LCB3aW5kb3dUaXRsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKaW5k
ZXggMWY1MTlkNGJiZjgwZWNhZjZhYjM1MGE2MDViYzIxNTFhNWUxZTM4My4uY2JkNmFkMmYzZWVk
MTFhYmU4MDIxMjIzOGRjZTNlMDBmMDhiNDNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNzIsNyArNzIs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYQogewogICAgIG1faGFzRXJyb3IgPSB0cnVlOwog
ICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOwotICAgIG1fbGFzdFBvc2l0aW9uID0g
V1RGOjpudWxsb3B0OworICAgIG1fbGFzdFBvc2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGFz
eW5jVXBkYXRlQ29udHJvbGxlcigpOwogfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKCkKIAogdm9pZCBHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnJlc2V0KCkKIHsKLSAgICBtX2xhc3RQb3NpdGlvbiA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBjbGVhckVycm9y
KCk7CiAgICAgbV9wZXJtaXNzaW9uU3RhdGUgPSBQZXJtaXNzaW9uU3RhdGVVbnNldDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKaW5kZXggZTQyOTQyODhhMjNiZDdk
YWUwMzA0MjlmMWU4OTEyOTg4NGVhNTI3Ni4uY2YxOGZlNzQ2YmEzYWVkM2ZlMGRiNWEzYTAwODg5
OWQ0ZTZhMTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9NZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgc3RhdGljIGJvb2wgY2FuRGVjb2RlTWVkaWEoY29uc3QgTWVkaWFEZWNv
ZGluZ0NvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgLy8gQ2FuIG9ubHkgc3VwcG9ydCBzcGF0aWFsIHJlbmRlcmluZyBvZiB0
cmFja3Mgd2l0aCBtdWx0aWNoYW5uZWwgYXVkaW86Ci0gICAgICAgIGlmIChhdWRpb0NvbmZpZy0+
c3BhdGlhbFJlbmRlcmluZy52YWx1ZU9yKGZhbHNlKSAmJiBhdWRpb0NvbmZpZy0+Y2hhbm5lbHMu
dG9Eb3VibGUoKSA8PSAyKQorICAgICAgICBpZiAoYXVkaW9Db25maWctPnNwYXRpYWxSZW5kZXJp
bmcudmFsdWVfb3IoZmFsc2UpICYmIGF1ZGlvQ29uZmlnLT5jaGFubmVscy50b0RvdWJsZSgpIDw9
IDIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaAppbmRleCBlOWE1ODZhMjdjZGIxYmYx
Y2Q2OWM0MTBkNDc2MDZkZGJiOWRiM2QxLi41ZmE3OWE5YWI1MzhiZDY0OWRhNGUyZDUzMjE4ZDg5
ODU0NzIxY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
RGV2aWNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RydWN0IE1vY2tNaWNyb3Bob25lUHJvcGVydGll
cyB7CiAgICAgICAgIE9wdGlvbmFsPGludDMyX3Q+IGRlZmF1bHRTYW1wbGVSYXRlOwogICAgICAg
ICBkZWNvZGVyID4+IGRlZmF1bHRTYW1wbGVSYXRlOwogICAgICAgICBpZiAoIWRlZmF1bHRTYW1w
bGVSYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBNb2NrTWljcm9waG9uZVByb3BlcnRp
ZXMgeyAqZGVmYXVsdFNhbXBsZVJhdGUgfTsKICAgICB9CiAKQEAgLTY4LDEyICs2OCwxMiBAQCBz
dHJ1Y3QgTW9ja1NwZWFrZXJQcm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9uYWw8aW50MzJfdD4g
ZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNhbXBsZVJhdGU7
CiAgICAgICAgIGlmICghZGVmYXVsdFNhbXBsZVJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHJlbGF0ZWRNaWNyb3Bob25lSWQ7CiAgICAgICAgIGRlY29kZXIgPj4g
cmVsYXRlZE1pY3JvcGhvbmVJZDsKICAgICAgICAgaWYgKCFyZWxhdGVkTWljcm9waG9uZUlkKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIE1vY2tTcGVha2VyUHJvcGVydGllcyB7IFdURk1v
dmUoKnJlbGF0ZWRNaWNyb3Bob25lSWQpLCAqZGVmYXVsdFNhbXBsZVJhdGUgfTsKICAgICB9CkBA
IC05OSwyMiArOTksMjIgQEAgc3RydWN0IE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsKICAgICAgICAg
T3B0aW9uYWw8ZG91YmxlPiBkZWZhdWx0RnJhbWVSYXRlOwogICAgICAgICBkZWNvZGVyID4+IGRl
ZmF1bHRGcmFtZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lUmF0ZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6VmlkZW9G
YWNpbmdNb2RlPiBmYWNpbmdNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGZhY2luZ01vZGU7CiAg
ICAgICAgIGlmICghZmFjaW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZl
Y3RvcjxWaWRlb1ByZXNldERhdGE+PiBwcmVzZXRzOwogICAgICAgICBkZWNvZGVyID4+IHByZXNl
dHM7CiAgICAgICAgIGlmICghcHJlc2V0cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PENvbG9yPiBmaWxsQ29sb3I7CiAgICAgICAgIGRlY29kZXIgPj4gZmlsbENvbG9yOwogICAgICAg
ICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBNb2NrQ2FtZXJh
UHJvcGVydGllcyB7ICpkZWZhdWx0RnJhbWVSYXRlLCAqZmFjaW5nTW9kZSwgV1RGTW92ZSgqcHJl
c2V0cyksICpmaWxsQ29sb3IgfTsKICAgICB9CkBAIC0xMzksMTcgKzEzOSwxNyBAQCBzdHJ1Y3Qg
TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzIHsKICAgICB7CiAgICAgICAgIE9wdGlvbmFsPENhcHR1cmVE
ZXZpY2U6OkRldmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPENvbG9yPiBmaWxsQ29sb3I7CiAgICAgICAgIGRlY29k
ZXIgPj4gZmlsbENvbG9yOwogICAgICAgICBpZiAoIWZpbGxDb2xvcikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPEludFNpemU+IGRlZmF1bHRTaXplOwogICAgICAgICBkZWNvZGVyID4+
IGRlZmF1bHRTaXplOwogICAgICAgICBpZiAoIWRlZmF1bHRTaXplKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmV0dXJuIE1vY2tEaXNwbGF5UHJvcGVydGllcyB7ICp0eXBlLCAqZmlsbENvbG9yLCAq
ZGVmYXVsdFNpemUgfTsKICAgICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RydWN0IE1vY2tNZWRp
YURldmljZSB7CiAgICAgICAgIE9wdGlvbmFsPFByb3BlcnRpZXM+IHByb3BlcnRpZXM7CiAgICAg
ICAgIGRlY29kZXIgPj4gcHJvcGVydGllczsKICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBNb2NrTWVkaWFEZXZpY2UgeyBXVEZNb3ZlKHBlcnNpc3Rl
bnRJZCksIFdURk1vdmUobGFiZWwpLCBXVEZNb3ZlKCpwcm9wZXJ0aWVzKSB9OwogICAgIH0KIApA
QCAtMjMyLDE3ICsyMzIsMTcgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIE9w
dGlvbmFsPFN0cmluZz4gcGVyc2lzdGVudElkOwogICAgICAgICBkZWNvZGVyID4+IHBlcnNpc3Rl
bnRJZDsKICAgICAgICAgaWYgKCFwZXJzaXN0ZW50SWQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAg
ICBpZiAoIWxhYmVsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDhfdD4gaW5k
ZXg7CiAgICAgICAgIGRlY29kZXIgPj4gaW5kZXg7CiAgICAgICAgIGlmICghaW5kZXgpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBzd2l0Y2ggKCppbmRleCkgewogICAgICAgICBjYXNlIDE6CkBAIC0y
NTQsNyArMjU0LDcgQEAgc3RydWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgIGNhc2UgNDoK
ICAgICAgICAgICAgIHJldHVybiBkZWNvZGVNb2NrTWVkaWFEZXZpY2U8TW9ja0Rpc3BsYXlQcm9w
ZXJ0aWVzPihkZWNvZGVyLCBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCpsYWJlbCkp
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgU3RyaW5nIHBlcnNpc3RlbnRJZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAKaW5kZXggYzQ5ZTZmYmYxNjc4OWQ5NjhjYzA1NDczNGI3MTU1MGFlZmY5ZTVmOS4u
MDVjODhlYTE3OWZjNDE3MDdlMjZhNDU2NjQwZmIzNWIyZGM4NzY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzJiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y2FwYWJpbGl0aWVzKCkKIAogdm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1l
TWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZz4pCiB7Ci0gICAgbV9jdXJyZW50U2V0dGluZ3MgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291
cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IDE0ZjRjNmViMThlYWJiOTI4MGRiMDEzM2Q0ZDQw
MWNmYTk5ZTFjMWYuLjIyZTRhMTc3Yzc1MDRhZTc3NmUyOGNhNjQ1ZmRmNTQzZDFlZGE5MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFT
b3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8
TW9ja01lZGlhRGV2aWNlPiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6bW9ja0Rldmlj
ZVdpdGhQZXJzaXN0ZW4KICAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKICAgICBhdXRvIGl0
ZXJhdG9yID0gbWFwLmZpbmQoaWQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMzU1LDcgKzM1NSw3IEBAIE9w
dGlvbmFsPENhcHR1cmVEZXZpY2U+IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjYXB0
dXJlRGV2aWNlV2l0aFBlcnNpc3RlCiAgICAgYXV0byYgbWFwID0gZGV2aWNlTWFwKCk7CiAgICAg
YXV0byBpdGVyYXRvciA9IG1hcC5maW5kKGlkKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbWFwLmVu
ZCgpIHx8IGl0ZXJhdG9yLT52YWx1ZS50eXBlKCkgIT0gdHlwZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0
b0NhcHR1cmVEZXZpY2UoaXRlcmF0b3ItPnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXgg
NDZlYTE1MWVkYjcwYTk1MDk5YTJlMTU5MDYxZTY1MmVhMDg3MTU0NS4uMjA3M2E2YzNjMmZkYTg2
NDJlNWZjZjU1YTUzYjc5ZDYyMmZkYTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTIwMyw3ICsy
MDMsNyBAQCBJbnRTaXplIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjYXB0dXJlU2l6ZSgpIGNv
bnN0CiAKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9w
dGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc+IHNldHRpbmdzKQogewot
ICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudFNldHRp
bmdzID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChzZXR0aW5ncy5jb250YWluc0FueSh7IFJlYWx0
aW1lTWVkaWFTb3VyY2VTZXR0aW5nczo6RmxhZzo6V2lkdGgsIFJlYWx0aW1lTWVkaWFTb3VyY2VT
ZXR0aW5nczo6RmxhZzo6SGVpZ2h0IH0pKSB7CiAgICAgICAgIG1fYmFzZUZvbnRTaXplID0gY2Fw
dHVyZVNpemUoKS5oZWlnaHQoKSAqIC4wODsKICAgICAgICAgbV9iaXBCb3BGb250U2l6ZSA9IG1f
YmFzZUZvbnRTaXplICogMi41OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmNwcAppbmRleCAzYmViY2QwMjUzMDlhZDRmMmZmMmU0NjBmZDk4ZGM5NjZlNjc4NmU4Li44
NjY3N2FlZmY2ODJkODNhYTIzOGUwODlmYjg2YzFmMDk3YzY4ZmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNlZWtDb21wbGV0ZWQoKQogCiBPcHRpb25hbDxW
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjp2
aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewotICAgIHJldHVybiBtX21lZGlhU291cmNl
UHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT52aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBt
X21lZGlhU291cmNlUHJpdmF0ZS0+dmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkgOiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
aW5kZXggMmFkYTgwNzRhODUyMGU5NDJlNGMzMGE2NTRlYzRjOTZhYTdmMzhkYS4uODhjZjFiZjJh
YWE4NjkzNGNjYTgyYzRmY2FhNDkxZDc1YTA2Yzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBzaXplX3Qg
c2l6ZUluQnl0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzaXplb2YobV9ib3gpOyB9CiAg
ICAgU2FtcGxlRmxhZ3MgZmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybVNhbXBs
ZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0
ZVJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0
aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICAgICBGbG9hdFNpemUgcHJlc2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEZsb2F0U2l6ZSgpOyB9CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnkoY29uc3QgTWVkaWFU
aW1lJiBvZmZzZXQpIG92ZXJyaWRlIHsgbV9ib3gub2Zmc2V0VGltZXN0YW1wc0J5KG9mZnNldCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcAppbmRleCAxMmY4Mjc0ZWRiZmVhMDcxMWQ1MmJjYTkxMTVlOTky
ZWRlMjZlMDdiLi43NDY3MzcwYTY0MjdmMTZhYzVjMjM2MDcxMDYwYThiNDI5OTM5YTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVy
ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuY3BwCkBAIC03MSw3ICs3MSw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2Ug
ZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMs
IGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMg
aXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3Rz
IHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAg
IGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRo
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogI2VuZGlmCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uY3BwCmluZGV4IDZiMDEyOTBmYzRiZmIwOGZkOGE5YTg5ZTBjNzMyNzg4NmRkYjI0
ZmUuLmRhOTg2ZjE2ODdjZDg5OTRlOTdhYmRlYWIzM2IyMTM3MzFiMTNlODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKQEAg
LTEwNSw3ICsxMDUsNyBAQCBTZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBXYWxsVGltZSByZXNwb25zZVRpbQogICAgIC8vIE5vIGNvbXBl
bnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4g
cHJhY3RpY2UuCiAgICAgYXV0byBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CiAgICAgYXV0
byBhcHBhcmVudEFnZSA9IGRhdGVWYWx1ZSA/IHN0ZDo6bWF4KDBfdXMsIHJlc3BvbnNlVGltZSAt
ICpkYXRlVmFsdWUpIDogMF91czsKLSAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCku
dmFsdWVPcigwX3VzKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCkudmFsdWVf
b3IoMF91cyk7CiAgICAgYXV0byBjb3JyZWN0ZWRJbml0aWFsQWdlID0gc3RkOjptYXgoYXBwYXJl
bnRBZ2UsIGFnZVZhbHVlKTsKICAgICBhdXRvIHJlc2lkZW50VGltZSA9IFdhbGxUaW1lOjpub3co
KSAtIHJlc3BvbnNlVGltZTsKICAgICByZXR1cm4gY29ycmVjdGVkSW5pdGlhbEFnZSArIHJlc2lk
ZW50VGltZTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBTZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZl
dGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAg
ICAgIHJldHVybiAqbWF4QWdlOwogCiAgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOwot
ICAgIGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVPcihyZXNwb25zZVRpbWUpOworICAg
IGF1dG8gZWZmZWN0aXZlRGF0ZSA9IGRhdGUudmFsdWVfb3IocmVzcG9uc2VUaW1lKTsKICAgICBp
ZiAoYXV0byBleHBpcmVzID0gcmVzcG9uc2UuZXhwaXJlcygpKQogICAgICAgICByZXR1cm4gKmV4
cGlyZXMgLSBlZmZlY3RpdmVEYXRlOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgQ2FjaGVDb250cm9s
RGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKIAogc3RhdGljIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6
Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tp
ZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQOjpZZXMsIFNo
b3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CisgICAgcmV0dXJu
IHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwo
KSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygi
aHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2ll
czo6Tm8sIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZzo6Tm8pLmZpcnN0OwogfQogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3QgUmUK
ICAgICBpZiAoIWNvb2tpZUphcikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBj
b29raWVKYXItPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJs
KCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMo
Imh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tp
ZXM6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gY29va2llSmFyLT5jb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6
Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tp
ZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObykuZmlyc3Q7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgaGVhZGVyVmFsdWVGb3JWYXJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBoZWFkZXJOYW1lLCBGdW5jdGlvbjxTdHJpbmcoKT4mJiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5o
CmluZGV4IDNkZjEyMDZkMmMzYmJhNTU2NzdiZTQxM2NhMmNkZGExODkwNTE3NWYuLjYzYmVlMWRk
NjFlYWZmZWVjYjBjNmYzNzc2NTk5ZTZhMDJjMzg0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5LmgKQEAgLTYxLDI5ICs2MSwyOSBAQCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6OmRlY29kZShEZQogewog
ICAgIFVSTCBmaXJzdFBhcnR5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2FtZVNpdGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVSTCB1cmw7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
Pj4gZnJhbWVJRDsKICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CiAgICAg
ZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdlSUQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGluY2x1ZGVTZWN1cmVDb29raWVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSB7IFdURk1vdmUoZmlyc3RQYXJ0eSksIFdURk1vdmUoc2FtZVNpdGVJbmZv
KSwgV1RGTW92ZSh1cmwpLCAqZnJhbWVJRCwgKnBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVj
b2Rlci5jcHAKaW5kZXggNjE5OWRiOWI3NTYyMjc5MjExZDkyYTdlNzljMzk4NmMxYWJlZDJmNy4u
NzFlZTZhZWVmMmMzMzEwZTFmNTg2YTgwZTE5NWMxMTVjNmVkNTJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTE3NSwx
MiArMTc1LDEyIEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZGVjb2RlRXNjYXBlZChjb25zdCBE
ZWNvZGVUYXNrJiB0YXNrKQogc3RhdGljIE9wdGlvbmFsPFJlc3VsdD4gZGVjb2RlU3luY2hyb25v
dXNseShEZWNvZGVUYXNrJiB0YXNrLCBNb2RlIG1vZGUpCiB7CiAgICAgaWYgKCF0YXNrLnByb2Nl
c3MoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICh0YXNrLmlzQmFzZTY0KSB7CiAgICAgICAgIGF1dG8gZGVjb2Rl
ZERhdGEgPSBkZWNvZGVCYXNlNjQodGFzaywgbW9kZSk7CiAgICAgICAgIGlmICghZGVjb2RlZERh
dGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IFdURk1vdmUoKmRlY29k
ZWREYXRhKTsKICAgICB9IGVsc2UKICAgICAgICAgdGFzay5yZXN1bHQuZGF0YSA9IGRlY29kZUVz
Y2FwZWQodGFzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwCmluZGV4IDcxMzBhMGM4MWVmNzIwZjQ5MGU4NzJjNTgwZDk3YTdiZmUzNTYxOTAuLjBmZTk0
ZjQyOWQ3Y2M0MDRjM2U1ZDIxYTgzYjI1MmQ2YjE4YzZiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdWludDY0
X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKGNvbnN0IEZ1bmN0aW9uPHVpbnQ2NF90
KGNvbnN0IFVSTCYpPiYgYmwKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZp
bGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGZpbGVEYXRhLmZpbGVMZW5ndGgpOwotICAgICAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVEYXRhLmZpbGVuYW1lKS52YWx1
ZU9yKDApOworICAgICAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKGZpbGVEYXRh
LmZpbGVuYW1lKS52YWx1ZV9vcigwKTsKICAgICAgICAgfSwgWyZibG9iU2l6ZV0gKGNvbnN0IEZv
cm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewogICAgICAgICAgICAg
cmV0dXJuIGJsb2JTaXplKGJsb2JEYXRhLnVybCk7CiAgICAgICAgIH0KQEAgLTE3Niw3ICsxNzYs
NyBAQCBGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25z
dAogCiB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBz
aXplKQogewotICAgIG1fbGVuZ3RoSW5CeXRlcyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xlbmd0
aEluQnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtX2VsZW1lbnRzLmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAoYXV0byogdmVjdG9yID0gV1RGOjpnZXRfaWY8VmVjdG9yPGNoYXI+Piht
X2VsZW1lbnRzLmxhc3QoKS5kYXRhKSkgewogICAgICAgICAgICAgdmVjdG9yLT5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwpAQCAtMTg4LDIwICsxODgs
MjAgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogewotICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgMCwg
QmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgV1RGOjpudWxsb3B0KSk7Ci0gICAgbV9sZW5ndGhJ
bkJ5dGVzID0gV1RGOjpudWxsb3B0OworICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxl
bWVudChmaWxlbmFtZSwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSwgc3RkOjpudWxsb3B0
KSk7CisgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZvcm1E
YXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBPcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxl
bmFtZSwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7Ci0gICAgbV9s
ZW5ndGhJbkJ5dGVzID0gV1RGOjpudWxsb3B0OworICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JV
UkwpCiB7CiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsK
LSAgICBtX2xlbmd0aEluQnl0ZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9sZW5ndGhJbkJ5dGVz
ID0gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IG5vcm1hbGl6ZVN0
cmluZ0RhdGEoVGV4dEVuY29kaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAppbmRleCA1NTM5YWYyZWI2
ZDBmNWFjNzgwYzhiYjdjOWIxMjMzZjdjY2M5YzExLi45ZGFjNjBlN2FkM2JlNDk1MGY2OTc5YmM2
ZjQzYjZjNzYwOWY0Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCkBAIC02NCw3ICs2NCw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAg
ICBPcHRpb25hbDxEYXRhPiBkYXRhOwogICAgICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgICAg
IGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KFdU
Rk1vdmUoKmRhdGEpKTsKICAgICB9CiAKQEAgLTk3LDIyICs5NywyMiBAQCBzdHJ1Y3QgRm9ybURh
dGFFbGVtZW50IHsKICAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gZmlsZW5hbWU7CiAgICAg
ICAgICAgICBkZWNvZGVyID4+IGZpbGVuYW1lOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE9wdGlvbmFsPGlu
dDY0X3Q+IGZpbGVTdGFydDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZmlsZVN0YXJ0OwogICAg
ICAgICAgICAgaWYgKCFmaWxlU3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBPcHRpb25hbDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwogICAgICAgICAgICAg
ZGVjb2RlciA+PiBmaWxlTGVuZ3RoOwogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9u
YWw8V2FsbFRpbWU+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAg
ZGVjb2RlciA+PiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgaWYg
KCFleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqZmlsZW5hbWUpLApA
QCAtMTQwLDcgKzE0MCw3IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAg
T3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHVybDsKICAgICAgICAg
ICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7
IFdURk1vdmUoKnVybCkgfX07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggYTBlYzIwNjlkOTI5Nzc3YzRiMjFlMmE0
ZTMwODBlYTk0ZGFkZDM0MS4uZjQ0MjE3MDhlMTU2NDllYjEwMGVkOThhMmM0NzRlNDc4YWZhNDRj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVy
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFw
LmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoaXQgPT0gbV90
YWJsZS51bmNvbW1vbkhlYWRlcnMoKS5lbmQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBtX2tleVZhbHVlLmtleSA9IGl0LT5rZXk7Ci0gICAgICAgICAgICBt
X2tleVZhbHVlLmtleUFzSFRUUEhlYWRlck5hbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICBtX2tleVZhbHVlLmtleUFzSFRUUEhlYWRlck5hbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBtX2tleVZhbHVlLnZhbHVlID0gaXQtPnZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KQEAgLTIyOSwxMCArMjI5LDEwIEBAIGF1dG8gSFRUUEhlYWRlck1hcDo6
Q29tbW9uSGVhZGVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8Q29tbW9u
SGVhCiB7CiAgICAgSFRUUEhlYWRlck5hbWUgbmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIFN0cmluZyB2YWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZh
bHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBDb21tb25IZWFkZXIgeyBuYW1lLCBXVEZNb3ZlKHZhbHVl
KSB9OwogfQpAQCAtMjQ5LDEwICsyNDksMTAgQEAgYXV0byBIVFRQSGVhZGVyTWFwOjpVbmNvbW1v
bkhlYWRlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPFVuY29tbW8KIHsK
ICAgICBTdHJpbmcgbmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFN0cmluZyB2YWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBVbmNvbW1vbkhlYWRlciB7IFdURk1vdmUobmFtZSksIFdURk1vdmUodmFsdWUpIH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CmluZGV4IDM3NmQ1ZTc2M2NmMjdhN2M2ZGVkNzQ4MzU5ZDdhMzQ4YjNmZDM2YzMuLmEzMmFkNzc0
ODZmNjA3ZmVkN2Q4NjVlMGNkNDliYzYzOTNiYTA5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgT3B0
aW9uYWw8V2FsbFRpbWU+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBkb3VibGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxs
VGVybWluYXRlZENoYXJhY3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBvY2gpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIFRoaXMg
YXNzdW1lcyBzeXN0ZW1fY2xvY2sgZXBvY2ggZXF1YWxzIFVuaXggZXBvY2ggd2hpY2ggaXMgdHJ1
ZSBmb3IgYWxsIGltcGxlbWVudGF0aW9ucyBidXQgdW5zcGVjaWZpZWQuCiAgICAgLy8gRklYTUU6
IFRoZSBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSBzd2l0Y2hlZCB0byBXYWxsVGltZSB0b28u
CiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkYXRlSW5NaWxsaXNlY29uZHNT
aW5jZUVwb2NoIC8gMTAwMC4wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmgKaW5kZXggYzFiMjIzNzhmZTU1NmVk
MjI3NWY2ZDNkNWJhNjM4Nzk3YTgyZjQyYy4uNjE5NTljY2QxNDAzYTg3MjY2YTYwNmE4Zjc3YzA4
NTJkNTY1ZmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrTG9hZEluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmgKQEAgLTY0LDEzICs2NCwxMyBAQCB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8TmV0d29ya1RyYW5zYWN0aW9uSW5mb3Jt
YXRpb24+IE5ldHdvcmtUcgogICAgIE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uIGluZm9y
bWF0aW9uOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvcm1hdGlvbi50eXBlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm9ybWF0aW9uLnJlcXVlc3QpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW5mb3JtYXRpb24ucmVzcG9uc2UpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaW5mb3JtYXRpb24ubWV0cmljcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaW5mb3Jt
YXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCmluZGV4IGFjY2Y5NDQxYzNjNjZhYjkyNTk5YjM1ODdi
MWI5OTdiMWUwM2RkODcuLjQzYjgxMWMzOTMyZGNhNGE2MWFhZDA3Y2E5ZDUxMzVhNWRlOGZjOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRl
Tm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTmV0d29ya1N0YXRlTm90
aWZpZXI6Om9uTGluZSgpCiB7CiAgICAgaWYgKCFtX2lzT25MaW5lKQogICAgICAgICB1cGRhdGVT
dGF0ZSgpOwotICAgIHJldHVybiBtX2lzT25MaW5lLnZhbHVlT3IodHJ1ZSk7CisgICAgcmV0dXJu
IG1faXNPbkxpbmUudmFsdWVfb3IodHJ1ZSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZp
ZXI6OmFkZExpc3RlbmVyKFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBsaXN0ZW5lcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcAppbmRleCBmOTQ0Yjc3OWI1ZmJhMmEwYjQxMzQyMDUyN2E4MmJhNjdiZTU3
MTYzLi5kZjBmYWU5ZTBkNDRiZGM2ZGU2NWM0MTFjNGJlODYwMDFmZDM5NzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCkBAIC0xODAsOSArMTgwLDkgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNob3VsZEV4ZW1wdERvbWFpblBhaXJGcm9tVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKGMKIAog
T3B0aW9uYWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKG1fY2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZzo6Tm8pKQorICAgIGlmIChtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
ICYmIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6Ok5vKSkKICAgICAgICAgcmV0
dXJuIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXM7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8U2Vj
b25kcz4gc2Vjb25kcykKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNv
bgogICAgIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogewotICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQpAQCAtNDE1LDcgKzQxNSw3IEBAIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luCiAg
ICAgYXV0byBpdCA9IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5maW5kKHRvcEZyYW1lRG9tYWluKTsK
ICAgICBpZiAoaXQgIT0gc3RvcmFnZUFjY2Vzc1F1aXJrcygpLmVuZCgpKQogICAgICAgICByZXR1
cm4gaXQtPnZhbHVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYg
dG9wRG9tYWluLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgc3ViRG9tYWluKQpAQCAtNDI2LDcg
KzQyNiw3IEBAIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmZpbmRBZGRpdGlvbmFsTG9naW5Eb21haW4oY29uCiAgICAgaWYgKHN1YkRvbWFpbi5zdHJp
bmcoKSA9PSAic29ueWVudGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyAmJiB0b3BEb21haW4uc3Ry
aW5nKCkgPT0gInBsYXlzdGF0aW9uLmNvbSJfcykKICAgICAgICAgcmV0dXJuIFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInNvbnku
Y29tIl9zKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaAppbmRleCA3OGVjMDZiNzRlNDcyYmQ2MzhhOWY1ZTkzNzBiZjJmNmI4ZjliMjYz
Li45OWI1MzFmOTdhOWFiMjI1ZWE5NDIwYzUxZmI3ZWYzOTI0MDkwYzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRlOgogfTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQotV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGVVJM
U3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1Jl
ZiBpZGVudGlmaWVyLCBPcHRpb25hbDxIVFRQQ29va2llQWNjZXB0UG9saWN5PiA9IFdURjo6bnVs
bG9wdCk7CitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlv
bmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRl
bnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVu
dFR5cGUuY3BwCmluZGV4IDk3NWRkM2UyZWU1YmNjNmQzZDQxZDAwNWEwMGU0YTU0N2QwZDhkMDku
Ljg2MzE0YzQ2NDNlZDliNzQyMWQzODZjZTVlNGI2MzI0OWIzZTI2MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwCkBA
IC0zMzEsMTMgKzMzMSwxMyBAQCBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gUGFyc2VkQ29u
dGVudFR5cGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLAogewogICAgIFBhcnNl
ZENvbnRlbnRUeXBlIHBhcnNlZENvbnRlbnRUeXBlKG1vZGUgPT0gTW9kZTo6UmZjMjA0NSA/IGNv
bnRlbnRUeXBlIDogc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBl
KSk7CiAgICAgaWYgKCFwYXJzZWRDb250ZW50VHlwZS5wYXJzZUNvbnRlbnRUeXBlKG1vZGUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB7IFdURk1vdmUocGFyc2VkQ29udGVudFR5cGUpIH07CiB9CiAKIGJvb2wg
aXNWYWxpZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIE1vZGUgbW9kZSkK
IHsKLSAgICByZXR1cm4gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShjb250ZW50VHlwZSwgbW9k
ZSkgIT0gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRl
KGNvbnRlbnRUeXBlLCBtb2RlKSAhPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIFBhcnNlZENvbnRlbnRU
eXBlOjpQYXJzZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2Uu
Y3BwCmluZGV4IDFjNGQzYzNmMjQ3NzQ2ZjRhZmYyMGFjYzljMjAyNjFlNjE5YWFiZDAuLmMxOTQy
YWZkNzg0Zjk4MmJkMmRhMWNlYzBiMmI2ZDFmNWQ0ZjgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKQEAgLTM0
LDI5ICszNCwyOSBAQCBPcHRpb25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+IFBhcnNlZFJlcXVlc3RS
YW5nZTo6cGFyc2UoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTIuMSBidXQgYXNzdW1pbmcgdGhlcmUgd2lsbCBh
bHdheXMgYmUgYSBiZWdpbiBhbmQgYW4gZW5kIG9yIHBhcnNpbmcgd2lsbCBmYWlsCiAgICAgaWYg
KCFpbnB1dC5zdGFydHNXaXRoKFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6
ZV90IGJlZ2luIHsgMCB9OwogICAgIHNpemVfdCBlbmQgeyAwIH07CiAgICAgc2l6ZV90IHJhbmdl
QmVnaW5Qb3NpdGlvbiA9IDY7CiAgICAgc2l6ZV90IGRhc2hQb3NpdGlvbiA9IGlucHV0LmZpbmQo
Jy0nLCByYW5nZUJlZ2luUG9zaXRpb24pOwogICAgIGlmIChkYXNoUG9zaXRpb24gPT0gbm90Rm91
bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIGJlZ2luU3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKHJhbmdlQmVn
aW5Qb3NpdGlvbiwgZGFzaFBvc2l0aW9uIC0gcmFuZ2VCZWdpblBvc2l0aW9uKTsKICAgICBhdXRv
IG9wdGlvbmFsQmVnaW4gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGJlZ2luU3RyaW5nKTsKICAg
ICBpZiAoIW9wdGlvbmFsQmVnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYmVnaW4gPSAqb3B0aW9uYWxCZWdpbjsKIAog
ICAgIGF1dG8gZW5kU3RyaW5nID0gaW5wdXQuc3Vic3RyaW5nKGRhc2hQb3NpdGlvbiArIDEpOwog
ICAgIGF1dG8gb3B0aW9uYWxFbmQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KGVuZFN0cmluZyk7
CiAgICAgaWYgKCFvcHRpb25hbEVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBlbmQgPSAqb3B0aW9uYWxFbmQ7CiAKICAg
ICBpZiAoYmVnaW4gPiBlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgYmVnaW4sIGVuZCB9fTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwCmluZGV4IGUwNjk4Njg4NjU3YjFmYzFlMzU1MTdjN2I0ZTIyYzlmN2YxMGI4
ZWEuLjIwNDc1ODMxYzU5MTI1N2ZjMTI5YWYyZGNmODg0YjJiZGI1YTg5MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcApAQCAtNjA5LDcgKzYwOSw3IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNTeXN0
ZW1QcmV2aWV3KCkgY29uc3QKIAogU3lzdGVtUHJldmlld0luZm8gUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c3lzdGVtUHJldmlld0luZm8oKSBjb25zdAogewotICAgIHJldHVybiBtX3N5c3RlbVByZXZp
ZXdJbmZvLnZhbHVlT3IoU3lzdGVtUHJldmlld0luZm8geyB9KTsKKyAgICByZXR1cm4gbV9zeXN0
ZW1QcmV2aWV3SW5mby52YWx1ZV9vcihTeXN0ZW1QcmV2aWV3SW5mbyB7IH0pOwogfQogCiB2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OnNldFN5c3RlbVByZXZpZXdJbmZvKGNvbnN0IFN5c3RlbVBy
ZXZpZXdJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBhYTkxNjJlNDkwZmVmNjEwNjkx
ZGUyNDY5NDNkMzFkODJhMWUyZTU0Li41MjY1MzIzMzAxNzBlMTZmMTkwMjhhZDkzOTNiYzRiMDY0
NDg3ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFJlc291cmNlUmVz
cG9uc2UgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwKICAgICBBU1NFUlQocmVzcG9uc2UudGFpbnRpbmcoKSA9PSBUYWludGluZzo6
Q29ycyk7CiAgICAgZmlsdGVyZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCi0gICAg
YXV0byBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxs
b3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlT3IoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKKyAgICBhdXRvIGFj
Y2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKICAgICBpZiAocGVyZm9ybUNo
ZWNrID09IFBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIikpCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZFJl
c3BvbnNlOwogCkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2FuaXRpemVIVFRQSGVhZGVyRmllbGRzQWNjb3JkaW5nVG9UYWludGluZygpCiAgICAgY2FzZSBS
ZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6QmFzaWM6CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3JzOiB7Ci0gICAgICAgIGF1dG8gY29y
c1NhZmVIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRy
b2xFeHBvc2VIZWFkZXJzKSkudmFsdWVPcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiB7IH0pOworICAgICAgICBhdXRvIGNvcnNTYWZlSGVhZGVyU2V0ID0gcGFyc2VB
Y2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVl
X29yKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfSk7CiAgICAg
ICAgIGlmIChjb3JzU2FmZUhlYWRlclNldC5jb250YWlucygiKiIpKQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC02OTcsNyArNjk3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdhbGxUaW1lPiBwYXJz
ZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEgKIHsKICAg
ICBTdHJpbmcgaGVhZGVyVmFsdWUgPSBoZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKICAgICBpZiAo
aGVhZGVyVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIFRoaXMgaGFuZGxlcyBhbGwgZGF0ZSBm
b3JtYXRzIHJlcXVpcmVkIGJ5IFJGQzI2MTY6CiAgICAgLy8gU3VuLCAwNiBOb3YgMTk5NCAwODo0
OTozNyBHTVQgIDsgUkZDIDgyMiwgdXBkYXRlZCBieSBSRkMgMTEyMwogICAgIC8vIFN1bmRheSwg
MDYtTm92LTk0IDA4OjQ5OjM3IEdNVCA7IFJGQyA4NTAsIG9ic29sZXRlZCBieSBSRkMgMTAzNgpA
QCAtNzUzLDcgKzc1Myw3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKICAgICAgICAgLy8gYW4gaW52YWxpZCB2YWx1ZSAocmRh
cjovL3Byb2JsZW0vMjIzNTI4MzgpLgogICAgICAgICBjb25zdCBXYWxsVGltZSBlcG9jaCA9IFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcygwKTsKICAgICAgICAgaWYgKG1fbGFzdE1vZGlmaWVkICYm
IG1fbGFzdE1vZGlmaWVkLnZhbHVlKCkgPT0gZXBvY2gpCi0gICAgICAgICAgICBtX2xhc3RNb2Rp
ZmllZCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fbGFzdE1vZGlmaWVkID0gc3RkOjpu
dWxsb3B0OwogI2VuZGlmCiAgICAgICAgIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA9
IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5jcHAKaW5kZXggMjIzYzA3MTgyNzA3YjEwMzZj
ZTI1ZTE0NWNkNjAzYTcxMjRhNjNiNS4uNzBmZTFkYTZhZDBmM2Q2OTZlZjE5NGZmNGUyMWRmYWM4
NzgzYTVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBz
aXplX3QgcmVtb3ZlVGVybWluYXRpb25DaGFyYWN0ZXJzKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoCiBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFZlY3Rvcjx1aW50OF90
PiwgYm9vbD4+IGNvb2tpZURhdGFGb3JIYW5kc2hha2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KQogewogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNz
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIGF1dG8gW2Nvb2tpZURhdGFTdHJpbmcsIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZF0gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGhlYWRlckZpZWxkUHJveHkpOwogICAgIGlmIChjb29raWVEYXRhU3RyaW5nLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ2Vy
dGlmaWNhdGVJbmZvQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKaW5kZXggYmEyZjdhMGMzM2Q0Y2IwNjdhOWY1YjVh
MTg3MWUxYmMzZWZlNzE4NS4uMjAxZmJkOTdlZmJmM2E5MGM0ODkwMTlhNzVkNjllMjg5ZWIxOWU1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZp
Y2F0ZUluZm9DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBPcHRpb25hbDxD
ZXJ0aWZpY2F0ZVN1bW1hcnk+IENlcnRpZmljYXRlSW5mbzo6c3VtbWFyeSgpIGNvbnN0CiB7CiAg
ICAgYXV0byBjaGFpbiA9IGNlcnRpZmljYXRlQ2hhaW4oKTsKICAgICBpZiAoIWNoYWluKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgQ2VydGlmaWNhdGVTdW1tYXJ5IHN1bW1hcnlJbmZvOwogCkBAIC0yMDcsMTEgKzIwNywx
MSBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGRGF0YVJlZj4+IGRlY29kZUNGRGF0YShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIGRlY29kZXIgPj4gc2l6ZTsKIAogICAgIGlmIChVTkxJS0VM
WSghaXNJbkJvdW5kczxzaXplX3Q+KCpzaXplKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBvaW50ZXIgPSBk
ZWNvZGVyLmJ1ZmZlclBvaW50ZXJGb3JEaXJlY3RSZWFkKHN0YXRpY19jYXN0PHNpemVfdD4oKnNp
emUpKTsKICAgICBpZiAoIXBvaW50ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFD
cmVhdGUobnVsbHB0ciwgcG9pbnRlciwgKnNpemUpKTsKIH0KQEAgLTIzNCwxOCArMjM0LDE4IEBA
IHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8U2VjVHJ1c3RSZWY+PiBkZWNvZGVTZWNUcnVzdFJl
ZihEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPGJvb2w+IGhhc1RydXN0OwogICAgIGRl
Y29kZXIgPj4gaGFzVHJ1c3Q7CiAgICAgaWYgKCFoYXNUcnVzdCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghKmhh
c1RydXN0KQogICAgICAgICByZXR1cm4geyBudWxscHRyIH07CiAKICAgICBhdXRvIHRydXN0RGF0
YSA9IGRlY29kZUNGRGF0YShkZWNvZGVyKTsKICAgICBpZiAoIXRydXN0RGF0YSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gdHJ1c3QgPSBhZG9wdENGKFNlY1RydXN0RGVzZXJpYWxpemUodHJ1c3REYXRhLT5nZXQo
KSwgbnVsbHB0cikpOwogICAgIGlmICghdHJ1c3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdHJ1c3Q7CiB9
CkBAIC0yNzMsMTQgKzI3MywxNCBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPENGQXJyYXlS
ZWY+PiBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gYXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
KnNpemU7ICsraSkgewogICAgICAgICBhdXRvIGRhdGEgPSBkZWNvZGVDRkRhdGEoZGVjb2Rlcik7
CiAgICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gY2VydGlmaWNh
dGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoMCwgZGF0YS0+Z2V0KCkp
KTsKICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCBjZXJ0aWZpY2F0ZS5n
ZXQoKSk7CkBAIC0zMTcsMTQgKzMxNywxNCBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8+IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZAogICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZT4gY2VydGlmaWNhdGVJbmZv
VHlwZTsKICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlSW5mb1R5cGU7CiAgICAgaWYgKCFjZXJ0
aWZpY2F0ZUluZm9UeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoICgqY2VydGlmaWNhdGVJbmZvVHlwZSkg
ewogI2lmIEhBVkUoU0VDX1RSVVNUX1NFUklBTElaQVRJT04pCiAgICAgY2FzZSBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm86OlR5cGU6OlRydXN0OiB7CiAgICAgICAgIGF1dG8gdHJ1c3QgPSBkZWNv
ZGVTZWNUcnVzdFJlZihkZWNvZGVyKTsKICAgICAgICAgaWYgKCF0cnVzdCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oV1RGTW92ZSgqdHJ1c3Qp
KTsKICAgICB9CkBAIC0zMzMsNyArMzMzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvPiBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2QKICAg
ICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjog
ewogICAgICAgICBhdXRvIGNlcnRpZmljYXRlQ2hhaW4gPSBkZWNvZGVDZXJ0aWZpY2F0ZUNoYWlu
KGRlY29kZXIpOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlQ2hhaW4pCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoKmNlcnRpZmlj
YXRlQ2hhaW4pKTsKICAgICB9CkBAIC0zNDMsNyArMzQzLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvPiBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUo
RGVjb2QKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbygpOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgUGVyc2lzdGVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENG
TmV0LmNwcAppbmRleCA5OTE1ZjBjZWFjYWY5NDZlYjRhZjJkNmI3NDBmNzIyNmUzNDRiNzhkLi5l
NjdlODNjNmIxNmVmYmNjMjU4MmMzYTg2MjQyZjU1ZjljNGI1MmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03MjQsNyArNzI0LDcgQEAgT3B0aW9uYWw8c2l6ZV90
PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50
OF90KiBkYXQKIAogICAgIENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3Jp
dGVTdHJlYW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVu
Z3RoKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKHJlc3VsdCA+PSAw
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvQ29va2llQ29jb2EubW0KaW5kZXgg
YWEzOTAyNzE4MmQ3ODRhN2Q5NDY3N2E4ZTAwZmYwMDAwZDdlZjU3NS4uOGE1MDY1MGNlYTg2MmUx
NTVmMjUzM2I0ZmRkNzM5ZjdiODNjMTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tCkBAIC04OCw3ICs4OCw3IEBAIHN0
YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvb2tpZUV4cGlyeShOU0hUVFBDb29raWUgKmNvb2tpZSkK
IHsKICAgICBOU0RhdGUgKmV4cGlyeURhdGUgPSBjb29raWUuZXhwaXJlc0RhdGU7CiAgICAgaWYg
KCFleHBpcnlEYXRlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBbZXhwaXJ5RGF0ZSB0aW1lSW50ZXJ2YWxTaW5j
ZTE5NzBdICogMTAwMC4wOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5t
bQppbmRleCAxMWM5YTIzODNjZDZjOGMzMDFhMWEwOGRjZGVhZmFlNzlkMjYyYjQ0Li5kOTc4MmJi
MTA3MDQ2NjI1YWQwOTJjZGFmNTIxMTlmNDE0YTkyY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0KQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCiAgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSB0aGlzLT5jb29raWVTdG9yYWdl
KCk7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IGNvb2tpZXMgPSBodHRwQ29va2llc0ZvclVSTChj
b29raWVTdG9yYWdlLmdldCgpLCBuaWwsIFdURjo6bnVsbG9wdCwgdXJsKTsKKyAgICBSZXRhaW5Q
dHI8TlNBcnJheT4gY29va2llcyA9IGh0dHBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIG5pbCwgc3RkOjpudWxsb3B0LCB1cmwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVT
dHJpbmcgPSBjb29raWVOYW1lOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KaW5kZXgg
MTc1MjI2YmRmYThkMDgyZDYzZDlhN2U1OTU5MGIwY2RhNTJmNGZiNS4uZmRlMGZmY2RiZjRkYWZh
OWIyY2IwNDUwYzU5MDRlNWM4ZWNmZWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5t
bQpAQCAtMTcyLDcgKzE3Miw3IEBAIE9wdGlvbmFsPHNpemVfdD4gUmFuZ2VSZXNwb25zZUdlbmVy
YXRvcjo6ZXhwZWN0ZWRDb250ZW50TGVuZ3RoRnJvbURhdGEoY29uc3QgRGF0CiAgICAgLy8gRklY
TUU6IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBlY3RlZENvbnRlbnRMZW5ndGgoKSBzaG91bGQg
cmV0dXJuIE9wdGlvbmFsPHNpemVfdD4gaW5zdGVhZCBvZiB1cyBkb2luZyB0aGlzIGNoZWNrIGhl
cmUuCiAgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBkYXRhLm9yaWdpbmFsUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0
aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3Bw
CmluZGV4IDQxMGEyNzZmNGUwNjM5NzU2Y2U0YzBjM2YzY2YzMDVjNTYzNjA0MjEuLjkzY2Q4OGYz
MGE2Nzk3NjRhOTg4YzQ4ZTNlZjlmODNlZjI0ODdiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUN1cmwuY3BwCkBAIC02OCw3ICs2OCw3IEBAIFByb3RlY3Rpb25TcGFjZSBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlRm9yUGFzc3dvcmRCYXNlZChjb25z
dCBDCiAgICAgYXV0byBzZXJ2ZXJUeXBlID0gcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21V
UkkodXJsLCBpc1Byb3h5QXV0aCk7CiAgICAgYXV0byBhdXRoZW50aWNhdGlvblNjaGVtZSA9IGF1
dGhlbnRpY2F0aW9uU2NoZW1lRnJvbUN1cmxBdXRoKGlzUHJveHlBdXRoID8gY3VybFJlc3BvbnNl
LmF2YWlsYWJsZVByb3h5QXV0aCA6IGN1cmxSZXNwb25zZS5hdmFpbGFibGVIdHRwQXV0aCk7CiAK
LSAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3RhdGlj
X2Nhc3Q8aW50Pihwb3J0LnZhbHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBwYXJzZVJlYWxtKHJlc3Bv
bnNlKSwgYXV0aGVudGljYXRpb25TY2hlbWUpOworICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2Uo
dXJsLmhvc3QoKS50b1N0cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFsdWVfb3IoMCkp
LCBzZXJ2ZXJUeXBlLCBwYXJzZVJlYWxtKHJlc3BvbnNlKSwgYXV0aGVudGljYXRpb25TY2hlbWUp
OwogfQogCiBQcm90ZWN0aW9uU3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnByb3RlY3Rp
b25TcGFjZUZvclNlcnZlclRydXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDZXJ0aWZpY2F0ZUlu
Zm8mIGNlcnRpZmljYXRlSW5mbykKQEAgLTc3LDcgKzc3LDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpwcm90ZWN0aW9uU3BhY2VGb3JTZXJ2ZXJUcnVzdChjb25z
dCBVUkwKICAgICBhdXRvIHNlcnZlclR5cGUgPSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJv
bVVSSSh1cmwsIGZhbHNlKTsKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uU2NoZW1lID0gUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0
ZWQ7CiAKLSAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCkudG9TdHJpbmcoKSwg
c3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlT3IoMCkpLCBzZXJ2ZXJUeXBlLCBTdHJpbmcoKSwg
YXV0aGVudGljYXRpb25TY2hlbWUsIGNlcnRpZmljYXRlSW5mbyk7CisgICAgcmV0dXJuIFByb3Rl
Y3Rpb25TcGFjZSh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52
YWx1ZV9vcigwKSksIHNlcnZlclR5cGUsIFN0cmluZygpLCBhdXRoZW50aWNhdGlvblNjaGVtZSwg
Y2VydGlmaWNhdGVJbmZvKTsKIH0KIAogT3B0aW9uYWw8dWludDE2X3Q+IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpkZXRlcm1pbmVQcm94eVBvcnQoY29uc3QgVVJMJiB1cmwpCkBAIC05Myw3ICs5
Myw3IEBAIE9wdGlvbmFsPHVpbnQxNl90PiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6ZGV0ZXJt
aW5lUHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0Zh
bWlseSh1cmwpKQogICAgICAgICByZXR1cm4gc29ja3NQb3J0OwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBQcm90ZWN0aW9uU3BhY2VB
dXRoZW50aWNhdGlvblNjaGVtZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6YXV0aGVudGljYXRp
b25TY2hlbWVGcm9tQ3VybEF1dGgobG9uZyBjdXJsQXV0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm8uaAppbmRleCA2MzRl
NDFmYmRiN2Y3OTIxNDA4YzcwOTAxNWZlZGI5MzE0ZjQzNTdlLi5kY2EyMGJhM2M1NDIxNjBhMzE4
NTcwYzY3ZGE1MjBkN2YzY2YyYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oCkBAIC04NywxOSArODcsMTkgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAgICAg
ICAgIE9wdGlvbmFsPGludD4gdmVyaWZpY2F0aW9uRXJyb3I7CiAgICAgICAgIGRlY29kZXIgPj4g
dmVyaWZpY2F0aW9uRXJyb3I7CiAgICAgICAgIGlmICghdmVyaWZpY2F0aW9uRXJyb3IpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG51bU9mQ2VydHM7CiAgICAgICAgIGRl
Y29kZXIgPj4gbnVtT2ZDZXJ0czsKICAgICAgICAgaWYgKCFudW1PZkNlcnRzKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZUNoYWluIGNl
cnRpZmljYXRlQ2hhaW47CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtT2ZDZXJ0
cy52YWx1ZSgpOyBpKyspIHsKICAgICAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbzo6Q2VydGlmaWNhdGU+IGNlcnRpZmljYXRlOwogICAgICAgICAgICAgZGVjb2RlciA+
PiBjZXJ0aWZpY2F0ZTsKICAgICAgICAgICAgIGlmICghY2VydGlmaWNhdGUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgICAgICBjZXJ0aWZpY2F0ZUNoYWluLmFwcGVuZChXVEZNb3ZlKGNl
cnRpZmljYXRlLnZhbHVlKCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmlu
ZGV4IDE4ZmEyN2FhZWRkM2Y3M2Y5MGNjMDY0NjMxMDY3MGE3ZmI2MTdkYzkuLmVjMGY0YmEwY2Jl
NDFmZDFlY2U4YWI4ZmYyZjgzNjVmYjZhMGE5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0
ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWYKIE9wdGlvbmFsPENlcnRp
ZmljYXRlU3VtbWFyeT4gQ2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fY2VydGlmaWNhdGVDaGFpbi5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gT3BlblNTTDo6
Y3JlYXRlU3VtbWFyeUluZm8obV9jZXJ0aWZpY2F0ZUNoYWluLmF0KDApKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmlu
ZGV4IDA1ZDYyNWQwMTYxZGNmNGMyNzAwMTA3MzQ2NWQyNTMxZDRmMTU5MzguLmRiYjA1ODM4NWRh
YjdiNmUzOTVlMTU5ZDU4MWNmOTA3NDdiZDE2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzcyLDE0ICszNzIs
MTQgQEAgYm9vbCBDb29raWVKYXJEQjo6aGFzQ29va2llcyhjb25zdCBVUkwmIHVybCkKIE9wdGlv
bmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4m
IGh0dHBPbmx5LCBjb25zdCBPcHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBPcHRpb25hbDxi
b29sPiYgc2Vzc2lvbikKIHsKICAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2RhdGFiYXNlLmlz
T3BlbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgU3RyaW5nIHJlcXVlc3RIb3N0ID0gcmVxdWVzdFVybC5ob3N0KCku
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBpZiAocmVxdWVzdEhvc3QuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFjaGVja0Nvb2tpZUFjY2VwdFBvbGljeShmaXJzdFBhcnR5LCByZXF1
ZXN0VXJsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgp
LnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKQEAgLTM5NSw3ICsz
OTUsNyBAQCBPcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdAogICAgICAgICAiQU5EICgoZG9tYWluID0g
PykgT1IgKGRvbWFpbiBHTE9CID8pKSAiXAogICAgICAgICAiT1JERVIgQlkgbGVuZ3RoKHBhdGgp
IERFU0MsIGxhc3R1cGRhdGVkIl9zKTsKICAgICBpZiAoIXBzdG10KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcHN0bXQt
PmJpbmRJbnQ2NCgxLCBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNl
Y29uZHMoKSk7CiAgICAgcHN0bXQtPmJpbmRJbnQoMiwgaHR0cE9ubHkgPyAqaHR0cE9ubHkgOiAt
MSk7CkBAIC01MTEsNyArNTExLDcgQEAgYm9vbCBDb29raWVKYXJEQjo6Y2FuQWNjZXB0Q29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGMKIAogYm9vbCBD
b29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIGF1dG8g
ZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMC4wKTsKKyAgICBhdXRvIGV4cGlyZXMg
PSBjb29raWUuZXhwaXJlcy52YWx1ZV9vcigwLjApOwogICAgIGlmICghY29va2llLnNlc3Npb24g
JiYgTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoZXhwaXJlcyAvIFdURjo6bXNQZXJTZWNv
bmQpIDw9IE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICAgICByZXR1cm4gZGVsZXRlQ29va2ll
SW50ZXJuYWwoY29va2llLm5hbWUsIGNvb2tpZS5kb21haW4sIGNvb2tpZS5wYXRoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApp
bmRleCA0ODQ5YzY2N2MyYTEyODg0MWZmYjA1NzZhNjY5MGM0ZDhmZDQ1ZTIxLi4wOTFlOTQ3Nzcx
ODZkYjljNjA0OGYxNzc0YTc0ZmNmMTU5YWU0NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgSGFzaFNldDxTdHJpbmc+IGFsbERvbWFpbnMoKTsKICAgICBPcHRpb25hbDxW
ZWN0b3I8Q29va2llPj4gc2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYgcmVxdWVzdFVybCwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIGh0dHBPbmx5LCBjb25zdCBP
cHRpb25hbDxib29sPiYgc2VjdXJlLCBjb25zdCBPcHRpb25hbDxib29sPiYgc2Vzc2lvbik7CiAg
ICAgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwotICAgIGJvb2wgc2V0Q29va2llKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWUsIFNv
dXJjZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxvcHQpOwor
ICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWUsIFNvdXJjZSwgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRp
bWUgPSBzdGQ6Om51bGxvcHQpOwogICAgIGJvb2wgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwog
CiAgICAgYm9vbCBkZWxldGVDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAKaW5kZXggNWQ1MmM5ODgyYTMzMTUyMDg1NmExYjYyMzBmMWRkYjIxMDgwZDlk
Ni4uZTM1MDQ0ODIwNjIxZmJmNzkyY2VkNzA2ZDFkMDE0ZmNlM2QzNTBkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAt
MTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBT
dHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBDb29rCiBPcHRpb25hbDxDb29raWU+
IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSkKIHsKICAgICBpZiAo
Y29va2llTGluZS5sZW5ndGgoKSA+PSBNQVhfQ09PS0lFX0xJTkUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlz
IEFsZ29yaXRobSBpcyBiYXNlZCBvbiB0aGUgYWxnb3JpdGhtIGRlZmluZWQgaW4gUkZDIDYyNjUg
NS4yIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4yLwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0
LmNwcAppbmRleCAyZjY1NTZlZTA1YjFkN2MwNTYxZGJiNTIxMWI2Y2MwZWJjZjRhYzM5Li5mZmU3
NzBhZGI4ZjJiMWNmMDYwMGVjZDMxM2I4M2Y5MDk0NjU3ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjc2LDcgKzY3Niw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlVcmwoKQogewogICAgIGF1dG8mIHByb3h5ID0gQ3Vy
bENvbnRleHQ6OnNpbmdsZXRvbigpLnByb3h5U2V0dGluZ3MoKTsKICAgICBpZiAocHJveHkubW9k
ZSgpID09IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpEZWZhdWx0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHByb3h5LnVybCgpOwogfQpAQCAtNjg0LDEyICs2ODQsMTIgQEAgT3B0aW9uYWw8U3RyaW5nPiBD
dXJsSGFuZGxlOjpnZXRQcm94eVVybCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRS
ZXNwb25zZUNvZGUoKQogewogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBsb25nIHJlc3Bv
bnNlQ29kZTsKICAgICBDVVJMY29kZSBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hh
bmRsZSwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJnJlc3BvbnNlQ29kZSk7CiAgICAgaWYgKGVy
cm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXNwb25zZUNvZGU7CiB9CkBA
IC02OTcsMTIgKzY5NywxMiBAQCBPcHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRSZXNwb25z
ZUNvZGUoKQogT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5lY3RDb2RlKCkK
IHsKICAgICBpZiAoIW1faGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbG9uZyBodHRwQ29ubmVjdENvZGU7CiAg
ICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJ
TkZPX0hUVFBfQ09OTkVDVENPREUsICZodHRwQ29ubmVjdENvZGUpOwogICAgIGlmIChlcnJvckNv
ZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaHR0cENvbm5lY3RDb2RlOwogfQpAQCAt
NzEwLDEzICs3MTAsMTMgQEAgT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cENvbm5l
Y3RDb2RlKCkKIE9wdGlvbmFsPGxvbmcgbG9uZz4gQ3VybEhhbmRsZTo6Z2V0Q29udGVudExlbmd0
aCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBjb250ZW50TGVuZ3Ro
OwogCiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUs
IENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELCAmY29udGVudExlbmd0aCk7CiAgICAg
aWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KGNvbnRlbnRMZW5ndGgpOwogfQpAQCAtNzI0LDEyICs3MjQsMTIgQEAgT3B0aW9u
YWw8bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKIE9wdGlvbmFsPGxv
bmc+IEN1cmxIYW5kbGU6OmdldEh0dHBBdXRoQXZhaWwoKQogewogICAgIGlmICghbV9oYW5kbGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBsb25nIGh0dHBBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9yQ29k
ZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19IVFRQQVVUSF9BVkFJTCwg
Jmh0dHBBdXRoQXZhaWxhYmxlKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIGh0dHBBdXRoQXZhaWxhYmxlOwogfQpAQCAtNzM3LDEyICs3MzcsMTIgQEAg
T3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cEF1dGhBdmFpbCgpCiBPcHRpb25hbDxs
b25nPiBDdXJsSGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRs
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGxvbmcgcHJveHlBdXRoQXZhaWxhYmxlOwogICAgIENVUkxjb2RlIGVycm9y
Q29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19QUk9YWUFVVEhfQVZB
SUwsICZwcm94eUF1dGhBdmFpbGFibGUpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0sp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gcHJveHlBdXRoQXZhaWxhYmxlOwogfQpAQCAtNzUwLDEyICs3NTAs
MTIgQEAgT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0UHJveHlBdXRoQXZhaWwoKQogT3B0
aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0SHR0cFZlcnNpb24oKQogewogICAgIGlmICghbV9o
YW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBsb25nIHZlcnNpb247CiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0g
Y3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBfVkVSU0lPTiwgJnZlcnNp
b24pOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gdmVy
c2lvbjsKIH0KQEAgLTc2OSwyNyArNzY5LDI3IEBAIE9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmlj
cz4gQ3VybEhhbmRsZTo6Z2V0TmV0d29ya0xvYWRNZXRyaWNzKGNvbnN0IFdURjo6U2Vjb25kCiAg
ICAgbG9uZyB2ZXJzaW9uID0gMDsKIAogICAgIGlmICghbV9oYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDVVJM
Y29kZSBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fTkFN
RUxPT0tVUF9USU1FLCAmbmFtZUxvb2t1cCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9P
SykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJM
SU5GT19DT05ORUNUX1RJTUUsICZjb25uZWN0KTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxF
X09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENV
UkxJTkZPX0FQUENPTk5FQ1RfVElNRSwgJmFwcENvbm5lY3QpOwogICAgIGlmIChlcnJvckNvZGUg
IT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hh
bmRsZSwgQ1VSTElORk9fU1RBUlRUUkFOU0ZFUl9USU1FLCAmc3RhcnRUcmFuc2Zlcik7CiAgICAg
aWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGVycm9yQ29kZSA9IGN1cmxfZWFz
eV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19IVFRQX1ZFUlNJT04sICZ2ZXJzaW9uKTsKICAg
ICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTmV0d29ya0xvYWRNZXRyaWNz
IG5ldHdvcmtMb2FkTWV0cmljczsKIApAQCAtODY1LDcgKzg2NSw3IEBAIHZvaWQgQ3VybEhhbmRs
ZTo6YWRkRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpCiBPcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+IEN1cmxIYW5kbGU6OmNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3NzbFZlcmlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIG1fc3NsVmVyaWZpZXItPmNlcnRpZmljYXRlSW5mbygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxGb3JtRGF0YVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFt
LmNwcAppbmRleCBjZmRiZjBhMTFmNDUwMzJkZWU3YWViY2VmNDRkYjUyMDU4MjI0YjljLi43OWRk
YzM5OTI4YTgzOWNjYTc1NmQ4MjBjNGJlMWNlNGFkZWUzZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFt
LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQ3VybEZvcm1EYXRhU3RyZWFtOjpjb21wdXRl
Q29udGVudExlbmd0aCgpCiBPcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVh
ZChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAgIGlmICghbV9mb3JtRGF0YSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGNvbnN0IGF1dG8gdG90YWxFbGVtZW50U2l6ZSA9IG1fZm9ybURhdGEtPmVsZW1lbnRz
KCkuc2l6ZSgpOwogICAgIGlmIChtX2VsZW1lbnRQb3NpdGlvbiA+PSB0b3RhbEVsZW1lbnRTaXpl
KQpAQCAtMTMwLDEyICsxMzAsMTIgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJl
YW06OnJlYWQoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcmVhZEZyb21GaWxlKGZpbGVEYXRhLCBidWZmZXJQb3NpdGlvbiwgYnVmZmVyU2l6ZSk7CiAg
ICAgICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEm
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgfQogICAgICAgICApOwogCiAgICAgICAgIGlmICghcmVhZEJ5dGVz
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgdG90YWxSZWFkQnl0ZXMgKz0gKnJlYWRCeXRlczsKICAg
ICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJl
YW06OnJlYWRGcm9tRmlsZShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWQKICAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9maWxlSGFuZGxlKSkgewogICAgICAgICBMT0co
TmV0d29yaywgIkN1cmwgLSBGYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9h
ZFxuIiwgZmlsZURhdGEuZmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1fZmlsZUhh
bmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgYXV0byByZWFkQnl0ZXMgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9maWxlSGFu
ZGxlLCBidWZmZXIsIHNpemUpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIE9wdGlvbmFsPHNpemVfdD4g
Q3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkRnJvbUZpbGUoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkCiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ3VybCAtIEZhaWxlZCB3aGlsZSB0cnlpbmcg
dG8gcmVhZCAlcyBmb3IgdXBsb2FkXG4iLCBmaWxlRGF0YS5maWxlbmFtZS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAg
IG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgaWYgKCFyZWFkQnl0ZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApp
bmRleCBjY2RiYjI4MjM5ZjIyYzM2MzZjYWMxNGIwNzg1ZDZmNTVhYjJmNWJjLi43MDI0ZWM3YzFl
YjgyYjVjYjIzZGE1ODBiMmUzNmJhYjEwZGVkM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uCiAgICAgICAgIHJldHVy
biBTdHJpbmcoIi0tIiArICpib3VuZGFyeSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTdHJpbmc+IEN1
cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQpAQCAtODEsNyArODEsNyBAQCBPcHRpb25hbDxTdHJpbmc+IEN1
cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBT
dHJpbgogCiAgICAgYXV0byBib3VuZGFyeVN0YXJ0ID0gY29udGVudFR5cGUuZmluZElnbm9yaW5n
QVNDSUlDYXNlKCJib3VuZGFyeT0iKTsKICAgICBpZiAoYm91bmRhcnlTdGFydCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGJvdW5kYXJ5U3RhcnQgKz0gbGVuZ3RoOwogICAgIHNpemVfdCBib3VuZGFy
eUVuZCA9IDA7CkBAIC05MSwxMyArOTEsMTMgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlw
YXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW4KICAg
ICAgICAgKytib3VuZGFyeVN0YXJ0OwogICAgICAgICBib3VuZGFyeUVuZCA9IGNvbnRlbnRUeXBl
LmZpbmQoJyInLCBib3VuZGFyeVN0YXJ0KTsKICAgICAgICAgaWYgKGJvdW5kYXJ5RW5kID09IG5v
dEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSBlbHNlIGlmIChjb250ZW50VHlwZVtib3VuZGFyeVN0
YXJ0XSA9PSAnXCcnKSB7CiAgICAgICAgIC8vIEJvdW5kYXJ5IHZhbHVlIHN0YXJ0cyB3aXRoIGEg
JyBxdW90ZS4gU2VhcmNoIGZvciB0aGUgY2xvc2luZyBvbmUuCiAgICAgICAgICsrYm91bmRhcnlT
dGFydDsKICAgICAgICAgYm91bmRhcnlFbmQgPSBjb250ZW50VHlwZS5maW5kKCdcJycsIGJvdW5k
YXJ5U3RhcnQpOwogICAgICAgICBpZiAoYm91bmRhcnlFbmQgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDaGVjayBmb3IgdGhlIGVuZCBvZiB0aGUgYm91
bmRhcnkuIFRoYXQgY2FuIGJlIGEgc2VtaWNvbG9uIG9yIGEgbmV3bGluZS4KICAgICAgICAgYm91
bmRhcnlFbmQgPSBjb250ZW50VHlwZS5maW5kKCc7JywgYm91bmRhcnlTdGFydCk7CkBAIC0xMDcs
NyArMTA3LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0
Qm91bmRhcnlGcm9tQ29udGVudFR5cGUoY29uc3QgU3RyaW4KIAogICAgIC8vIFRoZSBib3VuZGFy
eSBlbmQgc2hvdWxkIG5vdCBiZSBiZWZvcmUgdGhlIHN0YXJ0CiAgICAgaWYgKGJvdW5kYXJ5RW5k
IDw9IGJvdW5kYXJ5U3RhcnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY29udGVudFR5cGUuc3Vic3RyaW5n
KGJvdW5kYXJ5U3RhcnQsIGJvdW5kYXJ5RW5kIC0gYm91bmRhcnlTdGFydCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNl
dHRpbmdzLmNwcAppbmRleCAxODM3ZGI0NDc5NzUzNjQ4MDkzMTM5NTljOTlhMzFkNjlmMjZmOWFk
Li5kZTA5MjdmZTFhM2E2ZGEzMTc4MGM1ODQ5NTNhMGE5NjBkNGUxYzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0
aW5ncy5jcHAKQEAgLTEwMywyMCArMTAzLDIwIEBAIHN0YXRpYyBPcHRpb25hbDx1aW50MTZfdD4g
Z2V0UHJveHlQb3J0KGNvbnN0IFVSTCYgdXJsKQogICAgIGlmIChwcm90b2NvbElzSW5Tb2Nrc0Zh
bWlseSh1cmwpKQogICAgICAgICByZXR1cm4gU29ja3NQcm94eVBvcnQ7CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBPcHRp
b25hbDxTdHJpbmc+IGNyZWF0ZVByb3h5VXJsKGNvbnN0IFVSTCAmdXJsKQogewogICAgIGlmICh1
cmwuaXNFbXB0eSgpIHx8IHVybC5ob3N0KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCF1cmwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFwcm90b2NvbElzSW5Tb2Nrc0ZhbWlseSh1cmwp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byBwb3J0ID0gZ2V0UHJveHlQb3J0KHVybCk7CiAgICAgaWYgKCFwb3J0
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgYXV0byB1c2VycGFzcyA9IHVybC5oYXNDcmVkZW50aWFscygpID8gbWFrZVN0
cmluZyh1cmwudXNlcigpLCAiOiIsIHVybC5wYXNzd29yZCgpLCAiQCIpIDogU3RyaW5nKCk7CiAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcodXJsLnByb3RvY29sKCksICI6Ly8iLCB1c2VycGFzcywgdXJs
Lmhvc3QoKSwgIjoiLCAqcG9ydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAKaW5kZXggYWU4NmQyYjEyZGIyZWRlNTQ1
MmQ4YjJiYTVhYjIyN2NiZmQ5MDUzMi4uNjllYzI2MmRjYjJiZTgyNmE4OGI4MDA5N2ZkMDk3ZjQ0
ZGEzNjRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxTU0xIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsU1NMSGFuZGxlLmNwcApAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxDdXJsU1NM
SGFuZGxlOjpDbGllbnRDZXJ0aWZpY2F0ZT4gQ3VybFNTTEhhbmRsZTo6Z2V0U1NMQ2xpZW50Q2Vy
dGlmaWNhdAogCiAgICAgYXV0byBpdCA9IG1fYWxsb3dlZENsaWVudEhvc3RzLmZpbmQoaG9zdE5h
bWUpOwogICAgIGlmIChpdCA9PSBtX2FsbG93ZWRDbGllbnRIb3N0cy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBpdC0+dmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggNzA3NzQ4NDM4OTNiMzA2MzcxMjI4ZmQ2OTJmYjU0NGE4NjhlMjdiNi4uYjI0ZTliNmVk
OWQ0NTAzY2M0MDU4MjAwNDU5ZTc5MWQwMTc4N2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcApAQCAtNTcsMTAgKzU3LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0Zv
clNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjb29raWVzOwogCi0gICAgYXV0byBzZWFyY2hIVFRQT25s
eSA9IGZvckhUVFBIZWFkZXIgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxib29sPiB7IGZhbHNl
IH07Ci0gICAgYXV0byBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSA/IFdURjo6bnVs
bG9wdCA6IE9wdGlvbmFsPGJvb2w+IHsgZmFsc2UgfTsKKyAgICBhdXRvIHNlYXJjaEhUVFBPbmx5
ID0gZm9ySFRUUEhlYWRlciA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHsgZmFsc2Ug
fTsKKyAgICBhdXRvIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gc3RkOjpudWxs
b3B0IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OwogCi0gICAgaWYgKGF1dG8gcmVzdWx0ID0g
c2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBz
ZWFyY2hIVFRQT25seSwgc2VjdXJlLCBXVEY6Om51bGxvcHQpKSB7CisgICAgaWYgKGF1dG8gcmVz
dWx0ID0gc2Vzc2lvbi5jb29raWVEYXRhYmFzZSgpLnNlYXJjaENvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBzZWFyY2hIVFRQT25seSwgc2VjdXJlLCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgY29va2llIDogKnJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCFjb29r
aWVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb29raWVzLmFwcGVuZCgiOyAiKTsKQEAg
LTEwMSw3ICsxMDEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lUwogICAgIE9wdGlvbmFsPFNl
Y29uZHM+IGNhcHBlZExpZmV0aW1lID0gY2xpZW50U2lkZUNvb2tpZUNhcChSZWdpc3RyYWJsZURv
bWFpbiB7IGZpcnN0UGFydHkgfSwgcGFnZUlEKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2VJRCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBXVEY6Om51bGxv
cHQ7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUgPSBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKICAgICBjb29raWVEYXRhYmFzZSgpLnNldENvb2tpZShmaXJzdFBhcnR5LCB1cmws
IHZhbHVlLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQsIGNhcHBlZExpZmV0aW1lKTsKIH0K
QEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2ll
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbAogCiBib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFNob3VsZEFza0lUUCwgU2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAogewotICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhm
aXJzdFBhcnR5LCB1cmwsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQp
OworICAgIGF1dG8gY29va2llcyA9IGNvb2tpZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwog
ICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKaW5k
ZXggMjFmMDhhOWRiM2FkZTgwZWE1YjljOGVhYmZjYTYyMDczNmEyNDEwYy4uODE2NDI3YjBlYjZl
MjgxMDllYTIzN2IxMmFiZDM3YjYzNzM1ZWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgdWludDhfdCogZGF0YSB7IG51bGxwdHIgfTsKICAgICAg
ICAgYXV0byBsZW5ndGggPSA6OkJJT19nZXRfbWVtX2RhdGEobV9iaW8sICZkYXRhKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA8IDApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gVmVjdG9yIHsg
ZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpIH07CiAgICAgfQpAQCAtMTYxLDcgKzE2
MSw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZT4gcGVtRGF0YUZyb21DdHgoWDUwOV9TVE9SRV9DCiBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8+IGNyZWF0ZUNlcnRpZmljYXRlSW5mbyhYNTA5X1NUT1JFX0NUWCogY3R4KQogewog
ICAgIGlmICghY3R4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhY
NTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoY3R4KSwgcGVtRGF0YUZyb21DdHgoY3R4KSk7CiB9CkBA
IC0yMTgsMjEgKzIxOCwyMSBAQCBzdGF0aWMgU3RyaW5nIGdldFN1YmplY3ROYW1lKGNvbnN0IFg1
MDkqIHg1MDkpCiBzdGF0aWMgT3B0aW9uYWw8U2Vjb25kcz4gY29udmVydEFTTjFUaW1lVG9TZWNv
bmRzKGNvbnN0IEFTTjFfVElNRSogYW5zMVRpbWUpCiB7CiAgICAgaWYgKCFhbnMxVGltZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICgoYW5zMVRpbWUtPnR5cGUgIT0gVl9BU04xX1VUQ1RJTUUgJiYgYW5zMVRpbWUt
PnR5cGUgIT0gVl9BU04xX0dFTkVSQUxJWkVEVElNRSkgfHwgIWFuczFUaW1lLT5kYXRhKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gVVRDVElNRSAgICAgICAgIDogWVltbWRkSEhNTVtTU10KICAgICAvLyBHRU5FUkFM
SVpFRFRJTUUgOiBZWVlZbW1kZEhITU1bU1NdCiAgICAgaW50IGRpZ2l0TGVuZ3RoID0gYW5zMVRp
bWUtPnR5cGUgPT0gVl9BU04xX1VUQ1RJTUUgPyAxMCA6IDEyOwogICAgIGlmIChhbnMxVGltZS0+
bGVuZ3RoIDwgZGlnaXRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGRhdGEgPSBhbnMxVGltZS0+ZGF0
YTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRpZ2l0TGVuZ3RoOyBpKyspIHsKICAgICAgICAg
aWYgKCFpc0FTQ0lJRGlnaXQoZGF0YVtpXSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdHJ1
Y3QgdG0gdGltZSB7IH07CkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNlY29u
ZHM+IGNvbnZlcnRBU04xVGltZVRvU2Vjb25kcyhjb25zdCBBU04xX1RJTUUqIGFuczFUaW1lKQog
CiAgICAgdGltZS50bV9tb24gPSAoZGF0YVswXSAtICcwJykgKiAxMCArIChkYXRhWzFdIC0gJzAn
KSAtIDE7CiAgICAgaWYgKHRpbWUudG1fbW9uIDwgMCB8fCB0aW1lLnRtX21vbiA+IDExKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHRpbWUudG1fbWRheSA9IChkYXRhWzJdIC0gJzAnKSAqIDEwICsgKGRhdGFbM10gLSAnMCcp
OwogICAgIHRpbWUudG1faG91ciA9IChkYXRhWzRdIC0gJzAnKSAqIDEwICsgKGRhdGFbNV0gLSAn
MCcpOwogICAgIHRpbWUudG1fbWluID0gKGRhdGFbNl0gLSAnMCcpICogMTAgKyAoZGF0YVs3XSAt
ICcwJyk7CkBAIC0zMDIsNyArMzAyLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVT
dW1tYXJ5PiBjcmVhdGVTdW1tYXJ5SW5mbyhjb25zdCBWZWN0b3I8dWludDhfdD4mIHAKICAgICBC
SU8gYmlvIHsgcGVtIH07CiAgICAgYXV0byB4NTA5ID0gYmlvLnJlYWRYNTA5KCk7CiAgICAgaWYg
KCF4NTA5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVTdW1tYXJ5IHN1bW1hcnlJbmZv
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGQ0YmQ5Y2U4MDdlOWM3ZjE3MGMyODk3ZGNi
ZmE3MDNlMDNjOTljMDguLmI3MTU4NjM3MmFiNjZiOGYxYWFmNTgzNDAxNWY5ZDc0OGZhOGVlZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgUmVmPEN1cmxSZXF1
ZXN0PiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ3VybFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgUmUKICAgICAgICAgYWRkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycyhyZXF1ZXN0KTsK
IAogICAgICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gcmVxdWVzdC51cmwoKS5wcm90
b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1
cmVDb29raWVzOjpObzsKLSAgICAgICAgU3RyaW5nIGNvb2tpZUhlYWRlckZpZWxkID0gZC0+bV9j
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVl
c3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZzo6Tm8pLmZpcnN0OworICAgICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQg
PSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVh
dGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CiAgICAgICAgIGlmICghY29va2llSGVhZGVy
RmllbGQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkNvb2tpZSwgY29va2llSGVhZGVyRmllbGQpOwogICAgIH0KQEAgLTM0
OSw3ICszNDksNyBAQCBPcHRpb25hbDxDcmVkZW50aWFsPiBSZXNvdXJjZUhhbmRsZTo6Z2V0Q3Jl
ZGVudGlhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogICAgIGlmICghZC0+bV9pbml0
aWFsQ3JlZGVudGlhbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBkLT5tX2luaXRpYWxDcmVk
ZW50aWFsOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpyZXN0YXJ0UmVxdWVzdFdpdGhDcmVkZW50
aWFsKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5k
ZXggY2FlOGM0M2Q2MGZjZjZhM2Q2OWM1OGE3NDM2NTE2ZjkyM2QyMjdjYi4uOGJlYjNiNTNiOWRi
ZTRhNjQ3Y2JiMzE3MzFkMTZhOTUzMGZmZDM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbEN1cmwuY3BwCkBAIC02Myw3ICs2Myw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6On5T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKCkKIE9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKIHsKICAgICBpZiAoaXNTdHJlYW1JbnZhbGlkYXRlZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KG1fdG90YWxTZW5kRGF0YVNpemUgKyBsZW5ndGggPiBtYXhCdWZmZXJTaXplKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKaW5kZXggNGI4
MjljNjNjODA0NWI0NmI1NDE4OTY4NGJkODMzOWExNmEwYThmMi4uYTBjZmVkMGQ5ODBiZmFmYWRk
ODc3MDU2OTQ1NjA2ZDdhOTdlYzcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U291cC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIFByb3RlY3Rpb25TcGFjZSBwcm90ZWN0
aW9uU3BhY2VGcm9tU291cEF1dGhBbmRVUkwoU291cEF1dGgqIHNvdXBBdXRoLCBjb24KICAgICBh
dXRvIHBvcnQgPSBhdXRoVVJMLnBvcnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFByb3RlY3Rp
b25TcGFjZShob3N0LnRvU3RyaW5nKCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52YWx1ZU9yKDAp
KSwKKyAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKGhvc3QudG9TdHJpbmcoKSwgc3RhdGljX2Nh
c3Q8aW50Pihwb3J0LnZhbHVlX29yKDApKSwKICAgICAgICAgcHJvdGVjdGlvblNwYWNlU2VydmVy
VHlwZUZyb21VUkwodXJsLCBzb3VwX2F1dGhfaXNfZm9yX3Byb3h5KHNvdXBBdXRoKSksCiAgICAg
ICAgIFN0cmluZzo6ZnJvbVVURjgoc291cF9hdXRoX2dldF9yZWFsbShzb3VwQXV0aCkpLCBzY2hl
bWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0NlcnRpZmljYXRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0NlcnRpZmljYXRlSW5mby5oCmluZGV4IGM0NGIwYWMzYTI3NGU2YjIyYzhlMTVlNjRmMGEyOWU3
NDUwYWIyYjMuLmNiMjYwODQ2NjZiNzJlOWM4YWVmN2U0MDI2ZGRkZmU3ZWI1YmI4OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUlu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNh
dGVJbmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250YWluc05v
blJvb3RTSEExU2lnbmVkQ2VydGlmaWNhdGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBmYWxzZTsgfQogCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5
KCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAg
T3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBzdW1tYXJ5KCkgY29uc3QgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiAhbV9jZXJ0aWZpY2F0ZTsgfQogCkBAIC04MywxMiArODMsMTIgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ29kZXI8R1JlZlB0cjxHQnl0ZUFycmF5Pj4gewogICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gc2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAo
IXNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGJ5dGVBcnJh
eSA9IGFkb3B0R1JlZihnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3KCpzaXplKSk7CiAgICAgICAgIGdf
Ynl0ZV9hcnJheV9zZXRfc2l6ZShieXRlQXJyYXkuZ2V0KCksICpzaXplKTsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShieXRlQXJyYXktPmRhdGEsICpzaXplKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm4gYnl0ZUFycmF5OwogICAgIH0KIH07CkBAIC0xNDks
NyArMTQ5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvPiB7CiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdCeXRlQXJyYXk+Pj4gY2Vy
dGlmaWNhdGVzRGF0YUxpc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVzRGF0YUxp
c3Q7CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVzRGF0YUxpc3QpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBp
ZiAoY2VydGlmaWNhdGVzRGF0YUxpc3QtPmlzRW1wdHkoKSkKQEAgLTE1NywxMyArMTU3LDEzIEBA
IHRlbXBsYXRlPD4gc3RydWN0IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gewogCiAg
ICAgICAgIGF1dG8gY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZUZyb21DZXJ0aWZpY2F0ZXNEYXRh
TGlzdChjZXJ0aWZpY2F0ZXNEYXRhTGlzdC52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFjZXJ0aWZp
Y2F0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0Q2VydGlmaWNhdGUo
Y2VydGlmaWNhdGUuZ2V0KCkpOwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiB0bHNFcnJv
cnM7CiAgICAgICAgIGRlY29kZXIgPj4gdGxzRXJyb3JzOwogICAgICAgICBpZiAoIXRsc0Vycm9y
cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0VExTRXJyb3JzKHN0YXRp
Y19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigqdGxzRXJyb3JzKSk7CiAKICAgICAgICAgcmV0
dXJuIGNlcnRpZmljYXRlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTb3VwLmNwcAppbmRleCAxZjNjZDI2NzMxNzllMWFlMGQ4ZDgyMjc3
ZmEwMTlkOTE5ZTE1ZjRkLi45YmI5YzcxMjRkNDBlMmIwMzI0NDAxYzg5ZmY1ODdhZDU1NmU3MjIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZVNvdXAuY3BwCkBAIC03MCw5ICs3MCw5IEBAIENvb2tpZTo6Q29va2llKFNvdXBDb29raWUqIGNv
b2tpZSkKICAgICAsIGRvbWFpbihTdHJpbmc6OmZyb21VVEY4KHNvdXBfY29va2llX2dldF9kb21h
aW4oY29va2llKSkpCiAgICAgLCBwYXRoKFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0
X3BhdGgoY29va2llKSkpCiAjaWYgVVNFKFNPVVAyKQotICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tp
ZV9nZXRfZXhwaXJlcyhjb29raWUpID8gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4o
c291cF9kYXRlX3RvX3RpbWVfdChzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAx
MDAwKSA6IFdURjo6bnVsbG9wdCkKKyAgICAsIGV4cGlyZXMoc291cF9jb29raWVfZ2V0X2V4cGly
ZXMoY29va2llKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdGF0aWNfY2FzdDxkb3VibGU+KHNvdXBf
ZGF0ZV90b190aW1lX3Qoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSkpICogMTAwMCkg
OiBzdGQ6Om51bGxvcHQpCiAjZWxzZQotICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhw
aXJlcyhjb29raWUpID8gbWFrZU9wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oZ19kYXRlX3Rp
bWVfdG9fdW5peChzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IFdU
Rjo6bnVsbG9wdCkKKyAgICAsIGV4cGlyZXMoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2ll
KSA/IHN0ZDo6bWFrZV9vcHRpb25hbChzdGF0aWNfY2FzdDxkb3VibGU+KGdfZGF0ZV90aW1lX3Rv
X3VuaXgoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSkpICogMTAwMCkgOiBzdGQ6Om51
bGxvcHQpCiAjZW5kaWYKICAgICAsIGh0dHBPbmx5KHNvdXBfY29va2llX2dldF9odHRwX29ubHko
Y29va2llKSkKICAgICAsIHNlY3VyZShzb3VwX2Nvb2tpZV9nZXRfc2VjdXJlKGNvb2tpZSkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDUwYTVmODBkYjljZGJkMWFmMTZlZjY0NmViMmFlMmFl
NjUxOGIyNmIuLmU3MjkyMWMzNjY3ZTA1MGUyZGViYjQ0YTE3NzA0YjhkNzk4NjAyNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMjMsMTEgKzMyMywxMSBAQCB2b2lkIFNvdXBOZXR3b3Jr
U2Vzc2lvbjo6c2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogT3B0aW9u
YWw8UmVzb3VyY2VFcnJvcj4gU291cE5ldHdvcmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycyhjb25z
dCBVUkwmIHJlcXVlc3RVUkwsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycykKIHsKICAgICBpZiAobV9pZ25vcmVUTFNFcnJvcnMgfHwg
IXRsc0Vycm9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaXQgPSBhbGxvd2VkQ2VydGlmaWNhdGVzKCkuZmlu
ZChyZXF1ZXN0VVJMLmhvc3QoKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAgIGlmIChp
dCAhPSBhbGxvd2VkQ2VydGlmaWNhdGVzKCkuZW5kKCkgJiYgaXQtPnZhbHVlLmNvbnRhaW5zKGNl
cnRpZmljYXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihyZXF1
ZXN0VVJMLCB0bHNFcnJvcnMsIGNlcnRpZmljYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5jcHAKaW5kZXggNWMwODNmMTE2MzcxYTg0NzEx
Y2NhZjEyNzJhNGIzZDcxODMyOTYwYy4uNjU1ZGY1NjIyZTFjMzA1MmRjNTFjZThkMWJjNzU5NWI3
YTQ0NGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGlu
Z1RhYmxlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGluZ1Rh
Ymxlcy5jcHAKQEAgLTcwODIsNyArNzA4Miw3IEBAIGNvbnN0IHN0ZDo6YXJyYXk8c3RkOjpwYWly
PHVpbnQxNl90LCBVQ2hhcj4sIDE3MDQ4PiYgZXVjS1IoKQogICAgICAgICAgICAgVUVycm9yQ29k
ZSBlcnJvciA9IFVfWkVST19FUlJPUjsKICAgICAgICAgICAgIHVjbnZfdG9Vbmljb2RlKGljdUNv
bnZlcnRlci5nZXQoKSwgJm91dHB1dCwgb3V0cHV0ICsgMiwgJmlucHV0LCBpbnB1dCArIHNpemVv
ZihpY3VJbnB1dCksIG51bGxwdHIsIHRydWUsICZlcnJvcik7CiAgICAgICAgICAgICBpZiAoaWN1
T3V0cHV0WzBdID09IDB4RkZGRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1
cm4ge3sgcG9pbnRlciwgaWN1T3V0cHV0WzBdIH19OwogICAgICAgICB9OwogICAgICAgICBzaXpl
X3QgYXJyYXlJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0VuY29kaW5nVGFibGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29k
aW5nVGFibGVzLmgKaW5kZXggM2Y3ZDBiMDJlMDcxMmNjMTFmZWNjNmQ0ZWIxZjU4MTBkM2MxOTA0
NC4uZTViZDUyMmY4YTY4ZGNlZjhlYmRmNDg5NmU5YjEyNjcwNzZiMWUwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9FbmNvZGluZ1RhYmxlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaApAQCAtMTE2LDExICsxMTYs
MTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGUsIHR5cGVuYW1lIEtleVR5cGU+
IHN0YXRpYyBhdXRvIGZpbmRGaXJzdEluU29ydGUKIHsKICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfaW50ZWdyYWxfdjxLZXlUeXBlPikgewogICAgICAgICBpZiAoa2V5ICE9IGRlY2x0eXBlKHN0
ZDo6YmVnaW4oY29sbGVjdGlvbiktPmZpcnN0KShrZXkpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAg
IGF1dG8gaXRlcmF0b3IgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oY29sbGVjdGlvbiks
IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pLCBtYWtlRmlyc3RBZGFwdGVyKGtleSksIENvbXBhcmVGaXJz
dCB7IH0pOwogICAgIGlmIChpdGVyYXRvciA9PSBzdGQ6OmVuZChjb2xsZWN0aW9uKSB8fCBrZXkg
PCBpdGVyYXRvci0+Zmlyc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT5zZWNvbmQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjQ0pLLmNwcAppbmRleCBm
YzJhOTIxMTAwMjBkNTllNDNhODMwYWUzNDU0MTAyYjc3OTcyNDU2Li4yMTE3ZTFhNGI5MDUyMzMx
Y2RjZDY0MTIyNGU3NjM1MGIyZTllZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0Q29kZWNDSksuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgU3RyaW5nIFRleHRDb2Rl
Y0NKSzo6ZGVjb2RlQ29tbW9uKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBi
b29sIGZsdXMKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICByZXN1bHQucmVzZXJ2ZUNh
cGFjaXR5KGxlbmd0aCk7CiAKLSAgICBpZiAobV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIo
KnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRlLCBXVEY6Om51bGxvcHQpLCByZXN1bHQpID09
IFNhd0Vycm9yOjpZZXMpIHsKKyAgICBpZiAobV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIo
KnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRlLCBzdGQ6Om51bGxvcHQpLCByZXN1bHQpID09
IFNhd0Vycm9yOjpZZXMpIHsKICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICByZXN1
bHQuYXBwZW5kKHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgaWYgKHN0b3BPbkVycm9y
KSB7CkBAIC0yMDAsNyArMjAwLDcgQEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6ZGVjb2RlQ29tbW9u
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXMKICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKG1fcHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hh
bmdlKG1fcHJlcGVuZGVkQnl0ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6
WWVzKSB7CisgICAgICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpl
eGNoYW5nZShtX3ByZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJy
b3I6OlllcykgewogICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgICAgICBpZiAoc3RvcE9u
RXJyb3IpIHsKQEAgLTQyNyw3ICs0MjcsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjppc28yMDIy
SlBEZWNvZGUoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZgogICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3Ro
KTsKIAotICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5n
ZShtX3ByZXBlbmRlZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olll
cykgeworICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5n
ZShtX3ByZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olll
cykgewogICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVw
bGFjZW1lbnRDaGFyYWN0ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTQzNSw3
ICs0MzUsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjppc28yMDIySlBEZWNvZGUoY29uc3QgdWlu
dDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZgogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdC50b1N0cmluZygpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChtX2lzbzIwMjJKUFNl
Y29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJK
UFNlY29uZFByZXBlbmRlZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6
OlllcyAmJiBzdG9wT25FcnJvcikgeworICAgIGlmIChtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRl
ZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJKUFNlY29uZFByZXBl
bmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcyAmJiBzdG9w
T25FcnJvcikgewogICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBl
bmQocmVwbGFjZW1lbnRDaGFyYWN0ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAg
LTQ1Miw3ICs0NTIsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjppc28yMDIySlBEZWNvZGUoY29u
c3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZgogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICBpZiAobV9wcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9w
cmVwZW5kZWRCeXRlLCBXVEY6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsK
KyAgICAgICAgaWYgKG1fcHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdl
KG1fcHJlcGVuZGVkQnl0ZSwgc3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVz
KSB7CiAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikg
ewpAQCAtNDYwLDcgKzQ2MCw3IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29k
ZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgICAgIGlmIChtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNl
cigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJKUFNlY29uZFByZXBlbmRlZEJ5dGUsIFdURjo6bnVs
bG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcyAmJiBzdG9wT25FcnJvcikgeworICAgICAg
ICBpZiAobV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6
ZXhjaGFuZ2UobV9pc28yMDIySlBTZWNvbmRQcmVwZW5kZWRCeXRlLCBzdGQ6Om51bGxvcHQpLCBy
ZXN1bHQpID09IFNhd0Vycm9yOjpZZXMgJiYgc3RvcE9uRXJyb3IpIHsKICAgICAgICAgICAgIHNh
d0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRDaGFy
YWN0ZXIpOwogICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKSB7CkBAIC04NTQsNyArODU0LDcg
QEAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8c3RkOjpwYWlyPHVpbnQzMl90LCBVQ2hhcjMyPiwg
MjA3PiYgZ2IxODAzMFJhbmdlcygpCiBzdGF0aWMgT3B0aW9uYWw8VUNoYXIzMj4gZ2IxODAzMFJh
bmdlc0NvZGVQb2ludCh1aW50MzJfdCBwb2ludGVyKQogewogICAgIGlmICgocG9pbnRlciA+IDM5
NDE5ICYmIHBvaW50ZXIgPCAxODkwMDApIHx8IHBvaW50ZXIgPiAxMjM3NTc1KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
IChwb2ludGVyID09IDc0NTcpCiAgICAgICAgIHJldHVybiAweEU3Qzc7CiAgICAgYXV0byB1cHBl
ckJvdW5kID0gc3RkOjp1cHBlcl9ib3VuZChnYjE4MDMwUmFuZ2VzKCkuYmVnaW4oKSwgZ2IxODAz
MFJhbmdlcygpLmVuZCgpLCBtYWtlRmlyc3RBZGFwdGVyKHBvaW50ZXIpLCBDb21wYXJlRmlyc3Qg
eyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
VVRGMTYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5j
cHAKaW5kZXggMjcxNjA5YWYzNDJiNmE4MWY5MWUzOTJhZDJlZGE0YzYwZTk0MTY3Yi4uYzFjMGQ3
NTRjNDhkZTMwMTgwZDk3OTQzN2E5NzBlMDViY2ZlNTBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU3Ry
aW5nIFRleHRDb2RlY1VURjE2OjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5n
dGgsIGJvb2wgZmx1c2gsIGJvb2wKICAgICAgICAgaWYgKHN0ZDo6ZXhjaGFuZ2UobV9zaG91bGRT
dHJpcEJ5dGVPcmRlck1hcmssIGZhbHNlKSAmJiBjb2RlVW5pdCA9PSBieXRlT3JkZXJNYXJrKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAobV9sZWFkU3Vycm9nYXRlKSB7Ci0gICAg
ICAgICAgICBhdXRvIGxlYWRTdXJyb2dhdGUgPSAqc3RkOjpleGNoYW5nZShtX2xlYWRTdXJyb2dh
dGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBhdXRvIGxlYWRTdXJyb2dhdGUgPSAqc3Rk
OjpleGNoYW5nZShtX2xlYWRTdXJyb2dhdGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBp
ZiAoVTE2X0lTX1RSQUlMKGNvZGVVbml0KSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmRDaGFyYWN0ZXIoVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGxlYWRTdXJyb2dhdGUsIGNvZGVVbml0
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDcgKzEwNCw3IEBAIFN0cmluZyBU
ZXh0Q29kZWNVVEYxNjo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBi
b29sIGZsdXNoLCBib29sCiAgICAgfTsKIAogICAgIGlmIChtX2xlYWRCeXRlICYmIHAgPCBlbmQp
IHsKLSAgICAgICAgYXV0byBsZWFkQnl0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZEJ5dGUsIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gbGVhZEJ5dGUgPSAqc3RkOjpleGNoYW5nZShtX2xl
YWRCeXRlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBpZiAobV9saXR0bGVFbmRpYW4pCiAgICAg
ICAgICAgICBwcm9jZXNzQnl0ZXNMRShsZWFkQnl0ZSwgcFswXSk7CiAgICAgICAgIGVsc2UKQEAg
LTEzMyw4ICsxMzMsOCBAQCBTdHJpbmcgVGV4dENvZGVjVVRGMTY6OmRlY29kZShjb25zdCBjaGFy
KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9vbAogICAgIGlmIChmbHVzaCkg
ewogICAgICAgICBtX3Nob3VsZFN0cmlwQnl0ZU9yZGVyTWFyayA9IGZhbHNlOwogICAgICAgICBp
ZiAobV9sZWFkQnl0ZSB8fCBtX2xlYWRTdXJyb2dhdGUpIHsKLSAgICAgICAgICAgIG1fbGVhZEJ5
dGUgPSBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICBtX2xlYWRTdXJyb2dhdGUgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICBtX2xlYWRCeXRlID0gc3RkOjpudWxsb3B0OworICAgICAgICAg
ICAgbV9sZWFkU3Vycm9nYXRlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgc2F3RXJyb3Ig
PSB0cnVlOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEZsYWdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4
IDY2ZWE4NjI3MGVhYzc0ZmU1YTM0OTJlODkyNDE0ODg1MzBmYTVkOWYuLjgxZDIyZjJkMzA1YmQ4
ZWNiNGEwOTA2YTMxZTBhZGYyYjE3MTNlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RmxhZ3MuaApAQCAtMzE0LDc3ICszMTQsNzcgQEAgT3B0aW9uYWw8Rm9udFZhcmlhbnRT
ZXR0aW5ncz4gRm9udFZhcmlhbnRTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBk
ZWNvZGVyID4+IGNvbW1vbkxpZ2F0dXJlczsKICAgICBpZiAoIWNvbW1vbkxpZ2F0dXJlcykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBkaXNjcmV0aW9uYXJ5TGlnYXR1
cmVzOwogICAgIGRlY29kZXIgPj4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBpZiAoIWRp
c2NyZXRpb25hcnlMaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0
dXJlcz4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGhpc3RvcmljYWxMaWdh
dHVyZXM7CiAgICAgaWYgKCFoaXN0b3JpY2FsTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGNvbnRleHR1YWxBbHRlcm5hdGVzOwogICAgIGRlY29kZXIg
Pj4gY29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgaWYgKCFjb250ZXh0dWFsQWx0ZXJuYXRlcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50UG9zaXRpb24+IHBvc2l0aW9uOwogICAgIGRl
Y29kZXIgPj4gcG9zaXRpb247CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PEZvbnRWYXJpYW50Q2Fwcz4gY2FwczsKICAgICBkZWNvZGVyID4+IGNhcHM7CiAgICAgaWYgKCFj
YXBzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljRmlndXJlPiBudW1lcmlj
RmlndXJlOwogICAgIGRlY29kZXIgPj4gbnVtZXJpY0ZpZ3VyZTsKICAgICBpZiAoIW51bWVyaWNG
aWd1cmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiBudW1l
cmljU3BhY2luZzsKICAgICBkZWNvZGVyID4+IG51bWVyaWNTcGFjaW5nOwogICAgIGlmICghbnVt
ZXJpY1NwYWNpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGcmFjdGlv
bj4gbnVtZXJpY0ZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gbnVtZXJpY0ZyYWN0aW9uOwogICAg
IGlmICghbnVtZXJpY0ZyYWN0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1l
cmljT3JkaW5hbD4gbnVtZXJpY09yZGluYWw7CiAgICAgZGVjb2RlciA+PiBudW1lcmljT3JkaW5h
bDsKICAgICBpZiAoIW51bWVyaWNPcmRpbmFsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlh
bnROdW1lcmljU2xhc2hlZFplcm8+IG51bWVyaWNTbGFzaGVkWmVybzsKICAgICBkZWNvZGVyID4+
IG51bWVyaWNTbGFzaGVkWmVybzsKICAgICBpZiAoIW51bWVyaWNTbGFzaGVkWmVybykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50QWx0ZXJuYXRlcz4gYWx0ZXJuYXRlczsKICAgICBkZWNv
ZGVyID4+IGFsdGVybmF0ZXM7CiAgICAgaWYgKCFhbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50PiBlYXN0QXNpYW5WYXJpYW50OwogICAgIGRl
Y29kZXIgPj4gZWFzdEFzaWFuVmFyaWFudDsKICAgICBpZiAoIWVhc3RBc2lhblZhcmlhbnQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiBlYXN0QXNpYW5XaWR0
aDsKICAgICBkZWNvZGVyID4+IGVhc3RBc2lhbldpZHRoOwogICAgIGlmICghZWFzdEFzaWFuV2lk
dGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IGVhc3RBc2lh
blJ1Ynk7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNpYW5SdWJ5OwogICAgIGlmICghZWFzdEFzaWFu
UnVieSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAqY29tbW9uTGlnYXR1cmVzLApAQCAt
NDQyLDIyICs0NDIsMjIgQEAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXM+IEZv
bnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzOjpkZWNvZGUoRGVjb2RlciYKICAgICBPcHRpb25hbDxG
b250VmFyaWFudExpZ2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gY29t
bW9uTGlnYXR1cmVzOwogICAgIGlmICghY29tbW9uTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVj
b2RlciA+PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxp
Z2F0dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3Jp
Y2FsTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBp
ZiAoIWhpc3RvcmljYWxMaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExp
Z2F0dXJlcz4gY29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFs
QWx0ZXJuYXRlczsKICAgICBpZiAoIWNvbnRleHR1YWxBbHRlcm5hdGVzKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHt7ICpjb21tb25MaWdhdHVyZXMsICpkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzLCAqaGlzdG9y
aWNhbExpZ2F0dXJlcywgKmNvbnRleHR1YWxBbHRlcm5hdGVzIH19OwogfQpAQCAtNTAzLDI3ICs1
MDMsMjcgQEAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljVmFsdWVzPiBGb250VmFyaWFudE51
bWVyaWNWYWx1ZXM6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxGb250VmFyaWFu
dE51bWVyaWNGaWd1cmU+IGZpZ3VyZTsKICAgICBkZWNvZGVyID4+IGZpZ3VyZTsKICAgICBpZiAo
IWZpZ3VyZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc+IHNw
YWNpbmc7CiAgICAgZGVjb2RlciA+PiBzcGFjaW5nOwogICAgIGlmICghc3BhY2luZykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBmcmFjdGlvbjsKICAgICBk
ZWNvZGVyID4+IGZyYWN0aW9uOwogICAgIGlmICghZnJhY3Rpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiBvcmRpbmFsOwogICAgIGRlY29kZXIgPj4gb3Jk
aW5hbDsKICAgICBpZiAoIW9yZGluYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51
bWVyaWNTbGFzaGVkWmVybz4gc2xhc2hlZFplcm87CiAgICAgZGVjb2RlciA+PiBzbGFzaGVkWmVy
bzsKICAgICBpZiAoIXNsYXNoZWRaZXJvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpmaWd1cmUsICpz
cGFjaW5nLCAqZnJhY3Rpb24sICpvcmRpbmFsLCAqc2xhc2hlZFplcm8gfX07CiB9CkBAIC01NjEs
MTcgKzU2MSwxNyBAQCBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcz4gRm9udFZh
cmlhbnRFYXN0QXNpYW5WYWx1ZXM6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50RWFzdEFzaWFuVmFyaWFudD4gdmFyaWFudDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnQ7
CiAgICAgaWYgKCF2YXJpYW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNp
YW5XaWR0aD4gd2lkdGg7CiAgICAgZGVjb2RlciA+PiB3aWR0aDsKICAgICBpZiAoIXdpZHRoKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5PiBydWJ5OwogICAgIGRl
Y29kZXIgPj4gcnVieTsKICAgICBpZiAoIXJ1YnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnZhcmlh
bnQsICp3aWR0aCwgKnJ1YnkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKaW5kZXggY2M4MDAzZjVlMTUzMjA1YWMwNzVhZDA2OTU0MjE1OTUw
MTk5ZGViYy4uOWNkYTM0OTJiNjk2NTY4MjhkNjFlNTYzODRlYzE2NWI2ZDE5ZWM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjYyLDcg
KzI2Miw3IEBAIE9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFk
UGFzdGVib2FyZEN1c3RvbURhdGEoKQogICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25z
dCBTdHJpbmcmIG9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaApp
bmRleCAwZjc3NmM0Mjg2ZGFmZGZkZDY5ZmYwMmEyNWRlYjc1ZmVhYTNiMTgzLi4yZmMyMTExNTdk
YTNlMWJmZTBkZjFhNWZiMGM2MjliY2E4MDgzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5oCkBAIC0yOTgsMTMgKzI5OCwxMyBAQCBPcHRpb25hbDxEZXZpY2U6OkZy
YW1lRGF0YTo6RmxvYXRRdWF0ZXJuaW9uPiBEZXZpY2U6OkZyYW1lRGF0YTo6RmxvYXRRdWF0ZXJu
aW9uOgogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb24gZmxvYXRRdWF0
ZXJuaW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLngpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLnopKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZmxvYXRRdWF0ZXJuaW9uLncpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBmbG9hdFF1YXRlcm5pb247
CiB9CiAKQEAgLTMxOSw5ICszMTksOSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6UG9z
ZT4gRGV2aWNlOjpGcmFtZURhdGE6OlBvc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewogICAg
IERldmljZTo6RnJhbWVEYXRhOjpQb3NlIHBvc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
b3NlLnBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2Uub3JpZW50YXRp
b24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBwb3NlOwogfQogCkBAIC0zMzYsMTMgKzMzNiwxMyBAQCBPcHRp
b25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6Rm92PiBEZXZpY2U6OkZyYW1lRGF0YTo6Rm92OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcgogewogICAgIERldmljZTo6RnJhbWVEYXRhOjpGb3YgZm92Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LnVwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZvdi5kb3duKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi5sZWZ0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdi5yaWdodCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGZvdjsK
IH0KIApAQCAtMzc0LDMwICszNzQsMzAgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXc+IERldmljZTo6RnJhbWVEYXRhOjpWaWV3OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKIHsKICAg
ICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6VmlldyB2aWV3OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUodmlldy5vZmZzZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNGb3Y7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNGb3YpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc0ZvdikgewogICAgICAg
ICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92IGZvdjsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShmb3YpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHZpZXcucHJvamVjdGlvbiA9
IHsgV1RGTW92ZShmb3YpIH07CiAgICAgICAgIHJldHVybiB2aWV3OwogICAgIH0KIAogICAgIGJv
b2wgaGFzUHJvamVjdGlvbk1hdHJpeDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1Byb2pl
Y3Rpb25NYXRyaXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1Byb2plY3Rpb25NYXRyaXgpIHsKICAgICAg
ICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXggcHJvamVj
dGlvbk1hdHJpeDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6cHJvamVjdGlvbk1hdHJpeFNpemU7ICsraSkgewogICAgICAgICAg
ICAgZmxvYXQgZjsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgcHJvamVjdGlvbk1hdHJpeFtpXSA9IGY7CiAgICAgICAg
IH0KICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKHByb2plY3Rpb25NYXRyaXgp
IH07CkBAIC00MjAsOSArNDIwLDkgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OlN0YWdl
UGFyYW1ldGVycz4gRGV2aWNlOjpGcmFtZURhdGE6OlN0YWdlUGFyYW1ldGVyczoKIHsKICAgICBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzIHN0YWdlUGFyYW1l
dGVyczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YWdlUGFyYW1ldGVycy5pZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGFnZVBhcmFtZXRlcnMuYm91bmRzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc3RhZ2VQYXJhbWV0ZXJzOwogfQogCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBPcHRpb25h
bDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJE
YXRhOjpkZWNvZGUoRGVjbwogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpM
YXllckRhdGEgbGF5ZXJEYXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGF5ZXJEYXRhLm9w
YXF1ZVRleHR1cmUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogI2lmIFVTRShJT1NVUkZBQ0VfRk9SX1hSX0xBWUVSX0RBVEEpCiAg
ICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdl
YkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5k
UmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gbGF5ZXJEYXRhOwpAQCAtNDcxLDI1ICs0NzEsMjUgQEAgT3B0aW9uYWw8RGV2
aWNlOjpGcmFtZURhdGE+IERldmljZTo6RnJhbWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSBmcmFtZURhdGE7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuaXNUcmFja2luZ1ZhbGlkKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5pc1Bvc2l0aW9uVmFsaWQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLmlzUG9zaXRpb25FbXVsYXRlZCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEuc2hvdWxkUmVuZGVyKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5wcmVkaWN0ZWREaXNwbGF5VGltZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShmcmFtZURhdGEub3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGZyYW1lRGF0YS5mbG9vclRyYW5zZm9ybSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmcmFtZURhdGEuc3RhZ2VQYXJhbWV0ZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGZyYW1lRGF0YS52aWV3cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFt
ZURhdGEubGF5ZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmcmFtZURhdGE7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmNw
cAppbmRleCBkM2E4MGIyZTMzOTdlNTdlYzgwYjIyNTMzYzliMWUzMzk1MjI4N2VjLi4zZGQxNmNm
NjAwYzZhMzQ1ZGRiY2QxZjNiNjcwZTYzZGZlMjc0ODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IE9w
ZW5YUklucHV0U291cmNlOjpnZXRJbnB1dFNvdXJjZShYclNwYQogCiAgICAgLy8gVHJpZ2dlciBp
cyBtYW5kYXRvcnkgaW4geHItc3RhbmRhcmQgbWFwcGluZy4KICAgICBpZiAoYnV0dG9ucy5pc0Vt
cHR5KCkgfHwgIWJ1dHRvbnMuZmlyc3QoKS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBidXR0b25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChidXR0b25z
W2ldKSB7CkBAIC0yOTMsNyArMjkzLDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlQnV0dG9uPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW4KIHsKICAg
ICBhdXRvIGl0ID0gbV9idXR0b25BY3Rpb25zLmZpbmQoYnV0dG9uVHlwZSk7CiAgICAgaWYgKGl0
ID09IG1fYnV0dG9uQWN0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZUJ1dHRvbiByZXN1bHQ7CiAgICAgYm9vbCBoYXNWYWx1ZSA9IGZhbHNlOwpAQCAt
MzEwLDE4ICszMTAsMTggQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
QnV0dG9uPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QnV0dG9uKE9wZW4KICAgICBxdWVyeUFjdGlv
blN0YXRlKGFjdGlvbnMudG91Y2gsIHJlc3VsdC50b3VjaGVkLCByZXN1bHQucHJlc3NlZCk7CiAg
ICAgcXVlcnlBY3Rpb25TdGF0ZShhY3Rpb25zLnZhbHVlLCByZXN1bHQucHJlc3NlZFZhbHVlLCBy
ZXN1bHQucHJlc3NlZCA/IDEuMCA6IDAuMCk7CiAKLSAgICByZXR1cm4gaGFzVmFsdWUgPyAgbWFr
ZU9wdGlvbmFsKHJlc3VsdCkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGhhc1ZhbHVlID8g
IHN0ZDo6bWFrZV9vcHRpb25hbChyZXN1bHQpIDogc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25h
bDxYclZlY3RvcjJmPiBPcGVuWFJJbnB1dFNvdXJjZTo6Z2V0QXhpcyhPcGVuWFJBeGlzVHlwZSBh
eGlzVHlwZSkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9heGlzQWN0aW9ucy5maW5kKGF4aXNU
eXBlKTsKICAgICBpZiAoaXQgPT0gbV9heGlzQWN0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFhyVmVj
dG9yMmYgYXhpczsKICAgICBpZiAoWFJfRkFJTEVEKGdldEFjdGlvblN0YXRlKGl0LT52YWx1ZSwg
JmF4aXMpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBheGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUkxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5jcHAKaW5kZXggNzgzYzMzN2UyZTAxZTFh
MjA5ZDU2NTJkNDM5YzMwMDE3OTYyOTNhMi4uYWZlMzQ3M2EwZWYwZDBkNjFjZDRkZmRmYmY4NDc1
ZGJkZTNmNWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIv
T3BlblhSTGF5ZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVE
YXRhOjpMYXllckRhdGE+IE9wZW5YUkxheWVyUHJvamVjdGlvbjo6c3RhcnRGcmFtZSgpCiB7CiAg
ICAgYXV0byB0ZXh0dXJlID0gbV9zd2FwY2hhaW4tPmFjcXVpcmVJbWFnZSgpOwogICAgIGlmICgh
dGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhIHsg
KnRleHR1cmUgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJTd2FwY2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUlN3YXBjaGFpbi5jcHAKaW5kZXggOGU0YWRiNmVkMTJhNTI3MjFlZDEwNGI4YTNl
MDhjZTY5OTMxYjlmYy4uZmU5ZGFjOTFhZmZlMmI2MzY3YzJmYmI5Nzk3MDQxM2Y2MDY0OTk5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBj
aGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3
YXBjaGFpbi5jcHAKQEAgLTgzLDE0ICs4MywxNCBAQCBPcHRpb25hbDxQbGF0Zm9ybUdMT2JqZWN0
PiBPcGVuWFJTd2FwY2hhaW46OmFjcXVpcmVJbWFnZSgpCiAgICAgYXV0byBhY3F1aXJlSW5mbyA9
IGNyZWF0ZVN0cnVjdHVyZTxYclN3YXBjaGFpbkltYWdlQWNxdWlyZUluZm8sIFhSX1RZUEVfU1dB
UENIQUlOX0lNQUdFX0FDUVVJUkVfSU5GTz4oKTsKICAgICB1aW50MzJfdCBzd2FwY2hhaW5JbWFn
ZUluZGV4ID0gMDsKICAgICBhdXRvIHJlc3VsdCA9IHhyQWNxdWlyZVN3YXBjaGFpbkltYWdlKG1f
c3dhcGNoYWluLCAmYWNxdWlyZUluZm8sICZzd2FwY2hhaW5JbWFnZUluZGV4KTsKLSAgICBSRVRV
Uk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQWNxdWlyZVN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5j
ZSwgV1RGOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyQWNxdWly
ZVN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgc3RkOjpudWxsb3B0KTsKIAogICAgIFJFTEVB
U0VfQVNTRVJUKHN3YXBjaGFpbkltYWdlSW5kZXggPCBtX2ltYWdlQnVmZmVycy5zaXplKCkpOwog
CiAgICAgYXV0byB3YWl0SW5mbyA9IGNyZWF0ZVN0cnVjdHVyZTxYclN3YXBjaGFpbkltYWdlV2Fp
dEluZm8sIFhSX1RZUEVfU1dBUENIQUlOX0lNQUdFX1dBSVRfSU5GTz4oKTsKICAgICB3YWl0SW5m
by50aW1lb3V0ID0gWFJfSU5GSU5JVEVfRFVSQVRJT047CiAgICAgcmVzdWx0ID0geHJXYWl0U3dh
cGNoYWluSW1hZ2UobV9zd2FwY2hhaW4sICZ3YWl0SW5mbyk7Ci0gICAgUkVUVVJOX0lGX0ZBSUxF
RChyZXN1bHQsICJ4cldhaXRTd2FwY2hhaW5JbWFnZSIsIG1faW5zdGFuY2UsIFdURjo6bnVsbG9w
dCk7CisgICAgUkVUVVJOX0lGX0ZBSUxFRChyZXN1bHQsICJ4cldhaXRTd2FwY2hhaW5JbWFnZSIs
IG1faW5zdGFuY2UsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBtX2FjcXVpcmVkVGV4dHVyZSA9IG1f
aW1hZ2VCdWZmZXJzW3N3YXBjaGFpbkltYWdlSW5kZXhdLmltYWdlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5EYXRhLmNwcAppbmRleCBhN2U0N2M2ZGY5MWIzMGQwZjk5YjFkMzgzMWI3YzNm
MmQ4ZjBiZWY5Li5mYzExY2JjYmYxNDEyZjIxNTg3ZDg5YzI1ODNhMjVjMjkzODM2NGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgY29uc3Qg
VmVjdG9yPFBsdWdpbkluZm8+JiBQbHVnaW5EYXRhOjp3ZWJWaXNpYmxlUGx1Z2lucygpIGNvbnN0
CiAgICAgYXV0byBkb2N1bWVudFVSTCA9IG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpID8g
bV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnVybCgpIDogVVJMIHsgfTsKICAgICBpZiAo
IWRvY3VtZW50VVJMLmlzTnVsbCgpICYmICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwobV9j
YWNoZWRWaXNpYmxlUGx1Z2lucy5wYWdlVVJMLCBkb2N1bWVudFVSTCkpIHsKICAgICAgICAgbV9j
YWNoZWRWaXNpYmxlUGx1Z2lucy5wYWdlVVJMID0gV1RGTW92ZShkb2N1bWVudFVSTCk7Ci0gICAg
ICAgIG1fY2FjaGVkVmlzaWJsZVBsdWdpbnMucGx1Z2luTGlzdCA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9jYWNoZWRWaXNpYmxlUGx1Z2lucy5wbHVnaW5MaXN0ID0gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRWaXNpYmxlUGx1Z2lucy5wbHVnaW5MaXN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCBlYWE2NDNlNDVlODEwM2IyYWU0NmVmYmMx
NTNlNzI5YTc5MmRiYzVlLi5kY2IwZTUzYzI3Mzc5MGY2MTMyZmFhNzJjNGQ2YjY3ZmY5NTI4N2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtMTQxLDEyICsxNDEsMTIgQEAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXI+IFN1cHBvcnRlZFBsdWcKICAgICBPcHRpb25hbDxTdHJpbmc+IG1hdGNoaW5nRG9t
YWluOwogICAgIGRlY29kZXIgPj4gbWF0Y2hpbmdEb21haW47CiAgICAgaWYgKCFtYXRjaGluZ0Rv
bWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gcGx1Z2luSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IHBsdWdpbklkZW50aWZpZXI7CiAgICAgaWYgKCFwbHVnaW5JZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXIgeyBXVEZNb3ZlKG1hdGNo
aW5nRG9tYWluLnZhbHVlKCkpLCBXVEZNb3ZlKHBsdWdpbklkZW50aWZpZXIudmFsdWUoKSkgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXgg
ZTM1MThiYjUyYmIxNDEzM2E5YmU4OTM3OTM1MDc0ZmNlYzVjYTYyZS4uZDY4NmZhYzk3MDc4MGVm
Nzk4MjA2Y2M5MGY1NzAwM2FiZDAxM2NkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0F1dG9UYWJsZUxheW91dC5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEF1dG9UYWJsZUxh
eW91dDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICBudW1BdXRvRW1wdHlDZWxsc09ubHkrKzsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZOb25FbXB0eUF1
dG87Ci0gICAgICAgICAgICAgICAgdG90YWxBdXRvID0gdG90YWxBdXRvLnZhbHVlT3IoMC5mKSAr
IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAg
ICAgICB0b3RhbEF1dG8gPSB0b3RhbEF1dG8udmFsdWVfb3IoMC5mKSArIG1fbGF5b3V0U3RydWN0
W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICBhbGxvY0F1dG8g
Kz0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKaW5kZXggMDUzOWM2YTQzM2Q5ZmFlYmY1
MWYyMTQ1ZTdjZjMxMjM4OTAyMDExMy4uYWZiNzAwNDY4OGM0MTJlNjI2NGFhZmIyZGUxZThjZTE0
MjQ2ZDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0JyZWFrTGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCkBAIC0xMDksNyAr
MTA5LDcgQEAgaW5saW5lIHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3NpdGlvbihMYXp5TGluZUJy
ZWFrSXRlcmF0b3ImIGxhenlCcmVha0l0ZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICBpZiAo
YnJlYWtJdGVyYXRvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9
IHVicmtfZm9sbG93aW5nKGJyZWFrSXRlcmF0b3IsIGkgLSAxICsgcHJpb3JDb250ZXh0TGVuZ3Ro
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gVUJSS19ET05FKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRCcmVhayA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0QnJlYWsgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCByZXN1bHQgPSBjYW5kaWRhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA+PSBwcmlvckNvbnRleHRMZW5ndGgpOwpAQCAtMTk1LDcgKzE5NSw3IEBA
IGlubGluZSB1bnNpZ25lZCBuZXh0QnJlYWthYmxlUG9zaXRpb25CcmVha0NoYXJhY3RlcihMYXp5
TGluZUJyZWFrSXRlcmF0b3ImIGxhenlCCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5Nzg3NgogICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3IgaXRlcmF0b3Ioc3RyaW5nVmlldyk7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5leHQgPSB1
YnJrX2ZvbGxvd2luZyhpdGVyYXRvciwgc3RhcnRQb3NpdGlvbik7Ci0gICAgcmV0dXJuIG5leHQu
dmFsdWVPcihzdHJpbmdWaWV3Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gbmV4dC52YWx1ZV9vcihz
dHJpbmdWaWV3Lmxlbmd0aCgpKTsKIH0KIAogaW5saW5lIGJvb2wgaXNCcmVha2FibGUoTGF6eUxp
bmVCcmVha0l0ZXJhdG9yJiBsYXp5QnJlYWtJdGVyYXRvciwgdW5zaWduZWQgc3RhcnRQb3NpdGlv
biwgT3B0aW9uYWw8dW5zaWduZWQ+JiBuZXh0QnJlYWthYmxlLCBib29sIGJyZWFrTkJTUCwgYm9v
bCBjYW5Vc2VTaG9ydGN1dCwgYm9vbCBrZWVwQWxsV29yZHMsIGJvb2wgYnJlYWtBbnl3aGVyZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKaW5kZXggMmRiZjc0NjA5ODIxZjUw
NWI0MGYzMzFlNjZiMTdlNjcwNmJhYmQxNy4uMTc2OTQ3MjJlNzE2MDEwMmI3YTAyYzIzMzFiYWY0
ZDZmN2M5ODg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVl
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKQEAgLTYw
LDE1ICs2MCwxNSBAQCBPcHRpb25hbDxDU1NWYWx1ZUtleT4gQ1NTVmFsdWVLZXk6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBjc3NWYWx1ZUlEOwogICAg
IGRlY29kZXIgPj4gY3NzVmFsdWVJRDsKICAgICBpZiAoIWNzc1ZhbHVlSUQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0
aW9uYWw8Ym9vbD4gdXNlRGFya0FwcGVhcmFuY2U7CiAgICAgZGVjb2RlciA+PiB1c2VEYXJrQXBw
ZWFyYW5jZTsKICAgICBpZiAoIXVzZURhcmtBcHBlYXJhbmNlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPGJv
b2w+IHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsOwogICAgIGRlY29kZXIgPj4gdXNlRWxl
dmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWw7CiAgICAgaWYgKCF1c2VFbGV2YXRlZFVzZXJJbnRlcmZh
Y2VMZXZlbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmNzc1ZhbHVlSUQpLCBXVEZNb3Zl
KCp1c2VEYXJrQXBwZWFyYW5jZSksIFdURk1vdmUoKnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxl
dmVsKSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVu
dFJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKaW5kZXgg
MmZmNWU5MzYyZjZmNDI2Zjc2OWI5NmM5YjhhMmEzMTM3OGM0ZjcxOC4uNmExYWM0ZTNiMzk1Zjgy
ODRlYzdhN2M2ZGJhNjMxMDk4ZWVhZDgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V2ZW50UmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50
UmVnaW9uLmgKQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRS
ZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJlZ2lvbj4gcmVn
aW9uOwogICAgIGRlY29kZXIgPj4gcmVnaW9uOwogICAgIGlmICghcmVnaW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
RXZlbnRSZWdpb24gZXZlbnRSZWdpb247CiAgICAgZXZlbnRSZWdpb24ubV9yZWdpb24gPSBXVEZN
b3ZlKCpyZWdpb24pOwpAQCAtMTUyLDE0ICsxNTIsMTQgQEAgT3B0aW9uYWw8RXZlbnRSZWdpb24+
IEV2ZW50UmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxSZWdp
b24+IHdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKICAgICBkZWNvZGVyID4+IHdoZWVsRXZlbnRM
aXN0ZW5lclJlZ2lvbjsKICAgICBpZiAoIXdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGV2ZW50UmVnaW9uLm1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKIAogICAgIE9wdGlvbmFsPFJlZ2lvbj4gbm9uUGFzc2l2
ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbjsKICAgICBkZWNvZGVyID4+IG5vblBhc3NpdmVXaGVl
bEV2ZW50TGlzdGVuZXJSZWdpb247CiAgICAgaWYgKCFub25QYXNzaXZlV2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgZXZlbnRSZWdpb24ubV9ub25QYXNzaXZlV2hlZWxFdmVudExp
c3RlbmVyUmVnaW9uID0gV1RGTW92ZSgqbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bik7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjgsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZl
bnRSZWdpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFZlY3RvcjxS
ZWdpb24+PiB0b3VjaEFjdGlvblJlZ2lvbnM7CiAgICAgZGVjb2RlciA+PiB0b3VjaEFjdGlvblJl
Z2lvbnM7CiAgICAgaWYgKCF0b3VjaEFjdGlvblJlZ2lvbnMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBldmVudFJlZ2lv
bi5tX3RvdWNoQWN0aW9uUmVnaW9ucyA9IFdURk1vdmUoKnRvdWNoQWN0aW9uUmVnaW9ucyk7CiAj
ZW5kaWYKQEAgLTE3Nyw3ICsxNzcsNyBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdp
b246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFJlZ2lv
bj4+IGVkaXRhYmxlUmVnaW9uOwogICAgIGRlY29kZXIgPj4gZWRpdGFibGVSZWdpb247CiAgICAg
aWYgKCFlZGl0YWJsZVJlZ2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBldmVudFJlZ2lvbi5tX2VkaXRhYmxlUmVnaW9u
ID0gV1RGTW92ZSgqZWRpdGFibGVSZWdpb24pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggYWM1OWUzY2FiZjEzMWZmNjNhZjRk
NmU5N2MzYWVkYzY0NDRmZDc0YS4uNDI5YzBhOTI2Zjc5YWVhNjI0NTYwYzZhMWVhM2JkMGU1Mjky
NjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
QEAgLTIyMiw4ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBoaWdoVmFsdWUoKSBj
b25zdCB7IHJldHVybiBMYXlvdXRVbml0OjptYXgoKTsgfQogICAgIHZvaWQgY29sbGVjdElmTmVl
ZGVkKGNvbnN0IEludGVydmFsVHlwZSYpOwogCi0gICAgTGF5b3V0VW5pdCBuZXh0TG9naWNhbEJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dExvZ2ljYWxCb3R0b20udmFsdWVPcigwKTsgfQot
ICAgIExheW91dFVuaXQgbmV4dFNoYXBlTG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmV4dFNoYXBlTG9naWNhbEJvdHRvbS52YWx1ZU9yKG5leHRMb2dpY2FsQm90dG9tKCkpOyB9Cisg
ICAgTGF5b3V0VW5pdCBuZXh0TG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dExv
Z2ljYWxCb3R0b20udmFsdWVfb3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IG5leHRTaGFwZUxvZ2lj
YWxCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX25leHRTaGFwZUxvZ2ljYWxCb3R0b20udmFsdWVf
b3IobmV4dExvZ2ljYWxCb3R0b20oKSk7IH0KIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPGNvbnN0
IFJlbmRlckJsb2NrRmxvdz4gbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWRCYXNlbGluZUFsaWdubWVudC5jcHAKaW5kZXggYWIyYzA2Mzg1ZmEzNTQ5M2Jl
MGIwODAwNWE0NjJkNDNkZjIwODhhMy4uMjIzZTAyOGYyYTNmNzc3ZDliMjIwYzA5MWEzMmUxYWIw
N2MwMzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVB
bGlnbm1lbnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAog
TGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlv
dXRVbml0IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5l
QXhpcykgPyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2lu
T3ZlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxp
bmUoaXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykg
PyBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoTGF5b3V0VW5pdCgtMSkpIDogTGF5
b3V0VW5pdCgtMSkpOworICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQYXJhbGxlbFRvQmFzZWxp
bmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGlsZC5maXJzdExpbmVCYXNl
bGluZSgpLnZhbHVlX29yKExheW91dFVuaXQoLTEpKSA6IExheW91dFVuaXQoLTEpKTsKICAgICAv
LyBXZSB0YWtlIGJvcmRlci1ib3gncyB1bmRlciBlZGdlIGlmIG5vIHZhbGlkIGJhc2VsaW5lLgog
ICAgIGlmIChiYXNlbGluZSA9PSAtMSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxp
bmVBeGlzKGJhc2VsaW5lQXhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCmluZGV4IGEyNzBkYjhiZDZmODRjZDc5MGRh
ZjIxMTc2NjhmNWVjMmRkMjY2ZmUuLjMxNDI2NTMxZTI5YThlZjQ5MGIyY2EzODRlZDk1NThjNzQ4
ZGRiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXpp
bmdBbGdvcml0aG0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgR3JpZFRyYWNrOjpzZXRC
YXNlU2l6ZShMYXlvdXRVbml0IGJhc2VTaXplKQogCiB2b2lkIEdyaWRUcmFjazo6c2V0R3Jvd3Ro
TGltaXQoTGF5b3V0VW5pdCBncm93dGhMaW1pdCkKIHsKLSAgICBtX2dyb3d0aExpbWl0ID0gZ3Jv
d3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdyb3d0aExpbWl0
LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlT3IoZ3Jvd3RoTGltaXQpKTsKKyAgICBtX2dyb3d0aExp
bWl0ID0gZ3Jvd3RoTGltaXQgPT0gaW5maW5pdHkgPyBncm93dGhMaW1pdCA6IHN0ZDo6bWluKGdy
b3d0aExpbWl0LCBtX2dyb3d0aExpbWl0Q2FwLnZhbHVlX29yKGdyb3d0aExpbWl0KSk7CiAgICAg
ZW5zdXJlR3Jvd3RoTGltaXRJc0JpZ2dlclRoYW5CYXNlU2l6ZSgpOwogfQogCkBAIC0yMTcsNyAr
MjE3LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxCYXNl
U2l6ZShjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1MKIAogICAgIGNvbnN0IExlbmd0aCYgdHJh
Y2tMZW5ndGggPSBncmlkTGVuZ3RoLmxlbmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5pc1Nw
ZWNpZmllZCgpKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0
ZDo6bWF4PExheW91dFVuaXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSwgMCkpOworICAg
ICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVu
aXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0cmFj
a0xlbmd0aC5pc01pbkNvbnRlbnQoKSB8fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFja0xl
bmd0aC5pc01heENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIDA7CkBAIC0yMzEsNyArMjMxLDcgQEAg
TGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OmluaXRpYWxHcm93dGhMaW1pdChj
b25zdCBHcmlkVHJhY2tTaXplJiB0cmEKIAogICAgIGNvbnN0IExlbmd0aCYgdHJhY2tMZW5ndGgg
PSBncmlkTGVuZ3RoLmxlbmd0aCgpOwogICAgIGlmICh0cmFja0xlbmd0aC5pc1NwZWNpZmllZCgp
KQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExh
eW91dFVuaXQ+KGF2YWlsYWJsZVNwYWNlKCkudmFsdWVPcigwKSwgMCkpOworICAgICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgodHJhY2tMZW5ndGgsIHN0ZDo6bWF4PExheW91dFVuaXQ+KGF2YWls
YWJsZVNwYWNlKCkudmFsdWVfb3IoMCksIDApKTsKIAogICAgIEFTU0VSVCh0cmFja0xlbmd0aC5p
c01pbkNvbnRlbnQoKSB8fCB0cmFja0xlbmd0aC5pc0F1dG8oKSB8fCB0cmFja0xlbmd0aC5pc01h
eENvbnRlbnQoKSk7CiAgICAgcmV0dXJuIGluZmluaXR5OwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZv
aWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzaXplVHJhY2tUb0ZpdE5vblNwYW5uaW5nSXRl
bShjb25zdCBHcmlkU3BhbiYgc3BhCiAgICAgfSBlbHNlIGlmICh0cmFja1NpemUuaGFzTWF4Q29u
dGVudE9yQXV0b01heFRyYWNrQnJlYWR0aCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgZ3Jvd3Ro
TGltaXQgPSBtX3N0cmF0ZWd5LT5tYXhDb250ZW50Rm9yQ2hpbGQoZ3JpZEl0ZW0pOwogICAgICAg
ICBpZiAodHJhY2tTaXplLmlzRml0Q29udGVudCgpKQotICAgICAgICAgICAgZ3Jvd3RoTGltaXQg
PSBzdGQ6Om1pbihncm93dGhMaW1pdCwgdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLmZpdENvbnRl
bnRUcmFja0JyZWFkdGgoKS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApKSk7
CisgICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExpbWl0LCB2YWx1ZUZv
ckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBhdmFp
bGFibGVTcGFjZSgpLnZhbHVlX29yKDApKSk7CiAgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0
KHN0ZDo6bWF4KHRyYWNrLmdyb3d0aExpbWl0KCksIGdyb3d0aExpbWl0KSk7CiAgICAgfQogfQpA
QCAtNDg1LDggKzQ4NSw4IEBAIHN0YXRpYyBib29sIHNvcnRCeUdyaWRUcmFja0dyb3d0aFBvdGVu
dGlhbChjb25zdCBHcmlkVHJhY2sqIHRyYWNrMSwgY29uc3QgR3JpZFRyCiAgICAgaWYgKHRyYWNr
MUhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0aG91dENhcCB8fCB0cmFjazJIYXNJbmZpbml0
ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXApCiAgICAgICAgIHJldHVybiB0cmFjazJIYXNJbmZp
bml0ZUdyb3d0aFBvdGVudGlhbFdpdGhvdXRDYXA7CiAKLSAgICBMYXlvdXRVbml0IHRyYWNrMUxp
bWl0ID0gdHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlT3IodHJhY2sxLT5ncm93dGhMaW1p
dCgpKTsKLSAgICBMYXlvdXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENh
cCgpLnZhbHVlT3IodHJhY2syLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlvdXRVbml0IHRyYWNr
MUxpbWl0ID0gdHJhY2sxLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRyYWNrMS0+Z3Jvd3Ro
TGltaXQoKSk7CisgICAgTGF5b3V0VW5pdCB0cmFjazJMaW1pdCA9IHRyYWNrMi0+Z3Jvd3RoTGlt
aXRDYXAoKS52YWx1ZV9vcih0cmFjazItPmdyb3d0aExpbWl0KCkpOwogICAgIHJldHVybiAodHJh
Y2sxTGltaXQgLSB0cmFjazEtPmJhc2VTaXplKCkpIDwgKHRyYWNrMkxpbWl0IC0gdHJhY2syLT5i
YXNlU2l6ZSgpKTsKIH0KIApAQCAtNTY2LDE0ICs1NjYsMTQgQEAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjplc3RpbWF0ZWRHcmlkQXJlYUJyZWFkdGhGb3JD
aGlsZCgKICAgICAgICAgaWYgKG1heFRyYWNrU2l6ZS5pc0NvbnRlbnRTaXplZCgpIHx8IG1heFRy
YWNrU2l6ZS5pc0ZsZXgoKSB8fCBpc1JlbGF0aXZlR3JpZExlbmd0aEFzQXV0byhtYXhUcmFja1Np
emUsIGRpcmVjdGlvbikpCiAgICAgICAgICAgICBncmlkQXJlYUlzSW5kZWZpbml0ZSA9IHRydWU7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdyaWRBcmVhU2l6ZSArPSB2YWx1ZUZvckxlbmd0
aChtYXhUcmFja1NpemUubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUudmFsdWVPcigwX2x1KSk7Cisg
ICAgICAgICAgICBncmlkQXJlYVNpemUgKz0gdmFsdWVGb3JMZW5ndGgobWF4VHJhY2tTaXplLmxl
bmd0aCgpLCBhdmFpbGFibGVTaXplLnZhbHVlX29yKDBfbHUpKTsKICAgICB9CiAKICAgICBncmlk
QXJlYVNpemUgKz0gbV9yZW5kZXJHcmlkLT5ndXR0ZXJzU2l6ZShtX2dyaWQsIGRpcmVjdGlvbiwg
c3Bhbi5zdGFydExpbmUoKSwgc3Bhbi5pbnRlZ2VyU3BhbigpLCBhdmFpbGFibGVTaXplKTsKIAog
ICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRM
YXlvdXRGdW5jdGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCptX3JlbmRlckdyaWQs
IGNoaWxkLCBGb3JDb2x1bW5zKTsKICAgICBpZiAoZ3JpZEFyZWFJc0luZGVmaW5pdGUpCi0gICAg
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBtYWtlT3B0aW9u
YWwoc3RkOjptYXgoY2hpbGQubWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCksIGdyaWRBcmVhU2l6
ZSkpIDogV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IGNoaWxkSW5s
aW5lRGlyZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0ZDo6bWF4KGNoaWxkLm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpLCBncmlkQXJlYVNpemUpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gZ3JpZEFyZWFTaXplOwogfQogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG06OmNvbXB1dGVHcmlkQ29udGFpbmVySW50cmluc2ljU2l6ZXMoKQog
ICAgICAgICBtX21heENvbnRlbnRTaXplICs9IHRyYWNrLmdyb3d0aExpbWl0SXNJbmZpbml0ZSgp
ID8gdHJhY2suYmFzZVNpemUoKSA6IHRyYWNrLmdyb3d0aExpbWl0KCk7CiAgICAgICAgIC8vIFRo
ZSBncm93dGggbGltaXQgY2FwcyBtdXN0IGJlIGNsZWFyZWQgbm93IGluIG9yZGVyIHRvIHByb3Bl
cmx5IHNvcnQKICAgICAgICAgLy8gdHJhY2tzIGJ5IGdyb3d0aCBwb3RlbnRpYWwgb24gYW4gZXZl
bnR1YWwgIk1heGltaXplIFRyYWNrcyIuCi0gICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0Q2Fw
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIHRyYWNrLnNldEdyb3d0aExpbWl0Q2FwKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogfQogCkBAIC03NTIsNyArNzUyLDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJv
eCYgY2gKICAgICAvLyBJZiB8Y2hpbGR8IGhhcyBhIHJlbGF0aXZlIGxvZ2ljYWwgaGVpZ2h0LCB3
ZSBzaG91bGRuJ3QgbGV0IGl0IG92ZXJyaWRlIGl0cyBpbnRyaW5zaWMgaGVpZ2h0LCB3aGljaCBp
cwogICAgIC8vIHdoYXQgd2UgYXJlIGludGVyZXN0ZWQgaW4gaGVyZS4gVGh1cyB3ZSBuZWVkIHRv
IHNldCB0aGUgYmxvY2stYXhpcyBvdmVycmlkZSBzaXplIHRvIG51bGxvcHQgKG5vIHBvc3NpYmxl
IHJlc29sdXRpb24pLgogICAgIGlmIChzaG91bGRDbGVhck92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBGb3JSb3dzKSkgewotICAgICAgICBzZXRPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGlsZChjaGlsZCwgY2hpbGRCbG9j
a0RpcmVjdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24sIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoaWxkLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7
CiAgICAgfQogCkBAIC04MTYsNyArODE2LDcgQEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG1TdHJhdGVneTo6bWluU2l6ZUZvckNoaWxkKFJlbmRlckJveCYgY2hpbGQpIGMKICAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIHRyYWNrU2l6ZSA9IGFsbFRyYWNrc1t0cmFja1Bvc2l0aW9u
XS5jYWNoZWRUcmFja1NpemUoKTsKICAgICAgICAgICAgIGlmICghdHJhY2tTaXplLmhhc0ZpeGVk
TWF4VHJhY2tCcmVhZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1pblNpemU7Ci0gICAg
ICAgICAgICBtYXhCcmVhZHRoICs9IHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5tYXhUcmFja0Jy
ZWFkdGgoKS5sZW5ndGgoKSwgYXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAg
ICAgICAgIG1heEJyZWFkdGggKz0gdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLm1heFRyYWNrQnJl
YWR0aCgpLmxlbmd0aCgpLCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlX29yKDBfbHUpKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAobWluU2l6ZSA+IG1heEJyZWFkdGgpIHsKICAgICAgICAgICAgIGF1
dG8gbWFyZ2luQW5kQm9yZGVyQW5kUGFkZGluZyA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6Om1hcmdp
bkxvZ2ljYWxTaXplRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgZGlyZWN0aW9uKCksIGNoaWxkKTsK
QEAgLTkxNCwxMSArOTE0LDExIEBAIExheW91dFVuaXQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
U3RyYXRlZ3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjCiAgICAgR3JpZFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0
aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIEZv
ckNvbHVtbnMpOwogICAgIGJvb2wgaXNSb3dBeGlzID0gZGlyZWN0aW9uKCkgPT0gY2hpbGRJbmxp
bmVEaXJlY3Rpb247CiAgICAgaWYgKGlzUm93QXhpcykKLSAgICAgICAgcmV0dXJuIGNoaWxkLmNv
bXB1dGVMb2dpY2FsV2lkdGhJbkZyYWdtZW50VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBh
dmFpbGFibGVTaXplLnZhbHVlT3IoMCksICpyZW5kZXJHcmlkKCksIG51bGxwdHIpICsgR3JpZExh
eW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBj
aGlsZElubGluZURpcmVjdGlvbiwgY2hpbGQpOworICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0
ZUxvZ2ljYWxXaWR0aEluRnJhZ21lbnRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIGF2YWls
YWJsZVNpemUudmFsdWVfb3IoMCksICpyZW5kZXJHcmlkKCksIG51bGxwdHIpICsgR3JpZExheW91
dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGls
ZElubGluZURpcmVjdGlvbiwgY2hpbGQpOwogICAgIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdl
ZCA9IHVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNo
aWxkLCBjaGlsZElubGluZURpcmVjdGlvbiwgYXZhaWxhYmxlU2l6ZSk7CiAgICAgbGF5b3V0R3Jp
ZEl0ZW1Gb3JNaW5TaXplQ29tcHV0YXRpb24oY2hpbGQsIG92ZXJyaWRlU2l6ZUhhc0NoYW5nZWQp
OwogICAgIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZEJsb2NrRGlyZWN0aW9uID0gR3Jp
ZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQo
KSwgY2hpbGQsIEZvclJvd3MpOwotICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgV1RGOjpudWxsb3B0KS52YWx1ZU9yKDApICsg
R3JpZExheW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGlsZCgqcmVuZGVyR3Jp
ZCgpLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBjaGlsZCk7CisgICAgcmV0dXJuIGNoaWxkLmNvbXB1
dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hpbGRNaW5TaXplLCBzdGQ6Om51bGxvcHQp
LnZhbHVlX29yKDApICsgR3JpZExheW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JD
aGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBjaGlsZCk7CiB9CiAKIGNs
YXNzIEluZGVmaW5pdGVTaXplU3RyYXRlZ3kgZmluYWwgOiBwdWJsaWMgR3JpZFRyYWNrU2l6aW5n
QWxnb3JpdGhtU3RyYXRlZ3kgewpAQCAtOTk4LDggKzk5OCw4IEBAIGJvb2wgSW5kZWZpbml0ZVNp
emVTdHJhdGVneTo6cmVjb21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxl
eEZyYWN0CiAKICAgICBjb25zdCBSZW5kZXJHcmlkKiByZW5kZXJHcmlkID0gdGhpcy0+cmVuZGVy
R3JpZCgpOwogCi0gICAgYXV0byBtaW5TaXplID0gcmVuZGVyR3JpZC0+Y29tcHV0ZUNvbnRlbnRM
b2dpY2FsSGVpZ2h0KE1pblNpemUsIHJlbmRlckdyaWQtPnN0eWxlKCkubG9naWNhbE1pbkhlaWdo
dCgpLCBXVEY6Om51bGxvcHQpOwotICAgIGF1dG8gbWF4U2l6ZSA9IHJlbmRlckdyaWQtPmNvbXB1
dGVDb250ZW50TG9naWNhbEhlaWdodChNYXhTaXplLCByZW5kZXJHcmlkLT5zdHlsZSgpLmxvZ2lj
YWxNYXhIZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIG1pblNpemUgPSByZW5kZXJH
cmlkLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWluU2l6ZSwgcmVuZGVyR3JpZC0+c3R5
bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBtYXhTaXpl
ID0gcmVuZGVyR3JpZC0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIHJlbmRl
ckdyaWQtPnN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAg
Ly8gUmVkbyB0aGUgZmxleCBmcmFjdGlvbiBjb21wdXRhdGlvbiB1c2luZyBtaW58bWF4LWhlaWdo
dCBhcyBkZWZpbml0ZSBhdmFpbGFibGUgc3BhY2UgaW4gY2FzZQogICAgIC8vIHRoZSB0b3RhbCBo
ZWlnaHQgaXMgc21hbGxlciB0aGFuIG1pbi1oZWlnaHQgb3IgbGFyZ2VyIHRoYW4gbWF4LWhlaWdo
dC4KQEAgLTEwMTEsNyArMTAxMSw3IEBAIGJvb2wgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6cmVj
b21wdXRlVXNlZEZsZXhGcmFjdGlvbklmTmVlZGVkKGRvdWJsZSYgZmxleEZyYWN0CiAKICAgICBM
YXlvdXRVbml0IGZyZWVTcGFjZSA9IGNoZWNrTWF4U2l6ZSA/IG1heFNpemUudmFsdWUoKSA6IC0x
X2x1OwogICAgIGNvbnN0IEdyaWQmIGdyaWQgPSBtX2FsZ29yaXRobS5ncmlkKCk7Ci0gICAgZnJl
ZVNwYWNlID0gc3RkOjptYXgoZnJlZVNwYWNlLCBtaW5TaXplLnZhbHVlT3IoMF9sdSkpIC0gcmVu
ZGVyR3JpZC0+Z3V0dGVyc1NpemUoZ3JpZCwgRm9yUm93cywgMCwgZ3JpZC5udW1UcmFja3MoRm9y
Um93cyksIGF2YWlsYWJsZVNwYWNlKCkpOworICAgIGZyZWVTcGFjZSA9IHN0ZDo6bWF4KGZyZWVT
cGFjZSwgbWluU2l6ZS52YWx1ZV9vcigwX2x1KSkgLSByZW5kZXJHcmlkLT5ndXR0ZXJzU2l6ZShn
cmlkLCBGb3JSb3dzLCAwLCBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSwgYXZhaWxhYmxlU3BhY2Uo
KSk7CiAKICAgICBzaXplX3QgbnVtYmVyT2ZUcmFja3MgPSBtX2FsZ29yaXRobS50cmFja3MoRm9y
Um93cykuc2l6ZSgpOwogICAgIGZsZXhGcmFjdGlvbiA9IGZpbmRGclVuaXRTaXplKEdyaWRTcGFu
Ojp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbigwLCBudW1iZXJPZlRyYWNrcyksIGZyZWVTcGFj
ZSk7CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBMYXlvdXRVbml0IEluZGVmaW5pdGVTaXplU3RyYXRl
Z3k6OmZyZWVTcGFjZUZvclN0cmV0Y2hBdXRvVHJhY2tzU3RlcCgpIGNvbnN0CiAgICAgaWYgKGRp
cmVjdGlvbigpID09IEZvckNvbHVtbnMpCiAgICAgICAgIHJldHVybiAwX2x1OwogCi0gICAgYXV0
byBtaW5TaXplID0gcmVuZGVyR3JpZCgpLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWlu
U2l6ZSwgcmVuZGVyR3JpZCgpLT5zdHlsZSgpLmxvZ2ljYWxNaW5IZWlnaHQoKSwgV1RGOjpudWxs
b3B0KTsKKyAgICBhdXRvIG1pblNpemUgPSByZW5kZXJHcmlkKCktPmNvbXB1dGVDb250ZW50TG9n
aWNhbEhlaWdodChNaW5TaXplLCByZW5kZXJHcmlkKCktPnN0eWxlKCkubG9naWNhbE1pbkhlaWdo
dCgpLCBzdGQ6Om51bGxvcHQpOwogICAgIGlmICghbWluU2l6ZSkKICAgICAgICAgcmV0dXJuIDBf
bHU7CiAgICAgcmV0dXJuIG1pblNpemUudmFsdWUoKSAtIGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgp
OwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgTGF5b3V0VW5pdCBEZWZpbml0ZVNpemVTdHJhdGVneTo6
bWluTG9naWNhbFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdAogICAgIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBjaGlsZElubGluZURpcmVjdGlvbiA9IEdyaWRMYXlvdXRGdW5j
dGlvbnM6OmZsb3dBd2FyZURpcmVjdGlvbkZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkLCBG
b3JDb2x1bW5zKTsKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZmxvd0F3YXJlRGlyZWN0
aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKnJl
bmRlckdyaWQoKSwgY2hpbGQsIGRpcmVjdGlvbigpKTsKICAgICBpZiAoaGFzUmVsYXRpdmVNYXJn
aW5PclBhZGRpbmdGb3JDaGlsZChjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSB8fCAoZGlyZWN0
aW9uKCkgIT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gJiYgaGFzUmVsYXRpdmVPckludHJpbnNpY1Np
emVGb3JDaGlsZChjaGlsZCwgZmxvd0F3YXJlRGlyZWN0aW9uKSkpIHsKLSAgICAgICAgYXV0byBp
bmRlZmluaXRlU2l6ZSA9IGRpcmVjdGlvbigpID09IGNoaWxkSW5saW5lRGlyZWN0aW9uID8gbWFr
ZU9wdGlvbmFsKDBfbHUpIDogV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIGluZGVmaW5pdGVT
aXplID0gZGlyZWN0aW9uKCkgPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBzdGQ6Om1ha2Vfb3B0
aW9uYWwoMF9sdSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNldE92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBkaXJlY3Rpb24oKSwgaW5kZWZpbml0
ZVNpemUpOwogICAgIH0KICAgICByZXR1cm4gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtU3RyYXRl
Z3k6Om1pbkxvZ2ljYWxTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxl
U2l6ZSk7CkBAIC0xMTE5LDcgKzExMTksNyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bTo6aW5pdGlhbGl6ZVRyYWNrU2l6ZXMoKQogCiAgICAgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRy
YWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7CiAgICAgY29uc3QgYm9vbCBpbmRlZmluaXRlSGVp
Z2h0ID0gbV9kaXJlY3Rpb24gPT0gRm9yUm93cyAmJiAhbV9yZW5kZXJHcmlkLT5oYXNEZWZpbml0
ZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICBMYXlvdXRVbml0IG1heFNpemUgPSBzdGQ6Om1heCgwX2x1
LCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMF9sdSkpOworICAgIExheW91dFVuaXQgbWF4U2l6
ZSA9IHN0ZDo6bWF4KDBfbHUsIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOwogICAg
IC8vIDEuIEluaXRpYWxpemUgcGVyIEdyaWQgdHJhY2sgdmFyaWFibGVzLgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBhbGxUcmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgR3JpZFRy
YWNrJiB0cmFjayA9IGFsbFRyYWNrc1tpXTsKQEAgLTEzMDYsNyArMTMwNiw3IEBAIHZvaWQgR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpzZXR1cChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGly
ZWN0aW9uLCB1bnNpZ25lCiAgICAgICAgIExheW91dFVuaXQgZ3V0dGVyc1NpemUgPSBtX3JlbmRl
ckdyaWQtPmd1dHRlcnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCAwLCBtX2dyaWQubnVtVHJhY2tz
KGRpcmVjdGlvbiksIHRoaXMtPmF2YWlsYWJsZVNwYWNlKGRpcmVjdGlvbikpOwogICAgICAgICBz
ZXRGcmVlU3BhY2UoZGlyZWN0aW9uLCAqYXZhaWxhYmxlU3BhY2UgLSBndXR0ZXJzU2l6ZSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHNldEZyZWVTcGFjZShkaXJlY3Rpb24sIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIHNldEZyZWVTcGFjZShkaXJlY3Rpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgdHJh
Y2tzKGRpcmVjdGlvbikucmVzaXplKG51bVRyYWNrcyk7CiAKICAgICBtX25lZWRzU2V0dXAgPSBm
YWxzZTsKQEAgLTEzNzksOCArMTM3OSw4IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
OjpyZXNldCgpCiAgICAgbV9jb250ZW50U2l6ZWRUcmFja3NJbmRleC5zaHJpbmsoMCk7CiAgICAg
bV9mbGV4aWJsZVNpemVkVHJhY2tzSW5kZXguc2hyaW5rKDApOwogICAgIG1fYXV0b1NpemVkVHJh
Y2tzRm9yU3RyZXRjaEluZGV4LnNocmluaygwKTsKLSAgICBzZXRBdmFpbGFibGVTcGFjZShGb3JS
b3dzLCBXVEY6Om51bGxvcHQpOwotICAgIHNldEF2YWlsYWJsZVNwYWNlKEZvckNvbHVtbnMsIFdU
Rjo6bnVsbG9wdCk7CisgICAgc2V0QXZhaWxhYmxlU3BhY2UoRm9yUm93cywgc3RkOjpudWxsb3B0
KTsKKyAgICBzZXRBdmFpbGFibGVTcGFjZShGb3JDb2x1bW5zLCBzdGQ6Om51bGxvcHQpOwogICAg
IG1faGFzUGVyY2VudFNpemVkUm93c0luZGVmaW5pdGVIZWlnaHQgPSBmYWxzZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRo
bS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5o
CmluZGV4IDZiNzk3ZWE4Nzg1NDA5ZGRlYjE4YTA1OWY0MTYwZDU1ZDY1ZDU4ZmYuLjNlZDA1ZTRm
ZDVkODI5YTQxNTBkZTk1MDkxYzNiMGIzMmJhZDJlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKQEAgLTI3Miw3ICsyNzIs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dEdyaWRJdGVtRm9yTWluU2l6
ZUNvbXB1dGF0aW9uKFJlbmRlckJveCYsIGJvb2wgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCkgY29u
c3QgPSAwOwogCiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94
JikgY29uc3Q7Ci0gICAgYm9vbCB1cGRhdGVPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVu
dFNpemVGb3JDaGlsZChSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIE9wdGlv
bmFsPExheW91dFVuaXQ+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBib29sIHVwZGF0ZU92
ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRlckJveCYsIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gPSBzdGQ6Om51bGxv
cHQpIGNvbnN0OwogCiAgICAgLy8gR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtIGFjY2Vzc29ycyBm
b3Igc3ViY2xhc3Nlcy4KICAgICBMYXlvdXRVbml0IGNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxnb3JpdGhtLmNvbXB1dGVUcmFja0Jhc2VkU2l6ZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAK
aW5kZXggMmJjMTlkMWU0ZGFlNjAwNGIzNTIwNDhhMDRhNWZmMWExYjEwOWExYS4uODlhYmNhOWE0
ZjEwNGQ0NTU3ODI4N2Q5MWQ4NzhiNWIwNjZkYWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcApAQCAtMTExLDcgKzExMSw3
IEBAIE9wdGlvbmFsPEludGVycG9sYXRpb25RdWFsaXR5PiBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjppbnRlcnBvbGF0aW9uUXVhbGl0eUZyb21TCiAgICAgY2FzZSBJbWFnZVJlbmRlcmluZzo6QXV0
bzoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogSW50ZXJwb2xhdGlvblF1YWxpdHkgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6Y2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSYgaW1hZ2UsIGNv
bnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oCmluZGV4IDhlOTljOTQxMmVjNDA0NjM1MzcxNzZmZGU0MmZiM2NmMWRi
ZGUxZDAuLmQ2NGM3MjM0NTJmYzM3YjczN2FjOWEwODFmOWJmMTcyOGFkNWYyOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlUGFyZW50Q2hpbGRMaXN0KCk7CiAjZW5kaWYKIAotICAgIGJvb2wg
dmlzaWJsZVRvSGl0VGVzdGluZyhPcHRpb25hbDxIaXRUZXN0UmVxdWVzdD4gaGl0VGVzdFJlcXVl
c3QgPSBXVEY6Om51bGxvcHQpIGNvbnN0CisgICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5nKE9w
dGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZpc2liaWxpdHk6OlZpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggM2IxNzRmYmRiZTNiMDY4
OGU2NmRjMDU4ZDk4ZGMyYTRjN2ZjZDcxOS4uNWE3NDkyNjA3NGJkMWMxMjcyNmY3MGFiMTMzNjNh
Y2VmYTRlNTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cApAQCAtMzk2LDcgKzM5Niw3IEBAIE9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhh
c2lzTWFya0V4aXN0c0FuZElzQWJvdmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0CiB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHRleHQgZW1waGFzaXMgbWFy
a3MgYW5kIHRoZXkgYXJlIHN1cHByZXNzZWQgYnkgcnVieSB0ZXh0LgogICAgIGlmIChzdHlsZS50
ZXh0RW1waGFzaXNNYXJrKCkgPT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNv
bnN0IE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gaG9yaXpvbnRhbE1hc2sgeyBUZXh0
RW1waGFzaXNQb3NpdGlvbjo6TGVmdCwgVGV4dEVtcGhhc2lzUG9zaXRpb246OlJpZ2h0IH07CiAK
QEAgLTQyOCw3ICs0MjgsNyBAQCBPcHRpb25hbDxib29sPiBJbmxpbmVUZXh0Qm94OjplbXBoYXNp
c01hcmtFeGlzdHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJiBzdAogCiAgICAgLy8gVGhl
IGVtcGhhc2lzIG1hcmtzIG92ZXIgYXJlIHN1cHByZXNzZWQgb25seSBpZiB0aGVyZSBpcyBhIHJ1
YnkgdGV4dCBib3ggYW5kIGl0IG5vdCBlbXB0eS4KICAgICBpZiAocnVieVRleHQgJiYgcnVieVRl
eHQtPmhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaXNBYm92ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaAppbmRleCA0ZGI1YTQ3YzEwNTJjN2QyZTkwYWZiOTk3MGM2Mzdi
NDNkZmFkYmQ4Li41MWVmNDFkY2ZkNWU1ZDEyYTlhYjU2ZGJmYjUyNDQwYzg1MGNkNzM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0
IFBhaW50SW5mbyB7CiAgICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2Vz
dG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0
KHJlY3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3Rv
clRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
cmVjdCkpOwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3JtZWRS
ZWN0LmxvY2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJhbmZv
cm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKaW5kZXggN2ZmZmU2YmMwYmEyZjM1YjNhMTU5MzhlZTVlOWQ1ZWQ0MTEwMmVkNS4u
NzEwYzEwMWYyM2QxZDA2ODg4ZmNhM2Y0MjM0Yjc0ZTcyMWI5NGY0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNTc5LDcgKzI1NzksNyBAQCBMYXlvdXRV
bml0IFJlbmRlckJsb2NrOjptaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlz
Rmlyc3RMaW5lLCBMYXlvdQogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoc2hvdWxkQXBwbHlMYXlvdXRDb250YWlu
bWVudCgqdGhpcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5
UnVuKCkpCiAgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwpAQCAtMjc1MSw3
ICsyNzUxLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6Y2FjaGVkRW5jbG9zaW5nRnJhZ21lbnRlZEZs
b3dOZWVkc1VwZGF0ZSgpIGNvbnN0CiB2b2lkIFJlbmRlckJsb2NrOjpzZXRDYWNoZWRFbmNsb3Np
bmdGcmFnbWVudGVkRmxvd05lZWRzVXBkYXRlKCkKIHsKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRh
JiByYXJlRGF0YSA9IGVuc3VyZUJsb2NrUmFyZURhdGEoKnRoaXMpOwotICAgIHJhcmVEYXRhLm1f
ZW5jbG9zaW5nRnJhZ21lbnRlZEZsb3cgPSBXVEY6Om51bGxvcHQ7CisgICAgcmFyZURhdGEubV9l
bmNsb3NpbmdGcmFnbWVudGVkRmxvdyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVuZGVyRnJhZ21l
bnRlZEZsb3cqIFJlbmRlckJsb2NrOjp1cGRhdGVDYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxv
dyhSZW5kZXJGcmFnbWVudGVkRmxvdyogZnJhZ21lbnRlZEZsb3cpIGNvbnN0CkBAIC0zMjQ0LDcg
KzMyNDQsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxhYmxlTG9n
aWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICBhdmFpbGFibGVIZWln
aHQgPSBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICBlbHNlIGlmIChzdHls
ZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS5pc0ZpeGVkKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50Qm94SGVpZ2h0ID0gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcoKExheW91dFVuaXQpc3R5bGVUb1VzZS5sb2dpY2FsSGVpZ2h0KCkudmFsdWUoKSk7Ci0gICAg
ICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnN0cmFpbkNvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVudEJveEhlaWdodCAtIHNjcm9sbGJhckxvZ2ljYWxI
ZWlnaHQoKSwgV1RGOjpudWxsb3B0KSk7CisgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6
bWF4KDBfbHUsIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlNaW5NYXgoY29udGVu
dEJveEhlaWdodCAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxsb3B0KSk7CiAg
ICAgfSBlbHNlIGlmIChzaG91bGRDb21wdXRlTG9naWNhbEhlaWdodEZyb21Bc3BlY3RSYXRpbygp
KSB7CiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGJsb2NrU2l6ZUZyb21Bc3BlY3RSYXRpbyho
b3Jpem9udGFsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRp
bmdFeHRlbnQoKSwgTGF5b3V0VW5pdChzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpKSwgc3R5
bGUoKS5ib3hTaXppbmdGb3JBc3BlY3RSYXRpbygpLCBsb2dpY2FsV2lkdGgoKSk7CiAgICAgfSBl
bHNlIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWRXaXRoU3BlY2lmaWVkSGVpZ2h0KSB7CkBAIC0z
MjYwLDcgKzMyNjAsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6YXZhaWxh
YmxlTG9naWNhbEhlaWdodEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbgogICAgICAgICAgICAgLy8g
aGFuZGxlIHRoZSBtaW4vbWF4IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBpdHMgY2FsbGVyIGRvZXMu
IFNvIHRoZQogICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGZyb20gdGhlIHJlY3Vyc2l2ZSBj
YWxsIHdpbGwgbm90IGhhdmUgYmVlbiBhZGp1c3RlZAogICAgICAgICAgICAgLy8geWV0LgotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVpZ2h0ID0gY29uc3RyYWluQ29udGVudEJv
eExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgY29udGVudEJveEhlaWdodCA9IGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0
QnlNaW5NYXgoY29udGVudEJveEhlaWdodFdpdGhTY3JvbGxiYXIgLSBzY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBz
dGQ6Om1heCgwX2x1LCBjb250ZW50Qm94SGVpZ2h0KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAoaXNSZW5kZXJWaWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IDE0YWJmNmJlYmRjYTljMDI5YWVkNTBlODdkMTcyNzViMzUzMjU0NTIu
LjYyZGU0MTY1YjYxM2VjM2NmMDkzOGRkMWMwN2NmNTljYzQxNDFlOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMTMzLDE2ICszMTMzLDE2
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJC
bG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5n
TW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkgJiYgIWlzR3JpZEl0ZW0oKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
IChzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2hp
bGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNl
bGluZSgpOwogCiAgICAgaWYgKCFoYXNMaW5lcygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAgICAgaWYgKG1vZGVybkxpbmVMYXlvdXQoKSkKQEAgLTMxNTgs
NyArMzE1OCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93
OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNv
bnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQogICAgICAgICBy
ZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbik7CkBA
IC0zMTY4LDcgKzMxNjgsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6
OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZQogICAgICAgICAvLyBw
cm9wZXJ0eSBoYXMgYSBjb21wdXRlZCB2YWx1ZSBvdGhlciB0aGFuICd2aXNpYmxlJy4gc2VlIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi92aXN1ZGV0Lmh0bWwKICAgICAgICAgYXV0byBzaG91
bGRTeW50aGVzaXplQmFzZWxpbmUgPSAhc3R5bGUoKS5pc092ZXJmbG93VmlzaWJsZSgpICYmICFp
czxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KCkpOwogICAgICAgICBpZiAoc2hvdWxk
U3ludGhlc2l6ZUJhc2VsaW5lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIC8vIE5vdGUgdGhhdCBo
ZXJlIHdlIG9ubHkgdGFrZSB0aGUgbGVmdCBhbmQgYm90dG9tIGludG8gY29uc2lkZXJhdGlvbi4g
T3VyIGNhbGxlciB0YWtlcyB0aGUgcmlnaHQgYW5kIHRvcCBpbnRvIGNvbnNpZGVyYXRpb24uCiAg
ICAgZmxvYXQgYm94SGVpZ2h0ID0gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKnRo
aXMsIGxpbmVEaXJlY3Rpb24pICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBt
X21hcmdpbkJveC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LmxlZnQoKSk7CkBAIC0zMTgxLDcgKzMx
ODEsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghaGFzTGluZXMoKSkgewogICAgICAgICAgICAgaWYgKCFoYXNMaW5lSWZFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gZmly
c3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwogICAgICAgICAgICAgcmV0dXJuIExheW91dFVu
aXQgeyBMYXlvdXRVbml0KGZvbnRNZXRyaWNzLmFzY2VudCgpCiAgICAgICAgICAgICAgICAgKyAo
bGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94
ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IGM3Yzk0NmJhZmQ4MTVhNDc0ZDcyMzg4Yjc3ZTIyMzg5
ZjQ0NmNjYzQuLjZhNDJhYWFkNDFjNTVkNDVhNTMxYmE1YTAwZjYwNTEwYWVhM2NiYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTI3Myw3ICsyNzMs
NyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93KiBtdWx0aUNvbHVtbkZsb3dT
bG93Q2FzZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TXVsdGlDb2x1bW5GbG93KFJlbmRlck11bHRp
Q29sdW1uRmxvdyYpOwogICAgIHZvaWQgY2xlYXJNdWx0aUNvbHVtbkZsb3coKTsKLSAgICBib29s
IHdpbGxDcmVhdGVDb2x1bW5zKE9wdGlvbmFsPHVuc2lnbmVkPiBkZXNpcmVkQ29sdW1uQ291bnQg
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMoT3B0aW9u
YWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29sdW1ucyhpbnQpIGNvbnN0OwogCiAgICAgYm9vbCBj
b250YWluc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3Rz
ICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDM4MjU5Mjc3NzNjY2ZhY2NlNTc4ZjVmNjk4YTdj
NmJmZWIzZTNhZDguLmRiYTg4ODZiOWM2YjQxZjhhNDM0ZGEyOWM3MWFjMmQzZWQ5ZjZhNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yMDQzLDcgKzIwNDMsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJveDo6c2hyaW5rTG9naWNhbFdpZHRoVG9Bdm9pZEZsb2F0cyhM
YXlvdXRVbml0IGNoaWxkTWFyZ2luU3RhcgogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5p
bmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBjb25zdAogewogICAgIGlmIChoYXNPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpKQotICAgICAgICByZXR1
cm4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKS52YWx1ZU9y
KDBfbHUpOworICAgICAgICByZXR1cm4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsV2lkdGgoKS52YWx1ZV9vcigwX2x1KTsKIAogICAgIGlmIChSZW5kZXJCbG9jayogY2Ig
PSBjb250YWluaW5nQmxvY2soKSkKICAgICAgICAgcmV0dXJuIGNiLT5hdmFpbGFibGVMb2dpY2Fs
V2lkdGgoKTsKQEAgLTIwNTQsNyArMjA1NCw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb250
YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChBdmFpbGFibGVMb2dpY2FsSGVpCiB7
CiAgICAgaWYgKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdo
dCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDb250YWluaW5nIGJsb2NrIGZvciBhIGdyaWQgaXRl
bSBpcyB0aGUgZ3JpZCBhcmVhIGl0J3MgbG9jYXRlZCBpbi4gV2UgbmVlZCB0byByZXR1cm4gd2hh
dGV2ZXIKLSAgICAgICAgLy8gaGVpZ2h0IHZhbHVlIHdlIGdldCBmcm9tIG92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpIGhlcmUsIGluY2x1ZGluZyBXVEY6Om51
bGxvcHQuCisgICAgICAgIC8vIGhlaWdodCB2YWx1ZSB3ZSBnZXQgZnJvbSBvdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSBoZXJlLCBpbmNsdWRpbmcgc3RkOjpu
dWxsb3B0LgogICAgICAgICBpZiAoYXV0byBoZWlnaHQgPSBvdmVycmlkaW5nQ29udGFpbmluZ0Js
b2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKICAgICAgICAgICAgIHJldHVybiBoZWlnaHQudmFs
dWUoKTsKICAgICB9CkBAIC0yNDI4LDcgKzI0MjgsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBS
ZW5kZXJCb3g6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3Qm
CiAgICAgICAgIGJvb2wgaXNFbXB0eSA9ICFjb250YWluZXJCb3guYXBwbHlDYWNoZWRDbGlwQW5k
U2Nyb2xsUG9zaXRpb24oYWRqdXN0ZWRSZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogICAgICAg
ICBpZiAoaXNFbXB0eSkgewogICAgICAgICAgICAgaWYgKGNvbnRleHQub3B0aW9ucy5jb250YWlu
cyhWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24p
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiBhZGp1c3RlZFJlY3Q7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yOTU2LDcgKzI5NTYsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoaW50cmluc2lj
SGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICAqaW50cmluc2ljSGVpZ2h0IC09IGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0g
Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxv
Z2ljYWxIZWlnaHQoKSwgaW50cmluc2ljSGVpZ2h0KS52YWx1ZU9yKGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50KTsKKyAgICAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBp
bnRyaW5zaWNIZWlnaHQpLnZhbHVlX29yKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbnN0cmFpbkxvZ2ljYWxIZWln
aHRCeU1pbk1heChoZWlnaHRSZXN1bHQsIGludHJpbnNpY0hlaWdodCk7CiAgICAgICAgIH0gZWxz
ZSB7CkBAIC0zMDA3LDE0ICszMDA3LDE0IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjCiB7CiAg
ICAgaWYgKE9wdGlvbmFsPExheW91dFVuaXQ+IGxvZ2ljYWxIZWlnaHQgPSBjb21wdXRlQ29udGVu
dEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhoZWlnaHRUeXBlLCBoZWlnaHQsIGludHJp
bnNpY0NvbnRlbnRIZWlnaHQpKQogICAgICAgICByZXR1cm4gYWRqdXN0Qm9yZGVyQm94TG9naWNh
bEhlaWdodEZvckJveFNpemluZyhsb2dpY2FsSGVpZ2h0LnZhbHVlKCkpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoU2l6ZVR5cGUg
aGVpZ2h0VHlwZSwgY29uc3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGlu
dHJpbnNpY0NvbnRlbnRIZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKE9wdGlvbmFsPExheW91dFVu
aXQ+IGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhciA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFy
TG9naWNhbEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhl
aWdodCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCBhZGp1c3RDb250
ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIp
IC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRl
ckJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoIGxv
Z2ljYWxIZWlnaHRMZW5ndGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQsIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZykgY29uc3QKQEAgLTMwMzUsNyArMzAz
NSw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUludHJpbnNpY0xv
Z2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoTGVuZ3RoCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJCb3g6OmNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlIGhlaWdodFR5cGUsIGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBPcHRpb25hbDxMYXlvdXRVbml0
PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdAogewogICAgIGlmIChoZWlnaHQuaXNBdXRv
KCkpCi0gICAgICAgIHJldHVybiBoZWlnaHRUeXBlID09IE1pblNpemUgPyBPcHRpb25hbDxMYXlv
dXRVbml0PigwKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGhlaWdodFR5cGUgPT0g
TWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogc3RkOjpudWxsb3B0OwogICAgIC8v
IEZJWE1FOiBUaGUgQ1NTIHNpemluZyBzcGVjIGlzIGNvbnNpZGVyaW5nIGNoYW5naW5nIHdoYXQg
bWluLWNvbnRlbnQvbWF4LWNvbnRlbnQgc2hvdWxkIHJlc29sdmUgdG8uCiAgICAgLy8gSWYgdGhh
dCBoYXBwZW5zLCB0aGlzIGNvZGUgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICBpZiAoaGVpZ2h0
LmlzSW50cmluc2ljKCkgfHwgaGVpZ2h0LmlzTWluSW50cmluc2ljKCkpCkBAIC0zMDQ0LDcgKzMw
NDQsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVDb250ZW50QW5k
U2Nyb2xsYmFyTG9naWNhbEhlaWdodFVzaW5nKFNpegogICAgICAgICByZXR1cm4gTGF5b3V0VW5p
dChoZWlnaHQudmFsdWUoKSk7CiAgICAgaWYgKGhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChoZWlnaHQp
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogYm9vbCBSZW5kZXJCb3g6OnNraXBDb250YWluaW5nQmxvY2tGb3JQZXJjZW50SGVpZ2h0Q2Fs
Y3VsYXRpb24oY29uc3QgUmVuZGVyQm94JiBjb250YWluaW5nQmxvY2ssIGJvb2wgaXNQZXJwZW5k
aWN1bGFyV3JpdGluZ01vZGUpIGNvbnN0CkBAIC0zMTMxLDcgKzMxMzEsNyBAQCBPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25z
dCBMZW5ndGgmIGhlaQogICAgICAgICAgICAgLy8gZG9uJ3QgY2FyZSBpZiB0aGUgY2VsbCBzcGVj
aWZpZWQgYSBoZWlnaHQgb3Igbm90LiBXZSBqdXN0IGFsd2F5cyBtYWtlIG91cnNlbHZlcwogICAg
ICAgICAgICAgLy8gYmUgYSBwZXJjZW50YWdlIG9mIHRoZSBjZWxsJ3MgY3VycmVudCBjb250ZW50
IGhlaWdodC4KICAgICAgICAgICAgIGlmICghY2ItPmhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlh
bFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91dFVu
aXQ+KDApIDogV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZUNlbGxT
aG91bGRIYXZlWmVyb0luaXRpYWxTaXplKCpjYiwgKnRoaXMsIHNjcm9sbHNPdmVyZmxvd1koKSkg
PyBPcHRpb25hbDxMYXlvdXRVbml0PigwKSA6IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
YXZhaWxhYmxlSGVpZ2h0ID0gY2ItPm92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBjYi0+Y29t
cHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgLSBjYi0+Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIoKSAt
IGNiLT5ib3JkZXJCZWZvcmUoKSAtIGNiLT5ib3JkZXJBZnRlcigpOwogICAgICAgICB9CkBAIC0z
Mjc0LDcgKzMyNzQsNyBAQCBib29sIFJlbmRlckJveDo6cmVwbGFjZWRNaW5NYXhMb2dpY2FsSGVp
Z2h0Q29tcHV0ZXNBc05vbmUoU2l6ZVR5cGUgc2l6ZVR5cGUpIGNvbgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKICAgICBpZiAobG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KSAmJiBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkK
LSAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodCgpID09IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IE1ha2Ugc3VyZSAlIG1pbi1oZWlnaHQgYW5kICUgbWF4LWhlaWdodCByZXNvbHZlIHRvIG5vbmUg
aWYgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaGFzIGF1dG8gaGVpZ2h0LgogICAgIC8vIE5vdGUgdGhh
dCB0aGUgImhlaWdodCIgY2FzZSBmb3IgcmVwbGFjZWQgZWxlbWVudHMgd2FzIGhhbmRsZWQgYnkg
aGFzUmVwbGFjZWRMb2dpY2FsSGVpZ2h0LCB3aGljaCBpcyB3aHkKQEAgLTMzNzksNyArMzM3OSw3
IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0VXNp
bmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgTGVuCiAKIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFp
bGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlIGhlaWdodFR5cGUp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0cmFpbkNvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoYXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKHN0eWxlKCkubG9naWNhbEhlaWdodCgp
LCBoZWlnaHRUeXBlKSwgV1RGOjpudWxsb3B0KTsKKyAgICByZXR1cm4gY29uc3RyYWluQ29udGVu
dEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoc3R5
bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGhlaWdodFR5cGUpLCBzdGQ6Om51bGxvcHQpOwogfQogCiBM
YXlvdXRVbml0IFJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKGNvbnN0IExl
bmd0aCYgaCwgQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKQEAg
LTM0MDUsNyArMzQwNSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjphdmFpbGFibGVMb2dpY2Fs
SGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dpCiAgICAgICAgIHJldHVy
biBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0
aChoLCBhdmFpbGFibGVIZWlnaHQpKTsKICAgICB9CiAKLSAgICBpZiAoT3B0aW9uYWw8TGF5b3V0
VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxi
YXJMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgaCwgV1RGOjpudWxsb3B0
KSkKKyAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5nU2Nyb2xsYmFy
ID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJl
ZmVycmVkU2l6ZSwgaCwgc3RkOjpudWxsb3B0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4PExh
eW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKGhl
aWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCkpOwogCiAg
ICAgLy8gRklYTUU6IENoZWNrIGxvZ2ljYWxUb3AvbG9naWNhbEJvdHRvbSBoZXJlIHRvIGNvcnJl
Y3RseSBoYW5kbGUgdmVydGljYWwgd3JpdGluZy1tb2RlLgpAQCAtNDg1MCw3ICs0ODUwLDcgQEAg
Ym9vbCBSZW5kZXJCb3g6OnBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlKCkgY29u
c3QKICAgICAvLyBEbyB0aGlzIHRvIGF2b2lkIGR1cGxpY2F0aW5nIGFsbCB0aGUgbG9naWMgdGhh
dCBhbHJlYWR5IGV4aXN0cyB3aGVuIGNvbXB1dGluZwogICAgIC8vIGFuIGFjdHVhbCBwZXJjZW50
YWdlIGhlaWdodC4KICAgICBMZW5ndGggZmFrZUxlbmd0aCgxMDAsIExlbmd0aFR5cGU6OlBlcmNl
bnQpOwotICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoZmFrZUxlbmd0
aCkgIT0gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxI
ZWlnaHQoZmFrZUxlbmd0aCkgIT0gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckJveDo6
aGFzVW5zcGxpdHRhYmxlU2Nyb2xsaW5nT3ZlcmZsb3coKSBjb25zdApAQCAtNTE4MSw4ICs1MTgx
LDggQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsV2lkdGhGcm9tQXNwZWN0
UmF0aW8oUmVuZGVyRnJhZ21lbnRDb250YWluZXIKIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBMYXlv
dXRVbml0PiBSZW5kZXJCb3g6OmNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhGcm9tQXNwZWN0UmF0
aW8oKSBjb25zdAogewogICAgIGF1dG8gcmF0aW8gPSBMYXlvdXRVbml0IHsgc3R5bGUoKS5sb2dp
Y2FsQXNwZWN0UmF0aW8oKSB9OwotICAgIExheW91dFVuaXQgYmxvY2tNaW5TaXplID0gY29uc3Ry
YWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQoKSwgV1RGOjpudWxsb3B0KTsKLSAg
ICBMYXlvdXRVbml0IGJsb2NrTWF4U2l6ZSA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1h
eChMYXlvdXRVbml0OjptYXgoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBMYXlvdXRVbml0IGJsb2Nr
TWluU2l6ZSA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChMYXlvdXRVbml0KCksIHN0
ZDo6bnVsbG9wdCk7CisgICAgTGF5b3V0VW5pdCBibG9ja01heFNpemUgPSBjb25zdHJhaW5Mb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgoTGF5b3V0VW5pdDo6bWF4KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAg
TGF5b3V0VW5pdCB0cmFuc2ZlcnJlZE1pblNpemUgPSBMYXlvdXRVbml0KCk7CiAgICAgTGF5b3V0
VW5pdCB0cmFuc2ZlcnJlZE1heFNpemUgPSBMYXlvdXRVbml0OjptYXgoKTsKICAgICBpZiAoYmxv
Y2tNaW5TaXplID4gTGF5b3V0VW5pdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CmluZGV4IGRmYWMwMDliYmE0NjQwYTBkMjBmZGRmZGJmZGFmNWY3MDdlZDJiYWUuLjFkZDY4ODg0
MWZmMWEzMjI0MjYyYTQzYThlYWQzODdhMTYxYzU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKQEAgLTQ1Miw3ICs0NTIsNyBAQCBvdmVycmlkZTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRSZXNwZWN0
aW5nTWluTWF4SGVpZ2h0KFQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZVJl
cGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoTGF5b3V0VW5pdChsb2dp
Y2FsSGVpZ2h0KSk7IH0KIAogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRM
b2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0dWFsKSBjb25z
dDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodChP
cHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxvcHQpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50
cyB7IFllcyAsIE5vIH07CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBVcGRhdGVQZXJjZW50YWdlSGVp
Z2h0RGVzY2VuZGFudHMgPSBVcGRhdGVQZXJjZW50YWdlSGVpZ2h0RGVzY2VuZGFudHM6Olllcykg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCAxNDNhMzU5Y2JhZTg4ZTNlM2M2YjNjNmE3YzczNWJjZmZjNTVlNGU3Li44
NzExYmI5NWVlM2RjNjc5NDdlMzI5NzFiMWJlOWViN2VlYjJjMzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTI3OSw3ICsy
NzksNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNBdXRvSGVpZ2h0T3JDb250YWlu
aW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKICAgICBpZiAodGhpc0JveCAmJiB0aGlzQm94LT5pc0dyaWRJdGVtKCkgJiYgdGhpc0JveC0+
aGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpCi0gICAg
ICAgIHJldHVybiB0aGlzQm94LT5vdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2lj
YWxIZWlnaHQoKSA9PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB0aGlzQm94LT5vdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSA9PSBzdGQ6Om51bGxv
cHQ7CiAgICAgCiAgICAgaWYgKGxvZ2ljYWxIZWlnaHRMZW5ndGguaXNBdXRvKCkgJiYgIWlzT3V0
T2ZGbG93UG9zaXRpb25lZFdpdGhJbXBsaWNpdEhlaWdodCgqdGhpcykpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMjg5LDcgKzI4OSw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6Omhh
c0F1dG9IZWlnaHRPckNvbnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVpZ2h0KCkgY29uc3QKICAgICBp
ZiAoIWNiIHx8IChkb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpICYmICFjYi0+aXNGbGV4aWJsZUJv
eEluY2x1ZGluZ0RlcHJlY2F0ZWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
dGhpc0JveCAmJiB0aGlzQm94LT5oYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRoaXNCb3gtPm92ZXJyaWRpbmdDb250YWlu
aW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHRoaXNCb3gtPm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodCgpID09IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gIWNiLT5oYXNEZWZpbml0ZUxvZ2lj
YWxIZWlnaHQoKTsKIH0KIApAQCAtMzQ4LDcgKzM0OCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jZ3JpZC1pdGVtLXNpemluZwogICAgIGlmICgh
c3R5bGUoKS5sZWZ0KCkuaXNBdXRvKCkgfHwgIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSkgewog
ICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoID0gaGFzT3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRXaWR0aCgpCi0gICAgICAgICAgICA/IG92ZXJyaWRpbmdDb250YWluaW5n
QmxvY2tDb250ZW50V2lkdGgoKS52YWx1ZU9yKExheW91dFVuaXQoKSkgOiBjb250YWluaW5nQmxv
Y2soKS0+YXZhaWxhYmxlV2lkdGgoKTsKKyAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRXaWR0aCgpLnZhbHVlX29yKExheW91dFVuaXQoKSkgOiBjb250YWluaW5n
QmxvY2soKS0+YXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgaWYgKCFzdHlsZSgpLmxlZnQoKS5p
c0F1dG8oKSkgewogICAgICAgICAgICAgaWYgKCFzdHlsZSgpLnJpZ2h0KCkuaXNBdXRvKCkgJiYg
IWNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAg
ICAgICAgICAgICAgICBvZmZzZXQuc2V0V2lkdGgoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkucmln
aHQoKSwgIXN0eWxlKCkucmlnaHQoKS5pc0ZpeGVkKCkgPyBhdmFpbGFibGVXaWR0aCA6IDBfbHUp
KTsKQEAgLTM3NSw3ICszNzUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpy
ZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QKICAgICAgICAgLy8gV2UgY291bGQgcmVmYWN0
b3IgdGhpcyBhbmQgbW92ZSBpdCB0byBzb21lIGNvbW1vbiBjb2RlIGZvciBib3RoIGlmcywgaG93
ZXZlciBtb3ZpbmcgaXQgb3V0c2lkZSBvZiB0aGUgaWZzCiAgICAgICAgIC8vIGlzIG5vdCBwb3Nz
aWJsZSBhcyBpdCdkIGNhdXNlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zLgogICAgICAgICBvZmZz
ZXQuZXhwYW5kKDBfbHUsIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkudG9wKCksICFzdHlsZSgpLnRv
cCgpLmlzRml4ZWQoKQotICAgICAgICAgICAgPyAoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRIZWlnaHQoKSA/IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkudmFsdWVPcigwX2x1KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkK
KyAgICAgICAgICAgID8gKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0
KCkgPyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpLnZhbHVlX29yKDBf
bHUpIDogY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQogICAgICAgICAgICAg
OiBMYXlvdXRVbml0KCkpKTsKICAgICB9IGVsc2UgaWYgKCFzdHlsZSgpLmJvdHRvbSgpLmlzQXV0
bygpCiAgICAgICAgICYmICghc3R5bGUoKS5ib3R0b20oKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQo
KQpAQCAtMzg0LDcgKzM4NCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJl
bGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgICAgICAgICAgfHwgaGFzT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IENo
ZWNrIGNvbW1lbnQgYWJvdmUgZm9yICJ0b3AiLCBpdCBhcHBsaWVzIGhlcmUgdG9vLgogICAgICAg
ICBvZmZzZXQuZXhwYW5kKDBfbHUsIC12YWx1ZUZvckxlbmd0aChzdHlsZSgpLmJvdHRvbSgpLCAh
c3R5bGUoKS5ib3R0b20oKS5pc0ZpeGVkKCkKLSAgICAgICAgICAgID8gKGhhc092ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgPyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudEhlaWdodCgpLnZhbHVlT3IoMF9sdSkgOiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxh
YmxlSGVpZ2h0KCkpCisgICAgICAgICAgICA/IChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2Nr
Q29udGVudEhlaWdodCgpID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQo
KS52YWx1ZV9vcigwX2x1KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkK
ICAgICAgICAgICAgIDogTGF5b3V0VW5pdCgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IGFlNmIyMDMxMjg2ZWU3MjdiMDVmOGQ5MDY2
YTMzNWJmYzdjNDRjNTcuLmEwNWVkNjNhZjAzYzJjOWQzNWY3ZDQzNjM4OTc2YTA5NjdiZjQzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xNTQsNyAr
MTU0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdEwKICAgICAgICAgcmV0dXJuIFJlbmRlckZs
ZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKGZvbnRCYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJl
Y3Rpb24sIG1vZGUpOwogICAgIC8vIFdlIGNhbm5vdCByZWx5IG9uIFJlbmRlckZsZXhpYmxlQm94
OjpiYXNlbGluZVBvc2l0aW9uKCkgYmVjYXVzZSBvZiBmbGV4Ym94ZXMgaGF2ZSBzb21lIHNwZWNp
YWwgYmVoYXZpb3IKICAgICAvLyByZWdhcmRpbmcgYmFzZWxpbmVzIHRoYXQgc2hvdWxkbid0IGFw
cGx5IHRvIGJ1dHRvbnMuCi0gICAgTGF5b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2Vs
aW5lKCkudmFsdWVPcihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goKnRoaXMsIGRp
cmVjdGlvbikpOworICAgIExheW91dFVuaXQgYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlX29yKHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0
aW9uKSk7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Bc2NlbnQgPSBkaXJlY3Rpb24gPT0gSG9yaXpv
bnRhbExpbmUgPyBtYXJnaW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCk7CiAgICAgcmV0dXJuIGJhc2Vs
aW5lICsgbWFyZ2luQXNjZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggNWIxYTI4NzQyNWQwNjkzMzdjMDlmODUyOTI3MmQxODQ4
NGYxNGE0NS4uNDQwYjc5Y2QwMzI0ODhlMWI3YTc0NmY3YjYxOGM5OTMxZWU4YTY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIGZsb2F0IFJlbmRlckNvbWJpbmVUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IEZvbnRDYXNjYWRlCiBPcHRpb25hbDxGbG9hdFBvaW50PiBS
ZW5kZXJDb21iaW5lVGV4dDo6Y29tcHV0ZVRleHRPcmlnaW4oY29uc3QgRmxvYXRSZWN0JiBib3hS
ZWN0KSBjb25zdAogewogICAgIGlmICghbV9pc0NvbWJpbmVkKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVmlzdWFs
bHkgY2VudGVyIG1fY29tYmluZWRUZXh0V2lkdGgvQXNjZW50L0Rlc2NlbnQgd2l0aGluIGJveFJl
Y3QKICAgICBGbG9hdFBvaW50IHJlc3VsdCA9IGJveFJlY3QubWluWE1heFlDb3JuZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA0MzY5OWZlYWQ5
ZjY1YzU5NzJiZmRkNDI5Yzc3YWVhMTAxNmE2OTkwLi5kM2FjMGMzNjFlMGNmNWUwNThkNzg0Y2Yy
MTAyY2M2OWI2ZjRlNThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgc3RhdGljIENvdW50ZXJEaXJlY3RpdmVzIGxpc3RJ
dGVtQ291bnRlckRpcmVjdGl2ZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgaWYgKGlz
PFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikpIHsKICAgICAgICAgYXV0byYgaXRlbSA9IGRvd25j
YXN0PFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcik7CiAgICAgICAgIGlmIChhdXRvIGV4cGxpY2l0
VmFsdWUgPSBpdGVtLmV4cGxpY2l0VmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiB7ICpleHBs
aWNpdFZhbHVlLCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
LCBpdGVtLmlzSW5SZXZlcnNlZE9yZGVyZWRMaXN0KCkgPyAtMSA6IDEgfTsKKyAgICAgICAgICAg
IHJldHVybiB7ICpleHBsaWNpdFZhbHVlLCBzdGQ6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJu
IHsgc3RkOjpudWxsb3B0LCBpdGVtLmlzSW5SZXZlcnNlZE9yZGVyZWRMaXN0KCkgPyAtMSA6IDEg
fTsKICAgICB9CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewog
ICAgICAgICBpZiAoaXM8SFRNTE9MaXN0RWxlbWVudD4oKmVsZW1lbnQpKSB7CkBAIC0xNDAsNyAr
MTQwLDcgQEAgc3RhdGljIENvdW50ZXJEaXJlY3RpdmVzIGxpc3RJdGVtQ291bnRlckRpcmVjdGl2
ZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiAgICAgICAgICAgICByZXR1cm4geyBsaXN0LnN0
YXJ0KCksIGxpc3QuaXNSZXZlcnNlZCgpID8gMSA6IC0xIH07CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGlzSFRNTExpc3RFbGVtZW50KCplbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiB7IDAs
IFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgMCwgc3RkOjpudWxsb3B0IH07
CiAgICAgfQogICAgIHJldHVybiB7IH07CiB9CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIE9w
dGlvbmFsPENvdW50ZXJQbGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgQXRvbVN0cmkKICAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5vZGUgb3Ig
ZWxzZSB3ZSBjYW5ub3QgaGF2ZSBhIGNvdW50ZXIuCiAgICAgRWxlbWVudCogZ2VuZXJhdGluZ0Vs
ZW1lbnQgPSByZW5kZXJlci5nZW5lcmF0aW5nRWxlbWVudCgpOwogICAgIGlmICghZ2VuZXJhdGlu
Z0VsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAKQEAg
LTE2NCwxMyArMTY0LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNvdW50
ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpCiAgICAgICAgIC8vIFNv
bWV0aW1lcyBlbGVtZW50cyBoYXZlIG1vcmUgdGhlbiBvbmUgcmVuZGVyZXIuIE9ubHkgdGhlIGZp
cnN0IG9uZSBnZXRzIHRoZSBjb3VudGVyCiAgICAgICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvY3NzL2NvdW50ZXItY3Jhc2guaHRtbAogICAgICAgICBpZiAoZ2VuZXJhdGluZ0VsZW1lbnQt
PnJlbmRlcmVyKCkgIT0gJnJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUHNldWRvSWQ6OkJlZm9yZToKICAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgLy8g
Q291bnRlcnMgYXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1ZG8gZWxlbWVudHMuCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRkZW4gZnJv
bSBhbGwgb3RoZXIgcHNldWRvIGVsZW1lbnRzLgogICAgIH0KIAogICAgIENvdW50ZXJEaXJlY3Rp
dmVzIGRpcmVjdGl2ZXM7CkBAIC0xODcsMTAgKzE4NywxMCBAQCBzdGF0aWMgT3B0aW9uYWw8Q291
bnRlclBsYW4+IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9t
U3RyaQogICAgIH0KIAogICAgIGlmIChkaXJlY3RpdmVzLnJlc2V0VmFsdWUpCi0gICAgICAgIHJl
dHVybiBDb3VudGVyUGxhbiB7IHRydWUsIHNhdHVyYXRlZFN1bTxpbnQ+KCpkaXJlY3RpdmVzLnJl
c2V0VmFsdWUsIGRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUudmFsdWVPcigwKSkgfTsKKyAgICAg
ICAgcmV0dXJuIENvdW50ZXJQbGFuIHsgdHJ1ZSwgc2F0dXJhdGVkU3VtPGludD4oKmRpcmVjdGl2
ZXMucmVzZXRWYWx1ZSwgZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZV9vcigwKSkgfTsK
ICAgICBpZiAoZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIENvdW50
ZXJQbGFuIHsgZmFsc2UsICpkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlIH07Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyAtIEZpbmRz
IHRoZSBpbnNlcnRpb24gcG9pbnQgZm9yIHRoZSBjb3VudGVyIGRlc2NyaWJlZCBieSBjb3VudGVy
T3duZXIsIGlzUmVzZXQgYW5kIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBmYzBjNjU0Njc1NDQ2MGM4
ZWViYzI2ZTZkYTcyMThhZDQyNjAxZjE4Li45OWU5MWJiODFlMDRiNGYyN2RiNTZiZWViYjA1YTgy
N2E2MjMwMTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlv
dXRDaGlsZHJlbikKIAogICAgICAgICAgICAgLy8gVXBkYXRlIG91ciBoZWlnaHQgYW5kIG92ZXJm
bG93IGhlaWdodC4KICAgICAgICAgICAgIGlmIChzdHlsZSgpLmJveEFsaWduKCkgPT0gQm94QWxp
Z25tZW50OjpCYXNlbGluZSkgewotICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0g
Y2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGls
ZC0+bWFyZ2luQm90dG9tKCkpOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgYXNjZW50ID0g
Y2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQtPmhlaWdodCgpICsgY2hp
bGQtPm1hcmdpbkJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBhc2NlbnQgKz0gY2hpbGQtPm1h
cmdpblRvcCgpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgZGVzY2VudCA9IChjaGlsZC0+
aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkgLSBhc2NlbnQ7CiAKQEAg
LTUxOSw3ICs1MTksNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0
SG9yaXpvbnRhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgICAgICAgICAgICAgY2hp
bGRZICs9IGNoaWxkLT5tYXJnaW5Ub3AoKSArIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIChjb250
ZW50SGVpZ2h0KCkgLSAoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPnZlcnRpY2FsTWFyZ2luRXh0
ZW50KCkpKSAvIDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBC
b3hBbGlnbm1lbnQ6OkJhc2VsaW5lOiB7Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2Nl
bnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSAr
IGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2Nl
bnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkg
KyBjaGlsZC0+bWFyZ2luQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGls
ZC0+bWFyZ2luVG9wKCk7CiAgICAgICAgICAgICAgICAgY2hpbGRZICs9IGNoaWxkLT5tYXJnaW5U
b3AoKSArIChtYXhBc2NlbnQgLSBhc2NlbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggYjA3MDA2NjMxNzJlNzZh
YzA2Yjc4OGE4OTZiY2Q4MmNiOWViNTJhYS4uYmJjY2I3MTdhNTdiZDNhNWRjMDIxODg2ZjEyYTll
ZDNkM2IxNDJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBA
IC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIHN0eWxlKCkub3BhY2l0eSgpIDwgMS4wZjsgfQogICAgIGZsb2F0IG9wYWNpdHko
KSBjb25zdCB7IHJldHVybiBzdHlsZSgpLm9wYWNpdHkoKTsgfQogCi0gICAgYm9vbCB2aXNpYmxl
VG9IaXRUZXN0aW5nKE9wdGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IFdU
Rjo6bnVsbG9wdCkgY29uc3QKKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8
SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2li
bGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBlOTBkYzFhOGFkMmMxMjQwOGQ4MDI2NGZm
ZDE3YmNhOTBkMmE5MjM5Li42NzdjNDc4MjY3NGYxZmRlMmZkMzQ4ZjE1ZDNiNzhhYzI1Y2Q5ZDg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
QEAgLTExNzQsNyArMTE3NCw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnVwZGF0ZUF1dG9N
YXJnaW5zSW5Dcm9zc0F4aXMoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pCiAKIExheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkJveEFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQpCiB7Ci0gICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC5maXJzdExpbmVC
YXNlbGluZSgpLnZhbHVlT3IoY3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKKyAgICBM
YXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY3Jv
c3NBeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQpKTsKICAgICByZXR1cm4gYXNjZW50ICsgZmxvd0F3
YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQoY2hpbGQpOwogfQogCkBAIC0xMjA5LDE2ICsxMjA5LDE2
IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnByZXBhcmVPcmRlckl0ZXJhdG9yQW5kTWFyZ2lu
cygpCiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5B
bmRNYXgoUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFNpemUpCiB7CiAgICAgTGVu
Z3RoIG1heCA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWF4U2l6ZSwgY2hpbGQpOwotICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IG1heEV4dGVudCA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBtYXhFeHRlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1heC5pc1Nw
ZWNpZmllZE9ySW50cmluc2ljKCkpIHsKICAgICAgICAgbWF4RXh0ZW50ID0gY29tcHV0ZU1haW5B
eGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1heFNpemUsIG1heCk7Ci0gICAgICAgIGNoaWxkU2l6
ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY2hpbGRTaXplKSk7Cisg
ICAgICAgIGNoaWxkU2l6ZSA9IHN0ZDo6bWluKGNoaWxkU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29y
KGNoaWxkU2l6ZSkpOwogICAgIH0KIAogICAgIExlbmd0aCBtaW4gPSBtYWluU2l6ZUxlbmd0aEZv
ckNoaWxkKE1pblNpemUsIGNoaWxkKTsKICAgICAvLyBJbnRyaW5zaWMgc2l6ZXMgaW4gY2hpbGQn
cyBibG9jayBheGlzIGFyZSBoYW5kbGVkIGJ5IHRoZSBtaW4tc2l6ZTphdXRvIGNvZGUgcGF0aC4K
ICAgICBpZiAobWluLmlzU3BlY2lmaWVkKCkgfHwgKG1pbi5pc0ludHJpbnNpYygpICYmIG1haW5B
eGlzSXNDaGlsZElubGluZUF4aXMoY2hpbGQpKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNo
aWxkU2l6ZSwgc3RkOjptYXgoMF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hp
bGQsIE1pblNpemUsIG1pbikudmFsdWVPcihjaGlsZFNpemUpKSk7CisgICAgICAgIHJldHVybiBz
dGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWF4KDBfbHUsIGNvbXB1dGVNYWluQXhpc0V4dGVudEZv
ckNoaWxkKGNoaWxkLCBNaW5TaXplLCBtaW4pLnZhbHVlX29yKGNoaWxkU2l6ZSkpKTsKICAgICAK
ICAgICBpZiAoc2hvdWxkQXBwbHlNaW5TaXplQXV0b0ZvckNoaWxkKGNoaWxkKSkgewogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIG1pbiB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSB2YWxpZCBoZXJl
LCB3ZSBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIG5vbiBvcHRpb25hbCB2ZXJzaW9uIG9mIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkIGFuZApAQCAtMTIyOCwxNyArMTIyOCwxNyBAQCBMYXlv
dXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjphZGp1c3RDaGlsZFNpemVGb3JNaW5BbmRNYXgoUmVu
ZGVyQm94JiBjaGlsZCwgTGF5bwogICAgICAgICBpZiAoY2hpbGQuaXNSZW5kZXJSZXBsYWNlZCgp
ICYmIHVzZUNoaWxkQXNwZWN0UmF0aW8oY2hpbGQpKQogICAgICAgICAgICAgY29udGVudFNpemUg
PSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhjaGlsZCwgY2hpbGRDcm9zc1Np
emVMZW5ndGgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6TWluQ29udGVudCkpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNv
bXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBNaW5TaXplLCBMZW5ndGgoTGVuZ3Ro
VHlwZTo6TWluQ29udGVudCkpLnZhbHVlX29yKDApOwogICAgICAgICBpZiAoY2hpbGQuaGFzSW50
cmluc2ljQXNwZWN0UmF0aW8oKSAmJiBjaGlsZC5pbnRyaW5zaWNTaXplKCkuaGVpZ2h0KCkpCiAg
ICAgICAgICAgICBjb250ZW50U2l6ZSA9IGFkanVzdENoaWxkU2l6ZUZvckFzcGVjdFJhdGlvQ3Jv
c3NBeGlzTWluQW5kTWF4KGNoaWxkLCBjb250ZW50U2l6ZSk7CiAgICAgICAgIEFTU0VSVChjb250
ZW50U2l6ZSA+PSAwKTsKLSAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1pbihjb250ZW50U2l6
ZSwgbWF4RXh0ZW50LnZhbHVlT3IoY29udGVudFNpemUpKTsKKyAgICAgICAgY29udGVudFNpemUg
PSBzdGQ6Om1pbihjb250ZW50U2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKGNvbnRlbnRTaXplKSk7
CiAgICAgICAgIAogICAgICAgICBMZW5ndGggbWFpblNpemUgPSBtYWluU2l6ZUxlbmd0aEZvckNo
aWxkKE1haW5PclByZWZlcnJlZFNpemUsIGNoaWxkKTsKICAgICAgICAgaWYgKGNoaWxkTWFpblNp
emVJc0RlZmluaXRlKGNoaWxkLCBtYWluU2l6ZSkpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQg
cmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKGNoaWxkLCBN
YWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgcmVzb2x2ZWRNYWluU2l6ZSA9IGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxk
KGNoaWxkLCBNYWluT3JQcmVmZXJyZWRTaXplLCBtYWluU2l6ZSkudmFsdWVfb3IoMCk7CiAgICAg
ICAgICAgICBBU1NFUlQocmVzb2x2ZWRNYWluU2l6ZSA+PSAwKTsKLSAgICAgICAgICAgIExheW91
dFVuaXQgc3BlY2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVu
dC52YWx1ZU9yKHJlc29sdmVkTWFpblNpemUpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgc3Bl
Y2lmaWVkU2l6ZSA9IHN0ZDo6bWluKHJlc29sdmVkTWFpblNpemUsIG1heEV4dGVudC52YWx1ZV9v
cihyZXNvbHZlZE1haW5TaXplKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRT
aXplLCBzdGQ6Om1pbihzcGVjaWZpZWRTaXplLCBjb250ZW50U2l6ZSkpOwogICAgICAgICB9CiAK
QEAgLTEzMjUsOSArMTMyNSw5IEBAIEZsZXhJdGVtIFJlbmRlckZsZXhpYmxlQm94Ojpjb25zdHJ1
Y3RGbGV4SXRlbShSZW5kZXJCb3gmIGNoaWxkLCBib29sIHJlbGF5b3V0Q2hpCiAgICAgICAgIC8v
IGJ5IGRlZmluaXRpb24gd2UgaGF2ZSBhbiBpbmRlZmluaXRlIGZsZXggYmFzaXMgaGVyZSBhbmQg
dGh1cyBwZXJjZW50YWdlcyBzaG91bGQgbm90IHJlc29sdmUuCiAgICAgICAgIGlmIChjaGlsZC5u
ZWVkc0xheW91dCgpIHx8ICFtX2ludHJpbnNpY1NpemVBbG9uZ01haW5BeGlzLmNvbnRhaW5zKCZj
aGlsZCkpIHsKICAgICAgICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID09IGNo
aWxkLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICAgICAgY2hpbGQuc2V0
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KFdURjo6bnVsbG9w
dCk7CisgICAgICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsV2lkdGgoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlk
aW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChzdGQ6Om51bGxvcHQpOwogICAg
ICAgICAgICAgY2hpbGQuY2xlYXJPdmVycmlkaW5nQ29udGVudFNpemUoKTsKICAgICAgICAgICAg
IGNoaWxkLnNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICAgICAgICAgIGNo
aWxkLmxheW91dElmTmVlZGVkKCk7CkBAIC0yMDg1LDcgKzIwODUsNyBAQCBMYXlvdXRVbml0IFJl
bmRlckZsZXhpYmxlQm94Ojpjb21wdXRlR2FwKFJlbmRlckZsZXhpYmxlQm94OjpHYXBUeXBlIGdh
cFR5cGUpIGNvbgogICAgIGlmIChMSUtFTFkoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byBhdmFpbGFibGVTaXplID0gdXNlc1Jvd0dhcCA/IGF2
YWlsYWJsZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKS52YWx1ZU9yKDBf
bHUpIDogY29udGVudExvZ2ljYWxXaWR0aCgpOworICAgIGF1dG8gYXZhaWxhYmxlU2l6ZSA9IHVz
ZXNSb3dHYXAgPyBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2VudGFnZUNvbXB1dGF0aW9u
KCkudmFsdWVfb3IoMF9sdSkgOiBjb250ZW50TG9naWNhbFdpZHRoKCk7CiAgICAgcmV0dXJuIG1p
bmltdW1WYWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3RoKCksIGF2YWlsYWJsZVNpemUpOwog
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDY2YmVlZGQy
MTFkYjAzNmM0YjAzOTNhZDJlNjY1NjVjNzBmZjRhZTguLjhiZmFjYzZlZjBhNjk0MWUzNDBhZWQ4
OTZkM2Y2ZTE4MjVjOGMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjph
dmFpbGFibGVTcGFjZUZvckd1dHRlcnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aQogICAgIGJvb2wg
aXNSb3dBeGlzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnM7CiAgICAgY29uc3QgR2FwTGVuZ3Ro
JiBnYXBMZW5ndGggPSBpc1Jvd0F4aXMgPyBzdHlsZSgpLmNvbHVtbkdhcCgpIDogc3R5bGUoKS5y
b3dHYXAoKTsKICAgICBpZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkgfHwgIWdhcExlbmd0aC5sZW5n
dGgoKS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpc1Jvd0F4aXMg
PyBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSA6IGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiB9CkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNl
IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQoKSBvbmx5IGJ1dCBpdCBkb2Vz
IG5vdCB3b3JrIGZvciBwb3NpdGlvbmVkIHN0dWZmLgogICAgICAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgY2FjaGluZyB0aGUgaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0IHZhbHVlIHRocm91Z2hvdXQg
dGhlIGxheW91dC4KICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQgdG8gY2FjaGUgdGhl
IGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCBpZiB0aGUgY2FsbCBvZiBSZW5kZXJCbG9jazo6aGFz
RGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgY2F1c2VzIGEgcmVsZXZhbnQgcGVyZm9ybWFuY2UgcmVn
cmVzc2lvbi4KLSAgICAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxIZWlnaHQgPSBSZW5kZXJC
bG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgfHwgaGFzT3ZlcnJpZGluZ0xvZ2ljYWxI
ZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFpbk9yUHJlZmVycmVkU2l6
ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGJvb2wg
aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0ID0gUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNh
bEhlaWdodCgpIHx8IGhhc092ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgfHwgY29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdo
dCgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBtX2hhc0FueU9ydGhvZ29uYWxJdGVtID0gZmFs
c2U7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQt
PmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQpAQCAtMzI0LDcgKzMyNCw3IEBAIExheW91dFVuaXQg
UmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBP
cHRpb25hbDxMYXlvCiAgICAgaWYgKGdhcExlbmd0aC5pc05vcm1hbCgpKQogICAgICAgICByZXR1
cm4gMF9sdTsKIAotICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChnYXBMZW5ndGgubGVuZ3RoKCks
IGF2YWlsYWJsZVNpemUudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGdh
cExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigwKSk7CiB9CiAKIExheW91
dFVuaXQgUmVuZGVyR3JpZDo6Z3JpZEdhcChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uKSBjb25zdApAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiAK
ICAgICBHcmlkIGdyaWQoY29uc3RfY2FzdDxSZW5kZXJHcmlkJj4oKnRoaXMpKTsKICAgICBHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0gYWxnb3JpdGhtKHRoaXMsIGdyaWQpOwotICAgIHBsYWNlSXRl
bXNPbkdyaWQoYWxnb3JpdGhtLCBXVEY6Om51bGxvcHQpOworICAgIHBsYWNlSXRlbXNPbkdyaWQo
YWxnb3JpdGhtLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgcGVyZm9ybUdyaWRJdGVtc1ByZUxheW91
dChhbGdvcml0aG0pOwogCkBAIC00NDMsMTEgKzQ0MywxMSBAQCB2b2lkIFJlbmRlckdyaWQ6OmNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwg
TGF5bwogdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlVHJhY2tTaXplc0ZvckluZGVmaW5pdGVTaXpl
KEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYgYWxnb3JpdGhtLCBHcmlkVHJhY2tTaXppbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBMYXlvdXRVbml0KiBtaW5JbnRyaW5zaWNTaXplLCBMYXlvdXRVbml0
KiBtYXhJbnRyaW5zaWNTaXplKSBjb25zdAogewogICAgIGNvbnN0IEdyaWQmIGdyaWQgPSBhbGdv
cml0aG0uZ3JpZCgpOwotICAgIGFsZ29yaXRobS5zZXR1cChkaXJlY3Rpb24sIG51bVRyYWNrcyhk
aXJlY3Rpb24sIGdyaWQpLCBJbnRyaW5zaWNTaXplQ29tcHV0YXRpb24sIFdURjo6bnVsbG9wdCk7
CisgICAgYWxnb3JpdGhtLnNldHVwKGRpcmVjdGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgZ3Jp
ZCksIEludHJpbnNpY1NpemVDb21wdXRhdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICBhbGdvcml0
aG0ucnVuKCk7CiAKICAgICBzaXplX3QgbnVtYmVyT2ZUcmFja3MgPSBhbGdvcml0aG0udHJhY2tz
KGRpcmVjdGlvbikuc2l6ZSgpOwotICAgIExheW91dFVuaXQgdG90YWxHdXR0ZXJzU2l6ZSA9IGd1
dHRlcnNTaXplKGdyaWQsIGRpcmVjdGlvbiwgMCwgbnVtYmVyT2ZUcmFja3MsIFdURjo6bnVsbG9w
dCk7CisgICAgTGF5b3V0VW5pdCB0b3RhbEd1dHRlcnNTaXplID0gZ3V0dGVyc1NpemUoZ3JpZCwg
ZGlyZWN0aW9uLCAwLCBudW1iZXJPZlRyYWNrcywgc3RkOjpudWxsb3B0KTsKIAogICAgIGlmICht
aW5JbnRyaW5zaWNTaXplKQogICAgICAgICAqbWluSW50cmluc2ljU2l6ZSA9IGFsZ29yaXRobS5t
aW5Db250ZW50U2l6ZSgpICsgdG90YWxHdXR0ZXJzU2l6ZTsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB1
bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBpZiAobWF4U2l6ZS5pc1NwZWNpZmllZCgp
KSB7CiAgICAgICAgICAgICBpZiAobWF4U2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8g
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodEZvckNvbnRlbnQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtYXhTaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXhTaXpl
LCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7Cisg
ICAgICAgICAgICBMYXlvdXRVbml0IG1heFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNp
emUsIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7
CiAgICAgICAgICAgICBhdmFpbGFibGVNYXhTaXplID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVu
dEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhtYXhTaXplVmFsdWUsIG1heFNpemUudHlwZSgp
KSA6IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG1heFNpemVWYWx1
ZSk7CiAgICAgICAgIH0KIApAQCAtNDg3LDEzICs0ODcsMTMgQEAgdW5zaWduZWQgUmVuZGVyR3Jp
ZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWMKICAgICAgICAgaWYgKG1pblNpemUuaXNTcGVjaWZpZWQoKSkgewogICAgICAgICAgICAg
aWYgKCFjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplICYmIG1pblNpemUuaXNQZXJjZW50T3JD
YWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6
ZSA9IGlzUm93QXhpcyA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSA6
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEV4Y2x1ZGVNYXJnaW5Cb3Jk
ZXJQYWRkaW5nKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWluU2l6ZVZhbHVlID0gdmFsdWVG
b3JMZW5ndGgobWluU2l6ZSwgY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZS52YWx1ZU9yKExh
eW91dFVuaXQoKSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5TaXplVmFsdWUgPSB2YWx1
ZUZvckxlbmd0aChtaW5TaXplLCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlX29y
KExheW91dFVuaXQoKSkpOwogICAgICAgICAgICAgYXZhaWxhYmxlTWluU2l6ZSA9IGlzUm93QXhp
cyA/IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWluU2l6ZVZhbHVl
LCBtaW5TaXplLnR5cGUoKSkgOiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNp
emluZyhtaW5TaXplVmFsdWUpOwogICAgICAgICAgICAgaWYgKCFtYXhTaXplLmlzU3BlY2lmaWVk
KCkpCiAgICAgICAgICAgICAgICAgbmVlZHNUb0Z1bGZpbGxNaW5pbXVtU2l6ZSA9IHRydWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBhdmFpbGFibGVTaXplID0gc3RkOjptYXgoYXZhaWxhYmxlTWlu
U2l6ZS52YWx1ZU9yKExheW91dFVuaXQoKSksIGF2YWlsYWJsZU1heFNpemUudmFsdWVPcihMYXlv
dXRVbml0KCkpKTsKKyAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IHN0ZDo6bWF4KGF2YWlsYWJsZU1p
blNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSwgYXZhaWxhYmxlTWF4U2l6ZS52YWx1ZV9vcihM
YXlvdXRVbml0KCkpKTsKICAgICB9CiAKICAgICBMYXlvdXRVbml0IGF1dG9SZXBlYXRUcmFja3NT
aXplOwpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3Jp
ZChHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSwgT3B0aW9uYWw8CiAgICAgICAg
IGlmICghY2hpbGQtPmhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbFdp
ZHRoKCkpCiAgICAgICAgICAgICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0Nv
bnRlbnRMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCgpKTsKICAgICAgICAgaWYgKCFjaGlsZC0+aGFz
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpCi0gICAgICAg
ICAgICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVp
Z2h0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjaGlsZC0+c2V0T3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KHN0ZDo6bnVsbG9wdCk7CiAKICAgICAgICAg
R3JpZEFyZWEgYXJlYSA9IGdyaWQuZ3JpZEl0ZW1BcmVhKCpjaGlsZCk7CiAgICAgICAgIGlmICgh
YXJlYS5yb3dzLmlzSW5kZWZpbml0ZSgpKQpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgdm9pZCBSZW5k
ZXJHcmlkOjphcHBseVN0cmV0Y2hBbGlnbm1lbnRUb0NoaWxkSWZOZWVkZWQoUmVuZGVyQm94JiBj
aGlsZCkKICAgICBib29sIGFsbG93ZWRUb1N0cmV0Y2hDaGlsZEJsb2NrU2l6ZSA9IGJsb2NrRmxv
d0lzQ29sdW1uQXhpcyA/IGFsbG93ZWRUb1N0cmV0Y2hDaGlsZEFsb25nQ29sdW1uQXhpcyhjaGls
ZCkgOiBhbGxvd2VkVG9TdHJldGNoQ2hpbGRBbG9uZ1Jvd0F4aXMoY2hpbGQpOwogICAgIGlmIChh
bGxvd2VkVG9TdHJldGNoQ2hpbGRCbG9ja1NpemUpIHsKICAgICAgICAgTGF5b3V0VW5pdCBzdHJl
dGNoZWRMb2dpY2FsSGVpZ2h0ID0gYXZhaWxhYmxlQWxpZ25tZW50U3BhY2VGb3JDaGlsZEJlZm9y
ZVN0cmV0Y2hpbmcoR3JpZExheW91dEZ1bmN0aW9uczo6b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9j
a0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkQmxvY2tEaXJlY3Rpb24pLnZhbHVlKCks
IGNoaWxkKTsKLSAgICAgICAgTGF5b3V0VW5pdCBkZXNpcmVkTG9naWNhbEhlaWdodCA9IGNoaWxk
LmNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChzdHJldGNoZWRMb2dpY2FsSGVpZ2h0LCBX
VEY6Om51bGxvcHQpOworICAgICAgICBMYXlvdXRVbml0IGRlc2lyZWRMb2dpY2FsSGVpZ2h0ID0g
Y2hpbGQuY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KHN0cmV0Y2hlZExvZ2ljYWxIZWln
aHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdMb2dpY2FsSGVp
Z2h0KGRlc2lyZWRMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICAvLyBDaGVja2luZyB0aGUgbG9n
aWNhbC1oZWlnaHQgb2YgYSBjaGlsZCBpc24ndCBlbm91Z2guIFNldHRpbmcgYW4gb3ZlcnJpZGUg
bG9naWNhbC1oZWlnaHQKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIExheW91dFVuaXQgUmVuZGVyR3Jp
ZDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2Rl
IGRpCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgfHwgIW1fZ3JpZC5oYXNHcmlk
SXRlbXMoKSB8fCBzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGNvbnN0IFJlbmRlckJveCogYmFzZWxpbmVDaGlsZCA9IG51bGxwdHI7CiAgICAgLy8gRmluZGlu
ZyB0aGUgZmlyc3QgZ3JpZCBpdGVtIGluIGdyaWQgb3JkZXIuCkBAIC0xMjg3LDkgKzEyODcsOSBA
QCBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAgICAgfQogCiAgICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBiYXNl
bGluZSA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzT3J0aG9nb25hbENoaWxkKCp0aGlzLCAqYmFz
ZWxpbmVDaGlsZCkgPyBXVEY6Om51bGxvcHQgOiBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNl
bGluZSgpOworICAgIGF1dG8gYmFzZWxpbmUgPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjppc09ydGhv
Z29uYWxDaGlsZCgqdGhpcywgKmJhc2VsaW5lQ2hpbGQpID8gc3RkOjpudWxsb3B0IDogYmFzZWxp
bmVDaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICAvLyBXZSB0YWtlIGJvcmRlci1ib3gn
cyBib3R0b20gaWYgbm8gdmFsaWQgYmFzZWxpbmUuCiAgICAgaWYgKCFiYXNlbGluZSkgewogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVC
YXNlbGluZSBhbmQgc3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggMTI5Njc1OTBiNGMzMzg0ZDNkMTU0MWUz
YWQwMDg5Y2NlM2UxMzJhMi4uYmFkMGFkZDA0NmJiOTI1YTlmMmZjYmJkNjU3ZTA1YThiNmFlMTAy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKQEAgLTEzNiw3ICsxMzYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzU2hhZG93Q29udHJvbHMgfHwgbV9oYXNJbWFnZU92ZXJsYXk7IH0KIAogICAgIExheW91
dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQg
PSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVS
ZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdp
ZHRoID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNl
ZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxk
Q29sbGFwc2VUb0VtcHR5KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKaW5kZXggZTdhMGEyN2E1YmNhNzI4OTk5MjAyYTY1YzNlMjlkMmE2Njk2NjZl
Ny4uNTI5YjFjNjcwODk0ODA5ZTI3OGM3NWY2ZWYzZGJkNGY3NDcyOTI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTk2Myw3ICs5NjMsNyBAQCBPcHRp
b25hbDxMYXlvdXRSZWN0PiBSZW5kZXJJbmxpbmU6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFp
bmVyKGNvbnN0IExheW91dFJlYwogICAgICAgICBib29sIGlzRW1wdHkgPSAhZG93bmNhc3Q8UmVu
ZGVyQm94PigqbG9jYWxDb250YWluZXIpLmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbFBvc2l0aW9u
KGFkanVzdGVkUmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICAgICAgaWYgKGlzRW1wdHkp
IHsKICAgICAgICAgICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuY29udGFpbnMoVmlzaWJsZVJlY3RD
b250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZTgwZDVlNzAz
MmNjYWUyZmYyNDBhNGQxYjE5NjNkNGU1N2EzZTQ1Ni4uMTg1ZjZjZjZhOWE5M2ZlODA3OWVjNDM1
YzZlYTQ2YjE2Zjc4YjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC05NjMsNyArOTYzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnMoUmVuZGVyR2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBPcHRpb25TZXQKICAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3aWxsIGNvbnZlcnQgdGhpcyB0byBqdXN0IHRha2Ug
dGhlIG9sZCBhbmQgbmV3IFJlcGFpbnRMYXlvdXRSZWN0cyBvbmNlCiAgICAgICAgICAgICAgICAg
ICAgIC8vIHdlIGNoYW5nZSBvdGhlciBjYWxsZXJzIHRvIHVzZSBSZXBhaW50TGF5b3V0UmVjdHMu
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzb2x2ZWRPbGRSZWN0cyA9IG9sZFJlY3RzLnZh
bHVlT3IoTGF5ZXJSZXBhaW50UmVjdHMgeyB9KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBy
ZXNvbHZlZE9sZFJlY3RzID0gb2xkUmVjdHMudmFsdWVfb3IoTGF5ZXJSZXBhaW50UmVjdHMgeyB9
KTsKICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS5yZXBhaW50QWZ0ZXJMYXlvdXRJZk5l
ZWRlZChyZXBhaW50Q29udGFpbmVyLCByZXNvbHZlZE9sZFJlY3RzLmNsaXBwZWRPdmVyZmxvd1Jl
Y3QsIHJlc29sdmVkT2xkUmVjdHMub3V0bGluZUJvdW5kc1JlY3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAmbmV3UmVjdHMtPmNsaXBwZWRPdmVyZmxvd1JlY3QsICZuZXdSZWN0cy0+b3V0bGlu
ZUJvdW5kc1JlY3QpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM0NjQsNyArMzQ2NCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QKICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxPZmZz
ZXQgPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9m
ZnNldEZvclRoaXNMYXllcik7CiAgICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWlu
dGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKICAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5yb290
TGF5ZXIgPSB0aGlzOwotICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxz
KHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3Qo
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB0
cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5zdWJwaXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxP
ZmZzZXQ7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFu
c2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmgKaW5kZXggNGI5OWQ4MTE5NzMxMTY3YmJjZjcwY2I3NzQ0MjhjN2RlZjY4
MmQ2OC4uOTUyYWU0ZDNmN2VhNjBhOWNiY2I2ODFkNjcyZmY1MDI5MGRlMTZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTY3Miw3ICs2NzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjbGlwQ3Jvc3Nlc1BhaW50aW5nQm91bmRhcnkoKSBjb25zdDsKIAogICAgIC8v
IFBhc3Mgb2Zmc2V0RnJvbVJvb3QgaWYga25vd24uCi0gICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdl
UmVjdChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgZGFt
YWdlUmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0RnJvbVJvb3QsIGNvbnN0IE9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGlu
Z0JveCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgYm9vbCBpbnRlcnNlY3RzRGFtYWdlUmVj
dChjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdl
UmVjdCwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsIGNvbnN0IE9wdGlvbmFsPExheW91dFJlY3Q+JiBjYWNoZWRCb3VuZGluZ0Jv
eCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBlbnVtIENhbGN1bGF0ZUxheWVyQm91bmRz
RmxhZyB7CiAgICAgICAgIEluY2x1ZGVTZWxmVHJhbnNmb3JtICAgICAgICAgICAgICAgICAgICA9
IDEgPDwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMzM2ODE2YTEwODc0Mjk2NDhmYTcyODk5OGIzNzI1M2E1NzBhNDQ4
NS4uNDEzYTZlMGYwNGY4NWM3ZDZjMGVkNzgyYWUyYmRiN2Y1NDkzMWUzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTIz
NDIsMTEgKzIzNDIsMTEgQEAgT3B0aW9uYWw8U3RyaW5nPiBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0KEVsZW1lbnQmIGVsZW1lbnQKIAogICAgIHVwZGF0ZUNv
bXBvc2l0aW5nRm9yTGF5ZXJUcmVlQXNUZXh0RHVtcCgpOwogICAgIGlmICghZWxlbWVudC5yZW5k
ZXJlcigpIHx8ICFlbGVtZW50LnJlbmRlcmVyKCktPmhhc0xheWVyKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
JiBsYXllck1vZGVsT2JqZWN0ID0gZG93bmNhc3Q8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4oKmVs
ZW1lbnQucmVuZGVyZXIoKSk7CiAgICAgaWYgKCFsYXllck1vZGVsT2JqZWN0LmxheWVyKCktPmlz
Q29tcG9zaXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogYmFja2luZyA9IGxheWVyTW9kZWxPYmplY3Qu
bGF5ZXIoKS0+YmFja2luZygpOwogICAgIHJldHVybiBiYWNraW5nLT5ncmFwaGljc0xheWVyKCkt
PnBsYXRmb3JtTGF5ZXJUcmVlQXNUZXh0KGZsYWdzKTsKQEAgLTQ0NDIsNyArNDQ0Miw3IEBAIFNj
cm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmF0dGFjaFNjcm9sbGluZ05vZGUo
UmVuZGVyTGF5ZXImIGxheWVyLCBTCiAgICAgCiAgICAgbm9kZUlEID0gcmVnaXN0ZXJTY3JvbGxp
bmdOb2RlSUQoKnNjcm9sbGluZ0Nvb3JkaW5hdG9yLCBub2RlSUQsIG5vZGVUeXBlLCB0cmVlU3Rh
dGUpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZ1RyZWUsIHN0cmVhbSA8PCAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yICIgPDwgdGhpcyA8PCAiIGF0dGFjaFNjcm9sbGluZ05vZGUgIiA8
PCBub2RlSUQgPDwgIiAobGF5ZXIgIiA8PCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnByaW1h
cnlMYXllcklEKCkgPDwgIikgdHlwZSAiIDw8IG5vZGVUeXBlIDw8ICIgcGFyZW50ICIgPDwgdHJl
ZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsaW5nVHJlZSwgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNvbXBvc2l0b3IgIiA8PCB0aGlzIDw8
ICIgYXR0YWNoU2Nyb2xsaW5nTm9kZSAiIDw8IG5vZGVJRCA8PCAiIChsYXllciAiIDw8IGJhY2tp
bmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAiKSB0eXBlICIgPDwgbm9k
ZVR5cGUgPDwgIiBwYXJlbnQgIiA8PCB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDAp
KTsKIAogICAgIGlmICghbm9kZUlEKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ0NjcsNyArNDQ2
Nyw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyU2Ny
b2xsaW5nTm9kZUlEKFNjcm9sbGluZ0Nvb3JkaW5hCiAgICAgaWYgKG5vZGVUeXBlID09IFNjcm9s
bGluZ05vZGVUeXBlOjpTdWJmcmFtZSAmJiAhdHJlZVN0YXRlLnBhcmVudE5vZGVJRCkKICAgICAg
ICAgbm9kZUlEID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3JlYXRlTm9kZShub2RlVHlwZSwgbm9k
ZUlEKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBuZXdOb2RlSUQgPSBzY3JvbGxpbmdDb29y
ZGluYXRvci5pbnNlcnROb2RlKG5vZGVUeXBlLCBub2RlSUQsIHRyZWVTdGF0ZS5wYXJlbnROb2Rl
SUQudmFsdWVPcigwKSwgdHJlZVN0YXRlLm5leHRDaGlsZEluZGV4KTsKKyAgICAgICAgYXV0byBu
ZXdOb2RlSUQgPSBzY3JvbGxpbmdDb29yZGluYXRvci5pbnNlcnROb2RlKG5vZGVUeXBlLCBub2Rl
SUQsIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCksIHRyZWVTdGF0ZS5uZXh0Q2hp
bGRJbmRleCk7CiAgICAgICAgIGlmIChuZXdOb2RlSUQgIT0gbm9kZUlEKSB7CiAgICAgICAgICAg
ICAvLyBXZSdsbCBnZXQgYSBuZXcgbm9kZUlEIGlmIHRoZSB0eXBlIGNoYW5nZWQgKGFuZCBub3Qg
aWYgdGhlIG5vZGUgaXMgbmV3KS4KICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLnVu
cGFyZW50Q2hpbGRyZW5BbmREZXN0cm95Tm9kZShub2RlSUQpOwpAQCAtNDU4OCw3ICs0NTg4LDcg
QEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29v
cmRpbmF0aW9uRm9yTGF5ZXIoUmVuZGVyTGEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgYXV0byBuZXdOb2RlSUQgPSB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlT3IoMCk7Cisg
ICAgYXV0byBuZXdOb2RlSUQgPSB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDApOwog
CiAgICAgU2Nyb2xsaW5nVHJlZVN0YXRlIGNoaWxkVHJlZVN0YXRlOwogICAgIFNjcm9sbGluZ1Ry
ZWVTdGF0ZSogY3VycmVudFRyZWVTdGF0ZSA9ICZ0cmVlU3RhdGU7CkBAIC00NjQ0LDEwICs0NjQ0
LDEwIEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9s
bGluZ05vZGVGb3JWaWV3cG9ydENvbnN0cmFpbmVkCiAgICAgYXV0byBuZXdOb2RlSUQgPSBhdHRh
Y2hTY3JvbGxpbmdOb2RlKGxheWVyLCBub2RlVHlwZSwgdHJlZVN0YXRlKTsKICAgICBpZiAoIW5l
d05vZGVJRCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVT
dGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAgICAgfQogCi0gICAgTE9HX1dJVEhfU1RS
RUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgIlJlZ2lzdGVyaW5nIFZpZXdwb3J0Q29uc3RyYWlu
ZWQgIiA8PCBub2RlVHlwZSA8PCAiIG5vZGUgIiA8PCBuZXdOb2RlSUQgPDwgIiAobGF5ZXIgIiA8
PCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAi
KSBhcyBjaGlsZCBvZiAiIDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKSk7Cisg
ICAgTE9HX1dJVEhfU1RSRUFNKENvbXBvc2l0aW5nLCBzdHJlYW0gPDwgIlJlZ2lzdGVyaW5nIFZp
ZXdwb3J0Q29uc3RyYWluZWQgIiA8PCBub2RlVHlwZSA8PCAiIG5vZGUgIiA8PCBuZXdOb2RlSUQg
PDwgIiAobGF5ZXIgIiA8PCBsYXllci5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFy
eUxheWVySUQoKSA8PCAiKSBhcyBjaGlsZCBvZiAiIDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQu
dmFsdWVfb3IoMCkpOwogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxh
Z3M6OkxheWVyKQogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhu
ZXdOb2RlSUQsIHsgbGF5ZXIuYmFja2luZygpLT5ncmFwaGljc0xheWVyKCkgfSk7CkBAIC00NzIw
LDcgKzQ3MjAsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZShSZW5kZQogCiAgICAgICAgIGlmICghbmV3
Tm9kZUlEKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlT3IoMCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpMYXllcikKQEAg
LTQ3MzQsNyArNDczNCw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdSb2xlKFJlbmRlCiAgICAgICAgIG5ld05v
ZGVJRCA9IGF0dGFjaFNjcm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpPdmVy
ZmxvdywgdHJlZVN0YXRlKTsKICAgICAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50
Tm9kZUlELnZhbHVlX29yKDApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoY2hh
bmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCkBAIC00NzU1LDcgKzQ3NTUs
NyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxp
bmdOb2RlRm9yU2Nyb2xsaW5nUHJveHlSb2xlKAogICAgIGF1dG8qIGNsaXBwaW5nU3RhY2sgPSBs
YXllci5iYWNraW5nKCktPmFuY2VzdG9yQ2xpcHBpbmdTdGFjaygpOwogICAgIGlmICghY2xpcHBp
bmdTdGFjaykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVT
dGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgU2Nyb2xsaW5nTm9k
ZUlEIG5vZGVJRCA9IDA7CkBAIC00NzY2LDcgKzQ3NjYsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUHJveHlS
b2xlKAogICAgICAgICBub2RlSUQgPSByZWdpc3RlclNjcm9sbGluZ05vZGVJRCgqc2Nyb2xsaW5n
Q29vcmRpbmF0b3IsIGVudHJ5Lm92ZXJmbG93U2Nyb2xsUHJveHlOb2RlSUQsIFNjcm9sbGluZ05v
ZGVUeXBlOjpPdmVyZmxvd1Byb3h5LCB0cmVlU3RhdGUpOwogICAgICAgICBpZiAoIW5vZGVJRCkg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
dHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApOworICAgICAgICAgICAgcmV0dXJuIHRy
ZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAgICAgICAgIH0KICAgICAgICAgZW50
cnkub3ZlcmZsb3dTY3JvbGxQcm94eU5vZGVJRCA9IG5vZGVJRDsKICNpZiBFTkFCTEUoU0NST0xM
SU5HX1RIUkVBRCkKQEAgLTQ3OTUsNyArNDc5NSw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdQcm94eVJvbGUo
CiAgICAgLy8gRklYTUU6IGFsc28gbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyQW5jZXN0b3JD
bGlwcGluZ1N0YWNrCiAKICAgICBpZiAoIW5vZGVJRCkKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0
ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQudmFsdWVfb3IoMCk7CiAKICAgICByZXR1cm4gbm9kZUlEOwogfQpAQCAtNDgwNyw3
ICs0ODA3LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRl
U2Nyb2xsaW5nTm9kZUZvckZyYW1lSG9zdGluZ1JvbGUoUmUKICAgICBhdXRvIG5ld05vZGVJRCA9
IGF0dGFjaFNjcm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpGcmFtZUhvc3Rp
bmcsIHRyZWVTdGF0ZSk7CiAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVl
T3IoMCk7CisgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9kZUlELnZhbHVlX29yKDAp
OwogICAgIH0KIAogICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9kZUNoYW5nZUZsYWdzOjpM
YXllcikKQEAgLTQ4MjMsNyArNDgyMyw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JQb3NpdGlvbmluZ1JvbGUoUmVuCiAgICAg
YXV0byBuZXdOb2RlSUQgPSBhdHRhY2hTY3JvbGxpbmdOb2RlKGxheWVyLCBTY3JvbGxpbmdOb2Rl
VHlwZTo6UG9zaXRpb25lZCwgdHJlZVN0YXRlKTsKICAgICBpZiAoIW5ld05vZGVJRCkgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJl
bnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2Rl
SUQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2Rl
Q2hhbmdlRmxhZ3M6OkxheWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggMmJiNWE1NTI4OWY2NDg5ODAxNGY3NDVl
YjRlMWIxMzAxMGE1MTQ5Zi4uMGEzNzE5YTIzNThkNWFhY2Y4ZTliMTY5NjEzMTZkZWRiM2VkNzZl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcApAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpIGNvbnN0CiAKIE9wdGlvbmFs
PExheWVyUmVwYWludFJlY3RzPiBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpsYXllclJlcGFpbnRS
ZWN0cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0xheWVyKCkgPyBsYXllcigpLT5yZXBhaW50
UmVjdHMoKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCkt
PnJlcGFpbnRSZWN0cygpIDogc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckxheWVyTW9k
ZWxPYmplY3Q6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBBbmltYXRp
b24mIGFuaW1hdGlvbiwgY29uc3QgS2V5ZnJhbWVMaXN0JiBrZXlmcmFtZXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAK
aW5kZXggZGUyYmNlNTFmYTliOGQxMWEwZTQ5ZTkxZjRmYTlmZDFkNTA1ODU4My4uY2RlNDU3MWZk
NDk2NGVjZjVhNzU4ZThiYTA5MDFkNzdmMDFjMjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMjE2LDcg
KzIxNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6YXBwbHlQb3N0TGF5b3V0
U2Nyb2xsUG9zaXRpb25JZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNjcm9sbFRv
T2Zmc2V0KHNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihtX3Bvc3RMYXlvdXRTY3JvbGxQb3NpdGlv
bi52YWx1ZSgpKSk7Ci0gICAgbV9wb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24gPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wb3N0TGF5b3V0U2Nyb2xsUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsVG9YUG9zaXRpb24oaW50IHgs
IGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE3NTUsNyAr
MTc1NSw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6
OnVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sCiAgICAgICAgIHJldHVybiBMYXlvdXRS
ZWN0KGJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQoRmxvYXRSZWN0KGxvY2FsRXhw
b3NlUmVjdFNjcm9sbGVkKSksIFVzZVRyYW5zZm9ybXMpLmJvdW5kaW5nQm94KCkpOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNv
bnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJlYSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCA5ZGFkNTE3MTA3OGZj
NjIzZWQ4Y2IxYWYwYWM2NGNiY2E0M2VjOTkzLi4yNmJiM2NiZTJmODlmOTM2NDA2NzA3M2JkOGUw
YWE1MDNjOTk3ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3gu
Y3BwCkBAIC0yOTMsNyArMjkzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaXN0Qm94OjppdGVtQm91
bmRpbmdCb3hSZWN0KGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2UKIHZvaWQgUmVu
ZGVyTGlzdEJveDo6cGFpbnRJdGVtKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFBhaW50RnVuY3Rpb24mIHBhaW50RnVuY3Rpb24pCiB7
CiAgICAgaW50IGxpc3RJdGVtc1NpemUgPSBudW1JdGVtcygpOwotICAgIGludCBmaXJzdFZpc2li
bGVJdGVtID0gbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZh
bHVlT3IobV9pbmRleE9mZnNldCk7CisgICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4
T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVfb3IobV9pbmRleE9m
ZnNldCk7CiAgICAgaW50IGVuZEluZGV4ID0gZmlyc3RWaXNpYmxlSXRlbSArIG51bVZpc2libGVJ
dGVtcyhDb25zaWRlclBhZGRpbmc6Olllcyk7CiAgICAgZm9yIChpbnQgaSA9IGZpcnN0VmlzaWJs
ZUl0ZW07IGkgPCBsaXN0SXRlbXNTaXplICYmIGkgPCBlbmRJbmRleDsgKytpKQogICAgICAgICBw
YWludEZ1bmN0aW9uKHBhaW50SW5mbywgcGFpbnRPZmZzZXQsIGkpOwpAQCAtNjEyLDcgKzYxMiw3
IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6c2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgo
aW50IGluZGV4KQogCiBib29sIFJlbmRlckxpc3RCb3g6Omxpc3RJbmRleElzVmlzaWJsZShpbnQg
aW5kZXgpCiB7Ci0gICAgaW50IGZpcnN0SW5kZXggPSBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVt
SW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0KTsKKyAgICBpbnQgZmly
c3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYS52
YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5kSW5kZXggPSBtX2luZGV4T2ZGaXJz
dFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEKICAgICAgICAgPyBtX2luZGV4T2ZG
aXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEudmFsdWUoKSArIG51bWJlck9m
VmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkKICAgICAgICAgOiBtX2luZGV4T2Zmc2V0ICsg
bnVtVmlzaWJsZUl0ZW1zKCk7CkBAIC02NzksOCArNjc5LDggQEAgaW50IFJlbmRlckxpc3RCb3g6
Om51bWJlck9mVmlzaWJsZUl0ZW1zSW5QYWRkaW5nQm90dG9tKCkgY29uc3QKIAogdm9pZCBSZW5k
ZXJMaXN0Qm94Ojpjb21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJvdHRvbUFy
ZWFzKCkKIHsKLSAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFy
ZWEgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBh
ZGRpbmdCb3R0b21BcmVhID0gV1RGOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0VmlzaWJs
ZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2luZGV4T2ZG
aXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpbnQgbWF4aW11bU51bWJlck9mSXRlbXNUaGF0Rml0SW5QYWRkaW5nVG9wQXJlYSA9IHBh
ZGRpbmdUb3AoKSAvIGl0ZW1IZWlnaHQoKTsKICAgICBpZiAobWF4aW11bU51bWJlck9mSXRlbXNU
aGF0Rml0SW5QYWRkaW5nVG9wQXJlYSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0SXRlbS5jcHAKaW5kZXggYjFiMTRhOWQ4Y2UwOTM0NDg0ZGI0NzY5YWEyNmFlZGYwOTUw
NzdjOC4uZmRiZTEzMDlmNzE5NjljYjBlZWExOWQwMWU2YWQ1ZDI1MTZhMmE0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBAIC0yMzksNyArMjM5LDcg
QEAgdm9pZCBSZW5kZXJMaXN0SXRlbTo6dXBkYXRlVmFsdWVOb3coKSBjb25zdAogdm9pZCBSZW5k
ZXJMaXN0SXRlbTo6dXBkYXRlVmFsdWUoKQogewogICAgIGlmICghbV92YWx1ZVdhc1NldEV4cGxp
Y2l0bHkpIHsKLSAgICAgICAgbV92YWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92YWx1
ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1fbWFya2VyKQogICAgICAgICAgICAgbV9t
YXJrZXItPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggNGYxM2I4Mzk1NzczZTdm
NzYxMGQ5MDYyMDAwNThkZWE2NjFmMzJhMC4uZDZkOWIzZTcyYjEwMGMxZDI2ZjkzYWQzZmEwYjFi
N2YxZWI3MWRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNvbnN0OwogICAgIHZv
aWQgdXBkYXRlVmFsdWUoKTsKIAotICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWVXYXNTZXRFeHBsaWNpdGx5ID8gbV92YWx1ZSA6IFdURjo6bnVs
bG9wdDsgfQorICAgIE9wdGlvbmFsPGludD4gZXhwbGljaXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWVXYXNTZXRFeHBsaWNpdGx5ID8gbV92YWx1ZSA6IHN0ZDo6bnVsbG9wdDsgfQogICAg
IHZvaWQgc2V0RXhwbGljaXRWYWx1ZShPcHRpb25hbDxpbnQ+KTsKIAogICAgIHZvaWQgc2V0Tm90
SW5MaXN0KGJvb2wgbm90SW5MaXN0KSB7IG1fbm90SW5MaXN0ID0gbm90SW5MaXN0OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRl
eCAwZWZkNTkzNTliNGNiMjA0YzdkNTYzNzY3OTQ1ZTE5NzlmYjNjMzE3Li5mZmNiYTA0YWEzNDVj
NDg0YTk5ZDgzYzY2YmI0YmY0YmUwYTBkZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCBMYXlv
dXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQoKSBj
b25zdAogICAgIExheW91dFVuaXQgYXZhaWxhYmxlSGVpZ2h0ID0gbXVsdGlDb2x1bW5GbG93KCkt
PmNvbHVtbkhlaWdodEF2YWlsYWJsZSgpOwogICAgIExheW91dFVuaXQgbWF4Q29sdW1uSGVpZ2h0
ID0gYXZhaWxhYmxlSGVpZ2h0ID8gYXZhaWxhYmxlSGVpZ2h0IDogUmVuZGVyRnJhZ21lbnRlZEZs
b3c6Om1heExvZ2ljYWxIZWlnaHQoKTsKICAgICBpZiAoIW11bHRpY29sU3R5bGUubG9naWNhbE1h
eEhlaWdodCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIG1heENvbHVtbkhlaWdodCA9IHN0ZDo6
bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRlbnRMb2dpY2Fs
SGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgpLCBXVEY6Om51
bGxvcHQpLnZhbHVlT3IobWF4Q29sdW1uSGVpZ2h0KSk7CisgICAgICAgIG1heENvbHVtbkhlaWdo
dCA9IHN0ZDo6bWluKG1heENvbHVtbkhlaWdodCwgbXVsdGljb2xCbG9jay0+Y29tcHV0ZUNvbnRl
bnRMb2dpY2FsSGVpZ2h0KE1heFNpemUsIG11bHRpY29sU3R5bGUubG9naWNhbE1heEhlaWdodCgp
LCBzdGQ6Om51bGxvcHQpLnZhbHVlX29yKG1heENvbHVtbkhlaWdodCkpOwogICAgIHJldHVybiBo
ZWlnaHRBZGp1c3RlZEZvclNldE9mZnNldChtYXhDb2x1bW5IZWlnaHQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGJhYTEzM2VmN2IzOTc2NWFm
YmUyNGJlMGY3Yzk0NzNiOTJmMGYyNmIuLmM4YTMxZGNmOTdiM2FkZTEwMmU0NTBjZTg2Y2NkN2Y0
YzIzMmIyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBA
IC0xMDA4LDcgKzEwMDgsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJPYmplY3Q6OmNv
bXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlYwogICAgICAgICBib29s
IGlzRW1wdHkgPSAhZG93bmNhc3Q8UmVuZGVyQm94PigqcGFyZW50KS5hcHBseUNhY2hlZENsaXBB
bmRTY3JvbGxQb3NpdGlvbihhZGp1c3RlZFJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAg
ICAgIGlmIChpc0VtcHR5KSB7CiAgICAgICAgICAgICBpZiAoY29udGV4dC5vcHRpb25zLmNvbnRh
aW5zKFZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6VXNlRWRnZUluY2x1c2l2ZUludGVyc2VjdGlv
bikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApp
bmRleCBkY2I0ZGY1MzM4ZGRjYjA2MTgxNGQ3ZjZmYjA3ZjJkOTRjYzc0ZThkLi42NDRlMTgzYjQ2
Y2ZlMDYyMTMwZDBlMzU3NWJiYzg1ZDI3YmY1NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCkBAIC02NDQsNyArNjQ0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVj
dCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsKIAogICAgIC8vIEdp
dmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSB0aGUg
bG9jYXRpb24gaW4gY29udGFpbmVyIHNwYWNlIHdoZXJlIHRoaXMgcmVjdCBpcyB2aXNpYmxlLAot
ICAgIC8vIHdoZW4gY2xpcHBpbmcgYW5kIHNjcm9sbGluZyBhcyBzcGVjaWZpZWQgYnkgdGhlIGNv
bnRleHQuIFdoZW4gdXNpbmcgZWRnZS1pbmNsdXNpdmUgaW50ZXJzZWN0aW9uLCByZXR1cm4gV1RG
OjpudWxsb3B0CisgICAgLy8gd2hlbiBjbGlwcGluZyBhbmQgc2Nyb2xsaW5nIGFzIHNwZWNpZmll
ZCBieSB0aGUgY29udGV4dC4gV2hlbiB1c2luZyBlZGdlLWluY2x1c2l2ZSBpbnRlcnNlY3Rpb24s
IHJldHVybiBzdGQ6Om51bGxvcHQKICAgICAvLyByYXRoZXIgdGhhbiBhbiBlbXB0eSByZWN0IGlm
IHRoZSByZWN0IGlzIGNvbXBsZXRlbHkgY2xpcHBlZCBvdXQgaW4gY29udGFpbmVyIHNwYWNlLgog
ICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZVZpc2libGVSZWN0SW5Db250
YWluZXIoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFZpc2libGVSZWN0Q29udGV4dCkgY29uc3Q7CiAgICAgdmlydHVhbCBP
cHRpb25hbDxGbG9hdFJlY3Q+IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRh
aW5lciwgVmlzaWJsZVJlY3RDb250ZXh0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmgKaW5kZXggYzVlOTcyY2E1NTUzZTE4NTgzODIzMzNiZDc3Zjk5NTRh
OTc0Y2UyNy4uNTJjZTY0OWIxM2Y0ZGQyOWRiMGExMjU3MzgyNjMxMDdmYWZjNmNkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTMxLDcgKzMxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclJlcGxhY2VkKCk7CiAKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkID0gQ29t
cHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9
IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVw
bGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0
aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRSZWN0IHJlcGxh
Y2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkgY29uc3Q7CiAg
ICAgTGF5b3V0UmVjdCByZXBsYWNlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gcmVwbGFj
ZWRDb250ZW50UmVjdChpbnRyaW5zaWNTaXplKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcAppbmRleCA5YjhjZmM0ODU2ODJhNTRlZDdjMWFiNTVkZjE1NDc3M2Jm
ZTJhNjExLi5mOTJjOTMxNzFlYjljMmIwMjE5NDEyNjlmNzA5NDViYzM4NmM3OTM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTM1NSw5ICszNTUsOSBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlOjpjb252ZXJ0U3R5bGVMb2dpY2FsSGVpZ2h0VG9Db21wdXRl
ZEhlaWdodChjb25zdCBMZW5ndGgmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIExheW91dFVu
aXQoc3R5bGVMb2dpY2FsSGVpZ2h0LnZhbHVlKCkgLSBib3JkZXJzKTsKICAgICB9IGVsc2UgaWYg
KHN0eWxlTG9naWNhbEhlaWdodC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKLSAgICAgICAgcmV0
dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQpLnZh
bHVlT3IoMCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQo
c3R5bGVMb2dpY2FsSGVpZ2h0KS52YWx1ZV9vcigwKTsKICAgICBlbHNlIGlmIChzdHlsZUxvZ2lj
YWxIZWlnaHQuaXNJbnRyaW5zaWMoKSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdo
dCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9yZGVyQW5kUGFkZGluZykudmFsdWVPcigwKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKHN0
eWxlTG9naWNhbEhlaWdodCwgbG9naWNhbEhlaWdodCgpIC0gYm9yZGVyQW5kUGFkZGluZywgYm9y
ZGVyQW5kUGFkZGluZykudmFsdWVfb3IoMCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gMF9sdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYjc1OGI5ZTM5Mzc1YWZhYTgxZmJmZjY4M2ExYmQ5
NTBkNGVmMWFjNi4uMGUzZDU4NGY2YTRkYTFiMTA4OTdjZDYwOTI5ZDE1YjMwZDUzNDUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQxMCw3
ICs0MTAsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Y2VsbEJhc2VsaW5lUG9zaXRp
b24oKSBjb25zdAogICAgIC8vIDxodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA3L0NSLUNTUzIxLTIw
MDcwNzE5L3RhYmxlcy5odG1sI2hlaWdodC1sYXlvdXQ+OiBUaGUgYmFzZWxpbmUgb2YgYSBjZWxs
IGlzIHRoZSBiYXNlbGluZSBvZgogICAgIC8vIHRoZSBmaXJzdCBpbi1mbG93IGxpbmUgYm94IGlu
IHRoZSBjZWxsLCBvciB0aGUgZmlyc3QgaW4tZmxvdyB0YWJsZS1yb3cgaW4gdGhlIGNlbGwsIHdo
aWNoZXZlciBjb21lcyBmaXJzdC4gSWYgdGhlcmUKICAgICAvLyBpcyBubyBzdWNoIGxpbmUgYm94
IG9yIHRhYmxlLXJvdywgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVudCBlZGdl
IG9mIHRoZSBjZWxsIGJveC4KLSAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9y
KGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAg
IHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlX29yKGJvcmRlckFuZFBhZGRpbmdCZWZv
cmUoKSArIGNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
bWFya0NlbGxEaXJ0eVdoZW5Db2xsYXBzZWRCb3JkZXJDaGFuZ2VzKFJlbmRlclRhYmxlQ2VsbCog
Y2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAKaW5kZXggY2I0NjQxZWZmZDFjNjMyYWIxOWY5MTU5NTI4ZWI5N2RlMDk3ODEyYi4uYzNhMDEz
OTZhMmJlZjMxMDZlYTk3NzFiZGZiOTBmMWY2NGRiNWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTg4NCw3ICs4ODQsNyBAQCBP
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKICAgICAgICAgLy8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2Vs
aW5lCiAgICAgICAgIGlmIChjZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsK
ICAgICAgICAgICAgIExheW91dFVuaXQgY2FuZGlkYXRlID0gY2VsbC0+bG9naWNhbFRvcCgpICsg
Y2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWln
aHQoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNhbmRp
ZGF0ZSksIGNhbmRpZGF0ZSk7CisgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQu
dmFsdWVfb3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IDU5Y2MwYzZiOTE5ZGU4M2M4
NDNhMDNlYTk5ZmU5MzU0NDE3YmM4ZDcuLjY0NWEzZWI1Y2U0OWFkNWI2MmMyNGM2MGZhM2FkN2Q0
MTY1NTE2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEx
ODYsNyArMTE4Niw3IEBAIHZvaWQgUmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxX
aWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEdseXBoTGVmdE92ZXJmbG93LnZhbHVl
T3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKKyAgICBnbHlwaE92ZXJmbG93LmxlZnQgPSBmaXJzdEds
eXBoTGVmdE92ZXJmbG93LnZhbHVlX29yKGdseXBoT3ZlcmZsb3cubGVmdCk7CiAKICAgICBpZiAo
KG5lZWRzV29yZFNwYWNpbmcgJiYgbGVuZ3RoID4gMSkgfHwgKGlnbm9yaW5nU3BhY2VzICYmICFm
aXJzdFdvcmQpKQogICAgICAgICBjdXJyTWF4V2lkdGggKz0gd29yZFNwYWNpbmc7CkBAIC0xNzQw
LDEzICsxNzQwLDEzIEBAIGludCBSZW5kZXJUZXh0OjpwcmV2aW91c09mZnNldChpbnQgY3VycmVu
dCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgLSAxOwogCiAgICAgQ2FjaGVkVGV4dEJy
ZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6TW9kZTo6Q2Fy
ZXQsIG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCku
dmFsdWVPcihjdXJyZW50IC0gMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJy
ZW50KS52YWx1ZV9vcihjdXJyZW50IC0gMSk7CiB9CiAKIGludCBSZW5kZXJUZXh0OjpwcmV2aW91
c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgQ2Fj
aGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVyYXRvcjo6
TW9kZTo6RGVsZXRlLCBudWxsQXRvbSgpKTsKLSAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5n
KGN1cnJlbnQpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJy
ZW50KS52YWx1ZV9vcigwKTsKIH0KIAogaW50IFJlbmRlclRleHQ6Om5leHRPZmZzZXQoaW50IGN1
cnJlbnQpIGNvbnN0CkBAIC0xNzU1LDcgKzE3NTUsNyBAQCBpbnQgUmVuZGVyVGV4dDo6bmV4dE9m
ZnNldChpbnQgY3VycmVudCkgY29uc3QKICAgICAgICAgcmV0dXJuIGN1cnJlbnQgKyAxOwogCiAg
ICAgQ2FjaGVkVGV4dEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IodGV4dCgpLCBUZXh0QnJlYWtJdGVy
YXRvcjo6TW9kZTo6Q2FyZXQsIG51bGxBdG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5mb2xs
b3dpbmcoY3VycmVudCkudmFsdWVPcihjdXJyZW50ICsgMSk7CisgICAgcmV0dXJuIGl0ZXJhdG9y
LmZvbGxvd2luZyhjdXJyZW50KS52YWx1ZV9vcihjdXJyZW50ICsgMSk7CiB9CiAKIGJvb2wgUmVu
ZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCgpIGNvbnN0CkBAIC0xNzc3
LDcgKzE3NzcsNyBAQCB2b2lkIFJlbmRlclRleHQ6Om1vbWVudGFyaWx5UmV2ZWFsTGFzdFR5cGVk
Q2hhcmFjdGVyKHVuc2lnbmVkIG9mZnNldEFmdGVyTGFzdFR5cAogCiBTdHJpbmdWaWV3IFJlbmRl
clRleHQ6OnN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9w
KSBjb25zdAogewotICAgIHVuc2lnbmVkIGRlc3RpbmF0aW9uID0gc3RvcC52YWx1ZU9yKHRleHQo
KS5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlX29yKHRl
eHQoKS5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGxlbmd0aCgpKTsKICAgICBBU1NF
UlQoZGVzdGluYXRpb24gPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChzdGFydCA8PSBkZXN0aW5h
dGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA3YTZmNTUxY2Rk
MzI5ZDQ1YzI0YjdjZjYzZTExZjY4NWQyZWIyNDU2Li4xYjJiZDNlZTQ2NmNiNjU2ZjYzZjkwYzIx
NmVmYzlkOWJiNjVmNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAg
LTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHVzZXNDb21wbGV4TGluZUxheW91
dFBhdGgoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlldyh1bnNpZ25lZCBzdGFy
dCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXcodW5zaWduZWQgc3RhcnQgPSAwLCBPcHRpb25hbDx1bnNp
Z25lZD4gc3RvcCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBjb250YWlu
c09ubHlIVE1MV2hpdGVzcGFjZSh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4
IDkxNWJiNTNkYTc5ZDNkNjI0OTM3MDE2NDM1MTlhZDgwMDAyMTU1YWQuLmU2ZjhmMjJlMTM5NmE2
MmQyMzBhNTA0NzM1OWNjYzUxMzM4NTJiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KQEAgLTU3NCw3ICs1NzQsNyBAQCBMZW5ndGhCb3ggUmVuZGVyVGhl
bWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29ucwogICAgIGZsb2F0IHBhZGRpbmcgPSBNZW51TGlzdEJ1dHRvblBhZGRpbmdBZnRlcjsKICAg
ICBpZiAoc2V0dGluZ3MuaU9TRm9ybUNvbnRyb2xSZWZyZXNoRW5hYmxlZCgpKSB7CiAgICAgICAg
IGF1dG8gZW1TaXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1VuaXRUeXBl
OjpDU1NfRU1TKTsKLSAgICAgICAgcGFkZGluZyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxmbG9h
dD4oQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIDEuMCwgV1RGOjpudWxsb3B0KSk7CisgICAgICAgIHBhZGRpbmcgPSBlbVNpemUtPmNv
bXB1dGVMZW5ndGg8ZmxvYXQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIHN0ZDo6bnVsbG9wdCkpOwogICAgIH0KIAogICAg
IGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSB7CkBAIC0xMTIz
LDcgKzExMjMsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RCdXR0b25TdHlsZShSZW5k
ZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbgogICAgIC8vIFNpbmNlIHRoZSBl
bGVtZW50IG1pZ2h0IG5vdCBiZSBpbiBhIGRvY3VtZW50LCBqdXN0IHBhc3MgbnVsbHB0ciBmb3Ig
dGhlIHJvb3QgZWxlbWVudCBzdHlsZSwKICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgc3R5bGUs
IGFuZCB0aGUgcmVuZGVyIHZpZXcuCiAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAgIGludCBwaXhlbHMgPSBl
bVNpemUtPmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHls
ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51bGxvcHQpKTsKKyAgICBp
bnQgcGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGludD4oQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgc3RkOjpudWxs
b3B0KSk7CiAgICAgc3R5bGUuc2V0UGFkZGluZ0JveChMZW5ndGhCb3goMCwgcGl4ZWxzLCAwLCBw
aXhlbHMpKTsKIAogICAgIGlmICghZWxlbWVudCkKQEAgLTEzNTQsNyArMTM1NCw3IEBAIHN0YXRp
YyBpbmxpbmUgT3B0aW9uYWw8Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVtQ29s
b3JJbmZvcm1hdGlvbihDU1NWCiAgICAgICAgIHJldHVybiBzeXN0ZW1Db2xvcjsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVJRChDU1NWYWx1
ZUlEIGNzc1ZhbHVlSUQsIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UsIGJvb2wgdXNlRWxldmF0ZWRV
c2VySW50ZXJmYWNlTGV2ZWwpCkBAIC0xMzY2LDcgKzEzNjYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
Q29sb3I+IHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlSUQoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlELCBi
b29sIHVzZQogICAgICAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yRnJvbUNTU1ZhbHVlU3lzdGVt
Q29sb3JJbmZvcm1hdGlvbihjc3NWYWx1ZVN5c3RlbUNvbG9ySW5mb3JtYXRpb24sIHVzZURhcmtB
cHBlYXJhbmNlKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBSZW5kZXJUaGVtZUlPUzo6Q1NTVmFsdWVUb1N5
c3RlbUNvbG9yTWFwJiBnbG9iYWxDU1NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAoKQpAQCAtMjU2Miw3
ICsyNTYyLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29y
YXRpb25zV2l0aEZvcm1Db250cm9sUmVmcmVzaChjb25zdAogICAgIH0KIAogICAgIGF1dG8gZW1T
aXplID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgxLjAsIENTU1VuaXRUeXBlOjpDU1NfRU1T
KTsKLSAgICBhdXRvIGVtUGl4ZWxzID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
MS4wLCBXVEY6Om51bGxvcHQpKTsKKyAgICBhdXRvIGVtUGl4ZWxzID0gZW1TaXplLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICBhdXRvIGdseXBoU2Nh
bGUgPSAwLjY1ZiAqIGVtUGl4ZWxzIC8gZ2x5cGhTaXplLndpZHRoKCk7CiAgICAgZ2x5cGhTaXpl
ID0gZ2x5cGhTY2FsZSAqIGdseXBoU2l6ZTsKIApAQCAtMjU5MCw3ICsyNTkwLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydFN0eWxlKFJlbmRl
clN0eWxlJiBzdHlsZSwgY28KICAgICBjb25zdGV4cHIgaW50IHNlYXJjaEZpZWxkRGVjb3JhdGlv
bkVtU2l6ZSA9IDE7CiAgICAgY29uc3RleHByIGludCBzZWFyY2hGaWVsZERlY29yYXRpb25NYXJn
aW4gPSA0OwogCi0gICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSgm
c3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDEuMCwgV1RGOjpudWxsb3B0KTsKKyAg
ICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBlbVNp
emUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHNlYXJjaEZpZWxkRGVjb3JhdGlvbkVtU2l6
ZSwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwogICAgIGF1dG8gc2l6ZSA9IGVtU2l6ZS0+Y29tcHV0
ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCmluZGV4IDIwMmIzNDJhNzE4NWZmYWEwZWU4ZWQwNTZhZTgzMzk4MDc2NWVm
NzYuLjIzNjQxZmRmZDE3ZDZlMzBmMTE3YThkNDU4NmMyYjdjMzMwZGE3MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFJl
bmRlclZpZXc6OmxheW91dCgpCiAgICAgaWYgKCFuZWVkc0xheW91dCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIHsgfSwg
ZmFsc2UsIG1fcGFnZUxvZ2ljYWxTaXplLnZhbHVlT3IoTGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwg
bV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBz
dGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9wYWdlTG9naWNhbFNpemUudmFsdWVfb3Io
TGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwogCiAg
ICAgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4IDIyNGVkN2NiMzEw
Y2VjN2FkNzYyZDdmZjYwNjU5ODM1ZWQ4NjViODAuLjEyMzY2Zjg1ZmU4NmU4NmM0YzdmYzM4MWU3
N2Y0MDBiZjgyYjQ2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgVGV4dFJ1bjsKIGNsYXNz
IFRleHREZWNvcmF0aW9uUGFpbnRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFN0eWxlczsKLSAg
ICBUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHRE
ZWNvcmF0aW9uPiBkZWNvcmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExp
bmUsIGNvbnN0IEZvbnRDYXNjYWRlJiwgT3B0aW9uYWw8U3R5bGVzPiA9IFdURjo6bnVsbG9wdCk7
CisgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbnMsIGNvbnN0IFJlbmRlclRleHQmLCBib29sIGlzRmly
c3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYsIE9wdGlvbmFsPFN0eWxlcz4gPSBzdGQ6Om51bGxv
cHQpOwogICAgIAogICAgIHZvaWQgc2V0SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94
KiBpbmxpbmVUZXh0Qm94KSB7IG1faW5saW5lVGV4dEJveCA9IGlubGluZVRleHRCb3g7IH0KICAg
ICB2b2lkIHNldElzSG9yaXpvbnRhbChib29sIGlzSG9yaXpvbnRhbCkgeyBtX2lzSG9yaXpvbnRh
bCA9IGlzSG9yaXpvbnRhbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCAxOGU4NGJiNDVjYmMxMWM1MGE5YTIw
ZThiMWYyMmI5NzIwZjFkNGVjLi5jZDk2YmQ1YTdjY2QxZGI2OWI4NDlkNjA3MGNmMTIwZjVmZjNj
NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0
aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmCiAgICAgaWYgKGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJv
eGVzKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgp
LnZhbHVlT3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJz
dExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOworICAgIHJldHVybiBmaXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlX29yKFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2Vs
aW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpKTsKIH0KIAog
I2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCAzYTYxZmZlZjEzYWY1YTdj
OTllNmQ0NTA5OThmNjFiNWIyNjE0YWVmLi4zNWY2N2E5MjhjZTUyNDE2YWQwZWRhMjU5YzdkYmY5
NWVmOWJkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oCkBAIC04Miw3ICs4Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBMYXlvdXRVbml0IGFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAg
ICAgewotICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNo
aWxkLmxvZ2ljYWxIZWlnaHQoKS50b0ludCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0
TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoY2hpbGQubG9naWNhbEhlaWdodCgpLnRvSW50KCkpOwog
ICAgIH0KIAogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApp
bmRleCAwODE0ZTUyMzFhMjMwYzRjNzZiZDhjY2IyYjM4MzE4N2JkN2I5NzBkLi40YjAxZWMyMjZh
ZTM2Y2M1OTU0OGNmOTI3Y2U4ZmMxNmEzZWMxYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTczLDcg
KzczLDcgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+
IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAvLyBUaGUgZmlyc3QgY2hpbGQg
aXMgdGhlIGJhc2UuCiAgICAgYXV0byBiYXNlID0gZmlyc3RDaGlsZEJveCgpOwogICAgIGlmICgh
YmFzZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFJlZmVyZW5jZUNoaWxkcmVuIHJlZmVyZW5jZTsKICAgICByZWZlcmVu
Y2UuYmFzZSA9IGJhc2U7CkBAIC05NCw3ICs5NCw3IEBAIE9wdGlvbmFsPFJlbmRlck1hdGhNTFNj
cmlwdHM6OlJlZmVyZW5jZUNoaWxkcmVuPiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFu
CiAgICAgICAgIC8vIDxtb3Zlcj4gYmFzZSBvdmVyc2NyaXB0IDwvbW92ZXI+CiAgICAgICAgIGF1
dG8gc2NyaXB0ID0gYmFzZS0+bmV4dFNpYmxpbmdCb3goKTsKICAgICAgICAgaWYgKCFzY3JpcHQg
fHwgaXNQcmVzY3JpcHREZWxpbWl0ZXIoKnNjcmlwdCkgfHwgc2NyaXB0LT5uZXh0U2libGluZ0Jv
eCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlZmVyZW5jZS5maXJzdFBvc3RTY3JpcHQgPSBzY3Jp
cHQ7CiAgICAgICAgIHJldHVybiByZWZlcmVuY2U7CiAgICAgfQpAQCAtMTA2LDEwICsxMDYsMTAg
QEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hpbGRyZW4+IFJlbmRl
ck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAgLy8gPG11bmRlcm92ZXI+IGJhc2Ug
c3Vic2NyaXB0IHN1cGVyc2NyaXB0IDwvbXVuZGVyb3Zlcj4KICAgICAgICAgYXV0byBzdWJTY3Jp
cHQgPSBiYXNlLT5uZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXN1YlNjcmlwdCB8fCBp
c1ByZXNjcmlwdERlbGltaXRlcigqc3ViU2NyaXB0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IHN1cGVyU2NyaXB0ID0gc3ViU2NyaXB0LT5uZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAo
IXN1cGVyU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzdXBlclNjcmlwdCkgfHwgc3Vw
ZXJTY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVmZXJlbmNl
LmZpcnN0UG9zdFNjcmlwdCA9IHN1YlNjcmlwdDsKICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZTsK
ICAgICB9CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBPcHRpb25hbDxSZW5kZXJNYXRoTUxTY3JpcHRz
OjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFsaWRhdGVBbgogICAg
ICAgICAgICAgaWYgKGlzUHJlc2NyaXB0RGVsaW1pdGVyKCpzY3JpcHQpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBhIDxtcHJlc2NyaXB0cy8+LiBMZXQncyBjaGVjayAyYSkgYW5kIDJj
KS4KICAgICAgICAgICAgICAgICBpZiAoIW51bWJlck9mU2NyaXB0SXNFdmVuIHx8IHJlZmVyZW5j
ZS5maXJzdFByZVNjcmlwdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
ICAgICByZWZlcmVuY2UuZmlyc3RQcmVTY3JpcHQgPSBzY3JpcHQtPm5leHRTaWJsaW5nQm94KCk7
IC8vIFdlIGRvIDEpLgogICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5wcmVzY3JpcHREZWxpbWl0
ZXIgPSBzY3JpcHQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBudW1iZXJPZlNjcmlwdElzRXZlbiA9ICFudW1iZXJPZlNjcmlwdElzRXZlbjsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBPcHRpb25h
bDxSZWZlcmVuY2VDaGlsZHJlbj4ocmVmZXJlbmNlKSA6IFdURjo6bnVsbG9wdDsgLy8gV2UgdmVy
aWZ5IDJiKS4KKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2NyaXB0SXNFdmVuID8gT3B0aW9uYWw8
UmVmZXJlbmNlQ2hpbGRyZW4+KHJlZmVyZW5jZSkgOiBzdGQ6Om51bGxvcHQ7IC8vIFdlIHZlcmlm
eSAyYikuCiAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogTGF5b3V0
VW5pdCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpzcGFjZUFmdGVyU2NyaXB0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5k
ZXggZDk5ZjUzZTZkYzA0MmM1YTFlM2E1ZTRkODU2MmUwMWI2MTFkZmVkNi4uNWY5Y2ZiM2M5Nzg4
ZGQ2YTNhYzE0MDYxNDFkZWIzNDQwNTNiZDE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKQEAgLTUxOSw3ICs1MTks
NyBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVNYXRoVmFyaWFudEdseXBoKCkKIHsK
ICAgICBBU1NFUlQobV9tYXRoVmFyaWFudEdseXBoRGlydHkpOwogCi0gICAgbV9tYXRoVmFyaWFu
dENvZGVQb2ludCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX21hdGhWYXJpYW50Q29kZVBvaW50ID0g
c3RkOjpudWxsb3B0OwogICAgIG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5ID0gZmFsc2U7CiAKICAg
ICAvLyBFYXJseSByZXR1cm4gaWYgdGhlIHRva2VuIGVsZW1lbnQgY29udGFpbnMgUmVuZGVyRWxl
bWVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmgKaW5kZXggY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1M2EwMGZmYTc4YWVhMmI1
YS4uOGNiMjFlZmVmY2QxMzg1NjhkZDVhZDUwMTM2ZmYyYzRkOTliODQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAt
NjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgICAgICBtX21hdGhWYXJpYW50R2x5cGhEaXJ0eSA9
IHRydWU7CiAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAg
IH0KLSAgICBPcHRpb25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgV1RGOjpu
dWxsb3B0IH07CisgICAgT3B0aW9uYWw8VUNoYXIzMj4gbV9tYXRoVmFyaWFudENvZGVQb2ludCB7
IHN0ZDo6bnVsbG9wdCB9OwogICAgIGJvb2wgbV9tYXRoVmFyaWFudElzTWlycm9yZWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9tYXRoVmFyaWFudEdseXBoRGlydHkgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKaW5kZXgg
N2UyYjBiOTQ0ZjU2ZWUzYmZjNzY5NDVjMGIzNWUzYTk1NGFmNWRlMi4uZDIwNDE4OTg2NzE5M2M5
ZTQxNWQ3OTVlMTJlY2I0MGMxOTA0ZTQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgaW50IEdyaWRQb3Np
dGlvbjo6c3BhblBvc2l0aW9uKCkgY29uc3QKIAogaW50IEdyaWRQb3NpdGlvbjo6bWF4KCkKIHsK
LSAgICByZXR1cm4gZ01heFBvc2l0aW9uRm9yVGVzdGluZy52YWx1ZU9yKGtHcmlkTWF4UG9zaXRp
b24pOworICAgIHJldHVybiBnTWF4UG9zaXRpb25Gb3JUZXN0aW5nLnZhbHVlX29yKGtHcmlkTWF4
UG9zaXRpb24pOwogfQogCiBpbnQgR3JpZFBvc2l0aW9uOjptaW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCBkZmU0YTI2MzY1NzNk
YWNhNjY3OGIzYWIxZGRmYmFkMTIyMjQ5N2ZlLi4xNDEzNzllZGE0ZjBmYTZkNmUzY2RmZmZmN2Fi
OTE0ZjViNDIwNTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmlu
ZVBpZWNlSW1hZ2UuaApAQCAtOTAsNyArOTAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Qm94U2lkZT4g
aW1hZ2VQaWVjZUhvcml6b250YWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiAgICAgaWYgKHBpZWNl
ID09IEJvdHRvbUxlZnRQaWVjZSB8fCBwaWVjZSA9PSBCb3R0b21QaWVjZSB8fCBwaWVjZSA9PSBC
b3R0b21SaWdodFBpZWNlKQogICAgICAgICByZXR1cm4gQm94U2lkZTo6Qm90dG9tOwogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxp
bmUgT3B0aW9uYWw8Qm94U2lkZT4gaW1hZ2VQaWVjZVZlcnRpY2FsU2lkZShJbWFnZVBpZWNlIHBp
ZWNlKQpAQCAtMTAxLDcgKzEwMSw3IEBAIGlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBp
ZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiAgICAgaWYgKHBpZWNlID09IFRvcFJp
Z2h0UGllY2UgfHwgcGllY2UgPT0gUmlnaHRQaWVjZSB8fCBwaWVjZSA9PSBCb3R0b21SaWdodFBp
ZWNlKQogICAgICAgICByZXR1cm4gQm94U2lkZTo6UmlnaHQ7CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNsYXNzIE5pbmVQaWVjZUlt
YWdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggN2M4N2NiMTNiYWUyZWJiYzY1MWUyMjg5YzhmYzc2ZGI3NjU3YTUxZS4uMWE3NTYzZDA2MWNl
ZWI5ZmEzNmRiNzVhODVkMzhmYjI5ODNjNDAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBUZXh0U2l6ZUFkanVzdG1lbnQgdGV4dFNpemVB
ZGp1c3QoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVz
dDsgfQogICAgIEF1dG9zaXplU3RhdHVzIGF1dG9zaXplU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc0lkZW1wb3RlbnRUZXh0QXV0b3NpemluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0
YXR1cz4gb3ZlcnJpZGVTdGF0dXMgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgaXNJ
ZGVtcG90ZW50VGV4dEF1dG9zaXppbmdDYW5kaWRhdGUoT3B0aW9uYWw8QXV0b3NpemVTdGF0dXM+
IG92ZXJyaWRlU3RhdHVzID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICNlbmRpZgogCiAgICAgVGV4
dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRT
ZWN1cml0eT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDdiZjQzOTZkNzdk
MmMwYTcxYzI5MTQzNGE2NjgxMTM2ZDY3YjY5M2QuLjQ0MGY0YTNkNTIzMmFhZDAwNjYwZDhiMjg0
MTcxMWYzZWFhY2EyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TaGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgU2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25z
dCBTaGFkb3dEYXRhJiBvKQogT3B0aW9uYWw8U2hhZG93RGF0YT4gU2hhZG93RGF0YTo6Y2xvbmUo
Y29uc3QgU2hhZG93RGF0YSogZGF0YSkKIHsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
ICpkYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
VGV4dFVuZGVybGluZU9mZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Rl
eHRVbmRlcmxpbmVPZmZzZXQuaAppbmRleCAzOGVkOTNjOTFmNmNiOWY2NGMyY2YyMGIzY2JhZjA0
MmI0YTgxYjZiLi44MDdlNGRiOGI3OTg4NDNmMzM3NTM2Zjk1ZTg4OGM3ODBhZjkyNDk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zm
c2V0LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgZmxvYXQgbGVuZ3RoT3IoZmxv
YXQgZGVmYXVsdFZhbHVlKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZh
bHVlT3IoZGVmYXVsdFZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoLnZhbHVlX29yKGRl
ZmF1bHRWYWx1ZSk7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRVbmRl
cmxpbmVPZmZzZXQmIG90aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IDQxZTI1ZjE3MmIyNjNhYjMzZjI3
MDFkYjQ1NDhhNDc4MDg1NjNkNmYuLjkwOTBmZjU4OTM0MTNjODcwYzYzZWU3NjVhODUzODMwODg1
YmJkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5l
cjo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dAogICAgIGlmICghcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChwb2ludEluUGFyZW50KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2Nh
bFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6
cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Rm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDZiMDNjZjExZDFmNDVjNWM2MWNlMWFjY2NmODBjNTMw
N2I1MDE5N2EuLjQzMGI0YjkwMzdjZmNiY2I2ZjdmM2FlNTljNWIxM2E3ZTFiZTQ5ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0CiAg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKHJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgaWYgKGFkanVz
dGVkUmVjdCkKICAgICAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoKmFkanVzdGVkUmVj
dCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdApAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxv
Y2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChw
b2ludEluUGFyZW50KTsKIAogICAgIC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMgbm90
IGNvbnRhaW5lZCBpbiBjbGlwcGVkIHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVyU3Vw
cG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMobG9j
YWxQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwCmluZGV4IDk1NzM3ODJjODg1N2YwOTNiYTNjOTYzMDkyZDY2NjQzZWEyNmQzMDguLjkx
MWI3ZjhjYThmNjViYzBhYTJjZWRkODNmZDUzOTI0NzkwMWVhYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMjEsNyArMjIxLDcg
QEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0
UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVz
dCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxl
KCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2li
bGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZp
bmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogICAgICAgICAg
ICAgCiAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgq
dGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKaW5kZXggY2Y0YTc0Y2I4OGE1MjllYmEyMGQ3NzYyNzk4OWU2NjJmY2M0MTk3Mi4uNDE5
YmYzNGY0ZDNkZGVmNzBlYTlhNDE1NWQwYTFlNThiMDIzMmZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cApAQCAtMjc0LDEwICsyNzQsMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6Omhp
dFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShv
YmplY3RCb3VuZGluZ0JveC5sb2NhdGlvbigpKTsKICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKG9i
amVjdEJvdW5kaW5nQm94LnNpemUoKSk7Ci0gICAgICAgIHBvaW50ID0gdHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgICAg
IHBvaW50ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVtZW50KCku
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRo
RWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUt
Pm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxk
Tm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggYWVjNjY5NWMyODc4ZWQyOGMz
ODk0OWNkOTBhNTgwZTk5NmEyYTZhZS4uNDE2MmI4MWZmM2JhYzhjYzFjMmQ4ZjQ4OTE4MTQ5OTFl
Yzc1NTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RF
ZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkgewot
ICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRlVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0
ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJSZXNv
bHV0aW9uKCkuaGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cigqcmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggOGEwOTc2
YzY5ZmUwNzgyMjFmOWJmNWIwNWI5NjAyMzJjZDI3MjJjYy4uNDdiMjVhMTBhNzI4NjQ5MGJiNTEx
ODU0YTFiYzQ3MmY4ZTI4YmE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKGNvbnN0
IEZsb2EKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkgewogICAgICAgICBpZiAo
Y29udGV4dC5vcHRpb25zLmNvbnRhaW5zKFZpc2libGVSZWN0Q29udGV4dE9wdGlvbjo6VXNlRWRn
ZUluY2x1c2l2ZUludGVyc2VjdGlvbikpIHsKICAgICAgICAgICAgIGlmICghYWRqdXN0ZWRSZWN0
LmVkZ2VJbmNsdXNpdmVJbnRlcnNlY3Qoc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGFkanVzdGVk
UmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgfQpA
QCAtMzk2LDcgKzM5Niw3IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gUmVuZGVyU1ZHUm9vdDo6Y29t
cHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hCiAKICAgICBpZiAoT3B0
aW9uYWw8TGF5b3V0UmVjdD4gcmVjdEluQ29udGFpbmVyID0gUmVuZGVyUmVwbGFjZWQ6OmNvbXB1
dGVWaXNpYmxlUmVjdEluQ29udGFpbmVyKGVuY2xvc2luZ0ludFJlY3QoYWRqdXN0ZWRSZWN0KSwg
Y29udGFpbmVyLCBjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgqcmVjdEluQ29u
dGFpbmVyKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGV4cGVjdHMgbG9jYWwgQ1NTIGJveCBjb29yZGluYXRl
cy4KQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgIC8vIFRl
c3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBp
cyBpbnNpZGUgdGhlIHZpc3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2li
bGUuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJl
Y3QtYmFzZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAg
ICBpZiAoY29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNo
b3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMo
cG9pbnRJblBhcmVudCkpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOwog
CiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxhc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBub2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMg
eWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAppbmRl
eCBiNTM5MTYyN2Q1ODA1YmQ2YmNlMzAwMDliOThhNmMwZDk0NzIzOTU3Li4zZGZkMjU3ZDI1NTRh
NjdjMDQwMWQ1NTk4ZjRiYTlkZTIyZWQ0NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
Um9vdCI7IH0KIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNo
b3VsZENvbXB1dGVQcmVmZXJyZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91
dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExh
eW91dFVuaXQ+IGVzdGltYXRlZFVzZWRXaWR0aCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmYTAzYWNiZGNk
N2ZkNmZhMjE2NjkzOWIzYmNmMGUwNzdmNTk5ZDA0Li4yYTM1MzA5ODdmNDBkYTk3ZGFlNDIxZDUw
ZWQzZDQ2NzI1N2Q1MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6
Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1CiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxUcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFy
ZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgq
dGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDg1MGVjZjcxZjYyMzI1
Y2FkMTZiNmQ5OGU5YWViMGUxNTdjODgxYzQuLmZiZTlmNGZhOWQ2ODBhMzdhZTZmZDM4Y2I2MjMx
ODQwZDliYTZiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcApAQCAtOTcsNyArOTcsNyBAQCBPcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJT
VkdUZXh0Ojpjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRSZQogICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gYWRqdXN0ZWRSZWN0ID0gY29tcHV0ZUZsb2F0VmlzaWJsZVJl
Y3RJbkNvbnRhaW5lcihyZWN0LCBjb250YWluZXIsIGNvbnRleHQpOwogICAgIGlmIChhZGp1c3Rl
ZFJlY3QpCiAgICAgICAgIHJldHVybiBlbmNsb3NpbmdMYXlvdXRSZWN0KCphZGp1c3RlZFJlY3Qp
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogT3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlRmxvYXRWaXNpYmxl
UmVjdEluQ29udGFpbmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogY29udGFpbmVyLCBWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QK
QEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgIGlmIChpc1Zp
c2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAgICAgIGlmICgoaGl0UnVs
ZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzU3Ryb2tlKCkgfHwgIWhp
dFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhpdFJ1bGVzLmNhbkhpdEZp
bGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVG
aWxsKSkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9p
bnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgICAgICAgICAgaWYgKCFTVkdSZW5k
ZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggMGM3ODUyMDRmZTY3MmI0N2Qz
ZjU1NDhmMzEzMzM1Nzg4MDkyYTQ1NC4uNzE4NTMyNmI2MGM0MzgyNmNlNTBmYzI1YzQ0ZDg4ZTVk
MGMyOGI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpj
bGlwQ29udGV4dFRvQ1NTQ2xpcHBpbmdBcmVhKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28K
ICAgICAgICAgcmVmZXJlbmNlQm94ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybS5tYXBSZWN0KHJl
ZmVyZW5jZUJveCk7CiAKICAgICAgICAgYXV0byBwYXRoID0gY2xpcFBhdGgucGF0aEZvclJlZmVy
ZW5jZVJlY3QocmVmZXJlbmNlQm94KTsKLSAgICAgICAgcGF0aC50cmFuc2Zvcm0obG9jYWxUb1Bh
cmVudFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAg
ICAgICBwYXRoLnRyYW5zZm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgocGF0
aCwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYjFkOTY4NzQ3MGVi
ZTc4NzM2NTEyMmQwNTg4MzIyZWM0MTRjZWViNi4uMzg3ODhiOGEyMzAyNzAwZTAxNWIzZTNkOGFh
NGUwMzIzYzU2NGUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEFmZmkKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgaW4g
dGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90IGJl
IHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8gYmUg
ZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNvbnRl
eHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRy
YW5zZm9ybSgpKSk7CisgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9J
bWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4
dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVyLmNwcAppbmRleCBhYTRl
OWM2ZGY3YTAyMjE5ZDU5Njc3NjJjNmE4ZGU0YWJjOGI3NWZlLi43YmJhYjc3MmNmN2VjYjQyODY2
OTZlY2Q3ZDQ0YTQ0YzFiYmVkM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAKQEAgLTEwMjIsNyArMTAyMiw3
IEBAIHZvaWQgUmVuZGVyVHJlZUJ1aWxkZXI6OnJlcG9ydFZpc3VhbGx5Tm9uRW1wdHlDb250ZW50
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVuCiAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IHJl
bmRlcmVyLnN0eWxlKCk7CiAgICAgICAgICAgICBpZiAoIXN0eWxlLndpZHRoKCkuaXNGaXhlZCgp
IHx8ICFzdHlsZS5oZWlnaHQoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICAgICAgICAgIHJldHVybiBtYWtlT3B0aW9uYWwoSW50U2l6ZSB7IHN0eWxlLndpZHRo
KCkuaW50VmFsdWUoKSwgc3R5bGUuaGVpZ2h0KCkuaW50VmFsdWUoKSB9KTsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoSW50U2l6ZSB7IHN0eWxlLndpZHRoKCkuaW50VmFs
dWUoKSwgc3R5bGUuaGVpZ2h0KCkuaW50VmFsdWUoKSB9KTsKICAgICAgICAgfTsKICAgICAgICAg
Ly8gU1ZHIGNvbnRlbnQgdGVuZHMgdG8gaGF2ZSBhIGZpeGVkIHNpemUgY29uc3RydWN0LiBIb3dl
dmVyIHRoaXMgaXMga25vd24gdG8gYmUgaW5hY2N1cmF0ZSBpbiBjZXJ0YWluIGNhc2VzIChib3gt
c2l6aW5nOiBib3JkZXItYm94KSBvciBlc3BlY2lhbGx5IHdoZW4gdGhlIHBhcmVudCBib3ggaXMg
b3ZlcnNpemVkLgogICAgICAgICBhdXRvIGNhbmRpZGF0ZVNpemUgPSBJbnRTaXplIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXIuY3BwCmluZGV4IDc1Y2I3MGViMzgzNjY2OWE2OTM0YzJjNmFjYmQyNDE4ZDJkZGRhYTIu
LjAyYmIyZmFjZTZlNjMxNDI2OWFmNTMxYjFhMTY0YWU2NTYzZjlhMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNw
cApAQCAtNzMsNyArNzMsNyBAQCBSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoQ29u
dGFpbmVyTm9kZSYgcm9vdCkKIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCiAgICAg
OiBlbGVtZW50KCZlbGVtZW50KQogICAgICwgdXBkYXRlcyh1cGRhdGVzKQotICAgICwgcmVuZGVy
VHJlZVBvc2l0aW9uKGVsZW1lbnQucmVuZGVyZXIoKSA/IG1ha2VPcHRpb25hbChSZW5kZXJUcmVl
UG9zaXRpb24oKmVsZW1lbnQucmVuZGVyZXIoKSkpIDogV1RGOjpudWxsb3B0KQorICAgICwgcmVu
ZGVyVHJlZVBvc2l0aW9uKGVsZW1lbnQucmVuZGVyZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChS
ZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1lbnQucmVuZGVyZXIoKSkpIDogc3RkOjpudWxsb3B0KQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaAppbmRl
eCA2Zjk0ZmYxYzZjODUzNzBiMTIzOGJhMTQwZGUwOGM1YTA1Y2EyYmFkLi4xYjMzMmZkYzAxMjYx
ODcwN2IwM2I3MDkxNzBjMGZmYWYyZDgxMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgU2NvcGVSdWxlU2V0
czsKIAogY2xhc3MgUHNldWRvRWxlbWVudFJlcXVlc3QgewogcHVibGljOgotICAgIFBzZXVkb0Vs
ZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBzZXVkb0lkLCBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0
YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IFdURjo6bnVsbG9wdCkKKyAgICBQc2V1ZG9FbGVtZW50UmVx
dWVzdChQc2V1ZG9JZCBwc2V1ZG9JZCwgT3B0aW9uYWw8U3R5bGVTY3JvbGxiYXJTdGF0ZT4gc2Ny
b2xsYmFyU3RhdGUgPSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogcHNldWRvSWQocHNldWRvSWQp
CiAgICAgICAgICwgc2Nyb2xsYmFyU3RhdGUoc2Nyb2xsYmFyU3RhdGUpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1J1bGVGZWF0dXJlLmgKaW5kZXggNDQxOGZmNmFiZTE4OTQzYjAwMzViZjJhODVmNTFj
ODU0Mzg5MzVlZS4uMWNkMmUzZmY1N2MwYmU5YWM3M2ZiMThhYzY1ZGI3OTU3NDkxNjRhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCkBAIC00MCw3ICs0MCw3IEBAIGVudW0gY2xhc3Mg
TWF0Y2hFbGVtZW50IDogdWludDhfdCB7IFN1YmplY3QsIFBhcmVudCwgQW5jZXN0b3IsIERpcmVj
dFNpYmxpbmcsIEluCiBjb25zdGV4cHIgdW5zaWduZWQgbWF0Y2hFbGVtZW50Q291bnQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oTWF0Y2hFbGVtZW50OjpIb3N0KSArIDE7CiAKIHN0cnVjdCBSdWxl
RmVhdHVyZSB7Ci0gICAgUnVsZUZlYXR1cmUoY29uc3QgUnVsZURhdGEmLCBPcHRpb25hbDxNYXRj
aEVsZW1lbnQ+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBSdWxlRmVhdHVyZShjb25zdCBSdWxlRGF0
YSYsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgUmVmUHRy
PGNvbnN0IFN0eWxlUnVsZT4gc3R5bGVSdWxlOwogICAgIHVpbnQxNl90IHNlbGVjdG9ySW5kZXg7
IC8vIEtlZXAgaW4gc3luYyB3aXRoIFJ1bGVEYXRhJ3Mgc2VsZWN0b3JJbmRleCBzaXplLgpAQCAt
NTAsNyArNTAsNyBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmUgewogc3RhdGljX2Fzc2VydChzaXplb2Yo
UnVsZUZlYXR1cmUpIDw9IDE2LCAiUnVsZUZlYXR1cmUgaXMgYSBmcnF1ZW50bHkgYWxvY2F0ZWQg
b2JqZWN0LiBLZWVwIGl0IHNtYWxsLiIpOwogCiBzdHJ1Y3QgUnVsZUZlYXR1cmVXaXRoSW52YWxp
ZGF0aW9uU2VsZWN0b3IgOiBwdWJsaWMgUnVsZUZlYXR1cmUgewotICAgIFJ1bGVGZWF0dXJlV2l0
aEludmFsaWRhdGlvblNlbGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBkYXRhLCBPcHRpb25hbDxNYXRj
aEVsZW1lbnQ+IG1hdGNoRWxlbWVudCA9IFdURjo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3Iq
IGludmFsaWRhdGlvblNlbGVjdG9yID0gbnVsbHB0cikKKyAgICBSdWxlRmVhdHVyZVdpdGhJbnZh
bGlkYXRpb25TZWxlY3Rvcihjb25zdCBSdWxlRGF0YSYgZGF0YSwgT3B0aW9uYWw8TWF0Y2hFbGVt
ZW50PiBtYXRjaEVsZW1lbnQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IENTU1NlbGVjdG9yKiBpbnZh
bGlkYXRpb25TZWxlY3RvciA9IG51bGxwdHIpCiAgICAgICAgIDogUnVsZUZlYXR1cmUoZGF0YSwg
V1RGTW92ZShtYXRjaEVsZW1lbnQpKQogICAgICAgICAsIGludmFsaWRhdGlvblNlbGVjdG9yKGlu
dmFsaWRhdGlvblNlbGVjdG9yKQogICAgIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA0ZmZmYTJiMDgxM2Y0YjlkNTZlNjMwYjdmMmZiMGUw
OTViMzk4NDA3Li4wOGVlODUyNmRlNjUxNGQwZTcxYzU1MzA3YjJjNjE3YTFmZGIwNDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtMTE0NCw3
ICsxMTQ0LDcgQEAgaW5saW5lIE9wdGlvbmFsPEdyaWRQb3NpdGlvbj4gQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEdyaWRQb3NpdGlvbihCdWlsZGVyU3RhdGUKICAgICBHcmlkUG9zaXRpb24gZ3Jp
ZFBvc2l0aW9uOwogICAgIGlmIChjcmVhdGVHcmlkUG9zaXRpb24odmFsdWUsIGdyaWRQb3NpdGlv
bikpCiAgICAgICAgIHJldHVybiBncmlkUG9zaXRpb247Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgR3JpZEF1dG9GbG93IEJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coQnVpbGRlclN0YXRlJiwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQpAQCAtMTIzMywxNCArMTIzMywxNCBAQCBpbmxpbmUgT3B0aW9uYWw8
ZmxvYXQ+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShCdWlsZGVyU3RhdGUm
IGJ1aWxkZQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICBy
ZXR1cm4gcGVyc3BlY3RpdmUgPCAwID8gT3B0aW9uYWw8ZmxvYXQ+KFdURjo6bnVsbG9wdCkgOiBP
cHRpb25hbDxmbG9hdD4ocGVyc3BlY3RpdmUpOworICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8IDAg
PyBPcHRpb25hbDxmbG9hdD4oc3RkOjpudWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJzcGVj
dGl2ZSk7CiB9CiAKIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRNYXJxdWVlSW5jcmVtZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTGVuZ3RoIGxlbmd0aCA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24g
fCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihidWlsZGVyU3RhdGUu
Y3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsK
ICAgICBpZiAobGVuZ3RoLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0K
IApAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+
IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zKEJ1aWwKICAgICBGaWx0
ZXJPcGVyYXRpb25zIG9wZXJhdGlvbnM7CiAgICAgaWYgKGJ1aWxkZXJTdGF0ZS5jcmVhdGVGaWx0
ZXJPcGVyYXRpb25zKHZhbHVlLCBvcGVyYXRpb25zKSkKICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
bnM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBpbmxpbmUgRm9udEZlYXR1cmVTZXR0aW5ncyBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
Rm9udEZlYXR1cmVTZXR0aW5ncyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBpbmxpbmUgRm9udFNlbGVjdGlvblZhbHVlIEJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3RyZXRjaEZyb21WYWx1ZShjb25zdCBDUwogICAgIHJldHVy
biBub3JtYWxTdHJldGNoVmFsdWUoKTsKIH0KIAotLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRv
IHBhcnNlZCBhbmQgdmFsaWQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBXVEY6Om51bGxvcHQgaWYg
dGhlIGlucHV0IHdhcyAibm9ybWFsIi4KKy8vIFRoZSBpbnB1dCB2YWx1ZSBuZWVkcyB0byBwYXJz
ZWQgYW5kIHZhbGlkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgc3RkOjpudWxsb3B0IGlmIHRoZSBp
bnB1dCB3YXMgIm5vcm1hbCIuCiBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoaXM8Q1NTRm9udFN0eWxlVmFsdWU+KHZhbHVlKSk7CkBA
IC0xMzEzLDcgKzEzMTMsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKAogCiAgICAgYXV0byB2
YWx1ZUlEID0gZm9udFN0eWxlVmFsdWUuZm9udFN0eWxlVmFsdWUtPnZhbHVlSUQoKTsKICAgICBp
ZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUl0YWxpYykKICAgICAgICAgcmV0dXJuIGl0YWxpY1ZhbHVlKCk7CiAgICAgQVNTRVJUKHZh
bHVlSUQgPT0gQ1NTVmFsdWVPYmxpcXVlKTsKQEAgLTE1NTgsNyArMTU1OCw3IEBAIGlubGluZSBP
cHRpb25hbDxMZW5ndGg+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlCiAKICAgICAvLyBGSVhNRTogVGhlIHBhcnNlciBzaG91bGQgb25seSBl
bWl0IHRoZSBhYm92ZSB0eXBlcywgc28gdGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZC4gV2Ug
c2hvdWxkIGNoYW5nZSB0aGUKICAgICAvLyB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJu
IGp1c3QgYSBMZW5ndGggKGFuZCBub3QgYW4gT3B0aW9uYWwpLgotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEZvbnRTeW50aGVz
aXMgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMoQnVpbGRlclN0YXRlJiwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
dXN0b20uaAppbmRleCA3ZmY2YzYyZGZlMzNmNzA0NTRhNzBiNzI2Y2UzNDkyOGVlOThiOWE1Li43
ZjAxZjljYmE1MDljM2M3ZDlhOGU0Yzc5MTc2NzQwMTQzZThkNTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMTM0NCw5ICsxMzQ0LDkgQEAgaW5saW5l
IHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIoQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIENTU1ZhbHUKICAgICBDb3VudGVyRGlyZWN0aXZlTWFwJiBtYXAgPSBidWlsZGVy
U3RhdGUuc3R5bGUoKS5hY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOwogICAgIGZvciAoYXV0byYg
a2V5VmFsdWUgOiBtYXApIHsKICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkK
LSAgICAgICAgICAgIGtleVZhbHVlLnZhbHVlLnJlc2V0VmFsdWUgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBrZXlWYWx1ZS52YWx1ZS5yZXNldFZhbHVlID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBrZXlWYWx1ZS52YWx1ZS5pbmNyZW1lbnRWYWx1ZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlID0g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChzZXRDb3VudGVySW5jcmVtZW50VG9Ob25l
KQpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvdW50ZXIoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAg
aWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRpcmVjdGl2ZXMucmVz
ZXRWYWx1ZSA9IHZhbHVlOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkaXJlY3RpdmVzLmlu
Y3JlbWVudFZhbHVlID0gc2F0dXJhdGVkU3VtPGludD4oZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1
ZS52YWx1ZU9yKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBkaXJlY3RpdmVzLmluY3JlbWVudFZh
bHVlID0gc2F0dXJhdGVkU3VtPGludD4oZGlyZWN0aXZlcy5pbmNyZW1lbnRWYWx1ZS52YWx1ZV9v
cigwKSwgdmFsdWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JGb250UmF3LmNwcAppbmRleCA0YjNlZWEzMjY0MWI1MzA3YjhjODI3ZDg5NTM1
NDIwNzU1MzRlM2RjLi40MzY4NzA5MjU0NzA1ZWEwOWMyOWJmOWFlMjlmYmJlZTkxMjE3ZGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JGb250UmF3LmNwcApA
QCAtOTAsNyArOTAsNyBAQCBPcHRpb25hbDxGb250Q2FzY2FkZT4gcmVzb2x2ZUZvckZvbnRSYXco
Y29uc3QgRm9udFJhdyYgZm9udFJhdywgRm9udENhc2NhZGVEZXNjcgogICAgIH0KIAogICAgIGlm
IChmYW1pbGllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlsaWVz
KGZhbWlsaWVzKTsKIAogICAgIGlmICh1c2VGaXhlZERlZmF1bHRTaXplKGZvbnREZXNjcmlwdGlv
bikgIT0gb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCmluZGV4IGYxNjc5YmMyNDYyYmQ3YWIyYzZhMWJk
YTEzOGJkZjhhZTE3MjQzNzIuLmU3ZjYyNDM2NGI2NmI3M2JjM2Y2NjJlNTY2MzVjM2RmYTFkMmY5
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcApAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29u
c3QKICAgICBtX2F0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9w
c2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAKLSAgICBtX2NhY2hlZEhh
c0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9GaXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZWFibGUuY3BwCmluZGV4IGZmYjhmNzMxZTIxZWNmN2U5N2M2ZjJjMjdhYTYzZjQyYmJiYzNlYjMu
LmI2NDU4MzhhNTA5Yzk0OTgyNWM2OGUzOWZiMTZhZTQwZWYyMTIyYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVhYmxlLmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiBzdHls
ZWFiCiAgICAgICAgICAgICAvLyBJZiBhIHRyYW5zaXRpb24gaGFzIG5vdCB5ZXQgc3RhcnRlZCBv
ciBzdGFydGVkIHdoZW4gYW5pbWF0aW9ucyB3ZXJlIGxhc3QgdXBkYXRlZCwgdXNlIHRoZSB0aW1l
bGluZSB0aW1lIGF0IGl0cyBjcmVhdGlvbgogICAgICAgICAgICAgLy8gYXMgaXRzIHN0YXJ0IHRp
bWUgdG8gZW5zdXJlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGEgc3R5bGUgd2l0aCBwcm9ncmVzcyA+
IDAuCiAgICAgICAgICAgICBib29sIHNob3VsZFVzZVRpbWVsaW5lVGltZUF0Q3JlYXRpb24gPSBp
czxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pICYmICghYW5pbWF0aW9uLT5zdGFydFRpbWUoKSB8
fCAqYW5pbWF0aW9uLT5zdGFydFRpbWUoKSA9PSBzdHlsZWFibGUuZWxlbWVudC5kb2N1bWVudCgp
LnRpbWVsaW5lKCkuY3VycmVudFRpbWUoKSk7Ci0gICAgICAgICAgICBhbmltYXRpb24tPnJlc29s
dmUoYW5pbWF0ZWRTdHlsZSwgbnVsbHB0ciwgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlv
biA/IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KCphbmltYXRpb24pLnRpbWVsaW5lVGltZUF0Q3Jl
YXRpb24oKSA6IFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBhbmltYXRpb24tPnJlc29sdmUo
YW5pbWF0ZWRTdHlsZSwgbnVsbHB0ciwgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA/
IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KCphbmltYXRpb24pLnRpbWVsaW5lVGltZUF0Q3JlYXRp
b24oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0ZWRTdHlsZTsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDE3ZmQ2MTc5NGRjMzNj
YTU0MmI4MmQ4Y2JjYzc1NTVjMWJkZmIxOGYuLjY0YzExYTk1NmUyZDY5YTc5N2ZjMGJlNjA5MDVi
MTJkM2VlZTdmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC02MSw3ICs2MSw3IEBA
IHN0cnVjdCBTdHlsZWFibGUgewogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBy
ZW5kZXJlci5lbGVtZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZnJvbUVsZW1lbnQoKmVsZW1l
bnQpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZWFibGUmIG90
aGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHAKaW5kZXggMGEyZGIxZjJjNWViZWJjNWQ3ZGIxZGEwYTliYTQ5OTZkMTU0NWUzZS4uZGU0
MThkMzFkM2RjOTQxOGU5Yjc0ZWRlMDBhNzYwOWI3M2IwMWEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xNjAsMjUgKzE2MCwyNSBA
QCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdG9wQW5pbWF0aW9uKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpCiAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0
ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0
cmluZykKIHsKLSAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBwYXJzZVBvaW50KHRvQXRF
bmRPZkR1cmF0aW9uU3RyaW5nKS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3RvUG9p
bnRBdEVuZE9mRHVyYXRpb24gPSBwYXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKS52
YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7Ci0gICAgbV90b1BvaW50
QXRFbmRPZkR1cmF0aW9uID0gV1RGOjpudWxsb3B0OwotICAgIG1fZnJvbVBvaW50ID0gcGFyc2VQ
b2ludChmcm9tU3RyaW5nKS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKLSAgICBtX3RvUG9pbnQg
PSBwYXJzZVBvaW50KHRvU3RyaW5nKS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3Rv
UG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9mcm9tUG9pbnQgPSBw
YXJzZVBvaW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBtX3Rv
UG9pbnQgPSBwYXJzZVBvaW50KHRvU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCiBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJ5U3RyaW5nKQogewotICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKGFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAhaXNBZGRpdGl2
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50
KGZyb21TdHJpbmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOwotICAgIGF1dG8gYnlQb2ludCA9
IHBhcnNlUG9pbnQoYnlTdHJpbmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fZnJv
bVBvaW50ID0gcGFyc2VQb2ludChmcm9tU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7
CisgICAgYXV0byBieVBvaW50ID0gcGFyc2VQb2ludChieVN0cmluZykudmFsdWVfb3IoRmxvYXRQ
b2ludCB7IH0pOwogICAgIG1fdG9Qb2ludCA9IEZsb2F0UG9pbnQobV9mcm9tUG9pbnQueCgpICsg
YnlQb2ludC54KCksIG1fZnJvbVBvaW50LnkoKSArIGJ5UG9pbnQueSgpKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuY3BwCmluZGV4IDUxY2E0MmVhYTEwMDM5NzhlZDc0NDNmOGI3YjYwODE3Y2Q3NjgwNmUu
LmQxNTNkMTRiYjg2YWFkNmI1ZDA5YjIwMWQzYWE1ZmE1MzRlMjE5NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBib29sIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpoYXNWYWxpZEF0dHJpYnV0
ZVR5cGUoKSBjb25zdAogdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIG1fdHlw
ZSA9IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlwZSh2YWx1ZSkudmFsdWVPcihT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKTsKKyAgICAgICAgbV90eXBl
ID0gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKHZhbHVlKS52YWx1ZV9vcihT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKTsKICAgICAgICAgaWYgKG1f
dHlwZSA9PSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVgpCiAgICAgICAg
ICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5j
cHAKaW5kZXggOGIxZWRhODlmMmQ0NjBjYzEwM2Y5ZTE3MTQ3ZDc4MDc2NTk0ZWEyZS4uYjEzYzE5
MjFkOGY5MTkwYWYxY2UyZDAxMmM0YTU0YjE5NWM3YmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtODIsNyArODIsNyBAQCBmYWlsOgogc3RhdGlj
IE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVzKFN0cmluZ1ZpZXcg
c3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJl
YWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFsmXShhdXRvIGJ1ZmZlcikgLT4gT3B0aW9u
YWw8VmVjdG9yPFVuaXRCZXppZXI+PiB7CiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhi
dWZmZXIpOwpAQCAtOTQsMTkgKzk0LDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VW5pdEJl
emllcj4+IHBhcnNlS2V5U3BsaW5lcyhTdHJpbmdWaWV3IHN0cmluZykKICAgICAgICAgICAgIGRl
bGltUGFyc2VkID0gZmFsc2U7CiAgICAgICAgICAgICBhdXRvIHBvc0EgPSBwYXJzZU51bWJlcihi
dWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwb3NBKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAgICAgYXV0byBwb3NCID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgICAgIGlm
ICghcG9zQikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGF1dG8gcG9zQyA9IHBh
cnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoIXBvc0MpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgICAgICBhdXRvIHBvc0QgPSBwYXJzZU51bWJlcihidWZmZXIsIFN1ZmZp
eFNraXBwaW5nUG9saWN5OjpEb250U2tpcCk7CiAgICAgICAgICAgICBpZiAoIXBvc0QpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVy
KTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8VW5pdEJlemll
cj4+IHBhcnNlS2V5U3BsaW5lcyhTdHJpbmdWaWV3IHN0cmluZykKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghKGJ1ZmZlci5hdEVuZCgpICYmICFkZWxpbVBhcnNlZCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CmluZGV4IGVmZjQ0M2M0MDZmNjBjNzBiMGNhMGFmMDI4MzRhYTliMzA2Njc1MWQuLjdkMmI5ZGE3
ZTQwMzE4MjgwMGY0NTkwNjhjZjEwOTNjMTdkOTYzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFNWR0VsZW1lbnQ6
OmdldEJvdW5kaW5nQm94KCkgY29uc3QKICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5vYmplY3RCb3VuZGlu
Z0JveCgpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIFZlY3RvcjxSZWY8U1ZHRWxlbWVudD4+IFNWR0VsZW1lbnQ6OnJlZmVy
ZW5jaW5nRWxlbWVudHMoKSBjb25zdApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgU1ZHRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsCiAKICAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OnRhYmluZGV4QXR0cikgewog
ICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2V0VGFiSW5kZXhFeHBs
aWNpdGx5KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHko
c3RkOjpudWxsb3B0KTsKICAgICAgICAgZWxzZSBpZiAoYXV0byBvcHRpb25hbFRhYkluZGV4ID0g
cGFyc2VIVE1MSW50ZWdlcih2YWx1ZSkpCiAgICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0
bHkob3B0aW9uYWxUYWJJbmRleC52YWx1ZSgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggZWFj
OGVmODk5MTgyNjBiMDU2YzkxNmE4MTJiNGFiYmNkNTdmMWM0OS4uZjc1MDU4MTVkZWNhYmI0ZWEz
NGI0MzViNDdlYTVhODBjNmEyNmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xMDYsMTIgKzEwNiwxMiBAQCB2b2lkIFNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdAogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0YXJn
ZXRYQXR0cikgewotICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5hbChwYXJzZUlu
dGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZU9yKDApKTsKKyAgICAgICAgbV90YXJnZXRYLT5z
ZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVfb3Io
MCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnRhcmdldFlBdHRyKSB7Ci0gICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVybmFsKHBh
cnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlT3IoMCkpOworICAgICAgICBtX3Rhcmdl
dFktPnNldEJhc2VWYWxJbnRlcm5hbChwYXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1
ZV9vcigwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAppbmRleCBjMzI0MjQzYWQ3YTQ4YzkwMjg5OGVh
OThlZGNjY2VlMzA1ZGVkMmZlLi4xMTU2MTExOWQ4M2UzZmM3ODhhNDJiMTQ4NjdjNjU2NDEyMzM0
YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvCiAgICAgfQogCiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7Ci0gICAgICAgIG1fbnVtT2N0
YXZlcy0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZh
bHVlT3IoMCkpOworICAgICAgICBtX251bU9jdGF2ZXMtPnNldEJhc2VWYWxJbnRlcm5hbChwYXJz
ZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKaW5kZXggMzc3OGI0
Zjk0MDU2YTBhY2ZlNDQwNWNmNGMxYzI1ZWM1NzlkMDlkYi4uZTYxZTYxYWZlZWRhYTNhNTZhNDc1
YmNhNTk1MWIwY2FlMDBmMDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
dFRvVmlld0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHAKQEAgLTExOCwzMCArMTE4LDMwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCCiAKICAgICAg
ICAgaWYgKCF4IHx8ICF5IHx8ICF3aWR0aCB8fCAhaGVpZ2h0KSB7CiAgICAgICAgICAgICBkb2N1
bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0V2FybmluZyhtYWtlU3RyaW5nKCJQcm9i
bGVtIHBhcnNpbmcgdmlld0JveD1cIiIsIHN0cmluZ1RvUGFyc2UsICJcIiIpKTsKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3aWR0aCBpcyBwb3NpdGl2ZS4K
ICAgICAgICAgaWYgKCp3aWR0aCA8IDAuMCkgewogICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94
IHdpZHRoIGlzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgaGVpZ2h0IGlzIHBvc2l0aXZlLgogICAgICAgICBpZiAoKmhlaWdodCA8
IDAuMCkgewogICAgICAgICAgICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9y
dEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBWaWV3Qm94IGhlaWdodCBpcyBub3QgYWxsb3dl
ZCIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb3RoaW5nIHNob3VsZCBj
b21lIGFmdGVyIHRoZSBsYXN0LCBmb3VydGggbnVtYmVyLgogICAgICAgICBza2lwT3B0aW9uYWxT
VkdTcGFjZXMoYnVmZmVyKTsKICAgICAgICAgaWYgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVtYWlu
aW5nKCkpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZXBv
cnRXYXJuaW5nKG1ha2VTdHJpbmcoIlByb2JsZW0gcGFyc2luZyB2aWV3Qm94PVwiIiwgc3RyaW5n
VG9QYXJzZSwgIlwiIikpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gRmxvYXRSZWN0IHsgeC52YWx1ZU9yKDApLCB5LnZhbHVlT3IoMCksIHdpZHRoLnZhbHVlT3Io
MCksIGhlaWdodC52YWx1ZU9yKDApIH07CisgICAgcmV0dXJuIEZsb2F0UmVjdCB7IHgudmFsdWVf
b3IoMCksIHkudmFsdWVfb3IoMCksIHdpZHRoLnZhbHVlX29yKDApLCBoZWlnaHQudmFsdWVfb3Io
MCkgfTsKIH0KIAogQWZmaW5lVHJhbnNmb3JtIFNWR0ZpdFRvVmlld0JveDo6dmlld0JveFRvVmll
d1RyYW5zZm9ybShjb25zdCBGbG9hdFJlY3QmIHZpZXdCb3hSZWN0LCBjb25zdCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8sIGZsb2F0IHZpZXdXaWR0aCwg
ZmxvYXQgdmlld0hlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5j
cHAKaW5kZXggMTdmN2UwNzc5YmNjMzEyN2FjZDRmYzc0YWY2ZTQ0Mjg2Njg0MTEzYy4uN2VkNjNj
MmRmMjBhNjVmNDgzNjEzNGYzNzRhZjgzNDQ5ZmQ4MGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoUmVmRWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBTVkdHbHlwaFJl
ZkVsZW1lbnQ6Omhhc1ZhbGlkR2x5cGhFbGVtZW50KFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdAog
CiBzdGF0aWMgZmxvYXQgcGFyc2VGbG9hdChjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gcGFyc2VOdW1iZXIodmFsdWUpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHBhcnNl
TnVtYmVyKHZhbHVlKS52YWx1ZV9vcigwKTsKIH0KIAogdm9pZCBTVkdHbHlwaFJlZkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcAppbmRleCBlNGVi
ZmZiYzVkN2VkNmM2ZjgwZTllZTEwM2Q5MDQ2YzhlMDlmMTBlLi42ODA3ZjZiYjRiMmQ4NDQwMDE1
NDkwZGRlZTNlOWMxZjRlZDUwODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SEtlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50
LmNwcApAQCAtNDksMzAgKzQ5LDMwIEBAIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBTVkdIS2Vy
bkVsZW1lbnQ6OmJ1aWxkSG9yaXpvbnRhbEtlcm5pbmdQYWlyKCkgY29uc3QKICAgICBhdXRvJiB1
MSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnUxQXR0cik7CiAg
ICAgYXV0byYgZzEgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpn
MUF0dHIpOwogICAgIGlmICh1MS5pc0VtcHR5KCkgJiYgZzEuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byYgdTIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp1MkF0
dHIpOwogICAgIGF1dG8mIGcyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdO
YW1lczo6ZzJBdHRyKTsKICAgICBpZiAodTIuaXNFbXB0eSgpICYmIGcyLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gZ2x5cGhOYW1lMSA9IHBhcnNlR2x5cGhOYW1lKGcxKTsKICAgICBpZiAoIWds
eXBoTmFtZTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgYXV0byBnbHlwaE5hbWUyID0gcGFyc2VHbHlwaE5hbWUoZzIpOwog
ICAgIGlmICghZ2x5cGhOYW1lMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHVuaWNvZGVTdHJpbmcxID0gcGFyc2VL
ZXJuaW5nVW5pY29kZVN0cmluZyh1MSk7CiAgICAgaWYgKCF1bmljb2RlU3RyaW5nMSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIHVuaWNvZGVTdHJpbmcyID0gcGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyh1Mik7CiAg
ICAgaWYgKCF1bmljb2RlU3RyaW5nMikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBh
dXRvIGtlcm5pbmcgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpr
QXR0cikuc3RyaW5nKCkudG9GbG9hdCgmb2spOwogICAgIGlmICghb2spCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gU1ZHS2VybmluZ1BhaXIgewogICAgICAgICBXVEZNb3ZlKHVuaWNvZGVTdHJpbmcxLT5maXJz
dCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAppbmRleCBkYzgyMDJkNDY3MzJi
OTlmZDJjYTI3ODE1OGNlYWM2YjFjYjU3MzI0Li43NzRmNDNlZGQ0YTFlNjQ1ZGRhNjM0MDg1MzIz
YTc3MmFhZDIyZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCBPcHRpb25hbDxTVkdMZW5ndGhWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIFN0cgogewogICAgIFNWR0xlbmd0aFZh
bHVlIGxlbmd0aCB7IGxlbmd0aE1vZGUgfTsKICAgICBpZiAobGVuZ3RoLnNldFZhbHVlQXNTdHJp
bmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGxlbmd0aDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAppbmRleCBiMjBl
M2U3MTA4ZTlkODc2YTQxNmM4ZWIyYmJmMTEyNmI1MjQ0ZjFhLi5lNTQ2NTM1ZmY4MGI0ZDFmMWU4
NjNlZmQwYzhiMmM0MTdlOWFlNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGFyc2VyVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRp
bGl0aWVzLmNwcApAQCAtNjIsNyArNjIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBPcHRpb25hbDxGbAogICAg
IH0gCiAgICAgCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpIHx8ICghaXNBU0NJSURpZ2l0KCpidWZm
ZXIpICYmICpidWZmZXIgIT0gJy4nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIHJlYWQgdGhlIGludGVnZXIgcGFy
dCwgYnVpbGQgcmlnaHQtdG8tbGVmdAogICAgIGF1dG8gcHRyU3RhcnRJbnRQYXJ0ID0gYnVmZmVy
LnBvc2l0aW9uKCk7CkBAIC03OSw3ICs3OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAg
ICAgICAgIH0KICAgICAgICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhpcyBvdmVyZmxvd3MuCiAg
ICAgICAgIGlmICghaXNWYWxpZFJhbmdlKGludGVnZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgLy8gcmVhZCB0aGUgZGVjaW1hbHMKQEAgLTg4LDcgKzg4LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0
aW9uYWw8RmwKICAgICAgICAgCiAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgYSBsZWFzdCBvbmUg
ZGlnaXQgZm9sbG93aW5nIHRoZSAuCiAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSB8fCAhaXNB
U0NJSURpZ2l0KCpidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAo
YnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikp
CiAgICAgICAgICAgICBkZWNpbWFsICs9ICgqKGJ1ZmZlcisrKSAtICcwJykgKiAoZnJhYyAqPSBz
dGF0aWNfY2FzdDxGbG9hdFR5cGU+KDAuMSkpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3Rh
dGljIE9wdGlvbmFsPEZsCiAgICAgICAgIAogICAgICAgICAvLyBUaGVyZSBtdXN0IGJlIGFuIGV4
cG9uZW50CiAgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSB8fCAhaXNBU0NJSURpZ2l0KCpidWZm
ZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgd2hpbGUgKGJ1ZmZlci5oYXNDaGFyYWN0ZXJzUmVt
YWluaW5nKCkgJiYgaXNBU0NJSURpZ2l0KCpidWZmZXIpKSB7CiAgICAgICAgICAgICBleHBvbmVu
dCAqPSBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDEwKTsKQEAgLTExNyw3ICsxMTcsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+
IHN0YXRpYyBPcHRpb25hbDxGbAogICAgICAgICB9CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBleHBv
bmVudCBpcyB2YWxpZC4KICAgICAgICAgaWYgKCFpc1ZhbGlkUmFuZ2UoZXhwb25lbnQpIHx8IGV4
cG9uZW50ID4gc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjptYXhfZXhwb25lbnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBudW1iZXIgPSBpbnRlZ2VyICsgZGVjaW1hbDsKQEAgLTEy
OCwxMCArMTI4LDEwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFt
ZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAKICAgICAvLyBEb24ndCBy
ZXR1cm4gSW5maW5pdHkoKSBvciBOYU4oKS4KICAgICBpZiAoIWlzVmFsaWRSYW5nZShudW1iZXIp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKHN0YXJ0ID09IGJ1ZmZlci5wb3NpdGlvbigpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHNraXAgPT0gU3VmZml4U2tpcHBpbmdQb2xpY3k6OlNraXApCiAgICAgICAgIHNraXBPcHRpb25h
bFNWR1NwYWNlc09yRGVsaW1pdGVyKGJ1ZmZlcik7CkBAIC0xNTQsNyArMTU0LDcgQEAgT3B0aW9u
YWw8ZmxvYXQ+IHBhcnNlTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tp
cHBpbmdQb2xpY3kgc2tpcCkKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0
cmluZywgW3NraXBdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxmbG9hdD4gewogICAgICAgICBh
dXRvIHJlc3VsdCA9IGdlbmVyaWNQYXJzZU51bWJlcihidWZmZXIsIHNraXApOwogICAgICAgICBp
ZiAoIWJ1ZmZlci5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfSk7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlTnVtYmVy
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZywgU3VmZml4U2tpcHBpbmdQb2xpY3kgc2tpcCkKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFy
c2VBcmNGbGFnKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsK
ICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlIGZs
YWdDaGFyID0gKmJ1ZmZlcjsKICAgICArK2J1ZmZlcjsKQEAgLTE3NSw3ICsxNzUsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Ym9vbD4gZ2VuZXJpY1BhcnNl
QXJjRmxhZyhTdHJpbmdQYXJzaQogICAgIGVsc2UgaWYgKGZsYWdDaGFyID09ICcxJykKICAgICAg
ICAgZmxhZyA9IHRydWU7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2Vz
T3JEZWxpbWl0ZXIoYnVmZmVyKTsKICAgICAKQEAgLTE5NSwyMiArMTk1LDIyIEBAIE9wdGlvbmFs
PGJvb2w+IHBhcnNlQXJjRmxhZyhTdHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQog
T3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1i
ZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1
dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gewogICAgICAg
ICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXgpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoKngsICp4KTsKIAogICAgICAgICBhdXRvIHkgPSBwYXJzZU51bWJlcihidWZm
ZXIsIFN1ZmZpeFNraXBwaW5nUG9saWN5OjpEb250U2tpcCk7CiAgICAgICAgIGlmICgheSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoKngsICp5KTsKICAgICB9KTsKQEAgLTIxOSwxNSAr
MjE5LDE1IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZU51bWJlck9w
dGlvbmFsTnVtYmVyKGNvbnN0IFN0cmluZ1ZpZXcmIHN0CiBPcHRpb25hbDxGbG9hdFBvaW50PiBw
YXJzZVBvaW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5n
LCBbXShhdXRvIGJ1ZmZlcikgLT4gT3B0aW9uYWw8RmxvYXRQb2ludD4gewogICAgICAgICBpZiAo
IXNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0
byBwb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgLy8gRGlzYWxsb3cgYW55dGhpbmcgZXhjZXB0IHNwYWNlcyBh
dCB0aGUgZW5kLgogICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoYnVmZmVyKTsKQEAgLTI0
MywxNiArMjQzLDE2IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2VSZWN0KGNvbnN0IFN0cmlu
Z1ZpZXcmIHN0cmluZykKICAgICAgICAgCiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVtYmVyKGJ1
ZmZlcik7CiAgICAgICAgIGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHkgPSBwYXJz
ZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0
byB3aWR0aCA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICghd2lkdGgpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYXV0byBoZWlnaHQgPSBwYXJzZU51bWJlcihidWZmZXIsIFN1ZmZpeFNr
aXBwaW5nUG9saWN5OjpEb250U2tpcCk7CiAgICAgICAgIGlmICghaGVpZ2h0KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCB7ICp4LCAqeSwgKndpZHRoLCAqaGVpZ2h0IH07
CiAgICAgfSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKIHsK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCk7CiAgICAgaWYg
KGxlbmd0aCA8IDIgfHwgYnVmZmVyWzBdICE9ICdVJyB8fCBidWZmZXJbMV0gIT0gJysnKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYnVmZmVyICs9IDI7CiAKQEAgLTMwNiw3ICszMDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNv
ZGVSYW5nZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICsrc3RhcnRMZW5ndGg7CiAgICAg
ICAgIGlmIChzdGFydExlbmd0aCA+IDYpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc3RhcnRSYW5nZSA9
IChzdGFydFJhbmdlIDw8IDQpIHwgdG9BU0NJSUhleFZhbHVlKCpidWZmZXIpOwogICAgICAgICAr
K2J1ZmZlcjsKICAgICB9CkBAIC0zMTQsNyArMzE0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFu
Z2UKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugb2YgcmFuZ2VzIHNlcGFyYXRlZCBieSAiLSIgc2ln
bi4KICAgICBpZiAoMiArIHN0YXJ0TGVuZ3RoIDwgbGVuZ3RoICYmICpidWZmZXIgPT0gJy0nKSB7
CiAgICAgICAgIGlmICghc3RhcnRMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAg
IC8vIFBhcnNlIHRoZSBlbmRpbmcgaGV4IG51bWJlciAob3IgaXRzIHByZWZpeCkuCiAgICAgICAg
IHVuc2lnbmVkIGVuZFJhbmdlID0gMDsKQEAgLTMyNSwxMyArMzI1LDEzIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNl
VW5pY29kZVJhbmdlCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICArK2VuZExl
bmd0aDsKICAgICAgICAgICAgIGlmIChlbmRMZW5ndGggPiA2KQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIGVuZFJhbmdlID0gKGVuZFJhbmdlIDw8IDQpIHwgdG9BU0NJSUhleFZhbHVl
KCpidWZmZXIpOwogICAgICAgICAgICAgKytidWZmZXI7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmICghZW5kTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBVbmlj
b2RlUmFuZ2UgcmFuZ2U7CiAgICAgICAgIHJhbmdlLmZpcnN0ID0gc3RhcnRSYW5nZTsKQEAgLTM0
NiwxNCArMzQ2LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgKytzdGFydExlbmd0aDsKICAgICAgICAgaWYgKHN0YXJ0TGVuZ3RoID4gNikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBzdGFydFJhbmdlIDw8PSA0OwogICAgICAgICBlbmRSYW5nZSA9
IChlbmRSYW5nZSA8PCA0KSB8IDB4RjsKICAgICAgICAgKytidWZmZXI7CiAgICAgfQogICAgIAog
ICAgIGlmICghc3RhcnRMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgVW5pY29kZVJhbmdlIHJhbmdlOwog
ICAgIHJhbmdlLmZpcnN0ID0gc3RhcnRSYW5nZTsKQEAgLTM5NywxMSArMzk3LDExIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8RmxvYXRQb2ludD4g
Z2VuZXJpY1BhcnNlRmxvYXRQCiB7CiAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsK
ICAgICBpZiAoIXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAg
IGlmICgheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBGbG9hdFBvaW50IHsgKngsICp5IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmNwcAppbmRleCAyMWMyYTIxN2IxMjlhMzY1MzM4NWMw
Yjk4MDg2ODViNWVhNjdhMzEyLi41MTUwYzgyN2Q1NDYzYzk2MjAxNzkxYWY5NDRlN2NlZTdhYjg5
ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKQEAgLTEyNiwxMyArMTI2
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiBzdGF0aWMgT3B0aW9uYWw8UmVzdWx0
UGFpcjxGdW5jdGlvbj4+IHB1bGxGcm9tU291cmNlCiAgICAgaWYgKGZyb21Tb3VyY2UuaGFzTW9y
ZURhdGEoKSkgewogICAgICAgICBhdXRvIHBhcnNlZEZyb20gPSBzdGQ6Omludm9rZShmdW5jdGlv
biwgZnJvbVNvdXJjZSk7CiAgICAgICAgIGlmICghcGFyc2VkRnJvbSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBmcm9tUmVzdWx0ID0gV1RGTW92ZSgqcGFyc2VkRnJvbSk7CiAgICAgfQogCiAgICAgYXV0
byBwYXJzZWRUbyA9IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdGlvbj4oZnVuY3Rpb24p
LCB0b1NvdXJjZSk7CiAgICAgaWYgKCFwYXJzZWRUbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBSZXN1bHRQ
YWlyPEZ1bmN0aW9uPiB7IFdURk1vdmUoZnJvbVJlc3VsdCksIFdURk1vdmUoKnBhcnNlZFRvKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAppbmRleCA5NGY2ZjM5ZTRlMWYxYjY3
NDQzM2NhMjUwMTUzODE4ZjRmNjJmZTQyLi5jZTg3YjBiNjJlNjY5Zjg3ZDMzOTQzNGM0NGYwNzQ1
YjVkOWM1NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaApAQCAtMjEwLDcgKzIx
MCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCBjbGVhclBhdGhCeXRlU3RyZWFtKCkg
eyBtX3BhdGhCeXRlU3RyZWFtLmNsZWFyKCk7IH0KLSAgICB2b2lkIGNsZWFyUGF0aCgpIHsgbV9w
YXRoID0gV1RGOjpudWxsb3B0OyB9CisgICAgdm9pZCBjbGVhclBhdGgoKSB7IG1fcGF0aCA9IHN0
ZDo6bnVsbG9wdDsgfQogCiAgICAgdm9pZCBwYXRoQnl0ZVN0cmVhbVdpbGxDaGFuZ2UoKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNwcAppbmRleCA0NjFk
MjhkNTY2YjBlOGYxYjBjNjkxYWJkMTU5YzA5NTY2YWQzNmVkLi45YmJlOTMzOWQ2MmE1ZjIzMmJj
ZmEwODlmOGY2NzMwMWJhNGUyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJp
bmdTb3VyY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1ZHUGF0aFNlZ1R5cGU+IG5leHRDb21tYW5kSGVsCiAg
ICAgICAgIHJldHVybiBwcmV2aW91c0NvbW1hbmQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBTVkdQYXRoU2VnVHlwZSBT
VkdQYXRoU3RyaW5nU291cmNlOjpuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSBwcmV2aW91c0Nv
bW1hbmQpCkBAIC0xNDIsNyArMTQyLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TW92ZVRv
U2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VNb3ZlVG9TZWdtZW50KCkKICAgICBy
ZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxNb3ZlVG9TZWdtZW50PiB7
CiAgICAgICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAg
ICAgICAgaWYgKCF0YXJnZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgTW92
ZVRvU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gV1RGTW92
ZSgqdGFyZ2V0UG9pbnQpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkxpbmVUb1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvU2VnbWVu
dCgpCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRv
U2VnbWVudD4gewogICAgICAgICBhdXRvIHRhcmdldFBvaW50ID0gcGFyc2VGbG9hdFBvaW50KGJ1
ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0UG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAg
ICAgICAgIExpbmVUb1NlZ21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC50YXJnZXRQb2lu
dCA9IFdURk1vdmUoKnRhcmdldFBvaW50KTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBPcHRpb25hbDxT
VkdQYXRoU291cmNlOjpMaW5lVG9Ib3Jpem9udGFsU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJj
ZTo6cGFyc2VMaW5lVAogICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlv
bmFsPExpbmVUb0hvcml6b250YWxTZWdtZW50PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVt
YmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAg
ICAgTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC54ID0g
Kng7CkBAIC0xODEsNyArMTgxLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvVmVy
dGljYWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUb1YKICAgICByZXR1
cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9WZXJ0aWNhbFNlZ21l
bnQ+IHsKICAgICAgICAgYXV0byB5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYg
KCF5KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBMaW5lVG9WZXJ0aWNhbFNlZ21lbnQg
c2VnbWVudDsKICAgICAgICAgc2VnbWVudC55ID0gKnk7CkBAIC0xOTQsMTUgKzE5NCwxNSBAQCBP
cHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRvQ3ViaWNTZWdtZW50PiBTVkdQYXRoU3RyaW5n
U291cmNlOjpwYXJzZUN1cnZlVG9DdQogICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIp
IC0+IE9wdGlvbmFsPEN1cnZlVG9DdWJpY1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byBwb2ludDEg
PSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDEpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBhdXRvIHBvaW50MiA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAg
ICAgICBpZiAoIXBvaW50MikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gdGFyZ2V0UG9pbnQg
PSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCF0YXJnZXRQb2ludCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIEN1cnZlVG9DdWJpY1NlZ21lbnQgc2VnbWVudDsKICAgICAgICAg
c2VnbWVudC5wb2ludDEgPSAqcG9pbnQxOwpAQCAtMjE3LDExICsyMTcsMTEgQEAgT3B0aW9uYWw8
U1ZHUGF0aFNvdXJjZTo6Q3VydmVUb0N1YmljU21vb3RoU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1Nv
dXJjZTo6cGFyc2VDdXIKICAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRp
b25hbDxDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcG9pbnQyID0g
cGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQyKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwog
ICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ3VydmVUb0N1
YmljU21vb3RoU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnBvaW50MiA9ICpwb2lu
dDI7CkBAIC0yMzUsMTEgKzIzNSwxMSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2ZVRv
UXVhZHJhdGljU2VnbWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VDdXJ2ZQogICAgIHJl
dHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcG9pbnQxID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7
CiAgICAgICAgIGlmICghcG9pbnQxKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byB0YXJnZXRQ
b2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQgc2VnbWVudDsK
ICAgICAgICAgc2VnbWVudC5wb2ludDEgPSAqcG9pbnQxOwpAQCAtMjUzLDcgKzI1Myw3IEBAIE9w
dGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50PiBTVkdQ
YXRoU3RyaW5nU291cmNlOjpwYXJzCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikg
LT4gT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0
byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRh
cmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNl
Z21lbnQgc2VnbWVudDsKICAgICAgICAgc2VnbWVudC50YXJnZXRQb2ludCA9ICp0YXJnZXRQb2lu
dDsKQEAgLTI2NiwyMiArMjY2LDIyIEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkFyY1RvU2Vn
bWVudD4gU1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VBcmNUb1NlZ21lbnQoKQogICAgIHJldHVy
biBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEFyY1RvU2VnbWVudD4gewogICAg
ICAgICBhdXRvIHJ4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCFyeCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBhdXRvIHJ5ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAg
aWYgKCFyeSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGFuZ2xlID0gcGFyc2VOdW1iZXIoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFhbmdsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGxhcmdl
QXJjID0gcGFyc2VBcmNGbGFnKGJ1ZmZlcik7CiAgICAgICAgIGlmICghbGFyZ2VBcmMpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYXV0byBzd2VlcCA9IHBhcnNlQXJjRmxhZyhidWZmZXIpOwogICAgICAg
ICBpZiAoIXN3ZWVwKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJz
ZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCF0YXJnZXRQb2ludCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIEFyY1RvU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnJ4ID0g
KnJ4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmlu
ZGV4IDVmMjAzOTQzYjA1N2I1YjNiZmRjZTJiYTJmMTQ5OWNkODQwYzRjYjMuLmU1YjhmZWRkMDJm
MzRlZjE5YmQ3Y2VjNmJhNzgyZTgwOTc2Mzk3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHZvaWQgU1ZH
VG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQm
IGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAgICAgICAgIG1fbWlu
UmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVhcmluZywgaG9yaXpv
bnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgpKTsKIAotICAgIG1f
Z2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jp
em9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlT3Io
RmxvYXRSZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0
YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNh
bEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRSZWN0KCkpLCBjb2RlcG9p
bnRzKSk7CiB9CiAKIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRMaWdhdHVyZUds
eXBocygpCkBAIC0xNDE2LDcgKzE0MTYsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1Rv
T1RGRm9udENvbnZlcnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAg
ICAgICAgICBwcm9jZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwg
ZGVmYXVsdEhvcml6b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2Rl
QXR0cmlidXRlLCBib3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJv
dW5kaW5nQm94LnZhbHVlT3IoRmxvYXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSBib3Vu
ZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CiAKICAgICBhcHBlbmRMaWdhdHVyZUdseXBo
cygpOwogCkBAIC0xNTU4LDkgKzE1NTgsOSBAQCBPcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGNvbnZl
cnRTVkdUb09URkZvbnQoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgU1ZH
VG9PVEZGb250Q29udmVydGVyIGNvbnZlcnRlcihlbGVtZW50KTsKICAgICBpZiAoY29udmVydGVy
LmVycm9yKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFjb252ZXJ0ZXIuY29udmVydFNWR1RvT1RGRm9udCgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBjb252ZXJ0ZXIucmVsZWFzZVJlc3VsdCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKaW5kZXggNzFhNTFlMjE0OTc2YTNmYjgwZmQxMGY2
Y2FiNDk5NDc4NzBiYTYyZi4uODljYmQ3OTYzM2I3NjBiMTA3YzAwNGE0ZjJhNWMyMGM2YzQyODdm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcApAQCAtMTAyLDEyICsx
MDIsMTIgQEAgc3RhdGljIGNvbnN0ZXhwciBpbnQgb3B0aW9uYWxWYWx1ZXNGb3JUeXBlW10gPSAg
eyAwLCAwLCAxLCAxLCAyLCAwLCAwIH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBzdGF0aWMgT3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFsdWU+IHBhcnNlVHJhbnNmb3JtVmFsdWVH
ZW5lcmljKFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm1UeXBlIHR5cGUsIFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAodHlwZSA9PSBT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IHZh
bHVlQ291bnQgPSAwOwogICAgIGZsb2F0IHZhbHVlc1tdID0gezAsIDAsIDAsIDAsIDAsIDB9Owog
ICAgIGlmICgodmFsdWVDb3VudCA9IHBhcnNlVHJhbnNmb3JtUGFyYW1MaXN0KGJ1ZmZlciwgdmFs
dWVzLCByZXF1aXJlZFZhbHVlc0ZvclR5cGVbdHlwZV0sIG9wdGlvbmFsVmFsdWVzRm9yVHlwZVt0
eXBlXSkpIDwgMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFNWR1RyYW5zZm9ybVZhbHVlIHRyYW5zZm9ybTsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKQEAgLTE2Niw3ICsxNjYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgY29uc3RleHByIENoYXJhY3RlclR5cGUgbWF0cml4RGVzY1tdID0K
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFu
c2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlwZT4gcGFyc2VUcmFuc2Zvcm1UeXBlR2VuZXJpYyhT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1
ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCpidWZmZXIgPT0gJ3MnKSB7CiAgICAgICAgIGlm
IChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBza2V3WERlc2M8Q2hhcmFjdGVyVHlwZT4p
KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtCiAgICAgICAgICAg
ICByZXR1cm4gU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fU0tFV1k7CiAgICAgICAg
IGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVyLCBzY2FsZURlc2M8Q2hhcmFjdGVyVHlw
ZT4pKQogICAgICAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JN
X1NDQUxFOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVy
LCB0cmFuc2xhdGVEZXNjPENoYXJhY3RlclR5cGU+KSkKQEAgLTE4NSw3ICsxODUsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8U1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybQogICAgIGlmIChza2lwQ2hhcmFjdGVyc0V4YWN0bHkoYnVmZmVy
LCBtYXRyaXhEZXNjPENoYXJhY3RlclR5cGU+KSkKICAgICAgICAgcmV0dXJuIFNWR1RyYW5zZm9y
bVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8U1ZHVHJhbnNmb3JtVmFs
dWU6OlNWR1RyYW5zZm9ybVR5cGU+IFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtVHlw
ZShTdHJpbmdWaWV3IHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdW
S2VybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAK
aW5kZXggYmMzNTRkYTIzN2NlYTZkNGMxZTFiNjdmNzliZjNlMjQ3MTE4MDQ5OC4uZGQxYjg5MjBj
ZDZmMGMwYjg1NmM4ZjJiNDYzNGJhZGE4Y2JhYTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZL
ZXJuRWxlbWVudC5jcHAKQEAgLTQ4LDMwICs0OCwzMCBAQCBPcHRpb25hbDxTVkdLZXJuaW5nUGFp
cj4gU1ZHVktlcm5FbGVtZW50OjpidWlsZFZlcnRpY2FsS2VybmluZ1BhaXIoKSBjb25zdAogICAg
IGF1dG8mIHUxID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTFB
dHRyKTsKICAgICBhdXRvJiBnMSA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6OmcxQXR0cik7CiAgICAgaWYgKHUxLmlzRW1wdHkoKSAmJiBnMS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBhdXRvJiB1MiA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFt
ZXM6OnUyQXR0cik7CiAgICAgYXV0byYgZzIgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKFNWR05hbWVzOjpnMkF0dHIpOwogICAgIGlmICh1Mi5pc0VtcHR5KCkgJiYgZzIuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBnbHlwaE5hbWUxID0gcGFyc2VHbHlwaE5hbWUoZzEpOwogICAg
IGlmICghZ2x5cGhOYW1lMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGdseXBoTmFtZTIgPSBwYXJzZUdseXBoTmFt
ZShnMik7CiAgICAgaWYgKCFnbHlwaE5hbWUyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmluZzEg
PSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKHUxKTsKICAgICBpZiAoIXVuaWNvZGVTdHJpbmcx
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmluZzIgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5n
KHUyKTsKICAgICBpZiAoIXVuaWNvZGVTdHJpbmcyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBvayA9IGZhbHNl
OwogICAgIGF1dG8ga2VybmluZyA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6OmtBdHRyKS5zdHJpbmcoKS50b0Zsb2F0KCZvayk7CiAgICAgaWYgKCFvaykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBTVkdLZXJuaW5nUGFpciB7CiAgICAgICAgIFdURk1vdmUodW5pY29kZVN0cmlu
ZzEtPmZpcnN0KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCBkNWQ5Nzdm
ZmE1ZmNiN2UwNWIyYWY1NTY1MTAxNWVhYmMyMzQyYzI3Li5kMjdmOGU1MjJkNzQ2MWU2ZGY5MTc4
MGM1Yzk3OTdkMDg5MWExMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9v
bUFuZFBhbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCkBA
IC0zOCw3ICszOCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBP
cHRpb25hbDxTVkdab29tQW5kUGFuVHlwZT4gcGFyc2Vab29tQW5kCiAgICAgaWYgKHNraXBDaGFy
YWN0ZXJzRXhhY3RseShidWZmZXIsIG1hZ25pZnk8Q2hhcmFjdGVyVHlwZT4pKQogICAgICAgICBy
ZXR1cm4gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFNWR1pvb21BbmRQYW5UeXBl
PiBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oU3RyaW5nUGFyc2luZ0J1ZmZlcjxMQ2hh
cj4mIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJvcGVydHkuaAppbmRleCA0YzE2ZDhmOWU1MDU0ZGEw
MzM5ZmEwNjA1MTM5YmZlNjc2MTg3M2NiLi45MGQ1Mjg2OGFjYzMyMTc3MjU5ODRlYmFmNGQxYzQ2
NjRjMGVhNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZERlY29yYXRlZFByb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQcm9wZXJ0eS5oCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHVibGljOgogICAgIE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW4pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgbV9zdGF0ZSA9IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuOwogICAgICAg
ICByZXR1cm4gYmFzZVZhbEFzU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eS5oCmluZGV4IGQ5YTExNTk3NDM2
NjM3NGY3ZWE4ZGZiYjBhNDYzZTA4NjFmYWJkYWQuLmQwMWNhNGZiZGQ4NjRmYjE0MTk0MTg5NzIx
MzFjYjhjM2UxMWRkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8v
IENvbnRyb2wgdGhlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSBhdHRyaWJ1dGUgYW5kIGl0
cyByZWZsZWN0aW9uIGluIGJhc2VWYWwuCiAgICAgdmlydHVhbCBib29sIGlzRGlydHkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXREaXJ0eSgpIHsgfQotICAg
IHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIAogICAgIC8vIENvbnRyb2wgdGhlIGFuaW1hdGlvbiBs
aWZlIGN5Y2xlLgogICAgIGJvb2wgaXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1h
dG9ycy5jb21wdXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwu
aAppbmRleCA1N2U5YzQ5MWMyNDMwYjMxYzdjZTExMGQ3ZjgxYjQxNzNhNmY4YzU5Li45MzRhYzFk
M2RhMmE5NmQ1ZDY4OTdlNWM5NDc0OTY0ZWQ4Yzc4NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlQ
YWlyQWNjZXNzb3JJbXBsLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCBkaXJ0eTEgPSBwcm9wZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGly
dHkyID0gcHJvcGVydHkyKG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBpZiAoIShkaXJ0eTEg
fHwgZGlydHkyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gdHlwZSA9IHByb3BlcnR5Mihv
d25lciktPmJhc2VWYWwoKTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgZGlydHkxID0gcHJvcGVydHkxKG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBib29s
IGRpcnR5MiA9IHByb3BlcnR5Mihvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgaWYgKCEoZGly
dHkxIHx8IGRpcnR5MikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBTdHJpbmcgc3RyaW5nMSA9IGRp
cnR5MSA/ICpwcm9wZXJ0eTEob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkxKG93bmVy
KS0+YmFzZVZhbEFzU3RyaW5nKCk7CiAgICAgICAgIFN0cmluZyBzdHJpbmcyID0gZGlydHkyID8g
KnByb3BlcnR5Mihvd25lciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTIob3duZXIpLT5iYXNl
VmFsQXNTdHJpbmcoKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgICAgICBib29s
IGRpcnR5MSA9IHByb3BlcnR5MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0
eTIgPSBwcm9wZXJ0eTIob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGlmICghKGRpcnR5MSB8
fCBkaXJ0eTIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgU3RyaW5nIHN0cmluZzEgPSBkaXJ0eTEg
PyAqcHJvcGVydHkxKG93bmVyKS0+c3luY2hyb25pemUoKSA6IHByb3BlcnR5MShvd25lciktPmJh
c2VWYWxBc1N0cmluZygpOwogICAgICAgICBTdHJpbmcgc3RyaW5nMiA9IGRpcnR5MiA/ICpwcm9w
ZXJ0eTIob3duZXIpLT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbEFz
U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3BwCmlu
ZGV4IDI2NGFiNjAxNDk5NTZhNWQxY2U0M2RlNDc1OGQ0ZTcxNWU0YjY2MDQuLjU0OGI5MzlmMThh
NmM3M2Y3Y2IxYWJjN2NmN2Q1ODNiNzJiZTkwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZl
VmFsdWVGdW5jdGlvbkltcGwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENvbG9yIFNWR0FuaW1hdGlv
bkNvbG9yRnVuY3Rpb246OmNvbG9yRnJvbVN0cmluZyhTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50
LCBjb25zCiAKIE9wdGlvbmFsPGZsb2F0PiBTVkdBbmltYXRpb25JbnRlZ2VyRnVuY3Rpb246OmNh
bGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb20sIGNvbnN0IFN0
cmluZyYgdG8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6YWJzKHBhcnNlSW50ZWdlcjxpbnQ+
KHRvKS52YWx1ZU9yKDApIC0gcGFyc2VJbnRlZ2VyPGludD4oZnJvbSkudmFsdWVPcigwKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6YWJzKHBhcnNlSW50ZWdlcjxpbnQ+KHRvKS52YWx1ZV9vcigwKSAtIHBh
cnNlSW50ZWdlcjxpbnQ+KGZyb20pLnZhbHVlX29yKDApKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1
bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCmluZGV4IDRiYTM3YTljYTdjZjhhMzQ0YmE2M2I0
NjE3MGFjN2IyNDVhMmM2NGUuLjk2OTc5OWJiMDBiNWZkZDk5NjUxODRiZmI3ZTJmNjcyNDA0MDE1
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTIzNyw3
ICsyMzcsNyBAQCBwdWJsaWM6CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFu
Y2UoU1ZHRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29u
c3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmFicyhwYXJzZU51bWJlcih0
bykudmFsdWVPcigwKSAtIHBhcnNlTnVtYmVyKGZyb20pLnZhbHVlT3IoMCkpOworICAgICAgICBy
ZXR1cm4gc3RkOjphYnMocGFyc2VOdW1iZXIodG8pLnZhbHVlX29yKDApIC0gcGFyc2VOdW1iZXIo
ZnJvbSkudmFsdWVfb3IoMCkpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01lbWJlckFjY2Vzc29yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5oCmluZGV4IDNhNzZmOTE3ZmQy
NDBlOTViZDY5YzRjOGZiMzY3YjIwZWVhZWY2ZTkuLjMzYWY1YmVmOTIzMGE2ZmU1NDlmN2IxNzk1
YTAyYmM1Zjg1M2NlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR01lbWJlckFjY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHTWVtYmVyQWNjZXNzb3IuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHUHJvcGVydHkmKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzKGNvbnN0IE93bmVy
VHlwZSYsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHkmKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXREaXJ0eShjb25zdCBPd25lclR5cGUmLCBTVkdBbmltYXRl
ZFByb3BlcnR5JiBhbmltYXRlZFByb3BlcnR5KSBjb25zdCB7IGFuaW1hdGVkUHJvcGVydHkuc2V0
RGlydHkoKTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZShjb25z
dCBPd25lclR5cGUmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFs
IE9wdGlvbmFsPFN0cmluZz4gc3luY2hyb25pemUoY29uc3QgT3duZXJUeXBlJikgY29uc3QgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTVkdBdHRyaWJ1dGVB
bmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYs
IEFuaW1hdGlvbk1vZGUsIENhbGNNb2RlLCBib29sLCBib29sKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoT3duZXJUeXBl
JiwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImKSBjb25zdCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCmluZGV4IDQwNDNmZjQ0ZjIwNmE2NzE5NWU5YjlkY2Rl
MDY2NjBmZTIxM2Q3NTcuLmNlM2MyYjI3MWQ5YTIzMGI0ZWQwMGMwOWVmMWU3MThlNTk5NTYwN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaApAQCAtODIs
NyArODIsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpCiAg
ICAgewogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBtX3N0YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CiAgICAg
ICAgIHJldHVybiB2YWx1ZUFzU3RyaW5nKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuY3BwCmluZGV4IGFlNGY0NzhkNzEz
MmYxOWRmZWM2YjkwMjQwMDQwOWQzZTFjOTVlYjguLmRmNWJiYjE0N2EzMmIyYjY1OTAzZWY5M2M4
ODExYmYxNDdjNGNmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1Byb3BlcnR5VHJhaXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRyYWl0cy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBpbnQgU1ZHUHJvcGVydHlUcmFpdHM8aW50Pjo6ZnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPGludD4oc3RyaW5nKS52YWx1
ZU9yKDApOworICAgIHJldHVybiBwYXJzZUludGVnZXI8aW50PihzdHJpbmcpLnZhbHVlX29yKDAp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQ
cm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVy
dHlUcmFpdHMuaAppbmRleCAwY2FkYTdhMDJjYWYwMDQzMjcyMjJiMzhlMWNhZmY5MmJjY2MyMzQw
Li42MzMwYzNjNDRhMDJhYTg1NTRkMWYyNzZlNTk3MTY1MmRmNmI2Y2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKQEAgLTUwLDcg
KzUwLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPENvbG9yPiB7CiAgICAgewogICAgICAg
ICBDb2xvciBjb2xvciA9IENTU1BhcnNlcjo6cGFyc2VDb2xvcihzdHJpbmcuc3RyaXBXaGl0ZVNw
YWNlKCkpOwogICAgICAgICBpZiAoIWNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gY29sb3I7CiAgICAgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qg
Q29sb3ImIHR5cGUpIHsgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKHR5cGUpOyB9CkBAIC05
MCw3ICs5MCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxmbG9hdD4gewogICAgIHN0YXRp
YyBmbG9hdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiAwOyB9CiAgICAgc3RhdGljIGZsb2F0IGZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gcGFy
c2VOdW1iZXIoc3RyaW5nKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXIo
c3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPGZsb2F0PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpA
QCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0Pj4gewogICAgIHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBpbml0aWFs
VmFsdWUoKSB7IHJldHVybiB7IH07IH0KICAgICBzdGF0aWMgc3RkOjpwYWlyPGZsb2F0LCBmbG9h
dD4gZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVy
biBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVPcihzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0PiB7IH0pOworICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJl
cihzdHJpbmcpLnZhbHVlX29yKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsgfSk7CiAgICAgfQog
ICAgIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2UoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoc3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBlbXB0eVN0
cmluZygpOyB9CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZs
b2F0UG9pbnQ+IHsKICAgICBzdGF0aWMgRmxvYXRQb2ludCBpbml0aWFsVmFsdWUoKSB7IHJldHVy
biBGbG9hdFBvaW50KCk7IH0KICAgICBzdGF0aWMgRmxvYXRQb2ludCBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9pbnQoc3RyaW5n
KS52YWx1ZU9yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlUG9pbnQoc3Ry
aW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAgICAgfQogICAgIHN0YXRpYyBPcHRpb25h
bDxGbG9hdFBvaW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxGbG9hdFJlY3Q+IHsKICAgICBzdGF0aWMgRmxvYXRSZWN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgc3RhdGljIEZsb2F0UmVjdCBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVjdChzdHJpbmcp
LnZhbHVlT3IoRmxvYXRSZWN0IHsgfSk7CisgICAgICAgIHJldHVybiBwYXJzZVJlY3Qoc3RyaW5n
KS52YWx1ZV9vcihGbG9hdFJlY3QgeyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPEZs
b2F0UmVjdD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmlu
ZGV4IDZhOTc1NTkyMDVhNjRhZGNlMDRiYTg1ZDQxZGMzMWE1YWE3NzM4ZGIuLjFjNzJhNTM1Y2E4
OWYyYWM5NGVhM2U2NTVkMjY2MzkwZTVmZjk5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdzKQogICAgIEZvbnRD
YWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJp
bGl0eShtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFjY2Vzc2liaWxpdHkpOwogCiAjaWYg
RU5BQkxFKFdFQl9BVURJTykKLSAgICBBdWRpb0NvbnRleHQ6OnNldERlZmF1bHRTYW1wbGVSYXRl
Rm9yVGVzdGluZyhXVEY6Om51bGxvcHQpOworICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVsdFNh
bXBsZVJhdGVGb3JUZXN0aW5nKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDhjZjAyYjE3OWViZmJkZDM3N2E2YTU0OGQwYzZh
N2FmNjkxNzdmOTYuLjJmMTQzNjFmODk2YWM4NDM5MTVkOWU0OTA5NzhiZDQ5MmIzMmIwYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lk
IEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogI2VuZGlmCiAK
ICAgICBwYWdlLnNldFNob3dBbGxQbHVnaW5zKGZhbHNlKTsKLSAgICBwYWdlLnNldExvd1Bvd2Vy
TW9kZUVuYWJsZWRPdmVycmlkZUZvclRlc3RpbmcoV1RGOjpudWxsb3B0KTsKKyAgICBwYWdlLnNl
dExvd1Bvd2VyTW9kZUVuYWJsZWRPdmVycmlkZUZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKICAg
ICBwYWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxz
ZSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIEludGVy
bmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogI2VuZGlmCiAKICAgICBI
VE1MQ2FudmFzRWxlbWVudDo6c2V0TWF4UGl4ZWxNZW1vcnlGb3JUZXN0aW5nKDApOyAvLyBUaGlz
IG1lYW5zIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZS4KLSAgICBET01XaW5kb3c6Om92ZXJyaWRlVHJh
bnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uRm9yVGVzdGluZyhXVEY6Om51bGxvcHQpOworICAgIERP
TVdpbmRvdzo6b3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb25Gb3JUZXN0aW5nKHN0
ZDo6bnVsbG9wdCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgUmVuZGVyVGhlbWVJT1M6OnNl
dENvbnRlbnRTaXplQ2F0ZWdvcnkoa0NURm9udENvbnRlbnRTaXplQ2F0ZWdvcnlMKTsKQEAgLTY0
NywxMyArNjQ3LDEzIEBAIEludGVybmFsczo6SW50ZXJuYWxzKERvY3VtZW50JiBkb2N1bWVudCkK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgU3lzdGVtQmF0dGVyeVN0YXR1c1Rl
c3RpbmdPdmVycmlkZXM6OnNpbmdsZXRvbigpLnNldEhhc0FDKFdURjo6bnVsbG9wdCk7Ci0gICAg
U3lzdGVtQmF0dGVyeVN0YXR1c1Rlc3RpbmdPdmVycmlkZXM6OnNpbmdsZXRvbigpLnNldEhhc0Jh
dHRlcnkoV1RGOjpudWxsb3B0KTsKKyAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJy
aWRlczo6c2luZ2xldG9uKCkuc2V0SGFzQUMoc3RkOjpudWxsb3B0KTsKKyAgICBTeXN0ZW1CYXR0
ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0SGFzQmF0dGVyeShzdGQ6
Om51bGxvcHQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVlA5KSAmJiBQTEFURk9STShDT0NPQSkK
LSAgICBWUDlUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5zZXRIYXJkd2FyZURlY29kZXJE
aXNhYmxlZChXVEY6Om51bGxvcHQpOwotICAgIFZQOVRlc3RpbmdPdmVycmlkZXM6OnNpbmdsZXRv
bigpLnNldFZQOVNjcmVlblNpemVBbmRTY2FsZShXVEY6Om51bGxvcHQpOworICAgIFZQOVRlc3Rp
bmdPdmVycmlkZXM6OnNpbmdsZXRvbigpLnNldEhhcmR3YXJlRGVjb2RlckRpc2FibGVkKHN0ZDo6
bnVsbG9wdCk7CisgICAgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0VlA5U2Ny
ZWVuU2l6ZUFuZFNjYWxlKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApAQCAtMTM4NSw3ICsx
Mzg1LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJp
ZGUoT3B0aW9uYWw8RXZlbnRUaHJvdHRsaW5nQmVoYXYKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCF2YWx1ZSkgewotICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXRFdmVudFRocm90dGxp
bmdCZWhhdmlvck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRvY3VtZW50LT5wYWdl
KCktPnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQwMywxMSArMTQwMywxMSBAQCBPcHRpb25hbDxJ
bnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yPiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0
bGluZ0JlaGF2aW9yTwogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVu
dCgpOwogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGJlaGF2aW9yID0gZG9jdW1lbnQtPnBhZ2UoKS0+ZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JP
dmVycmlkZSgpOwogICAgIGlmICghYmVoYXZpb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKGJlaGF2aW9y
LnZhbHVlKCkpIHsKICAgICBjYXNlIFdlYkNvcmU6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yOjpS
ZXNwb25zaXZlOgpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgT3B0aW9uYWw8SW50ZXJuYWxzOjpFdmVu
dFRocm90dGxpbmdCZWhhdmlvcj4gSW50ZXJuYWxzOjpldmVudFRocm90dGxpbmdCZWhhdmlvck8K
ICAgICAgICAgcmV0dXJuIEludGVybmFsczo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I6OlVucmVz
cG9uc2l2ZTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBJbnRlcm5hbHM6OnZpc2libGVQbGFjZWhvbGRlcihF
bGVtZW50JiBlbGVtZW50KQpAQCAtMjYwNSw3ICsyNjA1LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWdu
ZWQ+IEludGVybmFsczo6Y291bnRNYXRjaGVzRm9yVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFYKICAgICAgICAgcmV0dXJuIHBhcnNlZE9wdGlvbnMucmVsZWFzZUV4Y2VwdGlvbigpOwog
CiAgICAgYm9vbCBtYXJrID0gbWFya01hdGNoZXMgPT0gIm1hcmsiOwotICAgIHJldHVybiBkb2N1
bWVudC0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0ZXh0LCBXVEY6Om51bGxvcHQsIHBh
cnNlZE9wdGlvbnMucmVsZWFzZVJldHVyblZhbHVlKCksIDEwMDAsIG1hcmssIG51bGxwdHIpOwor
ICAgIHJldHVybiBkb2N1bWVudC0+ZWRpdG9yKCkuY291bnRNYXRjaGVzRm9yVGV4dCh0ZXh0LCBz
dGQ6Om51bGxvcHQsIHBhcnNlZE9wdGlvbnMucmVsZWFzZVJldHVyblZhbHVlKCksIDEwMDAsIG1h
cmssIG51bGxwdHIpOwogfQogCiBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3Vu
dEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bmRPcHRpb25zKQpAQCAtMjY5OCwxMyArMjY5OCwxMyBAQCB1aW50NjRfdCBJbnRlcm5hbHM6OmVs
ZW1lbnRJZGVudGlmaWVyKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB1aW50NjRfdCBJbnRlcm5h
bHM6OmZyYW1lSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdl
LT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIg
eyB9KS50b1VJbnQ2NCgpOworICAgICAgICByZXR1cm4gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAKIHVpbnQ2NF90IEludGVybmFsczo6cGFnZUlkZW50aWZpZXIoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudC5wYWdl
SUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKKyAgICByZXR1cm4g
ZG9jdW1lbnQucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
OwogfQogCiBib29sIEludGVybmFsczo6aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNv
bnN0CkBAIC0zNTkzLDcgKzM1OTMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNl
dENvbXBvc2l0aW5nUG9saWN5T3ZlcnJpZGUoT3B0aW9uYWw8Q29tcG9zaXRpbmdQbwogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAKICAgICBpZiAoIXBv
bGljeU92ZXJyaWRlKSB7Ci0gICAgICAgIGRvY3VtZW50LT5wYWdlKCktPnNldENvbXBvc2l0aW5n
UG9saWN5T3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+
c2V0Q29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIApAQCAtMzYxNyw3ICszNjE3LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9u
YWw8SW50ZXJuYWxzOjpDb21wb3NpdGluZ1BvbGljeT4+IEludGVybmFsczo6Y29tcG9zaXRpbmdQ
b2xpY3kKIAogICAgIGF1dG8gcG9saWN5T3ZlcnJpZGUgPSBkb2N1bWVudC0+cGFnZSgpLT5jb21w
b3NpdGluZ1BvbGljeU92ZXJyaWRlKCk7CiAgICAgaWYgKCFwb2xpY3lPdmVycmlkZSkKLSAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCB9OwogCiAgICAgc3dpdGNoIChwb2xpY3lPdmVycmlkZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBX
ZWJDb3JlOjpDb21wb3NpdGluZ1BvbGljeTo6Tm9ybWFsOgpAQCAtNTA2Miw3ICs1MDYyLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFRhc2tTb3VyY2U+IHRhc2tTb3VyY2VGcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgdGFza1NvdXJjZU5hbWUpCiB7CiAgICAgaWYgKHRhc2tTb3VyY2VOYW1lID09ICJET01N
YW5pcHVsYXRpb24iKQogICAgICAgICByZXR1cm4gVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9u
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpxdWV1ZVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrU291cmNlTmFtZSwgUmVmUHRyPFZv
aWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTU3NTcsNyArNTc1Nyw3IEBAIGF1dG8gSW50ZXJu
YWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBzdHJpbmcpIC0+IE9wdGlv
bmFsPERvVmlQYXJhCiB7CiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IFdlYkNvcmU6OnBhcnNlRG9W
aUNvZGVjUGFyYW1ldGVycyhzdHJpbmcpOwogICAgIGlmICghcGFyc2VSZXN1bHQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
RG9WaVBhcmFtZXRlclNldCBjb252ZXJ0ZWRSZXN1bHQ7CiAgICAgc3dpdGNoIChwYXJzZVJlc3Vs
dC0+Y29kZWMpIHsKICAgICBjYXNlIERvVmlQYXJhbWV0ZXJzOjpDb2RlYzo6QVZDMToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGY4NzliMjhmYzg5ZTYyM2NjNjExOWZhZDgzYjJj
NzNhZTZiMDFiNTQuLjE4NDU2NDY0NjFlZGMzMWZhOWY1OWNlNzBmMDFhNTljZWFhMDY3NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTAwOCw3ICsxMDA4LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgLCB2YWx1ZShjb29raWUudmFsdWUpCiAgICAgICAgICAgICAsIGRvbWFp
bihjb29raWUuZG9tYWluKQogICAgICAgICAgICAgLCBwYXRoKGNvb2tpZS5wYXRoKQotICAgICAg
ICAgICAgLCBleHBpcmVzKGNvb2tpZS5leHBpcmVzLnZhbHVlT3IoMCkpCisgICAgICAgICAgICAs
IGV4cGlyZXMoY29va2llLmV4cGlyZXMudmFsdWVfb3IoMCkpCiAgICAgICAgICAgICAsIGlzSHR0
cE9ubHkoY29va2llLmh0dHBPbmx5KQogICAgICAgICAgICAgLCBpc1NlY3VyZShjb29raWUuc2Vj
dXJlKQogICAgICAgICAgICAgLCBpc1Nlc3Npb24oY29va2llLnNlc3Npb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDg5MTk2NGJhZDU1MDQ5M2RjZDdi
ODE4ZjcwMGFlZWJmN2NiZjJjODcuLjNlYjExZjAwYjQ5NGRmMDI3NTliMmJlMGE2MjE3NzliM2Ex
MmQxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0y
MjgsNyArMjI4LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBNb2NrQ0RNOjpzYW5pdGl6ZVNlc3Npb25J
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgY29uc3QKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uoc2Vzc2lvbklkLCAidmFsaWQtbG9hZGVkLXNlc3Npb24iKSkKICAg
ICAgICAgcmV0dXJuIHNlc3Npb25JZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE1vY2tDRE1JbnN0YW5jZTo6TW9ja0NETUluc3RhbmNl
KFdlYWtQdHI8TW9ja0NETT4gY2RtKQpAQCAtMzI3LDE0ICszMjcsMTQgQEAgdm9pZCBNb2NrQ0RN
SW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBM
aWNlbnNlVHlwZSwKIHsKICAgICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2Ug
PyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewot
ICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVz
cG9uc2VWZWN0b3IgPSBTdHJpbmcocmVzcG9uc2UtPmRhdGEoKSwgcmVzcG9uc2UtPnNpemUoKSku
c3BsaXQoJyAnKTsKIAogICAgIGlmIChyZXNwb25zZVZlY3Rvci5jb250YWlucyhTdHJpbmcoImlu
dmFsaWQtZm9ybWF0Il9zKSkpIHsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAg
ICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzU0LDE0ICszNTQsMTQgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwKICAgICAvLyBGSVhN
RTogU2Vzc2lvbiBjbG9zdXJlLCBleHBpcmF0aW9uIGFuZCBtZXNzYWdlIGhhbmRsaW5nIHNob3Vs
ZCBiZSBpbXBsZW1lbnRlZAogICAgIC8vIG9uY2UgdGhlIHJlbGV2YW50IGFsZ29yaXRobXMgYXJl
IHN1cHBvcnRlZC4KIAotICAgIGNhbGxiYWNrKGZhbHNlLCBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKKyAg
ICBjYWxsYmFjayhmYWxzZSwgV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiB9CiAKIHZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2Nr
Q0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkg
OiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwg
U2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmU6Ok90aGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzcw
LDcgKzM3MCw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluCiAgICAgQ1N0cmluZyBtZXNzYWdl
RGF0YSB7ICJzZXNzaW9uIGxvYWRlZCIgfTsKICAgICBNZXNzYWdlIG1lc3NhZ2UgeyBNZXNzYWdl
VHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1lc3NhZ2VEYXRhLmRh
dGEoKSwgbWVzc2FnZURhdGEubGVuZ3RoKCkpIH07CiAKLSAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVk
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVk
LCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogfQogCiB2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIE1vY2tDRE1JbnN0
YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgaWQsIExpY2Vuc2VU
eXBlLCBSZQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1f
aW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7Ci0gICAg
ICAgIGNhbGxiYWNrKHsgfSwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7Cisg
ICAgICAgIGNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yLmNwcAppbmRleCBhMTJkMGU4MGRjYzFi
ZDE0ZWY0MDBlNTA1NmQxYmYxYTdlYjY1ZWVhLi40MDE0ZDBiZThmNjRmMWNlY2UzMTY4NGU3ZjQ5
NDZlODg5N2Q5NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRp
YVNlc3Npb25Db29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIE9wdGlvbmFsPEV4
Y2VwdGlvbj4gTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpyZXN1bHQoKSBjb25zdAogICAg
IGlmIChtX2ZhaWxDb21tYW5kcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHZvaWQgTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOjpqb2luKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJiBjYWxsYmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3Bw
CmluZGV4IGJjM2FmZWQ5YTMxNDBiOTAzM2I5NzUwYjVjYmQwYTBjZjMyYWM0ZWEuLjhkNzNiMWNh
ODVhZTU2NDk1NWU4NGE4NjliZThmZGYzYTRhYzlkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtNjgsNyArNjgsNyBAQCBP
cHRpb25hbDxTdHJpbmc+IE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnRO
ZXR3b3JrKGNvbnN0IFN0cmluZyYgcAogewogICAgIGF1dG8gcmVzdWx0ID0gbV9hdmFpbGFibGVQ
YXltZW50TmV0d29ya3MuZmluZChwYXltZW50TmV0d29yayk7CiAgICAgaWYgKHJlc3VsdCA9PSBt
X2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKnJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAppbmRleCA0MGE0OTM3ODM3OGYyY2VlMDNiMzIyYzVi
OGMzZmJmYjNjOTdlOGRkLi4wYzUyNWFmZmYzYzQ3MDhkYTM1MDhkMGJhZjFjY2M4MTRjOTI1MmVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApAQCAtMTMwLDM3ICsxMzAsMzcgQEAgT3B0aW9uYWw8
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uPiBN
b2NrV2ViQXV0aGVudGkKICAgICBPcHRpb25hbDxVc2VyVmVyaWZpY2F0aW9uPiB1c2VyVmVyaWZp
Y2F0aW9uOwogICAgIGRlY29kZXIgPj4gdXNlclZlcmlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJW
ZXJpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnVzZXJWZXJpZmljYXRpb24gPSAqdXNlclZlcmlm
aWNhdGlvbjsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGFjY2VwdEF0dGVzdGF0aW9uOwogICAgIGRl
Y29kZXIgPj4gYWNjZXB0QXR0ZXN0YXRpb247CiAgICAgaWYgKCFhY2NlcHRBdHRlc3RhdGlvbikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXN1bHQuYWNjZXB0QXR0ZXN0YXRpb24gPSAqYWNjZXB0QXR0ZXN0YXRpb247CiAK
ICAgICBPcHRpb25hbDxTdHJpbmc+IHByaXZhdGVLZXlCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiBw
cml2YXRlS2V5QmFzZTY0OwogICAgIGlmICghcHJpdmF0ZUtleUJhc2U2NCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1
bHQucHJpdmF0ZUtleUJhc2U2NCA9IFdURk1vdmUoKnByaXZhdGVLZXlCYXNlNjQpOwogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYgKCF1c2VyQ2VydGlmaWNhdGVCYXNlNjQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmVzdWx0LnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKnVzZXJDZXJ0aWZp
Y2F0ZUJhc2U2NCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFz
ZTY0OwogICAgIGlmICghaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCA9IFdURk1vdmUoKmludGVybWVk
aWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwcmVmZXJy
ZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiAgICAgZGVjb2RlciA+PiBwcmVmZXJyZWRDcmVkZW50aWFs
SWRCYXNlNjQ7CiAgICAgaWYgKCFwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmVzdWx0LnByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZENy
ZWRlbnRpYWxJZEJhc2U2NCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTc3LDI3ICsxNzcs
MjcgQEAgT3B0aW9uYWw8TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6SGlkQ29u
ZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpY2EKIHsKICAgICBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5wYXlsb2FkQmFzZTY0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5zdGFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3Vi
U3RhZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmVycm9yKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc1UyZikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQua2VlcEFsaXZlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5mYXN0RGF0YUFycml2YWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LmNvbnRpbnVlQWZ0ZXJFcnJvckRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmNhbkRvd25ncmFkZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXhw
ZWN0Q2FuY2VsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdXBwb3J0Q2xp
ZW50UGluKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMTIsMTMgKzIxMiwxMyBA
QCBPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpOZmNDb25maWd1
cmF0aW9uPiBNb2NrV2ViQXV0aGVudGljYQogewogICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb246Ok5mY0NvbmZpZ3VyYXRpb24gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmVycm9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5w
YXlsb2FkQmFzZTY0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tdWx0aXBs
ZVRhZ3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm11bHRpcGxlUGh5c2lj
YWxUYWdzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yMzYsMjUgKzIzNiwyNSBA
QCBPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uPiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uOgogICAgIE9wdGlvbmFsPGJvb2w+IHNpbGVudEZhaWx1
cmU7CiAgICAgZGVjb2RlciA+PiBzaWxlbnRGYWlsdXJlOwogICAgIGlmICghc2lsZW50RmFpbHVy
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuc2lsZW50RmFpbHVyZSA9ICpzaWxlbnRGYWlsdXJlOwogCiAgICAg
T3B0aW9uYWw8T3B0aW9uYWw8TG9jYWxDb25maWd1cmF0aW9uPj4gbG9jYWw7CiAgICAgZGVjb2Rl
ciA+PiBsb2NhbDsKICAgICBpZiAoIWxvY2FsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5sb2NhbCA9IFdURk1v
dmUoKmxvY2FsKTsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPEhpZENvbmZpZ3VyYXRpb24+PiBo
aWQ7CiAgICAgZGVjb2RlciA+PiBoaWQ7CiAgICAgaWYgKCFoaWQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lmhp
ZCA9IFdURk1vdmUoKmhpZCk7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxOZmNDb25maWd1cmF0
aW9uPj4gbmZjOwogICAgIGRlY29kZXIgPj4gbmZjOwogICAgIGlmICghbmZjKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
c3VsdC5uZmMgPSBXVEZNb3ZlKCpuZmMpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAppbmRleCBlZDRmNzBkY2MwNzU0YTRh
MWY0NDg1NWIxMDJjNzk1OWFmOTUwNWM1Li42NzQzNjRlYmQwMzcxNWIyYTdlZmQxZDk4NDliYTkx
MjY4OWQ1ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRl
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3Bw
CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFNp
bXVsYXRlZFhSRGV2aWNlOjpjcmVhdGVMYXllclByb2plY3Rpb24odWludDMKIHsKICAgICB1c2lu
ZyBHTCA9IEdyYXBoaWNzQ29udGV4dEdMOwogICAgIGlmICghbV9nbCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBQbGF0Zm9y
bVhSOjpMYXllckhhbmRsZSBoYW5kbGUgPSArK21fbGF5ZXJJbmRleDsKICAgICBhdXRvIHRleHR1
cmUgPSBtX2dsLT5jcmVhdGVUZXh0dXJlKCk7CiAgICAgYXV0byBjb2xvckZvcm1hdCA9IGFscGhh
ID8gR0w6OlJHQkE4IDogR0w6OlJHQjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUkRldmljZS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJE
ZXZpY2UuaAppbmRleCA5ZjM2NmNhMTFmZTA0OTliMTAxZjY2NTIwNTI4NmY2MjdjMWM2Y2FkLi5m
NTk3YjNkOTE5MmM3ZjYyNzIxNTc4MzY1NjMzYTI3NjQwNjBjZTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmgKQEAgLTExMiwxMSArMTEyLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFZpZXdzKGNvbnN0IFZlY3RvcjxGYWtlWFJWaWV3SW5pdD4mKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3QoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgc2V0
Vmlld2VyT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBvcmlnaW4sIGJvb2wgZW11bGF0
ZWRQb3NpdGlvbiA9IGZhbHNlKTsKLSAgICB2b2lkIGNsZWFyVmlld2VyT3JpZ2luKCkgeyBtX2Rl
dmljZS5zZXRWaWV3ZXJPcmlnaW4oV1RGOjpudWxsb3B0KTsgfQorICAgIHZvaWQgY2xlYXJWaWV3
ZXJPcmlnaW4oKSB7IG1fZGV2aWNlLnNldFZpZXdlck9yaWdpbihzdGQ6Om51bGxvcHQpOyB9CiAg
ICAgdm9pZCBzaW11bGF0ZVZpc2liaWxpdHlDaGFuZ2UoWFJWaXNpYmlsaXR5U3RhdGUpOwogICAg
IHZvaWQgc2V0Qm91bmRzR2VvbWV0cnkoVmVjdG9yPEZha2VYUkJvdW5kc1BvaW50PiYmIGJvdW5k
cykgeyBtX2RldmljZS5zZXROYXRpdmVCb3VuZHNHZW9tZXRyeShXVEZNb3ZlKGJvdW5kcykpOyB9
CiAgICAgdm9pZCBzZXRGbG9vck9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQpOwotICAg
IHZvaWQgY2xlYXJGbG9vck9yaWdpbigpIHsgbV9kZXZpY2Uuc2V0Rmxvb3JPcmlnaW4oV1RGOjpu
dWxsb3B0KTsgfQorICAgIHZvaWQgY2xlYXJGbG9vck9yaWdpbigpIHsgbV9kZXZpY2Uuc2V0Rmxv
b3JPcmlnaW4oc3RkOjpudWxsb3B0KTsgfQogICAgIHZvaWQgc2ltdWxhdGVSZXNldFBvc2UoKTsK
ICAgICBSZWY8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiBzaW11bGF0ZUlucHV0U291cmNlQ29u
bmVjdGlvbihjb25zdCBGYWtlWFJJbnB1dFNvdXJjZUluaXQmKTsKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPEZha2VYUlZpZXc+PiBwYXJzZVZpZXcoY29uc3QgRmFrZVhSVmlld0luaXQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5o
CmluZGV4IDhiNWJjZjM2NDdlZmNhZGM2OWJiNjhhNjEwYTNkYzk5MzQxMWNiYWEuLjUzOTU5ZTU1
YTk4MmMyYmRlMTg2ZmIyODhmMTVmYTkwMWMyZDU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRUYXJnZXRSYXlNb2RlKFhSVGFyZ2V0UmF5TW9kZSBtb2RlKSB7
IG1fdGFyZ2V0UmF5TW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldFByb2ZpbGVzKFZlY3RvcjxT
dHJpbmc+JiYgcHJvZmlsZXMpIHsgbV9wcm9maWxlcyA9IFdURk1vdmUocHJvZmlsZXMpOyB9CiAg
ICAgdm9pZCBzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2lu
LCBib29sIGVtdWxhdGVkUG9zaXRpb24gPSBmYWxzZSk7Ci0gICAgdm9pZCBjbGVhckdyaXBPcmln
aW4oKSB7IG1fZ3JpcE9yaWdpbiA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQgY2xlYXJHcmlw
T3JpZ2luKCkgeyBtX2dyaXBPcmlnaW4gPSBzdGQ6Om51bGxvcHQ7IH0KICAgICB2b2lkIHNldFBv
aW50ZXJPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvaW50ZXJPcmlnaW4sIGJvb2wg
ZW11bGF0ZWRQb3NpdGlvbiA9IGZhbHNlKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICB2
b2lkIHJlY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjk1ZjVjNmQ2OWRhZTRj
OWNiNzE0Mzk3OGMzZDM4ZjBhNGU4YjI0NC4uMmNkYjc1NTc5NThiYzg5M2UyNjZkNmZiOWMwY2Vj
MTc2NzBmMjkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2Fk
TW9kdWxlU3luY2hyb25vdXNseSgKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNb2R1bGVGZXRj
aEZhaWx1cmVLaW5kOjpXYXNFcnJvcmVkOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVj
dG9yLT5ub3RpZnlMb2FkRmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTG9hZGFibGVTY3JpcHQ6OkVycm9yVHlwZTo6Q2FjaGVkU2NyaXB0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6bnVsbG9wdAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bnVsbG9wdAogICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNDYW5jZWxlZDoKQEAgLTQwNCw3ICs0MDQsNyBA
QCB2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTAogICAgICAgICB9KTsKIAogICAgICAgICBhdXRvJiBm
dWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIDEsIFN0cmluZygpLCBbdGFzaywgc2NyaXB0RmV0Y2hlcl0oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIC0+IEpTQzo6RW5jb2RlZEpTVmFs
dWUgewotICAgICAgICAgICAgLy8gdGFzay0+cnVuKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAg
ICAvLyB0YXNrLT5ydW4oc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrIHsgdm0gfTsKICAg
ICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQxNSw3
ICs0MTUsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRBbmRF
dmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTAogCiAgICAgICAgICAgICBhdXRvKiBj
b250ZXh0ID0gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPnNjcmlwdCgpKSB7Ci0gICAg
ICAgICAgICAgICAgdGFzay0+cnVuKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgdGFz
ay0+cnVuKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIH0KIApAQCAtNDI0LDcgKzQyNCw3IEBA
IHZvaWQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9k
dWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMCiAgICAgICAgICAgICBpZiAoKHJldHVybmVkRXhjZXB0
aW9uICYmIHZtLmlzVGVybWluYXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBj
b250ZXh0LT5zY3JpcHQoKS0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPnNjcmlwdCgpKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5zY3JpcHQoKS0+Zm9yYmlkRXhlY3V0aW9uKCk7Ci0gICAgICAgICAgICAgICAgdGFzay0+cnVu
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgdGFzay0+cnVuKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgIH0KIApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9kdWxl
VVJMCiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVwb3J0RXhjZXB0aW9uKG1lc3NhZ2UsIHsg
fSwgeyB9LCB7IH0sIHsgfSwgeyB9KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGFz
ay0+cnVuKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAKaW5kZXggOGJlODA4MWE3N2E3MzEzZDAxZTk3NTAxNzQ4YzBlZDg2NWU0MTIzMi4uMGYx
OTQ1NDQ4YzQ1Y2IxMTFkY2M0YTI1YTZjOWFiZjZmMTY0NGRlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjcsMTQgKzY3LDE0IEBAIE9w
dGlvbmFsPEV4Y2VwdGlvbj4gV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgICAgICBtX3NjcmlwdCA9IHNjcmlwdFJlc291
cmNlLT5zY3JpcHQ7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2Ut
PnJlc3BvbnNlVVJMOwogICAgICAgICAgICAgbV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVz
b3VyY2UtPm1pbWVUeXBlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3QoY3JlYXRlUmVzb3Vy
Y2VSZXF1ZXN0KGluaXRpYXRvcklkZW50aWZpZXIpKTsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpczxXb3JrZXJHbG9iYWxTY29w
ZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgT3B0aW9u
YWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgc2NyaXB0KCksIG1fcmVzcG9uc2VVUkws
IG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKICAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0
TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiYgc2NyaXB0UmVxdWVzdCwgRmV0Y2hP
cHRpb25zJiYgZmV0Y2hPcHRpb25zLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCBj
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCwgU2VydmljZVdvcmtlcnNNb2RlIHNlcnZp
Y2VXb3JrZXJNb2RlLCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nJiYg
dGFza01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaAppbmRleCA2NDFhMzVkMjFiODg5YWM4Y2Y2ZmE3ZmZjNDg3
NTNkZmNjOTk3MGM1Li45ZTZjYmYyZWNkMzMwZTk1NDQ4M2ExYzM4MmEyMmNkODcyMjM5ZmZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxl
TWVzc2FnZUV2ZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50KHN0YXRlLCB0eXBlLCBpbml0aWFs
aXplciwgaXNUcnVzdGVkKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50U291cmNlPiYmIHNvdXJjZSA9IFdURjo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYs
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0g
eyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxFeHRlbmRhYmxl
TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB+RXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDExOWYzY2ZhMDIwNGM1MmMx
OTI2ODExNmE0YTA3YjQ5ZTAxYmJlZmEuLjc4ZDBhMzMyMGI3MWY1MDU1YzYzYzIyYWM0ZWUzNTRm
NjZlNTlmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV0NsaWVudENv
bm5lY3Rpb246OmNsZWFyUGVuZGluZ0pvYnMoKQogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogewogICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAgICAgYXV0byBjb250cm9sbGluZ1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gZG9jdW1lbnQtPmFjdGl2ZVNlcnZp
Y2VXb3JrZXIoKSA/IG1ha2VPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4oZG9jdW1lbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRp
ZmllcigpKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gZG9jdW1lbnQtPmFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4oZG9jdW1lbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRp
ZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KGRvY3VtZW50LT50b3BPcmlnaW4oKSwgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20o
KmRvY3VtZW50LCAqdGhpcyksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGRvY3VtZW50LT51c2VyQWdlbnQoZG9jdW1lbnQtPnVybCgpKSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaAppbmRleCAwOTA5YTk1MzgxNjRkOWZkNDBiNGJlNTNmNDc3OWUwNzkz
ZjY1OWY2Li4wMzMwYjQ5YmRjMTQ0MGE0NzI4OGUzNWY5MjAyNzdlZjZhYjUzM2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaApAQCAtNjYsMjcgKzY2LDI3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAg
ICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAg
ICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4g
dHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RnJhbWVUeXBlPiBmcmFtZVR5cGU7CiAgICAgZGVjb2RlciA+PiBmcmFtZVR5cGU7CiAgICAg
aWYgKCFmcmFtZVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVUkw+IHVybDsKICAgICBkZWNvZGVy
ID4+IHVybDsKICAgICBpZiAoIXVybCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgZGVjb2RlciA+PiBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpsYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmNwcAppbmRleCBhNmQ0NDdkYWI1NGFjOTZlZjZlMGM3Njc3YjI1ZTJjNzM0NGEwODRjLi4zNTU4
NGI4YWYwNGM1MmI3NjgwY2Q2Yjg3OTQ1YTc2NDg4ZjJhNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJp
bgogICAgIGZvciAoYXV0byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKICAgICAgICAgYXV0
byBpZGVudGlmaWVyID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihpdGVtKTsKICAgICAgICAgaWYg
KCFpZGVudGlmaWVyIHx8ICEqaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWNv
dW50ZXIrKykKICAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyVHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKICAgICAgICAgZWxzZSBpZiAoY291bnRlciA9
PSAyKQogICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1h
a2VPYmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFs
dWUoKSk7CiAgICAgfQotICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IG1ha2VPcHRpb25hbChX
VEZNb3ZlKGNsaWVudElkZW50aWZpZXIpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gKGNv
dW50ZXIgPT0gMikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShjbGllbnRJZGVudGlmaWVy
KSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyLmgKaW5kZXggOThhNGUzNTU2ZDE3ODAwMjAyZTUzYTMwZmI0MjBkZmY2
OGZhODM4NS4uZDYzODFkN2Q1YmM5MmZlYjdmOWUwNjhjMzdhM2E0ZTQyMTg4MTYwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgKQEAgLTYzLDEyICs2MywxMiBAQCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6
OmRlY29kZShEZQogICAgIE9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXI7CiAgICAgaWYgKCFzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPERvY3VtZW50SWRlbnRpZmllcj4gY29udGV4dElkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBjb250ZXh0SWRlbnRpZmllcjsKICAgICBpZiAoIWNvbnRleHRJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHsgeyAqc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsICpjb250
ZXh0SWRlbnRpZmllciB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaAppbmRl
eCBkNDE4ODJhNmMxOGEzYmYxOWEyMDRhMTUzYTFkMmVjYzkyZGFiMGY2Li5kMDE4N2M5ODczYTI4
MWE0ZTJiNzI5OGNjMmMzNTljMDM4ZGRkNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zLmgKQEAgLTUyLDEyICs1MiwxMiBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zPiBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zOjpkZWNvZAogICAgIE9w
dGlvbmFsPGJvb2w+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAgZGVjb2RlciA+PiBpbmNsdWRl
VW5jb250cm9sbGVkOwogICAgIGlmICghaW5jbHVkZVVuY29udHJvbGxlZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlw
ZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICppbmNsdWRlVW5jb250cm9s
bGVkLCAqdHlwZSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggZWZkZmE3YzUwMmU4MDg0
MzA5NzI1YjY0Yzg3MDMzZjZlZDAzNmFjYy4uMmRhMmRiYjE1MzZlOTgwMDU1YmY5NGMwNmI2Y2Iy
NGQyNTdjMTI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtNTcsMTcgKzU3LDE3IEBAIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgICAgICAgICAgT3B0aW9uYWw8U2NyaXB0
QnVmZmVyPiBzY3JpcHQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICAgICAg
ICAgIGlmICghc2NyaXB0KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9u
YWw8VVJMPiByZXNwb25zZVVSTDsKICAgICAgICAgICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7
CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKICAgICAgICAgICAgIGRlY29kZXIg
Pj4gbWltZVR5cGU7CiAgICAgICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqc2Ny
aXB0KSwKQEAgLTExMSw1NCArMTExLDU0IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0
YUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBpZiAo
IWpvYkRhdGFJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+IHJlZ2lzdHJhdGlvbjsKICAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsK
ICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50
aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlm
ICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTY3JpcHRCdWZm
ZXI+IHNjcmlwdDsKICAgICBkZWNvZGVyID4+IHNjcmlwdDsKICAgICBpZiAoIXNjcmlwdCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZW50U2VjdXJpdHlQb2xpY3kp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVmZXJyZXJQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNjcmlwdFVSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3b3JrZXJUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgbG9h
ZGVkRnJvbURpc2s7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJl
c291cmNlTWFwOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87CiAgICAg
ZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEu
aAppbmRleCBjMzhjOWU3YTYwMjliMjg1YWFiYmYyYWRiN2U3OGEwNzQyY2E0ZGFlLi5iYzU2ZTli
MDNkZDBiZmZhMDJjNmFmM2EwZjY2NDZhZWY4MDRjYmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaApAQCAtNTksMjcgKzU5LDI3
IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiBTZXJ2aWNlV29ya2VyRGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+
IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFVSTD4gc2NyaXB0VVJMOwogICAgIGRlY29kZXIgPj4g
c2NyaXB0VVJMOwogICAgIGlmICghc2NyaXB0VVJMKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclN0YXRlPiBzdGF0ZTsKICAgICBkZWNvZGVyID4+IHN0YXRlOwogICAgIGlmICghc3Rh
dGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXb3JrZXJUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4g
dHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4gcmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IHJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKCFyZWdpc3RyYXRpb25JZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgq
c2NyaXB0VVJMKSwgV1RGTW92ZSgqc3RhdGUpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqcmVn
aXN0cmF0aW9uSWRlbnRpZmllcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCBiODE1NjI0NzJjM2U0
ZjY2YTAwZjYyNWJhZWVjMDg5NDJjNmQxNWIxLi5iNmM5NTYzMzhlMWRmZDIxMWRhYzE3YzJiMzEw
NTk1MzI5ZjgxODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAtOTEsMzcgKzkxLDM3IEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBp
ZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhOwogICAgIGpvYkRhdGEu
bV9pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpv
YkRhdGEuc2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEuY2xp
ZW50Q3JlYXRpb25VUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0
b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgam9iRGF0YS50b3BPcmlnaW4gPSBXVEZNb3ZlKCp0b3BPcmlnaW4pOwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnNjb3BlVVJMKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGpvYkRhdGEuc291cmNlQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShqb2JEYXRhLndvcmtlclR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9i
RGF0YS50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoam9iRGF0YS50eXBlKSB7CiAgICAgY2FzZSBT
ZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6IHsKICAgICAgICAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnM+IHJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAgICAgICAg
IGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uT3B0aW9uczsKICAgICAgICAgaWYgKCFyZWdpc3RyYXRp
b25PcHRpb25zKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9u
cyA9IFdURk1vdmUoKnJlZ2lzdHJhdGlvbk9wdGlvbnMpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgKaW5kZXggMWNmYzYxMzUzN2I2ZTkyY2M0MDEx
OTY5YmNjZTExZWM2YWRiM2RmYy4uN2E3ZDY0ODUzZGRjNDcxNmRlMjVkZTA3YTdmMGY3MWEwN2Nk
MGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaApAQCAtNjEsMTIgKzYxLDEyIEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyOjpkZWNvZGUoCiAgICAgT3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcj4gY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBpZiAoIWNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXI+IGpvYklkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBqb2JJZGVudGlmaWVyOwogICAgIGlmICgham9iSWRlbnRpZmllcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKCpq
b2JJZGVudGlmaWVyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAppbmRl
eCA3ZTc2OTVmMmE5MmU2MWEzN2VjNTQ3YzRhNzc1ZjE5ZDNjYzI4ZTA3Li5kNDA2NjlkM2Y2MzI2
OWQwZmFjYjc1YmZlZTQwYjU3NjMwNDMzYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnMKICAgICAgICAg
c2NvcGVVUkwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHVwZGF0ZVZpYUNhY2hlLAogICAgICAg
ICBsYXN0VXBkYXRlVGltZSwKLSAgICAgICAgaW5zdGFsbGluZ1dvcmtlciA/IE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJEYXRhPihpbnN0YWxsaW5nV29ya2VyLT5pc29sYXRlZENvcHkoKSkgOiBXVEY6
Om51bGxvcHQsCi0gICAgICAgIHdhaXRpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4od2FpdGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogV1RGOjpudWxsb3B0LAotICAg
ICAgICBhY3RpdmVXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oYWN0aXZlV29y
a2VyLT5pc29sYXRlZENvcHkoKSkgOiBXVEY6Om51bGxvcHQsCisgICAgICAgIGluc3RhbGxpbmdX
b3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oaW5zdGFsbGluZ1dvcmtlci0+aXNv
bGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAgICAgICB3YWl0aW5nV29ya2VyID8gT3B0
aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KHdhaXRpbmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6
IHN0ZDo6bnVsbG9wdCwKKyAgICAgICAgYWN0aXZlV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+KGFjdGl2ZVdvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAog
ICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKaW5kZXggZjNiZjMyYjlmZDc4
NzU5ZTE3YmI5ZGY2OGYwY2M4MjRhOTY0MGQzNS4uOWY1M2ZhZDJhYjVhZWNhNjZiMjI2ZDU2OTYz
MzIyMjBiNWI0YzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKQEAgLTY4LDQyICs2
OCw0MiBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE6OmRlY29kZShEZQogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXk+IGtleTsKICAgICBkZWNvZGVyID4+IGtleTsKICAgICBpZiAoIWtl
eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFp
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VVJMPiBzY29wZVVSTDsKICAgICBkZWNvZGVy
ID4+IHNjb3BlVVJMOwogICAgIGlmICghc2NvcGVVUkwpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGRlY29kZXIgPj4g
dXBkYXRlVmlhQ2FjaGU7CiAgICAgaWYgKCF1cGRhdGVWaWFDYWNoZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPGRvdWJsZT4gcmF3V2FsbFRpbWU7CiAgICAgZGVjb2RlciA+PiByYXdXYWxsVGltZTsKICAg
ICBpZiAoIXJhd1dhbGxUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+PiBpbnN0YWxsaW5nV29ya2VyOwogICAgIGRlY29kZXIgPj4gaW5zdGFsbGluZ1dv
cmtlcjsKICAgICBpZiAoIWluc3RhbGxpbmdXb3JrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IHdhaXRpbmdXb3JrZXI7CiAgICAgZGVjb2RlciA+PiB3
YWl0aW5nV29ya2VyOwogICAgIGlmICghd2FpdGluZ1dvcmtlcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPj4gYWN0aXZlV29ya2VyOwogICAgIGRlY29kZXIg
Pj4gYWN0aXZlV29ya2VyOwogICAgIGlmICghYWN0aXZlV29ya2VyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCprZXkpLCBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqc2NvcGVV
UkwpLCBXVEZNb3ZlKCp1cGRhdGVWaWFDYWNoZSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygq
cmF3V2FsbFRpbWUpLCBXVEZNb3ZlKCppbnN0YWxsaW5nV29ya2VyKSwgV1RGTW92ZSgqd2FpdGlu
Z1dvcmtlciksIFdURk1vdmUoKmFjdGl2ZVdvcmtlcikgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuY3BwCmluZGV4IGU0NDUyYTdmNDVhODQwNDZiNTM0ZmYwNDVlYWJhMGJjYzYxZDhi
YjYuLjcwNWIyZWY1NjAzNGZjNGNhNjNmNWJlNzBjYTcwZmNhMTllODk4MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9t
RGF0YWJhcwogICAgIGF1dG8gdGhpcmQgPSBrZXkuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIsIHNl
Y29uZCArIDEpOwogCiAgICAgaWYgKGZpcnN0ID09IHNlY29uZCB8fCBzZWNvbmQgPT0gdGhpcmQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDx1aW50MTZfdD4gc2hvcnRQb3J0OwogCkBAIC0xMTAsMTIgKzEx
MCwxMiBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhcwogICAgIGlmICh0aGlyZCAtIHNlY29uZCA+
IDEpIHsKICAgICAgICAgc2hvcnRQb3J0ID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90PihTdHJpbmdW
aWV3IHsga2V5IH0uc3Vic3RyaW5nKHNlY29uZCArIDEsIHRoaXJkIC0gc2Vjb25kIC0gMSkpOwog
ICAgICAgICBpZiAoIXNob3J0UG9ydCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2Nv
cGUgPSBVUkwgeyBVUkwoKSwga2V5LnN1YnN0cmluZyh0aGlyZCArIDEpIH07CiAgICAgaWYgKCFz
Y29wZS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSB7IHsga2V5LnN1YnN0cmluZygwLCBmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAx
LCBzZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCmluZGV4IGNlYWNmZDU5MmE2ZGVmYWI1ZjEwNDVkZDcy
ZWM5ZjBiZTcwY2E3MTQuLmQwZjliNDQ1YjUyNDNlOTMwOTAzMDhkN2ExZTM3YWQ0YmRlZjEwN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaApAQCAtODYsMTEgKzg2LDExIEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk6OmRlY29kZShEZWNvCiAgICAgT3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmln
aW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBVUkwgc2NvcGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY29wZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IFdURk1vdmUoKnRvcE9yaWdp
biksIFdURk1vdmUoc2NvcGUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5o
CmluZGV4IDJlMzU1N2ZhN2RmNjdmMWJmOThjN2I3YTVkZTRiMGE1YTdiY2NjZjUuLmZlMDJiZjdm
Y2Q1ZjE1ODllMTJiNWJhMjY5MDYyMjU3Yzc0ZDU4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uT3B0aW9ucy5oCkBAIC01NywxNyArNTcsMTcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbk9wdGlvbnM+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zOjpkZWMK
ICAgICBPcHRpb25hbDxTdHJpbmc+IHNjb3BlOwogICAgIGRlY29kZXIgPj4gc2NvcGU7CiAgICAg
aWYgKCFzY29wZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVj
b2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJVcGRhdGVWaWFDYWNoZT4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgZGVjb2RlciA+PiB1cGRh
dGVWaWFDYWNoZTsKICAgICBpZiAoIXVwZGF0ZVZpYUNhY2hlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHsgV1RGTW92ZSgqc2NvcGUpLCBXVEZNb3Zl
KCp0eXBlKSwgV1RGTW92ZSgqdXBkYXRlVmlhQ2FjaGUpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGY0MWJmODNmYWMzNTQzMTkzYTJhYjljYTYxMzdjMzhmNzQ5MjZjZjIu
LjUwMWQyZWQ4YjhhODgzYzEwZjU4NjUxYmQ4ODZkZGQ0MzA2OGMyMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6On5T
ZXJ2aWNlV29ya2VyVGhyZWFkKCkgPSBkZWZhdWx0OwogUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBXb3JrZXJQ
YXJhbWV0ZXJzJiBwYXJhbXMsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9kYXRhKTsK
LSAgICByZXR1cm4gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoKnN0ZDo6ZXhjaGFu
Z2UobV9kYXRhLCBXVEY6Om51bGxvcHQpLCBwYXJhbXMsIFdURk1vdmUob3JpZ2luKSwgKnRoaXMs
IFdURk1vdmUodG9wT3JpZ2luKSwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVy
KCkpOworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqc3RkOjpl
eGNoYW5nZShtX2RhdGEsIHN0ZDo6bnVsbG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAq
dGhpcywgV1RGTW92ZSh0b3BPcmlnaW4pLCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJv
dmlkZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCAzN2M0YjdhMjIwYzFiODZmNTBjNzY5N2I0ZDdl
OTMzZDM4YjE3M2M4Li5iZTE3YjJiODUzOTE2OTVlMWE5MGY2NzU1MDE3NzI3NTQ4NWY2NWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAKICAg
ICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAg
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gbV9qb2JEYXRhSWRlbnRp
ZmllcjsKLSAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fZGF0YTsgLy8g
QmVjb21lcyBXVEY6Om51bGxvcHQgYWZ0ZXIgdGhlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBo
YXMgYmVlbiBjcmVhdGVkLgorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4g
bV9kYXRhOyAvLyBCZWNvbWVzIHN0ZDo6bnVsbG9wdCBhZnRlciB0aGUgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQuCiAgICAgV29ya2VyT2JqZWN0UHJveHkmIG1fd29y
a2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRjaCB7IGZhbHNlIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggNjUzN2U5NTE3MzZiZWFmMTcxZmI2MTg1
ZmM3ZDI4ZWRlMjQ4NDYwNC4uYzllY2IzNTUwZjA5Nzk4NWUwNmFkZGJkOTg2OGQ5MGQ5NDkzOTk0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdp
c3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTExNSwxMiArMTE1LDEyIEBAIHN0
cnVjdCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXMgewogICAgICAgICBPcHRpb25hbDxVUkw+IHJl
c3BvbnNlVVJMOwogICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOwogICAgICAgICBpZiAo
IXJlc3BvbnNlVVJMKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1l
VHlwZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKICAgICAgICAgaWYgKCFtaW1lVHlw
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgq
cmVzcG9uc2VVUkwpLApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyVXBkYXRlVmlhQ2FjaGU+IHN0cmluZ1RvVXBkYXRlVmlhQ2FjaGUoY29uc3QgU3RyaW5n
CiAgICAgaWYgKHVwZGF0ZSA9PSAiTm9uZSIpCiAgICAgICAgIHJldHVybiBTZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGU6Ok5vbmU7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBTdHJpbmcgd29ya2VyVHlwZVRvU3RyaW5n
KFdvcmtlclR5cGUgd29ya2VyVHlwZSkKQEAgLTM1MSw3ICszNTEsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8V29ya2VyVHlwZT4gc3RyaW5nVG9Xb3JrZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKICAg
ICBpZiAodHlwZSA9PSAiTW9kdWxlIikKICAgICAgICAgcmV0dXJuIFdvcmtlclR5cGU6Ok1vZHVs
ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6cHVzaENoYW5nZXMoY29uc3QgSGFzaE1h
cDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE+PiYgY2hhbmdlZFJlZ2lzdHJhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTU2OCw4ICs1NjgsOCBAQCBTdHJpbmcgUmVnaXN0
cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRvIHdvcmtlcklkZW50
aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0
byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2
aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtl
clN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07
Ci0gICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3Bl
VVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0
byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwg
V1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCks
IFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGlj
eSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJU
eXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9
OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsg
c3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdU
Rk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVu
dFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0
VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0
YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcAppbmRleCA3NGE1Y2QyZjQzOTRjYjAzMzE0NGIzMjEzM2EzMDBmZTFiYzEyNTgw
Li44ZmYwNmFmNWM5MmE5YjAwYTYyMmJjZjM1NTFhMGIxMTEwYzEwNmNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
blN0b3JlLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OnJl
bW92ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrCiAg
ICAgaWYgKGtleS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdXBkYXRlZFJl
Z2lzdHJhdGlvbnMuc2V0KGtleSwgV1RGOjpudWxsb3B0KTsKKyAgICBtX3VwZGF0ZWRSZWdpc3Ry
YXRpb25zLnNldChrZXksIHN0ZDo6bnVsbG9wdCk7CiAgICAgc2NoZWR1bGVEYXRhYmFzZVB1c2hJ
Zk5lY2Vzc2FyeSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5kZXggMjYwYTQ1YTM1ZGY3NTE0
Njg1OGRiYWMyYWMyMjg1ZWQ3OTJjMmM3Ni4uOGY3NjBkNjJmN2RiMDA3ZTVjNGFiZWQzOGFhMDhj
YmVmZTAxNjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRVc2VGaWxlTWFwcGluZyh1aW50NjRfdCBmaWxlU2l6ZSkKIAogU1dTY3JpcHRT
dG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgOiBt
X2RpcmVjdG9yeShkaXJlY3RvcnkpCi0gICAgLCBtX3NhbHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFr
ZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVPcihGaWxlU3lzdGVtOjpTYWx0KCkpKQorICAgICwgbV9z
YWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpLnZhbHVlX29yKEZpbGVT
eXN0ZW06OlNhbHQoKSkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IGFmYzU4ODQzNDI5NTgwYzdmY2FmOGFiMDdkMThlMWE2MmE2ZDQ5YmUuLmY3YWYwN2QxYjRh
OWM3NTQzNzhkZTIzNmU0YTRmYjlmZTFmMmRiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC05NSwxMCArOTUsMTAgQEAg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjpzZXJ2aWNlV29ya2Vy
Q2xpZW50V2l0aE9yaWdpbkJ5SUQoY28KIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJ
ZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKGNsaWVudE9yaWdpbik7CiAgICAgaWYgKGl0ZXJhdG9y
ID09IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWl0
ZXJhdG9yLT52YWx1ZS5pZGVudGlmaWVycy5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gY2xpZW50SXRlcmF0b3IgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50SWRl
bnRpZmllcik7CiAgICAgQVNTRVJUKGNsaWVudEl0ZXJhdG9yICE9IG1fY2xpZW50c0J5SWQuZW5k
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDEyMDA1
MTY5OGJmOTM5ODE4ZTRkNDNlODVjNjk1NzMwMGJhN2RjYWYuLmIwNTYyOGY0MDBlYTlkOWM2Mzdm
YzNhYjQ1N2YwMDRmZGM1ZjI4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZQogewog
ICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50
aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGF1dG8qIHNlcnZlciA9IHdvcmtl
ciA/IHdvcmtlci0+c2VydmVyKCkgOiBudWxscHRyOwotICAgIGNhbGxiYWNrKHNlcnZlciA/IHNl
cnZlci0+Y2xhaW0oKndvcmtlcikgOiBXVEY6Om51bGxvcHQpOworICAgIGNhbGxiYWNrKHNlcnZl
ciA/IHNlcnZlci0+Y2xhaW0oKndvcmtlcikgOiBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2tpcFdhaXRpbmcoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggOTcyNTcwMDZlOGEyN2Nk
MDVhYzM0YjQwMDVjOWVjYzliYTRmN2Q4OC4uMjQwNTI5ODc4YjdiYmEyZDVjOGRlMjVjY2FjMTZm
NDYwMGNmOWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIFNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKG1fcmVnaXN0cmF0aW9uKTsKIAotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
bV9yZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRhLmlkZW50aWZpZXIsIG1fc2NyaXB0LCBtX2Nl
cnRpZmljYXRlSW5mbywgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ks
IG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9sYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kLCBtX3NjcmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxs
b3B0LCBtX3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQs
IG1fY2VydGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBv
bGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAogdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCA4MGRkZDNkZTNlZGM0MjRlMzcwZTU2OTlhODEzZDZlOWVlNGZiZTAzLi5kODUyNDRj
YTcyMDViMmFmNzBhY2UyOTE1YjQ1YTU1N2M4Njc1MjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKQEAgLTQwNyw4ICs0MDcsOCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxI
dHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmws
CiAKIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZvaWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRv
U2VuZCgpCiB7Ci0gICAgLy8gQSByZXR1cm4gdmFsdWUgb3RoZXIgdGhhbiBXVEY6Om51bGxvcHQg
bWVhbnMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc2VuZCwgYW5kIHdlIHNob3VsZCByZXR1cm4gdGhh
dCB2YWx1ZSB0byB0aGUgY2FsbGVyLgotICAgIC8vIFdURjo6bnVsbG9wdCBtZWFucyB3ZSBhcmUg
cmVhZHkgdG8gc2VuZCBhbmQgc2hvdWxkIGNvbnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGht
LgorICAgIC8vIEEgcmV0dXJuIHZhbHVlIG90aGVyIHRoYW4gc3RkOjpudWxsb3B0IG1lYW5zIHdl
IHNob3VsZCBub3QgdHJ5IHRvIHNlbmQsIGFuZCB3ZSBzaG91bGQgcmV0dXJuIHRoYXQgdmFsdWUg
dG8gdGhlIGNhbGxlci4KKyAgICAvLyBzdGQ6Om51bGxvcHQgbWVhbnMgd2UgYXJlIHJlYWR5IHRv
IHNlbmQgYW5kIHNob3VsZCBjb250aW51ZSB3aXRoIHRoZSBzZW5kIGFsZ29yaXRobS4KIAogICAg
IGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
T3I8dm9pZD4geyB9OwpAQCAtNDM2LDcgKzQzNiw3IEBAIE9wdGlvbmFsPEV4Y2VwdGlvbk9yPHZv
aWQ+PiBYTUxIdHRwUmVxdWVzdDo6cHJlcGFyZVRvU2VuZCgpCiAgICAgfQogCiAgICAgbV9lcnJv
ciA9IGZhbHNlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoT3B0aW9u
YWw8U2VuZFR5cGVzPiYmIHNlbmRUeXBlKQpAQCAtNjIzLDcgKzYyMyw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KCkKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1fZXhjZXB0aW9uQ29kZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2V4Y2VwdGlvbkNv
ZGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fdXBsb2FkQ29t
cGxldGUgPSAhcmVxdWVzdC5odHRwQm9keSgpOwogICAgIG1fc2VuZEZsYWcgPSB0cnVlOwpAQCAt
Njk5LDggKzY5OSw4IEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAg
ICAgLy8gQ2FuY2VsbGluZyBtX2xvYWRpbmdBY3Rpdml0eSBtYXkgdHJpZ2dlciBhIHdpbmRvdy5v
bmxvYWQgY2FsbGJhY2sgd2hpY2ggY2FuIGNhbGwgb3BlbigpIG9uIHRoZSBzYW1lIHhoci4KICAg
ICAvLyBUaGlzIHdvdWxkIGNyZWF0ZSBpbnRlcm5hbEFib3J0IHJlZW50cmFudCBjYWxsLgotICAg
IC8vIG1fbG9hZGluZ0FjdGl2aXR5IGlzIHNldCB0byBXVEY6Om51bGxvcHQgYmVmb3JlIGJlaW5n
IGNhbmNlbGxlZCB0byBleGl0IGVhcmx5IGluIGFueSByZWVudHJhbnQgaW50ZXJuYWxBYm9ydCgp
IGNhbGwuCi0gICAgYXV0byBsb2FkaW5nQWN0aXZpdHkgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9hZGlu
Z0FjdGl2aXR5LCBXVEY6Om51bGxvcHQpOworICAgIC8vIG1fbG9hZGluZ0FjdGl2aXR5IGlzIHNl
dCB0byBzdGQ6Om51bGxvcHQgYmVmb3JlIGJlaW5nIGNhbmNlbGxlZCB0byBleGl0IGVhcmx5IGlu
IGFueSByZWVudHJhbnQgaW50ZXJuYWxBYm9ydCgpIGNhbGwuCisgICAgYXV0byBsb2FkaW5nQWN0
aXZpdHkgPSBzdGQ6OmV4Y2hhbmdlKG1fbG9hZGluZ0FjdGl2aXR5LCBzdGQ6Om51bGxvcHQpOwog
ICAgIGxvYWRpbmdBY3Rpdml0eS0+bG9hZGVyLT5jYW5jZWwoKTsKIAogICAgIC8vIElmIHdpbmRv
dy5vbmxvYWQgY2FsbGJhY2sgY2FsbHMgb3BlbigpIGFuZCBzZW5kKCkgb24gdGhlIHNhbWUgeGhy
LCBtX2xvYWRpbmdBY3Rpdml0eSBpcyBub3cgc2V0IHRvIGEgbmV3IHZhbHVlLgpAQCAtOTIyLDcg
KzkyMiw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZykKIAogICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKLSAgICBtX2xv
YWRpbmdBY3Rpdml0eSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xvYWRpbmdBY3Rpdml0eSA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIG1fc2VuZEZsYWcgPSBmYWxzZTsKICAgICBjaGFuZ2VTdGF0ZShE
T05FKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vz
c2lvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzU2Vz
c2lvblBhcmFtZXRlcnMuaAppbmRleCA5ODBkNjQxY2IxZTgxNDc4ZjQ1OTE5OGUyMTY3NjdhNWRh
MTgzNDY3Li4xMmFlZDZjYTNhMmExOWMxYWRkYWExZjM1NWY5NDRkNTgzZTY4ZjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3NTZXNzaW9uUGFyYW1l
dGVycy5oCkBAIC01NiwyMyArNTYsMjMgQEAgc3RydWN0IEdQVVByb2Nlc3NTZXNzaW9uUGFyYW1l
dGVycyB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFDYWNoZURpcmVjdG9yeTsKICAg
ICAgICAgZGVjb2RlciA+PiBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgICAgICBpZiAoIW1lZGlh
Q2FjaGVEaXJlY3RvcnkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IG1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
OwogICAgICAgICBkZWNvZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwogICAgICAgICBpZiAoIW1lZGlhQ2FjaGVEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAg
ICAgICBkZWNvZGVyID4+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIGlmICgh
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeVNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeVNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAgICAgICAgIHJldHVybiBHUFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9EaXNwbGF5TGlzdFJl
YWRlckhhbmRsZS5jcHAKaW5kZXggOGYxNDQ4NzA3YzJhMGQ2NDBiOTMwYjFkYzUyYzkyYzZhMDg2
MTM2MS4uOWNlNDU2NTk0ZDU3ZmRiYTIwMGNkMTBiMTE3NzYxYjcyYzQzMGFlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxp
c3RSZWFkZXJIYW5kbGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gRGlz
cGxheUxpc3RSZWFkZXJIYW5kbGU6OmFkdmFuY2Uoc2l6ZV90IGFtb3VudCkKIHsKICAgICBhdXRv
IHByZXZpb3VzVW5yZWFkQnl0ZXMgPSBoZWFkZXIoKS51bnJlYWRCeXRlcy5leGNoYW5nZVN1Yihh
bW91bnQpOwogICAgIGlmIChVTkxJS0VMWShwcmV2aW91c1VucmVhZEJ5dGVzIDwgYW1vdW50KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gcHJldmlvdXNVbnJlYWRCeXRlcyAtIGFtb3VudDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVy
SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaAppbmRleCA0Nzk1Nzc1M2FlMjczYmE1ZWIxOTMxYzc1ZDlmNGQzYWE3ZTE1
NDRlLi5lYTc2NGZkZjdkNjY4ZTUwN2MzN2ZmMzU5ZDk5OWYxYWFkYmFlNDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvRGlzcGxheUxpc3RS
ZWFkZXJIYW5kbGUuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6V2FpdGluZ1N0YXR1cz4ocHJldmlvdXNT
dGF0dXMpID09IFNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpXYWl0aW5nU3RhdHVzOjpSZXN1bWlu
ZykKICAgICAgICAgICAgIHJldHVybiB7IGhlYWRlci5yZXN1bWVSZWFkaW5nSW5mbyB9OwogCi0g
ICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQgfTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXgg
NWVlNTFjY2Q2MjA1NWM3YjExNjMyMTgzOGRmMTMwMWUxNGYzODRkNC4uZDM0NDVmZWE3MmQ1ZGMz
ZTFkYzMzNTYxYjgxMTIzOWZlMDEzZmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAt
MTgxLDcgKzE4MSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgdXBkYXRlUmVuZGVy
aW5nUmVzb3VyY2VSZXF1ZXN0KCk7CiAKICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBt
X3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCi0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNo
YW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAg
ICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2Fr
ZXVwSW5mbywgc3RkOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAogRGlzcGxheUxpc3Q6OlJl
cGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uKQpA
QCAtMjM5LDcgKzIzOSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5CiAgICAgICAgICAgICBk
ZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKICAgICAgICAgICAg
IGlmICghZGVzdGluYXRpb24pIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ1dh
a2V1cEluZm8pOwotICAgICAgICAgICAgICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFu
ZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyLCByZWFzb24gfSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAgICAgICAgIG1fcGVuZGlu
Z1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zmc2V0LCAqcmVzdWx0Lm5l
eHREZXN0aW5hdGlvbkltYWdlQnVmZmVyLCByZWFzb24gfSwgc3RkOjpudWxsb3B0IH19OwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI4MCw3ICsyODAsNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVy
QWZ0ZXJBcHBseQogCiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKLSAgICAgICAgICAgICAgICBtX3Bl
bmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgbmV3RGVz
dGluYXRpb25JZGVudGlmaWVyLCByZWFzb24gfSwgV1RGOjpudWxsb3B0IH19OworICAgICAgICAg
ICAgICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sgaGFuZGxlLmlkZW50aWZpZXIoKSwgb2Zm
c2V0LCBuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIsIHJlYXNvbiB9LCBzdGQ6Om51bGxvcHQgfX07
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMx
Niw3ICszMTYsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5
RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gT3RoZXJ3aXNlLCBjb250aW51ZSByZWFkaW5nIHRoZSBuZXh0IGRpc3BsYXkgbGlzdCBp
dGVtIGJ1ZmZlciBmcm9tIHRoZSBzdGFydC4KLSAgICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6
OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50czsK
KyAgICAgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cElu
Zm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50czsKICAgICAgICAgZGVzdGluYXRpb25JbWFnZUJ1
ZmZlciA9IG5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0ZXJBcHBseWluZ0Rpc3BsYXlMaXN0
cygqZGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgYXJndW1lbnRzLm9mZnNldCwgKm5leHRIYW5kbGUs
IGFyZ3VtZW50cy5yZWFzb24pOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICBicmVhazsKQEAgLTMyNSwxNiArMzI1LDE2IEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNz
V2FrZXVwTWVzCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c2V0TmV4dEl0ZW1CdWZm
ZXJUb1JlYWQoRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIp
CiB7Ci0gICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVyLCBTaGFyZWREaXNw
bGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIEdQVVBy
b2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAgICBt
X3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGlkZW50aWZpZXIsIFNoYXJlZERpc3BsYXlMaXN0SGFu
ZGxlOjpoZWFkZXJTaXplKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc1dha2V1
cFJlYXNvbjo6VW5zcGVjaWZpZWQgfSwgc3RkOjpudWxsb3B0IH19OwogfQogCiBPcHRpb25hbDxT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6dXBkYXRlU2hh
cmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXJIZWxwZXIoc2l6ZV90IGJ5dGVDb3VudCkKIHsKLSAg
ICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFtX2dldFBpeGVsQnVmZmVyU2hhcmVk
TWVtb3J5IHx8IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUo
KSwgV1RGOjpudWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNobWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigp
IGlzIGFscmVhZHkgYmlnIGVub3VnaCB0byBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKKyAgICBNRVNT
QUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFtX2dldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5
IHx8IGJ5dGVDb3VudCA+IG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSwgc3Rk
OjpudWxsb3B0LCAiVGhlIGV4aXN0aW5nIFNobWVtIGZvciBnZXRQaXhlbEJ1ZmZlcigpIGlzIGFs
cmVhZHkgYmlnIGVub3VnaCB0byBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKIAogICAgIGlmIChieXRl
Q291bnQgPiA2NCAqIE1CKSB7CiAgICAgICAgIC8vIEp1c3QgYSBzYW5pdHkgY2hlY2suIEEgNEsg
aW1hZ2UgaXMgMzZNQi4KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBkZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFy
ZWRNZW1vcnkoKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgog
ICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoKmltYWdl
KSk7CiAKICAgICBpZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZv
LT5zaG91bGRQZXJmb3JtV2FrZXVwKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAg
ICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtl
dXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpudWxs
b3B0KS0+YXJndW1lbnRzKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNo
ZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKQEAgLTQ2MCw3ICs0NjAsNyBAQCB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQogICAgIGF1dG8gaWRl
bnRpZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5jYWNoZUZvbnQoV1RGTW92ZShmb250KSk7CiAgICAgaWYgKG1fcGVu
ZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1
cChpZGVudGlmaWVyKSkKLSAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4
Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIFdURjo6bnVsbG9wdCktPmFyZ3VtZW50cyk7Cisg
ICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdX
YWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZvbnRzKCkKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxl
KERpc3BsYXlMaXN0OjpJdGVtQgogICAgIH0KIAogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZv
ICYmIG1fcGVuZGluZ1dha2V1cEluZm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikp
Ci0gICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRp
bmdXYWtldXBJbmZvLCBXVEY6Om51bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBB
bmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3Rk
OjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0KIAogT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJ
dGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVt
VHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKQEAgLTU4OCwxMCArNTg4LDEwIEBA
IE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp1cGRhdGVSZW5kZXJpbmdS
ZXNvdXJjZVJlcXVlc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggMTAwMDM4OTVjMDQ5NDg4
NmI0ZGFjNzRmNDIxMzY2MDFiYTg2YzRiNC4uZGNjYzgyMDgyMTFjMWZiYzg4ODNhODMxNDgwYTI0
YTQ5YTMxOTljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRpb24gKyBzaXplb2YodWludDY0X3Qp
KSBUKFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVMb2NhdGlv
biB9fTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXlSZXN1bHQgc3VibWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3NjhhMzhiZjhiODEw
MTZhNWQxNTRhNzQ3YzI5NGFjNWJlZDRkN2Y3Li44YWFiNzhmNjViYTRlMDdlYmM4ODY5MGU4MGY0
YTFkYTk2ZDhlZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTUwLDIyICs1MCwyMiBAQCBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyPiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZp
ZXI7CiAgICAgICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPElQQzo6U2VtYXBob3JlPiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKICAgICAgICAg
ZGVjb2RlciA+PiByZXN1bWVEaXNwbGF5TGlzdFNlbWFwaG9yZTsKICAgICAgICAgaWYgKCFyZXN1
bWVEaXNwbGF5TGlzdFNlbWFwaG9yZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IHBhZ2VQcm94eUlEOwogICAgICAgICBkZWNvZGVyID4+IHBh
Z2VQcm94eUlEOwogICAgICAgICBpZiAoIXBhZ2VQcm94eUlEKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICAgICAgZGVj
b2RlciA+PiBwYWdlSUQ7CiAgICAgICAgIGlmICghcGFnZUlEKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIHt7ICppZGVudGlmaWVyLCBXVEZNb3ZlKCpyZXN1bWVEaXNwbGF5TGlzdFNlbWFw
aG9yZSksICpwYWdlUHJveHlJRCwgKnBhZ2VJRCB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9uU2VnbWVudEluZm8u
aAppbmRleCAxZDM0OGVmZDFlMzdiNzA2N2UyOGVlYmFlNjZhOTJlMjBhMDNlNWQyLi5kMTI3OWE0
NTRmZWU4NGUwNTdlZDNhZmIxMGI2YjVjZGIyNTM4ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9Jbml0aWFsaXphdGlvblNlZ21lbnRJbmZvLmgK
QEAgLTU3LDEyICs1NywxMiBAQCBzdHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyB7CiAg
ICAgICAgICAgICBPcHRpb25hbDxNZWRpYURlc2NyaXB0aW9uSW5mbz4gbWVkaWFEZXNjcmlwdGlv
bjsKICAgICAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFEZXNjcmlwdGlvbjsKICAgICAgICAgICAg
IGlmICghbWVkaWFEZXNjcmlwdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAg
IE9wdGlvbmFsPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAg
ICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4ge3sKICAgICAgICAg
ICAgICAgICBXVEZNb3ZlKCptZWRpYURlc2NyaXB0aW9uKSwKQEAgLTkwLDIyICs5MCwyMiBAQCBz
dHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyB7CiAgICAgICAgIE9wdGlvbmFsPE1lZGlh
VGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAgICAgICAgIGlm
ICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8VHJhY2tJ
bmZvcm1hdGlvbj4+IGF1ZGlvVHJhY2tzOwogICAgICAgICBkZWNvZGVyID4+IGF1ZGlvVHJhY2tz
OwogICAgICAgICBpZiAoIWF1ZGlvVHJhY2tzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRpb24+PiB2aWRlb1RyYWNrczsKICAgICAgICAgZGVjb2Rl
ciA+PiB2aWRlb1RyYWNrczsKICAgICAgICAgaWYgKCF2aWRlb1RyYWNrcykKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdGV4dFRyYWNrczsK
ICAgICAgICAgZGVjb2RlciA+PiB0ZXh0VHJhY2tzOwogICAgICAgICBpZiAoIXRleHRUcmFja3Mp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmR1
cmF0aW9uKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDgyNDZkOWM3NTZl
ZjNiNzFkMGY4OGJjZGNhNDg2OGNmMWJiODdjMjYuLjEzNjg5M2EwY2QzOTBkNDkwNmMwOGNhNjI2
OGMzYWIyMTQxYTJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzgs
MTQgKzc4LDE0IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKIHZvaWQgUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHk6OnVwZGF0ZUxpY2Vuc2UoU3RyaW5nIHNlc3Npb25JZCwgTGljZW5zZVR5
cGUgdHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNvbXBsZXRpb24pCiB7CiAgICAgaWYgKCFyZXNwb25zZS5idWZmZXIoKSkgewot
ICAgICAgICBjb21wbGV0aW9uKHRydWUsIHsgfSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbih0cnVlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBJbXBs
ZW1lbnQgdGhlIENETVByaXZhdGU6OnNhbml0aXplUmVzcG9uc2UoKSBjaGVjayBoZXJlOgogICAg
IGF1dG8gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2NkbS0+c2FuaXRpemVSZXNwb25zZSgqcmVzcG9u
c2UuYnVmZmVyKCkpOwogICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UpIHsKLSAgICAgICAgY29t
cGxldGlvbihmYWxzZSwgeyB9LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UpOwor
ICAgICAgICBjb21wbGV0aW9uKGZhbHNlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgdm9p
ZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUg
dHlwZSwgU3RyaW5nIHNlc3Npb24KICAgICAvLyBJbXBsZW1lbnQgdGhlIENETVByaXZhdGU6OnNh
bml0aXplU2Vzc2lvbklkKCkgY2hlY2sgaGVyZToKICAgICBhdXRvIHNhbml0aXplZFNlc3Npb25J
ZCA9IG1fY2RtLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQpOwogICAgIGlmICghc2FuaXRp
emVkU2Vzc2lvbklkKSB7Ci0gICAgICAgIGNvbXBsZXRpb24oV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxv
YWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOworICAgICAgICBjb21wbGV0aW9uKHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBDRE1JbnN0YW5j
ZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKaW5kZXggMWY3
ZTE0MzBhN2Q3NjQ5ZDk2NWUyODkxYWMyZThlNTI5YTIwMTdhZC4uZDc2ZmNmMWE2ZmM4MTY2ZTUz
NGE5NWRmMjI1MzYwZWI2NGY4NGMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEoSW1h
Z2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zCiB7CiAgICAgQVNTRVJUKG1faW1h
Z2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2Rl
cnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwg
eyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCwg
eyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmNwcAppbmRleCBiMjkwODk4MWU0Nzc3M2E1N2MyODZjYjYzNWJk
OTJjY2YzMGY3NTZkLi44ZWU5ZWU4ZTEzMjI0MjQxNDY2NmU4YmVkYzk4ZmQ2NGUyMjFkMDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtNjgsNyArNjgsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHN0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGNvbnZl
cnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQogewogICAgIGlmICghYXJyYXkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIqKWFycmF5LT5k
YXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07CiB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVmZmVy
Q29weSYmIHVwZGF0ZSwgVXBkYXRlQwogewogICAgIGF1dG8gdXBkYXRlQXJyYXkgPSBjb252ZXJ0
VG9VaW50OEFycmF5KFdURk1vdmUodXBkYXRlKSk7CiAgICAgaWYgKCF1cGRhdGVBcnJheSkgewot
ICAgICAgICBjb21wbGV0aW9uKGZhbHNlLCBXVEY6Om51bGxvcHQsIDAsIDApOworICAgICAgICBj
b21wbGV0aW9uKGZhbHNlLCBzdGQ6Om51bGxvcHQsIDAsIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhRGVzY3JpcHRpb24uaAppbmRleCA5MDZjZGY2N2ZiNzMyMWQ1ZTAyMmY3M2QxZTlkMzNj
ZTFlOWY1ODc2Li5hMzkwMDFmZmI3OTk1OWJhNzU3OGJiNjAzYmYwZjg4OWE4ZTMxY2ZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlw
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURl
c2NyaXB0aW9uLmgKQEAgLTczLDIyICs3MywyMiBAQCBzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbklu
Zm8gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvZGVjOwogICAgICAgICBkZWNvZGVyID4+
IGNvZGVjOwogICAgICAgICBpZiAoIWNvZGVjKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gaXNWaWRlbzsKICAgICAgICAgZGVjb2RlciA+PiBpc1ZpZGVvOwogICAgICAgICBp
ZiAoIWlzVmlkZW8pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0F1ZGlv
OwogICAgICAgICBkZWNvZGVyID4+IGlzQXVkaW87CiAgICAgICAgIGlmICghaXNBdWRpbykKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzVGV4dDsKICAgICAgICAgZGVjb2Rl
ciA+PiBpc1RleHQ7CiAgICAgICAgIGlmICghaXNUZXh0KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
cmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpjb2RlYyksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAK
aW5kZXggZjhlMTkyYjJjYzY1OWRhZjQ4ZDgwMTlhYjk2MTM5YzJkZTgxNjRkOC4uNWYyYjY1YjI5
ZDhjMGQwNGRlZjljZGI3NTM1ZjI2MDM5OTVmODE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAt
OTAsNyArOTAsNyBAQCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5KFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiBtYQogUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6flJlbW90ZU1lZGlhUGxheWVyUHJveHkoKQogewogICAgIGlmIChtX3BlcmZvcm1UYXNr
QXRNZWRpYVRpbWVDb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgbV9wZXJmb3JtVGFza0F0TWVk
aWFUaW1lQ29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAg
ICAgICBtX3BlcmZvcm1UYXNrQXRNZWRpYVRpbWVDb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgc2V0U2hvdWxkRW5hYmxlQXVkaW9Tb3VyY2VQcm92aWRl
cihmYWxzZSk7CiB9CiAKQEAgLTk4NCw3ICs5ODQsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0YXNrVGltZSwg
TQogICAgICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwZXJmb3Jt
VGFza0F0TWVkaWFUaW1lKSwgc28gY2FuY2VsIHRoZSBleGlzdGluZwogICAgICAgICAvLyBDb21w
bGV0aW9uSGFuZGxlci4KICAgICAgICAgYXV0byBoYW5kbGVyID0gV1RGTW92ZShtX3BlcmZvcm1U
YXNrQXRNZWRpYVRpbWVDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIGhhbmRsZXIoV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICBoYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0KTsKICAgICB9CiAKICAgICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHlDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaAppbmRleCBkOGY4YzdlN2Ux
ZjUxZjYwZDY4M2I4ZDI0YmY1MzkxNzIyZjNkMWE0Li4yZWZhMTRlYjc1MzE0ZGQ4ZDY5ZWY3OGE4
MTRmMjNjNWI2NzQzNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24u
aApAQCAtNzMsNTkgKzczLDU5IEBAIHN0cnVjdCBSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmln
dXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcmVmZXJyZXI7CiAgICAgICAgIGRl
Y29kZXIgPj4gcmVmZXJyZXI7CiAgICAgICAgIGlmICghcmVmZXJyZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHVzZXJBZ2VudDsKICAgICAgICAgZGVjb2RlciA+PiB1
c2VyQWdlbnQ7CiAgICAgICAgIGlmICghdXNlckFnZW50KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8U3RyaW5nPiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXI7CiAgICAgICAgIGRl
Y29kZXIgPj4gc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyOwogICAgICAgICBpZiAoIXNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0
cmluZz4gbmV0d29ya0ludGVyZmFjZU5hbWU7CiAgICAgICAgIGRlY29kZXIgPj4gbmV0d29ya0lu
dGVyZmFjZU5hbWU7CiAgICAgICAgIGlmICghbmV0d29ya0ludGVyZmFjZU5hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGVudFR5cGU+PiBtZWRp
YUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKICAgICAgICAgZGVjb2RlciA+
PiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydDsKICAgICAgICAgaWYg
KCFtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBwcmVmZXJyZWRBdWRpb0NoYXJhY3Rl
cmlzdGljczsKICAgICAgICAgZGVjb2RlciA+PiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGlj
czsKICAgICAgICAgaWYgKCFwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OlBsYXRmb3JtVGV4dFRyYWNrRGF0YT4+IG91dE9mQmFuZFRyYWNrRGF0YTsKICAgICAg
ICAgZGVjb2RlciA+PiBvdXRPZkJhbmRUcmFja0RhdGE7CiAgICAgICAgIGlmICghb3V0T2ZCYW5k
VHJhY2tEYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRl
Y29kZXIgPj4gZG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYgKCFkb2N1bWVudFNl
Y3VyaXR5T3JpZ2luKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxv
Z0lkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gbG9nSWRlbnRpZmllcjsKICAgICAgICAg
aWYgKCFsb2dJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkVXNlUGVyc2lzdGVudENhY2hlOwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZFVzZVBl
cnNpc3RlbnRDYWNoZTsKICAgICAgICAgaWYgKCFzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc1ZpZGVvOwogICAgICAgICBkZWNv
ZGVyID4+IGlzVmlkZW87CiAgICAgICAgIGlmICghaXNWaWRlbykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcmVmZXJyZXIpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA4YTdkZjYzOTJmNTI5N2I4Zjg5MzVh
MGE3NTllZDhiOTgxNzMxYjJkLi5lOWZkZjcwMTQwMDQwOTk0ZmUwNWRmMWU3OGFiNGU2YjVjM2Vm
OTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtNzYsNzIg
Kzc2LDcyIEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAg
ICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CiAgICAgICAgIGRlY29kZXIgPj4g
dHJhY2tJZDsKICAgICAgICAgaWYgKCF0cmFja0lkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAg
ICAgIGlmICghbGFiZWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5n
PiBsYW5ndWFnZTsKICAgICAgICAgZGVjb2RlciA+PiBsYW5ndWFnZTsKICAgICAgICAgaWYgKCFs
YW5ndWFnZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGluQmFu
ZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gaW5CYW5kTWV0
YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKICAgICAgICAgaWYgKCFpbkJhbmRNZXRhZGF0YVRyYWNr
RGlzcGF0Y2hUeXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBz
dGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWVWYXJpYW5jZTsK
ICAgICAgICAgaWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPGludD4gdHJhY2tJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiB0cmFja0luZGV4Owog
ICAgICAgICBpZiAoIXRyYWNrSW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDdWVGb3JtYXQ+IGN1ZUZvcm1hdDsKICAg
ICAgICAgZGVjb2RlciA+PiBjdWVGb3JtYXQ7CiAgICAgICAgIGlmICghY3VlRm9ybWF0KQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6S2luZD4ga2luZDsKICAgICAgICAgZGVjb2RlciA+PiBraW5kOwogICAgICAgICBpZiAoIWtp
bmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBpc0Nsb3NlZENhcHRpb25z
OwogICAgICAgICBkZWNvZGVyID4+IGlzQ2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGlmICghaXND
bG9zZWRDYXB0aW9ucykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzU0RI
OwogICAgICAgICBkZWNvZGVyID4+IGlzU0RIOwogICAgICAgICBpZiAoIWlzU0RIKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
OwogICAgICAgICBkZWNvZGVyID4+IGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAg
ICAgaWYgKCFjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxib29sPiBpc01haW5Qcm9ncmFtQ29udGVudDsKICAgICAgICAgZGVjb2RlciA+
PiBpc01haW5Qcm9ncmFtQ29udGVudDsKICAgICAgICAgaWYgKCFpc01haW5Qcm9ncmFtQ29udGVu
dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzRWFzeVRvUmVhZDsKICAg
ICAgICAgZGVjb2RlciA+PiBpc0Vhc3lUb1JlYWQ7CiAgICAgICAgIGlmICghaXNFYXN5VG9SZWFk
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNEZWZhdWx0OwogICAgICAg
ICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICAgICAgaWYgKCFpc0RlZmF1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXggYThmMDVkMThmZDk5ODhlYmI5OWM3
NjczYjY4N2E2NzBkOTJlMDE0OC4uMjlkZjIzNWZmMWQzMWU2ZGU5MjNiYWVhNGFjNzdkNjI4MTk4
NTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC02Niw0NyArNjYsNDcg
QEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAg
ICAgICAgIGlmICghdHJhY2tJZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21T
dHJpbmc+IGxhYmVsOwogICAgICAgICBkZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxh
YmVsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7
CiAgICAgICAgIGRlY29kZXIgPj4gbGFuZ3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3VhZ2UpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZVZhcmlhbmNl
OwogICAgICAgICBkZWNvZGVyID4+IHN0YXJ0VGltZVZhcmlhbmNlOwogICAgICAgICBpZiAoIXN0
YXJ0VGltZVZhcmlhbmNlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8aW50PiB0cmFj
a0luZGV4OwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSW5kZXg7CiAgICAgICAgIGlmICghdHJh
Y2tJbmRleCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ+
IGF1ZGlvS2luZDsKICAgICAgICAgZGVjb2RlciA+PiBhdWRpb0tpbmQ7CiAgICAgICAgIGlmICgh
YXVkaW9LaW5kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2VsZWN0ZWQ7
CiAgICAgICAgIGRlY29kZXIgPj4gc2VsZWN0ZWQ7CiAgICAgICAgIGlmICghc2VsZWN0ZWQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWRlb1RyYWNrUHJpdmF0ZTo6
S2luZD4gdmlkZW9LaW5kOwogICAgICAgICBkZWNvZGVyID4+IHZpZGVvS2luZDsKICAgICAgICAg
aWYgKCF2aWRlb0tpbmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAg
ICAgIFdURk1vdmUoKnRyYWNrSWQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2Eu
bW0KaW5kZXggMGUwY2QyY2RjNmE0OTA1MzQ0NmM2ZDExY2Y3NmZhZGVkNjM5ZGU2ZC4uNGIzMzc1
ZmRlMzIwMWI5NzAxZDIwMGViYWZmNjBhYjA5MGEzMDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eUNvY29hLm1tCkBAIC04MSwyNSArODEsMjUgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZXRWaWRlb0lubGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJgogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcGxheWVyKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIG5h
dGl2ZUltYWdlID0gbV9wbGF5ZXItPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKICAgICBp
ZiAoIW5hdGl2ZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxh
dGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBzdXJmYWNlID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UocGxhdGZvcm1JbWFnZS5nZXQoKSk7
CiAgICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEwOSwyMiArMTA5LDIyIEBAIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnBpeGVsQnVmZmVyRm9yQ3VycmVu
dFRpbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmICFVU0UoQVZGT1VOREFUSU9OKQotICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0KTsKICNlbHNlCiAgICAgaWYgKCFtX3BsYXllcikgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IG1fcGxheWVyLT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogICAgIGlmICghc3VyZmFjZSkgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA1NTdkN2YyNjkzOTcxN2Y2MTY4NWFiNTMzNDFlNmRlYmMxNTk5MzhkLi4yMjVmNzFlMjQz
ZDYzMjM1MTE4YzliYzVjMWE3Yzg0ZmUzZTE1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTMwNSw4ICszMDUsOCBA
QCBzdGF0aWMgU3RyaW5nIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjb25zdCBj
aGFyKiBvcmlnaW5hbFF1ZXJ5KQogc3RhdGljIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgZXhwZWN0ZWRUYWJs
ZUFuZEluZGV4UXVlcmllcygpCiB7CiAgICAgc3RhdGljIGF1dG8gZXhwZWN0ZWRUYWJsZUFuZElu
ZGV4UXVlcmllcyA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4gewotICAgICAgICB7ICJP
YnNlcnZlZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5n
Pj4oY3JlYXRlT2JzZXJ2ZWREb21haW4sIFdURjo6bnVsbG9wdCkgfSwKLSAgICAgICAgeyAiVG9w
TGV2ZWxEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+
KGNyZWF0ZVRvcExldmVsRG9tYWlucywgV1RGOjpudWxsb3B0KSB9LAorICAgICAgICB7ICJPYnNl
cnZlZERvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0aW9uYWw8U3RyaW5nPj4o
Y3JlYXRlT2JzZXJ2ZWREb21haW4sIHN0ZDo6bnVsbG9wdCkgfSwKKyAgICAgICAgeyAiVG9wTGV2
ZWxEb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNy
ZWF0ZVRvcExldmVsRG9tYWlucywgc3RkOjpudWxsb3B0KSB9LAogICAgICAgICB7ICJTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIHN0ZDo6bWFrZV9wYWlyPFN0cmluZywgT3B0
aW9uYWw8U3RyaW5nPj4oY3JlYXRlU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zLCBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhTdG9yYWdl
QWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpKSB9LAogICAgICAgICB7ICJUb3BGcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+
KGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hT
dG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRleFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKSB9
LAogICAgICAgICB7ICJUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50Il9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+
KGNyZWF0ZVRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnQsIHN0cmlwSW5kZXhRdWVyeVRvTWF0Y2hTdG9yZWRWYWx1ZShjcmVhdGVVbmlxdWVJbmRl
eFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG9TaW5jZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQp
KSB9LApAQCAtNDA0LDEzICs0MDQsMTMgQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWIKICAgICBh
dXRvIHN0YXRlbWVudCA9IG1fZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVudCgiU0VMRUNUIDEgZnJv
bSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBhbmQgdGJsX25hbWU9PyJfcyk7CiAg
ICAgaWYgKCFzdGF0ZW1lbnQpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2lu
Z1RhYmxlc0luU2NoZW1hIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJM
SUNfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMo
KS5rZXlzKCkpIHsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+YmluZFRleHQoMSwgdGFibGUpICE9
IFNRTElURV9PSykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1Rh
Ymxlc0luU2NoZW1hIGZhaWxlZCB0byBiaW5kLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgICAgICBpZiAoc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hIHNj
aGVtYSBpcyBtaXNzaW5nIHRhYmxlOiAlcyIsIHRoaXMsIHRhYmxlLmFzY2lpKCkuZGF0YSgpKTsK
QEAgLTQxOSw3ICs0MTksNyBAQCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYgogICAgICAgICBzdGF0
ZW1lbnQtPnJlc2V0KCk7CiAgICAgfQogICAgIGlmIChtaXNzaW5nVGFibGVzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBtaXNzaW5nVGFibGVzOwogfQpAQCAtMTAxOCwxMSArMTAxOCwxMSBA
QCBPcHRpb25hbDx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmRvbWFpbklEKGNvbnN0IFJlZ2lzdHJhYgogICAgIGlmICghc2NvcGVkU3RhdGVtZW50IHx8IHNj
b3BlZFN0YXRlbWVudC0+YmluZFRleHQoMSwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVw
IC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERnJvbVN0cmlu
ZyBmYWlsZWQuIEVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICAKICAgICBpZiAoc2NvcGVkU3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRF
X1JPVykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBzY29wZWRTdGF0ZW1lbnQtPmNvbHVtbkludCgwKTsKIH0K
QEAgLTE1NjEsNyArMTU2MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluCiAgICAgICAgIGRl
YnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SVRQRGVidWcsIE1lc3Nh
Z2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW0lUUF0gU3RvcmFnZSBhY2Nlc3Mgd2FzIGdyYW50
ZWQgZm9yICciX3MsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmcoKSwgIicgdW5k
ZXIgb3BlbmVyIHBhZ2UgZnJvbSAnIl9zLCBvcGVuZXJEb21haW4uc3RyaW5nKCksICInLCB3aXRo
IHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIl9zKSk7CiAgICAgfQogCi0g
ICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFn
ZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBTdG9yYWdlQWNjZXNzU2NvcGU6
OlBlclBhZ2UsIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOworICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJQYWdlLCBb
XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTIyMDUsNyArMjIwNSw3IEBAIHN0ZDo6cGFpcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6QWRkZWRSZWNvcmQsIE9wdGlvbmFsPHVuc2lnbmVkPj4K
ICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUmVnaXN0cmFibGVEb21haW4gaW5zZXJ0T2JzZXJ2
ZWREb21haW4gZmFpbGVkIHRvIGNvbXBsZXRlLCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBXVEY6
Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgQWRkZWRSZWNvcmQ6Ok5vLCBzdGQ6Om51bGxv
cHQgfTsKICAgICB9CiAKICAgICByZXR1cm4geyBBZGRlZFJlY29yZDo6WWVzLCBkb21haW5JRChk
b21haW4pLnZhbHVlKCkgfTsKQEAgLTI1MTksNyArMjUxOSw3IEBAIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcihE
b21haW5ECiBPcHRpb25hbDxXYWxsVGltZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Om1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IERvbWFpbkRhdGEmIHN0
YXRpc3RpYykKIHsKICAgICBpZiAoc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA8PSAwKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0
YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZTsKIH0KQEAgLTI5MzYsNyArMjkz
Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9w
ZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCiAgICAgfQogCiAgICAgaWYgKG1fb3BlcmF0aW5nRGF0
ZXNTaXplIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQgLSAxKQotICAgICAgICBtX3Nob3J0
V2luZG93T3BlcmF0aW5nRGF0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zaG9ydFdpbmRv
d09wZXJhdGluZ0RhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChn
ZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5iaW5kSW50KDEsIG9wZXJhdGluZ0RhdGVz
V2luZG93U2hvcnQgLSAxKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGdldE9wZXJhdGlu
Z0RhdGVXaW5kb3dTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CkBAIC0yOTQ4LDcg
KzI5NDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRh
dGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAgIH0KIAogICAgIGlmIChtX29wZXJhdGlu
Z0RhdGVzU2l6ZSA8PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgLSAxKQotICAgICAgICBtX2xv
bmdXaW5kb3dPcGVyYXRpbmdEYXRlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2xvbmdXaW5k
b3dPcGVyYXRpbmdEYXRlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgewogICAgICAgICBnZXRP
cGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5yZXNldCgpOwogICAgICAgICBpZiAoZ2V0T3Bl
cmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+YmluZEludCgxLCBvcGVyYXRpbmdEYXRlc1dpbmRv
d0xvbmcgLSAxKSAhPSBTUUxJVEVfT0sKQEAgLTMxMTYsNyArMzExNiw3IEBAIHN0ZDo6cGFpcjxP
cHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIE9wdGlvbmFsPEF0
dHJpYnV0ZWRQcml2CiAgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklE
KGRlc3RpbmF0aW9uU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIXNvdXJjZVNp
dGVEb21haW5JRCB8fCAhZGVzdGluYXRpb25TaXRlRG9tYWluSUQpCi0gICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRv
IGZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQo
bV9maW5kVW5hdHRyaWJ1dGVkU3RhdGVtZW50LCBmaW5kVW5hdHRyaWJ1dGVkUXVlcnksICJmaW5k
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOwogICAgIGlmICghZmluZFVuYXR0cmlidXRlZFNj
b3BlZFN0YXRlbWVudApAQCAtMzIzNyw3ICszMjM3LDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9h
ZFMKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
ICJHb3QgYW4gaW52YWxpZCBhdHRyaWJ1dGlvbi4iKTsKICAgICAgICAgICAgIGRlYnVnQnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gR290IGFu
IGludmFsaWQgYXR0cmlidXRpb24uIl9zKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1
dG8gZGF0YSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YTsKQEAgLTMyNDgsNyArMzI0OCw3
IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNV
bnRpbFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTCiAgICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VM
ZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBh
biBhdHRyaWJ1dGlvbiB3aXRoIGF0dHJpYnV0aW9uIHRyaWdnZXIgZGF0YTogJyJfcywgZGF0YSwg
IicgYW5kIHByaW9yaXR5OiAnIl9zLCBwcmlvcml0eSwgIicuIl9zKSk7CiAgICAgfQogCi0gICAg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEg
c2Vjb25kc1VudGlsU2VuZCB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEgc2Vj
b25kc1VudGlsU2VuZCB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAKICAgICBhdXRv
IGF0dHJpYnV0aW9uID0gZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50KHNvdXJjZVNpdGUsIGRl
c3RpbmF0aW9uU2l0ZSk7CiAgICAgYXV0byYgcHJldmlvdXNseVVuYXR0cmlidXRlZCA9IGF0dHJp
YnV0aW9uLmZpcnN0OwpAQCAtMzI2Miw3ICszMjYyLDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9h
ZFMKICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgdmFsaWQgc2Vjb25kc1VudGls
U2VuZCB2YWx1ZSBmb3IgYSBwcmV2aW91c2x5VW5hdHRyaWJ1dGVkIHZhbHVlIGJlY2F1c2UgdGhl
cmUgY2FuIGJlIG5vIHByZXZpb3VzIGF0dHJpYnV0aW9uIHdpdGggYSBoaWdoZXIgcHJpb3JpdHku
CiAgICAgICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRW
YWx1ZXMoKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7
CkBAIC0zMjg1LDcgKzMyODUsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwogICAgICAgICBp
ZiAoIXByZXZpb3VzbHlBdHRyaWJ1dGVkLnZhbHVlKCkuaGFzUHJldmlvdXNseUJlZW5SZXBvcnRl
ZCgpKSB7CiAgICAgICAgICAgICBhdXRvIHNlY29uZHNVbnRpbFNlbmQgPSBwcmV2aW91c2x5QXR0
cmlidXRlZC52YWx1ZSgpLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXVEZNb3Zl
KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpKTsKICAgICAgICAgICAgIGlmICghc2Vjb25kc1VudGls
U2VuZC5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgICAgIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUoKnBy
ZXZpb3VzbHlBdHRyaWJ1dGVkKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5
cGU6OkF0dHJpYnV0ZWQpOwogCkBAIC0zMjk3LDcgKzMyOTcsNyBAQCBPcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3Vy
Y2VMb2FkUwogICAgIH0KIAogICAgIGlmICghc2Vjb25kc1VudGlsU2VuZC5oYXNWYWxpZFNlY29u
ZHNVbnRpbFNlbmRWYWx1ZXMoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzZWNvbmRzVW50aWxTZW5kOwog
fQpAQCAtMzQ0NSw3ICszNDQ1LDcgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0
VGltZVRvU2VuZD4sIE9wdGlvbmFsPERlc3RpbmF0aW9uRWFybGllc3RUaW1lVG8KICAgICBhdXRv
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gZG9tYWluSUQoYXR0cmlidXRpb24uZGVzdGluYXRp
b25TaXRlKCkucmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWlu
SUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBzY29wZWRT
dGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9lYXJsaWVzdFRpbWVzVG9TZW5kU3Rh
dGVtZW50LCBlYXJsaWVzdFRpbWVzVG9TZW5kUXVlcnksICJlYXJsaWVzdFRpbWVzVG9TZW5kIl9z
KTsKIApAQCAtMzUxNSw3ICszNTE1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUMKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtYXJrUmVwb3J0QXNTZW50VG9Tb3Vy
Y2UoKnNvdXJjZVNpdGVEb21haW5JRCwgKmRlc3RpbmF0aW9uU2l0ZURvbWFpbklEKTsKLSAgICAg
ICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gV1RGOjpudWxsb3B0OworICAgICAgICBzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6
OkRlc3RpbmF0aW9uOgogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
KSB7CkBAIC0zNTIzLDcgKzM1MjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpjbGVhclNlbnRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1hcmtSZXBvcnRBc1NlbnRUb0Rlc3Rp
bmF0aW9uKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0aW5hdGlvblNpdGVEb21haW5JRCk7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA9IHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBEb24ndCBjbGVhciB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGRhdGFiYXNlIHVu
bGVzcyBpdCBoYXMgYmVlbiByZXBvcnRlZCBib3RoIHRvIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0
aW9uIHNpdGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCmluZGV4IDYwYzY2MjRlMjk1NGE3OGM5NGI5OTUxNThiYzI1ZWUyZGE5OWVkYTAu
LjkzMGUyYjQ1NTFhZmUyMTlhZDAxN2FkNTQxNTI1NjQ3NThmYjcyMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0zMzcsNyAr
MzM3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICAgICAgICAgZGVidWdCcm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpJVFBEZWJ1ZywgTWVzc2FnZUxldmVsOjpJbmZv
LCBtYWtlU3RyaW5nKCJbSVRQXSBTdG9yYWdlIGFjY2VzcyB3YXMgZ3JhbnRlZCBmb3IgJyJfcywg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnN0cmluZygpLCAiJyB1bmRlciBvcGVuZXIgcGFn
ZSBmcm9tICciX3MsIG9wZW5lckRvbWFpbi5zdHJpbmcoKSwgIicsIHdpdGggdXNlciBpbnRlcmFj
dGlvbiBpbiB0aGUgb3BlbmVkIHdpbmRvdy4iX3MpKTsKICAgICB9CiAKLSAgICBncmFudFN0b3Jh
Z2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdU
Rk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyUGFnZSwgW10o
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CisgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5l
ckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vLCBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlclBhZ2UsIFtdKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKSB7IH0pOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBw
cm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTkzMiw3ICs5MzIsNyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
c2hvdWxkRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yKFJlc291cmNlTAogT3B0aW9uYWw8V2FsbFRp
bWU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljKQogewog
ICAgIGlmIChzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUuc2Vjb25kc1Np
bmNlRXBvY2goKS52YWx1ZSgpIDw9IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RhdGlzdGljLm1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcAppbmRleCA0NTAwYjg1YjZmOTY5MmYyOGEwMTVlYTFkYWNkYzRhMTc1
ZTRhOTlkLi5iZjFjNzUzN2JiMzQzY2UxNGExY2NjOTc3ODQ1OWE0NTNmMmVlOTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzE2LDcgKzMxNiw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYW5jZWxQZW5kaW5nU3RhdGlz
dGljc1Byb2Nlc3NpbmdSZXF1ZXN0KCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIAotICAgIG1fcGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nU3RhdGlzdGljc1Byb2Nlc3NpbmdSZXF1ZXN0
SWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyBzZWNvbmRzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAy
MWY4ZGU5NjA5NDlhYTA4YjBlNjUwYTkyNzY1MTE4ZmZkN2JhZDQ1Li5mYTBmOTcyZDBlNzY5NjVk
NDA0ZGFmMzM2NjVmMGEwOTBiZjhlZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyRXBo
ZW1lcmFsKFJlCiAKICAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBpZiAoYXV0
byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiks
IFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlEKTsKKyAgICAgICAgICAgIHN0b3JhZ2VTZXNzaW9u
LT5ncmFudFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mp
LCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIHN0ZDo6bnVsbG9wdCwgb3BlbmVyUGFnZUlEKTsKICAg
ICB9CiB9CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0luU3RvcgogCiAg
ICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKLSAgICAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5ncmFudFN0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4s
IGZpcnN0UGFydHlEb21haW4sIChzY29wZSA9PSBTdG9yYWdlQWNjZXNzU2NvcGU6OlBlckZyYW1l
ID8gZnJhbWVJRCA6IFdURjo6bnVsbG9wdCksIHBhZ2VJRCk7CisgICAgICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Z3JhbnRTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCAoc2NvcGUgPT0gU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJGcmFtZSA/IGZyYW1lSUQgOiBz
dGQ6Om51bGxvcHQpLCBwYWdlSUQpOwogICAgICAgICAgICAgQVNTRVJUKHN0b3JhZ2VTZXNzaW9u
LT5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFt
ZUlELCBwYWdlSUQpKTsKICAgICAgICAgICAgIGlzU3RvcmFnZUdyYW50ZWQgPSB0cnVlOwogICAg
ICAgICB9CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6YXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoY29uc3QgUHJpdgogICAg
IHBvc3RUYXNrKFt0aGlzLCBzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUsIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAgICAgICAgICBwb3N0VGFza1JlcGx5KFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNTkxLDcgKzE1OTEsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCgpCiAgICAgICAgIGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNsZWFyUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNs
ZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KICAg
ICAKQEAgLTE2OTgsMTcgKzE2OTgsMTcgQEAgYXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5OjpkZWNvZGUKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKICAgICBk
ZWNvZGVyID4+IGRlY29kZWREb21haW47CiAgICAgaWYgKCFkZWNvZGVkRG9tYWluKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgZGVjb2RlciA+PiBk
ZWNvZGVkU3RvcmFnZUFjY2VzczsKICAgICBpZiAoIWRlY29kZWRTdG9yYWdlQWNjZXNzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gZGVjb2RlZFRpbWVMYXN0VXBkYXRlZDsKICAgICBkZWNv
ZGVyID4+IGRlY29kZWRUaW1lTGFzdFVwZGF0ZWQ7CiAgICAgaWYgKCFkZWNvZGVkVGltZUxhc3RV
cGRhdGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZN
b3ZlKCpkZWNvZGVkU3RvcmFnZUFjY2VzcyksIFdURk1vdmUoKmRlY29kZWRUaW1lTGFzdFVwZGF0
ZWQpIH19OwogfQpAQCAtMTczOSwxMiArMTczOSwxMiBAQCBhdXRvIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGVkRG9tYWlu
OwogICAgIGRlY29kZXIgPj4gZGVjb2RlZERvbWFpbjsKICAgICBpZiAoIWRlY29kZWREb21haW4p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHk+PiBkZWNvZGVkRmlyc3RQYXJ0aWVzOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZEZpcnN0
UGFydGllczsKICAgICBpZiAoIWRlY29kZWRGaXJzdFBhcnRpZXMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sgV1RGTW92ZSgqZGVjb2RlZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRGaXJzdFBhcnRpZXMp
IH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjNDRhNDgzOGZjOTc0OWVh
NjU3YWMwZWZmMDJlNTk4N2VhZTU2N2M5Li5iNDhjODQzYmNhNDhlYTU5N2E1MGUxOTk1NjNkZjJh
MWE5OGEwNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjkzLDcgKzY5Myw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29r
aWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0
cmluZygpLCBmcmFtZUlELCBwYWdlSUQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCp0aGlzLCAiTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00iLCByZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgc3RkOjpudWxs
b3B0KTsKICAgICB9CiAjZW5kaWYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3Vs
dC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigp
KQotICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURP
TSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJh
bWVJRCwgcGFnZUlELCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBzdGQ6Om51bGxvcHQpOwog
ICAgIH0KICNlbmRpZgogfQpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzQWxsb3dMaXN0cygpCiBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3Rh
cnRUcmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc1RvcFJlc291cmNlKQogewogICAgIGlmICht
X3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRWl0aGVyIGdldCB0aGUgZXhp
c3Rpbmcgcm9vdCBhY3Rpdml0eSB0cmFja2VyIGZvciB0aGlzIHBhZ2Ugb3IgY3JlYXRlIGEKICAg
ICAvLyBuZXcgb25lIGlmIHRoaXMgaXMgdGhlIG1haW4gcmVzb3VyY2UuCkBAIC0xMDEzLDcgKzEw
MTMsNyBAQCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1JlcwogICAgICAgICAvLyBUaGlzIGNvdWxkIGhh
cHBlbiBpZiB0aGUgTmV0d29ya2luZyBwcm9jZXNzIGNyYXNoZXMsIHRha2luZyBpdHMKICAgICAg
ICAgLy8gcHJldmlvdXMgc3RhdGUgd2l0aCBpdC4KICAgICAgICAgaWYgKHJvb3RBY3Rpdml0eUlu
ZGV4ID09IG5vdEZvdW5kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBIQVZFKE5XX0FDVElWSVRZKQogICAg
ICAgICBBU1NFUlQobV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vyc1tyb290QWN0aXZpdHlJbmRleF0u
bmV0d29ya0FjdGl2aXR5LmdldFBsYXRmb3JtT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzNjRjMjM2MThiM2NlMjVl
MGM0M2I1NGJmNTM4NTgyYWRhYjgzMTkyLi5mZjBmZjRhZjFjZmNjNzMyMDA5ZjBmOWE2YmQxMWI3
NDVhYjBjZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcApAQCAtMTYwOCw3ICsxNjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kK
ICNlbmRpZgogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtX
ZWJzaXRlRGF0YShtb2RpZmllZFNpbmNlLCBXVEY6Om51bGxvcHQsIFtjbGVhclRhc2tzSGFuZGxl
cl0geyB9KTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJzaXRlRGF0
YShtb2RpZmllZFNpbmNlLCBzdGQ6Om51bGxvcHQsIFtjbGVhclRhc2tzSGFuZGxlcl0geyB9KTsK
IAogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKSAmJiAhc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNsZWFyRGlza0Nh
Y2hlKG1vZGlmaWVkU2luY2UsIFtjbGVhclRhc2tzSGFuZGxlciA9IFdURk1vdmUoY2xlYXJUYXNr
c0hhbmRsZXIpXSB7IH0pOwpAQCAtMTc0Miw3ICsxNzQyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW8KICAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiByZWdpc3RyYWJsZURvbWFpbnMpCiAg
ICAgICAgICAgICBkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvci5hZGQoZG9tYWluKTsKIAot
ICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+cmVtb3ZlTmV0d29ya1dlYnNpdGVEYXRhKFdURjo6bnVs
bG9wdCwgV1RGTW92ZShkb21haW5zVG9EZWxldGVOZXR3b3JrRGF0YUZvciksIFtjbGVhclRhc2tz
SGFuZGxlcl0geyB9KTsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdvcmtXZWJz
aXRlRGF0YShzdGQ6Om51bGxvcHQsIFdURk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29ya0RhdGFG
b3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuY3BwCmluZGV4IDM5YTE0MjdlMGI2NTVhYjU4NGFjMmZkZGM3ZjMyZjUwNzZkZmU1
NDAuLmNmMTE3YWE5NzU3ZjJmMGJlNGUxNTI1OWFhYjk4YmIyOTFhMWQwZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMzEsNDMgKzEzMSw0MyBAQCBPcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZShJUAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc3VsdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAg
ICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiB3ZWJQYWdlUHJveHlJRDsKICAgICBk
ZWNvZGVyID4+IHdlYlBhZ2VQcm94eUlEOwogICAgIGlmICghd2ViUGFnZVByb3h5SUQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmVzdWx0LndlYlBhZ2VQcm94eUlEID0gKndlYlBhZ2VQcm94eUlEOwogCiAgICAgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsK
ICAgICBpZiAoIXdlYlBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQud2ViUGFnZUlEID0gKndlYlBhZ2VJ
RDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYkZyYW1lSUQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFyZW50UElEKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNIVFRQQm9k
eTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0hUVFBCb2R5KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICho
YXNIVFRQQm9keSkgewogICAgICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gRm9ybURh
dGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICByZXN1bHQucmVxdWVzdC5zZXRIVFRQQm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAK
ICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IHJlcXVlc3RC
b2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGRlY29kZXIgPj4gcmVxdWVzdEJv
ZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFyZXF1ZXN0Qm9keVNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy0+c2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXMtPmF0KGkpKSkpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0LnJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnMuYXBwZW5k
KFdURk1vdmUoZXh0ZW5zaW9uKSk7CkBAIC0xNzgsMTQ1ICsxNzgsMTQ1IEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
cmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IHJlc291
cmNlU2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFyZXNvdXJjZVNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnJlc291cmNlU2FuZGJv
eEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKCpyZXNvdXJjZVNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jb250ZW50U25pZmZpbmdQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2xpZW50Q3JlZGVudGlhbFBvbGljeSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkUHJlY29ubmVjdE9ubHkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5lZWRzQ2Vy
dGlmaWNhdGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc01haW5G
cmFtZU5hdmlnYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWF4aW11bUJ1ZmZlcmluZ1RpbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYm9vbCBoYXNTb3VyY2VPcmlnaW47CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNTb3Vy
Y2VPcmlnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNTb3VyY2VPcmlnaW4pIHsKICAgICAgICAgcmVzdWx0
LnNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAg
IGlmICghcmVzdWx0LnNvdXJjZU9yaWdpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGJvb2wg
aGFzVG9wT3JpZ2luOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVG9wT3JpZ2luKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoaGFzVG9wT3JpZ2luKSB7CiAgICAgICAgIHJlc3VsdC50b3BPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC50b3BPcmln
aW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxGZXRjaE9wdGlvbnM+IG9wdGlv
bnM7CiAgICAgZGVjb2RlciA+PiBvcHRpb25zOwogICAgIGlmICghb3B0aW9ucykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQub3B0aW9ucyA9ICpvcHRpb25zOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY3NwUmVzcG9uc2VIZWFkZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3Vs
ZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzOwogICAgIGRlY29kZXIgPj4gc2hvdWxkUmVzdHJp
Y3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAgICAgaWYgKCFzaG91bGRSZXN0cmljdEhUVFBSZXNwb25z
ZUFjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3Mg
PSAqc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3M7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5wcmVmbGlnaHRQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeTsKICAgICBkZWNvZGVyID4+IHNo
b3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3k7CiAgICAgaWYgKCFzaG91bGRFbmFi
bGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5zaG91bGRFbmFibGVD
cm9zc09yaWdpblJlc291cmNlUG9saWN5ID0gKnNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3Vy
Y2VQb2xpY3k7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUFuY2VzdG9y
T3JpZ2lucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwYWdlSGFzUmVzb3VyY2VMb2FkQ2xp
ZW50OwogICAgIGRlY29kZXIgPj4gcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICBpZiAo
IXBhZ2VIYXNSZXNvdXJjZUxvYWRDbGllbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBhZ2VIYXNSZXNvdXJj
ZUxvYWRDbGllbnQgPSAqcGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICAKICAgICBPcHRp
b25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFtZUlEOwogICAgIGRlY29k
ZXIgPj4gcGFyZW50RnJhbWVJRDsKICAgICBpZiAoIXBhcmVudEZyYW1lSUQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0LnBhcmVudEZyYW1lSUQgPSBXVEZNb3ZlKCpwYXJlbnRGcmFtZUlEKTsKIAogICAgIE9wdGlv
bmFsPGJvb2w+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBkZWNv
ZGVyID4+IGNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBpZiAoIWNy
b3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuY3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDsKICAgICAKICAgICBPcHRpb25hbDxVUkw+IGRvY3VtZW50VVJMOwogICAg
IGRlY29kZXIgPj4gZG9jdW1lbnRVUkw7CiAgICAgaWYgKCFkb2N1bWVudFVSTCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuZG9jdW1lbnRVUkwgPSAqZG9jdW1lbnRVUkw7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01v
ZGU7CiAgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2Vyc01vZGU7CiAgICAgaWYgKCFzZXJ2aWNl
V29ya2Vyc01vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2aWNl
V29ya2Vyc01vZGU7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAgICAg
aWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSAqc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI7CiAKICAgICBPcHRpb25hbDxPcHRpb25TZXQ8SFRUUEhlYWRlcnNU
b0tlZXBGcm9tQ2xlYW5pbmc+PiBodHRwSGVhZGVyc1RvS2VlcDsKICAgICBkZWNvZGVyID4+IGh0
dHBIZWFkZXJzVG9LZWVwOwogICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RGTW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25h
bDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
c3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gKnVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBk
ZWNvZGVyID4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgaWYgKCFpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluID0gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBPcHRpb25h
bDxPcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQ+PiBwY21EYXRhQ2FycmllZDsKICAgICBkZWNvZGVyID4+IHBjbURhdGFDYXJyaWVkOwogICAg
IGlmICghcGNtRGF0YUNhcnJpZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnBjbURhdGFDYXJyaWVkID0gKnBj
bURhdGFDYXJyaWVkOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
ZDk5NzkxNmQ3YmZlMTVlN2E0NjBkZjAzNDY4N2U2NDMzZTlhMmY0Mi4uY2NiZTMxYzRmMjA1MzA3
YjkzNjMzOTlkMDE5N2E3ZmUwMDMwZDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtODEyLDcgKzgxMiw3
IEBAIE9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dmFsaWRhdGVDYWNo
ZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvCiAgICAgICAgICAgICByZXR1cm4gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5tYXhBZ2VDYWNoZUNhcChyZXF1ZXN0KTsKICAgICB9CiAjZW5kaWYKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCkBAIC0xMzk0LDcgKzEzOTQsNyBA
QCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJkb21h
aW4iOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWREb21haW4udXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExPQ0FMX0xPRyhSIiggICAgInBhdGgiOiAiJXtwdWJsaWN9cyIsKSIsIGVzY2FwZWRQYXRo
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJjcmVhdGVkIjogJWYs
KSIsIGNvb2tpZS5jcmVhdGVkKTsKLSAgICAgICAgTE9DQUxfTE9HKFIiKCAgICAiZXhwaXJlcyI6
ICVmLCkiLCBjb29raWUuZXhwaXJlcy52YWx1ZU9yKDApKTsKKyAgICAgICAgTE9DQUxfTE9HKFIi
KCAgICAiZXhwaXJlcyI6ICVmLCkiLCBjb29raWUuZXhwaXJlcy52YWx1ZV9vcigwKSk7CiAgICAg
ICAgIExPQ0FMX0xPRyhSIiggICAgImh0dHBPbmx5IjogJXtwdWJsaWN9cywpIiwgY29va2llLmh0
dHBPbmx5ID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICAgInNl
Y3VyZSI6ICV7cHVibGljfXMsKSIsIGNvb2tpZS5zZWN1cmUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
ICAgICAgICAgTE9DQUxfTE9HKFIiKCAgICAic2Vzc2lvbiI6ICV7cHVibGljfXMsKSIsIGNvb2tp
ZS5zZXNzaW9uID8gInRydWUiIDogImZhbHNlIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDBmZWQ2YzRhNmM4Y2M2MGI5NTFhNzE0
NjI4OTcyMGIzOTFhNDU3ZmEuLjE0Mzk2MjRiNzkyOGQyYmUyMWFlNzAzYTgwYWEzOTIwZjU5MGIy
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC0yODMsMjIgKzI4MywyMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gTmV0d29ya1Nlc3Npb246OmZpcnN0UGFydHlIb3N0Q05BTUVEb21haW4oYwogewogI2lm
IEhBVkUoQ0ZORVRXT1JLX0NOQU1FX0FORF9DT09LSUVfVFJBTlNGT1JNX1NQSSkKICAgICBpZiAo
IWRlY2x0eXBlKG1fZmlyc3RQYXJ0eUhvc3RDTkFNRURvbWFpbnMpOjppc1ZhbGlkS2V5KGZpcnN0
UGFydHlIb3N0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ZpcnN0UGFydHlIb3N0Q05B
TUVEb21haW5zLmZpbmQoZmlyc3RQYXJ0eUhvc3QpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2Zp
cnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBpdGVyYXRvci0+
dmFsdWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5SG9zdCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAK
IHZvaWQgTmV0d29ya1Nlc3Npb246OnJlc2V0Q05BTUVEb21haW5EYXRhKCkKIHsKICAgICBtX2Zp
cnN0UGFydHlIb3N0Q05BTUVEb21haW5zLmNsZWFyKCk7Ci0gICAgbV90aGlyZFBhcnR5Q05BTUVE
b21haW5Gb3JUZXN0aW5nID0gV1RGOjpudWxsb3B0OworICAgIG1fdGhpcmRQYXJ0eUNOQU1FRG9t
YWluRm9yVGVzdGluZyA9IHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IDJmZmY4ZDUwNGJkMjI1MTEzMDY5Nzk0YTg2YjNmZWNkZDNkMjdhNWIuLjZmOGFjMzk2ODI4
ZjE4ZmY5MDE4MmQxYmNmZDUyMjA3YzQyYTMzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCkBAIC05NCwyMDQgKzk0LDIwNCBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwog
ICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQ7CiAgICAgZGVjb2RlciA+PiBz
ZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9uSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBib3VuZEludGVy
ZmFjZUlkZW50aWZpZXI7CiAgICAgaWYgKCFib3VuZEludGVyZmFjZUlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8QWxsb3dzQ2VsbHVsYXJBY2Nlc3M+IGFsbG93c0NlbGx1bGFyQWNj
ZXNzOwogICAgIGRlY29kZXIgPj4gYWxsb3dzQ2VsbHVsYXJBY2Nlc3M7CiAgICAgaWYgKCFhbGxv
d3NDZWxsdWxhckFjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eUNvbmZpZ3VyYXRpb247CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwcm94eUNvbmZpZ3VyYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gc291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4g
c291cmNlQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyOwogICAgIGlmICghc291cmNlQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gc291cmNl
QXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogICAgIGlmICghc291cmNlQXBwbGljYXRp
b25TZWNvbmRhcnlJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBhdHRyaWJ1
dGVkQnVuZGxlSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGF0dHJpYnV0ZWRCdW5kbGVJZGVu
dGlmaWVyOwogICAgIGlmICghYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247CiAgICAgZGVjb2Rl
ciA+PiBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbjsKICAgICBpZiAoIXNob3VsZExvZ0Nvb2tp
ZUluZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VVJMPiBodHRwUHJveHk7CiAgICAgZGVj
b2RlciA+PiBodHRwUHJveHk7CiAgICAgaWYgKCFodHRwUHJveHkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxVUkw+IGh0dHBzUHJveHk7CiAgICAgZGVjb2RlciA+PiBodHRwc1Byb3h5OwogICAgIGlmICgh
aHR0cHNQcm94eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVf
U0VSVklDRSkKICAgICBPcHRpb25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9y
eTsKICAgICBkZWNvZGVyID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKICAgICBpZiAo
IWFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGh0dHAzRW5hYmxlZDsKICAgICBkZWNv
ZGVyID4+IGh0dHAzRW5hYmxlZDsKICAgICBpZiAoIWh0dHAzRW5hYmxlZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVy
ID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghaHN0c1N0b3JhZ2VEaXJlY3Rvcnkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhzdHNTdG9yYWdl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBVU0UoU09VUCkKICAgICBPcHRpb25hbDxTdHJpbmc+
IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlUGF0aDsKICAgICBpZiAoIWNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU+IGNvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlVHlwZTsKICAgICBpZiAoIWNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IHBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJsZWQ7CiAg
ICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGlm
ICghcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PGJvb2w+IGlnbm9yZVRMU0Vycm9yczsKICAgICBkZWNvZGVyID4+IGlnbm9yZVRMU0Vycm9yczsK
ICAgICBpZiAoIWlnbm9yZVRMU0Vycm9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNv
dXBOZXR3b3JrUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsKICAgICBkZWNvZGVyID4+IHBy
b3h5U2V0dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBV
U0UoQ1VSTCkKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmls
ZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZTsKICAgICBpZiAo
IWNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlRmlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkN1cmxQcm94eVNldHRpbmdzPiBwcm94eVNldHRpbmdzOwogICAgIGRlY29kZXIgPj4gcHJveHlT
ZXR0aW5nczsKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIE9wdGlv
bmFsPFN0cmluZz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gbmV0d29y
a0NhY2hlRGlyZWN0b3J5OwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbmV0d29ya0NhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gbmV0d29ya0NhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rp
b25zRW5hYmxlZDsKICAgICBpZiAoIWRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZzsKICAgICBkZWNvZGVyID4+IGFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CiAgICAgaWYgKCFhbGxM
b2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBkYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGRl
Y29kZXIgPj4gZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKICAgICBpZiAoIWRhdGFDb25uZWN0
aW9uU2VydmljZVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gZmFzdFNlcnZlclRy
dXN0RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBmYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZDsKICAgICBpZiAoIWZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVk
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IG5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFs
aWRhdGlvbkVuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZh
bGlkYXRpb25FbmFibGVkOwogICAgIGlmICghbmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0
aW9uRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBzaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb247CiAgICAgZGVjb2RlciA+PiBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb247CiAgICAgaWYgKCFzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAgICAgZGVjb2Rl
ciA+PiBzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQ7CiAgICAgaWYgKCFzdGFsZVdoaWxlUmV2
YWxpZGF0ZUVuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gdGVzdFNwZWVkTXVs
dGlwbGllcjsKICAgICBkZWNvZGVyID4+IHRlc3RTcGVlZE11bHRpcGxpZXI7CiAgICAgaWYgKCF0
ZXN0U3BlZWRNdWx0aXBsaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IHN1cHByZXNz
ZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBkZWNvZGVyID4+IHN1
cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBpZiAoIXN1
cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgZGVjb2RlciA+PiBhbGxv
d3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGJvb2w+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247
CiAgICAgZGVjb2RlciA+PiByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOwogICAg
IGlmICghcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxib29sPiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAg
IGRlY29kZXIgPj4gcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBp
ZiAoIXByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8Ym9vbD4gYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNz
aW9uOwogICAgIGRlY29kZXIgPj4gYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQ
ZXJtaXNzaW9uOwogICAgIGlmICghYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQ
ZXJtaXNzaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNlTmV0d29ya0xvYWRlcjsKICAg
ICBkZWNvZGVyID4+IHVzZU5ldHdvcmtMb2FkZXI7CiAgICAgaWYgKCF1c2VOZXR3b3JrTG9hZGVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnM+IHJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhcmFtZXRlcnM7CiAgICAgaWYgKCFyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sKICAgICAgICAgKnNlc3Npb25JRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDg3MTFmZjg3YzY2N2RkOTkzZTdmZTNh
N2VkYThiNDI4MTU0ZmJmOWEuLjg3ZjEzNzRjYWE2ZjU0ODBiMGYxZWNhOTllZDIyODc1ODAxNzc2
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTUwMyw3ICs1MDMsNyBAQCB2
b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0VG9rZW5TaWduYXR1cmVVUkxG
b3JUZXN0aW5nKFVSTCYmIHRlc3RVUgogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OnNldEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3RpbmcoVVJMJiYgc291cmNlVVJMLCBV
UkwmJiBkZXN0aW5hdGlvblVSTCkKIHsKICAgICBpZiAoc291cmNlVVJMLmlzRW1wdHkoKSB8fCBk
ZXN0aW5hdGlvblVSTC5pc0VtcHR5KCkpCi0gICAgICAgIG1fYXR0cmlidXRpb25SZXBvcnRUZXN0
Q29uZmlnID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2F0dHJpYnV0aW9uUmVwb3J0VGVzdENv
bmZpZyA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlCiAgICAgICAgIG1fYXR0cmlidXRpb25SZXBv
cnRUZXN0Q29uZmlnID0gQXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnIHsgV1RGTW92ZShzb3Vy
Y2VVUkwpLCBXVEZNb3ZlKGRlc3RpbmF0aW9uVVJMKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiMjQzZDE0Y2IyM2M2M2NhNzVhMjQzZTUzZjg1MDUy
NzUwM2MyMjM4Li5mM2NjNjcwMzIyYzBlZWRkMDdlM2U4NzFjZmJiMWJmN2JjZmM5YWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzQ2LDcgKzM0Niw3IEBA
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCBy
ZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJl
cXVlc3RJZGVudGlmaWVyLCByZWdpc3RyYXRpb24tPmRhdGEoKSB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1h
dGNoUmVnaXN0cmF0aW9uIHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgV1RG
OjpudWxsb3B0IH0pOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
RGlkTWF0Y2hSZWdpc3RyYXRpb24geyByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVy
LCBzdGQ6Om51bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWdp
c3RyYXRpb25SZWFkeSh1aW50NjRfdCByZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggMzFkYjRhMDliZmU2MzFl
MmM5YjRhYzYwODczOTcyYWUwYjUzMDU2YS4uM2I2YjQxZDE2NTI3NDQxY2Q4MzRlYTM1ZGExODRj
MjhlYmEzNDg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaApA
QCAtOTMsMTMgKzkzLDEzIEBAIE9wdGlvbmFsPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
T3JpZ2luRGV0YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyCiB7CiAgICAgTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5vcmlnaW5JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jcmVhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1vZGlmaWNhdGlvblRpbWUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAppbmRleCAzZjNlZDQ0OTMwNDJiMTlhNDAzMWFl
NDNkNjkwMDIwZjJmNGEwODYwLi42MTMzNWE3OTNlMzU2OGEzYjVkZmU4Y2I1OTAyZDY4MTEwMDk0
N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
OjpkaXNwYXRjaEV2ZW50cyhJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rp
b24sIFN0bwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChzdG9y
YWdlQXJlYUltcGxJRCk7CiAgICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdp
bigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgT3B0aW9uYWw8U3RvcmFnZUFyZWFJbXBsSWRlbnRpZmllcj4gb3B0aW9uYWxTdG9yYWdl
QXJlYUltcGxJRCA9ICppdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gbWFrZU9wdGlvbmFsKHN0b3Jh
Z2VBcmVhSW1wbElEKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAgT3B0aW9uYWw8U3RvcmFnZUFy
ZWFJbXBsSWRlbnRpZmllcj4gb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9ICppdCA9PSBzb3Vy
Y2VDb25uZWN0aW9uID8gc3RkOjptYWtlX29wdGlvbmFsKHN0b3JhZ2VBcmVhSW1wbElEKSA6IHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rp
b25JRCA9ICppdCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gbV9pZGVudGlmaWVyLCBrZXkg
PSBrZXkuaXNvbGF0ZWRDb3B5KCksIG9sZFZhbHVlID0gb2xkVmFsdWUuaXNvbGF0ZWRDb3B5KCks
IG5ld1ZhbHVlID0gbmV3VmFsdWUuaXNvbGF0ZWRDb3B5KCksIHVybFN0cmluZyA9IHVybFN0cmlu
Zy5pc29sYXRlZENvcHkoKSwgb3B0aW9uYWxTdG9yYWdlQXJlYUltcGxJRCA9IFdURk1vdmUob3B0
aW9uYWxTdG9yYWdlQXJlYUltcGxJRCldIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyU2V0LmNwcAppbmRleCBmOWU4NDNkZTM3MzE5ZGQ2YzVjMTA2M2EzY2RjZjVjMWQ0
YmJhMTk1Li40NjU1NDg3YTZlY2QzMDBjNDEzYzFhYTU2MTNiZGZmYjQ4Y2U4ZGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlclNldC5jcHAKQEAgLTMxMiwxMyArMzEyLDEzIEBAIHZvaWQgU3RvcmFnZU1h
bmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQCiAKICAgICBhdXRvKiBzdG9yYWdlTWFuYWdlciA9IG1fc3RvcmFnZU1hbmFnZXJz
LmdldChzZXNzaW9uSUQpOwogICAgIGlmICghc3RvcmFnZU1hbmFnZXIpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHN0b3Jh
Z2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZUxvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5h
bWVzcGFjZUlELCBXVEZNb3ZlKG9yaWdpbkRhdGEpLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAg
aWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0zMzcsMTMgKzMzNywxMyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
U2V0Ojpjb25uZWN0VG9UcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYg
Y29ubgogCiAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQo
c2Vzc2lvbklEKTsKICAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiBzdG9yYWdlQXJl
YSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VBcmVhKHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgV1RGTW92ZSh0b3BMZXZlbE9yaWdpbkRhdGEpLCBXVEZNb3ZlKG9yaWdp
bkRhdGEpLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNjIs
MTMgKzM2MiwxMyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9TZXNzaW9uU3Rv
cmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogCiAgICAgYXV0byogc3RvcmFn
ZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXN0
b3JhZ2VNYW5hZ2VyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVh
dGVTZXNzaW9uU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKG9yaWdpbkRh
dGEpLCBtX3F1ZXVlLmNvcHlSZWYoKSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZS5jcHAKaW5kZXggMmFjZTUxYzYxMDhlMjM1ZjgwNjFkYzJlODg5OWJkNTZiZDc4MjM4Mi4uY2Q2
ODBmMDNkZjI2MTZlZTljYWEzZmVjYTVjZGE3OTQ0ODk5ZjQ0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNw
cApAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZXREaXJlY3RvcnlTaXplKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGRpcmVjdG9yeVNpemUgKz0gRmlsZVN5c3RlbTo6
ZmlsZVNpemUocGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgZGlyZWN0b3J5U2l6ZSArPSBGaWxl
U3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZV9vcigwKTsKICAgICB9CiAgICAgcmV0dXJuIGRp
cmVjdG9yeVNpemU7CiB9CkBAIC0zNTIsMTMgKzM1MiwxMyBAQCB2b2lkIEVuZ2luZTo6aW5pdGlh
bGl6ZShDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB9CiAKICAgICBpZiAobV9z
YWx0KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXNob3Vs
ZFBlcnNpc3QoKSkgewogICAgICAgICBtX3NhbHQgPSBOZXR3b3JrQ2FjaGU6OlNhbHQgeyB9Owot
ICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzksNyArMzc5LDcgQEAgdm9p
ZCBFbmdpbmU6OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAKICAg
ICAgICAgICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2luaXRpYWxpemF0aW9uQ2FsbGJh
Y2tzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCi0gICAg
ICAgICAgICAgICAgY2FsbGJhY2sobV9zYWx0ID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFs
KEVycm9yOjpXcml0ZURpc2spKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtX3NhbHQgPyBz
dGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoRXJyb3I6OldyaXRlRGlzaykpOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTQ1Myw3ICs0NTMsNyBAQCBDYWNoZSogRW5naW5lOjpj
YWNoZSh1aW50NjRfdCBjYWNoZUlkZW50aWZpZXIpCiB2b2lkIEVuZ2luZTo6d3JpdGVGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIE5ldHdvcmtDYWNoZTo6RGF0YSYmIGRhdGEsIFdlYkNvcmU6
OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBp
ZiAoIXNob3VsZFBlcnNpc3QoKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwor
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6OkRhdGEmJiBkYXRhLCBXZWJDb3IKICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhFcnJvcjo6V3JpdGVEaXNrKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAg
ICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CkBAIC01NjEsMjEgKzU2MSwyMSBAQCBPcHRpb25hbDx1aW50NjRfdD4gRW5naW5lOjpyZWFkU2l6
ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0pOwogCiAgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGZpbGVIYW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZp
bGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBmaWxlU2l6ZSA9
IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogICAgIGlmICghZmlsZVNp
emUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICB1bnNpZ25lZCBieXRlc1RvUmVhZDsKICAgICBpZiAoIVdURjo6Y29udmVy
dFNhZmVseShmaWxlU2l6ZSwgYnl0ZXNUb1JlYWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IE5vIHJl
YXNvbiB3ZSBuZWVkIGEgaGVhcCBidWZmZXIgdG8gcmVhZCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9m
IGJ5dGVzIHdoZW4gd2Ugb25seSBzdXBwb3J0IHNtYWxsIGZpbGVzIHRoYXQgY29udGFpbiBudW1l
cmFscy4KICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKICAgICB1bnNpZ25l
ZCB0b3RhbEJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlSGFuZGxlLCBi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0g
Ynl0ZXNUb1JlYWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih7IGJ1
ZmZlci5kYXRhKCksIHRvdGFsQnl0ZXNSZWFkIH0pOwogfQpAQCAtNzc0LDcgKzc3NCw3IEBAIHZv
aWQgRW5naW5lOjpjbGVhck1lbW9yeVJlcHJlc2VudGF0aW9uKGNvbnN0IFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYgb3JpZ2luLCBXZWJDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgcmVzdWx0LnZhbHVlKCkuZ2V0KCkuY2xlYXJNZW1vcnlSZXByZXNlbnRhdGlvbigpOwot
ICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCmluZGV4IDk0
MDlkOGYyNGMzMThjZGFiNGZjMmJiYzU4MWQ5ZDU3YzYyYTRmZDUuLjFmZWY1ZTYxNmQ3NWM3MDQ3
NWNkM2Q3M2MzOTNlY2E5NzczMDhlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwCkBA
IC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIFRyYXZlcnNhbFJlc3VsdCBpc29sYXRlZENvcHkoVHJh
dmVyc2FsUmVzdWx0JiYgcmVzdWx0KQogdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9uQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6T3BlbikgewotICAg
ICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxv
cHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpP
cGVuaW5nKSB7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBDYWNoZTo6b3BlbihDb21wbGV0aW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjYWNoZS0+bV9yZWNvcmRzID0gV1RGTW92ZSh0
cmF2ZXJzYWxSZXN1bHQucmVjb3Jkcyk7Ci0gICAgICAgICAgICAgICAgY2FjaGUtPmZpbmlzaE9w
ZW5pbmcoV1RGTW92ZShjYWxsYmFjayksIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAg
Y2FjaGUtPmZpbmlzaE9wZW5pbmcoV1RGTW92ZShjYWxsYmFjayksIHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjI3LDEw
ICsyMjcsMTAgQEAgdm9pZCBDYWNoZTo6ZmluaXNoT3BlbmluZyhDb21wbGV0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaywgT3B0aW9uYWw8RXJyb3I+JiYgZXJyb3IKICAgICB9CiAgICAgbV9zdGF0ZSA9
IFN0YXRlOjpPcGVuOwogCi0gICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwogICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdP
cGVuaW5nQ2FsbGJhY2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQot
ICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOwogfQogCiBjbGFzcyBSZWFkUmVjb3JkVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxSZWFkUmVjb3JkVGFza0NvdW50ZXI+IHsKQEAgLTU4MiwzNyArNTgyLDM3IEBAIHN0YXRp
YyBPcHRpb25hbDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiBkZWNvZGVET01DYWNo
ZVJlY29yZChXVEY6OlBlcnNpCiAgICAgT3B0aW9uYWw8RmV0Y2hIZWFkZXJzOjpHdWFyZD4gcmVx
dWVzdEhlYWRlcnNHdWFyZDsKICAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAg
ICAgaWYgKCFyZXF1ZXN0SGVhZGVyc0d1YXJkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0OwogICAgIGlmICghcmVxdWVzdC5kZWNvZGVXaXRob3V0UGxhdGZvcm1EYXRhKGRl
Y29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIEZldGNoT3B0aW9ucyBvcHRpb25zOwogICAgIGlmICghRmV0
Y2hPcHRpb25zOjpkZWNvZGVQZXJzaXN0ZW50KGRlY29kZXIsIG9wdGlvbnMpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gcmVmZXJyZXI7CiAgICAgZGVjb2RlciA+PiByZWZlcnJlcjsK
ICAgICBpZiAoIXJlZmVycmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPEZldGNoSGVhZGVyczo6
R3VhcmQ+IHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGRlY29kZXIgPj4gcmVzcG9uc2VIZWFk
ZXJzR3VhcmQ7CiAgICAgaWYgKCFyZXNwb25zZUhlYWRlcnNHdWFyZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgaWYgKCFSZXNvdXJjZVJlc3BvbnNlOjpkZWNvZGUo
ZGVjb2RlciwgcmVzcG9uc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiByZXNw
b25zZUJvZHlTaXplOwogICAgIGRlY29kZXIgPj4gcmVzcG9uc2VCb2R5U2l6ZTsKICAgICBpZiAo
IXJlc3BvbnNlQm9keVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIudmVyaWZ5Q2hlY2tzdW0o
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAwLApAQCAtNjM1LDE2ICs2MzUsMTYgQEAg
T3B0aW9uYWw8Q2FjaGU6OkRlY29kZWRSZWNvcmQ+IENhY2hlOjpkZWNvZGVSZWNvcmRIZWFkZXIo
Y29uc3QgU3RvcmFnZTo6UmVjb3JkJgogICAgIE9wdGlvbmFsPGRvdWJsZT4gaW5zZXJ0aW9uVGlt
ZTsKICAgICBkZWNvZGVyID4+IGluc2VydGlvblRpbWU7CiAgICAgaWYgKCFpbnNlcnRpb25UaW1l
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXpl
OwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRPTUNhY2hlRW5n
aW5lOjpSZWNvcmQ+IHJlY29yZCA9IGRlY29kZURPTUNhY2hlUmVjb3JkKGRlY29kZXIpOwogICAg
IGlmICghcmVjb3JkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmluc2Vy
dGlvblRpbWUpLApAQCAtNjU4LDcgKzY1OCw3IEBAIE9wdGlvbmFsPFJlY29yZD4gQ2FjaGU6OmRl
Y29kZShjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHN0b3JhZ2UpCiAgICAgYXV0byByZXN1bHQgPSBk
ZWNvZGVSZWNvcmRIZWFkZXIoc3RvcmFnZSk7CiAKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gcmVjb3JkID0gV1RGTW92ZShyZXN1bHQtPnJlY29yZCk7CiAgICAgcmVjb3JkLnJlc3Bv
bnNlQm9keSA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0b3JhZ2UuYm9keS5kYXRh
KCksIHN0b3JhZ2UuYm9keS5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmlu
ZGV4IGZjZWZiZjcxMjAzNGY3M2Q3NTRiODliMTlhMjQ3NzE1MWYyNzdjYmYuLjg3NTUxNTNhYzgz
YTk0Yjk1MjJjYjNkZGU4NjI2MzRjMzdkYWY3OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXUKICAgICBxdWV1
ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgZmlsZW5hbWUgPSBjYWNoZXNPcmlnaW5GaWxlbmFtZShmb2xkZXJQYXRoKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQ2FjaGVzOjpyZXRyaWV2ZU9y
aWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBXb3JrUXVldWUmIHF1
CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgaWYg
KGVycm9yKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoQ2FjaGVTdG9yYWdl
LCAiQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkgZmFpbGVkIHJlYWRpbmcgY2hh
bm5lbCB3aXRoIGVycm9yICVkIiwgZXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZWFkT3JpZ2luKGRhdGEpKTsKQEAgLTExNywx
MiArMTE3LDEyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFk
T3JpZ2luKGNvbnN0IERhdGEmIGRhdGEpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiB0b3BPcmlnaW47CiAgICAgZGVjb2RlciA+PiB0b3BPcmlnaW47CiAgICAgaWYg
KCF0b3BPcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IGNsaWVudE9yaWdpbjsKICAgICBkZWNvZGVyID4+IGNsaWVudE9yaWdpbjsKICAgICBpZiAo
IWNsaWVudE9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCp0b3BP
cmlnaW4pLApAQCAtMTMzLDE0ICsxMzMsMTQgQEAgT3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3Jp
Z2luPiBDYWNoZXM6OnJlYWRPcmlnaW4oY29uc3QgRGF0YSYgZGF0YSkKIHZvaWQgQ2FjaGVzOjpp
bml0aWFsaXplKFdlYkNvcmU6OkRPTUNhY2hlRW5naW5lOjpDb21wbGV0aW9uQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBpZiAobV9pc0luaXRpYWxpemVkKSB7Ci0gICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9yb290UGF0aC5pc051bGwoKSkgewogICAgICAg
ICBtYWtlRGlydHkoKTsKICAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAg
Y2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgQ2FjaGVz
Ojppbml0aWFsaXplU2l6ZSgpCiAgICAgICAgICAgICAgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBhdXRvIHBlbmRpbmdDYWxsYmFja3MgPSBXVEZNb3ZlKG1fcGVu
ZGluZ0luaXRpYWxpemF0aW9uQ2FsbGJhY2tzKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogcGVuZGluZ0NhbGxiYWNrcykKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC00ODAsNyArNDgwLDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIEFTU0VSVCghbV9pc1dyaXRpbmdDYWNoZXNUb0Rp
c2spOwogICAgIEFTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwogICAgIGlmICghc2hvdWxkUGVyc2lz
dCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4OCw3ICs0ODgs
NyBAQCB2b2lkIENhY2hlczo6d3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCiAKICAgICBpZiAobV9jYWNoZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fZW5n
aW5lLT5yZW1vdmVGaWxlKGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKSk7Ci0gICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIENhY2hl
czo6d3JpdGVDYWNoZXNUb0Rpc2soQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAKICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShlcnJvcikpOwogICAgICAgICB3aGlsZSAoIW1fcGVuZGlu
Z1dyaXRpbmdDYWNoZXNUb0Rpc2tDYWxsYmFja3MuaXNFbXB0eSgpICYmICFtX2lzV3JpdGluZ0Nh
Y2hlc1RvRGlzaykKLSAgICAgICAgICAgIG1fcGVuZGluZ1dyaXRpbmdDYWNoZXNUb0Rpc2tDYWxs
YmFja3MudGFrZUZpcnN0KCkoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ1dy
aXRpbmdDYWNoZXNUb0Rpc2tDYWxsYmFja3MudGFrZUZpcnN0KCkoc3RkOjpudWxsb3B0KTsKICAg
ICB9KTsKIH0KIApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQgQ2FjaGVzOjp3cml0ZVJlY29yZChj
b25zdCBDYWNoZSYgY2FjaGUsIGNvbnN0IFJlY29yZEluZm9ybWF0aW9uJiByZWNvcmRJbmZvCiAK
ICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewogICAgICAgICBtX3ZvbGF0aWxlU3RvcmFnZS5z
ZXQocmVjb3JkSW5mb3JtYXRpb24ua2V5LCBtYWtlVW5pcXVlPFJlY29yZD4oV1RGTW92ZShyZWNv
cmQpKSk7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1Niw3ICs1NTYs
NyBAQCB2b2lkIENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBS
ZWNvcmRJbmZvcm1hdGlvbiYgcmVjb3JkSW5mbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIHVwZGF0ZVNpemVGaWxlKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAppbmRleCAyYWFiN2IwNjJjZGM4NGQxMDY5NzM0OWQ4
OTJiYWNhOTgwNGY3MDg2Li43MGY4MzU4NDczZTljMTZlZWI3OWFmMzdkZjYwMTQ4ZDQ1MjY1ZDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEJs
b2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgICAgIGlmIChsaW5rQ291bnQgJiYgKmxpbmtD
b3VudCA9PSAxKQogICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9hcHByb3hpbWF0ZVNpemUgKz0gRmlsZVN5c3RlbTo6
ZmlsZVNpemUocGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIG1fYXBwcm94aW1hdGVTaXpl
ICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlX29yKDApOwogICAgIH0pOwogCiAg
ICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGJsb2Igc3luY2hy
b25pemF0aW9uIGNvbXBsZXRlZCBhcHByb3hpbWF0ZVNpemU9JXp1IiwgYXBwcm94aW1hdGVTaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVDb2RlcnMuY3BwCmluZGV4IGFhYmI1YmVhODkxMzhmNDFlZGEzODQzYTJmN2Y1
YWEwOTc1NjQxMGEuLjJjZGM0MjJmMzA4ZmEwMGU2NjY2ZWE4NzVlZGVmNmZhNWIwMzZmY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUNvZGVycy5jcHAKQEAgLTQ1LDE4ICs0NSwxOCBAQCBPcHRpb25hbDxXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwPiBDb2RlcjxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPjo6ZGVjb2RlKERlY29k
ZXImCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGhlYWRlcnNTaXplOwogICAgIGRlY29kZXIgPj4g
aGVhZGVyc1NpemU7CiAgICAgaWYgKCFoZWFkZXJzU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6OkhU
VFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgKmhlYWRl
cnNTaXplOyArK2kpIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgICAgICBk
ZWNvZGVyID4+IG5hbWU7CiAgICAgICAgIGlmICghbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAg
ICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGhlYWRlcnMuYXBwZW5kKFdURk1vdmUo
Km5hbWUpLCBXVEZNb3ZlKCp2YWx1ZSkpOwogICAgIH0KICAgICByZXR1cm4gaGVhZGVyczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDNiZDBjNzQ4N2I2MDAzNGUyZjQyYmMwMDI5N2Zi
ODI0YjAzNmU1MmUuLmM4NzVjOTM2NGVlMDUzNTI2ZDNmOWU3YzM2Mjc1ZDkzMTljNWMxMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCBGaWxlVGltZXMgZmls
ZVRpbWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgYXV0byBj
cmVhdGVUaW1lID0gRmlsZVN5c3RlbTo6ZmlsZUNyZWF0aW9uVGltZShwYXRoKTsKICAgICBhdXRv
IG1vZGlmeVRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKLSAg
ICByZXR1cm4geyBjcmVhdGVUaW1lLnZhbHVlT3IoV2FsbFRpbWUoKSksIG1vZGlmeVRpbWUudmFs
dWVPcihXYWxsVGltZSgpKSB9OworICAgIHJldHVybiB7IGNyZWF0ZVRpbWUudmFsdWVfb3IoV2Fs
bFRpbWUoKSksIG1vZGlmeVRpbWUudmFsdWVfb3IoV2FsbFRpbWUoKSkgfTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCA1YTNkOTI5NGIxNGQ5ZGYxZmE2
OTU3MmRhZjNiMmY0YzZjNjU4OTFkLi44OTc5YjE0MzQ0NGFkYzFiNTBmY2I4ZTZlOTE2OGY4NzQy
ZGZkOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTY2LDE3ICs2Niwx
NyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5
cGUsIE9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPgogICAgICAgICB1bmxpbmsocGF0aC5kYXRhKCkp
OwogICAgICAgICBvZmxhZyA9IE9fUkRXUiB8IE9fQ1JFQVQgfCBPX05PTkJMT0NLOwogICAgICAg
ICBtb2RlID0gU19JUlVTUiB8IFNfSVdVU1I7Ci0gICAgICAgIGRpc3BhdGNoUU9TID0gcW9zLnZh
bHVlT3IoV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpOworICAgICAgICBkaXNwYXRjaFFPUyA9
IHFvcy52YWx1ZV9vcihXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgVHlwZTo6V3JpdGU6CiAgICAgICAgIG9mbGFnID0gT19XUk9OTFkgfCBPX05P
TkJMT0NLOwogICAgICAgICBtb2RlID0gU19JUlVTUiB8IFNfSVdVU1I7Ci0gICAgICAgIGRpc3Bh
dGNoUU9TID0gcW9zLnZhbHVlT3IoV29ya1F1ZXVlOjpRT1M6OkJhY2tncm91bmQpOworICAgICAg
ICBkaXNwYXRjaFFPUyA9IHFvcy52YWx1ZV9vcihXb3JrUXVldWU6OlFPUzo6QmFja2dyb3VuZCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6UmVhZDoKICAgICAgICAgb2ZsYWcgPSBP
X1JET05MWSB8IE9fTk9OQkxPQ0s7CiAgICAgICAgIG1vZGUgPSAwOwotICAgICAgICBkaXNwYXRj
aFFPUyA9IHFvcy52YWx1ZU9yKFdvcmtRdWV1ZTo6UU9TOjpEZWZhdWx0KTsKKyAgICAgICAgZGlz
cGF0Y2hRT1MgPSBxb3MudmFsdWVfb3IoV29ya1F1ZXVlOjpRT1M6OkRlZmF1bHQpOwogICAgIH0K
IAogICAgIGludCBmZCA9IDo6b3BlbihwYXRoLmRhdGEoKSwgb2ZsYWcsIG1vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXku
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXku
Y3BwCmluZGV4IDIyNjVhZTFkMTgxNWVkOWRlNjNkZTUxYTJlNWQ3M2I5M2E5OWQxMDQuLjU4ZGQz
ZTczMzJjYjA5NzhhZDk2Y2I2ZGNiOWFjMGIwNjk1ZTg5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKQEAgLTE4
MCwzNyArMTgwLDM3IEBAIE9wdGlvbmFsPEtleT4gS2V5OjpkZWNvZGUoV1RGOjpQZXJzaXN0ZW5j
ZTo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IHBhcnRpdGlvbjsKICAg
ICBkZWNvZGVyID4+IHBhcnRpdGlvbjsKICAgICBpZiAoIXBhcnRpdGlvbikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXku
bV9wYXJ0aXRpb24gPSBXVEZNb3ZlKCpwYXJ0aXRpb24pOwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5
Lm1fdHlwZSA9IFdURk1vdmUoKnR5cGUpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAga2V5Lm1faWRlbnRpZmllciA9IFdURk1vdmUoKmlkZW50aWZpZXIpOwogCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdlOwogICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAga2V5Lm1fcmFuZ2UgPSBXVEZNb3ZlKCpyYW5nZSk7CiAKICAgICBPcHRpb25h
bDxIYXNoVHlwZT4gaGFzaDsKICAgICBkZWNvZGVyID4+IGhhc2g7CiAgICAgaWYgKCFoYXNoKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGtleS5tX2hhc2ggPSBXVEZNb3ZlKCpoYXNoKTsKIAogICAgIE9wdGlvbmFsPEhhc2hU
eXBlPiBwYXJ0aXRpb25IYXNoOwogICAgIGRlY29kZXIgPj4gcGFydGl0aW9uSGFzaDsKICAgICBp
ZiAoIXBhcnRpdGlvbkhhc2gpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fcGFydGl0aW9uSGFzaCA9IFdURk1vdmUo
KnBhcnRpdGlvbkhhc2gpOwogCiAgICAgcmV0dXJuIHsgV1RGTW92ZShrZXkpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IDg1NmNkNWQ0NTA5MzY2
ZTU4YmZkNjVhYWZiNzUzOWZjOTBkY2Q2ZjEuLmVmNzZhOWFiYmU2ZGM5ODVjN2M2MDZmZGVlNzU0
NmU1ZDdlNjU3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUHJlbG9hZGVkRW50cnk7
CiAKICAgICBzdGF0aWMgYm9vbCBzaG91bGRSZWdpc3RlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0PiYmIHJldmFsaWRhdGlvblJlcXVlc3QgPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgYWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFs
RnJhbWVJRCYsIE9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRp
b25SZXF1ZXN0ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHByZWxvYWRFbnRyeShjb25zdCBL
ZXkmLCBjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICB2b2lkIHJldHJpZXZlRW50cnlG
cm9tU3RvcmFnZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5k
bGVyJiYpOwogICAgIHZvaWQgcmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNl
SW5mbyYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggZDA1YWU5YmQyZGI3OWIzMTM0ODZiMDYyYTI1ODhlOTJiOGE4ODg0OS4uNzRjZGI3ZDEyNTQ3
Nzg3ZDA0MWVhZGZjODg0YWE1ODgwNDY4MmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC04
NzIsNyArODcyLDcgQEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxXcml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgKyt3cml0ZU9w
ZXJhdGlvbi5hY3RpdmVDb3VudDsKIAogICAgICAgICBib29sIHNob3VsZFN0b3JlQXNCbG9iID0g
c2hvdWxkU3RvcmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uLnJlY29yZC5ib2R5KTsKLSAgICAg
ICAgYXV0byBibG9iID0gc2hvdWxkU3RvcmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3JpdGVP
cGVyYXRpb24pIDogV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIGJsb2IgPSBzaG91bGRTdG9y
ZUFzQmxvYiA/IHN0b3JlQm9keUFzQmxvYih3cml0ZU9wZXJhdGlvbikgOiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgYXV0byByZWNvcmREYXRhID0gZW5jb2RlUmVjb3JkKHdyaXRlT3BlcmF0aW9u
LnJlY29yZCwgYmxvYik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAK
aW5kZXggZmJjNWQwMmMyYTg1OTIyZDVmYzI2M2RkYzU4Mjk5MmFkMGUzOTVmZS4uZGY0ZjE2ODEw
ZjkzMTRhOGFkYTMwMGQ0MDgxN2RjNzVhMmI2ZmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJy
ZXNvdXJjZXNFbnRyeS5jcHAKQEAgLTU5LDI1ICs1OSwyNSBAQCBPcHRpb25hbDxTdWJyZXNvdXJj
ZUluZm8+IFN1YnJlc291cmNlSW5mbzo6ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIm
IGRlYwogICAgIE9wdGlvbmFsPEtleT4ga2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlm
ICgha2V5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGluZm8ubV9rZXkgPSBXVEZNb3ZlKCprZXkpOwogCiAgICAgT3B0aW9u
YWw8V2FsbFRpbWU+IGxhc3RTZWVuOwogICAgIGRlY29kZXIgPj4gbGFzdFNlZW47CiAgICAgaWYg
KCFsYXN0U2VlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fbGFzdFNlZW4gPSBXVEZNb3ZlKCpsYXN0U2Vlbik7
CiAKICAgICBPcHRpb25hbDxXYWxsVGltZT4gZmlyc3RTZWVuOwogICAgIGRlY29kZXIgPj4gZmly
c3RTZWVuOwogICAgIGlmICghZmlyc3RTZWVuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9maXJzdFNlZW4gPSBX
VEZNb3ZlKCpmaXJzdFNlZW4pOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNUcmFuc2llbnQ7CiAg
ICAgZGVjb2RlciA+PiBpc1RyYW5zaWVudDsKICAgICBpZiAoIWlzVHJhbnNpZW50KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGluZm8ubV9pc1RyYW5zaWVudCA9IFdURk1vdmUoKmlzVHJhbnNpZW50KTsKIAogICAgIGlmIChp
bmZvLm1faXNUcmFuc2llbnQpCkBAIC04NiwyNSArODYsMjUgQEAgT3B0aW9uYWw8U3VicmVzb3Vy
Y2VJbmZvPiBTdWJyZXNvdXJjZUluZm86OmRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVy
JiBkZWMKICAgICBPcHRpb25hbDxib29sPiBpc1NhbWVTaXRlOwogICAgIGRlY29kZXIgPj4gaXNT
YW1lU2l0ZTsKICAgICBpZiAoIWlzU2FtZVNpdGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2lzU2FtZVNpdGUg
PSBXVEZNb3ZlKCppc1NhbWVTaXRlKTsKIAogICAgIE9wdGlvbmFsPFVSTD4gZmlyc3RQYXJ0eUZv
ckNvb2tpZXM7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5Rm9yQ29va2llczsKICAgICBpZiAo
IWZpcnN0UGFydHlGb3JDb29raWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9maXJzdFBhcnR5Rm9yQ29va2ll
cyA9IFdURk1vdmUoKmZpcnN0UGFydHlGb3JDb29raWVzKTsKIAogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXA+IHJlcXVlc3RIZWFkZXJzOwogICAgIGRlY29kZXIgPj4gcmVxdWVz
dEhlYWRlcnM7CiAgICAgaWYgKCFyZXF1ZXN0SGVhZGVycykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fcmVxdWVz
dEhlYWRlcnMgPSBXVEZNb3ZlKCpyZXF1ZXN0SGVhZGVycyk7CiAKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eT4gcHJpb3JpdHk7CiAgICAgZGVjb2RlciA+PiBwcmlv
cml0eTsKICAgICBpZiAoIXByaW9yaXR5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGluZm8ubV9wcmlvcml0eSA9IFdURk1v
dmUoKnByaW9yaXR5KTsKICAgICAKICAgICByZXR1cm4geyBXVEZNb3ZlKGluZm8pIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5jcHAKaW5kZXggZTlmZGYzNTdkNjRmODkxNmIzNWU1ZTAwNDY5Yjk5NzU4MGRiM2Fi
ZC4uMmM5MzFlYTFkMzNmOGYzNDE3YTJhNWVmYmY0M2U3N2YyNjdkODRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6cmVz
dGFydFdpdGhDcmVkZW50aWFsKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvCiB2b2lk
IE5ldHdvcmtEYXRhVGFza0N1cmw6OmFwcGVuZENvb2tpZUhlYWRlcihXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHJl
cXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZ
ZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm87Ci0gICAgYXV0byBjb29raWVIZWFkZXJGaWVs
ZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpZZXMsIFdl
YkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7Cisg
ICAgYXV0byBjb29raWVIZWFkZXJGaWVsZCA9IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgV2ViQ29yZTo6U2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVl
c3QudXJsKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQOjpZZXMsIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nOjpObykuZmlyc3Q7CiAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5
KCkpCiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b29raWUsIGNvb2tpZUhlYWRlckZpZWxkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCmluZGV4IDI0ZGEzODg3OWNiMDQyNmUxOWY0ZmJjNzFk
YTkyZTgzMTRmZmNiNjQuLmE4YmUyZjNkMzVlMGRkNzJiMjQxYzdlM2Q5NTY0MTczOWNiZTBjZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9ETlNDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcApA
QCAtNjgsMTIgKzY4LDEyIEBAIE9wdGlvbmFsPFZlY3RvcjxHUmVmUHRyPEdJbmV0QWRkcmVzcz4+
PiBETlNDYWNoZTo6bG9va3VwKGNvbnN0IENTdHJpbmcmIGhvc3QsIFR5CiAgICAgYXV0byYgbWFw
ID0gbWFwRm9yVHlwZSh0eXBlKTsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaG9zdCk7CiAgICAg
aWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHJlc3BvbnNlID0gaXQtPnZhbHVl
OwogICAgIGlmIChyZXNwb25zZS5leHBpcmF0aW9uVGltZSA8PSBNb25vdG9uaWNUaW1lOjpub3co
KSkgewogICAgICAgICBtYXAucmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVz
cG9uc2UuYWRkcmVzc0xpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggMjI4MmNiNTU4ZTI0MTli
OGMxZTNhN2M0ZTMwNThiNjNmNWZhYzU5Mi4uNWY5NjY5OWM1NzgzY2YxZDJjYmMyOGEzZDRmOWU1
NGJmZDgxMmE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrU291cDo6Y2xlYXJSZXF1ZXN0KCkKIAogICAgIHN0b3BUaW1lb3V0KCk7
CiAgICAgbV9wZW5kaW5nUmVzdWx0ID0gbnVsbHB0cjsKLSAgICBtX3BlbmRpbmdEYXRhVVJMUmVz
dWx0ID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ0RhdGFVUkxSZXN1bHQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9maWxlID0gbnVsbHB0cjsKICAgICBtX2lucHV0U3RyZWFtID0gbnVsbHB0
cjsKICAgICBtX211bHRpcGFydElucHV0U3RyZWFtID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXIuaAppbmRleCA1ZWZkMzI2ZWJmZmExM2IyMzA1NmJj
YTQxNWM3Y2E2NmIwMTVkNjkyLi5kMjhhMDMxYTg1M2U0NzkwMDc5OGQxOTc5MDQ4YTRmZDNhY2Vj
Nzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4gc3RydWN0
IEFyZ3VtZW50Q29kZXIgewogICAgICAgICAgICAgVCB0OwogICAgICAgICAgICAgaWYgKFQ6OmRl
Y29kZShkZWNvZGVyLCB0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSh0KTsKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC04OCw3ICs4OCw3IEBAIHN0cnVjdCBBcmd1
bWVudENvZGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19hcml0aG1ldGlj
X3Y8VD4+PiB7CiAgICAgICAgIFQgcmVzdWx0OwogICAgICAgICBpZiAoZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnJlc3VsdCksIHNpemVv
ZihUKSwgYWxpZ25vZihUKSkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH07CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZW51bV92PFQ+Pj4gewogICAgICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgICAgICBpZiAodmFsdWUgJiYgV1RGOjppc1ZhbGlkRW51bTxUPigqdmFs
dWUpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KCp2YWx1ZSk7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IGI2MjkzOWU2YmFjYzJmZWI0YTM1MTNkYWQyOTdlOTlhZmMxYzMzMWYuLjZhODU2YWVm
ZjQzNGY0MDM2ODZiODFiN2Q0YTQ5YzM0ZjJjOGZhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV0FSTl9VTlVT
RURfUkVUVVJOIE9wdGlvbmFsPFdhbGxUaW1lPiBBcmd1bWVudENvZGVyPFdhbGxUaW1lPjo6ZGVj
b2RlKERlY29kZXImIGQKICAgICBPcHRpb25hbDxkb3VibGU+IHRpbWU7CiAgICAgZGVjb2RlciA+
PiB0aW1lOwogICAgIGlmICghdGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKCp0aW1lKTsKIH0KIApAQCAtMTM5LDEyICsxMzksMTIgQEAgc3RhdGljIGlubGluZSBP
cHRpb25hbDxTdHJpbmc+IGRlY29kZVN0cmluZ1RleHQoRGVjb2RlciYgZGVjb2RlciwgdWludDMy
X3QgbGVuZ3QKIHsKICAgICAvLyBCZWZvcmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1
cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29k
ZXIuYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIENoYXJhY3RlclR5cGUqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0g
U3RyaW5nOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1
ZmZlciksIGxlbmd0aCAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSwgYWxpZ25vZihDaGFyYWN0ZXJU
eXBlKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KQEAgLTE1Myw3ICsxNTMsNyBA
QCBXQVJOX1VOVVNFRF9SRVRVUk4gT3B0aW9uYWw8U3RyaW5nPiBBcmd1bWVudENvZGVyPFN0cmlu
Zz46OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewogICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKGxlbmd0aCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgbnVsbCBzdHJpbmcuCkBAIC0xNjIsNyArMTYyLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJO
IE9wdGlvbmFsPFN0cmluZz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2QKICAgICAKICAgICBib29sIGlzOEJpdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlz
OEJpdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKGlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0
cmluZ1RleHQ8TENoYXI+KGRlY29kZXIsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCAzN2VmNGRhNzM4M2EzY2ZiNWE0ZWI4YTBjN2Ey
ZjY5YzNiNGQyMDY1Li5hNmZlNTkwMGRkODg2NjY3NDAwZGVjODI5ODE5NjJhYjY2MDBkODlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKQEAgLTY5LDcg
KzY5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgRXh0ZW4KICAgICAgICAgICAgIHJldHVybiBBcnJh
eVJlZmVyZW5jZVR5cGUoKTsKICAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIu
ZGVjb2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQp
KTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0YSksIEV4dGVudCk7CiAg
ICAgfQogfTsKQEAgLTg4LDE3ICs4OCwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaQogICAg
IHsKICAgICAgICAgdWludDY0X3Qgc2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
aXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXNpemUpCiAgICAgICAgICAgICByZXR1cm4g
QXJyYXlSZWZlcmVuY2VUeXBlKCk7CiAKICAgICAgICAgYXV0byBkYXRhU2l6ZSA9IENoZWNrZWRT
aXplIHsgc2l6ZSB9ICogc2l6ZW9mKFQpOwogICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUu
aGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLnVuc2FmZUdl
dCgpLCBhbGlnbm9mKFQpKTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiBBcnJheVJlZmVyZW5jZVR5cGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oZGF0
YSksIHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZSkpOwogICAgIH0KIH07CkBAIC0xMjYsMTAgKzEy
NiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25T
ZXQ8VD4+IHsKICAgICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgT3B0aW9uU2V0PFQ+OjpTdG9yYWdl
VHlwZT4gdmFsdWU7CiAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgIGlmICghdmFs
dWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBvcHRpb25TZXQgPSBPcHRpb25TZXQ8VD46OmZy
b21SYXcoKnZhbHVlKTsKICAgICAgICAgaWYgKCFXVEY6OmlzVmFsaWRPcHRpb25TZXQob3B0aW9u
U2V0KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gb3B0aW9uU2V0OwogICAgIH0KIH07CkBA
IC0xNTQsNyArMTU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8T3B0aW9uYWw8VD4+IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBp
ZiAoIWlzRW5nYWdlZCkgewotICAgICAgICAgICAgb3B0aW9uYWwgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBvcHRpb25hbCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKQEAgLTE3MSwxNSArMTcxLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGlzRW5nYWdlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc0VuZ2FnZWQ7CiAgICAgICAg
IGlmICghaXNFbmdhZ2VkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqaXNFbmdhZ2VkKSB7CiAg
ICAgICAgICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gdmFs
dWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIHJldHVybiBPcHRpb25hbDxPcHRpb25hbDxUPj4oV1RGTW92ZSgqdmFsdWUpKTsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+KE9wdGlvbmFsPFQ+KFdU
Rjo6bnVsbG9wdCkpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+KE9wdGlv
bmFsPFQ+KHN0ZDo6bnVsbG9wdCkpOwogICAgIH0KIH07CiAKQEAgLTIxOSwxMiArMjE5LDEyIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEJveDxUPj4gewogICAg
ICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNFbmdh
Z2VkOwogICAgICAgICBpZiAoIWlzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoKmlz
RW5nYWdlZCkgewogICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CiAgICAgICAgICAgICBk
ZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94PFQ+PihCb3g8VD46OmNyZWF0ZShX
VEZNb3ZlKCp2YWx1ZSkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gT3B0aW9uYWw8Qm94
PFQ+PihCb3g8VD4obnVsbHB0cikpOwpAQCAtMjU3LDEyICsyNTcsMTIgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8c3RkOjpwYWlyPFQsIFU+
PiB7CiAgICAgICAgIE9wdGlvbmFsPFQ+IGZpcnN0OwogICAgICAgICBkZWNvZGVyID4+IGZpcnN0
OwogICAgICAgICBpZiAoIWZpcnN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRp
b25hbDxVPiBzZWNvbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAo
IXNlY29uZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUo
KmZpcnN0KSwgV1RGTW92ZSgqc2Vjb25kKSB9fTsKICAgICB9CkBAIC0zMDUsMTEgKzMwNSwxMSBA
QCBzdHJ1Y3QgVHVwbGVEZWNvZGVySW1wbCB7CiAgICAgICAgIE9wdGlvbmFsPFR5cGU+IG9wdGlv
bmFsOwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFs
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8c3RkOjp0dXBsZTxUeXBlcy4uLj4+IHN1
YlR1cGxlID0gVHVwbGVEZWNvZGVySW1wbDxUeXBlcy4uLj46OmRlY29kZShkZWNvZGVyKTsKICAg
ICAgICAgaWYgKCFzdWJUdXBsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB0dXBsZUZy
b21UdXBsZUFuZE9iamVjdChXVEZNb3ZlKCpvcHRpb25hbCksIFdURk1vdmUoKnN1YlR1cGxlKSk7
CiAgICAgfQpAQCAtMzIyLDcgKzMyMiw3IEBAIHN0cnVjdCBUdXBsZURlY29kZXJJbXBsPFR5cGU+
IHsKICAgICAgICAgT3B0aW9uYWw8VHlwZT4gb3B0aW9uYWw7CiAgICAgICAgIGRlY29kZXIgPj4g
b3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV90dXBsZShXVEZNb3ZlKCpvcHRpb25hbCkpOwogICAgIH0KIH07CkBAIC00
MDMsMTQgKzQwMywxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAgIHsKICAgICAgICAg
dWludDY0X3Qgc2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
LCBtaW5DYXBhY2l0eT4gdmVjdG9yOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgewogICAgICAgICAgICAgT3B0aW9uYWw8VD4gZWxlbWVudDsKICAgICAgICAgICAg
IGRlY29kZXIgPj4gZWxlbWVudDsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUoKmVsZW1lbnQpKTsK
ICAgICAgICAgfQogICAgICAgICB2ZWN0b3Iuc2hyaW5rVG9GaXQoKTsKQEAgLTQ1NywxMCArNDU3
LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgewogICAgICAgICB1aW50NjRfdCBk
ZWNvZGVkU2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZWNvZGVkU2l6ZSkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWlzSW5Cb3VuZHM8c2l6ZV90PihkZWNvZGVkU2l6ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGRl
Y29kZWRTaXplKTsKIApAQCAtNDY4LDEzICs0NjgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBt
aW4KICAgICAgICAgLy8gb25lIGZlbGwgc3dvb3AuIEJlZm9yZSBhbGxvY2F0aW5nIHdlIG11c3Qg
aG93ZXZlciBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZmZXIKICAgICAgICAgLy8gaXMg
YmlnIGVub3VnaC4KICAgICAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0Nv
bnRhaW48VD4oc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyLCBtaW5DYXBhY2l0eT4gdmVjdG9yOwogICAg
ICAgICB2ZWN0b3IuZ3JvdyhzaXplKTsKIAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHZlY3Rvci5kYXRhKCkpLCBz
aXplICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVy
biB2ZWN0b3I7CiAgICAgfQpAQCAtNDk2LDI2ICs0OTYsMjYgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtl
eVRyYWkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IGhhc2hNYXBTaXplOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc2hNYXBTaXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEhhc2hN
YXBUeXBlIGhhc2hNYXA7CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBoYXNoTWFw
U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAg
ICAgIGRlY29kZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFrZXkpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8TWFwcGVkQXJnPiB2YWx1ZTsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
SGFzaE1hcFR5cGU6OmlzVmFsaWRLZXkoKmtleSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCFoYXNoTWFwLmFkZChXVEZNb3ZlKCprZXkpLCBXVEZNb3Zl
KCp2YWx1ZSkpLmlzTmV3RW50cnkpKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFw
IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC01NTgsMjEgKzU1OCwyMSBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0Fy
ZywgdHlwZW5hbWUgSGFzaAogICAgIHsKICAgICAgICAgdWludDY0X3QgaGFzaFNldFNpemU7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzaFNldFNpemUpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgSGFzaFNldFR5cGUgaGFzaFNldDsKICAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsg
aSA8IGhhc2hTZXRTaXplOyArK2kpIHsKICAgICAgICAgICAgIE9wdGlvbmFsPEtleUFyZz4ga2V5
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgICAgICBpZiAoIWtleSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghSGFzaFNldFR5cGU6
OmlzVmFsaWRWYWx1ZSgqa2V5KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoIWhhc2hTZXQuYWRkKFdURk1vdmUoKmtleSkpLmlzTmV3RW50cnkpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggc2V0IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQg
a2V5LCBiYWlsLgotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CkBAIC02NDAsMTMgKzY0MCwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVu
YW1lIEVycm9yVHlwZT4gc3RydWN0IEFyZ3VtZW50Q29kZXI8RXhwZWN0ZWQ8VgogICAgICAgICBP
cHRpb25hbDxib29sPiBoYXNWYWx1ZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNWYWx1ZTsKICAg
ICAgICAgaWYgKCFoYXNWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgaWYgKCpo
YXNWYWx1ZSkgewogICAgICAgICAgICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgRXhwZWN0ZWQ8VmFsdWVUeXBl
LCBFcnJvclR5cGU+IGV4cGVjdGVkKFdURk1vdmUoKnZhbHVlKSk7CiAgICAgICAgICAgICByZXR1
cm4gZXhwZWN0ZWQ7CkBAIC02NTQsNyArNjU0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVU
eXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVyPEV4cGVjdGVkPFYK
ICAgICAgICAgT3B0aW9uYWw8RXJyb3JUeXBlPiBlcnJvcjsKICAgICAgICAgZGVjb2RlciA+PiBl
cnJvcjsKICAgICAgICAgaWYgKCFlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyBt
YWtlVW5leHBlY3RlZChXVEZNb3ZlKCplcnJvcikpIH07CiAgICAgfQogfTsKQEAgLTY3Niw3ICs2
NzYsNyBAQCBzdHJ1Y3QgVmFyaWFudENvZGVyIHsKICAgICAgICAgICAgIE9wdGlvbmFsPHR5cGVu
YW1lIFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZTxpbmRleCwgV1RGOjpWYXJpYW50PFR5cGVzLi4u
Pj46OnR5cGU+IG9wdGlvbmFsOwogICAgICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsKICAg
ICAgICAgICAgIGlmICghb3B0aW9uYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
cmV0dXJuIHsgV1RGTW92ZSgqb3B0aW9uYWwpIH07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IFZhcmlhbnRDb2RlcjxpbmRleCAtIDEsIFR5cGVzLi4uPjo6ZGVjb2RlKGRlY29kZXIsIGkpOwpA
QCAtNjk3LDcgKzY5Nyw3IEBAIHN0cnVjdCBWYXJpYW50Q29kZXI8MCwgVHlwZXMuLi4+IHsKICAg
ICAgICAgT3B0aW9uYWw8dHlwZW5hbWUgV1RGOjp2YXJpYW50X2FsdGVybmF0aXZlPDAsIFdURjo6
VmFyaWFudDxUeXBlcy4uLj4+Ojp0eXBlPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBv
cHRpb25hbDsKICAgICAgICAgaWYgKCFvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4geyBXVEZNb3ZlKCpvcHRpb25hbCkgfTsKICAgICB9CiB9OwpAQCAtNzE1LDcgKzcxNSw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIFR5cGVzPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXVEY6OlZh
cmlhbnQ8VHlwZXMuLi4+PiB7CiAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBpOwogICAgICAg
ICBkZWNvZGVyID4+IGk7CiAgICAgICAgIGlmICghaSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gVmFyaWFudENvZGVyPHNpemVvZi4uLihUeXBlcykgLSAxLCBUeXBlcy4uLj46OmRlY29kZShk
ZWNvZGVyLCAqaSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApp
bmRleCA5OWY4MWMzNDE5OGE4ZTI1MTE2MGUyM2RlMDI5OGMyZDA3NDUyYTI3Li43ZWJjYWVmM2Zj
MjM0MTVjNTQyOTFhM2ZhNjZmZjY5ZTA0ZTZlNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
RGVjb2Rlci5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxU
PiByZXN1bHQ7CiAgICAgICAgIERlY29kZXIgZGVjb2Rlcihzb3VyY2UsIG51bWJlck9mQnl0ZXMs
IENvbnN0cnVjdFdpdGhvdXRIZWFkZXIpOwogICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZGVjb2RlciA+PiByZXN1bHQ7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0
YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVu
Y2UuaAppbmRleCAxMTYxNTdkMTdiNmMwMGMzNDZmM2Q4ZDI4NTU1NWEyYzdiZWU5YTdiLi5lYzY4
ZGZhZGQ5YjdlNGQ3OGFkNzYzZmU2NTg2MTM1OTQwMDgyMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKQEAgLTcyLDE4ICs3MiwxOCBAQCBw
dWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0Zvcm1EYXRhOwogICAgICAgICBkZWNv
ZGVyID4+IGhhc0Zvcm1EYXRhOwogICAgICAgICBpZiAoIWhhc0Zvcm1EYXRhKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmICghaGFzRm9ybURhdGEudmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBG
b3JtRGF0YVJlZmVyZW5jZSB7IH07CiAKICAgICAgICAgYXV0byBmb3JtRGF0YSA9IFdlYkNvcmU6
OkZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghZm9ybURhdGEpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgZGVjb2RlciA+PiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlczsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKaW5kZXggOGMyMzE3NzMwNTFkNDRiMmRiOGJlMGNj
OTNmMDNiNWVmMDRiMjg3Mi4uMmRjZDk1YTdkYTY0ZmU1M2RlYmFlNTlhZWU3YzdlNmRlMTU4NTMy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmgKQEAgLTEzMyw3
ICsxMzMsNyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IHB1dEpTVmFsdWVGb3JEZWNvZGVBcmd1
bWVudEluQXJyYXkoSlNDOjpKU0dsb2JhbE9iamVjdCogZwogICAgIE9wdGlvbmFsPFQ+IHZhbHVl
OwogICAgIGRlY29kZXIgPj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
anNWYWx1ZSA9IGpzVmFsdWVGb3JEZWNvZGVkQXJndW1lbnRWYWx1ZShnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoKnZhbHVlKSk7CiAgICAgaWYgKGpzVmFsdWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IGJkNzI4MmJkNWYxMWY2YWVhZDU4
ODU3Zjc3MjZjMTU5NTE2OThkYzAuLjBlNWFkM2Q5NDgwZmVlOTMwNTRiZDFjZTQ1N2QwMjgzOTlj
NGZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAg
LTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsaXN0ZW5lcklEOwogICAg
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8RW5jb2Rlcj4mJiwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxFbmNvZGVyPiYmLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmID0gc3RkOjpudWxsb3B0KTsKIAogcHJpdmF0
ZToKICAgICB2aXJ0dWFsIENvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5
LmNwcAppbmRleCA1MDBmODM5ZGZhYWU5Mjk3ZjRkYzYzZGM2NjMwNTg3N2IyMmRmMmY4Li4wNjE2
MDFmNzIxMDI5MzQ2MGYyOTY0NDhmM2U0MTgwOGIzZThmZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBP
cHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBTaGFyZWRCdWZmZXJDb3B5OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoZGF0YS5zaXplKCkpCiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMGRiYTg3NWU3MWFhOGJh
Y2U5ZWQ5YjU4YTVjMTMwOTU2MzY3MDY0Ni4uZDgxZTU0NmNiNjJiZmI1Y2EwNmE3YTAwYWM2MDhj
NjljODRjZTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFt
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bUNsaWVudENvbm5lY3Rpb24uaApAQCAtMTU5LDcgKzE1OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4gU3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZFN5bmNTdHJlYW0oVCYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmIHJlcGx5LCBUaW1lb3V0IHRpbWVvdXQsIFNwYW4mIHNwYW4pCiB7CiAgICAg
Ly8gSW4gdGhpcyBmdW5jdGlvbiwgU2VuZFN5bmNSZXN1bHQgeyB9IG1lYW5zIGVycm9yIGhhcHBl
bmVkIGFuZCBjYWxsZXIgc2hvdWxkIHN0b3AgcHJvY2Vzc2luZy4KLSAgICAvLyBXVEY6Om51bGxv
cHQgbWVhbnMgd2UgY291bGRuJ3Qgc2VuZCB0aHJvdWdoIHRoZSBzdHJlYW0sIHNvIHRyeSBzZW5k
aW5nIG91dCBvZiBzdHJlYW0uCisgICAgLy8gc3RkOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0
IHNlbmQgdGhyb3VnaCB0aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgog
ICAgIGF1dG8gc3luY1JlcXVlc3RJRCA9IG1fY29ubmVjdGlvbi5tYWtlU3luY1JlcXVlc3RJRCgp
OwogICAgIGlmICghbV9jb25uZWN0aW9uLnB1c2hQZW5kaW5nU3luY1JlcXVlc3RJRChzeW5jUmVx
dWVzdElEKSkKICAgICAgICAgcmV0dXJuIFNlbmRTeW5jUmVzdWx0IHsgfTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCBPcHRpb25hbDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdD4g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5U2VuZAogICAgIGF1dG8gcmVzdWx0ID0gWyZdKCkg
LT4gT3B0aW9uYWw8U2VuZFN5bmNSZXN1bHQ+IHsKICAgICAgICAgU3RyZWFtQ29ubmVjdGlvbkVu
Y29kZXIgbWVzc2FnZUVuY29kZXIgeyBUOjpuYW1lKCksIHNwYW4uZGF0YSwgc3Bhbi5zaXplIH07
CiAgICAgICAgIGlmICghKG1lc3NhZ2VFbmNvZGVyIDw8IHN5bmNSZXF1ZXN0SUQgPDwgbWVzc2Fn
ZS5hcmd1bWVudHMoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byB3YWtldXBSZXN1bHQgPSBy
ZWxlYXNlKG1lc3NhZ2VFbmNvZGVyLnNpemUoKSk7CiAKICAgICAgICAgaWYgKHdha2V1cFJlc3Vs
dCA9PSBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpXYWtlVXBTZXJ2ZXI6OlllcykKQEAgLTI1MCw3
ICsyNTAsNyBAQCBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bhbj4g
U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZQogICAgICAgICAvLyBJbiB0aGUgY2Fz
ZSB3aGVyZSBjbGllbnRPZmZzZXQgPCBjbGllbnRMaW1pdCB3ZSBjYW4gYXJyaXZlIHRvIGEgc2l0
dWF0aW9uIHdoZXJlCiAgICAgICAgIC8vIDAgPCByZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdl
U2l6ZS4KICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBpbmxpbmUgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6U3Bh
bj4gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6dHJ5QWNxdWlyZUFsbChUaW1lb3V0IHRpbWVvdXQp
CkBAIC0yNzMsNyArMjczLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNsaWVudENvbm5lY3Rp
b246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUKIAogICAgICAgICBt
X2J1ZmZlci5jbGllbnRXYWl0U2VtYXBob3JlKCkud2FpdEZvcih0aW1lb3V0KTsKICAgICAgICAg
aWYgKHRpbWVvdXQuZGlkVGltZU91dCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIC8vIEluIGNh
c2UgdGhlIHRyYW5zYWN0aW9uIHdhcyBjYW5jZWxsZWQsIHVuZG8gdGhlIHRyYW5zYWN0aW9uIG1h
cmtlci4KICAgICBzaGFyZWRDbGllbnRMaW1pdCgpLnN0b3JlKHN0YXRpY19jYXN0PENsaWVudExp
bWl0PigwKSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCmluZGV4IGMyMWJk
YzY4ZjhmZDc1YWZjZWE4OWUxZDZiMDY5ZDVjNzhmNGFhMGQuLjAyMTAyZjgyMjZkOTM3NGE2ZDY4
YWIwNzIzZTllZWI5OTMxN2I3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25CdWZmZXIuY3BwCkBAIC04MiwxOSArODIsMTkgQEAgT3B0
aW9uYWw8U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcj4gU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlcjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIKICAgICBPcHRpb25hbDxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlPiBpcGNIYW5kbGU7CiAgICAgZGVjb2RlciA+PiBpcGNIYW5kbGU7CiAgICAgaWYg
KCFpcGNIYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8U2VtYXBob3JlPiBzZW1hcGhvcmU7CiAgICAg
ZGVjb2RlciA+PiBzZW1hcGhvcmU7CiAgICAgaWYgKCFzZW1hcGhvcmUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2l6ZV90
IGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihpcGNIYW5kbGUtPmRhdGFTaXplKTsKICAg
ICBpZiAoZGF0YVNpemUgPCBoZWFkZXJTaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGRhdGFTaXplID4gaGVh
ZGVyU2l6ZSgpICsgbWF4aW11bVNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdl
YktpdDo6U2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLT5oYW5kbGUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkV3JpdGUpOwogICAgIGlmIChzaGFyZWRNZW1vcnktPnNp
emUoKSA8IGRhdGFTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBTdHJlYW1Db25uZWN0aW9uQnVmZmVyIHsg
c2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIGRhdGFTaXplLCAgV1RGTW92ZSgqc2VtYXBo
b3JlKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVh
bVNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDA3NTQ5NmNiMTQyOTc5MjlmZmIzNmI4NGIyZDE5
ZGY1ZGI4M2ZiZDEuLjhkM2ZmYjQ3YTIwZWQ5ZmVjMjI0NmYxYTU2NmZmNGMyYjQwMGZiNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE9wdGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rp
b25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6dHJ5QWNxdWlyCiB7CiAg
ICAgU2VydmVyTGltaXQgc2VydmVyTGltaXQgPSBzaGFyZWRTZXJ2ZXJMaW1pdCgpLmxvYWQoc3Rk
OjptZW1vcnlfb3JkZXJfYWNxdWlyZSk7CiAgICAgaWYgKHNlcnZlckxpbWl0ID09IFNlcnZlckxp
bWl0OjpzZXJ2ZXJJc1NsZWVwaW5nVGFnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZXN1bHQgPSBhbGlnbmVk
U3BhbihtX3NlcnZlck9mZnNldCwgY2xhbXBlZExpbWl0KHNlcnZlckxpbWl0KSk7CiAgICAgaWYg
KHJlc3VsdC5zaXplIDwgbWluaW11bU1lc3NhZ2VTaXplKSB7CkBAIC03Miw3ICs3Miw3IEBAIE9w
dGlvbmFsPFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXNlOjpTcGFuPiBTdHJlYW1TZXJ2ZXJDb25u
ZWN0aW9uQmFzZTo6dHJ5QWNxdWlyCiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5zaXplIDwgbWlu
aW11bU1lc3NhZ2VTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQppbmRleCAy
ZDliNzFlYWU0OTZmNjBjYjlkZTI3Mzg5YTY0ZWE1YWZiOTM1N2JjLi41ZWM4ZmYzM2NhZGY5ZDJm
NGU2MWY2ZmJhY2UyZDdkYmYxOGE1ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCkBAIC01OTgsNyArNTk4LDcgQEAgSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIENvbm5lY3Rpb246OmlkZW50aWZpZXIoKSBjb25zdAog
T3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gQ29ubmVjdGlvbjo6Z2V0QXVkaXRUb2tlbigpCiB7CiAg
ICAgaWYgKCFtX3hwY0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgYXVkaXRfdG9rZW5fdCBhdWRp
dFRva2VuOwogICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihtX3hwY0Nvbm5lY3Rp
b24uZ2V0KCksICZhdWRpdFRva2VuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvZGFyd2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAKaW5kZXggYTMzZTkzMmVjYjlh
OGVkMmY4NjViMWZkYjYyMTMxYjQ4NTNkYWM2MC4uYmMwOGY2MDFhNzE1MDA3ZTVhNzA3NzBhYjg1
Mzk4NmQxNTllOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvZGFy
d2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvZGFyd2luL0lQQ1NlbWFwaG9yZURhcndpbi5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRp
b25hbDxTZW1hcGhvcmU+IFNlbWFwaG9yZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgTWFjaFNlbmRSaWdodCBzZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5k
UmlnaHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBPcHRpb25hbDxTZW1hcGhvcmU+IHsgc3RkOjppbl9wbGFj
ZSwgV1RGTW92ZShzZW5kUmlnaHQpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvd2luL0lQQ1NlbWFwaG9yZVdpbi5jcHAKaW5kZXggN2FiYTVjNDg1NzY2OGFmN2Yy
ZDUwOGFmNjIzN2RhNGFhNzY4OWI1ZC4uYzllNjU2ZDI2MTY0NTJmNDY1ZWM0OWMwYWVjMjQxOGJh
MzU3ZTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1Nl
bWFwaG9yZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvd2luL0lQQ1Nl
bWFwaG9yZVdpbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1h
cGhvcmU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGF1dG8gaGFuZGxlID0gV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwogICAgIGlm
ICghaGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBTZW1hcGhvcmUoKmhhbmRsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaAppbmRleCBlOGI2NGNlMmY1NDAy
ZmE1YTBmMTY5NzY5NjgxMzM5NmUzZTY3MzNiLi5jOTk4Zjk3OTYxYjE4NDRhNmIwZmFiZmZkZTlj
YzIwNGY0Njc2MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRp
YWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlv
bi5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIGluaXRp
YWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBXVEY6Om51bGxv
cHQpOwordm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJp
bmc+ID0gc3RkOjpudWxsb3B0KTsKIFN0cmluZyBsb2dMZXZlbFN0cmluZygpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
U2hhcmVkTWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFy
ZWRNZW1vcnlDb2NvYS5jcHAKaW5kZXggMTVhNmU3ZGIwMDNhNmE0ZDI1MWNmYWJkZGJmNmM5Nzk3
OTZjZWU3ZC4uOGRmNjY4ZDBlMzAzNWYwMmY0OWYyYmU2YTFlODczNzBhNzY0ZTlkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxzaXplX3Q+IHNhZmVSb3Vu
ZFBhZ2Uoc2l6ZV90IHNpemUpCiB7CiAgICAgc2l6ZV90IHJvdW5kZWRTaXplOwogICAgIGlmIChf
X2J1aWx0aW5fYWRkX292ZXJmbG93KHNpemUsIHN0YXRpY19jYXN0PHNpemVfdD4oUEFHRV9NQVNL
KSwgJnJvdW5kZWRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByb3VuZGVkU2l6ZSAmPSB+c3RhdGljX2Nhc3Q8c2l6
ZV90PihQQUdFX01BU0spOwogICAgIHJldHVybiByb3VuZGVkU2l6ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCBhZmY3YjBk
MThkYThlMzJmMTZlMGI0MzRjOTgwNWNhYWViYmRkZjgzLi45OThhMmE3Njc5MzA1YTQzNWZhMzVj
YzFhZWViNzA4ZjM0Njc1NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4
L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gU2hhcmVkTWVtb3J5OjptYXAoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rpb24g
cHJvdGVjdGkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBpbnN0YW5jZSA9IHdyYXBNYXAoZGF0YSwgaGFuZGxlLm1fYXR0YWNobWVudC5zaXplKCks
IC0xKTsKLSAgICBpbnN0YW5jZS0+bV9maWxlRGVzY3JpcHRvciA9IFdURjo6bnVsbG9wdDsKKyAg
ICBpbnN0YW5jZS0+bV9maWxlRGVzY3JpcHRvciA9IHN0ZDo6bnVsbG9wdDsKICAgICBpbnN0YW5j
ZS0+bV9pc1dyYXBwaW5nTWFwID0gZmFsc2U7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKaW5kZXggMjRj
ZmRkN2UwMmRkNDdlMzU0MDRmMWRiNGNiM2JkNmZjZjc2YWFhZC4uMTViOWU0MjU2NDI1ZDc2OGRh
NGFiOTU0OTgzYWZiNmExNjQzYTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dp
bi9TaGFyZWRNZW1vcnlXaW4uY3BwCkBAIC0xNDIsMTUgKzE0MiwxNSBAQCBPcHRpb25hbDxIQU5E
TEU+IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIHVpbnQ2NF90IHNvdXJjZUhhbmRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNvdXJjZUhhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50MzJfdCBzb3VyY2VQSUQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzb3VyY2VQSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSEFORExFIGR1cGxpY2F0ZWRI
YW5kbGU7CiAgICAgaWYgKCFnZXREdXBsaWNhdGVkSGFuZGxlKHJlaW50ZXJwcmV0X2Nhc3Q8SEFO
RExFPihzb3VyY2VIYW5kbGUpLCBzb3VyY2VQSUQsIGR1cGxpY2F0ZWRIYW5kbGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIGR1cGxpY2F0ZWRIYW5kbGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCBjZGZhN2JmNDFlZGI3YjM2OWJmMThjNTc4YWIyZDZiODdiNjVl
Yzc4Li44MzBkYWVkMWVkZjA0NjY0MWU5MmMzYzkyZGIxNDZiOWZhNThmYTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTExNTQsNyArMTE1NCw3IEBAIGRl
ZiBnZW5lcmF0ZV9qc192YWx1ZV9jb252ZXJzaW9uX2Z1bmN0aW9uKHJlc3VsdCwgcmVjZWl2ZXJz
LCBmdW5jdGlvbl9uYW1lLCBhcmd1CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIGRlZmF1bHQ6XG4n
KQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICAgICAgYnJlYWs7XG4nKQogICAgIHJlc3VsdC5hcHBl
bmQoJyAgICB9XG4nKQotICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gV1RGOjpudWxsb3B0
O1xuJykKKyAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDtcbicpCiAg
ICAgcmVzdWx0LmFwcGVuZCgnfVxuJykKIAogCkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBkZWYgZ2Vu
ZXJhdGVfanNfYXJndW1lbnRfZGVzY3JpcHRpb25zKHJlY2VpdmVycywgZnVuY3Rpb25fbmFtZSwg
YXJndW1lbnRzX2Zyb21fbQogICAgIHJlc3VsdC5hcHBlbmQoJyAgICBkZWZhdWx0OlxuJykKICAg
ICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJyZWFrO1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgfVxuJykKLSAgICByZXN1bHQuYXBwZW5kKCcgICAgcmV0dXJuIFdURjo6bnVsbG9wdDtcbicp
CisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7XG4nKQogICAgIHJl
c3VsdC5hcHBlbmQoJ31cbicpCiAgICAgcmV0dXJuIHJlc3VsdAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVu
dERlc2NyaXB0aW9ucy5jcHAKaW5kZXggY2FmNzY3OTcyODc5ZWE5NTZmZjlkYWFjZmJiYWI0NzEw
ZGNiYmFiMi4uMDg2YWQ5OWZhZjUzMTExMjRkNjBlYzI4NzE5NTc2NWFjMmFjZGRmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNzYWdlQXJndW1lbnRE
ZXNjcmlwdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvdGVzdHMv
TWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIE9wdGlv
bmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvckFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIE1lCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBqc1ZhbHVlRm9yUmVwbHlBcmd1bWVudHMoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZXNzYWdlTmFtZSBuYW1lLCBEZWNvZGVyJiBkZWNv
ZGVyKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZv
clJlcGx5QXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPEFyZ3VtZW50RGVz
Y3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkK
QEAgLTU4OSw3ICs1ODksNyBAQCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+
IG1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucyhNZXNzYWdlTmFtZSBuYQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0
aW9uPj4gbWVzc2FnZVJlcGx5QXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2FnZU5hbWUgbmFtZSkK
QEAgLTYzOSw3ICs2MzksNyBAQCBPcHRpb25hbDxWZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+
IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRpb25zKE1lc3NhZ2VOYQogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCA4
NDdiZDViZTgxNjRiOWFlMzZhYzZmNDAxMTZkOGQ4ZjUwMGExZjIwLi40YTE3YzI3YzBhYzI5YTk4
MjdlMmQ3NzEyNDdjYmQxYzcxOGRjYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcApAQCAtNzksNSArNzksNSBAQCBXS1N0cmlu
Z1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weUhvc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0
eU9yaWdpbikKIAogdW5zaWduZWQgc2hvcnQgV0tTZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1
cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b0lt
cGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQudmFsdWVPcigwKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigp
LnBvcnQudmFsdWVfb3IoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJlcy5tbQppbmRleCAzMzk4
MTAwMmMxMDJjNWUwYmI4MThjNWI0N2Y1YjVhYmI0MGUzNGM4Li4yZDQwOGQ4NTEzMGJhYzM3MjY1
ODY0YmI2YmM0YjE5NGNlMTQ5YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9BcHBsZVBheVBheW1lbnRTZXR1cEZlYXR1cmVzLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVwRmVhdHVyZXMubW0KQEAgLTc2
LDcgKzc2LDcgQEAgT3B0aW9uYWw8UGF5bWVudFNldHVwRmVhdHVyZXM+IFBheW1lbnRTZXR1cEZl
YXR1cmVzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKIAogICAgIGF1dG8gcGxhdGZvcm1G
ZWF0dXJlcyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk8UEtQYXltZW50U2V0dXBGZWF0dXJlICo+Pihk
ZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFwbGF0Zm9ybUZl
YXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFBheW1lbnRTZXR1cEZlYXR1cmVzIHsgV1RGTW92ZSgq
cGxhdGZvcm1GZWF0dXJlcykgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCmluZGV4IDA1ODc4OTY4
NDVkN2I3Y2YxMzUwNmM5OWQ2MWJlOWI5ZTQzMWU2ODguLjUwY2RkYTUxMWJiOGQwMjVhOGMzZjFi
YzBjMjUzMTAxY2FmMzllNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQpAQCAtOTUsNyArOTUsNyBA
QCBPcHRpb25hbDxQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1
cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZAogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBD
OjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25maWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xh
c3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDNiMjRmZGE5MWJkYjRmOTE4M2Q2ZGJk
OTUyZTIyYWQ0YTMyYjc0OGIuLjkwNWRlYzM1Y2RlZTc4NDA1MWQ4YjcxZjViZDYxMDkyMzc5NWJi
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRSZWFjaEZpbmFsU3RhdGUoV2ViQ29yZTo6UGF5
bWVudFNlc3Npb25FcnJvcgogICAgIHBsYXRmb3JtSGlkZVBheW1lbnRVSSgpOwogCiAgICAgbV9h
dXRob3JpemF0aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKLSAgICBtX2Rlc3RpbmF0aW9uSUQgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9kZXN0aW5hdGlvbklEID0gc3RkOjpudWxsb3B0OwogICAgIG1f
bWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPSBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZTsK
ICAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tCmluZGV4IDMxYzgwNTk5ZTk3MDAyYzQwMDMxOWY0NWRlNjkwNGMxMzQ0MDk5NzMuLjhkN2I1
YzMzMzcxMGE2YzJlMDZjZjQyZDcyMzVmZDEyMDUzNmJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5bWVudFNldHVwQ29u
ZmlndXJhdGlvbi5tbQpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uPiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZAog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXltZW50U2V0dXBDb25m
aWd1cmF0aW9uPihkZWNvZGVyLCBhbGxvd2VkQ2xhc3Nlcy5nZXQoKS5nZXQoKSk7CiAgICAgaWYg
KCFjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFBheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24geyBXVEZNb3ZlKCpjb25maWd1cmF0aW9uKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJ
RC5oCmluZGV4IDA2MzA1YzdmY2QwYTU4MTQyZDczNjg5YjZiMzM5MzYxZTViNTg4OGIuLmU4ZmNm
ZGNhY2E3M2EwMjY1NDM2Y2UzN2JiNTQ5MzFjMzE2YzdjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxs
YmFja0lELmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAg
ICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNW
YWxpZENhbGxiYWNrSUQoKmlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIGZyb21JbnRlZ2Vy
KCppZGVudGlmaWVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLmgKaW5kZXggZTZiMjM1Yjc0Zjk0MzkyZjVlNjI1ZTYyN2MzNmQ4
MzRlZjc5MWFmMC4uNzExZGZiZTYwMjViOWI0NzBiODk1OWY4YjJmNWYzZDg1NmIyOTRjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaApA
QCAtNzYsNyArNzYsNyBAQCBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMpCiB7CiAgICAgYXV0byByZXN1
bHQgPSBkZWNvZGVPYmplY3QoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIEFTU0VSVCghKnJlc3VsdCB8fCBpc09iamVjdENsYXNzQWxsb3dlZCgoKnJl
c3VsdCkuZ2V0KCksIGFsbG93ZWRDbGFzc2VzKSk7CiAgICAgcmV0dXJuIHsgKnJlc3VsdCB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KaW5kZXggZjVkZTRmMmViOTNiZTgzNDc0NjE0ZjExNGYyODBiNGE3NTI1MTA0ZS4uYzU0YjUz
YjZmYjYxNDNiYmVkMGI3MDAxYjE3ZDdhMDkyNDhhMDhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0yNTksMTMgKzI1OSwx
MyBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hbChE
ZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYQogewogICAgIHVpbnQ2NF90IHNpemU7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYXJyYXkgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHVpbnQ2NF90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBkZWNvZGVPYmplY3QoZGVj
b2RlciwgYWxsb3dlZENsYXNzZXMpOwogICAgICAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS52YWx1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6dmFsdWUudmFsdWUoKS5n
ZXQoKV07CiAgICAgfQogCkBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25h
bDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHsgbnNDb2xvcihjb2xvcikgfTsKIH0KICNlbHNlCkBAIC0yOTcsNyArMjk3LDcg
QEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVDb2xvckludGVy
bmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQ29sb3IgY29sb3I7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUyhbW1VJQ29sb3IgYWxs
b2NdIGluaXRXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV0pIH07CiB9CiAjZW5kaWYK
QEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+
IGRlY29kZURhdGFJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxD
RkRhdGFSZWY+IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4geyBhZG9wdE5TKChOU0RhdGEgKilkYXRhLmxlYWtSZWYoKSkgfTsKIH0KIApAQCAtMzI4
LDcgKzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2Rl
RGF0ZUludGVybmFsKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGRGF0ZVJl
Zj4gZGF0ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
IGFkb3B0TlMoKE5TRGF0ZSAqKWRhdGUubGVha1JlZigpKSB9OwogfQogCkBAIC0zNzAsMTcgKzM3
MCwxNyBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlRGljdGlvbmFyeUlu
dGVybmFsKERlY29kZXImIGRlY29kZXIsIE5TQXJyYQogewogICAgIHVpbnQ2NF90IHNpemU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBkaWN0aW9uYXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV0pOwogICAgIGZvciAodWludDY0X3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgYXV0byBrZXkgPSBkZWNvZGVPYmplY3QoZGVjb2Rl
ciwgYWxsb3dlZENsYXNzZXMpOwogICAgICAgICBpZiAoIWtleSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGF1dG8gdmFsdWUgPSBkZWNvZGVPYmplY3QoZGVjb2RlciwgYWxsb3dlZENsYXNzZXMpOwog
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0
T2JqZWN0OnZhbHVlLnZhbHVlKCkuZ2V0KCkgZm9yS2V5OmtleS52YWx1ZSgpLmdldCgpXTsKICAg
ICB9CkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRl
Y29kZUZvbnRJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxOU0Rp
Y3Rpb25hcnk+IGZvbnRBdHRyaWJ1dGVzOwogICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGZvbnRB
dHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogCkBAIC00
MjEsNyArNDIxLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNv
ZGVOdW1iZXJJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJldGFpblB0cjxDRk51
bWJlclJlZj4gbnVtYmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobnVtYmVyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4geyBhZG9wdE5TKChOU051bWJlciAqKW51bWJlci5sZWFrUmVmKCkpIH07CiB9CiAK
QEAgLTQ0NSwxMSArNDQ1LDExIEBAIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNv
ZGVTZWN1cmVDb2RpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FyCiB7CiAgICAgQVNT
RVJUKGFsbG93ZWRDbGFzc2VzICYmIGFsbG93ZWRDbGFzc2VzLmNvdW50KTsKICAgICBpZiAoIWFs
bG93ZWRDbGFzc2VzIHx8ICFhbGxvd2VkQ2xhc3Nlcy5jb3VudCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10g
aW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19icmlkZ2UgTlNEYXRhICopZGF0YS5nZXQoKSBlcnJv
cjpudWxscHRyXSk7CiAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kg
PSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOwpAQCAtNDY2LDcgKzQ2Niw3
IEBAIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVTZWN1cmVDb2RpbmdJbnRl
cm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FyCiAgICAgICAgIHJldHVybiB7IHJlc3VsdCB9Owog
ICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIGRlY29kZSBvYmplY3Qgb2YgY2xhc3NlcyAlQDogJUAiLCBhbGxvd2VkQ2xh
c3NlcywgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9IEBmaW5hbGx5IHsKICAgICAgICAgW3VuYXJjaGl2
ZXIgZmluaXNoRGVjb2RpbmddOwogICAgICAgICB1bmFyY2hpdmVyLmdldCgpLmRlbGVnYXRlID0g
bmlsOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRy
PGlkPj4gZGVjb2RlU3RyaW5nSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0cmlu
ZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUygoTlNTdHJpbmcgKilzdHJpbmcubGVha1JlZigp
KSB9OwogfQogCkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxSZXRh
aW5QdHI8aWQ+PiBkZWNvZGVVUkxJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gVVJMOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoVVJMKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4geyBhZG9wdE5TKChOU1VSTCAqKVVSTC5sZWFrUmVmKCkpIH07CiB9CiAKQEAg
LTU1NiwxMyArNTU2LDEzIEBAIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChE
ZWNvZGVyJiBkZWNvZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsCiB7CiAgICAgYm9vbCBp
c051bGw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc051bGwpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpc051
bGwpCiAgICAgICAgIHJldHVybiB7IG51bGxwdHIgfTsKIAogICAgIE5TVHlwZSB0eXBlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIE5TVHlwZTo6QXJyYXk6CkBAIC01OTAsNyArNTkwLDcgQEAgT3B0aW9uYWw8UmV0YWlu
UHRyPGlkPj4gZGVjb2RlT2JqZWN0KERlY29kZXImIGRlY29kZXIsIE5TQXJyYXk8Q2xhc3M+ICph
bGxvd2VkQ2wKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVj
dGlvblJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25S
ZXN1bHQubW0KaW5kZXggYTdhMmE5NGJlNDQzNmUzMzI0NGRiZTA1OGZiYmE2YTJlZGI2MjI2YS4u
NGU2MDhiOGFhZjU2ODliMWMxZjAyZGQzZDc2YTZkYTYxOTRkMmYwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCkBAIC00Nyw3ICs0
Nyw3IEBAIE9wdGlvbmFsPERhdGFEZXRlY3Rpb25SZXN1bHQ+IERhdGFEZXRlY3Rpb25SZXN1bHQ6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byByZXN1bHRzID0gSVBD
OjpkZWNvZGU8TlNBcnJheT4oZGVjb2RlciwgQFsgW05TQXJyYXkgY2xhc3NdLCBnZXRERFNjYW5u
ZXJSZXN1bHRDbGFzcygpIF0pOwogICAgIGlmICghcmVzdWx0cykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERhdGFEZXRl
Y3Rpb25SZXN1bHQgcmVzdWx0OwogICAgIHJlc3VsdC5yZXN1bHRzID0gV1RGTW92ZSgqcmVzdWx0
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0V2ViQnJv
d3NlckNoZWNrcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93
c2VyQ2hlY2tzLm1tCmluZGV4IGFiYzhkNzEzOTBjZWMyOTAyOWUzZjBlZTY2NDRiNDg4MTU0ODVm
NTUuLmYzMWJjYTFhMDJjMTNhZGY1OTUyN2NjN2JmZGZjY2FhM2Y2ZDJhOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RlZmF1bHRXZWJCcm93c2VyQ2hlY2tzLm1t
CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgaXNSdW5uaW5nVGVzdChjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlEKQogT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gZ2V0QXBw
Qm91bmREb21haW5zVGVzdGluZyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlEKQogewogICAgIGlmIChi
dW5kbGVJRC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0YXRpYyBhdXRvIGFwcEJvdW5kRG9tYWluTGlz
dCA9IG1ha2VOZXZlckRlc3Ryb3llZChNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiB7CiAgICAg
ICAgIHsiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zLCBWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IHsgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiMTI3LjAuMC4xIikgfX0sCkBA
IC03MCw3ICs3MCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4+IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyCiAgICAgaWYgKGFwcEJvdW5k
RG9tYWluSXRlciAhPSBhcHBCb3VuZERvbWFpbkxpc3QtPmVuZCgpKQogICAgICAgICByZXR1cm4g
YXBwQm91bmREb21haW5JdGVyLT52YWx1ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKaW5kZXggYTk4
MjdkNzk1M2VlOTI3NzQyMzMwZmNiOTA2NTQzM2E3ZWQ0YWY2YS4uOGYwYjc2OTZkYzRhZmUyMDZj
NzFjZTNlM2NkOWEyZWMxNzRiMTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvSW5zZXJ0VGV4dE9wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0luc2VydFRleHRPcHRpb25zLmNwcApAQCAtNDEsMTUgKzQxLDE1IEBAIE9wdGlvbmFsPFdl
YktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpJbnNlcnRUZXh0
T3B0aW9ucz46OmRlCiB7CiAgICAgV2ViS2l0OjpJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb25zLnN1cHByZXNzU2VsZWN0aW9uVXBkYXRlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuc2hvdWxkU2ltdWxhdGVLZXli
b2FyZElucHV0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMuZWRpdGluZ1Jh
bmdlSXNSZWxhdGl2ZVRvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4
IDFlZThlODYyODQ0N2E3NzM4ZGM2OGUzNTdjNjhjZjUwMjQzNTE5ZDAuLjExMGMzZjFmZDJiMGM4
ZmEzNTRhNWE3MzMzNGNkNWFiOWMwMjI3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxT
YW5kYm94RXh0ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgsIFNhbmRib3hFeHRl
bnNpb246OlR5cGUgdHlwZSwgT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiA9IFdU
Rjo6bnVsbG9wdCwgT3B0aW9uU2V0PFNhbmRib3hFeHRlbnNpb246OkZsYWdzPiBmbGFncyA9IFNh
bmRib3hFeHRlbnNpb246OkZsYWdzOjpEZWZhdWx0KQorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4g
PSBzdGQ6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5zaW9uOjpGbGFncz4gZmxhZ3Mg
PSBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKICAgICB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1wbCB7IG5ldyBTYW5kYm94RXh0ZW5z
aW9uSW1wbChwYXRoLCB0eXBlLCBhdWRpdFRva2VuLCBmbGFncykgfTsKICAgICAgICAgaWYgKCFp
bXBsLT5tX3Rva2VuKQpAQCAtMTYyLDcgKzE2Miw3IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxIYW5kbGU+
CiB7CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHt7IH19OwpAQCAtMjI0LDE0ICsyMjQsMTQgQEAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvZGUoSVAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsKICAgICBk
ZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkgaGFuZGxlczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICpzaXpl
OyArK2kpIHsKICAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5k
bGU7CiAgICAgICAgIGRlY29kZXIgPj4gaGFuZGxlOwogICAgICAgICBpZiAoIWhhbmRsZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBoYW5kbGVzLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKICAgICB9
CiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlcyk7CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgsIFR5cGUKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pOwogCi0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25J
bXBsOjpjcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCB0eXBlLCBXVEY6Om51bGxvcHQsIFNhbmRi
b3hFeHRlbnNpb246OkZsYWdzOjpEb05vdENhbm9uaWNhbGl6ZSk7CisgICAgaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUocGF0aC51dGY4KCku
ZGF0YSgpLCB0eXBlLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpEb05v
dENhbm9uaWNhbGl6ZSk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZv
ciAnJXMnIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbQppbmRleCAyYjY2NWVlZDE1OTY3Zjk3MGZlNmY0OWE4Yzc5ZWU4NzkyZDBlODJm
Li4zNjQzNjg4NmVlN2FhZTdkYmNmZDlmYjE4NjVlYzkwN2ZjMDFmN2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQpAQCAtODAsMTAgKzgwLDEwIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJp
bmc+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz46OmRlCiB7CiAgICAg
UmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZzsKICAgICBpZiAo
IUlQQzo6ZGVjb2RlKGRlY29kZXIsIGF0dHJpYnV0ZWRTdHJpbmcpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IGRvY3VtZW50QXR0cmlidXRlczsKICAgICBpZiAoIUlQQzo6ZGVjb2Rl
KGRlY29kZXIsIGRvY3VtZW50QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KGF0dHJpYnV0ZWRTdHJpbmcpLCBXVEZNb3ZlKGRvY3VtZW50QXR0cmlidXRlcykgfSB9OwogfQog
CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEluc3RhbGxtZW50
Q29uZmlndXJhdGlvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW4KIHsKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBJUEM6OmRlY29kZTxQS1BheW1lbnRJbnN0YWxsbWVudENvbmZpZ3Vy
YXRpb24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
Q2xhc3MoKSk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgV1RG
TW92ZSgqY29uZmlndXJhdGlvbikgfTsKIH0KQEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnQ+OjpkZWNvZGUo
RGVjb2RlciYgZGVjbwogewogICAgIGF1dG8gcGF5bWVudCA9IElQQzo6ZGVjb2RlPFBLUGF5bWVu
dD4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRDbGFzcygpKTsKICAgICBpZiAoIXBheW1lbnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gUGF5bWVudCB7IFdURk1vdmUoKnBheW1lbnQpIH07CiB9CkBAIC0x
MzIsMTIgKzEzMiwxMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50QXV0aAogICAgIE9wdGlvbmFsPFBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzPiBzdGF0dXM7CiAgICAgZGVjb2RlciA+PiBzdGF0dXM7
CiAgICAgaWYgKCFzdGF0dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVmUHRyPEFwcGxl
UGF5RXJyb3I+Pj4gZXJyb3JzOwogICAgIGRlY29kZXIgPj4gZXJyb3JzOwogICAgIGlmICghZXJy
b3JzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnN0YXR1cyksIFdURk1vdmUoKmVycm9y
cykgfX07CiB9CkBAIC0xNTEsNyArMTUxLDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudENv
bnRhY3Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudENvbnRhY3Q+OjpkZWNvZGUKIHsK
ICAgICBhdXRvIGNvbnRhY3QgPSBJUEM6OmRlY29kZTxQS0NvbnRhY3Q+KGRlY29kZXIsIFBBTDo6
Z2V0UEtDb250YWN0Q2xhc3MoKSk7CiAgICAgaWYgKCFjb250YWN0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0IHsgV1RGTW92ZSgqY29udGFjdCkgfTsKIH0KQEAgLTE2
NSw3ICsxNjUsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uPiBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudAogewogICAgIGF1dG8gcGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbj4o
ZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRNZXJjaGFudFNlc3Npb25DbGFzcygpKTsKICAgICBp
ZiAoIXBheW1lbnRNZXJjaGFudFNlc3Npb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbiB7IFdURk1vdmUoKnBheW1lbnRNZXJjaGFudFNlc3Npb24pIH07
CiB9CkBAIC0xNzksNyArMTc5LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kPjo6ZGVjb2RlKEQKIHsKICAgICBh
dXRvIHBheW1lbnRNZXRob2QgPSBJUEM6OmRlY29kZTxQS1BheW1lbnRNZXRob2Q+KGRlY29kZXIs
IFBBTDo6Z2V0UEtQYXltZW50TWV0aG9kQ2xhc3MoKSk7CiAgICAgaWYgKCFwYXltZW50TWV0aG9k
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIFBheW1lbnRNZXRob2QgeyBXVEZNb3ZlKCpwYXltZW50TWV0aG9k
KSB9OwogfQpAQCAtMzY0LDcgKzM2NCw3IEBAIE9wdGlvbmFsPFJlZlB0cjxBcHBsZVBheUVycm9y
Pj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+OjpkZWNvZGUoRGVjCiAgICAg
T3B0aW9uYWw8Ym9vbD4gaXNWYWxpZDsKICAgICBkZWNvZGVyID4+IGlzVmFsaWQ7CiAgICAgaWYg
KCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgUmVmUHRyPEFwcGxlUGF5RXJyb3I+IGVycm9yOwogICAgIGlm
ICghKmlzVmFsaWQpCkBAIC0zNzIsNyArMzcyLDcgQEAgT3B0aW9uYWw8UmVmUHRyPEFwcGxlUGF5
RXJyb3I+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxBcHBsZVBheUVycm9yPj46OmRlY29kZShEZWMK
IAogICAgIGVycm9yID0gQXBwbGVQYXlFcnJvcjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICgh
ZXJyb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC0zODUsNyArMzg1LDcgQEAgT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudFNlc3Npb25FcnJvcj4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50U2Vzc2lvbkVycm8KIHsKICAgICBhdXRvIHBsYXRmb3JtRXJyb3IgPSBJUEM6OmRl
Y29kZTxOU0Vycm9yPihkZWNvZGVyKTsKICAgICBpZiAoIXBsYXRmb3JtRXJyb3IpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4geyBXVEZNb3ZlKCpwbGF0Zm9ybUVycm9yKSB9OwogfQpAQCAtNDE0LDcgKzQxNCw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGb250QXR0cmlidXRlcz46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcykKIHsK
ICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGF0dHJpYnV0ZXMuZm9udCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIGF0dHJpYnV0ZXM7CiB9CiAKQEAgLTQ3Miw2MCArNDcyLDYwIEBAIE9wdGlvbmFsPEZv
bnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1E
YXRhKERlY29kZXImCiAgICAgT3B0aW9uYWw8Rm9udE9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsK
ICAgICBkZWNvZGVyID4+IG9yaWVudGF0aW9uOwogICAgIGlmICghb3JpZW50YXRpb24uaGFzVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRXaWR0aFZhcmlhbnQ+IHdpZHRoVmFyaWFudDsK
ICAgICBkZWNvZGVyID4+IHdpZHRoVmFyaWFudDsKICAgICBpZiAoIXdpZHRoVmFyaWFudC5oYXNW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VGV4dFJlbmRlcmluZ01vZGU+IHRleHRSZW5kZXJp
bmdNb2RlOwogICAgIGRlY29kZXIgPj4gdGV4dFJlbmRlcmluZ01vZGU7CiAgICAgaWYgKCF0ZXh0
UmVuZGVyaW5nTW9kZS5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHNpemU7
CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZS5oYXNWYWx1ZSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gc3ludGhldGljQm9sZDsKICAgICBkZWNvZGVyID4+IHN5bnRoZXRp
Y0JvbGQ7CiAgICAgaWYgKCFzeW50aGV0aWNCb2xkLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxib29sPiBzeW50aGV0aWNPYmxpcXVlOwogICAgIGRlY29kZXIgPj4gc3ludGhldGljT2Js
aXF1ZTsKICAgICBpZiAoIXN5bnRoZXRpY09ibGlxdWUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBhdHRyaWJ1dGVzOwogICAgIGRlY29k
ZXIgPj4gYXR0cmlidXRlczsKICAgICBpZiAoIWF0dHJpYnV0ZXMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxib29sPiBpbmNsdWRlc0NyZWF0aW9uRGF0YTsKICAgICBkZWNvZGVyID4+IGluY2x1ZGVzQ3Jl
YXRpb25EYXRhOwogICAgIGlmICghaW5jbHVkZXNDcmVhdGlvbkRhdGEuaGFzVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChpbmNsdWRlc0NyZWF0aW9uRGF0YS52YWx1ZSgpKSB7CiAgICAgICAgIE9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4g
Zm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YS5oYXNWYWx1ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAg
ICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGlmICghaXRlbUluQ29s
bGVjdGlvbi5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBmb250Q3VzdG9t
UGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShmb250RmFjZURhdGEu
dmFsdWUoKSwgaXRlbUluQ29sbGVjdGlvbi52YWx1ZSgpKTsKICAgICAgICAgaWYgKCFmb250Q3Vz
dG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gYmFzZUZvbnREZXNjcmlw
dG9yID0gZm9udEN1c3RvbVBsYXRmb3JtRGF0YS0+Zm9udERlc2NyaXB0b3IuZ2V0KCk7CiAgICAg
ICAgIGlmICghYmFzZUZvbnREZXNjcmlwdG9yKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJp
YnV0ZXMoYmFzZUZvbnREZXNjcmlwdG9yLCBhdHRyaWJ1dGVzLT5nZXQoKSkpOwogICAgICAgICBh
dXRvIGN0Rm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnRE
ZXNjcmlwdG9yLmdldCgpLCBzaXplLnZhbHVlKCksIG51bGxwdHIpKTsKIApAQCAtNTM2LDE2ICs1
MzYsMTYgQEAgT3B0aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9u
dD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICBPcHRpb25hbDxTdHJpbmc+IHJl
ZmVyZW5jZVVSTDsKICAgICBkZWNvZGVyID4+IHJlZmVyZW5jZVVSTDsKICAgICBpZiAoIXJlZmVy
ZW5jZVVSTC5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBwb3N0U2NyaXB0
TmFtZTsKICAgICBkZWNvZGVyID4+IHBvc3RTY3JpcHROYW1lOwogICAgIGlmICghcG9zdFNjcmlw
dE5hbWUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVm
PiBmb250RGVzY3JpcHRvciA9IGZpbmRGb250RGVzY3JpcHRvcihyZWZlcmVuY2VVUkwudmFsdWUo
KSwgcG9zdFNjcmlwdE5hbWUudmFsdWUoKSk7CiAgICAgaWYgKCFmb250RGVzY3JpcHRvcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlX
aXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvci5nZXQoKSwgYXR0cmlidXRlcy0+Z2V0KCkpKTsK
ICAgICBhdXRvIGN0Rm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9y
KGZvbnREZXNjcmlwdG9yLmdldCgpLCBzaXplLnZhbHVlKCksIG51bGxwdHIpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCmluZGV4IGQ5NmVmMDA0MTE3Mzkx
OWVhOTViMmUxNDZlMzUzNzI2ZDU5NzdhYzcuLmI3NjczYmQyN2VmMDA5N2Q2MTA1MDMzOTdlZDky
MzBkNDU2MmVhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2
aWNlSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8u
bW0KQEAgLTQxLDE2ICs0MSwxNiBAQCBPcHRpb25hbDxYUkRldmljZUluZm8+IFhSRGV2aWNlSW5m
bzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBYUkRldmljZUluZm8gZGV2
aWNlRmVhdHVyZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5pZGVu
dGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuc3Vw
cG9ydHNPcmllbnRhdGlvblRyYWNraW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGV2aWNlRmVhdHVyZXMuc3VwcG9ydHNTdGVyZW9SZW5kZXJpbmcpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkZXZpY2VGZWF0dXJlcy5mZWF0dXJlcykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
ZGV2aWNlRmVhdHVyZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9YUkRldmljZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQ
cm94eS5tbQppbmRleCA0OTJkMDJjNzE1YTkzOTZhZTQyOGM1MzMwMWRkOTIyZmNlYWM1MzcwLi42
YmEwMmZhMDRkOWMxMGQyN2FiMjg0NDRkYzQxMTQxYzBlYmNmZTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBY
UkRldmljZVByb3h5OjpyZXF1ZXN0RnJhbWUoUGxhdGZvcm1YUjo6RGV2aWNlOjpSZXF1ZXN0RnJh
bWVDYWxsYmFjayYmIGNhbGwKIAogT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IFhS
RGV2aWNlUHJveHk6OmNyZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MzJfdCB3aWR0aCwgdWludDMy
X3QgaGVpZ2h0LCBib29sIGFscGhhKQogewotICAgIHJldHVybiBtX3hyU3lzdGVtID8gbV94clN5
c3RlbS0+Y3JlYXRlTGF5ZXJQcm9qZWN0aW9uKHdpZHRoLCBoZWlnaHQsIGFscGhhKSA6IFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVy
UHJvamVjdGlvbih3aWR0aCwgaGVpZ2h0LCBhbHBoYSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgWFJEZXZpY2VQcm94eTo6c3VibWl0RnJhbWUoVmVjdG9yPFBsYXRmb3JtWFI6OkRldmljZTo6
TGF5ZXI+JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5m
b0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcApp
bmRleCBlZDc0M2FmMzYzNmE0NTJiNWI4NmRhMmRkMmU1MDBiNzI4NmE0ZjFjLi5mNjA2ZmY0Yjgx
NGVhNjk0ZDliMjczZGY0YTNjZDQ0OTZiYjE4ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0RlYnVnZ2FibGVJbmZvRGF0YS5jcHAKQEAgLTU2LDI3ICs1NiwyNyBAQCBPcHRpb25hbDxEZWJ1
Z2dhYmxlSW5mb0RhdGE+IERlYnVnZ2FibGVJbmZvRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBkZWJ1Z2dh
YmxlVHlwZTsKICAgICBkZWNvZGVyID4+IGRlYnVnZ2FibGVUeXBlOwogICAgIGlmICghZGVidWdn
YWJsZVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHRhcmdldFBsYXRmb3JtTmFtZTsK
ICAgICBkZWNvZGVyID4+IHRhcmdldFBsYXRmb3JtTmFtZTsKICAgICBpZiAoIXRhcmdldFBsYXRm
b3JtTmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0QnVpbGRWZXJzaW9uOwog
ICAgIGRlY29kZXIgPj4gdGFyZ2V0QnVpbGRWZXJzaW9uOwogICAgIGlmICghdGFyZ2V0QnVpbGRW
ZXJzaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRQcm9kdWN0VmVyc2lvbjsK
ICAgICBkZWNvZGVyID4+IHRhcmdldFByb2R1Y3RWZXJzaW9uOwogICAgIGlmICghdGFyZ2V0UHJv
ZHVjdFZlcnNpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiB0YXJnZXRJc1NpbXVsYXRvcjsK
ICAgICBkZWNvZGVyID4+IHRhcmdldElzU2ltdWxhdG9yOwogICAgIGlmICghdGFyZ2V0SXNTaW11
bGF0b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKmRlYnVnZ2FibGVUeXBlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KaW5kZXggMTlm
ZTdhODMxYmEzNTkzNDExMTNiYzIwYjdmNTBkNjE0Mjc4NGUwYy4uNDFiOTJhYjQ2NmIzNjBhZmFh
YmIxMDI2MmFhMDJkNjViMTY4MzI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
RG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1
bWVudEVkaXRpbmdDb250ZXh0Lm1tCkBAIC04NSw5ICs4NSw5IEBAIE9wdGlvbmFsPFdlYktpdDo6
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpEb2N1
bWVudEVkCiAgICAgV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZSByYW5nZTsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmFuZ2UubG9jYXRpb24pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmFuZ2UubGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByYW5nZTsKIH0K
QEAgLTEwMywxMiArMTAzLDEyIEBAIE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29u
dGV4dDo6VGV4dFJlY3RBbmRSYW5nZT4gQXJndW1lbnRDb2RlcjxXZWJLaXQ6CiAgICAgV2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpUZXh0UmVjdEFuZFJhbmdlIHJlY3Q7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlY3QucmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJLaXQ6
OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJh
bmdlOwogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVjdC5yYW5nZSA9ICpyYW5nZTsKIAogICAg
IHJldHVybiByZWN0OwpAQCAtMTM0LDQxICsxMzQsNDEgQEAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q28KICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBjb250ZXh0QmVmb3Jl
OwogICAgIGRlY29kZXIgPj4gY29udGV4dEJlZm9yZTsKICAgICBpZiAoIWNvbnRleHRCZWZvcmUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY29udGV4dC5jb250ZXh0QmVmb3JlID0gKmNvbnRleHRCZWZvcmU7CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3RlZFRleHQ7CiAgICAgZGVj
b2RlciA+PiBzZWxlY3RlZFRleHQ7CiAgICAgaWYgKCFzZWxlY3RlZFRleHQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29u
dGV4dC5zZWxlY3RlZFRleHQgPSAqc2VsZWN0ZWRUZXh0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6QXR0cmlidXRlZFN0cmluZz4gY29udGV4dEFmdGVyOwogICAgIGRlY29kZXIgPj4gY29udGV4
dEFmdGVyOwogICAgIGlmICghY29udGV4dEFmdGVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEFm
dGVyID0gKmNvbnRleHRBZnRlcjsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRT
dHJpbmc+IG1hcmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBtYXJrZWRUZXh0OwogICAgIGlmICgh
bWFya2VkVGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0Lm1hcmtlZFRleHQgPSAqbWFya2VkVGV4dDsKIAog
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGFubm90YXRlZFRleHQ7CiAg
ICAgZGVjb2RlciA+PiBhbm5vdGF0ZWRUZXh0OwogICAgIGlmICghYW5ub3RhdGVkVGV4dCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBjb250ZXh0LmFubm90YXRlZFRleHQgPSAqYW5ub3RhdGVkVGV4dDsKIAogICAgIE9wdGlv
bmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6UmFuZ2U+IHNlbGVjdGVkUmFuZ2VJ
bk1hcmtlZFRleHQ7CiAgICAgZGVjb2RlciA+PiBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0Owog
ICAgIGlmICghc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjb250ZXh0LnNlbGVj
dGVkUmFuZ2VJbk1hcmtlZFRleHQgPSAqc2VsZWN0ZWRSYW5nZUluTWFya2VkVGV4dDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29udGV4dC50ZXh0UmVjdHMpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGNvbnRleHQ7CiB9CkBAIC0xODcsMjEgKzE4NywyMSBAQCBPcHRpb25hbDxXZWJLaXQ6OkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0PiBBcmd1bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRF
ZAogICAgIFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QgcmVxdWVzdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5vcHRpb25zKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5zdXJyb3VuZGluZ0dyYW51bGFyaXR5KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5ncmFudWxhcml0eUNvdW50KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5yZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Pj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0
OwogICAgIGRlY29kZXIgPj4gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0OwogICAgIGlmICghb3B0
aW9uYWxUZXh0SW5wdXRDb250ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmVxdWVzdC50ZXh0SW5wdXRDb250ZXh0
ID0gb3B0aW9uYWxUZXh0SW5wdXRDb250ZXh0LnZhbHVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
ZGl0aW5nUmFuZ2UuY3BwCmluZGV4IDlmN2M3MzEwOTNjZjg3MWE3ZTRjNjNmMWIxZjFhNmMzMDUz
ZjM1MzQuLmM0NDc5ZTFhNjA0MTM4ODk2NDk5ZTk0OTExZTQxM2NkNDNhOWJkN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBPcHRpb25hbDxX
ZWJDb3JlOjpTaW1wbGVSYW5nZT4gRWRpdGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1l
JiBmcmFtZSwgY29ucwogICAgICAgICAvLyBUaGF0IGZpdHMgd2l0aCBBcHBLaXQncyBpZGVhIG9m
IGFuIGlucHV0IGNvbnRleHQuCiAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZS5zZWxlY3Rp
b24oKS5yb290RWRpdGFibGVFbGVtZW50T3JEb2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgaWYg
KCFlbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFu
Z2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCplbGVtZW50KSwgcmFuZ2UpOwogICAg
IH0KIApAQCAtNTUsNyArNTUsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4gRWRp
dGluZ1JhbmdlOjp0b1JhbmdlKFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29ucwogCiAgICAgYXV0
byBwYXJhZ3JhcGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBpZiAoIXBh
cmFncmFwaFN0YXJ0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzY29wZUVuZCA9IG1ha2VCb3VuZGFyeVBvaW50
QWZ0ZXJOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNjb3BlKCku
cm9vdE5vZGUoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJSYW5nZSh7
IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFuZ2UpOwpA
QCAtOTEsOSArOTEsOSBAQCBPcHRpb25hbDxXZWJLaXQ6OkVkaXRpbmdSYW5nZT4gQXJndW1lbnRD
b2RlcjxXZWJLaXQ6OkVkaXRpbmdSYW5nZT46OmRlY29kZShEZWNvZAogICAgIFdlYktpdDo6RWRp
dGluZ1JhbmdlIGVkaXRpbmdSYW5nZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZWRpdGlu
Z1JhbmdlLmxvY2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVkaXRpbmdSYW5n
ZS5sZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGVkaXRpbmdSYW5nZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2Vydmlj
ZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRl
eCAzZDhlNGY4NzUxNWVjNGEzZTJjM2NmMGY4OWJjMGM0ZWIwNTc1NTg0Li5jOTFkY2ZjYjI4Njli
OTdlZDZjMTJhZmMyMDc4YmQyMmI0ZDIzOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCkBAIC04NCw3ICs4NCw3IEBA
IGJvb2wgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudEJ1bmRsZUlkZW50
aWZpZXIoU3RyaW5nJiBjbGllbnRCdW5kCiBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVn
YXRlOjpnZXRDbGllbnRTREtWZXJzaW9uKHVpbnQzMl90JiBjbGllbnRTREtWZXJzaW9uKQogewog
ICAgIGF1dG8gdmVyc2lvbiA9IHBhcnNlSW50ZWdlcjx1aW50MzJfdD4oeHBjX2RpY3Rpb25hcnlf
Z2V0X3N0cmluZyhtX2luaXRpYWxpemVyTWVzc2FnZSwgImNsaWVudC1zZGstdmVyc2lvbiIpKTsK
LSAgICBjbGllbnRTREtWZXJzaW9uID0gdmVyc2lvbi52YWx1ZU9yKDApOworICAgIGNsaWVudFNE
S1ZlcnNpb24gPSB2ZXJzaW9uLnZhbHVlX29yKDApOwogICAgIHJldHVybiB2ZXJzaW9uLmhhc1Zh
bHVlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbi5jcHAKaW5kZXggYjM5ZjNmNTY1MmNjYTZkODNlZjAyZWNjY2QxMDBlZmI3ZWY1
Mjg0MS4uMDc2NGRhOGE2MGVjYmM4ODdlMzUxNzIxZWQ1MzgyNTEwZGFiNTcwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKQEAg
LTQ0LDE5ICs0NCwxOSBAQCBPcHRpb25hbDxPcHRpb25JdGVtPiBPcHRpb25JdGVtOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE9wdGlvbkl0ZW0gcmVzdWx0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaXNHcm91cCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pc1NlbGVjdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc2Fi
bGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVudEdyb3VwSUQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0ZyYW1lSW5mb0RhdGEuY3BwCmluZGV4IGFmNmQ5ZTRmOGFmZGFhMjI4NGRhMjY3ZTMxMGY4
M2UxOWFkZWY4YmYuLjhkY2Y3ZDc0N2I0MDgyNzQ5ZjUxN2Q4OWJjMjE4M2FmOWU4YjQ2MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCkBAIC00NCwyNyArNDQsMjcgQEAg
T3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gRnJhbWVJbmZvRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxib29sPiBpc01haW5GcmFtZTsKICAgICBkZWNvZGVy
ID4+IGlzTWFpbkZyYW1lOwogICAgIGlmICghaXNNYWluRnJhbWUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgZGVjb2RlciA+PiByZXF1
ZXN0OwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW47CiAgICAgZGVjb2RlciA+PiBzZWN1cml0eU9y
aWdpbjsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICBkZWNvZGVyID4+IGZy
YW1lSUQ7CiAgICAgaWYgKCFmcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPj4gcGFyZW50RnJhbWVJRDsKICAgICBkZWNvZGVyID4+IHBh
cmVudEZyYW1lSUQ7CiAgICAgaWYgKCFwYXJlbnRGcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7
CiAgICAgICAgIFdURk1vdmUoKmlzTWFpbkZyYW1lKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFt
ZVRyZWVOb2RlRGF0YS5oCmluZGV4IDI3MDUzNzA0ZmQwZjBlMzczZWEzNmJhODQ1YWFiNzQ2NjI0
MzZlNmYuLjliN2ZiNjUyMTlkOWY5NDc2NGJhNzFkN2I3Y2QxMDcxOTdmN2FhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHN0
cnVjdCBGcmFtZVRyZWVOb2RlRGF0YSB7CiAgICAgICAgIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+
IGluZm87CiAgICAgICAgIGRlY29kZXIgPj4gaW5mbzsKICAgICAgICAgaWYgKCFpbmZvKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8RnJhbWVUcmVlTm9kZURh
dGE+PiBjaGlsZHJlbjsKICAgICAgICAgZGVjb2RlciA+PiBjaGlsZHJlbjsKICAgICAgICAgaWYg
KCFjaGlsZHJlbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHt7CiAgICAg
ICAgICAgICBXVEZNb3ZlKCppbmZvKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzLmgKaW5kZXggMGU0MzkyMjE1YmIzZTUyOTNh
ZTlhNDhlYzY4ZjU1ZGViZmU3MTk1OC4uYmJkMjBlMmY3OGM3ODQ3ZWU5NWQ4MWRkM2Y5Mjc2OTYw
YTk0NDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzLmgKQEAgLTU3LDE5ICs1NywxOSBAQCBzdHJ1Y3QgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4g
d2ViUHJvY2Vzc0lkZW50aXR5VG9rZW47CiAgICAgICAgIGRlY29kZXIgPj4gd2ViUHJvY2Vzc0lk
ZW50aXR5VG9rZW47CiAgICAgICAgIGlmICghd2ViUHJvY2Vzc0lkZW50aXR5VG9rZW4pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBvdmVycmlk
ZUxhbmd1YWdlczsKICAgICAgICAgZGVjb2RlciA+PiBvdmVycmlkZUxhbmd1YWdlczsKICAgICAg
ICAgaWYgKCFvdmVycmlkZUxhbmd1YWdlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKElQQ19U
RVNUSU5HX0FQSSkKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaWdub3JlSW52YWxpZE1lc3NhZ2VG
b3JUZXN0aW5nOwogICAgICAgICBkZWNvZGVyID4+IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVz
dGluZzsKICAgICAgICAgaWYgKCFpZ25vcmVJbnZhbGlkTWVzc2FnZUZvclRlc3RpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogCiAgICAgICAgIHJldHVybiBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFt
ZXRlcnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NXYWtl
dXBNZXNzYWdlQXJndW1lbnRzLmgKaW5kZXggYzI5Y2YyNTEyMDE2Y2RhMmRmZTcwZDllMTQwYTkw
ZjAzYzE5ZTYwNC4uYzViN2QxNzE4NmI4NzI5YmNjOTVhODAwMzQyNWM2NTdhNDIzMGFkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1
bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2Fn
ZUFyZ3VtZW50cy5oCkBAIC02MiwyMiArNjIsMjIgQEAgT3B0aW9uYWw8R1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHM+IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzOjpkZWMK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXI+
IGl0ZW1CdWZmZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaXRlbUJ1ZmZlcklkZW50aWZp
ZXI7CiAgICAgaWYgKCFpdGVtQnVmZmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBvZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gZGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgaWYgKCFkZXN0aW5hdGlvbkltYWdlQnVm
ZmVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEdQVVByb2Nlc3NXYWtldXBSZWFzb24+
IHJlYXNvbjsKICAgICBkZWNvZGVyID4+IHJlYXNvbjsKICAgICBpZiAoIXJlYXNvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyAqaXRlbUJ1ZmZlcklkZW50aWZpZXIsICpvZmZzZXQsICpkZXN0aW5hdGlv
bkltYWdlQnVmZmVySWRlbnRpZmllciwgKnJlYXNvbiB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAKaW5kZXggYTljZWM0MjY4YjdjMWE1NjY3MzAw
YTFjNWMxNWZjN2UwMTk5OTYzMy4uNDc0YTU0M2QyNmJmYzllYWRiYjEzYmU0ZTA2YjJmMTlhNGNj
Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvR2FtZXBhZC9HYW1lcGFkRGF0YS5jcHAK
QEAgLTU4LDI4ICs1OCwyOCBAQCBPcHRpb25hbDxHYW1lcGFkRGF0YT4gR2FtZXBhZERhdGE6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgR2FtZXBhZERhdGEgZGF0YTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9pc051bGwpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGRhdGEu
bV9pc051bGwpCiAgICAgICAgIHJldHVybiBkYXRhOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhLm1faW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faWQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fbWFwcGluZykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9heGlzVmFsdWVzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2J1dHRvblZhbHVlcykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGEubV9sYXN0VXBkYXRlVGltZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bi5oCmluZGV4IGNhNzBhNWEwZWNhN2RjYzM0NmFjMDU4ZjMwZDhjZTdiMmY3MmFiNmYuLmNmZThm
M2UzNGYzYTg5N2YyOGMxNjJmMGE2N2ZiNjZkNzdhMTVjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaApAQCAtNzUsMjIgKzc1LDIy
IEBAIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAgICAgIGRlY29k
ZXIgPj4gaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgaWYgKCFoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZGVj
b2RlciA+PiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgICAgICBpZiAo
IWhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwogICAgICAgICBk
ZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwogICAgICAgICBpZiAoIWRpZFBlcmZvcm1T
b2Z0VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxSZXF1ZXN0
RG9tYWluLCBDb250ZXh0RG9tYWluPj4gY29udGV4dERhdGE7CiAgICAgICAgIGRlY29kZXIgPj4g
Y29udGV4dERhdGE7CiAgICAgICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICpoYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUsIFdURk1v
dmUoKmNvbnRleHREYXRhKSB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW9uQWN0aW9uRGF0YS5jcHAKaW5kZXggNGIyYTU2MmM0YTdkNzU4YmM0NzU5YTJkNmQ2YWMy
MzI3YzVmMTBmMC4uODA0MTQxNGViNTAwYjZkYzAzNjVjNTllODczMWMwMGQ0MzU5YzU4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcApAQCAtNjEs
OTUgKzYxLDk1IEBAIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0
aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlCiB7CiAgICAgV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYXZp
Z2F0aW9uVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4g
bW9kaWZpZXJzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9kaWZpZXJzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbjsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG1vdXNlQnV0dG9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWND
bGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3lu
dGhldGljQ2xpY2tUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckdl
c3R1cmVUb2tlbklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyR2VzdHVyZVRva2VuSWRl
bnRpZmllcjsKICAgICBpZiAoIXVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIE9wdGlvbmFsPGJvb2w+IGNhbkhhbmRsZVJlcXVlc3Q7CiAgICAgZGVjb2RlciA+PiBjYW5I
YW5kbGVSZXF1ZXN0OwogICAgIGlmICghY2FuSGFuZGxlUmVxdWVzdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGRvd25sb2FkQXR0cmlidXRl
OwogICAgIGRlY29kZXIgPj4gZG93bmxvYWRBdHRyaWJ1dGU7CiAgICAgaWYgKCFkb3dubG9hZEF0
dHJpYnV0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBp
c1JlZGlyZWN0OwogICAgIGRlY29kZXIgPj4gaXNSZWRpcmVjdDsKICAgICBpZiAoIWlzUmVkaXJl
Y3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247
CiAgICAgZGVjb2RlciA+PiB0cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb247CiAgICAgaWYgKCF0
cmVhdEFzU2FtZU9yaWdpbk5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBoYXNP
cGVuZWRGcmFtZXM7CiAgICAgZGVjb2RlciA+PiBoYXNPcGVuZWRGcmFtZXM7CiAgICAgaWYgKCFo
YXNPcGVuZWRGcmFtZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBvcGVuZWRCeURPTVdpdGhP
cGVuZXI7CiAgICAgZGVjb2RlciA+PiBvcGVuZWRCeURPTVdpdGhPcGVuZXI7CiAgICAgaWYgKCFv
cGVuZWRCeURPTVdpdGhPcGVuZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+IHJlcXVlc3Rlck9yaWdpbjsKICAgICBkZWNvZGVyID4+IHJlcXVlc3Rlck9y
aWdpbjsKICAgICBpZiAoIXJlcXVlc3Rlck9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+PiB0YXJnZXRCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllcjsKICAgICBpZiAoIXRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Pj4gc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHNvdXJj
ZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCFzb3VyY2VCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3Rvcnk7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2NrSGlzdG9yeSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3Jl
OjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShsb2NrQmFja0ZvcndhcmRMaXN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmlu
Zz4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGRlY29kZXIgPj4gY2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBkZWNvZGVyID4+
IHByaXZhdGVDbGlja01lYXN1cmVtZW50OwogICAgIGlmICghcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZShuYXZpZ2F0aW9uVHlwZSksIG1vZGlmaWVy
cywgV1RGTW92ZShtb3VzZUJ1dHRvbiksIFdURk1vdmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RG
TW92ZSgqdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpLAogICAgICAgICBXVEZNb3ZlKCpjYW5I
YW5kbGVSZXF1ZXN0KSwgV1RGTW92ZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RG
TW92ZSgqZG93bmxvYWRBdHRyaWJ1dGUpLCBXVEZNb3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXMpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVu
Y3lVdGlscy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcApp
bmRleCA0Nzg2OTc0N2UwZmMxNTQ2MTM2MTRlYjA2ZTExNDRjNmQ0MmVlMDYzLi5jNzgwYmM0Zjgx
MWFmOGZiMzg3ZmIwZDIyYzdmZGU0ZjFkMTM2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QZXJzaXN0ZW5jeVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Q
ZXJzaXN0ZW5jeVV0aWxzLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8S2V5
ZWREZWNvZGVyPiBjcmVhdGVGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBpZiAoaGFu
ZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXpl
KGhhbmRsZSkudmFsdWVPcigwKTsKKyAgICBhdXRvIGZpbGVTaXplID0gRmlsZVN5c3RlbTo6Zmls
ZVNpemUoaGFuZGxlKS52YWx1ZV9vcigwKTsKICAgICBpZiAoIWZpbGVTaXplKSB7CiAgICAgICAg
IEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBN
ZW51RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEu
Y3BwCmluZGV4IGQ5MTU2NzIyYjMxNTk2NjJkYTNkNTdkZTM4NDUwMDY0M2I5ODkzZjguLjNlNDI3
MGRjYWYzMGY4NjM5ZWZlMTI2MjUzNmJhOWU2ZjVkZDBiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIE9w
dGlvbmFsPFBsYXRmb3JtUG9wdXBNZW51RGF0YT4gUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvCiB7CiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIGRhdGE7
CiAgICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRhdGE7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVy
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEu
Y3BwCmluZGV4IDkzYTkxNDk4OGM5MmE3MmIwZjZkM2NhYWJhMWE5MGFkYTE2ZDM3YjMuLjI2Njg4
ZTk5MTdkZWU1ZGRhNTYzNDg0NzcyZDI1MmYxMTRhZDlkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcApAQCAtNzksMTYgKzc5LDE2
IEBAIE9wdGlvbmFsPE5QSWRlbnRpZmllckRhdGE+IE5QSWRlbnRpZmllckRhdGE6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTlBJZGVudGlmaWVyRGF0YSByZXN1bHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pc1N0cmluZykpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAog
ICAgIGlmIChyZXN1bHQubV9pc1N0cmluZykgewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX3N0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX251bWJlcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUFZhcmlhbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBW
YXJpYW50RGF0YS5jcHAKaW5kZXggOWIzMGU3ZjEzZTk4NTA2ODczZTVmNjM4YTQxODY3Y2ZhZDMy
OGY5YS4uZTBkZWIzNjAyNjgwYjk4NGVjNWE5MGEzNGZjNGU3OGNmMGE3MzgxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlhbnREYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCkBAIC0xNTIsNyAr
MTUyLDcgQEAgT3B0aW9uYWw8TlBWYXJpYW50RGF0YT4gTlBWYXJpYW50RGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBOUFZhcmlhbnREYXRhIHJlc3VsdDsKICAgICB1aW50
MzJfdCB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBX
ZSBzcGVjaWFsLWNhc2UgTG9jYWxOUE9iamVjdElEIGFuZCBSZW1vdGVOUE9iamVjdElEIGhlcmUg
c28gYSBMb2NhbE5QT2JqZWN0SUQgaXMKICAgICAvLyBkZWNvZGVkIGFzIGEgUmVtb3RlTlBPYmpl
Y3RJRCBhbmQgdmljZSB2ZXJzYS4KQEAgLTE3MSwzMSArMTcxLDMxIEBAIE9wdGlvbmFsPE5QVmFy
aWFudERhdGE+IE5QVmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpCb29sOgogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Jvb2xWYWx1ZSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBjYXNlIE5QVmFyaWFudERhdGE6OkludDMyOgog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2ludDMyVmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpEb3Vi
bGU6CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZG91YmxlVmFsdWUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRh
OjpTdHJpbmc6CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fc3RyaW5nVmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlh
bnREYXRhOjpMb2NhbE5QT2JqZWN0SUQ6CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fbG9jYWxOUE9iamVjdElEVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgY2FzZSBOUFZhcmlhbnREYXRhOjpSZW1vdGVOUE9iamVjdElEOgogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JlbW90ZU5QT2JqZWN0SURWYWx1ZSkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKaW5kZXggZjQ1NmRjOTg4
MzMxZDMyMzg3ZmMxMjU2NjEzMmVkNjY0NTEzZWMzZS4uMTkwMTEyMjFkY2ZiNWE0M2Y5YmQwM2I5
ZGYyZTBiODViMTQ5ZTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5
RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCkBA
IC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBQb2xpY3lEZWNp
c2lvbiB7CiAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9
OwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBzdGQ6Om51
bGxvcHQgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uIHsgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAw
IH07Ci0gICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRCB7IFdURjo6bnVsbG9wdCB9
OwotICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0RhdGEg
eyBXVEY6Om51bGxvcHQgfTsKLSAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxE
b3dubG9hZElEPiBkb3dubG9hZElEIHsgc3RkOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzRGF0YSB7IHN0ZDo6bnVsbG9wdCB9Owor
ICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSB7IHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApAQCAtNjAsMzcgKzYwLDM3IEBA
IHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllcj4gZGVjb2RlZElkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4g
ZGVjb2RlZElkZW50aWZpZXI7CiAgICAgICAgIGlmICghZGVjb2RlZElkZW50aWZpZXIpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPj4gZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAg
ICAgIGRlY29kZXIgPj4gZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAg
ICAgIGlmICghZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lBY3Rpb24+IGRlY29kZWRQb2xpY3lB
Y3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAgICAgICAg
aWYgKCFkZWNvZGVkUG9saWN5QWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGRlY29kZWROYXZpZ2F0aW9uSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2Rl
ZE5hdmlnYXRpb25JRDsKICAgICAgICAgaWYgKCFkZWNvZGVkTmF2aWdhdGlvbklEKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RG93bmxvYWRJRD4+IGRlY29kZWREb3du
bG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWREb3dubG9hZElEOwogICAgICAgICBp
ZiAoIWRlY29kZWREb3dubG9hZElEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4+IGRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhOwog
ICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhOwogICAgICAgICBp
ZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPj4gc2FuZGJveEV4dGVuc2lv
bkhhbmRsZTsKICAgICAgICAgZGVjb2RlciA+PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBy
ZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkSXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRQb2xpY3lBY3Rpb24p
LCBXVEZNb3ZlKCpkZWNvZGVkTmF2aWdhdGlvbklEKSwgV1RGTW92ZSgqZGVjb2RlZERvd25sb2Fk
SUQpLCBXVEZNb3ZlKCpkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUoKnNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpfX07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUlRDTmV0d29yay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENOZXR3b3JrLmNw
cAppbmRleCBhYTlkZjg0NzQyYzc2NTMwNmFlOGVjMGEyMTAxOGU4ZTM4OGU4MTc2Li5iODRhZjM3
YjcxOGZhZThhYWIwM2Q1MGVjNmYyZmRhZDMyMTg5Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SVENOZXR3b3JrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENO
ZXR3b3JrLmNwcApAQCAtNjYsNyArNjYsNyBAQCBhdXRvIFJUQ05ldHdvcms6OklQQWRkcmVzczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8SVBBZGRyZXNzPgogICAg
IElQQWRkcmVzcyByZXN1bHQ7CiAgICAgaW50IGZhbWlseTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGZhbWlseSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQoZmFtaWx5ID09IEFGX0lORVQgfHwgZmFtaWx5
ID09IEFGX0lORVQ2IHx8IGZhbWlseSA9PSBBRl9VTlNQRUMpOwogCkBAIC03NSwxNyArNzUsMTcg
QEAgYXV0byBSVENOZXR3b3JrOjpJUEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIpIC0+IE9wdGlvbmFsPElQQWRkcmVzcz4KIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZmFtaWx5ID09
IEFGX0lORVQpIHsKICAgICAgICAgaWYgKGRhdGEuc2l6ZSgpICE9IHNpemVvZihpbl9hZGRyKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXN1bHQudmFsdWUgPSBydGM6OklQQWRkcmVzcygqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbl9hZGRyKj4oZGF0YS5kYXRhKCkpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKICAgICBpZiAoZGF0YS5zaXplKCkgIT0gc2l6ZW9mKGluNl9hZGRy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQudmFsdWUgPSBydGM6OklQQWRkcmVzcygqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBpbjZfYWRkcio+KGRhdGEuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTEyNSwyOCArMTI1LDI4IEBAIGF1dG8gUlRDTmV0d29yazo6U29ja2V0QWRkcmVzczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8U29ja2V0CiAgICAgU29ja2V0
QWRkcmVzcyByZXN1bHQ7CiAgICAgdWludDE2X3QgcG9ydDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBvcnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGludCBzY29wZUlkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2NvcGVJZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnZhbHVlLlNldFBvcnQocG9ydCk7CiAgICAgcmVzdWx0
LnZhbHVlLlNldFNjb3BlSUQoc2NvcGVJZCk7CiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgaG9z
dG5hbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShob3N0bmFtZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0
LnZhbHVlLlNldElQKHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhv
c3RuYW1lLmRhdGEoKSksIGhvc3RuYW1lLnNpemUoKSkpOwogCiAgICAgYm9vbCBpc1VucmVzb2x2
ZWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1VucmVzb2x2ZWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChp
c1VucmVzb2x2ZWQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBPcHRpb25hbDxJUEFk
ZHJlc3M+IGlwQWRkcmVzczsKICAgICBkZWNvZGVyID4+IGlwQWRkcmVzczsKICAgICBpZiAoIWlw
QWRkcmVzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudmFsdWUuU2V0UmVzb2x2ZWRJUChpcEFkZHJlc3MtPnZh
bHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTcyLDQzICsxNzIsNDMgQEAgT3B0aW9u
YWw8UlRDTmV0d29yaz4gUlRDTmV0d29yazo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikK
ICAgICBSVENOZXR3b3JrIHJlc3VsdDsKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbmFtZSwgZGVz
Y3JpcHRpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuYW1lKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
bmFtZSA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hbWUuZGF0
YSgpKSwgbmFtZS5zaXplKCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGVzY3JpcHRpb24p
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRlc2NyaXB0aW9uLmRhdGEoKSksIGRlc2NyaXB0aW9uLnNpemUoKSk7
CiAgICAgT3B0aW9uYWw8SVBBZGRyZXNzPiBwcmVmaXg7CiAgICAgZGVjb2RlciA+PiBwcmVmaXg7
CiAgICAgaWYgKCFwcmVmaXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnByZWZpeCA9IFdURk1vdmUoKnByZWZp
eCk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZml4TGVuZ3RoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJl
ZmVyZW5jZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWN0aXZlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZ25vcmVkKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5zY29wZUlEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVpbnQ2NF90IGxlbmd0aDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lmlwcy5yZXNl
cnZlKGxlbmd0aCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsg
KytpbmRleCkgewogICAgICAgICBPcHRpb25hbDxJUEFkZHJlc3M+IGFkZHJlc3M7CiAgICAgICAg
IGRlY29kZXIgPj4gYWRkcmVzczsKICAgICAgICAgaWYgKCFhZGRyZXNzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGludCBmbGFnczsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbGFncykpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lmlwcy5wdXNoX2JhY2soeyBhZGRyZXNzLT52YWx1ZSwg
ZmxhZ3MgfSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JUQ1BhY2tldE9wdGlvbnMuY3BwCmluZGV4IGExMzE2YjY0ZDQzZTFlNTNjYWU5ODJmNDg0ODk3
YWZmYjc2NjBiZTUuLjllMjk4MzAxMmQzMzU0NjNlZGY1Mjc3YzJiNTdlMjljNDM4MGJkODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ1BhY2tldE9wdGlvbnMuY3BwCkBAIC01NSwzMSArNTUs
MzEgQEAgT3B0aW9uYWw8UlRDUGFja2V0T3B0aW9ucz4gUlRDUGFja2V0T3B0aW9uczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlcikKIAogICAgIHJ0Yzo6RGlmZlNlcnZDb2RlUG9pbnQgZHNj
cDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRzY3ApKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIG9wdGlvbnMuZHNjcCA9
IGRzY3A7CiAKICAgICBPcHRpb25hbDxpbnQzMl90PiBwYWNrZXRJZDsKICAgICBkZWNvZGVyID4+
IHBhY2tldElkOwogICAgIGlmICghcGFja2V0SWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgb3B0aW9ucy5wYWNrZXRfaWQg
PSBwYWNrZXRJZC52YWx1ZSgpOwogCiAgICAgT3B0aW9uYWw8aW50PiBydHBTZW5kdGltZUV4dGVu
c2lvbklkOwogICAgIGRlY29kZXIgPj4gcnRwU2VuZHRpbWVFeHRlbnNpb25JZDsKICAgICBpZiAo
IXJ0cFNlbmR0aW1lRXh0ZW5zaW9uSWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1zLnJ0cF9zZW5kdGltZV9leHRl
bnNpb25faWQgPSBydHBTZW5kdGltZUV4dGVuc2lvbklkLnZhbHVlKCk7CiAKICAgICBPcHRpb25h
bDxpbnQ2NF90PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBkZWNvZGVyID4+IHNydHBBdXRoVGFn
TGVuZ3RoOwogICAgIGlmICghc3J0cEF1dGhUYWdMZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1zLnNydHBf
YXV0aF90YWdfbGVuID0gc3J0cEF1dGhUYWdMZW5ndGgudmFsdWUoKTsKIAogICAgIGlmIChwYXJh
bXMuc3J0cF9hdXRoX3RhZ19sZW4gPiAwKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBz
cnRwQXV0aEtleTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzcnRwQXV0aEtleSkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBwYXJhbXMuc3J0cF9hdXRoX2tleSA9IHN0ZDo6dmVjdG9yPGNo
YXI+KHN0YXRpY19jYXN0PHNpemVfdD4oc3J0cEF1dGhLZXkuc2l6ZSgpKSk7CiAgICAgICAgIG1l
bWNweShwYXJhbXMuc3J0cF9hdXRoX2tleS5kYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHNydHBBdXRoS2V5LmRhdGEoKSksIHNydHBBdXRoS2V5LnNpemUoKSAqIHNpemVvZihj
aGFyKSk7CkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJUQ1Bh
Y2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
aW50NjRfdD4gc3J0cFBhY2tldEluZGV4OwogICAgIGRlY29kZXIgPj4gc3J0cFBhY2tldEluZGV4
OwogICAgIGlmICghc3J0cFBhY2tldEluZGV4KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtcy5zcnRwX3BhY2tldF9p
bmRleCA9IHNydHBQYWNrZXRJbmRleC52YWx1ZSgpOwogCiAgICAgb3B0aW9ucy5wYWNrZXRfdGlt
ZV9wYXJhbXMgPSBXVEZNb3ZlKHBhcmFtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KaW5kZXggMTdiMmRhOWNjYTM1MjBiM2VmYzE0NmQ5ZWNmZjdlZjA4MDMwZDA5MS4uMTA0
N2I3ZDRkMjM1MjdlOTQ0ZDA5ZmUzNTVhOGNhMzU3OTU2YWY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNzIsMjcgKzcyLDI3IEBAIGF1dG8gUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkCiB7CiAgICAgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgcmVzdWx0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmxheWVySUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8gUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaG9zdGluZ0NvbnRleHRJRCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ob3N0aW5nRGV2aWNlU2NhbGVG
YWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIC8vIFBsYXRm
b3JtQ0FMYXllclJlbW90ZU1vZGVsSG9zdGluZwogICAgIGJvb2wgaGFzTW9kZWw7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShoYXNNb2RlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc01vZGVsKSB7CiAgICAg
ICAgIGF1dG8gbW9kZWwgPSBXZWJDb3JlOjpNb2RlbDo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAg
ICBpZiAoIW1vZGVsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tb2RlbCA9IG1vZGVsOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ1VJU3RhdGUuY3BwCmluZGV4IDA2ZGJjODcy
MjU0ZGZjYjUwOWVlZDEyZDA2NjY0OThmYTc2NmUzZDcuLmU4ZWEzODc5NWI1ZDkxNzFhYzBjY2Uz
NjE2MzZmNGM5NWZjYzZjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5jcHAKQEAgLTQ3
LDE2ICs0NywxNiBAQCBPcHRpb25hbDxSZW1vdGVTY3JvbGxpbmdVSVN0YXRlPiBSZW1vdGVTY3Jv
bGxpbmdVSVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZQogICAgIFJlbW90ZVNjcm9sbGlu
Z1VJU3RhdGUgdWlTdGF0ZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodWlTdGF0ZS5tX2No
YW5nZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKHVpU3RhdGUubV9jaGFuZ2VzLmNvbnRhaW5zKENoYW5nZXM6
OlNjcm9sbFNuYXBOb2RlcykpIHsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1aVN0YXRl
Lm1fbm9kZXNXaXRoQWN0aXZlU2Nyb2xsU25hcCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBp
ZiAodWlTdGF0ZS5tX2NoYW5nZXMuY29udGFpbnMoQ2hhbmdlczo6VXNlclNjcm9sbE5vZGVzKSkg
ewogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVpU3RhdGUubV9ub2Rlc1dpdGhBY3RpdmVV
c2VyU2Nyb2xscykpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gdWlTdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZEluZm8uaAppbmRleCBiMTg4YTI0NjI5MzYzMjQ3
NzI2OWFmYTQ3OTk1YzJmZjE3NDU4ZmIwLi4wMDg2NWM2OWRiYmQ2MjRjZDUyNzRiOTUzZTNmZWUw
N2EyZWYxOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJ
bmZvLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oCkBAIC03
OSw0MiArNzksNDIgQEAgc3RydWN0IFJlc291cmNlTG9hZEluZm8gewogICAgICAgICBPcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gcmVzb3VyY2VMb2FkSUQ7CiAgICAgICAg
IGRlY29kZXIgPj4gcmVzb3VyY2VMb2FkSUQ7CiAgICAgICAgIGlmICghcmVzb3VyY2VMb2FkSUQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+PiBmcmFtZUlEOwogICAgICAgICBkZWNvZGVyID4+IGZyYW1lSUQ7CiAgICAgICAg
IGlmICghZnJhbWVJRCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1lSUQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gcGFyZW50RnJhbWVJRDsKICAgICAgICAgaWYgKCFwYXJlbnRGcmFtZUlEKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8VVJMPiBvcmlnaW5hbFVSTDsKICAgICAgICAgZGVjb2RlciA+
PiBvcmlnaW5hbFVSTDsKICAgICAgICAgaWYgKCFvcmlnaW5hbFVSTCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPFN0cmluZz4gb3JpZ2luYWxIVFRQTWV0aG9kOwogICAgICAgICBkZWNv
ZGVyID4+IG9yaWdpbmFsSFRUUE1ldGhvZDsKICAgICAgICAgaWYgKCFvcmlnaW5hbEhUVFBNZXRo
b2QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXYWxsVGltZT4gZXZlbnRUaW1lc3Rh
bXA7CiAgICAgICAgIGRlY29kZXIgPj4gZXZlbnRUaW1lc3RhbXA7CiAgICAgICAgIGlmICghZXZl
bnRUaW1lc3RhbXApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBsb2FkZWRG
cm9tQ2FjaGU7CiAgICAgICAgIGRlY29kZXIgPj4gbG9hZGVkRnJvbUNhY2hlOwogICAgICAgICBp
ZiAoIWxvYWRlZEZyb21DYWNoZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFR5cGU+
IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0eXBlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpyZXNvdXJj
ZUxvYWRJRCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BhcmFtZXRlcnMuaAppbmRleCA2MGRlMzVmNmFlOTU3ZDcwNjc1OTQ5NjQ3M2Nl
MzUxNjQyNDFlMmViLi5mM2Y5ZTZmNTEzYWQyZmQ4NDFkYTk5MTUxODQ4ZWNlYzM3MTQ2ODE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmgKQEAgLTc1LDY5ICs3NSw2OSBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BhcmFtZXRlcnMgewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGRpcmVjdG9yeTsK
ICAgICAgICAgZGVjb2RlciA+PiBkaXJlY3Rvcnk7CiAgICAgICAgIGlmICghZGlyZWN0b3J5KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IGRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgZGVjb2RlciA+PiBkaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICghZGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVk
OwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0
OwogICAgICAgICBkZWNvZGVyID4+IGlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0OwogICAgICAgICBp
ZiAoIWlzSXRwU3RhdGVFeHBsaWNpdGx5U2V0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8Ym9vbD4gZW5hYmxlTG9nVGVzdGluZ0V2ZW50OwogICAgICAgICBkZWNvZGVyID4+IGVuYWJs
ZUxvZ1Rlc3RpbmdFdmVudDsKICAgICAgICAgaWYgKCFlbmFibGVMb2dUZXN0aW5nRXZlbnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRJbmNsdWRlTG9jYWxob3N0
OwogICAgICAgICBkZWNvZGVyID4+IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgICAgIGlm
ICghc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGVuYWJsZURlYnVnTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVEZWJ1Z01v
ZGU7CiAgICAgICAgIGlmICghZW5hYmxlRGVidWdNb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OwogICAgICAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAg
ICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkPiBz
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBzYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZDsKICAgICAgICAgaWYgKCFzYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU+IGZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICBkZWNvZGVyID4+IGZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICBpZiAoIWZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IHN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbjsKICAgICAgICAgZGVjb2Rl
ciA+PiBzdGFuZGFsb25lQXBwbGljYXRpb25Eb21haW47CiAgICAgICAgIGlmICghc3RhbmRhbG9u
ZUFwcGxpY2F0aW9uRG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IGFwcEJvdW5kRG9tYWluczsKICAgICAgICAg
ZGVjb2RlciA+PiBhcHBCb3VuZERvbWFpbnM7CiAgICAgICAgIGlmICghYXBwQm91bmREb21haW5z
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICBkZWNvZGVyID4+IG1hbnVhbFBy
ZXZhbGVudFJlc291cmNlOwogICAgICAgICBpZiAoIW1hbnVhbFByZXZhbGVudFJlc291cmNlKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpkaXJl
Y3RvcnkpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2VydmljZVdvcmtlcklu
aXRpYWxpemF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2Vy
SW5pdGlhbGl6YXRpb25EYXRhLmNwcAppbmRleCBlMDYzYzFmMWJkOTlhMDAyYjQyYWEzZjI2YTNh
YmFhMjJhYjNkODdhLi5mYzMwZTU4OGMzNDk4MjdiM2JmYmVkYmY2OWNiYTZlN2NhZmE2M2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRp
b25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXJ2aWNlV29ya2VySW5pdGlh
bGl6YXRpb25EYXRhLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGE+IFNlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGE6OmRl
Y29kCiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgT3B0aW9u
YWw8VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+PiBjb250ZW50UnVsZUxpc3RzOwogICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsK
ICAgICBpZiAoIWNvbnRlbnRSdWxlTGlzdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4g
e3sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCmluZGV4IDljNzdmNzM3NDA1NjQ4
OTY5YTZmNmViZWQyY2U5NThiNTIyMjVlMGIuLjZhYmM4NGRhY2QxMDZhYjVlNzkzMmY0M2Y0ZTZj
OGQxNDZhZjU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtNTks
MTkgKzU5LDE5IEBAIGF1dG8gSFRUUEJvZHk6OkVsZW1lbnQ6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpIC0+IE9wdGlvbmFsPEVsZW1lbnQ+CiB7CiAgICAgRWxlbWVudCByZXN1bHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkgfHwgIWlzVmFsaWRFbnVtKHJlc3Vs
dC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kYXRhKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5maWxlUGF0aCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuZmlsZVN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5maWxlTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5ibG9iVVJMU3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0x
MjcsNTMgKzEyNyw1MyBAQCBPcHRpb25hbDxGcmFtZVN0YXRlPiBGcmFtZVN0YXRlOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEZyYW1lU3RhdGUgcmVzdWx0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVybFN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQub3JpZ2luYWxVUkxTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnJlZmVycmVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC50YXJnZXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kb2N1bWVu
dFN0YXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudmFsaWRhdGVEb2N1bWVudFN0YXRlKCk7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdGF0ZU9iamVjdERhdGEpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXRlbVNlcXVlbmNlTnVtYmVyKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRSZXN0b3JlU2Nyb2xsUG9zaXRpb24pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VTY2FsZUZhY3RvcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5odHRwQm9keSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmV4cG9zZWRDb250
ZW50UmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudW5vYnNjdXJlZENv
bnRlbnRSZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5taW5pbXVtTGF5
b3V0U2l6ZUluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5jb250ZW50U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuc2NhbGVJc0luaXRpYWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9i
c2N1cmVkSW5zZXRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2hpbGRyZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTIzMiwxNCArMjMy
LDE0IEBAIE9wdGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyCiAKICAgICBhdXRvIGlkZW50aWZpZXIgPSBC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFpZGVu
dGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdlU3RhdGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaGFzQ2FjaGVkUGFnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMjU1LDExICsyNTUsMTEgQEAgT3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0U3RhdGU+
IEJhY2tGb3J3YXJkTGlzdFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKICAgICBP
cHRpb25hbDxWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPj4gaXRlbXM7CiAgICAgZGVj
b2RlciA+PiBpdGVtczsKICAgICBpZiAoIWl0ZW1zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IGN1cnJlbnRJbmRleDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGN1cnJlbnRJbmRleCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaXRlbXMpLCBXVEZNb3ZlKGN1cnJlbnRJbmRl
eCkgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJ
dGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5j
cHAKaW5kZXggM2IyZDM0ZDE4ZTczZjgzMTEwYzNiZWVlNmUxNTI2ZWU5NTA1NTFhYy4uYmE5OTM3
YTlkYzgxMzM4NTJjMWZjMzVmODg5Y2MxMWFmNmZiYzhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIE9wdGlv
bmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlCiB7CiAgICAgVG91Y2hCYXJNZW51SXRlbURhdGEgcmVzdWx0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnByaW9yaXR5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1cm4gbWFrZU9w
dGlvbmFsKFdURk1vdmUocmVzdWx0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChX
VEZNb3ZlKHJlc3VsdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9UcmFuc2FjdGlvbklELmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgK
aW5kZXggZGMxNmM3NzhhMGJhMDAzYjFlMzY2ZmE0MDYyMmU1NjlhZDAyMmZmMC4uNTM2NDA4OTQw
OGUxNjFjZmIzYzAwNmE0MjMzMmZjNjgzZTMyNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVHJhbnNhY3Rpb25JRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5z
YWN0aW9uSUQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAg
ICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBBU1NFUlQoaXNWYWxpZElk
ZW50aWZpZXIoKmlkZW50aWZpZXIpKTsKICAgICAgICAgcmV0dXJuIE1vbm90b25pY09iamVjdElk
ZW50aWZpZXIgeyAqaWRlbnRpZmllciB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAppbmRleCBkYzg1MmE3MDgwYjkxNjM0Y2Iy
OWRiNTNmOWY5MDdkNzhmODkwN2U5Li5hY2MyZWI4OTM0YWMxYzc4YWIwODFiMmQyMTY1YjhkNTQ5
NzY0MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMuY3BwCkBAIC01MCwzMiArNTAsMzIgQEAgT3B0aW9uYWw8VVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnM+IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJgogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBoYW5kbGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGhh
bmRsZXJJZGVudGlmaWVyOwogICAgIGlmICghaGFuZGxlcklkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHRhc2tJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdGFz
a0lkZW50aWZpZXI7CiAgICAgaWYgKCF0YXNrSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVz
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBoYXNIVFRQQm9keTsKICAgICBkZWNvZGVyID4+
IGhhc0hUVFBCb2R5OwogICAgIGlmICghaGFzSFRUUEJvZHkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCpoYXNIVFRQ
Qm9keSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Rm9ybURhdGE+IGZvcm1EYXRhID0gV2Vi
Q29yZTo6Rm9ybURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmb3JtRGF0YSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEp
KTsKICAgICB9CiAgICAgCiAgICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOwog
ICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOwogICAgIGlmICghZnJhbWVJbmZvKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVy
cy5jcHAKaW5kZXggYWU5NGIwYWRkNWM4M2M0MzdiZmQ1NDU5ODQ0M2YxYWM4ZjdkZmUxZi4uZTNj
OWNkYmI2YjdmYzAyZjMzZDhmYmI4Y2RiOTg1YWYxYTBjZDVkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVycy5jcHAK
QEAgLTQ5LDMzICs0OSwzMyBAQCBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0
ZXJzPiBVc2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOjpkZWNvZAogICAgIE9wdGlvbmFs
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxWZWN0b3I8c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4+PiB1
c2VyQ29udGVudFdvcmxkczsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50V29ybGRzOwogICAg
IGlmICghdXNlckNvbnRlbnRXb3JsZHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViVXNl
clNjcmlwdERhdGE+PiB1c2VyU2NyaXB0czsKICAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHRzOwog
ICAgIGlmICghdXNlclNjcmlwdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYlVz
ZXJTdHlsZVNoZWV0RGF0YT4+IHVzZXJTdHlsZVNoZWV0czsKICAgICBkZWNvZGVyID4+IHVzZXJT
dHlsZVNoZWV0czsKICAgICBpZiAoIXVzZXJTdHlsZVNoZWV0cykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPj4gbWVzc2FnZUhhbmRsZXJz
OwogICAgIGRlY29kZXIgPj4gbWVzc2FnZUhhbmRsZXJzOwogICAgIGlmICghbWVzc2FnZUhhbmRs
ZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgT3B0aW9u
YWw8VmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YT4+PiBjb250ZW50UnVsZUxpc3RzOwogICAgIGRlY29kZXIgPj4gY29udGVudFJ1bGVMaXN0czsK
ICAgICBpZiAoIWNvbnRlbnRSdWxlTGlzdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIHJldHVybiB7ewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaAppbmRl
eCA0NDc1YzhkMDVkNGZjYzhmYjc1MWE1MjY5ZGI2MWIzMDgzMmMzNDIxLi42YjZlMWVlYTkxNDQx
ZTk4MDg1MGFkMWUzYzRjNjdhZGE3NGFmMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RDb3VudHMuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHN0cnVjdCBX
ZWJCYWNrRm9yd2FyZExpc3RDb3VudHMgewogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gYmFj
a0NvdW50OwogICAgICAgICBkZWNvZGVyID4+IGJhY2tDb3VudDsKICAgICAgICAgaWYgKCFiYWNr
Q291bnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gZm9yd2FyZENv
dW50OwogICAgICAgICBkZWNvZGVyID4+IGZvcndhcmRDb3VudDsKICAgICAgICAgaWYgKCFmb3J3
YXJkQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gV2ViQmFja0ZvcndhcmRMaXN0
Q291bnRzIHsgKmJhY2tDb3VudCwgKmZvcndhcmRDb3VudCB9OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEuY3Bw
CmluZGV4IGU4YjAzZDY5ZTVjZDIxYTg5NzI2NDVjMDI4MDMyMTMyNTZmNTI0YTQuLjkyYzg2Mzcw
NGQ5N2ZhYWZjMjgxYTM5NzQxNjExMjM1ZGEwYjMxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmNwcApAQCAtNjIs
NTMgKzYyLDUzIEBAIE9wdGlvbmFsPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4gV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOjpkZWNvZGUoCiB7CiAgICAgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUgaXBjSGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXBjSGFuZGxl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBkYXRhID0gU2hhcmVkTWVtb3J5OjptYXAo
aXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0
OwogICAgIGRlY29kZXIgPj4gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0OwogICAg
IGlmICghY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8dW5zaWduZWQ+IGFjdGlvbnNPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBhY3Rpb25zT2Zmc2V0
OwogICAgIGlmICghYWN0aW9uc09mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBh
Y3Rpb25zU2l6ZTsKICAgICBkZWNvZGVyID4+IGFjdGlvbnNTaXplOwogICAgIGlmICghYWN0aW9u
c1NpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhvdXRDb25kaXRp
b25zQnl0ZWNvZGVPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlv
bnNCeXRlY29kZU9mZnNldDsKICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRob3V0Q29uZGl0
aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBpZiAoIWZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBmaWx0ZXJzV2l0aENvbmRpdGlv
bnNCeXRlY29kZU9mZnNldDsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5
dGVjb2RlT2Zmc2V0OwogICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZz
ZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0
ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVT
aXplOwogICAgIGlmICghZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKICAgICBk
ZWNvZGVyID4+IHRvcFVSTEZpbHRlcnNCeXRlY29kZU9mZnNldDsKICAgICBpZiAoIXRvcFVSTEZp
bHRlcnNCeXRlY29kZU9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxG
aWx0ZXJzQnl0ZWNvZGVTaXplOwogICAgIGRlY29kZXIgPj4gdG9wVVJMRmlsdGVyc0J5dGVjb2Rl
U2l6ZTsKICAgICBpZiAoIXRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sKICAgICAgICAgV1RGTW92ZShkYXRhKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAKaW5kZXggMGM1ZGM3OTU2YThlMzE2NjQwOGIwMDJl
MDA1ZjdiNTRiNzA2NWViYy4uNjRjMTU3Y2U0N2M5ZGIwNDFjMzE4OTdkODFiY2E2YjA3N2I3ZmE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5j
cHAKQEAgLTExNywzMiArMTE3LDMyIEBAIE9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+
IFdlYkNvbnRleHRNZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlCiB7CiAgICAg
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb247CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIHRpdGxlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGl0bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBjaGVja2VkOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2hlY2tlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGVuYWJsZWQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIGlu
ZGVudGF0aW9uTGV2ZWw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmRlbnRhdGlvbkxldmVs
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPj4gc3Vi
bWVudTsKICAgICBkZWNvZGVyID4+IHN1Ym1lbnU7CiAgICAgaWYgKCFzdWJtZW51KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBY3Rpb25UeXBlOgpAQCAtMTU1
LDcgKzE1NSw3IEBAIE9wdGlvbmFsPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IFdlYkNvbnRleHRN
ZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiBraXRJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtPiYgY29y
ZUl0ZW1WZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCAzNWMyY2QzM2RmM2QzNzMxNjIwMzc0NjgxYTEzMWFlNTJlMDk5ZTFiLi5m
MWE4YWM4ODVmNDYxMDBmZGM2NTY1ODhiZGExNzE5MmVhNjY0M2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4MywxMiArMjgzLDEy
IEBAIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBBcmd1bWVudENvZGVyPENoYXJhY3RlclJhbmdl
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGxvY2F0
aW9uOwogICAgIGRlY29kZXIgPj4gbG9jYXRpb247CiAgICAgaWYgKCFsb2NhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBsZW5ndGg7CiAgICAgZGVjb2RlciA+PiBsZW5ndGg7CiAg
ICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICpsb2NhdGlvbiwgKmxlbmd0aCB9
IH07CiB9CkBAIC0zMDQsMTIgKzMwNCwxMiBAQCBhdXRvIEFyZ3VtZW50Q29kZXI8RE9NQ2FjaGVF
bmdpbmU6OkNhY2hlSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpbwogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBu
YW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
cmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpuYW1lKSB9fTsKIH0KQEAg
LTM0NSw2MCArMzQ1LDYwIEBAIE9wdGlvbmFsPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+IEFyZ3Vt
ZW50Q29kZXI8RE9NQ2FjaGVFbmdpbmU6OlJlY29yZD46OmRlY29kZShECiB7CiAgICAgdWludDY0
X3QgaWRlbnRpZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXF1ZXN0SGVhZGVyc0d1YXJkOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdEhlYWRlcnNHdWFyZCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3Qp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmV0Y2hPcHRpb25zPiBvcHRpb25zOwogICAg
IGRlY29kZXIgPj4gb3B0aW9uczsKICAgICBpZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcg
cmVmZXJyZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBG
ZXRjaEhlYWRlcnM6Okd1YXJkIHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzcG9uc2VIZWFkZXJzR3VhcmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHVpbnQ2NF90IHVwZGF0ZVJlc3BvbnNlQ291bnRlcjsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHVwZGF0ZVJlc3BvbnNlQ291bnRlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCByZXNw
b25zZUJvZHlTaXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzcG9uc2VCb2R5U2l6ZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IHJlc3BvbnNl
Qm9keTsKICAgICBib29sIGhhc1NoYXJlZEJ1ZmZlckJvZHk7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNTaGFyZWRCdWZmZXJCb2R5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChoYXNTaGFyZWRCdWZmZXJC
b2R5KSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYg
KCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoYnVmZmVyKQogICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYm9vbCBoYXNGb3JtRGF0YUJvZHk7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzRm9ybURhdGFCb2R5KSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBpZiAoaGFzRm9ybURhdGFCb2R5KSB7CiAgICAgICAgICAgICBhdXRvIGZvcm1EYXRh
ID0gRm9ybURhdGE6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgICAgIGlmICghZm9ybURhdGEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmVzcG9uc2VCb2R5ID0gZm9ybURhdGEu
cmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMiw3ICs2MzIsNyBAQCBP
cHRpb25hbDxGbG9hdFBvaW50PiBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBGbG9hdFBvaW50IGZsb2F0UG9pbnQ7CiAgICAgaWYgKCFT
aW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2lu
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIGZsb2F0UG9pbnQ7CiB9CiAKQEAgLTY2MSw3ICs2NjEsNyBAQCBP
cHRpb25hbDxGbG9hdFJlY3Q+IEFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7CiAgICAgRmxvYXRSZWN0IGZsb2F0UmVjdDsKICAgICBpZiAoIVNpbXBs
ZUFyZ3VtZW50Q29kZXI8RmxvYXRSZWN0Pjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0UmVjdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIGZsb2F0UmVjdDsKIH0KIApAQCAtNzEzLDcgKzcxMyw3IEBAIE9wdGlvbmFs
PFZpZXdwb3J0QXJndW1lbnRzPiBBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVj
b2RlKERlY29kZXImIGRlCiB7CiAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVu
dHM7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPFZpZXdwb3J0QXJndW1lbnRzPjo6ZGVj
b2RlKGRlY29kZXIsIHZpZXdwb3J0QXJndW1lbnRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmlld3BvcnRB
cmd1bWVudHM7CiB9CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4gQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIEludFBvaW50IGludFBvaW50OwogICAgIGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxJ
bnRQb2ludD46OmRlY29kZShkZWNvZGVyLCBpbnRQb2ludCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGludFBv
aW50OwogfQogCkBAIC03NjEsNyArNzYxLDcgQEAgT3B0aW9uYWw8SW50UmVjdD4gQXJndW1lbnRD
b2RlcjxJbnRSZWN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW50UmVjdCBy
ZWN0OwogICAgIGlmICghZGVjb2RlKGRlY29kZXIsIHJlY3QpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZWN0
OwogfQogCkBAIC03ODUsNyArNzg1LDcgQEAgT3B0aW9uYWw8SW50U2l6ZT4gQXJndW1lbnRDb2Rl
cjxJbnRTaXplPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSW50U2l6ZSBpbnRT
aXplOwogICAgIGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2RlKGRlY29k
ZXIsIGludFNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBpbnRTaXplOwogfQogCkBAIC04MjAsMTIgKzgy
MCwxMiBAQCBPcHRpb25hbDxSZWNlbnRTZWFyY2g+IEFyZ3VtZW50Q29kZXI8UmVjZW50U2VhcmNo
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7
CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
T3B0aW9uYWw8V2FsbFRpbWU+IHRpbWU7CiAgICAgZGVjb2RlciA+PiB0aW1lOwogICAgIGlmICgh
dGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RyaW5nKSwgV1RGTW92ZSgq
dGltZSkgfX07CiB9CkBAIC04ODAsMTEgKzg4MCwxMSBAQCBPcHRpb25hbDxNaW1lQ2xhc3NJbmZv
PiBBcmd1bWVudENvZGVyPE1pbWVDbGFzc0luZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBNaW1lQ2xhc3NJbmZvIG1pbWVDbGFzc0luZm87CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShtaW1lQ2xhc3NJbmZvLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWlt
ZUNsYXNzSW5mby5kZXNjKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVDbGFzc0lu
Zm8uZXh0ZW5zaW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbWltZUNsYXNzSW5mbzsKIH0KQEAgLTkw
OCwyMiArOTA4LDIyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkluZm8+IEFyZ3VtZW50Q29k
ZXI8UGx1Z2luSW5mbz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyCiB7CiAgICAgUGx1Z2luSW5m
byBwbHVnaW5JbmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5uYW1lKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8uZmlsZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLmRlc2MpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGx1Z2luSW5mby5taW1lcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVn
aW5JbmZvLmlzQXBwbGljYXRpb25QbHVnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGx1Z2luSW5mby5jbGllbnRMb2FkUG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBsdWdpbkluZm8uYnVuZGxlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby52ZXJzaW9uU3RyaW5nKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRp
ZgogCiAgICAgcmV0dXJuIHBsdWdpbkluZm87CkBAIC0xMTIyLDMxICsxMTIyLDMxIEBAIE9wdGlv
bmFsPFJlZjxGb250Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250OjpPcmlnaW4+IG9yaWdpbjsKICAgICBkZWNvZGVy
ID4+IG9yaWdpbjsKICAgICBpZiAoIW9yaWdpbi5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Rm9udDo6SW50ZXJzdGl0aWFsPiBpc0ludGVyc3RpdGlhbDsKICAgICBkZWNvZGVyID4+IGlz
SW50ZXJzdGl0aWFsOwogICAgIGlmICghaXNJbnRlcnN0aXRpYWwuaGFzVmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnQ6OlZpc2liaWxpdHk+IHZpc2liaWxpdHk7CiAgICAgZGVjb2RlciA+
PiB2aXNpYmlsaXR5OwogICAgIGlmICghdmlzaWJpbGl0eS5oYXNWYWx1ZSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udDo6T3JpZW50YXRpb25GYWxsYmFjaz4gaXNUZXh0T3JpZW50YXRpb25GYWxs
YmFjazsKICAgICBkZWNvZGVyID4+IGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7CiAgICAgaWYg
KCFpc1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcjsKICAgICBpZiAo
IXJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllci5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBw
bGF0Zm9ybURhdGEgPSBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2Rlcik7CiAgICAgaWYgKCFwbGF0
Zm9ybURhdGEuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZv
cm1EYXRhLnZhbHVlKCksIG9yaWdpbi52YWx1ZSgpLCBpc0ludGVyc3RpdGlhbC52YWx1ZSgpLCB2
aXNpYmlsaXR5LnZhbHVlKCksIGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2sudmFsdWUoKSwgcmVu
ZGVyaW5nUmVyc291Y2VJZGVudGlmaWVyKTsKIH0KQEAgLTEzMjgsNjAgKzEzMjgsNjAgQEAgT3B0
aW9uYWw8U2VsZWN0aW9uR2VvbWV0cnk+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uR2VvbWV0cnk+
OjpkZWNvZGUoRGVjb2RlciYgZGUKICAgICBTZWxlY3Rpb25HZW9tZXRyeSBzZWxlY3Rpb25HZW9t
ZXRyeTsKICAgICBGbG9hdFF1YWQgcXVhZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHF1YWQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldFF1YWQocXVhZCk7CiAKICAgICBPcHRpb25h
bDxTZWxlY3Rpb25SZW5kZXJpbmdCZWhhdmlvcj4gYmVoYXZpb3I7CiAgICAgZGVjb2RlciA+PiBi
ZWhhdmlvcjsKICAgICBpZiAoIWJlaGF2aW9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNl
dEJlaGF2aW9yKCpiZWhhdmlvcik7CiAKICAgICB1aW50MzJfdCBkaXJlY3Rpb247CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkaXJlY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNl
dERpcmVjdGlvbigoVGV4dERpcmVjdGlvbilkaXJlY3Rpb24pOwogCiAgICAgaW50IGludFZhbHVl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdl
b21ldHJ5LnNldE1pblgoaW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRW
YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0TWF4WChpbnRWYWx1ZSk7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGludFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRy
eS5zZXRNYXhZKGludFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldExpbmVOdW1iZXIoaW50VmFsdWUpOwogCiAg
ICAgYm9vbCBib29sVmFsdWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzTGluZUJyZWFrKGJvb2xWYWx1ZSk7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uR2VvbWV0
cnkuc2V0SXNGaXJzdE9uTGluZShib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShib29sVmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzTGFzdE9uTGluZShi
b29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHNlbGVjdGlvbkdlb21ldHJ5LnNldENvbnRhaW5zU3RhcnQoYm9vbFZhbHVlKTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5z
ZXRDb250YWluc0VuZChib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29s
VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzSG9yaXpvbnRhbChib29sVmFs
dWUpOwogCiAgICAgcmV0dXJuIHNlbGVjdGlvbkdlb21ldHJ5OwpAQCAtMTUwNiwxNSArMTUwNiwx
NSBAQCBPcHRpb25hbDxDb21wb3NpdGlvblVuZGVybGluZT4gQXJndW1lbnRDb2RlcjxDb21wb3Np
dGlvblVuZGVybGluZT46OmRlY29kZShEZWNvZAogICAgIENvbXBvc2l0aW9uVW5kZXJsaW5lIHVu
ZGVybGluZTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodW5kZXJsaW5lLnN0YXJ0T2Zmc2V0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVuZGVybGluZS5lbmRPZmZzZXQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodW5kZXJsaW5lLnRoaWNrKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVuZGVybGluZS5jb21wb3NpdGlvblVuZGVybGluZUNvbG9yKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVuZGVybGluZS5jb2xvcikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
dW5kZXJsaW5lOwogfQpAQCAtMTgxMCwxMiArMTgxMCwxMiBAQCBPcHRpb25hbDxEaWN0YXRpb25B
bHRlcm5hdGl2ZT4gQXJndW1lbnRDb2RlcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT46OmRlY29kZShE
ZWNvZAogICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+
IHJhbmdlOwogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxEaWN0YXRpb25Db250
ZXh0PiBjb250ZXh0OwogICAgIGRlY29kZXIgPj4gY29udGV4dDsKICAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4ge3sgKnJhbmdlLCAqY29udGV4dCB9fTsKIH0KQEAgLTE5MTUsMTcg
KzE5MTUsMTcgQEAgT3B0aW9uYWw8R3JhbW1hckRldGFpbD4gQXJndW1lbnRDb2RlcjxHcmFtbWFy
RGV0YWlsPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVy
UmFuZ2U+IHJhbmdlOwogICAgIGRlY29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBndWVzc2VzOwogICAgIGRlY29kZXIgPj4g
Z3Vlc3NlczsKICAgICBpZiAoIWd1ZXNzZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHVz
ZXJEZXNjcmlwdGlvbjsKICAgICBkZWNvZGVyID4+IHVzZXJEZXNjcmlwdGlvbjsKICAgICBpZiAo
IXVzZXJEZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgKnJhbmdlLCBXVEZNb3ZlKCpn
dWVzc2VzKSwgV1RGTW92ZSgqdXNlckRlc2NyaXB0aW9uKSB9IH07CiB9CkBAIC0xOTcyLDIyICsx
OTcyLDIyIEBAIE9wdGlvbmFsPFRleHRDaGVja2luZ1Jlc3VsdD4gQXJndW1lbnRDb2RlcjxUZXh0
Q2hlY2tpbmdSZXN1bHQ+OjpkZWNvZGUoRGVjb2RlciYKIHsKICAgICBUZXh0Q2hlY2tpbmdUeXBl
IHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxDaGFyYWN0ZXJSYW5nZT4gcmFuZ2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBp
ZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdyYW1tYXJEZXRhaWw+PiBkZXRh
aWxzOwogICAgIGRlY29kZXIgPj4gZGV0YWlsczsKICAgICBpZiAoIWRldGFpbHMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxTdHJpbmc+IHJlcGxhY2VtZW50OwogICAgIGRlY29kZXIgPj4gcmVwbGFjZW1l
bnQ7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgdHlwZSwgKnJh
bmdlLCBXVEZNb3ZlKCpkZXRhaWxzKSwgV1RGTW92ZSgqcmVwbGFjZW1lbnQpIH0gfTsKIH0KQEAg
LTI0MDcsMjYgKzI0MDcsMjYgQEAgT3B0aW9uYWw8QmxvYlBhcnQ+IEFyZ3VtZW50Q29kZXI8Qmxv
YlBhcnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxCbG9iUGFydDo6
VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgc3dpdGNoICgqdHlwZSkgewogICAgIGNhc2UgQmxvYlBhcnQ6OlR5cGU6OkRhdGE6IHsKICAg
ICAgICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOwogICAgICAgICBkZWNvZGVyID4+
IGRhdGE7CiAgICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQmxv
YlBhcnQoV1RGTW92ZSgqZGF0YSkpOwogICAgIH0KICAgICBjYXNlIEJsb2JQYXJ0OjpUeXBlOjpC
bG9iOiB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJs
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQmxvYlBhcnQodXJsKTsKICAgICB9CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dElu
ZGljYXRvckRhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dEluZGljYXRv
ckRhdGEmIHRleHRJbmRpY2F0b3JEYXRhKQpAQCAtMjQ0OSwzNyArMjQ0OSwzNyBAQCBPcHRpb25h
bDxUZXh0SW5kaWNhdG9yRGF0YT4gQXJndW1lbnRDb2RlcjxUZXh0SW5kaWNhdG9yRGF0YT46OmRl
Y29kZShEZWNvZGVyJiBkZQogewogICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3JE
YXRhOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEuc2VsZWN0aW9u
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHRleHRJbmRpY2F0b3JEYXRhLnRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0UmVj
dHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2VTY2FsZUZhY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLmVzdGltYXRlZEJhY2tncm91bmRDb2xvcikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLnByZXNlbnRhdGlv
blRyYW5zaXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9y
RGF0YS5vcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVy
LCB0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVP
cHRpb25hbEltYWdlKGRlY29kZXIsIHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhI
aWdobGlnaHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIHRl
eHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHRleHRJbmRpY2F0b3JEYXRhOwogfQpAQCAtMjY0MywxMDYgKzI2NDMsMTA2IEBAIE9w
dGlvbmFsPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz46OmRlY29kZShECiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmFibGVEb21haW47CiAgICAg
aWYgKCFyZWdpc3RyYWJsZURvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnJlZ2lzdHJhYmxlRG9t
YWluID0gV1RGTW92ZSgqcmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgZG91YmxlIGxhc3RTZWVu
VGltZUFzRG91YmxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdFNlZW5UaW1lQXNEb3Vi
bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHN0YXRpc3RpY3MubGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29u
ZHMobGFzdFNlZW5UaW1lQXNEb3VibGUpOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24K
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFzRG91YmxlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWVBc0Rv
dWJsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgc3RhdGlzdGljcy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZUFz
RG91YmxlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5ncmFuZGZhdGhl
cmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIFN0b3JhZ2UgYWNjZXNzCiAgICAgT3B0aW9uYWw8SGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluczsKICAg
ICBkZWNvZGVyID4+IHN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBpZiAo
IXN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyA9IFdURk1vdmUoKnN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyk7CiAKICAgICAvLyBUb3AgZnJhbWUgc3RhdHMKICAgICBPcHRp
b25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
bzsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgaWYgKCF0
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUbyA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOwogCiAg
ICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbTsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbTsK
ICAgICBpZiAoIXRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNz
LnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbSA9IFdURk1vdmUoKnRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RzRnJvbSk7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4g
dG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0czsKICAgICBkZWNvZGVyID4+IHRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CiAgICAgaWYgKCF0b3BGcmFtZUxvYWRlZFRoaXJkUGFy
dHlTY3JpcHRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MudG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2Ny
aXB0cyA9IFdURk1vdmUoKnRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMpOwogCiAgICAg
Ly8gU3ViZnJhbWUgc3RhdHMKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
Pj4gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBkZWNvZGVyID4+IHN1YmZyYW1l
VW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21h
aW5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyA9IFdU
Rk1vdmUoKnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gU3VicmVzb3Vy
Y2Ugc3RhdHMKICAgICBPcHRpb25hbDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWluczsKICAgICBkZWNvZGVyID4+IHN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyA9
IFdURk1vdmUoKnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgT3B0aW9u
YWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG87CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGlm
ICghc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKIAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2RlciA+PiBzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgaWYgKCFzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zy
b20pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSBX
VEZNb3ZlKCpzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCiAgICAgLy8gUHJldmFs
ZW50IFJlc291cmNlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzUHJldmFs
ZW50UmVzb3VyY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlz
VmVyeVByZXZhbGVudFJlc291cmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MuZGF0YVJlY29yZHNSZW1vdmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoV0VC
X0FQSV9TVEFUSVNUSUNTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5mb250
c0ZhaWxlZFRvTG9hZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLmZvbnRzU3VjY2Vzc2Z1bGx5TG9hZGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVSZWdpc3RyYWJsZURvbWFpbnNXaGljaEFjY2Vzc2Vk
V2ViQVBJcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmNh
bnZhc0FjdGl2aXR5UmVjb3JkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MubmF2aWdhdG9yRnVuY3Rpb25zQWNjZXNzZWQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zY3JlZW5GdW5jdGlvbnNBY2Nlc3NlZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZW5kaWYKIAogICAgIHJldHVybiBzdGF0aXN0aWNzOwpAQCAtMjg3NywxMiArMjg3NywxMiBAQCBP
cHRpb25hbDxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj46OmRlY29kZShEZWNvZAogICAgIE9wdGlvbmFsPFN0cmluZz4gZGlzcGxheU5hbWU7
CiAgICAgZGVjb2RlciA+PiBkaXNwbGF5TmFtZTsKICAgICBpZiAoIWRpc3BsYXlOYW1lKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIE9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB0eXBlOwogICAg
IGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7
IFdURk1vdmUoKmRpc3BsYXlOYW1lKSwgV1RGTW92ZSgqdHlwZSkgfX07CiB9CkBAIC0yOTE3LDcg
KzI5MTcsNyBAQCBPcHRpb25hbDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBBcmd1bWVudENvZGVy
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+OjpkZWNvZGUoRAogewogICAgIGF1dG8gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIW9yaWdpbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gb3JpZ2luOwogfQogCkBAIC0yOTM5LDMyICsyOTM5LDMyIEBAIE9wdGlvbmFsPEZv
bnRBdHRyaWJ1dGVzPiBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgRm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZvcmVncm91bmRDb2xvcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZm9udFNoYWRvdykpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy50ZXh0TGlzdHMpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmhvcml6b250YWxBbGlnbm1lbnQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnN1YnNjcmlwdE9yU3VwZXJzY3JpcHQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYm9vbCBoYXNQbGF0Zm9ybURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSho
YXNQbGF0Zm9ybURhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEpCiAgICAgICAgIHJl
dHVybiBkZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgYXR0cmlidXRlcyk7CiAKQEAgLTI5ODIs
MTUgKzI5ODIsMTUgQEAgT3B0aW9uYWw8U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRBdHRhY2htZW50RGEKIHsKICAgICBTdHJpbmcgaWRl
bnRpZmllcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
U3RyaW5nIG1pbWVUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKG1p
bWVUeXBlKSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEu
c2l6ZSgpKSB9fTsKIH0KQEAgLTMwMTIsMTEgKzMwMTIsMTEgQEAgT3B0aW9uYWw8U2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbGl6ZWRQ
bGF0Zm8KIHsKICAgICBib29sIGhhc1BsYXRmb3JtRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc1BsYXRmb3JtRGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU6OlBsYXRmb3JtVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKQogICAgICAgICByZXR1cm4g
ZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIHR5cGUpOwpAQCAtMzAzNSw3ICszMDM1LDcgQEAg
T3B0aW9uYWw8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWMKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBidWZmZXI7CiB9CkBAIC0zMDQ5LDcgKzMwNDksNyBAQCBPcHRpb25hbDxSZWY8
U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAo
IWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CiB9CkBAIC0zMDc4LDEwICszMDc4LDEw
IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZVNjcmlwdEJ1
ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kCiB7CiAgICAgU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSBoYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYW5kbGUpIHx8IGhhbmRsZS5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBhdXRvIGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZm
ZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gV2ViQ29yZTo6U2NyaXB0QnVm
ZmVyIHsgV1RGTW92ZShidWZmZXIpIH07CiB9CiAjZW5kaWYKQEAgLTMxMDYsMTQgKzMxMDYsMTQg
QEAgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlcj46OmRlY29kZShEZWMKICAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlOwogICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZTsKICAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCppc1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKQogICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVy
QXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCiAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29k
ZXIsIGJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHsgV1RG
TW92ZShidWZmZXIpIH07CiB9CkBAIC0zMTMxLDEzICszMTMxLDEzIEBAIE9wdGlvbmFsPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Q0RNSW5zdGFuCiB7CiAgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlVHlw
ZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8
ICFidWZmZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4oeyB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSB9KTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogCkBAIC0zMTY2LDM0ICszMTY2LDM0IEBAIE9w
dGlvbmFsPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcz4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpHcmFwaGljc0NvCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFscGhhKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGVwdGgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdGVuY2lsKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYW50aWFsaWFzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGllZEFscGhhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGF0dHJpYnV0ZXMucHJlc2VydmVEcmF3aW5nQnVmZmVyKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnBvd2VyUHJlZmVyZW5jZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnNoYXJlUmVzb3VyY2VzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMud2ViR0xWZXJzaW9uKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMubm9FeHRlbnNpb25zKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuZGV2aWNlUGl4ZWxSYXRpbykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmluaXRpYWxQb3dlclByZWZlcmVuY2UpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2lmIEVOQUJMRShXRUJYUikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMu
eHJDb21wYXRpYmxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQpAQCAt
MzIxNSwxMSArMzIxNSwxMSBAQCBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6
QWN0aXZlSW5mbz4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljcwogewogICAgIFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMOjpBY3RpdmVJbmZvIGFjdGl2ZUluZm87CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWN0aXZlSW5mby50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUlu
Zm8uc2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGFjdGl2ZUluZm87CiB9CiAKQEAgLTMyMzcsMTIgKzMy
MzcsMTIgQEAgT3B0aW9uYWw8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbz4gQXJndW1l
bnRDb2RlcjxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWMKIHsKICAgICBJbWFnZUV4dHJhY3Rpb25E
YXRhRGV0ZWN0b3JJbmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZVBsYXRmb3JtRGF0YShkZWNv
ZGVyLCByZXN1bHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UXVhZD4+IG5vcm1h
bGl6ZWRRdWFkczsKICAgICBkZWNvZGVyID4+IG5vcm1hbGl6ZWRRdWFkczsKICAgICBpZiAoIW5v
cm1hbGl6ZWRRdWFkcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJlc3VsdC5ub3JtYWxpemVkUXVhZHMgPSBXVEZNb3Zl
KCpub3JtYWxpemVkUXVhZHMpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4
IGZiMmE2ZmI5MTRjN2Y5NmRjYzkzNzQzN2EwMjQ4Mzk5OTdiNTcyYjUuLmFiODY5YjQxMDc3YjJk
YmEyODFkNDJjMTQ2MWQ5ZWUzZDlhZTg4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xOTIsMTYzICsxOTIsMTYzIEBA
IE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdTaXpl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWN0aXZpdHlTdGF0ZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnN0b3JlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZHJhd2luZ0FyZWFUeXBlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBP
cHRpb25hbDxEcmF3aW5nQXJlYUlkZW50aWZpZXI+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGRyYXdpbmdBcmVhSWRlbnRpZmllcjsKICAgICBpZiAoIWRyYXdpbmdBcmVh
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmRyYXdpbmdBcmVhSWRlbnRpZmllciA9ICpk
cmF3aW5nQXJlYUlkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmll
cj4gd2ViUGFnZVByb3h5SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHdlYlBhZ2VQcm94eUlk
ZW50aWZpZXI7CiAgICAgaWYgKCF3ZWJQYWdlUHJveHlJZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMud2ViUGFnZVByb3h5SWRlbnRpZmllciA9IFdURk1vdmUoKndlYlBhZ2VQcm94eUlkZW50
aWZpZXIpOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IHBhZ2VHcm91cERhdGE7CiAg
ICAgZGVjb2RlciA+PiBwYWdlR3JvdXBEYXRhOwogICAgIGlmICghcGFnZUdyb3VwRGF0YSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBXVEZNb3ZlKCpwYWdlR3JvdXBEYXRhKTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaXNFZGl0YWJsZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVuZGVybGF5Q29sb3IpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VGaXhlZExheW91dCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZpeGVkTGF5b3V0U2l6ZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NWZXJ0
aWNhbFNjcm9sbGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFn
aW5hdGlvbk1vZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdp
bmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMucGFnZUxlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmdhcEJldHdlZW5QYWdlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiB1c2VyQWdlbnQ7CiAgICAgZGVjb2RlciA+PiB1c2VyQWdlbnQ7CiAgICAgaWYgKCF1c2VyQWdl
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyQWdlbnQgPSBXVEZNb3ZlKCp1c2VyQWdlbnQpOwog
CiAgICAgT3B0aW9uYWw8Ym9vbD4gaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdDsK
ICAgICBkZWNvZGVyID4+IGl0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVlc3Q7CiAgICAg
aWYgKCFpdGVtU3RhdGVzV2VyZVJlc3RvcmVkQnlBUElSZXF1ZXN0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdCA9ICppdGVtU3RhdGVzV2VyZVJl
c3RvcmVkQnlBUElSZXF1ZXN0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZT4+IGl0ZW1TdGF0ZXM7CiAgICAgZGVjb2RlciA+PiBpdGVtU3RhdGVzOwogICAg
IGlmICghaXRlbVN0YXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMgPSBXVEZNb3Zl
KCppdGVtU3RhdGVzKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aXNp
dGVkTGlua1RhYmxlSUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5jYW5SdW5Nb2RhbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudmlld1NjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMudGV4dFpvb21GYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5wYWdlWm9vbUZhY3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLnRvcENvbnRlbnRJbnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLm1lZGlhVm9sdW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncz4gbXV0ZWRTdGF0ZUZsYWdzOwogICAgIGRlY29kZXIg
Pj4gbXV0ZWRTdGF0ZUZsYWdzOwogICAgIGlmICghbXV0ZWRTdGF0ZUZsYWdzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMubXV0ZWQgPSAqbXV0ZWRTdGF0ZUZsYWdzOwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5taW5pbXVtU2l6ZUZvckF1dG9MYXlv
dXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaXplVG9Db250ZW50
QXV0b1NpemVNYXhpbXVtU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQzMl90Pj4gc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlOwogICAgIGRlY29kZXIgPj4gc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwogICAgIGlm
ICghc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlID0gV1RGTW92ZSgqc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKTsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWltZVR5cGVzV2l0aEN1c3Rv
bUNvbnRlbnRQcm92aWRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5jb250cm9sbGVkQnlBdXRvbWF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuaXNQcm9jZXNzU3dhcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gaGFzUmVzb3VyY2VMb2FkQ2xpZW50OwogICAgIGRlY29kZXIgPj4gaGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50OwogICAgIGlmICghaGFzUmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2Fk
Q2xpZW50KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBPcHRpb25hbDxPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29sb3JTcGFj
ZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb2xvclNwYWNlID0g
V1RGTW92ZSgqY29sb3JTcGFjZSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnVzZVN5c3RlbUFwcGVhcmFuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVUQV9WSUVX
UE9SVCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWdub3Jlc1ZpZXdwb3J0
U2NhbGVMaW1pdHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3
cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvbkxheW91dFNpemVTY2FsZUZhY3Rv
cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmln
dXJhdGlvbk1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnZpZXdwb3J0Q29uZmlndXJhdGlvblZpZXdTaXplKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4+IG92ZXJyaWRl
Vmlld3BvcnRBcmd1bWVudHM7CiAgICAgZGVjb2RlciA+PiBvdmVycmlkZVZpZXdwb3J0QXJndW1l
bnRzOwogICAgIGlmICghb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0
ZXJzLm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgPSBXVEZNb3ZlKCpvdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzKTsKICNlbmRpZgogCkBAIC0zNTYsNjEgKzM1Niw2MSBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5Pj4gYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIg
Pj4gYXR0YWNobWVudEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzOwogICAgIGlmICghYXR0YWNobWVu
dEVsZW1lbnRFeHRlbnNpb25IYW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYXR0YWNobWVudEVs
ZW1lbnRFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqYXR0YWNobWVudEVsZW1lbnRFeHRlbnNp
b25IYW5kbGVzKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2NyZWVuU2l6ZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmF2YWlsYWJsZVNjcmVlblNpemUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZVNjcmVlblNpemUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXh0QXV0b3NpemluZ1dpZHRoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWF4aW11bVVub2JzY3VyZWRTaXplKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRpb24p
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5rZXlib2FyZElzQXR0YWNo
ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jYW5TaG93V2hpbGVM
b2NrZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5pc0NhcHR1cmlu
Z1NjcmVlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5zbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRSgyMDc3MTYpOiBUaGUgZm9sbG93aW5nIHNob3VsZCBi
ZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlzIGNvbXBsZXRlLgogICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgZGVjb2RlciA+PiBtZWRpYUV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFtZWRpYUV4dGVu
c2lvbkhhbmRsZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5tZWRpYUV4dGVuc2lvbkhhbmRsZXMgPSBX
VEZNb3ZlKCptZWRpYUV4dGVuc2lvbkhhbmRsZXMpOwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVzOwogICAgIGRl
Y29kZXIgPj4gbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgaWYgKCFtZWRpYUlPS2l0
RXh0ZW5zaW9uSGFuZGxlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRlbnNpb25I
YW5kbGVzID0gV1RGTW92ZSgqbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMpOwogICAgIC8vIEZJ
WE1FKDIwNzcxNik6IEVuZCByZWdpb24gdG8gcmVtb3ZlLgogCiAgICAgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBk
ZWNvZGVyID4+IGdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdUlPS2l0RXh0
ZW5zaW9uSGFuZGxlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxl
cyA9IFdURk1vdmUoKmdwdUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyk7CiAKICAgICBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgZGVjb2RlciA+PiBncHVNYWNoRXh0ZW5zaW9uSGFuZGxlczsKICAgICBpZiAoIWdwdU1hY2hF
eHRlbnNpb25IYW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRs
ZXMgPSBXVEZNb3ZlKCpncHVNYWNoRXh0ZW5zaW9uSGFuZGxlcyk7CiAjZW5kaWYKIApAQCAtNDE4
LDE4NSArNDE4LDE4NSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4+IGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxl
OwogICAgIGRlY29kZXIgPj4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFmb250
TWFjaEV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICNp
ZiBIQVZFKEFQUF9BQ0NFTlRfQ09MT1JTKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5hY2NlbnRDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShXUEVfUkVOREVSRVIpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmhvc3RGaWxlRGVzY3JpcHRvcikpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMubmF0aXZlV2luZG93SGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vYnNlcnZl
ZExheW91dE1pbGVzdG9uZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9w
dGlvbmFsPGRvdWJsZT4+IGNwdUxpbWl0OwogICAgIGRlY29kZXIgPj4gY3B1TGltaXQ7CiAgICAg
aWYgKCFjcHVMaW1pdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNwdUxpbWl0ID0gV1RGTW92ZSgqY3B1
TGltaXQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZUhh
bmRsZXJzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gdXJsU2NoZW1l
c1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGRlY29kZXIgPj4gdXJsU2No
ZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzOwogICAgIGlmICghdXJsU2NoZW1l
c1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXJs
U2NoZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzID0gV1RGTW92ZSgqdXJsU2No
ZW1lc1dpdGhMZWdhY3lDdXN0b21Qcm90b2NvbEhhbmRsZXJzKTsKIAogI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0Pj4gYXBwbGljYXRpb25NYW5pZmVzdDsKICAgICBkZWNvZGVyID4+IGFwcGxp
Y2F0aW9uTWFuaWZlc3Q7CiAgICAgaWYgKCFhcHBsaWNhdGlvbk1hbmlmZXN0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IFdURk1vdmUoKmFwcGxpY2F0aW9uTWFuaWZl
c3QpOwogI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5lZWRzRm9u
dEF0dHJpYnV0ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlj
ZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXNFbmFibGVkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnM+IHVzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRy
b2xsZXJQYXJhbWV0ZXJzOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVy
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlclBhcmFtZXRlcnMgPSBX
VEZNb3ZlKCp1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzKTsKIAogICAgIE9wdGlvbmFs
PE9wdGlvbmFsPFdlYkNvcmU6OkNvbG9yPj4gYmFja2dyb3VuZENvbG9yOwogICAgIGRlY29kZXIg
Pj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAog
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlE
OwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMub2xkUGFnZUlEID0gV1RGTW92ZSgqb2xkUGFnZUlEKTsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAgZGVj
b2RlciA+PiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAgaWYgKCFjb3JzRGlzYWJsaW5nUGF0
dGVybnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3Zl
KCpjb3JzRGlzYWJsaW5nUGF0dGVybnMpOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gbG9hZHNTdWJy
ZXNvdXJjZXM7CiAgICAgZGVjb2RlciA+PiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBpZiAoIWxv
YWRzU3VicmVzb3VyY2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSAq
bG9hZHNTdWJyZXNvdXJjZXM7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGRlY29kZXIgPj4gYWxsb3dlZE5ldHdvcmtI
b3N0czsKICAgICBpZiAoIWFsbG93ZWROZXR3b3JrSG9zdHMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5h
bGxvd2VkTmV0d29ya0hvc3RzID0gKmFsbG93ZWROZXR3b3JrSG9zdHM7CiAKICAgICBPcHRpb25h
bDxib29sPiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBkZWNv
ZGVyID4+IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIGlmICgh
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9ICp1c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBjcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2xDaGVja0VuYWJsZWQgPSAqY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkOwogICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAg
IGRlY29kZXIgPj4gcHJvY2Vzc0Rpc3BsYXlOYW1lOwogICAgIGlmICghcHJvY2Vzc0Rpc3BsYXlO
YW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHBhcmFtZXRlcnMucHJvY2Vzc0Rpc3BsYXlOYW1lID0gV1RGTW92ZSgqcHJv
Y2Vzc0Rpc3BsYXlOYW1lKTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luR1BVUHJvY2VzcykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZVZpZGVvSW5V
SVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZENhcHR1cmVWaWRlb0luR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyQ2FudmFzSW5HUFVQcm9j
ZXNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5k
ZXJET01JbkdQVVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFBsYXlNZWRpYUluR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjaWYgRU5BQkxFKFdFQkdMKQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZW5kZXJXZWJHTEluR1BV
UHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy5zaG91bGRFbmFibGVWUDhEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVWUDlTV0RlY29kZXIpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRSZWxheFRo
aXJkUGFydHlDb29raWVCbG9ja2luZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oR1RL
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50aGVtZU5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaHR0cHNVcGdyYWRlRW5h
YmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmFsbG93c0RlcHJlY2F0ZWRTeW5jaHJvbm91c1hNTEh0dHBSZXF1ZXN0RHVyaW5n
VW5sb2FkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCmluZGV4IDA2ZGRiZWY1ZDc1YTNhZDY3NWUx
MTIyYzhkMjFhOTQ1MzM2MThkMjYuLmIwOWYxYzI5YTcyMTA1OTUwMzM3MWM5YWVkY2FhMGE3MzVk
NGM1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC00
MSwxMiArNDEsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3VwRGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGlk
ZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmll
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUdyb3VwSUQ7CiAgICAgZGVj
b2RlciA+PiBwYWdlR3JvdXBJRDsKICAgICBpZiAoIXBhZ2VHcm91cElEKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAK
ICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksICpwYWdlR3JvdXBJRCB9fTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCmluZGV4
IGNlNzRhYmZmOTFjYzY5Y2IwOTI4NDM0OTMyNGZhNDgwOGE2M2ZmOTAuLjlkNDQwNmE0MGE0ZmFk
ZGZiMzBjMmU2MDE4NWYyOGYzYWEzMmY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50LmNwcApAQCAtNjksMTkgKzY5LDE5IEBAIE9wdGlvbmFsPFdl
YlBsYXRmb3JtVG91Y2hQb2ludD4gV2ViUGxhdGZvcm1Ub3VjaFBvaW50OjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvCiB7CiAgICAgV2ViUGxhdGZvcm1Ub3VjaFBvaW50IHJlc3VsdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2lkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX3N0YXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X3NjcmVlblBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Bv
c2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JhZGl1cykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yb3RhdGlvbkFuZ2xlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2ZvcmNlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAppbmRleCA2ZmI3YTVj
YjA0OGVmYTFlMmJkNWJjNWE3YThhMDY4MjUzYTMyZTBlLi4xMzgxNjVhMzUwNDU0YTVlMzYyZjdh
YjY5MDA0YjMyZThmZTM5MzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
b3B1cEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAK
QEAgLTgwLDM5ICs4MCwzOSBAQCBPcHRpb25hbDxXZWJQb3B1cEl0ZW0+IFdlYlBvcHVwSXRlbTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBUeXBlIHR5cGU7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyB0ZXh0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6VGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dERpcmVjdGlvbikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgdG9v
bFRpcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRvb2xUaXApKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5n
IGFjY2Vzc2liaWxpdHlUZXh0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWNjZXNzaWJpbGl0
eVRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYm9vbCBpc0VuYWJsZWQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpc0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBpc0xhYmVsOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaXNMYWJlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGlzU2VsZWN0ZWQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShpc1NlbGVjdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyB0eXBlLCB0ZXh0LCB0
ZXh0RGlyZWN0aW9uLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2li
aWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQgfX07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaApp
bmRleCA2ZjEyNWY5ODJkMGNjZTZlMzcxZDZkOGRhYjhkY2UzNjgzYzlmNTE0Li4xZGE1ZTMwYTI0
MzZlOWYwZmI1YzAwMzkwMDIxZTlmNDNlMDhkN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTg1LDY4ICs4NSw2
OCBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklE
PiBzZXNzaW9uSUQ7CiAgICAgZGVjb2RlciA+PiBzZXNzaW9uSUQ7CiAgICAgaWYgKCFzZXNzaW9u
SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3Vi
ZGlyZWN0b3J5TmFtZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFwcGxpY2F0aW9uQ2FjaGVG
bGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJl
Y3Rvcnk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUNhY2hlRGlyZWN0b3J5KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgU3RyaW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gamF2YVNj
cmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBp
ZiAoIWphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU7CiAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOwogICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
OwogICAgIGlmICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8SGFzaE1hcDxUb3BGcmFtZURvbWFpbiwgU3ViUmVzb3VyY2VEb21haW4+PiBkb21haW5z
V2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoU3RvcmFn
ZUFjY2Vzc1F1aXJrOwogICAgIGlmICghZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcmspCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAg
ICAgIFdURk1vdmUoKnNlc3Npb25JRCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAppbmRleCAyMjBiNWY5
MDA5MmVmZDZjOTMwYTE4OTAzZDU5ZDlmOWFmYTFkYzdhLi42ODBiNjJmMjE2NzA5MGQwODMwZDg1
OWE2ZGVmYzZjOTcxNzI4ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHAKQEAgLTQyLDE3ICs0Miwx
NyBAQCBPcHRpb25hbDxXZWJVc2VyU2NyaXB0RGF0YT4gV2ViVXNlclNjcmlwdERhdGE6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50
aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VXNlclNjcmlwdD4gdXNlclNj
cmlwdDsKICAgICBkZWNvZGVyID4+IHVzZXJTY3JpcHQ7CiAgICAgaWYgKCF1c2VyU2NyaXB0KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqd29y
bGRJZGVudGlmaWVyKSwgV1RGTW92ZSgqdXNlclNjcmlwdCkgfX07CiB9CkBAIC02OSwxNiArNjks
MTYgQEAgT3B0aW9uYWw8V2ViVXNlclN0eWxlU2hlZXREYXRhPiBXZWJVc2VyU3R5bGVTaGVldERh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY28KICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIAogICAgIE9wdGlvbmFsPENvbnRlbnRXb3JsZElkZW50aWZpZXI+IHdvcmxkSWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IHdvcmxkSWRlbnRpZmllcjsKICAgICBpZiAoIXdvcmxk
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5
bGVTaGVldDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVzZXJTdHlsZVNoZWV0KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKndvcmxkSWRl
bnRpZmllciksIFdURk1vdmUodXNlclN0eWxlU2hlZXQpIH19OwogfQpAQCAtOTYsMTcgKzk2LDE3
IEBAIE9wdGlvbmFsPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YT4gV2ViU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJEYXRhOjpkZWNvZGUoSVBDOjpECiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBPcHRpb25hbDxDb250ZW50V29ybGRJZGVudGlmaWVyPiB3b3JsZElkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3b3JsZElkZW50aWZpZXI7CiAgICAgaWYgKCF3b3JsZElk
ZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29k
ZXIgPj4gbmFtZTsKICAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKm5hbWUpIH19
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxl
c2Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNw
cAppbmRleCBiNTBmOTk5MzZkYzgwMjYxMDg1YTljMDdiMmNlNDhmYTczM2U5MzdkLi5jNGY4M2Vj
MjY5ZjdmN2MxY2YyNjExMjg5NmM4NGI3OWRkZTIxOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJXaGVlbEV2ZW50Q29hbGVzY2VyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIGJv
b2wgV2ViV2hlZWxFdmVudENvYWxlc2Nlcjo6c2hvdWxkRGlzcGF0Y2hFdmVudE5vdyhjb25zdCBX
ZWJXaGVlbEV2ZW50JiBldmVudCkKIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ+IFdlYldoZWVsRXZl
bnRDb2FsZXNjZXI6Om5leHRFdmVudFRvRGlzcGF0Y2goKQogewogICAgIGlmIChtX3doZWVsRXZl
bnRRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNvYWxlc2NlZEV2ZW50ID0gbV93aGVl
bEV2ZW50UXVldWUudGFrZUZpcnN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAppbmRleCA3Y2U0ZWIzNGIzZTU1YWYxZWFkNDcwOWRi
ZDJhOWJjYjVjZTBkZWFiLi44ZGZhYTNkYzkwOTA0YTJiYzFmMWFiM2EyMjE3NGJkMWI1MGU5ZTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEu
Y3BwCkBAIC00OSwxNCArNDksMTQgQEAgYXV0byBXZWJzaXRlRGF0YTo6RW50cnk6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlvbmFsPEVudHJ5PgogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIGRlY29k
ZXIgPj4gc2VjdXJpdHlPcmlnaW5EYXRhOwogICAgIGlmICghc2VjdXJpdHlPcmlnaW5EYXRhKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5vcmlnaW4gPSBXVEZNb3ZlKCpzZWN1cml0eU9yaWdpbkRhdGEpOwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5zaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAK
aW5kZXggZjA1OTJkNmI2ZTY2OGI2Yjc3ZTMyY2I1ZWYyMjNlY2JmYTk0ZWFhOC4uY2IyZTY3MGYx
NTc0NTUxMzFkM2VkYTUyZTNiYzMzZjg0YjE4MDJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcApAQCAtNjEsODcgKzYxLDg3
IEBAIE9wdGlvbmFsPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjCiAgICAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM+IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICBkZWNvZGVy
ID4+IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IFdU
Rk1vdmUoKm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogICAgIGRlY29kZXIg
Pj4gdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAgICAgaWYgKCF1aVByb2Nlc3ND
b29raWVTdG9yYWdlSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0Nvb2tp
ZVN0b3JhZ2VJZGVudGlmaWVyID0gV1RGTW92ZSgqdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50
aWZpZXIpOwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjb29raWVT
dG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGNvb2tpZVN0b3JhZ2VQ
YXRoRXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25I
YW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRs
ZSA9IFdURk1vdmUoKmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIE9w
dGlvbmFsPFN0cmluZz4gaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4g
aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGlmICghaW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHBhcmFtZXRlcnMuaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5ID0gV1RGTW92
ZSgqaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKICAgICAKICAgICBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBpZiAoIWluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoKmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5OwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
aXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5ID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSk7CiAg
ICAgCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGRlY29kZXIgPj4gc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAo
IXNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2VydmljZVdvcmtlclByb2Nl
c3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQ7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA9IFdURk1vdmUoKnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpOwogI2VuZGlmCiAKICAgICBPcHRpb25h
bDxTdHJpbmc+IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURp
cmVjdG9yeSk7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGxvY2Fs
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGxvY2FsU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmxvY2FsU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmxvY2FsU3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGNhY2hlU3RvcmFnZURpcmVjdG9y
eTsKICAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAoIWNhY2hl
U3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9y
eSA9IFdURk1vdmUoKmNhY2hlU3RvcmFnZURpcmVjdG9yeSk7CiAKICAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IGNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsK
ICAgICBpZiAoIWNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUo
KmNhY2hlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGVyT3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIGRlY29kZXIgPj4gcGVyT3JpZ2lu
U3RvcmFnZVF1b3RhOwogICAgIGlmICghcGVyT3JpZ2luU3RvcmFnZVF1b3RhKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMucGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gKnBlck9yaWdpblN0b3JhZ2VRdW90YTsK
IAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
OwogICAgIGRlY29kZXIgPj4gcGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBp
ZiAoIXBlclRoaXJkUGFydHlPcmlnaW5TdG9yYWdlUXVvdGEpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5w
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhID0gKnBlclRoaXJkUGFydHlPcmlnaW5TdG9y
YWdlUXVvdGE7CiAgICAgCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwCmluZGV4IGQ0Nzc1M2IzOTA0ZDhiMjljZWUy
Y2FhNWJlZDhmMjFmMTBmYTQwZDMuLjRhNWZlMTRmMmVhNGY4NThmZGEyYzdkZWE5Y2RmNzhiZjFh
M2FlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3Bw
CkBAIC02MSw4OSArNjEsODkgQEAgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gV2Vic2l0
ZVBvbGljaWVzRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25h
bDxib29sPiBjb250ZW50QmxvY2tlcnNFbmFibGVkOwogICAgIGRlY29kZXIgPj4gY29udGVudEJs
b2NrZXJzRW5hYmxlZDsKICAgICBpZiAoIWNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8V2Vic2l0ZUF1dG9wbGF5UG9saWN5PiBhdXRvcGxheVBvbGljeTsKICAg
ICBkZWNvZGVyID4+IGF1dG9wbGF5UG9saWN5OwogICAgIGlmICghYXV0b3BsYXlQb2xpY3kpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGU+IGRldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uQWNjZXNzU3RhdGU7CiAgICAgZGVjb2RlciA+PiBkZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwogICAgIGlmICghZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NTdGF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIAogICAgIE9wdGlvbmFsPE9wdGlvblNldDxX
ZWJzaXRlQXV0b3BsYXlRdWlyaz4+IGFsbG93ZWRBdXRvcGxheVF1aXJrczsKICAgICBkZWNvZGVy
ID4+IGFsbG93ZWRBdXRvcGxheVF1aXJrczsKICAgICBpZiAoIWFsbG93ZWRBdXRvcGxheVF1aXJr
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q3VzdG9tSGVhZGVyRmll
bGRzPj4gY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIGRlY29kZXIgPj4gY3VzdG9tSGVhZGVyRmll
bGRzOwogICAgIGlmICghY3VzdG9tSGVhZGVyRmllbGRzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vi
c2l0ZVBvcFVwUG9saWN5PiBwb3BVcFBvbGljeTsKICAgICBkZWNvZGVyID4+IHBvcFVwUG9saWN5
OwogICAgIGlmICghcG9wVXBQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGN1c3Rv
bVVzZXJBZ2VudDsKICAgICBkZWNvZGVyID4+IGN1c3RvbVVzZXJBZ2VudDsKICAgICBpZiAoIWN1
c3RvbVVzZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50
QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgZGVjb2RlciA+PiBjdXN0b21Vc2VyQWdlbnRBc1Np
dGVTcGVjaWZpY1F1aXJrczsKICAgICBpZiAoIWN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmlj
UXVpcmtzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjdXN0b21OYXZpZ2F0b3JQbGF0Zm9y
bTsKICAgICBkZWNvZGVyID4+IGN1c3RvbU5hdmlnYXRvclBsYXRmb3JtOwogICAgIGlmICghY3Vz
dG9tTmF2aWdhdG9yUGxhdGZvcm0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJzaXRlTWV0YVZpZXdw
b3J0UG9saWN5PiBtZXRhVmlld3BvcnRQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBtZXRhVmlld3Bv
cnRQb2xpY3k7CiAgICAgaWYgKCFtZXRhVmlld3BvcnRQb2xpY3kpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3k+IG1lZGlhU291cmNlUG9saWN5OwogICAgIGRlY29k
ZXIgPj4gbWVkaWFTb3VyY2VQb2xpY3k7CiAgICAgaWYgKCFtZWRpYVNvdXJjZVBvbGljeSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxXZWJzaXRlU2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBv
bGljeT4gc2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeTsKICAgICBkZWNvZGVyID4+
IHNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k7CiAgICAgaWYgKCFzaW11bGF0ZWRN
b3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vic2l0ZUxlZ2Fj
eU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hQb2xpY3k+IGxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91
Y2hQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBsZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9s
aWN5OwogICAgIGlmICghbGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IGFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcms7CiAgICAg
ZGVjb2RlciA+PiBhbGxvd0NvbnRlbnRDaGFuZ2VPYnNlcnZlclF1aXJrOwogICAgIGlmICghYWxs
b3dDb250ZW50Q2hhbmdlT2JzZXJ2ZXJRdWlyaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0PiBhbGxvd3NDb250ZW50SmF2YVNjcmlwdDsKICAgICBk
ZWNvZGVyID4+IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0OwogICAgIGlmICghYWxsb3dzQ29udGVu
dEphdmFTY3JpcHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5
PiBtb3VzZUV2ZW50UG9saWN5OwogICAgIGRlY29kZXIgPj4gbW91c2VFdmVudFBvbGljeTsKICAg
ICBpZiAoIW1vdXNlRXZlbnRQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZGVtcG90
ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXM7CiAgICAgZGVjb2RlciA+PiBp
ZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXM7CiAgICAgaWYgKCFp
ZGVtcG90ZW50TW9kZUF1dG9zaXppbmdPbmx5SG9ub3JzUGVyY2VudGFnZXMpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnND
dXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q3VybC5jcHAKaW5kZXggNTdiNjM5NTMyZGExMWE3ZDFlNWU2OGZjNGMxMzM2NGEzODJjOGNiNi4u
YWU5Yzk2OWVmODliNDViMWVlYzczNjI1M2UwYWZlNDM5MjRkN2FjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3JlQXJndW1lbnRDb2RlcnNDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJsL1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3Bw
CkBAIC0xOTUsMTggKzE5NSwxOCBAQCBPcHRpb25hbDxDdXJsUHJveHlTZXR0aW5ncz4gQXJndW1l
bnRDb2RlcjxDdXJsUHJveHlTZXR0aW5ncz46OmRlY29kZShEZWNvZGVyJiBkZQogewogICAgIEN1
cmxQcm94eVNldHRpbmdzOjpNb2RlIG1vZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2Rl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChtb2RlICE9IEN1cmxQcm94eVNldHRpbmdzOjpNb2RlOjpDdXN0b20p
CiAgICAgICAgIHJldHVybiBDdXJsUHJveHlTZXR0aW5ncyB7IG1vZGUgfTsKIAogICAgIFVSTCB1
cmw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGlnbm9y
ZUhvc3RzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWdub3JlSG9zdHMpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIEN1cmxQcm94eVNldHRpbmdzIHsgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGlnbm9yZUhv
c3RzKSB9OwogfQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYKIE9w
dGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXIm
IGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZv
cm1UeXBlIHBsYXRmb3JtVHlwZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dM
aWIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
CmluZGV4IDMwOGE3NWFjMTMyNzlhOWYyNzE4MGE2NjM1NWRiZjllMmVmZGFjZTMuLjE4ZmViYjhi
MzgyZjY2NDY3NzIyZDYzZjgyNmUwZmQ1ZDMxYzI5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBP
cHRpb25hbDxHUmVmUHRyPEdWYXJpYW50Pj4gQXJndW1lbnRDb2RlcjxHUmVmUHRyPEdWYXJpYW50
Pj46OmRlY29kZShEZWNvZGVyJiBkZQogewogICAgIENTdHJpbmcgdmFyaWFudFR5cGVTdHJpbmc7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YXJpYW50VHlwZVN0cmluZykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAodmFyaWFudFR5cGVTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBHUmVmUHRyPEdW
YXJpYW50PigpOwogCiAgICAgaWYgKCFnX3ZhcmlhbnRfdHlwZV9zdHJpbmdfaXNfdmFsaWQodmFy
aWFudFR5cGVTdHJpbmcuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIERhdGFSZWZlcmVuY2UgZGF0YTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgR1VuaXF1ZVB0cjxHVmFyaWFu
dFR5cGU+IHZhcmlhbnRUeXBlKGdfdmFyaWFudF90eXBlX25ldyh2YXJpYW50VHlwZVN0cmluZy5k
YXRhKCkpKTsKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19u
ZXcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CkBAIC0xMDAsNyArMTAwLDcgQEAgT3B0aW9u
YWw8R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1Rsc0Nl
cnRpZmljYXRlPj46OmRlY28KIHsKICAgICB1aW50MzJfdCBjaGFpbkxlbmd0aDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNoYWluTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY2hhaW5MZW5ndGgp
CiAgICAgICAgIHJldHVybiBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4oKTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBPcHRpb25hbDxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+IEFyZ3VtZW50Q29kZXI8
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+Pjo6ZGVjbwogICAgIGZvciAodWludDMyX3QgaSA9IDA7
IGkgPCBjaGFpbkxlbmd0aDsgaSsrKSB7CiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBjZXJ0
aWZpY2F0ZURhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlm
aWNhdGVEYXRhUmVmZXJlbmNlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEdSZWZQdHI8R0J5dGVB
cnJheT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHRHUmVmKGdfYnl0ZV9hcnJheV9zaXplZF9uZXco
Y2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSkpOwogICAgICAgICBnX2J5dGVfYXJyYXlf
YXBwZW5kKGNlcnRpZmljYXRlRGF0YS5nZXQoKSwgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLmRh
dGEoKSwgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAppbmRleCAxMmM4M2JmNjc3MWYxN2Mz
NDMzMWQ1MjBlODk5YTNjYTAyMDAyYTY4Li40MTBmOGZhMzhjOGYwYTM3OTNlZGRmNDAxYzFlNThj
MGVkMWNiYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0
aG9kU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RT
dGF0ZS5jcHAKQEAgLTExMyw5ICsxMTMsOSBAQCBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBJ
bnB1dE1ldGhvZFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIElu
cHV0TWV0aG9kU3RhdGUgc3RhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0ZS5wdXJw
b3NlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRlLmhpbnRzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gc3RhdGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
VXNlck1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5j
cHAKaW5kZXggZjFlOGIxNDUxMzc5ZGZlMDgyOWM4MTFjNTcxMGFjYWE1NjkyODMzZS4uYTczOWU4
MjZiZTQ4OTI3M2VkZmE5YTIxMDc2YTA1NTZmOWEzNjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKQEAgLTYwLDE5ICs2MCwxOSBAQCBPcHRpb25hbDxVc2Vy
TWVzc2FnZT4gVXNlck1lc3NhZ2U6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgVXNlck1lc3NhZ2UgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5
cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKHJlc3VsdC50eXBlID09IFR5cGU6Ok51bGwpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChyZXN1bHQudHlwZSA9PSBUeXBlOjpFcnJvcikgewogICAgICAgICBPcHRpb25h
bDx1aW50MzJfdD4gZXJyb3JDb2RlOwogICAgICAgICBkZWNvZGVyID4+IGVycm9yQ29kZTsKICAg
ICAgICAgaWYgKCFlcnJvckNvZGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXN1bHQuZXJyb3JD
b2RlID0gZXJyb3JDb2RlLnZhbHVlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC04MSwx
OCArODEsMTggQEAgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEdSZWZQdHI8R1ZhcmlhbnQ+PiBwYXJh
bWV0ZXJzOwogICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICBpZiAoIXBhcmFtZXRlcnMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LnBhcmFtZXRlcnMgPSBXVEZNb3ZlKCpwYXJhbWV0ZXJzKTsKIAogICAg
IE9wdGlvbmFsPFZlY3RvcjxJUEM6OkF0dGFjaG1lbnQ+PiBhdHRhY2htZW50czsKICAgICBkZWNv
ZGVyID4+IGF0dGFjaG1lbnRzOwogICAgIGlmICghYXR0YWNobWVudHMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFh
dHRhY2htZW50cy0+aXNFbXB0eSgpKSB7CiAgICAgICAgIHJlc3VsdC5maWxlRGVzY3JpcHRvcnMg
PSBhZG9wdEdSZWYoZ191bml4X2ZkX2xpc3RfbmV3KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGF0
dGFjaG1lbnQgOiAqYXR0YWNobWVudHMpIHsKICAgICAgICAgICAgIGlmIChnX3VuaXhfZmRfbGlz
dF9hcHBlbmQocmVzdWx0LmZpbGVEZXNjcmlwdG9ycy5nZXQoKSwgYXR0YWNobWVudC5yZWxlYXNl
RmlsZURlc2NyaXB0b3IoKSwgbnVsbHB0cikgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcAppbmRleCA5ODcwZWZmZGE1ODUxMmE5MDAzNzg3YjFhZTZiNTU1NTliMzJmYThj
Li43MzUyODg5YWYzZGQ4MzZiMGZjMDk4NTViM2U0NmNjYWMxYzEyYzJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTEwNyw2NyArMTA3
LDY3IEBAIE9wdGlvbmFsPFNlbGVjdGlvbkRhdGE+IEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0
YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogCiAgICAgYm9vbCBoYXNUZXh0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaGFzVGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1RleHQpIHsKICAgICAg
ICAgU3RyaW5nIHRleHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldFRleHQodGV4dCk7CiAgICAgfQogCiAgICAgYm9v
bCBoYXNNYXJrdXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNNYXJrdXApKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmIChoYXNNYXJrdXApIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cDsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtYXJrdXApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRN
YXJrdXAobWFya3VwKTsKICAgICB9CiAKICAgICBib29sIGhhc1VSTDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGhhc1VSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1VSTCkgewogICAgICAgICBTdHJpbmcg
dXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgc2VsZWN0aW9uLnNldFVSTChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKICAgICB9CiAK
ICAgICBib29sIGhhc1VSSUxpc3Q7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNVUklMaXN0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoaGFzVVJJTGlzdCkgewogICAgICAgICBTdHJpbmcgdXJpTGlzdDsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmlMaXN0KSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBz
ZWxlY3Rpb24uc2V0VVJJTGlzdCh1cmlMaXN0KTsKICAgICB9CiAKICAgICBib29sIGhhc0ltYWdl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzSW1hZ2UpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNJbWFn
ZSkgewogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWRlY29kZUlt
YWdlKGRlY29kZXIsIGltYWdlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWxlY3Rpb24uc2V0SW1h
Z2UoaW1hZ2UuZ2V0KCkpOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ3VzdG9tRGF0YTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0N1c3RvbURhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNDdXN0b21E
YXRhKSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5z
ZXRDdXN0b21EYXRhKFJlZjxTaGFyZWRCdWZmZXI+KCpidWZmZXIpKTsKICAgICB9CiAKICAgICBi
b29sIGNhblNtYXJ0UmVwbGFjZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNhblNtYXJ0UmVw
bGFjZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgc2VsZWN0aW9uLnNldENhblNtYXJ0UmVwbGFjZShjYW5TbWFydFJlcGxh
Y2UpOwogCiAgICAgcmV0dXJuIHNlbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAppbmRleCBjNzZhOWUxZjdk
YWU3YTMxYzQwNDhkOGYwMGQ4NDlhMThlYmFmZjIzLi44M2NiNDFhNGIwYmZjZjkyMDZlYmMyMjc0
YTUxM2EzZTBhNTE1ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3Rr
L05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRF
dmVudChHZGtFdmVudCogZXZlbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPFN0cmluZz4m
JiBjb21tYW5kcykKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoV2ViRXZlbnRGYWN0b3J5OjpjcmVh
dGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCB0ZXh0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURk1vdmUoY29tbWFuZHMpKSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQoV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCB0ZXh0LCBmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoY29tbWFuZHMpKSkKICAgICAsIG1f
bmF0aXZlRXZlbnQoZ2RrX2V2ZW50X2NvcHkoZXZlbnQpKQogewogfQpAQCAtNDUsNyArNDUsNyBA
QCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGNvbnN0IFN0
cmluZyYgdGV4dCwgT3B0aW9uYWw8VmVjdAogfQogCiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpO
YXRpdmVXZWJLZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBjb2RlLCBjb25zdCBTdHJpbmcmIGtleUlkZW50
aWZpZXIsIGludCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGludCBuYXRpdmVWaXJ0dWFsS2V5Q29k
ZSwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcywgYm9vbCBpc0tleXBhZCwgT3B0aW9uU2V0PE1v
ZGlmaWVyPiBtb2RpZmllcnMpCi0gICAgOiBXZWJLZXlib2FyZEV2ZW50KHR5cGUsIHRleHQsIGtl
eSwgY29kZSwga2V5SWRlbnRpZmllciwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBuYXRpdmVWaXJ0
dWFsS2V5Q29kZSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNv
bW1hbmRzKSwgaXNLZXlwYWQsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKQorICAgIDogV2Vi
S2V5Ym9hcmRFdmVudCh0eXBlLCB0ZXh0LCBrZXksIGNvZGUsIGtleUlkZW50aWZpZXIsIHdpbmRv
d3NWaXJ0dWFsS2V5Q29kZSwgbmF0aXZlVmlydHVhbEtleUNvZGUsIGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShjb21tYW5kcyksIGlzS2V5cGFkLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Z3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCmluZGV4IDQ2ZWYzYjM3MWY1MmMxMDU0NTFk
OTE3ZmY4ZmQzODRkYjUxOGIzOWYuLjhkYmU3YWQ3MWMzZGQwZjliY2FhMWM3NGMxNGIxY2FlYTRh
MzBmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3Vz
ZUV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViTW91
c2VFdmVudEd0ay5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgTmF0aXZlV2ViTW91c2VFdmVudDo6TmF0
aXZlV2ViTW91c2VFdmVudChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pCiB9CiAK
IE5hdGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0
b24gYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgaW50
IGNsaWNrQ291bnQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzLCBPcHRpb25hbDxXZWJD
b3JlOjpGbG9hdFNpemU+IGRlbHRhLCBXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkLCBjb25z
dCBTdHJpbmcmIHBvaW50ZXJUeXBlKQotICAgIDogV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24s
IGJ1dHRvbnMsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZGVsdGEudmFsdWVPcihXZWJDb3Jl
OjpGbG9hdFNpemUoKSkud2lkdGgoKSwgZGVsdGEudmFsdWVPcihXZWJDb3JlOjpGbG9hdFNpemUo
KSkuaGVpZ2h0KCksIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpLCAw
LCBOb1RhcCwgcG9pbnRlcklkLCBwb2ludGVyVHlwZSkKKyAgICA6IFdlYk1vdXNlRXZlbnQodHlw
ZSwgYnV0dG9uLCBidXR0b25zLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRlbHRhLnZhbHVl
X29yKFdlYkNvcmU6OkZsb2F0U2l6ZSgpKS53aWR0aCgpLCBkZWx0YS52YWx1ZV9vcihXZWJDb3Jl
OjpGbG9hdFNpemUoKSkuaGVpZ2h0KCksIDAsIGNsaWNrQ291bnQsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpLCAwLCBOb1RhcCwgcG9pbnRlcklkLCBwb2ludGVyVHlwZSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5o
CmluZGV4IDVmYWIwNTRlYTgzZWEyYzc0NjVmMDFhOTc4ZDhiMTY3MzVkY2U5N2IuLjk0YTljNTBj
NGI0NzVhZTg4M2Q4N2QyOTkxYjA2OGVkMGYxMGFmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0LmgKQEAgLTU3LDE1ICs1Nywx
NSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQ+IFdlYkF1dG9jb3JyZWN0aW9uQ29udAogewogICAgIFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dCBjb3JyZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29ycmVjdGlvbi5jb250
ZXh0QmVmb3JlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvcnJlY3Rpb24ubWFya2Vk
VGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLnNlbGVjdGVkVGV4
dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLmNvbnRleHRBZnRlcikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3JyZWN0aW9uLm1hcmtlZFRleHRSYW5nZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGNvcnJlY3Rpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCmluZGV4IDUzMjRmNjM4ODM0NjQ4NjVh
M2FlMDU4YmE5NDc2OTYwM2EyMzgzOTkuLmMxMjg3ZDFiNzYxMGZmNWIyMjUwZTUzZjcwZDdkNTBl
NWFjM2ZlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJBdXRvY29y
cmVjdGlvbkRhdGEubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5tbQpAQCAtNDksMTEgKzQ5LDExIEBAIE9wdGlvbmFsPFdlYkF1dG9jb3JyZWN0
aW9uRGF0YT4gV2ViQXV0b2NvcnJlY3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
CiAgICAgT3B0aW9uYWw8VmVjdG9yPEZsb2F0UmVjdD4+IHRleHRSZWN0czsKICAgICBkZWNvZGVy
ID4+IHRleHRSZWN0czsKICAgICBpZiAoIXRleHRSZWN0cykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxV
SUZvbnQ+IGZvbnQ7CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBmb250LCBAWyBVSUZv
bnQuY2xhc3MgXSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnRleHRSZWN0cywgZm9udCB9fTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3Rvcnku
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaAppbmRleCBh
NDE5ZDgwMjNlNzVhMzNkMzU2M2QwZjUyMDJiYzhjYjZhNzk0OWZhLi4yNjEwYzExNGE3MjY3ZTVl
ZmNlMmI2OWY5MWJiODJlZjlmMThiYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9z
L1dlYklPU0V2ZW50RmFjdG9yeS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgV2ViS2l0OjpXZWJNb3VzZUV2ZW50IGNyZWF0ZVdlYk1vdXNlRXZlbnQoOjpXZWJFdmVudCAq
KTsKIAogI2lmIEhBVkUoVUlTQ1JPTExWSUVXX0FTWU5DSFJPTk9VU19TQ1JPTExfRVZFTlRfSEFO
RExJTkcpCi0gICAgc3RhdGljIFdlYktpdDo6V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2
ZW50KFVJU2Nyb2xsRXZlbnQgKiwgVUlWaWV3ICpjb250ZW50VmlldywgT3B0aW9uYWw8V2ViS2l0
OjpXZWJXaGVlbEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZSA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgc3RhdGljIFdlYktpdDo6V2ViV2hlZWxFdmVudCBjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Ny
b2xsRXZlbnQgKiwgVUlWaWV3ICpjb250ZW50VmlldywgT3B0aW9uYWw8V2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpQaGFzZT4gb3ZlcnJpZGVQaGFzZSA9IHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAog
ICAgIHN0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgdG9VSUtleU1vZGlmaWVyRmxhZ3MoT3B0aW9u
U2V0PFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVyPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQppbmRleCA5ODFlYzQ3ZjE1M2U0ZTAzMzdkMzIx
MDg4Zjc5ZTI2NmZiMWQ3MDg5Li5hZGJkNTE1OGUzM2ZmNDg2ZGRjNDE0MmI2ZTZhMWYzNjk2M2I4
M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9TRXZlbnRGYWN0
b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3Rvcnku
bW0KQEAgLTE3MCw3ICsxNzAsNyBAQCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgV2ViSU9TRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJXaGVlbEV2ZW50KFVJU2Nyb2xsRXZlbnQgKmV2ZQogICAgICAgICB3
aGVlbFRpY2tzLAogICAgICAgICBXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5OjpT
Y3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKICAgICAgICAgZmFsc2UsCi0gICAgICAgIG92ZXJyaWRl
UGhhc2UudmFsdWVPcih0b1dlYlBoYXNlKGV2ZW50LnBoYXNlKSksCisgICAgICAgIG92ZXJyaWRl
UGhhc2UudmFsdWVfb3IodG9XZWJQaGFzZShldmVudC5waGFzZSkpLAogICAgICAgICBXZWJLaXQ6
OldlYldoZWVsRXZlbnQ6OlBoYXNlTm9uZSwKICAgICAgICAgdHJ1ZSwKICAgICAgICAgMSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJ
T1MuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElP
Uy5jcHAKaW5kZXggMmE5ZGI0ZjhhY2FmZTlkNjRkNWQ0ZWJkOTkxM2FhMTYxZWEwZjRjMC4uZTRj
ODExYjE3Y2MwYjhhODMyMWM3NzQ2MGQ1YTFkNTM0OGIxMjdhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAKQEAgLTUz
LDI2ICs1MywyNiBAQCBPcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3Jt
VG91Y2hQb2ludDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjbwogewogICAgIFdlYlBsYXRmb3Jt
VG91Y2hQb2ludCByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZGVu
dGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2xvY2F0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3BoYXNlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Jh
ZGl1c1gpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmFkaXVzWSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yb3RhdGlvbkFuZ2xlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2ZvcmNlKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tX2FsdGl0dWRlQW5nbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fYXppbXV0aEFuZ2xlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX3RvdWNoVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbQppbmRleCBkYWFmZDhkOGJkMzI3MWU0OGE1OWMwNjA4Y2FjZGZlYWU2Nzc1NmUyLi4xYzg1
NTcxYmRkZDhjZDU0YTAxMjY1NmViNzAwZGJkNDI5MTYwNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtMjAwLDcgKzIwMCw3IEBA
IHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8Y2hhcj4+IGZpbGVDb250ZW50cyhjb25zdCBTdHJpbmcm
IHBhdGgsIGJvb2wgc2hvdWxkTG9jayA9CiAgICAgRmlsZUhhbmRsZSBmaWxlID0gc2hvdWxkTG9j
ayA/IEZpbGVIYW5kbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpSZWFkLCBsb2Nr
TW9kZSkgOiBGaWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6UmVhZCk7
CiAgICAgZmlsZS5vcGVuKCk7CiAgICAgaWYgKCFmaWxlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY2hhciBjaHVua1s0
MDk2XTsKICAgICBjb25zdGV4cHIgc2l6ZV90IGNodW5rU2l6ZSA9IFdURl9BUlJBWV9MRU5HVEgo
Y2h1bmspOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDU3RyaW5nPiBzZXRB
bmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5kYm94SW5pdGlhbGl6CiAgICAg
aWYgKGlzUHJvZmlsZVBhdGgpIHsKICAgICAgICAgYXV0byBjb250ZW50cyA9IGZpbGVDb250ZW50
cyhwcm9maWxlT3JQcm9maWxlUGF0aCk7CiAgICAgICAgIGlmICghY29udGVudHMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKGNvbnRlbnRzLT5kYXRhKCksIGNv
bnRlbnRzLT5zaXplKCkpOwogICAgIH0gZWxzZQogICAgICAgICBidWlsZGVyLmFwcGVuZChwcm9m
aWxlT3JQcm9maWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAppbmRleCAw
ZGVhMDk2ZDlhYTA3YWJhOWI2YWRjMzRiNzQxN2JiNWI1ZjM2NTg5Li5jMzhjYTJlMGI3ZTc0NzQx
MTFjOGIzOWUxZDk0MWNkMDY3NTRjMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpwYXJzZUJ5dGVT
b3VyY2UoUmV0YWluUHRyPE1UUGx1Z2luQnl0ZVNvdXJjZVJlZj4mJiBieXRlUwogCiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fcGFyc2VUcmFja3NMb2NrIH07CiAgICAgbV9ieXRlU291cmNlID0gV1RG
TW92ZShieXRlU291cmNlKTsKLSAgICBtX3BhcnNlVHJhY2tzU3RhdHVzID0gV1RGOjpudWxsb3B0
OworICAgIG1fcGFyc2VUcmFja3NTdGF0dXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9kdXJhdGlv
biA9IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKICAgICBtX3RyYWNrUmVhZGVycy5jbGVhcigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAppbmRleCA3NTdhYjZiNmYwMmI0MWVm
MmY2ZjBlMmNjOWM3YmU3YmY4MGY1MWE4Li5lNTQzZTAzZTJmNGVmMDQ1N2MyMTdlZmM2MDMwMzgz
MWM2NjlmZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTE1MSw3ICsx
NTEsNyBAQCBPcHRpb25hbDx0eXBlbmFtZSBPcmRlcmVkTWFwOjppdGVyYXRvcj4gTWVkaWFTYW1w
bGVDdXJzb3I6OmxvY2F0ZUl0ZXJhdG9yKE9yZGVyZQogICAgICAgICAgICAgZWxzZSBpZiAoaGFz
QWxsU2FtcGxlcyB8fCBpdGVyYXRvciAhPSBzYW1wbGVzLmVuZCgpKQogICAgICAgICAgICAgICAg
IG1fbG9jYXRvciA9IHN0ZDo6cHJldihpdGVyYXRvcik7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIGxvY2F0ZUl0ZXJhdG9yKHNhbXBsZXMs
IGhhc0FsbFNhbXBsZXMpOwogICAgICAgICB9LAogICAgICAgICBbJl0oY29uc3QgYXV0byYgb3Ro
ZXJJdGVyYXRvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNP
YmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgu
bW0KaW5kZXggZDFhYTVjZDMyNmI2ZThkYjEzZDQ2NzkwNzNjNDkzM2QzYTliOWNkZC4uNzBhNWM4
MDQ0NmNlYzhlZWU0NzM1NjkzZTFjODZlNGI2MzE1ODNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIE9w
dGlvbmFsPE9iakNUeXBlPiB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgICAgIHJldHVy
biBPYmpDVHlwZTo6V0tUeXBlUmVmV3JhcHBlcjsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogdm9pZCBPYmpDT2JqZWN0R3JhcGg6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIsIGlkIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9QREZDb250ZXh0TWVudS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1BERkNvbnRleHRN
ZW51LmgKaW5kZXggN2QxOGYwOWIwMDdhMWY2YTI5MTMwMGY1ZWI4MGEyNTJiYzY3OGUxMi4uODFj
ZGJlODAxYzJmY2M3NmNiOThiZDMzNjEzM2EyN2Q1YWM5YzBmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1BERkNvbnRleHRNZW51LmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1BERkNvbnRleHRNZW51LmgKQEAgLTQ2LDMyICs0NiwzMiBAQCBzdHJ1Y3QgUERG
Q29udGV4dE1lbnVJdGVtIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0aXRsZTsKICAgICAg
ICAgZGVjb2RlciA+PiB0aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gZW5hYmxl
ZDsKICAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gc2VwYXJhdG9yOwogICAgICAgICBkZWNvZGVyID4+IHNlcGFyYXRvcjsKICAgICAgICAg
aWYgKCFzZXBhcmF0b3IpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxpbnQ+IHN0YXRl
OwogICAgICAgICBkZWNvZGVyID4+IHN0YXRlOwogICAgICAgICBpZiAoIXN0YXRlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQWN0aW9uOwogICAgICAgICBkZWNvZGVy
ID4+IGhhc0FjdGlvbjsKICAgICAgICAgaWYgKCFoYXNBY3Rpb24pCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxpbnQ+IHRhZzsKICAgICAgICAgZGVjb2RlciA+PiB0YWc7CiAgICAgICAg
IGlmICghdGFnKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCp0aXRs
ZSksIFdURk1vdmUoKmVuYWJsZWQpLCBXVEZNb3ZlKCpzZXBhcmF0b3IpLCBXVEZNb3ZlKCpzdGF0
ZSksIFdURk1vdmUoKmhhc0FjdGlvbiksIFdURk1vdmUoKnRhZykgfSB9OwogICAgIH0KQEAgLTky
LDE3ICs5MiwxNyBAQCBzdHJ1Y3QgUERGQ29udGV4dE1lbnUgewogICAgICAgICBPcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gcG9pbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gcG9pbnQ7CiAgICAg
ICAgIGlmICghcG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8UERG
Q29udGV4dE1lbnVJdGVtPj4gaXRlbXM7CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbXM7CiAgICAg
ICAgIGlmICghaXRlbXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxp
bnQ+PiBvcGVuSW5QcmV2aWV3SW5kZXg7CiAgICAgICAgIGRlY29kZXIgPj4gb3BlbkluUHJldmll
d0luZGV4OwogICAgICAgICBpZiAoIW9wZW5JblByZXZpZXdJbmRleCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqcG9pbnQpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCmluZGV4IDBlMDg0
MDJiMWE1ZmY3OTMxMTM1NjkxYjE5ZmFmMDYxZjk2Zjc2NTUuLmQ4YmFmOWZlYzlhMTczMzQyNzMx
YjBkNGYzMGFiZWMwYWI5MTZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9TZWNJdGVtUmVzcG9uc2VEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKQEAgLTQ5LDE1ICs0OSwxNSBAQCBPcHRpb25hbDxTZWNJ
dGVtUmVzcG9uc2VEYXRhPiBTZWNJdGVtUmVzcG9uc2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIGludDY0X3QgcmVzdWx0Q29kZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdENvZGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBleHBlY3RSZXN1bHRPYmplY3Q7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShleHBlY3RSZXN1bHRPYmplY3QpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0
YWluUHRyPENGVHlwZVJlZj4gcmVzdWx0OwogICAgIGlmIChleHBlY3RSZXN1bHRPYmplY3QgJiYg
IWRlY29kZXIuZGVjb2RlKHJlc3VsdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgc3RhdGljX2Nhc3Q8
T1NTdGF0dXM+KHJlc3VsdENvZGUpLCBXVEZNb3ZlKHJlc3VsdCkgfX07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAppbmRleCA5MGFkOTk5M2Q4ZTBjZDMxZWY3YTk4
YmUzN2I1ODdiNGExNWVkMjMzLi5lZmUyZjIyMzc3ZWViYTkyM2VlYWFlNzI4YjFhODZkYTk1ZTkx
MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNlY0l0ZW1SZXNwb25zZURhdGE+IHNlbmRTZWNJdGVt
UmVxdWVzdChTZWNJdGVtUmVxdWVzdERhdGE6OlR5cGUKIAogICAgIGlmIChSdW5Mb29wOjppc01h
aW4oKSkgewogICAgICAgICBpZiAoIWdsb2JhbE5ldHdvcmtQcm9jZXNzKCktPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpTZWNJdGVtU2hpbVByb3h5OjpTZWNJ
dGVtUmVxdWVzdFN5bmMoU2VjSXRlbVJlcXVlc3REYXRhKHJlcXVlc3RUeXBlLCBxdWVyeSwgYXR0
cmlidXRlc1RvTWF0Y2gpKSwgTWVzc2FnZXM6OlNlY0l0ZW1TaGltUHJveHk6OlNlY0l0ZW1SZXF1
ZXN0U3luYzo6UmVwbHkocmVzcG9uc2UpLCAwKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4g
cmVzcG9uc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQppbmRleCBlMGIxMjVhZWI4MmVjZGE3ODlmNzUxNDNh
YTFkZmZmYmRhYTZjYWYwLi41NmI1OGY4MzQ1YmVmMmIyNzZmNDM4ZGQ4NzMxM2Q4YmYyZGI5ZGNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRD
b2RlcnNNYWMubW0KQEAgLTI4NSwxMiArMjg1LDEyIEBAIE9wdGlvbmFsPFdlYkNvcmU6OktleXBy
ZXNzQ29tbWFuZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+OjpkZWNv
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb21tYW5kTmFtZTsKICAgICBkZWNvZGVyID4+IGNvbW1h
bmROYW1lOwogICAgIGlmICghY29tbWFuZE5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kIGNvbW1hbmQ7CiAgICAgY29tbWFuZC5jb21t
YW5kTmFtZSA9IFdURk1vdmUoKmNvbW1hbmROYW1lKTsKQEAgLTQxMCwxMSArNDEwLDExIEBAIE9w
dGlvbmFsPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6U2VyaWFsCiAgICAgQVNTRVJUKHBsYXRmb3JtVHlwZSA9PSBXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU6OlBsYXRmb3JtVHlwZTo6T2JqQyk7CiAK
ICAgICBpZiAocGxhdGZvcm1UeXBlICE9IFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVWYWx1ZTo6UGxhdGZvcm1UeXBlOjpPYmpDKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBvYmplY3QgPSBkZWNv
ZGVPYmplY3QoZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6
YWxsb3dlZENsYXNzZXNGb3JOYXRpdmVWYWx1ZXMoKSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlIHsgcGxh
dGZvcm1UeXBlLCBvYmplY3QudmFsdWUoKS5nZXQoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50
Q29kZXJzUGxheVN0YXRpb24uY3BwCmluZGV4IDIxMmE4ZTA1ZWI1ZjNmODg5YzM1ODE1YWU3ZWJj
NWNhYzU0MmFjYjAuLmNiZWI0MDBkYWNlNTZiODgyZDJlN2M0NDNhZWRkYjdiZTQ5ZDlmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1BsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5c3Rh
dGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcg
QEAgdm9pZCBBcmd1bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZW5jb2RlUGxhdGZvcm1EYXRh
KEVuY29kZXImLCBjb25zdCBGb250QXR0cmkKIE9wdGlvbmFsPEZvbnRBdHRyaWJ1dGVzPiBBcmd1
bWVudENvZGVyPEZvbnRBdHRyaWJ1dGVzPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImLCBG
b250QXR0cmlidXRlcyYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFJlZjxGb250PiYgZm9udCkKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxGb250Pj46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZWY8Rm8KIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDQ0
OTIzNGIwODExNzJlYWNmMTMxN2E1YzFlMTJjZjBkZDE5OTNmMDEuLjk4N2Y4YjU1NTIxODFhMjg4
M2IxYTY0NDQ1ZDhmYTY4MWMwZTk3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMjAwLDcgKzIwMCw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3JtRGF0
YShFbmNvZGVyJiwgY29uc3QgRm9udEF0dHJpCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJn
dW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiwg
Rm9udEF0dHJpYnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBBcmd1
bWVudENvZGVyPERpY3Rpb25hcnlQb3B1cEluZm8+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2Rl
ciYsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNv
bnN0IFJlZjxGb250PiYpCiBPcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVy
PFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJikKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9p
ZCBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmVuY29kZVBs
YXRmb3JtRGF0YShFbmNvZGVyJgogT3B0aW9uYWw8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZh
bHVlPiAgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
d2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcAppbmRleCBkYmUwZDAzYzkyMTkwZWIwYmMy
OWViNjZjNDc1M2EwYWE5YzBiNDdjLi42MjE4ODMwMDQ4YmEyNWZlNDQ0M2E1Y2FiMTM2NjY4ZjNh
ZWJmNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vQXV4aWxpYXJ5UHJv
Y2Vzc01haW5XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlhcnlQ
cm9jZXNzTWFpbldpbi5jcHAKQEAgLTM2LDkgKzM2LDkgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNz
TWFpbkNvbW1vbjo6cGFyc2VDb21tYW5kTGluZShpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgaWYgKCFzdHJjbXAo
YXJndltpXSwgIi1jbGllbnRJZGVudGlmaWVyIikgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAg
ICAgbV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxI
QU5ETEU+KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2Wysr
aV0pLnZhbHVlT3IoMCkpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLmNvbm5lY3Rpb25JZGVu
dGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5ETEU+KHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2WysraV0pLnZhbHVlX29yKDApKTsKICAgICAgICAgZWxz
ZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXByb2Nlc3NJZGVudGlmaWVyIikgJiYgaSArIDEgPCBh
cmdjKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLnByb2Nlc3NJZGVudGlmaWVyID0gbWFrZU9i
amVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPihwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsK
KyAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9jZXNzSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4ocGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KGFyZ3ZbKytpXSkudmFsdWVfb3IoMCkpOwogICAg
ICAgICBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY29uZmlndXJlLWpzYy1mb3ItdGVzdGlu
ZyIpKQogICAgICAgICAgICAgSlNDOjpDb25maWc6OmNvbmZpZ3VyZUZvclRlc3RpbmcoKTsKICAg
ICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWRpc2FibGUtaml0IikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJzV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3Bw
CmluZGV4IGJkMTkwODA2NmJkMTI1ZWQ4MTBhY2QwMTdiM2RjMWM2NDc5ZWZlMDMuLjAwMDNhYjM3
ZDEzNjUxZmY4N2RmMzYyN2E0ZjY1M2ZjNGFkZWRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dpbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNXaW4uY3BwCkBAIC00NSw3ICs0
NSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmVuY29kZVBsYXRmb3Jt
RGF0YShFbmNvZGVyJiwgY29uc3QgRm9udEF0dHJpCiBPcHRpb25hbDxGb250QXR0cmlidXRlcz4g
QXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVy
JiwgRm9udEF0dHJpYnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxMT0dGT05UPiB7CkBAIC01Nyw3ICs1Nyw3IEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8TE9HRk9OVD4gewogICAgIHsKICAgICAgICAg
TE9HRk9OVCBsb2dGb250OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZsb2dGb250KSwgc2l6ZW9mKGxvZ0ZvbnQp
LCAxKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gbG9nRm9udDsKICAgICB9CiB9OwpAQCAt
ODYsMjIgKzg2LDIyIEBAIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImCiAgICAgT3B0aW9uYWw8Zmxv
YXQ+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZS5oYXNWYWx1ZSgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc3ludGhldGljQm9sZDsKICAgICBkZWNvZGVyID4+
IHN5bnRoZXRpY0JvbGQ7CiAgICAgaWYgKCFzeW50aGV0aWNCb2xkLmhhc1ZhbHVlKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxib29sPiBzeW50aGV0aWNPYmxpcXVlOwogICAgIGRlY29kZXIgPj4gc3lu
dGhldGljT2JsaXF1ZTsKICAgICBpZiAoIXN5bnRoZXRpY09ibGlxdWUuaGFzVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGJvb2w+IGluY2x1ZGVzQ3JlYXRpb25EYXRhOwogICAgIGRlY29kZXIg
Pj4gaW5jbHVkZXNDcmVhdGlvbkRhdGE7CiAgICAgaWYgKCFpbmNsdWRlc0NyZWF0aW9uRGF0YS5o
YXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE+IGZvbnRDdXN0b21QbGF0Zm9ybURhdGE7CiAgICAgRm9udFBsYXRmb3JtRGF0YTo6Q3JlYXRp
b25EYXRhKiBjcmVhdGlvbkRhdGEgPSBudWxscHRyOwpAQCAtMTEwLDMwICsxMTAsMzAgQEAgT3B0
aW9uYWw8Rm9udFBsYXRmb3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYKICAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGZvbnRGYWNlRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBmb250RmFjZURhdGE7CiAgICAgICAg
IGlmICghZm9udEZhY2VEYXRhLmhhc1ZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxTdHJpbmc+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gaXRlbUlu
Q29sbGVjdGlvbjsKICAgICAgICAgaWYgKCFpdGVtSW5Db2xsZWN0aW9uLmhhc1ZhbHVlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBmb250Q3VzdG9tUGxhdGZvcm1EYXRhID0gY3JlYXRlRm9udEN1
c3RvbVBsYXRmb3JtRGF0YShmb250RmFjZURhdGEudmFsdWUoKSwgaXRlbUluQ29sbGVjdGlvbi52
YWx1ZSgpKTsKICAgICAgICAgaWYgKCFmb250Q3VzdG9tUGxhdGZvcm1EYXRhKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGNyZWF0aW9uRGF0YSA9ICZmb250Q3VzdG9tUGxhdGZvcm1EYXRhLT5jcmVhdGlv
bkRhdGE7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8TE9HRk9OVD4gbG9nRm9udDsKICAgICBkZWNv
ZGVyID4+IGxvZ0ZvbnQ7CiAgICAgaWYgKCFsb2dGb250Lmhhc1ZhbHVlKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKICAgICAgICAgd2NzY3B5X3MobG9nRm9udC0+bGZG
YWNlTmFtZSwgTEZfRkFDRVNJWkUsIGZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPm5hbWUud2lkZUNo
YXJhY3RlcnMoKS5kYXRhKCkpOwogICAgIAogICAgIGF1dG8gZ2RpRm9udCA9IGFkb3B0R0RJT2Jq
ZWN0KENyZWF0ZUZvbnRJbmRpcmVjdCgmKmxvZ0ZvbnQpKTsKICAgICBpZiAoIWdkaUZvbnQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gRm9udFBsYXRmb3JtRGF0YShXVEZNb3ZlKGdkaUZvbnQpLCAqc2l6ZSwg
KnN5bnRoZXRpY0JvbGQsICpzeW50aGV0aWNPYmxpcXVlLCBmYWxzZSwgY3JlYXRpb25EYXRhKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAppbmRl
eCBiMTgyMGUwNDhjMDc3NTYxYzk4MWIxOTNmZjNiNWQzNDY3MDAxODAxLi5hMjdkMTI1NGJlNzY1
ODJkZWM4MTZmZTNiZDkzNjZiNjczM2YwMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFdURjo6U3RyaW5nIEF0
dGFjaG1lbnQ6OmZpbGVOYW1lKCkgY29uc3QKIAogT3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1l
bnQ6OmZpbGVTaXplRm9yRGlzcGxheSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBBdHRhY2htZW50OjplbmNsb3NpbmdJbWFnZURhdGEoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGll
bnQuaAppbmRleCAyYWUyYTUwMzRjM2E0MTcxY2NmNDc3Yjk3ODViNzNhNmYyNGRiODE2Li5mNDY5
MTE2NzZjZDk4YTZhMTc0N2U4MDFlODhkYjI4Y2YxZmM5YTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjY2VwdEN1cnJlbnRK
YXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbWVzc2FnZU9m
Q3VycmVudEphdmFTY3JpcHREaWFsb2dPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lv
biYsIFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gV1RGOjpTdHJpbmcoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRVc2VySW5wdXRGb3JDdXJyZW50SmF2YVNjcmlwdFByb21wdE9uUGFn
ZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYpIHsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8SmF2YVNjcmlwdERp
YWxvZ1R5cGU+IHR5cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktpdDo6V2Vi
QXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8SmF2YVNjcmlwdERpYWxvZ1R5cGU+IHR5
cGVPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIHZpcnR1YWwgQnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uIGN1cnJlbnRQcmVzZW50YXRp
b25PZlBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JikgeyByZXR1cm4gQnJvd3NpbmdDb250ZXh0UHJlc2VudGF0aW9uOjpXaW5kb3c7IH0KIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwCmluZGV4IGIyNzEwYmZmYzQxNDhmYmZiYTY0YzllYWVmZWY0ZWUzNjY0
MWFmOWEuLjhkYmU3OTVlZDllYTM0YmZlZTNmMTI5NjVlNWYwMzMwMGRiZmE5MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0
b3JlLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb250ZW50UnVsZUxp
c3RNZXRhRGF0YT4gZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEoY29uc3QgVCYKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0pOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1
cm4gbWV0YURhdGE7CiB9CiAKQEAgLTIxOCwxMCArMjE4LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxN
YXBwZWREYXRhPiBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBw
YXRoKQogICAgIEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHBhdGgp
OwogICAgIFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhIGZpbGVEYXRhID0gbWFwRmlsZShmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoZmlsZURhdGEuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgYXV0byBtZXRhRGF0YSA9IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFE
YXRhKGZpbGVEYXRhKTsKICAgICBpZiAoIW1ldGFEYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBXVEZN
b3ZlKCptZXRhRGF0YSksIHsgV1RGTW92ZShmaWxlRGF0YSkgfX19OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgKaW5kZXggMWY1MDc5Yzg1ZmRiOTU0Y2Q2YTZjN2M5Y2Y3MDE5YjRkMmMxNmY3OS4uYmZk
NzVkYmViODNmN2I0Y2JiODMzNTg3NDM5ODQ0OTM2ZGFmZTM2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzQXV0b21hdGljUHJvY2Vz
c1dhcm1pbmdFbmFibGVkKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzQXV0b21h
dGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQudmFsdWVPcihtX2NsaWVudFdvdWxkQmVu
ZWZpdEZyb21BdXRvbWF0aWNQcm9jZXNzUHJld2FybWluZyk7CisgICAgICAgIHJldHVybiBtX2lz
QXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQudmFsdWVfb3IobV9jbGllbnRX
b3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcpOwogICAgIH0KIAogICAg
IGJvb2wgd2FzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdTZXRCeUNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OyB9CkBAIC0x
MjAsNyArMTIwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzU3dhcHNPbk5hdmlnYXRp
b24oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uRnJvbUNsaWVudC52YWx1ZU9yKG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uRnJvbUV4cGVy
aW1lbnRhbEZlYXR1cmVzKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0
aW9uRnJvbUNsaWVudC52YWx1ZV9vcihtX3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBl
cmltZW50YWxGZWF0dXJlcyk7CiAgICAgfQogICAgIHZvaWQgc2V0UHJvY2Vzc1N3YXBzT25OYXZp
Z2F0aW9uKGJvb2wgc3dhcHMpIHsgbV9wcm9jZXNzU3dhcHNPbk5hdmlnYXRpb25Gcm9tQ2xpZW50
ID0gc3dhcHM7IH0KICAgICB2b2lkIHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBl
cmltZW50YWxGZWF0dXJlcyhib29sIHN3YXBzKSB7IG1fcHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9u
RnJvbUV4cGVyaW1lbnRhbEZlYXR1cmVzID0gc3dhcHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGQ0ODJkM2MzNGQ4ZjRhMWM4ZGI2NTFkOTc3MDYyNWMz
MmQ1MDdlYzIuLjdiMjY5YWIwNzQyNjczMGM4NTI1NjkyMTZlMmE5MGM5MmU2MDEzODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjYwMCw3ICsyNjAwLDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLUGFn
ZVN0YXRlQ2xpZW50QmFzZSogY2xpZW50KQogdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHNjcmlwdFJlZiwgdm9pZCogY29u
dGV4dCwgV0tQYWdlUnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIENSQVNI
X0lGX1NVU1BFTkRFRDsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh7IHRvSW1wbChzY3JpcHRSZWYpLT5zdHJpbmcoKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgdHJ1ZSB9LCBbY29udGV4dCwgY2FsbGJhY2tdIChhdXRvJiYgcmVzdWx0KSB7Cisg
ICAgdG9JbXBsKHBhZ2VSZWYpLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2Ny
aXB0UmVmKS0+c3RyaW5nKCksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUgfSwg
W2NvbnRleHQsIGNhbGxiYWNrXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICBpZiAocmVzdWx0
Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdWx0LnZhbHVlKCku
Z2V0KCkpLCBudWxscHRyLCBjb250ZXh0KTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KaW5k
ZXggMTI5MmNjY2NmODhlODg5MzlmZjlmZGU0NDk1YTM0ZjI5ZGE5MmJhMi4uMjM3ZmI3ZWZhZjU3
ZmVkMjc0NmI4NjdiY2Q0MDgzNTczZDI5Y2Q0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJQXR0YWNobWVudENvY29hLm1tCkBAIC0xMjgsNyAr
MTI4LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IEF0dGFjaG1lbnQ6OmZpbGVTaXplRm9yRGlzcGxh
eSgpIGNvbnN0CiAKICAgICBpZiAoIVtmaWxlV3JhcHBlciBpc1JlZ3VsYXJGaWxlXSkgewogICAg
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRpc3BsYXkgYSBzaXplIGVzdGltYXRlIGZvciBkaXJl
Y3RvcnktdHlwZSBmaWxlIHdyYXBwZXJzLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdXRvIGZpbGVT
aXplID0gW1tmaWxlV3JhcHBlciBmaWxlQXR0cmlidXRlc11bTlNGaWxlU2l6ZV0gdW5zaWduZWRM
b25nTG9uZ1ZhbHVlXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLU2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggNGY5ZjlmZjk5Yjk0ZGMzOWNiY2Y2YWMyZTcx
M2MyNzMyYjg5OGI5OC4uMDBmZWNiYmUzMjlmZmZiNDEwOTY5YTY4OGUyMjYwN2I4OTM3MjZjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJpdHlP
cmlnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLU2VjdXJp
dHlPcmlnaW4ubW0KQEAgLTYwLDcgKzYwLDcgQEAgLSAoTlNTdHJpbmcgKilob3N0CiAKIC0gKE5T
SW50ZWdlcilwb3J0CiB7Ci0gICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKS5wb3J0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIF9zZWN1cml0eU9yaWdpbi0+c2VjdXJp
dHlPcmlnaW4oKS5wb3J0LnZhbHVlX29yKDApOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDg5MmFhNDg1OGY0OGE3OWJiMmEzZDllM2Y0YzY1YmYx
ZDhjOTQzNzcuLmFlMWYzYjU2MjI2ZmZhMDQzMjgyMjFmMjQ1YmVmYTIwOGFlZjUyM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjA3
MCw3ICsyMDcwLDcgQEAgLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm8KIAogICAgIFZlY3RvcjxXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IHRva2Vu
czsKICAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqd2tUb2tlbiBpbiBpdGVtLnRv
a2VucykKLSAgICAgICAgdG9rZW5zLmFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRva2VuSWRl
bnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250ZW50LCBX
VEY6Om51bGxvcHQgfSk7CisgICAgICAgIHRva2Vucy5hcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuIHsgY29yZVRleHRNYW5pcHVsYXRp
b25Ub2tlbklkZW50aWZpZXJGcm9tU3RyaW5nKHdrVG9rZW4uaWRlbnRpZmllciksIHdrVG9rZW4u
Y29udGVudCwgc3RkOjpudWxsb3B0IH0pOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtPiBjb3JlSXRlbXM7CiAgICAgY29y
ZUl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCAt
ICh2b2lkKV9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbSAqPiAqKQogICAgICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiBjb3JlVG9rZW5zOwogICAgICAg
ICBjb3JlVG9rZW5zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2tJdGVtLnRva2Vucy5jb3VudCk7
CiAgICAgICAgIGZvciAoX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICp3a1Rva2VuIGluIHdrSXRl
bS50b2tlbnMpCi0gICAgICAgICAgICBjb3JlVG9rZW5zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4
dE1hbmlwdWxhdGlvblRva2VuSWRlbnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVy
KSwgd2tUb2tlbi5jb250ZW50LCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgICAgICBjb3JlVG9r
ZW5zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRva2VuSWRlbnRpZmllckZy
b21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250ZW50LCBzdGQ6Om51bGxv
cHQgfSk7CiAgICAgICAgIGNvcmVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0geyBjb3JlVGV4dE1hbmlwdWxh
dGlvbkl0ZW1JZGVudGlmaWVyRnJvbVN0cmluZyh3a0l0ZW0uaWRlbnRpZmllciksIFdURk1vdmUo
Y29yZVRva2VucykgfSk7CiAgICAgfQogCkBAIC0yMjg4LDcgKzIyODgsNyBAQCAtICh2b2lkKV9y
ZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiAgICAg
Zm9yIChOU0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKQogICAgICAgICBjb252ZXJ0QW5k
QWRkSGlnaGxpZ2h0KGJ1ZmZlcnMsIGhpZ2hsaWdodCk7CiAgICAgCi0gICAgX3BhZ2UtPnJlc3Rv
cmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBXVEY6Om51bGxvcHQpOwor
ICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVycywg
c3RkOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodHMpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IGNlNWI3YmQ1YjAxYWJjODIxMDk1ZDA1NTk1
YWFlOTY5YjY4Y2Y1ZmUuLjczNjdlODgwMjc2ZmE2NDE3YTllNDlmZTg5ODc5Y2ZjZTk4OWMxNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdD
b25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC01MzcsMTIgKzUzNywxMiBAQCBzdGF0aWMgTlNT
dHJpbmcgKmRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKQogCiAtIChOU1N0cmlu
ZyAqKV9hcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50CiB7Ci0gICAgcmV0dXJuIF9h
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQudmFsdWVPcihuaWwpLmdldCgpOworICAgIHJldHVy
biBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LnZhbHVlX29yKG5pbCkuZ2V0KCk7CiB9CiAK
IC0gKE5TU3RyaW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CiB7Ci0gICAgcmV0dXJu
IF9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQudmFsdWVPcihkZWZhdWx0QXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50KCkpLmdldCgpOworICAgIHJldHVybiBfYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50LnZhbHVlX29yKGRlZmF1bHRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoKSku
Z2V0KCk7CiB9CiAKIC0gKHZvaWQpc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OihOU1N0
cmluZyAqKWFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudApAQCAtOTUyLDE4ICs5NTIsMTggQEAg
LSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICop
cGF0dGVybnMKIAogLSAodm9pZClfc2V0TG9hZHNGcm9tTmV0d29yazooQk9PTClsb2Fkcwogewot
ICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhsb2FkcyA/IFdU
Rjo6bnVsbG9wdCA6IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmluZz4g
eyB9IH0pOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhs
b2FkcyA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0
PFN0cmluZz4geyB9IH0pOwogfQogCiAtIChCT09MKV9sb2Fkc0Zyb21OZXR3b3JrCiB7Ci0gICAg
cmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpID09IFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5hbGxvd2VkTmV0d29ya0hv
c3RzKCkgPT0gc3RkOjpudWxsb3B0OwogfQogCiAtICh2b2lkKV9zZXRBbGxvd2VkTmV0d29ya0hv
c3RzOihOU1NldDxOU1N0cmluZyAqPiAqKWhvc3RzCiB7CiAgICAgaWYgKCFob3N0cykKLSAgICAg
ICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhXVEY6
Om51bGxvcHQpOworICAgICAgICByZXR1cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2Vk
TmV0d29ya0hvc3RzKHN0ZDo6bnVsbG9wdCk7CiAgICAgSGFzaFNldDxTdHJpbmc+IHNldDsKICAg
ICBmb3IgKE5TU3RyaW5nICpob3N0IGluIGhvc3RzKQogICAgICAgICBzZXQuYWRkKGhvc3QpOwpA
QCAtMTE1Niw3ICsxMTU2LDcgQEAgLSAodm9pZClfc2V0Q1BVTGltaXQ6KGRvdWJsZSljcHVMaW1p
dAogCiAtIChkb3VibGUpX2NwdUxpbWl0CiB7Ci0gICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlv
bi0+Y3B1TGltaXQoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24t
PmNwdUxpbWl0KCkudmFsdWVfb3IoMCk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKaW5kZXggYWU2YTRkMjZlNzBjMDRhYmI2ZmZkOWY2
MmNiODQ1NmRlMGU3YjA1My4uNmNmZWI5ZWNjNGRiODExZDc1YzNjYmNmMzdjYmUyYmU0ZDU5YTNi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApAQCAtODIsNyArODIsNyBAQCBzdGF0
aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4gdG9XZWJzaXRlRGF0YVR5cGUoTlNT
dHJpbmcgKndlYnNpdGVEYXRhVAogICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0
cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKICAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczsKICNlbmRpZgotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGlj
IGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHRvV2Vic2l0ZURhdGFU
eXBlcyhOU1NldCAqd2Vic2l0ZURhdGFUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCmluZGV4IGQ3
NDIwNDU5N2M3OWY1MGI2YTNlY2FkZWZiYjljZmM1MDA3M2U2MGMuLjNiYWJlYmY4MTU3YTNhZjlm
ZTk5MTQ3M2NlZTA3OTJlODRhOTAyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtODMsOCAr
ODMsOCBAQCAtICh2b2lkKWNyZWF0ZVRhYldpdGhOYW1lOihOU1N0cmluZyAqKXRhYk5hbWUgdGFi
SWNvblVSTDooTlNVUkwgKil0YWJJY29uVVJMIHNvdQogCiAtICh2b2lkKWV2YWx1YXRlU2NyaXB0
OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFtZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250
ZXh0U2VjdXJpdHlPcmlnaW46KE5TVVJMICopY29udGV4dFNlY3VyaXR5T3JpZ2luIHVzZUNvbnRl
bnRTY3JpcHRDb250ZXh0OihCT09MKXVzZUNvbnRlbnRTY3JpcHRDb250ZXh0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgTlNEaWN0aW9uYXJ5ICopKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBt
YWtlT3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8
VVJMPiBvcHRpb25hbENvbnRleHRTZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9yaWdp
biA/IG1ha2VPcHRpb25hbChVUkwoY29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBXVEY6Om51bGxv
cHQ7CisgICAgT3B0aW9uYWw8VVJMPiBvcHRpb25hbEZyYW1lVVJMID0gZnJhbWVVUkwgPyBzdGQ6
Om1ha2Vfb3B0aW9uYWwoVVJMKGZyYW1lVVJMKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9u
YWw8VVJMPiBvcHRpb25hbENvbnRleHRTZWN1cml0eU9yaWdpbiA9IGNvbnRleHRTZWN1cml0eU9y
aWdpbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChVUkwoY29udGV4dFNlY3VyaXR5T3JpZ2luKSkgOiBz
dGQ6Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lvbi0+ZXZhbHVhdGVTY3JpcHQoc2NyaXB0U291cmNl
LCBvcHRpb25hbEZyYW1lVVJMLCBvcHRpb25hbENvbnRleHRTZWN1cml0eU9yaWdpbiwgdXNlQ29u
dGVudFNjcmlwdENvbnRleHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0
dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKQEAgLTEwNCw4ICsxMDQs
OCBAQCAtICh2b2lkKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKXNjcmlwdFNvdXJjZSBmcmFt
ZVVSTDooTlNVUkwgKilmcmFtZVVSTCBjb250ZQogCiAtICh2b2lkKXJlbG9hZElnbm9yaW5nQ2Fj
aGU6KEJPT0wpaWdub3JlQ2FjaGUgdXNlckFnZW50OihOU1N0cmluZyAqKXVzZXJBZ2VudCBpbmpl
Y3RlZFNjcmlwdDooTlNTdHJpbmcgKilpbmplY3RlZFNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgT3B0aW9uYWw8U3Ry
aW5nPiBvcHRpb25hbFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IG1ha2VPcHRpb25hbChTdHJpbmco
dXNlckFnZW50KSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25h
bEluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBtYWtlT3B0aW9uYWwoU3RyaW5nKGlu
amVjdGVkU2NyaXB0KSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRp
b25hbFVzZXJBZ2VudCA9IHVzZXJBZ2VudCA/IHN0ZDo6bWFrZV9vcHRpb25hbChTdHJpbmcodXNl
ckFnZW50KSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8U3RyaW5nPiBvcHRpb25hbElu
amVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoU3RyaW5n
KGluamVjdGVkU2NyaXB0KSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgX2V4dGVuc2lvbi0+cmVsb2Fk
SWdub3JpbmdDYWNoZShpZ25vcmVDYWNoZSwgb3B0aW9uYWxVc2VyQWdlbnQsIG9wdGlvbmFsSW5q
ZWN0ZWRTY3JpcHQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJs
b2NrID0gbWFrZUJsb2NrUHRyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKV0gKEluc3BlY3Rv
cjo6RXh0ZW5zaW9uRXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghcmVzdWx0KSB7CiAgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsg
TlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IEluc3BlY3Rvcjo6ZXh0ZW5zaW9uRXJy
b3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSkgfV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDhmYjUxZGE0
YzY0ZTUzNWUzNDhiMmVhMmM0NTkwZTg4NDQ5YmRjY2MuLjBlMzQ5NGIzNzFhNWZmYmQ2Yzk4N2Vl
YTRkOTZkMDAwYTc0ZTk2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTU3LDcgKzU3LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBmb3JXS1dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlYKIAogICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKIAot
ICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4o
c2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJhc2VVUkwsIG1ha2VWZWN0
b3I8U3RyaW5nPihpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0b3I8U3RyaW5n
PihleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3Jl
OjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6OnRv
V2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSwgd2ViVmlldyA/IE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPihbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6IFdURjo6bnVs
bG9wdCB9LCBjb250ZW50V29ybGQgPyAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkIDogQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6OlVzZXJTdHlsZVNoZWV0PihzZWxmLCBXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldCB7IHNvdXJjZSwgYmFzZVVSTCwgbWFrZVZlY3RvcjxTdHJpbmc+KGluY2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzKSwgbWFrZVZlY3RvcjxTdHJpbmc+KGV4Y2x1ZGVNYXRjaFBhdHRl
cm5TdHJpbmdzKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lczo6SW5qZWN0SW5BbGxGcmFtZXMsIEFQSTo6dG9XZWJDb3JlVXNlclN0eWxlTGV2
ZWwobGV2ZWwpLCB3ZWJWaWV3ID8gT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KFt3
ZWJWaWV3IF9wYWdlXS0+d2ViUGFnZUlEKCkpIDogc3RkOjpudWxsb3B0IH0sIGNvbnRlbnRXb3Js
ZCA/ICpjb250ZW50V29ybGQtPl9jb250ZW50V29ybGQgOiBBUEk6OkNvbnRlbnRXb3JsZDo6cGFn
ZUNvbnRlbnRXb3JsZCgpKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQppbmRleCBiYmUxMzU5OGE5YTMyNjA4OTMyYzg4M2YwYmE0NDNkOWIyZDEzMDk4
Li5iMjBjYzI5YzhkNGNkZDQ0YWRhMDg1NDdkYjcyYjU3NzY0N2U2NGY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbQpAQCAtMzY4LDE0ICszNjgsMTQgQEAgc3RhdGljIE9wdGlvbmFsPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudChf
V0tBdXQKIHsKICAgICBzd2l0Y2ggKGF0dGFjaG1lbnQpIHsKICAgICBjYXNlIF9XS0F1dGhlbnRp
Y2F0b3JBdHRhY2htZW50QWxsOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgX1dLQXV0aGVudGljYXRvckF0dGFjaG1l
bnRQbGF0Zm9ybToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50OjpQbGF0Zm9ybTsKICAgICBjYXNlIF9XS0F1dGhlbnRpY2F0b3JBdHRhY2htZW50Q3Jvc3NQ
bGF0Zm9ybToKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIH0KIApAQCAtNDcxLDcgKzQ3MSw3IEBAIC0gKHZvaWQpbWFrZUNyZWRl
bnRpYWxXaXRoQ2hhbGxlbmdlOihOU0RhdGEgKiljaGFsbGVuZ2Ugb3JpZ2luOihOU1N0cmluZyAq
KW9yaWdpCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKICAgICAg
ICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gp
LCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlQ3JlYXRpb25PcHRpb25z
V2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCB0cnVl
LCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5o
YW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
Y29udmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRy
LCBXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxs
cHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92
ZShjYWxsYmFjaykpOwogI2VuZGlmCiB9CiAKQEAgLTUyMSw3ICs1MjEsNyBAQCAtICh2b2lkKWdl
dEFzc2VydGlvbldpdGhDaGFsbGVuZ2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3Ry
aW5nICopb3JpZ2luCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsK
ICAgICAgICAgfSk7CiAgICAgfTsKLSAgICBfcGFuZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3Zl
KGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9w
dGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNh
dGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0s
IHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBfcGFu
ZWwtPmhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBjb252ZXJ0VG9Db3JlUmVxdWVzdE9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgbnVs
bHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwg
bnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmluZygpLCBudWxscHRyIH0sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAzYWI4MzNjOGUwN2NmZmZiZDU4
NzM0MDczYWFjNzgxYzcwY2JlYWMxLi5kNjRhMTgzODAyMmZhYzAyNDRiYmY1NmE4NzZjOTM5YTJj
YjY2ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKQEAgLTI5NCwxNCArMjk0LDE0IEBAIE9wdGlvbmFsPGludDY0X3Q+IEljb25E
YXRhYmFzZTo6aWNvbklERm9ySWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGJvb2wmIGV4
CiAgICAgICAgIGF1dG8gaWNvbklERm9ySWNvblVSTFN0YXRlbWVudCA9IG1fZGIucHJlcGFyZUhl
YXBTdGF0ZW1lbnQoIlNFTEVDVCBJY29uSW5mby5pY29uSUQsIEljb25JbmZvLnN0YW1wIEZST00g
SWNvbkluZm8gV0hFUkUgSWNvbkluZm8udXJsID0gKD8pOyJfcyk7CiAgICAgICAgIGlmICghaWNv
bklERm9ySWNvblVSTFN0YXRlbWVudCkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJQcmVwYXJp
bmcgc3RhdGVtZW50IGljb25JREZvckljb25VUkwgZmFpbGVkIik7Ci0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogICAgICAgICBtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQgPSBpY29uSURGb3JJY29u
VVJMU3RhdGVtZW50LnZhbHVlKCkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgfQogCiAgICAgaWYg
KG1faWNvbklERm9ySWNvblVSTFN0YXRlbWVudC0+YmluZFRleHQoMSwgaWNvblVSTCkgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiRmF2aWNvbkRhdGFic2U6Omljb25JREZvcklj
b25VUkwgZmFpbGVkOiAlcyIsIG1fZGIubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IE9wdGlvbmFsPGludDY0X3Q+IHJlc3VsdDsKQEAgLTM3Niw3ICszNzYsNyBAQCBPcHRpb25hbDxp
bnQ2NF90PiBJY29uRGF0YWJhc2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25z
dCBWZWN0b3I8Y2hhcgogICAgICAgICBhdXRvIGFkZEljb25TdGF0ZW1lbnQgPSBtX2RiLnByZXBh
cmVIZWFwU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBJY29uSW5mbyAodXJsLCBzdGFtcCkgVkFMVUVT
ICg/LCAwKTsiX3MpOwogICAgICAgICBpZiAoIWFkZEljb25TdGF0ZW1lbnQpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCBhZGRJY29uIGZhaWxlZCIpOwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgbV9hZGRJY29uU3RhdGVtZW50ID0gYWRkSWNvblN0
YXRlbWVudC52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgIH0KQEAgLTM4NCwxNCArMzg0
LDE0IEBAIE9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFzZTo6YWRkSWNvbihjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IFZlY3RvcjxjaGFyCiAgICAgICAgIGF1dG8gYWRkSWNvbkRhdGFT
dGF0ZW1lbnQgPSBtX2RiLnByZXBhcmVIZWFwU3RhdGVtZW50KCJJTlNFUlQgSU5UTyBJY29uRGF0
YSAoaWNvbklELCBkYXRhKSBWQUxVRVMgKD8sID8pOyJfcyk7CiAgICAgICAgIGlmICghYWRkSWNv
bkRhdGFTdGF0ZW1lbnQpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRl
bWVudCBhZGRJY29uRGF0YSBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAg
IG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQgPSBhZGRJY29uRGF0YVN0YXRlbWVudC52YWx1ZSgpLm1v
dmVUb1VuaXF1ZVB0cigpOwogICAgIH0KIAogICAgIGlmIChtX2FkZEljb25TdGF0ZW1lbnQtPmJp
bmRUZXh0KDEsIGljb25VUkwpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIklj
b25EYXRhYmFzZTo6YWRkSWNvbiBmYWlsZWQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgbV9hZGRJY29uU3RhdGVtZW50LT5zdGVwKCk7CkBAIC00MDAsNyArNDAw
LDcgQEAgT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCwgY29uc3QgVmVjdG9yPGNoYXIKICAgICBhdXRvIGljb25JRCA9IG1fZGIubGFz
dEluc2VydFJvd0lEKCk7CiAgICAgaWYgKG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2
NCgxLCBpY29uSUQpICE9IFNRTElURV9PSyB8fCBtX2FkZEljb25EYXRhU3RhdGVtZW50LT5iaW5k
QmxvYigyLCBpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkgIT0gU1FMSVRFX09LKSB7
CiAgICAgICAgIExPR19FUlJPUigiSWNvbkRhdGFiYXNlOjphZGRJY29uIGZhaWxlZDogJXMiLCBt
X2RiLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBtX2FkZEljb25EYXRhU3RhdGVt
ZW50LT5zdGVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAppbmRleCA4YWQ4YzUz
ODllMzdkOGY5NzNlNWJkNDYzNmRmYmYzNWY5NzBhNWY4Li41MDFhNzA4MWY5ZjcyOTY3NmZjZGNi
MjY5MWJiYmIzMjQ2ZDIwZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiB3ZWJraXRBdXRo
ZW50aWNhdGlvblJlcXVlc3RHZXRBdXRoZW50aWNhdGlvbkNoYWxsZQogCiB2b2lkIHdlYmtpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdERpZEF1dGhlbnRpY2F0ZShXZWJLaXRBdXRoZW50aWNhdGlvblJl
cXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgYXV0byogY3JlZGVudGlhbCA9IHdlYmtpdENyZWRlbnRp
YWxDcmVhdGUocmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlT3IoV2ViQ29y
ZTo6Q3JlZGVudGlhbCgpKSk7CisgICAgYXV0byogY3JlZGVudGlhbCA9IHdlYmtpdENyZWRlbnRp
YWxDcmVhdGUocmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlX29yKFdlYkNv
cmU6OkNyZWRlbnRpYWwoKSkpOwogICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2lnbmFsc1tB
VVRIRU5USUNBVEVEXSwgMCwgY3JlZGVudGlhbCk7CiAgICAgd2Via2l0X2NyZWRlbnRpYWxfZnJl
ZShjcmVkZW50aWFsKTsKIH0KQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIHdlYmtpdF9hdXRoZW50
aWNhdGlvbl9yZXF1ZXN0X3NldF9wcm9wb3NlZF9jcmVkZW50aWFsKFdlYktpdEF1dGhlbnRpY2F0
aW9uUgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FVVEhFTlRJQ0FUSU9OX1JFUVVF
U1QocmVxdWVzdCkpOwogCiAgICAgaWYgKCFjcmVkZW50aWFsKSB7Ci0gICAgICAgIHJlcXVlc3Qt
PnByaXYtPnByb3Bvc2VkQ3JlZGVudGlhbCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVxdWVz
dC0+cHJpdi0+cHJvcG9zZWRDcmVkZW50aWFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NTUsOCArNDU1LDggQEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9hdXRoZW50aWNhdGUoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXEK
ICAgICBpZiAoY3JlZGVudGlhbCkKICAgICAgICAgcmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVk
ZW50aWFsID0gd2Via2l0Q3JlZGVudGlhbEdldENyZWRlbnRpYWwoY3JlZGVudGlhbCk7CiAgICAg
ZWxzZQotICAgICAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwgPSBXVEY6Om51
bGxvcHQ7Ci0gICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3Rl
bmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRp
YWwudmFsdWVPcihXZWJDb3JlOjpDcmVkZW50aWFsKCkpKTsKKyAgICAgICAgcmVxdWVzdC0+cHJp
di0+YWNjZXB0ZWRDcmVkZW50aWFsID0gc3RkOjpudWxsb3B0OworICAgIHJlcXVlc3QtPnByaXYt
PmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
cmVxdWVzdC0+cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlX29yKFdlYkNvcmU6OkNyZWRl
bnRpYWwoKSkpOwogICAgIHJlcXVlc3QtPnByaXYtPmhhbmRsZWRSZXF1ZXN0ID0gdHJ1ZTsKIH0K
IApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Y2FuY2VsKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgcmVxdWVzdC0+cHJpdi0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3Rl
bmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpDYW5jZWwpOwotICAgIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlh
bCA9IFdURjo6bnVsbG9wdDsKKyAgICByZXF1ZXN0LT5wcml2LT5hY2NlcHRlZENyZWRlbnRpYWwg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgcmVxdWVzdC0+cHJpdi0+aGFuZGxlZFJlcXVlc3QgPSB0cnVl
OwogCiAgICAgZ19zaWduYWxfZW1pdChyZXF1ZXN0LCBzaWduYWxzW0NBTkNFTExFRF0sIDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDQzYWZkMzU0OTc3NWQxYTNlMGE5MzE3MzBiMThm
ZWE4NGY5NzI3ZmYuLjZmZmZlNTlkZGQ2Mjc0YzA0MWQ5MjBjYTMyOTY3Nzg0YWUwY2VjMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRp
b25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTE2OSwxMCArMTY5LDEwIEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0V2ViQ29udGV4dEdldFdlYlZpZXdG
b3JQYWdlKG1fc2Vzc2lvbi0+cHJpdi0+d2ViQ29udGV4dCwgJnBhZ2UpOwogICAgICAgICBpZiAo
IXdlYlZpZXcpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBkaWFsb2dUeXBlID0gd2Via2l0V2Vi
Vmlld0dldEN1cnJlbnRTY3JpcHREaWFsb2dUeXBlKHdlYlZpZXcpOwogICAgICAgICBpZiAoIWRp
YWxvZ1R5cGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc3dpdGNoIChkaWFsb2dUeXBlLnZhbHVlKCkp
IHsKICAgICAgICAgY2FzZSBXRUJLSVRfU0NSSVBUX0RJQUxPR19BTEVSVDoKICAgICAgICAgICAg
IHJldHVybiBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0RGlhbG9nVHlw
ZTo6QWxlcnQ7CkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFQSTo6QXV0b21hdGlv
blNlc3Npb25DbGllbnQ6OkJyb3dzaW5nQ29udGV4dFByZXNlbnRhdGlvbiBjdXJyZW50UHJlc2Vu
dGF0aW9uT2ZQYWdlKFdlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDI1YWU5Mzc0MGMwYmE5YTBhNzdhNzY5YmJh
OTU5ZTc5MjUzNmU1ODIuLjY2NWUwZWU3NjFkNDIyOWRiODBlYzg0MThkMjc4MWU1NjAzY2M0ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3Vy
aXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCBndWludDE2IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQoV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChvcmlnaW4sIDApOwogCi0gICAgcmV0dXJuIG9yaWdp
bi0+c2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQudmFsdWVPcigwKTsKKyAgICByZXR1cm4gb3JpZ2lu
LT5zZWN1cml0eU9yaWdpbkRhdGEucG9ydC52YWx1ZV9vcigwKTsKIH0KIAogLyoqCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4
IDc2ZWU2ZDI3OWI3YTcyNjU1Njk2YjFmODEwNDhhNWFhOTE0OTdkZjIuLjY3M2Q5NTRjN2VhMWVh
MGVmODQzYWU1MzQ2ZDUwMTVkZmMzZTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNTY0LDcgKzI1NjQsNyBAQCB2
b2lkIHdlYmtpdFdlYlZpZXdEaXNtaXNzQ3VycmVudFNjcmlwdERpYWxvZyhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogT3B0aW9uYWw8V2ViS2l0U2NyaXB0RGlhbG9nVHlwZT4gd2Via2l0V2ViVmll
d0dldEN1cnJlbnRTY3JpcHREaWFsb2dUeXBlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAg
ICAgaWYgKCF3ZWJWaWV3LT5wcml2LT5jdXJyZW50U2NyaXB0RGlhbG9nKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYktpdFNjcmlwdERpYWxvZ1R5cGU+KHdlYlZpZXctPnByaXYtPmN1
cnJlbnRTY3JpcHREaWFsb2ctPnR5cGUpOwogfQpAQCAtMjgzNiw3ICsyODM2LDcgQEAgdm9pZCB3
ZWJraXRXZWJWaWV3U2V0Q29tcG9zaXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb24KIAogdm9pZCB3ZWJraXRXZWJWaWV3Q29uZmlybUNvbXBvc2l0aW9u
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICB3ZWJr
aXRXZWJWaWV3U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3Mod2ViVmlldywgdGV4dCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIHdlYmtpdFdlYlZpZXdTeW50aGVzaXplQ29t
cG9zaXRpb25LZXlQcmVzcyh3ZWJWaWV3LCB0ZXh0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbENvbXBvc2l0aW9uKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTM4MTUsNyArMzgxNSw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld1J1bkphdmFzY3JpcHRXaXRob3V0Rm9yY2VkVXNlckdlc3R1cmVzKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQp
LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmYWxzZSB9OworICAgIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9
LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmYWxzZSB9OwogICAgIHdlYmtpdFdlYlZpZXdSdW5KYXZh
U2NyaXB0V2l0aFBhcmFtcyh3ZWJWaWV3LCBzY3JpcHQsIFdURk1vdmUocGFyYW1zKSwgY2FuY2Vs
bGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7CiB9CiAKQEAgLTM4MzgsNyArMzgzOCw3IEBAIHZv
aWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGNvbnN0IGdjaGFyKiBzY3JpcHQsCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VC
X1ZJRVcod2ViVmlldykpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAotICAgIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQp
LCBVUkwgeyB9LCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH07CisgICAgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1zID0geyBTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0s
IGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUgfTsKICAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdFdpdGhQYXJhbXMod2ViVmlldywgc2NyaXB0LCBXVEZNb3ZlKHBhcmFtcyksIGNhbmNlbGxh
YmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwogfQogCkBAIC0zOTM2LDcgKzM5MzYsNyBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBjb25zdCBnY2hhcgogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0R1Jl
ZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsK
ICAgICBhdXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUo
U3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkph
dmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwg
VVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBXVEY6Om51bGxvcHQsIHdvcmxk
LmdldCgpLCBbdGFzayA9IFdURk1vdmUodGFzayldIChhdXRvJiYgcmVzdWx0KSB7CisgICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJpbmc6
OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxvcHQsIHRydWUgfSwg
c3RkOjpudWxsb3B0LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSAoYXV0byYm
IHJlc3VsdCkgewogICAgICAgICBSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25E
ZXRhaWxzOwogICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQpAQCAtMzk4MSw3ICszOTgx
LDcgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKEdPYmplY3QqIG9i
amVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGcKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkp
KTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19tZW1vcnlfb3V0cHV0X3N0cmVh
bV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVjdCkpOwotICAgIGdldFBhZ2Uo
d2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRGOChyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwgeyB9LCBm
YWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sCisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUoeyBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZ2NoYXIqPihvdXRwdXRTdHJlYW1EYXRhKSksIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51bGxv
cHQsIHRydWUgfSwKICAgICAgICAgW3Rhc2tdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAg
ICBSZWZQdHI8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKICAgICAgICAgICAgIEV4Y2VwdGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKaW5k
ZXggYTM5MjRlOWNhYTQ5NGU1ODlhOTA4YzQ3OTA5OWM1N2Q0NTczNWEzYy4uNjFmMDcxM2YxMTZk
ZWQzNWFhODY5ZDM3OWFjNDgzMDIyZjRkNDE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgRHJh
Z1NvdXJjZTo6RHJhZ1NvdXJjZShHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgIGlmICghZHJh
Zy5tX3NlbGVjdGlvbkRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZHJhZy5t
X3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWcubV9zZWxlY3Rpb25E
YXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51bGxwdHI7CiAKICAg
ICAgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZHJhZ19jb250ZXh0X2dldF9kZXZpY2UoY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azQuY3BwCmluZGV4IGQ1NWRmYjMwZjkyMDk3ZTM5ZDNhM2M3ODZlMjEyZjJmZjQwNTFmMTgu
LmZmZWUxYjA0OTI1ZmMwYjUyNjA5Y2FjZWI3NjFlNmFjYzM2MTlkYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KICAgICAgICAgaWYgKGRyYWcubV9k
cmFnLmdldCgpICE9IGd0a0RyYWcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZHJh
Zy5tX3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWcubV9zZWxlY3Rp
b25EYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBkcmFnLm1fZHJhZyA9IG51bGxwdHI7CiAK
ICAgICAgICAgR2RrRGV2aWNlKiBkZXZpY2UgPSBnZGtfZHJhZ19nZXRfZGV2aWNlKGd0a0RyYWcp
OwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0
YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvCiAgICAgICAgIGlm
IChkcmFnLm1fZHJhZy5nZXQoKSAhPSBndGtEcmFnKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGRyYWcubV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAgICAgICBkcmFn
Lm1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZHJhZy5tX2RyYWcgPSBu
dWxscHRyOwogICAgIH0pLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXQuaAppbmRleCBmOWM1ZGQ3NjA4YTA5YTExMjM0YjM0MTk0NWY2ZmU2NTg5
ZTQwM2RjLi5lOWU0OGZiMDg3ZmViN2Q5YTYzYjI3OTg3ZjI5ZGZjYjZhZTAzODcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaApAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aW9uKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBhY2NlcHQoUGxhdGZvcm1Ecm9wQ29udGV4dCosIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiA9IFdURjo6bnVsbG9wdCwgdW5zaWduZWQgPSAwKTsKKyAgICB2b2lkIGFjY2VwdChQ
bGF0Zm9ybURyb3BDb250ZXh0KiwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+ID0gc3RkOjpu
dWxsb3B0LCB1bnNpZ25lZCA9IDApOwogICAgIHZvaWQgZW50ZXIoV2ViQ29yZTo6SW50UG9pbnQm
JiwgdW5zaWduZWQgPSAwKTsKICAgICB2b2lkIHVwZGF0ZShXZWJDb3JlOjpJbnRQb2ludCYmLCB1
bnNpZ25lZCA9IDApOwogICAgIHZvaWQgbGVhdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggNmJmNDlhNDEyODljMWY3
OTlmNDdjM2U4MWM5MmZmZWM3MjAwMzAzOC4uOGNmYTcwYjgyOGEyMDQ1M2I3OTMzOGRkMGI0Y2Y0
NWIzOWY3YzBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmFj
Y2VwdChHZGtEcmFnQ29udGV4dCogZHJvcCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IHBv
c2l0aQogICAgIG1fZHJvcCA9IGRyb3A7CiAgICAgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOwogICAg
IG1fZGF0YVJlcXVlc3RDb3VudCA9IDA7Ci0gICAgbV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxs
b3B0OworICAgIG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlYkNv
cmUgbmVlZHMgdGhlIHNlbGVjdGlvbiBkYXRhIHRvIGRlY2lkZSwgc28gd2UgbmVlZCB0byBwcmVs
b2FkIHRoZQogICAgIC8vIGRhdGEgb2YgdGFyZ2V0cyB3ZSBzdXBwb3J0LiBPbmNlIGFsbCBkYXRh
IHJlcXVlc3RzIGFyZSBkb25lIHdlIHN0YXJ0CkBAIC0yNDYsOCArMjQ2LDggQEAgdm9pZCBEcm9w
VGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZv
cm1hdGlvbigpOwogCiAgICAgbV9kcm9wID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uID0gV1RG
OjpudWxsb3B0OwotICAgIG1fc2VsZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bv
c2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZSgpCkBAIC0yNzcsOCArMjc3LDggQEAgdm9p
ZCBEcm9wVGFyZ2V0Ojpkcm9wKEludFBvaW50JiYgcG9zaXRpb24sIHVuc2lnbmVkIHRpbWUpCiAg
ICAgZ3RrX2RyYWdfZmluaXNoKG1fZHJvcC5nZXQoKSwgVFJVRSwgRkFMU0UsIHRpbWUpOwogCiAg
ICAgbV9kcm9wID0gbnVsbHB0cjsKLSAgICBtX3Bvc2l0aW9uID0gV1RGOjpudWxsb3B0OwotICAg
IG1fc2VsZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc2l0aW9uID0gc3RkOjpu
dWxsb3B0OworICAgIG1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCmluZGV4IDFjZGEzYWEyMzg4ZTA3NjhiYjQ2Yzc5NTViYTJkZTEw
MGZjYjg2OTkuLjI0MDZlMGY4NjczNmU1ZDkwMmVhZTEzYTBiOTEwNDEzY2IxMGY3YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3Bw
CkBAIC0yOTQsMTQgKzI5NCwxNCBAQCB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlKCkKICAgICBhdXRv
KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1f
d2ViVmlldykpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBtX3Bv
c2l0aW9uLnZhbHVlT3IoSW50UG9pbnQoKSk7CisgICAgYXV0byBwb3NpdGlvbiA9IG1fcG9zaXRp
b24udmFsdWVfb3IoSW50UG9pbnQoKSk7CiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0
aW9uRGF0YS52YWx1ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIHsgfSk7CiAgICAgcGFnZS0+ZHJh
Z0V4aXRlZChkcmFnRGF0YSk7CiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9u
KCk7CiAKICAgICBtX2Ryb3AgPSBudWxscHRyOwotICAgIG1fcG9zaXRpb24gPSBXVEY6Om51bGxv
cHQ7Ci0gICAgbV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9zaXRpb24g
PSBzdGQ6Om51bGxvcHQ7CisgICAgbV9zZWxlY3Rpb25EYXRhID0gc3RkOjpudWxsb3B0OwogICAg
IG1fY2FuY2VsbGFibGUgPSBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAKaW5kZXggOGIxMWVhYzZkZDhhZTNm
ZDcyMmIyM2UzNDA3ZWRlNzcyNjgyNGE3Ny4uYmVmODM0YmY0NmI3ODNhNjhjOGI3OTVkOGIxNTdj
NzQyYmQ2M2JhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UG9wdXBNZW51LmNwcApAQCAtMzQsNyArMzQsNyBAQCBXZWJLaXRQb3B1cE1lbnU6Oldl
YktpdFBvcHVwTWVudShHdGtXaWRnZXQqIHdlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGll
bnQmCiAKIHN0YXRpYyB2b2lkIG1lbnVDbG9zZUNhbGxiYWNrKFdlYktpdFBvcHVwTWVudSogcG9w
dXBNZW51KQogewotICAgIHBvcHVwTWVudS0+YWN0aXZhdGVJdGVtKFdURjo6bnVsbG9wdCk7Cisg
ICAgcG9wdXBNZW51LT5hY3RpdmF0ZUl0ZW0oc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJL
aXRQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBwbGF0Zm9ybURh
dGEsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcAppbmRleCAwOWY3NjIzYmYyZGI0ZWQ5OWRhYjU3ZTM3M2U2ODQxMWQz
NmRhYmQ1Li40ODM4OGQ2OTEwZTM0OWU2OThhMTA3NDMxNWY4NjI2MjViOTBkNDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBVUkwgcmVxdWVzdFVS
TCA9IFVSTCh7IH0sIHBhZ2UucGFnZUxvYWRTdGF0ZSgpLnVybCgpKTsKLSAgICAgICAgbV9pbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNbMF0pLnZhbHVl
T3IoMCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0b2tlbnNb
MV0pLnZhbHVlT3IoMCksIHRva2Vuc1syXSk7CisgICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odG9rZW5zWzBdKS52YWx1ZV9vcigwKSwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sxXSkudmFsdWVfb3Io
MCksIHRva2Vuc1syXSk7CiAgICAgfQogCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBv
dmVycmlkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAppbmRleCBlNzgyODU0OTRjODI5YzA1Yjg2MDQ5YzU5ZTVkNGVmZjNm
ZGM5ZGY5Li5mNTczN2VkOWIzMjQ5OTE1YmI0NDE2YTkyNTYzZTRiNThhYTY1ZDJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtMTIyMyw3ICsxMjIzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VC
dXR0b25QcmVzc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgaW50IGMKICAgICBp
ZiAoYnV0dG9uID09IEdES19CVVRUT05fU0VDT05EQVJZKQogICAgICAgICBwcml2LT5jb250ZXh0
TWVudUV2ZW50LnJlc2V0KGdka19ldmVudF9jb3B5KGV2ZW50KSk7CiAKLSAgICBwcml2LT5wYWdl
UHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgeyBjbGFt
cFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSwgY2xpY2tDb3VudCwgV1RGOjpudWxs
b3B0KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQoZXZlbnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0s
IGNsaWNrQ291bnQsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUJ1dHRvblJlbGVhc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgaW50
IGNsaWNrQ291bnQsIGRvdWJsZSB4LCBkb3VibGUgeSwgR3RrR2VzdHVyZSogZ2VzdHVyZSkKQEAg
LTEyMzksNyArMTIzOSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUmVs
ZWFzZWQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBpbnQKICAgICBhdXRvKiBzZXF1
ZW5jZSA9IGd0a19nZXN0dXJlX3NpbmdsZV9nZXRfY3VycmVudF9zZXF1ZW5jZShHVEtfR0VTVFVS
RV9TSU5HTEUoZ2VzdHVyZSkpOwogICAgIGd0a19nZXN0dXJlX3NldF9zZXF1ZW5jZV9zdGF0ZShn
ZXN0dXJlLCBzZXF1ZW5jZSwgR1RLX0VWRU5UX1NFUVVFTkNFX0NMQUlNRUQpOwogCi0gICAgcHJp
di0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZ3RrX2dl
c3R1cmVfZ2V0X2xhc3RfZXZlbnQoZ2VzdHVyZSwgc2VxdWVuY2UpLCB7IGNsYW1wVG9JbnRlZ2Vy
KHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9LCBjbGlja0NvdW50LCBXVEY6Om51bGxvcHQpKTsKKyAg
ICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChn
dGtfZ2VzdHVyZV9nZXRfbGFzdF9ldmVudChnZXN0dXJlLCBzZXF1ZW5jZSksIHsgY2xhbXBUb0lu
dGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0sIGNsaWNrQ291bnQsIHN0ZDo6bnVsbG9wdCkp
OwogfQogI2VuZGlmCiAKQEAgLTEyNTksNyArMTI1OSw3IEBAIHN0YXRpYyBib29sIHNob3VsZElu
dmVydERpcmVjdGlvbkZvclNjcm9sbEV2ZW50KFdlYkhpdFRlc3RSZXN1bHREYXRhOjpJc1Njcm9s
bGJhCiB9CiAKICNpZiAhVVNFKEdUSzQpCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhh
bmRsZVdoZWVsRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudCog
ZXZlbnQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNlPiBwaGFzZSA9IFdURjo6bnVsbG9w
dCwgT3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IG1vbWVudHVtID0gV1RGOjpudWxsb3B0
KQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJXaGVl
bEV2ZW50OjpQaGFzZT4gcGhhc2UgPSBzdGQ6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVsRXZl
bnQ6OlBoYXNlPiBtb21lbnR1bSA9IHN0ZDo6bnVsbG9wdCkKIHsKICAgICBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSB3ZWJraXRXZWJWaWV3QmFzZVZpZXdHZXN0dXJlQ29udHJv
bGxlcih3ZWJWaWV3QmFzZSk7CiAgICAgaWYgKGNvbnRyb2xsZXIgJiYgY29udHJvbGxlci0+aXNT
d2lwZUdlc3R1cmVFbmFibGVkKCkpIHsKQEAgLTEyNzUsNyArMTI3NSw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlSGFuZGxlV2hlZWxFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIEdkCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
d0Jhc2UtPnByaXY7CiAgICAgQVNTRVJUKCFwcml2LT5kaWFsb2cpOwogICAgIGlmIChwaGFzZSkK
LSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVs
RXZlbnQoZXZlbnQsIHBoYXNlLnZhbHVlKCksIG1vbWVudHVtLnZhbHVlT3IoV2ViV2hlZWxFdmVu
dDo6UGhhc2U6OlBoYXNlTm9uZSkpKTsKKyAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVX
aGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIHBoYXNlLnZhbHVlKCksIG1vbWVu
dHVtLnZhbHVlX29yKFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUpKSk7CiAgICAgZWxz
ZQogICAgICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hl
ZWxFdmVudChldmVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKaW5kZXggOGIwYzg5MGMyMWJkMmU1M2Q3ODAzZjIw
ZThkZmE0MGM3YzIxMDJiYy4uOTdkMDlkZmZiYzY3NmNjNWNkMzg1NTVjMTEyNWI0NDBiZWM3ZDEy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdHdGsuY3BwCkBAIC00NjMsNSArNDYzLDUgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tncm91bmRfY29sb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR2RrUkdCQSogcmdiYSkK
ICAgICBnX3JldHVybl9pZl9mYWlsKHJnYmEpOwogCiAgICAgYXV0byYgcGFnZSA9ICp3ZWJraXRX
ZWJWaWV3QmFzZUdldFBhZ2UocmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3QmFzZSo+KHdl
YlZpZXcpKTsKLSAgICAqcmdiYSA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVPcihXZWJD
b3JlOjpDb2xvcjo6d2hpdGUpOworICAgICpyZ2JhID0gcGFnZS5iYWNrZ3JvdW5kQ29sb3IoKS52
YWx1ZV9vcihXZWJDb3JlOjpDb2xvcjo6d2hpdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQppbmRleCA4Y2MzMzk3NmMzMzQ2NTMzN2Q1
NjAwMDIwNWMzZjUzZTE2Mjg2MTQ5Li5jNzIzYTczYjhhNmUwN2E0YzE5MzE3N2RlZWEzOTEwOGE0
NWExOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbQpAQCAtNjU4LDIzICs2NTgsMjMgQEAgLSAodm9pZClfcHJvY2Vzc1dpbGxTd2FwT3JE
aWRFeGl0CiAgICAgX2FuaW1hdGVkUmVzaXplT3JpZ2luYWxDb250ZW50V2lkdGggPSAwOwogICAg
IF9hbmltYXRlZFJlc2l6ZU9sZEJvdW5kcyA9IHsgfTsKICAgICBbX2NvbnRlbnRWaWV3IHNldEhp
ZGRlbjpOT107Ci0gICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKLSAg
ICBfdW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICBfc2Nyb2xs
T2Zmc2V0VG9SZXN0b3JlID0gc3RkOjpudWxsb3B0OworICAgIF91bm9ic2N1cmVkQ2VudGVyVG9S
ZXN0b3JlID0gc3RkOjpudWxsb3B0OwogICAgIF9zY3JvbGxWaWV3QmFja2dyb3VuZENvbG9yID0g
V2ViQ29yZTo6Q29sb3IoKTsKICAgICBfaW52b2tpbmdVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxi
YWNrID0gTk87CiAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvclVJU2Ny
b2xsVmlld0RlbGVnYXRlQ2FsbGJhY2sgPSBOTzsKICAgICBfZGlkRGVmZXJVcGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzRm9yQW55UmVhc29uID0gTk87CiAgICAgX2RpZERlZmVyVXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0c0ZvclVuc3RhYmxlU2Nyb2xsVmlldyA9IE5POwogICAgIF9jdXJyZW50bHlB
ZGp1c3RpbmdTY3JvbGxWaWV3SW5zZXRzRm9yS2V5Ym9hcmQgPSBOTzsKLSAgICBfbGFzdFNlbnRW
aWV3TGF5b3V0U2l6ZSA9IFdURjo6bnVsbG9wdDsKLSAgICBfbGFzdFNlbnRNYXhpbXVtVW5vYnNj
dXJlZFNpemUgPSBXVEY6Om51bGxvcHQ7Ci0gICAgX2xhc3RTZW50RGV2aWNlT3JpZW50YXRpb24g
PSBXVEY6Om51bGxvcHQ7CisgICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSBzdGQ6Om51bGxv
cHQ7CisgICAgX2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplID0gc3RkOjpudWxsb3B0Owor
ICAgIF9sYXN0U2VudERldmljZU9yaWVudGF0aW9uID0gc3RkOjpudWxsb3B0OwogCi0gICAgX2Zy
b3plblZpc2libGVDb250ZW50UmVjdCA9IFdURjo6bnVsbG9wdDsKLSAgICBfZnJvemVuVW5vYnNj
dXJlZENvbnRlbnRSZWN0ID0gV1RGOjpudWxsb3B0OworICAgIF9mcm96ZW5WaXNpYmxlQ29udGVu
dFJlY3QgPSBzdGQ6Om51bGxvcHQ7CisgICAgX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgIF9maXJzdFBhaW50QWZ0ZXJDb21taXRMb2FkVHJhbnNhY3Rp
b25JRCA9IHsgfTsKLSAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIF9sYXN0VHJhbnNhY3Rpb25JRCA9IHsgfTsKIApAQCAtNzk0LDcg
Kzc5NCw3IEBAIC0gKHZvaWQpX3RyYWNrVHJhbnNhY3Rpb25Db21taXQ6KGNvbnN0IFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKWxheWVyCiAgICAgICAgIGF1dG8gdGltZVNpbmNl
Rmlyc3RSZXF1ZXN0V2l0aFBlbmRpbmdDb21taXQgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtICpf
dGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdDsKICAg
ICAgICAgaWYgKHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0ID4gZGVsYXlC
ZWZvcmVOb0NvbW1pdHNMb2dnaW5nKQogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiJXAgKHBhZ2VQcm94eUlEPSVsbHUpIC1bV0tXZWJWaWV3IF9kaWRDb21taXRMYXllclRyZWU6
XSAtIGZpbmFsbHkgcmVjZWl2ZWQgY29tbWl0ICUuMmZzIGFmdGVyIHZpc2libGUgY29udGVudCBy
ZWN0IHVwZGF0ZSByZXF1ZXN0OyB0cmFuc2FjdGlvbklEICVsbHUiLCBzZWxmLCBfcGFnZS0+aWRl
bnRpZmllcigpLnRvVUludDY0KCksIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29t
bWl0LnZhbHVlKCksIGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKS50b1VJbnQ2
NCgpKTsKLSAgICAgICAgX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlV2l0aFBl
bmRpbmdDb21taXQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF90aW1lT2ZGaXJzdFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0ID0gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIApAQCAtODMxLDEzICs4MzEsMTMgQEAgLSAoQk9PTClfcmVzdG9yZVNjcm9sbEFuZFpvb21T
dGF0ZUZvclRyYW5zYWN0aW9uOihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVQKICAgICBp
ZiAoIV9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0b3JlIHx8IGxheWVyVHJlZVRyYW5z
YWN0aW9uLnRyYW5zYWN0aW9uSUQoKSA8IF9maXJzdFRyYW5zYWN0aW9uSURBZnRlclBhZ2VSZXN0
b3JlLnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIF9maXJzdFRyYW5zYWN0aW9u
SURBZnRlclBhZ2VSZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgIF9maXJzdFRyYW5zYWN0aW9u
SURBZnRlclBhZ2VSZXN0b3JlID0gc3RkOjpudWxsb3B0OwogCiAgICAgQk9PTCBuZWVkVXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0cyA9IE5POwogCiAgICAgaWYgKF9zY3JvbGxPZmZzZXRUb1Jlc3Rv
cmUpIHsKICAgICAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBzY2FsZWRTY3JvbGxPZmZzZXQgPSBf
c2Nyb2xsT2Zmc2V0VG9SZXN0b3JlLnZhbHVlKCk7Ci0gICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jl
c3RvcmUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbDxmbG9h
dD4oY29udGVudFpvb21TY2FsZShzZWxmKSwgX3NjYWxlVG9SZXN0b3JlKSkgewogICAgICAgICAg
ICAgc2NhbGVkU2Nyb2xsT2Zmc2V0LnNjYWxlKF9zY2FsZVRvUmVzdG9yZSk7CkBAIC04NTIsNyAr
ODUyLDcgQEAgLSAoQk9PTClfcmVzdG9yZVNjcm9sbEFuZFpvb21TdGF0ZUZvclRyYW5zYWN0aW9u
Oihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVQKIAogICAgIGlmIChfdW5vYnNjdXJlZENl
bnRlclRvUmVzdG9yZSkgewogICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHVub2JzY3VyZWRD
ZW50ZXJUb1Jlc3RvcmUgPSBfdW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZS52YWx1ZSgpOwotICAg
ICAgICBfdW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
X3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYg
KFdURjo6YXJlRXNzZW50aWFsbHlFcXVhbDxmbG9hdD4oY29udGVudFpvb21TY2FsZShzZWxmKSwg
X3NjYWxlVG9SZXN0b3JlKSkgewogICAgICAgICAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0ID0g
VUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNlbGYuYm91bmRzLCBfb2JzY3VyZWRJbnNldHMpOwpAQCAt
OTcxLDcgKzk3MSw3IEBAIC0gKHZvaWQpX3Jlc3RvcmVQYWdlU2Nyb2xsUG9zaXRpb246KE9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uCiAgICAgaWYgKHNjcm9sbFBv
c2l0aW9uKQogICAgICAgICBfc2Nyb2xsT2Zmc2V0VG9SZXN0b3JlID0gV2ViQ29yZTo6U2Nyb2xs
YWJsZUFyZWE6OnNjcm9sbE9mZnNldEZyb21Qb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50KHNj
cm9sbFBvc2l0aW9uLnZhbHVlKCkpLCBXZWJDb3JlOjp0b0Zsb2F0U2l6ZShzY3JvbGxPcmlnaW4p
KTsKICAgICBlbHNlCi0gICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBfb2JzY3VyZWRJbnNldHNXaGVuU2F2ZWQgPSBvYnNjdXJlZEluc2V0czsKICAgICBfc2NhbGVU
b1Jlc3RvcmUgPSBzY2FsZTsKQEAgLTE2NDYsNyArMTY0Niw3IEBAIC0gKHZvaWQpX3Njcm9sbFZp
ZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgYXN5bmNocm9ub3VzbHlIYW5kbGVTY3JvbGxF
dmVudDooCiAgICAgfQogCiAgICAgaWYgKHNjcm9sbEV2ZW50LnBoYXNlID09IFVJU2Nyb2xsUGhh
c2VCZWdhbikgewotICAgICAgICBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZSA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgX2N1cnJlbnRTY3JvbGxHZXN0dXJlU3RhdGUgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIF93aGVlbEV2ZW50Q291bnRJbkN1cnJlbnRTY3JvbGxHZXN0dXJlID0gMDsKICAg
ICB9CiAKQEAgLTIxNjksNyArMjE2OSw3IEBAIC0gKHZvaWQpX2RpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lCiAKIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFNpemUgYWN0aXZlTWF4aW11
bVVub2JzY3VyZWRTaXplKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgQ0dSZWN0JiBib3VuZHMp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSh3ZWJWaWV3LT5fbWF4aW11bVVub2Jz
Y3VyZWRTaXplT3ZlcnJpZGUudmFsdWVPcihib3VuZHMuc2l6ZSkpOworICAgIHJldHVybiBXZWJD
b3JlOjpGbG9hdFNpemUod2ViVmlldy0+X21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLnZh
bHVlX29yKGJvdW5kcy5zaXplKSk7CiB9CiAKIHN0YXRpYyBpbnQzMl90IGFjdGl2ZU9yaWVudGF0
aW9uKFdLV2ViVmlldyAqd2ViVmlldykKQEAgLTI0MTksOCArMjQxOSw4IEBAIC0gKHZvaWQpX25h
dmlnYXRpb25HZXN0dXJlRGlkQmVnaW4KIAogLSAodm9pZClfbmF2aWdhdGlvbkdlc3R1cmVEaWRF
bmQKIHsKLSAgICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gV1RGOjpudWxsb3B0OwotICAg
IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QgPSBXVEY6Om51bGxvcHQ7CisgICAgX2Zyb3pl
blZpc2libGVDb250ZW50UmVjdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBfZnJvemVuVW5vYnNjdXJl
ZENvbnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKF9jb250ZW50Vmlld1Nob3Vs
ZEJlY29tZUZpcnN0UmVzcG9uZGVyQWZ0ZXJOYXZpZ2F0aW9uR2VzdHVyZSkgewogICAgICAgICBp
ZiAoc2VsZi53aW5kb3cgJiYgIVtfY29udGVudFZpZXcgaXNGaXJzdFJlc3BvbmRlcl0pCkBAIC0y
NTQzLDcgKzI1NDMsNyBAQCAtICh2b2lkKV9zZXRVSUV2ZW50QXR0cmlidXRpb246KFVJRXZlbnRB
dHRyaWJ1dGlvbiAqKWF0dHJpYnV0aW9uCiAgICAgICAgICk7CiAgICAgICAgIF9wYWdlLT5zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIF9wYWdlLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEY6Om51bGxvcHQp
OworICAgICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0
KTsKICNlbmRpZgogfQogCkBAIC0yNTcxLDcgKzI1NzEsNyBAQCAtIChDR1JlY3QpX2NvbnRlbnRW
aXNpYmxlUmVjdAogLSAoQ0dTaXplKV9taW5pbXVtTGF5b3V0U2l6ZU92ZXJyaWRlCiB7CiAgICAg
QVNTRVJUKF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlKTsKLSAgICByZXR1cm4gX3ZpZXdMYXlvdXRT
aXplT3ZlcnJpZGUudmFsdWVPcihDR1NpemVaZXJvKTsKKyAgICByZXR1cm4gX3ZpZXdMYXlvdXRT
aXplT3ZlcnJpZGUudmFsdWVfb3IoQ0dTaXplWmVybyk7CiB9CiAKIC0gKHZvaWQpX3NldFZpZXdM
YXlvdXRTaXplT3ZlcnJpZGU6KENHU2l6ZSl2aWV3TGF5b3V0U2l6ZU92ZXJyaWRlCkBAIC0yNTg2
LDcgKzI1ODYsNyBAQCAtICh2b2lkKV9zZXRWaWV3TGF5b3V0U2l6ZU92ZXJyaWRlOihDR1NpemUp
dmlld0xheW91dFNpemVPdmVycmlkZQogLSAoQ0dTaXplKV9tYXhpbXVtVW5vYnNjdXJlZFNpemVP
dmVycmlkZQogewogICAgIEFTU0VSVChfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUpOwot
ICAgIHJldHVybiBfbWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUudmFsdWVPcihDR1NpemVa
ZXJvKTsKKyAgICByZXR1cm4gX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLnZhbHVlX29y
KENHU2l6ZVplcm8pOwogfQogCiAtICh2b2lkKV9zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVy
cmlkZTooQ0dTaXplKXNpemUKQEAgLTMxMzgsMTQgKzMxMzgsMTQgQEAgLSAodm9pZClfb3ZlcnJp
ZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOihDR1NpemUpbWluaW11bUxh
eW91dFNpemUKIAogLSAodm9pZClfY2xlYXJPdmVycmlkZUxheW91dFBhcmFtZXRlcnMKIHsKLSAg
ICBfdmlld0xheW91dFNpemVPdmVycmlkZSA9IFdURjo6bnVsbG9wdDsKLSAgICBfbWF4aW11bVVu
b2JzY3VyZWRTaXplT3ZlcnJpZGUgPSBXVEY6Om51bGxvcHQ7CisgICAgX3ZpZXdMYXlvdXRTaXpl
T3ZlcnJpZGUgPSBzdGQ6Om51bGxvcHQ7CisgICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJy
aWRlID0gc3RkOjpudWxsb3B0OwogfQogCi1zdGF0aWMgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeShOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1lbnRQYWlycywgYm9v
bCB2aWV3cG9ydEZpdEVuYWJsZWQpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpWaWV3
cG9ydEFyZ3VtZW50cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeShOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1lbnRQYWlycywgYm9vbCB2
aWV3cG9ydEZpdEVuYWJsZWQpCiB7CiAgICAgaWYgKCF2aWV3cG9ydEFyZ3VtZW50UGFpcnMpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cyhXZWJD
b3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCmluZGV4
IGRhMGU0ZjhlMTRlMmNlMWE5YjdlOGIzOWNhOWQyMTZkMTAwZDI1ZWQuLmNlMWZiZTBhZDllN2Vl
NmNkMzdhNjAyOTdiNmEyZjVlN2JmNGFiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KQEAgLTQwNCw3ICs0MDQs
NyBAQCAtICh2b2lkKV9zZXRVSUV2ZW50QXR0cmlidXRpb25Gb3JUZXN0aW5nOihVSUV2ZW50QXR0
cmlidXRpb24gKilhdHRyaWJ1dGlvbiB3aXRoTgogCiAgICAgICAgIF9wYWdlLT5zZXRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIF9wYWdlLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEY6Om51bGxvcHQpOworICAg
ICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc3RkOjpudWxsb3B0KTsKICNl
bmRpZgogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
bWFjL1dLV2ViVmlld01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tX
ZWJWaWV3TWFjLm1tCmluZGV4IDQzZDE2YWQyOGY1NDFhNmZmN2JlYzIzMjgwMjU4NjI4ODMzYzNh
YTQuLmE2ZTIwYTUzOWUwYjc3MjkyYWEwZGVjM2RhODlmMGY2MTY1YWQ5Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJWaWV3TWFjLm1tCkBAIC03Miw3ICs3
Miw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gdG9Db3JlU2Ny
b2xsYmFyU3R5bGUoX1dLT3ZlcmxheVNjcm9sbGJhCiAgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xs
YmFyU3R5bGVBdXRvbWF0aWM6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEBpbnRlcmZhY2UgV0tX
ZWJWaWV3IChXS0ltcGxlbWVudGF0aW9uTWFjKSA8TlNUZXh0SW5wdXRDbGllbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCmluZGV4IGQ1MzNhMTQ5YmQ2Mjgw
NzQwNjI0NGU1MTUwYWFlOTkwZmVkNGUxY2EuLmU2OTk1ZTI2MmRjZTdhYjQxMWQyYTJiNzdjM2Fm
OTExMzZmZmU0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3
LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChz
dHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCkKICAgICBpZiAoZmlsdGVyUmVz
dWx0LmhhbmRsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UoKS5oYW5kbGVLZXlib2Fy
ZEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgZXZlbnQtPnByZXNz
ZWQgPyBmaWx0ZXJSZXN1bHQua2V5VGV4dCA6IFN0cmluZygpLCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50OjpIYW5kbGVkQnlJbnB1dE1ldGhvZDo6Tm8sIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
KSk7CisgICAgcGFnZSgpLmhhbmRsZUtleWJvYXJkRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJLZXli
b2FyZEV2ZW50KGV2ZW50LCBldmVudC0+cHJlc3NlZCA/IGZpbHRlclJlc3VsdC5rZXlUZXh0IDog
U3RyaW5nKCksIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kOjpO
bywgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAogdm9pZCBWaWV3OjpzeW50aGVz
aXplQ29tcG9zaXRpb25LZXlQcmVzcyhjb25zdCBTdHJpbmcmIHRleHQsIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYgdW5kZXJsaW5lcywgT3B0aW9uYWw8
RWRpdGluZ1JhbmdlPiYmIHNlbGVjdGlvblJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwCmluZGV4IDVlZGZlNzZhMDc2NjBl
NTAyYTUyNmEwZDdhOWQ5YWM4NWNkMjk4NDEuLjk5MTZmM2Q3YTA3ODdiYzFlMzM2YjM0NThlNjQw
NDFjMTc4NjQyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V2ViS2l0UG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFBvcHVwTWVudS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViS2l0UG9wdXBNZW51OjpX
ZWJLaXRQb3B1cE1lbnUoV0tXUEU6OlZpZXcmIHZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGll
bnQmIGMKIAogc3RhdGljIHZvaWQgbWVudUNsb3NlQ2FsbGJhY2soV2ViS2l0UG9wdXBNZW51KiBw
b3B1cE1lbnUpCiB7Ci0gICAgcG9wdXBNZW51LT5hY3RpdmF0ZUl0ZW0oV1RGOjpudWxsb3B0KTsK
KyAgICBwb3B1cE1lbnUtPmFjdGl2YXRlSXRlbShzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdl
YktpdFBvcHVwTWVudTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdl
YlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIHBsYXRmb3Jt
RGF0YSwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYktp
dFBvcHVwTWVudTo6c2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtSW5kZXgpCiB2b2lkIFdlYktpdFBv
cHVwTWVudTo6YWN0aXZhdGVJdGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAg
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBN
ZW51KHRoaXMsIGl0ZW1JbmRleC52YWx1ZU9yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlT3IoLTEpKSk7
CisgICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUlu
ZGV4LnZhbHVlX29yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlX29yKC0xKSkpOwogICAgIGlmIChtX21l
bnUpIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fbWVu
dS5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhp
cyk7CiAgICAgICAgIG1fbWVudSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAppbmRleCA1OTYzNjY4NTViZjM1
ZWU1NDEwMWM2MGRlNWQ1YTM5NTY3MTBiMGMxLi4yMjQwMzA0Yzk2MWUxMDM4OTJkZWJmMjgzM2Iw
MDFiZjAwMWRiYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdFdlYlZpZXdXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV2ViS2l0V2ViVmlld1dQRS5jcHAKQEAgLTIyNSw1ICsyMjUsNSBAQCB2b2lkIHdlYmtpdF93
ZWJfdmlld19nZXRfYmFja2dyb3VuZF9jb2xvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRDb2xvciogYwogICAgIGF1dG8mIHBhZ2UgPSB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3
KTsKIAogICAgIGF1dG8mIHdlYkNvcmVDb2xvciA9IHBhZ2UuYmFja2dyb3VuZENvbG9yKCk7Ci0g
ICAgd2Via2l0Q29sb3JGaWxsRnJvbVdlYkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IudmFsdWVPcihX
ZWJDb3JlOjpDb2xvcjo6d2hpdGUpLCBjb2xvcik7CisgICAgd2Via2l0Q29sb3JGaWxsRnJvbVdl
YkNvcmVDb2xvcih3ZWJDb3JlQ29sb3IudmFsdWVfb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKSwg
Y29sb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCmluZGV4IDgwNDkxODJlNjg3
YzkxZDcyNjQwM2E3YjMxODRmNTQ5YmQ2NzI1N2MuLmUzNWU1MTRiMzMyYmQzZTBiMzkxYzI1YTNh
ZjcwNjQ1ZDljOWIyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgU2Vjb25kcyBTaW11bGF0ZWRJbnB1dEtleUZyYW1lOjptYXhpbXVtRHVyYXRpb24o
KSBjb25zdAogICAgIC8vIFRoZSAiY29tcHV0ZSB0aGUgdGljayBkdXJhdGlvbiIgYWxnb3JpdGht
ICjCpzE3LjQgRGlzcGF0Y2hpbmcgQWN0aW9ucykuCiAgICAgU2Vjb25kcyByZXN1bHQ7CiAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IHN0YXRlcykKLSAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVz
dWx0LCBlbnRyeS5zZWNvbmQuZHVyYXRpb24udmFsdWVPcihTZWNvbmRzKDApKSk7CisgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25kLmR1cmF0aW9uLnZhbHVlX29y
KFNlY29uZHMoMCkpKTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjprZXlGcmFtZVRyYW5zaXRpb25E
dXJhdGlvblRpbWVyRmlyZWQoKQogCiAgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxl
dGUoKSkgewogICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhjaGFuZ2UobV9rZXlGcmFtZVRy
YW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgICAgIGZpbmlzaChXVEY6
Om51bGxvcHQpOworICAgICAgICBmaW5pc2goc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAKQEAg
LTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlv
blRvTmV4dEtleUZyYW1lKCkKIHsKICAgICArK21fa2V5ZnJhbWVJbmRleDsKICAgICBpZiAobV9r
ZXlmcmFtZUluZGV4ID09IG1fa2V5ZnJhbWVzLnNpemUoKSkgewotICAgICAgICBmaW5pc2hEaXNw
YXRjaGluZyhXVEY6Om51bGxvcHQpOworICAgICAgICBmaW5pc2hEaXNwYXRjaGluZyhzdGQ6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9p
ZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRJbnB1dFNvdXJjZVN0
YXRlKCkKIHsKICAgICBpZiAoaXNLZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0ZSgpKSB7CiAgICAg
ICAgIGF1dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX2tleUZyYW1lVHJhbnNpdGlvbkNvbXBs
ZXRpb25IYW5kbGVyLCBudWxscHRyKTsKLSAgICAgICAgZmluaXNoKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGZpbmlzaChzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDcsMzQgKzIwNywzNCBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNp
dGlvbkJldHdlZW5LZXlGcmFtZXMoY29uc3QgU2ltdWxhdGVkSW5wdXRLZQogdm9pZCBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXI6OnJlc29sdmVMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgY3VycmVudExvY2F0aW9uLCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24s
IE1vdXNlTW92ZU9yaWdpbiBvcmlnaW4sIE9wdGlvbmFsPFN0cmluZz4gbm9kZUhhbmRsZSwgRnVu
Y3Rpb248dm9pZCAoT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFsb2Nh
dGlvbikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjdXJyZW50TG9jYXRpb24sIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJlbnRMb2NhdGlvbiwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAob3JpZ2lu
KSB7CiAgICAgY2FzZSBNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0OgotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihsb2NhdGlvbi52YWx1ZSgpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihsb2NhdGlvbi52YWx1ZSgpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1vdXNlTW92ZU9yaWdpbjo6UG9pbnRlcjogewogICAgICAgICBXZWJD
b3JlOjpJbnRQb2ludCBkZXN0aW5hdGlvbihjdXJyZW50TG9jYXRpb24pOwogICAgICAgICBkZXN0
aW5hdGlvbi5tb3ZlQnkobG9jYXRpb24udmFsdWUoKSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGRlc3RpbmF0aW9uLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihkZXN0aW5hdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgTW91c2VNb3ZlT3JpZ2luOjpFbGVtZW50OiB7CiAgICAgICAgIG1fY2xpZW50LnZpZXdw
b3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnQobV9wYWdlLCBtX2ZyYW1lSUQsIG5vZGVIYW5k
bGUudmFsdWUoKSwgW2Rlc3RpbmF0aW9uID0gbG9jYXRpb24udmFsdWUoKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGVycm9yKTsKKyAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIGVycm9yKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW5WaWV3Q2Vu
dGVyUG9pbnQpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoRWxlbWVudE5vdEludGVyYWN0
YWJsZSkpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwg
QVVUT01BVElPTl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShFbGVtZW50Tm90SW50ZXJhY3RhYmxl
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBkZXN0aW5hdGlvbi5tb3ZlQnkoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKSk7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihkZXN0aW5hdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlc3RpbmF0aW9uLCBzdGQ6Om51bGxvcHQpOwogICAg
ICAgICB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYyLDIwICsyNjIsMjAgQEAgdm9p
ZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUo
U2ltdWxhdGVkSW5wdXRTb3VyY2UKICNlbmRpZgogCiAgICAgICAgIGlucHV0U291cmNlLnN0YXRl
ID0gbmV3U3RhdGU7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgfTsKIAogICAgIHN3
aXRjaCAoaW5wdXRTb3VyY2UudHlwZSkgewogICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2VU
eXBlOjpOdWxsOgogICAgICAgICAvLyBUaGUgbWF4aW11bSBkdXJhdGlvbiBpcyBoYW5kbGVkIGF0
IHRoZSBrZXlmcmFtZSBsZXZlbCBieSBtX2tleUZyYW1lVHJhbnNpdGlvbkR1cmF0aW9uVGltZXIu
Ci0gICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICBl
dmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTaW11bGF0ZWRJbnB1dFNvdXJjZVR5cGU6Ok1vdXNlOgogICAgIGNhc2UgU2ltdWxhdGVk
SW5wdXRTb3VyY2VUeXBlOjpQZW46IHsKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRF
UkFDVElPTlMpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQot
ICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBv
aW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmll
d3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRT
b3VyY2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNo
RmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2
ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9j
YXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5v
ZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwg
ZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShP
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25D
b21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewog
ICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJvcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzA1LDkgKzMwNSw5IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNl
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGEubG9jYXRpb24gIT0gYi5sb2NhdGlvbikgewogICAg
ICAgICAgICAgICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVw
XTogc2ltdWxhdGluZyBNb3VzZU1vdmUgZnJvbSAoJWQsICVkKSB0byAoJWQsICVkKSBmb3IgdHJh
bnNpdGlvbiB0byAlZC4lZCIsIHRoaXMsIGEubG9jYXRpb24udmFsdWUoKS54KCksIGEubG9jYXRp
b24udmFsdWUoKS55KCksIGIubG9jYXRpb24udmFsdWUoKS54KCksIGIubG9jYXRpb24udmFsdWUo
KS55KCksIG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGludGVycG9sYXRlIG1vdXNlbW92ZXMg
cGVyIHRoZSAicGVyZm9ybSBhIHBvaW50ZXIgbW92ZSIgYWxnb3JpdGhtICjCpzE3LjQgRGlzcGF0
Y2hpbmcgQWN0aW9ucykuCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUlu
dGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFjdGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VC
dXR0b24udmFsdWVPcihNb3VzZUJ1dHRvbjo6Tm9uZSksIGIubG9jYXRpb24udmFsdWUoKSwgcG9p
bnRlclR5cGUsIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAg
ICAgbV9jbGllbnQuc2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKG1fcGFnZSwgTW91c2VJbnRlcmFj
dGlvbjo6TW92ZSwgYi5wcmVzc2VkTW91c2VCdXR0b24udmFsdWVfb3IoTW91c2VCdXR0b246Ok5v
bmUpLCBiLmxvY2F0aW9uLnZhbHVlKCksIHBvaW50ZXJUeXBlLCBXVEZNb3ZlKGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXZlbnRE
aXNwYXRjaEZpbmlzaGVkKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgZXZlbnREaXNw
YXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0pOwogI2VuZGlmIC8vIEVOQUJM
RShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQogICAgICAgICBicmVhazsKQEAgLTMxNiw3
ICszMTYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0
U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVS
X1RPVUNIX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlT3IoV2Vi
Q29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlT3IoTW91c2VNb3Zl
T3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNw
YXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShPcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJy
b3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24u
dmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVl
X29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwg
JmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVk
KV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3Ip
IHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMzMSwxNSArMzMxLDE1IEBAIHZvaWQgU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0
U291cmNlCiAgICAgICAgICAgICAvLyBUaGUgImRpc3BhdGNoIGEgcG9pbnRlcntEb3duLFVwLE1v
dmV9IGFjdGlvbiIgYWxnb3JpdGhtcyAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgogICAg
ICAgICAgICAgaWYgKCFhLnByZXNzZWRNb3VzZUJ1dHRvbiAmJiBiLnByZXNzZWRNb3VzZUJ1dHRv
bikgewogICAgICAgICAgICAgICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyWyVwXTogc2ltdWxhdGluZyBUb3VjaERvd24gQCAoJWQsICVkKSBmb3IgdHJhbnNpdGlv
biB0byAlZC4lZCIsIHRoaXMsIGIubG9jYXRpb24udmFsdWUoKS54KCksIGIubG9jYXRpb24udmFs
dWUoKS55KCksIG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwotICAg
ICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRv
dWNoSW50ZXJhY3Rpb246OlRvdWNoRG93biwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEY6Om51bGxv
cHQsIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQuc2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6
VG91Y2hEb3duLCBiLmxvY2F0aW9uLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShldmVu
dERpc3BhdGNoRmluaXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYS5wcmVzc2VkTW91
c2VCdXR0b24gJiYgIWIucHJlc3NlZE1vdXNlQnV0dG9uKSB7CiAgICAgICAgICAgICAgICAgTE9H
KEF1dG9tYXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXJbJXBdOiBzaW11bGF0aW5nIExp
ZnRVcCBAICglZCwgJWQpIGZvciB0cmFuc2l0aW9uIHRvICVkLiVkIiwgdGhpcywgYi5sb2NhdGlv
bi52YWx1ZSgpLngoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLnkoKSwgbV9rZXlmcmFtZUluZGV4LCBt
X2lucHV0U291cmNlU3RhdGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxh
dGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6TGlmdFVwLCBiLmxv
Y2F0aW9uLnZhbHVlKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNo
ZWQpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24o
bV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpMaWZ0VXAsIGIubG9jYXRpb24udmFsdWUoKSwgc3Rk
OjpudWxsb3B0LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChhLmxvY2F0aW9uICE9IGIubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICBM
T0coQXV0b21hdGlvbiwgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcg
TW92ZVRvIGZyb20gKCVkLCAlZCkgdG8gKCVkLCAlZCkgZm9yIHRyYW5zaXRpb24gdG8gJWQuJWQi
LCB0aGlzLCBhLmxvY2F0aW9uLnZhbHVlKCkueCgpLCBhLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBi
LmxvY2F0aW9uLnZhbHVlKCkueCgpLCBiLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBtX2tleWZyYW1l
SW5kZXgsIG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4KTsKLSAgICAgICAgICAgICAgICBtX2NsaWVu
dC5zaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpNb3Zl
VG8sIGIubG9jYXRpb24udmFsdWUoKSwgYS5kdXJhdGlvbi52YWx1ZU9yKDBfcyksIFdURk1vdmUo
ZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxh
dGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6TW92ZVRvLCBiLmxv
Y2F0aW9uLnZhbHVlKCksIGEuZHVyYXRpb24udmFsdWVfb3IoMF9zKSwgV1RGTW92ZShldmVudERp
c3BhdGNoRmluaXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGV2
ZW50RGlzcGF0Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGV2ZW50
RGlzcGF0Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9KTsKICNlbmRpZiAvLyAh
RU5BQkxFKFdFQkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCiAgICAgICAgIGJyZWFrOwpAQCAt
NDE0LDcgKzQxNCw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9u
SW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlz
aGVkKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYgLy8gIUVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRf
SU5URVJBQ1RJT05TKQogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MjIsNyArNDIyLDcgQEAg
dm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3Rh
dGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRF
UkFDVElPTlMpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQot
ICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBv
aW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmll
d3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+IGxvY2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikg
bXV0YWJsZSB7CisgICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdl
YkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1v
dmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERp
c3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
ICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6
OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBpbnRlcnBvbGF0ZSBtb3VzZSBzY3Jv
bGxzIHBlciB0aGUgInBlcmZvcm0gYSBzY3JvbGwiIGFsZ29yaXRobSAowqcxNS40LjQgV2hlZWwg
YWN0aW9ucykuCiAgICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVXaGVlbEludGVyYWN0
aW9uKG1fcGFnZSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBiLnNjcm9sbERlbHRhLnZhbHVlKCksIFdU
Rk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7
CiAjZW5kaWYgLy8gIUVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgICAg
ICBicmVhazsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6ZmluaXNoRGlzcGF0Y2hpbmcoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcgogICAg
IExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyWyVwXTogZmluaXNoZWQg
YWxsIGlucHV0IHNpbXVsYXRpb24gYXQgWyV1LiV1XSIsIHRoaXMsIG1fa2V5ZnJhbWVJbmRleCwg
bV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwogCiAgICAgYXV0byBmaW5pc2ggPSBzdGQ6OmV4Y2hh
bmdlKG1fcnVuQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgIG1fZnJhbWVJRCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX2ZyYW1lSUQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9rZXlmcmFt
ZXMuY2xlYXIoKTsKICAgICBtX2tleWZyYW1lSW5kZXggPSAwOwogICAgIG1faW5wdXRTb3VyY2VT
dGF0ZUluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZTk0ZTA2Y2YyMDJlNDE5
MTkxMjE0NGRiMTcxNTIxZjNhMzdmMDVlNy4uZDg2ZjJmMTFiNTExYmM5ZjRiNTE1YmE0NDAwODIz
MjQ4YjIxOWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTIwOCwxMiArMjA4LDEyIEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZERlc3Ryb3lGcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViQXV0b21hdGlvblNlc3Np
b246OndlYkZyYW1lSURGb3JIYW5kbGUoY29uc3QgU3RyaW5nJiBoYW5kbGUsIGJvb2wmIGZyYW1l
Tm90Rm91bmQpCiB7CiAgICAgaWYgKGhhbmRsZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGl0
ZXIgPSBtX2hhbmRsZVdlYkZyYW1lTWFwLmZpbmQoaGFuZGxlKTsKICAgICBpZiAoaXRlciA9PSBt
X2hhbmRsZVdlYkZyYW1lTWFwLmVuZCgpKSB7CiAgICAgICAgIGZyYW1lTm90Rm91bmQgPSB0cnVl
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIHJldHVybiBpdGVyLT52YWx1ZTsKQEAgLTQyMiw3ICs0MjIsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250
ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdAogICAgICAgICB0aGlzLT5yZXN0b3JlV2luZG93Rm9y
UGFnZSh3ZWJQYWdlLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcGFnZSA9IFdURk1v
dmUocGFnZSksIHdpZHRoLCBoZWlnaHQsIHgsIHldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBh
dXRvJiB3ZWJQYWdlID0gKnBhZ2U7CiAgICAgICAgICAgICB3ZWJQYWdlLmdldFdpbmRvd0ZyYW1l
V2l0aENhbGxiYWNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92
ZShwYWdlKSwgd2lkdGgsIGhlaWdodCwgeCwgeV0oV2ViQ29yZTo6RmxvYXRSZWN0IG9yaWdpbmFs
RnJhbWUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdG
cmFtZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVPcihv
cmlnaW5hbEZyYW1lLmxvY2F0aW9uKCkueCgpKSwgeS52YWx1ZU9yKG9yaWdpbmFsRnJhbWUubG9j
YXRpb24oKS55KCkpKSwgV2ViQ29yZTo6RmxvYXRTaXplKHdpZHRoLnZhbHVlT3Iob3JpZ2luYWxG
cmFtZS5zaXplKCkud2lkdGgoKSksIGhlaWdodC52YWx1ZU9yKG9yaWdpbmFsRnJhbWUuc2l6ZSgp
LmhlaWdodCgpKSkpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBuZXdGcmFt
ZSA9IFdlYkNvcmU6OkZsb2F0UmVjdChXZWJDb3JlOjpGbG9hdFBvaW50KHgudmFsdWVfb3Iob3Jp
Z2luYWxGcmFtZS5sb2NhdGlvbigpLngoKSksIHkudmFsdWVfb3Iob3JpZ2luYWxGcmFtZS5sb2Nh
dGlvbigpLnkoKSkpLCBXZWJDb3JlOjpGbG9hdFNpemUod2lkdGgudmFsdWVfb3Iob3JpZ2luYWxG
cmFtZS5zaXplKCkud2lkdGgoKSksIGhlaWdodC52YWx1ZV9vcihvcmlnaW5hbEZyYW1lLnNpemUo
KS5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgICAgICBpZiAobmV3RnJhbWUgIT0gb3JpZ2luYWxG
cmFtZSkKICAgICAgICAgICAgICAgICAgICAgcGFnZS0+c2V0V2luZG93RnJhbWUobmV3RnJhbWUp
OwogICAgICAgICAgICAgICAgIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZShjb25zdCBJbnNwZWN0b3I6OlBy
b3RvY29sCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5F
RF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBv
cHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7
CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VMb2FkVGltZW91
dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygq
b3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91dDsKIAogICAg
IC8vIElmIHBhZ2UgaXMgbG9hZGluZyBhbmQgdGhlcmUncyBhbiBhY3RpdmUgSmF2YVNjcmlwdCBk
aWFsb2cgaXMgcHJvYmFibHkgYmVjYXVzZSB0aGUKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5
JiBwYWdlKQogICAgICAgICBpZiAoIW1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNr
c1BlclBhZ2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRv
VmVjdG9yKG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygp
KSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVS
X01PVVNFX0lOVEVSQUNUSU9OUykKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5JiBwYWdlKQog
ICAgICAgICBpZiAoIW1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBh
Z2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9y
KG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygpKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVS
X0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKQEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp3aWxsU2hvd0phdmFTY3JpcHREaWFsb2coV2ViUGFnZVByb3h5JiBwYWdl
KQogICAgICAgICBpZiAoIW1fcGVuZGluZ1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBh
Z2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8ga2V5IDogY29weVRvVmVjdG9y
KG1fcGVuZGluZ1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2Uua2V5cygpKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNo
ZWRDYWxsYmFja3NQZXJQYWdlLnRha2Uoa2V5KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhX
VEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX1dIRUVM
X0lOVEVSQUNUSU9OUykKQEAgLTY5OSw3ICs2OTksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpuYXZpZ2F0ZUJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dQogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9u
YWxQYWdlTG9hZFN0cmF0ZWd5LnZhbHVlT3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAg
IGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9v
cihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBv
cHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlv
bmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdl
LT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIHVybCkpOwpAQCAtNzEyLDcgKzcxMiw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmdvQmFja0luQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2Fk
U3RyYXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxv
YWRTdHJhdGVneSk7CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9h
ZFN0cmF0ZWd5LnZhbHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBh
Z2VMb2FkVGltZW91dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1p
bGxpc2Vjb25kcygqb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGlt
ZW91dDsKIAogICAgIHBhZ2UtPmdvQmFjaygpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OmdvRm9yd2FyZEluQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6CiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3Ry
YXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRT
dHJhdGVneSk7CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0
cmF0ZWd5LnZhbHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VM
b2FkVGltZW91dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxp
c2Vjb25kcygqb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91
dDsKIAogICAgIHBhZ2UtPmdvRm9yd2FyZCgpOwpAQCAtNzM4LDcgKzczOCw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJVEhf
UFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBhZ2VMb2FkU3Ry
YXRlZ3kgPSBvcHRpb25hbFBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVPcihkZWZhdWx0UGFnZUxvYWRT
dHJhdGVneSk7CisgICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0
cmF0ZWd5LnZhbHVlX29yKGRlZmF1bHRQYWdlTG9hZFN0cmF0ZWd5KTsKICAgICBhdXRvIHBhZ2VM
b2FkVGltZW91dCA9IG9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0ID8gU2Vjb25kczo6ZnJvbU1pbGxp
c2Vjb25kcygqb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQpIDogZGVmYXVsdFBhZ2VMb2FkVGltZW91
dDsKIAogICAgIHBhZ2UtPnJlbG9hZCh7IH0pOwpAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb246Om1vdXNlRXZlbnRzRmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFn
ZVByb3h5JiBwYWdlKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05T
KQogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKLSAgICAgICAgY2FsbGJhY2so
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCkBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6a2V5Ym9hcmRFdmVudHNGbHVzaGVkRm9yUGFnZShjb25zdCBX
ZWJQYWdlUHJveHkmIHBhZ2UKIHsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVS
QUNUSU9OUykKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRz
Rmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIoKSkpCi0gICAgICAg
IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgpAQCAtODIzLDcgKzgyMyw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndoZWVsRXZlbnRzRmx1c2hlZEZvclBhZ2Uo
Y29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogewogI2lmIEVOQUJMRShXRUJEUklWRVJfV0hFRUxf
SU5URVJBQ1RJT05TKQogICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9wZW5kaW5nV2hlZWxFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKSkKLSAgICAg
ICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCkBAIC05NjMsNyArOTYz
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
bV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCsrOwogICAgIG1fZXZhbHVhdGVKYXZh
U2NyaXB0RnVuY3Rpb25DYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2sp
KTsKIAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihwYWdlLT53ZWJQYWdlSUQoKSwg
ZnJhbWVJRCwgZnVuY3Rpb24sIGFyZ3VtZW50c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJh
Y2tBcmd1bWVudC52YWx1ZU9yKGZhbHNlKSwgV1RGTW92ZShjYWxsYmFja1RpbWVvdXQpLCBjYWxs
YmFja0lEKSwgMCk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OkV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHBhZ2UtPndlYlBh
Z2VJRCgpLCBmcmFtZUlELCBmdW5jdGlvbiwgYXJndW1lbnRzVmVjdG9yLCBleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50LnZhbHVlX29yKGZhbHNlKSwgV1RGTW92ZShjYWxsYmFja1RpbWVv
dXQpLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRp
ZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0LCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKQEAgLTEwNTQsNyArMTA1NCw3
IEBAIHN0YXRpYyBPcHRpb25hbDxDb29yZGluYXRlU3lzdGVtPiBwcm90b2NvbFN0cmluZ1RvQ29v
cmRpbmF0ZVN5c3RlbShJbnNwZWN0b3I6OlByCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ0NvbnRleHRIYW5k
bGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6RnJhbWVIYW5kbGUmIGZyYW1lSGFuZGxlLCBjb25zdCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpOb2RlSGFuZGxlJiBub2RlSGFuZGxlLCBPcHRpb25hbDxib29sPiYm
IG9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtVmFsdWUsIFJlZjxDb21w
dXRlRWxlbWVudExheW91dENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTM2OCw3ICsxMzY4LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjoKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNz
KGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6R2V0Q29va2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6R2V0Q29v
a2llc0ZvckZyYW1lKHBhZ2UtPndlYlBhZ2VJRCgpLCBzdGQ6Om51bGxvcHQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0
ZVNpbmdsZUNvb2tpZShjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93
c2luZ0NvbnRleHRIYW5kbGUmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lLCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBA
IC0xMzg2LDcgKzEzODYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVTaW5n
bGVDb29raWUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdAogICAgICAgICBjYWxs
YmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICB9OwogCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVsZXRl
Q29va2llKHBhZ2UtPndlYlBhZ2VJRCgpLCBXVEY6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RGVsZXRlQ29va2ll
KHBhZ2UtPndlYlBhZ2VJRCgpLCBzdGQ6Om51bGxvcHQsIGNvb2tpZU5hbWUpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluQnlBZGRpbmdEb3RQ
cmVmaXhJZk5lZWRlZChTdHJpbmcgZG9tYWluKQpAQCAtMTU3MSwxNiArMTU3MSwxNiBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50
KFdlYlBhZ2VQcm94eSYgcGFnZQogewogICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4sIGJvb2wpPiBkaWRDb21wdXRlRWxlbWVudExheW91dEhhbmRsZXIgPSBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oT3B0aW9uYWw8U3RyaW5nPiBl
cnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBp
blZpZXdDZW50ZXJQb2ludCwgYm9vbCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChlcnJvclR5cGUp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9X
SVRIX01FU1NBR0UoKmVycm9yVHlwZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgewotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKFRhcmdldE91dE9mQm91bmRzKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUoVGFyZ2V0T3V0
T2ZCb3VuZHMpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGluVmlld0NlbnRlclBvaW50LCBXVEY6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwgc3RkOjpudWxsb3B0KTsKICAg
ICB9OwogCiAgICAgcGFnZS5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91dChwYWdlLndlYlBh
Z2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRpbmF0ZVN5c3RlbTo6TGF5
b3V0Vmlld3BvcnQpLCBXVEZNb3ZlKGRpZENvbXB1dGVFbGVtZW50TGF5b3V0SGFuZGxlcikpOwpA
QCAtMTYzNCw3ICsxNjM0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVN
b3VzZUludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnQKICAgICAgICAgLy8g
SWYgdGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRo
ZW4gaXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJ
bk1hcCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewogICAgICAgICAgICAg
YXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJh
Y2tzUGVyUGFnZS50YWtlKHBhZ2UtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBjYWxsYmFj
a1RvQ2FuY2VsKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UsIHdhaXQgZm9y
IG1vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrIHRvIHJ1biB3aGVuIGFsbCBldmVudHMgYXJlIGhh
bmRsZWQuCkBAIC0xNjgwLDcgKzE2ODAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpz
aW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlibwogICAg
IC8vIFRoaXMgaGFwcGVucyBpbiBzb21lIGNvcm5lciBjYXNlcyBvbiBtYWNPUywgc3VjaCBhcyBy
ZWxlYXNpbmcgYSBrZXkgd2hpbGUgQ29tbWFuZCBpcyBwcmVzc2VkLgogICAgIGlmIChjYWxsYmFj
a0luTWFwICYmICFwYWdlLmlzUHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkpIHsKICAgICAgICAg
YXV0byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZS50YWtlKHBhZ2UuaWRlbnRpZmllcigpKTsKLSAgICAgICAgY2FsbGJhY2tU
b0NhbmNlbChXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlLCB3YWl0IGZvciBrZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgpAQCAt
MTcxMyw3ICsxNzEzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVXaGVl
bEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2UKICAgICAgICAgLy8gSWYg
dGhlIGV2ZW50IGRvZXMgbm90IGhpdCB0ZXN0IGFueXRoaW5nIGluIHRoZSB3aW5kb3csIHRoZW4g
aXQgbWF5IG5vdCBoYXZlIGJlZW4gZGVsaXZlcmVkLgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1h
cCAmJiAhcGFnZS0+aXNQcm9jZXNzaW5nV2hlZWxFdmVudHMoKSkgewogICAgICAgICAgICAgYXV0
byBjYWxsYmFja1RvQ2FuY2VsID0gbV9wZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tz
UGVyUGFnZS50YWtlKHBhZ2UtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBjYWxsYmFja1Rv
Q2FuY2VsKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UsIHdhaXQgZm9yIHdo
ZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrIHRvIHJ1biB3aGVuIGFsbCBldmVudHMgYXJlIGhhbmRs
ZWQuCkBAIC0xODA1LDcgKzE4MDUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwZXJm
b3JtTW91c2VJbnRlcmFjdGlvbihjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdQogICAgICAg
ICAvLyBJbiBXM0Mtb25seSBjb2RlIHBhdGhzLCB3ZSBjYW4gcmVqZWN0IGFueSBwb2ludGVyIGFj
dGlvbnMgd2hvc2UgY29vcmRpbmF0ZXMgYXJlIG91dHNpZGUgdGhlIHZpZXdwb3J0IHJlY3QuCiAg
ICAgICAgIGlmIChjYWxsYmFja0luTWFwICYmICFwYWdlLT5pc1Byb2Nlc3NpbmdNb3VzZUV2ZW50
cygpKSB7CiAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrVG9DYW5jZWwgPSBtX3BlbmRpbmdNb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS0+aWRlbnRpZmllcigpKTsK
LSAgICAgICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IGNhbGxiYWNrVG9DYW5jZWwoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0pOwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQpAQCAtMTk2NSw3ICsx
OTY1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFVDaGFyMzI+IHByZXNzZWRDaGFyS2V5KGNvbnN0IFN0
cmluZyYgcHJlc3NlZENoYXJLZXlTdHJpbmcpCiAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoV0VCRFJJVkVSX0FDVElPTlNfQVBJKQogCkBAIC0yMTA4LDcgKzIxMDgsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpwZXJmb3JtSW50ZXJhY3Rpb25TZXF1ZW5jZShjb25zdCBJbnNw
ZWN0b3I6OlByb3RvY29sOgogICAgICAgICAgICAgYXV0byBwcmVzc2VkQnV0dG9uU3RyaW5nID0g
c3RhdGVPYmplY3QtPmdldFN0cmluZygicHJlc3NlZEJ1dHRvbiJfcyk7CiAgICAgICAgICAgICBp
ZiAoISFwcmVzc2VkQnV0dG9uU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcm90b2Nv
bEJ1dHRvbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVu
dW1WYWx1ZUZyb21TdHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6TW91c2VC
dXR0b24+KHByZXNzZWRCdXR0b25TdHJpbmcpOwotICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRl
LnByZXNzZWRNb3VzZUJ1dHRvbiA9IHByb3RvY29sQnV0dG9uLnZhbHVlT3IoTW91c2VCdXR0b246
Ok5vbmUpOworICAgICAgICAgICAgICAgIHNvdXJjZVN0YXRlLnByZXNzZWRNb3VzZUJ1dHRvbiA9
IHByb3RvY29sQnV0dG9uLnZhbHVlX29yKE1vdXNlQnV0dG9uOjpOb25lKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgYXV0byBvcmlnaW5TdHJpbmcgPSBzdGF0ZU9iamVjdC0+Z2V0U3Ry
aW5nKCJvcmlnaW4iX3MpOwpAQCAtMjIyNCw3ICsyMjI0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6dGFrZVNjcmVlbnNob3QoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjoKICAgICB9OwogCiAgICAgaWYgKG5vZGVIYW5kbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHRha2VWaWV3U25hcHNvdCgqcGFnZSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgICAgIHRha2VWaWV3U25hcHNvdCgqcGFnZSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyNjcsMTkgKzIyNjcsMTkg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6ZGlkVGFrZVNjcmVlbnNob3QodWludDY0X3Qg
Y2FsbGJhY2tJRCwgY29uc3QgU2hhcmVhYmwKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0Uo
Q0FJUk8pCiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdl
dEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikKIHsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0
RW5jb2RlZFBOR0RhdGEoY29uc3QgVmlld1NuYXBzaG90JikKIHsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JN
KENPQ09BKSAmJiAhVVNFKENBSVJPKQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogT3B0aW9uYWw8
U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBh
dGhGb3JSZW1vdGVGaWxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDU2ZjRhNDAzZjdmOTUx
Y2M4MGFmNjZmNWYwNjhmYTQyZmUzOTBkYjUuLjhiNzFhODgzZTgzNWY1YmMyNjQyMDZiZjE1MWNj
ZmQzNWI5YzRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3Mg
V2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yIHsKIHB1YmxpYzoK
ICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZTsK
LSAgICBPcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRp
b25hbDxTdHJpbmc+IG1lc3NhZ2UgeyBzdGQ6Om51bGxvcHQgfTsKICAgICAKICAgICBBdXRvbWF0
aW9uQ29tbWFuZEVycm9yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZSB0eXBlKQogICAgICAgICA6IHR5cGUodHlwZSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
TWFjcm9zLmgKaW5kZXggNGQzNmQ2NGZkNDBmNDNmM2U3ODFkNWU1OTVhM2JlODRjY2VlZDY1My4u
ZGFiN2EwNmYzNWI0YzNhNjQ4MGQ5MzlmZWY3MjI5OTk4OWQ2ZWUyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jv
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBlcnJvck5hbWVBbmRE
ZXRhaWxzU2VwYXJhdG9yICI7IgogCiAvLyBNYWtlIHN1cmUgdGhlIHByZWRlZmluZWQgZXJyb3Ig
bmFtZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIHVzZSBJbnRlcm5hbEVycm9yLgotI2RlZmluZSBWQUxJ
REFURURfRVJST1JfTUVTU0FHRShlcnJvclN0cmluZykgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U+KGVycm9yU3RyaW5nKS52YWx1ZU9yKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikK
KyNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJvclN0cmluZyku
dmFsdWVfb3IoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJ
bnRlcm5hbEVycm9yKQogCiAvLyBJZiB0aGUgZXJyb3IgbmFtZSBpcyBpbmNvcnJlY3QgZm9yIHRo
ZXNlIG1hY3JvcywgaXQgd2lsbCBiZSBhIGNvbXBpbGUtdGltZSBlcnJvci4KICNkZWZpbmUgU1RS
SU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoZXJyb3JOYW1lKSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjplcnJvck5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25T
ZXNzaW9uQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jYWly
by9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAppbmRleCBmMzQyZTYxZDkwODhkNTgxYjhh
ODQ3ZjY0YjhiZmFmNWI5ZjRiYjdlLi45ZjZiZDAxOTA4OTk3ODEzODg4MzMyODMxYzE3MGVhMGQz
NGU5YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2Nh
aXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBzdGF0aWMgT3B0aW9uYWw8
U3RyaW5nPiBiYXNlNjRFbmNvZGVkUE5HRGF0YShjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UpCiB7
CiAgICAgaWYgKCFzdXJmYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHBuZ0Rh
dGE7CiAgICAgY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKHN1cmZhY2UsIFtdKHZv
aWQqIHVzZXJEYXRhLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgp
IC0+IGNhaXJvX3N0YXR1c190IHsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0
cmluZz4gYmFzZTY0RW5jb2RlZFBOR0RhdGEoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogICAg
IH0sICZwbmdEYXRhKTsKIAogICAgIGlmIChwbmdEYXRhLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhwbmdEYXRhKTsKIH0KQEAgLTU2LDcgKzU2LDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRF
bmNvZGVkUE5HRGF0YShjb25zdCBTaGEKIHsKICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CiAgICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cmZhY2UgPSBiaXRtYXAtPmNyZWF0
ZUNhaXJvU3VyZmFjZSgpOwogICAgIHJldHVybiBiYXNlNjRFbmNvZGVkUE5HRGF0YShzdXJmYWNl
LmdldCgpKTsKQEAgLTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBWaWUKICNpZiBQ
TEFURk9STShHVEspCiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZWRQTkdEYXRhKHNuYXBzaG90LnN1
cmZhY2UoKSk7CiAjZWxzZQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9u
Q29jb2EubW0KaW5kZXggMTFiYjhlZjVjNjViMDQ2YjA4ODE2NGY2YjEzYjJmZDg5MzVhYmRhOS4u
OGExNWZlNmNmNTQ0NDMxZTljNjQ1ZDdkOGFjZTMwMmNkYzBkMTdhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9uU2Vzc2lv
bkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29jb2Ev
V2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQpAQCAtNDMsNyArNDMsNyBAQCBPcHRpb25hbDxT
dHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdE
YXRhKGNvbnN0IFNoYQogewogICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoaW1hZ2VEYXRhSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsK
ICAgICBpZiAoIWJpdG1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdl
ID0gYml0bWFwLT5tYWtlQ0dJbWFnZSgpOwogICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBp
bWFnZURhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF0pOwpAQCAtNTEs
NyArNTEsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgIFJldGFp
blB0cjxDR0ltYWdlRGVzdGluYXRpb25SZWY+IGRlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdl
RGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSgoQ0ZNdXRhYmxlRGF0YVJlZilpbWFnZURhdGEuZ2V0
KCksIGtVVFR5cGVQTkcsIDEsIDApKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgIGlmICghZGVzdGluYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShkZXN0aW5hdGlvbi5nZXQoKSwgY2dJbWFnZS5nZXQoKSwgMCk7CiAgICAgQ0dJbWFnZURl
c3RpbmF0aW9uRmluYWxpemUoZGVzdGluYXRpb24uZ2V0KCkpOwpAQCAtNjQsNyArNjQsNyBAQCBP
cHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybUdlbmVyYXRlTG9j
YWxGaWxlUGF0aEZvclJlbW90ZUZpbAogICAgIFJldGFpblB0cjxOU0RhdGE+IGZpbGVDb250ZW50
cyA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzpi
YXNlNjRFbmNvZGVkRmlsZUNvbnRlbnRzIG9wdGlvbnM6MF0pOwogICAgIGlmICghZmlsZUNvbnRl
bnRzKSB7CiAgICAgICAgIExPR19FUlJPUigiV2ViQXV0b21hdGlvblNlc3Npb246IHVuYWJsZSB0
byBkZWNvZGUgYmFzZTY0LWVuY29kZWQgZmlsZSBjb250ZW50cy4iKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9y
YXJ5RGlyZWN0b3J5KEAiV2ViRHJpdmVyIik7CkBAIC03NSw3ICs3NSw3IEBAIE9wdGlvbmFsPFN0
cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRo
Rm9yUmVtb3RlRmlsCiAgICAgW2ZpbGVDb250ZW50cy5nZXQoKSB3cml0ZVRvRmlsZTpsb2NhbEZp
bGVQYXRoIG9wdGlvbnM6TlNEYXRhV3JpdGluZ0F0b21pYyBlcnJvcjomZmlsZVdyaXRlRXJyb3Jd
OwogICAgIGlmIChmaWxlV3JpdGVFcnJvcikgewogICAgICAgICBMT0dfRVJST1IoIldlYkF1dG9t
YXRpb25TZXNzaW9uOiBFcnJvciB3cml0aW5nIGltYWdlIGRhdGEgdG8gdGVtcG9yYXJ5IGZpbGU6
ICVAIiwgZmlsZVdyaXRlRXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBTdHJpbmcobG9j
YWxGaWxlUGF0aCk7CkBAIC04OSw3ICs4OSw3IEBAIE9wdGlvbmFsPHVuaWNoYXI+IFdlYkF1dG9t
YXRpb25TZXNzaW9uOjpjaGFyQ29kZUZvclZpcnR1YWxLZXkoSW5zcGVjdG9yOjpQcm90b2NvCiAg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpBbHRl
cm5hdGU6CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpNZXRhOgogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6Q29tbWFuZDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkhlbHA6CiAgICAgICAgIHJldHVybiBOU0hlbHBGdW5jdGlvbktl
eTsKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
OkJhY2tzcGFjZToKQEAgLTE5Myw3ICsxOTMsNyBAQCBPcHRpb25hbDx1bmljaGFyPiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6Y2hhckNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jbwog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVu
Y3Rpb24xMjoKICAgICAgICAgcmV0dXJuIE5TRjEyRnVuY3Rpb25LZXk7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggMDgx
YmE5OTQ2YWQ3NGE2MGM4NWI3MGUzZjE0MjE4ZTVmZjhhZjNjZi4uYjg1NDRmZmE0NWQ4MmIxMDI5
MTkyOTNmYWNlYTY3MTYxZTE3ZmMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1Mu
bW0KQEAgLTE5NywxMCArMTk3LDEwIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uKQogdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBUb3VjaEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgbG9jYXRpb25JblZpZXdwb3J0LCBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbiwg
QXV0b21hdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgbG9jYXRpb25PblNjcmVlbiA9IHBhZ2Uuc3luY1Jvb3RWaWV3VG9T
Y3JlZW4oSW50UmVjdChsb2NhdGlvbkluVmlld3BvcnQsIEludFNpemUoKSkpLmxvY2F0aW9uKCk7
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMsIHN0cmVhbSA8PCAi
cGxhdGZvcm1TaW11bGF0ZVRvdWNoSW50ZXJhY3Rpb246IGludGVyYWN0aW9uPSIgPDwgaW50ZXJh
Y3Rpb24gPDwgIiwgbG9jYXRpb25JblZpZXdwb3J0PSIgPDwgbG9jYXRpb25JblZpZXdwb3J0IDw8
ICIsIGxvY2F0aW9uT25TY3JlZW49IiA8PCBsb2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1cmF0aW9u
PSIgPDwgZHVyYXRpb24udmFsdWVPcigwX3MpLnNlY29uZHMoKSk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKEF1dG9tYXRpb25JbnRlcmFjdGlvbnMsIHN0cmVhbSA8PCAicGxhdGZvcm1TaW11bGF0ZVRv
dWNoSW50ZXJhY3Rpb246IGludGVyYWN0aW9uPSIgPDwgaW50ZXJhY3Rpb24gPDwgIiwgbG9jYXRp
b25JblZpZXdwb3J0PSIgPDwgbG9jYXRpb25JblZpZXdwb3J0IDw8ICIsIGxvY2F0aW9uT25TY3Jl
ZW49IiA8PCBsb2NhdGlvbk9uU2NyZWVuIDw8ICIsIGR1cmF0aW9uPSIgPDwgZHVyYXRpb24udmFs
dWVfb3IoMF9zKS5zZWNvbmRzKCkpOwogCiAgICAgYXV0byBpbnRlcmFjdGlvbkZpbmlzaGVkID0g
bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIAog
ICAgIF9XS1RvdWNoRXZlbnRHZW5lcmF0b3IgKmdlbmVyYXRvciA9IFtfV0tUb3VjaEV2ZW50R2Vu
ZXJhdG9yIHNoYXJlZFRvdWNoRXZlbnRHZW5lcmF0b3JdOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9u
KFdlYlBhZ2VQcm94eSYgcGFnZSwKICAgICAgICAgW2dlbmVyYXRvciBsaWZ0VXA6bG9jYXRpb25P
blNjcmVlbiBjb21wbGV0aW9uQmxvY2s6aW50ZXJhY3Rpb25GaW5pc2hlZC5nZXQoKV07CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVG91Y2hJbnRlcmFjdGlvbjo6TW92ZVRvOgotICAgICAgICBb
Z2VuZXJhdG9yIG1vdmVUb1BvaW50OmxvY2F0aW9uT25TY3JlZW4gZHVyYXRpb246ZHVyYXRpb24u
dmFsdWVPcigwX3MpLnNlY29uZHMoKSBjb21wbGV0aW9uQmxvY2s6aW50ZXJhY3Rpb25GaW5pc2hl
ZC5nZXQoKV07CisgICAgICAgIFtnZW5lcmF0b3IgbW92ZVRvUG9pbnQ6bG9jYXRpb25PblNjcmVl
biBkdXJhdGlvbjpkdXJhdGlvbi52YWx1ZV9vcigwX3MpLnNlY29uZHMoKSBjb21wbGV0aW9uQmxv
Y2s6aW50ZXJhY3Rpb25GaW5pc2hlZC5nZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5k
ZXggZDk1Mzc0NDg3YTRlODEwZmEzZDJlYTQ1ZjllNmViYjQ1MGVhYWZkMy4uMTIyNDdjZWE5YTU1
YTg3ZDllOGY4M2U5M2ZjOTgyMGQxOTg1NWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAgICAgUHJvY2Vzc0lEIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9j
ZXNzTGF1bmNoZXIgPyBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKSA6IDA7
IH0KIAogICAgIGJvb2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpICE9
IFN0YXRlOjpUZXJtaW5hdGVkO30KLSAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6
OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBh
c3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVy
QWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKKyAg
ICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBhc3luY1JlcGx5SW5mbyA9IHN0ZDo6bnVs
bG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKIAogICAgIHZvaWQgcmVwbHlUb1BlbmRpbmdN
ZXNzYWdlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50Lm1tCmluZGV4IGVjODlhY2VlYzcwYTVkYTYwNjc0NTkx
MmU2ZWJmMjE1YjZmM2E1MjMuLmRmMTYxMzhjNTQ2MGNlNWIxNWRhZWE4ZThiYTgyMDhiYTkyMmRi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9t
YXRpb25TZXNzaW9uQ2xpZW50Lm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIE9wdGlvbmFs
PEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlPiB0b0lt
cGwoX1dLQXUKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIF9XS0F1dG9tYXRpb25T
ZXNzaW9uSmF2YVNjcmlwdERpYWxvZ1R5cGVOb25lOgotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgX1dLQXV0b21hdGlv
blNlc3Npb25KYXZhU2NyaXB0RGlhbG9nVHlwZVByb21wdDoKICAgICAgICAgcmV0dXJuIEFQSTo6
QXV0b21hdGlvblNlc3Npb25DbGllbnQ6OkphdmFTY3JpcHREaWFsb2dUeXBlOjpQcm9tcHQ7CiAg
ICAgY2FzZSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkphdmFTY3JpcHREaWFsb2dUeXBlQ29uZmlybToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKaW5kZXggYzk3
ZGM0YjRkZWM0ZmE1ODBkNDkwZjFkNGNmYzg2Y2RmY2UwYmNjMi4uMWQ1ZWMyOTYyYmRmZTNjYmQ2
OThjZDAyMzQ5MGJiOTllNmEzYjM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV0tTaGFyZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV0tTaGFyZVNoZWV0LmgKQEAgLTM4LDcgKzM4LDcgQEAgc3RydWN0IFNoYXJlRGF0YVdpdGhQ
YXJzZWRVUkw7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLV2ViVmlldyAqKXZp
ZXc7CiAKLS0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpcHJlc2VudFdpdGhQYXJh
bWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVj
dDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRs
ZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKHZvaWQpZGlzbWlzczsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxX
S1NoYXJlU2hlZXREZWxlZ2F0ZT4gZGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XS1NoYXJlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQubW0KaW5kZXggZTQ3NTdhYjhjODg5ODVhMDg0Yjc3NTEwMTg1
ZTgzZTZiZDBkNzEyYy4uZDQxMzQxYTFiOTc0OGZjNTI4ZDRhNjI2NzQzM2RhOTEyMDhjMjk1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5tbQpAQCAt
ODksNyArODksNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaWV3OihXS1dlYlZpZXcgKil2
aWV3CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJz
Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJlY3Q6KFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIKKy0g
KHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJzOihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRo
UGFyc2VkVVJMICYpZGF0YSBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBhdXRvIHNoYXJlRGF0YUFycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgCkBAIC0xNTIsNyArMTUy
LDcgQEAgLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KGNvbnN0IFdlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwgJilkYXRhIGluUmUKICAgICBbc2VsZiBwcmVzZW50V2l0aFNoYXJl
RGF0YUFycmF5OnNoYXJlRGF0YUFycmF5LmdldCgpIGluUmVjdDpyZWN0XTsKIH0KIAotLSAodm9p
ZClwcmVzZW50V2l0aFNoYXJlRGF0YUFycmF5OihOU0FycmF5ICopc2hhcmluZ0l0ZW1zIGluUmVj
dDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QKKy0gKHZvaWQpcHJlc2Vu
dFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJheSAqKXNoYXJpbmdJdGVtcyBpblJlY3Q6KHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0CiB7CiAgICAgV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gX3dlYlZpZXcuZ2V0QXV0b3JlbGVhc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMmQxMDNmMGVkMGE3
ZDI2MTQxZWMyZjMzYjJiZjY2NTBiYzhjNWUyZi4uMzQ2ODAzYTllOGIwNTk0Zjg0MDMwMjIxMjc3
YTk3N2JiYzcxMDAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTE3MiwxMSArMTcyLDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
TG9hZFBhcmFtCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghcHJvY2Vzcy5oYXNNYW5hZ2Vk
U2Vzc2lvblNhbmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBp
c01hbmFnZWRTZXNzaW9uXSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFu
ZGxlOwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIu
cmVtb3RlVUkiX3MsIFdURjo6bnVsbG9wdCwgaGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2
aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQs
IGhhbmRsZSk7CiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKGhhbmRsZSk7CiAKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICBpZiAoU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9h
cmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VF
eHRlbnNpb25IYW5kbGUpKQorICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMi
X3MsIHN0ZDo6bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUpKQogICAg
ICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgICAgICBw
cm9jZXNzLm1hcmtIYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsKQEAgLTYwMSw3ICs2
MDEsNyBAQCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBXZWJQYWdlUHJveHk6OmNyZWF0
ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVucwogI2Vsc2UKICAgICAgICAgY29uc3RleHBy
IEFTQ0lJTGl0ZXJhbCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB7ICJjb20uYXBwbGUubmVzZXNz
aW9ubWFuYWdlci5jb250ZW50LWZpbHRlciJfcyB9OwogI2VuZGlmCi0gICAgICAgIHJldHVybiBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7IG5lSGVscGVyU2Vy
dmljZSwgbmVTZXNzaW9uTWFuYWdlclNlcnZpY2UgfSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
cmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgbmVI
ZWxwZXJTZXJ2aWNlLCBuZVNlc3Npb25NYW5hZ2VyU2VydmljZSB9LCBzdGQ6Om51bGxvcHQpOwog
ICAgIH0KICNlbmRpZgogICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSgp
OwpAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3Ms
IFdURjo6bnVsbG9wdCwgbW9iaWxlQXNzZXRIYW5kbGVWMik7CisgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgc3RkOjpudWxsb3B0LCBtb2JpbGVBc3NldEhhbmRsZVYyKTsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxl
QXNzZXRIYW5kbGVWMiksIDApOwogfQogCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKQog
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9u
SGFuZGxlKCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1hY2hFeHRlbnNp
b25IYW5kbGU7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBXVEY6Om51bGxvcHQsIGZvbnRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6bnVsbG9wdCwgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUp
OwogICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bQppbmRleCBjMTdkMzhmYTRkYmNlZmY2Mjg1NzE0M2ExMmM0ZDVjMDNmNTE5ZTg0Li4wZGFhMTFj
ZDJlYjc3MmI3MTY4ZjczZWNmMTJlYTczYWU2YzYwNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAt
OTcsMTAgKzk3LDEwIEBAIGJvb2wgV2ViUGFzdGVib2FyZFByb3h5OjpjYW5BY2Nlc3NQYXN0ZWJv
YXJkRGF0YShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvCiAKIE9wdGlvbmFsPFdlYlBh
c3RlYm9hcmRQcm94eTo6UGFzdGVib2FyZEFjY2Vzc1R5cGU+IFdlYlBhc3RlYm9hcmRQcm94eTo6
YWNjZXNzVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIGNvbnN0CiB7Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxV
RSghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBXVEY6Om51bGxvcHQpOworICAgIE1FU1NBR0Vf
Q0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgc3RkOjpu
dWxsb3B0KTsKIAogICAgIGF1dG8qIHByb2Nlc3MgPSB3ZWJQcm9jZXNzUHJveHlGb3JDb25uZWN0
aW9uKGNvbm5lY3Rpb24pOwotICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUocHJv
Y2VzcywgV1RGOjpudWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVF
KHByb2Nlc3MsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBwcm9jZXNz
LT5wYWdlcygpKSB7CiAgICAgICAgIGF1dG8mIHByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5j
ZXMoKTsKQEAgLTExOCwxMSArMTE4LDExIEBAIE9wdGlvbmFsPFdlYlBhc3RlYm9hcmRQcm94eTo6
UGFzdGVib2FyZEFjY2Vzc1R5cGU+IFdlYlBhc3RlYm9hcmRQcm94eTo6YWNjZXNzVHlwCiAKICAg
ICBhdXRvIGNoYW5nZUNvdW50QW5kUHJvY2Vzc2VzID0gbV9wYXN0ZWJvYXJkTmFtZVRvQWNjZXNz
SW5mb3JtYXRpb25NYXAuZmluZChwYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNoYW5nZUNvdW50
QW5kUHJvY2Vzc2VzID09IG1fcGFzdGVib2FyZE5hbWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFwLmVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byYgaW5mb3JtYXRpb24gPSBjaGFuZ2VDb3VudEFuZFByb2Nlc3Nl
cy0+dmFsdWU7CiAgICAgaWYgKGluZm9ybWF0aW9uLmNoYW5nZUNvdW50ICE9IFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBp
bmZvcm1hdGlvbi5hY2Nlc3NUeXBlKCpwcm9jZXNzKTsKIH0KQEAgLTQ4NiwxMCArNDg2LDEwIEBA
IHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3Jt
YXRpb25Gb3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHNpemVfdCBp
bmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCBjaGFuZ2VDb3VudCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmICghY2FuQWNjZXNzUGFzdGVib2FyZFR5cGVzKGNvbm5lY3Rpb24sIHBhc3RlYm9hcmRO
YW1lKSkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0
byBkYXRhT3duZXIgPSBkZXRlcm1pbmVEYXRhT3duZXIoY29ubmVjdGlvbiwgcGFzdGVib2FyZE5h
bWUsIHBhZ2VJRCwgUGFzdGVib2FyZEFjY2Vzc0ludGVudDo6UmVhZCk7Ci0gICAgTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OKGRhdGFPd25lciwgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
KSk7CisgICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGRhdGFPd25lciwgY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KSk7CiAKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnBlcmZvcm1B
c0RhdGFPd25lcigqZGF0YU93bmVyLCBbJl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5k
ZXgoaW5kZXgsIGNoYW5nZUNvdW50KSk7CkBAIC02NTYsMTAgKzY1NiwxMCBAQCB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZAogCiBPcHRpb25hbDxEYXRhT3duZXJUeXBlPiBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmRldGVybWluZURhdGFPd25lcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQgaW50ZW50KSBjb25zdAogewotICAgIE1FU1NBR0VfQ0hF
Q0tfV0lUSF9SRVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgV1RGOjpudWxs
b3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFwYXN0ZWJvYXJkTmFt
ZS5pc0VtcHR5KCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvKiBwcm9jZXNzID0gd2ViUHJv
Y2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLSAgICBNRVNTQUdFX0NIRUNLX1dJ
VEhfUkVUVVJOX1ZBTFVFKHByb2Nlc3MsIFdURjo6bnVsbG9wdCk7CisgICAgTUVTU0FHRV9DSEVD
S19XSVRIX1JFVFVSTl9WQUxVRShwcm9jZXNzLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKCFw
YWdlSUQpCiAgICAgICAgIHJldHVybiBEYXRhT3duZXJUeXBlOjpVbmRlZmluZWQ7CkBAIC02NzQs
NyArNjc0LDcgQEAgT3B0aW9uYWw8RGF0YU93bmVyVHlwZT4gV2ViUGFzdGVib2FyZFByb3h5Ojpk
ZXRlcm1pbmVEYXRhT3duZXIoSVBDOjpDb25uZWN0aW9uJgogICAgIH0KICAgICAvLyBJZiB0aGlz
IG1lc3NhZ2UgY2hlY2sgaXMgaGl0LCB0aGVuIHRoZSBpbmNvbWluZyB3ZWIgcGFnZSBJRCBkb2Vz
bid0IGNvcnJlc3BvbmQgdG8gYW55IHBhZ2UKICAgICAvLyBjdXJyZW50bHkga25vd24gdG8gdGhl
IFVJIHByb2Nlc3MuCi0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShyZXN1bHQu
aGFzVmFsdWUoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJO
X1ZBTFVFKHJlc3VsdC5oYXNWYWx1ZSgpLCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVybiByZXN1
bHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwpAQCAtNzE1LDcgKzcxNSw3IEBA
IE9wdGlvbmFsPFdlYlBhc3RlYm9hcmRQcm94eTo6UGFzdGVib2FyZEFjY2Vzc1R5cGU+IFdlYlBh
c3RlYm9hcmRQcm94eTo6UGFzdGVib2FyCiAgICAgfSk7CiAKICAgICBpZiAobWF0Y2hJbmRleCA9
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBwcm9jZXNzZXNbbWF0Y2hJbmRleF0uc2Vjb25k
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KaW5kZXggMDljZTRjN2Y1MGJhMDY3OTc5YTIzM2MxNmI3ZDAxYzA3Y2Y4NGQ3
OS4uNWZhYzY2MmM5MmJlYTY2YjVkZGVkOWM3ZmU1NGNiNGIwMDUyMjgyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBA
IC0zMTMsNyArMzEzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgaWYgKFdlYlByb2Nlc3NQcm94
eTo6c2hvdWxkRW5hYmxlUmVtb3RlSW5zcGVjdG9yKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZTsKLSAg
ICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIFdURjo6bnVsbG9wdCwgZW5hYmxlUmVtb3RlV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6
bnVsbG9wdCwgZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxlKSkKICAgICAg
ICAgICAgIHBhcmFtZXRlcnMuZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9yRXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZShlbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUpOwogICAg
IH0KICNlbmRpZgpAQCAtMzc4LDI2ICszNzgsMjYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MK
ICAgICAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFdlYkNvcmU6OmRldmljZUhhc0FHWENv
bXBpbGVyU2VydmljZSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAg
IHBhcmFtZXRlcnMuY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2Vy
dmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBpZiAoIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQot
ICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJTZXJ2aWNlcygp
LCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5v
bkJyb3dzZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKFdlYkNvcmU6OmRl
dmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpKQotICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJ
T0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
SU9LaXRDbGFzc0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxl
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9u
cyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgog
CiAgICAgaWYgKGlzSW50ZXJuYWxJbnN0YWxsKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZGlhZ25v
c3RpY3NFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAoZGlhZ25vc3RpY1NlcnZpY2VzKCksIFdURjo6bnVsbG9wdCwgU2FuZGJveEV4
dGVuc2lvbjo6RmxhZ3M6Ok5vUmVwb3J0KTsKKyAgICAgICAgcGFyYW1ldGVycy5kaWFnbm9zdGlj
c0V4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChkaWFnbm9zdGljU2VydmljZXMoKSwgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5z
aW9uOjpGbGFnczo6Tm9SZXBvcnQpOwogCiAgICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNCYXR0ZXJ5
ID0gc3lzdGVtSGFzQmF0dGVyeSgpOwotICAgIHBhcmFtZXRlcnMuc3lzdGVtSGFzQUMgPSBjYWNo
ZWRTeXN0ZW1IYXNBQygpLnZhbHVlT3IodHJ1ZSk7CisgICAgcGFyYW1ldGVycy5zeXN0ZW1IYXNB
QyA9IGNhY2hlZFN5c3RlbUhhc0FDKCkudmFsdWVfb3IodHJ1ZSk7CiAKICAgICBpZiAocmVxdWly
ZXNDb250YWluZXJNYW5hZ2VyQWNjZXNzKCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLmNvbnRhaW5lcm1hbmFnZXJkIl9zLCBXVEY6Om51bGxvcHQs
IGhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS5jb250YWluZXJtYW5hZ2VyZCJfcywgc3RkOjpudWxsb3B0LCBoYW5k
bGUpOwogICAgICAgICBwYXJhbWV0ZXJzLmNvbnRhaW5lck1hbmFnZXJFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKGhhbmRsZSk7CiAgICAgfQogCkBAIC00MTIsMjAgKzQxMiwyMCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogCiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01PREUpICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKF9BWFNBcHBsaWNhdGlvbkFjY2Vzc2liaWxpdHlF
bmFibGVkKCkpCi0gICAgICAgIHBhcmFtZXRlcnMucHJlZmVyZW5jZXNFeHRlbnNpb25IYW5kbGVz
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFw
cGxlLmNmcHJlZnNkLmFnZW50Il9zLCAiY29tLmFwcGxlLmNmcHJlZnNkLmRhZW1vbiJfcyB9LCBX
VEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLnByZWZlcmVuY2VzRXh0ZW5zaW9uSGFu
ZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNv
bS5hcHBsZS5jZnByZWZzZC5hZ2VudCJfcywgImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iX3Mg
fSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghX01HQ2FjaGVWYWxpZCgpKSB7CiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0
LnhwYyJfcywgV1RGOjpudWxsb3B0LCBoYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlZ2VzdGFsdC54cGMi
X3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5tb2JpbGVHZXN0
YWx0RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOwogICAgIH0KICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBsYXVuY2hTZXJ2
aWNlc0V4dGVuc2lvbkhhbmRsZTsKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNlcnZpY2VzZCJfcywg
V1RGOjpudWxsb3B0LCBsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmNvcmVzZXJ2
aWNlcy5sYXVuY2hzZXJ2aWNlc2QiX3MsIHN0ZDo6bnVsbG9wdCwgbGF1bmNoU2VydmljZXNFeHRl
bnNpb25IYW5kbGUpOwogICAgIHBhcmFtZXRlcnMubGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCmluZGV4IDdiMTQ3M2M1ZDJlZGE5NDgyMjA0YWJhYjAyZDZlMGY2Y2RkM2VhNjEuLjFj
ZTI2NWZmOWNkM2FhZjdlNzQ5MmZmODQwMzY5MGU3NTU3M2M3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0y
NDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5
U2VydmVySWZOZWVkZWQoKQogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgaGFu
ZGxlQXJyYXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBoYW5kbGVBcnJheSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5p
cGhvbmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3Rl
bWFwcHNlcnZpY2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRU
b2tlbigpIDogV1RGOjpudWxsb3B0KTsKKyAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2
ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2Vz
Il9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3Rk
OjpudWxsb3B0KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlm
CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja1ByZWZl
cmVuY2VTZXJ2aWNlSWZOZWVkZWQoKQogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5jZnByZWZzZC5hZ2VudCJfcywg
ImNvbS5hcHBsZS5jZnByZWZzZC5kYWVtb24iX3MgfSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlv
bigpLT5nZXRBdWRpdFRva2VuKCkgOiBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gaGFuZGxlQXJy
YXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20u
YXBwbGUuY2ZwcmVmc2QuYWdlbnQiX3MsICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIl9zIH0s
IGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxs
b3B0KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogICAgIAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVuYmxvY2tQcmVmZXJlbmNlU2VydmljZShXVEZNb3Zl
KGhhbmRsZUFycmF5KSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCA4ODg4MjE1N2MwYjE3NmM2NWExNmY2OGE1ODlkNzBiZGNhZjRkYTEy
Li41YThhNjMyMWE0ZGI4ZGZjM2RhMzg1ZWJhMGQxMTk2NTQwMjc3Y2VjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTk5Nyw3ICsxOTk3LDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlVmlld0V4cG9zZWRSZWN0KCkKICAgICBpZiAobV91
c2VDb250ZW50UHJlcGFyYXRpb25SZWN0Rm9yVmlzaWJsZVJlY3QpCiAgICAgICAgIGV4cG9zZWRS
ZWN0ID0gQ0dSZWN0VW5pb24obV9jb250ZW50UHJlcGFyYXRpb25SZWN0LCBleHBvc2VkUmVjdCk7
CiAKLSAgICBtX3BhZ2UtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogV1RGOjpudWxsb3B0
KTsKKyAgICBtX3BhZ2UtPnNldFZpZXdFeHBvc2VkUmVjdChtX2NsaXBzVG9WaXNpYmxlUmVjdCA/
IE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4oZXhwb3NlZFJlY3QpIDogc3RkOjpudWxsb3B0
KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGJvb2wgY2xp
cHNUb1Zpc2libGVSZWN0KQpAQCAtMzAxNCw3ICszMDE0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgZGF0
YSwgV1QKICAgICBfc2hhcmVTaGVldCA9IGFkb3B0TlMoW1tXS1NoYXJlU2hlZXQgYWxsb2NdIGlu
aXRXaXRoVmlldzp2aWV3XSk7CiAgICAgW19zaGFyZVNoZWV0IHNldERlbGVnYXRlOnZpZXddOwog
Ci0gICAgW19zaGFyZVNoZWV0IHByZXNlbnRXaXRoUGFyYW1ldGVyczpkYXRhIGluUmVjdDpXVEY6
Om51bGxvcHQgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOwor
ICAgIFtfc2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFtZXRlcnM6ZGF0YSBpblJlY3Q6c3RkOjpu
dWxsb3B0IGNvbXBsZXRpb25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6c2hhcmVTaGVldERpZERpc21pc3MoV0tTaGFyZVNoZWV0ICpz
aGFyZVNoZWV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRI
YXNoU2FsdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNlSWRIYXNo
U2FsdFN0b3JhZ2UuY3BwCmluZGV4IGMzNTZkYjhmZjM3ZWI0MDY5NzZlZTQyNGRhN2ViZjNiZjZk
NzU5MDEuLjkyMjg1ODc0MDI0YWMyYWQ5YTY5ZDIxOGVkNDA3OTY1MzFiMDc0YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZS5jcHAK
QEAgLTkzLDE2ICs5MywxNiBAQCBEZXZpY2VJZEhhc2hTYWx0U3RvcmFnZTo6fkRldmljZUlkSGFz
aFNhbHRTdG9yYWdlKCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotc3RhdGlj
IFdURjo6T3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEo
Y29uc3QgY2hhciogbmFtZSwgS2V5ZWREZWNvZGVyKiBkZWNvZGVyKQorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRTZWN1cml0eU9yaWdpbkRhdGEoY29uc3QgY2hh
ciogbmFtZSwgS2V5ZWREZWNvZGVyKiBkZWNvZGVyKQogewogICAgIFN0cmluZyBvcmlnaW47CiAK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmluZyhuYW1lLCBvcmlnaW4pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
YXV0byBzZWN1cml0eU9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFz
ZUlkZW50aWZpZXIob3JpZ2luKTsKICAgICBpZiAoIXNlY3VyaXR5T3JpZ2luRGF0YSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiBzZWN1cml0eU9yaWdpbkRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDBjMGE2OWQyZGIzYWJlMjVjMmQ1
ZDEwNWI1ZGIxZjc3Mzg2ZGFkODMuLmI4OTJjOTY3ZDgwZWZmNTBhNDMwZTBmNTM1ZDY5MTY0OWJm
YmUzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBHUFVQcm9jZXNzUHJveHk6OkdQVVByb2Nlc3NQ
cm94eSgpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXZWJDb3Jl
OjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKSkgewotICAgICAgICBwYXJhbWV0ZXJzLmNv
bXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2VzKCksIFdURjo6
bnVsbG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0ZW5zaW9uSGFuZGxl
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9u
cyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
cGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2
aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4
dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRD
bGFzc0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIHN0ZDo6bnVsbG9w
dCk7CiAgICAgfQogCiAgICAgaWYgKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVT
YWZhcmkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChub25Ccm93c2Vy
U2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFj
aEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChub25Ccm93c2VyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogCiAj
aWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTIwOSwxMyArMjA5
LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhZGRDYW1lcmFTYW5kYm94RXh0ZW5zaW9ucyhWZWN0
b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYKICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAg
ICAgICBpZiAoc2hvdWxkQ3JlYXRlQXBwbGVDYW1lcmFTZXJ2aWNlU2FuZGJveEV4dGVuc2lvbigp
KSB7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYXBwbGVDYW1lcmFTZXJ2
aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgICAgICBpZiAoIVNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVy
YWQiX3MsIFdURjo6bnVsbG9wdCwgYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKSB7CisgICAgICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVyYWQiX3MsIHN0ZDo6bnVsbG9w
dCwgYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpKSB7CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBj
b20uYXBwbGUuYXBwbGVjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9BUFBM
RV9DQU1FUkFfU0VSVklDRSkKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBh
ZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0g
ICAgICAgICAgICBpZiAoIVNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIFdURjo6bnVsbG9wdCwgYWRkaXRpb25h
bEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgICAg
ICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFkZGl0aW9uYWxBcHBs
ZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpIHsKICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBs
ZS5hcHBsZWgxM2NhbWVyYWQgc2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVy
aWNDYWxsYmFjay5oCmluZGV4IDAzNTQxOWQwMjE5NDM0ZTU3MGZkN2JkNTNjMGU5NDBlZmJkZTEx
ZDMuLmUyNzNhZmM2ZWY2NmI1YmMyYjA5NTMzYWI4ZGEyNDQ5MGNlNWIwM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywgV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9jYWxsYmFjaywg
c3RkOjpudWxsb3B0KTsKICAgICAgICAgY2FsbGJhY2sudmFsdWUoKShyZXR1cm5WYWx1ZS4uLiwg
RXJyb3I6Ok5vbmUpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX2NhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8g
Y2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2ssIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdlKG1fY2FsbGJhY2ssIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIGNhbGxiYWNrLnZhbHVlKCkodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJl
bmNlPFQ+Ojp0eXBlKCkuLi4sIGVycm9yKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhOWVhNjI4ZmQxOTg1YTJlZTdj
YjE2MDBjZDE3ODI4ZjA2ZjRiYmE4Li40MTg4Nzg2NTM5MzZkNDJhZmYxZDRkOWUwMTIzNzFkMTQw
YzAzOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBVUkwgcmVxdWVzdFVSTCB7IHsgfSwgcGFnZS5wYWdlTG9hZFN0YXRlKCkudXJsKCkg
fTsKLSAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5zcGVjdChyZXF1ZXN0VVJM
Lmhvc3RBbmRQb3J0KCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1swXSkudmFsdWVPcigwKSwg
cGFyc2VJbnRlZ2VyPGludD4odG9rZW5zWzFdKS52YWx1ZU9yKDApLCB0b2tlbnNbMl0pOworICAg
ICAgICBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFu
ZFBvcnQoKSwgcGFyc2VJbnRlZ2VyPGludD4odG9rZW5zWzBdKS52YWx1ZV9vcigwKSwgcGFyc2VJ
bnRlZ2VyPGludD4odG9rZW5zWzFdKS52YWx1ZV9vcigwKSwgdG9rZW5zWzJdKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jUmVwbHkoKSBvdmVycmlkZQpAQCAtMTA0LDcgKzEw
NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlPiBwYXJzZURl
YnVnZ2FibGVUeXBlRnJvbVN0cmluZyhjb25zdCBTCiAgICAgaWYgKGRlYnVnZ2FibGVUeXBlU3Ry
aW5nID09ICJ3ZWItcGFnZSJfcykKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RGVidWdnYWJs
ZVR5cGU6OldlYlBhZ2U7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpp
bnNwZWN0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQsIENvbm5lY3Rpb25JRCBjb25uZWN0aW9u
SUQsIFRhcmdldElEIHRhcmdldElELCBjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC0xMjEsNyArMTIx
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6Omluc3BlY3QoY29uc3Qg
U3RyaW5nJiBob3N0QW5kUG9ydCwgQ29ubmVjdGkKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90
b2NvbEhhbmRsZXI6OnJ1blNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAgICBtX3Bh
Z2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgV1RG
OjpudWxsb3B0LCBmYWxzZSB9LCAKKyAgICBtX3BhZ2UucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KHsgc2NyaXB0LCBVUkwgeyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmYWxzZSB9LCAKICAgICAg
ICAgW10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkV4Y2VwdGlvbiBydW5uaW5nIHNjcmlwdCBcIiVzXCIi
LCByZXN1bHQuZXJyb3IoKS5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggZjhjOWZhYjQ4Yjg5ZGQxN2E4NDI0NjZhMWM4NGRjMTEyNTU1MTQyNy4uOTg2MmVmMjU5NTlk
YTFjMjZmNWE0MmNjOTNmODg0Njk2ODRkNmFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMDgsNyAr
MzA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpuZXR3b3JrUHJvY2Vzc0RpZFRlcm1p
bmF0ZShUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAKICAgICBtX2FjdGl2aXR5Rm9ySG9sZGlu
Z0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKIAotICAgIG1fdXBsb2FkQWN0aXZpdHkgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV91cGxvYWRBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChk
ZWZhdWx0TmV0d29ya1Byb2Nlc3MoKSA9PSB0aGlzKQogICAgICAgICBkZWZhdWx0TmV0d29ya1By
b2Nlc3MoKSA9IG51bGxwdHI7CkBAIC0xNDM2LDcgKzE0MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHBybwogCiAgICAgICAgIGlmIChtX3VwbG9hZEFjdGl2aXR5LT53ZWJQcm9jZXNzQXNzZXJ0
aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHM6IFRoZSBu
dW1iZXIgb2YgdXBsb2FkcyBpbiBwcm9ncmVzcyBpcyBub3cgemVyby4gUmVsZWFzaW5nIE5ldHdv
cmtpbmcgYW5kIFVJIHByb2Nlc3MgYXNzZXJ0aW9ucy4iKTsKLSAgICAgICAgICAgIG1fdXBsb2Fk
QWN0aXZpdHkgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX3VwbG9hZEFjdGl2aXR5ID0g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQppbmRleCBhNTUxYTJjM2Y0OWUy
YzY3YTc3OTRhMjM3ZDRlN2EwMThiOTgxZTk3Li4xYTY0NjYwNWJiNTk3Yzg4NTk2YTcyZmI4YjYy
OTlmZTQ1YTJlNGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QREYvV0tQ
REZIVURWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZp
ZXcubW0KQEAgLTIyNCw3ICsyMjQsNyBAQCAtIChPcHRpb25hbDxOU1VJbnRlZ2VyPilfY29udHJv
bEluZGV4Rm9yRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgICAgICBpZiAoQ0dSZWN0Q29udGFp
bnNQb2ludCh3aW5kb3dTcGFjZVJlY3QsIGluaXRpYWxQb2ludCkpCiAgICAgICAgICAgICByZXR1
cm4gaW5kZXg7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogLSAoTlNTdHJpbmcgKilfY29udHJvbEZvckV2ZW50OihOU0V2ZW50
ICopZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA3ZjkzMzhjMmEx
YjNlN2I4YTMxZjBkNDU5ZTRiMTNkNTRmNDJlMWQ3Li5iNDkxMjcwODlkNDI4Nzk1MGY1NGQ2MjQ4
OGMwOWQ5ODA0MzhlOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0y
NjcsNyArMjY3LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhbmRsZVJ1bk9wZW5Q
YW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgRnJhbWVJbmZvRGF0YSYs
IEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJv
eHkqKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG93U2hhcmVTaGVldChj
b25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkIChib29sKT4mJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFj
dEluZm8+PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdl
YkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7
CiAKQEAgLTYwOSw3ICs2MDksNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1
cmVSZWNvZ25pemVyKikgeyB9Ci0gICAgdmlydHVhbCBXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBh
Y3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25p
emVyKikgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdl
c3R1cmVSZWNvZ25pemVyKikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogI2lm
IFVTRShXUEVfUkVOREVSRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKaW5kZXggN2JkOGMxOWMyNjNhY2RhZGRiMTZlOTUwMDhh
MWNiN2EyOGFjYjI4MC4uNzlmMzFjNjA0MTRmZmI0NjUwMWNkMjVhNjRhNmJlNzY2MzVlNDZlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0
b3JlLmNwcApAQCAtMjI1LDcgKzIyNSw3IEBAIGJvb2wgUGx1Z2luSW5mb1N0b3JlOjppc1N1cHBv
cnRlZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpCiBPcHRp
b25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IFBsdWdpbkluZm9TdG9yZTo6
c3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKQogewogICAgIGlmICghbV9zdXBwb3J0ZWRQbHVn
aW5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIFdURjo6bWFwKCptX3N1cHBvcnRlZFBsdWdpbnMsIFtdIChh
dXRvJiYgaXRlbSkgewogICAgICAgICByZXR1cm4gU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllciB7
IGl0ZW0ubWF0Y2hpbmdEb21haW4sIGl0ZW0uaWRlbnRpZmllciB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKaW5kZXggN2Y4MWVkNzRj
ODQ1YjAxZGNhNGFjYTJmOGNmMmE0OGI5YzcyYTc1Ny4uNzVhZTZiYjYyZDg0Y2E0MTlkMjhmZmRm
NjgwMDJmMGZmMmVkZDRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU3VwcG9ydGVkUGx1Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFVSTCYgcGx1
Z2luVVJMLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBVUkwmIHBhZ2VVUkwp
OwogICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVy
Pj4gc3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcnMoKTsKICAgICB2b2lkIGFkZFN1cHBvcnRlZFBs
dWdpbihTdHJpbmcmJiBtYXRjaGluZ0RvbWFpbiwgU3RyaW5nJiYgaWRlbnRpZmllciwgSGFzaFNl
dDxTdHJpbmc+JiYgbWltZVR5cGVzLCBIYXNoU2V0PFN0cmluZz4gZXh0ZW5zaW9ucyk7Ci0gICAg
dm9pZCBjbGVhclN1cHBvcnRlZFBsdWdpbnMoKSB7IG1fc3VwcG9ydGVkUGx1Z2lucyA9IFdURjo6
bnVsbG9wdDsgfQorICAgIHZvaWQgY2xlYXJTdXBwb3J0ZWRQbHVnaW5zKCkgeyBtX3N1cHBvcnRl
ZFBsdWdpbnMgPSBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICBQbHVnaW5Nb2R1bGVJ
bmZvIGZpbmRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCAzNTNmYzk1NDU1NjQ1Nzk0YWNk
ODhiYTg1NDc5MDg1YzYyZDA3NDRhLi5jMDkxNTlmYThlMDAwYmU0Nzc3NzZlM2QzNmRiZjViZGQy
NjcxMmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNw
cApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6cHJvY2Vzc1JlYWR5
VG9TdXNwZW5kKCkKIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6Y2xlYXJQZW5kaW5nUmVxdWVzdFRv
U3VzcGVuZCgpCiB7CiAgICAgbV9wcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyLnN0b3AoKTsK
LSAgICBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9w
ZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFByb2Nl
c3NUaHJvdHRsZXI6OnNlbmRQcmVwYXJlVG9TdXNwZW5kSVBDKElzU3VzcGVuc2lvbkltbWluZW50
IGlzU3VzcGVuc2lvbkltbWluZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDIyNmQyOTMzNDA1ZWE1YjZmMGJjMzY5ZTUxZmQw
Nzg2MmUzN2FmNzYuLmFjZmY5MGM4OGZkYWU3NmIyOWM0N2VlODIyNjQzNWNjYzBjZDZkNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAK
QEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQog
ICAgICAgICBtX3JlcXVlc3QsCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTCht
X3JlcXVlc3QudXJsKCkpLAogICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVJRCgpLAotICAgICAg
ICBXVEY6Om51bGxvcHQsCisgICAgICAgIHN0ZDo6bnVsbG9wdCwKICAgICB9OwogICAgIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX21haW5GcmFtZS0+ZnJhbWVJRCgpLCBXVEZNb3Zl
KGZyYW1lSW5mbyksIFJlc291cmNlUmVxdWVzdCB7IG1fcmVxdWVzdCB9LCBtX25hdmlnYXRpb25J
RCwgbV9wcm92aXNpb25hbExvYWRVUkwuc3RyaW5nKCksIGVycm9yLCBXZWJDb3JlOjpXaWxsQ29u
dGludWVMb2FkaW5nOjpObywgVXNlckRhdGEgeyB9KTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8Lgog
fQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmllciBmCiAgICAgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYg
KCFpc01haW5GcmFtZSB8fCAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPmZyYW1lSUQoKSAh
PSBmcmFtZUlEKSB8fCBuYXZpZ2F0aW9uSUQgIT0gbV9uYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAg
cmVwbHkoUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdlYkNvcmU6
OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0
ZDo6bnVsbG9wdCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4
IDBlMjZkYjc5YWIzNGUyNmY4MzI4NzJiYTkyYTljMmVjM2MwMmM1ZjAuLjVjM2I2ZmIwZDE2MTMx
Y2I5NzIwNzBiMzEwZDEwMjVkZjdmMDU3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtOTgsOCArOTgsOCBAQCBwdWJsaWM6CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6
TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YShB
UEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAg
ICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB2b2lkIGluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
Jik7Ci0gICAgYm9vbCB2YWxpZGF0ZUlucHV0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29u
c3QgT3B0aW9uYWw8dWludDY0X3Q+JiBuYXZpZ2F0aW9uSUQgPSBXVEY6Om51bGxvcHQpOworICAg
IGJvb2wgdmFsaWRhdGVJbnB1dChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlv
bmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklEID0gc3RkOjpudWxsb3B0KTsKIAogICAgIFdlYlBh
Z2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25Q
ZXJtaXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2du
aXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCmluZGV4IDQ3N2M1N2Y3Y2Y0ZjIwMTg2M2UwOGQyMjBk
M2EyN2E2OGViYzIwNGUuLjQwYTlmMjkwN2U1MThiYzE3OGYyODY5NGFhOGRmOWQ1ZmVlNGM1NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVy
bWlzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNv
Z25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN0YXJ0TmV4dFJlcXVlc3QoKTsKICAgICB2b2lkIHN0YXJ0UHJvY2Vzc2luZ1JlcXVl
c3QoKTsKICAgICB2b2lkIGNvbnRpbnVlUHJvY2Vzc2luZ1JlcXVlc3QoKTsKLSAgICB2b2lkIGNv
bXBsZXRlQ3VycmVudFJlcXVlc3QoT3B0aW9uYWw8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0
KE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBzdGQ6Om51bGxv
cHQpOwogICAgIHZvaWQgcmVxdWVzdE1pY3JvcGhvbmVBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVl
c3RTcGVlY2hSZWNvZ25pdGlvblNlcnZpY2VBY2Nlc3MoKTsKICAgICB2b2lkIHJlcXVlc3RVc2Vy
UGVybWlzc2lvbihXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3QmIHJlcXVlc3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmgK
aW5kZXggYTE5MTI5OTAyYjBlYThkMTEzZGI0NWQ5MGQ0ZDE0N2MxZjczNWZkMC4uNTA2MTE5YWVi
ZjgyYjNkZGM5ZTQzMTZlZjQxOTdiOTc2N2M2YjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbkZvclJlcXVlc3QoV2Vi
Q29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBoYW5kbGVSZXF1ZXN0
KFVuaXF1ZVJlZjxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3Q+JiYpOwotICAgIHZv
aWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGUsIE9wdGlvbmFs
PFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gV1RGOjpudWxsb3B0LCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPj4gPSBXVEY6Om51
bGxvcHQpOworICAgIHZvaWQgc2VuZFVwZGF0ZShXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkNv
bm5lY3Rpb25DbGllbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGUsIE9wdGlvbmFsPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+ID0gc3RkOjpu
dWxsb3B0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25SZXN1bHRE
YXRhPj4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2VuZFVwZGF0ZShjb25zdCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFu
YWdlci5jcHAKaW5kZXggZjBkY2M3ZTE3Nzc1ZDEwNTQwMGNkNWU2ZDIzZmI3MmQ4NzNlYzA0NS4u
OTQ2MDJiYzQ1YzUxOWVkOWUyMGM3YzRiMzVlZmQ3MmEyZDVlZGEwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcApAQCAtMTA3
LDEwICsxMDcsMTAgQEAgYm9vbCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1l
ZGlhU3RyZWFtKFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWEKICAgICAgICAgICAgICAgICBp
ZHMudW5jaGVja2VkQXBwZW5kKHZpZGVvRXh0ZW5zaW9uUGF0aCk7CiAKICAgICAgICAgICAgIGlm
IChuZWVkc0FwcGxlQ2FtZXJhU2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIGlm
IChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJh
U2VydmljZVBhdGgsIFdURjo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCisg
ICAgICAgICAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0LCBoYW5kbGVzWy0tZXh0
ZW5zaW9uQ291bnRdKSkKICAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChh
cHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJB
X1NFUlZJQ0UpCi0gICAgICAgICAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIFdURjo6
bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCisgICAgICAgICAgICAgICAgaWYg
KFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFw
cGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNv
dW50XSkpCiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYWRkaXRpb25h
bEFwcGxlQ2FtZXJhU2VydmljZVBhdGgpOwogI2VuZGlmCiAgICAgICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKaW5kZXggMjMzMTkyYThm
MTQxMWU5NTY5YzkwYTE4MDA4NGI4MTNhN2IwZDEyNy4uNjI3YWZmNjY5YmM4NTdiNjIyMmVhZjE5
YTg0N2Y1MTU5NTEzMTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d1NuYXBzaG90U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIFZpZXdTbmFwc2hvdFN0b3JlOjpy
ZWNvcmRTbmFwc2hvdChXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViQmFja0Zvcndhcgog
CiAgICAgd2ViUGFnZVByb3h5LndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoaXRlbSk7CiAK
LSAgICBhdXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNob3QoV1RGOjpu
dWxsb3B0KTsKKyAgICBhdXRvIHNuYXBzaG90ID0gd2ViUGFnZVByb3h5LnRha2VWaWV3U25hcHNo
b3Qoc3RkOjpudWxsb3B0KTsKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAppbmRleCA3YTkzNDg0NzU5ZjJkYjg0
ZjI1YjRkOWQ5N2I5ODJiMjQxYTc4MmU0Li44MzQ0ZmRkNDEyYzU5NjdmYzI1NDg0YmJhN2NmMzA1
ZWJhMzM1OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCkBAIC00MzEs
NyArNDMxLDcgQEAgdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6aW5pdFRpbWVPdXRUaW1lcigp
CiAgICAgICAgIHRpbWVPdXRJbk1zID0gb3B0aW9ucy50aW1lb3V0OwogICAgIH0pOwogCi0gICAg
dW5zaWduZWQgdGltZU91dEluTXNWYWx1ZSA9IHN0ZDo6bWluKG1heFRpbWVPdXRWYWx1ZSwgdGlt
ZU91dEluTXMudmFsdWVPcihtYXhUaW1lT3V0VmFsdWUpKTsKKyAgICB1bnNpZ25lZCB0aW1lT3V0
SW5Nc1ZhbHVlID0gc3RkOjptaW4obWF4VGltZU91dFZhbHVlLCB0aW1lT3V0SW5Ncy52YWx1ZV9v
cihtYXhUaW1lT3V0VmFsdWUpKTsKICAgICBtX3JlcXVlc3RUaW1lT3V0VGltZXIuc3RhcnRPbmVT
aG90KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHModGltZU91dEluTXNWYWx1ZSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggYTIxZWYwMGNhMWFk
ZDFhN2I4NjFhMzdmYWU1ZjNkODNjMzQ3NGFkZi4uMWFhYzFjYTI2MWVjM2E5YzI5N2IxYzkzYjMz
NDA4MzIyZjdkYmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5t
bQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpCiAgICAgQ0ZUeXBl
UmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CiAgICAgT1NTdGF0dXMgc3RhdHVzID0g
U2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LmdldCgp
LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJT
ZWNJdGVtTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9w
dENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAgTlNBcnJheSAqc29ydGVkQXR0cmlidXRlc0Fy
cmF5ID0gWyhOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmIHNvcnRlZEFycmF5VXNpbmdDb21w
YXJhdG9yOl4oTlNEaWN0aW9uYXJ5ICphLCBOU0RpY3Rpb25hcnkgKmIpIHsKICAgICAgICAgcmV0
dXJuIFtiWyhpZClrU2VjQXR0ck1vZGlmaWNhdGlvbkRhdGVdIGNvbXBhcmU6YVsoaWQpa1NlY0F0
dHJNb2RpZmljYXRpb25EYXRlXV07CkBAIC0xNDksMjEgKzE0OSwyMSBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3Rp
bmdDcmVkZW50aQogICAgICAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFk
ZXI6OnJlYWQodmVjdG9yRnJvbU5TRGF0YShhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0
aW9uVGFnXSkpOwogICAgICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3Bv
bnNlLT5pc01hcCgpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3Bv
bnNlLT5nZXRNYXAoKTsKIAogICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KGZpZG86OmtFbnRpdHlJZE1hcEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAu
ZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgYXV0byYgdXNl
ckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogCiAgICAgICAgIGl0ID0gcmVz
cG9uc2VNYXAuZmluZChDQk9SKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KSk7CiAgICAgICAgIGlm
IChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygpKSB7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAg
ICAgICAgIGF1dG8mIHVzZXJuYW1lID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
SGlkQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAppbmRleCA4ZTljNzZkYzBlODhjZTU3ODU0
NzFjYjE1NGE1MDE4OWJkMTU5ODIyLi44NDhmNTMxOWM4NjdjNzM4ZTQ2ZTE3ZTk2MTZlMTYzODZk
ZDE5MTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tIaWRDb25uZWN0aW9uLmNwcApAQCAtMTk1
LDcgKzE5NSw3IEBAIHZvaWQgTW9ja0hpZENvbm5lY3Rpb246OnBhcnNlUmVxdWVzdCgpCiAgICAg
fQogCiAgICAgbV9jdXJyZW50Q2hhbm5lbCA9IG1fcmVxdWVzdE1lc3NhZ2UtPmNoYW5uZWxJZCgp
OwotICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0TWVz
c2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobV9jb25maWd1cmF0aW9uLmhpZC0+ZmFzdERh
dGFBcnJpdmFsKQogICAgICAgICBmZWVkUmVwb3J0cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1
ZXN0RGF0YS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oCmluZGV4IGMyNWQ5MDViNWQwMWU4MDQzZmIyYjVj
MzEzZWEwNDFhMTBkYTU3MDUuLjRjM2JiYWFhZjhmYzk0OGVkMDU2ZWI4YTc2ZGM5Y2YxY2U4YTQ2
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKQEAg
LTUwLDcgKzUwLDcgQEAgc3RydWN0IFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgewogICAg
IFdlYWtQdHI8V2ViUGFnZVByb3h5PiBwYWdlOwogICAgIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxS
ZXN1bHQgcGFuZWxSZXN1bHQgeyBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWls
YWJsZSB9OwogICAgIFJlZlB0cjxBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWw+IHBhbmVsOwot
ICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlEOwogICAgIFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm87CiAKICAgICBib29sIHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2ZXIuY3BwCmluZGV4
IDA2ZjIzMTU1MjZhZjFmMjM4NGI1NTBhZGVmYTlmMTllMTBlZWQ1YWYuLmRiZmJlNjM5N2ZjMTIw
MTU5OTQwMjk3NmNjNzdjNGMzZjU1MWViODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwSGlkRHJpdmVy
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6d3JpdGUo
SGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQgc2VudCkKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
V3JpdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoc2VudCAhPSBIaWRDb25uZWN0aW9uOjpE
YXRhU2VudDo6WWVzKSB7Ci0gICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuTWVzc2FnZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTEwLDcgKzExMCw3IEBA
IHZvaWQgQ3RhcEhpZERyaXZlcjo6V29ya2VyOjpyZWFkKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VNZXNzYWdlLT5hZGRD
b250aW51YXRpb25QYWNrZXQoZGF0YSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRu
J3QgcGFyc2UgYSBoaWQgY29udGludWF0aW9uIHBhY2tldC4iKTsKLSAgICAgICAgICAgIG1fcmVz
cG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9yZXNwb25zZU1lc3Nh
Z2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm5NZXNzYWdlKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIEN0YXBIaWRE
cml2ZXI6Oldvcmtlcjo6cmVzZXQoKQogewogICAgIG1fY29ubmVjdGlvbi0+dW5yZWdpc3RlckRh
dGFSZWNlaXZlZENhbGxiYWNrKCk7CiAgICAgbV9jYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgbV9y
ZXNwb25zZU1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9yZXF1ZXN0TWVzc2FnZSA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBt
X3JlcXVlc3RNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6SWRs
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zvcndh
cmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKaW5kZXggZTQ4ZjU5OTIwZmU0YTNhYjM5MTEyNmEzN2M2MzI3MjE5OGEwNDRlMy4uNGM1NGM2
YWYwNzAxY2M5YjNmMjZjZGEzNTUxNjBkMzVkMzUxYzQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0OjpwYWdlQ2xvc2VkKCkKIAogICAgIG1fcGFnZSA9IG51bGxwdHI7
CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0
ZW0pCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0o
UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+JiYgbmV3SXRlbSkKICAgICAgICAgICAgIG1fZW50
cmllcy5yZW1vdmUoMCk7CiAKICAgICAgICAgICAgIGlmIChtX2VudHJpZXMuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4ID0gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIC0tKm1fY3VycmVudEluZGV4OwogICAgICAgICB9CkBAIC0zNDgsNyAr
MzQ4LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFsbEl0ZW1zKCkKICAgICB9
CiAKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKLSAgICBtX2N1cnJlbnRJbmRleCA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX2N1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BhZ2UtPmRp
ZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwog
fQogCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmNsZWFyKCkK
ICAgICAgICAgfQogCiAgICAgICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgICAgICBtX2N1cnJl
bnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIs
IFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMzk5LDcgKzM5
OSw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgaWYgKGN1cnJlbnRJ
dGVtKQogICAgICAgICBtX2VudHJpZXMuYXBwZW5kKGN1cnJlbnRJdGVtLnJlbGVhc2VOb25OdWxs
KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIG1fcGFnZS0+ZGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAK
QEAgLTQyNiw3ICs0MjYsNyBAQCBCYWNrRm9yd2FyZExpc3RTdGF0ZSBXZWJCYWNrRm9yd2FyZExp
c3Q6OmJhY2tGb3J3YXJkTGlzdFN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbAogICAgIH0KIAogICAg
IGlmIChiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIGJhY2tG
b3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYmFj
a0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2Ug
aWYgKGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zLnNpemUoKSA8PSBiYWNrRm9yd2FyZExpc3RT
dGF0ZS5jdXJyZW50SW5kZXgudmFsdWUoKSkKICAgICAgICAgYmFja0ZvcndhcmRMaXN0U3RhdGUu
Y3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpIC0gMTsKIApA
QCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0
YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0CiAgICAgICAgIGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCks
IE9iamVjdElkZW50aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZp
ZXJUeXBlPjo6Z2VuZXJhdGUoKSB9OwogICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlKSwgbV9wYWdlLT5pZGVudGlmaWVyKCkpKTsKICAgICB9Ci0gICAgbV9jdXJyZW50SW5kZXgg
PSBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPyBPcHRpb25hbDxzaXplX3Q+KCpi
YWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXgpIDogV1RGOjpudWxsb3B0OworICAgIG1f
Y3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID8gT3B0aW9u
YWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsKIAogICAgIExPRyhCYWNrRm9y
d2FyZCwgIihCYWNrL0ZvcndhcmQpIFdlYkJhY2tGb3J3YXJkTGlzdCAlcCByZXN0b3JlZCBmcm9t
IHN0YXRlIChoYXMgJXp1IGVudHJpZXMpIiwgdGhpcywgbV9lbnRyaWVzLnNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjNTJlMmI4ZTA5ZjliMGFl
NGEzNDA0NGYyMmQ2ODMyYzgwZWMzMzg0Li5hZmQ3NjI3YzkwMDdjNzQ0ZDYyNTAwN2UxNTJhNmY2
MWFjMWZiZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTEwNjAsNyArMTA2MCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgfQogCiAgICAgLy8gV2UgYWxsb3cgc3RhbGUg
Y29udGVudCB3aGVuIHJlbG9hZGluZyBhIFdlYlByb2Nlc3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9y
IGNyYXNoZWQuCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRl
bShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVM
b2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Ok5vLCBzdGQ6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NU
aW1lcigpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlv
cml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50
TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZp
dHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CiAKLSAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRh
LCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVs
bG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
biwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBz
dGQ6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBu
YXZpZ2F0aW9uOwogfQogCkBAIC0xNzQxLDcgKzE3NDEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbQogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0UGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24s
IHsgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS51cmwo
KSB9KTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0o
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQo
KSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpu
dWxsb3B0KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRl
bShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1J
RCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBzdGQ6
Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwog
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0yNjU2LDcgKzI2NTYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJy
ZW50RHJhZ0luZm9ybWF0aW9uKCkKIHsKLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV1RG
OjpudWxsb3B0OworICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25l
OwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAgICBtX2N1cnJl
bnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7CkBAIC0yNzUyLDcgKzI3NTIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFn
T3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1
dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50
TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMi
X3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5p
Y29uc2VydmljZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAgIAogICAg
IExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1
ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNl
RXZlbnRRdWV1ZS5zaXplKCkpOwpAQCAtMzI5MCw3ICszMjkwLDcgQEAgYm9vbCBXZWJQYWdlUHJv
eHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJv
b2wgaXNNYWkKICAgICB9CiAKICAgICBpZiAoIWlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
IHsKLSAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobV9pZ25vcmVzQXBwQm91bmRE
b21haW5zKQpAQCAtMzQ0NSw3ICszNDQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGlj
aWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNw
b25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlm
aWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0zNDkzLDcgKzM0OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJv
dmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAg
IEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBuZXdQSUQ9JWkiLCBtX3Byb3Zpc2lvbmFs
UGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUg
PyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7Cisg
ICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNz
ID0gbV9tYWluRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQo
KSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLnB0cigpICE9ICZtX3By
b3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpKTsKIApAQCAtMzg5OCw3ICszODk4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQsIE9wdGlvbmFsPHUKIAogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3Rv
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IudmFsdWVP
cihtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKTsKKyAgICByZXR1cm4gbV9jdXN0b21EZXZp
Y2VTY2FsZUZhY3Rvci52YWx1ZV9vcihtX2ludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1
c3RvbVNjYWxlRmFjdG9yKQpAQCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEN1c3RvbURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGN1c3RvbVNjYWxlRmFjdG9yKQogICAg
IGlmIChjdXN0b21TY2FsZUZhY3RvcikKICAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZhY3Rv
ciA9IGN1c3RvbVNjYWxlRmFjdG9yOwogICAgIGVsc2UKLSAgICAgICAgbV9jdXN0b21EZXZpY2VT
Y2FsZUZhY3RvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jdXN0b21EZXZpY2VTY2FsZUZh
Y3RvciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDI0OCw3ICs0MjQ4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxh
dW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVu
SmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxSZWZQdHI8QVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU+LCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYmKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBXVEY6Om51bGxvcHQsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVu
dFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIHJ1bkphdmFTY3JpcHRJ
bkZyYW1lSW5TY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzdGQ6Om51bGxvcHQsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCksIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBBUEk6OkNvbnRlbnRXb3JsZCYgd29y
bGQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8UmVmUHRyPEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mJik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKQEAgLTUyMTUsNyArNTIxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAK
ICAgICBpZiAoIWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNz
KHByb2Nlc3MsIHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVz
b3VyY2UgYmVjYXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRl
ci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9u
IHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwg
UG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Mjc2LDcgKzUyNzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9u
VHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CiAKICAgICBhdXRv
IHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYXV0
byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRp
b25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKKyAgICBhdXRvIG5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1l
SW5mby5wdHIoKSwgc3RkOjpudWxsb3B0LCBSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIG9yaWdp
bmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0
ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05h
dmlnYXRpb24ocmVxdWVzdCkpIHsKQEAgLTU0NzMsNyArNTQ3Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHBy
b2Nlc3MpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9y
aWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2Vu
ZGVyLmNvcHlSZWYoKSk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcmVzcG9uZCBz
eW5jaHJvbm91c2x5LCBwcm9jZWVkIHdpdGggdGhlIGxvYWQuCi0gICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2Vu
ZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5
QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQpAQCAtNTY5NCw3ICs1Njk0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Uo
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICAgICBhdXRv
IG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7
CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudF0gKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUg
ewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJlcGx5KHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01NzIyLDcgKzU3
MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJQYQogICAgICAgICB1c2VySW5pdGlhdGVkQWN0
aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAKICAgICBib29sIHNob3VsZE9wZW5B
cHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCkuaG9zdCgpICE9
IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBv
cmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3Zl
KHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0
ZWRBY3Rpdml0eSkpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGlu
Z0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSkpOwogCiAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
ICp0aGlzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgd2luZG93RmVhdHVyZXMgPSBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVz
KV0gKFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViUGFnZVByb3h5PiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmNyZWF0ZU5ld1BhZ2UoKnRoaXMs
IFdURk1vdmUod2luZG93RmVhdHVyZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC02NTI5LDcgKzY1MjksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKAogICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0
ZW1BdEluZGV4KGluZGV4KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXRlbS0+aXRlbUlE
KCkpOwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmJhY2tGb3J3YXJkTGlzdENvdW50cyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZExpc3RDb3VudHNEZWxheWVkUmVwbHkmJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTY5MTMsOSArNjkxMyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9w
ZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNv
blNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbjsKICNpZiBIQVZFKEZST05UQk9BUkRfU1lTVEVNX0FQ
UF9TRVJWSUNFUykKLSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgV1RGOjpudWxs
b3B0LCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0LCBmcm9udGJvYXJkU2VydmljZXNTYW5k
Ym94RXh0ZW5zaW9uKTsKICNlbmRpZgotICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwg
aWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbik7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpu
dWxsb3B0LCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdB
bmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRh
UmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2FyZFNlcnZpY2VzU2Fu
ZGJveEV4dGVuc2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikpOwogCkBAIC03NzYx
LDcgKzc3NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVh
c29uIHJlc2V0U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0g
ICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5hdXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVl
c3QobV93ZWJQYWdlSUQsIFdURjo6bnVsbG9wdCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5h
dXRoZW50aWNhdG9yTWFuYWdlcigpLmNhbmNlbFJlcXVlc3QobV93ZWJQYWdlSUQsIHN0ZDo6bnVs
bG9wdCk7CiAjZW5kaWYKIAogICAgIG1fc3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdl
ciA9IG51bGxwdHI7CkBAIC04MDE0LDcgKzgwMTQsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJv
YwogICAgIGlmIChtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSkKICAgICAgICAgcGFyYW1ldGVycy5z
Y3JvbGxiYXJPdmVybGF5U3R5bGUgPSBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZS52YWx1ZSgpOwog
ICAgIGVsc2UKLSAgICAgICAgcGFyYW1ldGVycy5zY3JvbGxiYXJPdmVybGF5U3R5bGUgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gc3Rk
OjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlID0g
bV9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAgICAgcGFyYW1ldGVycy5sYXllckhvc3Rp
bmdNb2RlID0gbV9sYXllckhvc3RpbmdNb2RlOwogICAgIHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5
QXV0b21hdGlvbiA9IG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbjsKQEAgLTgwNTYsOCArODA1Niw4
IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFt
ZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKICAgICBpZiAobmVlZFdlYlByb2Nlc3NFeHRl
bnNpb25zKSB7CiAgICAgICAgIC8vIEZJWE1FKDIwNzcxNik6IFRoZSBmb2xsb3dpbmcgc2hvdWxk
IGJlIHJlbW92ZWQgd2hlbiB0aGUgR1BVIHByb2Nlc3MgaXMgY29tcGxldGUuCi0gICAgICAgIHBh
cmFtZXRlcnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIFdURjo6bnVs
bG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVk
aWFSZWxhdGVkSU9LaXRDbGFzc2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRl
cnMubWVkaWFFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAobWVkaWFSZWxhdGVkTWFjaFNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIHBhcmFtZXRlcnMubWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMobWVkaWFSZWxh
dGVkSU9LaXRDbGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFwcmVm
ZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JNZWRpYUVuYWJsZWQoKQpAQCAtODA2NSw4ICs4MDY1
LDggQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICAgICAgfHwgKCFwcmVmZXJlbmNlcygp
LmNhcHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQoKSAmJiAhcHJlZmVyZW5jZXMoKS5jYXB0
dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSkKICAgICAgICAgfHwgIXByZWZlcmVuY2VzKCku
dXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAgICB8fCAhcHJl
ZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKLSAgICAgICAgcGFy
YW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2VzKCksIFdURjo6
bnVsbG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVNYWNoU2Vydmlj
ZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4
dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVzRm9yTWFjaExvb2t1cChncHVNYWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICAg
ICB9CiAjZW5kaWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQpAQCAtODEwNCw3ICs4
MTA0LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9
IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gT3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlm
ZXN0KCktPmFwcGxpY2F0aW9uTWFuaWZlc3QoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gbV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1h
bmlmZXN0KCkgPyBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihtX2NvbmZp
Z3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS0+YXBwbGljYXRpb25NYW5pZmVzdCgpKSA6
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1
dGVzID0gbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzOwpAQCAtODE2NSw3ICs4MTY1LDcgQEAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2MKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpICYmIFBM
QVRGT1JNKENPQ09BKQogICAgIGlmIChtX3ByZWZlcmVuY2VzLT5hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQoKSAmJiAhbV9wcm9jZXNzLT5oYXNJc3N1ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRT
YW5kYm94RXh0ZW5zaW9ucygpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuYXR0YWNobWVudEVsZW1l
bnRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoYXR0YWNobWVudEVsZW1lbnRTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOworICAg
ICAgICBwYXJhbWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGF0dGFjaG1lbnRFbGVtZW50
U2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgbV9wcm9jZXNzLT5zZXRIYXNJc3N1
ZWRBdHRhY2htZW50RWxlbWVudFJlbGF0ZWRTYW5kYm94RXh0ZW5zaW9ucygpOwogICAgIH0KICNl
bmRpZgpAQCAtMTAxNDQsNyArMTAxNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwb3J0UGFn
ZUxvYWRSZXN1bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gcGFnZUxvYWRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkgLSAqbV9wYWdl
TG9hZFN0YXJ0OwotICAgIG1fcGFnZUxvYWRTdGFydCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bh
Z2VMb2FkU3RhcnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBDb21wbGV0aW9uQ29uZGl0aW9uIGNv
bmRpdGlvbiB7IENvbXBsZXRpb25Db25kaXRpb246OlN1Y2Nlc3MgfTsKICAgICBpZiAoZXJyb3Iu
aXNDYW5jZWxsYXRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggNjc2YzdjMzAwYzQ0ODYwZmM4MjIzNmJjNjRhZjZmNTA0YjgzNWFlNS4uMDMyM2Y2OWYwZDYx
MjcwYzdjZmE3MmI2M2I1ZmFmNzI5NDg3OTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1
dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCk7CiAKICAgICB2b2lkIHNldFZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwot
ICAgIFdlYkNvcmU6OkludFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52YWx1ZU9yKFdl
YkNvcmU6OkludFNpemUoKSk7IH0KKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMudmFsdWVfb3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eT4mJiwgTmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBuZWdvdGlh
dGVkTGVnYWN5VExTKCk7CkBAIC0xNzMwLDggKzE3MzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2
b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9w
dCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQ
STo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2
aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKICAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2lu
YXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CkBAIC0xODMzLDcgKzE4MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpc0ZvcmNlZEludG9BcHBC
b3VuZE1vZGVUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc1RvcEZyYW1lTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzVG9wRnJhbWVOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsgfQogI2Vsc2UKLSAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAppbmRleCAxMmUyMGJhN2U2YWNl
ZmU2N2YzYzFlZThiNmQ2NDMwYmEyNDJkYTBiLi40YmMyNTFmNWM2NTdiOTBkOWNmNzZmNDZiOTAz
MWQ5NTA2MWY5MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5jcHAKQEAgLTkzLDEyICs5MywxMiBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
d3JpdGVDdXN0b21EYXRhKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOgog
CiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFN0cmluZyYsIGludDY0X3QsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8V2ViQ29y
ZTo6UGFzdGVib2FyZEl0ZW1JbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChJUEM6OkNvbm5lY3Rpb24mLCBzaXplX3QsIGNvbnN0IFN0cmluZyYsIGlu
dDY0X3QsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0
IFN0cmluZyYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmE5MzBmYTRlNzY3M2I1ZDUyZTJm
NGQ1YWMzOWE1Y2M0ZmMzYzMxNi4uYjUyNGMyNGQxODlhNWQwNzNjNmUzMDlmNWExMjliNjYwMTgx
MzM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
MjA1Niw3ICsyMDU2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlQXVkaWJsZU1lZGlh
QXNzZXJ0aW9ucygpCiB7CiAgICAgaWYgKCFtX3dlYlByb2Nlc3NXaXRoQXVkaWJsZU1lZGlhQ291
bnRlci52YWx1ZSgpKSB7CiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9uczogVGhlIG51bWJlciBv
ZiBwcm9jZXNzZXMgcGxheWluZyBhdWRpYmxlIG1lZGlhIG5vdyB6ZXJvLiBSZWxlYXNpbmcgVUkg
cHJvY2VzcyBhc3NlcnRpb24uIik7Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY1YmE1MGI5OWFlYzY0NzcyZGJmYTEwZWE4OGNhNWM3
MzM0MmVjNWYuLmQ2YmIzMzczN2JiZjk5ZGM3NDNhNzc3NzZmMzUxMDhmMzllNmM2ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDYzLDcgKzQ2
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9yZXNwb25zaXZl
bmVzc1RpbWVyLmludmFsaWRhdGUoKTsKICAgICBtX2JhY2tncm91bmRSZXNwb25zaXZlbmVzc1Rp
bWVyLmludmFsaWRhdGUoKTsKICAgICBtX2FjdGl2aXR5Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0g
bnVsbHB0cjsKLSAgICBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAg
IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8m
IGZyYW1lIDogY29weVRvVmVjdG9yKG1fZnJhbWVNYXAudmFsdWVzKCkpKQogICAgICAgICBmcmFt
ZS0+d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpOwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5j
aGVyLCBJUEM6OkNvbm5lY3QKICNlbmRpZgogCiAgICAgaWYgKG1fc2hvdWxkU3RhcnRSZXNwb25z
aXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkKSB7Ci0gICAgICAgIGF1dG8gdXNlTGF6eVN0b3AgPSAq
c3RkOjpleGNoYW5nZShtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hl
ZCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYXV0byB1c2VMYXp5U3RvcCA9ICpzdGQ6OmV4Y2hh
bmdlKG1fc2hvdWxkU3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyV2hlbkxhdW5jaGVkLCBzdGQ6Om51
bGxvcHQpOwogICAgICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIodXNlTGF6eVN0b3ApOwog
ICAgIH0KIH0KQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRh
dGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCkKICAgICAgICAgfTsKICAgICB9IGVsc2UgewogICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gUmVsZWFzaW5nIE1lZGlh
UGxheWJhY2sgYXNzZXJ0aW9uIGZvciBXZWJQcm9jZXNzIHdpdGggUElEICVkIiwgdGhpcywgcHJv
Y2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIG1fYXVkaWJsZU1lZGlhQWN0aXZpdHkgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IDA4Yjg0NjdjYzhhZTI3MmQ5NDFjMTUyNzk0MjMxMDY0ZjZkOWY0NGEuLmUyNTM4NzY2MWI0
NjM2OTBhYjQ4OGFhZThkYTM2NDkwYTljOWZhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNDgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIFdlYlBy
b2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc01hdGNoaW5nUmVn
aXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA/ICptX3JlZ2lzdHJhYmxlRG9tYWlu
ID09IGRvbWFpbiA6IGZhbHNlOyB9Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVn
aXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVl
T3IoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9KTsgfQorICAgIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3Ry
YWJsZURvbWFpbi52YWx1ZV9vcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CiAg
ICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJblByb2Nlc3ND
YWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggY2ZjZDlmM2MwM2M5YzZhMWEzZDM0ZWQxY2M5
Nzc3YTgwNzI3ZTk5MC4uYjM5NzhmMjRlNGFiOTQ2OTgyNDU3NDhkMWE3YmNhZjVjNjFjY2UzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNTIzLDcgKzUyMyw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGNvbnN0IFN0
cmluZyYgaG9zdCwgY29uc3QgU3RyaW5nCiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBt
YXkgaGF2ZSBhcHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0Fw
cEJvdW5kRG9tYWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CiAgICAgICAg
IGlmICghaGFzQXBwQm91bmREb21haW5zKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci0+ZGlkUmVj
ZWl2ZUFwcEJvdW5kRG9tYWluUmVzdWx0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBsaXN0
ZW5lci0+ZGlkUmVjZWl2ZUFwcEJvdW5kRG9tYWluUmVzdWx0KHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVB
cHBCb3VuZERvbWFpblJlc3VsdChzY2hlbWVPckRvbWFpbklzQXBwQm91bmQoaG9zdCwgcHJvdG9j
b2wsIGRvbWFpbnMsIHNjaGVtZXMpKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCBPcHRpb25hbDxIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91
bmREb21haW5zSQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgaWYgKCFo
YXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYXBwQm91bmREb21h
aW5zKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNjNiZWFhMTY5ODUyY2RmNWFhYzc1ZTYw
YTJhNjc3NDEzNjk5ZjRmNC4uYmQ5NmFiMWVjZDQxYTlmNDk4NGYxYmY2YWRkOWY2ZDcxOTBiZWVm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE5NDgsNyArMTk0OCw3IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5hYmxl
ZCkKLSAgICAgICAgYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXpl
ZCgpLnZhbHVlT3IoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyB9KTsKKyAg
ICAgICAgYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpLnZh
bHVlX29yKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7CiAjZW5kaWYK
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgPSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJv
dmlkZXIuY3BwCmluZGV4IDQxMTA1NmQ0M2VhNzY0YzQyYmNlMDQwM2U2YzY5ZGRiOGIyNGIwNGUu
LjY5MmE0NWE0OGZhMDI3ZjkyMjEzMzhkNzRmNTM1MWJlZjRiYWYwMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dlb2NsdWUvR2VvY2x1ZUdlb2xvY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBHZW9jbHVlR2VvbG9jYXRp
b25Qcm92aWRlcjo6bG9jYXRpb25VcGRhdGVkKEdSZWZQdHI8R0RCdXNQcm94eT4mJiBwcm94eSkK
ICAgICBndWludDY0IHRpbWVzdGFtcDsKICAgICBnX3ZhcmlhbnRfZ2V0KHByb3BlcnR5LmdldCgp
LCAiKHR0KSIsICZ0aW1lc3RhbXAsIG51bGxwdHIpOwogICAgIHBvc2l0aW9uLnRpbWVzdGFtcCA9
IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZXN0YW1wKTsKLSAgICBtX3VwZGF0ZU5vdGlmeUZ1bmN0
aW9uKFdURk1vdmUocG9zaXRpb24pLCBXVEY6Om51bGxvcHQpOworICAgIG1fdXBkYXRlTm90aWZ5
RnVuY3Rpb24oV1RGTW92ZShwb3NpdGlvbiksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgR2Vv
Y2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI6OmRpZEZhaWwoQ1N0cmluZyBlcnJvck1lc3NhZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3Rr
LmNwcAppbmRleCA1YjQ2MDk5NzkyYjY5OWUwYWUwNDc5YzI4YWEwM2MzYTc5MzRiMTFlLi40YTNk
YTJkNTZjNTMzNmMzZjQ4MDUxNDkzZmUxM2RiZDEzNGQyMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2VsZWN0SXRlbSh1bnNpZ25lZCBp
dGVtSW5kZXgpCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW0oT3B0aW9u
YWw8dW5zaWduZWQ+IGl0ZW1JbmRleCkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1f
Y2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZhbHVlT3Io
bV9zZWxlY3RlZEl0ZW0udmFsdWVPcigtMSkpKTsKKyAgICAgICAgbV9jbGllbnQtPnZhbHVlQ2hh
bmdlZEZvclBvcHVwTWVudSh0aGlzLCBpdGVtSW5kZXgudmFsdWVfb3IobV9zZWxlY3RlZEl0ZW0u
dmFsdWVfb3IoLTEpKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJveHlHdGs6OmFjdGl2YXRl
SXRlbUF0UGF0aChHdGtUcmVlUGF0aCogcGF0aCkKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIFdl
YlBvcHVwTWVudVByb3h5R3RrOjpoaWRlUG9wdXBNZW51KCkKICAgICB9CiAjZW5kaWYKIAotICAg
IGFjdGl2YXRlSXRlbShXVEY6Om51bGxvcHQpOworICAgIGFjdGl2YXRlSXRlbShzdGQ6Om51bGxv
cHQpOwogCiAgICAgaWYgKG1fY3VycmVudFNlYXJjaFN0cmluZykgewogICAgICAgICBnX3N0cmlu
Z19mcmVlKG1fY3VycmVudFNlYXJjaFN0cmluZywgVFJVRSk7CkBAIC00MzIsMTAgKzQzMiwxMCBA
QCBPcHRpb25hbDx1bnNpZ25lZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJ
bmRleCh1bnNpZ25lZCBrZXl2YWwsIHVpbgogewogICAgIGd1bmljaGFyIGtleWNoYXIgPSBnZGtf
a2V5dmFsX3RvX3VuaWNvZGUoa2V5dmFsKTsKICAgICBpZiAoIWdfdW5pY2hhcl9pc3ByaW50KGtl
eWNoYXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKHRpbWUgPCBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHR5cGVhaGVhZFRpbWVvdXRNcyA9IDEwMDA7CiAg
ICAgaWYgKHRpbWUgLSBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lID4gdHlwZWFoZWFkVGltZW91dE1z
KSB7CkBAIC00NjksNyArNDY5LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlBvcHVwTWVudVBy
b3h5R3RrOjp0eXBlQWhlYWRGaW5kSW5kZXgodW5zaWduZWQga2V5dmFsLCB1aW4KICAgICBHVW5p
cXVlUHRyPGNoYXI+IG5vcm1hbGl6ZWRQcmVmaXgoZ191dGY4X25vcm1hbGl6ZShtX2N1cnJlbnRT
ZWFyY2hTdHJpbmctPnN0ciwgcHJlZml4TGVuZ3RoLCBHX05PUk1BTElaRV9BTEwpKTsKICAgICBH
VW5pcXVlUHRyPGNoYXI+IHByZWZpeChub3JtYWxpemVkUHJlZml4ID8gZ191dGY4X2Nhc2Vmb2xk
KG5vcm1hbGl6ZWRQcmVmaXguZ2V0KCksIC0xKSA6IG51bGxwdHIpOwogICAgIGlmICghcHJlZml4
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgbW9kZWwgPSBndGtfdHJlZV92aWV3X2dldF9tb2RlbChHVEtfVFJFRV9WSUVX
KG1fdHJlZVZpZXcpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbUNvdW50OyBp
KyssIGluZGV4ID0gKGluZGV4ICsgMSkgJSBpdGVtQ291bnQpIHsKQEAgLTQ5Miw3ICs0OTIsNyBA
QCBPcHRpb25hbDx1bnNpZ25lZD4gV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5cGVBaGVhZEZpbmRJ
bmRleCh1bnNpZ25lZCBrZXl2YWwsIHVpbgogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAg
IH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogYm9vbCBXZWJQb3B1cE1lbnVQcm94eUd0azo6dHlwZUFoZWFkRmluZCh1bnNpZ25lZCBr
ZXl2YWwsIHVpbnQzMl90IHRpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCmluZGV4IDBkM2RhOTJjZDQx
NTUwN2E4YjE4ODkyNDczMzYxNjdiOGM4NWQ2YjQuLmY4MmJlMDE5NWNjN2I3YTBiNWZiYzVmNjY3
Y2RhYTdlZDRkZWZiODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9E
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgc3Rh
dGljIGJvb2wgY2FuVXBkYXRlUHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UoY29uc3QgRHJhZ1Nv
dXJjZVN0YXRlJiBzb3VyY2UpCiBPcHRpb25hbDxEcmFnU291cmNlU3RhdGU+IERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6YWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0oVUlEcmFnSXRlbSAqaXRlbSkg
Y29uc3QKIHsKICAgICBpZiAoIVtpdGVtLnByaXZhdGVMb2NhbENvbnRleHQgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaWRlbnRpZmllciA9IFsoTlNOdW1i
ZXIgKilpdGVtLnByaXZhdGVMb2NhbENvbnRleHQgaW50ZWdlclZhbHVlXTsKICAgICBmb3IgKGF1
dG8mIHNvdXJjZSA6IG1fYWN0aXZlRHJhZ1NvdXJjZXMpIHsKICAgICAgICAgaWYgKHNvdXJjZS5p
dGVtSWRlbnRpZmllciA9PSBpZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBib29sIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJj
ZUlzKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKSBjb25zdApAQCAtMzY0LDcgKzM2
NCw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpjbGVhclN0YWdlZERyYWdTb3Vy
Y2UoRGlkQmVjb21lQWN0aXZlIGRpZEJlY29tZUFjCiB7CiAgICAgaWYgKGRpZEJlY29tZUFjdGl2
ZSA9PSBEaWRCZWNvbWVBY3RpdmU6OlllcykKICAgICAgICAgbV9hY3RpdmVEcmFnU291cmNlcy5h
cHBlbmQoc3RhZ2VkRHJhZ1NvdXJjZSgpKTsKLSAgICBtX3N0YWdlZERyYWdTb3VyY2UgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9zdGFnZWREcmFnU291cmNlID0gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6ZHJhZ0FuZERyb3BTZXNzaW9uc0RpZEVuZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmlu
ZGV4IDA0OWFkYzVhOWNhNmJiZWM5MTZhYzIxNWY3OGVlODU5OGZlZmM2NWMuLmQ2Mzg4YzA4NTAx
NzlkOTZhYTMwYzcyNzRlNTkwYzNlY2UxNWE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0yOTAsNyArMjkwLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdm9pZCBjYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVy
KFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKLSAgICBXVEY6Ok9wdGlvbmFsPHVuc2ln
bmVkPiBhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVS
ZWNvZ25pemVyKikgb3ZlcnJpZGU7CisgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZl
VG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciop
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0KSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IDUwYzlhMDFjNDA4ZDQ2YjE3YTQ3NTgwNTE0NGY1YjQ4ZjQ1NzI0ZGEuLmU0MjhkYWMwYTBi
NDJmZmQ2ZDgyYzI5ZDY3YzM3NzFiNWY2NTE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTY3Miw3ICs2NzIsNyBAQCBib29s
IFBhZ2VDbGllbnRJbXBsOjpoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIGNvbnN0IEZyYQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjpzaG93U2hhcmVTaGVl
dChjb25zdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiBzaGFyZURhdGEsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBbbV9jb250
ZW50VmlldyBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGluUmVjdDpXVEY6Om51bGxvcHQgY29t
cGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildOworICAgIFttX2NvbnRl
bnRWaWV3IF9zaG93U2hhcmVTaGVldDpzaGFyZURhdGEgaW5SZWN0OnN0ZDo6bnVsbG9wdCBjb21w
bGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV07CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpjYW5jZWxQ
b2ludGVyc0Zvckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlcwogICAg
IFttX2NvbnRlbnRWaWV3IGNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6Z2VzdHVy
ZVJlY29nbml6ZXJdOwogfQogCi1XVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPiBQYWdlQ2xpZW50SW1w
bDo6YWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVj
b2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBQYWdl
Q2xpZW50SW1wbDo6YWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29nbml6ZXIoVUlH
ZXN0dXJlUmVjb2duaXplciogZ2VzdHVyZVJlY29nbml6ZXIpCiB7CiAgICAgcmV0dXJuIFttX2Nv
bnRlbnRWaWV3IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyOmdlc3R1
cmVSZWNvZ25pemVyXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggN2RiYzAxMzJkODJlZDBjZDY1ODEwZjBm
Y2VmYmYzZmM0ZDI4NWZkYy4uYjA4ZmIzNjk4NTBmYjI4ZWFkZTQ5YWUxNjQwMzRhZDhjZjBlYWQ3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0KQEAgLTEwNDksNyArMTA0OSw3IEBAIC0gKHZvaWQpY2xlYW51cFNoZWV0
CiAgICAgW19pbnRlcmFjdGlvblNoZWV0IHNldFNoZWV0RGVsZWdhdGU6bmlsXTsKICAgICBfaW50
ZXJhY3Rpb25TaGVldCA9IG5pbDsKICAgICBfZWxlbWVudEluZm8gPSBuaWw7Ci0gICAgX3Bvc2l0
aW9uSW5mb3JtYXRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgX3Bvc2l0aW9uSW5mb3JtYXRpb24g
PSBzdGQ6Om51bGxvcHQ7CiAgICAgX25lZWRzTGlua0luZGljYXRvciA9IE5POwogICAgIF9pc1By
ZXNlbnRpbmdERFVzZXJJbnRlcmZhY2UgPSBOTzsKICAgICBfaGFzUGVuZGluZ0FjdGlvblNoZWV0
ID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmlu
ZGV4IDRjZTUxNWIxOGQ5MGMxMjQ1OTQzNjRiMmZjODcwYWFhZWE0ZDRmMTUuLjZiMDQ5YjQwN2Ix
MjFlODkzMDQyZGYzOWExNTFmYzk2MjkxMGVhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xODAsNyArMTgwLDcgQEAgLSAoaW5zdGFuY2V0
eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYpcHIKICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRo
ZSByYW5nZSBvZiBEaXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwg
aXQgaXMgbm90IGVudGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhIGFuZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGlu
IHRoZSBzYW1lIHByb2Nlc3MuCi0gICAgX3BhZ2UtPndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSBfcGFnZS0+d2ViUGFnZUlEKCkudG9V
SW50NjQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBfcGFnZS0+d2luZG93U2NyZWVuRGlkQ2hhbmdl
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIF9wYWdlLT53ZWJQYWdlSUQo
KS50b1VJbnQ2NCgpLCBzdGQ6Om51bGxvcHQpOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIF9wYWdlLT5zZXRGdWxsc2NyZWVuQ2xpZW50KG1ha2VVbmlxdWU8V2ViS2l0OjpGdWxs
c2NyZWVuQ2xpZW50PihzZWxmLndlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBiYjQ1NDNjMzY4
MTE4N2YyNzJiNDA5M2Q4NzY3ZmJhOGM4NGZiM2FmLi43Mjc1OTRiM2YzNDA1NjYwM2Y3MGVhYzhj
YjJkMmU1NWMzMzUxNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC01NTgsNyArNTU4LDcgQEAgdXNpbmcg
SW1hZ2VFeHRyYWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPEltYWdl
RXh0cmFjdGlvblJlcXVlc3QKIC0gKHZvaWQpX3pvb21Ub1JldmVhbEZvY3VzZWRFbGVtZW50Owog
CiAtICh2b2lkKWNhbmNlbFBvaW50ZXJzRm9yR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJl
Y29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcjsKLS0gKFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+
KWFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXI7CistIChzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPilh
Y3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2du
aXplciAqKWdlc3R1cmVSZWNvZ25pemVyOwogCiAjZGVmaW5lIERFQ0xBUkVfV0tDT05URU5UVklF
V19BQ1RJT05fRk9SX1dFQl9WSUVXKF9hY3Rpb24pIFwKICAgICAtICh2b2lkKV9hY3Rpb24gIyMg
Rm9yV2ViVmlldzooaWQpc2VuZGVyOwpAQCAtNjA0LDcgKzYwNCw3IEBAIEZPUl9FQUNIX1BSSVZB
VEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1Jf
V0VCX1ZJRVcpCiAtICh2b2lkKV9zY3JvbGxpbmdOb2RlU2Nyb2xsaW5nRGlkRW5kOwogLSAodm9p
ZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyOihCT09MKWhhc1ZpZGVvIGZyb21SZWN0Oihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JillbGVtZW50UmVjdCByb3V0ZVNoYXJpbmdQb2xpY3k6KFdlYkNv
cmU6OlJvdXRlU2hhcmluZ1BvbGljeSlwb2xpY3kgcm91dGluZ0NvbnRleHRVSUQ6KE5TU3RyaW5n
ICopY29udGV4dFVJRDsKIC0gKHZvaWQpX3Nob3dSdW5PcGVuUGFuZWw6KEFQSTo6T3BlblBhbmVs
UGFyYW1ldGVycyopcGFyYW1ldGVycyBmcmFtZUluZm86KGNvbnN0IFdlYktpdDo6RnJhbWVJbmZv
RGF0YSYpZnJhbWVJbmZvIHJlc3VsdExpc3RlbmVyOihXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkqKWxpc3RlbmVyOwotLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNvbnN0
IFdlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKXNoYXJlRGF0YSBpblJlY3Q6KFdURjo6
T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CistICh2
b2lkKV9zaG93U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCYpc2hhcmVEYXRhIGluUmVjdDooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJl
Y3QgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3Nob3dDb250YWN0UGlja2VyOihjb25zdCBX
ZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0RGF0YSBjb21wbGV0aW9uSGFuZGxl
cjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpD
b250YWN0SW5mbz4+JiYpPiYmKWNvbXBsZXRpb25IYW5kbGVyOwogLSAoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKWZpbGVQaWNrZXJBY2NlcHRlZFR5cGVJZGVudGlmaWVyczsKIC0gKHZvaWQpZGlzbWlz
c0ZpbGVQaWNrZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAxOGExY2RlOWNlODljZDJmNDZjNjI1MDEw
NjgxMTE4NmVkNGI0ZGMwLi5hN2FlMWI0OTc0Y2NiOWU2ZTZmOTA0YmM0MWVhMjY1ZWM1M2UwMzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTk3MSw3ICs5NzEsNyBAQCAtICh2b2lkKWNsZWFuVXBJbnRl
cmFjdGlvbgogICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKICAgICBfZm9ybUlu
cHV0U2Vzc2lvbiA9IG5pbDsKICAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVydmll
d107Ci0gICAgX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gV1RG
OjpudWxsb3B0OworICAgIF9sYXN0T3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCA9IHN0ZDo6bnVsbG9wdDsKICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9ybWF0aW9uID0g
Tk87CiAKICAgICBfZm9jdXNSZXF1aXJlc1N0cm9uZ1Bhc3N3b3JkQXNzaXN0YW5jZSA9IE5POwpA
QCAtMTAwMCw3ICsxMDAwLDcgQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICAgICAg
X2ludGVyYWN0aW9uVmlld3NDb250YWluZXJWaWV3ID0gbmlsOwogICAgIH0KIAotICAgIF9sYXN0
SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RG
OjpudWxsb3B0OworICAgIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVy
QmVmb3JlU2VsZWN0aW9uID0gc3RkOjpudWxsb3B0OwogCiAgICAgW190b3VjaEV2ZW50R2VzdHVy
ZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVj
b2duaXplcjpfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKQEAgLTE1NDQsNyAr
MTU0NCw3IEBAIC0gKHZvaWQpY2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcjooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pCiAgICAgfQogfQogCi0tIChXVEY6Ok9w
dGlvbmFsPHVuc2lnbmVkPilhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXpl
cjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCistIChzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPilhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjoo
VUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgTlNNYXBUYWJs
ZTxOU051bWJlciAqLCBVSVRvdWNoICo+ICphY3RpdmVUb3VjaGVzID0gW190b3VjaEV2ZW50R2Vz
dHVyZVJlY29nbml6ZXIgYWN0aXZlVG91Y2hlc0J5SWRlbnRpZmllcl07CiAgICAgZm9yIChOU051
bWJlciAqdG91Y2hJZGVudGlmaWVyIGluIGFjdGl2ZVRvdWNoZXMpIHsKQEAgLTE1NTIsNyArMTU1
Miw3IEBAIC0gKFdURjo6T3B0aW9uYWw8dW5zaWduZWQ+KWFjdGl2ZVRvdWNoSWRlbnRpZmllckZv
ckdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSCiAgICAgICAgIGlmIChbdG91Y2guZ2VzdHVy
ZVJlY29nbml6ZXJzIGNvbnRhaW5zT2JqZWN0Omdlc3R1cmVSZWNvZ25pemVyXSkKICAgICAgICAg
ICAgIHJldHVybiBbdG91Y2hJZGVudGlmaWVyIHVuc2lnbmVkSW50VmFsdWVdOwogICAgIH0KLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlu
bGluZSBzdGF0aWMgVUlLZXlNb2RpZmllckZsYWdzIGdlc3R1cmVSZWNvZ25pemVyTW9kaWZpZXJG
bGFncyhVSUdlc3R1cmVSZWNvZ25pemVyICpyZWNvZ25pemVyKQpAQCAtMjUyNSw3ICsyNTI1LDcg
QEAgLSAodm9pZClfaW52b2tlQW5kUmVtb3ZlUGVuZGluZ0hhbmRsZXJzVmFsaWRGb3JDdXJyZW50
UG9zaXRpb25JbmZvcm1hdGlvbgogICAgICAgICBpZiAoIVtzZWxmIF9jdXJyZW50UG9zaXRpb25J
bmZvcm1hdGlvbklzVmFsaWRGb3JSZXF1ZXN0OnJlcXVlc3RBbmRIYW5kbGVyLT5maXJzdF0pCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBfcGVuZGluZ1Bvc2l0aW9uSW5mb3JtYXRp
b25IYW5kbGVyc1tpbmRleF0gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9wZW5kaW5nUG9zaXRp
b25JbmZvcm1hdGlvbkhhbmRsZXJzW2luZGV4XSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBp
ZiAocmVxdWVzdEFuZEhhbmRsZXItPnNlY29uZCkKICAgICAgICAgICAgIHJlcXVlc3RBbmRIYW5k
bGVyLT5zZWNvbmQodXBkYXRlZFBvc2l0aW9uSW5mb3JtYXRpb24pOwpAQCAtMjYyNCw3ICsyNjI0
LDcgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplclNob3VsZEJlZ2luOihVSUdlc3R1cmVSZWNv
Z25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKICAgICAgICAgICAgIGlmICghW3NlbGYgZW5zdXJl
UG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIE5POwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlv
bi5ub2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlci52YWx1ZU9yKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuIF9wb3NpdGlvbkluZm9ybWF0aW9uLm5vZGVBdFBvc2l0aW9uSGFzRG91Ymxl
Q2xpY2tIYW5kbGVyLnZhbHVlX29yKGZhbHNlKTsKICAgICB9CiAKICAgICBpZiAoZ2VzdHVyZVJl
Y29nbml6ZXIgPT0gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCkBAIC0zMTM2
LDcgKzMxMzYsNyBAQCAtICh2b2lkKV9pbnZhbGlkYXRlQ3VycmVudFBvc2l0aW9uSW5mb3JtYXRp
b24KIC0gKHZvaWQpX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm8KIHsKICAgICBpZiAoX2xhc3RP
dXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ICYmIGluZm8ucmVxdWVzdC5pc1Zh
bGlkRm9yUmVxdWVzdCgqX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
KSkKLSAgICAgICAgX2xhc3RPdXRzdGFuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0g
V1RGOjpudWxsb3B0OworICAgICAgICBfbGFzdE91dHN0YW5kaW5nUG9zaXRpb25JbmZvcm1hdGlv
blJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfaXNXYWl0aW5nT25Qb3NpdGlvbkluZm9y
bWF0aW9uID0gTk87CiAKQEAgLTQ0MjAsNyArNDQyMCw3IEBAIC0gKHZvaWQpdXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50OihDR1BvaW50KXBvaW50IHdpdGhCb3VuZGFyeTooVUlUZXh0R3Jh
bnVsCiAKIC0gKFVURjMyQ2hhcilfY2hhcmFjdGVyQmVmb3JlQ2FyZXRTZWxlY3Rpb24KIHsKLSAg
ICByZXR1cm4gX2xhc3RJbnNlcnRlZENoYXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVT
ZWxlY3Rpb24udmFsdWVPcihfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNo
YXJhY3RlckJlZm9yZVNlbGVjdGlvbik7CisgICAgcmV0dXJuIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0
ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLnZhbHVlX29yKF9wYWdlLT5lZGl0
b3JTdGF0ZSgpLnBvc3RMYXlvdXREYXRhKCkuY2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uKTsKIH0K
IAogLSAoVVRGMzJDaGFyKV9jaGFyYWN0ZXJJblJlbGF0aW9uVG9DYXJldFNlbGVjdGlvbjooaW50
KWFtb3VudApAQCAtNjQyOSw3ICs2NDI5LDcgQEAgLSAodm9pZClfZWxlbWVudERpZEJsdXIKICAg
ICBpZiAoIV9pc0NoYW5naW5nRm9jdXMpCiAgICAgICAgIF9kaWRBY2Nlc3NvcnlUYWJJbml0aWF0
ZUZvY3VzID0gTk87CiAKLSAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJh
Y3RlckJlZm9yZVNlbGVjdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBfbGFzdEluc2VydGVkQ2hh
cmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsK
IH0KIAogLSAodm9pZClfdXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJCbHVycmluZ0FuZFJlZm9jdXNp
bmdFbGVtZW50CkBAIC03MDI5LDcgKzcwMjksNyBAQCAtICh2b2lkKV9zZWxlY3Rpb25DaGFuZ2Vk
CiAgICAgW193ZWJWaWV3IF9kaWRDaGFuZ2VFZGl0b3JTdGF0ZV07CiAKICAgICBpZiAoIV9wYWdl
LT5lZGl0b3JTdGF0ZSgpLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKSB7Ci0gICAgICAgIF9sYXN0
SW5zZXJ0ZWRDaGFyYWN0ZXJUb092ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uID0gV1RG
OjpudWxsb3B0OworICAgICAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJh
Y3RlckJlZm9yZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFfdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uICYmIF9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmF1dG9jYXBp
dGFsaXplVHlwZSA9PSBXZWJDb3JlOjpBdXRvY2FwaXRhbGl6ZVR5cGU6OldvcmRzKQogICAgICAg
ICAgICAgW1VJS2V5Ym9hcmRJbXBsLnNoYXJlZEluc3RhbmNlIGNsZWFyU2hpZnRTdGF0ZV07CiAg
ICAgfQpAQCAtNzI0MSw3ICs3MjQxLDcgQEAgLSAoQk9PTClmaWxlVXBsb2FkUGFuZWxEZXN0aW5h
dGlvbklzTWFuYWdlZDooV0tGaWxlVXBsb2FkUGFuZWwgKilmaWxlVXBsb2FkUGFuZWwKICAgICAg
ICAgJiYgW3VpRGVsZWdhdGUgX3dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaWxlVXBsb2FkUGFuZWxD
b250ZW50SXNNYW5hZ2VkV2l0aEluaXRpYXRpbmdGcmFtZTp3cmFwcGVyKEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoV1RGTW92ZShfZnJhbWVJbmZvRm9yRmlsZVVwbG9hZFBhbmVsKSwgX3BhZ2UuZ2V0
KCkpKV07CiB9CiAKLS0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFy
ZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25z
dCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KXJlY3QgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXIKIHsKICNpZiAhUExBVEZP
Uk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgaWYgKF9zaGFyZVNoZWV0KQpA
QCAtNzI5MCw3ICs3MjkwLDcgQEAgLSAodm9pZClfc2hvd0NvbnRhY3RQaWNrZXI6KGNvbnN0IFdl
YkNvcmU6OkNvbnRhY3RzUmVxdWVzdERhdGEmKXJlcXVlc3REYXRhIGNvbXAKICAgICBbX2NvbnRh
Y3RQaWNrZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW19jb250YWN0UGlja2VyIHByZXNlbnRX
aXRoUmVxdWVzdERhdGE6cmVxdWVzdERhdGEgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildOwogI2Vsc2UKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApA
QCAtNzQwNSw3ICs3NDA1LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbj4pcG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGkKICAgICByZXF1ZXN0
LmluY2x1ZGVMaW5rSW5kaWNhdG9yID0gYXNzaXN0YW50Lm5lZWRzTGlua0luZGljYXRvcjsKICAg
ICByZXF1ZXN0LmxpbmtJbmRpY2F0b3JTaG91bGRIYXZlTGVnYWN5TWFyZ2lucyA9ICFzZWxmLl9z
aG91bGRVc2VDb250ZXh0TWVudXM7CiAgICAgaWYgKCFbc2VsZiBlbnN1cmVQb3NpdGlvbkluZm9y
bWF0aW9uSXNVcFRvRGF0ZTpyZXF1ZXN0XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBfcG9zaXRpb25JbmZv
cm1hdGlvbjsKIH0KQEAgLTc5OTksNyArNzk5OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURy
CiB7CiAgICAgc3dpdGNoIChkcm9wT3BlcmF0aW9uKSB7CiAgICAgY2FzZSBVSURyb3BPcGVyYXRp
b25DYW5jZWw6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRkZW46CiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpQcml2YXRlOwogICAgIGNhc2UgVUlEcm9w
T3BlcmF0aW9uQ29weToKQEAgLTgwMDgsNyArODAwOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihV
SURyCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRh
Rm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCkBA
IC05Mzk2LDcgKzkzOTYsNyBAQCAtICh2b2lkKV9wb2ludGVySW50ZXJhY3Rpb246KFVJUG9pbnRl
ckludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcmVnaW9uRm9yUmVxdWVzdAogICAgICAgICBjb21w
bGV0aW9uKFtzZWxmIHBvaW50ZXJSZWdpb25Gb3JQb3NpdGlvbkluZm9ybWF0aW9uOmludGVyYWN0
aW9uSW5mb3JtYXRpb24gcG9pbnQ6cmVxdWVzdC5sb2NhdGlvbl0pOwogCiAgICAgICAgIGlmIChf
ZGVmZXJyZWRQb2ludGVySW50ZXJhY3Rpb25SZXF1ZXN0KSB7Ci0gICAgICAgICAgICBhdXRvIGRl
ZmVycmVkUmVxdWVzdCA9IHN0ZDo6ZXhjaGFuZ2UoX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9u
UmVxdWVzdCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gZGVmZXJyZWRSZXF1ZXN0
ID0gc3RkOjpleGNoYW5nZShfZGVmZXJyZWRQb2ludGVySW50ZXJhY3Rpb25SZXF1ZXN0LCBzdGQ6
Om51bGxvcHQpOwogICAgICAgICAgICAgW3NlbGYgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25V
cGRhdGU6XihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0
aW9uSW5mb3JtYXRpb24pIHsKICAgICAgICAgICAgICAgICByZXBseUhhbmRsZXIoaW50ZXJhY3Rp
b25JbmZvcm1hdGlvbiwgZGVmZXJyZWRSZXF1ZXN0LT5zZWNvbmQuZ2V0KCkpOwogICAgICAgICAg
ICAgfSBmb3JSZXF1ZXN0OmRlZmVycmVkUmVxdWVzdC0+Zmlyc3RdOwpAQCAtOTYzMyw4ICs5NjMz
LDggQEAgLSAodm9pZClfZG9BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rpb246KHZvaWQoXikoV2Vi
S2l0OjpQcm9jZWVkV2l0aEltYWdlRXh0cmFjdGkKIAogLSAodm9pZClfaW52b2tlQWxsQWN0aW9u
c1RvUGVyZm9ybUFmdGVyUGVuZGluZ0ltYWdlRXh0cmFjdGlvbjooV2ViS2l0OjpQcm9jZWVkV2l0
aEltYWdlRXh0cmFjdGlvbilwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbgogewotICAgIF9wZW5k
aW5nSW1hZ2VFeHRyYWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
X2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIF9wZW5k
aW5nSW1hZ2VFeHRyYWN0aW9uUmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAg
X2VsZW1lbnRQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGZvciAo
YXV0byBibG9jayA6IHN0ZDo6ZXhjaGFuZ2UoX2FjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJ
bWFnZUV4dHJhY3Rpb24sIHsgfSkpCiAgICAgICAgIGJsb2NrKHByb2NlZWRXaXRoSW1hZ2VFeHRy
YWN0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tl
eWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCmluZGV4IGI3OTFjZmVhYWUwYzNjZmIwNTli
Y2Q0NzI3NzZjOGMzOWY0ZWU3MmUuLjdiNjUwNWZhNzhlNjYzMTQ2NzlkNDhmNjZlYzJkOTBkYWQ3
MTQ0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJk
U2Nyb2xsaW5nQW5pbWF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQpAQCAtMTgyLDE0ICsxODIsMTQgQEAgLSAoT3B0
aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpX
ZWJFdmVudCAqKWV2ZW50CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtXZWJTcGFjZUtleSA9
IDB4MjA7CiAKICAgICBpZiAoIVtfc2Nyb2xsYWJsZSBpc0tleWJvYXJkU2Nyb2xsYWJsZV0pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoZXZlbnQua2V5Ym9hcmRGbGFncyAmIFdlYkV2ZW50S2V5Ym9hcmRJbnB1dE1v
ZGlmaWVyRmxhZ3NDaGFuZ2VkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTlNTdHJpbmcgKmNoYXJhY3RlcnNJZ25vcmlu
Z01vZGlmaWVycyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczsKICAgICBpZiAo
IWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycy5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBlbnVtIGNsYXNz
IEtleSA6IHVpbnQ4X3QgeyBPdGhlciwgTGVmdEFycm93LCBSaWdodEFycm93LCBVcEFycm93LCBE
b3duQXJyb3csIFBhZ2VVcCwgUGFnZURvd24sIFNwYWNlIH07CiAgICAgCkBAIC0yMTYsNyArMjE2
LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5Ym9hcmRTY3JvbGxG
b3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAgICAgfSgpOwogICAgIAogICAgIGlmIChrZXkg
PT0gS2V5OjpPdGhlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBCT09MIHNoaWZ0UHJlc3NlZCA9IGV2ZW50Lm1v
ZGlmaWVyRmxhZ3MgJiBXZWJFdmVudEZsYWdNYXNrU2hpZnRLZXk7CiAgICAgQk9PTCBhbHRQcmVz
c2VkID0gZXZlbnQubW9kaWZpZXJGbGFncyAmIFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXk7CkBA
IC0yMjUsNyArMjI1LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4pa2V5
Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAgICAgLy8gTm8gc2hvcnRj
dXRzIGluY2x1ZGUgbW9yZSB0aGFuIG9uZSBtb2RpZmllcjsgd2Ugc2hvdWxkIG5vdCBlYXQga2V5
IGV2ZW50cwogICAgIC8vIHRoYXQgY29udGFpbiBtb3JlIHRoYW4gb25lIG1vZGlmaWVyIGJlY2F1
c2UgdGhleSBtaWdodCBiZSB1c2VkIGZvciBvdGhlciBzaG9ydGN1dHMuCiAgICAgaWYgKHNoaWZ0
UHJlc3NlZCArIGFsdFByZXNzZWQgKyBjbWRQcmVzc2VkID4gMSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYWxs
b3dlZE1vZGlmaWVycyA9IF4gV2ViRXZlbnRGbGFncyB7CiAgICAgICAgIHN3aXRjaCAoa2V5KSB7
CkBAIC0yNDgsNyArMjQ4LDcgQEAgLSAoT3B0aW9uYWw8V2ViS2l0OjpLZXlib2FyZFNjcm9sbD4p
a2V5Ym9hcmRTY3JvbGxGb3JFdmVudDooOjpXZWJFdmVudCAqKWV2ZW50CiAKICAgICBhdXRvIHJl
bGV2YW50TW9kaWZpZXJGbGFncyA9IFdlYkV2ZW50RmxhZ01hc2tPcHRpb25LZXkgfCBXZWJFdmVu
dEZsYWdNYXNrQ29tbWFuZEtleSB8IFdlYkV2ZW50RmxhZ01hc2tTaGlmdEtleTsKICAgICBpZiAo
ZXZlbnQubW9kaWZpZXJGbGFncyAmIHJlbGV2YW50TW9kaWZpZXJGbGFncyAmIH5hbGxvd2VkTW9k
aWZpZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBpbmNyZW1lbnQgPSBeewogICAgICAgICBzd2l0Y2ggKGtl
eSkgewpAQCAtMzk3LDcgKzM5Nyw3IEBAIC0gKHZvaWQpc3RvcEFuaW1hdGVkU2Nyb2xsCiAgICAg
Ly8gb3V0IHRvIHRoYXQgcG9pbnQuCiAgICAgX2lkZWFsUG9zaXRpb24gPSBbX3Njcm9sbGFibGUg
Ym91bmRlZENvbnRlbnRPZmZzZXQ6ZmFydGhlc3RQb2ludEluRGlyZWN0aW9uKF9jdXJyZW50UG9z
aXRpb24gKyBkaXNwbGFjZW1lbnQsIF9pZGVhbFBvc2l0aW9uRm9yTWluaW11bVRyYXZlbCwgX2N1
cnJlbnRTY3JvbGwtPmRpcmVjdGlvbildOwogCi0gICAgX2N1cnJlbnRTY3JvbGwgPSBXVEY6Om51
bGxvcHQ7CisgICAgX2N1cnJlbnRTY3JvbGwgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKEJPT0wp
c2Nyb2xsVHJpZ2dlcmluZ0tleUlzUHJlc3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCmluZGV4IDY5MGUzY2VlOTBj
YTE1NWY1NjQ3ODFlYjZhMDA5OWVhMjhkOTZmNWIuLmZmNDg0MTE2Zjc2NGI1NGIxMzk5Yzg0NDZh
YjFiOTc4NGU5YWEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogQGludGVy
ZmFjZSBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgOiBVSUhvdmVyR2VzdHVyZVJlY29nbml6ZXIK
IAotLSAoV1RGOjpPcHRpb25hbDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbjsKKy0gKHN0ZDo6
b3B0aW9uYWw8Q0dQb2ludD4pbGFzdE1vdXNlTG9jYXRpb247CiAtIChXZWJLaXQ6Ok5hdGl2ZVdl
Yk1vdXNlRXZlbnQgKilsYXN0TW91c2VFdmVudDsKIAogLSAoVUlUb3VjaCAqKW1vdXNlVG91Y2g7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJl
UmVjb2duaXplci5tbQppbmRleCBiOWY3ZWQ3ZmY5MjdlZjUwNjNkN2Q5MmIxNzhhOGY1NmJlZDMy
ZTVlLi4yODFjMmZjOGEwZDA5ZjYzZDUyN2E2MjA4Yzg4NzlmYTk3MmRkNTdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIubW0KQEAgLTgyLDggKzgyLDggQEAgLSAodm9pZClzZXRFbmFibGVkOihCT09MKWVuYWJsZWQK
ICAgICAgICAgX2N1cnJlbnRUb3VjaCA9IG5pbDsKICAgICAgICAgX3RvdWNoaW5nID0gTk87CiAg
ICAgICAgIF9sYXN0RXZlbnQgPSBuaWw7Ci0gICAgICAgIF9sYXN0TG9jYXRpb24gPSBXVEY6Om51
bGxvcHQ7Ci0gICAgICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgX2xhc3RMb2NhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgX3ByZXNzZWRCdXR0b25N
YXNrID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCAtIChXZWJL
aXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQgKilsYXN0TW91c2VFdmVudAogICAgIHJldHVybiBfbGFz
dEV2ZW50LmdldCgpOwogfQogCi0tIChXVEY6Ok9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxv
Y2F0aW9uCistIChzdGQ6Om9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9uCiB7CiAg
ICAgcmV0dXJuIF9sYXN0TG9jYXRpb247CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgLSAodm9pZCl0
b3VjaGVzRW5kZWQ6KE5TU2V0PFVJVG91Y2ggKj4gKil0b3VjaGVzIHdpdGhFdmVudDooVUlFdmVu
dCAqKWV2ZW50CiAgICAgX2xhc3RMb2NhdGlvbiA9IFtzZWxmIGxvY2F0aW9uSW5WaWV3OnNlbGYu
dmlld107CiAKICAgICBfdG91Y2hpbmcgPSBOTzsKLSAgICBfcHJlc3NlZEJ1dHRvbk1hc2sgPSBX
VEY6Om51bGxvcHQ7CisgICAgX3ByZXNzZWRCdXR0b25NYXNrID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgc2VsZi5zdGF0ZSA9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ7CiB9CkBAIC0x
NzQsNyArMTc0LDcgQEAgLSAodm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldDxVSVRvdWNoICo+
ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAogICAgIF9sYXN0TG9jYXRpb24g
PSBbc2VsZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddOwogCiAgICAgX3RvdWNoaW5nID0gTk87
Ci0gICAgX3ByZXNzZWRCdXR0b25NYXNrID0gV1RGOjpudWxsb3B0OworICAgIF9wcmVzc2VkQnV0
dG9uTWFzayA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNv
Z25pemVyU3RhdGVDaGFuZ2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0KaW5kZXggMDIyY2RjN2ZmNDM4ODZlZTVlM2M4ZWI2YmNmNDRjOTI3YzQ4MDc1Ni4uZDAx
MDJiYzhlNjQ4MWYyNDQ1NjUyYWI2Mjg4NTcxNDQwMTE5N2E4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAodm9pZClfcmVz
ZXRGaW5kCiAgICAgX2ZpbmRTdHJpbmcgPSBuaWw7CiAgICAgX2ZpbmRTdHJpbmdDb3VudCA9IDA7
CiAgICAgX2ZpbmRTdHJpbmdNYXhDb3VudCA9IDA7Ci0gICAgX2ZvY3VzZWRTZWFyY2hSZXN1bHRJ
bmRleCA9IFdURjo6bnVsbG9wdDsKKyAgICBfZm9jdXNlZFNlYXJjaFJlc3VsdEluZGV4ID0gc3Rk
OjpudWxsb3B0OwogICAgIF9mb2N1c2VkU2VhcmNoUmVzdWx0UGVuZGluZ09mZnNldCA9IDA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmlu
ZGV4IDMyYjBmMjhhNTZmNmU3NWVlYmY1OGU3NTU5NTYzNmNkYzYxODE5YWMuLjgxMGJlMTdjMWM5
NmQ2OWMyZTQ5ZTllMzdhOGFmOWU5NmZlNjRjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVJbnB1dENvbnRleHRBZnRlckJsdXJyaW5nQW5kUmVmb2N1c2luZ0Vs
ZW1lbnQoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3Vz
ZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uLCBib29sIHVzZXJJc0ludGVyYWN0aW5n
LCBib29sIGJsdXJQcmV2aW91c05vZGUsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFnPiBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewotICAgIG1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bl
bmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBBUEk6Ok9iamVjdCog
dXNlckRhdGFPYmplY3QgPSBwcm9jZXNzKCkudHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCk7CiAgICAgcGFnZUNsaWVudCgpLmVsZW1lbnREaWRGb2N1cyhp
bmZvcm1hdGlvbiwgdXNlcklzSW50ZXJhY3RpbmcsIGJsdXJQcmV2aW91c05vZGUsIGFjdGl2aXR5
U3RhdGVDaGFuZ2VzLCB1c2VyRGF0YU9iamVjdCk7CkBAIC04OTUsNyArODk1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmVsZW1lbnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0
aW9uJiBpbmZvcm1hdGlvbiwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1lbnREaWRCbHVyKCkK
IHsKLSAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9w
ZW5kaW5nSW5wdXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0OwogICAgIHBhZ2VDbGllbnQoKS5l
bGVtZW50RGlkQmx1cigpOwogfQogCkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlbGVhc2VBbGxUb3VjaFBvaW50cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIHBh
Z2VDbGllbnQoKS5mb2N1c2VkRWxlbWVudERpZENoYW5nZUlucHV0TW9kZSgqbV9wZW5kaW5nSW5w
dXRNb2RlQ2hhbmdlKTsKLSAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wZW5kaW5nSW5wdXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0OwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YXV0b2ZpbGxMb2dpbkNyZWRlbnRpYWxzKGNvbnN0IFN0cmluZyYg
dXNlcm5hbWUsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZl
Y3RvcjxJbnRTaXplPiYgaW1hZ2VTaQogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9s
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZvY3VzZWRGb3Jt
Q29udHJvbFZpZXcubW0KaW5kZXggZTY2ZGY4NGEyMmI4MzgxM2JlZWU0NTEwZDViOWVlZTc4ODAy
MjVmNi4uNDdmMDQ1OTMzZmQxNjc1YmNhNWIyOTBmYmM5YTAyM2ZjODM4ZTI2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9s
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3Lm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBkZWxlZ2F0ZTooaWQgPFdLRm9jdXNlZEZvcm1Db250
cm9sVmkKICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9zdWJtaXRCdXR0b25CYWNrZ3JvdW5kVmlldy5n
ZXQoKV07CiAKICAgICBfaGFzUGVuZGluZ0ZvY3VzUmVxdWVzdCA9IE5POwotICAgIF9pbml0aWFs
U2Nyb2xsVmlld0NvbnRlbnRPZmZzZXQgPSBXVEY6Om51bGxvcHQ7CisgICAgX2luaXRpYWxTY3Jv
bGxWaWV3Q29udGVudE9mZnNldCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzZWxmOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXgg
MzA0YmYwNDkyYWRjMTdmM2YwNDY4ZDJkNmZiYzdmZDhjNmU3NjFhNy4uMjU4NTY2YWZlZmI2Y2Ew
OWQwZjc2YjA1ZDk2OTlkMTc5MjlkNzNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC04MTgsNyArODE4LDcgQEAgLSAodm9pZClfY29tcGxl
dGVkRXhpdEZ1bGxTY3JlZW4KIAogICAgIF92aWV3U3RhdGUuYXBwbHlUbyh3ZWJWaWV3LmdldCgp
KTsKICAgICBpZiAoYXV0byBwYWdlID0gW3dlYlZpZXcgX3BhZ2VdKQotICAgICAgICBwYWdlLT5z
ZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhZ2Ut
PnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoc3RkOjpudWxsb3B0KTsKIAogICAgIFt3ZWJW
aWV3IHNldE5lZWRzTGF5b3V0XTsKICAgICBbd2ViVmlldyBsYXlvdXRJZk5lZWRlZF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAppbmRleCA1YjAwZWM1ODJk
MTQyZWJlMzMyMTkxYTFmYmY2MWFiODhlODlhZWEwLi4wZTdkNDk0MTBjZDY3MTlkNDJmMDExNzgy
Y2FkYWU4ZTBlNGYxNjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
RGlzcGxheUxpbmsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5
TGluay5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIERpc3BsYXlMaW5rOjpub3RpZnlPYnNl
cnZlcnNEaXNwbGF5V2FzUmVmcmVzaGVkKCkKICAgICBhdXRvIG1heEZyYW1lc1BlclNlY29uZCA9
IFtdKGNvbnN0IFZlY3RvcjxPYnNlcnZlckluZm8+JiBvYnNlcnZlcnMpIHsKICAgICAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVzUGVyU2Vjb25kPiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNv
bmQ7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCi0gICAg
ICAgICAgICBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heChvYnNlcnZlcnNN
YXhGcmFtZXNQZXJTZWNvbmQudmFsdWVPcigwKSwgb2JzZXJ2ZXIucHJlZmVycmVkRnJhbWVzUGVy
U2Vjb25kKTsKKyAgICAgICAgICAgIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6
bWF4KG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZC52YWx1ZV9vcigwKSwgb2JzZXJ2ZXIucHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKICAgICAgICAgcmV0dXJuIG9ic2VydmVyc01heEZyYW1l
c1BlclNlY29uZDsKICAgICB9OwogCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBEaXNwbGF5TGlu
azo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpCiAgICAgICAgIGFueUNvbm5l
Y3Rpb25IYWRPYnNlcnZlcnMgPSB0cnVlOwogCiAgICAgICAgIGF1dG8gb2JzZXJ2ZXJzTWF4RnJh
bWVzUGVyU2Vjb25kID0gbWF4RnJhbWVzUGVyU2Vjb25kKGNvbm5lY3Rpb25JbmZvLm9ic2VydmVy
cyk7Ci0gICAgICAgIGF1dG8gbWFpblRocmVhZFdhbnRzVXBkYXRlID0gbV9jdXJyZW50VXBkYXRl
LnJlbGV2YW50Rm9yVXBkYXRlRnJlcXVlbmN5KG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZC52
YWx1ZU9yKFdlYkNvcmU6OkZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkpOworICAgICAgICBhdXRv
IG1haW5UaHJlYWRXYW50c1VwZGF0ZSA9IG1fY3VycmVudFVwZGF0ZS5yZWxldmFudEZvclVwZGF0
ZUZyZXF1ZW5jeShvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQudmFsdWVfb3IoV2ViQ29yZTo6
RnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSk7CiAKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERp
c3BsYXlMaW5rLCBzdHJlYW0gPDwgIltVSSBdIERpc3BsYXlMaW5rICIgPDwgdGhpcyA8PCAiIGZv
ciBkaXNwbGF5ICIgPDwgbV9kaXNwbGF5SUQgPDwgIiAoZGlzcGxheSBmcHMgIiA8PCBtX2Rpc3Bs
YXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kIDw8ICIpIHVwZGF0ZSAiIDw8IG1fY3VycmVudFVwZGF0
ZSA8PCAiICIgPDwgY29ubmVjdGlvbkluZm8ub2JzZXJ2ZXJzLnNpemUoKQogICAgICAgICAgICAg
PDwgIiBvYnNlcnZlcnMsIG9uIGJhY2tncm91bmQgcXVldWUgIiA8PCBzaG91bGRTZW5kSVBDT25C
YWNrZ3JvdW5kUXVldWUgPDwgIiBtYXhGcmFtZXNQZXJTZWNvbmQgIiA8PCBvYnNlcnZlcnNNYXhG
cmFtZXNQZXJTZWNvbmQgPDwgIiBmdWxsIHNwZWVkIGNsaWVudHMgIiA8PCBjb25uZWN0aW9uSW5m
by5mdWxsU3BlZWRVcGRhdGVzQ2xpZW50Q291bnQgPDwgIiByZWxldmFudCAiIDw8IG1haW5UaHJl
YWRXYW50c1VwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
TGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4IGEzOTQwNjQ5ZmRiZjJkZWQ0ODRh
NGUyNjEwMmI5MjFjYzI4MDc4ZjcuLmVhZGFkNGU4ZmEzMzY2NTg0N2UxNzJmZjVlOTJjMGU0NmI5
YTE1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNz
aW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0yODksOCArMjg5LDggQEAgc3RhdGljIHZvaWQg
ZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURhdGFFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBIVFRQQm8KICAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKIAogICAgICAgICBlbmNvZGVy
IDw8IGVsZW1lbnQuZmlsZVN0YXJ0OwotICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxl
bmd0aC52YWx1ZU9yKC0xKTsKLSAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmV4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWUudmFsdWVPcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVw
b2NoKCkudmFsdWUoKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFs
dWVfb3IoLTEpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCku
dmFsdWUoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpU
eXBlOjpCbG9iOgpAQCAtNzE4LDcgKzcxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgKnRoaXMgPj4g
dW5kZXJseWluZ0VudW1WYWx1ZTsKIAogICAgICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNWYWxp
ZEVudW0oc3RhdGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSkpKQotICAgICAgICAgICAg
dmFsdWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICB2YWx1ZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDxUPih1bmRlcmx5
aW5nRW51bVZhbHVlKTsKIApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZVYxU2Vzc2lvbkhpc3RvcnkoQ0ZEaWN0aW9uYXJ5UmVmIHNlc3Np
b25IaXMKICAgICBhdXRvIGN1cnJlbnRJbmRleE51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51
bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc2Vzc2lvbkhpc3RvcnlEaWN0aW9uYXJ5LCBz
ZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSkpOwogICAgIGlmICghY3VycmVudEluZGV4TnVt
YmVyKSB7CiAgICAgICAgIC8vIE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25hcnkg
cmVwcmVzZW50cyBhbiBlbXB0eSBzZXNzaW9uLgotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0
ZS5jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0
YXRlLmN1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYmFja0ZvcndhcmRMaXN0
U3RhdGUuaXRlbXMgPSB7IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGEzMzc3M2Fi
OWMwYTQxYTJmOWVjMzk4NmZkYzQxMGIxYjRiYmY4NzMuLjIxN2U5ZGNmODA5NDJmNzJmOWM2Mjk2
NGI1MTJmNmQzOWJjNGU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpv
cGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRpdmVBcHBsaWNhdGlvbihGcmFtZUluZm9E
YXRhCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6
UERGQ29udGV4dE1lbnUmIGNvbnRleHRNZW51LCBQREZQbHVnaW5JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8aW50MzJfdD4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFjb250ZXh0TWVudS5pdGVtcy5zaXplKCkpCi0gICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAKICAgICBSZXRhaW5QdHI8
V0tQREZNZW51VGFyZ2V0PiBtZW51VGFyZ2V0ID0gYWRvcHROUyhbW1dLUERGTWVudVRhcmdldCBh
bGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxOU01lbnU+IG5zTWVudSA9IGFkb3B0TlMoW1tO
U01lbnUgYWxsb2NdIGluaXRdKTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2hvd1BERkNvbnRleHRNZW51KGNvbnN0IFdlYktpdDo6UERGQ29udGV4dE1lbnUmIGNvbnRl
eHRNZW51LAogI2VuZGlmCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih0YWcpOwog
ICAgIH0KLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNTFlNzNhNmYyZjk3MmM3NjYzZTI4NjAwMmQ0OWE0N2QzOGMxZGYx
NS4uNjRjYmFmYzkzMTliY2ZhNDgxNWRjOTVmMWU1NDc4NDM2ZmE0YTI0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJBdXRoblByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9XZWJBdXRobkNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBXZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGMKIAogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Om1ha2VDcmVk
ZW50aWFsKFZlY3Rvcjx1aW50OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMmJiBvcHRpb25zLCBib29sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgUmVxdWVzdENv
bXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikKIHsKLSAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92
ZShoYXNoKSwgV1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgeyB9LCBwcm9jZXNz
aW5nVXNlckdlc3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwor
ICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9wdGlvbnMpLCBudWxs
cHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwg
c3RkOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3RyaW5nKCksIG51bGxw
dHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpnZXRBc3NlcnRpb24oVmVjdG9yPHVpbnQ4X3Q+JiYgaGFzaCwgUHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxl
UmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6Om51bGxv
cHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZN
b3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgV1RGTW92
ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFp
bGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdlc3R1cmUs
IFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFuZGxlUmVxdWVzdChXZWJBdXRoZW50aWNhdGlv
blJlcXVlc3REYXRhJiYgZGF0YSwgUmVxdWVzdENvbXBsZXRpb25IYW5kbGVyJiYgaGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggMjIwM2Q2OGI3ODFjMTNlMzFkOWFjNjgwYjNhZDhk
NjgwZjA1NjcyNS4uYTRiM2ZjNTRiZTBjZjE1ZmU1YzI5ZjRiMTA0NGJkZTYxMTZlYTI2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBX
ZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmlu
ZyYgcGEKIAogICAgIGF1dG8gcmVzdWx0ID0gbV9hdmFpbGFibGVQYXltZW50TmV0d29ya3MtPmZp
bmQocGF5bWVudE5ldHdvcmspOwogICAgIGlmIChyZXN1bHQgPT0gbV9hdmFpbGFibGVQYXltZW50
TmV0d29ya3MtPmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAqcmVzdWx0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIyZWZjOGZmOGQzYjIzZjE5MTY0MWM2MWE4ZjIx
M2YxMGIxM2IyN2YuLjEzZmM1NjU0YmEzOTZjOTEyZDU5M2M1Njk3ZDkyMDc1MWQ0ODIzZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmkKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
ZnJhbWVJRC50b1VJbnQ2NCgpKSwKICAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwg
Y2FsbGJhY2tJRCksCiAgICAgICAgIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKGNv
bnRleHQsIG51bGxwdHIsIGV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrKSwKLSAgICAgICAgSlNW
YWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY2FsbGJhY2tUaW1lb3V0LnZhbHVlT3IoLTEpKQorICAg
ICAgICBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCBjYWxsYmFja1RpbWVvdXQudmFsdWVfb3Io
LTEpKQogICAgIH07CiAKICAgICB7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBh
Z2VJZGVudGkKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90
Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdp
bmRvd05vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDI1LDI5ICs0MjUsMjkgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJ
ZGVudGkKIAogICAgIGF1dG8qIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlm
ICghY29yZUZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRF
cnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1l
Tm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUo
KS5zY29wZWRDaGlsZChvcmRpbmFsKTsKICAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFtZSogY2hp
bGRGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlQ2hpbGRGcmFtZSk7CiAgICAg
aWYgKCFjaGlsZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZy
YW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZy
YW1lSUQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBjaGlsZEZyYW1l
LT5mcmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZv
dW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUs
IFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5k
RXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00
NjMsNDEgKzQ2Myw0MSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZQogCiAgICAgYXV0byogZnJh
bWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQp
IDogJnBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZE5vZGVIYW5k
bGUobm9kZUhhbmRsZSkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllcnJy
b3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1D
b25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2Fn
ZTo6SW52YWxpZE5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW52
YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVs
ZW1lbnQgPSBlbGVtZW50Rm9yTm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOwogICAgIGlm
ICghY29yZUVsZW1lbnQpIHsKICAgICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVO
b3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlw
ZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5k
RXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKCFpczxXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZT4oY29yZUVsZW1lbnQpKSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVs
bG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUs
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpG
cmFtZSogY29yZUZyYW1lRnJvbUVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MRnJhbWVF
bGVtZW50QmFzZT4oKmNvcmVFbGVtZW50KS5jb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWNvcmVG
cmFtZUZyb21FbGVtZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZy
YW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBXZWJGcmFtZSogZnJhbWVGcm9tRWxlbWVudCA9IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpjb3JlRnJhbWVGcm9tRWxlbWVudCk7CiAgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJv
clR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5m
cmFtZUlEKCkpOwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBPcHRpb25hbDxXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTUwNSw3ICs1MDUs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0
aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZQogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAg
ICAgIFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6
Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTMsMjkgKzUxMywyOSBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZQogCiAgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5X
ZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZS0+
Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlQ2hpbGRGcmFt
ZSA9IGNvcmVGcmFtZS0+dHJlZSgpLnNjb3BlZENoaWxkKG5hbWUpOwogICAgIGlmICghY29yZUNo
aWxkRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9y
VHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIFdlYkZyYW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVD
aGlsZEZyYW1lKTsKICAgICBpZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNTQzLDcgKzU0Myw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJCiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3Ry
aW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU1MSwxNyArNTUxLDE3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJCiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgV2ViRnJhbWUqIHBhcmVudEZyYW1lID0gZnJhbWUtPnBhcmVudEZyYW1l
KCk7CiAgICAgaWYgKCFwYXJlbnRGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBwYXJl
bnRGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQs
IHBhcmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCiBzdGF0aWMgV2ViQ29yZTo6RWxlbWVudCog
Y29udGFpbmVyRWxlbWVudEZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCkKQEAg
LTYxOCwyNyArNjE4LDI3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnCiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKICAgICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91
bmQpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwg
eyB9LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2lu
ZG93Tm90Rm91bmRFcnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFmcmFtZS0+Y29yZUZy
YW1lKCktPnZpZXcoKSkgewogICAgICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1l
Tm90Rm91bmQpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JU
eXBlLCB7IH0sIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkTm9kZUhhbmRsZShub2RlSGFu
ZGxlKSkgewogICAgICAgICBTdHJpbmcgaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFs
dWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpJbnZhbGlk
Tm9kZUlkZW50aWZpZXIpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9kZUlk
ZW50aWZpZXJycm9yVHlwZSwgeyB9LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUsIHsgfSwgc3RkOjpu
dWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpF
bGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFuZGxlKCpmcmFtZSwgbm9kZUhh
bmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkgewogICAgICAgICBTdHJpbmcgbm9kZU5vdEZv
dW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6Omdl
dEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZTo6Tm9kZU5vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5v
dEZvdW5kRXJyb3JUeXBlLCB7IH0sIFdURjo6bnVsbG9wdCwgZmFsc2UpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihub2RlTm90Rm91bmRFcnJvclR5cGUsIHsgfSwgc3RkOjpudWxsb3B0LCBm
YWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZwogCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgZW50aXJlbHkg
b3V0c2lkZSB0aGUgdmlld3BvcnQsIHN0aWxsIGNhbGN1bGF0ZSBpdCdzIGJvdW5kcy4KICAgICBp
ZiAodmlzaWJsZVBvcnRpb25PZkVsZW1lbnRSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdElu
Vmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RkOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2lu
dCwgaXNPYnNjdXJlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyNiw3ICs3MjYs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZwogICAgIH0KICAgICB9CiAKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmll
d0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09i
c2N1cmVkKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRp
b25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTc3Niw3ICs3NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9w
dGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZQogICAgICAgICAvLyBvcHRp
b25TZWxlY3RlZEJ5VXNlcigpIHdpbGwgZmlyZSBpbnB1dCBhbmQgY2hhbmdlIGV2ZW50cyBpZiBu
ZWVkZWQsIGJ1dCBhbGwgb3RoZXIgZXZlbnRzIHNob3VsZCBiZSBmaXJlZCBtYW51YWxseSBoZXJl
LgogICAgICAgICBzZWxlY3RFbGVtZW50LT5vcHRpb25TZWxlY3RlZEJ5VXNlcihvcHRpb25FbGVt
ZW50LmluZGV4KCksIHRydWUsIHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkpOwogICAgIH0KLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2V0
RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBWZWN0b3I8U3RyaW5nPiYmIGZpbGVuYW1lcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTgxNCw3ICs4MTQsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBs
b2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaQogICAgICAgICBmaWxlT2JqZWN0cy5hcHBlbmQoV2Vi
Q29yZTo6RmlsZTo6Y3JlYXRlKCZpbnB1dEVsZW1lbnQuZG9jdW1lbnQoKSwgcGF0aCkpOwogICAg
IGlucHV0RWxlbWVudC5zZXRGaWxlcyhXZWJDb3JlOjpGaWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUo
ZmlsZU9iamVjdHMpKSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHN0YXRpYyBXZWJDb3Jl
OjpJbnRSZWN0IHNuYXBzaG90RWxlbWVudFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2Us
IFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2xpcFRvVmlld3BvcnQpCkBAIC05MDks
NyArOTA5LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzbmFwc2hvdFJlY3RG
b3JTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6SW50UmVj
dChmcmFtZS0+Y29yZUZyYW1lKCktPm1haW5GcmFtZSgpLnZpZXcoKS0+ZG9jdW1lbnRUb0NsaWVu
dFJlY3Qoc25hcHNob3RSZWN0KSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCwgV2ViQ29yZTo6SW50UmVjdChmcmFtZS0+Y29yZUZyYW1lKCktPm1haW5GcmFtZSgpLnZpZXco
KS0+ZG9jdW1lbnRUb0NsaWVudFJlY3Qoc25hcHNob3RSZWN0KSkpOwogfQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzQsNyArOTM0LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUkKICAgICBpZiAoIWRvY3VtZW50LmNvb2tpZVVSTCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZ2V0UmF3Q29va2ll
cyhkb2N1bWVudCwgZG9jdW1lbnQuY29va2llVVJMKCksIGZvdW5kQ29va2llcyk7CiAKLSAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3Ry
aW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBPcHQKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFtZS0+Y29yZUZyYW1lKCktPmRvY3Vt
ZW50KCk7CiAgICAgcGFnZS0+Y29yZVBhZ2UoKS0+Y29va2llSmFyKCkuZGVsZXRlQ29va2llKGRv
Y3VtZW50LCBkb2N1bWVudC5jb29raWVVUkwoKSwgY29va2llTmFtZSk7CiAKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAppbmRleCAwMzRhZmE0MGFmZjY5YWM4MzI0Mzg0YTdkNmQzNmIxMDU3M2Y2MWIxLi4xMjNk
NTM5YzgyYTQ2NTIzZTZlYTg4YzA5NGNjZDljMWI3ZmI5Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaApAQCAtMTY0LDcgKzE2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJu
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIo
bWltZVR5cGUsIHF1YWxpdHksIHByZXNlcnZlUmVzb2x1dGlvbiwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0
KSBjb25zdCBvdmVycmlkZQorICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gc3RkOjpudWxsb3B0KSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTk4LDE3ICsxOTgs
MTcgQEAgcHJvdGVjdGVkOgogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQ
aXhlbEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25G
b3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBXZWJDb3JlOjpQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNSZWN0LnNpemUoKSk7CiAg
ICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2l6ZV90IGRhdGFT
aXplID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5ieXRlTGVuZ3RoKCk7CiAKICAgICAgICAgSVBDOjpU
aW1lb3V0IHRpbWVvdXQgPSA1X3M7CiAgICAgICAgIFNoYXJlZE1lbW9yeSogc2hhcmVkTWVtb3J5
ID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnNoYXJlZE1lbW9yeUZvckdldFBpeGVs
QnVmZmVyKGRhdGFTaXplLCB0aW1lb3V0KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBhdXRvJiBtdXRhYmxlVGhpcyA9IGNvbnN0X2Nhc3Q8UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eSY+KCp0aGlzKTsKICAgICAgICAgbXV0YWJsZVRoaXMubV9kcmF3aW5n
Q29udGV4dC5yZWNvcmRlcigpLmdldFBpeGVsQnVmZmVyKGRlc3RpbmF0aW9uRm9ybWF0LCBzcmNS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCA3OTRj
OGJiZjJiODI1ODRlZjZjOWQ2ZGNkNWIyM2I4MDljMTFlM2Y4Li43MTk4YWRlMDE2ODZjZTIyYTIy
NzZlMjJiZGQyODkzMWQxMjUxMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCkBAIC05MCwxMyArOTAsMTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmdwdVByb2Nlc3NDb25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3QKIAog
ICAgIG1faWRlbnRpZmllcnNPZlJldXNhYmxlSGFuZGxlcy5jbGVhcigpOwogICAgIG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzLmNsZWFyKCk7Ci0gICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcklkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50RGVzdGluYXRpb25J
bWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFdha2V1
cE1lc3NhZ2VBcmd1bWVudHMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9yZW1haW5pbmdJdGVtc1Rv
QXBwZW5kQmVmb3JlU2VuZGluZ1dha2V1cCA9IDA7CiAKICAgICBpZiAobV9kZXN0cm95R2V0UGl4
ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Rlc3Ryb3lH
ZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeVRpbWVyLnN0b3AoKTsKLSAgICBtX2dldFBpeGVsQnVm
ZmVyU2VtYXBob3JlID0gV1RGOjpudWxsb3B0OworICAgIG1fZ2V0UGl4ZWxCdWZmZXJTZW1hcGhv
cmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeUxlbmd0
aCA9IDA7CiAgICAgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSA9IG51bGxwdHI7CiB9CkBA
IC0yNDksNyArMjQ5LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRlbGV0
ZUFsbEZvbnRzKCkKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKICAgICBpZiAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID09IG1f
Y3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyKQotICAgICAgICBtX2N1cnJl
bnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgcmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kV2FrZXVwTWVzc2FnZShjb25zdCBHUFVQcm9jZXNz
V2FrZXVwTWVzc2FnCiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpzZW5kRGVm
ZXJyZWRXYWtldXBNZXNzYWdlSWZOZWVkZWQoKQogewotICAgIGF1dG8gYXJndW1lbnRzID0gc3Rk
OjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0
KTsKKyAgICBhdXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1l
c3NhZ2VBcmd1bWVudHMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFhcmd1bWVudHMpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMzI2LDExICszMjYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmRpZEFwcGVuZERhdGEoY29uc3QgRGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW4KICAgICAgICAgaWYgKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzKSB7CiAgICAg
ICAgICAgICBpZiAoc2hhcmVkSGFuZGxlLT50cnlUb1Jlc3VtZSh7IG1fZGVmZXJyZWRXYWtldXBN
ZXNzYWdlQXJndW1lbnRzLT5vZmZzZXQsIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRz
LT5kZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllci50b1VJbnQ2NCgpIH0pKSB7CiAgICAg
ICAgICAgICAgICAgbV9wYXJhbWV0ZXJzLnJlc3VtZURpc3BsYXlMaXN0U2VtYXBob3JlLnNpZ25h
bCgpOwotICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIG1fcmVtYWluaW5nSXRlbXNU
b0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwogICAgICAgICAgICAgfSBlbHNlIGlmICgh
LS1tX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwKSB7CiAgICAgICAg
ICAgICAgICAgbV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMtPnJlYXNvbiA9IEdQVVBy
b2Nlc3NXYWtldXBSZWFzb246Okl0ZW1Db3VudEh5c3RlcmVzaXNFeGNlZWRlZDsKLSAgICAgICAg
ICAgICAgICBzZW5kV2FrZXVwTWVzc2FnZSgqc3RkOjpleGNoYW5nZShtX2RlZmVycmVkV2FrZXVw
TWVzc2FnZUFyZ3VtZW50cywgV1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICAgICAgc2VuZFdh
a2V1cE1lc3NhZ2UoKnN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVu
dHMsIHN0ZDo6bnVsbG9wdCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFPdmVycmlkZXNGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oCmluZGV4IGUzMWY5ZGE3Yzk3Mzk2M2MzNGIy
ZWEzZTI5ZTFhY2Q2YzZkZmUxOTAuLjFkYzU5MGE1NTc4ZTQ3Y2JlYjgzMTUzYWJkNzM0Y2RhYWI5
ZDcwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFPdmVycmlkZXNGb3JUZXN0aW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaApAQCAtNTMsMjIgKzUzLDIyIEBAIHN0
cnVjdCBNZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcgewogICAgICAgICBPcHRpb25hbDxPcHRpb25h
bDxib29sPj4gc3lzdGVtSGFzQUM7CiAgICAgICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQUM7CiAg
ICAgICAgIGlmICghc3lzdGVtSGFzQUMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxP
cHRpb25hbDxib29sPj4gc3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgZGVjb2RlciA+PiBzeXN0
ZW1IYXNCYXR0ZXJ5OwogICAgICAgICBpZiAoIXN5c3RlbUhhc0JhdHRlcnkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlz
YWJsZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQ7CiAg
ICAgICAgIGlmICghdnA5SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpTY3JlZW5EYXRhT3ZlcnJpZGVzPj4gdnA5
U2NyZWVuU2l6ZUFuZFNjYWxlOwogICAgICAgICBkZWNvZGVyID4+IHZwOVNjcmVlblNpemVBbmRT
Y2FsZTsKICAgICAgICAgaWYgKCF2cDlTY3JlZW5TaXplQW5kU2NhbGUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgICpzeXN0ZW1IYXNBQywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAppbmRleCBiOTVlNTkxYjE4MmRlMzQ2M2VlN2UxOGYwNTVhMTNmYWM5
NDBlOWI0Li5hZmNkNGI1YjMxY2QwNWY1MDRmNWZiOTY1MDQyOGQ3NTI3MjNjNzFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC05ODUsNyArOTg1LDcgQEAgT3B0aW9uYWw8Ym9v
bD4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJgogCiAgICAgT3B0aW9uYWw8Ym9vbD4gd291bGRUYWludDsKICAgICBpZiAoIWNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6V291
bGRUYWludE9yaWdpbihvcmlnaW4uZGF0YSgpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OldvdWxkVGFpbnRPcmlnaW46OlJlcGx5KHdvdWxkVGFpbnQpLCBtX2lkKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIG1fd291bGRUYWludE9yaWdpbkNhY2hlLmFkZChvcmlnaW4uZGF0YSgpLCB3b3VsZFRhaW50
KTsKIApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnNldENETShMZWdhY3lDRE0qIGNkbSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNlc3Npb24qIHNlc3Npb24pCiB7CiAgICAgaWYgKCFzZXNz
aW9uIHx8IHNlc3Npb24tPnR5cGUoKSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgewotICAgICAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0
TGVnYWN5Q0RNU2Vzc2lvbihXVEY6Om51bGxvcHQpLCBtX2lkKTsKKyAgICAgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNl
c3Npb24oc3RkOjpudWxsb3B0KSwgbV9pZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9T
ZXNzaW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKaW5kZXggNmZjOGJhOGI2OWQ5MDg5
Njc1Y2I1NmU3ZWU0NmEyMDg4MWVhYjkyYy4uYWI1NmQ2M2FjMzgxZTRiYTlhZGJlZDg1MGMyZDg5
NjEzMWQ1OTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmgKQEAg
LTYwLDQyICs2MCw0MiBAQCBzdHJ1Y3QgUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbiB7
CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGRl
Y29kZXIgPj4gcm91dGluZ0NvbnRleHRVSUQ7CiAgICAgICAgIGlmICghcm91dGluZ0NvbnRleHRV
SUQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2FtcGxlUmF0ZTsKICAg
ICAgICAgZGVjb2RlciA+PiBzYW1wbGVSYXRlOwogICAgICAgICBpZiAoIXNhbXBsZVJhdGUpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IGJ1ZmZlclNpemU7CiAgICAgICAg
IGRlY29kZXIgPj4gYnVmZmVyU2l6ZTsKICAgICAgICAgaWYgKCFidWZmZXJTaXplKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90PiBudW1iZXJPZk91dHB1dENoYW5uZWxzOwog
ICAgICAgICBkZWNvZGVyID4+IG51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICgh
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHNp
emVfdD4gbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGRlY29kZXIgPj4g
bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAgICAgICAgIGlmICghbWF4aW11bU51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+
IHByZWZlcnJlZEJ1ZmZlclNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlZmVycmVkQnVmZmVy
U2l6ZTsKICAgICAgICAgaWYgKCFwcmVmZXJyZWRCdWZmZXJTaXplKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNdXRlZDsKICAgICAgICAgZGVjb2RlciA+PiBpc011dGVk
OwogICAgICAgICBpZiAoIWlzTXV0ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxi
b29sPiBpc0FjdGl2ZTsKICAgICAgICAgZGVjb2RlciA+PiBpc0FjdGl2ZTsKICAgICAgICAgaWYg
KCFpc0FjdGl2ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAg
V1RGTW92ZSgqcm91dGluZ0NvbnRleHRVSUQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IDczNzVmYjQxNmU5NDRmMjNlMTQ4Mzdj
NmNiNTE3NTZhYTYxNTU0N2QuLjQyMjQ0NmI5YTgxMjVjNGFmNmY5ZDMwM2QxNTBiNTJkZjk3MDUx
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVtb3RlQ0RNOjpSZW1vdGVDRE0oV2Vha1B0cjxSZW1v
dGVDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUNETUlkZW50aWZpZXImJgogdm9pZCBSZW1v
dGVDRE06OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24sIExvY2FsU3RvcmFnZUFjY2VzcyBhY2Nlc3MsIFN1cHBvcnRlZENv
bmZpZ3VyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7
Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgK
aW5kZXggZTY0NTA4NGJjZDYwYzQ1Y2U3NmYzYTAzY2ZkM2Y3ODNmMTY5MzQ5MS4uZGNiNDFiYWEx
OWJmMTY1ZTFkM2I2NDIwMTZiOTlhNGEwOTcyNTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1Db25maWd1cmF0aW9uLmgK
QEAgLTUyLDIyICs1MiwyMiBAQCBzdHJ1Y3QgUmVtb3RlQ0RNQ29uZmlndXJhdGlvbiB7CiAgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxBdG9tU3RyaW5nPj4gc3VwcG9ydGVkSW5pdERhdGFUeXBlczsK
ICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzOwogICAgICAgICBpZiAo
IXN1cHBvcnRlZEluaXREYXRhVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8QXRvbVN0cmluZz4+IHN1cHBvcnRlZFJvYnVzdG5lc3NlczsKICAgICAgICAgZGVjb2Rl
ciA+PiBzdXBwb3J0ZWRSb2J1c3RuZXNzZXM7CiAgICAgICAgIGlmICghc3VwcG9ydGVkUm9idXN0
bmVzc2VzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNTZXJ2
ZXJDZXJ0aWZpY2F0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZp
Y2F0ZXM7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAgICBk
ZWNvZGVyID4+IHN1cHBvcnRzU2Vzc2lvbnM7CiAgICAgICAgIGlmICghc3VwcG9ydHNTZXNzaW9u
cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgq
c3VwcG9ydGVkSW5pdERhdGFUeXBlcyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRp
b24uaAppbmRleCBhODY1ODBiZjE4NjMxYmIzYmM4MjZiNTNhZjFmMmQ1NDg2ZTQ2MjU0Li5lODg5
NjEyYWVkMDljMTM5ZDJlNjkwNmI4Y2Q1Mjk2NWEyZmM4ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VDb25maWd1cmF0aW9uLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlbW90ZUNETUlu
c3RhbmNlQ29uZmlndXJhdGlvbiB7CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4ga2V5U3lzdGVt
OwogICAgICAgICBkZWNvZGVyID4+IGtleVN5c3RlbTsKICAgICAgICAgaWYgKCFrZXlTeXN0ZW0p
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmtl
eVN5c3RlbSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKaW5kZXggMGE3YzY4YWU1MTBk
ZTQzZTgyNWM0MjRjN2QyZjQ4ZTNjOGNjMTNhNi4uOTFhZDRmOTI5Y2E1ZGZmZDljMWIyZTYzNjRl
Mzg5Yjk3OTRlOTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcApAQCAtNjksNyAr
NjksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmluZwogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBl
IHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNr
KGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQp
OworICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODEsNyAr
ODEsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cAogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIGlmICghbV9mYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJl
OjpPdGhlcik7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpPdGhlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEwNSwxMiArMTA1LDEyIEBAIHZvaWQgUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uOjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3Nl
U2Vzc2lvCiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewotICAgICAg
ICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2so
eyB9LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OlJlbW92
ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSksIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoS2V5U3RhdHVzVmVjdG9yJiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAg
IE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkp
CiAgICAgICAgICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxl
YXNlTm9uTnVsbCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RG
TW92ZShyZWFsTWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkYuaAppbmRleCBhYjIyZWFhYjMzZmI1NWZhOTAzOWUyNzYwMzQyNDk2OGFiNmVh
N2U0Li5kZTlkYzMzZjA5ZDU2ODc1OTc1ODU3Mjk0Mjk3ZjVlN2JkMTc1YWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
Ri5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlJlcGV0
aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRp
KCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmlu
YWw7Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2lu
dD4gaG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIFN0
cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJp
bmcoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
V2ViQ29yZTo6U3Vic2FtcGxpbmdMZXZlbCA9IFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWw6OkRl
ZmF1bHQpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKaW5kZXggY2I5MWU1
NmUzYTVlMTlmNDAxMjUyZGU4NTJlOTgyODBkOTRhN2I4NS4uOGExOTdlMWRhNmRiOWNjZTY3Y2M3
NWE3ZmUzYmMxNWZjZGJlY2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCkBAIC04Myw3
ICs4Myw3IEBAIGJvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZh
bHVlOwogCiAgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9wdCksIE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpS
ZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1
cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgc3RkOjpudWxsb3B0KSwgTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRl
ZCksIHsgfSk7CiAgICAgbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlLnNldChrZXlTeXN0ZW0sIHN1
cHBvcnRlZCk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
Q29uZmlndXJhdGlvbi5oCmluZGV4IGMwNmY4ODMyNDlkNTE4Yzc5OTEzYzVjMmU3NDg1YTM3YzFh
Zjg0MTIuLjBkZTk1ZWQ1ZWQyNmNmOGE2ZDA3MDQ2ZjY2NGNmMTU4ZWQxZDhiZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaApAQCAtNjIsNDIgKzYyLDQyIEBAIHN0cnVj
dCBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxTdHJp
bmc+IGVuZ2luZURlc2NyaXB0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGVuZ2luZURlc2NyaXB0
aW9uOwogICAgICAgICBpZiAoIWVuZ2luZURlc2NyaXB0aW9uKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lOwogICAg
ICAgICBkZWNvZGVyID4+IG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWU7CiAgICAgICAg
IGlmICghbWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzU2Nhbm5pbmc7CiAgICAgICAgIGRlY29kZXIgPj4g
c3VwcG9ydHNTY2FubmluZzsKICAgICAgICAgaWYgKCFzdXBwb3J0c1NjYW5uaW5nKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9ydHNGdWxsc2NyZWVuOwogICAgICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRzRnVsbHNjcmVlbjsKICAgICAgICAgaWYgKCFzdXBwb3J0c0Z1
bGxzY3JlZW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1Bp
Y3R1cmVJblBpY3R1cmU7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0
dXJlOwogICAgICAgICBpZiAoIXN1cHBvcnRzUGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmc7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZzsKICAgICAgICAg
aWYgKCFzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldDsKICAgICAgICAg
ZGVjb2RlciA+PiBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0OwogICAgICAgICBpZiAo
IWNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxib29sPiBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplOwogICAgICAgICBkZWNvZGVy
ID4+IHNob3VsZElnbm9yZUludHJpbnNpY1NpemU7CiAgICAgICAgIGlmICghc2hvdWxkSWdub3Jl
SW50cmluc2ljU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAg
ICAgV1RGTW92ZSgqZW5naW5lRGVzY3JpcHRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclN0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAppbmRl
eCAxZjc5Y2U1MzgxN2IwNWE3NjVjMmE3Y2Y5M2NlYjQzNzU3NTIzMDczLi5hNjI3YTczNzBjMmJj
MWYyNTM5MWMwYmViMjEwOGViZGVhYjEyOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyU3RhdGUuaApAQCAt
MTA3LDE0MyArMTA3LDE0MyBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSB7CiAgICAg
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZHVyYXRpb247CiAgICAgICAgIGRlY29kZXIgPj4gZHVy
YXRpb247CiAgICAgICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxNZWRpYVRpbWU+IG1pblRpbWVTZWVrYWJsZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5U
aW1lU2Vla2FibGU7CiAgICAgICAgIGlmICghbWluVGltZVNlZWthYmxlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtYXhUaW1lU2Vla2FibGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gbWF4VGltZVNlZWthYmxlOwogICAgICAgICBpZiAoIW1heFRpbWVTZWVrYWJsZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnREYXRlOwogICAg
ICAgICBkZWNvZGVyID4+IHN0YXJ0RGF0ZTsKICAgICAgICAgaWYgKCFzdGFydERhdGUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGltZTsKICAgICAgICAg
ZGVjb2RlciA+PiBzdGFydFRpbWU7CiAgICAgICAgIGlmICghc3RhcnRUaW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2s7
CiAgICAgICAgIGRlY29kZXIgPj4gbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrOwogICAgICAg
ICBpZiAoIWxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPFN0cmluZz4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGRl
Y29kZXIgPj4gd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWU7CiAgICAgICAgIGlmICghd2lyZWxl
c3NQbGF5YmFja1RhcmdldE5hbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJD
b3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzOwogICAgICAgICBkZWNvZGVy
ID4+IGJ1ZmZlcmVkUmFuZ2VzOwogICAgICAgICBpZiAoIWJ1ZmZlcmVkUmFuZ2VzKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TmV0d29ya1N0YXRlIG5l
dHdvcmtTdGF0ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShuZXR3b3JrU3RhdGUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0
ZSByZWFkeVN0YXRlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlYWR5U3RhdGUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vdmllTG9h
ZFR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
V2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGU7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUod2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBuYXR1cmFs
U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBuYXR1cmFsU2l6ZTsKICAgICAgICAgaWYgKCFuYXR1
cmFsU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4RmFzdEZv
cndhcmRSYXRlOwogICAgICAgICBkZWNvZGVyID4+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAg
ICAgaWYgKCFtYXhGYXN0Rm9yd2FyZFJhdGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25h
bDxkb3VibGU+IG1pbkZhc3RSZXZlcnNlUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBtaW5GYXN0
UmV2ZXJzZVJhdGU7CiAgICAgICAgIGlmICghbWluRmFzdFJldmVyc2VSYXRlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZp
ZWRUaW1lOwogICAgICAgICBkZWNvZGVyID4+IHNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmll
ZFRpbWU7CiAgICAgICAgIGlmICghc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbGl2ZVVwZGF0ZUludGVydmFs
OwogICAgICAgICBkZWNvZGVyID4+IGxpdmVVcGRhdGVJbnRlcnZhbDsKICAgICAgICAgaWYgKCFs
aXZlVXBkYXRlSW50ZXJ2YWwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50NjRf
dD4gdG90YWxCeXRlczsKICAgICAgICAgZGVjb2RlciA+PiB0b3RhbEJ5dGVzOwogICAgICAgICBp
ZiAoIXRvdGFsQnl0ZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxX
ZWJDb3JlOjpWaWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3M+PiB2aWRlb01ldHJpY3M7CiAgICAg
ICAgIGRlY29kZXIgPj4gdmlkZW9NZXRyaWNzOwogICAgICAgICBpZiAoIXZpZGVvTWV0cmljcykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+PiB3b3VsZFRhaW50
RG9jdW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgZGVjb2RlciA+PiB3b3VsZFRhaW50RG9j
dW1lbnRTZWN1cml0eU9yaWdpbjsKICAgICAgICAgaWYgKCF3b3VsZFRhaW50RG9jdW1lbnRTZWN1
cml0eU9yaWdpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHBhdXNlZDsK
ICAgICAgICAgZGVjb2RlciA+PiBwYXVzZWQ7CiAgICAgICAgIGlmICghcGF1c2VkKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gY2FuU2F2ZU1lZGlhRGF0YTsKICAgICAgICAg
ZGVjb2RlciA+PiBjYW5TYXZlTWVkaWFEYXRhOwogICAgICAgICBpZiAoIWNhblNhdmVNZWRpYURh
dGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBdWRpbzsKICAgICAg
ICAgZGVjb2RlciA+PiBoYXNBdWRpbzsKICAgICAgICAgaWYgKCFoYXNBdWRpbykKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1ZpZGVvOwogICAgICAgICBkZWNvZGVyID4+
IGhhc1ZpZGVvOwogICAgICAgICBpZiAoIWhhc1ZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gaGFzQ2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGRlY29kZXIgPj4gaGFz
Q2xvc2VkQ2FwdGlvbnM7CiAgICAgICAgIGlmICghaGFzQ2xvc2VkQ2FwdGlvbnMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lOwogICAg
ICAgICBkZWNvZGVyID4+IGhhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CiAgICAgICAgIGlmICghaGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+
IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOwogICAgICAgICBkZWNvZGVyID4+IHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkOwogICAgICAgICBpZiAoIXdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRlY29kZXIgPj4gaGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW47CiAgICAgICAgIGlmICghaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxib29sPiBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrOwogICAgICAg
ICBkZWNvZGVyID4+IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2s7CiAgICAgICAgIGlmICghZGlkUGFz
c0NPUlNBY2Nlc3NDaGVjaykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAg
ICAgICAgV1RGTW92ZSgqZHVyYXRpb24pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCmluZGV4IDEyMDc4ZTIzOTc3YjY0MTIxZGMzZjM3YmExZjEwMzQ1ZjBlMTgxYTgu
LjgyMzhlNjQzMGVkN2Y5NDc4OTIxYzYwYjcxYzNiNWI0ODA4NjJiYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKQEAgLTEzMiwxMiArMTMyLDEyIEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlT3ZlcmxheTo6QWN0aW9uQ29udGV4dD4g
YWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViS2l0OjpXZWJQYWdlT3ZlcmxheSYgcGFn
ZU92ZXJsYXksIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRpb24pIGZpbmFsCiAgICAgewogICAg
ICAgICBpZiAoIW1fY2xpZW50LmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiBhcGlSYW5nZSA9IG51bGxwdHI7
CiAgICAgICAgIGF1dG8gYWN0aW9uQ29udGV4dCA9IChEREFjdGlvbkNvbnRleHQgKiltX2NsaWVu
dC5hY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludCh0b0FQSSgmcGFnZU92ZXJsYXkpLCBXS1Bv
aW50TWFrZShsb2NhdGlvbi54KCksIGxvY2F0aW9uLnkoKSksICZhcGlSYW5nZSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgaWYgKCFhY3Rpb25Db250ZXh0IHx8ICFhcGlSYW5n
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7IHsgYWN0aW9uQ29udGV4dCwgbWFrZVNp
bXBsZVJhbmdlKFdlYktpdDo6dG9JbXBsKGFwaVJhbmdlKS0+Y29yZVJhbmdlKCkpIH0gfTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAppbmRleCBmMzMx
YmUwMzIzNDZkOGI0NWFhYjdmMmJiZGQ3MDE4NmM1ODU1OTMyLi44OWI2M2ZmODYxOTA0YjAzNWFh
ZWJjNDFlMzMwZjJiNmM5OTdiYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIC8vIE5vdGU6IFRoZXNl
IHNob3VsZCBvbmx5IGJlIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNj
cmlwdC4KICAgICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRCb3VuZHMoKTsKICAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJlbmRlclJlY3QoYm9vbCopOwotICAgIFJlZlB0cjxXZWJJbWFnZT4gcmVuZGVy
ZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93LCBjb25z
dCBPcHRpb25hbDxmbG9hdD4mIGJpdG1hcFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICBSZWZQ
dHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zLCBib29sIHNob3VsZEV4
Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCA9IHN0ZDo6
bnVsbG9wdCk7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU+IHZpc2libGVS
YW5nZSgpOwogICAgIHZvaWQgc2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9yVXNlcihjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNoZWNrRW5hYmxlZChi
b29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRl
eCBhNDc0ZmEyOTIyYWE2YzcyZGExMTg0NGU0YWVjYjJkMTViNDc5MzFlLi5hYzk0Y2MwYjgyZTgx
MjhmNzc3YTEwOTY2MDI3M2NiMjc4NTI1MDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgT3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpw
YXJzZUV4dGUKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVy
bmFsRXJyb3I7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIg
SVBDIG1lc3NhZ2VzLgpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpjcmVhdGVUYWJGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpF
CiB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRG
b3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yOjpFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBPcHRpb25hbDxVUkw+JiBmcmFtZVVSTCwg
Y29uc3QgT3B0aW9uYWw8VVJMPiYgY29udGV4dFNlY3VyaXR5T3JpZ2luLCBjb25zdCBPcHRpb25h
bDxib29sPiYgdXNlQ29udGVudFNjcmlwdENvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4mLCBjb25zdCBPcHRpb25hbDxJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yPiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpF
eHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJl
cXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzYsMjAgKzIzNiwyMCBAQCB2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JF
eHRlbnNpb24oY29uc3QgSW5zcGVjdAogCiAgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRB
UElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJldmFsdWF0ZVNj
cmlwdEZvckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0
cm95ZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byog
ZnJvbnRlbmRHbG9iYWxPYmplY3QgPSB3ZWFrVGhpcy0+bV9mcm9udGVuZENsaWVudC0+ZnJvbnRl
bmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKICAgICAgICAgaWYgKCFm
cm9udGVuZEdsb2JhbE9iamVjdCkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95
ZWQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIElu
c3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFr
VGhpcy0+cGFyc2VFeHRlbnNpb25FcnJvckZyb21FdmFsdWF0aW9uUmVzdWx0KHJlc3VsdCkpIHsK
ICAgICAgICAgICAgIGF1dG8gZXhjZXB0aW9uRGV0YWlscyA9IHJlc3VsdC52YWx1ZSgpLmVycm9y
KCk7CiAgICAgICAgICAgICBMT0coSW5zcGVjdG9yLCAiSW50ZXJuYWwgZXJyb3IgZW5jb3VudGVy
ZWQgd2hpbGUgZXZhbHVhdGluZyB1cG9uIHRoZSBmcm9udGVuZDogYXQgJXM6JWQ6JWQ6ICVzIiwg
ZXhjZXB0aW9uRGV0YWlscy5zb3VyY2VVUkwudXRmOCgpLmRhdGEoKSwgZXhjZXB0aW9uRGV0YWls
cy5saW5lTnVtYmVyLCBleGNlcHRpb25EZXRhaWxzLmNvbHVtbk51bWJlciwgZXhjZXB0aW9uRGV0
YWlscy5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBXVEY6Om51bGxvcHQsIHBhcnNlZEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBwYXJzZWRFcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJ
bnNwZWN0CiAgICAgICAgIGF1dG8gb2JqZWN0UmVzdWx0ID0gd2Vha1RoaXMtPnVud3JhcEV2YWx1
YXRpb25SZXN1bHRBc09iamVjdChyZXN1bHQpOwogICAgICAgICBpZiAoIW9iamVjdFJlc3VsdCkg
ewogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCB2YWx1
ZSByZXR1cm5lZCBmcm9tIEluc3BlY3RvckZyb250ZW5kQVBJLmNyZWF0ZVRhYkZvckV4dGVuc2lv
bigpLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQs
IEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9u
RXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVChyZXN1bHQudmFsdWUoKSk7CkBAIC0yNjUsMjIgKzI2NSwyMiBAQCB2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRl
bnNpb24oY29uc3QgSW5zcGVjdAogICAgICAgICBKU0M6OkpTVmFsdWUgZXJyb3JQYXlsb2FkID0g
b2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9iYWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdC0+dm0oKSwgImVycm9yIl9zKSk7CiAgICAg
ICAgIGlmICghZXJyb3JQYXlsb2FkLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIGlmICgh
ZXJyb3JQYXlsb2FkLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJu
YWxFcnJvcik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51
bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RGU3RyaW5n
KGZyb250ZW5kR2xvYmFsT2JqZWN0KSB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgZXJyb3JQYXlsb2FkLnRvV1RG
U3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0KSB9LCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdFBheWxv
YWQgPSBvYmplY3RSZXN1bHQtPmdldChmcm9udGVuZEdsb2JhbE9iamVjdCwgSlNDOjpJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGZyb250ZW5kR2xvYmFsT2JqZWN0LT52bSgpLCAicmVzdWx0Il9zKSk7
CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpmcm9udGVuZEdsb2JhbE9iamVj
dCwgcmVzdWx0UGF5bG9hZCk7CiAgICAgICAgIGlmICghc2VyaWFsaXplZFJlc3VsdFZhbHVlKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCwgSW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcik7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgSW5zcGVjdG9yOjpFeHRlbnNpb25FcnJvcjo6
SW50ZXJuYWxFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxp
emVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAg
IH0pOwogfQogCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnJlbG9hZEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3I6OkV4dGUKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2NTc3NGUxNDU5ZThjNDIwMzQxODAxY2Fh
NjFmMDYwODZkODJkZTM4Li41MjQyMzQ4YTkyOGNmZWU4NjU0MDAyNWZmMDQ0NDQxNGI3NmJhZDA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBS
ZXMKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVy
LCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVm
ZXJyZXJXaGVuRG93bmdyYWRlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUYoUkVMRUFTRV9MT0dfSVNfQUxMT1dFRCwgTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRS
ZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1l
LT5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZyYW1lLT5m
cmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRihSRUxFQVNFX0xPR19JU19BTExPV0VELCBOZXR3b3JrLCAiJXAg
LSBbd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFN1YnJlc291cmNlTG9hZGVy
IiwgdGhpcywgZnJhbWUtPnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCksIGZyYW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGxvYWRlcikpOwogICAg
IH0pOwogfQpAQCAtMTgxLDEzICsxODEsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAog
ICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0
ZXJzOwogICAgIGlmIChhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQoZnJhbWVMb2FkZXJDbGllbnQpKQotICAgICAgICB0cmFja2luZ1BhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQgPSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5SUQoKS52
YWx1ZU9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgdHJhY2tpbmdQYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYlBhZ2VQcm94
eUlEKCkudmFsdWVfb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciB7IH0pOwogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBlbHNlIGlmIChpczxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQ+KGZyYW1lTG9hZGVyQ2xpZW50KSkKICAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Pihm
cmFtZUxvYWRlckNsaWVudCkud2ViUGFnZVByb3h5SUQoKTsKICNlbmRpZgotICAgIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKFBh
Z2VJZGVudGlmaWVyIHsgfSk7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFt
ZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIgeyB9KTsKKyAg
ICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZp
ZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7
CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTU2NSwxMSAr
NTY1LDExIEBAIE9wdGlvbmFsPFdlYkxvYWRlclN0cmF0ZWd5OjpTeW5jTG9hZFJlc3VsdD4gV2Vi
TG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdTeW5jaHJvCiAgICAgYXV0byogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/ICZ3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6
IG51bGxwdHI7CiAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2Uo
KSA6IG51bGxwdHI7CiAgICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byogaGFuZGxlciA9
IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2Nv
bCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKCFoYW5kbGVyKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQsIHN5bmMgbG9hZCB0byBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkg
YSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVyLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRl
eCBiMmViNDdlMzkxMWU1NDY2ZmM2ODM1NWM3YzFkYWVjNmIyMzczNjc1Li4wMDY3ODk5MDkzMmM0
MzgyYmI2MWZmMDA0OTg0YzRiMzk5MGZiNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2Vy
RnVuY3MuY3BwCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIE5QRXJyb3IgcGFyc2VQb3N0QnVm
ZmVyKGJvb2wgaXNGaWxlLCBjb25zdCBjaGFyICpidWZmZXIsIHVpbnQzMl90IGxlbmd0aCwKICAg
ICAgICAgICAgICAgICBTdHJpbmcgY29udGVudExlbmd0aCA9IGhlYWRlckZpZWxkcy5nZXQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFjb250
ZW50TGVuZ3RoLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoID0gc3Rk
OjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KGNvbnRlbnRM
ZW5ndGgpLnZhbHVlT3IoMCksIGRhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TGVuZ3RoID0gc3RkOjptaW4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWdu
ZWQ+KGNvbnRlbnRMZW5ndGgpLnZhbHVlX29yKDApLCBkYXRhTGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICBoZWFkZXJGaWVsZHMucmVtb3ZlKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsK
IAogICAgICAgICAgICAgICAgIHBvc3RCdWZmZXIgKz0gbG9jYXRpb247CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBlNDdhNDRj
YzQ3ZTk5MWRlZTk4ZjliNGEzNmM1YTJjZGY2ZjBkMDY3Li5mYWIwMGRhZGM2NjQ2MzUzYzY4MmY5
MTliMDVlMWVhYWMyYjMxYmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTIwMTMsMTMgKzIwMTMsMTMgQEAgSW50UG9pbnQg
UERGUGx1Z2luOjpjb252ZXJ0RnJvbVJvb3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RW
aWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludElu
UGx1Z2luQ29vcmRpbmF0ZXMocG9pbnQueCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkp
OwotICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
T3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7
CisgICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVf
b3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7
CiB9CiAKIEludFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNv
bnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0SW5QbHVnaW5Db29y
ZGluYXRlcyhyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVP
cihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0SW5QbHVnaW5Db29yZGluYXRlcyk7Cisg
ICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQog
CiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdApAQCAtMjA1Miw3ICsyMDUyLDcgQEAgSW50UmVjdCBQREZQ
bHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IEZsb2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpOwotICAg
IEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2lu
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJv
dW5kcyk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RW
aWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KGJvdW5kcyk7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjA3OSw3
ICsyMDc5LDcgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zaXplID0gcGx1Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0g
PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5z
Zm9ybSgpKTsKKyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RW
aWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSk7CiAgICAg
W21fcGRmTGF5ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtD
QVRyYW5zYWN0aW9uIGJlZ2luXTsKQEAgLTI2MDYsNyArMjYwNiw3IEBAIHZvaWQgUERGUGx1Z2lu
OjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1z
VG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5T
QXJyYXkgKnR5cGVzKQogewogICAgIGF1dG8gcGFzdGVib2FyZFR5cGVzID0gbWFrZVZlY3RvcjxT
dHJpbmc+KHR5cGVzKTsKLSAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2Zy
YW1lLT5jb3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IFdURjo6
bnVsbG9wdDsKKyAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5j
b3JlRnJhbWUoKSA/IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5wYWdlSUQoKSA6IHN0ZDo6bnVsbG9w
dDsKIAogICAgIGludDY0X3QgbmV3Q2hhbmdlQ291bnQ7CiAgICAgYXV0byYgd2ViUHJvY2VzcyA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA0NTk5ZjU3YWJiYzA2MGY2YTg4N2NkMGM2YTFh
NWVmZjM0MThiMGI1Li5iNmZkNDQ0MDdjMjk3NzU0YmIyMWJkNDA2ZWVhMjBkZGU3YzZkMWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJM
UmVxdWVzdChVUkxSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5hbGxvd1Bv
cHVwcygpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdV
c2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3Np
bmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0
KTsKIAogICAgIC8vIEZpcnN0LCB0cnkgdG8gZmluZCBhIHRhcmdldCBmcmFtZS4KICAgICBGcmFt
ZSogdGFyZ2V0RnJhbWUgPSBmcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihy
ZXF1ZXN0LT50YXJnZXQoKSk7CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBib29sIFBsdWdpblZpZXc6
OmV2YWx1YXRlKE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcs
IE5QVmFyaQogICAgIC8vIHByb3RlY3QgdGhlIHBsdWctaW4gdmlldyBmcm9tIGRlc3RydWN0aW9u
LgogICAgIE5QUnVudGltZU9iamVjdE1hcDo6UGx1Z2luUHJvdGVjdG9yIHBsdWdpblByb3RlY3Rv
cigmbV9ucFJ1bnRpbWVPYmplY3RNYXApOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6
Om51bGxvcHQpOwogICAgIHJldHVybiBtX25wUnVudGltZU9iamVjdE1hcC5ldmFsdWF0ZShucE9i
amVjdCwgc2NyaXB0U3RyaW5nLCByZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRl
eCAxM2YzYjk2NjVlODM1ZTk2NGViZDBlMjY0YmY0NzAyMTUzYTExY2U4Li5hYjU3MGJmZTI5M2Y2
NGFjNzI3MzAzYzlhZWY2ZjA3ODQ0M2YzNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTE2
Niw3ICsxNjYsNyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6bWF0Y2hSZWdpc3RyYXRp
b24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjbwogICAgIEFTU0VSVChpc01haW5S
dW5Mb29wKCkpOwogCiAgICAgaWYgKCFtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JP
cmlnaW4odG9wT3JpZ2luKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMzIsNyArMjMyLDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyKCkKIHsK
ICAgICBhdXRvIHJlZ2lzdHJhdGlvblRhc2tzID0gV1RGTW92ZShtX29uZ29pbmdNYXRjaFJlZ2lz
dHJhdGlvblRhc2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogcmVnaXN0cmF0aW9uVGFz
a3MudmFsdWVzKCkpCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGdldFJlZ2lzdHJhdGlvblRhc2tzID0g
V1RGTW92ZShtX29uZ29pbmdHZXRSZWdpc3RyYXRpb25zVGFza3MpOwogICAgIGZvciAoYXV0byYg
Y2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRpb25UYXNrcy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMWNiYzgwNjFmNDQyZTQ4ZjFkNWE0NmM2MjJh
NWU4ZDcwNzE3MDM4NS4uODU0MWRmM2NiMjIzOWNhZDhhYzdkNTZmM2U0NjJkMGQ1YTcxZWNiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3Jt
RGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JgogICAgICAgICBtX2Jsb2JMb2FkZXIuZW1wbGFj
ZSgqdGhpcyk7CiAgICAgICAgIGF1dG8gbG9hZGVyID0gc2VydmljZVdvcmtlclRocmVhZFByb3h5
LT5jcmVhdGVCbG9iTG9hZGVyKCptX2Jsb2JMb2FkZXIsIGJsb2JVUkwpOwogICAgICAgICBpZiAo
IWxvYWRlcikgewotICAgICAgICAgICAgbV9ibG9iTG9hZGVyID0gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgbV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZGlkRmFp
bChpbnRlcm5hbEVycm9yKGJsb2JVUkwpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQogewogICAgIGRpZEZpbmlzaCgpOwogCi0gICAgc3Rk
OjpleGNoYW5nZShtX2Jsb2JMb2FkZXIsIFdURjo6bnVsbG9wdCk7CisgICAgc3RkOjpleGNoYW5n
ZShtX2Jsb2JMb2FkZXIsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggMDQyOWRhZDZhZjZhODk5MmI5ZTJl
Zjk3NzUyYWVmMTllZGQzOTI5ZC4uZmI2MzllYTY3MWFjZmQxZDQyMWY3ZDhkZWQ0OThlODBkMGVm
NTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTQzMiw3ICs0MzIs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdEludGVybmFs
KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmCiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU2NyaXB0KEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdvcmxkLCBVc2Vy
U2NyaXB0JiYgdXNlclNjcmlwdCkKIHsKLSAgICBhZGRVc2VyU2NyaXB0SW50ZXJuYWwod29ybGQs
IFdURjo6bnVsbG9wdCwgV1RGTW92ZSh1c2VyU2NyaXB0KSwgSW5qZWN0VXNlclNjcmlwdEltbWVk
aWF0ZWx5OjpObyk7CisgICAgYWRkVXNlclNjcmlwdEludGVybmFsKHdvcmxkLCBzdGQ6Om51bGxv
cHQsIFdURk1vdmUodXNlclNjcmlwdCksIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8p
OwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6cmVtb3ZlVXNlclNjcmlwdFdp
dGhVUkwoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIGNvbnN0IFVSTCYgdXJsKQpA
QCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2Vy
U3R5bGVTaGVldEludGVybmFsKEluamVjdGVkQnVuZGxlU2NyaXB0V29yCiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU3R5bGVTaGVldChJbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkJiB3b3JsZCwgVXNlclN0eWxlU2hlZXQmJiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBh
ZGRVc2VyU3R5bGVTaGVldEludGVybmFsKHdvcmxkLCBXVEY6Om51bGxvcHQsIFdURk1vdmUodXNl
clN0eWxlU2hlZXQpKTsKKyAgICBhZGRVc2VyU3R5bGVTaGVldEludGVybmFsKHdvcmxkLCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUodXNlclN0eWxlU2hlZXQpKTsKICAgICBpbnZhbGlkYXRlSW5qZWN0
ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lc0luQWxsUGFnZXMoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGQ1ZTIwZjQxMTdhYTUxZWM2YmI3MTNmMTYw
NzdhY2YxZGJlMmFiYzIuLjgzM2M4MmM1NGQzN2FlMDE1YTE4MWE3YjkzMjRmNzA1MzA3YzY4ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgUmVmPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9k
eSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6
OlR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1l
bnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVP
cihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVu
dC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9v
cihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6
OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgK
aW5kZXggODBiZGU1YzMwMTNiMGZiOGMzODVkMzc1ZTViOTIxN2ZmYzY2MGQ2NS4uYWYzZDllOGFk
NGI2ZTZkNDE0ZDQyMzU0OGEzMjk0NzIyZjE3MTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRt
YXBVdGlsaXRpZXMuaApAQCAtMzgsNiArMzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFNoYXJlYWJsZUJpdG1hcDsKIAogZW51bSBjbGFzcyBBbGxvd0FuaW1hdGVkSW1hZ2VzIDogYm9v
bCB7IE5vLCBZZXMgfTsKLVJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUJp
dG1hcChXZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0U2l6ZT4g
c2NyZWVuU2l6ZUluUGl4ZWxzID0gV1RGOjpudWxsb3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzID0g
QWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKK1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0
ZVNoYXJlYWJsZUJpdG1hcChXZWJDb3JlOjpSZW5kZXJJbWFnZSYsIE9wdGlvbmFsPFdlYkNvcmU6
OkZsb2F0U2l6ZT4gc2NyZWVuU2l6ZUluUGl4ZWxzID0gc3RkOjpudWxsb3B0LCBBbGxvd0FuaW1h
dGVkSW1hZ2VzID0gQWxsb3dBbmltYXRlZEltYWdlczo6WWVzKTsKIAogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggNGU3Yjk4MWUxMjExYmZmMjllN2Q3MzAyYTIwZDUzY2I3YmZkNzNhNS4u
MzI1M2FhMGFiODM4OWYyOTVmMmVhZTY5N2EwMDJhNDg0MWMxMTBjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNl
ZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0g
ZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVsbHB0cjsKIAotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IG1h
a2VPcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdCksIG1fcGFnZS5p
ZGVudGlmaWVyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hh
bmdlZCh3ZWJGcmFtZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6
IHN0ZDo6bnVsbG9wdCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCiBQYWdlKiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVz
JiB3aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGEwMGRkYzhhNjY5NDg3OTcz
MTA0OTIxYTk3OWNkMmU4OTcyMDUwMDguLjNlYTFjYTA2NzBiY2MwNDQ0ZDEwNDEyMTc0ZTY4ZWYw
OThjOWUyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTI2LDcgKzEy
Niw3IEBAIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp3ZWJQYWdlUHJveHlJRCgpIGNvbnN0CiAgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgp
IGNvbnN0CkBAIC0xMzQsNyArMTM0LDcgQEAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkp
CiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRG
cm9tUGFyZW50MigpCiAgICAgaWYgKG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlm
aWVyKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKAogICAgICAgICAg
ICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPmZyYW1lSUQsIG1fZnJh
bWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5wYWdlSUQpLCAwKTsKLSAgICAgICAg
bV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyID0gc3RkOjpudWxs
b3B0OwogICAgIH0KICNlbmRpZgogCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2hhbmdlRG9jdW1lbnQoY29uc3QgVVJMJiBjdXJyZW50
VXJsLCBjb24KICAgICBpZiAobV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIg
JiYgIVdlYkNvcmU6OmFyZVJlZ2lzdHJhYmxlRG9tYWluc0VxdWFsKGN1cnJlbnRVcmwsIG5ld1Vy
bCkpIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoCiAgICAgICAgICAg
ICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+ZnJhbWVJRCwgbV9mcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXItPnBhZ2VJRCksIDApOwotICAgICAgICBt
X2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXIgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogI2VuZGlmCiB9CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnMKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmln
YXRpb25BY3Rpb246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2Zy
YW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3Qs
IGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVB
U0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBpZ25vcmlu
ZyBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgZmFpbGVkIik7
Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51
bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CiB9CiAK
QEAgLTEwMTUsNyArMTAxNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAKICAgICAgICAg
aWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlz
TWFpbkZyYW1lKCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50
TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3Vy
Y2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0
dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OlJlcGx5KHBvbGljeURlY2lzaW9uKSkpIHsKICAgICAgICAgICAgIFdFQkZSQU1FTE9BREVS
Q0xJRU5UX1JFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb246IGlnbm9yaW5nIGJlY2F1c2Ugb2YgZmFpbGluZyB0byBzZW5kIHN5
bmMgSVBDIik7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxs
b3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgICAgICBt
X2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNp
b24geyByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MTAyNyw3ICsxMDI3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBBU1NFUlQocG9s
aWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKICAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5m
bygpLCByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3Bv
bnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkgewogICAgICAgICBX
RUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBpZ25vcmluZyBiZWNhdXNlIG9mIGZhaWxp
bmcgdG8gc2VuZCBhc3luYyBJUEMiKTsKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIs
IFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5
RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmNwcAppbmRleCA2YjE4OGJiOTc1NWIzOTdjNWJiOWE2NzQ3MzAzNzZkNDhjZDRjZDY0
Li41YzhjMDlkN2ZlNjMxZDFkNDBmNTM4OWNlYTA3ZjYxMDE2MjE3M2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBXZWJHZW9sb2NhdGlv
bkNsaWVudDo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlZCkKIAogT3B0aW9uYWw8
R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRp
b24oKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2Vv
bG9jYXRpb24mIGdlb2xvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApp
bmRleCA0OTU0MDQzYmMwODExN2Y1ZTcyNzAyMDJiY2ExMGM5OGUyZjNhYmY3Li5hNjlkZDY1MjNi
MWNmNmRjOWY1YWQ1OGM2OWQ5ZDNjYzViMTVjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIEJsb2JSZWdpc3RyeSogV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVCbG9iUmVnaXN0cnkoKQogc3RhdGljIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSWRlbnRpZmllcihjb25zdCBQYXN0ZWJvYXJkQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBpZiAoIWlzPFBhZ2VQYXN0ZWJvYXJkQ29udGV4dD4oY29udGV4dCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gZG93bmNhc3Q8UGFnZVBhc3RlYm9hcmRDb250ZXh0PigqY29udGV4dCkucGFnZUlE
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IDAyNTM4Y2QzYjA2
ODdlNWViZjhjN2ZmNjQxMDcyOGVkYzBiYmJlMWIuLmY0NzVjYjMzZWE4OTc0MmNhNGUzMzdlY2Q1
NjBjOGZjOTAzOTQ2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC01
NiwyNyArNTYsMjcgQEAgT3B0aW9uYWw8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTdHJp
bmc+IHZvaWNlVVJJOwogICAgIGRlY29kZXIgPj4gdm9pY2VVUkk7CiAgICAgaWYgKCF2b2ljZVVS
SSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7
CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYW5nOwogICAgIGRl
Y29kZXIgPj4gbGFuZzsKICAgICBpZiAoIWxhbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBs
b2NhbFNlcnZpY2U7CiAgICAgZGVjb2RlciA+PiBsb2NhbFNlcnZpY2U7CiAgICAgaWYgKCFsb2Nh
bFNlcnZpY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBkZWZhdWx0TGFuZzsKICAgICBkZWNv
ZGVyID4+IGRlZmF1bHRMYW5nOwogICAgIGlmICghZGVmYXVsdExhbmcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4ge3sgV1RGTW92ZSgqdm9pY2VVUkkpLCBXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqbGFuZyks
IFdURk1vdmUoKmxvY2FsU2VydmljZSksIFdURk1vdmUoKmRlZmF1bHRMYW5nKSB9fTt9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dl
YkVkaXRvckNsaWVudEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKaW5kZXggNDg1ZjFmZDA5OTY5MDEx
MTM0ZTU3NzY5NWRjMmIwNGQzYjFmZDEzZS4uMGE1MTNiZjJlZWRjOTY5MGUyZjlmYzMxNWUyZjMx
YjVkNDAxNmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2dsaWIvV2ViRWRpdG9yQ2xpZW50R0xpYi5jcHAKQEAg
LTQ2LDggKzQ2LDggQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZERpc3BhdGNoSW5wdXRNZXRo
b2RLZXlkb3duKEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIEFTU0VSVChmcmFtZSk7CiAKICAg
ICBpZiAoY29uc3QgYXV0byYgdW5kZXJsaW5lcyA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRVbmRl
cmxpbmVzKCkpIHsKLSAgICAgICAgYXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJl
ZWRpdFNlbGVjdGlvblJhbmdlU3RhcnQoKS52YWx1ZU9yKDApOwotICAgICAgICBhdXRvIHJhbmdl
TGVuZ3RoID0gcGxhdGZvcm1FdmVudC0+cHJlZWRpdFNlbGVjdGlvblJhbmdlTGVuZ3RoKCkudmFs
dWVPcigwKTsKKyAgICAgICAgYXV0byByYW5nZVN0YXJ0ID0gcGxhdGZvcm1FdmVudC0+cHJlZWRp
dFNlbGVjdGlvblJhbmdlU3RhcnQoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgYXV0byByYW5nZUxl
bmd0aCA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZUxlbmd0aCgpLnZhbHVl
X29yKDApOwogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24ocGxhdGZvcm1F
dmVudC0+dGV4dCgpLCB1bmRlcmxpbmVzLnZhbHVlKCksIHsgfSwgcmFuZ2VTdGFydCwgcmFuZ2VT
dGFydCArIHJhbmdlTGVuZ3RoKTsKICAgICB9IGVsc2UKICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbmZpcm1Db21wb3NpdGlvbihwbGF0Zm9ybUV2ZW50LT50ZXh0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4
dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCmluZGV4IDc4ZjFkZDEwOTU3MTA1ZTIxNTY2YTgy
M2YyYTI1MGM1ODk2MTNiMDQuLjRlZDNlZjk1MDVmNTFmMzI4NTU0MzAxNDkyYWM1YTRlNjkyNGRj
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1Rl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KQEAgLTc4LDE3
ICs3OCwxNyBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OlJhbmdlQW5k
T2Zmc2V0PiBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveAogCiAgICAgYXV0byByb290ID0gZnJh
bWVTZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAg
aWYgKCFyb290KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzZWxlY3Rpb25MaXZlUmFuZ2UgPSBzZWxlY3Rpb24u
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXNlbGVjdGlvbkxpdmVSYW5nZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIHNlbGVjdGlvblJhbmdlID0gU2ltcGxlUmFuZ2UgeyAqc2VsZWN0aW9uTGl2ZVJhbmdl
IH07CiAKICAgICBhdXRvIHNjb3BlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpy
b290KTsKICAgICBpbnQ2NF90IGFkanVzdGVkU3RhcnRMb2NhdGlvbiA9IGNoYXJhY3RlckNvdW50
KHsgc2NvcGUuc3RhcnQsIHNlbGVjdGlvblJhbmdlLnN0YXJ0IH0pICsgb2Zmc2V0OwogICAgIGlm
IChhZGp1c3RlZFN0YXJ0TG9jYXRpb24gPCAwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gYWRqdXN0ZWRTZWxlY3Rp
b25DaGFyYWN0ZXJSYW5nZSA9IENoYXJhY3RlclJhbmdlIHsgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGFkanVzdGVkU3RhcnRMb2NhdGlvbiksIGxlbmd0aCB9OwogCiAgICAgcmV0dXJuIHsgeyByZXNv
bHZlQ2hhcmFjdGVyUmFuZ2Uoc2NvcGUsIGFkanVzdGVkU2VsZWN0aW9uQ2hhcmFjdGVyUmFuZ2Up
LCBhZGp1c3RlZFNlbGVjdGlvbkNoYXJhY3RlclJhbmdlLmxvY2F0aW9uIH0gfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCBlOTk0NTdjNzQyMzIxYjUzZTFmNmVhNWRjOTBkZGVhODY1MjNlYjg0
Li5iYzZkOTM3YmQ2MmMxYzlhODAxMDgwZjI0MmI0MGRhNmQ0YzgwYzJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdp
bmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBEcmF3aW5nQXJlYUNvb3JkaW5hdGVk
R3JhcGhpY3M6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3JhcGhpY3NMYXkKICAg
ICBhdXRvIGNoYW5nZVdpbmRvd1NjcmVlbiA9IFsmXSB7CiAgICAgICAgIC8vIEluIG9yZGVyIHRv
IGVuc3VyZSB0aGF0IHdlIGdldCBhIHVuaXF1ZSBEaXNwbGF5UmVmcmVzaE1vbml0b3IgcGVyLURy
YXdpbmdBcmVhIChuZWNlc3NhcnkgYmVjYXVzZSBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRv
cgogICAgICAgICAvLyBpcyBkcml2ZW4gYnkgdGhlIFRocmVhZGVkQ29tcG9zaXRvciBvZiB0aGUg
ZHJhd2luZyBhcmVhKSwgZ2l2ZSBlYWNoIHBhZ2UgYSB1bmlxdWUgRGlzcGxheUlEIGRlcml2ZWQg
ZnJvbSBXZWJQYWdlJ3MgdW5pcXVlIElELgotICAgICAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVu
RGlkQ2hhbmdlKG1fbGF5ZXJUcmVlSG9zdC0+ZGlzcGxheUlEKCksIFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgIG1fd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UobV9sYXllclRyZWVIb3N0LT5k
aXNwbGF5SUQoKSwgc3RkOjpudWxsb3B0KTsKICAgICB9OwogCiAgICAgQVNTRVJUKCFtX2xheWVy
VHJlZUhvc3QpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQogICAgIG1fZGlzY2Fy
ZFByZXZpb3VzTGF5ZXJUcmVlSG9zdFRpbWVyLnN0YXJ0T25lU2hvdCg1X3MpOwogCiAgICAgLy8g
QWx3YXlzIHVzZSB0aGUgcHJpbWFyeSBkaXNwbGF5IElEICgwKSB3aGVuIG5vdCBpbiBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBtb2RlLgotICAgIG1fd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFu
Z2UoMCwgV1RGOjpudWxsb3B0KTsKKyAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdl
KDAsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBtX2RpcnR5UmVnaW9uID0gbV93ZWJQYWdlLmJvdW5k
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3Rp
bmdBUEkuY3BwCmluZGV4IGRlNjcyM2I3OTRlOTIwODM0ZTU0ODgwNTk0ZmNhMmIzMDk0NGE3ODYu
LmI2Mjk4ZDVkZDdmNDZhN2Y4YTVmNDIxMzcwMjA3YWE1N2MzZGM1OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwCkBAIC0yMTQs
MTIgKzIxNCwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDY0X3Q+IGNvbnZlcnRUb1VpbnQ2NChK
U0M6OkpTVmFsdWUganNWYWx1ZSkKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAg
ICAgIGRvdWJsZSB2YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVl
IDwgMCB8fCB0cnVuYyh2YWx1ZSkgIT0gdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IHZhbHVlOwogICAgIH0KICAgICBpZiAoanNWYWx1ZS5pc0JpZ0ludCgpKQogICAgICAgICByZXR1
cm4gSlNDOjpKU0JpZ0ludDo6dG9CaWdVSW50NjQoanNWYWx1ZSk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBKU09iamVjdFJlZiBKU0lQ
Q1NlbWFwaG9yZTo6Y3JlYXRlSlNXcmFwcGVyKEpTQ29udGV4dFJlZiBjb250ZXh0KQpAQCAtNzQ4
LDEwICs3NDgsMTAgQEAgT3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxPYmplY3RJZGVudGlmaWVy
VHlwZT4+IGdldE9iamVjdElkZW50aWZpZXJGcm9tUHJvcGVydHkKIHsKICAgICBhdXRvIGpzUHJv
cGVydHlWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0VG9VaW50NjQo
anNQcm9wZXJ0eVZhbHVlKTsKICAgICBpZiAoIW51bWJlcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZU9i
amVjdElkZW50aWZpZXI8T2JqZWN0SWRlbnRpZmllclR5cGU+KCpudW1iZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4
IDFmNDRkMjg1NDY4MjJkMDQ1NWE1MjZkMjI2ZjVjNmQ3ZmQyZDU3MTEuLmUyNTUxMDEwNmU5MTA4
YTc4MWM2NDgzMmZlZGY4MjFhMmNiNTc2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0xMjMsMzIgKzEyMywzMiBAQCBzdGF0
aWMgT3B0aW9uYWw8UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPj4gZGVjb2RlVGltaW5nRnVuY3Rpb24o
SVBDOjpEZWNvZGVyJiBkZWNvZAogewogICAgIFRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlv
blR5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVm
UHRyPFRpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbjsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbjoKICAgICAgICAgdGltaW5n
RnVuY3Rpb24gPSBMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoKnN0YXRpY19jYXN0PExpbmVhclRpbWluZ0Z1bmN0aW9uKj4odGltaW5n
RnVuY3Rpb24uZ2V0KCkpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
VGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb246CiAgICAgICAgIHRpbWluZ0Z1bmN0
aW9uID0gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoKnN0YXRpY19jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24qPih0
aW1pbmdGdW5jdGlvbi5nZXQoKSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rp
b24gPSBTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZSgqc3RhdGljX2Nhc3Q8U3RlcHNUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9u
LmdldCgpKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbWluZ0Z1
bmN0aW9uOjpTcHJpbmdGdW5jdGlvbjoKICAgICAgICAgdGltaW5nRnVuY3Rpb24gPSBTcHJpbmdU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0
YXRpY19jYXN0PFNwcmluZ1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24uZ2V0KCkpKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE5NCw2NyArMTk0LDY3IEBA
IE9wdGlvbmFsPFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+IFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OlByb3BlCiB7CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6UHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVy
dGllcy5rZXlQYXRoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5h
bmltYXRpb25UeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5i
ZWdpblRpbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmR1cmF0
aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy50aW1lT2Zmc2V0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5yZXBlYXRDb3VudCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMuc3BlZWQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmZpbGxNb2RlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy52YWx1ZUZ1bmN0aW9uKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJv
b2wgaGFzVGltaW5nRnVuY3Rpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUaW1pbmdG
dW5jdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzVGltaW5nRnVuY3Rpb24pIHsKICAgICAgICAgaWYg
KGF1dG8gdGltaW5nRnVuY3Rpb24gPSBkZWNvZGVUaW1pbmdGdW5jdGlvbihkZWNvZGVyKSkKICAg
ICAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb24gPSBXVEZNb3ZlKCp0aW1pbmdGdW5j
dGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvcGVydGllcy5hdXRvUmV2ZXJzZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwcm9wZXJ0aWVzLnJlbW92ZWRPbkNvbXBsZXRpb24pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmFkZGl0aXZlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocHJvcGVydGllcy5yZXZlcnNlVGltaW5nRnVuY3Rpb25zKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5oYXNFeHBsaWNpdEJlZ2luVGltZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5VmFsdWVzKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5rZXlUaW1lcykpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50
NjRfdCBudW1UaW1pbmdGdW5jdGlvbnM7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1UaW1p
bmdGdW5jdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChudW1UaW1pbmdGdW5jdGlvbnMpIHsKICAg
ICAgICAgcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1UaW1pbmdGdW5jdGlvbnMpOwpAQCAtMjYzLDEyICsyNjMsMTIgQEAgT3B0aW9uYWw8UGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVydGllcz4gUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6UHJvcGUKICAgICAgICAgICAgIGlmIChhdXRvIHRpbWluZ0Z1bmN0aW9uID0gZGVjb2RlVGlt
aW5nRnVuY3Rpb24oZGVjb2RlcikpCiAgICAgICAgICAgICAgICAgcHJvcGVydGllcy50aW1pbmdG
dW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKnRpbWluZ0Z1bmN0aW9uKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVzLmFuaW1hdGlvbnMpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIFdURk1vdmUocHJvcGVydGllcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXggZWNkYTYzYjBjMjJkZWZhOGU3ZWJh
MTgxODgwOTZmMTQ1ODkzMDMxYy4uMmQ4ZWQ1N2ZlYjA5YzY4NjdmNTgyZTI4MjUxOWE3MTQ0YTNl
YWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5tbQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuCiAv
LyBOb3RpZmljYXRpb24gZnJvbSB0aGUgVUkgcHJvY2VzcyB0aGF0IHdlIHNjcm9sbGVkLgogdm9p
ZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9k
ZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgYm9vbCBzeW5jTGF5ZXJQb3NpdGlvbikKIHsKLSAgICBhcHBseVNjcm9sbFVwZGF0ZShub2Rl
SUQsIHNjcm9sbFBvc2l0aW9uLCBXVEY6Om51bGxvcHQsIFNjcm9sbFR5cGU6OlVzZXIsIHN5bmNM
YXllclBvc2l0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgYXBwbHlTY3JvbGxVcGRhdGUobm9k
ZUlELCBzY3JvbGxQb3NpdGlvbiwgc3RkOjpudWxsb3B0LCBTY3JvbGxUeXBlOjpVc2VyLCBzeW5j
TGF5ZXJQb3NpdGlvbiA/IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3Jv
bGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOwogfQogCiB2b2lkIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFNjcm9s
bGluZ05vZGVJRCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2Fs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAppbmRleCBlMTYwY2VhNjAxMTMwMzAx
ODQzZmJkMDJlMWUzYmM5MTJjOWE2ZmIxLi5kNmEwMDdmZWYwZmNmN2VhY2ViMmExYWVjYjhkY2Iz
MzNmNjg2MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIE9wdGlvbmFsPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IFZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OmNvbXB1dGVUZXh0TGVnCiAKICAgICBhdXRvIGRvY3VtZW50ID0g
bWFrZVJlZlB0cihtX3dlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCA5NzdkNjk5YzFkMWQ5
Y2NmOTIwNjM0N2M4MDY2MmMxNzRmNTI4Zjc5Li5lYTM1ZTQ5ZWZiNTI0MmViNzcxMDQxMzZhMjZh
ZjM2MTNkYzFkYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNTIsNyArMTUyLDcg
QEAgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJiBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6Y2FjaGVMaXN0Q291bnRzSWZOZWNlc3MKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6Y2xlYXJDYWNoZWRMaXN0Q291bnRzKCkKIHsKLSAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlz
dENvdW50cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2NhY2hlZEJhY2tGb3J3YXJkTGlzdENvdW50
cyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y2xv
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5jcHAKaW5kZXggMjVkOWVmYzUzOWM4YjdiMjFhNzA0MWJjZjE4MjMwODY4ZjhjYzc3Ni4uNGU1
NDU5NTFmODJmMjQ5YzFjZTcxNjhiZTdlZjc4MGRlNDFkZGM2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMzgsOCArMjM4
LDggQEAgYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRp
ZgogCi0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBt
YWtlT3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdl
KCkgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6
bnVsbG9wdDsKKyAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFt
ZSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IHN0ZDo6bnVsbG9w
dDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2Vi
RnJhbWUtPnBhZ2UoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVu
dGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywgc2hvdWxk
UmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcod2ViRnJhbWUpKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVz
KSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxMzQyMjkzMzM1
MjY2ZGMyOTkwOWUwNjFhOTYxODcwNjFmMjNjZmRlLi5iNzJmZDkyMDY2NTdjZTdiZjI0NzgyNGI3
NGMxN2IyNjBkOTYwMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgRnJhbWVJbmZvRGF0YSBXZWJGcmFtZTo6
aW5mbygpIGNvbnN0CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCh1cmwoKSksCiAgICAgICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKG1fY29yZUZyYW1lLmdldCgpKSwKICAgICAgICAg
bV9mcmFtZUlELAotICAgICAgICBwYXJlbnQgPyBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IHsgcGFyZW50LT5mcmFtZUlEKCkgfSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgcGFy
ZW50ID8gT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB7IHBhcmVudC0+ZnJhbWVJ
RCgpIH0gOiBzdGQ6Om51bGxvcHQsCiAgICAgfTsKIAogICAgIHJldHVybiBpbmZvOwpAQCAtMjQz
LDcgKzI0Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpCiAg
ICAgbV9wb2xpY3lEb3dubG9hZElEID0geyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7
CiAgICAgYXV0byBpZGVudGlmaWVyID0gbV9wb2xpY3lJZGVudGlmaWVyOwotICAgIG1fcG9saWN5
SWRlbnRpZmllciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5
RnVuY3Rpb24sIG51bGxwdHIpKQogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgKmlkZW50aWZpZXIpOwogICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9u
ID0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm87CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJG
cmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGlj
eURlY2lzaW9uJiYgcG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKHBvbGljeURlY2lz
aW9uLmlkZW50aWZpZXIgPT0gbV9wb2xpY3lJZGVudGlmaWVyKTsKLSAgICBtX3BvbGljeUlkZW50
aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9wb2xpY3lJZGVudGlmaWVyID0gc3RkOjpudWxs
b3B0OwogCiAgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xp
Y3lGdW5jdGlvbik7CiAgICAgYm9vbCBmb3JOYXZpZ2F0aW9uQWN0aW9uID0gbV9wb2xpY3lGdW5j
dGlvbkZvck5hdmlnYXRpb25BY3Rpb24gPT0gRm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzOwpAQCAt
MjkzLDcgKzI5Myw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93
bmxvYWRJRCA9ICpzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0
KTsKKyAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURv
d25sb2FkSUQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsK
ICAgICBpc0FwcEJvdW5kID0gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwpAQCAtMzA2
LDcgKzMwNiw3IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcG9saWN5RG93bmxv
YWRJRCA9ICpzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5RG93bmxvYWRJRCwgV1RGOjpudWxsb3B0KTsK
KyAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25s
b2FkSUQsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBTdWJyZXNvdXJjZUxvYWRlciogbWFpblJlc291
cmNlTG9hZGVyID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRhYTM1M2Y1
MGVkODRkNGMxMDBkOGMwMGQ0YWU2N2EyYTFlMjI4YTkuLjBkMmZkODIxZDRkZDJhMzA5ZWY0ODY1
ZjQyNTU2YjUzY2I1YzRlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBXZWJQYWdlOjp+V2ViUGFnZSgpCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGZvciAoYXV0byYgY29tcGxldGlv
bkhhbmRsZXIgOiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLnZhbHVlcygp
KSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzcxNyw3ICszNzE3LDcgQEAgdm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXIKIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxD
b250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0
V29ybGQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnZhbHVlT3IoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzLCAicnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBS
SXU2NCwgZnJhbWVJRC52YWx1ZV9vcihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJ
bnQ2NCgpKTsKICAgICBhdXRvIHdlYkZyYW1lID0gbWFrZVJlZlB0cihmcmFtZUlEID8gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJm1haW5XZWJGcmFtZSgpKTsK
IAogICAgIGlmIChhdXRvKiBuZXdXb3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRD
b250ZW50V29ybGQod29ybGREYXRhKSkgewpAQCAtNDA4Nyw3ICs0MDg3LDcgQEAgdm9pZCBXZWJQ
YWdlOjp3aWxsQ29tbWl0TGF5ZXJUcmVlKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiBsYXll
clRyYW5zYWN0aW9uKQogICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0QWxsb3dzVXNlclNjYWxpbmco
YWxsb3dzVXNlclNjYWxpbmcoKSk7CiAgICAgaWYgKG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGVJRCkgewogICAgICAgICBsYXllclRyYW5zYWN0aW9uLnNldER5bmFtaWNWaWV3cG9y
dFNpemVVcGRhdGVJRCgqbV9wZW5kaW5nRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEKTsKLSAg
ICAgICAgbV9wZW5kaW5nRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZUlEID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX3BlbmRpbmdEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogICAgIGlmIChtX2xhc3RUcmFuc2FjdGlvblBhZ2VTY2FsZUZhY3RvciAh
PSBsYXllclRyYW5zYWN0aW9uLnBhZ2VTY2FsZUZhY3RvcigpKSB7CiAgICAgICAgIG1fbGFzdFRy
YW5zYWN0aW9uUGFnZVNjYWxlRmFjdG9yID0gbGF5ZXJUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0
b3IoKTsKQEAgLTQyNzMsNyArNDI3Myw3IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlciogV2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
biBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPiBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsg
fSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKHN0ZDo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDMwNCw3ICs0MzA0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKIHZvaWQgV2ViUGFnZTo6
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNl
LCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERyYWdIYW5kbGluZ01l
dGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTQzMjEsNyArNDMyMSw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiAgICAgfQog
ICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51
bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHN0ZDo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwg
MCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdD
b250cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbjogewpAQCAtNTUxOCwxOCArNTUx
OCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0
IFN0cmluZyYgcmVzdWx0KQogdm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlRG93bihpbnQgYnV0
dG9uLCBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwgaW50IGNsaWNrQ291bnQsIFdLRXZlbnRN
b2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1lKQogewogICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFdLRXZlbnRNb2RpZmllcnMpID49IHNpemVvZihXZWJFdmVudDo6TW9kaWZpZXIpLCAi
V0tFdmVudE1vZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgc2l6
ZSBvZiBXZWJFdmVudDo6TW9kaWZpZXIiKTsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQo
V2ViTW91c2VFdmVudDo6TW91c2VEb3duLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0
b24+KGJ1dHRvbiksIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwg
T3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwg
V2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIFdURjo6bnVsbG9w
dCk7CisgICAgbW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93
biwgc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlv
biwgcG9zaXRpb24sIDAsIDAsIDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9k
aWZpZXI+Ojpmcm9tUmF3KG1vZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywg
V2ViTW91c2VFdmVudDo6Tm9UYXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OnNpbXVsYXRlTW91c2VVcChpbnQgYnV0dG9uLCBXZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbiwg
aW50IGNsaWNrQ291bnQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXYWxsVGltZSB0aW1l
KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLRXZlbnRNb2RpZmllcnMpID49IHNpemVv
ZihXZWJFdmVudDo6TW9kaWZpZXIpLCAiV0tFdmVudE1vZGlmaWVycyBtdXN0IGJlIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byB0aGUgc2l6ZSBvZiBXZWJFdmVudDo6TW9kaWZpZXIiKTsKLSAgICBt
b3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VVcCwgc3RhdGljX2Nh
c3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24s
IDAsIDAsIDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9t
UmF3KG1vZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVu
dDo6Tm9UYXApLCBXVEY6Om51bGxvcHQpOworICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChX
ZWJNb3VzZUV2ZW50OjpNb3VzZVVwLCBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2ZW50OjpCdXR0b24+
KGJ1dHRvbiksIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgY2xpY2tDb3VudCwgT3B0
aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj46OmZyb21SYXcobW9kaWZpZXJzKSwgdGltZSwgV2Vi
Q29yZTo6Rm9yY2VBdENsaWNrLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIHN0ZDo6bnVsbG9wdCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2ltdWxhdGVNb3VzZU1vdGlvbihXZWJDb3JlOjpJbnRQb2lu
dCBwb3NpdGlvbiwgV2FsbFRpbWUgdGltZSkKIHsKLSAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZl
bnQoV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlLCBXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgMCwg
cG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCAwLCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlm
aWVyPiB7IH0sIHRpbWUsIDAsIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgV1RGOjpudWxsb3B0KTsK
KyAgICBtb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VNb3ZlLCBX
ZWJNb3VzZUV2ZW50OjpOb0J1dHRvbiwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCAw
LCBPcHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPiB7IH0sIHRpbWUsIDAsIFdlYk1vdXNlRXZl
bnQ6Ok5vVGFwKSwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRDb21wb3Np
dGlvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgdWludDY0X3Qg
ZnJvbSwgdWludDY0X3QgbGVuZ3RoLCBib29sIHN1cHByZXNzVW5kZXJsaW5lLCBjb25zdCBWZWN0
b3I8Q29tcG9zaXRpb25IaWdobGlnaHQ+JiBoaWdobGlnaHRzKQpAQCAtNjMwMCw3ICs2MzAwLDcg
QEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX3Vz
ZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yID0gZmFsc2U7CiAgICAgbV9lc3RpbWF0ZWRMYXRl
bmN5ID0gU2Vjb25kcygxLjAgLyA2MCk7CiAgICAgbV9zaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0
aW9uQWZ0ZXJJbnNlcnRpb24gPSB0cnVlOwotICAgIG1fbGFzdExheWVyVHJlZVRyYW5zYWN0aW9u
SWRBbmRQYWdlU2NhbGVCZWZvcmVTY2FsaW5nUGFnZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xh
c3RMYXllclRyZWVUcmFuc2FjdGlvbklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2UgPSBz
dGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBFdmVudERp
c3BhdGNoZXI6OlRvdWNoRXZlbnRRdWV1ZSBxdWV1ZWRFdmVudHM7CkBAIC02NDE0LDcgKzY0MTQs
NyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6Y3VycmVudFNlbGVjdGlvbkFzUmFu
Z2UoKQogewogICAgIGF1dG8qIGZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fcGFnZS5nZXQo
KSk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCku
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKIH0KQEAgLTY1OTUsNyArNjU5NSw3IEBA
IFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUm
IGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmIChtX3BlbmRpbmdXZWJzaXRlUG9s
aWNpZXMpIHsKICAgICAgICAgICAgIG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJl
Y2VudE5hdmlnYXRpb24gPSBtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMtPmFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OwogICAgICAgICAgICAgV2Vic2l0ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3Vt
ZW50TG9hZGVyKFdURk1vdmUoKm1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyksIGRvY3VtZW50TG9h
ZGVyKTsKLSAgICAgICAgICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIG1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNjcxMiw3ICs2NzEyLDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZW1vdmVBbGxVc2VyQ29udGVudCgpCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlSW50cmluc2ljQ29u
dGVudFNpemVJZk5lZWRlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewotICAgIG1f
cGVuZGluZ0ludHJpbnNpY0NvbnRlbnRTaXplID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGlu
Z0ludHJpbnNpY0NvbnRlbnRTaXplID0gc3RkOjpudWxsb3B0OwogICAgIGlmICghbWluaW11bVNp
emVGb3JBdXRvTGF5b3V0KCkud2lkdGgoKSAmJiAhc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11
bVNpemUoKS53aWR0aCgpICYmICFzaXplVG9Db250ZW50QXV0b1NpemVNYXhpbXVtU2l6ZSgpLmhl
aWdodCgpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1haW5GcmFtZVZpZXcoKSk7CkBA
IC02NzI2LDcgKzY3MjYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUludHJpbnNpY0NvbnRlbnRT
aXplSWZOZWVkZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIAogdm9pZCBXZWJQYWdl
OjpmbHVzaFBlbmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZVVwZGF0ZSgpCiB7Ci0gICAgaWYgKGF1
dG8gcGVuZGluZ1NpemUgPSBzdGQ6OmV4Y2hhbmdlKG1fcGVuZGluZ0ludHJpbnNpY0NvbnRlbnRT
aXplLCBXVEY6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIHBlbmRpbmdTaXplID0gc3RkOjpleGNo
YW5nZShtX3BlbmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZSwgc3RkOjpudWxsb3B0KSkKICAgICAg
ICAgdXBkYXRlSW50cmluc2ljQ29udGVudFNpemVJZk5lZWRlZCgqcGVuZGluZ1NpemUpOwogfQog
CkBAIC03MTMxLDExICs3MTMxLDExIEBAIHZvaWQgV2ViUGFnZTo6Z2V0QXBwbGljYXRpb25NYW5p
ZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvCiAgICAgRG9j
dW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1
bWVudCgpOwogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1bWVudCA/
IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFsb2FkZXIp
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAogICAgIGF1dG8gY29y
ZUNhbGxiYWNrSUQgPSBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CiAgICAgaWYg
KCFjb3JlQ2FsbGJhY2tJRCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6
bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogCiAgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC5hZGQoY29yZUNh
bGxiYWNrSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KQEAgLTcxOTEsMTEgKzcx
OTEsMTEgQEAgT3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IFdlYlBhZ2U6OmNvbnRl
eHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQmIGUKIHsKICAgICBhdXRvJiBkb2N1bWVudCA9
IGVsZW1lbnQuZG9jdW1lbnQoKTsKICAgICBpZiAoIW1fcGFnZSB8fCBkb2N1bWVudC5wYWdlKCkg
IT0gbV9wYWdlLmdldCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCB7IGVsZW1lbnQuY2xpZW50UmVjdCgpLCBtX2lkZW50aWZpZXIsIGRvY3VtZW50LmlkZW50aWZp
ZXIoKSwgZG9jdW1lbnQuaWRlbnRpZmllckZvckVsZW1lbnQoZWxlbWVudCkgfTsKIH0KQEAgLTcz
ODksNyArNzM4OSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEltYWdlRXh0cmFjdGlvbihXZWJD
b3JlOjpFbGVtZW50JiBlbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlCiAgICAgfQogCiAgICAgYXV0
byYgcmVuZGVySW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKTsKLSAgICBh
dXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcChyZW5kZXJJbWFnZSwgV1RGOjpudWxs
b3B0LCBBbGxvd0FuaW1hdGVkSW1hZ2VzOjpObyk7CisgICAgYXV0byBiaXRtYXAgPSBjcmVhdGVT
aGFyZWFibGVCaXRtYXAocmVuZGVySW1hZ2UsIHN0ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZElt
YWdlczo6Tm8pOwogICAgIGlmICghYml0bWFwKSB7CiAgICAgICAgIGlmIChjb21wbGV0aW9uKQog
ICAgICAgICAgICAgY29tcGxldGlvbih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmgKaW5kZXggYTNlNjg2MjZiYjliNzY5Zjg2MDk2
OTViMDk3YmUwNzU3YzJhM2IxOC4uZGJlM2U4YmI2MTA4MWVlM2I0NzNlMzVkZTcyYWZlNGEzNzNl
NzQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
T3ZlcmxheS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFNjcm9sbEZyYW1lKFdlYlBhZ2VPdmVybGF5JiwgV2ViRnJhbWUqKSB7IH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICAgICAgdmlydHVhbCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rp
b25Db250ZXh0Rm9yUmVzdWx0QXRQb2ludChXZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0
UG9pbnQpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgICAgICB2aXJ0dWFsIE9wdGlvbmFs
PEFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KFdlYlBhZ2VPdmVy
bGF5JiwgV2ViQ29yZTo6RmxvYXRQb2ludCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYlBhZ2VPdmVybGF5
JikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUkoV2Vi
UGFnZU92ZXJsYXkmKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFEZXRlY3RvcnNEaWRI
aWRlVUkoV2ViUGFnZU92ZXJsYXkmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKaW5kZXggMzczOTNlMTdhNDE3YThm
YTdlNTljZmQ1NTE4YTRhYWQ2ZjRjZTIxMC4uMzc4M2I0N2EwMzQ0MDc0YWI3Zjc5NzgwMTkwODcx
ZDMwODk4ZDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z2xpYi9XZWJQYWdlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0
KSBjb25zdAogc3RhdGljIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IGlucHV0TWV0aG9kU2F0
ZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQgfHwgIWVs
ZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJbnB1dE1ldGhvZFN0YXRl
IHN0YXRlOwogICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggZmQ5ZmI4YjRiMDMyZGM3MjY3MzE5ZmM0ZmIwODliYjFhZjM3YzcyZS4uNmI3OWQ1YWEwZjQ1
NjY5NDk4MzUwOThlYjg4MzNmYWYwZTYyMWE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTEwMTEsMTMgKzEwMTEsMTMg
QEAgdm9pZCBXZWJQYWdlOjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVj
dG9yPEludFNpemU+JiBpbWFnZVNpemVzLAogICAgIGF1dG8gaW1hZ2VQbGFjZWhvbGRlclJhbmdl
ID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2Uo
KTsKICAgICBpZiAocGxhY2Vob2xkZXJSZWN0cy5zaXplKCkgIT0gaW1hZ2VTaXplcy5zaXplKCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5zZXJ0IGRy
b3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzOiBwbGFjZWhvbGRlciByZWN0IGNvdW50ICgldHUpIGRv
ZXMgbm90IG1hdGNoIGltYWdlIHNpemUgY291bnQgKCV0dSkuIiwgcGxhY2Vob2xkZXJSZWN0cy5z
aXplKCksIGltYWdlU2l6ZXMuc2l6ZSgpKTsKLSAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxv
cHQpOworICAgICAgICByZXBseSh7IH0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAoIWltYWdlUGxhY2Vob2xkZXJSYW5nZSkgewogICAgICAgICBSRUxF
QVNFX0xPRyhEcmFnQW5kRHJvcCwgIkZhaWxlZCB0byBpbnNlcnQgZHJvcHBlZCBpbWFnZSBwbGFj
ZWhvbGRlcnM6IG5vIGltYWdlIHBsYWNlaG9sZGVyIHJhbmdlLiIpOwotICAgICAgICByZXBseSh7
IH0sIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJlcGx5KHsgfSwgc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBXZWJQYWdl
OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPEludFNpemU+JiBp
bWFnZVNpemVzLAogCiB2b2lkIFdlYlBhZ2U6OmRpZENvbmNsdWRlRHJvcCgpCiB7Ci0gICAgbV9y
YW5nZUZvckRyb3BTbmFwc2hvdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3JhbmdlRm9yRHJvcFNu
YXBzaG90ID0gc3RkOjpudWxsb3B0OwogICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9w
U25hcHNob3QuY2xlYXIoKTsKIH0KIApAQCAtMTA4NSw3ICsxMDg1LDcgQEAgdm9pZCBXZWJQYWdl
Ojpjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKQogICAgICAgICBUZXh0SW5kaWNhdG9y
T3B0aW9uOjpVc2VTZWxlY3Rpb25SZWN0Rm9yU2l6aW5nLAogICAgICAgICBUZXh0SW5kaWNhdG9y
T3B0aW9uOjpJbmNsdWRlU25hcHNob3RXaXRoU2VsZWN0aW9uSGlnaGxpZ2h0CiAgICAgfTsKLSAg
ICBpZiAoYXV0byByYW5nZSA9IHN0ZDo6ZXhjaGFuZ2UobV9yYW5nZUZvckRyb3BTbmFwc2hvdCwg
V1RGOjpudWxsb3B0KSkgeworICAgIGlmIChhdXRvIHJhbmdlID0gc3RkOjpleGNoYW5nZShtX3Jh
bmdlRm9yRHJvcFNuYXBzaG90LCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIGlmIChhdXRvIHRl
eHRJbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFuZ2UoKnJhbmdlLCBkZWZh
dWx0VGV4dEluZGljYXRvck9wdGlvbnNGb3JFZGl0RHJhZywgVGV4dEluZGljYXRvclByZXNlbnRh
dGlvblRyYW5zaXRpb246Ok5vbmUsIHsgfSkpCiAgICAgICAgICAgICB0ZXh0SW5kaWNhdG9yRGF0
YSA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICAgICB9CkBAIC0xNDgxLDcgKzE0ODEsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgR2Vz
dHVyZVR5cGUgZ2VzdHVyZVR5cGUsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkVuZGVkOgogICAgICAgICAgICAgY2FzZSBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICAgICAgbV9zdGFy
dGluZ0dlc3R1cmVSYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0
aW5nR2VzdHVyZVJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAg
ICAgICBjYXNlIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlOgpAQCAtMTQ5OSw3ICsx
NDk5LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYg
cG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICAgICAgaWYgKHJhbmdlKQog
ICAgICAgICAgICAgICAgIG1fY3VycmVudFdvcmRSYW5nZSA9IHsgeyAqcmFuZ2UgfSB9OwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fY3VycmVudFdvcmRSYW5nZSA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2UgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0
YXRlOjpDaGFuZ2VkOgogICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRXb3JkUmFuZ2UpCkBAIC0x
NTEyLDcgKzE1MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IElu
dFBvaW50JiBwb2ludCwgR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKICAgICAgICAg
Y2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQ6Ci0gICAgICAgICAgICBtX2N1
cnJlbnRXb3JkUmFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2N1cnJlbnRXb3Jk
UmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpGYWlsZWQ6CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZTo6UG9zc2libGU6CkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUm
IGZyYW1lLCBjbwogCiAgICAgYXV0byB0YXJnZXROb2RlID0gbWFrZVJlZlB0cihoaXRUZXN0LnRh
cmdldE5vZGUoKSk7CiAgICAgaWYgKHRhcmdldE5vZGUgJiYgIUhUTUxFbGVtZW50OjpzaG91bGRF
eHRlbmRTZWxlY3Rpb25Ub1RhcmdldE5vZGUoKnRhcmdldE5vZGUsIGV4aXN0aW5nU2VsZWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZTsKICAgICBWaXNpYmxlUG9z
aXRpb24gcmVzdWx0OwpAQCAtMTYzNCw3ICsxNjM0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25z
dAogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIHNhbWVEaXJlY3Rpb24pKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgYSB3b3JkIGJvdW5kYXJ5LiBMZWF2ZSBzZWxlY3Rpb24gd2hlcmUgaXQgaXMuCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5KGV4dGVudCwgVGV4dEdyYW51bGFy
aXR5OjpXb3JkR3JhbnVsYXJpdHksIG9wcG9zaXRlRGlyZWN0aW9uKSkgewpAQCAtMTY3MSw3ICsx
NjcxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5
Rm9yUG9zaXRpb24oRnJhbWUqIGZyYW1lLCBjb25zdAogICAgIGlmIChleHRlbnQuaXNOdWxsKCkg
fHwgZXh0ZW50ID09IGJhc2UpCiAgICAgICAgIGV4dGVudCA9IHdvcmRCb3VuZGFyeTsKICAgICBp
ZiAoZXh0ZW50LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCEoYmFzZSA8IGV4dGVudCkpCiAgICAg
ICAgIHN0ZDo6c3dhcChiYXNlLCBleHRlbnQpOwpAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgSW50UmVj
dCBXZWJQYWdlOjpyb290Vmlld0ludGVyYWN0aW9uQm91bmRzRm9yRWxlbWVudChjb25zdCBFbGVt
ZW50JiBlbGVtZW50KQogCiB2b2lkIFdlYlBhZ2U6OmNsZWFyU2VsZWN0aW9uKCkKIHsKLSAgICBt
X3N0YXJ0aW5nR2VzdHVyZVJhbmdlID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhcnRpbmdHZXN0
dXJlUmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5jbGVhcigpOwogfQogCkBAIC0yMDc0LDEx
ICsyMDc0LDExIEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VOZWFyUG9zaXRp
b25NYXRjaGVzVGV4dChjb25zdCBWaXNpYmxlUG9zaXRpb24mCiB7CiAgICAgYXV0byBsaXZlUmFu
Z2UgPSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIGlmICghbGl2ZVJhbmdlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IFNpbXBsZVJhbmdlIHJhbmdlIHsgKmxpdmVSYW5nZSB9OwogICAgIGF1dG8gYm91bmRhcnlQb2lu
dCA9IG1ha2VCb3VuZGFyeVBvaW50KHBvc2l0aW9uKTsKICAgICBpZiAoIWJvdW5kYXJ5UG9pbnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIGZpbmRDbG9zZXN0UGxhaW5UZXh0KHJhbmdlLCBtYXRjaFRleHQsIHsg
fSwgY2hhcmFjdGVyQ291bnQoeyByYW5nZS5zdGFydCwgKmJvdW5kYXJ5UG9pbnQgfSwgVGV4dEl0
ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpKTsKIH0KIApA
QCAtMjE2OCwyNSArMjE2OCwyNSBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gV2ViUGFnZTo6cmFu
Z2VGb3JHcmFudWxhcml0eUF0UG9pbnQoRnJhbWUmIGZyYW1lLCBjb25zdCBXZQogICAgIGNhc2Ug
VGV4dEdyYW51bGFyaXR5OjpEb2N1bWVudEdyYW51bGFyaXR5OgogICAgICAgICAvLyBGSVhNRTog
TWFrZXMgbm8gc2Vuc2UgdGhhdCB0aGlzIG11dGF0ZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGFu
ZCByZXR1cm5zIG51bGwuCiAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdEFsbCgpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lR3JhbnVsYXJpdHk6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpMaW5lQm91
bmRhcnk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdy
YW51bGFyaXR5OjpTZW50ZW5jZUJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6UGFyYWdyYXBoQm91bmRhcnk6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGV4dEdyYW51bGFyaXR5OjpE
b2N1bWVudEJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVjdElzVG9v
QmlnRm9yU2VsZWN0aW9uKGNvbnN0IEludFJlY3QmIGJsb2NrUmVjdCwgY29uc3QgRnJhbWUmIGZy
YW1lKQpAQCAtMjQ5NCw3ICsyNDk0LDcgQEAgYm9vbCBXZWJQYWdlOjphcHBseUF1dG9jb3JyZWN0
aW9uSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcKICAgICAg
ICAgICAgIHdoaWxlICh0ZXh0Rm9yUmFuZ2UubGVuZ3RoKCkgJiYgdGV4dEZvclJhbmdlLmxlbmd0
aCgpID4gb3JpZ2luYWxUZXh0Lmxlbmd0aCgpICYmIGxvb3BDb3VudCA8IG1heFBvc2l0aW9uc0F0
dGVtcHRzKSB7CiAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5uZXh0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHBvc2l0aW9uID49IGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpCi0gICAgICAgICAgICAgICAgICAg
IHJhbmdlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAgICByYW5nZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJhbmdl
ID0gbWFrZVNpbXBsZVJhbmdlKHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpKTsKICAgICAgICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSBwbGFpblRleHRGb3JD
b250ZXh0KHJhbmdlKTsKQEAgLTI3NjUsMTUgKzI3NjUsMTUgQEAgc3RhdGljIHZvaWQgZGF0YURl
dGVjdG9yTGlua1Bvc2l0aW9uSW5mb3JtYXRpb24oRWxlbWVudCYgZWxlbWVudCwgSW50ZXJhY3Rp
b25JbmYKIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVySW1hZ2UmLCBJbWFnZSY+PiBp
bWFnZVJlbmRlcmVyQW5kSW1hZ2UoRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBpZiAoIWlzPFJl
bmRlckltYWdlPihlbGVtZW50LnJlbmRlcmVyKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcmVuZGVySW1h
Z2UgPSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7CiAgICAgaWYg
KCFyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpIHx8IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCkt
PmVycm9yT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8qIGltYWdlID0gcmVuZGVySW1hZ2UuY2Fj
aGVkSW1hZ2UoKS0+aW1hZ2VGb3JSZW5kZXJlcigmcmVuZGVySW1hZ2UpOwogICAgIGlmICghaW1h
Z2UgfHwgaW1hZ2UtPndpZHRoKCkgPD0gMSB8fCBpbWFnZS0+aGVpZ2h0KCkgPD0gMSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyByZW5kZXJJbWFnZSwgKmltYWdlIH19OwogfQpAQCAtMzE4MCw3ICszMTgw
LDcgQEAgT3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbigpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQo
KTsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+dmlldygpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0
byBmb2N1c2VkRWxlbWVudCA9IG1fZm9jdXNlZEVsZW1lbnQuY29weVJlZigpOwogICAgIGJvb2wg
d2lsbExheW91dCA9IGRvY3VtZW50LT52aWV3KCktPm5lZWRzTGF5b3V0KCk7CkBAIC0zMTg4LDcg
KzMxODgsNyBAQCBPcHRpb25hbDxGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uPiBXZWJQYWdlOjpm
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKCkKIAogICAgIC8vIExheW91dCBtYXkgaGF2ZSBkZXRh
Y2hlZCB0aGUgZG9jdW1lbnQgb3IgY2F1c2VkIGEgY2hhbmdlIG9mIGZvY3VzLgogICAgIGlmICgh
ZG9jdW1lbnQtPnZpZXcoKSB8fCBmb2N1c2VkRWxlbWVudCAhPSBtX2ZvY3VzZWRFbGVtZW50KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKHdpbGxMYXlvdXQpCiAgICAgICAgIHNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgp
OwpAQCAtMzQwNiw3ICszNDA2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaWV3cG9ydENvbmZpZ3Vy
YXRpb25WaWV3TGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGRvdWIKICAgICBMT0df
V0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX2lkZW50
aWZpZXIgPDwgIiBzZXRWaWV3cG9ydENvbmZpZ3VyYXRpb25WaWV3TGF5b3V0U2l6ZSAiIDw8IHNp
emUgPDwgIiBzY2FsZUZhY3RvciAiIDw8IHNjYWxlRmFjdG9yIDw8ICIgbWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoICIgPDwgbWluaW11bUVmZmVjdGl2ZURldmljZVdpZHRoKTsKIAogICAgIGF1
dG8gcHJldmlvdXNMYXlvdXRTaXplU2NhbGVGYWN0b3IgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5sYXlvdXRTaXplU2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0
aXZlRGV2aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJU
aGFuVmlld3BvcnQoKSA/IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVm
ZmVjdGl2ZURldmljZVdpZHRoKTsKKyAgICBhdXRvIGNsYW1wZWRNaW5pbXVtRWZmZWN0aXZlRGV2
aWNlID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uaXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmll
d3BvcnQoKSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFsPGRvdWJsZT4obWluaW11bUVmZmVjdGl2
ZURldmljZVdpZHRoKTsKICAgICBpZiAoIW1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldFZpZXdM
YXlvdXRTaXplKHNpemUsIHNjYWxlRmFjdG9yLCBXVEZNb3ZlKGNsYW1wZWRNaW5pbXVtRWZmZWN0
aXZlRGV2aWNlKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQ3OSw3ICszNDc5LDcgQEAgdm9p
ZCBXZWJQYWdlOjpkeW5hbWljVmlld3BvcnRTaXplVXBkYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d0xheW91dFNpemUsIGNvbnN0IFcKIAogICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiV2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZSBzZXR0aW5nIHZp
ZXcgbGF5b3V0IHNpemUgdG8gIiA8PCB2aWV3TGF5b3V0U2l6ZSk7CiAgICAgYm9vbCB2aWV3cG9y
dENoYW5nZWQgPSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRJc0tub3duVG9MYXlPdXRXaWRl
clRoYW5WaWV3cG9ydChmYWxzZSk7Ci0gICAgdmlld3BvcnRDaGFuZ2VkIHw9IG1fdmlld3BvcnRD
b25maWd1cmF0aW9uLnNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplLCBXVEY6Om51bGxv
cHQsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CisgICAgdmlld3BvcnRDaGFuZ2VkIHw9
IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXpl
LCBzdGQ6Om51bGxvcHQsIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CiAgICAgaWYgKHZp
ZXdwb3J0Q2hhbmdlZCkKICAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwog
CkBAIC0zOTI5LDcgKzM5MjksNyBAQCBPcHRpb25hbDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9t
VUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mCiB7CiAgICAgYXV0
byB0cmFuc2FjdGlvbklERm9yTGFzdFNjYWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8ubGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKICAgICBpZiAobV9s
YXN0VHJhbnNhY3Rpb25JRFdpdGhTY2FsZUNoYW5nZSA+IHRyYW5zYWN0aW9uSURGb3JMYXN0U2Nh
bGVGcm9tVUlQcm9jZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZmxvYXQgc2NhbGVGcm9tVUlQcm9jZXNzID0gdmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5zY2FsZSgpOwogICAgIGZsb2F0IGN1cnJlbnRTY2Fs
ZSA9IG1fcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CkBAIC0zOTQzLDcgKzM5NDMsNyBAQCBPcHRp
b25hbDxmbG9hdD4gV2ViUGFnZTo6c2NhbGVGcm9tVUlQcm9jZXNzKGNvbnN0IFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8mCiAgICAgCiAgICAgc2NhbGVGcm9tVUlQcm9jZXNzID0gc3RkOjpt
aW48ZmxvYXQ+KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1heGltdW1TY2FsZSgpLCBzdGQ6Om1h
eDxmbG9hdD4obV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubWluaW11bVNjYWxlKCksIHNjYWxlRnJv
bVVJUHJvY2VzcykpOwogICAgIGlmIChhcmVFc3NlbnRpYWxseUVxdWFsQXNGbG9hdChjdXJyZW50
U2NhbGUsIHNjYWxlRnJvbVVJUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2NhbGVGcm9tVUlQ
cm9jZXNzOwogfQpAQCAtMzk5Miw3ICszOTkyLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kK
ICAgICAgICAgICAgIG1fb2xkZXN0Tm9uU3RhYmxlVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c1Rp
bWVzdGFtcCA9IG9sZGVzdFRpbWVzdGFtcDsKICAgICB9CiAKLSAgICBmbG9hdCBzY2FsZVRvVXNl
ID0gc2NhbGVGcm9tVUlQcm9jZXNzLnZhbHVlT3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7
CisgICAgZmxvYXQgc2NhbGVUb1VzZSA9IHNjYWxlRnJvbVVJUHJvY2Vzcy52YWx1ZV9vcihtX3Bh
Z2UtPnBhZ2VTY2FsZUZhY3RvcigpKTsKICAgICBGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0
ID0gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5leHBvc2VkQ29udGVudFJlY3QoKTsKICAg
ICBGbG9hdFJlY3QgYWRqdXN0ZWRFeHBvc2VkQ29udGVudFJlY3QgPSBhZGp1c3RFeHBvc2VkUmVj
dEZvck5ld1NjYWxlKGV4cG9zZWRDb250ZW50UmVjdCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mby5zY2FsZSgpLCBzY2FsZVRvVXNlKTsKICAgICBtX2RyYXdpbmdBcmVhLT5zZXRFeHBvc2Vk
Q29udGVudFJlY3QoYWRqdXN0ZWRFeHBvc2VkQ29udGVudFJlY3QpOwpAQCAtNDA4MCw3ICs0MDgw
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAgaWYgKHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgIT0gdmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mby51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91
bmRzKCkpCiAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJl
Y3QoTGF5b3V0UmVjdCh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnVub2JzY3VyZWRDb250
ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMoKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBmcmFtZVZpZXcuc2V0VmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3QoV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIGZyYW1lVmlldy5zZXRWaXN1YWxWaWV3cG9ydE92ZXJyaWRlUmVj
dChzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMs
IHN0cmVhbSA8PCAiV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyAtIHNldExheW91
dFZpZXdwb3J0T3ZlcnJpZGVSZWN0ICIgPDwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5s
YXlvdXRWaWV3cG9ydFJlY3QoKSk7CiAgICAgICAgIGZyYW1lVmlldy5zZXRMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdChMYXlvdXRSZWN0KHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8ubGF5
b3V0Vmlld3BvcnRSZWN0KCkpKTsKQEAgLTQyNzksNyArNDI3OSw3IEBAIHZvaWQgV2ViUGFnZTo6
aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoCiAgICAgLy8gSW5zZXJ0aW5nIHRoZSBwbGFjZWhvbGRlciBtYXkgcnVuIEphdmFT
Y3JpcHQsIHdoaWNoIGNhbiBkbyBhbnl0aGluZywgaW5jbHVkaW5nIGZyYW1lIGRlc3RydWN0aW9u
LgogICAgIFJlZjxGcmFtZT4gZnJhbWUgPSBjb3JlUGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBhdXRvIHBsYWNlaG9sZGVyID0gZnJhbWUtPmVkaXRv
cigpLmluc2VydFRleHRQbGFjZWhvbGRlcihzaXplKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihw
bGFjZWhvbGRlciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBXVEY6Om51bGxv
cHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHBsYWNlaG9sZGVyID8gY29udGV4dEZvckVsZW1l
bnQoKnBsYWNlaG9sZGVyKSA6IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVt
b3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcAppbmRleCBiNzAyZDc5MmE5OGY0NzEzYzM5NzAzMGM0ZDhhMGQx
NjExYWNkMDA4Li4xNjRjNGNjM2I2YTNkZTdmYmI2MTA5OTVjMTU4ZGExODg1NGI5MTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvRGlzcGxheVJlZnJl
c2hNb25pdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmNwcApAQCAtNzIsNyArNzIsNyBAQCBib29sIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYzo6c3RhcnROb3RpZmljYXRpb25NZWNoYW5pc20oKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3Ry
ZWFtIDw8ICJbV2ViXSBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnJlcXVlc3RSZWZyZXNoQ2Fs
bGJhY2sgZm9yIGRpc3BsYXkgIiA8PCBkaXNwbGF5SUQoKSA8PCAiIC0gc3RhcnRpbmciKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlN0YXJ0RGlzcGxheUxpbmsobV9vYnNlcnZlcklE
LCBkaXNwbGF5SUQoKSwgbWF4Q2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKCkudmFsdWVP
cihGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpTdGFydERpc3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCksIG1heENs
aWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCgpLnZhbHVlX29yKEZ1bGxTcGVlZEZyYW1lc1Bl
clNlY29uZCkpLCAwKTsKICAgICBpZiAoIW1fcnVuTG9vcE9ic2VydmVyKSB7CiAgICAgICAgIC8v
IFRoZSBSdW5Mb29wT2JzZXJ2ZXIgcmVwZWF0cy4KICAgICAgICAgbV9ydW5Mb29wT2JzZXJ2ZXIg
PSBtYWtlVW5pcXVlPFJ1bkxvb3BPYnNlcnZlcj4oa0NGUnVuTG9vcEVudHJ5LCBbdGhpc10oKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCmluZGV4IDBhYzhiODc2MDczYzhjYTM5MWNmNjRjYWQ4MjcwMmUxNzY5NmY1ZTAuLjU3OWM0
ZTg5NDkxZDJhYTQ1ZmZlZWUwNDlhYjBlMjU2NDEyMTljYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC05NjAsNyArOTYw
LDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxXZWJDb3JlOjpTaW1wbGVSYW5nZSwgTlNEaWN0aW9u
YXJ5ICo+PiBXZWJQYWdlOjpsb29rdXBUZXh0QXQKIHsKICAgICBhdXRvJiBtYWluRnJhbWUgPSBj
b3JlUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZS52aWV3KCkgfHwgIW1h
aW5GcmFtZS52aWV3KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEaWN0aW9uYXJ5
TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChtYWluRnJhbWUuZXZlbnRIYW5kbGVyKCkuaGl0
VGVzdFJlc3VsdEF0UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29u
dGVudHMocm91bmRlZEludFBvaW50KGxvY2F0aW9uSW5WaWV3Q29vcmRpbmF0ZXMpKSwgewogICAg
ICAgICBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAKaW5kZXggMzkxMzgzZDM2ZWU1ZjhlMGViYjA3ZWVlMjcyNmVjMjQ5ZDNkNTZjNC4uYTE0MjBh
MThlYTZiYThiNWU0YTQ1MzA4ZDE3NDk3Y2YyMmU1MzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcApAQCAtNTksMTIgKzU5LDEyIEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKElkCiAKIFJlZjxT
dG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUxvY2FsU3Rv
cmFnZU5hbWVzcGFjZShJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZTo6TG9jYWwsIGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIG51bGxwdHIsIHF1
b3RhSW5CeXRlcykpOwogfQogCiBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVp
bnQ2NF90IHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50TG9jYWwsIGlkZW50aWZpZXIsIFdU
Rjo6bnVsbG9wdCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6VHJhbnNpZW50
TG9jYWwsIGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgJnRvcExldmVsT3JpZ2luLCBxdW90YUlu
Qnl0ZXMpKTsKIH0KIAogU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJbXBs
KFdlYkNvcmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBJZGVudGlmaWVyIHN0b3JhZ2VOYW1l
c3BhY2VJRCwgY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiBwYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRvcExldmVsT3JpZ2luLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUwYjQyZTU2ODJhNGQ0NzAxZjk4MzdlNzI0NGU4
ODM0NTg2NmQ5OTkuLmI2MjFhNjJiYjU3YTJjMmI3MTNjYzUzYTZhOTY5NjZjZmNjZDM1NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZp
ZXIKICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9F
bGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZU9y
KFdlYkNvcmU6OkZsb2F0U2l6ZSgpKSk7CisgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxz
Y3JlZW5PclBpY3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUo
KSkpOwogCiAgICAgaWYgKGludGVyZmFjZS0+dGFyZ2V0SXNGdWxsc2NyZWVuKCkgfHwgaW50ZXJm
YWNlLT5mdWxsc2NyZWVuU3RhbmRieSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCA3MDIyMjdj
MTkyYzMwNDEyOTUzZWYxNGY3ZjYxMmU0ZTM0OWE5YjMwLi40MThhNGE1NzMxOTlmZTc3Yjc4YmZj
ZWIzNDRlNDVjNDgzOWMzOWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnVwZGF0ZUNQVUxpbWl0KCkKICAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFw
LnZhbHVlcygpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZ2VDUFVMaW1pdCA9IHBhZ2UtPmNwdUxp
bWl0KCk7CiAgICAgICAgICAgICBpZiAoIXBhZ2VDUFVMaW1pdCkgewotICAgICAgICAgICAgICAg
IGNwdUxpbWl0ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIGNwdUxpbWl0ID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFjcHVMaW1pdCB8fCBwYWdlQ1BVTGltaXQgPiBjcHVMaW1pdC52YWx1ZSgpKQpA
QCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRl
KENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAoIW1fY3B1TGltaXQpIHsKICAgICAgICAgaWYgKG1fY3B1TW9uaXRvcikKLSAgICAgICAgICAg
IG1fY3B1TW9uaXRvci0+c2V0Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIG1f
Y3B1TW9uaXRvci0+c2V0Q1BVTGltaXQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9u
aXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24gcmVhc29uKQogICAgIH0gZWxzZSBpZiAo
cmVhc29uID09IENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlIYXNDaGFuZ2VkKSB7
CiAgICAgICAgIC8vIElmIHRoZSB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkLCBzdG9wIHRoZSBDUFUg
bW9uaXRvciBiZWZvcmUgc2V0dGluZyBpdHMgbGltaXQuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ug
dGhlIENQVSB1c2FnZSBjYW4gdmFyeSB3aWxkbHkgYmFzZWQgb24gdmlzaWJpbGl0eSBhbmQgd2Ug
d291bGQKICAgICAgICAgLy8gbm90IHdhbnQgdG8gcmVwb3J0IHRoYXQgYSBwcm9jZXNzIGhhcyBl
eGNlZWRlZCBpdHMgYmFja2dyb3VuZCBDUFUgbGltaXQgZXZlbiB0aG91Z2ggbW9zdCBvZiB0aGUg
Q1BVIHRpbWUgd2FzIHVzZWQgd2hpbGUgdGhlIHByb2Nlc3Mgd2FzIHZpc2libGUuCi0gICAgICAg
IG1fY3B1TW9uaXRvci0+c2V0Q1BVTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9jcHVN
b25pdG9yLT5zZXRDUFVMaW1pdChzdGQ6Om51bGxvcHQpOwogICAgIH0KICAgICBtX2NwdU1vbml0
b3ItPnNldENQVUxpbWl0KG1fY3B1TGltaXQpOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCBjZmVjZjBhMDUzODAyOTM1MjVmOGZmYzA1MWNmYzZlYzBiMmU5ZThmLi41YjgxMzMyNTMzZjY5
ZWU2ZjhiNWU2MDVhMjRjYjUyN2IzZGEyMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ2xpYi9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXIuY3BwCkBAIC01OCw3
ICs1OCw3IEBAIHZvaWQgVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXI6OnZhbGlkYXRlVXNlck1lZGlh
UmVxdWVzdENvbnN0cmFpbnRzKFdlYkNvcmU6Ok1lZGlhCiAgICAgfTsKIAogICAgIGF1dG8gdmFs
aWRIYW5kbGVyID0gW3RoaXNdKFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIGF1ZGlvRGV2aWNlcywg
VmVjdG9yPENhcHR1cmVEZXZpY2U+JiYgdmlkZW9EZXZpY2VzLCBTdHJpbmcmJiBkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpIG11dGFibGUgewotICAgICAgICBtX3ZhbGlkYXRlVXNlck1lZGlhUmVx
dWVzdENvbnN0cmFpbnRzQ2FsbGJhY2soV1RGOjpudWxsb3B0LCBhdWRpb0RldmljZXMsIHZpZGVv
RGV2aWNlcywgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KTsKKyAgICAgICAgbV92YWxpZGF0ZVVz
ZXJNZWRpYVJlcXVlc3RDb25zdHJhaW50c0NhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgYXVkaW9EZXZp
Y2VzLCB2aWRlb0RldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CiAgICAgfTsKIAog
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNpbmdsZXRvbigpLnZhbGlkYXRlUmVxdWVz
dENvbnN0cmFpbnRzKFdURk1vdmUodmFsaWRIYW5kbGVyKSwgV1RGTW92ZShpbnZhbGlkSGFuZGxl
ciksIHJlcXVlc3QsIFdURk1vdmUoaGFzaFNhbHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDFkZThlNDY4ODFmY2MxMTNhNmJmYmJl
NDBhODlkYjRlNWY0MDY1ODQuLmVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRm
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cApAQCAtNjQwLDcgKzY0MCw3IEBAIHVpbnQ2NF90IFN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VG
b3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBpZiAocGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBh
dGgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZh
bHVlX29yKDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggZGRiYTQyNjU0ZDYyY2YwZWEwNTJiNmQwZjE1
YmQwYjczZDE2ZTEzYi4uOWIxMDJmMWU0MmJkZTA1MTkwZTk1ZWM1ZTk3MDRhOTlmYTlhZmFiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtODgzLDcgKzg4
Myw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpldmFsdWF0ZSh1aW50MzJf
dCBvYmplY3RJRCwgY29uc3QgU3RyaW5nJiBzY3JpCiAKICAgICBTdHJvbmc8SlNHbG9iYWxPYmpl
Y3Q+IGdsb2JhbE9iamVjdCh2bSwgZnJhbWUtPnNjcmlwdCgpLmdsb2JhbE9iamVjdChwbHVnaW5X
b3JsZCgpKSk7CiAKLSAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFs
bG93UG9wdXBzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdl
c3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAg
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRlKGdsb2JhbE9iamVjdC5nZXQoKSwg
SlNDOjptYWtlU291cmNlKHNjcmlwdCwgeyB9KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4
IDhmZmYyNDVlMTY4ZDM0YWRiZWRiMDJkNDc0OGY5Y2I4NzExMDc3YjYuLmU0OTRmYzdkZmI2Yjli
YTQ2Mjc4ODczOTM0YjA4YjUwZDA4MjNkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0zNjMsNyAr
MzYzLDcgQEAgLSAoQk9PTClzZW5kRXZlbnQ6KHZvaWQqKWV2ZW50IGlzRHJhd1JlY3Q6KEJPT0wp
ZXZlbnRJc0RyYXdSZWN0CiAgICAgQVNTRVJUKF9ldmVudEhhbmRsZXIpOwogICAgIHsKICAgICAg
ICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoY29tbW9uVk0oKSk7Ci0g
ICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoX2V2ZW50SGFuZGxl
ci0+Y3VycmVudEV2ZW50SXNVc2VyR2VzdHVyZSgpID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpOworICAg
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKF9ldmVudEhhbmRsZXIt
PmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgYWNjZXB0ZWRFdmVudCA9IFtfcGx1Z2luUGFja2FnZS5nZXQoKSBwbHVnaW5GdW5jc10tPmV2
ZW50KHBsdWdpbiwgZXZlbnQpOwogICAgIH0KICAgICBbc2VsZiBkaWRDYWxsUGx1Z0luRnVuY3Rp
b25dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1Y2JkZmIwYzQzNGEyNWZhMTdh
N2IxMTg1NjMwNjgzNjIzMTkwYmM5Li43MmE1Mjg5ZDBmNmFkZmIwNTk1NGUwYWRhZGYzYThmZmE0
NTcxZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA3LDEyICsyMDcsMTIg
QEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lICp3
ZWJGcmFtZSkKIAogT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudC5tbQppbmRleCBjZmM0NDQ1MmVmMjNhYmY4Njc4NTNkN2MzMDdj
M2NkMzg1NWNkZGRiLi40YTFiYTNjNjdhZWY3NjUxMDBmY2ExMjM1MjFjOThkZGExZjUwZTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCkBAIC00MSw3ICs0MSw3
IEBAIFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudDo6fldlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudCgpCiAKIE9wdGlvbmFsPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Ojp2
YWxpZGF0ZWRQYXltZW50TmV0d29yayhjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBXZWJQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQ6OmNhbk1ha2VQYXltZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
CmluZGV4IDJkNDE0MWVkYjIxOTYxOTYxNzgyOTc2ODAxZTBhZjEzMzM2ODAyMGIuLmI1MjViYjBk
OGI0ODUxY2QxYWE1MzMyNzk3OWQxMDY0ZjZlZWU3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1t
CkBAIC05Miw3ICs5Miw3IEBAIC0gKE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIAogLSAodW5zaWdu
ZWQgc2hvcnQpcG9ydAogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3Jp
Z2luKj4oX3ByaXZhdGUpLT5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlX29yKDApOwog
fQogCiAvLyBGSVhNRTogT3ZlcnJpZGluZyBpc0VxdWFsOiB3aXRob3V0IG92ZXJyaWRpbmcgaGFz
aCB3aWxsIGNhdXNlIHRyb3VibGUgaWYgdGhpcyBldmVyIGdvZXMgaW50byBhbiBOU1NldCBvciBp
cyB0aGUga2V5IGluIGFuIE5TRGljdGlvbmFyeSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IDYzMzc2ZTY4
OGFmYmFlOWNjYzZhOGI0NGVhNTMxOTUwNjE2YzgwNWMuLjdkMTJiZTY2YmM1ZDI4MTNhNjBjY2Jh
YmNmZDljMDVlOTk5MjFiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtNjMsNyArNjMsNyBAQCBEZXZp
Y2VPcmllbnRhdGlvbkRhdGEqIGNvcmUoV2ViRGV2aWNlT3JpZW50YXRpb24qIG9yaWVudGF0aW9u
KQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29udmVydChib29sIGNhblByb3ZpZGUsIGRvdWJs
ZSB2YWx1ZSkKIHsKICAgICBpZiAoIWNhblByb3ZpZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCkBAIC03NSw5ICs3NSw5IEBAIC0gKGlkKWluaXRXaXRoQ2FuUHJvdmlkZUFscGhhOihib29s
KWNhblByb3ZpZGVBbHBoYSBhbHBoYTooZG91YmxlKWFscGhhIGNhblByb3ZpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBXZSBkb24ndCB1c2UgdGhpcyBBUEksIGJ1dCBtYWtlIHN1
cmUgdGhhdCBpdCBjb21waWxlcyB3aXRoIHRoZSBuZXcKICAgICAvLyBjb21wYXNzIHBhcmFtZXRl
cnMuCi0gICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBhbGxv
Y10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25EYXRhOjpj
cmVhdGUoY29udmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Qcm92aWRl
QmV0YSwgYmV0YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0KV07CisgICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRp
b25JbnRlcm5hbCBhbGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpjcmVhdGUoY29udmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29u
dmVydChjYW5Qcm92aWRlQmV0YSwgYmV0YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1t
YSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KV07CiAjZWxzZQotICAgIG1faW50ZXJuYWwg
PSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmlj
ZU9yaWVudGF0aW9uOkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJv
dmlkZUFscGhhLCBhbHBoYSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0
KGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpLCBXVEY6Om51bGxvcHQpXTsKKyAgICBtX2ludGVybmFs
ID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsIGFsbG9jXSBpbml0V2l0aENvcmVEZXZp
Y2VPcmllbnRhdGlvbjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZShjb252ZXJ0KGNhblBy
b3ZpZGVBbHBoYSwgYWxwaGEpLCBjb252ZXJ0KGNhblByb3ZpZGVCZXRhLCBiZXRhKSwgY29udmVy
dChjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKSwgc3RkOjpudWxsb3B0KV07CiAjZW5kaWYKICAgICBy
ZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDk1YmRhMzkwY2E2OWJhNmI5NjIwZjUxYmVlNjk2YjIxMjM5YWIxNGQuLjYxOTlh
OGM0N2I0YjBmZWY0ZTliMjM1MDRiMjQ5MjM1NDViMmNkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODEyLDcgKzgxMiw3IEBAIC0gKE9wdGlv
bmFsPFdlYkNvcmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpbnNy
YW5nZQogLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5n
ZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXRpdmVUbzooV2ViUmFuZ2VJc1JlbGF0aXZlVG8p
cmFuZ2VJc1JlbGF0aXZlVG8KIHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChyYW5nZUlzUmVsYXRpdmVUbyA9PSBXZWJSYW5nZUlzUmVsYXRpdmVU
bzo6RWRpdGFibGVSb290KSB7CiAgICAgICAgIC8vIE91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlz
IHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgb25seSBjYWxsZWQgYnkgaW5wdXQgbWV0aG9kcyB0aGF0
CkBAIC04MjMsNyArODIzLDcgQEAgLSAoT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+KV9j
b252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVsYXQKICAgICAgICAgLy8g
VGhhdCBmaXRzIHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgICAg
ICBhdXRvKiBlbGVtZW50ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkucm9vdEVk
aXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cygqZWxlbWVudCksIHJhbmdlKTsKICAgICB9CiAKQEAgLTgz
MSw3ICs4MzEsNyBAQCAtIChPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRU
b0RPTVJhbmdlOihOU1JhbmdlKXJhbmdlIHJhbmdlSXNSZWxhdAogCiAgICAgYXV0byBwYXJhZ3Jh
cGhTdGFydCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0T2ZQYXJhZ3JhcGgoX3ByaXZhdGUtPmNv
cmVGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkpKTsKICAgICBp
ZiAoIXBhcmFncmFwaFN0YXJ0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzY29wZUVuZCA9IG1ha2VCb3VuZGFy
eVBvaW50QWZ0ZXJOb2RlQ29udGVudHMocGFyYWdyYXBoU3RhcnQtPmNvbnRhaW5lci0+dHJlZVNj
b3BlKCkucm9vdE5vZGUoKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnJlc29sdmVDaGFyYWN0ZXJS
YW5nZSh7IFdURk1vdmUoKnBhcmFncmFwaFN0YXJ0KSwgV1RGTW92ZShzY29wZUVuZCkgfSwgcmFu
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uLm1tCmluZGV4IDVkYmZkMzU1YTg1Yzk3ZTAyOWJlNTFmNzQ1NzU1
ZDMxNWQ0MGU5MmQuLjQzYzQ3Y2UxYzU0NTlmYTBlNzkwMjUxYmIyYzljODQzYWQ1YTg2MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KQEAgLTU5LDcgKzU5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24KIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3Jl
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKnBvc2l0aW9uKQogewogICAgIGlmICghcG9zaXRpb24p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIHBvc2l0aW9uLT5faW50ZXJuYWwtPl9wb3NpdGlvbjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNjFk
NmY0ZTg2NTk0ZGNhYjdlNjE3OTA3MDRiNzA5ZWY1Y2NjMmJlMC4uMDg0YWI3MzE0Zjk0MzZlZjEz
NDgxNDE4MzdlYTJlNjljZGY2NjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC00MjksNyArNDI5LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uPiB0b0FjdGlvbihOU0ludGVnZXIgdGFnKQogICAg
IGNhc2UgV2ViTWVudUl0ZW1UYWdUcmFuc2xhdGU6CiAgICAgICAgIHJldHVybiBDb250ZXh0TWVu
dUl0ZW1UYWdUcmFuc2xhdGU7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9U
YWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gYWN0aW9uKQpAQCAtNDM3LDcgKzQzNyw3IEBA
IHN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0
aW9uIGFjdGlvbikKICAgICB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBzd2l0Y2ggKGFj
dGlvbikgewogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb246Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBj
YXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c6CiAgICAgICAgIHJldHVy
biBXZWJNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c7CkBAIC02MDksNyArNjA5LDcgQEAg
c3RhdGljIE9wdGlvbmFsPE5TSW50ZWdlcj4gdG9UYWcoV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uKQogICAgICAgICByZXR1cm4gV2ViTWVudUl0ZW1UYWdUb2dnbGVWaWRlb0Z1bGxz
Y3JlZW47CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdBZGRIaWdobGlnaHRUb0N1cnJlbnRH
cm91cDoKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0FkZEhpZ2hsaWdodFRvTmV3R3JvdXA6
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTaGFyZU1lbnU6CiAgICAgICAgIHJldHVy
biBXZWJNZW51SXRlbVRhZ1NoYXJlTWVudTsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Rv
Z2dsZVZpZGVvRW5oYW5jZWRGdWxsc2NyZWVuOgpAQCAtNjE3LDcgKzYxNyw3IEBAIHN0YXRpYyBP
cHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlv
bikKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RyYW5zbGF0ZToKICAgICAgICAgcmV0dXJu
IFdlYk1lbnVJdGVtVGFnVHJhbnNsYXRlOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUmV2
ZWFsSW1hZ2U6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBjYXNlIENvbnRleHRNZW51SXRlbUJhc2VDdXN0b21UYWcgLi4u
IENvbnRleHRNZW51SXRlbUxhc3RDdXN0b21UYWc6CiAgICAgICAgIC8vIFdlIGp1c3QgcGFzcyB0
aGVzZSB0aHJvdWdoLgpAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBPcHRpb25hbDxOU0ludGVn
ZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBAaW1wbGVtZW50YXRpb24gV2ViTWVudVRhcmdl
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDMwMTBh
NmE4OGI5NTdjOTA3NzkxNDY4ODhjNjY4OTNjNGI1ZDdiMTcuLjFiYWQzZjhhZjY5NjIwYmNkNTMw
YzBlYmY5NzMyYmIzNWMzYjNkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTU2ODIsNyArNTY4Miw3IEBAIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dp
bmRvdwogLSAodm9pZClkb1dpbmRvd0RpZENoYW5nZVNjcmVlbgogewogICAgIGlmIChfcHJpdmF0
ZSAmJiBfcHJpdmF0ZS0+cGFnZSkKLSAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndp
bmRvd1NjcmVlbkRpZENoYW5nZShXZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVu
KSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmNocm9tZSgpLndpbmRv
d1NjcmVlbkRpZENoYW5nZShXZWJDb3JlOjpkaXNwbGF5SUQoc2VsZi53aW5kb3cuc2NyZWVuKSwg
c3RkOjpudWxsb3B0KTsKIH0KIAogLSAodm9pZClfd2luZG93Q2hhbmdlZEtleVN0YXRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlV2lu
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4u
Y3BwCmluZGV4IGY2MzNjMzRhMTM0YjBiNjViZThhYTExYjY1NmIzZmU5MGUyMWUwNjIuLjg0Mjcw
ODFjYWM5YTdkMDhlN2JmMTY3MDM1OTdiODRmM2EwOTc3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0xMzQs
NyArMTM0LDcgQEAgc3RhdGljIGlubGluZSBWZWN0b3I8aW50PiBwYXJzZVZlcnNpb25TdHJpbmco
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uU3RyaW5nKQogICAgICAgICBmb3IgKGVuZFBvcyA9IHN0YXJ0
UG9zOyBlbmRQb3MgPCB2ZXJzaW9uU3RyaW5nLmxlbmd0aCgpOyArK2VuZFBvcykKICAgICAgICAg
ICAgIGlmICh2ZXJzaW9uU3RyaW5nW2VuZFBvc10gPT0gJy4nIHx8IHZlcnNpb25TdHJpbmdbZW5k
UG9zXSA9PSAnXycpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHZlcnNpb24uYXBw
ZW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oU3RyaW5nVmlldyB7IHZl
cnNpb25TdHJpbmcgfS5zdWJzdHJpbmcoc3RhcnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSkudmFs
dWVPcigwKSk7CisgICAgICAgIHZlcnNpb24uYXBwZW5kKHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPGludD4oU3RyaW5nVmlldyB7IHZlcnNpb25TdHJpbmcgfS5zdWJzdHJpbmcoc3Rh
cnRQb3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSkudmFsdWVfb3IoMCkpOwogICAgICAgICBzdGFydFBv
cyA9IGVuZFBvcyArIDE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBlMzg0MDIyYzM0MDIzYjFlMzVlMmEyZTA5NmEyMjli
YjllMDMwN2E2Li5jMGM0MDU3ZjZiZWY4M2M4MmNiNzdkYzY3MzQ5ODgxMDg4MWVkMDcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQw
Miw3ICs0MDIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVl
c3QqIHJlcXVlc3QpCiAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1
ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgU3RyaW5nIGpzU3RyaW5nID0gc2Ny
aXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RVUkwpOwogCi0gICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpID8g
T3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSkgOiBXVEY6Om51bGxvcHQpOworICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsK
IAogICAgIGlmIChqc1N0cmluZy5pc051bGwoKSkgewogICAgICAgICAvLyBpZiB0aGlzIGlzIG5v
dCBhIHRhcmdldGVkIHJlcXVlc3QsIGNyZWF0ZSBhIHN0cmVhbSBmb3IgaXQuIG90aGVyd2lzZSwK
QEAgLTEwNzIsNyArMTA3Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFuZGxlUG9zdChjb25z
dCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVuCiAgICAgICAgICAg
ICAgICAgU3RyaW5nIGNvbnRlbnRMZW5ndGggPSBoZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpDb250ZW50TGVuZ3RoKTsKIAogICAgICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0
aC5pc051bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52
YWx1ZU9yKDApLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9
IHN0ZDo6bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250
ZW50TGVuZ3RoKS52YWx1ZV9vcigwKSwgZGF0YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgaGVh
ZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAg
ICAgICAgICAgICBwb3N0RGF0YSArPSBsb2NhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCAwZTY2OTA4MjdmODBhYjE3ZTNlMzBiN2UyYTg5MjVkMTM3YzY2ZDM1Li5hNzMx
OTY4MjEwY2Q3MDljNTM4YmIyMzFmM2E1NTFlNTZiYTc0ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMiBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKIAogT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVJRCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNXZWJWaWV3KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCA3MjFmYzkwODRiZjY4MzE1Njg0NmQ2MmE0
NmUxNThjMmNiZjZlMzJkLi4zOGNhMTcxY2M2Yjg4MmE0ZDk1NWU0NTBiODMzNzUyNmMyNzBmZTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJH
ZW9sb2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgT3B0
aW9uYWw8R2VvbG9jYXRpb25Qb3NpdGlvbkRhdGE+IFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0
UG9zaXRpb24oKQogewogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gcHJvdmlk
ZXI7CiAgICAgaWYgKEZBSUxFRChtX3dlYlZpZXctPmdlb2xvY2F0aW9uUHJvdmlkZXIoJnByb3Zp
ZGVyKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgQ09NUHRyPElXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbjsK
ICAgICBpZiAoRkFJTEVEKHByb3ZpZGVyLT5sYXN0UG9zaXRpb24oJnBvc2l0aW9uKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIGNvcmUocG9zaXRpb24uZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IGU2MGViMjFmZGMw
MTYyMTVlNzYyZWY5MDM4ZjNkNDU5ZDBiNDczYWIuLmQ2NGU3NmE4NTY1OTIwNDIxYTE4YjQ2ZGE4
ZDE1NGUyYTAwMWVkNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC04NiwxMSArODYsMTEgQEAgSFJFU1VMVCBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjppbml0V2l0aFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1wLCBkb3Vi
bGUgbGF0aXQKIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBjb3JlKElXZWJHZW9s
b2NhdGlvblBvc2l0aW9uKiBwb3NpdGlvbikKIHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IHdlYkdlb2xvY2F0aW9uUG9zaXRpb24o
UXVlcnksIHBvc2l0aW9uKTsKICAgICBpZiAoIXdlYkdlb2xvY2F0aW9uUG9zaXRpb24pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gd2ViR2VvbG9jYXRpb25Qb3NpdGlvbi0+aW1wbCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDU3Y2E4MGUxNzNk
ZDliNTMyNWY5MmYzNDlmYTg5NGQxYWU2NDI2ODQuLjk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2Yw
Y2QwNjAwMjQ2YTEwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBIUkVTVUxUIFdlYlNlY3VyaXR5T3JpZ2lu
Ojpwb3J0KF9PdXRfIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpCiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAqcmVzdWx0ID0gbV9zZWN1cml0eU9yaWdp
bi0+cG9ydCgpLnZhbHVlT3IoMCk7CisgICAgKnJlc3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBv
cnQoKS52YWx1ZV9vcigwKTsKIAogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY4ZGM1MDliZmNiOTNkOWE4ZGMw
NTIwNGM3ZDg5MzhlYzgxNmEwNGIuLjBkNTlkN2NkMDk2YWRjYmY1NDg2Y2FkNTUzY2Q4OGVmZWVk
OGZmMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVj
dGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogU2NyaXB0cy9kby13ZWJjb3JlLXJl
bmFtZTogVXNlIHNjcmlwdCB0byByZW5hbWUgdmFsdWVPciwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHRfdCwKKyAgICAgICAgV1RGOjpPcHRpb25hbCwgV1RGOjptYWtlT3B0aW9uYWwsIGFuZCBt
YWtlT3B0aW9uYWwuIE90aGVyIHJlbmFtaW5ncyBjYW4ndCBuZWNlc3NhcmlseQorICAgICAgICBi
ZSBkb25lIGJ5IHRoZSBzY3JpcHQgYW5kIHNvIHdpbGwgYmUgZG9uZSBpbiBsYXRlciBwYXNzZXMu
CisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBk
by13ZWJjb3JlLXJlbmFtZS4KKwogMjAyMS0wNS0yNyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAg
PGFuZ2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgaGlnaC1sZXZl
bCByZXRyeSBsb29wIGZvciBydW4tanNjLXN0cmVzcy10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5h
bWUKaW5kZXggMmE5MWU1N2U1YWYwNThmMTFlZTNiMTBmNGM4YmY1Y2U5NjgyMmM0My4uZmM1Nzc5
NmE1NDhjY2EzMDljYThiODAxOTJiMDE4NTU5YTZiZGYwNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVu
YW1lCkBAIC03OSw3ICs3OSw5IEBAIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0Iik7CiBm
aW5kKFwmd2FudGVkLCAiVG9vbHMvZ2RiIik7CiBmaW5kKFwmd2FudGVkLCAiVG9vbHMvbGxkYiIp
OwogZmluZChcJndhbnRlZCwgIlRvb2xzL0R1bXBSZW5kZXJUcmVlIik7CitmaW5kKFwmd2FudGVk
LCAiVG9vbHMvVGVzdFJ1bm5lclNoYXJlZCIpOwogZmluZChcJndhbnRlZCwgIlRvb2xzL1Rlc3RX
ZWJLaXRBUEkiKTsKK2ZpbmQoXCZ3YW50ZWQsICJUb29scy9XZWJLaXRUZXN0UnVubmVyIik7CiAK
IHN1YiB3YW50ZWQKIHsKQEAgLTEwMiwxMiArMTA0LDEyIEBAIHN1YiB3YW50ZWQKIG15ICRpc0RP
TVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5hbWVzIGdvIGhlcmUg
aW4gdGhlIGZvcm0gb2Y6Ci0gICAgIkRyYWdPcGVyYXRpb25Db3B5IiA9PiAiRHJhZ09wZXJhdGlv
bjo6Q29weSIsCi0gICAgIkRyYWdPcGVyYXRpb25MaW5rIiA9PiAiRHJhZ09wZXJhdGlvbjo6TGlu
ayIsCi0gICAgIkRyYWdPcGVyYXRpb25HZW5lcmljIiA9PiAiRHJhZ09wZXJhdGlvbjo6R2VuZXJp
YyIsCi0gICAgIkRyYWdPcGVyYXRpb25Qcml2YXRlIiA9PiAiRHJhZ09wZXJhdGlvbjo6UHJpdmF0
ZSIsCi0gICAgIkRyYWdPcGVyYXRpb25Nb3ZlIiA9PiAiRHJhZ09wZXJhdGlvbjo6TW92ZSIsCi0g
ICAgIkRyYWdPcGVyYXRpb25EZWxldGUiID0+ICJEcmFnT3BlcmF0aW9uOjpEZWxldGUiLAorICAg
ICJ2YWx1ZU9yIiA9PiAidmFsdWVfb3IiLAorICAgICJXVEY6Om51bGxvcHQiID0+ICJzdGQ6Om51
bGxvcHQiLAorICAgICJXVEY6Om51bGxvcHRfdCIgPT4gInN0ZDo6bnVsbG9wdF90IiwKKyAgICAi
V1RGOjpPcHRpb25hbCIgPT4gInN0ZDo6b3B0aW9uYWwiLAorICAgICJXVEY6Om1ha2VPcHRpb25h
bCIgPT4gInN0ZDo6bWFrZV9vcHRpb25hbCIsCisgICAgIm1ha2VPcHRpb25hbCIgPT4gInN0ZDo6
bWFrZV9vcHRpb25hbCIsCiApOwogCiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVy
ZSA9ICgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNCYXNp
Y3MuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKaW5k
ZXggYzRjMGFlN2VhMjE3NjBmYTFkMWY1MTljNmI3MDhkMTEyYTkwOWNiZS4uNTYzZDA5MDI4NjQz
MTY3MDdmYzE2ZDU1NjFmNjY1YTQ4YWIzMDVjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQCBuYW1lc3BhY2UgV1RS
IHsKIAogT3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTVmFsdWVSZWYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250
ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBXVEY6Om51bGxv
cHQgOiBtYWtlT3B0aW9uYWwoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkpOworICAg
IHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEpT
VmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKIH0KIAogT3B0aW9uYWw8ZG91YmxlPiB0
b09wdGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQog
ewotICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFs
dWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKEpT
VmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpOworICAgIHJldHVybiBKU1Zh
bHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051bGwoY29udGV4dCwg
dmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEpTVmFsdWVUb051bWJl
cihjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpOwogfQogCiBKU1ZhbHVlUmVmIG1ha2VWYWx1ZShK
U0NvbnRleHRSZWYgY29udGV4dCwgT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5oCmluZGV4IGYxNjViYjQ5NTM1NWRlYWIzOWQ1NjdhNzU4OGM0OWZjY2VmNmRhNzMuLjg0
MWU1MzBlNTVmOTk3MzA2ODUxMWM5NGU5YWJkMWQxZjc4NzFiMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWlu
aW11bUVmZmVjdGl2ZVdpZHRoKGRvdWJsZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldEFsbG93c1ZpZXdwb3J0U2hyaW5rVG9GaXQoYm9vbCkgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJp
ZGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAg
ICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdCB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPikgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CiAKICAgICB2aXJ0dWFsIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0
IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2Vy
dmVyLmNwcAppbmRleCAwMDRiMmRhMDNhOTVhM2ZkY2EwY2Y3ODZkMjkwZDY1YTFkZWMxN2ZhLi42
NmQ3ZWFlMzkyZjA1OTEwYjcwOTRhYzk0NjNmYWIwYThlOTIyZDMzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
Q1BTZXJ2ZXIuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJp
bmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBPcHRpb25hbDxTb2NrZXQ+CiB7CiAgICAg
U29ja2V0IGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7
CiAgICAgaWYgKGxpc3RlbmluZ1NvY2tldCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBQb3J0cyA0
OTE1Mi02NTUzNSBhcmUgdW5hbGxvY2F0ZWQgcG9ydHMuIFRyeSB1bnRpbCB3ZSBmaW5kIG9uZSB0
aGF0J3MgZnJlZS4KICAgICBmb3IgKFBvcnQgcG9ydCA9IDQ5MTUyOyBwb3J0OyBwb3J0KyspIHsK
QEAgLTI3OSw3ICsyNzksNyBAQCBhdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXpl
X3QgY29ubmVjdGlvbnMpIC0+IE9wdGlvbmFsPFNvY2tldD4KICAgICAgICAgaWYgKGxpc3Rlbihs
aXN0ZW5pbmdTb2NrZXQsIGNvbm5lY3Rpb25zKSA9PSAtMSkgewogICAgICAgICAgICAgLy8gTGlz
dGVuaW5nIGZhaWxlZC4KICAgICAgICAgICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7Ci0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQogICAgICAgICBtX3BvcnQgPSBwb3J0OwogICAgICAgICByZXR1cm4g
bGlzdGVuaW5nU29ja2V0OyAvLyBTdWNjZXNzZnVsbHkgc2V0IHVwIGxpc3RlbmluZyBwb3J0LgpA
QCAtMjg3LDcgKzI4Nyw3IEBAIGF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVuKHNpemVf
dCBjb25uZWN0aW9ucykgLT4gT3B0aW9uYWw8U29ja2V0PgogICAgIAogICAgIC8vIENvdWxkbid0
IGZpbmQgYW4gYXZhaWxhYmxlIHBvcnQuCiAgICAgY2xvc2UobGlzdGVuaW5nU29ja2V0KTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRl
bXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTb2NrZXQgc29ja2V0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmgKaW5kZXggOTBlMmUzMThiMGYyYTRkYThhZGRjNGMyMTEzZDli
ZGUyNjhlNjYwZi4uMzM2NGFjZDNlMTg2NTYwMmFjZGMwNWFlY2JmMjVjYjY3Y2QxNzA0MSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1RDUFNlcnZlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBlbnVt
IGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAgICAgICAgIEhUVFBTLCBIVFRQU1Byb3h5LCBI
VFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QKICAgICB9OwotICAgIFRDUFNlcnZlcihQ
cm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRM
U1ZlcnNpb24gPSBXVEY6Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9IDEpOworICAgIFRD
UFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2
X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9IDEp
OwogI2VuZGlmIC8vIEhBVkUoU1NMKQogICAgIH5UQ1BTZXJ2ZXIoKTsKICAgICAKQEAgLTU1LDcg
KzU1LDcgQEAgcHVibGljOgogICAgIAogI2lmIEhBVkUoU1NMKQogICAgIHN0YXRpYyB2b2lkIHJl
c3BvbmRXaXRoT0soU1NMKik7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25uZWN0aW9u
KFNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwg
Ym9vbCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBmYWxzZSwgT3B0aW9uYWw8dWludDE2X3Q+
IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyB2b2lkIHN0YXJ0U2Vj
dXJlQ29ubmVjdGlvbihTb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVj
dGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENsaWVudENlcnRpZmljYXRlID0gZmFsc2UsIE9wdGlv
bmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAg
IHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcAppbmRleCBmY2Y4ZTZiYjM4YTJk
M2JmNTA1MmViNTIzNTc4ZWQzMTg5MzgxZDkwLi4wZDU5ZDNlYmI0MDMyZTgwYjk4NDc1Y2ZiNTE3
YTEwYjllNmRlYTRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
dW5jdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVuY3Rpb24u
Y3BwCkBAIC0yMDksOCArMjA5LDggQEAgVEVTVChXVEZfRnVuY3Rpb24sIEFzc2lnbkJlZm9yZURl
c3Ryb3kpCiAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oRnVuY3Rpb25EZXN0cnVj
dGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0KSk7CiAgICAgRVhQRUNUX1RSVUUoRnVuY3Rpb25E
ZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uQXNCb29sLnZhbHVlKCkpOwogICAgIEVYUEVDVF9F
USgxVSwgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0LnZhbHVlKCkp
OwotICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IFdURjo6
bnVsbG9wdDsKLSAgICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQg
PSBXVEY6Om51bGxvcHQ7CisgICAgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9u
QXNCb29sID0gc3RkOjpudWxsb3B0OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpm
dW5jdGlvblJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGEgPSBGdW5jdGlvbkRlc3RydWN0
aW9uQ2hlY2tlcihhKTsKICAgICBhID0gTW92ZU9ubHkgeyAyIH07CkBAIC0yMTgsOCArMjE4LDgg
QEAgVEVTVChXVEZfRnVuY3Rpb24sIEFzc2lnbkJlZm9yZURlc3Ryb3kpCiAgICAgRVhQRUNUX1RS
VUUoc3RhdGljX2Nhc3Q8Ym9vbD4oRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9u
UmVzdWx0KSk7CiAgICAgRVhQRUNUX1RSVUUoRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1
bmN0aW9uQXNCb29sLnZhbHVlKCkpOwogICAgIEVYUEVDVF9FUSgyVSwgRnVuY3Rpb25EZXN0cnVj
dGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0LnZhbHVlKCkpOwotICAgIEZ1bmN0aW9uRGVzdHJ1
Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IFdURjo6bnVsbG9wdDsKLSAgICBGdW5jdGlv
bkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAg
RnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uQXNCb29sID0gc3RkOjpudWxsb3B0
OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3VsdCA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogc3RhdGljIGludCByZXR1cm5UaHJlZSgpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSGFzaGVyLmNwcAppbmRleCA0MTdmNjRiMDJkMzBjNjhhOWMzNTVkOTc5NzVl
ZTcyMGJhMjFmNjBhLi4wZTc3MDNlNmYzMGRkMDI1Yzc1MGY1MzU4YzgyZTI1NDFjODg2NjFkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKQEAgLTE2OCw3ICsxNjgs
NyBAQCBURVNUKFdURiwgSGFzaGVyX211bHRpcGxlKQogICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRI
YXNoLCBjb21wdXRlSGFzaChzdGQ6OmFycmF5PGludCwgMT4geyB7IDAgfSB9KSk7CiAgICAgRVhQ
RUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKFZlY3RvcjxpbnQ+IHsgMCB9KSk7CiAg
ICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKFZlY3RvcjxpbnQsIDE+IHsg
MCB9KSk7Ci0gICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKE9wdGlvbmFs
PGludD4geyBXVEY6Om51bGxvcHQgfSkpOworICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRIYXNoLCBj
b21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgc3RkOjpudWxsb3B0IH0pKTsKICAgICBFWFBFQ1Rf
RVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjptYWtlX3R1cGxlKDApKSk7CiAKICAg
ICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaCgxLCAwKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKaW5kZXggYjkzNTU3NTIyOGRiOTI1MjVh
ZWZlMzIzOTIyMzQ5ZDQ4ZWEyZGY3Yi4uNWI3ZTE1MzE3Y2JmZTliNjNkZTM4ZjRhZDA3OWRkZTg3
NWM0YjgyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTWFya2Fi
bGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxlLmNwcApA
QCAtMzksNyArMzksNyBAQCBURVNUKFdURl9NYXJrYWJsZSwgRGlzZW5nYWdlZCkKICAgICB9CiAK
ICAgICB7Ci0gICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0czxpbnQs
IDQyPj4gb3B0aW9uYWwgeyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgTWFya2FibGU8aW50LCBJ
bnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IHN0ZDo6bnVsbG9wdCB9
OwogCiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25hbCkpOwog
ICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgVEVTVChXVEZfTWFya2FibGUsIEVuZ2FnZWQpCiAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAgICAgIEVY
UEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7CiAKLSAgICAgICAgb3B0aW9uYWwgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIG9wdGlvbmFsID0gc3RkOjpudWxsb3B0OwogICAgICAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKIAogICAgICAgICBvcHRpb25h
bCA9IDQyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcAppbmRleCBiNGM2YzllOWZiY2Y5ZGZlNDk4YjU1
NjBlODc1ZTdjZWEwZDFjN2RlLi5kMzE2MGRhZDY0YzcxMzFhMjU4YzhkNjcyYzgyMzE5MmYwOTlh
NzBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdUb0lu
dGVnZXJDb252ZXJzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApAQCAtMzAsOCArMzAsOCBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV1RGLCBQYXJzZUludGVnZXIpCiB7Ci0gICAgRVhQRUNU
X0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KG51bGxwdHIpKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2Vy
PGludD4oIiIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50
PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoc3Rk
OjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiIikpOwogICAgIEVYUEVDVF9FUSgwLCBwYXJz
ZUludGVnZXI8aW50PigiMCIpKTsKICAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4o
IjEiKSk7CiAgICAgRVhQRUNUX0VRKDMsIHBhcnNlSW50ZWdlcjxpbnQ+KCIzIikpOwpAQCAtMzks
MjYgKzM5LDI2IEBAIFRFU1QoV1RGLCBQYXJzZUludGVnZXIpCiAgICAgRVhQRUNUX0VRKDEyMzQ1
LCBwYXJzZUludGVnZXI8aW50PigiMTIzNDUiKSk7CiAgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFy
c2VJbnRlZ2VyPGludD4oIi0xMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0NywgcGFy
c2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDciKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6
bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDgiKSk7CiAgICAgRVhQRUNUX0VR
KC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRlZ2VyPGludD4oIi0yMTQ3NDgzNjQ4IikpOwotICAg
IEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4MzY0OSIp
KTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigieDEiKSk7
CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIi0yMTQ3NDgz
NjQ5IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCJ4
MSIpKTsKICAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIiAxIikpOwotICAgIEVY
UEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxeCIpKTsKKyAgICBFWFBF
Q1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiMXgiKSk7CiAKICAgICBFWFBF
Q1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjAiKSk7CiAgICAgRVhQRUNU
X0VRKDNVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIzIikpOwogICAgIEVYUEVDVF9F
USgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjEyMzQ1IikpOwogICAgIEVY
UEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjY1NTM1IikpOwot
ICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIi0xIikp
OwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIi0z
IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4o
IjY1NTM2IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50
MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1
aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjx1aW50MTZfdD4oIjY1NTM2IikpOwogfQogCiBURVNUKFdURiwgUGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bmspCiB7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRl
Z2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVs
bHB0cikpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CiAgICAgRVhQRUNUX0VRKDAsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjAiKSk7CiAgICAgRVhQRUNUX0VRKDEsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEiKSk7CiAgICAgRVhQRUNUX0VR
KDMsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjMiKSk7CkBAIC02Niwx
MCArNjYsMTAgQEAgVEVTVChXVEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rKQog
ICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigiMTIzNDUiKSk7CiAgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8aW50PigiLTEyMzQ1IikpOwogICAgIEVYUEVDVF9FUSgyMTQ3NDgzNjQ3LCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ3IikpOwotICAg
IEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PGludD4oIjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0OCIpKTsKICAgICBFWFBF
Q1RfRVEoLTIxNDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxp
bnQ+KCItMjE0NzQ4MzY0OCIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKLSAgICBFWFBF
Q1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+
KCJ4MSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpu
dWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIpKTsKICAg
ICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiIDEi
KSk7CiAgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4oIjF4IikpOwogCkBAIC03Nyw5ICs3Nyw5IEBAIFRFU1QoV1RGLCBQYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuaykKICAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMyIpKTsKICAgICBFWFBFQ1RfRVEoMTIzNDVV
LCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIjEyMzQ1
IikpOwogICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzUiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMSIpKTsKLSAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azx1aW50MTZfdD4oIi0zIikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYiKSk7CisgICAgRVhQRUNU
X0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2
X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxv
d2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51
bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYi
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCmluZGV4IDVmYzM5MzNhMjQ5YjA1MjUyMDllOTcx
ZjFiNTEyNzgzMTE1ZjQ3ZDIuLjk4MWYyZDcwYzNiMzBmZjJkMWQxZjA5M2VkZTQ4MWI5MTc3YzNj
ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1
cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVP
cigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFzc3dvcmQs
IHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhv
c3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlT3IoMCkp
OworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTUwLDcgKzE1MCw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcu
dXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3Jk
LCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVy
bC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9v
cigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkp
KTsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJMRGlmZmVy
ZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBv
cnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3LnBvcnQs
IHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBh
dGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVyeSwgdXJs
LnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwgdXJsLmZy
YWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9y
LmNwcAppbmRleCAyMmNlY2E1N2U1YTA0YmJlMGE3YjA0N2U0OWI2Y2QxNGM5YTAxZWJlLi5mZGFi
YTk0NzAzOTVlYTgwMTk4NTBlOGZiOGFlYTA5YWZlMzdhZjg3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTg5OCwxMCArODk4LDEwIEBAIFRFU1QoV1RGX1Zl
Y3RvciwgTWFwRnJvbUhhc2hNYXApCiAKIH0KIAotV1RGOjpPcHRpb25hbDxpbnQ+IGV2ZW5NdWx0
aXBsaWVkQnlGaXZlKGludCBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8aW50PiBldmVuTXVsdGlwbGll
ZEJ5Rml2ZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
aW5wdXQgKiA1OwogfQogCkBAIC05NjUsNyArOTY1LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21w
YWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5SZWZQdHIpCiBPcHRpb25hbDxSZWY8UmVmQ291bnRl
ZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRGb3JFdmVuKGludCBpbnB1dCkKIHsKICAgICBpZiAo
aW5wdXQgJSAyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiBSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUoaW5wdXQp
OwogfQogCkBAIC05ODcsNyArOTg3LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwU3Rh
dGljRnVuY3Rpb25SZXR1cm5PcHRpb25hbFJlZikKIE9wdGlvbmFsPFJlZlB0cjxSZWZDb3VudGVk
T2JqZWN0Pj4gY3JlYXRlUmVmQ291bnRlZFdoZW5EaXZpc2libGVCeVRocmVlKGludCBpbnB1dCkK
IHsKICAgICBpZiAoaW5wdXQgJSAzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpbnB1dCAlIDIpCiAgICAgICAgIHJl
dHVybiBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oKTsKICAgICByZXR1cm4gUmVmUHRyPFJlZkNv
dW50ZWRPYmplY3Q+KFJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZShpbnB1dCkpOwpAQCAtMTAxNSw3
ICsxMDE1LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhUmV0dXJuT3B0aW9u
YWwpCiAKICAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3QgU3RyaW5nJiB2YWx1ZSkgLT4gT3B0
aW9uYWw8U3RyaW5nPiB7CiAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8IDUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CiAgICAg
fTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNvbXBhY3RN
YXAodmVjdG9yLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxTdHJpbmc+Pjo6dmFs
dWUsCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1i
ZGFDb3B5VmVjdG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0KQogICAgIGF1dG8gZnVuY3Rp
b24gPSBbXShjb25zdCBDb3VudGVkT2JqZWN0JiBvYmplY3QpIC0+IE9wdGlvbmFsPENvdW50ZWRP
YmplY3Q+IHsKICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSgpICUgMikKICAgICAgICAgICAgIHJl
dHVybiBvYmplY3Q7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1l
PGRlY2x0eXBlKFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1bmN0aW9uKSksIHR5cGVuYW1lIFdU
Rjo6VmVjdG9yPENvdW50ZWRPYmplY3Q+Pjo6dmFsdWUsCkBAIC0xMDg2LDcgKzEwODYsNyBAQCBU
RVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJuT3B0aW9uYWxD
b3VudGVkT2JqZWN0KQogICAgIGF1dG8gZnVuY3Rpb24gPSBbXShDb3VudGVkT2JqZWN0JiYgb2Jq
ZWN0KSAtPiBPcHRpb25hbDxDb3VudGVkT2JqZWN0PiB7CiAgICAgICAgIGlmIChvYmplY3QudmFs
dWUoKSAlIDIpCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShvYmplY3QpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH07
CiAKICAgICBSZWZDb3VudGVkT2JqZWN0OjpzX3RvdGFsUmVmQ291bnQgPSAwOwpAQCAtMTE1Nyw3
ICsxMTU3LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhUmV0dXJuT3B0aW9u
YWxSZWZQdHIpCiAKICAgICBhdXRvIGZ1bmN0aW9uID0gWyZdKGludCB2YWx1ZSkgLT4gT3B0aW9u
YWw8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiB7CiAgICAgICAgIGlmICghKHZhbHVlICUgMikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCEodmFsdWUgJSAzKSkKICAgICAgICAgICAgIHJldHVy
biBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oKTsKICAgICAgICAgcmV0dXJuIFJlZlB0cjxSZWZD
b3VudGVkT2JqZWN0PihSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUodmFsdWUpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNrUXVldWUu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1
ZS5jcHAKaW5kZXggMTE0NzkxYjM2YWE5NWZkYzE4NmRhYjU2ZDA4ZTEyOWY1NGU1NTZhNS4uOTc2
ZDY4MzI2OGZhNDI1ZTU3Njc5OTBhMTU1NTZlOWVjMmIxY2ExNSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCBURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgU3luY1Rhc2tzKQog
ICAgICAgICBFWFBFQ1RfVFJVRShyZXNwb25zZSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShkZXN0
cnVjdGVkUmVzcG9uc2VGbGFnKTsKICAgICAgICAgRVhQRUNUX0VRKDEwMCwgcmVzcG9uc2UtPmZh
bmN5SW50KTsKLSAgICAgICAgcmVzcG9uc2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3Bv
bnNlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBFWFBFQ1RfVFJVRShkZXN0cnVjdGVkUmVzcG9u
c2VGbGFnKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmXSgpIHsKICAgICAg
ICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCmluZGV4IGVkOGU2YzJi
YzBhOWY1YjkyMDIyMGE3ZWU4YjQ4ODZlZDliZGMyYzEuLjgwOWE5MGFhOGFmOTUyMzVkZWU0ZTlj
ZGZmM2RjYzIyYmFiOWJkZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAg
VEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE1hdGNoTm9t
aW5hbEZyYW1lUmF0ZSkKICAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsg
VGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDkwLCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNv
bmQoNDUpKTsKICAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0
bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDUwLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRN
YXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoMjUp
KTsKIAotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJvdHRsaW5n
UmVhc29uOjpPdXRzaWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kLCBwcmVm
ZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKSwgV1RGOjpu
dWxsb3B0KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0
bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCwg
cHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGluZyksIHN0
ZDo6bnVsbG9wdCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmRUYXJnZXQ2MEZQUykKQEAgLTIwNyw3ICsyMDcsNyBAQCBURVNUKEFuaW1hdGlv
bkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFMpCiAgICAgQVNT
RVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Okxvd1Bv
d2VyTW9kZSB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFNTZXR0aW5n
KS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoNDUpKTsKICAgICBBU1NFUlRfRVEocHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDUwLCBw
cmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLnZhbHVlKCksIEZyYW1l
c1BlclNlY29uZCgyNSkpOwogCi0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQ
ZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZyksIFdU
Rjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRo
cm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQZXJTZWNv
bmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZyksIHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmRGcm9tSW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwCmluZGV4IDY1ZWFjZDAzOTJmN2VjMWJkNDBhNDUz
NjMwNGMyZDMyODEzMTZjZDkuLmU0ZjdlM2MxY2NiMTgzOWZlOGUzZjZjNjA3NzcyMDQxNTBhZjE1
MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVx
dWVzdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFw
UmVxdWVzdFRlc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBU
ZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW0pCiAgICAgVmVjdG9yPFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFtcyB7IHsgUHVi
bGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tleUNyZWRlbnRp
YWxUeXBlOjpQdWJsaWNLZXksIDI1NyB9IH07CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhIHNlbGVjdGlvbiB7IEF1
dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgdHJ1ZSwgVXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50OjpQcmVmZXJyZWQgfTsKIAotICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgV1RGOjpudWxsb3B0LCB7
IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgV1RG
OjpudWxsb3B0IH07CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9u
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQgfTsK
ICAgICBWZWN0b3I8dWludDhfdD4gaGFzaDsKICAgICBoYXNoLmFwcGVuZChUZXN0RGF0YTo6a0Ns
aWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpOwogICAgIGF1
dG8gc2VyaWFsaXplZERhdGEgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoaGFz
aCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkKTsKQEAgLTg0LDcgKzg0LDcg
QEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVl
c3RQYXJhbU5vVVZOb1JLKQogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOjpQYXJhbWV0ZXJzPiBwYXJhbXMgeyB7IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQ
dWJsaWNLZXksIDcgfSwgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCAyNTcg
fSB9OwogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhlbnRpY2F0
b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb24geyBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
UGxhdGZvcm0sIGZhbHNlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OkRpc2NvdXJhZ2Vk
IH07CiAKLSAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBy
cCwgdXNlciwgeyB9LCBwYXJhbXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0s
IHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlh
bmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9m
KFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0g
ZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRp
Y2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3Vw
cG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgVEVTVChDVEFQUmVxdWVz
dFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVVWUmVxdWlyZWRC
dXROb3RTdXAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6
UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5
LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKICAg
ICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0
aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3Jt
LCBmYWxzZSwgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCB9OwogCi0gICAg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsg
fSwgcGFyYW1zLCBXVEY6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZl
eWFuY2VQcmVmZXJlbmNlOjpOb25lLCBXVEY6Om51bGxvcHQgfTsKKyAgICBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0
ZDo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVu
Y2U6Ok5vbmUsIHN0ZDo6bnVsbG9wdCB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBoYXNoOwogICAg
IGhhc2guYXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6
a0NsaWVudERhdGFIYXNoKSk7CiAgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29kZU1ha2VD
cmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9yU3VwcG9y
dGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a05vdFN1cHBvcnRlZCk7
CkBAIC0xMzQsNyArMTM0LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RN
YWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVdpdGhQaW4pCiAgICAgcGluLnByb3RvY29sID0gcGlu
OjprUHJvdG9jb2xWZXJzaW9uOwogICAgIHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0YTo6a0N0YXAy
UGluQXV0aCwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoKSk7CiAKLSAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJh
bXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxs
b3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9u
ZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5h
cHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50
RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0
YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRp
b25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJl
ZCwgcGluKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Q
YXJzZWRDb250ZW50UmFuZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKaW5kZXggMjVkMmQ2NzdmYjg4ODYyMjVmZTMxZGI0OThl
NWQ3NWQ2YzYwMGY0MC4uNjRmZTAxNzQxYTM4MmIxNzVmODI4MjMyMzI5YzNmYWVmYjQ2ODk4YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNlZENvbnRl
bnRSYW5nZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNl
ZENvbnRlbnRSYW5nZS5jcHAKQEAgLTExMiwxMSArMTEyLDExIEBAIFRFU1QoV2ViQ29yZSwgUGFy
c2VkUmVxdWVzdFJhbmdlKQogICAgICAgICAiYnl0ZXM9MS05OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTkiCiAgICAgfTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGlucHV0IDogZmFpbHVyZUNhc2VzKQot
ICAgICAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBQYXJzZWRSZXF1ZXN0UmFuZ2U6OnBhcnNl
KGlucHV0KSk7CisgICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIFBhcnNlZFJlcXVlc3RS
YW5nZTo6cGFyc2UoaW5wdXQpKTsKIAogICAgIGF1dG8gY29tcGFyZSA9IFtdIChjb25zdCBTdHJp
bmcmIGlucHV0LCBPcHRpb25hbDxzaXplX3Q+IGJlZ2luLCBPcHRpb25hbDxzaXplX3Q+IGVuZCkg
ewogICAgICAgICBhdXRvIHJhbmdlID0gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShpbnB1dCk7
Ci0gICAgICAgIEVYUEVDVF9ORShXVEY6Om51bGxvcHQsIHJhbmdlKTsKKyAgICAgICAgRVhQRUNU
X05FKHN0ZDo6bnVsbG9wdCwgcmFuZ2UpOwogICAgICAgICAKICAgICB9OwogICAgIGNvbXBhcmUo
ImJ5dGVzPTEtMSIsIDEsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2FtcGxlTWFwLmNwcAppbmRleCA0YmI0MmVlYWRiYzQ0ZmE4Nzg0ZWRjMmQ4OTQ0YmM1MjE2
NjdmZDMzLi40ODE4ZjNmODEzZjMyZTFiNWNlY2NjZjA4MDk3ODk4ZmY4YWU4ODcyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApAQCAtNzIs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxwdHJ9fTsg
fQotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCmluZGV4IGUy
NjE3OTMzNDI1MjI0M2JhNWYxNDE4MGY3MjI0ZWI3NzU0ZGNhMWYuLmViMjFiY2RiZTdhYjA4ZWQ2
ZmVkZTQxN2U0ZmZhYWU2NTJlNjUxYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCkBAIC05Niw3
ICs5Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3Jk
LCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5o
b3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZU9yKDAp
KTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEyMCw3ICsxMjAs
NyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVz
ZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJs
LnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgp
KSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7Cisg
ICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5m
cmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
CmluZGV4IGE1OThkNTRhMjc1Mjk1OGM0MmU0ZTJiNzllNTMzN2M1N2IxNzRiNDYuLjBlMGU0MDQ3
NjY4NWI2OTI3MzMwOWE1Nzg2OGQ3ZTZhZmQyOTllZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3Np
bmdSZXNvdXJjZSkKICAgICAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKICAg
ICAgICAgRVhQRUNUX0VRKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCwgbGlzdC5zaXplSW5CeXRl
cygpKTsKICAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZywgU3RvcFJl
cGxheVJlYXNvbjo6UmVwbGF5ZWRBbGxJdGVtcyk7Ci0gICAgICAgIEVYUEVDVF9FUShyZXN1bHQu
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
RVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBzdGQ6Om51
bGxvcHQpOwogICAgIH0KIH0KIApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIE9wdGlv
bmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAogICAgIHsKICAgICAg
ICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfTsKIApA
QCAtMTM0LDggKzEzNCw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgT3V0T2ZMaW5lSXRlbURl
Y29kaW5nRmFpbHVyZSkKICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIHNoYWxsb3dD
b3B5IH07CiAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKICAgICBFWFBFQ1Rf
R1QocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5u
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgV1RGOjpudWxsb3B0KTsKLSAgICBFWFBFQ1RfRVEo
cmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCk7Cisg
ICAgRVhQRUNUX0VRKHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgc3RkOjpudWxs
b3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGlu
ZywgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCk7CiB9CiAKQEAgLTE1OCw4
ICsxNTgsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIElubGluZUl0ZW1WYWxpZGF0aW9uRmFp
bHVyZSkKICAgICAgICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0IH07CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVDVF9FUShy
ZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIDBVKTsKLSAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5u
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgRVhQRUNU
X0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQp
OworICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyLCBz
dGQ6Om51bGxvcHQpOworICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIEVYUEVDVF9FUShyZXN1bHQu
cmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQp
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggNzU3ZWMyNDI1ODUx
MWE3ZjkxMjExYWFjY2ExNDUxZjNhYmRlMmIxMS4uMDkwNWM3ZTAwMThlZDQ4YmU3MDQ4ZTQxMjAx
MGU2NDcwOTJlY2Q5MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTQ0LDcgKzQ0
LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiAg
ICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGRh
dGFiYXNlRmlsZVBhdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0
ZW06OmZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgpLnZhbHVlX29yKDApOwogICAgIEVYUEVDVF9F
USgwVSwgZmlsZVNpemUpOwogCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxl
dGVEYXRhYmFzZUZpbGVJZkVtcHR5KGRhdGFiYXNlRmlsZVBhdGgpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KaW5kZXggYmRlYWNi
NDRjODZlNjM5YTk0YTYwODg0MmVhYjI3ZjZjYThmMGI3Yi4uNGQ3YjA0Mzg0Yjc1MDUyZjBiOGVi
MmY4NTE1NWY1ODY5MzY1ZDZmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KQEAgLTU1MSw3ICs1NTEsNyBAQCBURVNUKFdlYktp
dCwgRmFzdFNlcnZlclRydXN0KQogI2Vsc2UKICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZl
cjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wqIHNzbCkgewogICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3NsKTsKLSAgICB9LCBXVEY6Om51bGxvcHQsIDIpOworICAgIH0sIHN0ZDo6bnVsbG9wdCwgMik7
CiAjZW5kaWYKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggN2M0ZDFlNTRkYjc1YzkyODYxMDg0
NjEzNTgxNzZkODU0ZjcyYzMzYS4uNjExMWY2YjM2N2FjMzY2YTM1MmRjZjY1NjlkM2I5MmI4MDRi
NTE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0xMTUyLDggKzExNTIsOCBAQCBU
RVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAgICAgfV07CiAgICAgCiAg
ICAgYXV0byBydW5UZXN0ID0gWyZdIHsKLSAgICAgICAgbG9hZFN1Y2Nlc3MgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIHdlYlNvY2tldFN1Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxv
YWRTdWNjZXNzID0gc3RkOjpudWxsb3B0OworICAgICAgICB3ZWJTb2NrZXRTdWNjZXNzID0gc3Rk
OjpudWxsb3B0OwogICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKQEAgLTEyMzAsNyAr
MTIzMCw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0c1JlZGly
ZWN0KQogICAgIH1dOwogCiAgICAgYXV0byBydW5UZXN0ID0gWyZdIHsKLSAgICAgICAgbG9hZFN1
Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxvYWRTdWNjZXNzID0gc3RkOjpudWxsb3B0
OwogICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9y
ZV07CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CkBAIC0xNjAyLDggKzE2MDIsOCBAQCBURVNUKFVSTFNjaGVtZUhh
bmRsZXIsIFJhbmdlcykKIAogICAgICAgICBhdXRvIHJhbmdlQmVnaW5TdHJpbmcgPSByZXF1ZXN0
UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwgZGFzaCAt
IGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSk7CiAgICAgICAgIGF1dG8gcmFuZ2VFbmRTdHJp
bmcgPSByZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQgLSBkYXNoIC0g
MSk7Ci0gICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmFu
Z2VCZWdpblN0cmluZykudmFsdWVPcigwKTsKLSAgICAgICAgYXV0byByYW5nZUVuZCA9IHJhbmdl
RW5kU3RyaW5nID09ICIqIiA/IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHBhcnNlSW50ZWdlcjx1aW50
NjRfdD4ocmFuZ2VFbmRTdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VCZWdp
biA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmFuZ2VCZWdpblN0cmluZykudmFsdWVfb3IoMCk7
CisgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBbdmlkZW9E
YXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5nKS52YWx1
ZV9vcigwKTsKIAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
d2Via2l0Lm9yZy8iXSBzdGF0dXNDb2RlOjIwNiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4xIiBoZWFk
ZXJGaWVsZHM6QHsKICAgICAgICAgICAgIEAiQ29udGVudC1SYW5nZSIgOiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImJ5dGVzICVsbHUtJWxsdS8lbHUiLCByYW5nZUJlZ2luLCByYW5nZUVu
ZCwgKHVuc2lnbmVkIGxvbmcpW3ZpZGVvRGF0YSBsZW5ndGhdXSwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5k
ZXggMjkzMjE0MGQ2M2Y3MWRjMDc0OTEzNmU0NzIzOTAzZjNhZGIzZmIxMC4uNjY0ZDk1NzNhYmRl
OTIwNzEzZmQ5ZGYwYmU1N2VlNTYwNDNiMTk2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTM3MSw3
ICszNzEsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGxheUFm
dGVyUHJldmVudGVkQXV0b3BsYXkpCiAKICAgICBOU1BvaW50IHBsYXlCdXR0b25DbGlja1BvaW50
ID0gTlNNYWtlUG9pbnQoMjAsIDI1Nik7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBX
VEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0Owog
ICAgIE5TVVJMUmVxdWVzdCAqanNQbGF5UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImpzLXBsYXktd2l0
aC1jb250cm9scyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVl
c3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07CkBAIC0zODMsNyAr
MzgzLDcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRl
clByZXZlbnRlZEF1dG9wbGF5KQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZl
bnRGbGFncyAmIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRfVFJV
RSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NQbGF5
YmFja1dhc1ByZXZlbnRlZCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51
bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVl
c3QgKmF1dG9wbGF5UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LXdpdGgtY29udHJvbHMi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdXTsKQEAgLTM5OCw3ICszOTgsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vi
c2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCiAgICAgQVNTRVJUX1RSVUUo
KnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdzSGFzQXVk
aW8pOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIF9XS0F1
dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkKTsKIAotICAgIHJlY2VpdmVkQXV0
b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmls
XTsKIAogICAgIE5TVVJMUmVxdWVzdCAqbm9BdXRvcGxheVJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJu
by1hdXRvcGxheS13aXRoLWNvbnRyb2xzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC00MDcsOSArNDA3LDkgQEAgVEVT
VChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZlbnRlZEF1
dG9wbGF5KQogICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNsaWNrUG9p
bnQgc2ltdWxhdGVQcmVzc3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91c2VVcEF0UG9pbnQ6cGxh
eUJ1dHRvbkNsaWNrUG9pbnRdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWVk
Il07Ci0gICAgQVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9w
dCk7CisgICAgQVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6bnVsbG9w
dCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVj
ZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBbZGVsZWdhdGUgc2V0QXV0b3BsYXlQb2xp
Y3lGb3JVUkw6XihOU1VSTCAqKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgVEVTVChXZWJwYWdlUHJl
ZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUpCiAgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlF
dmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51
bGxvcHQ7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQ
b2ludCA9IE5TTWFrZVBvaW50KDIwLCA1ODApOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIFRFU1QoV2Vi
cGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0dXJlKQog
ICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIF9XS0F1dG9wbGF5
RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRfRkFMU0UoKnJlY2VpdmVkQXV0b3BsYXlF
dmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdzTWVkaWFJc01haW5Db250ZW50KTsKIAot
ICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1
dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
dmlkZW8td2l0aC1wbGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOwpAQCAtNTAyLDcgKzUwMiw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBX
ZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0g
V1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBOU1VSTFJlcXVlc3QgKmpzUGxheVJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJqcy1hdXRvcGxh
eS1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVlc3Rd
OwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1dG9wbGF5RXZlbnREaWRB
dXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlKTsKQEAgLTUy
NiwyMCArNTI2LDIwIEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNV
c2VySW50ZXJmZXJlbmNlV2l0aFBsYXlpbmcpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsK
KyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgTlNVUkxSZXF1
ZXN0ICpqc1BsYXlSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAianMtcGxheS13aXRoLWNvbnRyb2xzIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6anNQbGF5UmVxdWVzdF07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07Ci0gICAgQVNTRVJUX1RSVUUocmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX1RSVUUocmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBXS1BhZ2VTZXRNdXRlZChb
d2ViVmlldyBfcGFnZUZvclRlc3RpbmddLCBfV0tNZWRpYUF1ZGlvTXV0ZWQpOwogICAgIHJ1blVu
dGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50ZXJmZXJl
V2l0aFBsYXliYWNrKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50Rmxh
Z3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAKLSAgICByZWNlaXZlZEF1dG9w
bGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3Rk
OjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVlc3RdOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwotICAgIEFTU0VSVF9UUlVFKHJl
Y2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9UUlVFKHJl
Y2VpdmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51bGxvcHQpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGNvbnN0IE5TUG9pbnQgbXV0ZUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQb2ludCg4
MCwgMjU2KTsKQEAgLTU1MiwxMCArNTUyLDEwIEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBX
ZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBsYXlpbmcpCiAgICAgcnVuVW50aWxS
ZWNlaXZlc0F1dG9wbGF5RXZlbnQoX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZlcmVXaXRo
UGxheWJhY2spOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAm
IF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlF
dmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51
bGxvcHQ7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6anNQbGF5UmVxdWVzdF07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07Ci0gICAgQVNTRVJUX1RSVUUocmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX1RSVUUocmVjZWl2
ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6bnVsbG9wdCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgY29uc3QgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIwLCAy
NTYpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRl
UG9saWNpZXNVcGRhdGVzKQogICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVyZW5jZXM6
cHJlZmVyZW5jZXMuZ2V0KCldOwogCiAgICAgLy8gQSBzY3JpcHQgc2hvdWxkIG5vIGxvbmdlciBi
ZSBhYmxlIHRvIGF1dG9wbGF5IG1lZGlhLgotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRlbygpIl07
CiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoX1dLQXV0b3BsYXlFdmVudERpZFBy
ZXZlbnRGcm9tQXV0b3BsYXlpbmcpOwogfQpAQCAtODI4LDcgKzgyOCw3IEBAIFRFU1QoV2VicGFn
ZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrcykKICAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheSJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAib24tcGF1c2UiXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6
bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKIAogICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdFdpdGhBdWRpb0luRnJhbWUgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxheS1jaGVj
ay1pbi1pZnJhbWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKQEAgLTg0Niw3ICs4NDYsNyBAQCBURVNUKFdlYnBhZ2VQcmVm
ZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3MpCiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAIm9uLXBhdXNlIl07CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxv
cHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3RUaGF0SW5oZXJpdHNHZXN0dXJlID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXktaW5oZXJp
dHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC04NzQsNyArODc0LDcgQEAgVEVT
VChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0b3BsYXlC
ZWhhdmlvclF1aXJrcykKICAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwogICAgIFdLUGFnZUdyb3VwU2V0UHJlZmVyZW5j
ZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBwcmVmZXJl
bmNlcy5nZXQoKSk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7
CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0V2l0aE11bHRpcGxlTWVkaWFFbGVtZW50cyA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1
dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAKQEAgLTkwMyw3ICs5
MDMsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVyRG9jdW1l
bnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQogCiAgICAgLy8gTm93IGxldCdzIHRlc3QgdGhpcyB3
aXRob3V0IHRoZSBxdWlyay4KICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVS
TDpuaWxdOwotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICBy
ZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBbZGVsZWdhdGUgc2V0
QWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWlyayhOU1VS
TCAqdXJsKSB7CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTUxLDcgKzk1MSw3IEBAIFRFU1QoV2Vi
cGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrc0FzeW5jUG9saWN5
RGVsZWdhdGUpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNlIl07CiAKLSAgICByZWNlaXZl
ZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50
ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJM
Om5pbF07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoQXVkaW9JbkZyYW1lID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJl
c291cmNlOkAiYXV0b3BsYXktY2hlY2staW4taWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggYjkyMjk3N2UwMDRkM2Y4ZjBmNWExZjQ5ZGZiZjIw
NmQ1M2RlZjk5Ny4uOWEzMTgzMzkxNThhYWU5YjM1YWVhZjVjZGY3YjkyOWMyOWM3NmM2ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMTUyNCw5ICsxNTI0LDkgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zTWluaW11bikKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJhbXNbMF0u
dHlwZSwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zWzBdLmFsZywgLTcpOwogCi0gICAgRVhQ
RUNUX0VRKHJlc3VsdC50aW1lb3V0LCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1
bHQudGltZW91dCwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVD
cmVkZW50aWFscy5zaXplKCksIDBsdSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNh
dG9yU2VsZWN0aW9uLCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1bHQuYXV0aGVu
dGljYXRvclNlbGVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmF0
dGVzdGF0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKICAgICBF
WFBFQ1RfVFJVRShyZXN1bHQuZXh0ZW5zaW9ucy0+YXBwaWQuaXNOdWxsKCkpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQuZXh0ZW5zaW9ucy0+Z29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0LCBmYWxzZSk7
CkBAIC0xNTc3LDcgKzE1NzcsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNNYXhpbXVtRGVmYXVsdCkKICAgICBFWFBFQ1Rf
RVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5zaXplKCksIHNpemVvZihp
ZGVudGlmaWVyKSk7CiAgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQuZXhjbHVkZUNyZWRlbnRp
YWxzWzBdLmlkVmVjdG9yLmRhdGEoKSwgaWRlbnRpZmllciwgc2l6ZW9mKGlkZW50aWZpZXIpKSwg
MCk7CiAKLSAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24tPmF1dGhl
bnRpY2F0b3JBdHRhY2htZW50LCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1bHQu
YXV0aGVudGljYXRvclNlbGVjdGlvbi0+YXV0aGVudGljYXRvckF0dGFjaG1lbnQsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5yZXF1
aXJlUmVzaWRlbnRLZXksIGZhbHNlKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0
b3JTZWxlY3Rpb24tPnVzZXJWZXJpZmljYXRpb24sIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVu
dDo6UHJlZmVycmVkKTsKIApAQCAtMTc5OCw3ICsxNzk4LDcgQEAgVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNNaW5pbXVuKQogICAg
IGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnMgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHJlc3VsdCA9IFtfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnMu
Z2V0KCldOwogCi0gICAgRVhQRUNUX0VRKHJlc3VsdC50aW1lb3V0LCBXVEY6Om51bGxvcHQpOwor
ICAgIEVYUEVDVF9FUShyZXN1bHQudGltZW91dCwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1Rf
VFJVRShyZXN1bHQucnBJZC5pc051bGwoKSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hbGxvd0Ny
ZWRlbnRpYWxzLnNpemUoKSwgMGx1KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXJWZXJpZmlj
YXRpb24sIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5
Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA4MDRhNGYyMTJlNGUzOTc5ZDEwYzgwZDgxYjY0YWJk
MDQ5NDZhODQzLi42ZjZlZGQxMWY2ZjhlNWUzZjljZjc3NmViMTNhY2U0Mjk5YzhjNzcyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBv
bGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBwdWJsaWM6
CiAKICAgICBib29sIGxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChjb25zdCBjaGFyKiB1cmks
IFdlYktpdEF1dG9wbGF5UG9saWN5IHBvbGljeSkKICAgICB7Ci0gICAgICAgIG1fYXV0b3BsYXll
ZCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9hdXRvcGxheWVkID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICBtX3dlYnNpdGVQb2xpY2llcyA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9wb2xp
Y2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXkiLCBwb2xpY3ksIG51bGxwdHIpKTsKICAg
ICAgICAgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6VXNlV2l0
aFBvbGljeTsKIAogICAgICAgICBsb2FkVVJJKHVyaSk7CiAgICAgICAgIC8vIFJ1biB1bnRpbCB0
aGUgdXNlciBjb250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIHRoZSB0ZXN0IEhUTUwuCiAg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgcmV0dXJuIG1fYXV0
b3BsYXllZC52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fYXV0b3BsYXllZC52YWx1
ZV9vcihmYWxzZSk7CiAgICAgfQogCiAgICAgYm9vbCBydW5KU0FuZFdhaXRGb3JBdXRvUGxheWVk
KGNvbnN0IGNoYXIqIHNjcmlwdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKaW5kZXggZmYwNDNkYjYzZGY2YTVi
YTlhZGI3OGEwNjllNjZiMGE3MGU5Mzk0NC4uN2QwY2FlM2RhMzM4YzFjYjIxNTJjNzAzMDY5ZjI0
YzZmZDJiYjMzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAgLTEwOCw1ICsxMDgsNSBAQCBDU3RyaW5n
IFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QK
IAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fYmFzZVVSTC5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gbV9iYXNlVVJMLnBvcnQo
KS52YWx1ZV9vcigwKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvRGlj
dGlvbmFyeUZ1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EaWN0aW9uYXJ5RnVu
Y3Rpb25zLmgKaW5kZXggYmEzMzBmMGZjNjIwODMxODhlZjcwMjk5NGVlNGQyMWMwOTFlNDU4NS4u
ODRjOWQ5MTMxOTExZWI2NzcxNjgyNjc0NWZiY2VkYmFhZWE3ZDdiYSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9EaWN0aW9uYXJ5RnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9EaWN0aW9uYXJ5RnVuY3Rpb25zLmgKQEAgLTg3LDcgKzg3LDcgQEAgaW5s
aW5lIGRvdWJsZSBkb3VibGVWYWx1ZShXS1R5cGVSZWYgdmFsdWUpCiAKIGlubGluZSBPcHRpb25h
bDxkb3VibGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQogewotICAgIHJl
dHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSA/
IG1ha2VPcHRpb25hbChXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91YmxlUmVmPih2
YWx1ZSkpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdmFsdWUgJiYgV0tHZXRUeXBlSUQo
dmFsdWUpID09IFdLRG91YmxlR2V0VHlwZUlEKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoV0tEb3Vi
bGVHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4odmFsdWUpKSkgOiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGlubGluZSBXS1N0cmluZ1JlZiBzdHJpbmdWYWx1ZShXS1R5cGVSZWYgdmFsdWUp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJvdmlkZXJN
b2NrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2su
Y3BwCmluZGV4IGM0MjUxYjMwMWZiNTU0YzdlYWU2MDMxNjI3NTk2ZjUwYjc4YTI1OWQuLmMyYTYz
YjM4YjU1NzhkODRiNmUyMDRmNzQwYjM0YzViM2NhYTg2YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwCkBAIC02NSw3ICs2NSw3
IEBAIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrOjp+R2VvbG9jYXRpb25Qcm92aWRlck1vY2soKQog
CiB2b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrOjpzZXRQb3NpdGlvbihkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91YmxlPiBh
bHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25hbDxkb3Vi
bGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJsZT4gZmxv
b3JMZXZlbCkKIHsKLSAgICBtX3Bvc2l0aW9uLmFkb3B0KFdLR2VvbG9jYXRpb25Qb3NpdGlvbkNy
ZWF0ZV9jKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSwgbGF0
aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlLmhhc1ZhbHVlKCksIGFsdGl0dWRl
LnZhbHVlT3IoMCksIGFsdGl0dWRlQWNjdXJhY3kuaGFzVmFsdWUoKSwgYWx0aXR1ZGVBY2N1cmFj
eS52YWx1ZU9yKDApLCBoZWFkaW5nLmhhc1ZhbHVlKCksIGhlYWRpbmcudmFsdWVPcigwKSwgc3Bl
ZWQuaGFzVmFsdWUoKSwgc3BlZWQudmFsdWVPcigwKSwgZmxvb3JMZXZlbC5oYXNWYWx1ZSgpLCBm
bG9vckxldmVsLnZhbHVlT3IoMCkpKTsKKyAgICBtX3Bvc2l0aW9uLmFkb3B0KFdLR2VvbG9jYXRp
b25Qb3NpdGlvbkNyZWF0ZV9jKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNl
Y29uZHMoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlLmhhc1ZhbHVl
KCksIGFsdGl0dWRlLnZhbHVlX29yKDApLCBhbHRpdHVkZUFjY3VyYWN5Lmhhc1ZhbHVlKCksIGFs
dGl0dWRlQWNjdXJhY3kudmFsdWVfb3IoMCksIGhlYWRpbmcuaGFzVmFsdWUoKSwgaGVhZGluZy52
YWx1ZV9vcigwKSwgc3BlZWQuaGFzVmFsdWUoKSwgc3BlZWQudmFsdWVfb3IoMCksIGZsb29yTGV2
ZWwuaGFzVmFsdWUoKSwgZmxvb3JMZXZlbC52YWx1ZV9vcigwKSkpOwogCiAgICAgbV9oYXNFcnJv
ciA9IGZhbHNlOwogICAgIG1fZXJyb3JNZXNzYWdlLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JU
ZXN0UnVubmVyLnBtIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQppbmRleCA3OWU2ZDQ4ZjJmNTlhZTJmOGQ2
ZmIzNzkxYmQ4YzhhZWU1Mjc2MzQ0Li45NTFiYzBhZjU5ZWIxZjU4ODZjNzEzMTMxOWNmNjZlZGY3
OGM1MTJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIu
cG0KQEAgLTUyOSw3ICs1MjksNyBAQCBzdWIgX3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRp
b24KICAgICBpZiAoJHBsYXRmb3JtVHlwZSBlcSAiSlNWYWx1ZVJlZiIpIHsKICAgICAgICAgJG51
bGxWYWx1ZSA9ICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSI7CiAgICAgfSBlbHNpZiAo
ZGVmaW5lZCAkbm9uUG9pbnRlclR5cGVzeyRwbGF0Zm9ybVR5cGV9IHx8ICQkc2VsZntjb2RlR2Vu
ZXJhdG9yfS0+SXNOdW1lcmljVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJG51bGxWYWx1ZSA9ICR0
eXBlLT5pc051bGxhYmxlID8gIldURjo6bnVsbG9wdCIgOiAiJHBsYXRmb3JtVHlwZSgpIjsKKyAg
ICAgICAgJG51bGxWYWx1ZSA9ICR0eXBlLT5pc051bGxhYmxlID8gInN0ZDo6bnVsbG9wdCIgOiAi
JHBsYXRmb3JtVHlwZSgpIjsKICAgICB9CiAKICAgICByZXR1cm4gImJvb2wgJHZhcmlhYmxlTmFt
ZSA9ICRjb25kaXRpb24gJiYgJGNvbnN0cnVjdG9yOyIgaWYgJGNvbmRpdGlvbiAmJiAkcGxhdGZv
cm1UeXBlIGVxICJib29sIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKaW5kZXggNjVhM2EwNGU2MzNkYzc4NzJhN2QwNWM5YjRlYTEyYTBmMzBlYTU4ZC4uZWNl
MzJlYTM3YTc2YzJkMDRlN2Y0Mjc3ODRjNDA5MzQzM2YwZGYxNCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBAIGRvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuc3RhcnRzV2l0aCgicm93Iikg
fHwgYXRrQXR0cmlidXRlTmFtZS5zdGFydHNXaXRoKCJjb2wiKSkgewogICAgICAgICBTdHJpbmcg
YXR0cmlidXRlVmFsdWUgPSBnZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9l
bGVtZW50LmdldCgpKSwgT2JqZWN0QXR0cmlidXRlVHlwZSwgYXRrQXR0cmlidXRlTmFtZSk7CiAg
ICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJu
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlVmFsdWUpLnZh
bHVlT3IoMCk7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGlu
Z0p1bms8aW50PihhdHRyaWJ1dGVWYWx1ZSkudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIDA7CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
aWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPGludD4oZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNU
KG1fZWxlbWVudC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUsICJsZXZlbCIpKS52YWx1ZU9y
KDApOworICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KGdl
dEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkpLCBPYmpl
Y3RBdHRyaWJ1dGVUeXBlLCAibGV2ZWwiKSkudmFsdWVfb3IoMCk7CiB9CiAKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggZjY4MmNh
Mjk4NzViMzY2ZWIxNmI1ZTc5ZjA2ZGQwZTBhNTFmYmQwNy4uMWU0YjI2MDFiZTkzNGMxYjVmOTQ5
OWMxNTQ5ZDg1ZjFmOGJhOWE5YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
SElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTgzNyw3ICs4MzcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
dWludDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0cmluZyAqa2V5KQogICAgICAg
ICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJG
JWQiLCBpXV0pCiAgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRjEzICsgaSAt
IDEzOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaGlkVXNhZ2VDb2RlRm9yQ2hhcmFj
dGVyKE5TU3RyaW5nICprZXkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggZTJkZDdkOGRhZGM0ZDc5MTc1NmE5M2RmODI0
MjE5MGQzOWIwNTAzOS4uYmNmNGJiYzY1M2U2MzNhMTVlNDExZmYxMTc4NThlODcyYTc5ODgyOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQpAQCAtNzU4LDcgKzc1OCw3IEBAIE9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiAgICAgaWYgKHdlYlZpZXcuX3N0
YWJsZVN0YXRlT3ZlcnJpZGUpCiAgICAgICAgIHJldHVybiB3ZWJWaWV3Ll9zdGFibGVTdGF0ZU92
ZXJyaWRlLmJvb2xWYWx1ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNldFN0YWJs
ZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429932</attachid>
            <date>2021-05-27 14:54:46 -0700</date>
            <delta_ts>2021-05-27 15:40:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226280-20210527145444.patch</filename>
            <type>text/plain</type>
            <size>2603754</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OGVjZjJiYTU1NDNjYmNjMzQ0OTdiMTJkZWU1YTk5YTJiY2U2YjMyLi41NjFmZTkzNzIwOTlhZjZj
MTMwYjg0ZTA5ZTNjNmMzMDYxNzg0M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGlu
c3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJl
bmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKKyAgICAgICAgKiB5YXJyL1lhcnJT
eW50YXhDaGVja2VyLmNwcDogU2luY2UgdGhlIHN0eWxlIGNoZWNrZXIgY29tcGxhaW5lZCBhYm91
dCB0aGlzIGZpbGUsCisgICAgICAgIHR3ZWFrZWQgc3R5bGUgdG8gbWFrZSBpdCBoYXBweSBhZnRl
ciB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZSwgYW5kCisgICAgICAgIGFs
c28gaGFuZC11cGRhdGVkIE9wdGlvbmFsIHRvIHN0ZDo6b3B0aW9uYWwgYXMgbG9uZyBhcyB3ZSB3
ZXJlIHRvdWNoaW5nIGl0LgorCiAyMDIxLTA1LTI3ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8
YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGxh
dGUgTWF5IDIwMjEgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjYTYwYmY0MjU5NzRlZGJlNWFiMmU1YzczYWVhZTM4
MzdlYWQ0YjUxLi40ZGI3M2M2YTEzM2QwOTEzZGEwYjc4ZTI0MmFhNjA5ZTc0YzMyYmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIxLTA1LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0
bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwgdHlwZWRlZgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0
aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZS4KKworICAgICAgICAqIHd0Zi9P
cHRpb25hbC5oOiBSZW1vdmUgV1RGOjpudWxsb3B0X3QgYW5kIFdURjo6bWFrZU9wdGlvbmFsLgor
CisgICAgICAgICogd3RmL1VSTEhlbHBlcnMuY3BwOgorICAgICAgICAoV1RGOjpVUkxIZWxwZXJz
OjptYXBIb3N0TmFtZSk6IENvbnZlcnQgZnJvbSBudWxsb3B0IHRvIHN0ZDo6bnVsbG9wdC4KKwog
MjAyMS0wNS0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmVydCByMjc3MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc1YjUyOGY4ZDM5NTQ2M2Fh
ODdkZTlkMGMxMDExMDA4NWFlMmY4Yi4uMzUzMzUzZGQ1Y2JmMmRjYmUzZWQxYTNjYzJiOGVhNjJj
OGFjMGY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTI3ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5n
IHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwg
dHlwZWRlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiA8
bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFt
ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVy
dGVyLmg6IFNpbmNlIHN0eWxlIGNoZWNrZXIgY29tcGxhaW5lZAorICAgICAgICBhYm91dCB0aGUg
bmFtZXMgb2Ygc29tZSBhcmd1bWVudHMsIGZpeGVkIHRoZW0sIGFuZCBhbHNvIGhhbmQtdXBkYXRl
ZCBPcHRpb25hbCB0bworICAgICAgICBzdGQ6Om9wdGlvbmFsIGFzIGxvbmcgYXMgd2Ugd2VyZSB0
b3VjaGluZyBpdC4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOiBTaW5jZSBz
dHlsZSBjaGVja2VyIGNvbXBsYWluZWQgYWJvdXQgdGhlIG1peCBvZgorICAgICAgICBXRUJDT1JF
X0VYUE9SVCBhbmQgaW5saW5lZCBmdW5jdGlvbnMsIG1vdmVkIHRoZW0gb3V0IG9mIGxpbmUsIGFu
ZAorICAgICAgICBhbHNvIGhhbmQtdXBkYXRlZCBPcHRpb25hbCB0byBzdGQ6Om9wdGlvbmFsIGFz
IGxvbmcgYXMgd2Ugd2VyZSB0b3VjaGluZyBpdC4KKyAgICAgICAgQWxzbyByZW1vdmVkIGlzPEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ+KCkuCisgICAgICAgICogbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaDogRGl0dG8uCisKIDIwMjEtMDUtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Igc29tZSBkYXRhIGRldGVjdG9yIGNv
ZGUgaW4gV2ViQ29yZTo6RnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNhNDFhY2FmNDNkMTcw
NDk1Yzc4YTZmYjlhZTJhOGQ2YmM0OTlhZTkuLjMxNmEwMzRkNDIxZTExM2I0MjQ5ZTk0YmU0NDQ4
Y2IyNmE3YzYyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1
LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBOZXh0IHN0ZXAg
dG93YXJkIHVzaW5nIHN0ZDo6b3B0aW9uYWwgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdU
Rjo6T3B0aW9uYWwgdHlwZWRlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2MjgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisK
KyAgICAgICAgKiA8bWFueSBmaWxlcz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13
ZWJjb3JlLXJlbmFtZS4KKwogMjAyMS0wNS0yNiAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFByZXZlbnQgc2JpeCBnbHlwaHMgZnJvbSBiZWluZyByZW5k
ZXJlZCBpbiB0aGUgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggZmMxYmVlZTAwNjFiYzdi
NDk3ZDlkYzBlMGQzMjZlZmVkMTFhMjYxOC4uOTNlOGNkODczZjUxOGQzZmQ0NWMxOTVhNGJjYWIx
OWUxM2RhOTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2Fy
ZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9w
dGlvbmFsIHR5cGVkZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjI4MAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29y
ZS1yZW5hbWUuCisKIDIwMjEtMDUtMTMgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bn
bm9tZS5vcmc+CiAKICAgICAgICAgTWlzYyBHQ0Mgd2FybmluZyBjbGVhbnVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGJmYTIxMGY4Y2JjNWI1NGUxMDkwYTk4OGJiOGFkMjA2NmNmNTA3MmYuLjYwMmJjZDdlYjk2MmQz
NzhkNGIxMGY3NDk2NTA0ODBjZmM4MDMzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjEtMDUtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQg
c3RlcCB0b3dhcmQgdXNpbmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91
Z2ggV1RGOjpPcHRpb25hbCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1l
ei4KKworICAgICAgICAqIDxtYW55IGZpbGVzPjogQWNjZXB0IHRoZSByZW5hbWluZyBkb25lIGJ5
IGRvLXdlYmNvcmUtcmVuYW1lLgorCiAyMDIxLTA1LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIyNzczNDQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cKaW5kZXggN2E1YTFjYWU0YzExYjg2NTAzZGY2MWMwYTg5MzRmOTkwZjE1MGM0Mi4u
NTBjYWNlMDNlM2U3NjJhZmMwZjIyZDQ1M2FkOTNmNjY1ZDJhMWY5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFs
IGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VG
b3JPcmlnaW4pOiBBY2NlcHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUu
CisKIDIwMjEtMDUtMjQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBTdHJpbmdCdWlsZGVyOjphcHBlbmRMaXRlcmFsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggMTk3ODYxOTYzMDI1ZGQ4NTJlZTAyZGYzMjJiMjMyZTAyOGZjZTA4OS4uODZl
YzIyODQxNjc3YWVlY2Y0NzgxYzNmZmE1N2JjYzAwMWJmMzA0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA1LTI3ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBOZXh0IHN0ZXAgdG93YXJkIHVzaW5nIHN0ZDo6b3B0
aW9uYWwgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoIFdURjo6T3B0aW9uYWwgdHlwZWRlZgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MjgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiA8bWFueSBmaWxl
cz46IEFjY2VwdCB0aGUgcmVuYW1pbmcgZG9uZSBieSBkby13ZWJjb3JlLXJlbmFtZS4KKwogMjAy
MS0wNS0yNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBWaXJ0dWFsaXplIEdyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGY5NmE2YzRkOWRmNGI0MGNkY2JlYjc2NWY3N2U2NGU4MDNhYmU2NDguLjYzZGI5YTIxNTk1
NTBiODU0N2NhNDkwYWZhZmE2YzU2NGQ5N2I5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wNS0yNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTmV4dCBzdGVwIHRvd2FyZCB1c2luZyBzdGQ6Om9wdGlvbmFsIGRp
cmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXVEY6Ok9wdGlvbmFsIHR5cGVkZWYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2Nl
cHQgdGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjUg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVmlydHVh
bGl6ZSBHcmFwaGljc0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggMDVhMWZlZDY1NzYwOGQzZmM1MWQ5
ZTM1MzhhNmYzODUwODBjODllYi4uNjBlZDIyMTQyNjM4NTcwNmJhMTEyNWYxYjkwZWI0YTg0NzJk
MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUluc3Bl
Y3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1JlbW90ZUlu
c3BlY3RvclNlcnZlci5jcHAKQEAgLTM1LDYgKzM1LDYgQEAgdWludDE2X3QgSlNSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXJTdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50MTZfdCBwb3J0KQogICAg
IGlmICghc2VydmVyLnN0YXJ0KGFkZHJlc3MsIHBvcnQpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiBzZXJ2ZXIuZ2V0UG9ydCgpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIHNlcnZl
ci5nZXRQb3J0KCkudmFsdWVfb3IoMCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2xh
c3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NsYXNzLmNwcAppbmRl
eCBiZTU3YTJlMWI3ZjA3NDg5ODY4MDlmM2I1NzdlMTAwYWRjNTllMDVmLi5hNGUxYjU0MmJmZmM0
OTY3ZWFlNzlkOTQ4OWQyYzg0MDcwZDM5NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ2xhc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDbGFzcy5jcHAKQEAgLTY5OCw3ICs2OTgsNyBAQCBKU0NWYWx1ZSoganNjX2Ns
YXNzX2FkZF9jb25zdHJ1Y3Rvcl92YXJpYWRpYyhKU0NDbGFzcyoganNjQ2xhc3MsIGNvbnN0IGNo
YXIqIG5hbQogICAgIGlmICghbmFtZSkKICAgICAgICAgbmFtZSA9IHByaXYtPm5hbWUuZGF0YSgp
OwogCi0gICAgcmV0dXJuIGpzY0NsYXNzQ3JlYXRlQ29uc3RydWN0b3IoanNjQ2xhc3MsIG5hbWUg
PyBuYW1lIDogcHJpdi0+bmFtZS5kYXRhKCksIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5v
dGlmeSwgcmV0dXJuVHlwZSwgV1RGOjpudWxsb3B0KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIGpz
Y0NsYXNzQ3JlYXRlQ29uc3RydWN0b3IoanNjQ2xhc3MsIG5hbWUgPyBuYW1lIDogcHJpdi0+bmFt
ZS5kYXRhKCksIGNhbGxiYWNrLCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSwgcmV0dXJuVHlwZSwg
c3RkOjpudWxsb3B0KS5sZWFrUmVmKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGpzY0NsYXNzQWRkTWV0
aG9kKEpTQ0NsYXNzKiBqc2NDbGFzcywgY29uc3QgY2hhciogbmFtZSwgR0NhbGxiYWNrIGNhbGxi
YWNrLCBncG9pbnRlciB1c2VyRGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveU5vdGlmeSwgR1R5
cGUgcmV0dXJuVHlwZSwgT3B0aW9uYWw8VmVjdG9yPEdUeXBlPj4mJiBwYXJhbWV0ZXJzKQpAQCAt
ODIzLDcgKzgyMyw3IEBAIHZvaWQganNjX2NsYXNzX2FkZF9tZXRob2RfdmFyaWFkaWMoSlNDQ2xh
c3MqIGpzY0NsYXNzLCBjb25zdCBjaGFyKiBuYW1lLCBHQ2FsbGJhCiAgICAgZ19yZXR1cm5faWZf
ZmFpbChjYWxsYmFjayk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChqc2NDbGFzcy0+cHJpdi0+Y29u
dGV4dCk7CiAKLSAgICBqc2NDbGFzc0FkZE1ldGhvZChqc2NDbGFzcywgbmFtZSwgY2FsbGJhY2ss
IHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5LCByZXR1cm5UeXBlLCBXVEY6Om51bGxvcHQpOworICAg
IGpzY0NsYXNzQWRkTWV0aG9kKGpzY0NsYXNzLCBuYW1lLCBjYWxsYmFjaywgdXNlckRhdGEsIGRl
c3Ryb3lOb3RpZnksIHJldHVyblR5cGUsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIC8qKgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKaW5kZXggMTkwY2I4ODVmYzRh
NThkMjFlODEzMjQ2OTRiNWE2MGRlYTZkOGJmMy4uMzU5MWJiNzkyNDQ0NTI1MWM1OTI3ZWFjYjJm
ZTI4ODkyYWZjNTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFs
dWUuY3BwCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBKU0NWYWx1ZSoganNjX3ZhbHVlX25ld19mdW5j
dGlvbl92YXJpYWRpYyhKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBuYW1lLAogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEpTQ19JU19DT05URVhUKGNvbnRleHQpLCBudWxscHRyKTsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjYWxsYmFjaywgbnVsbHB0cik7CiAKLSAgICByZXR1
cm4ganNjVmFsdWVGdW5jdGlvbkNyZWF0ZShjb250ZXh0LCBuYW1lLCBjYWxsYmFjaywgdXNlckRh
dGEsIGRlc3Ryb3lOb3RpZnksIHJldHVyblR5cGUsIFdURjo6bnVsbG9wdCkubGVha1JlZigpOwor
ICAgIHJldHVybiBqc2NWYWx1ZUZ1bmN0aW9uQ3JlYXRlKGNvbnRleHQsIG5hbWUsIGNhbGxiYWNr
LCB1c2VyRGF0YSwgZGVzdHJveU5vdGlmeSwgcmV0dXJuVHlwZSwgc3RkOjpudWxsb3B0KS5sZWFr
UmVmKCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvd2tidWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQppbmRleCA3NGM5Njk0
ZjE1YmE5NDE4MTcwNjY2YzI1MTcyNjI5Nzc5ZGZkNzk0Li40OThhMjhlMmE0ODFlMzQ0OTI0NGEw
N2FiNDAyY2ZlNGI0YTA5ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2Ny
aXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU2NyaXB0cy93a2J1aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQpAQCAtODUs
NyArODUsNyBAQCAke21hY3JvUHJlZml4fV9GT1JFQUNIXyR7b2JqZWN0TWFjcm99X0JVSUxUSU5f
Q09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJBVE9SKQogI2RlZmluZSBERUZJTkVfQlVJTFRJTl9H
RU5FUkFUT1IoY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgb3ZlcnJpZGRlbk5hbWUsIGFyZ3VtZW50
Q291bnQpIFxcCiBKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZSogY29kZU5hbWUjI0dlbmVyYXRvcihK
U0M6OlZNJiB2bSkgXFwKIHtcXAotICAgIHJldHVybiB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+
Y29kZU5hbWUjI0V4ZWN1dGFibGUoKS0+bGluayh2bSwgbnVsbHB0ciwgdm0uYnVpbHRpbkV4ZWN1
dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSwgV1RGOjpudWxsb3B0LCBzXyMjY29kZU5hbWUj
I0ludHJpbnNpYyk7IFwKKyAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVO
YW1lIyNFeGVjdXRhYmxlKCktPmxpbmsodm0sIG51bGxwdHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxl
cygpLT5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyBcCiB9CiAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUZJTkVf
QlVJTFRJTl9HRU5FUkFUT1IpCiAjdW5kZWYgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SCkBAIC05
Niw3ICs5Niw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9DT0RFKERFRklORV9C
VUlMVElOX0dFTkVSQVRPUikKICNkZWZpbmUgREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKGNvZGVO
YW1lLCBmdW5jdGlvbk5hbWUsIG92ZXJyaWRkZW5OYW1lLCBhcmd1bWVudENvdW50KSBcXAogSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGUqIGNvZGVOYW1lIyNHZW5lcmF0b3IoSlNDOjpWTSYgdm0pIFxc
CiB7XFwKLSAgICByZXR1cm4gdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNFeGVj
dXRhYmxlKCktPmxpbmsodm0sIG51bGxwdHIsIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2Rl
TmFtZSMjU291cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRyaW5zaWMpOyBc
CisgICAgcmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJs
ZSgpLT5saW5rKHZtLCBudWxscHRyLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUj
I1NvdXJjZSgpLCBzdGQ6Om51bGxvcHQsIHNfIyNjb2RlTmFtZSMjSW50cmluc2ljKTsgXAogfQog
JHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUoREVGSU5F
X0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVSQVRPUgpAQCAt
MTA4LDcgKzEwOCw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJ
TFRJTl9DT0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKIEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNs
aWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNs
aWVudERhdGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCku
JHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZt
LCBudWxscHRyLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9
QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1l
IyNJbnRyaW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25z
KCkuJHtvYmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5r
KHZtLCBudWxscHRyLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1l
TEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVO
YW1lIyNJbnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF9CVUlMVElOX0NP
REUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlMVElOX0dFTkVS
QVRPUgpAQCAtMTIwLDcgKzEyMCw3IEBAICR7bWFjcm9QcmVmaXh9X0ZPUkVBQ0hfQlVJTFRJTl9D
T0RFKERFRklORV9CVUlMVElOX0dFTkVSQVRPUikKIEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKiBj
b2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mIHZtKSBcXAoge1xcCiAgICAgSlNWTUNsaWVudERh
dGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpOyBcXAotICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmpl
Y3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBudWxs
cHRyLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVpbHRp
bnMoKS5jb2RlTmFtZSMjU291cmNlKCksIFdURjo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJbnRy
aW5zaWMpOyBcXAorICAgIHJldHVybiBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtv
YmplY3ROYW1lTEN9QnVpbHRpbnMoKS5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rKHZtLCBu
dWxscHRyLCBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25zKCkuJHtvYmplY3ROYW1lTEN9QnVp
bHRpbnMoKS5jb2RlTmFtZSMjU291cmNlKCksIHN0ZDo6bnVsbG9wdCwgc18jI2NvZGVOYW1lIyNJ
bnRyaW5zaWMpOyBcXAogfQogJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9C
VUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogI3VuZGVmIERFRklORV9CVUlM
VElOX0dFTkVSQVRPUgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAppbmRleCBlNTE3NTdlOWI4ZmM2NDI4NzgyN2MxNmQwMmQyMWNjMjE4ZmIxMzI2Li44MTVk
Y2Y4NzM3NGFhM2IzNTc5ODlkZjY3ZmU3MmJhOTQwYjMzYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaApAQCAtMzQwLDcgKzM0MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEFscmVhZHlEaXNhc3NlbWJsZSgpIHsgbV9hbHJlYWR5RGlzYXNzZW1i
bGVkID0gdHJ1ZTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY2xlYXJQ
cm9maWxlU3RhdGlzdGljcygpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGR1
bXBQcm9maWxlU3RhdGlzdGljcyhPcHRpb25hbDxQcmludFN0cmVhbSo+ID0gV1RGOjpudWxsb3B0
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkdW1wUHJvZmlsZVN0YXRpc3Rp
Y3MoT3B0aW9uYWw8UHJpbnRTdHJlYW0qPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgYWRkTWFpblRocmVhZEZpbmFsaXphdGlvblRh
c2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNGZlZDVkZTgzMmIwY2E1
OGJkZmI5ZDNiYTAwNzI5YmJmMjMzZGUxOS4uNTdkNWI5NGY3Yjg1MjRkMTkxMjM2YzFlZGVlOWQ5
Zjg1ZGUwYTdkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTQwNTcsNyArNDA1Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBQb3NpdGl2ZU9yWmVybzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAppbmRleCBlNDQ5ZWY3OGNkOTc3ODJmMjAxZjgxZWQ3ODE4YTUyYjVjZTAyMTQ2Li40OGU5
NTBlOWM4ZTQxY2RjYmQ2ZjU0NzNkZjYzZjQ1OGE1YTkxODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5o
CkBAIC0zMTIxLDcgKzMxMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUG9zaXRp
dmVPclplcm87CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1NwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tT
cGVjaWFsLmNwcAppbmRleCBlZTMzYzIxNDk3Yjk1MmM5ZDIzNmRiNGQzNTc2ZTliYTg5NjNjNjVh
Li5jMjdmYjRjMTM0YTE0NmVlOGJlODE5OTRkMmMxMmE5ZTMyNjM0Njc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBP
cHRpb25hbDx1bnNpZ25lZD4gQ2hlY2tTcGVjaWFsOjpzaG91bGRUcnlBbGlhc2luZ0RlZihJbnN0
JiBpbnN0KQogewogICAgIGlmIChPcHRpb25hbDx1bnNpZ25lZD4gYnJhbmNoRGVmID0gaGlkZGVu
QnJhbmNoKGluc3QpLnNob3VsZFRyeUFsaWFzaW5nRGVmKCkpCiAgICAgICAgIHJldHVybiAqYnJh
bmNoRGVmICsgMTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXRlKElu
c3QmIGluc3QsIENDYWxsSGVscGVycyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb21tb24uY3BwCmluZGV4IGU4NTNhMjAyYzI0ODAyMmE3
NmE3ZTAzNDNjYTQwMDM2OTdiODYwOTUuLmIwZWJhNWE0MTMyMGRlODc2ODM4N2M0ODkxODdiZjcz
ZGFlM2UyYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbW1vbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29tbW9uLmNwcApAQCAtNzMsNyAr
NzMsNyBAQCBPcHRpb25hbDxHUFJSZWc+IHBpbm5lZEV4dGVuZGVkT2Zmc2V0QWRkclJlZ2lzdGVy
KCkKICNpZiBDUFUoQVJNNjQpCiAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpkYXRhVGVtcFJl
Z2lzdGVyOwogI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZWxzZQogI2Vycm9yIFVuaGFuZGxlZCBhcmNoaXRlY3R1
cmUuCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5k
ZXggODdlZmI5NzZjMGViYWMxYTQ5MWUxNzEyMjdhNmFjOGIxM2MxMTg5NS4uYjk3YjI4NTA3MmY1
M2U3YTVkNDk1ZWQwMTY0Mjc2M2M0NGIwZjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAKQEAgLTUwMSwxMiArNTAxLDEyIEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50LCB0eXBlbmFtZSA9IFZhbHVlOjpJc0xlZ2FsT2Zm
c2V0PEludD4+Ci0gICAgT3B0aW9uYWw8dW5zaWduZWQ+IHNjYWxlRm9yU2hsKFZhbHVlKiBzaGws
IEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkKKyAgICBP
cHRpb25hbDx1bnNpZ25lZD4gc2NhbGVGb3JTaGwoVmFsdWUqIHNobCwgSW50IG9mZnNldCwgT3B0
aW9uYWw8V2lkdGg+IHdpZHRoID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKHNo
bC0+b3Bjb2RlKCkgIT0gU2hsKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghc2hsLT5jaGlsZCgx
KS0+aGFzSW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB1bnNpZ25lZCBsb2dTY2FsZSA9IHNo
bC0+Y2hpbGQoMSktPmFzSW50MzIoKTsKICAgICAgICAgaWYgKHNobC0+dHlwZSgpID09IEludDMy
KQogICAgICAgICAgICAgbG9nU2NhbGUgJj0gMzE7CkBAIC01MTYsMTAgKzUxNiwxMCBAQCBwcml2
YXRlOgogICAgICAgICAvLyB0byBzaWduZWQgc2luY2UgdGhhdCdzIHdoYXQgYWxsIG9mIG91ciBB
UElzIHdhbnQuCiAgICAgICAgIGludDY0X3QgYmlnU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oMSkgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxvZ1NjYWxlKTsKICAgICAgICAgaWYgKCFp
c1JlcHJlc2VudGFibGVBczxpbnQzMl90PihiaWdTY2FsZSkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
dW5zaWduZWQgc2NhbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihiaWdTY2FsZSk7CiAgICAgICAg
IGlmICghQXJnOjppc1ZhbGlkSW5kZXhGb3JtKHNjYWxlLCBvZmZzZXQsIHdpZHRoKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gc2NhbGU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM09wY29kZS5jcHAKaW5kZXggNmNmZDhhOWYyZmM4NzViZjM5NDNmNzk3Y2NmZGExYmYx
ZmIzYjI2OS4uN2MyZmEwYzA5MjQ4Y2E3ZmNhNGY0NzY1ZTAyNmU0YjJlZjQ5MjE2MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCkBAIC00NiwxOSArNDYsMTkgQEAgT3B0aW9u
YWw8T3Bjb2RlPiBpbnZlcnRlZENvbXBhcmUoT3Bjb2RlIG9wY29kZSwgVHlwZSB0eXBlKQogICAg
IGNhc2UgTGVzc1RoYW46CiAgICAgICAgIGlmICh0eXBlLmlzSW50KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gR3JlYXRlckVxdWFsOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgR3JlYXRlclRoYW46CiAgICAgICAgIGlm
ICh0eXBlLmlzSW50KCkpCiAgICAgICAgICAgICByZXR1cm4gTGVzc0VxdWFsOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNh
c2UgTGVzc0VxdWFsOgogICAgICAgICBpZiAodHlwZS5pc0ludCgpKQogICAgICAgICAgICAgcmV0
dXJuIEdyZWF0ZXJUaGFuOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgR3JlYXRlckVxdWFsOgogICAgICAgICBpZiAo
dHlwZS5pc0ludCgpKQogICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2Ug
QWJvdmU6CiAgICAgICAgIHJldHVybiBCZWxvd0VxdWFsOwogICAgIGNhc2UgQmVsb3c6CkBAIC02
OCw3ICs2OCw3IEBAIE9wdGlvbmFsPE9wY29kZT4gaW52ZXJ0ZWRDb21wYXJlKE9wY29kZSBvcGNv
ZGUsIFR5cGUgdHlwZSkKICAgICBjYXNlIEJlbG93RXF1YWw6CiAgICAgICAgIHJldHVybiBBYm92
ZTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUGF0Y2hwb2ludFNwZWNpYWwuY3BwCmluZGV4IDk0ZjU4YTM3M2U4MmQ3NDRiNmU4
YzQzNmZmODA3OTFmY2RhODU4NDYuLmY4ZGMzNjUxZjk0Y2U1ODFkOTQwNmRiMzMxYTg5ODQzMDE4
YzkwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BhdGNocG9pbnRT
cGVjaWFsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3Bl
Y2lhbC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBQYXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFj
aEFyZyhJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0MKICAgICAg
ICAgY2FsbGJhY2soaW5zdC5hcmdzW2FyZ0luZGV4XSwgcm9sZSwgYmFua0ZvclR5cGUoYXJnVHlw
ZSksIHdpZHRoRm9yVHlwZShhcmdUeXBlKSk7CiAgICAgfQogCi0gICAgZm9yRWFjaEFyZ0ltcGwo
MCwgYXJnSW5kZXgsIGluc3QsIFNhbWVBc1JlcCwgV1RGOjpudWxsb3B0LCBjYWxsYmFjaywgV1RG
OjpudWxsb3B0KTsKKyAgICBmb3JFYWNoQXJnSW1wbCgwLCBhcmdJbmRleCwgaW5zdCwgU2FtZUFz
UmVwLCBzdGQ6Om51bGxvcHQsIGNhbGxiYWNrLCBzdGQ6Om51bGxvcHQpOwogICAgIGFyZ0luZGV4
ICs9IGluc3Qub3JpZ2luLT5udW1DaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzOyBpLS07KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQXJnLmgKaW5kZXggYTBkYTcxODg3Y2QyNjg1ZGU5OTYzMWU5MWE0NDc2MjZh
M2MwYzQ4YS4uNWYwYTNhNDlkNGFiZTMzOWQ3Nzk5MzIxZWVkM2ViOGQ3NzMwMmFjNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCkBAIC01ODYsNyArNTg2LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIC8vIElmIHlvdSBkb24ndCBwYXNzIGEgV2lkdGgsIHRoaXMgb3B0aW1p
c3RpY2FsbHkgYXNzdW1lcyB0aGF0IHlvdSdyZSB1c2luZyB0aGUgcmlnaHQgd2lkdGguCi0gICAg
c3RhdGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2lnbmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4g
d2lkdGggPSBXVEY6Om51bGxvcHQpCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFNjYWxlKHVuc2ln
bmVkIHNjYWxlLCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKHNjYWxlKSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTExODIsNyArMTE4
Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnQsIHR5cGVu
YW1lID0gVmFsdWU6OklzTGVnYWxPZmZzZXQ8SW50Pj4KLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlk
QWRkckZvcm0oSW50IG9mZnNldCwgT3B0aW9uYWw8V2lkdGg+IHdpZHRoID0gV1RGOjpudWxsb3B0
KQorICAgIHN0YXRpYyBib29sIGlzVmFsaWRBZGRyRm9ybShJbnQgb2Zmc2V0LCBPcHRpb25hbDxX
aWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBpZiAoaXNYODYoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludCwgdHlwZW5hbWUgPSBWYWx1ZTo6SXNM
ZWdhbE9mZnNldDxJbnQ+PgotICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbmRleEZvcm0odW5zaWdu
ZWQgc2NhbGUsIEludCBvZmZzZXQsIE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9w
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkSW5kZXhGb3JtKHVuc2lnbmVkIHNjYWxlLCBJbnQg
b2Zmc2V0LCBPcHRpb25hbDxXaWR0aD4gd2lkdGggPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAg
ICAgICBpZiAoIWlzVmFsaWRTY2FsZShzY2FsZSwgd2lkdGgpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgcHVibGljOgogICAgIC8vIElmIHlvdSBkb24n
dCBwYXNzIGEgd2lkdGggdGhlbiB0aGlzIG9wdGltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB5b3Un
cmUgdXNpbmcgdGhlIHJpZ2h0IHdpZHRoLiBCdXQKICAgICAvLyB0aGUgd2lkdGggaXMgcmVsZXZh
bnQgdG8gdmFsaWRpdHksIHNvIHBhc3NpbmcgYSBudWxsIHdpZHRoIGlzIG9ubHkgdXNlZnVsIGZv
ciBhc3NlcnRpb25zLiBEb24ndAogICAgIC8vIHBhc3MgbnVsbCB3aWR0aHMgd2hlbiBjYXNjYWRp
bmcgdGhyb3VnaCBBcmdzIGluIHRoZSBpbnN0cnVjdGlvbiBzZWxlY3RvciEKLSAgICBib29sIGlz
VmFsaWRGb3JtKE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3QKKyAg
ICBib29sIGlzVmFsaWRGb3JtKE9wdGlvbmFsPFdpZHRoPiB3aWR0aCA9IHN0ZDo6bnVsbG9wdCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW52
YWxpZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwCmluZGV4IDkwNDE4
MWI1Nzk1M2M5ZDcyNGYyNWY2NTgxNDQ4NTE5OTlkZmQzZjEuLmMwNGYwOTVjZGQ2MzdhY2UzNjYy
N2IyZTQxOGE4YmI0NDU2NjgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBDb2RlOjplbnRy
eXBvaW50SW5kZXgoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0CiAgICAgICAgIGlmIChtX2VudHJ5
cG9pbnRzW2ldLmJsb2NrKCkgPT0gYmxvY2spCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIENvZGU6OnNldENhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdChSZWdpc3RlckF0
T2Zmc2V0TGlzdCYmIHJlZ2lzdGVyQXRPZmZzZXRMaXN0LCBTdGFja1Nsb3QqIHNsb3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNw
cAppbmRleCBjMWIwMzE3MjdiY2Q4OWQ3ODZmNTgwMDI2OGI1MmJhODFmYzAxNWYzLi45NzUwYWRm
N2Y0OTBmMDkxNzc1OTMxZTUxMzFkYTQ3M2FmMDZmOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTUwOSwxNCAr
NTA5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoYXJnLmlzUmVnKCkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY29uc3QgUmVnQ29uc3QqIGFsaWFzID0gZ2V0UmVnQ29uc3QoYXJnLnJl
ZygpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWFzLT5jb25zdGFudDsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYXJnLmlzU3RhY2so
KSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdCBTbG90Q29uc3QqIGFsaWFzID0gZ2V0U2xv
dENvbnN0KGFyZy5zdGFja1Nsb3QoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhbGlh
cy0+Y29uc3RhbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGNsb2JiZXIoY29uc3QgQXJnJiBhcmcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3RJbmxpbmVzLmgKaW5kZXggYWYwZDIw
MzlkZDg2NThlMzBhZTFmOTFmOTVjMWZmMTYxNjljZWQ1NS4uZGFhODk1MzA0YTRjYzgzMmI3MWU0
YzQ3YmUxYzNhNTllMGUyMzM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJJbnN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlySW5zdElubGluZXMuaApAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSBib29sIEluc3Q6OmFk
bWl0c0V4dGVuZGVkT2Zmc2V0QWRkcihBcmcmIGFyZykKIGlubGluZSBPcHRpb25hbDx1bnNpZ25l
ZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoKQogewogICAgIGlmICghaXNYODYoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHN3aXRjaCAoa2luZC5vcGNvZGUpIHsKICAgICBjYXNlIEFkZDMyOgpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIGlubGluZSBPcHRpb25hbDx1bnNpZ25lZD4gSW5zdDo6c2hvdWxkVHJ5QWxpYXNp
bmdEZWYoKQogICAgIGNhc2UgTXVsRmxvYXQ6CiAjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkK
ICAgICAgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0FWWCgpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZW5kaWYKICAgICAgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDMpCiAgICAgICAgICAgICByZXR1cm4g
MjsKQEAgLTE3OCw3ICsxNzgsNyBAQCBpbmxpbmUgT3B0aW9uYWw8dW5zaWduZWQ+IEluc3Q6OnNo
b3VsZFRyeUFsaWFzaW5nRGVmKCkKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBpbmxpbmUgYm9vbCBpc1NoaWZ0VmFsaWQoY29uc3QgSW5zdCYgaW5zdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCmluZGV4IGMwYzAxMzY5YTlhYWEyNGVj
NjZhNmUxMmQ5ZDkwODBjNGVkNzYzODIuLjk1NWU4YTk3MDE1MmM3YjAyNjM2ZDM4YWMxMTkwMGQ1
ZTM3NDI1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3Bl
Y2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGVjaWFsLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBDU3RyaW5nIFNwZWNpYWw6Om5hbWUoKSBjb25zdAogCiBPcHRp
b25hbDx1bnNpZ25lZD4gU3BlY2lhbDo6c2hvdWxkVHJ5QWxpYXNpbmdEZWYoSW5zdCYpCiB7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBi
b29sIFNwZWNpYWw6OmlzVGVybWluYWwoSW5zdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCmluZGV4IDY2NDE3YzQxMzIx
ZDI0NzliNTY4ODhmYWFmYWRkYTljY2Q5YzNlYzMuLmU4ZTc1ZjZkMTY5NDhmZjM1ODM4MDY5ZDk1
Mjk0MTJhYTFhNGZmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZShW
TSYgdm0sIGNvbnN0IFMKICAgICAgICAgfQogICAgIH0KIAotICAgIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlKHZtLCBzb3VyY2UsICZtZXRhZGF0YSwga2luZCwgY29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHByaXZhdGVC
cmFuZFJlcXVpcmVtZW50LCBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3Rvcik7CisgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIHNvdXJjZSwgJm1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxwdHIsIHN0
ZDo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBuZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciwgcHJpdmF0ZUJyYW5kUmVxdWlyZW1lbnQsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0Nv
bnN0cnVjdG9yKTsKICAgICByZXR1cm4gZnVuY3Rpb25FeGVjdXRhYmxlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAKaW5kZXggMmE3NTg4ZDZkNWNjN2EzNThlOGNjMWM4OTMzMWNiOTIxZjc5
Yjc5YS4uMzM5Y2FhOTRhMzQzNDk3YzI3ZTJkOTczM2NlZDZiNzRmOGMwNGY1NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5LmNwcApAQCAtMTE5LDEwICsxMTksMTAgQEAgQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiBPcHRpb25hbDxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAogewogICAgIGlmICghaWRlbnQu
aXNQcml2YXRlTmFtZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmlu
c2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29k
ZUludHJpbnNpY01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdk
ZjA1ZTEwYmM5MGI2NTZmMzUwM2M4NWMwNTRjNWQzYWZhN2M2YjkuLjFjZjkzMmI2NWY1OTVlMWJl
MDE1ZThiYjlmODZiODkzZTVlMTI3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0
YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgIGlmIChz
aG91bGRVcGRhdGVGdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUpCiAgICAgICAgICAgICB2bS5mdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0
YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwot
ICAgICAgICBtX2Z1bmN0aW9uRGVjbHNbaV0uc2V0KHZtLCB0aGlzLCB1bmxpbmtlZEV4ZWN1dGFi
bGUtPmxpbmsodm0sIHRvcExldmVsRXhlY3V0YWJsZSwgb3duZXJFeGVjdXRhYmxlLT5zb3VyY2Uo
KSwgV1RGOjpudWxsb3B0LCBOb0ludHJpbnNpYywgb3duZXJFeGVjdXRhYmxlLT5pc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24oKSkpOworICAgICAgICBtX2Z1bmN0aW9uRGVjbHNbaV0uc2V0KHZtLCB0
aGlzLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsodm0sIHRvcExldmVsRXhlY3V0YWJsZSwgb3du
ZXJFeGVjdXRhYmxlLT5zb3VyY2UoKSwgc3RkOjpudWxsb3B0LCBOb0ludHJpbnNpYywgb3duZXJF
eGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKSkpOwogICAgIH0KIAogICAgIG1f
ZnVuY3Rpb25FeHBycyA9IEZpeGVkVmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFi
bGU+Pih1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlvbkV4cHJzKCkpOwpAQCAtNDEy
LDcgKzQxMiw3IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+
ZnVuY3Rpb25FeHByKGkpOwogICAgICAgICBpZiAoc2hvdWxkVXBkYXRlRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlKQogICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmlu
c2VydFVuZXhlY3V0ZWRSYW5nZShvd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2Vk
RXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJs
ZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ld
LnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5saW5rKHZtLCB0b3BMZXZlbEV4ZWN1
dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIFdURjo6bnVsbG9wdCwgTm9JbnRyaW5z
aWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCkpKTsKKyAgICAg
ICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCh2bSwgdGhpcywgdW5saW5rZWRFeGVjdXRhYmxlLT5s
aW5rKHZtLCB0b3BMZXZlbEV4ZWN1dGFibGUsIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCksIHN0
ZDo6bnVsbG9wdCwgTm9JbnRyaW5zaWMsIG93bmVyRXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKCkpKTsKICAgICB9CiAKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPm51bWJl
ck9mRXhjZXB0aW9uSGFuZGxlcnMoKSkgewpAQCAtMzQ2NSw3ICszNDY1LDcgQEAgT3B0aW9uYWw8
Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEModm9pZCogcGMpCiAgICAgaWYgKE9wdGlvbmFs
PENvZGVPcmlnaW4+IGNvZGVPcmlnaW4gPSBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYykpCiAg
ICAgICAgIHJldHVybiBjb2RlT3JpZ2luOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuY3BwCmluZGV4IDFjNTk5MzczMzEzYmY4ODEwM2M5NWJmNmRlMmUyYzRk
OTExNDkwMWIuLjE5YTM1NTZjZGUxYTQyNzc4MWMxM2UwNmUwYzU1MjVlYTZkZjRlZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtNTI3LDIxICs1MjcsMjEgQEAgc3RhdGljIE9wdGlv
bmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhK
U0dsb2JhbE9iamUKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50KQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNPYmplY3QoKSk7CiAgICAg
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNCZWVuRmxhdHRlbmVkQmVmb3JlKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3Ry
dWN0dXJlKHZtLCBhc09iamVjdChjdXJyZW50KSk7CiAgICAgICAgICAgICBmbGF0dGVuZWREaWN0
aW9uYXJ5ID0gdHJ1ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghc3RydWN0dXJlLT5wcm9w
ZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoc3Ry
dWN0dXJlLT5pc1Byb3h5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoY3VycmVudCAmJiBj
dXJyZW50ID09IHRhcmdldCkgewogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwpAQCAtNTU1LDcg
KzU1NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b3R5cGVDaGFpbkNhY2hpbmdTdGF0dXM+IHBy
ZXBhcmVDaGFpbkZvckNhY2hpbmcoSlNHbG9iYWxPYmplCiAgICAgICAgIEpTVmFsdWUgcHJvdG90
eXBlOwogICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgewogICAgICAgICAg
ICAgaWYgKCFjdXJyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHVzZXNQb2x5
UHJvdG8gPSB0cnVlOwogICAgICAgICAgICAgcHJvdG90eXBlID0gc3RydWN0dXJlLT5wcm90b3R5
cGVGb3JMb29rdXAoZ2xvYmFsT2JqZWN0LCBjdXJyZW50KTsKICAgICAgICAgfSBlbHNlCkBAIC01
NjgsNyArNTY4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFByb3RvdHlwZUNoYWluQ2FjaGluZ1N0YXR1
cz4gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhKU0dsb2JhbE9iamUKICAgICB9CiAKICAgICBpZiAo
IWZvdW5kICYmICEhdGFyZ2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUHJvdG90eXBlQ2hhaW5DYWNoaW5nU3RhdHVz
IHJlc3VsdDsKICAgICByZXN1bHQudXNlc1BvbHlQcm90byA9IHVzZXNQb2x5UHJvdG87CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAppbmRl
eCA1OWZhNjU2Yzc1ZjE2ZTYxYjNlMWRlY2UzNDU0MWNiNmJmMzAzMjljLi44NTI3OTQwYmYwNTQ2
N2EzZDFkYzY0Y2I5MTMyMTM4NTYxYWQ4YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKQEAgLTcxOCw3ICs3MTgsNyBAQCBPcHRp
b25hbDxTcGVjdWxhdGVkVHlwZT4gc3BlY3VsYXRpb25Gcm9tSlNUeXBlKEpTVHlwZSB0eXBlKQog
ICAgIGNhc2UgRGF0YVZpZXdUeXBlOgogICAgICAgICByZXR1cm4gU3BlY0RhdGFWaWV3T2JqZWN0
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4
IDAwNDRhNjJkYzI1N2Q3YTk2ZTlmNWVhY2EwMDIxNDQ3N2YzMjIzMDkuLmQxNjkyZTE3NmUxMGU4
MWFiMDU5YTJkYmVlYjE2Y2Y3NjM5N2Q2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0x
MjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgICAgICBpbnQgb3ZlcnJpZGVMaW5lTnVtYmVyLCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwog
CiAgICAgU291cmNlQ29kZSBsaW5rZWRTb3VyY2VDb2RlKGNvbnN0IFNvdXJjZUNvZGUmKSBjb25z
dDsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmsoVk0mLCBT
Y3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHBh
cmVudFNvdXJjZSwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBXVEY6Om51bGxv
cHQsIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
biA9IGZhbHNlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBGdW5jdGlvbkV4ZWN1dGFibGUqIGxp
bmsoVk0mLCBTY3JpcHRFeGVjdXRhYmxlKiB0b3BMZXZlbEV4ZWN1dGFibGUsIGNvbnN0IFNvdXJj
ZUNvZGUmIHBhcmVudFNvdXJjZSwgT3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIgPSBz
dGQ6Om51bGxvcHQsIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiA9IGZhbHNlKTsKIAogICAgIHZvaWQgY2xlYXJDb2RlKFZNJiB2bSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IGJkYmFhMjE0OTVlMDEzZTk3Y2Y1OWRkNTRlNzUzZWM4YjA5
MjMwZTQuLjVkYTY1Mjc4ZDdmMGY3MGNhMmE0MjIwNjk4M2JlNWM1MzJjMTYyYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC0zMDI1LDcgKzMwMjUsNyBAQCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmly
b25tZW50PiBCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbQog
ICAgIH0KIAogICAgIGlmICghcmVzdWx0LnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC00NDYwLDcgKzQ0NjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFRlbXBsYXRlT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCwgVGFnZ2VkVGVtcAogICAgICAg
ICBBU1NFUlQoc3RyaW5nLT5yYXcoKSk7CiAgICAgICAgIHJhd1N0cmluZ3MuYXBwZW5kKHN0cmlu
Zy0+cmF3KCktPmltcGwoKSk7CiAgICAgICAgIGlmICghc3RyaW5nLT5jb29rZWQoKSkKLSAgICAg
ICAgICAgIGNvb2tlZFN0cmluZ3MuYXBwZW5kKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBj
b29rZWRTdHJpbmdzLmFwcGVuZChzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBjb29rZWRTdHJpbmdzLmFwcGVuZChzdHJpbmctPmNvb2tlZCgpLT5pbXBsKCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCBhNDljYTcwNzQ1NjlmY2E1ZGU2YzllZGEyZjBhNmJmYmZkNWYzZjI5Li43
YzE4YjgxM2RmZTYzNmRkNjRjYzU5OThkNTJmMTRlYjYxZTczNGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMDI2
LDcgKzMwMjYsNyBAQCBSZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkgJiYgdmFsdWUuYXNJbnQzMigpID49IDApCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBVSW50MzJSZXN1bHQ6OkNvbnN0YW50OwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH07CiAgICAgICAgIGF1dG8gbGVmdFJlc3VsdCA9IGlzVUludDMyKG1f
ZXhwcjEpOwogICAgICAgICBhdXRvIHJpZ2h0UmVzdWx0ID0gaXNVSW50MzIobV9leHByMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUGFyc2VEYXRh
LmNwcAppbmRleCA3ZmNiNTg1MDAwMzY2MDkyNGI0Yjc5OTRmY2E3ZjEwNmYwODBiNmZjLi41Njhm
ZTMzOGFhMDY3NTFmMjc2ZDM1NGUyYjhlMDAxZGEzYWUzNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQYXJzZURhdGEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclBhcnNlRGF0YS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2VyUGF1c2VQb3NpdGlvbnM6
OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4KICAgICAgICAgcmV0dXJuIGEucG9zaXRp
b24ubGluZSA8IGIucG9zaXRpb24ubGluZTsKICAgICB9KTsKICAgICBpZiAoaXQgPT0gbV9wb3Np
dGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobGluZSA9PSBpdC0+cG9zaXRpb24ubGluZSAmJiBj
b2x1bW4gPT0gaXQtPnBvc2l0aW9uLmNvbHVtbigpKSB7CiAgICAgICAgIC8vIEZvdW5kIGFuIGV4
YWN0IHBvc2l0aW9uIG1hdGNoLiBSb2xsIGZvcndhcmQgaWYgdGhpcyB3YXMgYSBmdW5jdGlvbiBF
bnRyeS4KQEAgLTk5LDcgKzk5LDcgQEAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IERlYnVnZ2Vy
UGF1c2VQb3NpdGlvbnM6OmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4KICAgICB9CiAK
ICAgICAvLyBObyBwYXVzZSBwb3NpdGlvbnMgZm91bmQuCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERlYnVnZ2VyUGF1c2VQb3Np
dGlvbnM6OnNvcnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKaW5k
ZXggODdlOTlhOTRmNjNjN2VhMzU2ZDNkYzFlYmQyMzhmNTc1YmFmZDgzNy4uMjQ0OTgwMWZmMGI0
ZTExNmJkNGJlNDk5YjUzY2Q2NGUzOGRhMzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4g
SklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayosIHZvaWQqIHBjKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIEpJVENvZGU6OmZpbmFsaXplT1NSRW50cnlwb2ludHMoVmVjdG9yPE9TUkVudHJ5RGF0
YT4mJiBvc3JFbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCmluZGV4IGUzMzY5OGU4ZTY1MWEzNjkzMTQ5YmMwODI5YzU2MzliYmRjNTMxOTMuLjc1MTNi
NGQ0YmUwZDA5ZmExMDNmNThiMTc3ZTNhZmJlYzk4MGEzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMTgyMiw3ICsxODIyLDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0ludDhBcnJheVdpdGhPbmVBcmd1bWVudCwg
Y2hhciosIChKU0dsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDhBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8
SlNJbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0
ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
SW50MTZBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAg
LTE4MzgsNyArMTgzOCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJ
bnQxNkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9D
QUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNJbnQxNkFycmF5
PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQp
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5
cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0ludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3SW50MzJBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90
IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE4NTQsNyArMTg1NCw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdJbnQzMkFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFy
KiwgKEpTR2xvYmFsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRp
b25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHM8SlNJbnQzMkFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0lu
dDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6
bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWlu
dDhBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE4
NzAsNyArMTg3MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdVaW50
OEFycmF5V2l0aE9uZUFyZ3VtZW50LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNVaW50OEFycmF5Pihn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU1VpbnQ4QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoU2l6ZSwgY2hhcios
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50
MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDhDbGFtcGVkQXJyYXlXaXRoT25lQXJn
dW1lbnQsIGNoYXIqLCAoSgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJh
eVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJn
dW1lbnRzPEpTVWludDhDbGFtcGVkQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNo
YXIqIHZlY3RvcikpCkBAIC0xOTAyLDcgKzE5MDIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uTmV3VWludDE2QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9i
YQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1l
bnRzPEpTVWludDE2QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihj
b25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDE2QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZlY3RvcikpCkBAIC0xOTE4LDcgKzE5
MTgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3VWludDMyQXJyYXlX
aXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbG9iYQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIFdURjo6bnVsbG9wdCkpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTVWludDMyQXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBl
bmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3Ro
LCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTkzNCw3ICsxOTM0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChK
U0dsb2IKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xv
Z3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0Zsb2F0MzJBcnJheT4oZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDMy
QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVs
bG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aFNpemUsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbGVuZ3RoLCBjaGFyKiB2ZWN0b3IpKQpAQCAtMTk1
MCw3ICsxOTUwLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhPbmVBcmd1bWVudCwgY2hhciosIChKU0dsb2IKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4o
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgV1RGOjpudWxsb3B0KSk7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QmlnSW50NjRBcnJheVdpdGhTaXplLCBjaGFyKiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQz
Ml90IGxlbmd0aCwgY2hhciogdmVjdG9yKSkKQEAgLTE5NjYsNyArMTk2Niw3IEBAIEpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdCaWdJbnQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50
LCBjaGFyKiwgKEpTR2xvCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNCaWdJbnQ2NEFycmF5PihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgZW5jb2RlZFZhbHVlLCAwLCBXVEY6Om51bGxvcHQpKTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50
czxKU0JpZ0ludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUs
IDAsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBsZW5ndGgsIGNoYXIqIHZl
Y3RvcikpCkBAIC0xOTgyLDcgKzE5ODIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uTmV3QmlnVWludDY0QXJyYXlXaXRoT25lQXJndW1lbnQsIGNoYXIqLCAoSlNHbAogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpT
QmlnVWludDY0QXJyYXk+KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IFdURjo6bnVsbG9wdCkpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25z
dHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTQmlnVWludDY0QXJyYXk+
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIHN0ZDo6bnVsbG9wdCkp
OwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlJdGVyYXRv
ciwgSlNDZWxsKiwgKFZNKiB2bVBvaW50ZXIsIFN0cnVjdHVyZSogc3RydWN0dXJlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IGM0YzgyOGY0ZmYxZDljYTQ2NTFhMzc2
Y2FkZTJkMDJkNWViNTkwNjkuLmQyOTNlYzc0ODFmOTIzODI0ZjdmOGNjN2UxN2RmYmZmYTAyOWUw
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAtNjc4LDcgKzY3OCw3
IEBAIHZvaWQgUGxhbjo6Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKQogCiAgICAg
Zm9yICh1bnNpZ25lZCBsb2NhbCA9IG1fbXVzdEhhbmRsZVZhbHVlcy5udW1iZXJPZkxvY2Fscygp
OyBsb2NhbC0tOykgewogICAgICAgICBpZiAoIWxpdmVuZXNzW2xvY2FsXSkKLSAgICAgICAgICAg
IG1fbXVzdEhhbmRsZVZhbHVlcy5sb2NhbChsb2NhbCkgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICBtX211c3RIYW5kbGVWYWx1ZXMubG9jYWwobG9jYWwpID0gc3RkOjpudWxsb3B0OwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0
aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVy
YXRvci5oCmluZGV4IDk4MWU4NmNkN2RkYjAxY2E0OTU0M2I0ZTUzNzYwMDFiZTgxNjAxMjYuLmU1
MDA5NWJiNmFmZWY4N2Y3YTFlMTI5NjdkMTI0Yjg4NDg1MjdmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBtX3N0cmVh
bUluZGV4OwogICAgICAgICBqaXQtPm1fb3JpZ2luID0gbV9vcmlnaW47CiAgICAgICAgIGdlbmVy
YXRlSW50ZXJuYWwoaml0KTsKLSAgICAgICAgaml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0g
V1RGOjpudWxsb3B0OworICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIGppdC0+
bV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1Nsb3dQYXRoR2VuZXJhdG9yRmVsbFRocm91Z2gpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhmOC4uMzVkN2Zl
NWJhMjU1Y2YxMTA0ODk1MzVmODEzM2U3ODVmYjNkZjFhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpydW5TbG93UGF0aEdlbmVyYXRvcnMoUENUb0NvZGVPcmlnaW5N
YXBCdWlsZGVyJiBwY1RvQ29kZU9yaQogICAgICAgICBtX291dE9mTGluZVN0cmVhbUluZGV4ID0g
c2xvd1BhdGhMYW1iZGEuc3RyZWFtSW5kZXg7CiAgICAgICAgIHBjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlci5hcHBlbmRJdGVtKG1faml0LmxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpLCBjdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgc2xvd1BhdGhMYW1iZGEuZ2VuZXJhdG9y
KCk7Ci0gICAgICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBA
IC05MTI2LDcgKzkxMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGlj
ZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgbGVuZ3Ro
R1BSKTsKIAogICAgICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAgICAg
ICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUs
IDIpLCBXVEY6Om51bGxvcHQsIGxlbmd0aEdQUiwgdGVtcEdQUik7CisgICAgICAgICAgICBlbWl0
UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiksIHN0
ZDo6bnVsbG9wdCwgbGVuZ3RoR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9qaXQubW92ZShsZW5ndGhHUFIsIHRlbXBHUFIpOwogCkBAIC05MTM2LDcgKzkxMzYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXBTdGFydEluZGV4KHRo
aXMpOwogICAgICAgICAgICAgR1BSUmVnIHN0YXJ0R1BSID0gdGVtcFN0YXJ0SW5kZXguZ3ByKCk7
Ci0gICAgICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMSksIFdURjo6bnVsbG9wdCwgbGVuZ3RoR1BSLCBzdGFydEdQUik7CisgICAg
ICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMSksIHN0ZDo6bnVsbG9wdCwgbGVuZ3RoR1BSLCBzdGFydEdQUik7CiAKICAgICAgICAg
ICAgIGF1dG8gdG9vQmlnID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBz
dGFydEdQUiwgdGVtcEdQUik7CiAgICAgICAgICAgICBtX2ppdC5zdWIzMihzdGFydEdQUiwgdGVt
cEdQUik7IC8vIHRoZSBzaXplIG9mIHRoZSBhcnJheSB3ZSdsbCBtYWtlLgpAQCAtOTIyNiwxMCAr
OTIyNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBu
b2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpLCB0
ZW1wVmFsdWUpOwogICAgICAgICBpZiAobm9kZS0+bnVtQ2hpbGRyZW4oKSA9PSA0KQotICAgICAg
ICAgICAgZW1pdFBvcHVsYXRlU2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDIpLCBXVEY6Om51bGxvcHQsIHRlbXBWYWx1ZSwgdGVtcEdQUik7CisgICAgICAgICAgICBl
bWl0UG9wdWxhdGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMiks
IHN0ZDo6bnVsbG9wdCwgdGVtcFZhbHVlLCB0ZW1wR1BSKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9qaXQubW92ZSh0ZW1wVmFsdWUsIHRlbXBHUFIpOwotICAgICAgICBlbWl0UG9wdWxh
dGVTbGljZUluZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIFdURjo6bnVs
bG9wdCwgdGVtcFZhbHVlLCBsb2FkSW5kZXgpOworICAgICAgICBlbWl0UG9wdWxhdGVTbGljZUlu
ZGV4KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIHN0ZDo6bnVsbG9wdCwgdGVt
cFZhbHVlLCBsb2FkSW5kZXgpOwogICAgIH0KIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wNSh0aGlz
KTsKQEAgLTkyODMsNyArOTI4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJh
eUluZGV4T2YoTm9kZSogbm9kZSkKICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSwgbGVu
Z3RoR1BSKTsKIAogICAgIGlmIChub2RlLT5udW1DaGlsZHJlbigpID09IDQpCi0gICAgICAgIGVt
aXRQb3B1bGF0ZVNsaWNlSW5kZXgobV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSwg
V1RGOjpudWxsb3B0LCBsZW5ndGhHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgZW1pdFBvcHVsYXRl
U2xpY2VJbmRleChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpLCBzdGQ6Om51bGxv
cHQsIGxlbmd0aEdQUiwgaW5kZXhHUFIpOwogICAgIGVsc2UKICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tMzIoMCksIGluZGV4R1BSKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
SklUQ29kZS5jcHAKaW5kZXggYmYzNjQ0MWE3MzVhYTVlNTg3ZDI5OTBmY2FlMTY5N2U4YmZmNjJj
Zi4uMGM2NWI5NjA3ZDI5MzVhZDAxZTFjYTAxNDc4YTc0NWI3YWE4YTIyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgT3B0aW9u
YWw8Q29kZU9yaWdpbj4gSklUQ29kZTo6ZmluZFBDKENvZGVCbG9jayogY29kZUJsb2NrLCB2b2lk
KiBwYykKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCBhNzFiNzAyZjZmNmJjMGNjMDhlYThjM2Mx
M2UxODA4ODQ0ZWU5ZTQ4Li5kMjFlNzE2YjI4NmJmYWM5YTc2NTU3MzQ5NjQ1MjU5ODk2ZTVlOTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMjM0MCw3ICsyMzQwLDcgQEAg
dm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKCkKIAogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y29sbGVjdGlvblNjb3BlKTsKICAgICBtX2xhc3RDb2xsZWN0aW9uU2NvcGUgPSBtX2NvbGxlY3Rp
b25TY29wZTsKLSAgICBtX2NvbGxlY3Rpb25TY29wZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2Nv
bGxlY3Rpb25TY29wZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIg
OiBtX29ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXItPmRpZEdhcmJhZ2VDb2xsZWN0KHNjb3Bl
KTsKQEAgLTI5MzMsNyArMjkzMyw3IEBAIHZvaWQgSGVhcDo6bm90aWZ5SXNTYWZlVG9Db2xsZWN0
KCkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7ICptX3RocmVhZExvY2sgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X3JlcXVlc3RzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVx
dWVzdHMuYXBwZW5kKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9yZXF1ZXN0cy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xhc3RHcmFudGVkVGlja2V0Kys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV90aHJlYWRDb25kaXRpb24tPm5vdGlmeU9uZShsb2NrZXIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGU5OTc3MjNkMWZjN2Y1NDc1
ZGFkOWJhYTk2NTgyZTNkMzY3YTdkY2IuLjNhZDc4MWFjYzgxOTAwNThiNDAyYTcyMDgzODBkZWM1
MDFkYjIzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTE5MCw4ICsxOTAsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRDb2xsZWN0SGV1cmlzdGljKCk7CiAgICAgCiAgICAg
Ly8gUXVldWUgdXAgYSBjb2xsZWN0aW9uLiBSZXR1cm5zIGltbWVkaWF0ZWx5LiBUaGlzIHdpbGwg
bm90IHF1ZXVlIGEgY29sbGVjdGlvbiBpZiBhIGNvbGxlY3Rpb24KLSAgICAvLyBvZiBlcXVhbCBv
ciBncmVhdGVyIHN0cmVuZ3RoIGV4aXN0cy4gRnVsbCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIg
dGhhbiBXVEY6Om51bGxvcHQgY29sbGVjdGlvbnMKLSAgICAvLyBhbmQgV1RGOjpudWxsb3B0IGNv
bGxlY3Rpb25zIGFyZSBzdHJvbmdlciB0aGFuIEVkZW4gY29sbGVjdGlvbnMuIFdURjo6bnVsbG9w
dCBtZWFucyB0aGF0IHRoZSBHQyBjYW4KKyAgICAvLyBvZiBlcXVhbCBvciBncmVhdGVyIHN0cmVu
Z3RoIGV4aXN0cy4gRnVsbCBjb2xsZWN0aW9ucyBhcmUgc3Ryb25nZXIgdGhhbiBzdGQ6Om51bGxv
cHQgY29sbGVjdGlvbnMKKyAgICAvLyBhbmQgc3RkOjpudWxsb3B0IGNvbGxlY3Rpb25zIGFyZSBz
dHJvbmdlciB0aGFuIEVkZW4gY29sbGVjdGlvbnMuIHN0ZDo6bnVsbG9wdCBtZWFucyB0aGF0IHRo
ZSBHQyBjYW4KICAgICAvLyBjaG9vc2UgRWRlbiBvciBGdWxsLiBUaGlzIGltcGxpZXMgdGhhdCBp
ZiB5b3UgcmVxdWVzdCBhIEdDIHdoaWxlIHRoYXQgR0MgaXMgb25nb2luZywgbm90aGluZwogICAg
IC8vIHdpbGwgaGFwcGVuLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdEFzeW5j
KEdDUmVxdWVzdCA9IEdDUmVxdWVzdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU25hcHNob3QuY3BwCmluZGV4IDE0YTNiYTAzMjAwZTFhNzFiNTZjZGU3ZTliMDMwYmY2OWRl
NmQ3MDkuLmZlNDQ3ZGY3N2EyMWE2OWM0OGEzNmQ0ODZhYzI1MjIxODAxOGNjMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90LmNwcApAQCAtMTU0LDcgKzE1NCw3
IEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhlYXBTbmFwc2hvdDo6bm9kZUZvckNlbGwo
SlNDZWxsKiBjZWxsKQogICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICByZXR1cm4gbV9wcmV2
aW91cy0+bm9kZUZvckNlbGwoY2VsbCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhl
YXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0SWRlbnRp
ZmllcikKQEAgLTE2MiwxNiArMTYyLDE2IEBAIE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+IEhl
YXBTbmFwc2hvdDo6bm9kZUZvck9iamVjdElkZW50aWZpZXIodW5zaWduZWQgb2JqZWN0CiAgICAg
aWYgKGlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9wcmV2aW91cykKICAgICAgICAgICAgIHJl
dHVybiBtX3ByZXZpb3VzLT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihvYmplY3RJZGVudGlmaWVy
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA+IG1fbGFzdE9iamVjdElk
ZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAob2JqZWN0SWRlbnRpZmllciA8IG1fZmlyc3RPYmplY3RJ
ZGVudGlmaWVyKSB7CiAgICAgICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICAgICAgcmV0dXJu
IG1fcHJldmlvdXMtPm5vZGVGb3JPYmplY3RJZGVudGlmaWVyKG9iamVjdElkZW50aWZpZXIpOwot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgbm9kZSA6IG1fbm9kZXMpIHsKQEAgLTE3OSw3ICsx
NzksNyBAQCBPcHRpb25hbDxIZWFwU25hcHNob3ROb2RlPiBIZWFwU25hcHNob3Q6Om5vZGVGb3JP
YmplY3RJZGVudGlmaWVyKHVuc2lnbmVkIG9iamVjdAogICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPEhlYXBTbmFwc2hvdE5vZGU+KG5vZGUpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNvbHZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJraW5nQ29uc3RyYWlu
dFNvbHZlci5jcHAKaW5kZXggYmI1NWI5Y2JlMjYwMGM3OTJjODVkZWIxMTVkMWFjMjViOWJjMDUx
MC4uNmM3ZmE2YzA4ZmUwOWMwZDg1OTc5OGRhYjVlY2I0YjAyMjVlNjlkYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2luZ0NvbnN0cmFpbnRTb2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtpbmdDb25zdHJhaW50U29sdmVyLmNw
cApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIE1hcmtpbmdDb25zdHJhaW50U29sdmVyOjpkcmFpbihC
aXRWZWN0b3ImIHVuZXhlY3V0ZWQpCiAgICAgYXV0byBwaWNrTmV4dCA9IHNjb3BlZExhbWJkYTxP
cHRpb25hbDx1bnNpZ25lZD4oKT4oCiAgICAgICAgIFsmXSAoKSAtPiBPcHRpb25hbDx1bnNpZ25l
ZD4gewogICAgICAgICAgICAgaWYgKGl0ZXIgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIHJldHVybiAqaXRlcisrOwogICAgICAgICB9KTsKICAgICBleGVjdXRlKE5leHRD
b25zdHJhaW50Rmlyc3QsIHBpY2tOZXh0KTsKQEAgLTEyOCwxMCArMTI4LDEwIEBAIHZvaWQgTWFy
a2luZ0NvbnN0cmFpbnRTb2x2ZXI6OmNvbnZlcmdlKGNvbnN0IFZlY3RvcjxNYXJraW5nQ29uc3Ry
YWludCo+JiBvcmRlcikKICAgICBhdXRvIHBpY2tOZXh0ID0gc2NvcGVkTGFtYmRhPE9wdGlvbmFs
PHVuc2lnbmVkPigpPigKICAgICAgICAgWyZdICgpIC0+IE9wdGlvbmFsPHVuc2lnbmVkPiB7CiAg
ICAgICAgICAgICBpZiAoZGlkVmlzaXRTb21ldGhpbmcoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbmRleCA+PSBvcmRlci5zaXplKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBNYXJraW5nQ29uc3RyYWlu
dCYgY29uc3RyYWludCA9ICpvcmRlcltpbmRleCsrXTsKICAgICAgICAgICAgIHJldHVybiBjb25z
dHJhaW50LmluZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IDAzM2ExYjQ3
MTMzNTI3NzdlZTBkZTVlZDUzZTY0ZjgzOTFmOWQ3NGYuLjQ2MDQ2ZWRiMDEzYjQ3MDAyMDFlMjUz
MTI3N2MxNWFmNjg0MDE0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogICAgIHsKICAgICAgICAgLy8gSW4gY2FzZSB0aGlzIGlzIGEgcmUtZW50cmFu
dCBjYWxsIGZyb20gYSBuZXN0ZWQgcnVuIGxvb3AsIHdlIGRvbid0IHdhbnQgdG8gbG9zZQogICAg
ICAgICAvLyB0aGUgb3V0ZXIgcmVxdWVzdCdzIGlkIGp1c3QgYmVjYXVzZSB0aGUgaW5uZXIgcmVx
dWVzdCBpcyBib2d1cy4KLSAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uYWw8bG9uZz4+IHNjb3Bl
ZFJlcXVlc3RJZChtX2N1cnJlbnRSZXF1ZXN0SWQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIFNl
dEZvclNjb3BlPE9wdGlvbmFsPGxvbmc+PiBzY29wZWRSZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVz
dElkLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpTT046
OlZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2FnZSkg
ewpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5n
RXJyb3JzKCkKICAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UobWVzc2FnZS0+dG9K
U09OU3RyaW5nKCkpOwogCiAgICAgbV9wcm90b2NvbEVycm9ycy5jbGVhcigpOwotICAgIG1fY3Vy
cmVudFJlcXVlc3RJZCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0SWQgPSBz
dGQ6Om51bGxvcHQ7CiB9CiAgICAgCiB2b2lkIEJhY2tlbmREaXNwYXRjaGVyOjpyZXBvcnRQcm90
b2NvbEVycm9yKENvbW1vbkVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oCmluZGV4IDhhNWVmYjMxNmU5ZDA5MzM3YWRh
MjMyM2RjNmY5MjYwNTZhOWMyZjkuLjIxN2IzMTkzZTU4ZjNmMTFjZGE2ZTY4YTgyOWE5YjhhOWMx
MDFmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gRm9yIHN5bmNocm9ub3VzbHkgaGFuZGxlZCByZXF1ZXN0cywgYXZvaWQg
cGx1bWJpbmcgcmVxdWVzdElkIHRocm91Z2ggZXZlcnkKICAgICAvLyBjYWxsIHRoYXQgY291bGQg
cG90ZW50aWFsbHkgZmFpbCB3aXRoIGEgcHJvdG9jb2wgZXJyb3IuCi0gICAgT3B0aW9uYWw8bG9u
Zz4gbV9jdXJyZW50UmVxdWVzdElkIHsgV1RGOjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8bG9u
Zz4gbV9jdXJyZW50UmVxdWVzdElkIHsgc3RkOjpudWxsb3B0IH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggOTMz
NTMxMzM2NDkzODlhMGEyNTI3ZTkzZGRmYTVmOTYyYjZhODc4OC4uZjJkOTQ0M2Q1Y2FiOWQ0NTJm
M2IwZjFmZDQxYzU3YWEwZWQ5MjllNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIE9wdGlvbmFsPEpTQzo6QnJlYWtwb2ludDo6QWN0
aW9uOjpUeXBlPiBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm8KICAgICBhdXRvIHR5
cGUgPSBQcm90b2NvbDo6SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZT4odHlwZVN0cmluZyk7CiAgICAgaWYg
KCF0eXBlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBicmVh
a3BvaW50IGFjdGlvbiB0eXBlOiAiX3MsIHR5cGVTdHJpbmcpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHN3
aXRjaCAoKnR5cGUpIHsKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEpTQzo6QnJl
YWtwb2ludDo6QWN0aW9uOjpUeXBlPiBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhQcm8K
ICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgpAQCAtMTI5LDE2ICsxMjksMTYgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKIAogICAgICAg
ICAgICAgICAgIC8vIFNwZWNpZnlpbmcgYW4gaWRlbnRpZmllciBpcyBvcHRpb25hbC4gVGhleSBh
cmUgdXNlZCB0byBjb3JyZWxhdGUgcHJvYmUgc2FtcGxlcwogICAgICAgICAgICAgICAgIC8vIGlu
IHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVsdGlwbGUgYmFja2VuZCBwcm9iZSBhY3Rpb25zIGFuZCBz
ZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4KLSAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rp
b25PYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9u
OjppZEtleSkudmFsdWVPcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAg
ICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50QWN0aW9uOjppZEtleSkudmFsdWVfb3IoSlNDOjpub0JyZWFrcG9pbnRB
Y3Rpb25JRCk7CiAKLSAgICAgICAgICAgICAgICBhY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJlID0g
YWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFj
dGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5KS52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICBhY3Rpb24uZW11bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFu
KFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJl
S2V5KS52YWx1ZV9vcihmYWxzZSk7CiAKICAgICAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChX
VEZNb3ZlKGFjdGlvbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYXV0
b0NvbnRpbnVlID0gb3B0aW9ucy0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRPcHRpb25zOjphdXRvQ29udGludWVLZXkpLnZhbHVlT3IoZmFsc2UpOwotICAgICAgICBp
Z25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG9D
b250aW51ZSA9IG9wdGlvbnMtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50T3B0aW9uczo6YXV0b0NvbnRpbnVlS2V5KS52YWx1ZV9vcihmYWxzZSk7CisgICAgICAgIGln
bm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSkudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIGNhbGxiYWNrKGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVl
LCBpZ25vcmVDb3VudCk7CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWREaXNwYXRjaEFzeW5jQ2FsbCgpCiAgICAgYXV0byYgYXN5bmNTdGFja1RyYWNl
ID0gaXQtPnZhbHVlOwogICAgIGFzeW5jU3RhY2tUcmFjZS0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwo
KTsKIAotICAgIG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICghYXN5bmNTdGFja1RyYWNlLT5pc1BlbmRpbmcoKSkKICAgICAgICAgbV9wZW5kaW5nQXN5bmND
YWxscy5yZW1vdmUoaWRlbnRpZmllcik7CkBAIC01MzQsOCArNTM0LDggQEAgc3RhdGljIGJvb2wg
cGFyc2VMb2NhdGlvbihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBK
U09OOjpPYmplY3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNvdXJjZUlE
ID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0
SURTdHIpLnZhbHVlT3IoMCk7Ci0gICAgY29sdW1uTnVtYmVyID0gbG9jYXRpb24uZ2V0SW50ZWdl
cihQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjb2x1bW5OdW1iZXJLZXkpLnZhbHVlT3Io
MCk7CisgICAgc291cmNlSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxKU0M6
OlNvdXJjZUlEPihzY3JpcHRJRFN0cikudmFsdWVfb3IoMCk7CisgICAgY29sdW1uTnVtYmVyID0g
bG9jYXRpb24uZ2V0SW50ZWdlcihQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjb2x1bW5O
dW1iZXJLZXkpLnZhbHVlX29yKDApOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01NDYsNyAr
NTQ2LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8c3RkOjp0dXBsZTxQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCwgUmVmPEpTT046OkEKIAogICAgIFByb3RvY29sOjpFcnJvclN0
cmluZyBlcnJvclN0cmluZzsKIAotICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9j
b2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgISF1cmwgPyB1cmwgOiB1cmxS
ZWdleCwgISF1cmxSZWdleCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLnZhbHVlT3IoMCksIFdU
Rk1vdmUob3B0aW9ucykpOworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xC
cmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgISF1cmwgPyB1cmwgOiB1cmxSZWdl
eCwgISF1cmxSZWdleCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLnZhbHVlX29yKDApLCBXVEZN
b3ZlKG9wdGlvbnMpKTsKICAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKGVycm9yU3RyaW5nKTsKIApAQCAtNzMwLDE2ICs3MzAsMTYgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29u
dGludWVUb0xvY2F0aW9uKFJlZjxKU08KIAogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+Pj4gSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50KGNvbnN0IFByb3RvY29sOjpEZWJ1Z2dl
cjo6U2NyaXB0SWQmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBPcHRpb25hbDxib29s
PiYmIGNhc2VTZW5zaXRpdmUsIE9wdGlvbmFsPGJvb2w+JiYgaXNSZWdleCkKIHsKLSAgICBhdXRv
IGl0ID0gbV9zY3JpcHRzLmZpbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlND
OjpTb3VyY2VJRD4oc2NyaXB0SWQpLnZhbHVlT3IoMCkpOworICAgIGF1dG8gaXQgPSBtX3Njcmlw
dHMuZmluZChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxKU0M6OlNvdXJjZUlEPihz
Y3JpcHRJZCkudmFsdWVfb3IoMCkpOwogICAgIGlmIChpdCA9PSBtX3NjcmlwdHMuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBzY3JpcHQgZm9yIGdpdmVuIHNj
cmlwdElkIl9zKTsKIAotICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpzZWFyY2hJ
blRleHRCeUxpbmVzKGl0LT52YWx1ZS5zb3VyY2UsIHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLnZhbHVl
T3IoZmFsc2UpLCBpc1JlZ2V4LnZhbHVlT3IoZmFsc2UpKTsKKyAgICByZXR1cm4gQ29udGVudFNl
YXJjaFV0aWxpdGllczo6c2VhcmNoSW5UZXh0QnlMaW5lcyhpdC0+dmFsdWUuc291cmNlLCBxdWVy
eSwgY2FzZVNlbnNpdGl2ZS52YWx1ZV9vcihmYWxzZSksIGlzUmVnZXgudmFsdWVfb3IoZmFsc2Up
KTsKIH0KIAogUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8U3RyaW5nPiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpnZXRTY3JpcHRTb3VyY2UoY29uc3QgUHJvdG9jb2w6OkRlYnVnZ2VyOjpTY3JpcHRJ
ZCYgc2NyaXB0SWQpCiB7Ci0gICAgYXV0byBpdCA9IG1fc2NyaXB0cy5maW5kKHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPEpTQzo6U291cmNlSUQ+KHNjcmlwdElkKS52YWx1ZU9yKDAp
KTsKKyAgICBhdXRvIGl0ID0gbV9zY3JpcHRzLmZpbmQocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SWQpLnZhbHVlX29yKDApKTsKICAgICBpZiAo
aXQgPT0gbV9zY3JpcHRzLmVuZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1p
c3Npbmcgc2NyaXB0IGZvciBnaXZlbiBzY3JpcHRJZCIpOwogCkBAIC0xMDE1LDcgKzEwMTUsNyBA
QCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiwgT3B0aW9uYQogICAgIE9wdGlvbmFsPGJvb2w+IHdhc1Rocm93bjsK
ICAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAKLSAgICBpbmplY3RlZFNjcmlw
dC5ldmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0
KCksIGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRM
aW5lQVBJLnZhbHVlT3IoZmFsc2UpLCByZXR1cm5CeVZhbHVlLnZhbHVlT3IoZmFsc2UpLCBnZW5l
cmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVPcihmYWxzZSksIHJl
c3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmplY3RlZFNjcmlwdC5l
dmFsdWF0ZU9uQ2FsbEZyYW1lKGVycm9yU3RyaW5nLCBtX2N1cnJlbnRDYWxsU3RhY2suZ2V0KCks
IGNhbGxGcmFtZUlkLCBleHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLnZhbHVlX29yKGZhbHNlKSwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVy
YXRlUHJldmlldy52YWx1ZV9vcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCBy
ZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKICAgICBpZiAocGF1c2VBbmRN
dXRlKQogICAgICAgICB1bm11dGVDb25zb2xlKCk7CkBAIC0xMDMxLDggKzEwMzEsOCBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRTaG91
bGRCbGFja2JveFVSTChjb25zdAogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIlVSTCBtdXN0IG5vdCBiZSBlbXB0eSJfcyk7CiAKLSAgICBib29s
IGNhc2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUudmFsdWVPcihmYWxzZSk7Ci0g
ICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4LnZhbHVlT3IoZmFsc2UpOworICAgIGJv
b2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZS52YWx1ZV9vcihmYWxzZSk7
CisgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4LnZhbHVlX29yKGZhbHNlKTsKIAog
ICAgIGlmICghY2FzZVNlbnNpdGl2ZSAmJiAhaXNSZWdleCAmJiBpc1dlYktpdEluamVjdGVkU2Ny
aXB0KHVybCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQmxhY2tib3hpbmcgb2Yg
aW50ZXJuYWwgc2NyaXB0cyBpcyBjb250cm9sbGVkIGJ5ICdEZWJ1Z2dlci5zZXRQYXVzZUZvcklu
dGVybmFsU2NyaXB0cyciX3MpOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgUHJvdG9jb2w6OkVycm9y
U3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VGb3JJbnRlcm5h
bFNjcmlwdHMKIAogICAgIG1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPSBzaG91bGRQYXVzZTsK
IAotICAgIGF1dG8gYmxhY2tib3hUeXBlID0gIW1fcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMgPyBP
cHRpb25hbDxKU0M6OkRlYnVnZ2VyOjpCbGFja2JveFR5cGU+KEpTQzo6RGVidWdnZXI6OkJsYWNr
Ym94VHlwZTo6SWdub3JlZCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBibGFja2JveFR5cGUg
PSAhbV9wYXVzZUZvckludGVybmFsU2NyaXB0cyA/IE9wdGlvbmFsPEpTQzo6RGVidWdnZXI6OkJs
YWNrYm94VHlwZT4oSlNDOjpEZWJ1Z2dlcjo6QmxhY2tib3hUeXBlOjpJZ25vcmVkKSA6IHN0ZDo6
bnVsbG9wdDsKICAgICBmb3IgKGF1dG8mIFtzb3VyY2VJRCwgc2NyaXB0XSA6IG1fc2NyaXB0cykg
ewogICAgICAgICBpZiAoIWlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoc2NyaXB0LnNvdXJjZVVSTCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmNsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpCiB7CiAgICAgbV9wZW5kaW5n
QXN5bmNDYWxscy5jbGVhcigpOwotICAgIG1fY3VycmVudEFzeW5jQ2FsbElkZW50aWZpZXIgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50QXN5bmNDYWxsSWRlbnRpZmllciA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIGRpZENsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckhlYXBBZ2VudC5jcHAKaW5kZXggODVjZWQ5ZjNkZjYyMjMwMWI5NWUzM2U0OTM1Y2JiZjE2MmI3
ZTMzMC4uY2YyY2Q4ZmZjOWU4OTE1YTg0YjE2ODkzODM3ZDJlOWJlOWU3NDk3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JIZWFwQWdlbnQuY3BwCkBAIC0xNTcsMTkgKzE1NywxOSBAQCBPcHRpb25hbDxIZWFwU25h
cHNob3ROb2RlPiBJbnNwZWN0b3JIZWFwQWdlbnQ6Om5vZGVGb3JIZWFwT2JqZWN0SWRlbnRpZmll
cihQcm90bwogICAgIEhlYXBQcm9maWxlciogaGVhcFByb2ZpbGVyID0gbV9lbnZpcm9ubWVudC52
bSgpLmhlYXBQcm9maWxlcigpOwogICAgIGlmICghaGVhcFByb2ZpbGVyKSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vIGhlYXAgc25hcHNob3QiX3M7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgSGVhcFNu
YXBzaG90KiBzbmFwc2hvdCA9IGhlYXBQcm9maWxlci0+bW9zdFJlY2VudFNuYXBzaG90KCk7CiAg
ICAgaWYgKCFzbmFwc2hvdCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJObyBoZWFwIHNuYXBz
aG90Il9zOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0IE9wdGlvbmFsPEhlYXBTbmFwc2hvdE5vZGU+
IG9wdGlvbmFsTm9kZSA9IHNuYXBzaG90LT5ub2RlRm9yT2JqZWN0SWRlbnRpZmllcihoZWFwT2Jq
ZWN0SWRlbnRpZmllcik7CiAgICAgaWYgKCFvcHRpb25hbE5vZGUpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiTm8gb2JqZWN0IGZvciBpZGVudGlmaWVyLCBpdCBtYXkgaGF2ZSBiZWVuIGNvbGxl
Y3RlZCJfczsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3B0aW9uYWxOb2RlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggNDA0MzcyMTFmMTMyZWE5NTc0ODA4NmI1ZWEzZWQy
ODY4MzQxZTc2Ni4uMDRkMmYzMWY5MzE2YWM0ODI2MTU3MmFkYzY5ZDAxYTdiNjY0OGQ5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0xMzUsMTMgKzEzNSwxMyBAQCBQcm90
b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiwgT3B0aW9uYQogCiAgICAgSlNDOjpEZWJ1Z2dlcjo6VGVtcG9yYXJpbHlEaXNh
YmxlRXhjZXB0aW9uQnJlYWtwb2ludHMgdGVtcG9yYXJpbHlEaXNhYmxlRXhjZXB0aW9uQnJlYWtw
b2ludHMobV9kZWJ1Z2dlcik7CiAKLSAgICBib29sIHBhdXNlQW5kTXV0ZSA9IGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1ZU9yKGZhbHNlKTsKKyAgICBib29sIHBhdXNl
QW5kTXV0ZSA9IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZS52YWx1ZV9vcihm
YWxzZSk7CiAgICAgaWYgKHBhdXNlQW5kTXV0ZSkgewogICAgICAgICB0ZW1wb3JhcmlseURpc2Fi
bGVFeGNlcHRpb25CcmVha3BvaW50cy5yZXBsYWNlKCk7CiAgICAgICAgIG11dGVDb25zb2xlKCk7
CiAgICAgfQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuZXZhbHVhdGUoZXJyb3JTdHJpbmcsIGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBpbmNsdWRlQ29tbWFuZExpbmVBUEkudmFsdWVPcihmYWxzZSks
IHJldHVybkJ5VmFsdWUudmFsdWVPcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZU9yKGZh
bHNlKSwgc2F2ZVJlc3VsdC52YWx1ZU9yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24sIHNhdmVk
UmVzdWx0SW5kZXgpOworICAgIGluamVjdGVkU2NyaXB0LmV2YWx1YXRlKGVycm9yU3RyaW5nLCBl
eHByZXNzaW9uLCBvYmplY3RHcm91cCwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJLnZhbHVlX29yKGZh
bHNlKSwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1
ZV9vcihmYWxzZSksIHNhdmVSZXN1bHQudmFsdWVfb3IoZmFsc2UpLCByZXN1bHQsIHdhc1Rocm93
biwgc2F2ZWRSZXN1bHRJbmRleCk7CiAKICAgICBpZiAocGF1c2VBbmRNdXRlKQogICAgICAgICB1
bm11dGVDb25zb2xlKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmF3YWl0UHJvbWlzZShjb25zdCBQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0
SWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGluamVjdGVkU2NyaXB0LmF3YWl0UHJv
bWlzZShwcm9taXNlT2JqZWN0SWQsIHJldHVybkJ5VmFsdWUudmFsdWVPcihmYWxzZSksIGdlbmVy
YXRlUHJldmlldy52YWx1ZU9yKGZhbHNlKSwgc2F2ZVJlc3VsdC52YWx1ZU9yKGZhbHNlKSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiByZXN1bHQs
IE9wdGlvbmFsPGJvb2w+JiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJ
bmRleCkgeworICAgIGluamVjdGVkU2NyaXB0LmF3YWl0UHJvbWlzZShwcm9taXNlT2JqZWN0SWQs
IHJldHVybkJ5VmFsdWUudmFsdWVfb3IoZmFsc2UpLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3Io
ZmFsc2UpLCBzYXZlUmVzdWx0LnZhbHVlX29yKGZhbHNlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8UHJv
dG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mJiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiYg
d2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiYgc2F2ZWRSZXN1bHRJbmRleCkgewogICAgICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShlcnJvclN0cmlu
Zyk7CiAgICAgICAgIGVsc2UKQEAgLTE4MSwxMyArMTgxLDEzIEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBP
cHRpb25hCiAKICAgICBKU0M6OkRlYnVnZ2VyOjpUZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25C
cmVha3BvaW50cyB0ZW1wb3JhcmlseURpc2FibGVFeGNlcHRpb25CcmVha3BvaW50cyhtX2RlYnVn
Z2VyKTsKIAotICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0Fu
ZE11dGVDb25zb2xlLnZhbHVlT3IoZmFsc2UpOworICAgIGJvb2wgcGF1c2VBbmRNdXRlID0gZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLnZhbHVlX29yKGZhbHNlKTsKICAgICBp
ZiAocGF1c2VBbmRNdXRlKSB7CiAgICAgICAgIHRlbXBvcmFyaWx5RGlzYWJsZUV4Y2VwdGlvbkJy
ZWFrcG9pbnRzLnJlcGxhY2UoKTsKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKICAgICB9CiAKLSAg
ICBpbmplY3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25PbihlcnJvclN0cmluZywgb2JqZWN0SWQsIGZ1
bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3VtZW50cyA/IGFyZ3VtZW50cy0+dG9KU09OU3RyaW5nKCkg
OiBudWxsU3RyaW5nKCksIHJldHVybkJ5VmFsdWUudmFsdWVPcihmYWxzZSksIGdlbmVyYXRlUHJl
dmlldy52YWx1ZU9yKGZhbHNlKSwgcmVzdWx0LCB3YXNUaHJvd24pOworICAgIGluamVjdGVkU2Ny
aXB0LmNhbGxGdW5jdGlvbk9uKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgZnVuY3Rpb25EZWNsYXJh
dGlvbiwgYXJndW1lbnRzID8gYXJndW1lbnRzLT50b0pTT05TdHJpbmcoKSA6IG51bGxTdHJpbmco
KSwgcmV0dXJuQnlWYWx1ZS52YWx1ZV9vcihmYWxzZSksIGdlbmVyYXRlUHJldmlldy52YWx1ZV9v
cihmYWxzZSksIHJlc3VsdCwgd2FzVGhyb3duKTsKIAogICAgIGlmIChwYXVzZUFuZE11dGUpCiAg
ICAgICAgIHVubXV0ZUNvbnNvbGUoKTsKQEAgLTIzMSwxMSArMjMxLDExIEBAIFByb3RvY29sOjpF
cnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRp
bWU6OlByb3BlcnR5CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2
ZW4gb2JqZWN0SWQiX3MpOwogCi0gICAgaW50IHN0YXJ0ID0gZmV0Y2hTdGFydC52YWx1ZU9yKDAp
OworICAgIGludCBzdGFydCA9IGZldGNoU3RhcnQudmFsdWVfb3IoMCk7CiAgICAgaWYgKHN0YXJ0
IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJmZXRjaFN0YXJ0IGNhbm5vdCBi
ZSBuZWdhdGl2ZSJfcyk7CiAKLSAgICBpbnQgY291bnQgPSBmZXRjaENvdW50LnZhbHVlT3IoMCk7
CisgICAgaW50IGNvdW50ID0gZmV0Y2hDb3VudC52YWx1ZV9vcigwKTsKICAgICBpZiAoY291bnQg
PCAwKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoImZldGNoQ291bnQgY2Fubm90IGJl
IG5lZ2F0aXZlIl9zKTsKIApAQCAtMjQ3LDExICsyNDcsMTEgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8c3RkOjp0dXBsZTxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHkKIAogICAgIG11dGVDb25zb2xlKCk7CiAKLSAgICBpbmplY3RlZFNjcmlwdC5nZXRQcm9w
ZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgb3duUHJvcGVydGllcy52YWx1ZU9yKGZhbHNl
KSwgc3RhcnQsIGNvdW50LCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHByb3BlcnRp
ZXMpOworICAgIGluamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVj
dElkLCBvd25Qcm9wZXJ0aWVzLnZhbHVlX29yKGZhbHNlKSwgc3RhcnQsIGNvdW50LCBnZW5lcmF0
ZVByZXZpZXcudmFsdWVfb3IoZmFsc2UpLCBwcm9wZXJ0aWVzKTsKIAogICAgIC8vIE9ubHkgaW5j
bHVkZSBpbnRlcm5hbCBwcm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgZmV0Y2guCiAgICAgaWYgKCFz
dGFydCkKLSAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9y
U3RyaW5nLCBvYmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlT3IoZmFsc2UpLCBpbnRlcm5h
bFByb3BlcnRpZXMpOworICAgICAgICBpbmplY3RlZFNjcmlwdC5nZXRJbnRlcm5hbFByb3BlcnRp
ZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBnZW5lcmF0ZVByZXZpZXcudmFsdWVfb3IoZmFsc2Up
LCBpbnRlcm5hbFByb3BlcnRpZXMpOwogCiAgICAgdW5tdXRlQ29uc29sZSgpOwogCkBAIC0yNjks
MTEgKzI2OSwxMSBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxKU09O
OjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eQogICAgIGlmIChpbmplY3RlZFNj
cmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2lu
ZyBpbmplY3RlZCBzY3JpcHQgZm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAotICAgIGludCBzdGFy
dCA9IGZldGNoU3RhcnQudmFsdWVPcigwKTsKKyAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZh
bHVlX29yKDApOwogICAgIGlmIChzdGFydCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiZmV0Y2hTdGFydCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCi0gICAgaW50IGNvdW50
ID0gZmV0Y2hDb3VudC52YWx1ZU9yKDApOworICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFs
dWVfb3IoMCk7CiAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJmZXRjaENvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7CiAKQEAgLTI4NSwxMSArMjg1
LDExIEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPEpTT046OkFycmF5
T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5CiAKICAgICBtdXRlQ29uc29sZSgpOwogCi0g
ICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBv
YmplY3RJZCwgc3RhcnQsIGNvdW50LCBnZW5lcmF0ZVByZXZpZXcudmFsdWVPcihmYWxzZSksIHBy
b3BlcnRpZXMpOworICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhl
cnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVl
X29yKGZhbHNlKSwgcHJvcGVydGllcyk7CiAKICAgICAvLyBPbmx5IGluY2x1ZGUgaW50ZXJuYWwg
cHJvcGVydGllcyBmb3IgdGhlIGZpcnN0IGZldGNoLgogICAgIGlmICghc3RhcnQpCi0gICAgICAg
IGluamVjdGVkU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0
SWQsIGdlbmVyYXRlUHJldmlldy52YWx1ZU9yKGZhbHNlKSwgaW50ZXJuYWxQcm9wZXJ0aWVzKTsK
KyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKGVycm9yU3RyaW5n
LCBvYmplY3RJZCwgZ2VuZXJhdGVQcmV2aWV3LnZhbHVlX29yKGZhbHNlKSwgaW50ZXJuYWxQcm9w
ZXJ0aWVzKTsKIAogICAgIHVubXV0ZUNvbnNvbGUoKTsKIApAQCAtMzA3LDExICszMDcsMTEgQEAg
UHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1bnRp
bWU6OkNvbGxlY3Rpb25FbnRyeT4+PgogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBpbmplY3RlZCBzY3Jp
cHQgZm9yIGdpdmVuIG9iamVjdElkIl9zKTsKIAotICAgIGludCBzdGFydCA9IGZldGNoU3RhcnQu
dmFsdWVPcigwKTsKKyAgICBpbnQgc3RhcnQgPSBmZXRjaFN0YXJ0LnZhbHVlX29yKDApOwogICAg
IGlmIChzdGFydCA8IDApCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiZmV0Y2hTdGFy
dCBjYW5ub3QgYmUgbmVnYXRpdmUiX3MpOwogCi0gICAgaW50IGNvdW50ID0gZmV0Y2hDb3VudC52
YWx1ZU9yKDApOworICAgIGludCBjb3VudCA9IGZldGNoQ291bnQudmFsdWVfb3IoMCk7CiAgICAg
aWYgKGNvdW50IDwgMCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJmZXRjaENvdW50
IGNhbm5vdCBiZSBuZWdhdGl2ZSJfcyk7CiAKQEAgLTM5Miw5ICszOTIsOSBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjxSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UnVudGltZTo6VHlwZURl
c2NyaXB0aW9uPj4+CiAgICAgICAgIGlmICghbG9jYXRpb24pCiAgICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGluIGxvY2F0aW9ucyJf
cyk7CiAKLSAgICAgICAgYXV0byBkZXNjcmlwdG9yID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJv
dG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6dHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcktl
eSkudmFsdWVPcihUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsKTsKKyAgICAgICAg
YXV0byBkZXNjcmlwdG9yID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJvdG9jb2w6OlJ1bnRpbWU6
OlR5cGVMb2NhdGlvbjo6dHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcktleSkudmFsdWVfb3IoVHlw
ZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CiAgICAgICAgIGF1dG8gc291cmNlSURT
dHJpbmcgPSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRp
b246OnNvdXJjZUlES2V5KTsKLSAgICAgICAgYXV0byBkaXZvdCA9IGxvY2F0aW9uLT5nZXRJbnRl
Z2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OmRpdm90S2V5KS52YWx1ZU9yKDAp
OworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdldEludGVnZXIoUHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RLZXkpLnZhbHVlX29yKDApOwogCiAgICAgICAgIGF1
dG8gdHlwZUxvY2F0aW9uID0gbV92bS50eXBlUHJvZmlsZXIoKS0+ZmluZExvY2F0aW9uKGRpdm90
LCBwYXJzZUludGVnZXI8dWludHB0cl90Pihzb3VyY2VJRFN0cmluZykudmFsdWUoKSwgc3RhdGlj
X2Nhc3Q8VHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvcj4oZGVzY3JpcHRvciksIG1fdm0pOwog
CkBAIC01MDMsNyArNTAzLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFy
cmF5T2Y8UHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxvY2s+Pj4gSW5zcGUKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJWTSBoYXMgbm8gY29udHJvbCBmbG93IGluZm9ybWF0aW9uIl9z
KTsKIAogICAgIGF1dG8gYmFzaWNCbG9ja3MgPSBKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50
aW1lOjpCYXNpY0Jsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6
IG1fdm0uY29udHJvbEZsb3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2Nrc0ZvclNvdXJjZUlEKHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnRwdHJfdD4oc291cmNlSUQpLnZhbHVl
T3IoMCksIG1fdm0pKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBibG9jayA6IG1fdm0uY29udHJv
bEZsb3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2Nrc0ZvclNvdXJjZUlEKHBhcnNlSW50ZWdlckFs
bG93aW5nVHJhaWxpbmdKdW5rPHVpbnRwdHJfdD4oc291cmNlSUQpLnZhbHVlX29yKDApLCBtX3Zt
KSkgewogICAgICAgICBhdXRvIGxvY2F0aW9uID0gUHJvdG9jb2w6OlJ1bnRpbWU6OkJhc2ljQmxv
Y2s6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0U3RhcnRPZmZzZXQoYmxvY2subV9zdGFydE9m
ZnNldCkKICAgICAgICAgICAgIC5zZXRFbmRPZmZzZXQoYmxvY2subV9lbmRPZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmNwcAppbmRleCBlMDZmYmQ5OTk1YmFlYTZkNTg3
MGEzY2JiYjUyNjg3M2VhOTZjNmExLi5jNTRmZmUwYTY2ZDg0M2U4MmM2N2I5MzMzZWY5MzJiOThk
ODc5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgYm9vbCBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKGJvb2wgaXNBdXRv
bWF0aWNJbnNwZWN0aW9uLCBib29sIGF1dG9tYXRpY2EKICAgICBpZiAoIW1fdGFyZ2V0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRhcmdldElkZW50aWZpZXIgPSB0aGlzLT50
YXJnZXRJZGVudGlmaWVyKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRhcmdldElkZW50aWZpZXIg
PSB0aGlzLT50YXJnZXRJZGVudGlmaWVyKCkudmFsdWVfb3IoMCk7CiAKICAgICBpZiAoIW1fdGFy
Z2V0IHx8ICFtX3RhcmdldC0+cmVtb3RlQ29udHJvbEFsbG93ZWQoKSkgewogICAgICAgICBSZW1v
dGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnNldHVwRmFpbGVkKHRhcmdldElkZW50aWZpZXIpOwpA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRD
bG9zZWQoKQogCiBPcHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0
YXJnZXRJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25h
bDxUYXJnZXRJRD4obV90YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIG1fdGFyZ2V0ID8gT3B0aW9uYWw8VGFyZ2V0SUQ+KG1fdGFyZ2V0LT50YXJn
ZXRJZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuY3BwCmluZGV4IGQxZDk1MmM5NDQ1OTY3YWE4YTExZjEyNDM4MmFiYTJh
MmI5ZTczOWUuLjFjYzQwOTM0NjM1ZmVmNTQ5MWFjZjRhY2ZiZTdiZjgyNzIxMTAwODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Ojp1cGRhdGVDbGllbnRDYXBhYmlsaXRpZXMoKQogICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAKICAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudENhcGFiaWxpdGllcyA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9jbGllbnRDYXBhYmlsaXRpZXMgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgZWxzZSB7CiAgICAgICAgIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpDYXBhYmls
aXRpZXMgdXBkYXRlZENhcGFiaWxpdGllcyA9IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5yZW1v
dGVBdXRvbWF0aW9uQWxsb3dlZCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25u
ZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCA4YjJhN2ZhMzhhYTA2OGU0NTM0M2YzNGE0NzJj
ZjFhZTA1MGFlMDg2Li5lODI0NWUxZTc5MWNjNThmYjgwMzM0YmFiN2RjMWVjZmJlNzZmZGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bQpAQCAtMTIzLDcgKzEyMyw3IEBAIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6flJlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldCgpCiAKIE9wdGlvbmFsPFRhcmdldElEPiBSZW1vdGVDb25uZWN0aW9u
VG9UYXJnZXQ6OnRhcmdldElkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3Rhcmdl
dCA/IE9wdGlvbmFsPFRhcmdldElEPihtX3RhcmdldC0+dGFyZ2V0SWRlbnRpZmllcigpKSA6IFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV90YXJnZXQgPyBPcHRpb25hbDxUYXJnZXRJRD4obV90
YXJnZXQtPnRhcmdldElkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE5TU3RyaW5n
ICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QK
QEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6c2V0dXAo
Ym9vbCBpc0F1dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgYXV0b21hdGljYQogICAgIGlmICghbV90
YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdGFyZ2V0SWRlbnRpZmll
ciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZU9yKDApOworICAgIGF1dG8gdGFyZ2V0
SWRlbnRpZmllciA9IHRoaXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZV9vcigwKTsKIAogICAg
IGRpc3BhdGNoQXN5bmNPblRhcmdldChbdGhpcywgdGFyZ2V0SWRlbnRpZmllciwgaXNBdXRvbWF0
aWNJbnNwZWN0aW9uLCBhdXRvbWF0aWNhbGx5UGF1c2UsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcmdldE11dGV4IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudC5j
cHAKaW5kZXggNWUzODc5OGVhMGIxODU1NDkwYmU1YzZmOWMzODFhNWM1YTRlMmFkNi4uN2U5ZGZm
MzgzYTE3YmQ2ODdmNWRmZWZkNjBkNmQxMDlhNDE5M2Y3MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvckNvbm5l
Y3Rpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50LmNwcApAQCAtODgsMjMg
Kzg4LDIzIEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6ZGlkUmVjZWl2
ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsCiBPcHRpb25hbDxSZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50OjpFdmVudD4gUmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVu
dDo6ZXh0cmFjdEV2ZW50KENvbm5lY3Rpb25JRCBjbGllbnRJRCwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSkKIHsKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcganNvbkRh
dGEgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEpOwogCiAgICAgYXV0byBtZXNzYWdlVmFsdWUgPSBK
U09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb25EYXRhKTsKICAgICBpZiAoIW1lc3NhZ2VWYWx1ZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gbWVzc2FnZU9iamVjdCA9IG1lc3NhZ2VWYWx1ZS0+YXNPYmplY3QoKTsK
ICAgICBpZiAoIW1lc3NhZ2VPYmplY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdmVudCBldmVudDsKIAogICAgIGV2
ZW50Lm1ldGhvZE5hbWUgPSBtZXNzYWdlT2JqZWN0LT5nZXRTdHJpbmcoImV2ZW50Il9zKTsKICAg
ICBpZiAoIWV2ZW50Lm1ldGhvZE5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBldmVudC5jbGllbnRJRCA9IGNsaWVu
dElEOwogCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBPcHRpb25hbDxWZWN0b3I8UmVmPEpTT046Ok9i
amVjdD4+PiBSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpwYXJzZVRhcmdldAogewog
ICAgIGF1dG8gbWVzc2FnZVZhbHVlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsK
ICAgICBpZiAoIW1lc3NhZ2VWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbWVzc2FnZUFycmF5ID0gbWVz
c2FnZVZhbHVlLT5hc0FycmF5KCk7CiAgICAgaWYgKCFtZXNzYWdlQXJyYXkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBW
ZWN0b3I8UmVmPEpTT046Ok9iamVjdD4+IHRhcmdldExpc3Q7CiAgICAgZm9yIChhdXRvJiBpdGVt
VmFsdWUgOiAqbWVzc2FnZUFycmF5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuY3BwCmluZGV4IGYyYjQ4MGY5MGFjNGM5MTgzZjU2ZDlhZDcxYTJlM2NiYWNmMjE3
MGUuLjYyMDRkNDFkMzhkNDZhMTk3MjlmYzgyODAyNGZkNTI4NDY2NDI3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC02Miw3ICs2Miw3IEBAIGJv
b2wgUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1aW50
MTZfdCBwb3J0KQogT3B0aW9uYWw8dWludDE2X3Q+IFJlbW90ZUluc3BlY3RvclNlcnZlcjo6Z2V0
UG9ydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1J1bm5pbmcoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNvbnN0IGF1
dG8mIGVuZHBvaW50ID0gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6
c2luZ2xldG9uKCk7CiAgICAgcmV0dXJuIGVuZHBvaW50LmdldFBvcnQobV9zZXJ2ZXIudmFsdWUo
KSk7CkBAIC03NSw3ICs3NSw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVj
dG9yU2VydmVyOjpkb0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwCiAgICAgYXV0byYg
aW5zcGVjdG9yID0gUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKTsKICAgICBpZiAoaW5zcGVj
dG9yLmlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJSZW1vdGVJbnNwZWN0b3Ig
Y2FuIGFjY2VwdCBvbmx5IDEgY2xpZW50Iik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbmV3
SUQgPSBlbmRwb2ludC5jcmVhdGVDbGllbnQoc29ja2V0LCBpbnNwZWN0b3IpKSB7CkBAIC04Myw3
ICs4Myw3IEBAIE9wdGlvbmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU2VydmVyOjpk
b0FjY2VwdChSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwCiAgICAgICAgIHJldHVybiBuZXdJRDsK
ICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRleCBlMzA1OGY1MDFkYzcwOWZiMjhlNjg2NWI2OTUz
M2E2YjU5Yzg2NWQ2Li5kODVmMGNiZmEwOWQwYmQwMzE5NzA3MDNhMmVjOTczZjMzYmVmZDU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6ZGlkQ2xvc2UoUmVtb3RlSW5zcGVjdG9yU29j
a2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzQ29ubmVjdGVkKCkp
OwogCi0gICAgbV9jbGllbnRDb25uZWN0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fY2xpZW50
Q29ubmVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbPV0gewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldEVuZHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludC5jcHAKaW5kZXgg
YTUwYzk0MjA4MmFhZTRhZDRhNjRkNDM5ZTc5Yjc1YmYxODUwY2MxYi4uZTQ1MDFkZjVkYjc4MDUy
MTFkMWVjNWE0MWYyOTA5MGE5NmJlZmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIE9wdGlv
bmFsPENvbm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNvbm5lY3RJ
bmV0KGNvbnN0IGNoYXIqIHNlCiB7CiAgICAgaWYgKGF1dG8gc29ja2V0ID0gU29ja2V0Ojpjb25u
ZWN0KHNlcnZlckFkZHJlc3MsIHNlcnZlclBvcnQpKQogICAgICAgICByZXR1cm4gY3JlYXRlQ2xp
ZW50KCpzb2NrZXQsIGNsaWVudCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxDb25uZWN0aW9uSUQ+IFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50OjpsaXN0ZW5JbmV0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVpbnQx
Nl90IHBvcnQsIExpc3RlbmVyJiBsaXN0ZW5lcikKQEAgLTkzLDcgKzkzLDcgQEAgT3B0aW9uYWw8
Q29ubmVjdGlvbklEPiBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6bGlzdGVuSW5ldChj
b25zdCBjaGFyKiBhZGQKICAgICBhdXRvIGlkID0gZ2VuZXJhdGVDb25uZWN0aW9uSUQoKTsKICAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPExpc3RlbmVyQ29ubmVjdGlvbj4oaWQsIGxp
c3RlbmVyLCBhZGRyZXNzLCBwb3J0KTsKICAgICBpZiAoIWNvbm5lY3Rpb24tPmlzTGlzdGVuaW5n
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBtX2xpc3RlbmVycy5hZGQoaWQsIFdURk1vdmUoY29ubmVjdGlvbikpOwog
ICAgIHdha2V1cFdvcmtlclRocmVhZCgpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIE9wdGlvbmFsPENv
bm5lY3Rpb25JRD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmNyZWF0ZUNsaWVudChQ
bGF0Zm9ybVNvY2tlCiAgICAgYXV0byBpZCA9IGdlbmVyYXRlQ29ubmVjdGlvbklEKCk7CiAgICAg
YXV0byBjb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxDbGllbnRDb25uZWN0aW9uPihpZCwgc29ja2V0
LCBjbGllbnQpOwogICAgIGlmICghU29ja2V0Ojppc1ZhbGlkKGNvbm5lY3Rpb24tPnNvY2tldCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBtX2NsaWVudHMuYWRkKGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pKTsKICAgICB3
YWtldXBXb3JrZXJUaHJlYWQoKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBPcHRpb25hbDx1aW50MTZf
dD4gUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQ6OmdldFBvcnQoQ29ubmVjdGlvbklEIGlk
KSBjb25zdAogICAgIGlmIChjb25zdCBhdXRvJiBjb25uZWN0aW9uID0gbV9jbGllbnRzLmdldChp
ZCkpCiAgICAgICAgIHJldHVybiBTb2NrZXQ6OmdldFBvcnQoY29ubmVjdGlvbi0+c29ja2V0KTsK
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6cmVjdklmRW5hYmxlZChDb25u
ZWN0aW9uSUQgaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9zb2NrZXQvcG9zaXgvUmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3Bvc2l4L1JlbW90ZUlu
c3BlY3RvclNvY2tldFBPU0lYLmNwcAppbmRleCA3ZmU2Nzg2NThiZDVkNzUyYzZiZWY3YjY5NzBi
ZGRjNzIzYjg3MzFmLi5kYTY4NTE4OWQ1MmYwNjY0YzU0MWQzNWE2NDI5YWE0MGIwMTcxNGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQv
cG9zaXgvUmVtb3RlSW5zcGVjdG9yU29ja2V0UE9TSVguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9wb3NpeC9SZW1vdGVJbnNwZWN0b3JTb2Nr
ZXRQT1NJWC5jcHAKQEAgLTU1LDE0ICs1NSwxNCBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5
cGU+IGNvbm5lY3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUAog
ICAgIGludCBmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQUk9UT19UQ1ApOwog
ICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHNv
Y2tldCBmb3IgJXM6JWQsIGVycm5vID0gJWQiLCBzZXJ2ZXJBZGRyZXNzLCBzZXJ2ZXJQb3J0LCBl
cnJubyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaW50IGVycm9yID0gOjpjb25uZWN0KGZkLCAoc3RydWN0
IHNvY2thZGRyKikmYWRkcmVzcywgc2l6ZW9mKGFkZHJlc3MpKTsKICAgICBpZiAoZXJyb3IgPCAw
KSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNvbm5lY3QgdG8gJXM6JXUsIGVycm5v
ID0gJWQiLCBzZXJ2ZXJBZGRyZXNzLCBzZXJ2ZXJQb3J0LCBlcnJubyk7CiAgICAgICAgIDo6Y2xv
c2UoZmQpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBmZDsKQEAgLTc1LDcgKzc1LDcgQEAgT3B0
aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwg
dWludDE2X3QgcG9ydCkKICAgICBpbnQgZmRMaXN0ZW4gPSBzb2NrZXQoQUZfSU5FVCwgU09DS19T
VFJFQU0sIElQUFJPVE9fVENQKTsKICAgICBpZiAoZmRMaXN0ZW4gPCAwKSB7CiAgICAgICAgIExP
R19FUlJPUigic29ja2V0KCkgZmFpbGVkLCBlcnJubyA9ICVkIiwgZXJybm8pOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGNvbnN0IGludCBlbmFibGVkID0gMTsKQEAgLTgzLDIxICs4MywyMSBAQCBPcHRpb25h
bDxQbGF0Zm9ybVNvY2tldFR5cGU+IGxpc3Rlbihjb25zdCBjaGFyKiBhZGRyZXNzU3RyLCB1aW50
MTZfdCBwb3J0KQogICAgIGlmIChlcnJvciA8IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJzZXRz
b2Nrb3B0KCkgU09fUkVVU0VBRERSLCBlcnJubyA9ICVkIiwgZXJybm8pOwogICAgICAgICA6OmNs
b3NlKGZkTGlzdGVuKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBlcnJvciA9IHNldHNvY2tvcHQoZmRMaXN0
ZW4sIFNPTF9TT0NLRVQsIFNPX1JFVVNFUE9SVCwgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSk7
CiAgICAgaWYgKGVycm9yIDwgMCkgewogICAgICAgICBMT0dfRVJST1IoInNldHNvY2tvcHQoKSBT
T19SRVVTRVBPUlQsIGVycm5vID0gJWQiLCBlcnJubyk7CiAgICAgICAgIDo6Y2xvc2UoZmRMaXN0
ZW4pOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIGlmIChzZXRz
b2Nrb3B0KGZkTGlzdGVuLCBTT0xfU09DS0VULCBTT19VU0VfREVWTEFOLCAmZW5hYmxlZCwgc2l6
ZW9mKGVuYWJsZWQpKSA8IDApIHsKICAgICAgICAgTE9HX0VSUk9SKCJzZXRzb2NrZXRvcHQoKSBT
T19VU0VfREVWTEFOLCBlcnJubyA9ICVkIiwgZXJybm8pOwogICAgICAgICA6OmNsb3NlKGZkTGlz
dGVuKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAjZW5kaWYKIApAQCAtMTEyLDE0ICsxMTIsMTQgQEAgT3B0aW9uYWw8
UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2
X3QgcG9ydCkKICAgICBpZiAoZXJyb3IgPCAwKSB7CiAgICAgICAgIExPR19FUlJPUigiYmluZCgp
IGZhaWxlZCwgZXJybm8gPSAlZCIsIGVycm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgZXJyb3IgPSA6Omxpc3RlbihmZExpc3RlbiwgMSk7CiAgICAgaWYg
KGVycm9yIDwgMCkgewogICAgICAgICBMT0dfRVJST1IoImxpc3RlbigpIGZhaWxlZCwgZXJybm8g
PSAlZCIsIGVycm5vKTsKICAgICAgICAgOjpjbG9zZShmZExpc3Rlbik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGZkTGlzdGVuOwpAQCAtMTM1LDcgKzEzNSw3IEBAIE9wdGlvbmFsPFBsYXRmb3Jt
U29ja2V0VHlwZT4gYWNjZXB0KFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQpCiAgICAgICAgIHJl
dHVybiBmZDsKIAogICAgIExPR19FUlJPUigiYWNjZXB0KGluZXQpIGVycm9yIChlcnJubyA9ICVk
KSIsIGVycm5vKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4g
Y3JlYXRlUGFpcigpCkBAIC0xNDMsNyArMTQzLDcgQEAgT3B0aW9uYWw8c3RkOjphcnJheTxQbGF0
Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKICAgICBzdGQ6OmFycmF5PFBsYXRmb3Jt
U29ja2V0VHlwZSwgMj4gc29ja2V0czsKIAogICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNP
Q0tfU1RSRUFNLCAwLCAmc29ja2V0c1swXSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc29ja2V0czsKIH0K
QEAgLTE5Nyw3ICsxOTcsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9ybVNv
Y2tldFR5cGUgc29ja2V0KQogICAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YoYWRkcmVzcyk7CiAg
ICAgaWYgKGdldHNvY2tuYW1lKHNvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgc29ja2Fk
ZHIqPigmYWRkcmVzcyksICZsZW4pKSB7CiAgICAgICAgIExPR19FUlJPUigiZ2V0c29ja25hbWUo
KSBlcnJvciAoZXJybm8gPSAlZCkiLCBlcnJubyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBhZGRy
ZXNzLnNpbl9wb3J0OwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gcmVh
ZChQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCB2b2lkKiBidWZmZXIsIGludCBidWZmZXJTaXpl
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihyZWFkU2l6ZSk7CiAKICAgICBM
T0dfRVJST1IoInJlYWQgZXJyb3IgKGVycm5vID0gJWQpIiwgZXJybm8pOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c2l6
ZV90PiB3cml0ZShQbGF0Zm9ybVNvY2tldFR5cGUgc29ja2V0LCBjb25zdCB2b2lkKiBkYXRhLCBp
bnQgc2l6ZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRm
b3JtU29ja2V0VHlwZSBzb2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih3cml0ZVNpemUpOwogCiAgICAgTE9HX0VSUk9S
KCJ3cml0ZSBlcnJvciAoZXJybm8gPSAlZCkiLCBlcnJubyk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIGNsb3NlKFBsYXRmb3Jt
U29ja2V0VHlwZSYgc29ja2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJbnNwZWN0b3JTb2NrZXRXaW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L3dpbi9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXRXaW4uY3BwCmluZGV4IDA1ZjI4YTEwNDdlNTkyMTExZTNhMGE3Y2YxZWVk
Yjc5YjBiNGY2OTcuLjZlZDgwZWJiN2JhZDQ2MTZkNmNiMjNkMWFjMmQ5ZjhmZThiZjY1NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC93
aW4vUmVtb3RlSW5zcGVjdG9yU29ja2V0V2luLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvd2luL1JlbW90ZUluc3BlY3RvclNvY2tldFdpbi5j
cHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVNvY2tldFR5cGU+IGNvbm5l
Y3QoY29uc3QgY2hhciogc2VydmVyQWRkcmVzcywgdWludDE2X3Qgc2VydmVyUAogICAgIGF1dG8g
c29ja2V0ID0gY29ubmVjdFRvKGFkZHJlc3MpOwogICAgIGlmICghaXNWYWxpZChzb2NrZXQpKSB7
CiAgICAgICAgIExPR19FUlJPUigiY29ubmVjdGluZyB0byAlczoldSBmYWlsZWQgKGVycm5vID0g
JWQpIiwgc2VydmVyQWRkcmVzcywgc2VydmVyUG9ydCwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIHJldHVybiBzb2NrZXQ7CkBAIC0xODcsNyArMTg3LDcgQEAgT3B0aW9uYWw8
UGxhdGZvcm1Tb2NrZXRUeXBlPiBsaXN0ZW4oY29uc3QgY2hhciogYWRkcmVzc1N0ciwgdWludDE2
X3QgcG9ydCkKIAogICAgIGF1dG8gc29ja2V0ID0gYmluZEFuZExpc3RlbihhZGRyZXNzKTsKICAg
ICBpZiAoIWlzVmFsaWQoc29ja2V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzb2NrZXQ7CiB9CkBAIC0y
MDIsNyArMjAyLDcgQEAgT3B0aW9uYWw8UGxhdGZvcm1Tb2NrZXRUeXBlPiBhY2NlcHQoUGxhdGZv
cm1Tb2NrZXRUeXBlIHNvY2tldCkKICAgICAgICAgcmV0dXJuIGZkOwogCiAgICAgTE9HX0VSUk9S
KCJmYWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8c3Rk
OjphcnJheTxQbGF0Zm9ybVNvY2tldFR5cGUsIDI+PiBjcmVhdGVQYWlyKCkKQEAgLTIxNCwxMSAr
MjE0LDExIEBAIE9wdGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3Jl
YXRlUGFpcigpCiAKICAgICBTb2NrZXQgc2VydmVyKGJpbmRBbmRMaXN0ZW4oYWRkcmVzcykpOwog
ICAgIGlmICghc2VydmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDE2X3Q+IHNlcnZlclBvcnQg
PSBnZXRQb3J0KHNlcnZlcik7CiAgICAgaWYgKCFzZXJ2ZXJQb3J0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYWRkcmVz
cy5zaW5fcG9ydCA9IGh0b25zKCpzZXJ2ZXJQb3J0KTsKIApAQCAtMjI2LDcgKzIyNiw3IEBAIE9w
dGlvbmFsPHN0ZDo6YXJyYXk8UGxhdGZvcm1Tb2NrZXRUeXBlLCAyPj4gY3JlYXRlUGFpcigpCiAg
ICAgc29ja2V0c1swXSA9IGNvbm5lY3RUbyhhZGRyZXNzKTsKICAgICBpZiAoIWlzVmFsaWQoc29j
a2V0c1swXSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJjb25uZWN0aW5nIGZhaWxlZCAoZXJybm8g
PSAlZCkiLCBXU0FHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc29j
a2V0ID0gYWNjZXB0KHNlcnZlcikpIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBPcHRpb25hbDxzdGQ6
OmFycmF5PFBsYXRmb3JtU29ja2V0VHlwZSwgMj4+IGNyZWF0ZVBhaXIoKQogICAgICAgICByZXR1
cm4gc29ja2V0czsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgc2V0dXAoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tl
dCkKQEAgLTI3Miw3ICsyNzIsNyBAQCBPcHRpb25hbDx1aW50MTZfdD4gZ2V0UG9ydChQbGF0Zm9y
bVNvY2tldFR5cGUgc29ja2V0KQogICAgIGludCBsZW4gPSBzaXplb2YoYWRkcmVzcyk7CiAgICAg
aWYgKGdldHNvY2tuYW1lKHNvY2tldCwgcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgc29ja2FkZHIq
PigmYWRkcmVzcyksICZsZW4pKSB7CiAgICAgICAgIExPR19FUlJPUigiZ2V0c29ja25hbWUoKSBm
YWlsZWQgKGVycm5vID0gJWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBy
ZXR1cm4gbnRvaHMoYWRkcmVzcy5zaW5fcG9ydCk7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAgT3B0
aW9uYWw8c2l6ZV90PiByZWFkKFBsYXRmb3JtU29ja2V0VHlwZSBzb2NrZXQsIHZvaWQqIGJ1ZmZl
ciwgaW50IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJl
YWRTaXplKTsKIAogICAgIExPR19FUlJPUigicmVjdigpIGZhaWxlZCAoZXJybm8gPSAlZCkiLCBX
U0FHZXRMYXN0RXJyb3IoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxzaXplX3Q+IHdyaXRlKFBsYXRmb3JtU29ja2V0
VHlwZSBzb2NrZXQsIGNvbnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQpAQCAtMjk4LDcgKzI5OCw3
IEBAIE9wdGlvbmFsPHNpemVfdD4gd3JpdGUoUGxhdGZvcm1Tb2NrZXRUeXBlIHNvY2tldCwgY29u
c3Qgdm9pZCogZGF0YSwgaW50IHNpemUpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHdyaXRlU2l6ZSk7CiAKICAgICBMT0dfRVJST1IoInNlbmQoKSBmYWlsZWQgKGVycm5vID0g
JWQpIiwgV1NBR2V0TGFzdEVycm9yKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBjbG9zZShQbGF0Zm9ybVNvY2tldFR5cGUm
IHNvY2tldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCA0NTJmYzcwMWU4
NGZmYzFkZmMxMjA2Mzc1NjdmMDdhOGU0ZTFlN2FkLi5jZDg5Mzk2NWNiN2NjYTA3YmNiMmQ2Yzgy
YWI5NzBlYjI1ZjNkYzUyIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50
YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2Nv
ZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0x
MjQsNyArMTI0LDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKENwcEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgJyAgICAgICAgaWYgKHByb3RvY29s
U3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSknLAogICAg
ICAgICAgICAgICAgICcgICAgICAgICAgICByZXR1cm4gKCVzKWNvbnN0YW50VmFsdWVzW2ldOycg
JSBjcHBfcHJvdG9jb2xfdHlwZSwKICAgICAgICAgICAgICAgICAnJywKLSAgICAgICAgICAgICAg
ICAnICAgIHJldHVybiBXVEY6Om51bGxvcHQ7JywKKyAgICAgICAgICAgICAgICAnICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7JywKICAgICAgICAgICAgICAgICAnfScsCiAgICAgICAgICAgICBdKQog
ICAgICAgICAgICAgcmV0dXJuICdcbicuam9pbihib2R5X2xpbmVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2Jq
Y19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZV9jb252ZXJzaW9uc19oZWFkZXIucHkKaW5kZXggODVmMGZjYzkxMzJkNjljNTk3ZjFhNjhiMGEz
YjkwMTU2MzY0Y2FkYi4uYTZhNjQzZmM4ODUzMzJmMWIwYmRkOGI3NThlMjg0MDhmZWY1ZjUxNiAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5CkBAIC0xNjgsNiArMTY4
LDYgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yKE9i
akNHZW5lcmF0b3IpOgogICAgICAgICBmb3IgZW51bV92YWx1ZSBpbiBlbnVtX3ZhbHVlczoKICAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmICh2YWx1ZSA9PSAiJXMiKScgJSBlbnVtX3Zh
bHVlKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiAlcyVzOycgJSAo
b2JqY19lbnVtX25hbWUsIEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVu
dW1fdmFsdWUpKSkKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gc3RkOjpudWxsb3B0OycpCiAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggZWU4NmViNTdkZWYx
NzhkZmFhZDc0MjYxOTZlY2FlZjlkZDQzY2JiZC4uNDVjZWNmMjg0MWIzYjFlMjRmZDVlYTAyMTc2
NjU0YmMxOGU4ZDljOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApA
QCAtNzgwLDcgKzc4MCw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNv
bG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpECiAgICAgICAgIGlmIChw
cm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0p
CiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycylj
b25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKQEAgLTE0MTks
NyArMTQxOSw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlD
b2xvcnM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpCiAgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjsKICAgICBpZiAodmFsdWUgPT0gImJs
dWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzQmx1
ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yIHZhbHVlKQpAQCAtMTQ0
Nyw3ICsxNDQ3LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IKICAgICAgICAgcmV0dXJuIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJldHVybiBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmlu
dENvbG9yQmxhY2s7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgdmFs
dWUpCkBAIC0xNDc1LDcgKzE0NzUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sbwogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVy
blZhbHVlc1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0
dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5n
KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHZhbHVlKQpAQCAt
MTUwMyw3ICsxNTAzLDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTFN5bmNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbmcKICAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yWWVsbG93OwogICAg
IGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JCbGFjazsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2Nv
bFN0cmluZyhUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IgdmFs
dWUpCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yPiBmcm9tUHJvdG9jb2xTdHJpbgogICAgICAg
ICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yWWVs
bG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQmxhY2s7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDk4MDY4YmZmMDg0OTExZGZmOGZiMmQzN2Jh
MmVhM2E4OWUwZjAzM2MuLmRkNzc2NWU1YjdiMjU4MmM3ZThkYmU5NTM1OTMxNzg1YmFmYzI3NTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdApAQCAtNjkzLDcgKzY5Myw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29s
OjpECiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tj
b25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpEYXRhYmFz
ZTo6UHJpbWFyeUNvbG9ycyljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVz
dEhlbHBlcnMKQEAgLTEyODgsNyArMTI4OCw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9j
b2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpCiAg
ICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNHcmVlbjsKICAg
ICBpZiAodmFsdWUgPT0gImJsdWUiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzQmx1ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yIHZh
bHVlKQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb20KICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yQmxhY2s7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPiBm
cm9tCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93OwogICAgIGlmICh2YWx1ZSA9PSAiYmxhY2siKQog
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciB2
YWx1ZSkKQEAgLTEzNzQsNyArMTM3NCw3IEBAIGlubGluZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IGZyb21QCiAgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3JZZWxsb3c7CiAgICAgaWYgKHZhbHVlID09ICJibGFjayIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3JCbGFjazsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIApAQCAtMTQwNCw3ICsxNDA0LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gZnJv
bVAKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdzsKICAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKICAg
ICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvckJsYWNrOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5kZXggYjU4
MTY1YjRiZDFkM2RlMmExY2ZhZGI3ZGMyOGUyNWRiNzFjYWJkYS4uZjI2MjM3MTg3ZTY3YzM4YWY0
MTI3Mjk2ZTUwNTE0Njk3M2Y3ZThjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtNTk4LDcgKzU5OCw3IEBAIE9wdGlvbmFs
PFByb3RvY29sOjpUeXBlRG9tYWluOjpFbnVtPiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJv
dG9jb2w6OlR5cGVEb21hCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0
YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICByZXR1cm4gKFByb3Rv
Y29sOjpUeXBlRG9tYWluOjpFbnVtKWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0SGVscGVycwpAQCAtMTExMSw3ICsxMTExLDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQ
cm90b2NvbFR5cGVEb21haW5FbnVtPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWwKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtMTsKICAgICBpZiAo
dmFsdWUgPT0gIjIiKQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0y
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwt
dHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5q
c29uLXJlc3VsdAppbmRleCBkZWEzYWM3MjRhMWIxNThmOWVmZTVlYmZmODhlNGQzZjhhNjUwMDVl
Li45YzNiMDJjMTMxZDU5YzlmZTA2YzVlNTNlYWRiNmRkNDA5OGFiZWFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hh
ZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRp
b25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTQ5Miw3ICs0OTIsNyBAQCBPcHRpb25h
bDxQcm90b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZT4gcGFyc2VFbnVtVmFsdWVGcm9tU3Ry
aW5nPFByb3RvY29sOjpSdQogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25z
dGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChQcm90
b2NvbDo6UnVudGltZTo6S2V5UGF0aDo6VHlwZSljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgVGVzdEhlbHBlcnMKQEAgLTg5MSw3ICs4OTEsNyBAQCBpbmxpbmUgT3B0aW9uYWw8
VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJgogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlU3Ry
aW5nOwogICAgIGlmICh2YWx1ZSA9PSAiYXJyYXkiKQogICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sUnVudGltZUtleVBhdGhUeXBlQXJyYXk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAg
LTEwMDIsNyArMTAwMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBh
eWxvYWRbQCJ0eXBlIl0sIEAidHlwZSIpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90b2NvbFJ1bnRp
bWVLZXlQYXRoVHlwZT4gdHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xSdW50
aW1lS2V5UGF0aFR5cGU+KHBheWxvYWRbQCJ0eXBlIl0pOworICAgIE9wdGlvbmFsPFRlc3RQcm90
b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4gdHlwZSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJv
dG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXlsb2FkW0Ai
dHlwZSJdKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKHR5cGUsIEAi
dHlwZSIpOwogICAgIHNlbGYudHlwZSA9IHR5cGUudmFsdWUoKTsKIApAQCAtMTAzNyw3ICsxMDM3
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sUnVudGlt
ZUtleVBhdGhUeXBlKXR5cGUKIHsKLSAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZT4oW3N1cGVyIHN0cmluZ0ZvcktleTpAInR5cGUiXSku
dmFsdWUoKTsKKyAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFJ1bnRp
bWVLZXlQYXRoVHlwZT4oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtzdXBlciBzdHJpbmdGb3JLZXk6
QCJ0eXBlIl0pLnZhbHVlKCk7CiB9CiAKIC0gKHZvaWQpc2V0U3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZGIzYmZkNWNlOTRl
Y2U3NzA0MzdiNzY2ZTI3YmNmOWRmMzQxODBmMy4uNTM0YWI2NGI1NjliNDYxOTE0MDc0ODlhMmI4
MDdhNzJmOTRkYTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29u
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC00
NTIsNyArNDUyLDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24+IHBhcnNl
RW51bVZhbHVlRnJvbVN0cmluZzxQcm90b2NvbDo6RGVidWdnZXIKICAgICAgICAgaWYgKHByb3Rv
Y29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAg
ICAgICAgICAgIHJldHVybiAoUHJvdG9jb2w6OkRlYnVnZ2VyOjpSZWFzb24pY29uc3RhbnRWYWx1
ZXNbaV07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RIZWxwZXJzCkBAIC04NDMsNyArODQzLDcgQEAg
aW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWwKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVn
Z2VyUmVhc29uRmFpbnRlZDsKICAgICBpZiAodmFsdWUgPT0gIkh1bmdyeSIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkh1bmdyeTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10
eXBlLmpzb24tcmVzdWx0CmluZGV4IDgxNjg3Njk0ZGE2NjAwOTlkZWRjZTEzMTBmYjMzODc2MTMw
MzIxNDEuLjg0NWZmOGQ5NTEzZWVlZWIyODUzODZhMmNmMDhkMTA2OTg0NWM4ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAgLTQ1OCw3ICs0NTgsNyBAQCBPcHRpb25hbDxQ
cm90b2NvbDo6UnVudGltZTo6RmFybUFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQ
cm90b2NvbDo6UnVudAogICAgICAgICBpZiAocHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFu
dF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAgICAgICAgICAgcmV0dXJuIChQcm90b2Nv
bDo6UnVudGltZTo6RmFybUFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4K
QEAgLTQ3NCw3ICs0NzQsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2Vk
QW5pbWFscz4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOgogICAgICAgICBpZiAo
cHJvdG9jb2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1d
KQogICAgICAgICAgICAgcmV0dXJuIChQcm90b2NvbDo6UnVudGltZTo6VHdvTGVnZ2VkQW5pbWFs
cyljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdEhlbHBlcnMKQEAgLTg3
Nyw3ICs4NzcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFByb3RvY29sUnVudGltZUZhcm1Bbmlt
YWxzPiBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gVGVz
dFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzQ2F0czsKICAgICBpZiAodmFsdWUgPT0gIkhlbnMi
KQogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZUZhcm1BbmltYWxzSGVuczsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlu
bGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2Vk
QW5pbWFscyB2YWx1ZSkKQEAgLTkwNSw3ICs5MDUsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFBy
b3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHM+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dAogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHNDcm93
czsKICAgICBpZiAodmFsdWUgPT0gIkZsYW1pbmdvcyIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCAwMGM0NTE3
ODlhN2YxZjcxMTk2MzQ1MzY3YjQzY2ZkYmQ0MDExOGNkLi42YmI5ZjUyMjk4NDU3MGE5NWVhMWIz
ZDY3ZTAyMGYzMzBkY2IzZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlw
ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3Vs
dApAQCAtMTAzNiw3ICsxMDM2LDcgQEAgT3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpNb3Vz
ZUJ1dHRvbj4gcGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPFByb3RvY29sOjpEYXQKICAgICAgICAg
aWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVz
W2ldXSkKICAgICAgICAgICAgIHJldHVybiAoUHJvdG9jb2w6OkRhdGFiYXNlOjpNb3VzZUJ1dHRv
biljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgpAQCAtMTA1MCw3ICsxMDUwLDcgQEAg
T3B0aW9uYWw8UHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGly
ZWN0aW9uYWxpdHk+IHBhcnNlRW51bVYKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVu
dW1fY29uc3RhbnRfdmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVy
biAoUHJvdG9jb2w6OkRhdGFiYXNlOjpPcHRpb25hbFBhcmFtZXRlckJ1bmRsZTo6RGlyZWN0aW9u
YWxpdHkpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4KQEAgLTEwNjQsNyArMTA2NCw3
IEBAIE9wdGlvbmFsPFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rp
b25hbGl0eT4gcGFyc2VFbnVtVmFsdWVGcm9tCiAgICAgICAgIGlmIChwcm90b2NvbFN0cmluZyA9
PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0pCiAgICAgICAgICAgICBy
ZXR1cm4gKFByb3RvY29sOjpEYXRhYmFzZTo6UGFyYW1ldGVyQnVuZGxlOjpEaXJlY3Rpb25hbGl0
eSljb25zdGFudFZhbHVlc1tpXTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gRW51bXMgaW4gdGhlICdUZXN0JyBEb21haW4KQEAg
LTEwODAsNyArMTA4MCw3IEBAIE9wdGlvbmFsPFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5k
bGU6OkRpcmVjdGlvbmFsaXR5PiBwYXJzZUVudW1WYWx1ZUZyb21TdHJpCiAgICAgICAgIGlmIChw
cm90b2NvbFN0cmluZyA9PSBlbnVtX2NvbnN0YW50X3ZhbHVlc1tjb25zdGFudFZhbHVlc1tpXV0p
CiAgICAgICAgICAgICByZXR1cm4gKFByb3RvY29sOjpUZXN0OjpQYXJhbWV0ZXJCdW5kbGU6OkRp
cmVjdGlvbmFsaXR5KWNvbnN0YW50VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SGVs
cGVycwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERh
dGFiYXNlTW91c2VCdXR0b24+IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcKICAgICAg
ICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlTW91c2VCdXR0b25NaWRkbGU7CiAgICAgaWYg
KHZhbHVlID09ICJSaWdodCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZU1v
dXNlQnV0dG9uUmlnaHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3Rv
Y29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5IHZhbHVlKQpA
QCAtMTU4NSw3ICsxNTg1LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNl
T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4gZnJvbVAKICAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25h
bGl0eUxUUjsKICAgICBpZiAodmFsdWUgPT0gIlJUTCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHlSVEw7Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBp
bmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0
ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSB2YWx1ZSkKQEAgLTE2MDUsNyArMTYwNSw3IEBAIGlubGlu
ZSBPcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFs
aXR5PiBmcm9tUHJvdG9jb2xTCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEYXRhYmFzZVBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5TFRSOwogICAgIGlmICh2YWx1ZSA9PSAiUlRMIikK
ICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0
aW9uYWxpdHlSVEw7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29s
VGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5IHZhbHVlKQpAQCAtMTYyNSw3ICsxNjI1
LDcgQEAgaW5saW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eT4gZnJvbVByb3RvY29sU3RyaW4KICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eUxUUjsKICAgICBpZiAodmFsdWUgPT0g
IlJUTCIpCiAgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGly
ZWN0aW9uYWxpdHlSVEw7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKQEAgLTE4NTUsNyArMTg1
NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICBzZWxmLmJ1dHRvbnMgPSBw
YXlsb2FkW0AiYnV0dG9ucyJdOwogCi0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VP
cHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0eSA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVu
ZGxlRGlyZWN0aW9uYWxpdHk+KHBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKKyAgICBPcHRp
b25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERh
dGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKICAgICBpZiAoZGlyZWN0aW9u
YWxpdHkpCiAgICAgICAgIHNlbGYuZGlyZWN0aW9uYWxpdHkgPSBkaXJlY3Rpb25hbGl0eS52YWx1
ZSgpOwogCkBAIC0xOTA4LDcgKzE5MDgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiAtIChUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHkpZGlyZWN0aW9uYWxpdHkKIHsKLSAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4o
W3N1cGVyIHN0cmluZ0ZvcktleTpAImRpcmVjdGlvbmFsaXR5Il0pLnZhbHVlKCk7CisgICAgcmV0
dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1l
dGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KChfX2JyaWRnZSBDRlN0cmluZ1JlZilbc3VwZXIgc3Ry
aW5nRm9yS2V5OkAiZGlyZWN0aW9uYWxpdHkiXSkudmFsdWUoKTsKIH0KIAogLSAodm9pZClzZXRO
b3RlczooTlNTdHJpbmcgKilub3RlcwpAQCAtMTk5Nyw3ICsxOTk3LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKICAgICBzZWxmLmJ1dHRvbnMgPSBwYXlsb2FkW0AiYnV0dG9ucyJdOwog
CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiZGly
ZWN0aW9uYWxpdHkiXSwgQCJkaXJlY3Rpb25hbGl0eSIpOwotICAgIE9wdGlvbmFsPFRlc3RQcm90
b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGRpcmVjdGlvbmFsaXR5
ID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxl
RGlyZWN0aW9uYWxpdHk+KHBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKKyAgICBPcHRpb25h
bDxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJl
Y3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVBhcmFt
ZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9hZFtA
ImRpcmVjdGlvbmFsaXR5Il0pOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX0VOVU1fVkFM
VUUoZGlyZWN0aW9uYWxpdHksIEAiZGlyZWN0aW9uYWxpdHkiKTsKICAgICBzZWxmLmRpcmVjdGlv
bmFsaXR5ID0gZGlyZWN0aW9uYWxpdHkudmFsdWUoKTsKIApAQCAtMjA4Myw3ICsyMDgzLDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoVGVzdFByb3RvY29sRGF0YWJhc2VQYXJh
bWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSlkaXJlY3Rpb25hbGl0eQogewotICAgIHJldHVybiBm
cm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eT4oW3N1cGVyIHN0cmluZ0ZvcktleTpAImRpcmVjdGlvbmFsaXR5Il0pLnZhbHVl
KCk7CisgICAgcmV0dXJuIGZyb21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5PigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW3N1cGVy
IHN0cmluZ0ZvcktleTpAImRpcmVjdGlvbmFsaXR5Il0pLnZhbHVlKCk7CiB9CiAKIC0gKHZvaWQp
c2V0Tm90ZXM6KE5TU3RyaW5nICopbm90ZXMKQEAgLTIyODksNyArMjI4OSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19FWENF
UFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdLCBA
ImRpcmVjdGlvbmFsaXR5Iik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdFBhcmFtZXRl
ckJ1bmRsZURpcmVjdGlvbmFsaXR5PiBkaXJlY3Rpb25hbGl0eSA9IGZyb21Qcm90b2NvbFN0cmlu
ZzxUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+KHBheWxvYWRb
QCJkaXJlY3Rpb25hbGl0eSJdKTsKKyAgICBPcHRpb25hbDxUZXN0UHJvdG9jb2xUZXN0UGFyYW1l
dGVyQnVuZGxlRGlyZWN0aW9uYWxpdHk+IGRpcmVjdGlvbmFsaXR5ID0gZnJvbVByb3RvY29sU3Ry
aW5nPFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJp
ZGdlIENGU3RyaW5nUmVmKXBheWxvYWRbQCJkaXJlY3Rpb25hbGl0eSJdKTsKICAgICBUSFJPV19F
WENFUFRJT05fRk9SX0JBRF9FTlVNX1ZBTFVFKGRpcmVjdGlvbmFsaXR5LCBAImRpcmVjdGlvbmFs
aXR5Iik7CiAgICAgc2VsZi5kaXJlY3Rpb25hbGl0eSA9IGRpcmVjdGlvbmFsaXR5LnZhbHVlKCk7
CiAKQEAgLTIzNTUsNyArMjM1NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0g
KFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSlkaXJlY3Rpb25h
bGl0eQogewotICAgIHJldHVybiBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVzdFBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5Pihbc3VwZXIgc3RyaW5nRm9yS2V5OkAiZGlyZWN0
aW9uYWxpdHkiXSkudmFsdWUoKTsKKyAgICByZXR1cm4gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQ
cm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eT4oKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKVtzdXBlciBzdHJpbmdGb3JLZXk6QCJkaXJlY3Rpb25hbGl0eSJdKS52YWx1ZSgpOwog
fQogCiAtICh2b2lkKXNldEJ1dHRvbnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWJ1dHRvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
cmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggZTFhOWFiNTVmNTJmNTg3
NTFlNGE0Njk5MjIwNTdhODE2MTY2YzU0ZC4uZTZjNTU0YWFlNzI1Nzg3YzFhNzhkYjg2MWQxMWEy
NzA3YTA3MmE2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTY3
NSw3ICs2NzUsNyBAQCBPcHRpb25hbDxQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzPiBw
YXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlRlcwogICAgICAgICBpZiAocHJvdG9j
b2xTdHJpbmcgPT0gZW51bV9jb25zdGFudF92YWx1ZXNbY29uc3RhbnRWYWx1ZXNbaV1dKQogICAg
ICAgICAgICAgcmV0dXJuIChQcm90b2NvbDo6VGVzdDo6VW5jYXN0ZWRBbmltYWxzKWNvbnN0YW50
VmFsdWVzW2ldOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+CkBAIC02OTEsNyArNjkxLDcgQEAgT3B0aW9uYWw8UHJv
dG9jb2w6OlRlc3Q6OkNhc3RlZEFuaW1hbHM+IHBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxQcm90
b2NvbDo6VGVzdDoKICAgICAgICAgaWYgKHByb3RvY29sU3RyaW5nID09IGVudW1fY29uc3RhbnRf
dmFsdWVzW2NvbnN0YW50VmFsdWVzW2ldXSkKICAgICAgICAgICAgIHJldHVybiAoUHJvdG9jb2w6
OlRlc3Q6OkNhc3RlZEFuaW1hbHMpY29uc3RhbnRWYWx1ZXNbaV07CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RIZWxwZXJzCkBAIC0xMjE3LDcgKzEyMTcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8VGVzdFBy
b3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscz4gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmlu
ZwogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0NhdHM7CiAg
ICAgaWYgKHZhbHVlID09ICJIZW5zIikKICAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHNIZW5zOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQ
cm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVlKQpAQCAtMTI0NSw3ICsxMjQ1LDcgQEAgaW5s
aW5lIE9wdGlvbmFsPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPiBmcm9tUHJvdG9jb2xT
dHJpbmcoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHNDcm93czsKICAgICBpZiAodmFsdWUgPT0gIkZsYW1pbmdvcyIpCiAgICAgICAgIHJl
dHVybiBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0ZsYW1pbmdvczsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICAgICBzZWxmLm51bWJlciA9IFtwYXlsb2FkW0AibnVtYmVyIl0gaW50ZWdlclZhbHVl
XTsKIAogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtA
ImFuaW1hbHMiXSwgQCJhbmltYWxzIik7Ci0gICAgT3B0aW9uYWw8VGVzdFByb3RvY29sVGVzdENh
c3RlZEFuaW1hbHM+IGFuaW1hbHMgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sVGVz
dENhc3RlZEFuaW1hbHM+KHBheWxvYWRbQCJhbmltYWxzIl0pOworICAgIE9wdGlvbmFsPFRlc3RQ
cm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPiBhbmltYWxzID0gZnJvbVByb3RvY29sU3RyaW5nPFRl
c3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGF5bG9h
ZFtAImFuaW1hbHMiXSk7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfRU5VTV9WQUxVRShh
bmltYWxzLCBAImFuaW1hbHMiKTsKICAgICBzZWxmLmFuaW1hbHMgPSBhbmltYWxzLnZhbHVlKCk7
CiAKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0g
KFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1hbHMKIHsKLSAgICByZXR1cm4gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihbc3VwZXIgc3Ry
aW5nRm9yS2V5OkAiYW5pbWFscyJdKS52YWx1ZSgpOworICAgIHJldHVybiBmcm9tUHJvdG9jb2xT
dHJpbmc8VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHM+KChfX2JyaWRnZSBDRlN0cmluZ1Jl
Zilbc3VwZXIgc3RyaW5nRm9yS2V5OkAiYW5pbWFscyJdKS52YWx1ZSgpOwogfQogCiAtICh2b2lk
KXNldElkZW50aWZpZXI6KGludClpZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDhmNjdkYTQ2YTgwNTA0YTJi
NDYxNWMwYzVmZWFmZGVmMTI0Y2U5YzYuLjJkNDkyODZjMTdiN2Q3ZDMwYWFjNGMzMWVjMWQxNTQy
N2FiZWE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCkBAIC0yNTQsMTYgKzI1NCwxNiBAQCBTdGFja1Zpc2l0b3I6OkZyYW1l
OjpDb2RlVHlwZSBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb2RlVHlwZSgpIGNvbnN0CiBPcHRpb25h
bDxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y2FsbGVlU2F2ZVJl
Z2lzdGVyc0ZvclVud2luZGluZygpCiB7CiAgICAgaWYgKCFOVU1CRVJfT0ZfQ0FMTEVFX1NBVkVT
X1JFR0lTVEVSUykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChpc0lubGluZWRGcmFtZSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChpc1dhc21GcmFtZSgpKSB7CiAgICAgICAgIGlmIChj
YWxsZWUoKS5pc0NlbGwoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNXZWJBc3Nl
bWJseU1vZHVsZShjYWxsZWUoKS5hc0NlbGwoKSkpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAg
ICAgICAgV2FzbTo6Q2FsbGVlKiB3YXNtQ2FsbGVlID0gY2FsbGVlKCkuYXNXYXNtQ2FsbGVlKCk7
CiAgICAgICAgIHJldHVybiAqd2FzbUNhbGxlZS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOwpAQCAt
Mjc4LDcgKzI3OCw3IEBAIE9wdGlvbmFsPFJlZ2lzdGVyQXRPZmZzZXRMaXN0PiBTdGFja1Zpc2l0
b3I6OkZyYW1lOjpjYWxsZWVTYXZlUmVnaXN0ZXJzRm9yVW53aW5kCiAgICAgaWYgKENvZGVCbG9j
ayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJldHVybiAqY29kZUJs
b2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEFTU0VNQkxFUikK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKaW5kZXggNjE5NDU1YjFmNmRiYWNhNGE3ZGRhYzdjYmY2ZDljOTJmYTE2Y2EyZC4uZWU1ZTM4
YTI4MzRlY2JhODQ1ZTYyOTFkYzc2NWM1MjA3YjJmMDc5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCkBAIC03ODksNyArNzg5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVpbnRwdHJfdCBlbmQgPSB0aGlzLT5lbmQoKTsKICAg
ICAgICAgICAgIGlmIChpc2xhbmRCZWdpbigpIDw9IGlzbGFuZCAmJiBpc2xhbmQgPCBlbmQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICgoZW5kIC0gaXNsYW5kKSAvIGlzbGFuZFNpemVJbkJ5dGVz
KSAtIDE7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZnJlZUlzbGFuZCh1
aW50cHRyX3QgaXNsYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAppbmRleCA2ZmE3
MjQ0ZWYwYTA4YzlmMDQ3YTMyMjA0ZjczN2QyOTI4NzE5MDZmLi44NTU3ZDBlZTVkOGFkOGIxNDQy
ZDgzMGU0ZDY3NzFmZjBjYThiMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaApA
QCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdmlydHVh
bCBSZWdpc3RlclNldCBsaXZlUmVnaXN0ZXJzVG9QcmVzZXJ2ZUF0RXhjZXB0aW9uSGFuZGxpbmdD
YWxsU2l0ZShDb2RlQmxvY2sqLCBDYWxsU2l0ZUluZGV4KTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PENvZGVPcmlnaW4+IGZpbmRQQyhDb2RlQmxvY2sqLCB2b2lkKiBwYykgeyBVTlVTRURfUEFSQU0o
cGMpOyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxDb2RlT3Jp
Z2luPiBmaW5kUEMoQ29kZUJsb2NrKiwgdm9pZCogcGMpIHsgVU5VU0VEX1BBUkFNKHBjKTsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogI2VuZGlmCiAKICAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkg
eyByZXR1cm4gbV9pbnRyaW5zaWM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUENUb0NvZGVPcmlnaW5NYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
Q1RvQ29kZU9yaWdpbk1hcC5jcHAKaW5kZXggMjY0NzE4ZDk3Yzc4NGJjMmZhNzc0MDMxYWZjZGIw
ODA5OWQxZTU5My4uMGIzN2E0MTk1OTdkMzM1NjMyNmZhNjQ1ZjllYzI3NjQyNTdlNTI1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9QQ1RvQ29kZU9yaWdpbk1hcC5jcHAKQEAg
LTI1MSw3ICsyNTEsNyBAQCBPcHRpb25hbDxDb2RlT3JpZ2luPiBQQ1RvQ29kZU9yaWdpbk1hcDo6
ZmluZFBDKHZvaWQqIHBjKSBjb25zdAogewogICAgIHVpbnRwdHJfdCBwY0FzSW50ID0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4ocGMpOwogICAgIGlmICghKG1fcGNSYW5nZVN0YXJ0IDw9IHBjQXNJ
bnQgJiYgcGNBc0ludCA8PSBtX3BjUmFuZ2VFbmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludHB0cl90IGN1cnJl
bnRQQyA9IDA7CiAgICAgQnl0ZWNvZGVJbmRleCBjdXJyZW50Qnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXgoMCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgT3B0aW9uYWw8Q29kZU9yaWdpbj4gUENU
b0NvZGVPcmlnaW5NYXA6OmZpbmRQQyh2b2lkKiBwYykgY29uc3QKICAgICB9CiAKICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGZmOGY1N2U0NmFmYzExNDVmNzZlNGM1OWM2
YjhjNGZiYzQ1OTBiMDguLjY3MzAzOTQyNjNmMzJmMWI1MzU0YzIwZDU0ZGUyNDMwNDcyOTliYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xNTM5LDcgKzE1Mzks
NyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlSGV4KCkgLT4gT3B0aW9uYWw8
TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgZG8gewogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdf
JykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpA
QCAtMTU2Niw3ICsxNTY2LDcgQEAgQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUhl
eCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIHdoaWxlIChpc0FTQ0lJSGV4
RGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
J18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlIZXhEaWdpdChwZWVrKDEp
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9
CkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNl
QmluYXJ5KCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgZG8gewogICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICdfJykgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FT
Q0lJQmluYXJ5RGlnaXQocGVlaygxKSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTYxNyw3ICsxNjE3LDcgQEAgQUxXQVlTX0lOTElO
RSBhdXRvIExleGVyPFQ+OjpwYXJzZUJpbmFyeSgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVz
dWx0PgogICAgIHdoaWxlIChpc0FTQ0lJQmluYXJ5RGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQp
KSB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIWlzQVNDSUlCaW5hcnlEaWdpdChwZWVrKDEpKSkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CkBAIC0xNjMwLDcgKzE2MzAsNyBAQCBB
TFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQmluYXJ5KCkgLT4gT3B0aW9uYWw8TnVt
YmVyUGFyc2VSZXN1bHQ+CiAgICAgICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IG1ha2VJ
ZGVudGlmaWVyKG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXplKCkpIH07CiAKICAgICBp
ZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gTnVtYmVyUGFyc2VS
ZXN1bHQgeyBwYXJzZUludE92ZXJmbG93KG1fYnVmZmVyOC5kYXRhKCksIG1fYnVmZmVyOC5zaXpl
KCksIDIpIH07CiB9CkBAIC0xNjUzLDcgKzE2NTMsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4
ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICBk
byB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWsoMSkpIHx8IGlzTGVnYWN5TGl0ZXJhbCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CkBAIC0x
NjczLDcgKzE2NzMsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwo
KSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3VsdD4KICAgICB3aGlsZSAoaXNBU0NJSU9jdGFs
RGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
J18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWso
MSkpIHx8IGlzTGVnYWN5TGl0ZXJhbCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAg
ICBzaGlmdCgpOwogICAgICAgICB9CkBAIC0xNjg2LDcgKzE2ODYsNyBAQCBBTFdBWVNfSU5MSU5F
IGF1dG8gTGV4ZXI8VD46OnBhcnNlT2N0YWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJzZVJlc3Vs
dD4KICAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgbWFrZUlkZW50aWZpZXIobV9i
dWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkgfTsKIAogICAgIGlmIChpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBOdW1iZXJQYXJzZVJlc3VsdCB7IHBhcnNl
SW50T3ZlcmZsb3cobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSwgOCkgfTsKIH0K
QEAgLTE3MTIsNyArMTcxMiw3IEBAIEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFyc2VE
ZWNpbWFsKCkgLT4gT3B0aW9uYWw8TnVtYmVyUGFyc2VSZXN1bHQ+CiAgICAgICAgIGRvIHsKICAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKCFpc0FTQ0lJRGlnaXQocGVlaygxKSkgfHwgaXNMZWdhY3lMaXRlcmFsKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAg
ICAgICB9CkBAIC0xNzMzLDcgKzE3MzMsNyBAQCBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46
OnBhcnNlRGVjaW1hbCgpIC0+IE9wdGlvbmFsPE51bWJlclBhcnNlUmVzdWx0PgogICAgIHdoaWxl
IChpc0FTQ0lJRGlnaXRPclNlcGFyYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJ18nKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlEaWdpdChw
ZWVrKDEpKSB8fCBpc0xlZ2FjeUxpdGVyYWwpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgfQpAQCAtMTc0NSw3ICsxNzQ1LDcgQEAgQUxXQVlTX0lO
TElORSBhdXRvIExleGVyPFQ+OjpwYXJzZURlY2ltYWwoKSAtPiBPcHRpb25hbDxOdW1iZXJQYXJz
ZVJlc3VsdD4KICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICduJyAmJiAhaXNMZWdhY3lM
aXRlcmFsKSkKICAgICAgICAgcmV0dXJuIE51bWJlclBhcnNlUmVzdWx0IHsgbWFrZUlkZW50aWZp
ZXIobV9idWZmZXI4LmRhdGEoKSwgbV9idWZmZXI4LnNpemUoKSkgfTsKIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAwOWFjN2My
NGRhNDVhNGU1NjRhMDY3MDU0MTAyZTg5OTVmODE3ODJhLi4zZjVkM2M5YTU2MzEzMDQyYTBmNzM3
NTU1ZjVjZjljMmJhZDdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTk5Miw3ICs5OTIsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxh
dGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBh
cnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFBhcnNpbmdDb250ZXh0LCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6
Om51bGxvcHQsIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3Qg
Rml4ZWRWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBQ
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0LCBjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50
KiA9IG51bGxwdHIsIGNvbnN0IEZpeGVkVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRy
KTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBt
X2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMjc2LDcgKzEyNzYsNyBAQCBwcml2
YXRlOgogICAgICAgICBpZiAobV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQog
ICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgU2NvcGVSZWYgcHJpdmF0ZU5hbWVTY29wZSgpCkBAIC0xNzQ5LDkgKzE3NDksOSBA
QCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBv
cnRlZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBw
YXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlw
ZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRl
ZmF1bHRDb250ZXh0OjpTdGFuZGFyZCk7CiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlY2xhcmF0
aW9uVHlwZSB7IERlY2xhcmF0aW9uLCBTdGF0ZW1lbnQgfTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25EZWNsYXJhdGlvblR5cGUgPSBGdW5jdGlvbkRlY2xhcmF0aW9uVHlw
ZTo6RGVjbGFyYXRpb24sIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVj
bGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5k
YXJkLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24gPSBXVEY6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBGdW5jdGlv
bkRlY2xhcmF0aW9uVHlwZSA9IEZ1bmN0aW9uRGVjbGFyYXRpb25UeXBlOjpEZWNsYXJhdGlvbiwg
RXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRlZmF1bHRD
b250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNl
RnVuY3Rpb25EZWNsYXJhdGlvblN0YXRlbWVudChUcmVlQnVpbGRlciYsIGJvb2wgcGFyZW50QWxs
b3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24o
VHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xh
cmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFy
ZCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9u
ID0gV1RGOjpudWxsb3B0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBv
cnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRl
eHQgPSBEZWNsYXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCwgT3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gc3RkOjpudWxsb3B0KTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VWYXJp
YWJsZURlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBl
ID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZURvV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VXaGls
ZVN0YXRlbWVudChUcmVlQnVpbGRlciYpOwpAQCAtMTgyMSw3ICsxODIxLDcgQEAgcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJl
c3Npb24gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRl
bnRpZmllciosIGJvb2wgaXNFdmFsLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpOwogCiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb25UeXBlIHsg
RXhwcmVzc2lvbiwgRGVjbGFyYXRpb24sIE1ldGhvZCB9OwotICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2Nv
cGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25U
eXBlLCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24gPSBXVEY6Om51bGxvcHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5h
bWVSZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlLCBPcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51bGxv
cHQpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElO
RSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKICAgICAKQEAg
LTIyNDEsNyArMjI0MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExl
dmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigp
LCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Is
IG5hbWUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDog
UGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgcGFyZW50U2NvcGVQcml2YXRl
TmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBh
cnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIHN0ZDo6bnVsbG9w
dCwgcGFyZW50U2NvcGVQcml2YXRlTmFtZXMsIGNsYXNzRmllbGRMb2NhdGlvbnMpOwogICAgICAg
ICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAg
ICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsK
QEAgLTIyNTQsNyArMjI1NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1
aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNl
IGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9u
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRl
eHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAg
ICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBpc0V2
YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250
ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHBhcmVudFNjb3BlUHJpdmF0ZU5hbWVzLCBjbGFz
c0ZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuYW1lLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4
dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBzdGQ6Om51bGxvcHQsIHBhcmVudFNj
b3BlUHJpdmF0ZU5hbWVzLCBjbGFzc0ZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAppbmRleCA2NDIzMjcwZDhh
ZTA5MWE3MzAxY2E4Yzg1MzU5MGI4YTM3YmNhNDY5Li40YjNiM2JlMzAzZWJlYWRjODY0MDA5N2M3
Zjg4NTdlMTdhNGVkYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZUNvZGVLZXkuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICA6IG1fc291
cmNlQ29kZShzb3VyY2VDb2RlKQogICAgICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAg
ICAgICwgbV9mbGFncyhjb2RlVHlwZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZGVyaXZlZENv
bnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGNvZGVH
ZW5lcmF0aW9uTW9kZSkKLSAgICAgICAgICAgICwgbV9mdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uKGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24u
dmFsdWVPcigtMSkpCisgICAgICAgICAgICAsIG1fZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbihmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLnZh
bHVlX29yKC0xKSkKICAgICAgICAgICAgICwgbV9oYXNoKHNvdXJjZUNvZGUuaGFzaCgpIF4gbV9m
bGFncy5iaXRzKCkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCA1ZTc2MjMyOWQ1ZGI2
YWRkMDFiNjZmNWRhM2E2NGYxMGZmMGE4ZDExLi43YmY1YzNlMDFiY2MwMDE2NmY3MDQxNWY4MzNj
ZDE3MmRmNWQ1NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgYXV0byBBYnN0
cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0SW1wb3J0RW50cnkoVW5pcXVlZFN0cmluZ0ltcGwqIGxv
Y2FsTmFtZSkgLT4gT3AKIHsKICAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9pbXBvcnRFbnRy
aWVzLmZpbmQobG9jYWxOYW1lKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9pbXBvcnRFbnRyaWVz
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBPcHRpb25hbDxJbXBvcnRFbnRyeT4oaXRlcmF0b3ItPnZh
bHVlKTsKIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIGF1dG8gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
OnRyeUdldEV4cG9ydEVudHJ5KFVuaXF1ZWRTdHJpbmdJbXBsKiBleHBvcnROYW1lKSAtPiBPCiB7
CiAgICAgY29uc3QgYXV0byBpdGVyYXRvciA9IG1fZXhwb3J0RW50cmllcy5maW5kKGV4cG9ydE5h
bWUpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2V4cG9ydEVudHJpZXMuZW5kKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIE9wdGlvbmFsPEV4cG9ydEVudHJ5PihpdGVyYXRvci0+dmFsdWUpOwogfQogCkBAIC0y
NDcsNyArMjQ3LDcgQEAgYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6dHJ5R2V0Q2FjaGVkUmVz
b2x1dGlvbihVbmlxdWVkU3RyaW5nSW1wbCogZXhwb3J0TmFtZSkKIHsKICAgICBjb25zdCBhdXRv
IGl0ZXJhdG9yID0gbV9yZXNvbHV0aW9uQ2FjaGUuZmluZChleHBvcnROYW1lKTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9yZXNvbHV0aW9uQ2FjaGUuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIE9wdGlv
bmFsPFJlc29sdXRpb24+KGl0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA1ZDVjMGE4YzZiNjE1Njg5ODhm
YjNiNGIzYjFmNmJmMDBmMzZkMjU2Li5jYjFmOWZmMDdhM2YyNzZiNDQ5YmM4M2E5ODAwZTJhN2Ez
YThjMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBpdCA9
IG1fcHRyVG9PZmZzZXRNYXAuZmluZChwdHIpOwogICAgICAgICBpZiAoaXQgPT0gbV9wdHJUb09m
ZnNldE1hcC5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyBpdC0+dmFsdWUgfTsK
ICAgICB9CiAKQEAgLTMxNCwxMSArMzE0LDExIEBAIHZvaWQgRGVjb2Rlcjo6Y2FjaGVPZmZzZXQo
cHRyZGlmZl90IG9mZnNldCwgdm9pZCogcHRyKQogICAgIG1fb2Zmc2V0VG9QdHJNYXAuYWRkKG9m
ZnNldCwgcHRyKTsKIH0KIAotV1RGOjpPcHRpb25hbDx2b2lkKj4gRGVjb2Rlcjo6Y2FjaGVkUHRy
Rm9yT2Zmc2V0KHB0cmRpZmZfdCBvZmZzZXQpCitzdGQ6Om9wdGlvbmFsPHZvaWQqPiBEZWNvZGVy
OjpjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90IG9mZnNldCkKIHsKICAgICBhdXRvIGl0ID0g
bV9vZmZzZXRUb1B0ck1hcC5maW5kKG9mZnNldCk7CiAgICAgaWYgKGl0ID09IG1fb2Zmc2V0VG9Q
dHJNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgaXQtPnZhbHVlIH07CiB9CiAKQEAgLTgzNiw3
ICs4MzYsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8U291cmNlVHlwZTxUPj4gZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAodGhpcy0+aXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHsgdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+
KCktPmRlY29kZShkZWNvZGVyKSB9OwogICAgIH0KQEAgLTg0OSw3ICs4NDksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PFNvdXJjZVR5cGU8VD4+JiBzb3VyY2UpCiAgICAgewogICAgICAgICBpZiAoIXNvdXJjZSkKLSAg
ICAgICAgICAgIGVuY29kZShlbmNvZGVyLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgZW5j
b2RlKGVuY29kZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVu
Y29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmgKaW5kZXggNmI5NmI1Mjk0ZDY0M2U3MzI0MjBlYjA3OGVj
ZDgzNDBkOTcxMTY2Yi4uNTk0NTg3MzMwMmNjMjI1NDkxYjNlYWM4ZWVjOTYzNDExNDVhMGNmZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5oCkBAIC04OCw3
ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHB0cmRpZmZfdCBvZmZzZXRPZihjb25zdCB2b2lkKik7
CiAgICAgdm9pZCBjYWNoZU9mZnNldChwdHJkaWZmX3QsIHZvaWQqKTsKLSAgICBXVEY6Ok9wdGlv
bmFsPHZvaWQqPiBjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90KTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHZvaWQqPiBjYWNoZWRQdHJGb3JPZmZzZXQocHRyZGlmZl90KTsKICAgICBjb25zdCB2b2lk
KiBwdHJGb3JPZmZzZXRGcm9tQmFzZShwdHJkaWZmX3QpOwogICAgIENvbXBhY3RURFpFbnZpcm9u
bWVudE1hcDo6SGFuZGxlIGhhbmRsZUZvclREWkVudmlyb25tZW50KENvbXBhY3RURFpFbnZpcm9u
bWVudCopIGNvbnN0OwogICAgIHZvaWQgc2V0SGFuZGxlRm9yVERaRW52aXJvbm1lbnQoQ29tcGFj
dFREWkVudmlyb25tZW50KiwgY29uc3QgQ29tcGFjdFREWkVudmlyb25tZW50TWFwOjpIYW5kbGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDI2
ZTUyMmZkNWE2MmZkMzkyZjkzMjk1YTY2MTM4MjQwYzc0MGJkOTkuLjE0OTRjN2U4Y2ZjZmM4N2E3
NTAxYTQ5Yzg2YjcyZTFmMzMyN2ZhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlw
ZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFi
bGVUCiAgICAgU291cmNlQ29kZUtleSBrZXkoCiAgICAgICAgIHNvdXJjZSwgU3RyaW5nKCksIENh
Y2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Y29kZVR5cGUsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIAogICAgICAgICBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgY29kZUdlbmVyYXRpb25Nb2RlLAotICAgICAgICBXVEY6
Om51bGxvcHQpOworICAgICAgICBzdGQ6Om51bGxvcHQpOwogICAgIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBtX3NvdXJjZUNvZGUuZmluZENhY2hlQW5kVXBkYXRl
QWdlPFVubGlua2VkQ29kZUJsb2NrVHlwZT4odm0sIGtleSk7CiAgICAgaWYgKHVubGlua2VkQ29k
ZUJsb2NrICYmIE9wdGlvbnM6OnVzZUNvZGVDYWNoZSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGxp
bmVDb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5saW5lQ291bnQoKTsKQEAgLTI1MCw3ICsyNTAs
NyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEds
b2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1
Y3RvciBvbmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVz
IHdpbGwgYmUgdW5kZXIgVERaIHVubGVzcyB0aGV5J3JlCiAgICAgLy8gaW4gdGhlIGdsb2JhbCBs
ZXhpY2FsIGVudmlyb25tZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZy
b20uCiAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0QWJp
bGl0eUZvclBhcnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y3JlYXRlKHZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0
aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBOZWVkc0NsYXNzRmll
bGRJbml0aWFsaXplcjo6Tm8sIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lKTsKKyAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWRO
b3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFz
c2ljLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgTmVl
ZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9u
ZSk7CiAKICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5p
c051bGwoKSkKICAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3Rp
dmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKQEAgLTI4Nyw3ICsy
ODcsNyBAQCBzdGF0aWMgU291cmNlQ29kZUtleSBzb3VyY2VDb2RlS2V5Rm9yU2VyaWFsaXplZEJ5
dGVjb2RlKFZNJiwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIHJldHVybiBTb3VyY2VDb2RlS2V5
KAogICAgICAgICBzb3VyY2VDb2RlLCBTdHJpbmcoKSwgY29kZVR5cGUsIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsCiAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRU
eXBlOjpOb25lLCBmYWxzZSwgY29kZUdlbmVyYXRpb25Nb2RlLAotICAgICAgICBXVEY6Om51bGxv
cHQpOworICAgICAgICBzdGQ6Om51bGxvcHQpOwogfQogCiBTb3VyY2VDb2RlS2V5IHNvdXJjZUNv
ZGVLZXlGb3JTZXJpYWxpemVkUHJvZ3JhbShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJy
ZW50SlNMb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW50SlNM
b2NrLmgKaW5kZXggODYzMTE3ZDg5MTVjNDNlNGE2NzcyMDgyYjliYzU1YjM5YTJkMWNhMS4uMjJm
NDY2MTdkYjc0NjdmNzdiMDJkZGQzMzAxMTk3ZjQxMTFiMjgwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uY3VycmVudEpTTG9jay5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbnRKU0xvY2suaApAQCAtMTE1LDcgKzExNSw3
IEBAIHB1YmxpYzoKICAgICBDb25jdXJyZW50SlNMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5VGFn
KQogICAgICAgICA6IENvbmN1cnJlbnRKU0xvY2tlckJhc2UoTm9Mb2NraW5nTmVjZXNzYXJ5KQog
I2lmICFkZWZpbmVkKE5ERUJVRykKLSAgICAgICAgLCBtX2Rpc2FsbG93R0MoV1RGOjpudWxsb3B0
KQorICAgICAgICAsIG1fZGlzYWxsb3dHQyhzdGQ6Om51bGxvcHQpCiAjZW5kaWYKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCBjMGJjNzNlMDdhMTU0NzA3ODJlODJkODcwMDgzNjg3
YmIwYzIzNWEyLi5mM2I4ZTkxNDE5NDIyZjIwN2M0ZjYxMTg1OWE0YWVkNDU2NmM3NTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxi
b29sPiB3cml0YWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc1dyaXRhYmxlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0
KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgT3B0aW9uYWw8Ym9vbD4gY29uZmlndXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IGlmICghaGFzQ29uZmlndXJhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgfQog
CkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGJvb2w+IGVudW1lcmFi
bGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNFbnVtZXJhYmxlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRy
aVN0YXRlOjpUcnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCBkODNjNTEwMDYzNTIzMzNmY2M5MGE3NDAy
M2VjZGVhMzZlM2Y3MzJkLi4xOWRiNmNjZGZkYWQ3MDAyZjMwYzViNjBmMzhjYmMzMmRiNTQ0NDE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVj
dG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCB2b2lkIEVycm9yQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgRXJyb3JQcm90b3R5cGUqIGVycm9yUHJvdG90eXBlKQogICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAxLCB2bS5wcm9wZXJ0eU5hbWVzLT5FcnJvci5zdHJpbmcoKSwg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICAv
LyBFQ01BIDE1LjExLjMuMSBFcnJvci5wcm90b3R5cGUKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBlcnJvclByb3RvdHlwZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVy
KGdsb2JhbE9iamVjdCgpLT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZU9yKE9wdGlvbnM6OmRlZmF1
bHRFcnJvclN0YWNrVHJhY2VMaW1pdCgpKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6Tm9uZSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zdGFja1RyYWNlTGltaXQsIGpzTnVtYmVyKGdsb2JhbE9iamVjdCgp
LT5zdGFja1RyYWNlTGltaXQoKS52YWx1ZV9vcihPcHRpb25zOjpkZWZhdWx0RXJyb3JTdGFja1Ry
YWNlTGltaXQoKSkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6Ok5v
bmUpKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBFcnJvckNv
bnN0cnVjdG9yOjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZXJ0eU4KICAgICAgICAgICAgIGVmZmVjdGl2ZUxpbWl0ID0gc3RkOjptaW4oZWZmZWN0
aXZlTGltaXQsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSk7CiAgICAgICAgICAgICB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+c2V0
U3RhY2tUcmFjZUxpbWl0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihlZmZlY3RpdmVMaW1pdCkpOwog
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5z
ZXRTdGFja1RyYWNlTGltaXQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5zZXRTdGFja1RyYWNlTGltaXQoc3RkOjpudWxsb3B0KTsKICAgICB9
CiAKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CkBAIC05NCw3ICs5NCw3IEBAIGJvb2wgRXJyb3JDb25zdHJ1
Y3Rvcjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0CiAgICAgRXJyb3JDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IGpzQ2FzdDxFcnJvckNv
bnN0cnVjdG9yKj4oY2VsbCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5
TmFtZXMtPnN0YWNrVHJhY2VMaW1pdCkKLSAgICAgICAgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPnNldFN0YWNrVHJhY2VMaW1pdChXVEY6Om51bGxvcHQpOworICAgICAgICB0aGlzT2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+c2V0U3RhY2tUcmFjZUxpbWl0KHN0ZDo6bnVsbG9wdCk7CiAKICAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCAxN2JjMjQ2MTQ5NTE5YzBlMzA1
YWM4MmVkOTQzNmYyYzFjNDU2NzAwLi5kMjNkZmY5OWJlYTk5MGQxMDUwYzhhZWUxMTFiZmRkN2Zh
ODIzZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICAvLyBIb3cgd2Ugc3RyaW5n
aWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0
eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0
MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwotICAgIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0
cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufSIpOwogICAgIGVs
c2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmFkY2I3ODUwZmI2ZjkzNjU1NmNl
NDljMjYxNjAyYzU5NTlkNGZkYS4uYWU4MjQ2NGU5NjJiYzM1MTNjMGE4OTIyNDQzYzQxZWNmOWE5
MTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBp
ZiAob3ZlcnJpZGVMaW5lTnVtYmVyID09IC0xKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
bV9yYXJlRGF0YSkpCi0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vdmVycmlkZUxpbmVO
dW1iZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vdmVy
cmlkZUxpbmVOdW1iZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5tX292ZXJyaWRlTGluZU51bWJlciA9IG92
ZXJyaWRlTGluZU51bWJlcjsKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBpZiAoVU5MSUtFTFkobV9yYXJlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9vdmVycmlkZUxpbmVOdW1iZXI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaW50IGxpbmVDb3Vu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6
ZXJQcmVkaWN0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdXp6ZXJQ
cmVkaWN0aW9ucy5jcHAKaW5kZXggNWFiNWQ5YThhNjUxN2Y3NzQ1ZjVmM2QyMzkxNTg2NDk4ODcz
MzlmYi4uM2MwNDg5Zjg4NjdkYzFmODc2OWQ5NzAxN2UxNjFmZDE5ZGY5NjMxOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnV6emVyUHJlZGljdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1enplclByZWRpY3Rpb25zLmNwcApA
QCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxTcGVjdWxhdGVkVHlwZT4gRnV6emVyUHJlZGljdGlv
bnM6OnByZWRpY3Rpb25Gb3IoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byBpdCA9IG1f
cHJlZGljdGlvbnMuZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBtX3ByZWRpY3Rpb25zLmVuZCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBpdC0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaAppbmRleCBiNzM0ZGZkMmVhNzMx
M2FmNDQ4YmU5ZTY4MTNmM2NkMDQ0NmRkMmJmLi43MjBlNjhlOGI2YWIzZmZlNGMwYTIwNWU5Zjgy
ZWQxZTc3NDU1MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
YXNPd25Qcm9wZXJ0eUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzT3duUHJvcGVydHlDYWNoZS5oCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
RW50cnkmIGVudHJ5ID0gYml0d2lzZV9jYXN0PEVudHJ5Kj4odGhpcylbaW5kZXhdOwogICAgICAg
ICBpZiAoZW50cnkuc3RydWN0dXJlSUQgPT0gaWQgJiYgZW50cnkuaW1wbC5nZXQoKSA9PSBpbXBs
KQogICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlc3VsdDsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgdHJ5QWRkKFZNJiB2bSwgUHJvcGVydHlTbG90JiBzbG90LCBKU09iamVj
dCogb2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcE5hbWUsIGJvb2wgcmVzdWx0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGxJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAppbmRleCBh
MzYzYjVkMDZiNWE0ZTJkYmEwOWY4ZmY5ZjlmOGNhOGYzMTdmYWVkLi5mMTFmMGE1YjRjNmE5NWZi
ODQ4OWU3NTUwZTAyYjY2MWMxMWI4OGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IYXNoTWFwSW1wbElubGluZXMuaApAQCAtMTIzLDEwICsxMjMsMTAgQEAgQUxX
QVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gY29uY3VycmVudEpTTWFwSGFzaChKU1ZhbHVl
IGtleSkKICAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKICAgICAgICAgSlNTdHJpbmcqIHN0cmlu
ZyA9IGFzU3RyaW5nKGtleSk7CiAgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gMTAgKiAx
MDI0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmct
PnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICBpZiAoIWltcGwpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIGltcGwtPmNvbmN1cnJlbnRIYXNoKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggYWU2ZGJiMGY4ZjU5MjM1MGE0Y2Yy
ZTQxMGRmMGJkMmRhYmM3OGEwOS4uMTcxNGI4YWRkNWRiOWRlNjVlNWMxNjM5OTkwNGJjMzMxZGUz
NmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAt
NDIsMzggKzQyLDM4IEBAIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IHBhcnNlSW5k
ZXgoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkCiB7CiAgICAgLy8gQW4gZW1w
dHkgc3RyaW5nIGlzIG5vdCBhIG51bWJlci4KICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IEdldCB0aGUgZmlyc3QgY2hhcmFjdGVyLCB0dXJuaW5nIGl0IGludG8gYSBkaWdpdC4KICAgICB1
aW50MzJfdCB2YWx1ZSA9IGNoYXJhY3RlcnNbMF0gLSAnMCc7CiAgICAgaWYgKHZhbHVlID4gOSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIENoZWNrIGZvciBsZWFkaW5nIHplcm9zLiBJZiB0aGUgZmlyc3QgY2hhcmFj
aGVyIGlzIDAsIHRoZW4gdGhlCiAgICAgLy8gbGVuZ3RoIG9mIHRoZSBzdHJpbmcgbXVzdCBiZSBv
bmUgLSBlLmcuICIwNDIiIGlzIG5vdCBlcXVhbCB0byAiNDIiLgogICAgIGlmICghdmFsdWUgJiYg
bGVuZ3RoID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHdoaWxlICgtLWxlbmd0aCkgewogICAgICAgICAvLyBNdWx0
aXBseSB2YWx1ZSBieSAxMCwgY2hlY2tpbmcgZm9yIG92ZXJmbG93IG91dCBvZiAzMiBiaXRzLgog
ICAgICAgICBpZiAodmFsdWUgPiAweEZGRkZGRkZGVSAvIDEwKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHZhbHVlICo9IDEwOwogCiAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIsIHR1cm5p
bmcgaXQgaW50byBhIGRpZ2l0LgogICAgICAgICB1aW50MzJfdCBuZXdWYWx1ZSA9ICooKytjaGFy
YWN0ZXJzKSAtICcwJzsKICAgICAgICAgaWYgKG5ld1ZhbHVlID4gOSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIC8vIEFkZCBpbiB0aGUgb2xkIHZhbHVlLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cgb3V0
IG9mIDMyIGJpdHMuCiAgICAgICAgIG5ld1ZhbHVlICs9IHZhbHVlOwogICAgICAgICBpZiAobmV3
VmFsdWUgPCB2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlOwogICAg
IH0KIAogICAgIGlmICghaXNJbmRleCh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CkBAIC0yNzYsOSArMjc2LDkgQEAgQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gcGFy
c2VJbmRleChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gdWlkID0g
aWRlbnRpZmllci5pbXBsKCk7CiAgICAgaWYgKCF1aWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHVpZC0+aXNTeW1i
b2woKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJbmRleCgqdWlkKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAppbmRleCBkNzlj
MzQxNzhhMmJiZWRhODk3MjcyY2ExODhhYjc3NTg4MGRmN2NkLi40ZmRkYWYxNWYzZmY3MDRlZDBl
N2MwMTAyMjM4NTAwNDM5Yjg4NGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEludGxE
aXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgIG1fc3R5bGUgPSBpbnRsT3B0aW9uPFN0eWxlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCB7IHsgIm5hcnJvdyJfcywgU3R5
bGU6Ok5hcnJvdyB9LCB7ICJzaG9ydCJfcywgU3R5bGU6OlNob3J0IH0sIHsgImxvbmciX3MsIFN0
eWxlOjpMb25nIH0gfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwibmFycm93XCIsIFwic2hvcnRc
Iiwgb3IgXCJsb25nXCIiX3MsIFN0eWxlOjpMb25nKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogCi0gICAgYXV0byB0eXBlID0gaW50bE9wdGlvbjxPcHRpb25hbDxU
eXBlPj4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB7IHsg
Imxhbmd1YWdlIl9zLCBUeXBlOjpMYW5ndWFnZSB9LCB7ICJyZWdpb24iX3MsIFR5cGU6OlJlZ2lv
biB9LCB7ICJzY3JpcHQiX3MsIFR5cGU6OlNjcmlwdCB9LCB7ICJjdXJyZW5jeSJfcywgVHlwZTo6
Q3VycmVuY3kgfSB9LCAidHlwZSBtdXN0IGJlIGVpdGhlciBcImxhbmd1YWdlXCIsIFwicmVnaW9u
XCIsIFwic2NyaXB0XCIsIG9yIFwiY3VycmVuY3lcIiJfcywgV1RGOjpudWxsb3B0KTsKKyAgICBh
dXRvIHR5cGUgPSBpbnRsT3B0aW9uPE9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1
YWdlIH0sIHsgInJlZ2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6
U2NyaXB0IH0sIHsgImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9IH0sICJ0eXBlIG11c3Qg
YmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwgb3IgXCJjdXJy
ZW5jeVwiIl9zLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgaWYgKCF0eXBlKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4
IGFmZTQ2MDY2MDNlNDRkNzBlODMwNGE5NTlmNjhhNzJiMGM5MGQ2M2UuLjVlMjRjOTQ1MzBhMmQ3
YTVhYzg5ODE1MDM0ZmEwYzQ5NTczNTU1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPE1lYXN1cmVVbml0PiBzYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIo
U3RyaW5nVmlldyB1bml0SWRlbnQKICAgICAgICAgfSk7CiAgICAgaWYgKGl0ZXJhdG9yICE9IHN0
ZDo6ZW5kKHNpbXBsZVVuaXRzKSAmJiBpdGVyYXRvci0+c3ViVHlwZSA9PSB1bml0SWRlbnRpZmll
cikKICAgICAgICAgcmV0dXJuICppdGVyYXRvcjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0cnVjdCBXZWxsRm9ybWVkVW5pdCB7CkBA
IC0yNDYsMjEgKzI0NiwyMSBAQCBzdGF0aWMgT3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxG
b3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGVudGlmaQogICAgIGF1dG8gcGVy
ID0gU3RyaW5nVmlldygiLXBlci0iX3MpOwogICAgIGF1dG8gcG9zaXRpb24gPSB1bml0SWRlbnRp
Zmllci5maW5kKHBlcik7CiAgICAgaWYgKHBvc2l0aW9uID09IFdURjo6bm90Rm91bmQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKHVuaXRJZGVudGlmaWVyLmZpbmQocGVyLCBwb3NpdGlvbiArIHBlci5sZW5ndGgoKSkg
IT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlv
bmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4g
ZmFsc2UuCiAgICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJpbmcoMCwg
cG9zaXRpb24pOwogICAgIGF1dG8gbnVtZXJhdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0
SWRlbnRpZmllcihudW1lcmF0b3IpOwogICAgIGlmICghbnVtZXJhdG9yVW5pdCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIoZGVu
b21pbmF0b3IpIGlzIGZhbHNlLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICBhdXRvIGRlbm9taW5h
dG9yID0gdW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgcGVyLmxlbmd0aCgpKTsK
ICAgICBhdXRvIGRlbm9taW5hdG9yVW5pdCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmll
cihkZW5vbWluYXRvcik7CiAgICAgaWYgKCFkZW5vbWluYXRvclVuaXQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1ZSgpLCBkZW5vbWluYXRvclVuaXQu
dmFsdWUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCmluZGV4IGM2N2Q1NDJmMmI5ZDE4MzZlZjNhYjVjY2IzZTc4YjJiMzQxYTUwOWMuLjdjZjlj
ODY3MDZiZjY1NTQzZjhkZTlhMzE0OTNmZWVjMTAyOGMxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNDQ4LDEyICsxNDQ4LDEyIEBAIE9w
dGlvbmFsPFZlY3RvcjxjaGFyLCAzMj4+IGNhbm9uaWNhbGl6ZUxvY2FsZUlEV2l0aG91dE51bGxU
ZXJtaW5hdG9yKGNvbnN0IGNoYXIqCiAgICAgLy8gaHR0cHM6Ly91bmljb2RlLW9yZy5hdGxhc3Np
YW4ubmV0L2Jyb3dzZS9JQ1UtMjE1MDYKICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1YWxvY19jYW5vbmljYWxGb3JtLCBsb2NhbGVJRCwgYnVmZmVyKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKICNlbHNlCiAg
ICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19jYW5vbmlj
YWxpemUsIGxvY2FsZUlELCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gYnVmZmVyOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGI4OWNh
ZTg2NjJhMTA2NjkxNmFkZGM3YzNiMWRhNTYzN2YzNWM4YzcuLjYyYzQ4OGYwNTQzN2FmMjMwM2Vi
ZGQ0ZGZhNDhlNjE0YzNiODdkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0yMjgsNyArMjI4LDcg
QEAgc3RhdGljIE9wdGlvbmFsPFVSZWxhdGl2ZURhdGVUaW1lVW5pdD4gcmVsYXRpdmVUaW1lVW5p
dFR5cGUoU3RyaW5nVmlldyB1bml0KQogICAgIGlmIChzaW5ndWxhciA9PSAieWVhciIpCiAgICAg
ICAgIHJldHVybiBVREFUX1JFTF9VTklUX1lFQVI7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmluZyBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3Vi
bGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRyaW5zaWMuY3BwCmluZGV4IDE0NGJhM2NjNmE2N2ZkYjYwYmM0ODAxZGUzYmE3
YmIyZmQwNjY0MjkuLmQ0YWI0OWFhMWM0NWVmNjQ0MjEwMzU0MzU2YjE5OTBmZDRlODIwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMzU3LDcg
KzM1Nyw3IEBAIE9wdGlvbmFsPEl0ZXJhdGlvbktpbmQ+IGludGVyYXRpb25LaW5kRm9ySW50cmlu
c2ljKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgY2FzZSBUeXBlZEFycmF5RW50cmllc0ludHJp
bnNpYzoKICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM7CiAgICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKaW5kZXggNTFjYWJhZmIyZDA5OGQ3OThh
NmJjNWIwZTNmNzA1ZTdmMTFhMWUwYi4uNzdjOTJlY2Y4YTVlZDU3YTI4MDFhMjAxZDM1ODZjYmVk
M2YyNTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKQEAgLTQ1LDMxICs0NSwzMSBAQCBPcHRpb25hbDxK
U1ZhbHVlPiBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgIGJvb2wgaXNWYWxpZCA9IHNwZWNpZXNXYXRjaHBvaW50SXNWYWxp
ZCh2bSwgdGhpc09iamVjdCwgbW9kZSk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsK
ICAgICBpZiAoTElLRUxZKGlzVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9
IHRoaXNPYmplY3QtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVj
dG9yKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBXVEY6Om51bGxvcHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKGNvbnN0
cnVjdG9yLmlzQ29uc3RydWN0b3Iodm0pKSB7CiAgICAgICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ck9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNvbnN0cnVjdG9yKTsKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdEZyb21Db25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yT2JqZWN0
LT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICBib29sIGlzQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ckZyb21Bbm90aGVyUmVhbG0gPSBnbG9iYWxPYmplY3QgIT0gZ2xvYmFsT2JqZWN0RnJvbUNvbnN0
cnVjdG9yCiAgICAgICAgICAgICAmJiBjb25zdHJ1Y3Rvck9iamVjdCA9PSBnbG9iYWxPYmplY3RG
cm9tQ29uc3RydWN0b3ItPmFycmF5QnVmZmVyQ29uc3RydWN0b3IobW9kZSk7CiAgICAgICAgIGlm
IChpc0FycmF5QnVmZmVyQ29uc3RydWN0b3JGcm9tQW5vdGhlclJlYWxtKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgaWYgKGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCJf
cyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBzcGVjaWVzID0gY29uc3RydWN0b3IuZ2V0KGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCk7Ci0gICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgV1RGOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBzdGQ6Om51bGxvcHQpOwogCi0gICAgcmV0dXJuIHNwZWNpZXMuaXNVbmRlZmlu
ZWRPck51bGwoKSA/IFdURjo6bnVsbG9wdCA6IG1ha2VPcHRpb25hbChzcGVjaWVzKTsKKyAgICBy
ZXR1cm4gc3BlY2llcy5pc1VuZGVmaW5lZE9yTnVsbCgpID8gc3RkOjpudWxsb3B0IDogc3RkOjpt
YWtlX29wdGlvbmFsKHNwZWNpZXMpOwogfQogCiBlbnVtIGNsYXNzIFNwZWNpZXNDb25zdHJ1Y3RS
ZXN1bHQgOiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oCmluZGV4IGEwMjljNzM3
ZWNlNjYwMTA3ZTFlMDk1M2ViNWQzM2UwMWI2ZjRiZWMuLjViYTgzZWFhODUyMDJiN2FkOGU1ODNh
ZDE4M2RjMGJjZTNiMTZlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaApAQCAtNTgsNyAr
NTgsNyBAQCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPEpTVmFsdWU+IGFycmF5QnVmZmVyU3BlY2ll
c0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIGJvb2wgaXNWYWxpZCA9IHNwZWNp
ZXNXYXRjaHBvaW50SXNWYWxpZCh2bSwgdGhpc09iamVjdCwgbW9kZSk7CiAgICAgc2NvcGUuYXNz
ZXJ0Tm9FeGNlcHRpb24oKTsKICAgICBpZiAoTElLRUxZKGlzVmFsaWQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhcnJheUJ1ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3co
Z2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LCBtb2RlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5kZXggNGM0MmM4NjdlMDNjNWI2ZmI4NmU1ZGIzNTA5
MTY3N2FkYzdlNGE1OS4uMDBhYmI5OTI1ZjcxNjMyNGU0ODJlMTc2YThmNGM3OWZkZmVjMGE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtMjcxMSwx
MyArMjcxMSwxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KIE9wdGlvbmFsPEpT
QmlnSW50OjpEaWdpdD4gSlNCaWdJbnQ6OnRvU2hpZnRBbW91bnQoQmlnSW50SW1wbCB4KQogewog
ICAgIGlmICh4Lmxlbmd0aCgpID4gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBEaWdpdCB2YWx1ZSA9IHguZGln
aXQoMCk7CiAgICAgc3RhdGljX2Fzc2VydChtYXhMZW5ndGhCaXRzIDwgc3RkOjpudW1lcmljX2xp
bWl0czxEaWdpdD46Om1heCgpLCAibWF4TGVuZ3RoQml0cyBuZWVkcyB0byBiZSBsZXNzIHRoYW4g
ZGlnaXQiKTsKICAgICAKICAgICBpZiAodmFsdWUgPiBtYXhMZW5ndGhCaXRzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHZhbHVlOwogfQpAQCAtMzA3OCw3ICszMDc4LDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+
IEpTQmlnSW50Ojpjb25jdXJyZW50SGFzaCgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBK
U0JpZ0ludDo6Y29uY3VycmVudEhhc2ggYnkgaW5zZXJ0aW5nIHJpZ2h0IHN0b3JlIGJhcnJpZXJz
LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY4MDEK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IHVuc2lnbmVkIEpTQmlnSW50OjpoYXNoU2xvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGM3NTk0YTg0OTJjZTY3NGMyNDRmMWFlMmEzYWMx
NDcxNTU4MzEyNTQuLmE5NzRkOTVjN2M3MmI0MDRmYzdhMzZiZjBjZjFlZTY2YTRmODlhOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC03OCw3
ICs3OCw3IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJlclNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpIGNvbnN0CiBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVy
RnJvbVByaW1pdGl2ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
aXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGFzTnVtYmVyKCk7CiAgICAgaWYgKGlzQm9vbGVh
bigpKQpAQCAtODcsNyArODcsNyBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVy
RnJvbVByaW1pdGl2ZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBQTmFOOwogICAgIGlmIChpc051
bGwoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2Vj
LXRvYmlnaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZUlubGluZXMuaAppbmRleCBhOGRlNDkzYzBiMGFhMjJiNjRlNDdhYzk0ZGUxMTk4YmRlMWUzOWIw
Li44ODM0ZGQ4NzA5NWJjMmRiYzdkNDQyMDU3ZGI1MGNkMTdlMWEzMDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTExOSw3
ICsxMTksNyBAQCBpbmxpbmUgT3B0aW9uYWw8dWludDMyX3Q+IEpTVmFsdWU6OnRyeUdldEFzVWlu
dDMySW5kZXgoKQogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihhc1VpbnQpID09IG51
bWJlciAmJiBpc0luZGV4KGFzVWludCkpCiAgICAgICAgICAgICByZXR1cm4gYXNVaW50OwogICAg
IH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIGlubGluZSBPcHRpb25hbDxpbnQzMl90PiBKU1ZhbHVlOjp0cnlHZXRBc0ludDMyKCkKQEAg
LTEzMiw3ICsxMzIsNyBAQCBpbmxpbmUgT3B0aW9uYWw8aW50MzJfdD4gSlNWYWx1ZTo6dHJ5R2V0
QXNJbnQzMigpCiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxkb3VibGU+KGFzSW50KSA9PSBudW1i
ZXIpCiAgICAgICAgICAgICByZXR1cm4gYXNJbnQ7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIEpTVmFsdWUganNO
YU4oKQpAQCAtODU3LDcgKzg1Nyw3IEBAIEFMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+
IEpTVmFsdWU6OnRvVUludDMyQWZ0ZXJUb051bWVyaWMoSlNHbG9iYWxPYmplY3QqCiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoTElLRUxZKHJlc3VsdC5pc0lu
dDMyKCkpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC5hc0lu
dDMyKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvQmlnSW50T3JJbnQzMihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Nhc3QuaAppbmRleCA5NzY3Y2M3NjA3YmY1MThhODhiNzUxNTk1Mzg3NDJkNzczN2E0
ZDdkLi5jY2ZmNGE4YjYwZTlhYmUzYTRjNzdlNWYxMjNmNTVhYWI2ZTdmMjhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Nhc3QuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIGlubGluZSBi
b29sIGluaGVyaXRzSlNUeXBlSW1wbChWTSYgdm0sIEZyb20qIGZyb20sIEpTVHlwZVJhbmdlIHJh
bmdlKQogLy8gd2F5IHRvIHNheSB0aGF0IHdlIGFyZSBvdmVybG9hZGluZyBqdXN0IHRoZSBmaXJz
dCB0eXBlIGluIGEgdGVtcGxhdGUgbGlzdC4uLgogdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0Pgog
c3RydWN0IEluaGVyaXRzVHJhaXRzIHsKLSAgICBzdGF0aWMgY29uc3RleHByIE9wdGlvbmFsPEpT
VHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIE9wdGlvbmFsPEpTVHlwZVJhbmdlPiB0eXBlUmFuZ2UgeyBzdGQ6Om51bGxvcHQgfTsKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGcm9tPgogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpbmhlcml0
cyhWTSYgdm0sIEZyb20qIGZyb20pIHsgcmV0dXJuIEZpbmFsVHlwZURpc3BhdGNoZXI8c3RkOjpp
c19maW5hbDxUYXJnZXQ+Ojp2YWx1ZT46OnRlbXBsYXRlIGluaGVyaXRzR2VuZXJpYzxUYXJnZXQ+
KHZtLCBmcm9tKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ3VzdG9tR2V0dGVyRnVuY3Rpb24uaAppbmRleCBmZWEzMTg3ZmY4N2E3N2IyZmJkYjYw
OWIzNGVhYmMzYWFlNTBkNjM1Li4yMzhiOWEwMzA1ZDk3OTQ2MzYxMWU3OGQzZjZkMmVhOWNhYmJl
ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0N1c3RvbUdl
dHRlckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDdXN0
b21HZXR0ZXJGdW5jdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oSlNGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBDdXN0b21GdW5jdGlv
blBvaW50ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+ID0gV1RGOjpudWxsb3B0
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNDdXN0b21HZXR0ZXJGdW5jdGlvbiog
Y3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmLCBDdXN0b21G
dW5jdGlvblBvaW50ZXIsIE9wdGlvbmFsPERPTUF0dHJpYnV0ZUFubm90YXRpb24+ID0gc3RkOjpu
dWxsb3B0KTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4IDZkNGU5ZjliYmIxMWQ3YTFmOWJh
NzE5MmU5YTAxZmFmOGQxMzYxNjkuLmU5ZGY4NDM1ZTY5OGUyYzA4NTE2NmJlY2E3NTVmZDhkNmRl
YTJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aApAQCAtMjc2LDcgKzI3Niw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW1wbChKU0dsb2JhbE9iamVjdCoKIAogICAgIEpTVmFs
dWUgZmlyc3RWYWx1ZSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgdW5z
aWduZWQgb2Zmc2V0ID0gMDsKLSAgICBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoID0gV1RGOjpu
dWxsb3B0OworICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGggPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSAmJiBh
cmdDb3VudCA+IDEpIHsKICAgICAgICAgb2Zmc2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQiKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5oCmluZGV4IDJlMDJiYTNkNjQwNWVlNzJkZDRhZGUwYmE2N2Ni
OTU4ZjFhNjQ2MGIuLjZmYmFhMDcyYjAzMDlkYjMxNTk4YjY5ZmQyYWNiYWJiNTZmYzFkYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5oCkBAIC05OCw3ICs5OCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX2hhc093bmVyVGhyZWFkKQogICAgICAgICAgICAg
cmV0dXJuIG1fb3duZXJUaHJlYWQ7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGJvb2wgY3VycmVudFRocmVhZElz
SG9sZGluZ0xvY2soKSB7IHJldHVybiBtX2hhc093bmVyVGhyZWFkICYmIG1fb3duZXJUaHJlYWQu
Z2V0KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUnVuTG9vcFRpbWVyLmNwcAppbmRleCBmMzU0NmE4ODM0NTMzZmVkN2Y4
ODFlNWRkNTJlNjUyZWZjZjY4ZThjLi4yMWQwYmNmYjMwM2EwNjYwMzY1MzVmN2EyZmFhMWE1MGNm
ODdlMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1J1bkxv
b3BUaW1lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNSdW5Mb29w
VGltZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgT3B0aW9uYWw8U2Vjb25kcz4gSlNSdW5Mb29w
VGltZXI6Ok1hbmFnZXI6OnRpbWVVbnRpbEZpcmUoSlNSdW5Mb29wVGltZXImIHRpbWVyKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB2b2lkIEpTUnVuTG9vcFRpbWVyOjp0aW1lckRpZEZpcmUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKaW5kZXggODZi
MzZjYTIyZjcwNjI1ZTc3ZDhmNmZmZWZiMDI4MjlkNmIyN2M5NC4uZGQyOWIwM2VjY2E5OGM2MGYz
YWJmZTI0YmJlZGUxZTJhYWQ5MzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYWNoaW5lQ29udGV4dC5oCkBAIC00NTQsMTIgKzQ1NCwxMiBAQCBpbmxpbmUgT3B0aW9u
YWw8TWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+PiBpbnN0
cnVjdGlvblBvaQogICAgIHZvaWQqIHZhbHVlID0gaW5zdHJ1Y3Rpb25Qb2ludGVySW1wbChjb25z
dF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOwogI2VuZGlmCiAgICAgaWYgKCF2YWx1
ZSkKLSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxh
dGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4obnVsbHB0cikpOworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX29wdGlvbmFsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQbGF0Zm9ybVJlZ2lzdGVyc1BDUHRy
VGFnPihudWxscHRyKSk7CiAgICAgaWYgKCF1c2VzUG9pbnRlclRhZ2dpbmcoKSkKLSAgICAgICAg
cmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3Rl
cnNQQ1B0clRhZz4odmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZvcm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsK
ICAgICBpZiAoaXNUYWdnZWRXaXRoPFBsYXRmb3JtUmVnaXN0ZXJzUENQdHJUYWc+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIG1ha2VPcHRpb25hbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI8UGxhdGZv
cm1SZWdpc3RlcnNQQ1B0clRhZz4odmFsdWUpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxQ
bGF0Zm9ybVJlZ2lzdGVyc1BDUHRyVGFnPih2YWx1ZSkpOworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGlubGluZSB2b2lkIHNldEluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVncywgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPENGdW5jdGlvblB0clRhZz4gdmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoQ29tbW9uLmgKaW5kZXggYTIyNDdk
NWJjY2M2MTUzZmVjZTY5ODkyODk3OThmODVkZTYxOTk3MS4uNjMxNzE3ZjkwYTQ5MTMwNmU0NTRj
MjcxMTczOGJmMmVlYTRmMDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWF0aENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
dGhDb21tb24uaApAQCAtMTgyLDExICsxODIsMTEgQEAgaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4g
c2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0KGRvdWJsZSBjb25zdGFudCkKIHsKICAgICAvLyBO
byAid2VpcmQiIG51bWJlcnMgKE5hTiwgRGVub3JtYWwsIGV0YykuCiAgICAgaWYgKCFjb25zdGFu
dCB8fCAhc3RkOjppc25vcm1hbChjb25zdGFudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgZXhwb25lbnQ7CiAg
ICAgaWYgKHN0ZDo6ZnJleHAoY29uc3RhbnQsICZleHBvbmVudCkgIT0gMC41KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gTm90ZSB0aGF0IGZyZXhwKCkgcmV0dXJucyB0aGUgdmFsdWUgZGl2aWRlZCBieSB0d28KICAg
ICAvLyBzbyB3ZSB0byBvZmZzZXQgdGhpcyBleHBvbmVudCBieSBvbmUuCkBAIC0xOTUsNyArMTk1
LDcgQEAgaW5saW5lIE9wdGlvbmFsPGRvdWJsZT4gc2FmZVJlY2lwcm9jYWxGb3JEaXZCeUNvbnN0
KGRvdWJsZSBjb25zdGFudCkKICAgICAvLyBBIGRvdWJsZSBleHBvbmVudCBpcyBiZXR3ZWVuIC0x
MDIyIGFuZCAxMDIzLgogICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvIHRvIGludmVydCAxMDIzLgog
ICAgIGlmIChleHBvbmVudCA9PSAxMDIzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHJlY2lwcm9jYWwgPSBz
dGQ6OmxkZXhwKDEsIC1leHBvbmVudCk7CiAgICAgQVNTRVJUKHN0ZDo6aXNub3JtYWwocmVjaXBy
b2NhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCmluZGV4IDBjNmE5Yzc0MWY2NjI1MjE1YjdkNTcwNGM3YWRmMGY5NWE3Mjg0
YTguLmIxN2Y1OTM2ZmVmYzk2MzhlY2Y0OWFlZWJlYzg3MGMwODY0Y2ViYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAg
LTI1MSw3ICsyNTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0
b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIChKU0dsb2JhbE9iamVjdAogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9i
amVjdCwgUHJvcGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6
SW5jbHVkZSwgV1RGOjpudWxsb3B0KSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIG9iamVjdCwgUHJv
cGVydHlOYW1lTW9kZTo6U3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwg
c3RkOjpudWxsb3B0KSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29u
c3RydWN0b3JLZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRl
eCBhMDExODNmN2RmYmJmN2Q1NWVkZDUzMDE2MDFlOGI0ODlmYjJjYTYzLi5jY2M5MzBjM2Y5NjFk
ZWM1Nzk3MmJlMWY1YWFkNmQ3MjJmNzJmNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFn
ZTo6Qm9vbD4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiZmFsc2UiKSB8
fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJubyIpIHx8ICFzdHJjbXAo
c3RyaW5nLCAiMCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+CkBAIC03Nyw3
ICs3Nyw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpJbnQzMj4gcGFyc2UoY29uc3QgY2hh
ciogc3RyaW5nKQogICAgIGludDMyX3QgdmFsdWU7CiAgICAgaWYgKHNzY2FuZihzdHJpbmcsICIl
ZCIsICZ2YWx1ZSkgPT0gMSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PgpAQCAt
ODYsNyArODYsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6VW5zaWduZWQ+IHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZykKICAgICB1bnNpZ25lZCB2YWx1ZTsKICAgICBpZiAoc3NjYW5mKHN0
cmluZywgIiV1IiwgJnZhbHVlKSA9PSAxKQogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAjaWYgQ1BV
KEFERFJFU1M2NCkgfHwgT1MoREFSV0lOKQpAQCAtOTYsNyArOTYsNyBAQCBPcHRpb25hbDxPcHRp
b25zU3RvcmFnZTo6U2l6ZT4gcGFyc2UoY29uc3QgY2hhciogc3RyaW5nKQogICAgIHNpemVfdCB2
YWx1ZTsKICAgICBpZiAoc3NjYW5mKHN0cmluZywgIiV6dSIsICZ2YWx1ZSkgPT0gMSkKICAgICAg
ICAgcmV0dXJuIHZhbHVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KICNlbmRpZiAvLyBDUFUoQUREUkVTUzY0KSB8fCBPUyhEQVJXSU4pCiAK
QEAgLTEwNiw3ICsxMDYsNyBAQCBPcHRpb25hbDxPcHRpb25zU3RvcmFnZTo6RG91YmxlPiBwYXJz
ZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgZG91YmxlIHZhbHVlOwogICAgIGlmIChzc2NhbmYo
c3RyaW5nLCAiJWxmIiwgJnZhbHVlKSA9PSAxKQogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1w
bGF0ZTw+CkBAIC0xMTUsNyArMTE1LDcgQEAgT3B0aW9uYWw8T3B0aW9uc1N0b3JhZ2U6Ok9wdGlv
blJhbmdlPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgT3B0aW9uUmFuZ2UgcmFuZ2U7
CiAgICAgaWYgKHJhbmdlLmluaXQoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHJhbmdlOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8PgpAQCAtMTQzLDcgKzE0Myw3IEBAIE9wdGlvbmFsPE9wdGlvbnNTdG9yYWdlOjpHQ0xv
Z0xldmVsPiBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInZlcmJvc2UiKSB8fCAhc3RyY21wKHN0cmluZywgIjIi
KSkKICAgICAgICAgcmV0dXJuIEdDTG9nZ2luZzo6VmVyYm9zZTsKIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBPcHRpb25zOjpp
c0F2YWlsYWJsZShPcHRpb25zOjpJRCBpZCwgT3B0aW9uczo6QXZhaWxhYmlsaXR5IGF2YWlsYWJp
bGl0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5k
ZXggZmViNTJlNmNmMGE4ODJjMTkwZjVmOThlNWVjYzkxZmUzNmFhODViNS4uOWQ0MDUxYzVmMmYy
YTQwZGEzYmU2M2VmZjgwOWU1MDg1ZmI5NWU4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTEyNiw5ICsxMjYsOSBAQCBBTFdBWVNfSU5MSU5F
IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7CiAgICAgaWYgKCF1aWQpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcGFyc2VJbmRleCgqdWlk
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApp
bmRleCBjMTBjNjUwNzk5ZGQ2MWY3NmQ0NzM5MDIwNmQwODMwMTEwYjFiN2U1Li41YjA2NDIyY2Jk
YWQzMjcwMGE0MzU3OTM5MDkwMDlhODE1YzRlYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIGlmIChtX2FkZGl0aW9uYWxEYXRhVHlwZSA9PSBBZGRpdGlvbmFsRGF0YVR5
cGU6OkRPTUF0dHJpYnV0ZSkKICAgICAgICAgICAgIHJldHVybiBtX2FkZGl0aW9uYWxEYXRhLmRv
bUF0dHJpYnV0ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzdHJ1Y3QgTW9kdWxlTmFtZXNwYWNlU2xvdCB7
CkBAIC0yMDQsNyArMjA0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKG1fYWRkaXRp
b25hbERhdGFUeXBlID09IEFkZGl0aW9uYWxEYXRhVHlwZTo6TW9kdWxlTmFtZXNwYWNlKQogICAg
ICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGEubW9kdWxlTmFtZXNwYWNlU2xvdDsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICB2b2lkIHNldFZhbHVlKEpTT2JqZWN0KiBzbG90QmFzZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggNDExOTJjY2IzN2U4MmZkZmRkZTdiNmYxOTVi
NGM0MTdkNjFlMGI4OS4uZTVmOGQ1NDM3YTk2NWIwOGViNzkzNTUyM2Y1MjIxMTA5NjA2NDM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAK
QEAgLTIyMiw3ICsyMjIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVj
dE93bktleXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAgIEpTVmFsdWUg
dGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKG93blByb3BlcnR5S2V5cyhnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVj
dCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51
bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlLCBXVEY6Om51bGxvcHQpKSk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGdsb2JhbE9i
amVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5n
c0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUsIHN0ZDo6bnVsbG9w
dCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVj
dC5wcmV2ZW50ZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggMDgyODc4MDcyMjU1ZDg5NzM3MDgyNTk4MmNmZTdl
MmU1MDQ5OGJiZS4uZTAwMmM2NDZiODA2ZWNkZGJjZWRhOTBlMDBjZjY4Zjc2ODEzODEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3Bw
CkBAIC0xNDUsNyArMTQ1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3Rv
RnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBTdHJp
bmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRv
V1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgICAgIGF1dG8gZmxhZ3MgPSBhcmcxLmlzVW5k
ZWZpbmVkKCkgPyBtYWtlT3B0aW9uYWwoT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiB7IH0pIDogWWFy
cjo6cGFyc2VGbGFncyhhcmcxLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkpOworICAgICAgICBh
dXRvIGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgpID8gc3RkOjptYWtlX29wdGlvbmFsKE9wdGlv
blNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlhcnI6OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICghZmxhZ3MpCiAgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2Jh
bE9iamVjdCwgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJf
cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2Zp
bGVyLmNwcAppbmRleCA1MGE3MDUyMjBlZmFmYmM3ZTk1YzYxM2UxYjBiYmIyNDgzNTdkMjc5Li41
Mzg1MjM4ZjcwMmJiZDQ1OWY2Y2Q4NzdlZDE1ODhjNzMzN2JhNjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtMTE1Niw3
ICsxMTU2LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMoUHJp
bnRTdHJlYW0mIG91dCkKICAgICAgICAgYXV0byBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmlu
ZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihmcmFtZS5z
ZW1hbnRpY0xvY2F0aW9uLCBmcmFtZS53YXNtQ29tcGlsYXRpb25Nb2RlKSk7CiAgICAgICAgIGlm
IChPcHRpb25hbDxzdGQ6OnBhaXI8U3RhY2tGcmFtZTo6Q29kZUxvY2F0aW9uLCBDb2RlQmxvY2sq
Pj4gbWFjaGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7CiAgICAgICAgICAg
ICBmcmFtZURlc2NyaXB0aW9uID0gbWFrZVN0cmluZyhmcmFtZURlc2NyaXB0aW9uLCAiIDwtLSAi
LAotICAgICAgICAgICAgICAgIG1hY2hpbmVMb2NhdGlvbi0+c2Vjb25kLT5pbmZlcnJlZE5hbWUo
KS5kYXRhKCksIGRlc2NyaXB0aW9uRm9yTG9jYXRpb24obWFjaGluZUxvY2F0aW9uLT5maXJzdCwg
V1RGOjpudWxsb3B0KSk7CisgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0aW9uLT5zZWNvbmQt
PmluZmVycmVkTmFtZSgpLmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihtYWNoaW5lTG9j
YXRpb24tPmZpcnN0LCBzdGQ6Om51bGxvcHQpKTsKICAgICAgICAgfQogICAgICAgICBieXRlY29k
ZUNvdW50cy5hZGQoZnJhbWVEZXNjcmlwdGlvbiwgMCkuaXRlcmF0b3ItPnZhbHVlKys7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRh
YmxlLmNwcAppbmRleCAyNzA2NTVlOWMzMTA5ZTEyZGM1M2YzODJiYzM0YzI0ODhiYTIzY2IxLi4y
ZWVkMTljYWE1N2JjZDEzMzM1YzlkZDljYjhkMzU1NzU1OGVjYjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtNTAxLDcg
KzUwMSw3IEBAIE9wdGlvbmFsPGludD4gU2NyaXB0RXhlY3V0YWJsZTo6b3ZlcnJpZGVMaW5lTnVt
YmVyKFZNJiB2bSkgY29uc3QKIHsKICAgICBpZiAoaW5oZXJpdHM8RnVuY3Rpb25FeGVjdXRhYmxl
Pih2bSkpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8Y29uc3QgRnVuY3Rpb25FeGVjdXRhYmxlKj4o
dGhpcyktPm92ZXJyaWRlTGluZU51bWJlcigpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdW5zaWduZWQgU2NyaXB0RXhlY3V0YWJsZTo6
dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KFZNJiB2bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IGFmNTI2MTE3MzcwZDk1MjkwNTczNDQy
M2I2NzdlMTk5NWU1YjBiMDYuLjdkMGY1OTg2Nzg2YjlhYzQxZjNmMzhhZjVmODc5NGMyOGQwNGMz
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAt
MTUwMiw3ICsxNTAyLDcgQEAgYXV0byBTdHJ1Y3R1cmU6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdCAtPiBPcHRpb24KICAgICAgICAgICAgICAg
ICByZXR1cm4gUHJvcGVydHlIYXNoRW50cnkgeyBwcm9wSGFzaFRhYmxlLCBlbnRyeSB9OwogICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnNldEJyYW5kVHJhbnNpdGlvbkZy
b21FeGlzdGluZ1N0cnVjdHVyZUltcGwoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBicmFuZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVG9OYXRpdmVGcm9tVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rv
TmF0aXZlRnJvbVZhbHVlLmgKaW5kZXggYmIyOGNjODBhZDNhZTIxZGU3YzZmYjY3NTNlODRkMGIy
MzY4NDgzNi4uYmI3ZjFjNThhMDY0YzM0YzVmZmQ4NWNjMDk4MWY2NDY5MDVkYzA4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVG9OYXRpdmVGcm9tVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Ub05hdGl2ZUZyb21WYWx1ZS5oCkBA
IC02MSwxNCArNjEsMTQgQEAgT3B0aW9uYWw8dHlwZW5hbWUgQWRhcHRvcjo6VHlwZT4gdG9OYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfc2FtZV92PEFkYXB0b3IsIEJpZ0ludDY0QWRhcHRvcj4gfHwgc3RkOjpp
c19zYW1lX3Y8QWRhcHRvciwgQmlnVWludDY0QWRhcHRvcj4pIHsKICAgICAgICAgaWYgKCF2YWx1
ZS5pc0JpZ0ludCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19z
YW1lX3Y8QWRhcHRvciwgQmlnSW50NjRBZGFwdG9yPikKICAgICAgICAgICAgIHJldHVybiBKU0Jp
Z0ludDo6dG9CaWdJbnQ2NCh2YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVy
biBKU0JpZ0ludDo6dG9CaWdVSW50NjQodmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghdmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAodmFsdWUuaXNJbnQz
MigpKQogICAgICAgICAgICAgcmV0dXJuIEFkYXB0b3I6OnRvTmF0aXZlRnJvbUludDMyV2l0aG91
dENvZXJjaW9uKHZhbHVlLmFzSW50MzIoKSk7CiAgICAgICAgIHJldHVybiBBZGFwdG9yOjp0b05h
dGl2ZUZyb21Eb3VibGVXaXRob3V0Q29lcmNpb24odmFsdWUuYXNEb3VibGUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QWRhcHRvcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCmluZGV4
IDNkOWIzZTQ3ZmMwNWJlOTcyOTY0Mzc3YTA3MTY2OGE0ZTIyNzQwN2QuLjUzNDlkZjE2YTJlYzQ0
MWVlNDYxMmUzYzk2NjQ4ZmY4M2QzNmVjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlBZGFwdG9ycy5oCkBAIC04MSwxNCArODEsMTQgQEAgc3Ry
dWN0IEludGVncmFsVHlwZWRBcnJheUFkYXB0b3IgewogICAgIHN0YXRpYyBPcHRpb25hbDxUeXBl
PiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQogICAgIHsK
ICAgICAgICAgaWYgKCh2YWx1ZSA+PSAwICYmIHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSkg
PiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4VmFsdWUpKSB8fCB2YWx1ZSA8IHN0YXRpY19jYXN0
PGludDMyX3Q+KG1pblZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VHlwZT4odmFsdWUpOwogICAgIH0KIAogICAgIHN0YXRpYyBPcHRpb25hbDxUeXBlPiB0b05h
dGl2ZUZyb21VaW50MzJXaXRob3V0Q29lcmNpb24odWludDMyX3QgdmFsdWUpCiAgICAgewogICAg
ICAgICBpZiAodmFsdWUgPiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWF4VmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICB9CkBA
IC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBJbnRlZ3JhbFR5cGVkQXJyYXlBZGFwdG9yIHsKICAgICB7
CiAgICAgICAgIFR5cGUgaW50ZWdlciA9IHN0YXRpY19jYXN0PFR5cGU+KHZhbHVlKTsKICAgICAg
ICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBpZiAodmFsdWUgPCAwKQogICAgICAgICAgICAgcmV0dXJuIHRvTmF0aXZlRnJv
bUludDMyV2l0aG91dENvZXJjaW9uKHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKSk7CkBAIC0x
NTgsMTAgKzE1OCwxMCBAQCBzdHJ1Y3QgRmxvYXRUeXBlZEFycmF5QWRhcHRvciB7CiAgICAgICAg
IFR5cGUgdmFsdWVSZXN1bHQgPSBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAKICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWVSZXN1bHQpICE9IHZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgaWYgKHZhbHVlIDwgbWluVmFsdWUgfHwgdmFsdWUgPiBtYXhWYWx1ZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHJldHVybiB2YWx1ZVJlc3VsdDsKICAgICB9CkBAIC0zMDAsNyAr
MzAwLDcgQEAgc3RydWN0IFVpbnQ4Q2xhbXBlZEFkYXB0b3IgewogICAgIHN0YXRpYyBPcHRpb25h
bDxUeXBlPiB0b05hdGl2ZUZyb21JbnQzMldpdGhvdXRDb2VyY2lvbihpbnQzMl90IHZhbHVlKQog
ICAgIHsKICAgICAgICAgaWYgKHZhbHVlID4gbWF4VmFsdWUgfHwgdmFsdWUgPCBtaW5WYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPih2YWx1ZSk7CiAg
ICAgfQpAQCAtMzA5LDcgKzMwOSw3IEBAIHN0cnVjdCBVaW50OENsYW1wZWRBZGFwdG9yIHsKICAg
ICB7CiAgICAgICAgIHVpbnQ4X3QgaW50ZWdlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVl
KTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4oaW50ZWdlcikgIT0gdmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gaW50ZWdlcjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCmluZGV4IDliNDQwNmIxMTU2M2RhZjU3MzllYjMz
OGFmODI1OWE1ZTE4YTQxNTkuLmZkZWM2YmYxMjM0MjMzY2FhZTAyNDhhYjg1ZWFhYzE1YjIyZmE2
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb25Qb2ludGVy
ID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpOwogICAgICAg
ICBpZiAoIWluc3RydWN0aW9uUG9pbnRlcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gU2ln
bmFsQ29udGV4dChyZWdpc3RlcnMsICppbnN0cnVjdGlvblBvaW50ZXIpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
CmluZGV4IDBlNDMyY2IzZTlhMTIyNjZhN2YyMjhjMDZlZTc0N2U2YzliZmRhNjAuLjE3YzJhNWYz
OGM0NDVkZGIwNGY3NjA0NGI2ZGNlOTY4OTczYzBmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAgLTkyLDcgKzkyLDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgYXV0byBpbnN0cnVjdGlvblBvaW50ZXIgPSBNYWNo
aW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ2lzdGVycyk7CiAgICAgICAgIGlmICgh
aW5zdHJ1Y3Rpb25Qb2ludGVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBTaWduYWxDb250
ZXh0KHJlZ2lzdGVycywgKmluc3RydWN0aW9uUG9pbnRlcik7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggNTFiZjVi
MDZjNjA1OWFkZWI4MWQ1ODFmOWJjYjhhYjUzYzQxZTBlMS4uMTU4NzhlMzYzNDBkMjRhMWY5MTI1
MjEyMGZlYzFmMGI0OTI5NDdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKSB7IH0KICAgICB2b2lkIGRpZFBvcFZhbHVlRnJv
bVN0YWNrKCkgeyB9CiAKLSAgICBWYWx1ZSogY29uc3RhbnQoQjM6OlR5cGUsIHVpbnQ2NF90IGJp
dHMsIE9wdGlvbmFsPE9yaWdpbj4gPSBXVEY6Om51bGxvcHQpOworICAgIFZhbHVlKiBjb25zdGFu
dChCMzo6VHlwZSwgdWludDY0X3QgYml0cywgT3B0aW9uYWw8T3JpZ2luPiA9IHN0ZDo6bnVsbG9w
dCk7CiAgICAgVmFsdWUqIGZyYW1lUG9pbnRlcigpOwogICAgIHZvaWQgaW5zZXJ0Q29uc3RhbnRz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA4MDdhZGI4
ZTcwNWQ4Zjc1MjlhNTRjOGYyNDMxMzBjZGVhY2ZmNDUyLi5mYTk2YjM0ZDg0YjE3MDc2MmZkNjk3
YTUxNzU2ZmM5MDlkNWUwZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RydWN0IEVsZW1lbnQgewogICAgIHsgfQogCiAgICAg
RWxlbWVudChFbGVtZW50OjpLaW5kIGtpbmQsIFRhYmxlRWxlbWVudFR5cGUgZWxlbVR5cGUpCi0g
ICAgICAgIDogRWxlbWVudChraW5kLCBlbGVtVHlwZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpCisgICAgICAgIDogRWxlbWVudChraW5kLCBlbGVtVHlwZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQpCiAgICAgeyB9CiAKICAgICB1aW50MzJfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBmdW5jdGlvbkluZGljZXMuc2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTmFtZVNlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21OYW1lU2VjdGlvbi5oCmluZGV4IGJjMmViZGZjMTEwMzMwNDY4ZmIxNjgxMDEwOTc1YmVk
YTJlNzZkNWYuLjY4OWEwOWZkYzNjYzg5MjkxOGQyMTJmMzY2MmY3NmZiY2RhYTNjNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21OYW1lU2VjdGlvbi5oCkBAIC0zOSw3ICsz
OSw3IEBAIHN0cnVjdCBOYW1lU2VjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxO
YW1lU2VjdGlvbj4gewogcHVibGljOgogICAgIE5hbWVTZWN0aW9uKCkKICAgICB7Ci0gICAgICAg
IHNldEhhc2goV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0SGFzaChzdGQ6Om51bGxvcHQpOwog
ICAgIH0KIAogICAgIHN0YXRpYyBSZWY8TmFtZVNlY3Rpb24+IGNyZWF0ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggZWZmOGJj
MWM5OTdmMDIyOWEyZWJjODM3NmJlMjE3NDljNzJmYjMxNi4uYmZkYTliM2IwZWZlNDYwMjRlNGM3
ZWE2YWVlM2FjMzI5NjVhNTViMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtNzc2LDcgKzc3Niw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VEYXRhKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZGF0YUJ5dGVMZW5ndGgpLCAiY2FuJ3QgZ2V0ICIs
IHNlZ21lbnROdW1iZXIsICJ0aCBEYXRhIHNlZ21lbnQncyBkYXRhIGJ5dGUgbGVuZ3RoIik7CiAg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGRhdGFCeXRlTGVuZ3RoID4gbWF4TW9kdWxl
U2l6ZSwgc2VnbWVudE51bWJlciwgInRoIERhdGEgc2VnbWVudCdzIGRhdGEgYnl0ZSBsZW5ndGgg
aXMgdG9vIGJpZyAiLCBkYXRhQnl0ZUxlbmd0aCwgIiBtYXhpbXVtICIsIG1heE1vZHVsZVNpemUp
OwogCi0gICAgICAgICAgICBhdXRvIHNlZ21lbnQgPSBTZWdtZW50OjpjcmVhdGUoV1RGOjpudWxs
b3B0LCBkYXRhQnl0ZUxlbmd0aCwgU2VnbWVudDo6S2luZDo6UGFzc2l2ZSk7CisgICAgICAgICAg
ICBhdXRvIHNlZ21lbnQgPSBTZWdtZW50OjpjcmVhdGUoc3RkOjpudWxsb3B0LCBkYXRhQnl0ZUxl
bmd0aCwgU2VnbWVudDo6S2luZDo6UGFzc2l2ZSk7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFzZWdtZW50LCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgIiwgc2Vn
bWVudE51bWJlciwgInRoIERhdGEgc2VnbWVudCBvZiBzaXplICIsIGRhdGFCeXRlTGVuZ3RoKTsK
ICAgICAgICAgICAgIGZvciAodWludDMyX3QgZGF0YUJ5dGUgPSAwOyBkYXRhQnl0ZSA8IGRhdGFC
eXRlTGVuZ3RoOyArK2RhdGFCeXRlKSB7CiAgICAgICAgICAgICAgICAgdWludDhfdCBieXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNw
cAppbmRleCAxZDIyNWM3OGUwM2I4ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjLi4xZWNhNDM2
ZGY1OTJmMDdmMzgzZWQwN2E5ZDE5YjQ3YjU0ZGNkZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBBTFdBWVNfSU5MSU5FIE9wdGlvbmFsPHVpbnQ4X3Q+IHBhcnNlVUludDcoY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90JiBvZmZzZXQsCiAgICAgdWludDhfdCByZXN1bHQgPSBkYXRhW29mZnNl
dCsrXTsKICAgICBpZiAocmVzdWx0IDwgMHg4MCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgpAQCAtMjA5LDcgKzIwOSw3IEBAIGF1dG8gU3RyZWFt
aW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgYnl0ZXNTaXpl
LCBzaXplX3QmIG9mCiAgICAgaWYgKHRvdGFsRGF0YVNpemUgPCByZXF1aXJlZFNpemUpIHsKICAg
ICAgICAgbV9yZW1haW5pbmcuYXBwZW5kKGJ5dGVzICsgb2Zmc2V0SW5CeXRlcywgYnl0ZXNSZW1h
aW5pbmdTaXplKTsKICAgICAgICAgb2Zmc2V0SW5CeXRlcyA9IGJ5dGVzU2l6ZTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBzaXplX3QgdXNlZFNpemUgPSByZXF1aXJlZFNpemUgLSBtX3JlbWFpbmluZy5zaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFibGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhYmxlLmNwcAppbmRleCBmYTI2NmQy
OTdiMWI2ZDVlYWM3NDg2YjdhNTE4YjliM2NlMjcwZTQ4Li45YWE2NzAyMzBlZTcxNzllOGViMThh
NGNhZDU3YjQ5ZjkxODA2M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UYWJs
ZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBPcHRpb25hbDx1aW50MzJfdD4gVGFibGU6Omdyb3co
dWludDMyX3QgZGVsdGEsIEpTVmFsdWUgZGVmYXVsdFZhbHVlKQogICAgIG5ld0xlbmd0aENoZWNr
ZWQgKz0gZGVsdGE7CiAgICAgdWludDMyX3QgbmV3TGVuZ3RoOwogICAgIGlmIChuZXdMZW5ndGhD
aGVja2VkLnNhZmVHZXQobmV3TGVuZ3RoKSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKG1heGltdW0oKSAmJiBuZXdMZW5ndGggPiAqbWF4aW11bSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghaXNWYWxpZExlbmd0aChuZXdMZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjaGVja2VkR3Jv
dyA9IFsmXSAoYXV0byYgY29udGFpbmVyLCBhdXRvIGluaXRpYWxpemVyKSB7CiAgICAgICAgIGlm
IChuZXdMZW5ndGhDaGVja2VkLnVuc2FmZUdldCgpID4gYWxsb2NhdGVkTGVuZ3RoKG1fbGVuZ3Ro
KSkgewpAQCAtMTE4LDEzICsxMTgsMTMgQEAgT3B0aW9uYWw8dWludDMyX3Q+IFRhYmxlOjpncm93
KHVpbnQzMl90IGRlbHRhLCBKU1ZhbHVlIGRlZmF1bHRWYWx1ZSkKIAogICAgIGlmIChhdXRvKiBm
dW5jUmVmVGFibGUgPSBhc0Z1bmNyZWZUYWJsZSgpKSB7CiAgICAgICAgIGlmICghY2hlY2tlZEdy
b3coZnVuY1JlZlRhYmxlLT5tX2ltcG9ydGFibGVGdW5jdGlvbnMsIFtdIChhdXRvJikgeyB9KSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoIWNoZWNrZWRHcm93KGZ1bmNSZWZUYWJsZS0+bV9pbnN0
YW5jZXMsIFtdIChhdXRvJikgeyB9KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmICghY2hl
Y2tlZEdyb3cobV9qc1ZhbHVlcywgW2RlZmF1bHRWYWx1ZV0gKFdyaXRlQmFycmllcjxVbmtub3du
PiYgc2xvdCkgeyBzbG90LnNldFN0YXJ0aW5nVmFsdWUoZGVmYXVsdFZhbHVlKTsgfSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzZXRMZW5ndGgobmV3TGVuZ3RoKTsKICAgICByZXR1cm4gbmV3TGVuZ3RoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCmluZGV4IDU4ZThjZDAwMDY4MjNkZWFmNGVlNjg3M2ExNzE4YWQ1NzgzNmY1YjMu
LjlmYjFlOTNiNmY5MWI5NTA1M2I5YmIxMDAwMWU2YTdmNjM1MTg2MTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaQogCiAgICAg
Ym9vbCBoYXNTdGFydCA9ICEhbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3Bh
Y2U7CiAgICAgaWYgKGhhc1N0YXJ0KSB7Ci0gICAgICAgIGF1dG8gc3RhcnRGdW5jdGlvbkluZGV4
U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZS52YWx1ZU9y
KDApOworICAgICAgICBhdXRvIHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlID0gbW9kdWxlSW5mb3Jt
YXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UudmFsdWVfb3IoMCk7CiAgICAgICAgIFdhc206
OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlLT5zaWduYXR1cmVJbmRleEZy
b21GdW5jdGlvbkluZGV4U3BhY2Uoc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UpOwogICAgICAgICBj
b25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAvLyBUaGUgc3RhcnQgZnVuY3Rpb24g
bXVzdCBub3QgdGFrZSBhbnkgYXJndW1lbnRzIG9yIHJldHVybiBhbnl0aGluZy4gVGhpcyBpcyBl
bmZvcmNlZCBieSB0aGUgcGFyc2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJGbGFn
cy5jcHAKaW5kZXggMTc1MDRmYmExNmU5MGRiY2YwZDViOWY2MzgwZGZiMDIxOTg2NTE0YS4uMjk3
MDFmNjFmZDk3ODhkMTBmZGQ2MDRkMGYyMGVlYzliODBmMDA5MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckZsYWdzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyRmxhZ3MuY3BwCkBAIC0zOSw1MiArMzksNTIgQEAgT3B0aW9uYWw8T3B0
aW9uU2V0PEZsYWdzPj4gcGFyc2VGbGFncyhTdHJpbmdWaWV3IHN0cmluZykKICAgICAgICAgc3dp
dGNoIChjaGFyYWN0ZXIpIHsKICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICBpZiAoZmxh
Z3MuY29udGFpbnMoRmxhZ3M6Okhhc0luZGljZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGZsYWdzLmFkZChGbGFnczo6SGFzSW5kaWNlcyk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFn
czo6R2xvYmFsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxh
Z3M6Okdsb2JhbCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdpJzoKICAg
ICAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGbGFnczo6SWdub3JlQ2FzZSkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAgICAgZmxhZ3MuYWRkKEZsYWdzOjpJZ25vcmVDYXNlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ20nOgogICAgICAgICAgICAgaWYgKGZs
YWdzLmNvbnRhaW5zKEZsYWdzOjpNdWx0aWxpbmUpKQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGZsYWdzLmFkZChGbGFnczo6TXVsdGlsaW5lKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdz
OjpEb3RBbGwpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFn
czo6RG90QWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgJ3UnOgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpVbmljb2RlKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBmbGFncy5hZGQoRmxhZ3M6OlVuaWNvZGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgJ3kn
OgogICAgICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZsYWdzOjpTdGlja3kpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGZsYWdzLmFkZChGbGFnczo6U3RpY2t5KTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBtYWtlT3B0aW9uYWwoZmxhZ3MpOworICAgIHJldHVybiBzdGQ6
Om1ha2Vfb3B0aW9uYWwoZmxhZ3MpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKaW5kZXgg
Y2JiNmM1Njk1YTc5ZTJjOGU3ZjViYzM4N2E4ZjM0YTQ5YTA3MjA4Yy4uZGU2Mjc1YmRmOGFhYTU0
MDcxOWNkOWI4ZjM2MmI0YWY3NzE5NWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
eWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogI2lm
bmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXBEaXNqdW5jdGlvbihCeXRlRGlzanVuY3Rpb24qIGRp
c2p1bmN0aW9uLCB1bnNpZ25lZCBuZXN0aW5nID0gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJKSVQuaAppbmRleCA1ZjRmZGY5MGNkN2NlZDhkNGQzZjhiYjFhN2E4OWE3MTIwY2IxNjI0Li4z
YThlNWYyM2ZiMjg5OGE5NTQ3ZmYwODk0NTc4MWYzZDkyZDI2YzIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckpJVC5oCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgICAgICBt
X3JlZjE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnIxNkJpdFB0clRhZz4oKTsKICAgICAg
ICAgbV9tYXRjaE9ubHk4ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFlhcnJNYXRjaE9ubHk4Qml0
UHRyVGFnPigpOwogICAgICAgICBtX21hdGNoT25seTE2ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4oKTsKLSAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhcnNlci5oCmlu
ZGV4IDk3YWUzY2Y3YWI0ZjQ3ODU2ZDQxYzI0YmZjNzdlNGJmMGI4NTc0ZDYuLmZlYWZhYWNiYWYx
MzdmZDE1NDg3ODM0N2YyNGU2Y2Q1MTFhZDUxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJyUGFyc2VyLmgKQEAgLTExMjEsNyArMTEyMSw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9u
YWw8U3RyaW5nPiB0cnlDb25zdW1lR3JvdXBOYW1lKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVu
ZE9mUGF0dGVybigpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUGFyc2VTdGF0ZSBzdGF0ZSA9IHNh
dmVTdGF0ZSgpOwogICAgICAgICAKQEAgLTExNDUsMTQgKzExNDUsMTQgQEAgcHJpdmF0ZToKIAog
ICAgICAgICByZXN0b3JlU3RhdGUoc3RhdGUpOwogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8
QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+IHRyeUNvbnN1bWVVbmljb2RlUHJvcGVydHlFeHByZXNz
aW9uKCkKICAgICB7CiAgICAgICAgIGlmIChhdEVuZE9mUGF0dGVybigpIHx8ICFpc1VuaWNvZGVQ
cm9wZXJ0eVZhbHVlRXhwcmVzc2lvbkNoYXIocGVlaygpKSkgewogICAgICAgICAgICAgbV9lcnJv
ckNvZGUgPSBFcnJvckNvZGU6OkludmFsaWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGV4cHJlc3Npb25CdWls
ZGVyOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjb25z
dW1lKCk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykgewogICAgICAgICAgICAgICAgICAg
ICBtX2Vycm9yQ29kZSA9IEVycm9yQ29kZTo6SW52YWxpZFVuaWNvZGVQcm9wZXJ0eUV4cHJlc3Np
b247Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKGZvdW5kRXF1YWxzKSB7CkBAIC0xMTk5LDcgKzExOTksNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAKICAgICAgICAgbV9lcnJvckNvZGUgPSBFcnJvckNvZGU6OkludmFs
aWRVbmljb2RlUHJvcGVydHlFeHByZXNzaW9uOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVudW0gY2xhc3Mg
UGFyZW50aGVzZXNUeXBlIDogdWludDhfdCB7IFN1YnBhdHRlcm4sIEFzc2VydGlvbiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCmluZGV4IGExMTNhYWMzMmZl
YTM1MjBlYTk0MjZkZWU4YjUxMjA5NTI2MDUwODguLjllMzYxNzA4NWQxYThhZTc3ZWJmNjhkZjM0
ZTQ4MTdkYjVlZGMwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lh
cnJQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVy
bi5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcGF0dGVybi5tX3Vz
ZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld0NoYXJhY3RlckNsYXNzKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0
dXJlID0gdHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBvcHRHcm91cE5hbWUgPSBXVEY6Om51bGxvcHQp
CisgICAgdm9pZCBhdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4oYm9vbCBjYXB0dXJlID0g
dHJ1ZSwgT3B0aW9uYWw8U3RyaW5nPiBvcHRHcm91cE5hbWUgPSBzdGQ6Om51bGxvcHQpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuSWQgPSBtX3BhdHRlcm4ubV9udW1TdWJwYXR0
ZXJucyArIDE7CiAgICAgICAgIGlmIChjYXB0dXJlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyU3ludGF4Q2hlY2tlci5jcHAKaW5kZXggM2M3YTVkYzM0ODJmZjJlNzMx
ZGQ3ZjgyZWY2Y2Q2ZjA1ODMyNDAwYS4uM2ZlNTg1N2FhNjU0MTE0OGYzOWZmYWFkYjhiMWMxNzE3
MjdmMDkyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclN5bnRh
eENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJTeW50YXhD
aGVja2VyLmNwcApAQCAtMjgsMzEgKzI4LDMwIEBACiAKICNpbmNsdWRlICJZYXJyRmxhZ3MuaCIK
ICNpbmNsdWRlICJZYXJyUGFyc2VyLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgWWFyciB7CiAKIGNsYXNzIFN5bnRheENoZWNrZXIgewog
cHVibGljOgotICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkge30KLSAgICB2b2lkIGFzc2VydGlvbkVP
TCgpIHt9Ci0gICAgdm9pZCBhc3NlcnRpb25Xb3JkQm91bmRhcnkoYm9vbCkge30KLSAgICB2b2lk
IGF0b21QYXR0ZXJuQ2hhcmFjdGVyKFVDaGFyMzIpIHt9Ci0gICAgdm9pZCBhdG9tQnVpbHRJbkNo
YXJhY3RlckNsYXNzKEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lELCBib29sKSB7fQotICAgIHZvaWQg
YXRvbUNoYXJhY3RlckNsYXNzQmVnaW4oYm9vbCA9IGZhbHNlKSB7fQotICAgIHZvaWQgYXRvbUNo
YXJhY3RlckNsYXNzQXRvbShVQ2hhcikge30KLSAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc1Jh
bmdlKFVDaGFyLCBVQ2hhcikge30KLSAgICB2b2lkIGF0b21DaGFyYWN0ZXJDbGFzc0J1aWx0SW4o
QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQsIGJvb2wpIHt9Ci0gICAgdm9pZCBhdG9tQ2hhcmFjdGVy
Q2xhc3NFbmQoKSB7fQotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJv
b2wgPSB0cnVlLCBPcHRpb25hbDxTdHJpbmc+ID0gV1RGOjpudWxsb3B0KSB7fQotICAgIHZvaWQg
YXRvbVBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbihib29sID0gZmFsc2UpIHt9Ci0gICAgdm9p
ZCBhdG9tUGFyZW50aGVzZXNFbmQoKSB7fQotICAgIHZvaWQgYXRvbUJhY2tSZWZlcmVuY2UodW5z
aWduZWQpIHt9Ci0gICAgdm9pZCBhdG9tTmFtZWRCYWNrUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYp
IHt9Ci0gICAgdm9pZCBhdG9tTmFtZWRGb3J3YXJkUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYpIHt9
Ci0gICAgdm9pZCBxdWFudGlmeUF0b20odW5zaWduZWQsIHVuc2lnbmVkLCBib29sKSB7fQotICAg
IHZvaWQgZGlzanVuY3Rpb24oKSB7fQotICAgIHZvaWQgcmVzZXRGb3JSZXBhcnNpbmcoKSB7fQor
ICAgIHZvaWQgYXNzZXJ0aW9uQk9MKCkgeyB9CisgICAgdm9pZCBhc3NlcnRpb25FT0woKSB7IH0K
KyAgICB2b2lkIGFzc2VydGlvbldvcmRCb3VuZGFyeShib29sKSB7IH0KKyAgICB2b2lkIGF0b21Q
YXR0ZXJuQ2hhcmFjdGVyKFVDaGFyMzIpIHsgfQorICAgIHZvaWQgYXRvbUJ1aWx0SW5DaGFyYWN0
ZXJDbGFzcyhCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkgeyB9CisgICAgdm9pZCBhdG9t
Q2hhcmFjdGVyQ2xhc3NCZWdpbihib29sID0gZmFsc2UpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJh
Y3RlckNsYXNzQXRvbShVQ2hhcikgeyB9CisgICAgdm9pZCBhdG9tQ2hhcmFjdGVyQ2xhc3NSYW5n
ZShVQ2hhciwgVUNoYXIpIHsgfQorICAgIHZvaWQgYXRvbUNoYXJhY3RlckNsYXNzQnVpbHRJbihC
dWlsdEluQ2hhcmFjdGVyQ2xhc3NJRCwgYm9vbCkgeyB9CisgICAgdm9pZCBhdG9tQ2hhcmFjdGVy
Q2xhc3NFbmQoKSB7IH0KKyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbihi
b29sID0gdHJ1ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0KSB7IH0KKyAg
ICB2b2lkIGF0b21QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4oYm9vbCA9IGZhbHNlKSB7IH0K
KyAgICB2b2lkIGF0b21QYXJlbnRoZXNlc0VuZCgpIHsgfQorICAgIHZvaWQgYXRvbUJhY2tSZWZl
cmVuY2UodW5zaWduZWQpIHsgfQorICAgIHZvaWQgYXRvbU5hbWVkQmFja1JlZmVyZW5jZShjb25z
dCBTdHJpbmcmKSB7IH0KKyAgICB2b2lkIGF0b21OYW1lZEZvcndhcmRSZWZlcmVuY2UoY29uc3Qg
U3RyaW5nJikgeyB9CisgICAgdm9pZCBxdWFudGlmeUF0b20odW5zaWduZWQsIHVuc2lnbmVkLCBi
b29sKSB7IH0KKyAgICB2b2lkIGRpc2p1bmN0aW9uKCkgeyB9CisgICAgdm9pZCByZXNldEZvclJl
cGFyc2luZygpIHsgfQogfTsKIAogRXJyb3JDb2RlIGNoZWNrU3ludGF4KGNvbnN0IFN0cmluZyYg
cGF0dGVybiwgY29uc3QgU3RyaW5nJiBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJVbmljb2RlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJyVW5pY29kZVByb3BlcnRpZXMuY3BwCmluZGV4IDMyMWU5OGY4MjgxZWM4
MDc1ODdlMmNiNWQzMTg5YjYzM2M2ZWQyMGUuLjAwYjhhYmQyY2I4OTBmZGI2NGQ3N2MxOWYwM2Rh
YjZhZjJhOGQ5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJV
bmljb2RlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clVuaWNvZGVQcm9wZXJ0aWVzLmNwcApAQCAtODQsNyArODQsNyBAQCBPcHRpb25hbDxCdWlsdElu
Q2hhcmFjdGVyQ2xhc3NJRD4gdW5pY29kZU1hdGNoUHJvcGVydHlWYWx1ZShXVEY6OlN0cmluZyB1
bmljb2RlUAogICAgICAgICBwcm9wZXJ0eUluZGV4ID0gZ2VuZXJhbENhdGVnb3J5SGFzaFRhYmxl
LmVudHJ5KHVuaWNvZGVQcm9wZXJ0eVZhbHVlKTsKIAogICAgIGlmIChwcm9wZXJ0eUluZGV4ID09
IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIE9wdGlvbmFsPEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihz
dGF0aWNfY2FzdDxCdWlsdEluQ2hhcmFjdGVyQ2xhc3NJRD4oc3RhdGljX2Nhc3Q8aW50PihCdWls
dEluQ2hhcmFjdGVyQ2xhc3NJRDo6QmFzZVVuaWNvZGVQcm9wZXJ0eUlEKSArIHByb3BlcnR5SW5k
ZXgpKTsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNz
SUQ+IHVuaWNvZGVNYXRjaFByb3BlcnR5KFdURjo6U3RyaW5nIHVuaWNvZGVQcm9wZXIKICAgICAg
ICAgcHJvcGVydHlJbmRleCA9IGdlbmVyYWxDYXRlZ29yeUhhc2hUYWJsZS5lbnRyeSh1bmljb2Rl
UHJvcGVydHlWYWx1ZSk7CiAgICAgCiAgICAgaWYgKHByb3BlcnR5SW5kZXggPT0gLTEpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gT3B0aW9uYWw8QnVpbHRJbkNoYXJhY3RlckNsYXNzSUQ+KHN0YXRpY19jYXN0
PEJ1aWx0SW5DaGFyYWN0ZXJDbGFzc0lEPihzdGF0aWNfY2FzdDxpbnQ+KEJ1aWx0SW5DaGFyYWN0
ZXJDbGFzc0lEOjpCYXNlVW5pY29kZVByb3BlcnR5SUQpICsgcHJvcGVydHlJbmRleCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYWEzYjc4M2U2MmQ1MmUyODVhMDMwZDkx
Zjc2ZDYyOGRkYmZkNDM1Zi4uNjgwYWFlYzk0YWFjNDg5YTRkZDQzMmM4N2I4ODI3MDRiODliNjI1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZENvcGllci5oCkBAIC0xNTksNyArMTU5LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFs
c2UsIE9wdGlvbmFsPFQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIE9wdGlv
bmFsPFQ+IGNvcHkoVSYmIHNvdXJjZSkKICAgICB7CiAgICAgICAgIGlmICghc291cmNlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiBDcm9zc1RocmVhZENvcGllcjxUPjo6Y29weShzdGQ6OmZv
cndhcmQ8VT4oc291cmNlKS52YWx1ZSgpKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRGF0ZU1hdGguY3BwIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCmluZGV4
IDFlMTI4ZmI5ZjIwYjUwYjY4NzRhODg2NTY5MDdiYjRjMDU5YmMyMjkuLjBmZjhkZTNiNmYwZjE3
MmY3MDczZTFkMGIyZjFkYTM4NDY1NWZlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Rh
dGVNYXRoLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTgxNyw3ICs4
MTcsNyBAQCBkb3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25z
dCBjaGFyKiBkYXRlU3RyaW5nLCBib29sJiBpc0xvYwogICAgICAgICAgICAgaWYgKCpuZXdQb3NT
dHIgIT0gJzonKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwogICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHllYXI7IHRo
ZSBudW1iZXIgd2FzIHRoZSBob3VyLgotICAgICAgICAgICAgeWVhciA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHllYXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBpbiB0aGUgbm9ybWFsIGNhc2UgKHdlIHBhcnNlZCB0aGUgeWVhciksIGFkdmFu
Y2UgdG8gdGhlIG5leHQgbnVtYmVyCiAgICAgICAgICAgICBkYXRlU3RyaW5nID0gKytuZXdQb3NT
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDI0NzBlNDg1OWZmN2U0ODYwMjlkN2M5NTMxMTMw
OTFkOWQ1NTk1YTguLjQ4MzFiMDQ3ZDU4OTk5YmU3NmJhOTUwN2U0ZDA1MDVlMjEzZWQzYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+
IGZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAg
ICAgYXV0byBzaXplID0gc3RkOjpmaWxlc3lzdGVtOjpmaWxlX3NpemUodG9TdGRGaWxlU3lzdGVt
UGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApA
QCAtNjA5LDcgKzYwOSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29u
c3QgU3RyaW5nJiBwYXRoKQogICAgIHN0ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBhdXRvIHNwYWNl
SW5mbyA9IHN0ZDo6ZmlsZXN5c3RlbTo6c3BhY2UodG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwg
ZWMpOwogICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc3BhY2VJbmZvLmF2YWlsYWJsZTsKIH0K
IApAQCAtNjQ1LDcgKzY0NSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXJkTGlua0NvdW50KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBzdGQ6OmVycm9yX2NvZGUgZWM7CiAgICAgdWludDY0
X3QgbGlua0NvdW50ID0gc3RkOjpmaWxlc3lzdGVtOjpoYXJkX2xpbmtfY291bnQodG9TdGRGaWxl
U3lzdGVtUGF0aChwYXRoKSwgZWMpOwotICAgIHJldHVybiBlYyA/IFdURjo6bnVsbG9wdCA6IG1h
a2VPcHRpb25hbChsaW5rQ291bnQpOworICAgIHJldHVybiBlYyA/IHN0ZDo6bnVsbG9wdCA6IHN0
ZDo6bWFrZV9vcHRpb25hbChsaW5rQ291bnQpOwogfQogCiBib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTY2MCw3ICs2NjAsNyBAQCBPcHRpb25hbDxX
YWxsVGltZT4gZmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHN0
ZDo6ZXJyb3JfY29kZSBlYzsKICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBzdGQ6OmZpbGVz
eXN0ZW06Omxhc3Rfd3JpdGVfdGltZSh0b1N0ZEZpbGVTeXN0ZW1QYXRoKHBhdGgpLCBlYyk7CiAg
ICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB0b1dhbGxUaW1lKG1vZGlmaWNhdGlvblRpbWUpOwog
fQogCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEZpbGVUeXBlPiBmaWxlVHlw
ZVBvdGVudGlhbGx5Rm9sbG93aW5nU3ltTGlua3MoY29uc3QgU3RyaW5nJiBwYXQKICAgICBzdGQ6
OmVycm9yX2NvZGUgZWM7CiAgICAgYXV0byBzdGF0dXMgPSBzaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzID09IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6OlllcyA/IHN0ZDo6ZmlsZXN5c3RlbTo6
c3RhdHVzKHRvU3RkRmlsZVN5c3RlbVBhdGgocGF0aCksIGVjKSA6IHN0ZDo6ZmlsZXN5c3RlbTo6
c3ltbGlua19zdGF0dXModG9TdGRGaWxlU3lzdGVtUGF0aChwYXRoKSwgZWMpOwogICAgIGlmIChl
YykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBzd2l0Y2ggKHN0YXR1cy50eXBlKCkpIHsKICAgICBjYXNlIHN0ZDo6ZmlsZXN5
c3RlbTo6ZmlsZV90eXBlOjpkaXJlY3Rvcnk6CiAgICAgICAgIHJldHVybiBGaWxlVHlwZTo6RGly
ZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSlNPTlZhbHVlcy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAppbmRleCAzZDI1NmJlZjJkYTkxMTQ4MzI5YTUwM2Fm
MmI0YjY3N2ViNTIxOWNjLi5lYzllNTM0MWIzYmFkYTEzN2UzMGExN2ExNGYxNWZhN2ZlZDc5ZGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9KU09OVmFsdWVzLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9KU09OVmFsdWVzLmNwcApAQCAtNTY5LDIxICs1NjksMjEgQEAgU3RyaW5nIFZhbHVl
Ojp0b0pTT05TdHJpbmcoKSBjb25zdAogT3B0aW9uYWw8Ym9vbD4gVmFsdWU6OmFzQm9vbGVhbigp
IGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBUeXBlOjpCb29sZWFuKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBtX3ZhbHVlLmJvb2xlYW47CiB9CiAKIE9wdGlvbmFsPGRvdWJsZT4gVmFsdWU6OmFzRG91Ymxl
KCkgY29uc3QKIHsKICAgICBpZiAodHlwZSgpICE9IFR5cGU6OkRvdWJsZSAmJiB0eXBlKCkgIT0g
VHlwZTo6SW50ZWdlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbV92YWx1ZS5udW1iZXI7CiB9CiAKIE9wdGlv
bmFsPGludD4gVmFsdWU6OmFzSW50ZWdlcigpIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUoKSAhPSBU
eXBlOjpEb3VibGUgJiYgdHlwZSgpICE9IFR5cGU6OkludGVnZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4obV92YWx1ZS5udW1iZXIpOwogfQogCkBAIC02NTIsNyArNjUyLDcgQEAg
T3B0aW9uYWw8Ym9vbD4gT2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZSA9IGdldFZhbHVlKG5hbWUpOwogICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHZhbHVlLT5hc0Jvb2xlYW4oKTsKIH0KIApAQCAtNjYwLDcgKzY2
MCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gT2JqZWN0QmFzZTo6Z2V0RG91YmxlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKIHsKICAgICBhdXRvIHZhbHVlID0gZ2V0VmFsdWUobmFtZSk7CiAgICAg
aWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdmFsdWUtPmFzRG91YmxlKCk7CiB9CiAKQEAgLTY2
OCw3ICs2NjgsNyBAQCBPcHRpb25hbDxpbnQ+IE9iamVjdEJhc2U6OmdldEludGVnZXIoY29uc3Qg
U3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIGF1dG8gdmFsdWUgPSBnZXRWYWx1ZShuYW1lKTsK
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB2YWx1ZS0+YXNJbnRlZ2VyKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oIGIvU291cmNlL1dURi93
dGYvTG9nZ2VySGVscGVyLmgKaW5kZXggNTQyYzIzNGZhZmZmNTE4ZmRmYjViZGNhODhkMzkzZmRm
N2JiNDEzZi4uNWM4MmZlNmJkOWY2MTZiYTZjZGVkZDYzYTE2YmUxOTA2Yzk1MDcyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKKysrIGIvU291cmNlL1dURi93dGYv
TG9nZ2VySGVscGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIH0KICNlbHNlIC8v
IFJFTEVBU0VfTE9HX0RJU0FCTEVECiAKLSNkZWZpbmUgTE9HSURFTlRJRklFUiAoV1RGOjpudWxs
b3B0KQorI2RlZmluZSBMT0dJREVOVElGSUVSIChzdGQ6Om51bGxvcHQpCiAKICNkZWZpbmUgQUxX
QVlTX0xPRyhjaGFubmVsTmFtZSwgLi4uKSAgKFVOVVNFRF9QQVJBTShjaGFubmVsTmFtZSkpCiAj
ZGVmaW5lIEVSUk9SX0xPRyhjaGFubmVsTmFtZSwgLi4uKSAgIChVTlVTRURfUEFSQU0oY2hhbm5l
bE5hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaCBiL1NvdXJjZS9X
VEYvd3RmL01hcmthYmxlLmgKaW5kZXggODg1YzA1ZWIwNzRhNmVjZTE0YWMzM2VjYjg2ZmQ1MjVk
YTRlNzhkNi4uYzM5ZGQzNjZlZjc4OGU0NDRmZTY0NjY4Nzg4NjhmZWQ5ZTcyZTg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXJr
YWJsZS5oCkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3ZhbHVlKFRyYWl0
czo6ZW1wdHlWYWx1ZSgpKQogICAgIHsgfQogCi0gICAgY29uc3RleHByIE1hcmthYmxlKFdURjo6
bnVsbG9wdF90KQorICAgIGNvbnN0ZXhwciBNYXJrYWJsZShzdGQ6Om51bGxvcHRfdCkKICAgICAg
ICAgOiBNYXJrYWJsZSgpCiAgICAgeyB9CiAKQEAgLTEzMiwxNCArMTMyLDE0IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIGlmIChib29sKCp0aGlzKSkKICAgICAgICAgICAgIHJldHVybiBXVEZN
b3ZlKG1fdmFsdWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIG9wZXJhdG9yIE9wdGlvbmFsPFQ+KCkgY29u
c3QmCiAgICAgewogICAgICAgICBpZiAoYm9vbCgqdGhpcykpCiAgICAgICAgICAgICByZXR1cm4g
bV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxUPiBhc09wdGlvbmFsKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDFmODZiOGQzOTc5
MTI1ODVjY2Y1MDY2N2YyMWRiMmYyMzBhZjkyMjguLjllMDg4MjRiZTU1ODM2Nzk2NTkwMDEzNTBh
YjQyN2YwMTMzNzYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNw
cApAQCAtMTE2LDcgKzExNiw3IEBAIE9wdGlvbmFsPHNpemVfdD4gTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjp0aHJlc2hvbGRGb3JNZW1vcnlLaWxsKCkKICAgICBjYXNlIFdlYnNhbVByb2Nlc3NTdGF0
ZTo6QWN0aXZlOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgc2l6ZV90IHRocmVzaG9s
ZEZvclBvbGljeShNZW1vcnlVc2FnZVBvbGljeSBwb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmgK
aW5kZXggMWEzZTg2ZjBhYWFlZmUzM2E4MmRhMGE2MzFiMTI3NDdiY2M1YmRiNC4uNTQ0YWE0Nzdj
MDI1ZmI0MTQ1ZjJlNjZiMDFjZjUwYTc4OTFmMDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvTW9ub3RvbmljVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01vbm90b25pY1RpbWUuaApA
QCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0aW1l
OwogICAgICAgICBkZWNvZGVyID4+IHRpbWU7CiAgICAgICAgIGlmICghdGltZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMoKnRpbWUpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oIGIv
U291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IDdkODg4OTgxNjIwYTg2ZTU5
YzViMzU3NTgxOWZjZjFkMWE0MzA0YTMuLmIwOGYwNTQ4NDU1YTY0ZTNlZDZmYjRlOGE4ODBmYmMy
MmExNDVlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgIWlzVmFs
aWRJZGVudGlmaWVyKCppZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gT2Jq
ZWN0SWRlbnRpZmllciB7ICppZGVudGlmaWVyIH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCmluZGV4
IDM2YmNjMDRkNzVmZGY0MjVhYjllYjlmOWVkMzE2ZTljNzIxMWQ4MzYuLjc3ZTYyODliYzUwNjNk
NDczYWRmN2JhOTkyNTVlNjZmNTQ3OTVkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09w
dGlvblNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0yMDgsNyArMjA4
LDcgQEAgcHVibGljOgogCiAgICAgY29uc3RleHByIE9wdGlvbmFsPEU+IHRvU2luZ2xlVmFsdWUo
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/IE9w
dGlvbmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gaGFzRXhhY3RseU9uZUJpdFNldCgpID8gT3B0aW9uYWw8RT4oc3RhdGljX2Nh
c3Q8RT4obV9zdG9yYWdlKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29uc3RleHBy
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25hbC5oCmluZGV4IGU5NThhYzM2OTc5NGQ2MmZiMGM3YjJiZWJlZjliOTMzNDdmNjhkMjYuLjc5
ZGU5MjY2NjcwZWEzZGJkZWVmNjJjMDgwZWYxMzVkZTc3OTIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL09wdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaApAQCAt
MjUsMjMgKzI1LDYgQEAKIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1
c2luZyBPcHRpb25hbCA9IHN0ZDo6b3B0aW9uYWw8VD47Ci1jb25zdGV4cHIgYXV0byBudWxsb3B0
ID0gc3RkOjpudWxsb3B0OwotdXNpbmcgbnVsbG9wdF90ID0gc3RkOjpudWxsb3B0X3Q7Ci0KLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50VHlwZXM+IGNvbnN0ZXhwciBz
dGQ6Om9wdGlvbmFsPHN0ZDo6ZGVjYXlfdDxUPj4gbWFrZU9wdGlvbmFsKFQmJiB2YWx1ZSkKLXsK
LSAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsPHN0ZDo6ZGVjYXlfdDxUPj4oc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50VHlwZXM+IGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPFQ+IG1ha2VPcHRpb25hbChBcmd1
bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKQotewotICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9u
YWw8VD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVz
PiBjb25zdGV4cHIgc3RkOjpvcHRpb25hbDxUPiBtYWtlT3B0aW9uYWwoc3RkOjppbml0aWFsaXpl
cl9saXN0PFU+IGxpc3QsIEFyZ3VtZW50VHlwZXMmJi4uLiBhcmd1bWVudHMpCi17Ci0gICAgcmV0
dXJuIHN0ZDo6bWFrZV9vcHRpb25hbDxUPihsaXN0LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRUeXBl
cz4oYXJndW1lbnRzKS4uLik7Ci19CiAKIC8vIEZJWE1FOiBXZSBwcm9iYWJseSBkb24ndCBuZWVk
IHRoaXM7IGl0J3Mgb25seSB1c2VkIGluIDUgcGxhY2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3B0
aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5
cGUgb3B0aW9uYWwsIENhbGxiYWNrIGNhbGxiYWNrKSAtPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6
OnZhbHVlX3R5cGUKQEAgLTUyLDkgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxU
eXBlLCBjbGFzcyBDYWxsYmFjaz4gYXV0byB2YWx1ZU9yQ29tcHV0ZShPcHRpb25hbFR5cGUKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9wdGlvbmFsOwotdXNpbmcgV1RGOjptYWtl
T3B0aW9uYWw7CiB1c2luZyBXVEY6OnZhbHVlT3JDb21wdXRlOwogCi0vLyBGSVhNRTogVGhlc2Ug
bWFjcm9zIGFyZSBhIHdvcmthcm91bmQgdG8gYWxsb3cgdXMgdG8gdXNlIHN0ZDo6b3B0aW9uYWwg
d2l0aG91dCBhIGdsb2JhbCByZXBsYWNlOyB0aGV5IGNhbiBiZSByZW1vdmVkIGFmdGVyIHNhaWQg
Z2xvYmFsIHJlcGxhY2UuCisvLyBGSVhNRTogVGhpcyBtYWNybyBpcyBhIHdvcmthcm91bmQgdG8g
YWxsb3cgdXMgdG8gdXNlIHN0ZDo6b3B0aW9uYWwgd2l0aG91dCBhIGdsb2JhbCByZXBsYWNlOyBp
dCBjYW4gYmUgcmVtb3ZlZCBhZnRlciB0aGUgZ2xvYmFsIHJlcGxhY2UuCiAjZGVmaW5lIGhhc1Zh
bHVlIGhhc192YWx1ZQotI2RlZmluZSB2YWx1ZU9yIHZhbHVlX29yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggNTNi
Y2JjNjU5OWRjNTMwYzg3Zjg1NzZjNmE5ZGFkY2IzYTA2MjEzNi4uODVmMDM3MjgyNTk3NjA3Mjdl
OWE0MmVkMTRiZjk1NzY1Njk3OGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25k
cy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjM0LDcgKzIzNCw3IEBAIHB1
YmxpYzoKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBzZWNvbmRzOwogICAgICAgICBkZWNvZGVy
ID4+IHNlY29uZHM7CiAgICAgICAgIGlmICghc2Vjb25kcykKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gU2Vjb25kcygqc2Vjb25kcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaApp
bmRleCBmMDdlYTI2ZTZlODM5MzI3Y2I3ZWViMzA0OTVmYWZhN2ZlNWRhOTUwLi5mOTI4MTJiYTky
NDY3MmU0YmI5OGUxZTJjYTEwY2Y5NDkzNjljNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgK
QEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheVR5cGU+IHRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYXV0byBTb3J0ZWRBcgogICAgICAgICBpZiBj
b25zdGV4cHIgKEhhc1BhcnNlTWVtYmVyPEtleVR5cGU+KQogICAgICAgICAgICAgcmV0dXJuIEtl
eVR5cGU6OnBhcnNlKGtleSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBtYWtl
T3B0aW9uYWwoa2V5KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoa2V5
KTsKICAgICB9KCk7CiAgICAgaWYgKCFwYXJzZWRLZXkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gdGVtcGxh
dGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGlubGluZSBib29sIFNvcnRlZEFyCiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoSGFzUGFyc2VNZW1iZXI8S2V5VHlwZT4pCiAgICAgICAgICAgICByZXR1cm4g
S2V5VHlwZTo6cGFyc2Uoa2V5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG1h
a2VPcHRpb25hbChrZXkpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChr
ZXkpOwogICAgIH0oKTsKICAgICBpZiAoIXBhcnNlZEtleSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzQ0LDEyICszNDQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+
IHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+IGNvbnN0ZXhwciBTdG9yYWdlSW50ZWcKIHRlbXBsYXRl
PHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBhdXRvIFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9y
YWdlSW50ZWdlcj46OnBhcnNlKFN0cmluZ1ZpZXcgc3RyaW5nKSAtPiBPcHRpb25hbDxQYWNrZWRB
U0NJSUxvd2VyQ29kZXM+CiB7CiAgICAgaWYgKHN0cmluZy5sZW5ndGgoKSA+IHNpemVvZihTdG9y
YWdlSW50ZWdlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgU3RvcmFnZUludGVnZXIgcmVzdWx0ID0gMDsKICAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBzdHJpbmcubGVuZ3RoKCk7ICsraW5kZXgpIHsK
ICAgICAgICAgVUNoYXIgY29kZSA9IHN0cmluZ1tpbmRleF07CiAgICAgICAgIGlmICghaXNBU0NJ
SShjb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXN1bHQgfD0gc3RhdGljX2Nhc3Q8U3RvcmFn
ZUludGVnZXI+KHRvQVNDSUlMb3dlcihjb2RlKSkgPDwgKChzaXplb2YoU3RvcmFnZUludGVnZXIp
IC0gaW5kZXggLSAxKSAqIDgpOwogICAgIH0KICAgICByZXR1cm4gUGFja2VkQVNDSUlMb3dlckNv
ZGVzKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1RyYWNlLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwCmluZGV4IDdiZjA5ODg3NDcxZTk5ZWM0MmI0
MzBlZGM2NzIzNjA0NzIxZDQ3MzEuLmZmNjFlNjZiMzQzZmFiZGM3YTdiMTk3ZDc5MzFjYzQ2Yjcw
MGMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1N0YWNrVHJhY2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYXV0byBTdGFj
a1RyYWNlOjpkZW1hbmdsZSh2b2lkKiBwYykgLT4gT3B0aW9uYWw8RGVtYW5nbGVFbnRyeT4KICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBjKTsKICNlbmRpZgotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTdGFja1RyYWNlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIGluZGVudFN0cmluZykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwCmluZGV4IGFmMDhjYmU3YjVkODkzODgwN2E3ZTEwOTJiZmZmOTI3ZjBhMjhhYWYu
LjMxN2E0NmZjMjA0ZTk3NGRhYmRiNTAzZTgyMzJhM2E0YmUyMDI4ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUo
VGhyZWFkVHlwZSB0aHJlYWRUeXBlKQogICAgIHJldHVybiAxICogTUI7CiAjZWxzZQogICAgIC8v
IFVzZSB0aGUgcGxhdGZvcm0ncyBkZWZhdWx0IHN0YWNrIHNpemUKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXgg
ZWUzY2VkNGJmNjFiZWMzZjIwZTQ5NThlZDQ1NmE4NmUxNWMzZGI3OC4uNzU4MTM3ODE0NTZlOTEz
ZmJkZjQzYzdlOGU4ZDc4ODY5OWFjMWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJM
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgU3Ry
aW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogCiBPcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wb3J0TGVuZ3RoID8gcGFyc2VJbnRlZ2VyPHVpbnQx
Nl90PihTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcobV9ob3N0RW5kICsgMSwgbV9wb3J0
TGVuZ3RoIC0gMSkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBtX3BvcnRMZW5ndGggPyBw
YXJzZUludGVnZXI8dWludDE2X3Q+KFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX2hv
c3RFbmQgKyAxLCBtX3BvcnRMZW5ndGggLSAxKSkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFN0cmlu
ZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKQEAgLTE1OSwxMSArMTU5LDExIEBAIFN0cmluZyBV
Ukw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25zdAogc3RhdGljIE9wdGlvbmFsPExDaGFyPiBk
ZWNvZGVFc2NhcGVTZXF1ZW5jZShTdHJpbmdWaWV3IGlucHV0LCB1bnNpZ25lZCBpbmRleCwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIGlmIChpbmRleCArIDMgPiBsZW5ndGggfHwgaW5wdXRbaW5k
ZXhdICE9ICclJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGRpZ2l0MSA9IGlucHV0W2luZGV4ICsgMV07CiAgICAg
YXV0byBkaWdpdDIgPSBpbnB1dFtpbmRleCArIDJdOwogICAgIGlmICghaXNBU0NJSUhleERpZ2l0
KGRpZ2l0MSkgfHwgIWlzQVNDSUlIZXhEaWdpdChkaWdpdDIpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB0b0FT
Q0lJSGV4VmFsdWUoZGlnaXQxLCBkaWdpdDIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCmluZGV4IGIyMjU5MzVlYmQ5NGY3MjY2
ZTVlMzZjOTI3YmM2ZjkxNmQwZWI0ZDAuLjkwZTc1ODY3YWNmOWNkM2MyMWIxNzQwM2ViM2ZiYzAw
MTBiMzU1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCkBAIC0zMDIsNyArMzAyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rl
cj4gT3B0aW9uYWw8VVJMPiBVUkw6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwogICAgIGlmICghc3Ry
aW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHJldHVybiBVUkwoVVJMKCksIFdURk1vdmUoKnN0cmluZykpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1VSTEhlbHBlcnMuY3BwCmluZGV4IGNhNDg2ZTE3NDBhNGNiNDI4YWM2MjdmNjJmN2ZiMzA0ZWNj
ZDlhM2YuLmNiNTk0NGE4Yzc4OTcyZDBjNjk0MjNjY2U4NThkZjU2ZTEzMTZjMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VS
TEhlbHBlcnMuY3BwCkBAIC01ODQsNyArNTg0LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBtYXBIb3N0
TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lLCBVUkxEZWNvZGVGdW5jdGlvbiBkZWNvZGVGdW4K
ICAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQgPSAoZGVjb2RlRnVuY3Rpb24gPyB1
aWRuYV9uYW1lVG9BU0NJSSA6IHVpZG5hX25hbWVUb1VuaWNvZGUpKCZVUkxQYXJzZXI6OmludGVy
bmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBzb3VyY2VCdWZmZXIuZGF0YSgpLCBsZW5n
dGgsIGRlc3RpbmF0aW9uQnVmZmVyLCBob3N0TmFtZUJ1ZmZlckxlbmd0aCwgJnByb2Nlc3NpbmdE
ZXRhaWxzLCAmdWVycm9yKTsKICAgICBpbnQgYWxsb3dlZEVycm9ycyA9IGRlY29kZUZ1bmN0aW9u
ID8gMCA6IFVJRE5BX0VSUk9SX0VNUFRZX0xBQkVMIHwgVUlETkFfRVJST1JfTEVBRElOR19IWVBI
RU4gfCBVSUROQV9FUlJPUl9UUkFJTElOR19IWVBIRU4gfCBVSUROQV9FUlJPUl9IWVBIRU5fM180
OwogICAgIGlmIChsZW5ndGggJiYgKFVfRkFJTFVSRSh1ZXJyb3IpIHx8IHByb2Nlc3NpbmdEZXRh
aWxzLmVycm9ycyAmIH5hbGxvd2VkRXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIG51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKG51bUNoYXJhY3RlcnND
b252ZXJ0ZWQgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obGVuZ3RoKSAmJiAhbWVtY21wKHNvdXJj
ZUJ1ZmZlci5kYXRhKCksIGRlc3RpbmF0aW9uQnVmZmVyLCBsZW5ndGggKiBzaXplb2YoVUNoYXIp
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggNGVkM2Y0
NTBkNTc2OTI1ZjY0MjdiNDdjZjI4ODg1Nzc4OGIyYmFmMC4uNDZlNDUzOWM1ZGJkMzExODBjN2Yy
MDJjZGFjODEyN2ZmZWJkYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC01ODQsMTkgKzU4NCwx
OSBAQCBPcHRpb25hbDx1aW50MTZfdD4gVVJMUGFyc2VyOjpkZWZhdWx0UG9ydEZvclByb3RvY29s
KFN0cmluZ1ZpZXcgc2NoZW1lKQogICAgIAogICAgIGF1dG8gbGVuZ3RoID0gc2NoZW1lLmxlbmd0
aCgpOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN3aXRjaCAoc2NoZW1lWzBdKSB7CiAgICAg
Y2FzZSAndyc6CiAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAgIGNhc2UgMjoKICAg
ICAgICAgICAgIGlmIChzY2hlbWVbMV0gPT0gJ3MnKQogICAgICAgICAgICAgICAgIHJldHVybiB3
c1BvcnQ7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgaWYgKHNjaGVt
ZVsxXSA9PSAncycKICAgICAgICAgICAgICAgICAmJiBzY2hlbWVbMl0gPT0gJ3MnKQogICAgICAg
ICAgICAgICAgIHJldHVybiB3c3NQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTYwNywyNSArNjA3LDI1IEBA
IE9wdGlvbmFsPHVpbnQxNl90PiBVUkxQYXJzZXI6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nVmlldyBzY2hlbWUpCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwogICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGh0dHBQb3J0OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgIGlmIChz
Y2hlbWVbMV0gPT0gJ3QnCiAgICAgICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICd0JwogICAg
ICAgICAgICAgICAgICYmIHNjaGVtZVszXSA9PSAncCcKICAgICAgICAgICAgICAgICAmJiBzY2hl
bWVbNF0gPT0gJ3MnKQogICAgICAgICAgICAgICAgIHJldHVybiBodHRwc1BvcnQ7Ci0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgY2FzZSAnZic6
CiAgICAgICAgIGlmIChsZW5ndGggPT0gMwogICAgICAgICAgICAgJiYgc2NoZW1lWzFdID09ICd0
JwogICAgICAgICAgICAgJiYgc2NoZW1lWzJdID09ICdwJykKICAgICAgICAgICAgIHJldHVybiBm
dHBQb3J0OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC03MDEsMTUgKzcwMSwx
NSBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBTY2hlbWUgc2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1l
KQogT3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQogewogICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBo
YW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAn
LScgfHwgc2NoZW1lW2ldID09ICcuJykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKQEAgLTIyOTUs
MjQgKzIyOTUsMjQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIE9wdGlvbmFs
PHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2NihDb2RlUG9pbnRJ
dGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCiB7CiAgICAgaWYgKGl0ZXJhdG9yLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgdWludDMyX3QgcGllY2UgPSAwOwogICAgIGJvb2wgbGVhZGluZ1plcm9z
ID0gZmFsc2U7CiAgICAgc2l6ZV90IGRpZ2l0Q291bnQgPSAwOwogICAgIHdoaWxlICghaXRlcmF0
b3IuYXRFbmQoKSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqaXRlcmF0b3IpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgICsrZGlnaXRDb3VudDsKICAgICAgICAgaWYgKCFwaWVjZSAmJiAqaXRl
cmF0b3IgPT0gJzAnKSB7CiAgICAgICAgICAgICBpZiAobGVhZGluZ1plcm9zKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKCFwaWVjZSAmJiAqaXRlcmF0b3IgPT0gJzAnKQogICAgICAgICAgICAgbGVhZGlu
Z1plcm9zID0gdHJ1ZTsKICAgICAgICAgcGllY2UgPSBwaWVjZSAqIDEwICsgKml0ZXJhdG9yIC0g
JzAnOwogICAgICAgICBpZiAocGllY2UgPiAyNTUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYWR2YW5j
ZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRpb246Ok5vPihpdGVyYXRvcik7CiAg
ICAgICAgIGlmIChpdGVyYXRvci5hdEVuZCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzIw
LDcgKzIzMjAsNyBAQCBPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQaWVj
ZUluc2lkZUlQdjYoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGlmIChwaWVjZSAmJiBsZWFkaW5nWmVyb3MpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHBp
ZWNlOwogfQogCkBAIC0yMzMyLDE1ICsyMzMyLDE1IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2
NEFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYoQ29kZVBvaW50
CiAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gcGllY2UgPSBwYXJzZUlQdjRQaWVjZUlu
c2lkZUlQdjYoaXRlcmF0b3IpKQogICAgICAgICAgICAgYWRkcmVzcyA9IChhZGRyZXNzIDw8IDgp
ICsgcGllY2UudmFsdWUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChp
IDwgMykgewogICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5kKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgaWYgKCppdGVyYXRvciAhPSAnLicpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgYWR2YW5jZTxDaGFyYWN0ZXJUeXBlLCBSZXBvcnRTeW50YXhWaW9sYXRp
b246Ok5vPihpdGVyYXRvcik7CiAgICAgICAgIH0gZWxzZSBpZiAoIWl0ZXJhdG9yLmF0RW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgQVNTRVJUKGl0ZXJhdG9yLmF0RW5kKCkpOwogICAgIHJl
dHVybiBhZGRyZXNzOwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJ
UHY2QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENo
YXIKICAgICBjb25zdCBhdXRvIGhvc3RCZWdpbiA9IGM7CiAgICAgYWR2YW5jZShjLCBob3N0QmVn
aW4pOwogICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJUHY2QWRkcmVzcyBhZGRyZXNzID0g
e3swLCAwLCAwLCAwLCAwLCAwLCAwLCAwfX07CiAgICAgc2l6ZV90IHBpZWNlUG9pbnRlciA9IDA7
CkBAIC0yMzY0LDkgKzIzNjQsOSBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBV
UkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgIGlmICgq
YyA9PSAnOicpIHsKICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwogICAgICAgICBpZiAo
Yy5hdEVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICgqYyAhPSAnOicpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwogICAgICAgICArK3BpZWNlUG9pbnRlcjsK
ICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGllY2VQb2ludGVyOwpAQCAtMjM3NSwxMCArMjM3
NSwxMCBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNzPiBVUkxQYXJzZXI6OnBhcnNl
SVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgIAogICAgIHdoaWxlICghYy5hdEVu
ZCgpKSB7CiAgICAgICAgIGlmIChwaWVjZVBvaW50ZXIgPT0gOCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoKmMgPT0gJzonKSB7CiAgICAgICAgICAgICBpZiAoY29tcHJlc3NQb2ludGVyKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGFkdmFuY2UoYywgaG9zdEJlZ2luKTsKICAgICAg
ICAgICAgICsrcGllY2VQb2ludGVyOwogICAgICAgICAgICAgY29tcHJlc3NQb2ludGVyID0gcGll
Y2VQb2ludGVyOwpAQCAtMjM5MCw3ICsyMzkwLDcgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY2
QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjZIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXIK
ICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA2IHx8IChjb21wcmVzc1BvaW50ZXIgJiYgcGll
Y2VQb2ludGVyIDwgNikpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25hbDxJUHY0QWRkcmVzcz4g
aXB2NEFkZHJlc3MgPSBwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2NihjKSkgewogICAgICAgICAg
ICAgICAgIGlmIChjb21wcmVzc1BvaW50ZXIgJiYgcGllY2VQb2ludGVyID09IDUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RC
ZWdpbik7CiAgICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRk
cmVzcy52YWx1ZSgpID4+IDE2OwogICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVy
KytdID0gaXB2NEFkZHJlc3MudmFsdWUoKSAmIDB4RkZGRjsKQEAgLTI0MjIsNyArMjQyMiw3IEBA
IE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNlcjo6cGFyc2VJUHY2SG9z
dChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgICAgIGlmIChjLmF0RW5kKCkpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaWYgKHBpZWNlUG9pbnRlciA9PSA4IHx8ICpjICE9ICc6JykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBhZHZhbmNlKGMsIGhvc3RCZWdpbik7CiAgICAgICAgIGlmIChj
LmF0RW5kKCkpCiAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaG9zdEJlZ2luKTsKQEAgLTI0
MzEsNyArMjQzMSw3IEBAIE9wdGlvbmFsPFVSTFBhcnNlcjo6SVB2NkFkZHJlc3M+IFVSTFBhcnNl
cjo6cGFyc2VJUHY2SG9zdChDb2RlUG9pbnRJdGVyYXRvcjxDaGFyCiAgICAgfQogICAgIAogICAg
IGlmICghYy5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChjb21wcmVzc1BvaW50ZXIpIHsKICAg
ICAgICAgc2l6ZV90IHN3YXBzID0gcGllY2VQb2ludGVyIC0gY29tcHJlc3NQb2ludGVyLnZhbHVl
KCk7CkBAIC0yNDM5LDcgKzI0MzksNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNz
PiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcgogICAgICAg
ICB3aGlsZSAoc3dhcHMpCiAgICAgICAgICAgICBzdGQ6OnN3YXAoYWRkcmVzc1twaWVjZVBvaW50
ZXItLV0sIGFkZHJlc3NbY29tcHJlc3NQb2ludGVyLnZhbHVlKCkgKyBzd2Fwcy0tIC0gMV0pOwog
ICAgIH0gZWxzZSBpZiAocGllY2VQb2ludGVyICE9IDgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxzaXpl
X3Q+IHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoYWRk
cmVzcyk7CiAgICAgaWYgKHBvc3NpYmxlQ29tcHJlc3NQb2ludGVyKQpAQCAtMjU1OSw3ICsyNTU5
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8VVJMUGFyc2Vy
OjpMQ2hhckJ1ZmZlcj4gVVJMUGFyc2VyOjpkb20KICAgICAgICAgICAgIHN5bnRheFZpb2xhdGlv
bihpdGVyYXRvckZvclN5bnRheFZpb2xhdGlvblBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIGFz
Y2lpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIGJvb2wgVVJMUGFyc2VyOjpoYXNGb3JiaWRkZW5Ib3N0Q29kZVBvaW50KGNv
bnN0IFVSTFBhcnNlcjo6TENoYXJCdWZmZXImIGFzY2lpRG9tYWluKQpAQCAtMjc5MSw3ICsyNzkx
LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmll
dyBpbnB1dCkKIHsKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24p
OwogICAgIGlmICh1dGY4LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcGVyY2VudERlY29kZWQgPSBw
ZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPih1dGY4LmRhdGEoKSks
IHV0ZjgubGVuZ3RoKCkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52
YWxpZFNlcXVlbmNlcyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9DUFVUaW1lQ29jb2EuY3Bw
IGIvU291cmNlL1dURi93dGYvY29jb2EvQ1BVVGltZUNvY29hLmNwcAppbmRleCA5NjFmMGNmZmM2
OGIxY2FmMWE5NzcwNzA2YzRkMTYzNzJhYjNhNzA3Li5iZGY5Y2Y1MTg4NWFhZjM3MTNkMDBkYmVl
OWUxZGQ1NWI5OTdlMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9DUFVUaW1l
Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0NQVVRpbWVDb2NvYS5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgT3B0aW9uYWw8Q1BVVGltZT4gQ1BVVGltZTo6Z2V0KCkKICAgICBtYWNo
X21zZ190eXBlX251bWJlcl90IHRocmVhZEluZm9Db3VudCA9IFRBU0tfVEhSRUFEX1RJTUVTX0lO
Rk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNr
X3NlbGYoKSwgVEFTS19USFJFQURfVElNRVNfSU5GTywgcmVpbnRlcnByZXRfY2FzdDx0YXNrX2lu
Zm9fdD4oJnRocmVhZEluZm9EYXRhKSwgJnRocmVhZEluZm9Db3VudCk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQ2NF90IHVzZXJUaW1lID0gdGltZVZhbHVl
VG9NaWNyb3NlY29uZHModGhyZWFkSW5mb0RhdGEudXNlcl90aW1lKTsKICAgICBpbnQ2NF90IHN5
c3RlbVRpbWUgPSB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyh0aHJlYWRJbmZvRGF0YS5zeXN0ZW1f
dGltZSk7CkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgp
CiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCB0YXNrSW5mb0NvdW50ID0gVEFTS19CQVNJQ19J
TkZPX0NPVU5UOwogICAgIHJlc3VsdCA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNL
X0JBU0lDX0lORk8sIHJlaW50ZXJwcmV0X2Nhc3Q8dGFza19pbmZvX3Q+KCZ0YXNrSW5mb0RhdGEp
LCAmdGFza0luZm9Db3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICB1c2VyVGltZSArPSB0aW1lVmFsdWVUb01pY3Jvc2Vjb25kcyh0YXNrSW5mb0RhdGEudXNl
cl90aW1lKTsKICAgICBzeXN0ZW1UaW1lICs9IHRpbWVWYWx1ZVRvTWljcm9zZWNvbmRzKHRhc2tJ
bmZvRGF0YS5zeXN0ZW1fdGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9G
aWxlU3lzdGVtQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9GaWxlU3lzdGVtQ29jb2Eu
bW0KaW5kZXggODM3NWNmYzY5Njk1ZDcxZjY3NmFkY2Y2Y2U0YTMzODYzMjI4ZDdhMC4uMDcwYTFm
ZTlhZWU0OWE0NGU1MzE2NmJlMDJlNWY2YjQ2OWE2MjU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29h
L0ZpbGVTeXN0ZW1Db2NvYS5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIE9wdGlvbmFsPGJvb2w+IGFs
bG93c01hdGVyaWFsaXppbmdEYXRhbGVzc0ZpbGVzKFBvbGljeVNjb3BlIHNjb3BlKQogICAgIGlm
IChyZXQgPT0gSU9QT0xfTUFURVJJQUxJWkVfREFUQUxFU1NfRklMRVNfT0ZGKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgTE9HX0VSUk9SKCJGaWxlU3lzdGVtOjphbGxvd3NNYXRlcmlhbGl6
aW5nRGF0YWxlc3NGaWxlcygpOiBnZXRpb3BvbGljeV9ucCBjYWxsIGZhaWxlZCwgZXJybm86ICVk
IiwgZXJybm8pOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XVEYv
d3RmL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDQ2ZjA1N2EzZWM0
OTIxNDJhZDJlMzc3YThkMTJjNmRkNmNjZjc1OGEuLmI2ODczN2RhNmUyOTIzNWQ1MTI1MDgwMjEx
OWYyYjhmYzYzN2QzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL01lbW9yeVBy
ZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0xOTgsNyArMTk4LDcgQEAgT3B0aW9uYWw8TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIKICAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZP
X0NPVU5UOwogICAgIGtlcm5fcmV0dXJuX3QgZXJyID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxm
KCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190KSAmdm1JbmZvLCAmY291bnQpOwogICAgIGlm
IChlcnIgIT0gS0VSTl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE1lbW9yeVVzYWdlIHtzdGF0
aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5pbnRlcm5hbCksIHN0YXRpY19jYXN0PHNpemVfdD4odm1J
bmZvLnBoeXNfZm9vdHByaW50KX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCmluZGV4IDk4
NzdmYzdlYmI3YWY1OTRhZGJlZGM1NzUxMDQ1YjZkNmY2YjVlYzQuLmExNzk3MjAzNzkzMDZkMDky
NzU3OGI0MGRhMjQyMDNhNGEzMjBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29h
L1VSTENvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCkBAIC05
NSw3ICs5NSw3IEBAIFJldGFpblB0cjxpZD4gbWFrZU5TQXJyYXlFbGVtZW50KGNvbnN0IFVSTCYg
dmVjdG9yRWxlbWVudCkKIE9wdGlvbmFsPFVSTD4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgVVJM
KiwgaWQgYXJyYXlFbGVtZW50KQogewogICAgIGlmICghW2FycmF5RWxlbWVudCBpc0tpbmRPZkNs
YXNzOk5TVVJMLmNsYXNzXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IGFycmF5RWxlbWVudCB9IH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5UHJlc3N1cmVIYW5k
bGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01lbW9yeVByZXNzdXJlSGFu
ZGxlckdlbmVyaWMuY3BwCmluZGV4IGU3ZjMyYjhlOTQ4ZTQxMjc1YTM4ZjY3NTE2Y2M1N2VmNzdj
NmYwZTMuLjFhZWE0NmFhZWEyNjk2ZDAwYmNmYzJhOGE3NWRmMWM5NDI0MjdhZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWVtb3J5UHJlc3N1cmVIYW5kbGVyR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NZW1vcnlQcmVzc3VyZUhhbmRsZXJHZW5l
cmljLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVz
cG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3VzKQogCiBPcHRpb25hbDxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9DaGFzc2lz
VHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcAppbmRleCAxOGJl
Zjc3ZDRlZjZiNDcwN2MxMzhjOWY0YjZmM2FhYzUxMmI2ZTE4Li4yZGQ2NWY0NmI1YjA4Y2I5ODA4
YzA5MTNiMzY3MGQ2MDMwYzIzZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0No
YXNzaXNUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0NoYXNzaXNUeXBlLmNwcApA
QCAtMzksNyArMzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRNYWNoaW5l
SW5mb0NoYXNzaXNUeXBlKCkKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbWFj
aGluZS1pbmZvIiwgJmJ1ZmZlci5vdXRQdHIoKSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkg
ewogICAgICAgICBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19GSUxFX0VSUk9S
LCBHX0ZJTEVfRVJST1JfTk9FTlQpKQogICAgICAgICAgICAgZ193YXJuaW5nKCJDb3VsZCBub3Qg
b3BlbiAvZXRjL21hY2hpbmUtaW5mbzogJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgR1VuaXF1ZVB0cjxjaGFyKj4gc3BsaXQoZ19zdHJzcGxpdChidWZmZXIuZ2V0KCksICJc
biIsIC0xKSk7CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxDaGFzc2lzVHlwZT4g
cmVhZE1hY2hpbmVJbmZvQ2hhc3Npc1R5cGUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMg
T3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRETUlDaGFzc2lzVHlwZSgpCkBAIC05Myw3ICs5Myw3
IEBAIHN0YXRpYyBPcHRpb25hbDxDaGFzc2lzVHlwZT4gcmVhZERNSUNoYXNzaXNUeXBlKCkKICAg
ICB9IGVsc2UgaWYgKCFnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfRklMRV9FUlJPUiwg
R19GSUxFX0VSUk9SX05PRU5UKSkKICAgICAgICAgZ193YXJuaW5nKCJDb3VsZCBub3Qgb3BlbiAv
c3lzL2NsYXNzL2RtaS9pZC9jaGFzc2lzX3R5cGU6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBz
dGF0aWMgT3B0aW9uYWw8Q2hhc3Npc1R5cGU+IHJlYWRBQ1BJQ2hhc3Npc1R5cGUoKQpAQCAtMTIx
LDcgKzEyMSw3IEBAIHN0YXRpYyBPcHRpb25hbDxDaGFzc2lzVHlwZT4gcmVhZEFDUElDaGFzc2lz
VHlwZSgpCiAgICAgfSBlbHNlIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0ZJ
TEVfRVJST1IsIEdfRklMRV9FUlJPUl9OT0VOVCkpCiAgICAgICAgIGdfd2FybmluZygiQ291bGQg
bm90IG9wZW4gL3N5cy9maXJtd2FyZS9hY3BpL3BtX3Byb2ZpbGU6ICVzIiwgZXJyb3ItPm1lc3Nh
Z2UpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBDaGFzc2lzVHlwZSBjaGFzc2lzVHlwZSgpCkBAIC0xMzQsNyArMTM0LDcgQEAgQ2hh
c3Npc1R5cGUgY2hhc3Npc1R5cGUoKQogICAgICAgICAgICAgb3B0aW9uYWxDaGFzc2lzVHlwZSA9
IHJlYWRETUlDaGFzc2lzVHlwZSgpOwogICAgICAgICBpZiAoIW9wdGlvbmFsQ2hhc3Npc1R5cGUp
CiAgICAgICAgICAgICBvcHRpb25hbENoYXNzaXNUeXBlID0gcmVhZEFDUElDaGFzc2lzVHlwZSgp
OwotICAgICAgICBjaGFzc2lzVHlwZSA9IG9wdGlvbmFsQ2hhc3Npc1R5cGUudmFsdWVPcihDaGFz
c2lzVHlwZTo6RGVza3RvcCk7CisgICAgICAgIGNoYXNzaXNUeXBlID0gb3B0aW9uYWxDaGFzc2lz
VHlwZS52YWx1ZV9vcihDaGFzc2lzVHlwZTo6RGVza3RvcCk7CiAgICAgfSk7CiAKICAgICByZXR1
cm4gY2hhc3Npc1R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCmluZGV4
IGJkOTNmMGIzYTgyZTgzZWFhNmY1OTRmN2Y1NjExMGMxY2MyMjFkMjkuLjQzMDJmYTlmMWI0YmJh
YTlmM2U5OTczMmY1YjI4YzZjYjNmZDgzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXpl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGlu
Zm8gPSBhZG9wdEdSZWYoZ19maWxlX2lvX3N0cmVhbV9xdWVyeV9pbmZvKGhhbmRsZSwgR19GSUxF
X0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFp
bmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIGdfZmlsZV9pbmZvX2dldF9zaXplKGluZm8uZ2V0KCkpOwog
fQpAQCAtMTMxLDcgKzEzMSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlKQogT3B0aW9uYWw8V2FsbFRpbWU+IGZpbGVDcmVhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSB3YXkgdG8gcmV0cmll
dmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQg
aXQ/Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlLCBjb25zdCBTdHJpbmcmIHN1ZmZpeCkKQEAgLTI0MSw3ICsy
NDEsNyBAQCBPcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYg
ZnNGaWxlKQogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19m
b3JfcGF0aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZv
ID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19G
SUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICgh
ZmlsZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZ19maWxlX2luZm9fZ2V0X2F0dHJpYnV0ZV91aW50
MzIoZmlsZUluZm8uZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAppbmRleCA4
M2YxMTlhYzNkMzAyYjQwZDcwNDI5YWM3ZDMzNmVhNWUwZDU5MjA4Li5iNjAzNWRiNGU3NGQ3Njc4
NGU4YmFhZTZkMDhiNDgxZDQzNzY3YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0
ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcApAQCAtNDIsNyArNDIsNyBAQCBPcHRpb25hbDxBdG9t
U3RyaW5nPiBDb2RlcjxBdG9tU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYg
KCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqc3RyaW5nKSB9fTsKIH0KQEAg
LTY1LDcgKzY1LDcgQEAgT3B0aW9uYWw8Q1N0cmluZz4gQ29kZXI8Q1N0cmluZz46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBsZW5ndGg7CiAgICAgZGVj
b2RlciA+PiBsZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobGVuZ3RoID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgewogICAgICAgICAvLyBUaGlz
IGlzIHRoZSBudWxsIHN0cmluZy4KQEAgLTc0LDEyICs3NCwxMiBAQCBPcHRpb25hbDxDU3RyaW5n
PiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICAvLyBCZWZv
cmUgYWxsb2NhdGluZyB0aGUgc3RyaW5nLCBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb2RlciBidWZm
ZXIgaXMgYmlnIGVub3VnaC4KICAgICBpZiAoIWRlY29kZXIuYnVmZmVySXNMYXJnZUVub3VnaFRv
Q29udGFpbjxjaGFyPigqbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGNoYXIqIGJ1ZmZlcjsKICAgICBDU3Ry
aW5nIHN0cmluZyA9IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoKmxlbmd0aCwgYnVmZmVyKTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGJ1ZmZlciksICpsZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0cmluZzsKIH0K
QEAgLTEwOCwxMiArMTA4LDEyIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNv
ZGVTdHJpbmdUZXh0KERlY29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0CiB7CiAgICAgLy8g
QmVmb3JlIGFsbG9jYXRpbmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIg
YnVmZmVyIGlzIGJpZyBlbm91Z2guCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91
Z2hUb0NvbnRhaW48Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENoYXJhY3RlclR5
cGUqIGJ1ZmZlcjsKICAgICBTdHJpbmcgc3RyaW5nID0gU3RyaW5nOjpjcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlciksIGxlbmd0aCAqIHNpemVvZihD
aGFyYWN0ZXJUeXBlKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHN0cmluZzsKIH0KQEAgLTEyMyw3
ICsxMjMsNyBAQCBPcHRpb25hbDxTdHJpbmc+IENvZGVyPFN0cmluZz46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBsZW5ndGg7CiAgICAgZGVjb2RlciA+
PiBsZW5ndGg7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmxlbmd0aCA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgbnVsbCBzdHJpbmcuCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBDb2Rl
cjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxib29sPiBp
czhCaXQ7CiAgICAgZGVjb2RlciA+PiBpczhCaXQ7CiAgICAgaWYgKCFpczhCaXQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoKmlzOEJpdCkKICAgICAgICAgcmV0dXJuIGRlY29kZVN0cmluZ1RleHQ8TENoYXI+KGRl
Y29kZXIsICpsZW5ndGgpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIE9wdGlvbmFsPFNIQTE6OkRpZ2Vz
dD4gQ29kZXI8U0hBMTo6RGlnZXN0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
U0hBMTo6RGlnZXN0IHRtcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRh
KHRtcC5kYXRhKCksIHNpemVvZih0bXApKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gdG1wOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmggYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmgKaW5kZXggOTJjNGJi
MjVlOGRkNzBjMzBhN2IxYTAzY2MwMWQyNmY0NTQyZmZhYi4uNTZkOGQ2OTlmNjAwM2E1MDNkZDkx
NzViY2Q4YzMzMGZhOTU5ZjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1Bl
cnNpc3RlbnRDb2RlcnMuaApAQCAtNTEsMTIgKzUxLDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0cnVjdCBDb2RlcjxzdGQ6OnBhaXI8VCwgVT4+IHsKICAgICAgICAgT3B0
aW9uYWw8VD4gZmlyc3Q7CiAgICAgICAgIGRlY29kZXIgPj4gZmlyc3Q7CiAgICAgICAgIGlmICgh
Zmlyc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxVPiBzZWNvbmQ7CiAgICAgICAg
IGRlY29kZXIgPj4gc2Vjb25kOwogICAgICAgICBpZiAoIXNlY29uZCkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpmaXJzdCksIFdURk1vdmUoKnNlY29uZCkgfX07CiAg
ICAgfQpAQCAtNzksMTQgKzc5LDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb2Rl
cjxPcHRpb25hbDxUPj4gewogICAgICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CiAgICAg
ICAgIGRlY29kZXIgPj4gaXNFbmdhZ2VkOwogICAgICAgICBpZiAoIWlzRW5nYWdlZCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBpZiAoISppc0VuZ2FnZWQpCi0gICAgICAgICAgICByZXR1cm4gT3B0aW9u
YWw8T3B0aW9uYWw8VD4+IHsgT3B0aW9uYWw8VD4geyBXVEY6Om51bGxvcHQgfSB9OworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlvbmFsPFQ+PiB7IE9wdGlvbmFsPFQ+IHsgc3RkOjpu
dWxsb3B0IH0gfTsKICAgICAgICAgCiAgICAgICAgIE9wdGlvbmFsPFQ+IHZhbHVlOwogICAgICAg
ICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIAogICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+IHsgT3B0aW9uYWw8VD4g
eyBXVEZNb3ZlKCp2YWx1ZSkgfSB9OwogICAgIH0KQEAgLTEwMywxMiArMTAzLDEyIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IENvZGVyPFdU
Rjo6S2V5VmFsdWVQYWlyPEtlCiAgICAgICAgIE9wdGlvbmFsPEtleVR5cGU+IGtleTsKICAgICAg
ICAgZGVjb2RlciA+PiBrZXk7CiAgICAgICAgIGlmICgha2V5KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8VmFsdWVUeXBlPiB2YWx1ZTsKICAgICAgICAgZGVjb2RlciA+PnZhbHVlOwog
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7IFdURk1v
dmUoKmtleSksIFdURk1vdmUoKnZhbHVlKSB9fTsKICAgICB9CkBAIC0xMjksMTQgKzEyOSwxNCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBWZWN0
b3JDb2RlcjxmYWxzZSwgVCwgaW5saW5lQwogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2l6
ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaXplOwogICAgICAgICBpZiAoIXNpemUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHk+IHRtcDsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCAqc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBPcHRpb25hbDxU
PiBlbGVtZW50OwogICAgICAgICAgICAgZGVjb2RlciA+PiBlbGVtZW50OwogICAgICAgICAgICAg
aWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHRtcC5hcHBlbmQo
V1RGTW92ZSgqZWxlbWVudCkpOwogICAgICAgICB9CiAKQEAgLTE1NywxMCArMTU3LDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZlY3RvckNv
ZGVyPHRydWUsIFQsIGlubGluZUNhCiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVk
U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkU2l6ZTsKICAgICAgICAgaWYgKCFkZWNv
ZGVkU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICghaXNJbkJvdW5kczxzaXplX3Q+KCpk
ZWNvZGVkU2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHNpemUgPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KCpkZWNvZGVkU2l6ZSk7CiAKQEAgLTE2OCwxMyArMTY4LDEzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gc3RydWN0IFZlY3RvckNvZGVyPHRy
dWUsIFQsIGlubGluZUNhCiAgICAgICAgIC8vIG9uZSBmZWxsIHN3b29wLiBCZWZvcmUgYWxsb2Nh
dGluZyB3ZSBtdXN0IGhvd2V2ZXIgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVyCiAg
ICAgICAgIC8vIGlzIGJpZyBlbm91Z2guCiAgICAgICAgIGlmICghZGVjb2Rlci5idWZmZXJJc0xh
cmdlRW5vdWdoVG9Db250YWluPFQ+KHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5PiB0ZW1wOwogICAgICAgICB0ZW1wLmdyb3coc2l6ZSk7CiAKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPih0ZW1wLmRhdGEoKSksIHNpemUgKiBzaXplb2YoVCkpKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmV0dXJuIHRlbXA7CiAgICAgfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0
eXBlbmFtZSBLZXlUcmFpCiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoYXNoTWFwU2l6ZTsK
ICAgICAgICAgZGVjb2RlciA+PiBoYXNoTWFwU2l6ZTsKICAgICAgICAgaWYgKCFoYXNoTWFwU2l6
ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIEhhc2hNYXBUeXBlIHRlbXBIYXNoTWFwOwogICAgICAg
ICB0ZW1wSGFzaE1hcC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHN0YXRpY19jYXN0PHVuc2lnbmVk
PigqaGFzaE1hcFNpemUpKTsKQEAgLTIwNSwxNSArMjA1LDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBL
ZXlUcmFpCiAgICAgICAgICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4ga2V5OwogICAgICAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgT3B0aW9uYWw8TWFwcGVkQXJnPiB2YWx1ZTsKICAgICAgICAgICAgIGRlY29k
ZXIgPj4gdmFsdWU7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICAgICAgaWYgKCF0ZW1wSGFzaE1hcC5hZGQoV1RGTW92ZSgqa2V5KSwgV1RGTW92
ZSgqdmFsdWUpKS5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggbWFw
IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yMzYsMTggKzIzNiwxOCBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0Fy
Zz4gc3RydWN0IENvZGVyPAogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaGFzaFNldFNpemU7
CiAgICAgICAgIGRlY29kZXIgPj4gaGFzaFNldFNpemU7CiAgICAgICAgIGlmICghaGFzaFNldFNp
emUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBIYXNoU2V0VHlwZSB0ZW1wSGFzaFNldDsKICAgICAg
ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8ICpoYXNoU2V0U2l6ZTsgKytpKSB7CiAgICAgICAg
ICAgICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRlY29kZXIgPj4ga2V5Owog
ICAgICAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBp
ZiAoIXRlbXBIYXNoU2V0LmFkZChXVEZNb3ZlKCprZXkpKS5pc05ld0VudHJ5KSB7CiAgICAgICAg
ICAgICAgICAgLy8gVGhlIGhhc2ggbWFwIGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBi
YWlsLgotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0y
NjYsNyArMjY2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29kZXI8U2Vjb25kcz4gewogICAgICAg
ICBPcHRpb25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAg
ICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBTZWNvbmRzKCp2YWx1
ZSk7CiAgICAgfQogfTsKQEAgLTI4Miw3ICsyODIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2Rl
cjxXYWxsVGltZT4gewogICAgICAgICBPcHRpb25hbDxkb3VibGU+IHZhbHVlOwogICAgICAgICBk
ZWNvZGVyID4+IHZhbHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqdmFsdWUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3Bw
CmluZGV4IGI5OGFkNzU4MmFjMjUzMzNlZWNlNzQ3YTU0NTZhMjk2ZjgxMDQwMDYuLjZhMjU1NDY4
YjBjNDkwZjA4M2Y4NWY5MjAxMzNmYjMxYzg3MmI3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtNDksMTIgKzQ5
LDEyIEBAIHN0YXRpYyBPcHRpb25hbDxGaWxlVHlwZT4gZmlsZVR5cGVQb3RlbnRpYWxseUZvbGxv
d2luZ1N5bUxpbmtzKGNvbnN0IFN0cmluZyYgcGF0CiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZz
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGF0RnVuYyA9IHNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3MgPT0gU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzID8gc3Rh
dCA6IGxzdGF0OwogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwogICAgIGlmIChzdGF0RnVuYyhm
c1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoU19JU0RJUihmaWxlSW5mby5z
dF9tb2RlKSkKICAgICAgICAgcmV0dXJuIEZpbGVUeXBlOjpEaXJlY3Rvcnk7CkBAIC0xMjIsMTIg
KzEyMiwxMiBAQCBPcHRpb25hbDx1aW50NjRfdD4gZmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAK
ICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwogCiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAm
ZmlsZUluZm8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVJbmZvLnN0X3NpemU7CiB9CkBAIC0xNjYs
NyArMTY2LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgc3RydWN0IHN0YXR2ZnMgZmlsZVN5c3RlbVN0YXQ7CiAgICAgaWYgKCFz
dGF0dmZzKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlU3lzdGVt
U3RhdCkpCiAgICAgICAgIHJldHVybiBmaWxlU3lzdGVtU3RhdC5mX2JhdmFpbCAqIGZpbGVTeXN0
ZW1TdGF0LmZfZnJzaXplOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0
YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCkBAIC0yMzQsNyArMjM0
LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGhhcmRMaW5rQ291bnQoY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIGF1dG8gbGlua1BhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0
YXQpIDwgMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIExpbmsgY291bnQgaXMgMiBpbiB0aGUgc2luZ2xlIGNsaWVu
dCBjYXNlICh0aGUgYmxvYiBmaWxlIGFuZCBhIGxpbmspLgogICAgIHJldHVybiBzdGF0LnN0X25s
aW5rIC0gMTsKQEAgLTI1NywxMiArMjU3LDEyIEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgQ1N0cmluZyBmc1JlcCA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8
IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87
CiAKICAgICBpZiAoc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGVjMzIyMmNlYTA5MzU1YTZm
YmU3NmQ1ZGMzZTUyMzZjODY0N2NjOWIuLmE3YmEwNDdiMDU3YzdiYzQzNzc3ZWUyMjkxOTRjZjli
OGYyZmU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlKQogewogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwogICAgIGlmIChmc3Rh
dChoYW5kbGUsICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZmlsZUluZm8uc3Rfc2l6ZTsK
IH0KQEAgLTE3MCwxNyArMTcwLDE3IEBAIE9wdGlvbmFsPFdhbGxUaW1lPiBmaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0
YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlm
IChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfYmlydGh0aW1lKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHBhdGgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCkBAIC0yMzAsNyArMjMwLDcgQEAgT3B0aW9uYWw8aW50
MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIHsKICAgICBzdHJ1
Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQp
ID09IC0xKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGZpbGVTdGF0LnN0X2RldjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFz
ZTY0LmNwcAppbmRleCA5NGU0MTVjNDY0OTY3MDExODFlNjhiOTg5MWE1NDc0NTI4ZDdhYmQ1Li5h
YTI3YmNkYjEzYWM4MjMxNzVlYTNhYzQwMmY2NGM4N2IwNmZjOTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9CYXNl
NjQuY3BwCkBAIC0xOTMsMTYgKzE5MywxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25zdAogICAg
ICAgICAgICAgKytlcXVhbHNTaWduQ291bnQ7CiAgICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQg
bmV2ZXIgYmUgbW9yZSB0aGFuIDIgcGFkZGluZyBjaGFyYWN0ZXJzLgogICAgICAgICAgICAgaWYg
KG9wdGlvbnMuY29udGFpbnMoQmFzZTY0RGVjb2RlT3B0aW9uczo6VmFsaWRhdGVQYWRkaW5nKSAm
JiBlcXVhbHNTaWduQ291bnQgPiAyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciBkZWNvZGVkQ2hhcmFjdGVyID0g
Y2ggPCBkZWNvZGVNYXBTaXplID8gZGVjb2RlTWFwW2NoXSA6IG5vbkFscGhhYmV0OwogICAgICAg
ICAgICAgaWYgKGRlY29kZWRDaGFyYWN0ZXIgIT0gbm9uQWxwaGFiZXQpIHsKICAgICAgICAgICAg
ICAgICBpZiAoZXF1YWxzU2lnbkNvdW50KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgICAgIGRlc3RpbmF0aW9uW2Rlc3RpbmF0aW9uTGVuZ3RoKytdID0gZGVjb2RlZENo
YXJhY3RlcjsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuY29udGFpbnMoQmFzZTY0
RGVjb2RlT3B0aW9uczo6SWdub3JlU3BhY2VzQW5kTmV3TGluZXMpIHx8ICghaXNMYXRpbjEoY2gp
IHx8ICFpc0FTQ0lJU3BhY2UoY2gpIHx8IChvcHRpb25zLmNvbnRhaW5zKEJhc2U2NERlY29kZU9w
dGlvbnM6OkRpc2NhcmRWZXJ0aWNhbFRhYikgJiYgY2ggPT0gJ1x2JykpKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjE0LDIzICsyMTQs
MjMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gYmFzZTY0RGVjb2RlSW50ZXJuYWwoY29uc3QKIAogICAgIGlmICghZGVzdGluYXRpb25MZW5n
dGgpIHsKICAgICAgICAgaWYgKGVxdWFsc1NpZ25Db3VudCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgfTsKICAgICB9CiAKICAgICAvLyBUaGUgc2hvdWxkIGJl
IG5vIHBhZGRpbmcgaWYgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgNC4KICAgICAvLyBXZSB1c2Ug
KGRlc3RpbmF0aW9uTGVuZ3RoICsgZXF1YWxzU2lnbkNvdW50KSBpbnN0ZWFkIG9mIGxlbmd0aCBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gYWNjb3VudCBmb3IgaWdub3JlZCBjaGFyYWN0ZXJzIChp
LmUuIHNwYWNlcykuCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoQmFzZTY0RGVjb2RlT3B0aW9u
czo6VmFsaWRhdGVQYWRkaW5nKSAmJiBlcXVhbHNTaWduQ291bnQgJiYgKGRlc3RpbmF0aW9uTGVu
Z3RoICsgZXF1YWxzU2lnbkNvdW50KSAlIDQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWYWxpZCBkYXRhIGlzIChu
ICogNCArIFswLDIsM10pIGNoYXJhY3RlcnMgbG9uZy4KICAgICBpZiAoKGRlc3RpbmF0aW9uTGVu
Z3RoICUgNCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyA0LWJ5dGUgdG8gMy1ieXRlIGNvbnZlcnNp
b24KICAgICBkZXN0aW5hdGlvbkxlbmd0aCAtPSAoZGVzdGluYXRpb25MZW5ndGggKyAzKSAvIDQ7
CiAgICAgaWYgKCFkZXN0aW5hdGlvbkxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIHNpZHggPSAw
OwogICAgIHVuc2lnbmVkIGRpZHggPSAwOwpAQCAtMjc0LDE0ICsyNzQsMTQgQEAgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjREZWNvZGUoU3RyaW5nVmlldyBpbnB1dCwgT3B0aW9uU2V0
PEJhc2U2NERlY29kZU8KIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0RGVjb2RlKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaW5wdXQsIE9wdGlvblNldDxCYXNlNjREZWNvZGVPcHRpb25z
PiBvcHRpb25zLCBCYXNlNjREZWNvZGVNYXAgbWFwKQogewogICAgIGlmIChpbnB1dC5zaXplKCkg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJh
c2U2NERlY29kZUludGVybmFsKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCBvcHRpb25zLCBt
YXApOwogfQogCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NERlY29kZShjb25zdCBW
ZWN0b3I8Y2hhcj4mIGlucHV0LCBPcHRpb25TZXQ8QmFzZTY0RGVjb2RlT3B0aW9ucz4gb3B0aW9u
cywgQmFzZTY0RGVjb2RlTWFwIG1hcCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkp
LCBpbnB1dC5zaXplKCksIG9wdGlvbnMsIG1hcCk7CiB9CiAKQEAgLTMxNCwxNCArMzE0LDE0IEBA
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gYmFzZTY0VVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5w
dXQpCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGJhc2U2NFVSTERlY29kZShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGlucHV0KQogewogICAgIGlmIChpbnB1dC5zaXplKCkgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGJhc2U2NERlY29kZUlu
dGVybmFsKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpLCB7IH0sIEJhc2U2NERlY29kZU1hcDo6
VVJMKTsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBiYXNlNjRVUkxEZWNvZGUoY29u
c3QgVmVjdG9yPGNoYXI+JiBpbnB1dCkKIHsKICAgICBpZiAoaW5wdXQuc2l6ZSgpID4gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBiYXNlNjREZWNv
ZGVJbnRlcm5hbChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihpbnB1dC5kYXRhKCkp
LCBpbnB1dC5zaXplKCksIHsgfSwgQmFzZTY0RGVjb2RlTWFwOjpVUkwpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCmluZGV4IDA5ZjMw
NGM0YjUxODAwNjAwMjVkNGNhYzQwOTg0YzdkZDA5MTAzZWMuLjM1NmM3NTZjNjlhNGQzNmRhOTdi
MzA1MWEwMWE0MDVhYmQ0NWUwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
VG9JbnRlZ2VyQ29udmVyc2lvbi5oCkBAIC00NSw3ICs0NSw3IEBAIGVudW0gY2xhc3MgVHJhaWxp
bmdKdW5rUG9saWN5IHsgRGlzYWxsb3csIEFsbG93IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRl
Z3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlwZT4g
cGFyc2VJbnRlZ2VyKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGEsIHNpemVfdCBsZW5ndGgsIHVp
bnQ4X3QgYmFzZSwgVHJhaWxpbmdKdW5rUG9saWN5IHBvbGljeSkKIHsKICAgICBpZiAoIWRhdGEp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQVNDSUlTcGFjZSgqZGF0YSkpIHsKICAgICAg
ICAgLS1sZW5ndGg7CkBAIC02OSw3ICs2OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEludGVncmFs
VHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8SW50ZWdyYWxUeXBlPiBwCiAg
ICAgfTsKIAogICAgIGlmICghKGxlbmd0aCAmJiBpc0NoYXJhY3RlckFsbG93ZWRJbkJhc2UoKmRh
dGEsIGJhc2UpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIENoZWNrZWQ8SW50ZWdyYWxUeXBlLCBSZWNvcmRPdmVyZmxv
dz4gdmFsdWU7CiAgICAgZG8gewpAQCAtODIsNyArODIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnRlZ3JhbFR5cGUsIHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPEludGVncmFsVHlw
ZT4gcAogICAgIH0gd2hpbGUgKC0tbGVuZ3RoICYmIGlzQ2hhcmFjdGVyQWxsb3dlZEluQmFzZSgq
KytkYXRhLCBiYXNlKSk7CiAKICAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzT3ZlcmZsb3dlZCgp
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChwb2xpY3kgPT0gVHJhaWxpbmdKdW5rUG9saWN5OjpEaXNhbGxvdykg
ewogICAgICAgICB3aGlsZSAobGVuZ3RoICYmIGlzQVNDSUlTcGFjZSgqZGF0YSkpIHsKQEAgLTkw
LDcgKzkwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlLCB0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxJbnRlZ3JhbFR5cGU+IHAKICAgICAgICAgICAgICsrZGF0YTsK
ICAgICAgICAgfQogICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAg
cmV0dXJuIHZhbHVlLnVuc2FmZUdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5k
ZXggMzc1NjkxZWFjODZkMzRiMGQ4ZGMyMDQ5YmQwN2NmYzRlZGRkNzhkMC4uZTA5NjcyOTAxZWY5
M2ZmOTNiMzM0OTAxMDY3YTc1MzZmYmQxMjcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcu
Y3BwCkBAIC0xODUsNyArMTg1LDcgQEAgcHJpdmF0ZToKIH07CiAKIFN0cmluZ1ZpZXc6OkdyYXBo
ZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdW
aWV3LCB1bnNpZ25lZCBpbmRleCkKLSAgICA6IG1faW1wbChtYWtlVW5pcXVlPEltcGw+KHN0cmlu
Z1ZpZXcsIHN0cmluZ1ZpZXcuaXNOdWxsKCkgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQorICAgIDogbV9pbXBsKG1ha2VVbmlxdWU8SW1wbD4o
c3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IHN0ZDo6bnVsbG9wdCA6IE9wdGlvbmFs
PE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+KE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3Ioc3RyaW5nVmlldykpLCBpbmRleCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2NvY29hL1N0cmluZ0NvY29hLm1tCmluZGV4IGVmNjY5YmM0MTM5OTZmZTJhYzhmMWZmN2RhNGQ3
YzUyOGFjOWYxNWYuLmY1YTM2MzUwNTBlZDVlN2MzMDU3MWY1ZGQ3OTM5OTAyMWYwOTM1ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvU3RyaW5nQ29jb2EubW0KKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9TdHJpbmdDb2NvYS5tbQpAQCAtMzgsNyArMzgsNyBA
QCBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBTdHJpbmcmIHZlY3RvckVs
ZW1lbnQpCiBPcHRpb25hbDxTdHJpbmc+IG1ha2VWZWN0b3JFbGVtZW50KGNvbnN0IFN0cmluZyos
IGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNLaW5kT2ZDbGFz
czpOU1N0cmluZy5jbGFzc10pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBhcnJheUVsZW1lbnQgfSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDQ4YzZhYWM0NGY0M2Y4NzFiZjVhNDUz
MGMwZTU3YmUzZWY1YjRkMWEuLjY2NTc3NDhhZTFkNTQ0NjQ1YzlmMzM3YzU4OGFiMGNmN2Y1Mjky
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC02MywxMiArNjMsMTIgQEAgaW5saW5l
IHN0ZDo6dHVwbGU8aW50LCBPcHRpb25hbDxpbnQ+PiB0b1N5c3RlbVNpZ25hbChTaWduYWwgc2ln
bmFsKQogewogICAgIHN3aXRjaCAoc2lnbmFsKSB7CiAgICAgY2FzZSBTaWduYWw6OkFjY2Vzc0Zh
dWx0OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1NFR1YsIFNJR0JVUyk7Ci0gICAgY2FzZSBT
aWduYWw6OklsbGVnYWxJbnN0cnVjdGlvbjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEws
IFdURjo6bnVsbG9wdCk7Ci0gICAgY2FzZSBTaWduYWw6OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90
dXBsZShTSUdJTEwsIFdURjo6bnVsbG9wdCk7Ci0gICAgY2FzZSBTaWduYWw6OkZsb2F0aW5nUG9p
bnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHRlBFLCBXVEY6Om51bGxvcHQpOwotICAgIGNh
c2UgU2lnbmFsOjpCcmVha3BvaW50OiByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFNJR1RSQVAsIFdU
Rjo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6OklsbGVnYWxJbnN0cnVjdGlvbjogcmV0dXJu
IHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CisgICAgY2FzZSBTaWduYWw6
OlVzcjogcmV0dXJuIHN0ZDo6bWFrZV90dXBsZShTSUdJTEwsIHN0ZDo6bnVsbG9wdCk7CisgICAg
Y2FzZSBTaWduYWw6OkZsb2F0aW5nUG9pbnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHRlBF
LCBzdGQ6Om51bGxvcHQpOworICAgIGNhc2UgU2lnbmFsOjpCcmVha3BvaW50OiByZXR1cm4gc3Rk
OjptYWtlX3R1cGxlKFNJR1RSQVAsIHN0ZDo6bnVsbG9wdCk7CiAjaWYgIU9TKERBUldJTikKLSAg
ICBjYXNlIFNpZ25hbDo6QWJvcnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoU0lHQUJSVCwgV1RG
OjpudWxsb3B0KTsKKyAgICBjYXNlIFNpZ25hbDo6QWJvcnQ6IHJldHVybiBzdGQ6Om1ha2VfdHVw
bGUoU0lHQUJSVCwgc3RkOjpudWxsb3B0KTsKICNlbmRpZgogICAgIGRlZmF1bHQ6IGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3dpbi9DUFVUaW1lV2luLmNwcAppbmRleCBkNzBiZmI1MWFkMzc3MzIxMDc1
YWMwOGU3OTRhMzkyYWMzMjIyNzljLi40YTFhM2U1NDIyNWY1MjgwYTkwZmVlZWE3NDAzMTcxNmFj
ZWE1MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vQ1BVVGltZVdpbi5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvd2luL0NQVVRpbWVXaW4uY3BwCkBAIC01Niw3ICs1Niw3IEBAIE9w
dGlvbmFsPENQVVRpbWU+IENQVVRpbWU6OmdldCgpCiAgICAgRklMRVRJTUUga2VybmVsVGltZTsK
ICAgICBGSUxFVElNRSB1c2VyVGltZTsKICAgICBpZiAoITo6R2V0UHJvY2Vzc1RpbWVzKDo6R2V0
Q3VycmVudFByb2Nlc3MoKSwgJmNyZWF0aW9uVGltZSwgJmV4aXRUaW1lLCAma2VybmVsVGltZSwg
JnVzZXJUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDUFVUaW1lIHsgTW9ub3RvbmljVGltZTo6bm93
KCksIGZpbGVUaW1lVG9TZWNvbmRzKHVzZXJUaW1lKSwgZmlsZVRpbWVUb1NlY29uZHMoa2VybmVs
VGltZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAwZDJhOGFk
ZjhmODZhNjZiYjI4MjE0NjViMjY0MDUxN2UxMTdkMDQ3Li4xZDBhMjA0NGU4NjJhYTMwZWY4MDU1
MWJlMWQ2YzBlZDcyYjkzM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50NjRfdD4gZ2V0RmlsZVNpemVGcm9t
QnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoY29uc3QKICAgICBmaWxlU2l6ZS5Mb3dQ
YXJ0ID0gZmlsZUluZm9ybWF0aW9uLm5GaWxlU2l6ZUxvdzsKIAogICAgIGlmIChmaWxlU2l6ZS5R
dWFkUGFydCA+IHN0YXRpY19jYXN0PFVMT05HTE9ORz4oc3RkOjpudW1lcmljX2xpbWl0czxsb25n
IGxvbmc+OjptYXgoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZmlsZVNpemUuUXVhZFBhcnQ7CiB9CkBA
IC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8dWludDY0X3Q+IGZpbGVTaXplKFBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlSGFuZGxlKQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZp
bGVJbmZvcm1hdGlvbjsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoZmls
ZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZ2V0RmlsZVNpemVG
cm9tQnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uKTsKIH0K
QEAgLTExNiw3ICsxMTYsNyBAQCBPcHRpb25hbDxXYWxsVGltZT4gZmlsZUNyZWF0aW9uVGltZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAg
ICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHRpbWVfdCB0aW1l
ID0gMDsKICAgICBmaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsK
QEAgLTM0MywxMiArMzQzLDEyIEBAIE9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7CiAgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0Zp
bGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0
aW9uID0geyB9OwogICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUs
ICZmaWxlSW5mb3JtYXRpb24pKSB7CiAgICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGNsb3NlRmlsZShoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
d2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcAppbmRleCAxYWVlNDg2ZGVmOTk3Mjc4ZmI4ZDAwZTJi
MWMyMWZhMzJkMjlhYjQ2Li43YWI0YTA0ZjE3ODJhYzFkNjRiYzI3YjY5ZThmZjA0NDJiMTQwNjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2lu
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNw
cApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogCiBPcHRpb25hbDxN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKIHsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL1RocmVhZGlu
Z1dpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcAppbmRleCA0YjM3
MjQ3Zjk5MDcyM2UzMjhlN2RjOTJkZTI1YjVjMzA4NmFlOTI2Li42MDA2ZDAxMzQ1MjMwMmFkYTkw
Yjg1OGY0YjM3YTQzMWZhMDQxODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhy
ZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vVGhyZWFkaW5nV2luLmNwcApA
QCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgVGhyZWFkOjplc3RhYmxpc2hIYW5kbGUoTmV3VGhyZWFk
Q29udGV4dCogZGF0YSwgT3B0aW9uYWw8c2l6ZV90PiBzdGFja1NpemUsCiB7CiAgICAgdW5zaWdu
ZWQgdGhyZWFkSWRlbnRpZmllciA9IDA7CiAgICAgdW5zaWduZWQgaW5pdEZsYWcgPSBzdGFja1Np
emUgPyBTVEFDS19TSVpFX1BBUkFNX0lTX0FfUkVTRVJWQVRJT04gOiAwOwotICAgIEhBTkRMRSB0
aHJlYWRIYW5kbGUgPSByZWludGVycHJldF9jYXN0PEhBTkRMRT4oX2JlZ2ludGhyZWFkZXgobnVs
bHB0ciwgc3RhY2tTaXplLnZhbHVlT3IoMCksIHd0ZlRocmVhZEVudHJ5UG9pbnQsIGRhdGEsIGlu
aXRGbGFnLCAmdGhyZWFkSWRlbnRpZmllcikpOworICAgIEhBTkRMRSB0aHJlYWRIYW5kbGUgPSBy
ZWludGVycHJldF9jYXN0PEhBTkRMRT4oX2JlZ2ludGhyZWFkZXgobnVsbHB0ciwgc3RhY2tTaXpl
LnZhbHVlX29yKDApLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBkYXRhLCBpbml0RmxhZywgJnRocmVh
ZElkZW50aWZpZXIpKTsKICAgICBpZiAoIXRocmVhZEhhbmRsZSkgewogICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgdGhyZWFkIGF0IGVudHJ5IHBvaW50ICVwIHdpdGggZGF0YSAl
cDogJWxkIiwgd3RmVGhyZWFkRW50cnlQb2ludCwgZGF0YSwgZXJybm8pOwogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oCmluZGV4IGI3OTYwNjcxMjhjNTY3NzU5ZTNk
NGVjZWJiZTkzMGQzNDMwZjQ5ZTUuLjk0OGZiNTU4NTZlZTk5NjI2NjkxMzQ2OGRmZTg4M2Y2NDY5
MzRmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZS5oCkBAIC01Niw3ICs1Niw3IEBAIE9wdGlvbmFs
PEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2U6OmRl
Y29kZShEZWNvZGVyJiBkCiB7CiAgICAgQXBwbGVQYXlEZXRhaWxzVXBkYXRlQmFzZSByZXN1bHQ7
CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oCmluZGV4IDgwNzhmOTU3MjE0M2JkZTM4MGZk
NGU0NGFiYzQ4MzE4ZjhjNzkyZDYuLmU4MzFkMDJmMmZhZTM3MmQ3ZTY0NTM3MmZiMTliMTYxZjNm
MGI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIE9wdGlvbmFs
PEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE+IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGE6OmRl
Y29kZShEZWNvZGVyJiBkCiB7CiAgICAgQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YSByZXN1bHQ7
CiAgICAgaWYgKCFyZXN1bHQuZGVjb2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0Fw
cGxlUGF5TGluZUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlMaW5lSXRlbS5oCmluZGV4IGU3NGJmZDgzZmIyMTNlYTVjMGZjYjcwZDY0MzI2YmU0MzhjY2Jk
ZmMuLmJlYTRiMjNhMzZmY2NmZDM1NDAxNTA1OTZmOTEwZTExMjUxZjg2NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbS5oCkBAIC02
MywyNCArNjMsMjQgQEAgT3B0aW9uYWw8QXBwbGVQYXlMaW5lSXRlbT4gQXBwbGVQYXlMaW5lSXRl
bTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgQXBwbGVQYXlMaW5lSXRlbSByZXN1bHQ7
CiAKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRhKGRlY29kZXIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJlc3VsdC50eXBlID0gV1RGTW92ZSgqdHlwZSk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+
IGxhYmVsOwogICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgaWYgKCFsYWJlbCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQubGFiZWwgPSBXVEZNb3ZlKCpsYWJlbCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGFt
b3VudDsKICAgICBkZWNvZGVyID4+IGFtb3VudDsKICAgICBpZiAoIWFtb3VudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXN1bHQuYW1vdW50ID0gV1RGTW92ZSgqYW1vdW50KTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0
ZW1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5TGluZUl0
ZW1EYXRhLmgKaW5kZXggODg4MWRkY2RmYmQzNjJjYjEyYTdiODU5ZTFlZTRlN2ZhY2EzNmEyNC4u
OTU4ZTM2ZmMwYjY1NDI3ZjM1YjYwMDhkNzYwMDMwZWI3YWYwM2ViOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheUxpbmVJdGVtRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlMaW5lSXRlbURhdGEuaApA
QCAtNjEsNyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheUxpbmVJdGVtRGF0YT4gQXBwbGVQYXlM
aW5lSXRlbURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEFwcGxlUGF5TGlu
ZUl0ZW1EYXRhIHJlc3VsdDsKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRhKGRlY29kZXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRl
LmgKaW5kZXggYmE4MDY4MTI2MDNiMjMzMTJjYzc5ZGQ4NmIzZGE5NTI4ZDkyMjAyZi4uYWM3ZjYy
OWYyYjBlZjBkYjBmMmI5NGZjZWFlMTkwNzdhNTA3N2Y4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRo
b2RNb2RlVXBkYXRlLmgKQEAgLTU5LDE4ICs1OSwxOCBAQCBPcHRpb25hbDxBcHBsZVBheVBheW1l
bnRNZXRob2RNb2RlVXBkYXRlPiBBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlOjpkZWNv
ZAogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUgcmVzdWx0OwogCiAgICAgaWYg
KCFyZXN1bHQuZGVjb2RlQmFzZShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxS
ZWZQdHI8QXBwbGVQYXlFcnJvcj4+PiBlcnJvcnM7CiAgICAgZGVjb2RlciA+PiBlcnJvcnM7CiAg
ICAgaWYgKCFlcnJvcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmVycm9ycyA9IFdURk1vdmUoKmVycm9ycyk7
CiAKICAgICBPcHRpb25hbDxWZWN0b3I8QXBwbGVQYXlTaGlwcGluZ01ldGhvZD4+IG5ld1NoaXBw
aW5nTWV0aG9kczsKICAgICBkZWNvZGVyID4+IG5ld1NoaXBwaW5nTWV0aG9kczsKICAgICBpZiAo
IW5ld1NoaXBwaW5nTWV0aG9kcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQubmV3U2hpcHBpbmdNZXRob2RzID0g
V1RGTW92ZSgqbmV3U2hpcHBpbmdNZXRob2RzKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVBh
eW1lbnRNZXRob2RVcGRhdGUuaAppbmRleCAyOTQ2Y2NjODk5NDRhODIxYzg5ZGQ3ZDhjY2UxOWIz
ZmQ3MGUzMjk1Li43MTk1YzkzNzg1OTA2NzVhOThjNGMzNTNiYmE0YjhiNDgxNDEzY2QxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1l
dGhvZFVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQ
YXlQYXltZW50TWV0aG9kVXBkYXRlLmgKQEAgLTU3LDEzICs1NywxMyBAQCBPcHRpb25hbDxBcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGU+IEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZTo6ZGVj
b2RlKERlY29kZQogICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSByZXN1bHQ7CiAKICAg
ICBpZiAoIXJlc3VsdC5kZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShu
YW1lLCB0eXBlKSBcCiAgICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4g
bmFtZTsgXAogICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBc
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKICAgICByZXN1bHQubmFtZSA9IFdURk1v
dmUoKm5hbWUpOyBcCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0lOU1RBTExNRU5UUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApp
bmRleCA4NTJhMGNhOTk3YzMwNWMwYjNkZjAwODVmZDM3NDFkMWJlMzg4M2E4Li44MWI3YWIzNzI1
NzM5NGI2MWVmNWM3ZmI4Y2Q4YzczZmZjYjgwM2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCkBAIC0xOTcsNyArMTk3LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiBjb252ZXJ0
QW5kVmFsaWRhdGUoQXBwbGVQYXlQYXltZW4KIAogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpT
VEFUVVNfSU5WQUxJRF9CSUxMSU5HX1BPU1RBTF9BRERSRVNTOgogICAgICAgICBjb252ZXJ0ZWRS
ZXN1bHQuc3RhdHVzID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU7Ci0gICAg
ICAgIGNvbnZlcnRlZFJlc3VsdC5lcnJvcnMuYXBwZW5kKEFwcGxlUGF5RXJyb3I6OmNyZWF0ZShB
cHBsZVBheUVycm9yQ29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkLCBXVEY6Om51bGxvcHQsIG51
bGxTdHJpbmcoKSkpOworICAgICAgICBjb252ZXJ0ZWRSZXN1bHQuZXJyb3JzLmFwcGVuZChBcHBs
ZVBheUVycm9yOjpjcmVhdGUoQXBwbGVQYXlFcnJvckNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxp
ZCwgc3RkOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEFwcGxlUGF5U2Vzc2lvbjo6U1RBVFVTX0lOVkFMSURfU0hJUFBJTkdfUE9TVEFMX0FERFJF
U1M6CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFBheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0PiBjb252ZXJ0QW5kVmFsaWRhdGUoQXBwbGVQYXlQYXltZW4KIAogICAgIGNh
c2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfSU5WQUxJRF9TSElQUElOR19DT05UQUNUOgogICAg
ICAgICBjb252ZXJ0ZWRSZXN1bHQuc3RhdHVzID0gUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6
OkZhaWx1cmU7Ci0gICAgICAgIGNvbnZlcnRlZFJlc3VsdC5lcnJvcnMuYXBwZW5kKEFwcGxlUGF5
RXJyb3I6OmNyZWF0ZShBcHBsZVBheUVycm9yQ29kZTo6U2hpcHBpbmdDb250YWN0SW52YWxpZCwg
V1RGOjpudWxsb3B0LCBudWxsU3RyaW5nKCkpKTsKKyAgICAgICAgY29udmVydGVkUmVzdWx0LmVy
cm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJyb3JDb2RlOjpTaGlw
cGluZ0NvbnRhY3RJbnZhbGlkLCBzdGQ6Om51bGxvcHQsIG51bGxTdHJpbmcoKSkpOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQXBwbGVQYXlTZXNzaW9uOjpTVEFUVVNfUElOX1JFUVVJUkVE
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNl
dHVwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXR1cC5j
cHAKaW5kZXggYWYxNzUxNjM0MjEzYWMyY2Q2MGI3ZGRlOGQ4N2IzOGJlY2U2ODgwNC4uOGEyYTBi
OWEzM2VlZDRiZjFiNzg0ZjNmNWRmMWFjMGI4ZTUwZTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNldHVwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2V0dXAuY3BwCkBAIC03OCw3ICs3OCw3IEBA
IHZvaWQgQXBwbGVQYXlTZXR1cDo6Z2V0U2V0dXBGZWF0dXJlcyhEb2N1bWVudCYgZG9jdW1lbnQs
IFNldHVwRmVhdHVyZXNQcm9taXNlJiYKIAogICAgIHBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigp
LmdldFNldHVwRmVhdHVyZXMobV9jb25maWd1cmF0aW9uLCBkb2N1bWVudC51cmwoKSwgW3RoaXMs
IHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShWZWN0b3I8UmVm
PEFwcGxlUGF5U2V0dXBGZWF0dXJlPj4mJiBzZXR1cEZlYXR1cmVzKSB7CiAgICAgICAgIGlmICht
X3NldHVwRmVhdHVyZXNQcm9taXNlKQotICAgICAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVw
RmVhdHVyZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUoV1RGTW92ZShzZXR1cEZlYXR1
cmVzKSk7CisgICAgICAgICAgICBzdGQ6OmV4Y2hhbmdlKG1fc2V0dXBGZWF0dXJlc1Byb21pc2Us
IHN0ZDo6bnVsbG9wdCktPnNldHRsZShXVEZNb3ZlKHNldHVwRmVhdHVyZXMpKTsKICAgICB9KTsK
IH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQXBwbGVQYXlTZXR1cDo6YmVnaW4oRG9jdW1l
bnQmIGRvY3VtZW50LCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5U2V0dXBGZWF0dXJlCiAKICAgICBw
YWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS5iZWdpbkFwcGxlUGF5U2V0dXAobV9jb25maWd1cmF0
aW9uLCBkb2N1bWVudC51cmwoKSwgV1RGTW92ZShmZWF0dXJlcyksIFt0aGlzXShib29sIHJlc3Vs
dCkgewogICAgICAgICBpZiAobV9iZWdpblByb21pc2UpCi0gICAgICAgICAgICBzdGQ6OmV4Y2hh
bmdlKG1fYmVnaW5Qcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUocmVzdWx0KTsKKyAgICAg
ICAgICAgIHN0ZDo6ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIHN0ZDo6bnVsbG9wdCktPnNldHRs
ZShyZXN1bHQpOwogICAgIH0pOwogfQogCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBBcHBsZVBheVNl
dHVwOjpBcHBsZVBheVNldHVwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEFwcGxl
UGF5U2V0dXBDb25maQogdm9pZCBBcHBsZVBheVNldHVwOjpzdG9wKCkKIHsKICAgICBpZiAobV9z
ZXR1cEZlYXR1cmVzUHJvbWlzZSkKLSAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVy
ZXNQcm9taXNlLCBXVEY6Om51bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9
KTsKKyAgICAgICAgc3RkOjpleGNoYW5nZShtX3NldHVwRmVhdHVyZXNQcm9taXNlLCBzdGQ6Om51
bGxvcHQpLT5zZXR0bGUoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIGlmIChtX2Jl
Z2luUHJvbWlzZSkKLSAgICAgICAgc3RkOjpleGNoYW5nZShtX2JlZ2luUHJvbWlzZSwgV1RGOjpu
dWxsb3B0KS0+c2V0dGxlKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7CisgICAgICAgIHN0ZDo6
ZXhjaGFuZ2UobV9iZWdpblByb21pc2UsIHN0ZDo6bnVsbG9wdCktPnNldHRsZShFeGNlcHRpb24g
eyBBYm9ydEVycm9yIH0pOwogCiAgICAgaWYgKGF1dG8gcGFnZSA9IGRvd25jYXN0PERvY3VtZW50
Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPnBheW1l
bnRDb29yZGluYXRvcigpLmVuZEFwcGxlUGF5U2V0dXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RVcGRhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ0NvbnRhY3RV
cGRhdGUuaAppbmRleCA4NzUyYTAzNDY4ODJjZDJmNTgyYjM5OTBhZjY2MmZkMDQxM2IzOWJjLi5k
ZjI3ZGM4NTE2MjUxZmMyMzllYjMwNWYzZTc4OWY0NmVhNWJhMjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5n
Q29udGFjdFVwZGF0ZS5oCkBAIC01OSwxMyArNTksMTMgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlw
cGluZ0NvbnRhY3RVcGRhdGU+IEFwcGxlUGF5U2hpcHBpbmdDb250YWN0VXBkYXRlOjpkZWNvZGUo
RGUKICAgICBBcHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZSByZXN1bHQ7CiAKICAgICBpZiAo
IXJlc3VsdC5kZWNvZGVCYXNlKGRlY29kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjZGVmaW5lIERFQ09ERShuYW1lLCB0
eXBlKSBcCiAgICAgT3B0aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsg
XAogICAgIGlmICghbmFtZSkgXAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7IFwKICAgICByZXN1bHQubmFtZSA9IFdURk1vdmUoKm5h
bWUpOyBcCiAKICAgICBERUNPREUoZXJyb3JzLCBWZWN0b3I8UmVmUHRyPEFwcGxlUGF5RXJyb3I+
PikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlT
aGlwcGluZ01ldGhvZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBh
eVNoaXBwaW5nTWV0aG9kLmgKaW5kZXggODRmOTJlOTNlYWZkNDc4NDM0NGRiNjZmMmM0ZDdjMmUw
OGQyMWI4MS4uY2NmYmQ3MTQ2MTc1MzhiOWM2MzY0NmQzNmM5OWUwNGRjMzE4YTZmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0
aG9kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBw
aW5nTWV0aG9kLmgKQEAgLTU4LDEzICs1OCwxMyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5n
TWV0aG9kPiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlcgog
ICAgIEFwcGxlUGF5U2hpcHBpbmdNZXRob2QgcmVzdWx0OwogCiAgICAgaWYgKCFyZXN1bHQuZGVj
b2RlRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2RlZmluZSBERUNPREUobmFtZSwgdHlwZSkgXAogICAg
IE9wdGlvbmFsPHR5cGU+IG5hbWU7IFwKICAgICBkZWNvZGVyID4+IG5hbWU7IFwKICAgICBpZiAo
IW5hbWUpIFwKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OyBcCiAgICAgcmVzdWx0Lm5hbWUgPSBXVEZNb3ZlKCpuYW1lKTsgXAogCiAg
ICAgREVDT0RFKGxhYmVsLCBTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmgKaW5kZXggZTQw
Y2Y2ZDFiYjkxMDU2MGU3ZmNjYzcxZjk0NzhlNTE1MjBmMGJkOS4uOGJiYTU0MWU3YTcwMzU5Mzg0
YTQ1NTBiNDgyMWE4ODNlZGIzYmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaApAQCAtNjEs
NyArNjEsNyBAQCBPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YT4gQXBwbGVQYXlT
aGlwcGluZ01ldGhvZERhdGE6OmRlY29kZShEZWNvZGVyJgogewogICAgIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2REYXRhIHJlc3VsdDsKICAgICBpZiAoIXJlc3VsdC5kZWNvZGVEYXRhKGRlY29kZXIp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlLmgK
aW5kZXggNjM5YmUwZDJiYjkyYTExNDM2N2JiYTM2Yjk4N2I5YzY2ZGQ5MWY1My4uODdmYWM4OGM1
ZDQ2NjdiODI5MmViNjFhM2FiMzQzZTBjODExM2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBk
YXRlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgT3B0aW9uYWw8QXBwbGVQYXlTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4gQXBwbGVQYXlTaGlwcGluZ01ldGhvZFVwZGF0ZTo6ZGVjb2RlKERlY28KICAgICBBcHBs
ZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlIHJlc3VsdDsKIAogICAgIGlmICghcmVzdWx0LmRlY29k
ZUJhc2UoZGVjb2RlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDExMTU4NTRlOTVhMTUwM2VhMGYwODBjNTIyMWFiYTIwYWM5OTA0YzEuLjQ4OTNiZTIxMWM3
OTQ0Y2ZhOTE2YjI5MWZiYTk4NDU4NWNkMmRmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTI3OSwxMCAr
Mjc5LDEwIEBAIHZvaWQgUGF5bWVudENvb3JkaW5hdG9yOjpkaWRDYW5jZWxQYXltZW50U2Vzc2lv
bihQYXltZW50U2Vzc2lvbkVycm9yJiYgZXJyb3IpCiBPcHRpb25hbDxTdHJpbmc+IFBheW1lbnRD
b29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoRG9jdW1lbnQmLCB1bnNpZ25lZCB2
ZXJzaW9uLCBjb25zdCBTdHJpbmcmIHBheW1lbnROZXR3b3JrKSBjb25zdAogewogICAgIGlmICh2
ZXJzaW9uIDwgMiAmJiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHBheW1lbnROZXR3b3JrLCAiamNi
IikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAodmVyc2lvbiA8IDMgJiYgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShw
YXltZW50TmV0d29yaywgImNhcnRlQmFuY2FpcmUiKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtX2NsaWVu
dC52YWxpZGF0ZWRQYXltZW50TmV0d29yayhwYXltZW50TmV0d29yayk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0YWxsbWVudENvbmZp
Z3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRJbnN0
YWxsbWVudENvbmZpZ3VyYXRpb24ubW0KaW5kZXggN2UyMzE5ZTY5NmMyOTkxNGIwNWViMWI1OGQ0
OWEwNzljZWI1YzQ0Yi4uY2U1NzA4OTZmZmQ5YmRlZGM5NGZjN2M2ZmEzYTEzZDEwNGY1ODQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SW5zdGFs
bG1lbnRDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvUGF5bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbi5tbQpAQCAtMTU2LDcgKzE1Niw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8aWQ+IG1ha2VOU0FycmF5RWxlbWVudChjb25zdCBBcHBsZVBheUlu
c3RhbGxtZW50SXRlbSYgaXRlbSkKIHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheUluc3RhbGxtZW50
SXRlbT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQXBwbGVQYXlJbnN0YWxsbWVudEl0ZW0qLCBp
ZCBhcnJheUVsZW1lbnQpCiB7CiAgICAgaWYgKCFbYXJyYXlFbGVtZW50IGlzS2luZE9mQ2xhc3M6
UEFMOjpnZXRQS1BheW1lbnRJbnN0YWxsbWVudEl0ZW1DbGFzcygpXSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBLUGF5
bWVudEluc3RhbGxtZW50SXRlbSAqaXRlbSA9IGFycmF5RWxlbWVudDsKICAgICByZXR1cm4gQXBw
bGVQYXlJbnN0YWxsbWVudEl0ZW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbQppbmRleCAwMzMyYjgzNDBiODgzMWZhNzMwNTQzZjExMTBlNzI0ODZkNWVjOWQxLi4xMjkz
M2E0MWI5YjlmOTAwYTcxZjBjZDZkNzhiYTQ5N2FlNGE3Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRN
ZXJjaGFudFNlc3Npb25Db2NvYS5tbQpAQCAtMzgsMTEgKzM4LDExIEBAIE9wdGlvbmFsPFBheW1l
bnRNZXJjaGFudFNlc3Npb24+IFBheW1lbnRNZXJjaGFudFNlc3Npb246OmZyb21KUyhKU0M6OkpT
R2xvYmFsT2JqCiAgICAgLy8gRklYTUU6IERvbid0IHJvdW5kLXRyaXAgdXNpbmcgTlNTdHJpbmcu
CiAgICAgYXV0byBqc29uU3RyaW5nID0gSlNPTlN0cmluZ2lmeSgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUsIDApOwogICAgIGlmICghanNvblN0cmluZykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZGljdGlv
bmFyeSA9IGR5bmFtaWNfb2JqY19jYXN0PE5TRGljdGlvbmFyeT4oW05TSlNPTlNlcmlhbGl6YXRp
b24gSlNPTk9iamVjdFdpdGhEYXRhOlsoTlNTdHJpbmcgKilqc29uU3RyaW5nIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBvcHRpb25zOjAgZXJyb3I6bmlsXSk7CiAgICAg
aWYgKCFkaWN0aW9uYXJ5IHx8ICFbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25h
cnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGtQYXltZW50TWVyY2hhbnRTZXNzaW9uID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudE1lcmNoYW50U2Vzc2lvbkluc3RhbmNlKCkgaW5pdFdp
dGhEaWN0aW9uYXJ5OmRpY3Rpb25hcnldKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQppbmRleCA0
OGI1MTRkOWYwM2RkZmIxNWZhMThkZjhkYTFhYWQ4MWMzMzM5ZGM2Li4zYmI2M2YwMTc2YWUyODEx
ZGIyYzMxODUzNTQ5NjM3OTQzOGEzNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQpAQCAtNjQs
NyArNjQsNyBAQCBzdGF0aWMgQXBwbGVQYXlQYXltZW50UGFzczo6QWN0aXZhdGlvblN0YXRlIGNv
bnZlcnQoUEtQYXltZW50UGFzc0FjdGl2YXRpb25TdGF0ZQogc3RhdGljIE9wdGlvbmFsPEFwcGxl
UGF5UGF5bWVudFBhc3M+IGNvbnZlcnQoUEtQYXltZW50UGFzcyAqcGF5bWVudFBhc3MpCiB7CiAg
ICAgaWYgKCFwYXltZW50UGFzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFwcGxlUGF5UGF5bWVudFBhc3MgcmVzdWx0
OwogCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRo
b2Q6OlR5cGU+IGNvbnZlcnQoUEtQYXltZW50TWV0aG9kVHlwZSBwYXltZW50CiAgICAgICAgIHJl
dHVybiBBcHBsZVBheVBheW1lbnRNZXRob2Q6OlR5cGU6OlN0b3JlOwogICAgIGNhc2UgUEtQYXlt
ZW50TWV0aG9kVHlwZVVua25vd246CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTEx
OCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0KENOTGFiZWxlZFZhbHVlPENOUG9zdGFs
QWRkcmVzcyo+ICpwb3N0YWxBZGRyZXNzLCBBcHBsZVBheVBheQogc3RhdGljIE9wdGlvbmFsPEFw
cGxlUGF5UGF5bWVudENvbnRhY3Q+IGNvbnZlcnQoQ05Db250YWN0ICpiaWxsaW5nQ29udGFjdCkK
IHsKICAgICBpZiAoIWJpbGxpbmdDb250YWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQXBwbGVQYXlQYXltZW50Q29u
dGFjdCByZXN1bHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCmluZGV4
IDAwNmM2NDVkNjcwMzM0ZWFjMTk2ZGU0MDg1MDhhOTZlNWMxOWU0MmUuLjJjMDZiNDZlODM0NGI2
Zjc3ZTY0Y2M1NGJjYmZhNGFjNjgwYjhjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCkBAIC00MiwxNCArNDIsMTQgQEAgc3RhdGljIE9wdGlvbmFsPEFwcGxlUGF5U2Vzc2lv
bkVycm9yPiBhZGRpdGlvbmFsRXJyb3IoTlNFcnJvciAqZXJyb3IpCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBOU0ludGVnZXIgcGtQYXltZW50QXV0aG9yaXphdGlvbkZlYXR1cmVBcHBsaWNhdGlvbkVy
cm9yID0gLTIwMTY7CiAKICAgICBpZiAoZXJyb3IuY29kZSAhPSBwa1BheW1lbnRBdXRob3JpemF0
aW9uRmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZCBiaW5kVG9rZW5WYWx1ZSA9
IGVycm9yLnVzZXJJbmZvW2JpbmRUb2tlbktleV07CiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTighYmluZFRva2VuVmFsdWUgfHwgW2JpbmRUb2tlblZhbHVlIGlz
S2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKTsKICAgICByZXR1cm4gQXBwbGVQYXlTZXNzaW9u
RXJyb3IgeyAiZmVhdHVyZUFwcGxpY2F0aW9uRXJyb3IiX3MsIHsgeyAiYmluZFRva2VuIl9zLCAo
TlNTdHJpbmcgKiliaW5kVG9rZW5WYWx1ZSB9IH0gfTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGVycm9yKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFu
ZGxlci5jcHAKaW5kZXggNDhiZmE4OTU0OWJjNDMxOGMxODczOGUxMzQ0YTkyMjM0ZDk4YzY0Mi4u
NTYwMTQxODU5ZTFjYjJiMjhiN2VkNTlkMTUwZDhhNzljYmM2NzhjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1l
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1l
bnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC00MDksNyArNDA5LDcgQEAg
dm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wdXRlQWRkcmVzc0Vycm9ycyhTdHJpbmcm
JiBlcnJvciwgQWRkcmVzc0Vycm9ycyYKICAgICBpZiAoIW1fcGF5bWVudFJlcXVlc3QtPnBheW1l
bnRPcHRpb25zKCkucmVxdWVzdFNoaXBwaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBhcHBl
bmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92ZShlcnJvciksIFdURjo6bnVsbG9w
dCwgZXJyb3JzKTsKKyAgICBhcHBlbmRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3IoV1RGTW92
ZShlcnJvciksIHN0ZDo6bnVsbG9wdCwgZXJyb3JzKTsKICAgICBhcHBlbmRTaGlwcGluZ0NvbnRh
Y3RJbnZhbGlkRXJyb3IoV1RGTW92ZShhZGRyZXNzRXJyb3JzLmFkZHJlc3NMaW5lKSwgQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZDo6QWRkcmVzc0xpbmVzLCBlcnJvcnMpOwogICAgIGFwcGVuZFNo
aXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuY2l0eSksIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkxvY2FsaXR5LCBlcnJvcnMpOwogICAgIGFwcGVuZFNo
aXBwaW5nQ29udGFjdEludmFsaWRFcnJvcihXVEZNb3ZlKGFkZHJlc3NFcnJvcnMuY291bnRyeSks
IEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQ6OkNvdW50cnksIGVycm9ycyk7CkBAIC00NjEsNyAr
NDYxLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8c3RkOjp0dXBsZTxQYXltZW50RGV0YWlsc01v
ZGlmaWVyLCBBcHBsZVBheU1vZGlmaWVyPj4+IEFwcGwKIHsKICAgICBhdXRvJiBkZXRhaWxzID0g
bV9wYXltZW50UmVxdWVzdC0+cGF5bWVudERldGFpbHMoKTsKICAgICBpZiAoIWRldGFpbHMubW9k
aWZpZXJzKQotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJu
IHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gKmRv
Y3VtZW50KCkuZ2xvYmFsT2JqZWN0KCk7CiAKQEAgLTUwMCw3ICs1MDAsNyBAQCBFeGNlcHRpb25P
cjxPcHRpb25hbDxzdGQ6OnR1cGxlPFBheW1lbnREZXRhaWxzTW9kaWZpZXIsIEFwcGxlUGF5TW9k
aWZpZXI+Pj4gQXBwbAogICAgICAgICByZXR1cm4geyB7IHsgbW9kaWZpZXIsIFdURk1vdmUoYXBw
bGVQYXlNb2RpZmllcikgfSB9IH07CiAgICAgfQogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0
IH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRldGFpbHNVcGRhdGVkKFBheW1lbnRSZXF1ZXN0OjpV
cGRhdGVSZWFzb24gcmVhc29uLCBTdHJpbmcmJiBlcnJvciwgQWRkcmVzc0Vycm9ycyYmIGFkZHJl
c3NFcnJvcnMsIFBheWVyRXJyb3JGaWVsZHMmJiBwYXllckVycm9ycywgSlNDOjpKU09iamVjdCog
cGF5bWVudE1ldGhvZEVycm9ycykKQEAgLTY0Nyw4ICs2NDcsOCBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZChWZWN0b3I8UmVm
UHRyPEFwcAogdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpjb21wbGV0ZShPcHRpb25hbDxQ
YXltZW50Q29tcGxldGU+JiYgcmVzdWx0KQogewogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAg
IEFTU0VSVChpc0ZpbmFsU3RhdGVSZXN1bHQoV1RGOjpudWxsb3B0KSk7Ci0gICAgICAgIHBheW1l
bnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5bWVudFNlc3Npb24oV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgQVNTRVJUKGlzRmluYWxTdGF0ZVJlc3VsdChzdGQ6Om51bGxvcHQpKTsKKyAgICAgICAg
cGF5bWVudENvb3JkaW5hdG9yKCkuY29tcGxldGVQYXltZW50U2Vzc2lvbihzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODAsNyArNjgwLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cmV0cnkoUGF5bWVudFZhbGlkYXRpb25F
cnJvcnMmJiB2YWxpZGEKIAogICAgIC8vIEVuc3VyZSB0aGVyZSBpcyBhbHdheXMgYXQgbGVhc3Qg
b25lIGVycm9yIHRvIGF2b2lkIGhhdmluZyBhIGZpbmFsIHJlc3VsdC4KICAgICBpZiAoZXJyb3Jz
LmlzRW1wdHkoKSkKLSAgICAgICAgZXJyb3JzLmFwcGVuZChBcHBsZVBheUVycm9yOjpjcmVhdGUo
QXBwbGVQYXlFcnJvckNvZGU6OlVua25vd24sIFdURjo6bnVsbG9wdCwgbnVsbFN0cmluZygpKSk7
CisgICAgICAgIGVycm9ycy5hcHBlbmQoQXBwbGVQYXlFcnJvcjo6Y3JlYXRlKEFwcGxlUGF5RXJy
b3JDb2RlOjpVbmtub3duLCBzdGQ6Om51bGxvcHQsIG51bGxTdHJpbmcoKSkpOwogCiAgICAgUGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQgYXV0aG9yaXphdGlvblJlc3VsdCB7IFBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlLCBXVEZNb3ZlKGVycm9ycykgfTsKICAgICBBU1NFUlQo
IWlzRmluYWxTdGF0ZVJlc3VsdChhdXRob3JpemF0aW9uUmVzdWx0KSk7CkBAIC03MDEsNyArNzAx
LDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjp2YWxpZGF0ZU1lcmNoYW50KFVSTCYm
IHZhbGlkYXRpb25VUkwpCiAKIHN0YXRpYyBSZWY8UGF5bWVudEFkZHJlc3M+IGNvbnZlcnQoY29u
c3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICByZXR1cm4gUGF5bWVu
dEFkZHJlc3M6OmNyZWF0ZShjb250YWN0LmNvdW50cnlDb2RlLCBjb250YWN0LmFkZHJlc3NMaW5l
cy52YWx1ZU9yKFZlY3RvcjxTdHJpbmc+KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwg
Y29udGFjdC5sb2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2Rl
LCBTdHJpbmcoKSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9u
ZU51bWJlcik7CisgICAgcmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3Vu
dHJ5Q29kZSwgY29udGFjdC5hZGRyZXNzTGluZXMudmFsdWVfb3IoVmVjdG9yPFN0cmluZz4oKSks
IGNvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhLCBjb250YWN0LmxvY2FsaXR5LCBjb250YWN0LnN1
YkxvY2FsaXR5LCBjb250YWN0LnBvc3RhbENvZGUsIFN0cmluZygpLCBTdHJpbmcoKSwgY29udGFj
dC5sb2NhbGl6ZWROYW1lLCBjb250YWN0LnBob25lTnVtYmVyKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OmRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgUGF5bWVudCYgcGF5bWVudCkKICAgICBBU1NFUlQo
bV91cGRhdGVTdGF0ZSA9PSBVcGRhdGVTdGF0ZTo6Tm9uZSk7CiAKICAgICBhdXRvIGFwcGxlUGF5
UGF5bWVudCA9IHBheW1lbnQudG9BcHBsZVBheVBheW1lbnQodmVyc2lvbigpKTsKLSAgICBhdXRv
IHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0NvbnRhY3QudmFsdWVP
cihBcHBsZVBheVBheW1lbnRDb250YWN0KCkpOworICAgIGF1dG8gc2hpcHBpbmdDb250YWN0ID0g
YXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdC52YWx1ZV9vcihBcHBsZVBheVBheW1lbnRD
b250YWN0KCkpOwogICAgIGF1dG8gZGV0YWlsc0Z1bmN0aW9uID0gW2FwcGxlUGF5UGF5bWVudCA9
IFdURk1vdmUoYXBwbGVQYXlQYXltZW50KV0oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCkgewogICAgICAgICByZXR1cm4gdG9KU0RpY3Rpb25hcnkobGV4aWNhbEdsb2Jh
bE9iamVjdCwgYXBwbGVQYXlQYXltZW50KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1h
bmlmZXN0LmgKaW5kZXggN2JlMWEwZDFkZTMwODE2ODM4ZGM1NzJlNDRlNGU1Mzk1OWNiY2MwYi4u
YmUxODMyMzFhZTk1YzM3MzYzM2E3NGUxYzc0ZTcxYTliMWFjNDEwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdC5oCkBAIC02NiwxOSArNjYsMTkgQEAgT3B0aW9uYWw8QXBwbGljYXRp
b25NYW5pZmVzdD4gQXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgQXBwbGljYXRpb25NYW5pZmVzdCByZXN1bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5uYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG9y
dE5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRlc2NyaXB0aW9uKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY29wZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuZGlzcGxheSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuc3RhcnRVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRo
ZW1lQ29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmQuY3BwCmluZGV4IDQwYmIw
NmFmMjlkOWU0NWQwZDU5OWIzMTg5YjBkNjMwYzQ1Yjg1YzQuLjE5OTcwNWU1Nzk3YjA4N2U3MzM3
MDVkOWExMDUzZGFlMjIyYTYyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQg
Q2xpcGJvYXJkOjp3cml0ZVRleHQoY29uc3QgU3RyaW5nJiBkYXRhLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB2b2lkIENsaXBib2FyZDo6cmVhZChSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgYXV0byByZWplY3RQcm9taXNlQW5kQ2xlYXJBY3RpdmVTZXNz
aW9uID0gWyZdIHsKLSAgICAgICAgbV9hY3RpdmVTZXNzaW9uID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2FjdGl2ZVNlc3Npb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHByb21pc2UtPnJl
amVjdChOb3RBbGxvd2VkRXJyb3IpOwogICAgIH07CiAKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lk
IENsaXBib2FyZDo6Z2V0VHlwZShDbGlwYm9hcmRJdGVtJiBpdGVtLCBjb25zdCBTdHJpbmcmIHR5
cGUsIFJlZjxEZWZlcnJlZFBybwogCiAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIodGhpcy0+
ZnJhbWUoKSk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBtX2FjdGl2ZVNlc3Npb24gPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdEFsbG93ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yNjIsNyArMjYyLDcgQEAgQ2xpcGJvYXJkOjpTZXNzaW9uSXNWYWxpZCBDbGlw
Ym9hcmQ6OnVwZGF0ZVNlc3Npb25WYWxpZGl0eSgpCiAgICAgICAgIHJldHVybiBTZXNzaW9uSXNW
YWxpZDo6Tm87CiAKICAgICBpZiAobV9hY3RpdmVTZXNzaW9uLT5jaGFuZ2VDb3VudCAhPSBhY3Rp
dmVQYXN0ZWJvYXJkKCkuY2hhbmdlQ291bnQoKSkgewotICAgICAgICBtX2FjdGl2ZVNlc3Npb24g
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fYWN0aXZlU2Vzc2lvbiA9IHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIFNlc3Npb25Jc1ZhbGlkOjpObzsKICAgICB9CiAKQEAgLTMxNyw3ICsz
MTcsNyBAQCB2b2lkIENsaXBib2FyZDo6SXRlbVdyaXRlcjo6d3JpdGUoY29uc3QgVmVjdG9yPFJl
ZlB0cjxDbGlwYm9hcmRJdGVtPj4mIGl0ZW1zKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIG1f
Y2hhbmdlQ291bnRBdFN0YXJ0ID0gbV9wYXN0ZWJvYXJkLT5jaGFuZ2VDb3VudCgpOwogI2VuZGlm
Ci0gICAgbV9kYXRhVG9Xcml0ZS5maWxsKFdURjo6bnVsbG9wdCwgaXRlbXMuc2l6ZSgpKTsKKyAg
ICBtX2RhdGFUb1dyaXRlLmZpbGwoc3RkOjpudWxsb3B0LCBpdGVtcy5zaXplKCkpOwogICAgIG1f
cGVuZGluZ0l0ZW1Db3VudCA9IGl0ZW1zLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9
IDA7IGluZGV4IDwgaXRlbXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGl0ZW1zW2luZGV4
XS0+Y29sbGVjdERhdGFGb3JXcml0aW5nKCptX2NsaXBib2FyZCwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5kZXhdIChhdXRvIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5n
c0RhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKaW5kZXggNGVkZGY4NWQyN2NjNDA0
NTBmMmEzMWVhMDdmN2JlNmQ2YjcwMWY0OC4uYTYyMDE2YmI1NTA0MWUzZGE4ODdmNGYxZGZmN2M3
OTIwNDhjMDhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0Rh
dGFTb3VyY2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKIAogICAgIGF1dG8gZG9jdW1lbnQg
PSBkb2N1bWVudEZyb21DbGlwYm9hcmQoY2xpcGJvYXJkLmdldCgpKTsKICAgICBpZiAoIWRvY3Vt
ZW50KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3Vy
Y2U6Omludm9rZUNvbXBsZXRpb25IYW5kbGVyKCkKICAgICAgICAgZWxzZSBpZiAoV1RGOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBjdXN0
b21EYXRhLndyaXRlRGF0YSh0eXBlLCBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSku
Y29weVJlZigpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0
ZWJvYXJkRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9DbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuY3BwCmluZGV4IDQzMWUyYjVk
M2I3NTJlZjhlZmVhZTg5NDFmNWEwOTE3OTM5MGFmZGEuLjc4NTVjMGVkMTUwOGViZDU0ZDU5ZWY2
ZmQ4ZGJjNmRkYWJiNTllNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1QYXN0ZWJvYXJkRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbVBhc3Rl
Ym9hcmREYXRhU291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1Q
YXN0ZWJvYXJkRGF0YVNvdXJjZTo6Y29sbGVjdERhdGFGb3JXcml0aW5nKENsaXBib2FyZCYsIENv
bXBsZQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIFRoaXMgaXMgbmVlZGVkIHRv
IHN1cHBvcnQgd3JpdGluZyBwbGF0Zm9ybS1iYWNrZWQgQ2xpcGJvYXJkSXRlbXMKICAgICAvLyBi
YWNrIHRvIHRoZSBwYXN0ZWJvYXJkIHVzaW5nIENsaXBib2FyZC53cml0ZSgpLgotICAgIGNvbXBs
ZXRpb24oV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uKHN0ZDo6bnVsbG9wdCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggNmZhNDAzMDE2YTBlMjk3MzM1MTRjYjFmNTk3YTYxYmVjN2NjOGM4Yy4u
OTVhODdkZDc5MWEzMTI0NTJkMDdmYzdiY2NhODE0YWViMmY3MDQ4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIFJl
ZjxGZXRjaFJlc3BvbnNlPiBjcmVhdGVSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdAogewogICAgIGF1dG8gcmVzb3VyY2VSZXNwb25zZSA9IHJlY29yZC5yZXNw
b25zZTsKICAgICByZXNvdXJjZVJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OkRPTUNhY2hlKTsKLSAgICBhdXRvIHJlc3BvbnNlID0gRmV0Y2hSZXNwb25zZTo6Y3Jl
YXRlKGNvbnRleHQsIFdURjo6bnVsbG9wdCwgcmVjb3JkLnJlc3BvbnNlSGVhZGVyc0d1YXJkLCBX
VEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gRmV0Y2hSZXNw
b25zZTo6Y3JlYXRlKGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgcmVjb3JkLnJlc3BvbnNlSGVhZGVy
c0d1YXJkLCBXVEZNb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKICAgICByZXNwb25zZS0+c2V0Qm9k
eURhdGEoY29weVJlc3BvbnNlQm9keShyZWNvcmQucmVzcG9uc2VCb2R5KSwgcmVjb3JkLnJlc3Bv
bnNlQm9keVNpemUpOwogICAgIHJldHVybiByZXNwb25zZTsKIH0KQEAgLTQxOCw3ICs0MTgsNyBA
QCB2b2lkIERPTUNhY2hlOjpyZW1vdmUoUmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0
aW9ucyYmIG9wdGlvbnMsIERPTVByb21pcwogc3RhdGljIFJlZjxGZXRjaFJlcXVlc3Q+IGNyZWF0
ZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRE9NQ2FjaGVF
bmdpbmU6OlJlY29yZCYgcmVjb3JkKQogewogICAgIGF1dG8gcmVxdWVzdEhlYWRlcnMgPSBGZXRj
aEhlYWRlcnM6OmNyZWF0ZShyZWNvcmQucmVxdWVzdEhlYWRlcnNHdWFyZCwgSFRUUEhlYWRlck1h
cCB7IHJlY29yZC5yZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSB9KTsKLSAgICByZXR1cm4gRmV0
Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3RI
ZWFkZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5yZXF1ZXN0IH0sIEZldGNoT3B0aW9u
cyB7IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29yZC5yZWZlcnJlciB9KTsKKyAgICBy
ZXR1cm4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KHJlcXVlc3RIZWFkZXJzKSwgIFJlc291cmNlUmVxdWVzdCB7IHJlY29yZC5yZXF1ZXN0IH0sIEZl
dGNoT3B0aW9ucyB7IHJlY29yZC5vcHRpb25zIH0sIFN0cmluZyB7IHJlY29yZC5yZWZlcnJlciB9
KTsKIH0KIAogdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0SW5mbz4mJiBpbmZv
LCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEtleXNQcm9taXNlJiYgcHJvbWlzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVFbmdpbmUuaAppbmRleCAwN2Ex
ODIzZTU5ZDI2ODY0NzQ4ZDQxMDcwZWU0YTIyODNlOGYzNTYzLi44ZTYyZmExOTFjMmM5ZTgzN2Y4
ZWQwOTMyNGQ3OThlYjUyZjVjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlRW5naW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZUVuZ2luZS5oCkBAIC0xMjgsMTIgKzEyOCwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBpbmxpbmUgT3B0aW9uYWw8Q2FjaGVJbmZvcz4gQ2FjaGVJbmZvczo6ZGVjb2RlKERl
Y29kZXImCiAgICAgT3B0aW9uYWw8VmVjdG9yPENhY2hlSW5mbz4+IGluZm9zOwogICAgIGRlY29k
ZXIgPj4gaW5mb3M7CiAgICAgaWYgKCFpbmZvcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB1cGRhdGVDb3VudGVyOwogICAgIGRlY29kZXIgPj4gdXBkYXRlQ291bnRlcjsKICAgICBpZiAo
IXVwZGF0ZUNvdW50ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaW5mb3MpLCBXVEZN
b3ZlKCp1cGRhdGVDb3VudGVyKSB9fTsKIH0KQEAgLTE0OSwxMiArMTQ5LDEyIEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBPcHRpb25hbDxDYWNoZUlkZW50aWZpZXJPcGVyYXRpb25S
ZXN1bHQ+IENhY2hlSWRlCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGhhZFN0b3JhZ2VFcnJvcjsKICAgICBkZWNvZGVyID4+IGhhZFN0b3JhZ2VF
cnJvcjsKICAgICBpZiAoIWhhZFN0b3JhZ2VFcnJvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgV1RGTW92
ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKmhhZFN0b3JhZ2VFcnJvcikgfX07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcAppbmRleCA1
MDI2NzBiOTQ0OGU5MzE4NmEwZDJkMjdjMTJjZThhZjM2MDUxYzdhLi5mYTA1MGMyOGNmZmU1ZmZl
ZDk2ZDg4OGY5ODIyOWRkNDIyNDk1YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIE9wdGlvbmFsPENs
aWVudE9yaWdpbj4gRE9NQ2FjaGVTdG9yYWdlOjpvcmlnaW4oKSBjb25zdAogewogICAgIGF1dG8q
IG9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7CiAgICAgaWYgKCFvcmlnaW4pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gQ2xpZW50T3JpZ2luIHsgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT50b3BP
cmlnaW4oKS5kYXRhKCksIG9yaWdpbi0+ZGF0YSgpIH07CiB9CkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBET01DYWNoZVN0b3JhZ2U6OnJldHJpZXZlQ2FjaGVzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8RXhjZXB0aW9uPiYKICAgICAgICAgICAgICAgICByZXR1cm4gZmluZENhY2hl
T3JDcmVhdGUoV1RGTW92ZShpbmZvKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAg
ICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxv
cHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL1JldHJpZXZlUmVjb3Jkc09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2Fj
aGUvUmV0cmlldmVSZWNvcmRzT3B0aW9ucy5oCmluZGV4IGRmYWZhMDgzY2M3MDAzODFlMGI4M2Vl
MGNjMmE4M2NmYjc1NDEzNDcuLmFmZjI3OGQ3NTFmY2QzZDhiMDQ5Nzk2MGQzYTI4MmRmODZhNTBh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVSZWNv
cmRzT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvUmV0cmlldmVS
ZWNvcmRzT3B0aW9ucy5oCkBAIC01MywyNyArNTMsMjcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gaW5saW5lIE9wdGlvbmFsPFJldHJpZXZlUmVjb3Jkc09wdGlvbnM+IFJldHJpZXZlUmVjb3Jk
c08KICAgICBPcHRpb25hbDxSZXNvdXJjZVJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgZGVjb2RlciA+
PiByZXF1ZXN0OwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGln
bm9yZVNlYXJjaDsKICAgICBkZWNvZGVyID4+IGlnbm9yZVNlYXJjaDsKICAgICBpZiAoIWlnbm9y
ZVNlYXJjaCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlnbm9yZU1ldGhvZDsKICAgICBkZWNv
ZGVyID4+IGlnbm9yZU1ldGhvZDsKICAgICBpZiAoIWlnbm9yZU1ldGhvZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGlnbm9yZVZhcnk7CiAgICAgZGVjb2RlciA+PiBpZ25vcmVWYXJ5OwogICAg
IGlmICghaWdub3JlVmFyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFByb3ZpZGVS
ZXNwb25zZTsKICAgICBkZWNvZGVyID4+IHNob3VsZFByb3ZpZGVSZXNwb25zZTsKICAgICBpZiAo
IXNob3VsZFByb3ZpZGVSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcmVx
dWVzdCksIFdURk1vdmUoKmlnbm9yZVNlYXJjaCksIFdURk1vdmUoKmlnbm9yZU1ldGhvZCksIFdU
Rk1vdmUoKmlnbm9yZVZhcnkpLCBXVEZNb3ZlKCpzaG91bGRQcm92aWRlUmVzcG9uc2UpIH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29u
dGFjdEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNrZXIvQ29udGFj
dEluZm8uaAppbmRleCAxMmZmNTE0ZWFmNTRlMzFlYjU4M2I0YjE5N2JkNDNmOTYwZWU3MjA1Li4z
MGViNDYxN2JhYTg4MmNkOWVkMTk4NmQxNjJlMWEzZGU4N2ZkM2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NvbnRhY3QtcGlja2VyL0NvbnRhY3RJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9Db250YWN0SW5mby5oCkBAIC01NCwx
NyArNTQsMTcgQEAgT3B0aW9uYWw8Q29udGFjdEluZm8+IENvbnRhY3RJbmZvOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbmFtZTsKICAgICBk
ZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IGVtYWlsOwogICAgIGRlY29kZXIgPj4gZW1haWw7CiAgICAgaWYgKCFlbWFpbCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiB0ZWw7CiAgICAgZGVjb2RlciA+PiB0
ZWw7CiAgICAgaWYgKCF0ZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKm5hbWUsICplbWFpbCwgKnRl
bCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY29udGFjdC1waWNr
ZXIvQ29udGFjdHNSZXF1ZXN0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0
LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKaW5kZXggNGZlMDdmN2E4OGNlZmEwODM1NmNh
Y2VjZTAxM2NlY2I3NzY5M2U5ZC4uMzBiMGNmMjczOGM4YmE0MWVlYzU4MGU2ZDk1YjI4NmFlNDQ1
MmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0LXBpY2tlci9D
b250YWN0c1JlcXVlc3REYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jb250YWN0
LXBpY2tlci9Db250YWN0c1JlcXVlc3REYXRhLmgKQEAgLTU2LDE3ICs1NiwxNyBAQCBPcHRpb25h
bDxDb250YWN0c1JlcXVlc3REYXRhPiBDb250YWN0c1JlcXVlc3REYXRhOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGFjdFByb3BlcnR5Pj4gcHJvcGVy
dGllczsKICAgICBkZWNvZGVyID4+IHByb3BlcnRpZXM7CiAgICAgaWYgKCFwcm9wZXJ0aWVzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gbXVsdGlwbGU7CiAgICAgZGVjb2RlciA+PiBtdWx0aXBs
ZTsKICAgICBpZiAoIW11bHRpcGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB1cmw7CiAg
ICAgZGVjb2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnBy
b3BlcnRpZXMsICptdWx0aXBsZSwgKnVybCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAppbmRleCBiNGRlMWFlY2YyM2VhZjJiMWRiZTlhNGUy
NTllOGNjNWVmMmRlN2UzLi4wMTZlMDNmOGY3NzNmNzQ4ZjA2YmFhNWNlMzQyZmRhOGY4YThlODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNhbmRpZGF0ZUNvbmZpCiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFtX3ByaXZhdGUpIHsKLSAgICAgICAgY2FsbGJhY2soV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTU3LDcgKzE1Nyw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENE
TTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogT3B0aW9u
YWw8U3RyaW5nPiBDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KQogewogICAgIGlmICghbV9wcml2YXRlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0
aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwCmluZGV4IDM0
NjIzYjFkMzMxMTRhYzFlYTJkMDYwODM0MjY2OWU5NmU1OTg0MjUuLjQxOWRiOGQ1MTdkZmIzYTQz
NDA3ZThhMWIxMTBmZmUwMjE1OTExNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcApAQCAtNTksMjAg
KzU5LDIwIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgLy8gMS4gRm9ybWF0CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkv
aW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CiAgICAgaWYgKGJ1ZmZlci5zaXplKCkgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3RyaW5nIGpzb24geyBi
dWZmZXIuZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYnVmZmVyLnNpemUoKSkgfTsKIAog
ICAgIGF1dG8gdmFsdWUgPSBKU09OOjpWYWx1ZTo6cGFyc2VKU09OKGpzb24pOwogICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIG9iamVjdCA9IHZhbHVlLT5hc09iamVjdCgpOwogICAgIGlm
ICghb2JqZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBraWRzQXJyYXkgPSBvYmplY3QtPmdldEFycmF5KCJr
aWRzIl9zKTsKICAgICBpZiAoIWtpZHNBcnJheSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CkBA
IC04NSw3ICs4NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IFNoYXJlZEJ1ZmZlCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBpZiAoa2V5SUREYXRhLT5zaXplKCkgPCBrS2V5SWRzTWluS2V5SWRT
aXplSW5CeXRlcyB8fCBrZXlJRERhdGEtPnNpemUoKSA+IGtLZXlJZHNNYXhLZXlJZFNpemVJbkJ5
dGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAga2V5SURzLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShXVEZNb3ZlKCprZXlJRERhdGEpKSk7CiAgICAgfQpAQCAtMTE2LDcgKzExNiw3IEBAIE9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmlj
SGVhZGVyQm94Pj4+IEluaXREYXRhCiAgICAgLy8gNC4gQ29tbW9uIFN5c3RlbUlEIGFuZCBQU1NI
IEJveCBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
L2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9jZW5jLmh0bWwjY29tbW9uLXN5c3RlbQogICAgIGlm
IChidWZmZXIuc2l6ZSgpID49IGtDZW5jTWF4Qm94U2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IDA7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVt
U3BlY2lmaWNIZWFkZXJCb3g+PiBwc3NoQm94ZXM7CkBAIC0xMjcsMTQgKzEyNywxNCBAQCBPcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBJbml0RGF0YQogICAgICAgICBhdXRvJiBib3hTaXplID0gb3B0aW9uYWxCb3hU
eXBlLnZhbHVlKCkuc2Vjb25kOwogCiAgICAgICAgIGlmIChib3hUeXBlTmFtZSAhPSBJU09Qcm90
ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFkZXJCb3g6OmJveFR5cGVOYW1lKCkgfHwgYm94U2l6ZSA+
IGJ1ZmZlci5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHN5c3RlbUlEID0gSVNP
UHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94OjpwZWVrU3lzdGVtSUQodmlldywgb2Zm
c2V0KTsKICNpZiBIQVZFKEZBSVJQTEFZU1RSRUFNSU5HX0NFTkNfSU5JVERBVEEpCiAgICAgICAg
IGlmIChzeXN0ZW1JRCA9PSBJU09GYWlyUGxheVN0cmVhbWluZ1Bzc2hCb3g6OmZhaXJQbGF5U3lz
dGVtSUQoKSkgewogICAgICAgICAgICAgYXV0byBmcHNQc3NoID0gbWFrZVVuaXF1ZTxJU09GYWly
UGxheVN0cmVhbWluZ1Bzc2hCb3g+KCk7CiAgICAgICAgICAgICBpZiAoIWZwc1Bzc2gtPnJlYWQo
dmlldywgb2Zmc2V0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBwc3NoQm94ZXMu
YXBwZW5kKFdURk1vdmUoZnBzUHNzaCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBPcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElT
T1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbml0RGF0YQogI2VuZGlmCiAg
ICAgICAgIGF1dG8gcHNzaEJveCA9IG1ha2VVbmlxdWU8SVNPUHJvdGVjdGlvblN5c3RlbVNwZWNp
ZmljSGVhZGVyQm94PigpOwogICAgICAgICBpZiAoIXBzc2hCb3gtPnJlYWQodmlldywgb2Zmc2V0
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHBzc2hCb3hlcy5hcHBlbmQoV1RGTW92ZShwc3NoQm94
KSk7CiAgICAgfQpAQCAtMTU3LDEyICsxNTcsMTIgQEAgT3B0aW9uYWw8VmVjdG9yPFJlZjxTaGFy
ZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgU2gK
IAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hCb3hlc0Zyb21DZW5jKGJ1ZmZlcik7
CiAgICAgaWYgKCFwc3NoQm94ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKGF1dG8mIHBzc2hCb3ggOiBwc3No
Qm94ZXMudmFsdWUoKSkgewogICAgICAgICBBU1NFUlQocHNzaEJveCk7CiAgICAgICAgIGlmICgh
cHNzaEJveCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgSEFWRShGQUlSUExBWVNUUkVBTUlOR19DRU5DX0lO
SVREQVRBKQogICAgICAgICBpZiAoaXM8SVNPRmFpclBsYXlTdHJlYW1pbmdQc3NoQm94PigqcHNz
aEJveCkpIHsKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1dlYk0oY29uc3QgU2hhcmVkQnVmZmVyJgogICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShidWZmZXIpOwogICAgIGlmICghc2Fu
aXRpemVkQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvd2VibS5o
dG1sI2Zvcm1hdApAQCAtMjQ1LDcgKzI0NSw3IEBAIE9wdGlvbmFsPFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0CiB7
CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYgKGl0
ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gaXRlci0+dmFsdWUuZXh0cmFjdEtleUlEcyhidWZmZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKaW5kZXggYzg1Zjc5OTdlZjg0MWM2MTk1NDJlMTdiNjc5MDY1NWI5ZWNjOGEy
My4uYjQ5MTMzMWExNjc4NjM0NmU4ZTdjNzc0Mzk5MTg5YTRhN2RiOTkyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNz
aW9uLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAKICAg
ICAgICAgICAgICAgICAvLyA4LjkuNS4gUnVuIHRoZSBVcGRhdGUgRXhwaXJhdGlvbiBhbGdvcml0
aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBleHBpcmF0aW9uIHRpbWUuCiAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBtdXN0IGJlIHJ1biwgYW5kIE5hTiBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBp
ZiB0aGUgQ0RNIGluc3RhbmNlIGRvZXNuJ3QgcHJvdmlkZSBvbmUuCi0gICAgICAgICAgICAgICAg
dXBkYXRlRXhwaXJhdGlvbihleHBpcmF0aW9uLnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKSkpOworICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGlyYXRpb24o
ZXhwaXJhdGlvbi52YWx1ZV9vcihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpKSk7CiAKICAgICAgICAgICAgICAgICAvLyA4LjkuNi4gSWYgbWVzc2FnZSBpcyBub3QgbnVs
bCwgcnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0aG0gb24gdGhlIHNlc3Np
b24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAg
aWYgKG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U3RhdHVzTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCmluZGV4IDdhN2QwMDg2YWJlYWNmYmQ1
NWM4MTkxMTgzZTNmZGQ2NmIxMjk2NWMuLmQ5MzdmYzkzYWFkYzc4ZjQwMGRlMmQ5M2QxOWY2MThi
M2I2YTIxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvTWVkaWFLZXlTdGF0dXNNYXAuY3BwCkBAIC05NywxMSArOTcsMTEgQEAgTWVk
aWFLZXlTdGF0dXNNYXA6Okl0ZXJhdG9yOjpJdGVyYXRvcihNZWRpYUtleVN0YXR1c01hcCYgbWFw
KQogT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8QnVmZmVyU291cmNlOjpWYXJpYW50VHlwZSwg
TWVkaWFLZXlTdGF0dXM+PiBNZWRpYUtleVN0YXR1c01hcDo6SXRlcmF0b3I6Om5leHQoKQogewog
ICAgIGlmICghbV9tYXAtPm1fc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0YXR1c2VzID0gbV9t
YXAtPm1fc2Vzc2lvbi0+c3RhdHVzZXMoKTsKICAgICBpZiAobV9pbmRleCA+PSBzdGF0dXNlcy5z
aXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwYWlyID0gc3RhdHVzZXNbbV9pbmRleCsrXTsKICAgICBh
dXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUocGFpci5maXJzdC0+ZGF0YSgpLCBwYWly
LmZpcnN0LT5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRy
aWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVz
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGU2ZTJjYmZjZjExNjBmY2Q4YjVlYjU2ODlkMzJl
MGY0NjBlZGUxNWIuLmIwMGE0OGRhNDNjOThkMzA0ODU4YWNlYTYxNjViMjY1ODRkNDQxNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IExpc3RlZENoaWxkIHsKIHN0YXRpYyBPcHRp
b25hbDxGaWxlU3lzdGVtOjpGaWxlVHlwZT4gZmlsZVR5cGVJZ25vcmluZ0hpZGRlbkZpbGVzKGNv
bnN0IFN0cmluZyYgZnVsbFBhdGgpCiB7CiAgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGlkZGVuRmls
ZShmdWxsUGF0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVUeXBlKGZ1bGxQYXRo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4
IGU4YzYyYWVlYzM5MmY1ZTI0ZGI2ZThkNDhmOWEwZTdlNmQyZWQ0NzYuLjQyMmUwNjNmMWE1ZTdm
ZWExZTZjNjQ3ODg5YjA5YTE3NDAyMzUyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8RmV0Y2hCb2R5PiBG
ZXRjaEJvZHk6OmZyb21Gb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBG
b3IKICAgICB9CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBmb3JtIGRhdGEgYm9kaWVzLgotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiBvd25lciwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA5YjY5NTYwMzAwYWI2OTkyMzUzYTNhOWMx
OTcwNDIxNzRmYzY2ZDViLi5mYzZhNmExYjA5NDk3ZDFlNTM3ZTljODNmN2NmZmY5ZGU3NGUzNzUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcApAQCAtMTEyLDE2ICsxMTIsMTYgQEAgc3RhdGljIE9wdGlvbmFsPE1pbWVUeXBlPiBw
YXJzZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgU3RyaW5nIGlucHV0
ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGNvbnRlbnRUeXBlKTsKICAgICBz
aXplX3Qgc2xhc2hJbmRleCA9IGlucHV0LmZpbmQoJy8nKTsKICAgICBpZiAoc2xhc2hJbmRleCA9
PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vic3RyaW5nKDAsIHNs
YXNoSW5kZXgpOwogICAgIGlmICghdHlwZS5sZW5ndGgoKSB8fCAhaXNWYWxpZEhUVFBUb2tlbih0
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICBzaXplX3Qgc2VtaWNvbG9uSW5kZXggPSBpbnB1dC5maW5kKCc7
Jywgc2xhc2hJbmRleCk7CiAgICAgU3RyaW5nIHN1YnR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUVFBTcGFjZXMoaW5wdXQuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxLCBzZW1pY29sb25J
bmRleCAtIHNsYXNoSW5kZXggLSAxKSk7CiAgICAgaWYgKCFzdWJ0eXBlLmxlbmd0aCgpIHx8ICFp
c1ZhbGlkSFRUUFRva2VuKHN1YnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUodHlw
ZSksIFdURk1vdmUoc3VidHlwZSksIHBhcnNlUGFyYW1ldGVycyhTdHJpbmdWaWV3KGlucHV0KSwg
c2VtaWNvbG9uSW5kZXggKyAxKSB9fTsKIH0KQEAgLTE3NSwxMyArMTc1LDEzIEBAIHN0YXRpYyBS
ZWZQdHI8RE9NRm9ybURhdGE+IHBhY2thZ2VGb3JtRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zCiAgICAgCiAgICAgYXV0byBwYXJzZU11bHRpcGFydEJvdW5kYXJ5ID0g
W10gKGNvbnN0IE9wdGlvbmFsPE1pbWVUeXBlPiYgbWltZVR5cGUpIC0+IE9wdGlvbmFsPFN0cmlu
Zz4gewogICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLT50eXBlLCAibXVsdGlwYXJ0IikgJiYgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZS0+c3VidHlwZSwgImZvcm0tZGF0YSIpKSB7CiAgICAg
ICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbWltZVR5cGUtPnBhcmFtZXRlcnMuZmluZCgiYm91bmRh
cnkiX3MpOwogICAgICAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1pbWVUeXBlLT5wYXJhbWV0ZXJz
LmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWU7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9OwogCiAgICAgYXV0byBmb3JtID0gRE9NRm9ybURhdGE6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IGMzMjRlN2RhNjQyZTM1NjY1YTJmYTE5MTgzYzcyMDgwMzUxNzhjMzQu
LjMxY2NhOTJjNzM2ZmRiYjVhNzA0ODdjY2QyYjk5NWUyYzExZjQ5OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yNTIsNyArMjUy
LDcgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6bG9hZEJsb2IoY29uc3QgQmxvYiYgYmxvYiwgRmV0
Y2hCb2R5Q29uc3VtZXIqIGNvbnN1bWVyKQogICAgIG1fYmxvYkxvYWRlci0+bG9hZGVyLT5zdGFy
dCgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iKTsKICAgICBpZiAoIW1fYmxvYkxvYWRl
ci0+bG9hZGVyLT5pc1N0YXJ0ZWQoKSkgewogICAgICAgICBtX2JvZHktPmxvYWRpbmdGYWlsZWQo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQmxvYiBsb2FkaW5nIGZhaWxlZCJfc30pOwotICAgICAg
ICBtX2Jsb2JMb2FkZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fYmxvYkxvYWRlciA9IHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTI2MSw3ICsyNjEsNyBA
QCB2b2lkIEZldGNoQm9keU93bmVyOjpmaW5pc2hCbG9iTG9hZGluZygpCiB7CiAgICAgQVNTRVJU
KG1fYmxvYkxvYWRlcik7CiAKLSAgICBtX2Jsb2JMb2FkZXIgPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9ibG9iTG9hZGVyID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZldGNoQm9keU93bmVyOjpi
bG9iTG9hZGluZ1N1Y2NlZWRlZCgpCkBAIC0zODIsNyArMzgyLDcgQEAgT3B0aW9uYWw8RXhjZXB0
aW9uPiBGZXRjaEJvZHlPd25lcjo6bG9hZGluZ0V4Y2VwdGlvbigpIGNvbnN0CiAgICAgfSwgW10o
Y29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pIHsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IGV4Y2VwdGlvbiB9OwogICAgIH0sIFtdKGF1dG8mJikgLT4gT3B0aW9uYWw8RXhjZXB0aW9uPiB7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hIZWFkZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hI
ZWFkZXJzLmNwcAppbmRleCA1N2FkZGQzNGE5YTE2YzhkZmQ4NzAyNDM1MTc5YjFhM2Q1ZTRlYjBh
Li44NjM3NTk5NjJjODkzOWY2ZTZmOWE4MWZjYTE1NmYxMmQ5YjE1ZDBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCkBAIC0yMzAsNyArMjMwLDcg
QEAgT3B0aW9uYWw8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+PiBGZXRjaEhlYWRl
cnM6Okl0ZXJhdG9yOjpuZXh0KCkKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4geyBXVEZNb3Zl
KGtleSksIFdURk1vdmUodmFsdWUpIH07CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogRmV0Y2hIZWFkZXJzOjpJdGVyYXRvcjo6
SXRlcmF0b3IoRmV0Y2hIZWFkZXJzJiBoZWFkZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IDQ5ZTVhNWI1MWYyZWQ2YWFiM2ZiNzU1YTk4
YmVmMGMxZDk0NjBjOTUuLjM0OGFiNDQyNDljZDkyYWRiMmU0N2UzN2MwNDI3NmUyMDk4YTQ5OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgc3RhdGljIE9wdGlvbmFsPEV4Y2VwdGlvbj4gc2V0TWV0aG9kKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBpbmkKICAgICBpZiAoaXNGb3JiaWRk
ZW5NZXRob2QoaW5pdE1ldGhvZCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJNZXRob2QgaXMgZm9yYmlkZGVuLiJfcyB9OwogICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhv
ZChub3JtYWxpemVIVFRQTWV0aG9kKGluaXRNZXRob2QpKTsKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBFeGNlcHRpb25PcjxT
dHJpbmc+IGNvbXB1dGVSZWZlcnJlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKQpAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBPcHRpb25h
bDxFeGNlcHRpb24+IGJ1aWxkT3B0aW9ucyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIFJlc291cmNl
UmVxdWVzdCYKICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb247CiAgICAgfQogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMg
Ym9vbCBtZXRob2RDYW5IYXZlQm9keShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBA
IC0yNzMsNyArMjczLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0OjpzZXRCb2R5
KEZldGNoUmVxdWVzdCYgcmVxdWVzdCkKIAogRXhjZXB0aW9uT3I8UmVmPEZldGNoUmVxdWVzdD4+
IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElu
Zm8mJiBpbnB1dCwgSW5pdCYmIGluaXQpCiB7Ci0gICAgYXV0byByZXF1ZXN0ID0gYWRvcHRSZWYo
Km5ldyBGZXRjaFJlcXVlc3QoY29udGV4dCwgV1RGOjpudWxsb3B0LCBGZXRjaEhlYWRlcnM6OmNy
ZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXF1ZXN0KSwgeyB9LCB7IH0sIHsgfSkpOworICAg
IGF1dG8gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6
bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVz
dCksIHsgfSwgeyB9LCB7IH0pKTsKIAogICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oaW5wdXQpKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdC0+aW5pdGlhbGl6
ZVdpdGgoV1RGOjpnZXQ8U3RyaW5nPihpbnB1dCksIFdURk1vdmUoaW5pdCkpOwpAQCAtMzIyLDcg
KzMyMiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBGZXRjaFJlcXVlc3Q6OmNs
b25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRlCiAgICAgaWYgKGlzRGlzdHVyYmVkT3JM
b2NrZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJvZHkgaXMg
ZGlzdHVyYmVkIG9yIGxvY2tlZCJfcyB9OwogCi0gICAgYXV0byBjbG9uZSA9IGFkb3B0UmVmKCpu
ZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIFdURjo6bnVsbG9wdCwgRmV0Y2hIZWFkZXJzOjpjcmVh
dGUobV9oZWFkZXJzLmdldCgpKSwgUmVzb3VyY2VSZXF1ZXN0IHsgbV9yZXF1ZXN0IH0sIEZldGNo
T3B0aW9ucyB7IG1fb3B0aW9uc30sIFN0cmluZyB7IG1fcmVmZXJyZXIgfSkpOworICAgIGF1dG8g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChjb250ZXh0LCBzdGQ6Om51bGxvcHQs
IEZldGNoSGVhZGVyczo6Y3JlYXRlKG1faGVhZGVycy5nZXQoKSksIFJlc291cmNlUmVxdWVzdCB7
IG1fcmVxdWVzdCB9LCBGZXRjaE9wdGlvbnMgeyBtX29wdGlvbnN9LCBTdHJpbmcgeyBtX3JlZmVy
cmVyIH0pKTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICBjbG9uZS0+bV9zaWdu
YWwtPnNpZ25hbEZvbGxvdyhtX3NpZ25hbCk7CiAgICAgcmV0dXJuIGNsb25lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNmQyMjgzZjQ3
ZDExOWQzYTRiNzI3ZWEzYzFiNjY1N2IzNmM2Yzk4MC4uY2VmZWZjNzNmYzI1NmY3YTAxNTA2Yjc0
NWUzMTc5YmE4N2ExZDc5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPEZldGNo
UmVzcG9uc2U+PiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b24KICAgICBpZiAobV9pbnRlcm5hbFJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNl
OjpUeXBlOjpEZWZhdWx0KQogICAgICAgICBtX2ludGVybmFsUmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkcyhIVFRQSGVhZGVyTWFwIHsgaGVhZGVycygpLmludGVybmFsSGVhZGVycygpIH0pOwog
Ci0gICAgYXV0byBjbG9uZSA9IEZldGNoUmVzcG9uc2U6OmNyZWF0ZShjb250ZXh0LCBXVEY6Om51
bGxvcHQsIGhlYWRlcnMoKS5ndWFyZCgpLCBSZXNvdXJjZVJlc3BvbnNlIHsgbV9pbnRlcm5hbFJl
c3BvbnNlIH0pOworICAgIGF1dG8gY2xvbmUgPSBGZXRjaFJlc3BvbnNlOjpjcmVhdGUoY29udGV4
dCwgc3RkOjpudWxsb3B0LCBoZWFkZXJzKCkuZ3VhcmQoKSwgUmVzb3VyY2VSZXNwb25zZSB7IG1f
aW50ZXJuYWxSZXNwb25zZSB9KTsKICAgICBjbG9uZS0+Y2xvbmVCb2R5KCp0aGlzKTsKICAgICBj
bG9uZS0+bV9vcGFxdWVMb2FkSWRlbnRpZmllciA9IG1fb3BhcXVlTG9hZElkZW50aWZpZXI7CiAg
ICAgY2xvbmUtPm1fYm9keVNpemVXaXRoUGFkZGluZyA9IG1fYm9keVNpemVXaXRoUGFkZGluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdo
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKaW5k
ZXggMDhkYjE1NzM2YWQ3NjIyNjQyMDM1N2I1ZTYzZjY1ODdjNTAzZDQwMS4uMGVkNDI3Yjc0MDA5
ZjFkOTUzNjVkY2UxMzY4ZjY3ODFkODE2ZTZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0LmgKQEAgLTY4LDI4ICs2OCwyOCBAQCBPcHRpb25h
bDxBcHBIaWdobGlnaHQ+IEFwcEhpZ2hsaWdodDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8c2l6ZV90PiBsZW5ndGg7CiAgICAgZGVjb2RlciA+PiBsZW5ndGg7CiAgICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJn
ZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihsZW5ndGgudmFsdWUoKSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0
b3I8dWludDhfdD4gaGlnaGxpZ2h0OwogICAgIGhpZ2hsaWdodC5ncm93KCpsZW5ndGgpOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoaGlnaGxpZ2h0LmRhdGEoKSwgaGln
aGxpZ2h0LnNpemUoKSwgMSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTdHJpbmc+PiB0
ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDcmVh
dGVOZXdHcm91cEZvckhpZ2hsaWdodCBpc05ld0dyb3VwOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXNOZXdHcm91cCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBw
IHJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0
T3JpZ2luYXRlZEluQXBwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGhpZ2hsaWdodCkpLCBXVEZNb3ZlKCp0ZXh0KSwgaXNOZXdHcm91cCwgcmVxdWVz
dE9yaWdpbmF0ZWRJbkFwcCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuY3BwCmluZGV4IDcxNGVhZWQ3
ODBlZTM2NzNmYzAwNDYxNDU4NGVhYzRmNzQxZDE1Y2MuLjI5NWM1OGZhNmVlYTA5ZTViNzQ2ZDYy
ZWMzYTFjNTE2NTU5YWZlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmNwcApAQCAtNjksMjIgKzY5LDIy
IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0
YTo6Tm9kZVBhdGhDb21wb25lbnQ+IEFwcEhpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlm
aWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5vZGVOYW1lOwogICAgIGRlY29kZXIgPj4gbm9kZU5h
bWU7CiAgICAgaWYgKCFub2RlTmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dERh
dGE7CiAgICAgZGVjb2RlciA+PiB0ZXh0RGF0YTsKICAgICBpZiAoIXRleHREYXRhKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IHBhdGhJbmRleDsKICAgICBkZWNvZGVyID4+IHBhdGhJbmRl
eDsKICAgICBpZiAoIXBhdGhJbmRleCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwgV1RGTW92ZSgqbm9kZU5hbWUpLCBXVEZNb3ZlKCp0ZXh0RGF0YSksICpwYXRoSW5k
ZXggfX07CiB9CkBAIC0xMDMsMjcgKzEwMywyNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBP
cHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IEFwcEhpZ2hsaWdodFJhbmdlRGF0YTo6ZAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAgICAgaWYg
KCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Tm9kZVBhdGg+IHN0YXJ0Q29udGFpbmVyOwogICAg
IGRlY29kZXIgPj4gc3RhcnRDb250YWluZXI7CiAgICAgaWYgKCFzdGFydENvbnRhaW5lcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBzdGFydE9mZnNldDsKICAgICBkZWNvZGVyID4+IHN0
YXJ0T2Zmc2V0OwogICAgIGlmICghc3RhcnRPZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxOb2Rl
UGF0aD4gZW5kQ29udGFpbmVyOwogICAgIGRlY29kZXIgPj4gZW5kQ29udGFpbmVyOwogICAgIGlm
ICghZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGVuZE9mZnNldDsK
ICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVuZE9mZnNldCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogCiAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzdGFydENvbnRhaW5lciksICpz
dGFydE9mZnNldCwgV1RGTW92ZSgqZW5kQ29udGFpbmVyKSwgKmVuZE9mZnNldCB9fTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5jcHAKaW5kZXggZGE0ZjcwYWMyZmM2MTY3MWY3N2E3N2IxNzA0Njc5NjRiODlmMzk0ZC4u
YWIzN2RkMjI4NTY5MjVmOWRkMTQ5M2EwYTc3ODAzOThjMDAxNDAyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5j
cHAKQEAgLTExNiwxNiArMTE2LDE2IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZmlu
ZFJhbmdlQnlJZGVudGlmeWluZ1N0YXJ0QW5kRW5kUG9zaXRpb25zKGNvbnN0IEFwCiB7CiAgICAg
YXV0byBzdGFydENvbnRhaW5lciA9IGZpbmROb2RlKHJhbmdlLnN0YXJ0Q29udGFpbmVyKCksIGRv
Y3VtZW50KTsKICAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBlbmRDb250
YWluZXIgPSBmaW5kTm9kZShyYW5nZS5lbmRDb250YWluZXIoKSwgZG9jdW1lbnQpOwogICAgIGlm
ICghZW5kQ29udGFpbmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFydCA9IG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbihzdGFydENvbnRhaW5lci5nZXQoKSwgcmFuZ2Uuc3RhcnRPZmZzZXQoKSk7CiAg
ICAgYXV0byBlbmQgPSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oZW5kQ29udGFpbmVyLmdl
dCgpLCByYW5nZS5lbmRPZmZzZXQoKSk7CiAgICAgaWYgKHN0YXJ0LmlzT3JwaGFuKCkgfHwgZW5k
LmlzT3JwaGFuKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0LCBlbmQp
OwogfQpAQCAtMTUwLDE0ICsxNTAsMTQgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBm
aW5kUmFuZ2VCeVNlYXJjaGluZ1RleHQoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXQKICAgICB9
CiAKICAgICBpZiAoIWZvdW5kRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZm91bmRFbGVtZW50UmFu
Z2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmZvdW5kRWxlbWVudCk7CiAgICAg
YXV0byBmb3VuZFRleHQgPSBwbGFpblRleHQoZm91bmRFbGVtZW50UmFuZ2UpOwogICAgIGlmIChh
dXRvIGluZGV4ID0gZm91bmRUZXh0LmZpbmQocmFuZ2UudGV4dCgpKTsgaW5kZXggIT0gbm90Rm91
bmQgJiYgaW5kZXggPT0gZm91bmRUZXh0LnJldmVyc2VGaW5kKHJhbmdlLnRleHQoKSkpCiAgICAg
ICAgIHJldHVybiByZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoZm91bmRFbGVtZW50UmFuZ2UsIHsgaW5k
ZXgsIHJhbmdlLnRleHQoKS5sZW5ndGgoKSB9KTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBmaW5kUmFuZ2UoY29uc3QgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiByYW5nZSwgRG9jdW1l
bnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAKaW5kZXggOWU3NWM3MTk3ZmY5YjlkMmI1MTQ0ZmMzNGVlN2IwZTNlMGNmOGIzZS4u
ZTA2NWE0ODQ4M2VmOGFmNTA5MzAxZjEyYjE0ZDk5OGViZmUyMTAwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0zNjksNyArMzY5LDcg
QEAgT3B0aW9uYWw8SURCR2V0UmVzdWx0PiBJREJDdXJzb3I6Oml0ZXJhdGVXaXRoUHJlZmV0Y2hl
ZFJlY29yZHModW5zaWduZWQgY291bnQsIHUKIHsKICAgICB1bnNpZ25lZCBzdGVwID0gY291bnQg
PiAwID8gY291bnQgOiAxOwogICAgIGlmIChzdGVwID4gbV9wcmVmZXRjaGVkUmVjb3Jkcy5zaXpl
KCkgfHwgbV9wcmVmZXRjaE9wZXJhdGlvbklEIDw9IGxhc3RXcml0ZU9wZXJhdGlvbklEKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgd2hpbGUgKC0tc3RlcCkKICAgICAgICAgbV9wcmVmZXRjaGVkUmVjb3Jkcy5yZW1vdmVG
aXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA0MmQ0YzBlMDE5ODk5YjcwZWIwZTNkZGUyNmFm
ZGQ1OTU2YTRjYWI1Li5jMmYxNzA3NGU4ZWJiZWE2NTg3NDYyZTE4ZDYwY2Y5MDQ4MDJlZGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuaApAQCAtMTIzLDE3ICsxMjMsMTcgQEAgT3B0aW9uYWw8SURCRGF0YWJh
c2VJZGVudGlmaWVyPiBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gZGF0YWJhc2VOYW1lOwogICAgIGRlY29kZXIgPj4g
ZGF0YWJhc2VOYW1lOwogICAgIGlmICghZGF0YWJhc2VOYW1lKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Q2xpZW50T3JpZ2luPiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47CiAgICAgaWYgKCFv
cmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpc1RyYW5zaWVudDsKICAgICBkZWNvZGVy
ID4+IGlzVHJhbnNpZW50OwogICAgIGlmICghaXNUcmFuc2llbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBpZGVudGlmaWVyLm1fZGF0YWJhc2VOYW1l
ID0gV1RGTW92ZSgqZGF0YWJhc2VOYW1lKTsgLy8gRklYTUU6IFdoZW4gZGVjb2RpbmcgZnJvbSBJ
UEMsIGRhdGFiYXNlTmFtZSBjYW4gYmUgbnVsbCwgYW5kIHRoZSBub24tZW1wdHkgY29uc3RydWN0
b3IgYXNzZXJ0cyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCA0MzZmZTAxNWQ0MzliYzg2
YzQxMTA4ZmMwNzg2YjUwNTY4MTZkMzc5Li4wNTQ0ZWYwNjZiMzRhNWUxZWVkYzk1Mzg1NjRiYzhh
NzZmMjEzNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmNwcApAQCAtNzksNyArNzksNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT3BlbkRCUmVx
dWVzdD4+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAg
IGlmICh2ZXJzaW9uICYmICF2ZXJzaW9uLnZhbHVlKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IsICJJREJGYWN0b3J5Lm9wZW4oKSBjYWxsZWQgd2l0aCBhIHZlcnNpb24g
b2YgMCJfcyB9OwogCi0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJz
aW9uLnZhbHVlT3IoMCkpOworICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwg
dmVyc2lvbi52YWx1ZV9vcigwKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxJREJPcGVuREJSZXF1
ZXN0Pj4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCBmNmZhMWZmODExNDhh
ZjI4YzBiYzEwZjAxMzEyMGUwYzAwNzI2OWUzLi4wNDNlYzZiNmE3ZmI3ZjRlNjBkNjQ1Y2Q5ZDVm
YzdhNWMxNDcwM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5RGF0YS5oCkBAIC0yNTUsMTMgKzI1NSwxMyBAQCBPcHRpb25hbDxJREJLZXlEYXRhPiBJREJL
ZXlEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJREJLZXlEYXRhIGtleURh
dGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXlEYXRhLm1faXNOdWxsKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChrZXlEYXRhLm1faXNOdWxsKQogICAgICAgICByZXR1cm4ga2V5RGF0YTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5tX3R5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoIChrZXlE
YXRhLm1fdHlwZSkgewogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgpAQCAt
MjcxLDIzICsyNzEsMjMgQEAgT3B0aW9uYWw8SURCS2V5RGF0YT4gSURCS2V5RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5Ogog
ICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KGtleURhdGEu
bV92YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpCaW5hcnk6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IFRocmVhZFNhZmVE
YXRhQnVmZmVyKCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8VGhyZWFk
U2FmZURhdGFCdWZmZXI+KGtleURhdGEubV92YWx1ZSkpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6CiAgICAgICAgIGtleURh
dGEubV92YWx1ZSA9IFN0cmluZygpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6
Z2V0PFN0cmluZz4oa2V5RGF0YS5tX3ZhbHVlKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6Ok51bWJlcjoKICAgICAgICAga2V5RGF0YS5tX3ZhbHVlID0gMC4wOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PGRvdWJsZT4oa2V5RGF0YS5tX3ZhbHVlKSkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuaAppbmRleCA2NjEzMDI0MDc1N2U4ZDViZmI2MjBhOGQw
ZTJiZjRmMjIyNjZlYmU4Li4yYTY2NDMyYjViZDk3MTkyYTFhYjRmZjYwOTBjMGJlOTVkMjNiZDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmgKQEAgLTcy
LDEzICs3MiwxMyBAQCBPcHRpb25hbDxJREJWYWx1ZT4gSURCVmFsdWU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIElEQlZhbHVlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2RhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9ibG9iVVJMcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2Jsb2JG
aWxlUGF0aHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3Bw
CmluZGV4IDhhOWZkOGJlNDJiMjhiNWJiZjhkMmYyYjQ2ZDk0ZmNmYzA0MDA4NjcuLjNmNzJjNzBj
NmY1MTczZDgwNDBhOTE1YjAxM2YyZDE0M2M2MWM3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcApA
QCAtNDAsNyArNDAsNyBAQCBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VF
dmVudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlcwogICAgIGlmIChuZXdWZXJz
aW9uKQogICAgICAgICBtX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOwogICAgIGVsc2UKLSAgICAg
ICAgbV9uZXdWZXJzaW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX25ld1ZlcnNpb24gPSBz
dGQ6Om51bGxvcHQ7CiB9CiAKIElEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5n
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIGNvbnN0IEluaXQmIGluaXQsIElzVHJ1c3Rl
ZCBpc1RydXN0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmNwcAppbmRleCBh
MDU5YTBkOTUwYTc2Njg3NmEwZmZkMzJlZmEwZTE2Njk1NGU0MzA3Li5iNzNhOWU4ZWZmZDk3NGI4
ZjUzYjM4MzJkYTFlZjdmOTU3MDQxOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1
cnNvci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6Ok1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwKIAogdm9p
ZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6b2JqZWN0U3RvcmVDbGVhcmVkKCkKIHsKLSAgICBt
X2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleURlbGV0ZWQoY29uc3QgSURC
S2V5RGF0YSYga2V5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vy
c29yOjprZXlEZWxldGVkKGNvbnN0IElEQktleURhdGEmIGtleSkKICAgICBpZiAobV9jdXJyZW50
UG9zaXRpb25LZXkgIT0ga2V5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2l0ZXJhdG9yID0g
V1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQg
TWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OmtleUFkZGVkKElEQktleURhdGFTZXQ6Oml0ZXJhdG9y
IGl0ZXJhdG9yKQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
OjprZXlBZGRlZChJREJLZXlEYXRhU2V0OjppdGVyYXRvciBpdGVyYXRvcikKIAogdm9pZCBNZW1v
cnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rmlyc3RJblJlbWFpbmluZ1JhbmdlKElEQktleURhdGFT
ZXQmIHNldCkKIHsKLSAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgIG1faXRlcmF0
b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV9pbmZvLmlzRGlyZWN0aW9uRm9yd2FyZCgp
KSB7CiAgICAgICAgIHNldEZvcndhcmRJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShzZXQpOwpA
QCAtOTMsMTkgKzkzLDE5IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNldEZpcnN0
SW5SZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0JiBzZXQpCiB2b2lkIE1lbW9yeU9iamVjdFN0
b3JlQ3Vyc29yOjpzZXRGb3J3YXJkSXRlcmF0b3JGcm9tUmVtYWluaW5nUmFuZ2UoSURCS2V5RGF0
YVNldCYgc2V0KQogewogICAgIGlmICghc2V0LnNpemUoKSkgewotICAgICAgICBtX2l0ZXJhdG9y
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nUmFuZ2UuaXNFeGFjdGx5
T25lS2V5KCkpIHsKICAgICAgICAgbV9pdGVyYXRvciA9IHNldC5maW5kKG1fcmVtYWluaW5nUmFu
Z2UubG93ZXJLZXkpOwogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmVuZCgpKQotICAg
ICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0
b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faXRl
cmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gbG93ZXN0ID0gc2V0Lmxvd2VyX2JvdW5kKG1fcmVtYWluaW5nUmFuZ2UubG93ZXJL
ZXkpOwogICAgIGlmIChsb3dlc3QgPT0gc2V0LmVuZCgpKQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAg
dm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0Rm9yd2FyZEl0ZXJhdG9yRnJvbVJlbWFp
bmluZ1JhbmdlKElEQktleURhdGFTZXQKIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3I6OnNl
dFJldmVyc2VJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShJREJLZXlEYXRhU2V0JiBzZXQpCiB7
CiAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAobV9yZW1haW5pbmdSYW5nZS5pc0V4YWN0bHlPbmVLZXkoKSkgewog
ICAgICAgICBtX2l0ZXJhdG9yID0gc2V0LmZpbmQobV9yZW1haW5pbmdSYW5nZS5sb3dlcktleSk7
CiAgICAgICAgIGlmICgqbV9pdGVyYXRvciA9PSBzZXQuZW5kKCkpCi0gICAgICAgICAgICBtX2l0
ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRvciA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ2LDEyICsxNDYsMTIgQEAgdm9p
ZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6c2V0UmV2ZXJzZUl0ZXJhdG9yRnJvbVJlbWFpbmlu
Z1JhbmdlKElEQktleURhdGFTZXQKICAgICBpZiAoIW1fcmVtYWluaW5nUmFuZ2UudXBwZXJLZXku
aXNWYWxpZCgpKSB7CiAgICAgICAgIG1faXRlcmF0b3IgPSAtLXNldC5lbmQoKTsKICAgICAgICAg
aWYgKCFtX3JlbWFpbmluZ1JhbmdlLmNvbnRhaW5zS2V5KCoqbV9pdGVyYXRvcikpCi0gICAgICAg
ICAgICBtX2l0ZXJhdG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9pdGVyYXRvciA9
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9pdGVyYXRv
ciA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2l0ZXJhdG9yID0gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gVGhpcyBpcyBvbmUgcmVjb3JkIHBhc3QgdGhlIGFjdHVhbCBrZXkgd2UncmUgbG9va2luZyBm
b3IuCiAgICAgYXV0byBoaWdoZXN0ID0gc2V0LnVwcGVyX2JvdW5kKG1fcmVtYWluaW5nUmFuZ2Uu
dXBwZXJLZXkpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmVDdXJz
b3I6OmluY3JlbWVudEZvcndhcmRJdGVyYXRvcihJREJLZXlEYXRhU2V0JiBzZXQsIGNvbnN0CiAg
ICAgICAgICsrKm1faXRlcmF0b3I7CiAKICAgICAgICAgaWYgKCptX2l0ZXJhdG9yID09IHNldC5l
bmQoKSB8fCAhbV9pbmZvLnJhbmdlKCkuY29udGFpbnNLZXkoKiptX2l0ZXJhdG9yKSkgewotICAg
ICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1faXRlcmF0
b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZUN1cnNvcjo6aW5jcmVt
ZW50UmV2ZXJzZUl0ZXJhdG9yKElEQktleURhdGFTZXQmIHNldCwgY29uc3QKIAogICAgIHdoaWxl
IChjb3VudCkgewogICAgICAgICBpZiAoKm1faXRlcmF0b3IgPT0gc2V0LmJlZ2luKCkpIHsKLSAg
ICAgICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2l0ZXJh
dG9yID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTMwNiw3ICszMDYsNyBAQCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yOjppbmNyZW1lbnRS
ZXZlcnNlSXRlcmF0b3IoSURCS2V5RGF0YVNldCYgc2V0LCBjb25zdAogICAgICAgICAtLSptX2l0
ZXJhdG9yOwogCiAgICAgICAgIGlmICghbV9pbmZvLnJhbmdlKCkuY29udGFpbnNLZXkoKiptX2l0
ZXJhdG9yKSkgewotICAgICAgICAgICAgbV9pdGVyYXRvciA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDI4
Yjk4Yzk3NmZjNmU5Y2EzZDBjYWVhZDU2ZTI5NTMwOTI2MjA4NjYuLjhlOWE1ZTc0MTY3MTEwYjE1
MmM1YzEwNDJhYTg4MDJmNTc3NDU4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCkBAIC00OTIsNyArNDkyLDcgQEAgT3B0aW9uYWw8SXNTY2hlbWFVcGdyYWRlZD4gU1FMaXRl
SURCQmFja2luZ1N0b3JlOjplbnN1cmVWYWxpZE9iamVjdFN0b3JlSW5mb1RhYmwKIAogICAgIFN0
cmluZyB0YWJsZVN0YXRlbWVudCA9IG1fc3FsaXRlREItPnRhYmxlU1FMKCJPYmplY3RTdG9yZUlu
Zm8iX3MpOwogICAgIGlmICh0YWJsZVN0YXRlbWVudC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
aWYgKHRhYmxlU3RhdGVtZW50ID09IHYyT2JqZWN0U3RvcmVJbmZvU2NoZW1hIHx8IHRhYmxlU3Rh
dGVtZW50ID09IGNyZWF0ZVYyT2JqZWN0U3RvcmVJbmZvU2NoZW1hKG9iamVjdFN0b3JlSW5mb1Rh
YmxlTmFtZUFsdGVybmF0ZSkpCiAgICAgICAgIHJldHVybiB7IElzU2NoZW1hVXBncmFkZWQ6Ok5v
IH07CkBAIC01MDUsMjIgKzUwNSwyMiBAQCBPcHRpb25hbDxJc1NjaGVtYVVwZ3JhZGVkPiBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmVuc3VyZVZhbGlkT2JqZWN0U3RvcmVJbmZvVGFibAogCiAgICAg
aWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZFNsb3coY3JlYXRlVjJPYmplY3RTdG9yZUlu
Zm9TY2hlbWEoIl9UZW1wX09iamVjdFN0b3JlSW5mbyJfcykpKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlIGluIGRh
dGFiYXNlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRl
Q29tbWFuZCgiSU5TRVJUIElOVE8gX1RlbXBfT2JqZWN0U3RvcmVJbmZvIChpZCwgbmFtZSwga2V5
UGF0aCwgYXV0b0luYykgU0VMRUNUIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jIEZST00gT2Jq
ZWN0U3RvcmVJbmZvIl9zKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBtaWdyYXRl
IGV4aXN0aW5nIE9iamVjdFN0b3JlSW5mbyBjb250ZW50ICglaSkgLSAlcyIsIG1fc3FsaXRlREIt
Pmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiRFJPUCBUQUJMRSBPYmplY3RTdG9y
ZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRyb3AgZXhpc3Rpbmcg
T2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigp
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCFtX3Nx
bGl0ZURCLT5leGVjdXRlQ29tbWFuZCgiQUxURVIgVEFCTEUgX1RlbXBfT2JqZWN0U3RvcmVJbmZv
IFJFTkFNRSBUTyBPYmplY3RTdG9yZUluZm8iX3MpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IHJlbmFtZSB0ZW1wb3JhcnkgT2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIs
IG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogCiAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CkBAIC05NDIsMTcgKzk0MiwxNyBA
QCBPcHRpb25hbDxJREJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uPiBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmRhdGFiYXNlTmFtZUFuZFZlcnNpbwogICAgIFNRTGl0ZURhdGFiYXNlIGRhdGFiYXNlOwog
ICAgIGlmICghZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CiAgICAgICAgIExPR19FUlJP
UigiRmFpbGVkIHRvIG9wZW4gU1FMaXRlIGRhdGFiYXNlIGF0IHBhdGggJyVzJyB3aGVuIGdldHRp
bmcgZGF0YWJhc2UgbmFtZSIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgaWYgKCFkYXRhYmFzZS50YWJsZUV4aXN0cygiSURCRGF0YWJhc2VJbmZvIl9zKSkgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBmaW5kIElEQkRhdGFiYXNlSW5mbyB0YWJsZSBh
bmQgZ2V0IGRhdGFiYXNlIG5hbWUoJWkpIC0gJXMiLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gbmFtZXNxbCA9IGRh
dGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQoIlNFTEVDVCB2YWx1ZSBGUk9NIElEQkRhdGFiYXNlSW5m
byBXSEVSRSBrZXkgPSAnRGF0YWJhc2VOYW1lJzsiX3MpOwogICAgIGlmICghbmFtZXNxbCkgewog
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwcmVwYXJlIHN0YXRlbWVudCB0byBnZXQgZGF0
YWJhc2UgbmFtZSglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJvcigpLCBkYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZGF0YWJhc2VOYW1lID0gbmFtZXNxbC0+
Y29sdW1uVGV4dCgwKTsKIApAQCAtOTYxLDcgKzk2MSw3IEBAIE9wdGlvbmFsPElEQkRhdGFiYXNl
TmFtZUFuZFZlcnNpb24+IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lQW5kVmVy
c2lvCiAgICAgYXV0byBkYXRhYmFzZVZlcnNpb24gPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHN0
cmluZ1ZlcnNpb24pOwogICAgIGlmICghZGF0YWJhc2VWZXJzaW9uKSB7CiAgICAgICAgIExPR19F
UlJPUigiRGF0YWJhc2UgdmVyc2lvbiBvbiBkaXNrICgnJXMnKSBkb2VzIG5vdCBjbGVhbmx5IGNv
bnZlcnQgdG8gYW4gdW5zaWduZWQgNjQtYml0IGludGVnZXIgdmVyc2lvbiIsIHN0cmluZ1ZlcnNp
b24udXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb24geyBkYXRhYmFzZU5hbWUsICpkYXRhYmFzZVZlcnNpb24gfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZU5h
bWVBbmRWZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRGF0YWJhc2VOYW1lQW5kVmVyc2lvbi5oCmluZGV4IDQ3ZGZmZmQ4ODhiY2NlZDM4MWI1MTgx
NGU2MzI5Y2UwY2E2MGFhYmQuLjljMTBiNDMwMTMyMmQ5ZDVmMGY0YjVlNTZkMTc5OTg0YjI4Yjhj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJEYXRhYmFzZU5hbWVBbmRWZXJzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24uaApAQCAtNTEsMTAgKzUx
LDEwIEBAIE9wdGlvbmFsPElEQkRhdGFiYXNlTmFtZUFuZFZlcnNpb24+IElEQkRhdGFiYXNlTmFt
ZUFuZFZlcnNpb246OmRlY29kZShEZWNvZGVyJiBkCiAgICAgSURCRGF0YWJhc2VOYW1lQW5kVmVy
c2lvbiBpbmZvOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLm5hbWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvLnZlcnNpb24pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGlu
Zm87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJFcnJvci5oCmluZGV4IGY1MmNlNGRkMDYzZWE1MDk5MzQ2NzVlNGVkZGU4OTQzYWVmYTY3N2Eu
Ljc0ZmNjNzQ3NGYwZDQ5MGMyNzJjODFjYzI1YTg0NjhjZDg1NWY3ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRXJyb3IgewogcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IElEQkVycm9yKE9wdGlvbmFsPEV4Y2VwdGlv
bkNvZGU+ID0gV1RGOjpudWxsb3B0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0pOworICAg
IFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IElEQkVycm9yKE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+
ID0gc3RkOjpudWxsb3B0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UgPSB7IH0pOwogCiAgICAgc3Rh
dGljIElEQkVycm9yIHVzZXJEZWxldGVFcnJvcigpCiAgICAgewpAQCAtODcsNyArODcsNyBAQCBi
b29sIElEQkVycm9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSURCRXJyb3ImIGVycm9yKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBlcnJvci5tX2NvZGUgPSBlYzsKICAg
ICB9IGVsc2UKLSAgICAgICAgZXJyb3IubV9jb2RlID0gV1RGOjpudWxsb3B0OworICAgICAgICBl
cnJvci5tX2NvZGUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVy
cm9yLm1fbWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4
IGNiYmIyMDY1ZGIwNDljZDlmZGE5MmNjYzM0MDIzNWQzMTQ1NzU2ZjMuLmJiOTRmYTczNzMxZTY3
ZDcxY2RlMjVkY2Q3MjQyNzEzMWM0YTEzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtMTY1LDY3ICsx
NjUsNjcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SURCUmVzdWx0RGF0YT4g
SURCUmVzdWx0RGF0YTo6ZGVjb2RlKERlY29kZXImIGQKIHsKICAgICBJREJSZXN1bHREYXRhIHJl
c3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3JlcXVlc3RJZGVudGlmaWVy
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZXJyb3IpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fcmVzdWx0SW50ZWdl
cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3R5cGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYm9vbCBoYXNPYmplY3Q7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlx
dWU8SURCRGF0YWJhc2VJbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmpl
Y3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUo
b2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlxdWU8
SURCVHJhbnNhY3Rpb25JbmZvPigpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpvYmpl
Y3QpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5tX3RyYW5zYWN0aW9uSW5mbyA9IFdURk1v
dmUob2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc09iamVjdCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKGhhc09iamVjdCkgewogICAgICAgICBhdXRvIG9iamVjdCA9IG1ha2VVbmlx
dWU8SURCS2V5RGF0YT4oKTsKICAgICAgICAgT3B0aW9uYWw8SURCS2V5RGF0YT4gb3B0aW9uYWw7
CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgKm9iamVjdCA9IFdURk1vdmUoKm9wdGlvbmFsKTsKICAgICAgICAg
cmVzdWx0Lm1fcmVzdWx0S2V5ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0KIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7CiAgICAg
ICAgIGF1dG8gb2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRSZXN1bHQ+KCk7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoKm9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1f
Z2V0UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzT2JqZWN0KSB7CiAgICAgICAgIGF1dG8g
b2JqZWN0ID0gbWFrZVVuaXF1ZTxJREJHZXRBbGxSZXN1bHQ+KCk7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoKm9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0Lm1fZ2V0QWxs
UmVzdWx0ID0gV1RGTW92ZShvYmplY3QpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKaW5k
ZXggMmFmZTdlYmQ1ZWE1MjRjZWYwZTg3NWJhMmRjYTk2OGM3YWM0NWM0Ny4uOWZiZmZjMTAwMDRl
NDQxODQxNTgxMDcyM2Y5NWFmODQzY2U0NDNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCkBAIC01
NDAsMTQgKzU0MCwxNCBAQCBib29sIE1lZGlhQ29udHJvbHNIb3N0OjpzaG93TWVkaWFDb250cm9s
c0NvbnRleHRNZW51KEhUTUxFbGVtZW50JiB0YXJnZXQsIFN0cmluZwogICAgIFZlY3RvcjxNZW51
SXRlbT4gaXRlbXM7CiAKICNpZiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAg
aWYgKG9wdGlvbnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlUGljdHVyZUluUGljdHVy
ZSJfcykudmFsdWVPcihmYWxzZSkpIHsKKyAgICBpZiAob3B0aW9uc0pTT05PYmplY3QtPmdldEJv
b2xlYW4oImluY2x1ZGVQaWN0dXJlSW5QaWN0dXJlIl9zKS52YWx1ZV9vcihmYWxzZSkpIHsKICAg
ICAgICAgQVNTRVJUKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1lZGlhRWxlbWVudCkpOwogICAgICAg
ICBBU1NFUlQoZG93bmNhc3Q8SFRNTFZpZGVvRWxlbWVudD4obWVkaWFFbGVtZW50KS53ZWJraXRT
dXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRp
b25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlKSk7CiAgICAgICAgIGl0ZW1zLmFwcGVuZChjcmVhdGVN
ZW51SXRlbShQaWN0dXJlSW5QaWN0dXJlVGFnOjpJbmNsdWRlUGljdHVyZUluUGljdHVyZSwgV0VC
X1VJX1NUUklOR19LRVkoIlBpY3R1cmUgaW4gUGljdHVyZSIsICJQaWN0dXJlIGluIFBpY3R1cmUg
KE1lZGlhIENvbnRyb2xzIE1lbnUpIiwgIlBpY3R1cmUgaW4gUGljdHVyZSBtZWRpYSBjb250cm9s
cyBjb250ZXh0IG1lbnUgdGl0bGUiKSwgZmFsc2UsICJwaXAuZW50ZXIiX3MpKTsKICAgICB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCi0gICAgaWYgKG9wdGlv
bnNKU09OT2JqZWN0LT5nZXRCb29sZWFuKCJpbmNsdWRlTGFuZ3VhZ2VzIl9zKS52YWx1ZU9yKGZh
bHNlKSkgeworICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9vbGVhbigiaW5jbHVkZUxh
bmd1YWdlcyJfcykudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIGlmIChhdXRvKiBhdWRpb1Ry
YWNrcyA9IG1lZGlhRWxlbWVudC5hdWRpb1RyYWNrcygpOyBhdWRpb1RyYWNrcyAmJiBhdWRpb1Ry
YWNrcy0+bGVuZ3RoKCkgPiAxKSB7CiAgICAgICAgICAgICBWZWN0b3I8TWVudUl0ZW0+IGxhbmd1
YWdlTWVudUl0ZW1zOwogCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9z
dDo6c2hvd01lZGlhQ29udHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJp
bmcKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChvcHRpb25zSlNPTk9iamVjdC0+Z2V0Qm9v
bGVhbigiaW5jbHVkZVN1YnRpdGxlcyJfcykudmFsdWVPcihmYWxzZSkpIHsKKyAgICBpZiAob3B0
aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oImluY2x1ZGVTdWJ0aXRsZXMiX3MpLnZhbHVlX29y
KGZhbHNlKSkgewogICAgICAgICBpZiAoYXV0byogdGV4dFRyYWNrcyA9IG1lZGlhRWxlbWVudC50
ZXh0VHJhY2tzKCk7IHRleHRUcmFja3MgJiYgdGV4dFRyYWNrcy0+bGVuZ3RoKCkpIHsKICAgICAg
ICAgICAgIFZlY3RvcjxNZW51SXRlbT4gc3VidGl0bGVNZW51SXRlbXM7CiAKQEAgLTU5MSw3ICs1
OTEsNyBAQCBib29sIE1lZGlhQ29udHJvbHNIb3N0OjpzaG93TWVkaWFDb250cm9sc0NvbnRleHRN
ZW51KEhUTUxFbGVtZW50JiB0YXJnZXQsIFN0cmluZwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykgJiYgVVNFKEFDQ0VTU0lCSUxJVFlfQ09OVEVYVF9NRU5VUykKLSAgICBpZiAo
KGl0ZW1zLnNpemUoKSA9PSAxICYmIGl0ZW1zWzBdLnR5cGUoKSA9PSBTdWJtZW51VHlwZSkgfHwg
b3B0aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oInByb21vdGVTdWJNZW51cyJfcykudmFsdWVP
cihmYWxzZSkpIHsKKyAgICBpZiAoKGl0ZW1zLnNpemUoKSA9PSAxICYmIGl0ZW1zWzBdLnR5cGUo
KSA9PSBTdWJtZW51VHlwZSkgfHwgb3B0aW9uc0pTT05PYmplY3QtPmdldEJvb2xlYW4oInByb21v
dGVTdWJNZW51cyJfcykudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgIGZvciAoYXV0byYmIGl0
ZW0gOiBzdGQ6OmV4Y2hhbmdlKGl0ZW1zLCB7IH0pKSB7CiAgICAgICAgICAgICBpZiAoIWl0ZW1z
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoeyBTZXBhcmF0b3JUeXBl
LCBpbnZhbGlkTWVudUl0ZW1JZGVudGlmaWVyLCAvKiB0aXRsZSAqLyBudWxsU3RyaW5nKCkgfSk7
CkBAIC02NTQsNyArNjU0LDcgQEAgYm9vbCBNZWRpYUNvbnRyb2xzSG9zdDo6c2hvd01lZGlhQ29u
dHJvbHNDb250ZXh0TWVudShIVE1MRWxlbWVudCYgdGFyZ2V0LCBTdHJpbmcKICNpZiBVU0UoVUlD
T05URVhUTUVOVSkKICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5zaG93TWVkaWFDb250cm9s
c0NvbnRleHRNZW51KGJvdW5kcywgV1RGTW92ZShpdGVtcyksIFdURk1vdmUoaGFuZGxlSXRlbVNl
bGVjdGVkKSk7CiAjZWxpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykgJiYgVVNFKEFDQ0VTU0lCSUxJ
VFlfQ09OVEVYVF9NRU5VUykKLSAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuY29udGV4dG1lbnVFdmVudCwgTWVkaWFDb250cm9sc0NvbnRleHRNZW51RXZlbnRMaXN0ZW5l
cjo6Y3JlYXRlKE1lZGlhQ29udHJvbHNDb250ZXh0TWVudVByb3ZpZGVyOjpjcmVhdGUoV1RGTW92
ZShpdGVtcyksIFdURk1vdmUoaGFuZGxlSXRlbVNlbGVjdGVkKSkpLCB7IC8qY2FwdHVyZSAqLyB0
cnVlLCAvKiBwYXNzaXZlICovIFdURjo6bnVsbG9wdCwgLyogb25jZSAqLyB0cnVlIH0pOworICAg
IHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jb250ZXh0bWVudUV2ZW50LCBN
ZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVFdmVudExpc3RlbmVyOjpjcmVhdGUoTWVkaWFDb250cm9s
c0NvbnRleHRNZW51UHJvdmlkZXI6OmNyZWF0ZShXVEZNb3ZlKGl0ZW1zKSwgV1RGTW92ZShoYW5k
bGVJdGVtU2VsZWN0ZWQpKSksIHsgLypjYXB0dXJlICovIHRydWUsIC8qIHBhc3NpdmUgKi8gc3Rk
OjpudWxsb3B0LCAvKiBvbmNlICovIHRydWUgfSk7CiAgICAgcGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCkuc2hvd0NvbnRleHRNZW51QXQoKnRhcmdldC5kb2N1bWVudCgpLmZyYW1lKCksIGJv
dW5kcy5jZW50ZXIoKSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmgKaW5kZXggMzQzNDM0MmU0MWY2NzFkYzI1
MTY2NzA0NDVhNGRkOTgxNTIyMWE3MS4uYjg5ZDUxM2ZhMDVmY2NlNjc1MjkyNzgxNmE1MWY0ZGZh
YTk3MTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlci5oCkBAIC03NSw4ICs3NSw4IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBwYXVzZVJlY29yZGluZygpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlc3Vt
ZVJlY29yZGluZygpOwogCi0gICAgdW5zaWduZWQgdmlkZW9CaXRzUGVyU2Vjb25kKCkgY29uc3Qg
eyByZXR1cm4gbV9vcHRpb25zLnZpZGVvQml0c1BlclNlY29uZC52YWx1ZU9yKDApOyB9Ci0gICAg
dW5zaWduZWQgYXVkaW9CaXRzUGVyU2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmF1
ZGlvQml0c1BlclNlY29uZC52YWx1ZU9yKDApOyB9CisgICAgdW5zaWduZWQgdmlkZW9CaXRzUGVy
U2Vjb25kKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnZpZGVvQml0c1BlclNlY29uZC52YWx1
ZV9vcigwKTsgfQorICAgIHVuc2lnbmVkIGF1ZGlvQml0c1BlclNlY29uZCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3B0aW9ucy5hdWRpb0JpdHNQZXJTZWNvbmQudmFsdWVfb3IoMCk7IH0KIAogICAgIE1l
ZGlhU3RyZWFtJiBzdHJlYW0oKSB7IHJldHVybiBtX3N0cmVhbS5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApp
bmRleCA1ZDA0Njg1MDEwZTAxYjM5YjAyZTE3YTc3MGQ4MDQxMDVhYjY2YjE0Li5lZmUwNTg4MDU5
MWZhOTA2ODI3Mjk2ZjUzMTYyNTMwMWFhOTM5ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTI5OCw3ICsyOTgs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNlc3Npb246OnNldFBvc2l0aW9uU3RhdGUoT3B0
aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYmCiAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgInsgfSIpOwogCiAgICAgaWYgKCFzdGF0ZSkgewotICAgICAgICBtX3Bvc2l0aW9uU3Rh
dGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcG9zaXRpb25TdGF0ZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgbm90aWZ5UG9zaXRpb25TdGF0ZU9ic2VydmVycygpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KQEAgLTMyMSw3ICszMjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRp
YVNlc3Npb246OnNldFBvc2l0aW9uU3RhdGUoT3B0aW9uYWw8TWVkaWFQb3NpdGlvblN0YXRlPiYm
CiBPcHRpb25hbDxkb3VibGU+IE1lZGlhU2Vzc2lvbjo6Y3VycmVudFBvc2l0aW9uKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcG9zaXRpb25TdGF0ZSB8fCAhbV9sYXN0UmVwb3J0ZWRQb3NpdGlvbikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gYWN0dWFsUGxheWJhY2tSYXRlID0gbV9wbGF5YmFja1N0YXRlID09IE1l
ZGlhU2Vzc2lvblBsYXliYWNrU3RhdGU6OlBsYXlpbmcgPyBtX3Bvc2l0aW9uU3RhdGUtPnBsYXli
YWNrUmF0ZSA6IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5k
ZXggNDAyNmQ5YTQ0MTQ3ZTA2OTYwMjhlYzE2OTY1ZDRiYjVhYTMxY2FkOS4uYzg1MjQ1ZWRmZDFh
YTY4NDAxMGE1ODE1ZjcwMzE5MzZhNzNlMGVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYW52YXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjay5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBjb25zdCBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3MmIENhbnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OnNldHRp
bgogdm9pZCBDYW52YXNDYXB0dXJlTWVkaWFTdHJlYW1UcmFjazo6U291cmNlOjpzZXR0aW5nc0Rp
ZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0
aW5ncykKIHsKICAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291
cmNlU2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZs
YWc6OkhlaWdodCB9KSkKLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIENh
bnZhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrOjpTb3VyY2U6OmNhbnZhc1Jlc2l6ZWQoQ2FudmFz
QmFzZSYgY2FudmFzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggNzZjYzU4NWE3MDU2Yjk4NzliMmRjOWUx
MDlhZjU3MDVlYmE3ZDZiZC4uOTJjOGRmOGJiMTFiMGQ2MWNiNzQ3NGQ0OWRmYWE1NWVkNTZmZjhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBNZWRpYVN0cmVhbVRy
YWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50
cz4mIGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3Byb21pc2Ut
PnJlc29sdmUoKTsKLSAgICAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLnZhbHVlT3Io
TWVkaWFUcmFja0NvbnN0cmFpbnRzIHsgfSk7CisgICAgICAgIG1fY29uc3RyYWludHMgPSBjb25z
dHJhaW50cy52YWx1ZV9vcihNZWRpYVRyYWNrQ29uc3RyYWludHMgeyB9KTsKICAgICB9OwogICAg
IG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cyhjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0
cmFpbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCmluZGV4
IDljNDhlNWE0NmEwNjJmN2RmZTNhNmNiNmY1YTNiYjNmNWJmMTUxMjIuLjdjMDU5MTM0YzA3ZjY5
MzM5OWRmNDhhNDQ4MGU4OWIwODUxNTc0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNhbmRpZGF0ZT4+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3Jl
YXRlKGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZUkKICAgICBpZiAoZGljdGlvbmFyeS5zZHBNaWQuaXNO
dWxsKCkgJiYgIWRpY3Rpb25hcnkuc2RwTUxpbmVJbmRleCkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIkNhbmRpZGF0ZSBtdXN0IG5vdCBoYXZlIGJvdGggbnVsbCBzZHBN
aWQgYW5kIHNkcE1MaW5lSW5kZXgiIH07CiAKLSAgICBhdXRvIGZpZWxkcyA9IHBhcnNlSWNlQ2Fu
ZGlkYXRlU0RQKGRpY3Rpb25hcnkuY2FuZGlkYXRlKS52YWx1ZU9yKFJUQ0ljZUNhbmRpZGF0ZTo6
RmllbGRzIHsgfSk7CisgICAgYXV0byBmaWVsZHMgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChkaWN0
aW9uYXJ5LmNhbmRpZGF0ZSkudmFsdWVfb3IoUlRDSWNlQ2FuZGlkYXRlOjpGaWVsZHMgeyB9KTsK
ICAgICBmaWVsZHMudXNlcm5hbWVGcmFnbWVudCA9IGRpY3Rpb25hcnkudXNlcm5hbWVGcmFnbWVu
dDsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENJY2VDYW5kaWRhdGUoZGljdGlvbmFyeS5j
YW5kaWRhdGUsIGRpY3Rpb25hcnkuc2RwTWlkLCBkaWN0aW9uYXJ5LnNkcE1MaW5lSW5kZXgsIFdU
Rk1vdmUoZmllbGRzKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAppbmRleCBmNjE0MjVhY2QzZWNlNzkz
NGRiMDNlMmY0YzNkZDZiOGI3MTFhZjQ5Li4zNjc2YWI0NWMyZDY5NGY1ZjY5ZWJmODBkZjk5ZTdj
MDZjMmNiZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBSVENSdHBUcmFuc2NlaXZlcjo6ZGlyZWN0aW9uKCkgY29uc3QKIE9w
dGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBSVENSdHBUcmFuc2NlaXZlcjo6Y3Vy
cmVudERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2JhY2tlbmQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIG1fYmFja2VuZC0+Y3VycmVudERpcmVjdGlvbigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBTZW5k
ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCmluZGV4IGNhMjJmMGE4YzkzZGRlZTky
OTA1YTQxNzA5ZjQ3OWNiNjc1YmY1YTAuLmI2ODc4MDJiNjQ3NDQyYmEyYmQ0ZjA0MTg5NTExODUz
MjlkNjVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
bGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFNlbmRlckJhY2tl
bmQuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5k
OjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBwYXJhbWUKIAogICAg
IGF1dG8gcnRjUGFyYW1ldGVycyA9IFdURk1vdmUoKm1fY3VycmVudFBhcmFtZXRlcnMpOwogICAg
IHVwZGF0ZVJUQ1J0cFNlbmRQYXJhbWV0ZXJzKHBhcmFtZXRlcnMsIHJ0Y1BhcmFtZXRlcnMpOwot
ICAgIG1fY3VycmVudFBhcmFtZXRlcnMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50UGFy
YW1ldGVycyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZXJyb3IgPSBtX3J0Y1NlbmRlci0+
U2V0UGFyYW1ldGVycyhydGNQYXJhbWV0ZXJzKTsKICAgICBpZiAoIWVycm9yLm9rKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3Bw
CmluZGV4IGQzMjlmMGM5ZmIzMjQ3YzQyY2Q3N2M5NmQwYjlhODc3NmUwZDcyNjIuLjYzZTRjZTcy
MGMyOGJiMzUzZjM4ODM1MDZkZjM2NDA0M2JjZGI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gTGliV2ViUlRDUnRwVHJhbnNj
ZWl2ZXJCYWNrZW5kOjpjdXJyZW50RGlyZQogewogICAgIGF1dG8gdmFsdWUgPSBtX3J0Y1RyYW5z
Y2VpdmVyLT5jdXJyZW50X2RpcmVjdGlvbigpOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHRvUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24oKnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wYXltZW50cmVxdWVzdC9QYXltZW50UmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0
LmNwcAppbmRleCBlYmJhODQ3NmM5NWM2NmNkOWJmMGQ3ZTM2OGRiNGU0M2Q0YWQzMDJjLi45Yjkw
MjIwMGZkYzhhZDIxMzI0OGJhZmEzZGNiNzlmNmRkMzY3NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0L1BheW1lbnRSZXF1ZXN0LmNwcApA
QCAtMTgwLDEzICsxODAsMTMgQEAgT3B0aW9uYWw8UGF5bWVudFJlcXVlc3Q6Ok1ldGhvZElkZW50
aWZpZXI+IGNvbnZlcnRBbmRWYWxpZGF0ZVBheW1lbnRNZXRob2RJZGVudGkKICAgICBpZiAoIXVy
bC5pc1ZhbGlkKCkpIHsKICAgICAgICAgaWYgKGlzVmFsaWRTdGFuZGFyZGl6ZWRQYXltZW50TWV0
aG9kSWRlbnRpZmllcihpZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybiB7IGlkZW50aWZp
ZXIgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoaXNWYWxpZFVSTEJhc2VkUGF5bWVudE1ldGhvZElk
ZW50aWZpZXIodXJsKSkKICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh1cmwpIH07CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGVudW0g
Y2xhc3MgSXNVcGRhdGUgewpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxz
dGQ6OnR1cGxlPFN0cmluZywgVmVjdG9yPFN0cmluZz4+PiBjaGVja0FuZENhbm9uaWNhbGl6ZURl
dGFpCiAgICAgICAgIH0gZWxzZSBpZiAoaXNVcGRhdGUgPT0gSXNVcGRhdGU6Ok5vKQogICAgICAg
ICAgICAgZGV0YWlscy5zaGlwcGluZ09wdGlvbnMgPSB7IHsgfSB9OwogICAgIH0gZWxzZSBpZiAo
aXNVcGRhdGUgPT0gSXNVcGRhdGU6Ok5vKQotICAgICAgICBkZXRhaWxzLnNoaXBwaW5nT3B0aW9u
cyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgZGV0YWlscy5zaGlwcGluZ09wdGlvbnMgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBzZXJpYWxpemVkTW9kaWZpZXJEYXRhOwog
ICAgIGlmIChkZXRhaWxzLm1vZGlmaWVycykgewpAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgUGF5
bWVudFJlcXVlc3Q6OnNldHRsZVNob3dQcm9taXNlKEV4Y2VwdGlvbk9yPFBheW1lbnRSZXNwb25z
ZSY+JiYgcmVzdWx0KQogCiB2b2lkIFBheW1lbnRSZXF1ZXN0OjpjbG9zZUFjdGl2ZVBheW1lbnRI
YW5kbGVyKCkKIHsKLSAgICBpZiAoYXV0byBhY3RpdmVQYXltZW50SGFuZGxlciA9IHN0ZDo6ZXhj
aGFuZ2UobV9hY3RpdmVQYXltZW50SGFuZGxlciwgV1RGOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0
byBhY3RpdmVQYXltZW50SGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9hY3RpdmVQYXltZW50SGFu
ZGxlciwgc3RkOjpudWxsb3B0KSkKICAgICAgICAgYWN0aXZlUGF5bWVudEhhbmRsZXItPnBheW1l
bnRIYW5kbGVyLT5oaWRlKCk7CiAKICAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKQEAgLTUyOCw3
ICs1MjgsNyBAQCBPcHRpb25hbDxQYXltZW50U2hpcHBpbmdUeXBlPiBQYXltZW50UmVxdWVzdDo6
c2hpcHBpbmdUeXBlKCkgY29uc3QKIHsKICAgICBpZiAobV9vcHRpb25zLnJlcXVlc3RTaGlwcGlu
ZykKICAgICAgICAgcmV0dXJuIG1fb3B0aW9ucy5zaGlwcGluZ1R5cGU7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBheW1lbnRS
ZXF1ZXN0OjpzaGlwcGluZ0FkZHJlc3NDaGFuZ2VkKFJlZjxQYXltZW50QWRkcmVzcz4mJiBzaGlw
cGluZ0FkZHJlc3MpCkBAIC03MzIsNyArNzMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVu
dFJlcXVlc3Q6OmNvbXBsZXRlKE9wdGlvbmFsPFBheW1lbnRDb21wbGV0ZT4mJiByZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBBYm9ydEVycm9yIH07CiAKICAgICBhY3RpdmVQYXlt
ZW50SGFuZGxlcigpLT5jb21wbGV0ZShXVEZNb3ZlKHJlc3VsdCkpOwotICAgIG1fYWN0aXZlUGF5
bWVudEhhbmRsZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3RpdmVQYXltZW50SGFuZGxlciA9
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC03NDgsNyArNzQ4LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUGF5bWVudFJlcXVlc3Q6OnJldHJ5KFBheW1lbnRWYWxpZGF0aW9u
RXJyb3JzJiYgZXJyb3JzKQogCiB2b2lkIFBheW1lbnRSZXF1ZXN0OjpjYW5jZWwoKQogewotICAg
IG1fYWN0aXZlUGF5bWVudEhhbmRsZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9hY3RpdmVQYXlt
ZW50SGFuZGxlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX2lzVXBkYXRpbmcpIHsKICAg
ICAgICAgbV9pc0NhbmNlbFBlbmRpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25FcnJvci5oCmluZGV4IGRmMmQzMmY4
YzY0YzllNGRiMGIzMGVkMzA3NGIwYmZkZWQ4N2IzYzIuLjc2MzRiZDAwMzMzN2JiZmZiMjcxNmNm
MDcyNDFlZmQwMjhiYjFiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkVycm9yLmgKQEAgLTYwLDEyICs2MCwxMiBAQCBPcHRp
b25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiBTcGVlY2hSZWNvZ25pdGlvbkVycm9yOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcgogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uRXJyb3JU
eXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxTdHJpbmc+IG1lc3NhZ2U7CiAgICAgZGVjb2RlciA+PiBtZXNzYWdlOwogICAg
IGlmICghbWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gU3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCptZXNzYWdlKSB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1ZXN0SW5m
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZXF1
ZXN0SW5mby5oCmluZGV4IGU3ZDQwYmYwMzg2M2RjZjNjN2QwMzdlMTQyNGZkOGFlYTNiYzYzNTgu
Ljk0MjZjOTRjNzliNDM4MzhhZjMwN2Q5MmI3Zjc0MDNiNTcwNDhlZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVxdWVzdEluZm8u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJl
cXVlc3RJbmZvLmgKQEAgLTU2LDM3ICs1NiwzNyBAQCBPcHRpb25hbDxTcGVlY2hSZWNvZ25pdGlv
blJlcXVlc3RJbmZvPiBTcGVlY2hSZWNvZ25pdGlvblJlcXVlc3RJbmZvOjpkZWNvZGUoRGVjbwog
ICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXI+
IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjbGllbnRJZGVudGlmaWVyOwogICAg
IGlmICghY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gbGFuZzsK
ICAgICBkZWNvZGVyID4+IGxhbmc7CiAgICAgaWYgKCFsYW5nKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Ym9vbD4gY29udGludW91czsKICAgICBkZWNvZGVyID4+IGNvbnRpbnVvdXM7CiAgICAgaWYgKCFj
b250aW51b3VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaW50ZXJpbVJlc3VsdHM7CiAgICAg
ZGVjb2RlciA+PiBpbnRlcmltUmVzdWx0czsKICAgICBpZiAoIWludGVyaW1SZXN1bHRzKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1heEFsdGVybmF0aXZlczsKICAgICBkZWNvZGVyID4+
IG1heEFsdGVybmF0aXZlczsKICAgICBpZiAoIW1heEFsdGVybmF0aXZlcykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPENsaWVudE9yaWdpbj4gY2xpZW50T3JpZ2luOwogICAgIGRlY29kZXIgPj4gY2xpZW50
T3JpZ2luOwogICAgIGlmICghY2xpZW50T3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZp
ZXI7CiAgICAgaWYgKCFmcmFtZUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAg
ICAgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCmluZGV4
IDYxNDRkMWZmMDcwNjg5Y2FiYmI4MTZjNGZiYTI5NzIzYWE0M2YxYjIuLjVhYTQ4NTIwY2I4ZjY3
NzZkMzA1Mzg0ZDc0Njk0MTQzNzM1YzcwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YS5oCkBAIC00
NiwxMCArNDYsMTAgQEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+
IFNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhOjpkZWMKIHsKICAgICBTcGVlY2hSZWNv
Z25pdGlvbkFsdGVybmF0aXZlRGF0YSByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQudHJhbnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5j
b25maWRlbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03MywxMCArNzMsMTAg
QEAgT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhPiBTcGVlY2hSZWNvZ25pdGlv
blJlc3VsdERhdGE6OmRlY29kZShEZWNvZGUKIHsKICAgICBTcGVlY2hSZWNvZ25pdGlvblJlc3Vs
dERhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmFsdGVybmF0aXZl
cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0ZpbmFsKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25VcGRhdGUuaAppbmRleCA4OTE0OTE3OTNmNGUwMWVj
MmZmNjAxMDdjYjQ4NWY0ODhmYTQzZTg0Li5jMjliYjI1YTMxNjRjNGExYzJlMWFlMTJhOGI2MGJj
OTA1NDM5NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uVXBkYXRlLmgKQEAgLTg0LDE3ICs4NCwxNyBAQCBPcHRpb25hbDxT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZT4gU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZAogICAgIE9wdGlvbmFsPFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNs
aWVudElkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjbGllbnRJ
ZGVudGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7
CiAgICAgaWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29udGVudD4gY29udGVudDsKICAg
ICBkZWNvZGVyID4+IGNvbnRlbnQ7CiAgICAgaWYgKCFjb250ZW50KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlIHsgV1RGTW92ZSgqY2xpZW50SWRlbnRpZmllciksIFdU
Rk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpjb250ZW50KSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXplci5oCmluZGV4IGJkYzRiOWFmMmM1YWZm
ZjBjM2Q2ODY3NjQ5OGI1ZDdiOTc3NGU5ZDIuLmE2Yjg4MjBkYzFjZDNmN2I1NDhlY2FmMzAzZDk0
MTQ1YzJmNDEwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFJlY29nbml6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hSZWNvZ25pemVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydChSZWY8UmVhbHRpbWVNZWRp
YVNvdXJjZT4mJiwgYm9vbCBtb2NrU3BlZWNoUmVjb2duaXRpb25FbmFibGVkKTsKICNlbmRpZgot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWJvcnQoT3B0aW9uYWw8U3BlZWNoUmVjb2duaXRpb25F
cnJvcj4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhYm9ydChP
cHRpb25hbDxTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiYmID0gc3RkOjpudWxsb3B0KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0b3AoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBh
cmVGb3JEZXN0cnVjdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggZGM2ZjAyZDdhYTQ4
YjUwNTYwODhkOGVjMDQ5OGEyMDI1Y2JlZDFiMi4uMDkyYzdkNmZmNGUwYmUwY2VlNzllOTlmYmZh
NWE1NDQzMjgzMjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDYwLDcgKzQ2MCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRMYXRlcihkb3VibGUg
d2hlbiwgZG91YmxlIGdyYWluT2ZmCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnN0YXJ0UGxheWluZyhkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0LCBPcHRp
b25hbDxkb3VibGU+IGdyYWluRHVyYXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ3aGVuID0gIiwgd2hlbiwgIiwgb2Zm
c2V0ID0gIiwgZ3JhaW5PZmZzZXQsICIsIGR1cmF0aW9uID0gIiwgZ3JhaW5EdXJhdGlvbi52YWx1
ZU9yKDApKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJ3aGVuID0gIiwgd2hlbiwg
Iiwgb2Zmc2V0ID0gIiwgZ3JhaW5PZmZzZXQsICIsIGR1cmF0aW9uID0gIiwgZ3JhaW5EdXJhdGlv
bi52YWx1ZV9vcigwKSk7CiAKICAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVE
X1NUQVRFKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJD
YW5ub3QgY2FsbCBzdGFydCBtb3JlIHRoYW4gb25jZS4iX3MgfTsKQEAgLTQ4MSw3ICs0ODEsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0UGxheWluZyhk
b3VibGUgd2hlbiwgZG91YmxlIGdyYWluTwogCiAgICAgbV9pc0dyYWluID0gdHJ1ZTsKICAgICBt
X2dyYWluT2Zmc2V0ID0gZ3JhaW5PZmZzZXQ7Ci0gICAgbV9ncmFpbkR1cmF0aW9uID0gZ3JhaW5E
dXJhdGlvbi52YWx1ZU9yKDApOworICAgIG1fZ3JhaW5EdXJhdGlvbiA9IGdyYWluRHVyYXRpb24u
dmFsdWVfb3IoMCk7CiAgICAgbV93YXNHcmFpbkR1cmF0aW9uR2l2ZW4gPSAhIWdyYWluRHVyYXRp
b247CiAgICAgbV9zdGFydFRpbWUgPSB3aGVuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggZmViYTMzMGVkMDIwYTdhNjlhNDQzZjMyMmVk
YWRkN2UxYTk2ZDZlYy4uMDYwNGY1YWM3OGZkNDc0ZDgyMTFlNDVhOWNjOTYxMmUyZTBmY2UxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAt
Njc0LDE1ICs2NzQsMTUgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmV2l0aExvY2soKQogCiBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmhhbmRsZUF1ZGlvTm9kZU9wdGlvbnMoY29uc3QgQXVk
aW9Ob2RlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgRGVmYXVsdEF1ZGlvTm9kZU9wdGlvbnMmIGRl
ZmF1bHRzKQogewotICAgIGF1dG8gcmVzdWx0ID0gc2V0Q2hhbm5lbENvdW50KG9wdGlvbnMuY2hh
bm5lbENvdW50LnZhbHVlT3IoZGVmYXVsdHMuY2hhbm5lbENvdW50KSk7CisgICAgYXV0byByZXN1
bHQgPSBzZXRDaGFubmVsQ291bnQob3B0aW9ucy5jaGFubmVsQ291bnQudmFsdWVfb3IoZGVmYXVs
dHMuY2hhbm5lbENvdW50KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXN1bHQgPSBzZXRD
aGFubmVsQ291bnRNb2RlKG9wdGlvbnMuY2hhbm5lbENvdW50TW9kZS52YWx1ZU9yKGRlZmF1bHRz
LmNoYW5uZWxDb3VudE1vZGUpKTsKKyAgICByZXN1bHQgPSBzZXRDaGFubmVsQ291bnRNb2RlKG9w
dGlvbnMuY2hhbm5lbENvdW50TW9kZS52YWx1ZV9vcihkZWZhdWx0cy5jaGFubmVsQ291bnRNb2Rl
KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICByZXN1bHQgPSBzZXRDaGFubmVsSW50ZXJwcmV0
YXRpb24ob3B0aW9ucy5jaGFubmVsSW50ZXJwcmV0YXRpb24udmFsdWVPcihkZWZhdWx0cy5jaGFu
bmVsSW50ZXJwcmV0YXRpb24pKTsKKyAgICByZXN1bHQgPSBzZXRDaGFubmVsSW50ZXJwcmV0YXRp
b24ob3B0aW9ucy5jaGFubmVsSW50ZXJwcmV0YXRpb24udmFsdWVfb3IoZGVmYXVsdHMuY2hhbm5l
bEludGVycHJldGF0aW9uKSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRleCA3
YTA0YTVhZmI0OTJjMzI0M2RhMDgxZWFkNzcwNTYxZWVmYmJjNTdlLi41NGZjYWJhNDUyNGZkMjg4
MDdiMzc5MWU5ZTJmOTRiYzIwMDE5Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0yNjIsNyArMjYyLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxBbmRIb2xkQXRU
aW1lKFNlY29uZHMgY2FuY2VsVGltZSkKICAgICAgICAgICAgIC8vIHdlIGdldCB0aGVyZS4KICAg
ICAgICAgICAgICsrY2FuY2VsbGVkRXZlbnRJbmRleDsKIAotICAgICAgICAgICAgbmV3RXZlbnQg
PSBQYXJhbUV2ZW50OjpjcmVhdGVDYW5jZWxWYWx1ZXNFdmVudChjYW5jZWxUaW1lLCBXVEY6Om51
bGxvcHQpOworICAgICAgICAgICAgbmV3RXZlbnQgPSBQYXJhbUV2ZW50OjpjcmVhdGVDYW5jZWxW
YWx1ZXNFdmVudChjYW5jZWxUaW1lLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTI4NSw3ICsyODUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b1BhcmFtVGltZWxpbmU6OmNhbmNlbEFuZEhvbGRBdFRpbWUoU2Vjb25kcyBjYW5jZWxUaW1lKQog
ICAgICAgICAgICAgICAgIGZsb2F0IGVuZFZhbHVlID0gdmFsdWVDdXJ2ZUF0VGltZShjYW5jZWxU
aW1lLCBjYW5jZWxsZWRFdmVudC50aW1lKCksIGNhbmNlbGxlZEV2ZW50LmR1cmF0aW9uKCksIGNh
bmNlbGxlZEV2ZW50LmN1cnZlKCkuZGF0YSgpLCBjYW5jZWxsZWRFdmVudC5jdXJ2ZSgpLnNpemUo
KSk7CiAKICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyBTZXRWYWx1ZUN1
cnZlIHdpdGggdGhpcyBuZXcgb25lIHRoYXQgaXMgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIGR1
cmF0aW9uLgotICAgICAgICAgICAgICAgIG5ld0V2ZW50ID0gUGFyYW1FdmVudCB7IGV2ZW50VHlw
ZSwgY2FuY2VsbGVkRXZlbnQudmFsdWUoKSwgY2FuY2VsbGVkRXZlbnQudGltZSgpLCBjYW5jZWxs
ZWRFdmVudC50aW1lQ29uc3RhbnQoKSwgbmV3RHVyYXRpb24sIFZlY3RvcjxmbG9hdD4geyBjYW5j
ZWxsZWRFdmVudC5jdXJ2ZSgpIH0sIGNhbmNlbGxlZEV2ZW50LmN1cnZlUG9pbnRzUGVyU2Vjb25k
KCksIGVuZFZhbHVlLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgICAgICBuZXdFdmVudCA9
IFBhcmFtRXZlbnQgeyBldmVudFR5cGUsIGNhbmNlbGxlZEV2ZW50LnZhbHVlKCksIGNhbmNlbGxl
ZEV2ZW50LnRpbWUoKSwgY2FuY2VsbGVkRXZlbnQudGltZUNvbnN0YW50KCksIG5ld0R1cmF0aW9u
LCBWZWN0b3I8ZmxvYXQ+IHsgY2FuY2VsbGVkRXZlbnQuY3VydmUoKSB9LCBjYW5jZWxsZWRFdmVu
dC5jdXJ2ZVBvaW50c1BlclNlY29uZCgpLCBlbmRWYWx1ZSwgc3RkOjpudWxsb3B0IH07CiAgICAg
ICAgICAgICAgICAgbmV3U2V0VmFsdWVFdmVudCA9IFBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVl
RXZlbnQoZW5kVmFsdWUsIGNhbmNlbGxlZEV2ZW50LnRpbWUoKSArIG5ld0R1cmF0aW9uKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzI4LDEwICszMjgsMTAgQEAgT3B0aW9uYWw8Zmxv
YXQ+IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShCYXNlQXVkaW9Db250
ZXh0JiBjb250ZXgKIHsKICAgICB7CiAgICAgICAgIGlmICghbV9ldmVudHNMb2NrLnRyeUxvY2so
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgQWRvcHRMb2NrLCBtX2V2ZW50
c0xvY2sgfTsKICAgICAgICAgaWYgKCFtX2V2ZW50cy5zaXplKCkgfHwgU2Vjb25kcyB7IGNvbnRl
eHQuY3VycmVudFRpbWUoKSB9IDwgbV9ldmVudHNbMF0udGltZSgpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gQXNrIGZvciBqdXN0IGEgc2luZ2xlIHZhbHVlLgpAQCAtOTA0LDE3ICs5MDQs
MTcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmhhbmRsZUNhbmNlbFZhbHVlcyhQYXJhbUV2
ZW50JiBldmVudCwgUGFyYW1FdmVudCogbmV4dEUKIAogYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6
OlBhcmFtRXZlbnQ6OmNyZWF0ZVNldFZhbHVlRXZlbnQoZmxvYXQgdmFsdWUsIFNlY29uZHMgdGlt
ZSkgLT4gUGFyYW1FdmVudAogewotICAgIHJldHVybiBQYXJhbUV2ZW50IHsgUGFyYW1FdmVudDo6
U2V0VmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0PiB7IH0s
IDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiBQYXJhbUV2ZW50IHsgUGFyYW1FdmVu
dDo6U2V0VmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0PiB7
IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1UaW1lbGluZTo6
UGFyYW1FdmVudDo6Y3JlYXRlTGluZWFyUmFtcEV2ZW50KGZsb2F0IHZhbHVlLCBTZWNvbmRzIHRp
bWUpIC0+IFBhcmFtRXZlbnQKIHsKLSAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpMaW5lYXJSYW1w
VG9WYWx1ZSwgdmFsdWUsIHRpbWUsIDAsIFNlY29uZHMgeyB9LCBWZWN0b3I8ZmxvYXQ+IHsgfSwg
MCwgMCwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgUGFyYW1FdmVudDo6TGluZWFyUmFt
cFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0PiB7IH0s
IDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1UaW1lbGluZTo6UGFy
YW1FdmVudDo6Y3JlYXRlRXhwb25lbnRpYWxSYW1wRXZlbnQoZmxvYXQgdmFsdWUsIFNlY29uZHMg
dGltZSkgLT4gUGFyYW1FdmVudAogewotICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OkV4cG9uZW50
aWFsUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0
PiB7IH0sIDAsIDAsIFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OkV4
cG9uZW50aWFsUmFtcFRvVmFsdWUsIHZhbHVlLCB0aW1lLCAwLCBTZWNvbmRzIHsgfSwgVmVjdG9y
PGZsb2F0PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1U
aW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlU2V0VGFyZ2V0RXZlbnQoZmxvYXQgdGFyZ2V0LCBT
ZWNvbmRzIHRpbWUsIGZsb2F0IHRpbWVDb25zdGFudCkgLT4gUGFyYW1FdmVudApAQCAtOTIyLDE0
ICs5MjIsMTQgQEAgYXV0byBBdWRpb1BhcmFtVGltZWxpbmU6OlBhcmFtRXZlbnQ6OmNyZWF0ZVNl
dFRhcmdldEV2ZW50KGZsb2F0IHRhcmdldCwgU2Vjb25kcwogICAgIC8vIFRoZSB0aW1lIGxpbmUg
Y29kZSBkb2VzIG5vdCBleHBlY3QgYSB0aW1lQ29uc3RhbnQgb2YgMC4gKEl0IHJldHVybnMgTmFO
IG9yIEluZmluaXR5IGR1ZSB0byBkaXZpc2lvbiBieSB6ZXJvLiBUaGUgY2FsbGVyCiAgICAgLy8g
c2hvdWxkIGhhdmUgY29udmVydGVkIHRoaXMgdG8gYSBTZXRWYWx1ZUV2ZW50LgogICAgIEFTU0VS
VCghIXRpbWVDb25zdGFudCk7Ci0gICAgcmV0dXJuIHsgUGFyYW1FdmVudDo6U2V0VGFyZ2V0LCB0
YXJnZXQsIHRpbWUsIHRpbWVDb25zdGFudCwgU2Vjb25kcyB7IH0sIFZlY3RvcjxmbG9hdD4geyB9
LCAwLCAwLCBXVEY6Om51bGxvcHQgfTsKKyAgICByZXR1cm4geyBQYXJhbUV2ZW50OjpTZXRUYXJn
ZXQsIHRhcmdldCwgdGltZSwgdGltZUNvbnN0YW50LCBTZWNvbmRzIHsgfSwgVmVjdG9yPGZsb2F0
PiB7IH0sIDAsIDAsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6UGFyYW1FdmVudDo6Y3JlYXRlU2V0VmFsdWVDdXJ2ZUV2ZW50KFZlY3RvcjxmbG9hdD4mJiBj
dXJ2ZSwgU2Vjb25kcyB0aW1lLCBTZWNvbmRzIGR1cmF0aW9uKSAtPiBQYXJhbUV2ZW50CiB7CiAg
ICAgZG91YmxlIGN1cnZlUG9pbnRzUGVyU2Vjb25kID0gKGN1cnZlLnNpemUoKSAtIDEpIC8gZHVy
YXRpb24udmFsdWUoKTsKICAgICBmbG9hdCBjdXJ2ZUVuZFZhbHVlID0gY3VydmUubGFzdCgpOwot
ICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OlNldFZhbHVlQ3VydmUsIDAsIHRpbWUsIDAsIGR1cmF0
aW9uLCBXVEZNb3ZlKGN1cnZlKSwgY3VydmVQb2ludHNQZXJTZWNvbmQsIGN1cnZlRW5kVmFsdWUs
IFdURjo6bnVsbG9wdCB9OworICAgIHJldHVybiB7IFBhcmFtRXZlbnQ6OlNldFZhbHVlQ3VydmUs
IDAsIHRpbWUsIDAsIGR1cmF0aW9uLCBXVEZNb3ZlKGN1cnZlKSwgY3VydmVQb2ludHNQZXJTZWNv
bmQsIGN1cnZlRW5kVmFsdWUsIHN0ZDo6bnVsbG9wdCB9OwogfQogCiBhdXRvIEF1ZGlvUGFyYW1U
aW1lbGluZTo6UGFyYW1FdmVudDo6Y3JlYXRlQ2FuY2VsVmFsdWVzRXZlbnQoU2Vjb25kcyBjYW5j
ZWxUaW1lLCBPcHRpb25hbDxTYXZlZEV2ZW50PiYmIHNhdmVkRXZlbnQpIC0+IFBhcmFtRXZlbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMjA3MGZjN2MxMDk4MTFlZDkzMzZlNTEwZjlkYmY2
ZjM4MzM2YjExNy4uZDQ2ZDgzODUxYmQwYWEzMWU3M2ZkZDQzODQ3ZWQyODE3MGRmMzk5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEF1ZGlvV29ya2xl
dEdsb2JhbFNjb3BlOjpoYW5kbGVQb3N0UmVuZGVyVGFza3Moc2l6ZV90IGN1cnJlbnRGcmFtZSkK
ICAgICAgICAgLy8gZXhwbGljaXRseSBhbGxvdyB0aGUgZm9sbG93aW5nIGFsbG9jYXRpb24ocyku
CiAgICAgICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUg
ZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKICAgICAgICAgLy8gVGhpcyB0YWtlcyBjYXJlIG9m
IHByb2Nlc3NpbmcgdGhlIE1pY3JvVGFzayBxdWV1ZSBhZnRlciByZW5kZXJpbmcuCi0gICAgICAg
IG1fbG9ja0R1cmluZ1JlbmRlcmluZyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9sb2NrRHVy
aW5nUmVuZGVyaW5nID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCBmYWI3N2E5
M2JjYzMxMjFkZmEyODhjMTgyOGQyM2U1NTU4ZGY5ZmI5Li4zMmZhMmNjNjliYmU0MjI3ZWU5N2Ji
OTRhOTRjMTA1OWQ1MDJjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CiAKICAgICAvLyBBc3luY2hyb25v
dXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgotICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBPcHRpb25hbDxSZWY8RGVmZXJyZWRQcm9taXNlPj4mJiA9
IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVy
PiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+JiYsIE9wdGlvbmFsPFJlZjxEZWZlcnJlZFByb21pc2U+PiYmID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIEF1ZGlvTGlzdGVuZXImIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lcjsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNzI4YmI5Mjg2YTM1NWQwMDdk
OWNiMDE4MTM1Y2Y2YzE5MzRiMWE3OC4uYjYwYzIyYTM3MWM1ZjkyODU0YmZjMzZlMGM1YzgzNjdj
NjQ3NWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDgsNyArNDgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBPcHRpb25h
bDxmbG9hdD4gc2FtcGxlUmF0ZSkKLSAgICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUudmFsdWVPcihBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUo
KSkpCisgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLnZhbHVl
X29yKEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKSkKIHsKICAgICBBU1NF
UlQoQmFzZUF1ZGlvQ29udGV4dDo6aXNTdXBwb3J0ZWRTYW1wbGVSYXRlKEF1ZGlvRGVzdGluYXRp
b246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKSk7CiAgICAgaW5pdGlhbGl6ZURlZmF1bHROb2RlT3B0
aW9ucygyLCBDaGFubmVsQ291bnRNb2RlOjpFeHBsaWNpdCwgQ2hhbm5lbEludGVycHJldGF0aW9u
OjpTcGVha2Vycyk7CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWwK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCAiQXVkaW9EZXN0aW5hdGlvbk5vZGUgaXMgbm90IGluaXRpYWxpemVkIl9zIH0pOwog
CiAgICAgYXV0byBpbm5lckNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0aW9u
YWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGYWlsZWQgdG8gc3RhcnQgdGhlIGF1
ZGlvIGRldmljZSJfcyB9KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MgPyBz
dGQ6Om51bGxvcHQgOiBzdGQ6Om1ha2Vfb3B0aW9uYWwoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJGYWlsZWQgdG8gc3RhcnQgdGhlIGF1ZGlvIGRldmljZSJfcyB9KSk7CiAgICAgfTsK
IAogICAgIG1fd2FzRGVzdGluYXRpb25TdGFydGVkID0gdHJ1ZTsKQEAgLTE3Myw3ICsxNzMsNyBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8RXhjZXB0aQogICAgIH0KICAgICBtX3dhc0Rlc3RpbmF0aW9uU3Rh
cnRlZCA9IHRydWU7CiAgICAgbV9kZXN0aW5hdGlvbi0+c3RhcnQoZGlzcGF0Y2hUb1JlbmRlclRo
cmVhZEZ1bmN0aW9uKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdWNjZXNzID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8gc3RkOjpudWxsb3B0IDogc3RkOjpt
YWtlX29wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRmFpbGVkIHRvIHN0
YXJ0IHRoZSBhdWRpbyBkZXZpY2UiX3MgfSkpOwogICAgIH0pOwogfQogCkBAIC0xODksNyArMTg5
LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxFeGNlcHQKIAogICAgIG1fd2FzRGVzdGluYXRpb25TdGFy
dGVkID0gZmFsc2U7CiAgICAgbV9kZXN0aW5hdGlvbi0+c3RvcChbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VzcyA/IFdURjo6bnVsbG9wdCA6IG1ha2VPcHRp
b25hbChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZhaWxlZCB0byBzdG9wIHRoZSBh
dWRpbyBkZXZpY2UiX3MgfSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdWNjZXNzID8g
c3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCAiRmFpbGVkIHRvIHN0b3AgdGhlIGF1ZGlvIGRldmljZSJfcyB9KSk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGU1ZTQ3ODU4YTAxNjAyYmE2ODIy
NDEyNDE4MjFkN2M4NTJjZWZhNWYuLjhjZjE0ODkzZWM1YzNkZWZhNGQ5MGUwOGE1NGIzZDNmZDBk
ZjA3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uOwogY2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNr
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dCYsIE9wdGlvbmFsPGZsb2F0PiBzYW1wbGVSYXRlID0gV1RGOjpudWxsb3B0KTsK
KyAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwg
T3B0aW9uYWw8ZmxvYXQ+IHNhbXBsZVJhdGUgPSBzdGQ6Om51bGxvcHQpOwogICAgIH5EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKIAogICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGFlZmUyYTg0MzZkMzY1ZTE4NjgxMzI2
N2UzOGFjODYxNzRiYmZlZjUuLjdjYmE0MWM5M2MzN2JiZGZhYjYwMDk0N2MxODEzMTA1MjJiMWE1
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTE0MSwxMiArMTQxLDEyIEBA
IHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsCiAgICAgICAgIHdvcmtsZXRQcm94eS0+cG9zdFRhc2tG
b3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoW29mZlRocmVhZFJlbmRlcmluZyA9IFdURk1vdmUo
b2ZmVGhyZWFkUmVuZGVyaW5nKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewog
ICAgICAgICAgICAgb2ZmVGhyZWFkUmVuZGVyaW5nKCk7CiAgICAgICAgIH0sIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOwotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBsaW1pdCB0aGUg
bnVtYmVyIG9mIHRocmVhZHMgd2UgY3JlYXRlIGZvciBvZmZsaW5lIGF1ZGlvLgogICAgIG1fcmVu
ZGVyVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIm9mZmxpbmUgcmVuZGVyZXIiLCBXVEZNb3ZlKG9m
ZlRocmVhZFJlbmRlcmluZyksIFRocmVhZFR5cGU6OkF1ZGlvLCBUaHJlYWQ6OlFPUzo6RGVmYXVs
dCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogCiBhdXRvIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVuZGVyT25BdWRpb1RocmVhZCgpIC0+IFJlbmRlclJlc3VsdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnND
bGllbnRJbnB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmgKaW5kZXggZGJiZWUzM2IzNzRlM2JlMmU1MDE1
ZGU3NWVhMGY2MzhkNGExNzc5NS4uOWRmYmNmYTU2ZjQxZTE5MTVmYzk5NWY0ZmE0MzA3YjQ3MDQ2
ZTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5oCkBAIC01
MywxMyArNTMsMTMgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5w
dXRzPiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnAKICAgICBPcHRpb25hbDxTdHJp
bmc+IGFwcGlkOwogICAgIGRlY29kZXIgPj4gYXBwaWQ7CiAgICAgaWYgKCFhcHBpZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQuYXBwaWQgPSBXVEZNb3ZlKCphcHBpZCk7CiAKICAgICBPcHRpb25hbDxib29sPiBn
b29nbGVMZWdhY3lBcHBpZFN1cHBvcnQ7CiAgICAgZGVjb2RlciA+PiBnb29nbGVMZWdhY3lBcHBp
ZFN1cHBvcnQ7CiAgICAgaWYgKCFnb29nbGVMZWdhY3lBcHBpZFN1cHBvcnQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVz
dWx0Lmdvb2dsZUxlZ2FjeUFwcGlkU3VwcG9ydCA9IFdURk1vdmUoKmdvb2dsZUxlZ2FjeUFwcGlk
U3VwcG9ydCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuY3BwCmluZGV4IDFjMGMwNDFlY2IzN2U5MTgxNjZhNWFiM2VjMDRkOWVkZmFiNWUwZTku
LjBiZjIzZjAyODU2YjgwMDc1YWRjNmFjMDlkZGU3NGUxZWYzODNhZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmPEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVh
dGUoY29uc3QKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVzZXJoYW5kbGVCdWZmZXI7CiAgICAg
aWYgKCF1c2VySGFuZGxlLmlzRW1wdHkoKSkKICAgICAgICAgdXNlcmhhbmRsZUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUodXNlckhhbmRsZS5kYXRhKCksIHVzZXJIYW5kbGUuc2l6ZSgpKTsK
LSAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQuZGF0YSgpLCByYXdJ
ZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JEYXRhLmRhdGEoKSwg
YXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0ZShzaWduYXR1cmUu
ZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxlQnVmZmVyKSwgV1RG
OjpudWxsb3B0KTsKKyAgICByZXR1cm4gY3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUocmF3SWQu
ZGF0YSgpLCByYXdJZC5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGF1dGhlbnRpY2F0b3JE
YXRhLmRhdGEoKSwgYXV0aGVudGljYXRvckRhdGEuc2l6ZSgpKSwgQXJyYXlCdWZmZXI6OmNyZWF0
ZShzaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuc2l6ZSgpKSwgV1RGTW92ZSh1c2VyaGFuZGxl
QnVmZmVyKSwgc3RkOjpudWxsb3B0KTsKIH0KIAogUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoUmVmPEFycmF5
QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYg
bmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEuaAppbmRleCAyNzY0MmU4YmIyNTQ0NjdlZDU1ODI0MTkyODNiNjk3ZjM0NWI2YWFiLi42MWEx
YmJiMDI0YTZmYTUwMzFiYzEwOTRiODIzZDgxNTdmNzY0ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURh
dGEuaApAQCAtMTIxLDUxICsxMjEsNTEgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvclJlc3BvbnNl
RGF0YT4gQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YTo6ZGVjb2RlKERlY29kZXImIGQKICAgICBP
cHRpb25hbDxib29sPiBpc0VtcHR5OwogICAgIGRlY29kZXIgPj4gaXNFbXB0eTsKICAgICBpZiAo
IWlzRW1wdHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKGlzRW1wdHkudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAogICAgIHJlc3VsdC5yYXdJZCA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwog
ICAgIGlmICghcmVzdWx0LnJhd0lkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNBdXRoZW50
aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTsKICAgICBkZWNvZGVyID4+IGlzQXV0aGVudGljYXRv
ckF0dGVzdGF0aW9uUmVzcG9uc2U7CiAgICAgaWYgKCFpc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlv
blJlc3BvbnNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3Bv
bnNlID0gaXNBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS52YWx1ZSgpOwogCiAgICAg
aWYgKHJlc3VsdC5pc0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSB7CiAgICAgICAg
IHJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCA9IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5hdHRlc3RhdGlvbk9iamVjdCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHJlc3VsdC5hdXRoZW50aWNhdG9yRGF0YSA9
IGRlY29kZUFycmF5QnVmZmVyKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0LmF1dGhlbnRpY2F0
b3JEYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmVzdWx0LnNpZ25hdHVyZSA9IGRlY29kZUFycmF5QnVmZmVyKGRl
Y29kZXIpOwogICAgIGlmICghcmVzdWx0LnNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9w
dGlvbmFsPGJvb2w+PiBhcHBpZDsKICAgICBkZWNvZGVyID4+IGFwcGlkOwogICAgIGlmICghYXBw
aWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmVzdWx0LmFwcGlkID0gV1RGTW92ZSgqYXBwaWQpOwogCiAgICAgT3B0aW9u
YWw8Ym9vbD4gaGFzVXNlckhhbmRsZTsKICAgICBkZWNvZGVyID4+IGhhc1VzZXJIYW5kbGU7CiAg
ICAgaWYgKCFoYXNVc2VySGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghKmhhc1VzZXJIYW5kbGUpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAKICAgICByZXN1bHQudXNlckhhbmRsZSA9IGRlY29kZUFycmF5
QnVmZmVyKGRlY29kZXIpOwogICAgIGlmICghcmVzdWx0LnVzZXJIYW5kbGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaApp
bmRleCBiYmU5MjIxMDY3MzdiZGVjMzMxYmE4NjhiZTdhYWZkN2Q0ZDBiMmUzLi43Mjg0MDY3NDkz
N2YyOTRmYjMyNWVjNmE4ODU2NmI4OWYyZmQwMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaApAQCAtMTAxLDkgKzEwMSw5IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhCiB7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVy
cyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWxnKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xMjEsMTcgKzEyMSwxNyBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWE+IFB1YgogICAgIE9w
dGlvbmFsPE9wdGlvbmFsPEF1dGhlbnRpY2F0b3JBdHRhY2htZW50Pj4gYXV0aGVudGljYXRvckF0
dGFjaG1lbnQ7CiAgICAgZGVjb2RlciA+PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICBp
ZiAoIWF1dGhlbnRpY2F0b3JBdHRhY2htZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hdXRoZW50aWNhdG9y
QXR0YWNobWVudCA9IFdURk1vdmUoKmF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IHJlcXVpcmVSZXNpZGVudEtleTsKICAgICBkZWNvZGVyID4+IHJlcXVpcmVS
ZXNpZGVudEtleTsKICAgICBpZiAoIXJlcXVpcmVSZXNpZGVudEtleSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQu
cmVxdWlyZVJlc2lkZW50S2V5ID0gKnJlcXVpcmVSZXNpZGVudEtleTsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnVzZXJWZXJpZmljYXRpb24pKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTE1MCw0NyArMTUwLDQ3IEBAIE9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6CiB7
CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyByZXN1bHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQucnAuaWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnJwLm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJw
Lmljb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuaWRWZWN0b3Ip
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIuZGlzcGxheU5hbWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnVzZXIubmFtZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5pY29uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlv
bmFsPHVuc2lnbmVkPj4gdGltZW91dDsKICAgICBkZWNvZGVyID4+IHRpbWVvdXQ7CiAgICAgaWYg
KCF0aW1lb3V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC50aW1lb3V0ID0gV1RGTW92ZSgqdGltZW91dCk7CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhPj4g
YXV0aGVudGljYXRvclNlbGVjdGlvbjsKICAgICBkZWNvZGVyID4+IGF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb247CiAgICAgaWYgKCFhdXRoZW50aWNhdG9yU2VsZWN0aW9uKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5h
dXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGTW92ZSgqYXV0aGVudGljYXRvclNlbGVjdGlvbik7
CiAKICAgICBPcHRpb25hbDxBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlPiBhdHRlc3Rh
dGlvbjsKICAgICBkZWNvZGVyID4+IGF0dGVzdGF0aW9uOwogICAgIGlmICghYXR0ZXN0YXRpb24p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LmF0dGVzdGF0aW9uID0gV1RGTW92ZSgqYXR0ZXN0YXRpb24pOwogCiAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRz
Pj4gZXh0ZW5zaW9uczsKICAgICBkZWNvZGVyID4+IGV4dGVuc2lvbnM7CiAgICAgaWYgKCFleHRl
bnNpb25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC5leHRlbnNpb25zID0gV1RGTW92ZSgqZXh0ZW5zaW9ucyk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCmluZGV4
IDljNWI1MWNhYzNmNGQ3NDkzMzVmNWFhNGFhZDBkZDBkNDZlMTg1MmIuLjMyYmI3MjhhYmU4MTY2
OTUyY2Q1OTc1MWNjYThkOTRmOGM2ZGZkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9y
LmgKQEAgLTU3LDExICs1NywxMSBAQCBPcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvcj4gUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I6OmRlY29kZShEZQogewogICAgIFB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZFZl
Y3RvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHJhbnNwb3J0cykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zLmgKaW5kZXggY2UxNDA4NDE3Yjc5MGM1YmQ5ZDVmMWU3MjRkYjRmYTVjYWI1ZTM3Ny4uZWEy
NTJhNGYzMzVhNjI0NDNmMWJiYTViOGVlMDdiZWY5NzFlZjc2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC02NiwyNCArNjYsMjQgQEAgT3B0aW9uYWw8UHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM6OmQKICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHRpbWVvdXQ7CiAgICAg
ZGVjb2RlciA+PiB0aW1lb3V0OwogICAgIGlmICghdGltZW91dCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudGlt
ZW91dCA9IFdURk1vdmUoKnRpbWVvdXQpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQucnBJZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYWxsb3dDcmVkZW50
aWFscykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ+IHVz
ZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlm
ICghdXNlclZlcmlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9IFdU
Rk1vdmUoKnVzZXJWZXJpZmljYXRpb24pOwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8QXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPj4gZXh0ZW5zaW9uczsKICAgICBkZWNvZGVy
ID4+IGV4dGVuc2lvbnM7CiAgICAgaWYgKCFleHRlbnNpb25zKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5leHRl
bnNpb25zID0gV1RGTW92ZSgqZXh0ZW5zaW9ucyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9BcGR1Q29tbWFuZC5j
cHAKaW5kZXggOTU4YjMyNzY3ODViMjg2MDhmNzU5MWJjMjZmMjc1ZDY3MTBlMjhjMi4uNzNkMjYz
ZmMyMmM5MWVkMDNkMWY5M2I2MjhmMGY4ODdjMzVjYTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2FwZHUvQXBkdUNvbW1hbmQuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIHVpbnQxNl90IHBhcnNlTWVzc2FnZUxlbmd0aChjb25zdCBWZWN0b3I8dWludDhfdD4m
IG1lc3NhZ2UsIHNpemVfdCBvZmZzZXQpCiBPcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1h
bmQ6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzc2FnZSkKIHsK
ICAgICBpZiAobWVzc2FnZS5zaXplKCkgPCBrQXBkdU1pbkhlYWRlciB8fCBtZXNzYWdlLnNpemUo
KSA+IGtBcGR1TWF4TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDhfdCBjbGEgPSBtZXNzYWdlWzBdOwog
ICAgIHVpbnQ4X3QgaW5zID0gbWVzc2FnZVsxXTsKQEAgLTY3LDEyICs2NywxMiBAQCBPcHRpb25h
bDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgbWVzcwogICAgIC8vIEludmFsaWQgZW5jb2Rpbmcgc2l6ZXMuCiAgICAgY2Fz
ZSBrQXBkdU1pbkhlYWRlciArIDE6CiAgICAgY2FzZSBrQXBkdU1pbkhlYWRlciArIDI6Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgLy8gTm8gZGF0YSBwcmVzZW50OyByZXNwb25zZSBleHBlY3RlZC4KICAgICBjYXNlIGtBcGR1
TWluSGVhZGVyICsgMzoKICAgICAgICAgLy8gRmlmdGggYnl0ZSBtdXN0IGJlIDAuCiAgICAgICAg
IGlmIChtZXNzYWdlWzRdKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3BvbnNlTGVuZ3RoID0gcGFy
c2VNZXNzYWdlTGVuZ3RoKG1lc3NhZ2UsIGtBcGR1Q29tbWFuZExlbmd0aE9mZnNldCk7CiAgICAg
ICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVyZSByZXNwb25zZSBsZW5ndGggb2YgMHgwMDAwIGNvcnJl
c3BvbmRzIHRvIDY1NTM2CiAgICAgICAgIC8vIGFzIGRlZmluZWQgaW4gSVNPNzgxNi00LgpAQCAt
ODIsNyArODIsNyBAQCBPcHRpb25hbDxBcGR1Q29tbWFuZD4gQXBkdUNvbW1hbmQ6OmNyZWF0ZUZy
b21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzcwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIC8vIEZpZnRoIGJ5dGUgbXVzdCBiZSAwLgogICAgICAgICBpZiAobWVzc2FnZVs0XSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSBwYXJzZU1lc3NhZ2VMZW5ndGgobWVz
c2FnZSwga0FwZHVDb21tYW5kTGVuZ3RoT2Zmc2V0KTsKIAogICAgICAgICBpZiAobWVzc2FnZS5z
aXplKCkgPT0gZGF0YUxlbmd0aCArIGtBcGR1Q29tbWFuZERhdGFPZmZzZXQpIHsKQEAgLTk4LDcg
Kzk4LDcgQEAgT3B0aW9uYWw8QXBkdUNvbW1hbmQ+IEFwZHVDb21tYW5kOjpjcmVhdGVGcm9tTWVz
c2FnZShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3MKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VMZW5ndGgpCiAgICAgICAgICAgICAgICAgcmVzcG9uc2VMZW5ndGggPSBrQXBkdU1heFJlc3Bv
bnNlTGVuZ3RoOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vYXBkdS9B
cGR1UmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0Fw
ZHVSZXNwb25zZS5jcHAKaW5kZXggNGViNzQ3NWIyMmY1YjFiNTMwYTM1OWVjZTU1MDdmMmQyYzRh
ZjYzOC4uOTNhNWZhYWQ0YzE1ZDU1ZGNiNzdmN2U4MmU4MDQwMDMzOTk4YjczNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9hcGR1L0FwZHVSZXNwb25zZS5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgT3B0aW9uYWw8QXBkdVJlc3BvbnNlPiBBcGR1UmVzcG9uc2U6
OmNyZWF0ZUZyb21NZXNzYWdlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGEKIHsKICAgICAvLyBJ
bnZhbGlkIG1lc3NhZ2Ugc2l6ZSwgZGF0YSBpcyBhcHBlbmRlZCBieSBzdGF0dXMgYnl0ZS4KICAg
ICBpZiAoZGF0YS5zaXplKCkgPCAyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDE2X3Qgc3RhdHVzQnl0ZXMgPSBk
YXRhW2RhdGEuc2l6ZSgpIC0gMl0gPDwgODsKICAgICBzdGF0dXNCeXRlcyB8PSBkYXRhW2RhdGEu
c2l6ZSgpIC0gMV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2Nib3IvQ0JPUlJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Ni
b3IvQ0JPUlJlYWRlci5jcHAKaW5kZXggNTlkNmM0MjExMTI0YmE0OGZlZDIzODExOTViOGFmMTNm
MmUyODY4Yy4uZWU1ODMyMGFlMzhlOWExOWM0MjZkOWQ2ZGJmMGFhNzY3ZDczZTNjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JSZWFkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SUmVhZGVyLmNw
cApAQCAtOTEsNyArOTEsNyBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWQo
Y29uc3QgQnl0ZXMmIGRhdGEsIERlY29kZXJFcnJvciogZXJyb3JDb2RlTwogICAgICAgICAqZXJy
b3JDb2RlT3V0ID0gcmVhZGVyLmdldEVycm9yQ29kZSgpOwogCiAgICAgaWYgKHJlYWRlci5nZXRF
cnJvckNvZGUoKSAhPSBEZWNvZGVyRXJyb3I6OkNCT1JOb0Vycm9yKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBk
ZWNvZGVkQ2JvcjsKIH0KIApAQCAtOTksMTIgKzk5LDEyIEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4g
Q0JPUlJlYWRlcjo6ZGVjb2RlQ0JPUihpbnQgbWF4TmVzdGluZ0xldmVsKQogewogICAgIGlmICht
YXhOZXN0aW5nTGV2ZWwgPCAwIHx8IG1heE5lc3RpbmdMZXZlbCA+IGtDQk9STWF4RGVwdGgpIHsK
ICAgICAgICAgbV9lcnJvckNvZGUgPSBEZWNvZGVyRXJyb3I6OlRvb011Y2hOZXN0aW5nOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIGlmICghY2FuQ29uc3VtZSgxKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9
IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvbnN0
IHVpbnQ4X3QgaW5pdGlhbEJ5dGUgPSAqbV9pdCsrOwpAQCAtMTEzLDcgKzExMyw3IEBAIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlQ0JPUihpbnQgbWF4TmVzdGluZ0xldmVs
KQogCiAgICAgdWludDY0X3QgdmFsdWU7CiAgICAgaWYgKCFyZWFkVmFyaWFkaWNMZW5ndGhJbnRl
Z2VyKGFkZGl0aW9uYWxJbmZvLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc3dpdGNoIChtYWpvcl90eXBl
KSB7CiAgICAgY2FzZSBDQk9SVmFsdWU6OlR5cGU6OlVuc2lnbmVkOgpAQCAtMTM1LDcgKzEzNSw3
IEBAIE9wdGlvbmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6ZGVjb2RlQ0JPUihpbnQgbWF4TmVz
dGluZ0xldmVsKQogICAgIH0KIAogICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpVbnN1
cHBvcnRlZE1ham9yVHlwZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgQ0JPUlJlYWRlcjo6cmVhZFZhcmlhZGljTGVuZ3RoSW50
ZWdlcih1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdCogdmFsdWUpCkBAIC0xNzgsNyAr
MTc4LDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpkZWNvZGVWYWx1ZVRvTmVn
YXRpdmUodWludDY0X3QgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKSkgewogICAgICAgICBt
X2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6T3V0T2ZSYW5nZUludGVnZXJWYWx1ZTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAgICAgcmV0dXJuIENCT1JWYWx1ZSgtc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpIC0g
MSk7CiB9CkBAIC0xODcsNyArMTg3LDcgQEAgT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVy
OjpkZWNvZGVWYWx1ZVRvVW5zaWduZWQodWludDY0X3QgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
ID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1h
eCgpKSkgewogICAgICAgICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6T3V0T2ZSYW5nZUlu
dGVnZXJWYWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIENCT1JWYWx1ZShzdGF0aWNfY2FzdDxp
bnQ2NF90Pih2YWx1ZSkpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIE9wdGlvbmFsPENCT1JWYWx1
ZT4gQ0JPUlJlYWRlcjo6cmVhZFNpbXBsZVZhbHVlKHVpbnQ4X3QgYWRkaXRpb25hbEluZm8sIHVp
bnQ2NF90CiAgICAgLy8gRmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcmUgbm90IHN1cHBvcnRlZC4K
ICAgICBpZiAoYWRkaXRpb25hbEluZm8gPiAyNCAmJiBhZGRpdGlvbmFsSW5mbyA8IDI4KSB7CiAg
ICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpVbnN1cHBvcnRlZEZsb2F0aW5nUG9p
bnRWYWx1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBU1NFUlQodmFsdWUgPD0gMjU1dSk7CkBAIC0yMTEs
MTQgKzIxMSwxNCBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTaW1wbGVW
YWx1ZSh1aW50OF90IGFkZGl0aW9uYWxJbmZvLCB1aW50NjRfdAogICAgIH0KIAogICAgIG1fZXJy
b3JDb2RlID0gRGVjb2RlckVycm9yOjpVbnN1cHBvcnRlZFNpbXBsZVZhbHVlOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8
Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkU3RyaW5nKHVpbnQ2NF90IG51bUJ5dGVzKQogewog
ICAgIGlmICghY2FuQ29uc3VtZShudW1CeXRlcykpIHsKICAgICAgICAgbV9lcnJvckNvZGUgPSBE
ZWNvZGVyRXJyb3I6OkluY29tcGxldGVDQk9SRGF0YTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBU1NFUlQo
bnVtQnl0ZXMgPD0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CkBAIC0yMjks
MTQgKzIyOSwxNCBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRTdHJpbmco
dWludDY0X3QgbnVtQnl0ZXMpCiAgICAgLy8gTm90IHRvIGNvbmZ1c2UgaXQgd2l0aCBhbiBhY3R1
YWwgZW1wdHkgV1RGU3RyaW5nLgogICAgIGlmICghbnVtQnl0ZXMgfHwgaGFzVmFsaWRVVEY4Rm9y
bWF0KGNib3JTdHJpbmcpKQogICAgICAgICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvclN0
cmluZykpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogT3B0aW9uYWw8Q0JPUlZhbHVlPiBDQk9SUmVhZGVyOjpyZWFkQnl0ZXModWludDY0
X3QgbnVtQnl0ZXMpCiB7CiAgICAgaWYgKCFjYW5Db25zdW1lKG51bUJ5dGVzKSkgewogICAgICAg
ICBtX2Vycm9yQ29kZSA9IERlY29kZXJFcnJvcjo6SW5jb21wbGV0ZUNCT1JEYXRhOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIEJ5dGVzIGNib3JCeXRlU3RyaW5nOwpAQCAtMjUzLDcgKzI1Myw3IEBAIE9wdGlv
bmFsPENCT1JWYWx1ZT4gQ0JPUlJlYWRlcjo6cmVhZENCT1JBcnJheSh1aW50NjRfdCBsZW5ndGgs
IGludCBtYXhOZXN0aW5nTGV2CiAgICAgd2hpbGUgKGxlbmd0aC0tID4gMCkgewogICAgICAgICBP
cHRpb25hbDxDQk9SVmFsdWU+IGNib3JFbGVtZW50ID0gZGVjb2RlQ0JPUihtYXhOZXN0aW5nTGV2
ZWwgLSAxKTsKICAgICAgICAgaWYgKCFjYm9yRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBj
Ym9yQXJyYXkuYXBwZW5kKFdURk1vdmUoY2JvckVsZW1lbnQudmFsdWUoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckFycmF5KSk7CkBAIC0yNjYsMTUgKzI2Niwx
NSBAQCBPcHRpb25hbDxDQk9SVmFsdWU+IENCT1JSZWFkZXI6OnJlYWRDQk9STWFwKHVpbnQ2NF90
IGxlbmd0aCwgaW50IG1heE5lc3RpbmdMZXZlbAogICAgICAgICBPcHRpb25hbDxDQk9SVmFsdWU+
IGtleSA9IGRlY29kZUNCT1IobWF4TmVzdGluZ0xldmVsIC0gMSk7CiAgICAgICAgIE9wdGlvbmFs
PENCT1JWYWx1ZT4gdmFsdWUgPSBkZWNvZGVDQk9SKG1heE5lc3RpbmdMZXZlbCAtIDEpOwogICAg
ICAgICBpZiAoIWtleSB8fCAhdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBPbmx5IENC
T1IgbWFwcyB3aXRoIGludGVnZXIgb3Igc3RyaW5nIHR5cGUga2V5cyBhcmUgYWxsb3dlZC4KICAg
ICAgICAgaWYgKCFrZXktPmlzU3RyaW5nKCkgJiYgIWtleS0+aXNJbnRlZ2VyKCkpIHsKICAgICAg
ICAgICAgIG1fZXJyb3JDb2RlID0gRGVjb2RlckVycm9yOjpJbmNvcnJlY3RNYXBLZXlUeXBlOwot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjaGVja0R1cGxpY2F0ZUtleShrZXku
dmFsdWUoKSwgY2Jvck1hcCkgfHwgIWNoZWNrT3V0T2ZPcmRlcktleShrZXkudmFsdWUoKSwgY2Jv
ck1hcCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBjYm9yTWFwLmVtcGxhY2Uoc3RkOjptYWtlX3Bh
aXIoV1RGTW92ZShrZXkudmFsdWUoKSksIFdURk1vdmUodmFsdWUudmFsdWUoKSkpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldy
aXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUldyaXRl
ci5jcHAKaW5kZXggNzY5YjI3MjcxYjA3ZGVmNjdjYmJmMGExMjlhZDk0YzUxNDJhOTdjOC4uOGNl
ZjRlYWJjYzlmMzBlNmViODBiMWVhNjgxYzI4NTNiYjM2MzExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JXcml0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SV3JpdGVyLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENCT1JXcml0ZXI6OndyaXRlKGNvbnN0
IENCT1JWYWx1ZSYgbm9kZSwgc2l6ZV90IG1heE5lcwogICAgIENCT1JXcml0ZXIgd3JpdGVyKCZj
Ym9yKTsKICAgICBpZiAod3JpdGVyLmVuY29kZUNCT1Iobm9kZSwgc3RhdGljX2Nhc3Q8aW50Piht
YXhOZXN0aW5nTGV2ZWwpKSkKICAgICAgICAgcmV0dXJuIGNib3I7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDQk9SV3JpdGVyOjpDQk9S
V3JpdGVyKFZlY3Rvcjx1aW50OF90PiogY2JvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oCmlu
ZGV4IGE4OTc2ZTBjOTA0OGMzYmEzODIxYmNmZGNjZDJlNjQ1MjA5ZTZkNzguLjc5ZjJhOGFmOWY3
ODVlNWU2ZmZmMGYwYWZmYjU1NDBlYmU3MzBkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIu
aApAQCAtNTAsMTIgKzUwLDEyIEBAIHN0cnVjdCBQaW5QYXJhbWV0ZXJzIHsKIC8vIFNlcmlhbGl6
ZXMgTWFrZUNyZWRlbnRpYWwgcmVxdWVzdCBwYXJhbWV0ZXIgaW50byBDQk9SIGVuY29kZWQgbWFw
IHdpdGgKIC8vIGludGVnZXIga2V5cyBhbmQgQ0JPUiBlbmNvZGVkIHZhbHVlcyBhcyBkZWZpbmVk
IGJ5IHRoZSBDVEFQIHNwZWMuCiAvLyBodHRwczovL2ZpZG9hbGxpYW5jZS5vcmcvc3BlY3MvZmlk
by12Mi4wLXBzLTIwMTcwOTI3L2ZpZG8tY2xpZW50LXRvLWF1dGhlbnRpY2F0b3ItcHJvdG9jb2wt
djIuMC1wcy0yMDE3MDkyNy5odG1sI2F1dGhlbnRpY2F0b3JNYWtlQ3JlZGVudGlhbAotV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JP
Uihjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGlu
ID0gV1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVN
YWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBj
b25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgQXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIHN0
ZDo6b3B0aW9uYWw8UGluUGFyYW1ldGVycz4gPSBzdGQ6Om51bGxvcHQpOwogCiAvLyBTZXJpYWxp
emVzIEdldEFzc2VydGlvbiByZXF1ZXN0IHBhcmFtZXRlciBpbnRvIENCT1IgZW5jb2RlZCBtYXAg
d2l0aAogLy8gaW50ZWdlciBrZXlzIGFuZCBDQk9SIGVuY29kZWQgdmFsdWVzIGFzIGRlZmluZWQg
YnkgdGhlIENUQVAgc3BlYy4KIC8vIGh0dHBzOi8vZmlkb2FsbGlhbmNlLm9yZy9zcGVjcy9maWRv
LXYyLjAtcHMtMjAxNzA5MjcvZmlkby1jbGllbnQtdG8tYXV0aGVudGljYXRvci1wcm90b2NvbC12
Mi4wLXBzLTIwMTcwOTI3Lmh0bWwjYXV0aGVudGljYXRvckdldEFzc2VydGlvbgotV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsUmVxdWVzdE9wdGlvbnMmLCBBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eSwgT3B0aW9uYWw8UGluUGFyYW1ldGVycz4gcGluID0gV1RG
OjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVHZXRBc3Nl
cnRpb25SZXF1ZXN0QXNDQk9SKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgY29uc3QgV2Vi
Q29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgQXV0aGVudGljYXRvclN1
cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHksIHN0ZDo6b3B0aW9u
YWw8UGluUGFyYW1ldGVycz4gPSBzdGQ6Om51bGxvcHQpOwogCiAvLyBSZXByZXNlbnRzIENUQVAg
cmVxdWVzdHMgd2l0aCBlbXB0eSBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcKIC8vIEF1dGhlbnRpY2F0
b3JHZXRJbmZvLCBBdXRoZW50aWNhdG9yUmVzZXQgYW5kIEF1dGhlbnRpY2F0b3JHZXROZXh0QXNz
ZXJ0aW9uIGNvbW1hbmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggODRj
MTdiNzczNmM4NWQ2MTdlZTkyZmNmYzJiNjgyOTk4MzAxZDUyMS4uOWEyMTU1MzlmZmM4ZWU0OWIx
ODY5ODQ3NjQ3YTI0YjliMjIyMTdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
CkBAIC01NywxMiArNTcsMTIgQEAgc3RhdGljIFByb3RvY29sVmVyc2lvbiBjb252ZXJ0U3RyaW5n
VG9Qcm90b2NvbFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQogT3B0aW9uYWw8Y2Jvcjo6
Q0JPUlZhbHVlPiBkZWNvZGVSZXNwb25zZU1hcChjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVm
ZmVyKQogewogICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8
fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtT
dWNjZXNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlciB7IGluQnVmZmVyLmRhdGEo
KSArIDEsIGluQnVmZmVyLnNpemUoKSAtIDEgfTsKICAgICBPcHRpb25hbDxDQk9SPiBkZWNvZGVk
UmVzcG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKGJ1ZmZlcik7CiAgICAgaWYgKCFkZWNv
ZGVkUmVzcG9uc2UgfHwgIWRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
ZGVjb2RlZFJlc3BvbnNlOwogfQogCkBAIC0yMDIsMTYgKzIwMiwxNiBAQCBPcHRpb25hbDxBdXRo
ZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25zdCBW
ZWN0b3I8dWludAogewogICAgIGF1dG8gZGVjb2RlZE1hcCA9IGRlY29kZVJlc3BvbnNlTWFwKGlu
QnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRNYXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uc3QgYXV0byYgcmVzcG9u
c2VNYXAgPSBkZWNvZGVkTWFwLT5nZXRNYXAoKTsKIAogICAgIGF1dG8gaXQgPSByZXNwb25zZU1h
cC5maW5kKENCT1IoMSkpOwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQt
PnNlY29uZC5pc0FycmF5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3RkU2V0PFByb3RvY29sVmVyc2lvbj4gcHJvdG9j
b2xWZXJzaW9uczsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHZlcnNpb24gOiBpdC0+c2Vjb25kLmdl
dEFycmF5KCkpIHsKICAgICAgICAgaWYgKCF2ZXJzaW9uLmlzU3RyaW5nKCkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBhdXRvIHByb3RvY29sID0gY29udmVydFN0cmluZ1RvUHJvdG9jb2xWZXJzaW9u
KHZlcnNpb24uZ2V0U3RyaW5nKCkpOwogICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2xW
ZXJzaW9uOjprVW5rbm93bikgewpAQCAtMjIwLDI2ICsyMjAsMjYgQEAgT3B0aW9uYWw8QXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVj
dG9yPHVpbnQKICAgICAgICAgfQogCiAgICAgICAgIGlmICghcHJvdG9jb2xWZXJzaW9ucy5pbnNl
cnQocHJvdG9jb2wpLnNlY29uZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAocHJvdG9jb2xW
ZXJzaW9ucy5lbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoMykp
OwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0J5dGVT
dHJpbmcoKSB8fCBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKS5zaXplKCkgIT0gYWFndWlkTGVu
Z3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgQXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZSByZXNwb25zZShXVEZN
b3ZlKHByb3RvY29sVmVyc2lvbnMpLCBWZWN0b3I8dWludDhfdD4oaXQtPnNlY29uZC5nZXRCeXRl
U3RyaW5nKCkpKTsKIAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDIpKTsKICAgICBp
ZiAoaXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKICAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlz
QXJyYXkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZXh0ZW5zaW9uIDogaXQtPnNlY29uZC5nZXRBcnJh
eSgpKSB7CiAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbi5pc1N0cmluZygpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uLmdldFN0
cmluZygpKTsKICAgICAgICAgfQpAQCAtMjUwLDEyICsyNTAsMTIgQEAgT3B0aW9uYWw8QXV0aGVu
dGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVj
dG9yPHVpbnQKICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUig0KSk7CiAgICAgaWYgKGl0
ICE9IHJlc3BvbnNlTWFwLmVuZCgpKSB7CiAgICAgICAgIGlmICghaXQtPnNlY29uZC5pc01hcCgp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGNvbnN0IGF1dG8mIG9wdGlvbk1hcCA9IGl0LT5zZWNvbmQu
Z2V0TWFwKCk7CiAgICAgICAgIGF1dG8gb3B0aW9uTWFwSXQgPSBvcHRpb25NYXAuZmluZChDQk9S
KGtQbGF0Zm9ybURldmljZU1hcEtleSkpOwogICAgICAgICBpZiAob3B0aW9uTWFwSXQgIT0gb3B0
aW9uTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbk1hcEl0LT5zZWNvbmQuaXNC
b29sKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBvcHRpb25zLnNldElzUGxh
dGZvcm1EZXZpY2Uob3B0aW9uTWFwSXQtPnNlY29uZC5nZXRCb29sKCkpOwogICAgICAgICB9CkBA
IC0yNjMsNyArMjYzLDcgQEAgT3B0aW9uYWw8QXV0aGVudGljYXRvckdldEluZm9SZXNwb25zZT4g
cmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3QgVmVjdG9yPHVpbnQKICAgICAgICAgb3B0aW9u
TWFwSXQgPSBvcHRpb25NYXAuZmluZChDQk9SKGtSZXNpZGVudEtleU1hcEtleSkpOwogICAgICAg
ICBpZiAob3B0aW9uTWFwSXQgIT0gb3B0aW9uTWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBpZiAo
IW9wdGlvbk1hcEl0LT5zZWNvbmQuaXNCb29sKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBvcHRpb25zLnNldFN1cHBvcnRzUmVzaWRlbnRLZXkob3B0aW9uTWFwSXQtPnNlY29u
ZC5nZXRCb29sKCkpOwogICAgICAgICB9CkBAIC0yNzEsNyArMjcxLDcgQEAgT3B0aW9uYWw8QXV0
aGVudGljYXRvckdldEluZm9SZXNwb25zZT4gcmVhZENUQVBHZXRJbmZvUmVzcG9uc2UoY29uc3Qg
VmVjdG9yPHVpbnQKICAgICAgICAgb3B0aW9uTWFwSXQgPSBvcHRpb25NYXAuZmluZChDQk9SKGtV
c2VyUHJlc2VuY2VNYXBLZXkpKTsKICAgICAgICAgaWYgKG9wdGlvbk1hcEl0ICE9IG9wdGlvbk1h
cC5lbmQoKSkgewogICAgICAgICAgICAgaWYgKCFvcHRpb25NYXBJdC0+c2Vjb25kLmlzQm9vbCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgb3B0aW9ucy5zZXRVc2VyUHJlc2Vu
Y2VSZXF1aXJlZChvcHRpb25NYXBJdC0+c2Vjb25kLmdldEJvb2woKSk7CiAgICAgICAgIH0KQEAg
LTI3OSw3ICsyNzksNyBAQCBPcHRpb25hbDxBdXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiBy
ZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25zdCBWZWN0b3I8dWludAogICAgICAgICBvcHRpb25N
YXBJdCA9IG9wdGlvbk1hcC5maW5kKENCT1Ioa1VzZXJWZXJpZmljYXRpb25NYXBLZXkpKTsKICAg
ICAgICAgaWYgKG9wdGlvbk1hcEl0ICE9IG9wdGlvbk1hcC5lbmQoKSkgewogICAgICAgICAgICAg
aWYgKCFvcHRpb25NYXBJdC0+c2Vjb25kLmlzQm9vbCgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICAgICAgaWYgKG9wdGlvbk1hcEl0LT5zZWNvbmQuZ2V0Qm9vbCgpKQogICAgICAgICAg
ICAgICAgIG9wdGlvbnMuc2V0VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eShBdXRoZW50aWNh
dG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBv
cnRlZEFuZENvbmZpZ3VyZWQpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIE9wdGlvbmFsPEF1dGhlbnRp
Y2F0b3JHZXRJbmZvUmVzcG9uc2U+IHJlYWRDVEFQR2V0SW5mb1Jlc3BvbnNlKGNvbnN0IFZlY3Rv
cjx1aW50CiAgICAgICAgIG9wdGlvbk1hcEl0ID0gb3B0aW9uTWFwLmZpbmQoQ0JPUihrQ2xpZW50
UGluTWFwS2V5KSk7CiAgICAgICAgIGlmIChvcHRpb25NYXBJdCAhPSBvcHRpb25NYXAuZW5kKCkp
IHsKICAgICAgICAgICAgIGlmICghb3B0aW9uTWFwSXQtPnNlY29uZC5pc0Jvb2woKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChvcHRpb25NYXBJdC0+c2Vjb25kLmdldEJv
b2woKSkKICAgICAgICAgICAgICAgICBvcHRpb25zLnNldENsaWVudFBpbkF2YWlsYWJpbGl0eShB
dXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6Q2xpZW50UGluQXZhaWxhYmlsaXR5OjprU3Vw
cG9ydGVkQW5kUGluU2V0KTsKQEAgLTMwMyw3ICszMDMsNyBAQCBPcHRpb25hbDxBdXRoZW50aWNh
dG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25zdCBWZWN0b3I8
dWludAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDUpKTsKICAgICBpZiAoaXQgIT0g
cmVzcG9uc2VNYXAuZW5kKCkpIHsKICAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlzVW5zaWduZWQo
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJlc3BvbnNlLnNldE1heE1zZ1NpemUoaXQtPnNlY29u
ZC5nZXRVbnNpZ25lZCgpKTsKICAgICB9CkBAIC0zMTEsMTIgKzMxMSwxMiBAQCBPcHRpb25hbDxB
dXRoZW50aWNhdG9yR2V0SW5mb1Jlc3BvbnNlPiByZWFkQ1RBUEdldEluZm9SZXNwb25zZShjb25z
dCBWZWN0b3I8dWludAogICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKDYpKTsKICAgICBp
ZiAoaXQgIT0gcmVzcG9uc2VNYXAuZW5kKCkpIHsKICAgICAgICAgaWYgKCFpdC0+c2Vjb25kLmlz
QXJyYXkoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzdXBwb3J0ZWRQ
aW5Qcm90b2NvbHM7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcHJvdG9jb2wgOiBpdC0+c2Vj
b25kLmdldEFycmF5KCkpIHsKICAgICAgICAgICAgIGlmICghcHJvdG9jb2wuaXNVbnNpZ25lZCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc3VwcG9ydGVkUGluUHJvdG9jb2xz
LmFwcGVuZChwcm90b2NvbC5nZXRVbnNpZ25lZCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkTWVzc2FnZS5jcHAK
aW5kZXggYjEyZGFlZmVlMTRlNTEyYjRmZjRhNzRhMTI2MTA0MWQ3MzU5ZDZkOC4uMDU1M2ZjYjNk
MDFkMGQyNDA2YzU3NTgzODg3ZTMzYThkMDVjZGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZE1lc3NhZ2UuY3BwCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBmaWRvIHsKIE9wdGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBGaWRv
SGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNoYW5uZWxJZCwgRmlkb0hpZERldmljZUNvbW1h
bmQgdHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewogICAgIGlmIChkYXRhLnNp
emUoKSA+IGtIaWRNYXhNZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgRmlkb0hpZERldmljZUNvbW1hbmQ6OmtQaW5nOgpAQCAtNTAsMzAgKzUwLDMwIEBAIE9w
dGlvbmFsPEZpZG9IaWRNZXNzYWdlPiBGaWRvSGlkTWVzc2FnZTo6Y3JlYXRlKHVpbnQzMl90IGNo
YW5uZWxJZCwgRmlkb0hpZERldmljCiAgICAgY2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a01z
ZzoKICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprQ2JvcjogewogICAgICAgICBpZiAo
ZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
Y2FzZSBGaWRvSGlkRGV2aWNlQ29tbWFuZDo6a0NhbmNlbDoKICAgICBjYXNlIEZpZG9IaWREZXZp
Y2VDb21tYW5kOjprV2luazogewogICAgICAgICBpZiAoIWRhdGEuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21tYW5k
OjprTG9jazogewogICAgICAgICBpZiAoZGF0YS5zaXplKCkgIT0gMSB8fCBkYXRhWzBdID4ga0hp
ZE1heExvY2tTZWNvbmRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEZpZG9IaWREZXZpY2VDb21tYW5kOjprSW5pdDogewogICAgICAgICBpZiAoZGF0YS5zaXpl
KCkgIT0gOCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWRv
SGlkRGV2aWNlQ29tbWFuZDo6a0tlZXBBbGl2ZToKICAgICBjYXNlIEZpZG9IaWREZXZpY2VDb21t
YW5kOjprRXJyb3I6CiAgICAgICAgIGlmIChkYXRhLnNpemUoKSAhPSAxKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgcmV0dXJuIEZpZG9IaWRNZXNzYWdlKGNoYW5uZWxJZCwgdHlwZSwgZGF0YSk7
CkBAIC04NCwxMiArODQsMTIgQEAgT3B0aW9uYWw8Rmlkb0hpZE1lc3NhZ2U+IEZpZG9IaWRNZXNz
YWdlOjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoY29uc3QgVmVjdG9yPHUKIHsKICAgICBzaXpl
X3QgcmVtYWluaW5nU2l6ZSA9IDA7CiAgICAgaWYgKHNlcmlhbGl6ZWREYXRhLnNpemUoKSA+IGtI
aWRQYWNrZXRTaXplIHx8IHNlcmlhbGl6ZWREYXRhLnNpemUoKSA8IGtIaWRJbml0UGFja2V0SGVh
ZGVyU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaW5pdFBhY2tldCA9IEZpZG9IaWRJbml0UGFja2V0Ojpj
cmVhdGVGcm9tU2VyaWFsaXplZERhdGEoc2VyaWFsaXplZERhdGEsICZyZW1haW5pbmdTaXplKTsK
IAogICAgIGlmICghaW5pdFBhY2tldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBGaWRvSGlkTWVzc2FnZShX
VEZNb3ZlKGluaXRQYWNrZXQpLCByZW1haW5pbmdTaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5kZXggNTgzNzY1MGQzYmYyMGJhMGIyYjcw
ODhkZWQ5ZTAzMzZlOTAxNGNiMS4uYWQyODliZmRjZGMyNTBjNjdkYTc2YWFjNjU5YTk3ZTlkNGFk
ODBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAK
QEAgLTgzLDEwICs4MywxMCBAQCBWZWN0b3I8dWludDhfdD4gZW5jb2RlUmF3UHVibGljS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgeCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogT3B0aW9uYWw8Q1N0
cmluZz4gdmFsaWRhdGVBbmRDb252ZXJ0VG9VVEY4KGNvbnN0IFN0cmluZyYgcGluKQogewogICAg
IGlmICghaGFzQXRMZWFzdEZvdXJDb2RlcG9pbnRzKHBpbikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byByZXN1bHQg
PSBwaW4udXRmOCgpOwogICAgIGlmIChyZXN1bHQubGVuZ3RoKCkgPCBrTWluQnl0ZXMgfHwgcmVz
dWx0Lmxlbmd0aCgpID4ga01heEJ5dGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTExNiwxMiArMTE2LDEyIEBAIE9wdGlvbmFsPFJldHJpZXNSZXNwb25zZT4gUmV0cmllc1Jlc3Bv
bnNlOjpwYXJzZShjb25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyCiB7CiAgICAgYXV0byBk
ZWNvZGVkTWFwID0gZGVjb2RlUmVzcG9uc2VNYXAoaW5CdWZmZXIpOwogICAgIGlmICghZGVjb2Rl
ZE1hcCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBjb25zdCBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRNYXAtPmdldE1h
cCgpOwogCiAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19j
YXN0PGludDY0X3Q+KFJlc3BvbnNlS2V5OjprUmV0cmllcykpKTsKICAgICBpZiAoaXQgPT0gcmVz
cG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNVbnNpZ25lZCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmV0
cmllc1Jlc3BvbnNlIHJldDsKICAgICByZXQucmV0cmllcyA9IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihpdC0+c2Vjb25kLmdldFVuc2lnbmVkKCkpOwpAQCAtMTM3LDEzICsxMzcsMTMgQEAgT3B0aW9u
YWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZShjb25z
dCBWZWN0b3I8dWludDhfdD4KIHsKICAgICBhdXRvIGRlY29kZWRNYXAgPSBkZWNvZGVSZXNwb25z
ZU1hcChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFwKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnN0IGF1dG8m
IHJlc3BvbnNlTWFwID0gZGVjb2RlZE1hcC0+Z2V0TWFwKCk7CiAKICAgICAvLyBUaGUgZXBoZW1l
cmFsIGtleSBpcyBlbmNvZGVkIGFzIGEgQ09TRSBzdHJ1Y3R1cmUuCiAgICAgYXV0byBpdCA9IHJl
c3BvbnNlTWFwLmZpbmQoQ0JPUlZhbHVlKHN0YXRpY19jYXN0PGludDY0X3Q+KFJlc3BvbnNlS2V5
OjprS2V5QWdyZWVtZW50KSkpOwogICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAh
aXQtPnNlY29uZC5pc01hcCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnN0IGF1dG8mIGNvc2VLZXkgPSBpdC0+c2Vj
b25kLmdldE1hcCgpOwogCiAgICAgcmV0dXJuIHBhcnNlRnJvbUNPU0UoY29zZUtleSk7CkBAIC0x
NjAsMjAgKzE2MCwyMCBAQCBPcHRpb25hbDxLZXlBZ3JlZW1lbnRSZXNwb25zZT4gS2V5QWdyZWVt
ZW50UmVzcG9uc2U6OnBhcnNlRnJvbUNPU0UoY29uc3QgQ0JPUlZhbAogICAgIH0pKSB7CiAgICAg
ICAgIGF1dG8gaXQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKHBhaXIuZmlyc3QpKTsKICAgICAg
ICAgaWYgKGl0ID09IGNvc2VLZXkuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNJbnRlZ2VyKCkgfHwg
aXQtPnNlY29uZC5nZXRJbnRlZ2VyKCkgIT0gcGFpci5zZWNvbmQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgxNTIjc2VjdGlv
bi0xMy4xLjEKICAgICBjb25zdCBhdXRvJiB4SXQgPSBjb3NlS2V5LmZpbmQoQ0JPUlZhbHVlKHN0
YXRpY19jYXN0PGludDY0X3Q+KENPU0U6OngpKSk7CiAgICAgY29uc3QgYXV0byYgeUl0ID0gY29z
ZUtleS5maW5kKENCT1JWYWx1ZShzdGF0aWNfY2FzdDxpbnQ2NF90PihDT1NFOjp5KSkpOwogICAg
IGlmICh4SXQgPT0gY29zZUtleS5lbmQoKSB8fCB5SXQgPT0gY29zZUtleS5lbmQoKSB8fCAheEl0
LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkgfHwgIXlJdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgY29uc3QgYXV0byYgeCA9IHhJdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKICAg
ICBjb25zdCBhdXRvJiB5ID0geUl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOwogICAgIGF1dG8g
cGVlcktleSA9IENyeXB0b0tleUVDOjppbXBvcnRSYXcoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6RUNESCwgIlAtMjU2IiwgZW5jb2RlUmF3UHVibGljS2V5KHgsIHkpLCB0cnVlLCBDcnlwdG9L
ZXlVc2FnZURlcml2ZUJpdHMpOwogICAgIGlmICghcGVlcktleSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBL
ZXlBZ3JlZW1lbnRSZXNwb25zZShwZWVyS2V5LnJlbGVhc2VOb25OdWxsKCkpOwogfQpAQCAtMjAz
LDE3ICsyMDMsMTcgQEAgT3B0aW9uYWw8VG9rZW5SZXNwb25zZT4gVG9rZW5SZXNwb25zZTo6cGFy
c2UoY29uc3QgV2ViQ29yZTo6Q3J5cHRvS2V5QUVTJiBzaGFyZWQKIHsKICAgICBhdXRvIGRlY29k
ZWRNYXAgPSBkZWNvZGVSZXNwb25zZU1hcChpbkJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVkTWFw
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGNvbnN0IGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZE1hcC0+Z2V0TWFwKCk7
CiAKICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SVmFsdWUoc3RhdGljX2Nhc3Q8
aW50NjRfdD4oUmVzcG9uc2VLZXk6OmtQaW5Ub2tlbikpKTsKICAgICBpZiAoaXQgPT0gcmVzcG9u
c2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uc3Qg
YXV0byYgZW5jcnlwdGVkVG9rZW4gPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKTsKIAogICAg
IGF1dG8gdG9rZW5SZXN1bHQgPSBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5
cHQoeyB9LCBzaGFyZWRLZXksIGVuY3J5cHRlZFRva2VuLCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JD
OjpQYWRkaW5nOjpObyk7CiAgICAgaWYgKHRva2VuUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGF1dG8gdG9rZW4gPSB0b2tlblJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAogICAg
IGF1dG8gdG9rZW5LZXkgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcodG9rZW4uc2l6ZSgpICog
OCwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NiwgV1RGTW92ZSh0b2tlbiksIHRy
dWUsIENyeXB0b0tleVVzYWdlU2lnbik7CkBAIC0yNTQsNyArMjU0LDcgQEAgT3B0aW9uYWw8VG9r
ZW5SZXF1ZXN0PiBUb2tlblJlcXVlc3Q6OnRyeUNyZWF0ZShjb25zdCBDU3RyaW5nJiBwaW4sIGNv
bnN0IENyeXB0b0sKICAgICAvLyAyLiBVc2UgRUNESCBhbmQgU0hBLTI1NiB0byBjb21wdXRlIHRo
ZSBzaGFyZWQgQUVTLUNCQyBrZXkuCiAgICAgYXV0byBzaGFyZWRLZXlSZXN1bHQgPSBDcnlwdG9B
bGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KCpr
ZXlQYWlyLnByaXZhdGVLZXkpLCBwZWVyS2V5KTsKICAgICBpZiAoIXNoYXJlZEtleVJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gY3J5cHRvID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBjcnlwdG8tPmFkZEJ5dGVzKHNo
YXJlZEtleVJlc3VsdC0+ZGF0YSgpLCBzaGFyZWRLZXlSZXN1bHQtPnNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21t
YW5kQ29uc3RydWN0b3IuY3BwCmluZGV4IDk5YmQxYTk0OTQwNjJmNmY0YzMwYjNiY2UwZDAyOWQ4
Yzg2NzkyOTQuLjQxMmIyOTVlMDA3ZGIzYTBhZjViMDZkMWIxZDA1NzhhZGQyMDRlYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9V
MmZDb21tYW5kQ29uc3RydWN0b3IuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29uc3RydWN0VTJmUmVnaXN0ZXJDb21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXBwbGljCiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb25zdHJ1Y3RVMmZT
aWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uUGFyYW1ldGVyLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNoYWxsZW5nZVBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgY2hlY2tPbmx5KQogewogICAgIGlmIChrZXlIYW5kbGUu
c2l6ZSgpID4ga01heEtleUhhbmRsZUxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhOwogICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrVTJmQ2hhbGxlbmdlUGFyYW1M
ZW5ndGggKyBrVTJmQXBwbGljYXRpb25QYXJhbUxlbmd0aCArIDEgKyBrZXlIYW5kbGUuc2l6ZSgp
KTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5k
KGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYgcmVxdQogT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyYgcmVxdWVzdCkKIHsKICAgICBpZiAoIWlzQ29udmVydGlibGVUb1UyZlJlZ2lz
dGVyQ29tbWFuZChyZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYXBwSWQgPSBwcm9jZXNzR29vZ2xl
TGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9uKHJlcXVlc3QuZXh0ZW5zaW9ucyk7CiAgICAgcmV0
dXJuIGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChwcm9kdWNlUnBJZEhhc2goIWFwcElkID8g
cmVxdWVzdC5ycC5pZCA6IGFwcElkKSwgY2xpZW50RGF0YUhhc2gpOwpAQCAtMTEwLDcgKzExMCw3
IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5k
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xpCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNv
bnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2xp
ZW50RGF0YUhhc2gsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIHJl
cXVlc3QsIGNvbnN0IFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yJiBrZXlIYW5kbGUpCiB7
CiAgICAgaWYgKGtleUhhbmRsZS50eXBlICE9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJs
aWNLZXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJvZHVjZVJw
SWRIYXNoKHJlcXVlc3QucnAuaWQpLCBjbGllbnREYXRhSGFzaCwga2V5SGFuZGxlLmlkVmVjdG9y
LCB0cnVlIC8qIGNoZWNrT25seSAqLyk7CiB9CkBAIC0xMTgsNyArMTE4LDcgQEAgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBW
ZWN0b3I8dWludDhfdD4KIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2ln
bkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1ZXN0LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleUhhbmRsZSwgYm9vbCBpc0FwcElkKQogewogICAgIGlmICghaXNDb252ZXJ0aWJs
ZVRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWlzQXBwSWQpCiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RVMmZTaWduQ29tbWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVz
dC5ycElkKSwgY2xpZW50RGF0YUhhc2gsIGtleUhhbmRsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAppbmRleCA1YWUyNDc5ZTcz
ODdlNjI0ZTE4YjY0OGQ5N2ZmNGY5ZjI2MWVkNDlkLi45YWQxMWQ0MDg4ZjY2Mzc3ZGIxZGJjMDlk
YzUxMDVlM2Y5MTY4MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBAIFN0cmluZyBEYXRhYmFzZTo6Zmls
ZU5hbWVJc29sYXRlZENvcHkoKSBjb25zdAogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlOjpkZXRh
aWxzKCkgY29uc3QKIHsKICAgICAvLyBUaGlzIGNvZGUgcGF0aCBpcyBvbmx5IHVzZWQgZm9yIGRh
dGFiYXNlIHF1b3RhIGRlbGVnYXRlIGNhbGxzLCBzbyBmaWxlIGRhdGVzIGFyZSBpcnJlbGV2YW50
IGFuZCBsZWZ0IHVuaW5pdGlhbGl6ZWQuCi0gICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lSXNvbGF0ZWRDb3B5KCksIGVz
dGltYXRlZFNpemUoKSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIHJldHVy
biBEYXRhYmFzZURldGFpbHMoc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpLCBkaXNwbGF5
TmFtZUlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplKCksIDAsIHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0KTsKIH0KIAogdm9pZCBEYXRhYmFzZTo6ZGlzYWJsZUF1dGhvcml6ZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCmluZGV4IDJjOWFhNTJhMTA4OTUzZTQ4NzZkNDVkMGM0Y2Q5OTI5NWUyMmEyYjQuLjlh
ZjAyM2EyMGQyM2IwNWI3YzhlZTQ5NDY1NTdhYjU2YzIyMjIzMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKIERhdGFiYXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFz
ZTo6UHJvcG9zZWREYXRhYmFzZShEYXRhYmFzZU1hbmFnZXImIG1hbmFnZXIsIFNlY3VyaXR5T3Jp
Z2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQogICAgIDogbV9tYW5hZ2VyKG1hbmFnZXIp
CiAgICAgLCBtX29yaWdpbihvcmlnaW4uaXNvbGF0ZWRDb3B5KCkpCi0gICAgLCBtX2RldGFpbHMo
bmFtZS5pc29sYXRlZENvcHkoKSwgZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIGVzdGltYXRl
ZFNpemUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KQorICAgICwgbV9kZXRhaWxzKG5h
bWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRT
aXplLCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkKIHsKICAgICBtX21hbmFnZXIuYWRk
UHJvcG9zZWREYXRhYmFzZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZmM4MTkyZjk0ZTJh
ZjE0MmEzYzRjZTBiNTFmZWVmMzI5ZWNmNjM2NS4uNTk0Zjc4NmI1ZWY1OTQzZGI5OTdkOTBmNmRh
ZTE3Mzg5NDAwNTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNDYwLDcgKzQ2MCw3IEBAIERhdGFiYXNl
RGV0YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uCiAKICAgICBTdHJpbmcgcGF0aCA9IGZ1bGxQYXRoRm9yRGF0YWJhc2Uo
b3JpZ2luLCBuYW1lLCBmYWxzZSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdlLCAw
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBEYXRhYmFzZURl
dGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIDAsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0KTsKICAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlO
YW1lLCBleHBlY3RlZFVzYWdlLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUZpbGVTaXplKHBh
dGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKSwgU1FMaXRl
RmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBhdGgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cAppbmRleCBkMTRlYmZjNTc5Y2VhNjM4MzRhODc5M2EzNWVkZWNkNTY0ODY5YWU3Li4yYmM1OWVj
ZTIzZTA0NmNmMjJiYmQ4MzFiNWNlNjcyODNlOWQyY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25z
dCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgT3B0aW9uYQogICAgIGVsc2UgaWYgKG1fcmVhZE9ubHkp
CiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVhZE9ubHlNYXNr
OwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRh
YmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVPcihWZWN0b3I8U1FMVmFsdWU+IHsg
fSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9u
cyk7CisgICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRh
YmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVfb3IoVmVjdG9yPFNRTFZhbHVlPiB7
IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lv
bnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50
LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaAppbmRleCBl
NzU3ZmQwYjdlN2E2ZGRiOGYzYmViZWNjYzBmZWY4Y2IxMWU2ZTdjLi43NzkyMmNhY2FlMGE3MzQ2
MjUxZTY1ZmFjODY0MzU2NzBmNWIyMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaApAQCAtMTA2
LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFtX2VtcHR5KTsKICAgICAgICAg
aWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TGVmdFZhbHVlPihtX2lubmVyKSkKICAgICAgICAg
ICAgIHJldHVybiBXVEY6OmdldDxMZWZ0VmFsdWU+KG1faW5uZXIpLmFkZHJlc3NTcGFjZTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBib29sIGlzUmlnaHRWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5T
ZW1hbnRpYy5oCmluZGV4IGY1MDgwNTk4NDllNjY0YjkxMjUyOWM5ODYyYjA0MjJiMGUwYzg4Njcu
LjMzYTExNjg1ZTUyZjEzM2UwNGYxZDMzYjM3NzU4Mjk4N2M5MGE5NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1aWx0SW5TZW1hbnRp
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJ1
aWx0SW5TZW1hbnRpYy5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU1ZHcm91
cFRocmVhZElECiAgICAgfTsKIAotICAgIEJ1aWx0SW5TZW1hbnRpYyhDb2RlTG9jYXRpb24gbG9j
YXRpb24sIFZhcmlhYmxlIHZhcmlhYmxlLCBPcHRpb25hbDx1bnNpZ25lZD4mJiB0YXJnZXRJbmRl
eCA9IFdURjo6bnVsbG9wdCkKKyAgICBCdWlsdEluU2VtYW50aWMoQ29kZUxvY2F0aW9uIGxvY2F0
aW9uLCBWYXJpYWJsZSB2YXJpYWJsZSwgT3B0aW9uYWw8dW5zaWduZWQ+JiYgdGFyZ2V0SW5kZXgg
PSBzdGQ6Om51bGxvcHQpCiAgICAgICAgIDogQmFzZVNlbWFudGljKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fdmFyaWFibGUodmFyaWFibGUpCiAgICAgICAgICwgbV90YXJnZXRJbmRleChXVEZNb3Zl
KHRhcmdldEluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML01ldGFsL1dITFNMTmF0aXZlRnVuY3Rpb25Xcml0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5j
cHAKaW5kZXggZDRhMDEyYWU2ZDM4MmYyNDk4YzdmZTZhZTI3ODU4MmU5MDhiZjE4Ny4uYWEzYTY5
ODRiNjE2ZjY1ZDBiMGEwMGJmOWYyYjU3ZDRmYjQxM2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8U2FtcGxlVHlwZT4gc2FtcGxlVHlwZShjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSkK
ICAgICAgICAgcmV0dXJuIFNhbXBsZVR5cGU6OlNhbXBsZUJpYXM7CiAgICAgaWYgKGZ1bmN0aW9u
TmFtZSA9PSAiU2FtcGxlR3JhZCIpCiAgICAgICAgIHJldHVybiBTYW1wbGVUeXBlOjpTYW1wbGVH
cmFkOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWls
ZGVyLCBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24sIGNvbnN0IFZlY3RvcjxNYW5nbGVkVmFyaWFibGVOYW1lPiYgYXJncywgTWFuZ2xlZFZh
cmlhYmxlTmFtZSByZXN1bHROYW1lLCBUeXBlTmFtZXImIHR5cGVOYW1lcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENoZWNrZXIuY3BwCmluZGV4
IDYzOTljYjVmZTg5YWJlODQ0MWZjYWExY2QxZjc2NWY3MDkxZTQxMjYuLjcyMWNiYTMwYWMxOWM1
ZjQ3NmFjMmQzZTExMzBlNGMxM2NkNTE2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDaGVja2VyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBA
IHN0YXRpYyBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gcmVzb2x2ZVdpdGhSZWZlcmVu
Y2VDb21wYXJhdG9yKENvZGVMb2NhdGlvCiAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBw
YXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuYXBwZW5kKG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpRdWFsaWZpZXJzKCksIGFyZ3VtZW50VHlw
ZS5jb3B5UmVmKCksIFN0cmluZygpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgcGFyYW1ldGVy
cy5hcHBlbmQobWFrZVVuaXF1ZVJlZjxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24+KGxvY2F0aW9u
LCBBU1Q6OlF1YWxpZmllcnMoKSwgV1RGTW92ZShhcmd1bWVudFR5cGUpLCBTdHJpbmcoKSwgbnVs
bHB0ciwgbnVsbHB0cikpOwotICAgIHJldHVybiBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2Nr
KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXR1cm5UeXBlKSwgU3RyaW5nKCJvcGVyYXRvcj09
IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksIFdURk1vdmUocGFyYW1ldGVycyksIG51
bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICBy
ZXR1cm4gQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIFdURk1v
dmUocmV0dXJuVHlwZSksIFN0cmluZygib3BlcmF0b3I9PSIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJz
aW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiB9CiAKIGVudW0gY2xhc3MgQWNjZXB0YWJpbGl0
eSB7CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbj4gcmVzb2x2ZUJ5SW5zdGFudGlhdGlvbihjb25zdCBTdHIKICAgICAgICAg
aWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVdpdGhSZWZlcmVuY2VDb21w
YXJhdG9yKGxvY2F0aW9uLCB0eXBlc1swXS5nZXQoKSwgdHlwZXNbMV0uZ2V0KCksIGludHJpbnNp
Y3MpOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrU2VtYW50aWNzKFZlY3RvcjxFbnRyeVBvaW50
SXRlbT4mIGlucHV0SXRlbXMsIFZlY3RvcjxFbnRyeVBvaW50SXRlbT4mIG91dHB1dEl0ZW1zLCBj
b25zdCBPcHRpb25hbDxBU1Q6OkVudHJ5UG9pbnRUeXBlPiYgZW50cnlQb2ludFR5cGUsIGNvbnN0
IEludHJpbnNpY3MmIGludHJpbnNpY3MpCkBAIC03MzcsNyArNzM3LDcgQEAgYXV0byBDaGVja2Vy
OjpyZWN1cnNlQW5kR2V0SW5mbyhBU1Q6OkV4cHJlc3Npb24mIGV4cHJlc3Npb24sIGJvb2wgcmVx
dWlyZXNMZWZ0VmEKIHsKICAgICBWaXNpdG9yOjp2aXNpdChleHByZXNzaW9uKTsKICAgICBpZiAo
aGFzRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZ2V0SW5mbyhleHByZXNzaW9uLCByZXF1aXJlc0xl
ZnRWYWx1ZSk7CiB9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBhdXRvIENoZWNrZXI6OmdldEluZm8o
QVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uLCBib29sIHJlcXVpcmVzTGVmdFZhbHVlKSAtPiBP
cAogICAgIGNvbnN0IGF1dG8mIHR5cGVBbm5vdGF0aW9uID0gZXhwcmVzc2lvbi50eXBlQW5ub3Rh
dGlvbigpOwogICAgIGlmIChyZXF1aXJlc0xlZnRWYWx1ZSAmJiB0eXBlQW5ub3RhdGlvbi5pc1Jp
Z2h0VmFsdWUoKSkgewogICAgICAgICBzZXRFcnJvcihFcnJvcigiVW5leHBlY3RlZCBydmFsdWUu
IiwgZXhwcmVzc2lvbi5jb2RlTG9jYXRpb24oKSkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4ge3sg
KnR5cGVJdGVyYXRvci0+dmFsdWUsIHR5cGVBbm5vdGF0aW9uIH19OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xDb21wdXRlRGltZW5zaW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVE
aW1lbnNpb25zLmNwcAppbmRleCA2Y2UxNGJjNzVkYjBhMTM5MGZhZjY0YjIwYjczMDAxNDUxZDNj
MDY5Li40ZTUxYWI3OTNlNzA0ZDYzY2YxNDc4NmM1M2M1OTNhMDVlZDQ0ZTVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENvbXB1dGVEaW1lbnNp
b25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTENv
bXB1dGVEaW1lbnNpb25zLmNwcApAQCAtNTcsNyArNTcsNyBAQCBPcHRpb25hbDxDb21wdXRlRGlt
ZW5zaW9ucz4gY29tcHV0ZURpbWVuc2lvbnMoUHJvZ3JhbSYgcHJvZ3JhbSwgQVNUOjpGdW5jdGlv
bkRlZgogICAgICAgICAgICAgfSksIGZ1bmN0aW9uQXR0cmlidXRlKTsKICAgICAgICAgICAgIGlm
ICghc3VjY2VzcykgewogICAgICAgICAgICAgICAgIC8vIENhbm5vdCBkZWNsYXJlIG11bHRpcGxl
IG51bXRocmVhZCBhdHRyaWJ1dGVzIG9uIGEgc2luZ2xlIGZ1bmN0aW9uLgotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGV4ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKaW5kZXggOTVhYTY4MWZj
MmJkYWFmNDYwYjhiYTA1NmVhMzVlN2U0OTFhYTM5Ni4uYTljNmEyNjg0ZTFjNDZiZDM3N2MyNWI1
YzIwOTFiODZhOGFiYTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKQEAgLTE2ODksNyArMTY4OSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxTdHJpbmdWaWV3PiBzb3VyY2VGcm9tTmFtZVNwYWNlKEFTVDo6TmFtZVNwYWNlIG5hbWVT
cGFjZSwgY29uc3QKIHsKICAgICBzd2l0Y2ggKG5hbWVTcGFjZSkgewogICAgIGNhc2UgQVNUOjpO
YW1lU3BhY2U6OlN0YW5kYXJkTGlicmFyeToKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIEFTVDo6TmFtZVNwYWNlOjpO
YW1lU3BhY2UxOgogICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhzb3VyY2UxKTsKICAgICBjYXNl
IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcAppbmRleCBjYzhlYjQz
ZmZkOGE0NDEyOWRiNTQ5NGIyMmI5ZTIzY2Y0ZDNmYzhmLi5hOGRhZWE1Y2VjNjQ0NWY0N2JiMDc0
MGZjOGZkMzRjODVjMzdlYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVDb250ZXh0LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBA
IE9wdGlvbmFsPENvZGVMb2NhdGlvbj4gTmFtZUNvbnRleHQ6OnRvcExldmVsRXhpc3RzKFN0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICAgICAgcmV0dXJuIHR5cGUtPmNvZGVMb2NhdGlvbigpOwogICAg
IGlmIChhdXRvKiBmdW5jdGlvbiA9IHNlYXJjaEZ1bmN0aW9ucyhuYW1lKSkKICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uLT5jb2RlTG9jYXRpb24oKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiog
TmFtZUNvbnRleHQ6OmxvY2FsRXhpc3RzKFN0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCBi
OTA3OTM1NmFhN2Y5MDY2M2M5NzIyOGMwNzg3Y2ViMDI2YTE5NjJjLi5mZjMzZmM0NTkxMzJiMTFm
NDAwOGY3ZGEzN2U1NDY3MzVhNDUwNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgT3B0
aW9uYWw8VG9rZW4+IFBhcnNlcjo6dHJ5VHlwZShUb2tlbjo6VHlwZSB0eXBlKQogICAgIGF1dG8g
dG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKICAgICBpZiAodG9rZW4udHlwZSA9PSB0eXBlKQogICAg
ICAgICByZXR1cm4geyBtX2xleGVyLmNvbnN1bWVUb2tlbigpIH07Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZSA8VG9rZW46
OlR5cGUuLi4gdHlwZXM+CkBAIC0yMTYsNyArMjE2LDcgQEAgT3B0aW9uYWw8VG9rZW4+IFBhcnNl
cjo6dHJ5VHlwZXMoKQogICAgIGF1dG8gdG9rZW4gPSBtX2xleGVyLnBlZWsoKTsKICAgICBpZiAo
VHlwZXM8dHlwZXMuLi4+OjppbmNsdWRlcyh0b2tlbi50eXBlKSkKICAgICAgICAgcmV0dXJuIHsg
bV9sZXhlci5jb25zdW1lVG9rZW4oKSB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYXV0byBQYXJzZXI6OmNvbnN1bWVUeXBlKFRva2Vu
OjpUeXBlIHR5cGUpIC0+IEV4cGVjdGVkPFRva2VuLCBFcnJvcj4KQEAgLTM0NSw3ICszNDUsNyBA
QCBhdXRvIFBhcnNlcjo6Y29uc3VtZU5vbk5lZ2F0aXZlSW50ZWdyYWxMaXRlcmFsKCkgLT4gRXhw
ZWN0ZWQ8dW5zaWduZWQsIEVycm9yPgogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaW50
ZWdyYWxMaXRlcmFsLmVycm9yKCkpOwogICAgIGF1dG8gcmVzdWx0ID0gV1RGOjp2aXNpdChXVEY6
Om1ha2VWaXNpdG9yKFtdKGludCB4KSAtPiBPcHRpb25hbDx1bnNpZ25lZD4gewogICAgICAgICBp
ZiAoeCA8IDApCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHg7CiAgICAgfSwgW10odW5zaWdu
ZWQgeCkgLT4gT3B0aW9uYWw8dW5zaWduZWQ+IHsKICAgICAgICAgcmV0dXJuIHg7CkBAIC00NzEs
NyArNDcxLDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlVHlwZVN1ZmZpeEFiYnJldmlhdGVkKCkgLT4g
RXhwZWN0ZWQ8VHlwZVN1ZmZpeEFiYnJldmlhdGVkLCBFcnIKICAgICAgICAgQ09OU1VNRV9UWVBF
KHJpZ2h0U3F1YXJlQnJhY2tldCwgUmlnaHRTcXVhcmVCcmFja2V0KTsKICAgICAgICAgcmV0dXJu
IHt7IHsgKnRva2VuLCAqcmlnaHRTcXVhcmVCcmFja2V0IH0sICp0b2tlbiwgKm51bUVsZW1lbnRz
IH19OwogICAgIH0KLSAgICByZXR1cm4ge3sgeyAqdG9rZW4gfSwgKnRva2VuLCBXVEY6Om51bGxv
cHQgfX07CisgICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgc3RkOjpudWxsb3B0IH19
OwogfQogCiBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQoKSAtPiBF
eHBlY3RlZDxUeXBlU3VmZml4Tm9uQWJicmV2aWF0ZWQsIEVycm9yPgpAQCAtNDg3LDcgKzQ4Nyw3
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+IEV4cGVj
dGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlCiAgICAgICAgIGlmICghbnVtRWxlbWVudHMpCiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobnVtRWxlbWVudHMuZXJyb3IoKSk7CiAg
ICAgICAgIENPTlNVTUVfVFlQRShyaWdodFNxdWFyZUJyYWNrZXQsIFJpZ2h0U3F1YXJlQnJhY2tl
dCk7Ci0gICAgICAgIHJldHVybiB7eyB7ICp0b2tlbiwgKnJpZ2h0U3F1YXJlQnJhY2tldCB9LCAq
dG9rZW4sIFdURjo6bnVsbG9wdCwgKm51bUVsZW1lbnRzIH19OworICAgICAgICByZXR1cm4ge3sg
eyAqdG9rZW4sICpyaWdodFNxdWFyZUJyYWNrZXQgfSwgKnRva2VuLCBzdGQ6Om51bGxvcHQsICpu
dW1FbGVtZW50cyB9fTsKICAgICB9CiAgICAgYXV0byBhZGRyZXNzU3BhY2VUb2tlbiA9IGNvbnN1
bWVUeXBlczwKICAgICAgICAgVG9rZW46OlR5cGU6OkNvbnN0YW50LApAQCAtNTEyLDcgKzUxMiw3
IEBAIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVTdWZmaXhOb25BYmJyZXZpYXRlZCgpIC0+IEV4cGVj
dGVkPFR5cGVTdWZmaXhOb25BYmJyZXZpYXRlCiAgICAgICAgIGFkZHJlc3NTcGFjZSA9IEFTVDo6
QWRkcmVzc1NwYWNlOjpUaHJlYWQ7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4g
e3sgeyAqdG9rZW4gfSwgKnRva2VuLCB7IGFkZHJlc3NTcGFjZSB9LCBXVEY6Om51bGxvcHQgfX07
CisgICAgcmV0dXJuIHt7IHsgKnRva2VuIH0sICp0b2tlbiwgeyBhZGRyZXNzU3BhY2UgfSwgc3Rk
OjpudWxsb3B0IH19OwogfQogCiBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gRXhwZWN0ZWQ8
UmVmPEFTVDo6VW5uYW1lZFR5cGU+LCBFcnJvcj4KQEAgLTEwMzUsNyArMTAzNSw3IEBAIGF1dG8g
UGFyc2VyOjpwYXJzZVJlZ3VsYXJGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0CiAKICAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygp
LnN0YXJ0T2Zmc2V0KCk7CiAKLSAgICByZXR1cm4gQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKHsg
b3JpZ2luLT5zdGFydE9mZnNldCgpLCBlbmRPZmZzZXQsIG1fbGV4ZXIubmFtZVNwYWNlKCkgfSwg
eyB9LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoKnR5cGUpLCBuYW1lLT5zdHJpbmdWaWV3KG1fbGV4
ZXIpLnRvU3RyaW5nKCksIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyks
IGlzT3BlcmF0b3IsIG1fbW9kZSk7CisgICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
bih7IG9yaWdpbi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgp
IH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgbmFtZS0+c3RyaW5nVmlldyht
X2xleGVyKS50b1N0cmluZygpLCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSwgV1RGTW92ZSgqc2VtYW50
aWMpLCBpc09wZXJhdG9yLCBtX21vZGUpOwogfQogCiBhdXRvIFBhcnNlcjo6cGFyc2VPcGVyYXRv
ckZ1bmN0aW9uRGVjbGFyYXRpb24oKSAtPiBFeHBlY3RlZDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24sIEVycm9yPgpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlT3BlcmF0
b3JGdW5jdGlvbkRlY2xhcmF0aW9uKCkgLT4gRXhwZWN0ZWQ8QVNUOjpGdW5jdGlvbkRlY2xhcmEK
ICAgICBhdXRvIGVuZE9mZnNldCA9IG1fbGV4ZXIucGVlaygpLnN0YXJ0T2Zmc2V0KCk7CiAKICAg
ICBib29sIGlzT3BlcmF0b3IgPSB0cnVlOwotICAgIHJldHVybiBBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24oeyBvcmlnaW4tPnN0YXJ0T2Zmc2V0KCksIGVuZE9mZnNldCwgbV9sZXhlci5uYW1lU3Bh
Y2UoKSB9LCB7IH0sIFdURjo6bnVsbG9wdCwgV1RGTW92ZSgqdHlwZSksICJvcGVyYXRvciBjYXN0
Il9zdHIsIFdURk1vdmUoKnBhcmFtZXRlcnMpLCBXVEZNb3ZlKCpzZW1hbnRpYyksIGlzT3BlcmF0
b3IsIG1fbW9kZSk7CisgICAgcmV0dXJuIEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbih7IG9yaWdp
bi0+c3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0LCBtX2xleGVyLm5hbWVTcGFjZSgpIH0sIHsgfSwg
c3RkOjpudWxsb3B0LCBXVEZNb3ZlKCp0eXBlKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92
ZSgqcGFyYW1ldGVycyksIFdURk1vdmUoKnNlbWFudGljKSwgaXNPcGVyYXRvciwgbV9tb2RlKTsK
IH0KIAogYXV0byBQYXJzZXI6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpIC0+IEV4cGVjdGVk
PEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiwgRXJyb3I+CkBAIC0xMTY1LDcgKzExNjUsNyBAQCBh
dXRvIFBhcnNlcjo6cGFyc2VTd2l0Y2hDYXNlKCkgLT4gRXhwZWN0ZWQ8QVNUOjpTd2l0Y2hDYXNl
LCBFcnJvcj4KIAogICAgICAgICBQQVJTRShibG9jaywgQmxvY2tCb2R5KTsKIAotICAgICAgICBy
ZXR1cm4gQVNUOjpTd2l0Y2hDYXNlKHsgb3JpZ2luLT5jb2RlTG9jYXRpb24sICBibG9jay0+Y29k
ZUxvY2F0aW9uKCl9LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoKmJsb2NrKSk7CisgICAgICAgIHJl
dHVybiBBU1Q6OlN3aXRjaENhc2UoeyBvcmlnaW4tPmNvZGVMb2NhdGlvbiwgIGJsb2NrLT5jb2Rl
TG9jYXRpb24oKX0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSgqYmxvY2spKTsKICAgICB9CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTZW1hbnRpY01hdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTZW1hbnRpY01hdGNoZXIuY3BwCmluZGV4IGIxMWI4NjA0YWQ3NTM1YzRlMzExZjg3
ODZiOTM3YzVmOGU1N2RmNjUuLjVlM2YwZjAzNjY4NjVmNDAyMzlhZWVmZjllMGUyNTg0ZDIxNGRl
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U2VtYW50aWNNYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFNlbWFudGljTWF0Y2hlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIE9w
dGlvbmFsPEhhc2hNYXA8QmluZGluZyosIHNpemVfdD4+IG1hdGNoUmVzb3VyY2VzKFZlY3RvcjxF
bnRyeVBvaW50SXRlbT4KICAgICAgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6
UmVzb3VyY2VTZW1hbnRpYz4oc2VtYW50aWMpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmICghaXRlbUluZGljZXMuY29udGFpbnMoaSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxIYXNo
TWFwPFZlcnRleEF0dHJpYnV0ZSosIHNpemVfdD4+IG1hdGNoVmVydGV4QXR0cmlidXRlcyhWZWN0
b3I8CiAgICAgICAgICAgICBpZiAoc3RhZ2VJbk91dFNlbWFudGljLmluZGV4KCkgIT0gdmVydGV4
QXR0cmlidXRlLnNoYWRlckxvY2F0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgaWYgKCFpc0FjY2VwdGFibGVGb3JtYXQodmVydGV4QXR0cmlidXRlLnZlcnRleEZv
cm1hdCwgKml0ZW0udW5uYW1lZFR5cGUsIGludHJpbnNpY3MpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIHJlc3VsdC5hZGQoJnZlcnRleEF0dHJpYnV0ZSwgaSk7CiAgICAgICAgICAg
ICBpdGVtSW5kaWNlcy5hZGQoaSk7CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8SGFzaE1hcDxWZXJ0ZXhBdHRyaWJ1dGUqLCBzaXplX3Q+PiBtYXRjaFZlcnRl
eEF0dHJpYnV0ZXMoVmVjdG9yPAogICAgICAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8
QVNUOjpTdGFnZUluT3V0U2VtYW50aWM+KHNlbWFudGljKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICBpZiAoIWl0ZW1JbmRpY2VzLmNvbnRhaW5zKGkpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8SGFzaE1hcDxBdHRhY2htZW50RGVzY3JpcHRvciosIHNpemVfdD4+IG1hdGNoQ29sb3JBdHRh
Y2htZW50cyhWZQogICAgICAgICAgICAgaWYgKHN0YWdlSW5PdXRTZW1hbnRpYy5pbmRleCgpICE9
IGF0dGFjaG1lbnREZXNjcmlwdG9yLm5hbWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICBpZiAoIWlzQWNjZXB0YWJsZUZvcm1hdChhdHRhY2htZW50RGVzY3JpcHRvci50
ZXh0dXJlRm9ybWF0LCAqaXRlbS51bm5hbWVkVHlwZSwgaW50cmluc2ljcywgdHJ1ZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmVzdWx0LmFkZCgmYXR0YWNobWVudERlc2NyaXB0
b3IsIGkpOwogICAgICAgICAgICAgaXRlbUluZGljZXMuYWRkKGkpOwogICAgICAgICB9CkBAIC0y
NDksNyArMjQ5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0
b3IqLCBzaXplX3Q+PiBtYXRjaENvbG9yQXR0YWNobWVudHMoVmUKICAgICAgICAgaWYgKCFXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPEFTVDo6U3RhZ2VJbk91dFNlbWFudGljPihzZW1hbnRpYykpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFpdGVtSW5kaWNlcy5jb250YWlucyhp
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNzgsMzggKzI3
OCwzOCBAQCBPcHRpb25hbDxNYXRjaGVkUmVuZGVyU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQ
cm9ncmFtJiBwcm9ncmFtLCBSZW5kZXJQaXBlbGluZQogewogICAgIGF1dG8gdmVydGV4RnVuY3Rp
b25zID0gcHJvZ3JhbS5uYW1lQ29udGV4dCgpLmdldEZ1bmN0aW9ucyhyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IudmVydGV4RW50cnlQb2ludE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2Ux
KTsKICAgICBpZiAodmVydGV4RnVuY3Rpb25zLnNpemUoKSAhPSAxIHx8ICF2ZXJ0ZXhGdW5jdGlv
bnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRp
b24+KHZlcnRleEZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byYgdmVydGV4U2hhZGVy
RW50cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPih2ZXJ0ZXhGdW5j
dGlvbnNbMF0uZ2V0KCkpOwogICAgIGF1dG8gdmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1zID0g
Z2F0aGVyRW50cnlQb2ludEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCB2ZXJ0ZXhTaGFkZXJF
bnRyeVBvaW50KTsKICAgICBpZiAoIXZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIHZlcnRleFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXModmVydGV4U2hh
ZGVyRW50cnlQb2ludEl0ZW1zLT5pbnB1dHMsIHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5sYXlv
dXQsIFNoYWRlclN0YWdlOjpWZXJ0ZXgpOwogICAgIGlmICghdmVydGV4U2hhZGVyUmVzb3VyY2VN
YXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgYXV0byBtYXRjaGVkVmVydGV4QXR0cmlidXRlcyA9IG1hdGNoVmVydGV4QXR0
cmlidXRlcyh2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLnZlcnRleEF0dHJpYnV0ZXMsIHByb2dyYW0uaW50cmluc2ljcygpKTsKICAg
ICBpZiAoIW1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZnJhZ21lbnRTaGFk
ZXJFeGlzdHMpCiAgICAgICAgIHJldHVybiB7eyAmdmVydGV4U2hhZGVyRW50cnlQb2ludCwgbnVs
bHB0ciwgKnZlcnRleFNoYWRlckVudHJ5UG9pbnRJdGVtcywgRW50cnlQb2ludEl0ZW1zKCksICp2
ZXJ0ZXhTaGFkZXJSZXNvdXJjZU1hcCwgSGFzaE1hcDxCaW5kaW5nKiwgc2l6ZV90PigpLCAqbWF0
Y2hlZFZlcnRleEF0dHJpYnV0ZXMsIEhhc2hNYXA8QXR0YWNobWVudERlc2NyaXB0b3IqLCBzaXpl
X3Q+KCkgfX07CiAKICAgICBhdXRvIGZyYWdtZW50TmFtZVNwYWNlID0gZGlzdGluY3RGcmFnbWVu
dFNoYWRlciA/IEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UyIDogQVNUOjpOYW1lU3BhY2U6Ok5h
bWVTcGFjZTE7CiAgICAgYXV0byBmcmFnbWVudEZ1bmN0aW9ucyA9IHByb2dyYW0ubmFtZUNvbnRl
eHQoKS5nZXRGdW5jdGlvbnMocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmZyYWdtZW50RW50cnlQ
b2ludE5hbWUsIGZyYWdtZW50TmFtZVNwYWNlKTsKICAgICBpZiAoZnJhZ21lbnRGdW5jdGlvbnMu
c2l6ZSgpICE9IDEgfHwgIWZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpLmVudHJ5UG9pbnRUeXBl
KCkgfHwgIWlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmcmFnbWVudEZ1bmN0aW9uc1swXS5n
ZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgYXV0byYgZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50ID0gZG93bmNhc3Q8
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZyYWdtZW50RnVuY3Rpb25zWzBdLmdldCgpKTsKICAg
ICBhdXRvIGZyYWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2ludEl0
ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnQpOwogICAg
IGlmICghZnJhZ21lbnRTaGFkZXJFbnRyeVBvaW50SXRlbXMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBmcmFnbWVu
dFNoYWRlclJlc291cmNlTWFwID0gbWF0Y2hSZXNvdXJjZXMoZnJhZ21lbnRTaGFkZXJFbnRyeVBv
aW50SXRlbXMtPmlucHV0cywgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVy
U3RhZ2U6OkZyYWdtZW50KTsKICAgICBpZiAoIWZyYWdtZW50U2hhZGVyUmVzb3VyY2VNYXApCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFtYXRjaElucHV0c091dHB1dHModmVydGV4U2hhZGVyRW50cnlQb2ludEl0ZW1z
LT5vdXRwdXRzLCBmcmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcy0+aW5wdXRzKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIG1hdGNoZWRDb2xvckF0dGFjaG1lbnRzID0gbWF0Y2hDb2xvckF0dGFjaG1lbnRzKGZy
YWdtZW50U2hhZGVyRW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLCByZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuYXR0YWNobWVudHNTdGF0ZURlc2NyaXB0b3IuYXR0YWNobWVudERlc2NyaXB0b3JzLCBw
cm9ncmFtLmludHJpbnNpY3MoKSk7CiAgICAgaWYgKCFtYXRjaGVkQ29sb3JBdHRhY2htZW50cykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIW1hdGNoRGVwdGhBdHRhY2htZW50KGZyYWdtZW50U2hhZGVyRW50cnlQb2lu
dEl0ZW1zLT5vdXRwdXRzLCByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuYXR0YWNobWVudHNTdGF0
ZURlc2NyaXB0b3IuZGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IsIHByb2dyYW0uaW50
cmluc2ljcygpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgJnZlcnRleFNoYWRlckVudHJ5UG9pbnQsICZm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnQsICp2ZXJ0ZXhTaGFkZXJFbnRyeVBvaW50SXRlbXMsICpm
cmFnbWVudFNoYWRlckVudHJ5UG9pbnRJdGVtcywgKnZlcnRleFNoYWRlclJlc291cmNlTWFwLCAq
ZnJhZ21lbnRTaGFkZXJSZXNvdXJjZU1hcCwgKm1hdGNoZWRWZXJ0ZXhBdHRyaWJ1dGVzLCAqbWF0
Y2hlZENvbG9yQXR0YWNobWVudHMgfX07CiB9CiAKQEAgLTMxNywxNSArMzE3LDE1IEBAIE9wdGlv
bmFsPE1hdGNoZWRDb21wdXRlU2VtYW50aWNzPiBtYXRjaFNlbWFudGljcyhQcm9ncmFtJiBwcm9n
cmFtLCBDb21wdXRlUGlwZWxpCiB7CiAgICAgYXV0byBmdW5jdGlvbnMgPSBwcm9ncmFtLm5hbWVD
b250ZXh0KCkuZ2V0RnVuY3Rpb25zKGNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuZW50cnlQb2lu
dE5hbWUsIEFTVDo6TmFtZVNwYWNlOjpOYW1lU3BhY2UxKTsKICAgICBpZiAoZnVuY3Rpb25zLnNp
emUoKSAhPSAxIHx8ICFmdW5jdGlvbnNbMF0uZ2V0KCkuZW50cnlQb2ludFR5cGUoKSB8fCAhaXM8
QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGZ1bmN0aW9uc1swXS5nZXQoKSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0
byYgZW50cnlQb2ludCA9IGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihmdW5jdGlv
bnNbMF0uZ2V0KCkpOwogICAgIGF1dG8gZW50cnlQb2ludEl0ZW1zID0gZ2F0aGVyRW50cnlQb2lu
dEl0ZW1zKHByb2dyYW0uaW50cmluc2ljcygpLCBlbnRyeVBvaW50KTsKICAgICBpZiAoIWVudHJ5
UG9pbnRJdGVtcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBBU1NFUlQoZW50cnlQb2ludEl0ZW1zLT5vdXRwdXRzLmlzRW1w
dHkoKSk7CiAgICAgYXV0byByZXNvdXJjZU1hcCA9IG1hdGNoUmVzb3VyY2VzKGVudHJ5UG9pbnRJ
dGVtcy0+aW5wdXRzLCBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmxheW91dCwgU2hhZGVyU3Rh
Z2U6OkNvbXB1dGUpOwogICAgIGlmICghcmVzb3VyY2VNYXApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7ICZl
bnRyeVBvaW50LCAqZW50cnlQb2ludEl0ZW1zLCAqcmVzb3VyY2VNYXAgfX07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6
ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDMxN2QwYzVmYmVjZTQ0OTE4MDU5
NzIwYTQ1YmRjZjg0MWJhNDc0MWYuLmJjYzkwYTM2NDA1YTJlZDE3NGRkMzU2MzJkNjY5YTQ5NzEy
OGJmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcApAQCAtMTI4LDEx
ICsxMjgsMTEgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVDb25zdHJ1Y3RvcnMo
UHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpR
dWFsaWZpZXJzKCksICZ1bm5hbWVkVHlwZSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwog
ICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uKSk7Ci0g
ICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9y
KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygp
LCBXVEY6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRM
aWJyYXJ5KSk7CisgICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24gY29w
eUNvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRy
aWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIHVubmFtZWRUeXBlLCAib3BlcmF0b3IgY2FzdCJf
c3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9k
ZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3Zl
KGNvcHlDb25zdHJ1Y3RvcikpOwogICAgICAgICB9CiAKLSAgICAgICAgQVNUOjpOYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRp
b24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCB1bm5hbWVk
VHlwZSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9ucygpLCBu
dWxscHRyLCBpc09wZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CisgICAg
ICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIHN0
ZDo6bnVsbG9wdCwgdW5uYW1lZFR5cGUsICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkpOwogICAgICAgICBpZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUoZGVmYXVs
dENvbnN0cnVjdG9yKSkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3Io
IkNvdWxkIG5vdCBzeW50aGVzaXplIGRlZmF1bHQgY29uc3RydWN0b3IiKSk7CiAgICAgfQpAQCAt
MTQ4LDcgKzE0OCw3IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0
b3JzKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlvbiA9
IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNUOjpR
dWFsaWZpZXJzKCksIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBl
LmdldCgpKSwgU3RyaW5nKCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb25zIHBhcmFtZXRlcnM7CiAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdU
Rk1vdmUodmFyaWFibGVEZWNsYXJhdGlvbikpOwotICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24gY29weUNvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2Nh
dGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBXVEY6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVy
ZW5jZTo6d3JhcChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0
ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6
OlN0YW5kYXJkTGlicmFyeSkpOworICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24gY29weUNvbnN0cnVjdG9yKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNU
OjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIEFTVDo6VHlwZVJlZmVyZW5jZTo6d3Jh
cChsb2NhdGlvbiwgbmFtZWRUeXBlLmdldCgpKSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJk
TGlicmFyeSkpOwogICAgICAgICBwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKGNvcHlDb25zdHJ1Y3Rv
cikpOwogCiAgICAgICAgIGlmIChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4oc3RhdGlj
X2Nhc3Q8QVNUOjpOYW1lZFR5cGUmPihuYW1lZFR5cGUpKSkgewpAQCAtMTU2LDcgKzE1Niw3IEBA
IEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplQ29uc3RydWN0b3JzKFByb2dyYW0mIHBy
b2dyYW0pCiAgICAgICAgICAgICBpZiAobmF0aXZlVHlwZURlY2xhcmF0aW9uLmlzT3BhcXVlVHlw
ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEFTVDo6
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBkZWZhdWx0Q29uc3RydWN0b3IoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9w
dCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBuYW1lZFR5cGUuZ2V0KCkpLCAi
b3BlcmF0b3IgY2FzdCJfc3RyLCBBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zKCksIG51bGxwdHIs
IGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIGRlZmF1bHRDb25zdHJ1Y3RvcihBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24obG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgc3RkOjpudWxs
b3B0LCBBU1Q6OlR5cGVSZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIG5hbWVkVHlwZS5nZXQoKSks
ICJvcGVyYXRvciBjYXN0Il9zdHIsIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMoKSwgbnVsbHB0
ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogICAgICAgICBp
ZiAoIXByb2dyYW0uYXBwZW5kKFdURk1vdmUoZGVmYXVsdENvbnN0cnVjdG9yKSkpCiAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNvdWxkIG5vdCBzeW50aGVzaXplIGRl
ZmF1bHQgY29uc3RydWN0b3IiKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXpl
RW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCmluZGV4IDJhN2UwZDY5NjA3ZWQzOWFlMDU1ZmUwMGFk
YzliMTlkZjk1MGFlMWEuLmYwNTA3MzgyM2M3ZGExZDdhMTI3ZjNkNTZiYjZmMjA1MWE5ZGZmZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3lu
dGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgRXhwZWN0ZWQ8dm9pZCwgRXJyb3I+IHN5bnRoZXNpemVFbnVtZXJh
dGlvbkZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQogICAgICAgICAgICAgQVNUOjpWYXJpYWJs
ZURlY2xhcmF0aW9ucyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQo
V1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMSkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQoV1RGTW92ZSh2YXJpYWJsZURlY2xhcmF0aW9uMikpOwotICAgICAgICAgICAgQVNUOjpO
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpG
dW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6
bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0aW9uLCBwcm9ncmFtLmludHJp
bnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwor
ICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uIG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxvY2F0aW9uLCBBU1Q6OkF0dHJp
YnV0ZUJsb2NrKCksIHN0ZDo6bnVsbG9wdCwgQVNUOjpUeXBlUmVmZXJlbmNlOjp3cmFwKGxvY2F0
aW9uLCBwcm9ncmFtLmludHJpbnNpY3MoKS5ib29sVHlwZSgpKSwgIm9wZXJhdG9yPT0iX3N0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNPcGVyYXRvciwgUGFyc2luZ01vZGU6OlN0
YW5kYXJkTGlicmFyeSkpOwogICAgICAgICAgICAgaWYgKCFwcm9ncmFtLmFwcGVuZChXVEZNb3Zl
KG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUgb3BlcmF0b3I9PSBmb3IgZW51bSB0eXBl
LiIpKTsKICAgICAgICAgfQpAQCAtNTYsNyArNTYsNyBAQCBFeHBlY3RlZDx2b2lkLCBFcnJvcj4g
c3ludGhlc2l6ZUVudW1lcmF0aW9uRnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCiAgICAgICAg
ICAgICBhdXRvIHZhcmlhYmxlRGVjbGFyYXRpb24gPSBtYWtlVW5pcXVlUmVmPEFTVDo6VmFyaWFi
bGVEZWNsYXJhdGlvbj4obG9jYXRpb24sIEFTVDo6UXVhbGlmaWVycygpLCBBU1Q6OlR5cGVSZWZl
cmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksIFN0cmluZygpLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnMg
cGFyYW1ldGVyczsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFdURk1vdmUodmFyaWFi
bGVEZWNsYXJhdGlvbikpOwotICAgICAgICAgICAgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24oQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKGxv
Y2F0aW9uLCBBU1Q6OkF0dHJpYnV0ZUJsb2NrKCksIFdURjo6bnVsbG9wdCwgZW51bWVyYXRpb25E
ZWZpbml0aW9uLT50eXBlKCksICJvcGVyYXRvciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVy
cyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBhcnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsK
KyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRy
aWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQsIGVudW1lcmF0aW9uRGVmaW5pdGlvbi0+dHlwZSgp
LCAib3BlcmF0b3IgY2FzdCJfc3RyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyLCBpc09w
ZXJhdG9yLCBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KSk7CiAgICAgICAgICAgICBpZiAo
IXByb2dyYW0uYXBwZW5kKFdURk1vdmUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcigiQ2Fubm90IGNyZWF0ZSBj
b3B5IGNvbnN0cnVjdG9yIGZvciBlbnVtIHR5cGUuIikpOwogICAgICAgICB9CkBAIC02NSw3ICs2
NSw3IEBAIEV4cGVjdGVkPHZvaWQsIEVycm9yPiBzeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlv
bnMoUHJvZ3JhbSYgcHJvZ3JhbSkKICAgICAgICAgICAgIGF1dG8gdmFyaWFibGVEZWNsYXJhdGlv
biA9IG1ha2VVbmlxdWVSZWY8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uPihsb2NhdGlvbiwgQVNU
OjpRdWFsaWZpZXJzKCksICZlbnVtZXJhdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgU3RyaW5nKCks
IG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAgICAgQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9u
cyBwYXJhbWV0ZXJzOwogICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoV1RGTW92ZSh2YXJp
YWJsZURlY2xhcmF0aW9uKSk7Ci0gICAgICAgICAgICBBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbihBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24o
bG9jYXRpb24sIEFTVDo6QXR0cmlidXRlQmxvY2soKSwgV1RGOjpudWxsb3B0LCBBU1Q6OlR5cGVS
ZWZlcmVuY2U6OndyYXAobG9jYXRpb24sIGVudW1lcmF0aW9uRGVmaW5pdGlvbiksICJvcGVyYXRv
ciBjYXN0Il9zdHIsIFdURk1vdmUocGFyYW1ldGVycyksIG51bGxwdHIsIGlzT3BlcmF0b3IsIFBh
cnNpbmdNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICAgICAgICAgIEFTVDo6TmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKEFTVDo6RnVuY3Rpb25E
ZWNsYXJhdGlvbihsb2NhdGlvbiwgQVNUOjpBdHRyaWJ1dGVCbG9jaygpLCBzdGQ6Om51bGxvcHQs
IEFTVDo6VHlwZVJlZmVyZW5jZTo6d3JhcChsb2NhdGlvbiwgZW51bWVyYXRpb25EZWZpbml0aW9u
KSwgIm9wZXJhdG9yIGNhc3QiX3N0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbnVsbHB0ciwgaXNP
cGVyYXRvciwgUGFyc2luZ01vZGU6OlN0YW5kYXJkTGlicmFyeSkpOwogICAgICAgICAgICAgaWYg
KCFwcm9ncmFtLmFwcGVuZChXVEZNb3ZlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3IoIkNhbm5vdCBjcmVhdGUg
J29wZXJhdG9yIGNhc3QnIGZvciBlbnVtIHR5cGUuIikpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwCmluZGV4IDNlNTEwYzU3NGYzZWY4NjNiMWExMDEyZjVlZjYzOTkxMzRiOWMxN2Mu
LjhlZmVhNTU1Y2U5MmMxYzQxOTk2MWE0ZjU2MmVhNTUzNGUyMTBjNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwCkBAIC02NiwxMiArNjYsMTIgQEAgT3B0aW9uYWw8R1BVQmluZEdyb3VwRGVzY3Jp
cHRvcj4gV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVQmluZEdyb3UKIAog
ICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSB7CiAgICAgICAg
IExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVCaW5kR3JvdXBMYXlvdXQhIiwgZnVuY3Rpb25O
YW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoYmluZGluZ3Muc2l6ZSgpICE9IGxheW91dC0+Ymlu
ZEdyb3VwTGF5b3V0KCktPmJpbmRpbmdzTWFwKCkuc2l6ZSgpKSB7CiAgICAgICAgIExPRyhXZWJH
UFUsICIlczogTWlzbWF0Y2hlZCBudW1iZXIgb2YgR1BVQmluZEdyb3VwTGF5b3V0QmluZGluZ3Mg
YW5kIEdQVUJpbmRHcm91cEJpbmRpbmdzISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgYXV0byBsYXlvdXRNYXAgPSBsYXlvdXQtPmJpbmRHcm91cExheW91dCgpLT5iaW5kaW5nc01h
cCgpOwpAQCAtODMsMzYgKzgzLDM2IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2NyaXB0b3I+
IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBsYXlvdXRNYXAuZmluZChiaW5kaW5nLmJpbmRpbmcpOwogICAgICAg
ICBpZiAoaXRlcmF0b3IgPT0gbGF5b3V0TWFwLmVuZCgpKSB7CiAgICAgICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IEdQVUJpbmRHcm91cExheW91dEJpbmRpbmcgJXUgbm90IGZvdW5kIGluIEdQVUJp
bmRHcm91cExheW91dCEiLCBmdW5jdGlvbk5hbWUsIGJpbmRpbmcuYmluZGluZyk7Ci0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IGF1dG8gbGF5b3V0QmluZGluZyA9IGl0ZXJh
dG9yLT52YWx1ZTsKIAogICAgICAgICBhdXRvIGJpbmRpbmdSZXNvdXJjZVZpc2l0b3IgPSBXVEY6
Om1ha2VWaXNpdG9yKFtdKGNvbnN0IFJlZlB0cjxXZWJHUFVTYW1wbGVyPiYgc2FtcGxlcikgLT4g
T3B0aW9uYWw8R1BVQmluZGluZ1Jlc291cmNlPiB7CiAgICAgICAgICAgICBpZiAoIXNhbXBsZXIp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBncHVTYW1wbGVyID0gc2FtcGxl
ci0+c2FtcGxlcigpOwogICAgICAgICAgICAgaWYgKCFncHVTYW1wbGVyKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJj
ZT4obWFrZVJlZigqZ3B1U2FtcGxlcikpOwogICAgICAgICB9LCBbXShjb25zdCBSZWZQdHI8V2Vi
R1BVVGV4dHVyZVZpZXc+JiB2aWV3KSAtPiBPcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsK
ICAgICAgICAgICAgIGlmICghdmlldykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBh
dXRvIHRleHR1cmUgPSB2aWV3LT50ZXh0dXJlKCk7CiAgICAgICAgICAgICBpZiAoIXRleHR1cmUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BV
QmluZGluZ1Jlc291cmNlPihtYWtlUmVmKCp0ZXh0dXJlKSk7CiAgICAgICAgIH0sIFsmbGF5b3V0
QmluZGluZywgZnVuY3Rpb25OYW1lXSAoV2ViR1BVQnVmZmVyQmluZGluZyBidWZmZXJCaW5kaW5n
KSAtPiBPcHRpb25hbDxHUFVCaW5kaW5nUmVzb3VyY2U+IHsKICAgICAgICAgICAgIGlmICghYnVm
ZmVyQmluZGluZy5idWZmZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBi
dWZmZXIgPSBidWZmZXJCaW5kaW5nLmJ1ZmZlci0+YnVmZmVyKCk7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmICghdmFsaWRhdGVC
dWZmZXJCaW5kaW5nVHlwZShidWZmZXIsIGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLCBm
dW5jdGlvbk5hbWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdQVUJpbmRpbmdSZXNvdXJjZT4oR1BVQnVmZmVyQmluZGluZyB7IG1ha2VSZWYo
KmJ1ZmZlciksIGJ1ZmZlckJpbmRpbmcub2Zmc2V0LCBidWZmZXJCaW5kaW5nLnNpemUgfSk7CiAg
ICAgICAgIH0pOwpAQCAtMTIwLDcgKzEyMCw3IEBAIE9wdGlvbmFsPEdQVUJpbmRHcm91cERlc2Ny
aXB0b3I+IFdlYkdQVUJpbmRHcm91cERlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVUJpbmRHcm91CiAg
ICAgICAgIGF1dG8gYmluZGluZ1Jlc291cmNlID0gV1RGOjp2aXNpdChiaW5kaW5nUmVzb3VyY2VW
aXNpdG9yLCBiaW5kaW5nLnJlc291cmNlKTsKICAgICAgICAgaWYgKCFiaW5kaW5nUmVzb3VyY2Up
IHsKICAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCByZXNvdXJjZSBmb3IgYmlu
ZGluZyAldSEiLCBmdW5jdGlvbk5hbWUsIGxheW91dEJpbmRpbmcuZXh0ZXJuYWxCaW5kaW5nLmJp
bmRpbmcpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBiaW5kR3JvdXBCaW5kaW5n
cy51bmNoZWNrZWRBcHBlbmQoR1BVQmluZEdyb3VwQmluZGluZyB7IGJpbmRpbmcuYmluZGluZywg
V1RGTW92ZShiaW5kaW5nUmVzb3VyY2UudmFsdWUoKSkgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kRW5jb2Rlci5jcHAKaW5kZXggZWU3
MTIxNGI1YzBhZWVkZDk3NzllMzMyMmFmOWZjMzNkZDlmOTcyNi4uOTc3MDlkZWE2MTY0MTYyZTYz
NDg1OTEwMDgyZDQyMjYxN2Q0NjMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEVuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRFbmNvZGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBP
cHRpb25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OnRyeUNyZWF0
ZUdQVUJ1ZmZlckNvcHlWaWV3KCkgYwogewogICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJ1
ZmZlcigpKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJXZWJHUFVDb21tYW5kRW5jb2RlcjogSW52
YWxpZCBidWZmZXIgZm9yIGNvcHkhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFkZCBX
ZWIgR1BVIHZhbGlkYXRpb24uCkBAIC01Nyw3ICs1Nyw3IEBAIE9wdGlvbmFsPEdQVVRleHR1cmVD
b3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojp0cnlDcmVhdGVHUFVUZXh0dXJlQ29weVZp
ZXcoCiB7CiAgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0dXJlLT50ZXh0dXJlKCkpIHsKICAgICAg
ICAgTE9HKFdlYkdQVSwgIldlYkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIHRleHR1cmUgZm9y
IGNvcHkhIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCmluZGV4IGQyNzNkZWIwYzI1YjNi
OTQxMzNiM2ZjM2FmYWZjN2YwYjhhOWM3OGUuLmI0ZWM1OGM5Zjc1ZGUyODUyYWZhZWRiYjY5NzBl
YWRjNGE4NzViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC00MCw3
ICs0MCw3IEBAIE9wdGlvbmFsPEdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IFdlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0CiAgICAgYXV0byBjb21wdXRlID0gY29t
cHV0ZVN0YWdlLnRyeUNyZWF0ZUdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpOwogICAg
IGlmICghY29tcHV0ZSkgewogICAgICAgICBlcnJvclNjb3Blcy5nZW5lcmF0ZUVycm9yKCJHUFVE
ZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgpOiBJbnZhbGlkIEdQVVByb2dyYW1tYWJsZVN0
YWdlRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvciB7IFdURk1vdmUocGlwZWxpbmVMYXlvdXQpLCBXVEZNb3ZlKCpjb21wdXRl
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKaW5kZXggMjNhNmYxNzI0NTkyMTAz
NzliZDNjMmY2NTQ2MDgyZGUxYTE3Nzc2ZS4uMTFlZDFhZWRkYTg5NzVkYjVkNTFhODY2NWNlZDgx
YTU0Y2M4MjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIE9wdGlvbmFsPEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gV2ViR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yOjp0cnlDcmVhdGVHCiAgICAgZm9yIChjb25zdCBhdXRvJiBsYXlv
dXQgOiBiaW5kR3JvdXBMYXlvdXRzKSB7CiAgICAgICAgIGlmICghbGF5b3V0IHx8ICFsYXlvdXQt
PmJpbmRHcm91cExheW91dCgpKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVRGV2aWNl
OjpjcmVhdGVQaXBlbGluZUxheW91dCgpOiBJbnZhbGlkIEdQVUJpbmRHcm91cExheW91dCEiKTsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBncHVMYXlvdXRzLnVuY2hl
Y2tlZEFwcGVuZChtYWtlUmVmKCpsYXlvdXQtPmJpbmRHcm91cExheW91dCgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVTdGFn
ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yLmNwcAppbmRleCAwZTVmM2JlMjIyMzAwZDViNGFiNmUw
ZmU2MDlhZTdkODBhNGIyYjE3Li40Nzc1YTg4NWZjNzZiNGNmOTVjNTgzZTU4Njk5NDllZTE4OTll
YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9n
cmFtbWFibGVTdGFnZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvci5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogT3B0aW9uYWw8R1BVUHJvZ3JhbW1hYmxlU3RhZ2VE
ZXNjcmlwdG9yPiBXZWJHUFVQcm9ncmFtbWFibGVTdGFnZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQ
VVByb2dyYW1tYWJsZVN0YWdlRGVzY3JpcHRvcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtb2R1bGUg
fHwgIW1vZHVsZS0+bW9kdWxlKCkgfHwgZW50cnlQb2ludC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gR1BVUHJvZ3JhbW1hYmxlU3RhZ2VEZXNjcmlwdG9yIHsgbWFrZVJlZigqbW9kdWxlLT5t
b2R1bGUoKSksICp0aGlzIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggYmY0OGU4
M2FjOWNiMGJjYjc2NWQ0NDBmNTEzNWE4NmZjZWMwMTdmOC4uNDM5NTcxN2JiNWVjNDM1ZTE1MmJm
ODE5YmRlYTE2MGUyYjcxMmFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFz
c0Rlc2NyaXB0b3I6OnRyeUNyZWF0ZUdQVVJlbmRlcgogICAgIC8vIEZJWE1FOiBJbXByb3ZlIGVy
cm9yIGNoZWNraW5nIGFzIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yIGlzIGFkZGVkIHRvIHNw
ZWMuCiAgICAgaWYgKGNvbG9yQXR0YWNobWVudHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhX
ZWJHUFUsICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjogTm8gY29sb3IgYXR0YWNobWVudHMgc3Bl
Y2lmaWVkIGZvciBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBW
ZWN0b3I8R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdUNvbG9yQXR0
YWNobWVudHM7CkBAIC02MCw3ICs2MCw3IEBAIE9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXNjcmlw
dG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BVUmVuZGVyCiAgICAg
ICAgICAgICB8fCAhY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKQogICAgICAg
ICAgICAgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCktPmlzT3V0cHV0
QXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciEiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIGdwdUNvbG9y
QXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
IHsgbWFrZVJlZigqY29sb3JBdHRhY2htZW50LmF0dGFjaG1lbnQtPnRleHR1cmUoKSksIGNvbG9y
QXR0YWNobWVudCB9KTsKICAgICB9CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPEdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yPiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6dHJ5Q3JlYXRlR1BV
UmVuZGVyCiAgICAgICAgICAgICB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVu
dC0+dGV4dHVyZSgpCiAgICAgICAgICAgICB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0
YWNobWVudC0+dGV4dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQg
aW4gR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yIHsgbWFrZVJlZigqZGVwdGhTdGVu
Y2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpKSwgKmRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQgfTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCA0OWY4
MzkwNGVmN2NlOWZiZDViN2M5ZjI0ZGZkYjE4ZDdhM2Q5NThjLi40NTA2ZTU0ODAwZGEzMGQ2NTc5
ZWFlMDM0NTMxMGI4ZjkzNjk0ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgT3B0aW9uYWw8R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I6OnRyeUNyZWF0ZUcKIAogICAgIGlmICghdmVy
dGV4IHx8IChmcmFnbWVudFN0YWdlICYmICFmcmFnbWVudCkpIHsKICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZhbGlkIEdQVVByb2dyYW1tYWJsZVN0YWdlRGVz
Y3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2ViIEdQVSB2YWxpZGF0aW9u
LCBlLmcuIGZhaWwgaWYgY29sb3JTdGF0ZXMgaXMgbGFyZ2VyIHRoYW4gKG1heCBudW1iZXIgb2Yg
c3VwcG9ydGVkIGNvbG9yIHN0YXRlcykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCmluZGV4IGI3M2Fl
ZDc4NGEyYzI4NjZhZTRkMTQ5MDkwYTI5MDAyNzhlNjA2ZTYuLmRjODI4MjdmZjMwNDg2ODJlMDUw
OTI3ODQ4NGM3OTMyNzQ3MGY4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIE9wdGlvbmFsPEdQVVN3YXBDaGFpbkRlc2NyaXB0b3I+IFdlYkdQVVN3YXBDaGFpbkRl
c2NyaXB0b3I6OmFzR1BVU3dhcENoYWluRGVzY3JpCiB7CiAgICAgaWYgKCFkZXZpY2UpIHsKICAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVUNhbnZhc0NvbnRleHQ6OmNvbmZpZ3VyZVN3YXBDaGFpbigp
OiBJbnZhbGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IgeyBtYWtlUmVmKGRldmljZS0+ZGV2aWNlKCkpLCAqdGhpcyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVGcmFtZXIuY3BwCmluZGV4IDc5ZDc5OGI2ZTQ2ZmQ4ZjA3ZWI5Njc4MDc3YjY1
MTgyYjYzNGU5NGYuLjAxZmRmZTAyOWU0NmZjZTg2MmQ1ZTYxNmNmYzQ5NWQ2OWNjNjE0NjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0RGVmbGF0ZUZyYW1lci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBXZWJTb2NrZXRF
eHRlbnNpb25EZWZsYXRlRnJhbWU6OnByb2Nlc3NSZXNwb25zZShjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW4KICAgICBpbnQgd2luZG93Qml0cyA9IDE1OwogICAgIGF1dG8gcGFyYW1ldGVyID0g
c2VydmVyUGFyYW1ldGVycy5maW5kKCJtYXhfd2luZG93X2JpdHMiKTsKICAgICBpZiAocGFyYW1l
dGVyICE9IHNlcnZlclBhcmFtZXRlcnMuZW5kKCkpIHsKLSAgICAgICAgd2luZG93Qml0cyA9IHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4ocGFyYW1ldGVyLT52YWx1ZSkudmFs
dWVPcigwKTsKKyAgICAgICAgd2luZG93Qml0cyA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4ocGFyYW1ldGVyLT52YWx1ZSkudmFsdWVfb3IoMCk7CiAgICAgICAgIGlmICh3
aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUpIHsKICAgICAgICAgICAgIG1fZmFpbHVy
ZVJlYXNvbiA9ICJSZWNlaXZlZCBpbnZhbGlkIG1heF93aW5kb3dfYml0cyBwYXJhbWV0ZXIiX3M7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCmluZGV4IDBh
MWFiZWE4ODNkN2NjZTY0Yzg3ZjNjYTY4NzFlYTZhMjk5NmYwNzAuLjFlNTViODcyNWRlNjEwNmRi
MmRkMDM3NTRhMWI4MGMwYjk4NTgyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OnVwZGF0ZUlmTmVlZGVk
KCkKIAogICAgIGlmIChmcmFtZURhdGEuc3RhZ2VQYXJhbWV0ZXJzLmJvdW5kcy5zaXplKCkgPj0g
TWluaW11bUJvdW5kc1ZlcnRpY2VzKSB7CiAgICAgICAgIC8vIEVhY2ggcG9pbnQgaGFzIHRvIG11
bHRpcGxpZWQgYnkgdGhlIGludmVyc2Ugb2Ygb3JpZ2luT2Zmc2V0LgotICAgICAgICBhdXRvIHRy
YW5zZm9ybSA9IG9yaWdpbk9mZnNldCgpLnJhd1RyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9y
KFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IG9yaWdp
bk9mZnNldCgpLnJhd1RyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKICAgICAgICAgZm9yIChhdXRvJiBwb2ludCA6IGZyYW1lRGF0YS5zdGFnZVBh
cmFtZXRlcnMuYm91bmRzKSB7CiAgICAgICAgICAgICBhdXRvIG1hcHBlZFBvaW50ID0gdHJhbnNm
b3JtLm1hcFBvaW50KHBvaW50KTsKICAgICAgICAgICAgIC8vIFRoZSB5IHZhbHVlIG9mIGVhY2gg
cG9pbnQgTVVTVCBiZSAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZS5jcHAKaW5kZXggNzAwNzFiY2JkMjg5YWYzZTBkNDBiMDg5Nzc3Mzk5ZDE0NjkxY2EzYi4uOWIw
NWY3MGU0NWE4OThkZDM2ZTUxMzQyNmYwZTYwODNhMzg3YWViOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0xMjMsMTIgKzEyMywxMiBAQCBFeGNl
cHRpb25PcjxPcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3NlPj4gV2ViWFJGcmFtZTo6
cG9wdWxhdGVQb3NlKGNvbnN0CiAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBpZiBzcGFjZeKAmXMg
cG9zZSByZWxhdGl2ZSB0byBiYXNlU3BhY2UgaGFzIGJlZW4gZGV0ZXJtaW5lZCBpbiB0aGUgcGFz
dC4KICAgICAgICAgLy8gQW55d2F5IHRoaXMgZW11bGF0aW9uIGlzIHVzdWFsbHkgcHJvdmlkZWQg
YnkgdGhlIHN5c3RlbSBpbiB0aGUgcG9zZSAoZS5nLiBPcGVuWFIpCiAgICAgICAgIC8vIHNvIHdl
IHNob3VsZG4ndCBoaXQgdGhpcyBwYXRoIGluIG1vc3QgWFJQbGF0Zm9ybSBwb3J0cy4KLSAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCB9OwogICAgIH0KIAogICAgIGF1dG8gYmFzZVRyYW5zZm9ybSA9IGJhc2VTcGFjZS5lZmZlY3Rp
dmVPcmlnaW4oKTsKICAgICBpZiAoIWJhc2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCi0gICAg
ICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLmludmVyc2UoKSAq
IHNwYWNlLmVmZmVjdGl2ZU9yaWdpbigpOwogICAgIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiA9IHNw
YWNlLmlzUG9zaXRpb25FbXVsYXRlZCgpIHx8IGJhc2VTcGFjZS5pc1Bvc2l0aW9uRW11bGF0ZWQo
KTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJWaWV3ZXJQb3Nl
Pj4gV2ViWFJGcmFtZTo6Z2V0Vmlld2VyUG9zZShjb25zdCBEb2N1bWVudCYgZAogICAgICAgICAg
ICAgcmV0dXJuIG1hdHJpeDsKICAgICAgICAgfSwgWyZdKGNvbnN0IHN0ZDo6bnVsbHB0cl90Jikg
ewogICAgICAgICAgICAgLy8gVXNlIGFzcGVjdCBwcm9qZWN0aW9uIGZvciBpbmxpbmUgc2Vzc2lv
bnMKLSAgICAgICAgICAgIGRvdWJsZSBmb3YgPSAgbV9zZXNzaW9uLT5yZW5kZXJTdGF0ZSgpLmlu
bGluZVZlcnRpY2FsRmllbGRPZlZpZXcoKS52YWx1ZU9yKHBpT3ZlclR3b0RvdWJsZSk7CisgICAg
ICAgICAgICBkb3VibGUgZm92ID0gIG1fc2Vzc2lvbi0+cmVuZGVyU3RhdGUoKS5pbmxpbmVWZXJ0
aWNhbEZpZWxkT2ZWaWV3KCkudmFsdWVfb3IocGlPdmVyVHdvRG91YmxlKTsKICAgICAgICAgICAg
IGZsb2F0IGFzcGVjdCA9IDE7CiAgICAgICAgICAgICBhdXRvIGxheWVyID0gbV9zZXNzaW9uLT5y
ZW5kZXJTdGF0ZSgpLmJhc2VMYXllcigpOwogICAgICAgICAgICAgaWYgKGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJSZW5kZXJTdGF0ZS5jcHAKaW5kZXgg
MWM4Y2I2NzJmZDExYWVjNmVkMzI2YzAzYzdhNWMwYjY4NmQ5MzNiOS4uOTQzMmE1YWYxOTM4YjQ5
NGIxMWU5Y2JjNmQzZDM5MTQyOTU1OTY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUlJlbmRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSUmVuZGVyU3RhdGUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxXZWJY
UlJlbmRlclN0YXRlPiBXZWJYUlJlbmRlclN0YXRlOjpjcmVhdGUoWFJTZXNzaW9uTW9kZSBtb2Rl
KQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHIvI2luaXRp
YWxpemUtdGhlLXJlbmRlci1zdGF0ZQogICAgIC8vIGRlcHRoTmVhciwgZGVwdGhGYXIgYW5kIGJh
c2VMYXllciBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24KLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlbmRlclN0YXRlKG1vZGUgPT0gWFJTZXNzaW9uTW9kZTo6
SW5saW5lID8gbWFrZU9wdGlvbmFsKHBpT3ZlclR3b0RvdWJsZSkgOiBXVEY6Om51bGxvcHQpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUlJlbmRlclN0YXRlKG1vZGUgPT0gWFJTZXNz
aW9uTW9kZTo6SW5saW5lID8gc3RkOjptYWtlX29wdGlvbmFsKHBpT3ZlclR3b0RvdWJsZSkgOiBz
dGQ6Om51bGxvcHQpKTsKIH0KIAogV2ViWFJSZW5kZXJTdGF0ZTo6V2ViWFJSZW5kZXJTdGF0ZShP
cHRpb25hbDxkb3VibGU+IGlubGluZVZlcnRpY2FsRmllbGRPZlZpZXcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggOTdkMjMyZGQyYjVlZjg1
OWMxYjE5YmIxZmI5M2M1YmVlNGIwOWNmZS4uMDU0ZDlhYmQ5N2ZjYTljNDc5MzQ5MTQzOGFlOTk1
OTY3Zjc2MTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNz
aW9uLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgV2ViWFJTZXNzaW9uOjpkaWRDb21wbGV0
ZVNodXRkb3duKCkKICAgICAvLyBSZXNvbHZlIGVuZCBwcm9taXNlIGZyb20gWFJTZXNzaW9uOjpl
bmQoKQogICAgIGlmIChtX2VuZFByb21pc2UpIHsKICAgICAgICAgbV9lbmRQcm9taXNlLT5yZXNv
bHZlKCk7Ci0gICAgICAgIG1fZW5kUHJvbWlzZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9l
bmRQcm9taXNlID0gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZyb20gaHR0cHM6Ly9p
bW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci8jc2h1dC1kb3duLXRoZS1zZXNzaW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0uY3BwCmluZGV4IDc0MWE2Mzg1
OTU1NjYzMGYzMGE0MDI5MjE4Mjc5ZDdhZjFiOWQxMWYuLjZlM2FiN2MyMTIzZDM0MDQyMDJiZTQx
ZTBkMGVmMGFiNWRiNDRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJTeXN0ZW0uY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgT3B0aW9uYWw8V2ViWFJTeXN0ZW06OlJl
c29sdmVkUmVxdWVzdGVkRmVhdHVyZXM+IFdlYlhSU3lzdGVtOjpyZXNvbHZlUmVxdWVzdGVkRmUK
ICAgICB9OwogCiAgICAgaWYgKCFwYXJzZUZlYXR1cmVzKHJlcXVpcmVkRmVhdHVyZXNXaXRoRGVm
YXVsdEZlYXR1cmVzLCBQYXJzaW5nTW9kZTo6U3RyaWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHBhcnNlRmVhdHVy
ZXMoaW5pdC5vcHRpb25hbEZlYXR1cmVzLCBQYXJzaW5nTW9kZTo6TG9vc2UpOwogICAgIHJldHVy
biByZXNvbHZlZEZlYXR1cmVzOwpAQCAtMzM5LDcgKzMzOSw3IEBAIE9wdGlvbmFsPFdlYlhSU3lz
dGVtOjpGZWF0dXJlTGlzdD4gV2ViWFJTeXN0ZW06OnJlc29sdmVGZWF0dXJlUGVybWlzc2lvbnMo
WFJTZXNzCiAgICAgLy8gIDYuMS4gU2V0IHN0YXR1cydzIHN0YXRlIHRvICJkZW5pZWQiLgogICAg
IC8vICA2LjIuIEFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGlmICghcmVzb2x2ZWRGZWF0dXJlcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIDcuIExldCAoY29uc2VudFJlcXVpcmVkLCBjb25zZW50T3B0aW9uYWwsIGdy
YW50ZWQpIGJlIHRoZSBmaWVsZHMgb2YgcmVzdWx0LgogICAgIC8vIDguIFRoZSB1c2VyIGFnZW50
IE1BWSBhdCB0aGlzIHBvaW50IGFzayB0aGUgdXNlcidzIHBlcm1pc3Npb24gZm9yIHRoZSBjYWxs
aW5nIGFsZ29yaXRobSB0byB1c2UgYW55IG9mIHRoZSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUlN5c3RlbS5oCmluZGV4IDBhYzI0YjVjNmZmNTEwZWMzNGVhNDg5
OTQzMjRhZWZkMzk5NjI5OGMuLjY0NTg1NzRlMDE4NDk1MWFhODAzNDdmMTk4MDM5YWNlMGU4Yjky
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTeXN0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU3lzdGVtLmgKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgcmVxdWVzdEZyYW1lKFBsYXRm
b3JtWFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJikgZmluYWw7CiAgICAgICAgIFZl
Y3RvcjxEZXZpY2U6OlZpZXdEYXRhPiB2aWV3cyhYUlNlc3Npb25Nb2RlKSBjb25zdCBmaW5hbDsK
LSAgICAgICAgT3B0aW9uYWw8UGxhdGZvcm1YUjo6TGF5ZXJIYW5kbGU+IGNyZWF0ZUxheWVyUHJv
amVjdGlvbih1aW50MzJfdCwgdWludDMyX3QsIGJvb2wpIGZpbmFsIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQorICAgICAgICBPcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gY3JlYXRl
TGF5ZXJQcm9qZWN0aW9uKHVpbnQzMl90LCB1aW50MzJfdCwgYm9vbCkgZmluYWwgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiAgICAgICAgIHZvaWQgZGVsZXRlTGF5ZXIoUGxhdGZvcm1YUjo6TGF5
ZXJIYW5kbGUpIGZpbmFsIHsgfQogICAgIH07CiAgICAgRHVtbXlJbmxpbmVEZXZpY2UgbV9kZWZh
dWx0SW5saW5lRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUlZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlZpZXcu
Y3BwCmluZGV4IDIzYzhlZWE0MTUyNzRkMDg1ZDNmOWMzNjcyNjY4MzgxMWUyZDg1MjEuLmZjZTZi
ZjExNDVmZTAzZTBjZDE3NmZkMTcxN2E4OGZlZWM5NTUwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSVmlldy5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgV2ViWFJWaWV3Ojp+
V2ViWFJWaWV3KCkgPSBkZWZhdWx0OwogT3B0aW9uYWw8ZG91YmxlPiBXZWJYUlZpZXc6OnJlY29t
bWVuZGVkVmlld3BvcnRTY2FsZSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIG51bGwgaWYgdGhl
IHN5c3RlbSBkb2VzIG5vdCBpbXBsZW1lbnQgYSBoZXVyaXN0aWMgb3IgbWV0aG9kIGZvciBkZXRl
cm1pbmluZyBhIHJlY29tbWVuZGVkIHNjYWxlLgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdp
dGh1Yi5pby93ZWJ4ci8jZG9tLXhydmlldy1yZXF1ZXN0dmlld3BvcnRzY2FsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvU2Vzc2lvbklELmgKaW5kZXggNmM3YTI2MjI1ODFhMjE2YjBlNmI3MGM3ZGIyZmRhNTNj
ZTg0ZjYyOS4uNWIzNTZhMzFmZmEwZTk1ZmI5OGIzMzQ5OWNhYjUxODA4MWI2MDNiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCkBAIC05OSw3ICs5OSw3IEBAIE9wdGlvbmFsPFNlc3Np
b25JRD4gU2Vzc2lvbklEOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gc2Vzc2lvbklEOwogICAgIGRlY29kZXIgPj4gc2Vzc2lvbklEOwogICAgIGlmICgh
c2Vzc2lvbklEIHx8ICFpc1ZhbGlkU2Vzc2lvbklEVmFsdWUoKnNlc3Npb25JRCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIFNlc3Npb25JRCB7ICpzZXNzaW9uSUQgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL091dHB1dENvbnRleHQubW0KaW5kZXggOTMzNGFh
MTE3NTc3OTE2N2E0Y2YzYmMxNzBjYTZjNzhmNDZlZmMxYS4uMGM5MWY2NWQ2NTQwM2NjZjVjYzI0
ZTM0ODgxMDVmYTE2YmYxMjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9h
dmZvdW5kYXRpb24vT3V0cHV0Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2F2Zm91bmRhdGlvbi9PdXRwdXRDb250ZXh0Lm1tCkBAIC00Nyw3ICs0Nyw3IEBAIE9wdGlvbmFs
PE91dHB1dENvbnRleHQ+JiBPdXRwdXRDb250ZXh0OjpzaGFyZWRBdWRpb1ByZXNlbnRhdGlvbk91
dHB1dENvbnRleHQoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxPcHRpb25hbDxPdXRw
dXRDb250ZXh0Pj4gc2hhcmVkQXVkaW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0ID0gW10gKCkg
LT4gT3B0aW9uYWw8T3V0cHV0Q29udGV4dD4gewogICAgICAgICBpZiAoIVtQQUw6OmdldEFWT3V0
cHV0Q29udGV4dENsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzaGFyZWRBdWRp
b1ByZXNlbnRhdGlvbk91dHB1dENvbnRleHQpXSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICAgICAgQVZPdXRwdXRDb250ZXh0KiBj
b250ZXh0ID0gW2dldEFWT3V0cHV0Q29udGV4dENsYXNzKCkgc2hhcmVkU3lzdGVtQXVkaW9Db250
ZXh0XTsKQEAgLTU1LDcgKzU1LDcgQEAgT3B0aW9uYWw8T3V0cHV0Q29udGV4dD4mIE91dHB1dENv
bnRleHQ6OnNoYXJlZEF1ZGlvUHJlc2VudGF0aW9uT3V0cHV0Q29udGV4dCgpCiAgICAgICAgIGF1
dG8gY29udGV4dCA9IFtnZXRBVk91dHB1dENvbnRleHRDbGFzcygpIHNoYXJlZEF1ZGlvUHJlc2Vu
dGF0aW9uT3V0cHV0Q29udGV4dF07CiAjZW5kaWYKICAgICAgICAgaWYgKCFjb250ZXh0KQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIE91dHB1dENvbnRleHQocmV0YWluUHRyKGNvbnRleHQp
KTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQv
VXRpbGl0aWVzLmgKaW5kZXggNTliZjI0ZDVlYzIzNDE1MzFjYjIzYTcyMWJhZDBlZWY5ZjY5Mzlh
Zi4uMjc0ZTBhYWYxZGZlYjhjNzIxNjE4MDc1YWE3MmJlMDc2YTQxNjUwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaApAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPGludD4gYWVzQWxnb3JpdGhtRm9yS2V5U2l6
ZShzaXplX3Qga2V5U2l6ZSkKICAgICBjYXNlIDI1NjoKICAgICAgICAgcmV0dXJuIEdDUllfQ0lQ
SEVSX0FFUzI1NjsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vdGFzbjEvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3Rhc24xL1V0aWxpdGllcy5jcHAKaW5kZXggYzQzOGU0MjRm
OGMzZWU5YmY3NjM1Y2YwNzZiYWQxM2Q1NTg0ODc3MS4uNDU1ZTA4MzkzZWU1MDM2OGQ3ODQ3ODUy
OTcyOTYyM2Y2MGI4NDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlw
dG8vdGFzbjEvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by90YXNuMS9VdGlsaXRpZXMuY3BwCkBAIC0xMjYsMTggKzEyNiwxOCBAQCBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGVsZW1lbnREYXRhKGFzbjFfbm9kZSByb290LCBjb25zdCBjaGFyKiBlbGVt
ZW50TmFtZSkKICAgICB1bnNpZ25lZCB0eXBlID0gMDsKICAgICBpbnQgcmV0ID0gYXNuMV9yZWFk
X3ZhbHVlX3R5cGUocm9vdCwgZWxlbWVudE5hbWUsIG51bGxwdHIsICZsZW5ndGgsICZ0eXBlKTsK
ICAgICBpZiAocmV0ICE9IEFTTjFfTUVNX0VSUk9SKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHR5cGUgPT0gQVNO
MV9FVFlQRV9CSVRfU1RSSU5HKSB7CiAgICAgICAgIGlmIChsZW5ndGggJSA4KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGxlbmd0aCAvPSA4OwogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KGxlbmd0aCk7CiAgICAgcmV0ID0gYXNuMV9yZWFkX3ZhbHVlKHJvb3QsIGVsZW1lbnROYW1lLCBk
YXRhLmRhdGEoKSwgJmxlbmd0aCk7CiAgICAgaWYgKHJldCAhPSBBU04xX1NVQ0NFU1MpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTE0NywxMiArMTQ3LDEyIEBAIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZW5jb2RlZERhdGEoYXNuMV9ub2RlIHJvb3QsIGNvbnN0IGNoYXIqIGVsZW1l
bnROYW1lKQogICAgIGludCBsZW5ndGggPSAwOwogICAgIGludCByZXQgPSBhc24xX2Rlcl9jb2Rp
bmcocm9vdCwgZWxlbWVudE5hbWUsIG51bGxwdHIsICZsZW5ndGgsIG51bGxwdHIpOwogICAgIGlm
IChyZXQgIT0gQVNOMV9NRU1fRVJST1IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YShs
ZW5ndGgpOwogICAgIHJldCA9IGFzbjFfZGVyX2NvZGluZyhyb290LCBlbGVtZW50TmFtZSwgZGF0
YS5kYXRhKCksICZsZW5ndGgsIG51bGxwdHIpOwogICAgIGlmIChyZXQgIT0gQVNOMV9TVUNDRVNT
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhZmNjNmRiZDJiZTYwOWY0ZmJhMDhhZjkxOTQ3
YWRlOWMyYjFhOWIwLi5lYWI4MDQ1YmE3OGEyNWY0ZjU1MzJiZDI2OTEyZThhNGNiNTEyYmRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAg
LTIwNzYsNyArMjA3Niw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpy
YW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlCiAKICAgICBhdXRvIHNl
YXJjaFJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsK
ICAgICBpZiAoIXNlYXJjaFJhbmdlIHx8IHNlYXJjaFJhbmdlLT5jb2xsYXBzZWQoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gdGFyZ2V0T2Zmc2V0ID0gY2hhcmFjdGVyQ291bnQoeyBzZWFyY2hSYW5nZS0+c3Rh
cnQsIG9yaWdpbmFsUmFuZ2Uuc3RhcnQgfSwgVGV4dEl0ZXJhdG9yRW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4
dCgqc2VhcmNoUmFuZ2UsIG1hdGNoVGV4dCwgeyB9LCB0YXJnZXRPZmZzZXQpOwpAQCAtMjEyNCw3
ICsyMTI0LDcgQEAgc3RhdGljIE5vZGUqIHJlc2V0Tm9kZUFuZE9mZnNldEZvclJlcGxhY2VkTm9k
ZShOb2RlJiByZXBsYWNlZE5vZGUsIGludCYgb2Zmc2V0LAogc3RhdGljIE9wdGlvbmFsPEJvdW5k
YXJ5UG9pbnQ+IGJvdW5kYXJ5UG9pbnQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQsIGJvb2wgaXNTdGFydCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaW50IG9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4ICsgY2hh
cmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICBOb2RlKiBub2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5v
ZGU7CkBAIC0yMTQwLDcgKzIxNDAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4g
Ym91bmRhcnlQb2ludChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZgogICAgICAg
ICBub2RlID0gcmVzZXROb2RlQW5kT2Zmc2V0Rm9yUmVwbGFjZWROb2RlKCpub2RlLCBvZmZzZXQs
IGNoYXJhY3RlckNvdW50KTsKIAogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7IHsg
Km5vZGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpIH0gfTsKIH0KQEAgLTIxNjMsNyAr
MjE2Myw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVu
b3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhCiAgICAgYXV0byBzdGFydCA9IGJvdW5k
YXJ5UG9pbnQoYWxyZWFkeUluT3JkZXIgPyBjaGFyYWN0ZXJPZmZzZXQxIDogY2hhcmFjdGVyT2Zm
c2V0MiwgdHJ1ZSk7CiAgICAgYXV0byBlbmQgPSBib3VuZGFyeVBvaW50KGFscmVhZHlJbk9yZGVy
ID8gY2hhcmFjdGVyT2Zmc2V0MiA6IGNoYXJhY3Rlck9mZnNldDEsIGZhbHNlKTsKICAgICBpZiAo
IXN0YXJ0IHx8ICFlbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyAqc3RhcnQsICogZW5kIH0gfTsKIH0K
IApAQCAtMjQ1MiwxNiArMjQ1MiwxNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENh
Y2hlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcgogT3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykKIHsKICAgICBpZiAo
dmlzaWJsZVBvcy5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxl
UG9zLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgTm9kZSogZG9tTm9kZSA9IGRlZXBQb3MuZGVwcmVj
YXRlZE5vZGUoKTsKICAgICBBU1NFUlQoZG9tTm9kZSk7CiAgICAgaWYgKCFkb21Ob2RlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1M
SW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJ
ZiB0aGUgdmlzaWJsZSBwb3NpdGlvbiBoYXMgYW4gYW5jaG9yIHR5cGUgcmVmZXJyaW5nIHRvIGEg
bm9kZSBvdGhlciB0aGFuIHRoZSBhbmNob3JlZCBub2RlLCB3ZSBzaG91bGQKICAgICAvLyBzZXQg
dGhlIHRleHQgbWFya2VyIGRhdGEgd2l0aCBDaGFyYWN0ZXJPZmZzZXQgc28gdGhhdCB0aGUgb2Zm
c2V0IHdpbGwgY29ycmVzcG9uZCB0byB0aGUgbm9kZS4KQEAgLTI0NzUsNyArMjQ3NSw3IEBAIE9w
dGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWCiAgICAgLy8gZmluZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJp
bGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZQogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9t
Tm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRv
bU5vZGUpOwogCiAgICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2Vz
IG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCkBA
IC0yNTAwLDE1ICsyNTAwLDE1IEBAIE9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENh
Y2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjb25zdCBWCiBPcHRpb25hbDxU
ZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0
aW9uSW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wp
CiB7CiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Pih0ZXh0Q29udHJvbCkuaXNQYXNzd29yZEZpZWxkKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHRleHRDb250cm9sLmRvY3VtZW50KCkuYXhPYmpl
Y3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0
eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZ0ZXh0Q29udHJvbCk7CiAgICAgaWYg
KCFvYmopCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5j
ZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4K
ICAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVjYXVzZSBUZXh0TWFya2Vy
RGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggM2Y3NGU5NWU5MWFkNzlkNTI4MzhhNzBlZDhhZWE3ZDIz
MTBhZGE1Zi4uNWMzYmYyZjE3ZjY4OTdkYjE1ODNjZWRjMzUwNmI5NTk1YWVhODhiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTYyMSw3ICs2
MjEsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdl
ZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVk
Q2hpbGRyZW5DaGFuZ2VkKE5vZGUqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNl
dElzU3luY2hyb25pemluZ1NlbGVjdGlvbihib29sKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnNldFRleHRTZWxlY3Rpb25JbnRlbnQoY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQmKSB7IH0KLWlubGluZSBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFu
Z2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQoraW5saW5lIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENoYXJh
Y3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0
JikgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiBpbmxpbmUgSW50UmVjdCBBWE9iamVjdENhY2hl
OjphYnNvbHV0ZUNhcmV0Qm91bmRzRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpIHsgcmV0dXJuIEludFJlY3QoKTsgfQogaW5saW5lIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChpbnQsIGNvbnN0IEFYQ29yZU9iamVj
dCopIHsgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CiBpbmxpbmUgQ2hhcmFjdGVyT2Zmc2V0
IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wpIHsgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAppbmRleCA1NDM5NTI5YWE3OTYwOTM5ODllYmQ0M2FkYWVlZjg4YzRkZGZmYjI3Li41ZGZk
ZDhkMjNiYTJmNjA5MWZmNGZhZDZmNjEzMzk2YzgxOTQxOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTI4MSwy
MCArMjgxLDIwIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpt
aXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBzCiB7CiAgICAgYXV0byBub2RlID0g
dGhpcy0+bm9kZSgpOwogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZyYW1lKiBmcmFtZSA9IG5v
ZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCF1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEVkaXRvciYgZWRpdG9y
ID0gZnJhbWUtPmVkaXRvcigpOwogCiAgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2Vy
ID0gZWRpdG9yLnRleHRDaGVja2VyKCk7CiAgICAgaWYgKCF0ZXh0Q2hlY2tlcikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IG1pc3NwZWxsaW5nczsKICAgICBjaGVja1RleHRP
ZlBhcmFncmFwaCgqdGV4dENoZWNrZXIsIHN0cmluZ1ZhbHVlKCksIFRleHRDaGVja2luZ1R5cGU6
OlNwZWxsaW5nLCBtaXNzcGVsbGluZ3MsIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSk7
CkBAIC0zMTQsNyArMzE0LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFjY2Vzc2liaWxpdHlP
YmplY3Q6Om1pc3NwZWxsaW5nUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHMKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YmxvY2txdW90ZUxldmVsKCkg
Y29uc3QKQEAgLTUyNiw3ICs1MjYsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQWNjZXNzaWJp
bGl0eU9iamVjdDo6cmFuZ2VPZlN0cmluZ0Nsb3Nlc3RUb1JhbmdlSW5EaXJlY3RpbwogewogICAg
IEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICBib29sIGlzQmFja3dhcmRTZWFyY2ggPSBzZWFyY2hEaXJlY3Rpb24gPT0gQWNjZXNzaWJp
bGl0eVNlYXJjaERpcmVjdGlvbjo6UHJldmlvdXM7CiAgICAgRmluZE9wdGlvbnMgZmluZE9wdGlv
bnMgeyBBdFdvcmRTdGFydHMsIEF0V29yZEVuZHMsIENhc2VJbnNlbnNpdGl2ZSwgU3RhcnRJblNl
bGVjdGlvbiB9OwpAQCAtNTU3LDcgKzU1Nyw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25SYW5nZSgpIGNvbnN0CiB7CiAgICAgYXV0byBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChhdXRvIHJh
bmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmZpcnN0UmFuZ2UoKSkKICAgICAg
ICAgcmV0dXJuICpyYW5nZTsKQEAgLTU5MSw3ICs1OTEsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQWNjZXNzaWJpbGl0eU9iamVjdDo6ZmluZFRleHRSYW5nZShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcwogICAgICAgICBpZiAoZWxlbWVudCgpICYmIGVsZW1lbnQoKS0+aXNUZXh0RmllbGQoKSkg
ewogICAgICAgICAgICAgaWYgKCFmb3VuZC0+c3RhcnRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRP
clNoYWRvd0Rlc2NlbmRhbnRPZihlbGVtZW50KCkpCiAgICAgICAgICAgICAgICAgfHwgIWZvdW5k
LT5lbmRDb250YWluZXIoKS5pc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZihlbGVtZW50
KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZm91
bmQ7CkBAIC0xMTA3LDE3ICsxMTA3LDE3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpyYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4CiB7CiAg
ICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IGdldExlbmd0aEZvclRleHRSYW5nZSgpOwogICAgIGlm
IChyYW5nZS5zdGFydCArIHJhbmdlLmxlbmd0aCA+IHRleHRMZW5ndGgpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gQXZv
aWQgc2V0dGluZyBzZWxlY3Rpb24gdG8gdW5lZGl0YWJsZSBwYXJlbnQgbm9kZSBpbiBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZS4gU2VlIHdlYmtpdC5vcmcvYi8yMDYwOTMuCiAgICAg
aWYgKHJhbmdlLmlzTnVsbCgpICYmICF0ZXh0TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkgewogICAgICAgICBDaGFyYWN0ZXJP
ZmZzZXQgc3RhcnQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9ySW5kZXgocmFuZ2Uuc3RhcnQs
IHRoaXMpOwogICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNoYXJhY3Rlck9m
ZnNldEZvckluZGV4KHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoLCB0aGlzKTsKICAgICAgICAg
cmV0dXJuIGNhY2hlLT5yYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoc3RhcnQsIGVu
ZCk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogVmlzaWJsZVBvc2l0aW9uUmFuZ2UgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlu
ZVJhbmdlRm9yUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24p
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGJkNzFj
ZjBkMzUzNjQwYjI1ZWM3ZTY3NjNlY2JkNjY4MjVlNTE4MTkuLjQ4OTRmODc3MWRjYTUzOWIxNTJm
NmZlZDU3MTA3Y2MwZDFmYTY5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCkBAIC0yMzkzLDcgKzIzOTMsNyBAQCAtIChOU1JhbmdlKV9jb252ZXJ0VG9OU1Jhbmdl
Oihjb25zdCBTaW1wbGVSYW5nZSYpcmFuZ2UKIC0gKE9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29u
dmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKIHsKICAgICBpZiAocmFuZ2UubG9jYXRpb24g
PT0gTlNOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIG91ciBjcml0aWNhbCBhc3N1bXB0aW9uIGlzIHRo
YXQgd2UgYXJlIG9ubHkgY2FsbGVkIGJ5IGlucHV0IG1ldGhvZHMgdGhhdAogICAgIC8vIGNvbmNl
bnRyYXRlIG9uIGEgZ2l2ZW4gYXJlYSBjb250YWluaW5nIHRoZSBzZWxlY3Rpb24KQEAgLTI0MDUs
NyArMjQwNSw3IEBAIC0gKE9wdGlvbmFsPFNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UKICAgICBhdXRvIHNlbGVjdGlvblJvb3QgPSBkb2N1bWVudC0+ZnJhbWUo
KS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGF1
dG8gc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIXNjb3BlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKnNjb3BlKSwgcmFu
Z2UpOwogfQpAQCAtMjc3OCwxMSArMjc3OCwxMSBAQCAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4p
cmFuZ2VGcm9tTWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgd2l0aFRleHQ6KE5TU3RyaW5nCiB7
CiAgICAgYXV0byBvcmlnaW5hbFJhbmdlID0gW3NlbGYgcmFuZ2VGb3JUZXh0TWFya2VyczptYXJr
ZXJzXTsKICAgICBpZiAoIW9yaWdpbmFsUmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgIGlm
ICghY2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIGNhY2hlLT5yYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKCpvcmlnaW5hbFJhbmdlLCB0ZXh0KTsKIH0KQEAgLTI4NTEsMTcgKzI4NTEsMTcgQEAg
LSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNoYXJhY3Rl
ck9mZnNldDooQ2hhcmFjdGVyT2Zmc2UKIC0gKE9wdGlvbmFsPFNpbXBsZVJhbmdlPilyYW5nZUZv
clRleHRNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMKIHsKICAgICBpZiAoW3RleHRNYXJr
ZXJzIGNvdW50XSAhPSAyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
ICpzdGFydE1hcmtlciA9IFt0ZXh0TWFya2VycyBvYmplY3RBdEluZGV4OjBdOwogICAgIFdlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyICplbmRNYXJrZXIgPSBbdGV4dE1hcmtlcnMgb2JqZWN0QXRJ
bmRleDoxXTsKICAgICAKICAgICBpZiAoIVtzdGFydE1hcmtlciBpc0tpbmRPZkNsYXNzOltXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBjbGFzc11dIHx8ICFbZW5kTWFya2VyIGlzS2luZE9mQ2xh
c3M6W1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQVhP
YmplY3RDYWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
OwogICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0Q2hh
cmFjdGVyT2Zmc2V0ID0gW3N0YXJ0TWFya2VyIGNoYXJhY3Rlck9mZnNldF07CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGVuZENoYXJhY3Rlck9mZnNldCA9IFtlbmRNYXJrZXIgY2hhcmFjdGVyT2Zmc2V0
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggYWU1YzNkOTE1ZDBlZDUxNGI2MjI4
Yzc4ZDE4YTlhMzY0MzBlMTU2OC4uZDY0NjcwNjFjNjVkNDg3Njg1MGJlMWFjZGYyMTc0YTM4MjMw
ZjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTk3MCw3ICs5NzAsNyBAQCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9iamVjdDo6cmFuZ2VGb3JQbGFpblRleHRS
YW5nZShjb25zdCBQbGFpblRleHRSYQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgYXV0byogYXhPYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKLSAgICByZXR1cm4gYXhP
YmplY3QgPyBheE9iamVjdC0+cmFuZ2VGb3JQbGFpblRleHRSYW5nZShheFJhbmdlKSA6IFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gYXhPYmplY3QgPyBheE9iamVjdC0+cmFuZ2VGb3JQbGFpblRl
eHRSYW5nZShheFJhbmdlKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIEFYSXNvbGF0ZWRP
YmplY3Q6OnN0cmluZ0ZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgY29uc3QKQEAg
LTExNDYsNyArMTE0Niw3IEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWElzb2xhdGVkT2JqZWN0
OjptaXNzcGVsbGluZ1JhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvKiBheE9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVj
dCgpOwotICAgIHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT5taXNzcGVsbGluZ1JhbmdlKHJh
bmdlLCBkaXJlY3Rpb24pIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBheE9iamVjdCA/IGF4
T2JqZWN0LT5taXNzcGVsbGluZ1JhbmdlKHJhbmdlLCBkaXJlY3Rpb24pIDogc3RkOjpudWxsb3B0
OwogfQogCiBGbG9hdFJlY3QgQVhJc29sYXRlZE9iamVjdDo6cmVsYXRpdmVGcmFtZSgpIGNvbnN0
CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhJc29sYXRlZE9i
amVjdDo6ZWxlbWVudFJhbmdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIGF1dG8qIGF4T2JqZWN0ID0gYXNzb2NpYXRlZEFYT2JqZWN0KCk7Ci0gICAgcmV0dXJu
IGF4T2JqZWN0ID8gYXhPYmplY3QtPmVsZW1lbnRSYW5nZSgpIDogV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBheE9iamVjdCA/IGF4T2JqZWN0LT5lbGVtZW50UmFuZ2UoKSA6IHN0ZDo6bnVsbG9w
dDsKIH0KIAogU3RyaW5nIEFYSXNvbGF0ZWRPYmplY3Q6OnNlbGVjdGVkVGV4dCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hl
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1h
Yy5tbQppbmRleCAzY2Y0YTJhOGIyNjMxMTJhYWRiZGFmZWRkMDI5OWMyZTQ0MWNkMGI2Li5jODhh
M2Q2NjEzMzZhNWRlMWUwZjE5NDU4ZTM4YzAzMjQyNzY3MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTc2NSwx
MiArNzY1LDEyIEBAIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5n
ZShBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICBpZiAoIWNhY2hlIHx8ICF0ZXh0TWFya2VyUmFuZ2UpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHN0YXJ0VGV4dE1hcmtlciA9IEFYVGV4dE1hcmtlclJhbmdlU3RhcnQodGV4dE1hcmtl
clJhbmdlKTsKICAgICBhdXRvIGVuZFRleHRNYXJrZXIgPSBBWFRleHRNYXJrZXJSYW5nZUVuZCh0
ZXh0TWFya2VyUmFuZ2UpOwogICAgIGlmICghc3RhcnRUZXh0TWFya2VyIHx8ICFlbmRUZXh0TWFy
a2VyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0Q2hhcmFjdGVyT2Zmc2V0ID0gY2hh
cmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgc3RhcnRUZXh0TWFya2VyLmdldCgpKTsK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kQ2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0
Rm9yVGV4dE1hcmtlcihjYWNoZSwgZW5kVGV4dE1hcmtlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggNDQ4NTg3ZGE4YmM4YjQ1NmY1ZjFjZGY4
M2EyYmM2ZWM4Yjk3Yjk2Ny4uYWRjNzQwNTg1ZTkyMWUwMWIyZWQ5OGY1Y2Q2MGE3YjFhZjk1YzU5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtNjYxLDcg
KzY2MSw3IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFy
Y2hLZXlGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1CiBzdGF0aWMgT3B0aW9uYWw8QWNjZXNz
aWJpbGl0eVNlYXJjaEtleT4gbWFrZVZlY3RvckVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVNl
YXJjaEtleSosIGlkIGFycmF5RWxlbWVudCkKIHsKICAgICBpZiAoIVthcnJheUVsZW1lbnQgaXNL
aW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgeyBhY2Nlc3NpYmls
aXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGFycmF5RWxlbWVudCkgfSB9OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCmluZGV4IDcyYTllZjFiNTFjZmE3
YmUwNGU3YzliNWM2MzhiMTg0MjQwNjU0MjIuLmM5ZThkZjFmY2Q1ODdlOWExYTI4MDJjZjg0NDI4
OTViMjlkMWJjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25FZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZl
Y3QuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEJhc2ljRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVj
dDo6Z2V0QmFzaWNUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUaW1lKSBjCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgdGhlIGxvY2FsIHRpbWUgaXMgdW5yZXNvbHZlZC4KICAgICAgICAgaWYg
KG1fYW5pbWF0aW9uKQogICAgICAgICAgICAgcmV0dXJuIG1fYW5pbWF0aW9uLT5jdXJyZW50VGlt
ZShzdGFydFRpbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0oKTsKIAogICAgIGF1dG8gcGhhc2UgPSBbdGhpcywgbG9j
YWxUaW1lXSgpIC0+IEFuaW1hdGlvbkVmZmVjdFBoYXNlIHsKQEAgLTEzNSw3ICsxMzUsNyBAQCBC
YXNpY0VmZmVjdFRpbWluZyBBbmltYXRpb25FZmZlY3Q6OmdldEJhc2ljVGltaW5nKE9wdGlvbmFs
PFNlY29uZHM+IHN0YXJ0VGltZSkgYwogICAgICAgICAgICAgaWYgKG1fZmlsbCA9PSBGaWxsTW9k
ZTo6QmFja3dhcmRzIHx8IG1fZmlsbCA9PSBGaWxsTW9kZTo6Qm90aCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYXgoKmxvY2FsVGltZSAtIG1fZGVsYXksIDBfcyk7CiAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UsIHJldHVybiBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIHRoZSBhbmltYXRpb24gZWZmZWN0IGlzIGlu
IHRoZSBhY3RpdmUgcGhhc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgbG9jYWwg
dGltZSAtIHN0YXJ0IGRlbGF5LgpAQCAtMTUwLDExICsxNTAsMTEgQEAgQmFzaWNFZmZlY3RUaW1p
bmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFy
dFRpbWUpIGMKICAgICAgICAgICAgIGlmIChtX2ZpbGwgPT0gRmlsbE1vZGU6OkZvcndhcmRzIHx8
IG1fZmlsbCA9PSBGaWxsTW9kZTo6Qm90aCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YXgoc3RkOjptaW4oKmxvY2FsVGltZSAtIG1fZGVsYXksIG1fYWN0aXZlRHVyYXRpb24pLCAwX3Mp
OwogICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0aW1lIHZh
bHVlLgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdGhlcndpc2UgKHRoZSBs
b2NhbCB0aW1lIGlzIHVucmVzb2x2ZWQpLCByZXR1cm4gYW4gdW5yZXNvbHZlZCB0aW1lIHZhbHVl
LgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0oKTsKIAogICAgIHJldHVybiB7IGxvY2FsVGltZSwgYWN0aXZlVGltZSwgbV9l
bmRUaW1lLCBtX2FjdGl2ZUR1cmF0aW9uLCBwaGFzZSB9OwpAQCAtMTg1LDcgKzE4NSw3IEBAIENv
bXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0
aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAKICAgICAgICAgLy8gMS4gSWYgdGhlIGFjdGl2ZSB0aW1l
IGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJlc29sdmVkLgogICAgICAgICBpZiAoIWFjdGl2ZVRp
bWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAyLiBDYWxjdWxhdGUgYW4gaW5pdGlhbCB2YWx1
ZSBmb3Igb3ZlcmFsbCBwcm9ncmVzcyBiYXNlZCBvbiB0aGUgZmlyc3QgbWF0Y2hpbmcgY29uZGl0
aW9uIGZyb20gYmVsb3csCiAgICAgICAgIGRvdWJsZSBvdmVyYWxsUHJvZ3Jlc3M7CkBAIC0yMTQs
NyArMjE0LDcgQEAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5pbWF0aW9uRWZmZWN0OjpnZXRDb21w
dXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFQKIAogICAgICAgICAvLyAxLiBJZiB0
aGUgb3ZlcmFsbCBwcm9ncmVzcyBpcyB1bnJlc29sdmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KICAg
ICAgICAgaWYgKCFvdmVyYWxsUHJvZ3Jlc3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAyLiBJ
ZiBvdmVyYWxsIHByb2dyZXNzIGlzIGluZmluaXR5LCBsZXQgdGhlIHNpbXBsZSBpdGVyYXRpb24g
cHJvZ3Jlc3MgYmUgaXRlcmF0aW9uIHN0YXJ0ICUgMS4wLAogICAgICAgICAvLyBvdGhlcndpc2Us
IGxldCB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9ncmVzcyBiZSBvdmVyYWxsIHByb2dyZXNzICUg
MS4wLgpAQCAtMjQxLDcgKzI0MSw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVm
ZmVjdDo6Z2V0Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAKICAgICAg
ICAgLy8gMS4gSWYgdGhlIGFjdGl2ZSB0aW1lIGlzIHVucmVzb2x2ZWQsIHJldHVybiB1bnJlc29s
dmVkLgogICAgICAgICBpZiAoIWFjdGl2ZVRpbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyAy
LiBJZiB0aGUgYW5pbWF0aW9uIGVmZmVjdCBpcyBpbiB0aGUgYWZ0ZXIgcGhhc2UgYW5kIHRoZSBp
dGVyYXRpb24gY291bnQgaXMgaW5maW5pdHksIHJldHVybiBpbmZpbml0eS4KICAgICAgICAgaWYg
KHBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpBZnRlciAmJiBzdGQ6OmlzaW5mKG1faXRl
cmF0aW9ucykpCkBAIC0yOTAsNyArMjkwLDcgQEAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgQW5pbWF0
aW9uRWZmZWN0OjpnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiBzdGFydFQKIAog
ICAgICAgICAvLyAxLiBJZiB0aGUgc2ltcGxlIGl0ZXJhdGlvbiBwcm9ncmVzcyBpcyB1bnJlc29s
dmVkLCByZXR1cm4gdW5yZXNvbHZlZC4KICAgICAgICAgaWYgKCFzaW1wbGVJdGVyYXRpb25Qcm9n
cmVzcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDIuIENhbGN1bGF0ZSB0aGUgY3VycmVudCBk
aXJlY3Rpb24gKHdlIGltcGxlbWVudCB0aGlzIGFzIGEgc2VwYXJhdGUgbWV0aG9kKS4KIApAQCAt
MzEwLDcgKzMxMCw3IEBAIENvbXB1dGVkRWZmZWN0VGltaW5nIEFuaW1hdGlvbkVmZmVjdDo6Z2V0
Q29tcHV0ZWRUaW1pbmcoT3B0aW9uYWw8U2Vjb25kcz4gc3RhcnRUCiAgICAgICAgIC8vCiAgICAg
ICAgIC8vIDEuIElmIHRoZSBkaXJlY3RlZCBwcm9ncmVzcyBpcyB1bnJlc29sdmVkLCByZXR1cm4g
dW5yZXNvbHZlZC4KICAgICAgICAgaWYgKCFkaXJlY3RlZFByb2dyZXNzKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgaWYgKGF1dG8gaXRlcmF0aW9uRHVyYXRpb24gPSBtX2l0ZXJhdGlvbkR1cmF0aW9u
LnNlY29uZHMoKSkgewogICAgICAgICAgICAgYm9vbCBiZWZvcmUgPSBmYWxzZTsKQEAgLTU0NCw3
ICs1NDQsNyBAQCB2b2lkIEFuaW1hdGlvbkVmZmVjdDo6c2V0VGltaW5nRnVuY3Rpb24oY29uc3Qg
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiYgdGltaW5nRnVuYwogT3B0aW9uYWw8ZG91YmxlPiBBbmlt
YXRpb25FZmZlY3Q6OnByb2dyZXNzVW50aWxOZXh0U3RlcChkb3VibGUgaXRlcmF0aW9uUHJvZ3Jl
c3MpIGNvbnN0CiB7CiAgICAgaWYgKCFpczxTdGVwc1RpbWluZ0Z1bmN0aW9uPihtX3RpbWluZ0Z1
bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbnVtYmVyT2ZTdGVwcyA9IGRvd25jYXN0PFN0ZXBzVGlt
aW5nRnVuY3Rpb24+KCptX3RpbWluZ0Z1bmN0aW9uKS5udW1iZXJPZlN0ZXBzKCk7CiAgICAgYXV0
byBuZXh0U3RlcFByb2dyZXNzID0gY2VpbChpdGVyYXRpb25Qcm9ncmVzcyAqIG51bWJlck9mU3Rl
cHMpIC8gbnVtYmVyT2ZTdGVwczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9BbmltYXRpb25FZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25F
ZmZlY3QuaAppbmRleCBmZGRjODY3MmZmNTBlNWQzN2YwZTNkYmM2MWI0MTUzNTBlNjMzMWZhLi5h
MDJkMjYyOWNjYmI5Mjk3NDEzNDJhY2Q3ZGExMGExNDhjNWM3MGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5oCkBAIC01NSwxMyArNTUsMTMgQEAgcHVibGlj
OgogCiAgICAgRWZmZWN0VGltaW5nIGdldEJpbmRpbmdzVGltaW5nKCkgY29uc3Q7CiAgICAgRWZm
ZWN0VGltaW5nIGdldFRpbWluZygpIGNvbnN0OwotICAgIEJhc2ljRWZmZWN0VGltaW5nIGdldEJh
c2ljVGltaW5nKE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBC
YXNpY0VmZmVjdFRpbWluZyBnZXRCYXNpY1RpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7CiAgICAgQ29tcHV0ZWRFZmZlY3RUaW1pbmcgZ2V0QmluZGluZ3NDb21w
dXRlZFRpbWluZygpIGNvbnN0OwotICAgIENvbXB1dGVkRWZmZWN0VGltaW5nIGdldENvbXB1dGVk
VGltaW5nKE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBDb21w
dXRlZEVmZmVjdFRpbWluZyBnZXRDb21wdXRlZFRpbWluZyhPcHRpb25hbDxTZWNvbmRzPiA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYmluZGluZ3NVcGRhdGVU
aW1pbmcoT3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiB1cGRhdGVUaW1pbmcoT3B0aW9uYWw8T3B0aW9uYWxFZmZlY3RUaW1pbmc+KTsKIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxs
b3B0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5KFJlbmRlclN0eWxlJiB0YXJnZXRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRTdHlsZSwgT3B0aW9uYWw8U2Vjb25k
cz4gPSBzdGQ6Om51bGxvcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRGlkVGljaygpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0aW9uRGlkUGxheSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25QbGF5YmFja0V2ZW50LmNwcAppbmRleCA4MjlhM2JkYTNkODgzZGY4
NTc3MTA0ZmMyZTg1OTBlYTkyY2IxMThmLi5hMjY3MGQ3OTIwOTY4YzBhMjU0MWQ3NmY2MWIyMDAz
ZTQ1YTg0MzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
UGxheWJhY2tFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlv
blBsYXliYWNrRXZlbnQuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgQW5pbWF0aW9uUGxheWJhY2tF
dmVudDo6QW5pbWF0aW9uUGxheWJhY2tFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBjb25z
dCBBbmkKICAgICBpZiAoaW5pdGlhbGl6ZXIuY3VycmVudFRpbWUpCiAgICAgICAgIG1fY3VycmVu
dFRpbWUgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKCppbml0aWFsaXplci5jdXJyZW50VGlt
ZSk7CiAgICAgZWxzZQotICAgICAgICBtX2N1cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2N1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGluaXRpYWxpemVy
LnRpbWVsaW5lVGltZSkKICAgICAgICAgbV90aW1lbGluZVRpbWUgPSBTZWNvbmRzOjpmcm9tTWls
bGlzZWNvbmRzKCppbml0aWFsaXplci50aW1lbGluZVRpbWUpOwogICAgIGVsc2UKLSAgICAgICAg
bV90aW1lbGluZVRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fdGltZWxpbmVUaW1lID0g
c3RkOjpudWxsb3B0OwogfQogCiBBbmltYXRpb25QbGF5YmFja0V2ZW50OjpBbmltYXRpb25QbGF5
YmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIE9wdGlvbmFsPFNlY29uZHM+IGN1cnJl
bnRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUsIFdlYkFuaW1hdGlvbiogYW5p
bWF0aW9uKQpAQCAtNTgsMTQgKzU4LDE0IEBAIEFuaW1hdGlvblBsYXliYWNrRXZlbnQ6On5Bbmlt
YXRpb25QbGF5YmFja0V2ZW50KCkgPSBkZWZhdWx0OwogT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRp
b25QbGF5YmFja0V2ZW50OjpiaW5kaW5nc0N1cnJlbnRUaW1lKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fY3VycmVudFRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElU
aW1lKG1fY3VycmVudFRpbWUudmFsdWUoKSk7CiB9CiAKIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0
aW9uUGxheWJhY2tFdmVudDo6YmluZGluZ3NUaW1lbGluZVRpbWUoKSBjb25zdAogewogICAgIGlm
ICghdGltZWxpbmVUaW1lKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNB
UElUaW1lKHRpbWVsaW5lVGltZSgpLnZhbHVlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAppbmRleCBhZWYzMWQzMDFlNzU4MGFlMjRj
ZDViNzZhMmIxNDBjNmJiYjg1NTljLi41MDI3NDRkZmRiMjQ2YTFmNjQ0MWZiMWM3ZjFiYjllZDlk
YzQ5MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGlu
ZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgT3B0aW9uYWw8ZG91YmxlPiBBbmltYXRpb25UaW1lbGlu
ZTo6YmluZGluZ3NDdXJyZW50VGltZSgpCiB7CiAgICAgYXV0byB0aW1lID0gY3VycmVudFRpbWUo
KTsKICAgICBpZiAoIXRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHNlY29uZHNUb1dlYkFuaW1hdGlvbnNB
UElUaW1lKCp0aW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMzlkOTEzNDE5M2NhY2MxNTA4ZjU5Y2Y0YmU1YTJm
MTZkNjllMDIyOS4uODUxOWJiNmI5NTM2YmNiNmZiNTQyNTA0NzdjNDFiMTVkMzJmOTk1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3Bw
CkBAIC0yMDI5LDcgKzIwMjksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIEF1dG9Q
cm9wZXJ0eVdyYXBwZXIgZmluYWwgOiBwdWJsaWMgUHJvcGVydHlXcmFwcGVyPFQ+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBdXRvUHJvcGVydHlXcmFwcGVy
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFQgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0
LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCksIGJvb2wgKFJlbmRlclN0eWxlOjoqYXV0
b0dldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OiphdXRvU2V0dGVyKSgpLCBPcHRp
b25hbDxUPiBtaW5WYWx1ZSA9IFdURjo6bnVsbG9wdCkKKyAgICBBdXRvUHJvcGVydHlXcmFwcGVy
KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFQgKFJlbmRlclN0eWxlOjoqZ2V0dGVyKSgpIGNvbnN0
LCB2b2lkIChSZW5kZXJTdHlsZTo6KnNldHRlcikoVCksIGJvb2wgKFJlbmRlclN0eWxlOjoqYXV0
b0dldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OiphdXRvU2V0dGVyKSgpLCBPcHRp
b25hbDxUPiBtaW5WYWx1ZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBQcm9wZXJ0eVdyYXBw
ZXI8VD4ocHJvcGVydHksIGdldHRlciwgc2V0dGVyKQogICAgICAgICAsIG1fYXV0b0dldHRlcihh
dXRvR2V0dGVyKQogICAgICAgICAsIG1fYXV0b1NldHRlcihhdXRvU2V0dGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggN2E2
NDRkM2NhZDJhOTkwMjczY2ZhYWMwYTdlMmJlNmE4OTMwN2JhOC4uNzI1ZThmYmFhMGIxODYzMzg2
MzMxMGYyOTdmMjhlOTkwMTEzZTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNvbnN0IE9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQo
KSBjb25zdAogewogICAgIGlmIChtX293bmluZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBTdHls
ZWFibGUoKm1fb3duaW5nRWxlbWVudC5nZXQoKSwgbV9vd25pbmdQc2V1ZG9JZCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKCkKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIERlY2xh
cmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVlRE9NRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBTZWNvbmRzCiAKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJ
VGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGF1dG8gcHNldWRvSWQgPSBwc2V1ZG9JZEFz
U3RyaW5nKG1fb3duaW5nUHNldWRvSWQpOwotICAgIGF1dG8gdGltZWxpbmVUaW1lID0gdGltZWxp
bmUoKSA/IHRpbWVsaW5lKCktPmN1cnJlbnRUaW1lKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0
byB0aW1lbGluZVRpbWUgPSB0aW1lbGluZSgpID8gdGltZWxpbmUoKS0+Y3VycmVudFRpbWUoKSA6
IHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGV2ZW50ID0gY3JlYXRlRXZlbnQoZXZlbnRUeXBlLCB0
aW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KG1fb3du
aW5nRWxlbWVudC5nZXQoKSk7CiAgICAgZW5xdWV1ZUFuaW1hdGlvbkV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApp
bmRleCBhZjNhYzJjNjQ5YjQyMjk3MTJiMWExMDg5ZGUyMzc4YTBkMzEyODhhLi40OTE0NDExOGUy
N2I3MTQ3Y2I5ZmQ5MGNhNDliZjBiMzQzNzU2NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgT3B0aW9uYWw8
U2Vjb25kcz4gRG9jdW1lbnRUaW1lbGluZTo6Y3VycmVudFRpbWUoKQogICAgIGlmIChhdXRvKiBj
b250cm9sbGVyID0gdGhpcy0+Y29udHJvbGxlcigpKSB7CiAgICAgICAgIGlmIChhdXRvIGN1cnJl
bnRUaW1lID0gY29udHJvbGxlci0+Y3VycmVudFRpbWUoKSkKICAgICAgICAgICAgIHJldHVybiAq
Y3VycmVudFRpbWUgLSBtX29yaWdpblRpbWU7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVybiBBbmltYXRp
b25UaW1lbGluZTo6Y3VycmVudFRpbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKaW5kZXggY2IyNmM3
YmQ3ZTQ0NDIzNjVlNTMxODIzNWNlNzlmYzIwNDY2MmVmMi4uYmY5MmNjNzA0Y2Y0Yzc0YjY5ZTc5
N2UzMmYzMDMxYmZkZmIwNmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBA
QCB2b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAg
ICAgaWYgKCFtX2lzU3VzcGVuZGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NhY2hlZEN1
cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgIG1fY2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CiAKQEAgLTIxNyw3ICsyMTcs
NyBAQCBSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
OjpsaXZlQ3VycmVudFRpbWUoKSBjb25zdAogT3B0aW9uYWw8U2Vjb25kcz4gRG9jdW1lbnRUaW1l
bGluZXNDb250cm9sbGVyOjpjdXJyZW50VGltZSgpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50LmRv
bVdpbmRvdygpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2NhY2hlZEN1cnJlbnRUaW1lKQogICAgICAgICBj
YWNoZUN1cnJlbnRUaW1lKGxpdmVDdXJyZW50VGltZSgpKTsKQEAgLTI0OSw3ICsyNDksNyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjo6bWF5YmVDbGVhckNhY2hlZEN1cnJlbnRU
aW1lKCkKICAgICAvLyB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUgYSBjb25zaXN0ZW50IGN1cnJl
bnQgdGltZSByZXBvcnRlZCBmb3IgYWxsIHdvcmsgaGFwcGVuaW5nIGluIGEgZ2l2ZW4KICAgICAv
LyBKUyBmcmFtZSBvciB0aHJvdWdob3V0IHVwZGF0aW5nIGFuaW1hdGlvbnMgaW4gV2ViQ29yZS4K
ICAgICBpZiAoIW1faXNTdXNwZW5kZWQgJiYgIW1fd2FpdGluZ09uVk1JZGxlICYmICFtX2N1cnJl
bnRUaW1lQ2xlYXJpbmdUYXNrUXVldWUuaGFzUGVuZGluZ1Rhc2tzKCkpCi0gICAgICAgIG1fY2Fj
aGVkQ3VycmVudFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fY2FjaGVkQ3VycmVudFRp
bWUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDdkMTIwMTBlNjFhNDg5
YWMwNjhmZTA2OTlkYmRiMzg1MDNmNzViOWUuLjU3MWYwMzViMjZjYzAzODI1ZDZlMjkxYWQ3Mzdj
NDIyMDIzYzQ2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4g
cHJvY2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYKICAgICBlbHNl
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKICAgICAgICAgb2Zmc2V0cy5hcHBlbmQoV1RGOjpn
ZXQ8ZG91YmxlPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQp
KTsKICAgICBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90Pihw
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQotICAgICAgICBv
ZmZzZXRzLmFwcGVuZChXVEY6Om51bGxvcHQpOworICAgICAgICBvZmZzZXRzLmFwcGVuZChzdGQ6
Om51bGxvcHQpOwogCiAgICAgLy8gNi4gQXNzaWduIGVhY2ggdmFsdWUgaW4gb2Zmc2V0cyB0byB0
aGUga2V5ZnJhbWUgb2Zmc2V0IG9mIHRoZSBrZXlmcmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcgcG9z
aXRpb24gaW4gcHJvcGVydHkga2V5ZnJhbWVzIHVudGlsIHRoZSBlbmQgb2YgZWl0aGVyIHNlcXVl
bmNlIGlzIHJlYWNoZWQuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvZmZzZXRzLnNpemUo
KSAmJiBpIDwgcGFyc2VkS2V5ZnJhbWVzLnNpemUoKTsgKytpKQpAQCAtMTE1Miw3ICsxMTUyLDcg
QEAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0
U3R5bGVhYmxlKCkgY29uc3QKIHsKICAgICBpZiAobV90YXJnZXQpCiAgICAgICAgIHJldHVybiBT
dHlsZWFibGUoKm1fdGFyZ2V0LCBtX3BzZXVkb0lkKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OnRh
cmdldHNQc2V1ZG9FbGVtZW50KCkgY29uc3QKQEAgLTE0NjksNyArMTQ2OSw3IEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUoUmVuZGVyU3R5bGUmIHRh
cmdldFN0eWxlLCBkb3ViCiAgICAgICAgIC8vICAgIG9mZnNldCBvZiAwLCBhIHByb3BlcnR5IHZh
bHVlIHNldCB0byB0aGUgbmV1dHJhbCB2YWx1ZSBmb3IgY29tcG9zaXRpb24sIGFuZCBhIGNvbXBv
c2l0ZSBvcGVyYXRpb24gb2YgYWRkLCBhbmQgcHJlcGVuZCBpdCB0byB0aGUgYmVnaW5uaW5nIG9m
CiAgICAgICAgIC8vICAgIHByb3BlcnR5LXNwZWNpZmljIGtleWZyYW1lcy4KICAgICAgICAgaWYg
KCFudW1iZXJPZktleWZyYW1lc1dpdGhaZXJvT2Zmc2V0KSB7Ci0gICAgICAgICAgICBwcm9wZXJ0
eVNwZWNpZmljS2V5ZnJhbWVzLmluc2VydCgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
cHJvcGVydHlTcGVjaWZpY0tleWZyYW1lcy5pbnNlcnQoMCwgc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgICAgIG51bWJlck9mS2V5ZnJhbWVzV2l0aFplcm9PZmZzZXQgPSAxOwogICAgICAgICB9CiAK
QEAgLTE0NzcsNyArMTQ3Nyw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGVkUHJv
cGVydGllc0luU3R5bGUoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBkb3ViCiAgICAgICAgIC8v
ICAgIGtleWZyYW1lIG9mZnNldCBvZiAxLCBhIHByb3BlcnR5IHZhbHVlIHNldCB0byB0aGUgbmV1
dHJhbCB2YWx1ZSBmb3IgY29tcG9zaXRpb24sIGFuZCBhIGNvbXBvc2l0ZSBvcGVyYXRpb24gb2Yg
YWRkLCBhbmQgYXBwZW5kIGl0IHRvIHRoZSBlbmQgb2YKICAgICAgICAgLy8gICAgcHJvcGVydHkt
c3BlY2lmaWMga2V5ZnJhbWVzLgogICAgICAgICBpZiAoIW51bWJlck9mS2V5ZnJhbWVzV2l0aE9u
ZU9mZnNldCkgewotICAgICAgICAgICAgcHJvcGVydHlTcGVjaWZpY0tleWZyYW1lcy5hcHBlbmQo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHByb3BlcnR5U3BlY2lmaWNLZXlmcmFtZXMuYXBw
ZW5kKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBudW1iZXJPZktleWZyYW1lc1dpdGhPbmVP
ZmZzZXQgPSAxOwogICAgICAgICB9CiAKQEAgLTE3MzEsNyArMTczMSw3IEBAIE9wdGlvblNldDxB
Y2NlbGVyYXRlZEFjdGlvbkFwcGxpY2F0aW9uUmVzdWx0PiBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQ
ZW5kaW5nQWNjZWxlCiAgICAgbV9wZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zLmNsZWFyKCk7CiAK
ICAgICAvLyBUbyBzaW1wbGlmeSB0aGUgY29kZSB3ZSB1c2UgYSBkZWZhdWx0IG9mIDBzIGZvciBh
biB1bnJlc29sdmVkIGN1cnJlbnQgdGltZSBzaW5jZSBmb3IgYSBTdG9wIGFjdGlvbiB0aGF0IGlz
IGFjY2VwdGFibGUuCi0gICAgYXV0byB0aW1lT2Zmc2V0ID0gYW5pbWF0aW9uKCktPmN1cnJlbnRU
aW1lKCkudmFsdWVPcigwX3MpLnNlY29uZHMoKSAtIGRlbGF5KCkuc2Vjb25kcygpOworICAgIGF1
dG8gdGltZU9mZnNldCA9IGFuaW1hdGlvbigpLT5jdXJyZW50VGltZSgpLnZhbHVlX29yKDBfcyku
c2Vjb25kcygpIC0gZGVsYXkoKS5zZWNvbmRzKCk7CiAKICAgICBhdXRvIHN0YXJ0QW5pbWF0aW9u
ID0gWyZdKCkgLT4gUnVubmluZ0FjY2VsZXJhdGVkIHsKICAgICAgICAgaWYgKG1fcnVubmluZ0Fj
Y2VsZXJhdGVkID09IFJ1bm5pbmdBY2NlbGVyYXRlZDo6WWVzKQpAQCAtMjAwNSwxNCArMjAwNSwx
NCBAQCBPcHRpb25hbDxkb3VibGU+IEtleWZyYW1lRWZmZWN0Ojpwcm9ncmVzc1VudGlsTmV4dFN0
ZXAoZG91YmxlIGl0ZXJhdGlvblByb2dyZXNzKQogICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7CiAK
ICAgICBpZiAoIWlzPExpbmVhclRpbWluZ0Z1bmN0aW9uPih0aW1pbmdGdW5jdGlvbigpKSB8fCAh
bV9zb21lS2V5ZnJhbWVzVXNlU3RlcHNUaW1pbmdGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChtX2Js
ZW5kaW5nS2V5ZnJhbWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHJvZ3Jlc3NVbnRpbE5l
eHRTdGVwSW5JbnRlcnZhbCA9IFtpdGVyYXRpb25Qcm9ncmVzc10oZG91YmxlIGludGVydmFsU3Rh
cnRQcm9ncmVzcywgZG91YmxlIGludGVydmFsRW5kUHJvZ3Jlc3MsIFRpbWluZ0Z1bmN0aW9uKiB0
aW1pbmdGdW5jdGlvbikgLT4gT3B0aW9uYWw8ZG91YmxlPiB7CiAgICAgICAgIGlmICghaXM8U3Rl
cHNUaW1pbmdGdW5jdGlvbj4odGltaW5nRnVuY3Rpb24pKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
YXV0byBudW1iZXJPZlN0ZXBzID0gZG93bmNhc3Q8U3RlcHNUaW1pbmdGdW5jdGlvbj4oKnRpbWlu
Z0Z1bmN0aW9uKS5udW1iZXJPZlN0ZXBzKCk7CiAgICAgICAgIGF1dG8gaW50ZXJ2YWxQcm9ncmVz
cyA9IGludGVydmFsRW5kUHJvZ3Jlc3MgLSBpbnRlcnZhbFN0YXJ0UHJvZ3Jlc3M7CkBAIC0yMDMz
LDcgKzIwMzMsNyBAQCBPcHRpb25hbDxkb3VibGU+IEtleWZyYW1lRWZmZWN0Ojpwcm9ncmVzc1Vu
dGlsTmV4dFN0ZXAoZG91YmxlIGl0ZXJhdGlvblByb2dyZXNzKQogICAgICAgICBpZiAoIWkpIHsK
ICAgICAgICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcHJvZ3Jlc3NVbnRpbE5leHRTdGVwSW5JbnRlcnZhbCgwLCBpbnRlcnZh
bEVuZFByb2dyZXNzLCBkb3duY2FzdDxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbigp
KS5iYWNraW5nQW5pbWF0aW9uKCkudGltaW5nRnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBwcm9ncmVzc1VudGlsTmV4dFN0ZXBJbkludGVydmFsKG1f
YmxlbmRpbmdLZXlmcmFtZXNbaSAtIDFdLmtleSgpLCBpbnRlcnZhbEVuZFByb2dyZXNzLCB0aW1p
bmdGdW5jdGlvbkZvcktleWZyYW1lQXRJbmRleChpIC0gMSkpOwpAQCAtMjA0Nyw3ICsyMDQ3LDcg
QEAgT3B0aW9uYWw8ZG91YmxlPiBLZXlmcmFtZUVmZmVjdDo6cHJvZ3Jlc3NVbnRpbE5leHRTdGVw
KGRvdWJsZSBpdGVyYXRpb25Qcm9ncmVzcykKICAgICAgICAgcmV0dXJuIHByb2dyZXNzVW50aWxO
ZXh0U3RlcEluSW50ZXJ2YWwobGFzdEV4cGxpY2l0S2V5ZnJhbWUua2V5KCksIDEsIGRvd25jYXN0
PERlY2xhcmF0aXZlQW5pbWF0aW9uPigqYW5pbWF0aW9uKCkpLmJhY2tpbmdBbmltYXRpb24oKS50
aW1pbmdGdW5jdGlvbigpKTsKIAogICAgIC8vIEluIGFueSBvdGhlciBjYXNlLCB3ZSBhcmUgbm90
IGRlYWxpbmcgd2l0aCBhbiBpbnRlcnZhbCB3aXRoIGEgc3RlcHMoKSB0aW1pbmcgZnVuY3Rpb24u
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiBTZWNvbmRzIEtleWZyYW1lRWZmZWN0Ojp0aW1lVG9OZXh0VGljaygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IDk4N2U5MjI0YzU4NGQyMWY1
NTBlMmNiNDUwYjhlNDY3NmI3MzY2ZTIuLjU4ZGE4ZGZjMDI3MzNkMGFiYjZmNTBjMjVjOWFmNTJj
N2RiODg4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBA
IC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29tcG9zaXRlKENvbXBvc2l0
ZU9wZXJhdGlvbiBjb21wb3NpdGVPcGVyYXRpb24pIHsgbV9jb21wb3NpdGVPcGVyYXRpb24gPSBj
b21wb3NpdGVPcGVyYXRpb247IH0KIAogICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2b2lkIGFwcGx5KFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEVsZW1lbnRT
dHlsZSwgT3B0aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpIG92ZXJyaWRlOworICAgIHZv
aWQgYXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50RWxlbWVudFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhbmltYXRpb25E
aWRUaWNrKCkgZmluYWw7CiAgICAgdm9pZCBhbmltYXRpb25EaWRQbGF5KCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCmluZGV4IDkwZmUyOWFiYjMzMzk2
NDg3ZmJkNzZiZGVkNjI4N2VmMjg0OGNlYWEuLjdlNTU0NDAxOTY5NzI2ZGU1NTViNzY3MzlmM2Ew
YjQ3OWVlMjJkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CkBAIC0yMDYsOCArMjA2LDggQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEVmZmVjdEludGVybmFs
KFJlZlB0cjxBbmltYXRpb25FZmZlY3Q+JiYgbmV3RWZmZWN0LCBib29sIGQKIAogICAgIGF1dG8g
b2xkRWZmZWN0ID0gc3RkOjpleGNoYW5nZShtX2VmZmVjdCwgV1RGTW92ZShuZXdFZmZlY3QpKTsK
IAotICAgIE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gcHJldmlvdXNUYXJnZXQgPSBpczxLZXlm
cmFtZUVmZmVjdD4ob2xkRWZmZWN0KSA/IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihvbGRFZmZl
Y3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IFdURjo6bnVsbG9wdDsKLSAgICBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IG5ld1RhcmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVj
dCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHls
ZWFibGUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHBy
ZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxL
ZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6
Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxL
ZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZm
ZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBV
cGRhdGUgdGhlIGVmZmVjdC10by1hbmltYXRpb24gcmVsYXRpb25zaGlwcyBhbmQgdGhlIHRpbWVs
aW5lJ3MgYW5pbWF0aW9uIG1hcC4KICAgICBpZiAob2xkRWZmZWN0KSB7CkBAIC0yMzcsNyArMjM3
LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1l
bGluZT4mJiB0aW1lbGluZSkKIAogICAgIC8vIDQuIElmIHRoZSBhbmltYXRpb24gc3RhcnQgdGlt
ZSBvZiBhbmltYXRpb24gaXMgcmVzb2x2ZWQsIG1ha2UgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHVu
cmVzb2x2ZWQuCiAgICAgaWYgKG1fc3RhcnRUaW1lKQotICAgICAgICBtX2hvbGRUaW1lID0gV1RG
OjpudWxsb3B0OworICAgICAgICBtX2hvbGRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkpIHsKICAgICAgICAgaWYgKGF1dG8gdGFyZ2V0
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVh
YmxlKCkpIHsKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFy
Z2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpbwogT3B0
aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJpbmRpbmdzU3RhcnRUaW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fc3RhcnRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRp
b25zQVBJVGltZSgqbV9zdGFydFRpbWUpOwogfQogCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBX
ZWJBbmltYXRpb246OnNldEJpbmRpbmdzU3RhcnRUaW1lKE9wdGlvbmFsPGRvdWJsZT4gbmV3U3Rh
cnRUaW1lKQogICAgIGlmIChuZXdTdGFydFRpbWUpCiAgICAgICAgIHNldFN0YXJ0VGltZShTZWNv
bmRzOjpmcm9tTWlsbGlzZWNvbmRzKCpuZXdTdGFydFRpbWUpKTsKICAgICBlbHNlCi0gICAgICAg
IHNldFN0YXJ0VGltZShXVEY6Om51bGxvcHQpOworICAgICAgICBzZXRTdGFydFRpbWUoc3RkOjpu
dWxsb3B0KTsKIH0KIAogdm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0VGltZShPcHRpb25hbDxT
ZWNvbmRzPiBuZXdTdGFydFRpbWUpCkBAIC0zMTYsMTEgKzMxNiwxMSBAQCB2b2lkIFdlYkFuaW1h
dGlvbjo6c2V0U3RhcnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+IG5ld1N0YXJ0VGltZSkKICAgICAv
LyAxLiBMZXQgdGltZWxpbmUgdGltZSBiZSB0aGUgY3VycmVudCB0aW1lIHZhbHVlIG9mIHRoZSB0
aW1lbGluZSB0aGF0IGFuaW1hdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGguIElmCiAgICAgLy8gICAg
dGhlcmUgaXMgbm8gdGltZWxpbmUgYXNzb2NpYXRlZCB3aXRoIGFuaW1hdGlvbiBvciB0aGUgYXNz
b2NpYXRlZCB0aW1lbGluZSBpcyBpbmFjdGl2ZSwgbGV0IHRoZSB0aW1lbGluZQogICAgIC8vICAg
IHRpbWUgYmUgdW5yZXNvbHZlZC4KLSAgICBhdXRvIHRpbWVsaW5lVGltZSA9IG1fdGltZWxpbmUg
PyBtX3RpbWVsaW5lLT5jdXJyZW50VGltZSgpIDogV1RGOjpudWxsb3B0OworICAgIGF1dG8gdGlt
ZWxpbmVUaW1lID0gbV90aW1lbGluZSA/IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgOiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyAyLiBJZiB0aW1lbGluZSB0aW1lIGlzIHVucmVzb2x2ZWQgYW5k
IG5ldyBzdGFydCB0aW1lIGlzIHJlc29sdmVkLCBtYWtlIGFuaW1hdGlvbidzIGhvbGQgdGltZSB1
bnJlc29sdmVkLgogICAgIGlmICghdGltZWxpbmVUaW1lICYmIG5ld1N0YXJ0VGltZSkKLSAgICAg
ICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIDMuIExldCBwcmV2aW91cyBjdXJyZW50IHRpbWUgYmUgYW5pbWF0
aW9uJ3MgY3VycmVudCB0aW1lLgogICAgIGF1dG8gcHJldmlvdXNDdXJyZW50VGltZSA9IGN1cnJl
bnRUaW1lKCk7CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFN0YXJ0
VGltZShPcHRpb25hbDxTZWNvbmRzPiBuZXdTdGFydFRpbWUpCiAgICAgICAgIC8vIElmIG5ldyBz
dGFydCB0aW1lIGlzIHJlc29sdmVkLAogICAgICAgICAvLyBJZiBhbmltYXRpb24ncyBwbGF5YmFj
ayByYXRlIGlzIG5vdCB6ZXJvLCBtYWtlIGFuaW1hdGlvbidzIGhvbGQgdGltZSB1bnJlc29sdmVk
LgogICAgICAgICBpZiAobV9wbGF5YmFja1JhdGUpCi0gICAgICAgICAgICBtX2hvbGRUaW1lID0g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBPdGhlcndpc2UgKG5ldyBzdGFydCB0aW1lIGlzIHVucmVz
b2x2ZWQpLAogICAgICAgICAvLyBTZXQgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIHRvIHByZXZpb3Vz
IGN1cnJlbnQgdGltZSBldmVuIGlmIHByZXZpb3VzIGN1cnJlbnQgdGltZSBpcyB1bnJlc29sdmVk
LgpAQCAtMzYwLDE0ICszNjAsMTQgQEAgT3B0aW9uYWw8ZG91YmxlPiBXZWJBbmltYXRpb246OmJp
bmRpbmdzQ3VycmVudFRpbWUoKSBjb25zdAogewogICAgIGF1dG8gdGltZSA9IGN1cnJlbnRUaW1l
KCk7CiAgICAgaWYgKCF0aW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25z
QVBJVGltZSh0aW1lLnZhbHVlKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRp
b246OnNldEJpbmRpbmdzQ3VycmVudFRpbWUoT3B0aW9uYWw8ZG91YmxlPiBjdXJyZW50VGltZSkK
IHsKICAgICBpZiAoIWN1cnJlbnRUaW1lKQotICAgICAgICByZXR1cm4gc2V0Q3VycmVudFRpbWUo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIHNldEN1cnJlbnRUaW1lKHN0ZDo6bnVsbG9w
dCk7CiAgICAgcmV0dXJuIHNldEN1cnJlbnRUaW1lKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
Y3VycmVudFRpbWUudmFsdWUoKSkpOwogfQogCkBAIC0zOTMsMTAgKzM5MywxMCBAQCBPcHRpb25h
bDxTZWNvbmRzPiBXZWJBbmltYXRpb246OmN1cnJlbnRUaW1lKFJlc3BlY3RIb2xkVGltZSByZXNw
ZWN0SG9sZFRpbWUsIE9wdAogICAgIC8vICAgICAzLiB0aGUgYW5pbWF0aW9uJ3Mgc3RhcnQgdGlt
ZSBpcyB1bnJlc29sdmVkLgogICAgIC8vIFRoZSBjdXJyZW50IHRpbWUgaXMgYW4gdW5yZXNvbHZl
ZCB0aW1lIHZhbHVlLgogICAgIGlmICghbV90aW1lbGluZSB8fCAhbV90aW1lbGluZS0+Y3VycmVu
dFRpbWUoKSB8fCAhbV9zdGFydFRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBPdGhlcndpc2UsIGN1cnJlbnQg
dGltZSA9ICh0aW1lbGluZSB0aW1lIC0gc3RhcnQgdGltZSkgKiBwbGF5YmFjayByYXRlCi0gICAg
cmV0dXJuICgqbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSAtIHN0YXJ0VGltZS52YWx1ZU9yKCpt
X3N0YXJ0VGltZSkpICogbV9wbGF5YmFja1JhdGU7CisgICAgcmV0dXJuICgqbV90aW1lbGluZS0+
Y3VycmVudFRpbWUoKSAtIHN0YXJ0VGltZS52YWx1ZV9vcigqbV9zdGFydFRpbWUpKSAqIG1fcGxh
eWJhY2tSYXRlOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNpbGVudGx5
U2V0Q3VycmVudFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbWUpCkBAIC00MzEsMTAgKzQz
MSwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnNpbGVudGx5U2V0Q3VycmVu
dFRpbWUoT3B0aW9uYWw8U2Vjb25kcz4gc2Vla1RpbQogCiAgICAgLy8gMy4gSWYgYW5pbWF0aW9u
IGhhcyBubyBhc3NvY2lhdGVkIHRpbWVsaW5lIG9yIHRoZSBhc3NvY2lhdGVkIHRpbWVsaW5lIGlz
IGluYWN0aXZlLCBtYWtlIGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUgdW5yZXNvbHZlZC4KICAgICBp
ZiAoIW1fdGltZWxpbmUgfHwgIW1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkpCi0gICAgICAgIG1f
c3RhcnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIDQuIE1ha2UgYW5pbWF0aW9uJ3MgcHJldmlvdXMgY3VycmVudCB0aW1l
IHVucmVzb2x2ZWQuCi0gICAgbV9wcmV2aW91c0N1cnJlbnRUaW1lID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fcHJldmlvdXNDdXJyZW50VGltZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
IH07CiB9CkBAIC00NTgsNyArNDU4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
OjpzZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiBzZWVrVGltZSkKICAgICAgICAgLy8g
Mi4gQXBwbHkgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSB0byBhbmltYXRpb24uCiAgICAgICAg
IGFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpOwogICAgICAgICAvLyAzLiBNYWtlIGFuaW1hdGlv
bidzIHN0YXJ0IHRpbWUgdW5yZXNvbHZlZC4KLSAgICAgICAgbV9zdGFydFRpbWUgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fc3RhcnRUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICAvLyA0
LiBDYW5jZWwgdGhlIHBlbmRpbmcgcGF1c2UgdGFzay4KICAgICAgICAgbV90aW1lVG9SdW5QZW5k
aW5nUGF1c2VUYXNrID0gVGltZVRvUnVuUGVuZGluZ1Rhc2s6Ok5vdFNjaGVkdWxlZDsKICAgICAg
ICAgLy8gNS4gUmVzb2x2ZSBhbmltYXRpb24ncyBjdXJyZW50IHJlYWR5IHByb21pc2Ugd2l0aCBh
bmltYXRpb24uCkBAIC00ODksNyArNDg5LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFBsYXli
YWNrUmF0ZShkb3VibGUgbmV3UGxheWJhY2tSYXRlKQogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNz
c3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyN1cGRhdGluZy10aGUtcGxheWJhY2stcmF0ZS1vZi1h
bi1hbmltYXRpb24KIAogICAgIC8vIDEuIENsZWFyIGFueSBwZW5kaW5nIHBsYXliYWNrIHJhdGUg
b24gYW5pbWF0aW9uLgotICAgIG1fcGVuZGluZ1BsYXliYWNrUmF0ZSA9IFdURjo6bnVsbG9wdDsK
KyAgICBtX3BlbmRpbmdQbGF5YmFja1JhdGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgLy8g
Mi4gTGV0IHByZXZpb3VzIHRpbWUgYmUgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IHRpbWUgb2Yg
YW5pbWF0aW9uIGJlZm9yZSBjaGFuZ2luZyB0aGUgcGxheWJhY2sgcmF0ZS4KICAgICBhdXRvIHBy
ZXZpb3VzVGltZSA9IGN1cnJlbnRUaW1lKCk7CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJB
bmltYXRpb246OmFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpCiAgICAgbV9wbGF5YmFja1JhdGUg
PSBtX3BlbmRpbmdQbGF5YmFja1JhdGUudmFsdWUoKTsKIAogICAgIC8vIDMuIENsZWFyIGFuaW1h
dGlvbidzIHBlbmRpbmcgcGxheWJhY2sgcmF0ZS4KLSAgICBtX3BlbmRpbmdQbGF5YmFja1JhdGUg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nUGxheWJhY2tSYXRlID0gc3RkOjpudWxsb3B0
OwogfQogCiBhdXRvIFdlYkFuaW1hdGlvbjo6cGxheVN0YXRlKCkgY29uc3QgLT4gUGxheVN0YXRl
CkBAIC02NTQsMTQgKzY1NCwxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6Y2FuY2VsKCkKICAgICAg
ICAgLy8gICAgdG8gb3JpZ2luLXJlbGF0aXZlIHRpbWUsIGxldCB0aGUgc2NoZWR1bGVkIGV2ZW50
IHRpbWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGF0IHByb2NlZHVyZSB0byB0aW1lbGlu
ZSB0aW1lLiBPdGhlcndpc2UsIHRoZQogICAgICAgICAvLyAgICBzY2hlZHVsZWQgZXZlbnQgdGlt
ZSBpcyBhbiB1bnJlc29sdmVkIHRpbWUgdmFsdWUuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgcXVl
dWUgYSB0YXNrIHRvIGRpc3BhdGNoIGNhbmNlbEV2ZW50IGF0IGFuaW1hdGlvbi4gVGhlIHRhc2sg
c291cmNlIGZvciB0aGlzIHRhc2sgaXMgdGhlIERPTSBtYW5pcHVsYXRpb24gdGFzayBzb3VyY2Uu
Ci0gICAgICAgIGVucXVldWVBbmltYXRpb25QbGF5YmFja0V2ZW50KGV2ZW50TmFtZXMoKS5jYW5j
ZWxFdmVudCwgV1RGOjpudWxsb3B0LCBtX3RpbWVsaW5lID8gbV90aW1lbGluZS0+Y3VycmVudFRp
bWUoKSA6IFdURjo6bnVsbG9wdCk7CisgICAgICAgIGVucXVldWVBbmltYXRpb25QbGF5YmFja0V2
ZW50KGV2ZW50TmFtZXMoKS5jYW5jZWxFdmVudCwgc3RkOjpudWxsb3B0LCBtX3RpbWVsaW5lID8g
bV90aW1lbGluZS0+Y3VycmVudFRpbWUoKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAg
Ly8gMi4gTWFrZSBhbmltYXRpb24ncyBob2xkIHRpbWUgdW5yZXNvbHZlZC4KLSAgICBtX2hvbGRU
aW1lID0gV1RGOjpudWxsb3B0OworICAgIG1faG9sZFRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyAzLiBNYWtlIGFuaW1hdGlvbidzIHN0YXJ0IHRpbWUgdW5yZXNvbHZlZC4KLSAgICBtX3N0
YXJ0VGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3N0YXJ0VGltZSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIHRpbWluZ0RpZENoYW5nZShEaWRTZWVrOjpObywgU3luY2hyb25vdXNseU5vdGlmeTo6
Tm8pOwogCkBAIC03NjAsNyArNzYwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9u
OjpmaW5pc2goKQogICAgIC8vIDYuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBwYXVzZSB0YXNrIGFu
ZCBzdGFydCB0aW1lIGlzIHJlc29sdmVkLAogICAgIGlmIChoYXNQZW5kaW5nUGF1c2VUYXNrKCkg
JiYgbV9zdGFydFRpbWUpIHsKICAgICAgICAgLy8gMS4gTGV0IHRoZSBob2xkIHRpbWUgYmUgdW5y
ZXNvbHZlZC4KLSAgICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9o
b2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgLy8gMi4gQ2FuY2VsIHRoZSBwZW5kaW5n
IHBhdXNlIHRhc2suCiAgICAgICAgIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNlVGFzayA9IFRpbWVU
b1J1blBlbmRpbmdUYXNrOjpOb3RTY2hlZHVsZWQ7CiAgICAgICAgIC8vIDMuIFJlc29sdmUgdGhl
IGN1cnJlbnQgcmVhZHkgcHJvbWlzZSBvZiBhbmltYXRpb24gd2l0aCBhbmltYXRpb24uCkBAIC04
NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJBbmltYXRpb246OnVwZGF0ZUZpbmlzaGVkU3RhdGUoRGlk
U2VlayBkaWRTZWVrLCBTeW5jaHJvbm91c2x5Tm90aWZ5IHN5bmMKICAgICAgICAgICAgIGlmIChk
aWRTZWVrID09IERpZFNlZWs6OlllcyAmJiBtX2hvbGRUaW1lKQogICAgICAgICAgICAgICAgIG1f
c3RhcnRUaW1lID0gbV90aW1lbGluZS0+Y3VycmVudFRpbWUoKS52YWx1ZSgpIC0gKG1faG9sZFRp
bWUudmFsdWUoKSAvIG1fcGxheWJhY2tSYXRlKTsKICAgICAgICAgICAgIC8vIDIuIExldCB0aGUg
aG9sZCB0aW1lIGJlIHVucmVzb2x2ZWQuCi0gICAgICAgICAgICBtX2hvbGRUaW1lID0gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgbV9ob2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQogICAgIH0KIApAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpmaW5pc2hO
b3RpZmljYXRpb25TdGVwcygpCiAgICAgLy8gICAgcXVldWUgYWxvbmcgd2l0aCBpdHMgdGFyZ2V0
LCBhbmltYXRpb24uIEZvciB0aGUgc2NoZWR1bGVkIGV2ZW50IHRpbWUsIHVzZSB0aGUgcmVzdWx0
IG9mIGNvbnZlcnRpbmcgYW5pbWF0aW9uJ3MgdGFyZ2V0CiAgICAgLy8gICAgZWZmZWN0IGVuZCB0
byBhbiBvcmlnaW4tcmVsYXRpdmUgdGltZS4KICAgICAvLyAgICBPdGhlcndpc2UsIHF1ZXVlIGEg
dGFzayB0byBkaXNwYXRjaCBmaW5pc2hFdmVudCBhdCBhbmltYXRpb24uIFRoZSB0YXNrIHNvdXJj
ZSBmb3IgdGhpcyB0YXNrIGlzIHRoZSBET00gbWFuaXB1bGF0aW9uIHRhc2sgc291cmNlLgotICAg
IGVucXVldWVBbmltYXRpb25QbGF5YmFja0V2ZW50KGV2ZW50TmFtZXMoKS5maW5pc2hFdmVudCwg
Y3VycmVudFRpbWUoKSwgbV90aW1lbGluZSA/IG1fdGltZWxpbmUtPmN1cnJlbnRUaW1lKCkgOiBX
VEY6Om51bGxvcHQpOworICAgIGVucXVldWVBbmltYXRpb25QbGF5YmFja0V2ZW50KGV2ZW50TmFt
ZXMoKS5maW5pc2hFdmVudCwgY3VycmVudFRpbWUoKSwgbV90aW1lbGluZSA/IG1fdGltZWxpbmUt
PmN1cnJlbnRUaW1lKCkgOiBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKGlzPEtleWZyYW1lRWZm
ZWN0PihtX2VmZmVjdCkpIHsKICAgICAgICAgaWYgKGF1dG8gdGFyZ2V0ID0gbWFrZVJlZlB0cihk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKm1fZWZmZWN0KS50YXJnZXQoKSkpIHsKQEAgLTk4MCw3
ICs5ODAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJBbmltYXRpb246OnBsYXkoQXV0b1Jld2lu
ZCBhdXRvUmV3aW5kKQogCiAgICAgLy8gNi4gSWYgYW5pbWF0aW9uJ3MgaG9sZCB0aW1lIGlzIHJl
c29sdmVkLCBsZXQgaXRzIHN0YXJ0IHRpbWUgYmUgdW5yZXNvbHZlZC4KICAgICBpZiAobV9ob2xk
VGltZSkKLSAgICAgICAgbV9zdGFydFRpbWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc3Rh
cnRUaW1lID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gNy4gSWYgaGFzIHBlbmRpbmcgcmVhZHkg
cHJvbWlzZSBpcyBmYWxzZSwgbGV0IGFuaW1hdGlvbidzIGN1cnJlbnQgcmVhZHkgcHJvbWlzZSBi
ZSBhIG5ldyAocGVuZGluZykgUHJvbWlzZSBvYmplY3QuCiAgICAgaWYgKCFoYXNQZW5kaW5nUmVh
ZHlQcm9taXNlKQpAQCAtMTAyNiwxOCArMTAyNiwxOCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cnVu
UGVuZGluZ1BsYXlUYXNrKCkKICAgICAgICAgLy8gU3Vic2VxdWVudGx5LCB0aGUgcmVzdWx0aW5n
IHJlYWR5VGltZSB2YWx1ZSBjYW4gYmUgbnVsbC4gVW5pZnkgYmVoYXZpb3IgYmV0d2VlbiBDKysx
NyBhbmQKICAgICAgICAgLy8gQysrMTQgYnVpbGRzICh0aGUgbGF0dGVyIHVzaW5nIFdURidzIE9w
dGlvbmFsKSBhbmQgYXZvaWQgbnVsbCBPcHRpb25hbCBkZXJlZmVyZW5jaW5nCiAgICAgICAgIC8v
IGJ5IGRlZmF1bHRpbmcgdG8gYSBTZWNvbmRzKDApIHZhbHVlLiBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjE4OS4KLSAgICAgICAgYXV0byBuZXdTdGFydFRp
bWUgPSByZWFkeVRpbWUudmFsdWVPcigwX3MpOworICAgICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9
IHJlYWR5VGltZS52YWx1ZV9vcigwX3MpOwogICAgICAgICBpZiAobV9wbGF5YmFja1JhdGUpCiAg
ICAgICAgICAgICBuZXdTdGFydFRpbWUgLT0gbV9ob2xkVGltZS52YWx1ZSgpIC8gbV9wbGF5YmFj
a1JhdGU7CiAgICAgICAgIC8vIDMuIFNldCB0aGUgc3RhcnQgdGltZSBvZiBhbmltYXRpb24gdG8g
bmV3IHN0YXJ0IHRpbWUuCiAgICAgICAgIG1fc3RhcnRUaW1lID0gbmV3U3RhcnRUaW1lOwogICAg
ICAgICAvLyA0LiBJZiBhbmltYXRpb24ncyBwbGF5YmFjayByYXRlIGlzIG5vdCAwLCBtYWtlIGFu
aW1hdGlvbidzIGhvbGQgdGltZSB1bnJlc29sdmVkLgogICAgICAgICBpZiAobV9wbGF5YmFja1Jh
dGUpCi0gICAgICAgICAgICBtX2hvbGRUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
bV9ob2xkVGltZSA9IHN0ZDo6bnVsbG9wdDsKICAgICB9IGVsc2UgaWYgKG1fc3RhcnRUaW1lICYm
IG1fcGVuZGluZ1BsYXliYWNrUmF0ZSkgewogICAgICAgICAvLyBJZiBhbmltYXRpb24ncyBzdGFy
dCB0aW1lIGlzIHJlc29sdmVkIGFuZCBhbmltYXRpb24gaGFzIGEgcGVuZGluZyBwbGF5YmFjayBy
YXRlLAogICAgICAgICAvLyAxLiBMZXQgY3VycmVudCB0aW1lIHRvIG1hdGNoIGJlIHRoZSByZXN1
bHQgb2YgZXZhbHVhdGluZyAocmVhZHkgdGltZSAtIHN0YXJ0IHRpbWUpIMOXIHBsYXliYWNrIHJh
dGUgZm9yIGFuaW1hdGlvbi4KLSAgICAgICAgYXV0byBjdXJyZW50VGltZVRvTWF0Y2ggPSAocmVh
ZHlUaW1lLnZhbHVlT3IoMF9zKSAtIG1fc3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1Jh
dGU7CisgICAgICAgIGF1dG8gY3VycmVudFRpbWVUb01hdGNoID0gKHJlYWR5VGltZS52YWx1ZV9v
cigwX3MpIC0gbV9zdGFydFRpbWUudmFsdWUoKSkgKiBtX3BsYXliYWNrUmF0ZTsKICAgICAgICAg
Ly8gMi4gQXBwbHkgYW55IHBlbmRpbmcgcGxheWJhY2sgcmF0ZSBvbiBhbmltYXRpb24uCiAgICAg
ICAgIGFwcGx5UGVuZGluZ1BsYXliYWNrUmF0ZSgpOwogICAgICAgICAvLyAzLiBJZiBhbmltYXRp
b24ncyBwbGF5YmFjayByYXRlIGlzIHplcm8sIGxldCBhbmltYXRpb24ncyBob2xkIHRpbWUgYmUg
Y3VycmVudCB0aW1lIHRvIG1hdGNoLgpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBXZWJBbmlt
YXRpb246OnJ1blBlbmRpbmdQbGF5VGFzaygpCiAgICAgICAgICAgICBtX2hvbGRUaW1lID0gY3Vy
cmVudFRpbWVUb01hdGNoOwogICAgICAgICAvLyA0LiBMZXQgbmV3IHN0YXJ0IHRpbWUgYmUgdGhl
IHJlc3VsdCBvZiBldmFsdWF0aW5nIHJlYWR5IHRpbWUgLSBjdXJyZW50IHRpbWUgdG8gbWF0Y2gg
LyBwbGF5YmFjayByYXRlIGZvciBhbmltYXRpb24uCiAgICAgICAgIC8vIElmIHRoZSBwbGF5YmFj
ayByYXRlIGlzIHplcm8sIGxldCBuZXcgc3RhcnQgdGltZSBiZSBzaW1wbHkgcmVhZHkgdGltZS4K
LSAgICAgICAgYXV0byBuZXdTdGFydFRpbWUgPSByZWFkeVRpbWUudmFsdWVPcigwX3MpOworICAg
ICAgICBhdXRvIG5ld1N0YXJ0VGltZSA9IHJlYWR5VGltZS52YWx1ZV9vcigwX3MpOwogICAgICAg
ICBpZiAobV9wbGF5YmFja1JhdGUpCiAgICAgICAgICAgICBuZXdTdGFydFRpbWUgLT0gY3VycmVu
dFRpbWVUb01hdGNoIC8gbV9wbGF5YmFja1JhdGU7CiAgICAgICAgIC8vIDUuIFNldCB0aGUgc3Rh
cnQgdGltZSBvZiBhbmltYXRpb24gdG8gbmV3IHN0YXJ0IHRpbWUuCkBAIC0xMTgyLDE0ICsxMTgy
LDE0IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpydW5QZW5kaW5nUGF1c2VUYXNrKCkKICAgICAgICAg
Ly8gU3Vic2VxdWVudGx5LCB0aGUgcmVzdWx0aW5nIHJlYWR5VGltZSB2YWx1ZSBjYW4gYmUgbnVs
bC4gVW5pZnkgYmVoYXZpb3IgYmV0d2VlbiBDKysxNyBhbmQKICAgICAgICAgLy8gQysrMTQgYnVp
bGRzICh0aGUgbGF0dGVyIHVzaW5nIFdURidzIE9wdGlvbmFsKSBhbmQgYXZvaWQgbnVsbCBPcHRp
b25hbCBkZXJlZmVyZW5jaW5nCiAgICAgICAgIC8vIGJ5IGRlZmF1bHRpbmcgdG8gYSBTZWNvbmRz
KDApIHZhbHVlLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NjE4OS4KLSAgICAgICAgbV9ob2xkVGltZSA9IChyZWFkeVRpbWUudmFsdWVPcigwX3MpIC0gYW5p
bWF0aW9uU3RhcnRUaW1lLnZhbHVlKCkpICogbV9wbGF5YmFja1JhdGU7CisgICAgICAgIG1faG9s
ZFRpbWUgPSAocmVhZHlUaW1lLnZhbHVlX29yKDBfcykgLSBhbmltYXRpb25TdGFydFRpbWUudmFs
dWUoKSkgKiBtX3BsYXliYWNrUmF0ZTsKICAgICB9CiAKICAgICAvLyAzLiBBcHBseSBhbnkgcGVu
ZGluZyBwbGF5YmFjayByYXRlIG9uIGFuaW1hdGlvbi4KICAgICBhcHBseVBlbmRpbmdQbGF5YmFj
a1JhdGUoKTsKIAogICAgIC8vIDQuIE1ha2UgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZSB1bnJlc29s
dmVkLgotICAgIG1fc3RhcnRUaW1lID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhcnRUaW1lID0g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gNS4gUmVzb2x2ZSBhbmltYXRpb24ncyBjdXJyZW50IHJl
YWR5IHByb21pc2Ugd2l0aCBhbmltYXRpb24uCiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZS0+aXNG
dWxmaWxsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAppbmRleCA4
ZWEyNWRkMTlkYmFhMWYxMTgyZWZmNjUwYzE3ZjllOWEyODhmNGY2Li43ZWI4NGM2ZGRhOWIwN2Nh
ZjA0Mzk3OGM2NzkxNjhjMDk0MjUyYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFu
aW1hdGlvbi5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBBbmltYXRpb25UaW1lbGlu
ZSogdGltZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lLmdldCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJik7CiAKLSAg
ICBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZShPcHRpb25hbDxTZWNvbmRzPiA9IFdURjo6
bnVsbG9wdCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoT3B0aW9u
YWw8U2Vjb25kcz4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldEN1cnJlbnRUaW1lKE9wdGlvbmFsPFNlY29uZHM+KTsKIAogICAgIGRvdWJsZSBwbGF5YmFj
a1JhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrUmF0ZSArIDA7IH0KQEAgLTEyMCw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1RpY2soKSBjb25zdDsKICAgICB2aXJ0dWFs
IHZvaWQgdGljaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNlY29uZHMgdGltZVRvTmV4dFRpY2so
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9wdGlvbmFsPFNlY29u
ZHM+ID0gV1RGOjpudWxsb3B0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRFbGVtZW50U3R5bGUsIE9w
dGlvbmFsPFNlY29uZHM+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGVmZmVjdFRhcmdldERp
ZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwg
Y29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFyZ2V0KTsKICAgICB2b2lkIGFj
Y2VsZXJhdGVkU3RhdGVEaWRDaGFuZ2UoKTsKICAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlcigp
OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Vjb25kcyBlZmZlY3RFbmRUaW1l
KCkgY29uc3Q7CiAgICAgV2ViQW5pbWF0aW9uJiByZWFkeVByb21pc2VSZXNvbHZlKCk7CiAgICAg
V2ViQW5pbWF0aW9uJiBmaW5pc2hlZFByb21pc2VSZXNvbHZlKCk7Ci0gICAgT3B0aW9uYWw8U2Vj
b25kcz4gY3VycmVudFRpbWUoUmVzcGVjdEhvbGRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiA9IFdU
Rjo6bnVsbG9wdCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoUmVz
cGVjdEhvbGRUaW1lLCBPcHRpb25hbDxTZWNvbmRzPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2lsZW50bHlTZXRDdXJyZW50VGltZShPcHRpb25hbDxTZWNv
bmRzPik7CiAgICAgdm9pZCBmaW5pc2hOb3RpZmljYXRpb25TdGVwcygpOwogICAgIGJvb2wgaGFz
UGVuZGluZ1BhdXNlVGFzaygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVRvUnVuUGVuZGluZ1BhdXNl
VGFzayAhPSBUaW1lVG9SdW5QZW5kaW5nVGFzazo6Tm90U2NoZWR1bGVkOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvSURMVHlwZXMuaAppbmRleCBjNTQxOTgxNWFkMTE1OGRkNjAxMDE5MGYzZTg1Nzc1ODFj
ZTVjMDZjLi44ZGM3YTA3ZWZlNzEzMjk1NTZmN2ViNWYxYmMyOTgyNzI4YzdhNDE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKQEAgLTcwLDcgKzcwLDcgQEAgc3RydWN0IElETFR5cGUg
ewogICAgIHVzaW5nIE51bGxhYmxlSW5uZXJQYXJhbWV0ZXJUeXBlID0gT3B0aW9uYWw8SW1wbGVt
ZW50YXRpb25UeXBlPjsKIAogICAgIHVzaW5nIE51bGxhYmxlVHlwZSA9IE9wdGlvbmFsPEltcGxl
bWVudGF0aW9uVHlwZT47Ci0gICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJl
dHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBzdGF0aWMgTnVsbGFibGVUeXBlIG51bGxWYWx1ZSgp
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0YXRpYyBib29sIGlzTnVsbFZhbHVlKGNv
bnN0IE51bGxhYmxlVHlwZSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZTsgfQogICAgIHN0YXRpYyBJ
bXBsZW1lbnRhdGlvblR5cGUgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGNvbnN0IE51bGxhYmxl
VHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLnZhbHVlKCk7IH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Qcm9taXNlUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94eS5oCmluZGV4IDIyZjA5YzMxNzI2NWNjYzhk
MTcyZDAxZjcxZjI1ZDlkMzJmMjIyZGYuLjY0YzNiZDYyOTljZWIzNjAzYTNhYWY4Mzg0ZDczMTk1
NzZlMjFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21p
c2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVByb21pc2VQcm94
eS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBET01Qcm9taXNlUHJv
eHk8SURMVHlwZT46OnByb21pc2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWMKIHRlbXBsYXRl
PHR5cGVuYW1lIElETFR5cGU+CiBpbmxpbmUgdm9pZCBET01Qcm9taXNlUHJveHk8SURMVHlwZT46
OmNsZWFyKCkKIHsKLSAgICBtX3ZhbHVlT3JFeGNlcHRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAg
bV92YWx1ZU9yRXhjZXB0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIG1fZGVmZXJyZWRQcm9taXNl
cy5jbGVhcigpOwogfQogCkBAIC0yMTIsNyArMjEyLDcgQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBE
T01Qcm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjo6cHJvbWlzZShKU0M6OkpTR2xvYmFsT2JqZWN0
JgogCiBpbmxpbmUgdm9pZCBET01Qcm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjo6Y2xlYXIoKQog
ewotICAgIG1fdmFsdWVPckV4Y2VwdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3ZhbHVlT3JF
eGNlcHRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9kZWZlcnJlZFByb21pc2VzLmNsZWFyKCk7
CiB9CiAKQEAgLTI4MSw3ICsyODEsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMVHlwZT46OnByb21pc2UoSlNDOjpKUwogdGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4KIGlubGluZSB2b2lkIERPTVByb21pc2VQcm94eVdpdGhSZXNv
bHZlQ2FsbGJhY2s8SURMVHlwZT46OmNsZWFyKCkKIHsKLSAgICBtX3ZhbHVlT3JFeGNlcHRpb24g
PSBXVEY6Om51bGxvcHQ7CisgICAgbV92YWx1ZU9yRXhjZXB0aW9uID0gc3RkOjpudWxsb3B0Owog
ICAgIG1fZGVmZXJyZWRQcm9taXNlcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDZmNTQyNTk1YzJl
OWY0NmRkMzk5ZmE4M2Q1YTI4ODAwMGU0ZGZkZGEuLmRmNWQxNTdmM2IxN2ZhNDYxMzUzODMyN2M0
NDhjMTM4ODk5ZjMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgT3B0aW9uYWw8SlNDOjpK
U1ZhbHVlPiBkZXNlcmlhbGl6ZUlEQlZhbHVlV2l0aEtleUluamVjdGlvbihKU0dsb2JhbE9iamVj
dCYgbGV4aWMKICAgICBpZiAoIWluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShsZXhpY2FsR2xv
YmFsT2JqZWN0LCBrZXksIGpzVmFsdWUsIGtleVBhdGgudmFsdWUoKSkpIHsKICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCkpOwogICAgICAgICBwcm9wYWdhdGVFeGNlcHRpb24obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgRXhjZXB0aW9uKFVua25vd25FcnJvciwgIkNhbm5vdCBpbmplY3Qga2V5IGludG8g
c2NyaXB0IHZhbHVlIl9zKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIGpzVmFsdWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BYnN0cmFjdE9wZXJhdGlvbnMu
aAppbmRleCBiOTk1M2EzMmVlMTE1OThlYjFlMGQ5MzM4ZmFlZmI4NGY2MjUxMGI4Li41ZDM0MDVj
OGZmYjgwOGUzMDgyMWFjYmU3NWYxNjc1Mjg4ZTU4MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUFic3RyYWN0T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQWJzdHJhY3RPcGVyYXRpb25zLmgKQEAgLTk3LDcgKzk3
LDcgQEAgc3RhdGljIGRlY2x0eXBlKGF1dG8pIHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vz
c29yRnVuY3RvcihJbm5lckl0ZW1BY2Nlc3NvciYKICAgICAgICAgICAgICAgICByZXR1cm4gUmV0
dXJuVHlwZSB7IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkgfTsKICAgICAgICAgICAgIGlmICgh
SURMVHlwZTo6aXNOdWxsVmFsdWUocmVzdWx0LnJldHVyblZhbHVlKCkpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBSZXR1cm5UeXBlIHsgSURMVHlwZTo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSkgfTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Owog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHVzaW5nIFJldHVyblR5cGUgPSB0eXBlbmFtZSBJRExUeXBl
OjpJbXBsZW1lbnRhdGlvblR5cGU7CkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGRlY2x0eXBl
KGF1dG8pIHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3RvcihJbm5lckl0ZW1B
Y2Nlc3NvciYKICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW5uZXJJdGVtQWNjZXNzb3IodGhp
c09iamVjdCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmICghSURMVHlwZTo6aXNOdWxs
VmFsdWUocmVzdWx0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gUmV0dXJuVHlwZSB7IElETFR5
cGU6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShyZXN1bHQpIH07Ci0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgfTsKICAgICB9CiB9CkBAIC0xMjIsMTcgKzEyMiwxNyBAQCBzdGF0aWMgYXV0byBhY2Nlc3NW
aXNpYmxlTmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LAogICAgIC8vIE5PVEU6IFdoaWxlIGl0IGlzIG5vdCBzcGVjaWZpZWQsIGEgU3ltYm9sIGNh
biBuZXZlciBiZSBhICdzdXBwb3J0ZWQgcHJvcGVydHkKICAgICAvLyBuYW1lJyBzbyB3ZSBjaGVj
ayB0aGF0IGZpcnN0LgogICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1ib2woKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIDEuIElmIFAgaXMgbm90IGEgc3VwcG9ydGVkIHByb3BlcnR5IG5hbWUgb2YgTywgdGhlbiBy
ZXR1cm4gZmFsc2UuCiAgICAgYXV0byByZXN1bHQgPSBpdGVtQWNjZXNzb3IodGhpc09iamVjdCwg
cHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDIuIElmIE8gaGFz
IGFuIG93biBwcm9wZXJ0eSBuYW1lZCBQLCB0aGVuIHJldHVybiBmYWxzZS4KICAgICBKU0M6OlBy
b3BlcnR5U2xvdCBzbG90IHsgJnRoaXNPYmplY3QsIEpTQzo6UHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJmxleGljYWxHbG9iYWxPYmplY3Qudm0oKSB9OwogICAg
IGlmIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoJnRoaXNPYmplY3QsICZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMy4gSWYg
TyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0aGF0IGhhcyB0aGUgW0xlZ2FjeU92ZXJyaWRlQnVp
bHRJbnNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS4KICAgICBpZiAob3Zl
cnJpZGVCdWlsdGlucyA9PSBMZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpZZXMgJiYgIXdvcmxkRm9y
RE9NT2JqZWN0KHRoaXNPYmplY3QpLnNob3VsZERpc2FibGVMZWdhY3lPdmVycmlkZUJ1aWx0SW5z
QmVoYXZpb3IoKSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgYXV0byBhY2Nlc3NWaXNpYmxl
TmFtZWRQcm9wZXJ0eShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAog
ICAgIC8vICAgIDIuIFNldCBwcm90b3R5cGUgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBpbnRlcm5h
bCBbW1Byb3RvdHlwZV1dIHByb3BlcnR5IG9mIHByb3RvdHlwZS4KICAgICBhdXRvIHByb3RvdHlw
ZSA9IHRoaXNPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpKTsKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgSlNDOjphc09iamVj
dChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QoJmxleGljYWxHbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyA2LiBSZXR1cm4gdHJ1ZS4KICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0QW55LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaApp
bmRleCBmMWQ3NWI3ZmE0ZDFmOWM4NmFjNDNhZmJkM2QyMTY3ZjMzNzM4ZTgxLi5mYmExYzA5ZWFl
N2YyYzY3ZDcxYWY0ZWY0NjM4YjRhODkyNWQxNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRBbnkuaApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBWYXJpYWRpY0NvbnZlcnRlcjxJRExBbnk+IHsKICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gQ29udmVydGVy
PElETEFueT46OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIHJldHVybiBJdGVt
IHsgdm0sIHJlc3VsdCB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0SW50ZXJmYWNlLmgKaW5kZXggYmYxOWU5NzNhMzA5MzY5MzZhZDMwZmNl
YTZmNWVhNzQ5ODk3NzliYy4uNDhlYTE3YzBlZTcyNmJiNzlhYWU5MzNkMTc2MWI5ZGE0NzAwMzMw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0SW50
ZXJmYWNlLmgKQEAgLTk1LDcgKzk1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZh
cmlhZGljQ29udmVydGVyPElETEludGVyZmFjZTxUPj4gewogICAgIHsKICAgICAgICAgYXV0byog
cmVzdWx0ID0gQ29udmVydGVyPElETEludGVyZmFjZTxUPj46OmNvbnZlcnQobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8SXRlbT4geyAqcmVzdWx0IH07CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFVuaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRVbmlvbi5oCmluZGV4IGY4YzcwMWJl
MTkwNjBjNDlkNjdhNWYwMGZiZjlhNjcyODVlZmVmYTMuLmEzMjM2NmM5MzkwZmYxMjUwYTIzZTZl
NGVhMzFjYWU1ZjFmNGQwZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydFVuaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0VW5pb24uaApAQCAtNTMsNyArNTMsNyBAQCBzdHJ1Y3QgQ29uZGl0aW9uYWxSZXR1
cm5lcjxSZXR1cm5UeXBlLCBmYWxzZT4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
c3RhdGljIE9wdGlvbmFsPFJldHVyblR5cGU+IGdldChUJiYpCiAgICAgewotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07
CiAKQEAgLTcyLDcgKzcyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5h
bWUgVD4KIHN0cnVjdCBDb25kaXRpb25hbENvbnZlcnRlcjxSZXR1cm5UeXBlLCBULCBmYWxzZT4g
ewogICAgIHN0YXRpYyBPcHRpb25hbDxSZXR1cm5UeXBlPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBKU0M6OkpTVmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKQEAgLTkxLDcgKzkx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuVHlwZSwgdHlwZW5hbWUgVD4KIHN0cnVjdCBD
b25kaXRpb25hbFNlcXVlbmNlQ29udmVydGVyPFJldHVyblR5cGUsIFQsIGZhbHNlPiB7CiAgICAg
c3RhdGljIE9wdGlvbmFsPFJldHVyblR5cGU+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYs
IEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpCiAgICAgewotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRWYXJpYWRpYy5oCmlu
ZGV4IDFmZTM4OTIzYzA4MGIxZDM4NTY5NDFjODZmZjZmZjIxYTU5OTRhYjQuLjQ0NDMyNWY2ZDdl
N2Q1YzczOGI0NmNjNTUwNjdmZThlMmE4YjkzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFZhcmlhZGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0VmFyaWFkaWMuaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1
Y3QgVmFyaWFkaWNDb252ZXJ0ZXIgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBDb252ZXJ0ZXI8SURMVHlwZT46
OmNvbnZlcnQobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCmluZGV4IGIxZDI3
ZDQ1YmM5MDJlY2U1NjVhNjMyMDhkODU2NzBjMTY4NzE3NGIuLmEzYzZiZGE2M2JmZTBmMGJhNmJi
OTFlYTY2OWM4MTlhNWQ3NmU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKQEAgLTI0MCw3ICsyNDAsNyBAQCBKU0M6OkpTVmFsdWUgSlNET01JdGVyYXRv
ckJhc2U8SlNXcmFwcGVyLCBJdGVyYXRvclRyYWl0cz46Om5leHQoSlNDOjpKU0dsb2JhbE9iagog
ICAgICAgICBhdXRvIGl0ZXJhdG9yVmFsdWUgPSBtX2l0ZXJhdG9yLT5uZXh0KCk7CiAgICAgICAg
IGlmIChpdGVyYXRvclZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUl0ZXJhdG9yUmVz
dWx0T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBhc0pTKGxleGljYWxHbG9iYWxPYmplY3Qs
IGl0ZXJhdG9yVmFsdWUpLCBmYWxzZSk7Ci0gICAgICAgIG1faXRlcmF0b3IgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1faXRlcmF0b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJldHVy
biBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpq
c1VuZGVmaW5lZCgpLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1J1bkphdmFTY3JpcHRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SdW5KYXZhU2NyaXB0UGFyYW1ldGVycy5oCmluZGV4IDZkY2I5ZGRlYzUxNzE0NjZlOWM5
NTUyMGRkNGUxY2RjOWYxZGRjNTQuLjg0YjBmYzBkYjFmMTc1N2M3M2QyNmFmMDIyOTM3NWQyYTIw
NjI5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1J1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMuaApAQCAtODAsMjMgKzgwLDIzIEBAIHN0cnVjdCBSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyB7CiAgICAgewogICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBVUkwgc291cmNl
VVJMOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZVVSTCkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBSdW5Bc0FzeW5jRnVuY3Rpb24gcnVuQXNBc3luY0Z1bmN0aW9uOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJ1bkFzQXN5bmNGdW5jdGlvbikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxBcmd1bWVudFdpcmVCeXRlc01hcD4gYXJndW1lbnRzOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGFyZ3VtZW50cykpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBG
b3JjZVVzZXJHZXN0dXJlIGZvcmNlVXNlckdlc3R1cmU7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZm9yY2VVc2VyR2VzdHVyZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4geyBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShzb3VyY2VV
UkwpLCBydW5Bc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzKSwgZm9yY2VVc2VyR2Vz
dHVyZSB9IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAppbmRleCA2MDdiNWQxMGIwNjJkOTkzYWJhZWIzNmMwOWE0OTM4MDhmZmY0
NDliLi5kZDY4MTJiZjgwNTMwODA4ZTI5NThhMGNhYmUwMDgyOGMwYmM3NGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzIxLDcg
KzMyMSw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRIYW5kbGVy
cyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgICAgICAgICAgICAgY2FzZSBN
b2R1bGVGZXRjaEZhaWx1cmVLaW5kOjpXYXNFcnJvcmVkOgogICAgICAgICAgICAgICAgICAgICBt
b2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRGYWlsZWQoTG9hZGFibGVTY3JpcHQ6OkVycm9yIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpFcnJvclR5cGU6OkNhY2hlZFNj
cmlwdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6bnVsbG9wdAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpudWxsb3B0CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFp
bHVyZUtpbmQ6Oldhc0NhbmNlbGVkOgpAQCAtNTc1LDcgKzU3NSw3IEBAIEpTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oY29uc3QgU3Ry
aW5nJiBzY3JpCiAKIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7Ci0gICAgYXV0byByZXN1bHQg
PSBleGVjdXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBX
VEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CisgICAgYXV0byByZXN1bHQgPSBleGVj
dXRlU2NyaXB0SW5Xb3JsZCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZhbHNlLCBzdGQ6Om51
bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CiAgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC52
YWx1ZSgpIDogSlNDOjpKU1ZhbHVlIHsgfTsKIH0KIApAQCAtNTkxLDcgKzU5MSw3IEBAIFZhbHVl
T3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkJiB3b3JsZCwKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLm5vdGlmeVBh
Z2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKICNlbmRpZgogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZvcmNlVXNlckdlc3R1cmUgPT0gRm9yY2VV
c2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7
CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihwYXJhbWV0ZXJzLmZv
cmNlVXNlckdlc3R1cmUgPT0gRm9yY2VVc2VyR2VzdHVyZTo6WWVzID8gT3B0aW9uYWw8UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxv
cHQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoIWNhbkV4ZWN1dGVTY3JpcHRzKEFi
b3V0VG9FeGVjdXRlU2NyaXB0KSB8fCBpc1BhdXNlZCgpKQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJDYW5ub3QgZXhlY3V0ZSBKYXZhU2NyaXB0IGlu
IHRoaXMgZG9jdW1lbnQiX3MgfSk7CkBAIC03MDMsNyArNzAzLDcgQEAgSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNl
cHRpb24oRE8KIH0KIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbCh3b3JsZCwgeyBzY3JpcHQsIFVSTCB7IH0sIGZh
bHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSk7CisgICAgcmV0dXJuIGV4ZWN1
dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIHsgc2NyaXB0LCBVUkwgeyB9
LCBmYWxzZSwgc3RkOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0pOwogfQogCiBWYWx1ZU9y
RXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVVc2VyQWdlbnRTY3JpcHRJbldvcmxk
SW50ZXJuYWwoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmI2MDU0OTQxOGM5ZDAyYmY3OGI5MDE4ZDAwZDEy
OTdiNGRjOTgxYi4uZDUwOTk2NjU2MzllZTdkYjNmMzZlMGM2OGZmZjE4MmU5N2JiMjNjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0xNTYzLDcgKzE1NjMsNyBAQCBwcml2YXRlOgogICAgICAgICB3cml0ZShmaWxl
LnVybCgpLnN0cmluZygpKTsKICAgICAgICAgd3JpdGUoZmlsZS50eXBlKCkpOwogICAgICAgICB3
cml0ZShmaWxlLm5hbWUoKSk7Ci0gICAgICAgIHdyaXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oZmls
ZS5sYXN0TW9kaWZpZWRPdmVycmlkZSgpLnZhbHVlT3IoLTEpKSk7CisgICAgICAgIHdyaXRlKHN0
YXRpY19jYXN0PGRvdWJsZT4oZmlsZS5sYXN0TW9kaWZpZWRPdmVycmlkZSgpLnZhbHVlX29yKC0x
KSkpOwogICAgIH0KIAogICAgIHZvaWQgd3JpdGUoUHJlZGVmaW5lZENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKQEAgLTMwMzcsMTMgKzMwMzcsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIERP
TVBvaW50SW5pdCBwb2ludDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50LngpKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmICghcmVhZChwb2ludC55KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIXJl
YWQocG9pbnQueikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFyZWFkKHBvaW50LncpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHBvaW50OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggYTI3YzZkMjg5
NjE0ZGQ3NWQxZmVmMmE5OWFmMWFmNDA5MGMxMGJhZi4uYmEzZjRjNTU4MmRhMjFhOWM2NzEyNGJk
ZTQ2OTZjMDIzMGZkMjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTg1Myw3ICs4NTMsNyBAQCBzdWIgR2VuZXJhdGVO
YW1lZEdldHRlckxhbWJkYQogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRuYW1lZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyRnVuY3Rpb25OYW1l
LCAkSURMVHlwZSkgPSBAXzsKICAgICAKLSAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxs
V2l0aFVzaW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAiV1RGOjpudWxsb3B0IiwgInRoaXNPYmpl
Y3QiLCAiICAgICAgICAiKTsKKyAgICBteSBAYXJndW1lbnRzID0gR2VuZXJhdGVDYWxsV2l0aFVz
aW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3QiLCAi
ICAgICAgICAiKTsKICAgICBwdXNoKEBhcmd1bWVudHMsICJwcm9wZXJ0eU5hbWVUb0F0b21TdHJp
bmcocHJvcGVydHlOYW1lKSIpOwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
Z2V0dGVyRnVuY3RvciA9IHZpc2libGVOYW1lZFByb3BlcnR5SXRlbUFjY2Vzc29yRnVuY3Rvcjwk
e0lETFR5cGV9LCAke2NsYXNzTmFtZX0+KFtdICgke2NsYXNzTmFtZX0mIHRoaXNPYmplY3QsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIC0+IGRlY2x0eXBlKGF1dG8pIHtcbiIpOwpAQCAtMjM3
Niw3ICsyMzc2LDcgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRl
bnQKICAgICAgICAgfQogICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiAke2NsYXNz
TmFtZX06OiR7ZW51bWVyYXRpb25WYWx1ZU5hbWV9O1xuIjsKICAgICB9Ci0gICAgJHJlc3VsdCAu
PSAiICAgIHJldHVybiBXVEY6Om51bGxvcHQ7XG4iOworICAgICRyZXN1bHQgLj0gIiAgICByZXR1
cm4gc3RkOjpudWxsb3B0O1xuIjsKICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7CiAKICAgICAkcmVz
dWx0IC49ICJ0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8
JGNsYXNzTmFtZT4oKVxuIjsKQEAgLTI0NjIsNyArMjQ2Miw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1
bHRWYWx1ZQogCiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CiAgICAgICAgIGlm
ICgkdHlwZS0+aXNVbmlvbikgewotICAgICAgICAgICAgcmV0dXJuICJXVEY6Om51bGxvcHQiIGlm
ICR0eXBlLT5pc051bGxhYmxlOworICAgICAgICAgICAgcmV0dXJuICJzdGQ6Om51bGxvcHQiIGlm
ICR0eXBlLT5pc051bGxhYmxlOwogCiAgICAgICAgICAgICBteSAkSURMVHlwZSA9IEdldElETFR5
cGUoJHR5cGVTY29wZSwgJHR5cGUpOwogICAgICAgICAgICAgcmV0dXJuICJjb252ZXJ0PCR7SURM
VHlwZX0+KGxleGljYWxHbG9iYWxPYmplY3QsIGpzTnVsbCgpKTsiOwpAQCAtMjQ3NCw3ICsyNDc0
LDcgQEAgc3ViIEdlbmVyYXRlRGVmYXVsdFZhbHVlCiAgICAgICAgICAgICBteSAkdXNlQXRvbVN0
cmluZyA9ICR0eXBlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9tU3RyaW5nfTsKICAgICAgICAg
ICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJudWxsQXRvbSgpIiA6ICJTdHJpbmcoKSI7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJXVEY6Om51bGxvcHQiOworICAgICAgICByZXR1cm4g
InN0ZDo6bnVsbG9wdCI7CiAgICAgfQogCiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIltdIikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKaW5kZXggMWQyOTFkNjI3YzM4
ODljNzBmYjk2NTYyMmM3NTFmZTc1NDI5NDRjMi4uYzQ1YjU4OWNmN2Q4M2I5YWY4YTIxNGM0ZmNh
NTIyZDAxOWNlYjljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdENhbGxiYWNrSW50ZXJmYWNl
OjpFbnVtPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RDYWxsYmFja0luCiAgICAgICAgIHJldHVybiBU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW06OlZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUg
PT0gInZhbHVlMiIpCiAgICAgICAgIHJldHVybiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW06
OlZhbHVlMjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORW51bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRv
SlNPTkVudW0uY3BwCmluZGV4IGRhYzAwZGMzNDc3NGM0OWY3MDUzYzEwYTc0NDE0NDhlNzY1YmU0
MGIuLjYwYTEyY2U0ZDU2NWY0ZTc4ZjE5NTVlZjY5MzA2MTMwODAxODZiMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9K
U09ORW51bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdERlZmF1bHRUb0pTT05FbnVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCB0ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3REZWZhdWx0VG9KU09ORW51bT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0RGVm
YXVsdFRvSlNPTkVudQogICAgICAgICByZXR1cm4gVGVzdERlZmF1bHRUb0pTT05FbnVtOjpFbnVt
VmFsdWUxOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVlMiIpCiAgICAgICAgIHJl
dHVybiBUZXN0RGVmYXVsdFRvSlNPTkVudW06OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0
IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdERlZmF1bHRUb0pTT05FbnVtPigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IGNhMzMxM2UzY2I2YjllNjhmOWIwODY3Yjc0MzU5YTg1MjhlNGM1Y2Eu
LmIwYjQ4ZGEyNGI0MTA4NDAwNGU5NjcyYThiNDJlOTZjZDY0MzBhZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0xNTQsNyArMTU0LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4g
cGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtVHlwZT4oSlNHbG8KICAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAi
RW51bVZhbHVlMyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVl
MzsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0
T2JqOjpFbnVtVHlwZT4oKQpAQCAtMTk0LDcgKzE5NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6T3B0aW9uYWw+KEpT
R2xvCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CiAg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCiAgICAgICAgIHJldHVybiBU
ZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIq
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6T3B0aW9uYWw+KCkKQEAgLTIyNiw3
ICsyMjYsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwYXJzZUVu
dW1lcmF0aW9uPEFsdGVybmF0ZUVudW1OYW1lPihKU0dsbwogICAgICAgICByZXR1cm4gQWx0ZXJu
YXRlRW51bU5hbWU6OkVudW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFs
dWUyIikKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZUVudW1OYW1lOjpFbnVtVmFsdWUyOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVt
cGxhdGU8PiBjb25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPEFsdGVybmF0ZUVu
dW1OYW1lPigpCkBAIC0yNTYsNyArMjU2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2Jq
OjpFbnVtQT4gcGFyc2VFbnVtZXJhdGlvbjxUZXN0T2JqOjpFbnVtQT4oSlNHbG9iYWxPYmoKICAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiQSIpCiAgICAgICAgIHJldHVybiBUZXN0T2Jq
OjpFbnVtQTo6QTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlczxUZXN0T2JqOjpFbnVtQT4oKQpAQCAtMjg4LDcgKzI4OCw3IEBAIHRlbXBsYXRlPD4gT3B0
aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlRW51bWVyYXRpb248VGVzdE9iajo6RW51bUI+KEpT
R2xvYmFsT2JqCiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkIiKQogICAgICAgICBy
ZXR1cm4gVGVzdE9iajo6RW51bUI6OkI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bUI+KCkKQEAgLTMyMCw3ICszMjAsNyBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RP
Ymo6OkVudW1DPihKU0dsb2JhbE9iagogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZygmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJD
IikKICAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1DOjpDOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1DPigpCkBAIC0zNTQs
NyArMzU0LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZUVudW1l
cmF0aW9uPFRlc3RPYmo6OktpbmQ+KEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJuIFRlc3RP
Ymo6OktpbmQ6OlF1aWNrOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiZGVhZCIpCiAgICAgICAg
IHJldHVybiBUZXN0T2JqOjpLaW5kOjpEZWFkOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBjaGFyKiBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OktpbmQ+KCkKQEAgLTM4Niw3ICszODYsNyBA
QCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlRW51bWVyYXRpb248VGVz
dE9iajo6U2l6ZT4oSlNHbG9iYWxPYmplYwogICAgICAgICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6
U21hbGw7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJtdWNoLW11Y2gtbGFyZ2VyIikKICAgICAg
ICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6Ok11Y2hNdWNoTGFyZ2VyOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGU8PiBjb25z
dCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OlNpemU+KCkKQEAgLTQx
OCw3ICs0MTgsNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBh
cnNlRW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlkZW5jZT4oSgogICAgICAgICByZXR1cm4gVGVz
dE9iajo6Q29uZmlkZW5jZTo6SGlnaDsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImtpbmRhLWxv
dyIpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpDb25maWRlbmNlOjpLaW5kYUxvdzsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBs
YXRlPD4gY29uc3QgY2hhciogZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpDb25m
aWRlbmNlPigpCkBAIC02NTYsNyArNjU2LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9u
YXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAg
ICAgICAgcmVzdWx0Lm51bGxhYmxlRW51bSA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMRW51bWVy
YXRpb248VGVzdE9iajo6RW51bVR5cGU+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbGFibGVF
bnVtVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdC5udWxsYWJsZUVudW0gPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJlc3VsdC5udWxsYWJsZUVudW0gPSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1
ZSBudWxsYWJsZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlOwogICAgIGlmIChpc051bGxPclVuZGVm
aW5lZCkKICAgICAgICAgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CkBAIC02NjgsNyArNjY4LDcgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5
IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2IKICAgICAg
ICAgcmVzdWx0Lm51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0ID0gY29udmVydDxJRExOdWxsYWJs
ZTxJRExMb25nPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1
bHRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0Lm51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0ID0g
V1RGOjpudWxsb3B0OworICAgICAgICByZXN1bHQubnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgSlNWYWx1ZSBudWxsYWJsZU5vZGVWYWx1ZTsKICAgICBpZiAo
aXNOdWxsT3JVbmRlZmluZWQpCiAgICAgICAgIG51bGxhYmxlTm9kZVZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKQEAgLTcwNCw3ICs3MDQsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgICAg
ICByZXN1bHQubnVsbGFibGVVbmlvbk1lbWJlciA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5p
b248SURMTG9uZywgSURMSW50ZXJmYWNlPE5vZGU+Pj4+KGxleGljYWxHbG9iYWxPYmplY3QsIG51
bGxhYmxlVW5pb25NZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25N
ZW1iZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVtYmVy
ID0gc3RkOjpudWxsb3B0OwogICAgIEpTVmFsdWUgcmVxdWlyZWRCdWZmZXJTb3VyY2VWYWx1ZVZh
bHVlOwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAgICAgcmVxdWlyZWRCdWZmZXJT
b3VyY2VWYWx1ZVZhbHVlID0ganNVbmRlZmluZWQoKTsKQEAgLTY5NTksNyArNjk1OSw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9tZXRob2RXaXRoT3B0aW9uYWxSCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIHJlY29y
ZCA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBXVEY6Om51bGxvcHQgOiBjb252
ZXJ0PElETE51bGxhYmxlPElETFJlY29yZDxJRExET01TdHJpbmcsIElETExvbmc+Pj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBhdXRvIHJlY29yZCA9IGFy
Z3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBzdGQ6Om51bGxvcHQgOiBjb252ZXJ0PElE
TE51bGxhYmxlPElETFJlY29yZDxJRExET01TdHJpbmcsIElETExvbmc+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJv
d1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChXVEZNb3ZlKHJlY29yZCkpOyB9KSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKaW5kZXggNmQ5MjA3ZmYxMjcw
MTAzZWZiYzY4YjRhZmFiZjYwMzZmZGQyMzY2OC4uOGFlODkzM2ViYzNjZjU3YTg0YmRhYzYzZjgx
YWE5MDkxNmU2NzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnku
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29u
dmVydERpY3Rpb25hcnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0dsb2JhbE9iamUKICAgICAgICAg
cmVzdWx0Lm51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZSA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExCb29sZWFuPj4+KGxleGljYWxHbG9iYWxP
YmplY3QsIG51bGxhYmxlVW5pb25XaXRoTnVsbERlZmF1bHRWYWx1ZVZhbHVlKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQotICAgICAg
ICByZXN1bHQubnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlID0gV1RGOjpudWxsb3B0
OworICAgICAgICByZXN1bHQubnVsbGFibGVVbmlvbldpdGhOdWxsRGVmYXVsdFZhbHVlID0gc3Rk
OjpudWxsb3B0OwogI2lmIEVOQUJMRShDb25kaXRpb25hbDEzKSB8fCBFTkFCTEUoQ29uZGl0aW9u
YWwxNCkKICAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWU7CiAgICAgaWYgKGlz
TnVsbE9yVW5kZWZpbmVkKQpAQCAtMzU0LDcgKzM1NCw3IEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+
IHBhCiAgICAgICAgIHJldHVybiBUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnk6OkVudW1JblN0YW5k
YWxvbmVEaWN0aW9uYXJ5RmlsZTo6RW51bVZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0g
ImVudW1WYWx1ZTIiKQogICAgICAgICByZXR1cm4gVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5OjpF
bnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU6OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNv
bnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdFN0YW5kYWxvbmVEaWN0aW9u
YXJ5OjpFbnVtSW5TdGFuZGFsb25lRGljdGlvbmFyeUZpbGU+KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRW51bWVy
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKaW5kZXggNWVkNzk4MDhlZTgxODY0YjFkNjg2Yzhi
NjQzY2FiMzNjZGNhMTM5Mi4uNGE3YTkxYTU0NTk1MDBkODE0YmQ5NWVkNGZhOTVlMGZiMTVmZWMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbi5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9u
PiBwYXJzZUVudW1lcmF0aW9uPFRlc3RTdGFuZGFsb25lRW4KICAgICAgICAgcmV0dXJuIFRlc3RT
dGFuZGFsb25lRW51bWVyYXRpb246OkVudW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09
ICJlbnVtVmFsdWUyIikKICAgICAgICAgcmV0dXJuIFRlc3RTdGFuZGFsb25lRW51bWVyYXRpb246
OkVudW1WYWx1ZTI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB0ZW1wbGF0ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXM8VGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlvbj4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApp
bmRleCA4MzNiYWMzM2QyZWZhNTgzZGFiYjQ1ZDMzYmRlYWU0ZjRhNTBkZDBhLi4xNjQzMjkwNDkx
OGU3M2NlMGNmYzBjOWViNDY0ZTYxOGViNDNjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApA
QCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxPcHRpb25hbDxBY3Rpb24+LCBzdGQ6
OmVycm9yX2NvZGU+IGxvYWRBY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxlCiAgICAgICAgIFN0cmlu
ZyBzZWxlY3RvclN0cmluZyA9IGFzU3RyaW5nKHNlbGVjdG9yKS0+dmFsdWUoJmxleGljYWxHbG9i
YWxPYmplY3QpOwogICAgICAgICBpZiAoIWlzVmFsaWRDU1NTZWxlY3RvcihzZWxlY3RvclN0cmlu
ZykpIHsKICAgICAgICAgICAgIC8vIFNraXAgcnVsZXMgd2l0aCBpbnZhbGlkIHNlbGVjdG9ycyB0
byBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZS4KLSAgICAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHsgQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0
b3IsIHNlbGVjdG9yU3RyaW5nKSB9OwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMg
RXhwZWN0ZWQ8T3B0aW9uYWw8Q29udGVudEV4dGVuc2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+
IGxvYWRSdWxlKEpTR2xvYgogICAgIGlmIChhY3Rpb24udmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IHt7eyBXVEZNb3ZlKHRyaWdnZXIudmFsdWUoKSksIFdURk1vdmUoYWN0aW9uLnZhbHVlKCkudmFs
dWUoKSkgfX19OwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsg
c3RkOjpudWxsb3B0IH07CiB9CiAKIHN0YXRpYyBFeHBlY3RlZDxWZWN0b3I8Q29udGVudEV4dGVu
c2lvblJ1bGU+LCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRFbmNvZGVkUnVsZXMoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgcnVsZUpTT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RSZXN1
bHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50UnVsZUxpc3RS
ZXN1bHRzLmgKaW5kZXggOWE3YmU1YWMxMDE2YzQ1YmQ1OGUzYjMxZWQ3YjY3ZTM1MjRmYjZjMi4u
ZTcyYzE0NDdhZDZmM2IyMDM4YzJiMThlNDk5ZjM3ZTk1YmNhMDU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudFJ1bGVMaXN0UmVzdWx0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRSdWxlTGlzdFJlc3Vs
dHMuaApAQCAtODEsMTIgKzgxLDEyIEBAIHN0cnVjdCBDb250ZW50UnVsZUxpc3RSZXN1bHRzIHsK
ICAgICAgICAgT3B0aW9uYWw8U3VtbWFyeT4gc3VtbWFyeTsKICAgICAgICAgZGVjb2RlciA+PiBz
dW1tYXJ5OwogICAgICAgICBpZiAoIXN1bW1hcnkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8Q29udGVudFJ1bGVMaXN0SWRlbnRpZmllciwg
UmVzdWx0Pj4+IHJlc3VsdHM7CiAgICAgICAgIGRlY29kZXIgPj4gcmVzdWx0czsKICAgICAgICAg
aWYgKCFyZXN1bHRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICByZXR1cm4ge3sKICAg
ICAgICAgICAgIFdURk1vdmUoKnN1bW1hcnkpLApAQCAtMTA4LDIyICsxMDgsMjIgQEAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gYXV0byBDb250ZW50UnVsZUxpc3RSZXN1bHRzOjpSZXN1bHQ6OmRl
Y29kZShEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxib29sPiBibG9ja2VkTG9hZDsKICAgICBk
ZWNvZGVyID4+IGJsb2NrZWRMb2FkOwogICAgIGlmICghYmxvY2tlZExvYWQpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gbWFkZUhUVFBTOwogICAgIGRlY29kZXIgPj4gbWFkZUhUVFBTOwog
ICAgIGlmICghbWFkZUhUVFBTKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGJsb2NrZWRD
b29raWVzOwogICAgIGRlY29kZXIgPj4gYmxvY2tlZENvb2tpZXM7CiAgICAgaWYgKCFibG9ja2Vk
Q29va2llcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gbm90aWZpY2F0
aW9uczsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbnM7CiAgICAgaWYgKCFub3RpZmljYXRp
b25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoKmJsb2NrZWRMb2FkKSwK
QEAgLTE0NiwyMiArMTQ2LDIyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGF1dG8gQ29udGVu
dFJ1bGVMaXN0UmVzdWx0czo6U3VtbWFyeTo6ZGVjb2RlKERlY29kZXImIGRlCiAgICAgT3B0aW9u
YWw8Ym9vbD4gYmxvY2tlZExvYWQ7CiAgICAgZGVjb2RlciA+PiBibG9ja2VkTG9hZDsKICAgICBp
ZiAoIWJsb2NrZWRMb2FkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IG1hZGVIVFRQUzsK
ICAgICBkZWNvZGVyID4+IG1hZGVIVFRQUzsKICAgICBpZiAoIW1hZGVIVFRQUykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICBPcHRpb25hbDxib29sPiBibG9ja2VkQ29va2llczsKICAgICBkZWNvZGVyID4+IGJsb2Nr
ZWRDb29raWVzOwogICAgIGlmICghYmxvY2tlZENvb2tpZXMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9u
YWw8Ym9vbD4gaGFzTm90aWZpY2F0aW9uczsKICAgICBkZWNvZGVyID4+IGhhc05vdGlmaWNhdGlv
bnM7CiAgICAgaWYgKCFoYXNOb3RpZmljYXRpb25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7ewog
ICAgICAgICBXVEZNb3ZlKCpibG9ja2VkTG9hZCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKaW5kZXggYjM3MDQxOThlZGFiM2MzZmVkMWRlYTAyNmQw
MjllMzJlNDdmNmUyNi4uNjQ4M2ExZjFiM2E5MWYyY2IxM2QzYTg4ZWEzZDVkYTE5ODJlYjRjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAt
MzI1LDcgKzMyNSw3IEBAIE9wdGlvbmFsPERGQT4gTkZBVG9ERkE6OmNvbnZlcnQoTkZBJiYgbmZh
KQogewogICAgIGF1dG8gc2VyaWFsaXplZE5GQSA9IFNlcmlhbGl6ZWRORkE6OnNlcmlhbGl6ZShX
VEZNb3ZlKG5mYSkpOwogICAgIGlmICghc2VyaWFsaXplZE5GQSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE5GQU5vZGVD
bG9zdXJlcyBuZmFOb2RlQ2xvc3VyZXMgPSByZXNvbHZlRXBzaWxvbkNsb3N1cmVzKCpzZXJpYWxp
emVkTkZBKTsKICAgICBERkEgZGZhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAppbmRleCBmNGE2MWI0OTI1NTQ4MzJiZDA0YTI3OGZh
NWQ1NTYyMjEwMzcyN2EyLi41OWRjZGE2YjkwMjkwZGMxM2YzMWFhZGEwYzlkOWE5NThmOTUxN2Vm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVk
TkZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVk
TkZBLmNwcApAQCAtNTQsNyArNTQsNyBAQCBPcHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxp
emVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQogICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAgICAgYXV0byBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJTZXJpYWxpemVkTkZBIiwgZmlsZSk7CiAgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCB3cm90ZVN1Y2Nl
c3NmdWxseSA9IHdyaXRlQWxsVG9GaWxlKGZpbGUsIG5mYS5ub2RlcykKICAgICAgICAgJiYgd3Jp
dGVBbGxUb0ZpbGUoZmlsZSwgbmZhLnRyYW5zaXRpb25zKQpAQCAtNjQsNyArNjQsNyBAQCBPcHRp
b25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUoTkZBJiYgbmZhKQog
ICAgIGlmICghd3JvdGVTdWNjZXNzZnVsbHkpIHsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGZpbGUpOwogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICBib29sIG1hcHBlZFN1Y2Nlc3NmdWxseSA9IGZhbHNlOwpAQCAtNzIsNyAr
NzIsNyBAQCBPcHRpb25hbDxTZXJpYWxpemVkTkZBPiBTZXJpYWxpemVkTkZBOjpzZXJpYWxpemUo
TkZBJiYgbmZhKQogICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKICAgICBpZiAoIW1hcHBlZFN1Y2Nlc3NmdWxseSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE1ldGFkYXRhIG1ldGFkYXRhIHsKICAgICAgICAgbmZhLm5vZGVzLnNpemUoKSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9VUkxGaWx0ZXJQYXJz
ZXIuY3BwCmluZGV4IGVmNTBjYmIyM2RiYzNmMWRhNTVjZmE0YWJlNGMxNzUzYjhjOGE3NzkuLjU5
ZmRjY2I1MDYzNzNhZWQ0MTgyZGJhYjYxY2Q3ZDg3YTIyY2VmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1VSTEZpbHRlclBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVVJMRmlsdGVyUGFyc2VyLmNwcApAQCAtMjEz
LDcgKzIxMyw3IEBAIHB1YmxpYzoKICAgICAgICAgZmFpbChVUkxGaWx0ZXJQYXJzZXI6OkF0b21D
aGFyYWN0ZXIpOwogICAgIH0KIAotICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJl
Z2luKGJvb2wgPSB0cnVlLCBPcHRpb25hbDxTdHJpbmc+ID0gV1RGOjpudWxsb3B0KQorICAgIHZv
aWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJvb2wgPSB0cnVlLCBPcHRpb25hbDxT
dHJpbmc+ID0gc3RkOjpudWxsb3B0KQogICAgIHsKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5LmNwcAppbmRleCAzNjQ2YjQ3Y2I1MWYyZDMyNTRiZjE5OGQyNWUxNjE1
MWJkOTMzZWUxLi44MmRmYmNlZGRjMjllOGZjNmJiMjE0OGU4ZjgyNDdkZmM2ZDc1YmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeS5jcHAK
QEAgLTUxLDE0ICs1MSwxNCBAQCBDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6Q3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnkoKQogT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcj4gQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnk6OmlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAg
IGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgIC8vIEZJWE1FOiBIb3cgaXMgaXQgaGVscGZ1bCB0byBjYWxsIGlzb2xhdGVkQ29weSBv
biB0aGUgYXJndW1lbnQgdG8gZmluZD8KICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2lkZW50aWZp
ZXJzLmZpbmQobmFtZS5pc29sYXRlZENvcHkoKSk7CiAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9p
ZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpZGVudGlmaWVyLT52YWx1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKaW5kZXggODM1ODQwZGI1ZjVlN2Jh
MDFiMjA3NzQxODAwZDA5ZmM1ZWM1MTVmZi4uYTIyMmNkMDNiYzQ5ODhkZTFjZjc5YjlhZjIwMmM3
YTRlOGFjOGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTQ1
NSw3ICs0NTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRhKFN1YnRsZUNy
eXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgU3VidGxlQ3J5cHRvOgogICAgICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihrZXlEYXRhVmFyaWFudCwKICAgICAgICAgICAgIFsmcHJvbWlzZV0gKEpzb25X
ZWJLZXkmKSAtPiBPcHRpb25hbDxLZXlEYXRhPiB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgW10gKGF1dG8mIGJ1ZmZlclNvdXJjZSkgLT4gT3B0aW9u
YWw8S2V5RGF0YT4gewogICAgICAgICAgICAgICAgIHJldHVybiBLZXlEYXRhIHsgVmVjdG9yIHsg
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVy
U291cmNlLT5ieXRlTGVuZ3RoKCkgfSB9OwpAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBT
dWJ0bGVDcnlwdG86CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgWyZwcm9taXNlXSAoYXV0
byYpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yIH0pOwotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IDRiZmI0ZWZiOGUw
NTdhYjZkOTdkYTIxMWNiOGM3YTk5N2I5NjQ5Y2QuLjAyYjIxNzExZTdmYmU0YmZmMjRhZDI4MTYw
ZTM1MzE2YTZmZDcxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYgcGFyYW1ldGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJl
c3VsdCA9IENyeXB0b0tleUhNQUM6OmdlbmVyYXRlKGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1
ZU9yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CisgICAgYXV0byByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjpnZW5lcmF0ZShobWFjUGFyYW1l
dGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBl
eHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTExMCw3ICsx
MTAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OmltcG9ydEtleShDcnlwdG9LZXlGb3Jt
YXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29ucwogICAgIFJlZlB0cjxDcnlwdG9LZXlITUFD
PiByZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1h
dDo6UmF3OgotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcoaG1hY1Bh
cmFtZXRlcnMubGVuZ3RoLnZhbHVlT3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVy
LCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQ
YXJhbWV0ZXJzLmxlbmd0aC52YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxl
LCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6Sndr
OiB7CiAgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaCwgY29uc3QgU3RyaW5nJiBhbGcpIC0+IGJvb2wgewpAQCAtMTMwLDcgKzEz
MCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1h
dCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25zCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhN
QUM6OmltcG9ydEp3ayhobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVPcigwKSwgaG1hY1BhcmFt
ZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkp
LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKKyAgICAg
ICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0SndrKGhtYWNQYXJhbWV0ZXJzLmxlbmd0
aC52YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RG
OjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNo
ZWNrQWxnQ2FsbGJhY2spKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCmluZGV4IGYyMmNjNTE1ZjRmNzg3
ODg1ZmRjY2ZjN2I4ZTQyNGM3ZmFhNzA4MjcuLjc4YjI3N2VmZGFmYzk3MGJlYmUyYzQwOGFiOGVi
OGQxZTU3ZjhjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpp
bXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYKICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKERhdGFFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRKd2socGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0SndrKHBhcmFtZXRlcnMu
aWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGtleSksIGV4dHJhY3RhYmxlLCB1c2Fn
ZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlNw
a2k6IHsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzU6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJgogICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShw
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShXVEY6OmdldDxWZWN0
b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3Vs
dCA9IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHN0ZDo6
bnVsbG9wdCwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENyeXB0b0tl
eUZvcm1hdDo6UGtjczg6IHsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzU6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlE
YXRhJgogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6
aW1wb3J0UGtjczgocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUo
V1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRl
bnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
ZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAppbmRleCBhNTFiNjZkOGRkZTgxMTM0
YjU4MzBjMmE2YTA5OWQ4MWFiMGNlZDU4Li5mMmY4NjZmMmU2Y2M4OGU4MzM1OGE3Mzk1OTA2MGI0
ZWRjMDM4Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKQEAgLTQxLDI4ICs0MSwyOCBA
QCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29y
aXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpH
Q3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlmICgh
YWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IEdDcnlwdCBjaXBoZXIgb2JqZWN0
IGZvciB0aGUgQUVTIGFsZ29yaXRobSBhbmQgdGhlIENCQyBjaXBoZXIgbW9kZS4KICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhhbmRsZTsKICAgICBnY3J5X2Vycm9y
X3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQ
SEVSX01PREVfQ0JDLCAwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewog
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8v
IFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBn
Y3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKICAgICBp
ZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9n
RXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4gSVYgZm9yIHRo
aXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2KGhhbmRsZSwg
aXYuZGF0YSgpLCBpdi5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgLy8gVXNlIHRoZSBQS0NTIzcgcGFkZGluZy4KQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QKICAgICAgICAgLy8gUGFkZGVkIHNpemUgc2hvdWxkIGJlIGJpZ2dlciB0
aGFuIHNpemUsIGJ1dCBiYWlsIGlmIHRoZSB2YWx1ZSBkb2Vzbid0IGZpdCBpbnRvIGEgYnl0ZS4K
ICAgICAgICAgQVNTRVJUKHBhZGRlZFNpemUgPiBzaXplKTsKICAgICAgICAgaWYgKHBhZGRlZFNp
emUgLSBzaXplID4gMjU1KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHVpbnQ4X3QgcGFkZGluZ1ZhbHVl
ID0gcGFkZGVkU2l6ZSAtIHNpemU7CiAKICAgICAgICAgcGxhaW5UZXh0Lmdyb3cocGFkZGVkU2l6
ZSk7CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgZXJyb3Ig
PSBnY3J5X2NpcGhlcl9maW5hbChoYW5kbGUpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gUGVyZm9ybSB0aGUgZW5jcnlwdGlvbiBhbmQgcmV0cmlldmUgdGhlIGVuY3J5
cHRlZCBvdXRwdXQuCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAg
ICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9lbmNyeXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0
cHV0LnNpemUoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTA0LDM1ICsx
MDQsMzUgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFF
UyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9
IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAg
ICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVy
IG9iamVjdCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBDQkMgY2lwaGVyIG1vZGUuCiAg
ICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CiAgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBH
Q1JZX0NJUEhFUl9NT0RFX0NCQywgMCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVy
cm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7
CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5
cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIElW
IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRpdiho
YW5kbGUsIGl2LmRhdGEoKSwgaXYuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIC8vIEZpbmFsaXplIHRoZSBjaXBoZXIgb2JqZWN0IGJlZm9yZSBwZXJmb3JtaW5n
IHRoZSBkZWNyeXB0aW9uLgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsK
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIGRlY3J5
cHRpb24gYW5kIHJldHJpZXZlIHRoZSBkZWNyeXB0ZWQgb3V0cHV0LgpAQCAtMTQwLDcgKzE0MCw3
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9kZWNy
eXB0KGhhbmRsZSwgb3V0cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgY2lwaGVyVGV4dC5kYXRh
KCksIGNpcGhlclRleHQuc2l6ZSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIC8vIFJlbW92ZSB0aGUgUEtDUyM3IHBhZGRpbmcgZnJvbSB0aGUgZGVjcnlwdGVkIG91dHB1
dC4KQEAgLTE0OCwxNiArMTQ4LDE2IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgICAg
IC8vIFRoZSBwYWRkaW5nIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgbGFzdCBieXRl
LgogICAgICAgICB1aW50OF90IHBhZGRpbmdWYWx1ZSA9IG91dHB1dC5sYXN0KCk7CiAgICAgICAg
IGlmIChwYWRkaW5nVmFsdWUgPiBnY3J5X2NpcGhlcl9nZXRfYWxnb19ibGtsZW4oKmFsZ29yaXRo
bSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBQYWRkaW5nIHZhbHVlIG11c3RuJ3QgYmUgZ3Jl
YXRlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBwYWRkZWQgb3V0cHV0LgogICAgICAgICBzaXplX3Qg
c2l6ZSA9IG91dHB1dC5zaXplKCk7CiAgICAgICAgIGlmIChwYWRkaW5nVmFsdWUgPiBzaXplKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgLy8gQmFpbCBpZiB0aGUgbGFzdCBgcGFkZGluZ1ZhbHVlYCBi
eXRlcyBkb24ndCBoYXZlIHRoZSB2YWx1ZSBvZiBgcGFkZGluZ1ZhbHVlYC4KICAgICAgICAgaWYg
KHN0ZDo6Y291bnQob3V0cHV0LmVuZCgpIC0gcGFkZGluZ1ZhbHVlLCBvdXRwdXQuZW5kKCksIHBh
ZGRpbmdWYWx1ZSkgIT0gcGFkZGluZ1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gU2hy
aW5rIHRoZSBvdXRwdXQgVmVjdG9yIG9iamVjdCB0byBkcm9wIHRoZSBQS0NTIzcgcGFkZGluZy4K
ICAgICAgICAgb3V0cHV0LnNocmluayhzaXplIC0gcGFkZGluZ1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19D
VFJHQ3J5cHQuY3BwCmluZGV4IDNjOTA1OTQwYWQ1YWM5ZTgxY2Q4NGI0MzZlZjIyNTFiMjg2YjZk
ZjcuLjcyYzFlZjQ3OWRmOTIyY2M3ODkyNTk0NzJjMGQ4MmU2ODMzNGQyNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1B
RVNfQ1RSR0NyeXB0LmNwcApAQCAtNDQsMjYgKzQ0LDI2IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNhbGxPcGVyYXRpb24oUEFMOjpHQ3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBv
cGVyCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfcmVzZXQoaGFuZGxlKTsK
ICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJf
c2V0Y3RyKGhhbmRsZSwgY291bnRlci5kYXRhKCksIGNvdW50ZXIuc2l6ZSgpKTsKICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFu
ZGxlKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90
PiBvdXRwdXQoc2l6ZSk7CiAgICAgZXJyb3IgPSBvcGVyYXRpb24oaGFuZGxlLCBvdXRwdXQuZGF0
YSgpLCBvdXRwdXQuc2l6ZSgpLCBkYXRhLCBzaXplKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpHQ3J5cHQ6OkNpcGhlck9w
ZXJhdGlvbiBvcGVyCiAgICAgY29uc3RleHByIHNpemVfdCBibG9ja1NpemUgPSAxNjsKICAgICBh
dXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5z
aXplKCkgKiA4KTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENvbnN0cnVjdCB0
aGUgbGliZ2NyeXB0IGNpcGhlciBvYmplY3QgYW5kIGF0dGFjaCB0aGUga2V5IHRvIGl0LiBLZXkg
aW5mb3JtYXRpb24gb24gdGhpcwogICAgIC8vIGNpcGhlciBvYmplY3Qgd2lsbCBsaXZlIHRocm91
Z2ggYW55IGdjcnlfY2lwaGVyX3Jlc2V0KCkgY2FsbHMuCkBAIC04MiwxMyArODIsMTMgQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0QUVTX0NUUihQQUw6OkdDcnlwdDo6
Q2lwaGVyT3BlcmF0aW9uIG9wZXIKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhl
cl9vcGVuKCZoYW5kbGUsICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfQ1RSLCAwKTsKICAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0
a2V5KGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGJsb2NrIGNvdW50OiAoKGlucHV0VGV4
dC5zaXplKCkgKyBibG9ja1NpemUgLSAxKSAvIGJsb2NrU2l6ZSksIHJlbWFpbmRlciBkaXNjYXJk
ZWQuCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Z2NyeXB0QUVTX0NUUihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXIKICAgICAvLyB0
aGUgbnVtYmVyIG9mIHVuaXF1ZSBjb3VudGVyIHZhbHVlcyB3ZSBjb3VsZCBwcm9kdWNlIGZvciB0
aGUgc3BlY2lmaWVkIGNvdW50ZXIKICAgICAvLyBsZW5ndGgpIGlzIGxvd2VyIHRoYW4gdGhlIGRl
ZHVjZWQgYmxvY2sgY291bnQsIHdlIGJhaWwuCiAgICAgaWYgKGdjcnlfbXBpX2NtcChjb3VudGVy
TGltaXRNUEksIGJsb2NrQ291bnRNUEkpIDwgMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSBjb3VudGVy
IGxlbmd0aCwgaW4gYml0cywgbWF0Y2hlcyB0aGUgc2l6ZSBvZiB0aGUgY291bnRlciBkYXRhLCB3
ZSBkb24ndCBoYXZlIHRvCiAgICAgLy8gdXNlIGFueSBwYXJ0IG9mIHRoZSBjb3VudGVyIFZlY3Rv
cjw+IGFzIG5vbmNlLiBUaGlzIGFsbG93cyB1cyB0byBkaXJlY3RseSBlbmNyeXB0IG9yCkBAIC0x
MjUsNyArMTI1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0QUVT
X0NUUihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9wZXIKICAgICBlcnJvciA9IGdjcnlf
bXBpX3NjYW4oJmNvdW50ZXJEYXRhTVBJLCBHQ1JZTVBJX0ZNVF9VU0csIGNvdW50ZXIuZGF0YSgp
LCBjb3VudGVyLnNpemUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICAvLyBFeHRyYWN0IHRoZSBjb3VudGVyIE1QSSBmcm9tIHRoZSBjb3VudGVyRGF0YU1Q
STogKGNvdW50ZXJEYXRhTVBJICUgY291bnRlckxpbWl0TVBJKS4KQEAgLTE3NSwxNCArMTc1LDE0
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEFFU19DVFIoUEFMOjpH
Q3J5cHQ6OkNpcGhlck9wZXJhdGlvbiBvcGVyCiAgICAgICAgIGVycm9yID0gZ2NyeV9tcGlfcHJp
bnQoR0NSWU1QSV9GTVRfVVNHLCBibG9ja0NvdW50ZXJEYXRhLmRhdGEoKSwgYmxvY2tDb3VudGVy
RGF0YS5zaXplKCksIG51bGxwdHIsIGJsb2NrQ291bnRlck1QSSk7CiAgICAgICAgIGlmIChlcnJv
ciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBFbmNyeXB0L2Rl
Y3J5cHQgdGhpcyBzaW5nbGUgYmxvY2sgd2l0aCB0aGUgYmxvY2stc3BlY2lmaWMgY291bnRlci4g
T3V0cHV0IGZvciB0aGlzCiAgICAgICAgIC8vIHNpbmdsZSBibG9jayBpcyBhcHBlbmRlZCB0byB0
aGUgZ2VuZXJhbCBvdXRwdXQgdmVjdG9yLgogICAgICAgICBhdXRvIGJsb2NrT3V0cHV0ID0gY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIGhhbmRsZSwgYmxvY2tDb3VudGVyRGF0YSwgaW5wdXRUZXh0
LmRhdGEoKSArIGksIGJsb2NrSW5wdXRTaXplKTsKICAgICAgICAgaWYgKCFibG9ja091dHB1dCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3IoKmJsb2NrT3V0cHV0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1BRVNfR0NNR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKaW5kZXggZmZiYzkzYzkxZTk1YmMwOWEwZGNlNTdh
ZDdkZTUxNTlhNDZlNmRjOS4uNGE1MWQxZDcyM2Q5MmM4MTZkMjcyMDM0NjA0ZDE5ZTIxNDYwYWY3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1BRVNfR0NNR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCkBAIC00NCwyOCArNDQsMjggQEAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0gZm9y
IHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0Ojph
ZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAoIWFsZ29yaXRo
bSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5cHQgY2lwaGVyIG9iamVjdCBmb3IgdGhl
IEFFUyBhbGdvcml0aG0gYW5kIHRoZSBHQ00gY2lwaGVyIG1vZGUuCiAgICAgUEFMOjpHQ3J5cHQ6
OkhhbmRsZTxnY3J5X2NpcGhlcl9oZF90PiBoYW5kbGU7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9jaXBoZXJfb3BlbigmaGFuZGxlLCAqYWxnb3JpdGhtLCBHQ1JZX0NJUEhFUl9NT0RF
X0dDTSwgR0NSWV9DSVBIRVJfU0VDVVJFKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAg
ZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgp
KTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdD
cnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZ2l2ZW4g
SVYgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX3NldGl2
KGhhbmRsZSwgaXYuZGF0YSgpLCBpdi5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBhZGRpdG9uYWwgZGF0YSwgaWYgYW55LCBhcyB0
aGUgYXV0aGVudGljYXRpb24gZGF0YSBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgpAQCAtNzMsNyAr
NzMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgICAgICBlcnJvciA9IGdjcnlfY2lw
aGVyX2F1dGhlbnRpY2F0ZShoYW5kbGUsIGFkZGl0aW9uYWxEYXRhLmRhdGEoKSwgYWRkaXRpb25h
bERhdGEuc2l6ZSgpKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25z
dAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIGVuY3J5cHRpb24gYW5kIHJldHJp
ZXZlIHRoZSBlbmNyeXB0ZWQgb3V0cHV0LgpAQCAtODksNyArODksNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZW5jcnlwdChoYW5kbGUsIG91dHB1
dC5kYXRhKCksIG91dHB1dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXpl
KCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6
R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gSWYgdGFnIGxlbmd0
aCB3YXMgc3BlY2lmaWVkLCByZXRyaWV2ZSB0aGUgdGFnIGRhdGEgYW5kIGFwcGVuZCBpdCB0byB0
aGUgb3V0cHV0IHZlY3Rvci4KQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QKICAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxlLCB0YWcuZGF0YSgp
LCB0YWcuc2l6ZSgpKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogCiAgICAgICAgIG91dHB1dC5hcHBlbmRWZWN0b3IodGFnKTsKQEAgLTExMiwyOCAr
MTEyLDI4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0CiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBB
RVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0g
PSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAg
ICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgR0NyeXB0IGNpcGhl
ciBvYmplY3QgZm9yIHRoZSBBRVMgYWxnb3JpdGhtIGFuZCB0aGUgR0NNIGNpcGhlciBtb2RlLgog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAgIGdj
cnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRobSwg
R0NSWV9DSVBIRVJfTU9ERV9HQ00sIDApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gVXNlIHRoZSBnaXZlbiBrZXkgZm9yIHRoaXMgY2lwaGVyIG9iamVjdC4KICAgICBl
cnJvciA9IGdjcnlfY2lwaGVyX3NldGtleShoYW5kbGUsIGtleS5kYXRhKCksIGtleS5zaXplKCkp
OwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVXNlIHRoZSBnaXZlbiBJ
ViBmb3IgdGhpcyBjaXBoZXIgb2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0aXYo
aGFuZGxlLCBpdi5kYXRhKCksIGl2LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGFkZGl0b25hbCBkYXRhLCBpZiBhbnksIGFzIHRo
ZSBhdXRoZW50aWNhdGlvbiBkYXRhIGZvciB0aGlzIGNpcGhlciBvYmplY3QuCkBAIC0xNDEsNyAr
MTQxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAgICAgZXJyb3IgPSBnY3J5X2Np
cGhlcl9hdXRoZW50aWNhdGUoaGFuZGxlLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9u
YWxEYXRhLnNpemUoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7
CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBj
b25zdAogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3Io
ZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEFjY291bnQgZm9yIHRoZSBzcGVjaWZpZWQgdGFn
IGxlbmd0aCB3aGVuIHBlcmZvcm1pbmcgdGhlIGRlY3J5cHRpb24gYW5kIHJldHJpZXZpbmcgdGhl
IGRlY3J5cHRlZCBvdXRwdXQuCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2RlY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0
YSgpLCBvdXRwdXQuc2l6ZSgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVyTGVuZ3RoKTsKICAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIElmIHRhZyBsZW5ndGggd2FzIGlu
ZGVlZCBzcGVjaWZpZWQsIHJldHJpZXZlIHRoZSB0YWcgZGF0YSBhbmQgY29tcGFyZSBpdCBzZWN1
cmVseSB0byB0aGUgdGFnIGRhdGEgdGhhdApAQCAtMTY5LDExICsxNjksMTEgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgY29uc3QKICAgICAgICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9nZXR0YWcoaGFuZGxl
LCB0YWcuZGF0YSgpLCB0YWdMZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9O
T19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbnN0YW50VGltZU1lbWNtcCh0YWcu
ZGF0YSgpLCBjaXBoZXJUZXh0LmRhdGEoKSArIGNpcGhlckxlbmd0aCwgdGFnTGVuZ3RoKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC0xODEsNyArMTgxLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7Ci0gICAgYXV0byBvdXRwdXQgPSBnY3J5
cHRFbmNyeXB0KGtleS5rZXkoKSwgcGFyYW1ldGVycy5pdlZlY3RvcigpLCBwbGFpblRleHQsIHBh
cmFtZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFs
dWVPcigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RW5jcnlwdChrZXkua2V5KCks
IHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5UZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxE
YXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7CiAgICAg
aWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1F
bmNyeXB0KGNvbnN0IENyeXB0CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRv
QWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFl
c0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERl
Y3J5cHQoa2V5LmtleSgpLCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFt
ZXRlcnMuYWRkaXRpb25hbERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVP
cigwKSAvIDgpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVjcnlwdChrZXkua2V5KCksIHBh
cmFtZXRlcnMuaXZWZWN0b3IoKSwgY2lwaGVyVGV4dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0
YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1ZV9vcigwKSAvIDgpOwogICAgIGlm
ICghb3V0cHV0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
ICAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcAppbmRl
eCBiYWIyNjBkNjU4ZjgwMWQ2Yzk0ZDYyMDNhZDMxMzc5YmQ1MzhiYmQyLi5iNjIyYjRlOWY5ODY0
NzAwNjQ1MDQyMjAwNGQ5ODBkZmViZTQ0ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCkBA
IC00MCwyOCArNDAsMjggQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0
V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAgICAvLyBEZXRlcm1p
bmUgdGhlIEFFUyBhbGdvcml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFs
Z29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkg
KiA4KTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBHQ3J5
cHQgY2lwaGVyIG9iamVjdCBmb3IgdGhlIEFFUyBhbGdvcml0aG0gYW5kIHRoZSBBRVMtV3JhcCBj
aXBoZXIgbW9kZS4KICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfY2lwaGVyX2hkX3Q+IGhh
bmRsZTsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhlcl9vcGVuKCZoYW5kbGUs
ICphbGdvcml0aG0sIEdDUllfQ0lQSEVSX01PREVfQUVTV1JBUCwgMCk7CiAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBVc2UgdGhlIGdpdmVuIGtleSBmb3IgdGhpcyBjaXBo
ZXIgb2JqZWN0LgogICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KGhhbmRsZSwga2V5LmRh
dGEoKSwga2V5LnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBGaW5hbGl6ZSB0aGUgY2lwaGVyIG9iamVjdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZW5jcnlw
dGlvbi4KICAgICBlcnJvciA9IGdjcnlfY2lwaGVyX2ZpbmFsKGhhbmRsZSk7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQZXJmb3JtIHRoZSBlbmNyeXB0aW9uLiBUaGUg
cHJvdmlkZWQgb3V0cHV0IGJ1ZmZlciBtdXN0IGJlIDY0IGJpdHMgbGFyZ2VyIHRoYW4gdGhlIGlu
cHV0IGJ1ZmZlci4KQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKICAg
ICBlcnJvciA9IGdjcnlfY2lwaGVyX2VuY3J5cHQoaGFuZGxlLCBvdXRwdXQuZGF0YSgpLCBvdXRw
dXQuc2l6ZSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG91dHB1dDsKQEAgLTgwLDI4ICs4MCwyOCBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGNvbgogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBm
b3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6
OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlmICghYWxnb3Jp
dGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IEdDcnlwdCBjaXBoZXIgb2JqZWN0IGZvciB0
aGUgQUVTIGFsZ29yaXRobSBhbmQgdGhlIEFFUy1XcmFwIGNpcGhlciBtb2RlLgogICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9jaXBoZXJfaGRfdD4gaGFuZGxlOwogICAgIGdjcnlfZXJyb3Jf
dCBlcnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJmhhbmRsZSwgKmFsZ29yaXRobSwgR0NSWV9DSVBI
RVJfTU9ERV9BRVNXUkFQLCAwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAg
IC8vIFVzZSB0aGUgZ2l2ZW4ga2V5IGZvciB0aGlzIGNpcGhlciBvYmplY3QuCiAgICAgZXJyb3Ig
PSBnY3J5X2NpcGhlcl9zZXRrZXkoaGFuZGxlLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKICAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZpbmFsaXplIHRoZSBjaXBoZXIg
b2JqZWN0IGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBlbmNyeXB0aW9uLgogICAgIGVycm9yID0gZ2Ny
eV9jaXBoZXJfZmluYWwoaGFuZGxlKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJP
UikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIC8vIFBlcmZvcm0gdGhlIGRlY3J5cHRpb24uIFRoZSBvdXRwdXQgYnVmZmVyIG1heSBiZSBz
cGVjaWZpZWQgNjQgYml0cyBzaG9ydGVyIHRoYW4gdGhlIGlucHV0IGJ1ZmZlci4KQEAgLTEwOSw3
ICsxMDksNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRVbndyYXBL
ZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbgogICAgIGVycm9yID0gZ2NyeV9jaXBo
ZXJfZGVjcnlwdChoYW5kbGUsIG91dHB1dC5kYXRhKCksIG91dHB1dC5zaXplKCksIGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBy
ZXR1cm4gb3V0cHV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKaW5kZXggMGZlNjc1MTE1NDU0NmM2NDc2
OTk0MWI4NWQ4MzBkYmU0MDFhZWViZi4uMDU0ZWM4MjUyYjEyOWM4ZDEwMjZiMmM5NzRkNDA2NzJh
ODU2MzcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1FQ0RIR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCkBAIC00OCwxNSArNDgsMTUgQEAgc3RhdGlj
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4cF90IGJhc2VL
ZXlTZXhwLCBnY3J5X3NleHAKICAgICB7CiAgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2Ny
eV9zZXhwX3Q+IGRTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGJhc2VLZXlTZXhwLCAiZCIsIDAp
KTsKICAgICAgICAgaWYgKCFkU2V4cCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gZGF0YSA9
IG1waURhdGEoZFNleHApOwogICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBnY3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3MgcmF3KSh2
YWx1ZSAlYikpIiwgZGF0YS0+c2l6ZSgpLCBkYXRhLT5kYXRhKCkpOwogICAgICAgICBpZiAoIWRh
dGFTZXhwKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRW5jcnlwdCB0aGUgZGF0YSBzLWV4
cHJlc3Npb24gd2l0aCB0aGUgcHVibGljIGtleS4KQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlKGdjcnlfc2V4cF90IGJhc2VLZXlT
ZXhwLCBnY3J5X3NleHAKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3BrX2VuY3J5cHQo
JmNpcGhlclNleHAsIGRhdGFTZXhwLCBwdWJsaWNLZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIC8vIFJldHJpZXZlIHRoZSBzaGFyZWQgcG9pbnQgdmFsdWUgZnJv
bSB0aGUgZ2VuZXJhdGVkIHMtZXhwcmVzc2lvbiwgd2hpY2ggaXMgb2YgdGhlIGZvbGxvd2luZyBm
b3JtOgpAQCAtNzQsMjQgKzc0LDI0IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwCiAgICAgLy8g
ICAgIChlIC4uLikpKQogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4geE1QSShn
Y3J5X21waV9uZXcoMCkpOwogICAgIGlmICgheE1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc1NleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4o
Y2lwaGVyU2V4cCwgInMiLCAwKSk7CiAgICAgICAgIGlmICghc1NleHApCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHNNUEkoZ2NyeV9zZXhwX250
aF9tcGkoc1NleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOwogICAgICAgICBpZiAoIXNNUEkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3BvaW50X3Q+
IHBvaW50KGdjcnlfbXBpX3BvaW50X25ldygwKSk7CiAgICAgICAgIGlmICghcG9pbnQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBlcnJvciA9IGdjcnlfbXBpX2VjX2RlY29kZV9wb2ludChwb2ludCwg
c01QSSwgbnVsbHB0cik7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgLy8gV2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSB4LWNv
b3JkaW5hdGUuCiAgICAgICAgIGdjcnlfbXBpX3BvaW50X3NuYXRjaF9nZXQoeE1QSSwgbnVsbHB0
ciwgbnVsbHB0ciwgcG9pbnQucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKaW5kZXgg
ODgxODIzZjgxOTBlY2YxZjNmNTdhMzU1Y2M0MTVjYWM4NGRhMjlhOS4uMmRiYmEwOTZiZjE2ODM3
OGExNjYxMTZiMjQ4NDgwYTQxNDg3YzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAKQEAgLTY5
LDExICs2OSwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWdu
KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0
byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0
aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2Vz
dEFsZ29yaXRobSk7CiAgICAgICAgIGlmICghZGlnZXN0KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
ZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogICAgICAgICBkYXRh
SGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKQEAgLTg0LDEzICs4NCwxMyBAQCBzdGF0aWMg
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aQogICAgIHsKICAgICAgICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNo
QWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghc2hh
QWxnb3JpdGhtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2Ny
eV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHJhdykoaGFzaCAl
cyAlYikpIiwKICAgICAgICAgICAgICpzaGFBbGdvcml0aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0
YUhhc2guZGF0YSgpKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9y
PHVpCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZzaWduYXR1cmVTZXhw
LCBkYXRhU2V4cCwga2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAg
ICAvLyBSZXRyaWV2ZSBNUEkgZGF0YSBvZiB0aGUgcmVzdWx0aW5nIHIgYW5kIHMgaW50ZWdlcnMu
IFRoZXkgYXJlIGNvbmNhdGVuYXRlZCBpbnRvCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBj
b25zdCBWZWN0b3I8dWkKIAogICAgIGlmICghZXh0cmFjdEVDRFNBU2lnbmF0dXJlSW50ZWdlcihz
aWduYXR1cmUsIHNpZ25hdHVyZVNleHAsICJyIiwga2V5U2l6ZUluQnl0ZXMpCiAgICAgICAgIHx8
ICFleHRyYWN0RUNEU0FTaWduYXR1cmVJbnRlZ2VyKHNpZ25hdHVyZSwgc2lnbmF0dXJlU2V4cCwg
InMiLCBrZXlTaXplSW5CeXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2lnbmF0dXJlOwogfQpAQCAt
MTI5LDExICsxMjksMTEgQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5
X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHMKICAgICB7CiAgICAgICAg
IGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxn
b3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpk
aWdlc3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAg
ZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHMKICAgICAgICAga2V5U2l6ZUluQnl0ZXMsIHNpZ25hdHVyZS5k
YXRhKCksIGtleVNpemVJbkJ5dGVzLCBzaWduYXR1cmUuZGF0YSgpICsga2V5U2l6ZUluQnl0ZXMp
OwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0Ny
eXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0IHRoZSBk
YXRhIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIHJhdyBoYXNoZWQgZGF0YS4KQEAgLTE1Mywx
MyArMTUzLDEzIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAgewogICAgICAgICBhdXRv
IHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBlcnJv
ciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyByYXcp
KGhhc2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXpl
KCksIGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IGJmNjY5NmEz
YTMxOGQ4MGE3MjVjZTBlZWJiMjBmZjM4YmU5NjdmYTEuLjFiMTYyYjcyN2U5Y2I0NDRkYmEwNWE0
YjM1YThiZTk0MDQ0OWZkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtNDgsMTggKzQ4LDE4
IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAKICAgICBhdXRvIG1hY0FsZ29yaXRobSA9IGht
YWNBbGdvcml0aG0oaWRlbnRpZmllcik7CiAgICAgaWYgKCFtYWNBbGdvcml0aG0pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAvLyBXZSBjYW4gaW1tZWRpYXRlbHkgZGlzY2FyZCBpbnZhbGlkIG91dHB1dCBsZW5ndGhzLCBv
dGhlcndpc2UgbmVlZGVkIGZvciB0aGUgZXhwYW5kIHN0ZXAuCiAgICAgc2l6ZV90IG1hY0xlbmd0
aCA9IGdjcnlfbWFjX2dldF9hbGdvX21hY2xlbigqbWFjQWxnb3JpdGhtKTsKICAgICBpZiAobGVu
Z3RoSW5CeXRlcyA+IG1hY0xlbmd0aCAqIDI1NSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9tYWNfaGRfdD4gaGFuZGxlOwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlf
bWFjX29wZW4oJmhhbmRsZSwgKm1hY0FsZ29yaXRobSwgMCwgbnVsbHB0cik7CiAgICAgaWYgKGVy
cm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBTdGVwIDEgLS0gRXh0cmFjdC4gQSBwc2V1ZG8t
cmFuZG9tIGtleSBpcyBnZW5lcmF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobQpAQCAt
NzQsMjUgKzc0LDI1IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERl
cml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAgICAgICAgICAgICBlcnJv
ciA9IGdjcnlfbWFjX3NldGtleShoYW5kbGUsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CiAg
ICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQQUw6
OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAg
ICBlcnJvciA9IGdjcnlfbWFjX3dyaXRlKGhhbmRsZSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7
CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgICBQ
QUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAg
ICAgICBzaXplX3QgcHNldWRvUmFuZG9tS2V5U2l6ZSA9IHBzZXVkb1JhbmRvbUtleS5zaXplKCk7
CiAgICAgICAgIGVycm9yID0gZ2NyeV9tYWNfcmVhZChoYW5kbGUsIHBzZXVkb1JhbmRvbUtleS5k
YXRhKCksICZwc2V1ZG9SYW5kb21LZXlTaXplKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25n
IGlmIGxpYmdjcnlwdCBkaWRuJ3Qgd3JpdGUgb3V0IHRoZSBwcm9wZXIgYW1vdW50IG9mIGRhdGEu
CiAgICAgICAgIGlmIChwc2V1ZG9SYW5kb21LZXlTaXplICE9IG1hY0xlbmd0aCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIAogICAgIC8vIFN0ZXAgIzIgLS0gRXhwYW5kLgpAQCAtMTA4LDEzICsxMDgsMTMg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY28KICAgICAgICAgICAgIGVycm9yID0gZ2NyeV9tYWNf
cmVzZXQoaGFuZGxlKTsKICAgICAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGVycm9yID0gZ2NyeV9t
YWNfc2V0a2V5KGhhbmRsZSwgcHNldWRvUmFuZG9tS2V5LmRhdGEoKSwgcHNldWRvUmFuZG9tS2V5
LnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewog
ICAgICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUKDApID0gZW1wdHkgc3Ry
aW5nICh6ZXJvIGxlbmd0aCkgLS0gaS5lLiBlbXB0eSBsYXN0QmxvY2sKQEAgLTEyOCwxOSArMTI4
LDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvCiAgICAgICAgICAgICBlcnJvciA9IGdjcnlf
bWFjX3dyaXRlKGhhbmRsZSwgYmxvY2tEYXRhLmRhdGEoKSwgYmxvY2tEYXRhLnNpemUoKSk7CiAg
ICAgICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAg
ICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBzaXplX3QgYmxvY2tTaXplID0gbGFzdEJsb2NrLnNp
emUoKTsKICAgICAgICAgICAgIGVycm9yID0gZ2NyeV9tYWNfcmVhZChoYW5kbGUsIGxhc3RCbG9j
ay5kYXRhKCksICZibG9ja1NpemUpOwogICAgICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OwotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gU29t
ZXRoaW5nIHdlbnQgd3JvbmcgaWYgbGliZ2NyeXB0IGRpZG4ndCB3cml0ZSBvdXQgdGhlIHByb3Bl
ciBhbW91bnQgb2YgZGF0YS4KICAgICAgICAgICAgIGlmIChibG9ja1NpemUgIT0gbGFzdEJsb2Nr
LnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUg
Y3VycmVudCBibG9jayBkYXRhIHRvIHRoZSBvdXRwdXQgdmVjdG9yLgogICAgICAgICAgICAgb3V0
cHV0LmFwcGVuZFZlY3RvcihsYXN0QmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggMGQy
MzEyZDFjZTEwODU0OGRkM2M0MGM1YjRjNzY1ZTNjOTJhMDkwMi4uMzBhMzI4OTI1NjY1YjFmNjlj
NzJlNWNiYjM5NmRmYzQ2MDNmNjZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCkBAIC02MiwyMSAr
NjIsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsY3VsYXRlU2lnbmF0
dXJlKGludCBhbGdvcml0aG0sIGNvbnN0IFZlY3RvcjwKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxl
PGdjcnlfbWFjX2hkX3Q+IGhkOwogICAgIGdjcnlfZXJyb3JfdCBlcnIgPSBnY3J5X21hY19vcGVu
KCZoZCwgYWxnb3JpdGhtLCAwLCBudWxscHRyKTsKICAgICBpZiAoZXJyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXJy
ID0gZ2NyeV9tYWNfc2V0a2V5KGhkLCBrZXlEYXRhLCBrZXkuc2l6ZSgpKTsKICAgICBpZiAoZXJy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZXJyID0gZ2NyeV9tYWNfd3JpdGUoaGQsIGRhdGEsIGRhdGFMZW5ndGgpOwog
ICAgIGlmIChlcnIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgZGlnZXN0TGVuZ3RoID0gZ2NyeV9tYWNfZ2V0
X2FsZ29fbWFjbGVuKGFsZ29yaXRobSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZShk
aWdlc3RMZW5ndGgpOwogICAgIGVyciA9IGdjcnlfbWFjX3JlYWQoaGQsIHNpZ25hdHVyZS5kYXRh
KCksICZkaWdlc3RMZW5ndGgpOwogICAgIGlmIChlcnIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaWduYXR1cmUucmVz
aXplKGRpZ2VzdExlbmd0aCk7CiAgICAgcmV0dXJuIHNpZ25hdHVyZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0Ny
eXB0LmNwcAppbmRleCA3YzkwMDUxNWJjMTkwYjY1YTY4ZmY4ODZkZTlkOGI5NGE2NWM5ZTc1Li45
YjExYmFhYzJmYTY2NzhiNDljYWUzMTE1MjIwNjU3MGU3YjJjMmU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJH
Q3J5cHQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlEYXRhCiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSBoYXNoIGFsZ29yaXRobSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgZGVy
aXZhdGlvbi4KICAgICBhdXRvIGhhc2hBbGdvcml0aG0gPSBkaWdlc3RBbGdvcml0aG0oaGFzaElk
ZW50aWZpZXIpOwogICAgIGlmICghaGFzaEFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIExlbmd0aCwg
aW4gYml0cywgaXMgYSBtdWx0aXBsZSBvZiA4LCBhcyBndWFyYW50ZWVkIGJ5IENyeXB0b0FsZ29y
aXRobVBCS0RGMjo6ZGVyaXZlQml0cygpLgogICAgIEFTU0VSVCghKGxlbmd0aCAlIDgpKTsKQEAg
LTUxLDcgKzUxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVy
aXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleURhdGEKICAgICBnY3J5X2Vycm9yX3Qg
ZXJyb3IgPSBnY3J5X2tkZl9kZXJpdmUoa2V5RGF0YS5kYXRhKCksIGtleURhdGEuc2l6ZSgpLCBH
Q1JZX0tERl9QQktERjIsICpoYXNoQWxnb3JpdGhtLCBzYWx0RGF0YS5kYXRhKCksIHNhbHREYXRh
LnNpemUoKSwgaXRlcmF0aW9ucywgcmVzdWx0LnNpemUoKSwgcmVzdWx0LmRhdGEoKSk7CiAgICAg
aWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6Omxv
Z0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NT
MV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKaW5kZXggMzg5ZmJiZGEzYjU4ZjUyOTg2
YjA1Yjk2NDMyNGQzMDQzYjQyYzEwMi4uMDZlMjhlNzQwZTJkNGY0NDIyNjhjZmMxODc3MDJiZjA3
OTg2MzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVu
Y3J5cHQoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgICAgIHBsYWluVGV4
dC5zaXplKCksIHBsYWluVGV4dC5kYXRhKCkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05P
X0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gRW5jcnlwdCBkYXRhIHdpdGggdGhlIHByb3ZpZGVkIGtleS4gVGhlIHJldHVy
bmVkIHMtZXhwcmVzc2lvbiBpcyBvZiB0aGlzIGZvcm06CkBAIC01MiwxMyArNTIsMTMgQEAgc3Rh
dGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChnY3J5X3NleHBfdCBr
ZXlTZXhwLCBjb25zdCBWZWN0b3IKICAgICBlcnJvciA9IGdjcnlfcGtfZW5jcnlwdCgmY2lwaGVy
U2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCBgYWAgaW50ZWdlci4KICAg
ICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBhU2V4cChnY3J5X3NleHBfZmluZF90
b2tlbihjaXBoZXJTZXhwLCAiYSIsIDApKTsKICAgICBpZiAoIWFTZXhwKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIG1waVplcm9QcmVmaXhlZERhdGEoYVNleHAsIGtleVNpemVJbkJ5dGVzKTsKIH0KQEAgLTcx
LDcgKzcxLDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlw
dChnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3IKICAgICAgICAgY2lwaGVyVGV4dC5z
aXplKCksIGNpcGhlclRleHQuZGF0YSgpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIC8vIERlY3J5cHQgZGF0YSB3aXRoIHRoZSBwcm92aWRlZCBrZXkuIFRoZSByZXR1cm5l
ZCBzLWV4cHJlc3Npb24gaXMgb2YgdGhpcyBmb3JtOgpAQCAtODIsMTMgKzgyLDEzIEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yCiAgICAgZXJyb3IgPSBnY3J5X3BrX2RlY3J5cHQoJnBsYWluU2V4
cCwgZW5jVmFsU2V4cCwga2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICAvLyBSZXR1cm4gTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIGB2YWx1ZWAgaW50ZWdlci4K
ICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiB2YWx1ZVNleHAoZ2NyeV9zZXhw
X2ZpbmRfdG9rZW4ocGxhaW5TZXhwLCAidmFsdWUiLCAwKSk7CiAgICAgaWYgKCF2YWx1ZVNleHAp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICByZXR1cm4gbXBpRGF0YSh2YWx1ZVNleHApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCA0Y2E0MDBmYmExNDZlYTA1NTU2M2Y3
MGY3ZTQ4YWEwOTIzNTQ1MzU3Li4yYzFhMzFkZjM3YjMwZTU4N2NjYjJlZGQ4MjM4ZjY2NzVmN2E2
OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcApAQCAt
NDIsMTEgKzQyLDExIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNp
Z24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAgICAgewogICAgICAgICBh
dXRvIGRpZ2VzdEFsZ29yaXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29y
aXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGln
ZXN0QWxnb3JpdGhtKTsKICAgICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGRh
dGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpAQCAtNTcsMTMgKzU3LDEzIEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhh
c2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFz
aGFBbGdvcml0aG0pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X3NleHBfYnVpbGQoJmRhdGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3MgcGtjczEpKGhh
c2ggJXMgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCks
IGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc1LDEzICs3NSwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZl
Y3Rvcjx1aQogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJl
U2V4cCwgZGF0YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgLy8gUmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCBzIGludGVnZXIuCiAgICAg
UEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc1NleHAoZ2NyeV9zZXhwX2ZpbmRfdG9r
ZW4oc2lnbmF0dXJlU2V4cCwgInMiLCAwKSk7CiAgICAgaWYgKCFzU2V4cCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKHNTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CkBAIC05
MywxMSArOTMsMTEgQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3Nl
eHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHMKICAgICB7CiAgICAgICAgIGF1
dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpkaWdl
c3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZGF0
YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHMKICAgICAgICAgc2lnbmF0dXJlLnNpemUoKSwgc2lnbmF0dXJlLmRh
dGEoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBDb25zdHJ1Y3Qg
dGhlIGRhdGEgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMgUEtDUyMxLXBhZGRlZCBoYXNoZWQg
ZGF0YS4KQEAgLTExNywxMyArMTE3LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxib29sPiBnY3J5cHRW
ZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzCiAgICAg
ewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdv
cml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIo
ZGF0YShmbGFncyBwa2NzMSkoaGFzaCAlcyAlYikpIiwKICAgICAgICAgICAgICpzaGFBbGdvcml0
aG0sIGRhdGFIYXNoLnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKICAgICAgICAgaWYgKGVycm9y
ICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
R0NyeXB0LmNwcAppbmRleCBlNTFlMGQ3YjUwZDM5ZmNjZDcyN2UyNDQ2MzkzMzFjYzRjZDAyOWQy
Li5kNzRlNzkyNGVmMWEwYzYzNDgzZDUyNmFlOWE5MGM2MjUyYWViOTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJT
QV9PQUVQR0NyeXB0LmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNo
QWxnCiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1l
KGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQo
JmRhdGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3Mgb2FlcCkoaGFzaC1hbGdvICVzKShsYWJl
bCAlYikodmFsdWUgJWIpKSIsCiAgICAgICAgICAgICAqc2hhQWxnb3JpdGhtLCBsYWJlbFZlY3Rv
ci5zaXplKCksIGxhYmVsVmVjdG9yLmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSwgcGxhaW5UZXh0
LmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAg
ICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTYyLDEzICs2MiwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVp
bnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZwog
ICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfZW5jcnlwdCgmY2lwaGVyU2V4cCwgZGF0
YVNleHAsIGtleVNleHApOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAg
ICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8g
UmV0dXJuIE1QSSBkYXRhIG9mIHRoZSBlbWJlZGRlZCBhIGludGVnZXIuCiAgICAgUEFMOjpHQ3J5
cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gYVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oY2lwaGVy
U2V4cCwgImEiLCAwKSk7CiAgICAgaWYgKCFhU2V4cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlaZXJv
UHJlZml4ZWREYXRhKGFTZXhwLCBrZXlTaXplSW5CeXRlcyk7CiB9CkBAIC04MSwxMyArODEsMTMg
QEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGcKICAgICB7CiAgICAgICAgIGF1dG8gc2hhQWxnb3Jp
dGhtID0gaGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAoIXNoYUFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZW5jVmFsU2V4cCwgbnVsbHB0ciwgIihlbmMtdmFsKGZs
YWdzIG9hZXApKGhhc2gtYWxnbyAlcykobGFiZWwgJWIpKHJzYShhICViKSkpIiwKICAgICAgICAg
ICAgICpzaGFBbGdvcml0aG0sIGxhYmVsVmVjdG9yLnNpemUoKSwgbGFiZWxWZWN0b3IuZGF0YSgp
LCBjaXBoZXJUZXh0LnNpemUoKSwgY2lwaGVyVGV4dC5kYXRhKCkpOwogICAgICAgICBpZiAoZXJy
b3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC05OSwxMyArOTks
MTMgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGcKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBn
Y3J5X3BrX2RlY3J5cHQoJnBsYWluU2V4cCwgZW5jVmFsU2V4cCwga2V5U2V4cCk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBSZXR1cm4gTVBJIGRhdGEgb2YgdGhlIGVt
YmVkZGVkIHZhbHVlIGludGVnZXIuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBf
dD4gdmFsdWVTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKHBsYWluU2V4cCwgInZhbHVlIiwgMCkp
OwogICAgIGlmICghdmFsdWVTZXhwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1waURhdGEodmFsdWVTZXhw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCmluZGV4IGJmNzNkODRjMzNjOGIzYmQ3ZmI4
ZmVlZGYxNzY1MzNjMDNjYjVlMzcuLjdkZTllZWQyMDNmOGVhZDlmNzQyYWE4MGY3YzU1OGExZjBk
YTcwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtNDMsMTEgKzQzLDExIEBAIHN0
YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdG9yPHVpCiAgICAgewogICAgICAgICBhdXRvIGRpZ2VzdEFsZ29yaXRo
bSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwog
ICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8g
ZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKICAg
ICAgICAgaWYgKCFkaWdlc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGRhdGFIYXNoID0gZGlnZXN0LT5j
b21wdXRlSGFzaCgpOwpAQCAtNTgsMTMgKzU4LDEzIEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVp
CiAgICAgewogICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhh
c2hBbGdvcml0aG1JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmRh
dGFTZXhwLCBudWxscHRyLCAiKGRhdGEoZmxhZ3MgcHNzKShzYWx0LWxlbmd0aCAldSkoaGFzaCAl
cyAlYikpIiwKICAgICAgICAgICAgIHNhbHRMZW5ndGgsICpzaGFBbGdvcml0aG0sIGRhdGFIYXNo
LnNpemUoKSwgZGF0YUhhc2guZGF0YSgpKTsKICAgICAgICAgaWYgKGVycm9yICE9IEdQR19FUlJf
Tk9fRVJST1IpIHsKICAgICAgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzYsMTMgKzc2LDEzIEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwg
Y29uc3QgVmVjdG9yPHVpCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZz
aWduYXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5U2V4cCk7CiAgICAgaWYgKGVycm9yICE9IEdQR19F
UlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9CiAKICAgICAvLyBSZXRyaWV2ZSBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYHNgIGlu
dGVnZXIuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc1NleHAoZ2NyeV9z
ZXhwX2ZpbmRfdG9rZW4oc2lnbmF0dXJlU2V4cCwgInMiLCAwKSk7CiAgICAgaWYgKCFzU2V4cCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBtcGlaZXJvUHJlZml4ZWREYXRhKHNTZXhwLCBrZXlTaXplSW5CeXRl
cyk7CiB9CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZl
cmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHMKICAgICB7
CiAgICAgICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRo
bShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CiAgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGht
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKCpkaWdlc3RBbGdvcml0aG0pOwogICAgICAgICBpZiAoIWRpZ2VzdCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsK
ICAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgc3RhdGljIE9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlT
ZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHMKICAgICAgICAgc2lnbmF0dXJlLnNpemUoKSwg
c2lnbmF0dXJlLmRhdGEoKSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsK
ICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAv
LyBDb25zdHJ1Y3QgdGhlIGBkYXRhYCBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyBQU1MtcGFk
ZGVkIGhhc2hlZCBkYXRhLgpAQCAtMTE4LDEzICsxMTgsMTMgQEAgc3RhdGljIE9wdGlvbmFsPGJv
b2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHMKICAgICB7CiAgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0gaGFzaEFsZ29yaXRobU5h
bWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXNoYUFsZ29yaXRobSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwg
bnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIs
CiAgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCks
IGRhdGFIYXNoLmRhdGEoKSk7CiAgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CiAgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggNmFkNDAzZjQ1NThhYzg2ODRhODYwNGUwNWZj
NDRjN2RlZWJmODQ4Zi4uMDNhMGI4OTM3MTBlMWI0YmIxYWM0NDA2YTZiNzdmMWE5MmI0MTg5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlw
dC5jcHAKQEAgLTEyMCwyMCArMTIwLDIwIEBAIE9wdGlvbmFsPENyeXB0b0tleVBhaXI+IENyeXB0
b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAg
Z2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZnZW5rZXlTZXhwLCBudWxscHRy
LCAiKGdlbmtleShlY2MoY3VydmUgJXMpKSkiLCBjdXJ2ZU5hbWUoY3VydmUpKTsKICAgICBpZiAo
ZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJy
b3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhw
X3Q+IGtleVBhaXJTZXhwOwogICAgIGVycm9yID0gZ2NyeV9wa19nZW5rZXkoJmtleVBhaXJTZXhw
LCBnZW5rZXlTZXhwKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgewogICAg
ICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFBBTDo6
R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHB1YmxpY0tleVNleHAoZ2NyeV9zZXhwX2ZpbmRf
dG9rZW4oa2V5UGFpclNleHAsICJwdWJsaWMta2V5IiwgMCkpOwogICAgIFBBTDo6R0NyeXB0OjpI
YW5kbGU8Z2NyeV9zZXhwX3Q+IHByaXZhdGVLZXlTZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGtl
eVBhaXJTZXhwLCAicHJpdmF0ZS1rZXkiLCAwKSk7CiAgICAgaWYgKCFwdWJsaWNLZXlTZXhwIHx8
ICFwcml2YXRlS2V5U2V4cCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcHVibGljS2V5ID0gQ3J5cHRvS2V5RUM6
OmNyZWF0ZShpZGVudGlmaWVyLCBjdXJ2ZSwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9y
bUVDS2V5Q29udGFpbmVyKHB1YmxpY0tleVNleHAucmVsZWFzZSgpKSwgdHJ1ZSwgdXNhZ2VzKTsK
ICAgICBhdXRvIHByaXZhdGVLZXkgPSBDcnlwdG9LZXlFQzo6Y3JlYXRlKGlkZW50aWZpZXIsIGN1
cnZlLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybUVDS2V5Q29udGFpbmVyKHByaXZh
dGVLZXlTZXhwLnJlbGVhc2UoKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwpAQCAtMjQyLDcgKzI0
Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZT4gY3VydmVGb3JJ
ZGVudGlmaWVyKGNvbnN0IFZlY3Rvcjx1aW50OF90CiAgICAgaWYgKENyeXB0b0NvbnN0YW50czo6
bWF0Y2hlcyhkYXRhLCBzaXplLCBDcnlwdG9Db25zdGFudHM6OnNfc2VjcDUyMXIxSWRlbnRpZmll
cikpCiAgICAgICAgIHJldHVybiBDcnlwdG9LZXlFQzo6TmFtZWRDdXJ2ZTo6UDUyMTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVm
UHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRTcGtpKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgVmVjdG9yPHVp
bnQ4X3Q+JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAg
dXNhZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9L
ZXlSU0FHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlS
U0FHQ3J5cHQuY3BwCmluZGV4IDViODk3Mjc1MDc2Yzk4YTExZmFjYzgzMWYyNzViMDA2ZjExNTc3
M2EuLjVhNWYzNjRlY2U3MGJiMjdiZGYzZDZjNTE0NTI2ZjNjNDg5YjQ1ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKQEAg
LTE3NCw3ICsxNzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8dWludDMyX3Q+IGV4cG9uZW50VmVjdG9y
VG9VSW50MzIoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBvbmVudAogewogICAgIGlmIChleHBv
bmVudC5zaXplKCkgPiA0KSB7CiAgICAgICAgIGlmIChzdGQ6OmFueV9vZihleHBvbmVudC5iZWdp
bigpLCBleHBvbmVudC5lbmQoKSAtIDQsIFtdKHVpbnQ4X3QgZWxlbWVudCkgeyByZXR1cm4gISFl
bGVtZW50OyB9KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHVpbnQzMl90IHJlc3VsdCA9IDA7
CkBAIC0zMDYsNyArMzA2LDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRTcGtpKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgfQog
ICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIs
IGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwg
Q3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihwbGF0Zm9ybUtl
eS5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVibGljLCBQbGF0
Zm9ybVJTQUtleUNvbnRhaW5lcihwbGF0Zm9ybUtleS5yZWxlYXNlKCkpLCBleHRyYWN0YWJsZSwg
dXNhZ2VzKSk7CiB9CiAKIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0
UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyPiBoYXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC00MDEsNyAr
NDAxLDcgQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVP
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlw
ZTo6UHJpdmF0ZSwgUGxhdGZvcm1SU0FLZXlDb250YWluZXIocGxhdGZvcm1LZXkucmVsZWFzZSgp
KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRv
S2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6OlByaXZhdGUsIFBsYXRmb3JtUlNBS2V5
Q29udGFpbmVyKHBsYXRmb3JtS2V5LnJlbGVhc2UoKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpKTsK
IH0KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFNw
a2koKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5
cHRVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGls
aXRpZXMuY3BwCmluZGV4IDk4ODk1MWQwZTIxNzliNGJhMWFkZDkzZmVlOGFkZjc1NWM5MDJjNDUu
LjgzMDBlNzA1ZTcyN2Q0MzBjNjU4YzhiNTJkOTcxNTRhODJlODg3OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgT3B0aW9uYWw8Y29uc3QgY2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV81MTI6CiAgICAgICAgIHJldHVybiAic2hhNTEyIjsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIH0KIApAQCAtNjQsNyArNjQsNyBAQCBPcHRpb25hbDxpbnQ+IGhtYWNBbGdvcml0
aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAgICAgICAgcmV0dXJuIEdDUllfTUFDX0hN
QUNfU0hBNTEyOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC04Miw3ICs4Miw3IEBA
IE9wdGlvbmFsPGludD4gZGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6
CiAgICAgICAgIHJldHVybiBHQ1JZX01EX1NIQTUxMjsKICAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIE9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0+IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtCiAgICAgY2Fz
ZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgogICAgICAgICByZXR1cm4gUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIH0KIApAQCAtMTExLDcgKzExMSw3IEBAIE9wdGlvbmFsPHNpemVfdD4gbXBpTGVuZ3RoKGdj
cnlfbXBpX3QgcGFyYW1NUEkpCiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfcHJp
bnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwgcGFyYW1NUEkpOwog
ICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgIFBBTDo6R0NyeXB0
Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIGRhdGFMZW5ndGg7CkBA
IC0xMjIsNyArMTIyLDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBtcGlMZW5ndGgoZ2NyeV9zZXhwX3Qg
cGFyYW1TZXhwKQogICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBz
LWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2Ny
eV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJ
X0ZNVF9VU0cpKTsKICAgICBpZiAoIXBhcmFtTVBJKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1waUxlbmd0
aChwYXJhbU1QSSk7CiB9CkBAIC0xMzIsMTQgKzEzMiwxNCBAQCBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKICAgICAvLyBSZXRyaWV2ZSB0aGUg
TVBJIGxlbmd0aC4KICAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7CiAgICAg
aWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBDb3B5IHRoZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVy
bHktc2l6ZWQgYnVmZmVyLgogICAgIFZlY3Rvcjx1aW50OF90PiBvdXRwdXQoKmxlbmd0aCk7CiAg
ICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBv
dXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBudWxscHRyLCBwYXJhbU1QSSk7CiAgICAgaWYg
KGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vy
cm9yKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMTUwLDcgKzE1
MCw3IEBAIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5
X21waV90IHBhcmFtTVBJLCBzaXplX3QgdGFyZ2V0CiAgICAgLy8gUmV0cmlldmUgdGhlIE1QSSBs
ZW5ndGguIEJhaWwgaWYgdGhlIHJldHJpZXZlZCBsZW5ndGggaXMgbG9uZ2VyIHRoYW4gdGFyZ2V0
IGxlbmd0aC4KICAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7CiAgICAgaWYg
KCFsZW5ndGggfHwgKmxlbmd0aCA+IHRhcmdldExlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZpbGwgb3V0
IHRoZSBvdXRwdXQgYnVmZmVyIHdpdGggemVyb3MuIFByb3Blcmx5IGRldGVybWluZSB0aGUgemVy
byBwcmVmaXggbGVuZ3RoLAogICAgIC8vIGFuZCBjb3B5IHRoZSBNUEkgZGF0YSBpbnRvIG1lbW9y
eSBhcmVhIGZvbGxvd2luZyB0aGUgcHJlZml4IChpZiBhbnkpLgpAQCAtMTU5LDcgKzE1OSw3IEBA
IE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gbXBpWmVyb1ByZWZpeGVkRGF0YShnY3J5X21waV90
IHBhcmFtTVBJLCBzaXplX3QgdGFyZ2V0CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9t
cGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBvdXRwdXQuZGF0YSgpICsgcHJlZml4TGVuZ3RoLCB0
YXJnZXRMZW5ndGgsIG51bGxwdHIsIHBhcmFtTVBJKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VS
Ul9OT19FUlJPUikgewogICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIHJldHVybiBvdXRwdXQ7CkBAIC0xNzAsNyArMTcwLDcgQEAgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKICAgICAvLyBS
ZXRyaWV2ZSB0aGUgTVBJIHZhbHVlIHN0b3JlZCBpbiB0aGUgcy1leHByZXNzaW9uOiAobmFtZSBt
cGktZGF0YSkKICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdj
cnlfc2V4cF9udGhfbXBpKHBhcmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7CiAgICAgaWYg
KCFwYXJhbU1QSSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBtcGlEYXRhKHBhcmFtTVBJKTsKIH0KQEAgLTE4
MCw3ICsxODAsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waVplcm9QcmVmaXhlZERh
dGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwLCBzaXplX3QgdGFyZwogICAgIC8vIFJldHJpZXZlIHRo
ZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQog
ICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250
aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKICAgICBpZiAoIXBhcmFtTVBJ
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIG1waVplcm9QcmVmaXhlZERhdGEocGFyYW1NUEksIHRhcmdldExl
bmd0aCk7CiB9CkBAIC0xODksNyArMTg5LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBt
cGlTaWduZWREYXRhKGdjcnlfbXBpX3QgbXBpKQogewogICAgIGF1dG8gZGF0YSA9IG1waURhdGEo
bXBpKTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoZGF0YS0+YXQoMCkgJiAweDgwKQog
ICAgICAgICBkYXRhLT5pbnNlcnQoMCwgMHgwMCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBtcGlTaWduZWREYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkK
IHsKICAgICBhdXRvIGRhdGEgPSBtcGlEYXRhKHBhcmFtU2V4cCk7CiAgICAgaWYgKCFkYXRhKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGRhdGEtPmF0KDApICYgMHg4MCkKICAgICAgICAgZGF0YS0+aW5zZXJ0KDAs
IDB4MDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9TZXJpYWxp
emVkQ3J5cHRvS2V5V3JhcEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwR0NyeXB0LmNwcAppbmRleCAzNGNkMDY3Y2YyNGY2MmJj
NmVjZmE2NzIwNzY1MDc3YmJmOWE2NTEzLi4yNTBkMmYyMzVjZGEyZDQ0ZDFkNzQ3ZDRmMzI4ZGUy
ZmMyNzZkYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L1Nlcmlh
bGl6ZWRDcnlwdG9LZXlXcmFwR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwR0NyeXB0LmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRlZmF1bHRX
ZWJDcnlwdG9NYXN0ZXJLZXkoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAvLyBJbml0aWFs
bHkgdGhlc2UgaGVscGVyIGZ1bmN0aW9ucyB3ZXJlIGludGVuZGVkIHRvIHBlcmZvcm0gS0VLIHdy
YXBwaW5nIGFuZCB1bndyYXBwaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2tleXMvQ3J5cHRvS2V5RUMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRv
S2V5RUMuY3BwCmluZGV4IGJiY2Q4ZDgxMjVkZTc1ZDc5MGQwNDQxMmFjZWYyYWUwNGY4ODdhMGIu
LjNkYzU4ZjUzNDc3NTQ2NzgzOGE2NmJhNWZjNDhkZGNjYjY2NmU0ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPENyeXB0b0tleUVDOjpOYW1lZEN1cnZlPiB0b05hbWVkQ3VydmUoY29uc3QgU3Ry
aW5nJiBjdXJ2ZSkKICAgICBpZiAoY3VydmUgPT0gUDUyMSkKICAgICAgICAgcmV0dXJuIENyeXB0
b0tleUVDOjpOYW1lZEN1cnZlOjpQNTIxOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBDcnlwdG9LZXlFQzo6Q3J5cHRvS2V5RUMoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBDcnlw
dG9LZXlUeXBlIHR5cGUsIFBsYXRmb3JtRUNLZXlDb250YWluZXImJiBwbGF0Zm9ybUtleSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5UlNBLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5jcHAKaW5kZXggYTdjNjA3OTFiOTFlOWY1ZDJk
NDgxNzNkNjg3MmVhYzJlNDNjZDdhNi4uOGQwYmZkODFiZDQ1NDRjOGVlZjc3ZTk0NTA3Zjk5MmYw
MjVmMDFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5
UlNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuY3Bw
CkBAIC01Nyw4ICs1Nyw4IEBAIFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1w
b3J0SndrKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtCiAgICAgaWYgKGtleURh
dGEuZC5pc051bGwoKSkgewogICAgICAgICAvLyBpbXBvcnQgcHVibGljIGtleQogICAgICAgICBh
dXRvIHB1YmxpY0tleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpjcmVhdGVQ
dWJsaWMoV1RGTW92ZSgqbW9kdWx1cyksIFdURk1vdmUoKmV4cG9uZW50KSk7Ci0gICAgICAgIC8v
IE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNl
aG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIFdURjo6bnVs
bG9wdC4KLSAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFz
aC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCAqcHVi
bGljS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIC8vIE5vdGlj
ZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVy
LiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4K
KyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaC52YWx1
ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgKnB1YmxpY0tl
eUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgIH0KIAogICAgIC8vIGltcG9y
dCBwcml2YXRlIGtleQpAQCAtNjcsOCArNjcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlw
dG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoa2V5RGF0YS5wLmlzTnVsbCgpICYmIGtl
eURhdGEucS5pc051bGwoKSAmJiBrZXlEYXRhLmRwLmlzTnVsbCgpICYmIGtleURhdGEuZHAuaXNO
dWxsKCkgJiYga2V5RGF0YS5xaS5pc051bGwoKSkgewogICAgICAgICBhdXRvIHByaXZhdGVLZXlD
b21wb25lbnRzID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZShXVEZNb3Zl
KCptb2R1bHVzKSwgV1RGTW92ZSgqZXhwb25lbnQpLCBXVEZNb3ZlKCpwcml2YXRlRXhwb25lbnQp
KTsKLSAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBp
cyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhh
c2ggaXMgV1RGOjpudWxsb3B0LgotICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVhdGUo
YWxnb3JpdGhtLCBoYXNoLnZhbHVlT3IoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEp
LCAhIWhhc2gsICpwcml2YXRlS2V5Q29tcG9uZW50cywgZXh0cmFjdGFibGUsIHVzYWdlcyk7Cisg
ICAgICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEgaXMganVz
dCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVjdCBpZiBoYXNoIGlz
IHN0ZDo6bnVsbG9wdC4KKyAgICAgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29y
aXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEh
aGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICB9
CiAKICAgICBpZiAoa2V5RGF0YS5wLmlzTnVsbCgpIHx8IGtleURhdGEucS5pc051bGwoKSB8fCBr
ZXlEYXRhLmRwLmlzTnVsbCgpIHx8IGtleURhdGEuZHEuaXNOdWxsKCkgfHwga2V5RGF0YS5xaS5p
c051bGwoKSkKQEAgLTEwMSw4ICsxMDEsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9L
ZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobQogCiAg
ICAgaWYgKCFrZXlEYXRhLm90aCkgewogICAgICAgICBhdXRvIHByaXZhdGVLZXlDb21wb25lbnRz
ID0gQ3J5cHRvS2V5UlNBQ29tcG9uZW50czo6Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0
YShXVEZNb3ZlKCptb2R1bHVzKSwgV1RGTW92ZSgqZXhwb25lbnQpLCBXVEZNb3ZlKCpwcml2YXRl
RXhwb25lbnQpLCBXVEZNb3ZlKGZpcnN0UHJpbWVJbmZvKSwgV1RGTW92ZShzZWNvbmRQcmltZUlu
Zm8pLCB7IH0pOwotICAgICAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZl
Y3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKKyAgICAgICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFf
MSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlm
IGhhc2ggaXMgc3RkOjpudWxsb3B0LgorICAgICAgICByZXR1cm4gQ3J5cHRvS2V5UlNBOjpjcmVh
dGUoYWxnb3JpdGhtLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8xKSwgISFoYXNoLCAqcHJpdmF0ZUtleUNvbXBvbmVudHMsIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OwogICAgIH0KIAogICAgIFZlY3RvcjxDcnlwdG9LZXlSU0FDb21wb25lbnRzOjpQcmltZUluZm8+
IG90aGVyUHJpbWVJbmZvczsKQEAgLTEyNiw4ICsxMjYsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5UlNB
PiBDcnlwdG9LZXlSU0E6OmltcG9ydEp3ayhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobQogICAgIH0KIAogICAgIGF1dG8gcHJpdmF0ZUtleUNvbXBvbmVudHMgPSBDcnlwdG9LZXlS
U0FDb21wb25lbnRzOjpjcmVhdGVQcml2YXRlV2l0aEFkZGl0aW9uYWxEYXRhKFdURk1vdmUoKm1v
ZHVsdXMpLCBXVEZNb3ZlKCpleHBvbmVudCksIFdURk1vdmUoKnByaXZhdGVFeHBvbmVudCksIFdU
Rk1vdmUoZmlyc3RQcmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFdURk1vdmUo
b3RoZXJQcmltZUluZm9zKSk7Ci0gICAgLy8gTm90aWNlOiBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNob3VsZCBub3QgaGF2ZSBhbnkg
ZWZmZWN0IGlmIGhhc2ggaXMgV1RGOjpudWxsb3B0LgotICAgIHJldHVybiBDcnlwdG9LZXlSU0E6
OmNyZWF0ZShhbGdvcml0aG0sIGhhc2gudmFsdWVPcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMSksICEhaGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKKyAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlz
IGp1c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFz
aCBpcyBzdGQ6Om51bGxvcHQuCisgICAgcmV0dXJuIENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29y
aXRobSwgaGFzaC52YWx1ZV9vcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEh
aGFzaCwgKnByaXZhdGVLZXlDb21wb25lbnRzLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKIH0KIAog
SnNvbldlYktleSBDcnlwdG9LZXlSU0E6OmV4cG9ydEp3aygpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNTWFjLmNwcApp
bmRleCAyZTc3NjQwZjBjMDg1MTc1MDFhZWMyYzljNjdkYmZiNzY5NDU1ZGM3Li44YjliM2JmZThk
OGU2OTFhNzdjYjY0NGI1YmEzMmEzNTMwMzAyN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19HQ01NYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU1hYy5jcHAKQEAgLTczLDEy
ICs3MywxMiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWN5cHRBRVNf
R0NNKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbgogCiBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFF
UyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICByZXR1cm4g
ZW5jcnlwdEFFU19HQ00ocGFyYW1ldGVycy5pdlZlY3RvcigpLCBrZXkua2V5KCksIHBsYWluVGV4
dCwgcGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0
aC52YWx1ZU9yKDApIC8gOCk7CisgICAgcmV0dXJuIGVuY3J5cHRBRVNfR0NNKHBhcmFtZXRlcnMu
aXZWZWN0b3IoKSwga2V5LmtleSgpLCBwbGFpblRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25hbERh
dGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKIH0KIAog
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1BRVNfR0NNOjpwbGF0
Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJU
ZXh0KQogewotICAgIHJldHVybiBkZWN5cHRBRVNfR0NNKHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwg
a2V5LmtleSgpLCBjaXBoZXJUZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCks
IHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlT3IoMCkgLyA4KTsKKyAgICByZXR1cm4gZGVjeXB0
QUVTX0dDTShwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGtleS5rZXkoKSwgY2lwaGVyVGV4dCwgcGFy
YW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52YWx1
ZV9vcigwKSAvIDgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAppbmRleCBk
NzgwZWYwMTYwZGIwOWI0MWJkODA2MDE2ZTE0ODEwNGM1YTMwNjhmLi5lZTg0YWU5NzJlN2E1MmM1
YTJhYWM1NzIyNDg5ZjAxZjgzMzI4NDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9LZXlFQyYgYmFzZUtleSwg
Y29uc3QgQ3J5cHRvS2V5RUMmIHB1YmxpY0tleSkKIHsKLSAgICBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IHJlc3VsdCA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKICAgICBWZWN0b3I8dWludDhfdD4gZGVyaXZlZEtl
eShiYXNlS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRm
Lm9yZy9odG1sL3JmYzYwOTAjc2VjdGlvbi00LgogICAgIHNpemVfdCBzaXplID0gZGVyaXZlZEtl
eS5zaXplKCk7CiAgICAgaWYgKCFDQ0VDQ3J5cHRvckNvbXB1dGVTaGFyZWRTZWNyZXQoYmFzZUtl
eS5wbGF0Zm9ybUtleSgpLCBwdWJsaWNLZXkucGxhdGZvcm1LZXkoKSwgZGVyaXZlZEtleS5kYXRh
KCksICZzaXplKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtSE1BQ01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhNQUNNYWMuY3BwCmluZGV4IGY4ZGIzYjJmOTkzZmUwNjhhMzhmNmMzYTNjY2JkNTM1
NWNhOTgxNWMuLjMwMzA3NzIwMGQ3NTdjNzhiYTM2ZmU2Mjk3YmNkZWYzZGJjZTM1MzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFj
LmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q0NIbWFjQWxnb3JpdGhtPiBj
b21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aQogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAgICAgICAgcmV0dXJuIGtDQ0ht
YWNBbGdTSEE1MTI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0RpZ2VzdEFsZ29yaXRobS5oCmluZGV4IDA4OTFkMzkx
NGE5NGRlNDQ4ZjFjNTI0MjFlZjNhYjJhMWYyMWUxMTkuLjhkMTc4MTdlNzQxOGU5NTEwZThlMDM4
N2ZhOThlN2QyNWM1NmUyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9EaWdlc3RBbGdvcml0aG0uaApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaQogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKICAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9LZXlFQ01hYy5jcHAKaW5kZXggZjQ3ZTFkOGE3MzcwYjI2NTZmMDk4YzE1M2VjNTFkNDQ4YWVh
Y2UxMS4uZjU0ZGI3N2QyOTM2MjAwNjk2MDRjM2UyMTNjODc3NjkxMGQzN2ViYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKQEAgLTExMSw3ICsxMTEs
NyBAQCBPcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIENDRUNDcnlwdG9yUmVmIGNjUHVibGlj
S2V5ID0gbnVsbHB0cjsKICAgICBDQ0VDQ3J5cHRvclJlZiBjY1ByaXZhdGVLZXkgPSBudWxscHRy
OwogICAgIGlmIChDQ0VDQ3J5cHRvckdlbmVyYXRlUGFpcihzaXplLCAmY2NQdWJsaWNLZXksICZj
Y1ByaXZhdGVLZXkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwdWJsaWNLZXkgPSBDcnlwdG9LZXlFQzo6Y3Jl
YXRlKGlkZW50aWZpZXIsIGN1cnZlLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIFBsYXRmb3JtRUNL
ZXlDb250YWluZXIoY2NQdWJsaWNLZXkpLCB0cnVlLCB1c2FnZXMpOwogICAgIGF1dG8gcHJpdmF0
ZUtleSA9IENyeXB0b0tleUVDOjpjcmVhdGUoaWRlbnRpZmllciwgY3VydmUsIENyeXB0b0tleVR5
cGU6OlByaXZhdGUsIFBsYXRmb3JtRUNLZXlDb250YWluZXIoY2NQcml2YXRlS2V5KSwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0tleVJTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleVJT
QU1hYy5jcHAKaW5kZXggMjc1NWU3MzVmZTZkYzg0NmJiNGYxYmU4ZGRlNTJjMTQ3YjlmMDk5Mi4u
NmYxYTg0MjIyYWIyZmIxM2ZiNDhmNGJjNTUzNmQ1M2EwYjE0ODllZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcApAQCAtMzE4LDggKzMxOCw4IEBA
IFJlZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZW50aWZpCiAgICAgaWYgKENDUlNBQ3J5cHRvckltcG9ydChrZXlE
YXRhLmRhdGEoKSArIGhlYWRlclNpemUsIGtleURhdGEuc2l6ZSgpIC0gaGVhZGVyU2l6ZSwgJmNj
UHVibGljS2V5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBOb3RpY2U6IENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1c3QgYSBwbGFjZWhvbGRlci4gSXQg
c2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBpcyBXVEY6Om51bGxvcHQuCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZU9y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBl
OjpQdWJsaWMsIFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyKGNjUHVibGljS2V5KSwgZXh0cmFjdGFi
bGUsIHVzYWdlcykpOworICAgIC8vIE5vdGljZTogQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzEgaXMganVzdCBhIHBsYWNlaG9sZGVyLiBJdCBzaG91bGQgbm90IGhhdmUgYW55IGVmZmVj
dCBpZiBoYXNoIGlzIHN0ZDo6bnVsbG9wdC4KKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyeXB0
b0tleVJTQShpZGVudGlmaWVyLCBoYXNoLnZhbHVlX29yKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQdWJsaWMsIFBsYXRmb3JtUlNBS2V5
Q29udGFpbmVyKGNjUHVibGljS2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0U3BraSgpIGNvbnN0
CkBAIC0zNzUsOCArMzc1LDggQEAgUmVmUHRyPENyeXB0b0tleVJTQT4gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWYKICAgICBpZiAoQ0NS
U0FDcnlwdG9ySW1wb3J0KGtleURhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwga2V5RGF0YS5zaXpl
KCkgLSBoZWFkZXJTaXplLCAmY2NQcml2YXRlS2V5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAvLyBOb3RpY2U6IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xIGlzIGp1
c3QgYSBwbGFjZWhvbGRlci4gSXQgc2hvdWxkIG5vdCBoYXZlIGFueSBlZmZlY3QgaWYgaGFzaCBp
cyBXVEY6Om51bGxvcHQuCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRl
bnRpZmllciwgaGFzaC52YWx1ZU9yKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwg
ISFoYXNoLCBDcnlwdG9LZXlUeXBlOjpQcml2YXRlLCBQbGF0Zm9ybVJTQUtleUNvbnRhaW5lcihj
Y1ByaXZhdGVLZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgLy8gTm90aWNlOiBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSBpcyBqdXN0IGEgcGxhY2Vob2xkZXIuIEl0IHNo
b3VsZCBub3QgaGF2ZSBhbnkgZWZmZWN0IGlmIGhhc2ggaXMgc3RkOjpudWxsb3B0LgorICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVfb3Io
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzEpLCAhIWhhc2gsIENyeXB0b0tleVR5cGU6
OlByaXZhdGUsIFBsYXRmb3JtUlNBS2V5Q29udGFpbmVyKGNjUHJpdmF0ZUtleSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpKTsKIH0KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9L
ZXlSU0E6OmV4cG9ydFBrY3M4KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCmluZGV4IGE3ZjA4ZmQxNzc0
MzNmZjJiZjY1NDA3ZmNkZGEyNjgyM2RjZTRkYzYuLjg5OTMzODg4YjIyZDlhMzk4ODRmOTFhZTgy
ZWIzMzg5YjlhZDExYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2Vy
aWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNyZWF0ZUFuZFN0b3JlTWFzdGVyS2V5KCkKICAg
ICBzdGF0dXMgPSBTZWNBY2Nlc3NDcmVhdGUoKF9fYnJpZGdlIENGU3RyaW5nUmVmKWxvY2FsaXpl
ZEl0ZW1OYW1lLCBudWxscHRyLCAmYWNjZXNzUmVmKTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IGNyZWF0ZSBhIHNlY3VyaXR5IGFjY2VzcyBvYmplY3Qg
Zm9yIHN0b3JpbmcgV2ViQ3J5cHRvIG1hc3RlciBrZXksIGVycm9yICVkIiwgKGludClzdGF0dXMp
OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KICAgICBSZXRhaW5QdHI8U2VjQWNjZXNzUmVmPiBhY2Nlc3MgPSBhZG9wdENG
KGFjY2Vzc1JlZik7CiAKQEAgLTExNSwxNCArMTE1LDE0IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBp
ZiAoc3RhdHVzKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IGNyZWF0ZSBhIHRydXN0
ZWQgYXBwbGljYXRpb24gb2JqZWN0IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBl
cnJvciAlZCIsIChpbnQpc3RhdHVzKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgUmV0YWluUHRyPFNlY1RydXN0
ZWRBcHBsaWNhdGlvblJlZj4gdHJ1c3RlZEFwcCA9IGFkb3B0Q0YodHJ1c3RlZEFwcFJlZik7CiAK
ICAgICBzdGF0dXMgPSBTZWNBQ0xTZXRDb250ZW50cyhhY2wsIChfX2JyaWRnZSBDRkFycmF5UmVm
KUBbIChfX2JyaWRnZSBpZCl0cnVzdGVkQXBwLmdldCgpIF0sIChfX2JyaWRnZSBDRlN0cmluZ1Jl
Zilsb2NhbGl6ZWRJdGVtTmFtZSwga1NlY0tleWNoYWluUHJvbXB0UmVxdWlyZVBhc3NwaGFzZSk7
CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBzZXQgQUNM
IGZvciBXZWJDcnlwdG8gbWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogI2VuZGlmCiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICBzdGF0dXMgPSBTZWNJdGVtQWRkKChDRkRpY3Rpb25hcnlSZWYpYXR0
cmlidXRlcywgbnVsbHB0cik7CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBXVEZMb2dBbHdh
eXMoIkNhbm5vdCBzdG9yZSBXZWJDcnlwdG8gbWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0
YXR1cyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hc3RlcktleURhdGE7CkBAIC0xNjUsNyAr
MTY1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZmluZE1hc3RlcktleSgp
CiAgICAgaWYgKHN0YXR1cykgewogICAgICAgICBpZiAoc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RG
b3VuZCAmJiBzdGF0dXMgIT0gZXJyU2VjVXNlckNhbmNlbGVkKQogICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJDb3VsZCBub3QgZmluZCBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiwg
ZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGtleURhdGEgPSBhZG9wdENGKGtleURhdGFSZWYpOwogICAgIHJldHVybiBiYXNlNjREZWNv
ZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihrZXlEYXRh
LmdldCgpKSksIENGRGF0YUdldExlbmd0aChrZXlEYXRhLmdldCgpKSk7CkBAIC0xODMsNyArMTgz
LDcgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5
KCkKICAgICAgICAgcmV0dXJuIG1hc3RlcktleTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgZGVsZXRlRGVmYXVs
dFdlYkNyeXB0b01hc3RlcktleSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
b3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDT3BlblNTTC5jcHAKaW5kZXgg
NGIzZGVhMzBkYTY2MmYxZTk1YTdhNTU4ZjRkNjUxYzhkODJlMzUyZS4uYzllYzk5YzlhODliMWFh
OTlkNzA0MGVkZmQxZWYxZjIxMzZhODA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ09wZW5TU0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DQkNPcGVuU1NMLmNw
cApAQCAtNTMsMTQgKzUzLDE0IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNy
eXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIHsKICAgICBjb25z
dCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7CiAgICAg
aWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4OwogICAgIGludCBs
ZW47CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAgICBpZiAo
IShjdHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHNpemVfdCBwbGFpblNpemUgPSBwbGFpblRleHQuc2l6ZSgpOwogICAgIGNvbnN0IHNpemVfdCBj
aXBoZXJUZXh0TGVuID0gcm91bmRVcFRvTXVsdGlwbGVPZihFVlBfQ0lQSEVSX2Jsb2NrX3NpemUo
YWxnb3JpdGhtKSwgcGxhaW5TaXplICsgMSk7CkBAIC02OCwxNSArNjgsMTUgQEAgc3RhdGljIE9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5LCBjb25zdAogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5jcnlwdGlvbiBvcGVyYXRp
b24KICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEluaXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0s
IG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRo
ZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkIG91dHB1
dAogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgY2lwaGVyVGV4dC5k
YXRhKCksICZsZW4sIHBsYWluVGV4dC5kYXRhKCksIHBsYWluU2l6ZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBG
aW5hbGl6ZSB0aGUgZW5jcnlwdGlvbi4gRnVydGhlciBjaXBoZXJ0ZXh0IGJ5dGVzIG1heSBiZSB3
cml0dGVuIGF0IHRoaXMgc3RhZ2UKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEZpbmFsX2V4KGN0
eC5nZXQoKSwgY2lwaGVyVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IGNpcGhlclRleHQ7CiB9CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QK
IHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNp
emUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4
OwogCkBAIC05NiwyMCArOTYsMjAgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
Y3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogCiAgICAgLy8g
Q3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAgaWYgKCEoY3R4ID0gRXZwQ2lw
aGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJbml0aWFsaXpl
IHRoZSBkZWNyeXB0aW9uIG9wZXJhdGlvbgogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0SW5pdF9l
eChjdHguZ2V0KCksIGFsZ29yaXRobSwgbnVsbHB0ciwga2V5LmRhdGEoKSwgaXYuZGF0YSgpKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIFByb3ZpZGUgdGhlIG1lc3NhZ2UgdG8gYmUgZGVjcnlwdGVkLCBhbmQgb2J0
YWluIHRoZSBwbGFpbnRleHQgb3V0cHV0CiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRVcGRhdGUo
Y3R4LmdldCgpLCBwbGFpblRleHQuZGF0YSgpLCAmbGVuLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lw
aGVyU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcGxhaW5UZXh0TGVuID0gbGVuOwogCiAgICAgLy8gRmluYWxpemUg
dGhlIGRlY3J5cHRpb24uIEZ1cnRoZXIgcGxhaW50ZXh0IGJ5dGVzIG1heSBiZSB3cml0dGVuIGF0
IHRoaXMgc3RhZ2UKICAgICBpZiAoMSAhPSBFVlBfRGVjcnlwdEZpbmFsX2V4KGN0eC5nZXQoKSwg
cGxhaW5UZXh0LmRhdGEoKSArIGxlbiwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGxhaW5UZXh0TGVuICs9IGxl
bjsKIAogICAgIHBsYWluVGV4dC5zaHJpbmsocGxhaW5UZXh0TGVuKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DRkJPcGVuU1NM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19D
RkJPcGVuU1NMLmNwcAppbmRleCBmODBkYTFiNjQ2ZDllMjYzNTQ2OTIzMjYwMDYyYzhhOTYyZjU0
ZDg1Li5hYjY4N2Y2Y2NlM2EyMzYxY2I1ZTQyYzE1ZDg1Y2E4ZmQxNzg2Nzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCT3Bl
blNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NGQk9wZW5TU0wuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0o
a2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQ
dHIgY3R4OwogCkBAIC02MiwyMyArNjIsMjMgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogCiAg
ICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAgaWYgKCEoY3R4ID0g
RXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBEaXNh
YmxlIHBhZGRpbmcKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZyhjdHgu
Z2V0KCksIDApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5jcnlwdGlvbiBvcGVyYXRp
b24KICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEluaXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0s
IG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRhdGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRo
ZSBtZXNzYWdlIHRvIGJlIGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkIG91dHB1
dAogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgY2lwaGVyVGV4dC5k
YXRhKCksICZsZW4sIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gRmluYWxpemUgdGhlIGVuY3J5cHRpb24uIEZ1cnRoZXIgY2lwaGVydGV4dCBieXRlcyBt
YXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRGaW5h
bF9leChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpICsgbGVuLCAmbGVuKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBjaXBoZXJUZXh0OwogfQpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IGNvbnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGht
KGtleS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4
UHRyIGN0eDsKIApAQCAtOTcsMTkgKzk3LDE5IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIAog
ICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9
IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgZGVjcnlwdGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRGVjcnlw
dEluaXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5kYXRhKCksIGl2LmRh
dGEoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJlIGRlY3J5cHRlZCwg
YW5kIG9idGFpbiB0aGUgcGxhaW50ZXh0IG91dHB1dAogICAgIGlmICgxICE9IEVWUF9EZWNyeXB0
VXBkYXRlKGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSwgJmxlbiwgY2lwaGVyVGV4dC5kYXRh
KCksIGNpcGhlclNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRmluYWxpemUgdGhlIGRlY3J5cHRpb24uIEZ1
cnRoZXIgcGxhaW50ZXh0IGJ5dGVzIG1heSBiZSB3cml0dGVuIGF0IHRoaXMgc3RhZ2UKICAgICBp
ZiAoMSAhPSBFVlBfRGVjcnlwdEZpbmFsX2V4KGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSAr
IGxlbiwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcGxhaW5UZXh0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk9wZW5T
U0wuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUk9wZW5TU0wuY3BwCmluZGV4IGIxZDE4YTA5ZTA0NjA0OTk0MzJlOThhYWZmNzBhNmIyNmJi
ODllNTAuLjkzMTQ2MjM5NmRkMWMyM2FhMjZmOTYwMjc2NTViOTJhOTBlMjk4YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19DVFJP
cGVuU1NMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdv
cml0aG1BRVNfQ1RST3BlblNTTC5jcHAKQEAgLTU0LDIwICs1NCwyMCBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdChpbnQgb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleQogICAgIGNvbnN0ZXhwciBzaXplX3QgYmxvY2tTaXplID0gMTY7CiAgICAgY29u
c3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtleS5zaXplKCkpOwogICAg
IGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRyIGN0eDsKICAgICBpbnQg
bGVuOwogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAgaWYg
KCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBjb25zdCBzaXplX3QgYmxvY2tzID0gcm91bmRVcFRvTXVsdGlwbGVPZihibG9ja1NpemUsIGlu
cHV0VGV4dC5zaXplKCkpIC8gYmxvY2tTaXplOwogCiAgICAgLy8gRGV0ZWN0IGxvb3AKICAgICBp
ZiAoY291bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICogOCAmJiBibG9ja3MgPiAoKHNpemVf
dCkxIDw8IGNvdW50ZXJMZW5ndGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJl
Zm9yZSBvdmVyZmxvdwogICAgIENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hl
bHBlciBjb3VudGVyQmxvY2tIZWxwZXIoY291bnRlciwgY291bnRlckxlbmd0aCk7CkBAIC04Mywx
OSArODMsMTkgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHQoaW50IG9w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkKICAgICB7CiAgICAgICAgIC8vIElu
aXRpYWxpemUgdGhlIGVuY3J5cHRpb24oZGVjcnlwdGlvbikgb3BlcmF0aW9uCiAgICAgICAgIGlm
ICgxICE9IEVWUF9DaXBoZXJJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxscHRyLCBr
ZXkuZGF0YSgpLCBjb3VudGVyLmRhdGEoKSwgb3BlcmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIC8vIERpc2FibGUgcGFkZGluZwogICAgICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9z
ZXRfcGFkZGluZyhjdHguZ2V0KCksIDApKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gUHJvdmlk
ZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQoZGVjcnlwdGVkKSwgYW5kIG9idGFpbiB0aGUg
ZW5jcnlwdGVkKGRlY3J5cHRlZCkgb3V0cHV0CiAgICAgICAgIGlmICgxICE9IEVWUF9DaXBoZXJV
cGRhdGUoY3R4LmdldCgpLCBvdXRwdXRUZXh0LmRhdGEoKSwgJmxlbiwgaW5wdXRUZXh0LmRhdGEo
KSwgaGVhZFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gRmluYWxpemUgdGhlIGVuY3J5
cHRpb24oZGVjcnlwdGlvbikKICAgICAgICAgaWYgKDEgIT0gRVZQX0NpcGhlckZpbmFsX2V4KGN0
eC5nZXQoKSwgb3V0cHV0VGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgLy8gU2Vkb25kIHBhcnQKQEAgLTEwNiwxOSArMTA2LDE5IEBAIHN0YXRpYyBPcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IGNyeXB0KGludCBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5jcnlwdGlvbihkZWNy
eXB0aW9uKSBvcGVyYXRpb24KICAgICAgICAgaWYgKDEgIT0gRVZQX0NpcGhlckluaXRfZXgoY3R4
LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5kYXRhKCksIHJlbWFpbmluZ0NvdW50ZXIu
ZGF0YSgpLCBvcGVyYXRpb24pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gRGlzYWJsZSBwYWRk
aW5nCiAgICAgICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKGN0eC5nZXQo
KSwgMCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJl
IGVuY3J5cHRlZChkZWNyeXB0ZWQpLCBhbmQgb2J0YWluIHRoZSBlbmNyeXB0ZWQoZGVjcnlwdGVk
KSBvdXRwdXQKICAgICAgICAgaWYgKDEgIT0gRVZQX0NpcGhlclVwZGF0ZShjdHguZ2V0KCksIG91
dHB1dFRleHQuZGF0YSgpICsgaGVhZFNpemUsICZsZW4sIGlucHV0VGV4dC5kYXRhKCkgKyBoZWFk
U2l6ZSwgdGFpbFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gRmluYWxpemUgdGhlIGVu
Y3J5cHRpb24oZGVjcnlwdGlvbikKICAgICAgICAgaWYgKDEgIT0gRVZQX0NpcGhlckZpbmFsX2V4
KGN0eC5nZXQoKSwgb3V0cHV0VGV4dC5kYXRhKCkgKyBoZWFkU2l6ZSArIGxlbiwgJmxlbikpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gb3V0cHV0VGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19H
Q01PcGVuU1NMLmNwcAppbmRleCAyNzJhNjI0MzM5ZWE0NjQ1NWQ1NzVjYTA4ZGRhY2Y3ZWVlYmI3
NTk1Li4wNWY2ZWM5NTRlZGM2MzdhYjJhNzljNmYxNWQzMjA3OWMzNmE4OTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3Bl
blNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTU9wZW5TU0wuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGNyeXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwg
Y29uc3QKIHsKICAgICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0o
a2V5LnNpemUoKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQ
dHIgY3R4OwogICAgIGludCBsZW47CkBAIC02Myw0MiArNjMsNDIgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAg
aWYgKCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBEaXNhYmxlIHBhZGRpbmcKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9zZXRf
cGFkZGluZyhjdHguZ2V0KCksIDApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5jcnlw
dGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdEluaXRfZXgoY3R4LmdldCgp
LCBhbGdvcml0aG0sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2V0
IElWIGxlbmd0aAogICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LmdldCgpLCBF
VlBfQ1RSTF9HQ01fU0VUX0lWTEVOLCBpdi5zaXplKCksIG51bGxwdHIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
SW5pdGlhbGl6ZSBrZXkgYW5kIElWCiAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRJbml0X2V4KGN0
eC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwga2V5LmRhdGEoKSwgaXYuZGF0YSgpKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIFByb3ZpZGUgYW55IEFBRCBkYXRhCiAgICAgaWYgKGFkZGl0aW9uYWxEYXRhLnNpemUo
KSA+IDApIHsKICAgICAgICAgaWYgKDEgIT0gRVZQX0VuY3J5cHRVcGRhdGUoY3R4LmdldCgpLCBu
dWxscHRyLCAmbGVuLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUo
KSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBQcm92aWRlIHRoZSBtZXNzYWdlIHRvIGJl
IGVuY3J5cHRlZCwgYW5kIG9idGFpbiB0aGUgZW5jcnlwdGVkIG91dHB1dAogICAgIGlmICgxICE9
IEVWUF9FbmNyeXB0VXBkYXRlKGN0eC5nZXQoKSwgY2lwaGVyVGV4dC5kYXRhKCksICZsZW4sIHBs
YWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRmluYWxpemUg
dGhlIGVuY3J5cHRpb24uIE5vcm1hbGx5IGNpcGhlcnRleHQgYnl0ZXMgbWF5IGJlIHdyaXR0ZW4g
YXQKICAgICAvLyB0aGlzIHN0YWdlLCBidXQgdGhpcyBkb2VzIG5vdCBvY2N1ciBpbiBHQ00gbW9k
ZQogICAgIGlmICgxICE9IEVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LmdldCgpLCBjaXBoZXJUZXh0
LmRhdGEoKSArIGxlbiwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBHZXQgdGhlIHRhZwogICAgIGlmICgx
ICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LmdldCgpLCBFVlBfQ1RSTF9HQ01fR0VUX1RBRywg
dGFnTGVuZ3RoLCBjaXBoZXJUZXh0LmRhdGEoKSArIHRhZ09mZnNldCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gY2lwaGVyVGV4dDsKIH0KQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBjcnlwdERlY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0CiB7CiAgICAgY29uc3QgRVZQX0NJUEhFUiogYWxnb3JpdGhtID0gYWVzQWxnb3JpdGhtKGtl
eS5zaXplKCkpOwogICAgIGlmICghYWxnb3JpdGhtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRXZwQ2lwaGVyQ3R4UHRy
IGN0eDsKICAgICBpbnQgbGVuOwpAQCAtMTE5LDQyICsxMTksNDIgQEAgc3RhdGljIE9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdAogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBjb250ZXh0CiAgICAg
aWYgKCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9DSVBIRVJfQ1RYX25ldygpKSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBEaXNhYmxlIHBhZGRpbmcKICAgICBpZiAoMSAhPSBFVlBfQ0lQSEVSX0NUWF9zZXRf
cGFkZGluZyhjdHguZ2V0KCksIDApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZW5jcnlw
dGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRGVjcnlwdEluaXRfZXgoY3R4LmdldCgp
LCBhbGdvcml0aG0sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU2V0
IElWIGxlbmd0aAogICAgIGlmICgxICE9IEVWUF9DSVBIRVJfQ1RYX2N0cmwoY3R4LmdldCgpLCBF
VlBfQ1RSTF9HQ01fU0VUX0lWTEVOLCBpdi5zaXplKCksIG51bGxwdHIpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
SW5pdGlhbGl6ZSBrZXkgYW5kIElWCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRJbml0X2V4KGN0
eC5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwga2V5LmRhdGEoKSwgaXYuZGF0YSgpKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIFByb3ZpZGUgYW55IEFBRCBkYXRhCiAgICAgaWYgKGFkZGl0aW9uYWxEYXRhLnNpemUo
KSA+IDApIHsKICAgICAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRVcGRhdGUoY3R4LmdldCgpLCBu
dWxscHRyLCAmbGVuLCBhZGRpdGlvbmFsRGF0YS5kYXRhKCksIGFkZGl0aW9uYWxEYXRhLnNpemUo
KSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBTZXQgZXhwZWN0ZWQgdGFnIHZhbHVlCiAg
ICAgaWYgKDEgIT0gRVZQX0NJUEhFUl9DVFhfY3RybChjdHguZ2V0KCksIEVWUF9DVFJMX0dDTV9T
RVRfVEFHLCB0YWcuc2l6ZSgpLCB0YWcuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFByb3ZpZGUgdGhl
IG1lc3NhZ2UgdG8gYmUgZW5jcnlwdGVkLCBhbmQgb2J0YWluIHRoZSBlbmNyeXB0ZWQgb3V0cHV0
CiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRVcGRhdGUoY3R4LmdldCgpLCBwbGFpblRleHQuZGF0
YSgpLCAmbGVuLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVyVGV4dExlbikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGxh
aW5UZXh0TGVuID0gbGVuOwogCiAgICAgLy8gRmluYWxpemUgdGhlIGRlY3J5cHRpb24KICAgICBp
ZiAoMSAhPSBFVlBfRGVjcnlwdEZpbmFsX2V4KGN0eC5nZXQoKSwgcGxhaW5UZXh0LmRhdGEoKSAr
IGxlbiwgJmxlbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBwbGFpblRleHRMZW4gKz0gbGVuOwogCkBAIC0xNjUsNyAr
MTY1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19HQ006OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1BZXNHY21QYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKLSAgICBhdXRvIG91dHB1
dCA9IGNyeXB0RW5jcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5U
ZXh0LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVu
Z3RoLnZhbHVlT3IoMCkgLyA4KTsKKyAgICBhdXRvIG91dHB1dCA9IGNyeXB0RW5jcnlwdChrZXku
a2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgcGxhaW5UZXh0LCBwYXJhbWV0ZXJzLmFkZGl0
aW9uYWxEYXRhVmVjdG9yKCksIHBhcmFtZXRlcnMudGFnTGVuZ3RoLnZhbHVlX29yKDApIC8gOCk7
CiAgICAgaWYgKCFvdXRwdXQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwpAQCAtMTczLDcgKzE3Myw3IEBA
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxh
dGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
Q3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobUFlc0djbVBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICBhdXRvIG91dHB1dCA9IGNy
eXB0RGVjcnlwdChrZXkua2V5KCksIHBhcmFtZXRlcnMuaXZWZWN0b3IoKSwgY2lwaGVyVGV4dCwg
cGFyYW1ldGVycy5hZGRpdGlvbmFsRGF0YVZlY3RvcigpLCBwYXJhbWV0ZXJzLnRhZ0xlbmd0aC52
YWx1ZU9yKDApIC8gOCk7CisgICAgYXV0byBvdXRwdXQgPSBjcnlwdERlY3J5cHQoa2V5LmtleSgp
LCBwYXJhbWV0ZXJzLml2VmVjdG9yKCksIGNpcGhlclRleHQsIHBhcmFtZXRlcnMuYWRkaXRpb25h
bERhdGFWZWN0b3IoKSwgcGFyYW1ldGVycy50YWdMZW5ndGgudmFsdWVfb3IoMCkgLyA4KTsKICAg
ICBpZiAoIW91dHB1dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CiAgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfS1dPcGVuU1NMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wu
Y3BwCmluZGV4IGE0NTk0OTM2MjhjMWNlYjFmODA1MzJmZmI5YWJjOTc0NTRhZGMyNzUuLmExN2My
OWNhNGQyNjJjYmU4YTZjM2VmNjk3YjE1ZGM2M2FkYTNiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09wZW5TU0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19LV09w
ZW5TU0wuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGNyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QKIHsKICAg
ICBjb25zdCBFVlBfQ0lQSEVSKiBhbGdvcml0aG0gPSBhZXNBbGdvcml0aG0oa2V5LnNpemUoKSk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdnBDaXBoZXJDdHhQdHIgY3R4OwogICAg
IFZlY3Rvcjx1aW50OF90PiBjaXBoZXJUZXh0KGRhdGEuc2l6ZSgpICsgOCk7CkBAIC02MCwyMSAr
NjAsMjEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHRXcmFwS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogCiAgICAgLy8gQ3JlYXRlIGFuZCBpbml0
aWFsaXplIHRoZSBjb250ZXh0CiAgICAgaWYgKCEoY3R4ID0gRXZwQ2lwaGVyQ3R4UHRyKEVWUF9D
SVBIRVJfQ1RYX25ldygpKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFVlBfQ0lQSEVSX0NUWF9zZXRfZmxhZ3MoY3R4
LmdldCgpLCBFVlBfQ0lQSEVSX0NUWF9GTEFHX1dSQVBfQUxMT1cpOwogCiAgICAgLy8gSW5pdGlh
bGl6ZSB0aGUgZW5jcnlwdGlvbiBvcGVyYXRpb24KICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdElu
aXRfZXgoY3R4LmdldCgpLCBhbGdvcml0aG0sIG51bGxwdHIsIGtleS5kYXRhKCksIG51bGxwdHIp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gUHJvdmlkZSB0aGUgbWVzc2FnZSB0byBiZSBlbmNyeXB0ZWQsIGFuZCBv
YnRhaW4gdGhlIGVuY3J5cHRlZCBvdXRwdXQKICAgICBpZiAoMSAhPSBFVlBfRW5jcnlwdFVwZGF0
ZShjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpLCAmbGVuLCBkYXRhLmRhdGEoKSwgZGF0YS5z
aXplKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gRmluYWxpemUgdGhlIGVuY3J5cHRpb24uIEZ1cnRoZXIgY2lw
aGVydGV4dCBieXRlcyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0g
RVZQX0VuY3J5cHRGaW5hbF9leChjdHguZ2V0KCksIGNpcGhlclRleHQuZGF0YSgpICsgbGVuLCAm
bGVuKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBjaXBoZXJUZXh0OwogfQpAQCAtODMsNyArODMsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjcnlwdFVud3JhcEtleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29ucwogewogICAgIGNvbnN0IEVWUF9DSVBIRVIqIGFsZ29yaXRo
bSA9IGFlc0FsZ29yaXRobShrZXkuc2l6ZSgpKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEV2cENpcGhlckN0eFB0ciBjdHg7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dChk
YXRhLnNpemUoKSk7CkBAIC05MiwyMiArOTIsMjIgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY3J5cHRVbndyYXBLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnMK
IAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0
eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgRVZQ
X0NJUEhFUl9DVFhfc2V0X2ZsYWdzKGN0eC5nZXQoKSwgRVZQX0NJUEhFUl9DVFhfRkxBR19XUkFQ
X0FMTE9XKTsKIAogICAgIC8vIEluaXRpYWxpemUgdGhlIGRlY3J5cHRpb24gb3BlcmF0aW9uCiAg
ICAgaWYgKDEgIT0gRVZQX0RlY3J5cHRJbml0X2V4KGN0eC5nZXQoKSwgYWxnb3JpdGhtLCBudWxs
cHRyLCBrZXkuZGF0YSgpLCBudWxscHRyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFByb3ZpZGUgdGhlIG1lc3Nh
Z2UgdG8gYmUgZGVjcnlwdGVkLCBhbmQgb2J0YWluIHRoZSBwbGFpbnRleHQgb3V0cHV0CiAgICAg
aWYgKDEgIT0gRVZQX0RlY3J5cHRVcGRhdGUoY3R4LmdldCgpLCBwbGFpblRleHQuZGF0YSgpLCAm
bGVuLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBsYWluVGV4dExlbiA9IGxl
bjsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBkZWNyeXB0aW9uLiBGdXJ0aGVyIHBsYWludGV4dCBi
eXRlcyBtYXkgYmUgd3JpdHRlbiBhdCB0aGlzIHN0YWdlCiAgICAgaWYgKDEgIT0gRVZQX0RlY3J5
cHRGaW5hbF9leChjdHguZ2V0KCksIHBsYWluVGV4dC5kYXRhKCkgKyBsZW4sICZsZW4pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHBsYWluVGV4dExlbiArPSBsZW47CiAKICAgICBwbGFpblRleHQuc2hyaW5rKHBsYWluVGV4
dExlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9B
bGdvcml0aG1ITUFDT3BlblNTTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9D
cnlwdG9BbGdvcml0aG1ITUFDT3BlblNTTC5jcHAKaW5kZXggZGZmYzljOWU0MDIzY2ZjNWIxODI0
MmY1NTNjNDg2MmIzOTY3NDdjNS4uMjIyNmI3ZjAwOGRiNzk2ODE5YzJhOGY3MGM1MzY5NzJhM2E5
Nzg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtSE1BQ09wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUhNQUNPcGVuU1NMLmNwcApAQCAtNDEsMjkgKzQxLDI5IEBAIHN0YXRp
YyBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShjb25zdCBFVlBf
TUQqIGFsZ29yaXRobSwgY29uCiAgICAgLy8gQ3JlYXRlIHRoZSBNZXNzYWdlIERpZ2VzdCBDb250
ZXh0CiAgICAgRXZwRGlnZXN0Q3R4UHRyIGN0eDsKICAgICBpZiAoIShjdHggPSBFdnBEaWdlc3RD
dHhQdHIoRVZQX01EX0NUWF9jcmVhdGUoKSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
RGlnZXN0U2lnbiBvcGVyYXRpb24KICAgICBFdnBQS2V5UHRyIGhrZXk7CiAgICAgaWYgKCEoaGtl
eSA9IEV2cFBLZXlQdHIoRVZQX1BLRVlfbmV3X21hY19rZXkoRVZQX1BLRVlfSE1BQywgbnVsbHB0
ciwga2V5LmRhdGEoKSwga2V5LnNpemUoKSkpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgxICE9IEVWUF9EaWdl
c3RTaWduSW5pdChjdHguZ2V0KCksIG51bGxwdHIsIGFsZ29yaXRobSwgbnVsbHB0ciwgaGtleS5n
ZXQoKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAvLyBDYWxsIHVwZGF0ZSB3aXRoIHRoZSBtZXNzYWdlCiAgICAgaWYg
KDEgIT0gRVZQX0RpZ2VzdFNpZ25VcGRhdGUoY3R4LmdldCgpLCBkYXRhLCBkYXRhTGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIEZpbmFsaXplIHRoZSBEaWdlc3RTaWduIG9wZXJhdGlvbgogICAgIHNpemVf
dCBsZW4gPSAwOwogICAgIGlmICgxICE9IEVWUF9EaWdlc3RTaWduRmluYWwoY3R4LmdldCgpLCBu
dWxscHRyLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIE9idGFpbiB0aGUgc2lnbmF0dXJlCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGNpcGhlclRleHQobGVuKTsKICAgICBpZiAoMSAhPSBFVlBfRGlnZXN0U2ln
bkZpbmFsKGN0eC5nZXQoKSwgY2lwaGVyVGV4dC5kYXRhKCksICZsZW4pKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIGNpcGhlclRleHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3Bl
bnNzbC9DcnlwdG9LZXlSU0FPcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVu
c3NsL0NyeXB0b0tleVJTQU9wZW5TU0wuY3BwCmluZGV4IGU2MzFjZTEyODU4NGNlMjg5MjNlN2U5
N2FlNmNjYmE1NzY5YjhiMTUuLjkzZmEwYWU4YzI5NWU2OTJmNWZlZGYyYTY1MGVkMTI1YjAxMTJj
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tleVJT
QU9wZW5TU0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0tl
eVJTQU9wZW5TU0wuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQz
Ml90PiBleHBvbmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwb25l
bnQKIHsKICAgICBpZiAoZXhwb25lbnQuc2l6ZSgpID4gNCkgewogICAgICAgICBpZiAoc3RkOjph
bnlfb2YoZXhwb25lbnQuYmVnaW4oKSwgZXhwb25lbnQuZW5kKCkgLSA0LCBbXSh1aW50OF90IGVs
ZW1lbnQpIHsgcmV0dXJuICEhZWxlbWVudDsgfSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICB1
aW50MzJfdCByZXN1bHQgPSAwOwpAQCAtMjE5LDcgKzIxOSw3IEBAIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlk
ZW50aWZpCiAgICAgaWYgKCFwa2V5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvS2V5UlNBKGlkZW50aWZpZXIsIGhhc2gudmFsdWVPcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHVibGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6UHVi
bGljLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CiB9CiAKIFJlZlB0cjxD
cnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6aW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBpZGVudGlmaWVyLCBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyPiBo
YXNoLCBWZWN0b3I8dWludDhfdD4mJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC0yMzYsNyArMjM2LDcgQEAgUmVmUHRyPENyeXB0b0tl
eVJTQT4gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
IGlkZW50aWYKICAgICBpZiAoIXBrZXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZU9y
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xKSwgISFoYXNoLCBDcnlwdG9LZXlUeXBl
OjpQcml2YXRlLCBXVEZNb3ZlKHBrZXkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG9LZXlSU0EoaWRlbnRpZmllciwgaGFzaC52YWx1ZV9vcihD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMSksICEhaGFzaCwgQ3J5cHRvS2V5VHlwZTo6
UHJpdmF0ZSwgV1RGTW92ZShwa2V5KSwgZXh0cmFjdGFibGUsIHVzYWdlcykpOwogfQogCiBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0tleVJTQTo6ZXhwb3J0U3BraSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9PcGVuU1NMVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMu
Y3BwCmluZGV4IGRkOWY0NTQ0NmEwZjRjMGRiMWVkNzZjNWZiMGIxNGFkZTIxNWRjYzguLjhjMjEy
MzdjMmZjYWY5YjlhYjYxYTM1ZGY2NDBmNjZiZDUzNDU5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9vcGVuc3NsL09wZW5TU0xVdGlsaXRpZXMuY3BwCkBAIC01NCwyMSArNTQs
MjEgQEAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVEaWdlc3QoY29uc3QgRVZQ
X01EKiBhbGdvcml0aG0sIGNvbnN0IFZlY3RvcjwKIHsKICAgICBFdnBEaWdlc3RDdHhQdHIgY3R4
OwogICAgIGlmICghKGN0eCA9IEV2cERpZ2VzdEN0eFB0cihFVlBfTURfQ1RYX2NyZWF0ZSgpKSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpbnQgZGlnZXN0TGVuZ3RoID0gRVZQX01EX3NpemUoYWxnb3JpdGhtKTsKICAg
ICBpZiAoZGlnZXN0TGVuZ3RoIDw9IDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdChk
aWdlc3RMZW5ndGgpOwogCiAgICAgaWYgKEVWUF9EaWdlc3RJbml0X2V4KGN0eC5nZXQoKSwgYWxn
b3JpdGhtLCBudWxscHRyKSAhPSAxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKEVWUF9EaWdlc3RVcGRhdGUoY3R4
LmdldCgpLCBtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpICE9IDEpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoRVZQX0RpZ2VzdEZpbmFsX2V4KGN0eC5nZXQoKSwgZGlnZXN0LmRhdGEoKSwgbnVsbHB0cikg
IT0gMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBkaWdlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvU2VyaWFsaXplZENyeXB0b0tleVdyYXBPcGVu
U1NMLmNwcAppbmRleCA4ZWQwZWRkNjM2ZGZmYWI3MzFkMTFkNjdhOGE1ZGE1NTFhMzBlMDFlLi4x
MjNkYTU3NGMzMWZmYTk1YTJmMTM2MjJjM2Y0MjlkYzZmYWU0MjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE9wZW5TU0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwT3BlblNTTC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
T3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gSW5pdGlhbGx5IHRoZXNlIGhlbHBlciBmdW5jdGlv
bnMgd2VyZSBpbnRlbmRlZCB0byBwZXJmb3JtIEtFSyB3cmFwcGluZyBhbmQgdW53cmFwcGluZywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29y
aXRobUFlc0djbVBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5
cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKaW5kZXggODY4ODdiNWFmYWE1YzJkODEwNGI0OTgy
MjNkOTVlZDY0ZjNlNjY5Yy4uZTI5NjYyYTIyNzU1N2NmNjFkNGIxNDA3Y2E1ODc5NTMyODA0MWY5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxn
b3JpdGhtQWVzR2NtUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRl
cnMvQ3J5cHRvQWxnb3JpdGhtQWVzR2NtUGFyYW1zLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIG1fYWRkaXRpb25hbERhdGFWZWN0b3I7CiAKICAgICAgICAg
QnVmZmVyU291cmNlIGFkZGl0aW9uYWxEYXRhQnVmZmVyID0gV1RGTW92ZSgqYWRkaXRpb25hbERh
dGEpOwotICAgICAgICBhZGRpdGlvbmFsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgYWRk
aXRpb25hbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghYWRkaXRpb25hbERhdGFC
dWZmZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9hZGRpdGlvbmFsRGF0YVZlY3Rv
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRv
QWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRl
cnMvQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oCmluZGV4IDBiMzMyYzQyNjYzMzQ4M2I0
N2VjZWM4ZTVjNTUxZTUwZGUxNjcxYjAuLjM1ZDQ1MDFkYTc2YjJlYWM1N2E5YjFjNGEwZTcxNDc0
Mjc5MzI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
cGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fbGFiZWxWZWN0b3I7CiAKICAgICAgICAg
QnVmZmVyU291cmNlIGxhYmVsQnVmZmVyID0gV1RGTW92ZSgqbGFiZWwpOwotICAgICAgICBsYWJl
bCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbGFiZWwgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmICghbGFiZWxCdWZmZXIubGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gbV9sYWJlbFZl
Y3RvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4
IDljZjYyOTJlNDM4OWVjMjM5Y2UwMThlNTUyNjU0ZmMwZGUyMzVhMTguLjQxOWM2YWIyMGFjZWNl
ZDNhMjNkZTkwYjNhYzU5MGE1ZmFhYzM3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTg5Miw3ICs4OTIsNyBAQCBSZWZQdHI8Q1NTQ2FsY09wZXJh
dGlvbk5vZGU+IENTU0NhbGNPcGVyYXRpb25Ob2RlOjpjcmVhdGVNaW5Pck1heE9yQ2xhbXAoQ2Fs
Y09wZQogICAgIEFTU0VSVChvcCA9PSBDYWxjT3BlcmF0b3I6Ok1pbiB8fCBvcCA9PSBDYWxjT3Bl
cmF0b3I6Ok1heCB8fCBvcCA9PSBDYWxjT3BlcmF0b3I6OkNsYW1wKTsKICAgICBBU1NFUlRfSU1Q
TElFUyhvcCA9PSBDYWxjT3BlcmF0b3I6OkNsYW1wLCB2YWx1ZXMuc2l6ZSgpID09IDMpOwogCi0g
ICAgT3B0aW9uYWw8Q2FsY3VsYXRpb25DYXRlZ29yeT4gY2F0ZWdvcnkgPSBXVEY6Om51bGxvcHQ7
CisgICAgT3B0aW9uYWw8Q2FsY3VsYXRpb25DYXRlZ29yeT4gY2F0ZWdvcnkgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlcykgewogICAgICAgICBhdXRvIHZhbHVl
Q2F0ZWdvcnkgPSByZXNvbHZlZFR5cGVGb3JNaW5Pck1heE9yQ2xhbXAodmFsdWUtPmNhdGVnb3J5
KCksIGRlc3RpbmF0aW9uQ2F0ZWdvcnkpOwogCkBAIC0xNzQzLDcgKzE3NDMsNyBAQCBib29sIENT
U0NhbGNFeHByZXNzaW9uTm9kZVBhcnNlcjo6cGFyc2VDYWxjRnVuY3Rpb24oQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgdG9rZW5zLAogICAgIHN3aXRjaCAoZnVuY3Rpb25JRCkgewogICAgIGNhc2UgQ1NT
VmFsdWVNaW46CiAgICAgY2FzZSBDU1NWYWx1ZU1heDoKLSAgICAgICAgbWF4QXJndW1lbnRDb3Vu
dCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbWF4QXJndW1lbnRDb3VudCA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUNsYW1wOgogICAgICAgICBtaW5B
cmd1bWVudENvdW50ID0gMzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYmFjNTI5ODQxMDJlYjAwNDVkYzY1MzVhZTY4ZTY4
YjliNDY2OGQwMy4uYTZkNTQzYmNlZGY1OTM1ODMzYWEyY2E3OTc0OWJiMDA1NTVhMzE1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKQEAgLTE3NjIsNyArMTc2Miw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvdW50ZXJUb0NT
U1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwCiAgICAgYXV0
byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAo
YXV0byYga2V5VmFsdWUgOiAqbWFwKSB7CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoa2V5VmFsdWUua2V5LCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORykpOwot
ICAgICAgICBkb3VibGUgbnVtYmVyID0gKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVy
SW5jcmVtZW50ID8ga2V5VmFsdWUudmFsdWUuaW5jcmVtZW50VmFsdWUgOiBrZXlWYWx1ZS52YWx1
ZS5yZXNldFZhbHVlKS52YWx1ZU9yKDApOworICAgICAgICBkb3VibGUgbnVtYmVyID0gKHByb3Bl
cnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50ID8ga2V5VmFsdWUudmFsdWUuaW5j
cmVtZW50VmFsdWUgOiBrZXlWYWx1ZS52YWx1ZS5yZXNldFZhbHVlKS52YWx1ZV9vcigwKTsKICAg
ICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShudW1iZXIsIENTU1Vu
aXRUeXBlOjpDU1NfTlVNQkVSKSk7CiAgICAgfQogICAgIHJldHVybiBsaXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKaW5kZXggYjc3ZDExZmM2NDVkOTE4YTc1NjhjN2RkMzFkMjE3ZmUx
OTZmYzg1NC4uZTUyZjdmODI2ODRiZWI4YTU5Nzg2MmUzYzc5MTg2ZmFhYTNkNjc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIEZvbnRT
ZWxlY3Rpb25SYW5nZSBjYWxjdWxhdGVJdGFsaWNSYW5nZShDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLmlzRm9udFN0eWxlVmFsdWUoKSkgewogICAgICAgICBhdXRvIHJlc3VsdCA9
IFN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN0eWxlRnJvbVZhbHVlKHZhbHVl
KTsKLSAgICAgICAgcmV0dXJuIHsgcmVzdWx0LnZhbHVlT3Iobm9ybWFsSXRhbGljVmFsdWUoKSks
IHJlc3VsdC52YWx1ZU9yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpIH07CisgICAgICAgIHJldHVybiB7
IHJlc3VsdC52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKSwgcmVzdWx0LnZhbHVlX29yKG5v
cm1hbEl0YWxpY1ZhbHVlKCkpIH07CiAgICAgfQogCiAgICAgQVNTRVJUKHZhbHVlLmlzRm9udFN0
eWxlUmFuZ2VWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKaW5kZXggZjNmMDE1N2Qx
MDIyNGI2YTZlMDRkZjJiMzc2NTFlNjZiNjQxMDE4Yi4uNDJjODVjZTg4NjQ2NDMzNjUzM2EyZWJl
YzdlNDA4MjdjM2E0OGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKQEAgLTg0LDE0ICs4
NCwxNCBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFVuaWNvZGVSYW5nZTsKICAgICAKICAgICAvLyBP
cHRpb25hbCByZXR1cm4gdmFsdWVzIHRvIHJlcHJlc2VudCBkZWZhdWx0IHN0cmluZyBmb3IgbWVt
YmVycyBvZiBGb250RmFjZS5oCi0gICAgY29uc3QgT3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4gZmFt
aWxpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6
Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxDU1NWYWx1ZUxpc3QqPj4obV9mYW1pbGll
cy5nZXQoKSk7IH0KLSAgICBPcHRpb25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHdlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6
IHN0YXRpY19jYXN0PE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlv
bkNhcGFiaWxpdGllcy5jb21wdXRlV2VpZ2h0KCkpOyB9Ci0gICAgT3B0aW9uYWw8Rm9udFNlbGVj
dGlvblJhbmdlPiBzdHJldGNoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpG
YWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlv
blJhbmdlPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVXaWR0aCgpKTsgfQot
ICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
LmNvbXB1dGVTbG9wZSgpKTsgfQotICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRp
ZXM+IGZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9
PSBTdGF0dXM6OkZhaWx1cmUgPyBXVEY6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxG
b250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNv
bXB1dGVGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzKCkpOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8
VmVjdG9yPFVuaWNvZGVSYW5nZT4+IHJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09
IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPFZl
Y3RvcjxVbmljb2RlUmFuZ2U+Pj4obV9yYW5nZXMpOyB9Ci0gICAgY29uc3QgT3B0aW9uYWw8Rm9u
dEZlYXR1cmVTZXR0aW5ncz4gZmVhdHVyZVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gV1RGOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9u
YWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4+KG1fZmVhdHVyZVNldHRpbmdzKTsgfQotICAgIE9wdGlv
bmFsPEZvbnRMb2FkaW5nQmVoYXZpb3I+IGxvYWRpbmdCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IFdURjo6bnVsbG9wdCA6ICBzdGF0aWNfY2Fz
dDxPcHRpb25hbDxGb250TG9hZGluZ0JlaGF2aW9yPj4obV9sb2FkaW5nQmVoYXZpb3IpOyB9Cisg
ICAgY29uc3QgT3B0aW9uYWw8Q1NTVmFsdWVMaXN0Kj4gZmFtaWxpZXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBzdGQ6Om51bGxvcHQgOiBzdGF0aWNfY2Fz
dDxPcHRpb25hbDxDU1NWYWx1ZUxpc3QqPj4obV9mYW1pbGllcy5nZXQoKSk7IH0KKyAgICBPcHRp
b25hbDxGb250U2VsZWN0aW9uUmFuZ2U+IHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVz
ID09IFN0YXR1czo6RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25SYW5nZT4+KG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy5jb21wdXRl
V2VpZ2h0KCkpOyB9CisgICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiBzdHJldGNoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJlID8gc3RkOjpudWxsb3B0
IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPj4obV9mb250U2VsZWN0
aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVXaWR0aCgpKTsgfQorICAgIE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25SYW5nZT4gaXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpG
YWlsdXJlID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udFNlbGVjdGlv
blJhbmdlPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVTbG9wZSgpKTsgfQor
ICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IGZvbnRTZWxlY3Rpb25DYXBh
YmlsaXRpZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1cyA9PSBTdGF0dXM6OkZhaWx1cmUgPyBz
dGQ6Om51bGxvcHQgOiBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250U2VsZWN0aW9uQ2FwYWJpbGl0
aWVzPj4obV9mb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzLmNvbXB1dGVGb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzKCkpOyB9CisgICAgY29uc3QgT3B0aW9uYWw8VmVjdG9yPFVuaWNvZGVSYW5nZT4+
IHJhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6RmFpbHVyZSA/IHN0
ZDo6bnVsbG9wdCA6IHN0YXRpY19jYXN0PE9wdGlvbmFsPFZlY3RvcjxVbmljb2RlUmFuZ2U+Pj4o
bV9yYW5nZXMpOyB9CisgICAgY29uc3QgT3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5ncz4gZmVh
dHVyZVNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXMgPT0gU3RhdHVzOjpGYWlsdXJl
ID8gc3RkOjpudWxsb3B0IDogc3RhdGljX2Nhc3Q8T3B0aW9uYWw8Rm9udEZlYXR1cmVTZXR0aW5n
cz4+KG1fZmVhdHVyZVNldHRpbmdzKTsgfQorICAgIE9wdGlvbmFsPEZvbnRMb2FkaW5nQmVoYXZp
b3I+IGxvYWRpbmdCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09IFN0YXR1czo6
RmFpbHVyZSA/IHN0ZDo6bnVsbG9wdCA6ICBzdGF0aWNfY2FzdDxPcHRpb25hbDxGb250TG9hZGlu
Z0JlaGF2aW9yPj4obV9sb2FkaW5nQmVoYXZpb3IpOyB9CiAgICAgdm9pZCBzZXRXZWlnaHQoRm9u
dFNlbGVjdGlvblJhbmdlIHdlaWdodCkgeyBtX2ZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMud2Vp
Z2h0ID0gd2VpZ2h0OyB9CiAgICAgdm9pZCBzZXRTdHJldGNoKEZvbnRTZWxlY3Rpb25SYW5nZSBz
dHJldGNoKSB7IG1fZm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcy53aWR0aCA9IHN0cmV0Y2g7IH0K
ICAgICB2b2lkIHNldFN0eWxlKEZvbnRTZWxlY3Rpb25SYW5nZSBpdGFsaWMpIHsgbV9mb250U2Vs
ZWN0aW9uQ2FwYWJpbGl0aWVzLnNsb3BlID0gaXRhbGljOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU2V0LmNwcAppbmRleCAxYTNmZjE0MGZhYWI4Mzk0ZDBmM2ZlMGQyZTI2YTJjYmZjZTk3
MzBkLi42MzRlNzgwYzg5NmRhMDBhYTBhMzc5NzVjMTgxYmI2MjFmZDUwYjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTMzMCwxMyArMzMwLDEzIEBAIHN0YXRpYyBG
b250U2VsZWN0aW9uUmVxdWVzdCBjb21wdXRlRm9udFNlbGVjdGlvblJlcXVlc3QoQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzCiAKICAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYSBGb250UmF3LCB3ZSBr
bm93IHdlIHNob3VsZCBiZSBhYmxlIHRvIGRlcmVmZXJlbmNlIHN0cmV0Y2hTZWxlY3Rpb25WYWx1
ZSBhcwogICAgIC8vIGNvbnN1bWVGb250U3RyZXRjaEtleXdvcmRWYWx1ZVJhdyBvbmx5IHJldHVy
bnMgcmVzdWx0cyB2YWxpZCB0byBwYXNzIHRvIGZvbnRTdHJldGNoVmFsdWUuCi0gICAgYXV0byBz
dHJldGNoU2VsZWN0aW9uVmFsdWUgPSBmb250U3RyZXRjaFZhbHVlKGZvbnQuc3RyZXRjaC52YWx1
ZU9yKENTU1ZhbHVlTm9ybWFsKSk7CisgICAgYXV0byBzdHJldGNoU2VsZWN0aW9uVmFsdWUgPSBm
b250U3RyZXRjaFZhbHVlKGZvbnQuc3RyZXRjaC52YWx1ZV9vcihDU1NWYWx1ZU5vcm1hbCkpOwog
ICAgIEFTU0VSVChzdHJldGNoU2VsZWN0aW9uVmFsdWUpOwogCiAgICAgYXV0byBzdHlsZUtleXdv
cmQgPSBmb250LnN0eWxlID8gZm9udC5zdHlsZS0+c3R5bGUgOiBDU1NWYWx1ZU5vcm1hbDsKICAg
ICBhdXRvIHN0eWxlU2VsZWN0aW9uVmFsdWUgPSBbJl0gKCkgLT4gT3B0aW9uYWw8Rm9udFNlbGVj
dGlvblZhbHVlPiB7CiAgICAgICAgIGlmIChzdHlsZUtleXdvcmQgPT0gQ1NTVmFsdWVOb3JtYWwp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKHN0eWxlS2V5d29yZCA9PSBDU1NWYWx1ZUl0YWxpYykK
ICAgICAgICAgICAgIHJldHVybiBpdGFsaWNWYWx1ZSgpOwogICAgICAgICBBU1NFUlQoZm9udC5z
dHlsZSAmJiBzdHlsZUtleXdvcmQgPT0gQ1NTVmFsdWVPYmxpcXVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU2V0LmgKaW5kZXggZjFkZjcwNjMyMTFiMTg4NWI2Y2I1OTZmNTdjNTczM2FmODUz
NTcxZi4uMzFjMDAwODFjYzY0OGNiN2NhNDAxZmMzZjQ1MTIwMTI4NmQ5YTZkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAg
IHN0cnVjdCBGb250U2VsZWN0aW9uS2V5SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxGb250U2VsZWN0aW9uS2V5PiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFs
dWVJc1plcm8gPSBmYWxzZTsKICAgICAgICAgc3RhdGljIEZvbnRTZWxlY3Rpb25LZXkgZW1wdHlW
YWx1ZSgpIHsgcmV0dXJuIEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHsgfTsgfQotICAgICAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udFNlbGVjdGlvbktleSYgc2xvdCkgeyBz
bG90ID0gV1RGOjpudWxsb3B0OyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShGb250U2VsZWN0aW9uS2V5JiBzbG90KSB7IHNsb3QgPSBzdGQ6Om51bGxvcHQ7IH0K
ICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9udFNlbGVjdGlvbktl
eSYgdmFsdWUpIHsgcmV0dXJuICF2YWx1ZTsgfQogICAgIH07CiAgICAgdXNpbmcgRm9udFNlbGVj
dGlvbkhhc2hNYXAgPSBIYXNoTWFwPEZvbnRTZWxlY3Rpb25LZXksIFJlZlB0cjxDU1NTZWdtZW50
ZWRGb250RmFjZT4sIEZvbnRTZWxlY3Rpb25LZXlIYXNoLCBGb250U2VsZWN0aW9uS2V5SGFzaFRy
YWl0cz47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IGFjZDJhMWNj
MjRlMzRjMDU0ZDAzNzgyMzQ4NzczN2NmZWM3ZmViNjQuLjE4Zjk3ZmVmN2M2OTVhMWQzYjZlZGUz
MDUzZmIwZWFjZDI4YWEzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CkBAIC0yODcsNyArMjg3LDcgQEAgT3B0aW9uYWw8QXRvbVN0cmluZz4gQ1NTRm9udFNlbGVjdG9y
OjpyZXNvbHZlR2VuZXJpY0ZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24KICAgICAgICAgcmV0
dXJuIHBsYXRmb3JtUmVzdWx0OwogCiAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25z
dCBhdXRvJiBzZXR0aW5ncyA9IG1fY29udGV4dC0+c2V0dGluZ3NWYWx1ZXMoKTsKIApAQCAtMjk4
LDcgKzI5OCw3IEBAIE9wdGlvbmFsPEF0b21TdHJpbmc+IENTU0ZvbnRTZWxlY3Rvcjo6cmVzb2x2
ZUdlbmVyaWNGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uCiAgICAgICAgICAgICByZXR1cm4g
QXRvbVN0cmluZygqZmFtaWx5U3RyaW5nKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIEZvbnRSYW5nZXMgQ1NTRm9udFNl
bGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERl
c2NyaXB0aW9uLCBjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwCmluZGV4IDQ0NTQxNmE4ZmRjZjBkNTU2M2VhODNkMWU0ZGY2
M2I1OWQwNDY4NjYuLjAwOTRjNjg0Y2RmMWI3YzU4MTk2NTJiMzExNzkzZDBiNTFiYmM1NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTExMCwxMiArMTEwLDEy
IEBAIE9wdGlvbmFsPHNpemVfdD4gU3R5bGVSdWxlS2V5ZnJhbWVzOjpmaW5kS2V5ZnJhbWVJbmRl
eChjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKICAgICBwYXJzZURlZmVycmVkUnVsZXNJZk5lZWRl
ZCgpOwogICAgIGF1dG8ga2V5cyA9IENTU1BhcnNlcjo6cGFyc2VLZXlmcmFtZUtleUxpc3Qoa2V5
KTsKICAgICBpZiAoa2V5cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yIChhdXRvIGkgPSBtX2tleWZy
YW1lcy5zaXplKCk7IGktLTsgKSB7CiAgICAgICAgIGlmIChtX2tleWZyYW1lc1tpXS0+a2V5cygp
ID09IGtleXMpCiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFN0eWxlUnVsZUtl
eWZyYW1lczo6c2hyaW5rVG9GaXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKaW5kZXggZjBkYjRjYTViMTUzYzE5NTJlOWFjYmE0NDM0ZmUxODRlZDg5ZDg5OC4uNjlm
MDdhODYyYTVkN2RhN2I2M2RjMWE4ZTIwZjY2MzY3YjRiNDlhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC04MjQsNyArODI0LDcgQEAgRXhjZXB0aW9uT3I8
ZmxvYXQ+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRGbG9hdFZhbHVlKENTU1VuaXRUeXBlIHVuaXRU
eXBlKSBjb25zdAogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKENTU1Vu
aXRUeXBlIHVuaXRUeXBlKSBjb25zdAogewotICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFs
KHVuaXRUeXBlKS52YWx1ZU9yKDApOworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVu
aXRUeXBlKS52YWx1ZV9vcigwKTsKIH0KIAogZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3Vi
bGVWYWx1ZSgpIGNvbnN0CkBAIC04MzUsMjEgKzgzNSwyMSBAQCBkb3VibGUgQ1NTUHJpbWl0aXZl
VmFsdWU6OmRvdWJsZVZhbHVlKCkgY29uc3QKIE9wdGlvbmFsPGJvb2w+IENTU1ByaW1pdGl2ZVZh
bHVlOjppc1plcm8oKSBjb25zdAogewogICAgIGlmIChwcmltaXRpdmVVbml0VHlwZSgpID09IENT
U1VuaXRUeXBlOjpDU1NfQ0FMQykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gIW1fdmFsdWUubnVtOwogfQogCiBP
cHRpb25hbDxib29sPiBDU1NQcmltaXRpdmVWYWx1ZTo6aXNQb3NpdGl2ZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKHByaW1pdGl2ZVVuaXRUeXBlKCkgPT0gQ1NTVW5pdFR5cGU6OkNTU19DQUxDKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBtX3ZhbHVlLm51bSA+IDA7CiB9CiAKIE9wdGlvbmFsPGJvb2w+IENTU1ByaW1p
dGl2ZVZhbHVlOjppc05lZ2F0aXZlKCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVW5pdFR5
cGUoKSA9PSBDU1NVbml0VHlwZTo6Q1NTX0NBTEMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fdmFsdWUubnVt
IDwgMDsKIH0KIApAQCAtODYxLDcgKzg2MSw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6Omlz
Q2VudGVyUG9zaXRpb24oKSBjb25zdAogT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1
ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChDU1NVbml0VHlwZSByZXF1ZXN0ZWRVbml0VHlwZSkgY29u
c3QKIHsKICAgICBpZiAoIWlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNpb24ocHJp
bWl0aXZlVW5pdFR5cGUoKSkgfHwgIWlzVmFsaWRDU1NVbml0VHlwZUZvckRvdWJsZUNvbnZlcnNp
b24ocmVxdWVzdGVkVW5pdFR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ1NTVW5pdFR5cGUgc291cmNlVW5pdFR5
cGUgPSBwcmltaXRpdmVUeXBlKCk7CiAgICAgaWYgKHJlcXVlc3RlZFVuaXRUeXBlID09IHNvdXJj
ZVVuaXRUeXBlIHx8IHJlcXVlc3RlZFVuaXRUeXBlID09IENTU1VuaXRUeXBlOjpDU1NfRElNRU5T
SU9OKQpAQCAtODc2LDIwICs4NzYsMjAgQEAgT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVW
YWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChDU1NVbml0VHlwZSByZXF1ZXN0ZWRVbmkKIAogICAg
IC8vIENhbm5vdCBjb252ZXJ0IGJldHdlZW4gdW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBpZiBv
bmUgb2YgdGhlbSBpcyBub3QgQ1NTVW5pdENhdGVnb3J5OjpOdW1iZXIuCiAgICAgaWYgKHNvdXJj
ZUNhdGVnb3J5ICE9IHRhcmdldENhdGVnb3J5ICYmIHNvdXJjZUNhdGVnb3J5ICE9IENTU1VuaXRD
YXRlZ29yeTo6TnVtYmVyICYmIHRhcmdldENhdGVnb3J5ICE9IENTU1VuaXRDYXRlZ29yeTo6TnVt
YmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKHRhcmdldENhdGVnb3J5ID09IENTU1VuaXRDYXRlZ29yeTo6TnVt
YmVyKSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIHRvIENTU1VuaXRUeXBl
OjpDU1NfTlVNQkVSIGFzIGNvbnZlcnNpb24gdG8gYSBjYW5vbmljYWwgdW5pdCBpbiB0aGlzIHZh
bHVlJ3MgY2F0ZWdvcnkuCiAgICAgICAgIHRhcmdldFVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5
cGVGb3JDYXRlZ29yeShzb3VyY2VDYXRlZ29yeSk7CiAgICAgICAgIGlmICh0YXJnZXRVbml0VHlw
ZSA9PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBp
ZiAoc291cmNlVW5pdFR5cGUgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpIHsKICAgICAgICAg
Ly8gV2UgaW50ZXJwcmV0IGNvbnZlcnNpb24gZnJvbSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiBp
biB0aGUgc2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBub24t
c3RyaWN0IG1vZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVG
b3JDYXRlZ29yeSh0YXJnZXRDYXRlZ29yeSk7CiAgICAgICAgIGlmIChzb3VyY2VVbml0VHlwZSA9
PSBDU1NVbml0VHlwZTo6Q1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBkb3Vi
bGUgY29udmVydGVkVmFsdWUgPSBkb3VibGVWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0aWVzLmpzb24KaW5kZXggZmE1ZjE4MTk2MTk5MjA2OThlN2UwY2RmNTA0ZDY1ODQyNmNjZmQx
Yy4uNWQ2N2QzZWI3NTRhOTMyZGQyNmJiMDRmZTJiZTIyM2YxZmI1NDllOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgICIiLAog
ICAgICAgICAiKiBjb25kaXRpb25hbC1jb252ZXJ0ZXI6IiwKICAgICAgICAgIlNpbWlsYXIgdG8g
cHJvcGVydHkgY29udmVydGVyLCBidXQgdGhlIGNvbnZlcnRlciBmdW5jdGlvbiByZXR1cm5zIGEi
LAotICAgICAgICAiV1RGOjpPcHRpb25hbDw+IHRvIGluZGljYXRlIGlmIHRoZSBwcm9wZXJ0eSBz
ZXR0ZXIgc2hvdWxkIGJlIGNhbGxlZCIsCisgICAgICAgICJzdGQ6Om9wdGlvbmFsPD4gdG8gaW5k
aWNhdGUgaWYgdGhlIHByb3BlcnR5IHNldHRlciBzaG91bGQgYmUgY2FsbGVkIiwKICAgICAgICAg
Im9yIG5vdC4iLAogICAgICAgICAiIiwKICAgICAgICAgIiogY3VzdG9tOiIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggNTE5M2MzMmMyZWY1YTFiNDQ0MjljNGYzMzVmM2Q3
YWE3Mjk5NTA0Ni4uNmI0Mzg5NmQzOGI2NmMxNGEwNjU4MGFmNmRhMDlkYWM0NDhmNWMxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMjg5LDcgKzI4OSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENTU1N0eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiBF
eGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5nJiBzZWxl
Y3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewog
ICAgIGF1dG8gdGV4dCA9IG1ha2VTdHJpbmcoc2VsZWN0b3IsICIgeyAiLCBzdHlsZSwgIXN0eWxl
LmlzRW1wdHkoKSA/ICIgIiA6ICIiLCAnfScpOwotICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9
IGluc2VydFJ1bGUodGV4dCwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSkpOworICAgIGF1dG8gaW5z
ZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4dCwgaW5kZXgudmFsdWVfb3IobGVuZ3RoKCkp
KTsKICAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIC8vIEFzIHBlciBN
aWNyb3NvZnQgZG9jdW1lbnRhdGlvbiwgYWx3YXlzIHJldHVybiAtMS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oCmluZGV4IDk5NzE1Y2UyOGE3ZjYwOWRhMDA3YmQyNDI5YTBlYjY4NWJjZWFj
YzUuLmU3YmRlM2E0YmRkMGZlN2ViMzY5YTRjZGJhZGMzNWMxMTk5ODZlNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBTY29wZTsKIGNsYXNz
IENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVTaGVldCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7Ci0gICAgc3RhdGljIFJlZjxDU1NTdHls
ZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNPcmlnaW5DbGVhbiA9IFdURjo6bnVsbG9wdCk7Cisg
ICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25zdCBPcHRpb25hbDxib29sPiYgaXNPcmlnaW5DbGVh
biA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJ
bmxpbmUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgRWxlbWVudCYgb3duZXIsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbik7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaApp
bmRleCBiOTU2ZjZiM2E2MzBhN2YzMmRmNGYxZTAzNWQ4OWYyODVkMzU0ODcxLi42OGQyYjYwM2E5
ODBjYjBkMTJlYmE3OGEzN2E2MmUyZTYyOGFhZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgUmVu
ZGVyVmlldzsKIAogY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSB7CiBwdWJsaWM6Ci0g
ICAgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZSwgY29uc3QgUmVuZGVyVmlldyogcmVuZGVyVmlldywgZmxvYXQgem9vbSwgT3B0aW9uYWw8Q1NT
UHJvcGVydHlJRD4gcHJvcGVydHlUb0NvbXB1dGUgPSBXVEY6Om51bGxvcHQsIFJlbmRlclN0eWxl
KiB2aWV3cG9ydERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSA9IG51bGxwdHIpCisgICAgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSwgY29uc3Qg
UmVuZGVyVmlldyogcmVuZGVyVmlldywgZmxvYXQgem9vbSwgT3B0aW9uYWw8Q1NTUHJvcGVydHlJ
RD4gcHJvcGVydHlUb0NvbXB1dGUgPSBzdGQ6Om51bGxvcHQsIFJlbmRlclN0eWxlKiB2aWV3cG9y
dERlcGVuZGVuY3lEZXRlY3Rpb25TdHlsZSA9IG51bGxwdHIpCiAgICAgICAgIDogbV9zdHlsZShz
dHlsZSkKICAgICAgICAgLCBtX3Jvb3RTdHlsZShyb290U3R5bGUpCiAgICAgICAgICwgbV9wYXJl
bnRTdHlsZShwYXJlbnRTdHlsZSkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQoem9vbSA+IDApOwogICAgIH0KIAotICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcsIE9wdGlvbmFsPENTU1Byb3BlcnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gV1RGOjpudWxs
b3B0KQorICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIE9wdGlvbmFsPENTU1Byb3Bl
cnR5SUQ+IHByb3BlcnR5VG9Db21wdXRlID0gc3RkOjpudWxsb3B0KQogICAgICAgICA6IG1fc3R5
bGUoc3R5bGUpCiAgICAgICAgICwgbV9yb290U3R5bGUocm9vdFN0eWxlKQogICAgICAgICAsIG1f
cGFyZW50U3R5bGUocGFyZW50U3R5bGUpCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBm
bG9hdCB6b29tKCkgY29uc3Q7CiAgICAgYm9vbCBjb21wdXRpbmdGb250U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUgPT0gQ1NTUHJvcGVydHlGb250U2l6ZTsgfQogICAg
IGJvb2wgY29tcHV0aW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0Nv
bXB1dGUgPT0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OyB9Ci0gICAgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eVRvQ29tcHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUudmFsdWVP
cihDU1NQcm9wZXJ0eUludmFsaWQpOyB9CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eVRvQ29t
cHV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUb0NvbXB1dGUudmFsdWVfb3IoQ1NTUHJv
cGVydHlJbnZhbGlkKTsgfQogICAgIGNvbnN0IFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBjb25z
dCB7IHJldHVybiBtX3JlbmRlclZpZXc7IH0KIAogICAgIGRvdWJsZSB2aWV3cG9ydFdpZHRoRmFj
dG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwCmluZGV4IGEwMGYxNjViNDgzNzNj
YmFlMDQ0MDA2MGNhMDEyMmExZmVhY2RhNjEuLmMzNTRlOTc4MjczYmE1NmUyZmZiNTQ3ZmYzOTE4
MzM5Y2QwZmNjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwCkBAIC0xODksOCArMTg5LDgg
QEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4Ojpyb3RhdGVTZWxmKGRvdWJsZSByb3RYLCBPcHRp
b25hbDxkb3VibGU+IHJvdFksIE9wdGlvbmEKICAgICAgICAgcm90WCA9IDA7CiAgICAgICAgIHJv
dFkgPSAwOwogICAgIH0KLSAgICBtX21hdHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLnZhbHVlT3Io
MCksIHJvdFoudmFsdWVPcigwKSk7Ci0gICAgaWYgKHJvdFggfHwgcm90WS52YWx1ZU9yKDApKQor
ICAgIG1fbWF0cml4LnJvdGF0ZTNkKHJvdFgsIHJvdFkudmFsdWVfb3IoMCksIHJvdFoudmFsdWVf
b3IoMCkpOworICAgIGlmIChyb3RYIHx8IHJvdFkudmFsdWVfb3IoMCkpCiAgICAgICAgIG1faXMy
RCA9IGZhbHNlOwogICAgIHJldHVybiAqdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAppbmRl
eCAwNmQwMmIxMTMwZWY2YmM3YmJjMWUwZDMzNmNmYjYyNzViM2I1ZmI0Li4zOTgxNmMxZDY2Mzll
YmZlZTJiYmM2YTgxZGUzOGRjMmIzNTI2ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCkBAIC01
Myw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gbXVs
dGlwbHlTZWxmKERPTU1hdHJpeEluaXQmJiBvdGhlcik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPERP
TU1hdHJpeD4+IHByZU11bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIFJl
ZjxET01NYXRyaXg+IHRyYW5zbGF0ZVNlbGYoZG91YmxlIHR4ID0gMCwgZG91YmxlIHR5ID0gMCwg
ZG91YmxlIHR6ID0gMCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gc2NhbGVTZWxmKGRvdWJsZSBzY2Fs
ZVggPSAxLCBPcHRpb25hbDxkb3VibGU+IHNjYWxlWSA9IFdURjo6bnVsbG9wdCwgZG91YmxlIHNj
YWxlWiA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9yaWdpblkgPSAwLCBkb3VibGUg
b3JpZ2luWiA9IDApOworICAgIFJlZjxET01NYXRyaXg+IHNjYWxlU2VsZihkb3VibGUgc2NhbGVY
ID0gMSwgT3B0aW9uYWw8ZG91YmxlPiBzY2FsZVkgPSBzdGQ6Om51bGxvcHQsIGRvdWJsZSBzY2Fs
ZVogPSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9y
aWdpblogPSAwKTsKICAgICBSZWY8RE9NTWF0cml4PiBzY2FsZTNkU2VsZihkb3VibGUgc2NhbGUg
PSAxLCBkb3VibGUgb3JpZ2luWCA9IDAsIGRvdWJsZSBvcmlnaW5ZID0gMCwgZG91YmxlIG9yaWdp
blogPSAwKTsKLSAgICBSZWY8RE9NTWF0cml4PiByb3RhdGVTZWxmKGRvdWJsZSByb3RYID0gMCwg
T3B0aW9uYWw8ZG91YmxlPiByb3RZID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDxkb3VibGU+IHJv
dFogPSBXVEY6Om51bGxvcHQpOyAvLyBBbmdsZXMgYXJlIGluIGRlZ3JlZXMuCisgICAgUmVmPERP
TU1hdHJpeD4gcm90YXRlU2VsZihkb3VibGUgcm90WCA9IDAsIE9wdGlvbmFsPGRvdWJsZT4gcm90
WSA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiByb3RaID0gc3RkOjpudWxsb3B0KTsg
Ly8gQW5nbGVzIGFyZSBpbiBkZWdyZWVzLgogICAgIFJlZjxET01NYXRyaXg+IHJvdGF0ZUZyb21W
ZWN0b3JTZWxmKGRvdWJsZSB4ID0gMCwgZG91YmxlIHkgPSAwKTsKICAgICBSZWY8RE9NTWF0cml4
PiByb3RhdGVBeGlzQW5nbGVTZWxmKGRvdWJsZSB4ID0gMCwgZG91YmxlIHkgPSAwLCBkb3VibGUg
eiA9IDAsIGRvdWJsZSBhbmdsZSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFJl
ZjxET01NYXRyaXg+IHNrZXdYU2VsZihkb3VibGUgc3ggPSAwKTsgLy8gQW5nbGUgaXMgaW4gZGVn
cmVlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwCmluZGV4IDVkODk1
NWRhMTFmYWM5MmUzMGFlOGJhNTAyMzY5MDlmY2IxMWZkZjcuLmMyNmNhNDYyYzg4NWJiYTQ4NzE1
ZmYzYzU0ZTA4ZGNhODVmYTBmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRP
bmx5LmNwcApAQCAtMTIzLDE3ICsxMjMsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NTWF0cml4
UmVhZE9ubHk6OnZhbGlkYXRlQW5kRml4dXAoRE9NTWF0cml4MkRJbml0JiBpbml0KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiaW5pdC5mIGFuZCBpbml0Lm00MiBkbyBu
b3QgbWF0Y2giX3MgfTsKIAogICAgIGlmICghaW5pdC5tMTEpCi0gICAgICAgIGluaXQubTExID0g
aW5pdC5hLnZhbHVlT3IoMSk7CisgICAgICAgIGluaXQubTExID0gaW5pdC5hLnZhbHVlX29yKDEp
OwogICAgIGlmICghaW5pdC5tMTIpCi0gICAgICAgIGluaXQubTEyID0gaW5pdC5iLnZhbHVlT3Io
MCk7CisgICAgICAgIGluaXQubTEyID0gaW5pdC5iLnZhbHVlX29yKDApOwogICAgIGlmICghaW5p
dC5tMjEpCi0gICAgICAgIGluaXQubTIxID0gaW5pdC5jLnZhbHVlT3IoMCk7CisgICAgICAgIGlu
aXQubTIxID0gaW5pdC5jLnZhbHVlX29yKDApOwogICAgIGlmICghaW5pdC5tMjIpCi0gICAgICAg
IGluaXQubTIyID0gaW5pdC5kLnZhbHVlT3IoMSk7CisgICAgICAgIGluaXQubTIyID0gaW5pdC5k
LnZhbHVlX29yKDEpOwogICAgIGlmICghaW5pdC5tNDEpCi0gICAgICAgIGluaXQubTQxID0gaW5p
dC5lLnZhbHVlT3IoMCk7CisgICAgICAgIGluaXQubTQxID0gaW5pdC5lLnZhbHVlX29yKDApOwog
ICAgIGlmICghaW5pdC5tNDIpCi0gICAgICAgIGluaXQubTQyID0gaW5pdC5mLnZhbHVlT3IoMCk7
CisgICAgICAgIGluaXQubTQyID0gaW5pdC5mLnZhbHVlX29yKDApOwogCiAgICAgcmV0dXJuIHsg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmgKaW5kZXggNjM4YmQzYTY5
ZmE5NWM1NDBkNmFiNmMwNGFiNGVkMmUwYzlhOGNlZS4uOGY5ZWVlMTE2MzhmZGE2MjM2N2QxMWI3
ZTljNmRhOTBmNmIwZTBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eFJlYWRPbmx5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmgK
QEAgLTEwMSw5ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJp
eD4+IG11bHRpcGx5KERPTU1hdHJpeEluaXQmJiBvdGhlcikgY29uc3Q7CiAgICAgUmVmPERPTU1h
dHJpeD4gZmxpcFgoKTsKICAgICBSZWY8RE9NTWF0cml4PiBmbGlwWSgpOwotICAgIFJlZjxET01N
YXRyaXg+IHNjYWxlKGRvdWJsZSBzY2FsZVggPSAxLCBPcHRpb25hbDxkb3VibGU+IHNjYWxlWSA9
IFdURjo6bnVsbG9wdCwgZG91YmxlIHNjYWxlWiA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91
YmxlIG9yaWdpblkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOworICAgIFJlZjxET01NYXRyaXg+
IHNjYWxlKGRvdWJsZSBzY2FsZVggPSAxLCBPcHRpb25hbDxkb3VibGU+IHNjYWxlWSA9IHN0ZDo6
bnVsbG9wdCwgZG91YmxlIHNjYWxlWiA9IDEsIGRvdWJsZSBvcmlnaW5YID0gMCwgZG91YmxlIG9y
aWdpblkgPSAwLCBkb3VibGUgb3JpZ2luWiA9IDApOwogICAgIFJlZjxET01NYXRyaXg+IHNjYWxl
M2QoZG91YmxlIHNjYWxlID0gMSwgZG91YmxlIG9yaWdpblggPSAwLCBkb3VibGUgb3JpZ2luWSA9
IDAsIGRvdWJsZSBvcmlnaW5aID0gMCk7Ci0gICAgUmVmPERPTU1hdHJpeD4gcm90YXRlKGRvdWJs
ZSByb3RYID0gMCwgT3B0aW9uYWw8ZG91YmxlPiByb3RZID0gV1RGOjpudWxsb3B0LCBPcHRpb25h
bDxkb3VibGU+IHJvdFogPSBXVEY6Om51bGxvcHQpOyAvLyBBbmdsZXMgYXJlIGluIGRlZ3JlZXMu
CisgICAgUmVmPERPTU1hdHJpeD4gcm90YXRlKGRvdWJsZSByb3RYID0gMCwgT3B0aW9uYWw8ZG91
YmxlPiByb3RZID0gc3RkOjpudWxsb3B0LCBPcHRpb25hbDxkb3VibGU+IHJvdFogPSBzdGQ6Om51
bGxvcHQpOyAvLyBBbmdsZXMgYXJlIGluIGRlZ3JlZXMuCiAgICAgUmVmPERPTU1hdHJpeD4gcm90
YXRlRnJvbVZlY3Rvcihkb3VibGUgeCA9IDAsIGRvdWJsZSB5ID0gMCk7CiAgICAgUmVmPERPTU1h
dHJpeD4gcm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4ID0gMCwgZG91YmxlIHkgPSAwLCBkb3VibGUg
eiA9IDAsIGRvdWJsZSBhbmdsZSA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVzLgogICAgIFJl
ZjxET01NYXRyaXg+IHNrZXdYKGRvdWJsZSBzeCA9IDApOyAvLyBBbmdsZSBpcyBpbiBkZWdyZWVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGlu
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmgKaW5k
ZXggYzgxZjAwMGY4ZGIyYWIxMmFiZDkyMDU5YWUzMzg1ZmI3ZjBlZDhlNC4uOTg4YmY5N2QwN2I0
MmYzOTE2NjJiMzg2NzBkNGNmMDdjNjY5NzMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udFNlbGVjdGlvblZhbHVlSW5saW5lcy5oCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBPcHRp
b25hbDxDU1NWYWx1ZUlEPiBmb250V2VpZ2h0S2V5d29yZChGb250U2VsZWN0aW9uVmFsdWUgd2Vp
Z2h0KQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVOb3JtYWw7CiAgICAgaWYgKHdlaWdodCA9PSBi
b2xkV2VpZ2h0VmFsdWUoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlQm9sZDsKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBP
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRXZWlnaHRWYWx1ZShDU1NWYWx1ZUlEIHZh
bHVlKQpAQCAtNjgsNyArNjgsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVl
PiBmb250V2VpZ2h0VmFsdWUoQ1NTVmFsdWVJRCB2YWx1ZSkKICAgICBjYXNlIENTU1ZhbHVlTGln
aHRlcjoKICAgICAgICAgcmV0dXJuIGxpZ2h0V2VpZ2h0VmFsdWUoKTsKICAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KIH0KIApAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJ
RD4gZm9udFN0cmV0Y2hLZXl3b3JkKEZvbnRTZWxlY3Rpb25WYWx1ZSBzdHJldGNoKQogICAgICAg
ICByZXR1cm4gQ1NTVmFsdWVFeHRyYUV4cGFuZGVkOwogICAgIGlmIChzdHJldGNoID09IHVsdHJh
RXhwYW5kZWRTdHJldGNoVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlVWx0cmFFeHBh
bmRlZDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGZvbnRTdHJldGNoVmFs
dWUoQ1NTVmFsdWVJRCB2YWx1ZSkKQEAgLTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8
Rm9udFNlbGVjdGlvblZhbHVlPiBmb250U3RyZXRjaFZhbHVlKENTU1ZhbHVlSUQgdmFsdWUpCiAg
ICAgY2FzZSBDU1NWYWx1ZVVsdHJhRXhwYW5kZWQ6CiAgICAgICAgIHJldHVybiB1bHRyYUV4cGFu
ZGVkU3RyZXRjaFZhbHVlKCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTEyNyw3
ICsxMjcsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Q1NTVmFsdWVJRD4gZm9udFN0eWxlS2V5d29yZChP
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IHN0eWxlLAogICAgICAgICByZXR1cm4gQ1NTVmFs
dWVOb3JtYWw7CiAgICAgaWYgKHN0eWxlLnZhbHVlKCkgPT0gaXRhbGljVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIGF4aXMgPT0gRm9udFN0eWxlQXhpczo6aXRhbCA/IENTU1ZhbHVlSXRhbGljIDog
Q1NTVmFsdWVPYmxpcXVlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwCmluZGV4IDExNjE5YTk2ODg4NTZiNDQ4OGQwNTkyNzMzNTk3NTdkYTM5NzhhODkuLmIz
NjA5YzJlODEyZTg3NWY3MDE5ZmI4MzliYjA3MWMwOWRmMjkyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBzdGF0aWMg
Ym9vbCBjb21wYXJlQXNwZWN0UmF0aW9WYWx1ZShDU1NWYWx1ZSogdmFsdWUsIGludCB3aWR0aCwg
aW50IGhlaWdodCwgTWVkaQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSB8
fCAhZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuaXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUo
Q1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpOwogfQogCkBAIC00ODUsMjEgKzQ4NSwyMSBAQCBzdGF0
aWMgYm9vbCBncmlkRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENv
bnZlcnNpb25EYXRhJiwgRnJhbQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29tcHV0ZUxlbmd0
aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25EYXRhJiBjb252ZXJzaW9uRGF0YSkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigp
KSB7CiAgICAgICAgIGRvdWJsZSB2YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCk7
CiAgICAgICAgIC8vIFRoZSBvbmx5IHVuaXRsZXNzIG51bWJlciB2YWx1ZSBhbGxvd2VkIGluIHN0
cmljdCBtb2RlIGlzIHplcm8uCiAgICAgICAgIGlmIChzdHJpY3QgJiYgdmFsdWUpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5pc0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0
aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNlSGVpZ2h0RXZh
bHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBj
b252ZXJzaW9uRGF0YSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCkBAIC04
NzIsNyArODcyLDcgQEAgc3RhdGljIGJvb2wgZGlzcGxheU1vZGVFdmFsdWF0ZShDU1NWYWx1ZSog
dmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEKIAogICAgIGF1dG8ga2V5d29y
ZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKIAotICAg
IGF1dG8gbWFuaWZlc3QgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmFwcGxpY2F0aW9u
TWFuaWZlc3QoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIG1hbmlmZXN0ID0gZnJhbWUucGFn
ZSgpID8gZnJhbWUucGFnZSgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkgOiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFtYW5pZmVzdCkKICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVC
cm93c2VyOwogCkBAIC05MjYsNyArOTI2LDcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpl
dmFsdWF0ZShjb25zdCBNZWRpYVF1ZXJ5RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgY29uc3QKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIC8vIFBhc3MgYG51bGxwdHJgIGZvciBgcGFy
ZW50U3R5bGVgIGJlY2F1c2Ugd2UgYXJlIGluIHRoZSBjb250ZXh0IG9mIGEgbWVkaWEgcXVlcnku
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uKGV4cHJlc3Npb24udmFsdWUoKSwgeyBtX3N0eWxlLCBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgZG9jdW1lbnQu
cmVuZGVyVmlldygpLCAxLCBXVEY6Om51bGxvcHQgfSwgKmZyYW1lLCBOb1ByZWZpeCk7CisgICAg
cmV0dXJuIGZ1bmN0aW9uKGV4cHJlc3Npb24udmFsdWUoKSwgeyBtX3N0eWxlLCBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKSwgbnVsbHB0ciwgZG9jdW1lbnQucmVuZGVy
VmlldygpLCAxLCBzdGQ6Om51bGxvcHQgfSwgKmZyYW1lLCBOb1ByZWZpeCk7CiB9CiAKIGJvb2wg
TWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFBdHRyaWJ1dGVNYXRjaGVzKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKaW5kZXggNDVhZGUyMmEyODlmMzEyNDY1MTkyNjBkYjQxZTlkMDJkNzJj
YmY5MC4uYzEzN2M1OTgxZjc3ZWVmNTJlY2E2NTNiYjhmOWFlNGEwZWU2ZWY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBPcHRpb25h
bDxDb2xvcj4gU3R5bGVQcm9wZXJ0aWVzOjpwcm9wZXJ0eUFzQ29sb3IoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSkgY29uc3QKIHsKICAgICBhdXRvIGNvbG9yVmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKHByb3BlcnR5KTsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihjb2xvclZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8mIHByaW1pdGl2ZUNvbG9yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCpjb2xvclZhbHVlKTsKICAgICByZXR1cm4gcHJpbWl0aXZlQ29sb3IuaXNSR0JDb2xv
cigpID8gcHJpbWl0aXZlQ29sb3IuY29sb3IoKSA6IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xv
clZhbHVlLT5jc3NUZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcApp
bmRleCBjZTE3ZmI0YzI4OWI4OTgzMDVmZTZlYjE2MDJkZjJhMjEwYmNiYmM4Li41MjE3MzU4OTM5
NjRmZDg3ZGNkOGY0OWYyMzBmNGMxNzc5YjE2ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlSW1wb3J0LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0Ojpy
ZXF1ZXN0U3R5bGVTaGVldCgpCiAKICAgICAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5
IFBvbGljeSBjaGVjayB3aGVuIHN0eWxlc2hlZXQgaXMgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0
cmVlLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0NjY2Mz4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYWJzVVJMLCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpLCBXVEY6Om51
bGxvcHQsIFN0cmluZyhtX3BhcmVudFN0eWxlU2hlZXQtPmNoYXJzZXQoKSkpOworICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGFic1VSTCwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSwgc3RkOjpudWxsb3B0LCBTdHJpbmcobV9wYXJl
bnRTdHlsZVNoZWV0LT5jaGFyc2V0KCkpKTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNo
ZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzKCkuY3NzKTsKICAgICBpZiAobV9jYWNoZWRTaGVl
dCkKICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3ZlQ2xpZW50KG1fc3R5bGVTaGVldENsaWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQ
YXRocy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5j
cHAKaW5kZXggZmI5MDFiYTFjY2NhMWZiZTNiMzVmZjA5OWIxZDc1NTgxYjU4NTc3MS4uY2RiNWY1
MDM0NjZlZWNhOTZhZjAzODYxN2ZlZmQ3ZjFmYmVlMjRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcApAQCAtMjYzLDcgKzI2Myw3IEBA
IHN0YXRpYyBPcHRpb25hbDx1aW50OF90PiBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvbnN0
IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsCiAgICAgICAgIGN1cnJlbnQrKzsKICAgICB9CiAgICAg
aWYgKGN1cnJlbnQgPT0gZW5kIHx8ICFpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHdo
aWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0FTQ0lJRGlnaXQoKmN1cnJlbnQpKSB7CiAgICAgICAg
IGRvdWJsZSBuZXdWYWx1ZSA9IGxvY2FsVmFsdWUgKiAxMCArICpjdXJyZW50KysgLSAnMCc7CiAg
ICAgICAgIGlmIChuZXdWYWx1ZSA+PSAyNTUpIHsKQEAgLTI3NywxMCArMjc3LDEwIEBAIHN0YXRp
YyBPcHRpb25hbDx1aW50OF90PiBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvbnN0IENoYXJh
Y3RlclR5cGUqJiBzdHJpbmcsCiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKGV4cGVjdCA9PSBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUiAmJiAoKmN1cnJlbnQg
PT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoKmN1cnJlbnQgPT0gJy4n
KSB7CiAgICAgICAgIC8vIFdlIGFscmVhZHkgcGFyc2VkIHRoZSBpbnRlZ3JhbCBwYXJ0LCB0cnkg
dG8gcGFyc2UKQEAgLTI4OCwxNSArMjg4LDE1IEBAIHN0YXRpYyBPcHRpb25hbDx1aW50OF90PiBw
YXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvbnN0IENoYXJhY3RlclR5cGUqJiBzdHJpbmcsCiAg
ICAgICAgIGRvdWJsZSBwZXJjZW50YWdlID0gMDsKICAgICAgICAgaW50IG51bUNoYXJhY3RlcnNQ
YXJzZWQgPSBwYXJzZURvdWJsZShjdXJyZW50LCBlbmQsICclJywgcGVyY2VudGFnZSk7CiAgICAg
ICAgIGlmICghbnVtQ2hhcmFjdGVyc1BhcnNlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjdXJyZW50
ICs9IG51bUNoYXJhY3RlcnNQYXJzZWQ7CiAgICAgICAgIGlmICgqY3VycmVudCAhPSAnJScpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgbG9jYWxWYWx1ZSArPSBwZXJjZW50YWdlOwogICAgIH0KIAogICAg
IGlmIChleHBlY3QgPT0gQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFICYmICpjdXJyZW50ICE9
ICclJykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICgqY3VycmVudCA9PSAnJScpIHsKICAgICAgICAgZXhwZWN0ID0g
Q1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFOwpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBP
cHRpb25hbDx1aW50OF90PiBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvbnN0IENoYXJhY3Rl
clR5cGUqJiBzdHJpbmcsCiAgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzSFRNTFNwYWNl
PENoYXJhY3RlclR5cGU+KCpjdXJyZW50KSkKICAgICAgICAgY3VycmVudCsrOwogICAgIGlmIChj
dXJyZW50ID09IGVuZCB8fCAqY3VycmVudCsrICE9IHRlcm1pbmF0b3IpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3RyaW5n
ID0gY3VycmVudDsKIAogICAgIC8vIENsYW1wIG5lZ2F0aXZlIHZhbHVlcyBhdCB6ZXJvLgpAQCAt
MzQ4LDE3ICszNDgsMTcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDx1aW50OF90PiBwYXJzZUFs
cGhhVmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY28KIAogICAgIGludCBsZW5n
dGggPSBlbmQgLSBzdHJpbmc7CiAgICAgaWYgKGxlbmd0aCA8IDIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc3Ry
aW5nW2xlbmd0aCAtIDFdICE9IHRlcm1pbmF0b3IgfHwgIWlzQVNDSUlEaWdpdChzdHJpbmdbbGVu
Z3RoIC0gMl0pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHN0cmluZ1swXSAhPSAnMCcgJiYgc3RyaW5nWzBdICE9
ICcxJyAmJiBzdHJpbmdbMF0gIT0gJy4nKSB7CiAgICAgICAgIGlmIChjaGVja0ZvclZhbGlkRG91
YmxlKHN0cmluZywgZW5kLCB0ZXJtaW5hdG9yKSkgewogICAgICAgICAgICAgc3RyaW5nID0gZW5k
OwogICAgICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlID8gMCA6IDI1NTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIAogICAgIGlmIChsZW5ndGggPT0gMiAmJiBzdHJpbmdbMF0gIT0gJy4nKSB7CkBAIC0z
NzYsNyArMzc2LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDx1aW50OF90PiBwYXJzZUFscGhh
VmFsdWUoY29uc3QgQ2hhcmFjdGVyVHlwZSomIHN0cmluZywgY28KIAogICAgIGRvdWJsZSBhbHBo
YSA9IDA7CiAgICAgaWYgKCFwYXJzZURvdWJsZShzdHJpbmcsIGVuZCwgdGVybWluYXRvciwgYWxw
aGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgc3RyaW5nID0gZW5kOwogICAgIHJldHVybiBuZWdhdGl2ZSA/IDAgOiBj
b252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KGFscGhhKTsKQEAgLTQzMywxOCArNDMzLDE4IEBA
IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gZmluaXNoUGFyc2luZ0hleENvbG9yKHVp
bnQzMl90IHZhbHVlLCB1bnNpZ25lZCBsCiAgICAgY2FzZSA4OgogICAgICAgICByZXR1cm4gYXNT
UkdCQShQYWNrZWRDb2xvcjo6UkdCQSB7IHZhbHVlIH0pOwogICAgIH0KLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFyc2VI
ZXhDb2xvckludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBpZiAobGVuZ3RoICE9IDMgJiYgbGVuZ3RoICE9IDQgJiYgbGVuZ3Ro
ICE9IDYgJiYgbGVuZ3RoICE9IDgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdWludDMyX3QgdmFsdWUgPSAwOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBhdXRvIGRpZ2l0
ID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgaWYgKCFpc0FTQ0lJSGV4RGlnaXQoZGlnaXQpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHZhbHVlIDw8PSA0OwogICAgICAgICB2YWx1ZSB8PSB0b0FTQ0lJ
SGV4VmFsdWUoZGlnaXQpOwogICAgIH0KQEAgLTQ3MSwxOCArNDcxLDE4IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gcGFy
c2VOdW1lcmljQ29sCiAgICAgICAgIGF1dG8gZW5kID0gY2hhcmFjdGVycyArIGxlbmd0aDsKICAg
ICAgICAgYXV0byByZWQgPSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwg
JywnLCBleHBlY3QpOwogICAgICAgICBpZiAoIXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IGdyZWVuID0gcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShjdXJyZW50LCBlbmQsICcsJywgZXhw
ZWN0KTsKICAgICAgICAgaWYgKCFncmVlbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGJsdWUg
PSBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QpOwog
ICAgICAgICBpZiAoIWJsdWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byBhbHBoYSA9IHBhcnNl
QWxwaGFWYWx1ZShjdXJyZW50LCBlbmQsICcpJyk7CiAgICAgICAgIGlmICghYWxwaGEpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKGN1cnJlbnQgIT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJl
dHVybiBTUkdCQTx1aW50OF90PiB7ICpyZWQsICpncmVlbiwgKmJsdWUsICphbHBoYSB9OwogICAg
IH0KIApAQCAtNDkyLDE5ICs0OTIsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2wKICAgICAg
ICAgYXV0byBlbmQgPSBjaGFyYWN0ZXJzICsgbGVuZ3RoOwogICAgICAgICBhdXRvIHJlZCA9IHBh
cnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnLCcsIGV4cGVjdCk7CiAgICAg
ICAgIGlmICghcmVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gZ3JlZW4gPSBwYXJzZUNvbG9y
SW50T3JQZXJjZW50YWdlKGN1cnJlbnQsIGVuZCwgJywnLCBleHBlY3QpOwogICAgICAgICBpZiAo
IWdyZWVuKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gYmx1ZSA9IHBhcnNlQ29sb3JJbnRPclBl
cmNlbnRhZ2UoY3VycmVudCwgZW5kLCAnKScsIGV4cGVjdCk7CiAgICAgICAgIGlmICghYmx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpZiAoY3VycmVudCAhPSBlbmQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgcmV0dXJuIFNSR0JBPHVpbnQ4X3Q+IHsgKnJlZCwgKmdyZWVuLCAqYmx1ZSB9OwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZU51bWVyaWNDb2xvcihTdHJp
bmdWaWV3IHN0cmluZywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKQEAgLTUzNCw3
ICs1MzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IGZpbmlzaFBhcnNpbmdO
YW1lZENvbG9yKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgbAogICAgIGJ1ZmZlcltsZW5ndGhdID0g
J1wwJzsKICAgICBhdXRvIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IoYnVmZmVyLCBsZW5ndGgpOwog
ICAgIGlmICghbmFtZWRDb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gYXNTUkdCQShQYWNrZWRDb2xvcjo6
QVJHQiB7IG5hbWVkQ29sb3ItPkFSR0JWYWx1ZSB9KTsKIH0KIApAQCAtNTQyLDExICs1NDIsMTEg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBwYXJzZU5hbWVkQ29sb3IKIHsKICAgICBjaGFyIGJ1ZmZlcls2NF07IC8vIEVh
c2lseSBiaWcgZW5vdWdoIGZvciB0aGUgbG9uZ2VzdCBjb2xvciBuYW1lLgogICAgIGlmIChsZW5n
dGggPiBzaXplb2YoYnVmZmVyKSAtIDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsK
ICAgICAgICAgaWYgKCFjaGFyYWN0ZXIgfHwgIWlzQVNDSUkoY2hhcmFjdGVyKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBidWZmZXJbaV0gPSB0b0FTQ0lJTG93ZXIoc3RhdGljX2Nhc3Q8Y2hhcj4oY2hh
cmFjdGVyKSk7CiAgICAgfQogICAgIHJldHVybiBmaW5pc2hQYXJzaW5nTmFtZWRDb2xvcihidWZm
ZXIsIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNw
cAppbmRleCBlYzBjMWE2ODIxYjU2YmRhOTlkMGFlZjFhYjY0YzMxMmI0YWE4ODkyLi43MjRmMWIz
OTFkMzJiNjM4Nzg0OGI3YjRlMDE3OTJmM2ZiZGY4ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgQ1NTUGFyc2VySW1w
bDo6Q1NTUGFyc2VySW1wbChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIHN0cmkKIENTU1BhcnNlcjo6UGFyc2VSZXN1bHQgQ1NTUGFyc2VySW1wbDo6cGFyc2VW
YWx1ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTUGFyc2VySW1wbCBwYXJzZXIoY29u
dGV4dCwgc3RyaW5nKTsKLSAgICBhdXRvIHJ1bGVUeXBlID0gY29udGV4dC5lbmNsb3NpbmdSdWxl
VHlwZS52YWx1ZU9yKFN0eWxlUnVsZVR5cGU6OlN0eWxlKTsKKyAgICBhdXRvIHJ1bGVUeXBlID0g
Y29udGV4dC5lbmNsb3NpbmdSdWxlVHlwZS52YWx1ZV9vcihTdHlsZVJ1bGVUeXBlOjpTdHlsZSk7
CiAgICAgcGFyc2VyLmNvbnN1bWVEZWNsYXJhdGlvblZhbHVlKHBhcnNlci50b2tlbml6ZXIoKS0+
dG9rZW5SYW5nZSgpLCBwcm9wZXJ0eUlELCBpbXBvcnRhbnQsIHJ1bGVUeXBlKTsKICAgICBpZiAo
cGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBDU1NQ
YXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcjsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIENTU1Bh
cnNlckltcGw6OnBhcnNlRGVmZXJyZWRLZXlmcmFtZUxpc3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSB0
b2tlblJhbmdlLCBDUwogYm9vbCBDU1NQYXJzZXJJbXBsOjpwYXJzZURlY2xhcmF0aW9uTGlzdChN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ1NTUGFyc2VySW1wbCBw
YXJzZXIoY29udGV4dCwgc3RyaW5nKTsKLSAgICBhdXRvIHJ1bGVUeXBlID0gY29udGV4dC5lbmNs
b3NpbmdSdWxlVHlwZS52YWx1ZU9yKFN0eWxlUnVsZVR5cGU6OlN0eWxlKTsKKyAgICBhdXRvIHJ1
bGVUeXBlID0gY29udGV4dC5lbmNsb3NpbmdSdWxlVHlwZS52YWx1ZV9vcihTdHlsZVJ1bGVUeXBl
OjpTdHlsZSk7CiAgICAgcGFyc2VyLmNvbnN1bWVEZWNsYXJhdGlvbkxpc3QocGFyc2VyLnRva2Vu
aXplcigpLT50b2tlblJhbmdlKCksIHJ1bGVUeXBlKTsKICAgICBpZiAocGFyc2VyLm1fcGFyc2Vk
UHJvcGVydGllcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggOWNjZGI2MTU3
ZDhhNWM5ZmU5NzVkZWFhNzJhNjc4MGUxZGE0NjYzNS4uZmQ1MTA2MTk3M2UyNTBjOWY1ZGQxMjZk
ODFjOGE3ODMzMzVjN2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKQEAgLTQ1Myw4ICs0NTMsOCBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lRGlzcGxheShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICB9CiAK
ICAgICAvLyBTZXQgZGVmYXVsdHMgd2hlbiBvbmUgb2YgdGhlIHR3byB2YWx1ZXMgYXJlIHVuc3Bl
Y2lmaWVkCi0gICAgQ1NTVmFsdWVJRCBkaXNwbGF5T3V0c2lkZSA9IHBhcnNlZERpc3BsYXlPdXRz
aWRlLnZhbHVlT3IoQ1NTVmFsdWVCbG9jayk7Ci0gICAgQ1NTVmFsdWVJRCBkaXNwbGF5SW5zaWRl
ID0gcGFyc2VkRGlzcGxheUluc2lkZS52YWx1ZU9yKENTU1ZhbHVlRmxvdyk7CisgICAgQ1NTVmFs
dWVJRCBkaXNwbGF5T3V0c2lkZSA9IHBhcnNlZERpc3BsYXlPdXRzaWRlLnZhbHVlX29yKENTU1Zh
bHVlQmxvY2spOworICAgIENTU1ZhbHVlSUQgZGlzcGxheUluc2lkZSA9IHBhcnNlZERpc3BsYXlJ
bnNpZGUudmFsdWVfb3IoQ1NTVmFsdWVGbG93KTsKIAogICAgIGF1dG8gc2VsZWN0U2hvcnRWYWx1
ZSA9IFsmXSgpIC0+IENTU1ZhbHVlSUQgewogICAgICAgICBpZiAoZGlzcGxheU91dHNpZGUgPT0g
Q1NTVmFsdWVCbG9jaykgewpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAg
IC8vIEFsd2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdv
dWxkIGJlIGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCiAgICAgLy8gdGhlICdjb2x1
bW5zJyBzaG9ydGhhbmQgcHJvcGVydHkuCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBj
b2x1bW5XaWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVl
UmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKLSAgICBpZiAoIWNvbHVtbldpZHRoIHx8IGNvbHVtbldpZHRo
LT5pc1plcm8oKS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoIWNvbHVtbldpZHRoIHx8IGNvbHVt
bldpZHRoLT5pc1plcm8oKS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgcmV0dXJuIGNvbHVtbldpZHRoOwpAQCAtMjM5Myw3ICsyMzkzLDcgQEAgc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBlcnNwZWN0aXZlKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLAogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIAog
ICAgIGlmIChhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2Vy
TW9kZSwgVmFsdWVSYW5nZTo6QWxsKSkgewotICAgICAgICBpZiAoIXBhcnNlZFZhbHVlLT5pc05l
Z2F0aXZlKCkudmFsdWVPcihmYWxzZSkpCisgICAgICAgIGlmICghcGFyc2VkVmFsdWUtPmlzTmVn
YXRpdmUoKS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAppbmRleCAxMjg2OWRh
YTRlZWZmNThiYTU1ZjdjNmVkMjI3ZWI1Y2Q0OTY3ZmQ0Li5iZTgyZmZkZjFkYjNhN2JlMjNhZWEw
NDBiYmNjOWYyN2QxMWI1YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVOdW1iZXJPclBlcmNlbnREaXZpZGVkQnkxMDBSYXco
Q1NTUGFyc2VyVG9rZW5SYW5nCiAgICAgICAgIHJldHVybiAqcGVyY2VudCAvIDEwMC4wOwogICAg
IGlmIChhdXRvIG51bWJlciA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2UsIHZhbHVlUmFuZ2UpKQog
ICAgICAgICByZXR1cm4gKm51bWJlcjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIEZJWE1FOiBjb25zaWRlciBwdWxsaW5nIGluIHRo
ZSBwYXJzaW5nIGxvZ2ljIGZyb20gQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAuCkBAIC0xMjksNyAr
MTI5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IE9wdGlvbmFs
PEludFR5cGU+IGNvbnN1bWVJbnRlZ2VyVHlwZVJhdyhkb3VibGUgbWluaW11bVZhbHVlKQogICAg
IHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3NvdXJj
ZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgcmV0dXJuIGNsYW1wVG88SW50VHlwZT4oc3RkOjpy
b3VuZChzdGQ6Om1heChtX2NhbGNWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgbWluaW11bVZhbHVlKSkp
OwogICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8ZG91Ymxl
PiBjb25zdW1lTnVtYmVyUmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFsdWUgfHwg
bV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3JhbmdlOwogICAgICAgICByZXR1
cm4gbV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgfQpAQCAtMTUzLDEwICsxNTMsMTAg
QEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZVBlcmNlbnRSYXcoKQogICAg
IHsKICAgICAgICAgaWYgKCFtX2NhbGNWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGNh
dGVnb3J5ID0gbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCk7CiAgICAgICAgIGlmIChjYXRlZ29yeSAh
PSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpQZXJjZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fc291
cmNlUmFuZ2UgPSBtX3JhbmdlOwogICAgICAgICByZXR1cm4gbV9jYWxjVmFsdWUtPmRvdWJsZVZh
bHVlKCk7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25hbDxB
bmdsZVJhdz4gY29uc3VtZUFuZ2xlUmF3KCkKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxjVmFs
dWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25DYXRlZ29yeTo6QW5n
bGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9zb3VyY2VSYW5nZSA9IG1fcmFuZ2U7CiAgICAgICAg
IHJldHVybiB7IHsgbV9jYWxjVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSwgbV9jYWxjVmFsdWUtPmRv
dWJsZVZhbHVlKCkgfSB9OwogICAgIH0KQEAgLTE3Miw3ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAg
T3B0aW9uYWw8TGVuZ3RoUmF3PiBjb25zdW1lTGVuZ3RoUmF3KCkKICAgICB7CiAgICAgICAgIGlm
ICghbV9jYWxjVmFsdWUgfHwgbV9jYWxjVmFsdWUtPmNhdGVnb3J5KCkgIT0gQ2FsY3VsYXRpb25D
YXRlZ29yeTo6TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fc291cmNlUmFuZ2UgPSBtX3Jh
bmdlOwogICAgICAgICByZXR1cm4geyB7IG1fY2FsY1ZhbHVlLT5wcmltaXRpdmVUeXBlKCksIG1f
Y2FsY1ZhbHVlLT5kb3VibGVWYWx1ZSgpIH0gfTsKICAgICB9CkBAIC0xODAsNyArMTgwLDcgQEAg
cHVibGljOgogICAgIE9wdGlvbmFsPExlbmd0aE9yUGVyY2VudFJhdz4gY29uc3VtZUxlbmd0aE9y
UGVyY2VudFJhdygpCiAgICAgewogICAgICAgICBpZiAoIW1fY2FsY1ZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgc3dpdGNoIChtX2NhbGNWYWx1ZS0+Y2F0ZWdvcnkoKSkgewogICAgICAgICBj
YXNlIENhbGN1bGF0aW9uQ2F0ZWdvcnk6Okxlbmd0aDoKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBtX3NvdXJjZVJhbmdlID0gbV9yYW5nZTsKICAgICAgICAgICAgIHJl
dHVybiB7IHsgbV9jYWxjVmFsdWUtPmRvdWJsZVZhbHVlKCkgfSB9OwogICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIwOCwyMSArMjA4LDIxIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEludFR5cGU+IE9wdGlvbmFsPEludFR5cGU+IGNvbnN1bWVJbnRlZ2Vy
VHlwZVJhdyhDU1NQYXJzZXJUb2tlCiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0g
cmFuZ2UucGVlaygpOwogICAgIGlmICh0b2tlbi50eXBlKCkgPT0gTnVtYmVyVG9rZW4pIHsKICAg
ICAgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSA9PSBOdW1iZXJWYWx1ZVR5cGUgfHwg
dG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCBtaW5pbXVtVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
cmV0dXJuIGNsYW1wVG88SW50VHlwZT4ocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5udW1lcmljVmFsdWUoKSk7CiAgICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5j
dGlvblRva2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxh
dGlvbkNhdGVnb3J5OjpOdW1iZXIpOwogICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUqIGNhbGN1
bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CiAgICAgICAgIGlmIChjYWxjdWxhdGlvbi0+
Y2F0ZWdvcnkoKSAhPSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3VtZUludGVnZXJUeXBlUmF3PEludFR5cGU+KG1p
bmltdW1WYWx1ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxpbnQ+IGNvbnN1bWVJbnRlZ2VyUmF3KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBkb3VibGUgbWluaW11bVZhbHVlKQpAQCAtMjU0LDEy
ICsyNTQsMTIgQEAgT3B0aW9uYWw8ZG91YmxlPiBjb25zdW1lTnVtYmVyUmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBWYWx1ZVJhbmdlIHZhbHVlUmEKICAgICBjb25zdCBDU1NQYXJzZXJU
b2tlbiYgdG9rZW4gPSByYW5nZS5wZWVrKCk7CiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1i
ZXJUb2tlbikgewogICAgICAgICBpZiAodmFsdWVSYW5nZSA9PSBWYWx1ZVJhbmdlOjpOb25OZWdh
dGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCk7CiAg
ICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlvblRva2VuKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Q2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXIs
IHZhbHVlUmFuZ2UpOwogICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVOdW1iZXJSYXcoKTsK
QEAgLTMwMyw3ICszMDMsNyBAQCBPcHRpb25hbDxkb3VibGU+IGNvbnN1bWVGb250V2VpZ2h0TnVt
YmVyUmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICByZXR1cm4gY29uc3Vt
ZU51bWJlclJhdyhyYW5nZSk7CiAKICAgICBpZiAodG9rZW4udHlwZSgpICE9IEZ1bmN0aW9uVG9r
ZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyAiW0ZvciBjYWxjKCldLCB0aGUgdXNlZCB2YWx1ZSByZXN1bHRpbmcg
ZnJvbSBhbiBleHByZXNzaW9uIG11c3QgYmUgY2xhbXBlZCB0byB0aGUgcmFuZ2UgYWxsb3dlZCBp
biB0aGUgdGFyZ2V0IGNvbnRleHQuIgogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwg
Q2FsY3VsYXRpb25DYXRlZ29yeTo6TnVtYmVyLCBWYWx1ZVJhbmdlOjpBbGwpOwpAQCAtMzE0LDcg
KzMxNCw3IEBAIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZUZvbnRXZWlnaHROdW1iZXJSYXcoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgKQogICAgICAgICByZXR1cm4gc3RkOjptaW4o
c3RkOjptYXgoKnJlc3VsdCwgc3RkOjpuZXh0YWZ0ZXIoMC4sIDEuKSksIHN0ZDo6bmV4dGFmdGVy
KDEwMDAuLCAwLikpOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVGb250V2Vp
Z2h0TnVtYmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzQ5LDcgKzM0OSw3IEBA
IE9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjCiAgICAgICAgIHN3aXRjaCAodG9rZW4udW5pdFR5cGUo
KSkgewogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUVVJUktZX0VNUzoKICAgICAgICAg
ICAgIGlmIChjc3NQYXJzZXJNb2RlICE9IFVBU2hlZXRNb2RlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
RU1TOgogICAgICAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUkVNUzoKQEAgLTM3MCwyMyArMzcw
LDIzIEBAIE9wdGlvbmFsPExlbmd0aFJhdz4gY29uc3VtZUxlbmd0aFJhdyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjCiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19ROgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQogICAgICAgICBpZiAoKHZhbHVlUmFuZ2UgPT0gVmFsdWVSYW5nZTo6Tm9uTmVn
YXRpdmUgJiYgdG9rZW4ubnVtZXJpY1ZhbHVlKCkgPCAwKSB8fCBzdGQ6OmlzaW5mKHRva2VuLm51
bWVyaWNWYWx1ZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4geyB7IHRva2VuLnVuaXRU
eXBlKCksIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVlKCkg
fSB9OwogICAgIH0KICAgICBpZiAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuKSB7CiAgICAg
ICAgIGlmICghc2hvdWxkQWNjZXB0VW5pdGxlc3NWYWx1ZSh0b2tlbi5udW1lcmljVmFsdWUoKSwg
Y3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MsIFVuaXRsZXNzWmVyb1F1aXJrOjpBbGxvdykKICAgICAg
ICAgICAgIHx8ICh2YWx1ZVJhbmdlID09IFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlICYmIHRva2Vu
Lm51bWVyaWNWYWx1ZSgpIDwgMCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKHN0ZDo6aXNpbmYo
dG9rZW4ubnVtZXJpY1ZhbHVlKCkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiB7IHsgQ1NT
VW5pdFR5cGU6OkNTU19QWCwgcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1l
cmljVmFsdWUoKSB9IH07CiAgICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlv
blRva2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlv
bkNhdGVnb3J5OjpMZW5ndGgsIHZhbHVlUmFuZ2UpOwogICAgIHJldHVybiBjYWxjUGFyc2VyLmNv
bnN1bWVMZW5ndGhSYXcoKTsKQEAgLTQxMiwxMiArNDEyLDEyIEBAIE9wdGlvbmFsPGRvdWJsZT4g
Y29uc3VtZVBlcmNlbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFZhbHVlUmFuZ2Ug
dmFsdWVSCiAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuID0gcmFuZ2UucGVlaygpOwog
ICAgIGlmICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuKSB7CiAgICAgICAgIGlmIChz
dGQ6OmlzaW5mKHRva2VuLm51bWVyaWNWYWx1ZSgpKSB8fCAodmFsdWVSYW5nZSA9PSBWYWx1ZVJh
bmdlOjpOb25OZWdhdGl2ZSAmJiB0b2tlbi5udW1lcmljVmFsdWUoKSA8IDApKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybiByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLm51bWVy
aWNWYWx1ZSgpOwogICAgIH0KIAogICAgIGlmICh0b2tlbi50eXBlKCkgIT0gRnVuY3Rpb25Ub2tl
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIENhbGNQYXJzZXIgY2FsY1BhcnNlcihyYW5nZSwgQ2FsY3VsYXRpb25DYXRl
Z29yeTo6UGVyY2VudCwgdmFsdWVSYW5nZSk7CiAgICAgcmV0dXJuIGNhbGNQYXJzZXIuY29uc3Vt
ZVBlcmNlbnRSYXcoKTsKQEAgLTQ2NiwyMyArNDY2LDIzIEBAIE9wdGlvbmFsPExlbmd0aE9yUGVy
Y2VudFJhdz4gY29uc3VtZUxlbmd0aE9yUGVyY2VudFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nCiAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25Ub2tlbiB8fCB0b2tlbi50eXBl
KCkgPT0gTnVtYmVyVG9rZW4pIHsKICAgICAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUxl
bmd0aFJhdyhyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdmFsdWVSYW5nZSwgdW5pdGxlc3MpKQogICAg
ICAgICAgICAgcmV0dXJuIHsgKnJlc3VsdCB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAodG9rZW4udHlw
ZSgpID09IFBlcmNlbnRhZ2VUb2tlbikgewogICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBjb25z
dW1lUGVyY2VudFJhdyhyYW5nZSwgdmFsdWVSYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4geyAq
cmVzdWx0IH07Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlvblRv
a2VuKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlvbkNh
dGVnb3J5OjpMZW5ndGgsIHZhbHVlUmFuZ2UpOwogICAgIGlmIChjb25zdCBDU1NDYWxjVmFsdWUq
IGNhbGN1bGF0aW9uID0gY2FsY1BhcnNlci52YWx1ZSgpKSB7CiAgICAgICAgIGlmIChjYW5Db25z
dW1lQ2FsY1ZhbHVlKGNhbGN1bGF0aW9uLT5jYXRlZ29yeSgpLCBjc3NQYXJzZXJNb2RlKSkKICAg
ICAgICAgICAgIHJldHVybiBjYWxjUGFyc2VyLmNvbnN1bWVMZW5ndGhPclBlcmNlbnRSYXcoKTsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZSB2YWx1ZVJhbmdlLCBVbml0bGVzc1F1aXJrIHVuaXRsZXNzKQpAQCAtNTE5LDcg
KzUxOSw3IEBAIE9wdGlvbmFsPEFuZ2xlUmF3PiBjb25zdW1lQW5nbGVSYXcoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzCiAgICAgICAgIGNhc2UgQ1NTVW5pdFR5
cGU6OkNTU19UVVJOOgogICAgICAgICAgICAgcmV0dXJuIHsgeyB1bml0VHlwZSwgcmFuZ2UuY29u
c3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5udW1lcmljVmFsdWUoKSB9IH07CiAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTI3LDcgKzUyNyw3IEBA
IE9wdGlvbmFsPEFuZ2xlUmF3PiBjb25zdW1lQW5nbGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzCiAgICAgICAgIHJldHVybiB7IHsgQ1NTVW5pdFR5cGU6
OkNTU19ERUcsIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkubnVtZXJpY1ZhbHVl
KCkgfSB9OwogCiAgICAgaWYgKHRva2VuLnR5cGUoKSAhPSBGdW5jdGlvblRva2VuKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgQ2FsY1BhcnNlciBjYWxjUGFyc2VyKHJhbmdlLCBDYWxjdWxhdGlvbkNhdGVnb3J5OjpBbmds
ZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICByZXR1cm4gY2FsY1BhcnNlci5jb25zdW1lQW5nbGVS
YXcoKTsKQEAgLTYzNyw3ICs2MzcsNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1
bWVSZXNvbHV0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBBbGxvd1hSZQogT3B0aW9u
YWw8Q1NTVmFsdWVJRD4gY29uc3VtZUlkZW50UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogewogICAgIGlmIChyYW5nZS5wZWVrKCkudHlwZSgpICE9IElkZW50VG9rZW4pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkuaWQoKTsKIH0KIApAQCAt
NjU2LDcgKzY1Niw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZUlkZW50V29y
a2VyU2FmZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTCiBPcHRpb25hbDxDU1NWYWx1
ZUlEPiBjb25zdW1lSWRlbnRSYW5nZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
VmFsdWVJRCBsb3dlciwgQ1NTVmFsdWVJRCB1cHBlcikKIHsKICAgICBpZiAocmFuZ2UucGVlaygp
LmlkKCkgPCBsb3dlciB8fCByYW5nZS5wZWVrKCkuaWQoKSA+IHVwcGVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVy
biBjb25zdW1lSWRlbnRSYXcocmFuZ2UpOwogfQogCkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGlj
IE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZU9wdGlvbmFsQWxwaGEoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiAgICAgaWYgKGF1dG8gYWxwaGFQYXJhbWV0ZXIgPSBjb25zdW1lTnVtYmVyT3JQ
ZXJjZW50RGl2aWRlZEJ5MTAwUmF3KHJhbmdlKSkKICAgICAgICAgcmV0dXJuIGNsYW1wVG8oKmFs
cGhhUGFyYW1ldGVyLCAwLjAsIDEuMCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dl
ZElkZW50cz4gc3RhdGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlEPj4gY29u
c3VtZU9wdGlvbmFsQWxwaGFPcklkZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAt
NzU1LDcgKzc1NSw3IEBAIHRlbXBsYXRlPENTU1ZhbHVlSUQuLi4gYWxsb3dlZElkZW50cz4gc3Rh
dGljIE9wdGlvbmFsPFZhcmlhbnQ8ZG91YmxlLCBDU1NWYWx1ZUlECiAgICAgaWYgKGF1dG8gaWRl
bnQgPSBjb25zdW1lSWRlbnRSYXc8YWxsb3dlZElkZW50cy4uLj4ocmFuZ2UpKQogICAgICAgICBy
ZXR1cm4geyAqaWRlbnQgfTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gY29uc3VtZUh1ZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4
dCkKQEAgLTc3NCw3ICs3NzQsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVu
dHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIGlmIChh
dXRvIGlkZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKICAg
ICAgICAgcmV0dXJuIHsgKmlkZW50IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBkb3VibGUgbm9ybWFsaXplSHVlKGRv
dWJsZSBodWUpCkBAIC03OTAsNyArNzkwLDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRC4uLiBhbGxv
d2VkSWRlbnRzPiBzdGF0aWMgT3B0aW9uYWw8VmFyaWFudDxkb3VibGUsIENTU1ZhbHVlSUQKICAg
ICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdzxhbGxvd2VkSWRlbnRzLi4uPihyYW5n
ZSkpCiAgICAgICAgIHJldHVybiB7ICppZGVudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4u
IGFsbG93ZWRJZGVudHM+IHN0YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJ
RD4+IGNvbnN1bWVQZXJjZW50T3JJZGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAg
LTgwMSw3ICs4MDEsNyBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlELi4uIGFsbG93ZWRJZGVudHM+IHN0
YXRpYyBPcHRpb25hbDxWYXJpYW50PGRvdWJsZSwgQ1NTVmFsdWVJRAogICAgIGlmIChhdXRvIGlk
ZW50ID0gY29uc3VtZUlkZW50UmF3PGFsbG93ZWRJZGVudHMuLi4+KHJhbmdlKSkKICAgICAgICAg
cmV0dXJuIHsgKmlkZW50IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPENTU1ZhbHVlSUQgQzEsIENTU1ZhbHVlSUQg
QzIsIENTU1ZhbHVlSUQgQzMsIENTU1ZhbHVlSUQgQWxwaGFDaGFubmVsLCB0eXBlbmFtZSBDb2xv
clR5cGU+IHN0YXRpYyBhdXRvIGV4dHJhY3RDaGFubmVsVmFsdWUoQ1NTVmFsdWVJRCBjaGFubmVs
LCBjb25zdCBDb2xvclR5cGUmIG9yaWdpbkNvbG9yKSAtPiB0eXBlbmFtZSBDb2xvclR5cGU6OkNv
bXBvbmVudFR5cGUKQEAgLTg4Nyw4ICs4ODcsOCBAQCB0ZW1wbGF0ZTxDU1NWYWx1ZUlEIEM+IHN0
YXRpYyBPcHRpb25hbDxSZWxhdGl2ZVJHQkNvbXBvbmVudD4gY29uc3VtZVJlbGF0aXZlUkdCQwog
ICAgICAgICBpZiAoYXV0byBwZXJjZW50ID0gY29uc3VtZVBlcmNlbnRSYXcoYXJncykpCiAgICAg
ICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25lbnQgeyAqcGVyY2VudCwgUkdCQ29tcG9u
ZW50VHlwZTo6UGVyY2VudGFnZSB9OwogICAgICAgICBpZiAoYXV0byBjaGFubmVsID0gY29uc3Vt
ZUlkZW50UmF3PEM+KGFyZ3MpKQotICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9u
ZW50IHsgKmNoYW5uZWwsIFdURjo6bnVsbG9wdCB9OwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIFJlbGF0aXZlUkdCQ29tcG9uZW50IHsgKmNoYW5uZWws
IHN0ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIHN3aXRjaCAoKmNvbXBvbmVudFR5cGUpIHsKQEAgLTg5NywxNCArODk3LDE0IEBAIHRlbXBs
YXRlPENTU1ZhbHVlSUQgQz4gc3RhdGljIE9wdGlvbmFsPFJlbGF0aXZlUkdCQ29tcG9uZW50PiBj
b25zdW1lUmVsYXRpdmVSR0JDCiAgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21wb25l
bnQgeyAqbnVtYmVyLCBSR0JDb21wb25lbnRUeXBlOjpOdW1iZXIgfTsKICAgICAgICAgaWYgKGF1
dG8gY2hhbm5lbCA9IGNvbnN1bWVJZGVudFJhdzxDPihhcmdzKSkKICAgICAgICAgICAgIHJldHVy
biBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpjaGFubmVsLCBSR0JDb21wb25lbnRUeXBlOjpOdW1i
ZXIgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAgICAgY2FzZSBSR0JDb21wb25lbnRUeXBlOjpQZXJjZW50YWdlOiB7
CiAgICAgICAgIGlmIChhdXRvIHBlcmNlbnQgPSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKICAg
ICAgICAgICAgIHJldHVybiBSZWxhdGl2ZVJHQkNvbXBvbmVudCB7ICpwZXJjZW50LCBSR0JDb21w
b25lbnRUeXBlOjpQZXJjZW50YWdlIH07CiAgICAgICAgIGlmIChhdXRvIGNoYW5uZWwgPSBjb25z
dW1lSWRlbnRSYXc8Qz4oYXJncykpCiAgICAgICAgICAgICByZXR1cm4gUmVsYXRpdmVSR0JDb21w
b25lbnQgeyAqY2hhbm5lbCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9OwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICB9CiAKQEAgLTk1Myw3ICs5NTMsNyBAQCBzdGF0aWMgQ29sb3IgcGFyc2VSZWxhdGl2
ZVJHQlBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFycwog
ICAgIC8vIHN1cHBvcnQgY2FsY3VsYXRpb25zIG9uIHRoZSBvcmlnaW4ncyBjb21wb25lbnRzLgog
ICAgIGF1dG8gb3JpZ2luQ29sb3JBc1NSR0IgPSBvcmlnaW5Db2xvci50b1NSR0JBTG9zc3k8dWlu
dDhfdD4oKTsKIAotICAgIGF1dG8gcmVzb2x2ZWRDb21wb25lbnRUeXBlID0gY29tcG9uZW50VHlw
ZS52YWx1ZU9yKFJHQkNvbXBvbmVudFR5cGU6OlBlcmNlbnRhZ2UpOworICAgIGF1dG8gcmVzb2x2
ZWRDb21wb25lbnRUeXBlID0gY29tcG9uZW50VHlwZS52YWx1ZV9vcihSR0JDb21wb25lbnRUeXBl
OjpQZXJjZW50YWdlKTsKICAgICBhdXRvIGNoYW5uZWxSZXNvbHZlciA9IFtyZXNvbHZlZENvbXBv
bmVudFR5cGVdKGF1dG8gdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIGNsYW1wUkdCQ29tcG9uZW50
KHZhbHVlLCByZXNvbHZlZENvbXBvbmVudFR5cGUpOwogICAgIH07CkBAIC05OTAsNyArOTkwLDcg
QEAgdGVtcGxhdGU8UkdCRnVuY3Rpb25Nb2RlIE1vZGU+IHN0YXRpYyBDb2xvciBwYXJzZVJHQlBh
cmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW4KICAgICAgICAgICAgIHJldHVybiB7IHsgKm51bWJl
ciwgUkdCQ29tcG9uZW50VHlwZTo6TnVtYmVyIH0gfTsKICAgICAgICAgaWYgKGF1dG8gcGVyY2Vu
dCA9IGNvbnN1bWVQZXJjZW50UmF3KGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIHsgeyAqcGVy
Y2VudCwgUkdCQ29tcG9uZW50VHlwZTo6UGVyY2VudGFnZSB9IH07Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAg
IGF1dG8gY29uc3VtZUNvbXBvbmVudCA9IFtdKGF1dG8mIGFyZ3MsIGF1dG8gY29tcG9uZW50VHlw
ZSkgewpAQCAtMTYzMyw3ICsxNjMzLDcgQEAgc3RhdGljIE9wdGlvbmFsPENvbG9yTWl4Q29sb3JT
cGFjZT4gY29uc3VtZUNvbG9yTWl4Q29sb3JTcGFjZUFuZENvbW1hKENTU1BhcnNlclQKICAgICBh
dXRvIGNvbnN1bWVJZGVudEFuZENvbW1hID0gW10oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywg
Q29sb3JNaXhDb2xvclNwYWNlIGNvbG9yU3BhY2UpIC0+IE9wdGlvbmFsPENvbG9yTWl4Q29sb3JT
cGFjZT4gewogICAgICAgICBjb25zdW1lSWRlbnRSYXcoYXJncyk7CiAgICAgICAgIGlmICghY29u
c3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm4gY29sb3JTcGFjZTsKICAgICB9OwogCkBAIC0xNjUxLDcgKzE2NTEsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8Q29sb3JNaXhDb2xvclNwYWNlPiBjb25zdW1lQ29sb3JNaXhDb2xvclNwYWNlQW5k
Q29tbWEoQ1NTUGFyc2VyVAogICAgIGNhc2UgQ1NTVmFsdWVTUkdCOgogICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50QW5kQ29tbWEoYXJncywgQ29sb3JNaXhDb2xvclNwYWNlOjpTcmdiKTsKICAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApAQCAtMTY2OSw3ICsxNjY5LDcgQEAgc3RhdGljIE9w
dGlvbmFsPENvbG9yTWl4Q29tcG9uZW50PiBjb25zdW1lQ29sb3JNaXhDb21wb25lbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYKIAogICAgIHJlc3VsdC5jb2xvciA9IGNvbnN1bWVPcmlnaW5Db2xvcihh
cmdzLCBjb250ZXh0KTsKICAgICBpZiAoIXJlc3VsdC5jb2xvci5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIXJlc3VsdC5wZXJjZW50YWdlKSB7CiAgICAgICAgIGlmIChhdXRvIHBlcmNlbnRhZ2Ug
PSBjb25zdW1lUGVyY2VudFJhdyhhcmdzKSkKQEAgLTE4NDksMTUgKzE4NDksMTUgQEAgc3RhdGlj
IE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBwYXJzZUhleENvbG9yKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBib29sIGEKICAgICAgICAgdmlldyA9IHRva2VuLnZhbHVlKCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGlmICghYWNjZXB0UXVpcmt5Q29sb3JzKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGlmICh0b2tlbi50eXBlKCkgPT0gSWRlbnRUb2tlbikKICAgICAgICAgICAgIHN0cmluZyA9IHRv
a2VuLnZhbHVlKCkudG9TdHJpbmcoKTsgLy8gZS5nLiBGRjAwMDAKICAgICAgICAgZWxzZSBpZiAo
dG9rZW4udHlwZSgpID09IE51bWJlclRva2VuIHx8IHRva2VuLnR5cGUoKSA9PSBEaW1lbnNpb25U
b2tlbikgewogICAgICAgICAgICAgaWYgKHRva2VuLm51bWVyaWNWYWx1ZVR5cGUoKSAhPSBJbnRl
Z2VyVmFsdWVUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGF1dG8gbnVtZXJp
Y1ZhbHVlID0gdG9rZW4ubnVtZXJpY1ZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoIShudW1lcmlj
VmFsdWUgPj0gMCAmJiBudW1lcmljVmFsdWUgPCAxMDAwMDAwKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICBhdXRvIGludGVnZXJWYWx1ZSA9IHN0YXRpY19jYXN0PGludD4odG9rZW4u
bnVtZXJpY1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBOdW1iZXJU
b2tlbikKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBTdHJpbmc6Om51bWJlcihpbnRlZ2VyVmFs
dWUpOyAvLyBlLmcuIDExMjIzMwpAQCAtMTg2NywxMiArMTg2NywxMiBAQCBzdGF0aWMgT3B0aW9u
YWw8U1JHQkE8dWludDhfdD4+IHBhcnNlSGV4Q29sb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGJvb2wgYQogICAgICAgICAgICAgICAgIHN0cmluZyA9IG1ha2VTdHJpbmcoJiIwMDAwMDAi
W3N0cmluZy5sZW5ndGgoKV0sIHN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0cmlu
Zy5sZW5ndGgoKSAhPSAzICYmIHN0cmluZy5sZW5ndGgoKSAhPSA2KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHZpZXcgPSBzdHJpbmc7CiAgICAgfQogICAgIGF1dG8gcmVzdWx0ID0gQ1NTUGFyc2VyOjpw
YXJzZUhleENvbG9yKHZpZXcpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJhbmdlLmNvbnN1
bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCk7CiAgICAgcmV0dXJuICpyZXN1bHQ7CiB9CkBAIC0xOTk2
LDcgKzE5OTYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRp
b25Gcm9tVHdvVmFsdWVzKENTU1ByaW1pdGl2ZVZhbHVlJiB2YQogICAgIGJvb2wgbXVzdE9yZGVy
QXNYWSA9IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29yZE9ubHkodmFsdWUxKSB8fCBpc1ZlcnRp
Y2FsUG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTIpIHx8ICF2YWx1ZTEuaXNWYWx1ZUlEKCkgfHwg
IXZhbHVlMi5pc1ZhbHVlSUQoKTsKICAgICBib29sIG11c3RPcmRlckFzWVggPSBpc1ZlcnRpY2Fs
UG9zaXRpb25LZXl3b3JkT25seSh2YWx1ZTEpIHx8IGlzSG9yaXpvbnRhbFBvc2l0aW9uS2V5d29y
ZE9ubHkodmFsdWUyKTsKICAgICBpZiAobXVzdE9yZGVyQXNYWSAmJiBtdXN0T3JkZXJBc1lYKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmIChtdXN0T3JkZXJBc1lYKQogICAgICAgICByZXR1cm4gUG9zaXRpb25Db29yZGlu
YXRlcyB7IHZhbHVlMiwgdmFsdWUxIH07CiAgICAgcmV0dXJuIFBvc2l0aW9uQ29vcmRpbmF0ZXMg
eyB2YWx1ZTEsIHZhbHVlMiB9OwpAQCAtMjAyOSwxMiArMjAyOSwxMiBAQCBzdGF0aWMgT3B0aW9u
YWw8UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3VuZFBvc2l0aW9uRnJvbVRocmVlVmFsdWVz
KGNvbnN0IHN0ZAogICAgIGZvciAoaW50IGkgPSAwOyB2YWx1ZXNbaV07IGkrKykgewogICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0gdmFsdWVzW2ldOwogICAgICAgICBp
ZiAoIWN1cnJlbnRWYWx1ZS0+aXNWYWx1ZUlEKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBDU1NW
YWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT52YWx1ZUlEKCk7CiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUNlbnRlcikgewogICAgICAgICAgICAgaWYgKGNlbnRlcikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICBjZW50ZXIgPSBjdXJyZW50VmFsdWU7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQpAQCAtMjA0NywxMiArMjA0NywxMiBAQCBzdGF0aWMgT3B0aW9uYWw8
UG9zaXRpb25Db29yZGluYXRlcz4gYmFja2dyb3VuZFBvc2l0aW9uRnJvbVRocmVlVmFsdWVzKGNv
bnN0IHN0ZAogCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFs
dWVSaWdodCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdFgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgcmVzdWx0WCA9IHJlc3VsdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0WSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBy
ZXN1bHRZID0gcmVzdWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAg
c3RhdGljIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGJhY2tncm91bmRQb3NpdGlvbkZy
b21UaHJlZVZhbHVlcyhjb25zdCBzdGQKICAgICBpZiAoY2VudGVyKSB7CiAgICAgICAgIEFTU0VS
VChyZXN1bHRYIHx8IHJlc3VsdFkpOwogICAgICAgICBpZiAocmVzdWx0WCAmJiByZXN1bHRZKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmICghcmVzdWx0WCkKICAgICAgICAgICAgIHJlc3VsdFggPSBj
ZW50ZXI7CiAgICAgICAgIGVsc2UKQEAgLTIwODksMTEgKzIwODksMTEgQEAgc3RhdGljIE9wdGlv
bmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IHBvc2l0aW9uRnJvbUZvdXJWYWx1ZXMoY29uc3Qgc3Rk
OjphcnJheTxDU1MKICAgICBmb3IgKGludCBpID0gMDsgdmFsdWVzW2ldOyBpKyspIHsKICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsKICAgICAgICAg
aWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQ1NT
VmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwogICAgICAgICBpZiAoaWQgPT0g
Q1NTVmFsdWVDZW50ZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHJlc3VsdDsKICAgICAgICAgaWYgKHZhbHVlc1tpICsgMV0gJiYgIXZhbHVlc1tpICsg
MV0tPmlzVmFsdWVJRCgpKQpAQCAtMjEwMywxMiArMjEwMywxMiBAQCBzdGF0aWMgT3B0aW9uYWw8
UG9zaXRpb25Db29yZGluYXRlcz4gcG9zaXRpb25Gcm9tRm91clZhbHVlcyhjb25zdCBzdGQ6OmFy
cmF5PENTUwogCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUxlZnQgfHwgaWQgPT0gQ1NTVmFs
dWVSaWdodCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdFgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAgICAgcmVzdWx0WCA9IHJlc3VsdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChpZCA9PSBDU1NWYWx1ZVRvcCB8fCBpZCA9PSBDU1NWYWx1ZUJvdHRvbSk7CiAg
ICAgICAgICAgICBpZiAocmVzdWx0WSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBy
ZXN1bHRZID0gcmVzdWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjEyMyw3ICsyMTIzLDcgQEAg
T3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZVBvc2l0aW9uQ29vcmRpbmF0ZXMo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmEKIHsKICAgICBhdXRvIHZhbHVlMSA9IGNvbnN1bWVQb3Np
dGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5pdGxlc3MpOwogICAgIGlmICgh
dmFsdWUxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byB2YWx1ZTIgPSBjb25zdW1lUG9zaXRpb25Db21wb25lbnQo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIHVuaXRsZXNzKTsKICAgICBpZiAoIXZhbHVlMikKQEAgLTIx
NDcsNyArMjE0Nyw3IEBAIE9wdGlvbmFsPFBvc2l0aW9uQ29vcmRpbmF0ZXM+IGNvbnN1bWVQb3Np
dGlvbkNvb3JkaW5hdGVzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhCiAgICAgICAgIHJldHVybiBw
b3NpdGlvbkZyb21Gb3VyVmFsdWVzKHZhbHVlcyk7CiAgICAgCiAgICAgaWYgKHBvc2l0aW9uU3lu
dGF4ICE9IFBvc2l0aW9uU3ludGF4OjpCYWNrZ3JvdW5kUG9zaXRpb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
cmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkZyb21UaHJlZVZhbHVlcyh2YWx1ZXMpOwogfQpAQCAt
MjE2Myw3ICsyMTYzLDcgQEAgT3B0aW9uYWw8UG9zaXRpb25Db29yZGluYXRlcz4gY29uc3VtZU9u
ZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGluYXRlcyhDU1NQYXJzZXIKIHsKICAgICBhdXRvIHZh
bHVlMSA9IGNvbnN1bWVQb3NpdGlvbkNvbXBvbmVudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgdW5p
dGxlc3MpOwogICAgIGlmICghdmFsdWUxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdmFsdWUyID0gY29uc3VtZVBv
c2l0aW9uQ29tcG9uZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCB1bml0bGVzcyk7CiAgICAgaWYg
KCF2YWx1ZTIpCiAgICAgICAgIHJldHVybiBwb3NpdGlvbkZyb21PbmVWYWx1ZSgqdmFsdWUxKTsK
QEAgLTI5ODYsNyArMjk4Niw3IEBAIE9wdGlvbmFsPEZvbnRXZWlnaHRSYXc+IGNvbnN1bWVGb250
V2VpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICByZXR1cm4geyAq
cmVzdWx0IH07CiAgICAgaWYgKGF1dG8gcmVzdWx0ID0gY29uc3VtZUZvbnRXZWlnaHROdW1iZXJS
YXcocmFuZ2UpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0IH07Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxDU1NWYWx1
ZUlEPiBjb25zdW1lRm9udFN0cmV0Y2hLZXl3b3JkVmFsdWVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCkBAIC0zMDAzLDExICszMDAzLDExIEBAIE9wdGlvbmFsPEZvbnRTdHlsZVJhdz4g
Y29uc3VtZUZvbnRTdHlsZVJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
CiB7CiAgICAgYXV0byByZXN1bHQgPSBjb25zdW1lRm9udFN0eWxlS2V5d29yZFZhbHVlUmF3KHJh
bmdlKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaWRlbnQgPSAqcmVzdWx0Owog
ICAgIGlmIChpZGVudCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCBpZGVudCA9PSBDU1NWYWx1ZUl0YWxp
YykKLSAgICAgICAgcmV0dXJuIHsgeyBpZGVudCwgV1RGOjpudWxsb3B0IH0gfTsKKyAgICAgICAg
cmV0dXJuIHsgeyBpZGVudCwgc3RkOjpudWxsb3B0IH0gfTsKICAgICBBU1NFUlQoaWRlbnQgPT0g
Q1NTVmFsdWVPYmxpcXVlKTsKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQogICAgIGlmICgh
cmFuZ2UuYXRFbmQoKSkgewpAQCAtMzAxNSwxMyArMzAxNSwxMyBAQCBPcHRpb25hbDxGb250U3R5
bGVSYXc+IGNvbnN1bWVGb250U3R5bGVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlcgogICAgICAgICBpZiAoYXV0byBhbmdsZSA9IGNvbnN1bWVBbmdsZVJhdyhyYW5nZSwg
Y3NzUGFyc2VyTW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6
QWxsb3cpKSB7CiAgICAgICAgICAgICBpZiAoaXNGb250U3R5bGVBbmdsZUluUmFuZ2UoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKGFuZ2xlLT50eXBlLCBhbmdsZS0+dmFsdWUpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4geyB7IENTU1ZhbHVlT2JsaXF1ZSwgV1RGTW92ZShhbmds
ZSkgfSB9OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShjc3NQYXJzZXJNb2RlKTsKICNlbmRpZgotICAgIHJldHVybiB7IHsgQ1NTVmFsdWVPYmxp
cXVlLCBXVEY6Om51bGxvcHQgfSB9OworICAgIHJldHVybiB7IHsgQ1NTVmFsdWVPYmxpcXVlLCBz
dGQ6Om51bGxvcHQgfSB9OwogfQogCiBTdHJpbmcgY29uY2F0ZW5hdGVGYW1pbHlOYW1lKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMzA2NCw3ICszMDY0LDcgQEAgT3B0aW9uYWw8V1RG
OjpWZWN0b3I8Rm9udEZhbWlseVJhdz4+IGNvbnN1bWVGb250RmFtaWx5UmF3KENTU1BhcnNlclRv
a2VuUmFuZ2UmIHIKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGZhbWlseU5hbWUg
PSBjb25zdW1lRmFtaWx5TmFtZVJhdyhyYW5nZSk7CiAgICAgICAgICAgICBpZiAoZmFtaWx5TmFt
ZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBsaXN0LmFwcGVuZCh7
IGZhbWlseU5hbWUgfSk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CkBAIC0zMDc2LDEzICszMDc2LDEzIEBAIE9wdGlvbmFs
PEZvbnRTaXplUmF3PiBjb25zdW1lRm9udFNpemVSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIENTU1BhcnNlck1vCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID49IENTU1ZhbHVlWHhT
bWFsbCAmJiByYW5nZS5wZWVrKCkuaWQoKSA8PSBDU1NWYWx1ZUxhcmdlcikgewogICAgICAgICBp
ZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudFJhdyhyYW5nZSkpCiAgICAgICAgICAgICByZXR1
cm4geyAqaWRlbnQgfTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoYXV0byByZXN1bHQgPSBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50UmF3KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSwgdW5pdGxlc3MpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0IH07CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlv
bmFsPExpbmVIZWlnaHRSYXc+IGNvbnN1bWVMaW5lSGVpZ2h0UmF3KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCkBAIC0zMDkwLDcgKzMwOTAs
NyBAQCBPcHRpb25hbDxMaW5lSGVpZ2h0UmF3PiBjb25zdW1lTGluZUhlaWdodFJhdyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFycwogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9
PSBDU1NWYWx1ZU5vcm1hbCkgewogICAgICAgICBpZiAoYXV0byBpZGVudCA9IGNvbnN1bWVJZGVu
dFJhdyhyYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4geyAqaWRlbnQgfTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBpZiAoYXV0byBudW1iZXIgPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlLCBWYWx1ZVJhbmdl
OjpOb25OZWdhdGl2ZSkpCkBAIC0zMDk5LDcgKzMwOTksNyBAQCBPcHRpb25hbDxMaW5lSGVpZ2h0
UmF3PiBjb25zdW1lTGluZUhlaWdodFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NT
UGFycwogICAgIGlmIChhdXRvIGxlbmd0aE9yUGVyY2VudCA9IGNvbnN1bWVMZW5ndGhPclBlcmNl
bnRSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKSkKICAg
ICAgICAgcmV0dXJuIHsgKmxlbmd0aE9yUGVyY2VudCB9OwogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxGb250UmF3PiBj
b25zdW1lRm9udFJhdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQpAQCAtMzEwOSw3ICszMTA5LDcgQEAgT3B0aW9uYWw8Rm9udFJhdz4gY29u
c3VtZUZvbnRSYXcoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3Nz
UGEKICAgICB3aGlsZSAoIXJhbmdlQ29weS5hdEVuZCgpKSB7CiAgICAgICAgIENTU1ZhbHVlSUQg
aWQgPSByYW5nZUNvcHkuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOwogICAgICAg
ICBpZiAoaWQgPT0gQ1NTVmFsdWVJbmhlcml0IHx8IGlkID09IENTU1ZhbHVlSW5pdGlhbCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIEZvbnRSYXcgcmVzdWx0OwpAQCAtMzEzOCwzMCArMzEzOCwz
MCBAQCBPcHRpb25hbDxGb250UmF3PiBjb25zdW1lRm9udFJhdyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYQogICAgIH0KIAogICAgIGlmIChyYW5nZS5hdEVu
ZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gTm93IGEgZm9udCBzaXplIF9tdXN0XyBjb21lLgogICAgIGlmIChh
dXRvIHNpemUgPSBjb25zdW1lRm9udFNpemVSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUpKQogICAg
ICAgICByZXN1bHQuc2l6ZSA9ICpzaXplOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChyYW5nZS5h
dEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UocmFu
Z2UpKSB7CiAgICAgICAgIGlmICghKHJlc3VsdC5saW5lSGVpZ2h0ID0gY29uc3VtZUxpbmVIZWln
aHRSYXcocmFuZ2UsIGNzc1BhcnNlck1vZGUpKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8v
IEZvbnQgZmFtaWx5IG11c3QgY29tZSBub3cuCiAgICAgaWYgKGF1dG8gZmFtaWx5ID0gY29uc3Vt
ZUZvbnRGYW1pbHlSYXcocmFuZ2UpKQogICAgICAgICByZXN1bHQuZmFtaWx5ID0gKmZhbWlseTsK
ICAgICBlbHNlCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXJhbmdlLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmgKaW5kZXggOWFiYTNkYzkwOTdlZDI1YWU1NTU4YzE4NmM1MzIwOGZl
MDAyY2I5My4uMTVlZGU0YjU3NmJhOGY1ZGRmMWM0YjBlZWFhNGY1NDgyYmVmOTZiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVy
cy5oCkBAIC0xOTgsNyArMTk4LDcgQEAgdGVtcGxhdGU8Q1NTVmFsdWVJRCBoZWFkLCBDU1NWYWx1
ZUlELi4uIHRhaWw+IGlubGluZSBib29sIGlkZW50TWF0Y2hlcyhDU1NWYWx1ZUkKIHRlbXBsYXRl
PENTU1ZhbHVlSUQuLi4gbmFtZXM+IE9wdGlvbmFsPENTU1ZhbHVlSUQ+IGNvbnN1bWVJZGVudFJh
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKICAgICBpZiAocmFuZ2UucGVlaygpLnR5
cGUoKSAhPSBJZGVudFRva2VuIHx8ICFpZGVudE1hdGNoZXM8bmFtZXMuLi4+KHJhbmdlLnBlZWso
KS5pZCgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2Uo
KS5pZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Nl
bGVjdG9yUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQ
YXJzZXIuY3BwCmluZGV4IDMwZGU3YmMyZGFkMTk4MTlmMTFhNmRiODEzM2YwYzhkNmIwNDI1YmEu
LjZmNWIyNWU0M2RiODc4YjE4ZjE2MDZjZGJiNzEwNjQ3NjBkZmQzMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTU2VsZWN0b3JQYXJzZXIuY3BwCkBAIC04ODYsNyArODg2
LDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZUFOUGx1c0IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIHN0ZDo6cGFpcjxpbnQsIGludD4mIHJlc3UKIAogICAgIGlmIChuU3RyaW5nLmxlbmd0aCgp
ID4gMikgewogICAgICAgICBhdXRvIHBhcnNlZE51bWJlciA9IHBhcnNlSW50ZWdlcjxpbnQ+KFN0
cmluZ1ZpZXcgeyBuU3RyaW5nIH0uc3Vic3RyaW5nKDEpKTsKLSAgICAgICAgcmVzdWx0LnNlY29u
ZCA9IHBhcnNlZE51bWJlci52YWx1ZU9yKDApOworICAgICAgICByZXN1bHQuc2Vjb25kID0gcGFy
c2VkTnVtYmVyLnZhbHVlX29yKDApOwogICAgICAgICByZXR1cm4gcGFyc2VkTnVtYmVyLmhhc1Zh
bHVlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01l
ZGlhUXVlcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5
UGFyc2VyLmNwcAppbmRleCAwYTIzZDRjODk3N2ZlZDUyMzVkNWRiYWJkMjA3NzdhNmExZWRmYTBj
Li44NzZjOTliZDJlODA3OTgzNzhmOTU4NzMxZDQyMzRhMjQ4ZjZiNmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKQEAgLTE0NCw3ICsxNDQs
NyBAQCB2b2lkIE1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVlcnkoKQogICAgIC8vIEZJ
WE1FLU5FV1BBUlNFUjogQ29udm9sdXRlZCBhbmQgYXdmdWwsIGJ1dCB3ZSBjYW4ndCBjaGFuZ2Ug
dGhlIE1lZGlhUXVlcnlTZXQgeWV0IGJlY2F1c2Ugb2YgdGhlCiAgICAgLy8gb2xkIHBhcnNlci4K
ICAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0TWVkaWFUeXBl
IHsgImFsbCJfcyB9OwotICAgIE1lZGlhUXVlcnkgbWVkaWFRdWVyeSB7IG1fbWVkaWFRdWVyeURh
dGEucmVzdHJpY3RvcigpLCBtX21lZGlhUXVlcnlEYXRhLm1lZGlhVHlwZSgpLnZhbHVlT3IoZGVm
YXVsdE1lZGlhVHlwZSksIFdURk1vdmUobV9tZWRpYVF1ZXJ5RGF0YS5leHByZXNzaW9ucygpKSB9
OworICAgIE1lZGlhUXVlcnkgbWVkaWFRdWVyeSB7IG1fbWVkaWFRdWVyeURhdGEucmVzdHJpY3Rv
cigpLCBtX21lZGlhUXVlcnlEYXRhLm1lZGlhVHlwZSgpLnZhbHVlX29yKGRlZmF1bHRNZWRpYVR5
cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMoKSkgfTsKICAgICBtX21l
ZGlhUXVlcnlEYXRhLmNsZWFyKCk7CiAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVyeShXVEZN
b3ZlKG1lZGlhUXVlcnkpKTsKIH0KQEAgLTI4OCw3ICsyODgsNyBAQCBNZWRpYVF1ZXJ5UGFyc2Vy
OjpNZWRpYVF1ZXJ5RGF0YTo6TWVkaWFRdWVyeURhdGEoTWVkaWFRdWVyeVBhcnNlckNvbnRleHQg
Y29udGV4dAogdm9pZCBNZWRpYVF1ZXJ5UGFyc2VyOjpNZWRpYVF1ZXJ5RGF0YTo6Y2xlYXIoKQog
ewogICAgIG1fcmVzdHJpY3RvciA9IE1lZGlhUXVlcnk6Ok5vbmU7Ci0gICAgbV9tZWRpYVR5cGUg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9tZWRpYVR5cGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9t
ZWRpYUZlYXR1cmUgPSBTdHJpbmcoKTsKICAgICBtX2V4cHJlc3Npb25zLmNsZWFyKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlLmgKaW5kZXggYWQ2OTc5NTkxNzAzY2YxYTA1Yzhj
ZDUxMmNlMjFhZDIwZmQ1ODhmNy4uYjBhOGFlNzRmYjU2MTk3Y2VlZDE2M2RlYmU1ODU0YTIwZmFm
YjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWUuaApAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RhY2tpbmdJdGVtJiByb290U3RhY2tpbmdJdGVtKCkgY29u
c3QgeyByZXR1cm4gKm1fcm9vdFN0YWNraW5nSXRlbTsgfQogICAgICBjb25zdCBDb250YWluZXJC
b3gmIHJvb3RCb3goKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Qm94TmVlZHNEaXNwbGF5KEJveCYs
IE9wdGlvbmFsPEFic29sdXRlRmxvYXRSZWN0PiBzdWJyZWN0ID0gV1RGOjpudWxsb3B0KSBjb25z
dDsKKyAgICB2b2lkIHNldEJveE5lZWRzRGlzcGxheShCb3gmLCBPcHRpb25hbDxBYnNvbHV0ZUZs
b2F0UmVjdD4gc3VicmVjdCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBzZXRSb290U3RhY2tpbmdJdGVtKHN0ZDo6dW5pcXVlX3B0cjxTdGFja2luZ0l0ZW0+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveC5oCmluZGV4IDE3ODJkMmRkZDUy
OTg4ZmRkMTdkZTRiYThjZTIwNDczNTM3MzliMDEuLjY1ZmZlM2FjNDFhODFiZGNmZTcwNTRhNjZk
ZGY4YjEwZThkYjU5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94LmgK
QEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmcoKSBj
b25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nLmdldCgpOyB9CiAgICAgdm9pZCBzZXROZXh0U2li
bGluZyhzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmKTsKIAotICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
KE9wdGlvbmFsPEFic29sdXRlRmxvYXRSZWN0PiBzdWJyZWN0ID0gV1RGOjpudWxsb3B0KTsKKyAg
ICB2b2lkIHNldE5lZWRzRGlzcGxheShPcHRpb25hbDxBYnNvbHV0ZUZsb2F0UmVjdD4gc3VicmVj
dCA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3Bs
YXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3Nz
L0Rpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmNwcAppbmRleCBiZWNlNDcwZTNmYTI1MGI0
OWU2N2RmZDBjZGNiNjdkZmZlNTQ4YmJhLi44MmRkMzhjNDlmMTY0NjI0MWE2ZWVlNzkyNjg3ZTli
ZWMzODQ4OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
RmlsbExheWVySW1hZ2VHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9j
c3MvRGlzcGxheUZpbGxMYXllckltYWdlR2VvbWV0cnkuY3BwCkBAIC0yNjgsMTAgKzI2OCwxMCBA
QCBzdGF0aWMgRmlsbExheWVySW1hZ2VHZW9tZXRyeSBnZW9tZXRyeUZvckxheWVyKGNvbnN0IEZp
bGxMYXllciYgZmlsbExheWVyLCBMYXlvdQogICAgICAgICAgICAgdG9wID0gZ2VvbWV0cnkuYm9y
ZGVyVG9wKCk7CiAgICAgICAgICAgICBib3R0b20gPSBnZW9tZXRyeS5ib3JkZXJCb3R0b20oKTsK
ICAgICAgICAgICAgIGlmIChmaWxsTGF5ZXIub3JpZ2luKCkgPT0gRmlsbEJveDo6Q29udGVudCkg
ewotICAgICAgICAgICAgICAgIGxlZnQgKz0gZ2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9y
KDApOwotICAgICAgICAgICAgICAgIHJpZ2h0ICs9IGdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZh
bHVlT3IoMCk7Ci0gICAgICAgICAgICAgICAgdG9wICs9IGdlb21ldHJ5LnBhZGRpbmdUb3AoKS52
YWx1ZU9yKDApOwotICAgICAgICAgICAgICAgIGJvdHRvbSArPSBnZW9tZXRyeS5wYWRkaW5nQm90
dG9tKCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICAgICBsZWZ0ICs9IGdlb21ldHJ5LnBhZGRp
bmdMZWZ0KCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICAgICAgcmlnaHQgKz0gZ2VvbWV0cnku
cGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMCk7CisgICAgICAgICAgICAgICAgdG9wICs9IGdlb21l
dHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsKKyAgICAgICAgICAgICAgICBib3R0b20gKz0g
Z2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlT
dGFja2luZ0l0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNr
aW5nSXRlbS5jcHAKaW5kZXggNDliODE5NjM5NjVhMzQxMThlNDZlOTgwNzk5MjdjYzE0MTAzNWFi
Ni4uYTMxNTk2YjIwYzFhNzFjOWVmYzM3ZGYzMmMwMzEwYmNmNjliZTA4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVN0YWNraW5nSXRlbS5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgYm9vbCBTdGFja2luZ0l0ZW06OmlzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QK
IAogdm9pZCBTdGFja2luZ0l0ZW06OmFkZENoaWxkU3RhY2tpbmdJdGVtKHN0ZDo6dW5pcXVlX3B0
cjxTdGFja2luZ0l0ZW0+JiYgaXRlbSkKIHsKLSAgICBhdXRvIHpJbmRleCA9IGl0ZW0tPmJveCgp
LnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHpJbmRleCA9IGl0ZW0tPmJv
eCgpLnN0eWxlKCkuekluZGV4KCkudmFsdWVfb3IoMCk7CiAgICAgaWYgKHpJbmRleCA8IDApCiAg
ICAgICAgIG1fbmVnYXRpdmVaT3JkZXJMaXN0LmFwcGVuZChXVEZNb3ZlKGl0ZW0pKTsKICAgICBl
bHNlCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgU3RhY2tpbmdJdGVtOjphZGRDaGlsZFN0YWNraW5n
SXRlbShzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYmIGl0ZW0pCiB2b2lkIFN0YWNraW5n
SXRlbTo6c29ydExpc3RzKCkKIHsKICAgICBhdXRvIGNvbXBhcmVaSW5kZXggPSBbXShjb25zdCBz
dGQ6OnVuaXF1ZV9wdHI8U3RhY2tpbmdJdGVtPiYgYSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFN0
YWNraW5nSXRlbT4mIGIpIHsKLSAgICAgICAgcmV0dXJuIGEtPmJveCgpLnN0eWxlKCkuekluZGV4
KCkudmFsdWVPcigwKSA8IGItPmJveCgpLnN0eWxlKCkuekluZGV4KCkudmFsdWVPcigwKTsKKyAg
ICAgICAgcmV0dXJuIGEtPmJveCgpLnN0eWxlKCkuekluZGV4KCkudmFsdWVfb3IoMCkgPCBiLT5i
b3goKS5zdHlsZSgpLnpJbmRleCgpLnZhbHVlX29yKDApOwogICAgIH07CiAKICAgICBzdGQ6OnN0
YWJsZV9zb3J0KG1fcG9zaXRpdmVaT3JkZXJMaXN0LmJlZ2luKCksIG1fcG9zaXRpdmVaT3JkZXJM
aXN0LmVuZCgpLCBjb21wYXJlWkluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BYnN0cmFjdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmNw
cAppbmRleCBmZGIyMDk3ZGVmOGE0MzUxZDQwM2Q3NGI0M2U2ZjYyZjNmODU5NmM3Li40MGY1ODU2
MTgzYjI3NjE4NjUyN2NlMzBkYzAxOWIxMzIzZDk5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWJzdHJhY3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fic3Ry
YWN0UmFuZ2UuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5n
ZShjb25zdCBSZWY8QWJzdHJhY3RSYW5nZT4mIHJhbmdlKQogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+
IG1ha2VTaW1wbGVSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdlKiByYW5nZSkKIHsKICAgICBpZiAo
IXJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2UoKnJhbmdlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FkZEV2ZW50TGlzdGVuZXJPcHRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMuaAppbmRleCBjYjEzNGZh
YmFiYTE1MDBmNTBjOTdkY2VkNDg5YmVlOWU0NzYwZGE4Li5hMDc3YTVjNjM0Zjc5MTk5ZjQ3ZjI4
ODJhMWQ0OTNmZDc4NTU5NTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWRkRXZl
bnRMaXN0ZW5lck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWRkRXZlbnRMaXN0
ZW5lck9wdGlvbnMuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgOiBFdmVudExpc3RlbmVyT3B0aW9ucyB7Ci0g
ICAgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMoYm9vbCBjYXB0dXJlID0gZmFsc2UsIE9wdGlvbmFs
PGJvb2w+IHBhc3NpdmUgPSBXVEY6Om51bGxvcHQsIGJvb2wgb25jZSA9IGZhbHNlLCBSZWZQdHI8
QWJvcnRTaWduYWw+JiYgc2lnbmFsID0gbnVsbHB0cikKKyAgICBBZGRFdmVudExpc3RlbmVyT3B0
aW9ucyhib29sIGNhcHR1cmUgPSBmYWxzZSwgT3B0aW9uYWw8Ym9vbD4gcGFzc2l2ZSA9IHN0ZDo6
bnVsbG9wdCwgYm9vbCBvbmNlID0gZmFsc2UsIFJlZlB0cjxBYm9ydFNpZ25hbD4mJiBzaWduYWwg
PSBudWxscHRyKQogICAgICAgICA6IEV2ZW50TGlzdGVuZXJPcHRpb25zKGNhcHR1cmUpCiAgICAg
ICAgICwgcGFzc2l2ZShwYXNzaXZlKQogICAgICAgICAsIG9uY2Uob25jZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Cb3VuZGFyeVBvaW50LmNwcAppbmRleCA3NDhiMTA3NTBlMzRmZDA3YmQ5NzM0ZDliODljODBm
ZTRlNGRiMTJkLi5kMjZkMmVjYTY0NmI4YWVjNGM0ZWVlODQ0MjFhM2VhODgzMDhhNWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBAIE9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJiBub2RlKQog
ewogICAgIGF1dG8gcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIEJvdW5kYXJ5UG9pbnQgeyAqcGFyZW50LCBub2RlLmNvbXB1dGVOb2Rl
SW5kZXgoKSB9OwogfQogCkBAIC00NSw3ICs0NSw3IEBAIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgYXV0byBwYXJl
bnQgPSBub2RlLnBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
Qm91bmRhcnlQb2ludCB7ICpwYXJlbnQsIG5vZGUuY29tcHV0ZU5vZGVJbmRleCgpICsgMSB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmNwcAppbmRleCBiZTcwYzli
MDVjZGM4YzBiZjQyZWMxMjRiODIxMDhiZmM3NGM0ODdkLi44NDJmNmVlY2IzM2NiM2RlMWJjNmUz
NWZhNDk3MGI4YWI1ZDBmYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
TW90aW9uRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25FdmVu
dC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRGV2aWNlTW90aW9uRXZlbnQ6OkRldmljZU1vdGlvbkV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRGV2aWNlTW90aW9uRGEKIHN0YXRpYyBP
cHRpb25hbDxEZXZpY2VNb3Rpb25FdmVudDo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KGNvbnN0IERl
dmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbiogYWNjZWxlcmF0aW9uKQogewogICAgIGlmICgh
YWNjZWxlcmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIERldmljZU1vdGlvbkV2ZW50OjpBY2NlbGVy
YXRpb24geyBhY2NlbGVyYXRpb24tPngoKSwgYWNjZWxlcmF0aW9uLT55KCksIGFjY2VsZXJhdGlv
bi0+eigpIH07CiB9CkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxEZXZpY2VNb3Rp
b25FdmVudDo6QWNjZWxlcmF0aW9uPiBjb252ZXJ0KGNvbnN0IERldmljZU1vdGlvbkRhdGE6CiBz
dGF0aWMgT3B0aW9uYWw8RGV2aWNlTW90aW9uRXZlbnQ6OlJvdGF0aW9uUmF0ZT4gY29udmVydChj
b25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0ZSkKIHsKICAg
ICBpZiAoIXJvdGF0aW9uUmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBEZXZpY2VNb3Rpb25FdmVudDo6
Um90YXRpb25SYXRlIHsgcm90YXRpb25SYXRlLT5hbHBoYSgpLCByb3RhdGlvblJhdGUtPmJldGEo
KSwgcm90YXRpb25SYXRlLT5nYW1tYSgpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0MGYxMjE2ZmIyNDUwOWUxYWU5NDc5MzQ2OGFmMmZhZjMwMzJkYWU1Li5kN2Q0MmVhMjBmOTEx
M2NmNDU2YmRlZjFlNTkzN2U4NDk2NjMwY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTM0NCw4ICszNDQsOCBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNlbmRpZgog
Ci0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbcGFn
ZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6
IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2
NCgpLCBmcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCB0
aGlzID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9J
Rihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0
aGlzLCBwYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJh
bWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAm
dG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVf
b3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJh
bWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNf
X1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVs
LCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVfb3IoUGFn
ZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVu
dGlmaWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FS
R1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTk4LDE5ICsxNTk4LDE5IEBAIFJl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQog
T3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gRG9jdW1lbnQ6OmNhcmV0UG9zaXRpb25Gcm9tUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50KQogewogICAgIGlmICghaGFzTGl2aW5nUmVu
ZGVyVHJlZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgTGF5b3V0UG9pbnQgbG9jYWxQb2ludDsKICAgICBhdXRvIG5v
ZGUgPSBub2RlRnJvbVBvaW50KGNsaWVudFBvaW50LCAmbG9jYWxQb2ludCk7CiAgICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlm
ICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byByYW5nZUNvbXBsaWFudFBvc2l0aW9uID0gcmVuZGVy
ZXItPnBvc2l0aW9uRm9yUG9pbnQobG9jYWxQb2ludCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCk7CiAgICAgaWYgKHJhbmdlQ29tcGxpYW50UG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1
bnNpZ25lZCBvZmZzZXQgPSByYW5nZUNvbXBsaWFudFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVy
Tm9kZSgpOwogICAgIG5vZGUgPSByZXRhcmdldFRvU2NvcGUoKnJhbmdlQ29tcGxpYW50UG9zaXRp
b24uY29udGFpbmVyTm9kZSgpKTsKQEAgLTIxMjAsNyArMjEyMCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiB0ZXh0LCB1bnNpZ25lZCBvZmZzZXRPZlJlcGxhY2Vk
VGV4dCwgdW5zCiAgICAgaWYgKCFtX3BlbmRpbmdSZW5kZXJUcmVlVGV4dFVwZGF0ZSkKICAgICAg
ICAgbV9wZW5kaW5nUmVuZGVyVHJlZVRleHRVcGRhdGUgPSBtYWtlVW5pcXVlPFN0eWxlOjpVcGRh
dGU+KCp0aGlzKTsKIAotICAgIG1fcGVuZGluZ1JlbmRlclRyZWVUZXh0VXBkYXRlLT5hZGRUZXh0
KHRleHQsIHsgb2Zmc2V0T2ZSZXBsYWNlZFRleHQsIGxlbmd0aE9mUmVwbGFjZWRUZXh0LCBXVEY6
Om51bGxvcHQgfSk7CisgICAgbV9wZW5kaW5nUmVuZGVyVHJlZVRleHRVcGRhdGUtPmFkZFRleHQo
dGV4dCwgeyBvZmZzZXRPZlJlcGxhY2VkVGV4dCwgbGVuZ3RoT2ZSZXBsYWNlZFRleHQsIHN0ZDo6
bnVsbG9wdCB9KTsKIAogICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgfSk7CiB9CkBAIC0z
ODQxLDcgKzM4NDEsNyBAQCBWaWV3cG9ydEFyZ3VtZW50cyBEb2N1bWVudDo6dmlld3BvcnRBcmd1
bWVudHMoKSBjb25zdAogICAgIGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gbV92aWV3cG9ydEFyZ3VtZW50czsKLSAgICByZXR1cm4gcGFn
ZS0+b3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cygpLnZhbHVlT3IobV92aWV3cG9ydEFyZ3VtZW50
cyk7CisgICAgcmV0dXJuIHBhZ2UtPm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoKS52YWx1ZV9v
cihtX3ZpZXdwb3J0QXJndW1lbnRzKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3Bv
cnRBcmd1bWVudHMoKQpAQCAtMzg2Myw3ICszODYzLDcgQEAgdm9pZCBEb2N1bWVudDo6bWV0YUVs
ZW1lbnRUaGVtZUNvbG9yQ2hhbmdlZChIVE1MTWV0YUVsZW1lbnQmIG1ldGFFbGVtZW50KQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIG9sZFRoZW1lQ29sb3IgPSBzdGQ6OmV4Y2hhbmdlKG1f
Y2FjaGVkVGhlbWVDb2xvciwgQ29sb3IoKSk7Ci0gICAgbV9tZXRhVGhlbWVDb2xvckVsZW1lbnRz
ID0gV1RGOjpudWxsb3B0OworICAgIG1fbWV0YVRoZW1lQ29sb3JFbGVtZW50cyA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX2FjdGl2ZVRoZW1lQ29sb3JNZXRhRWxlbWVudCA9IG51bGxwdHI7CiAgICAg
aWYgKHRoZW1lQ29sb3IoKSA9PSBvbGRUaGVtZUNvbG9yKQogICAgICAgICByZXR1cm47CkBAIC02
MzYxLDExICs2MzYxLDExIEBAIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IERvY3VtZW50Ojpn
ZXRDU1NDYW52YXNDb250ZXh0KGNvbnN0IFN0cmluZyYgdHlwZSwgY29uCiB7CiAgICAgSFRNTENh
bnZhc0VsZW1lbnQqIGVsZW1lbnQgPSBnZXRDU1NDYW52YXNFbGVtZW50KG5hbWUpOwogICAgIGlm
ICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBlbGVtZW50LT5zZXRTaXplKHsgd2lkdGgsIGhlaWdodCB9KTsK
ICAgICBhdXRvIGNvbnRleHQgPSBlbGVtZW50LT5nZXRDb250ZXh0KHR5cGUpOwogICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoaXM8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PigqY29udGV4dCkpCkBAIC02NjkxLDcgKzY2OTEsNyBAQCBEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXImIERvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKSBj
b25zdAogCiB2b2lkIERvY3VtZW50OjpzaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRv
dWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKIHsKLSAgICBhdXRvIG9yaWVu
dGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYWxwaGEsIGJldGEsIGdhbW1h
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBvcmllbnRhdGlvbiA9IERl
dmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGFscGhhLCBiZXRhLCBnYW1tYSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcigpLmRp
ZENoYW5nZURldmljZU9yaWVudGF0aW9uKG9yaWVudGF0aW9uLnB0cigpKTsKIH0KIApAQCAtNzc4
NiwxMiArNzc4NiwxMiBAQCBzdGF0aWMgT3B0aW9uYWw8TGF5b3V0UmVjdD4gY29tcHV0ZUNsaXBw
ZWRSZWN0SW5Sb290Q29udGVudHNTcGFjZShjb25zdCBMYXlvdXRSZQogCiAgICAgYm9vbCBpbnRl
cnNlY3RzID0gcmVjdEluRnJhbWVBYnNvbHV0ZVNwYWNlLT5lZGdlSW5jbHVzaXZlSW50ZXJzZWN0
KHJlbmRlcmVyLT52aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Vmlld3BvcnRSZWN0KCkpOwogICAg
IGlmICghaW50ZXJzZWN0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExheW91dFJlY3QgcmVjdEluRnJhbWVWaWV3U3Bh
Y2UocmVuZGVyZXItPnZpZXcoKS5mcmFtZVZpZXcoKS5jb250ZW50c1RvVmlldyhzbmFwcGVkSW50
UmVjdCgqcmVjdEluRnJhbWVBYnNvbHV0ZVNwYWNlKSkpOwogICAgIGF1dG8qIG93bmVyUmVuZGVy
ZXIgPSByZW5kZXJlci0+ZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgaWYgKCFvd25lclJl
bmRlcmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmVjdEluRnJhbWVWaWV3U3BhY2UubW92ZUJ5KG93bmVyUmVuZGVy
ZXItPmNvbnRlbnRCb3hMb2NhdGlvbigpKTsKICAgICByZXR1cm4gY29tcHV0ZUNsaXBwZWRSZWN0
SW5Sb290Q29udGVudHNTcGFjZShyZWN0SW5GcmFtZVZpZXdTcGFjZSwgb3duZXJSZW5kZXJlcik7
CkBAIC03ODA4LDIwICs3ODA4LDIwIEBAIHN0YXRpYyBPcHRpb25hbDxJbnRlcnNlY3Rpb25PYnNl
cnZhdGlvblN0YXRlPiBjb21wdXRlSW50ZXJzZWN0aW9uU3RhdGUoRnJhbWVWaWV3CiB7CiAgICAg
YXV0byogdGFyZ2V0UmVuZGVyZXIgPSB0YXJnZXQucmVuZGVyZXIoKTsKICAgICBpZiAoIXRhcmdl
dFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgRmxvYXRSZWN0IGxvY2FsUm9vdEJvdW5kczsKICAgICBSZW5k
ZXJCbG9jayogcm9vdFJlbmRlcmVyOwogICAgIGlmIChvYnNlcnZlci5yb290KCkpIHsKICAgICAg
ICAgaWYgKG9ic2VydmVyLnRyYWNraW5nRG9jdW1lbnQoKSAhPSAmdGFyZ2V0LmRvY3VtZW50KCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIW9ic2VydmVyLnJvb3QoKS0+cmVuZGVyZXIoKSB8
fCAhaXM8UmVuZGVyQmxvY2s+KG9ic2VydmVyLnJvb3QoKS0+cmVuZGVyZXIoKSkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICByb290UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ob2JzZXJ2
ZXIucm9vdCgpLT5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKCFyb290UmVuZGVyZXItPmlzQ29u
dGFpbmluZ0Jsb2NrQW5jZXN0b3JGb3IoKnRhcmdldFJlbmRlcmVyKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIGlmIChvYnNlcnZlci5yb290KCkgPT0gJnRhcmdldC5kb2N1bWVudCgpKQogICAgICAg
ICAgICAgbG9jYWxSb290Qm91bmRzID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0UmVjdCgpOwpA
QCAtNzgzMyw3ICs3ODMzLDcgQEAgc3RhdGljIE9wdGlvbmFsPEludGVyc2VjdGlvbk9ic2VydmF0
aW9uU3RhdGU+IGNvbXB1dGVJbnRlcnNlY3Rpb25TdGF0ZShGcmFtZVZpZXcKICAgICAgICAgQVNT
RVJUKGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpOwogICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIHRoZSBjYXNlIG9mIGFuIGltcGxpY2l0LXJvb3Qgb2JzZXJ2ZXIgdGhhdCBoYXMgYSB0
YXJnZXQgaW4gYSBkaWZmZXJlbnQgZnJhbWUgdHJlZS4KICAgICAgICAgaWYgKCZ0YXJnZXRSZW5k
ZXJlci0+ZnJhbWUoKS5tYWluRnJhbWUoKSAhPSAmZnJhbWVWaWV3LmZyYW1lKCkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcm9vdFJlbmRlcmVyID0gZnJhbWVWaWV3LnJlbmRlclZpZXcoKTsKICAgICAg
ICAgbG9jYWxSb290Qm91bmRzID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0UmVjdCgpOwogICAg
IH0KQEAgLTg1MzYsNyArODUzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uKFNXQ2xpZW50Q29ubmVjdGlvbiogc2VydmljZVdvcmtlckNvbm5lCiAgICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVT
ZXJ2aWNlV29ya2VyKCkgPyBtYWtlT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI+KGFjdGl2ZVNlcnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigp
KSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyKCkgPyBzdGQ6Om1ha2Vfb3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+KGFjdGl2ZVNlcnZpY2VX
b3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBt
X3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQodG9w
T3JpZ2luKCksIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKCp0aGlzLCAqc2VydmljZVdv
cmtlckNvbm5lY3Rpb24pLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCB1c2VyQWdlbnQodXJsKCkpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA4NGZkMjFhNjZkNzhhNGY0Mjg2N2YxZjRkMDU0NGI0NjY5ODUzMjA3Li45ODEzNDdmZTc1
MDcxODAyYzAyMjcxMzBmNDI2M2Y1OGVhNDBkZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDE1LDcgKzQxNSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRSZWZlcnJlclBv
bGljeShSZWZlcnJlclBvbGljeSk7Ci0gICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5LnZhbHVlT3IoUmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsgfQorICAgIFJlZmVycmVyUG9saWN5IHJl
ZmVycmVyUG9saWN5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeS52YWx1
ZV9vcihSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOyB9CiAKICAgICBi
b29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDUwOThlYmQwNWU0YWViNWUxOWJm
NTdhYTMzNTA3MGE1ZWRhZmE4MWUuLjIzNzA5NTRlMzZhODg5ZmJlZThmODc2MmI0YmRjNzgyYmU4
YWFhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIE9wdGlvbmFsPGJvb2w+IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
aGFzU3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vz
cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0xNzIsNyArMTcyLDcgQEAgT3B0
aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0PiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzUXUKICAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NRdWlja1Jl
c3VsdDo6UmVqZWN0OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCmluZGV4IGVjMTA3OWVkYjEyNDY2ZmQ5NTQ1ZTUy
NzZlMmQyYjU1YzYzNGNlZjIuLjlmMDI5Nzk5NWYyMDc1ZTAwNTdiMTJiMGQzMDZmMzk4YTM1ZDYz
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKQEAgLTEy
NCwyNyArMTI0LDI3IEBAIE9wdGlvbmFsPFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0PiBSZXF1
ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6ZGVjb2RlKERlY29kZXImCiAgICAgT3B0aW9uYWw8U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ+IHdhc0dyYW50ZWQ7CiAgICAgZGVjb2RlciA+PiB3YXNHcmFu
dGVkOwogICAgIGlmICghd2FzR3JhbnRlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bj4gcHJvbXB0V2FzU2hvd247CiAgICAgZGVjb2RlciA+PiBwcm9tcHRX
YXNTaG93bjsKICAgICBpZiAoIXByb21wdFdhc1Nob3duKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3Rv
cmFnZUFjY2Vzc1Njb3BlPiBzY29wZTsKICAgICBkZWNvZGVyID4+IHNjb3BlOwogICAgIGlmICgh
c2NvcGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gdG9wRnJhbWVEb21h
aW47CiAgICAgZGVjb2RlciA+PiB0b3BGcmFtZURvbWFpbjsKICAgICBpZiAoIXRvcEZyYW1lRG9t
YWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IHN1YkZyYW1lRG9tYWlu
OwogICAgIGRlY29kZXIgPj4gc3ViRnJhbWVEb21haW47CiAgICAgaWYgKCFzdWJGcmFtZURvbWFp
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqd2FzR3JhbnRlZCksIFdURk1vdmUoKnBy
b21wdFdhc1Nob3duKSwgV1RGTW92ZSgqc2NvcGUpLCBXVEZNb3ZlKCp0b3BGcmFtZURvbWFpbiks
IFdURk1vdmUoKnN1YkZyYW1lRG9tYWluKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggMjNmMTM0OTVmZmE4YTAwNDQ4MzBjZTU2NmMxZTAwZDIwNzQ1MjIxMS4uMGE1MjhlYmI3NWYy
MzBmMmY2OTcxNGNjNjMxNTJkZTNmZjQ0Mzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MjczLDcgKzI3Myw3IEBAIE9wdGlvbmFsPGludD4gRWxlbWVudDo6dGFiSW5kZXhTZXRFeHBsaWNp
dGx5KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKHRhYkluZGV4U3RhdGUoKSkgewogICAgIGNhc2Ug
VGFiSW5kZXhTdGF0ZTo6Tm90U2V0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVGFiSW5kZXhTdGF0ZTo6WmVybzoK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBUYWJJbmRleFN0YXRlOjpOZWdhdGl2ZU9uZToK
QEAgLTI4Myw3ICsyODMsNyBAQCBPcHRpb25hbDxpbnQ+IEVsZW1lbnQ6OnRhYkluZGV4U2V0RXhw
bGljaXRseSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+dW51c3Vh
bFRhYkluZGV4KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW50IEVsZW1l
bnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNvbnN0CkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBFbGVt
ZW50OjpzZXRUYWJJbmRleEZvckJpbmRpbmdzKGludCB2YWx1ZSkKIAogYm9vbCBFbGVtZW50Ojpp
c0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAogewotICAgIGlmICghKGlz
Rm9jdXNhYmxlKCkgJiYgIXNob3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3VzTmF2aWdhdGlv
bigpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlT3IoMCkgPj0gMCkpCisgICAgaWYg
KCEoaXNGb2N1c2FibGUoKSAmJiAhc2hvdWxkQmVJZ25vcmVkSW5TZXF1ZW50aWFsRm9jdXNOYXZp
Z2F0aW9uKCkgJiYgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkudmFsdWVfb3IoMCkgPj0gMCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYXV0byogcm9vdCA9IHNoYWRvd1Jvb3QoKSkg
ewogICAgICAgICBpZiAocm9vdC0+ZGVsZWdhdGVzRm9jdXMoKSkKQEAgLTgyMyw3ICs4MjMsNyBA
QCB2b2lkIEVsZW1lbnQ6OnNldEJlaW5nRHJhZ2dlZChib29sIGZsYWcpCiAKIGlubGluZSBTY3Jv
bGxBbGlnbm1lbnQgdG9TY3JvbGxBbGlnbm1lbnRGb3JJbmxpbmVEaXJlY3Rpb24oT3B0aW9uYWw8
U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBwb3NpdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IGJvb2wgaXNMVFIpCiB7Ci0gICAgc3dpdGNoIChwb3NpdGlvbi52YWx1ZU9yKFNjcm9sbExvZ2lj
YWxQb3NpdGlvbjo6TmVhcmVzdCkpIHsKKyAgICBzd2l0Y2ggKHBvc2l0aW9uLnZhbHVlX29yKFNj
cm9sbExvZ2ljYWxQb3NpdGlvbjo6TmVhcmVzdCkpIHsKICAgICBjYXNlIFNjcm9sbExvZ2ljYWxQ
b3NpdGlvbjo6U3RhcnQ6IHsKICAgICAgICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewogICAgICAg
ICBjYXNlIFdyaXRpbmdNb2RlOjpUb3BUb0JvdHRvbToKQEAgLTg2Niw3ICs4NjYsNyBAQCBpbmxp
bmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxpZ25tZW50Rm9ySW5saW5lRGlyZWN0aW9uKE9w
dGlvbmFsPFNjcm9sbExvZ2ljYQogCiBpbmxpbmUgU2Nyb2xsQWxpZ25tZW50IHRvU2Nyb2xsQWxp
Z25tZW50Rm9yQmxvY2tEaXJlY3Rpb24oT3B0aW9uYWw8U2Nyb2xsTG9naWNhbFBvc2l0aW9uPiBw
b3NpdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgc3dpdGNoIChwb3NpdGlv
bi52YWx1ZU9yKFNjcm9sbExvZ2ljYWxQb3NpdGlvbjo6U3RhcnQpKSB7CisgICAgc3dpdGNoIChw
b3NpdGlvbi52YWx1ZV9vcihTY3JvbGxMb2dpY2FsUG9zaXRpb246OlN0YXJ0KSkgewogICAgIGNh
c2UgU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpTdGFydDogewogICAgICAgICBzd2l0Y2ggKHdyaXRp
bmdNb2RlKSB7CiAgICAgICAgIGNhc2UgV3JpdGluZ01vZGU6OlRvcFRvQm90dG9tOgpAQCAtOTM2
LDcgKzkzNiw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoT3B0aW9uYWw8VmFyaWFu
dDxib29sLCBTY3JvbGxJbnRvVmlld09wdGlvbnM+PiYmIGFyCiAgICAgICAgIGlzSG9yaXpvbnRh
bCA/IGFsaWduWCA6IGFsaWduWSwKICAgICAgICAgaXNIb3Jpem9udGFsID8gYWxpZ25ZIDogYWxp
Z25YLAogICAgICAgICBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObywKLSAgICAg
ICAgb3B0aW9ucy5iZWhhdmlvci52YWx1ZU9yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKSwKKyAgICAg
ICAgb3B0aW9ucy5iZWhhdmlvci52YWx1ZV9vcihTY3JvbGxCZWhhdmlvcjo6QXV0byksCiAgICAg
ICAgIFNtb290aFNjcm9sbEZlYXR1cmVFbmFibGVtZW50OjpEZWZhdWx0CiAgICAgfTsKICAgICBy
ZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhl
ZCwgdmlzaWJsZU9wdGlvbnMpOwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgdm9pZCBFbGVtZW50Ojpz
Y3JvbGxUbyhjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMsIFNjcm9sbENsYW1waW5nIGNs
YW1waW5nLAogICAgICAgICBjbGFtcFRvSW50ZWdlcihzY3JvbGxUb09wdGlvbnMudG9wLnZhbHVl
KCkgKiByZW5kZXJlci0+c3R5bGUoKS5lZmZlY3RpdmVab29tKCkpCiAgICAgKTsKIAotICAgIGF1
dG8gYW5pbWF0ZWQgPSB1c2VTbW9vdGhTY3JvbGxpbmcoc2Nyb2xsVG9PcHRpb25zLmJlaGF2aW9y
LnZhbHVlT3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLCB0aGlzKSA/IEFuaW1hdGVkU2Nyb2xsOjpZ
ZXMgOiBBbmltYXRlZFNjcm9sbDo6Tm87CisgICAgYXV0byBhbmltYXRlZCA9IHVzZVNtb290aFNj
cm9sbGluZyhzY3JvbGxUb09wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVoYXZpb3I6
OkF1dG8pLCB0aGlzKSA/IEFuaW1hdGVkU2Nyb2xsOjpZZXMgOiBBbmltYXRlZFNjcm9sbDo6Tm87
CiAgICAgYXV0byBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMgPSBTY3JvbGxQb3NpdGlvbkNo
YW5nZU9wdGlvbnM6OmNyZWF0ZVByb2dyYW1tYXRpY1dpdGhPcHRpb25zKGNsYW1waW5nLCBhbmlt
YXRlZCwgc25hcFBvaW50U2VsZWN0aW9uTWV0aG9kKTsKICAgICByZW5kZXJlci0+c2V0U2Nyb2xs
UG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyk7CiB9
CkBAIC0xNTk0LDEwICsxNTk0LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVy
T2JqZWN0KiwgTGF5b3V0UmVjdD4+IGxpc3RCb3hFbGVtZW50Qm91bmRpbmdCb3goCiAgICAgICAg
IHNlbGVjdEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MT3B0R3JvdXBFbGVtZW50PihlbGVtZW50KS5v
d25lclNlbGVjdEVsZW1lbnQoKTsKICAgICAgICAgaXNHcm91cCA9IHRydWU7CiAgICAgfSBlbHNl
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIXNlbGVjdEVsZW1lbnQgfHwgIXNlbGVjdEVsZW1lbnQtPnJlbmRlcmVy
KCkgfHwgIWlzPFJlbmRlckxpc3RCb3g+KHNlbGVjdEVsZW1lbnQtPnJlbmRlcmVyKCkpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byYgcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJMaXN0Qm94Pigqc2VsZWN0RWxl
bWVudC0+cmVuZGVyZXIoKSk7CiAgICAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gYm91bmRpbmdCb3g7
CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJlbmRlck9i
amVjdCosIExheW91dFJlY3Q+PiBsaXN0Qm94RWxlbWVudEJvdW5kaW5nQm94KAogICAgIH0KIAog
ICAgIGlmICghYm91bmRpbmdCb3gpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc3RkOjpwYWlyPFJlbmRlck9i
amVjdCosIExheW91dFJlY3Q+IHsgJnJlbmRlcmVyLCBib3VuZGluZ0JveC52YWx1ZSgpIH07CiB9
CkBAIC0xNjYyLDcgKzE2NjIsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8UmVuZGVyT2JqZWN0Kiwg
RmxvYXRSZWN0Pj4gRWxlbWVudDo6Ym91bmRpbmdBYnNvbHV0ZVJlY3RXaXRobwogICAgICAgICBy
ZW5kZXJCb3hNb2RlbE9iamVjdC0+YWJzb2x1dGVRdWFkcyhxdWFkcyk7CiAKICAgICBpZiAocXVh
ZHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHJlbmRlcmVyLCB1
bml0ZWRCb3VuZGluZ0JveGVzKHF1YWRzKSk7CiB9CkBAIC00MzU0LDcgKzQzNTQsNyBAQCB2b2lk
IEVsZW1lbnQ6OmRpZERldGFjaFJlbmRlcmVycygpCiBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0
eWxlPiBFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSZW5kZXJTdHlsZSopCiB7CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxi
YWNrcygpKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgRWxlbWVudDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3Qg
RWxlbWVudCYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oCmluZGV4IDY4OWIw
NjEwYWJlMjdjMTg2MTU5Yjk0MGI0NWMyN2UwMWIzY2Y3NWQuLjEyMTc2Y2FhZWQ1MjIwZmM3OGRi
ZDE0NmFlOTFmNjZhODkwMGE3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oCkBA
IC03MCwyMSArNzAsMjEgQEAgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IEVsZW1lbnRDb250ZXh0
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBFbGVtZW50Q29udGV4dCBjb250ZXh0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZXh0LmJvdW5kaW5nUmVjdCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gUGFnZUlkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsK
ICAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQud2ViUGFnZUlkZW50aWZp
ZXIgPSAqcGFnZUlkZW50aWZpZXI7CiAKICAgICBhdXRvIGRvY3VtZW50SWRlbnRpZmllciA9IERv
Y3VtZW50SWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghZG9jdW1lbnRJZGVu
dGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGNvbnRleHQuZG9jdW1lbnRJZGVudGlmaWVyID0gKmRvY3VtZW50SWRl
bnRpZmllcjsKIAogICAgIGF1dG8gZWxlbWVudElkZW50aWZpZXIgPSBFbGVtZW50SWRlbnRpZmll
cjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghZWxlbWVudElkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y29udGV4dC5lbGVtZW50SWRlbnRpZmllciA9ICplbGVtZW50SWRlbnRpZmllcjsKIAogICAgIHJl
dHVybiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3Nl
cnRpb25zLmgKaW5kZXggMjlmMmVlYTM2NDI1YTA1NjhjOThiYTQwYTBlNDgzNTFhYWZjYjMyMi4u
ODVkMTk4YzU0MGZmOTkxMGM1NDZlZWYzNjkwMTk3YTc5ZDQwNGZkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCkBAIC01OSwxNCArNTksMTQg
QEAgaW5saW5lIGJvb2wgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZG9tVHJlZUhhc011dGF0
ZWQoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkcm9w
RXZlbnREaXNwYXRjaEFzc2VydGlvbigpCiB7Ci0gICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9u
ID0gV1RGOjpudWxsb3B0OworICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6Y2xlYXIo
KQogewogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOwogICAgIG1faW5pdGlhbERPTVRyZWVWZXJz
aW9uID0gMDsKLSAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IDZkMmZkY2EwM2ZjYzUwNTliM2IzZjJj
OTdmOGRkMzc4ZjExN2Q4MDkuLjUyODE1MDU3NzdlNmU1YzBiMzE3YzE2M2IxMzExMTE2NDMyOGU2
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRhcmdldChSZWZQdHI8RXZlbnRUYXJnZXQ+JiYpOwogCiAgICAgRXZlbnRUYXJnZXQqIGN1cnJl
bnRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRUYXJnZXQuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldEN1cnJlbnRUYXJnZXQoRXZlbnRUYXJnZXQqLCBPcHRpb25hbDxib29sPiBpc0luU2hh
ZG93VHJlZSA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRDdXJyZW50VGFyZ2V0KEV2ZW50
VGFyZ2V0KiwgT3B0aW9uYWw8Ym9vbD4gaXNJblNoYWRvd1RyZWUgPSBzdGQ6Om51bGxvcHQpOwog
ICAgIGJvb2wgY3VycmVudFRhcmdldElzSW5TaGFkb3dUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50VGFyZ2V0SXNJblNoYWRvd1RyZWU7IH0KIAogICAgIHVuc2lnbmVkIHNob3J0IGV2ZW50
UGhhc2UoKSBjb25zdCB7IHJldHVybiBtX2V2ZW50UGhhc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggMDJhY2NlMDdkNTA3MmQ1ZTMzNDNiM2YyMmMyOWEzYTY5
MjViNWFkNS4uNGJmMDQ1NDY0NDk0YjJmZTBhNzM0YzgzNTM4NTFiYTA4YTE1ZTlkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChOb2RlJiBub2RlLCBFdmVudCYgZXZlbnQp
CiAgICAgICAgIGV2ZW50LnNldFRhcmdldChmaW5hbFRhcmdldCk7CiAgICAgfQogCi0gICAgaWYg
KHNob3VsZENsZWFyVGFyZ2V0c0FmdGVyRGlzcGF0Y2gudmFsdWVPcihmYWxzZSkpIHsKKyAgICBp
ZiAoc2hvdWxkQ2xlYXJUYXJnZXRzQWZ0ZXJEaXNwYXRjaC52YWx1ZV9vcihmYWxzZSkpIHsKICAg
ICAgICAgZXZlbnQuc2V0VGFyZ2V0KG51bGxwdHIpOwogICAgICAgICBldmVudC5zZXRSZWxhdGVk
VGFyZ2V0KG51bGxwdHIpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gY2xlYXIg
dGhlIGV2ZW50J3MgdG91Y2ggdGFyZ2V0IGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cAppbmRleCAzZDRhNmZkZjEwZjViZGMyZmFkY2ZkMzcxYjgwM2E2ZjgxNDBiZmZhLi4wY2NkYzRh
YjNiZWMzZWM2YTg1MmUzZGUwMDRmZTU2MzEwNjczNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmUKIAogICAg
IGJvb2wgbGlzdGVuZXJDcmVhdGVkRnJvbVNjcmlwdCA9IGxpc3RlbmVyLT50eXBlKCkgPT0gRXZl
bnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyVHlwZSAmJiAhbGlzdGVuZXItPndhc0NyZWF0ZWRG
cm9tTWFya3VwKCk7CiAKLSAgICBpZiAoIWVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpLmV2ZW50TGlz
dGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCB7IG9wdGlvbnMuY2Fw
dHVyZSwgcGFzc2l2ZS52YWx1ZU9yKGZhbHNlKSwgb3B0aW9ucy5vbmNlIH0pKQorICAgIGlmICgh
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkuZXZlbnRMaXN0ZW5lck1hcC5hZGQoZXZlbnRUeXBlLCBs
aXN0ZW5lci5jb3B5UmVmKCksIHsgb3B0aW9ucy5jYXB0dXJlLCBwYXNzaXZlLnZhbHVlX29yKGZh
bHNlKSwgb3B0aW9ucy5vbmNlIH0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
b3B0aW9ucy5zaWduYWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9HQ1JlYWNo
YWJsZVJlZi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0dDUmVhY2hhYmxlUmVmLmgKaW5kZXggMzA5
MDNmYzI5NWY0ZDJmMjdjYTBhNTU2ZGRkYTNhN2M0YmE5YjZhMi4uMjE2MTZkN2JiYzgzNjdjYzRm
NjExMGY4MWZmM2JhMjNkMzU3Y2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0dD
UmVhY2hhYmxlUmVmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0dDUmVhY2hhYmxlUmVmLmgK
QEAgLTEyNSw3ICsxMjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpHQ1JlYWNoYWJsZVJlZjxQPj4gOiBTaW1wbGVDbGFzcwogICAgIHN0YXRpYyBQ
ZWVrVHlwZSBwZWVrKFAqIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQogCiAgICAgdHlwZWRlZiBP
cHRpb25hbDxSZWY8UD4+IFRha2VUeXBlOwotICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKFJlZjxQ
PiYmIHZhbHVlKSB7IHJldHVybiBpc0VtcHR5VmFsdWUodmFsdWUpID8gV1RGOjpudWxsb3B0IDog
T3B0aW9uYWw8UmVmPFA+PihXVEZNb3ZlKHZhbHVlKSk7IH0KKyAgICBzdGF0aWMgVGFrZVR5cGUg
dGFrZShSZWY8UD4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IHN0ZDo6
bnVsbG9wdCA6IE9wdGlvbmFsPFJlZjxQPj4oV1RGTW92ZSh2YWx1ZSkpOyB9CiB9OwogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9LZXlib2FyZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50
LmNwcAppbmRleCBiODdmZjNlYmJiYzdhNjdmNmNlNjQ0MDBiMTMwMzY3NzA0MWQ0ODMyLi5hY2Yz
YmExYzVlNTZmOTEyNGQwNjE1YzBiMzc0ZDVhN2VhNmYyMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0tl
eWJvYXJkRXZlbnQuY3BwCkBAIC0xNjUsMTIgKzE2NSwxMiBAQCB2b2lkIEtleWJvYXJkRXZlbnQ6
OmluaXRLZXlib2FyZEV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBibwogCiAgICAgc2V0TW9kaWZpZXJLZXlzKGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1l
dGFLZXksIGFsdEdyYXBoS2V5KTsKIAotICAgIG1fY2hhckNvZGUgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9jaGFyQ29kZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2lzQ29tcG9zaW5nID0gZmFsc2U7
Ci0gICAgbV9rZXlDb2RlID0gV1RGOjpudWxsb3B0OworICAgIG1fa2V5Q29kZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX3JlcGVhdCA9IGZhbHNlOwogICAgIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZl
bnQgPSBudWxscHRyOwotICAgIG1fd2hpY2ggPSBXVEY6Om51bGxvcHQ7CisgICAgbV93aGljaCA9
IHN0ZDo6bnVsbG9wdDsKICAgICBtX2NvZGUgPSB7IH07CiAgICAgbV9rZXkgPSB7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2FkYWJsZUNsYXNzaWNTY3JpcHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5jcHAKaW5kZXggNzZiNjZk
ODhkMzM4Mjk5MDg3MGU1NTRkOTJiYTYzNTg1MmI0OGI5My4uNDhlODMxYmE4NjEyYzVmNTQzZDI4
NDE4YTJkMzZlYjJjMmZjZWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRh
YmxlQ2xhc3NpY1NjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0xvYWRhYmxlQ2xh
c3NpY1NjcmlwdC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgT3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6
OkVycm9yPiBMb2FkYWJsZUNsYXNzaWNTY3JpcHQ6OmVycm9yKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIG1fZXJyb3I7CiAKICAgICBpZiAobV9jYWNoZWRTY3JpcHQtPmVycm9yT2NjdXJyZWQoKSkK
LSAgICAgICAgcmV0dXJuIEVycm9yIHsgRXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsIFdURjo6bnVs
bG9wdCB9OworICAgICAgICByZXR1cm4gRXJyb3IgeyBFcnJvclR5cGU6OkNhY2hlZFNjcmlwdCwg
c3RkOjpudWxsb3B0IH07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgTG9hZGFibGVDbGFzc2ljU2NyaXB0Ojp3YXNDYW5jZWxl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2lj
U2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgKaW5k
ZXggOTBjNDdhMTE1MmExYjk1MWZhMzgwNDgyNDNhNWU3MjhiYmFiY2Y1Ny4uMzhjMDMxMDE3OGY5
YzM2ZDZlMmIwYTgwMWUzNjNmMjg5NDVmMTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0xvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Mb2Fk
YWJsZUNsYXNzaWNTY3JpcHQuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4gbV9jYWNo
ZWRTY3JpcHQgeyB9OwotICAgIE9wdGlvbmFsPEVycm9yPiBtX2Vycm9yIHsgV1RGOjpudWxsb3B0
IH07CisgICAgT3B0aW9uYWw8RXJyb3I+IG1fZXJyb3IgeyBzdGQ6Om51bGxvcHQgfTsKICAgICBT
dHJpbmcgbV9pbnRlZ3JpdHk7CiAgICAgYm9vbCBtX2lzQXN5bmMgeyBmYWxzZSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA2OGQzODMwZjdlYzMzMjllYjc5M2YyODA5YWY0
ZWQ5ZDE2MDczZGRlLi45NzI4NGZjM2I3ZDBjM2IxNjliMzk4ZjVhZjliNzBhZTNmYTlkY2Q4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHVzaW5nIE1lc3Nh
Z2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3Nh
Z2VQb3J0Pj47CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsg
fSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgT3B0aW9uYWw8TWVzc2FnZUV2ZW50
U291cmNlPiYmIHNvdXJjZSA9IFdURjo6bnVsbG9wdCk7CisgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3Vy
Y2UgPSBzdGQ6Om51bGxvcHQpOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwogICAgIHN0YXRp
YyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiA9IHsgfSk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShS
ZWY8QmxvYj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CkBAIC04NSw3ICs4NSw3IEBA
IHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsKICAgICBNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7Ci0gICAgTWVz
c2FnZUV2ZW50KERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkID0geyB9LCBPcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBXVEY6
Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKKyAgICBNZXNz
YWdlRXZlbnQoRGF0YVR5cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6
bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOwogCiAgICAgRXZl
bnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oCmluZGV4IGI4YTBkMDY1OWNlZjY2ZDljMmY4
ODJiNGRiOTA0YWFiMGMxYzQ4NGQuLjFmNTRkODdmY2QwYTE4OWJhMzI4Y2M5N2MyYzkwOTRkMzIx
NGY3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKQEAg
LTYzLDEyICs2MywxMiBAQCBPcHRpb25hbDxNZXNzYWdlUG9ydElkZW50aWZpZXI+IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UHJv
Y2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcHJvY2Vz
c0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPE9iamVjdElkZW50aWZpZXI8UG9ydElkZW50aWZpZXJUeXBlPj4gcG9ydElkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiBwb3J0SWRlbnRpZmllcjsKICAgICBpZiAoIXBvcnRJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwcm9jZXNzSWRlbnRpZmllciksIFdURk1v
dmUoKnBvcnRJZGVudGlmaWVyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5jcHAKaW5kZXggOGIzYTI1Zjk1YzlmOWJjNGE2MTc5ZWMyYjAxNThiYTZmODk5ODkwMi4u
YmQ3MDhiMTczZDA5MzQ5YmFmNjFkNzNmMTA4MGQ3MmQxY2I3NDUxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtODUsOSArODUsOSBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBNdXRhdGlvbk9ic2VydmVyOjpvYnNlcnZlKE5vZGUmIG5vZGUsIGNvbnN0IEluaXQmIGlu
aXQpCiAgICAgICAgIG9wdGlvbnMgfD0gQ2hpbGRMaXN0OwogICAgIGlmIChpbml0LnN1YnRyZWUp
CiAgICAgICAgIG9wdGlvbnMgfD0gU3VidHJlZTsKLSAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRW
YWx1ZS52YWx1ZU9yKGZhbHNlKSkKKyAgICBpZiAoaW5pdC5hdHRyaWJ1dGVPbGRWYWx1ZS52YWx1
ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlvbnMgfD0gQXR0cmlidXRlT2xkVmFsdWU7Ci0gICAg
aWYgKGluaXQuY2hhcmFjdGVyRGF0YU9sZFZhbHVlLnZhbHVlT3IoZmFsc2UpKQorICAgIGlmIChp
bml0LmNoYXJhY3RlckRhdGFPbGRWYWx1ZS52YWx1ZV9vcihmYWxzZSkpCiAgICAgICAgIG9wdGlv
bnMgfD0gQ2hhcmFjdGVyRGF0YU9sZFZhbHVlOwogCiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBh
dHRyaWJ1dGVGaWx0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRleCBmZTdjYjU0YTc5YjIx
OTE4YjgwMjQzY2M2NjdmNmM4NTQ3YmRiYzk2Li4yYjdjYTdmNjM3Nzc2Y2I4MDAyZDNjMGQ2ZjNl
NzkwNGQzMjI5Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAgLTE2MDYsNyArMTYwNiw3
IEBAIE9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0
aW9uJiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIocG9zaXRp
b24uY29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoIWNvbnRhaW5lcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
Qm91bmRhcnlQb2ludCB7IGNvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocG9zaXRpb24uY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKSB9OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGY5
MDU1YmQxOWEyMTA3YjA5Y2VkN2UyYjk5MjQ4NTc1N2M0Yjk3MzQuLjE3NmJjM2I0ODkyMGZlZDA4
YTJhYTk1YWEyYmFlNjY3YWVkZjQyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgpCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBTdHJpbmcgY2hhcnNldCA9IGF0dHJpYnV0ZXMtPmdldCgiY2hhcnNldCIpOwot
ICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCku
Y29tcGxldGVVUkwoaHJlZiksIENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCksIFdURjo6bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVu
dCgpLmNoYXJzZXQoKSA6IFdURk1vdmUoY2hhcnNldCkpOworICAgICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCksIHN0ZDo6
bnVsbG9wdCwgY2hhcnNldC5pc0VtcHR5KCkgPyBkb2N1bWVudCgpLmNoYXJzZXQoKSA6IFdURk1v
dmUoY2hhcnNldCkpOwogCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9IGRvY3VtZW50
KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5yZXF1ZXN0Q1NTU3R5bGVTaGVldChXVEZNb3ZlKHJl
cXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3Bw
CmluZGV4IGU3OTY5OTYxZTQ5ZDI3MDNhMjQyNjY4NDA2MTk1OTY5MjZjNzhmOWQuLjI4NWE3MGQ3
MjhjZmVhNTE4NTk0MTNiYjlhMTk5ZTRjZjIyZDFhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAt
MTA3Niw3ICsxMDc2LDcgQEAgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJlZjxS
YW5nZT4mIHJhbmdlKQogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25z
dCBSYW5nZSogcmFuZ2UpCiB7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbWFrZVNp
bXBsZVJhbmdlKCpyYW5nZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcApp
bmRleCA3ZDRlOTE4NTkzMjczNDE3NTg1YWJkY2Y4NGVhY2E3MGJhMDVjZDUxLi40YTJkZGY4Mzll
N2RmYTZiNDY3MWJjNmI5Mzg3YTc0NDkyOGVkNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVs
ZW1lbnQuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgT3B0aW9uYWw8U2NyaXB0RWxlbWVudDo6U2Ny
aXB0VHlwZT4gU2NyaXB0RWxlbWVudDo6ZGV0ZXJtaW5lU2NyaXB0VHlwZShMZWdhY3lUeXAKICAg
ICAgICAgICAgIHJldHVybiBTY3JpcHRUeXBlOjpDbGFzc2ljOwogICAgICAgICBpZiAoaXNMZWdh
Y3lTdXBwb3J0ZWRKYXZhU2NyaXB0TGFuZ3VhZ2UobGFuZ3VhZ2UpKQogICAgICAgICAgICAgcmV0
dXJuIFNjcmlwdFR5cGU6OkNsYXNzaWM7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZSh0eXBlLnN0cmlwV2hpdGVTcGFjZSgp
KSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6OkNsYXNzaWM7CkBAIC0xNTgsMTMgKzE1OCwx
MyBAQCBPcHRpb25hbDxTY3JpcHRFbGVtZW50OjpTY3JpcHRUeXBlPiBTY3JpcHRFbGVtZW50Ojpk
ZXRlcm1pbmVTY3JpcHRUeXBlKExlZ2FjeVR5cAogICAgIC8vIE9uY2UgImRlZmVyIiBpcyBpbXBs
ZW1lbnRlZCwgd2UgY2FuIHJlY29uc2lkZXIgZW5hYmxpbmcgbW9kdWxlcyBpbiBYSFRNTC4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzg3CiAgICAg
aWYgKCFtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2NyaXB0aW5nLmh0bWwjYXR0
ci1zY3JpcHQtdHlwZQogICAgIC8vIFNldHRpbmcgdGhlIGF0dHJpYnV0ZSB0byBhbiBBU0NJSSBj
YXNlLWluc2Vuc2l0aXZlIG1hdGNoIGZvciB0aGUgc3RyaW5nICJtb2R1bGUiIG1lYW5zIHRoYXQg
dGhlIHNjcmlwdCBpcyBhIG1vZHVsZSBzY3JpcHQuCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHR5cGUsICJtb2R1bGUiKSkKICAgICAgICAgcmV0dXJuIFNjcmlwdFR5cGU6
Ok1vZHVsZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNw
cmVwYXJlLWEtc2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCA5MWEwNTE3
MWZlZTkyNDgyZjlkYjljZTA5ZmZhNDMzNzhkMzVhYmUzLi5hZDZlOTZkMWYyMmVmZTk2Y2NhOTA4
MDRkZDY1OTYwMjQwYzY1MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUo
Tm9kZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwogICAg
IGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHVuc2lnbmVkIG9mZnNldCA9IG5vZGUuY29tcHV0ZU5vZGVJ
bmRleCgpOwogICAgIHJldHVybiBTaW1wbGVSYW5nZSB7IHsgKnBhcmVudCwgb2Zmc2V0IH0sIHsg
KnBhcmVudCwgb2Zmc2V0ICsgMSB9IH07CiB9CkBAIC0yNTAsNyArMjUwLDcgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IGludGVyc2VjdGlvbihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIGEs
IGNvbnN0IE9wdGlvbmEKIHsKICAgICAvLyBGSVhNRTogQ2FuIHRoaXMgYmUgZG9uZSBtb3JlIGVm
ZmljaWVudGx5LCB3aXRoIGZld2VyIGNhbGxzIHRvIHRyZWVPcmRlcj8KICAgICBpZiAoIWEgfHwg
IWIgfHwgIWludGVyc2VjdHM8Q29tcG9zZWRUcmVlPigqYSwgKmIpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
IHsgc3RkOjptYXgoYS0+c3RhcnQsIGItPnN0YXJ0LCBjb21wYXJlQnlDb21wb3NlZFRyZWVPcmRl
ciksIHN0ZDo6bWluKGEtPmVuZCwgYi0+ZW5kLCBjb21wYXJlQnlDb21wb3NlZFRyZWVPcmRlcikg
fSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4IGJiNDRiMWI4M2UwY2U4NmQ4
MzQ2MDg5OTUyOTY1ZDUzM2VjYzVkYzIuLmVmZDhmZGY1MmI1MjU3M2QyYTJhNjBmNjlkY2E3ZjUx
ZjY5NWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBAIC0xODAsNyArMTgwLDcgQEAg
aW5saW5lIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZUhlbHBlcihCb3VuZGFyeVBvaW50JiYg
c3RhcnQsIEJvdW5kYXJ5UG9pbnQmJgogaW5saW5lIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtl
U2ltcGxlUmFuZ2VIZWxwZXIoT3B0aW9uYWw8Qm91bmRhcnlQb2ludD4mJiBzdGFydCwgT3B0aW9u
YWw8Qm91bmRhcnlQb2ludD4mJiBlbmQpCiB7CiAgICAgaWYgKCFzdGFydCB8fCAhZW5kKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoV1RGTW92ZSgqc3RhcnQpLCBXVEZNb3Zl
KCplbmQpKTsKIH0KIApAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSBTaW1wbGVSYW5nZSBtYWtl
U2ltcGxlUmFuZ2VIZWxwZXIoQm91bmRhcnlQb2ludCYmIHBvaW50KQogaW5saW5lIE9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoT3B0aW9uYWw8Qm91bmRhcnlQb2lu
dD4mJiBwb2ludCkKIHsKICAgICBpZiAoIXBvaW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBtYWtlU2ltcGxl
UmFuZ2VIZWxwZXIoV1RGTW92ZSgqcG9pbnQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcAppbmRleCBhOGQ3NWIxYzU5ZTk3ZjZhYWYx
ZDhiMjJlNjIzZWM4ZTRlMDE4OGE0Li4zMGZlMDdkZTU1OGVhYmNlMzM2OTYzNTAxMDU0OTI1YmQ3
MjRmMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1F
bmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNv
ZGVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyOjplbmNvZGUoY29uc3QgU3RyaW5nJiBpbnB1dCkKICAgICAgICAgYXV0byB0
b2tlbiA9IHZpZXdbY3B0cl07CiAgICAgICAgIGlmIChtX3BlbmRpbmdIaWdoU3Vycm9nYXRlKSB7
CiAgICAgICAgICAgICBhdXRvIGhpZ2hTdXJyb2dhdGUgPSAqbV9wZW5kaW5nSGlnaFN1cnJvZ2F0
ZTsKLSAgICAgICAgICAgIG1fcGVuZGluZ0hpZ2hTdXJyb2dhdGUgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICBtX3BlbmRpbmdIaWdoU3Vycm9nYXRlID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgaWYgKHRva2VuID49IDB4REMwMCAmJiB0b2tlbiA8PSAweERGRkYpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGNvZGVQb2ludCA9IDB4MTAwMDAgKyAoKGhpZ2hTdXJyb2dhdGUgLSAweEQ4
MDApIDw8IDEwKSArICh0b2tlbiAtIDB4REMwMCk7CiAgICAgICAgICAgICAgICAgVThfQVBQRU5E
X1VOU0FGRShieXRlcy5kYXRhKCksIGJ5dGVzV3JpdHRlbiwgY29kZVBvaW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAKaW5kZXggYjY3OWEwYTNiYjZhYWRmYjU0ZjMwNjQxMTVkMTNiN2QzYzEx
MmQ1NS4uMDM3NDllNzdhOWNjNzdkNTI1MDA5MGZjNmJlNjcwNmNkMWRlNzZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKQEAgLTMxNSwxOCArMzE1LDE4IEBAIEhUTUxMYWJlbEVsZW1lbnQq
IFRyZWVTY29wZTo6bGFiZWxFbGVtZW50Rm9ySWQoY29uc3QgQXRvbVN0cmluZyYgZm9yQXR0cmli
dXRlVmFsCiBzdGF0aWMgT3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGFic29sdXRlUG9pbnRJZk5vdENs
aXBwZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQp
CiB7CiAgICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpIHx8ICFkb2N1bWVudC52aWV3KCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBjb25zdCBhdXRvJiBzZXR0aW5ncyA9IGRvY3VtZW50LmZyYW1lKCktPnNldHRpbmdzKCk7
CiAgICAgaWYgKHNldHRpbmdzLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpICYmIHNldHRpbmdzLmNs
aWVudENvb3JkaW5hdGVzUmVsYXRpdmVUb0xheW91dFZpZXdwb3J0KCkpIHsKICAgICAgICAgZG9j
dW1lbnQudXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQudmlldygpIHx8ICFk
b2N1bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYXV0byog
dmlldyA9IGRvY3VtZW50LnZpZXcoKTsKICAgICAgICAgRmxvYXRQb2ludCBsYXlvdXRWaWV3cG9y
dFBvaW50ID0gdmlldy0+Y2xpZW50VG9MYXlvdXRWaWV3cG9ydFBvaW50KGNsaWVudFBvaW50KTsK
ICAgICAgICAgRmxvYXRSZWN0IGxheW91dFZpZXdwb3J0Qm91bmRzKHsgfSwgdmlldy0+bGF5b3V0
Vmlld3BvcnRSZWN0KCkuc2l6ZSgpKTsKICAgICAgICAgaWYgKCFsYXlvdXRWaWV3cG9ydEJvdW5k
cy5jb250YWlucyhsYXlvdXRWaWV3cG9ydFBvaW50KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gTGF5b3V0UG9pbnQodmlldy0+bGF5b3V0Vmlld3BvcnRUb0Fic29sdXRlUG9pbnQobGF5b3V0
Vmlld3BvcnRQb2ludCkpOwogICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBPcHRp
b25hbDxMYXlvdXRQb2ludD4gYWJzb2x1dGVQb2ludElmTm90Q2xpcHBlZChEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0CiAjZW5kaWYKICAgICBpZiAodmlzaWJsZVJlY3QuY29udGFpbnMoYWJzb2x1
dGVQb2ludCkpCiAgICAgICAgIHJldHVybiBhYnNvbHV0ZVBvaW50OwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVmUHRyPE5vZGU+IFRy
ZWVTY29wZTo6bm9kZUZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExh
eW91dFBvaW50KiBsb2NhbFBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Zp
c2l0ZWRMaW5rU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Zpc2l0ZWRMaW5rU3RhdGUu
Y3BwCmluZGV4IGEwM2FmMTQ3ZjM5YzIxZTRlZjc3N2JmY2JmNDQxMWQxNGFhYjBjODEuLmViZDE1
ZTQxMThlNDZmOGFiZjkzYjg0YTVlZmEzNDI3YTE2NGY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaXNpdGVkTGlua1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VmlzaXRlZExpbmtTdGF0ZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgaW5saW5lIHN0YXRpYyBPcHRp
b25hbDxTaGFyZWRTdHJpbmdIYXNoPiBsaW5rSGFzaEZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYg
ZWxlbWUKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PihlbGVtZW50
KS52aXNpdGVkTGlua0hhc2goKTsKICAgICBpZiAoaXM8U1ZHQUVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8U1ZHQUVsZW1lbnQ+KGVsZW1lbnQpLnZpc2l0ZWRMaW5r
SGFzaCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBWaXNpdGVkTGlua1N0YXRlOjppbnZhbGlkYXRlU3R5bGVGb3JMaW5rKFNo
YXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
V2hlZWxFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKaW5kZXgg
YWU3NmE2ZmYzZGM5MWI4OWY3MjBmZWM3MmY2ODMxYTZmN2Q5M2EzZi4uNDAyODVkMzkwMzE4NmIx
NWE4NzEwZDg1MDFhOWZhY2FmMGVjZTdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcApA
QCAtOTgsNyArOTgsNyBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRXaGVlbEV2ZW50KGlu
dCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFJlZlB0cjxXaW5kbwogCiAgICAgbV9kZWx0YU1v
ZGUgPSBET01fREVMVEFfUElYRUw7CiAKLSAgICBtX3VuZGVybHlpbmdQbGF0Zm9ybUV2ZW50ID0g
V1RGOjpudWxsb3B0OworICAgIG1fdW5kZXJseWluZ1BsYXRmb3JtRXZlbnQgPSBzdGQ6Om51bGxv
cHQ7CiB9CiAKIEV2ZW50SW50ZXJmYWNlIFdoZWVsRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsLmNwcAppbmRleCBjZTZlOGE3Y2FlYzNkMjJjMTkyYmE5YTFkNTUxYzNlMGIyNDNm
ODMwLi5mYzY2NzU1NzhiZWVhZDQ0Mzg1ZDFjNWIyOWQ0ODZiNDgwYTRkZTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmRpc2VudGFu
Z2xlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiAgICAgc2l6ZV90IGkg
PSBwb3J0ID09IG1fcG9ydHNbMF0gPyAwIDogMTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3Nlc1tp
XSB8fCBtX2lzQ2xvc2VkW2ldKTsKLSAgICBtX3Byb2Nlc3Nlc1tpXSA9IFdURjo6bnVsbG9wdDsK
KyAgICBtX3Byb2Nlc3Nlc1tpXSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BlbmRpbmdNZXNzYWdl
UG9ydFRyYW5zZmVyc1tpXS5hZGQodGhpcyk7CiAKICAgICAvLyBUaGlzIHNldCBvZiBzdGVwcyBp
cyB0byBndWFyYW50ZWUgdGhhdCB0aGUgbG9jayBpcyB1bmxvY2tlZCBiZWZvcmUgdGhlCkBAIC0x
MTUsNyArMTE1LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNsb3NlUG9ydChjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQpCiAgICAgQVNTRVJUKHBvcnQgPT0gbV9wb3J0c1sw
XSB8fCBwb3J0ID09IG1fcG9ydHNbMV0pOwogICAgIHNpemVfdCBpID0gcG9ydCA9PSBtX3BvcnRz
WzBdID8gMCA6IDE7CiAKLSAgICBtX3Byb2Nlc3Nlc1tpXSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X3Byb2Nlc3Nlc1tpXSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2lzQ2xvc2VkW2ldID0gdHJ1ZTsK
IAogICAgIC8vIFRoaXMgc2V0IG9mIHN0ZXBzIGlzIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBsb2Nr
IGlzIHVubG9ja2VkIGJlZm9yZSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaAppbmRleCBlYTE4ZjkzZDY2
Njg0NjgwM2FmMzMzMTdmYjk5MzFmZDdlZmQwZTZlLi5jNTYwYWYwZTBkYjAzYjk3NTYxMzY1NTk2
MmY0MDRjYjQ2N2UxMzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21l
c3NhZ2Vwb3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oCkBAIC01OSwxMCArNTksMTAgQEAg
T3B0aW9uYWw8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKIAogICAgIHJlc3VsdC5tZXNzYWdlID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFyZXN1bHQubWVzc2FnZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zZmVycmVkUG9ydHMpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGQ5YmI3MGM0MTEzZDNjNGZl
MjRlNzE5MTE1OGQ1NTMxNjAxMmQwN2MuLjhlNDM1NWZkNDg1Nzg3Nzc0NWYwNzg1NTYxODQxNTZi
NGY5NjVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6c3RhcnRBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4
dFR5cGUKIAogICAgIC8vIElmIHR5cGUgaXMgUGFuZWxUeXBlUmV2ZXJzaW9uLCB0aGVuIHRoZSBu
ZXcgcmFuZ2UgaGFzIGJlZW4gc2V0LiBTbyB3ZSBzaG91bGRuJ3QgY2xlYXIgaXQuCiAgICAgaWYg
KHR5cGUgPT0gQWx0ZXJuYXRpdmVUZXh0VHlwZUNvcnJlY3Rpb24pCi0gICAgICAgIG1fcmFuZ2VX
aXRoQWx0ZXJuYXRpdmUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJu
YXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdChjb3JyZWN0aW9uUGFuZWxUaW1lckludGVydmFsKTsKIH0KQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnN0YXJ0QWx0ZXJuYXRpdmVU
ZXh0VUlUaW1lcihBbHRlcm5hdGl2ZVRleHRUeXBlCiB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnN0b3BBbHRlcm5hdGl2ZVRleHRVSVRpbWVyKCkKIHsKICAgICBtX3RpbWVyLnN0b3Ao
KTsKLSAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxsb3B0OworICAgIG1fcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6c3RvcFBlbmRpbmdDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG9sZFNlbGVjdGlvbikKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXI6OmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgcwogICAgIGlmIChkb0FwcGx5Q29ycmVjdGlvbikKICAgICAgICAgaGFuZGxlQWx0ZXJuYXRp
dmVUZXh0VUlSZXN1bHQoZGlzbWlzc1Nvb24oUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZl
VGV4dEFjY2VwdGVkKSk7IAogICAgIGVsc2UKLSAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2
ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHN0ZDo6
bnVsbG9wdDsKIH0KIAogYm9vbCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpoYXNQZW5kaW5n
Q29ycmVjdGlvbigpIGNvbnN0CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRl
eHRDb250cm9sbGVyOjp0aW1lckZpcmVkKCkKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHAgPSBz
dGFydE9mV29yZChzdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpOwogICAgICAgICBWaXNpYmxl
U2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHAsIHN0YXJ0KTsKICAg
ICAgICAgYXV0byBhZGphY2VudFdvcmRSYW5nZSA9IGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVk
UmFuZ2UoKTsKLSAgICAgICAgbV9kb2N1bWVudC5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKHsgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcsIFRleHRD
aGVja2luZ1R5cGU6OlJlcGxhY2VtZW50LCBUZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlv
blBhbmVsIH0sIGFkamFjZW50V29yZFJhbmdlLCBhZGphY2VudFdvcmRSYW5nZSwgV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgbV9kb2N1bWVudC5lZGl0b3IoKS5tYXJrQWxsTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hckluUmFuZ2VzKHsgVGV4dENoZWNraW5nVHlwZTo6U3BlbGxpbmcsIFRleHRDaGVj
a2luZ1R5cGU6OlJlcGxhY2VtZW50LCBUZXh0Q2hlY2tpbmdUeXBlOjpTaG93Q29ycmVjdGlvblBh
bmVsIH0sIGFkamFjZW50V29yZFJhbmdlLCBhZGphY2VudFdvcmRSYW5nZSwgc3RkOjpudWxsb3B0
KTsKICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0VHlwZVJl
dmVyc2lvbjogewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJv
bGxlcjo6dGltZXJGaXJlZCgpCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHN1Z2dlc3Rpb25zOwog
ICAgICAgICB0ZXh0Q2hlY2tlcigpLT5nZXRHdWVzc2VzRm9yV29yZChtX29yaWdpbmFsVGV4dCwg
cGFyYWdyYXBoVGV4dCwgbV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgc3VnZ2Vz
dGlvbnMpOwogICAgICAgICBpZiAoc3VnZ2VzdGlvbnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgbV9y
YW5nZVdpdGhBbHRlcm5hdGl2ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIFN0cmluZyB0b3BTdWdnZXN0aW9uID0gc3VnZ2VzdGlvbnMuZmly
c3QoKTsKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6
OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdQogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0gV1RGOjpudWxs
b3B0OworICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJv
b2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6Y2FuRW5hYmxlQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hh
bmdlTGlzdFR5cGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ2hhbmdlTGlz
dFR5cGVDb21tYW5kLmNwcAppbmRleCAyYWRhYjZjZjhlMTkzMTNiYTgxYzU2YmU4Y2EyNTJhMWQ1
OGZlMDJmLi4zMjkxYWJlNTJmOTE3ZjI4ZGYwNmMzNTYxZmZlMWUxOTNkMjE2ZTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NoYW5nZUxpc3RUeXBlQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9DaGFuZ2VMaXN0VHlwZUNvbW1hbmQuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8Q2hhbmdlTGlzdFR5cGVDb21t
YW5kOjpUeXBlLCBSZWY8SFRNTEVsZW1lbnQ+Pj4gbGlzdENvCiAgICAgaWYgKGlzPEhUTUxPTGlz
dEVsZW1lbnQ+KGxpc3RUb1JlcGxhY2UpKQogICAgICAgICByZXR1cm4ge3sgQ2hhbmdlTGlzdFR5
cGVDb21tYW5kOjpUeXBlOjpDb252ZXJ0VG9Vbm9yZGVyZWRMaXN0LCBsaXN0VG9SZXBsYWNlLnJl
bGVhc2VOb25OdWxsKCkgfX07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6VHlw
ZT4gQ2hhbmdlTGlzdFR5cGVDb21tYW5kOjpsaXN0Q29udmVyc2lvblR5cGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQpAQCAtNjcsNyArNjcsNyBAQCBPcHRpb25hbDxDaGFuZ2VMaXN0VHlwZUNvbW1hbmQ6
OlR5cGU+IENoYW5nZUxpc3RUeXBlQ29tbWFuZDo6bGlzdENvbnZlcnNpb25UeXBlKAogICAgICAg
ICBpZiAoYXV0byB0eXBlQW5kRWxlbWVudCA9IGxpc3RDb252ZXJzaW9uVHlwZUZvclNlbGVjdGlv
bihmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIHR5
cGVBbmRFbGVtZW50LT5maXJzdDsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBSZWY8SFRNTEVsZW1lbnQ+IENoYW5nZUxpc3RU
eXBlQ29tbWFuZDo6Y3JlYXRlTmV3TGlzdChjb25zdCBIVE1MRWxlbWVudCYgbGlzdFRvUmVwbGFj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
aW5kZXggYmMyMzRhNzJjMmM0YTRjM2UyMGQxZWUzNjhjY2Q5NTg0NzcwYTMzMy4uNzZlZDExNWNi
NWI2YWJlMTVmYTcyYTk1ZTEzMGY3ODcwNGNiYzc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTE1NDksNyArMTU0OSw3IEBAIE9w
dGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpzaG91bGRCcmVh
a091dE9mRW1wdHlMaXN0SXRlbSgpCiB7CiAgICAgYXV0byBlbXB0eUxpc3RJdGVtID0gZW5jbG9z
aW5nRW1wdHlMaXN0SXRlbShlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CiAgICAg
aWYgKCFlbXB0eUxpc3RJdGVtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBsaXN0Tm9kZSA9IGVtcHR5TGlzdEl0
ZW0tPnBhcmVudE5vZGUoKTsKICAgICAvLyBGSVhNRTogQ2FuJ3Qgd2UgZG8gc29tZXRoaW5nIGJl
dHRlciB3aGVuIHRoZSBpbW1lZGlhdGUgcGFyZW50IHdhc24ndCBhIGxpc3Qgbm9kZT8KQEAgLTE1
NTcsNyArMTU1Nyw3IEBAIE9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpzaG91bGRCcmVha091dE9mRW1wdHlMaXN0SXRlbSgpCiAgICAgICAgIHx8ICghbGlz
dE5vZGUtPmhhc1RhZ05hbWUodWxUYWcpICYmICFsaXN0Tm9kZS0+aGFzVGFnTmFtZShvbFRhZykp
CiAgICAgICAgIHx8ICFsaXN0Tm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpCiAgICAgICAgIHx8IGxp
c3ROb2RlID09IGVtcHR5TGlzdEl0ZW0tPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkucHJldmlv
dXMoQmFja3dhcmREZWxldGlvbiksIGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRpb25IaWdobGlnaHQuaAppbmRleCBmNDZkMDFk
ZTk0OTExMjU1NzU4ODNlOTczZTFjNTE4NmY4NzFhMWIwLi42NWYxNmVmYjY4NGMxN2EwYzVlY2Ew
MzM5ODI5NzgyNzJhNTA4ODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0aW9uSGlnaGxpZ2h0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGlvbkhpZ2hsaWdodC5oCkBAIC02NywxNyArNjcsMTcgQEAgT3B0aW9uYWw8Q29tcG9zaXRpb25I
aWdobGlnaHQ+IENvbXBvc2l0aW9uSGlnaGxpZ2h0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gc3RhcnRPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBzdGFy
dE9mZnNldDsKICAgICBpZiAoIXN0YXJ0T2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IGVuZE9mZnNldDsKICAgICBkZWNvZGVyID4+IGVuZE9mZnNldDsKICAgICBpZiAoIWVuZE9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNv
bG9yOwogICAgIGlmICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnN0YXJ0T2Zmc2V0LCAq
ZW5kT2Zmc2V0LCAqY29sb3IgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKaW5kZXggMDYxOGQ3NjE4YmQ1Y2IwZmU0MGNlNDdjNjIyN2ZkZDNhYTlhYmQxOC4uZjMw
NjEzODk3ZWRlMTQxMzU0OGVlYmNmNGMxNjZhNjlmYmYyY2ZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtNTYzLDE3ICs1NjMsMTcgQEAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IEVkaXRpbmdTdHlsZTo6c3R5bGVXaXRoUmVzb2x2ZWRUZXh0RGVjb3Jh
dGlvbnMoKSBjb24KIE9wdGlvbmFsPFdyaXRpbmdEaXJlY3Rpb24+IEVkaXRpbmdTdHlsZTo6dGV4
dERpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdW5pY29kZUJpZGkgPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsKICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPih1bmljb2RlQmlkaSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRp
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS52YWx1ZUlE
KCk7CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCkgewogICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4oZGlyZWN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVjdGlvbikudmFsdWVJRCgpID09IENTU1ZhbHVl
THRyID8gV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgOiBXcml0aW5nRGlyZWN0aW9uOjpS
aWdodFRvTGVmdDsKICAgICB9CkBAIC01ODEsNyArNTgxLDcgQEAgT3B0aW9uYWw8V3JpdGluZ0Rp
cmVjdGlvbj4gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKCkgY29uc3QKICAgICBpZiAodW5p
Y29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIFdyaXRpbmdE
aXJlY3Rpb246Ok5hdHVyYWw7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjpzZXRTdHlsZShSZWZQdHI8
TXV0YWJsZVN0eWxlUHJvcGVydGllcz4mJiBzdHlsZSkKQEAgLTE2MTEsNyArMTYxMSw3IEBAIFJl
ZjxFZGl0aW5nU3R5bGU+IEVkaXRpbmdTdHlsZTo6aW52ZXJzZVRyYW5zZm9ybUNvbG9ySWZOZWVk
ZWQoRWxlbWVudCYgZWxlbWVudCkKICAgICBhdXRvIGNvbG9yRm9yUHJvcGVydHlJZkludmVydGli
bGUgPSBbJl0oQ1NTUHJvcGVydHlJRCBpZCkgLT4gT3B0aW9uYWw8Q29sb3I+IHsKICAgICAgICAg
YXV0byBjb2xvciA9IG1fbXV0YWJsZVN0eWxlLT5wcm9wZXJ0eUFzQ29sb3IoaWQpOwogICAgICAg
ICBpZiAoIWNvbG9yIHx8ICFjb2xvci0+aXNWaXNpYmxlKCkgfHwgY29sb3ItPmlzU2VtYW50aWMo
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gY29sb3I7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCmluZGV4IDQ1OTdiZGVhNWQ5M2Q3Y2QzYWYxODAxYzNmNTkyODBmYjkz
NjM5YzMuLjVkODFjMmYyNTY3NDViNjk1Mzk5ZDkyMDVjZTdhZDBiNWZhZjlhNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2MzMsMzQgKzI2MzMsMzQgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW8KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBmb3IgYXMteW91
LXR5cGUgY2hlY2tpbmcsIHNvIGlmIHRoYXQncyBvZmYgd2UgZG8gbm90aGluZy4gTm90ZSB0aGF0
CiAgICAgLy8gZ3JhbW1hciBjaGVja2luZyBjYW4gb25seSBiZSBvbiBpZiBzcGVsbCBjaGVja2lu
ZyBpcyBhbHNvIG9uLgogICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBhdXRvIHNlYXJjaFJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7CiAgICAgaWYgKCFzZWFyY2hSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBJZiB3ZSdy
ZSBub3QgaW4gYW4gZWRpdGFibGUgbm9kZSwgYmFpbC4KICAgICBOb2RlJiBlZGl0YWJsZU5vZGUg
PSBzZWFyY2hSYW5nZS0+c3RhcnRDb250YWluZXIoKTsKICAgICBpZiAoIWVkaXRhYmxlTm9kZS5o
YXNFZGl0YWJsZVN0eWxlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWlzU3BlbGxDaGVja2luZ0VuYWJsZWRG
b3IoJmVkaXRhYmxlTm9kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBHZXQgdGhlIHNwZWxsIGNoZWNrZXIgaWYg
aXQgaXMgYXZhaWxhYmxlCiAgICAgaWYgKCFjbGllbnQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBUZXh0Q2hl
Y2tpbmdIZWxwZXIgY2hlY2tlcigqY2xpZW50KCksICpzZWFyY2hSYW5nZSk7CiAgICAgaWYgKGNo
ZWNrU3BlbGxpbmcpCiAgICAgICAgIHJldHVybiBjaGVja2VyLm1hcmtBbGxNaXNzcGVsbGVkV29y
ZHMoKTsKICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIGNoZWNr
ZXIubWFya0FsbFVuZ3JhbW1hdGljYWxQaHJhc2VzKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2Vs
ZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0oY2hlY2tTcGVsbGluZyk7Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKQEAgLTMw
OTUsMTMgKzMwOTUsMTMgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JQ
b2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9
IG1fZG9jdW1lbnQuZnJhbWUoKS0+ZG9jdW1lbnRBdFBvaW50KHdpbmRvd1BvaW50KTsKICAgICBp
ZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAg
ICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbiB7IGZyYW1l
LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2lu
ZG93UG9pbnQpKSB9LnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9CiAKQEAgLTMxMzIsMTIgKzMxMzIs
MTIgQEAgdm9pZCBFZGl0b3I6OnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoYm9vbCBpZ25vcmUs
IFJldmVhbFNlbGVjdGlvbiBzaG91bGRSZXZlYWwKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0
b3I6OmNvbXBvc2l0aW9uUmFuZ2UoKSBjb25zdAogewogICAgIGlmICghbV9jb21wb3NpdGlvbk5v
ZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbV9jb21wb3NpdGlvbk5vZGUtPmxlbmd0aCgp
OwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gc3RkOjptaW4obV9jb21wb3NpdGlvblN0YXJ0LCBsZW5n
dGgpOwogICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6Y2xhbXAobV9jb21wb3NpdGlvbkVuZCwgc3Rh
cnQsIGxlbmd0aCk7CiAgICAgaWYgKHN0YXJ0ID49IGVuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4geyB7IHsg
Km1fY29tcG9zaXRpb25Ob2RlLCBzdGFydCB9LCB7ICptX2NvbXBvc2l0aW9uTm9kZSwgZW5kIH0g
fSB9OwogfQogCkBAIC0zNTE2LDcgKzM1MTYsNyBAQCBzdGF0aWMgU2ltcGxlUmFuZ2UgY29sbGFw
c2VJZlJvb3RzRGlmZmVyKFNpbXBsZVJhbmdlJiYgcmFuZ2UpCiBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gRWRpdG9yOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRp
b25hbDxTaW1wbGVSYW5nZT4mIHJlZmVyZW5jZVJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zKQog
ewogICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gU3RhcnQgZnJvbSBhbiBl
ZGdlIG9mIHRoZSByZWZlcmVuY2UgcmFuZ2UsIGlmIHRoZXJlJ3MgYSByZWZlcmVuY2UgcmFuZ2Ug
dGhhdCdzIG5vdCBpbiBzaGFkb3cgY29udGVudC4gV2hpY2ggZWRnZQogICAgIC8vIGlzIHVzZWQg
ZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIHNlYXJjaGluZyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBh
bmQgd2hldGhlciBzdGFydEluU2VsZWN0aW9uIGlzIHNldC4KQEAgLTM1NTksNyArMzU1OSw3IEBA
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIGNvbnN0IE9wdGlvbmFsCiAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIGEgc3Vj
Y2VzcyBjYXNlIGluc3RlYWQsIHNvIHdlJ2xsIGp1c3QgZmFsbCB0aHJvdWdoIGluIHRoYXQgY2Fz
ZS4KICAgICB9CiAKLSAgICByZXR1cm4gcmVzdWx0UmFuZ2UuY29sbGFwc2VkKCkgPyBXVEY6Om51
bGxvcHQgOiBtYWtlT3B0aW9uYWwocmVzdWx0UmFuZ2UpOworICAgIHJldHVybiByZXN1bHRSYW5n
ZS5jb2xsYXBzZWQoKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6bWFrZV9vcHRpb25hbChyZXN1bHRS
YW5nZSk7CiB9CiAKIHN0YXRpYyBib29sIGlzRnJhbWVJblJhbmdlKEZyYW1lJiBmcmFtZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQpAQCAtMzk0OSwxMCArMzk0OSwxMCBAQCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4gRWRpdG9yOjpjb250ZXh0UmFuZ2VGb3JDYW5kaWRhdGVSZXF1ZXN0KCkgY29u
c3QKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5nUmVz
dWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KSBjb25zdAogewogICAgIGlmICgh
cmVzdWx0LnJhbmdlLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGNvbnRleHRSYW5nZSA9IGNvbnRleHRS
YW5nZUZvckNhbmRpZGF0ZVJlcXVlc3QoKTsKICAgICBpZiAoIWNvbnRleHRSYW5nZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5yYW5n
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDc4ZjNlYzhhZGJiMTI5YjQzOTA0
ZDhjY2NjOGRjNmU1NTg5OWNmM2IuLjkyZGI0ZWJiOTk0NDY4MDhjMmViYmJhNDk4YjU2ZmFjZjNm
NjJlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMTI2LDcgKzEyNiw3IEBAIGVudW0g
Y2xhc3MgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uIDogdWludDhfdCB7CiAKIGNsYXNzIFRlbXBv
cmFyeVNlbGVjdGlvbkNoYW5nZSB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgVGVtcG9y
YXJ5U2VsZWN0aW9uQ2hhbmdlKERvY3VtZW50JiwgT3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4g
PSBXVEY6Om51bGxvcHQsIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRG9jdW1lbnQm
LCBPcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uU2V0PFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5UZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UoKTsKIAogcHJpdmF0ZToKQEAgLTE0NCw3ICsxNDQsNyBAQCBw
cml2YXRlOgogY2xhc3MgSWdub3JlU2VsZWN0aW9uQ2hhbmdlRm9yU2NvcGUgewogcHVibGljOgog
ICAgIElnbm9yZVNlbGVjdGlvbkNoYW5nZUZvclNjb3BlKEZyYW1lJiBmcmFtZSkKLSAgICAgICAg
OiBtX3NlbGVjdGlvbkNoYW5nZSgqZnJhbWUuZG9jdW1lbnQoKSwgV1RGOjpudWxsb3B0LCBUZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb246Oklnbm9yZVNlbGVjdGlvbkNoYW5nZXMpCisgICAgICAgIDog
bV9zZWxlY3Rpb25DaGFuZ2UoKmZyYW1lLmRvY3VtZW50KCksIHN0ZDo6bnVsbG9wdCwgVGVtcG9y
YXJ5U2VsZWN0aW9uT3B0aW9uOjpJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKQogICAgIHsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaAppbmRleCA2MmFiMTY1ZTlm
YTRlYWNjNjhlYWZkM2QxMDYxZmVlYWY1OTMxN2Y5Li5mZjJmMjI2OTYyZWUyYjAwMzU3NDFiZjkz
YzIwMTZmYTA1ZjgwNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRB
dHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5o
CkBAIC01OSwxNyArNTksMTcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlv
bmFsPFRleHRMaXN0PiBUZXh0TGlzdDo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICBPcHRpb25h
bDx1aW50OF90PiBzdHlsZTsKICAgICBkZWNvZGVyID4+IHN0eWxlOwogICAgIGlmICghc3R5bGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAgICBkZWNvZGVy
ID4+IHN0YXJ0aW5nSXRlbU51bWJlcjsKICAgICBpZiAoIXN0YXJ0aW5nSXRlbU51bWJlcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGJvb2w+IG9yZGVyZWQ7CiAgICAgZGVjb2RlciA+PiBvcmRlcmVkOwog
ICAgIGlmICghb3JkZXJlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBzdGF0aWNfY2FzdDxMaXN0U3R5
bGVUeXBlPihXVEZNb3ZlKCpzdHlsZSkpLCBXVEZNb3ZlKCpzdGFydGluZ0l0ZW1OdW1iZXIpLCBX
VEZNb3ZlKCpvcmRlcmVkKSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKaW5kZXggYWQzMjIyNzRhYzEyOGExMjJjMmQzMTRmYzcwOTExNzUxNTYxYmI5Yi4u
MjRkZThkN2QwYWIwMmZmMGZkYTU3N2YxODg2YmI1OTZhOTY2NjRhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTQxMCw3ICs0MTAsNyBAQCBib29sIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0
IFZpc2libGVTZWxlY3RpbwogCiAgICAgLy8gQWx3YXlzIGNsZWFyIHRoZSB4IHBvc2l0aW9uIHVz
ZWQgZm9yIHZlcnRpY2FsIGFycm93IG5hdmlnYXRpb24uCiAgICAgLy8gSXQgd2lsbCBiZSByZXN0
b3JlZCBieSB0aGUgdmVydGljYWwgYXJyb3cgbmF2aWdhdGlvbiBjb2RlIGlmIG5lY2Vzc2FyeS4K
LSAgICBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX3hQb3NGb3JWZXJ0aWNhbEFycm93TmF2aWdhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBz
ZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3RlZCgpOwogICAgIG1fZG9jdW1l
bnQtPmVkaXRvcigpLnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uLCBvcHRp
b25zKTsKICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvc2VsZWN0aW9uLWFwaS8jc2VsZWN0
aW9uY2hhbmdlLWV2ZW50CkBAIC0yNTI3LDEyICsyNTI3LDEyIEBAIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiBGcmFtZVNlbGVjdGlvbjo6ZWxlbWVudFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9u
KCkgY29uCiB7CiAgICAgYXV0byBlbGVtZW50ID0gZGVwcmVjYXRlZEVuY2xvc2luZ0Jsb2NrRmxv
d0VsZW1lbnQobV9zZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXBy
ZWNhdGVkTm9kZSgpKTsKICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN0YXJ0ID0g
VmlzaWJsZVBvc2l0aW9uKG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihlbGVtZW50LCAwKSk7
CiAgICAgYXV0byBlbmQgPSBWaXNpYmxlUG9zaXRpb24obWFrZUNvbnRhaW5lck9mZnNldFBvc2l0
aW9uKGVsZW1lbnQsIGVsZW1lbnQtPmNvdW50Q2hpbGROb2RlcygpKSk7CiAgICAgaWYgKHN0YXJ0
LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2VsZWN0aW9uID0gbV9z
ZWxlY3Rpb247CiAgICAgc2VsZWN0aW9uLnNldEJhc2Uoc3RhcnQpOwpAQCAtMjc1MSw3ICsyNzUx
LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0aW9uQXRTZW50ZW5jZVN0YXJ0KCkgY29u
c3QKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBGcmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUFsdGVyaW5n
Q3VycmVudFNlbGVjdGlvbihFQWx0ZXJhdGlvbiBhbHRlcmF0aW9uLCBpbnQgYW1vdW50KSBjb25z
dAogewogICAgIGlmIChtX3NlbGVjdGlvbi5pc05vbmUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghYW1vdW50
KQogICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAppbmRleCAxNDg5M2YxZjQ5ZGE0ZWQ5NjRl
MGFjMzZjZmY0NjFiZWVmMTRjMTU3Li41OTEwNWQ5MzdlNDY5ZjJlZGExOTJlYjBhY2NhODI2OGEy
YzNlMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIFNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChjb25zdCBTaW1w
bGVSYW5nZSYgY2hlY2tpbmdSYW5nZSwgY29uc3QgU2ltCiAgICAgLCBtX2F1dG9tYXRpY1JlcGxh
Y2VtZW50UmFuZ2UoYXV0b21hdGljUmVwbGFjZW1lbnRSYW5nZSkKICAgICAsIG1fcGFyYWdyYXBo
UmFuZ2UocGFyYWdyYXBoUmFuZ2UpCiAgICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVj
a2luZ1JhbmdlLnN0YXJ0LmNvbnRhaW5lci0+cm9vdEVkaXRhYmxlRWxlbWVudCgpKQotICAgICwg
bV9yZXF1ZXN0RGF0YShXVEY6Om51bGxvcHQsIHRleHQsIG9wdGlvbnMsIHR5cGUpCisgICAgLCBt
X3JlcXVlc3REYXRhKHN0ZDo6bnVsbG9wdCwgdGV4dCwgb3B0aW9ucywgdHlwZSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDky
MTZjNThhYjAzYTRkOTNkNThjZjkyZGQ4NDA2MDk1YjdlM2M3MTAuLjhmNzE1ZjRmMTA4YTY3ZjU0
NjNhMzZjNmZiMTkyYjFmNWFmOTFlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFRleHRDaGVja2lu
Z1BhcmFncmFwaDo6aW52YWxpZGF0ZVBhcmFncmFwaFJhbmdlVmFsdWVzKCkKICAgICBtX2NoZWNr
aW5nU3RhcnQucmVzZXQoKTsKICAgICBtX2F1dG9tYXRpY1JlcGxhY2VtZW50U3RhcnQucmVzZXQo
KTsKICAgICBtX2F1dG9tYXRpY1JlcGxhY2VtZW50TGVuZ3RoLnJlc2V0KCk7Ci0gICAgbV9vZmZz
ZXRBc1JhbmdlID0gV1RGOjpudWxsb3B0OworICAgIG1fb2Zmc2V0QXNSYW5nZSA9IHN0ZDo6bnVs
bG9wdDsKICAgICBtX3RleHQgPSBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA0MTkxYjRk
YzhkODBjYjg5ZGVhNWE4MGEwOTdlZmMxNDBiMDA0YWNjLi5kMDYzMGUzMmRjOTBlNDdjZTZjNDQ2
Y2IwNjY0ZTgxOTEyZDRiZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS50eXBlOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
ZHZhbmNlKCkKICAgICB7Ci0gICAgICAgIG1fdGV4dCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
bV90ZXh0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBhZHZhbmNlTm9kZSgpOwogCiAgICAgICAg
IGlmIChzaG91bGRBZHZhbmNlSXRlcmF0b3JQYXN0Q3VycmVudE5vZGUoKSkKQEAgLTI5MSw3ICsy
OTEsNyBAQCBzdGF0aWMgYm9vbCBhcmVFcXVhbElnbm9yaW5nTGVhZGluZ0FuZFRyYWlsaW5nV2hp
dGVzcGFjZXMoY29uc3QgU3RyaW5nJiBjb250ZW50LAogc3RhdGljIE9wdGlvbmFsPFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm8+IHRva2VuSW5mbyhOb2Rl
KiBub2RlKQogewogICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbkluZm8gcmVzdWx0OwogICAgIHJlc3VsdC5kb2N1bWVu
dFVSTCA9IG5vZGUtPmRvY3VtZW50KCkudXJsKCk7CkBAIC03ODEsNyArNzgxLDcgQEAgYXV0byBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVt
RGF0YSYgaXRlbSwgY29uc3QKICAgICAgICAgICAgIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KCplbGVtZW50KS5zZXRWYWx1ZShuZXdWYWx1ZS50b1N0cmluZygpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGl0ZW0uYXR0cmlidXRlTmFtZSwgbmV3
VmFsdWUudG9TdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgc2l6ZV90IGN1cnJlbnRUb2tlbklu
ZGV4ID0gMDsKQEAgLTkyOCw3ICs5MjgsNyBAQCBhdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiBpdGVtLCBjb25zdAogICAg
ICAgICAgICAgbV9tYW5pcHVsYXRlZE5vZGVzLmFkZChpbnNlcnRpb24uY2hpbGQuZ2V0KCkpOwog
ICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVtb3ZlTm9kZShOb2Rl
JiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlci5oCmluZGV4IDdjMGI2ZGM4NmVmNzNmMTYzYjdkZjYxNWViMmUxOGQ4M2ZhZmVh
OTYuLjFiYzAxODFiYWZiNGVlNGZhMmJlNzFlNThjNWU0ZDJlZmUzZDdkYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAg
LTIxMywxNiArMjEzLDE2IEBAIE9wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25Ub2tlbkluZm8+IFRleHRNYW5pcHVsYXRpb25Db250CiB7CiAgICAgTWFuaXB1
bGF0aW9uVG9rZW5JbmZvIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50
YWdOYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJvbGVBdHRyaWJ1
dGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG9jdW1lbnRVUkwpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNWaXNpYmxlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMzgsMTMgKzIzOCwxMyBAQCBPcHRpb25hbDxUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IFRleHRNYW5pcHVsYXRpb25D
b250cm9sbAogewogICAgIE1hbmlwdWxhdGlvblRva2VuIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jb250ZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmZv
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pc0V4Y2x1ZGVkKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTksOSArMjU5LDkgQEAgT3B0aW9uYWw8VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGUKIHsKICAgICBNYW5pcHVsYXRpb25JdGVtIHJlc3VsdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC50b2tlbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTI3Niw5ICsy
NzYsOSBAQCBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVs
ZT4gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OgogewogICAgIEV4Y2x1c2lvblJ1bGUgcmVz
dWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnJ1bGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTI5Myw3ICsyOTMsNyBAQCBPcHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
RXhjbHVzaW9uUnVsZTo6RWxlbWVudFJ1bGU+IFRleHRNYW5pcHVsYXRpbwogewogICAgIEVsZW1l
bnRSdWxlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5sb2NhbE5hbWUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTMwOCw5ICszMDgsOSBAQCBPcHRpb25h
bDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6QXR0cmlidXRlUnVs
ZT4gVGV4dE1hbmlwdWxhdAogewogICAgIEF0dHJpYnV0ZVJ1bGUgcmVzdWx0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMjUsNyArMzI1
LDcgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
OkNsYXNzUnVsZT4gVGV4dE1hbmlwdWxhdGlvbkMKIHsKICAgICBDbGFzc1J1bGUgcmVzdWx0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsYXNzTmFtZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMzQwLDExICszNDAsMTEgQEAgT3B0aW9uYWw8VGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+IFRleHRNYW5pcHVsYXRpb25Db250
cm8KIHsKICAgICBNYW5pcHVsYXRpb25GYWlsdXJlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5pbmRleCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHAKaW5kZXggZjlhOGUxZDhiMjI3OTc0NGVlMmQyYTU1OTU4ZTIwNTQyNDRj
ODFmZi4uMzE3NjRkZTZmYWFhNGRlYjI5NDA2MDZlMWRkMzhlYjliNDk0OWE0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0xNjIsNyArMTYyLDcg
QEAgUmVmUHRyPERvY3VtZW50PiBWaXNpYmxlU2VsZWN0aW9uOjpkb2N1bWVudCgpIGNvbnN0CiBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RSYW5nZSgpIGNvbnN0
CiB7CiAgICAgaWYgKGlzTm9uZU9yT3JwaGFuZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAvLyBGSVhNRTogU2VlbXMg
bGlrZWx5IHdlIGRvbid0IG5lZWQgdG8gY2FsbCBwYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQgaGVy
ZS4KICAgICByZXR1cm4gbWFrZVNpbXBsZVJhbmdlKG1fc3RhcnQucGFyZW50QW5jaG9yZWRFcXVp
dmFsZW50KCksIG1fZW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKIH0KQEAgLTE3MCw3
ICsxNzAsNyBAQCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6Zmlyc3RS
YW5nZSgpIGNvbnN0CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9O
b3JtYWxpemVkUmFuZ2UoKSBjb25zdAogewogICAgIGlmIChpc05vbmVPck9ycGhhbmVkKCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiB1cGRhdGVkIGxheW91dCBzaW5jZSB0aGlz
IGZ1bmN0aW9uIGlzIGNhbGxlZAogICAgIC8vIGluIHRoZSBjb3Vyc2Ugb2YgcnVubmluZyBlZGl0
IGNvbW1hbmRzIHdoaWNoIG1vZGlmeSB0aGUgRE9NLgpAQCAtMTgwLDcgKzE4MCw3IEBAIE9wdGlv
bmFsPFNpbXBsZVJhbmdlPiBWaXNpYmxlU2VsZWN0aW9uOjp0b05vcm1hbGl6ZWRSYW5nZSgpIGNv
bnN0CiAKICAgICAvLyBDaGVjayBhZ2FpbiwgYmVjYXVzZSB1cGRhdGluZyBsYXlvdXQgY2FuIGNs
ZWFyIHRoZSBzZWxlY3Rpb24uCiAgICAgaWYgKGlzTm9uZU9yT3JwaGFuZWQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFBvc2l0aW9uIHMsIGU7CiAgICAgaWYgKGlzQ2FyZXQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDQxYWM0YzRlNGIzZjk4NWMyOTViM2U4NjY0MzVlMTRk
Y2JjZjZlNjAuLmJjOTlmZDU5MWZhZDBmYTUxMTY2Y2E1ZTNiYTRjOWRhMTU4NGZkZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTE3NDIsNyArMTc0Miw3IEBA
IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBlbmNsb3NpbmdUZXh0VW5pdE9mR3JhbnVsYXJpdHkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2cCwKIHsKICAgICAvLyBUaGlzIGlzIHBhcnRpY3VsYXJseSBp
bmVmZmljaWVudC4gIFdlIGNvdWxkIGVhc2lseSBvYnRhaW4gdGhlIGFuc3dlciB3aXRoIHRoZSBi
b3VuZGFyaWVzIGNvbXB1dGVkIGJlbG93LgogICAgIGlmICghd2l0aGluVGV4dFVuaXRPZkdyYW51
bGFyaXR5KHZwLCBncmFudWxhcml0eSwgZGlyZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZpc2libGVQb3Np
dGlvbiBwcmV2Qm91bmRhcnk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeTsKQEAg
LTE3OTQsMTQgKzE3OTQsMTQgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGVuY2xvc2luZ1RleHRV
bml0T2ZHcmFudWxhcml0eShjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZwLAogCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGlmIChwcmV2Qm91bmRhcnkuaXNOdWxsKCkgfHwgbmV4dEJvdW5kYXJ5LmlzTnVs
bCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaWYgKHZwIDwgcHJldkJvdW5kYXJ5IHx8IHZwID4gbmV4dEJvdW5kYXJ5
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIG1ha2VTaW1wbGVSYW5nZShwcmV2Qm91bmRhcnksIG5leHRCb3Vu
ZGFyeSk7CiB9CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIGNoYXJhY3RlcnNBcm91bmRQb3Np
dGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uLCBVQ2hhcjMyJiBvbmVBZnRlcgog
T3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHdvcmRSYW5nZUZyb21Qb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChhdXRvIHJhbmdlID0gZW5jbG9zaW5nVGV4dFVuaXRPZkdyYW51bGFyaXR5KHBvc2l0
aW9uLCBUZXh0R3JhbnVsYXJpdHk6OldvcmRHcmFudWxhcml0eSwgU2VsZWN0aW9uRGlyZWN0aW9u
OjpCYWNrd2FyZCkpCiAgICAgICAgIHJldHVybiByYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvQXV0b2ZpbGxFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0F1dG9maWxsRWxlbWVudHMuY3BwCmluZGV4IDQ2NmVhZDJhZTc0M2Fj
OWQ4OWQzOGM0YTA3ZGIwMGQ1OWRlYjg3NGQuLjBhODAyOGJlZGY4YjljYTM1Yzg3MTFmMjgwZWJi
ODIwNTEzNmMyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvQXV0
b2ZpbGxFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9BdXRv
ZmlsbEVsZW1lbnRzLmNwcApAQCAtODIsNyArODIsNyBAQCBBdXRvZmlsbEVsZW1lbnRzOjpBdXRv
ZmlsbEVsZW1lbnRzKFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiYmIHVzZXJuYW1lLCBSZWZQdHI8
SAogT3B0aW9uYWw8QXV0b2ZpbGxFbGVtZW50cz4gQXV0b2ZpbGxFbGVtZW50czo6Y29tcHV0ZUF1
dG9maWxsRWxlbWVudHMoUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHN0YXJ0KQogewogICAgIGlmICgh
c3RhcnQtPmRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIEZvY3VzQ29udHJvbGxlciYgZm9jdXND
b250cm9sbGVyID0gc3RhcnQtPmRvY3VtZW50KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKTsK
ICAgICBpZiAoc3RhcnQtPmlzUGFzc3dvcmRGaWVsZCgpKSB7CiAgICAgICAgIGF1dG8gcHJldmlv
dXNFbGVtZW50ID0gcHJldmlvdXNBdXRvZmlsbGFibGVFbGVtZW50KHN0YXJ0LnB0cigpLCBmb2N1
c0NvbnRyb2xsZXIpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIE9wdGlvbmFsPEF1dG9maWxsRWxlbWVu
dHM+IEF1dG9maWxsRWxlbWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKFJlZjxIVE1MSW5w
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgQXV0b2ZpbGxFbGVtZW50czo6YXV0b2ZpbGwoU3Ry
aW5nIHVzZXJuYW1lLCBTdHJpbmcgcGFzc3dvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggMGVkODI5ZGYzNjc0MjA5NDBmODYwOTJiNjgx
NTIwMTdhMjc2MDUzZS4uNTU2Njg1OWQ2YmYzNmFmZDM3NWEzMGFkYzI3ZDQxYzE1MDE2OGU4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAt
MjExLDEyICsyMTEsMTIgQEAgYm9vbCBEYXRhRGV0ZWN0aW9uOjpjYW5QcmVzZW50RGF0YURldGVj
dG9yc1VJRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byByZXN1bHRJbmRp
Y2VzID0gU3RyaW5nVmlldyB7IHJlc3VsdEF0dHJpYnV0ZSB9LnNwbGl0KCcvJyk7CiAgICAgYXV0
byBpbmRleEl0ZXJhdG9yID0gcmVzdWx0SW5kaWNlcy5iZWdpbigpOwotICAgIGF1dG8gcmVzdWx0
ID0gW3Jlc3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5kZXhJ
dGVyYXRvcikudmFsdWVPcigwKV0gY29yZVJlc3VsdF07CisgICAgYXV0byByZXN1bHQgPSBbcmVz
dWx0c1twYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCppbmRleEl0ZXJhdG9y
KS52YWx1ZV9vcigwKV0gY29yZVJlc3VsdF07CiAKICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugb2Yg
YSBzaWduYXR1cmUgYmxvY2ssIHdoZXJlIHdlIG5lZWQgdG8gZm9sbG93IHRoZSBwYXRoIGRvd24g
b25lIG9yIG1vcmUgc3VicmVzdWx0IGxldmVscy4KICAgICB3aGlsZSAoKytpbmRleEl0ZXJhdG9y
ICE9IHJlc3VsdEluZGljZXMuZW5kKCkpIHsKICAgICAgICAgcmVzdWx0cyA9IChfX2JyaWRnZSBO
U0FycmF5ICopUEFMOjpzb2Z0TGlua19EYXRhRGV0ZWN0b3JzQ29yZV9ERFJlc3VsdEdldFN1YlJl
c3VsdHMocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gKF9fYnJpZGdlIEREUmVzdWx0UmVmKXJl
c3VsdHNbcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigqaW5kZXhJdGVyYXRv
cikudmFsdWVPcigwKV07CisgICAgICAgIHJlc3VsdCA9IChfX2JyaWRnZSBERFJlc3VsdFJlZily
ZXN1bHRzW3BhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oKmluZGV4SXRlcmF0
b3IpLnZhbHVlX29yKDApXTsKICAgICB9CiAKICAgICByZXR1cm4gUEFMOjpzb2Z0TGlua19EYXRh
RGV0ZWN0b3JzQ29yZV9ERFNob3VsZEltbWVkaWF0ZWx5U2hvd0FjdGlvblNoZWV0Rm9yUmVzdWx0
KHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rp
b25hcnlMb29rdXAubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RpY3Rpb25hcnlM
b29rdXAubW0KaW5kZXggYTQwZTBmZDVhMzQ3NGI3NDM3ZDNkOThmN2Q3YzYxNDMzYjk4OThiZC4u
NTA2MmJjYjg4MjU2YmVlZmY5NzY5NTEzYWU2YmMwMmI4OWJkZTAzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EaWN0aW9uYXJ5TG9va3VwLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGljdGlvbmFyeUxvb2t1cC5tbQpAQCAtMjY3LDcgKzI2
Nyw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4g
RGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAKICAgICBpZiAoIWNhbkNyZWF0ZVJldmVhbEl0ZW1zKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBT
aW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJhbmdlIHdlIHdhbnQsIHdlIGp1c3QgbmVlZCB0byBn
cmFiIHRoZSByZXR1cm5lZCBvcHRpb25zLgogICAgIGF1dG8gc2VsZWN0aW9uU3RhcnQgPSBzZWxl
Y3Rpb24udmlzaWJsZVN0YXJ0KCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgT3B0aW9uYWw8c3RkOjp0
dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUZvclNlbGUKICAgICBhdXRvIHBhcmFncmFwaFN0YXJ0ID0gc3RhcnRPZlBhcmFncmFwaChzZWxl
Y3Rpb25TdGFydCk7CiAgICAgYXV0byBwYXJhZ3JhcGhFbmQgPSBlbmRPZlBhcmFncmFwaChzZWxl
Y3Rpb25FbmQpOwogICAgIGlmIChwYXJhZ3JhcGhTdGFydC5pc051bGwoKSB8fCBwYXJhZ3JhcGhF
bmQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGxlbmd0aFRvU2VsZWN0aW9uU3RhcnQgPSBjaGFy
YWN0ZXJDb3VudCgqbWFrZVNpbXBsZVJhbmdlKHBhcmFncmFwaFN0YXJ0LCBzZWxlY3Rpb25TdGFy
dCkpOwogICAgIGF1dG8gc2VsZWN0aW9uQ2hhcmFjdGVyQ291bnQgPSBjaGFyYWN0ZXJDb3VudCgq
bWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpKTsKQEAgLTI5MSw3
ICsyOTEsNyBAQCBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkg
Kj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlRm9yU2VsZQogCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBPcHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25h
cnkgKj4+IERpY3Rpb25hcnlMb29rdXA6OnJhbmdlQXRIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRl
c3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCkBAIC0yOTksMjAgKzI5OSwyMCBAQCBPcHRpb25hbDxz
dGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29rdXA6
OnJhbmdlQXRIaXRUZQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAg
IGlmICghY2FuQ3JlYXRlUmV2ZWFsSXRlbXMoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBhdXRvKiBub2RlID0g
aGl0VGVzdFJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCku
ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcg
aWYgdGhlcmUgaXMgbm8gY2hhcmFjdGVyIGF0IHRoZSBwb2ludC4KICAgICBhdXRvIGZyYW1lUG9p
bnQgPSBoaXRUZXN0UmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lLT5yYW5nZUZvclBvaW50KGZyYW1lUG9pbnQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBwb3Np
dGlvbiA9IGZyYW1lLT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludChmcmFtZVBvaW50KTsKICAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCkBAIC0zMzAsNyArMzMwLDcgQEAgT3B0aW9uYWw8c3RkOjp0
dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5n
ZUF0SGl0VGUKICAgICAgICAgLy8gQXMgY29udGV4dCwgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUg
c3Vycm91bmRpbmcgcGFyYWdyYXBocyBvZiB0ZXh0LgogICAgICAgICBmdWxsQ2hhcmFjdGVyUmFu
Z2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb25TdGFydCksIGVu
ZE9mUGFyYWdyYXBoKHNlbGVjdGlvbkVuZCkpOwogICAgICAgICBpZiAoIWZ1bGxDaGFyYWN0ZXJS
YW5nZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gTlNNYWtlUmFuZ2Uo
Y2hhcmFjdGVyQ291bnQoKm1ha2VTaW1wbGVSYW5nZShmdWxsQ2hhcmFjdGVyUmFuZ2UtPnN0YXJ0
LCBzZWxlY3Rpb25TdGFydCkpLAogICAgICAgICAgICAgY2hhcmFjdGVyQ291bnQoKm1ha2VTaW1w
bGVSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkpOwpAQCAtMzQzLDcgKzM0Myw3
IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGlj
dGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlCiAgICAgICAgIC8vIEFzIGNvbnRleHQsIHdlIGFy
ZSBnb2luZyB0byB1c2UgMjUwIGNoYXJhY3RlcnMgb2YgdGV4dCBiZWZvcmUgYW5kIGFmdGVyIHRo
ZSBwb2ludC4KICAgICAgICAgZnVsbENoYXJhY3RlclJhbmdlID0gcmFuZ2VFeHBhbmRlZEFyb3Vu
ZFBvc2l0aW9uQnlDaGFyYWN0ZXJzKHBvc2l0aW9uLCAyNTApOwogICAgICAgICBpZiAoIWZ1bGxD
aGFyYWN0ZXJSYW5nZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNlbGVjdGlvblJhbmdlID0gTlNN
YWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAgICAgICAgIGhpdEluZGV4ID0gY2hhcmFjdGVyQ291
bnQoKm1ha2VTaW1wbGVSYW5nZShmdWxsQ2hhcmFjdGVyUmFuZ2UtPnN0YXJ0LCBwb3NpdGlvbikp
OwpAQCAtMzU1LDEzICszNTUsMTMgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwg
TlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICBhdXRv
IGhpZ2hsaWdodFJhbmdlID0gYWRvcHROUyhbUEFMOjphbGxvY1JWSXRlbUluc3RhbmNlKCkgaW5p
dFdpdGhUZXh0Oml0ZW1TdHJpbmcgc2VsZWN0ZWRSYW5nZTpzZWxlY3RlZFJhbmdlXSkuZ2V0KCku
aGlnaGxpZ2h0UmFuZ2U7CiAKICAgICBpZiAoaGlnaGxpZ2h0UmFuZ2UubG9jYXRpb24gPT0gTlNO
b3RGb3VuZCB8fCAhaGlnaGxpZ2h0UmFuZ2UubGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7
IHsgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKCpmdWxsQ2hhcmFjdGVyUmFuZ2UsIGhpZ2hsaWdodFJh
bmdlKSwgbmlsIH0gfTsKICAgICAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAg
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogfQogCkBAIC01MjMsMTIgKzUyMywxMiBAQCBXS1JldmVhbENvbnRyb2xsZXIgRGljdGlvbmFy
eUxvb2t1cDo6YW5pbWF0aW9uQ29udHJvbGxlckZvclBvcHVwKGNvbnN0IERpY3Rpb25hcgogCiBP
cHRpb25hbDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25h
cnlMb29rdXA6OnJhbmdlRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQogewot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9u
YXJ5TG9va3VwOjpyYW5nZUF0SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JikKIHsK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0
cmlidXRlQ2hhbmdlc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250
QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCmluZGV4IGRhMDJjYjJjNGNlZmY4M2FkNDU1ZmZiMmRl
YmM2NjI5OTRhN2U3NmYuLmQ0MzFmNzIyZTI0YWFiM2JkMTc3MjhiNDM1OGI3ODY5OGI3ODZmNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZUNo
YW5nZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRy
aWJ1dGVDaGFuZ2VzQ29jb2EubW0KQEAgLTQ2LDggKzQ2LDggQEAgY29uc3QgU3RyaW5nJiBGb250
Q2hhbmdlczo6cGxhdGZvcm1Gb250RmFtaWx5TmFtZUZvckNTUygpIGNvbnN0CiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBmb250TmFtZUZyb21EZXNjcmlwdGlvbjsKIAogICAgIEZvbnREZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbjsKLSAgICBkZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhtX2l0YWxp
Yy52YWx1ZU9yKGZhbHNlKSk7Ci0gICAgZGVzY3JpcHRpb24uc2V0V2VpZ2h0KEZvbnRTZWxlY3Rp
b25WYWx1ZSB7IG1fYm9sZC52YWx1ZU9yKGZhbHNlKSA/IDkwMCA6IDUwMCB9KTsKKyAgICBkZXNj
cmlwdGlvbi5zZXRJc0l0YWxpYyhtX2l0YWxpYy52YWx1ZV9vcihmYWxzZSkpOworICAgIGRlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250U2VsZWN0aW9uVmFsdWUgeyBtX2JvbGQudmFsdWVfb3IoZmFs
c2UpID8gOTAwIDogNTAwIH0pOwogICAgIGlmIChhdXRvIGZvbnQgPSBGb250Q2FjaGU6OnNpbmds
ZXRvbigpLmZvbnRGb3JGYW1pbHkoZGVzY3JpcHRpb24sIG1fZm9udEZhbWlseSkpCiAgICAgICAg
IGZvbnROYW1lRnJvbURlc2NyaXB0aW9uID0gYWRvcHRDRihDVEZvbnRDb3B5UG9zdFNjcmlwdE5h
bWUoZm9udC0+Z2V0Q1RGb250KCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGQ0NWY1Yjc0ODBkNTgzZDhkOTk1ZmRiNWIyNWZkMGM2
MDM2NGZlNTcuLjZiZmRmOTA1MTdhNTY5MmI5YmEwNjI0MjMwOWY5ODMwYTY4YmFmNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTk3OSw3
ICs5NzksNyBAQCBOU0RpY3Rpb25hcnkgKkhUTUxDb252ZXJ0ZXI6OmNvbXB1dGVkQXR0cmlidXRl
c0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgfQogCiAgICAgICAgIFN0cmlu
ZyBmb250V2VpZ2h0ID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NT
UHJvcGVydHlGb250U3R5bGUpOwotICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJi
b2xkIikgfHwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pihmb250V2VpZ2h0
KS52YWx1ZU9yKDApID49IDcwMCkgeworICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRo
KCJib2xkIikgfHwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50Pihmb250V2Vp
Z2h0KS52YWx1ZV9vcigwKSA+PSA3MDApIHsKICAgICAgICAgICAgIC8vID8/PyBoYW5kbGUgd2Vp
Z2h0IHByb3Blcmx5IHVzaW5nIE5TRm9udE1hbmFnZXIKICAgICAgICAgICAgIFBsYXRmb3JtRm9u
dCAqb3JpZ2luYWxGb250ID0gZm9udDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQppbmRleCBkYTI5Nzk3Yjk1OTA4MjcyY2ZlNTUzMDRlYThjYjg3YThiMTAxMTIxLi42OTljNDZl
YzMxOGQ0MzU3MzBjYTc0NjU0ZmEyYjJlNGUxMDBmMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNDMwLDE1
ICs0MzAsMTUgQEAgc3RhdGljIE9wdGlvbmFsPE1hcmt1cEFuZEFyY2hpdmU+IGV4dHJhY3RNYXJr
dXBBbmRBcmNoaXZlKFNoYXJlZEJ1ZmZlciYgYnVmZmVyLAogewogICAgIGF1dG8gYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyKTsKICAgICBpZiAoIWFyY2hp
dmUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBhcmNo
aXZlLT5tYWluUmVzb3VyY2UoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gdHlwZSA9IG1haW5SZXNvdXJjZS0+bWltZVR5cGUoKTsKICAgICBpZiAoIWNhblNob3dNSU1F
VHlwZUFzSFRNTCh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBNYXJrdXBBbmRBcmNoaXZlIHsgU3Ry
aW5nOjpmcm9tVVRGOChtYWluUmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIG1haW5SZXNvdXJjZS0+
ZGF0YSgpLnNpemUoKSksIG1haW5SZXNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpLCBhcmNoaXZlLnJl
bGVhc2VOb25OdWxsKCkgfTsKIH0KQEAgLTcyOCw3ICs3MjgsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmaWxlU2l6ZUZvckRp
c3BsYXk7CiAgICAgaWYgKCFpc0RpcmVjdG9yeSkKLSAgICAgICAgZmlsZVNpemVGb3JEaXNwbGF5
ID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocGF0aCkudmFsdWVPcigwKTsKKyAgICAgICAgZmlsZVNp
emVGb3JEaXNwbGF5ID0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocGF0aCkudmFsdWVfb3IoMCk7CiAK
ICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1l
bnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29udGVudFR5cGUsIHBhdGgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGljdGlvbmFyeUxvb2t1cExlZ2FjeS5t
bQppbmRleCA4YjEyMDg1MzE2ZTZlMGM0NTZhY2MwMTMwMDU5Njc0ZmM0NWJmMmVmLi4xNjIzZTk5
ZDZiMTJiNDg5MWE5Y2ViMmYwMmZmYjIxMGFkNWUxNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9EaWN0aW9uYXJ5TG9va3VwTGVnYWN5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RpY3Rpb25hcnlMb29rdXBMZWdhY3kubW0KQEAgLTc2LDcgKzc2
LDcgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwgTlNEaWN0aW9uYXJ5ICo+PiBE
aWN0aW9uYXJ5TG9va3VwOjpyYW5nZUZvclNlbGUKIHsKICAgICBhdXRvIHNlbGVjdGVkUmFuZ2Ug
PSBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2Up
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJhbmdlIHdlIHdhbnQsIHdl
IGp1c3QgbmVlZCB0byBncmFiIHRoZSByZXR1cm5lZCBvcHRpb25zLgogICAgIGF1dG8gc2VsZWN0
aW9uU3RhcnQgPSBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7CkBAIC04NSw3ICs4NSw3IEBAIE9w
dGlvbmFsPHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFy
eUxvb2t1cDo6cmFuZ2VGb3JTZWxlCiAgICAgLy8gQXMgY29udGV4dCwgd2UgYXJlIGdvaW5nIHRv
IHVzZSB0aGUgc3Vycm91bmRpbmcgcGFyYWdyYXBocyBvZiB0ZXh0LgogICAgIGF1dG8gcGFyYWdy
YXBoUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnRPZlBhcmFncmFwaChzZWxlY3Rpb25TdGFy
dCksIGVuZE9mUGFyYWdyYXBoKHNlbGVjdGlvbkVuZCkpOwogICAgIGlmICghcGFyYWdyYXBoUmFu
Z2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIHNlbGVjdGlvblJhbmdlID0gKm1ha2VTaW1wbGVSYW5nZShzZWxl
Y3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKIApAQCAtOTksMTYgKzk5LDE2IEBAIE9wdGlvbmFs
PHN0ZDo6dHVwbGU8U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gRGljdGlvbmFyeUxvb2t1
cDo6cmFuZ2VBdEhpdFRlCiB7CiAgICAgYXV0byogbm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5kZXJlcigpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZXJlIGlzIG5vIGNoYXJh
Y3RlciBhdCB0aGUgcG9pbnQuCiAgICAgYXV0byBmcmFtZVBvaW50ID0gaGl0VGVzdFJlc3VsdC5y
b3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZS0+cmFuZ2VGb3JQ
b2ludChmcmFtZVBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcG9zaXRpb24gPSBmcmFtZS0+dmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQoZnJhbWVQb2ludCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgp
KQpAQCAtMTI2LDExICsxMjYsMTEgQEAgT3B0aW9uYWw8c3RkOjp0dXBsZTxTaW1wbGVSYW5nZSwg
TlNEaWN0aW9uYXJ5ICo+PiBEaWN0aW9uYXJ5TG9va3VwOjpyYW5nZUF0SGl0VGUKICAgICAvLyBB
cyBjb250ZXh0LCB3ZSBhcmUgZ29pbmcgdG8gdXNlIDI1MCBjaGFyYWN0ZXJzIG9mIHRleHQgYmVm
b3JlIGFuZCBhZnRlciB0aGUgcG9pbnQuCiAgICAgYXV0byBmdWxsQ2hhcmFjdGVyUmFuZ2UgPSBy
YW5nZUV4cGFuZGVkQXJvdW5kUG9zaXRpb25CeUNoYXJhY3RlcnMocG9zaXRpb24sIDI1MCk7CiAg
ICAgaWYgKCFmdWxsQ2hhcmFjdGVyUmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJhbmdlVG9Qb3NpdGlv
biA9IG1ha2VTaW1wbGVSYW5nZShmdWxsQ2hhcmFjdGVyUmFuZ2UtPnN0YXJ0LCBwb3NpdGlvbik7
CiAgICAgaWYgKCFyYW5nZVRvUG9zaXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBOU1JhbmdlIHJhbmdlVG9QYXNz
ID0gTlNNYWtlUmFuZ2UoY2hhcmFjdGVyQ291bnQoKnJhbmdlVG9Qb3NpdGlvbiksIDApOwogICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKQEAgLTEzOSw3ICsxMzksNyBAQCBPcHRpb25h
bDxzdGQ6OnR1cGxlPFNpbXBsZVJhbmdlLCBOU0RpY3Rpb25hcnkgKj4+IERpY3Rpb25hcnlMb29r
dXA6OnJhbmdlQXRIaXRUZQogICAgIC8vIHRva2VuUmFuZ2Ugc29tZXRpbWVzIHJldHVybnMge05T
Tm90Rm91bmQsIDB9IGlmIGl0IHdhcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGEgZ29vZCBzdHJpbmcu
CiAgICAgLy8gRklYTUUgKDE1OTA2Myk6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGNoZWNrIGZvciB6
ZXJvIGxlbmd0aCBoZXJlLgogICAgIGlmIChleHRyYWN0ZWRSYW5nZS5sb2NhdGlvbiA9PSBOU05v
dEZvdW5kIHx8ICFleHRyYWN0ZWRSYW5nZS5sZW5ndGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IHJl
c29sdmVDaGFyYWN0ZXJSYW5nZSgqZnVsbENoYXJhY3RlclJhbmdlLCBleHRyYWN0ZWRSYW5nZSks
IG9wdGlvbnMgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggZmZhMzI3ZTllZWNl
NTVkZTU3ZjI0NGNlOGI1YWEyZmVlZDhiNjRkYS4uMjhlZGI2MTQ4NjMwNDcxMDQ3NDMxMjUxZTc1
OGI4NDBmZGIyZjQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC01NSw3ICs1NSw3IEBA
IHZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50
PiYmLCBXVEY6OkZ1bmN0aW9uPGJvb2woCiAKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQ
YWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKIGVudW0gY2xhc3MgTVNPTGlzdFF1aXJrcyA6
IGJvb2wgeyBDaGVja0lmTmVlZGVkLCBEaXNhYmxlZCB9OwotU3RyaW5nIHNhbml0aXplTWFya3Vw
KGNvbnN0IFN0cmluZyYsIE1TT0xpc3RRdWlya3MgPSBNU09MaXN0UXVpcmtzOjpEaXNhYmxlZCwg
T3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyID0gV1RGOjpudWxsb3B0KTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBT
dHJpbmcmLCBNU09MaXN0UXVpcmtzID0gTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIE9wdGlvbmFs
PFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXpl
ciA9IHN0ZDo6bnVsbG9wdCk7CiBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRv
Y3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBEb2N1bWVudCYsIE1TT0xpc3RRdWlya3Ms
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNYXJrdXApOwogCiBXRUJDT1JFX0VYUE9SVCBSZWY8RG9j
dW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb25zdCBTaW1wbGVSYW5nZSYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVy
LmgKaW5kZXggYmY3MzFjMWY5YjU2MmRkMjdlYzQ5YmMwYzc2ODVjZmFlODU0NTBmNi4uYTQyODdj
ZGQ5M2Q3OWNlZWVjMThhMzJkNzE3NzdhYzIxMmY2M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iTG9hZGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb2FkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgJiYgbV9jb21wbGV0aW9uSGFuZGxlcjsgfQogICAg
IFN0cmluZyBzdHJpbmdSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVy
LT5zdHJpbmdSZXN1bHQoKSA6IFN0cmluZygpOyB9CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+IGFycmF5QnVmZmVyUmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIgPyBtX2xvYWRl
ci0+YXJyYXlCdWZmZXJSZXN1bHQoKSA6IG51bGxwdHI7IH0KLSAgICBPcHRpb25hbDxFeGNlcHRp
b25Db2RlPiBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlciA/IG1fbG9hZGVyLT5l
cnJvckNvZGUoKSA6IFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+
IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2FkZXItPmVycm9yQ29k
ZSgpIDogc3RkOjpudWxsb3B0OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydExvYWRp
bmcoKSBmaW5hbCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4IDllZDJkZTY1MDUwZDA2
OGQwZWNiOTk0NjhiZmRhZDQzNDAzMDUwOGYuLjQ3M2MwMzE5OTBlMTdjYjdjZWViNWIzYzNhZWFi
N2I1MTI4MzM4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAtNzgsNyArNzgsNyBAQCBG
aWxlOjpGaWxlKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cgogRmlsZTo6RmlsZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBWZWN0b3I8QmxvYlBhcnRWYXJpYW50PiYmIGJsb2JQYXJ0VmFyaWFudHMsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFByb3BlcnR5QmFnJiBwcm9wZXJ0eUJhZykKICAg
ICA6IEJsb2IoY29udGV4dCwgV1RGTW92ZShibG9iUGFydFZhcmlhbnRzKSwgcHJvcGVydHlCYWcp
CiAgICAgLCBtX25hbWUoZmlsZW5hbWUpCi0gICAgLCBtX2xhc3RNb2RpZmllZERhdGVPdmVycmlk
ZShwcm9wZXJ0eUJhZy5sYXN0TW9kaWZpZWQudmFsdWVPcihXYWxsVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKSkpCisgICAgLCBtX2xhc3RNb2RpZmllZERhdGVP
dmVycmlkZShwcm9wZXJ0eUJhZy5sYXN0TW9kaWZpZWQudmFsdWVfb3IoV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCkpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oCmluZGV4IDAxYmM4MmNhMThkMmQ0ODA5MTg4MWZhMmIxMGRlNmE5NWE0YzE3MzEuLjlm
NzgwMGFlNTQzM2I2MWE4ZGQzZDkwMzI4NTc3MzVmYTNjMTI5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbGU7CiAgICAg
fQogCi0gICAgc3RhdGljIFJlZjxGaWxlPiBkZXNlcmlhbGl6ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgT3B0aW9uYWw8aW50NjRf
dD4mIGxhc3RNb2RpZmllZCA9IFdURjo6bnVsbG9wdCkKKyAgICBzdGF0aWMgUmVmPEZpbGU+IGRl
c2VyaWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBPcHRpb25hbDxpbnQ2NF90PiYgbGFzdE1vZGlmaWVkID0gc3RkOjpudWxs
b3B0KQogICAgIHsKICAgICAgICAgYXV0byBmaWxlID0gYWRvcHRSZWYoKm5ldyBGaWxlKGRlc2Vy
aWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnRleHQsIHBhdGgsIHNyY1VSTCwgdHlwZSwgbmFtZSwg
bGFzdE1vZGlmaWVkKSk7CiAgICAgICAgIGZpbGUtPnN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMTRjOGJkNTIxYjY3YjBlMjg4M2I1ODA4
ODA4ZTUxYWRjYzRmNDQ2Mi4uMDliMmEwMzhiYTEyZGU5YWNhZTk0ZjY3Y2ExN2IyNzVlMTRhZWM3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC0yMjQsMTYgKzIyNCwx
NiBAQCB2b2lkIEZpbGVSZWFkZXI6OmZpcmVFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlKQog
T3B0aW9uYWw8VmFyaWFudDxTdHJpbmcsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4+IEZpbGVS
ZWFkZXI6OnJlc3VsdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xvYWRlciB8fCBtX2Vycm9yIHx8
IG1fc3RhdGUgIT0gRE9ORSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobV9yZWFkVHlwZSA9PSBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkQXNBcnJheUJ1ZmZlcikgewogICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbG9hZGVy
LT5hcnJheUJ1ZmZlclJlc3VsdCgpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICByZXR1cm4geyByZXN1bHQgfTsKICAgICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1f
bG9hZGVyLT5zdHJpbmdSZXN1bHQoKTsKICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJldHVybiB7IFdURk1vdmUocmVzdWx0KSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oCmluZGV4IGZhNGU4NjZjYWZlZTI4
OTkyNDc0Mzg4ZGViMWM2MGQ4YmI2NDcwNDAuLjljNzI2MGM0MjI2MGE0YjVjZDFjNzFlYWE5YTJi
YWVhODA4ZmM2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllci5oCkBAIC04MywxNiArODMsMTYgQEAgT3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29k
ZXImIGQKICAgICBPcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVu
dGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T2JqZWN0SWRlbnRpZmllcjxJdGVtSWRlbnRpZmll
clR5cGU+PiBpdGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGl0ZW1JZGVudGlmaWVyOwog
ICAgIGlmICghaXRlbUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyIHJlc3VsdCA9IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCppdGVt
SWRlbnRpZmllcikgfTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwCmluZGV4IDhjMGUxZjUzMGZkMDU3MzcyMDBiYWNiNTk4MGJkNjU3ODJhODIw
MzAuLjBhYTgzYjkzN2ZkYmQyOWNlNWFhNzg5ODc2ZTE5MjBhZGJlNWZkYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKQEAgLTU0NCw3
ICs1NDQsNyBAQCBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0dXBEYXRlVGltZUNo
b29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcgogICAgIHBhcmFtZXRlcnMuaXNBbmNo
b3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMOwogICAgIHBhcmFtZXRlcnMudXNlRGFya0FwcGVhcmFuY2UgPSBkb2N1bWVudC51c2VE
YXJrQXBwZWFyYW5jZShjb21wdXRlZFN0eWxlKTsKIAotICAgIGF1dG8gZGF0ZSA9IHBhcnNlVG9E
YXRlQ29tcG9uZW50cyhlbGVtZW50LnZhbHVlKCkpLnZhbHVlT3IoRGF0ZUNvbXBvbmVudHMoKSk7
CisgICAgYXV0byBkYXRlID0gcGFyc2VUb0RhdGVDb21wb25lbnRzKGVsZW1lbnQudmFsdWUoKSku
dmFsdWVfb3IoRGF0ZUNvbXBvbmVudHMoKSk7CiAgICAgcGFyYW1ldGVycy5oYXNTZWNvbmRGaWVs
ZCA9IHNob3VsZEhhdmVTZWNvbmRGaWVsZChkYXRlKTsKICAgICBwYXJhbWV0ZXJzLmhhc01pbGxp
c2Vjb25kRmllbGQgPSBzaG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZChkYXRlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAzMzc5YjhiY2MyYWU1ZmQyY2UyYmU5
NWJkM2NlMzJkNjg5Yzk5NTY5Li4zMmMzYjQ0ZmFjMDU1MTgwYmI0NTQwMGY2MGI2Nzk5NzMwMTU5
OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtNzIsNyArNzIs
NyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkU2ltcGxlQ29sb3IoU3RyaW5nVmlldyBzdHJpbmcpCiBz
dGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IHBhcnNlU2ltcGxlQ29sb3JWYWx1ZShTdHJp
bmdWaWV3IHN0cmluZykKIHsKICAgICBpZiAoIWlzVmFsaWRTaW1wbGVDb2xvcihzdHJpbmcpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB7IHsgdG9BU0NJSUhleFZhbHVlKHN0cmluZ1sxXSwgc3RyaW5nWzJdKSwg
dG9BU0NJSUhleFZhbHVlKHN0cmluZ1szXSwgc3RyaW5nWzRdKSwgdG9BU0NJSUhleFZhbHVlKHN0
cmluZ1s1XSwgc3RyaW5nWzZdKSB9IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRE9NRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5j
cHAKaW5kZXggODRmNzkzOTIxZjQzZjVhNmM3NjcwMmJlYjIyZTlmY2U0N2JhMTgzNC4uNjgwMmEx
NWZlNjhmMGVhOGU1OTg4NmRlMWQ2MTBjODg5MzlkNzg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01G
b3JtRGF0YS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgYXV0byBET01Gb3JtRGF0YTo6Z2V0KGNvbnN0
IFN0cmluZyYgbmFtZSkgLT4gT3B0aW9uYWw8Rm9ybURhdGFFbnRyeVZhbHVlPgogICAgICAgICAg
ICAgcmV0dXJuIGl0ZW0uZGF0YTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGF1dG8gRE9NRm9ybURhdGE6OmdldEFsbChj
b25zdCBTdHJpbmcmIG5hbWUpIC0+IFZlY3RvcjxGb3JtRGF0YUVudHJ5VmFsdWU+CkBAIC0xNTks
NyArMTU5LDcgQEAgT3B0aW9uYWw8S2V5VmFsdWVQYWlyPFN0cmluZywgRE9NRm9ybURhdGE6OkZv
cm1EYXRhRW50cnlWYWx1ZT4+IERPTUZvcm1EYXRhOjpJdGUKIHsKICAgICBhdXRvJiBpdGVtcyA9
IG1fdGFyZ2V0LT5pdGVtcygpOwogICAgIGlmIChtX2luZGV4ID49IGl0ZW1zLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8mIGl0ZW0gPSBpdGVtc1ttX2luZGV4KytdOwogICAgIHJldHVybiBtYWtlS2V5
VmFsdWVQYWlyKGl0ZW0ubmFtZSwgaXRlbS5kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcAppbmRleCA3YWYyMGEzZjRiYTk2YzI4YTE5MDZlNTA5MmNiOGI5MWRhNGM2ODRiLi45
YTQxMGM3MGU0YzA3ZTNiNDM1YTcwZjhmMWM4MGU2MzYxZWZjYmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgRXhjZXB0aW9uT3I8Ym9vbD4g
RE9NVG9rZW5MaXN0Ojp0b2dnbGUoY29uc3QgQXRvbVN0cmluZyYgdG9rZW4sIE9wdGlvbmFsPGJv
b2w+IGYKICAgICBhdXRvJiB0b2tlbnMgPSB0aGlzLT50b2tlbnMoKTsKIAogICAgIGlmICh0b2tl
bnMuY29udGFpbnModG9rZW4pKSB7Ci0gICAgICAgIGlmICghZm9yY2UudmFsdWVPcihmYWxzZSkp
IHsKKyAgICAgICAgaWYgKCFmb3JjZS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgIHRv
a2Vucy5yZW1vdmVGaXJzdCh0b2tlbik7CiAgICAgICAgICAgICB1cGRhdGVBc3NvY2lhdGVkQXR0
cmlidXRlRnJvbVRva2VucygpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbi5oCmluZGV4
IGVjODZmNzA0ODRjZTNlNGRlODUwNmZhN2M2MTEzMTU3MWUxNGE2NGUuLjRkNmQwMmNmZGYzZjEy
NDBkZDNjODY3Y2I5YzQ5ZmE1ZGNlZjliZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uLmgKQEAgLTYwLDEyICs2MCwxMiBAQCBP
cHRpb25hbDxEYXRhTGlzdFN1Z2dlc3Rpb24+IERhdGFMaXN0U3VnZ2VzdGlvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICBkZWNvZGVy
ID4+IHZhbHVlOwogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGxh
YmVsOwogICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgaWYgKCFsYWJlbCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiB7eyAqdmFsdWUsICpsYWJlbCB9fTsKIH0KQEAgLTkyLDE3ICs5MiwxNyBAQCBPcHRpb25h
bDxEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbj4gRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3Jt
YXRpb246OmRlY29kZShEZQogewogICAgIERhdGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBl
IGFjdGl2YXRpb25UeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZhdGlvblR5cGUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPERhdGFMaXN0U3VnZ2VzdGlvbj4+IHN1Z2dlc3Rp
b25zOwogICAgIGRlY29kZXIgPj4gc3VnZ2VzdGlvbnM7CiAgICAgaWYgKCFzdWdnZXN0aW9ucykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPEludFJlY3Q+IGVsZW1lbnRSZWN0OwogICAgIGRlY29kZXIgPj4g
ZWxlbWVudFJlY3Q7CiAgICAgaWYgKCFlbGVtZW50UmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBh
Y3RpdmF0aW9uVHlwZSwgKnN1Z2dlc3Rpb25zLCAqZWxlbWVudFJlY3QgfX07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lRmllbGRzU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oCmluZGV4IGZhOWE1NDgwMzg5NzI4YTBl
ODQxYjUzYzk4YWNkOGI3ZGFjMjQwNzkuLmM1YTMxMDQ2ZTRmZmY0YzBhZWFhMDYxZmQyM2JkMWI3
OWI2YzU0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVGaWVsZHNT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVGaWVsZHNTdGF0ZS5oCkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBEYXRlVGltZUZpZWxkc1N0YXRlIHsKICAgICBpbmxpbmUg
T3B0aW9uYWw8dW5zaWduZWQ+IGhvdXIyMygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhv
dXIgfHwgIW1lcmlkaWVtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiAoKmhvdXIgJSAxMikg
KyAoKm1lcmlkaWVtID09IERhdGVUaW1lRmllbGRzU3RhdGU6Ok1lcmlkaWVtOjpQTSA/IDEyIDog
MCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDdh
ZWQ2MTE5NjRkYjM3ZjA1MDMxZDM1ZWFlYTg5OTA1NTYzNjIxZTUuLjQ0Zjc4NGI3YTEyNTBiZWQ3
NTdiOTg4MzQ0ZTUzYjU5ODQxNDQzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC02NSwxMCArNjUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIHNlcmlhbGl6ZUZv
cm1Db250cm9sU3RhdGVUbyhjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBmb3JtQ29udHIKIHN0YXRp
YyBpbmxpbmUgT3B0aW9uYWw8Rm9ybUNvbnRyb2xTdGF0ZT4gZGVzZXJpYWxpemVGb3JtQ29udHJv
bFN0YXRlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvciwgc2l6ZV90JiBpbmRleCkK
IHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotICAgIGF1dG8gc2l6ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPHNpemVfdD4oc3RhdGVWZWN0b3JbaW5kZXgrK10pLnZhbHVlT3IoMCk7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byBzaXplID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8c2l6ZV90PihzdGF0ZVZlY3RvcltpbmRleCsrXSkudmFsdWVfb3IoMCk7
CiAgICAgaWYgKGluZGV4ICsgc2l6ZSA+IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBWZWN0
b3I8U3RyaW5nPiBzdWJ2ZWN0b3I7CiAgICAgc3VidmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCkBAIC0xOTcs
NyArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNhdmVkRm9ybVN0YXRlPiBTYXZlZEZvcm1TdGF0
ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4KIHsKICAgICBpZiAoaW5kZXggPj0g
c3RhdGVWZWN0b3Iuc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGl0
ZW1Db3VudCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oc3RhdGVW
ZWN0b3JbaW5kZXgrK10pLnZhbHVlT3IoMCk7CisgICAgYXV0byBpdGVtQ291bnQgPSBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KHN0YXRlVmVjdG9yW2luZGV4KytdKS52
YWx1ZV9vcigwKTsKICAgICBpZiAoIWl0ZW1Db3VudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgYXV0byBzYXZlZEZvcm1TdGF0ZSA9IG1ha2VVbmlxdWU8U2F2ZWRGb3JtU3RhdGU+KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCmluZGV4IDc3N2M0ZTdm
NWJlOGI0NGY1MmYwZDQzODg4YWM2MjQ0NGE5N2QxMWIuLmNjNjVlYWM4YmIyNWJhOTExZDkzNzUy
Y2I5MzFkMTc1N2M2OGZhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rp
b24uY3BwCkBAIC01MSw3ICs1MSw3IEBAIGlubGluZSBIVE1MQWxsQ29sbGVjdGlvbjo6SFRNTEFs
bENvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0CiBPcHRpb25h
bDxWYXJpYW50PFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxB
bGxDb2xsZWN0aW9uOjpuYW1lZE9ySW5kZXhlZEl0ZW1Pckl0ZW1zKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWVPckluZGV4KSBjb25zdAogewogICAgIGlmIChuYW1lT3JJbmRleC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChhdXRvIGluZGV4ID0gSlNDOjpwYXJzZUluZGV4KCpuYW1lT3JJbmRleC5pbXBs
KCkpKQogICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8SFRNTENvbGxlY3Rpb24+LCBSZWZQ
dHI8RWxlbWVudD4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgaXRlbShpbmRleC52YWx1ZSgpKSB9IH07
CkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFsPFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiwgUmVmUHRyPEVsZW1lbnQ+Pj4gSFRNTEFsbENvbGxlY3Rpb246Om5hCiAgICAgYXV0byBuYW1l
ZEl0ZW1zID0gdGhpcy0+bmFtZWRJdGVtcyhuYW1lKTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAobmFtZWRJdGVtcy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0
dXJuIFZhcmlhbnQ8UmVmUHRyPEhUTUxDb2xsZWN0aW9uPiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJl
ZlB0cjxFbGVtZW50PiB7IFdURk1vdmUobmFtZWRJdGVtc1swXSkgfSB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IGVmMDU3NTg0YTg1YjcwOWUxYzlj
MWE0ODdlN2RiY2E2MjE0OGQzZWMuLmEzZDc2NTdkNjQ0N2RkMTMyNWI2ODQyYzQ0YjI5YmFjNGQy
ZWY0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCkBAIC00
MDUsNDggKzQwNSw0OCBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gSFRNTEFu
Y2hvckVsZW1lbnQ6OnBhcnNlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbgogICAgIGlmICghcGFnZSB8
fCBwYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpCiAgICAgICAgIHx8ICFkb2N1bWVudCgp
LnNldHRpbmdzKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmFibGVkKCkKICAgICAgICAgfHwg
IVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gaGFzQXR0cmlidXRpb25Tb3VyY2VJREF0dHIgPSBoYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGF0dHJpYnV0aW9uc291cmNlaWRBdHRyKTsKICAgICBhdXRvIGhhc0F0dHJp
YnV0aW9uRGVzdGluYXRpb25BdHRyID0gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uQXR0cik7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGlvblNv
dXJjZUlEQXR0ciAmJiAhaGFzQXR0cmlidXRpb25EZXN0aW5hdGlvbkF0dHIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBh
dXRvIGF0dHJpYnV0aW9uU291cmNlSURBdHRyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhdHRyaWJ1dGlvbnNvdXJjZWlkQXR0cik7CiAgICAgYXV0byBhdHRyaWJ1dGlvbkRlc3Rp
bmF0aW9uQXR0ciA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXR0cmlidXRpb25k
ZXN0aW5hdGlvbkF0dHIpOwogCiAgICAgaWYgKCFoYXNBdHRyaWJ1dGlvblNvdXJjZUlEQXR0ciB8
fCAhaGFzQXR0cmlidXRpb25EZXN0aW5hdGlvbkF0dHIgfHwgYXR0cmlidXRpb25Tb3VyY2VJREF0
dHIuaXNFbXB0eSgpIHx8IGF0dHJpYnV0aW9uRGVzdGluYXRpb25BdHRyLmlzRW1wdHkoKSkgewog
ICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVy
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJCb3RoIGF0dHJpYnV0aW9uc291cmNlaWQgYW5kIGF0
dHJpYnV0aW9uZGVzdGluYXRpb24gbmVlZCB0byBiZSBzZXQgZm9yIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgdG8gd29yay4iX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFJlZlB0cjxGcmFtZT4gZnJh
bWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmlzTWFp
bkZyYW1lKCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudCBpcyBvbmx5IHN1cHBvcnRlZCBpbiB0aGUgbWFpbiBmcmFtZS4iX3MpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KICAgICAKICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNlSUQgPSBwYXJzZUhUTUxOb25OZWdh
dGl2ZUludGVnZXIoYXR0cmlidXRpb25Tb3VyY2VJREF0dHIpOwogICAgIGlmICghYXR0cmlidXRp
b25Tb3VyY2VJRCkgewogICAgICAgICBkb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJhdHRyaWJ1dGlvbnNvdXJj
ZWlkIGlzIG5vdCBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIHdoaWNoIGlzIHJlcXVpcmVkIGZvciBQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50LiJfcyk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAogICAgIGlmIChh
dHRyaWJ1dGlvblNvdXJjZUlELnZhbHVlKCkgPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlSUQ6Ok1heEVudHJvcHkpIHsKICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtYWtlU3RyaW5n
KCJhdHRyaWJ1dGlvbnNvdXJjZWlkIG11c3QgaGF2ZSBhIG5vbi1uZWdhdGl2ZSB2YWx1ZSBsZXNz
IHRoYW4gb3IgZXF1YWwgdG8gIiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEOjpN
YXhFbnRyb3B5LCAiIGZvciBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50LiIpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBVUkwgZGVzdGluYXRpb25VUkwgeyBVUkwoKSwgYXR0cmlidXRpb25EZXN0aW5hdGlv
bkF0dHIgfTsKICAgICBpZiAoIWRlc3RpbmF0aW9uVVJMLmlzVmFsaWQoKSB8fCAhZGVzdGluYXRp
b25VUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCkuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgImF0dHJpYnV0aW9uZGVzdGluYXRpb24gY291bGQgbm90IGJlIGNvbnZlcnRlZCB0byBhIHZh
bGlkIEhUVFAtZmFtaWx5IFVSTC4iX3MpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFJlZ2lzdHJhYmxlRG9t
YWluIGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4geyBkb2N1bWVudCgpLnVybCgpIH07CiAgICAg
aWYgKGRvY3VtZW50UmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhkZXN0aW5hdGlvblVSTCkpIHsK
ICAgICAgICAgZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhl
ciwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiYXR0cmlidXRpb25kZXN0aW5hdGlvbiBjYW4gbm90
IGJlIHRoZSBzYW1lIHNpdGUgYXMgdGhlIGN1cnJlbnQgd2Vic2l0ZS4iX3MpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGF1dG8gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCB7IFNvdXJjZUlEKGF0dHJpYnV0aW9uU291cmNlSUQudmFsdWUoKSksIFNvdXJjZVNpdGUo
ZG9jdW1lbnRSZWdpc3RyYWJsZURvbWFpbiksIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlKGRl
c3RpbmF0aW9uVVJMKSB9OwpAQCAtNDU2LDcgKzQ1Niw3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50PiBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VQcml2YXRlQ2xpY2tNZWFzdXJl
bWVuCiAgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9Owog
ICAgICAgICBpZiAoIWVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZG9j
dW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiYXR0cmlidXRpb25zb3VyY2Vub25jZSB3YXMgbm90IHZhbGlkLiJfcyk7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5z
ZXRFcGhlbWVyYWxTb3VyY2VOb25jZShXVEZNb3ZlKGVwaGVtZXJhbE5vbmNlKSk7CiAgICAgfQpA
QCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2
ZW50JiBldmVudCkKICAgICBpZiAoc3lzdGVtUHJldmlld0luZm8uaXNQcmV2aWV3KSB7CiAgICAg
ICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQuZWxlbWVudElkZW50aWZpZXIgPSBkb2N1bWVu
dCgpLmlkZW50aWZpZXJGb3JFbGVtZW50KCp0aGlzKTsKICAgICAgICAgc3lzdGVtUHJldmlld0lu
Zm8uZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSBkb2N1bWVudCgpLmlkZW50aWZpZXIoKTsK
LSAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdlSWRlbnRpZmllciA9IGRv
Y3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmll
ciB7IH0pOworICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LndlYlBhZ2VJZGVudGlm
aWVyID0gZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdl
SWRlbnRpZmllciB7IH0pOwogICAgICAgICBpZiAoYXV0byogY2hpbGQgPSBmaXJzdEVsZW1lbnRD
aGlsZCgpKQogICAgICAgICAgICAgc3lzdGVtUHJldmlld0luZm8ucHJldmlld1JlY3QgPSBjaGls
ZC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgfQpAQCAtNjM3LDcgKzYzNyw3IEBAIFN0
cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncygpIGNvbnN0
CiBSZWZlcnJlclBvbGljeSBIVE1MQW5jaG9yRWxlbWVudDo6cmVmZXJyZXJQb2xpY3koKSBjb25z
dAogewogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucmVmZXJyZXJQb2xpY3lBdHRyaWJ1
dGVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xpY3lBdHRyKSwgUmVmZXJyZXJQb2xp
Y3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyk7CisgICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xpY3lBdHRyKSwgUmVmZXJyZXJQ
b2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZV9vcihSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJp
bmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCAzMDBl
MTgwZDc2NGE0NGNhYmRmMjUxYzUyNGUxZTRmNjA0NzMwYjQxLi5hZDNlMTE4MDk1MmMzNWUzN2Ey
YjFkZGYxYjc4Y2E5ODgyOTBhNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBIVE1MQXJlYUVsZW1lbnQ6OmlzRm9jdXNh
YmxlKCkgY29uc3QKICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+aXNWaXNpYmxlV2l0aG91dFJl
c29sdmluZ0Z1bGxTdHlsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4g
c3VwcG9ydHNGb2N1cygpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlT3IoMCkgPj0g
MDsKKyAgICByZXR1cm4gc3VwcG9ydHNGb2N1cygpICYmIHRhYkluZGV4U2V0RXhwbGljaXRseSgp
LnZhbHVlX29yKDApID49IDA7CiB9CiAgICAgCiB2b2lkIEhUTUxBcmVhRWxlbWVudDo6c2V0Rm9j
dXMoYm9vbCBzaG91bGRCZUZvY3VzZWQsIEZvY3VzVmlzaWJpbGl0eSB2aXNpYmlsaXR5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCBjMDIxMTZmOWY4MGRi
MjkxMjM5M2JjOTIyYWNlNmJhOTRjZjBkMjBjLi5iODMyYjYwMjdkNTUwNGJmZDA0ZDc5NGU5ZDk0
MjM5NDA5YjkxNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNw
cApAQCAtMjQ1LDIzICsyNDUsMjMgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAg
ICBpZiAobV9jb250ZXh0LT5pczJkKCkpIHsKICAgICAgICAgICAgIGlmICghaXMyZFR5cGUoY29u
dGV4dElkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4
dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVu
ZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+
IHsgJmRvd25jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkgfSB9Owog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fY29udGV4dC0+aXNCaXRtYXBSZW5kZXJlcigpKSB7
CiAgICAgICAgICAgICBpZiAoIWlzQml0bWFwUmVuZGVyZXJUeXBlKGNvbnRleHRJZCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxs
b3B0IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+
IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5n
Q29udGV4dD4geyBSZWZQdHI8SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0PiB7ICZkb3duY2Fz
dDxJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpIH0gfTsKICAgICAgICAg
fQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgICAgICBpZiAobV9jb250ZXh0LT5pc1dlYkdMKCkp
IHsKICAgICAgICAgICAgIGlmICghaXNXZWJHTFR5cGUoY29udGV4dElkKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6
Om51bGxvcHQgfTsKICAgICAgICAgICAgIGF1dG8gdmVyc2lvbiA9IHRvV2ViR0xWZXJzaW9uKGNv
bnRleHRJZCk7CiAgICAgICAgICAgICBpZiAoKHZlcnNpb24gPT0gV2ViR0xWZXJzaW9uOjpXZWJH
TDEpICE9IG1fY29udGV4dC0+aXNXZWJHTDEoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBzdGQ6Om51bGxvcHQgfTsKICAg
ICAgICAgICAgIGlmIChpczxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ+IHsgJmRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4o
Km1fY29udGV4dCkgfSB9OwogI2lmIEVOQUJMRShXRUJHTDIpCkBAIC0yNzQsMTMgKzI3NCwxMyBA
QCBFeGNlcHRpb25PcjxPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0Pj4gSFRNTENhbnZhc0VsZW1l
bnQ6OmdldENvbnRleHQoSlNDOjpKU0dsbwogI2lmIEVOQUJMRShXRUJHUFUpCiAgICAgICAgIGlm
IChtX2NvbnRleHQtPmlzV2ViR1BVKCkpIHsKICAgICAgICAgICAgIGlmICghaXNXZWJHUFVUeXBl
KGNvbnRleHRJZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0Nv
bnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICByZXR1cm4g
T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4geyAm
ZG93bmNhc3Q8R1BVQ2FudmFzQ29udGV4dD4oKm1fY29udGV4dCkgfSB9OwogICAgICAgICB9CiAj
ZW5kaWYKIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVy
biBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAog
ICAgIGlmIChpczJkVHlwZShjb250ZXh0SWQpKSB7CkBAIC0yOTAsNyArMjkwLDcgQEAgRXhjZXB0
aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0
MmQoY29udGV4dElkLCBXVEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgICAgIGlmICghY29udGV4dCkK
LSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVs
bG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsg
c3RkOjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0
PiB7IFJlZlB0cjxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+IHsgY29udGV4dCB9IH07CiAgICAg
fQogCkBAIC0zMDEsNyArMzAxLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29u
dGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAg
ICBhdXRvIGNvbnRleHQgPSBjcmVhdGVDb250ZXh0Qml0bWFwUmVuZGVyZXIoY29udGV4dElkLCBX
VEZNb3ZlKHNldHRpbmdzKSk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJl
dHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07
CiAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFJlZlB0cjxJbWFn
ZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ+IHsgY29udGV4dCB9IH07CiAgICAgfQogCkBAIC0zMTMs
NyArMzEzLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4+IEhUTUxD
YW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KIAogICAgICAgICBhdXRvIGNvbnRl
eHQgPSBjcmVhdGVDb250ZXh0V2ViR0wodG9XZWJHTFZlcnNpb24oY29udGV4dElkKSwgV1RGTW92
ZShhdHRyaWJ1dGVzKSk7CiAgICAgICAgIGlmICghY29udGV4dCkKLSAgICAgICAgICAgIHJldHVy
biBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9OworICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgc3RkOjpudWxsb3B0IH07CiAK
ICAgICAgICAgaWYgKGlzPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKmNvbnRleHQpKQogICAgICAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPFJlbmRlcmluZ0NvbnRleHQ+IHsgUmVmUHRyPFdlYkdMUmVu
ZGVyaW5nQ29udGV4dD4geyAmZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigqY29udGV4
dCkgfSB9OwpAQCAtMzI4LDEyICszMjgsMTIgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8UmVuZGVy
aW5nQ29udGV4dD4+IEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEpTQzo6SlNHbG8KICAg
ICBpZiAoaXNXZWJHUFVUeXBlKGNvbnRleHRJZCkpIHsKICAgICAgICAgYXV0byBjb250ZXh0ID0g
Y3JlYXRlQ29udGV4dFdlYkdQVShjb250ZXh0SWQpOwogICAgICAgICBpZiAoIWNvbnRleHQpCi0g
ICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4geyBXVEY6Om51bGxv
cHQgfTsKKyAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0
ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1cm4gT3B0aW9uYWw8UmVuZGVyaW5nQ29udGV4dD4g
eyBSZWZQdHI8R1BVQ2FudmFzQ29udGV4dD4geyBjb250ZXh0IH0gfTsKICAgICB9CiAjZW5kaWYK
IAotICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IFdURjo6bnVsbG9wdCB9
OworICAgIHJldHVybiBPcHRpb25hbDxSZW5kZXJpbmdDb250ZXh0PiB7IHN0ZDo6bnVsbG9wdCB9
OwogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29u
dGV4dChjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6ZGlkRHJhdyhjb25zdCBPcHRpb25hbDxGbG9hdFJlY3Q+JiByZWN0KQogICAg
IGNsZWFyQ29waWVkSW1hZ2UoKTsKICAgICAKICAgICBpZiAoIXJlY3QpIHsKLSAgICAgICAgbm90
aWZ5T2JzZXJ2ZXJzQ2FudmFzQ2hhbmdlZChXVEY6Om51bGxvcHQpOworICAgICAgICBub3RpZnlP
YnNlcnZlcnNDYW52YXNDaGFuZ2VkKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTcwOSwxMSArNzA5LDExIEBAIHN0YXRpYyBTdHJpbmcgdG9FbmNvZGluZ01pbWVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5RnJvbUpTVmFsdWUoSlNDOjpKU1ZhbHVlIHF1YWxpdHlWYWx1ZSkKIHsKICAgICBpZiAoIXF1
YWxpdHlWYWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHF1YWxpdHlOdW1iZXIgPSBx
dWFsaXR5VmFsdWUuYXNOdW1iZXIoKTsKICAgICBpZiAocXVhbGl0eU51bWJlciA8IDAgfHwgcXVh
bGl0eU51bWJlciA+IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcXVhbGl0eU51bWJlcjsKIH0KQEAgLTk1
MCw3ICs5NTAsNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcigp
IGNvbnN0CiAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBzaG91bGRBY2NlbGVyYXRlKHNpemUo
KSkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQ7CiAgICAgLy8gRklYTUU6IEFkZCBhIG5ldyBzZXR0aW5nIGZvciBEaXNwbGF5TGlzdCBk
cmF3aW5nIG9uIGNhbnZhcy4KLSAgICBhdXRvIHVzZURpc3BsYXlMaXN0ID0gbV91c2VzRGlzcGxh
eUxpc3REcmF3aW5nLnZhbHVlT3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJh
d2luZ0VuYWJsZWQoKSkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlz
cGxheUxpc3Q6Ok5vOworICAgIGF1dG8gdXNlRGlzcGxheUxpc3QgPSBtX3VzZXNEaXNwbGF5TGlz
dERyYXdpbmcudmFsdWVfb3IoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWQoKSkgPyBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxh
eUxpc3Q6Ok5vOwogCiAgICAgYXV0byBbY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXRdID0gWyZdIHsK
ICAgICAgICAgaWYgKG1fY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApp
bmRleCAwMGJmNjdhZWQ1NjVhYzkwZjQ2ZDhmYTczOGRmN2E1MjkzNzYwZGU2Li5hYmY0NDBmYWZj
YWZkMDBmN2MyNmYzYTViMWQzZDY4ZWViN2IzODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9j
dW1lbnQuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUmVmPERvY3VtZW50UGFyc2VyPiBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZVBhcnNlcigpCiBPcHRpb25hbDxWYXJpYW50PFJlZlB0cjxXaW5kb3dQcm94
eT4sIFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPj4+IEhUTUxEb2N1bWVu
dDo6bmFtZWRJdGVtKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUpCiB7CiAgICAgaWYgKG5hbWUuaXNO
dWxsKCkgfHwgIWhhc0RvY3VtZW50TmFtZWRJdGVtKCpuYW1lLmltcGwoKSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoVU5MSUtFTFkoZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKm5h
bWUuaW1wbCgpKSkpIHsKICAgICAgICAgYXV0byBjb2xsZWN0aW9uID0gZG9jdW1lbnROYW1lZEl0
ZW1zKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5NjNlNThiNTc4
MTcxYzVjYThiYTg3MTJlOWEyZjM0MmQwMjA4MTU3Li5hZGJhMWU2YjM0M2UyOTMzYTU5YzU2ZGM1
ZDdmMjgwNzQ5NWMwNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtNDc1
LDcgKzQ3NSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhCiAgICAgICAgIGlmIChhdXRvIG9w
dGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlKSkKICAgICAgICAgICAgIHNl
dFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4LnZhbHVlKCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtNjMwLDEwICs2MzAsMTAgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6YXBwbHlBc3BlY3RSYXRpb0Zyb21XaWR0aEFuZEhlaWdodEF0dHJpYnV0ZXNUb1N0eWxlKE11
dGFibGVTdHkKICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5hc3BlY3RSYXRpb09mSW1n
RnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkb3Vi
bGUgd2lkdGggPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpKS52YWx1ZU9yKC0xKTsKKyAgICBkb3VibGUg
d2lkdGggPSBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIpKS52YWx1ZV9vcigtMSk7CiAgICAgaWYgKHdpZHRo
IDwgMCkKICAgICAgICAgcmV0dXJuOwotICAgIGRvdWJsZSBoZWlnaHQgPSBwYXJzZVZhbGlkSFRN
TEZsb2F0aW5nUG9pbnROdW1iZXIoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWln
aHRBdHRyKSkudmFsdWVPcigtMSk7CisgICAgZG91YmxlIGhlaWdodCA9IHBhcnNlVmFsaWRIVE1M
RmxvYXRpbmdQb2ludE51bWJlcihhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhlaWdo
dEF0dHIpKS52YWx1ZV9vcigtMSk7CiAgICAgaWYgKGhlaWdodCA8IDApCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+
PiBwYXJzZUxlZ2FjeUNvbG9yVmFsdWUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgLy8gQW4g
ZW1wdHkgc3RyaW5nIGRvZXNuJ3QgYXBwbHkgYSBjb2xvci4KICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHN0cmluZyA9IHN0cmluZy5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01h
dGNoZWRDaGFyYWN0ZXJzKGlzSFRNTFNwYWNlPFVDaGFyPik7CiAgICAgaWYgKHN0cmluZy5pc0Vt
cHR5KCkpCkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhf
dD4+IHBhcnNlTGVnYWN5Q29sb3JWYWx1ZShTdHJpbmdWaWV3IHN0cmluZykKIAogICAgIC8vICJ0
cmFuc3BhcmVudCIgZG9lc24ndCBhcHBseSBhIGNvbG9yIGVpdGhlci4KICAgICBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidHJhbnNwYXJlbnQiKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChhdXRvIG5hbWVkQ29sb3IgPSBDU1NQYXJzZXI6OnBhcnNlTmFtZWRDb2xvcihzdHJpbmcp
KQogICAgICAgICByZXR1cm4gbmFtZWRDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRF
bGVtZW50LmNwcAppbmRleCAwOTJkY2QxOTNiZTgwMzg5ZDdkMTlkZTQzMmMwOWVhMTQyNTFiOGYw
Li40ZWI2NTE5MTBlNDY4ZGM3ZDZlZWNhZjE5NTNlMTQ2MGQwNmY1OTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIGJv
b2wgcGFyc2VGb250U2l6ZShjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGludCYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gU3RlcCA4Ci0g
ICAgaW50IHZhbHVlID0gcGFyc2VJbnRlZ2VyPGludD4oZGlnaXRzKS52YWx1ZU9yKDApOworICAg
IGludCB2YWx1ZSA9IHBhcnNlSW50ZWdlcjxpbnQ+KGRpZ2l0cykudmFsdWVfb3IoMCk7CiAKICAg
ICAvLyBTdGVwIDkKICAgICBpZiAobW9kZSA9PSBSZWxhdGl2ZVBsdXMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IGFmMWNk
MGVhNGUxZjljNDc0YmVmODFjZTk3MzY5MzhjYzI3MTQyNDAuLmYzNTNlOWE5YmVmODE3MDI5NDVk
Yzc1ODA3MWIxZTgxYmUyOWZiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC01OSw3ICs1OSw3IEBAIE9wdGlvbmFsPFZh
cmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxpc3Q+LCBSZWZQdHI8RWxlbWVudD4+PiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjCiAgICAgYXV0byBuYW1lZEl0ZW1zID0gdGhpcy0+bmFtZWRJdGVtcyhuYW1l
KTsKIAogICAgIGlmIChuYW1lZEl0ZW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobmFtZWRJdGVt
cy5zaXplKCkgPT0gMSkKICAgICAgICAgcmV0dXJuIFZhcmlhbnQ8UmVmUHRyPFJhZGlvTm9kZUxp
c3Q+LCBSZWZQdHI8RWxlbWVudD4+IHsgUmVmUHRyPEVsZW1lbnQ+IHsgV1RGTW92ZShuYW1lZEl0
ZW1zWzBdKSB9IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRl
eCA1NTVmMTU0MWMwMDhhYjZmMWFhOGZjNGNlZDc0MmVmMGVmNTBkMWZhLi4xZTZlZTEwMDFiODBj
OTNkNzEzNmE3NTNlZDU3NDViYmY5YTQ4YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8
UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVtZW50Pj4+IEhUTUxGb3JtRWxlbWVudDo6bmFtZWQK
ICAgICBhdXRvIG5hbWVkSXRlbXMgPSBuYW1lZEVsZW1lbnRzKG5hbWUpOwogCiAgICAgaWYgKG5h
bWVkSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQog
ICAgICAgICByZXR1cm4gVmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIFJlZlB0cjxFbGVt
ZW50Pj4geyBSZWZQdHI8RWxlbWVudD4geyBXVEZNb3ZlKG5hbWVkSXRlbXNbMF0pIH0gfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAppbmRleCA3OTgyMTk0OWU1
Y2FmZDEzZDU3ZTU2MTk5ZGExYWE0YmI0ZDY0MDdmLi4wYzViZDdlNGRkODMzOTMyZWM3NzAyODBh
ZDI0ODE3ODMzMGRmYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50
LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAgICAgICAg
IGlmICghaW52YWxpZFRva2Vucy5pc051bGwoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
ICJFcnJvciB3aGlsZSBwYXJzaW5nIHRoZSAnc2FuZGJveCcgYXR0cmlidXRlOiAiICsgaW52YWxp
ZFRva2Vucyk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGFsbG93QXR0ciB8fCBuYW1lID09IGFs
bG93ZnVsbHNjcmVlbkF0dHIgfHwgbmFtZSA9PSB3ZWJraXRhbGxvd2Z1bGxzY3JlZW5BdHRyKSB7
Ci0gICAgICAgIG1fZmVhdHVyZVBvbGljeSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9mZWF0
dXJlUG9saWN5ID0gc3RkOjpudWxsb3B0OwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBsb2FkaW5n
QXR0cikgewogICAgICAgICAvLyBBbGxvdyBsb2FkaW5nPWVhZ2VyIHRvIGxvYWQgdGhlIGZyYW1l
IGltbWVkaWF0ZWx5IGlmIHRoZSBsYXp5IGxvYWQgd2FzIHN0YXJ0ZWQsIGJ1dAogICAgICAgICAv
LyBkbyBub3QgYWxsb3cgdGhlIHJldmVyc2Ugc2l0dWF0aW9uIHNpbmNlIHRoZSBlYWdlciBsb2Fk
IGlzIGFscmVhZHkgc3RhcnRlZC4KQEAgLTE0Myw3ICsxNDMsNyBAQCBSZWZlcnJlclBvbGljeSBI
VE1MSUZyYW1lRWxlbWVudDo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogICAgIGlmIChtX2xhenlM
b2FkRnJhbWVPYnNlcnZlcikKICAgICAgICAgcmV0dXJuIG1fbGF6eUxvYWRGcmFtZU9ic2VydmVy
LT5yZWZlcnJlclBvbGljeSgpOwogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucmVmZXJy
ZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwYXJzZVJlZmVycmVy
UG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xpY3lBdHRy
KSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZU9y
KFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIHJldHVybiBwYXJzZVJlZmVy
cmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xpY3lB
dHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1
ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBSZWZlcnJlclBv
bGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCmluZGV4IDJhZTdmMTdkMDUyNjNjNjcyOGUxMjJiYTRmODBiMzUzZmJmMzk2NGEuLjdm
ODc4OGU4NzRhZTFlMGE4M2UzMDM0YjMzMzAzN2FlYzlmMGYwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjQ3LDggKzI0Nyw4IEBAIHZvaWQgSFRNTElt
YWdlRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyCiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xk
VmFsdWUsIG5ld1ZhbHVlLCByZWFzb24pOwogCiAgICAgaWYgKG5hbWUgPT0gcmVmZXJyZXJwb2xp
Y3lBdHRyICYmIGRvY3VtZW50KCkuc2V0dGluZ3MoKS5yZWZlcnJlclBvbGljeUF0dHJpYnV0ZUVu
YWJsZWQoKSkgewotICAgICAgICBhdXRvIG9sZFJlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJl
clBvbGljeShvbGRWYWx1ZSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0
cmlidXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7Ci0gICAgICAgIGF1
dG8gbmV3UmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KG5ld1ZhbHVlLCBSZWZl
cnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlT3IoUmVmZXJy
ZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKKyAgICAgICAgYXV0byBvbGRSZWZlcnJlclBvbGljeSA9
IHBhcnNlUmVmZXJyZXJQb2xpY3kob2xkVmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZl
cnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5n
KTsKKyAgICAgICAgYXV0byBuZXdSZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3ko
bmV3VmFsdWUsIFJlZmVycmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSku
dmFsdWVfb3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICAgICAgaWYgKG9sZFJl
ZmVycmVyUG9saWN5ICE9IG5ld1JlZmVycmVyUG9saWN5KQogICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoUmVsZXZhbnRNdXRh
dGlvbjo6WWVzKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY3Jvc3NvcmlnaW5BdHRyKSB7CkBA
IC03OTUsNyArNzk1LDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OnJlZmVycmVyUG9saWN5
Rm9yQmluZGluZ3MoKSBjb25zdAogUmVmZXJyZXJQb2xpY3kgSFRNTEltYWdlRWxlbWVudDo6cmVm
ZXJyZXJQb2xpY3koKSBjb25zdAogewogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkucmVm
ZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwYXJzZVJlZmVy
cmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xpY3lB
dHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1
ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIHJldHVybiBwYXJzZVJl
ZmVycmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJwb2xp
Y3lBdHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52
YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IGIzYzIwOTNmMDhjMGFiMjYzMGI5ZjVlMmFiODA2Mzk3ZjVmMGEyZjku
LmQ5MTE4ODdhNDZlYjZiYjE0MDgyODBhYmNkOTAzN2U1MjU3Mzg0M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIE9wdGlvbmFs
PGRvdWJsZT4gSFRNTElucHV0RWxlbWVudDo6bGlzdE9wdGlvblZhbHVlQXNEb3VibGUoY29uc3Qg
SFRNTE9wdGlvbkVsZW1lCiB7CiAgICAgYXV0byBvcHRpb25WYWx1ZSA9IG9wdGlvbkVsZW1lbnQu
dmFsdWUoKTsKICAgICBpZiAoIWlzVmFsaWRWYWx1ZShvcHRpb25WYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc2FuaXRpemVWYWx1ZShvcHRpb25WYWx1
ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGVkMDEy
YzcxODJmZTMzNWIzZDkxNzQ2YzZkZTZhOTU4YTU5ZjczMTMuLmYwZTAyYzk3MWRjMzU5ODdhNmJj
NGNhMmMzMjI4N2QzYTE3NDliNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCBTdHJpbmcgSFRNTExpbmtFbGVtZW50OjpyZWZlcnJl
clBvbGljeUZvckJpbmRpbmdzKCkgY29uc3QKIFJlZmVycmVyUG9saWN5IEhUTUxMaW5rRWxlbWVu
dDo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogewogICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdz
KCkucmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBwYXJz
ZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJyZXJw
b2xpY3lBdHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRl
KS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAgIHJldHVybiBw
YXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24ocmVmZXJy
ZXJwb2xpY3lBdHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmli
dXRlKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgIHJldHVybiBS
ZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IGMwN2EyYzZjMTZiYTlkNGJhNjkxYTNmNThhMjI2NjdkZTA3
ODY2NDEuLmJkMTliYmJhMTA3ZDJkYTc2OTZiMzUwNmRiM2MxZDJhZjY5MTNhYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNjY1MCw3ICs2NjUwLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcigpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKIAogICAgIG1fcGxheWVyID0gTWVkaWFQbGF5ZXI6OmNyZWF0
ZSgqdGhpcyk7CiAgICAgbV9wbGF5ZXItPnNldEJ1ZmZlcmluZ1BvbGljeShtX2J1ZmZlcmluZ1Bv
bGljeSk7Ci0gICAgbV9wbGF5ZXItPnNldFByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGUobV9vdmVy
cmlkZUR5bmFtaWNSYW5nZU1vZGUudmFsdWVPcihwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlKGRv
Y3VtZW50KCkudmlldygpKSkpOworICAgIG1fcGxheWVyLT5zZXRQcmVmZXJyZWREeW5hbWljUmFu
Z2VNb2RlKG1fb3ZlcnJpZGVEeW5hbWljUmFuZ2VNb2RlLnZhbHVlX29yKHByZWZlcnJlZER5bmFt
aWNSYW5nZU1vZGUoZG9jdW1lbnQoKS52aWV3KCkpKSk7CiAgICAgbV9wbGF5ZXItPnNldE11dGVk
KGVmZmVjdGl2ZU11dGVkKCkpOwogICAgIHNjaGVkdWxlUGxheWJhY2tDb250cm9sc01hbmFnZXJV
cGRhdGUoKTsKIApAQCAtNzIxNCw3ICs3MjE0LDcgQEAgUmVmUHRyPFZpZGVvUGxheWJhY2tRdWFs
aXR5PiBIVE1MTWVkaWFFbGVtZW50OjpnZXRWaWRlb1BsYXliYWNrUXVhbGl0eSgpCiAgICAgUmVm
UHRyPERPTVdpbmRvdz4gZG9tV2luZG93ID0gZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKICAgICBk
b3VibGUgdGltZXN0YW1wID0gZG9tV2luZG93ID8gZG9tV2luZG93LT5ub3dUaW1lc3RhbXAoKS5t
aWxsaXNlY29uZHMoKSA6IDA7CiAKLSAgICBhdXRvIG1ldHJpY3MgPSBtX3BsYXllciA/IG1fcGxh
eWVyLT52aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBh
dXRvIG1ldHJpY3MgPSBtX3BsYXllciA/IG1fcGxheWVyLT52aWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3MoKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIW1ldHJpY3MpCiAgICAgICAgIHJldHVy
biBWaWRlb1BsYXliYWNrUXVhbGl0eTo6Y3JlYXRlKHRpbWVzdGFtcCwgeyB9KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCmluZGV4IGM5NGFhNzljNmI5YWE3MDFkMjkz
ZGJmN2E5OTdlMGU5NWQ4MGZiMDAuLmEzYzA3MjBhNjcxMDI4ZWY3M2Y4MWI4MTgyODYxYTIyZTc0
OGFjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKQEAgLTExMSw3
ICsxMTEsNyBAQCB2b2lkIEhUTUxNZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09IGNvbnRlbnRBdHRyKSB7Ci0gICAgICAgIG1fY29udGVudENvbG9yID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2NvbnRlbnRDb2xvciA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcHJvY2Vz
cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0
RWxlbWVudC5jcHAKaW5kZXggYmU4Y2I1YTk4Zjg3YmEzMWI4NjYyM2I2Y2RiMDI2OGUzYzBlYzgy
Yy4uN2M4YjkzNTQxMWUwYzk5NTBjNjM4YmM0ZmNkYjUyMjk2NTgxMGNiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAvLyBNYXli
ZSB3ZSBzaG91bGQgcHV0IHRoaXMgaW50byB0aGUgaGVhZGVyIGZpbGUgZm9yIEV4cGVjdGVkIGFu
ZCBnaXZlIGl0IGEgYmV0dGVyIG5hbWUuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBF
PiBpbmxpbmUgT3B0aW9uYWw8VD4gb3B0aW9uYWxWYWx1ZShFeHBlY3RlZDxULCBFPiYmIGV4cGVj
dGVkKQogewotICAgIHJldHVybiBleHBlY3RlZCA/IE9wdGlvbmFsPFQ+KFdURk1vdmUoZXhwZWN0
ZWQudmFsdWUoKSkpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBleHBlY3RlZCA/IE9wdGlv
bmFsPFQ+KFdURk1vdmUoZXhwZWN0ZWQudmFsdWUoKSkpIDogc3RkOjpudWxsb3B0OwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
TGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmlu
ZGV4IGYzMDVjYTU5Yjk5NjFkNmVjOTJkNjI0YTFhODg2NjQ4OGYwM2NiZWQuLjJmNGMzOTcyMGVj
ZTg0YWYyYzI4YWI5NzBiNjdkM2ZjZWExY2I2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9M
aXN0RWxlbWVudC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhU
TUxPTGlzdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBSZWY8SFRNTE9M
aXN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0g
ICAgaW50IHN0YXJ0Rm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0LnZhbHVlT3Io
MSk7IH0KKyAgICBpbnQgc3RhcnRGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQu
dmFsdWVfb3IoMSk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXJ0Rm9yQmluZGlu
Z3MoaW50KTsKIAogICAgIC8vIEZJWE1FOiBUaGUgcmVhc29uIHN0YXJ0KCkgZG9lcyBub3QgdHJp
Z2dlciBsYXlvdXQgaXMgYmVjYXVzZSBpdCBpcyBjYWxsZWQKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgaW50IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydCA/IG1fc3RhcnQu
dmFsdWUoKSA6IChtX2lzUmV2ZXJzZWQgPyBpdGVtQ291bnQoKSA6IDEpOyB9CiAgICAgYm9vbCBp
c1JldmVyc2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc1JldmVyc2VkOyB9Ci0gICAgdm9pZCBpdGVt
Q291bnRDaGFuZ2VkKCkgeyBtX2l0ZW1Db3VudCA9IFdURjo6bnVsbG9wdDsgfQorICAgIHZvaWQg
aXRlbUNvdW50Q2hhbmdlZCgpIHsgbV9pdGVtQ291bnQgPSBzdGQ6Om51bGxvcHQ7IH0KIAogcHJp
dmF0ZToKICAgICBIVE1MT0xpc3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAppbmRleCBiYmJj
ODQwMmIyZTU1NTBkNGFkYWUxZTZjNDgxNDc1MjY1MjM4OWZmLi40OWZkMjhkMGQ5MjJiODE1NmU0
YTE5ZGY0OWJhYTIxMmQwODljODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRF
bGVtZW50LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIFN0cmluZyBIVE1MU2NyaXB0RWxlbWVudDo6
cmVmZXJyZXJQb2xpY3lGb3JCaW5kaW5ncygpIGNvbnN0CiBSZWZlcnJlclBvbGljeSBIVE1MU2Ny
aXB0RWxlbWVudDo6cmVmZXJyZXJQb2xpY3koKSBjb25zdAogewogICAgIGlmIChkb2N1bWVudCgp
LnNldHRpbmdzKCkucmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybiBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24o
cmVmZXJyZXJwb2xpY3lBdHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5
QXR0cmlidXRlKS52YWx1ZU9yKFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZyk7CisgICAgICAg
IHJldHVybiBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24ocmVmZXJyZXJwb2xpY3lBdHRyKSwgUmVmZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9s
aWN5QXR0cmlidXRlKS52YWx1ZV9vcihSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAg
IHJldHVybiBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNTkxZmY0ZjM4ODY3MGRiOTMyOGMzNjNi
ZTFkZmI3MTcwNTI3MmZiZS4uMzRkYWViOGRjNDNmZDJmNjNmMDA4NDJjN2E4NzNjYWJmNzkwZDA3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQ2OSw3
ICs0NjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3Ro
KHVuc2lnbmVkIG5ld0xlbmd0aCkKIAogICAgIGlmIChkaWZmIDwgMCkgeyAvLyBBZGQgZHVtbXkg
ZWxlbWVudHMuCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRkKEhU
TUxPcHRpb25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSkucHRyKCksIFdURjo6bnVsbG9wdCk7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFkZChIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpLnB0cigpLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9IHdoaWxlICgrK2RpZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50
LmNwcAppbmRleCBhMmMwYjkyN2U0ZGJmMzFmODFjNGMwOGI2ZDM5NDlhZDgwZGIwM2IwLi5hYzQy
NGRlNmRmMzVhYmMzMzFkN2E1MThmNGYxM2MyMzg4MTM5OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgSFRNTFNv
dXJjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpCiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KTsKICAgICBpZiAobmFtZSA9PSBzcmNzZXRBdHRyIHx8IG5hbWUgPT0gc2l6ZXNBdHRyIHx8IG5h
bWUgPT0gbWVkaWFBdHRyIHx8IG5hbWUgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgaWYgKG5hbWUg
PT0gbWVkaWFBdHRyKQotICAgICAgICAgICAgbV9jYWNoZWRQYXJzZWRNZWRpYUF0dHJpYnV0ZSA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fY2FjaGVkUGFyc2VkTWVkaWFBdHRyaWJ1dGUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnRO
b2RlKCkpOwogICAgICAgICBpZiAobV9zaG91bGRDYWxsU291cmNlc0NoYW5nZWQpCiAgICAgICAg
ICAgICBkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1lbnQ+KCpwYXJlbnQpLnNvdXJjZXNDaGFuZ2Vk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBm
MzYyNGFjYmYzNjM5YWEzZDJkZjQyN2NhZjJjMGNmMzlmYmYyOTVkLi41YzZmOGViMGVmMDc1NmJl
MDJjN2NlYTEzYjVlODFjMjhmODZmZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50JgogICAgIC8vIElmIHRoZSB0ZXh0IGZpZWxkIGhhcyBubyBmb2N1cywgd2UgZG9uJ3QgbmVl
ZCB0byB0YWtlIGFjY291bnQgb2YgdGhlCiAgICAgLy8gc2VsZWN0aW9uIGxlbmd0aC4gVGhlIHNl
bGVjdGlvbiBpcyB0aGUgc291cmNlIG9mIHRleHQgZHJhZy1hbmQtZHJvcCBpbgogICAgIC8vIHRo
YXQgY2FzZSwgYW5kIG5vdGhpbmcgaW4gdGhlIHRleHQgZmllbGQgd2lsbCBiZSByZW1vdmVkLgot
ICAgIGF1dG8gc2VsZWN0aW9uUmFuZ2UgPSBmb2N1c2VkKCkgPyBkb2N1bWVudCgpLmZyYW1lKCkt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkgOiBXVEY6Om51bGxv
cHQ7CisgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IGZvY3VzZWQoKSA/IGRvY3VtZW50KCkuZnJh
bWUoKS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSA6IHN0ZDo6
bnVsbG9wdDsKICAgICB1bnNpZ25lZCBzZWxlY3Rpb25MZW5ndGggPSBzZWxlY3Rpb25SYW5nZSA/
IGNvbXB1dGVMZW5ndGhGb3JTdWJtaXNzaW9uKHBsYWluVGV4dCgqc2VsZWN0aW9uUmFuZ2UpKSA6
IDA7CiAgICAgQVNTRVJUKGN1cnJlbnRMZW5ndGggPj0gc2VsZWN0aW9uTGVuZ3RoKTsKICAgICB1
bnNpZ25lZCBiYXNlTGVuZ3RoID0gY3VycmVudExlbmd0aCAtIHNlbGVjdGlvbkxlbmd0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggNWIyMzE1NWUwYWU4ZWVhYTk1NDFmZGVhNTkxNDUxMWRlOWJiZjMxZS4uNGNhMDNkYjg0
OTJjZWVhZThmMmM2YTg3NjU5ZDVmYzc5YTIxM2E5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBA
QCBzdGF0aWMgdm9pZCBzZXRDb250YWluZXJBbmRPZmZzZXRGb3JSYW5nZShOb2RlKiBub2RlLCB1
bnNpZ25lZCBvZmZzZXQsIE5vZGUqJiBjbwogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25zdAogewogICAgIGlmICghcmVuZGVy
ZXIoKSB8fCAhaXNUZXh0RmllbGQoKSB8fCAhaGFzQ2FjaGVkU2VsZWN0aW9uKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICB1bnNpZ25lZCBzdGFydCA9IG1fY2FjaGVkU2VsZWN0aW9uU3RhcnQ7CiAgICAgdW5zaWduZWQg
ZW5kID0gbV9jYWNoZWRTZWxlY3Rpb25FbmQ7CkBAIC00NjMsNyArNDYzLDcgQEAgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBjb25z
dAogICAgIEFTU0VSVChzdGFydCA8PSBlbmQpOwogICAgIGF1dG8gaW5uZXJUZXh0ID0gaW5uZXJU
ZXh0RWxlbWVudCgpOwogICAgIGlmICghaW5uZXJUZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpbm5lclRl
eHQtPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuIFNpbXBsZVJhbmdlIHsgeyAqaW5uZXJU
ZXh0LCAwIH0sIHsgKmlubmVyVGV4dCwgMCB9IH07CkBAIC00ODksNyArNDg5LDcgQEAgT3B0aW9u
YWw8U2ltcGxlUmFuZ2U+IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZWxlY3Rpb24oKSBj
b25zdAogICAgIH0KIAogICAgIGlmICghc3RhcnROb2RlIHx8ICFlbmROb2RlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIFNpbXBsZVJhbmdlIHsgeyAqc3RhcnROb2RlLCBzdGFydCB9LCB7ICplbmROb2RlLCBl
bmQgfSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA4ZjAzYzZmZmM3
ODZmYjcwNTM0MmFlNTY1NGJhZDUyNDg4NTk3NzAxLi4wYjRiMTgwNjY0NjA0NDM5MjgxMWU4ZDEw
ZjE3M2RmZWQ5ODk4NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCiB7CiAgICAgV1RGOjpzd2l0Y2hPbihz
b3VyY2UsCiAgICAgICAgIFsmXSAoYXV0byYgc3BlY2lmaWNTb3VyY2UpIHsKLSAgICAgICAgICAg
IGNyZWF0ZVByb21pc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3BlY2lmaWNTb3VyY2UsIFdU
Rk1vdmUob3B0aW9ucyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAg
ICAgICBjcmVhdGVQcm9taXNlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHNwZWNpZmljU291cmNl
LCBXVEZNb3ZlKG9wdGlvbnMpLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocHJvbWlzZSkpOwogICAg
ICAgICB9CiAgICAgKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
SW50UmVjdD4gY3JvcHBlZFNvdXJjZVJlY3RhbmdsZVdpdGhGb3JtYXR0aW5nKEludFNpemUgaW5w
dXRTaQogICAgIC8vICAgIE90aGVyd2lzZSBsZXQgc291cmNlUmVjdGFuZ2xlIGJlIGEgcmVjdGFu
Z2xlIHdob3NlIGNvcm5lcnMgYXJlIHRoZSBmb3VyIHBvaW50cwogICAgIC8vICAgICgwLDApLCAo
d2lkdGggb2YgaW5wdXQsIDApLCAod2lkdGggb2YgaW5wdXQsIGhlaWdodCBvZiBpbnB1dCksICgw
LCBoZWlnaHQgb2YKICAgICAvLyAgICBpbnB1dCkuCi0gICAgYXV0byBzb3VyY2VSZWN0YW5nbGUg
PSByZWN0LnZhbHVlT3IoSW50UmVjdCB7IDAsIDAsIGlucHV0U2l6ZS53aWR0aCgpLCBpbnB1dFNp
emUuaGVpZ2h0KCkgfSk7CisgICAgYXV0byBzb3VyY2VSZWN0YW5nbGUgPSByZWN0LnZhbHVlX29y
KEludFJlY3QgeyAwLCAwLCBpbnB1dFNpemUud2lkdGgoKSwgaW5wdXRTaXplLmhlaWdodCgpIH0p
OwogCiAgICAgLy8gNC4gQ2xpcCBzb3VyY2VSZWN0YW5nbGUgdG8gdGhlIGRpbWVuc2lvbnMgb2Yg
aW5wdXQuCiAgICAgc291cmNlUmVjdGFuZ2xlLmludGVyc2VjdChJbnRSZWN0IHsgMCwgMCwgaW5w
dXRTaXplLndpZHRoKCksIGlucHV0U2l6ZS5oZWlnaHQoKSB9KTsKQEAgLTg0OCw3ICs4NDgsNyBA
QCBJbWFnZUJpdG1hcDo6fkltYWdlQml0bWFwKCkKIAogT3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNr
aW5nPiBJbWFnZUJpdG1hcDo6dGFrZUltYWdlQml0bWFwQmFja2luZygpCiB7Ci0gICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJu
IHN0ZDo6ZXhjaGFuZ2UobV9iYWNraW5nU3RvcmUsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OnRha2VJbWFnZUJ1ZmZlcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bWFnZURhdGEuaAppbmRleCAxNjRmODgyY2RmN2MwZjg5MTIxNmJhNjhkY2E0MTc1NjVmYmI1Mjc0
Li5jYTEyOGVkYmZlYWY4YmU3MjExNTlkZmUzNzVhZGFlZTI0MTc5N2MxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEYXRhLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoT3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRhPiBjcmVhdGUoY29u
c3QgSW50U2l6ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VEYXRh
PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIFJlZjxVaW50OENsYW1wZWRBcnJheT4mJiwgUHJlZGVm
aW5lZENvbG9yU3BhY2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWY8SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFsaXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25l
ZCBwaXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xvclNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBP
cHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBXVEY6Om51bGxvcHQpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8SW1hZ2VEYXRhPj4gY3JlYXRlVW5pbml0aWFs
aXplZCh1bnNpZ25lZCByb3dzLCB1bnNpZ25lZCBwaXhlbHNQZXJSb3csIFByZWRlZmluZWRDb2xv
clNwYWNlIGRlZmF1bHRDb2xvclNwYWNlLCBPcHRpb25hbDxJbWFnZURhdGFTZXR0aW5ncz4gPSBz
dGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
SW1hZ2VEYXRhPj4gY3JlYXRlKHVuc2lnbmVkIHN3LCB1bnNpZ25lZCBzaCwgT3B0aW9uYWw8SW1h
Z2VEYXRhU2V0dGluZ3M+KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPEltYWdlRGF0YT4+IGNyZWF0ZShSZWY8VWludDhDbGFtcGVkQXJyYXk+JiYsIHVuc2lnbmVk
IHN3LCBPcHRpb25hbDx1bnNpZ25lZD4gc2gsIE9wdGlvbmFsPEltYWdlRGF0YVNldHRpbmdzPik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5NmRkZmVjYzFiYzk4MGVhZDM0YzU5
ZTVhZTA5ZjkyYzdjMGEwYTczLi40ZDNhNzhhMmM3ZTNiMWMzNWVlODcyZTZjZGZiODJkMDA4MzYw
YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC04NjgsNyArODY4LDcgQEAgdm9p
ZCBJbnB1dFR5cGU6OmRhdGFMaXN0TWF5SGF2ZUNoYW5nZWQoKQogT3B0aW9uYWw8RGVjaW1hbD4g
SW5wdXRUeXBlOjpmaW5kQ2xvc2VzdFRpY2tNYXJrVmFsdWUoY29uc3QgRGVjaW1hbCYpCiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TGF6eUxvYWRGcmFtZU9ic2VydmVyLmNwcAppbmRleCBjYjEzMmI1MTQ2ZDg2MzlhMmZhYzE0MjZl
MzJjZWY3NTQ4OWY3YzU4Li43YzJiYTE1YTUxNGU0M2RkOTcyMjc1MTA5ZTNkYjk0MmU4NTIzMmI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhenlMb2FkRnJhbWVPYnNlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEZyYW1lT2JzZXJ2ZXIuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIEludGVyc2VjdGlvbk9ic2VydmVyKiBMYXp5TG9hZEZyYW1lT2JzZXJ2
ZXI6OmludGVyc2VjdGlvbk9ic2VydmVyKERvY3VtZW50JiBkb2N1CiB7CiAgICAgaWYgKCFtX29i
c2VydmVyKSB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBMYXp5RnJhbWVMb2FkSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJDYWxsYmFjazo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgSW50ZXJzZWN0
aW9uT2JzZXJ2ZXI6OkluaXQgb3B0aW9ucyB7IFdURjo6bnVsbG9wdCwgZW1wdHlTdHJpbmcoKSwg
eyB9IH07CisgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBzdGQ6
Om51bGxvcHQsIGVtcHR5U3RyaW5nKCksIHsgfSB9OwogICAgICAgICBhdXRvIG9ic2VydmVyID0g
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUob3B0aW9ucykpOwogICAgICAgICBpZiAob2JzZXJ2ZXIuaGFzRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTGF6eUxvYWRJbWFnZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGF6
eUxvYWRJbWFnZU9ic2VydmVyLmNwcAppbmRleCBhZGU5YTdjNTUzN2VlOTI2YTA3YTRlZGVjYjBj
ZWIwYjljNGM4MTNjLi5mNmM2NDIwZGNiNzdkNTNjNmJhMGUyMjNmM2JjYTA0N2RjNGU5OGVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhenlMb2FkSW1hZ2VPYnNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYXp5TG9hZEltYWdlT2JzZXJ2ZXIuY3BwCkBAIC04
NCw3ICs4NCw3IEBAIEludGVyc2VjdGlvbk9ic2VydmVyKiBMYXp5TG9hZEltYWdlT2JzZXJ2ZXI6
OmludGVyc2VjdGlvbk9ic2VydmVyKERvY3VtZW50JiBkb2N1CiB7CiAgICAgaWYgKCFtX29ic2Vy
dmVyKSB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBMYXp5SW1hZ2VMb2FkSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJDYWxsYmFjazo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXI6OkluaXQgb3B0aW9ucyB7IFdURjo6bnVsbG9wdCwgZW1wdHlTdHJpbmcoKSwgeyB9
IH07CisgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyOjpJbml0IG9wdGlvbnMgeyBzdGQ6Om51
bGxvcHQsIGVtcHR5U3RyaW5nKCksIHsgfSB9OwogICAgICAgICBhdXRvIG9ic2VydmVyID0gSW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUob3B0aW9ucykpOwogICAgICAgICBpZiAob2JzZXJ2ZXIuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IGY0NjdmNGYxMzhkN2U3NTVkZmM2NWFhZTJkOTFi
ZTBjNmY4ZWIzMjAuLmNiMDVkOTBjMDllMjBkOWMzOGRmMGVhOWMxMzlmMmY2YWQxNzhkMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApAQCAt
MjU5LDcgKzI1OSw3IEBAIGJvb2wgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6cGFyc2VOUFRUaW1l
KGNvbnN0IExDaGFyKiB0aW1lU3RyaW5nLCB1bnNpZ25lZCBsZW5nCiAgICAgLy8gbnB0LXNzICAg
ICAgICA9ICAgMkRJR0lUICAgICAgOyAwLTU5CiAKICAgICBTdHJpbmcgZGlnaXRzMSA9IGNvbGxl
Y3REaWdpdHModGltZVN0cmluZywgbGVuZ3RoLCBvZmZzZXQpOwotICAgIGludCB2YWx1ZTEgPSBw
YXJzZUludGVnZXI8aW50PihkaWdpdHMxKS52YWx1ZU9yKDApOworICAgIGludCB2YWx1ZTEgPSBw
YXJzZUludGVnZXI8aW50PihkaWdpdHMxKS52YWx1ZV9vcigwKTsKICAgICBpZiAob2Zmc2V0ID49
IGxlbmd0aCB8fCB0aW1lU3RyaW5nW29mZnNldF0gPT0gJywnKSB7CiAgICAgICAgIHRpbWUgPSBN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUodmFsdWUxKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggZDllOGViN2VmNTli
NWJiN2Q1ODNhMGUwOGZmMzAwZTc3MjRlOTkzYi4uNGU4ZmMyNmNjNzIxMjE3MWI2YWZlNGVkMDMz
YmIwNDhkNGEwNWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5D
YW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApA
QCAtMjIxLDcgKzIyMSw3IEBAIEV4Y2VwdGlvbk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmlu
Z0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6OmdldENvbnRleHQoSlNDCiAgICAgaWYgKGNvbnRl
eHRUeXBlID09IFJlbmRlcmluZ0NvbnRleHRUeXBlOjpfMmQpIHsKICAgICAgICAgaWYgKG1fY29u
dGV4dCkgewogICAgICAgICAgICAgaWYgKCFpczxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+KCptX2NvbnRleHQpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxs
b3B0IH0gfTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB7IHN0ZDo6bnVsbG9wdCB9IH07CiAg
ICAgICAgICAgICByZXR1cm4geyB7IFJlZlB0cjxPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ+IHsgJmRvd25jYXN0PE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1f
Y29udGV4dCkgfSB9IH07CiAgICAgICAgIH0KIApAQCAtMjMxLDcgKzIzMSw3IEBAIEV4Y2VwdGlv
bk9yPE9wdGlvbmFsPE9mZnNjcmVlblJlbmRlcmluZ0NvbnRleHQ+PiBPZmZzY3JlZW5DYW52YXM6
OmdldENvbnRleHQoSlNDCiAKICAgICAgICAgbV9jb250ZXh0ID0gbWFrZVVuaXF1ZTxPZmZzY3Jl
ZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ+KCp0aGlzLCBXVEZNb3ZlKHNldHRpbmdzKSk7CiAg
ICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEY6Om51bGxv
cHQgfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBzdGQ6Om51bGxvcHQgfSB9OwogCiAgICAg
ICAgIHJldHVybiB7IHsgUmVmUHRyPE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4g
eyAmZG93bmNhc3Q8T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0
KSB9IH0gfTsKICAgICB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8
T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4dD4+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dChK
U0MKICAgICAgICAgICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0
KSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB7IFJlZlB0cjxXZWJHTDJSZW5kZXJpbmdDb250
ZXh0PiB7ICZkb3duY2FzdDxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSB9IH0g
fTsKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIHsgeyBXVEY6Om51bGxvcHQgfSB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgeyBzdGQ6Om51bGxvcHQgfSB9OwogICAgICAgICB9CiAKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUudm0oKSk7CkBAIC0yNTMs
NyArMjUzLDcgQEAgRXhjZXB0aW9uT3I8T3B0aW9uYWw8T2Zmc2NyZWVuUmVuZGVyaW5nQ29udGV4
dD4+IE9mZnNjcmVlbkNhbnZhczo6Z2V0Q29udGV4dChKU0MKIAogICAgICAgICBjcmVhdGVDb250
ZXh0V2ViR0woY29udGV4dFR5cGUsIFdURk1vdmUoYXR0cmlidXRlcykpOwogICAgICAgICBpZiAo
IW1fY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiB7IHsgV1RGOjpudWxsb3B0IH0gfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IHsgc3RkOjpudWxsb3B0IH0gfTsKIAogI2lmIEVOQUJMRShXRUJH
TDIpCiAgICAgICAgIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KSkK
QEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgU3RyaW5nIHRvRW5jb2RpbmdNaW1lVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eUZyb21E
b3VibGUoZG91YmxlIHF1YWxpdHlOdW1iZXIpCiB7CiAgICAgaWYgKCEocXVhbGl0eU51bWJlciA+
PSAwICYmIHF1YWxpdHlOdW1iZXIgPD0gMSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcXVhbGl0eU51bWJl
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggNzkwNGJmNDE2
ZDBmMzcyNTA1NmRjYzgxNjNkNzVjNzgwMDU0ZjdjNC4uNGZmNTBjYjM5ZWQ0ZjMzMjc4OGQ4ZDk1
ZGE5MDUwODNmMTRhNThmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
QEAgLTQwMSw3ICs0MDEsNyBAQCBPcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlucHV0VHlwZTo6Zmlu
ZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQogewogICAgIHVwZGF0
ZVRpY2tNYXJrVmFsdWVzKCk7CiAgICAgaWYgKCFtX3RpY2tNYXJrVmFsdWVzLnNpemUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHNpemVfdCBsZWZ0ID0gMDsKICAgICBzaXplX3QgcmlnaHQgPSBtX3RpY2tNYXJrVmFs
dWVzLnNpemUoKTsKQEAgLTQyNCw4ICs0MjQsOCBAQCBPcHRpb25hbDxEZWNpbWFsPiBSYW5nZUlu
cHV0VHlwZTo6ZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVlKGNvbnN0IERlY2ltYWwmIHZhbHVlKQog
ICAgICAgICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8RGVjaW1h
bD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBtYWtlT3B0aW9uYWwobV90aWNrTWFya1ZhbHVlc1tt
aWRkbGUgLSAxXSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgT3B0aW9uYWw8RGVjaW1hbD4gY2xvc2Vz
dFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpID8gbWFrZU9wdGlvbmFs
KG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8
RGVjaW1hbD4gY2xvc2VzdExlZnQgPSBtaWRkbGUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwobV90aWNr
TWFya1ZhbHVlc1ttaWRkbGUgLSAxXSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8RGVj
aW1hbD4gY2xvc2VzdFJpZ2h0ID0gbWlkZGxlICE9IG1fdGlja01hcmtWYWx1ZXMuc2l6ZSgpID8g
c3RkOjptYWtlX29wdGlvbmFsKG1fdGlja01hcmtWYWx1ZXNbbWlkZGxlXSkgOiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWNsb3Nlc3RMZWZ0KQogICAgICAgICByZXR1cm4gY2xvc2VzdFJpZ2h0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UeXBlQWhlYWQuY3BwCmluZGV4IDkwNjlkMGYzNTdkOTgyZGJjZWZkNzBm
N2M1NDg5MmNiZTQxYzQyNmUuLjVhZTAyZWU4NjRmYTg2ZDEzMzE3NTgwYzhkNTczZmFiODU3NDE2
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVHlwZUFoZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1R5cGVBaGVhZC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBpbnQg
VHlwZUFoZWFkOjpoYW5kbGVFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCwgTWF0Y2hNb2RlRmxh
Z3MgbWF0Y2hNb2RlKQogICAgIH0KIAogICAgIGlmIChtYXRjaE1vZGUgJiBNYXRjaEluZGV4KSB7
Ci0gICAgICAgIGludCBpbmRleCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGlu
dD4obV9idWZmZXIpLnZhbHVlT3IoMCk7CisgICAgICAgIGludCBpbmRleCA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4obV9idWZmZXIpLnZhbHVlX29yKDApOwogICAgICAg
ICBpZiAoaW5kZXggPiAwICYmIGluZGV4IDw9IG9wdGlvbkNvdW50KQogICAgICAgICAgICAgcmV0
dXJuIGluZGV4IC0gMTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VS
TERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9u
LmNwcAppbmRleCAwNDk4NjI4ZjhlNmE2OWI2MmY0YWI4ZDUyMDBiYTE2OWE1ZDQ2OTllLi4xZTcx
ODcxNWRjODA0OWE5MmU2YmRhMjhjZDcxMGI4YjU4YjczMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTE3MiwxMiArMTcyLDEyIEBAIHN0YXRpYyBPcHRp
b25hbDxPcHRpb25hbDx1aW50MTZfdD4+IHBhcnNlUG9ydChTdHJpbmdWaWV3IHN0cmluZywgU3Ry
aW5nVmlldyBwcm90CiB7CiAgICAgYXV0byBkaWdpdHNPbmx5ID0gc3RyaW5nLmxlZnQoY291bnRB
U0NJSURpZ2l0cyhzdHJpbmcpKTsKICAgICBpZiAoZGlnaXRzT25seS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPHVpbnQxNl90PiB7IHN0ZDo6bnVsbG9wdCB9OwogICAgIGF1dG8gcG9y
dCA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oZGlnaXRzT25seSk7CiAgICAgaWYgKCFwb3J0KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmIChXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwgcHJvdG9jb2wp
KQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8dWludDE2X3Q+IHsgV1RGOjpudWxsb3B0IH07Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbDx1aW50MTZfdD4geyBzdGQ6Om51bGxvcHQgfTsKICAgICBy
ZXR1cm4geyB7ICpwb3J0IH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxTZWFyY2hQYXJhbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxTZWFyY2hQYXJh
bXMuY3BwCmluZGV4IGE4ZTU3ZjM0MjM0YTAyNjdhZTg2NWM3NWExY2I2YjllMGExOTg5YTYuLjBj
ODhhMDVlN2RiNDQxMGVhYzNkMGM1MmY1ZDk4ZDkyNTYxNzIyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMU2VhcmNoUGFyYW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFNlYXJjaFBhcmFtcy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBPcHRpb25hbDxXVEY6
OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+IFVSTFNlYXJjaFBhcmFtczo6SXRlcmF0b3I6
Om5leHQoKQogewogICAgIGF1dG8mIHBhaXJzID0gbV90YXJnZXQtPnBhaXJzKCk7CiAgICAgaWYg
KG1faW5kZXggPj0gcGFpcnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgcGFpciA9IHBhaXJzW21f
aW5kZXgrK107CiAgICAgcmV0dXJuIFdURjo6S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiB7
IHBhaXIua2V5LCBwYWlyLnZhbHVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1BhdHRlcm4uY3BwCmluZGV4IDBhYTFmMTIxYmY2ODU3Njc0ODRhNWQ2YjJlMjc5MzViZDg2
MTY2ODMuLjhmMTkzODJjYjIwM2QyZTQxMWJjYTk1N2E2OTFiMWZhYzk4YTJjYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCkBAIC03OCw3ICs3OCw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1BhdHRlcm46OnNldFRyYW5zZm9ybShET01NYXRy
aXgyREluaXQmJiBtYXRyaXhJbml0KQogICAgIGlmIChjaGVja1ZhbGlkLmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gY2hlY2tWYWxpZC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBt
X3BhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSh7IG1hdHJpeEluaXQuYS52YWx1ZU9y
KDEpLCBtYXRyaXhJbml0LmIudmFsdWVPcigwKSwgbWF0cml4SW5pdC5jLnZhbHVlT3IoMCksIG1h
dHJpeEluaXQuZC52YWx1ZU9yKDEpLCBtYXRyaXhJbml0LmUudmFsdWVPcigwKSwgbWF0cml4SW5p
dC5mLnZhbHVlT3IoMCkgfSk7CisgICAgbV9wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zv
cm0oeyBtYXRyaXhJbml0LmEudmFsdWVfb3IoMSksIG1hdHJpeEluaXQuYi52YWx1ZV9vcigwKSwg
bWF0cml4SW5pdC5jLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmQudmFsdWVfb3IoMSksIG1hdHJp
eEluaXQuZS52YWx1ZV9vcigwKSwgbWF0cml4SW5pdC5mLnZhbHVlX29yKDApIH0pOwogICAgIHJl
dHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggZWIwMTgyODNkOGY4MGU2MWZjZmM2NDExZDE4
YzE1YjIzMjc3MDZmYy4uNDlmZWUyZTkxM2Y3MDJlMWZiYzdhYzA3YzFkNzk5MDc1NjllZTU3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmgKQEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogCiAgICAgQ2FudmFzRGlyZWN0
aW9uIGRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcm
IHRleHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6
bnVsbG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAg
ICB2b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0
aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHN0cm9rZVRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4g
bWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogcHJpdmF0ZToKQEAgLTYxLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2V0Rm9udFdpdGhvdXRVcGRhdGluZ1N0eWxlKGNvbnN0IFN0cmlu
ZyYpOwogCi0gICAgdm9pZCBkcmF3VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxv
YXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBXVEY6
Om51bGxvcHQpOworICAgIHZvaWQgZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQs
IGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0g
c3RkOjpudWxsb3B0KTsKIAogICAgIHZvaWQgZHJhd0ZvY3VzSWZOZWVkZWRJbnRlcm5hbChjb25z
dCBQYXRoJiwgRWxlbWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IGU3YzAyODVm
NzU1NDU0ODAzYjE0MGM5MjBiZDRiMmFmZGZlNjFmNGUuLmQ3OTBjNjJiZWRiMmNhOGZkODA5NGQ5
NmEwYWQxNzIyNGJkN2M1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xMDYyLDcgKzEw
NjIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZpbGxJbnRlcm5hbChj
b25zdCBQYXRoJiBwYXRoLCBDYW52YXNGaWxsUnVsZQogICAgICAgICBjLT5maWxsUGF0aChwYXRo
KTsKICAgICAKICAgICBpZiAoaXNFbnRpcmVCYWNraW5nU3RvcmVEaXJ0eSgpKQotICAgICAgICBk
aWREcmF3KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRpZERyYXcoc3RkOjpudWxsb3B0KTsKICAg
ICBlbHNlIGlmIChyZXBhaW50RW50aXJlQ2FudmFzKQogICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CiAgICAgZWxzZQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpzdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoKQogICAgICAg
ICBjLT5zdHJva2VQYXRoKHBhdGgpOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2luZ1N0b3JlRGly
dHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBkaWREcmF3KHN0
ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UgewpAQCAtMTE2NSw3ICsxMTY1LDcgQEAg
Ym9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwo
Y29uc3QgUGF0aCYgcGF0aCwgZmxvYXQKICAgICBpZiAoIXN0YXRlLmhhc0ludmVydGlibGVUcmFu
c2Zvcm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdHJhbnNmb3JtZWRQb2lu
dCA9IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CisgICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0g
c3RhdGUudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9y
bWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE4MCw3ICsxMTgwLDcgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRo
JiBwYXRoLCBmbG8KICAgICBpZiAoIXN0YXRlLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxv
YXRQb2ludCh4LCB5KSk7CisgICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUudHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQ
b2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgp
KSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTI3MSw3ICsxMjcxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpmaWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQK
ICAgICAgICAgYy0+ZmlsbFJlY3QocmVjdCk7CiAKICAgICBpZiAoaXNFbnRpcmVCYWNraW5nU3Rv
cmVEaXJ0eSgpKQotICAgICAgICBkaWREcmF3KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRpZERy
YXcoc3RkOjpudWxsb3B0KTsKICAgICBlbHNlIGlmIChyZXBhaW50RW50aXJlQ2FudmFzKQogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgZWxzZQpAQCAtMTMxMSw3ICsxMzExLDcg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpzdHJva2VSZWN0KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG8KICAgICAgICAgYy0+c3Ryb2tlUmVjdChyZWN0LCBz
dGF0ZSgpLmxpbmVXaWR0aCk7CiAKICAgICBpZiAoaXNFbnRpcmVCYWNraW5nU3RvcmVEaXJ0eSgp
KQotICAgICAgICBkaWREcmF3KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRpZERyYXcoc3RkOjpu
dWxsb3B0KTsKICAgICBlbHNlIGlmIChyZXBhaW50RW50aXJlQ2FudmFzKQogICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CiAgICAgZWxzZSB7CkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9j
dW1lbnQmIGRvY3VtZW50LCBDYQogICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIG9wdGlvbnMpOwogCiAgICAgaWYgKGlzRW50
aXJlQmFja2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOwor
ICAgICAgICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGly
ZUNhbnZhcykKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTE2
NTMsNyArMTY1Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBzb3VyY2VDYW52CiAgICAgICAgIGMtPmRyYXdJ
bWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29t
cG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogCiAgICAgaWYgKGlzRW50aXJlQmFja2lu
Z1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBk
aWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZhcykK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTE2ODksNyArMTY4
OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgICAgIGMtPmRyYXdOYXRpdmVJbWFn
ZSgqaW1hZ2UsIEZsb2F0U2l6ZSh2aWRlby52aWRlb1dpZHRoKCksIHZpZGVvLnZpZGVvSGVpZ2h0
KCkpLCBkc3RSZWN0LCBzcmNSZWN0KTsKIAogICAgICAgICBpZiAoaXNFbnRpcmVCYWNraW5nU3Rv
cmVEaXJ0eSgpKQotICAgICAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgICAgICBlbHNlIGlmIChyZWN0Q29udGFpbnND
YW52YXMoZHN0UmVjdCkpCiAgICAgICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAg
ICAgIGVsc2UKQEAgLTE3MDgsNyArMTcwOCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAg
ICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7CiAKICAgICBpZiAoaXNFbnRpcmVCYWNraW5nU3RvcmVE
aXJ0eSgpKQotICAgICAgICBkaWREcmF3KFdURjo6bnVsbG9wdCk7CisgICAgICAgIGRpZERyYXco
c3RkOjpudWxsb3B0KTsKICAgICBlbHNlCiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAKQEAg
LTE3NTksNyArMTc1OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmRyYXdJbWFnZShJbWFnZUJpdG1hcCYgaW1hZ2VCaXRtCiAgICAgICAgIGMtPmRy
YXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogCiAgICAgaWYgKGlzRW50aXJlQmFj
a2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAg
ICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZh
cykKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKQEAgLTIwNjcsNyAr
MjA2Nyw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZGlkRHJhdyhPcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3QsIE9wdGlvblNldDxECiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghcmVjdCkgewotICAgICAgICBjYW52YXNCYXNlKCkuZGlkRHJhdyhXVEY6Om51bGxvcHQp
OworICAgICAgICBjYW52YXNCYXNlKCkuZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmRpZERyYXcoT3B0aW9uYWw8RmxvYXRSZWN0PiByZWN0LCBPcHRpb25T
ZXQ8RAogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGFwcGx5IHRoZSBjbGlwIGJlY2F1c2Ug
d2UgaGF2ZSBubyB3YXkgb2YgcmVhZGluZyB0aGUgY2xpcCBvdXQgb2YgdGhlIEdyYXBoaWNzQ29u
dGV4dC4KIAogICAgIGlmIChtX2RpcnR5UmVjdC5jb250YWlucyhkaXJ0eVJlY3QpKQotICAgICAg
ICBjYW52YXNCYXNlKCkuZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAgICBjYW52YXNCYXNl
KCkuZGlkRHJhdyhzdGQ6Om51bGxvcHQpOwogICAgIGVsc2UgewogICAgICAgICBtX2RpcnR5UmVj
dC51bml0ZShkaXJ0eVJlY3QpOwogICAgICAgICBjYW52YXNCYXNlKCkuZGlkRHJhdyhtX2RpcnR5
UmVjdCk7CkBAIC0yNTQwLDcgKzI1NDAsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2U6OmRyYXdUZXh0VW5jaGVja2VkKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGZsbwogICAg
ICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENh
c2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogCiAgICAgaWYgKGlzRW50aXJlQmFj
a2luZ1N0b3JlRGlydHkoKSkKLSAgICAgICAgZGlkRHJhdyhXVEY6Om51bGxvcHQpOworICAgICAg
ICBkaWREcmF3KHN0ZDo6bnVsbG9wdCk7CiAgICAgZWxzZSBpZiAocmVwYWludEVudGlyZUNhbnZh
cykKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuaAppbmRleCAyZDU0OTMwN2UyY2VlOGJlY2RkZjFhMGQwMzRmNGIyODcyMzc2YjFjLi4wYzll
ZDFjZTk1YTc4NmJkOGJhMTlkYjAyOWY4OTNkMzFhNDJkYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5o
CkBAIC0xNDEsMTEgKzE0MSwxMSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKICAgICB2b2lkIHJlc2V0VHJhbnNmb3JtKCk7
CiAKLSAgICB2b2lkIHNldFN0cm9rZUNvbG9yKGNvbnN0IFN0cmluZyYgY29sb3IsIE9wdGlvbmFs
PGZsb2F0PiBhbHBoYSA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRTdHJva2VDb2xvcihj
b25zdCBTdHJpbmcmIGNvbG9yLCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBzdGQ6Om51bGxvcHQp
OwogICAgIHZvaWQgc2V0U3Ryb2tlQ29sb3IoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSA9
IDEuMCk7CiAgICAgdm9pZCBzZXRTdHJva2VDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBi
LCBmbG9hdCBhKTsKIAotICAgIHZvaWQgc2V0RmlsbENvbG9yKGNvbnN0IFN0cmluZyYgY29sb3Is
IE9wdGlvbmFsPGZsb2F0PiBhbHBoYSA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRGaWxs
Q29sb3IoY29uc3QgU3RyaW5nJiBjb2xvciwgT3B0aW9uYWw8ZmxvYXQ+IGFscGhhID0gc3RkOjpu
dWxsb3B0KTsKICAgICB2b2lkIHNldEZpbGxDb2xvcihmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFs
cGhhID0gMS4wZik7CiAgICAgdm9pZCBzZXRGaWxsQ29sb3IoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSk7CiAKQEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
aWxsUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAg
ICB2b2lkIHN0cm9rZVJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhl
aWdodCk7CiAKLSAgICB2b2lkIHNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLCBjb25zdCBTdHJpbmcmIGNvbG9yID0gU3RyaW5nKCksIE9wdGlvbmFsPGZsb2F0
PiBhbHBoYSA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBzZXRTaGFkb3coZmxvYXQgd2lkdGgs
IGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgY29uc3QgU3RyaW5nJiBjb2xvciA9IFN0cmluZygp
LCBPcHRpb25hbDxmbG9hdD4gYWxwaGEgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2V0U2hh
ZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZl
bCwgZmxvYXQgYWxwaGEgPSAxLjApOwogICAgIHZvaWQgc2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0
IGEpOwogCkBAIC0zMDIsOSArMzAyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIFN0cmlu
ZyBub3JtYWxpemVTcGFjZXMoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIGRyYXdUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxm
bG9hdD4gbWF4V2lkdGggPSBXVEY6Om51bGxvcHQpOwotICAgIGJvb2wgY2FuRHJhd1RleHQoZmxv
YXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBXVEY6
Om51bGxvcHQpOwotICAgIHZvaWQgZHJhd1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYsIGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgZmlsbCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RG
OjpudWxsb3B0KTsKKyAgICB2b2lkIGRyYXdUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQg
eCwgZmxvYXQgeSwgYm9vbCBmaWxsLCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51
bGxvcHQpOworICAgIGJvb2wgY2FuRHJhd1RleHQoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBmaWxs
LCBPcHRpb25hbDxmbG9hdD4gbWF4V2lkdGggPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgZHJh
d1RleHRVbmNoZWNrZWQoY29uc3QgVGV4dFJ1biYsIGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgZmls
bCwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIFJlZjxU
ZXh0TWV0cmljcz4gbWVhc3VyZVRleHRJbnRlcm5hbChjb25zdCBUZXh0UnVuJik7CiAgICAgUmVm
PFRleHRNZXRyaWNzPiBtZWFzdXJlVGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggYjBjNjI1OTQy
YjJiNTBiODFiNDg2MGQ0Y2JlYjllOGEyY2Y4MWY5ZC4uOTBhMGVjNTdkZDBkNWVlNWZkYjQ3MGJh
OGZlODc2MTgxNzkwYzUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0
eWxlLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5
bGUoQ3VycmVudENvbG9yIGNvbG9yKQogQ2FudmFzU3R5bGUgQ2FudmFzU3R5bGU6OmNyZWF0ZUZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgQ2FudmFzQmFzZSYgY2FudmFzQmFz
ZSkKIHsKICAgICBpZiAoaXNDdXJyZW50Q29sb3JTdHJpbmcoY29sb3JTdHJpbmcpKQotICAgICAg
ICByZXR1cm4gQ3VycmVudENvbG9yIHsgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiBD
dXJyZW50Q29sb3IgeyBzdGQ6Om51bGxvcHQgfTsKIAogICAgIENvbG9yIGNvbG9yID0gcGFyc2VD
b2xvcihjb2xvclN0cmluZywgY2FudmFzQmFzZSk7CiAgICAgaWYgKCFjb2xvci5pc1ZhbGlkKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGIxNjgxOTIxZDhlMzc1ODExYTZmZTlh
NTFhMThhNzBlNzkxZmY1YTEuLjQxM2RlOTIyOTk3OGU4ZjZlYWUxOGQ5MTk2MGZiYjY4YzQyMGU2
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0Rm9udChjb25zdCBTdHJpbmcmKTsKICAgICBDYW52YXNEaXJlY3Rp
b24gZGlyZWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBmaWxsVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIGZsb2F0IHgsIGZsb2F0IHksIE9wdGlvbmFsPGZsb2F0PiBtYXhXaWR0aCA9IFdURjo6bnVs
bG9wdCk7Ci0gICAgdm9pZCBzdHJva2VUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwg
ZmxvYXQgeSwgT3B0aW9uYWw8ZmxvYXQ+IG1heFdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICB2
b2lkIGZpbGxUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgT3B0aW9u
YWw8ZmxvYXQ+IG1heFdpZHRoID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHN0cm9rZVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBPcHRpb25hbDxmbG9hdD4gbWF4
V2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZjxUZXh0TWV0cmljcz4gbWVhc3VyZVRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9Q
YXRoMkQuY3BwCmluZGV4IDM4NWU5ZGFiZjVkY2JjYTNiZDIyZmVhYTk1Zjc4NGQyZjQ3OTRiMzEu
LjIxNWI3ZDNiYWQyYjg1NDMzMWY2NGIzZjFjMDMzNDVmMmMyY2UwNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1BhdGgyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvUGF0aDJELmNwcApAQCAtNDIsNyArNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBQYXRoMkQ6OmFkZFBhdGgoUGF0aDJEJiBwYXRoLCBET01NYXRyaXgyREluaXQmJiBtYXRyaXhJ
bml0KQogICAgIGlmIChjaGVja1ZhbGlkLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
Y2hlY2tWYWxpZC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBtX3BhdGguYWRkUGF0aChwYXRo
LnBhdGgoKSwgeyBtYXRyaXhJbml0LmEudmFsdWVPcigxKSwgbWF0cml4SW5pdC5iLnZhbHVlT3Io
MCksIG1hdHJpeEluaXQuYy52YWx1ZU9yKDApLCBtYXRyaXhJbml0LmQudmFsdWVPcigxKSwgbWF0
cml4SW5pdC5lLnZhbHVlT3IoMCksIG1hdHJpeEluaXQuZi52YWx1ZU9yKDApIH0pOworICAgIG1f
cGF0aC5hZGRQYXRoKHBhdGgucGF0aCgpLCB7IG1hdHJpeEluaXQuYS52YWx1ZV9vcigxKSwgbWF0
cml4SW5pdC5iLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmMudmFsdWVfb3IoMCksIG1hdHJpeElu
aXQuZC52YWx1ZV9vcigxKSwgbWF0cml4SW5pdC5lLnZhbHVlX29yKDApLCBtYXRyaXhJbml0LmYu
dmFsdWVfb3IoMCkgfSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCmluZGV4IGVmN2QxMDgy
OTc0OGFkMjdlYzhhODY2N2E0OWQ0NDgwZTVmNWYzYTguLjRiM2E0MTk2OGUzNTQyOTY5NjY2ODAx
MjAzOWYxZmU3MWFmNTAxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWMKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5
UDM7CiAjZW5kaWYKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiZTlkOTMzZDNiMjhkYjU2NjQ3NmFjNDkx
ZjRhMWJiMjRmZmQzMjQ5Li40NDdjMTIwYWQxNDI4ZTYzOWNiYzI1NThmYzYzZmQ5YThjZTIxZWM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcApAQCAtMjUxOSw3ICsyNTE5LDcgQEAgV2ViR0xBbnkgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdDR0x1aW50
IGkKIE9wdGlvbmFsPFZlY3RvcjxHQ0dMdWludD4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm1JbmRpY2VzKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG5hbWVzKQogewogICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiZ2V0
VW5pZm9ybUluZGljZXMiLCAmcHJvZ3JhbSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0
VW5pZm9ybUluZGljZXMocHJvZ3JhbS5vYmplY3QoKSwgbmFtZXMpOwogfQogCkBAIC0yNzExLDcg
KzI3MTEsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKaW5kZXggN2I1NzdhNDk0MzMy
YmJlMDU4MWE5YmVjODM4MzViYjhhNDNiYWE0Yy4uM2UzNGExOGY3ZjZmNjk0ZTRjYWZlZTVlMTE1
MzdmZjU0MDU2YWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIE9wdGlvbmFsPHVuc2lnbmVkPiBXZWJHTEJ1ZmZlcjo6
Z2V0Q2FjaGVkTWF4SW5kZXgoR0NHTGVudW0gdHlwZSkKICAgICAgICAgaWYgKGNhY2hlLnR5cGUg
PT0gdHlwZSkKICAgICAgICAgICAgIHJldHVybiBjYWNoZS5tYXhJbmRleDsKICAgICB9Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChHQ0dMZW51bSB0eXBlLCB1bnNpZ25lZCB2
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IGM5YTk0NGM2ZTEwMjlmNDRkM2QwNGYyNzMzNTIwYTkxMGVjNDhk
MjQuLmZhNjc1ODNkZTNhMjA2YjEwOGNhNDAyNzY5YTdiY2U1NmQyZDBiNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApA
QCAtMjIwLDcgKzIyMCw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKIHsKICAg
ICBpZiAoaXNDb250ZXh0TG9zdCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCmluZGV4IGJjYmM4OTI0YTlmNDgyZWNjMDVlMTQ0MjA5M2Y3ZDE2N2Iz
Yzc5NzcuLjFjYWYwNDZhNTEwNTRmOTcwOTQwM2NlNmVjYzZhM2QzNWRmZGI5MDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCkBAIC0xMjM5LDcgKzEyMzksNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb1Bp
eGVsQnVmZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGNsZWFySWZDb21wb3NpdGVkKENsZWFyQ2FsbGVyT3RoZXIpOwogICAgIHJldHVybiBtX2NvbnRl
eHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZXIoKTsKIH0KQEAgLTI4NjksNyAr
Mjg2OSw3IEBAIFJlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldEFjdGl2ZVVuaWZvcm0oV2ViR0xQcm9ncmFtCiBPcHRpb25hbDxWZWN0b3I8UmVmUHRy
PFdlYkdMU2hhZGVyPj4+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hh
ZGVycyhXZWJHTFByb2dyYW0mIHByb2dyYW0pCiB7CiAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJv
Z3JhbU9yU2hhZGVyKCJnZXRBdHRhY2hlZFNoYWRlcnMiLCAmcHJvZ3JhbSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBj
b25zdCBHQ0dMZW51bSBzaGFkZXJUeXBlc1tdID0gewogICAgICAgICBHcmFwaGljc0NvbnRleHRH
TDo6VkVSVEVYX1NIQURFUiwKQEAgLTI5NDEsNyArMjk0MSw3IEBAIFdlYkdMQW55IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldEJ1ZmZlclBhcmFtZXRlcihHQ0dMZW51bSB0YXJnZXQsIEdD
R0xlbnVtCiBPcHRpb25hbDxXZWJHTENvbnRleHRBdHRyaWJ1dGVzPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiB7CiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEFsc28sIHdlIG5lZWQgdG8gZW5mb3JjZSByZXF1
ZXN0ZWQgdmFsdWVzIG9mICJmYWxzZSIgZm9yIGRlcHRoCiAgICAgLy8gYW5kIHN0ZW5jaWwsIHJl
Z2FyZGxlc3Mgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHVuZGVybHlpbmcKQEAgLTUzMTQsNyAr
NTMxNCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVUZXhGdW5j
RGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIFRlCiAKICAgICBpZiAoIXZhbGlkYXRlU2V0
dGFibGVUZXhJbnRlcm5hbEZvcm1hdChmdW5jdGlvbk5hbWUsIGZvcm1hdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJUeXBlKGZ1bmN0aW9uTmFt
ZSwgdHlwZSwgcGl4ZWxzID8gT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5VHlwZT4ocGl4ZWxzLT5n
ZXRUeXBlKCkpIDogV1RGOjpudWxsb3B0KSkKKyAgICBpZiAoIXZhbGlkYXRlQXJyYXlCdWZmZXJU
eXBlKGZ1bmN0aW9uTmFtZSwgdHlwZSwgcGl4ZWxzID8gT3B0aW9uYWw8SlNDOjpUeXBlZEFycmF5
VHlwZT4ocGl4ZWxzLT5nZXRUeXBlKCkpIDogc3RkOjpudWxsb3B0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgdW5zaWduZWQgdG90YWxCeXRlc1JlcXVpcmVkLCBza2lwQnl0ZXM7CkBA
IC03NDQzLDcgKzc0NDMsNyBAQCBPcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0NHTHVpbnQgbnVtVmVydAogICAgICAgICAgICAg
bV92ZXJ0ZXhBdHRyaWIwVXNlZEJlZm9yZSA9IGZhbHNlOwogICAgICAgICAgICAgbV92ZXJ0ZXhB
dHRyaWIwQnVmZmVyU2l6ZSA9IDA7CiAgICAgICAgICAgICBtX2ZvcmNlQXR0cmliMEJ1ZmZlclJl
ZmlsbCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBtX3ZlcnRleEF0dHJp
YjBCdWZmZXJTaXplID0gYnVmZmVyRGF0YVNpemU7CiAgICAgICAgIG1fZm9yY2VBdHRyaWIwQnVm
ZmVyUmVmaWxsID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCAxYzMxZTg3OGY3MTE0ZTM1ZTY2ZDc4
N2E0ZDg0MzllZGY4ZDhiM2EzLi43ZGI0OTFlNmQ4NGY1NmZjMDgyNjIxMGEzZTNkOTYwMjJjOWUx
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBpbmxpbmUgT3B0aW9uYWw8
VD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tlZEFkZEFuZE11bHRpcGx5KFQgdmFs
dWUsIFQgYQogICAgIGNoZWNrZWRSZXN1bHQgKz0gQ2hlY2tlZDxUPihhZGQpOwogICAgIGNoZWNr
ZWRSZXN1bHQgKj0gQ2hlY2tlZDxUPihtdWx0aXBseSk7CiAgICAgaWYgKGNoZWNrZWRSZXN1bHQu
aGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGNoZWNrZWRSZXN1bHQudW5zYWZlR2V0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0
aW9uU2l0ZS5jcHAKaW5kZXggZTVmZWI5M2VjOGI3M2RiNTNmMDA5N2NjZDA2MGRhM2YwZGRmZDI0
Yi4uYmNmZjhhN2VjYmMxMDI5OWQ0ZjkxZDQ3MDU1NjAzMzRhYmY4YTUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcApAQCAt
NzI1LDE0ICs3MjUsMTQgQEAgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxDb25zdHJ1Y3Rpb25TaXRl
OjpjcmVhdGVFbGVtZW50RnJvbVNhdmVkVG9rZW4oSFRNTFN0YWNrSXQKIE9wdGlvbmFsPHVuc2ln
bmVkPiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0Vs
ZW1lbnQoKSBjb25zdAogewogICAgIGlmIChtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50
cy5zaXplKCk7CiAgICAgZG8gewogICAgICAgICAtLWluZGV4OwogICAgICAgICBjb25zdCBhdXRv
JiBlbnRyeSA9IG1fYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmF0KGluZGV4KTsKICAgICAgICAg
aWYgKGVudHJ5LmlzTWFya2VyKCkgfHwgbV9vcGVuRWxlbWVudHMuY29udGFpbnMoZW50cnkuZWxl
bWVudCgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgZmlyc3RVbm9wZW5FbGVtZW50SW5kZXgg
PSBpbmRleCArIDE7Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXgg
PCBtX2FjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5zaXplKCkgPyBmaXJzdFVub3BlbkVsZW1lbnRJ
bmRleCA6IE9wdGlvbmFsPHVuc2lnbmVkPihXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0
dXJuIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4IDwgbV9hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMu
c2l6ZSgpID8gZmlyc3RVbm9wZW5FbGVtZW50SW5kZXggOiBPcHRpb25hbDx1bnNpZ25lZD4oc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGluZGV4KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCA3Njc5ODQ2
N2UzNDA0NmZjZGI1ZTU2NGZiOTFlN2ZhMzQyNGM0MmFiLi5jOTE3MmMwYTRmMjEyNGY5ZjFjOGMx
ZGFjMDA1YjYzZmY3YzUxMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VySWRpb21zLmNwcApAQCAtMjI1LDEyICsyMjUsMTIgQEAgc3RhdGljIE9wdGlvbmFs
PGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXJJbnRlcm5hbChjb25zdCBDaGFy
YWN0ZXJUeXAKICAgICAvLyBBIHN0cmluZyBpcyBhIHZhbGlkIG5vbi1uZWdhdGl2ZSBpbnRlZ2Vy
IGlmIGl0IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIEFTQ0lJIGRpZ2l0cy4KICAgICBmb3IgKGF1
dG8qIGMgPSBwb3NpdGlvbjsgYyA8IGVuZDsgKytjKSB7CiAgICAgICAgIGlmICghaXNBU0NJSURp
Z2l0KCpjKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gb3B0aW9uYWxTaWduZWRWYWx1
ZSA9IHBhcnNlSFRNTEludGVnZXJJbnRlcm5hbChwb3NpdGlvbiwgZW5kKTsKICAgICBpZiAoIW9w
dGlvbmFsU2lnbmVkVmFsdWUgfHwgb3B0aW9uYWxTaWduZWRWYWx1ZS52YWx1ZSgpIDwgMCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBvcHRpb25hbFNpZ25lZFZhbHVlLnZhbHVlKCk7CiB9CkBAIC0yMzksNyAr
MjM5LDcgQEAgc3RhdGljIE9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUlu
dGVnZXJJbnRlcm5hbChjb25zdCBDaGFyYWN0ZXJUeXAKIE9wdGlvbmFsPGludD4gcGFyc2VWYWxp
ZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICBpZiAoaW5w
dXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKExJS0VMWShpbnB1dC5pczhCaXQoKSkpIHsKICAg
ICAgICAgYXV0byogc3RhcnQgPSBpbnB1dC5jaGFyYWN0ZXJzOCgpOwpAQCAtMjU4LDcgKzI1OCw3
IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51
bWJlckludGVybmFsKGNvbnN0IENoYXJhY3RlCiAgICAgLy8gcGFyc2VEb3VibGUoKSBhbGxvd3Mg
dGhlIHN0cmluZyB0byBzdGFydCB3aXRoIGEgJysnIG9yIHRvIGVuZCB3aXRoIGEgJy4nIGJ1dCB0
aG9zZQogICAgIC8vIGFyZSBub3QgdmFsaWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcyBwZXIg
SFRNTC4KICAgICBpZiAoKnBvc2l0aW9uID09ICcrJyB8fCAqKHBvc2l0aW9uICsgbGVuZ3RoIC0g
MSkgPT0gJy4nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgc2l6ZV90IHBhcnNlZExlbmd0aCA9IDA7CiAgICAgZG91Ymxl
IG51bWJlciA9IHBhcnNlRG91YmxlKHBvc2l0aW9uLCBsZW5ndGgsIHBhcnNlZExlbmd0aCk7CkBA
IC0yNjksNyArMjY5LDcgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhUTUxG
bG9hdGluZ1BvaW50TnVtYmVySW50ZXJuYWwoY29uc3QgQ2hhcmFjdGUKIE9wdGlvbmFsPGRvdWJs
ZT4gcGFyc2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcgaW5wdXQpCiB7
CiAgICAgaWYgKGlucHV0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChMSUtFTFkoaW5wdXQuaXM4
Qml0KCkpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0ID0gaW5wdXQuY2hhcmFjdGVyczgoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmlu
ZGV4IGMzMTNkZDU0Zjk0NjQ3MzFjZTY2YTc0N2QyODhhNjYyNzE2MGUwZTEuLmI3MWYxYjRlNGIw
MzNmMjZhMmIzOTcxYmQ4ZDhjMTc0ZWMzYjE0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgbV9ub25jZUF0dHJpYnV0ZSA9IGF0dHJpYnV0ZVZhbHVl
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRjaChh
dHRyaWJ1dGVOYW1lLCByZWZlcnJlcnBvbGljeUF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgbV9y
ZWZlcnJlclBvbGljeSA9IHBhcnNlUmVmZXJyZXJQb2xpY3koYXR0cmlidXRlVmFsdWUsIFJlZmVy
cmVyUG9saWN5U291cmNlOjpSZWZlcnJlclBvbGljeUF0dHJpYnV0ZSkudmFsdWVPcihSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmcpOworICAgICAgICAgICAgICAgIG1fcmVmZXJyZXJQb2xpY3kg
PSBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJpYnV0ZVZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJj
ZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUpLnZhbHVlX29yKFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KG1hdGNoKGF0dHJpYnV0ZU5hbWUsIG5vbW9kdWxlQXR0cikpIHsKICAgICAgICAgICAgICAgICBt
X3NjcmlwdElzTm9tb2R1bGUgPSB0cnVlOwpAQCAtMjg1LDcgKzI4NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCB0eXBlQXR0cikpCiAgICAg
ICAgICAgICAgICAgbV90eXBlQXR0cmlidXRlID0gYXR0cmlidXRlVmFsdWU7CiAgICAgICAgICAg
ICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCByZWZlcnJlcnBvbGljeUF0dHIpKQotICAg
ICAgICAgICAgICAgIG1fcmVmZXJyZXJQb2xpY3kgPSBwYXJzZVJlZmVycmVyUG9saWN5KGF0dHJp
YnV0ZVZhbHVlLCBSZWZlcnJlclBvbGljeVNvdXJjZTo6UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGUp
LnZhbHVlT3IoUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKKyAgICAgICAgICAgICAgICBt
X3JlZmVycmVyUG9saWN5ID0gcGFyc2VSZWZlcnJlclBvbGljeShhdHRyaWJ1dGVWYWx1ZSwgUmVm
ZXJyZXJQb2xpY3lTb3VyY2U6OlJlZmVycmVyUG9saWN5QXR0cmlidXRlKS52YWx1ZV9vcihSZWZl
cnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGFnSWQ6OklucHV0OgogICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNy
Y0F0dHIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVG
aWVsZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVGaWVs
ZEVsZW1lbnQuY3BwCmluZGV4IGJlYmQ1MmE1NGU3YzJiY2VlMDA5ZDUzZmU4YWNjNTM3NDBlZDlm
MDYuLmVkZDBjMTgxOTA5YTFkNmM4M2QxNzIxNGFmMzg1YWMxZGIxMmEyNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lRmllbGRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZUZpZWxkRWxlbWVudC5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgT3B0aW9uYWw8U3R5bGU6OkVsZW1lbnRTdHlsZT4gRGF0ZVRpbWVGaWVs
ZEVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBSZW4KIHsKICAgICBhdXRvIGVsZW1l
bnRTdHlsZSA9IHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogICAgIGlmICghZWxlbWVudFN0
eWxlLnJlbmRlclN0eWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byYgc3R5bGUgPSAqZWxlbWVudFN0eWxlLnJl
bmRlclN0eWxlOwogICAgIGFkanVzdE1pbldpZHRoKHN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EYXRlVGltZU51bWVyaWNGaWVsZEVsZW1lbnQuY3Bw
CmluZGV4IDZmNjE0MGNiYTM1NzE4ZGVjZDVlZjJlZGMxY2E2NmM4OWI0NDVlZGIuLmEzMWU5MjQ2
ZjgxNTBjZmVjMDQ4NzZlNmE1OWJjM2QwMmU1Njc3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0RhdGVUaW1lTnVtZXJpY0ZpZWxkRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50LmNwcApA
QCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgRGF0ZVRpbWVOdW1lcmljRmllbGRFbGVtZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlCiAgICAgfQogCiAgICAg
bV90eXBlQWhlYWRCdWZmZXIuYXBwZW5kKG51bWJlcik7Ci0gICAgc2V0VmFsdWVBc0ludGVnZXIo
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX3R5cGVBaGVhZEJ1ZmZlciku
dmFsdWVPcigwKSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50cyk7CisgICAgc2V0VmFsdWVB
c0ludGVnZXIocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihtX3R5cGVBaGVh
ZEJ1ZmZlcikudmFsdWVfb3IoMCksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudHMpOwogCiAg
ICAga2V5Ym9hcmRFdmVudC5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNjNmNzMxMWIw
OWQ5NTE2N2Q0ZWY4YmVjMmRjNWViMDJlNjg0YmFhZC4uNTc1MmU3OTc0OWRiY2MwMWViNzRiM2Zi
ODMyNjM3ZTJlYjJjMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
bGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgT3B0aW9uYWw8U3R5bGU6
OkVsZW1lbnRTdHlsZT4gU2xpZGVyVGh1bWJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUoY29u
c3QgUmVuZGUKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21T
dHJpbmc+IG1lZGlhU2xpZGVyVGh1bWJTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1tZWRpYS1zbGlk
ZXItdGh1bWIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKICAgICBpZiAo
IWhvc3RTdHlsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoaG9zdFN0eWxlLT5hcHBlYXJhbmNlKCkpIHsK
ICAgICBjYXNlIE1lZGlhU2xpZGVyUGFydDoKQEAgLTYwOCw3ICs2MDgsNyBAQCBPcHRpb25hbDxT
dHlsZTo6RWxlbWVudFN0eWxlPiBTbGlkZXJUaHVtYkVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHls
ZShjb25zdCBSZW5kZQogICAgICAgICBtX3NoYWRvd1BzZXVkb0lkID0gc2xpZGVyVGh1bWJTaGFk
b3dQc2V1ZG9JZDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEF0b21TdHJpbmcmIFNsaWRlclRodW1iRWxlbWVu
dDo6c2hhZG93UHNldWRvSWQoKSBjb25zdApAQCAtNjQ3LDcgKzY0Nyw3IEBAIE9wdGlvbmFsPFN0
eWxlOjpFbGVtZW50U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21T
dHlsZShjb25zdCBSCiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiBzbGlkZXJDb250YWluZXIoIi13ZWJraXQtc2xpZGVyLWNvbnRhaW5lciIsIEF0
b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAogICAgIGlmICghaG9zdFN0eWxlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgc3dpdGNoIChob3N0U3R5bGUtPmFwcGVhcmFuY2UoKSkgewogICAgIGNhc2UgTWVk
aWFTbGlkZXJQYXJ0OgpAQCAtNjYyLDcgKzY2Miw3IEBAIE9wdGlvbmFsPFN0eWxlOjpFbGVtZW50
U3R5bGU+IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnJlc29sdmVDdXN0b21TdHlsZShjb25zdCBS
CiAgICAgICAgIG1fc2hhZG93UHNldWRvSWQgPSBzbGlkZXJDb250YWluZXI7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBj
b25zdCBBdG9tU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA1MzMxMjEyNTEwMTU2OGYwOGIxYzEzMzQ2MmQxZTE4
ZGE4ODc0YTY5Li5hNDliYzkwMDBkOTYxY2VkOTkwOWZmYzVmMmI2MWFjYWJkODg2YzFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0
eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6cmVzb2x2ZUN1c3RvbVN0eWxlKGNvbnN0CiAg
ICAgICAgIC8vIHN0eWxlIHRvIGNhbGN1bGF0ZSBlbSBsZW5ndGhzLiBTaW5jZSB0aGUgZWxlbWVu
dCBtaWdodCBub3QgYmUgaW4gYSBkb2N1bWVudCwganVzdCBwYXNzIG51bGxwdHIKICAgICAgICAg
Ly8gZm9yIHRoZSByb290IGVsZW1lbnQgc3R5bGUsIHRoZSBwYXJlbnQgZWxlbWVudCBzdHlsZSwg
YW5kIHRoZSByZW5kZXIgdmlldy4KICAgICAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKDEsIENTU1VuaXRUeXBlOjpDU1NfRU1TKTsKLSAgICAgICAgaW50IHBpeGVs
cyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
eyBuZXdTdHlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51
bGxvcHQgfSk7CisgICAgICAgIGludCBwaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8aW50
PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIHsgbmV3U3R5bGUuZ2V0KCksIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIDEuMCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICBuZXdTdHlsZS0+
c2V0RmxleEJhc2lzKExlbmd0aCB7IHBpeGVscywgTGVuZ3RoVHlwZTo6Rml4ZWQgfSk7CiAgICAg
fQogCkBAIC0yNDMsMTQgKzI0MywxNCBAQCBPcHRpb25hbDxTdHlsZTo6RWxlbWVudFN0eWxlPiBT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bAogewogICAg
IGF1dG8gaW5wdXQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHNoYWRv
d0hvc3QoKSkpOwogICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+bWF4UmVzdWx0cygpID49IDApCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoc2hhZG93SG9zdFN0eWxlICYmIHNoYWRvd0hvc3RTdHlsZS0+YXBwZWFyYW5j
ZSgpICE9IFNlYXJjaEZpZWxkUGFydCkgewogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBjYW5B
ZGp1c3RTdHlsZUZvckFwcGVhcmFuY2UobV9jYW5BZGp1c3RTdHlsZUZvckFwcGVhcmFuY2UsIGZh
bHNlKTsKICAgICAgICAgcmV0dXJuIHJlc29sdmVTdHlsZSgmcGFyZW50U3R5bGUpOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogdm9pZCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50JiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
QnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svQnVmZmVy
ZWRMaW5lUmVhZGVyLmNwcAppbmRleCA1N2RkMmJmOGExYzY3NmQ5ODM5ZGQyODI5OGM5NmI5MzJj
OGNkMzE2Li5iNThmZDM4YzA0YTBmNWRhNTk1OGQ1Zjk1NGI2ZjU0Y2E3MTAwMDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0J1ZmZlcmVkTGluZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9CdWZmZXJlZExpbmVSZWFkZXIuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQnVmZmVyZWRMaW5lUmVhZGVyOjpuZXh0TGlu
ZSgpCiAgICAgfQogCiAgICAgQVNTRVJUKG1fYnVmZmVyLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXgg
NzI3YThlYTE4ZGUxMDJiMjBiZDY1MjgwOTViYjk1MmVjYWE3ZTZmYi4uZDliNDdkMjBiODliYjY3
ODY4YjBkZmNlNzEyMjQyOTY3MTgwYTAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcApAQCAtNDkwLDggKzQ5MCw4IEBAIGludCBUZXh0VHJhY2s6OnRyYWNrSW5kZXgo
KQogCiB2b2lkIFRleHRUcmFjazo6aW52YWxpZGF0ZVRyYWNrSW5kZXgoKQogewotICAgIG1fdHJh
Y2tJbmRleCA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3JlbmRlcmVkVHJhY2tJbmRleCA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3RyYWNrSW5kZXggPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9yZW5kZXJl
ZFRyYWNrSW5kZXggPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgVGV4dFRyYWNrOjppc1JlbmRl
cmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCmluZGV4IDY2MzIw
ZDc0NzVlN2U2YzYzOGQwZWQxMDZlZDAwY2VjNjk0YzFmMDMuLjg2MDlmOGZhMTRmMDU1NGQ5ZGQ5
MWQ2OWM1MjI0ZmQyN2U0OTAzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2
ZW50LmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFRyYWNrRXZl
bnQ6OlRyYWNrRXZlbnRUcmFjaz4gY29udmVydFRvVHJhY2tFdmVudFRyYWNrKFJlZgogewogICAg
IHN3aXRjaCAodHJhY2stPnR5cGUoKSkgewogICAgIGNhc2UgVHJhY2tCYXNlOjpCYXNlVHJhY2s6
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY2FzZSBUcmFja0Jhc2U6OlRleHRUcmFjazoKICAgICAgICAgcmV0dXJuIFRyYWNr
RXZlbnQ6OlRyYWNrRXZlbnRUcmFjayB7IFJlZlB0cjxUZXh0VHJhY2s+KCZkb3duY2FzdDxUZXh0
VHJhY2s+KHRyYWNrLmdldCgpKSkgfTsKICAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFjazoK
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxUcmFja0V2ZW50OjpUcmFj
a0V2ZW50VHJhY2s+IGNvbnZlcnRUb1RyYWNrRXZlbnRUcmFjayhSZWYKICAgICB9CiAgICAgCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBUcmFja0V2ZW50OjpUcmFja0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIHR5cGUsIENhbkJ1YmJsZSBjYW5CdWJibGUsIElzQ2FuY2VsYWJsZSBjYW5jZWxh
YmxlLCBSZWY8VHJhY2tCYXNlPiYmIHRyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9WVFRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRU
U2Nhbm5lci5jcHAKaW5kZXggYzc4MDVjODdkNWE0NWZmOGE5MjNiMGIzMGEzMThjYjIxNWU2OTVj
Mi4uYTEyMGE5YmZkZTc1ODMyNzdkYzgzMGEyZWJjNGE0Njg3ZWY3NDZiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVFNjYW5uZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdW5zaWdu
ZWQgVlRUU2Nhbm5lcjo6c2NhbkRpZ2l0cyhpbnQmIG51bWJlcikKICAgICAgICAgc3RyaW5nID0g
eyBtX2RhdGEuY2hhcmFjdGVyczE2LCBudW1EaWdpdHMgfTsKIAogICAgIC8vIFNpbmNlIHRoZXNl
IGFyZSBBU0NJSSBkaWdpdHMsIHRoZSBvbmx5IGZhaWx1cmUgbW9kZSBpcyBvdmVyZmxvdywgc28g
dXNlIHRoZSBtYXhpbXVtIGludCB2YWx1ZS4KLSAgICBudW1iZXIgPSBwYXJzZUludGVnZXI8aW50
PihzdHJpbmcpLnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSk7CisgICAg
bnVtYmVyID0gcGFyc2VJbnRlZ2VyPGludD4oc3RyaW5nKS52YWx1ZV9vcihzdGQ6Om51bWVyaWNf
bGltaXRzPGludD46Om1heCgpKTsKIAogICAgIC8vIENvbnN1bWUgdGhlIGRpZ2l0cy4KICAgICBz
ZWVrVG8ocnVuT2ZEaWdpdHMuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAppbmRleCA1ZjIwYjNjNzRhZjk2OWI1Nzk0OTE1ZGE2YTBjNThkMDQ0
NGRiYmIzLi5jOWNlODBiMmQxZGFhZDhkZWVhMjkzYmZiMDlkODA4YTU4YjkzNDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMzEyLDcgKzMx
Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZXNldFJlY29yZGluZ0RhdGEoKQogICAgIG1f
cmVjb3JkaW5nTmFtZSA9IHsgfTsKICAgICBtX2J1ZmZlckxpbWl0ID0gMTAwICogMTAyNCAqIDEw
MjQ7CiAgICAgbV9idWZmZXJVc2VkID0gMDsKLSAgICBtX2ZyYW1lQ291bnQgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9mcmFtZUNvdW50ID0gc3RkOjpudWxsb3B0OwogICAgIG1fZnJhbWVzQ2FwdHVy
ZWQgPSAwOwogICAgIG1fY29udGVudENoYW5nZWQgPSBmYWxzZTsKIApAQCAtMzg4LDE5ICszODgs
MTkgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChET01NYXRyaXgyREluaXQmIGFyZ3VtZW50KQogewogICAgIGF1dG8gYXJyYXkgPSBKU09O
OjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwotICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50
LmEudmFsdWVPcigxKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYi52YWx1ZU9yKDAp
KTsKLSAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5jLnZhbHVlT3IoMCkpOwotICAgIGFycmF5
LT5hZGRJdGVtKGFyZ3VtZW50LmQudmFsdWVPcigxKSk7Ci0gICAgYXJyYXktPmFkZEl0ZW0oYXJn
dW1lbnQuZS52YWx1ZU9yKDApKTsKLSAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5mLnZhbHVl
T3IoMCkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmEudmFsdWVfb3IoMSkpOworICAg
IGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmIudmFsdWVfb3IoMCkpOworICAgIGFycmF5LT5hZGRJ
dGVtKGFyZ3VtZW50LmMudmFsdWVfb3IoMCkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50
LmQudmFsdWVfb3IoMSkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmUudmFsdWVfb3Io
MCkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmYudmFsdWVfb3IoMCkpOwogICAgIHJl
dHVybiB7eyBXVEZNb3ZlKGFycmF5KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkRPTU1hdHJpeCB9
fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEVsZW1lbnQqIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBFbGVtZW50cyBhcmUgbm90IHNl
cmlhbGl6YWJsZSwgc28gYWRkIGEgc3RyaW5nIGFzIGEgcGxhY2Vob2xkZXIgc2luY2UgdGhlIGFj
dHVhbAogICAgIC8vIGVsZW1lbnQgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQgaW4gdGhlIGZyb250
ZW5kLgpAQCAtNDEwLDI4ICs0MTAsMjggQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChIVE1MSW1hZ2VFbGVtZW50KiBhcmd1bWVudCkKIHsK
ICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShh
cmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKIH0KIAogT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlQml0bWFwKiBhcmd1bWVudCkKIHsKICAgICBpZiAo
IWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZUJpdG1hcCB9fTsKIH0KIAogT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YSogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1
bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VEYXRhIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoSW1hZ2VEYXRhU2V0dGluZ3MmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5
IGFyZ3VtZW50KQpAQCAtNDQyLDM1ICs0NDIsMzUgQEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EK
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChPcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPigqYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6Ok51bWJlciB9fTsKIH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFBhdGgy
RCogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFs
dWVJbmRleEZvckRhdGEoYnVpbGRTdHJpbmdGcm9tUGF0aChhcmd1bWVudC0+cGF0aCgpKSksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlOjpQYXRoMkQgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChSZWZQdHI8Q2FudmFzR3JhZGllbnQ+JiBhcmd1bWVudCkKIHsKICAgICBpZiAo
IWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9fTsKIH0KIAogT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgYXJndW1lbnQpCiB7
CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEo
YXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFzUGF0dGVybiB9fTsKIH0KIAog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4m
IGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IHZhbHVl
SW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19Owog
fQogCkBAIC00OTIsMzUgKzQ5MiwzNSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQogT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgYXJndW1l
bnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6
OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07CiB9CiAKIE9w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsK
IH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkZsb2F0MzJB
cnJheT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7
IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5
IH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6SW50
MzJBcnJheT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFy
cmF5IH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6
VWludDMyQXJyYXk+JiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlw
ZWRBcnJheSB9fTsKIH0KIApAQCAtNjAzLDcgKzYwMyw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPFR5cGVkT01DU1NJbWFn
ZVZhbHVlPiYgYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1h
Z2UgfX07CiB9CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBh
cmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUlu
ZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKIH0K
IApAQCAtNjI1LDcgKzYyNSw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKIH0KIApAQCAtNjM2
LDcgKzYzNiw3IEBAIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBCiBPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0
YVNvdXJjZT4mIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbigqYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAg
cmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CkBAIC02NDYsNyArNjQ2LDcgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChPcHRpb25h
bDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZT4mIGFyZ3VtZW50KQog
ewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbigqYXJn
dW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVu
dCh2YWx1ZSk7CkBAIC02NTYsMzUgKzY1NiwzNSBAQCBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQQog
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMQnVmZmVyKiBhcmd1bWVudCkKIHsK
ICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRl
KDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xCdWZmZXIgfX07CiB9CiAKIE9wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTEZyYW1lYnVmZmVyKiBhcmd1bWVudCkKIHsKICAg
ICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDAp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xGcmFtZWJ1ZmZlciB9fTsKIH0KIAogT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUHJvZ3JhbSogYXJndW1lbnQpCiB7CiAgICAg
aWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwg
UmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMUHJvZ3JhbSB9fTsKIH0KIAogT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUXVlcnkqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJn
dW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpXZWJHTFF1ZXJ5IH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoV2ViR0xSZW5kZXJidWZmZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1l
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpXZWJHTFJlbmRlcmJ1ZmZlciB9fTsKIH0KIApAQCAtNzE5LDQyICs3MTksNDIg
QEAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChXZWJHTFNhbXBsZXIqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
cmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpX
ZWJHTFNhbXBsZXIgfX07CiB9CiAKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJH
TFNoYWRlciogYXJndW1lbnQpCiB7CiAgICAgaWYgKCFhcmd1bWVudCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4g
e3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU2hh
ZGVyIH19OwogfQogCiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTeW5jKiBh
cmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTeW5jIH19OwogfQog
CiBPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUZXh0dXJlKiBhcmd1bWVudCkK
IHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3Jl
YXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xUZXh0dXJlIH19OwogfQogCiBPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGFyZ3VtZW50
KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFVuaWZvcm1Mb2NhdGlvbiB9fTsK
IH0KIAogT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QqIGFyZ3VtZW50KQogewogICAgIGlmICghYXJndW1lbnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHt7IEpT
T046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFZlcnRleEFy
cmF5T2JqZWN0IH19OwogfQogCkBAIC03NjUsNyArNzY1LDcgQEAgT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0EKIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFRyYW5zZm9ybUZlZWRi
YWNrKiBhcmd1bWVudCkKIHsKICAgICBpZiAoIWFyZ3VtZW50KQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xUcmFuc2Zv
cm1GZWVkYmFjayB9fTsKIH0KIApAQCAtODg5LDcgKzg4OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzOjpzZXRGcmFtZUNvdW50KGxvbmcgZnJhbWVDb3VudCkKICAgICBpZiAoZnJhbWVDb3VudCA+
IDApCiAgICAgICAgIG1fZnJhbWVDb3VudCA9IHN0ZDo6bWluPGxvbmc+KGZyYW1lQ291bnQsIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9mcmFt
ZUNvdW50ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2ZyYW1lQ291bnQgPSBzdGQ6Om51bGxv
cHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yQ2FudmFzOjpvdmVyRnJhbWVDb3VudCgpIGNvbnN0CkBA
IC05MTUsNyArOTE1LDcgQEAgUmVmPFByb3RvY29sOjpDYW52YXM6OkNhbnZhcz4gSW5zcGVjdG9y
Q2FudmFzOjpidWlsZE9iamVjdEZvckNhbnZhcyhib29sIGNhcHR1cmUKICAgICAgICAgICAgIGlm
IChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gUHJvdG9jb2w6OkNhbnZhczo6Q29udGV4dFR5cGU6OldlYkdMMjsKICNlbmRpZgotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIH0sCiAjaWYgRU5BQkxFKFdFQkdQVSkKICAgICAgICAgW10gKHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8V2ViR1BVRGV2aWNlPikgewpAQCAtOTI0LDcgKzkyNCw3IEBAIFJl
ZjxQcm90b2NvbDo6Q2FudmFzOjpDYW52YXM+IEluc3BlY3RvckNhbnZhczo6YnVpbGRPYmplY3RG
b3JDYW52YXMoYm9vbCBjYXB0dXJlCiAjZW5kaWYKICAgICAgICAgW10gKE1vbm9zdGF0ZSkgewog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgICk7CiAgICAgaWYgKCFjb250ZXh0VHlwZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCmluZGV4IDJlNTdkMjg0
NGUzMGM3MGIyOWIwZjIyYmJiOGZkODliMDMxNTU2NDYuLjY5M2FjZmU1MzQzNTE3MGQyZGY1ZTkw
MjljY2Y1MmMwNmFiMTM2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIKIHsgXAogICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGVuYWJs
ZWRDYW52YXNBZ2VudChjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgXAogICAgICAgICByZXR1cm4g
Y2FudmFzQWdlbnQtPnByb2Nlc3NBcmd1bWVudChjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBhcmd1
bWVudCk7IFwKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgXAogfSBcCiAvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCiAgICAg
Rk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9BUkdVTUVOVChQUk9DRVNTX0FS
R1VNRU5UX0RFRklOSVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggNjMxYzNhYTZiMzcyNWQ3
OGU4ODE5ZDlmMTgyM2Y2YmU2YTJmYzQyNC4uZTc3MDZiZTQ0MmY5MTdmY2M4ZjQ3YmI5OWNkZGY2
ZTk2NDcxMTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0
KCkKIHsKICAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0gbV9pbnNwZWN0ZWRQYWdl
Q29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpLnZpZXcoKS0+dmlzaWJsZUhl
aWdodCgpOwogICAgIFN0cmluZyB2YWx1ZSA9IG1fc2V0dGluZ3MtPmdldFByb3BlcnR5KGluc3Bl
Y3RvckF0dGFjaGVkSGVpZ2h0U2V0dGluZyk7Ci0gICAgdW5zaWduZWQgcHJlZmVycmVkSGVpZ2h0
ID0gdmFsdWUuaXNFbXB0eSgpID8gZGVmYXVsdEF0dGFjaGVkSGVpZ2h0IDogcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZU9yKDApOworICAgIHVu
c2lnbmVkIHByZWZlcnJlZEhlaWdodCA9IHZhbHVlLmlzRW1wdHkoKSA/IGRlZmF1bHRBdHRhY2hl
ZEhlaWdodCA6IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPih2YWx1
ZSkudmFsdWVfb3IoMCk7CiAKICAgICAvLyBUaGlzIGNhbGwgbWlnaHQgbm90IGdvIHRocm91Z2gg
KGlmIHRoZSB3aW5kb3cgc3RhcnRzIG91dCBkZXRhY2hlZCksIGJ1dCBpZiB0aGUgd2luZG93IGlz
IGluaXRpYWxseSBjcmVhdGVkIGF0dGFjaGVkLAogICAgIC8vIEluc3BlY3RvckNvbnRyb2xsZXI6
OmF0dGFjaFdpbmRvdyBpcyBuZXZlciBjYWxsZWQsIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRv
IHNldCB0aGUgYXR0YWNoZWRXaW5kb3dIZWlnaHQuCkBAIC0zMjgsMTIgKzMyOCwxMiBAQCB2b2lk
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdo
dCgpCiBPcHRpb25hbDxib29sPiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0
aW9uUmVzdWx0VG9Cb29sZWFuKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCByZXN1bHQpCiB7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHZh
bHVlT3JFeGNlcHRpb24gPSByZXN1bHQudmFsdWUoKTsKICAgICBpZiAoIXZhbHVlT3JFeGNlcHRp
b24pIHsKICAgICAgICAgTE9HKEluc3BlY3RvciwgIkVuY291bnRlcmVkIGV4Y2VwdGlvbiB3aGls
ZSBldmFsdWF0aW5nIHVwb24gdGhlIGZyb250ZW5kOiAlcyIsIHZhbHVlT3JFeGNlcHRpb24uZXJy
b3IoKS5tZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHJldHVybiB2YWx1
ZU9yRXhjZXB0aW9uLnZhbHVlKCkudG9Cb29sZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5m
cm9udGVuZEdsb2JhbE9iamVjdCgpKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBPcHRpb25hbDxib29s
PiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpldmFsdWF0aW9uUmVzdWx0VG9Cb29sZWFu
KEluc3BlY3RvcgogCiBib29sIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzRGVidWdn
aW5nRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9m
cm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc0Rl
YnVnZ2luZ0VuYWJsZWQiX3MpKS52YWx1ZU9yKGZhbHNlKTsKKyAgICByZXR1cm4gZXZhbHVhdGlv
blJlc3VsdFRvQm9vbGVhbihtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5k
V2l0aFJlc3VsdFN5bmMoImlzRGVidWdnaW5nRW5hYmxlZCJfcykpLnZhbHVlX29yKGZhbHNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZXREZWJ1Z2dpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OnNldERlYnVnZ2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogCiBib29s
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmlzVGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KCkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGlvblJlc3VsdFRvQm9vbGVhbihtX2Zyb250ZW5kQVBJ
RGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdFN5bmMoImlzVGltZWxpbmVQcm9m
aWxpbmdFbmFibGVkIl9zKSkudmFsdWVPcihmYWxzZSk7CisgICAgcmV0dXJuIGV2YWx1YXRpb25S
ZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdp
dGhSZXN1bHRTeW5jKCJpc1RpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZCJfcykpLnZhbHVlX29yKGZh
bHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpzZXRUaW1lbGlu
ZVByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKIAogYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjppc1By
b2ZpbGluZ0phdmFTY3JpcHQoKQogewotICAgIHJldHVybiBldmFsdWF0aW9uUmVzdWx0VG9Cb29s
ZWFuKG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0U3lu
YygiaXNQcm9maWxpbmdKYXZhU2NyaXB0Il9zKSkudmFsdWVPcihmYWxzZSk7CisgICAgcmV0dXJu
IGV2YWx1YXRpb25SZXN1bHRUb0Jvb2xlYW4obV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3Bh
dGNoQ29tbWFuZFdpdGhSZXN1bHRTeW5jKCJpc1Byb2ZpbGluZ0phdmFTY3JpcHQiX3MpKS52YWx1
ZV9vcihmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c3Rh
cnRQcm9maWxpbmdKYXZhU2NyaXB0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggYTI0OTU4YjdiMmRlMTcxY2E3NmJhZTk2
ZjUzNjBhYWVmOTJmMTNmYi4uNTEyMmEyMzFjNWZlYTk4YTI1OGEzMzQzZDE5MDAwNTI0MjcwNmU1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OkRvY2tTaWRlPiBkb2NrU2lkZUZyb21TdHJpbmcoY29uc3QgU3RyaQogICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OkRvY2tTaWRlOjpMZWZ0OwogICAg
IGlmIChkb2NrU2lkZVN0cmluZyA9PSAiYm90dG9tIikKICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpEb2NrU2lkZTo6Qm90dG9tOwotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OnN1cHBvcnRzRG9ja1NpZGUoY29uc3QgU3RyaW5nJiBkb2NrU2lkZVN0cmluZykKQEAg
LTI3OCw3ICsyNzgsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2V0Rm9yY2VkQXBw
ZWFyYW5jZShTdHJpbmcgYXBwZWFyYW5jZSkKICAgICB9CiAKICAgICBpZiAobV9mcm9udGVuZFBh
Z2UpCi0gICAgICAgIG1fZnJvbnRlbmRQYWdlLT5zZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRl
KFdURjo6bnVsbG9wdCk7CisgICAgICAgIG1fZnJvbnRlbmRQYWdlLT5zZXRVc2VEYXJrQXBwZWFy
YW5jZU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBt
X2NsaWVudC0+c2V0Rm9yY2VkQXBwZWFyYW5jZShJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6QXBw
ZWFyYW5jZTo6U3lzdGVtKTsKIH0KQEAgLTQxNSw3ICs0MTUsNyBAQCBTdHJpbmcgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Ojpwb3J0KCkgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBhdXRvIHBhZ2VJRCA9IG1fZnJv
bnRlbmRQYWdlID8gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLnBhZ2VJRCgpIDogV1RGOjpu
dWxsb3B0OworICAgIGF1dG8gcGFnZUlEID0gbV9mcm9udGVuZFBhZ2UgPyBtX2Zyb250ZW5kUGFn
ZS0+bWFpbkZyYW1lKCkucGFnZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgUGFzdGVib2FyZDo6
Y3JlYXRlRm9yQ29weUFuZFBhc3RlKFBhZ2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKFdURk1v
dmUocGFnZUlEKSkpLT53cml0ZVBsYWluVGV4dCh0ZXh0LCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFy
dFJlcGxhY2UpOwogfQogCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVD
b250ZXh0TWVudShWZWN0b3I8SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpDb250ZXh0TWVudUl0ZW0+
JiYKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gdHlwZSA9IGl0ZW0udHlwZSA9PSAiY2hlY2ti
b3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGU7Ci0gICAgICAgIGF1dG8gYWN0
aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VD
dXN0b21UYWcgKyBpdGVtLmlkLnZhbHVlT3IoMCkpOworICAgICAgICBhdXRvIGFjdGlvbiA9IHN0
YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFn
ICsgaXRlbS5pZC52YWx1ZV9vcigwKSk7CiAgICAgICAgIENvbnRleHRNZW51SXRlbSBtZW51SXRl
bSA9IHsgdHlwZSwgYWN0aW9uLCBpdGVtLmxhYmVsIH07CiAgICAgICAgIGlmIChpdGVtLmVuYWJs
ZWQpCiAgICAgICAgICAgICBtZW51SXRlbS5zZXRFbmFibGVkKCppdGVtLmVuYWJsZWQpOwpAQCAt
NjM3LDIzICs2MzcsMjMgQEAgc3RhdGljIE9wdGlvbmFsPERpYWdub3N0aWNMb2dnaW5nQ2xpZW50
OjpWYWx1ZVBheWxvYWQ+IHZhbHVlUGF5bG9hZEZyb21KU09OVmFsdWUKICAgICBjYXNlIEpTT046
OlZhbHVlOjpUeXBlOjpOdWxsOgogICAgIGNhc2UgSlNPTjo6VmFsdWU6OlR5cGU6Ok9iamVjdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjYXNlIEpTT046OlZhbHVl
OjpUeXBlOjpCb29sZWFuOgotICAgICAgICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6
OlZhbHVlUGF5bG9hZCh2YWx1ZS0+YXNCb29sZWFuKCkudmFsdWVPcihmYWxzZSkpOworICAgICAg
ICByZXR1cm4gRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OlZhbHVlUGF5bG9hZCh2YWx1ZS0+YXNC
b29sZWFuKCkudmFsdWVfb3IoZmFsc2UpKTsKIAogICAgIGNhc2UgSlNPTjo6VmFsdWU6OlR5cGU6
OkRvdWJsZToKLSAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBh
eWxvYWQodmFsdWUtPmFzRG91YmxlKCkudmFsdWVPcigwKSk7CisgICAgICAgIHJldHVybiBEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHZhbHVlLT5hc0RvdWJsZSgpLnZhbHVl
X29yKDApKTsKIAogICAgIGNhc2UgSlNPTjo6VmFsdWU6OlR5cGU6OkludGVnZXI6Ci0gICAgICAg
IHJldHVybiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6VmFsdWVQYXlsb2FkKHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4odmFsdWUtPmFzSW50ZWdlcigpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgcmV0
dXJuIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpWYWx1ZVBheWxvYWQoc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPih2YWx1ZS0+YXNJbnRlZ2VyKCkudmFsdWVfb3IoMCkpKTsKIAogICAgIGNhc2UgSlNP
Tjo6VmFsdWU6OlR5cGU6OlN0cmluZzoKICAgICAgICAgcmV0dXJuIERpYWdub3N0aWNMb2dnaW5n
Q2xpZW50OjpWYWx1ZVBheWxvYWQodmFsdWUtPmFzU3RyaW5nKCkpOwogICAgIH0KIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmxvZ0RpYWdu
b3N0aWNFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgY29uc3QgU3RyaW5nJiBwYXlsb2Fk
U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNo
YWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclNoYWRl
clByb2dyYW0uY3BwCmluZGV4IGQ5MDk5ZjFiZTg3NjgyZGIyOWMzNmM5NmJkYTk5YzE1OGJjODAw
NmIuLmRlNWNkNmU5NTE5OTg0YmE1YmQzOGYzMWI3MGQ1NzMxMjNhZTAyZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5jcHAKQEAg
LTI0OSwxNCArMjQ5LDE0IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDYW52YXM6OlNoYWRl
clByb2dyYW0+IEluc3BlY3RvclNoYWRlclByb2dyYW06OmJ1aWxkT2JqCiAgICAgICAgICAgICAg
ICAgICAgIHNoYXJlc1ZlcnRleEZyYWdtZW50U2hhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q2FudmFzOjpQcm9ncmFtVHlwZTo6UmVuZGVy
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0sCiAjZW5kaWYKICAgICAgICAg
WyZdIChNb25vc3RhdGUpIC0+IFByb2dyYW1UeXBlVHlwZSB7CiAjaWYgRU5BQkxFKFdFQkdMKSB8
fCBFTkFCTEUoV0VCR1BVKQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5k
aWYKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgKTsKICAgICBpZiAoIXByb2dyYW1UeXBlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
aW5kZXggOGM3MjE1N2I4YzljMmE1MjU0MmQ0NTg2M2JlNmM4MzZlM2FlZTNiZi4uMTBjZjI4NTkw
NGY5ZDYxMzM2NmM2YjcwNWI1YWVjYWM2MDdiNWYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtOTM1LDcgKzkzNSw3IEBAIEV4
Y2VwdGlvbk9yPENTU1N0eWxlUnVsZSo+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUoY29u
c3QgU3RyaW5nJiBzZWxlY3RvcikKICAgICBpZiAodGV4dC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHRleHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgYXV0byBhZGRSdWxlUmVz
dWx0ID0gbV9wYWdlU3R5bGVTaGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwg
V1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNoZWV0
LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBzdGQ6Om51bGxvcHQpOwogICAgIGlm
IChhZGRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gYWRkUnVsZVJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNmNlZGFiM2M1ODk4ZmE4NGRkNTlmNjExZjcx
NTAxODNjMDJjYWVlZS4uOWU2OWIyMzQxYjk1MWFlZmNiOWQxOWQ0MzVhOThiNjU5YjZhNTEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgK
QEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hl
ZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBjbGVhcihPcHRpb25hbDxTdHJp
bmc+IHByZXNlcnZlZExvYWRlcklkID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGNsZWFyKE9w
dGlvbmFsPFN0cmluZz4gcHJlc2VydmVkTG9hZGVySWQgPSBzdGQ6Om51bGxvcHQpOwogICAgIFZl
Y3RvcjxSZXNvdXJjZURhdGEqPiByZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQW5pbWF0aW9uQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25B
Z2VudC5jcHAKaW5kZXggOWU3YWQ5OTUwOTZjOWFhZjk2ODg0ZTc0MTg1NGExM2RhYWIzOWNlMi4u
MzBkNzYyZmMzYzhjYTUzZGE3YjgzOWU0ZmY4MzEwMjAwYWRlNzkzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBbmltYXRpb25B
Z2VudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIHN0
YXRpYyBPcHRpb25hbDxkb3VibGU+IHByb3RvY29sVmFsdWVGb3JTZWNvbmRzKGNvbnN0IFNlY29u
ZHMmIHNlY29uZHMpCiB7CiAgICAgaWYgKHNlY29uZHMgPT0gU2Vjb25kczo6aW5maW5pdHkoKSB8
fCBzZWNvbmRzID09IFNlY29uZHM6Om5hbigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzZWNvbmRzLm1pbGxp
c2Vjb25kcygpOwogfQogCkBAIC04Niw3ICs4Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxQcm90b2Nv
bDo6QW5pbWF0aW9uOjpQbGF5YmFja0RpcmVjdGlvbj4gcHJvdG9jb2xWYWx1ZUZvclBsYXliYWNr
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgT3B0aW9uYWw8UHJv
dG9jb2w6OkFuaW1hdGlvbjo6RmlsbE1vZGU+IHByb3RvY29sVmFsdWVGb3JGaWxsTW9kZShGaWxs
TW9kZSBmaWxsTW9kZSkKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJvdG9j
b2w6OkFuaW1hdGlvbjo6RmlsbE1vZGU+IHByb3RvY29sVmFsdWVGb3JGaWxsTW9kZShGaWxsTW9k
ZQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIFJlZjxKU09OOjpB
cnJheU9mPFByb3RvY29sOjpBbmltYXRpb246OktleWZyYW1lPj4gYnVpbGRPYmplY3RGb3JLZXlm
cmFtZXMoS2V5ZnJhbWVFZmZlY3QmIGtleWZyYW1lRWZmZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBkNjI2
NzY5MTdlYTA3MWVlYzE4YzBmNjA1NmVkZTY5ZDhjYjNiNzg5Li5jMmIxODAwMzdlOTQ3Y2M2YmQ1
MjZjMzQ2Y2RjN2E4YWM2ZmZiYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtOTM5LDcgKzkzOSw3IEBAIE9w
dGlvbmFsPFByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlPiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6bGF5b3V0Q29udGV4dFR5cGVGCiB7CiAgICAgaWYgKGlzPFJlbmRlckdyaWQ+KHJlbmRlcmVy
KSkKICAgICAgICAgcmV0dXJuIFByb3RvY29sOjpDU1M6OkxheW91dENvbnRleHRUeXBlOjpHcmlk
OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogc3RhdGljIHZvaWQgcHVzaENoaWxkcmVuTm9kZXNUb0Zyb250ZW5kSWZMYXlvdXRDb250ZXh0
VHlwZVByZXNlbnQoSW5zcGVjdG9yRE9NQWdlbnQmIGRvbUFnZW50LCBDb250YWluZXJOb2RlJiBu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckNhbnZhc0FnZW50LmNwcAppbmRleCBiMTY3ODQ4MDkwODJlNjljMjFmM2Y5NjBlMjZlMDFj
ZGU3NjdhNTg3Li5mMDQ1YzM0MjYxZjU4Zjc3NmVkM2FjYmFkOTE0OGYyY2E0Y2Q5ZDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNh
bnZhc0FnZW50LmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09y
PHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpkaXNhYmxlKCkKIAogICAgIHJlc2V0KCk7CiAK
LSAgICBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJhbWVDb3VudCA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7IH07CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5n
T3I8dm9pZD4gSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnNldFJlY29yZGluZ0F1dG9DYXB0dXJlRnJh
bWUKICAgICBpZiAoY291bnQgPiAwKQogICAgICAgICBtX3JlY29yZGluZ0F1dG9DYXB0dXJlRnJh
bWVDb3VudCA9IGNvdW50OwogICAgIGVsc2UKLSAgICAgICAgbV9yZWNvcmRpbmdBdXRvQ2FwdHVy
ZUZyYW1lQ291bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcmVjb3JkaW5nQXV0b0NhcHR1
cmVGcmFtZUNvdW50ID0gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKaW5kZXggMDBjNGRiM2Q2ZTdkOTk0OTQ5ZmI5MGNlZGMxYmM5N2MyZjE5NzhiZS4uZTYzNjJj
NTZlY2E3MDA3NTRkMWE0M2U0NmEwMWY4YWVmYmM4Y2U5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTEzNSwx
MyArMTM1LDEzIEBAIHN0YXRpYyBjb25zdCBVQ2hhciBlbGxpcHNpc1VDaGFyW10gPSB7IDB4MjAy
NiwgMCB9Owogc3RhdGljIE9wdGlvbmFsPENvbG9yPiBwYXJzZUNvbG9yKFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgY29sb3JPYmplY3QpCiB7CiAgICAgaWYgKCFjb2xvck9iamVjdCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gciA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpET006OlJHQkFDb2xv
cjo6cktleSk7CiAgICAgYXV0byBnID0gY29sb3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6
OkRPTTo6UkdCQUNvbG9yOjpnS2V5KTsKICAgICBhdXRvIGIgPSBjb2xvck9iamVjdC0+Z2V0SW50
ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmJLZXkpOwogICAgIGlmICghciB8fCAhZyB8
fCAhYikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gYSA9IGNvbG9yT2JqZWN0LT5nZXREb3VibGUoUHJvdG9jb2w6
OkRPTTo6UkdCQUNvbG9yOjphS2V5KTsKICAgICBpZiAoIWEpCkBAIC0xNTEsNyArMTUxLDcgQEAg
c3RhdGljIE9wdGlvbmFsPENvbG9yPiBwYXJzZUNvbG9yKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
Y29sb3JPYmplY3QpCiAKIHN0YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNvbnN0IFN0cmlu
ZyYgZmllbGROYW1lLCBKU09OOjpPYmplY3QmIGNvbmZpZ09iamVjdCkKIHsKLSAgICByZXR1cm4g
cGFyc2VDb2xvcihjb25maWdPYmplY3QuZ2V0T2JqZWN0KGZpZWxkTmFtZSkpLnZhbHVlT3IoQ29s
b3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHJldHVybiBwYXJzZUNvbG9yKGNvbmZpZ09iamVj
dC5nZXRPYmplY3QoZmllbGROYW1lKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OwogfQogCiBzdGF0aWMgYm9vbCBwYXJzZVF1YWQoUmVmPEpTT046OkFycmF5PiYmIHF1YWRBcnJh
eSwgRmxvYXRRdWFkKiBxdWFkKQpAQCAtMTI0MCw3ICsxMjQwLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodDo6Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2gKICAgICB9CiAKICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8
SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+KCk7Ci0gICAgaGlnaGxpZ2h0Q29u
ZmlnLT5zaG93SW5mbyA9IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbihQcm90
b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZvS2V5KS52YWx1ZU9yKGZhbHNlKTsK
KyAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
LT5nZXRCb29sZWFuKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6c2hvd0luZm9LZXkp
LnZhbHVlX29yKGZhbHNlKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNv
bmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5
LCAqaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBoaWdobGlnaHRDb25maWctPnBhZGRp
bmcgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6cGFk
ZGluZ0NvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBoaWdobGlnaHRD
b25maWctPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0
Q29uZmlnOjpib3JkZXJDb2xvcktleSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CkBAIC0x
Mjk2LDggKzEyOTYsOCBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0UXVhZChSZWY8SlNPTjo6QXJyYXk+Jgogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1
YWQsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgY29sb3IsIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYg
b3V0bGluZUNvbG9yLCBPcHRpb25hbDxib29sPiYmIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAg
ICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IG1ha2VVbmlxdWU8SW5zcGVjdG9yT3ZlcmxheTo6SGln
aGxpZ2h0OjpDb25maWc+KCk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VD
b2xvcihXVEZNb3ZlKGNvbG9yKSkudmFsdWVPcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0g
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3IoV1RGTW92ZShv
dXRsaW5lQ29sb3IpKS52YWx1ZU9yKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBoaWdo
bGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKFdURk1vdmUoY29sb3IpKS52YWx1ZV9v
cihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50
T3V0bGluZSA9IHBhcnNlQ29sb3IoV1RGTW92ZShvdXRsaW5lQ29sb3IpKS52YWx1ZV9vcihDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRp
bmF0ZXMgPSB1c2VQYWdlQ29vcmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7
CiAgICAgbV9vdmVybGF5LT5oaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksICpoaWdobGlnaHRD
b25maWcpOwogfQpAQCAtMTQ2Myw4ICsxNDYzLDggQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKGNvbnN0IFByb3RvY29sOjoK
ICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8gaGlnaGxpZ2h0
Q29uZmlnID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4o
KTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBz
aG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCi0gICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVu
dCA9IHBhcnNlQ29sb3IoV1RGTW92ZShjb2xvcikpLnZhbHVlT3IoQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2spOwotICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VD
b2xvcihXVEZNb3ZlKG91dGxpbmVDb2xvcikpLnZhbHVlT3IoQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2spOworICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKFdURk1v
dmUoY29sb3IpKS52YWx1ZV9vcihDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGhp
Z2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKFdURk1vdmUob3V0bGlu
ZUNvbG9yKSkudmFsdWVfb3IoQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogICAgICAgICBtX292
ZXJsYXktPmhpZ2hsaWdodE5vZGUoZnJhbWUtPm93bmVyRWxlbWVudCgpLCAqaGlnaGxpZ2h0Q29u
ZmlnKTsKICAgICB9CiAKQEAgLTE0OTEsMTEgKzE0OTEsMTEgQEAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JET01BZ2VudDo6c2hvd0dyaWRPdmVybGF5
KEluc3AKIAogICAgIEluc3BlY3Rvck92ZXJsYXk6OkdyaWQ6OkNvbmZpZyBjb25maWc7CiAgICAg
Y29uZmlnLmdyaWRDb2xvciA9ICpwYXJzZWRDb2xvcjsKLSAgICBjb25maWcuc2hvd0xpbmVOYW1l
cyA9IHNob3dMaW5lTmFtZXMudmFsdWVPcihmYWxzZSk7Ci0gICAgY29uZmlnLnNob3dMaW5lTnVt
YmVycyA9IHNob3dMaW5lTnVtYmVycy52YWx1ZU9yKGZhbHNlKTsKLSAgICBjb25maWcuc2hvd0V4
dGVuZGVkR3JpZExpbmVzID0gc2hvd0V4dGVuZGVkR3JpZExpbmVzLnZhbHVlT3IoZmFsc2UpOwot
ICAgIGNvbmZpZy5zaG93VHJhY2tTaXplcyA9IHNob3dUcmFja1NpemVzLnZhbHVlT3IoZmFsc2Up
OwotICAgIGNvbmZpZy5zaG93QXJlYU5hbWVzID0gc2hvd0FyZWFOYW1lcy52YWx1ZU9yKGZhbHNl
KTsKKyAgICBjb25maWcuc2hvd0xpbmVOYW1lcyA9IHNob3dMaW5lTmFtZXMudmFsdWVfb3IoZmFs
c2UpOworICAgIGNvbmZpZy5zaG93TGluZU51bWJlcnMgPSBzaG93TGluZU51bWJlcnMudmFsdWVf
b3IoZmFsc2UpOworICAgIGNvbmZpZy5zaG93RXh0ZW5kZWRHcmlkTGluZXMgPSBzaG93RXh0ZW5k
ZWRHcmlkTGluZXMudmFsdWVfb3IoZmFsc2UpOworICAgIGNvbmZpZy5zaG93VHJhY2tTaXplcyA9
IHNob3dUcmFja1NpemVzLnZhbHVlX29yKGZhbHNlKTsKKyAgICBjb25maWcuc2hvd0FyZWFOYW1l
cyA9IHNob3dBcmVhTmFtZXMudmFsdWVfb3IoZmFsc2UpOwogCiAgICAgbV9vdmVybGF5LT5zZXRH
cmlkT3ZlcmxheUZvck5vZGUoKm5vZGUsIGNvbmZpZyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
aW5kZXggZDIyMTNmNmRjNzcxZGYxYTQ3NTQ5Mjg2ZmE4MzNmODAxNDljMzNiZS4uNzVkZTU3YTVl
ZDhmOGU3Y2YwZWYwNjdkZWRmZmJjZmE3OWFkZDIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0KElE
QkZhY3RvcnkqIGlkYkZhY3RvcnksIFNlY3VyaXR5T3JpZ2luKiwgY29ucwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byByZXN1bHQgPSBpZGJGYWN0b3J5LT5vcGVuKCpjb250ZXh0
KCksIGRhdGFiYXNlTmFtZSwgV1RGOjpudWxsb3B0KTsKKyAgICBhdXRvIHJlc3VsdCA9IGlkYkZh
Y3RvcnktPm9wZW4oKmNvbnRleHQoKSwgZGF0YWJhc2VOYW1lLCBzdGQ6Om51bGxvcHQpOwogICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVxdWVzdENhbGxiYWNrKCku
c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGRhdGFiYXNlLiIpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggNDMwMDEyYzVmMTdhYjdlMzMyZDkyMGU5OTM4NWI4MzJl
ZDVhYzVjNS4uZDk5ODNjMDA2ODMxNjM3NTIxMzBiYzY1OGQ2ZDVkNzcwOTVmZjU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcApAQCAtMTM1OSw3ICsxMzU5LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29k
ZXI+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIoY29uc3QgU3RyaW5n
JgogT3B0aW9uYWw8U3RyaW5nPiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnRleHRDb250ZW50Rm9y
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIGNhY2hlZFJlc291cmNlKQogewogICAgIGlm
ICghSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChjYWNoZWRSZXNvdXJj
ZS5taW1lVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyByZXN1bHQ7CiAgICAgYm9vbCBiYXNlNjRF
bmNvZGVkOwpAQCAtMTM2OCw3ICsxMzY4LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OnRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3UKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBTdHJpbmcq
IHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCkKQEAgLTE0MjksNyArMTQyOSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxTdHJpbmc+IHRleHRDb250ZW50Rm9yUmVzb3VyY2VEYXRhKGNvbnN0IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSCiAgICAgaWYgKHJlc291cmNlRGF0YS5jYWNoZWRSZXNvdXJjZSgp
KQogICAgICAgICByZXR1cm4gSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp0ZXh0Q29udGVudEZvckNh
Y2hlZFJlc291cmNlKCpyZXNvdXJjZURhdGEuY2FjaGVkUmVzb3VyY2UoKSk7CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpzZWFyY2hPdGhlclJlcXVlc3RzKGNvbnN0IEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24mIHJlZ2V4LCBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6UGFn
ZTo6U2VhcmNoUmVzdWx0Pj4mIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA2MzkzMmRhZjkxNjhi
ZmJjNmFlZTNiZTJlZjdjYzMxMmM0YzIxNDFkLi4xMTExYWNjMjU4OGM2OTE3OGNjNjRiOTMxMjg5
NGM0NmExMjQ4Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0zNjYsMjUgKzM2NiwyNSBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2FibGUoKQogICAg
IG92ZXJyaWRlVXNlckFnZW50KG51bGxTdHJpbmcoKSk7CiAgICAgc2V0RW11bGF0ZWRNZWRpYShl
bXB0eVN0cmluZygpKTsKICNpZiBFTkFCTEUoREFSS19NT0RFX0NTUykgfHwgSEFWRShPU19EQVJL
X01PREVfU1VQUE9SVCkKLSAgICBzZXRGb3JjZWRBcHBlYXJhbmNlKFdURjo6bnVsbG9wdCk7Cisg
ICAgc2V0Rm9yY2VkQXBwZWFyYW5jZShzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKICAgICBhdXRv
JiBpbnNwZWN0ZWRQYWdlU2V0dGluZ3MgPSBtX2luc3BlY3RlZFBhZ2Uuc2V0dGluZ3MoKTsKLSAg
ICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRJbnNw
ZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5z
ZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxs
b3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZEluc3BlY3Rv
ck92ZXJyaWRlKFdURjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldE1l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbkluc3BlY3Rvck92ZXJyaWRlKFdURjo6
bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldE1vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBh
Z2VTZXR0aW5ncy5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0luc3BlY3Rvck92ZXJyaWRlKFdU
Rjo6bnVsbG9wdCk7Ci0gICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWRJ
bnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5n
cy5zZXRTaG93RGVidWdCb3JkZXJzSW5zcGVjdG9yT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKLSAg
ICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0U2hvd1JlcGFpbnRDb3VudGVySW5zcGVjdG9yT3Zl
cnJpZGUoV1RGOjpudWxsb3B0KTsKLSAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0V2ViUlRD
RW5jcnlwdGlvbkVuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShXVEY6Om51bGxvcHQpOwotICAgIGlu
c3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRXZWJTZWN1cml0eUVuYWJsZWRJbnNwZWN0b3JPdmVycmlk
ZShXVEY6Om51bGxvcHQpOwotCi0gICAgbV9jbGllbnQtPnNldERldmVsb3BlclByZWZlcmVuY2VP
dmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCwgV1RGOjpudWxsb3B0KTsKLSAgICBtX2NsaWVu
dC0+c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKEluc3BlY3RvckNsaWVudDo6RGV2ZWxv
cGVyUHJlZmVyZW5jZTo6SVRQRGVidWdNb2RlRW5hYmxlZCwgV1RGOjpudWxsb3B0KTsKLSAgICBt
X2NsaWVudC0+c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKEluc3BlY3RvckNsaWVudDo6
RGV2ZWxvcGVyUHJlZmVyZW5jZTo6TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwgV1RGOjpudWxs
b3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0QXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBhZ2VT
ZXR0aW5ncy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkSW5zcGVjdG9yT3ZlcnJpZGUo
c3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxl
ZEluc3BlY3Rvck92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRp
bmdzLnNldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbkluc3BlY3Rvck92ZXJy
aWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldE1vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGlu
c3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0luc3BlY3Rvck92
ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CisgICAgaW5zcGVjdGVkUGFnZVNldHRpbmdzLnNldFNjcmlw
dEVuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworICAgIGluc3BlY3RlZFBh
Z2VTZXR0aW5ncy5zZXRTaG93RGVidWdCb3JkZXJzSW5zcGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxs
b3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Muc2V0U2hvd1JlcGFpbnRDb3VudGVySW5z
cGVjdG9yT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKKyAgICBpbnNwZWN0ZWRQYWdlU2V0dGluZ3Mu
c2V0V2ViUlRDRW5jcnlwdGlvbkVuYWJsZWRJbnNwZWN0b3JPdmVycmlkZShzdGQ6Om51bGxvcHQp
OworICAgIGluc3BlY3RlZFBhZ2VTZXR0aW5ncy5zZXRXZWJTZWN1cml0eUVuYWJsZWRJbnNwZWN0
b3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOworCisgICAgbV9jbGllbnQtPnNldERldmVsb3BlclBy
ZWZlcmVuY2VPdmVycmlkZShJbnNwZWN0b3JDbGllbnQ6OkRldmVsb3BlclByZWZlcmVuY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCwgc3RkOjpudWxsb3B0KTsKKyAg
ICBtX2NsaWVudC0+c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKEluc3BlY3RvckNsaWVu
dDo6RGV2ZWxvcGVyUHJlZmVyZW5jZTo6SVRQRGVidWdNb2RlRW5hYmxlZCwgc3RkOjpudWxsb3B0
KTsKKyAgICBtX2NsaWVudC0+c2V0RGV2ZWxvcGVyUHJlZmVyZW5jZU92ZXJyaWRlKEluc3BlY3Rv
ckNsaWVudDo6RGV2ZWxvcGVyUHJlZmVyZW5jZTo6TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCwg
c3RkOjpudWxsb3B0KTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC01MTAsNyArNTEwLDcgQEAg
c3RhdGljIFJlZjxQcm90b2NvbDo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShj
b25zdCBDb29raWUmIGNvb2tpZSkKICAgICAgICAgLnNldFZhbHVlKGNvb2tpZS52YWx1ZSkKICAg
ICAgICAgLnNldERvbWFpbihjb29raWUuZG9tYWluKQogICAgICAgICAuc2V0UGF0aChjb29raWUu
cGF0aCkKLSAgICAgICAgLnNldEV4cGlyZXMoY29va2llLmV4cGlyZXMudmFsdWVPcigwKSkKKyAg
ICAgICAgLnNldEV4cGlyZXMoY29va2llLmV4cGlyZXMudmFsdWVfb3IoMCkpCiAgICAgICAgIC5z
ZXRTZXNzaW9uKGNvb2tpZS5zZXNzaW9uKQogICAgICAgICAuc2V0SHR0cE9ubHkoY29va2llLmh0
dHBPbmx5KQogICAgICAgICAuc2V0U2VjdXJlKGNvb2tpZS5zZWN1cmUpCkBAIC01NjksMzEgKzU2
OSwzMSBAQCBzdGF0aWMgT3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZQogICAgIGNvb2tpZS5uYW1lID0gY29va2ll
T2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6bmFtZUtleSk7CiAgICAg
aWYgKCFjb29raWUubmFtZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVl
IGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS52
YWx1ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZh
bHVlS2V5KTsKICAgICBpZiAoIWNvb2tpZS52YWx1ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFsdWUgaW4gZ2l2ZW4gY29va2llIjsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5KTsKICAgICBpZiAoIWNvb2tpZS5kb21haW4pIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGRvbWFpbiBpbiBnaXZl
biBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6cGF0aEtleSk7CiAgICAgaWYgKCFjb29r
aWUucGF0aCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkg
cGF0aCBpbiBnaXZlbiBjb29raWUiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gaHR0cE9ubHkgPSBj
b29raWVPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlL
ZXkpOwogICAgIGlmICghaHR0cE9ubHkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxp
ZCB2YWx1ZSBmb3Iga2V5IGh0dHBPbmx5IGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgY29va2llLmh0dHBPbmx5ID0gKmh0dHBPbmx5OwpAQCAtNjAxLDcgKzYwMSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIFJlCiAgICAgYXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdldEJv
b2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6c2VjdXJlS2V5KTsKICAgICBpZiAoIXNlY3Vy
ZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2VjdXJl
IGluIGdpdmVuIGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgY29va2llLnNlY3VyZSA9ICpzZWN1
cmU7CkBAIC02MTAsNyArNjEwLDcgQEAgc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29r
aWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmUKICAgICBjb29r
aWUuZXhwaXJlcyA9IGNvb2tpZU9iamVjdC0+Z2V0RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29r
aWU6OmV4cGlyZXNLZXkpOwogICAgIGlmICghc2Vzc2lvbiAmJiAhY29va2llLmV4cGlyZXMpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4g
Z2l2ZW4gY29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBjb29raWUuc2Vzc2lvbiA9ICpzZXNzaW9u
OwpAQCAtNjE4LDEzICs2MTgsMTMgQEAgc3RhdGljIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29r
aWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmUKICAgICBhdXRv
IHNhbWVTaXRlU3RyaW5nID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZTo6c2FtZVNpdGVLZXkpOwogICAgIGlmICghc2FtZVNpdGVTdHJpbmcpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVu
IGNvb2tpZSI7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBzYW1lU2l0ZSA9IFByb3RvY29sOjpIZWxw
ZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21TdHJpbmc8UHJvdG9jb2w6OlBhZ2U6OkNvb2tpZVNhbWVT
aXRlUG9saWN5PihzYW1lU2l0ZVN0cmluZyk7CiAgICAgaWYgKCFzYW1lU2l0ZSkgewogICAgICAg
ICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgc2FtZVNpdGUgaW4gZ2l2ZW4g
Y29va2llIjsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBzd2l0Y2ggKHNhbWVTaXRlLnZhbHVlKCkpIHsKQEAg
LTEwMzEsNyArMTAzMSw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShjb25zdCBTdHJpbmcmCiBQcm90b2NvbDo6RXJy
b3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldEZvcmNlZEFwcGVhcmFuY2Uo
T3B0aW9uYWw8UHJvdG9jb2w6OlBhZ2U6OkFwcGVhcmFuY2U+JiYgYXBwZWFyYW5jZSkKIHsKICAg
ICBpZiAoIWFwcGVhcmFuY2UpIHsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLnNldFVzZURhcmtB
cHBlYXJhbmNlT3ZlcnJpZGUoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdl
LnNldFVzZURhcmtBcHBlYXJhbmNlT3ZlcnJpZGUoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdE5vZGUoUHJvdG9jb2w6
OkRPTTo6CiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCJfcyk7CiAKLSAgICByZXR1cm4gc25hcHNob3Qt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKTsKKyAgICByZXR1cm4gc25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBz
dGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKIH0KIAogUHJvdG9jb2w6OkVy
cm9yU3RyaW5nT3I8U3RyaW5nPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNuYXBzaG90UmVjdChpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgUHJvdG9jb2w6OlBhZ2U6OkNvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkKQEAgLTEwOTEsNyArMTA5MSw3IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPFN0cmluZz4gSW5zcGVjdG9yUGFnZUFnZW50OjpzbmFwc2hvdFJlY3Qo
aW50IHgsIGludCB5LCBpCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJDb3VsZCBub3QgY2FwdHVyZSBzbmFwc2hvdCJfcyk7CiAKLSAgICByZXR1cm4g
c25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZl
UmVzb2x1dGlvbjo6WWVzKTsKKyAgICByZXR1cm4gc25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2Uv
cG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKIH0KIAogI2lm
IEVOQUJMRShXRUJfQVJDSElWRSkgJiYgVVNFKENGKQpAQCAtMTExOCw3ICsxMTE4LDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3JlZW5T
aXplT3ZlcnJpZGUoT3B0aW9uYWwKICAgICBpZiAoaGVpZ2h0ICYmICpoZWlnaHQgPD0gMCkKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJTY3JlZW4gaGVpZ2h0IG92ZXJyaWRlIHNob3Vs
ZCBiZSBhIHBvc2l0aXZlIGludGVnZXIiX3MpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLm1haW5G
cmFtZSgpLnNldE92ZXJyaWRlU2NyZWVuU2l6ZShGbG9hdFNpemUod2lkdGgudmFsdWVPcigwKSwg
aGVpZ2h0LnZhbHVlT3IoMCkpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UubWFpbkZyYW1lKCkuc2V0
T3ZlcnJpZGVTY3JlZW5TaXplKEZsb2F0U2l6ZSh3aWR0aC52YWx1ZV9vcigwKSwgaGVpZ2h0LnZh
bHVlX29yKDApKSk7CiAgICAgcmV0dXJuIHsgfTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5j
cHAKaW5kZXggOTA2YThlODQzYmY3NDVkMGU0ZDMwY2QxZGUyNGJlZmVjNWM1OTA5MS4uNTQxMzcw
N2I1N2Q5NGVhYjIzYjU4OTY0YjQzZmZlYzBjZmI1ZjE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CkBAIC02MjksNyArNjI5LDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0b2dnbGVN
ZW1vcnlJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0ZSkKIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6dG9nZ2xlVGltZWxpbmVJbnN0cnVtZW50KEluc3RydW1lbnRTdGF0ZSBzdGF0
ZSkKIHsKICAgICBpZiAoc3RhdGUgPT0gSW5zdHJ1bWVudFN0YXRlOjpTdGFydCkKLSAgICAgICAg
aW50ZXJuYWxTdGFydChXVEY6Om51bGxvcHQpOworICAgICAgICBpbnRlcm5hbFN0YXJ0KHN0ZDo6
bnVsbG9wdCk7CiAgICAgZWxzZQogICAgICAgICBpbnRlcm5hbFN0b3AoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURl
YnVnZ2VyQWdlbnQuY3BwCmluZGV4IGM4OGJiZGMwM2QyNTQxMGZiNjk1OGIwZjA5YWZjNWJmMTg4
ZGIyNTcuLjVmZjk1NmMwZDUyMjc2ZjljOTQwNDg2ZmY1YzAwZDQ1YjhmZmM1ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VE
T01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxz
aXplX3Q+IGNhbGN1bGF0ZURpc3RhbmNlKE5vZGUmIGNoaWxkLCBOb2RlJiBhbmNlc3RvcikKIAog
ICAgICAgICBjdXJyZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShjdXJy
ZW50KTsKICAgICAgICAgaWYgKCFjdXJyZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0
dXJuIGRpc3RhbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1VzZXJHZXN0dXJlRW11bGF0aW9uU2NvcGUuY3BwCmluZGV4IDYz
M2JjZTZlOGYzYzA3ODU2MzJlYjdmMjZkMTcyZjYwMTZiM2VmZDkuLjJiOTA3MzU3Y2JjYmFiNWI1
MDllOWQ1ODJjMDM0Y2QwOGYzYzRlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9Vc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvVXNlckdlc3R1cmVFbXVsYXRpb25TY29w
ZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBVc2VyR2VzdHVy
ZUVtdWxhdGlvblNjb3BlOjpVc2VyR2VzdHVyZUVtdWxhdGlvblNjb3BlKFBhZ2UmIGluc3BlY3Rl
ZFBhZ2UsIGJvb2wgZW11bGF0ZVVzZXJHZXN0dXJlKQogICAgIDogbV9wYWdlQ2hyb21lQ2xpZW50
KGluc3BlY3RlZFBhZ2UuY2hyb21lKCkuY2xpZW50KCkpCi0gICAgLCBtX2dlc3R1cmVJbmRpY2F0
b3IoZW11bGF0ZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBXVEY6Om51bGxvcHQpCisgICAgLCBtX2dlc3R1
cmVJbmRpY2F0b3IoZW11bGF0ZVVzZXJHZXN0dXJlID8gT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkgOiBzdGQ6Om51bGxvcHQpCiAgICAg
LCBtX2VtdWxhdGVVc2VyR2VzdHVyZShlbXVsYXRlVXNlckdlc3R1cmUpCiAgICAgLCBtX3VzZXJX
YXNJbnRlcmFjdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9NYXJnaW5UeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmgKaW5k
ZXggZWFhMjQyZjE4ZGYwZTlhNzJlMmUzZDAyYjU3NWFiNjdiMTlmODZlMy4uYzM5ZDU2NTM0NDU3
NDRkMmZhNjIyODhmM2EyOWZkZTk2ZGZjMWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L01hcmdpblR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5
cGVzLmgKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IFVzZWRWZXJ0aWNhbE1hcmdpbiB7CiAgICAg
Ly8gaW5mbG93IGNoaWxkJ3MgY2FjaGVkIG1hcmdpbiB2YWx1ZXMuCiAgICAgc3RydWN0IFBvc2l0
aXZlQW5kTmVnYXRpdmVQYWlyIHsKICAgICAgICAgc3RydWN0IFZhbHVlcyB7Ci0gICAgICAgICAg
ICBib29sIGlzTm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIHBvc2l0aXZlLnZhbHVlT3IoMCkgfHwg
bmVnYXRpdmUudmFsdWVPcigwKTsgfQorICAgICAgICAgICAgYm9vbCBpc05vblplcm8oKSBjb25z
dCB7IHJldHVybiBwb3NpdGl2ZS52YWx1ZV9vcigwKSB8fCBuZWdhdGl2ZS52YWx1ZV9vcigwKTsg
fQogCiAgICAgICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwb3NpdGl2ZTsKICAgICAgICAg
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG5lZ2F0aXZlOwpAQCAtNzQsMTQgKzc0LDE0IEBAIHN0
cnVjdCBVc2VkVmVydGljYWxNYXJnaW4gewogCiBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgbWFy
Z2luQmVmb3JlKGNvbnN0IFVzZWRWZXJ0aWNhbE1hcmdpbiYgdXNlZFZlcnRpY2FsTWFyZ2luKQog
ewotICAgIHJldHVybiB1c2VkVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzLmJlZm9yZS52
YWx1ZU9yKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlKTsKKyAg
ICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5iZWZvcmUudmFsdWVf
b3IodXNlZFZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcy5iZWZvcmUpOwogfQogCiBz
dGF0aWMgaW5saW5lIExheW91dFVuaXQgbWFyZ2luQWZ0ZXIoY29uc3QgVXNlZFZlcnRpY2FsTWFy
Z2luJiB1c2VkVmVydGljYWxNYXJnaW4pCiB7CiAgICAgaWYgKHVzZWRWZXJ0aWNhbE1hcmdpbi5j
b2xsYXBzZWRWYWx1ZXMuaXNDb2xsYXBzZWRUaHJvdWdoKQogICAgICAgICByZXR1cm4gMF9sdTsK
LSAgICByZXR1cm4gdXNlZFZlcnRpY2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcy5hZnRlci52YWx1
ZU9yKHVzZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMuYWZ0ZXIpOworICAgIHJl
dHVybiB1c2VkVmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzLmFmdGVyLnZhbHVlX29yKHVz
ZWRWZXJ0aWNhbE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMuYWZ0ZXIpOwogfQogCiBzdHJ1Y3Qg
Q29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIHsKQEAgLTk1LDcgKzk1LDcgQEAgc3RydWN0IFVzZWRI
b3Jpem9udGFsTWFyZ2luIHsKIH07CiAKIHN0cnVjdCBQcmVjb21wdXRlZE1hcmdpbkJlZm9yZSB7
Ci0gICAgTGF5b3V0VW5pdCB1c2VkVmFsdWUoKSBjb25zdCB7IHJldHVybiBjb2xsYXBzZWRWYWx1
ZS52YWx1ZU9yKG5vbkNvbGxhcHNlZFZhbHVlKTsgfQorICAgIExheW91dFVuaXQgdXNlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gY29sbGFwc2VkVmFsdWUudmFsdWVfb3Iobm9uQ29sbGFwc2VkVmFs
dWUpOyB9CiAgICAgTGF5b3V0VW5pdCBub25Db2xsYXBzZWRWYWx1ZTsKICAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBjb2xsYXBzZWRWYWx1ZTsKICAgICBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0
aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMgcG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbkJlZm9y
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNw
cAppbmRleCA1MDZlNDczZjZjZGRiMWEyN2Y5NGNiNmM3NDlmOWMwZTFmN2EwY2E1Li5jZTVjYTc0
NzYxOGNjNzg2ZmFjOWE5ODRmOWM1OTg5NGUwODhiOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xMjcsOCArMTI3LDggQEAg
c3RhdGljIGJvb2wgYXJlRmxvYXRzSG9yaXpvbnRhbGx5U29ydGVkKGNvbnN0IEZsb2F0aW5nU3Rh
dGUmIGZsb2F0aW5nU3RhdGUpCiAgICAgYXV0byYgZmxvYXRzID0gZmxvYXRpbmdTdGF0ZS5mbG9h
dHMoKTsKICAgICBhdXRvIHJpZ2h0RWRnZU9mTGVmdEZsb2F0cyA9IExheW91dFVuaXQ6Om1pbigp
OwogICAgIGF1dG8gbGVmdEVkZ2VPZlJpZ2h0RmxvYXRzID0gTGF5b3V0VW5pdDo6bWF4KCk7Ci0g
ICAgV1RGOjpPcHRpb25hbDxMYXlvdXRVbml0PiBsZWZ0Qm90dG9tOwotICAgIFdURjo6T3B0aW9u
YWw8TGF5b3V0VW5pdD4gcmlnaHRCb3R0b207CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0
PiBsZWZ0Qm90dG9tOworICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcmlnaHRCb3R0b207
CiAKICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZsb2F0cykgewogICAgICAgICBpZiAoZmxv
YXRJdGVtLmlzTGVmdFBvc2l0aW9uZWQoKSkgewpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBG
bG9hdFBhaXI6OkxlZnRSaWdodEluZGV4IGZpbmRBdmFpbGFibGVQb3NpdGlvbihGbG9hdEF2b2lk
ZXImIGZsb2F0QXZvaWRlCiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gYmVnaW4oZmxvYXRzLCB7
IGZsb2F0QXZvaWRlci50b3AoKSB9KTsgaXRlcmF0b3IgIT0gZW5kOyArK2l0ZXJhdG9yKSB7CiAg
ICAgICAgIEFTU0VSVCghKCppdGVyYXRvcikuaXNFbXB0eSgpKTsKICAgICAgICAgYXV0byBsZWZ0
UmlnaHRGbG9hdFBhaXIgPSAqaXRlcmF0b3I7Ci0gICAgICAgIGlubmVyTW9zdExlZnRBbmRSaWdo
dCA9IGlubmVyTW9zdExlZnRBbmRSaWdodC52YWx1ZU9yKCpsZWZ0UmlnaHRGbG9hdFBhaXIpOwor
ICAgICAgICBpbm5lck1vc3RMZWZ0QW5kUmlnaHQgPSBpbm5lck1vc3RMZWZ0QW5kUmlnaHQudmFs
dWVfb3IoKmxlZnRSaWdodEZsb2F0UGFpcik7CiAKICAgICAgICAgLy8gTW92ZSB0aGUgYm94IGhv
cml6b250YWxseSBzbyB0aGF0IGl0IGVpdGhlcgogICAgICAgICAvLyAxLiBhbGlnbnMgd2l0aCB0
aGUgY3VycmVudCBmbG9hdGluZyBwYWlyCkBAIC00ODcsNyArNDg3LDcgQEAgdm9pZCBGbG9hdGlu
Z0NvbnRleHQ6OmZpbmRQb3NpdGlvbkZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChGbG9hdEF2b2lk
ZXImIGZsb2F0QXYKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9OwogCi0g
ICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IHN0ZDo6bWF4KGlubmVyTW9zdExlZnRBbmRSaWdodC5s
ZWZ0LnZhbHVlT3IoMCksIGlubmVyTW9zdExlZnRBbmRSaWdodC5yaWdodC52YWx1ZU9yKDApKSAr
IDE7CisgICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IHN0ZDo6bWF4KGlubmVyTW9zdExlZnRBbmRS
aWdodC5sZWZ0LnZhbHVlX29yKDApLCBpbm5lck1vc3RMZWZ0QW5kUmlnaHQucmlnaHQudmFsdWVf
b3IoMCkpICsgMTsKICAgICAgICAgYXV0byogaW50ZXJzZWN0ZWRGbG9hdEJveCA9IG92ZXJsYXBw
aW5nRmxvYXRCb3goc3RhcnRJbmRleCwgZmxvYXRBdm9pZGVyKTsKICAgICAgICAgaWYgKCFpbnRl
cnNlY3RlZEZsb2F0Qm94KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTkyLDggKzU5Miw4IEBA
IFBvc2l0aW9uSW5Db250ZXh0Um9vdCBGbG9hdFBhaXI6OmJvdHRvbSgpIGNvbnN0CiAgICAgYXV0
byogcmlnaHQgPSB0aGlzLT5yaWdodCgpOwogICAgIEFTU0VSVChsZWZ0IHx8IHJpZ2h0KTsKIAot
ICAgIGF1dG8gbGVmdEJvdHRvbSA9IGxlZnQgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJv
b3Q+KFBvc2l0aW9uSW5Db250ZXh0Um9vdCB7IGxlZnQtPnJlY3RXaXRoTWFyZ2luKCkuYm90dG9t
KCkgfSkgOiBXVEY6Om51bGxvcHQ7Ci0gICAgYXV0byByaWdodEJvdHRvbSA9IHJpZ2h0ID8gT3B0
aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihQb3NpdGlvbkluQ29udGV4dFJvb3QgeyByaWdo
dC0+cmVjdFdpdGhNYXJnaW4oKS5ib3R0b20oKSB9KSA6IFdURjo6bnVsbG9wdDsKKyAgICBhdXRv
IGxlZnRCb3R0b20gPSBsZWZ0ID8gT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PihQb3Np
dGlvbkluQ29udGV4dFJvb3QgeyBsZWZ0LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpIH0pIDog
c3RkOjpudWxsb3B0OworICAgIGF1dG8gcmlnaHRCb3R0b20gPSByaWdodCA/IE9wdGlvbmFsPFBv
c2l0aW9uSW5Db250ZXh0Um9vdD4oUG9zaXRpb25JbkNvbnRleHRSb290IHsgcmlnaHQtPnJlY3RX
aXRoTWFyZ2luKCkuYm90dG9tKCkgfSkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobGVmdEJv
dHRvbSAmJiByaWdodEJvdHRvbSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KCpsZWZ0Qm90dG9t
LCAqcmlnaHRCb3R0b20pOwpAQCAtNjYyLDggKzY2Miw4IEBAIEl0ZXJhdG9yJiBJdGVyYXRvcjo6
b3BlcmF0b3IrKygpCiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIG5ldyBmbG9hdGluZydzIGJvdHRv
bSBlZGdlIGlzIHBvc2l0aW9uZWQgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgLXdoaWNoIGVz
c2VudGlhbGx5IG1lYW5zIHNraXBwaW5nIGluLWJldHdlZW4gZmxvYXRzIHRoYXQgYXJlIHBvc2l0
aW9uZWQgaGlnaGVyKS4KICAgICAvLyAzLiBSZXNldCB0aGUgdmVydGljYWwgcG9zaXRpb24gYW5k
IGFsaWduIGl0IHdpdGggdGhlIG5ldyBsZWZ0LXJpZ2h0IHBhaXIuIFRoZXNlIGZsb2F0cyBhcmUg
bm93IHRoZSBpbm5lci1tb3N0IGJveGVzIGZvciB0aGUgY3VycmVudCB2ZXJ0aWNhbCBwb3NpdGlv
bi4KICAgICAvLyBBcyB0aGUgcmVzdWx0IHdlIGhhdmUgbW9yZSBob3Jpem9udGFsIHNwYWNlIG9u
IHRoZSBjdXJyZW50IHZlcnRpY2FsIHBvc2l0aW9uLgotICAgIGF1dG8gbGVmdEJvdHRvbSA9IG1f
Y3VycmVudC5sZWZ0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1fY3VycmVu
dC5sZWZ0KCktPmJvdHRvbSgpKSA6IFdURjo6bnVsbG9wdDsKLSAgICBhdXRvIHJpZ2h0Qm90dG9t
ID0gbV9jdXJyZW50LnJpZ2h0KCkgPyBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+KG1f
Y3VycmVudC5yaWdodCgpLT5ib3R0b20oKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBsZWZ0
Qm90dG9tID0gbV9jdXJyZW50LmxlZnQoKSA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9v
dD4obV9jdXJyZW50LmxlZnQoKS0+Ym90dG9tKCkpIDogc3RkOjpudWxsb3B0OworICAgIGF1dG8g
cmlnaHRCb3R0b20gPSBtX2N1cnJlbnQucmlnaHQoKSA/IE9wdGlvbmFsPFBvc2l0aW9uSW5Db250
ZXh0Um9vdD4obV9jdXJyZW50LnJpZ2h0KCktPmJvdHRvbSgpKSA6IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gdXBkYXRlTGVmdCA9IChsZWZ0Qm90dG9tID09IHJpZ2h0Qm90dG9tKSB8fCAoIXJp
Z2h0Qm90dG9tIHx8IChsZWZ0Qm90dG9tICYmICpsZWZ0Qm90dG9tIDwgKnJpZ2h0Qm90dG9tKSk7
CiAgICAgYXV0byB1cGRhdGVSaWdodCA9IChsZWZ0Qm90dG9tID09IHJpZ2h0Qm90dG9tKSB8fCAo
IWxlZnRCb3R0b20gfHwgKHJpZ2h0Qm90dG9tICYmICpsZWZ0Qm90dG9tID4gKnJpZ2h0Qm90dG9t
KSk7CkBAIC03MDIsNyArNzAyLDcgQEAgdm9pZCBJdGVyYXRvcjo6c2V0KFBvc2l0aW9uSW5Db250
ZXh0Um9vdCB2ZXJ0aWNhbFBvc2l0aW9uKQogCiAgICAgICAgIGF1dG8gaW5kZXggPSBmbG9hdGlu
Z1R5cGUgPT0gRmxvYXQ6OkxlZnQgPyBtX2N1cnJlbnQubV9mbG9hdFBhaXIubGVmdCA6IG1fY3Vy
cmVudC5tX2Zsb2F0UGFpci5yaWdodDsKICAgICAgICAgLy8gU3RhcnQgZnJvbSB0aGUgZW5kIGlm
IHdlIGRvbid0IGhhdmUgY3VycmVudCB5ZXQuCi0gICAgICAgIGluZGV4ID0gaW5kZXgudmFsdWVP
cihtX2Zsb2F0cy5zaXplKCkpOworICAgICAgICBpbmRleCA9IGluZGV4LnZhbHVlX29yKG1fZmxv
YXRzLnNpemUoKSk7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpbmRleCA9
IHByZXZpb3VzRmxvYXRpbmdJbmRleChmbG9hdGluZ1R5cGUsIG1fZmxvYXRzLCAqaW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
ZWEzMDg0MzFmYTQxM2M3MTg5NDM4ZmQ4MzgxYWNlZTg3NjczOWYzYi4uYzZiMzBjNGU3ODAxNzE1
OTBjNjYwNDA5OWNiODEzZWQ1ODBlMzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTI5NSw4ICsyOTUsOCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21l
dHJ5Q29uc3RyYWludHNBZnRlckxheW91dCgpIGNvbnN0CiAgICAgICAgIGlmIChsYXlvdXRCb3gu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpIHsK
ICAgICAgICAgICAgIC8vIHRvcCArIG1hcmdpbi10b3AgKyBib3JkZXItdG9wLXdpZHRoICsgcGFk
ZGluZy10b3AgKyBoZWlnaHQgKyBwYWRkaW5nLWJvdHRvbSArIGJvcmRlci1ib3R0b20td2lkdGgg
KyBtYXJnaW4tYm90dG9tICsgYm90dG9tID0gaGVpZ2h0IG9mIGNvbnRhaW5pbmcgYmxvY2sKICAg
ICAgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkuY29udGVudEJveEhlaWdodCgpOwotICAgICAgICAgICAgQVNTRVJUKEJveEdlb21ldHJ5
Ojpib3JkZXJCb3hUb3AoYm94R2VvbWV0cnkpICsgYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkg
KyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1
ZU9yKDApICsgYm94R2VvbWV0cnkuY29udGVudEJveEhlaWdodCgpCi0gICAgICAgICAgICAgICAg
KyBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKSArIGJveEdlb21ldHJ5LmJv
cmRlckJvdHRvbSgpICsgYm94R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSA9PSBjb250YWluaW5nQmxv
Y2tIZWlnaHQpOworICAgICAgICAgICAgQVNTRVJUKEJveEdlb21ldHJ5Ojpib3JkZXJCb3hUb3Ao
Ym94R2VvbWV0cnkpICsgYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5i
b3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGJveEdl
b21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQoKQorICAgICAgICAgICAgICAgICsgYm94R2VvbWV0cnku
cGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApICsgYm94R2VvbWV0cnkuYm9yZGVyQm90dG9tKCkg
KyBib3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpID09IGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZDRjZDdjMjEx
ZGQxMDU0ZTVhMThmNDY1YjM4YWE3OTE5YWJiYzg0NS4uZDIzZjlmZmQwMjI3NWEyM2UwYjhiY2Vh
NDAzZjg2MzczMDFkMDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmssCiAgICAg
ICAgIFRhYmxlTmVlZHNBY2Nlc3NUb1RhYmxlV3JhcHBlcgogICAgIH07Ci0gICAgY29uc3QgQm94
R2VvbWV0cnkmIGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIE9wdGlvbmFsPEVzY2FwZVJlYXNv
bj4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGNvbnN0IEJveEdlb21ldHJ5JiBnZW9tZXRy
eUZvckJveChjb25zdCBCb3gmLCBPcHRpb25hbDxFc2NhcGVSZWFzb24+ID0gc3RkOjpudWxsb3B0
KSBjb25zdDsKIAogICAgIGJvb2wgaXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gcm9vdCgpLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpOyB9CiAgICAg
Ym9vbCBpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gcm9vdCgpLmVz
dGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCmluZGV4IDIxNDdiMTE3ZmIyZWQyYzUyODk1ZDA3Y2Q2OTk0MTVkNGVkZTgyMDMu
LjRlN2MyMDlhOTllMzE1Y2Q2YjEyZjk1NmIzYzc1YTNmMzdiNjcwMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ0dlb21ldHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdHZW9tZXRyeS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0
PiBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBPcAogICAgICAgICBpZiAobGF5b3V0Qm94LnN0eWxlKCkuYm94U2l6aW5nKCkgPT0gQm94U2l6
aW5nOjpDb250ZW50Qm94KQogICAgICAgICAgICAgcmV0dXJuIGhlaWdodDsKICAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91
dEJveCk7Ci0gICAgICAgIHJldHVybiAqaGVpZ2h0IC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9y
ZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDApKTsKKyAgICAg
ICAgcmV0dXJuICpoZWlnaHQgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdl
b21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDApKTsKICAgICB9CiAgICAgcmV0dXJu
IHsgfTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0
aW5nR2VvbWV0cnk6OmNvbXB1dGVkV2lkdGgoY29uc3QgQm94JiBsYXlvdXRCb3gsIExheQogICAg
ICAgICBpZiAoc3R5bGUuYm94U2l6aW5nKCkgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94IHx8IHN0
eWxlLndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSkKICAgICAgICAgICAgIHJldHVybiBjb21w
dXRlZFdpZHRoOwogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0
KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgcmV0dXJuICpjb21wdXRlZFdp
ZHRoIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5Lmhvcml6
b250YWxQYWRkaW5nKCkudmFsdWVPcigwKSk7CisgICAgICAgIHJldHVybiAqY29tcHV0ZWRXaWR0
aCAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9u
dGFsUGFkZGluZygpLnZhbHVlX29yKDApKTsKICAgICB9CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAg
LTM2MCw4ICszNjAsOCBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0
T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0CiAgICAgYXV0byBoZWlnaHQg
PSBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFs
dWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94LCBjb250YWluaW5n
QmxvY2tIZWlnaHQpOwogICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEZvcm1hdHRp
bmdHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxD
b25zdHJhaW50cyk7CiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMg
dXNlZFZlcnRpY2FsTWFyZ2luOyAKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5w
YWRkaW5nVG9wKCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hHZW9t
ZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKKyAgICBhdXRvIHBhZGRpbmdUb3AgPSBi
b3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBwYWRkaW5nQm90
dG9tID0gYm94R2VvbWV0cnkucGFkZGluZ0JvdHRvbSgpLnZhbHVlX29yKDApOwogICAgIGF1dG8g
Ym9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CiAgICAgYXV0byBib3JkZXJCb3R0
b20gPSBib3hHZW9tZXRyeS5ib3JkZXJCb3R0b20oKTsKIApAQCAtMzg5LDM5ICszODksMzkgQEAg
VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2Vk
VmVydGljYWxHZW9tZXRyeShjb25zdAogICAgIGlmICghdG9wICYmICFoZWlnaHQgJiYgYm90dG9t
KSB7CiAgICAgICAgIC8vICMxCiAgICAgICAgIGhlaWdodCA9IGNvbnRlbnRIZWlnaHRGb3JGb3Jt
YXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Qm94KTsKLSAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
ID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFy
Z2luID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICB0b3AgPSBjb250
YWluaW5nQmxvY2tIZWlnaHQgLSAodXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRv
cCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSAr
IHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciArICpib3R0b20pOyAKICAgICB9CiAKICAgICBpZiAo
IXRvcCAmJiAhYm90dG9tICYmIGhlaWdodCkgewogICAgICAgICAvLyAjMgogICAgICAgICB0b3Ag
PSBzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRCb3gs
IHZlcnRpY2FsQ29uc3RyYWludHMpOwotICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OworICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRl
clRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRv
bSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcik7CiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQg
JiYgIWJvdHRvbSAmJiB0b3ApIHsKICAgICAgICAgLy8gIzMKICAgICAgICAgaGVpZ2h0ID0gY29u
dGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRCb3gpOwotICAgICAgICB1
c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVl
T3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OworICAgICAg
ICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZh
bHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAg
ICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRp
Y2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFk
ZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcik7CiAg
ICAgfQogCiAgICAgaWYgKCF0b3AgJiYgaGVpZ2h0ICYmIGJvdHRvbSkgewogICAgICAgICAvLyAj
NAotICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4u
YmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigw
KSB9OworICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVl
X29yKDApIH07CiAgICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICh1c2VkVmVy
dGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBw
YWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyICsg
KmJvdHRvbSk7CiAgICAgfQogCiAgICAgaWYgKCFoZWlnaHQgJiYgdG9wICYmIGJvdHRvbSkgewog
ICAgICAgICAvLyAjNQotICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVkVmVy
dGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0
ZXIudmFsdWVPcigwKSB9OworICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7IGNvbXB1dGVk
VmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgICAgIGhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBh
ZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyICsgKmJvdHRvbSk7CiAgICAgfQogCiAgICAgaWYgKCFib3R0b20gJiYgdG9wICYm
IGhlaWdodCkgewogICAgICAgICAvLyAjNgotICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4gPSB7
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OworICAgICAgICB1c2VkVmVydGljYWxNYXJnaW4g
PSB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDApLCBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDApIH07CiAgICAgICAgIGJvdHRvbSA9IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJv
dHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcik7CiAgICAgfQogCkBAIC00ODAsMTUgKzQ4
MCwxNSBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dO
b25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjbwogICAgIGF1dG8gd2lkdGggPSBvdmVycmlk
ZGVuSG9yaXpvbnRhbFZhbHVlcy53aWR0aCA/IG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLndp
ZHRoIDogY29tcHV0ZWRXaWR0aChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAg
ICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEZvcm1hdHRpbmdHZW9tZXRyeTo6Y29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsK
ICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9yaXpvbnRhbE1hcmdpbjsKLSAgICBhdXRv
IHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwotICAg
IGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigw
KTsKKyAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1
ZV9vcigwKTsKKyAgICBhdXRvIHBhZGRpbmdSaWdodCA9IGJveEdlb21ldHJ5LnBhZGRpbmdSaWdo
dCgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gYm9yZGVyTGVmdCA9IGJveEdlb21ldHJ5LmJvcmRl
ckxlZnQoKTsKICAgICBhdXRvIGJvcmRlclJpZ2h0ID0gYm94R2VvbWV0cnkuYm9yZGVyUmlnaHQo
KTsKICAgICBpZiAoIWxlZnQgJiYgIXdpZHRoICYmICFyaWdodCkgewogICAgICAgICAvLyBJZiBh
bGwgdGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0JyBhcmUgJ2F1dG8nOiBGaXJz
dCBzZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmln
aHQnIHRvIDAuCiAgICAgICAgIC8vIFRoZW4sIGlmIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eSBv
ZiB0aGUgZWxlbWVudCBlc3RhYmxpc2hpbmcgdGhlIHN0YXRpYy1wb3NpdGlvbiBjb250YWluaW5n
IGJsb2NrIGlzICdsdHInIHNldCAnbGVmdCcgdG8gdGhlIHN0YXRpYwogICAgICAgICAvLyBwb3Np
dGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgdGhyZWUgYmVsb3c7IG90aGVyd2lzZSwgc2V0ICdy
aWdodCcgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgb25lIGJl
bG93LgotICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFs
dWVPcigwKSB9OworICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4u
ZW5kLnZhbHVlX29yKDApIH07CiAKICAgICAgICAgYXV0byBzdGF0aWNIb3Jpem9udGFsUG9zaXRp
b24gPSBzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91
dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24pCkBAIC01MzAsNyArNTMwLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY28KICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2
YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNr
IHRoZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaXggcnVsZXMgdGhhdCBhcHBsaWVzLgotICAgICAg
ICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0
LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9Owor
ICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0LnZhbHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29y
KDApIH07CiAgICAgfQogCiAgICAgaWYgKCFsZWZ0ICYmICF3aWR0aCAmJiByaWdodCkgewpAQCAt
NjA5LDggKzYwOSw4IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgUmVwCiAgICAgYXV0byBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFy
Z2luKHJlcGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwogICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyOwotICAgIGF1dG8gcGFkZGluZ1RvcCA9IGJveEdlb21ldHJ5LnBh
ZGRpbmdUb3AoKS52YWx1ZU9yKDApOwotICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGJveEdlb21l
dHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOworICAgIGF1dG8gcGFkZGluZ1RvcCA9IGJv
eEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKTsKKyAgICBhdXRvIHBhZGRpbmdCb3R0
b20gPSBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBi
b3JkZXJUb3AgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKTsKICAgICBhdXRvIGJvcmRlckJvdHRv
bSA9IGJveEdlb21ldHJ5LmJvcmRlckJvdHRvbSgpOwogCkBAIC02MjEsNyArNjIxLDcgQEAgVmVy
dGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGlj
YWxHZW9tZXRyeShjb25zdCBSZXAKIAogICAgIGlmICghYm90dG9tKSB7CiAgICAgICAgIC8vICMy
Ci0gICAgICAgIHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZS52YWx1ZU9yKDApOworICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCk7CiAgICAgICAgIHVzZWRNYXJnaW5BZnRlciA9IHVz
ZWRNYXJnaW5CZWZvcmU7CiAgICAgfQogCkBAIC02OTQsOCArNjk0LDggQEAgSG9yaXpvbnRhbEdl
b21ldHJ5IEZvcm1hdHRpbmdHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2Vv
bWV0cnkoY29uc3QKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luU3RhcnQgPSBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiAgICAgYXV0byB3
aWR0aCA9IGlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKHJlcGxhY2VkQm94LCBo
b3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMsIG92ZXJyaWRkZW5Ib3Jp
em9udGFsVmFsdWVzKS5jb250ZW50V2lkdGg7Ci0gICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdl
b21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKLSAgICBhdXRvIHBhZGRpbmdSaWdodCA9
IGJveEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBwYWRkaW5n
TGVmdCA9IGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7CisgICAgYXV0byBw
YWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKICAg
ICBhdXRvIGJvcmRlckxlZnQgPSBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCk7CiAgICAgYXV0byBi
b3JkZXJSaWdodCA9IGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCk7CiAKQEAgLTcxMCw4ICs3MTAs
OCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0dlb21ldHJ5OjpvdXRPZkZsb3dSZXBs
YWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdAogCiAgICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkg
ewogICAgICAgICAvLyAjMgotICAgICAgICB1c2VkTWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKTsKLSAgICAgICAgdXNlZE1hcmdpbkVuZCA9IGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZE1hcmdp
blN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDApOworICAg
ICAgICB1c2VkTWFyZ2luRW5kID0gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9v
cigwKTsKICAgICB9CiAKICAgICBpZiAoIXVzZWRNYXJnaW5TdGFydCAmJiAhdXNlZE1hcmdpbkVu
ZCkgewpAQCAtNzg2LDcgKzc4Niw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGlu
Z0dlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IEJveCYgbGF5b3V0Qm94CiAgICAgYXV0
byBoZWlnaHQgPSBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZl
cnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHQobGF5b3V0Qm94KTsK
ICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwog
ICAgIC8vICMxCi0gICAgYXV0byB1c2VkVmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJn
aW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZh
bHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKKyAg
ICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFw
c2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsgCiAgICAgLy8gIzIKICAg
ICBpZiAoIWhlaWdodCkgewogICAgICAgICBBU1NFUlQoaXNIZWlnaHRBdXRvKGxheW91dEJveCkp
OwpAQCAtODMxLDcgKzgzMSw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nR2Vv
bWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRDb250ZW50V2lkdGhBbmRNYXJnCiAgICAgYXV0byBj
b21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkSG9y
aXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICAv
LyAjMQotICAgIGF1dG8gdXNlZEhvcml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJn
aW4geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDApIH07CisgICAgYXV0byB1c2VkSG9yaXpvbnRh
bGxNYXJnaW4gPSBVc2VkSG9yaXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9v
cigwKSB9OwogICAgIC8vICMyCiAgICAgYXV0byB3aWR0aCA9IG92ZXJyaWRkZW5Ib3Jpem9udGFs
VmFsdWVzLndpZHRoID8gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggOiBjb21wdXRl
ZFdpZHRoKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aCk7CiAg
ICAgaWYgKCF3aWR0aCkKQEAgLTg2Miw3ICs4NjIsNyBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4g
Rm9ybWF0dGluZ0dlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2lu
KAogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dlb21ldHJ5
Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJh
aW50cyk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0
cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGluZyByZXBsYWNlZCAtPiByZWRpcmVj
dGVkIHRvIGlubGluZSByZXBsYWNlZCIpOwotICAgIGF1dG8gdXNlZE1hcmdpbiA9IFVzZWRIb3Jp
em9udGFsTWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCks
IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OworICAgIGF1dG8gdXNl
ZE1hcmdpbiA9IFVzZWRIb3Jpem9udGFsTWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0LnZhbHVlX29yKDApLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29y
KDApIH07CiAgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKHJl
cGxhY2VkQm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHsgfSwgeyBvdmVycmlkZGVuSG9yaXpv
bnRhbFZhbHVlcy53aWR0aCwgdXNlZE1hcmdpbiB9KTsKIH0KIApAQCAtOTE3LDEwICs5MTcsMTAg
QEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkQ29udGVudEhlaWdodEFuZE1hcmdpbigKICAgICAvLyAjMQogICAgIGF1dG8mIGZvcm1hdHRp
bmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKICAgICBhdXRvIGNvbXB1dGVk
VmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJn
aW4ocmVwbGFjZWRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgYXV0byB1c2VkVmVy
dGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNv
bXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxN
YXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OworICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0g
VXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52
YWx1ZV9vcigwKSB9OwogICAgIGF1dG8mIHN0eWxlID0gcmVwbGFjZWRCb3guc3R5bGUoKTsKIAot
ICAgIGF1dG8gaGVpZ2h0ID0gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodCA/IG92ZXJy
aWRkZW5WZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0KHJlcGxh
Y2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxDb25zdHJhaW50cy0+bG9naWNh
bEhlaWdodCA6IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBoZWlnaHQgPSBvdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMuaGVpZ2h0ID8gb3ZlcnJpZGRlblZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1
ZSgpIDogY29tcHV0ZWRIZWlnaHQocmVwbGFjZWRCb3gsIHZlcnRpY2FsQ29uc3RyYWludHMgPyB2
ZXJ0aWNhbENvbnN0cmFpbnRzLT5sb2dpY2FsSGVpZ2h0IDogc3RkOjpudWxsb3B0KTsKICAgICBh
dXRvIGhlaWdodElzQXV0byA9ICFvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0ICYmIGlz
SGVpZ2h0QXV0byhyZXBsYWNlZEJveCk7CiAgICAgYXV0byB3aWR0aElzQXV0byA9IHN0eWxlLmxv
Z2ljYWxXaWR0aCgpLmlzQXV0bygpOwogCkBAIC05NzEsMTggKzk3MSwxOCBAQCBDb250ZW50V2lk
dGhBbmRNYXJnaW4gRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVSZXBsYWNlZENvbnRlbnRXaWR0
aEFuZE1hcmdpbihjbwogICAgIGF1dG8gdXNlZE1hcmdpblN0YXJ0ID0gWyZdIHsKICAgICAgICAg
aWYgKG92ZXJyaWRkZW5Ib3Jpem9udGFsVmFsdWVzLm1hcmdpbikKICAgICAgICAgICAgIHJldHVy
biBvdmVycmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4tPnN0YXJ0OwotICAgICAgICByZXR1
cm4gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMF9sdSk7CisgICAgICAg
IHJldHVybiBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMF9sdSk7CiAg
ICAgfTsKIAogICAgIGF1dG8gdXNlZE1hcmdpbkVuZCA9IFsmXSB7CiAgICAgICAgIGlmIChvdmVy
cmlkZGVuSG9yaXpvbnRhbFZhbHVlcy5tYXJnaW4pCiAgICAgICAgICAgICByZXR1cm4gb3ZlcnJp
ZGRlbkhvcml6b250YWxWYWx1ZXMubWFyZ2luLT5lbmQ7Ci0gICAgICAgIHJldHVybiBjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMF9sdSk7CisgICAgICAgIHJldHVybiBjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDBfbHUpOwogICAgIH07CiAKICAgICBh
dXRvIHdpZHRoID0gb3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMud2lkdGggPyBvdmVycmlkZGVu
SG9yaXpvbnRhbFZhbHVlcy53aWR0aCA6IGNvbXB1dGVkV2lkdGgocmVwbGFjZWRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cy5sb2dpY2FsV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0g
aXNIZWlnaHRBdXRvKHJlcGxhY2VkQm94KTsKLSAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkSGVp
Z2h0KHJlcGxhY2VkQm94LCB2ZXJ0aWNhbENvbnN0cmFpbnRzID8gdmVydGljYWxDb25zdHJhaW50
cy0+bG9naWNhbEhlaWdodCA6IFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBoZWlnaHQgPSBjb21w
dXRlZEhlaWdodChyZXBsYWNlZEJveCwgdmVydGljYWxDb25zdHJhaW50cyA/IHZlcnRpY2FsQ29u
c3RyYWludHMtPmxvZ2ljYWxIZWlnaHQgOiBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKCF3aWR0
aCAmJiBoZWlnaHRJc0F1dG8gJiYgcmVwbGFjZWRCb3guaGFzSW50cmluc2ljV2lkdGgoKSkgewog
ICAgICAgICAvLyAjMQpAQCAtOTkwLDcgKzk5MCw3IEBAIENvbnRlbnRXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZVJlcGxhY2VkQ29udGVudFdpZHRoQW5kTWFyZ2luKGNv
CiAgICAgfSBlbHNlIGlmICgoIXdpZHRoICYmIGhlaWdodElzQXV0byAmJiAhcmVwbGFjZWRCb3gu
aGFzSW50cmluc2ljV2lkdGgoKSAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNIZWlnaHQoKSAm
JiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNSYXRpbygpKQogICAgICAgICB8fCAoIXdpZHRoICYm
IGhlaWdodCAmJiByZXBsYWNlZEJveC5oYXNJbnRyaW5zaWNSYXRpbygpKSkgewogICAgICAgICAv
LyAjMgotICAgICAgICB3aWR0aCA9IGhlaWdodC52YWx1ZU9yKHJlcGxhY2VkQm94Lmhhc0ludHJp
bnNpY0hlaWdodCgpKSAqIHJlcGxhY2VkQm94LmludHJpbnNpY1JhdGlvKCk7CisgICAgICAgIHdp
ZHRoID0gaGVpZ2h0LnZhbHVlX29yKHJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY0hlaWdodCgpKSAq
IHJlcGxhY2VkQm94LmludHJpbnNpY1JhdGlvKCk7CiAgICAgfSBlbHNlIGlmICghd2lkdGggJiYg
aGVpZ2h0SXNBdXRvICYmIHJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY1JhdGlvKCkgJiYgIXJlcGxh
Y2VkQm94Lmhhc0ludHJpbnNpY1dpZHRoKCkgJiYgIXJlcGxhY2VkQm94Lmhhc0ludHJpbnNpY0hl
aWdodCgpKSB7CiAgICAgICAgIC8vICMzCiAgICAgICAgIC8vIEZJWE1FOiB1bmRlZmluZWQgYnV0
IHN1cmVseSBkb2FibGUuCkBAIC0xMDM5LDcgKzEwMzksNyBAQCBMYXlvdXRTaXplIEZvcm1hdHRp
bmdHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IEJveCYgbGF5
b3V0QgogICAgICAgICBib3R0b20gPSAtKnRvcDsKICAgICB9IGVsc2UgewogICAgICAgICAvLyAj
NAotICAgICAgICBib3R0b20gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGJvdHRvbSA9IHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyBGb3IgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGVsZW1l
bnRzLCAnbGVmdCcgYW5kICdyaWdodCcgbW92ZSB0aGUgYm94KGVzKSBob3Jpem9udGFsbHksIHdp
dGhvdXQgY2hhbmdpbmcgdGhlaXIgc2l6ZS4KQEAgLTEwNzEsMTQgKzEwNzEsMTQgQEAgTGF5b3V0
U2l6ZSBGb3JtYXR0aW5nR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChj
b25zdCBCb3gmIGxheW91dEIKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCiAg
ICAgICAgICAgICByaWdodCA9IC0qbGVmdDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGVm
dCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGxlZnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgQVNTRVJUKCFib3R0b20gfHwgKnRvcCA9PSAtKmJvdHRvbSk7CiAgICAgQVNTRVJU
KCFsZWZ0IHx8ICpsZWZ0ID09IC0qcmlnaHQpOwogCiAgICAgYXV0byB0b3BQb3NpdGlvbk9mZnNl
dCA9ICp0b3A7Ci0gICAgYXV0byBsZWZ0UG9zaXRpb25PZmZzZXQgPSBsZWZ0LnZhbHVlT3IoLSpy
aWdodCk7CisgICAgYXV0byBsZWZ0UG9zaXRpb25PZmZzZXQgPSBsZWZ0LnZhbHVlX29yKC0qcmln
aHQpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJl
YW0gPDwgIltQb3NpdGlvbl0gLT4gcG9zaXRpb25lZCBpbmZsb3cgLT4gdG9wIG9mZnNldCgiIDw8
IHRvcFBvc2l0aW9uT2Zmc2V0IDw8ICJweCkgbGVmdCBvZmZzZXQoIiA8PCBsZWZ0UG9zaXRpb25P
ZmZzZXQgPDwgInB4KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0
dXJuIHsgbGVmdFBvc2l0aW9uT2Zmc2V0LCB0b3BQb3NpdGlvbk9mZnNldCB9OwpAQCAtMTEwNSw3
ICsxMTA1LDcgQEAgRWRnZXMgRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZEJvcmRlcihjb25z
dCBCb3gmIGxheW91dEJveCkgY29uc3QKIE9wdGlvbmFsPEVkZ2VzPiBGb3JtYXR0aW5nR2VvbWV0
cnk6OmNvbXB1dGVkUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0VW5p
dCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKIHsKICAgICBpZiAoIWxheW91dEJveC5pc1Bh
ZGRpbmdBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHls
ZSgpOwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFt
IDw8ICJbUGFkZGluZ10gLT4gbGF5b3V0Qm94OiAiIDw8ICZsYXlvdXRCb3gpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2Vv
bWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0
dGluZ0dlb21ldHJ5LmgKaW5kZXggYWI3OWFmYjRjZGZmNjIyMWYwMTllNzMyZjBiZjQwMTYyNGIw
YWQyMC4uMDYyNGYyZjRkZTFmMTgzOTU4NDgxNDNjNDdmOGE4ZTc2ZTgxY2RmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nR2Vv
bWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdHZW9tZXRyeS5oCkBAIC03Myw4ICs3Myw4IEBAIHB1YmxpYzoKICAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0
eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVydHkpIGNv
bnN0OwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRNaW5IZWlnaHQoY29uc3Qg
Qm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gV1RGOjpu
dWxsb3B0KSBjb25zdDsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZE1heEhlaWdo
dChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQg
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVk
TWluSGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9j
a0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
Y29tcHV0ZWRNYXhIZWlnaHQoY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29udGFp
bmluZ0Jsb2NrSGVpZ2h0ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGNvbXB1dGVkTWluV2lkdGgoY29uc3QgQm94JiwgTGF5b3V0VW5pdCBjb250YWlu
aW5nQmxvY2tXaWR0aCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRN
YXhXaWR0aChjb25zdCBCb3gmLCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25z
dDsKQEAgLTg0LDkgKzg0LDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgY29udGVudEhlaWdo
dEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjb25zdCBDb250YWluZXJCb3gmKSBjb25zdDsKIAog
ICAgIENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93Q29udGVudCBjb25zdHJhaW50c0Zvck91dE9mRmxv
d0NvbnRlbnQoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7Ci0gICAgQ29uc3RyYWludHNGb3JJ
bkZsb3dDb250ZW50IGNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudChjb25zdCBDb250YWluZXJC
b3gmLCBPcHRpb25hbDxGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uPiA9IFdURjo6bnVs
bG9wdCkgY29uc3Q7CisgICAgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IGNvbnN0cmFpbnRz
Rm9ySW5GbG93Q29udGVudChjb25zdCBDb250YWluZXJCb3gmLCBPcHRpb25hbDxGb3JtYXR0aW5n
Q29udGV4dDo6RXNjYXBlUmVhc29uPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBjb21wdXRlZEhlaWdodChjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlv
dXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkSGVpZ2h0KGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7
CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gY29tcHV0ZWRXaWR0aChjb25zdCBCb3gmLCBMYXlv
dXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKSBjb25zdDsKIAogICAgIGJvb2wgaXNCbG9ja0Zv
cm1hdHRpbmdHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkuaXNC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4
IDYzZjIyMDIyZWY3ZmZmOTkyOWM0YjU1YzQ4NzE0NzRiN2M1MDdlZWQuLjA0OTQ4MTMxNTdmNTM3
NjQ0ZDdhMGQxOTAyZGE2MTU3M2YzYzYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcApA
QCAtNjIsOSArNjIsOSBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdRdWlya3M6OmhlaWdodFZhbHVl
T2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KAogICAgICAgICAgICAgYXV0
byB2ZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFy
Z2luKCpjb250YWluaW5nQmxvY2ssIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
KmNvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmluZEZp
eGVkSGVpZ2h0QW5jZXN0b3JRdWlyayk7Ci0gICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgYm94R2VvbWV0cnkucGFk
ZGluZ0JvdHRvbSgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGJveEdlb21ldHJ5LnBh
ZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAgIGF1dG8gdmVydGljYWxCb3Jk
ZXIgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LmJvcmRlckJvdHRvbSgp
OwotICAgICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9y
ZGVyICs9IHZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgdmVydGljYWxNYXJnaW4u
YWZ0ZXIudmFsdWVPcigwKSArIHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyOworICAg
ICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyICs9
IHZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSArIHZlcnRpY2FsTWFyZ2luLmFmdGVy
LnZhbHVlX29yKDApICsgdmVydGljYWxQYWRkaW5nICsgdmVydGljYWxCb3JkZXI7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmNvbnRhaW5pbmdC
bG9jaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBjMGZiMWZhNDg2NzM1ODgwZjNkNzNlN2RmYmE4YTZhYjY0ZmIxMjIyLi45M2RmNjRkODNk
M2M3YjgwNGEwN2EyOTVhOTE1ZTBkOGI4ZGVkMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5Nyw5ICsxOTcsOSBAQCBMYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKIAogICAg
IGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgKnRoaXMsIGZvcm1hdHRp
bmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OwogICAgIGlmIChhdXRvIGZsb2F0VG9wID0gZmxv
YXRpbmdDb250ZXh0LnRvcCgpKSB7Ci0gICAgICAgIHRvcCA9IHN0ZDo6bWluKCpmbG9hdFRvcCwg
dG9wLnZhbHVlT3IoKmZsb2F0VG9wKSk7CisgICAgICAgIHRvcCA9IHN0ZDo6bWluKCpmbG9hdFRv
cCwgdG9wLnZhbHVlX29yKCpmbG9hdFRvcCkpOwogICAgICAgICBhdXRvIGZsb2F0Qm90dG9tID0g
KmZsb2F0aW5nQ29udGV4dC5ib3R0b20oKTsKLSAgICAgICAgYm90dG9tID0gc3RkOjptYXgoZmxv
YXRCb3R0b20sIGJvdHRvbS52YWx1ZU9yKGZsb2F0Qm90dG9tKSk7CisgICAgICAgIGJvdHRvbSA9
IHN0ZDo6bWF4KGZsb2F0Qm90dG9tLCBib3R0b20udmFsdWVfb3IoZmxvYXRCb3R0b20pKTsKICAg
ICB9CiAgICAgcmV0dXJuICpib3R0b20gLSAqdG9wOwogfQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZv
aWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cHJlY29tcHV0ZVZlcnRpY2FsUG9zaXRpb25Gb3JC
b3hBbmRBbmNlc3RvcnMoY29uc3QKICAgICAgICAgfSgpOwogCiAgICAgICAgIGF1dG8gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbiA9IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFy
Z2luKCphbmNlc3RvciwgY29uc3RyYWludHNGb3JBbmNlc3Rvci5ob3Jpem9udGFsKTsKLSAgICAg
ICAgYXV0byB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25D
b2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDAp
LCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgYXV0
byB1c2VkTm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBz
ZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKSB9OwogICAgICAgICBhdXRvIHBy
ZWNvbXB1dGVkTWFyZ2luQmVmb3JlID0gbWFyZ2luQ29sbGFwc2UoKS5wcmVjb21wdXRlZE1hcmdp
bkJlZm9yZSgqYW5jZXN0b3IsIHVzZWROb25Db2xsYXBzZWRNYXJnaW4sIGZvcm1hdHRpbmdHZW9t
ZXRyeSk7CiAKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5i
b3hHZW9tZXRyeSgqYW5jZXN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0dlb21ldHJ5LmNwcAppbmRleCBlYTk5ZjcyNTA0OWRkZDA4ZjVmMmFjYzdkY2Q1Y2M0MTU5
YzY2ZjcxLi41NTlmZTM2MzZmNDk5ODk2Nzc4NTM4NmFkNjZlMTRkNDZkZTRiZDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtNzAsOCAr
NzAsOCBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5Ojpp
bkZsb3dOb25SZXBsYWNlZENvbnRlbnRIZWlnaHRBbgogCiAgICAgICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAg
ICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBGb3JtYXR0aW5nR2VvbWV0cnk6OmNv
bXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMpOwot
ICAgICAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9u
Q29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigw
KSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IAotICAgICAgICBh
dXRvIGJvcmRlckFuZFBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdl
b21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOworICAgICAgICBhdXRvIG5vbkNvbGxhcHNl
ZE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYWZ0ZXIudmFsdWVfb3IoMCkgfTsgCisgICAgICAgIGF1dG8gYm9yZGVyQW5kUGFkZGluZ1Rv
cCA9IGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZh
bHVlX29yKDApOwogICAgICAgICBhdXRvIGhlaWdodCA9IG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVl
cy5oZWlnaHQgPyBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21w
dXRlZEhlaWdodChsYXlvdXRCb3gpOwogCiAgICAgICAgIGlmIChoZWlnaHQpCkBAIC0xNTUsMTQg
KzE1NSwxNCBAQCBDb250ZW50V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk6
OmluRmxvd05vblJlcGxhY2VkQ29udGVudFdpZHRoQW5kTQogICAgICAgICBVc2VkSG9yaXpvbnRh
bE1hcmdpbiB1c2VkSG9yaXpvbnRhbE1hcmdpbjsKICAgICAgICAgYXV0byBib3JkZXJMZWZ0ID0g
Ym94R2VvbWV0cnkuYm9yZGVyTGVmdCgpOwogICAgICAgICBhdXRvIGJvcmRlclJpZ2h0ID0gYm94
R2VvbWV0cnkuYm9yZGVyUmlnaHQoKTsKLSAgICAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGJveEdl
b21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsKLSAgICAgICAgYXV0byBwYWRkaW5nUmln
aHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOworICAgICAgICBhdXRv
IHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZV9vcigwKTsKKyAg
ICAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1
ZV9vcigwKTsKIAogICAgICAgICAvLyAjMQogICAgICAgICBpZiAod2lkdGgpIHsKLSAgICAgICAg
ICAgIGF1dG8gaG9yaXpvbnRhbFNwYWNlRm9yTWFyZ2luID0gY29udGFpbmluZ0Jsb2NrV2lkdGgg
LSAoY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCkgKyBib3JkZXJMZWZ0
ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSk7CisgICAgICAgICAgICBhdXRv
IGhvcml6b250YWxTcGFjZUZvck1hcmdpbiA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSArIGJvcmRlckxlZnQgKyBwYWRk
aW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwKSk7CiAgICAgICAgICAgICBpZiAoaG9yaXpv
bnRhbFNwYWNlRm9yTWFyZ2luIDwgMCkKLSAgICAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1h
cmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9OworICAgICAgICAgICAgICAgIHVz
ZWRIb3Jpem9udGFsTWFyZ2luID0geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFs
dWVfb3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVfb3IoMCkgfTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vICMyCkBAIC0xOTAsNyArMTkwLDcgQEAgQ29udGVudFdpZHRo
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZENvbnRl
bnRXaWR0aEFuZE0KIAogICAgICAgICAvLyAjNAogICAgICAgICBpZiAoIXdpZHRoKSB7Ci0gICAg
ICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbiA9IHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LnN0YXJ0LnZhbHVlT3IoMCksIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigw
KSB9OworICAgICAgICAgICAgdXNlZEhvcml6b250YWxNYXJnaW4gPSB7IGNvbXB1dGVkSG9yaXpv
bnRhbE1hcmdpbi5zdGFydC52YWx1ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZV9vcigwKSB9OwogICAgICAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0
aCAtICh1c2VkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVm
dCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uZW5k
KTsKICAgICAgICAgfQogCkBAIC0yMDMsOCArMjAzLDggQEAgQ29udGVudFdpZHRoQW5kTWFyZ2lu
IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZENvbnRlbnRXaWR0aEFu
ZE0KICAgICAgICAgYXV0byBzaG91bGRBcHBseUNlbnRlckFsaWduRm9yQmxvY2tDb250ZW50ID0g
Y29udGFpbmluZ0Jsb2NrU3R5bGUudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6V2ViS2l0
Q2VudGVyICYmIChjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgfHwgY29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luLmVuZCk7CiAgICAgICAgIGlmIChzaG91bGRBcHBseUNlbnRlckFsaWduRm9y
QmxvY2tDb250ZW50KSB7CiAgICAgICAgICAgICBhdXRvIGJvcmRlckJveFdpZHRoID0gKGJvcmRl
ckxlZnQgKyBwYWRkaW5nTGVmdCAgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdo
dCk7Ci0gICAgICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luLnN0YXJ0LnZhbHVlT3IoMCk7Ci0gICAgICAgICAgICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIGF1dG8gbWFy
Z2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVfb3IoMCk7Cisg
ICAgICAgICAgICBhdXRvIG1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQu
dmFsdWVfb3IoMCk7CiAgICAgICAgICAgICBhdXRvIGNlbnRlcmVkTG9naWNhbExlZnRGb3JNYXJn
aW5Cb3ggPSBzdGQ6Om1heCgoY29udGFpbmluZ0Jsb2NrV2lkdGggLSBib3JkZXJCb3hXaWR0aCAt
IG1hcmdpblN0YXJ0IC0gbWFyZ2luRW5kKSAvIDIsIDBfbHUpOwogICAgICAgICAgICAgdXNlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQgPSBjZW50ZXJlZExvZ2ljYWxMZWZ0Rm9yTWFyZ2luQm94ICsg
bWFyZ2luU3RhcnQ7CiAgICAgICAgICAgICB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtIGJvcmRlckJveFdpZHRoIC0gbWFyZ2luU3RhcnQgKyBtYXJnaW5F
bmQ7CkBAIC0zMjYsNyArMzI2LDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0dlb21ldHJ5Ojpjb21wdXRlZENvbnRlbnRXaWR0aEFuZE1hcmdpbihjb24KICAgICAgICAg
ICAgIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IG1heFdpZHRoQW5kTWFyZ2luOwogICAgIH0KIAot
ICAgIGF1dG8gbWluV2lkdGggPSBjb21wdXRlZE1pbldpZHRoKGxheW91dEJveCwgYXZhaWxhYmxl
V2lkdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBtaW5XaWR0aCA9IGNvbXB1dGVkTWluV2lkdGgo
bGF5b3V0Qm94LCBhdmFpbGFibGVXaWR0aCkudmFsdWVfb3IoMCk7CiAgICAgYXV0byBtaW5XaWR0
aEFuZE1hcmdpbiA9IGNvbXB1dGUoaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBtaW5XaWR0aCk7CiAg
ICAgaWYgKGNvbnRlbnRXaWR0aEFuZE1hcmdpbi5jb250ZW50V2lkdGggPCBtaW5XaWR0aEFuZE1h
cmdpbi5jb250ZW50V2lkdGgpCiAgICAgICAgIGNvbnRlbnRXaWR0aEFuZE1hcmdpbiA9IG1pbldp
ZHRoQW5kTWFyZ2luOwpAQCAtMzM3LDEyICszMzcsMTIgQEAgSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cyBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTo6aW50cmluc2ljV2lkdGhDb25zdHJhaW50cyhj
b24KIHsKICAgICBhdXRvIGZpeGVkTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9IFsmXShhdXRvJiBs
YXlvdXRCb3gpIHsKICAgICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAg
ICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFsdWVPcigwKQor
ICAgICAgICByZXR1cm4gZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5TdGFydCgpKS52YWx1ZV9vcigw
KQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgfQot
ICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdMZWZ0KCkpLnZhbHVlT3IoMCkK
LSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nUmlnaHQoKSkudmFsdWVPcigw
KQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdMZWZ0KCkpLnZhbHVlX29y
KDApCisgICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0KCkpLnZhbHVl
X29yKDApCiAgICAgICAgICAgICArIExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgpKS52YWx1ZU9y
KDApOworICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgpKS52YWx1ZV9v
cigwKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgPSBbJl0oKSAtPiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCA5NWEwZWU4ZDU5NmM5Yjg1NTNl
YTJiZDljNDU3OWM3MzU5YzM3ZGRjLi44ZmNmMjgyOGMzZGUwZGVmZTEyNzkzNmIxM2UwMTVjNDYw
OTdlNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ1F1
aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvCiAgICAgICAgIGF1dG8g
ZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JC
b3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2soKSwgRm9ybWF0dGluZ0NvbnRleHQ6
OkVzY2FwZVJlYXNvbjo6RG9jdW1lbnRCb3hTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspLmNvbnRl
bnRCb3hIZWlnaHQoKTsKICAgICAgICAgLy8gRG9jdW1lbnQgYm94J3Mgb3duIHZlcnRpY2FsIG1h
cmdpbi9ib3JkZXIvcGFkZGluZyB2YWx1ZXMgYWx3YXlzIHNocmluayB0aGUgY29udGVudCBoZWln
aHQuCiAgICAgICAgIGF1dG8mIGRvY3VtZW50Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4
dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgICAgICBkb2N1bWVudEJveENvbnRlbnRI
ZWlnaHQgLT0gbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJveEdlb21ldHJ5
LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygp
LnZhbHVlT3IoMCk7CisgICAgICAgIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCAtPSBub25Db2xs
YXBzZWRWZXJ0aWNhbE1hcmdpbiArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIo
KSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMCk7CiAg
ICAgICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWln
aHQsICBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQpOwogICAgIH0KIApAQCAtODQsMjMgKzg0LDIz
IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVk
SW5GbG93SGVpZ2h0SWZBcHBsaWNhYmxlKGNvCiAgICAgYXV0byBib2R5Qm94Q29udGVudEhlaWdo
dCA9IGluaXRpYWxDb250YWluaW5nQmxvY2tHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCk7CiAg
ICAgLy8gQm9keSBib3gncyBvd24gYm9yZGVyIGFuZCBwYWRkaW5nIHNocmluayB0aGUgY29udGVu
dCBoZWlnaHQuCiAgICAgYXV0byYgYm9keUJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQu
Z2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBi
b2R5Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNh
bFBhZGRpbmcoKS52YWx1ZU9yKDApOworICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGJvZHlC
b3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm9keUJveEdlb21ldHJ5LnZlcnRpY2FsUGFk
ZGluZygpLnZhbHVlX29yKDApOwogICAgIC8vIEJvZHkgYm94IG5ldmVyIGNvbGxhcHNlcyBpdHMg
dmVydGljYWwgbWFyZ2lucyB3aXRoIHRoZSBkb2N1bWVudCBib3ggYnV0IGl0IG1pZ2h0IGNvbGxh
cHNlIGl0cyBtYXJnaW4gd2l0aCBpdHMgZGVzY2VuZGFudHMuCiAgICAgYXV0byBub25Db2xsYXBz
ZWRNYXJnaW4gPSBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKICAg
ICBhdXRvIG1hcmdpbkNvbGxhcHNlID0gQmxvY2tNYXJnaW5Db2xsYXBzZSB7IGZvcm1hdHRpbmdD
b250ZXh0LmxheW91dFN0YXRlKCksIGZvcm1hdHRpbmdDb250ZXh0LmZvcm1hdHRpbmdTdGF0ZSgp
IH07CiAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBtYXJnaW5Db2xsYXBzZS5jb2xsYXBzZWRW
ZXJ0aWNhbFZhbHVlcyhsYXlvdXRCb3gsIG5vbkNvbGxhcHNlZE1hcmdpbikuY29sbGFwc2VkVmFs
dWVzOwotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0gY29sbGFwc2VkTWFyZ2luLmJlZm9y
ZS52YWx1ZU9yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUpOwotICAgIHVzZWRWZXJ0aWNhbE1h
cmdpbiArPSBjb2xsYXBzZWRNYXJnaW4uaXNDb2xsYXBzZWRUaHJvdWdoID8gbm9uQ29sbGFwc2Vk
TWFyZ2luLmFmdGVyIDogY29sbGFwc2VkTWFyZ2luLmFmdGVyLnZhbHVlT3Iobm9uQ29sbGFwc2Vk
TWFyZ2luLmFmdGVyKTsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbGxhcHNlZE1h
cmdpbi5iZWZvcmUudmFsdWVfb3Iobm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSk7CisgICAgdXNl
ZFZlcnRpY2FsTWFyZ2luICs9IGNvbGxhcHNlZE1hcmdpbi5pc0NvbGxhcHNlZFRocm91Z2ggPyBu
b25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgOiBjb2xsYXBzZWRNYXJnaW4uYWZ0ZXIudmFsdWVfb3Io
bm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyKTsKICAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSB1
c2VkVmVydGljYWxNYXJnaW47CiAgICAgLy8gRG9jdW1lbnQgYm94J3MgcGFkZGluZyBhbmQgYm9y
ZGVyIGFsc28gc2hyaW5rIHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0LgogICAgIGF1dG8m
IGRvY3VtZW50Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOwogICAgIGF1dG8mIGRvY3VtZW50Qm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChkb2N1bWVudEJveCwg
Rm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRR
dWlyayk7Ci0gICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gZG9jdW1lbnRCb3hHZW9tZXRyeS52
ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52
YWx1ZU9yKDApOworICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3VtZW50Qm94R2VvbWV0
cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5n
KCkudmFsdWVfb3IoMCk7CiAgICAgLy8gSG93ZXZlciB0aGUgbm9uLWluLWZsb3cgZG9jdW1lbnQg
Ym94J3MgdmVydGljYWwgbWFyZ2lucyBhcmUgaWdub3JlZC4gVGhleSBkb24ndCBhZmZlY3QgdGhl
IGJvZHkgYm94J3MgY29udGVudCBoZWlnaHQuCiAgICAgaWYgKGRvY3VtZW50Qm94LmlzSW5GbG93
KCkpIHsKICAgICAgICAgYXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRl
eHQuZm9ybWF0dGluZ0dlb21ldHJ5KCk7CiAgICAgICAgIGF1dG8gcHJlY29tcHV0ZURvY3VtZW50
Qm94VmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1h
cmdpbihkb2N1bWVudEJveCwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9udGFsKTsKLSAgICAg
ICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxN
YXJnaW4uYmVmb3JlLnZhbHVlT3IoMCkgKyBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1h
cmdpbi5hZnRlci52YWx1ZU9yKDApOworICAgICAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBw
cmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVfb3IoMCkgKyBw
cmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZV9vcigwKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0ZDo6bWF4KGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhl
aWdodCwgIGJvZHlCb3hDb250ZW50SGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IGM2NzUyZjViODA2NDVhOWJjZWI2MDEzNjlkMDRlYTc2
YmEyMjY0MmMuLjRiNDliYjUyZjIyMDNmZWY1M2Y2NWE2MjQ5ZDg5MDMxNjY3MTZmOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNTM5LDcgKzUzOSw3
IEBAIFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyBC
bG9ja01hcmdpbkNvbGxhcHNlOjpwb3NpdGl2CiBMYXlvdXRVbml0IEJsb2NrTWFyZ2luQ29sbGFw
c2U6Om1hcmdpbkJlZm9yZUlnbm9yaW5nQ29sbGFwc2luZ1Rocm91Z2goY29uc3QgQm94JiBsYXlv
dXRCb3gsIFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIG5vbkNvbGxhcHNl
ZFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKLSAg
ICByZXR1cm4gbWFyZ2luVmFsdWUocG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9yZShsYXlvdXRC
b3gsIG5vbkNvbGxhcHNlZFZhbHVlcykpLnZhbHVlT3Iobm9uQ29sbGFwc2VkVmFsdWVzLmJlZm9y
ZSk7CisgICAgcmV0dXJuIG1hcmdpblZhbHVlKHBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUo
bGF5b3V0Qm94LCBub25Db2xsYXBzZWRWYWx1ZXMpKS52YWx1ZV9vcihub25Db2xsYXBzZWRWYWx1
ZXMuYmVmb3JlKTsKIH0KIAogVXNlZFZlcnRpY2FsTWFyZ2luIEJsb2NrTWFyZ2luQ29sbGFwc2U6
OmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVzKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkVmVydGlj
YWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNv
bXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAK
aW5kZXggM2JhNzIxNDVlYTgxOTcwZmI1OWI4NmVhNmY2MTY2NjdlOTA3ZTA3YS4uZmJhMjVkNDVl
MDg2OGU0YjIzODRmNjgzNjYyMmJiNDY3MTQxOGM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2lu
Q29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMg
QmxvY2tNYXJnaW5Db2xsYXBzZTo6cHJlY29tcAogCiAgICAgYXV0byBob3Jpem9udGFsQ29uc3Ry
YWludHMgPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGxh
eW91dEJveC5jb250YWluaW5nQmxvY2soKSkuaG9yaXpvbnRhbDsKICAgICBhdXRvIGNvbXB1dGVk
VmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgYXV0byBub25Db2xsYXBz
ZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7IGNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGljYWxNYXJn
aW4uYWZ0ZXIudmFsdWVPcigwKSB9OworICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVXNl
ZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZS52YWx1ZV9vcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1
ZV9vcigwKSB9OwogICAgIHJldHVybiBwcmVjb21wdXRlZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5C
ZWZvcmUobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4sIGZvcm1hdHRpbmdHZW9tZXRyeSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
YjY3OWEzMzE0YWUyMTA4YzU2YTg2NjFiYWUyMTBhZjIwZjM1MjkxZS4uZWZlOTc4MjA0ZWNjNjFj
ZDI3NTZhNDgzMzAzMjA5NjE0MGI1MTBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIEZsZXhGb3JtYXR0aW5n
Q29udGV4dDo6c2l6ZUFuZFBsYWNlRmxleEl0ZW1zKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udAogICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRQYWRkaW5nKGZvcm1hdHRpbmdH
ZW9tZXRyeS5jb21wdXRlZFBhZGRpbmcoZmxleEl0ZW0sIGNvbnN0cmFpbnRzLmhvcml6b250YWwu
bG9naWNhbFdpZHRoKSk7CiAKICAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihmbGV4SXRl
bSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICBmbGV4SXRlbUdlb21ldHJ5
LnNldEhvcml6b250YWxNYXJnaW4oeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFs
dWVPcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpIH0p
OworICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKHsgY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlX29yKDBfbHUpLCBjb21wdXRlZEhvcml6
b250YWxNYXJnaW4uZW5kLnZhbHVlX29yKDBfbHUpIH0pOwogCiAgICAgICAgICAgICBhdXRvIGNv
bXB1dGVkVmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbihmbGV4SXRlbSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCk7Ci0gICAgICAgICAgICBm
bGV4SXRlbUdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5iZWZvcmUudmFsdWVPcigwX2x1KSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1
ZU9yKDBfbHUpIH0pOworICAgICAgICAgICAgZmxleEl0ZW1HZW9tZXRyeS5zZXRWZXJ0aWNhbE1h
cmdpbih7IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlX29yKDBfbHUpLCBjb21w
dXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlX29yKDBfbHUpIH0pOwogCiAgICAgICAgICAg
ICBmbGV4SXRlbUdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZm9ybWF0dGluZ0dlb21ldHJ5
LmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoZmxleEl0ZW0pKTsKICAgICAg
ICAgICAgIGZsZXhJdGVtR2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGZsZXhJdGVtTG9naWNh
bFdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleC9GbGV4Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcApp
bmRleCA1MzFhM2QyMjYwMDA3ZmQxMjI2N2E4ODc3MTA4ZjlhMTQ5OWUzMWQ1Li5mZTU4ZGQzYWY2
ODM5NmU4YTE0ZTgwNWZhMGFmY2Q2N2ViNjFmM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleEZvcm1hdHRpbmdHZW9tZXRyeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9mbGV4L0Zs
ZXhGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgSW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyBGbGV4Rm9ybWF0dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzKGNvbnMKIHsKICAgICBhdXRvIGZpeGVkTWFyZ2luQm9yZGVyQW5kUGFkZGluZyA9IFsm
XShhdXRvJiBsYXlvdXRCb3gpIHsKICAgICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5
bGUoKTsKLSAgICAgICAgcmV0dXJuIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luU3RhcnQoKSkudmFs
dWVPcigwKQorICAgICAgICByZXR1cm4gZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5TdGFydCgpKS52
YWx1ZV9vcigwKQogICAgICAgICAgICAgKyBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyTGVmdFdp
ZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdMZWZ0KCkpLnZh
bHVlT3IoMCkKLSAgICAgICAgICAgICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nUmlnaHQoKSku
dmFsdWVPcigwKQorICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLnBhZGRpbmdMZWZ0KCkp
LnZhbHVlX29yKDApCisgICAgICAgICAgICArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1JpZ2h0
KCkpLnZhbHVlX29yKDApCiAgICAgICAgICAgICArIExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJS
aWdodFdpZHRoKCkgfQotICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgp
KS52YWx1ZU9yKDApOworICAgICAgICAgICAgKyBmaXhlZFZhbHVlKHN0eWxlLm1hcmdpbkVuZCgp
KS52YWx1ZV9vcigwKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wdXRlZEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgPSBbJl0oKSAtPiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUNvbnRlbnRCcmVha2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAppbmRleCA5NDBhNmRhOWY5
YzE0ZjAxNDQ1MWZhZGEyNDZmYjBlYmNkMTJkMmI4Li44ZTcxYTc1OTFhNzliMGU3YjM0ZDQwZmU5
YTBmMjM2ODVmZDQwYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lQ29udGVudEJy
ZWFrZXIuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxp
bmVDb250ZW50QnJlYWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAg
ICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzdWJzZXF1ZW50IGVtcHR5IGlubGluZSBi
b3hlcyBlLmcuCiAgICAgICAgIGF1dG8gdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA9IGJyZWFrYWJs
ZVJ1bkluZGV4IC0gMTsKICAgICAgICAgYXV0byBpc0F0SW5saW5lQm94ID0gcnVuc1t0cmFpbGlu
Z0NhbmRpZGF0ZUluZGV4XS5pbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKTsKLSAgICAgICAg
cmV0dXJuICFpc0F0SW5saW5lQm94ID8gdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA6IHRyYWlsaW5n
Q2FuZGlkYXRlSW5kZXggPyBtYWtlT3B0aW9uYWwodHJhaWxpbmdDYW5kaWRhdGVJbmRleCAtIDEp
IDogV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gIWlzQXRJbmxpbmVCb3ggPyB0cmFpbGlu
Z0NhbmRpZGF0ZUluZGV4IDogdHJhaWxpbmdDYW5kaWRhdGVJbmRleCA/IHN0ZDo6bWFrZV9vcHRp
b25hbCh0cmFpbGluZ0NhbmRpZGF0ZUluZGV4IC0gMSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsK
IAogICAgIC8vIENoZWNrIHdoZXJlIHRoZSBvdmVyZmxvdyBvY2N1cnMgYW5kIHVzZSB0aGUgY29y
cmVzcG9uZGluZyBzdHlsZSB0byBmaWd1cmUgb3V0IHRoZSBicmVha2luZyBiZWhhdmlvdXIuCkBA
IC0zNDEsNyArMzQxLDcgQEAgT3ZlcmZsb3dpbmdUZXh0Q29udGVudCBJbmxpbmVDb250ZW50QnJl
YWtlcjo6cHJvY2Vzc092ZXJmbG93aW5nQ29udGVudFdpdGhUZXh0KGMKICAgICAgICAgICAgICAg
ICAvLyBzaW5jZSBpdCdzIGVpdGhlciBhdCBoeXBoZW4gcG9zaXRpb24gb3IgdGhlIGVudGlyZSBy
dW4gaXMgcmV0dXJuZWQuCiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhcnRpYWxSdW4tPmxlbmd0
aCk7CiAgICAgICAgICAgICAgICAgYXV0byBydW5Jc0Z1bGx5QWNjb21tb2RhdGVkID0gcGFydGlh
bFJ1bi0+bGVuZ3RoID09IGRvd25jYXN0PElubGluZVRleHRJdGVtPihydW4uaW5saW5lSXRlbSku
bGVuZ3RoKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE92ZXJmbG93aW5nVGV4dENvbnRlbnQ6
OkJyZWFraW5nUG9zaXRpb24geyBpbmRleCwgT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtp
bmdQb3NpdGlvbjo6VHJhaWxpbmdDb250ZW50IHsgZmFsc2UsIHJ1bklzRnVsbHlBY2NvbW1vZGF0
ZWQgPyBXVEY6Om51bGxvcHQgOiBwYXJ0aWFsUnVuIH0gfTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gT3ZlcmZsb3dpbmdUZXh0Q29udGVudDo6QnJlYWtpbmdQb3NpdGlvbiB7IGluZGV4LCBPdmVy
Zmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uOjpUcmFpbGluZ0NvbnRlbnQgeyBm
YWxzZSwgcnVuSXNGdWxseUFjY29tbW9kYXRlZCA/IHN0ZDo6bnVsbG9wdCA6IHBhcnRpYWxSdW4g
fSB9OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMjZl
YjE5ZjEyMzRjNGIwNWQ2N2FlMjFlNjRkYWMwYjdmYjA2NWQ4MS4uZWU4MWExNzExNzM4OGNjZjFm
ODg2YWI2Y2FkOGI5NjQ1OWYzNjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5l
QnVpbGRlcjo6CiAgICAgICAgIC8vIFR1cm4gcHJldmlvdXMgbGluZSdzIG92ZXJmbG93IGNvbnRl
bnQgbGVuZ3RoIGludG8gdGhlIG5leHQgbGluZSdzIGxlYWRpbmcgY29udGVudCBwYXJ0aWFsIGxl
bmd0aC4KICAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxpdF9jb250ZW50IiAtPiBvdmVy
ZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250ZW50IGxlbmd0aDogMTEuCiAg
ICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0gcHJldmlvdXNMaW5lID8g
cHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiAwOwotICAgICAgICBhdXRvIGxl
YWRpbmdMb2dpY2FsV2lkdGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92ZXJmbG93
TG9naWNhbFdpZHRoIDogV1RGOjpudWxsb3B0OworICAgICAgICBhdXRvIGxlYWRpbmdMb2dpY2Fs
V2lkdGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92ZXJmbG93TG9naWNhbFdpZHRo
IDogc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIGluaXRpYWxMaW5lSGVpZ2h0ID0gWyZdKCkg
LT4gSW5saW5lTGF5b3V0VW5pdCB7CiAgICAgICAgICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblN0
YW5kYXJkc01vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcm9vdCgpLnN0eWxlKCkuY29t
cHV0ZWRMaW5lSGVpZ2h0KCk7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUludHJpbnNpY1dpZHRoRm9yRm9ybWF0dGluZ1Jvb3QoY29uc3Qg
Qm94Jgogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhvcml6b250YWxNYXJn
aW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9y
aXpvbnRhbENvbnN0cmFpbnRzKQogewogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
ID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJv
eCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9t
ZXRyeShsYXlvdXRCb3gpLnNldEhvcml6b250YWxNYXJnaW4oeyBjb21wdXRlZEhvcml6b250YWxN
YXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1
ZU9yKDApIH0pOworICAgIGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCku
c2V0SG9yaXpvbnRhbE1hcmdpbih7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1
ZV9vcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZV9vcigwKSB9KTsKIH0K
IAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250
YWxDb25zdHJhaW50cykKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
CiAgICAgICAgICAgICBjb250ZW50V2lkdGhBbmRNYXJnaW4gPSBtYXhXaWR0aEFuZE1hcmdpbjsK
ICAgICB9CiAKLSAgICBhdXRvIG1pbldpZHRoID0gZm9ybWF0dGluZ0dlb21ldHJ5KCkuY29tcHV0
ZWRNaW5XaWR0aChsYXlvdXRCb3gsIGF2YWlsYWJsZVdpZHRoKS52YWx1ZU9yKDApOworICAgIGF1
dG8gbWluV2lkdGggPSBmb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21wdXRlZE1pbldpZHRoKGxheW91
dEJveCwgYXZhaWxhYmxlV2lkdGgpLnZhbHVlX29yKDApOwogICAgIGF1dG8gbWluV2lkdGhBbmRN
YXJnaW4gPSBjb21wdXRlKG1pbldpZHRoKTsKICAgICBpZiAoY29udGVudFdpZHRoQW5kTWFyZ2lu
LmNvbnRlbnRXaWR0aCA8IG1pbldpZHRoQW5kTWFyZ2luLmNvbnRlbnRXaWR0aCkKICAgICAgICAg
Y29udGVudFdpZHRoQW5kTWFyZ2luID0gbWluV2lkdGhBbmRNYXJnaW47CkBAIC01ODksOSArNTg5
LDkgQEAgSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5
Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKICAgICAgICAgICAgIGlmIChpbmxpbmVCb3hT
dGFydFNldC5jb250YWlucygmbGF5b3V0Qm94KSkgewogICAgICAgICAgICAgICAgIC8vIFRoaXMg
aW5saW5lIGJveCBzaG93ZWQgdXAgZmlyc3Qgb24gdGhpcyBsaW5lLgogICAgICAgICAgICAgICAg
IGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0ID0gbG9naWNhbFJlY3QuaGVpZ2h0
KCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2Fs
UGFkZGluZygpLnZhbHVlT3IoMF9sdSkpOworICAgICAgICAgICAgICAgIGF1dG8gY29udGVudEJv
eEhlaWdodCA9IGxvZ2ljYWxSZWN0LmhlaWdodCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9y
ZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSk7CiAg
ICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChjb250ZW50Qm94
SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hXaWR0aCA9IGxvZ2ljYWxS
ZWN0LndpZHRoKCkgLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0
cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGNvbnRlbnRCb3hXaWR0aCA9IGxvZ2ljYWxSZWN0LndpZHRoKCkgLSAoYm94R2VvbWV0cnku
aG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1
ZV9vcigwX2x1KSk7CiAgICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdp
ZHRoKGNvbnRlbnRCb3hXaWR0aCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CkBAIC02MDAsOCArNjAwLDggQEAgSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKICAgICAg
ICAgICAgIGVuY2xvc2luZ0JvcmRlckJveFJlY3QuZXhwYW5kVG9Db250YWluKGxvZ2ljYWxSZWN0
KTsKICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxMZWZ0KGVuY2xvc2luZ0JvcmRl
ckJveFJlY3QubGVmdCgpKTsKIAotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJv
eEhlaWdodChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmhlaWdodCgpIC0gKGJveEdlb21ldHJ5LnZl
cnRpY2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDBf
bHUpKSk7Ci0gICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoZW5jbG9z
aW5nQm9yZGVyQm94UmVjdC53aWR0aCgpIC0gKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIo
KSArIGJveEdlb21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwX2x1KSkpOworICAg
ICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChlbmNsb3NpbmdCb3JkZXJC
b3hSZWN0LmhlaWdodCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9t
ZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOworICAgICAgICAgICAgYm94
R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0JvcmRlckJveFJlY3Qud2lkdGgo
KSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9u
dGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7CiAgICAgICAgIH0KICAgICB9OwogICAgIHVw
ZGF0ZUJveEdlb21ldHJ5Rm9ySW5saW5lQm94ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGMyNWZhMTQzZmE3MjY2NWUwMzVl
NWJkOTg4MDM3MmMzYzYzOTg1N2UuLmJjNmMwZTU3NThkNDQyZGY5NzlmNWNiNTA3MTg2MTYzNTZl
Y2Y5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5LmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIExpbmVCb3ggTGluZUJveEJ1aWxkZXI6OmJ1aWxk
KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQpCiAgICAgYXV0byBs
aW5lTG9naWNhbFdpZHRoID0gbGluZUNvbnRlbnQubGluZUxvZ2ljYWxXaWR0aDsKICAgICBhdXRv
IGNvbnRlbnRMb2dpY2FsV2lkdGggPSBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFdpZHRoOwog
ICAgIGF1dG8gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldCA9IExheW91dDo6aG9yaXpvbnRhbEFs
aWdubWVudE9mZnNldChydW5zLCByb290Qm94KCkuc3R5bGUoKS50ZXh0QWxpZ24oKSwgbGluZUxv
Z2ljYWxXaWR0aCwgY29udGVudExvZ2ljYWxXaWR0aCwgbGluZUNvbnRlbnQuaXNMYXN0TGluZVdp
dGhJbmxpbmVDb250ZW50KTsKLSAgICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94IHsgcm9vdEJveCgp
LCBsaW5lQ29udGVudC5sb2dpY2FsVG9wTGVmdCwgbGluZUxvZ2ljYWxXaWR0aCwgaG9yaXpvbnRh
bEFsaWdubWVudE9mZnNldC52YWx1ZU9yKElubGluZUxheW91dFVuaXQgeyB9KSwgY29udGVudExv
Z2ljYWxXaWR0aCwgbGluZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07
CisgICAgYXV0byBsaW5lQm94ID0gTGluZUJveCB7IHJvb3RCb3goKSwgbGluZUNvbnRlbnQubG9n
aWNhbFRvcExlZnQsIGxpbmVMb2dpY2FsV2lkdGgsIGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQu
dmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pLCBjb250ZW50TG9naWNhbFdpZHRoLCBsaW5l
Q29udGVudC5ub25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQgfTsKICAgICBjb25zdHJ1Y3RB
bmRBbGlnbklubGluZUxldmVsQm94ZXMobGluZUJveCwgcnVucyk7CiAgICAgcmV0dXJuIGxpbmVC
b3g7CiB9CkBAIC0yODUsOSArMjg1LDkgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29uc3RydWN0
QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IEwKICAgICAg
ICAgICAgIGF1dG8mIGlubGluZUJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9t
ZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgICAgICAgICAgLy8gRXZlbiBuZWdhdGl2ZSBob3Jp
em9udGFsIG1hcmdpbiBtYWtlcyB0aGUgbGluZSAiY29udGVudGZ1bCIuCiAgICAgICAgICAgICBp
ZiAocnVuLmlzSW5saW5lQm94U3RhcnQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5saW5l
Qm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJMZWZ0
KCkgfHwgaW5saW5lQm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDBfbHUpOworICAg
ICAgICAgICAgICAgIHJldHVybiBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5TdGFydCgpIHx8IGlu
bGluZUJveEdlb21ldHJ5LmJvcmRlckxlZnQoKSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5wYWRkaW5n
TGVmdCgpLnZhbHVlX29yKDBfbHUpOwogICAgICAgICAgICAgaWYgKHJ1bi5pc0lubGluZUJveEVu
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBpbmxpbmVCb3hHZW9tZXRyeS5tYXJnaW5FbmQo
KSB8fCBpbmxpbmVCb3hHZW9tZXRyeS5ib3JkZXJSaWdodCgpIHx8IGlubGluZUJveEdlb21ldHJ5
LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMF9sdSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlu
bGluZUJveEdlb21ldHJ5Lm1hcmdpbkVuZCgpIHx8IGlubGluZUJveEdlb21ldHJ5LmJvcmRlclJp
Z2h0KCkgfHwgaW5saW5lQm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVfb3IoMF9sdSk7
CiAgICAgICAgICAgICBpZiAocnVuLmlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTMxMywxMCArMzEzLDEwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFs
aWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5lQm94LCBjb25zdCBMCiAgICAgICAgICAg
ICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNo
ZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gp
KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byYgbGFzdExpbmUgPSBmb3JtYXR0aW5nU3RhdGUu
bGluZXMoKS5sYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNl
bGluZSA9IGxhc3RMaW5lLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpICsgbGFzdExpbmUuYmFz
ZWxpbmUoKTsKLSAgICAgICAgICAgICAgICAgICAgYXNjZW50ID0gaW5saW5lTGV2ZWxCb3hHZW9t
ZXRyeS5tYXJnaW5CZWZvcmUoKSArIGlubGluZUxldmVsQm94R2VvbWV0cnkuYm9yZGVyVG9wKCkg
KyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgaW5saW5l
QmxvY2tCYXNlbGluZTsKKyAgICAgICAgICAgICAgICAgICAgYXNjZW50ID0gaW5saW5lTGV2ZWxC
b3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSArIGlubGluZUxldmVsQm94R2VvbWV0cnkuYm9yZGVy
VG9wKCkgKyBpbmxpbmVMZXZlbEJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSAr
IGlubGluZUJsb2NrQmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIGlmIChsYXlvdXRCb3guaXNSZXBsYWNlZEJveCgpKQotICAgICAgICAgICAgICAgIGFzY2Vu
dCA9IGRvd25jYXN0PFJlcGxhY2VkQm94PihsYXlvdXRCb3gpLmJhc2VsaW5lKCkudmFsdWVPciht
YXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgICAgIGFzY2VudCA9IGRvd25jYXN0PFJlcGxh
Y2VkQm94PihsYXlvdXRCb3gpLmJhc2VsaW5lKCkudmFsdWVfb3IobWFyZ2luQm94SGVpZ2h0KTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBhc2NlbnQgPSBtYXJnaW5Cb3hIZWln
aHQ7CiAgICAgICAgICAgICBsb2dpY2FsTGVmdCArPSBzdGQ6Om1heCgwX2x1LCBpbmxpbmVMZXZl
bEJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgTGlu
ZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVz
VmVydGljYWxseShMaW5lCiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0
b206IHsKICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC1ib3R0b20gYWxpZ25zIHdp
dGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90
IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KICAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKLSAg
ICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJ
bmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3Vu
ZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlv
dXRVbml0KCkpOworICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJv
dHRvbSA9IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGlu
ZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50SW5saW5lQm94LmRlc2NlbnQoKS52YWx1
ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpOwogICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00
NjYsMTQgKzQ2NiwxNCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdo
dEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAgICAgaW5s
aW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQoJmlubGluZUxldmVsQm94LCBB
YnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2Fs
Qm90dG9tIH0pOwogICAgICAgICAgICAgLy8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2
YWx1ZXMgaWYgYXBwbGljYWJsZS4KICAgICAgICAgICAgIGlmIChmb3JtYXR0aW5nR2VvbWV0cnku
aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCwgbGluZUJveCkpIHsK
LSAgICAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6bWluKG1pbmltdW1Mb2dp
Y2FsVG9wLnZhbHVlT3IoYWJzb2x1dGVMb2dpY2FsVG9wKSwgYWJzb2x1dGVMb2dpY2FsVG9wKTsK
LSAgICAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1M
b2dpY2FsQm90dG9tLnZhbHVlT3IoYWJzb2x1dGVMb2dpY2FsQm90dG9tKSwgYWJzb2x1dGVMb2dp
Y2FsQm90dG9tKTsKKyAgICAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6bWlu
KG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlX29yKGFic29sdXRlTG9naWNhbFRvcCksIGFic29sdXRl
TG9naWNhbFRvcCk7CisgICAgICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSBzdGQ6
Om1heChtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZV9vcihhYnNvbHV0ZUxvZ2ljYWxCb3R0b20p
LCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoKICAg
ICAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbm9uLWxpbmUtYm94IHJl
bGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5kIGJvdHRvbSB2YWx1ZXMu
CiAgICAgICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBhbGlnbmVkIGlu
bGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCByb29tIGFuZCBzdHJldGNo
IHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KLSAgICAgICAgYXV0byBsaW5lQm94TG9n
aWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5p
dCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKKyAg
ICAgICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZh
bHVlX29yKElubGluZUxheW91dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZV9vcihJ
bmxpbmVMYXlvdXRVbml0KCkpOwogICAgICAgICBmb3IgKGF1dG8qIGxpbmVCb3hSZWxhdGl2ZUlu
bGluZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlcykgewogICAgICAg
ICAgICAgaWYgKCFmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJv
eCgqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gsIGxpbmVCb3gpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNv
bXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5l
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGF1
dG8gcm9vdElubGluZUJveExvZ2ljYWxUb3AgPSBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxp
bmVCb3hCYXNlbGluZS52YWx1ZU9yKDAuZikgLSByb290SW5saW5lQm94LmJhc2VsaW5lKCk7Cisg
ICAgICAgIGF1dG8gcm9vdElubGluZUJveExvZ2ljYWxUb3AgPSBtYXhpbXVtVG9wT2Zmc2V0RnJv
bVJvb3RJbmxpbmVCb3hCYXNlbGluZS52YWx1ZV9vcigwLmYpIC0gcm9vdElubGluZUJveC5iYXNl
bGluZSgpOwogICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJv
eExvZ2ljYWxUb3ApOwogICAgIH07CiAgICAgY29tcHV0ZVJvb3RJbmxpbmVCb3hWZXJ0aWNhbFBv
c2l0aW9uKCk7CkBAIC03MTEsNyArNzExLDcgQEAgQ29udGVudFdpZHRoQW5kTWFyZ2luIElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50V2lkdGhBbmRNYXJnaW4KICAg
ICAvLyAjMgogICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gRm9ybWF0dGluZ0dl
b21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4oZm9ybWF0dGluZ0NvbnRleHRSb290LCBo
b3Jpem9udGFsQ29uc3RyYWludHMpOwogCi0gICAgcmV0dXJuIENvbnRlbnRXaWR0aEFuZE1hcmdp
biB7ICp3aWR0aCwgeyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwX2x1
KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDBfbHUpIH0gfTsKKyAgICBy
ZXR1cm4gQ29udGVudFdpZHRoQW5kTWFyZ2luIHsgKndpZHRoLCB7IGNvbXB1dGVkSG9yaXpvbnRh
bE1hcmdpbi5zdGFydC52YWx1ZV9vcigwX2x1KSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVu
ZC52YWx1ZV9vcigwX2x1KSB9IH07CiB9CiAKIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVCbG9ja0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29u
c3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRh
bENvbnN0cmFpbnRzLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmIG92ZXJyaWRkZW5W
ZXJ0aWNhbFZhbHVlcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ1F1aXJrcy5jcHAKaW5kZXggMGU4YWNmNmI0Nzg2ODAzZjU4NjA1ZGQwMTFkZGI0NjNhOWMx
OGJjMi4uZjMwMGIyN2JkOGI0NWQ4NTIwMDFlMjFiZWU0Mzc1ZGVkZmRhMzFjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTg2LDcgKzg2
LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNM
aW5lQm94KGNvbnN0IExpbmVCb3g6OklubGluZUwKICAgICAgICAgfQogICAgICAgICAvLyBOb24t
cm9vdCBpbmxpbmUgYm94ZXMgKGUuZy4gPHNwYW4+KS4KICAgICAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlubGluZUxldmVsQm94Lmxh
eW91dEJveCgpKTsKLSAgICAgICAgaWYgKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSB8
fCBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMF9sdSkpIHsKKyAgICAg
ICAgaWYgKGJveEdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIoKSB8fCBib3hHZW9tZXRyeS5ob3Jp
em9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSB7CiAgICAgICAgICAgICAvLyBIb3Jpem9u
dGFsIGJvcmRlciBhbmQgcGFkZGluZyBtYWtlIHRoZSBpbmxpbmUgYm94IHN0cmV0Y2ggdGhlIGxp
bmUgKGUuZy4gPHNwYW4gc3R5bGU9InBhZGRpbmc6IDEwcHg7Ij48L3NwYW4+KS4KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCmlu
ZGV4IDViMzM1YmM0MGVlZmM5YzI4MzNkNGQxMzdiNGE1ODQ3ODcwNzUyZmMuLjRhMWQyOGU0YjNh
ZWFmN2UyNGY1Mjc3M2RiZTY1MmY0NWQ5ZWI2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
Y3BwCkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBMaW5lOjphcHBlbmRUZXh0Q29udGVudChjb25z
dCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4dEl0ZW0sIElubGluZUxheW91dFUKICAgICBtX3Ry
aW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZXNldCgpOwogICAgIGlmICghZm9ybWF0dGluZ0NvbnRl
eHQoKS5sYXlvdXRTdGF0ZSgpLnNob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZygpICYm
ICFpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSAmJiBzdHlsZS5sZXR0ZXJTcGFjaW5nKCkg
PiAwKQogICAgICAgICBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5hZGRQYXJ0aWFsbHlUcmlt
bWFibGVDb250ZW50KG1fcnVucy5zaXplKCkgLSAxLCBzdHlsZS5sZXR0ZXJTcGFjaW5nKCkpOwot
ICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGggPSBpbmxpbmVUZXh0SXRlbS5oYXNUcmFpbGlu
Z1NvZnRIeXBoZW4oKSA/IG1ha2VPcHRpb25hbChzdHlsZS5mb250Q2FzY2FkZSgpLndpZHRoKFRl
eHRSdW4geyBTdHJpbmdWaWV3IHsgc3R5bGUuaHlwaGVuU3RyaW5nKCkgfSB9KSkgOiBXVEY6Om51
bGxvcHQ7CisgICAgbV90cmFpbGluZ1NvZnRIeXBoZW5XaWR0aCA9IGlubGluZVRleHRJdGVtLmhh
c1RyYWlsaW5nU29mdEh5cGhlbigpID8gc3RkOjptYWtlX29wdGlvbmFsKHN0eWxlLmZvbnRDYXNj
YWRlKCkud2lkdGgoVGV4dFJ1biB7IFN0cmluZ1ZpZXcgeyBzdHlsZS5oeXBoZW5TdHJpbmcoKSB9
IH0pKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElu
bGluZUxldmVsQm94KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUxheW91dFVu
aXQgbWFyZ2luQm94TG9naWNhbFdpZHRoKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgTGluZTo6
VHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OjphZGRGdWxseVRyaW1tYWJsZUNvbnRlbnQoc2l6ZV90
IHJ1bkluZGV4LCBJCiAgICAgbV9mdWxseVRyaW1tYWJsZVdpZHRoID0gdHJpbW1hYmxlV2lkdGg7
CiAgICAgLy8gTm90ZSB0aGF0IGp1c3QgYmVjYXVzZSB0aGUgdHJpbW1hYmxlIHdpZHRoIGlzIDAg
KGZvbnQtc2l6ZTogMHB4KSwgaXQgZG9lcyBub3QgbWVhbiB3ZSBkb24ndCBoYXZlIGEgdHJpbW1h
YmxlIHRyYWlsaW5nIGNvbnRlbnQuCiAgICAgbV9oYXNGdWxseVRyaW1tYWJsZUNvbnRlbnQgPSB0
cnVlOwotICAgIG1fZmlyc3RUcmltbWFibGVSdW5JbmRleCA9IG1fZmlyc3RUcmltbWFibGVSdW5J
bmRleC52YWx1ZU9yKHJ1bkluZGV4KTsKKyAgICBtX2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXggPSBt
X2ZpcnN0VHJpbW1hYmxlUnVuSW5kZXgudmFsdWVfb3IocnVuSW5kZXgpOwogfQogCiB2b2lkIExp
bmU6OlRyaW1tYWJsZVRyYWlsaW5nQ29udGVudDo6YWRkUGFydGlhbGx5VHJpbW1hYmxlQ29udGVu
dChzaXplX3QgcnVuSW5kZXgsIElubGluZUxheW91dFVuaXQgdHJpbW1hYmxlV2lkdGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwCmluZGV4IGVkMjEzYWUwMWNhYTM5NWE3OTg0MjEx
OGI5OTk3MjMxZThkMjBlMjkuLmQ3YWE3Mjg0MjBhYzNlNGQ1ZWQ2MDc0ZGEyOTYzN2YxM2YyODU5
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xNjIsOSArMTYyLDkg
QEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3gKIHsKICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gbG9n
aWNhbFJlY3RGb3JJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gpOwogICAgIC8vIFRoaXMgbG9naWNh
bCByZWN0IGlzIGFzIHRhbGwgYXMgdGhlICJ0ZXh0IiBjb250ZW50IGlzLiBMZXQncyBhZGp1c3Qg
d2l0aCB2ZXJ0aWNhbCBib3JkZXIgYW5kIHBhZGRpbmcuCi0gICAgYXV0byB2ZXJ0aWNhbEJvcmRl
ckFuZFBhZGRpbmcgPSBib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnku
dmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwX2x1KTsKKyAgICBhdXRvIHZlcnRpY2FsQm9yZGVy
QW5kUGFkZGluZyA9IGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52
ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KTsKICAgICBsb2dpY2FsUmVjdC5leHBhbmRW
ZXJ0aWNhbGx5KHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZyk7Ci0gICAgbG9naWNhbFJlY3QubW92
ZVZlcnRpY2FsbHkoLShib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRp
bmdUb3AoKS52YWx1ZU9yKDBfbHUpKSk7CisgICAgbG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHko
LShib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1
ZV9vcigwX2x1KSkpOwogICAgIHJldHVybiBsb2dpY2FsUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGMzM2Y2NDgzYmFhMmZmMzkxODI0YzFm
ZDY2YzNhODE5ZjM4Y2Q0YTMuLmEzNTk5M2QzZjVmNGFlMDQ1MTk5YThlNDhkM2FlODkxZjE0NzBi
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTIzMSwx
MCArMjMxLDEwIEBAIElubGluZUxheW91dFVuaXQgTGluZUJ1aWxkZXI6OmlubGluZUl0ZW1XaWR0
aChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpCiAgICAgICAgIHJldHVybiBib3hH
ZW9tZXRyeS5tYXJnaW5Cb3hXaWR0aCgpOwogCiAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVC
b3hTdGFydCgpKQotICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2luU3RhcnQoKSArIGJv
eEdlb21ldHJ5LmJvcmRlckxlZnQoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdMZWZ0KCkudmFsdWVP
cigwKTsKKyAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpblN0YXJ0KCkgKyBib3hHZW9t
ZXRyeS5ib3JkZXJMZWZ0KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlX29yKDAp
OwogCiAgICAgaWYgKGlubGluZUl0ZW0uaXNJbmxpbmVCb3hFbmQoKSkKLSAgICAgICAgcmV0dXJu
IGJveEdlb21ldHJ5Lm1hcmdpbkVuZCgpICsgYm94R2VvbWV0cnkuYm9yZGVyUmlnaHQoKSArIGJv
eEdlb21ldHJ5LnBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBib3hH
ZW9tZXRyeS5tYXJnaW5FbmQoKSArIGJveEdlb21ldHJ5LmJvcmRlclJpZ2h0KCkgKyBib3hHZW9t
ZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZV9vcigwKTsKIAogICAgIC8vIE5vbi1yZXBsYWNlZCBp
bmxpbmUgYm94IChlLmcuIGlubGluZS1ibG9jaykKICAgICByZXR1cm4gYm94R2VvbWV0cnkubWFy
Z2luQm94V2lkdGgoKTsKQEAgLTMwNSw3ICszMDUsNyBAQCBMaW5lQnVpbGRlcjo6Q29tbWl0dGVk
Q29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVDb250ZW50KGNvbnN0IElubGluZUl0ZW1S
YQogICAgICAgICAvLyAyLiBBcHBseSBmbG9hdHMgYW5kIHNocmluayB0aGUgYXZhaWxhYmxlIGhv
cml6b250YWwgc3BhY2UgZS5nLiA8c3Bhbj5pbnRydV88ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+
PC9kaXY+c2l2ZV9mbG9hdDwvc3Bhbj4uCiAgICAgICAgIC8vIDMuIENoZWNrIGlmIHRoZSBjb250
ZW50IGZpdHMgdGhlIGxpbmUgYW5kIGNvbW1pdCB0aGUgY29udGVudCBhY2NvcmRpbmdseSAoZnVs
bCwgcGFydGlhbCBvciBub3QgY29tbWl0IGF0IGFsbCkuCiAgICAgICAgIC8vIDQuIFJldHVybiBp
ZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBlaXRoZXIgYnkgbm90IGJlaW5nIGFibGUg
dG8gZml0IG1vcmUgY29udGVudCBvciBiZWNhdXNlIG9mIGFuIGV4cGxpY2l0IGxpbmUgYnJlYWsu
Ci0gICAgICAgIGNhbmRpZGF0ZUNvbnRlbnRGb3JMaW5lKGxpbmVDYW5kaWRhdGUsIGN1cnJlbnRJ
dGVtSW5kZXgsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwg
c3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBXVEY6Om51bGxvcHQpLCBtX2xpbmUu
Y29udGVudExvZ2ljYWxSaWdodCgpKTsKKyAgICAgICAgY2FuZGlkYXRlQ29udGVudEZvckxpbmUo
bGluZUNhbmRpZGF0ZSwgY3VycmVudEl0ZW1JbmRleCwgbmVlZHNMYXlvdXRSYW5nZSwgcGFydGlh
bExlYWRpbmdDb250ZW50TGVuZ3RoLCBzdGQ6OmV4Y2hhbmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgs
IHN0ZDo6bnVsbG9wdCksIG1fbGluZS5jb250ZW50TG9naWNhbFJpZ2h0KCkpOwogICAgICAgICAv
LyBOb3cgY2hlY2sgaWYgd2UgY2FuIHB1dCB0aGlzIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgbGlu
ZS4KICAgICAgICAgYXV0byByZXN1bHQgPSBSZXN1bHQgeyB9OwogICAgICAgICBpZiAobGluZUNh
bmRpZGF0ZS5mbG9hdEl0ZW0pIHsKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIExpbmVCdWlsZGVy
OjpjYW5kaWRhdGVDb250ZW50Rm9yTGluZShMaW5lQ2FuZGlkYXRlJiBsaW5lQ2FuZGlkYXRlLCBz
aXplX3QgYwogICAgICAgICAvLyBIYW5kbGUgbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgZmlyc3Qg
KG92ZXJmbG93aW5nIHRleHQgZnJvbSB0aGUgcHJldmlvdXMgbGluZSkuCiAgICAgICAgIC8vIENv
bnN0cnVjdCBhIHBhcnRpYWwgbGVhZGluZyBpbmxpbmUgaXRlbS4KICAgICAgICAgbV9wYXJ0aWFs
TGVhZGluZ1RleHRJdGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KG1faW5saW5lSXRlbXNb
Y3VycmVudElubGluZUl0ZW1JbmRleF0pLnJpZ2h0KHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCk7Ci0gICAgICAgIGF1dG8gaXRlbVdpZHRoID0gbGVhZGluZ0xvZ2ljYWxXaWR0aCA/ICpzdGQ6
OmV4Y2hhbmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgsIFdURjo6bnVsbG9wdCkgOiBpbmxpbmVJdGVt
V2lkdGgoKm1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7Cisg
ICAgICAgIGF1dG8gaXRlbVdpZHRoID0gbGVhZGluZ0xvZ2ljYWxXaWR0aCA/ICpzdGQ6OmV4Y2hh
bmdlKGxlYWRpbmdMb2dpY2FsV2lkdGgsIHN0ZDo6bnVsbG9wdCkgOiBpbmxpbmVJdGVtV2lkdGgo
Km1fcGFydGlhbExlYWRpbmdUZXh0SXRlbSwgY3VycmVudExvZ2ljYWxSaWdodCk7CiAgICAgICAg
IGxpbmVDYW5kaWRhdGUuaW5saW5lQ29udGVudC5hcHBlbmRJbmxpbmVJdGVtKCptX3BhcnRpYWxM
ZWFkaW5nVGV4dEl0ZW0sIGl0ZW1XaWR0aCk7CiAgICAgICAgIGN1cnJlbnRMb2dpY2FsUmlnaHQg
Kz0gaXRlbVdpZHRoOwogICAgICAgICArK2N1cnJlbnRJbmxpbmVJdGVtSW5kZXg7CkBAIC00OTAs
NyArNDkwLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2FuZGlkYXRlQ29udGVudEZvckxpbmUoTGlu
ZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSwgc2l6ZV90IGMKICAgICAgICAgfQogICAgICAgICBp
ZiAoaW5saW5lSXRlbS5pc1RleHQoKSB8fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94U3RhcnQoKSB8
fCBpbmxpbmVJdGVtLmlzSW5saW5lQm94RW5kKCkgfHwgaW5saW5lSXRlbS5pc0JveCgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIWxlYWRpbmdMb2dpY2FsV2lkdGggfHwgaW5saW5lSXRlbS5pc1Rl
eHQoKSk7Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxXaWR0aCA9IGxlYWRpbmdMb2dpY2FsV2lk
dGggPyAqc3RkOjpleGNoYW5nZShsZWFkaW5nTG9naWNhbFdpZHRoLCBXVEY6Om51bGxvcHQpIDog
aW5saW5lSXRlbVdpZHRoKGlubGluZUl0ZW0sIGN1cnJlbnRMb2dpY2FsUmlnaHQpOworICAgICAg
ICAgICAgYXV0byBsb2dpY2FsV2lkdGggPSBsZWFkaW5nTG9naWNhbFdpZHRoID8gKnN0ZDo6ZXhj
aGFuZ2UobGVhZGluZ0xvZ2ljYWxXaWR0aCwgc3RkOjpudWxsb3B0KSA6IGlubGluZUl0ZW1XaWR0
aChpbmxpbmVJdGVtLCBjdXJyZW50TG9naWNhbFJpZ2h0KTsKICAgICAgICAgICAgIGxpbmVDYW5k
aWRhdGUuaW5saW5lQ29udGVudC5hcHBlbmRJbmxpbmVJdGVtKGlubGluZUl0ZW0sIGxvZ2ljYWxX
aWR0aCk7CiAgICAgICAgICAgICBjdXJyZW50TG9naWNhbFJpZ2h0ICs9IGxvZ2ljYWxXaWR0aDsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oCmluZGV4
IDBiMGVlMTRkZWQwYmUyY2NkNTJkMzQzM2IwODg0NTQ2YzFmMGQyYjIuLmNlMDA3MDk3MGJhZDg5
Y2EzOGQzNGEzMWFkMjQxNmFlYmM3ZDZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVu
LmgKQEAgLTYwLDcgKzYwLDcgQEAgc3RydWN0IExpbmVSdW4gewogICAgIH07CiAKICAgICBzdHJ1
Y3QgRXhwYW5zaW9uOwotICAgIExpbmVSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgQm94Jiwg
Y29uc3QgSW5saW5lUmVjdCYsIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dD4gPSBXVEY6Om51bGxv
cHQpOworICAgIExpbmVSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgQm94JiwgY29uc3QgSW5s
aW5lUmVjdCYsIEV4cGFuc2lvbiwgT3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQpOwogCiAg
ICAgY29uc3QgSW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xvZ2lj
YWxSZWN0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVJlY3QuaAppbmRleCBhY2QwOWFiMWU3MTAxYWE2
ZWNmNDMzZDI2NDAwNGZmZThmYjdhOGM0Li4yZGYxNDQ2YzAwMTYwNmY3MDg1NmZmM2E5ZDAyOGNl
YzhkNjIzOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCkBAIC0yNTQsNyArMjU0LDcgQEAg
aW5saW5lIHZvaWQgSW5saW5lUmVjdDo6ZXhwYW5kKE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+
IHdpZHRoLCBPcHRpb25hbDxJbmxpbmUKIHsKICAgICBBU1NFUlQoIXdpZHRoIHx8IG1faGFzVmFs
aWRXaWR0aCk7CiAgICAgQVNTRVJUKCFoZWlnaHQgfHwgbV9oYXNWYWxpZEhlaWdodCk7Ci0gICAg
bV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZU9yKDApLCBoZWlnaHQudmFsdWVPcigwKSk7CisgICAg
bV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZV9vcigwKSwgaGVpZ2h0LnZhbHVlX29yKDApKTsKIH0K
IAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6ZXhwYW5kVG9Db250YWluKGNvbnN0IElubGluZVJl
Y3QmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lVGV4dEl0ZW0uY3BwCmluZGV4IDljNzM3
YWYwYmRiYTk1YTVmNDA1ZWNiNDk0NWZjY2QxOWNkOGJjMzkuLmY1ZDYxMGRlMTc2MGRlMGZhYTgx
NjZlMTI5OGE1MWMwY2UzM2ZhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRlbS5j
cHAKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdoaXRlc3BhY2VDb250ZW50PiBt
b3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGNvbnN0IFN0cmluZ1YKICAgICBhdXRvIG5l
eHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHdoaWxlIChuZXh0
Tm9uV2hpdGVTcGFjZVBvc2l0aW9uIDwgdGV4dENvbnRlbnQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNw
YWNlQ2hhcmFjdGVyKHRleHRDb250ZW50W25leHROb25XaGl0ZVNwYWNlUG9zaXRpb25dKSkKICAg
ICAgICAgKytuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uOwotICAgIHJldHVybiBuZXh0Tm9uV2hp
dGVTcGFjZVBvc2l0aW9uID09IHN0YXJ0UG9zaXRpb24gPyBXVEY6Om51bGxvcHQgOiBtYWtlT3B0
aW9uYWwoV2hpdGVzcGFjZUNvbnRlbnQgeyBuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uIC0gc3Rh
cnRQb3NpdGlvbiwgaGFzV29yZFNlcGFyYXRvckNoYXJhY3RlciB9KTsKKyAgICByZXR1cm4gbmV4
dE5vbldoaXRlU3BhY2VQb3NpdGlvbiA9PSBzdGFydFBvc2l0aW9uID8gc3RkOjpudWxsb3B0IDog
c3RkOjptYWtlX29wdGlvbmFsKFdoaXRlc3BhY2VDb250ZW50IHsgbmV4dE5vbldoaXRlU3BhY2VQ
b3NpdGlvbiAtIHN0YXJ0UG9zaXRpb24sIGhhc1dvcmRTZXBhcmF0b3JDaGFyYWN0ZXIgfSk7CiB9
CiAKIHN0YXRpYyB1bnNpZ25lZCBtb3ZlVG9OZXh0QnJlYWthYmxlUG9zaXRpb24odW5zaWduZWQg
c3RhcnRQb3NpdGlvbiwgTGF6eUxpbmVCcmVha0l0ZXJhdG9yJiBsaW5lQnJlYWtJdGVyYXRvciwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgSW5saW5l
VGV4dEl0ZW06OmNyZWF0ZUFuZEFwcGVuZFRleHRJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lQ29u
dGVudCwgY29uc3QKICAgICAgICAgICAgIEFTU0VSVCh3aGl0ZXNwYWNlQ29udGVudC0+bGVuZ3Ro
KTsKICAgICAgICAgICAgIGF1dG8gYXBwZW5kV2hpdGVzcGFjZUl0ZW0gPSBbJl0gKGF1dG8gc3Rh
cnRQb3NpdGlvbiwgYXV0byBpdGVtTGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzaW1w
bGVTaW5nbGVXaGl0ZXNwYWNlQ29udGVudCA9IGlubGluZVRleHRCb3guY2FuVXNlU2ltcGxpZmll
ZENvbnRlbnRNZWFzdXJpbmcoKSAmJiAoaXRlbUxlbmd0aCA9PSAxIHx8IHdoaXRlc3BhY2VDb250
ZW50SXNUcmVhdGVkQXNTaW5nbGVTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYXV0byB3aWR0aCA9
IHNpbXBsZVNpbmdsZVdoaXRlc3BhY2VDb250ZW50ID8gbWFrZU9wdGlvbmFsKElubGluZUxheW91
dFVuaXQgeyBmb250LnNwYWNlV2lkdGgoKSB9KSA6IGlubGluZUl0ZW1XaWR0aChzdGFydFBvc2l0
aW9uLCBpdGVtTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHdpZHRoID0gc2ltcGxlU2lu
Z2xlV2hpdGVzcGFjZUNvbnRlbnQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoSW5saW5lTGF5b3V0VW5p
dCB7IGZvbnQuc3BhY2VXaWR0aCgpIH0pIDogaW5saW5lSXRlbVdpZHRoKHN0YXJ0UG9zaXRpb24s
IGl0ZW1MZW5ndGgpOwogICAgICAgICAgICAgICAgIGlubGluZUNvbnRlbnQuYXBwZW5kKElubGlu
ZVRleHRJdGVtOjpjcmVhdGVXaGl0ZXNwYWNlSXRlbShpbmxpbmVUZXh0Qm94LCBzdGFydFBvc2l0
aW9uLCBpdGVtTGVuZ3RoLCB3aGl0ZXNwYWNlQ29udGVudC0+aXNXb3JkU2VwYXJhdG9yLCB3aWR0
aCkpOwogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGlmIChzdHlsZS53aGl0ZVNwYWNlKCkg
PT0gV2hpdGVTcGFjZTo6QnJlYWtTcGFjZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVUZXh0SXRl
bS5oCmluZGV4IDUyZGM5OGRjZjA2YTE5YWEwNWZjNGFhMGFhMjRkOTgzYTViN2NkMTUuLjNjMGNm
MjZiYjgwMTVkY2Q1MjVjOTEyODJkMDRmY2JkMDdhOGY0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lVGV4dEl0ZW0uaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1doaXRl
c3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3RleHRJdGVtVHlwZSA9PSBUZXh0SXRlbVR5cGU6Oldo
aXRlc3BhY2U7IH0KICAgICBib29sIGlzV29yZFNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNXb3JkU2VwYXJhdG9yOyB9CiAgICAgYm9vbCBoYXNUcmFpbGluZ1NvZnRIeXBoZW4oKSBjb25z
dCB7IHJldHVybiBtX2hhc1RyYWlsaW5nU29mdEh5cGhlbjsgfQotICAgIE9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaWR0aCA/IG1ha2VPcHRp
b25hbChtX3dpZHRoKSA6IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsgfQorICAgIE9w
dGlvbmFsPElubGluZUxheW91dFVuaXQ+IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9oYXNXaWR0
aCA/IHN0ZDo6bWFrZV9vcHRpb25hbChtX3dpZHRoKSA6IE9wdGlvbmFsPElubGluZUxheW91dFVu
aXQ+IHsgfTsgfQogICAgIGJvb2wgaXNFbXB0eUNvbnRlbnQoKSBjb25zdDsKIAogICAgIGNvbnN0
IElubGluZVRleHRCb3gmIGlubGluZVRleHRCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJ
bmxpbmVUZXh0Qm94PihsYXlvdXRCb3goKSk7IH0KQEAgLTkxLDcgKzkxLDcgQEAgaW5saW5lIElu
bGluZVRleHRJdGVtOjpJbmxpbmVUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0Qm94JiBpbmxpbmVU
ZXh0Qm94LCB1bnNpZ24KICAgICBtX2hhc1dpZHRoID0gISF3aWR0aDsKICAgICBtX2hhc1RyYWls
aW5nU29mdEh5cGhlbiA9IGhhc1RyYWlsaW5nU29mdEh5cGhlbjsKICAgICBtX2lzV29yZFNlcGFy
YXRvciA9IGlzV29yZFNlcGFyYXRvcjsKLSAgICBtX3dpZHRoID0gd2lkdGgudmFsdWVPcigwKTsK
KyAgICBtX3dpZHRoID0gd2lkdGgudmFsdWVfb3IoMCk7CiAgICAgbV90ZXh0SXRlbVR5cGUgPSB0
ZXh0SXRlbVR5cGU7CiB9CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBpbmxpbmUgSW5saW5lVGV4dEl0
ZW0gSW5saW5lVGV4dEl0ZW06OmxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdAogICAgIFJFTEVB
U0VfQVNTRVJUKGxlbmd0aCA8PSB0aGlzLT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKG1fdGV4dEl0
ZW1UeXBlICE9IFRleHRJdGVtVHlwZTo6VW5kZWZpbmVkKTsKICAgICBBU1NFUlQobGVuZ3RoKTsK
LSAgICByZXR1cm4geyBpbmxpbmVUZXh0Qm94KCksIHN0YXJ0KCksIGxlbmd0aCwgZmFsc2UsIGlz
V29yZFNlcGFyYXRvcigpLCBXVEY6Om51bGxvcHQsIG1fdGV4dEl0ZW1UeXBlIH07CisgICAgcmV0
dXJuIHsgaW5saW5lVGV4dEJveCgpLCBzdGFydCgpLCBsZW5ndGgsIGZhbHNlLCBpc1dvcmRTZXBh
cmF0b3IoKSwgc3RkOjpudWxsb3B0LCBtX3RleHRJdGVtVHlwZSB9OwogfQogCiBpbmxpbmUgSW5s
aW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06OnJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QK
QEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgSW5saW5lVGV4dEl0ZW0gSW5saW5lVGV4dEl0ZW06
OnJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGgg
PD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChtX3RleHRJdGVtVHlwZSAhPSBUZXh0SXRl
bVR5cGU6OlVuZGVmaW5lZCk7CiAgICAgQVNTRVJUKGxlbmd0aCk7Ci0gICAgcmV0dXJuIHsgaW5s
aW5lVGV4dEJveCgpLCBlbmQoKSAtIGxlbmd0aCwgbGVuZ3RoLCBoYXNUcmFpbGluZ1NvZnRIeXBo
ZW4oKSwgaXNXb3JkU2VwYXJhdG9yKCksIFdURjo6bnVsbG9wdCwgbV90ZXh0SXRlbVR5cGUgfTsK
KyAgICByZXR1cm4geyBpbmxpbmVUZXh0Qm94KCksIGVuZCgpIC0gbGVuZ3RoLCBsZW5ndGgsIGhh
c1RyYWlsaW5nU29mdEh5cGhlbigpLCBpc1dvcmRTZXBhcmF0b3IoKSwgc3RkOjpudWxsb3B0LCBt
X3RleHRJdGVtVHlwZSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCBiZDYwMmRjNmI4NWUxYzRhY2RjNzY3YjI3NzA2NjUxNzAw
NDI3YWEyLi41YmIzM2U5Zjg1ZGM1MWE2YTY3NTY1ZWNmYTg2MGIxZTQ4NTVhYTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEwOSw4ICsx
MDksOCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNl
bGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogCiAgICAgICAgICAgICAvLyBGSVhNRTog
RmluZCBvdXQgaWYgaXQgaXMgb2sgdG8gdXNlIHRoZSByZWd1bGFyIHBhZGRpbmcgaGVyZSB0byBh
bGlnbiB0aGUgY29udGVudCBib3ggaW5zaWRlIGEgdGFsbCBjZWxsIG9yIHdlIG5lZWQgdG8KICAg
ICAgICAgICAgIC8vIHVzZSBzb21lIGtpbmQgb2YgaW50cmluc2ljIHBhZGRpbmcgc2ltaWxhciB0
byBSZW5kZXJUYWJsZUNlbGwuCi0gICAgICAgICAgICBhdXRvIHBhZGRpbmdUb3AgPSBjZWxsQm94
R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoTGF5b3V0VW5pdCB7IH0pOwotICAgICAgICAg
ICAgYXV0byBwYWRkaW5nQm90dG9tID0gY2VsbEJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52
YWx1ZU9yKExheW91dFVuaXQgeyB9KTsKKyAgICAgICAgICAgIGF1dG8gcGFkZGluZ1RvcCA9IGNl
bGxCb3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IH0pOworICAg
ICAgICAgICAgYXV0byBwYWRkaW5nQm90dG9tID0gY2VsbEJveEdlb21ldHJ5LnBhZGRpbmdCb3R0
b20oKS52YWx1ZV9vcihMYXlvdXRVbml0IHsgfSk7CiAgICAgICAgICAgICBhdXRvIGludHJpbnNp
Y1BhZGRpbmdUb3AgPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgICAgIGF1dG8gaW50cmluc2lj
UGFkZGluZ0JvdHRvbSA9IExheW91dFVuaXQgeyB9OwogCkBAIC0yNTUsOCArMjU1LDggQEAgdm9p
ZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25z
dCBDb25zdHJhaW50c0ZvckluRmwKICAgICAgICAgLy8gU2VjdGlvbiBib3JkZXJzIGFyZSBlaXRo
ZXIgY29sbGFwc2VkIG9yIGlnbm9yZWQuCiAgICAgICAgIHNlY3Rpb25Cb3hHZW9tZXRyeS5zZXRC
b3JkZXIoeyB9KTsKICAgICAgICAgLy8gVXNlIGZha2UgdmVydGljYWwgcGFkZGluZyB0byBzcGFj
ZSBvdXQgdGhlIHNlY3Rpb25zLgotICAgICAgICBzZWN0aW9uQm94R2VvbWV0cnkuc2V0UGFkZGlu
ZyhFZGdlcyB7IHsgfSwgeyBwYWRkaW5nQmVmb3JlLnZhbHVlT3IoMF9sdSksIHBhZGRpbmdBZnRl
ciB9IH0pOwotICAgICAgICBwYWRkaW5nQmVmb3JlID0gV1RGOjpudWxsb3B0OworICAgICAgICBz
ZWN0aW9uQm94R2VvbWV0cnkuc2V0UGFkZGluZyhFZGdlcyB7IHsgfSwgeyBwYWRkaW5nQmVmb3Jl
LnZhbHVlX29yKDBfbHUpLCBwYWRkaW5nQWZ0ZXIgfSB9KTsKKyAgICAgICAgcGFkZGluZ0JlZm9y
ZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgLy8gSW50ZXJuYWwgdGFibGUgZWxlbWVudHMgZG8g
bm90IGhhdmUgbWFyZ2lucy4KICAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldEhvcml6b250
YWxNYXJnaW4oeyB9KTsKICAgICAgICAgc2VjdGlvbkJveEdlb21ldHJ5LnNldFZlcnRpY2FsTWFy
Z2luKHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oCmlu
ZGV4IDcyOWFjMjgwMzYxZmU1NDgwN2IzN2Q1MzY2NzNlM2Q4MjE4NmZlNjAuLmJiMjQxMWQ0MWRm
MWFmN2U2NzQ3YmY1ZDc3ZWQ0NDQzMzliYjJkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBUYWJsZUxheW91dCgqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCkudGFibGVHcmlkKCkpOyB9
CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgbGF5b3V0Q2VsbChjb25zdCBUYWJsZUdy
aWQ6OkNlbGwmLCBMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQgPSBXVEY6Om51bGxv
cHQpOworICAgIHZvaWQgbGF5b3V0Q2VsbChjb25zdCBUYWJsZUdyaWQ6OkNlbGwmLCBMYXlvdXRV
bml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlVmVydGljYWxTcGFjZUZvckNvbnRlbnQgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgc2V0
VXNlZEdlb21ldHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2Up
OwogICAgIHZvaWQgc2V0VXNlZEdlb21ldHJ5Rm9yUm93cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhv
cml6b250YWxTcGFjZSk7CiAgICAgdm9pZCBzZXRVc2VkR2VvbWV0cnlGb3JTZWN0aW9ucyhjb25z
dCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggYzY4NDNjODM0ZDljOWUzYTE5Y2RiODdk
MGI5NWJkODZiMGE1OTZiZC4uM2UzYjZmNzZhMGY0ZThlZWRmODE1NGQ5NTY5YmUzNzNmNjE0MzE1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
QEAgLTE0MCw5ICsxNDAsOSBAQCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIFRhYmxlRm9ybWF0
dGluZ0dlb21ldHJ5OjppbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzRm9yQwogICAgIC8vIEV4cGFu
ZCB3aXRoIGJvcmRlcgogICAgIGludHJpbnNpY1dpZHRoQ29uc3RyYWludHMuZXhwYW5kKGNvbXB1
dGVkQ2VsbEJvcmRlcihjZWxsKS53aWR0aCgpKTsKICAgICAvLyBwYWRkaW5nCi0gICAgaW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cy5leHBhbmQoZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nTGVmdCgp
KS52YWx1ZU9yKDApICsgZml4ZWRWYWx1ZShzdHlsZS5wYWRkaW5nUmlnaHQoKSkudmFsdWVPcigw
KSk7CisgICAgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5leHBhbmQoZml4ZWRWYWx1ZShzdHls
ZS5wYWRkaW5nTGVmdCgpKS52YWx1ZV9vcigwKSArIGZpeGVkVmFsdWUoc3R5bGUucGFkZGluZ1Jp
Z2h0KCkpLnZhbHVlX29yKDApKTsKICAgICAvLyBhbmQgbWFyZ2luCi0gICAgaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cy5leHBhbmQoZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5TdGFydCgpKS52YWx1
ZU9yKDApICsgZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5FbmQoKSkudmFsdWVPcigwKSk7CisgICAg
aW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5leHBhbmQoZml4ZWRWYWx1ZShzdHlsZS5tYXJnaW5T
dGFydCgpKS52YWx1ZV9vcigwKSArIGZpeGVkVmFsdWUoc3R5bGUubWFyZ2luRW5kKCkpLnZhbHVl
X29yKDApKTsKICAgICByZXR1cm4gaW50cmluc2ljV2lkdGhDb25zdHJhaW50czsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDU2YjI3MmIy
ZGIwMDM1YTVjZmJkN2Y2NTA2NjYzZmFhMDAzYWJmZTMuLmU1Y2U2NWFiNTQyMTdhMDVjOTljOTNm
MTk0MjllNWQ5ZDg2MzlkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z1F1aXJrcy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgTGF5b3V0VW5pdCBUYWJsZUZvcm1hdHRpbmdR
dWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGUKICAg
ICAvLyBlLmcgPGRpdiBzdHlsZT0iaGVpZ2h0OiAxMDBweCI+PHRhYmxlPjx0cj48dGQgc3R5bGU9
ImhlaWdodDogMTAwJSI+PC90ZD48L3RyPjwvdGFibGU+PC9kaXY+IGlzIHJlc29sdmVkIHRvIDBw
eC4KICAgICBhdXRvIGZpeGVkTG9naWNhbEhlaWdodCA9IFsmXShjb25zdCBhdXRvJiBhbmNlc3Rv
ckJveCkgewogICAgICAgICBhdXRvIGhlaWdodCA9IGFuY2VzdG9yQm94LnN0eWxlKCkubG9naWNh
bEhlaWdodCgpOwotICAgICAgICByZXR1cm4gaGVpZ2h0LmlzRml4ZWQoKSA/IG1ha2VPcHRpb25h
bChMYXlvdXRVbml0IHsgaGVpZ2h0LnZhbHVlKCkgfSkgOiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBoZWlnaHQuaXNGaXhlZCgpID8gc3RkOjptYWtlX29wdGlvbmFsKExheW91dFVuaXQg
eyBoZWlnaHQudmFsdWUoKSB9KSA6IHN0ZDo6bnVsbG9wdDsKICAgICB9OwogCiAgICAgYXV0byYg
dGFibGVCb3ggPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxh
eW91dC5jcHAKaW5kZXggZDg1Njc2NTMyM2RjY2VkNDJiY2IzMGU3NDQxNjYwMzZmOGI5ZmMyNC4u
MjQ1MTk3ZGQ5YjJlNDMyMjliODU3ZjU5MDc1NTU4ZTliYWZiNmU0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUxheW91dC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
VAogICAgIGF1dG8gY29sdW1uV2lkdGhCYWxhbmNpbmdCYXNlID0gYXZhaWxhYmxlSG9yaXpvbnRh
bFNwYWNlID49IG1fZ3JpZC53aWR0aENvbnN0cmFpbnRzKCktPm1heGltdW0gPyBDb2x1bW5XaWR0
aEJhbGFuY2luZ0Jhc2U6Ok1heGltdW1XaWR0aCA6IENvbHVtbldpZHRoQmFsYW5jaW5nQmFzZTo6
TWluaW11bVdpZHRoOwogICAgIHJldHVybiBkaXN0cmlidXRlQXZhaWxhYmxlU3BhY2U8Q29sdW1u
U3Bhbj4obV9ncmlkLCBhdmFpbGFibGVIb3Jpem9udGFsU3BhY2UsIFsmXSAoY29uc3QgVGFibGVH
cmlkOjpTbG90JiBzbG90LCBzaXplX3QgY29sdW1uSW5kZXgpIHsKICAgICAgICAgYXV0byYgY29s
dW1uID0gbV9ncmlkLmNvbHVtbnMoKS5saXN0KClbY29sdW1uSW5kZXhdOwotICAgICAgICBhdXRv
IGNvbHVtbkJveEZpeGVkV2lkdGggPSBjb2x1bW4uYm94KCkgPyBjb2x1bW4uYm94KCktPmNvbHVt
bldpZHRoKCkudmFsdWVPcigwX2x1KSA6IDBfbHU7CisgICAgICAgIGF1dG8gY29sdW1uQm94Rml4
ZWRXaWR0aCA9IGNvbHVtbi5ib3goKSA/IGNvbHVtbi5ib3goKS0+Y29sdW1uV2lkdGgoKS52YWx1
ZV9vcigwX2x1KSA6IDBfbHU7CiAgICAgICAgIGF1dG8gbWluaW11bVdpZHRoID0gc3RkOjptYXg8
ZmxvYXQ+KHNsb3Qud2lkdGhDb25zdHJhaW50cygpLm1pbmltdW0sIGNvbHVtbkJveEZpeGVkV2lk
dGgpOwogICAgICAgICBhdXRvIG1heGltdW1XaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PihzbG90Lndp
ZHRoQ29uc3RyYWludHMoKS5tYXhpbXVtLCBjb2x1bW5Cb3hGaXhlZFdpZHRoKTsKIApAQCAtMjcy
LDcgKzI3Miw3IEBAIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpEaXN0cmli
dXRlZFNwYWNlcyBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUCiAgICAgICAgIGF1dG8gbWF4aW11
bUNvbHVtbkFzY2VudCA9IElubGluZUxheW91dFVuaXQgeyB9OwogICAgICAgICBhdXRvIG1heGlt
dW1Db2x1bW5EZXNjZW50ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgICAgIC8vIEluaXRp
YWwgbWluaW11bSBoZWlnaHQgaXMgdGhlIGNvbXB1dGVkIGhlaWdodCBpZiBhdmFpbGFibGUgPHRy
IHN0eWxlPSJoZWlnaHQ6IDEwMHB4Ij48dGQ+PC90ZD48L3RyPgotICAgICAgICByb3dIZWlnaHRb
cm93SW5kZXhdID0gZm9ybWF0dGluZ0NvbnRleHQoKS5mb3JtYXR0aW5nR2VvbWV0cnkoKS5jb21w
dXRlZEhlaWdodChyb3dzLmxpc3QoKVtyb3dJbmRleF0uYm94KCksIGF2YWlsYWJsZVZlcnRpY2Fs
U3BhY2UpLnZhbHVlT3IoMF9sdSk7CisgICAgICAgIHJvd0hlaWdodFtyb3dJbmRleF0gPSBmb3Jt
YXR0aW5nQ29udGV4dCgpLmZvcm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkSGVpZ2h0KHJvd3Mu
bGlzdCgpW3Jvd0luZGV4XS5ib3goKSwgYXZhaWxhYmxlVmVydGljYWxTcGFjZSkudmFsdWVfb3Io
MF9sdSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5kZXgg
PCBjb2x1bW5zLnNpemUoKTsgKytjb2x1bW5JbmRleCkgewogICAgICAgICAgICAgYXV0byYgc2xv
dCA9ICptX2dyaWQuc2xvdCh7IGNvbHVtbkluZGV4LCByb3dJbmRleCB9KTsKICAgICAgICAgICAg
IGlmIChzbG90LmlzUm93U3Bhbm5lZCgpKQpAQCAtMjk2LDE0ICsyOTYsMTQgQEAgVGFibGVGb3Jt
YXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVkU3BhY2VzIFRhYmxlRm9ybWF0
dGluZ0NvbnRleHQ6OlQKICAgICAvLyBGSVhNRTogQ29sbGVjdCBzcGFubmluZyByb3cgbWF4aW11
bSBoZWlnaHRzLgogCiAgICAgdGFibGVVc2VkSGVpZ2h0ICs9IChyb3dzLnNpemUoKSArIDEpICog
bV9ncmlkLnZlcnRpY2FsU3BhY2luZygpOwotICAgIGF1dG8gYXZhaWxhYmxlU3BhY2UgPSBzdGQ6
Om1heChhdmFpbGFibGVWZXJ0aWNhbFNwYWNlLnZhbHVlT3IoMF9sdSksIHRhYmxlVXNlZEhlaWdo
dCk7CisgICAgYXV0byBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWF4KGF2YWlsYWJsZVZlcnRpY2Fs
U3BhY2UudmFsdWVfb3IoMF9sdSksIHRhYmxlVXNlZEhlaWdodCk7CiAgICAgLy8gRGlzdHJpYnV0
ZSBleHRyYSBzcGFjZSBpZiB0aGUgdGFibGUgaXMgc3VwcG9zZWQgdG8gYmUgdGFsbGVyIHRoYW4g
dGhlIHN1bSBvZiB0aGUgcm93IGhlaWdodHMuCiAgICAgcmV0dXJuIGRpc3RyaWJ1dGVBdmFpbGFi
bGVTcGFjZTxSb3dTcGFuPihtX2dyaWQsIGF2YWlsYWJsZVNwYWNlLCBbJl0gKGNvbnN0IFRhYmxl
R3JpZDo6U2xvdCYgc2xvdCwgc2l6ZV90IHJvd0luZGV4KSB7CiAgICAgICAgIGlmIChzbG90Lmhh
c1Jvd1NwYW4oKSkKICAgICAgICAgICAgIHJldHVybiBHcmlkU3BhY2UgeyBmb3JtYXR0aW5nQ29u
dGV4dCgpLmdlb21ldHJ5Rm9yQm94KHNsb3QuY2VsbCgpLmJveCgpKS5ib3JkZXJCb3hIZWlnaHQo
KSwgZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChzbG90LmNlbGwoKS5ib3goKSku
Ym9yZGVyQm94SGVpZ2h0KCkgfTsKICAgICAgICAgYXV0byYgcm93cyA9IG1fZ3JpZC5yb3dzKCk7
CiAgICAgICAgIGF1dG8gY29tcHV0ZWRSb3dIZWlnaHQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmZv
cm1hdHRpbmdHZW9tZXRyeSgpLmNvbXB1dGVkSGVpZ2h0KHJvd3MubGlzdCgpW3Jvd0luZGV4XS5i
b3goKSwgeyB9KTsKLSAgICAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1heDxmbG9hdD4ocm93SGVp
Z2h0W3Jvd0luZGV4XSwgY29tcHV0ZWRSb3dIZWlnaHQudmFsdWVPcigwX2x1KSk7CisgICAgICAg
IGF1dG8gaGVpZ2h0ID0gc3RkOjptYXg8ZmxvYXQ+KHJvd0hlaWdodFtyb3dJbmRleF0sIGNvbXB1
dGVkUm93SGVpZ2h0LnZhbHVlX29yKDBfbHUpKTsKICAgICAgICAgcmV0dXJuIEdyaWRTcGFjZSB7
IGhlaWdodCwgaGVpZ2h0IH07CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5j
cHAKaW5kZXggOTRkOTYzOTAzOWVhZDM5YmU4MDhhZmIwZGYxYzRkYzRhNGFmOWRjNy4uZTMwNDhi
NmI0Y2Q1YjQ3OGY0OTljYTdiNmQ4Mzk3ZDI3ZWU3ZTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkNv
dmVyYWdlLmNwcApAQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBPcHRpb25TZXQ8QXZvaWRhbmNl
UmVhc29uPiBjYW5Vc2VGb3JTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEluY2x1CiAg
ICAgaWYgKHN0eWxlLnRleHRTZWN1cml0eSgpICE9IFRleHRTZWN1cml0eTo6Tm9uZSkKICAgICAg
ICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVGV4dFNlY3VyaXR5LCBy
ZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBo
ZW5zOjpBdXRvKSB7Ci0gICAgICAgIGF1dG8gdGV4dFJlYXNvbnMgPSBjYW5Vc2VGb3JUZXh0KHN0
eWxlLmh5cGhlblN0cmluZygpLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBXVEY6Om51bGxvcHQsIGZh
bHNlLCBpbmNsdWRlUmVhc29ucyk7CisgICAgICAgIGF1dG8gdGV4dFJlYXNvbnMgPSBjYW5Vc2VG
b3JUZXh0KHN0eWxlLmh5cGhlblN0cmluZygpLCBzdHlsZS5mb250Q2FzY2FkZSgpLCBzdGQ6Om51
bGxvcHQsIGZhbHNlLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgICAgIGlmICh0ZXh0UmVhc29ucykK
ICAgICAgICAgICAgIEFERF9SRUFTT05TX0FORF9SRVRVUk5fSUZfTkVFREVEKHRleHRSZWFzb25z
LCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAppbmRleCBi
Zjk1YzY2ZmUxNzE1MGIzOGQ0MDY4OTM1MGZkMjI3MjMyZWU3Njg5Li4zZGZlZWNiMjFiY2ZjYzY0
OWJjYTc3YzJlMWFiMWYxYzM5YmQ1NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaApAQCAtNjEsNyArNjEs
NyBAQCBzdHJ1Y3QgUnVuIHsKICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFuc2lvbjsKLSAgICBS
dW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIE9wdGlvbmFsPFRleHRD
b250ZW50PiA9IFdURjo6bnVsbG9wdCk7CisgICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0
IExheW91dDo6Qm94JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVy
ZmxvdywgRXhwYW5zaW9uLCBPcHRpb25hbDxUZXh0Q29udGVudD4gPSBzdGQ6Om51bGxvcHQpOwog
CiAgICAgY29uc3QgRmxvYXRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAg
ICAgY29uc3QgRmxvYXRSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3Zl
cmZsb3c7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveEdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCb3hHZW9tZXRyeS5oCmluZGV4IDA4MzA1YjM0NjQ5NGVkZTg5ZDE1YTU2MDVhYWNlZjBmNWE0
M2Q0YTAuLjZkMGZiODE4Y2NkNmYwMTEwNTBkMWEwNmI2MTliNTllOTMxZWQwZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveEdlb21ldHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94R2VvbWV0cnku
aApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdmVy
dGljYWxQYWRkaW5nKCkgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaG9yaXpvbnRh
bFBhZGRpbmcoKSBjb25zdDsKIAotICAgIExheW91dFVuaXQgY29udGVudEJveFRvcCgpIGNvbnN0
IHsgcmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOyB9Ci0g
ICAgTGF5b3V0VW5pdCBjb250ZW50Qm94TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHBhZGRpbmdCb3hM
ZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IGNvbnRl
bnRCb3hUb3AoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nQm94VG9wKCkgKyBwYWRkaW5nVG9wKCku
dmFsdWVfb3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gcGFkZGluZ0JveExlZnQoKSArIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCk7IH0KICAg
ICBMYXlvdXRVbml0IGNvbnRlbnRCb3hCb3R0b20oKSBjb25zdCB7IHJldHVybiBjb250ZW50Qm94
VG9wKCkgKyBjb250ZW50Qm94SGVpZ2h0KCk7IH0KICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hS
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRCb3hMZWZ0KCkgKyBjb250ZW50Qm94V2lkdGgo
KTsgfQogICAgIExheW91dFVuaXQgY29udGVudEJveEhlaWdodCgpIGNvbnN0OwpAQCAtODgsMTYg
Kzg4LDE2IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBhZGRpbmdCb3hMZWZ0KCkgY29uc3Qg
eyByZXR1cm4gYm9yZGVyTGVmdCgpOyB9CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94Qm90dG9t
KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveFRvcCgpICsgcGFkZGluZ0JveEhlaWdodCgpOyB9
CiAgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94UmlnaHQoKSBjb25zdCB7IHJldHVybiBwYWRkaW5n
Qm94TGVmdCgpICsgcGFkZGluZ0JveFdpZHRoKCk7IH0KLSAgICBMYXlvdXRVbml0IHBhZGRpbmdC
b3hIZWlnaHQoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGNvbnRl
bnRCb3hIZWlnaHQoKSArIHBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDApOyB9Ci0gICAgTGF5b3V0
VW5pdCBwYWRkaW5nQm94V2lkdGgoKSBjb25zdCB7IHJldHVybiBwYWRkaW5nTGVmdCgpLnZhbHVl
T3IoMCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBhZGRpbmdSaWdodCgpLnZhbHVlT3IoMCk7IH0K
KyAgICBMYXlvdXRVbml0IHBhZGRpbmdCb3hIZWlnaHQoKSBjb25zdCB7IHJldHVybiBwYWRkaW5n
VG9wKCkudmFsdWVfb3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0KCkgKyBwYWRkaW5nQm90dG9tKCku
dmFsdWVfb3IoMCk7IH0KKyAgICBMYXlvdXRVbml0IHBhZGRpbmdCb3hXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIHBhZGRpbmdMZWZ0KCkudmFsdWVfb3IoMCkgKyBjb250ZW50Qm94V2lkdGgoKSArIHBh
ZGRpbmdSaWdodCgpLnZhbHVlX29yKDApOyB9CiAKICAgICBMYXlvdXRVbml0IGJvcmRlckJveEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgcGFkZGluZ0JveEhlaWdodCgpICsg
dmVydGljYWxTcGFjZUZvclNjcm9sbGJhcigpICsgYm9yZGVyQm90dG9tKCk7IH0KICAgICBMYXlv
dXRVbml0IGJvcmRlckJveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0JveFdpZHRoKCkgKyBob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIoKSArIGJvcmRlclJp
Z2h0KCk7IH0KICAgICBMYXlvdXRVbml0IG1hcmdpbkJveEhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1hcmdpbkJlZm9yZSgpICsgYm9yZGVyQm94SGVpZ2h0KCkgKyBtYXJnaW5BZnRlcigpOyB9CiAg
ICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0
KCkgKyBib3JkZXJCb3hXaWR0aCgpICsgbWFyZ2luRW5kKCk7IH0KIAotICAgIExheW91dFVuaXQg
dmVydGljYWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luQmVm
b3JlKCkgKyB2ZXJ0aWNhbEJvcmRlcigpICsgdmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKSAr
IG1hcmdpbkFmdGVyKCk7IH0KLSAgICBMYXlvdXRVbml0IGhvcml6b250YWxNYXJnaW5Cb3JkZXJB
bmRQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luU3RhcnQoKSArIGhvcml6b250YWxCb3Jk
ZXIoKSArIGhvcml6b250YWxQYWRkaW5nKCkudmFsdWVPcigwKSArIG1hcmdpbkVuZCgpOyB9Cisg
ICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiBtYXJnaW5CZWZvcmUoKSArIHZlcnRpY2FsQm9yZGVyKCkgKyB2ZXJ0aWNhbFBhZGRpbmco
KS52YWx1ZV9vcigwKSArIG1hcmdpbkFmdGVyKCk7IH0KKyAgICBMYXlvdXRVbml0IGhvcml6b250
YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbWFyZ2luU3RhcnQoKSAr
IGhvcml6b250YWxCb3JkZXIoKSArIGhvcml6b250YWxQYWRkaW5nKCkudmFsdWVfb3IoMCkgKyBt
YXJnaW5FbmQoKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFNwYWNlRm9yU2Nyb2xsYmFy
KCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNwYWNlRm9yU2Nyb2xsYmFyOyB9CiAgICAgTGF5
b3V0VW5pdCBob3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX2hv
cml6b250YWxTcGFjZUZvclNjcm9sbGJhcjsgfQpAQCAtMzc3LDcgKzM3Nyw3IEBAIGlubGluZSBP
cHRpb25hbDxMYXlvdXRVbml0PiBCb3hHZW9tZXRyeTo6dmVydGljYWxQYWRkaW5nKCkgY29uc3QK
ICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB0aGlzLT5wYWRkaW5nQm90dG9tKCk7CiAgICAgaWYg
KCFwYWRkaW5nVG9wICYmICFwYWRkaW5nQm90dG9tKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiBwYWRkaW5nVG9wLnZhbHVlT3IoMCkgKyBwYWRkaW5nQm90dG9tLnZhbHVlT3IoMCk7
CisgICAgcmV0dXJuIHBhZGRpbmdUb3AudmFsdWVfb3IoMCkgKyBwYWRkaW5nQm90dG9tLnZhbHVl
X29yKDApOwogfQogCiBpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6Omhv
cml6b250YWxQYWRkaW5nKCkgY29uc3QKQEAgLTM4Niw3ICszODYsNyBAQCBpbmxpbmUgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gQm94R2VvbWV0cnk6Omhvcml6b250YWxQYWRkaW5nKCkgY29uc3QKICAg
ICBhdXRvIHBhZGRpbmdSaWdodCA9IHRoaXMtPnBhZGRpbmdSaWdodCgpOwogICAgIGlmICghcGFk
ZGluZ0xlZnQgJiYgIXBhZGRpbmdSaWdodCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1
cm4gcGFkZGluZ0xlZnQudmFsdWVPcigwKSArIHBhZGRpbmdSaWdodC52YWx1ZU9yKDApOworICAg
IHJldHVybiBwYWRkaW5nTGVmdC52YWx1ZV9vcigwKSArIHBhZGRpbmdSaWdodC52YWx1ZV9vcigw
KTsKIH0KIAogaW5saW5lIExheW91dFVuaXQgQm94R2VvbWV0cnk6OmJvcmRlclRvcCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9t
ZXRyeVJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21l
dHJ5UmVjdC5oCmluZGV4IDMyNTVkOTI0NWNlYjZjODc5NmM4MGE4OWRhNjBhNGM3N2JjNzQwNDYu
LjUyMWY2MTI3M2M1NzFjM2NjNDkyMWM2MDJlY2NjNzlhODNjMTg5ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5UmVjdC5oCkBA
IC0yOTAsNyArMjkwLDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6ZXhwYW5kKE9wdGlvbmFsPExheW91
dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQKIHsKICAgICBBU1NFUlQo
IXdpZHRoIHx8IG1faGFzVmFsaWRXaWR0aCk7CiAgICAgQVNTRVJUKCFoZWlnaHQgfHwgbV9oYXNW
YWxpZEhlaWdodCk7Ci0gICAgbV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZU9yKDApLCBoZWlnaHQu
dmFsdWVPcigwKSk7CisgICAgbV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZV9vcigwKSwgaGVpZ2h0
LnZhbHVlX29yKDApKTsKIH0KIAogaW5saW5lIHZvaWQgUmVjdDo6ZXhwYW5kVG9Db250YWluKGNv
bnN0IFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggMmVjMTk4YzI4M2JjOTIwODRlM2QwMWJj
ODY0NTRmMTcxNDU4NzE4Mi4uOTQ1NjRkMGJlMmQyZjRlYjllY2FhMmNlNThlZDk4ODExZjJlNzA4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIEJveCogVHJlZUJ1aWxkZXI6OmNy
ZWF0ZUxheW91dEJveChjb25zdCBDb250YWluZXJCb3gmIHBhcmVudENvbnRhaW5lciwgY29uc3Qg
UmVuCiAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDo6RWxlbWVudEF0dHJpYnV0ZXMgeyBCb3g6
OkVsZW1lbnRUeXBlOjpJRnJhbWUgfTsKICAgICAgICAgICAgIHJldHVybiBCb3g6OkVsZW1lbnRB
dHRyaWJ1dGVzIHsgQm94OjpFbGVtZW50VHlwZTo6R2VuZXJpY0VsZW1lbnQgfTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH07CiAKICAgICBCb3gqIGNoaWxkTGF5b3V0Qm94ID0gbnVsbHB0cjsKQEAgLTQy
OCw3ICs0MjgsNyBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgICAgICAgICAgICAgIDw8
ICIgc2l6ZSAoIiA8PCBsb2dpY2FsUmVjdC53aWR0aCgpIDw8ICJ4IiA8PCBsb2dpY2FsUmVjdC5o
ZWlnaHQoKSA8PCAiKSIKICAgICAgICAgICAgICAgICA8PCAiIGJhc2VsaW5lICgiIDw8IGxvZ2lj
YWxSZWN0LnRvcCgpICsgaW5saW5lTGV2ZWxCb3guYmFzZWxpbmUoKSA8PCAiKSIKICAgICAgICAg
ICAgICAgICA8PCAiIGFzY2VudCAoIiA8PCBpbmxpbmVMZXZlbEJveC5iYXNlbGluZSgpIDw8ICIv
IiA8PCBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgPDwgIikiCi0gICAgICAg
ICAgICAgICAgPDwgIiBkZXNjZW50ICgiIDw8IGlubGluZUxldmVsQm94LmRlc2NlbnQoKS52YWx1
ZU9yKDAuMGYpIDw8ICIvIiA8PCBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50
IDw8ICIpIjsKKyAgICAgICAgICAgICAgICA8PCAiIGRlc2NlbnQgKCIgPDwgaW5saW5lTGV2ZWxC
b3guZGVzY2VudCgpLnZhbHVlX29yKDAuMGYpIDw8ICIvIiA8PCBpbmxpbmVMZXZlbEJveC5sYXlv
dXRCb3VuZHMoKS5kZXNjZW50IDw8ICIpIjsKICAgICAgICAgICAgIHN0cmVhbS5uZXh0TGluZSgp
OwogICAgICAgICB9OwogICAgICAgICBvdXRwdXRJbmxpbmVMZXZlbEJveChsaW5lQm94LnJvb3RJ
bmxpbmVCb3goKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuY3BwCmluZGV4IGYxYzMzNjFiMmQzN2E4M2FlN2MzZjc2ZTgwN2I1YjBlZjlm
YmQwMTMuLmU1ODJhMDIzYjFlMzM5MDc5ZWFhNzkzZjJhOGNiNGYwNTUwOTA0YTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwCkBA
IC0zMDgsMTQgKzMwOCwxNCBAQCBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZUNyb3Nz
T3JpZ2luUmVzb3VyY2VQb2xpY3koY29uc3QgU2VjdXJpdHlPcmlnaW4mCiB7CiAgICAgaWYgKHNo
b3VsZENyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lDYW5jZWxMb2FkKG9yaWdpbiwgcmVzcG9uc2Up
KQogICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHJlcXVlc3RVUkwsIG1ha2VTdHJpbmcoIkNhbmNlbGxlZCBsb2FkIHRvICIsIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIHJlc291cmNlJ3MgQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeSByZXNw
b25zZSBoZWFkZXIuIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfTsKLSAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9w
dGlvbmFsPFJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7CiAgICAgaWYgKHJlc3BvbnNlLmlzUmFuZ2VSZXF1ZXN0ZWQoKSAmJiByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpID09IDIwNiAmJiByZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25z
ZTo6VHlwZTo6T3BhcXVlICYmICFyZXF1ZXN0Lmhhc0hUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6UmFuZ2UpKQogICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcih7IH0sIDAsIHJlc3Bv
bnNlLnVybCgpLCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCmluZGV4IDk5Y2E5YzRhMGQ5NzY2MTJhMGY4
YmQzM2RhMDg0ZmE0NDY4NWU5OWIuLjkyZTc2OGFhN2Q4ZTg0MmJmZTBhN2Y0NzBiZGU0ZWIxNGVh
NzliOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VBY2Nlc3NDb250cm9sTWF4QWdlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBTZWNvbmRzJiBl
eHBpcnlEZWx0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgcmVqZWN0
IHN0cmluZ3MgdGhhdCBoYXZlIGEgbGVhZGluZyAiKyIuCiAgICAgYXV0byBwYXJzZWRJbnRlZ2Vy
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihzdHJpbmcpOwotICAgIGV4cGlyeURlbHRhID0gU2Vj
b25kcyhzdGF0aWNfY2FzdDxkb3VibGU+KHBhcnNlZEludGVnZXIudmFsdWVPcigwKSkpOworICAg
IGV4cGlyeURlbHRhID0gU2Vjb25kcyhzdGF0aWNfY2FzdDxkb3VibGU+KHBhcnNlZEludGVnZXIu
dmFsdWVfb3IoMCkpKTsKICAgICByZXR1cm4gcGFyc2VkSW50ZWdlci5oYXNWYWx1ZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmllbGRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VzdG9tSGVhZGVyRmllbGRzLmgKaW5kZXggNjYwZmYw
YTAxNmIxOTg2MzNiYmY2ZGFjNDM5NDZkODQzYTNkYTU0OC4uN2YxNDFjZjgxMWQxNWE5NzgxOGU2
MjJiOGVlYzJlZDVjMWJjMjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0N1
c3RvbUhlYWRlckZpZWxkcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdXN0b21IZWFk
ZXJGaWVsZHMuaApAQCAtNTQsMTIgKzU0LDEyIEBAIE9wdGlvbmFsPEN1c3RvbUhlYWRlckZpZWxk
cz4gQ3VzdG9tSGVhZGVyRmllbGRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxWZWN0b3I8SFRUUEhlYWRlckZpZWxkPj4gZmllbGRzOwogICAgIGRlY29kZXIgPj4gZmll
bGRzOwogICAgIGlmICghZmllbGRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiB0aGlyZFBhcnR5RG9tYWluczsKICAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlEb21haW5z
OwogICAgIGlmICghdGhpcmRQYXJ0eURvbWFpbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmZpZWxkcyksIFdURk1vdmUoKnRoaXJkUGFydHlEb21haW5zKSB9fTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkwNWQ5MmZiOThkODdjNDNh
MGM1NWEzYzc4ODE0MzBiNjM1NjdmMjcuLjk4Y2Y5NWRjZGZlNGFkNmRlNTMzMGJjMTdiN2Q1ZTI4
ZTYwZTQyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MTIzLDggKzEyMyw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjZW5k
aWYKIAotI2RlZmluZSBQQUdFX0lEICgobV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2VJRCgpLnZhbHVl
T3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2Rl
ZmluZSBGUkFNRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5mcmFtZUlEKCkudmFsdWVPcihGcmFt
ZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUg
UEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lE
ICgobV9mcmFtZSA/IG1fZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIo
KSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgSVNfTUFJTl9GUkFN
RSAobV9mcmFtZSA/IG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkgOiBmYWxzZSkKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZtdCwgdGhpcywgUEFH
RV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18pCiAKQEAgLTMzMiw3
ICszMzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiAgICAgCiAjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogICAgIGZvciAoYXV0byBjYWxsYmFja0lkZW50
aWZpZXIgOiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnZhbHVlcygpKQotICAgICAgICBu
b3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmll
ciwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgbV9hcHBs
aWNhdGlvbk1hbmlmZXN0TG9hZGVycy5jbGVhcigpOwogI2VuZGlmCiAKQEAgLTU1NiwxMyArNTU2
LDEzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1hdGNoUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYg
dXJsLCBTV0NsaWVudENvbm5lY3Rpb246OlJlZ2lzCiB7CiAgICAgYXV0byBzaG91bGRUcnlMb2Fk
aW5nVGhyb3VnaFNlcnZpY2VXb3JrZXIgPSAhZnJhbWVMb2FkZXIoKS0+aXNSZWxvYWRpbmdGcm9t
T3JpZ2luKCkgJiYgbV9mcmFtZS0+cGFnZSgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSAmJiB1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpOwogICAgIGlmICghc2hvdWxkVHJ5TG9hZGluZ1Rocm91Z2hTZXJ2aWNlV29y
a2VyKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNr
KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIG9yaWdp
biA9ICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKSA/IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigpLmRhdGEoKSA6IFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbVVSTCh1cmwpOwogICAgIGlmICghU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpLm1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0
ZXJlZEZvck9yaWdpbihvcmlnaW4pKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7
CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxv
YWRpbmcoKQogCiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9saW5rSWNvbnMuZmluZE1hdGNoaW5n
KFtdKGF1dG8mIGljb24pIHsgcmV0dXJuIGljb24udHlwZSA9PSBMaW5rSWNvblR5cGU6OkZhdmlj
b247IH0pOwogICAgIGlmIChmaW5kUmVzdWx0ID09IG5vdEZvdW5kKQotICAgICAgICBtX2xpbmtJ
Y29ucy5hcHBlbmQoeyBkb2N1bWVudC0+Y29tcGxldGVVUkwoIi9mYXZpY29uLmljbyJfcyksIExp
bmtJY29uVHlwZTo6RmF2aWNvbiwgU3RyaW5nKCksIFdURjo6bnVsbG9wdCwgeyB9IH0pOworICAg
ICAgICBtX2xpbmtJY29ucy5hcHBlbmQoeyBkb2N1bWVudC0+Y29tcGxldGVVUkwoIi9mYXZpY29u
LmljbyJfcyksIExpbmtJY29uVHlwZTo6RmF2aWNvbiwgU3RyaW5nKCksIHN0ZDo6bnVsbG9wdCwg
eyB9IH0pOwogCiAgICAgaWYgKCFtX2xpbmtJY29ucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggOWI2M2U0Njg4MDFhMGRmYmU4NWQwMDkwZDZkOTViNzIwMzU0MTBlMS4uYjkzOTY1
ZGMxMGE3YjE0YTczNDA2NmZiOTUyZThlYWE3MzQ4NmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTMwMiw3ICszMDIs
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2xlYXJSZXNvdXJjZSgpCiAgICAg
ICAgIHJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgIH0KICAgICBpZiAobV9wcmVm
bGlnaHRDaGVja2VyKQotICAgICAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTUwNiw3ICs1MDYsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbCh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcgogICAgICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0g
U2VydmljZVdvcmtlcnNNb2RlOjpOb25lOwogICAgICAgICBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NS
ZXF1ZXN0V2l0aFByZWZsaWdodChXVEZNb3ZlKG1fYnlwYXNzaW5nUHJlZmxpZ2h0Rm9yU2Vydmlj
ZVdvcmtlclJlcXVlc3QudmFsdWUoKSkpOwogICAgICAgICBBU1NFUlQobV9ieXBhc3NpbmdQcmVm
bGlnaHRGb3JTZXJ2aWNlV29ya2VyUmVxdWVzdC0+aXNOdWxsKCkpOwotICAgICAgICBtX2J5cGFz
c2luZ1ByZWZsaWdodEZvclNlcnZpY2VXb3JrZXJSZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2J5cGFzc2luZ1ByZWZsaWdodEZvclNlcnZpY2VXb3JrZXJSZXF1ZXN0ID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01MjIsNyArNTIyLDcg
QEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nlc3MoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICBSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdChX
VEZNb3ZlKHJlcXVlc3QpKTsKICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChhY3R1
YWxSZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBtX29wdGlvbnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpOwogCi0gICAgbV9wcmVmbGlnaHRDaGVja2VyID0gV1RGOjpudWxsb3B0OworICAgIG1f
cHJlZmxpZ2h0Q2hlY2tlciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEl0IHNob3VsZCBiZSBv
ayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3ZSBhbHJlYWR5IGFza2VkIGFib3V0
IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KICAgICBsb2FkUmVxdWVzdChXVEZNb3ZlKGFjdHVhbFJl
cXVlc3QpLCBTZWN1cml0eUNoZWNrUG9saWN5OjpTa2lwU2VjdXJpdHlDaGVjayk7CkBAIC01MzAs
NyArNTMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodFN1Y2Nl
c3MoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OnByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBtX3ByZWZsaWdodENoZWNrZXIgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gc3RkOjpudWxsb3B0OwogCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2RvY3VtZW50LmZyYW1lKCks
IG1fZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmll
ciwgZXJyb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDdi
OTAyODFjYTc2Mjc3YjM3ZjRmOTZmZWU0ZWMxNTM5MjJlYzRiNTIuLmVmZDkzZWFlNGYxN2RkMzZm
NzM3MTE0N2VkMGYxYzk1MmY1ZWE3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogICAgIEVtcHR5RWRpdG9yQ2xpZW50
KCkgPSBkZWZhdWx0OwogCiBwcml2YXRlOgotICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoY29u
c3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHNob3VsZERlbGV0ZVJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jikg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCgpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wg
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtMjQ4LDExICsyNDgsMTEgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkQmVnaW5F
ZGl0aW5nKGNvbnN0IFNpbXBsZVJhbmdlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBi
b29sIHNob3VsZEVuZEVkaXRpbmcoY29uc3QgU2ltcGxlUmFuZ2UmKSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQotICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlJiwgY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24pIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYsIGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIEFmZmluaXR5LCBib29s
KSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2Rl
JiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBFZGl0b3JJbnNlcnRBY3Rpb24p
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0
IFN0cmluZyYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgRWRpdG9ySW5zZXJ0
QWN0aW9uKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgQWZmaW5pdHksIGJvb2wpIGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVz
JiwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZvaWQgZGlkQXBwbHlTdHlsZSgpIGZpbmFsIHsgfQogICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdl
QWZ0ZXJEZWxldGUoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpIGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTI2NSw5ICsyNjUsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkVXBkYXRlQ29tcG9zaXRpb24oKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZEVuZEVkaXRp
bmcoKSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFu
Z2VzKCkgZmluYWwgeyB9Ci0gICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQo
Y29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JikgZmluYWwgeyB9CisgICAgdm9pZCB3aWxsV3Jp
dGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
KSBmaW5hbCB7IH0KICAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShjb25zdCBPcHRpb25hbDxT
aW1wbGVSYW5nZT4mLCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mKSBmaW5hbCB7IH0KKyAgICB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgVmVjdG9yPFN0cmluZz4mLCBWZWN0b3I8UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JikgZmluYWwgeyB9CiAgICAgdm9pZCByZXF1ZXN0Q2FuZGlkYXRlc0Zv
clNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAgdm9pZCBo
YW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCkg
ZmluYWwgeyB9CiAKQEAgLTQwMiwxOSArNDAyLDE5IEBAIGNsYXNzIEVtcHR5SW5zcGVjdG9yQ2xp
ZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckNsaWVudCB7CiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKIAogY2xhc3MgRW1wdHlQYXltZW50Q29vcmRpbmF0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMg
UGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsKLSAgICBPcHRpb25hbDxTdHJpbmc+IHZhbGlkYXRl
ZFBheW1lbnROZXR3b3JrKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB2YWxpZGF0ZWRQYXltZW50TmV0d29yayhj
b25zdCBTdHJpbmcmKSBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBib29sIGNh
bk1ha2VQYXltZW50cygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjYW5NYWtl
UGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNh
bGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfSk7IH0KICAgICB2
b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwgeyBjYWxs
T25NYWluVGhyZWFkKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0pOyB9CiAgICAgYm9v
bCBzaG93UGF5bWVudFVJKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxVUkw+JiwgY29uc3QgQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpIGZpbmFsIHsgfQotICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bihPcHRpb25hbDxBcHBsZVBheVNoaXBwaW5nTWV0aG9kVXBkYXRlPiYmKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPEFwcGxlUGF5
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYmKSBmaW5hbCB7IH0KLSAgICB2b2lkIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxBcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGU+
JiYpIGZpbmFsIHsgfQorICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihz
dGQ6Om9wdGlvbmFsPEFwcGxlUGF5U2hpcHBpbmdNZXRob2RVcGRhdGU+JiYpIGZpbmFsIHsgfQor
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxB
cHBsZVBheVNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mJikgZmluYWwgeyB9CisgICAgdm9pZCBjb21w
bGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oc3RkOjpvcHRpb25hbDxBcHBsZVBheVBheW1lbnRN
ZXRob2RVcGRhdGU+JiYpIGZpbmFsIHsgfQogI2lmIEVOQUJMRShBUFBMRV9QQVlfUEFZTUVOVF9N
RVRIT0RfTU9ERSkKLSAgICB2b2lkIGNvbXBsZXRlUGF5bWVudE1ldGhvZE1vZGVDaGFuZ2UoT3B0
aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJikgZmluYWwgeyB9Ci0jZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWV9QQVlNRU5UX01FVEhPRF9NT0RFKQotICAgIHZvaWQgY29t
cGxldGVQYXltZW50U2Vzc2lvbihPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4m
JikgZmluYWwgeyB9CisgICAgdm9pZCBjb21wbGV0ZVBheW1lbnRNZXRob2RNb2RlQ2hhbmdlKHN0
ZDo6b3B0aW9uYWw8QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZT4mJikgZmluYWwgeyB9
CisjZW5kaWYKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVudFNlc3Npb24oc3RkOjpvcHRpb25hbDxQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mJikgZmluYWwgeyB9CiAgICAgdm9pZCBjYW5jZWxQ
YXltZW50U2Vzc2lvbigpIGZpbmFsIHsgfQogICAgIHZvaWQgYWJvcnRQYXltZW50U2Vzc2lvbigp
IGZpbmFsIHsgfQogICAgIHZvaWQgcGF5bWVudENvb3JkaW5hdG9yRGVzdHJveWVkKCkgZmluYWwg
eyB9CkBAIC00MjUsNyArNDI1LDcgQEAgY2xhc3MgRW1wdHlQYXltZW50Q29vcmRpbmF0b3JDbGll
bnQgZmluYWwgOiBwdWJsaWMgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50IHsKIAogY2xhc3MgRW1w
dHlQbHVnaW5JbmZvUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgUGx1Z2luSW5mb1Byb3ZpZGVyIHsK
ICAgICB2b2lkIHJlZnJlc2hQbHVnaW5zKCkgZmluYWwgeyB9OwotICAgIFZlY3RvcjxQbHVnaW5J
bmZvPiBwbHVnaW5JbmZvKFBhZ2UmLCBPcHRpb25hbDxWZWN0b3I8U3VwcG9ydGVkUGx1Z2luSWRl
bnRpZmllcj4+JikgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgVmVjdG9yPFBsdWdpbkluZm8+
IHBsdWdpbkluZm8oUGFnZSYsIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklk
ZW50aWZpZXI+PiYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIFZlY3RvcjxQbHVnaW5JbmZv
PiB3ZWJWaXNpYmxlUGx1Z2luSW5mbyhQYWdlJiwgY29uc3QgVVJMJikgZmluYWwgeyByZXR1cm4g
eyB9OyB9CiB9OwogCkBAIC01NTAsOSArNTUwLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxEYXRlVGlt
ZUNob29zZXI+IEVtcHR5Q2hyb21lQ2xpZW50OjpjcmVhdGVEYXRlVGltZUNob29zZXIoRGF0ZVRp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKwogdm9pZCBFbXB0eUNocm9t
ZUNsaWVudDo6c3RvcmVBcHBIaWdobGlnaHQoQXBwSGlnaGxpZ2h0JiYpIGNvbnN0CiB7CiB9CisK
ICNlbmRpZgogCiB2b2lkIEVtcHR5Q2hyb21lQ2xpZW50OjpzZXRUZXh0SW5kaWNhdG9yKGNvbnN0
IFRleHRJbmRpY2F0b3JEYXRhJikgY29uc3QKQEAgLTYwNCw2ICs2MDYsNDkxIEBAIFJlZlB0cjxX
aWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUlEKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAoreworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6aGFz
V2ViVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7IC8vIG1haW5seSBmb3IgYXNzZXJ0
aW9ucworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Om1ha2VSZXByZXNlbnRhdGlv
bihEb2N1bWVudExvYWRlciopCit7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCiti
b29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0T25SZXN0b3JlRnJvbUJhY2tG
b3J3YXJkQ2FjaGUoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKK3sKK30KKwor
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzZXRDb3BpZXNPblNjcm9sbCgpCit7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MigpCit7Cit9
CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCit7
Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxv
YWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZywgRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQoreworfQorCitib29sIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZykKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKK3sKK30KKworI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK1JldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbm5lY3Rpb25Qcm9wZXJ0
aWVzKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworI2VuZGlmCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgaW50KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCit7Cit9CisK
KyNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikKK3sKK30KKworI2Vu
ZGlmCisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGlu
ZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKQor
eworfQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9h
ZEV2ZW50cygpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKQoreworfQorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIFdhbGxUaW1lLCBMb2NrQmFja0Zv
cndhcmRMaXN0KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKQoreworfQorCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFn
ZSgpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BT
dGF0ZVdpdGhpblBhZ2UoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbENsb3NlKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENvbW1pdExvYWQoc3RkOjpvcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+LCBzdGQ6Om9wdGlv
bmFsPFVzZWRMZWdhY3lUTFM+KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiwgV2ls
bENvbnRpbnVlTG9hZGluZykKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworfQorCit2b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkKK3sK
K30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWQo
KQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUoT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4pCit7Cit9CisKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWFjaFZpc3VhbGx5Tm9uRW1wdHlT
dGF0ZSgpCit7Cit9CisKK0ZyYW1lKiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KQor
eworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoU2hvdygpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
LCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJv
ciYpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmV2ZXJ0VG9Qcm92aXNp
b25hbFN0YXRlKERvY3VtZW50TG9hZGVyKikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNldE1haW5G
cmFtZURvY3VtZW50UmVhZHkoYm9vbCkKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpzdGFydERvd25sb2FkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYp
Cit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZVRpdGxlKERv
Y3VtZW50TG9hZGVyKikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKK3sKK30KKwordm9pZCBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCit7Cit9CisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IGNoYXIqLCBpbnQpCit7Cit9CisKK3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikKK3sKK30KKworUmVzb3VyY2VFcnJv
ciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdAoreworICAgIHJldHVybiB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbiB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmJs
b2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAgIHJldHVybiB7
IH07Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6YmxvY2tlZEJ5
Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAg
IHJldHVybiB7IH07Cit9CisKK1Jlc291cmNlRXJyb3IgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsgfTsKK30KKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QKK3sKKyAgICByZXR1
cm4geyB9OworfQorCisjZW5kaWYKKworUmVzb3VyY2VFcnJvciBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29u
c3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
Y29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCitSZXNvdXJjZUVycm9yIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgfTsKK30KKworYm9vbCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5
cGUoY29uc3QgU3RyaW5nJikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlQXNIVE1MKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OnJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudDo6Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29u
c3QKK3sKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpmcmFtZUxvYWRDb21wbGV0ZWQoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlc3RvcmVWaWV3U3RhdGUoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQoreworfQorCit2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWQoKQoreworfQorCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQoreworfQor
Cit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyJikKK3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikKK3sKK30KKwor
U3RyaW5nIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25z
dAoreworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCit2b2lkIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikKK3sK
K30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRG
cm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKQoreworfQorCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3JlRnJhbWVIaWVy
YXJjaHlGb3JDYWNoZWRGcmFtZSgpCit7Cit9CisKKyNlbmRpZgorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQoreworfQorCisK
K3ZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZUZyb21CYWNrRm9yd2FyZENh
Y2hlKCkKK3sKK30KKworCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2Jh
bEhpc3RvcnkoKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUds
b2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKK3sKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25zdAoreworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlVmll
d1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtJikKK3sKK30KKworYm9vbCBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkK
K3sKK30KKwordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKQoreworfQorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQoreworfQorCitPYmpl
Y3RDb250ZW50VHlwZSBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQoreworICAgIHJldHVybiBPYmplY3RDb250ZW50VHlw
ZTo6Tm9uZTsKK30KKworU3RyaW5nIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Om92ZXJyaWRlTWVk
aWFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCYpCit7Cit9CisKK3ZvaWQg
RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkJikKK3sKK30KKworI2lmIFBMQVRGT1JNKENPQ09BKQorCitSZW1v
dGVBWE9iamVjdFJlZiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjphY2Nlc3NpYmlsaXR5UmVtb3Rl
T2JqZWN0KCkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2UpOworfQorCisjZW5kaWYKKworI2lmIFVTRShD
RlVSTENPTk5FQ1RJT04pCisKK2Jvb2wgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkQ2Fj
aGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKQorewor
ICAgIHJldHVybiB0cnVlOworfQorCisjZW5kaWYKKworYm9vbCBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50Ojppc0VtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYpCit7Cit9CisKKyNpZiBVU0UoUVVJQ0tfTE9PSykKKworUmVmUHRyPExlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMb2Fk
ZXJDbGllbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorCitib29sIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6Omhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiBpbmxpbmUgRW1w
dHlGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpFbXB0eUZyYW1lTmV0d29ya2luZ0NvbnRleHQoKQog
ICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dCB7IG51bGxwdHIgfQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGE3MWRjODU0ZWY1MGMzNTkyYTA0ZjUyNzliNWQ1MTQ5
OTg1MTQ4NTkuLjMxNjA1ZTY4MmRiNGRjZDYxNmYxYjhmMDVjZWU2Y2Q3NGRiOTBkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBF
bXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDbGllbnQgewogCiAgICAgYm9vbCBob3Zl
clN1cHBvcnRlZEJ5UHJpbWFyeVBvaW50aW5nRGV2aWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH07CiAgICAgYm9vbCBob3ZlclN1cHBvcnRlZEJ5QW55QXZhaWxhYmxlUG9pbnRpbmdE
ZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIE9wdGlvbmFsPFBvaW50
ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJpc3RpY3NPZlByaW1hcnlQb2ludGlu
Z0RldmljZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfTsKKyAgICBPcHRp
b25hbDxQb2ludGVyQ2hhcmFjdGVyaXN0aWNzPiBwb2ludGVyQ2hhcmFjdGVyaXN0aWNzT2ZQcmlt
YXJ5UG9pbnRpbmdEZXZpY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH07
CiAgICAgT3B0aW9uU2V0PFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3M+IHBvaW50ZXJDaGFyYWN0ZXJp
c3RpY3NPZkFsbEF2YWlsYWJsZVBvaW50aW5nRGV2aWNlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHsgfTsgfQogCiAgICAgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIGZp
bmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggODk1MmYwZjk4NjMwZmE5ODdiMTEwZTlmMDg1OTFhNjk5MjE3MTVlZi4uZmVhMDM4
MjY5NjM2MDVjMzgzZjZiYTIzMTNlOGU0NTc3N2NlMTE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNiwxODcgKzI2LDE4MiBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUg
IlJlc291cmNlRXJyb3IuaCIKLQotI2lmIFVTRShRVUlDS19MT09LKQotI2luY2x1ZGUgIkxlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaCIKLSNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJh
bWVMb2FkZXJDbGllbnQgeworcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGNyZWF0
ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJikgb3ZlcnJpZGU7CiAKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxs
b3B0OyB9CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBj
b25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsOwogCi0g
ICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBtYWlu
bHkgZm9yIGFzc2VydGlvbnMKKyAgICB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExv
YWRlciopIGZpbmFsOwogCi0gICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2Fk
ZXIqKSBmaW5hbCB7IH0KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgZm9yY2VM
YXlvdXRPblJlc3RvcmVGcm9tQmFja0ZvcndhcmRDYWNoZSgpIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBmb3JjZUxheW91dE9uUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkg
ZmluYWw7CiAjZW5kaWYKLSAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIGZpbmFsIHsg
fQogCi0gICAgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIGZpbmFsIHsgfQorICAgIHZvaWQgZm9y
Y2VMYXlvdXRGb3JOb25IVE1MKCkgZmluYWw7CiAKLSAgICB2b2lkIGRldGFjaGVkRnJvbVBhcmVu
dDIoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMoKSBmaW5hbCB7IH0K
KyAgICB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbnZlcnRN
YWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRl
dGFjaGVkRnJvbVBhcmVudDIoKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMo
KSBmaW5hbDsKIAotICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBmaW5h
bCB7IH0KLSAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZykgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgfQotICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFs
IHsgfQorICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOworCisgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNp
Z25lZCBsb25nLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGZpbmFs
OworICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGZpbmFsOwogI2lmIFVTRShQUk9URUNUSU9OX1NQ
QUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUHJvdGVjdGlv
blNwYWNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBQcm90ZWN0aW9uU3BhY2UmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVy
dGllcyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIG51bGxw
dHI7IH0KKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGll
cyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcs
IGludCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGludCkgZmluYWw7CisgICAg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBs
b25nKSBmaW5hbDsKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopIGZpbmFsOwogI2VuZGlmCi0g
ICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsIHsgfQotICAgIGJvb2wgZGlzcGF0Y2hE
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgaW50KSBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkg
ZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSwgV2FsbFRpbWUsIExvY2tCYWNrRm9yd2FyZExp
c3QpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgp
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkg
ZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpIGZpbmFs
IHsgfQotICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSBmaW5hbCB7IH0K
LSAgICB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZChPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRl
bnQ+LCBPcHRpb25hbDxVc2VkTGVnYWN5VExTPikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIFdpbGxDb250aW51
ZUxvYWRpbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3Vt
ZW50TG9hZCgpIGZpbmFsIHsgfQotICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgZmlu
YWwgeyB9Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNl
dDxMYXlvdXRNaWxlc3RvbmU+KSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVhY2hW
aXN1YWxseU5vbkVtcHR5U3RhdGUoKSBmaW5hbCB7IH0KLQotICAgIEZyYW1lKiBkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KSBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdm9pZCBkaXNwYXRjaFNob3coKSBmaW5hbCB7
IH0KLQotICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsIHsgfQorICAg
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICBib29sIGRpc3BhdGNoRGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgZmluYWw7CisKKyAgICB2b2lk
IGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgZmluYWw7CisgICAgdm9p
ZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBX
YWxsVGltZSwgTG9ja0JhY2tGb3J3YXJkTGlzdCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRo
aW5QYWdlKCkgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIGZpbmFsOworICAgIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIGZpbmFs
OworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKHN0ZDo6b3B0aW9uYWw8SGFzSW5zZWN1
cmVDb250ZW50Piwgc3RkOjpvcHRpb25hbDxVc2VkTGVnYWN5VExTPikgZmluYWw7CisgICAgdm9p
ZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYsIFdp
bGxDb250aW51ZUxvYWRpbmcpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERv
Y3VtZW50TG9hZCgpIGZpbmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgZmlu
YWw7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxM
YXlvdXRNaWxlc3RvbmU+KSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVhY2hWaXN1YWxs
eU5vbkVtcHR5U3RhdGUoKSBmaW5hbDsKKworICAgIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2Uo
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIE5ld0ZyYW1lT3BlbmVyUG9saWN5KSBmaW5hbDsKKyAg
ICB2b2lkIGRpc3BhdGNoU2hvdygpIGZpbmFsOworCisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZyYW1lUG9saWN5
RnVuY3Rpb24mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFt
ZVBvbGljeUZ1bmN0aW9uJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBGb3Jt
U3RhdGUqLCBQb2xpY3lEZWNpc2lvbk1vZGUsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQ
b2xpY3lGdW5jdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgZmlu
YWwgeyB9CisgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIGZpbmFsOwogCi0gICAgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgUmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZl
bnQoUmVmPEZvcm1TdGF0ZT4mJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRG
b3JtKEZvcm1TdGF0ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKLSAg
ICB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIGZpbmFsIHsg
fQotICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgZmluYWwgeyB9CisgICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3Rh
dGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKKyAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9y
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCi0gICAgdm9p
ZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0
TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBmaW5hbDsKIAotICAgIHZvaWQgc3RhcnREb3du
bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JikgZmluYWw7CiAKLSAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIGZp
bmFsIHsgfQotICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIGZpbmFsOworICAg
IHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKIAotICAgIHZvaWQg
d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsIHsgfQorICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkgZmluYWw7CisgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29u
c3QgY2hhciosIGludCkgZmluYWwgeyB9Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSBmaW5hbCB7IH0KKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciopIGZpbmFsOwogCi0gICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IFJlc291cmNl
RXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9OyB9Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyByZXR1cm4geyB9OyB9
Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNl
RXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHsgfTsgfQotICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xp
Y3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBmaW5hbCB7IHJldHVy
biB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIGNvbnN0IGZpbmFsOworICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOworICAgIFJlc291cmNlRXJyb3IgYmxv
Y2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBm
aW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5
Q29udGVudEZpbHRlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHsgfTsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEZpbHRlckVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKLSAgICBS
ZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KLSAgICBSZXNvdXJjZUVycm9yIGZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWwgeyBy
ZXR1cm4geyB9OyB9Ci0gICAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdCBmaW5hbCB7IHJldHVybiB7IH07IH0KKyAg
ICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBjb25zdCBmaW5hbDsKKyAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3QgZmluYWw7CisgICAgUmVzb3VyY2VF
cnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBj
b25zdCBmaW5hbDsKIAotICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJv
ciYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRGYWxsQmFj
ayhjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3QgZmluYWw7CiAKLSAgICBib29sIGNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1MKGNvbnN0
IFN0cmluZyYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCByZXByZXNl
bnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CisgICAg
Ym9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1MKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFs
OworICAgIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5n
JikgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1l
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBmcmFtZUxvYWRDb21wbGV0
ZWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSBmaW5hbCB7IH0KLSAg
ICB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZEZp
bmlzaExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFj
ZW1lbnQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIGZpbmFsOwor
ICAgIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIGZpbmFsOworICAgIHZvaWQgcHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCgpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpIGZpbmFsOworICAg
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIGZpbmFsOwogCi0gICAgdm9p
ZCB1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciYpIGZpbmFsIHsgfQot
ICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYp
IGZpbmFsIHsgfQorICAgIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRM
b2FkZXImKSBmaW5hbDsKKyAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mLCBjb25zdCBVUkwmKSBmaW5hbDsKIAotICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJM
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorICAgIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNhdmVQbGF0
Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgZmluYWwgeyB9Ci0gICAgdm9pZCB0
cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikg
ZmluYWw7CisgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2Fj
aGVkRnJhbWUqKSBmaW5hbDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZvaWQgZGlk
UmVzdG9yZUZyYW1lSGllcmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKSBmaW5hbCB7IH0KKyAgICB2b2lk
IGRpZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgZmluYWw7CiAjZW5kaWYK
LSAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBmaW5hbCB7IH0KLQot
ICAgIHZvaWQgZGlkUmVzdG9yZUZyb21CYWNrRm9yd2FyZENhY2hlKCkgZmluYWwgeyB9Ci0KLSAg
ICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbCB7IH0KLSAgICB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWwgeyB9Ci0gICAgYm9vbCBzaG91bGRHb1Rv
SGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSYpIGZpbmFsIHsgfQotICAg
IGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFVSTCYpIGZpbmFsIHsgfQot
ICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpIGZpbmFsIHsgfQorICAgIHZv
aWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIGZpbmFsOworCisgICAgdm9pZCBk
aWRSZXN0b3JlRnJvbUJhY2tGb3J3YXJkQ2FjaGUoKSBmaW5hbDsKKworICAgIHZvaWQgdXBkYXRl
R2xvYmFsSGlzdG9yeSgpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGly
ZWN0TGlua3MoKSBmaW5hbDsKKyAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5
SXRlbSYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5
SXRlbSYpIGZpbmFsOworICAgIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgZmluYWw7CisgICAgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBVUkwmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKSBmaW5hbDsKICAgICBSZWZQdHI8RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCYpIGZp
bmFsOwogICAgIFJlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgZmluYWw7CiAKLSAgICBPYmpl
Y3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBmaW5hbCB7IHJldHVybiBPYmplY3RDb250ZW50VHlwZTo6Tm9uZTsgfQotICAgIFN0cmluZyBv
dmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHsgfTsgfQorICAgIE9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
IGZpbmFsOworICAgIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IGZpbmFsOwogCi0g
ICAgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQmKSBmaW5hbCB7IH0KLSAgICB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpIGZp
bmFsIHsgfQorICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0JikgZmluYWw7Cisg
ICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFJlbW90ZUFYT2JqZWN0UmVm
IGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0g
ICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcs
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IGZpbmFsIHsg
Y29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2UpOyB9CisgICAgUmVtb3RlQVhPYmplY3RSZWYgYWNj
ZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIGZpbmFsOworICAgIHZvaWQgd2lsbENhY2hlUmVzcG9u
c2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBOU0NhY2hlZFVSTFJlc3BvbnNlICos
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTlNDYWNoZWRVUkxSZXNwb25zZSAqKT4mJikgY29uc3Qg
ZmluYWw7CiAjZW5kaWYKIAogI2lmIFVTRShDRlVSTENPTk5FQ1RJT04pCi0gICAgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCBsb25nIGxvbmcp
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxvbmcgbG9uZykgZmluYWw7CiAjZW5kaWYKIAog
ICAgIFJlZjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgp
IGZpbmFsOwogCi0gICAgYm9vbCBpc0VtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSBm
aW5hbCB7IH0KKyAgICBib29sIGlzRW1wdHlGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgdm9p
ZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZVByZXZpZXdM
b2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIFJlZlB0cjxMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGVQ
cmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGJvb2wg
aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSBmaW5hbDsKICNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQpCi0gICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50JiBmcmFtZUxvYWRlckNsaWVudCkg
eyByZXR1cm4gZnJhbWVMb2FkZXJDbGllbnQuaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCk7IH0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggNGY5MjM5MDA4ZjkwYjViNTg4MGYxYjJkNzVmMmY1
MWZkNjY5OWY2MS4uMjRlODI1YjNiZTY0YmNhZjUxZjVkYjQwNmMyZDgzNDY2NzQwMDY4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKQEAgLTExODIs
NyArMTE4Miw3IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hhciogbGlu
ZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlzdFJlc3VsdCYgcmVzCiAgICAgICAgIHsKICAgICAgICAg
ICAvKiBGaXJzdCB0cnkgdG8gdXNlIHJlc3VsdC5mZV9zaXplIHRvIGZpbmQgIiAtPiAiIHNlcXVl
bmNlLgogICAgICAgICAgICAgIFRoaXMgY2FuIGdpdmUgcHJvcGVyIHJlc3VsdCBmb3IgY2FzZXMg
bGlrZSAiYWFhIC0+IGJiYiAtPiBjY2MiLiAqLwotICAgICAgICAgICAgYXV0byBmaWxlU2l6ZSA9
IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihyZXN1bHQuZmlsZVNp
emUpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICBhdXRvIGZpbGVTaXplID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWduZWQ+KHJlc3VsdC5maWxlU2l6ZSkudmFsdWVfb3Io
MCk7CiAKICAgICAgICAgICBpZiAocmVzdWx0LmZpbGVuYW1lTGVuZ3RoID4gKGZpbGVTaXplICsg
NCkgJiYKICAgICAgICAgICAgICAgc3RybmNtcChyZXN1bHQuZmlsZW5hbWUgKyByZXN1bHQuZmls
ZW5hbWVMZW5ndGggLSBmaWxlU2l6ZSAtIDQsICIgLT4gIiwgNCkgPT0gMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCA3YmFhMDg5MTY3M2EzYWNlMDAzNzczMTZmNTQ1Yjcz
Zjk3ZTcxMjkyLi5lMzVjYTgzYTUwNDVjZjYxMGM5M2IzNzg1Y2QzNGFiMDJlMjJmNDk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC0yNTMsMTIgKzI1MywxMiBAQCBpbmxp
bmUgT3B0aW9uYWw8RmV0Y2hPcHRpb25zPiBGZXRjaE9wdGlvbnM6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEZldGNoT3B0aW9ucyBvcHRpb25zOwogICAgIGlmICghZGVjb2RlUGVy
c2lzdGVudChkZWNvZGVyLCBvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPERv
Y3VtZW50SWRlbnRpZmllcj4+IGNsaWVudElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBjbGll
bnRJZGVudGlmaWVyOwogICAgIGlmICghY2xpZW50SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBvcHRpb25z
LmNsaWVudElkZW50aWZpZXIgPSBXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIudmFsdWUoKSk7CiAK
ICAgICByZXR1cm4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDgyZDE2ZDY5NTJmZDc5ZWY1NzcyMDliNjE1YWYxZjNkZmM5YzA5ZGEuLjEzZmE2OTNhZDRh
NGRlODhmMGJjOGMxNjIyN2U5YmM2YjdjYWUyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMTUxLDggKzE1MSw4IEBACiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmgiCiAjZW5kaWYKIAotI2RlZmluZSBQQUdFX0lEICgocGFnZUlEKCkudmFsdWVP
cihQYWdlSWRlbnRpZmllcigpKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFt
ZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBB
R0VfSUQgKChwYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSkudG9VSW50NjQoKSkK
KyNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkp
KS50b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgbWFpbj0lZF0gRnJhbWVMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9J
RCwgbV9mcmFtZS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBGUkFNRUxP
QURFUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gW3Bh
Z2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRnJhbWVMb2Fk
ZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgbV9mcmFtZS5pc01haW5GcmFtZSgp
LCAjI19fVkFfQVJHU19fKQogCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hhbmdlTG9jYXRpb24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0
LCBFdmUKICAgICBhdXRvKiBmcmFtZSA9IGxleGljYWxGcmFtZUZyb21Db21tb25WTSgpOwogICAg
IGF1dG8gaW5pdGlhdGVkQnlNYWluRnJhbWUgPSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUo
KSA/IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5r
bm93bjsKIAotICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVyUG9saWN5ID0g
b3BlbmVyUG9saWN5LnZhbHVlT3IocmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5v
UmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MgOiBOZXdGcmFtZU9wZW5l
clBvbGljeTo6QWxsb3cpOworICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG5ld0ZyYW1lT3BlbmVy
UG9saWN5ID0gb3BlbmVyUG9saWN5LnZhbHVlX29yKHJlZmVycmVyUG9saWN5ID09IFJlZmVycmVy
UG9saWN5OjpOb1JlZmVycmVyID8gTmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzIDogTmV3
RnJhbWVPcGVuZXJQb2xpY3k6OkFsbG93KTsKICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9h
ZFJlcXVlc3QoKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLCB7IHVybCB9LCBwYXNzZWRUYXJnZXQsIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBk
b3dubG9hZEF0dHJpYnV0ZSwgc3lzdGVtUHJldmlld0luZm8pOwogICAgIGZyYW1lTG9hZFJlcXVl
c3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3kobmV3RnJhbWVPcGVuZXJQb2xpY3kpOwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0UmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpOwpAQCAtNjk1
LDcgKzY5NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKIHsKICAg
ICBhdXRvIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKTsKICAgICAKLSAgICBkaXNw
YXRjaERpZENvbW1pdExvYWQoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOworICAgIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZChzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgZGlzcGF0
Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOwogICAgIGRpc3BhdGNoR2xvYmFs
T2JqZWN0QXZhaWxhYmxlSW5BbGxXb3JsZHMoKTsKIApAQCAtOTczLDcgKzk3Myw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcmVyLCBGCiAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB7IHVybCB9LCAiX3NlbGYiX3MsIGluaXRpYXRlZEJ5TWFpbkZyYW1lIH07CiAgICAgZnJh
bWVMb2FkUmVxdWVzdC5zZXROZXdGcmFtZU9wZW5lclBvbGljeShOZXdGcmFtZU9wZW5lclBvbGlj
eTo6U3VwcHJlc3MpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlz
dChMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpOwotICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmxv
YWRVUkwoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSwgcmVmZXJlciwgRnJhbWVMb2FkVHlwZTo6
UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0LCBudWxscHRyLCB7IH0sIFdURjo6bnVs
bG9wdCwgW10geyB9KTsKKyAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5sb2FkVVJMKFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExv
Y2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9LCBzdGQ6Om51bGxvcHQsIFtdIHsgfSk7
CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTIzMzAs
NyArMjMzMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNo
ZWRGcmFtZSkKICAgICBBU1NFUlQodmlldyk7CiAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVz
ZXIoZmFsc2UpOwogCi0gICAgT3B0aW9uYWw8SW50UmVjdD4gcHJldmlvdXNWaWV3RnJhbWVSZWN0
ID0gbV9mcmFtZS52aWV3KCkgPyAgbV9mcmFtZS52aWV3KCktPmZyYW1lUmVjdCgpIDogT3B0aW9u
YWw8SW50UmVjdD4oV1RGOjpudWxsb3B0KTsKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBwcmV2aW91
c1ZpZXdGcmFtZVJlY3QgPSBtX2ZyYW1lLnZpZXcoKSA/ICBtX2ZyYW1lLnZpZXcoKS0+ZnJhbWVS
ZWN0KCkgOiBPcHRpb25hbDxJbnRSZWN0PihzdGQ6Om51bGxvcHQpOwogICAgIG1fZnJhbWUuc2V0
Vmlldyh2aWV3KTsKIAogICAgIC8vIFVzZSB0aGUgcHJldmlvdXMgU2Nyb2xsVmlldydzIGZyYW1l
IHJlY3QuCkBAIC00MDUxLDggKzQwNTEsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21wbGV0ZVBh
Z2VUcmFuc2l0aW9uSWZOZWVkZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhclRlc3RpbmdP
dmVycmlkZXMoKQogewotICAgIG1fb3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcgPSBXVEY6
Om51bGxvcHQ7Ci0gICAgbV9vdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZyA9
IFdURjo6bnVsbG9wdDsKKyAgICBtX292ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nID0gc3Rk
OjpudWxsb3B0OworICAgIG1fb3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eUZvclRlc3Rpbmcg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc1N0cmljdFJhd1Jlc291cmNlVmFsaWRhdGlvblBvbGlj
eURpc2FibGVkRm9yVGVzdGluZyA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCmluZGV4IGYyOTdiNTBjYTFlZWU1MGNjM2YwNTZhYmQ2YzY0OGMwNGUyZDkzM2MuLjI3
ZDBkNTM5YmNiMTAxYjE2N2U4MzcyOTY0MzNkNWI4NGMwZDQ3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
dXBGb3JSZXBsYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFsbCBmdW5jdGlvbnMg
d2hpY2ggc3RhcnQgbG9hZHMuIFdlIGhhdmUgdG9vIG1hbnkuCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBSZWZQdHI8
Rm9ybVN0YXRlPiYmLCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IFdURjo6
bnVsbG9wdCk7IC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3Qg
YW5kIGxvYWRVUkwuCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQqLCBSZWZQdHI8Rm9ybVN0YXRlPiYmLCBPcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiA9IHN0ZDo6bnVsbG9wdCk7IC8vIENhbGxlZCBieSBz
dWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRVUkwuCiAKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvYWQoRnJhbWVMb2FkUmVxdWVzdCYmKTsKIApAQCAtMTMwLDggKzEz
MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9saWN5
LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VFcnJv
ciYsIFJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYgZGF0YSk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBFdmVudCosIGNvbnN0IFJlZmVycmVyUG9saWN5JiwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgT3B0aW9uYWw8TmV3RnJhbWVPcGVuZXJQb2xpY3k+ID0gV1RGOjpu
dWxsb3B0LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCks
IGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiA9IHsgfSwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oRnJh
bWVMb2FkUmVxdWVzdCYmLCBFdmVudCogPSBudWxscHRyLCBPcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
aGFuZ2VMb2NhdGlvbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBj
b25zdCBSZWZlcnJlclBvbGljeSYsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIE9wdGlv
bmFsPE5ld0ZyYW1lT3BlbmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbVN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUgPSBudWxsQXRvbSgpLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5m
byYgPSB7IH0sIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKEZyYW1lTG9hZFJlcXVlc3QmJiwgRXZlbnQq
ID0gbnVsbHB0ciwgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+JiYgPSBzdGQ6Om51
bGxvcHQpOwogICAgIHZvaWQgc3VibWl0Rm9ybShSZWY8Rm9ybVN1Ym1pc3Npb24+JiYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gPSB7
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggMzU3MTY3
NWYyN2QwMTdkZDVmMjFkYmY3ZGIyN2Y5ZDYzMzgxYTlkMS4uOWJjMjUzMTRhOTNjYTExOWQ1YWIw
YWUwNmI0ZDg0OTYyYzI3NGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJU
eXBlcy5oCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBPcHRpb25hbDxQb2xpY3lDaGVja0lkZW50aWZp
ZXI+IFBvbGljeUNoZWNrSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgYXV0byBwcm9jZXNzID0gUHJvY2Vzc0lkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKICAg
ICBpZiAoIXByb2Nlc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCBwb2xpY3lDaGVjazsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBvbGljeUNoZWNrKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBQb2xpY3lDaGVj
a0lkZW50aWZpZXIgeyAqcHJvY2VzcywgcG9saWN5Q2hlY2sgfTsKIH0KQEAgLTIwOCwxNyArMjA4
LDE3IEBAIE9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBTeXN0ZW1QcmV2aWV3SW5mbzo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IGVsZW1l
bnQ7CiAgICAgZGVjb2RlciA+PiBlbGVtZW50OwogICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEludFJlY3Q+IHByZXZpZXdSZWN0OwogICAgIGRlY29kZXIgPj4gcHJldmlld1Jl
Y3Q7CiAgICAgaWYgKCFwcmV2aWV3UmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGlzUHJl
dmlldzsKICAgICBkZWNvZGVyID4+IGlzUHJldmlldzsKICAgICBpZiAoIWlzUHJldmlldykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqZWxlbWVudCksIFdURk1vdmUoKnByZXZpZXdSZWN0
KSwgV1RGTW92ZSgqaXNQcmV2aWV3KSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQ
SGVhZGVyRmllbGQuY3BwCmluZGV4IDYwYTZmYzQ1MTNjYzBlODczMWM2NzI5OTM4MGNhNjU1MWIw
M2FjMGMuLmIyMzBiZmY0OGZiNTU0YzRkMjY2MTQ3Y2EyZWRlODFkMjJiNmU5MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAg
T3B0aW9uYWw8SFRUUEhlYWRlckZpZWxkPiBIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShTdHJpbmcm
JiB1bnBhcnNlZE5hbWUsIFN0cmluZyYKICAgICBTdHJpbmdWaWV3IHN0cmlwcGVkTmFtZSA9IFN0
cmluZ1ZpZXcodW5wYXJzZWROYW1lKS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFy
YWN0ZXJzKFJGQzcyMzA6OmlzV2hpdGVzcGFjZSk7CiAgICAgU3RyaW5nVmlldyBzdHJpcHBlZFZh
bHVlID0gU3RyaW5nVmlldyh1bnBhcnNlZFZhbHVlKS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01h
dGNoZWRDaGFyYWN0ZXJzKFJGQzcyMzA6OmlzV2hpdGVzcGFjZSk7CiAgICAgaWYgKCFSRkM3MjMw
Ojppc1ZhbGlkTmFtZShzdHJpcHBlZE5hbWUpIHx8ICFSRkM3MjMwOjppc1ZhbGlkVmFsdWUoc3Ry
aXBwZWRWYWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgbmFtZSA9IHN0cmlwcGVkTmFtZS5sZW5ndGgo
KSA9PSB1bnBhcnNlZE5hbWUubGVuZ3RoKCkgPyBXVEZNb3ZlKHVucGFyc2VkTmFtZSkgOiBzdHJp
cHBlZE5hbWUudG9TdHJpbmcoKTsKICAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcHBlZFZhbHVlLmxl
bmd0aCgpID09IHVucGFyc2VkVmFsdWUubGVuZ3RoKCkgPyBXVEZNb3ZlKHVucGFyc2VkVmFsdWUp
IDogc3RyaXBwZWRWYWx1ZS50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hUVFBIZWFk
ZXJGaWVsZC5oCmluZGV4IDU0M2U4YjMwZmFkYmQ4NTI5NWMyMGFhNzIyNjY3MzE0MDRjODhlZmYu
LjBmNzYwZmJjOGMxOGFkYjQxN2FjODNkMGU5OTMwMGZiMGQ4YTU2NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IVFRQSGVhZGVyRmllbGQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSFRUUEhlYWRlckZpZWxkLmgKQEAgLTYxLDEyICs2MSwxMiBAQCBPcHRpb25hbDxI
VFRQSGVhZGVyRmllbGQ+IEhUVFBIZWFkZXJGaWVsZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBuYW1lOwogICAgIGRlY29kZXIgPj4gbmFtZTsKICAgICBp
ZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHZhbHVlOwogICAgIGRlY29kZXIg
Pj4gdmFsdWU7CiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpu
YW1lKSwgV1RGTW92ZSgqdmFsdWUpIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtIZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFkZXIu
Y3BwCmluZGV4IDdjZjFjMGY0ZWQxMDkyZTUxMTg0NzA1NThkODgwZGQ4Y2QwMmRhN2EuLjQ4ZGZl
YWNkOTVhZDA4ZGY1ODA4YTAzOTA0NmUxODZiZjQzOWU0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0hlYWRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZmluZFVSTEJvdW5kYXJpZXMoU3RyaW4K
IHsKICAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihidWZmZXIpOwogICAgIGlmICghc2tpcEV4
YWN0bHkoYnVmZmVyLCAnPCcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNraXBXaGlsZTxpc1NwYWNlT3JUYWI+KGJ1ZmZl
cik7CiAKICAgICBhdXRvIHVybFN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9uKCk7CkBAIC05Myw3ICs5
Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxT
dHJpbmc+IGZpbmRVUkxCb3VuZGFyaWVzKFN0cmluCiAgICAgYXV0byB1cmxFbmQgPSBidWZmZXIu
cG9zaXRpb24oKTsKICAgICBza2lwVW50aWwoYnVmZmVyLCAnPicpOwogICAgIGlmICghc2tpcEV4
YWN0bHkoYnVmZmVyLCAnPicpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFN0cmluZyh1cmxTdGFydCwgdXJs
RW5kIC0gdXJsU3RhcnQpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVy
TmFtZT4KICAgICBib29sIHZhbGlkUGFyYW1ldGVyVmFsdWVFbmQgPSBidWZmZXIuYXRFbmQoKSB8
fCBpc1BhcmFtZXRlclZhbHVlRW5kKCpidWZmZXIpOwogICAgIGlmICh2YWxpZFBhcmFtZXRlclZh
bHVlRW5kICYmIGlzRXh0ZW5zaW9uUGFyYW1ldGVyKG5hbWUpKQogICAgICAgICByZXR1cm4gbmFt
ZTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIC8vIEJlZm9yZToKQEAgLTI5OSw3ICsyOTksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBmaW5kTmV4dEhlYWRlcihTdHJpbmdQYXJzaW5nQnVmZmVy
PAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gTGlua0hlYWRlcjo6TGlua0hlYWRl
cihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7CiAgICAgYXV0
byB1cmxSZXN1bHQgPSBmaW5kVVJMQm91bmRhcmllcyhidWZmZXIpOwotICAgIGlmICh1cmxSZXN1
bHQgPT0gV1RGOjpudWxsb3B0KSB7CisgICAgaWYgKHVybFJlc3VsdCA9PSBzdGQ6Om51bGxvcHQp
IHsKICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIGZpbmROZXh0SGVhZGVyKGJ1
ZmZlcik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApp
bmRleCA2NTcyYzdkZTY2YjEyMzA5NmRkNDkxYmU0YTZiYjQwZGMyMzk0MjIzLi5jYzg4YWU4MTg3
ODI5ZjcwMWE2Y2Q2MTYxNzk2OGJjODJiM2E0NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgT3B0aW9uYWw8Q2FjaGVkUmVzb3VyY2U6OlR5
cGU+IExpbmtMb2FkZXI6OnJlc291cmNlVHlwZUZyb21Bc0F0dHJpYnV0ZShjb25zdCBTdHIKICAg
ICAgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjpUeXBlOjpGb250UmVzb3VyY2U7CiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFzLCAidHJhY2siKSkKICAgICAgICAgcmV0
dXJuIENhY2hlZFJlc291cmNlOjpUeXBlOjpUZXh0VHJhY2tSZXNvdXJjZTsKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8TGlua1ByZWxvYWRSZXNvdXJjZUNsaWVudD4gY3JlYXRlTGlua1ByZWxvYWRS
ZXNvdXJjZUNsaWVudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIExpbmtMb2FkZXImIGxvYWRl
ciwgRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01peGVkQ29udGVudENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCmluZGV4IDViMTc3Yzc4MTE3MGMzNDczZWVmM2FiNDQxZWVhZGViYjk5
MjMxYTAuLjUxNjk2NzFmNTk3ZDQzZjZlNDY1MmFkM2IzMDRkNTkyNjk0M2I5MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKQEAgLTEzNiw3ICsx
MzYsNyBAQCBPcHRpb25hbDxTdHJpbmc+IE1peGVkQ29udGVudENoZWNrZXI6OmNoZWNrRm9yTWl4
ZWRDb250ZW50SW5GcmFtZVRyZWUoY29uc3QgRnJhbQogICAgICAgICBkb2N1bWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA4ODY3N2E3MzA2MWNk
YzAwZDkxMGYxMTQyN2YxMDcxODZlZDgxOThkLi5hNmJmNmFmZTViNWE3NTdjYTY4NWJlZDNlNTZl
ZWMzYjkwOTg2MDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBHbG9iYWxG
cmFtZUlkZW50aWZpZXIgY3JlYXRlR2xvYmFsRnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJu
IHsgZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRp
ZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVPcihG
cmFtZUlkZW50aWZpZXIgeyB9KSB9OworICAgICAgICByZXR1cm4geyBkb2N1bWVudC5mcmFtZSgp
LT5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsg
fSkgfTsKICAgICByZXR1cm4gR2xvYmFsRnJhbWVJZGVudGlmaWVyKCk7CiB9CiAKQEAgLTg4LDcg
Kzg4LDcgQEAgc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246OlVJRXZlbnRXaXRoS2V5
U3RhdGVEYXRhPiBrZXlTdGF0ZURhdGFGb3JGaXJzdEUKIHsKICAgICBpZiAoVUlFdmVudFdpdGhL
ZXlTdGF0ZSogdWlFdmVudCA9IGZpbmRFdmVudFdpdGhLZXlTdGF0ZShldmVudCkpCiAgICAgICAg
IHJldHVybiBOYXZpZ2F0aW9uQWN0aW9uOjpVSUV2ZW50V2l0aEtleVN0YXRlRGF0YSB7ICp1aUV2
ZW50IH07Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBzdGF0aWMgT3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TW91c2VFdmVudERhdGE+
IG1vdXNlRXZlbnREYXRhRm9yRmlyc3RNb3VzZUV2ZW50KEV2ZW50KiBldmVudCkKQEAgLTk3LDcg
Kzk3LDcgQEAgc3RhdGljIE9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnREYXRh
PiBtb3VzZUV2ZW50RGF0YUZvckZpcnN0TW91c2VFdmUKICAgICAgICAgaWYgKGUtPmlzTW91c2VF
dmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIE5hdmlnYXRpb25BY3Rpb246Ok1vdXNlRXZlbnRE
YXRhIHsgc3RhdGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCY+KCplKSB9OwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE5hdmln
YXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmIHJlcXVlc3RlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRpYXRlZEJ5TWFpbkZyYW1lIGlu
aXRpYXRlZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEV2ZW50KiBldmVudCwg
Y29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCkBAIC0xNTMsNyArMTUzLDcgQEAg
dm9pZCBOYXZpZ2F0aW9uQWN0aW9uOjpzZXRUYXJnZXRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0
ZW0mIGl0ZW0pCiAKIHZvaWQgTmF2aWdhdGlvbkFjdGlvbjo6c2V0U291cmNlQmFja0ZvcndhcmRJ
dGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogewotICAgIG1fc291cmNlQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciA9IGl0ZW0gPyBtYWtlT3B0aW9uYWwoaXRlbS0+aWRlbnRpZmllcigpKSA6IFdURjo6
bnVsbG9wdDsKKyAgICBtX3NvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgPSBpdGVtID8g
c3RkOjptYWtlX29wdGlvbmFsKGl0ZW0tPmlkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA3ZDBkYTdj
YTJkYzQzMGI4NDJhZGRkYzJiMTgxMDQ2ZWNhOTg0NWIyLi45OGU5NjE5Nzc1NjcwODBlODQ4MDk1
ZmUxMDIzNjY2ZWRlMDVkMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwCkBAIC01NSw4ICs1NSw4IEBACiAjZW5kaWYKIAogI2RlZmluZSBJU19BTExPV0VEIChtX2Zy
YW1lLnBhZ2UoKSA/IG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSA6IGZhbHNlKQotI2RlZmluZSBQQUdFX0lEIChtX2ZyYW1lLmxvYWRlcigpLnBh
Z2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJB
TUVfSUQgKG1fZnJhbWUubG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKG1fZnJhbWUubG9hZGVyKCkucGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVf
SUQgKG1fZnJhbWUubG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihJU19BTExPV0VELCBMb2FkaW5nLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBQb2xpY3lDaGVja2VyOjoiIGZtdCwgdGhpcywgUEFH
RV9JRCwgRlJBTUVfSUQsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXgg
MjM1YWMxYWQ3Mjg3N2RjNjY2OGJkNGU3YWE4MjIzYjNlMTIwZDZhZC4uODVjZmRkNjQ5ZmQyMTk5
OTIxYTNmZTExMTFmZGRkMzY4ZTJlZmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTE5OCw3ICsxOTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IG1pblNlY29uZHNVbnRpbFNlbmQoKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIXNvdXJjZVNlY29uZHMgJiYgIWRlc3RpbmF0aW9uU2Vjb25kcykK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChzb3VyY2VTZWNvbmRzICYmIGRl
c3RpbmF0aW9uU2Vjb25kcykKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptaW4oc291cmNl
U2Vjb25kcywgZGVzdGluYXRpb25TZWNvbmRzKTsKQEAgLTIxOCwxMiArMjE4LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlY29uZHM+PiBzb3VyY2VTZWNvbmRz
OwogICAgICAgICAgICAgZGVjb2RlciA+PiBzb3VyY2VTZWNvbmRzOwogICAgICAgICAgICAgaWYg
KCFzb3VyY2VTZWNvbmRzKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9u
YWw8T3B0aW9uYWw8U2Vjb25kcz4+IGRlc3RpbmF0aW9uU2Vjb25kczsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gZGVzdGluYXRpb25TZWNvbmRzOwogICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlv
blNlY29uZHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4gQXR0cmli
dXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSB7IFdURk1vdmUoKnNvdXJjZVNlY29uZHMpLCBXVEZN
b3ZlKCpkZXN0aW5hdGlvblNlY29uZHMpIH07CiAgICAgICAgIH0KQEAgLTIzNiw3ICsyMzYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBlYXJsaWVzdFRpbWVUb1NlbmQo
KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCAm
JiAhZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgICAgICBpZiAoc291cmNlRWFybGllc3RUaW1lVG9TZW5kICYmIGRlc3RpbmF0aW9uRWFy
bGllc3RUaW1lVG9TZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1pbihzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKTsKQEAgLTI0
Nyw3ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBsYXRlc3RU
aW1lVG9TZW5kKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFzb3VyY2VFYXJsaWVzdFRp
bWVUb1NlbmQgJiYgIWRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgaWYgKHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCAmJiBkZXN0
aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YXgoc291cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCk7CkBAIC0yNzAsNyArMjcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiBBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbjsKIAotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAog
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtMjg1LDEyICsyODUsMTIgQEAgcHVi
bGljOgogICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+PiBzb3VyY2VFYXJs
aWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHNvdXJjZUVhcmxpZXN0VGlt
ZVRvU2VuZDsKICAgICAgICAgICAgIGlmICghc291cmNlRWFybGllc3RUaW1lVG9TZW5kKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2FsbFRpbWU+
PiBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgICAgIGRlY29kZXIgPj4g
ZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
cmV0dXJuIEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgeyBXVEZNb3ZlKCpzb3VyY2VFYXJsaWVz
dFRpbWVUb1NlbmQpLCBXVEZNb3ZlKCpkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgfTsK
ICAgICAgICAgfQpAQCAtNDEzLDQ3ICs0MTMsNDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QK
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gc291cmNlSUQ7CiAgICAgZGVjb2RlciA+PiBzb3VyY2VJ
RDsKICAgICBpZiAoIXNvdXJjZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFJlZ2lzdHJhYmxl
RG9tYWluPiBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKICAgICBkZWNvZGVyID4+IHNvdXJjZVJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGlmICghc291cmNlUmVnaXN0cmFibGVEb21haW4pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGRlc3RpbmF0aW9uUmVnaXN0cmFi
bGVEb21haW47CiAgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblJlZ2lzdHJhYmxlRG9tYWluOwog
ICAgIGlmICghZGVzdGluYXRpb25SZWdpc3RyYWJsZURvbWFpbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxTdHJpbmc+IHNvdXJjZURlc2NyaXB0aW9uOwogICAgIGRlY29kZXIgPj4gc291cmNlRGVz
Y3JpcHRpb247CiAgICAgaWYgKCFzb3VyY2VEZXNjcmlwdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRp
b25hbDxTdHJpbmc+IHB1cmNoYXNlcjsKICAgICBkZWNvZGVyID4+IHB1cmNoYXNlcjsKICAgICBp
ZiAoIXB1cmNoYXNlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxXYWxsVGltZT4gdGltZU9mQWRD
bGljazsKICAgICBkZWNvZGVyID4+IHRpbWVPZkFkQ2xpY2s7CiAgICAgaWYgKCF0aW1lT2ZBZENs
aWNrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+PiBl
cGhlbWVyYWxTb3VyY2VOb25jZTsKICAgICBkZWNvZGVyID4+IGVwaGVtZXJhbFNvdXJjZU5vbmNl
OwogICAgIGlmICghZXBoZW1lcmFsU291cmNlTm9uY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRp
b25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPj4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAg
ICBkZWNvZGVyID4+IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPEF0dHJpYnV0aW9uVGltZVRvU2Vu
ZERhdGE+IHRpbWVzVG9TZW5kOwogICAgIGRlY29kZXIgPj4gdGltZXNUb1NlbmQ7CiAgICAgaWYg
KCF0aW1lc1RvU2VuZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRy
aWJ1dGlvbiB7CiAgICAgICAgIFNvdXJjZUlEIHsgV1RGTW92ZSgqc291cmNlSUQpIH0sCkBAIC00
ODIsNyArNDgyLDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJh
bFNvdXJjZU5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDoKICAgICBPcHRpb25hbDxTdHJp
bmc+IG5vbmNlOwogICAgIGRlY29kZXIgPj4gbm9uY2U7CiAgICAgaWYgKCFub25jZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICByZXR1cm4gRXBoZW1lcmFsU291cmNlTm9uY2UgeyBXVEZNb3ZlKCpub25jZSkgfTsK
IH0KQEAgLTQ5OSwxNyArNDk5LDE3IEBAIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVuCiAgICAgT3B0
aW9uYWw8dWludDMyX3Q+IGRhdGE7CiAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgIGlmICghZGF0
YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBPcHRpb25hbDxQcmlvcml0eVZhbHVlPiBwcmlvcml0eTsKICAgICBk
ZWNvZGVyID4+IHByaW9yaXR5OwogICAgIGlmICghcHJpb3JpdHkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8V2FzU2VudD4gd2FzU2VudDsKICAgICBkZWNvZGVyID4+IHdhc1NlbnQ7CiAgICAgaWYg
KCF3YXNTZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsg
V1RGTW92ZSgqZGF0YSksIFByaW9yaXR5IHsgKnByaW9yaXR5IH0sICp3YXNTZW50IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QuY3BwCmluZGV4IGFmNDIyZjIxZmJlMzIwNDVjMmE4NjE0ZGU3NGU2MzliN2RmOGE2MDMuLmQ4
N2JkNDYxOGYwNWIzNTY4Y2RjZjU3YTNlMzU0NTBkZDNhNTcwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkBAIC00
NiwyMCArNDYsMjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWwKICAgICBpZiAoc2tpcEV4YWN0
bHlJZ25vcmluZ0FTQ0lJQ2FzZShidWZmZXIsICJzaGE1MTIiKSkKICAgICAgICAgcmV0dXJuIFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEE1MTI7CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9z
aXRpb24oYnVmZmVyKTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghc2tpcEV4
YWN0bHkoYnVmZmVyLCAnLScpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBiZWdpbkhhc2hWYWx1ZSA9IGJ1ZmZl
ci5wb3NpdGlvbigpOwogICAgIHNraXBXaGlsZTxpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVy
PihidWZmZXIpOwpAQCAtNjcsNyArNjcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBzdGF0aWMgT3B0aW9uYWw8UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYQogICAg
IHNraXBFeGFjdGx5KGJ1ZmZlciwgJz0nKTsKIAogICAgIGlmIChidWZmZXIucG9zaXRpb24oKSA9
PSBiZWdpbkhhc2hWYWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZ1ZpZXcgaGFzaFZhbHVlKGJlZ2luSGFz
aFZhbHVlLCBidWZmZXIucG9zaXRpb24oKSAtIGJlZ2luSGFzaFZhbHVlKTsKIApAQCAtNzcsNyAr
NzcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBwYQogICAgIGlmIChhdXRvIGRpZ2VzdCA9IGJh
c2U2NFVSTERlY29kZShoYXNoVmFsdWUpKQogICAgICAgICByZXR1cm4gUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0IHsgKmFsZ29yaXRobSwgV1RGTW92ZSgqZGlnZXN0KSB9OwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25h
bDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChT
dHJpbmdQYXJzaW5nQnVmZmVyPFVDaGFyPiYgYnVmZmVyKQpAQCAtOTMsMTQgKzkzLDE0IEBAIE9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VDcnlwdG9ncmFwaGljRGln
ZXN0KFN0cmluZ1BhcnNpbmdCdWZmCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBz
dGF0aWMgT3B0aW9uYWw8RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gcGFyc2VF
bmNvZGVkQ3J5cHRvZ3JhcGhpY0RpZ2VzdEltcGwoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8gYWxnb3JpdGhtID0gcGFyc2VIYXNoQWxnb3JpdGhtQWR2YW5jaW5nUG9zaXRpb24oYnVmZmVy
KTsKICAgICBpZiAoIWFsZ29yaXRobSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghc2tpcEV4YWN0bHkoYnVmZmVy
LCAnLScpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBiZWdpbkhhc2hWYWx1ZSA9IGJ1ZmZlci5wb3NpdGlvbigp
OwogICAgIHNraXBXaGlsZTxpc0Jhc2U2NE9yQmFzZTY0VVJMQ2hhcmFjdGVyPihidWZmZXIpOwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRp
YyBPcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgc2tpcEV4YWN0
bHkoYnVmZmVyLCAnPScpOwogCiAgICAgaWYgKGJ1ZmZlci5wb3NpdGlvbigpID09IGJlZ2luSGFz
aFZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEVuY29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QgeyAqYWxnb3JpdGhtLCBTdHJpbmcoYmVnaW5IYXNoVmFsdWUsIGJ1ZmZlci5wb3NpdGlvbigp
IC0gYmVnaW5IYXNoVmFsdWUpIH07CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgT3B0aW9uYWw8UmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0PiBkZWNvZGVFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0KGMKICAgICBpZiAoYXV0byBkaWdlc3QgPSBiYXNlNjRVUkxEZWNvZGUoZW5jb2Rl
ZERpZ2VzdC5kaWdlc3QpKQogICAgICAgICByZXR1cm4gUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0IHsgZW5jb2RlZERpZ2VzdC5hbGdvcml0aG0sIFdURk1vdmUoKmRpZ2VzdCkgfTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3Rh
dGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZEluZm8uY3BwCmluZGV4IDJjNTc2ZjY0Y2Q0NGM3
OWU0YWRhOTM2YWFkNDkzZDZjOGZhODZjZDcuLmU0ODUyZjI5M2EwZmY1OWQ5MTc0NTFlZGQ1MGJm
YmViMDQxMjIyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkSW5mby5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBPcHRpb25hbDxPcHRpb25TZXQ8UmVzb3VyY2VUeXBlPj4g
cmVhZFJlc291cmNlVHlwZShTdHJpbmdWaWV3IG5hbWUpCiAgICAgICAgIHJldHVybiB7IFJlc291
cmNlVHlwZTo6UG9wdXAgfTsKICAgICBpZiAobmFtZSA9PSAicGluZyIpCiAgICAgICAgIHJldHVy
biB7IFJlc291cmNlVHlwZTo6UGluZyB9OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8T3B0aW9uU2V0PExvYWRUeXBlPj4g
cmVhZExvYWRUeXBlKFN0cmluZ1ZpZXcgbmFtZSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBPcHRpb25h
bDxPcHRpb25TZXQ8TG9hZFR5cGU+PiByZWFkTG9hZFR5cGUoU3RyaW5nVmlldyBuYW1lKQogICAg
ICAgICByZXR1cm4geyBMb2FkVHlwZTo6Rmlyc3RQYXJ0eSB9OwogICAgIGlmIChuYW1lID09ICJ0
aGlyZC1wYXJ0eSIpCiAgICAgICAgIHJldHVybiB7IExvYWRUeXBlOjpUaGlyZFBhcnR5IH07Ci0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBP
cHRpb25hbDxPcHRpb25TZXQ8TG9hZENvbnRleHQ+PiByZWFkTG9hZENvbnRleHQoU3RyaW5nVmll
dyBuYW1lKQpAQCAtMTMxLDcgKzEzMSw3IEBAIE9wdGlvbmFsPE9wdGlvblNldDxMb2FkQ29udGV4
dD4+IHJlYWRMb2FkQ29udGV4dChTdHJpbmdWaWV3IG5hbWUpCiAgICAgICAgIHJldHVybiB7IExv
YWRDb250ZXh0OjpUb3BGcmFtZSB9OwogICAgIGlmIChuYW1lID09ICJjaGlsZC1mcmFtZSIpCiAg
ICAgICAgIHJldHVybiB7IExvYWRDb250ZXh0OjpDaGlsZEZyYW1lIH07Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlc291cmNl
TG9hZEluZm86OmlzVGhpcmRQYXJ0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAppbmRleCA3NTg1ODNkYWE1ZDYyMmExOWM4OWU0YzdkNmUxNzg4MGU4ZTc3
MTEyLi4xZTg2ODg5YTc1ODAwYTQyMmUyYTQwZmQwZGY3MjNkMGFlMzJkODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY0LDggKzY0LDggQEAKICNlbmRp
ZgogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAotI2RlZmluZSBQQUdFX0lEICgoZnJh
bWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdl
SWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBm
cmFtZSgpLT5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgp
LT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkp
LnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZyYW1l
SUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9V
SW50NjQoKSkKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIFtwYWdl
SUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNv
dXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9J
RCwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3Vy
Y2VJbnRlZ3JpdHkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdy
aXR5LmNwcAppbmRleCBlMjAyYjAzYjMyZGRlZjE2NjRjNzYwZWIzMWFjMmQ1ZmY4ODkxMDA5Li42
Mjk1YWVhNWUzMGM5OTI2ZDZkZGVjOTkyNjAxNGU2ZDc0YTkwYzkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcigpKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIC8vIEluaXRpYWxpemUgaGFzaGVzIHRv
IGJlIHNvbWV0aGluZyBvdGhlciBXVEY6Om51bGxvcHQsIHRvIGluZGljYXRlCisgICAgICAgIC8v
IEluaXRpYWxpemUgaGFzaGVzIHRvIGJlIHNvbWV0aGluZyBvdGhlciBzdGQ6Om51bGxvcHQsIHRv
IGluZGljYXRlCiAgICAgICAgIC8vIHRoYXQgYXQgbGVhc3Qgb25lIHRva2VuIHdhcyBzZWVuLCBh
bmQgdGh1cyBzZXR0aW5nIHRoZSBlbXB0eSBmbGFnCiAgICAgICAgIC8vIGZyb20gc2VjdGlvbiAz
LjMuMyBQYXJzZSBtZXRhZGF0YSwgdG8gZmFsc2UuCiAgICAgICAgIGlmICghbV9kaWdlc3RzKQpA
QCAtOTksNyArOTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3BsaXRPblNwYWNlcyhTdHJpbmdQ
YXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+IGJ1ZmZlciwgRnVuYwogc3RhdGljIE9wdGlvbmFs
PFZlY3RvcjxFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0Pj4gcGFyc2VJbnRlZ3Jp
dHlNZXRhZGF0YShjb25zdCBTdHJpbmcmIGludGVncml0eU1ldGFkYXRhKQogewogICAgIGlmIChp
bnRlZ3JpdHlNZXRhZGF0YS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8RW5j
b2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4+IHJlc3VsdDsKICAgICAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdGF0aWMgYm9vbCBpc1Jlc3BvbnNlRWxpZ2libGUoY29uc3QgQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlKQogc3RhdGljIE9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3Q6OkFsZ29yaXRobT4gcHJpb3JpdGl6ZWRIYXNoRnVuY3Rpb24oRW5jb2RlZFJl
c291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGEsIEVuY29kZWRSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBiKQogewogICAgIGlmIChhID09IGIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIChhID4gYikgPyBhIDogYjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjBkZDg1YmVkNTU3MGRiNDlmODYzOWRjNTBjYWM5
ODc0NmNmN2ZiOS4uZjA1ZTVjNjg1MGI4Yjg1Mjk0ZjRmOTNlNGQxYjVhMTRlYTMxZWJjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02OSw4ICs2
OSw4IEBACiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECiAjdW5kZWYgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRAotI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IGZyYW1lKCkt
PnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50
b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFtZUlE
KCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50
NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1
ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisj
ZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihG
cmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNpZiBS
RUxFQVNFX0xPR19ESVNBQkxFRAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBVTlVTRURfVkFSSUFCTEUodGhpcykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCkBAIC00NzksNyArNDc5LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb20KICAgICAgICAgICAgIG1fbG9hZGluZ011bHRpcGFy
dENvbnRlbnQgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb3VudCBtdWx0aVBh
cnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50Ci0gICAgICAgICAg
ICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX3Jl
cXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBpZiAoIW1fcmVz
b3VyY2UtPmlzSW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBzb21ldGhpbmcg
YWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOwogICAgICAgICAgICAgICAgIGNhbmNlbCgp
OwpAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6Om5vdGlmeURvbmUo
TG9hZENvbXBsZXRpb25UeXBlIHR5cGUpCiAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVxdWVzdENvdW50VHJhY2tlciA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBzdGQ6Om51bGxvcHQ7CiAgICAgYm9v
bCBzaG91bGRQZXJmb3JtUG9zdExvYWRBY3Rpb25zID0gdHJ1ZTsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChtX3N0YXRlID09IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCAwMDdlNGFhZTI2YzdiZjIzMDZl
YzM3M2VjYjAzMjc1YWNkMzRmNjA3Li43MGQxNTE3YmJiZjI4ZmNiZjVmZmRhZjkwNjdhYmFhZTdj
OTE4NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtOTAsMTAgKzkw
LDEwIEBAIE9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VBcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pCiAgICAgICAgIC8vIEV4YW1wbGU6ICJDQUNI
RSBNQU5JRkVTVCAjY29tbWVudCIgaXMgYSB2YWxpZCBzaWduYXR1cmUuCiAgICAgICAgIC8vIEV4
YW1wbGU6ICJDQUNIRSBNQU5JRkVTVDtWMiIgaXMgbm90LgogICAgICAgICBpZiAoIXNraXBDaGFy
YWN0ZXJzRXhhY3RseShidWZmZXIsIGNhY2hlTWFuaWZlc3RJZGVudGlmaWVyPENoYXJhY3RlclR5
cGU+KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgICAgICBpZiAoYnVmZmVyLmhhc0NoYXJhY3RlcnNS
ZW1haW5pbmcoKSAmJiAhaXNNYW5pZmVzdFdoaXRlc3BhY2VPck5ld2xpbmUoKmJ1ZmZlcikpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAvLyBTa2lwIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCiAgICAg
ICAgIHNraXBVbnRpbDxpc01hbmlmZXN0TmV3bGluZT4oYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwCmluZGV4IDhiMjcxMWZiZDVjOGE1ZTJlNzhlZmQ0NDNlODUyMTk2NDg3YzViZGUuLjVlNjgx
MWUxYmFhMzc1NTA0Y2E4Y2U3MjNkZDVjZTkyNzBhNjFlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMTEyMSw3ICsxMTIxLDcgQEAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKQogICAgICAgICAg
ICAgc2l6ZSA9IGRhdGEtPnNpemUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5
LCBwYXRoKTsKLSAgICAgICAgICAgIHNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52
YWx1ZU9yKDApOworICAgICAgICAgICAgc2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgp
LnZhbHVlX29yKDApOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgbWltZVR5
cGUgPSBjYWNoZVN0YXRlbWVudC0+Y29sdW1uVGV4dCgzKTsKQEAgLTEzMDksMTEgKzEzMDksMTEg
QEAgT3B0aW9uYWw8VmVjdG9yPFVSTD4+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjptYW5pZmVz
dFVSTHMoKQogCiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2Uu
aXNPcGVuKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHNlbGVjdFVSTHMgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCBtYW5pZmVzdFVSTCBGUk9NIENhY2hlR3JvdXBzIl9zKTsKICAgICBp
ZiAoIXNlbGVjdFVSTHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8VVJMPiB1cmxzOwogICAgIHdoaWxlIChz
ZWxlY3RVUkxzLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIGxv
bmcgbG9uZyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmxhdEZpbGVBcmVhU2l6ZSgpCiAgICAg
U3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fY2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKICAg
ICB3aGlsZSAoc2VsZWN0UGF0aHMtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIGF1
dG8gZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZp
bGVEaXJlY3RvcnksIHNlbGVjdFBhdGhzLT5jb2x1bW5UZXh0KDApKTsKLSAgICAgICAgdG90YWxT
aXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGZ1bGxQYXRoKS52YWx1ZU9yKDApOworICAgICAg
ICB0b3RhbFNpemUgKz0gRmlsZVN5c3RlbTo6ZmlsZVNpemUoZnVsbFBhdGgpLnZhbHVlX29yKDAp
OwogICAgIH0KICAgICAKICAgICByZXR1cm4gdG90YWxTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmlu
ZGV4IDUxZDhkMGE4NmM0YWFhYzNkYWQxYWM2OTNlZDE0NWM4MDVmYTgwNzEuLjJiNjVhYzBmMzYz
MjU5M2M5ODc0MmU3ZGUzODU4ZmM2YWEwYjc0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgU3RyaW5nIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kaW5nKCkg
Y29uc3QKIE9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OnByb2Nlc3MoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVu
dFVSTCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghbV90ZXh0KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
IChkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBh
cnNlKCpkb2N1bWVudCwgKm1fdGV4dCwgbWFuaWZlc3RVUkwsIGRvY3VtZW50VVJMKTsKICAgICBy
ZXR1cm4gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoKm1fdGV4dCwgbWFuaWZlc3RV
UkwsIGRvY3VtZW50VVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDAxOTdlZDgzNWQxOTAzODMxMGJkMjE4MjMzOGY1ZGFm
YWE3Mjk4ZWEuLjc4ZDg0YmZhYmNkZWU2MmIxZTZmZmJlN2E3Y2JmMzIzMTg1NDMzOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBPcHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3
UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKAogewogICAgIHNpemVfdCBw
cmV2aW91c0RhdGFMZW5ndGggPSBlbmNvZGVkU2l6ZSgpOwogICAgIGlmICghZGF0YSB8fCBkYXRh
LT5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBkYXRhLT5nZXRT
b21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAg
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiAKICAgICBpZiAobV9kZWxh
eWVkRmluaXNoTG9hZGluZykgewotICAgICAgICBhdXRvIGRlbGF5ZWRGaW5pc2hMb2FkaW5nID0g
c3RkOjpleGNoYW5nZShtX2RlbGF5ZWRGaW5pc2hMb2FkaW5nLCBXVEY6Om51bGxvcHQpOworICAg
ICAgICBhdXRvIGRlbGF5ZWRGaW5pc2hMb2FkaW5nID0gc3RkOjpleGNoYW5nZShtX2RlbGF5ZWRG
aW5pc2hMb2FkaW5nLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBmaW5pc2hMb2FkaW5nKGRlbGF5
ZWRGaW5pc2hMb2FkaW5nLT5idWZmZXIuZ2V0KCksIHsgfSk7CiAgICAgfQogfQpAQCAtMTAyLDcg
KzEwMiw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKG1faW5JbmNyZW1lbnRh
bERhdGFOb3RpZnkpIHsKICAgICAgICAgLy8gV2UgbWF5IGdldCBoZXJlIHN5bmNocm9ub3VzbHkg
ZnJvbSB1cGRhdGVCdWZmZXIoKSBpZiB0aGUgY2FsbGJhY2sgdGhlcmUgZW5kcyB1cCBzcGlubmlu
ZyBhIHJ1bmxvb3AuCiAgICAgICAgIC8vIEluIHRoYXQgY2FzZSBkZWxheSB0aGUgY2FsbC4KLSAg
ICAgICAgbV9kZWxheWVkRmluaXNoTG9hZGluZyA9IG1ha2VPcHRpb25hbChEZWxheWVkRmluaXNo
TG9hZGluZyB7IGRhdGEgfSk7CisgICAgICAgIG1fZGVsYXllZEZpbmlzaExvYWRpbmcgPSBzdGQ6
Om1ha2Vfb3B0aW9uYWwoRGVsYXllZEZpbmlzaExvYWRpbmcgeyBkYXRhIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDMzMzc1ODYyMmY2Mjk3ZmIyMjM4NzZlNDk4MGM0MDJh
ZmQwMzdmOGMuLjJkYTk3ZjE0Mjk1NDFmM2I1NjkwMWY3OGZjOGQ3YjgxNDEzYmI3YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjUs
OCArNjUsOCBAQAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAogI3VuZGVmIFJFTEVB
U0VfTE9HX0FMV0FZUwotI2RlZmluZSBQQUdFX0lEKGZyYW1lKSAoZnJhbWUucGFnZUlEKCkudmFs
dWVPcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRChmcmFt
ZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgp
KQorI2RlZmluZSBQQUdFX0lEKGZyYW1lKSAoZnJhbWUucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlk
ZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5m
cmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGNhY2hlZFJl
c291cmNlTG9hZGVyLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBD
YWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRURfV0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJFTEVBU0VfTE9H
X0lGKGNhY2hlZFJlc291cmNlTG9hZGVyLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNo
ZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSks
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0FMV0FZUyhmbXQsIC4uLikgUkVM
RUFTRV9MT0coTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmNjMGY0ZTM3ZmRhNTNkMjJjOWVhMDJjY2YyODE1NmJh
ODRiODJjOS4uODU2ZTVlNWQ0ZGIxNDYwOTJiMWI3NGUzNGNiMzBmZDdkMDc5MGE3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC05NSw4ICs5NSw4IEBACiAjZW5kaWYKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQKLSNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlT3IoUGFn
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFt
ZS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZp
bmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVy
KCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJRCgp
LnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2lu
Z0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEX1dJVEhf
RlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIl0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1l
KSwgRlJBTUVfSUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggM2U1ZGEzZDA5
Yzc3NzIyN2JiODIwNDdkMmM3NWU5ZjFmMDBkZGY2My4uZjMwMDAxMmYwNWM5ZWE5Yzk3NWMwNjAz
ZDcxZGY4YTMzZDUyMzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaApAQCAtNDcsNyArNDcsNyBAQCBib29sIGlzUmVxdWVz
dENyb3NzT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBSZXNvdXJjZQogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgewogcHVibGljOgotICAg
IENhY2hlZFJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+ID0gV1RGOjpudWxs
b3B0LCBTdHJpbmcmJiBjaGFyc2V0ID0gU3RyaW5nKCkpOworICAgIENhY2hlZFJlc291cmNlUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgT3B0
aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+ID0gc3RkOjpudWxsb3B0LCBTdHJpbmcmJiBjaGFy
c2V0ID0gU3RyaW5nKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVsZWFzZVJlc291cmNl
UmVxdWVzdCgpIHsgcmV0dXJuIFdURk1vdmUobV9yZXNvdXJjZVJlcXVlc3QpOyB9CiAgICAgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlUmVxdWVzdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmlu
ZGV4IDRhZjQwMWQ2YWQyZDE2MWY3NTJlNDI4MjA1M2UwMDZjNWI5ZDFlMDkuLjYwN2U2MmVjMDg2
ODI3MzJmNTJiYmZiNGM3NTQ5ZGQzN2I2MWZkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBNYXRoTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgog
ICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKS0+Y29sU3Bh
bk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjp0
YWJpbmRleEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHNldFRhYkluZGV4RXhwbGljaXRseShXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgc2V0VGFi
SW5kZXhFeHBsaWNpdGx5KHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGVsc2UgaWYgKGF1dG8gb3B0
aW9uYWxUYWJJbmRleCA9IHBhcnNlSFRNTEludGVnZXIodmFsdWUpKQogICAgICAgICAgICAgc2V0
VGFiSW5kZXhFeHBsaWNpdGx5KG9wdGlvbmFsVGFiSW5kZXgudmFsdWUoKSk7CiAgICAgfSBlbHNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDVkYzE5NTBhMDVkYzYz
YTZkODJiOGJkMjliZWIwYjVjOGVjZjlmZjguLmU3ZTg1Y2E2Y2UxMTlhNWIxZjc0NzM0ODJkZDAx
MzMwNTg3YWJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtODUs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmV0Y2hlZCA9IDE4CiAgICAgfTsKIAotICAg
IHZpcnR1YWwgT3B0aW9uYWw8TWF0aFZhcmlhbnQ+IHNwZWNpZmllZE1hdGhWYXJpYW50KCkgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxNYXRoVmFyaWFudD4g
c3BlY2lmaWVkTWF0aFZhcmlhbnQoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxGcmFjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEZyYWN0aW9uRWxlbWVudC5jcHAKaW5kZXggYmI0YWRkNGNiZTkyNTYx
ZDg5YmQwYWIxNTIzZmU0YzdjOTUxOWRjYi4uM2M0MzkzOTAwY2ZlNzY5NzcwOTdkYTkwZmNhMTY3
Y2M0YjAyYTg4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0
aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEZyYWN0aW9u
RWxlbWVudC5jcHAKQEAgLTEwNiwxMSArMTA2LDExIEBAIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6
RnJhY3Rpb25BbGlnbm1lbnQgTWF0aE1MRnJhY3Rpb25FbGVtZW50OjpkZW5vbWluYXRvckFsaWdu
CiB2b2lkIE1hdGhNTEZyYWN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUg
PT0gbGluZXRoaWNrbmVzc0F0dHIpCi0gICAgICAgIG1fbGluZVRoaWNrbmVzcyA9IFdURjo6bnVs
bG9wdDsKKyAgICAgICAgbV9saW5lVGhpY2tuZXNzID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gbnVtYWxpZ25BdHRyKQotICAgICAgICBtX251bWVyYXRvckFsaWdubWVudCA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9udW1lcmF0b3JBbGlnbm1lbnQgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBkZW5vbWFsaWduQXR0cikKLSAgICAgICAgbV9kZW5v
bWluYXRvckFsaWdubWVudCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9kZW5vbWluYXRvckFs
aWdubWVudCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxNYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVs
ZW1lbnQuY3BwCmluZGV4IGMzMTgxNGY3NzY4MzQ1NDQwOGI0ZTM2MGY5MGFhYzRiN2YyYmQ1ZWQu
LjBlNWQwMjBmMjY0N2EyMDE2YTIyNzcwZmQyM2U5ZGQxYjQ2M2E2ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCB2b2lk
IE1hdGhNTE1hdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaQogewogICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1dGUgPSBu
YW1lID09IG1hdGh2YXJpYW50QXR0cjsKICAgICBpZiAobWF0aFZhcmlhbnRBdHRyaWJ1dGUpCi0g
ICAgICAgIG1fbWF0aFZhcmlhbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbWF0aFZhcmlh
bnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKChtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVu
ZGVyZXIoKSkKICAgICAgICAgTWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVu
ZGVyZXIoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5j
bG9zZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxl
bWVudC5jcHAKaW5kZXggY2M4NDlmZThlYmYyZWY1MmIzZDFjNDZmYzU3NzkwZDMyYzdmMTlhYy4u
YzJmZDVkNTRkYjVmNzVhNzI3MjBjNDYwMGVkZjFlM2Y3MzJjZTFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHAKQEAgLTEzNSw3ICsxMzUs
NyBAQCBib29sIE1hdGhNTE1lbmNsb3NlRWxlbWVudDo6aGFzTm90YXRpb24oTWVuY2xvc2VOb3Rh
dGlvbkZsYWcgbm90YXRpb25GbGFnKQogdm9pZCBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IG5vdGF0aW9uQXR0cikKLSAgICAgICAgbV9ub3RhdGlv
bkZsYWdzID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX25vdGF0aW9uRmxhZ3MgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICBNYXRoTUxSb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JE
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rp
b25hcnkuY3BwCmluZGV4IDJkMmJjMmJlNjAxNTBlMGNhOTBiODNjMjlhM2U5ODg4MzkwOWQ4YjUu
LmVjNTA1MjA5NjQzMWFhYjg2MGJkMWRhNWNlNzQzNTkyNGM2ZmI0ZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVyYXRvckRpY3Rpb25hcnkuY3BwCkBAIC0xMTI5
LDE0ICsxMTI5LDE0IEBAIHN0YXRpYyBjb25zdCBVQ2hhcjMyIGhvcml6b250YWxPcGVyYXRvcnNb
XSA9IHsKIE9wdGlvbmFsPFByb3BlcnR5PiBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OnNlYXJj
aChVQ2hhcjMyIGNoYXJhY3RlciwgRm9ybSBmb3JtLCBib29sIGV4cGxpY2l0Rm9ybSkKIHsKICAg
ICBpZiAoIWNoYXJhY3RlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFdlIHRyeSBhbmQgZmluZCB0aGUgZGVmYXVs
dCB2YWx1ZXMgZnJvbSB0aGUgb3BlcmF0b3IgZGljdGlvbmFyeS4KICAgICBpZiAoYXV0byogZW50
cnkgPSB0cnlCaW5hcnlTZWFyY2g8Y29uc3QgRW50cnksIEtleT4oZGljdGlvbmFyeSwgZGljdGlv
bmFyeVNpemUsIEtleShjaGFyYWN0ZXIsIGZvcm0pLCBFeHRyYWN0S2V5KSkKICAgICAgICAgcmV0
dXJuIEV4dHJhY3RQcm9wZXJ0eSgqZW50cnkpOwogCiAgICAgaWYgKGV4cGxpY2l0Rm9ybSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIElmIHdlIGRpZCBub3QgZmluZCB0aGUgZGVzaXJlZCBvcGVyYXRvciBmb3JtIGFu
ZCBpZiBpdCB3YXMgbm90IHNldCBleHBsaWNpdGx5LCB3ZSB1c2UgdGhlIGZpcnN0IG9uZSBpbiB0
aGUgZm9sbG93aW5nIG9yZGVyOiBJbmZpeCwgUHJlZml4LCBQb3N0Zml4LgogICAgIC8vIFRoaXMg
aXMgdG8gaGFuZGxlIGJhZCBNYXRoTUwgbWFya3VwIHdpdGhvdXQgZXhwbGljaXQgPG1yb3c+IGRl
bGltaXRlcnMgbGlrZSAiPG1vPig8L21vPjxtaT5hPC9taT48bW8+KTwvbW8+PG1vPig8L21vPjxt
aT5iPC9taT48bW8+KTwvbW8+IiB3aGVyZSBpbm5lcmZlbmNlcyBzaG91bGQgbm90IGJlIGNvbnNp
ZGVyZWQgaW5maXguCkBAIC0xMTQ5LDcgKzExNDksNyBAQCBPcHRpb25hbDxQcm9wZXJ0eT4gTWF0
aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpzZWFyY2goVUNoYXIzMiBjaGFyYWN0ZXIsIEZvcm0gZm9y
bQogICAgICAgICByZXR1cm4gRXh0cmFjdFByb3BlcnR5KCplbnRyeSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29s
IE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6aXNWZXJ0aWNhbChVQ2hhcjMyIHRleHRDb250ZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApp
bmRleCAxYTIxM2Y0ZWIyZjI3YjE4ZmIyNTY5MzNjMzQzM2U3ZWMwNzE2YTI2Li4zNGJiODFhZDdk
ZTMxYjNlZWM2MzkxMmIwODQ0YWQzZTQ1MzIyODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MT3BlcmF0b3JFbGVtZW50LmNwcApAQCAtMjAzLDggKzIwMyw4IEBAIGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MT3BlcmF0b3JFbGVtZW50OjptYXhTaXplKCkK
IAogdm9pZCBNYXRoTUxPcGVyYXRvckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogewotICAgIG1fb3BlcmF0b3JDaGFyID0gV1RGOjpudWxsb3B0Owot
ICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0gV1RGOjpudWxsb3B0OworICAgIG1fb3BlcmF0b3JD
aGFyID0gc3RkOjpudWxsb3B0OworICAgIG1fZGljdGlvbmFyeVByb3BlcnR5ID0gc3RkOjpudWxs
b3B0OwogICAgIG1fcHJvcGVydGllcy5kaXJ0eUZsYWdzID0gTWF0aE1MT3BlcmF0b3JEaWN0aW9u
YXJ5OjphbGxGbGFnczsKICAgICBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2UpOwogfQpAQCAtMjI1LDI0ICsyMjUsMjQgQEAgc3RhdGljIE9wdGlvbmFsPE1hdGhNTE9w
ZXJhdG9yRGljdGlvbmFyeTo6RmxhZz4gYXR0cmlidXRlTmFtZVRvUHJvcGVydHlGbGFnKGNvbnMK
ICAgICAgICAgcmV0dXJuIFN0cmV0Y2h5OwogICAgIGlmIChuYW1lID09IHN5bW1ldHJpY0F0dHIp
CiAgICAgICAgIHJldHVybiBTeW1tZXRyaWM7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE1hdGhNTE9wZXJhdG9yRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gZm9ybUF0dHIpIHsKLSAgICAgICAgbV9kaWN0
aW9uYXJ5UHJvcGVydHkgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGljdGlvbmFyeVByb3Bl
cnR5ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3Byb3BlcnRpZXMuZGlydHlGbGFncyA9IE1h
dGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6YWxsRmxhZ3M7CiAgICAgfSBlbHNlIGlmIChhdXRvIGZs
YWcgPSBhdHRyaWJ1dGVOYW1lVG9Qcm9wZXJ0eUZsYWcobmFtZSkpCiAgICAgICAgIG1fcHJvcGVy
dGllcy5kaXJ0eUZsYWdzIHw9IGZsYWcudmFsdWUoKTsKICAgICBlbHNlIGlmIChuYW1lID09IGxz
cGFjZUF0dHIpCi0gICAgICAgIG1fbGVhZGluZ1NwYWNlID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2xlYWRpbmdTcGFjZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IHJz
cGFjZUF0dHIpCi0gICAgICAgIG1fdHJhaWxpbmdTcGFjZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgbV90cmFpbGluZ1NwYWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
bWluc2l6ZUF0dHIpCi0gICAgICAgIG1fbWluU2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
bV9taW5TaXplID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWF4c2l6ZUF0
dHIpCi0gICAgICAgIG1fbWF4U2l6ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9tYXhTaXpl
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChuYW1lID09IHN0cmV0Y2h5QXR0ciB8fCBuYW1l
ID09IGxzcGFjZUF0dHIgfHwgbmFtZSA9PSByc3BhY2VBdHRyIHx8IG5hbWUgPT0gbW92YWJsZWxp
bWl0c0F0dHIpICYmIHJlbmRlcmVyKCkpIHsKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyTWF0aE1M
T3BlcmF0b3I+KCpyZW5kZXJlcigpKS51cGRhdGVGcm9tRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTE9wZXJhdG9yRWxlbWVudC5oCmluZGV4IGM3ZDhkNjY5YmZjNjBj
M2UxOTNmNTRiYzA4OWQ2Yjc2MzgyMmFhODcuLmJiNTZmNzk0NmU4ZjE1ZTkyYjI4ZjQ2MWU0YjJl
N2ZjZTljNzZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxPcGVy
YXRvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MT3BlcmF0b3JF
bGVtZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIE9w
ZXJhdG9yQ2hhciBwYXJzZU9wZXJhdG9yQ2hhcihjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBP
cGVyYXRvckNoYXImIG9wZXJhdG9yQ2hhcigpOwotICAgIHZvaWQgc2V0T3BlcmF0b3JGb3JtRGly
dHkoKSB7IG1fZGljdGlvbmFyeVByb3BlcnR5ID0gV1RGOjpudWxsb3B0OyB9CisgICAgdm9pZCBz
ZXRPcGVyYXRvckZvcm1EaXJ0eSgpIHsgbV9kaWN0aW9uYXJ5UHJvcGVydHkgPSBzdGQ6Om51bGxv
cHQ7IH0KICAgICBNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkZvcm0gZm9ybSgpIHsgcmV0dXJu
IGRpY3Rpb25hcnlQcm9wZXJ0eSgpLmZvcm07IH0KICAgICBib29sIGhhc1Byb3BlcnR5KE1hdGhN
TE9wZXJhdG9yRGljdGlvbmFyeTo6RmxhZyk7CiAgICAgTGVuZ3RoIGRlZmF1bHRMZWFkaW5nU3Bh
Y2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQYWRkZWRFbGVtZW50LmNwcApp
bmRleCBmNzU5NDU5YjkyNTM0OTVjYzk3NTZiMTJhYjdlYjlkNzRiMzRiZmVkLi45NGYyYzNlMjIx
MWNmMDY5NzA4YmUwODFhYjMyODlmZjJmYjI5ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MUGFkZGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFBhZGRlZEVsZW1lbnQuY3BwCkBAIC03NiwxNSArNzYsMTUgQEAgY29uc3QgTWF0
aE1MRWxlbWVudDo6TGVuZ3RoJiBNYXRoTUxQYWRkZWRFbGVtZW50Ojp2b2Zmc2V0KCkKIHZvaWQg
TWF0aE1MUGFkZGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gd2lkdGhB
dHRyKQotICAgICAgICBtX3dpZHRoID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3dpZHRoID0g
c3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gaGVpZ2h0QXR0cikKLSAgICAgICAg
bV9oZWlnaHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1faGVpZ2h0ID0gc3RkOjpudWxsb3B0
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZGVwdGhBdHRyKQotICAgICAgICBtX2RlcHRoID0gV1RG
OjpudWxsb3B0OworICAgICAgICBtX2RlcHRoID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gbHNwYWNlQXR0cikKLSAgICAgICAgbV9sc3BhY2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fbHNwYWNlID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gdm9m
ZnNldEF0dHIpCi0gICAgICAgIG1fdm9mZnNldCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92
b2Zmc2V0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCmluZGV4IDI2ZjQ1YjRlOTdiOTIxM2NjMDZlYjM5NzY2
Y2RjNzJmMDg5ZTZlNDMuLmEyNjlkYzlhMDc2NTBlOWNlOTVmYTIzNGQzZThiYWQxYWFmYjczYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudC5jcHAKQEAgLTM2NCwxNyArMzY0LDE3IEBAIE1hdGhNTEVsZW1lbnQ6Ok1hdGhWYXJpYW50
IE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTWF0aFZhcmlhbnRBdHRyaWJ1dGUoCiBP
cHRpb25hbDxNYXRoTUxFbGVtZW50OjpNYXRoVmFyaWFudD4gTWF0aE1MUHJlc2VudGF0aW9uRWxl
bWVudDo6c3BlY2lmaWVkTWF0aFZhcmlhbnQoKQogewogICAgIGlmICghYWNjZXB0c01hdGhWYXJp
YW50QXR0cmlidXRlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFtX21hdGhWYXJpYW50KQogICAgICAgICBtX21h
dGhWYXJpYW50ID0gcGFyc2VNYXRoVmFyaWFudEF0dHJpYnV0ZShhdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKG1hdGh2YXJpYW50QXR0cikpOwotICAgIHJldHVybiBtX21hdGhWYXJpYW50
LnZhbHVlKCkgPT0gTWF0aFZhcmlhbnQ6Ok5vbmUgPyBXVEY6Om51bGxvcHQgOiBtX21hdGhWYXJp
YW50OworICAgIHJldHVybiBtX21hdGhWYXJpYW50LnZhbHVlKCkgPT0gTWF0aFZhcmlhbnQ6Ok5v
bmUgPyBzdGQ6Om51bGxvcHQgOiBtX21hdGhWYXJpYW50OwogfQogCiB2b2lkIE1hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAgIGJvb2wgbWF0aFZhcmlhbnRBdHRyaWJ1
dGUgPSBuYW1lID09IG1hdGh2YXJpYW50QXR0ciAmJiBhY2NlcHRzTWF0aFZhcmlhbnRBdHRyaWJ1
dGUoKTsKICAgICBpZiAobWF0aFZhcmlhbnRBdHRyaWJ1dGUpCi0gICAgICAgIG1fbWF0aFZhcmlh
bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fbWF0aFZhcmlhbnQgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKChtYXRoVmFyaWFudEF0dHJpYnV0ZSkgJiYgcmVuZGVyZXIoKSkKICAgICAgICAg
TWF0aE1MU3R5bGU6OnJlc29sdmVNYXRoTUxTdHlsZVRyZWUocmVuZGVyZXIoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5oCmluZGV4
IGU3NWE2MzQxMWMxMGFmMWM3ODNkMmM0MzE3NWMwNTJkNzc0MGUwNTIuLmUyNDY1ZjFkZmM5ZjA3
OTE4YTJmYmU2ZDYzZmExMzQ3NzhiMmMzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIGJvb2wgaXNQaHJhc2luZ0NvbnRlbnQoY29uc3QgTm9kZSYpOwogICAg
IHN0YXRpYyBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpOwogCi0gICAgc3RhdGljIE9w
dGlvbmFsPGJvb2w+IHRvT3B0aW9uYWxCb29sKGNvbnN0IEJvb2xlYW5WYWx1ZSYgdmFsdWUpIHsg
cmV0dXJuIHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCA/IFdURjo6bnVsbG9wdCA6IE9w
dGlvbmFsPGJvb2w+KHZhbHVlID09IEJvb2xlYW5WYWx1ZTo6VHJ1ZSk7IH0KKyAgICBzdGF0aWMg
T3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woY29uc3QgQm9vbGVhblZhbHVlJiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUgPT0gQm9vbGVhblZhbHVlOjpEZWZhdWx0ID8gc3RkOjpudWxsb3B0IDog
T3B0aW9uYWw8Ym9vbD4odmFsdWUgPT0gQm9vbGVhblZhbHVlOjpUcnVlKTsgfQogICAgIGNvbnN0
IEJvb2xlYW5WYWx1ZSYgY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgT3B0aW9uYWw8Qm9vbGVhblZhbHVlPiYpOwogCiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1h
dGhNTExlbmd0aChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21h
dGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwCmluZGV4IDMyZmE0YmJmNWJkNDNiNjE1YWZkOWQ2ZmViZWQ3
NzQyNmZlN2YzYTUuLjA2NGVhMDg5ZjljYTZmNzdmMWE4NjEyMjMwZjlhYmEyZDM4YWIzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3JpcHRzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcApAQCAt
ODAsOSArODAsOSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFNjcmlwdHNF
bGVtZW50OjpzdXBlcnNjcmlwdFNoaWZ0KCkKIHZvaWQgTWF0aE1MU2NyaXB0c0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IHN1YnNjcmlwdHNoaWZ0QXR0cikKLSAgICAgICAg
bV9zdWJzY3JpcHRTaGlmdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9zdWJzY3JpcHRTaGlm
dCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IHN1cGVyc2NyaXB0c2hpZnRB
dHRyKQotICAgICAgICBtX3N1cGVyc2NyaXB0U2hpZnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fc3VwZXJzY3JpcHRTaGlmdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIE1hdGhNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxTcGFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFNwYWNlRWxlbWVudC5jcHAKaW5kZXggY2NkNzg4NjE1ZTMzOGVkYjc1YWU0YzM0YjE4
ZmExMDVjODQ1YTg2OC4uZDU2ZTNhMDQwZDU5Nzc0OWRiMmNiZDAzYzY2MzkzMGRmNjQzZDE5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNwYWNlRWxlbWVudC5jcHAKQEAgLTY2
LDExICs2NiwxMSBAQCBjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIE1hdGhNTFNwYWNlRWxl
bWVudDo6ZGVwdGgoKQogdm9pZCBNYXRoTUxTcGFjZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewogICAg
IGlmIChuYW1lID09IHdpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aCA9IFdURjo6bnVsbG9wdDsK
KyAgICAgICAgbV93aWR0aCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGhl
aWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2hl
aWdodCA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChuYW1lID09IGRlcHRoQXR0cikKLSAg
ICAgICAgbV9kZXB0aCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9kZXB0aCA9IHN0ZDo6bnVs
bG9wdDsKIAogICAgIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxU
b2tlbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVu
dC5jcHAKaW5kZXggZGI4ZDAzNzM1Mjg2YzM4YWU3MTQ2YjkxNjkzMGFlZWMxMGFiNTJmZC4uN2Jk
YWY2MTA0ZTg4ODkzYWVjOTM3ZmY1MmYxYTczM2M4Mzg3NWY0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFRva2VuRWxlbWVudC5jcHAKQEAgLTg2LDEwICs4NiwxMCBAQCBPcHRp
b25hbDxVQ2hhcjMyPiBNYXRoTUxUb2tlbkVsZW1lbnQ6OmNvbnZlcnRUb1NpbmdsZUNvZGVQb2lu
dChTdHJpbmdWaWV3IHN0cmluZwogICAgIGF1dG8gY29kZVBvaW50cyA9IHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRUUFNwYWNlcyhzdHJpbmcpLmNvZGVQb2ludHMoKTsKICAgICBhdXRvIGl0ZXJh
dG9yID0gY29kZVBvaW50cy5iZWdpbigpOwogICAgIGlmIChpdGVyYXRvciA9PSBjb2RlUG9pbnRz
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIE9wdGlvbmFsPFVDaGFyMzI+IGNoYXJhY3RlciA9ICppdGVyYXRvcjsK
ICAgICArK2l0ZXJhdG9yOwotICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2RlUG9pbnRzLmVuZCgp
ID8gY2hhcmFjdGVyIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiBpdGVyYXRvciA9PSBjb2Rl
UG9pbnRzLmVuZCgpID8gY2hhcmFjdGVyIDogc3RkOjpudWxsb3B0OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKaW5kZXggNTM5
ZmJkODVjZjg2YWFmNzIzZWVlZmIwNzNjN2ZlMGQ5YTBmZTI3OC4uMDRmYjAxMjc5M2RmMWZlY2Jj
NjQ2YjNmMjI3Yzg4OGI5YmMwYWZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxVbmRlck92ZXJFbGVtZW50LmNwcApAQCAtNjEsOSArNjEsOSBAQCBjb25zdCBNYXRoTUxF
bGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFjY2VudFVuZGVy
KCkKIHZvaWQgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5h
bWUgPT0gYWNjZW50QXR0cikKLSAgICAgICAgbV9hY2NlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIG1fYWNjZW50ID0gc3RkOjpudWxsb3B0OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gYWNjZW50
dW5kZXJBdHRyKQotICAgICAgICBtX2FjY2VudFVuZGVyID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBtX2FjY2VudFVuZGVyID0gc3RkOjpudWxsb3B0OwogCiAgICAgTWF0aE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
aW5kZXggYjZkOTFhODMzMTdlMjIyYzljMmIxN2IxNjhjMzA2ODg5ZDQ2NmIxMy4uNmViNzU2ZWFm
ZTg0MTdlOWM3MTMxZGNhODdkZTM3YjhjYjljNWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCkBAIC0zMjAsNyArMzIwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJ1
bk9wZW5QYW5lbChGcmFtZSYsIEZpbGVDaG9vc2VyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
aG93U2hhcmVTaGVldChTaGFyZURhdGFXaXRoUGFyc2VkVVJMJiwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzaG93Q29udGFjdFBpY2tlcihjb25zdCBDb250YWN0c1JlcXVlc3REYXRhJiwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxDb250YWN0SW5mbz4+
JiYpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd0NvbnRhY3RQaWNrZXIoY29uc3QgQ29udGFjdHNSZXF1ZXN0RGF0YSYsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxWZWN0b3I8Q29udGFjdEluZm8+PiYmKT4m
JiBjYWxsYmFjaykgeyBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOyB9CiAgICAgCiAgICAgLy8gQXN5
bmNocm9ub3VzIHJlcXVlc3QgdG8gbG9hZCBhbiBpY29uIGZvciBzcGVjaWZpZWQgZmlsZW5hbWVz
LgogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgRmlsZUljb25Mb2FkZXImKSA9IDA7CkBAIC00NjIsNyArNDYyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IElu
dFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURp
ZENoYW5nZShTY3JvbGxiYXJTdHlsZSkgeyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPFNjcm9s
bGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1
cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxTY3JvbGxiYXJPdmVybGF5
U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9v
bCBoYXNIYW5kbGVycykgPSAwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5o
CmluZGV4IDE5ZTI3YTAyMmE1NzE4YWVkNDI4ZjNkYWIwYTQ2YjlmMGZjNTJmZDQuLmU4NDlhYmQ1
MGYwNWUyOTAwNWM0OGU0MTA4ZGJlNmE0ODQ4ODQ3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRP
cmlnaW4uaApAQCAtODEsMTAgKzgxLDEwIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGlu
ZSBPcHRpb25hbDxDbGllbnRPcmlnaW4+IENsaWVudE9yaWdpbjo6ZGVjb2RlKERlY29kCiAgICAg
T3B0aW9uYWw8U2VjdXJpdHlPcmlnaW5EYXRhPiBjbGllbnRPcmlnaW47CiAgICAgZGVjb2RlciA+
PiB0b3BPcmlnaW47CiAgICAgaWYgKCF0b3BPcmlnaW4gfHwgdG9wT3JpZ2luLT5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgZGVjb2RlciA+PiBjbGllbnRPcmlnaW47CiAgICAgaWYgKCFjbGllbnRPcmlnaW4g
fHwgY2xpZW50T3JpZ2luLT5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ2xpZW50T3JpZ2lu
IHsgV1RGTW92ZSgqdG9wT3JpZ2luKSwgV1RGTW92ZSgqY2xpZW50T3JpZ2luKSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDBkZjdkOWI2MTA3NzdjNjRkZGE3NWFh
MDI2MmY3NDkyYmEwMGE5MjEuLjc0MjE0OTNlNDJkYTM4N2UzYTI1NDM1ZDQxZjM3NGNjMzVmZDNh
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTY4LDEyICs2OCwxMiBA
QCBPcHRpb25hbDxTaW1wbGVSYW5nZT4gRE9NU2VsZWN0aW9uOjpyYW5nZSgpIGNvbnN0CiB7CiAg
ICAgYXV0byBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIHJhbmdlID0gZnJhbWUtPnNldHRpbmdzKCkubGl2ZVJhbmdlU2VsZWN0aW9uRW5hYmxlZCgp
CiAgICAgICAgID8gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnJhbmdlKCkKICAgICAg
ICAgOiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwogICAgIGlm
ICghcmFuZ2UgfHwgcmFuZ2UtPnN0YXJ0LmNvbnRhaW5lci0+aXNJblNoYWRvd1RyZWUoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gcmFuZ2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggNzVk
NWYyZWM3ZTQwMjQyYmU3OWIyOTA2OWU2YzgxY2RkYmVmYmQ4Ny4uNzZkMmZlN2Q5YjA2ZTg5YWMz
ZjU1NmMxMmQ4YWI0NDkwNWJiNDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTM5
OCw3ICszOTgsNyBAQCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiBET01UaW1lcjo6YWxpZ25lZEZp
cmVUaW1lKE1vbm90b25pY1RpbWUgZmlyZVRpbWUpIGNvbnN0CiB7CiAgICAgU2Vjb25kcyBhbGln
bm1lbnRJbnRlcnZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZG9tVGltZXJBbGlnbm1l
bnRJbnRlcnZhbChtX25lc3RpbmdMZXZlbCA+PSBtYXhUaW1lck5lc3RpbmdMZXZlbCk7CiAgICAg
aWYgKCFhbGlnbm1lbnRJbnRlcnZhbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IHJhbmRvbWl6ZWRQcm9wb3J0aW9uID0gcmFuZG9tTnVtYmVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCBmODIyYTdjYmI2ZDIyZWY1Y2MwMjM1MjJjMGRhNDVhOTk5OTA2NTFi
Li5mMjZjZTQzYmYzZWQwMjdhOTRmMjY3YWFlOGI0MjBmYjYwZTk2YTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCkBAIC03NDgsMTIgKzc0OCwxMiBAQCB2b2lkIERPTVdpbmRvdzo6ZnJl
ZXplTm93VGltZXN0YW1wKCkKIAogdm9pZCBET01XaW5kb3c6OnVuZnJlZXplTm93VGltZXN0YW1w
KCkKIHsKLSAgICBtX2Zyb3plbk5vd1RpbWVzdGFtcCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2Zy
b3plbk5vd1RpbWVzdGFtcCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogUmVkdWNlZFJlc29sdXRpb25T
ZWNvbmRzIERPTVdpbmRvdzo6ZnJvemVuTm93VGltZXN0YW1wKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9mcm96ZW5Ob3dUaW1lc3RhbXAudmFsdWVPcihub3dUaW1lc3RhbXAoKSk7CisgICAgcmV0
dXJuIG1fZnJvemVuTm93VGltZXN0YW1wLnZhbHVlX29yKG5vd1RpbWVzdGFtcCgpKTsKIH0KIAog
TG9jYXRpb24mIERPTVdpbmRvdzo6bG9jYXRpb24oKQpAQCAtOTM5LDcgKzkzOSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjCiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHVzZXJHZXN0
dXJlSW5kaWNhdG9yKHVzZXJHZXN0dXJlVG9Gb3J3YXJkKTsKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFtZSwgcG9zdE1lc3NhZ2VJ
ZGVudGlmaWVyKTsKIAotICAgICAgICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUo
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmRvY3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50
cmFuc2ZlcnJlZFBvcnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3Vy
Y2VPcmlnaW4sIHsgfSwgaW5jdW1iZW50V2luZG93UHJveHkgPyBtYWtlT3B0aW9uYWwoTWVzc2Fn
ZUV2ZW50U291cmNlKFdURk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpKSkgOiBXVEY6Om51bGxv
cHQpOworICAgICAgICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoKmRvY3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJl
ZFBvcnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4s
IHsgfSwgaW5jdW1iZW50V2luZG93UHJveHkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2
ZW50U291cmNlKFdURk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpKSkgOiBzdGQ6Om51bGxvcHQp
OwogICAgICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNzYWdlSWRl
bnRpZmllcik7CkBAIC0xNzI2LDcgKzE3MjYsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsVG8o
Y29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zLCBTY3JvbGxDbGFtcGluZyBjbGFtcGluZwog
CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVu
dCgpPwogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1MDU5Ci0gICAgYXV0byBhbmltYXRlZCA9IHVzZVNtb290aFNjcm9sbGluZyhzY3JvbGxUb09w
dGlvbnMuYmVoYXZpb3IudmFsdWVPcihTY3JvbGxCZWhhdmlvcjo6QXV0byksIGRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpKSA/IEFuaW1hdGVkU2Nyb2xsOjpZZXMgOiBBbmltYXRlZFNjcm9s
bDo6Tm87CisgICAgYXV0byBhbmltYXRlZCA9IHVzZVNtb290aFNjcm9sbGluZyhzY3JvbGxUb09w
dGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVoYXZpb3I6OkF1dG8pLCBkb2N1bWVudCgp
LT5kb2N1bWVudEVsZW1lbnQoKSkgPyBBbmltYXRlZFNjcm9sbDo6WWVzIDogQW5pbWF0ZWRTY3Jv
bGw6Ok5vOwogICAgIGF1dG8gc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zID0gU2Nyb2xsUG9z
aXRpb25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQcm9ncmFtbWF0aWNXaXRoT3B0aW9ucyhjbGFtcGlu
ZywgYW5pbWF0ZWQsIHNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7CiAgICAgdmlldy0+c2V0Q29u
dGVudHNTY3JvbGxQb3NpdGlvbihsYXlvdXRQb3MsIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
cyk7CiB9CkBAIC0yMTQ1LDcgKzIxNDUsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZmFpbGVkVG9SZWdp
c3RlckRldmljZU1vdGlvbkV2ZW50TGlzdGVuZXIoKQogICAgICAgICBkb2N1bWVudCgpLT5wb3N0
VGFzayhbXShhdXRvJiBjb250ZXh0KSB7CiAgICAgICAgICAgICBpZiAoYXV0byogd2luZG93ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmRvbVdpbmRvdygpKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBhY2NlbGVyYXRpb24gPSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNy
ZWF0ZSgpOwotICAgICAgICAgICAgICAgIHdpbmRvdy0+ZGlzcGF0Y2hFdmVudChEZXZpY2VNb3Rp
b25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kZXZpY2Vtb3Rpb25FdmVudCwgRGV2aWNlTW90
aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbi5jb3B5UmVmKCksIGFjY2VsZXJhdGlvbi5jb3B5
UmVmKCksIERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKCksIFdURjo6bnVs
bG9wdCkucHRyKCkpKTsKKyAgICAgICAgICAgICAgICB3aW5kb3ctPmRpc3BhdGNoRXZlbnQoRGV2
aWNlTW90aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQsIERl
dmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uY29weVJlZigpLCBhY2NlbGVyYXRp
b24uY29weVJlZigpLCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZSgpLCBz
dGQ6Om51bGxvcHQpLnB0cigpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMGE5MjE1ZTE0ZjYyZDc5
NDAyZGU4MjRkZGJlOTA5MDYzN2FlNDQ0Yi4uODg2MDBhNjVkOThjNjJiNGQ3Mjk1NjdiYzNjOThh
ZWU1OGI3OGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTI0
MSw3ICsyNDEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKCFtX2Ryb3BwZWRJbWFnZVBsYWNl
aG9sZGVycy5pc0VtcHR5KCkgJiYgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlICYmIHRy
eVRvVXBkYXRlRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGRyYWdEYXRhKSkgewogICAgICAgICBt
X2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVycy5jbGVhcigpOwotICAgICAgICBtX2Ryb3BwZWRJbWFn
ZVBsYWNlaG9sZGVyUmFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJSYW5nZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgbV9kb2N1bWVudFVuZGVy
TW91c2UgPSBudWxscHRyOwogICAgICAgICBjbGVhckRyYWdDYXJldCgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTMxNCw3ICszMTQsNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYQogICAg
IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlzRW1wdHko
KSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBjYWxsIG1v
dXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBEcmFnSGFu
ZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2Nl
cHRlZCA9IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UtPnNldENhblJlY2VpdmVEcm9wcGVk
RmlsZXMobV9udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIFdlIGFyZSBub3Qgb3ZlciBhIGZpbGUgaW5wdXQgZWxlbWVudC4gVGhlIGRy
YWdnZWQgaXRlbShzKSB3aWxsIGxvYWRlZCBpbnRvIHRoZSB2aWV3LApAQCAtNTA3LDcgKzUwNyw3
IEBAIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JM
b2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYm
IChtX2RpZEluaXRpYXRlRHJhZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYg
IXBsdWdpbkRvY3VtZW50QWNjZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHls
ZSgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4gZHJhZ09wZXJhdGlvbihkcmFnRGF0YSk7CiB9CiAKQEAgLTcw
MCw3ICs3MDAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVsdE9wZXJh
dGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+CiAgICAgaWYgKHNvdXJjZU9wZXJh
dGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9u
OjpMaW5rLCBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpQcml2YXRlLCBE
cmFnT3BlcmF0aW9uOjpNb3ZlLCBEcmFnT3BlcmF0aW9uOjpEZWxldGUgfSkpCiAgICAgICAgIHJl
dHVybiBEcmFnT3BlcmF0aW9uOjpDb3B5OwogICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uOjpNb3ZlKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246Ok1vdmU7CiAgICAg
aWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6R2VuZXJpYykp
CkBAIC03MzIsNyArNzMyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGkKICAgICBpZiAoIXRh
cmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2spCiAgICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRP
cGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGVsc2UgaWYgKCFzb3Vy
Y2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2su
dmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90
IHN1cHBvcnRlZCBieSB0aGUgc291cmNlLgotICAgICAgICBvcGVyYXRpb24gPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG9wZXJhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBlbHNlCiAgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKQEAgLTk0MCw3ICs5NDAsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIE9wdGlvblNldDxEcmFnU291
cmNlQWN0aQogT3B0aW9uYWw8SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRyb2xsZXI6OmhpdFRlc3RS
ZXN1bHRGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
SW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogewogICAgIGlmICghc291cmNlLnZpZXcoKSB8fCAh
c291cmNlLmNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3RleHByIE9wdGlvblNldDxI
aXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpSZWFk
T25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6
OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgfTsKICAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBzb3Vy
Y2UuZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobG9jYXRpb24sIGhpdFR5cGUp
OwpAQCAtOTUwLDcgKzk1MCw3IEBAIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdDb250cm9s
bGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsCiAgICAgICAgIC8v
IFRoZSBvcmlnaW5hbCBub2RlIGJlaW5nIGRyYWdnZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3Jp
Z2luIGFueW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBv
dXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0
YXJ0IGEgZHJhZyBvbgogICAgICAgICAvLyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhY3R1YWxseSB1
bmRlciB0aGUgZHJhZyBvcmlnaW4uCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHsgaGl0VGVzdFJl
c3VsdCB9OwpAQCAtMTM3NCw3ICsxMzc0LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0
ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnMKIAog
dm9pZCBEcmFnQ29udHJvbGxlcjo6cmVtb3ZlQWxsRHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKCkK
IHsKLSAgICBtX2Ryb3BwZWRJbWFnZVBsYWNlaG9sZGVyUmFuZ2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9kcm9wcGVkSW1hZ2VQbGFjZWhvbGRlclJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgIGZv
ciAoYXV0byYgcGxhY2Vob2xkZXIgOiBzdGQ6OmV4Y2hhbmdlKG1fZHJvcHBlZEltYWdlUGxhY2Vo
b2xkZXJzLCB7IH0pKSB7CiAgICAgICAgIGlmIChwbGFjZWhvbGRlci0+aXNDb25uZWN0ZWQoKSkK
ICAgICAgICAgICAgIHBsYWNlaG9sZGVyLT5yZW1vdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCA5OTQzZjRiMzM3ZGVmZGUzNTBhMDYzOWM0Y2NlMGE2Y2JkNDc4M2Y5
Li5iYjYxNzZmZTgzNThkN2M5ZGE4YWRhN2U0YjFhMmMyZDAyODg0MDc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xNDE4LDE0ICsxNDE4LDE0IEBAIHZvaWQgRXZlbnRI
YW5kbGVyOjp1cGRhdGVDdXJzb3IoRnJhbWVWaWV3JiB2aWV3LCBjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsIGJvCiBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29y
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaGlmdEtleSkKIHsKICAgICBpZiAo
bV9yZXNpemVMYXllciAmJiBtX3Jlc2l6ZUxheWVyLT5pblJlc2l6ZU1vZGUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmICghbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAg
ICBpZiAobV9mcmFtZS5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5wYW5TY3JvbGxJblByb2dy
ZXNzKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFt
ZSk7CkBAIC0xNDQwLDcgKzE0NDAsNyBAQCBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6
c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaAogCiAgICAg
Tm9kZSogbm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAgICAgaWYgKCFub2RlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgYXV0byogc3R5bGUgPSBy
ZW5kZXJlciA/ICZyZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHI7CkBAIC0xNDYyLDcgKzE0NjIs
NyBAQCBPcHRpb25hbDxDdXJzb3I+IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhp
dFRlc3RSZXN1bHQmIHJlc3VsdCwgYm9vbCBzaAogICAgICAgICBjYXNlIFNldEN1cnNvcjoKICAg
ICAgICAgICAgIHJldHVybiBvdmVycmlkZUN1cnNvcjsKICAgICAgICAgY2FzZSBEb05vdFNldEN1
cnNvcjoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMzA1LDcgKzIzMDUsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3BlcmF0aW9u
VG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cgogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6
TW92ZTsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAibGluayIpCiAgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uOjpMaW5rOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRv
RHJvcFpvbmVPcGVyYXRpb24oT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQpAQCAt
MjM2Nyw3ICsyMzY3LDcgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudCgKICAgICBkYXRhVHJhbnNm
ZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBpZiAoYWNjZXB0ICYmICFkYXRhVHJh
bnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuIHsgdHJ1
ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSB9OwotICAgIHJldHVy
biB7IGFjY2VwdCwgV1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgYWNjZXB0LCBzdGQ6Om51
bGxvcHQgfTsKIH0KIAogRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5k
bGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBj
b25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCkBAIC0yODY4LDcgKzI4NjgsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IE9wdGlvbgogewogI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKICAgICBpZiAod2hlZWxF
dmVudC5pc0dlc3R1cmVTdGFydCgpKQotICAgICAgICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRl
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID0gc3Rk
OjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBPcHRpb25TZXQ8RXZlbnRIYW5kbGluZz4gaGFuZGxp
bmc7CkBAIC0zMDY4LDcgKzMwNjgsNyBAQCBPcHRpb25hbDxXaGVlbFNjcm9sbEdlc3R1cmVTdGF0
ZT4gRXZlbnRIYW5kbGVyOjp1cGRhdGVXaGVlbEdlc3R1cmVTdGF0ZShjb25zdCBQbAogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0od2hlZWxFdmVudCk7CiAgICAgVU5VU0VEX1BBUkFNKGV2ZW50SGFu
ZGxpbmcpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5k
ZXggYmZiYmFkZWE3MmUxNGM5YmM3NjA3ZWFlOWUzZTAzZjk1MDlmMmJkNy4uYmU3NmUxYmQyNzc1
NTEzMWQwODMxNmYyZDNiZTk5YmNjYTY4ZGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcApAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHNoYWRv
d0FkanVzdGVkVGFiSW5kZXgoRWxlbWVudCYgZWxlbWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQp
CiAgICAgICAgIGlmICghZWxlbWVudC50YWJJbmRleFNldEV4cGxpY2l0bHkoKSkKICAgICAgICAg
ICAgIHJldHVybiAwOyAvLyBUcmVhdCBhIHNoYWRvdyBob3N0IHdpdGhvdXQgdGFiaW5kZXggaWYg
aXQgaGFzIHRhYmluZGV4PTAgZXZlbiB0aG91Z2ggSFRNTEVsZW1lbnQ6OnRhYkluZGV4IHJldHVy
bnMgLTEgb24gc3VjaCBhbiBlbGVtZW50LgogICAgIH0KLSAgICByZXR1cm4gZWxlbWVudC5zaG91
bGRCZUlnbm9yZWRJblNlcXVlbnRpYWxGb2N1c05hdmlnYXRpb24oKSA/IC0xIDogZWxlbWVudC50
YWJJbmRleFNldEV4cGxpY2l0bHkoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBlbGVtZW50LnNo
b3VsZEJlSWdub3JlZEluU2VxdWVudGlhbEZvY3VzTmF2aWdhdGlvbigpID8gLTEgOiBlbGVtZW50
LnRhYkluZGV4U2V0RXhwbGljaXRseSgpLnZhbHVlX29yKDApOwogfQogCiBGb2N1c0NvbnRyb2xs
ZXI6OkZvY3VzQ29udHJvbGxlcihQYWdlJiBwYWdlLCBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gYWN0aXZpdHlTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYzgxZTVlMjYxMWQ3
NmQ1YmM3YzRkZWM5OTFlYzdjYjQ3Yjk1M2ZhYi4uNWJiZjUzYmU4NzkyODRlZWJlODI5OTNhM2Nm
MzYyYzU2NzFiMGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTg1MSw3ICs4NTEsNyBAQCBP
cHRpb25hbDxTaW1wbGVSYW5nZT4gRnJhbWU6OnJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IGZyYW1lUG9pbnQpCiAKICAgICBhdXRvIGNvbnRhaW5lclRleHQgPSBwb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpLmNvbnRhaW5lclRleHQoKTsKICAgICBpZiAoIWNvbnRhaW5lclRleHQgfHwgIWNv
bnRhaW5lclRleHQtPnJlbmRlcmVyKCkgfHwgY29udGFpbmVyVGV4dC0+cmVuZGVyZXIoKS0+c3R5
bGUoKS51c2VyU2VsZWN0KCkgPT0gVXNlclNlbGVjdDo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChhdXRv
IHByZXZpb3VzQ2hhcmFjdGVyUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2UocG9zaXRpb24ucHJldmlv
dXMoKSwgcG9zaXRpb24pKSB7CiAgICAgICAgIGlmIChlZGl0b3IoKS5maXJzdFJlY3RGb3JSYW5n
ZSgqcHJldmlvdXNDaGFyYWN0ZXJSYW5nZSkuY29udGFpbnMoZnJhbWVQb2ludCkpCkBAIC04NjMs
NyArODYzLDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEZyYW1lOjpyYW5nZUZvclBvaW50KGNv
bnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgICAgICAgICAgcmV0dXJuICpuZXh0Q2hhcmFj
dGVyUmFuZ2U7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSwgY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBiYWNrZ3JvdW5kQ29sb3IsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggODU3NjA4NDNjYWUzMzJmOTU5OGRlYzUwNTRm
ZGM5NDk2YmRjNTVkYy4uMmY0Y2UxMzY2MWM3NmEwYzM4OTM5ZjAxY2QyNWQyMzlmN2Q4NGIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTM1LDggKzEzNSw4IEBACiAjaW5jbHVk
ZSAiTGF5b3V0Q29udGV4dC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCBmcmFtZSgpLnBh
Z2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQotI2RlZmluZSBGUkFN
RV9JRCBmcmFtZSgpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2
NCgpCisjZGVmaW5lIFBBR0VfSUQgZnJhbWUoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllcigpKS50b1VJbnQ2NCgpCisjZGVmaW5lIEZSQU1FX0lEIGZyYW1lKCkuZnJhbWVJRCgpLnZh
bHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpCiAjZGVmaW5lIEZSQU1FVklFV19S
RUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihm
cmFtZSgpLnBhZ2UoKSAmJiBmcmFtZSgpLnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0
ICIsIG1haW49JWRdIEZyYW1lVmlldzo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBm
cmFtZSgpLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTE3MDAsNyArMTcwMCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdChPcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0LCBUcmlnZ2VyCiAgICAgaWYg
KG9sZFJlY3QuaGVpZ2h0KCkgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkuaGVpZ2h0KCkpCiAgICAg
ICAgIGxheW91dFRyaWdnZXJpbmcgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllczsKIAotICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiXG5GcmFtZVZpZXcgIiA8PCB0aGlz
IDw8ICIgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKSAtIGNoYW5naW5nIG92ZXJyaWRl
IGxheW91dCB2aWV3cG9ydCBmcm9tICIgPDwgb2xkUmVjdCA8PCAiIHRvICIgPDwgbV9sYXlvdXRW
aWV3cG9ydE92ZXJyaWRlUmVjdC52YWx1ZU9yKExheW91dFJlY3QoKSkgPDwgIiBsYXlvdXRUcmln
Z2VyaW5nICIgPDwgKGxheW91dFRyaWdnZXJpbmcgPT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMg
PyAieWVzIiA6ICJubyIpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0g
PDwgIlxuRnJhbWVWaWV3ICIgPDwgdGhpcyA8PCAiIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVS
ZWN0KCkgLSBjaGFuZ2luZyBvdmVycmlkZSBsYXlvdXQgdmlld3BvcnQgZnJvbSAiIDw8IG9sZFJl
Y3QgPDwgIiB0byAiIDw8IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWVfb3IoTGF5
b3V0UmVjdCgpKSA8PCAiIGxheW91dFRyaWdnZXJpbmcgIiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9
PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcyA/ICJ5ZXMiIDogIm5vIikpOwogCiAgICAgaWYgKG9s
ZFJlY3QgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkgJiYgbGF5b3V0VHJpZ2dlcmluZyA9PSBUcmln
Z2VyTGF5b3V0T3JOb3Q6OlllcykKICAgICAgICAgc2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNOZWVkTGF5b3V0KCk7CkBAIC0zMDM1LDkgKzMwMzUsOSBAQCB2b2lkIEZyYW1lVmlldzo6c2V0
QmFzZUJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKQogdm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZUJhY2tncm91bmRSZWN1cnNpdmVseShjb25zdCBPcHRpb25hbDxDb2xv
cj4mIGJhY2tncm91bmRDb2xvcikKIHsKICNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQot
ICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihS
ZW5kZXJUaGVtZTo6c2luZ2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbUNv
bnRyb2xCYWNrZ3JvdW5kLCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CisgICAgQ29sb3IgYmFzZUJh
Y2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvci52YWx1ZV9vcihSZW5kZXJUaGVtZTo6c2lu
Z2xldG9uKCkuc3lzdGVtQ29sb3IoQ1NTVmFsdWVBcHBsZVN5c3RlbUNvbnRyb2xCYWNrZ3JvdW5k
LCBzdHlsZUNvbG9yT3B0aW9ucygpKSk7CiAjZWxzZQotICAgIENvbG9yIGJhc2VCYWNrZ3JvdW5k
Q29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVPcihDb2xvcjo6d2hpdGUpOworICAgIENvbG9y
IGJhc2VCYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IudmFsdWVfb3IoQ29sb3I6Ondo
aXRlKTsKICNlbmRpZgogCiAgICAgZm9yIChhdXRvKiBmcmFtZSA9IG1fZnJhbWUucHRyKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUucHRyKCkpKSB7
CkBAIC00OTMzLDcgKzQ5MzMsNyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmIHBhcmVudFBvaW50KSBjb25zdAogZmxvYXQgRnJh
bWVWaWV3Ojpkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25hbDxmbG9hdD4gZWZm
ZWN0aXZlWm9vbSkgY29uc3QKIHsKICAgICAvLyBJZiBlZmZlY3RpdmVab29tIGlzIHBhc3NlZCwg
aXQgYWxyZWFkeSBmYWN0b3JzIGluIHBhZ2Vab29tRmFjdG9yKCkuIAotICAgIHJldHVybiBlZmZl
Y3RpdmVab29tLnZhbHVlT3IoZnJhbWUoKS5wYWdlWm9vbUZhY3RvcigpKSAqIGZyYW1lKCkuZnJh
bWVTY2FsZUZhY3RvcigpOworICAgIHJldHVybiBlZmZlY3RpdmVab29tLnZhbHVlX29yKGZyYW1l
KCkucGFnZVpvb21GYWN0b3IoKSkgKiBmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKTsKIH0KIAog
ZmxvYXQgRnJhbWVWaWV3OjphYnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxm
bG9hdD4gZWZmZWN0aXZlWm9vbSkgY29uc3QKQEAgLTU0OTQsNyArNTQ5NCw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpjbGVhclZpZXdwb3J0U2l6ZU92ZXJyaWRlRm9yQ1NTVmlld3BvcnRVbml0cygpCiAg
ICAgaWYgKCFtX292ZXJyaWRlVmlld3BvcnRTaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X292ZXJyaWRlVmlld3BvcnRTaXplID0gV1RGOjpudWxsb3B0OworICAgIG1fb3ZlcnJpZGVWaWV3
cG9ydFNpemUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUo
KS5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmRpZENoYW5nZVN0
eWxlU2hlZXRFbnZpcm9ubWVudCgpOwogfQpAQCAtNTUwNiwxMiArNTUwNiwxMiBAQCB2b2lkIEZy
YW1lVmlldzo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhJbnRTaXplIHNpemUp
CiAKIHZvaWQgRnJhbWVWaWV3OjpvdmVycmlkZVZpZXdwb3J0V2lkdGhGb3JDU1NWaWV3cG9ydFVu
aXRzKGludCB3aWR0aCkKIHsKLSAgICBvdmVycmlkZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0
VW5pdHMoeyB3aWR0aCwgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA/IG1fb3ZlcnJpZGVWaWV3cG9y
dFNpemUtPmhlaWdodCA6IFdURjo6bnVsbG9wdCB9KTsKKyAgICBvdmVycmlkZVZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoeyB3aWR0aCwgbV9vdmVycmlkZVZpZXdwb3J0U2l6ZSA/IG1f
b3ZlcnJpZGVWaWV3cG9ydFNpemUtPmhlaWdodCA6IHN0ZDo6bnVsbG9wdCB9KTsKIH0KIAogdm9p
ZCBGcmFtZVZpZXc6OnJlc2V0T3ZlcnJpZGRlblZpZXdwb3J0V2lkdGhGb3JDU1NWaWV3cG9ydFVu
aXRzKCkKIHsKLSAgICBvdmVycmlkZVZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoeyB7
IH0sIG1fb3ZlcnJpZGVWaWV3cG9ydFNpemUgPyBtX292ZXJyaWRlVmlld3BvcnRTaXplLT5oZWln
aHQgOiBXVEY6Om51bGxvcHQgfSk7CisgICAgb3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKHsgeyB9LCBtX292ZXJyaWRlVmlld3BvcnRTaXplID8gbV9vdmVycmlkZVZpZXdw
b3J0U2l6ZS0+aGVpZ2h0IDogc3RkOjpudWxsb3B0IH0pOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
b3ZlcnJpZGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKE92ZXJyaWRlVmlld3BvcnRT
aXplIHNpemUpCkBAIC01NTM4LDE2ICs1NTM4LDE2IEBAIEludFNpemUgRnJhbWVWaWV3Ojp2aWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3QKIAogICAgIGlmICh1c2VGaXhlZExh
eW91dCgpKSB7CiAgICAgICAgIGF1dG8gZml4ZWRMYXlvdXRTaXplID0gdGhpcy0+Zml4ZWRMYXlv
dXRTaXplKCk7Ci0gICAgICAgIHZpZXdwb3J0U2l6ZS53aWR0aCA9IHZpZXdwb3J0U2l6ZS53aWR0
aC52YWx1ZU9yKGZpeGVkTGF5b3V0U2l6ZS53aWR0aCgpKTsKLSAgICAgICAgdmlld3BvcnRTaXpl
LmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFsdWVPcihmaXhlZExheW91dFNpemUuaGVp
Z2h0KCkpOworICAgICAgICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGgu
dmFsdWVfb3IoZml4ZWRMYXlvdXRTaXplLndpZHRoKCkpOworICAgICAgICB2aWV3cG9ydFNpemUu
aGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZV9vcihmaXhlZExheW91dFNpemUuaGVp
Z2h0KCkpOwogICAgICAgICByZXR1cm4geyAqdmlld3BvcnRTaXplLndpZHRoLCAqdmlld3BvcnRT
aXplLmhlaWdodCB9OwogICAgIH0KICAgICAKICAgICAvLyBGSVhNRTogdGhlIHZhbHVlIHJldHVy
bmVkIHNob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgdmFsdWUgb2YgdGhlIG92ZXJmbG93CiAg
ICAgLy8gcHJvcGVydHkgb24gdGhlIHJvb3QgZWxlbWVudC4KICAgICBhdXRvIHZpc2libGVDb250
ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMgPSB2aXNpYmxlQ29udGVudFJlY3RJbmNsdWRpbmdT
Y3JvbGxiYXJzKCkuc2l6ZSgpOwotICAgIHZpZXdwb3J0U2l6ZS53aWR0aCA9IHZpZXdwb3J0U2l6
ZS53aWR0aC52YWx1ZU9yKHZpc2libGVDb250ZW50U2l6ZUluY2x1ZGluZ1Njcm9sbGJhcnMud2lk
dGgoKSk7Ci0gICAgdmlld3BvcnRTaXplLmhlaWdodCA9IHZpZXdwb3J0U2l6ZS5oZWlnaHQudmFs
dWVPcih2aXNpYmxlQ29udGVudFNpemVJbmNsdWRpbmdTY3JvbGxiYXJzLmhlaWdodCgpKTsKKyAg
ICB2aWV3cG9ydFNpemUud2lkdGggPSB2aWV3cG9ydFNpemUud2lkdGgudmFsdWVfb3IodmlzaWJs
ZUNvbnRlbnRTaXplSW5jbHVkaW5nU2Nyb2xsYmFycy53aWR0aCgpKTsKKyAgICB2aWV3cG9ydFNp
emUuaGVpZ2h0ID0gdmlld3BvcnRTaXplLmhlaWdodC52YWx1ZV9vcih2aXNpYmxlQ29udGVudFNp
emVJbmNsdWRpbmdTY3JvbGxiYXJzLmhlaWdodCgpKTsKICAgICByZXR1cm4geyAqdmlld3BvcnRT
aXplLndpZHRoLCAqdmlld3BvcnRTaXplLmhlaWdodCB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCBmOGUwMjExNzAwN2NjOWYwNmVkZWNlNTFmZjc5ZjU4MDQ4NWExN2QzLi4wMmE5
MDY4YzdjMzcwMWQxZmIzM2QzZjVjMDgzMjIyZGZhYmFmMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTQ5MywxMyArNDkzLDEzIEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGNvbnZl
cnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBmaW5hbDsKICAgICBJ
bnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qg
ZmluYWw7CiAKLSAgICBmbG9hdCBkb2N1bWVudFRvQWJzb2x1dGVTY2FsZUZhY3RvcihPcHRpb25h
bDxmbG9hdD4gZWZmZWN0aXZlWm9vbSA9IFdURjo6bnVsbG9wdCkgY29uc3Q7Ci0gICAgZmxvYXQg
YWJzb2x1dGVUb0RvY3VtZW50U2NhbGVGYWN0b3IoT3B0aW9uYWw8ZmxvYXQ+IGVmZmVjdGl2ZVpv
b20gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGZsb2F0IGRvY3VtZW50VG9BYnNvbHV0ZVNj
YWxlRmFjdG9yKE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKKyAgICBmbG9hdCBhYnNvbHV0ZVRvRG9jdW1lbnRTY2FsZUZhY3RvcihPcHRpb25hbDxm
bG9hdD4gZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBGbG9hdFJlY3QgYWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJlY3QsIE9wdGlv
bmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGFic29sdXRlVG9Eb2N1bWVudFBvaW50KEZsb2F0UG9pbnQs
IE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgYWJzb2x1dGVUb0RvY3VtZW50UmVjdChGbG9hdFJl
Y3QsIE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGFic29sdXRlVG9Eb2N1bWVudFBvaW50KEZs
b2F0UG9pbnQsIE9wdGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKIAotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRvQ2xpZW50UmVjdChGbG9hdFJlY3QsIE9w
dGlvbmFsPGZsb2F0PiBlZmZlY3RpdmVab29tID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICBG
bG9hdFJlY3QgYWJzb2x1dGVUb0NsaWVudFJlY3QoRmxvYXRSZWN0LCBPcHRpb25hbDxmbG9hdD4g
ZWZmZWN0aXZlWm9vbSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBGbG9hdFNpemUgZG9j
dW1lbnRUb0NsaWVudE9mZnNldCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UmVj
dCBkb2N1bWVudFRvQ2xpZW50UmVjdChGbG9hdFJlY3QpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXggNzA5MzQ2N2IxMmY4NTY2MWE4Zjdm
YWRmMDJiMzU3Nzk5NGViNmEwMy4uNDMwMTg0OWRkN2Q2ZTE3ZDQ3MGZmYmExODA4NmIxNDQzMjlh
NWRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBA
IC01MiwxMiArNTIsMTIgQEAgT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFw
YWdlSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7CiAgICAg
ZGVjb2RlciA+PiBmcmFtZUlEOwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqcGFnZUlEKSwgV1RGTW92ZSgqZnJhbWVJRCkgfSB9OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAppbmRleCBmMmJjZDA1MDRhNjk1
M2E1MmI2MDU3M2E3N2MwNTc1MDI5N2RmMmM0Li44NjI5MzcwNTlhNDM0Y2ZkMDExMmMyM2EyM2Iz
ZGMwNjBjY2NmNTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRv
d0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50
aWZpZXIuaApAQCAtNzEsMTIgKzcxLDEyIEBAIE9wdGlvbmFsPEdsb2JhbFdpbmRvd0lkZW50aWZp
ZXI+IEdsb2JhbFdpbmRvd0lkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyCiAgICAg
T3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOwogICAgIGRlY29k
ZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFdpbmRvd0lkZW50aWZpZXI+IHdpbmRvd0lkZW50aWZpZXI7CiAgICAg
ZGVjb2RlciA+PiB3aW5kb3dJZGVudGlmaWVyOwogICAgIGlmICghd2luZG93SWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3Zl
KCp3aW5kb3dJZGVudGlmaWVyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDliYTVhYzgxYzQzYjQ0NWJiMTYxYzE5NzRhNjZmYzU1
NTNlYjhiNDguLjczMWNjMDZjOWMxNmFkNTAyOTlmNzlmYjJhMGI0YjgxNmUxZGQxYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6b2JzZXJ2ZShFbGVtZW50JiB0YXJn
ZXQpCiAgICAgaWYgKCF0cmFja2luZ0RvY3VtZW50KCkgfHwgIW1fY2FsbGJhY2sgfHwgbV9vYnNl
cnZhdGlvblRhcmdldHMuY29udGFpbnMoJnRhcmdldCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHRhcmdldC5lbnN1cmVJbnRlcnNlY3Rpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyYXRpb25zLmFw
cGVuZCh7IG1ha2VXZWFrUHRyKHRoaXMpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgdGFyZ2V0LmVu
c3VyZUludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpLnJlZ2lzdHJhdGlvbnMuYXBwZW5kKHsgbWFr
ZVdlYWtQdHIodGhpcyksIHN0ZDo6bnVsbG9wdCB9KTsKICAgICBib29sIGhhZE9ic2VydmF0aW9u
VGFyZ2V0cyA9IGhhc09ic2VydmF0aW9uVGFyZ2V0cygpOwogICAgIG1fb2JzZXJ2YXRpb25UYXJn
ZXRzLmFwcGVuZCgmdGFyZ2V0KTsKICAgICBhdXRvKiBkb2N1bWVudCA9IHRyYWNraW5nRG9jdW1l
bnQoKTsKQEAgLTI0MCwxOCArMjQwLDE4IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnJv
b3REZXN0cm95ZWQoKQogT3B0aW9uYWw8UmVkdWNlZFJlc29sdXRpb25TZWNvbmRzPiBJbnRlcnNl
Y3Rpb25PYnNlcnZlcjo6bm93VGltZXN0YW1wKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FsbGJh
Y2spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gbV9jYWxsYmFjay0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVChjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b250ZXh0KTsKICAgICBpZiAoYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCkpCiAg
ICAgICAgIHJldHVybiB3aW5kb3ctPmZyb3plbk5vd1RpbWVzdGFtcCgpOwogICAgIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9i
c2VydmVyRW50cnk+JiYgZW50cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01l
ZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFD
b250cm9sc0NvbnRleHRNZW51SXRlbS5oCmluZGV4IDlhYjJlNmE2ZGRiMGRkZTYxODZlMTVhNGYz
NjgzNjI1OTJmNTQ1NGEuLjU1ZWEwMmFjZWNmYzgwZTdlZmQ2MWY1YmJhOWY0MDhiMDVkZTNkNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFDb250cm9sc0NvbnRleHRNZW51
SXRlbS5oCkBAIC02NCw3ICs2NCw3IEBAIE9wdGlvbmFsPE1lZGlhQ29udHJvbHNDb250ZXh0TWVu
dUl0ZW0+IE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0ZW06OmRlY29kZShEZWNvCiAgICAgT3B0
aW9uYWw8dHlwZT4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFt
ZSkgXAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7IFwKIAogICAgIERFQ09ERShpZCwgSUQpOwogICAgIERFQ09ERSh0aXRsZSwgU3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBiYjVmMWZjNjBmYjQzZjM3MWJl
ZDU5YWRjMGJiN2NiOTY1Y2JhZWJhLi5jNTQ4MzM5MWRlYWNiZTZmNjgzZTI0YjI5NjgzMDdjOGQ4
MGIzZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0xMTMsMTMgKzExMywxMyBA
QCBib29sIE5hdmlnYXRvcjo6b25MaW5lKCkgY29uc3QKIHN0YXRpYyBPcHRpb25hbDxVUkw+IHNo
YXJlYWJsZVVSTEZvclNoYXJlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTaGFyZURhdGEmIGRhdGEpCiB7CiAgICAgaWYgKGRhdGEudXJsLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKGRhdGEudXJsKTsKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
ICYmICF1cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB1cmw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2MWRkODYwNThlN2ExZTcyMzBlZGQ2Nzg2Y2U4NGUxNDM0ZmNjZGJl
Li45OWJhMzkyNmM0YWJlODdmNmE0MGMxZGQyOWY2Y2FhODg1NGM2YzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTY3MSw3ICs2NzEsNyBAQCBpbmxpbmUgT3B0aW9uYWw8c3RkOjpwYWlyPE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lciYsIERvY3VtZW50Jj4+ICBQYWdlOjp0YWtlQW55TWVkaQogICAgICAg
ICBpZiAoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lciA9IGZyYW1lLT5kb2N1bWVudCgp
LT50YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkpCiAgICAgICAgICAgICByZXR1cm4geyB7
ICpsaXN0ZW5lciwgKmZyYW1lLT5kb2N1bWVudCgpIH0gfTsKICAgICB9Ci0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFBhZ2U6OnNl
dENhblN0YXJ0TWVkaWEoYm9vbCBjYW5TdGFydE1lZGlhKQpAQCAtNzc2LDE2ICs3NzYsMTYgQEAg
YXV0byBQYWdlOjpmaW5kVGV4dE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIGwKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBQYWdlOjpyYW5n
ZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJlZmVyZW5jZVJhbmdlLCBGaW5kT3B0aW9ucyBvcHRpb25zKQogewogICAgIGlmICh0YXJn
ZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHJlZmVyZW5jZVJhbmdlICYmIHJlZmVyZW5jZVJh
bmdlLT5zdGFydC5kb2N1bWVudCgpLnBhZ2UoKSAhPSB0aGlzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ2FuV3JhcCBj
YW5XcmFwID0gb3B0aW9ucy5jb250YWlucyhXcmFwQXJvdW5kKSA/IENhbldyYXA6OlllcyA6IENh
bldyYXA6Ok5vOwogICAgIEZyYW1lKiBmcmFtZSA9IHJlZmVyZW5jZVJhbmdlID8gcmVmZXJlbmNl
UmFuZ2UtPnN0YXJ0LmRvY3VtZW50KCkuZnJhbWUoKSA6ICZtYWluRnJhbWUoKTsKICAgICBGcmFt
ZSogc3RhcnRGcmFtZSA9IGZyYW1lOwogICAgIGRvIHsKLSAgICAgICAgaWYgKGF1dG8gcmVzdWx0
UmFuZ2UgPSBmcmFtZS0+ZWRpdG9yKCkucmFuZ2VPZlN0cmluZyh0YXJnZXQsIGZyYW1lID09IHN0
YXJ0RnJhbWUgPyByZWZlcmVuY2VSYW5nZSA6IFdURjo6bnVsbG9wdCwgb3B0aW9ucyAtIFdyYXBB
cm91bmQpKQorICAgICAgICBpZiAoYXV0byByZXN1bHRSYW5nZSA9IGZyYW1lLT5lZGl0b3IoKS5y
YW5nZU9mU3RyaW5nKHRhcmdldCwgZnJhbWUgPT0gc3RhcnRGcmFtZSA/IHJlZmVyZW5jZVJhbmdl
IDogc3RkOjpudWxsb3B0LCBvcHRpb25zIC0gV3JhcEFyb3VuZCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0UmFuZ2U7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUsICFv
cHRpb25zLmNvbnRhaW5zKEJhY2t3YXJkcyksIGNhbldyYXApOwogICAgIH0gd2hpbGUgKGZyYW1l
ICYmIGZyYW1lICE9IHN0YXJ0RnJhbWUpOwpAQCAtNzk3LDcgKzc5Nyw3IEBAIE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiBQYWdlOjpyYW5nZU9mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25z
dCBPcHRpb25hbDxTCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2U7CiAgICAgfQogCi0g
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB1
bnNpZ25lZCBQYWdlOjpmaW5kTWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZp
bmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIFNob3VsZEhpZ2hsaWdo
dE1hdGNoZXMgc2hvdWxkSGlnaGxpZ2h0TWF0Y2hlcywgU2hvdWxkTWFya01hdGNoZXMgc2hvdWxk
TWFya01hdGNoZXMpCkBAIC04MTEsNyArODExLDcgQEAgdW5zaWduZWQgUGFnZTo6ZmluZE1hdGNo
ZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnMK
ICAgICBkbyB7CiAgICAgICAgIGlmIChzaG91bGRNYXJrTWF0Y2hlcyA9PSBNYXJrTWF0Y2hlcykK
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5zZXRNYXJrZWRUZXh0TWF0Y2hlc0FyZUhpZ2hs
aWdodGVkKHNob3VsZEhpZ2hsaWdodE1hdGNoZXMgPT0gSGlnaGxpZ2h0TWF0Y2hlcyk7Ci0gICAg
ICAgIG1hdGNoQ291bnQgKz0gZnJhbWUtPmVkaXRvcigpLmNvdW50TWF0Y2hlc0ZvclRleHQodGFy
Z2V0LCBXVEY6Om51bGxvcHQsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQgPyAobWF4TWF0Y2hDb3Vu
dCAtIG1hdGNoQ291bnQpIDogMCwgc2hvdWxkTWFya01hdGNoZXMgPT0gTWFya01hdGNoZXMsIG51
bGxwdHIpOworICAgICAgICBtYXRjaENvdW50ICs9IGZyYW1lLT5lZGl0b3IoKS5jb3VudE1hdGNo
ZXNGb3JUZXh0KHRhcmdldCwgc3RkOjpudWxsb3B0LCBvcHRpb25zLCBtYXhNYXRjaENvdW50ID8g
KG1heE1hdGNoQ291bnQgLSBtYXRjaENvdW50KSA6IDAsIHNob3VsZE1hcmtNYXRjaGVzID09IE1h
cmtNYXRjaGVzLCBudWxscHRyKTsKICAgICAgICAgZnJhbWUgPSBpbmNyZW1lbnRGcmFtZShmcmFt
ZSwgdHJ1ZSwgQ2FuV3JhcDo6Tm8pOwogICAgIH0gd2hpbGUgKGZyYW1lKTsKIApAQCAtMTI2OSw3
ICsxMjY5LDcgQEAgdm9pZCBQYWdlOjpkaWRDb21taXRMb2FkKCkKICNlbmRpZgogCiAjaWYgSEFW
RShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICBzZXRVc2VEYXJrQXBwZWFyYW5jZU92ZXJyaWRl
KFdURjo6bnVsbG9wdCk7CisgICAgc2V0VXNlRGFya0FwcGVhcmFuY2VPdmVycmlkZShzdGQ6Om51
bGxvcHQpOwogI2VuZGlmCiAKICAgICByZXNldFNlZW5QbHVnaW5zKCk7CkBAIC0xODU1LDcgKzE4
NTUsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2VkKCkKIAogICAg
IG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0ID0gZmFsc2U7CiAgICAgbV91c2VyU3R5bGVTaGVldCA9
IFN0cmluZygpOwotICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0gV1RGOjpu
dWxsb3B0OworICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gRGF0YSBVUkxzIHdpdGggYmFzZTY0LWVuY29kZWQgVVRGLTggc3R5bGUg
c2hlZXRzIGFyZSBjb21tb24uIFdlIGNhbiBwcm9jZXNzIHRoZW0KICAgICAvLyBzeW5jaHJvbm91
c2x5IGFuZCBhdm9pZCB1c2luZyBhIGxvYWRlci4gCkBAIC0yMzkzLDcgKzIzOTMsNyBAQCB2b2lk
IFBhZ2U6OnNldElzVmlzaWJsZUludGVybmFsKGJvb2wgaXNWaXNpYmxlKQogCiAgICAgICAgIGlm
IChtX25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlKSB7CiAgICAgICAgICAgICBsb2dOYXZpZ2F0
aW9uKG1fbmF2aWdhdGlvblRvTG9nV2hlblZpc2libGUudmFsdWUoKSk7Ci0gICAgICAgICAgICBt
X25hdmlnYXRpb25Ub0xvZ1doZW5WaXNpYmxlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMjU3Niw3ICsyNTc2LDcgQEAgQ29sb3IgUGFnZTo6cGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yKCkgY29uc3QKIAogQ29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VUb3BDb2xvcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2FtcGxlZFBhZ2VUb3BDb2xvci52YWx1ZU9yKENvbG9y
KCkpOworICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29sb3IudmFsdWVfb3IoQ29sb3IoKSk7
CiB9CiAKIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoQ29s
b3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKQEAgLTI4ODEsNyArMjg4MSw3
IEBAIHZvaWQgUGFnZTo6bWFpbkZyYW1lTG9hZFN0YXJ0ZWQoY29uc3QgVVJMJiBkZXN0aW5hdGlv
blVSTCwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9uYXZpZ2F0aW9uVG9Mb2dXaGVuVmlzaWJsZSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX25hdmln
YXRpb25Ub0xvZ1doZW5WaXNpYmxlID0gc3RkOjpudWxsb3B0OwogICAgIGxvZ05hdmlnYXRpb24o
bmF2aWdhdGlvbik7CiB9CiAKQEAgLTMzMDMsNyArMzMwMyw3IEBAIHZvaWQgUGFnZTo6ZGlkQ2hh
bmdlTWFpbkRvY3VtZW50KCkKICAgICBtX3BvaW50ZXJDYXB0dXJlQ29udHJvbGxlci0+cmVzZXQo
KTsKIAogICAgIGlmIChtX3NhbXBsZWRQYWdlVG9wQ29sb3IpIHsKLSAgICAgICAgbV9zYW1wbGVk
UGFnZVRvcENvbG9yID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3NhbXBsZWRQYWdlVG9wQ29s
b3IgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNocm9tZSgpLmNsaWVudCgpLnNhbXBsZWRQYWdl
VG9wQ29sb3JDaGFuZ2VkKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9y
U2FtcGxlci5jcHAKaW5kZXggMWIyMjhjNjY2MDQxOTAxNmE3MDQ1MjRhYjQ3OWM0OTdiMDZmNmRh
ZS4uMWU1MDlhYTQwM2JkZWU1NmZjMzQ4YjcxZDI4OGE4ODk2MGVkYjJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCkBAIC05NywxNiArOTcsMTYgQEAgc3RhdGlj
IE9wdGlvbmFsPExhYjxmbG9hdD4+IHNhbXBsZUNvbG9yKERvY3VtZW50JiBkb2N1bWVudCwgSW50
UG9pbnQmJiBsb2NhdGlvbikKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIy
NTE2Nz4gKFNhbXBsZWQgUGFnZSBUb3AgQ29sb3I6IGhvb2sgaW50byBwYWludGluZyBsb2dpYyBp
bnN0ZWFkIG9mIHRha2luZyBzbmFwc2hvdHMpCiAKICAgICBpZiAoIWlzVmFsaWRTYW1wbGVMb2Nh
dGlvbihkb2N1bWVudCwgbG9jYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKGRvY3VtZW50LnZpZXco
KSk7CiAgICAgYXV0byBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KGRvY3VtZW50LnZpZXco
KS0+ZnJhbWUoKSwgSW50UmVjdChsb2NhdGlvbiwgSW50U2l6ZSgxLCAxKSksIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcgfCBTbmFwc2hvdE9wdGlvbnNQYWludEV2
ZXJ5dGhpbmdFeGNsdWRpbmdTZWxlY3Rpb24pOwogICAgIGlmICghc25hcHNob3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNpemUo
KSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKHBpeGVsQnVmZmVy
LT5kYXRhKCkubGVuZ3RoKCkgPj0gNCk7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgTGFi
PGZsb2F0PiBhdmVyYWdlQ29sb3IoTGFiPGZsb2F0PiBjb2xvcnNbXSwgc2l6ZV90IGNvdW50KQog
CiBPcHRpb25hbDxDb2xvcj4gUGFnZUNvbG9yU2FtcGxlcjo6c2FtcGxlVG9wKFBhZ2UmIHBhZ2Up
CiB7Ci0gICAgLy8gSWYgYFdURjo6bnVsbG9wdGAgaXMgcmV0dXJuZWQgdGhlbiB0aGF0IG1lYW5z
IHRoYXQgbm8gc2FtcGxlcyB3ZXJlIHRha2VuIChpLmUuIHRoZSBgUGFnZWAgaXMgbm90IHJlYWR5
IHlldCkuCisgICAgLy8gSWYgYHN0ZDo6bnVsbG9wdGAgaXMgcmV0dXJuZWQgdGhlbiB0aGF0IG1l
YW5zIHRoYXQgbm8gc2FtcGxlcyB3ZXJlIHRha2VuIChpLmUuIHRoZSBgUGFnZWAgaXMgbm90IHJl
YWR5IHlldCkuCiAgICAgLy8gSWYgYW4gaW52YWxpZCBgQ29sb3JgIGlzIHJldHVybmVkIHRoZW4g
dGhhdCBtZWFucyB0aGF0IHNhbXBsZXMgV2VyZSB0YWtlbiBidXQgdGhleSB3ZXJlIHRvbyBkaWZm
ZXJlbnQuCiAKICAgICBhdXRvIG1heERpZmZlcmVuY2UgPSBwYWdlLnNldHRpbmdzKCkuc2FtcGxl
ZFBhZ2VUb3BDb2xvck1heERpZmZlcmVuY2UoKTsKQEAgLTE1MCwxOSArMTUwLDE5IEBAIE9wdGlv
bmFsPENvbG9yPiBQYWdlQ29sb3JTYW1wbGVyOjpzYW1wbGVUb3AoUGFnZSYgcGFnZSkKIAogICAg
IGF1dG8gbWFpbkRvY3VtZW50ID0gbWFrZVJlZlB0cihwYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpOwogICAgIGlmICghbWFpbkRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBmcmFtZVZpZXcgPSBt
YWtlUmVmUHRyKHBhZ2UubWFpbkZyYW1lKCkudmlldygpKTsKICAgICBpZiAoIWZyYW1lVmlldykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIERvbid0IHRha2Ugc2FtcGxlcyBpZiB0aGUgbGF5ZXIgdHJlZSBpcyBzdGls
bCBmcm96ZW4uCiAgICAgaWYgKGZyYW1lVmlldy0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8v
IERvbid0IGF0dGVtcHQgdG8gaGl0IHRlc3Qgb3Igc2FtcGxlIGlmIHdlIGRvbid0IGhhdmUgYW55
IGNvbnRlbnQgeWV0LgogICAgIGlmICghZnJhbWVWaWV3LT5pc1Zpc3VhbGx5Tm9uRW1wdHkoKSB8
fCAhZnJhbWVWaWV3LT5oYXNDb250ZW50ZnVsRGVzY2VuZGFudHMoKSB8fCAhQ29udGVudGZ1bFBh
aW50Q2hlY2tlcjo6cXVhbGlmaWVzRm9yQ29udGVudGZ1bFBhaW50KCpmcmFtZVZpZXcpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gRGVjcmVhc2UgdGhlIHdpZHRoIGJ5IG9uZSBwaXhlbCBzbyB0aGF0IHRoZSBsYXN0
IHNhbXBsZSBpcyB3aXRoaW4gYm91bmRzIGFuZCBub3Qgb2ZmLWJ5LW9uZS4KICAgICBhdXRvIGZy
YW1lV2lkdGggPSBmcmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSAtIDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCmluZGV4IDQ3MzdjZGFhODUwNTc5NWJkY2QzZGZl
MTY4MmQ3OTNkYThlNDZlYjkuLjNjMmFjODNmZWZmMzI4NGNjYjI2ZmZjYzI3ZGQxNmU5YTQwZDEz
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0zMDMs
NyArMzAzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gc25hcHNob3RDYW52YXMoSFRNTENh
bnZhc0VsZW1lbnQmIGNhbnZhc0VsZW1lbnQsIENhbnZhc1IKICAgICBpZiAoIXJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5z
dHJpbmc7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1
bWVudHMpCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVu
c2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAg
ICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gV2ViQ29yZTo6c25hcHNob3ROb2RlKG1fcGFn
ZS5tYWluRnJhbWUoKSwgKm5vZGUpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwc2hv
dCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBzbmFwc2hvdC0+dG9EYXRhVVJM
KCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IHNuYXBzaG90LT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgc3RkOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGlt
YWdlRGF0YSA9IEpTSW1hZ2VEYXRhOjp0b1dyYXBwZWQodm0sIHBvc3NpYmxlVGFyZ2V0KSkgewpA
QCAtMzcxLDE0ICszNzEsMTQgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWYKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50
UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIHNvdXJjZVNpemUpOwogICAgICAgICAgICAgICAg
ICAgICBpbWFnZUJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigp
LCBzb3VyY2VSZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRp
b246Olllcyk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9E
YXRhVVJMKCJpbWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChhdXRvKiBpbWFnZUJpdG1hcCA9IEpTSW1hZ2VCaXRtYXA6OnRvV3JhcHBlZCh2bSwgcG9zc2li
bGVUYXJnZXQpKSB7CiAgICAgICAgICAgICB0YXJnZXQgPSBwb3NzaWJsZVRhcmdldDsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5k
cygpKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQml0
bWFwLT5idWZmZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRp
b246Olllcyk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9E
YXRhVVJMKCJpbWFnZS9wbmciX3MsIHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uOjpZ
ZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGNvbnRleHQgPSBj
YW52YXNSZW5kZXJpbmdDb250ZXh0KHZtLCBwb3NzaWJsZVRhcmdldCkpIHsKICAgICAgICAgICAg
IGF1dG8mIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhc0Jhc2UoKTsKQEAgLTQwNSw3ICs0MDUsNyBA
QCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgLy8gSWYgbm8gdGFyZ2V0IGlz
IHByb3ZpZGVkLCBjYXB0dXJlIGFuIGltYWdlIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgICAgICAg
IEludFJlY3QgaW1hZ2VSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fcGFnZS5tYWluRnJhbWUoKS52
aWV3KCktPnNpemVGb3JWaXNpYmxlQ29udGVudCgpKTsKICAgICAgICAgICAgIGlmIChhdXRvIHNu
YXBzaG90ID0gV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3QobV9wYWdlLm1haW5GcmFtZSgpLCBp
bWFnZVJlY3QsIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gc25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6Om51
bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKKyAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gc25hcHNob3QtPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBzdGQ6Om51bGxvcHQsIFByZXNl
cnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkYXRhVVJMLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlUGFzdGVib2Fy
ZENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgK
aW5kZXggYTEwYzYzNmVmZGYyMzI3MTRlODNkMmNmZGNiMGFmNjRhYjY0YWVmNy4uNGViNGJkNjJh
MGEzNjk1YzY2YzU1MzAxMWUyYTEwNmQxZDcxOGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBQYXN0ZWJv
YXJkQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
UGFnZVBhc3RlYm9hcmRDb250ZXh0KE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJRCA9
IFdURjo6bnVsbG9wdCkKKyAgICBQYWdlUGFzdGVib2FyZENvbnRleHQoT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+JiYgcGFnZUlEID0gc3RkOjpudWxsb3B0KQogICAgICAgICA6IFBhc3RlYm9hcmRD
b250ZXh0KCkKICAgICAgICAgLCBtX3BhZ2VJRChXVEZNb3ZlKHBhZ2VJRCkpCiAgICAgewpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB+UGFnZVBhc3RlYm9hcmRDb250ZXh0KCkgeyB9
CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiBjcmVhdGUo
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlEID0gV1RGOjpudWxsb3B0KQorICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+IGNyZWF0ZShPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4mJiBwYWdlSUQgPSBzdGQ6Om51bGxvcHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxQYWdlUGFzdGVib2FyZENvbnRleHQ+KFdURk1vdmUocGFnZUlEKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5jcHAKaW5kZXggZGI1
ODZmMzJmYjNiMDU2YTM0YWUwMWEwOWFlOGE2ZDI2ZmE5MzgzYS4uZGU3ODY3NmRiODlhODY0Mzhk
YzYzNjgyMjdlYjc5YWY2MmJkZTNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
RW50cnkuY3BwCkBAIC02NSw3ICs2NSw3IEBAIE9wdGlvbmFsPFBlcmZvcm1hbmNlRW50cnk6OlR5
cGU+IFBlcmZvcm1hbmNlRW50cnk6OnBhcnNlRW50cnlUeXBlU3RyaW5nKGNvbnN0IFN0CiAgICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8VHlwZT4oVHlwZTo6UGFpbnQpOwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZUxvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUxvZ2dp
bmcuY3BwCmluZGV4IGM2ODQ5NDVhODBlMDQwYTY3ZjQxMzAyODc0MjA2NzE4MTc0Y2RmZDAuLjFk
NWVjZWJhNTdjZTRlMjZhNDNmNDBlMGJjZTc2ZTNiZmI5MDQ3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFBl
cmZvcm1hbmNlTG9nZ2luZzo6ZGlkUmVhY2hQb2ludE9mSW50ZXJlc3QoUG9pbnRPZkludGVyZXN0
IHBvaSkKIAogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgUGVyZm9ybWFuY2VMb2dnaW5nOjpn
ZXRQbGF0Zm9ybU1lbW9yeVVzYWdlU3RhdGlzdGljcyhIYXNoTWFwPGNvbnN0IGNoYXIqLCBzaXpl
X3Q+JikgeyB9Ci1PcHRpb25hbDx1aW50NjRfdD4gUGVyZm9ybWFuY2VMb2dnaW5nOjpwaHlzaWNh
bEZvb3RwcmludCgpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorT3B0aW9uYWw8dWludDY0X3Q+
IFBlcmZvcm1hbmNlTG9nZ2luZzo6cGh5c2ljYWxGb290cHJpbnQoKSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KICNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTW9u
aXRvci5jcHAKaW5kZXggODk4NjIyNGNjM2U5OWEyODkxNTNjNTJkNjk2NGEwNzdjOGNlOTExMS4u
MGE2ZDIwMzk5YTc2MjJlZmQyZTk2NWE0ODM0NjU2OWE4NDMxZmQ2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcApAQCAtODMsNyArODMsNyBAQCBQZXJmb3Jt
YW5jZU1vbml0b3I6OlBlcmZvcm1hbmNlTW9uaXRvcihQYWdlJiBwYWdlKQogCiB2b2lkIFBlcmZv
cm1hbmNlTW9uaXRvcjo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogewotICAgIG1fcG9zdExv
YWRDUFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpu
dWxsb3B0OwogICAgIG1fcG9zdFBhZ2VMb2FkQ1BVVXNhZ2VUaW1lci5zdG9wKCk7CiAgICAgbV9w
b3N0UGFnZUxvYWRNZW1vcnlVc2FnZVRpbWVyLnN0b3AoKTsKIH0KQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBQZXJmb3JtYW5jZU1vbml0b3I6OmRpZEZpbmlzaExvYWQoKQogewogICAgIC8vIE9ubHkg
ZG8gcG9zdC1sb2FkIENQVSB1c2FnZSBtZWFzdXJlbWVudCBpZiB0aGVyZSBpcyBhIHNpbmdsZSBQ
YWdlIGluIHRoZSBwcm9jZXNzIGluIG9yZGVyIHRvIHJlZHVjZSBub2lzZS4KICAgICBpZiAobV9w
YWdlLnNldHRpbmdzKCkuaXNQb3N0TG9hZENQVVVzYWdlTWVhc3VyZW1lbnRFbmFibGVkKCkgJiYg
bV9wYWdlLmlzT25seU5vblV0aWxpdHlQYWdlKCkpIHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRp
bWUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxs
b3B0OwogICAgICAgICBtX3Bvc3RQYWdlTG9hZENQVVVzYWdlVGltZXIuc3RhcnRPbmVTaG90KGNw
dVVzYWdlTWVhc3VyZW1lbnREZWxheSk7CiAgICAgfQogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBQZXJmb3JtYW5jZU1vbml0b3I6OmFjdGl2aXR5U3RhdGVDaGFuZ2VkKE9wdGlvblNldDxBY3Rp
dml0eVN0YXRlOjpGbGFnPiBvbGQKIAogICAgIC8vIE1lYXN1cmUgQ1BVIHVzYWdlIG9mIHBhZ2Vz
IHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHZpc2libGUuCiAgICAgaWYgKG1fcGFnZS5zZXR0aW5n
cygpLmlzUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZU1lYXN1cmVtZW50RW5hYmxlZCgpICYmIHZp
c2liaWxpdHlDaGFuZ2VkKSB7Ci0gICAgICAgIG1fcG9zdEJhY2tncm91bmRpbmdDUFVUaW1lID0g
V1RGOjpudWxsb3B0OworICAgICAgICBtX3Bvc3RCYWNrZ3JvdW5kaW5nQ1BVVGltZSA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgaWYgKG5ld1N0YXRlICYgQWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KQogICAgICAgICAgICAgbV9wb3N0QmFja2dyb3VuZGluZ0NQVVVzYWdlVGltZXIuc3RvcCgpOwog
ICAgICAgICBlbHNlIGlmIChtX3BhZ2UuaXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSkKQEAgLTE2OSw3
ICsxNjksNyBAQCBzdGF0aWMgdm9pZCByZXBvcnRQYWdlT3ZlclBvc3RMb2FkUmVzb3VyY2VUaHJl
c2hvbGQoUGFnZSYgcGFnZSwgUmVwb3J0aW5nUmVhc29uCiB2b2lkIFBlcmZvcm1hbmNlTW9uaXRv
cjo6bWVhc3VyZVBvc3RMb2FkQ1BVVXNhZ2UoKQogewogICAgIGlmICghbV9wYWdlLmlzT25seU5v
blV0aWxpdHlQYWdlKCkpIHsKLSAgICAgICAgbV9wb3N0TG9hZENQVVRpbWUgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fcG9zdExvYWRDUFVUaW1lID0gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBQZXJmb3JtYW5jZU1vbml0
b3I6Om1lYXN1cmVQb3N0QmFja2dyb3VuZGluZ01lbW9yeVVzYWdlKCkKIHZvaWQgUGVyZm9ybWFu
Y2VNb25pdG9yOjptZWFzdXJlUG9zdEJhY2tncm91bmRpbmdDUFVVc2FnZSgpCiB7CiAgICAgaWYg
KCFtX3BhZ2UuaXNPbmx5Tm9uVXRpbGl0eVBhZ2UoKSkgewotICAgICAgICBtX3Bvc3RCYWNrZ3Jv
dW5kaW5nQ1BVVGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wb3N0QmFja2dyb3VuZGlu
Z0NQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
MSw3ICsyNzEsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckNQVVNhbXBs
aW5nQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BVUwogdm9pZCBQZXJmb3JtYW5jZU1v
bml0b3I6Om1lYXN1cmVDUFVVc2FnZUluQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlRm9yQ1BV
U2FtcGxpbmcgYWN0aXZpdHlTdGF0ZSkKIHsKICAgICBpZiAoIW1fcGFnZS5pc09ubHlOb25VdGls
aXR5UGFnZSgpKSB7Ci0gICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIG1fcGVyQWN0aXZpdHlTdGF0ZUNQVVRpbWUgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFBlcmZv
cm1hbmNlTW9uaXRvcjo6bWVhc3VyZUNQVVVzYWdlSW5BY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3Rh
dGVGb3JDUFVTYW1wbAogCiAgICAgT3B0aW9uYWw8Q1BVVGltZT4gY3B1VGltZSA9IENQVVRpbWU6
OmdldCgpOwogICAgIGlmICghY3B1VGltZSkgewotICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVD
UFVUaW1lID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3BlckFjdGl2aXR5U3RhdGVDUFVUaW1l
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaAppbmRleCA3M2MwZjdh
ZGVjYzBjNDYxZTZiYzg3ODRiOGIzMmE1ZDFhY2NjMTdmLi5iMGU2MjI2NTM4MWJmYzNiZTI0OTE1
ZjU0MzQyMjFmYWJiMTVjYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcoTW9ub3RvbmljVGltZSB0aW1lT3Jp
Z2luLCBDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IExvYWRUaW1pbmcmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmLCBjb25zdCBEb2N1bWVudFRpbWluZyYsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiwg
V2ViQ29yZTo6TmF2aWdhdGlvblR5cGUpOwogCi0gICAgZG91YmxlIG1pbGxpc2Vjb25kc1NpbmNl
T3JpZ2luKE1vbm90b25pY1RpbWUsIE9wdGlvbmFsPE1vbm90b25pY1RpbWU+IHRpbWVPcmlnaW4g
PSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGRvdWJsZSBtaWxsaXNlY29uZHNTaW5jZU9yaWdp
bihNb25vdG9uaWNUaW1lLCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiB0aW1lT3JpZ2luID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKICAgICBib29sIHNhbWVPcmlnaW5DaGVja0ZhaWxzKCkgY29uc3Q7
CiAKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50VGltaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKaW5kZXggZTlkMzBjN2MwNjYxODE3
N2NiYWIwNGUzNWI3NTczNWRjMjkxYWQxZi4uNmIyYmMxYmRiMzhiZTA1NDNmMjBkNTFkMjAwOTQ0
YjNmNTQ3ZjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0b3VjaEV2ZW50c0VuYWJsZWQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3RvdWNoRXZlbnRzRW5hYmxlZC52YWx1ZU9yKHNjcmVlbkhh
c1RvdWNoRGV2aWNlKCkpOworICAgIHJldHVybiBtX3RvdWNoRXZlbnRzRW5hYmxlZC52YWx1ZV9v
cihzY3JlZW5IYXNUb3VjaERldmljZSgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IGY0NDlmYzcwZGY1Nzg4ZWZlZDBjOGVlNGI2M2UyYTU3
OTJhZjYwOWQuLjZiNjk2ZDRjMGRiMzQ4YjA4NzFjYWEzMTlmOWU5OGQ5NmFjNmFkMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgU2Vj
dXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogICAgIG1fZG9tYWlu
ID0gbV9kYXRhLmhvc3Q7CiAKICAgICBpZiAobV9kYXRhLnBvcnQgJiYgV1RGOjppc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wobV9kYXRhLnBvcnQudmFsdWUoKSwgbV9kYXRhLnByb3RvY29sKSkKLSAg
ICAgICAgbV9kYXRhLnBvcnQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZGF0YS5wb3J0ID0g
c3RkOjpudWxsb3B0OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgb25seSBsb2NhbCBTZWN1cml0eU9y
aWdpbnMgY2FuIGxvYWQgbG9jYWwgcmVzb3VyY2VzLgogICAgIG1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzID0gaXNMb2NhbCgpOwpAQCAtMTk1LDcgKzE5NSw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKCkKLSAgICA6IG1fZGF0YSB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIFdU
Rjo6bnVsbG9wdCB9CisgICAgOiBtX2RhdGEgeyBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygp
LCBzdGQ6Om51bGxvcHQgfQogICAgICwgbV9kb21haW4geyBlbXB0eVN0cmluZygpIH0KICAgICAs
IG1faXNVbmlxdWUgeyB0cnVlIH0KICAgICAsIG1faXNQb3RlbnRpYWxseVRydXN0d29ydGh5IHsg
ZmFsc2UgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4
IGVlZDNhMzIwZjMyNzk3NjdmM2M3ZDk3ZWZhMjQ1N2MzM2I1YzVlZmEuLmEwMGRhYzQ3OTBlZTJl
OTU1YWUyZmUyY2ZjNjVmMGE0MGRhODM2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShwcm90b2NvbCwgImZpbGUiKSkKICAgICAgICAgcmV0dXJuICJmaWxlX18wIl9zOwog
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcocHJvdG9jb2wsIHNlcGFyYXRvckNoYXJhY3RlciwgRmls
ZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaG9zdCksIHNlcGFyYXRvckNoYXJhY3RlciwgcG9y
dC52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2VwYXJhdG9y
Q2hhcmFjdGVyLCBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2VwYXJhdG9y
Q2hhcmFjdGVyLCBwb3J0LnZhbHVlX29yKDApKTsKIH0KIAogT3B0aW9uYWw8U2VjdXJpdHlPcmln
aW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCkBAIC04NiwxNyArODYsMTcgQEAgT3B0aW9uYWw8
U2VjdXJpdHlPcmlnaW5EYXRhPiBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50
aWZpZXIoY29uc3QgU3QKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRv
cgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIHNlY29uZCBzZXBhcmF0b3IKICAgICBzaXplX3Qg
c2VwYXJhdG9yMiA9IGRhdGFiYXNlSWRlbnRpZmllci5yZXZlcnNlRmluZChzZXBhcmF0b3JDaGFy
YWN0ZXIpOwogICAgIGlmIChzZXBhcmF0b3IyID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIC8v
IEVuc3VyZSB0aGVyZSB3ZXJlIGF0IGxlYXN0IDIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuIFNvbWUg
aG9zdG5hbWVzIG9uIGludHJhbmV0cyBoYXZlCiAgICAgLy8gdW5kZXJzY29yZXMgaW4gdGhlbSwg
c28gd2UnbGwgYXNzdW1lIHRoYXQgYW55IGFkZGl0aW9uYWwgdW5kZXJzY29yZXMgYXJlIHBhcnQg
b2YgdGhlIGhvc3QuCiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2VwYXJhdG9yMikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVy
IG9yIGRvZXNuJ3QgZXhpc3QuCiAgICAgYXV0byBwb3J0TGVuZ3RoID0gZGF0YWJhc2VJZGVudGlm
aWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDE7CkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBPcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcihjb25zdCBTdAogCiAgICAgLy8gTm90aGluZyBhZnRlciB0aGUgY29sb24gaXMg
ZmluZS4gRmFpbHVyZSB0byBwYXJzZSBhZnRlciB0aGUgY29sb24gaXMgbm90LgogICAgIGlmICgh
cG9ydCAmJiBwb3J0TGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVHJlYXQgcG9ydCAwIGxpa2UgdGhlcmUg
aXMgd2FzIG5vIHBvcnQgc3BlY2lmaWVkLgogICAgIGlmIChwb3J0ICYmICEqcG9ydCkKLSAgICAg
ICAgcG9ydCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvcjEpOwogICAgIGF1dG8gaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2Vw
YXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCAwZjY2MjYyYTYwY2ZiNzk0NTEyZjlmNWVm
ZjI4YTcwY2VmNDJlNmY5Li45MDc5YzViNTUyOGIwZWJiOTRiODBkNmZlODUzNzE3YjY0MTIwZDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAgLTc2LDcgKzc2
LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YSB7CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHByb3RvY29sLmlzTnVsbCgpICYmIGhvc3QuaXNO
dWxsKCkgJiYgcG9ydCA9PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBwcm90b2NvbC5p
c051bGwoKSAmJiBob3N0LmlzTnVsbCgpICYmIHBvcnQgPT0gc3RkOjpudWxsb3B0OwogICAgIH0K
ICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKQEAgLTEwOCwy
MSArMTA4LDIxIEBAIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5E
YXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IHByb3Rv
Y29sOwogICAgIGRlY29kZXIgPj4gcHJvdG9jb2w7CiAgICAgaWYgKCFwcm90b2NvbCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBPcHRpb25hbDxTdHJpbmc+IGhvc3Q7CiAgICAgZGVjb2RlciA+PiBob3N0OwogICAg
IGlmICghaG9zdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50MTZfdD4+IHBv
cnQ7CiAgICAgZGVjb2RlciA+PiBwb3J0OwogICAgIGlmICghcG9ydCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBT
ZWN1cml0eU9yaWdpbkRhdGEgZGF0YSB7IFdURk1vdmUoKnByb3RvY29sKSwgV1RGTW92ZSgqaG9z
dCksIFdURk1vdmUoKnBvcnQpIH07CiAgICAgaWYgKGRhdGEuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpAQCAtMTM5LDcgKzEzOSw3IEBAIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGFIYXNoIHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNd
ID0gewogICAgICAgICAgICAgZGF0YS5wcm90b2NvbC5pbXBsKCkgPyBkYXRhLnByb3RvY29sLmlt
cGwoKS0+aGFzaCgpIDogMCwKICAgICAgICAgICAgIGRhdGEuaG9zdC5pbXBsKCkgPyBkYXRhLmhv
c3QuaW1wbCgpLT5oYXNoKCkgOiAwLAotICAgICAgICAgICAgZGF0YS5wb3J0LnZhbHVlT3IoMCkK
KyAgICAgICAgICAgIGRhdGEucG9ydC52YWx1ZV9vcigwKQogICAgICAgICB9OwogICAgICAgICBy
ZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPihoYXNoQ29k
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4
IDRlMzIwOTdmZDkxZmE3MzAyNjljOTUxYzQ2MGFhMzAwZGNhOTcyODYuLjlmYTgyMTY4MzEzMjlh
M2EwZmQ5YWJkMjExYmFjZGYzODQ4MDdjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkhhc2guaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNo
IHsKICAgICAgICAgdW5zaWduZWQgaGFzaENvZGVzWzNdID0gewogICAgICAgICAgICAgb3JpZ2lu
LT5wcm90b2NvbCgpLmltcGwoKSA/IG9yaWdpbi0+cHJvdG9jb2woKS5pbXBsKCktPmhhc2goKSA6
IDAsCiAgICAgICAgICAgICBvcmlnaW4tPmhvc3QoKS5pbXBsKCkgPyBvcmlnaW4tPmhvc3QoKS5p
bXBsKCktPmhhc2goKSA6IDAsCi0gICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDAp
CisgICAgICAgICAgICBvcmlnaW4tPnBvcnQoKS52YWx1ZV9vcigwKQogICAgICAgICB9OwogICAg
ICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNoQ29kZXMpPiho
YXNoQ29kZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNs
YXRpb25Db250ZXh0TWVudUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVHJhbnNsYXRpb25D
b250ZXh0TWVudUluZm8uaAppbmRleCBjNTRhNGUxNDcxZWYzMjE5Y2NiYzY1YzBkMWQwMGNiMzc2
ZGYwOWM4Li4xMjFhZmFhODNlNTVjMDMyM2ZjYjI0MWQ2YzM3ZTRjNDhhZjQyNGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RyYW5zbGF0aW9uQ29udGV4dE1lbnVJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9UcmFuc2xhdGlvbkNvbnRleHRNZW51SW5mby5oCkBAIC01
OSwyMiArNTksMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8VHJhbnNsYXRp
b25Db250ZXh0TWVudUluZm8+IFRyYW5zbGF0aW9uQ29udGV4dE0KICAgICBPcHRpb25hbDxTdHJp
bmc+IHRleHQ7CiAgICAgZGVjb2RlciA+PiB0ZXh0OwogICAgIGlmICghdGV4dCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEludFJlY3Q+IHNlbGVjdGlvbkJvdW5kc0luUm9vdFZpZXc7CiAgICAgZGVjb2Rl
ciA+PiBzZWxlY3Rpb25Cb3VuZHNJblJvb3RWaWV3OwogICAgIGlmICghc2VsZWN0aW9uQm91bmRz
SW5Sb290VmlldykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEludFBvaW50PiBsb2NhdGlvbkluUm9vdFZp
ZXc7CiAgICAgZGVjb2RlciA+PiBsb2NhdGlvbkluUm9vdFZpZXc7CiAgICAgaWYgKCFsb2NhdGlv
bkluUm9vdFZpZXcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxUcmFuc2xhdGlvbkNvbnRleHRNZW51TW9k
ZT4gbW9kZTsKICAgICBkZWNvZGVyID4+IG1vZGU7CiAgICAgaWYgKCFtb2RlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHt7IFdURk1vdmUoKnRleHQpLCBXVEZNb3ZlKCpzZWxlY3Rpb25Cb3VuZHNJblJvb3RW
aWV3KSwgV1RGTW92ZSgqbG9jYXRpb25JblJvb3RWaWV3KSwgKm1vZGUgfX07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlclNjcmlwdC5oCmluZGV4IDNmMmU2NTYxNTZkZTRjYWIzNzJmYmJkNjczZWFlOGRmNjZk
ZGY5MTAuLjhjZDljMzBjNmI2YTY0ZWU2NmRmOTkzM2ViMzc4NTg4YzQ5OGEyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlclNjcmlwdC5oCkBAIC05MSwzNyArOTEsMzcgQEAgT3B0aW9uYWw8VXNlclNjcmlw
dD4gVXNlclNjcmlwdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBzb3VyY2U7CiAgICAgZGVjb2RlciA+PiBzb3VyY2U7CiAgICAgaWYgKCFzb3VyY2UpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgT3B0aW9uYWw8VVJMPiB1cmw7CiAgICAgZGVjb2RlciA+PiB1cmw7CiAgICAg
aWYgKCF1cmwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IGFsbG93bGlz
dDsKICAgICBkZWNvZGVyID4+IGFsbG93bGlzdDsKICAgICBpZiAoIWFsbG93bGlzdCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gYmxvY2tsaXN0OwogICAgIGRlY29kZXIg
Pj4gYmxvY2tsaXN0OwogICAgIGlmICghYmxvY2tsaXN0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFs
PFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lPiBpbmplY3Rpb25UaW1lOwogICAgIGRlY29kZXIgPj4g
aW5qZWN0aW9uVGltZTsKICAgICBpZiAoIWluamVjdGlvblRpbWUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcz4gaW5qZWN0ZWRGcmFtZXM7CiAgICAgZGVj
b2RlciA+PiBpbmplY3RlZEZyYW1lczsKICAgICBpZiAoIWluamVjdGVkRnJhbWVzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIE9wdGlvbmFsPFdhaXRGb3JOb3RpZmljYXRpb25CZWZvcmVJbmplY3Rpbmc+IHdhaXRG
b3JOb3RpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB3YWl0Rm9yTm90aWZpY2F0aW9uOwogICAg
IGlmICghd2FpdEZvck5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sKICAgICAg
ICAgV1RGTW92ZSgqc291cmNlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRl
eCBhOGM0MGQ5ZTU2Yzk5NjYxYzNmOTlkODhiMzA0NzBmODNiZjczZGM5Li5jZjZhMWM0MDNmMmYw
YjZjNjlmY2YzYjZiZWU3MmNkMWNlNjg1MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVT
aGVldC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVXNl
clN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
U3RyaW5nPiYmIGFsbG93bGlzdCwgVmVjdG9yPFN0cmluZz4mJiBibG9ja2xpc3QsIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsLCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxsb3B0KQorICAgIFVzZXJT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFN0
cmluZz4mJiBhbGxvd2xpc3QsIFZlY3RvcjxTdHJpbmc+JiYgYmxvY2tsaXN0LCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgOiBt
X3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fYWxsb3ds
aXN0KFdURk1vdmUoYWxsb3dsaXN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmNwcAppbmRleCBjZTcxYzYzODY4ZjI2Mjc5Yzg2ZWNmZGNjNmExZDI4N2Y4
OGY5MmE3Li4xNGQwYzVmNWE1MTIwOTk3MzVkODUwODg3NTExYWVmZjUyZTY5ZjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBAIC0xMTYsOCAr
MTE2LDggQEAgYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNldENvbnRlbnRzU2l6ZShjb25z
dCBJbnRTaXplJiBjb250ZW50U2l6ZSkKIAogYm9vbCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OnNl
dFZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgdmlld0xheW91dFNpemUsIE9wdGlvbmFs
PGRvdWJsZT4mJiBzY2FsZUZhY3RvciwgT3B0aW9uYWw8ZG91YmxlPiYmIG1pbmltdW1FZmZlY3Rp
dmVEZXZpY2VXaWR0aCkKIHsKLSAgICBkb3VibGUgbmV3U2NhbGVGYWN0b3IgPSBzY2FsZUZhY3Rv
ci52YWx1ZU9yKG1fbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKTsKLSAgICBkb3VibGUgbmV3RWZmZWN0
aXZlV2lkdGggPSBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgudmFsdWVPcihtX21pbmltdW1F
ZmZlY3RpdmVEZXZpY2VXaWR0aCk7CisgICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0gc2NhbGVG
YWN0b3IudmFsdWVfb3IobV9sYXlvdXRTaXplU2NhbGVGYWN0b3IpOworICAgIGRvdWJsZSBuZXdF
ZmZlY3RpdmVXaWR0aCA9IG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aC52YWx1ZV9vcihtX21p
bmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CiAgICAgaWYgKG1fdmlld0xheW91dFNpemUgPT0g
dmlld0xheW91dFNpemUgJiYgbV9sYXlvdXRTaXplU2NhbGVGYWN0b3IgPT0gbmV3U2NhbGVGYWN0
b3IgJiYgbmV3RWZmZWN0aXZlV2lkdGggPT0gbV9taW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRD
b25maWd1cmF0aW9uLmgKaW5kZXggNmRmNDBlYmE1MjQxNGY1ZWZlNTc3ZTkwNzFhYmNlYmY1NGI0
MzM0Yy4uYzQ0Njc5M2Y4ZDdjMTcyNDQ0NmVmODljN2QwYjUyZDk4NmRmYzUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3TGF5b3V0U2l6ZTsgfQogCiAgICAgY29uc3QgRmxvYXRTaXplJiBtaW5pbXVt
TGF5b3V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bUxheW91dFNpemU7IH0KLSAgICBX
RUJDT1JFX0VYUE9SVCBib29sIHNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIE9w
dGlvbmFsPGRvdWJsZT4mJiBzY2FsZUZhY3RvciA9IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91
YmxlPiYmIGVmZmVjdGl2ZVdpZHRoID0gV1RGOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIE9wdGlvbmFsPGRvdWJs
ZT4mJiBzY2FsZUZhY3RvciA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8ZG91YmxlPiYmIGVmZmVj
dGl2ZVdpZHRoID0gc3RkOjpudWxsb3B0KTsKIAogICAgIGNvbnN0IE9wdGlvblNldDxEaXNhYmxl
ZEFkYXB0YXRpb25zPiYgZGlzYWJsZWRBZGFwdGF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
YWJsZWRBZGFwdGF0aW9uczsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0RGlzYWJsZWRB
ZGFwdGF0aW9ucyhjb25zdCBPcHRpb25TZXQ8RGlzYWJsZWRBZGFwdGF0aW9ucz4mKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93RmVhdHVyZXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKaW5kZXggOGMwYTQyYzg3MzM1NTJmN2VlYWYz
ODU5NmVkZmYxYjViMmVlN2ViNS4uNTI5Zjk5NjQxMGZhY2FlNjE0ZDk4Y2FjMzJmNDMyOTI5MDgx
MDZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dGZWF0dXJlcy5jcHAKQEAgLTEzMyw3ICsx
MzMsNyBAQCBzdGF0aWMgdm9pZCBzZXRXaW5kb3dGZWF0dXJlKFdpbmRvd0ZlYXR1cmVzJiBmZWF0
dXJlcywgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZQogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJ5ZXMiKSkKICAgICAgICAg
bnVtZXJpY1ZhbHVlID0gMTsKICAgICBlbHNlCi0gICAgICAgIG51bWVyaWNWYWx1ZSA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4odmFsdWUpLnZhbHVlT3IoMCk7CisgICAg
ICAgIG51bWVyaWNWYWx1ZSA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4o
dmFsdWUpLnZhbHVlX29yKDApOwogCiAgICAgLy8gV2UgdHJlYXQga2V5IG9mICJyZXNpemFibGUi
IGhlcmUgYXMgYW4gYWRkaXRpb25hbCBmZWF0dXJlIHJhdGhlciB0aGFuIHNldHRpbmcgcmVzaXpl
YWJsZSB0byB0cnVlLgogICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIEZpcmVmb3gsIGJ1
dCBjb3VsZCBhbHNvIGJlIGhhbmRsZWQgYXQgYW5vdGhlciBsZXZlbC4KQEAgLTE4NSw4ICsxODUs
OCBAQCBXaW5kb3dGZWF0dXJlcyBwYXJzZURpYWxvZ0ZlYXR1cmVzKGNvbnN0IFN0cmluZyYgZGlh
bG9nRmVhdHVyZXNTdHJpbmcsIGNvbnN0IEZsbwogICAgIGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlz
aWJsZSA9IGZhbHNlOwogICAgIGZlYXR1cmVzLmRpYWxvZyA9IHRydWU7CiAKLSAgICBmbG9hdCB3
aWR0aCA9IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ3dpZHRoIiwgMTAwLCBzY3Jl
ZW5BdmFpbGFibGVSZWN0LndpZHRoKCkpLnZhbHVlT3IoNjIwKTsgLy8gZGVmYXVsdCBoZXJlIGNh
bWUgZnJvbSBmcmFtZSBzaXplIG9mIGRpYWxvZyBpbiBNYWNJRQotICAgIGZsb2F0IGhlaWdodCA9
IGZsb2F0RmVhdHVyZShmZWF0dXJlc01hcCwgImRpYWxvZ2hlaWdodCIsIDEwMCwgc2NyZWVuQXZh
aWxhYmxlUmVjdC5oZWlnaHQoKSkudmFsdWVPcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBm
cm9tIGZyYW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgd2lkdGggPSBmbG9h
dEZlYXR1cmUoZmVhdHVyZXNNYXAsICJkaWFsb2d3aWR0aCIsIDEwMCwgc2NyZWVuQXZhaWxhYmxl
UmVjdC53aWR0aCgpKS52YWx1ZV9vcig2MjApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZy
YW1lIHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCisgICAgZmxvYXQgaGVpZ2h0ID0gZmxvYXRGZWF0
dXJlKGZlYXR1cmVzTWFwLCAiZGlhbG9naGVpZ2h0IiwgMTAwLCBzY3JlZW5BdmFpbGFibGVSZWN0
LmhlaWdodCgpKS52YWx1ZV9vcig0NTApOyAvLyBkZWZhdWx0IGhlcmUgY2FtZSBmcm9tIGZyYW1l
IHNpemUgb2YgZGlhbG9nIGluIE1hY0lFCiAKICAgICBmZWF0dXJlcy53aWR0aCA9IHdpZHRoOwog
ICAgIGZlYXR1cmVzLmhlaWdodCA9IGhlaWdodDsKQEAgLTE5NCwxNiArMTk0LDE2IEBAIFdpbmRv
d0ZlYXR1cmVzIHBhcnNlRGlhbG9nRmVhdHVyZXMoY29uc3QgU3RyaW5nJiBkaWFsb2dGZWF0dXJl
c1N0cmluZywgY29uc3QgRmxvCiAgICAgZmVhdHVyZXMueCA9IGZsb2F0RmVhdHVyZShmZWF0dXJl
c01hcCwgImRpYWxvZ2xlZnQiLCBzY3JlZW5BdmFpbGFibGVSZWN0LngoKSwgc2NyZWVuQXZhaWxh
YmxlUmVjdC5tYXhYKCkgLSB3aWR0aCk7CiAgICAgZmVhdHVyZXMueSA9IGZsb2F0RmVhdHVyZShm
ZWF0dXJlc01hcCwgImRpYWxvZ3RvcCIsIHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpLCBzY3JlZW5B
dmFpbGFibGVSZWN0Lm1heFkoKSAtIGhlaWdodCk7CiAKLSAgICBpZiAoYm9vbEZlYXR1cmUoZmVh
dHVyZXNNYXAsICJjZW50ZXIiKS52YWx1ZU9yKHRydWUpKSB7CisgICAgaWYgKGJvb2xGZWF0dXJl
KGZlYXR1cmVzTWFwLCAiY2VudGVyIikudmFsdWVfb3IodHJ1ZSkpIHsKICAgICAgICAgaWYgKCFm
ZWF0dXJlcy54KQogICAgICAgICAgICAgZmVhdHVyZXMueCA9IHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eCgpICsgKHNjcmVlbkF2YWlsYWJsZVJlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDI7CiAgICAgICAg
IGlmICghZmVhdHVyZXMueSkKICAgICAgICAgICAgIGZlYXR1cmVzLnkgPSBzY3JlZW5BdmFpbGFi
bGVSZWN0LnkoKSArIChzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDI7
CiAgICAgfQogCi0gICAgZmVhdHVyZXMucmVzaXphYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJyZXNpemFibGUiKS52YWx1ZU9yKGZhbHNlKTsKLSAgICBmZWF0dXJlcy5zY3JvbGxiYXJz
VmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic2Nyb2xsIikudmFsdWVPcih0cnVl
KTsKLSAgICBmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlID0gYm9vbEZlYXR1cmUoZmVhdHVyZXNN
YXAsICJzdGF0dXMiKS52YWx1ZU9yKGZhbHNlKTsKKyAgICBmZWF0dXJlcy5yZXNpemFibGUgPSBi
b29sRmVhdHVyZShmZWF0dXJlc01hcCwgInJlc2l6YWJsZSIpLnZhbHVlX29yKGZhbHNlKTsKKyAg
ICBmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSA9IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAi
c2Nyb2xsIikudmFsdWVfb3IodHJ1ZSk7CisgICAgZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSA9
IGJvb2xGZWF0dXJlKGZlYXR1cmVzTWFwLCAic3RhdHVzIikudmFsdWVfb3IoZmFsc2UpOwogCiAg
ICAgcmV0dXJuIGZlYXR1cmVzOwogfQpAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBPcHRpb25h
bDxib29sPiBib29sRmVhdHVyZShjb25zdCBEaWFsb2dGZWF0dXJlc01hcCYgZmVhdHVyZXMsIGNv
bnN0IGNoYXIqCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAgICBpZiAo
aXQgPT0gZmVhdHVyZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB2YWx1ZSA9IGl0LT52YWx1ZTsK
ICAgICByZXR1cm4gdmFsdWUuaXNOdWxsKCkKQEAgLTIyNSwxNCArMjI1LDE0IEBAIHN0YXRpYyBP
cHRpb25hbDxmbG9hdD4gZmxvYXRGZWF0dXJlKGNvbnN0IERpYWxvZ0ZlYXR1cmVzTWFwJiBmZWF0
dXJlcywgY29uc3QgY2hhCiB7CiAgICAgYXV0byBpdCA9IGZlYXR1cmVzLmZpbmQoa2V5KTsKICAg
ICBpZiAoaXQgPT0gZmVhdHVyZXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogVGhlIHRvRG91
YmxlIGZ1bmN0aW9uIGRvZXMgbm90IG9mZmVyIGEgd2F5IHRvIHRlbGwgIjBxIiBmcm9tIHN0cmlu
ZyB3aXRoIG5vIGRpZ2l0cyBpbiBpdDogQm90aAogICAgIC8vIHJldHVybiB0aGUgbnVtYmVyIDAg
YW5kIGZhbHNlIGZvciBvay4gQnV0ICIwcSIgc2hvdWxkIHlpZWxkIHRoZSBtaW5pbXVtIHJhdGhl
ciB0aGFuIHRoZSBkZWZhdWx0LgogICAgIGJvb2wgb2s7CiAgICAgZG91YmxlIHBhcnNlZE51bWJl
ciA9IGl0LT52YWx1ZS50b0RvdWJsZSgmb2spOwogICAgIGlmICgoIXBhcnNlZE51bWJlciAmJiAh
b2spIHx8IHN0ZDo6aXNuYW4ocGFyc2VkTnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAocGFyc2VkTnVtYmVy
IDwgbWluIHx8IG1heCA8PSBtaW4pCiAgICAgICAgIHJldHVybiBtaW47CiAgICAgaWYgKHBhcnNl
ZE51bWJlciA+IG1heCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVy
Zm9ybWFuY2VMb2dnaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1BlcmZv
cm1hbmNlTG9nZ2luZ0NvY29hLm1tCmluZGV4IDIxMTE1NzMyZjU0NmUwZWIxZDgyNzEwMTRjMTU2
NzFhMDgyYzM4MzcuLjdkMzIzOWVkNzIwZTE2ZTlmYzI0Zjc1ZjZjNjNiNzA5YTc4ZmVkOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUGVyZm9ybWFuY2VMb2dnaW5nQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9QZXJmb3JtYW5jZUxvZ2dpbmdD
b2NvYS5tbQpAQCAtMzcsNyArMzcsNyBAQCBPcHRpb25hbDx1aW50NjRfdD4gUGVyZm9ybWFuY2VM
b2dnaW5nOjpwaHlzaWNhbEZvb3RwcmludCgpCiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBj
b3VudCA9IFRBU0tfVk1fSU5GT19DT1VOVDsKICAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRh
c2tfaW5mbyhtYWNoX3Rhc2tfc2VsZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZt
SW5mbywgJmNvdW50KTsKICAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gdm1JbmZvLnBoeXNfZm9vdHByaW50OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VUaHJlYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCmluZGV4IDliYzZkMjk3
N2VmOTEyMzhlZmEwMTVjNmNkYzM4MzE1MGFhOGMzNjEuLmI3Zjg0NDdlOWZlYmQ4NjA4NTRlZDM1
OTczODM3N2ZkOGQ3MDg0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
UmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvUmVzb3VyY2VVc2FnZVRocmVhZENvY29hLm1tCkBAIC0yNzIsOCArMjcyLDggQEAgdm9pZCBS
ZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RNZW1vcnlEYXRhKEpTQzo6Vk0qIHZt
LCBSZXNvdXJjZVVzYWdlRGEKIAogICAgIGRhdGEudG90YWxFeHRlcm5hbFNpemUgPSBjdXJyZW50
R0NPd25lZEV4dGVybmFsOwogCi0gICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24gPSBk
YXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRp
bEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKSk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRpbWVz
dGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52
YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7
CisgICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZt
LT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZV9vcihT
ZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRh
dGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5m
dWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXgg
MDE3NmI0ZDM1ODMwMTM5ZDgwNDlmNGEzMDEwOGRhYWUzMTlkZDU4YS4uNmFkNmIyMzc3N2VhNjJm
YWUwNzhmNGY4YTgzNWQyYzk2Y2U2NGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFk
ZXIsIENvbnRlbnRTZWN1cmkKICAgICAgICAgbV9oYXNBUElQb2xpY3kgPSB0cnVlOwogICAgIH0K
IAotICAgIG1fY2FjaGVkUmVzcG9uc2VIZWFkZXJzID0gV1RGOjpudWxsb3B0OworICAgIG1fY2Fj
aGVkUmVzcG9uc2VIZWFkZXJzID0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gUkZDMjYxNiwgc2Vj
dGlvbiA0LjIgc3BlY2lmaWVzIHRoYXQgaGVhZGVycyBhcHBlYXJpbmcgbXVsdGlwbGUgdGltZXMg
Y2FuCiAgICAgLy8gYmUgY29tYmluZWQgd2l0aCBhIGNvbW1hLiBXYWxrIHRoZSBoZWFkZXIgc3Ry
aW5nLCBhbmQgcGFyc2UgZWFjaCBjb21tYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRl
eCBkN2I3MDY2ZDIxNGRhOTE3YTllNDczNDg0OTEwNDViZDk3NWNhODFlLi4xNjE0MzRlYjkyMmYy
NGUxMThmODUwOGFjY2NmNTlmYWJiZjgwNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNw
cApAQCAtMzczLDcgKzM3Myw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGF1
dG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2VECiAKICAgICAvLyBF
bXB0eSBkaXJlY3RpdmUgKGUuZy4gIjs7OyIpLiBFeGl0IGVhcmx5LgogICAgIGlmIChidWZmZXIu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbmFtZUJlZ2luID0gYnVmZmVyLnBvc2l0aW9uKCk7CiAg
ICAgc2tpcFdoaWxlPGlzRGlyZWN0aXZlTmFtZUNoYXJhY3Rlcj4oYnVmZmVyKTsKQEAgLTM4Miw3
ICszODIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBhdXRvIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlRAogICAgIGlmIChuYW1lQmVnaW4gPT0g
YnVmZmVyLnBvc2l0aW9uKCkpIHsKICAgICAgICAgc2tpcFdoaWxlPGlzTm90QVNDSUlTcGFjZT4o
YnVmZmVyKTsKICAgICAgICAgbV9wb2xpY3kucmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoU3Ry
aW5nKG5hbWVCZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBuYW1lQmVnaW4pKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBhdXRvIG5hbWUgPSBTdHJpbmcobmFtZUJlZ2luLCBidWZmZXIucG9zaXRpb24oKSAt
IG5hbWVCZWdpbik7CkBAIC0zOTMsNyArMzkzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gYXV0byBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJzZUQK
ICAgICBpZiAoIXNraXBFeGFjdGx5PGlzQVNDSUlTcGFjZT4oYnVmZmVyKSkgewogICAgICAgICBz
a2lwV2hpbGU8aXNOb3RBU0NJSVNwYWNlPihidWZmZXIpOwogICAgICAgICBtX3BvbGljeS5yZXBv
cnRVbnN1cHBvcnRlZERpcmVjdGl2ZShTdHJpbmcobmFtZUJlZ2luLCBidWZmZXIucG9zaXRpb24o
KSAtIG5hbWVCZWdpbikpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHNraXBXaGlsZTxpc0FTQ0lJU3BhY2U+
KGJ1ZmZlcik7CkBAIC00MDMsNyArNDAzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gYXV0byBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpwYXJzZUQKIAog
ICAgIGlmICghYnVmZmVyLmF0RW5kKCkpIHsKICAgICAgICAgbV9wb2xpY3kucmVwb3J0SW52YWxp
ZERpcmVjdGl2ZVZhbHVlQ2hhcmFjdGVyKG5hbWUsIFN0cmluZyh2YWx1ZUJlZ2luLCBidWZmZXIu
ZW5kKCkgLSB2YWx1ZUJlZ2luKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gVGhlIGRpcmVjdGl2ZS12
YWx1ZSBtYXkgYmUgZW1wdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCmluZGV4IGJjOTgy
YmUzYjZhMTMxODFmMjNmOGNlMzA3MjdmNDdjYmNjY2FkYWEuLmYzYmIxYTdiYjlkM2IyOTMyNDM2
YjNjMWM5ZWU1M2NiMjIzYmQ4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oCkBAIC05
MSwxNiArOTEsMTYgQEAgT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzPiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWQKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gaGVhZGVyc1NpemU7CiAgICAgZGVjb2RlciA+PiBoZWFkZXJzU2l6ZTsKICAgICBpZiAo
IWhlYWRlcnNTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKmhlYWRlcnNTaXpl
OyArK2kpIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBoZWFkZXI7CiAgICAgICAgIGRlY29k
ZXIgPj4gaGVhZGVyOwogICAgICAgICBpZiAoIWhlYWRlcikKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBP
cHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlPiBoZWFkZXJUeXBlOwogICAg
ICAgICBkZWNvZGVyID4+IGhlYWRlclR5cGU7CiAgICAgICAgIGlmICghaGVhZGVyVHlwZSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBoZWFkZXJzLm1faGVhZGVycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
V1RGTW92ZSgqaGVhZGVyKSwgV1RGTW92ZSgqaGVhZGVyVHlwZSkpKTsKICAgICB9CiAgICAgaGVh
ZGVycy5tX2hlYWRlcnMuc2hyaW5rVG9GaXQoKTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBPcHRpb25h
bDxDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZAogICAgIE9wdGlvbmFsPGludD4gaHR0cFN0YXR1c0NvZGU7CiAgICAg
ZGVjb2RlciA+PiBodHRwU3RhdHVzQ29kZTsKICAgICBpZiAoIWh0dHBTdGF0dXNDb2RlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGhlYWRlcnMubV9odHRwU3RhdHVzQ29kZSA9ICpodHRwU3RhdHVzQ29kZTsKIAogICAgIHJl
dHVybiBoZWFkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCA2YTMzNmI1YTNlMTYyYjNj
MjFmYTI1OTY5MzU2NWU3MjQ1NDNiZWM4Li5iODdkODVhZmQxMzc1NDk0Mzc0NTZmZGFjMzRjYmI2
OTMwMmU1MTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMjAxLDEwICsyMDEsMTAgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0OjpwYXJzZShTdHIKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjZT4gQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6cGFyc2VTb3VyY2UoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiBidWZmZXIpCiB7CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKHNraXBFeGFjdGx5SWdub3JpbmdBU0NJSUNhc2UoYnVmZmVyLCAiJ25vbmUnIikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBTb3VyY2Ugc291cmNlOwogCkBAIC0yNDAsNyArMjQwLDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdDo6U291cmMKICAgICAgICAgLy8gICAgIF4KICAgICAgICAgYXV0byBob3N0ID0gcGFy
c2VIb3N0KFN0cmluZ1BhcnNpbmdCdWZmZXIgeyBiZWdpbkhvc3QsIGJ1ZmZlci5wb3NpdGlvbigp
IH0pOwogICAgICAgICBpZiAoIWhvc3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzb3VyY2UuaG9z
dCA9IFdURk1vdmUoKmhvc3QpOwogICAgICAgICByZXR1cm4gc291cmNlOwpAQCAtMjUxLDExICsy
NTEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6U291cmMKICAgICAgICAgLy8gICAgIF4gICAgICAg
ICAgICBeICAgIF4KICAgICAgICAgYXV0byBob3N0ID0gcGFyc2VIb3N0KFN0cmluZ1BhcnNpbmdC
dWZmZXIgeyBiZWdpbkhvc3QsIGJ1ZmZlci5wb3NpdGlvbigpIH0pOwogICAgICAgICBpZiAoIWhv
c3QpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHBhdGggPSBwYXJzZVBhdGgoYnVmZmVyKTsK
ICAgICAgICAgaWYgKCFwYXRoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc291cmNlLmhvc3QgPSBX
VEZNb3ZlKCpob3N0KTsKICAgICAgICAgc291cmNlLnBhdGggPSBXVEZNb3ZlKCpwYXRoKTsKQEAg
LTI2OCw3ICsyNjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25h
bDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpTb3VyYwogICAgICAgICAgICAgLy8g
ICAgICAgXgogICAgICAgICAgICAgYXV0byBzY2hlbWUgPSBwYXJzZVNjaGVtZShTdHJpbmdQYXJz
aW5nQnVmZmVyIHsgYmVnaW4sIGJ1ZmZlci5wb3NpdGlvbigpIH0pOwogICAgICAgICAgICAgaWYg
KCFzY2hlbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBzb3VyY2Uuc2NoZW1l
ID0gV1RGTW92ZSgqc2NoZW1lKTsKICAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CkBAIC0yODIs
OSArMjgyLDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6U291cmMKICAgICAgICAgICAgICAgICB8fCAh
c2tpcEV4YWN0bHkoYnVmZmVyLCAnOicpCiAgICAgICAgICAgICAgICAgfHwgIXNraXBFeGFjdGx5
KGJ1ZmZlciwgJy8nKQogICAgICAgICAgICAgICAgIHx8ICFza2lwRXhhY3RseShidWZmZXIsICcv
JykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgc291cmNlLnNjaGVtZSA9IFdURk1vdmUo
KnNjaGVtZSk7CiAKQEAgLTMwNCwxOSArMzA0LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJj
CiAgICAgICAgIC8vIHNjaGVtZTovL2hvc3QvcGF0aCB8fCBzY2hlbWU6Ly9ob3N0OnBvcnQvcGF0
aAogICAgICAgICAvLyAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgXgog
ICAgICAgICBpZiAoYnVmZmVyLnBvc2l0aW9uKCkgPT0gYmVnaW5Ib3N0KQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgYmVnaW5QYXRoID0gYnVmZmVyLnBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgYXV0
byBob3N0ID0gcGFyc2VIb3N0KFN0cmluZ1BhcnNpbmdCdWZmZXIgeyBiZWdpbkhvc3QsIGJlZ2lu
UG9ydCA/IGJlZ2luUG9ydCA6IGJlZ2luUGF0aCB9KTsKICAgICBpZiAoIWhvc3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoYmVnaW5Qb3J0KSB7CiAgICAgICAgIGF1dG8gcG9ydCA9IHBhcnNlUG9ydChTdHJpbmdQ
YXJzaW5nQnVmZmVyIHsgYmVnaW5Qb3J0LCBiZWdpblBhdGggfSk7CiAgICAgICAgIGlmICghcG9y
dCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHNvdXJjZS5wb3J0ID0gV1RGTW92ZSgqcG9ydCk7CiAg
ICAgfQpAQCAtMzI0LDcgKzMyNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OlNvdXJjCiAgICAgaWYg
KGJlZ2luUGF0aCAhPSBidWZmZXIuZW5kKCkpIHsKICAgICAgICAgYXV0byBwYXRoID0gcGFyc2VQ
YXRoKFN0cmluZ1BhcnNpbmdCdWZmZXIgeyBiZWdpblBhdGgsIGJ1ZmZlci5lbmQoKSB9KTsKICAg
ICAgICAgaWYgKCFwYXRoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc291cmNlLnBhdGggPSBXVEZN
b3ZlKCpwYXRoKTsKICAgICB9CkBAIC0zNDEsMTcgKzM0MSwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDxTdHJpbmc+IENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpcwogICAgIEFTU0VSVChidWZmZXIucG9zaXRpb24oKSA8PSBidWZmZXIuZW5kKCkpOwog
CiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBiZWdpbiA9IGJ1ZmZlci5w
b3NpdGlvbigpOwogCiAgICAgaWYgKCFza2lwRXhhY3RseTxpc0FTQ0lJQWxwaGE+KGJ1ZmZlcikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBza2lwV2hpbGU8aXNTY2hlbWVDb250aW51YXRpb25DaGFyYWN0ZXI+KGJ1ZmZl
cik7CiAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFN0cmluZyhi
ZWdpbiwgYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbik7CiB9CkBAIC0zNjUsNyArMzY1LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdDo6SG9zdD4KICAgICBBU1NFUlQoYnVmZmVyLnBvc2l0aW9uKCkgPD0g
YnVmZmVyLmVuZCgpKTsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhvc3Qg
aG9zdDsKIApAQCAtMzc2LDE5ICszNzYsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gT3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdDo6SG9zdD4KICAg
ICAgICAgICAgIHJldHVybiBob3N0OwogCiAgICAgICAgIGlmICghc2tpcEV4YWN0bHkoYnVmZmVy
LCAnLicpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBob3N0QmVnaW4gPSBidWZmZXIu
cG9zaXRpb24oKTsKIAogICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygp
KSB7CiAgICAgICAgIGlmICghc2tpcEV4YWN0bHk8aXNIb3N0Q2hhcmFjdGVyPihidWZmZXIpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc2tpcFdoaWxlPGlzSG9zdENoYXJhY3Rlcj4oYnVmZmVyKTsK
IAogICAgICAgICBpZiAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiAhc2tpcEV4
YWN0bHkoYnVmZmVyLCAnLicpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVNTRVJUKGJ1ZmZl
ci5hdEVuZCgpKTsKQEAgLTQyMyw3ICs0MjMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0OjpQb3J0Pgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAKICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA9PSAxICYmICpi
dWZmZXIgPT0gJyonKSB7CiAgICAgICAgIFBvcnQgcG9ydDsKQEAgLTQzNSwxMiArNDM1LDEyIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3Q6OlBvcnQ+CiAgICAgc2tpcFdoaWxlPGlzQVNDSUlEaWdpdD4oYnVm
ZmVyKTsKICAgICAKICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gYnVmZmVyLnBvc2l0aW9uKCkgLSBiZWdpbjsKLSAgICBhdXRvIHBvcnRJbnRlZ2Vy
ID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90Pih7IGJlZ2luLCBsZW5ndGggfSkudmFsdWVPcigwKTsK
KyAgICBhdXRvIHBvcnRJbnRlZ2VyID0gcGFyc2VJbnRlZ2VyPHVpbnQxNl90Pih7IGJlZ2luLCBs
ZW5ndGggfSkudmFsdWVfb3IoMCk7CiAgICAgaWYgKCFwb3J0SW50ZWdlcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBv
cnQgcG9ydDsKICAgICBwb3J0LnZhbHVlID0gcG9ydEludGVnZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDQ5MDdmOTE0MmIzZDMzMzcw
ZjQ3MDU3ZjEwYjQ5YzUwMzgxOTNmYy4uYjZhOWMzNmQxMmViZGQ5NjBhYzY3NzA5ZjBkMTc2NGMy
NWVmOGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xs
ZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJv
bGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKGRy
YWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpDb3B5
OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBjb25zdCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXggMmYwNjU1ODM1
MDM0MjNkNWRkMjVkNzgzODg3YmMyZTBmYTRhYzc4Ny4uZjlhNDMwYTFkYmRlNWRiZjNkMGFhYzE4
MGQ1YTRmMGY3YWYyZDA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZl
bnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxl
cklPUy5tbQpAQCAtMTExLDcgKzExMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp3aGVlbEV2ZW50
KFdlYkV2ZW50ICpldmVudCkKICAgICBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
cz4gcHJvY2Vzc2luZ1N0ZXBzID0geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhy
ZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9y
QmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAKICAgICBpZiAod2hlZWxFdmVudC5pc0dlc3R1
cmVTdGFydCgpKQotICAgICAgICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID0gV1RGOjpudWxs
b3B0OworICAgICAgICBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlID0gc3RkOjpudWxsb3B0Owog
ICAgIGVsc2UgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZTo6Q2hhbmdlZCB8fCB3aGVlbEV2ZW50Lm1vbWVudHVtUGhhc2UoKSA9PSBQbGF0Zm9ybVdoZWVs
RXZlbnRQaGFzZTo6Q2hhbmdlZCkgewogICAgICAgICBpZiAobV93aGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZSAmJiAqbV93aGVlbFNjcm9sbEdlc3R1cmVTdGF0ZSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVT
dGF0ZTo6Tm9uQmxvY2tpbmcpCiAgICAgICAgICAgICBwcm9jZXNzaW5nU3RlcHMgPSB7IFdoZWVs
RXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcsIFdoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2gg
fTsKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c3RhcnRTZWxlY3Rpb25B
dXRvc2Nyb2xsKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0UAogdm9pZCBFdmVu
dEhhbmRsZXI6OmNhbmNlbFNlbGVjdGlvbkF1dG9zY3JvbGwoKQogewogICAgIG1faXNBdXRvc2Ny
b2xsaW5nID0gZmFsc2U7Ci0gICAgbV9pbml0aWFsVGFyZ2V0QXV0b3Njcm9sbFBvc2l0aW9uSW5V
bnNjcm9sbGVkUm9vdFZpZXdDb29yZGluYXRlcyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2luaXRp
YWxUYXJnZXRBdXRvc2Nyb2xsUG9zaXRpb25JblVuc2Nyb2xsZWRSb290Vmlld0Nvb3JkaW5hdGVz
ID0gc3RkOjpudWxsb3B0OwogICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPnN0b3BBdXRvc2Ny
b2xsVGltZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9S
ZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9saW51eC9S
ZXNvdXJjZVVzYWdlVGhyZWFkTGludXguY3BwCmluZGV4IDAyZTVkNDg5Y2FiNDNmODM5MzMzZDQ5
YmQyNGE1OTY5Mjk4OTQ3YzMuLmZlMWRmNmY2OTFiOWQxNGRiOTNjNjViZWIzYzc3MWE0ZGI5NTZj
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGludXgvUmVzb3VyY2VVc2FnZVRo
cmVhZExpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jlc291cmNlVXNh
Z2VUaHJlYWRMaW51eC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFJlc291cmNlVXNhZ2VU
aHJlYWQ6OnBsYXRmb3JtQ29sbGVjdENQVURhdGEoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRh
JiBkYQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyB0aHJlYWRJZGVudGlmaWVy
ID0ga25vd25Xb3JrZXJUaHJlYWRzLmdldChpZCk7CiAgICAgICAgICAgICBib29sIGlzV29ya2Vy
VGhyZWFkID0gIXRocmVhZElkZW50aWZpZXIuaXNFbXB0eSgpOwotICAgICAgICAgICAgU3RyaW5n
IG5hbWUgPSBpdC52YWx1ZS5uYW1lLnZhbHVlT3IoZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAg
ICBTdHJpbmcgbmFtZSA9IGl0LnZhbHVlLm5hbWUudmFsdWVfb3IoZW1wdHlTdHJpbmcoKSk7CiAg
ICAgICAgICAgICBUaHJlYWRDUFVJbmZvOjpUeXBlIHR5cGUgPSAoaXNXb3JrZXJUaHJlYWQgfHwg
aXNXZWJLaXRUaHJlYWQoaWQsIG5hbWUpKSA/IFRocmVhZENQVUluZm86OlR5cGU6OldlYktpdCA6
IFRocmVhZENQVUluZm86OlR5cGU6OlVua25vd247CiAgICAgICAgICAgICBkYXRhLmNwdVRocmVh
ZHMuYXBwZW5kKFRocmVhZENQVUluZm8geyBuYW1lLCB0aHJlYWRJZGVudGlmaWVyLCBjcHVVc2Fn
ZSwgdHlwZSB9KTsKICAgICAgICAgfQpAQCAtMzE1LDggKzMxNSw4IEBAIHZvaWQgUmVzb3VyY2VV
c2FnZVRocmVhZDo6cGxhdGZvcm1Db2xsZWN0TWVtb3J5RGF0YShKU0M6OlZNKiB2bSwgUmVzb3Vy
Y2VVc2FnZURhCiAKICAgICBkYXRhLnRvdGFsRXh0ZXJuYWxTaXplID0gY3VycmVudEdDT3duZWRF
eHRlcm5hbDsKIAotICAgIGRhdGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1l
c3RhbXAgKyB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCku
dmFsdWVPcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkp
OwotICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2
bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVPcihT
ZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSkpOworICAgIGRh
dGEudGltZU9mTmV4dEVkZW5Db2xsZWN0aW9uID0gZGF0YS50aW1lc3RhbXAgKyB2bS0+aGVhcC5l
ZGVuQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCkudmFsdWVfb3IoU2Vjb25kcyhz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVP
Zk5leHRGdWxsQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2
aXR5Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KaW5k
ZXggYzQwZTMwMWFiZTgxZjAxY2MyNDcxNzgyOTU1MzNlODM2Mzg5NjgyMi4uNTg2NDkzMTk2MjZi
MGZjZmUyYTI3ZGU1YzI2ZmJhYzgzZjVlMmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZsYWdzKCkuY29udGFpbnMoRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3M6OklzTW9kYWwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBtYXlDb250YWluVVJMOwog
ICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFnZ2luZ1Bhc3RlYm9hcmQoKSkKQEAgLTc2LDEyICs3
NiwxMiBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIG1heUNvbnRhaW5VUkwgPSBk
cmFnRGF0YS5jb250YWluc1VSTFR5cGVJZGVudGlmaWVyKCk7CiAKICAgICBpZiAoIW1heUNvbnRh
aW5VUkwgJiYgIWRyYWdEYXRhLmNvbnRhaW5zUHJvbWlzZSgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2Rv
Y3VtZW50VW5kZXJNb3VzZSB8fCAoIShkcmFnRGF0YS5mbGFncygpLmNvbnRhaW5zQWxsKHsgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3M6Okhhc0F0dGFjaGVkU2hlZXQsIERyYWdBcHBsaWNhdGlvbkZsYWdz
OjpJc1NvdXJjZSB9KSkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6Q29weTsKIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
Y29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDg2NDY1ZjgwNWUyMDUz
NTY4NzA2NGMyZmY3NjA0ZDViODlhNDI0N2QuLmQwMTk1NDM3NDhhM2QyNTYxMmM0ODM5MDYxMWE5
M2QyZWJjMDAyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0KQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudChOU0V2
ZW50ICpldmVudCkKICAgICBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gcHJv
Y2Vzc2luZ1N0ZXBzID0geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9y
U2Nyb2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yQmxvY2tp
bmdET01FdmVudERpc3BhdGNoIH07CiAKICAgICBpZiAod2hlZWxFdmVudC5waGFzZSgpID09IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkIHx8IHdoZWVsRXZlbnQubW9tZW50dW1QaGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpDaGFuZ2VkKSB7Ci0gICAgICAgIGlmICht
X2ZyYW1lLnNldHRpbmdzKCkud2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9uQmxvY2tpbmcoKSAm
JiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlLnZhbHVlT3IoV2hlZWxTY3JvbGxHZXN0dXJlU3Rh
dGU6OkJsb2NraW5nKSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tpbmcpCisg
ICAgICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkud2hlZWxFdmVudEdlc3R1cmVzQmVjb21lTm9u
QmxvY2tpbmcoKSAmJiBtX3doZWVsU2Nyb2xsR2VzdHVyZVN0YXRlLnZhbHVlX29yKFdoZWVsU2Ny
b2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0gV2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5v
bkJsb2NraW5nKQogICAgICAgICAgICAgcHJvY2Vzc2luZ1N0ZXBzID0geyBXaGVlbEV2ZW50UHJv
Y2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzOjpNYWluVGhyZWFkRm9yTm9uQmxvY2tpbmdET01FdmVudERpc3BhdGNoIH07CiAgICAg
fQogICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIHByb2Nlc3NpbmdTdGVw
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3BsYXlzdGF0aW9uL1Jlc291cmNl
VXNhZ2VUaHJlYWRQbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3BsYXlzdGF0
aW9uL1Jlc291cmNlVXNhZ2VUaHJlYWRQbGF5U3RhdGlvbi5jcHAKaW5kZXggZTA4YmUzODE1Mjg1
YzUzN2I3ZTJhNzUzYzhlODE0OTQ1YTYyODk0Mi4uZGI5NTgwZGUyZTc1OWExZTAxOWJkYzUyNTUw
MDk1YTAzY2E0NzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9wbGF5c3RhdGlv
bi9SZXNvdXJjZVVzYWdlVGhyZWFkUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvcGxheXN0YXRpb24vUmVzb3VyY2VVc2FnZVRocmVhZFBsYXlTdGF0aW9uLmNwcApAQCAt
NjksOCArNjksOCBAQCB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnBsYXRmb3JtQ29sbGVjdE1l
bW9yeURhdGEoSlNDOjpWTSogdm0sIFJlc291cmNlVXNhZ2VEYQogCiAgICAgZGF0YS50b3RhbEV4
dGVybmFsU2l6ZSA9IGN1cnJlbnRHQ093bmVkRXh0ZXJuYWw7CiAKLSAgICBkYXRhLnRpbWVPZk5l
eHRFZGVuQ29sbGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5
Q2FsbGJhY2soKS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpKTsKLSAgICBkYXRhLnRpbWVPZk5leHRGdWxsQ29s
bGVjdGlvbiA9IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2so
KS0+dGltZVVudGlsRmlyZSgpLnZhbHVlT3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OmluZmluaXR5KCkpKTsKKyAgICBkYXRhLnRpbWVPZk5leHRFZGVuQ29sbGVjdGlvbiA9
IGRhdGEudGltZXN0YW1wICsgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+dGltZVVu
dGlsRmlyZSgpLnZhbHVlX29yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpp
bmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxlY3Rpb24gPSBkYXRhLnRp
bWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRpbEZpcmUo
KS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmlu
ZGV4IDk2ZjFmYjFlNWEyYmI2NDVmZjEyNzMzNzMyOGI3ZGI3MDFmY2E1OTUuLjEzOWY0ZTc2NTFk
Yzg4MTE3MDRlYzM0ZWY0NmI5MzE0ZjgxY2NkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC02NjAsNyArNjYwLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGcmFt
ZVNjcm9sbGluZ05vZGVTdGF0ZShTY3JvbGxpbmdOb2RlSUQgbm9kZUkKICAgICBpZiAoYXV0byB2
aXN1YWxPdmVycmlkZVJlY3QgPSBmcmFtZVZpZXcudmlzdWFsVmlld3BvcnRPdmVycmlkZVJlY3Qo
KSkKICAgICAgICAgZnJhbWVTY3JvbGxpbmdOb2RlLnNldE92ZXJyaWRlVmlzdWFsVmlld3BvcnRT
aXplKEZsb2F0U2l6ZSh2aXN1YWxPdmVycmlkZVJlY3QudmFsdWUoKS5zaXplKCkpKTsKICAgICBl
bHNlCi0gICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRPdmVycmlkZVZpc3VhbFZpZXdwb3J0
U2l6ZShXVEY6Om51bGxvcHQpOworICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0T3ZlcnJp
ZGVWaXN1YWxWaWV3cG9ydFNpemUoc3RkOjpudWxsb3B0KTsKIAogICAgIGZyYW1lU2Nyb2xsaW5n
Tm9kZS5zZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKGZyYW1lVmlldy5maXhl
ZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAppbmRleCAz
N2I2NjM3YjQ4NjBkOThjZTM4MDY4ZjUxYjMxZmVjZTY4YWM2ZDE1Li5lOGUxNjVlZGUzMzc0YzNj
NWRiYzUzZjk0OTFmODkxMzg3Y2M2Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdl
ZW5PcmlnaW5BbmREZXN0aW5hdGlvbihjb24KIHsKICAgICBMYXlvdXRUeXBlIGRpZmZlcmVuY2Ug
PSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCAtIHNjcm9sbE9yaWdpbk9mZnNldDsKICAgICBpZiAo
IWRpZmZlcmVuY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICB1bnNpZ25lZCBzZWFyY2hTdGFydE9mZnNldCA9IDA7CiAg
ICAgc2l6ZV90IGl0ZXJhdGlvbiA9IDE7CkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIE9wdGlv
bmFsPHVuc2lnbmVkPiBmaW5kRmlyc3RTbmFwU3RvcE9mZnNldEJldHdlZW5PcmlnaW5BbmREZXN0
aW5hdGlvbihjb24KICAgICAgICAgICAgIHJldHVybiBpOwogICAgIH0KIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEluZm9UeXBlLCB0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgTGF5b3V0VHlwZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZz
ZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmgKaW5kZXggZDE2MGM5NWJjNDNmZjk4MWMwYTQ3YmYzNjAzYzQwMDZkY2VlMzFjYy4u
MWVjZmFkMTZlMTM4ZTBmYmM1OTE4ZmQyMmI3YWJkZjY0N2I2NzM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKQEAg
LTczLDcgKzczLDcgQEAgc3RydWN0IFNjcm9sbFNuYXBPZmZzZXRzSW5mbyB7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdXRwdXRUeXBlPiBPdXRwdXRUeXBlIGNvbnZlcnRVbml0cyhmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IDAuMCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgU2l6
ZVR5cGU+Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFVuaXRUeXBlLCB1bnNpZ25lZD4g
Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBTaXplVHlwZSYgdmlld3Bv
cnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHks
IE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9yRGlyZWN0aW9uYWxTbmFwcGlu
ZyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFVu
aXRUeXBlLCB1bnNpZ25lZD4gY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzLCBjb25z
dCBTaXplVHlwZSYgdmlld3BvcnRTaXplLCBVbml0VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNl
dCwgZmxvYXQgdmVsb2NpdHksIE9wdGlvbmFsPFVuaXRUeXBlPiBvcmlnaW5hbFBvc2l0aW9uRm9y
RGlyZWN0aW9uYWxTbmFwcGluZyA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiB9OwogCiB1c2luZyBM
YXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88TGF5b3V0
VW5pdCwgTGF5b3V0UmVjdD47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuY3BwCmluZGV4IGU2YWY4ZjM5NjkzZmM3YmQ2OGFjZmIwN2Q0Njk5YWZmNmZl
NGU1NGUuLjc0NzE0ODJjZjRhM2UwNTMzODZiYjA4ZTg3YjViMzZhNWVjMzY5YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBTY3JvbGxpbmdU
cmVlOjpjb21wdXRlV2hlZWxQcm9jZXNzaW5nU3RlcHMoCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5U
X1JFR0lPTlMpCiAgICAgYXV0byBldmVudExpc3RlbmVyVHlwZXMgPSBldmVudExpc3RlbmVyUmVn
aW9uVHlwZXNGb3JQb2ludChwb3NpdGlvbik7CiAgICAgaWYgKGV2ZW50TGlzdGVuZXJUeXBlcy5j
b250YWlucyhFdmVudExpc3RlbmVyUmVnaW9uVHlwZTo6Tm9uUGFzc2l2ZVdoZWVsKSkgewotICAg
ICAgICBpZiAobV90cmVlU3RhdGUuZ2VzdHVyZVN0YXRlLnZhbHVlT3IoV2hlZWxTY3JvbGxHZXN0
dXJlU3RhdGU6OkJsb2NraW5nKSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6Tm9uQmxvY2tp
bmcpCisgICAgICAgIGlmIChtX3RyZWVTdGF0ZS5nZXN0dXJlU3RhdGUudmFsdWVfb3IoV2hlZWxT
Y3JvbGxHZXN0dXJlU3RhdGU6OkJsb2NraW5nKSA9PSBXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6
Tm9uQmxvY2tpbmcpCiAgICAgICAgICAgICByZXR1cm4geyBXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0
ZXBzOjpTY3JvbGxpbmdUaHJlYWQsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJl
YWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKIAogICAgICAgICByZXR1cm4geyBX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nLCBXaGVlbEV2
ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yQmxvY2tpbmdET01FdmVudERpc3BhdGNo
IH07CkBAIC0xMTAsNyArMTEwLDcgQEAgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3Rl
cHM+IFNjcm9sbGluZ1RyZWU6OmRldGVybWluZVdoZWVsRXZlbnRQcm9jZXNzaW4KICAgICAgICAg
cmV0dXJuIGxhdGNoZWROb2RlQW5kU3RlcHMtPnByb2Nlc3NpbmdTdGVwczsKICAgICB9CiAgICAg
aWYgKHdoZWVsRXZlbnQuaXNHZXN0dXJlU3RhcnQoKSB8fCB3aGVlbEV2ZW50LmlzTm9uR2VzdHVy
ZUV2ZW50KCkpCi0gICAgICAgIG1fdHJlZVN0YXRlLmdlc3R1cmVTdGF0ZSA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV90cmVlU3RhdGUuZ2VzdHVyZVN0YXRlID0gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBwcm9jZXNzaW5nU3RlcHMgPSBjb21wdXRlV2hlZWxQcm9jZXNzaW5nU3RlcHMod2hl
ZWxFdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggNTQwYzgx
ZGJiOWIwOGE3Yjk5M2ZhZmIwZmUxNmUyYjIxNGZiMjljNi4uMjIwM2NlMmYzMGIyZWNlNmY1MmJm
YmM1M2M0NjliZmQ3NWU3ZGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgYm9vbCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlOjpz
Y3JvbGxQb3NpdGlvbkFuZExheW91dFZpZXdwb3J0TWF0Y2goY29uc3QKIAogRmxvYXRSZWN0IFNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmxheW91dFZpZXdwb3J0Rm9yU2Nyb2xsUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYgdmlzaWJsZUNvbnRlbnRPcmlnaW4sIGZsb2F0IHNjYWxl
LCBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMgZml4ZWRCZWhhdmlvcikgY29uc3QKIHsK
LSAgICBGbG9hdFNpemUgdmlzdWFsVmlld3BvcnRTaXplID0gbV9vdmVycmlkZVZpc3VhbFZpZXdw
b3J0U2l6ZS52YWx1ZU9yKHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICBGbG9hdFNpemUgdmlz
dWFsVmlld3BvcnRTaXplID0gbV9vdmVycmlkZVZpc3VhbFZpZXdwb3J0U2l6ZS52YWx1ZV9vcihz
Y3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgRmxvYXRSZWN0IHZpc2libGVDb250ZW50UmVjdCh2
aXNpYmxlQ29udGVudE9yaWdpbiwgdmlzdWFsVmlld3BvcnRTaXplKTsKICAgICBMYXlvdXRSZWN0
IHZpc3VhbFZpZXdwb3J0KEZyYW1lVmlldzo6dmlzaWJsZURvY3VtZW50UmVjdCh2aXNpYmxlQ29u
dGVudFJlY3QsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSwgdG90YWxDb250ZW50c1Np
emUoKSwgc2NhbGUpKTsKICAgICBMYXlvdXRSZWN0IGxheW91dFZpZXdwb3J0KG1fbGF5b3V0Vmll
d3BvcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAppbmRleCAwYzdmNGE2MGFl
NTBjMzJiY2ViNmI5NTA5OTg0YWMyNzRmM2ZmNTBmLi40YWRkOWZiM2Y4N2U5NmM5NjBiYTEwY2E3
N2MyNzU0ODQyOTE4YTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
NTksNyArNTksNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6OnJlY2Vp
dmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbgogT3B0aW9uYWw8U2Nyb2xsaW5n
VHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVwcz4g
U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hpbmdEYXRhRm9yRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sIGFsbG93TGF0Y2hpbmcpIGNv
bnN0CiB7CiAgICAgaWYgKCFhbGxvd0xhdGNoaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbGF0Y2hlZE5vZGVMb2NrIH07CiAKQEAgLTY5LDcgKzY5LDcgQEAgT3B0aW9uYWw8U2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6U2Nyb2xsaW5nTm9kZUFuZFByb2Nlc3NpbmdTdGVw
cz4gU2Nyb2wKICAgICAgICAgcmV0dXJuIG1fbGF0Y2hlZE5vZGVBbmRTdGVwczsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IE9wdGlvbmFsPFNjcm9sbGluZ05vZGVJRD4gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxl
cjo6bGF0Y2hlZE5vZGVJRCgpIGNvbnN0CkBAIC03OCw3ICs3OCw3IEBAIE9wdGlvbmFsPFNjcm9s
bGluZ05vZGVJRD4gU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bGF0Y2hlZE5vZGVJ
RCgpIGNvbnN0CiAgICAgaWYgKG1fbGF0Y2hlZE5vZGVBbmRTdGVwcykKICAgICAgICAgcmV0dXJu
IG1fbGF0Y2hlZE5vZGVBbmRTdGVwcy0+c2Nyb2xsaW5nTm9kZUlEOwogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTY3Jv
bGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpTY3JvbGxpbmdOb2RlQW5kUHJvY2Vzc2luZ1N0
ZXBzPiBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpsYXRjaGVkTm9kZUFuZFN0ZXBz
KCkgY29uc3QKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0Nv
bnRyb2xsZXI6Om5vZGVEaWRIYW5kbGVFdmVudChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaQogICAg
ICAgICBpZiAoIXdoZWVsRXZlbnQuaXNHZXN0dXJlQ29udGludWF0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2luZ1N0ZXBzRm9yQ3VycmVu
dEdlc3R1cmUudmFsdWVPcihPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4geyB9
KS5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xs
aW5nKSAmJiBwcm9jZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
czo6U2Nyb2xsaW5nVGhyZWFkKSkKKyAgICAgICAgaWYgKG1fcHJvY2Vzc2luZ1N0ZXBzRm9yQ3Vy
cmVudEdlc3R1cmUudmFsdWVfb3IoT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+
IHsgfSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNj
cm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAppbmRleCAwNDAxNWM3MTg0ZGIzMjlhN2Iy
ZTE1MmZlMDdkMjM3Mjg1NDQxZGQwLi4yZTBlODM2ZTZlNDk1ZTkyODIxMDBkMmQ2ODA3NjI5ZTg2
MDdjNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Ro
cmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgYm9vbCBUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OmhhbmRsZVdoZWVsRXZlbnRBZnRlck1haW5UaHJlYWQoY29uc3QgUGxhdGZv
cm1XaGVlbEUKIAogICAgIGJvb2wgYWxsb3dMYXRjaGluZyA9IGZhbHNlOwogICAgIE9wdGlvblNl
dDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHM7Ci0gICAgaWYgKGdl
c3R1cmVTdGF0ZS52YWx1ZU9yKFdoZWVsU2Nyb2xsR2VzdHVyZVN0YXRlOjpCbG9ja2luZykgPT0g
V2hlZWxTY3JvbGxHZXN0dXJlU3RhdGU6Ok5vbkJsb2NraW5nKSB7CisgICAgaWYgKGdlc3R1cmVT
dGF0ZS52YWx1ZV9vcihXaGVlbFNjcm9sbEdlc3R1cmVTdGF0ZTo6QmxvY2tpbmcpID09IFdoZWVs
U2Nyb2xsR2VzdHVyZVN0YXRlOjpOb25CbG9ja2luZykgewogICAgICAgICBhbGxvd0xhdGNoaW5n
ID0gdHJ1ZTsKICAgICAgICAgcHJvY2Vzc2luZ1N0ZXBzID0geyBXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQsIFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5U
aHJlYWRGb3JOb25CbG9ja2luZ0RPTUV2ZW50RGlzcGF0Y2ggfTsKICAgICB9CkBAIC0yOTYsNyAr
Mjk2LDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OndpbGxTdGFydFJlbmRlcmluZ1Vw
ZGF0ZSgpCiBTZWNvbmRzIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6bWF4QWxsb3dhYmxlUmVuZGVy
aW5nVXBkYXRlRHVyYXRpb25Gb3JTeW5jaHJvbml6YXRpb24oKQogewogICAgIGNvbnN0ZXhwciBk
b3VibGUgYWxsb3dhYmxlRnJhbWVGcmFjdGlvbiA9IDAuNTsKLSAgICBhdXRvIGRpc3BsYXlGUFMg
PSBub21pbmFsRnJhbWVzUGVyU2Vjb25kKCkudmFsdWVPcig2MCk7CisgICAgYXV0byBkaXNwbGF5
RlBTID0gbm9taW5hbEZyYW1lc1BlclNlY29uZCgpLnZhbHVlX29yKDYwKTsKICAgICBTZWNvbmRz
IGZyYW1lRHVyYXRpb24gPSAxX3MgLyAoZG91YmxlKWRpc3BsYXlGUFM7CiAgICAgcmV0dXJuIGFs
bG93YWJsZUZyYW1lRnJhY3Rpb24gKiBmcmFtZUR1cmF0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMubW0KaW5kZXggNzVkNzNlZjQ4NDdkOTY0MTI0MDEwZjJkNGY0Nzdl
ODdmNzIxOGQ3ZC4uN2EzNzMyMGU3ZDJkZDgwOTg1ZGYyNGQzNjU3NzlkYWVlZDExMTU5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC04Myw3ICs4Myw3IEBAIFNl
Y29uZHMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjphbmltYXRpb25EdXJhdGlvbigp
CiAKIGJvb2wgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXF1aXJlc01vbWVudHVt
U2Nyb2xsaW5nKCkKIHsKLSAgICBpZiAobV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID09IFdU
Rjo6bnVsbG9wdCkKKyAgICBpZiAobV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID09IHN0ZDo6
bnVsbG9wdCkKICAgICAgICAgbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID0gbV9pbml0aWFs
U2Nyb2xsT2Zmc2V0ICE9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSB8fCBtX2luaXRpYWxWZWxv
Y2l0eS5hcmVhKCk7CiAgICAgcmV0dXJuIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZy52YWx1
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3Bw
CmluZGV4IDMyZjViM2FlNDE1NGEzN2ZkOGMyMjc5Y2EwMTU5YjU2N2NiNjk0NWIuLmQ1MDhiNmY5
YzhkMzM4MDBiZTM1NmMxM2IwNzZjOGZhZWRhM2UyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQCBjb25zdCBm
bG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAogT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewotICAgIC8vIEZJWE1FOiBUbyBtYXRjaCB0aGUgbWFjT1MgYmVoYXZp
b3VyIHdlIHNob3VsZCByZXR1cm4gV1RGOjpudWxsb3B0LgorICAgIC8vIEZJWE1FOiBUbyBtYXRj
aCB0aGUgbWFjT1MgYmVoYXZpb3VyIHdlIHNob3VsZCByZXR1cm4gc3RkOjpudWxsb3B0LgogICAg
IC8vIElmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2UgYXJlIHRoZSBkcmFnIHNvdXJjZSwgb3Ig
dGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldC4KICAgICAvLyBJZiB0aGlzIGNhbiBiZSBk
ZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9yRHJhZyBjYW4gYmUgcHVs
bGVkIGludG8KICAgICAvLyBXZWJDb3JlIGl0c2VsZi4KICAgICBpZiAoZHJhZ0RhdGEuY29udGFp
bnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uOjpDb3B5OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFn
RGF0YSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9SZXNvdXJjZVVzYWdl
VGhyZWFkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL1Jlc291cmNlVXNhZ2VUaHJl
YWRXaW4uY3BwCmluZGV4IDZjY2QxNmM5N2QwY2ZlMWU0OTI0MzY5ZmYxYTRkNTVlZjNiNTc2MTEu
LmY3NzQxYWYwN2RiZmJkYjI4MDkyODAzNzllZDlkZmJlMjRkMzRjM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL1Jlc291cmNlVXNhZ2VUaHJlYWRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL1Jlc291cmNlVXNhZ2VUaHJlYWRXaW4uY3BwCkBAIC0xMzEs
OCArMTMxLDggQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpwbGF0Zm9ybUNvbGxlY3RNZW1v
cnlEYXRhKEpTQzo6Vk0qIHZtLCBSZXNvdXJjZVVzYWdlRGEKIAogICAgIGRhdGEudG90YWxFeHRl
cm5hbFNpemUgPSBjdXJyZW50R0NPd25lZEV4dGVybmFsOwogCi0gICAgZGF0YS50aW1lT2ZOZXh0
RWRlbkNvbGxlY3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNh
bGxiYWNrKCktPnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpKSk7Ci0gICAgZGF0YS50aW1lT2ZOZXh0RnVsbENvbGxl
Y3Rpb24gPSBkYXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkt
PnRpbWVVbnRpbEZpcmUoKS52YWx1ZU9yKFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjppbmZpbml0eSgpKSk7CisgICAgZGF0YS50aW1lT2ZOZXh0RWRlbkNvbGxlY3Rpb24gPSBk
YXRhLnRpbWVzdGFtcCArIHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPnRpbWVVbnRp
bEZpcmUoKS52YWx1ZV9vcihTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5m
aW5pdHkoKSkpOworICAgIGRhdGEudGltZU9mTmV4dEZ1bGxDb2xsZWN0aW9uID0gZGF0YS50aW1l
c3RhbXAgKyB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT50aW1lVW50aWxGaXJlKCku
dmFsdWVfb3IoU2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkp
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQWJvcnRhYmxl
VGFza1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUu
aAppbmRleCAyYTY1MDIzYTkyMDM4OGEwYzI5OGUzOWE0ZWRmMTU4NTMwMzdkZTJkLi4xZDBjZjQ2
N2JlMmMyZTc2MTczOWI0MTIyYzExZDkyMTEwMzQwN2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9BYm9ydGFibGVUYXNrUXVldWUuaApAQCAtMTQ1LDkgKzE0NSw5IEBAIHB1YmxpYzoK
IAogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAgIGlmIChtX2Fib3J0
aW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgT3B0aW9uYWw8Uj4gcmVzcG9uc2UgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIE9wdGlvbmFsPFI+IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBwb3N0VGFzayhbdGhpcywgJnJlc3BvbnNlLCAmbWFpblRocmVhZFRhc2tIYW5kbGVyXSgp
IHsKICAgICAgICAgICAgIFIgcmVzcG9uc2VWYWx1ZSA9IG1haW5UaHJlYWRUYXNrSGFuZGxlcigp
OwogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0NvbnRlbnRUeXBlLmgKaW5kZXggZWVmOGI5M2NhOWE5NTI4MjI0YWVhMjNjNDQ1ZThhNDc1
NWMyM2RiMC4uZDIyMzAxODQ3YTIwMjM2YWMwOGViMWQwYjM0NWNlYjY1MzE4MjI0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7
CiAgICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7IENvbnRl
bnRUeXBlKFdURk1vdmUoKnR5cGUpKSB9OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llLmgK
aW5kZXggNWYwOTgwNmYxODMzMzM3NDdmZjZlOTI0MGUzNDVlN2ExMGZjMWVlZi4uODkzYTk0NTBh
NTIzZDdmNzIzZmJjNDU2NmY1YTUyZGRmNjQ0NzhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2ll
LmgKQEAgLTEzNCwzMSArMTM0LDMxIEBAIE9wdGlvbmFsPENvb2tpZT4gQ29va2llOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBDb29raWUgY29va2llOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29va2llLm5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2ll
LnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5kb21haW4pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBhdGgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29va2llLmNyZWF0ZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29v
a2llLmV4cGlyZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLmh0dHBPbmx5
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zZWN1cmUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY29va2llLnNlc3Npb24pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY29va2llLmNvbW1lbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2ll
LmNvbW1lbnRVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29va2llLnBvcnRzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvb2tpZS5zYW1lU2l0ZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIGNvb2tpZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0
ZUNvbXBvbmVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMu
Y3BwCmluZGV4IGVkYjVhOGQ1MjI2MmJhOWZiN2UxM2U5YWNjZjg4NTA0ZWZmMWQxYTEuLjljODgx
NWRlNDFiMmM3YjA2YjQ2MzNlNmExM2ExMDBiNGM2ZjY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgdW5zaWduZWQgY291bnREaWdpdHMoU3RyaW5n
UGFyc2luZ0J1ZmZlcgogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9w
dGlvbmFsPGludD4gcGFyc2VJbnQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyLCB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKQogewogICAgIGlm
IChtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlID4gYnVmZmVyLmxlbmd0aFJlbWFpbmluZygp
IHx8ICFtYXhpbXVtTnVtYmVyT2ZEaWdpdHNUb1BhcnNlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gV2UgZG9uJ3Qg
bmVlZCB0byBoYW5kbGUgbmVnYXRpdmUgbnVtYmVycyBmb3IgSVNPIDg2MDEuCiAKQEAgLTExNywx
MCArMTE3LDEwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxpbnQ+IHBhcnNlSW50KFN0cmluZ1BhcnNpbmdCdWZmCiAgICAgdW5zaWduZWQgZGlnaXRz
UmVtYWluaW5nID0gMDsKICAgICB3aGlsZSAoZGlnaXRzUmVtYWluaW5nIDwgbWF4aW11bU51bWJl
ck9mRGlnaXRzVG9QYXJzZSkgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdCgqYnVmZmVyKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICBpbnQgZGlnaXQgPSAqYnVmZmVyIC0gJzAnOwogICAgICAgICBp
ZiAodmFsdWUgPiAoSU5UX01BWCAtIGRpZ2l0KSAvIDEwKSAvLyBDaGVjayBmb3Igb3ZlcmZsb3cu
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgdmFsdWUgPSB2YWx1ZSAqIDEwICsgZGlnaXQ7CiAgICAgICAg
ICsrZGlnaXRzUmVtYWluaW5nOwogICAgICAgICArK2J1ZmZlcjsKQEAgLTEzMiw3ICsxMzIsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9uYWw8aW50PiBw
YXJzZUludFdpdGhpbkxpbWl0cyhTdHJpbgogewogICAgIGF1dG8gdmFsdWUgPSBwYXJzZUludChi
dWZmZXIsIG1heGltdW1OdW1iZXJPZkRpZ2l0c1RvUGFyc2UpOwogICAgIGlmICghKHZhbHVlICYm
ICp2YWx1ZSA+PSBtaW5pbXVtVmFsdWUgJiYgKnZhbHVlIDw9IG1heGltdW1WYWx1ZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0xOTAsMTIgKzE5MCwxMiBAQCBzdGF0aWMgYm9vbCB3
aXRoaW5IVE1MRGF0ZUxpbWl0cyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXksIGlu
dCBob3VyLCBpbgogdGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RhdGljIE9wdGlvbmFsPERhdGVDb21w
b25lbnRzPiBjcmVhdGVGcm9tU3RyaW5nKFN0cmluZ1ZpZXcgc291cmNlLCBGJiYgcGFyc2VGdW5j
dGlvbikKIHsKICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZWFk
Q2hhcmFjdGVyc0ZvclBhcnNpbmcoc291cmNlLCBbJl0oYXV0byBidWZmZXIpIC0+IE9wdGlvbmFs
PERhdGVDb21wb25lbnRzPiB7CiAgICAgICAgIERhdGVDb21wb25lbnRzIGRhdGU7CiAgICAgICAg
IGlmICghcGFyc2VGdW5jdGlvbihidWZmZXIsIGRhdGUpIHx8ICFidWZmZXIuYXRFbmQoKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICByZXR1cm4gZGF0ZTsKICAgICB9KTsKIH0KQEAgLTQ5MCw4ICs0OTAs
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIERhdGVDb21wb25lbnRz
OjpwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZgogCiAgICAgbV9ob3VyID0gKmhvdXI7CiAgICAg
bV9taW51dGUgPSAqbWludXRlOwotICAgIG1fc2Vjb25kID0gc2Vjb25kLnZhbHVlT3IoMCk7Ci0g
ICAgbV9taWxsaXNlY29uZCA9IG1pbGxpc2Vjb25kLnZhbHVlT3IoMCk7CisgICAgbV9zZWNvbmQg
PSBzZWNvbmQudmFsdWVfb3IoMCk7CisgICAgbV9taWxsaXNlY29uZCA9IG1pbGxpc2Vjb25kLnZh
bHVlX29yKDApOwogICAgIG1fdHlwZSA9IERhdGVDb21wb25lbnRzVHlwZTo6VGltZTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTUyNCw3ICs1MjQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGPiBz
dGF0aWMgT3B0aW9uYWw8RGF0ZUNvbXBvbmVudHM+IGNyZWF0ZUZyb21UaW1lT2Zmc2V0KGRvdWJs
ZQogewogICAgIERhdGVDb21wb25lbnRzIHJlc3VsdDsKICAgICBpZiAoIWZ1bmN0aW9uKHJlc3Vs
dCwgdGltZU9mZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycy5oCmluZGV4IDBl
N2E3NTMxNTY0NTRkZWY2NmU5Nzg1ZWJhM2MwYTlkMjg2YmFjZWIuLjIzYTMzODZiYjU4MDZiYWJk
YzdhMDk5OGQ3MWVlYmQ3OTRiODBlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzLmgKQEAgLTgzLDY3ICs4Myw2NyBAQCBPcHRp
b25hbDxEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzPiBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
OjpkZWNvZGUoRGVjb2RlciYgZAogewogICAgIEF0b21TdHJpbmcgdHlwZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgSW50UmVjdCBhbmNob3JSZWN0SW5Sb290Vmll
dzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFuY2hvclJlY3RJblJvb3RWaWV3KSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEF0b21TdHJpbmcgbG9jYWxlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9jYWxlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFN0cmluZyBjdXJyZW50VmFsdWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
dXJyZW50VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmluZz4gc3VnZ2VzdGlvblZhbHVlczsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1Z2dlc3Rpb25WYWx1ZXMpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVj
dG9yPFN0cmluZz4gbG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlczsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPFN0cmlu
Zz4gc3VnZ2VzdGlvbkxhYmVsczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1Z2dlc3Rpb25M
YWJlbHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgZG91YmxlIG1pbmltdW07CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtaW5pbXVtKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGRvdWJsZSBtYXhpbXVtOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWF4aW11bSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgc3RlcDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0ZXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG91YmxlIHN0ZXBCYXNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RlcEJhc2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCByZXF1aXJlZDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlcXVpcmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaXNBbmNob3JFbGVtZW50UlRM
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBbmNob3JFbGVtZW50UlRMKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGJvb2wgdXNlRGFya0FwcGVhcmFuY2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VEYXJr
QXBwZWFyYW5jZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGhhc1NlY29uZEZpZWxkOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzU2Vjb25kRmllbGQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNNaWxsaXNlY29u
ZEZpZWxkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzTWlsbGlzZWNvbmRGaWVsZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSh0eXBlKSwgYW5jaG9yUmVjdEluUm9vdFZpZXcsIFdU
Rk1vdmUobG9jYWxlKSwgV1RGTW92ZShjdXJyZW50VmFsdWUpLCBXVEZNb3ZlKHN1Z2dlc3Rpb25W
YWx1ZXMpLCBXVEZNb3ZlKGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMpLCBXVEZNb3ZlKHN1Z2dl
c3Rpb25MYWJlbHMpLCBtaW5pbXVtLCBtYXhpbXVtLCBzdGVwLCBzdGVwQmFzZSwgcmVxdWlyZWQs
IGlzQW5jaG9yRWxlbWVudFJUTCwgdXNlRGFya0FwcGVhcmFuY2UsIGhhc1NlY29uZEZpZWxkLCBo
YXNNaWxsaXNlY29uZEZpZWxkIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5k
ZXggY2UwZGZmMmNmYWYzYjVjZjU1MDcwZWI5OTFiZDVkYjFmMmM4ZTFmNy4uZDljYzZhZTNjN2Jk
YzdjM2Y5MTM3YTg2NjMyNjg1MzZkN2MzMGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0
YS5oCkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQ
dXJwb3NlIHsgRm9yRWRpdGluZywgRm9yRmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAK
ICAgICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhl
IGRyYWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0
b3AgbGVmdAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBPcHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+
ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5h
dGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gV1RGOjpudWxs
b3B0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9y
YWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgT3B0aW9uU2V0PERyYWdB
cHBsaWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4g
PSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE9wdGlvblNldDxEcmFnQXBw
bGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0g
YW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0
cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBP
cHRpb25TZXQ8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+ID0geyB9LCBPcHRpb25TZXQ8RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEID0gc3RkOjpudWxsb3B0KTsKICAgICAvLyBUaGlzIGNvbnN0cnVj
dG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVzZSBEcmFnRGF0YQogICAg
IC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3QgaW4gdGhlIGNvbnN0cnVj
dG9yLgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBX
RUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgT3B0aW9uU2V0PERyYWdBcHBs
aWNhdGlvbkZsYWdzPiA9IHsgfSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gPSB7IH0sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQgPSBzdGQ6Om51bGxvcHQpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBk
cmFnRGF0YU1hcCgpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNp
emUsIFN0cmluZyYgcGF0aG5hbWUpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShp
bnQgc2l6ZSwgdm9pZCogZGF0YUJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vSW1hZ2VFeHRyYWN0aW9uUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9J
bWFnZUV4dHJhY3Rpb25SZXN1bHQuaAppbmRleCA3MDE5ZWVlYTNjYWM0YzA4NzViYzg5MmEyNWM3
N2M3Yzg3OTMzN2Q1Li5iZjdkYTEzMjlmM2EzYjAyYWE5MDJmYTIwODZiYTQ1NDE5YTdmODdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9JbWFnZUV4dHJhY3Rpb25SZXN1bHQuaApA
QCAtNjMsMTIgKzYzLDEyIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEltYWdl
RXh0cmFjdGlvblRleHREYXRhPiBJbWFnZUV4dHJhY3Rpb25UZXh0RGF0CiAgICAgT3B0aW9uYWw8
U3RyaW5nPiB0ZXh0OwogICAgIGRlY29kZXIgPj4gdGV4dDsKICAgICBpZiAoIXRleHQpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxGbG9hdFF1YWQ+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGRlY29kZXIgPj4g
bm9ybWFsaXplZFF1YWQ7CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVy
biB7eyBXVEZNb3ZlKCp0ZXh0KSwgV1RGTW92ZSgqbm9ybWFsaXplZFF1YWQpIH19OwogfQpAQCAt
MTE0LDEyICsxMTQsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8SW1hZ2VF
eHRyYWN0aW9uTGluZURhdGE+IEltYWdlRXh0cmFjdGlvbkxpbmVEYXQKICAgICBPcHRpb25hbDxG
bG9hdFF1YWQ+IG5vcm1hbGl6ZWRRdWFkOwogICAgIGRlY29kZXIgPj4gbm9ybWFsaXplZFF1YWQ7
CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3RvcjxJbWFn
ZUV4dHJhY3Rpb25UZXh0RGF0YT4+IGNoaWxkcmVuOwogICAgIGRlY29kZXIgPj4gY2hpbGRyZW47
CiAgICAgaWYgKCFjaGlsZHJlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpub3JtYWxp
emVkUXVhZCksIFdURk1vdmUoKmNoaWxkcmVuKSB9fTsKIH0KQEAgLTE2MSwxMyArMTYxLDEzIEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPEltYWdlRXh0cmFjdGlvblJlc3VsdD4g
SW1hZ2VFeHRyYWN0aW9uUmVzdWx0OjpkCiAgICAgT3B0aW9uYWw8VmVjdG9yPEltYWdlRXh0cmFj
dGlvbkxpbmVEYXRhPj4gbGluZXM7CiAgICAgZGVjb2RlciA+PiBsaW5lczsKICAgICBpZiAoIWxp
bmVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogICAgIE9wdGlvbmFsPFZlY3Rv
cjxJbWFnZUV4dHJhY3Rpb25EYXRhRGV0ZWN0b3JJbmZvPj4gZGF0YURldGVjdG9yczsKICAgICBk
ZWNvZGVyID4+IGRhdGFEZXRlY3RvcnM7CiAgICAgaWYgKCFkYXRhRGV0ZWN0b3JzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICByZXR1cm4ge3sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDMy
YWFmOWM1YWRmY2I1OGM0NmU2YWM2M2I2YWI3MGFhNGMzZTQ1ZjQuLjBmNTQwZjkzNzJhYWQxMGJh
OTlmYTdmYjU4MGNlZjcwY2M1YzMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApA
QCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgTGVuZ3RoIHBhcnNlTGVuZ3RoKGNvbnN0IFVDaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgfQogICAgIGF1dG8gciA9IHBhcnNlSW50ZWdlcjxp
bnQ+KHsgZGF0YSwgaW50TGVuZ3RoIH0pOwogICAgIGlmIChuZXh0ID09ICcqJykKLSAgICAgICAg
cmV0dXJuIExlbmd0aChyLnZhbHVlT3IoMSksIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKKyAgICAg
ICAgcmV0dXJuIExlbmd0aChyLnZhbHVlX29yKDEpLCBMZW5ndGhUeXBlOjpSZWxhdGl2ZSk7CiAg
ICAgaWYgKHIpCiAgICAgICAgIHJldHVybiBMZW5ndGgoKnIsIExlbmd0aFR5cGU6OkZpeGVkKTsK
ICAgICByZXR1cm4gTGVuZ3RoKDAsIExlbmd0aFR5cGU6OlJlbGF0aXZlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCmluZGV4IDg3N2Y2ZTVhMGVmZTMyYWU3
ZDRjNzI3ZDRhMDIzY2UyNTZlNjM2MGEuLmQ0YjAyOWYyMjM5NzJiNzNhN2E5OTc4MWQyY2MxNGU3
MjJhZjM0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ0luaXRpYWxp
emF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nSW5pdGlhbGl6YXRpb24u
aApAQCAtMzgsNyArMzgsNyBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmco
KTsKIGJvb2wgaXNMb2dDaGFubmVsRW5hYmxlZChjb25zdCBTdHJpbmcmIG5hbWUpOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRMb2dDaGFubmVsVG9BY2N1bXVsYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyQWxsTG9nQ2hhbm5lbHNUb0FjY3VtdWxhdGUo
KTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZOZWNlc3Nhcnko
T3B0aW9uYWw8U3RyaW5nPiA9IFdURjo6bnVsbG9wdCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gPSBzdGQ6Om51
bGxvcHQpOwogCiAjZW5kaWYgLy8gIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRp
ZXNEZWNvZGluZ0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0
aWVzRGVjb2RpbmdJbmZvLmgKaW5kZXggMTg2MTc3NmIyZWI2YWZjOTYwNDkxZTQ5YzY4MjI0YmE5
YzlmOTNlMy4uMTU1YzlkNTFmMjY4ZDE0ZGJhNDY2OTNiOTk4YzIwNTEwNzRlNjQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNEZWNvZGluZ0lu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxpdGllc0RlY29k
aW5nSW5mby5oCkBAIC02NCwxMiArNjQsMTIgQEAgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNE
ZWNvZGluZ0luZm8+IE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvOjpkZWNvZGUoRGUKIHsK
ICAgICBhdXRvIGluZm8gPSBNZWRpYUNhcGFiaWxpdGllc0luZm86OmRlY29kZShkZWNvZGVyKTsK
ICAgICBpZiAoIWluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxNZWRpYURlY29kaW5nQ29uZmlndXJh
dGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbjsKICAgICBkZWNvZGVyID4+IHN1cHBvcnRlZENv
bmZpZ3VyYXRpb247CiAgICAgaWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIE1lZGlhQ2FwYWJpbGl0aWVzRGVjb2RpbmdJbmZvKAogICAgICAgICBXVEZNb3ZlKCpp
bmZvKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0
aWVzRW5jb2RpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxp
dGllc0VuY29kaW5nSW5mby5oCmluZGV4IDEyMjAwNjM1M2U1N2Y2Njg4OTNjN2U3ZDNiNzVhOGMw
NThhMmU5YzMuLjkxNTg3YmIzOWExNGYwNjEzOWZmZDUyMTE1YWQ0MWJkN2MzZWQ5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzRW5jb2RpbmdJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFDYXBhYmlsaXRpZXNFbmNv
ZGluZ0luZm8uaApAQCAtNjQsMTIgKzY0LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
RW5jb2RpbmdJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbzo6ZGVjb2RlKERlCiB7
CiAgICAgYXV0byBpbmZvID0gTWVkaWFDYXBhYmlsaXRpZXNJbmZvOjpkZWNvZGUoZGVjb2Rlcik7
CiAgICAgaWYgKCFpbmZvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb247CiAgICAgZGVjb2RlciA+PiBzdXBwb3J0ZWRD
b25maWd1cmF0aW9uOwogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBNZWRpYUNhcGFiaWxpdGllc0VuY29kaW5nSW5mbygKICAgICAgICAgV1RGTW92ZSgq
aW5mbyksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYUNhcGFiaWxp
dGllc0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzSW5m
by5oCmluZGV4IDIzM2FhNDY0ZTIyNzhjMWYxZWY5YWQ5YjgyNDQxZjdjYmEzNmYwNjcuLjc3MTVj
MjM2OTcwNGJkOTJlYWViMTBlODg0ZDBkZmY3MDIwNWU1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lZGlhQ2FwYWJpbGl0aWVzSW5mby5oCkBAIC01MiwxNyArNTIsMTcgQEAg
T3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiBNZWRpYUNhcGFiaWxpdGllc0luZm86OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBvcnRlZDsKICAg
ICBkZWNvZGVyID4+IHN1cHBvcnRlZDsKICAgICBpZiAoIXN1cHBvcnRlZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IHNtb290aDsKICAgICBkZWNvZGVyID4+IHNtb290aDsKICAgICBpZiAoIXNt
b290aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHBvd2VyRWZmaWNpZW50OwogICAgIGRlY29k
ZXIgPj4gcG93ZXJFZmZpY2llbnQ7CiAgICAgaWYgKCFwb3dlckVmZmljaWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7ewogICAgICAgICAqc3VwcG9ydGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
T0RJbnRlcnZhbFRyZWUuaAppbmRleCAyY2JjNTFkNTY5ZGQ2YzllODI3NzE2NWYxOGM0MTE0Zjcx
NjE1ZGIwLi44YzVkNjE1OTZiMzFlMDNlYTM1YTQ4MDUxYjM2MzJiZjk0ZWYyYTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaApAQCAtNjQsNyArNjQsNyBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBhdXRvIG5leHQgPSBzbWFsbGVzdE5vZGVHcmVhdGVyVGhh
bkZyb20ocG9pbnQsIHRoaXMtPnJvb3QoKSk7CiAgICAgICAgIGlmICghbmV4dCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICByZXR1cm4gbmV4dC0+ZGF0YSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkLmNwcAppbmRleCA3YzEwYWVjM2NmNTYzYTA3Y2NkZjE1ZGZkMzViMmRk
N2JhMWUwMzYzLi4yNjEwNGY0M2JkYTYyMWZkYjMxNDIzNzg3YTNkYTU5ZWJhYjZkMTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcApAQCAtNjgsNyArNjgsNyBAQCBPcHRp
b25hbDxWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPj4gUGFzdGVib2FyZDo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKCkgY29uc3QKICAgICBpZiAoYXV0byogc3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkpCiAgICAgICAgIHJldHVybiBzdHJhdGVneS0+
YWxsUGFzdGVib2FyZEl0ZW1JbmZvKG5hbWUoKSwgbV9jaGFuZ2VDb3VudCwgY29udGV4dCgpKTsK
ICNlbmRpZgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQYXN0ZWJvYXJkOjpwYXN0ZWJv
YXJkSXRlbUluZm8oc2l6ZV90IGluZGV4KSBjb25zdApAQCAtNzksNyArNzksNyBAQCBPcHRpb25h
bDxQYXN0ZWJvYXJkSXRlbUluZm8+IFBhc3RlYm9hcmQ6OnBhc3RlYm9hcmRJdGVtSW5mbyhzaXpl
X3QgaW5kZXgpIGNvbnN0CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpbmRleCk7CiAjZW5kaWYK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKHNpemVfdCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGFmNTQ3MTVkOGFj
OGU2Zjg3YzQxYmZhZmU3ZmFiMmZmNjM2NDhkOTcuLjA1YzZhZmU0NTdmZjllOTFkZmIxOTI1ZTI0
OGE3NzQxYzljNTY4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTIx
Myw5ICsyMTMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyKCk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFN0cmlu
ZyYgdHlwZSk7CiAKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJv
YXJkUGxhaW5UZXh0JiwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSA9IFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3k6OkFsbG93VVJMLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6
bnVsbG9wdCk7Ci0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5OjpBbnlUeXBlLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6
bnVsbG9wdCk7Ci0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2Fy
ZEZpbGVSZWFkZXImLCBPcHRpb25hbDxzaXplX3Q+IGl0ZW1JbmRleCA9IFdURjo6bnVsbG9wdCk7
CisgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4
dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eTo6QW55VHlwZSwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBzdGQ6Om51bGxvcHQpOwor
ICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVy
JiwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXggPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgc3Rh
dGljIGJvb2wgY2FuV3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRJdGVtSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEl0ZW1JbmZvLmgKaW5kZXggZjBkNWVhNDBj
N2JjMGM1YTUwMjExMWRjZmE4MzhmYTczM2ZkNjljZi4uYjFjN2Q0NzhmMzcxZjZjY2NkNTRhZGVm
ZDY3OGVhMmQ3YTc2MmUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFz
dGVib2FyZEl0ZW1JbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZEl0ZW1JbmZvLmgKQEAgLTU2LDEwICs1NiwxMCBAQCBPcHRpb25hbDxQcmVzZW50YXRpb25TaXpl
PiBQcmVzZW50YXRpb25TaXplOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBQcmVz
ZW50YXRpb25TaXplIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53aWR0
aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oZWlnaHQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzNSwzMSArMTM1LDMxIEBAIE9wdGlvbmFsPFBhc3Rl
Ym9hcmRJdGVtSW5mbz4gUGFzdGVib2FyZEl0ZW1JbmZvOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBQYXN0ZWJvYXJkSXRlbUluZm8gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnBhdGhzRm9yRmlsZVVwbG9hZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5wbGF0Zm9ybVR5cGVzRm9yRmlsZVVwbG9hZCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wbGF0Zm9ybVR5cGVzQnlGaWRlbGl0eSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWdnZXN0ZWRGaWxlTmFtZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTm9uVGV4dFR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGFpbnNGaWxlVVJMQW5kRmlsZVVw
bG9hZENvbnRlbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViU2Fm
ZVR5cGVzQnlGaWRlbGl0eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5w
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3BwCmluZGV4IGY3ZTk3YzJh
OTQ1YjczZTQ4NTA3M2JiNzNiMmUxZjNmMmNlNTVhZWEuLmJlMDQ2MDE1MDU1YTVmYmQ4NDdhNzU3
MzJjMjE0OTAyNWVlYzNmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
ZmVycmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBv
bGljeS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFJlZmVycmVyUG9saWN5
PiBwYXJzZVJlZmVycmVyUG9saWN5VG9rZW4oU3RyaW5nVmlldyBwb2xpY3ksIFNob3UKICAgICBp
ZiAoIXBvbGljeS5pc051bGwoKSAmJiBwb2xpY3kuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogICAgIAogT3B0aW9uYWw8UmVmZXJyZXJQb2xp
Y3k+IHBhcnNlUmVmZXJyZXJQb2xpY3koU3RyaW5nVmlldyBwb2xpY3lTdHJpbmcsIFJlZmVycmVy
UG9saWN5U291cmNlIHNvdXJjZSkKQEAgLTg2LDcgKzg2LDcgQEAgT3B0aW9uYWw8UmVmZXJyZXJQ
b2xpY3k+IHBhcnNlUmVmZXJyZXJQb2xpY3koU3RyaW5nVmlldyBwb2xpY3lTdHJpbmcsIFJlZmVy
cmVyUG8KICAgICAgICAgcmV0dXJuIHBhcnNlUmVmZXJyZXJQb2xpY3lUb2tlbihwb2xpY3lTdHJp
bmcsIFNob3VsZFBhcnNlTGVnYWN5S2V5d29yZHM6Ok5vKTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBTdHJpbmcgcmVmZXJyZXJQb2xpY3lUb1N0cmluZyhjb25zdCBSZWZlcnJl
clBvbGljeSYgcmVmZXJyZXJQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0
cmFibGVEb21haW4uaAppbmRleCBhNWZhMDc3ZDE2NzE5Yjg2YWJkY2Y4Zjk3YTE2NzhmMzZmZmQ3
OTQzLi4xYjdlNWRjMTIzOGFmMDRmZjllOTA5ZTljNDFiZDA5OTljZDMyYzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTE0Nyw3ICsxNDcsNyBA
QCBPcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gUmVnaXN0cmFibGVEb21haW46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFN0cmluZz4gZG9tYWluOwogICAgIGRlY29k
ZXIgPj4gZG9tYWluOwogICAgIGlmICghZG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW47CiAgICAgcmVnaXN0cmFibGVEb21haW4ubV9yZWdpc3RyYWJs
ZURvbWFpbiA9IFdURk1vdmUoKmRvbWFpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKaW5kZXggODhiNzU0ZDgxZWI2NjdhOGNhYTc1MTQ5NTk4NDNlZThlY2U3
MTY4YS4uZDZlOTdlM2EyMDkxNDE4OTE3N2Y2MDczYTIwMTQ5M2E4NDAxNDExZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaApAQCAtODEsMTIgKzgxLDEyIEBA
IE9wdGlvbmFsPFNjcmVlblByb3BlcnRpZXM+IFNjcmVlblByb3BlcnRpZXM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBsYXRmb3JtRGlzcGxheUlEPiBwcmltYXJ5RGlz
cGxheUlEOwogICAgIGRlY29kZXIgPj4gcHJpbWFyeURpc3BsYXlJRDsKICAgICBpZiAoIXByaW1h
cnlEaXNwbGF5SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTY3JlZW5EYXRhTWFwPiBzY3JlZW5EYXRh
TWFwOwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGF0YU1hcDsKICAgICBpZiAoIXNjcmVlbkRhdGFN
YXApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICpwcmltYXJ5RGlzcGxheUlELCBXVEZNb3ZlKCpzY3Jl
ZW5EYXRhTWFwKSB9IH07CiB9CkBAIC0xMTEsNzAgKzExMSw3MCBAQCBPcHRpb25hbDxTY3JlZW5E
YXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IHNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5BdmFp
bGFibGVSZWN0OwogICAgIGlmICghc2NyZWVuQXZhaWxhYmxlUmVjdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZsb2F0UmVjdD4gc2NyZWVuUmVjdDsKICAgICBkZWNvZGVyID4+IHNjcmVlblJlY3Q7CiAg
ICAgaWYgKCFzY3JlZW5SZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPiBzY3JlZW5Db2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gc2NyZWVuQ29sb3JTcGFjZTsK
ICAgICBpZiAoIXNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVl
bkRlcHRoOwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3JlZW5EZXB0
aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CiAgICAg
ZGVjb2RlciA+PiBzY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKICAgICBpZiAoIXNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yOwogICAgIGRlY29kZXIgPj4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwog
ICAgIGlmICghc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Ym9vbD4gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5IYXNJ
bnZlcnRlZENvbG9yczsKICAgICBpZiAoIXNjcmVlbkhhc0ludmVydGVkQ29sb3JzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwogICAgIGRl
Y29kZXIgPj4gc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwogICAgIGlmICghc2NyZWVu
U3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE9w
dGlvbmFsPGJvb2w+IHNjcmVlbklzTW9ub2Nocm9tZTsKICAgICBkZWNvZGVyID4+IHNjcmVlbklz
TW9ub2Nocm9tZTsKICAgICBpZiAoIXNjcmVlbklzTW9ub2Nocm9tZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBkaXNwbGF5TWFzazsKICAgICBkZWNvZGVyID4+IGRpc3BsYXlNYXNrOwog
ICAgIGlmICghZGlzcGxheU1hc2spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJT1JlZ2lzdHJ5R1BVSUQ+
IGdwdUlEOwogICAgIGRlY29kZXIgPj4gZ3B1SUQ7CiAgICAgaWYgKCFncHVJRCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPER5bmFtaWNSYW5nZU1vZGU+IHByZWZlcnJlZER5bmFtaWNSYW5nZU1vZGU7CiAg
ICAgZGVjb2RlciA+PiBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwogICAgIGlmICghcHJlZmVy
cmVkRHluYW1pY1JhbmdlTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIE9wdGlvbmFsPGZsb2F0PiBzY2FsZUZhY3RvcjsKICAg
ICBkZWNvZGVyID4+IHNjYWxlRmFjdG9yOwogICAgIGlmICghc2NhbGVGYWN0b3IpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5k
aWYKIAogICAgIHJldHVybiB7IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKaW5kZXggMWJkODJmZmFhOWU1ZjMxOGVkY2M5ZjJkNmM4
NDFhODljYmNiOTQwMS4uNzg2YzQ5NjNhZGVkMDUwZmViZDNiMjc2N2Q3NzIxMzgyMzMxZjI4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yy5jcHAKQEAgLTE3NCw4ICsxNzQsOCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0
YXJ0KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxQb3NpdGlvbiwgY29uc3QgRmxvYQogCiAgICAg
aWYgKCF2ZWxvY2l0eS54KCkgJiYgIXZlbG9jaXR5LnkoKSkgewogICAgICAgICBtX3Bvc2l0aW9u
ID0gaW5pdGlhbFBvc2l0aW9uOwotICAgICAgICBtX2hvcml6b250YWxEYXRhID0gV1RGOjpudWxs
b3B0OwotICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9o
b3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMiwxNCArMjAyLDE0
IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnQoY29uc3QgRmxvYXRQb2ludCYg
aW5pdGlhbFBvc2l0aW9uLCBjb25zdCBGbG9hCiAgICAgICAgICAgICBleHRlbnRzLm1heGltdW1T
Y3JvbGxQb3NpdGlvbi54KCksCiAgICAgICAgICAgICBpbml0aWFsUG9zaXRpb24ueCgpLCBhY2N1
bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7CiAgICAgfSBl
bHNlCi0gICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
aG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobWF5VlNjcm9sbCkgewog
ICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9s
bFBvc2l0aW9uLnkoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbFBvc2l0aW9u
LnkoKSwKICAgICAgICAgICAgIGluaXRpYWxQb3NpdGlvbi55KCksIGFjY3VtdWxhdGVWZWxvY2l0
eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1f
dmVydGljYWxEYXRhID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIG1fcG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247CiAgICAgbV9z
dGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHRpY2tUaW1lIC8gMi47CkBAIC0yMjEs
MTAgKzIyMSwxMCBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRpbWVy
RmlyZWQoKQogICAgIGF1dG8gZGVsdGEgPSBkZWx0YVRvTmV4dEZyYW1lKCk7CiAKICAgICBpZiAo
bV9ob3Jpem9udGFsRGF0YSAmJiAhbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3Jv
bGwoZGVsdGEpKQotICAgICAgICBtX2hvcml6b250YWxEYXRhID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG1fdmVydGlj
YWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVsdGEpKQot
ICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV92ZXJ0aWNh
bERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiBvbmUgb2YgdGhlIGF4ZXMgZGlkbid0
IGZpbmlzaCBpdHMgYW5pbWF0aW9uIHdlIG11c3QgY29udGludWUgaXQuCiAgICAgaWYgKG1faG9y
aXpvbnRhbERhdGEgfHwgbV92ZXJ0aWNhbERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCmluZGV4IDA1NzVkMjE5MWJhZTJiNzQ4MTJiM2I5MmFhYmEzM2JmMzVmMDJhYmEu
LjNkMmY2MmVmYjAwMDc1M2M3NjYyNDQyYjc5MzQxMjM1MTQ0NzVlNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC00NzQsOCArNDc0LDggQEAgdm9pZCBTY3JvbGxW
aWV3OjpoYW5kbGVEZWZlcnJlZFNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKQog
ICAgIGVsc2UgaWYgKG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzKQogICAgICAgICBzY3JvbGxPZmZz
ZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzLnZh
bHVlKCkuZmlyc3QsIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzLnZhbHVlKCkuc2Vjb25kKTsKICAg
ICAKLSAgICBtX2RlZmVycmVkU2Nyb2xsRGVsdGEgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9kZWZl
cnJlZFNjcm9sbE9mZnNldHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9kZWZlcnJlZFNjcm9sbERl
bHRhID0gc3RkOjpudWxsb3B0OworICAgIG1fZGVmZXJyZWRTY3JvbGxPZmZzZXRzID0gc3RkOjpu
dWxsb3B0OwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnNjcm9sbFRvKGNvbnN0IFNjcm9sbFBvc2l0
aW9uJiBuZXdQb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaAppbmRleCA2OWYwN2Y0NGJiYjAxZmNlMGE2OGZhODUyMzM5N2U5Nzk2NDZlM2UwLi5hZWUw
ZDg3NmVmMzY2OGM1YTAxODlmYzIyNzI0MDc1NzAzYTMyM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUp
IGZpbmFsOwogCi0gICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmLCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5ID0gUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeTo6QWxsb3dVUkwsIE9w
dGlvbmFsPHNpemVfdD4gPSBXVEY6Om51bGxvcHQpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBPcHRp
b25hbDxzaXplX3Q+ID0gV1RGOjpudWxsb3B0KSBmaW5hbCB7IH0KKyAgICB2b2lkIHJlYWQoUGFz
dGVib2FyZFBsYWluVGV4dCYsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3kgPSBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5OjpBbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiA9IHN0ZDo6bnVsbG9w
dCkgZmluYWwgeyB9CisgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwg
V2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIE9wdGlvbmFsPHNpemVfdD4gPSBzdGQ6Om51bGxvcHQp
IGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikgZmluYWw7
CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lLmNwcAppbmRleCBjNjY2ZWRiNjhlYjIwZWZmY2Y0NzMyMThlMzA1YTc0Y2Q3
NDdjOWQyLi5iYzk3ZTRlNGJmNTQyN2VjZWQ3MWY4N2M0ZTFjOGE0ZmM1YjkyZWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhlbWUuY3BwCkBAIC00MCw3ICs0MCw3IEBAIGludCBUaGVtZTo6YmFzZWxp
bmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0CiAKIE9wdGlvbmFsPEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24+IFRoZW1lOjpjb250cm9sRm9udChDb250cm9sUGFydCwgY29uc3Qg
Rm9udENhc2NhZGUmLCBmbG9hdCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIExlbmd0aFNpemUgVGhlbWU6OmNvbnRyb2xT
aXplKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmIHpv
b21lZFNpemUsIGZsb2F0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKaW5kZXggZDVmMDZl
YzdjYzJjZTFlNzE4N2Q2MTMyOTU2ZTBhOGJkNjBlM2NjYy4uNTZmNzY1NzgxYzNiMTM3NGEyMTYy
NTk1YjFiMDkyYjllZGQ3NTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZpcmVkKCkgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDxNb25vdG9uaWNUaW1lPiBhbGlnbmVkRmlyZVRpbWUoTW9u
b3RvbmljVGltZSkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBP
cHRpb25hbDxNb25vdG9uaWNUaW1lPiBhbGlnbmVkRmlyZVRpbWUoTW9ub3RvbmljVGltZSkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3ko
KSBjb25zdDsKICAgICB2b2lkIGNoZWNrSGVhcEluZGV4KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0lPQ2FsbGJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvSU9DYWxsYmFjay5oCmluZGV4IDIzNzY5MGMwMmNj
YWZkZDZjNTk0Njk5OTMxNTU4NzU1MzFmYTNhMDEuLmMyOWI4NTg2NjAyZWNlMTEwYjY2MmM1ODEw
ZTliZTdjNDJhMzE2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvSU9DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvSU9DYWxsYmFjay5oCkBAIC01MywxMiArNTMsMTIgQEAgc3RydWN0IEF1ZGlvSU9Qb3NpdGlv
biB7CiAgICAgICAgIE9wdGlvbmFsPFNlY29uZHM+IHBvc2l0aW9uOwogICAgICAgICBkZWNvZGVy
ID4+IHBvc2l0aW9uOwogICAgICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8TW9ub3RvbmljVGltZT4gdGltZXN0YW1wOwogICAgICAgICBkZWNvZGVyID4+
IHRpbWVzdGFtcDsKICAgICAgICAgaWYgKCF0aW1lc3RhbXApCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICByZXR1cm4gQXVkaW9JT1Bvc2l0aW9uIHsgKnBvc2l0aW9uLCAqdGltZXN0YW1wIH07CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmgKaW5kZXggNDk1YjEzMDA1N2E0OGU5NDdlODA1MzMwM2RjNjAzZDIxOWFhOGEwNy4u
N2FhYzUyNGI0OTYwNTk2YWJkMTIwZjFhMDU4MzA5MWUyMTU4MDg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC0y
OTcsNyArMjk3LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gaW5saW5lIE9wdGlvbmFsPFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW0KICAgICBPcHRpb25hbDxPcHRp
b25hbDx0eXBlPj4gbmFtZTsgXAogICAgIGRlY29kZXIgPj4gbmFtZTsgXAogICAgIGlmICghbmFt
ZSkgXAotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7IFwKIAogICAgIERFQ09ERSh0aW1lLCBkb3VibGUpOwogICAgIERFQ09ERShmYXN0
U2VlaywgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCAwZmVhOTI1YzRmMzE5M2ZjMTZlMTAxYzU5Y2E3ZjVlMWUwZGM2OGNmLi5kZDQ4
MjlkMzdjMjNhNmQ1ZjI1MDYzMDA1MmI0YjIwYWVmM2VlZGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9X
ZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8R3N0QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3Jj
QWxsb2NhdGVCdWZmZXJzKFdlYgogICAgIGlmICghcHJpdi0+ZGVzdGluYXRpb24gfHwgIXByaXYt
PmJ1cykgewogICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUihzcmMsIENPUkUsIEZBSUxFRCwgKCJJ
bnRlcm5hbCBXZWJBdWRpb1NyYyBlcnJvciIpLCAoIkNhbid0IHN0YXJ0IHdpdGhvdXQgZGVzdGlu
YXRpb24gb3IgYnVzIikpOwogICAgICAgICBnc3RfdGFza19zdG9wKHNyYy0+cHJpdi0+dGFzay5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgQVNTRVJUKHByaXYtPnBvb2wpOwpAQCAtMzE5LDcgKzMx
OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8R1JlZlB0cjxHc3RCdWZmZXI+Pj4gd2ViS2l0
V2ViQXVkaW9TcmNBbGxvY2F0ZUJ1ZmZlcnMoV2ViCiAgICAgICAgICAgICAvLyBGTFVTSElORyBh
bmQgRU9TIGFyZSBub3QgZXJyb3JzLgogICAgICAgICAgICAgaWYgKHJldCA8IEdTVF9GTE9XX0VP
UyB8fCByZXQgPT0gR1NUX0ZMT1dfTk9UX0xJTktFRCkKICAgICAgICAgICAgICAgICBHU1RfRUxF
TUVOVF9FUlJPUihzcmMsIENPUkUsIFBBRCwgKCJJbnRlcm5hbCBXZWJBdWRpb1NyYyBlcnJvciIp
LCAoIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgZm9yIGZsb3c6ICVzIiwgZ3N0X2Zsb3dfZ2V0
X25hbWUocmV0KSkpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoYnVm
ZmVyKTsKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEdSZWZQdHI8
R3N0QnVmZmVyPj4+IHdlYktpdFdlYkF1ZGlvU3JjQWxsb2NhdGVCdWZmZXJzKFdlYgogICAgICAg
ICBjaGFubmVsQnVmZmVyTGlzdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsKGNoYW5uZWxCdWZmZXJMaXN0KTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKGNoYW5uZWxCdWZmZXJMaXN0KTsKIH0KIAogc3RhdGlj
IHZvaWQgd2ViS2l0V2ViQXVkaW9TcmNSZW5kZXJBbmRQdXNoRnJhbWVzKEdSZWZQdHI8R3N0RWxl
bWVudD4mJiBlbGVtZW50LCBWZWN0b3I8R1JlZlB0cjxHc3RCdWZmZXI+PiYmIGNoYW5uZWxCdWZm
ZXJMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9NZWRpYVNlc3Npb25IZWxwZXJJT1MubW0KaW5kZXggMjZiYjQxMTAwMWQ3ZWZiYzBiZjI2Y2I2
MTM5ZjAyMDE3ZTZhMTVmNy4uZWRlZjMwN2YyN2FjM2I4ZGJkZjgyYTdiY2U2NDMyOWIzZWZlYWNk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vz
c2lvbkhlbHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uSGVscGVySU9TLm1tCkBAIC0yNDUsNyArMjQ1LDcgQEAgTWVkaWFTZXNzaW9u
SGVscGVyaU9TOjpNZWRpYVNlc3Npb25IZWxwZXJpT1MoKQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlMKIAogI2lmIEhBVkUoQ0VMRVNUSUFMKQotICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5l
Y3RlZChXVEY6Om51bGxvcHQpOworICAgIHVwZGF0ZUNhclBsYXlJc0Nvbm5lY3RlZChzdGQ6Om51
bGxvcHQpOwogI2VuZGlmCiB9CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIE1lZGlhU2Vzc2lv
bkhlbHBlcmlPUzo6c3RvcE1vbml0b3JpbmdXaXJlbGVzc1JvdXRlc0ludGVybmFsKCkKICNpZiBI
QVZFKENFTEVTVElBTCkKIHZvaWQgTWVkaWFTZXNzaW9uSGVscGVyaU9TOjptZWRpYVNlcnZlckNv
bm5lY3Rpb25EaWVkKCkKIHsKLSAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoV1RGOjpudWxs
b3B0KTsKKyAgICB1cGRhdGVDYXJQbGF5SXNDb25uZWN0ZWQoc3RkOjpudWxsb3B0KTsKIAogICAg
IC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugb25jZSByZGFyOi8vMjc2NjI3MTYgbGFuZHMKICAgICBp
ZiAoY2FuTG9hZEFWU3lzdGVtQ29udHJvbGxlcl9DYXJQbGF5SXNDb25uZWN0ZWREaWRDaGFuZ2VO
b3RpZmljYXRpb24oKSAmJiBjYW5Mb2FkQVZTeXN0ZW1Db250cm9sbGVyX1N1YnNjcmliZVRvTm90
aWZpY2F0aW9uc0F0dHJpYnV0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KaW5kZXggY2E4NzAxZjA2ZjA3YmMyODQ0MTJj
ZWRlZDU3OGRiY2FkYTRmNmRjNC4uZjQxMDY2ZmRhNDk5Nzk2MzRhNzYyNWE4NzI3ZmJmZDFiN2Nl
MjE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBBdWRpb1Nlc3Npb25NYWM6
OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiAgICAgaWYgKCFtX3BsYXlpbmdUb0JsdWV0b290
aCB8fCAqbV9wbGF5aW5nVG9CbHVldG9vdGggPT0gZGVmYXVsdERldmljZVRyYW5zcG9ydElzQmx1
ZXRvb3RoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0g
V1RGOjpudWxsb3B0OworICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0gc3RkOjpudWxsb3B0Owog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXRmb3JtUGFzdGVib2FyZENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGxhdGZvcm1QYXN0ZWJvYXJkQ29jb2EubW0KaW5kZXggZDM5Zjc1ZDQ4MWVjY2FmN2NhMjY2YzYx
NjVhYmRmMmRkYTEwN2MxNi4uNjE1Y2JiNGExYjAyYWFiZmI5MWU0OGI1NWRhZTRhMDY3N2U1Yjhj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZvcm1QYXN0
ZWJvYXJkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxhdGZv
cm1QYXN0ZWJvYXJkQ29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogT3B0aW9uYWw8VmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4+IFBsYXRmb3JtUGFzdGVib2Fy
ZDo6YWxsUGFzdGVib2FyZEl0ZW1JbmZvKGludDY0X3QgY2hhbmdlQ291bnQpCiB7CiAgICAgaWYg
KGNoYW5nZUNvdW50ICE9IFttX3Bhc3RlYm9hcmQgY2hhbmdlQ291bnRdKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVj
dG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4gaXRlbUluZm87CiAgICAgaW50IG51bWJlck9mSXRlbXMg
PSBjb3VudCgpOwpAQCAtNDksNyArNDksNyBAQCBPcHRpb25hbDxWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPj4gUGxhdGZvcm1QYXN0ZWJvYXJkOjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oaQogICAg
IGZvciAoTlNJbnRlZ2VyIGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRleCA8IG51bWJlck9mSXRlbXM7
ICsraXRlbUluZGV4KSB7CiAgICAgICAgIGF1dG8gaXRlbSA9IGluZm9ybWF0aW9uRm9ySXRlbUF0
SW5kZXgoaXRlbUluZGV4LCBjaGFuZ2VDb3VudCk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIGl0ZW1JbmZvLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCppdGVtKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCBiYzcxYjE4NDZh
YzVhMDBmNWJmYmU5MTdmZWY5MzA4ZTE1NDQ0NjgwLi4wODliM2Q4MTc5OWNmNWQ0NzRlZDJlYjZh
ZmY0MDMyNGVjMDI0MzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAt
NTgyLDcgKzU4Miw3IEBAIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICBpZiAoIXNlbGVjdGVkSW5k
ZXggJiYgZGlzcGxheU1vZGUgPT0gTWVkaWFDb250cm9sc0hvc3Q6OmZvcmNlZE9ubHlLZXl3b3Jk
KCkpCiAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBvZmZJbmRleDsKIAotICAgIHJldHVybiBzZWxl
Y3RlZEluZGV4LnZhbHVlT3Ioc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsK
KyAgICByZXR1cm4gc2VsZWN0ZWRJbmRleC52YWx1ZV9vcihzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCkpOwogfQogCiBib29sIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uLmgKaW5kZXggODUyNTg3Y2VkYTA1MTIxNDQ3OTUyMmZhYzM4ZTRjMGZiOTg3
NDlmYy4uMDAwMGMyZTdiZmUyODQ2MTQ4MjIzMGUxZDgyYmQwOGJmNmJlZGZhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24uaApAQCAtNjcsMzcgKzY3LDM3IEBAIHN0cnVjdCBD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBsYWJl
bDsKICAgICAgICAgZGVjb2RlciA+PiBsYWJlbDsKICAgICAgICAgaWYgKCFsYWJlbCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBpbml0RGF0YVR5cGVzOwog
ICAgICAgICBkZWNvZGVyID4+IGluaXREYXRhVHlwZXM7CiAgICAgICAgIGlmICghaW5pdERhdGFU
eXBlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFi
aWxpdHk+PiBhdWRpb0NhcGFiaWxpdGllczsKICAgICAgICAgZGVjb2RlciA+PiBhdWRpb0NhcGFi
aWxpdGllczsKICAgICAgICAgaWYgKCFhdWRpb0NhcGFiaWxpdGllcykKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxpdHk+PiB2aWRlb0NhcGFiaWxp
dGllczsKICAgICAgICAgZGVjb2RlciA+PiB2aWRlb0NhcGFiaWxpdGllczsKICAgICAgICAgaWYg
KCF2aWRlb0NhcGFiaWxpdGllcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPENETVJl
cXVpcmVtZW50PiBkaXN0aW5jdGl2ZUlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gZGlz
dGluY3RpdmVJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRpc3RpbmN0aXZlSWRlbnRpZmllcikK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgT3B0aW9uYWw8Q0RNUmVxdWlyZW1lbnQ+IHBl
cnNpc3RlbnRTdGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBwZXJzaXN0ZW50U3RhdGU7CiAgICAg
ICAgIGlmICghcGVyc2lzdGVudFN0YXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPENETVNlc3Npb25UeXBlPj4gc2Vzc2lvblR5cGVzOwogICAgICAgICBkZWNvZGVyID4+
IHNlc3Npb25UeXBlczsKICAgICAgICAgaWYgKCFzZXNzaW9uVHlwZXMpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETU1lZGlhQ2FwYWJp
bGl0eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFD
YXBhYmlsaXR5LmgKaW5kZXggZjg0YTBkMTJhYjRjZDUyMGUzZjBlMDRkNjRlYmVmYzYzMTYyNTg3
ZC4uY2I1MDA0ZjNjZDc4YzY1MWFiYmExMzQxZGVmNmYyZWNiNzcyYzIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFDYXBhYmlsaXR5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTWVkaWFD
YXBhYmlsaXR5LmgKQEAgLTU0LDE3ICs1NCwxNyBAQCBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5
IHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZTsKICAgICAgICAgZGVjb2Rl
ciA+PiBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFjb250ZW50VHlwZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcm9idXN0bmVzczsKICAgICAgICAgZGVjb2RlciA+
PiByb2J1c3RuZXNzOwogICAgICAgICBpZiAoIXJvYnVzdG5lc3MpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxPcHRpb25hbDxDRE1FbmNyeXB0aW9uU2NoZW1lPj4gZW5jcnlwdGlvblNj
aGVtZTsKICAgICAgICAgZGVjb2RlciA+PiBlbmNyeXB0aW9uU2NoZW1lOwogICAgICAgICBpZiAo
IWVuY3J5cHRpb25TY2hlbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAg
ICAgICAgIFdURk1vdmUoKmNvbnRlbnRUeXBlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKaW5kZXggZDI1ZjYyZTJhOGY4
MDk0Y2JmNTE5MzlkNjE4NGQ5ZmRhMTk0NzdjNi4uNzQxNTQ0MTM3ZjA0OTM4ZjVkYjAzZjU0NTYy
NTIzYjMxYjRjNzhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCB2b2lkIENETVBy
aXZhdGU6OmRvU3VwcG9ydGVkQ29uZmlndXJhdGlvblN0ZXAoQ0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbiYmIGNhbmRpZAogICAgIC8vIHJlc3RyaWN0aW9ucyBhbmQgb3JpZ2luLgogICAgIGF1dG8g
b3B0aW9uYWxDb25maWd1cmF0aW9uID0gZ2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjYW5kaWRh
dGVDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMsIGFjY2Vzcyk7CiAgICAgaWYgKCFvcHRpb25h
bENvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGF1dG8gY29uc2VudENhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBhY2Nlc3NdIChDb25zZW50U3RhdHVzIHN0YXR1
cywgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24sIENETVJlc3RyaWN0
aW9ucyYmIHJlc3RyaWN0aW9ucykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIDMuMS4xLjIgR2V0IFN1cHBvcnRlZCBDb25maWd1cmF0aW9uIGFuZCBDb25zZW50LCBjdGQu
CkBAIC0xNjYsNyArMTY2LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4g
Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogCiAgICAgICAgIC8v
IDMuMy4gSWYgc3VwcG9ydGVkIHR5cGVzIGlzIGVtcHR5LCByZXR1cm4gTm90U3VwcG9ydGVkLgog
ICAgICAgICBpZiAoc3VwcG9ydGVkVHlwZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgLy8gMy40LiBTZXQgdGhlIGluaXREYXRhVHlwZXMgbWVtYmVyIG9mIGFjY3VtdWxhdGVkIGNv
bmZpZ3VyYXRpb24gdG8gc3VwcG9ydGVkIHR5cGVzLgogICAgICAgICBhY2N1bXVsYXRlZENvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcyA9IFdURk1vdmUoc3VwcG9ydGVkVHlwZXMpOwpAQCAtMTg3
LDcgKzE4Nyw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZh
dGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKICAgICAgICAgLy8gSWYgdGhlIGlt
cGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlIG9mIERpc3RpbmN0aXZlIElkZW50aWZp
ZXIocykgaW4gY29tYmluYXRpb24KICAgICAgICAgLy8gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1
cmF0aW9uIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCiAgICAgICAgIGlm
IChkaXN0aW5jdGl2ZUlkZW50aWZpZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0
aW9uLCByZXN0cmljdGlvbnMpID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDRE1SZXF1aXJlbWVudDo6T3B0aW9uYWw6
CkBAIC0yMDAsNyArMjAwLDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4g
Q0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgICAgICAvLyBJ
ZiB0aGUgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdXNlIERpc3RpbmN0aXZlIElkZW50aWZpZXIo
cykgb3IgRGlzdGluY3RpdmUgUGVybWFuZW50IElkZW50aWZpZXIocykKICAgICAgICAgLy8gaW4g
Y29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGFuZCByZXN0cmljdGlv
bnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCiAgICAgICAgIGlmIChkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJzUmVxdWlyZW1lbnQoYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLCByZXN0cmljdGlvbnMpID09
IENETVJlcXVpcmVtZW50OjpSZXF1aXJlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAgICAgICAg
IC8vIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHBlcnNpc3Rpbmcgc3Rh
dGUgaW4gY29tYmluYXRpb24gd2l0aCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uCiAgICAgICAg
IC8vIGFuZCByZXN0cmljdGlvbnMsIHJldHVybiBOb3RTdXBwb3J0ZWQuCiAgICAgICAgIGlmICh0
aGlzLT5wZXJzaXN0ZW50U3RhdGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24s
IHJlc3RyaWN0aW9ucykgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENETVJlcXVpcmVtZW50OjpPcHRpb25hbDoKQEAg
LTIzNSw3ICsyMzUsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBDRE1Q
cml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAgICAgICAgIC8vIElmIHRo
ZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBwZXJzaXN0aW5nIHN0YXRlIGluIGNvbWJpbmF0aW9u
IHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgogICAgICAgICAvLyBhbmQgcmVzdHJpY3Rp
b25zLCByZXR1cm4gTm90U3VwcG9ydGVkCiAgICAgICAgIGlmICh0aGlzLT5wZXJzaXN0ZW50U3Rh
dGVSZXF1aXJlbWVudChhY2N1bXVsYXRlZENvbmZpZ3VyYXRpb24sIHJlc3RyaWN0aW9ucykgPT0g
Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtMjYxLDEyICsyNjEsMTIgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25zdAogICAgICAg
ICAvLyAxMy4yLiBJZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uJ3MgcGVyc2lzdGVudFN0YXRl
IHZhbHVlIGlzICJub3QtYWxsb3dlZCIgYW5kIHRoZQogICAgICAgICAvLyAgICAgICBJcyBwZXJz
aXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIHJldHVybnMgdHJ1ZSBmb3Igc2Vzc2lvbiB0
eXBlIHJldHVybiBOb3RTdXBwb3J0ZWQuCiAgICAgICAgIGlmIChhY2N1bXVsYXRlZENvbmZpZ3Vy
YXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpOb3RBbGxvd2VkICYmIGlz
UGVyc2lzdGVudFR5cGUoc2Vzc2lvblR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgLy8gMTMu
My4gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc2Vzc2lvbiB0eXBlIGlu
IGNvbWJpbmF0aW9uIHdpdGggYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbgogICAgICAgICAvLyAg
ICAgICBhbmQgcmVzdHJpY3Rpb25zIGZvciBvdGhlciByZWFzb25zLCByZXR1cm4gTm90U3VwcG9y
dGVkLgogICAgICAgICBpZiAoIXN1cHBvcnRzU2Vzc2lvblR5cGVXaXRoQ29uZmlndXJhdGlvbihz
ZXNzaW9uVHlwZSwgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uKSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIC8vIDEzLjQgSWYgYWNjdW11bGF0ZWQgY29uZmlndXJhdGlvbidzIHBlcnNpc3RlbnRTdGF0
ZSB2YWx1ZSBpcyAib3B0aW9uYWwiIGFuZCB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzCiAg
ICAgICAgIC8vICAgICAgcGVyc2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiBzZXNz
aW9uIHR5cGUgaXMgdHJ1ZSwgY2hhbmdlIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24ncyBwZXJz
aXN0ZW50U3RhdGUKQEAgLTI4MCw3ICsyODAsNyBAQCBPcHRpb25hbDxDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uPiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKGNvbnN0CiAK
ICAgICAvLyAxNS4gSWYgdGhlIHZpZGVvQ2FwYWJpbGl0aWVzIGFuZCBhdWRpb0NhcGFiaWxpdGll
cyBtZW1iZXJzIGluIGNhbmRpZGF0ZSBjb25maWd1cmF0aW9uIGFyZSBib3RoIGVtcHR5LCByZXR1
cm4gTm90U3VwcG9ydGVkLgogICAgIGlmIChjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2Fw
YWJpbGl0aWVzLmlzRW1wdHkoKSAmJiBjYW5kaWRhdGVDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJp
bGl0aWVzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDE2LiDihrMgSWYgdGhlIHZpZGVvQ2FwYWJp
bGl0aWVzIG1lbWJlciBpbiBjYW5kaWRhdGUgY29uZmlndXJhdGlvbiBpcyBub24tZW1wdHk6CiAg
ICAgaWYgKCFjYW5kaWRhdGVDb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0aWVzLmlzRW1wdHko
KSkgewpAQCAtMjkwLDcgKzI5MCw3IEBAIE9wdGlvbmFsPENETUtleVN5c3RlbUNvbmZpZ3VyYXRp
b24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oY29uc3QKIAogICAgICAg
ICAvLyAxNi4yLiBJZiB2aWRlbyBjYXBhYmlsaXRpZXMgaXMgbnVsbCwgcmV0dXJuIE5vdFN1cHBv
cnRlZC4KICAgICAgICAgaWYgKCF2aWRlb0NhcGFiaWxpdGllcykKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIC8vIDE2LjMgU2V0IHRoZSB2aWRlb0NhcGFiaWxpdGllcyBtZW1iZXIgb2YgYWNjdW11bGF0
ZWQgY29uZmlndXJhdGlvbiB0byB2aWRlbyBjYXBhYmlsaXRpZXMuCiAgICAgICAgIGFjY3VtdWxh
dGVkQ29uZmlndXJhdGlvbi52aWRlb0NhcGFiaWxpdGllcyA9IFdURk1vdmUodmlkZW9DYXBhYmls
aXRpZXMudmFsdWUoKSk7CkBAIC0zMDgsNyArMzA4LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3lzdGVt
Q29uZmlndXJhdGlvbj4gQ0RNUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihjb25z
dAogCiAgICAgICAgIC8vIDE3LjIuIElmIGF1ZGlvIGNhcGFiaWxpdGllcyBpcyBudWxsLCByZXR1
cm4gTm90U3VwcG9ydGVkLgogICAgICAgICBpZiAoIWF1ZGlvQ2FwYWJpbGl0aWVzKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgLy8gMTcuMyBTZXQgdGhlIGF1ZGlvQ2FwYWJpbGl0aWVzIG1lbWJlciBv
ZiBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIHRvIGF1ZGlvIGNhcGFiaWxpdGllcy4KICAgICAg
ICAgYWNjdW11bGF0ZWRDb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzID0gV1RGTW92ZShh
dWRpb0NhcGFiaWxpdGllcy52YWx1ZSgpKTsKQEAgLTM1MCwxMCArMzUwLDEwIEBAIE9wdGlvbmFs
PENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IENETVByaXZhdGU6OmdldFN1cHBvcnRlZENvbmZp
Z3VyYXRpb24oY29uc3QKICAgICAvLyAyMC4gSWYgaW1wbGVtZW50YXRpb24gaW4gdGhlIGNvbmZp
Z3VyYXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgdmFsdWVzIGluIGFj
Y3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24KICAgICAvLyAgICAgaXMgbm90IHN1cHBvcnRlZCBvciBu
b3QgYWxsb3dlZCBpbiB0aGUgb3JpZ2luLCByZXR1cm4gTm90U3VwcG9ydGVkLgogICAgIGlmICgh
c3VwcG9ydHNDb25maWd1cmF0aW9uKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoKGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIgPT0g
Q0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkIHx8IGFjY3VtdWxhdGVkQ29uZmlndXJhdGlvbi5wZXJz
aXN0ZW50U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6OlJlcXVpcmVkKSAmJiBhY2Nlc3MgPT0gTG9j
YWxTdG9yYWdlQWNjZXNzOjpOb3RBbGxvd2VkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGFjY3VtdWxhdGVk
Q29uZmlndXJhdGlvbjsKICAgICAvLyBOT1RFOiBDb250aW51ZWQgaW4gZ2V0Q29uc2VudFN0YXR1
cygpLgpAQCAtMzg0LDcgKzM4NCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxDRE1NZWRpYUNhcGFiaWxp
dHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpCiAKICAgICAg
ICAgLy8gMy4zLiBJZiBjb250ZW50IHR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIG51
bGwuCiAgICAgICAgIGlmIChyZXF1ZXN0ZWRDYXBhYmlsaXR5LmNvbnRlbnRUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIDMuNC4gSWYgY29udGVudCB0eXBlIGlzIGFuIGlu
dmFsaWQgb3IgdW5yZWNvZ25pemVkIE1JTUUgdHlwZSwgY29udGludWUgdG8gdGhlIG5leHQgaXRl
cmF0aW9uLgogICAgICAgICBPcHRpb25hbDxQYXJzZWRDb250ZW50VHlwZT4gY29udGVudFR5cGUg
PSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKHJlcXVlc3RlZENhcGFiaWxpdHkuY29udGVudFR5
cGUsIE1vZGU6OlJmYzIwNDUpOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIE9wdGlvbmFsPFZlY3RvcjxD
RE1NZWRpYUNhcGFiaWxpdHk+PiBDRE1Qcml2YXRlOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNG
b3JBdWRpCiAKICAgICAvLyA0LiBJZiBzdXBwb3J0ZWQgbWVkaWEgY2FwYWJpbGl0aWVzIGlzIGVt
cHR5LCByZXR1cm4gbnVsbC4KICAgICBpZiAoc3VwcG9ydGVkTWVkaWFDYXBhYmlsaXRpZXMuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gNS4gUmV0dXJuIHN1cHBvcnRlZCBtZWRpYSBjYXBhYmlsaXRp
ZXMuCiAgICAgcmV0dXJuIHN1cHBvcnRlZE1lZGlhQ2FwYWJpbGl0aWVzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCmluZGV4IGZl
MzBmZjBlOTdhYzgwM2FmM2FjMWUzMTY0ZGQ2NzQ1MmUyMDM1MmQuLjU1MTVlZTcwNTI2MWEwODBl
YzhjOTg2ODZkODNkNWEwM2FlZjNhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcm94eS5jcHAKQEAgLTMwOSwxMSArMzA5LDExIEBAIE9w
dGlvbmFsPFJlZjxLZXlIYW5kbGU+PiBDRE1Qcm94eTo6dHJ5V2FpdEZvcktleUhhbmRsZShjb25z
dCBLZXlJRFR5cGUmIGtleUlELCBXCiAgICAgaWYgKHdhc0tleUF2YWlsYWJsZSkgewogICAgICAg
ICBSZWZQdHI8S2V5SGFuZGxlPiBoYW5kbGUgPSBrZXlIYW5kbGUoa2V5SUQpOwogICAgICAgICBM
T0coRU1FLCAiRU1FIC0gQ0RNUHJveHkgLSBzdWNjZXNzZnVsbHkgd2FpdGVkIGZvciBrZXkgSUQg
JXMiLCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBy
ZXR1cm4gbWFrZU9wdGlvbmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChoYW5kbGUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQog
CiAgICAgTE9HKEVNRSwgIkVNRSAtIENETVByb3h5IC0ga2V5IElEICVzIG5vdCBhdmFpbGFibGUg
b3Igb3BlcmF0aW9uIGFib3J0ZWQiLCB2ZWN0b3JUb0hleFN0cmluZyhrZXlJRCkuYXNjaWkoKS5k
YXRhKCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogYm9vbCBDRE1Qcm94eTo6a2V5QXZhaWxhYmxlVW5sb2NrZWQoY29uc3QgS2V5SURU
eXBlJiBrZXlJRCkgY29uc3QKQEAgLTMzNSwxNCArMzM1LDE0IEBAIE9wdGlvbmFsPFJlZjxLZXlI
YW5kbGU+PiBDRE1Qcm94eTo6Z2V0T3JXYWl0Rm9yS2V5SGFuZGxlKGNvbnN0IEtleUlEVHlwZSYg
a2V5SUQsCiAgICAgfQogCiAgICAgUmVmUHRyPEtleUhhbmRsZT4gaGFuZGxlID0ga2V5SGFuZGxl
KGtleUlEKTsKLSAgICByZXR1cm4gbWFrZU9wdGlvbmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKGhhbmRsZS5yZWxlYXNlTm9uTnVsbCgp
KTsKIH0KIAogT3B0aW9uYWw8S2V5SGFuZGxlVmFsdWVWYXJpYW50PiBDRE1Qcm94eTo6Z2V0T3JX
YWl0Rm9yS2V5VmFsdWUoY29uc3QgS2V5SURUeXBlJiBrZXlJRCwgV2Vha1B0cjxDRE1Qcm94eURl
Y3J5cHRpb25DbGllbnQ+JiYgY2xpZW50KSBjb25zdAogewogICAgIGlmIChhdXRvIGtleUhhbmRs
ZSA9IGdldE9yV2FpdEZvcktleUhhbmRsZShrZXlJRCwgV1RGTW92ZShjbGllbnQpKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VPcHRpb25hbCgoKmtleUhhbmRsZSktPnZhbHVlKCkpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoKCprZXlI
YW5kbGUpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIENE
TUluc3RhbmNlUHJveHk6OnN0YXJ0ZWRXYWl0aW5nRm9yS2V5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVJlc3RyaWN0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKaW5k
ZXggOWNhMmFjNTllOGIxMzU0NjNhNTJkYjQ1ZTgwNzMxZjUwYzY5NGYzZS4uODA3YzhlNTYzYjVl
ODdiNDgyNGQwM2FiNmRmNjIyMTQ1YjY3MTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUmVzdHJpY3Rpb25zLmgKQEAgLTUxLDE3
ICs1MSwxNyBAQCBzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zIHsKICAgICAgICAgT3B0aW9uYWw8Ym9v
bD4gZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkOwogICAgICAgICBkZWNvZGVyID4+IGRpc3Rp
bmN0aXZlSWRlbnRpZmllckRlbmllZDsKICAgICAgICAgaWYgKCFkaXN0aW5jdGl2ZUlkZW50aWZp
ZXJEZW5pZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBwZXJzaXN0ZW50
U3RhdGVEZW5pZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudFN0YXRlRGVuaWVkOwog
ICAgICAgICBpZiAoIXBlcnNpc3RlbnRTdGF0ZURlbmllZCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPEhhc2hTZXQ8Q0RNU2Vzc2lvblR5cGUsIFdURjo6SW50SGFzaDxDRE1TZXNzaW9u
VHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q0RNU2Vzc2lvblR5cGU+Pj4gZGVuaWVk
U2Vzc2lvblR5cGVzOwogICAgICAgICBkZWNvZGVyID4+IGRlbmllZFNlc3Npb25UeXBlczsKICAg
ICAgICAgaWYgKCFkZW5pZWRTZXNzaW9uVHlwZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4ge3sKICAgICAgICAgICAgICpkaXN0aW5jdGl2ZUlkZW50aWZpZXJEZW5pZWQsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1D
bGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVh
cmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggOGU4MzYzODQ3YzIyMWVmNTBkYTNkMjA5MWM5M2Zi
NWIxZjRjNjFiNy4uYjZjMmFlOWYyOGIxOGI5ZmE1YjRiYmYzMzM5NDUzNjhlYzY5OTY2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkv
Q0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNTMsMTIgKzUzLDEyIEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8UmVmUHRyPEtleUhhbmRsZT4+PiBwYXJzZUxpY2Vuc2VGb3JtYXQoY29u
c3QgSlNPTjo6T2JqZWN0CiAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgJ2xpY2Vu
c2UnIGZvcm1hdC4KICAgICBhdXRvIGl0ID0gcm9vdC5maW5kKCJrZXlzIik7CiAgICAgaWYgKGl0
ID09IHJvb3QuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBSZXRyaWV2ZSB0aGUga2V5cyBhcnJheS4KICAg
ICBhdXRvIGtleXNBcnJheSA9IGl0LT52YWx1ZS0+YXNBcnJheSgpOwogICAgIGlmICgha2V5c0Fy
cmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgVmVjdG9yPFJlZlB0cjxLZXlIYW5kbGU+PiBkZWNvZGVkS2V5czsKICAg
ICBib29sIHZhbGlkRm9ybWF0ID0gc3RkOjphbGxfb2Yoa2V5c0FycmF5LT5iZWdpbigpLCBrZXlz
QXJyYXktPmVuZCgpLApAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJl
ZlB0cjxLZXlIYW5kbGU+Pj4gcGFyc2VMaWNlbnNlRm9ybWF0KGNvbnN0IEpTT046Ok9iamVjdAog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwogICAgIGlmICghdmFsaWRGb3Jt
YXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgcmV0dXJuIGRlY29kZWRLZXlzOwogfQogCkBAIC00MTgsNyArNDE4LDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplU2Vzc2lvbklkKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkKQogewogICAgIC8vIFZhbGlkYXRlIHRoZSBzZXNzaW9uIElE
IHN0cmluZyBhcyBhbiAzMi1iaXQgaW50ZWdlci4KICAgICBpZiAoIXBhcnNlSW50ZWdlcjx1aW50
MzJfdD4oc2Vzc2lvbklkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc2Vzc2lvbklkOwogfQogCkBAIC00ODks
MTQgKzQ4OSwxNCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVAogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNlc3Npb25XYXNDbG9zZWQsIFdURk1vdmUoY2hhbmdl
ZEtleXMpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgc3VjY2VlZGVkKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2soc2Vzc2lvbldhc0Nsb3NlZCwgV1RGTW92ZShjaGFuZ2VkS2V5
cyksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdWNjZWVkZWQpOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9OwogCiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gcm9vdCA9IENE
TVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJlc3BvbnNlKTsKICAgICBpZiAoIXJvb3QpIHsK
ICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIENsZWFyS2V5IC0gc2Vzc2lvbiAlcyB1cGRhdGUgcGF5
bG9hZCB3YXMgbm90IHZhbGlkIEpTT04iLCBzZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGRpc3BhdGNoQ2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOworICAgICAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIFN1
Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTIyLDEy
ICs1MjIsMTIgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5z
ZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVQKICAgICAgICAgTE9HKEVNRSwgIkVN
RSAtIENsZWFyS2V5IC0gc2Vzc2lvbiAlcyByZWxlYXNlIGFja25vd2xlZGdlZCwgY2xlYXJpbmcg
YWxsIGtub3duIGtleXMiLCBzZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHBhcmVu
dEluc3RhbmNlKCkucmVtb3ZlQWxsS2V5c0Zyb20obV9rZXlTdG9yZSk7CiAgICAgICAgIG1fa2V5
U3RvcmUucmVtb3ZlQWxsS2V5cygpOwotICAgICAgICBkaXNwYXRjaENhbGxiYWNrKHRydWUsIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgICAgICBkaXNwYXRjaENh
bGxiYWNrKHRydWUsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTE9HKEVNRSwgIkVNRSAtIENsZWFyS2V5IC0gc2Vz
c2lvbiAlcyB1cGRhdGUgcGF5bG9hZCB3YXMgYW4gdW5yZWNvZ25pemVkIGZvcm1hdCIsIHNlc3Np
b25JZC51dGY4KCkuZGF0YSgpKTsKLSAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNlLCBXVEY6Om51
bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICBkaXNwYXRjaENhbGxiYWNrKGZhbHNl
LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25DbGVhcktleTo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6
bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbkkKICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGtleVN0YXR1c1ZlY3RvciksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNj
ZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoa2V5U3RhdHVzVmVjdG9yKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRl
ZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAK
aW5kZXggMWI4M2E5MWIyN2E2YWVmN2E4MmYyYTE0Zjg1NGZjYTgzNzI0YjlkMC4uNmFlYmIwNTkw
M2Y2MzM0OWZmOTM2YTQ2MmM3YjdmNzI1NWZiMmUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCkBAIC01Mywx
NiArNTMsMTYgQEAgc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gcmVhZFN0cmluZyhXVEY6OlBlcnNp
c3RlbmNlOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHNpemVfdD4gc2l6ZTsKICAg
ICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghc2l6ZS52YWx1
ZSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBidWZmZXIoc2l6ZS52YWx1ZSgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5n
dGhEYXRhKGJ1ZmZlci5kYXRhKCksIHNpemUudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byByZXN1bHQg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCksIHNpemUudmFsdWUoKSk7CiAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmNw
cAppbmRleCAwODQ4MDA1ZTY0NzJjNTZmNzExOThlNzI3Mjc3ZmRhNDk4ZTVlMTgzLi42NmNkNjU3
NGVkZTM3NWM1OGIwNGQwODE4MzRiZDkwODZmMDA5MTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgRnJhbWVzUGVyU2Vjb25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RGdWxsU3Bl
ZWQoRnJhbWVzUGVyU2Vjb25kIG5vbWluYWxGcmFtZXNQZXIKIE9wdGlvbmFsPEZyYW1lc1BlclNl
Y29uZD4gcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29u
PiByZWFzb25zLCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG5vbWluYWxGcmFtZXNQZXJTZWNv
bmQsIGJvb2wgcHJlZmVyRnJhbWVSYXRlc05lYXI2MEZQUykKIHsKICAgICBpZiAocmVhc29ucy5j
b250YWlucyhUaHJvdHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFub21pbmFsRnJhbWVzUGVyU2Vjb25kIHx8ICpub21pbmFsRnJhbWVzUGVyU2Vjb25kID09IEZ1
bGxTcGVlZEZyYW1lc1BlclNlY29uZCkgewogICAgICAgICAvLyBGSVhNRTogaGFuZGxlIFRocm90
dGxpbmdSZWFzb246OlZpc3VhbGx5SWRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BbmltYXRpb25GcmFtZVJhdGUuaAppbmRleCBjODM4NzhjMDEzNTM5OWM0
MjUyOGE3YWRmNTVlZGNjZDAwNWIxMjFmLi5iMjNhOTM4ODYwZTVhMmUyMWM0YjY2YzlhZTIwMTFj
N2ZhYzhjMzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9B
bmltYXRpb25GcmFtZVJhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BbmltYXRpb25GcmFtZVJhdGUuaApAQCAtNTYsNyArNTYsNyBAQCBjb25zdGV4cHIgY29uc3Qg
RnJhbWVzUGVyU2Vjb25kIEhhbGZTcGVlZFRocm90dGxpbmdGcmFtZXNQZXJTZWNvbmQgPSAzMDsK
IAogV0VCQ09SRV9FWFBPUlQgRnJhbWVzUGVyU2Vjb25kIGZyYW1lc1BlclNlY29uZE5lYXJlc3RG
dWxsU3BlZWQoRnJhbWVzUGVyU2Vjb25kKTsKIAotLy8gVGhpcyB3aWxsIHJldHVybiBXVEY6Om51
bGxvcHQgaWYgdGhyb3R0bGluZyByZXN1bHRzIGluIGEgZnJlcXVlbmN5IDwgMWZwcy4KKy8vIFRo
aXMgd2lsbCByZXR1cm4gc3RkOjpudWxsb3B0IGlmIHRocm90dGxpbmcgcmVzdWx0cyBpbiBhIGZy
ZXF1ZW5jeSA8IDFmcHMuCiBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+
IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZChPcHRpb25TZXQ8VGhyb3R0bGluZ1JlYXNvbj4sIE9w
dGlvbmFsPEZyYW1lc1BlclNlY29uZD4gbm9taW5hbEZyYW1lc1BlclNlY29uZCwgYm9vbCBwcmVm
ZXJGcmFtZVJhdGVzTmVhcjYwRlBTKTsKIAogV0VCQ09SRV9FWFBPUlQgU2Vjb25kcyBwcmVmZXJy
ZWRGcmFtZUludGVydmFsKE9wdGlvblNldDxUaHJvdHRsaW5nUmVhc29uPiwgT3B0aW9uYWw8RnJh
bWVzUGVyU2Vjb25kPiBub21pbmFsRnJhbWVzUGVyU2Vjb25kLCBib29sIHByZWZlckZyYW1lUmF0
ZXNOZWFyNjBGUFMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5k
ZXggNmUwNjAyZTNhZWE2ZTM5YTg2NGU4ODEzMzA1YWRmODkyMjlkYzM4MC4uZGFhYjBhMzU1OGVk
ZDVmM2Q1ZWNhNzBiZDY5OGY0NzEyN2NmZmMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5oCkBAIC00NzAsNyArNDcwLDcgQEAgaW5saW5lIE9wdGlvbmFsPFNSR0JB
PHVpbnQ4X3Q+PiBDb2xvcjo6dHJ5R2V0QXNTUkdCQUJ5dGVzKCkgY29uc3QKIHsKICAgICBpZiAo
aXNJbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIGFzSW5saW5lKCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgdWludDY0X3Qg
Q29sb3I6OmVuY29kZWRGbGFncyhPcHRpb25TZXQ8RmxhZ3NJbmNsdWRpbmdQcml2YXRlPiBmbGFn
cykKQEAgLTU3Nyw3ICs1NzcsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxD
b2xvcj4gQ29sb3I6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGJvb2wgaXNWYWxp
ZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFpc1Zh
bGlkKQogICAgICAgICByZXR1cm4gQ29sb3IgeyB9OwpAQCAtNTg2LDQ0ICs1ODYsNDQgQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8Q29sb3I+IENvbG9yOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKIAogICAgIGJvb2wgaXNTZW1hbnRpYzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzU2VtYW50aWMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGlzU2VtYW50aWMpCiAgICAgICAgIGZsYWdz
LmFkZChGbGFnczo6U2VtYW50aWMpOwogCiAgICAgYm9vbCB1c2VzQ29sb3JGdW5jdGlvblNlcmlh
bGl6YXRpb247CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1c2VzQ29sb3JGdW5jdGlvblNlcmlh
bGl6YXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHVzZXNDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlvbikK
ICAgICAgICAgZmxhZ3MuYWRkKEZsYWdzOjpVc2VDb2xvckZ1bmN0aW9uU2VyaWFsaXphdGlvbik7
CiAKICAgICBib29sIGlzT3V0T2ZMaW5lOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNPdXRP
ZkxpbmUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGlzT3V0T2ZMaW5lKSB7CiAgICAgICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgICAgICBmbG9hdCBjMTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
MSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZmxvYXQgYzI7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoYzIpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZsb2F0IGMzOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGMzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBmbG9hdCBhbHBoYTsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbHBoYSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJu
IENvbG9yIHsgT3V0T2ZMaW5lQ29tcG9uZW50czo6Y3JlYXRlKHsgYzEsIGMyLCBjMywgYWxwaGEg
fSksIGNvbG9yU3BhY2UsIGZsYWdzIH07CiAgICAgfQogCiAgICAgdWludDMyX3QgdmFsdWU7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gQ29sb3IgeyBh
c1NSR0JBKFBhY2tlZENvbG9yOjpSR0JBIHsgdmFsdWUgfSksIGZsYWdzIH07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAppbmRleCBjNGJmMDMyYjcwYzk4ODNiOTc2ZTIyNmZhYWMyNjI5NGUwYzg0ZWU1
Li5lZTQzMzNjNjRkNTM3MjJlMzI0YTU4MTRhNjcxN2Y0YjM3ZDczNzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAKQEAgLTIxNSwxMiArMjE1LDEyIEBAIHVuc2lnbmVkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6b2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgaCwgYm9vbCBpbmNsdWRlUGFydGlhbEdsCiAg
ICAgICAgICAgICAgICAgaWYgKGN1cnNvclBvc2l0aW9uSXRlcmF0b3IuaXNCb3VuZGFyeShoaXRJ
bmRleCkpCiAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGhpdEluZGV4OwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2x1c3RlclN0YXJ0ID0gY3Vy
c29yUG9zaXRpb25JdGVyYXRvci5wcmVjZWRpbmcoaGl0SW5kZXgpLnZhbHVlT3IoMCk7CisgICAg
ICAgICAgICAgICAgICAgIGNsdXN0ZXJTdGFydCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IucHJl
Y2VkaW5nKGhpdEluZGV4KS52YWx1ZV9vcigwKTsKIAogICAgICAgICAgICAgICAgIGlmICghaW5j
bHVkZVBhcnRpYWxHbHlwaHMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV4VGV4
dFJ1bi5zdHJpbmdMb2NhdGlvbigpICsgY2x1c3RlclN0YXJ0OwogCi0gICAgICAgICAgICAgICAg
dW5zaWduZWQgY2x1c3RlckVuZCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IuZm9sbG93aW5nKGhp
dEluZGV4KS52YWx1ZU9yKHN0cmluZ0xlbmd0aCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2x1c3RlckVuZCA9IGN1cnNvclBvc2l0aW9uSXRlcmF0b3IuZm9sbG93aW5nKGhpdEluZGV4KS52
YWx1ZV9vcihzdHJpbmdMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgZmxvYXQgY2x1c3Rlcldp
ZHRoOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgc2VhcmNoIHN0b3BzIGF0IHRoZSBi
b3VuZGFyaWVzIG9mIGNvbXBsZXhUZXh0UnVuLiBJbiB0aGVvcnksIGl0IHNob3VsZCBnbyBvbiBp
bnRvIG5laWdoYm9yaW5nIENvbXBsZXhUZXh0UnVucwpAQCAtMzE4LDEzICszMTgsMTMgQEAgc3Rh
dGljIGJvb2wgYWR2YW5jZUJ5Q29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2UoY29uc3QgVUNoYXIq
JiBpdGVyYXRvciwgY29uc3QgVUMKIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8VUNoYXIzMj4gY2Fw
aXRhbGl6ZWQoVUNoYXIzMiBiYXNlQ2hhcmFjdGVyKQogewogICAgIGlmIChVX0dFVF9HQ19NQVNL
KGJhc2VDaGFyYWN0ZXIpICYgVV9HQ19NX01BU0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBVQ2hhcjMyIHVwcGVyY2Fz
ZUNoYXJhY3RlciA9IHVfdG91cHBlcihiYXNlQ2hhcmFjdGVyKTsKICAgICBBU1NFUlQodXBwZXJj
YXNlQ2hhcmFjdGVyID09IGJhc2VDaGFyYWN0ZXIgfHwgKFVfSVNfQk1QKGJhc2VDaGFyYWN0ZXIp
ID09IFVfSVNfQk1QKHVwcGVyY2FzZUNoYXJhY3RlcikpKTsKICAgICBpZiAodXBwZXJjYXNlQ2hh
cmFjdGVyICE9IGJhc2VDaGFyYWN0ZXIpCiAgICAgICAgIHJldHVybiB1cHBlcmNhc2VDaGFyYWN0
ZXI7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogCiBzdGF0aWMgYm9vbCBzaG91bGRTeW50aGVzaXplKGJvb2wgZG9udFN5bnRoZXNpemVTbWFs
bENhcHMsIGNvbnN0IEZvbnQqIG5leHRGb250LCBVQ2hhcjMyIGJhc2VDaGFyYWN0ZXIsIE9wdGlv
bmFsPFVDaGFyMzI+IGNhcGl0YWxpemVkQmFzZSwgRm9udFZhcmlhbnRDYXBzIGZvbnRWYXJpYW50
Q2FwcywgYm9vbCBlbmdhZ2VBbGxTbWFsbENhcHNQcm9jZXNzaW5nKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4
IGFjZjQzNTllYjBiYzg3YmMzYmRlYWQ5MDUzYjJlMWRlM2ZmYzUyMzkuLmVjMmRhMDIzOTJmMGFj
OWNiODQ0ZGQ0NGMyZmJiYWRiNzVhNjg1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTIxMyw3ICsyMTMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBW
ZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBWZWN0b3I8
dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewogICAgICAgICAgICAg
Y29uc3RfY2FzdDxDb25jcmV0ZUltYWdlQnVmZmVyJj4oKnRoaXMpLmZsdXNoQ29udGV4dCgpOwpA
QCAtMjI4LDcgKzIyOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q29u
Y3JldGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaENvbnRleHQoKTsKICAgICAgICAgICAgIHJl
dHVybiBiYWNrZW5kLT5nZXRQaXhlbEJ1ZmZlcihvdXRwdXRGb3JtYXQsIHNyY1JlY3QpOwogICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50
JiBkZXN0UG9pbnQgPSB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCA9IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpIG92ZXJyaWRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFj
ZS5oCmluZGV4IGY4ODNhYmJkNDlmNTM0NjYyMThlNzY2Mjc4ZWM5YWYwYjk4YzgwNGMuLjdkYTIz
ZmQ4MjdkYWJkNTEyNmE3NzE4MDFkM2U5Y2QxMjE3YjJjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oCkBA
IC02Niw3ICs2Niw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkCiAgICAgT3B0aW9uYWw8UGxh
dGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9ybUNvbG9yU3BhY2U7CiAgICAgZGVjb2RlciA+PiBwbGF0
Zm9ybUNvbG9yU3BhY2U7CiAgICAgaWYgKCFwbGF0Zm9ybUNvbG9yU3BhY2UpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNwYWNl
KSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXggYWU2OGQzNDdjN2YyZDMxZjQ5M2ZiMjgz
YjlkOTJkMzI1NzkzNzg2NC4uYzY3NjkwMDJhMjUxZmExNWNiZTk1YjMwYTE5Njg4MjRiMjkxYzBh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgT3B0aW9uYWw8RnJh
bWVzUGVyU2Vjb25kPiBEaXNwbGF5UmVmcmVzaE1vbml0b3I6Om1heGltdW1DbGllbnRQcmVmZXJy
ZWRGcmFtZXNQZXIKIHsKICAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IG1heEZyYW1lc1Bl
clNlY29uZDsKICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKLSAgICAgICAgbWF4
RnJhbWVzUGVyU2Vjb25kID0gc3RkOjptYXg8RnJhbWVzUGVyU2Vjb25kPihtYXhGcmFtZXNQZXJT
ZWNvbmQudmFsdWVPcigwKSwgY2xpZW50LT5wcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSk7Cisg
ICAgICAgIG1heEZyYW1lc1BlclNlY29uZCA9IHN0ZDo6bWF4PEZyYW1lc1BlclNlY29uZD4obWF4
RnJhbWVzUGVyU2Vjb25kLnZhbHVlX29yKDApLCBjbGllbnQtPnByZWZlcnJlZEZyYW1lc1BlclNl
Y29uZCgpKTsKIAogICAgIHJldHVybiBtYXhGcmFtZXNQZXJTZWNvbmQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5oCmluZGV4IGQxYTA5ODIyOWQyMWJhMTRiODhjYzZiOWJjNDcxNGZjMTEwYmFhY2QuLmEyMmI2
MzA1NjY2OTZkMmVmN2YxMTY0ZmRlYjUwZTc2NTdjMWQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaWVudFByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50Jik7CiAgICAgT3B0aW9u
YWw8RnJhbWVzUGVyU2Vjb25kPiBtYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKSBj
b25zdCB7IHJldHVybiBtX21heENsaWVudFByZWZlcnJlZEZyYW1lc1BlclNlY29uZDsgfQogCi0g
ICAgdmlydHVhbCBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVz
UGVyU2Vjb25kKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25h
bDxGcmFtZXNQZXJTZWNvbmQ+IGRpc3BsYXlOb21pbmFsRnJhbWVzUGVyU2Vjb25kKCkgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CiAKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBj
b25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXIuY3BwCmluZGV4IGFhZjhmNGRkMmNmZTBkOGJhZDg3MjQwZjE3M2YyZjMwODVmMGMzMzUuLjY4
MzY3NzZlNzZjMDNjYjI2MzkwN2RmMWRkODJkMmE2ZDJiOWRjNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgT3B0aW9uYWw8RnJhbWVzUGVy
U2Vjb25kPiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpub21pbmFsRnJhbWVzUGVyU2Vj
b25kRm8KICAgICBpZiAobW9uaXRvcikKICAgICAgICAgbW9uaXRvci0+ZGlzcGxheU5vbWluYWxG
cmFtZXNQZXJTZWNvbmQoKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyOjpk
aXNwbGF5V2FzVXBkYXRlZChQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQsIGNvbnN0IERpc3Bs
YXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5VXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EaXNwbGF5VXBkYXRlLmgKaW5kZXggMDZjNDJjZWViYzQ1NDNlN2Y1ZmQzYmEzNDVh
ZjJiZWJlZWY4MjU2ZS4uYWJiZWNmNjVhNDJjMjYxNjBhZTIwMjk1OGJjZTg5YTUwYjgzYmE5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVVwZGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlVcGRhdGUu
aApAQCAtNjQsMTIgKzY0LDEyIEBAIE9wdGlvbmFsPERpc3BsYXlVcGRhdGU+IERpc3BsYXlVcGRh
dGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB1cGRh
dGVJbmRleDsKICAgICBkZWNvZGVyID4+IHVwZGF0ZUluZGV4OwogICAgIGlmICghdXBkYXRlSW5k
ZXgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGcmFtZXNQZXJTZWNvbmQ+IHVwZGF0ZXNQZXJTZWNvbmQ7
CiAgICAgZGVjb2RlciA+PiB1cGRhdGVzUGVyU2Vjb25kOwogICAgIGlmICghdXBkYXRlc1BlclNl
Y29uZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqdXBkYXRlSW5kZXgsICp1cGRhdGVzUGVyU2Vjb25k
IH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5j
cHAKaW5kZXggNDk4MWM2NTBlNWE3MmEzZmRlOTVlNTY0ZWM0MDM5NDNlZTE0ZTQ4Yi4uZjE3YTU4
NTllOGNlODkzOGJmMThjMzA0ODc5YjcxMmQ1N2VjMmY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdExpbmUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGNvbnN0
IE9wdGlvbmFsPEZsb2F0UG9pbnQ+IEZsb2F0TGluZTo6aW50ZXJzZWN0aW9uV2l0aChjb25zdCBG
bG9hdExpbmUmIG90aGVyTGluCiAgICAgCiAgICAgLy8gQSBkZW5vbWluYXRvciBvZiB6ZXJvIGlu
ZGljYXRlcyB0aGUgbGluZXMgYXJlIHBhcmFsbGVsIG9yIGNvaW5jaWRlbnQsIHdoaWNoIG1lYW5z
IHRoZXJlIGlzIG5vIHRydWUgaW50ZXJzZWN0aW9uLgogICAgIGlmICghZGVub21pbmF0b3IpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAgICAgZmxvYXQgdGhpc0xpbmVDb21tb25OdW1lcmF0b3JGYWN0b3IgPSAobV9zdGFy
dC54KCkgKiBtX2VuZC55KCkpIC0gKG1fc3RhcnQueSgpICogbV9lbmQueCgpKTsKICAgICBmbG9h
dCBvdGhlckxpbmVDb21tb25OdW1lcmF0b3JGYWN0b3IgPSAob3RoZXJMaW5lLnN0YXJ0KCkueCgp
ICogb3RoZXJMaW5lLmVuZCgpLnkoKSkgLSAob3RoZXJMaW5lLnN0YXJ0KCkueSgpICogb3RoZXJM
aW5lLmVuZCgpLngoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdExpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
TGluZS5oCmluZGV4IDFhMGRiNTA4YjAwM2Y0ZjZlNTI0ZTI1NTBhNWNkMWVhOWUxOTAxZWEuLjA2
ODk1MGM5MzJlYzVhMTk3MTYyMmI1ZmVmNjZjNzgwOWU2ZGRjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0TGluZS5oCkBAIC03NSwxMiArNzUsMTIgQEAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RmxvYXRMaW5lPiBGbG9hdExpbmU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHN0YXJ0OwogICAg
IGRlY29kZXIgPj4gc3RhcnQ7CiAgICAgaWYgKCFzdGFydCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IGVuZDsKICAgICBkZWNvZGVyID4+IGVuZDsKICAgICBpZiAoIWVuZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyAqc3RhcnQsICplbmQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCmluZGV4IDYxYjNkZWU0OWUwZDJiZmQyYWVkMjcxZGM0
OWE3NjcxNmY3NmEyMmEuLmY1ZGNiNDY2NjAyZDNhMTgzNTFiYjBlNjI5MDk1ZmNjNDE2MDJkNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCkBAIC0x
NzMsMjIgKzE3MywyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxGbG9hdFF1
YWQ+IEZsb2F0UXVhZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gcDE7CiAgICAgZGVjb2RlciA+PiBwMTsKICAgICBpZiAoIXAxKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8RmxvYXRQb2ludD4gcDI7CiAgICAgZGVjb2RlciA+PiBwMjsKICAgICBpZiAoIXAy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcDM7CiAgICAgZGVjb2RlciA+PiBwMzsK
ICAgICBpZiAoIXAzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gcDQ7CiAgICAgZGVj
b2RlciA+PiBwNDsKICAgICBpZiAoIXA0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpwMSwgKnAyLCAq
cDMsICpwNCB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
aW5kZXggZjk5MTgzZDdjY2JiODU0ZTRlNGZiY2M1NTA5YTMwM2FiM2I1MjdmZi4uZTU5MTJhOTlk
MGU2ZGQyMGYxZWRiMzAwYjYzOTZmOTExOTEzOGNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
c2l6ZV90PiBjb2RlUG9pbnRTdXBwb3J0SW5kZXgoVUNoYXIzMiBjb2RlUG9pbnQpCiAgICAgICAg
IHJlc3VsdCA9IDB4NTQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
c3VsdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQu
aAppbmRleCBmMjQ5NzdmZmZiMDcwZTFhYzNhZTYzZmFiZGRjYjE4NGE0NzRiOGVhLi5lNWZhN2Fl
NDYxNzc0ZWZhZmJjNjNlMGI5MmE0ODRjZTU4OTQ4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udC5oCkBAIC05NCw5ICs5NCw5IEBAIHB1YmxpYzoKICAgICAgICAgTm8K
ICAgICB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4gPSBPcmlnaW46OkxvY2FsLCBJbnRlcnN0aXRpYWwg
PSBJbnRlcnN0aXRpYWw6Ok5vLAotICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6Vmlz
aWJsZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgVmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9uRmFsbGJhY2sg
PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUoY29u
c3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgRm9udENhY2hlKiBmb250Q2FjaGVGb3JWZXJ0
aWNhbERhdGEsIEludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8sCi0gICAgICAgIFZpc2li
aWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrID0gT3JpZW50
YXRpb25GYWxsYmFjazo6Tm8sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
PSBXVEY6Om51bGxvcHQpOworICAgICAgICBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSwgT3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vLCBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+ID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZv
bnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNC
b2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYywgRm9udENhY2hlKiA9IG51bGxwdHIpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgfkZvbnQoKTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
R2x5cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdDsKICAgICBHbHlw
aCBnbHlwaEZvckNoYXJhY3RlcihVQ2hhcjMyKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzQ29k
ZVBvaW50KFVDaGFyMzIpIGNvbnN0OwotICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c0NvZGVQb2lu
dChVQ2hhcjMyLCBPcHRpb25hbDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBXVEY6Om51bGxvcHQpIGNv
bnN0OworICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c0NvZGVQb2ludChVQ2hhcjMyLCBPcHRpb25h
bDxVQ2hhcjMyPiB2YXJpYXRpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgUmVmUHRy
PEZvbnQ+IHN5c3RlbUZhbGxiYWNrRm9udEZvckNoYXJhY3RlcihVQ2hhcjMyLCBjb25zdCBGb250
RGVzY3JpcHRpb24mLCBJc0ZvclBsYXRmb3JtRm9udCwgRm9udENhY2hlJikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGI4
OGMwNDk1YzU3MWFhN2Q1ZjRhOGJlNTUwMGZmOTZjNTdhNjJlNzMuLmI1MDJkOWZlZDJhZjRlNzll
Mjk2ZGZmZTJlODY1N2U0NjA1ZDc4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIE9wdGlvbmFsPEFTQ0lJ
TGl0ZXJhbD4gRm9udENhY2hlOjphbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFt
aWx5TmFtZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBGb250UGxhdGZvcm1EYXRhKiBGb250
Q2FjaGU6OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGNvbnN0IFN0cmluZyYgcGFzc2VkRmFtaWx5TmFtZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA5NmM5ZjBl
NjhkMWI5ZjRhMWE4ODVjMDBhMDNmM2IxZjVmMzQ5Nzk5Li5kMWVmYzg1ZTIwZjA2Yzg4YTdkMTVk
MmM4MDI1ZWVlNmZiODk0ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgR2x5cGhCdWZmZXIgRm9u
dENhc2NhZGU6OmxheW91dFRleHQoQ29kZVBhdGggY29kZVBhdGhUb1VzZSwgY29uc3QgVGV4dFJ1
biYgcnVuLAogCiBGbG9hdFNpemUgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
dW5zaWduZWQgZnJvbSwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvLCBDdXN0b21Gb250Tm90UmVhZHlB
Y3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewotICAgIHVuc2lnbmVkIGRl
c3RpbmF0aW9uID0gdG8udmFsdWVPcihydW4ubGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGRlc3Rp
bmF0aW9uID0gdG8udmFsdWVfb3IocnVuLmxlbmd0aCgpKTsKICAgICBhdXRvIGdseXBoQnVmZmVy
ID0gbGF5b3V0VGV4dChjb2RlUGF0aChydW4sIGZyb20sIHRvKSwgcnVuLCBmcm9tLCBkZXN0aW5h
dGlvbik7CiAgICAgZ2x5cGhCdWZmZXIuZmxhdHRlbigpOwogCkBAIC0yMDAsNyArMjAwLDcgQEAg
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4KICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZU9y
KHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52YWx1ZV9vcihy
dW4ubGVuZ3RoKCkpOwogCiAgICAgYXV0byBnbHlwaEJ1ZmZlciA9IGxheW91dFRleHQoY29kZVBh
dGgocnVuLCBmcm9tLCB0byksIHJ1biwgZnJvbSwgZGVzdGluYXRpb24sIEZvclRleHRFbXBoYXNp
c09yTm90OjpGb3JUZXh0RW1waGFzaXMpOwogICAgIGdseXBoQnVmZmVyLmZsYXR0ZW4oKTsKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1bgogc3RkOjp1bmlxdWVfcHRy
PERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxp
c3RGb3JUZXh0UnVuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCB1bnNpZ25lZCBmcm9tLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSk7Ci0gICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0
by52YWx1ZU9yKHJ1bi5sZW5ndGgoKSk7CisgICAgdW5zaWduZWQgZGVzdGluYXRpb24gPSB0by52
YWx1ZV9vcihydW4ubGVuZ3RoKCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBVc2UgdGhlIGZhc3Qg
Y29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5nIGFuZCBs
aWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAogICAgIENvZGVQYXRoIGNv
ZGVQYXRoVG9Vc2UgPSBjb2RlUGF0aChydW4pOwpAQCAtNDMzLDcgKzQzMyw3IEBAIGJvb2wgRm9u
dENhc2NhZGU6OmZhc3RBdmVyYWdlQ2hhcldpZHRoSWZBdmFpbGFibGUoZmxvYXQmIHdpZHRoKSBj
b25zdAogCiB2b2lkIEZvbnRDYXNjYWRlOjphZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChjb25z
dCBUZXh0UnVuJiBydW4sIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20s
IE9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QKIHsKLSAgICB1bnNpZ25lZCBkZXN0aW5hdGlv
biA9IHRvLnZhbHVlT3IocnVuLmxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBkZXN0aW5hdGlvbiA9
IHRvLnZhbHVlX29yKHJ1bi5sZW5ndGgoKSk7CiAgICAgaWYgKGNvZGVQYXRoKHJ1biwgZnJvbSwg
dG8pICE9IENvZGVQYXRoOjpDb21wbGV4KQogICAgICAgICByZXR1cm4gYWRqdXN0U2VsZWN0aW9u
UmVjdEZvclNpbXBsZVRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCBmcm9tLCBkZXN0aW5hdGlvbik7
CiAKQEAgLTUwNyw3ICs1MDcsNyBAQCBGb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6
OmNvZGVQYXRoKGNvbnN0IFRleHRSdW4mIHJ1biwgT3B0aW9uYWw8dW5zaWduZQogCiAjaWYgIVVT
RShGUkVFVFlQRSkKICAgICAvLyBGSVhNRTogVXNlIHRoZSBmYXN0IGNvZGUgcGF0aCBvbmNlIGl0
IGhhbmRsZXMgcGFydGlhbCBydW5zIHdpdGgga2VybmluZyBhbmQgbGlnYXR1cmVzLiBTZWUgaHR0
cDovL3dlYmtpdC5vcmcvYi8xMDAwNTAKLSAgICBpZiAoKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1
aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20udmFsdWVPcigwKSB8fCB0by52YWx1ZU9yKHJ1bi5sZW5n
dGgoKSkgIT0gcnVuLmxlbmd0aCgpKSkKKyAgICBpZiAoKGVuYWJsZUtlcm5pbmcoKSB8fCByZXF1
aXJlc1NoYXBpbmcoKSkgJiYgKGZyb20udmFsdWVfb3IoMCkgfHwgdG8udmFsdWVfb3IocnVuLmxl
bmd0aCgpKSAhPSBydW4ubGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gQ29kZVBhdGg6OkNvbXBs
ZXg7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKQEAgLTEyMDEsMTkgKzEyMDEsMTkg
QEAgc3RhdGljIEdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlwZShjb25zdCBU
ZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBHbHkKIE9wdGlvbmFsPEdseXBoRGF0YT4gRm9udENhc2Nh
ZGU6OmdldEVtcGhhc2lzTWFya0dseXBoRGF0YShjb25zdCBBdG9tU3RyaW5nJiBtYXJrKSBjb25z
dAogewogICAgIGlmIChtYXJrLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVDaGFyMzIgY2hhcmFjdGVy
OwogICAgIGlmICghbWFyay5pczhCaXQoKSkgewogICAgICAgICBTdXJyb2dhdGVQYWlyQXdhcmVU
ZXh0SXRlcmF0b3IgaXRlcmF0b3IobWFyay5jaGFyYWN0ZXJzMTYoKSwgMCwgbWFyay5sZW5ndGgo
KSwgbWFyay5sZW5ndGgoKSk7CiAgICAgICAgIHVuc2lnbmVkIGNsdXN0ZXJMZW5ndGg7CiAgICAg
ICAgIGlmICghaXRlcmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNsdXN0ZXJMZW5ndGgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfSBlbHNlCiAgICAgICAgIGNoYXJhY3RlciA9IG1hcmtbMF07CiAKICAgICBP
cHRpb25hbDxHbHlwaERhdGE+IGdseXBoRGF0YShnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFj
dGVyLCBmYWxzZSwgRW1waGFzaXNNYXJrVmFyaWFudCkpOwotICAgIHJldHVybiBnbHlwaERhdGEu
dmFsdWUoKS5pc1ZhbGlkKCkgPyBnbHlwaERhdGEgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IGdseXBoRGF0YS52YWx1ZSgpLmlzVmFsaWQoKSA/IGdseXBoRGF0YSA6IHN0ZDo6bnVsbG9wdDsK
IH0KIAogaW50IEZvbnRDYXNjYWRlOjplbXBoYXNpc01hcmtBc2NlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgbWFyaykgY29uc3QKQEAgLTE1NjAsNyArMTU2MCw3IEBAIHN0YXRpYyBPcHRpb25hbDxmbG9h
dD4gZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHksIEZsb2F0UG9pbnQgcDEsIEZsb2F0UG9p
bnQKIHsKICAgICBpZiAoKHAxLnkoKSA8IHkgJiYgcDIueSgpID4geSkgfHwgKHAxLnkoKSA+IHkg
JiYgcDIueSgpIDwgeSkpCiAgICAgICAgIHJldHVybiBwMS54KCkgKyAoeSAtIHAxLnkoKSkgKiAo
cDIueCgpIC0gcDEueCgpKSAvIChwMi55KCkgLSBwMS55KCkpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRl
WChHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgZmxvYXQgeCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDFlZjllNzZmZjE2ZDQwOGY1
Nzc4OGZmYmNmZDg2ZDU3NTU1YWJlMmQuLjgwMjhiM2FlYTY2OGZkOTczMDBhYTBmMjQyNTczMzEx
OTc4YWFmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaApAQCAtMTE2LDkgKzExNiw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmID0gbnVsbHB0cikgY29uc3Q7CiAKICAg
ICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFk
eSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9OwotICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0
U2l6ZSBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxv
YXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6
Om51bGxvcHQsIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRTaXplIGRyYXdUZXh0KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQg
ZnJvbSA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCwgQ3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKICAgICBz
dGF0aWMgdm9pZCBkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udFNtb290aGluZ01vZGUpOwotICAgIHZv
aWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNv
bnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCBmcm9tID0g
MCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAgICB2b2lk
IGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBBdG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAs
IE9wdGlvbmFsPHVuc2lnbmVkPiB0byA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICBEYXNo
QXJyYXkgZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25z
dCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBj
b25zdDsKIApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgd2lk
dGgoVGV4dExheW91dCYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbiwgSGFzaFNldDxjb25z
dCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwKTsKIAogICAgIGludCBvZmZzZXRGb3JQb3NpdGlv
bihjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlw
aHMpIGNvbnN0OwotICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4
dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRp
b25hbDx1bnNpZ25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0
U2VsZWN0aW9uUmVjdEZvclRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlv
blJlY3QsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51
bGxvcHQpIGNvbnN0OwogCiAgICAgYm9vbCBpc1NtYWxsQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udERlc2NyaXB0aW9uLnZhcmlhbnRDYXBzKCkgPT0gRm9udFZhcmlhbnRDYXBzOjpTbWFsbDsg
fQogCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGZhbWlseUNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb24uZmFtaWx5Q291bnQoKTsgfQogICAg
IGNvbnN0IEF0b21TdHJpbmcmIGZhbWlseUF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udERlc2NyaXB0aW9uLmZhbWlseUF0KGkpOyB9CiAKLSAgICAvLyBBIFdURjo6bnVsbG9wdCBy
ZXR1cm4gdmFsdWUgaW5kaWNhdGVzICJmb250LXN0eWxlOiBub3JtYWwiLgorICAgIC8vIEEgc3Rk
OjpudWxsb3B0IHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgImZvbnQtc3R5bGU6IG5vcm1hbCIuCiAg
ICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBpdGFsaWMoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKTsgfQogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSB3ZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnREZXNjcmlwdGlvbi53ZWlnaHQoKTsgfQogICAgIEZv
bnRXaWR0aFZhcmlhbnQgd2lkdGhWYXJpYW50KCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3Jp
cHRpb24ud2lkdGhWYXJpYW50KCk7IH0KQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGJvb2wgaXNTdWJwaXhlbEFudGlhbGlhc2luZ0F2YWlsYWJsZSgpOwogCiAgICAgZW51
bSBjbGFzcyBDb2RlUGF0aCA6IHVpbnQ4X3QgeyBBdXRvLCBTaW1wbGUsIENvbXBsZXgsIFNpbXBs
ZVdpdGhHbHlwaE92ZXJmbG93IH07Ci0gICAgQ29kZVBhdGggY29kZVBhdGgoY29uc3QgVGV4dFJ1
biYsIE9wdGlvbmFsPHVuc2lnbmVkPiBmcm9tID0gV1RGOjpudWxsb3B0LCBPcHRpb25hbDx1bnNp
Z25lZD4gdG8gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIENvZGVQYXRoIGNvZGVQYXRoKGNv
bnN0IFRleHRSdW4mLCBPcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IHN0ZDo6bnVsbG9wdCwgT3B0
aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICBzdGF0aWMgQ29k
ZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBMQ2hhciosIHVuc2lnbmVkKSB7IHJl
dHVybiBDb2RlUGF0aDo6U2ltcGxlOyB9CiAgICAgc3RhdGljIENvZGVQYXRoIGNoYXJhY3RlclJh
bmdlQ29kZVBhdGgoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW4pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9u
LmgKaW5kZXggMGE3ZGYyNTI4ZGFjNjJhOGM1YTg5MGJkMmRmYTQzMGEyMTRkZDdmNi4uZmZmM2U2
MGU0MDc5N2E3ZDI1N2UwYjVhOWYyYWYyNjk3ZDE1YmZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaApA
QCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gSW5pdGlhbCB2YWx1
ZXMgZm9yIGZvbnQgcHJvcGVydGllcy4KLSAgICBzdGF0aWMgT3B0aW9uYWw8Rm9udFNlbGVjdGlv
blZhbHVlPiBpbml0aWFsSXRhbGljKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgc3Rh
dGljIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gaW5pdGlhbEl0YWxpYygpIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgIHN0YXRpYyBGb250U3R5bGVBeGlzIGluaXRpYWxGb250U3R5
bGVBeGlzKCkgeyByZXR1cm4gRm9udFN0eWxlQXhpczo6c2xudDsgfQogICAgIHN0YXRpYyBGb250
U2VsZWN0aW9uVmFsdWUgaW5pdGlhbFdlaWdodCgpIHsgcmV0dXJuIG5vcm1hbFdlaWdodFZhbHVl
KCk7IH0KICAgICBzdGF0aWMgRm9udFNlbGVjdGlvblZhbHVlIGluaXRpYWxTdHJldGNoKCkgeyBy
ZXR1cm4gbm9ybWFsU3RyZXRjaFZhbHVlKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggZjM5NDc1ZGVjZjIwYzM4ZGM4
YzM0MTk2MmQzYzFmY2QwYTI1NDVlNS4uOTgwNjFlZGIzNGE2NjA4ZDhjNTVmN2Q1NTI2NjFhZGQ2
YTk5Y2U5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dERlc2NyaXB0aW9uLmgKQEAgLTI1NiwxNjIgKzI1NiwxNjIgQEAgT3B0aW9uYWw8Rm9udERlc2Ny
aXB0aW9uPiBGb250RGVzY3JpcHRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9w
dGlvbmFsPEZvbnRGZWF0dXJlU2V0dGluZ3M+IGZlYXR1cmVTZXR0aW5nczsKICAgICBkZWNvZGVy
ID4+IGZlYXR1cmVTZXR0aW5nczsKICAgICBpZiAoIWZlYXR1cmVTZXR0aW5ncykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPEZvbnRWYXJpYXRpb25TZXR0aW5ncz4gdmFyaWF0aW9uU2V0dGluZ3M7CiAgICAg
ZGVjb2RlciA+PiB2YXJpYXRpb25TZXR0aW5nczsKICAgICBpZiAoIXZhcmlhdGlvblNldHRpbmdz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbG9jYWxlOwogICAgIGRlY29kZXIgPj4g
bG9jYWxlOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Rm9u
dFNlbGVjdGlvblZhbHVlPj4gaXRhbGljOwogICAgIGRlY29kZXIgPj4gaXRhbGljOwogICAgIGlm
ICghaXRhbGljKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBzdHJldGNo
OwogICAgIGRlY29kZXIgPj4gc3RyZXRjaDsKICAgICBpZiAoIXN0cmV0Y2gpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IHdlaWdodDsKICAgICBkZWNvZGVyID4+IHdlaWdo
dDsKICAgICBpZiAoIXdlaWdodCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBjb21wdXRlZFNp
emU7CiAgICAgZGVjb2RlciA+PiBjb21wdXRlZFNpemU7CiAgICAgaWYgKCFjb21wdXRlZFNpemUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxGb250T3JpZW50YXRpb24+IG9yaWVudGF0aW9uOwogICAgIGRl
Y29kZXIgPj4gb3JpZW50YXRpb247CiAgICAgaWYgKCFvcmllbnRhdGlvbikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPE5vbkNKS0dseXBoT3JpZW50YXRpb24+IG5vbkNKS0dseXBoT3JpZW50YXRpb247CiAg
ICAgZGVjb2RlciA+PiBub25DSktHbHlwaE9yaWVudGF0aW9uOwogICAgIGlmICghbm9uQ0pLR2x5
cGhPcmllbnRhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRXaWR0aFZhcmlhbnQ+IHdpZHRo
VmFyaWFudDsKICAgICBkZWNvZGVyID4+IHdpZHRoVmFyaWFudDsKICAgICBpZiAoIXdpZHRoVmFy
aWFudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2Rl
OwogICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXJlbmRlcmluZ01vZGUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxUZXh0UmVuZGVyaW5nTW9kZT4gdGV4dFJlbmRlcmluZ01vZGU7
CiAgICAgZGVjb2RlciA+PiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBpZiAoIXRleHRSZW5kZXJp
bmdNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFN5bnRoZXNpcz4gZm9udFN5bnRoZXNpczsK
ICAgICBkZWNvZGVyID4+IGZvbnRTeW50aGVzaXM7CiAgICAgaWYgKCFmb250U3ludGhlc2lzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRDb21tb25MaWdh
dHVyZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q29tbW9uTGlnYXR1cmVzOwogICAgIGlmICgh
dmFyaWFudENvbW1vbkxpZ2F0dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGln
YXR1cmVzPiB2YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IHZh
cmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghdmFyaWFudERpc2NyZXRpb25h
cnlMaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlcz4gdmFy
aWFudEhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50SGlzdG9yaWNh
bExpZ2F0dXJlczsKICAgICBpZiAoIXZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IHZhcmlhbnRDb250ZXh0dWFsQWx0ZXJu
YXRlczsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlczsKICAgICBp
ZiAoIXZhcmlhbnRDb250ZXh0dWFsQWx0ZXJuYXRlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRW
YXJpYW50UG9zaXRpb24+IHZhcmlhbnRQb3NpdGlvbjsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRQ
b3NpdGlvbjsKICAgICBpZiAoIXZhcmlhbnRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50Q2Fwcz4gdmFyaWFudENhcHM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50Q2FwczsK
ICAgICBpZiAoIXZhcmlhbnRDYXBzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1l
cmljRmlndXJlPiB2YXJpYW50TnVtZXJpY0ZpZ3VyZTsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRO
dW1lcmljRmlndXJlOwogICAgIGlmICghdmFyaWFudE51bWVyaWNGaWd1cmUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTcGFjaW5nPiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7
CiAgICAgZGVjb2RlciA+PiB2YXJpYW50TnVtZXJpY1NwYWNpbmc7CiAgICAgaWYgKCF2YXJpYW50
TnVtZXJpY1NwYWNpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNGcmFj
dGlvbj4gdmFyaWFudE51bWVyaWNGcmFjdGlvbjsKICAgICBkZWNvZGVyID4+IHZhcmlhbnROdW1l
cmljRnJhY3Rpb247CiAgICAgaWYgKCF2YXJpYW50TnVtZXJpY0ZyYWN0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljT3JkaW5hbD4gdmFyaWFudE51bWVyaWNPcmRpbmFs
OwogICAgIGRlY29kZXIgPj4gdmFyaWFudE51bWVyaWNPcmRpbmFsOwogICAgIGlmICghdmFyaWFu
dE51bWVyaWNPcmRpbmFsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU2xh
c2hlZFplcm8+IHZhcmlhbnROdW1lcmljU2xhc2hlZFplcm87CiAgICAgZGVjb2RlciA+PiB2YXJp
YW50TnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGlmICghdmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
bykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50QWx0ZXJuYXRlcz4gdmFyaWFudEFsdGVy
bmF0ZXM7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50QWx0ZXJuYXRlczsKICAgICBpZiAoIXZhcmlh
bnRBbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJp
YW50PiB2YXJpYW50RWFzdEFzaWFuVmFyaWFudDsKICAgICBkZWNvZGVyID4+IHZhcmlhbnRFYXN0
QXNpYW5WYXJpYW50OwogICAgIGlmICghdmFyaWFudEVhc3RBc2lhblZhcmlhbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB2YXJpYW50RWFzdEFzaWFuV2lk
dGg7CiAgICAgZGVjb2RlciA+PiB2YXJpYW50RWFzdEFzaWFuV2lkdGg7CiAgICAgaWYgKCF2YXJp
YW50RWFzdEFzaWFuV2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lh
blJ1Ynk+IHZhcmlhbnRFYXN0QXNpYW5SdWJ5OwogICAgIGRlY29kZXIgPj4gdmFyaWFudEVhc3RB
c2lhblJ1Ynk7CiAgICAgaWYgKCF2YXJpYW50RWFzdEFzaWFuUnVieSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZvbnRPcHRpY2FsU2l6aW5nPiBvcHRpY2FsU2l6aW5nOwogICAgIGRlY29kZXIgPj4gb3B0
aWNhbFNpemluZzsKICAgICBpZiAoIW9wdGljYWxTaXppbmcpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250U3R5bGVBeGlzPiBmb250U3R5bGVBeGlzOwogICAgIGRlY29kZXIgPj4gZm9udFN0eWxlQXhp
czsKICAgICBpZiAoIWZvbnRTdHlsZUF4aXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxBbGxvd1VzZXJJ
bnN0YWxsZWRGb250cz4gc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHM7CiAgICAgZGVjb2Rl
ciA+PiBzaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250czsKICAgICBpZiAoIXNob3VsZEFsbG93
VXNlckluc3RhbGxlZEZvbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkRGlzYWJs
ZUxpZ2F0dXJlc0ZvclNwYWNpbmc7CiAgICAgZGVjb2RlciA+PiBzaG91bGREaXNhYmxlTGlnYXR1
cmVzRm9yU3BhY2luZzsKICAgICBpZiAoIXNob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5n
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZm9udERlc2NyaXB0aW9uLnNldEZlYXR1cmVTZXR0aW5ncyhXVEZNb3ZlKCpm
ZWF0dXJlU2V0dGluZ3MpKTsKICAgICBmb250RGVzY3JpcHRpb24uc2V0VmFyaWF0aW9uU2V0dGlu
Z3MoV1RGTW92ZSgqdmFyaWF0aW9uU2V0dGluZ3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKaW5k
ZXggNmU1ZjhiNDliN2M0YTRhNzRiODllZTQwNjQzZjFjOGJkMTJkMjU2Yy4uMzU3YjQwMjNlZTA4
ZGEwY2RlODk2ODJkOGRjYzc3OGUxYzhlZmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgYXV0byBGb250U2VsZWN0aW9uQWxnb3JpdGhtOjpzdHJldGNoRGlzdGFu
Y2UoQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcykgY29uc3QgLT4KIGF1dG8gRm9udFNlbGVjdGlv
bkFsZ29yaXRobTo6c3R5bGVEaXN0YW5jZShDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzKSBjb25z
dCAtPiBEaXN0YW5jZVJlc3VsdAogewogICAgIGF1dG8gc2xvcGUgPSBjYXBhYmlsaXRpZXMuc2xv
cGU7Ci0gICAgYXV0byByZXF1ZXN0U2xvcGUgPSBtX3JlcXVlc3Quc2xvcGUudmFsdWVPcihub3Jt
YWxJdGFsaWNWYWx1ZSgpKTsKKyAgICBhdXRvIHJlcXVlc3RTbG9wZSA9IG1fcmVxdWVzdC5zbG9w
ZS52YWx1ZV9vcihub3JtYWxJdGFsaWNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc2xvcGUuaXNWYWxp
ZCgpKTsKICAgICBpZiAoc2xvcGUuaW5jbHVkZXMocmVxdWVzdFNsb3BlKSkKICAgICAgICAgcmV0
dXJuIHsgRm9udFNlbGVjdGlvblZhbHVlKCksIHJlcXVlc3RTbG9wZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRo
bS5oCmluZGV4IDY2ZjhmZGMxNzViNmEzMTA5NzE4NmYyZDRiYzc3MDFmNzViNDRlZmMuLmJjOGQ3
ZDllMzllY2UzMjI0ZWM4OGYyMzg4MDlmOWZiYzQ3NWUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgK
QEAgLTkyLDcgKzkyLDcgQEAgT3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBGb250U2VsZWN0
aW9uVmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZvbnRTZWxl
Y3Rpb25WYWx1ZTo6QmFja2luZ1R5cGU+IGJhY2tpbmc7CiAgICAgZGVjb2RlciA+PiBiYWNraW5n
OwogICAgIGlmICghYmFja2luZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSByZXN1bHQ7
CiAgICAgcmVzdWx0Lm1fYmFja2luZyA9ICpiYWNraW5nOwpAQCAtMzYyLDEyICszNjIsMTIgQEAg
T3B0aW9uYWw8Rm9udFNlbGVjdGlvblJhbmdlPiBGb250U2VsZWN0aW9uUmFuZ2U6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZTo6VmFsdWU+
IG1pbmltdW07CiAgICAgZGVjb2RlciA+PiBtaW5pbXVtOwogICAgIGlmICghbWluaW11bSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25SYW5nZTo6VmFsdWU+IG1heGltdW07CiAgICAg
ZGVjb2RlciA+PiBtYXhpbXVtOwogICAgIGlmICghbWF4aW11bSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7
eyAqbWluaW11bSwgKm1heGltdW0gfX07CiB9CkBAIC00MDUsNyArNDA1LDcgQEAgaW5saW5lIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEZvbnRTZWxlY3Rpb25W
YWx1ZSYgZm9udFNlbGUKIAogaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IE9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4mIG9wdGlvbmFsRm9udFNl
bGVjdGlvblZhbHVlKQogewotICAgIHRzIDw8IG9wdGlvbmFsRm9udFNlbGVjdGlvblZhbHVlLnZh
bHVlT3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CisgICAgdHMgPDwgb3B0aW9uYWxGb250U2VsZWN0
aW9uVmFsdWUudmFsdWVfb3Iobm9ybWFsSXRhbGljVmFsdWUoKSk7CiAgICAgcmV0dXJuIHRzOwog
fQogCkBAIC00ODQsMTcgKzQ4NCwxNyBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENh
cGFiaWxpdGllcyB7CiAKICAgICBjb25zdGV4cHIgUmFuZ2UgY29tcHV0ZVdlaWdodCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gd2VpZ2h0LnZhbHVlT3IoUmFuZ2UgeyBub3JtYWxXZWln
aHRWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4gd2VpZ2h0LnZhbHVlX29yKFJhbmdlIHsgbm9y
bWFsV2VpZ2h0VmFsdWUoKSB9KTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgUmFuZ2UgY29tcHV0
ZVdpZHRoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB3aWR0aC52YWx1ZU9yKFJhbmdl
IHsgbm9ybWFsU3RyZXRjaFZhbHVlKCkgfSk7CisgICAgICAgIHJldHVybiB3aWR0aC52YWx1ZV9v
cihSYW5nZSB7IG5vcm1hbFN0cmV0Y2hWYWx1ZSgpIH0pOwogICAgIH0KIAogICAgIGNvbnN0ZXhw
ciBSYW5nZSBjb21wdXRlU2xvcGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHNsb3Bl
LnZhbHVlT3IoUmFuZ2UgeyBub3JtYWxJdGFsaWNWYWx1ZSgpIH0pOworICAgICAgICByZXR1cm4g
c2xvcGUudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxJdGFsaWNWYWx1ZSgpIH0pOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC01MjIsMTcgKzUyMiwxNyBAQCBPcHRpb25h
bDxGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzOgogICAgIE9wdGlvbmFsPE9wdGlvbmFsUmFuZ2U+IHdlaWdodDsKICAg
ICBkZWNvZGVyID4+IHdlaWdodDsKICAgICBpZiAoIXdlaWdodCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PE9wdGlvbmFsUmFuZ2U+IHdpZHRoOwogICAgIGRlY29kZXIgPj4gd2lkdGg7CiAgICAgaWYgKCF3
aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsUmFuZ2U+IHNsb3BlOwogICAgIGRlY29k
ZXIgPj4gc2xvcGU7CiAgICAgaWYgKCFzbG9wZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqd2VpZ2h0
LCAqd2lkdGgsICpzbG9wZSB9fTsKIH0KQEAgLTU1Miw3ICs1NTIsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgQ2FwYWJpbGl0aWVzID0gRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllczsKIAogICAgIEZv
bnRTZWxlY3Rpb25BbGdvcml0aG0oKSA9IGRlbGV0ZTsKLSAgICBGb250U2VsZWN0aW9uQWxnb3Jp
dGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBWZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIE9w
dGlvbmFsPENhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzQm91bmRzID0gV1RGOjpudWxsb3B0KTsK
KyAgICBGb250U2VsZWN0aW9uQWxnb3JpdGhtKEZvbnRTZWxlY3Rpb25SZXF1ZXN0LCBjb25zdCBW
ZWN0b3I8Q2FwYWJpbGl0aWVzPiYsIE9wdGlvbmFsPENhcGFiaWxpdGllcz4gY2FwYWJpbGl0aWVz
Qm91bmRzID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHN0cnVjdCBEaXN0YW5jZVJlc3VsdCB7CiAg
ICAgICAgIEZvbnRTZWxlY3Rpb25WYWx1ZSBkaXN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmgKaW5kZXggMDc4M2M1
MmIxYzM0M2UxZGQ1ZTc4N2ZhNDc0MDRjZTRlZjY1YWQ0Ny4uNWNjY2ZmYmI4NThkOTIyMjJhZTM2
YjdhNTFjYTY5NDBiMjFjMDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdzLmgKQEAgLTEyMSwyNyArMTIxLDI3IEBAIE9w
dGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5nPFQ+PiBGb250VGFnZ2VkU2V0dGluZzxUPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8dWludDhfdD4gY2hhcjA7CiAgICAgZGVj
b2RlciA+PiBjaGFyMDsKICAgICBpZiAoIWNoYXIwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDhf
dD4gY2hhcjE7CiAgICAgZGVjb2RlciA+PiBjaGFyMTsKICAgICBpZiAoIWNoYXIxKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8dWludDhfdD4gY2hhcjI7CiAgICAgZGVjb2RlciA+PiBjaGFyMjsKICAgICBp
ZiAoIWNoYXIyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDhfdD4gY2hhcjM7CiAgICAgZGVjb2Rl
ciA+PiBjaGFyMzsKICAgICBpZiAoIWNoYXIzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VD4gdmFsdWU7
CiAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IEZvbnRUYWdnZWRTZXR0aW5nPFQ+KHt7CiAgICAgICAgIHN0YXRpY19jYXN0PGNoYXI+KCpjaGFy
MCksCkBAIC0yMDgsNyArMjA4LDcgQEAgT3B0aW9uYWw8Rm9udFRhZ2dlZFNldHRpbmdzPFQ+PiBG
b250VGFnZ2VkU2V0dGluZ3M8VD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPFZlY3RvcjxGb250VGFnZ2VkU2V0dGluZzxUPj4+IGxpc3Q7CiAgICAgZGVjb2RlciA+PiBs
aXN0OwogICAgIGlmICghbGlzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZvbnRUYWdnZWRTZXR0aW5ncyByZXN1bHQ7
CiAgICAgcmVzdWx0Lm1fbGlzdCA9IFdURk1vdmUoKmxpc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5jcHAKaW5kZXggNGI4YjNlMjc2YjQzOWI1N2VjMGNlM2Ni
ZDkzNmRlMjc5NDFjOWU5ZS4uY2NkM2U4NTdhNWNhOWNkOGRhMDk2N2MxYWIwOTM0YWZjMzc0YzVl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuY3BwCkBAIC0z
Miw3ICszMiw3IEBAIE9wdGlvbmFsPEZvdXJDQz4gRm91ckNDOjpmcm9tU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nVmFsdWUpCiB7CiAgICAgYXV0byBhc2NpaVZhbHVlID0gc3RyaW5nVmFsdWUu
YXNjaWkoKTsKICAgICBpZiAoYXNjaWlWYWx1ZS5sZW5ndGgoKSAhPSA0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29u
c3QgY2hhciogZGF0YSA9IGFzY2lpVmFsdWUuZGF0YSgpOwogICAgIEFTU0VSVChhc2NpaVZhbHVl
LmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
TENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0
LmNwcAppbmRleCBjZTdhNDM5ZTJkMWIxZWM2ZjQzYmExOTE2ZWQ2MTk5OWY5YTU4OTc5Li43YWJj
M2MwOGZlMjE4ODZkMmFiMjE5ZWRiOTNhMDEwY2RiZGU1MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKQEAgLTE4Niw4ICsxODYsOCBAQCB1
bnNpZ25lZCBHTENvbnRleHQ6OnZlcnNpb24oKQogICAgICAgICAgICAgdmVyc2lvbkRpZ2l0cyA9
IHZlcnNpb25TdHJpbmdDb21wb25lbnRzWzBdLnNwbGl0KCcuJyk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25l
ZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVPcigwKSAqIDEwMAotICAgICAgICAgICAgKyBwYXJz
ZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1sxXSku
dmFsdWVPcigwKSAqIDEwOworICAgICAgICBtX3ZlcnNpb24gPSBwYXJzZUludGVnZXJBbGxvd2lu
Z1RyYWlsaW5nSnVuazx1bnNpZ25lZD4odmVyc2lvbkRpZ2l0c1swXSkudmFsdWVfb3IoMCkgKiAx
MDAKKyAgICAgICAgICAgICsgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dW5zaWdu
ZWQ+KHZlcnNpb25EaWdpdHNbMV0pLnZhbHVlX29yKDApICogMTA7CiAgICAgfQogICAgIHJldHVy
biBtX3ZlcnNpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HZW9tZXRyeVV0aWxpdGllcy5jcHAKaW5kZXggMzA4ZGU1NTNlYzFkZmM3YjE2N2Q0MGNk
NjcxZGM1ZDlmYjZmN2ViZC4uYzFkYjgxMjc3YTk0MDlkMTIxYTU3ZGM4OTUxNjc2YjllM2IxYzg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlb21l
dHJ5VXRpbGl0aWVzLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIFJvdGF0ZWRSZWN0IHJvdGF0ZWRC
b3VuZGluZ1JlY3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBGbG9hdFF1YWQmIHF1
YWQsCiB7CiAgICAgY29uc3RleHByIGF1dG8gdHdvUGlGbG9hdCA9IDIgKiBwaUZsb2F0OwogCi0g
ICAgYXV0byBtaW5Sb3RhdGlvbkFtb3VudCA9IG1pblJvdGF0aW9uSW5SYWRpYW5zLnZhbHVlT3Io
c3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKSk7CisgICAgYXV0byBtaW5Sb3Rh
dGlvbkFtb3VudCA9IG1pblJvdGF0aW9uSW5SYWRpYW5zLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkpOwogCiAgICAgYXV0byBsZWZ0TWlkUG9pbnQgPSBtaWRQ
b2ludChxdWFkLnAxKCksIHF1YWQucDQoKSk7CiAgICAgYXV0byByaWdodE1pZFBvaW50ID0gbWlk
UG9pbnQocXVhZC5wMigpLCBxdWFkLnAzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dlb21ldHJ5VXRpbGl0aWVzLmgKaW5kZXggZDhjZWM2OTM0YzAzYjFl
MTVjNmVmNTY0YzE5YjM0NDA0YzEzZjRkNS4uODBkZTEwZWZhZGI5OWM2OGQzZTA1YmI2MTEyMjk3
OTk4NDY1ZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2VvbWV0cnlVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW9tZXRyeVV0aWxpdGllcy5oCkBAIC02OCw2ICs2OCw2IEBAIHN0cnVjdCBSb3RhdGVkUmVj
dCB7CiAgICAgZmxvYXQgYW5nbGVJblJhZGlhbnM7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBSb3Rh
dGVkUmVjdCByb3RhdGVkQm91bmRpbmdSZWN0V2l0aE1pbmltdW1BbmdsZU9mUm90YXRpb24oY29u
c3QgRmxvYXRRdWFkJiwgT3B0aW9uYWw8ZmxvYXQ+IG1pblJvdGF0aW9uSW5SYWRpYW5zID0gV1RG
OjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQT1JUIFJvdGF0ZWRSZWN0IHJvdGF0ZWRCb3VuZGluZ1Jl
Y3RXaXRoTWluaW11bUFuZ2xlT2ZSb3RhdGlvbihjb25zdCBGbG9hdFF1YWQmLCBPcHRpb25hbDxm
bG9hdD4gbWluUm90YXRpb25JblJhZGlhbnMgPSBzdGQ6Om51bGxvcHQpOwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAppbmRleCA0NWNhYTc4
MjljZjAwZjI1YzExMzljNzIxZDUyMDUzZmZhZWViZTlmLi45NDk3NTBkYjBlNDA1ZWFhY2Y0YjVk
ZGM3ZDc3MjFhYzcxZjhhOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoQnVmZmVyLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgYXV0byByZXN1bHQgPSB1bmNoZWNrZWRTdHJpbmdPZmZzZXRBdChpbmRleCk7CiAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxzdGQ6Om1ha2VfdW5zaWduZWRfdDxHbHlwaEJ1ZmZlclN0cmluZ09m
ZnNldD4+KHJlc3VsdCkgPj0gc3RyaW5nTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDc5ZTJmNTM4OGM0NmU1ODkyMzAxNjFjNDc0NTI1
NDE5MjQ3ZTgyYWIuLmE0NGY2ODRhYzBlMjA3YTFlZTRkOTBmYjU2ZjIwMjFlMGE3NDUxZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEdseXBo
TWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCiAKIHRlbXBsYXRlPD4gaW5s
aW5lIE9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxPcHRpb25hbDxQYXRoPj46OnVua25v
d25NZXRyaWNzKCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01h
cDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xv
d0Nhc2UodW5zaWduZWQgcGFnZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudC5oCmluZGV4IDljM2QwOTdmNTU4YTVjZTY4MWNkMjkzNWJhMjA0MTU1MDhh
NDE4MmEuLjEzOWU3MzU1YTg1MjQyMmQ4YjgwODYyOWUyY2I2YzdkODhkZWM0ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaApAQCAtMTczLDEyICsxNzMs
MTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gT3B0aW9uYWw8R3JhZGllbnQ6OkNvbG9y
U3RvcD4gR3JhZGllbnQ6OkNvbG9yU3RvcDo6ZGUKICAgICBPcHRpb25hbDxmbG9hdD4gb2Zmc2V0
OwogICAgIGRlY29kZXIgPj4gb2Zmc2V0OwogICAgIGlmICghb2Zmc2V0KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xv
cikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7eyAqb2Zmc2V0LCAqY29sb3IgfX07CiB9CkBAIC0xOTQsMTIg
KzE5NCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxHcmFkaWVudDo6
TGluZWFyRGF0YT4gR3JhZGllbnQ6OkxpbmVhckRhdGE6OgogICAgIE9wdGlvbmFsPEZsb2F0UG9p
bnQ+IHBvaW50MDsKICAgICBkZWNvZGVyID4+IHBvaW50MDsKICAgICBpZiAoIXBvaW50MCkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBvaW50MTsKICAgICBkZWNvZGVyID4+IHBvaW50
MTsKICAgICBpZiAoIXBvaW50MSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqcG9pbnQwLCAqcG9pbnQx
IH19OwogfQpAQCAtMjE4LDI3ICsyMTgsMjcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4g
T3B0aW9uYWw8R3JhZGllbnQ6OlJhZGlhbERhdGE+IEdyYWRpZW50OjpSYWRpYWxEYXRhOjoKICAg
ICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDA7CiAgICAgZGVjb2RlciA+PiBwb2ludDA7CiAg
ICAgaWYgKCFwb2ludDApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGbG9hdFBvaW50PiBwb2ludDE7CiAg
ICAgZGVjb2RlciA+PiBwb2ludDE7CiAgICAgaWYgKCFwb2ludDEpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxmbG9hdD4gc3RhcnRSYWRpdXM7CiAgICAgZGVjb2RlciA+PiBzdGFydFJhZGl1czsKICAgICBp
ZiAoIXN0YXJ0UmFkaXVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGVuZFJhZGl1czsKICAg
ICBkZWNvZGVyID4+IGVuZFJhZGl1czsKICAgICBpZiAoIWVuZFJhZGl1cykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGZsb2F0PiBhc3BlY3RSYXRpbzsKICAgICBkZWNvZGVyID4+IGFzcGVjdFJhdGlvOwog
ICAgIGlmICghYXNwZWN0UmF0aW8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnBvaW50MCwgKnBvaW50
MSwgKnN0YXJ0UmFkaXVzLCAqZW5kUmFkaXVzLCAqYXNwZWN0UmF0aW8gfX07CiB9CkBAIC0yNTQs
MTIgKzI1NCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBPcHRpb25hbDxHcmFkaWVu
dDo6Q29uaWNEYXRhPiBHcmFkaWVudDo6Q29uaWNEYXRhOjpkZQogICAgIE9wdGlvbmFsPEZsb2F0
UG9pbnQ+IHBvaW50MDsKICAgICBkZWNvZGVyID4+IHBvaW50MDsKICAgICBpZiAoIXBvaW50MCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBhbmdsZVJhZGlhbnM7CiAgICAgZGVjb2RlciA+PiBh
bmdsZVJhZGlhbnM7CiAgICAgaWYgKCFhbmdsZVJhZGlhbnMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sg
KnBvaW50MCwgKmFuZ2xlUmFkaWFucyB9fTsKIH0KQEAgLTI3NywxNyArMjc3LDE3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIERlY29kZXI+IE9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IEdyYWRpZW50Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgT3B0aW9uYWw8RGF0YT4gZGF0YTsKICAgICBkZWNvZGVy
ID4+IGRhdGE7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKFdURk1vdmUoKmRhdGEpKTsKIAogICAgIE9wdGlvbmFsPENvbG9yU3RvcFZlY3Rv
cj4gc3RvcHM7CiAgICAgZGVjb2RlciA+PiBzdG9wczsKICAgICBpZiAoIXN0b3BzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IE9wdGlvbmFsPGJvb2w+IHN0b3BzU29ydGVkOwogICAgIGRlY29kZXIgPj4gc3RvcHNTb3J0ZWQ7
CiAgICAgaWYgKCFzdG9wc1NvcnRlZC5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgqc3RvcHNTb3J0
ZWQpCiAgICAgICAgIGdyYWRpZW50LT5zZXRTb3J0ZWRDb2xvclN0b3BzKFdURk1vdmUoKnN0b3Bz
KSk7CiAgICAgZWxzZSB7CkBAIC0yOTcsNyArMjk3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVj
b2Rlcj4gT3B0aW9uYWw8UmVmPEdyYWRpZW50Pj4gR3JhZGllbnQ6OmRlY29kZShEZWNvZGVyJiBk
ZWMKIAogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIHNwcmVhZE1ldGhvZDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNwcmVhZE1ldGhvZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZ3JhZGllbnQtPnNldFNwcmVhZE1l
dGhvZChzcHJlYWRNZXRob2QpOwogCiAgICAgcmV0dXJuIGdyYWRpZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
OTcwYzM3NWNiZDU4MTlhMjAwYjIwYjY3MTMyODcwYWQ1ZDkxN2E5MC4uYzhhYzM4NmI4MTE5NTZh
Nzc2ZmVkZGZhZWVmMjI4MmM5NGFjODYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC01MTksNyArNTE5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uKGlzUlRM
ID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICAgICAgc3Vi
cnVuLnNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYmlkaVJ1bi0+ZGlyT3ZlcnJpZGUoZmFsc2UpKTsK
IAotICAgICAgICBhdXRvIGFkdmFuY2UgPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1
cnJQb2ludCwgMCwgV1RGOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOworICAg
ICAgICBhdXRvIGFkdmFuY2UgPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2lu
dCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwogICAgICAgICBj
dXJyUG9pbnQubW92ZShhZHZhbmNlKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAppbmRleCBlZTE0MmExOTRhNGZhNTcxOGI5MjIzZGVkZmQ5ZGI1YTUwYWM3OGQwLi5m
ZTE1ZWFiMDRiMzVmZWY4Yjc0ZWUxZjczZWU4ZjgxOWQ5OTA5YjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMTUzLDEy
ICsxNTMsMTIgQEAgT3B0aW9uYWw8RG9jdW1lbnRNYXJrZXJMaW5lU3R5bGU+IERvY3VtZW50TWFy
a2VyTGluZVN0eWxlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxNb2RlPiBt
b2RlOwogICAgIGRlY29kZXIgPj4gbW9kZTsKICAgICBpZiAoIW1vZGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxib29sPiBzaG91bGRVc2VEYXJrQXBwZWFyYW5jZTsKICAgICBkZWNvZGVyID4+IHNob3Vs
ZFVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICghc2hvdWxkVXNlRGFya0FwcGVhcmFuY2UpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4ge3sgKm1vZGUsICpzaG91bGRVc2VEYXJrQXBwZWFyYW5jZSB9fTsKIH0K
QEAgLTQ2OCw5ICs0NjgsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBUZXh0CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIEZsb2F0U2l6ZSBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9wdGlv
bmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBGbG9hdFNpemUgZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBPcHRpb25hbDx1bnNpZ25l
ZD4gdG8gPSBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jiwg
Rm9udFNtb290aGluZ01vZGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkcmF3
RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9tU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgdW5zaWduZWQgZnJvbSA9IDAsIE9w
dGlvbmFsPHVuc2lnbmVkPiB0byA9IFdURjo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEF0b21TdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNp
Z25lZCBmcm9tID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+IHRvID0gc3RkOjpudWxsb3B0KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBGb250Q2FzY2FkZTo6Q3Vz
dG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRm9udENhc2NhZGU6OkRvTm90UGFpbnRJZkZvbnROb3RS
ZWFkeSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgY29tcHV0ZVVuZGVybGluZUJv
dW5kc0ZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggOGRjNzRm
ZTdhZWE2ZTk5YjkyZDdmMjNhZDYyNDZjZmE1NmY0YWY3Zi4uMmFmMjZjOWMyZDA3YTQ0MTcyNWIy
YWUzYjc0MDk4ZjNmNjJmYzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMzQwLDcgKzM0MCw3IEBAIHB1YmxpYzoKIAogICAg
IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgKHRoZSBsb2NhdGlvbiBvZiBpdHMgdG9wLWxl
ZnQgY29ybmVyIGluIGl0cyBwYXJlbnQpCiAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApIHsgbV9hcHByb3hpbWF0ZVBvc2l0aW9uID0gV1RGOjpu
dWxsb3B0OyBtX3Bvc2l0aW9uID0gcDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50JiBwKSB7IG1fYXBwcm94aW1hdGVQb3NpdGlvbiA9IHN0ZDo6bnVsbG9w
dDsgbV9wb3NpdGlvbiA9IHA7IH0KIAogICAgIC8vIGFwcHJveGltYXRlUG9zaXRpb24sIGlmIHNl
dCwgb3ZlcnJpZGVzIHBvc2l0aW9uKCkgYW5kIGlzIHVzZWQgZHVyaW5nIGNvdmVyYWdlIHJlY3Qg
Y29tcHV0YXRpb24uCiAgICAgRmxvYXRQb2ludCBhcHByb3hpbWF0ZVBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9hcHByb3hpbWF0ZVBvc2l0aW9uID8gbV9hcHByb3hpbWF0ZVBvc2l0aW9uLnZh
bHVlKCkgOiBtX3Bvc2l0aW9uOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuY3BwCmluZGV4IDE2Y2Q5YTQzNzdmMTg4ZWU1MzQwZTRmNGE0
NDlmZTIxNzM5NTMxODEuLmU1ODA1MmEzZGNjZWQwNDI1MjdmZjRlNzE1ODA3YjUzY2JjOWViNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRp
ZXMuY3BwCkBAIC0zOSwyMyArMzksMjMgQEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlcnM+IHBhcnNl
SEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVjU3RyaW5nKQogICAgIGF1dG8gY29k
ZWNTcGxpdCA9IGNvZGVjVmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBj
b2RlY1NwbGl0LmJlZ2luKCk7CiAgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5k
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBIRVZDUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgICAgLy8gQ29kZWMg
aWRlbnRpZmllcjogbGVnYWwgdmFsdWVzIGFyZSBzcGVjaWZpZWQgaW4gSVNPL0lFQyAxNDQ5Ni0x
NToyMDE0LCBzZWN0aW9uIDg6CiAgICAgYXV0byBjb2RlY05hbWUgPSAqbmV4dEVsZW1lbnQ7CiAg
ICAgaWYgKGNvZGVjTmFtZSAhPSAiaHZjMSIgJiYgY29kZWNOYW1lICE9ICJoZXYxIikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBG
aXJzdCBlbGVtZW50OiBPcHRpb25hbCBHZW5lcmFsIFByb2ZpbGUgU3BhY2UgcGFyYW1ldGVyIFsn
QScsICdCJywgJ0MnXSwgbWFwcGluZyB0byBbMSwgMiwgM10KICAgICAvLyBhbmQgWzBdIGZvciBh
YnNlbnQsIHRoZW4gR2VuZXJhbCBQcm9maWxlIElEQyBhcyBhIDUtYml0IGRlY2ltYWwgbnVtYmVy
LgogICAgIGF1dG8gcHJvZmlsZVNwYWNlID0gKm5leHRFbGVtZW50OwogICAgIGlmICghcHJvZmls
ZVNwYWNlLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBmaXJzdENoYXJhY3RlciA9IHByb2ZpbGVT
cGFjZVswXTsKICAgICBib29sIGhhc1Byb2ZpbGVTcGFjZSA9IGZpcnN0Q2hhcmFjdGVyID49ICdB
JyAmJiBmaXJzdENoYXJhY3RlciA8PSAnQyc7CkBAIC02NiwzMiArNjYsMzIgQEAgT3B0aW9uYWw8
SEVWQ1BhcmFtZXRlcnM+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhTdHJpbmdWaWV3IGNvZGVj
U3RyaW5nKQogCiAgICAgYXV0byBwcm9maWxlSURDID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHBy
b2ZpbGVTcGFjZSk7CiAgICAgaWYgKCFwcm9maWxlSURDKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ2Vu
ZXJhbFByb2ZpbGVJREMgPSAqcHJvZmlsZUlEQzsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09
IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBTZWNvbmQgZWxlbWVudDogMzIgYml0IG9m
IEdlbmVyYWwgUHJvZmlsZSBDb21wYXRpYmlsaXR5IEZsYWdzLCBpbiByZXZlcnNlIGJpdCBvcmRl
ciwKICAgICAvLyBpbiBoZXggd2l0aCBsZWFkaW5nIHplcm9zIG9taXR0ZWQuCiAgICAgYXV0byBj
b21wYXRpYmlsaXR5RmxhZ3MgPSBwYXJzZUludGVnZXI8dWludDMyX3Q+KCpuZXh0RWxlbWVudCwg
MTYpOwogICAgIGlmICghY29tcGF0aWJpbGl0eUZsYWdzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuZ2Vu
ZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5RmxhZ3MgPSAqY29tcGF0aWJpbGl0eUZsYWdzOwogCiAg
ICAgaWYgKCsrbmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRo
aXJkIGVsZW1lbnQ6IEdlbmVyYWwgVGllciBGbGFnIFsnTCcsICdIJ10sIG1hcHBpbmcgdG8gW2Zh
bHNlLCB0cnVlXSwgZm9sbG93ZWQgYnkKICAgICAvLyBHZW5lcmFsIExldmVsIElEQyBhcyBhIDgt
Yml0IGRlY2ltYWwgbnVtYmVyLgogICAgIGF1dG8gZ2VuZXJhbFRpZXIgPSAqbmV4dEVsZW1lbnQ7
CiAgICAgZmlyc3RDaGFyYWN0ZXIgPSBnZW5lcmFsVGllclswXTsKICAgICBpZiAoZmlyc3RDaGFy
YWN0ZXIgIT0gJ0wnICYmIGZpcnN0Q2hhcmFjdGVyICE9ICdIJykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ2Vu
ZXJhbExldmVsSURDID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KGdlbmVyYWxUaWVyLnN1YnN0cmlu
ZygxKSk7CiAgICAgaWYgKCFnZW5lcmFsTGV2ZWxJREMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5nZW5l
cmFsTGV2ZWxJREMgPSAqZ2VuZXJhbExldmVsSURDOwogCiAgICAgLy8gT3B0aW9uYWwgZm91cnRo
IGFuZCByZW1haW5pbmcgZWxlbWVudHM6IGEgc2VxdWVuY2Ugb2YgNiAxLWJ5dGUgY29uc3RyYWlu
dCBmbGFncywgZWFjaCBieXRlIGVuY29kZWQKQEAgLTEwMCw3ICsxMDAsNyBAQCBPcHRpb25hbDxI
RVZDUGFyYW1ldGVycz4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNT
dHJpbmcpCiAgICAgICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCFwYXJzZUludGVnZXI8dWludDhfdD4oKm5l
eHRFbGVtZW50LCAxNikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gcGFyYW1ldGVy
czsKQEAgLTEwOSw3ICsxMDksNyBAQCBPcHRpb25hbDxIRVZDUGFyYW1ldGVycz4gcGFyc2VIRVZD
Q29kZWNQYXJhbWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNTdHJpbmcpCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZVR5cGU+IGlubGluZSBPcHRpb25hbDxWYWx1ZVR5cGU+IG1ha2VPcHRpb25hbEZyb21Q
b2ludGVyKGNvbnN0IFZhbHVlVHlwZSogcG9pbnRlcikKIHsKICAgICBpZiAoIXBvaW50ZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuICpwb2ludGVyOwogfQogCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIE9w
dGlvbmFsPHVpbnQxNl90PiBtYXhpbXVtTGV2ZWxJREZvckRvVmlQcm9maWxlSUQodWludDE2X3Qg
cHJvZmlsZUlEKQogICAgIGNhc2UgNzogcmV0dXJuIDk7CiAgICAgY2FzZSA4OiByZXR1cm4gMTM7
CiAgICAgY2FzZSA5OiByZXR1cm4gNTsKLSAgICBkZWZhdWx0OiByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGRlZmF1bHQ6IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCkBAIC0xNzks
NTMgKzE3OSw1MyBAQCBPcHRpb25hbDxEb1ZpUGFyYW1ldGVycz4gcGFyc2VEb1ZpQ29kZWNQYXJh
bWV0ZXJzKFN0cmluZ1ZpZXcgY29kZWNWaWV3KQogICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVj
Vmlldy5zcGxpdCgnLicpOwogICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2lu
KCk7CiAgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBE
b1ZpUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCiAgICAgYXV0byBjb2RlYyA9IHBhcnNlRG9WaUNv
ZGVjVHlwZSgqbmV4dEVsZW1lbnQpOwogICAgIGlmICghY29kZWMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5jb2RlYyA9ICpjb2RlYzsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIHByb2ZpbGVJRCA9ICpuZXh0RWxlbWVudDsKICAgICBpZiAo
IXByb2ZpbGVJRC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZmlyc3RDaGFyYWN0ZXIgPSBwcm9m
aWxlSURbMF07CiAgICAgLy8gUHJvZmlsZSBkZWZpbml0aW9uIGNhbiBlaXRoZXIgYmUgbnVtZXJp
YyBvciBhbHBoYToKICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT0gJzAnKSB7CiAgICAgICAgIGF1
dG8gYml0c3RyZWFtUHJvZmlsZUlEID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHByb2ZpbGVJRCk7
CiAgICAgICAgIGlmICghYml0c3RyZWFtUHJvZmlsZUlEKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHBh
cmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEID0gKmJpdHN0cmVhbVByb2ZpbGVJRDsKICAgICB9
IGVsc2UgewogICAgICAgICBhdXRvIGJpdHN0cmVhbVByb2ZpbGVJRCA9IHByb2ZpbGVJREZvckFs
cGhhYmV0aWNEb1ZpUHJvZmlsZShjb2RlY1ZpZXcubGVmdCg1ICsgcHJvZmlsZUlELmxlbmd0aCgp
KSk7CiAgICAgICAgIGlmICghYml0c3RyZWFtUHJvZmlsZUlEKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEID0gKmJpdHN0cmVhbVByb2ZpbGVJRDsKICAg
ICB9CiAKICAgICBpZiAoIWlzVmFsaWREb1ZpUHJvZmlsZUlEKHBhcmFtZXRlcnMuYml0c3RyZWFt
UHJvZmlsZUlEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaXNWYWxpZFByb2ZpbGVJREZvckNvZGVjKHBhcmFt
ZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlELCBwYXJhbWV0ZXJzLmNvZGVjKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
ICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGJpdHN0
cmVhbUxldmVsSUQgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBp
ZiAoIWJpdHN0cmVhbUxldmVsSUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iaXRzdHJlYW1MZXZlbElE
ID0gKmJpdHN0cmVhbUxldmVsSUQ7CiAKICAgICBhdXRvIG1heGltdW1MZXZlbElEID0gbWF4aW11
bUxldmVsSURGb3JEb1ZpUHJvZmlsZUlEKHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEKTsK
ICAgICBpZiAoIW1heGltdW1MZXZlbElEIHx8IHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCA+
ICptYXhpbXVtTGV2ZWxJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggMTc2NDc0N2Q2MTQwY2YxMTZj
OWM2NDI2ZGRjOTcxYWMyYmViOTgwNS4uMjQyZmUwNTc4ZmMxNGQyNzA5NjQ2NTM1MDY3MzUyZjBk
YWZlNWVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0x
MTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1
cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsgfQogICAgIGZsb2F0IHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSgpLndpZHRoKCk7IH0KICAgICBmbG9hdCBoZWlnaHQoKSBjb25z
dCB7IHJldHVybiBzaXplKCkuaGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEludFBv
aW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVh
bCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZTsgfQogCiAgICAgV0VCQ09SRV9FWFBP
UlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IGZhZTBlZDY0NGNkNzRmZGEzOTdlZWU0ZTJiNmM3NDll
ODNmMGI5NWEuLjY0ZWE0ODM3MjY5NmRhZTkwNTBiYTA0MTI1YWMyMGZhMDRlMDBiOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMTIy
LDggKzEyMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNl
TWFzaygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtVG9Db2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpID0gMDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0
YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBX
VEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8p
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IHN0ZDo6bnVsbG9wdCwgUHJlc2VydmVS
ZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkgPSBzdGQ6Om51bGxvcHQpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1
YWwgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVy
Rm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImLCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50ID0geyB9LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQgPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBkNDcwNGE2NDVhNjI0NzcxY2Vi
ZGI5MDQyNWQ0NWM2OTBmODE0MTdhLi40M2Y1MmJkNGJkODlkNTE2OTUzN2NiOTRjYzg1ZTA1Mjlj
ZWY4YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1
ZmZlckZvcm1hdAogCiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUoZGVzdGluYXRpb25Gb3JtYXQsIHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKTsKICAgICBpZiAo
IXBpeGVsQnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzb3VyY2VSZWN0Q2xpcHBlZCA9IGludGVyc2Vj
dGlvbihiYWNrZW5kUmVjdCgpLCBzb3VyY2VSZWN0U2NhbGVkKTsKICAgICBJbnRSZWN0IGRlc3Rp
bmF0aW9uUmVjdCB7IEludFBvaW50Ojp6ZXJvKCksIHNvdXJjZVJlY3RDbGlwcGVkLnNpemUoKSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApp
bmRleCBhMTJhNmQ4MjhiMjllYzNlZTlkYjg1N2U5ZWFkNDU0YzU0NWU3ODc2Li5mOGQ2MDQ1N2Iy
MTUzNmZmMzk5OTBjOTg0NmMwNzI0ZmU1ZjdjZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtNzMsMTIgKzczLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0FscGhhOwogICAgICAgICAgICAgZGVj
b2RlciA+PiBoYXNBbHBoYTsKICAgICAgICAgICAgIGlmICghaGFzQWxwaGEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxTZWNvbmRzPiBkdXJhdGlvbjsKICAgICAg
ICAgICAgIGRlY29kZXIgPj4gZHVyYXRpb247CiAgICAgICAgICAgICBpZiAoIWR1cmF0aW9uKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAg
ICAgKmhhc0FscGhhLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKaW5kZXggODk3OGU2YWY3MTJlODNjZDY3MDhhYTMz
ZmI1YzI1NGZmYzQyYjEwNy4uM2M5ZjQ4ZjQ1NjQzOTE2MTZkYzZlNmZmNWY4ZDVkMGRlYzZmNmI3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVBhaW50aW5nT3B0aW9ucy5oCkBAIC05NSwyNyArOTUsMjcgQEAgT3B0aW9uYWw8SW1hZ2VQYWlu
dGluZ09wdGlvbnM+IEltYWdlUGFpbnRpbmdPcHRpb25zOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxDb21wb3NpdGVPcGVyYXRvcj4gY29tcG9zaXRlT3BlcmF0b3I7CiAg
ICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKICAgICBpZiAoIWNvbXBvc2l0ZU9wZXJh
dG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8QmxlbmRNb2RlPiBibGVuZE1vZGU7CiAgICAgZGVjb2Rl
ciA+PiBibGVuZE1vZGU7CiAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxE
ZWNvZGluZ01vZGU+IGRlY29kaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IGRlY29kaW5nTW9kZTsK
ICAgICBpZiAoIWRlY29kaW5nTW9kZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEltYWdlT3JpZW50YXRp
b246Ok9yaWVudGF0aW9uPiBvcmllbnRhdGlvbjsKICAgICBkZWNvZGVyID4+IG9yaWVudGF0aW9u
OwogICAgIGlmICghb3JpZW50YXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxJbnRlcnBvbGF0aW9u
UXVhbGl0eT4gaW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgZGVjb2RlciA+PiBpbnRlcnBvbGF0
aW9uUXVhbGl0eTsKICAgICBpZiAoIWludGVycG9sYXRpb25RdWFsaXR5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIEltYWdlUGFpbnRpbmdPcHRpb25zIHsgKmNvbXBvc2l0ZU9wZXJhdG9yLCAqYmxlbmRNb2Rl
LCAqZGVjb2RpbmdNb2RlLCAqb3JpZW50YXRpb24sICppbnRlcnBvbGF0aW9uUXVhbGl0eSB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNv
bHV0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUmVzb2x1
dGlvbi5jcHAKaW5kZXggYzFlMmMyYmJjOTNjNzhiZjhjYWFjZDgzMzAwMWQyZDE3NmRkMmUwZS4u
Zjc2NjBiMDk2YzY0ZDAyMzY2YjFiZTg3YzU2MjllNTM2ZDE5NDkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VSZXNvbHV0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVJlc29sdXRpb24uY3BwCkBAIC0z
MSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogT3B0aW9uYWw8SW50U2l6ZT4gSW1h
Z2VSZXNvbHV0aW9uOjpkZW5zaXR5Q29ycmVjdGVkU2l6ZShjb25zdCBGbG9hdFNpemUmIHNvdXJj
ZVNpemUsIGNvbnN0IFJlc29sdXRpb25NZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgaWYgKG1l
dGFkYXRhLnJlc29sdXRpb25Vbml0ICE9IFJlc29sdXRpb25Vbml0OjpJbmNoZXMgfHwgbWV0YWRh
dGEucmVzb2x1dGlvbi5pc0VtcHR5KCkgfHwgbWV0YWRhdGEucHJlZmVycmVkU2l6ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIHNpemVGcm9tUmVzb2x1dGlvbiA9IHNvdXJjZVNpemUgKiBEZWZh
dWx0UmVzb2x1dGlvbiAvIG1ldGFkYXRhLnJlc29sdXRpb247CiAKICAgICBpZiAoc2l6ZUZyb21S
ZXNvbHV0aW9uID09IG1ldGFkYXRhLnByZWZlcnJlZFNpemUpCiAgICAgICAgIHJldHVybiByb3Vu
ZGVkSW50U2l6ZShtZXRhZGF0YS5wcmVmZXJyZWRTaXplKTsKIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDllMGM1ZjA4YmI2
ZWUxNzUzYjI1ODg4OGNkNTVmYTgyN2UxYjlhMWQuLjVkOTE2YzBmZTVkNzAxOTFiOTJkNDBhYzc5
MTRjYmRlNWMwNDM3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAKQEAgLTU3NCw3ICs1NzQsNyBAQCBPcHRpb25hbDxJbnRTaXplPiBJ
bWFnZVNvdXJjZTo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbgogewogICAgIGF1dG8gc2l6ZSA9IGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVkZWQo
bV9kZW5zaXR5Q29ycmVjdGVkU2l6ZSwgTWV0YWRhdGFUeXBlOjpEZW5zaXR5Q29ycmVjdGVkU2l6
ZSwgJkltYWdlRnJhbWU6OmRlbnNpdHlDb3JyZWN0ZWRTaXplLCBJbWFnZUZyYW1lOjpDYWNoaW5n
OjpNZXRhZGF0YSk7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKG9yaWVudGF0aW9uID09
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKICAgICAgICAgb3JpZW50YXRpb24gPSB0aGlz
LT5vcmllbnRhdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW5iYW5kR2VuZXJpY0N1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kR2VuZXJpY0N1ZS5oCmluZGV4IGNlZDY4MWIwYjc0MzEwN2U0NGM5ODg3NjY5MTRk
MzA0NjUzODRlYjkuLjMyMTUxOWJlMzIxM2Q5MDZlMWJhMWRmYTg2MjQ5ZGM2MGFlNjllN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZEdlbmVyaWND
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRHZW5lcmlj
Q3VlLmgKQEAgLTkwLDgyICs5MCw4MiBAQCBPcHRpb25hbDxHZW5lcmljQ3VlRGF0YT4gR2VuZXJp
Y0N1ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEluYmFuZEdl
bmVyaWNDdWVJZGVudGlmaWVyPiB1bmlxdWVJZDsKICAgICBkZWNvZGVyID4+IHVuaXF1ZUlkOwog
ICAgIGlmICghdW5pcXVlSWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHN0YXJ0VGlt
ZTsKICAgICBkZWNvZGVyID4+IHN0YXJ0VGltZTsKICAgICBpZiAoIXN0YXJ0VGltZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZW5kVGltZTsKICAgICBkZWNvZGVyID4+IGVuZFRpbWU7
CiAgICAgaWYgKCFlbmRUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVy
OwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnQ7CiAgICAgZGVjb2RlciA+PiBjb250ZW50Owog
ICAgIGlmICghY29udGVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gZm9udE5hbWU7CiAg
ICAgZGVjb2RlciA+PiBmb250TmFtZTsKICAgICBpZiAoIWZvbnROYW1lKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8ZG91YmxlPiBsaW5lOwogICAgIGRlY29kZXIgPj4gbGluZTsKICAgICBpZiAoIWxpbmUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+IHBvc2l0aW9uOwogICAgIGRlY29kZXIgPj4gcG9z
aXRpb247CiAgICAgaWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGRvdWJsZT4gc2l6
ZTsKICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8ZG91YmxlPiBiYXNlRm9udFNpemU7CiAgICAgZGVjb2RlciA+PiBiYXNlRm9udFNpemU7CiAg
ICAgaWYgKCFiYXNlRm9udFNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+IHJlbGF0aXZl
Rm9udFNpemU7CiAgICAgZGVjb2RlciA+PiByZWxhdGl2ZUZvbnRTaXplOwogICAgIGlmICghcmVs
YXRpdmVGb250U2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPENvbG9yPiBmb3JlZ3JvdW5kQ29sb3I7
CiAgICAgZGVjb2RlciA+PiBmb3JlZ3JvdW5kQ29sb3I7CiAgICAgaWYgKCFmb3JlZ3JvdW5kQ29s
b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogICAgIGRlY29k
ZXIgPj4gYmFja2dyb3VuZENvbG9yOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Q29sb3I+IGhpZ2hsaWdodENvbG9yOwogICAgIGRlY29kZXIgPj4gaGlnaGxp
Z2h0Q29sb3I7CiAgICAgaWYgKCFoaWdobGlnaHRDb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEFs
aWdubWVudD4gYWxpZ25tZW50OwogICAgIGRlY29kZXIgPj4gYWxpZ25tZW50OwogICAgIGlmICgh
YWxpZ25tZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RhdHVzPiBzdGF0dXM7CiAgICAgZGVjb2Rl
ciA+PiBzdGF0dXM7CiAgICAgaWYgKCFzdGF0dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBHZW5lcmljQ3VlRGF0YSBk
YXRhID0gewogCkBAIC0xOTQsNyArMTk0LDcgQEAgT3B0aW9uYWw8R2VuZXJpY0N1ZURhdGE+IEdl
bmVyaWNDdWVEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB9OwogCiAgICAgaWYg
KCFkYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lubGluZVBhdGhEYXRhLmgKaW5kZXggZGU0NTNk
OTE5ZThjNGNjMDI5NTBmN2U2MWNmMDNmY2FmNzYzNzA5My4uM2EwMmU1NjA1YWIyOGNhZTM0OTRm
ODg3NWZjNDY1NDNjMzBiYjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW5saW5lUGF0aERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmxpbmVQYXRoRGF0YS5oCkBAIC05NSw3ICs5NSw3IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPE1vdmVEYXRhPiBNb3ZlRGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgTW92ZURhdGEgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRh
dGEubG9jYXRpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC0xMDksMTAgKzEwOSwx
MCBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxMaW5lRGF0YT4gTGluZURhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIExpbmVEYXRhIGRhdGE7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGF0YS5lbmQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0xMzIsMjUgKzEzMiwy
NSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxBcmNEYXRhPiBBcmNEYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBcmNEYXRhIGRhdGE7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkYXRhLnN0YXJ0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZGF0YS5jZW50ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnJhZGl1cykp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRBbmdsZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZW5kQW5nbGUpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLmNsb2Nrd2lzZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gZGF0YTsKIH0KQEAgLTE2NiwxMyArMTY2LDEz
IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFF1YWRDdXJ2ZURhdGE+IFF1YWRD
dXJ2ZURhdGE6OmRlY29kZShEZWNvZGVyJiBkCiB7CiAgICAgUXVhZEN1cnZlRGF0YSBkYXRhOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zdGFydFBvaW50KSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZGF0YS5jb250cm9sUG9pbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLmVuZFBvaW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkYXRhOwogfQpAQCAtMTg5
LDE2ICsxODksMTYgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8QmV6aWVyQ3Vy
dmVEYXRhPiBCZXppZXJDdXJ2ZURhdGE6OmRlY29kZShEZWNvZGUKIHsKICAgICBCZXppZXJDdXJ2
ZURhdGEgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc3RhcnRQb2ludCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuY29udHJvbFBvaW50MSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuY29udHJvbFBvaW50MikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuZW5kUG9pbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5kZXgg
MjQyZmZhOWQyNjFmMjljMWZjMjJlYWE0OGVmYjlmNDExMDhjZWRjMC4uYzljYmQ4MWRiMjBhOGI2
ZTRlMTFkZDA0N2NhM2I5Y2RkYjI4ZmFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtNzAsMTIgKzcwLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgT3B0aW9uYWw8TGF5b3V0UG9pbnQ+IGxheW91dFBvaW50OwogICAgICAgICBkZWNvZGVyID4+
IGxheW91dFBvaW50OwogICAgICAgICBpZiAoIWxheW91dFBvaW50KQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0U2l6ZT4gbGF5b3V0U2l6ZTsKICAgICAgICAgZGVjb2RlciA+
PiBsYXlvdXRTaXplOwogICAgICAgICBpZiAoIWxheW91dFNpemUpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sgKmxheW91dFBvaW50LCAqbGF5b3V0U2l6ZSB9fTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXgg
M2U0ZTFhMjQzMzlkZjVmYzAyMmIyNTRhMzBiYzU5N2ZiYjhmMTA5OC4uZGZhY2M2MjRiMTg3MTg4
ZjM1MWQ3Y2VhOTk0MzU2MzE4NDRiNWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTI4MSw3ICsxMjgxLDcgQEAgdm9pZCBN
ZWRpYVBsYXllcjo6cmVhZHlTdGF0ZUNoYW5nZWQoKQogewogICAgIGNsaWVudCgpLm1lZGlhUGxh
eWVyUmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICBpZiAobV9wZW5kaW5nU2Vla1JlcXVlc3QgJiYg
bV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVN
ZXRhZGF0YSkKLSAgICAgICAgc2Vlaygqc3RkOjpleGNoYW5nZShtX3BlbmRpbmdTZWVrUmVxdWVz
dCwgV1RGOjpudWxsb3B0KSk7CisgICAgICAgIHNlZWsoKnN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5n
U2Vla1JlcXVlc3QsIHN0ZDo6bnVsbG9wdCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyOjp2b2x1
bWVDaGFuZ2VkKGRvdWJsZSBuZXdWb2x1bWUpCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBib29sIE1l
ZGlhUGxheWVyOjplbmRlZCgpIGNvbnN0CiBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3M+IE1lZGlhUGxheWVyOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAg
IGlmICghbV9wcml2YXRlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dmlkZW9QbGF5YmFj
a1F1YWxpdHlNZXRyaWNzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAppbmRleCA4Zjk2ZmI0NTVkZmNiY2QwODI1Yzc5YzM4YWQ5NjU5M2U3
NTEwMDRlLi5hYTExM2IzOGY1YzJkMDQ2Yjc2MzBlZTE4ZDM1YmVkNTdhMWMyYTBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTExMiwy
NyArMTEyLDI3IEBAIHN0cnVjdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKICAgICAg
ICAgT3B0aW9uYWw8Q29udGVudFR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsK
ICAgICAgICAgaWYgKCF0eXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VVJMPiB1
cmw7CiAgICAgICAgIGRlY29kZXIgPj4gdXJsOwogICAgICAgICBpZiAoIXVybCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTWVkaWFTb3VyY2U7CiAgICAgICAgIGRlY29k
ZXIgPj4gaXNNZWRpYVNvdXJjZTsKICAgICAgICAgaWYgKCFpc01lZGlhU291cmNlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNZWRpYVN0cmVhbTsKICAgICAgICAgZGVj
b2RlciA+PiBpc01lZGlhU3RyZWFtOwogICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW0pCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8Q29udGVudFR5cGU+PiB0eXBlc1JlcXVp
cmluZ0hhcmR3YXJlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGVzUmVxdWlyaW5nSGFyZHdhcmU7
CiAgICAgICAgIGlmICghdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqdXJsKSwgKmlzTWVkaWFTb3Vy
Y2UsICppc01lZGlhU3RyZWFtLCAqdHlwZXNSZXF1aXJpbmdIYXJkd2FyZSB9fTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCmluZGV4IDljZmNiMGQ0YTRlODZiZDU1MDFhMjg0ZThmYjBmZTNiYjYwMjBhZGIuLjg3
N2Y4YzBlYmE3ODY3MWNiYzhhYTUyZWY2Nzk0Njc1MWJhYmNiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0x
OTgsNyArMTk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlk
UGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxib29sPiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxib29s
PiB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgeyByZXR1cm4g
c3RkOjpudWxsb3B0OyB9CiAKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlw
ZTo6VW5rbm93bjsgfQogCkBAIC0yNzYsNyArMjc2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgT3B0
aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiB2aWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3MoKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFZp
ZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gdmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzKCkg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OdWxsR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggY2Y5MTlmYjdjOWFmMjY0YWM5NTg4ZDUyMmJmMTZmNjQyMTBmZTI0NC4uNGZhODI3M2NkY2Nk
OTkwODFiYjJmNDIyZWNmZDExYTczODgwNmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTnVsbEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL051bGxHcmFwaGljc0NvbnRleHQuaApAQCAtMTA1LDExICsx
MDUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpIGZpbmFsIHsgfQogCi0gICAgRmxv
YXRTaXplIGRyYXdUZXh0KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0
IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiA9IFdURjo6bnVs
bG9wdCkgZmluYWwgeyByZXR1cm4geyB9OyB9CisgICAgRmxvYXRTaXplIGRyYXdUZXh0KGNvbnN0
IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25l
ZCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiA9IHN0ZDo6bnVsbG9wdCkgZmluYWwgeyByZXR1cm4g
eyB9OyB9CiAKICAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCwgY29uc3QgRmxv
YXRQb2ludCYsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbCB7IH0KIAotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmLCB1bnNpZ25lZCA9IDAsIE9wdGlvbmFsPHVuc2ln
bmVkPiA9IFdURjo6bnVsbG9wdCkgZmluYWwgeyB9CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
cyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkID0gMCwgT3B0aW9uYWw8dW5zaWduZWQ+ID0gc3Rk
OjpudWxsb3B0KSBmaW5hbCB7IH0KICAgICB2b2lkIGRyYXdCaWRpVGV4dChjb25zdCBGb250Q2Fz
Y2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgRm9udENhc2NhZGU6OkN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNjYWRlOjpEb05vdFBhaW50SWZGb250Tm90
UmVhZHkpIGZpbmFsIHsgfQogCiAgICAgdm9pZCBkcmF3RG90c0ZvckRvY3VtZW50TWFya2VyKGNv
bnN0IEZsb2F0UmVjdCYsIERvY3VtZW50TWFya2VyTGluZVN0eWxlKSBmaW5hbCB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKaW5kZXggY2VkNzEyYTIzZWJjOGYy
YWExZjI5YzMwZDFmMGNhODdlMTQ4ZGUzZi4uZGFkNjQzZjdmMTQ2Y2RhZDk2NGE3NTg2ZWE4ODYw
NWQzNjg5MTc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAK
QEAgLTQ5OSw3ICs0OTksNyBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFBhdGg6OmJvdW5kaW5nUmVj
dEZyb21JbmxpbmVEYXRhKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCmluZGV4IDMwN2Nh
NTE1ZGE5NjA5OGE2NGQ1YjY1YjY3MWI5NDM2NDVjNTZkY2YuLmEwMTU2NDZjNjcwODVjNDUzNWU2
OTM2MWNhZjQ1OTNjN2FjYmUyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoLmgKQEAgLTM0MiwxMSArMzQyLDExIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPFBhdGg+IFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQogICAgIGJvb2wgaGFzSW5saW5lRGF0YTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhc0lubGluZURhdGEpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc0lubGluZURhdGEpIHsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXRoLm1faW5saW5lRGF0YSkpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICByZXR1cm4gcGF0aDsKICAgICB9CkBAIC0zNTQsMzggKzM1NCwzOCBAQCB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQYXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIAogICAgIHVpbnQ2NF90IG51bVBvaW50czsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKG51bVBvaW50cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBwYXRoLmNsZWFyKCk7CiAKICAgICBmb3IgKHVpbnQ2
NF90IGkgPSAwOyBpIDwgbnVtUG9pbnRzOyArK2kpIHsKICAgICAgICAgUGF0aEVsZW1lbnQ6OlR5
cGUgZWxlbWVudFR5cGU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZWxlbWVudFR5cGUp
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3dpdGNoIChlbGVtZW50VHlwZSkgewogICAgICAgICBj
YXNlIFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Qb2ludDogewogICAgICAgICAgICAgRmxvYXRQ
b2ludCBwb2ludDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9pbnQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHBhdGgubW92ZVRvKHBvaW50KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUGF0aEVsZW1lbnQ6OlR5cGU6OkFk
ZExpbmVUb1BvaW50OiB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvaW50OwogICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb2ludCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICAgICAgcGF0aC5hZGRMaW5lVG8ocG9pbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBQYXRoRWxlbWVudDo6VHlwZTo6QWRkUXVhZEN1cnZlVG9Qb2ludDog
ewogICAgICAgICAgICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQ7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQb2ludCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBGbG9hdFBvaW50IGVuZFBvaW50OwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShlbmRQb2ludCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBwYXRoLmFk
ZFF1YWRDdXJ2ZVRvKGNvbnRyb2xQb2ludCwgZW5kUG9pbnQpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0zOTMsMTUgKzM5MywxNSBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQ
YXRoPiBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgY2FzZSBQYXRoRWxl
bWVudDo6VHlwZTo6QWRkQ3VydmVUb1BvaW50OiB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGNv
bnRyb2xQb2ludDE7CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRyb2xQb2lu
dDEpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgRmxvYXRQb2ludCBjb250cm9s
UG9pbnQyOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250cm9sUG9pbnQyKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQ7CiAg
ICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVuZFBvaW50KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjb250cm9sUG9pbnQxLCBj
b250cm9sUG9pbnQyLCBlbmRQb2ludCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCBkMDJhNDZiM2EzYWY4Y2Q3MmQ4
ODA5MmI5MzhlOWYyMjcxMGVjMjdiLi44YzY4NmExZjIyOGM4MDA4NWM0NWU5OWViODBhYzU5Mzg0
ZWViZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCkBA
IC0xMDgsMTcgKzEwOCwxNyBAQCBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBQYXR0ZXJu
OjpQYXJhbWV0ZXJzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKICAgICBkZWNvZGVyID4+IHBhdHRl
cm5TcGFjZVRyYW5zZm9ybTsKICAgICBpZiAoIXBhdHRlcm5TcGFjZVRyYW5zZm9ybSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFg7CiAgICAgZGVjb2RlciA+PiByZXBlYXRYOwogICAg
IGlmICghcmVwZWF0WCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFk7CiAgICAgZGVj
b2RlciA+PiByZXBlYXRZOwogICAgIGlmICghcmVwZWF0WSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAq
cmVwZWF0WCwgKnJlcGVhdFksICpwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0gfX07CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5kZXggOGRi
NGZhMjdiZTQ1ZWMxNjNiOWM5NWIzMzNhMDE1Zjk1NTMyNWYyZi4uZmE3MTY2MjNlYmUzNzk4ODZl
ZjBmZWQzMjZmZDU2MDU2M2UzODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JgogCiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZGF0YUJ5dGVMZW5ndGgpOwogICAgIGlmICghcGl4ZWxBcnJh
eSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4geyB7IGZvcm1hdCwgc2l6ZSwgcGl4ZWxBcnJheS5yZWxlYXNlTm9u
TnVsbCgpIH0gfTsKIH0KIApAQCAtNzMsMTAgKzczLDEwIEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYXQs
IGNvCiAKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOwogICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBp
eGVsQXJyYXkgPSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChidWZm
ZXJTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9CiAK
QEAgLTg2LDEyICs4NiwxMiBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjbwogCiAgICAgYXV0byBi
dWZmZXJTaXplID0gY29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKICAgICBpZiAoYnVm
ZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGJ1ZmZlclNpemUudW5zYWZlR2V0
KCkgIT0gYXJyYXlCdWZmZXItPmJ5dGVMZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIHBpeGVsQXJyYXkg
PSBVaW50OENsYW1wZWRBcnJheTo6dHJ5Q3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBi
dWZmZXJTaXplLnVuc2FmZUdldCgpKTsKICAgICBpZiAoIXBpeGVsQXJyYXkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHsgeyBmb3JtYXQsIHNpemUsIHBpeGVsQXJyYXkucmVsZWFzZU5vbk51bGwoKSB9IH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCmlu
ZGV4IGY3NTVjZTEwMGE3OGJmYzM2M2I4ODk2ODJkYWFmNmIwMTQxODg3ZTguLmMzNTNmZWJkY2Rm
MzkwMmZmM2M1MmVlMTNjZGFkOWJmOWI5ZTBhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaApAQCAtOTAsMzEgKzkwLDMxIEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1hdDsK
ICAgICBkZWNvZGVyID4+IGZvcm1hdDsKICAgICBpZiAoIWZvcm1hdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgogICAgIGlmICghKGZvcm1hdC0+cGl4ZWxG
b3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OkJHUkE4KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEludFNpemU+IHNpemU7CiAgICAg
ZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY29tcHV0ZWRC
dWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpzaXpl
KTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVkQnVmZmVyU2l6ZS51bnNhZmVHZXQoKTsKICAgICBp
ZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90
PihidWZmZXJTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNy
ZWF0ZUZvckRlY29kaW5nKFdURk1vdmUoKmZvcm1hdCksICpzaXplLCBidWZmZXJTaXplKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERh
dGEocmVzdWx0LT5tX2RhdGEtPmRhdGEoKSwgcmVzdWx0LT5tX2RhdGEtPmJ5dGVMZW5ndGgoKSwg
MSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKaW5kZXggN2YyMDgzZTY1NzZl
NGZjZTIxMWI4YWEyMDlkNDVkNTI4NzAyMWI4Ni4uNjA4MmU1Yjg0NjQxMDNlNTFiNDRmZWRmMGE3
YmE2ZGZkNTgwYmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCkBAIC01NCwxNyArNTQsMTcgQEAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0
OjpkZWNvZGUoRGUKICAgICBPcHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYUZv
cm1hdDsKICAgICBkZWNvZGVyID4+IGFscGhhRm9ybWF0OwogICAgIGlmICghYWxwaGFGb3JtYXQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CiAgICAgZGVjb2Rl
ciA+PiBwaXhlbEZvcm1hdDsKICAgICBpZiAoIXBpeGVsRm9ybWF0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGRlY29kZXIgPj4gY29s
b3JTcGFjZTsKICAgICBpZiAoIWNvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1v
dmUoKmFscGhhRm9ybWF0KSwgV1RGTW92ZSgqcGl4ZWxGb3JtYXQpLCBXVEZNb3ZlKCpjb2xvclNw
YWNlKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QbGF0Zm9ybUNvbG9yU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtQ29sb3JTcGFjZS5oCmluZGV4IDNmZmIzNmY1NTY3YzExZTEyNTFhZjk3ZjQ4MWZl
ZDI2ZTg5MmMxYzMuLmNiOTcwMTI1YTRiMDRiNDZhNWMzNWJkYWNjNzZmMzA4MDFlMWM2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JT
cGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29s
b3JTcGFjZS5oCkBAIC04MCw3ICs4MCw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gUGxhdGZvcm1Db2xvclNwYWNlOjpkZWNvZGUoCiAgICAg
T3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBuYW1lOwogICAgIGRlY29kZXIgPj4g
bmFtZTsKICAgICBpZiAoIW5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7ICpuYW1lIH0gfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4
dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRU
cmFjay5oCmluZGV4IDJiYzhlZmFlMzQ5ODA0ZWQ1MDAxZDYwMTVmM2E5OWUwZmM4YWFiNGQuLmZj
YmQyNzVmOTVmMzBjMmViYzIyNGEzYWM2ODU4NTVkZGU2MjYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0VHJhY2suaApAQCAtODcs
NDIgKzg3LDQyIEBAIE9wdGlvbmFsPFBsYXRmb3JtVGV4dFRyYWNrRGF0YT4gUGxhdGZvcm1UZXh0
VHJhY2tEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+
IGxhYmVsOwogICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgaWYgKCFsYWJlbCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgZGVjb2RlciA+PiBsYW5ndWFnZTsKICAg
ICBpZiAoIWxhbmd1YWdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB1cmw7CiAgICAgZGVj
b2RlciA+PiB1cmw7CiAgICAgaWYgKCF1cmwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxUcmFja01vZGU+
IG1vZGU7CiAgICAgZGVjb2RlciA+PiBtb2RlOwogICAgIGlmICghbW9kZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFRyYWNrS2luZD4ga2luZDsKICAgICBkZWNvZGVyID4+IGtpbmQ7CiAgICAgaWYgKCFr
aW5kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VHJhY2tUeXBlPiB0eXBlOwogICAgIGRlY29kZXIgPj4g
dHlwZTsKICAgICBpZiAoIXR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxpbnQ+IHVuaXF1ZUlkOwog
ICAgIGRlY29kZXIgPj4gdW5pcXVlSWQ7CiAgICAgaWYgKCF1bmlxdWVJZCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGlzRGVmYXVsdDsKICAgICBkZWNvZGVyID4+IGlzRGVmYXVsdDsKICAgICBp
ZiAoIWlzRGVmYXVsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBsYXRmb3JtVGV4dFRyYWNrRGF0YSBkYXRhID0gewog
ICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCmluZGV4IDk4MjY4MmNjZmEwYzBiOGE3
MDI1ZjVjMzgzODk5OTUxYjMzZGQ2YWMuLjU4NDQ4MWU5NTYzZmJjYjkwNmI2NzgzODgxYjkyOTAz
NTU5ZTViNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtVGltZVJhbmdlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVGltZVJhbmdlcy5oCkBAIC05NywxMiArOTcsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+
IHN0YXJ0OwogICAgICAgICAgICAgaWYgKCFzdGFydCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gZW5kOwogICAgICAgICAgICAgZGVjb2RlciA+
PiBlbmQ7CiAgICAgICAgICAgICBpZiAoIWVuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpzdGFydCksIFdURk1vdmUoKmVuZCkgfX07CiAgICAg
ICAgIH0KQEAgLTE1NSw3ICsxNTUsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVRpbWVSYW5nZXM+IFBs
YXRmb3JtVGltZVJhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
VmVjdG9yPFJhbmdlPj4gYnVmZmVyZWQ7CiAgICAgZGVjb2RlciA+PiBidWZmZXJlZDsKICAgICBp
ZiAoIWJ1ZmZlcmVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmJ1ZmZlcmVkKSB9fTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggNmQ3MTc5
YWJkYmQ0OWJjYTg3MzdkYzgxM2M5ODdmMGNmYTU2NjgwMi4uN2VjYjFjNjk2YjJlOGY1ODhhZTFk
ZmFlZDE3NzA1MjEwMDg3Y2EyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmgKQEAgLTI0NiwxMiArMjQ2LDEyIEBAIE9wdGlvbmFsPFJlZ2lvbjo6U2hhcGU+IFJl
Z2lvbjo6U2hhcGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFZlY3Rv
cjxpbnQ+PiBzZWdtZW50czsKICAgICBkZWNvZGVyID4+IHNlZ21lbnRzOwogICAgIGlmICghc2Vn
bWVudHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8UmVnaW9uOjpTcGFuPj4gc3BhbnM7CiAg
ICAgZGVjb2RlciA+PiBzcGFuczsKICAgICBpZiAoIXNwYW5zKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU2hhcGUgc2hh
cGU7CiAgICAgc2hhcGUubV9zZWdtZW50cyA9IFdURk1vdmUoKnNlZ21lbnRzKTsKQEAgLTI3Niwx
MiArMjc2LDEyIEBAIE9wdGlvbmFsPFJlZ2lvbj4gUmVnaW9uOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICBPcHRpb25hbDxJbnRSZWN0PiBib3VuZHM7CiAgICAgZGVjb2RlciA+PiBib3Vu
ZHM7CiAgICAgaWYgKCFib3VuZHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBoYXNTaGFwZTsK
ICAgICBkZWNvZGVyID4+IGhhc1NoYXBlOwogICAgIGlmICghaGFzU2hhcGUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBS
ZWdpb24gcmVnaW9uID0geyAqYm91bmRzIH07CiAKQEAgLTI4OSw3ICsyODksNyBAQCBPcHRpb25h
bDxSZWdpb24+IFJlZ2lvbjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlv
bmFsPFNoYXBlPiBzaGFwZTsKICAgICAgICAgZGVjb2RlciA+PiBzaGFwZTsKICAgICAgICAgaWYg
KCFzaGFwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZWdpb24ubV9zaGFwZSA9IG1ha2VVbmlxdWU8
U2hhcGU+KFdURk1vdmUoKnNoYXBlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDE4OTVjMjE5Mzc2NTE5YzJjODBk
ZGQzMDZhMjRlZjc2NGE5Y2IzNDUuLjU4MTAyODY5YTljMTM3NDQwY2ViZDBhMTAyZmQ0NWNhMjg4
ZWJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgT3B0aW9uYWw8U2hhZG93Qmx1cjo6TGF5ZXJJbWFn
ZVByb3BlcnRpZXM+IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWMKICAgICBp
ZiAobV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkg
ewogICAgICAgICBGbG9hdFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1
YWQoRmxvYXRRdWFkKHNoYWRvd2VkUmVjdCkpOwogICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24u
bW92ZShtX29mZnNldCk7Ci0gICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJv
dW5kaW5nQm94KCk7CisgICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3Vu
ZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVyUmVjdCA9IHNoYWRvd2VkUmVj
dDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZzZXQpOwpAQCAtNDIyLDcgKzQyMiw3IEBA
IE9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpj
YWxjdWxhdGVMYXllckJvdW5kaW5nUmVjCiAgICAgaWYgKCFjbGlwUmVjdC5jb250YWlucyhlbmNs
b3NpbmdJbnRSZWN0KGxheWVyUmVjdCkpKSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSB0b3RhbGx5
IG91dHNpZGUgdGhlIGNsaXAgcmVnaW9uLCB3ZSBhcmVuJ3QgcGFpbnRpbmcgYXQgYWxsLgogICAg
ICAgICBpZiAoaW50ZXJzZWN0aW9uKGxheWVyUmVjdCwgY2xpcFJlY3QpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIEludFJlY3QgaW5mbGF0ZWRDbGlwID0gY2xpcFJlY3Q7CiAgICAg
ICAgIC8vIFBpeGVscyBhdCB0aGUgZWRnZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHBpeGVscyBvdXRz
aWRlIHRoZSBidWZmZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UcmFja1ByaXZhdGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1RyYWNrUHJpdmF0ZUJhc2UuY3BwCmluZGV4IDcxMTM4ZGYyOTRhZjg5YjMwNWQxM2U4MDlk
N2Y0ZDI3ZDkxYjZkMTQuLmQwYjAyYTM0ODJiZjczZDFiM2ZjZWI5MzhlNmU5OWI0MGQxZWE1N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJpdmF0
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYWNrUHJp
dmF0ZUJhc2UuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBP
cHRpb25hbDx1aW50NjRfdD4gVHJhY2tQcml2YXRlQmFzZTo6dHJhY2tVSUQoKSBjb25zdAogewot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
T3B0aW9uYWw8Ym9vbD4gVHJhY2tQcml2YXRlQmFzZTo6ZGVmYXVsdEVuYWJsZWQoKSBjb25zdAog
ewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5jcHAKaW5kZXggNzJlYTRmNDBjZTY4M2RlMjJmMzFk
OWY0NDI1ZmUwMTZkNzNmMWM5Yi4uZjU3NzI0ZDk2NDg2MjYyMDE4ZjNjYmE0NWIxZjEwMWFhNDE1
YjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGls
aXRpZXMuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAg
ICBhdXRvIGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKICAgICBhdXRvIG5leHRF
bGVtZW50ID0gY29kZWNTcGxpdC5iZWdpbigpOwogICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2Rl
Y1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQgY29uZmln
dXJhdGlvbjsKIApAQCAtMTQ2LDMzICsxNDYsMzMgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3Vy
YXRpb25SZWNvcmQ+IHBhcnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcK
IAogICAgIC8vIENvZGVjIGlkZW50aWZpZXI6IGxlZ2FsIHZhbHVlcyBhcmUgJ3ZwMDgnIG9yICd2
cDA5Jy4KICAgICBpZiAoY29uZmlndXJhdGlvbi5jb2RlY05hbWUgIT0gInZwMDgiICYmIGNvbmZp
Z3VyYXRpb24uY29kZWNOYW1lICE9ICJ2cDA5IikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChuZXh0RWxlbWVudCA9
PSBjb2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRmlyc3QgZWxlbWVudDogcHJvZmlsZS4g
TGVnYWwgdmFsdWVzIGFyZSAwLTMuCiAgICAgYXV0byBwcm9maWxlID0gcGFyc2VJbnRlZ2VyPHVp
bnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFwcm9maWxlIHx8ICpwcm9maWxlID4gMykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBjb25maWd1cmF0aW9uLnByb2ZpbGUgPSAqcHJvZmlsZTsKIAogICAgIGlmICgrK25l
eHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBTZWNvbmQgZWxlbWVu
dDogbGV2ZWwuIExlZ2FsIHZhbHVlcyBhcmUgZW51bWVyYXRlZCBpbiB2YWxpZFZQTGV2ZWxzIGFi
b3ZlLgogICAgIGF1dG8gbGV2ZWwgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50
KTsKICAgICBpZiAoIWxldmVsIHx8ICFpc1ZhbGlkVlBMZXZlbCgqbGV2ZWwpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNv
bmZpZ3VyYXRpb24ubGV2ZWwgPSAqbGV2ZWw7CiAKICAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBj
b2RlY1NwbGl0LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVGhpcmQgZWxlbWVudDogYml0RGVwdGguIExl
Z2FsIHZhbHVlcyBhcmUgOCwgMTAsIGFuZCAxMi4KICAgICBhdXRvIGJpdERlcHRoID0gcGFyc2VJ
bnRlZ2VyPHVpbnQ4X3Q+KCpuZXh0RWxlbWVudCk7CiAgICAgaWYgKCFiaXREZXB0aCB8fCAoKmJp
dERlcHRoICE9IDggJiYgKmJpdERlcHRoICE9IDEwICYmICpiaXREZXB0aCAhPSAxMikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgY29uZmlndXJhdGlvbi5iaXREZXB0aCA9ICpiaXREZXB0aDsKIAogICAgIC8vICJjb2xvclBy
aW1hcmllcywgdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MsIG1hdHJpeENvZWZmaWNpZW50cywgdmlk
ZW9GdWxsUmFuZ2VGbGFnLCBhbmQgY2hyb21hU3Vic2FtcGxpbmcgYXJlIE9QVElPTkFMLApAQCAt
MTg1LDU0ICsxODUsNTQgQEAgT3B0aW9uYWw8VlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQ+IHBh
cnNlVlBDb2RlY1BhcmFtZXRlcnMoU3RyaW5nVmlldyBjb2RlY1ZpZXcKICAgICAvLyBGb3VydGgg
ZWxlbWVudDogY2hyb21hU3Vic2FtcGxpbmcuIExlZ2FsIHZhbHVlcyBhcmUgMC0zLgogICAgIGF1
dG8gY2hyb21hU3Vic2FtcGxpbmcgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50
KTsKICAgICBpZiAoIWNocm9tYVN1YnNhbXBsaW5nIHx8ICpjaHJvbWFTdWJzYW1wbGluZyA+IFZQ
Q29uZmlndXJhdGlvbkNocm9tYVN1YnNhbXBsaW5nOjpTdWJzYW1wbGluZ180NDQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
Y29uZmlndXJhdGlvbi5jaHJvbWFTdWJzYW1wbGluZyA9ICpjaHJvbWFTdWJzYW1wbGluZzsKIAog
ICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBG
aWZ0aCBlbGVtZW50OiBjb2xvclByaW1hcmllcy4gTGVnYWwgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5
IElTTy9JRUMgMjMwMDEtODoyMDE2LCBzdXBlcnNlZGVkCiAgICAgLy8gYnkgSVNPL0lFQyAyMzA5
MS0yOjIwMTkuCiAgICAgYXV0byBjb2xvclByaW1hcmllcyA9IHBhcnNlSW50ZWdlcjx1aW50OF90
PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghY29sb3JQcmltYXJpZXMgfHwgIWlzVmFsaWRWUENv
bG9yUHJpbWFyaWVzKCpjb2xvclByaW1hcmllcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29uZmlndXJhdGlvbi5jb2xv
clByaW1hcmllcyA9ICpjb2xvclByaW1hcmllczsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09
IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBTaXh0aCBlbGVtZW50OiB0cmFuc2ZlckNo
YXJhY3RlcmlzdGljcy4gTGVnYWwgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5IElTTy9JRUMgMjMwMDEt
ODoyMDE2LCBzdXBlcnNlZGVkCiAgICAgLy8gYnkgSVNPL0lFQyAyMzA5MS0yOjIwMTkuCiAgICAg
YXV0byB0cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9IHBhcnNlSW50ZWdlcjx1aW50OF90PigqbmV4
dEVsZW1lbnQpOwogICAgIGlmICghdHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgfHwgIWlzVmFsaWRW
UFRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzKCp0cmFuc2ZlckNoYXJhY3RlcmlzdGljcykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgY29uZmlndXJhdGlvbi50cmFuc2ZlckNoYXJhY3RlcmlzdGljcyA9ICp0cmFuc2ZlckNoYXJh
Y3RlcmlzdGljczsKIAogICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAvLyBTZXZlbnRoIGVsZW1lbnQ6IG1hdHJpeENvZWZmaWNpZW50cy4gTGVnYWwg
dmFsdWVzIGFyZSBkZWZpbmVkIGJ5IElTTy9JRUMgMjMwMDEtODoyMDE2LCBzdXBlcnNlZGVkCiAg
ICAgLy8gYnkgSVNPL0lFQyAyMzA5MS0yOjIwMTkuCiAgICAgYXV0byBtYXRyaXhDb2VmZmljaWVu
dHMgPSBwYXJzZUludGVnZXI8dWludDhfdD4oKm5leHRFbGVtZW50KTsKICAgICBpZiAoIW1hdHJp
eENvZWZmaWNpZW50cyB8fCAhaXNWYWxpZFZQTWF0cml4Q29lZmZpY2llbnRzKCptYXRyaXhDb2Vm
ZmljaWVudHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3VyYXRpb24ubWF0cml4Q29lZmZpY2llbnRzID0gKm1h
dHJpeENvZWZmaWNpZW50czsKIAogICAgIC8vICJJZiBtYXRyaXhDb2VmZmljaWVudHMgaXMgMCAo
UkdCKSwgdGhlbiBjaHJvbWEgc3Vic2FtcGxpbmcgTVVTVCBiZSAzICg0OjQ6NCkuIgogICAgIGlm
ICghY29uZmlndXJhdGlvbi5tYXRyaXhDb2VmZmljaWVudHMgJiYgY29uZmlndXJhdGlvbi5jaHJv
bWFTdWJzYW1wbGluZyAhPSAzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCsrbmV4dEVsZW1lbnQgPT0gY29kZWNT
cGxpdC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIEVpZ2h0aCBlbGVtZW50OiB2aWRlb0Z1bGxSYW5nZUZs
YWcuIExlZ2FsIHZhbHVlcyBhcmUgMCBhbmQgMS4KICAgICBhdXRvIHZpZGVvRnVsbFJhbmdlRmxh
ZyA9IHBhcnNlSW50ZWdlcjx1aW50OF90PigqbmV4dEVsZW1lbnQpOwogICAgIGlmICghdmlkZW9G
dWxsUmFuZ2VGbGFnIHx8ICp2aWRlb0Z1bGxSYW5nZUZsYWcgPiAxKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbmZpZ3Vy
YXRpb24udmlkZW9GdWxsUmFuZ2VGbGFnID0gKnZpZGVvRnVsbFJhbmdlRmxhZzsKIAogICAgIGlm
ICgrK25leHRFbGVtZW50ICE9IGNvZGVjU3BsaXQuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZQOVV0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5
VXRpbGl0aWVzLmgKaW5kZXggYTE4OGE3NDRkNDI2NjVlZjg0NmM1MjA2NTEwZTAwNGI1MjQzOTlm
ZS4uOGI5NzRlMjhlYjkwZjRiMDY4ZTNlNGU3NGUxZDY0NWM3MjI4YTIzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmgKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBzdHJ1Y3QgU2NyZWVuRGF0YU92ZXJyaWRlcyB7CiAgICAgICAgIE9wdGlvbmFsPHR5
cGU+IG5hbWU7IFwKICAgICAgICAgZGVjb2RlciA+PiBuYW1lOyBcCiAgICAgICAgIGlmICghbmFt
ZSkgXAotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgXAogCiAgICAgICAgIERFQ09ERSh3aWR0aCwgZG91YmxlKTsKICAg
ICAgICAgREVDT0RFKGhlaWdodCwgZG91YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzLmgK
aW5kZXggNTkxMjRmNGZmYTQwYTVhNDdmNDhkN2U1ZDlmMTBiZDFmZjIyMjVlMC4uMGE3ZjY3M2Nl
MmMxNjQyNjdkYzEwMGQ1ZTAzMjg2Y2U1NjFlZTNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzLmgKQEAgLTUyLDI3ICs1MiwyNyBAQCBzdHJ1Y3QgVmlkZW9QbGF5YmFja1F1YWxpdHlNZXRy
aWNzIHsKICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHRvdGFsVmlkZW9GcmFtZXM7CiAgICAg
ICAgIGRlY29kZXIgPj4gdG90YWxWaWRlb0ZyYW1lczsKICAgICAgICAgaWYgKCF0b3RhbFZpZGVv
RnJhbWVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRyb3BwZWRW
aWRlb0ZyYW1lczsKICAgICAgICAgZGVjb2RlciA+PiBkcm9wcGVkVmlkZW9GcmFtZXM7CiAgICAg
ICAgIGlmICghZHJvcHBlZFZpZGVvRnJhbWVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGNvcnJ1cHRlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IGNv
cnJ1cHRlZFZpZGVvRnJhbWVzOwogICAgICAgICBpZiAoIWNvcnJ1cHRlZFZpZGVvRnJhbWVzKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiB0b3RhbEZyYW1lRGVsYXk7CiAg
ICAgICAgIGRlY29kZXIgPj4gdG90YWxGcmFtZURlbGF5OwogICAgICAgICBpZiAoIXRvdGFsRnJh
bWVEZWxheSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBkaXNwbGF5
Q29tcG9zaXRlZFZpZGVvRnJhbWVzOwogICAgICAgICBkZWNvZGVyID4+IGRpc3BsYXlDb21wb3Np
dGVkVmlkZW9GcmFtZXM7CiAgICAgICAgIGlmICghZGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1l
cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7eyAqdG90YWxWaWRlb0ZyYW1lcywgKmRy
b3BwZWRWaWRlb0ZyYW1lcywgKmNvcnJ1cHRlZFZpZGVvRnJhbWVzLCAqdG90YWxGcmFtZURlbGF5
LCAqZGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcyB9fTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCmluZGV4IGRhYzRl
NmYwOTY1Y2Y5MDlkODYyNGZhYWQyMTc3NDg0NDJkODcyNDkuLjJjMjM2YjY3ZWNhMGNiMDBjMjMx
MWQ2Nzc4N2U2MTQ4YzViYjMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBXaWR0
aEl0ZXJhdG9yOjphcHBseUFkZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IEdseXBoSW5kZXhSYW4KIAogdm9pZCBXaWR0aEl0ZXJhdG9yOjphcHBseUV4dHJhU3BhY2luZ0Fm
dGVyU2hhcGluZyhHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIHVuc2lnbmVkIGNoYXJhY3RlclN0
YXJ0SW5kZXgsIHVuc2lnbmVkIGdseXBoQnVmZmVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFj
dGVyRGVzdGluYXRpb25JbmRleCwgZmxvYXQgc3RhcnRpbmdSdW5XaWR0aCkKIHsKLSAgICBWZWN0
b3I8T3B0aW9uYWw8R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhS
YW5nZShtX3J1bi5sZW5ndGgoKSwgV1RGOjpudWxsb3B0KTsKKyAgICBWZWN0b3I8T3B0aW9uYWw8
R2x5cGhJbmRleFJhbmdlPj4gY2hhcmFjdGVySW5kZXhUb0dseXBoSW5kZXhSYW5nZShtX3J1bi5s
ZW5ndGgoKSwgc3RkOjpudWxsb3B0KTsKICAgICBWZWN0b3I8ZmxvYXQ+IGFkdmFuY2VXaWR0aHMo
bV9ydW4ubGVuZ3RoKCksIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IGdseXBoQnVmZmVyU3Rh
cnRJbmRleDsgaSA8IGdseXBoQnVmZmVyLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gc3Ry
aW5nT2Zmc2V0ID0gZ2x5cGhCdWZmZXIuY2hlY2tlZFN0cmluZ09mZnNldEF0KGksIG1fcnVuLmxl
bmd0aCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggY2IwNGY3ZTQz
Zjk1YTFiYjRkMmQxYmZiYjY5YTU0YTFhZmFkOWRhYi4uNmE2ZDIyZDgxZmE5MjE5OWMxNTEyNDI4
OWE3OGJhNzZjMDRhODU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAg
LTgyLDcgKzgyLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU2NvcGVkUGl4
ZWxTdG9yYWdlTW9kZSBwYWNrQWxpZ25tZW50KEdMX1BBQ0tfQUxJR05NRU5UKTsKICAgICBpZiAo
cGFja0FsaWdubWVudCA+IDQpCiAgICAgICAgIHBhY2tBbGlnbm1lbnQucGl4ZWxTdG9yZSg0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0K
aW5kZXggMWY0YWI4YTBiNThiOWQ5YzhhNmJmYjA1YjgyZjQyNjQzZTU2ZGZhMi4uMTUzMTY5MWYz
NzgxZTFmZmVjMDhkZmQ3NDdjMTdmZTYwYmU0YWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTQ5LDcgKzQ5LDcgQEAgYXV0
byBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYXJzZUtleVN5c3RlbShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkgLT4gT3AKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVndWxhckV4
cHJlc3Npb24+IGtleVN5c3RlbVJFKCJeY29tXFwuYXBwbGVcXC5mcHNcXC5bMjNdX1xcZCsoPzos
XFxkKykqJCIsIEpTQzo6WWFycjo6VGV4dENhc2VJbnNlbnNpdGl2ZSk7CiAKICAgICBpZiAoa2V5
U3lzdGVtUkUuZ2V0KCkubWF0Y2goa2V5U3lzdGVtKSA8IDApCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmdWaWV3
IGtleVN5c3RlbVZpZXcgeyBrZXlTeXN0ZW0gfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IGVmYjE0ZjRmM2Q4YjhkM2QyYzUzMmNl
NmNhNDFmMzUwOWIwOTRlNGIuLmM5NzllYjU3MjdkYmMzOTYxNzI1YjA1N2M3YjFhMmEyZjNmYWNi
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5j
cHAKQEAgLTY3LDEzICs2NywxMyBAQCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjp+SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRigpCiBzdGF0aWMgT3B0aW9uYWw8U1JHQkE8dWludDhfdD4+IG1h
a2VTaW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGNvbG9yQXJyYXkpCiB7CiAg
ICAgaWYgKENGQXJyYXlHZXRDb3VudChjb2xvckFycmF5KSA8IDQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmbG9hdCBj
b21wb25lbnRBcnJheVs0XTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAg
ICAgICBDRk51bWJlclJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGNvbG9yQXJyYXksIGkpKTsKICAgICAgICAgaWYgKENGR2V0VHlwZUlE
KHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZmxv
YXQgY29tcG9uZW50OwogICAgICAgICBDRk51bWJlckdldFZhbHVlKHZhbHVlLCBrQ0ZOdW1iZXJG
bG9hdFR5cGUsICZjb21wb25lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggZjlhYjAy
NjJlMzZkOWM5MWE1MDJjNmI1ZmI2OTQ4ZmYwNWU5M2Q1Mi4uYjFhYTVkZmU1YWE4ZDQ4NjdkNzUy
YjRmNGE1YWM4ZjNjNWI3Y2I3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xOTAsNyAr
MTkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZVNlc3Npb25Pckdyb3VwKCk7CiAgICAg
Ym9vbCBpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKExpY2Vuc2VUeXBlKSBjb25zdDsKIAotICAgIEtl
eVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcyhPcHRpb25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gPSBX
VEY6Om51bGxvcHQpIGNvbnN0OworICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlcyhPcHRp
b25hbDxQbGF0Zm9ybURpc3BsYXlJRD4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogICAgIHZvaWQg
bmV4dFJlcXVlc3QoKTsKICAgICBBVkNvbnRlbnRLZXlSZXF1ZXN0KiBsYXN0S2V5UmVxdWVzdCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCmluZGV4IDc1NjllOTgxYjAyYzRhZjk4
ZWNiYjIxOTY5MDVkYTZhZWNmYjBmZTQuLjg3OGY3MjI1ODgxODgzNzc3OWY0Y2ZiNDcwOTRhNzk4
MTZjODBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tCkBAIC0zMDgsNyArMzA4LDcgQEAg
cHVibGljOgogICAgIH0KICAgICB2b2lkIGZhaWwoKQogICAgIHsKLSAgICAgICAgbV9jYWxsYmFj
ayhXVEY6Om51bGxvcHQpOworICAgICAgICBtX2NhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExp
CiAKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSB8fCAhc3RvcmFnZVVSTCkgewogICAgICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJcImFja25vd2xlZGdlZFwi
LCBGYWlsZWQsIG5vIGNlcnRpZmljYXRlIGFuZCBzdG9yYWdlVVJMIik7Ci0gICAgICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAg
ICAgICB9KTsKICAgICAgICAgYXV0byBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0
ZU5TRGF0YSgpOwogICAgICAgICBbUEFMOjpnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBy
ZW1vdmVQZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzOmV4cGlyZWRTZXNzaW9ucy5nZXQoKSB3
aXRoQXBwSWRlbnRpZmllcjphcHBJZGVudGlmaWVyLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVS
TDpzdG9yYWdlVVJMXTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIHsgfSwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB7IH0s
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03ODEsNyArNzgxLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAg
ICAgICAgYXV0byByZXF1ZXN0ID0gbGFzdEtleVJlcXVlc3QoKTsKICAgICAgICAgaWYgKCFyZXF1
ZXN0KSB7CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwg
IlwicmVuZXdcIiwgRmFpbGVkLCBubyBvdXRzdGFuZGluZyBrZXlzIik7Ci0gICAgICAgICAgICBj
YWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwg
RmFpbGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiXCJy
ZW5ld1wiLCBwcm9jZXNzaW5nIHJlbmV3YWwiKTsKQEAgLTc5MywxMyArNzkzLDEzIEBAIHZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYsIExpCiAKICAgICBpZiAoIW1fY3VycmVudFJlcXVlc3QpIHsKICAgICAg
ICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBjdXJy
ZW50UmVxdWVzdCIpOwotICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2Us
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgS2V5cyBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1f
Y3VycmVudFJlcXVlc3QudmFsdWUoKSk7CiAgICAgaWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgRmFpbGVkLCBubyBr
ZXlJRHMgaW4gY3VycmVudFJlcXVlc3QiKTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIGNh
bGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MTgsMjYgKzgxOCwyNiBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmLCBMaQogCiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlcyB8fCBy
ZXNwb25zZXMudmFsdWUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBubyBy
ZXNwb25zZXMiKTsKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayh0cnVl
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAg
ICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKHRydWUsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgU3VjY2VlZGVkLCBubyBrZXlJRHMgaW4g
Y3VycmVudFJlcXVlc3QiKTsKLSAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZh
bHNlLCBrZXlTdGF0dXNlcygpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2VlZGVk
KTsKKyAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBrZXlTdGF0dXNl
cygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2VlZGVkKTsKICAgICAgICAgICAg
IG1fdXBkYXRlUmVzcG9uc2VDb2xsZWN0b3IgPSBudWxscHRyOwotICAgICAgICAgICAgbV9jdXJy
ZW50UmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBuZXh0UmVxdWVzdCgpOwogICAgICAgICB9KTsK
IAogICAgICAgICBhdXRvIHJvb3QgPSBwYXJzZUpTT05WYWx1ZShyZXNwb25zZURhdGEpOwogICAg
ICAgICBpZiAoIXJvb3QpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICAgICAgY2Fs
bGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZh
aWxlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGFy
cmF5ID0gcm9vdC0+YXNBcnJheSgpOwogICAgICAgICBpZiAoIWFycmF5KSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgRmFpbGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTg5Niw3ICs4OTYsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQog
ICAgICAgICBmb3IgKGF1dG8gdmFsdWUgOiAqYXJyYXkpIHsKICAgICAgICAgICAgIGlmICghcGFy
c2VSZXNwb25zZShXVEZNb3ZlKHZhbHVlKSkpIHsKICAgICAgICAgICAgICAgICBERUJVR19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIidjZW5jJyBpbml0RGF0YSwgRmFpbGVkLCBjb3Vs
ZCBub3QgcGFyc2UgcmVzcG9uc2UiKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBM
aQogICAgICAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7CiAgICAgICAgIGtleVN0YXR1
c2VzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMSk7CiAgICAgICAgIGtleVN0YXR1c2VzLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGtleUlEcy5maXJzdCgpKSwgS2V5U3Rh
dHVzOjpVc2FibGUpKTsKLSAgICAgICAgY2FsbGJhY2soZmFsc2UsIG1ha2VPcHRpb25hbChXVEZN
b3ZlKGtleVN0YXR1c2VzKSksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQp
OworICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoa2V5
U3RhdHVzZXMpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkyNSwxMyArOTI1LDEzIEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlw
ZSBsaWNlbnNlCiAgICAgICAgIGF1dG8qIHN0b3JhZ2VVUkwgPSBtX2luc3RhbmNlLT5zdG9yYWdl
VVJMKCk7CiAgICAgICAgIGlmICghbV9pbnN0YW5jZS0+cGVyc2lzdGVudFN0YXRlQWxsb3dlZCgp
IHx8ICFzdG9yYWdlVVJMKSB7CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgIiBGYWlsZWQsIG1pc21hdGNoZWQgc2Vzc2lvbiB0eXBlIik7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBG
YWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQs
IEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8qIGNlcnRpZmljYXRlID0g
bV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0
ZSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIg
RmFpbGVkLCBubyBzZXNzaW9uQ2VydGlmaWNhdGUiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxv
YWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb1Nlc3Npb25EYXRhKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC05NTIsMTIgKzk1MiwxMiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUgbGljZW5zZQogCiAgICAgICAgIGlm
IChjaGFuZ2VkS2V5cy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NT
SUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwgbm8gc2Vzc2lvbiBkYXRhIGZvdW5kIik7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CisgICAgICAg
ICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURF
TlRJRklFUiwgIiBTdWNjZWVkZWQsIG1pc21hdGNoZWQgc2Vzc2lvbiB0eXBlIik7Ci0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgU3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOworICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nl
ZWRlZCwgU2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICB9CiB9CiAKQEAgLTk2OSwxNCAr
OTY5LDE0IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvCiAgICAgICAgIEFTU0VSVCghbV9yZXF1
ZXN0TGljZW5zZUNhbGxiYWNrKTsKICAgICB9CiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxi
YWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKHRydWUsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgIG1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrKHRydWUsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIEFTU0VSVCghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sp
OwogICAgIH0KICAgICBpZiAobV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKSB7Ci0gICAgICAg
IG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsK
KyAgICAgICAgbV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwogICAgICAgICBBU1NFUlQoIW1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayk7CiAg
ICAgfQotICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50
UmVxdWVzdCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5jbGVhcigpOwog
ICAgIG1fcmVxdWVzdHMuY2xlYXIoKTsKICAgICBjYWxsYmFjaygpOwpAQCAtOTk1LDcgKzk5NSw3
IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1v
dmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmCiAKICAgICAgICAgaWYgKCFtX2luc3RhbmNlLT5w
ZXJzaXN0ZW50U3RhdGVBbGxvd2VkKCkgfHwgIXN0b3JhZ2VVUkwgfHwgIWNlcnRpZmljYXRlKSB7
CiAgICAgICAgICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBGYWls
ZWQsIHBlcnNpc3RlbnRTdGF0ZSBub3QgYWxsb3dlZCBvciBubyBzdG9yYWdlVVJMIG9yIG5vIGNl
cnRpZmljYXRlIik7Ci0gICAgICAgICAgICBjYWxsYmFjayh7IH0sIFdURjo6bnVsbG9wdCwgRmFp
bGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwMTgsNyArMTAxOCw3IEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNz
aW9uRGF0YShjb25zdCBTdHJpbmcmCiAKICAgICAgICAgaWYgKCFleHBpcmVkU2Vzc2lvbnNBcnJh
eS5nZXQoKS5jb3VudCkgewogICAgICAgICAgICAgREVCVUdfTE9HX0lGX1BPU1NJQkxFKExPR0lE
RU5USUZJRVIsICIgU3VjY2VlZGVkLCBubyBleHBpcmVkIHNlc3Npb25zIik7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGOjpudWxsb3B0LCBTdWNjZWVkZWQp
OworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIHN0ZDo6bnVsbG9w
dCwgU3VjY2VlZGVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDI4
LDcgKzEwMjgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJgogICAgICAgICAgICAgLy8gYSBw
ZXJzaXN0ZW50LXVzYWdlLXJlY29yZCBtZXNzYWdlIG9uIGNsb3NlLiBTaWduYWwgdGhpcyBieSBm
YWlsaW5nIGFuZCBhc3NlcnQuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIEZhaWxlZCwg
bm8gZXhwaXJlZCBzZXNzaW9uIGRhdGEiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2hhbmdlZEtleXMpLCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwNDQsNyArMTA0NCw3IEBAIHZvaWQgQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayh7IH0s
IFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICBjYWxsYmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwg
RmFpbGVkKTsKIH0KIAogdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OnN0b3JlUmVjb3JkT2ZLZXlVc2FnZShjb25zdCBTdHJpbmcmKQpAQCAtMTEyMCw3ICsx
MTIwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVIKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlv
biAqZXhjZXB0aW9uKSB7CiAgICAgICAgIEVSUk9SX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElG
SUVSLCAiZXhjZXB0aW9uIHRocm93biBmcm9tIC1tYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVl
c3REYXRhRm9yQXBwOmNvbnRlbnRJZGVudGlmaWVyOm9wdGlvbnM6Y29tcGxldGlvbkhhbmRsZXI6
ICIsIFtbZXhjZXB0aW9uIG5hbWVdIFVURjhTdHJpbmddLCAiLCByZWFzb24gOiAiLCBbW2V4Y2Vw
dGlvbiByZWFzb25dIFVURjhTdHJpbmddKTsKICAgICAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrKQotICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIEZhaWxlZCk7CisgICAgICAgICAg
ICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgQVNTRVJUKCFtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjayk7CiAgICAgfQogfQpAQCAtMTI1OSw5ICsxMjU5LDkgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZW5ld2luZ1Jl
cXVlc3QoQVZDb24KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGVycm9yICYmIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQotICAgICAgICAgICAgICAg
ICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgbV91cGRh
dGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV91cGRhdGVMaWNl
bnNlQ2FsbGJhY2spCi0gICAgICAgICAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgTWVzc2FnZShNZXNzYWdlVHlwZTo6
TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YS5nZXQoKSkpLCBTdWNjZWVkZWQpOworICAgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIE1lc3NhZ2UoTWVz
c2FnZVR5cGU6OkxpY2Vuc2VSZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5
UmVxdWVzdERhdGEuZ2V0KCkpKSwgU3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICBlbHNlIGlm
IChtX2NsaWVudCkKICAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKENE
TU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVu
dEtleVJlcXVlc3REYXRhLmdldCgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX3VwZGF0
ZUxpY2Vuc2VDYWxsYmFjayk7CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVz
dChBVkNvbgogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAg
RVJST1JfTE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICJleGNlcHRpb24gdGhyb3duIGZy
b20gLW1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y29udGVudElkZW50
aWZpZXI6b3B0aW9uczpjb21wbGV0aW9uSGFuZGxlcjogIiwgW1tleGNlcHRpb24gbmFtZV0gVVRG
OFN0cmluZ10sICIsIHJlYXNvbiA6ICIsIFtbZXhjZXB0aW9uIHJlYXNvbl0gVVRGOFN0cmluZ10p
OwogICAgICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spCi0gICAgICAgICAgICBtX3Vw
ZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNr
KGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQp
OwogICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKTsKICAgICB9CiB9CkBA
IC0xMzAwLDExICsxMzAwLDExIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRGYWlsVG9Qcm92aWRlUmVxdWVzdChBVkNvbnRlCiAgICAgfQogCiAg
ICAgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKSB7Ci0gICAgICAgIG1fdXBkYXRlTGljZW5z
ZUNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBGYWlsZWQpOworICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgQVNT
RVJUKCFtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayk7CiAgICAgfQogCi0gICAgbV9jdXJyZW50UmVx
dWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gc3RkOjpudWxsb3B0
OwogCiAgICAgbmV4dFJlcXVlc3QoKTsKIH0KQEAgLTEzMTgsMTEgKzEzMTgsMTEgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNj
ZWVkKEFWQ29udGVudEtleVIKICAgICB9CiAKICAgICBpZiAobV91cGRhdGVMaWNlbnNlQ2FsbGJh
Y2spIHsKLSAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIG1ha2VPcHRpb25h
bChrZXlTdGF0dXNlcygpKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2NlZWRlZCk7
CisgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om1ha2Vfb3B0aW9u
YWwoa2V5U3RhdHVzZXMoKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZWVkZWQp
OwogICAgICAgICBBU1NFUlQoIW1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKTsKICAgICB9CiAKLSAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudFJlcXVlc3Qg
PSBzdGQ6Om51bGxvcHQ7CiAKICAgICBuZXh0UmVxdWVzdCgpOwogfQpAQCAtMTQ4NCw3ICsxNDg0
LDcgQEAgT3B0aW9uYWw8Q0RNS2V5U3RhdHVzPiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnByb3RlY3Rpb25TdGEKICAgICAgICAgLy8gcmVjZWl2aW5nIGEgcmVz
cG9uc2UuCiAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyAhPSBBVkNvbnRlbnRLZXlSZXF1ZXN0
U3RhdHVzUmVjZWl2ZWRSZXNwb25zZSAmJiByZXF1ZXN0LnN0YXR1cyAhPSBBVkNvbnRlbnRLZXlS
ZXF1ZXN0U3RhdHVzUmVuZXdlZCkgewogICAgICAgICAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJM
RShMT0dJREVOVElGSUVSLCAicmVxdWVzdCBoYXMgaW5zdWZmaWNpZW50IHN0YXR1cyAiLCAoaW50
KXJlcXVlc3Quc3RhdHVzKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBv
YnNjdXJlZCA9IFtyZXF1ZXN0IHdpbGxPdXRwdXRCZU9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRF
eHRlcm5hbFByb3RlY3Rpb25Gb3JEaXNwbGF5czpAWyBdXTsKQEAgLTE0OTcsNyArMTQ5Nyw3IEBA
IE9wdGlvbmFsPENETUtleVN0YXR1cz4gQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpwcm90ZWN0aW9uU3RhCiAgICAgaWYgKG1fb3V0cHV0T2JzY3VyZWQpCiAgICAg
ICAgIHJldHVybiBDRE1LZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQ7CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9OwogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lt
YWdlRGVjb2RlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMuaAppbmRleCA1OWJjNjVkNDIxMjMw
ZjEwY2Q3NzM1NThiZWFlOTgzYWJjMDM5NDFhLi41ODM2MmRiZDJjYzA3ZDAxZGRlYTZlODkzMmRk
NDhmNzE4ZjI4YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZG
T2JqQy5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICBSZXBldGl0aW9uQ291bnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHV0aSgpIGNvbnN0IGZpbmFs
OwogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0
OyB9CisgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJB
VkZPYmpDLm1tCmluZGV4IDUyZjkxOGYxZWFiYmIwNzNlYjQ5Mjg1YTFmMjZiNjJkZWMxODc1N2Uu
LmI0MTJkNWRiZGM1NWU2ODJlM2YwMmNlOTU5N2NkMDgzM2RiNGU0NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQpAQCAtMjU3LDcgKzI1Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKFBBTDo6Q01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKG1f
c2FtcGxlLmdldCgpKQogICAgICAgICAgICAgfHwgUEFMOjpDTVNhbXBsZUJ1ZmZlckdldEltYWdl
QnVmZmVyKG1fc2FtcGxlLmdldCgpKQogICAgICAgICAgICAgfHwgIVBBTDo6Q01TYW1wbGVCdWZm
ZXJEYXRhSXNSZWFkeShtX3NhbXBsZS5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1
cm4gYnl0ZVJhbmdlRm9yQXR0YWNobWVudChQQUw6OmtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRL
ZXlfU2FtcGxlUmVmZXJlbmNlQnl0ZU9mZnNldCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNDY1NWZlNWEwODRjMzg5MTE2OWYwYmVmMjdjMzNmZmNlMTZlZDI0MC4uYTZmZjZj
NGU0ODg4OWI5OTA3NjQ2YjQ5MzkyZmU0YzJmMmM4MGU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0xNTM1LDcgKzE1MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNldFJhdGVEb3VibGUoZG91YmxlIHJhdGUpCiAgICAgbV9yZXF1ZXN0ZWRSYXRl
ID0gcmF0ZTsKICAgICBpZiAobV9yZXF1ZXN0ZWRQbGF5aW5nKQogICAgICAgICBzZXRQbGF5ZXJS
YXRlKHJhdGUpOwotICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBzdGQ6Om51bGxvcHQ7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0UGxheWVy
UmF0ZShkb3VibGUgcmF0ZSkKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0UGxheWVyUmF0ZShkb3VibGUgcmF0ZSkKICAgICBz
ZXRTaG91bGRPYnNlcnZlVGltZUNvbnRyb2xTdGF0dXModHJ1ZSk7CiAgICAgc2V0RGVsYXlDYWxs
YmFja3MoZmFsc2UpOwogCi0gICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gV1RG
OjpudWxsb3B0OworICAgIG1fd2FsbENsb2NrQXRDYWNoZWRDdXJyZW50VGltZSA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJh
dGUoKSBjb25zdApAQCAtMjM3MCw3ICsyMzcwLDcgQEAgT3B0aW9uYWw8Ym9vbD4gTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d291bGRUYWludE9yaWdpbihjb25zdCBTZWN1cmkK
ICAgICBpZiAoW3Nlc3Npb24gaXNLaW5kT2ZDbGFzczpbV2ViQ29yZU5TVVJMU2Vzc2lvbiBjbGFz
c11dKQogICAgICAgICByZXR1cm4gW3Nlc3Npb24gd291bGRUYWludE9yaWdpbjpvcmlnaW5dOwog
Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0
cHV0KCkKQEAgLTMzODEsNyArMzM4MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dGltZUNvbnRyb2xTdGF0dXNEaWRDaGFuZ2UoaW50IHRpbWVDb250CiAKICAg
ICBtX2NhY2hlZFRpbWVDb250cm9sU3RhdHVzID0gdGltZUNvbnRyb2xTdGF0dXM7CiAgICAgcmF0
ZUNoYW5nZWQoKTsKLSAgICBtX3dhbGxDbG9ja0F0Q2FjaGVkQ3VycmVudFRpbWUgPSBXVEY6Om51
bGxvcHQ7CisgICAgbV93YWxsQ2xvY2tBdENhY2hlZEN1cnJlbnRUaW1lID0gc3RkOjpudWxsb3B0
OwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBpZiAoIWlzQ3Vy
cmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MoKSkKQEAgLTM0MjgsMTYgKzM0MjgsMTYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRTaG91bGREaXNhYmxlU2xl
ZXAoYm9vbCBmbGFnKQogT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNzPiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJp
Y3MoKQogewogICAgIGlmICghW21fdmlkZW9MYXllciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzKV0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShXQVRDSE9T
KQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bHNlCiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19CRUdJTgogCiAgICAgYXV0byBt
ZXRyaWNzID0gW21fdmlkZW9MYXllciB2aWRlb1BlcmZvcm1hbmNlTWV0cmljc107CiAgICAgaWYg
KCFtZXRyaWNzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgdWludDMyX3QgZGlzcGxheUNvbXBvc2l0ZWRGcmFtZXMgPSAw
OwogICAgIGlmIChbbWV0cmljcyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG51bWJlck9m
RGlzcGxheUNvbXBvc2l0ZWRWaWRlb0ZyYW1lcyldKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CmluZGV4IDViNTkyZWIxOGIzZTQ5ZDZhNTAzMGVlNDgxMjk1MDBlZjVkNWFjODQuLjdkYTVkMzhk
OTJmYzc4ZmFjMGU1YjlhZWI3YzgyZjBlYWQ0MjUxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KQEAgLTczOCw3ICs3MzgsNyBAQCBPcHRpb25hbDxWaWRlb1BsYXliYWNrUXVhbGl0eU1l
dHJpY3M+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6dmlkZQogCiAgICAg
YXV0byBtZXRyaWNzID0gW21fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyIHZpZGVvUGVyZm9ybWFu
Y2VNZXRyaWNzXTsKICAgICBpZiAoIW1ldHJpY3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50MzJfdCBkaXNwbGF5
Q29tcG9zaXRlZEZyYW1lcyA9IDA7CiAgICAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19C
RUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDE3MzA1MmE3M2I1MTYwMDY3ZTc5
NTdkMTM4MDhhZjUyZDY3ZWY0ZjMuLmUxYWQxMDJiYjk4MWJmMzc0ZTZiZDkzN2MwYzZlMmE4N2Y0
MGYxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTk4Niw3ICs5ODYsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGlmICghbV92aWRlb1RyYW5zZm9ybSkKICAgICAg
ICAgbV92aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgoKm1faW1hZ2VQ
YWludGVyLm1lZGlhU2FtcGxlKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0g
PSAqbV92aWRlb1RyYW5zZm9ybTsKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9
IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBS
ZWN0KGRlc3RSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZpZGVv
VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChk
ZXN0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3Jt
ZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU2FtcGxlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U2FtcGxlQVZGT2JqQy5tbQppbmRleCA1YWNlNjMwOGY5ZGM1NDU1YTI5NjRmYzgyNWUxZDk0ZTE1
MzNmZjQ0Li43ZDZkNTBhNWNmZWFjNWVhNzlkNzA4NTNjMDZiMGQyYWRkNDg5NzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNhbXBsZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTYW1wbGVBVkZPYmpDLm1tCkBAIC00ODAsMTYgKzQ4
MCwxNiBAQCBPcHRpb25hbDxNZWRpYVNhbXBsZTo6Qnl0ZVJhbmdlPiBNZWRpYVNhbXBsZUFWRk9i
akM6OmJ5dGVSYW5nZUZvckF0dGFjaG1lbnQoQ0ZTdAogewogICAgIGF1dG8gYnl0ZU9mZnNldENG
ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihQQUw6OkNNR2V0QXR0YWNobWVudChtX3Nh
bXBsZS5nZXQoKSwga2V5LCBudWxscHRyKSk7CiAgICAgaWYgKCFieXRlT2Zmc2V0Q0YpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpbnQ2NF90IGJ5dGVPZmZzZXQgPSAwOwogICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShi
eXRlT2Zmc2V0Q0YsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZieXRlT2Zmc2V0KSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IENNSXRlbUNvdW50IHNpemVBcnJheUVudHJpZXMgPSAwOwogICAgIFBBTDo6Q01TYW1wbGVCdWZm
ZXJHZXRTYW1wbGVTaXplQXJyYXkobV9zYW1wbGUuZ2V0KCksIDAsIG51bGxwdHIsICZzaXplQXJy
YXlFbnRyaWVzKTsKICAgICBpZiAoc2l6ZUFycmF5RW50cmllcyAhPSAxKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgc2l6
ZV90IHNpbmdsZVNpemVFbnRyeSA9IDA7CiAgICAgUEFMOjpDTVNhbXBsZUJ1ZmZlckdldFNhbXBs
ZVNpemVBcnJheShtX3NhbXBsZS5nZXQoKSwgMSwgJnNpbmdsZVNpemVFbnRyeSwgbnVsbHB0cik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCmluZGV4IGQzMTczZmViZDY1OGU4MzFlMWIxMGFmNzAwMGM3MGIxOGM2NjVhZDQuLmMx
Zjg1MTRiYTUwOTZlYmI4MzViMDE2NjUwMmVlMzdjYzJkOGQzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC03NzIs
NyArNzcyLDcgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRW
aWRlbygpIGNvbnN0CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlk
Q2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQog
ewotICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVp
bnQ2NF90Pih0cmFjay5pZCgpKS52YWx1ZU9yKDApOworICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNl
SW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFjay5pZCgpKS52YWx1ZV9v
cigwKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInZpZGVvIHRyYWNrSUQgPSAi
LCB0cmFja0lELCAiLCBzZWxlY3RlZCA9ICIsIHNlbGVjdGVkKTsKIApAQCAtNzk4LDcgKzc5OCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0
ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrCiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OnRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJv
b2wgZW5hYmxlZCkKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2suaWQoKSkudmFsdWVPcigwKTsKKyAgICBhdXRvIHRy
YWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2su
aWQoKSkudmFsdWVfb3IoMCk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJhdWRp
byB0cmFja0lEID0gIiwgdHJhY2tJRCwgIiwgc2VsZWN0ZWQgPSAiLCBlbmFibGVkKTsKIApAQCAt
MTA0OCw3ICsxMDQ4LDcgQEAgQUxMT1dfTkVXX0FQSV9XSVRIT1VUX0dVQVJEU19FTkQKIAogdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRFN0cmluZykKIHsKLSAgICBhdXRvIHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1Ry
YWlsaW5nSnVuazx1aW50NjRfdD4odHJhY2tJRFN0cmluZykudmFsdWVPcigwKTsKKyAgICBhdXRv
IHRyYWNrSUQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4odHJh
Y2tJRFN0cmluZykudmFsdWVfb3IoMCk7CiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsIHRy
YWNrSUQpOwogCiAgICAgaWYgKHRyYWNrSUQgPT0gbV9lbmFibGVkVmlkZW9UcmFja0lEKSB7CkBA
IC0xMDcwLDcgKzEwNzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpmbHVz
aFZpZGVvKCkKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgbV9jYWNoZWRTaXplID0gV1RGOjpu
dWxsb3B0OworICAgIG1fY2FjaGVkU2l6ZSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChhdXRv
IHBsYXllciA9IHRoaXMtPnBsYXllcigpKSB7CiAgICAgICAgIHBsYXllci0+c2V0SGFzQXZhaWxh
YmxlVmlkZW9GcmFtZShmYWxzZSk7CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBBTExPV19ORVdfQVBJ
X1dJVEhPVVRfR1VBUkRTX0VORAogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpl
bnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSURTdHJpbmcpCiB7Ci0gICAgYXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dp
bmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlT3IoMCk7CisgICAg
YXV0byB0cmFja0lEID0gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+
KHRyYWNrSURTdHJpbmcpLnZhbHVlX29yKDApOwogICAgIGlmICh0cmFja0lEICE9IG1fZW5hYmxl
ZFZpZGVvVHJhY2tJRCAmJiAhbV9hdWRpb1JlbmRlcmVycy5jb250YWlucyh0cmFja0lEKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMjAzLDcgKzEyMDMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpidWZmZXJXYXNDb25zdW1lZCgpCiAKIGJvb2wgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lEU3RyaW5nKQogewotICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJh
aWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDApOworICAgIGF1dG8g
dHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFj
a0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCA9PSBtX2VuYWJsZWRWaWRl
b1RyYWNrSUQpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBpZiAobV9kaXNw
bGF5TGF5ZXJXYXNJbnRlcnJ1cHRlZCkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxTZWVrKCkKIAogRmxvYXRTaXplIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2l6
ZS52YWx1ZU9yKEZsb2F0U2l6ZSgpKTsKKyAgICByZXR1cm4gbV9jYWNoZWRTaXplLnZhbHVlX29y
KEZsb2F0U2l6ZSgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlk
QmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQpAQCAtMTI3Miw3ICsx
MjcyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVjb21lUmVhZHlG
b3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEU3RyaW5nKQogewotICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZU9yKDAp
OworICAgIGF1dG8gdHJhY2tJRCA9IHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVp
bnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKTsKICAgICBpZiAodHJhY2tJRCA9PSBt
X2VuYWJsZWRWaWRlb1RyYWNrSUQpIHsKICAgICAgICAgaWYgKG1fZGVjb21wcmVzc2lvblNlc3Np
b24pIHsKICAgICAgICAgICAgIG1fZGVjb21wcmVzc2lvblNlc3Npb24tPnJlcXVlc3RNZWRpYURh
dGFXaGVuUmVhZHkoW3RoaXMsIHRyYWNrSURdIHsKQEAgLTEyOTcsNyArMTI5Nyw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVT
YW1wbGVzKGNvbnN0IEF0b21TCiAKIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNh
blNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRFN0cmluZykgY29uc3QKIHsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFp
bGluZ0p1bms8dWludDY0X3Q+KHRyYWNrSURTdHJpbmcpLnZhbHVlT3IoMCkgPT0gbV9lbmFibGVk
VmlkZW9UcmFja0lECisgICAgcmV0dXJuIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5r
PHVpbnQ2NF90Pih0cmFja0lEU3RyaW5nKS52YWx1ZV9vcigwKSA9PSBtX2VuYWJsZWRWaWRlb1Ry
YWNrSUQKICAgICAgICAgJiYgW2dldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBp
bnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhwZWN0TWluaW11bVVwY29taW5n
U2FtcGxlQnVmZmVyUHJlc2VudGF0aW9uVGltZTopXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXgg
YzRkOTdlMjc0ODQ5OGNmODE5MzFlZTdiNmM5ZDNkN2Y1OTMzZDc2NC4uZjAzMWQwZDU5N2Q2ZjJi
ZGM0N2UxZTJjODQ2YjM0NjQ3MTM0YzhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNTc3LDcgKzE1
NzcsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMo
Y29uc3QgVmlzaWJsZUFuZENvdmVyYWdlUmVjdHMmCiAgICAgaWYgKGF1dG8gZXh0ZW50ID0gYW5p
bWF0aW9uRXh0ZW50KCkpIHsKICAgICAgICAgLy8gQWRqdXN0IHRoZSBhbmltYXRpb24gZXh0ZW50
IHRvIG1hdGNoIHRoZSBjdXJyZW50IGFuaW1hdGlvbiBwb3NpdGlvbi4KICAgICAgICAgYXV0byBh
bmltYXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQgPSB0cmFuc2Zvcm1CeUFwcGx5aW5nQW5j
aG9yUG9pbnQocmVjdHMuYW5pbWF0aW5nVHJhbnNmb3JtKTsKLSAgICAgICAgYm91bmRzID0gYW5p
bWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50LmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpLm1hcFJlY3QoKmV4dGVudCk7CisgICAgICAgIGJvdW5kcyA9IGFuaW1h
dGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSkubWFwUmVjdCgqZXh0ZW50KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byB0YWtlIHJlZmxlY3Rpb25zIGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5n
IHdoZXRoZXIgdGhpcyBsYXllciBpbnRlcnNlY3RzIHRoZSBjb3ZlcmFnZSByZWN0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aAppbmRleCAzMDNjZTZjNzEzYjFiY2U2M2Q3NTg4YjBlMzVkZDE2NmQ0YjQxMmFmLi40ODQ0OTkw
MDA1NzY3Y2ViZmYwYzUxZjIyOTEzYmMzYzM4NGJlOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaApAQCAtNDgwLDcg
KzQ4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2JlZ2luVGlt
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fYmVnaW5UaW1lIC0gbV90aW1lT2Zmc2V0Owot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gbV9hbmltYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCmluZGV4IDlk
YzhhN2Y4ZmIxMzM2M2E3ZGYyOGJmOTRiM2M3OTI0YTJmNGFjMzcuLmZkMmNhMjI3ZDhmZGU0MTBm
ZDE3ODdlZGMzMmNhMjg0NzMxYzA2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
Lm1tCkBAIC0xMTk2LDkgKzExOTYsOSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVy
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFdlYkNvcgogCiAgICAg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7Ci0gICAgICAgIFdURjo6T3B0aW9uYWw8TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0PiBw
bGF0Zm9ybUNvbnRleHRTYXZlcjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQ+IHBsYXRmb3JtQ29udGV4dFNhdmVyOwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgICAgIFdURjo6T3B0aW9uYWw8Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXI+
IGZvbnRBbnRpYWxpYXNpbmdTdGF0ZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxGb250QW50aWFs
aWFzaW5nU3RhdGVTYXZlcj4gZm9udEFudGlhbGlhc2luZ1N0YXRlOwogI2VuZGlmCiAKICAgICAg
ICAgLy8gV2UgbmV2ZXIgdXNlIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90
dG9tVXAgb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGF0aENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdGhDYWlyby5jcHAKaW5kZXggMmExOWU0N2E5YWFjZWMyMDk2YTYwZTk3ZTNiNWM0
ODc0NTNkYWFmMy4uNjNlYWJjYjQwODBmZjljYThiYWJhZjFjOGYxZTdlNWU2YTM2N2EwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fp
cm8uY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBQYXRoOjphZGRCZXppZXJDdXJ2ZVRvU2xv
d0Nhc2UoY29uc3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50MSwgY29uc3QgRmxvYXQKIAogdm9p
ZCBQYXRoOjphZGRBcmNTbG93Q2FzZShjb25zdCBGbG9hdFBvaW50JiBwLCBmbG9hdCByLCBmbG9h
dCBzdGFydEFuZ2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3aXNlKQogewotICAg
IG1fZWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9IHN0ZDo6bnVsbG9w
dDsKICAgICBjYWlyb190KiBjciA9IGVuc3VyZUNhaXJvUGF0aCgpOwogICAgIGZsb2F0IHN3ZWVw
ID0gZW5kQW5nbGUgLSBzdGFydEFuZ2xlOwogICAgIGNvbnN0IGZsb2F0IHR3b1BJID0gMiAqIHBp
RmxvYXQ7CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9h
dFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHJhZGl1cykKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fZWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9l
bGVtZW50cyA9IHN0ZDo6bnVsbG9wdDsKICAgICBmbG9hdCB0YW5nZW50ID0gcmFkaXVzIC8gdGFu
KGFjb3MoY29zX3BoaSkgLyAyKTsKICAgICBmbG9hdCBmYWN0b3JfcDFwMCA9IHRhbmdlbnQgLyBw
MXAwX2xlbmd0aDsKICAgICBGbG9hdFBvaW50IHRfcDFwMCgocDEueCgpICsgZmFjdG9yX3AxcDAg
KiBwMXAwLngoKSksIChwMS55KCkgKyBmYWN0b3JfcDFwMCAqIHAxcDAueSgpKSk7CkBAIC0zNTAs
NyArMzUwLDcgQEAgdm9pZCBQYXRoOjphZGRBcmNUbyhjb25zdCBGbG9hdFBvaW50JiBwMSwgY29u
c3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0IHJhZGl1cykKIAogdm9pZCBQYXRoOjphZGRFbGxpcHNl
KEZsb2F0UG9pbnQgcG9pbnQsIGZsb2F0IHJhZGl1c1gsIGZsb2F0IHJhZGl1c1ksIGZsb2F0IHJv
dGF0aW9uLCBmbG9hdCBzdGFydEFuZ2xlLCBmbG9hdCBlbmRBbmdsZSwgYm9vbCBhbnRpY2xvY2t3
aXNlKQogewotICAgIG1fZWxlbWVudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9
IHN0ZDo6bnVsbG9wdDsKICAgICBjYWlyb190KiBjciA9IGVuc3VyZUNhaXJvUGF0aCgpOwogICAg
IGNhaXJvX3NhdmUoY3IpOwogICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgcG9pbnQueCgpLCBwb2lu
dC55KCkpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgUGF0aDo6YWRkRWxsaXBzZShGbG9hdFBv
aW50IHBvaW50LCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZLCBmbG9hdCByb3RhCiAKIHZv
aWQgUGF0aDo6YWRkRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgbV9lbGVt
ZW50cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2VsZW1lbnRzID0gc3RkOjpudWxsb3B0OwogICAg
IGNhaXJvX3QqIGNyID0gZW5zdXJlQ2Fpcm9QYXRoKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAg
ICAgZmxvYXQgeVJhZGl1cyA9IC41ICogcmVjdC5oZWlnaHQoKTsKQEAgLTM4Nyw3ICszODcsNyBA
QCB2b2lkIFBhdGg6OmFkZFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0pCiAgICAgaWYgKGNhaXJvX21hdHJpeF9pbnZlcnQoJm1hdHJpeCkgIT0g
Q0FJUk9fU1RBVFVTX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZWxlbWVudHMg
PSBXVEY6Om51bGxvcHQ7CisgICAgbV9lbGVtZW50cyA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGNh
aXJvX3QqIGNyID0gcGF0aC5jYWlyb1BhdGgoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggZTNh
MDEzZDFkYzIxZjEzNmI4OWE5NmNmMDcwMTY4MDdhNjJiM2UyYi4uNTFlMGE4YzBlNjRjMzE0YWVh
NmYyNWRlNGEyOTE0YzlkMTUxNzliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIE9wdGlvbmFs
PFNSR0JBPHVpbnQ4X3Q+PiByb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KENHQ29sb3JSZWYgY29s
b3IpCiAgICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVkcyB0byBoYW5kbGUgY29sb3Ig
c3BhY2VzLgogCiAgICAgaWYgKCFjb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHNpemVfdCBudW1Db21wb25lbnRz
ID0gQ0dDb2xvckdldE51bWJlck9mQ29tcG9uZW50cyhjb2xvcik7CiAgICAgY29uc3QgQ0dGbG9h
dCogY29tcG9uZW50cyA9IENHQ29sb3JHZXRDb21wb25lbnRzKGNvbG9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApp
bmRleCBlMDQ1MTBjMGZmNTE1NzdiZTAxMWQ4Njc0MzQ2NDI0MzVjNzAzZDY3Li42NWM3YTgyZDQ0
ZGU4ZTA0NWI3YmQ4MGRmZjMwZDBiMWNkOWRjNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0xOTYsNyAr
MTk2LDcgQEAgc3RhdGljIE9wdGlvbmFsPEludFNpemU+IGRlbnNpdHlDb3JyZWN0ZWRTaXplRnJv
bVByb3BlcnRpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGltYWcKICAgICBhdXRvIHRpZmZEaWN0aW9uYXJ5
ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMs
IGtDR0ltYWdlUHJvcGVydHlUSUZGRGljdGlvbmFyeSk7CiAKICAgICBpZiAoIWV4aWZEaWN0aW9u
YXJ5IHx8ICF0aWZmRGljdGlvbmFyeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gd2lkdGhQcm9wZXJ0eSA9IChD
Rk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZVByb3BlcnRpZXMsIGtDR0ltYWdl
UHJvcGVydHlQaXhlbFdpZHRoKTsKICAgICBhdXRvIGhlaWdodFByb3BlcnR5ID0gKENGTnVtYmVy
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlUHJvcGVydGllcywga0NHSW1hZ2VQcm9wZXJ0
eVBpeGVsSGVpZ2h0KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW50U2l6
ZT4gZGVuc2l0eUNvcnJlY3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1h
ZwogICAgIGF1dG8gcmVzb2x1dGlvblVuaXRQcm9wZXJ0eSA9IChDRk51bWJlclJlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZSh0aWZmRGljdGlvbmFyeSwga0NHSW1hZ2VQcm9wZXJ0eVRJRkZSZXNvbHV0
aW9uVW5pdCk7CiAKICAgICBpZiAoIXByZWZlcnJlZFdpZHRoUHJvcGVydHkgfHwgIXByZWZlcnJl
ZEhlaWdodFByb3BlcnR5IHx8ICFyZXNvbHV0aW9uWFByb3BlcnR5IHx8ICFyZXNvbHV0aW9uWVBy
b3BlcnR5IHx8ICFyZXNvbHV0aW9uVW5pdFByb3BlcnR5KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50IHJlc29sdXRp
b25Vbml0OwogICAgIGZsb2F0IHNvdXJjZVdpZHRoLCBzb3VyY2VIZWlnaHQsIHByZWZlcnJlZFdp
ZHRoLCBwcmVmZXJyZWRIZWlnaHQsIHJlc29sdXRpb25XaWR0aCwgcmVzb2x1dGlvbkhlaWdodDsK
QEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW50U2l6ZT4gZGVuc2l0eUNvcnJl
Y3RlZFNpemVGcm9tUHJvcGVydGllcyhDRkRpY3Rpb25hcnlSZWYgaW1hZwogICAgICAgICB8fCAh
Q0ZOdW1iZXJHZXRWYWx1ZShyZXNvbHV0aW9uWFByb3BlcnR5LCBrQ0ZOdW1iZXJGbG9hdDMyVHlw
ZSwgJnJlc29sdXRpb25XaWR0aCkKICAgICAgICAgfHwgIUNGTnVtYmVyR2V0VmFsdWUocmVzb2x1
dGlvbllQcm9wZXJ0eSwga0NGTnVtYmVyRmxvYXQzMlR5cGUsICZyZXNvbHV0aW9uSGVpZ2h0KQog
ICAgICAgICB8fCAhQ0ZOdW1iZXJHZXRWYWx1ZShyZXNvbHV0aW9uVW5pdFByb3BlcnR5LCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmcmVzb2x1dGlvblVuaXQpKSB7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJu
IEltYWdlUmVzb2x1dGlvbjo6ZGVuc2l0eUNvcnJlY3RlZFNpemUoRmxvYXRTaXplKHNvdXJjZVdp
ZHRoLCBzb3VyY2VIZWlnaHQpLCB7CkBAIC0zOTEsMTkgKzM5MSwxOSBAQCBPcHRpb25hbDxJbnRQ
b2ludD4gSW1hZ2VEZWNvZGVyQ0c6OmhvdFNwb3QoKSBjb25zdAogewogICAgIGF1dG8gcHJvcGVy
dGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX25hdGl2
ZURlY29kZXIuZ2V0KCksIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CiAgICAgaWYg
KCFwcm9wZXJ0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGludCB4ID0gLTEsIHkgPSAtMTsKICAgICBDRk51
bWJlclJlZiBudW0gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydGll
cy5nZXQoKSwgQ0ZTVFIoImhvdHNwb3RYIikpOwogICAgIGlmICghbnVtIHx8ICFDRk51bWJlckdl
dFZhbHVlKG51bSwga0NGTnVtYmVySW50VHlwZSwgJngpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIG51bSA9IChD
Rk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0aWVzLmdldCgpLCBDRlNUUigi
aG90c3BvdFkiKSk7CiAgICAgaWYgKCFudW0gfHwgIUNGTnVtYmVyR2V0VmFsdWUobnVtLCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgaWYgKHggPCAwIHx8IHkgPCAwKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIHJldHVybiBJbnRQb2ludCh4LCB5KTsKIH0KQEAgLTQ0OCwxMSArNDQ4LDExIEBA
IEltYWdlRGVjb2Rlcjo6RnJhbWVNZXRhZGF0YSBJbWFnZURlY29kZXJDRzo6ZnJhbWVNZXRhZGF0
YUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjCiAgICAgCiAgICAgYXV0byBvcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5nZXQoKSk7CiAgICAgaWYgKCFtYXlI
YXZlRGVuc2l0eUNvcnJlY3RlZFNpemUocHJvcGVydGllcy5nZXQoKSkpCi0gICAgICAgIHJldHVy
biB7IG9yaWVudGF0aW9uLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgb3JpZW50
YXRpb24sIHN0ZDo6bnVsbG9wdCB9OwogCiAgICAgYXV0byBwcm9wZXJ0aWVzV2l0aE1ldGFkYXRh
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSwgaW5kZXgsIGNyZWF0ZUltYWdlU291cmNlTWV0YWRhdGFPcHRpb25zKCkuZ2V0
KCkpKTsKICAgICBpZiAoIXByb3BlcnRpZXNXaXRoTWV0YWRhdGEpCi0gICAgICAgIHJldHVybiB7
IG9yaWVudGF0aW9uLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgb3JpZW50YXRp
b24sIHN0ZDo6bnVsbG9wdCB9OwogICAgIAogICAgIHJldHVybiB7IG9yaWVudGF0aW9uLCBkZW5z
aXR5Q29ycmVjdGVkU2l6ZUZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXNXaXRoTWV0YWRhdGEuZ2V0
KCkpIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQXVkaW9UcmFja1ByaXZhdGVXZWJNLmNwcAppbmRleCBmZDI2ODhhNWRk
M2Q5NjlmNDMwZGMzZjhlMDI4NjU0ODJmNTMxZjZmLi5hOTc3MTYzYTA5MzAzZGMxYTU3ZmVhMGIw
ZDRhMzg4YjMyMzIwOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9BdWRpb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0F1ZGlvVHJhY2tQcml2YXRlV2ViTS5jcHAKQEAgLTU1
LDE0ICs1NSwxNCBAQCBPcHRpb25hbDx1aW50NjRfdD4gQXVkaW9UcmFja1ByaXZhdGVXZWJNOjp0
cmFja1VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fdHJhY2sudHJhY2tfdWlkLmlzX3ByZXNlbnQo
KSkKICAgICAgICAgcmV0dXJuIG1fdHJhY2sudHJhY2tfdWlkLnZhbHVlKCk7Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxi
b29sPiBBdWRpb1RyYWNrUHJpdmF0ZVdlYk06OmRlZmF1bHRFbmFibGVkKCkgY29uc3QKIHsKICAg
ICBpZiAobV90cmFjay5pc19lbmFibGVkLmlzX3ByZXNlbnQoKSkKICAgICAgICAgcmV0dXJuIG1f
dHJhY2suaXNfZW5hYmxlZC52YWx1ZSgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQXRvbVN0cmluZyBBdWRpb1RyYWNrUHJpdmF0ZVdl
Yk06OmxhYmVsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA0NzUyZmFjMjUw
MDM4NGM4OTRkYTdkN2U2Mzk2OGNkNzFiM2JmY2IwLi44OTFkZDUzNDNlNjllZWNkZGRlMDUwMWJm
NjRlNTMzOGI0NjY1NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC01MDgsNyArNTA4
LDcgQEAgUmV0YWluUHRyPENURm9udFJlZj4gcHJlcGFyZVBsYXRmb3JtRm9udChDVEZvbnRSZWYg
b3JpZ2luYWxGb250LCBjb25zdCBGb250RGVzY3IKICAgICBpZiAoYXBwbHlXZWlnaHRXaWR0aFNs
b3BlVmFyaWF0aW9ucyAmJiAhZm9udElzU3lzdGVtRm9udChvcmlnaW5hbEZvbnQpKSB7CiAgICAg
ICAgIGZsb2F0IHdlaWdodCA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LndlaWdodDsKICAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250U2VsZWN0aW9uUmVxdWVzdC53aWR0aDsKLSAgICAgICAgZmxvYXQg
c2xvcGUgPSBmb250U2VsZWN0aW9uUmVxdWVzdC5zbG9wZS52YWx1ZU9yKG5vcm1hbEl0YWxpY1Zh
bHVlKCkpOworICAgICAgICBmbG9hdCBzbG9wZSA9IGZvbnRTZWxlY3Rpb25SZXF1ZXN0LnNsb3Bl
LnZhbHVlX29yKG5vcm1hbEl0YWxpY1ZhbHVlKCkpOwogICAgICAgICBpZiAoYXV0byB3ZWlnaHRW
YWx1ZSA9IGZvbnRGYWNlQ2FwYWJpbGl0aWVzLndlaWdodCkKICAgICAgICAgICAgIHdlaWdodCA9
IHN0ZDo6bWF4KHN0ZDo6bWluKHdlaWdodCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHdlaWdodFZhbHVl
LT5tYXhpbXVtKSksIHN0YXRpY19jYXN0PGZsb2F0Pih3ZWlnaHRWYWx1ZS0+bWluaW11bSkpOwog
ICAgICAgICBpZiAoYXV0byB3aWR0aFZhbHVlID0gZm9udEZhY2VDYXBhYmlsaXRpZXMud2lkdGgp
CkBAIC05MzksNyArOTM5LDcgQEAgc3RhdGljIE9wdGlvbmFsPE1pbk1heD4gZXh0cmFjdFZhcmlh
dGlvbkJvdW5kcyhDRkRpY3Rpb25hcnlSZWYgYXhpcykKICAgICBDRk51bWJlckdldFZhbHVlKG1h
eGltdW1WYWx1ZSwga0NGTnVtYmVyRmxvYXRUeXBlLCAmcmF3TWF4aW11bVZhbHVlKTsKICAgICBp
ZiAocmF3TWluaW11bVZhbHVlIDwgcmF3TWF4aW11bVZhbHVlKQogICAgICAgICByZXR1cm4ge3sg
cmF3TWluaW11bVZhbHVlLCByYXdNYXhpbXVtVmFsdWUgfX07Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgVmFyaWF0aW9uQ2Fw
YWJpbGl0aWVzIHZhcmlhdGlvbkNhcGFiaWxpdGllc0ZvckZvbnREZXNjcmlwdG9yKENURm9udERl
c2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IpCkBAIC0xNDYyLDcgKzE0NjIsNyBAQCBPcHRpb25h
bDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNv
bnN0IFN0cmluZyYgZmFtaQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgYWRkQXR0cmli
dXRlc0Zvckluc3RhbGxlZEZvbnRzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgYXR0cmlidXRlcywg
QWxsb3dVc2VySW5zdGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RGVzY3JpcHRp
b25Db2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250
RGVzY3JpcHRpb25Db2NvYS5jcHAKaW5kZXggMGQ3ZDk0NWEyYmMxNTQ2MjNiMzk2NGQ3OGQwZmE3
NjkzZmVmMDNhMy4uZjAxNmE1MjVhZmRkNjk5YTUxM2MzZTBhOWQzZGI2ZDNkMWE0ZmU1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udERlc2Ny
aXB0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnREZXNjcmlwdGlvbkNvY29hLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvbmFsPFN5c3RlbUZvbnRLaW5kPiBtYXRjaFN5c3RlbUZvbnRVc2UoY29uc3QgQXRv
bVN0cmluZyYgc3RyaQogICAgIGlmIChzdGQ6OmJpbmFyeV9zZWFyY2goc3RyaW5ncy5nZXQoKS5i
ZWdpbigpLCBzdHJpbmdzLmdldCgpLmVuZCgpLCBzdHJpbmcsIGNvbXBhcmVBc1BvaW50ZXIpKQog
ICAgICAgICByZXR1cm4gU3lzdGVtRm9udEtpbmQ6OlRleHRTdHlsZTsKIAotICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGlubGlu
ZSBWZWN0b3I8UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+PiBzeXN0ZW1Gb250Q2FzY2Fk
ZUxpc3QoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQXRvbVN0cmlu
ZyYgY3NzRmFtaWx5LCBTeXN0ZW1Gb250S2luZCBzeXN0ZW1Gb250S2luZCwgQWxsb3dVc2VySW5z
dGFsbGVkRm9udHMgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQppbmRleCBmMmExNTlmMWRmMjJmMWUzYmY5NDAxM2I1NTA1
MjZhZmVhMmJlMDAzLi5lNGU5YTU4MjM2MjQ4NWNmOWJkNjg4NmQ5NmM0MmMyMzI3Y2NmNDkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KQEAgLTY2NSw5ICs2
NjUsOSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRDb21wb3NpdGVkUmVzdWx0cygpCiB7CiAgICAgYXV0byYgZGlzcGxheUJ1ZmZlciA9IG1fc3dh
cENoYWluLT5kaXNwbGF5QnVmZmVyKCk7CiAgICAgaWYgKCFkaXNwbGF5QnVmZmVyLnN1cmZhY2Ug
fHwgIWRpc3BsYXlCdWZmZXIuaGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChkaXNwbGF5QnVmZmVyLnN1cmZh
Y2UtPnNpemUoKSAhPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIC8vIE5v
dGU6IFdlIGFyZSB1c2luZyBHTCB0byByZWFkIHRoZSBJT1N1cmZhY2UuIEF0IHRoZSB0aW1lIG9m
IHdyaXRpbmcsIHRoZXJlIGFyZSBubyBjb252aW5pZW50CiAgICAgLy8gZnVuY3Rpb25zIHRvIGNv
bnZlcnQgdGhlIElPU3VyZmFjZSBwaXhlbCBkYXRhIHRvIEltYWdlRGF0YS4gVGhlIGltYWdlIGRh
dGEgZW5kcyB1cCBiZWluZwogICAgIC8vIGRyYXduIHRvIGEgSW1hZ2VCdWZmZXIsIGJ1dCBhdCB0
aGUgdGltZSB0aGVyZSdzIG5vIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgYSBOYXRpdmVJbWFnZQpA
QCAtNjc4LDcgKzY3OCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICBTY29wZWRSZXN0b3JlVGV4dHVy
ZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgp
LCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7
CiAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIHRleHR1cmUpOwogICAgIGlmICgh
RUdMX0JpbmRUZXhJbWFnZShtX2Rpc3BsYXlPYmosIGRpc3BsYXlCdWZmZXIuaGFuZGxlLCBFR0xf
QkFDS19CVUZGRVIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgICBTY29wZWRGcmFtZWJ1ZmZlciBm
Ym87CiAgICAgU2NvcGVkUmVzdG9yZVJlYWRGcmFtZWJ1ZmZlckJpbmRpbmcgZmJvQmluZGluZyht
X2lzRm9yV2ViR0wyLCBtX3N0YXRlLmJvdW5kUmVhZEZCTywgZmJvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXND
b2NvYS5tbQppbmRleCBkYTQwYTJjZGU4ZjBmODRkYTA5MzBiNTJmYjIzYjY2ZDUzZjkwZDM3Li5h
ODhmZGU5MDFmNTIyNTk0NGVmMWE5NzQwY2E1MjM4NzczMWNkMDg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGll
c0NvY29hLm1tCkBAIC00MywxMSArNDMsMTEgQEAgT3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJ
bmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzJiBwYXIKICAg
ICBDTVZpZGVvQ29kZWNUeXBlIGNvZGVjID0ga0NNVmlkZW9Db2RlY1R5cGVfSEVWQzsKICAgICBp
ZiAoaGFzQWxwaGFDaGFubmVsKSB7CiAgICAgICAgIGlmICghUEFMOjppc0FWRm91bmRhdGlvbkZy
YW1ld29ya0F2YWlsYWJsZSgpIHx8ICFQQUw6OmNhbkxvYWRfQVZGb3VuZGF0aW9uX0FWVmlkZW9D
b2RlY1R5cGVIRVZDV2l0aEFscGhhKCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIGNvZGVj
Q29kZSA9IEZvdXJDQzo6ZnJvbVN0cmluZyhBVlZpZGVvQ29kZWNUeXBlSEVWQ1dpdGhBbHBoYSk7
CiAgICAgICAgIGlmICghY29kZWNDb2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgY29kZWMgPSBj
b2RlY0NvZGUudmFsdWUoKS52YWx1ZTsKICAgICB9CkBAIC01NywxMiArNTcsMTIgQEAgT3B0aW9u
YWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhF
VkNQYXJhbWV0ZXJzJiBwYXIKICAgICAgICAgYm9vbCBpc01haW4xMCA9IHBhcmFtZXRlcnMuZ2Vu
ZXJhbFByb2ZpbGVTcGFjZSA9PSAwCiAgICAgICAgICAgICAmJiAocGFyYW1ldGVycy5nZW5lcmFs
UHJvZmlsZUlEQyA9PSAyIHx8IHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5
RmxhZ3MgPT0gMSk7CiAgICAgICAgIGlmICghaXNNYWluMTApCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3Rh
bmNlKGNvZGVjLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKICAgICBp
ZiAoc3RhdHVzICE9IG5vRXJyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9W
VENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rpb25hcnkoKQogICAgICAgICB8fCAhY2Fu
TG9hZF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZFByb2Zp
bGVzKCkKQEAgLTcwLDMwICs3MCwzMCBAQCBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+
IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMmIHBhcgogICAgICAg
ICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0
eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQoKQogICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xi
b3hfa1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCgpCiAgICAg
ICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmls
aXR5X01heFBsYXliYWNrTGV2ZWwoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY2FwYWJpbGl0aWVzID0gYWRv
cHRDRihWVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rpb25hcnkoKSk7CiAgICAgaWYg
KCFjYXBhYmlsaXRpZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1cHBvcnRlZFByb2ZpbGVzID0gKENGQXJy
YXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlRIRVZDRGVj
b2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpOwogICAgIGlmICghc3VwcG9ydGVkUHJv
ZmlsZXMgfHwgQ0ZHZXRUeXBlSUQoc3VwcG9ydGVkUHJvZmlsZXMpICE9IENGQXJyYXlHZXRUeXBl
SUQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGludDE2X3QgZ2VuZXJhbFByb2ZpbGVJREMgPSBwYXJhbWV0ZXJzLmdl
bmVyYWxQcm9maWxlSURDOwogICAgIGF1dG8gY2ZHZW5lcmFsUHJvZmlsZUlEQyA9IGFkb3B0Q0Yo
Q0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDE2VHlwZSwg
JmdlbmVyYWxQcm9maWxlSURDKSk7CiAgICAgYXV0byBzZWFyY2hSYW5nZSA9IENGUmFuZ2VNYWtl
KDAsIENGQXJyYXlHZXRDb3VudChzdXBwb3J0ZWRQcm9maWxlcykpOwogICAgIGlmICghQ0ZBcnJh
eUNvbnRhaW5zVmFsdWUoc3VwcG9ydGVkUHJvZmlsZXMsIHNlYXJjaFJhbmdlLCBjZkdlbmVyYWxQ
cm9maWxlSURDLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGVyUHJvZmlsZVN1cHBvcnQgPSAoQ0ZE
aWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZU
SEVWQ0RlY29kZXJDYXBhYmlsaXR5X1BlclByb2ZpbGVTdXBwb3J0KTsKICAgICBpZiAoIXBlclBy
b2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlEKHBlclByb2ZpbGVTdXBwb3J0KSAhPSBDRkRpY3Rp
b25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcg
PSBTdHJpbmc6Om51bWJlcihnZW5lcmFsUHJvZmlsZUlEQykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAg
ICBhdXRvIHByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcuZ2V0KCkpOwog
ICAgIGlmICghcHJvZmlsZVN1cHBvcnQgfHwgQ0ZHZXRUeXBlSUQocHJvZmlsZVN1cHBvcnQpICE9
IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTWVkaWFDYXBhYmlsaXRpZXNJbmZv
IGluZm87CiAKQEAgLTEwNywxNyArMTA3LDE3IEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVz
SW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZDUGFyYW1ldGVycyYgcGFyCiAg
ICAgaWYgKGNmTWF4RGVjb2RlTGV2ZWwgJiYgQ0ZHZXRUeXBlSUQoY2ZNYXhEZWNvZGVMZXZlbCkg
PT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkgewogICAgICAgICBpbnQxNl90IG1heERlY29kZUxldmVs
ID0gMDsKICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKGNmTWF4RGVjb2RlTGV2ZWwsIGtD
Rk51bWJlclNJbnQxNlR5cGUsICZtYXhEZWNvZGVMZXZlbCkpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBpZiAocGFyYW1ldGVycy5nZW5lcmFsTGV2ZWxJREMgPiBtYXhEZWNvZGVMZXZlbCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KIAogICAgIGF1dG8gY2ZNYXhQbGF5YmFja0xldmVsID0gKENGTnVtYmVyUmVm
KUNGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2Zp
bGVDYXBhYmlsaXR5X01heFBsYXliYWNrTGV2ZWwpOwogICAgIGlmIChjZk1heFBsYXliYWNrTGV2
ZWwgJiYgQ0ZHZXRUeXBlSUQoY2ZNYXhQbGF5YmFja0xldmVsKSA9PSBDRk51bWJlckdldFR5cGVJ
RCgpKSB7CiAgICAgICAgIGludDE2X3QgbWF4UGxheWJhY2tMZXZlbCA9IDA7CiAgICAgICAgIGlm
ICghQ0ZOdW1iZXJHZXRWYWx1ZShjZk1heFBsYXliYWNrTGV2ZWwsIGtDRk51bWJlclNJbnQxNlR5
cGUsICZtYXhQbGF5YmFja0xldmVsKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGluZm8uc21vb3Ro
ID0gcGFyYW1ldGVycy5nZW5lcmFsTGV2ZWxJREMgPD0gbWF4UGxheWJhY2tMZXZlbDsKICAgICB9
CkBAIC0xNDEsMTYgKzE0MSwxNiBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVpbnQxNl90Pj4g
cGFyc2VTdHJpbmdBcnJheUZyb21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0b3IoQwogewogICAgIGF1
dG8gdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBrZXkpOwogICAgIGlm
ICghdmFsdWUgfHwgQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBOU0FycmF5ICphcnJheSA9IChfX2JyaWRnZSBOU0FycmF5ICopdmFsdWU7CiAgICAgVmVj
dG9yPHVpbnQxNl90PiB2ZWN0b3I7CiAgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YXJyYXkuY291bnQpOwogICAgIGZvciAoaWQgdmFsdWUgaW4gYXJyYXkpIHsKICAgICAgICAgaWYg
KCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5jbGFzc10pCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgYXV0byBudW1lcmljVmFsdWUgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KFN0cmluZygoTlNT
dHJpbmcgKil2YWx1ZSkpOwogICAgICAgICBpZiAoIW51bWVyaWNWYWx1ZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5kKCpudW1lcmljVmFsdWUpOwogICAgIH0KICAg
ICByZXR1cm4gdmVjdG9yOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDE2X3Q+PiBwYXJzZVN0cmluZ0FycmF5RnJvbURpY3Rpb25hcnlUb1VJbnQxNlZlY3Rv
cihDCiBPcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRl
cnMoY29uc3QgRG9WaVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgaGFzQWxwaGFDaGFubmVs
LCBib29sIGhkclN1cHBvcnQpCiB7CiAgICAgaWYgKGhhc0FscGhhQ2hhbm5lbCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChoZHJTdXBwb3J0KSB7CiAgICAgICAgIC8vIFBsYXRmb3JtIHN1cHBvcnRzIEhEUiBwbGF5
YmFjayBvZiBIRVZDIE1haW4xMCBQcm9maWxlLCB3aGljaCBpcyBzaWduYWxsZWQgYnkgRG9WaSBw
cm9maWxlcyA0LCA1LCA3LCAmIDguCkBAIC0xNzAsMzkgKzE3MCwzOSBAQCBPcHRpb25hbDxNZWRp
YUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9WaVBhcmFt
ZXRlcnMmIHBhcgogICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgfQogCiAgICAgT1NTdGF0dXMgc3Rh
dHVzID0gVlRTZWxlY3RBbmRDcmVhdGVWaWRlb0RlY29kZXJJbnN0YW5jZShjb2RlY1R5cGUocGFy
YW1ldGVycy5jb2RlYyksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOwog
ICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWNhbkxvYWRfVmlkZW9Ub29s
Ym94X1ZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlvbmFyeSgpCiAgICAgICAgIHx8
ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1
cHBvcnRlZFByb2ZpbGVzKCkKICAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERv
bGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzKCkKICAgICAgICAgfHwg
IWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNI
YXJkd2FyZUFjY2VsZXJhdGVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGNhcGFiaWxpdGllcyA9IGFkb3B0
Q0YoVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkpOwogICAgIGlmICgh
Y2FwYWJpbGl0aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IHBhcnNlU3Ry
aW5nQXJyYXlGcm9tRGljdGlvbmFyeVRvVUludDE2VmVjdG9yKGNhcGFiaWxpdGllcy5nZXQoKSwg
a1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcyk7CiAgICAg
aWYgKCFzdXBwb3J0ZWRQcm9maWxlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VwcG9ydGVkTGV2ZWxzID0g
cGFyc2VTdHJpbmdBcnJheUZyb21EaWN0aW9uYXJ5VG9VSW50MTZWZWN0b3IoY2FwYWJpbGl0aWVz
LmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscyk7
CiAgICAgaWYgKCFzdXBwb3J0ZWRMZXZlbHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGlzSGFyZHdhcmVBY2Nl
bGVyYXRlZENGID0gKENGQm9vbGVhblJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRp
ZXMuZ2V0KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkKTsKICAgICBpZiAoIWlzSGFyZHdhcmVBY2NlbGVyYXRlZENGIHx8IENGR2V0VHlwZUlE
KGlzSGFyZHdhcmVBY2NlbGVyYXRlZENGKSAhPSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBib29sIGlzSGFyZHdhcmVBY2NlbGVyYXRlZCA9IENGQm9vbGVhbkdldFZhbHVlKGlzSGFyZHdh
cmVBY2NlbGVyYXRlZENGKTsKIAogICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMudmFsdWUoKS5j
b250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkgfHwgIXN1cHBvcnRlZExldmVs
cy52YWx1ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4geyB7IHRydWUsIHRydWUsIGlzSGFyZHdhcmVBY2NlbGVyYXRlZCB9IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5o
CmluZGV4IGUyMjVjZmQyNzgwZWVjMjc5NzRlZGY3MWNlNDcwMDI5MmVlYzhiMTYuLjVkZDNlY2Ji
ZTZiMjAwZjJlZmNlYmJkMmE5YzM2NTNlMDUzZTJlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCkBAIC0xODQsNyArMTg0LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IG1fc3VyZmFjZTsKIAot
ICAgIHN0YXRpYyBXVEY6Ok9wdGlvbmFsPEludFNpemU+IHNfbWF4aW11bVNpemU7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8SW50U2l6ZT4gc19tYXhpbXVtU2l6ZTsKIH07CiAKIFdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBXZWJDb3JlOjpJT1N1cmZhY2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCmluZGV4IGM4OTZjYTQwYTY3YzIxNDFkY2QyMDYz
ZTVkMGM3Njg2MWE3NGYxYzguLmQ1YTYzNWZkMTQ4YTFiMTQxN2Y5OTJlZTI0MmNjNzk5YjQ2ZDJi
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9y
eUNvY29hLmNwcApAQCAtNjUsMTcgKzY1LDE3IEBAIHN0YXRpYyBPcHRpb25hbDxNZWRpYUNhcGFi
aWxpdGllc0luZm8+IGNvbXB1dGVNZWRpYUNhcGFiaWxpdGllc0luZm8oY29uc3QgTWVkaWFECiAg
ICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKHZpZGVvQ29uZmlndXJhdGlvbi5j
b250ZW50VHlwZSk7CiAgICAgICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IGNvbmZpZ3Vy
YXRpb24udHlwZSA9PSBNZWRpYURlY29kaW5nVHlwZTo6TWVkaWFTb3VyY2U7CiAgICAgICAgIGlm
IChNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGU6OklzU3VwcG9ydGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBjb2Rl
Y3MgPSBwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCk7CiAgICAgICAgIGlmIChjb2RlY3Muc2l6ZSgp
ICE9IDEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAg
ICAgIGF1dG8mIGNvZGVjID0gY29kZWNzWzBdOwogICAgICAgICBhdXRvIHZpZGVvQ29kZWNUeXBl
ID0gdmlkZW9Db2RlY1R5cGVGcm9tUkZDNDI4MVR5cGUoY29kZWMpOwogICAgICAgICBpZiAoIXZp
ZGVvQ29kZWNUeXBlICYmICEoY29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0
c1dpdGgoImR2aGUiKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBib29sIGhkclN1cHBvcnRlZCA9
IHZpZGVvQ29uZmlndXJhdGlvbi5jb2xvckdhbXV0IHx8IHZpZGVvQ29uZmlndXJhdGlvbi5oZHJN
ZXRhZGF0YVR5cGUgfHwgdmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rpb247CiAgICAg
ICAgIGJvb2wgYWxwaGFDaGFubmVsID0gdmlkZW9Db25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbCAm
JiB2aWRlb0NvbmZpZ3VyYXRpb24uYWxwaGFDaGFubmVsLnZhbHVlKCk7CkBAIC04MywzNCArODMs
MzQgQEAgc3RhdGljIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gY29tcHV0ZU1lZGlh
Q2FwYWJpbGl0aWVzSW5mbyhjb25zdCBNZWRpYUQKICAgICAgICAgaWYgKHZpZGVvQ29kZWNUeXBl
ID09IGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMpIHsKICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVy
cyA9IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb2RlYyk7CiAgICAgICAgICAgICBpZiAoIXBh
cmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBwYXJzZWRJbmZv
ID0gdmFsaWRhdGVIRVZDUGFyYW1ldGVycygqcGFyYW1ldGVycywgYWxwaGFDaGFubmVsLCBoZHJT
dXBwb3J0ZWQpOwogICAgICAgICAgICAgaWYgKCFwYXJzZWRJbmZvKQotICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIGluZm8gPSAqcGFyc2VkSW5mbzsKICAgICAgICAgfSBlbHNlIGlmIChj
b2RlYy5zdGFydHNXaXRoKCJkdmgxIikgfHwgY29kZWMuc3RhcnRzV2l0aCgiZHZoZSIpKSB7CiAg
ICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoY29k
ZWMpOwogICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgIGF1dG8gcGFyc2VkSW5mbyA9IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoKnBhcmFt
ZXRlcnMsIGFscGhhQ2hhbm5lbCwgaGRyU3VwcG9ydGVkKTsKICAgICAgICAgICAgIGlmICghcGFy
c2VkSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBpbmZvID0gKnBhcnNlZElu
Zm87CiAjaWYgRU5BQkxFKFZQOSkKICAgICAgICAgfSBlbHNlIGlmICh2aWRlb0NvZGVjVHlwZSA9
PSBrQ01WaWRlb0NvZGVjVHlwZV9WUDkpIHsKICAgICAgICAgICAgIGlmICghY29uZmlndXJhdGlv
bi5jYW5FeHBvc2VWUDkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBwYXJh
bWV0ZXJzID0gcGFyc2VWUENvZGVjUGFyYW1ldGVycyhjb2RlYyk7CiAgICAgICAgICAgICBpZiAo
IXBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYXV0byBwYXJzZWRJ
bmZvID0gdmFsaWRhdGVWUFBhcmFtZXRlcnMoKnBhcmFtZXRlcnMsIHZpZGVvQ29uZmlndXJhdGlv
bik7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZEluZm8pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgaW5mbyA9ICpwYXJzZWRJbmZvOwogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBpZiAoYWxwaGFDaGFubmVsIHx8IGhkclN1cHBvcnRlZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChjYW5Mb2FkX1ZpZGVvVG9vbGJveF9WVElzSGFyZHdh
cmVEZWNvZGVTdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAgICAgIGluZm8ucG93ZXJFZmZpY2ll
bnQgPSBWVElzSGFyZHdhcmVEZWNvZGVTdXBwb3J0ZWQodmlkZW9Db2RlY1R5cGUpOwpAQCAtMTI0
LDIyICsxMjQsMjIgQEAgc3RhdGljIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gY29t
cHV0ZU1lZGlhQ2FwYWJpbGl0aWVzSW5mbyhjb25zdCBNZWRpYUQKICAgICAgICAgcGFyYW1ldGVy
cy50eXBlID0gQ29udGVudFR5cGUoY29uZmlndXJhdGlvbi5hdWRpby52YWx1ZSgpLmNvbnRlbnRU
eXBlKTsKICAgICAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gY29uZmlndXJhdGlvbi50
eXBlID09IE1lZGlhRGVjb2RpbmdUeXBlOjpNZWRpYVNvdXJjZTsKICAgICAgICAgaWYgKE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZTo6SXNTdXBwb3J0ZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICBpZiAoY29uZmlndXJhdGlv
bi5hdWRpby0+c3BhdGlhbFJlbmRlcmluZy52YWx1ZU9yKGZhbHNlKSkgeworICAgICAgICBpZiAo
Y29uZmlndXJhdGlvbi5hdWRpby0+c3BhdGlhbFJlbmRlcmluZy52YWx1ZV9vcihmYWxzZSkpIHsK
ICAgICAgICAgICAgIGF1dG8gY29udGV4dCA9IFBBTDo6T3V0cHV0Q29udGV4dDo6c2hhcmVkQXVk
aW9QcmVzZW50YXRpb25PdXRwdXRDb250ZXh0KCk7CiAgICAgICAgICAgICBpZiAoIWNvbnRleHQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdXRvIGRldmljZXMgPSBjb250ZXh0
LT5vdXRwdXREZXZpY2VzKCk7CiAgICAgICAgICAgICBpZiAoZGV2aWNlcy5pc0VtcHR5KCkgfHwg
IVdURjo6YWxsT2YoZGV2aWNlcywgW10oYXV0byYgZGV2aWNlKSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRldmljZS5zdXBwb3J0c1NwYXRpYWxBdWRpbygpOwogICAgICAgICAgICAgfSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICAvLyBPbmx5IG11bHRpY2hhbm5lbCBhdWRp
byBjYW4gYmUgc3BhdGlhbGx5IHJlbmRlcmVkLgogICAgICAgICAgICAgaWYgKCFjb25maWd1cmF0
aW9uLmF1ZGlvLT5jaGFubmVscy5pc051bGwoKSAmJiBjb25maWd1cmF0aW9uLmF1ZGlvLT5jaGFu
bmVscy50b0RvdWJsZSgpIDw9IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAg
ICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNl
cldlYk0uY3BwCmluZGV4IGU1MWI1ZDY5YzQ2ZjQxNzdkYTRjOTlmNDczN2M4MmYwMzBmNDI5Zjcu
LjVkYTNiNGJiNjkwOTc3N2NjZGJkMWI5ZDc0YzZlNDBlMTc1ZDI1ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldl
Yk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2kKICAgICAgICAgfQogCiAgICAgICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUiwgInJlY2VpdmVkIEVibWwgZWxlbWVudCB3aGlsZSBwYXJzaW5nIFNlZ21lbnQg
ZWxlbWVudC4gUmV3b3VuZCByZWFkZXIgYW5kIHJlc2V0IHBhcnNlciwgcmV0cnlpbmciKTsKLSAg
ICAgICAgbV9yZXdpbmRUb1Bvc2l0aW9uID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3Jld2lu
ZFRvUG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fcGFyc2VyLT5EaWRTZWVrKCk7
CiAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Tm9uZTsKICAgICAgICAgY29udGludWU7CkBAIC05
NTUsNyArOTU1LDcgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQmxv
Y2tCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXQKIAogICAgICphY3Rpb24gPSBB
Y3Rpb246OmtSZWFkOwogCi0gICAgbV9jdXJyZW50QmxvY2sgPSBtYWtlT3B0aW9uYWw8QmxvY2tW
YXJpYW50PihCbG9jayhibG9jaykpOworICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjptYWtlX29w
dGlvbmFsPEJsb2NrVmFyaWFudD4oQmxvY2soYmxvY2spKTsKIAogICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprT2tDb21wbGV0ZWQpOwogfQpAQCAtOTY2LDcgKzk2Niw3IEBAIHdlYm06OlN0YXR1
cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0
YSYgbWV0YWRhdGEsCiAgICAgVU5VU0VEX1BBUkFNKGJsb2NrKTsKICAgICBJTkZPX0xPR19JRl9Q
T1NTSUJMRShMT0dJREVOVElGSUVSKTsKIAotICAgIG1fY3VycmVudEJsb2NrID0gV1RGOjpudWxs
b3B0OworICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFN0
YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CiB9CkBAIC05ODIsNyArOTgyLDcgQEAgd2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uU2ltcGxlQmxvY2tCZWdpbihjb25zdCBF
bGVtZW50TWV0YWRhdGEmIG0KIAogICAgICphY3Rpb24gPSBBY3Rpb246OmtSZWFkOwogCi0gICAg
bV9jdXJyZW50QmxvY2sgPSBtYWtlT3B0aW9uYWw8QmxvY2tWYXJpYW50PihTaW1wbGVCbG9jayhi
bG9jaykpOworICAgIG1fY3VycmVudEJsb2NrID0gc3RkOjptYWtlX29wdGlvbmFsPEJsb2NrVmFy
aWFudD4oU2ltcGxlQmxvY2soYmxvY2spKTsKIAogICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
T2tDb21wbGV0ZWQpOwogfQpAQCAtOTk0LDcgKzk5NCw3IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpPblNpbXBsZUJsb2NrRW5kKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYg
bWV0CiAKICAgICBVTlVTRURfUEFSQU0oYmxvY2spOwogCi0gICAgbV9jdXJyZW50QmxvY2sgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50QmxvY2sgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIH0KQEAgLTEzMDYsOCArMTMwNiw4
IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6
Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAKIAogICAgIG1fcGFja2V0RGVzY3JpcHRpb25z
LmFwcGVuZCh7IHN0YXRpY19jYXN0PGludDY0X3Q+KCptX2N1cnJlbnRQYWNrZXRCeXRlT2Zmc2V0
KSwgMCwgc3RhdGljX2Nhc3Q8VUludDMyPigqbV9jdXJyZW50UGFja2V0U2l6ZSkgfSk7Ci0gICAg
bV9jdXJyZW50UGFja2V0Qnl0ZU9mZnNldCA9IFdURjo6bnVsbG9wdDsKLSAgICBtX2N1cnJlbnRQ
YWNrZXRTaXplID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudFBhY2tldEJ5dGVPZmZzZXQg
PSBzdGQ6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50UGFja2V0U2l6ZSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8gc2FtcGxlRHVyYXRpb24gPSBDTVRpbWVHZXRTZWNvbmRzKENNVGltZVN1YnRy
YWN0KHByZXNlbnRhdGlvblRpbWUsIG1fc2FtcGxlUHJlc2VudGF0aW9uVGltZSkpICsgQ01UaW1l
R2V0U2Vjb25kcyhtX3BhY2tldER1cmF0aW9uKSAqIHNhbXBsZUNvdW50OwogICAgIGlmIChzYW1w
bGVEdXJhdGlvbiA+PSBtX21pbmltdW1TYW1wbGVEdXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaAppbmRleCA2NDFlNDcxODZlYWYzMjc2MGUxODI3NWFkM2Q4ZDUwNDZkNWM3MmYy
Li4zNTFhYmY4MTc0NTBiMzBjNzFiNGEyMDY3YWI0ZTUxOGM1MTUxYTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0yMDcsNyArMjA3LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAKICAgICAgICAgd2VibTo6U3RhdHVzIGNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZGVyJiwg
Y29uc3Qgd2VibTo6RnJhbWVNZXRhZGF0YSYsIHVpbnQ2NF90KiwgY29uc3QgQ01UaW1lJiwgaW50
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBjcmVhdGVTYW1wbGVCdWZmZXIoT3B0aW9uYWw8c2l6ZV90
PiBsYXRlc3RCeXRlUmFuZ2VPZmZzZXQgPSBXVEY6Om51bGxvcHQpOworICAgICAgICB2b2lkIGNy
ZWF0ZVNhbXBsZUJ1ZmZlcihPcHRpb25hbDxzaXplX3Q+IGxhdGVzdEJ5dGVSYW5nZU9mZnNldCA9
IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBjaGFyKiBsb2dD
bGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiQXVkaW9UcmFja0RhdGEiOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9WUDlVdGlsaXRpZXNDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tCmluZGV4IDMyY2FmNzE1NjdlZGY5ZGViNzBiYWM3MWYyODliMjMzNGRmNTY3NTIu
LjZlZWQwMTZmMGJkZTA5MjQ0MjY4MDc4ZGJlY2UwNDhiMzAxZDdlMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGllc0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1ZQOVV0aWxpdGll
c0NvY29hLm1tCkBAIC0yMzMsMjIgKzIzMywyMiBAQCBib29sIGlzVlBDb2RlY0NvbmZpZ3VyYXRp
b25SZWNvcmRTdXBwb3J0ZWQoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNvcmQmIGNvZAog
T3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZVZQUGFyYW1ldGVycyhjb25z
dCBWUENvZGVjQ29uZmlndXJhdGlvblJlY29yZCYgY29kZWNDb25maWd1cmF0aW9uLCBjb25zdCBW
aWRlb0NvbmZpZ3VyYXRpb24mIHZpZGVvQ29uZmlndXJhdGlvbikKIHsKICAgICBpZiAoIWlzVlBD
b2RlY0NvbmZpZ3VyYXRpb25SZWNvcmRTdXBwb3J0ZWQoY29kZWNDb25maWd1cmF0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIFZpZGVvQ29uZmlndXJhdGlvbiBhbmQgVlBDb2RlY0NvbmZpZ3VyYXRpb25SZWNv
cmQgY2FuIGhhdmUgY29uZmxpY3RpbmcgdmFsdWVzIGZvciBIRFIgcHJvcGVydGllcy4gSWYgc28s
IHJlamVjdC4KICAgICBpZiAodmlkZW9Db25maWd1cmF0aW9uLnRyYW5zZmVyRnVuY3Rpb24pIHsK
ICAgICAgICAgLy8gTm90ZTogVHJhbnNmZXIgQ2hhcmFjdGVyaXN0aWNzIGFyZSBkZWZpbmVkIGJ5
IElTTy9JRUMgMjMwOTEtMjoyMDE5LgogICAgICAgICBpZiAoKnZpZGVvQ29uZmlndXJhdGlvbi50
cmFuc2ZlckZ1bmN0aW9uID09IFRyYW5zZmVyRnVuY3Rpb246OlNSR0IgJiYgY29kZWNDb25maWd1
cmF0aW9uLnRyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID4gMTUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
aWYgKCp2aWRlb0NvbmZpZ3VyYXRpb24udHJhbnNmZXJGdW5jdGlvbiA9PSBUcmFuc2ZlckZ1bmN0
aW9uOjpQUSAmJiBjb2RlY0NvbmZpZ3VyYXRpb24udHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MgIT0g
MTYpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCp2aWRlb0NvbmZpZ3VyYXRpb24udHJhbnNmZXJG
dW5jdGlvbiA9PSBUcmFuc2ZlckZ1bmN0aW9uOjpITEcgJiYgY29kZWNDb25maWd1cmF0aW9uLnRy
YW5zZmVyQ2hhcmFjdGVyaXN0aWNzICE9IDE4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYg
KHZpZGVvQ29uZmlndXJhdGlvbi5jb2xvckdhbXV0KSB7CiAgICAgICAgIGlmICgqdmlkZW9Db25m
aWd1cmF0aW9uLmNvbG9yR2FtdXQgPT0gQ29sb3JHYW11dDo6UmVjMjAyMCAmJiBjb2RlY0NvbmZp
Z3VyYXRpb24uY29sb3JQcmltYXJpZXMgIT0gOSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbyBpbmZvOwpAQCAtMjU2LDEyICsyNTYsMTIgQEAgT3B0aW9uYWw8
TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZVZQUGFyYW1ldGVycyhjb25zdCBWUENvZGVj
Q29uZmlndXJhdGlvblIKICAgICBpZiAodnA5SGFyZHdhcmVEZWNvZGVyQXZhaWxhYmxlKCkpIHsK
ICAgICAgICAgLy8gSFcgVlA5IERlY29kZXIgZG9lcyBub3Qgc3VwcG9ydCBhbHBoYSBjaGFubmVs
OgogICAgICAgICBpZiAodmlkZW9Db25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbCAmJiAqdmlkZW9D
b25maWd1cmF0aW9uLmFscGhhQ2hhbm5lbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIC8vIEhXIFZQ
OSBEZWNvZGVyIGNhbiBzdXBwb3J0IHVwIHRvIDRLIEAgMTIwIG9yIDhLIEAgMzAKICAgICAgICAg
YXV0byByZXNvbHV0aW9uID0gcmVzb2x1dGlvbkNhdGVnb3J5KHsgKGZsb2F0KXZpZGVvQ29uZmln
dXJhdGlvbi53aWR0aCwgKGZsb2F0KXZpZGVvQ29uZmlndXJhdGlvbi5oZWlnaHQgfSk7CiAgICAg
ICAgIGlmIChyZXNvbHV0aW9uID4gUmVzb2x1dGlvbkNhdGVnb3J5OjpSXzhLKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmIChyZXNvbHV0aW9uID09IFJlc29sdXRpb25DYXRlZ29yeTo6Ul84SyAmJiB2
aWRlb0NvbmZpZ3VyYXRpb24uZnJhbWVyYXRlID4gMzApCiAgICAgICAgICAgICBpbmZvLnNtb290
aCA9IGZhbHNlOwogICAgICAgICBlbHNlIGlmIChyZXNvbHV0aW9uIDw9IFJlc29sdXRpb25DYXRl
Z29yeTo6Ul80SyAmJiB2aWRlb0NvbmZpZ3VyYXRpb24uZnJhbWVyYXRlID4gMTIwKQpAQCAtMzE1
LDcgKzMxNSw3IEBAIE9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVWUFBh
cmFtZXRlcnMoY29uc3QgVlBDb2RlY0NvbmZpZ3VyYXRpb25SCiAgICAgfQogCiAgICAgaWYgKCFo
YXM0a1NjcmVlbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKICAgICByZXR1cm4g
aW5mbzsKQEAgLTYxNiw3ICs2MTYsNyBAQCBPcHRpb25hbDxWUDhGcmFtZUhlYWRlcj4gcGFyc2VW
UDhGcmFtZUhlYWRlcih1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpegogCiAgICAg
Ly8gQmFpbCBpZiB0aGUgaGVhZGVyIGlzIGJlbG93IGEgbWluaW11bSBzaXplCiAgICAgaWYgKGZy
YW1lU2l6ZSA8IDExKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVlA4RnJhbWVIZWFkZXIgaGVhZGVyOwogICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTE7CkBAIC02MjYsNyArNjI2LDcgQEAgT3B0aW9uYWw8VlA4RnJhbWVI
ZWFkZXI+IHBhcnNlVlA4RnJhbWVIZWFkZXIodWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXoKIAogICAgIGF1dG8gdW5jb21wcmVzc2VkQ2h1bmsgPSB2aWV3LT5nZXQ8dWludDMyX3Q+
KDAsIHRydWUsICZzdGF0dXMpOwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaGVhZGVyLmtl
eWZyYW1lID0gdW5jb21wcmVzc2VkQ2h1bmsgJiAweDgwMDAwMDAwOwogICAgIGhlYWRlci52ZXJz
aW9uID0gKHVuY29tcHJlc3NlZENodW5rID4+IDI4KSAmIDB4NzsKQEAgLTYzOCwzMyArNjM4LDMz
IEBAIE9wdGlvbmFsPFZQOEZyYW1lSGVhZGVyPiBwYXJzZVZQOEZyYW1lSGVhZGVyKHVpbnQ4X3Qq
IGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6CiAKICAgICBhdXRvIHN0YXJ0Q29kZTAgPSB2aWV3
LT5nZXQ8dWludDhfdD4oMywgdHJ1ZSwgJnN0YXR1cyk7CiAgICAgaWYgKCFzdGF0dXMgfHwgc3Rh
cnRDb2RlMCAhPSAweDlkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBzdGFydENvZGUxID0gdmlldy0+Z2V0PHVp
bnQ4X3Q+KDQsIHRydWUsICZzdGF0dXMpOwogICAgIGlmICghc3RhdHVzIHx8IHN0YXJ0Q29kZTEg
IT0gMHgwMSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3RhcnRDb2RlMiA9IHZpZXctPmdldDx1aW50OF90Pig1
LCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cyB8fCBzdGFydENvZGUyICE9IDB4MmEp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBhdXRvIGhvcml6b250YWxBbmRXaWR0aEZpZWxkID0gdmlldy0+Z2V0PHVpbnQx
Nl90Pig2LCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cykKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGhlYWRl
ci5ob3Jpem9udGFsU2NhbGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihob3Jpem9udGFsQW5kV2lk
dGhGaWVsZCA+PiAxNCk7CiAgICAgaGVhZGVyLndpZHRoID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KGhvcml6b250YWxBbmRXaWR0aEZpZWxkICYgMHgzRkZGKTsKIAogICAgIGF1dG8gdmVydGljYWxB
bmRIZWlnaHRGaWVsZCA9IHZpZXctPmdldDx1aW50MTZfdD4oOCwgdHJ1ZSwgJnN0YXR1cyk7CiAg
ICAgaWYgKCFzdGF0dXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBoZWFkZXIudmVydGljYWxTY2FsZSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHZlcnRpY2FsQW5kSGVpZ2h0RmllbGQgPj4gMTQpOwogICAgIGhlYWRlci5o
ZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4odmVydGljYWxBbmRIZWlnaHRGaWVsZCAmIDB4
M0ZGRik7CiAKICAgICBhdXRvIGNvbG9yU3BhY2VBbmRDbGFtcGluZ0ZpZWxkID0gdmlldy0+Z2V0
PHVpbnQ4X3Q+KDEwLCB0cnVlLCAmc3RhdHVzKTsKICAgICBpZiAoIXN0YXR1cykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGhlYWRlci5jb2xvclNwYWNlID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAweDgwOwog
ICAgIGhlYWRlci5uZWVkc0NsYW1waW5nID0gY29sb3JTcGFjZUFuZENsYW1waW5nRmllbGQgJiAw
eDQwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
VmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1ZpZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKaW5kZXggNDg4NjU0ODQyMjc0ZTVh
OWE4OWU5M2JmNWNjMzU4OWVmZWU5ZjI5ZS4uM2ViMjgxODYwODAyMGY5ZjQwYTQ4ODZlMjY1ZjU0
ZTZmZjJkYzM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvVmlkZW9UcmFja1ByaXZhdGVXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9WaWRlb1RyYWNrUHJpdmF0ZVdlYk0uY3BwCkBAIC01NSwxNCAr
NTUsMTQgQEAgT3B0aW9uYWw8dWludDY0X3Q+IFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6dHJhY2tV
SUQoKSBjb25zdAogewogICAgIGlmIChtX3RyYWNrLnRyYWNrX3VpZC5pc19wcmVzZW50KCkpCiAg
ICAgICAgIHJldHVybiBtX3RyYWNrLnRyYWNrX3VpZC52YWx1ZSgpOwotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8Ym9vbD4g
VmlkZW9UcmFja1ByaXZhdGVXZWJNOjpkZWZhdWx0RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1fdHJhY2suaXNfZW5hYmxlZC5pc19wcmVzZW50KCkpCiAgICAgICAgIHJldHVybiBtX3RyYWNr
LmlzX2VuYWJsZWQudmFsdWUoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIEF0b21TdHJpbmcgVmlkZW9UcmFja1ByaXZhdGVXZWJNOjps
YWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9Gb250Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udENvcmVUZXh0LmNwcAppbmRleCBmODIzODExMWI0ZDNiNTZlM2I0
YThmNzVlOTZjNTg3ZjQ5MGViMWQyLi5lYzQ5OGQ0YWUwM2MzZGE5ZmQyNDY2N2RjZTZmNDMxYTE3
MzdmMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250Q29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRDb3JlVGV4dC5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvbmFsPENGU3RyaW5nUmVmPiBvcGVuVHlwZUZlYXR1cmUoQ0ZEaWN0aW9uYXJ5
UmVmIGZlYXR1cmUpCiAgICAgQ0ZOdW1iZXJSZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxDRk51bWJl
clJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZmVhdHVyZSwga0NURm9udE9wZW5UeXBlRmVhdHVy
ZVZhbHVlKSk7CiAgICAgYXV0byBzdWNjZXNzID0gQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZSwga0NG
TnVtYmVySW50VHlwZSwgJnJhd1ZhbHVlKTsKICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1
Y2Nlc3MpOwotICAgIHJldHVybiByYXdWYWx1ZSA/IE9wdGlvbmFsPENGU3RyaW5nUmVmPih0YWcp
IDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiByYXdWYWx1ZSA/IE9wdGlvbmFsPENGU3RyaW5n
UmVmPih0YWcpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgaW5saW5lIHN0ZDo6cGFpcjxp
bnQsIGludD4gdHJ1ZVR5cGVGZWF0dXJlKENGRGljdGlvbmFyeVJlZiBmZWF0dXJlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGQ1YjlmN2UxZGQ4MGI4ZGUz
MGZiMzE5YmE4YzE4NzdkODY5ZDZmNWUuLjVjNDI0NTQxM2I0MDEzYjRiYjU3MTg4MWQwZGI3NjY0
ZDUzZDYxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBPcHRpb25hbDxzdGQ6OnNpemVf
dD4gcmVxdWlyZWRTaXplRm9ySXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGVuY29kZUl0
ZW1PdXRPZkxpbmUoY29uc3QgRGlzcGxheUxpc3RJdGVtJikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCmluZGV4IGYxMTdjZmE4MzkzNjA4OWU3MWZkMDVhYjc4NjQ4YmQyNDhk
NWU3OTAuLjgzOTRiZDM4MmY5MjU1YjM5NDM0MjNkMTkzYTAwOWNjNzhhNTg1ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMzgzLDcgKzM4Myw3IEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3M+IGNoYW5nZUZsYWdzOwogICAg
IGRlY29kZXIgPj4gY2hhbmdlRmxhZ3M7CiAgICAgaWYgKCFjaGFuZ2VGbGFncykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwogICAgIHN0YXRlQ2hhbmdl
Lm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7CkBAIC0zOTQsNyArMzk0LDcgQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAo
c3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7CiAgICAgICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBH
cmFkaWVudDo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIXN0cm9rZUdyYWRpZW50KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VHcmFkaWVudCA9
IFdURk1vdmUoKnN0cm9rZUdyYWRpZW50KTsKICAgICB9CkBAIC00MDMsMTIgKzQwMywxMiBAQCBP
cHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKICAgICAgICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI7CiAgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsK
ICAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdHJva2VQYXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCAqcGFyYW1ldGVycyB9OwogICAgIH0KQEAgLTQxNiw3ICs0MTYsNyBAQCBP
cHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
IGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpKSB7CiAgICAgICAgIGF1dG8gZmlsbEdyYWRpZW50ID0g
R3JhZGllbnQ6OmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFmaWxsR3JhZGllbnQpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdU
Rk1vdmUoKmZpbGxHcmFkaWVudCk7CiAgICAgfQpAQCAtNDI1LDEyICs0MjUsMTIgQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
OwogICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAg
ICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgZmlsbFBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsICpwYXJhbWV0ZXJzIH07CiAgICAgfQpAQCAtNDM5LDI4ICs0MzksMjggQEAgT3B0aW9u
YWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
T3B0aW9uYWw8RmxvYXRTaXplPiBzaGFkb3dPZmZzZXQ7CiAgICAgICAgIGRlY29kZXIgPj4gc2hh
ZG93T2Zmc2V0OwogICAgICAgICBpZiAoIXNoYWRvd09mZnNldCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gKnNoYWRvd09mZnNldDsKIAog
ICAgICAgICBPcHRpb25hbDxmbG9hdD4gc2hhZG93Qmx1cjsKICAgICAgICAgZGVjb2RlciA+PiBz
aGFkb3dCbHVyOwogICAgICAgICBpZiAoIXNoYWRvd0JsdXIpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0JsdXIgPSAqc2hhZG93Qmx1cjsKIAogICAgICAg
ICBPcHRpb25hbDxDb2xvcj4gc2hhZG93Q29sb3I7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhZG93
Q29sb3I7CiAgICAgICAgIGlmICghc2hhZG93Q29sb3IpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd0NvbG9yID0gKnNoYWRvd0NvbG9yOwogCiAgICAgICAg
IE9wdGlvbmFsPFNoYWRvd1JhZGl1c01vZGU+IHNoYWRvd1JhZGl1c01vZGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gc2hhZG93UmFkaXVzTW9kZTsKICAgICAgICAgaWYgKCFzaGFkb3dSYWRpdXNNb2Rl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dSYWRpdXNN
b2RlID0gV1RGTW92ZSgqc2hhZG93UmFkaXVzTW9kZSk7CiAgICAgfQpAQCAtNDY5LDcgKzQ2OSw3
IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgICAgIE9wdGlvbmFsPGZsb2F0PiBzdHJva2VUaGlja25lc3M7CiAgICAgICAgIGRlY29k
ZXIgPj4gc3Ryb2tlVGhpY2tuZXNzOwogICAgICAgICBpZiAoIXN0cm9rZVRoaWNrbmVzcykKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0g
KnN0cm9rZVRoaWNrbmVzczsKICAgICB9CkBAIC00NzgsNyArNDc4LDcgQEAgT3B0aW9uYWw8U2V0
U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9u
YWw8VGV4dERyYXdpbmdNb2RlRmxhZ3M+IHRleHREcmF3aW5nTW9kZTsKICAgICAgICAgZGVjb2Rl
ciA+PiB0ZXh0RHJhd2luZ01vZGU7CiAgICAgICAgIGlmICghdGV4dERyYXdpbmdNb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS50ZXh0RHJhd2luZ01vZGUgPSBX
VEZNb3ZlKCp0ZXh0RHJhd2luZ01vZGUpOwogICAgIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBPcHRp
b25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICBPcHRpb25hbDxDb2xvcj4gc3Ryb2tlQ29sb3I7CiAgICAgICAgIGRlY29kZXIgPj4gc3Ryb2tl
Q29sb3I7CiAgICAgICAgIGlmICghc3Ryb2tlQ29sb3IpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZUNvbG9yID0gKnN0cm9rZUNvbG9yOwogICAgIH0KQEAg
LTQ5Niw3ICs0OTYsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxDb2xvcj4gZmlsbENvbG9yOwogICAgICAg
ICBkZWNvZGVyID4+IGZpbGxDb2xvcjsKICAgICAgICAgaWYgKCFmaWxsQ29sb3IpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxDb2xvciA9ICpmaWxsQ29sb3I7
CiAgICAgfQpAQCAtNTA0LDcgKzUwNCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVN0eWxlQ2hhbmdlKSkgewog
ICAgICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdHJva2VTdHlsZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0
YXRlLnN0cm9rZVN0eWxlID0gc3Ryb2tlU3R5bGU7CiAgICAgfQpAQCAtNTEzLDcgKzUxMyw3IEBA
IE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgICAgIE9wdGlvbmFsPFdpbmRSdWxlPiBmaWxsUnVsZTsKICAgICAgICAgZGVjb2RlciA+PiBm
aWxsUnVsZTsKICAgICAgICAgaWYgKCFmaWxsUnVsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFJ1bGUgPSAqZmlsbFJ1bGU7CiAgICAgfQpAQCAtNTIyLDcg
KzUyMiw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgICAgIE9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBjb21wb3NpdGVPcGVy
YXRvcjsKICAgICAgICAgZGVjb2RlciA+PiBjb21wb3NpdGVPcGVyYXRvcjsKICAgICAgICAgaWYg
KCFjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuY29tcG9zaXRlT3BlcmF0b3IgPSAqY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgfQpAQCAt
NTMxLDcgKzUzMSw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwogICAg
ICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKICAgICAgICAgaWYgKCFibGVuZE1vZGUpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmJsZW5kTW9kZSA9ICpibGVuZE1v
ZGU7CiAgICAgfQpAQCAtNTQwLDcgKzU0MCw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIE9wdGlvbmFsPEludGVycG9sYXRp
b25RdWFsaXR5PiBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAgICAgICBkZWNvZGVyID4+
IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAgICAgIGlmICghaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSA9ICppbWFnZUludGVycG9sYXRpb25RdWFsaXR5OwogICAg
IH0KQEAgLTU0OSw3ICs1NDksNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxmbG9hdD4gYWxwaGE7CiAgICAg
ICAgIGRlY29kZXIgPj4gYWxwaGE7CiAgICAgICAgIGlmICghYWxwaGEpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmFscGhhID0gKmFscGhhOwogICAgIH0KQEAgLTU1
OCw3ICs1NTgsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogICAgICAgICBPcHRpb25hbDxib29sPiBzaG91bGRBbnRpYWxpYXM7CiAgICAg
ICAgIGRlY29kZXIgPj4gc2hvdWxkQW50aWFsaWFzOwogICAgICAgICBpZiAoIXNob3VsZEFudGlh
bGlhcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hvdWxkQW50
aWFsaWFzID0gKnNob3VsZEFudGlhbGlhczsKICAgICB9CkBAIC01NjcsNyArNTY3LDcgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkU21vb3RoRm9udHM7CiAgICAgICAgIGRlY29kZXIgPj4g
c2hvdWxkU21vb3RoRm9udHM7CiAgICAgICAgIGlmICghc2hvdWxkU21vb3RoRm9udHMpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0g
KnNob3VsZFNtb290aEZvbnRzOwogICAgIH0KQEAgLTU3Niw3ICs1NzYsNyBAQCBPcHRpb25hbDxT
ZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBPcHRp
b25hbDxib29sPiBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7CiAgICAgICAgIGRlY29kZXIg
Pj4gc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOwogICAgICAgICBpZiAoIXNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3Rh
dGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gKnNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250czsKICAgICB9CkBAIC01ODUsNyArNTg1LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0
YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgICAgIGRlY29kZXIgPj4gc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXM7CiAgICAgICAgIGlmICghc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
ID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgIH0KQEAgLTY1MCwxMiArNjUwLDEyIEBA
IE9wdGlvbmFsPFNldExpbmVEYXNoPiBTZXRMaW5lRGFzaDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8RGFzaEFycmF5PiBkYXNoQXJyYXk7CiAgICAgZGVjb2RlciA+PiBk
YXNoQXJyYXk7CiAgICAgaWYgKCFkYXNoQXJyYXkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4g
ZGFzaE9mZnNldDsKICAgICBkZWNvZGVyID4+IGRhc2hPZmZzZXQ7CiAgICAgaWYgKCFkYXNoT2Zm
c2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpkYXNoQXJyYXksICpkYXNoT2Zmc2V0IH19OwogfQpA
QCAtODEwLDcgKzgxMCw3IEBAIE9wdGlvbmFsPENsaXBPdXRUb1BhdGg+IENsaXBPdXRUb1BhdGg6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFBhdGg+IHBhdGg7CiAgICAg
ZGVjb2RlciA+PiBwYXRoOwogICAgIGlmICghcGF0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZN
b3ZlKCpwYXRoKSB9fTsKIH0KQEAgLTg1OSwxMiArODU5LDEyIEBAIE9wdGlvbmFsPENsaXBQYXRo
PiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4g
cGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8V2luZFJ1bGU+IHdpbmRSdWxlOwogICAgIGRlY29kZXIgPj4gd2luZFJ1bGU7CiAgICAg
aWYgKCF3aW5kUnVsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpwYXRoKSwgKndpbmRS
dWxlIH19OwogfQpAQCAtOTEwLDEyICs5MTAsMTIgQEAgT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYK
ICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOwogICAgIGRlY29kZXIgPj4gZGVz
dGluYXRpb247CiAgICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7
CiAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwg
V1RGTW92ZSgqY29sb3JTcGFjZSkgfX07CiB9CkBAIC05NTYsNyArOTU2LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JikgY29uc3Q7CiAK
LSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsg
fQogCiBwcml2YXRlOgpAQCAtOTg3LDM1ICs5ODcsMzUgQEAgT3B0aW9uYWw8RHJhd0dseXBocz4g
RHJhd0dseXBoczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBmb250SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGZv
bnRJZGVudGlmaWVyOwogICAgIGlmICghZm9udElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4Pj4gZ2x5cGhzOwogICAgIGRlY29kZXIgPj4g
Z2x5cGhzOwogICAgIGlmICghZ2x5cGhzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMTI4Pj4gYWR2YW5jZXM7CiAgICAgZGVjb2RlciA+PiBhZHZhbmNlczsK
ICAgICBpZiAoIWFkdmFuY2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGdseXBocy0+c2l6ZSgpICE9IGFkdmFu
Y2VzLT5zaXplKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGJvdW5kczsKICAgICBk
ZWNvZGVyID4+IGJvdW5kczsKICAgICBpZiAoIWJvdW5kcykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZs
b2F0UG9pbnQ+IGxvY2FsQW5jaG9yOwogICAgIGRlY29kZXIgPj4gbG9jYWxBbmNob3I7CiAgICAg
aWYgKCFsb2NhbEFuY2hvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRTbW9vdGhpbmdNb2RlPiBz
bW9vdGhpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gc21vb3RoaW5nTW9kZTsKICAgICBpZiAoIXNt
b290aGluZ01vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmZvbnRJZGVudGlmaWVyLCBXVEZNb3Zl
KCpnbHlwaHMpLCBXVEZNb3ZlKCphZHZhbmNlcyksICpib3VuZHMsICpsb2NhbEFuY2hvciwgKnNt
b290aGluZ01vZGUgfX07CiB9CkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBwdWJsaWM6CiAKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvblJlY3Q7IH0KIAogcHJpdmF0ZToKQEAgLTEwNzksNyArMTA3OSw3IEBAIHB1YmxpYzoK
ICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBj
b25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25SZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMTExLDcgKzExMTEsNyBAQCBwdWJs
aWM6CiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdl
JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6CkBAIC0xMTQwLDggKzExNDAsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25z
dCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gc3RkOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMo
KSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJpdmF0ZToKICAgICBmbG9hdCBt
X29wYWNpdHk7CkBAIC0xMTU1LDggKzExNTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2Nh
bEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9Cisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIH07CiAKIGNsYXNzIERyYXdSZWN0IHsKQEAgLTExNzYsNyArMTE3Niw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAog
cHJpdmF0ZToKQEAgLTEyMDEsNyArMTIwMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTEyMjgsNyArMTIyOCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTEyNjAsMzIgKzEyNjAsMzIgQEAgT3B0aW9uYWw8
RHJhd0xpbmVzRm9yVGV4dD4gRHJhd0xpbmVzRm9yVGV4dDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRQb2ludD4gYmxvY2tMb2NhdGlvbjsKICAgICBkZWNvZGVy
ID4+IGJsb2NrTG9jYXRpb247CiAgICAgaWYgKCFibG9ja0xvY2F0aW9uKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8RmxvYXRTaXplPiBsb2NhbEFuY2hvcjsKICAgICBkZWNvZGVyID4+IGxvY2FsQW5jaG9y
OwogICAgIGlmICghbG9jYWxBbmNob3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxEYXNoQXJyYXk+IHdp
ZHRoczsKICAgICBkZWNvZGVyID4+IHdpZHRoczsKICAgICBpZiAoIXdpZHRocykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPGZsb2F0PiB0aGlja25lc3M7CiAgICAgZGVjb2RlciA+PiB0aGlja25lc3M7CiAg
ICAgaWYgKCF0aGlja25lc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwcmludGluZzsKICAg
ICBkZWNvZGVyID4+IHByaW50aW5nOwogICAgIGlmICghcHJpbnRpbmcpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxib29sPiBkb3VibGVMaW5lczsKICAgICBkZWNvZGVyID4+IGRvdWJsZUxpbmVzOwogICAg
IGlmICghZG91YmxlTGluZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmJsb2NrTG9jYXRpb24sICps
b2NhbEFuY2hvciwgKnRoaWNrbmVzcywgKndpZHRocywgKnByaW50aW5nLCAqZG91YmxlTGluZXMg
fX07CiB9CkBAIC0xMzE4LDcgKzEzMTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxC
b3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAg
IE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CiAKIHByaXZhdGU6CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xMzcy
LDcgKzEzNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4g
bV9wYXRoLmZhc3RCb3VuZGluZ1JlY3QoKTsgfQogCiBwcml2YXRlOgpAQCAtMTM5MSw3ICsxMzkx
LDcgQEAgT3B0aW9uYWw8RHJhd1BhdGg+IERyYXdQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxQYXRoPiBwYXRoOwogICAgIGRlY29kZXIgPj4gcGF0aDsKICAgICBp
ZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqcGF0aCkgfX07CiB9CkBAIC0x
NDI4LDcgKzE0MjgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHBy
aXZhdGU6CkBAIC0xNDUzLDIyICsxNDUzLDIyIEBAIE9wdGlvbmFsPERyYXdGb2N1c1JpbmdQYXRo
PiBEcmF3Rm9jdXNSaW5nUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9u
YWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAgICAgaWYgKCFwYXRoKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8ZmxvYXQ+IHdpZHRoOwogICAgIGRlY29kZXIgPj4gd2lkdGg7CiAgICAg
aWYgKCF3aWR0aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGZsb2F0PiBvZmZzZXQ7CiAgICAgZGVjb2Rl
ciA+PiBvZmZzZXQ7CiAgICAgaWYgKCFvZmZzZXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxDb2xvcj4g
Y29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAoIWNvbG9yKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpLCAqd2lkdGgsICpvZmZzZXQsICpjb2xvciB9fTsKIH0K
QEAgLTE0ODgsNyArMTQ4OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Z2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9u
YWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKQEAgLTE1MTYsMjIgKzE1MTYsMjIgQEAgT3B0aW9uYWw8RHJhd0ZvY3VzUmluZ1JlY3RzPiBE
cmF3Rm9jdXNSaW5nUmVjdHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFs
PFZlY3RvcjxGbG9hdFJlY3Q+PiByZWN0czsKICAgICBkZWNvZGVyID4+IHJlY3RzOwogICAgIGlm
ICghcmVjdHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxmbG9hdD4gd2lkdGg7CiAgICAgZGVjb2RlciA+
PiB3aWR0aDsKICAgICBpZiAoIXdpZHRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IG9mZnNl
dDsKICAgICBkZWNvZGVyID4+IG9mZnNldDsKICAgICBpZiAoIW9mZnNldCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlmICghY29s
b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnJlY3RzLCAqd2lkdGgsICpvZmZzZXQsICpjb2xvciB9
fTsKIH0KQEAgLTE1NTEsNyArMTU1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBj
b25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAogcHJpdmF0ZToKQEAgLTE1NzUsNyArMTU3NSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
QEAgLTE1OTksMTIgKzE1OTksMTIgQEAgT3B0aW9uYWw8RmlsbFJlY3RXaXRoQ29sb3I+IEZpbGxS
ZWN0V2l0aENvbG9yOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0OwogICAgIGlmICghcmVjdCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPENvbG9yPiBjb2xvcjsKICAgICBkZWNvZGVyID4+IGNvbG9yOwogICAgIGlm
ICghY29sb3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnJlY3QsICpjb2xvciB9fTsKIH0KQEAgLTE2
MjIsNyArMTYyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFs
Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVy
biBtX3JlY3Q7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKQEAgLTE2NDYsMTEgKzE2NDYsMTEgQEAgT3B0aW9uYWw8RmlsbFJlY3RX
aXRoR3JhZGllbnQ+IEZpbGxSZWN0V2l0aEdyYWRpZW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3Q7CiAgICAgZGVjb2RlciA+PiByZWN0Owog
ICAgIGlmICghcmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6ZGVjb2Rl
KGRlY29kZXIpOwogICAgIGlmICghZ3JhZGllbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKnJlY3Qs
IGdyYWRpZW50LT5nZXQoKSB9fTsKIH0KQEAgLTE2NzYsNyArMTY3Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTE3MDQsMjIg
KzE3MDQsMjIgQEAgT3B0aW9uYWw8RmlsbENvbXBvc2l0ZWRSZWN0PiBGaWxsQ29tcG9zaXRlZFJl
Y3Q6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gcmVj
dDsKICAgICBkZWNvZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8Q29sb3I+IGNvbG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdG9yPiBvcDsKICAgICBkZWNvZGVyID4+
IG9wOwogICAgIGlmICghb3ApCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxCbGVuZE1vZGU+IGJsZW5kTW9k
ZTsKICAgICBkZWNvZGVyID4+IGJsZW5kTW9kZTsKICAgICBpZiAoIWJsZW5kTW9kZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIHJldHVybiB7eyAqcmVjdCwgKmNvbG9yLCAqb3AsICpibGVuZE1vZGUgfX07CiB9CkBAIC0x
NzQ2LDcgKzE3NDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9yZWN0LnJlY3QoKTsgfQogCiBwcml2YXRlOgpAQCAtMTc2OSwxNyArMTc2OSwxNyBAQCBP
cHRpb25hbDxGaWxsUm91bmRlZFJlY3Q+IEZpbGxSb3VuZGVkUmVjdDo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8RmxvYXRSb3VuZGVkUmVjdD4gcmVjdDsKICAgICBkZWNv
ZGVyID4+IHJlY3Q7CiAgICAgaWYgKCFyZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Q29sb3I+IGNv
bG9yOwogICAgIGRlY29kZXIgPj4gY29sb3I7CiAgICAgaWYgKCFjb2xvcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPEJsZW5kTW9kZT4gYmxlbmRNb2RlOwogICAgIGRlY29kZXIgPj4gYmxlbmRNb2RlOwog
ICAgIGlmICghYmxlbmRNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0LCAqY29sb3IsICpi
bGVuZE1vZGUgfX07CiB9CkBAIC0xODA2LDcgKzE4MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZhdGU6CkBAIC0xODI5LDE3
ICsxODI5LDE3IEBAIE9wdGlvbmFsPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPiBGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiByZWN0OwogICAgIGRlY29kZXIgPj4gcmVjdDsKICAgICBpZiAoIXJlY3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxGbG9hdFJvdW5kZWRSZWN0PiByb3VuZGVkSG9sZVJlY3Q7CiAgICAgZGVjb2Rl
ciA+PiByb3VuZGVkSG9sZVJlY3Q7CiAgICAgaWYgKCFyb3VuZGVkSG9sZVJlY3QpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxDb2xvcj4gY29sb3I7CiAgICAgZGVjb2RlciA+PiBjb2xvcjsKICAgICBpZiAo
IWNvbG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyZWN0LCAqcm91bmRlZEhvbGVSZWN0LCAqY29s
b3IgfX07CiB9CkBAIC0xODgzLDcgKzE4ODMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQog
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3QgeyByZXR1cm4gcGF0aCgpLmZhc3RCb3VuZGluZ1JlY3QoKTsgfQogfTsKIApAQCAt
MTkxMiw3ICsxOTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29u
c3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9i
YWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsgcmV0
dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTE5MzEsNyAr
MTkzMSw3IEBAIE9wdGlvbmFsPEZpbGxQYXRoPiBGaWxsUGF0aDo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8UGF0aD4gcGF0aDsKICAgICBkZWNvZGVyID4+IHBhdGg7CiAg
ICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBhdGgpIH19OwogfQpA
QCAtMTk1MSw3ICsxOTUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBn
bG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdDsgfQogCiBwcml2YXRlOgpAQCAtMTk5OSwxMiArMTk5OSwxMiBAQCBPcHRp
b25hbDxHZXRQaXhlbEJ1ZmZlcj4gR2V0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIE9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CiAgICAgZGVjb2RlciA+PiBzcmNS
ZWN0OwogICAgIGlmICghc3JjUmVjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9y
bWF0PiBvdXRwdXRGb3JtYXQ7CiAgICAgZGVjb2RlciA+PiBvdXRwdXRGb3JtYXQ7CiAgICAgaWYg
KCFvdXRwdXRGb3JtYXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqb3V0cHV0Rm9ybWF0
KSwgKnNyY1JlY3QgfX07CiB9CkBAIC0yMDMwLDcgKzIwMzAsNyBAQCBwdWJsaWM6CiAgICAgSW50
UG9pbnQgZGVzdFBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0UG9pbnQ7IH0KICAgICBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RGb3Jt
YXQ7IH0KIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIHt7IG1fZGVzdFBvaW50LCBtX3NyY1JlY3Quc2l6ZSgpIH19OyB9
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CkBAIC0yMDYyLDE5ICsyMDYyLDE5IEBAIE9wdGlvbmFsPFB1dFBpeGVsQnVmZmVyPiBQdXRQ
aXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAKICAgICBkZWNvZGVyID4+IHBp
eGVsQnVmZmVyOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkZWNvZGVyID4+IHNy
Y1JlY3Q7CiAgICAgaWYgKCFzcmNSZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZGVjb2RlciA+PiBkZXN0UG9pbnQ7
CiAgICAgaWYgKCFkZXN0UG9pbnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkZWNvZGVyID4+IGRlc3RGb3JtYXQ7CiAg
ICAgaWYgKCFkZXN0Rm9ybWF0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnBpeGVsQnVm
ZmVyKSwgKnNyY1JlY3QsICpkZXN0UG9pbnQsICpkZXN0Rm9ybWF0IH19OwogfQpAQCAtMjA5NSw3
ICsyMDk1LDcgQEAgcHVibGljOgogCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpu
dWxsb3B0OyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHsgbV9kZXN0aW5hdGlv
biB9OyB9CiAKIHByaXZhdGU6CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0yMTQ2LDcgKzIxNDYsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0yMTc0LDcgKzIx
NzQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygp
IGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiB9OwogCkBAIC0yMjAz
LDcgKzIyMDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJv
dW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZh
dGU6CkBAIC0yMjIyLDcgKzIyMjIsNyBAQCBPcHRpb25hbDxTdHJva2VQYXRoPiBTdHJva2VQYXRo
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxQYXRoPiBwYXRoOwogICAg
IGRlY29kZXIgPj4gcGF0aDsKICAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RG
TW92ZSgqcGF0aCkgfX07CiB9CkBAIC0yMjQyLDcgKzIyNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAKIHByaXZhdGU6CkBAIC0yMjY0LDcgKzIyNjQsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCi0gICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxv
cHQ7IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9yZWN0OyB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggYjA0OTBk
MDM0ODU3M2UzZTdlMGU0MWNmMzk5ZGFkNDE1ZWY2MGM3MS4uMGFlZjEyOGFiM2I1YjRiNWIwMjAx
ODAzMzIyYzA0NDkzMTY3ZTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJh
dG9yLmNwcApAQCAtNDYsNyArNDYsNyBAQCBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBk
YXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KEl0ZW1UeXBlIGl0ZW1UeXBlKSAtPgogICAgICAg
ICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNzOwogCiAgICAgaWYgKCFpc0RyYXdp
bmdJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxv
cHQ7CisgICAgICAgIG1fY3VycmVudEV4dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5oCmluZGV4IDBjYmY1ZjM2OTU3NThiMjFhMzY3YzdkOTgzNjBi
YzEyZjNhNjBiMWMuLjNmNmJiYmQ1ZDg4N2RlNTg2ZGU3MDhhMTFmMzdhYWUwODQ1MzFmNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApAQCAtNjMsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4ge3sKICAgICAg
ICAgICAgIEl0ZW1IYW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0sCiAgICAgICAgICAg
ICBtX2N1cnJlbnRFeHRlbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCAyOTJjYjk2OGYyNzk3Y2E5OTc2OTc5YjY0ZDMxMzg2ZDAxODFkNjY4Li42MWJmNzlkNDgw
OGRhNjBjYmE5NWE0MzAxMzYwMDVkZjZhYTRmMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ZWxzZSBpZiAoYXV0byByZWN0ID0gaXRlbS5nbG9iYWxCb3VuZHMoKSkKICAgICAgICAgICAgICAg
ICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50KCpyZWN0KTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rpc3BsYXlMaXN0LmFkZERyYXdpbmdJdGVtRXh0ZW50
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgbV9kaXNwbGF5TGlzdC5hZGREcmF3aW5n
SXRlbUV4dGVudChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggMTA3ZjIwZWM0ZjFjNDEyZjgwMWU4
MjBjMDRiMDcyOGYyNDg4M2FhMy4uODdlMjM0MjFjYTI5OTM0YTdkNzg5ZGM1MzI1N2U0NWU3MDhk
MWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogICAgIGF1dG8gcmVzb3VyY2VJZGVu
dGlmaWVyID0gaW1hZ2VCdWZmZXJJdGVtLmltYWdlQnVmZmVySWRlbnRpZmllcigpOwogICAgIGlm
IChhdXRvKiBpbWFnZUJ1ZmZlciA9IGltYWdlQnVmZmVycy5nZXQocmVzb3VyY2VJZGVudGlmaWVy
KSkgewogICAgICAgICBpbWFnZUJ1ZmZlckl0ZW0uYXBwbHkoY29udGV4dCwgKmltYWdlQnVmZmVy
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KQEAgLTcyLDcg
KzcyLDcgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWMKICAgICBhdXRvIHJlc291cmNlSWRlbnRp
ZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byog
aW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAg
bmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIHJl
dHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIGlubGluZSBzdGF0
aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRl
bShHcmFwaGljc0NvCiAgICAgfQogCiAgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0
cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRlcm5JbWFnZSk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgpA
QCAtMTA3LDcgKzEwNyw3IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAgICAgYXV0byByZXNv
dXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRv
KiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgZm9udEl0
ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOwogfQpAQCAtMTE1LDY1ICsxMTUsNjUgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250
ZXgKIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0
ZW0pCiB7CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgY29u
dGV4dCgpKSkKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
KyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKIAogICAgIGlm
IChpdGVtLmlzPERyYXdJbWFnZUJ1ZmZlcj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwotICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPENsaXBUb0ltYWdlQnVm
ZmVyPigpKSB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBt
X2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcikgfTsKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAg
ICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKICAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3Vy
Y2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKLSAgICAgICAg
cmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxE
cmF3R2x5cGhzPigpKSB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywg
aXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2Fj
aGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsK
LSAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAg
cmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAo
aXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNv
bnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8U2V0U3RhdGU+KCkpIHsKICAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJ
dGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCkpIHsKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQotICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgV1RGOjpu
dWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlk
SXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBp
dGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9tYXNrSW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5k
ZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOwog
ICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OwotICAgICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChp
dGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgewogICAgICAgICBpZiAoIW1fbWFz
a0ltYWdlQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52
YWxpZEl0ZW1PckV4dGVudCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgICAgICByZXR1cm4geyBT
dG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKICAg
ICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+
KCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZm
ZXIsIGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CiAgICAgfQog
CiAgICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0IH07CisgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQg
fTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBp
bml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1v
cnlEaXNwbGF5TGlzdC5jcHAKaW5kZXggOTgyMjJkZDk0Y2VmZmU1MDExMzQ2NDRmNGZmOWM1ODMx
OGY1OTU2OC4uMTJiMDI2NWE5YzkwM2QxMWM5ZmQ5YzE3NjY5MDA1ODJjNGQwZjhiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVt
b3J5RGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtNDgsNyArNDgsNyBAQCBP
cHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlz
dDo6UmVhZGluZ0NsaWVudDo6ZGVjbwogICAgIEl0ZW1IYW5kbGUgcmVzdWx0IHsgaGFuZGxlTG9j
YXRpb24gfTsKICAgICBpZiAoZGF0YUhhbmRsZS5zYWZlQ29weSh0eXBlLCByZXN1bHQpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5
TGlzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggMmEwZWU4MGNjYmIyZDllMmJiMDI5NDkxNzFm
YjQzZGNiYmUzMmQzYy4uMTVlMTliODgxODgxYmYxZDlkYjNkYWYwYWM4NTc3ZmEwZDMzNWUzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1
cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUdXJidWxlbmNlLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgRkVUdXJidWxlbmNl
OjpmaWxsUmVnaW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBwaXhlbEFycmF5LCBjb25zdCBQYWludGlu
Z0RhdGEmCiAgICAgZmlsdGVyUmVnaW9uLnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwog
ICAgIEZsb2F0UG9pbnQgcG9pbnQoMCwgZmlsdGVyUmVnaW9uLnkoKSArIHN0YXJ0WSk7CiAgICAg
aW50IGluZGV4T2ZQaXhlbENoYW5uZWwgPSBzdGFydFkgKiAoZmlsdGVyUmVnaW9uLndpZHRoKCkg
PDwgMik7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zyb20gPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKTsK
KyAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRl
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKIAogICAg
IGZvciAoaW50IHkgPSBzdGFydFk7IHkgPCBlbmRZOyArK3kpIHsKICAgICAgICAgcG9pbnQuc2V0
WShwb2ludC55KCkgKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCBjMDBiMjkxMjY2ZWFjYzg3
MWE4MTk5MDcyNDQ4MGRmNTllOWFjNjc5Li5lMjU5NjE3ZDExNDk4YWYwZjgwODMzMmI5MmE0YjNl
N2Y5Y2ZjMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0yNDcsOCArMjQ3LDggQEAgdm9pZCBG
aWx0ZXJFZmZlY3Q6OmZvcmNlVmFsaWRQcmVNdWx0aXBsaWVkUGl4ZWxzKCkKIHZvaWQgRmlsdGVy
RWZmZWN0OjpjbGVhclJlc3VsdCgpCiB7CiAgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IG51bGxw
dHI7Ci0gICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFdURjo6bnVsbG9wdDsKLSAgICBt
X3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3VubXVsdGlw
bGllZEltYWdlUmVzdWx0ID0gc3RkOjpudWxsb3B0OworICAgIG1fcHJlbXVsdGlwbGllZEltYWdl
UmVzdWx0ID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIEZpbHRlckVmZmVjdDo6Y2xlYXJSZXN1
bHRzUmVjdXJzaXZlKCkKQEAgLTQ0OSw3ICs0NDksNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YQogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB0byBzdG9yZSBpbmNvbWluZyBQaXhlbEJ1
ZmZlcgogICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwg
bV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpLCBvcGVyYXRp
bmdDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgYnVmZmVyLT5wdXRQaXhlbEJ1ZmZlcihwaXhlbEJ1ZmZlciwgZGVzdGluYXRpb25SZWN0
KTsKICAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9y
U3BhY2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxw
aGFGb3JtYXQpOwogfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29sb3Igc3Bh
Y2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24KICAgICBh
dXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFyZ2V0Q29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIENvbG9yIHNwYWNlIGNvbnZlcnNpb24gaGFwcGVucyBpbnRlcm5hbGx5IHdo
ZW4gZHJhd2luZyBmcm9tIG9uZSBpbWFnZSBidWZmZXIgdG8gYW5vdGhlcgogICAgIGNvbnZlcnRl
ZEJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbnB1dEJ1ZmZlciwgcmVjdCk7CkBA
IC02NTEsOCArNjUxLDggQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0aW4KIAogICAgIG1fcmVzdWx0
Q29sb3JTcGFjZSA9IGRlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIAotICAgIG1fdW5tdWx0aXBsaWVk
SW1hZ2VSZXN1bHQgPSBXVEY6Om51bGxvcHQ7Ci0gICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBtX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAppbmRleCAyMjEzNzVlOWE3MGE4NzY4MTFmNDcwOTgy
OTU5ZWI2OTM4MjE4MTkzLi5hMzcwMDBhM2NjMDk1MzVkMDFjOWUwZDY3ZDNmMDc0Yjg1MDg0MGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmgKQEAgLTg0LDEwICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhclJlc3VsdHNSZWN1cnNpdmUoKTsKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlclJl
c3VsdCgpOwotICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0
KGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gV1RGOjpu
dWxsb3B0KTsKLSAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1
bHQoY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6
Om51bGxvcHQpOwotICAgIHZvaWQgY29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRB
cnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVz
dWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBXVEY6Om51bGxvcHQpOworICAgIFJlZlB0cjxV
aW50OENsYW1wZWRBcnJheT4gdW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3QmLCBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSZWZQdHI8
VWludDhDbGFtcGVkQXJyYXk+IHByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYsIE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
Y29weVVubXVsdGlwbGllZFJlc3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmLCBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+ID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGNvcHlQcmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYsIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIEZpbHRlckVmZmVjdFZlY3RvciYgaW5wdXRFZmZl
Y3RzKCkgeyByZXR1cm4gbV9pbnB1dEVmZmVjdHM7IH0KICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
RWZmZWN0KHVuc2lnbmVkKSBjb25zdDsKICAgICB1bnNpZ25lZCBudW1iZXJPZkVmZmVjdElucHV0
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRFZmZlY3RzLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENh
Y2hlRnJlZVR5cGUuY3BwCmluZGV4IGVhMzUwODY3YjJlOTI4OTNiNjMyYjJhMGYxYmE2M2M2NWU5
MDg5NzEuLjdmMDgwOGRiMDJhZTRmZTlkMDA4OWE2YzA2ZWNkNzM1OGJkYWY2OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTU5OCw3ICs1OTgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Rm9udFBsYXRmb3JtRGF0YT4gRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnREZQogCiBPcHRpb25hbDxBU0NJSUxpdGVyYWw+IEZvbnRDYWNoZTo6cGxhdGZvcm1B
bHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAjaWYgRU5BQkxFKFZBUklBVElP
Tl9GT05UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAKaW5k
ZXggZmY1NDBkNTFjNjBjZDVhNzk5MDRiYzM1Yzk4ZmM5YTVhYjk1ZWM1OC4uNDU1MTI2ZDRjOTk0
YTBjNGY1Zjc3MTU4ZGQ3ZjM5ZmI2OWI1OGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvR2x5cGhQYWdl
VHJlZU5vZGVGcmVlVHlwZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBHbHlwaFBhZ2U6OmZp
bGwoVUNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoKQogICAgIGlmICghZmFjZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV1RGOjpPcHRpb25hbDxHbHlwaD4gemVyb1dp
ZHRoU3BhY2VHbHlwaFZhbHVlOworICAgIHN0ZDo6b3B0aW9uYWw8R2x5cGg+IHplcm9XaWR0aFNw
YWNlR2x5cGhWYWx1ZTsKICAgICBhdXRvIHplcm9XaWR0aFNwYWNlR2x5cGggPQogICAgICAgICBb
Jl0gewogICAgICAgICAgICAgaWYgKCF6ZXJvV2lkdGhTcGFjZUdseXBoVmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250
RGF0YUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCmluZGV4IGI5NjcyN2FiMzllNzY5N2MzN2Y3
NjNjYTIzN2QxY2Q5YzM1NWYxYTguLmU3OTE5NzljNDgxN2UxMWJjOTJhMDBlZDg0ODc0NTg3Yzgw
YWY4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gZm9udFVuaXRzUGVyRW0oRlRfRmFj
ZSBmcmVlVHlwZUZhY2UpCiAgICAgaWYgKGF1dG8qIHR0SGVhZGVyID0gc3RhdGljX2Nhc3Q8VFRf
SGVhZGVyKj4oRlRfR2V0X1NmbnRfVGFibGUoZnJlZVR5cGVGYWNlLCBmdF9zZm50X2hlYWQpKSkK
ICAgICAgICAgcmV0dXJuIHR0SGVhZGVyLT5Vbml0c19QZXJfRU07CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRm9udDo6cGxh
dGZvcm1Jbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVFcnJvclNjb3Blcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvR1BVRXJyb3JTY29wZXMuY3BwCmluZGV4IDA0ZTU3MzQ2MTdlN2I0MTQyZjBkOTU0ZDU0
MjVlYzVlNTZjNTk2YWEuLmUyOTI2YmQwMDc3ZjkzNTcwNGJmYTVkMWYyY2E4YzUxNGY5MDdjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVFcnJv
clNjb3Blcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUVycm9yU2NvcGVzLmNwcApAQCAtNDUsMTggKzQ1LDE4IEBAIEdQVUVycm9yU2NvcGVzOjpHUFVF
cnJvclNjb3BlcyhVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayYmIGNhbGxiYWNrKQogCiB2b2lkIEdQ
VUVycm9yU2NvcGVzOjpwdXNoRXJyb3JTY29wZShHUFVFcnJvckZpbHRlciBmaWx0ZXIpCiB7Ci0g
ICAgbV9lcnJvclNjb3Blcy5hcHBlbmQoRXJyb3JTY29wZSB7IGZpbHRlciwgV1RGOjpudWxsb3B0
IH0pOworICAgIG1fZXJyb3JTY29wZXMuYXBwZW5kKEVycm9yU2NvcGUgeyBmaWx0ZXIsIHN0ZDo6
bnVsbG9wdCB9KTsKIH0KIAogT3B0aW9uYWw8R1BVRXJyb3I+IEdQVUVycm9yU2NvcGVzOjpwb3BF
cnJvclNjb3BlKFN0cmluZyYgZmFpbE1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fZXJyb3JTY29wZXMu
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZhaWxNZXNzYWdlID0gIk5vIGVycm9yIHNjb3BlIGV4aXN0
cyEiOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gc2NvcGUgPSBtX2Vycm9yU2NvcGVzLnRha2VMYXN0
KCk7Ci0gICAgcmV0dXJuIHNjb3BlLmZpbHRlciA9PSBHUFVFcnJvckZpbHRlcjo6Tm9uZSA/IFdU
Rjo6bnVsbG9wdCA6IHNjb3BlLmVycm9yOworICAgIHJldHVybiBzY29wZS5maWx0ZXIgPT0gR1BV
RXJyb3JGaWx0ZXI6Ok5vbmUgPyBzdGQ6Om51bGxvcHQgOiBzY29wZS5lcnJvcjsKIH0KIAogdm9p
ZCBHUFVFcnJvclNjb3Blczo6Z2VuZXJhdGVFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEdQ
VUVycm9yRmlsdGVyIGZpbHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCaW5kR3JvdXBNZXRhbC5tbQppbmRleCBk
NWI0N2QyMWE1NDI1ODYxNmVhMWI1MTU5OWU0ZWJjYmIxOGU5MmY1Li5hOWVjMTdiOGNjMDRkZDI1
MmVkNjFmNzdlZWY1YjcxODFjYmNhMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQmluZEdyb3VwTWV0YWwubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJpbmRHcm91cE1ldGFsLm1t
CkBAIC00OCwyMSArNDgsMjEgQEAgc3RhdGljIE9wdGlvbmFsPEdQVUJ1ZmZlckJpbmRpbmc+IHRy
eUdldFJlc291cmNlQXNCdWZmZXJCaW5kaW5nKGNvbnN0IEdQVUJpbmRpbmcKICNlbmRpZgogICAg
IGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxHUFVCdWZmZXJCaW5kaW5nPihyZXNvdXJjZSkp
IHsKICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBSZXNvdXJjZSBpcyBub3QgYSBidWZmZXIgdHlw
ZSEiLCBmdW5jdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBhdXRvJiBidWZmZXJCaW5kaW5nID0g
V1RGOjpnZXQ8R1BVQnVmZmVyQmluZGluZz4ocmVzb3VyY2UpOwogICAgIGlmICghYnVmZmVyQmlu
ZGluZy5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBJbnZhbGlkIE1UTEJ1ZmZlciBpbiBHUFVCdWZmZXJCaW5kaW5nISIsIGZ1bmN0aW9uTmFtZSk7
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogICAgIGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5n
LnNpemUpIHx8IGJ1ZmZlckJpbmRpbmcuc2l6ZSA+IGJ1ZmZlckJpbmRpbmcuYnVmZmVyLT5ieXRl
TGVuZ3RoKCkpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBHUFVCdWZmZXJCaW5kaW5nIHNp
emUgaXMgdG9vIGxhcmdlISIsIGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIC8vIE1UTEJ1
ZmZlciBzaXplIChOU1VJbnRlZ2VyKSBpcyAzMiBiaXRzIG9uIHNvbWUgcGxhdGZvcm1zLgogICAg
IGlmICghaXNJbkJvdW5kczxOU1VJbnRlZ2VyPihidWZmZXJCaW5kaW5nLm9mZnNldCkpIHsKICAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBCdWZmZXIgb2Zmc2V0IGlzIHRvbyBsYXJnZSEiLCBmdW5j
dGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KICAgICByZXR1cm4gR1BVQnVmZmVyQmluZGluZyB7IGJ1ZmZl
ckJpbmRpbmcuYnVmZmVyLmNvcHlSZWYoKSwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJp
bmRpbmcuc2l6ZSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbXB1dGVQaXBlbGluZU1ldGFsLm1t
CmluZGV4IDQwN2VlNGFhMzA2N2JmMTJhOWEwYjI5MTdlZjQ0MzJlZDA2MWJjZjQuLjc5YTk5ZGM1
YzRiNjY4MzY5NzE4ODg4NDQ4NDM3MGEyMzAxZTcxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21wdXRlUGlwZWxpbmVNZXRhbC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29t
cHV0ZVBpcGVsaW5lTWV0YWwubW0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdI
TFNMOjpDb21wdXRlRGltZW5zaW9ucz4gdHJ5U2V0RnVuY3Rpb25zKGNvbnN0IEdQVVByb2dyYW1t
YWJsZVMKICAgICAgICAgYXV0byB3aGxzbENvbXBpbGVSZXN1bHQgPSBXSExTTDo6cHJlcGFyZSgq
Y29tcHV0ZVN0YWdlLm1vZHVsZS0+d2hsc2xNb2R1bGUoKSwgKndobHNsRGVzY3JpcHRvcik7CiAg
ICAgICAgIGlmICghd2hsc2xDb21waWxlUmVzdWx0KSB7CiAgICAgICAgICAgICBlcnJvclNjb3Bl
cy5nZW5lcmF0ZVByZWZpeGVkRXJyb3IobWFrZVN0cmluZygiV0hMU0wgY29tcGlsZSBlcnJvcjog
Iiwgd2hsc2xDb21waWxlUmVzdWx0LmVycm9yKCkpKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAK
ICAgICAgICAgY29tcHV0ZURpbWVuc2lvbnMgPSB3aGxzbENvbXBpbGVSZXN1bHQtPmNvbXB1dGVE
aW1lbnNpb25zOwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXSExTTDo6Q29t
cHV0ZURpbWVuc2lvbnM+IHRyeVNldEZ1bmN0aW9ucyhjb25zdCBHUFVQcm9ncmFtbWFibGVTCiAg
ICAgaWYgKHRyeVNldE1ldGFsRnVuY3Rpb25zKGNvbXB1dGVMaWJyYXJ5LmdldCgpLCBtdGxEZXNj
cmlwdG9yLCBjb21wdXRlRW50cnlQb2ludCwgZXJyb3JTY29wZXMpKQogICAgICAgICByZXR1cm4g
Y29tcHV0ZURpbWVuc2lvbnM7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0cnVjdCBDb252ZXJ0UmVzdWx0IHsKQEAgLTEyOSw3ICsx
MjksNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29udmVydFJlc3VsdD4gY29udmVydENvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IoY29uc3QgR1BVQ29tcHV0ZQogCiAgICAgaWYgKCFtdGxEZXNjcmlwdG9y
KSB7CiAgICAgICAgIGVycm9yU2NvcGVzLmdlbmVyYXRlUHJlZml4ZWRFcnJvcigiRXJyb3IgY3Jl
YXRpbmcgTVRMQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciEiKTsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBj
b25zdCBhdXRvJiBjb21wdXRlU3RhZ2UgPSBkZXNjcmlwdG9yLmNvbXB1dGVTdGFnZTsKQEAgLTE0
NSwxNCArMTQ1LDE0IEBAIHN0YXRpYyBPcHRpb25hbDxDb252ZXJ0UmVzdWx0PiBjb252ZXJ0Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBHUFVDb21wdXRlCiAgICAgICAgICAgICB3aGxz
bERlc2NyaXB0b3ItPmxheW91dCA9IFdURk1vdmUoKmxheW91dCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJFcnJvciBjb252
ZXJ0aW5nIEdQVVBpcGVsaW5lTGF5b3V0ISIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoYXV0byBjb21wdXRlRGltZW5zaW9ucyA9IHRyeVNldEZ1bmN0aW9ucyhjb21w
dXRlU3RhZ2UsIGRldmljZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgd2hsc2xEZXNjcmlwdG9yLCBl
cnJvclNjb3BlcykpCiAgICAgICAgIHJldHVybiB7eyBtdGxEZXNjcmlwdG9yLCAqY29tcHV0ZURp
bWVuc2lvbnMgfX07CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0cnVjdCBDcmVhdGVSZXN1bHQgewpAQCAtMTY0LDEyICsxNjQsMTIg
QEAgc3RhdGljIE9wdGlvbmFsPENyZWF0ZVJlc3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVs
aW5lU3RhdGUoY29uc3QgR1BVRGV2aWNlJgogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2
aWNlKCkpIHsKICAgICAgICAgZXJyb3JTY29wZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKCJJbnZh
bGlkIEdQVURldmljZSEiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIGNvbnZlcnRSZXN1bHQgPSBj
b252ZXJ0Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBkZXZpY2UsIGVycm9y
U2NvcGVzKTsKICAgICBpZiAoIWNvbnZlcnRSZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgQVNTRVJUKGNvbnZlcnRS
ZXN1bHQtPnBpcGVsaW5lRGVzY3JpcHRvcik7CiAgICAgYXV0byBtdGxEZXNjcmlwdG9yID0gY29u
dmVydFJlc3VsdC0+cGlwZWxpbmVEZXNjcmlwdG9yOwogCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rh
dGljIE9wdGlvbmFsPENyZWF0ZVJlc3VsdD4gdHJ5Q3JlYXRlTVRMQ29tcHV0ZVBpcGVsaW5lU3Rh
dGUoY29uc3QgR1BVRGV2aWNlJgogICAgIHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRm
b3JtRGV2aWNlKCkgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNj
cmlwdG9yLmdldCgpIG9wdGlvbnM6TVRMUGlwZWxpbmVPcHRpb25Ob25lIHJlZmxlY3Rpb246bmls
IGVycm9yOiZlcnJvcl0pOwogICAgIGlmICghcGlwZWxpbmUpIHsKICAgICAgICAgZXJyb3JTY29w
ZXMuZ2VuZXJhdGVQcmVmaXhlZEVycm9yKGVycm9yID8gZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24uVVRGOFN0cmluZyA6ICJVbmFibGUgdG8gY3JlYXRlIE1UTENvbXB1dGVQaXBlbGluZVN0YXRl
ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGlu
ZU1ldGFsQ29udmVydExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUGlwZWxpbmVNZXRhbENvbnZlcnRMYXlvdXQuY3BwCmluZGV4IDIzMWYx
YWJlNjMwNmM5NTFiMzQ0YTMxOWQ0ZThhZmY2Zjg2MTVmNGYuLjM1NGM2YTJhOWY1MzM5MDk2NDk5
YWE3YmJiNGFkNmJhYjk3YTgwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQaXBlbGluZU1ldGFsQ29udmVydExheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVBpcGVsaW5l
TWV0YWxDb252ZXJ0TGF5b3V0LmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
V0hMU0w6OkJpbmRpbmc6OkJpbmRpbmdEZXRhaWxzPiBjb252ZXJ0QmluZGluZ1R5cGUoR1BVQmlu
ZEdyb3VwTAogICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEdQVUJp
bmRHcm91cExheW91dDo6VW5pZm9ybUJ1ZmZlciB1bmlmb3JtQnVmZmVyKSAtPiBPcHRpb25hbDxX
SExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6
OlVuaWZvcm1CdWZmZXJCaW5kaW5nIHsgdW5pZm9ybUJ1ZmZlci5pbnRlcm5hbExlbmd0aE5hbWUg
fSB9OwogICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OkR5bmFtaWNVbmlmb3JtQnVmZmVy
KSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
LCBbJl0oR1BVQmluZEdyb3VwTGF5b3V0OjpTYW1wbGVyKSAtPiBPcHRpb25hbDxXSExTTDo6Qmlu
ZGluZzo6QmluZGluZ0RldGFpbHM+IHsKICAgICAgICAgcmV0dXJuIHsgV0hMU0w6OlNhbXBsZXJC
aW5kaW5nIHsgfSB9OwogICAgIH0sIFsmXShHUFVCaW5kR3JvdXBMYXlvdXQ6OlNhbXBsZWRUZXh0
dXJlKSAtPiBPcHRpb25hbDxXSExTTDo6QmluZGluZzo6QmluZGluZ0RldGFpbHM+IHsKQEAgLTU4
LDcgKzU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWls
cz4gY29udmVydEJpbmRpbmdUeXBlKEdQVUJpbmRHcm91cEwKICAgICB9LCBbJl0oR1BVQmluZEdy
b3VwTGF5b3V0OjpTdG9yYWdlQnVmZmVyIHN0b3JhZ2VCdWZmZXIpIC0+IE9wdGlvbmFsPFdITFNM
OjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewogICAgICAgICByZXR1cm4geyBXSExTTDo6U3Rv
cmFnZUJ1ZmZlckJpbmRpbmcgeyBzdG9yYWdlQnVmZmVyLmludGVybmFsTGVuZ3RoTmFtZSB9IH07
CiAgICAgfSwgWyZdKEdQVUJpbmRHcm91cExheW91dDo6RHluYW1pY1N0b3JhZ2VCdWZmZXIpIC0+
IE9wdGlvbmFsPFdITFNMOjpCaW5kaW5nOjpCaW5kaW5nRGV0YWlscz4gewotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0pLCBp
bnRlcm5hbEJpbmRpbmdEZXRhaWxzKTsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBPcHRpb25hbDxX
SExTTDo6TGF5b3V0PiBjb252ZXJ0TGF5b3V0KGNvbnN0IEdQVVBpcGVsaW5lTGF5b3V0JiBsYXlv
dXQpCiB7CiAgICAgV0hMU0w6OkxheW91dCByZXN1bHQ7CiAgICAgaWYgKGxheW91dC5iaW5kR3Jv
dXBMYXlvdXRzKCkuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5b3V0LmJpbmRHcm91cExheW91dHMo
KS5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBhdXRvJiBiaW5kR3JvdXBMYXlvdXQgPSBs
YXlvdXQuYmluZEdyb3VwTGF5b3V0cygpW2ldOwogICAgICAgICBXSExTTDo6QmluZEdyb3VwIGJp
bmRHcm91cDsKQEAgLTc4LDkgKzc4LDkgQEAgT3B0aW9uYWw8V0hMU0w6OkxheW91dD4gY29udmVy
dExheW91dChjb25zdCBHUFVQaXBlbGluZUxheW91dCYgbGF5b3V0KQogICAgICAgICAgICAgaWYg
KGF1dG8gYmluZGluZ1R5cGUgPSBjb252ZXJ0QmluZGluZ1R5cGUoYmluZGluZ0RldGFpbHMuaW50
ZXJuYWxCaW5kaW5nRGV0YWlscykpCiAgICAgICAgICAgICAgICAgYmluZGluZy5iaW5kaW5nID0g
KmJpbmRpbmdUeXBlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgIGlmIChiaW5kaW5nRGV0YWlscy5leHRlcm5hbEJpbmRpbmcuYmluZGluZyA+IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBiaW5kaW5nLmV4dGVybmFsTmFtZSA9IGJpbmRpbmdEZXRhaWxzLmV4dGVybmFsQmlu
ZGluZy5iaW5kaW5nOwogICAgICAgICAgICAgYmluZGluZy5pbnRlcm5hbE5hbWUgPSBiaW5kaW5n
RGV0YWlscy5pbnRlcm5hbE5hbWU7CiAgICAgICAgICAgICBiaW5kR3JvdXAuYmluZGluZ3MuYXBw
ZW5kKFdURk1vdmUoYmluZGluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQppbmRleCAxNTk5ZjBiYTIyOWQ0YWZiZGFiYTdkZmNiYmJiZjgzOTk5NTNhZTE3Li5hODQ3
Y2UwM2Y1MmY5YTI1NmQ5MTIwMzJlZTNkYjJiYzg4NGY5OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmVNZXRhbC5tbQpAQCAtMTA4LDEzICsxMDgsMTMgQEAgc3RhdGljIE9wdGlv
bmFsPFdITFNMOjpUZXh0dXJlRm9ybWF0PiBjb252ZXJ0VGV4dHVyZUZvcm1hdChHUFVUZXh0dXJl
Rm9ybWF0IGZvcm0KICAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkJncmE4dW5vcm06CiAgICAg
ICAgIHJldHVybiBXSExTTDo6VGV4dHVyZUZvcm1hdDo6QkdSQThVbm9ybTsKICAgICBjYXNlIEdQ
VVRleHR1cmVGb3JtYXQ6OkRlcHRoMzJmbG9hdFN0ZW5jaWw4OgotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OyAvLyBGSVhNRTogRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggdGhpcy4KKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBk
byB3aXRoIHRoaXMuCiAgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCZ3JhOHVub3JtU1JHQjoK
ICAgICAgICAgcmV0dXJuIFdITFNMOjpUZXh0dXJlRm9ybWF0OjpCR1JBOFVub3JtU3JnYjsKICAg
ICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlJnYmExNmZsb2F0OgogICAgICAgICByZXR1cm4gV0hM
U0w6OlRleHR1cmVGb3JtYXQ6OlJHQkExNkZsb2F0OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KaW5kZXggMzM2ODU1MGIwZGJiYzY5NjU3
NDAxNmQ4NmI4YzMxNzA4MzJiNzUwYy4uNjU2ZjE0OGNkNzMxNGQxN2Q5ZmJjNDNiYTdjMjJmMWI2
YjBkYTBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHRyeUdldFN1cHBvcnRlZFBpeGVsRm9y
bWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybQogICAgICAgICByZXR1cm4gbXRsRm9ybWF0OwogICAg
IGRlZmF1bHQ6IHsKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBDaGFpbjo6dHJ5Q3JlYXRl
KCk6IFVuc3VwcG9ydGVkIE1UTFBpeGVsRm9ybWF0ISIpOwotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVRleHR1cmVNZXRhbC5tbQppbmRleCAwNmU3ZGZiOGM0NjI4NGMwYjQ4ZDAzOTEwMzFk
NzUxNjdiNmNmZDJiLi5hYzJjNDJiZjYwYzIzNjM0OWFmODZjYzBiMGQxNmM0NDg4NWRlMjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VGV4dHVyZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIE9wdGlv
bmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxh
Z3MoT3B0aW9uU2UKIAogICAgIGlmIChmbGFncy5jb250YWluc0FueSh7IEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6OkNvcHlTb3VyY2UsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSkg
JiYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSkpIHsKICAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJlIGNhbm5vdCBoYXZlIGJvdGggU1RPUkFHRSBhbmQgYSBy
ZWFkLW9ubHkgdXNhZ2UhIiwgZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBNVExUZXh0
dXJlVXNhZ2UgcmVzdWx0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR0xWaWRlb1NpbmtHU3RyZWFtZXIuY3Bw
CmluZGV4IGIyNzAwNzI5NjU1MmQwYTM4NjBiMDhmZTMwZWJkOGNiNTgxZGExMjAuLmIxNThjNWZl
MGY0MWIwNzhiMDhkOTU5NzAyMGJlNWVmNmYwODU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HTFZpZGVvU2lua0dTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlkZW9T
aW5rR1N0cmVhbWVyLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIE9wdGlvbmFsPEdSZWZQdHI8R3N0
Q29udGV4dD4+IHJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hhciogY29udGV4dFR5cGUpCiAgICAg
YXV0byogZ3N0R0xDb250ZXh0ID0gc2hhcmVkRGlzcGxheS5nc3RHTENvbnRleHQoKTsKIAogICAg
IGlmICghKGdzdEdMRGlzcGxheSAmJiBnc3RHTENvbnRleHQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFnX3N0
cmNtcDAoY29udGV4dFR5cGUsIEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSkpIHsKICAgICAg
ICAgR3N0Q29udGV4dCogZGlzcGxheUNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcoR1NUX0dMX0RJ
U1BMQVlfQ09OVEVYVF9UWVBFLCBUUlVFKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCBPcHRpb25hbDxH
UmVmUHRyPEdzdENvbnRleHQ+PiByZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNoYXIqIGNvbnRleHRU
eXBlKQogICAgICAgICByZXR1cm4gYWRvcHRHUmVmKGFwcENvbnRleHQpOwogICAgIH0KIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3Rh
dGljIGJvb2wgc2V0R0xDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnRTaW5rLCBjb25zdCBjaGFy
KiBjb250ZXh0VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggNTA1Zjg0NWM5
YmJmYjJlYzkwZDVhZGYxZWM0MDM1NGNkNTFkYWE0Yy4uNTU1OGJmYjMyZTkxOTA1Y2Y2Zjk5MjUw
ZmY3M2ZjY2YyMGRkYjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCBPcHRpb25hbDxGbG9hdFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBz
KGNvbnN0IEdzdENhcHMqIGNhcHMpCiB7CiAgICAgaWYgKCFkb0NhcHNIYXZlVHlwZShjYXBzLCBH
U1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkZhaWxl
ZCB0byBnZXQgdGhlIHZpZGVvIHJlc29sdXRpb24sIHRoZXNlIGFyZSBub3QgYSB2aWRlbyBjYXBz
Iik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKQEAgLTE0NSw3
ICsxNDUsNyBAQCBPcHRpb25hbDxGbG9hdFNpemU+IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBz
KGNvbnN0IEdzdENhcHMqIGNhcHMpCiAgICAgICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogICAgICAg
ICBnc3RfdmlkZW9faW5mb19pbml0KCZpbmZvKTsKICAgICAgICAgaWYgKCFnc3RfdmlkZW9faW5m
b19mcm9tX2NhcHMoJmluZm8sIGNhcHMpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgd2lkdGggPSBH
U1RfVklERU9fSU5GT19XSURUSCgmaW5mbyk7CiAgICAgICAgIGhlaWdodCA9IEdTVF9WSURFT19J
TkZPX0hFSUdIVCgmaW5mbyk7CkBAIC0xNTMsNyArMTUzLDcgQEAgT3B0aW9uYWw8RmxvYXRTaXpl
PiBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2Fwcyhjb25zdCBHc3RDYXBzKiBjYXBzKQogICAgICAg
ICBwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IgPSBHU1RfVklERU9fSU5GT19QQVJfRCgmaW5m
byk7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChGbG9hdFNpemUod2lkdGgsIGhl
aWdodCAqIChzdGF0aWNfY2FzdDxmbG9hdD4ocGl4ZWxBc3BlY3RSYXRpb0Rlbm9taW5hdG9yKSAv
IHN0YXRpY19jYXN0PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvTnVtZXJhdG9yKSkpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0ICogKHN0YXRp
Y19jYXN0PGZsb2F0PihwaXhlbEFzcGVjdFJhdGlvRGVub21pbmF0b3IpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHBpeGVsQXNwZWN0UmF0aW9OdW1lcmF0b3IpKSkpOwogfQogCiBib29sIGdldFNhbXBs
ZVZpZGVvSW5mbyhHc3RTYW1wbGUqIHNhbXBsZSwgR3N0VmlkZW9JbmZvJiB2aWRlb0luZm8pCkBA
IC0yNTMsNyArMjUzLDcgQEAgYm9vbCBlbnN1cmVHU3RyZWFtZXJJbml0aWFsaXplZCgpCiAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIlRoZSBVU0VfUExBWUJJTjMgdmFyaWFibGUgd2FzIGRldGVj
dGVkIGluIHRoZSBlbnZpcm9ubWVudC4gRXhwZWN0IHBsYXliYWNrIGlzc3VlcyBvciBwbGVhc2Ug
dW5zZXQgaXQuIik7CiAKICNpZiBFTkFCTEUoVklERU8pIHx8IEVOQUJMRShXRUJfQVVESU8pCi0g
ICAgICAgIFZlY3RvcjxTdHJpbmc+IHBhcmFtZXRlcnMgPSBzX1VJUHJvY2Vzc0NvbW1hbmRMaW5l
T3B0aW9ucy52YWx1ZU9yKGV4dHJhY3RHU3RyZWFtZXJPcHRpb25zRnJvbUNvbW1hbmRMaW5lKCkp
OworICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbWV0ZXJzID0gc19VSVByb2Nlc3NDb21tYW5k
TGluZU9wdGlvbnMudmFsdWVfb3IoZXh0cmFjdEdTdHJlYW1lck9wdGlvbnNGcm9tQ29tbWFuZExp
bmUoKSk7CiAgICAgICAgIHNfVUlQcm9jZXNzQ29tbWFuZExpbmVPcHRpb25zLnJlc2V0KCk7CiAg
ICAgICAgIGNoYXIqKiBhcmd2ID0gZ19uZXcwKGNoYXIqLCBwYXJhbWV0ZXJzLnNpemUoKSArIDIp
OwogICAgICAgICBpbnQgYXJnYyA9IHBhcmFtZXRlcnMuc2l6ZSgpICsgMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggZmRkZDVjM2MxNGUxNjFlZWY5
NWQzNDBiMGU2MDlhNTIwNGY0ODczYi4uYTNhMzkyZjgyYzliNjAwYmFiNjNkNTE4NmVkZTdlNjBk
Y2UwNDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAK
QEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlh
bGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIH0KIAogICAg
IFZlY3RvcjxTdHJpbmc+IGF2MURlY29kZXJzRGlzYWxsb3dlZExpc3QgeyAiYXYxZGVjIl9zIH07
Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQo
Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
Tm8sIG1ha2VPcHRpb25hbChXVEZNb3ZlKGF2MURlY29kZXJzRGlzYWxsb3dlZExpc3QpKSkpIHsK
KyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChD
b25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2
aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpO
bywgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoYXYxRGVjb2RlcnNEaXNhbGxvd2VkTGlzdCkp
KSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwg
ZmFsc2UpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiks
IGZhbHNlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYx
IiksIGZhbHNlKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6aW5pdGlhbGl6ZUVuY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgog
ICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IGF2MUVuY29kZXJzRGlzYWxsb3dlZExpc3QgeyAi
YXYxZW5jIl9zIH07Ci0gICAgYXV0byBhdjFFbmNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhh
c0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9FbmNvZGVy
LCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmll
cjo6WWVzLCBtYWtlT3B0aW9uYWwoV1RGTW92ZShhdjFFbmNvZGVyc0Rpc2FsbG93ZWRMaXN0KSkp
OworICAgIGF1dG8gYXYxRW5jb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9y
TWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRW5jb2RlciwgInZpZGVvL3gt
YXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcywgc3Rk
OjptYWtlX29wdGlvbmFsKFdURk1vdmUoYXYxRW5jb2RlcnNEaXNhbGxvd2VkTGlzdCkpKTsKICAg
ICBpZiAoYXYxRW5jb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2VuY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgZmFsc2UpOwogICAgICAgICBtX2VuY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGZhbHNlKTsKQEAgLTY2Myw3ICs2NjMsNyBAQCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aXNDb25maQogICAgICAgICBhdXRvJiBhdWRpb0NvbmZpZ3VyYXRpb24gPSBt
ZWRpYUNvbmZpZ3VyYXRpb24uYXVkaW8udmFsdWUoKTsKICAgICAgICAgR1NUX0RFQlVHKCJDaGVj
a2luZyAlcyBzdXBwb3J0IGZvciBhdWRpbyBjb25maWd1cmF0aW9uOiBcIiVzXCIgJXMgY2hhbm5l
bHMsIGJpdHJhdGU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBzYW1wbGVyYXRlOiAldSIsIGNvbmZp
Z0xvZ1N0cmluZywKICAgICAgICAgICAgIGF1ZGlvQ29uZmlndXJhdGlvbi5jb250ZW50VHlwZS51
dGY4KCkuZGF0YSgpLCBhdWRpb0NvbmZpZ3VyYXRpb24uY2hhbm5lbHMudXRmOCgpLmRhdGEoKSwK
LSAgICAgICAgICAgIGF1ZGlvQ29uZmlndXJhdGlvbi5iaXRyYXRlLnZhbHVlT3IoMCksIGF1ZGlv
Q29uZmlndXJhdGlvbi5zYW1wbGVyYXRlLnZhbHVlT3IoMCkpOworICAgICAgICAgICAgYXVkaW9D
b25maWd1cmF0aW9uLmJpdHJhdGUudmFsdWVfb3IoMCksIGF1ZGlvQ29uZmlndXJhdGlvbi5zYW1w
bGVyYXRlLnZhbHVlX29yKDApKTsKICAgICAgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRU
eXBlKGF1ZGlvQ29uZmlndXJhdGlvbi5jb250ZW50VHlwZSk7CiAgICAgICAgIGlzU3VwcG9ydGVk
ID0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKGNvbmZpZ3VyYXRpb24sIGNvbnRlbnRUeXBlLmNv
bnRhaW5lclR5cGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lci5oCmluZGV4IDAwN2ZmODgwNzY5ZDYxMDc2YzJlZDlkNjdiNTE5NzYyODY2ZWI4NzYuLmY3
NzQ4ZTU4MWZhNjUwYTllNmRlMDlmYjQzNTIzYTM5MTkwMDRmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICBHTGlzdCogZmFjdG9yeShUeXBlKSBjb25zdDsKIAogICAgICAgICBlbnVtIGNsYXNz
IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyIHsgTm8sIFllcyB9OwotICAgICAgICBSZWdpc3RyeUxv
b2t1cFJlc3VsdCBoYXNFbGVtZW50Rm9yTWVkaWFUeXBlKFR5cGUsIGNvbnN0IGNoYXIqIGNhcHNT
dHJpbmcsIENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyID0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6
Ok5vLCBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZGlzYWxsb3dlZExpc3QgPSBXVEY6Om51bGxv
cHQpIGNvbnN0OworICAgICAgICBSZWdpc3RyeUxvb2t1cFJlc3VsdCBoYXNFbGVtZW50Rm9yTWVk
aWFUeXBlKFR5cGUsIGNvbnN0IGNoYXIqIGNhcHNTdHJpbmcsIENoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyID0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Ok5vLCBPcHRpb25hbDxWZWN0b3I8U3RyaW5n
Pj4gZGlzYWxsb3dlZExpc3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0OwogCiAgICAgICAgIEdMaXN0
KiBhdWRpb0RlY29kZXJGYWN0b3JpZXMgeyBudWxscHRyIH07CiAgICAgICAgIEdMaXN0KiBhdWRp
b1BhcnNlckZhY3RvcmllcyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaAppbmRleCA4Zjk2OWZlZWUxMmJkMGUwNTU2OTZjOTQ0Yzg2YjBkYjBmZGY3NDRmLi45
MWY5MmNiYmNjYzhiMjZlZjA3NWM3MGM4NTUwZjlhODVhODllNGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBSZXBl
dGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHV0
aSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKG1fbWltZVR5cGUpOyB9Ci0gICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogCiAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNpemUoKTsgfQogICAgIGJv
b2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHNhbXBsZUF0SW5kZXgoaW5kZXgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDU2NmZiZTI1MGFlYTQzOTI3MGIxZGQwNjNjZGE2
NjlhYzcyYzc2MTYuLjJiYWVmMmE0ZWQyNDkxNzQzODYzODI4MmUxN2ZjMmQ4YTI5YmExOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0z
MzksNyArMzM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgp
OwogICAgIG1fYXJlVm9sdW1lQW5kTXV0ZUluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgbV9oYXNU
YWludGVkT3JpZ2luID0gV1RGOjpudWxsb3B0OworICAgIG1faGFzVGFpbnRlZE9yaWdpbiA9IHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghbV9pc0RlbGF5aW5nTG9hZCkKICAgICAgICAgY29tbWl0
TG9hZCgpOwpAQCAtMzU1OCw3ICszNTU4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OnNldFN0cmVhbVZvbHVtZUVsZW1lbnQoR3N0U3RyZWFtVm9sdW1lKiB2b2x1bWUKIE9w
dGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjp2aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKQogewogICAgIGlmICghd2Via2l0
R3N0Q2hlY2tWZXJzaW9uKDEsIDE4LCAwKSAmJiAhbV9mcHNTaW5rKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDY0
X3QgdG90YWxWaWRlb0ZyYW1lcyA9IDA7CiAgICAgdWludDY0X3QgZHJvcHBlZFZpZGVvRnJhbWVz
ID0gMDsKQEAgLTM1NjcsMTAgKzM1NjcsMTAgQEAgT3B0aW9uYWw8VmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnZpZGVvUGxheWJhY2sKICAg
ICAgICAgZ19vYmplY3RfZ2V0KG1fdmlkZW9TaW5rLmdldCgpLCAic3RhdHMiLCAmc3RhdHMub3V0
UHRyKCksIG51bGxwdHIpOwogCiAgICAgICAgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfdWludDY0
KHN0YXRzLmdldCgpLCAicmVuZGVyZWQiLCAmdG90YWxWaWRlb0ZyYW1lcykpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2NChzdGF0cy5nZXQoKSwgImRy
b3BwZWQiLCAmZHJvcHBlZFZpZGVvRnJhbWVzKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0gZWxzZSBpZiAo
bV9mcHNTaW5rKSB7CiAgICAgICAgIHVuc2lnbmVkIHJlbmRlcmVkRnJhbWVzLCBkcm9wcGVkRnJh
bWVzOwogICAgICAgICBnX29iamVjdF9nZXQobV9mcHNTaW5rLmdldCgpLCAiZnJhbWVzLXJlbmRl
cmVkIiwgJnJlbmRlcmVkRnJhbWVzLCAiZnJhbWVzLWRyb3BwZWQiLCAmZHJvcHBlZEZyYW1lcywg
bnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggMzMzZDBlOTNjN2FhYmE4MDE2MDg0MzM5NWEyMWRjYjMyNmUyMjJkNS4uODAzOTFkOTE2
NzY1NDU0NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTU2LDcgKzU1Niw3IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSB1aW50NjRfdCBtX3JlYWRQb3NpdGlvbkF0TGFzdERpZExvYWRpbmdQcm9ncmVz
cyB7IDAgfTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4g
bV9vcmlnaW5zOwotICAgIE9wdGlvbmFsPGJvb2w+IG1faGFzVGFpbnRlZE9yaWdpbiB7IFdURjo6
bnVsbG9wdCB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1faGFzVGFpbnRlZE9yaWdpbiB7IHN0ZDo6
bnVsbG9wdCB9OwogCiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1NpbmsgeyBudWxscHRy
IH07CiAgICAgdWludDY0X3QgbV90b3RhbFZpZGVvRnJhbWVzIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhU2FtcGxlR1N0
cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFTYW1wbGVHU3RyZWFtZXIuaAppbmRleCA1ZDNkMDFhMjY4ZjUwNjE4MTk5NTM3N2E2MTI1OGQ5
YjA2MzkyNTM4Li44NTgyY2I2NjI1MDlhOGQyZmI1MDcyODE5OTU3MjMyMWViMTM1YmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFT
YW1wbGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFTYW1wbGVHU3RyZWFtZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgUmVmPE1lZGlhU2FtcGxlPiBjcmVhdGVOb25EaXNwbGF5aW5nQ29weSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxCeXRlUmFuZ2U+IGJ5dGVSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZlB0cjxKU0M6OlVpbnQ4Q2xhbXBl
ZEFycmF5PiBnZXRSR0JBSW1hZ2VEYXRhKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRBdWRpb1NpbmtH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKaW5kZXggNWM2OWY3Mzc2MzM0YzYwNjY2YzA0
NTkxNTkxMGVlYzg2MzI2YTEwYi4uMjZiODZhNWQwNzVmYTU2MGM1ZmE4OWY2NDU5NjI2MGFlMmI4
MTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdEF1ZGlvU2lua0dTdHJlYW1lci5jcHAKQEAg
LTkwLDIwICs5MCwyMCBAQCBzdHJ1Y3QgQXVkaW9QYWNrZXRIb2xkZXIgewogICAgIHsKICAgICAg
ICAgZmQgPSBtZW1mZF9jcmVhdGUoIndwZS1hdWRpby1idWZmZXIiLCBNRkRfQ0xPRVhFQyk7CiAg
ICAgICAgIGlmICgqZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoZnRydW5jYXRl
KCpmZCwgYnVmZmVyLT5zaXplKCkpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgc3NpemVf
dCBieXRlc1dyaXR0ZW4gPSB3cml0ZSgqZmQsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSAhPSBidWZmZXItPnNpemUoKSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIGlmIChsc2VlaygqZmQsIDAsIFNFRUtfU0VUKSA9PSAtMSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50MzJfdD4oKmZkKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Q
cm94eUNsZWFyS2V5LmgKaW5kZXggODk2YWJkYmQ2NTY1NTkyMGEwODFkODUwNTkxYWJmM2ZmZGYx
OGY1NC4uZTNkOTdhNWM5ZWQ3ZmZiMTc1YTEzODBlZmU1YTFjMjBlMTA4MTQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94
eUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xvc2VHQ3J5cHRIYW5kbGUoKTsKIAogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBi
ZSBuaWNlIHRvIHVzZSBzb21ldGhpbmcgaW4gV2ViQ29yZSBmb3IgY3J5cHRvLi4uCi0gICAgT3B0
aW9uYWw8Z2NyeV9jaXBoZXJfaGRfdD4gbV9nQ3J5cHRIYW5kbGUgeyBXVEY6Om51bGxvcHQgfTsK
KyAgICBPcHRpb25hbDxnY3J5X2NpcGhlcl9oZF90PiBtX2dDcnlwdEhhbmRsZSB7IHN0ZDo6bnVs
bG9wdCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5jcHAKaW5kZXggMTdkYzE2MzQ0MzdjNjRiOTE0ODAzMjMwODZmN2Q1ODdkYThmNWFlYy4uODVm
N2NmNGQ3ODY0YWY4M2QyNjU3ZjViNzI1NjUyMWY1Njc0YzZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCkBAIC0zNTIsNyArMzUyLDcgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChyZXF1
ZXN0VHlwZS5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlcmUgYXJl
IHNpbXBsZXIgd2F5cyB0byBjb252ZXJ0IGEgc2luZ2xlIGRpZ2l0IHRvIGEgbnVtYmVyIHRoYW4g
Y2FsbGluZyBwYXJzZUludGVnZXIuCi0gICAgICAgICAgICBtX3R5cGUgPSBtYWtlT3B0aW9uYWwo
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZT4ocGFyc2VJbnRlZ2VyPGlu
dD4ocmVxdWVzdFR5cGUpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgIG1fdHlwZSA9IHN0ZDo6
bWFrZV9vcHRpb25hbChzdGF0aWNfY2FzdDxXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlPihw
YXJzZUludGVnZXI8aW50PihyZXF1ZXN0VHlwZSkudmFsdWVfb3IoMCkpKTsKICAgICAgICAgfQog
CiAgICAgICAgIG1fcGF5bG9hZCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHBheWxvYWQuY2hhcmFj
dGVyczgoKSArIG9mZnNldCwgcGF5bG9hZC5sZW5ndGgoKSAtIG9mZnNldCk7CkBAIC01NjQsNyAr
NTY0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHkKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVzcG9u
c2VNZXNzYWdlKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBtX2tleVN0b3JlLmNv
bnZlcnRUb0pTS2V5U3RhdHVzVmVjdG9yKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBT
dWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2Us
IG1fa2V5U3RvcmUuY29udmVydFRvSlNLZXlTdGF0dXNWZWN0b3IoKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2luZyBKU09OIHJlcG9uc2UgbWVzc2FnZXMg
aXMgbXVjaCBjbGVhbmVyIHRoYW4gdXNpbmcgc3RyaW5nIHByZWZpeGVzLCBJIGJlbGlldmUgdGhl
cmUKICAgICAgICAgICAgICAgICAvLyB3aWxsIGV2ZW4gYmUgb3RoZXIgcGFydHMgb2YgdGhlIHNw
ZWMgd2hlcmUgbm90IGhhdmluZyBzdHJ1Y3R1cmVkIGRhdGEgd2lsbCBiZSBiYWQuCkBAIC01NzQs
MTcgKzU3NCwxNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeQogICAgICAgICAgICAgICAgICAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3Nh
Z2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVzc2Fn
ZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdT
VF9NRU1EVU1QKCJtZXNzYWdlIiwgbWVzc2FnZS0+ZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS0+
c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UsIFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0LAorICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
a2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2UudHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6
OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEZNb3ZlKG1l
c3NhZ2UpKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9FUlJPUigibWVzc2FnZSBvZiBzaXplICV6dSBp
bmNvcnJlY3RseSBmb3JtYXR0ZWQiLCByZXNwb25zZU1lc3NhZ2UgPyByZXNwb25zZU1lc3NhZ2Ut
PnNpemUoKSA6IDApOwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQp
OworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEdT
VF9FUlJPUigidXBkYXRlIGxpY2Vuc2UgcmVwb3J0ZWQgZXJyb3Igc3RhdGUiKTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKGZhbHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7CiAgICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNz
aW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl91cGRhdGUobV9zZXNzaW9uLmdldCgp
LCByZXNwb25zZS0+ZGF0YUFzVUludDhQdHIoKSwgcmVzcG9uc2UtPnNpemUoKSkpCkBAIC01OTks
NyArNTk5LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihM
aWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghcmVz
cG9uc2VNZXNzYWdlKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuY29udmVy
dFRvSlNLZXlTdGF0dXNWZWN0b3IoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFN1Y2Nl
c3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmUpOworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuY29udmVydFRvSlNLZXlTdGF0dXNWZWN0b3IoKSwg
c3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkLCBTZXNz
aW9uTG9hZEZhaWx1cmU6Ok5vbmUpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFVzaW5nIEpTT04gcmVwb25zZSBtZXNzYWdlcyBpcyBtdWNoIGNsZWFuZXIg
dGhhbiB1c2luZyBzdHJpbmcgcHJlZml4ZXMsIEkgYmVsaWV2ZSB0aGVyZQogICAgICAgICAgICAg
ICAgIC8vIHdpbGwgZXZlbiBiZSBvdGhlciBwYXJ0cyBvZiB0aGUgc3BlYyB3aGVyZSBub3QgaGF2
aW5nIHN0cnVjdHVyZWQgZGF0YSB3aWxsIGJlIGJhZC4KQEAgLTYwOSwxMSArNjA5LDExIEBAIHZv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklECiAgICAgICAgICAgICAgICAgICAgIFJlZjxTaGFyZWRCdWZm
ZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOwog
ICAgICAgICAgICAgICAgICAgICBHU1RfREVCVUcoImdvdCBtZXNzYWdlIG9mIHNpemUgJXp1Iiwg
bWVzc2FnZS0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX01FTURVTVAoIm1lc3Nh
Z2UiLCBtZXNzYWdlLT5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLT5zaXplKCkpOwotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgc3RkOjpt
YWtlX3BhaXIocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnR5cGVPcihNZWRpYUtleU1lc3NhZ2VUeXBl
OjpMaWNlbnNlUmVxdWVzdCksCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om1ha2VfcGFpcihwYXJzZWRSZXNwb25zZU1lc3NhZ2Uu
dHlwZU9yKE1lZGlhS2V5TWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIFdURk1vdmUobWVzc2FnZSkpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwg
U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBHU1RfRVJST1IoIm1lc3NhZ2Ugb2Ygc2l6ZSAlenUgaW5jb3JyZWN0
bHkgZm9ybWF0dGVkIiwgcmVzcG9uc2VNZXNzYWdlID8gcmVzcG9uc2VNZXNzYWdlLT5zaXplKCkg
OiAwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIpOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQs
IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgU2Vzc2lv
bkxvYWRGYWlsdXJlOjpPdGhlcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgewpAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklECiAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlTWVzc2FnZVNpemUgPSByZXNwb25zZU1lc3Nh
Z2UgPyByZXNwb25zZU1lc3NhZ2UtPnNpemUoKSA6IDA7CiAgICAgICAgICAgICBTdHJpbmdWaWV3
IHJlc3BvbnNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXNwb25zZU1lc3NhZ2VE
YXRhKSwgcmVzcG9uc2VNZXNzYWdlU2l6ZSk7CiAgICAgICAgICAgICBHU1RfRVJST1IoInNlc3Np
b24gJXMgbm90IGxvYWRlZCwgcmVhc29uICVzIiwgbV9zZXNzaW9uSUQudXRmOCgpLmRhdGEoKSwg
cmVzcG9uc2UudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCwgc2Vz
c2lvbkxvYWRGYWlsdXJlRnJvbVRodW5kZXIocmVzcG9uc2UpKTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1
ZTo6RmFpbGVkLCBzZXNzaW9uTG9hZEZhaWx1cmVGcm9tVGh1bmRlcihyZXNwb25zZSkpOwogICAg
ICAgICB9CiAgICAgfSk7CiAgICAgaWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0
eSgpIHx8IG9wZW5jZG1fc2Vzc2lvbl9sb2FkKG1fc2Vzc2lvbi5nZXQoKSkpCkBAIC02NDYsNyAr
NjQ2LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0
YShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmICghYnVmZmVy
KQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5
U3RhdHVzOjpSZWxlYXNlZCksIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQp
OworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5
U3RhdHVzOjpSZWxlYXNlZCksIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQp
OwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZmZXIpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJzZWRSZXNwb25zZU1lc3NhZ2UpOwpAQCAtNjU3LDEyICs2NTcsMTIgQEAgdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNl
c3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBHU1RfV0FSTklORygibWVzc2FnZSBvZiBzaXplICV6dSBpbmNvcnJlY3RseSBmb3JtYXR0
ZWQgYXMgc2Vzc2lvbiAlcyByZW1vdmFsIGFuc3dlciIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgp
IDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNBcyhNZWRp
YUtleVN0YXR1czo6SW50ZXJuYWxFcnJvciksIFdURjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpOworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFsbEtleXNB
cyhNZWRpYUtleVN0YXR1czo6SW50ZXJuYWxFcnJvciksIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1Zh
bHVlOjpGYWlsZWQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJjb3VsZCBub3QgcmVtb3ZlIHNlc3Np
b24gJXMiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIGNhbGxiYWNr
KG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yKSwgV1RG
OjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CisgICAgICAgICAgICBjYWxsYmFjayht
X2tleVN0b3JlLmFsbEtleXNBcyhNZWRpYUtleVN0YXR1czo6SW50ZXJuYWxFcnJvciksIHN0ZDo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOwogICAgICAgICB9CiAgICAgfSk7CiAgICAg
aWYgKCFtX3Nlc3Npb24gfHwgbV9zZXNzaW9uSUQuaXNFbXB0eSgpIHx8IG9wZW5jZG1fc2Vzc2lv
bl9yZW1vdmUobV9zZXNzaW9uLmdldCgpKSkKQEAgLTY3OCw3ICs2NzgsNyBAQCBPcHRpb25hbDxD
RE1JbnN0YW5jZVRodW5kZXImPiBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjZG1JbnN0YW5j
ZVRodW5kZXIoKSBjbwogewogICAgIGF1dG8gaW5zdGFuY2UgPSBjZG1JbnN0YW5jZVByb3h5KCk7
CiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0RNSW5zdGFu
Y2VUaHVuZGVyJj4oKmluc3RhbmNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250cm9sbGVySGFyZkJ1enou
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRl
eHRDb250cm9sbGVySGFyZkJ1enouY3BwCmluZGV4IGY3MzE3YmExYzA5NTU1ZDcxZTE1MGI3YjBi
NDg5MmEzNTk1OTQzZTUuLjQwMWMyN2ViYjc4YWQ2YTkzYzI5YjRlZDNlOWIyMDAyNjFlZTIzOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0Nv
bXBsZXhUZXh0Q29udHJvbGxlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9Db21wbGV4VGV4dENvbnRyb2xsZXJIYXJmQnV6ei5jcHAK
QEAgLTQwNiw3ICs0MDYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VVNjcmlwdENvZGU+IGNoYXJhY3Rl
clNjcmlwdChVQ2hhcjMyIGNoYXJhY3RlcikKICAgICBVRXJyb3JDb2RlIGVycm9yQ29kZSA9IFVf
WkVST19FUlJPUjsKICAgICBVU2NyaXB0Q29kZSBzY3JpcHQgPSB1c2NyaXB0X2dldFNjcmlwdChj
aGFyYWN0ZXIsICZlcnJvckNvZGUpOwogICAgIGlmIChVX0ZBSUxVUkUoZXJyb3JDb2RlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gc2NyaXB0OwogfQogCkBAIC00MjIsMTEgKzQyMiwxMSBAQCBzdGF0aWMgT3B0
aW9uYWw8SEJSdW4+IGZpbmROZXh0UnVuKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIHVucwogICAgIFVDaGFyMzIgY2hhcmFjdGVyOwogICAgIHVuc2lnbmVkIGNsdXN0
ZXJMZW5ndGggPSAwOwogICAgIGlmICghdGV4dEl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBj
bHVzdGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gY3VycmVudFNjcmlwdCA9IGNoYXJhY3RlclNj
cmlwdChjaGFyYWN0ZXIpOwogICAgIGlmICghY3VycmVudFNjcmlwdCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2ln
bmVkIHN0YXJ0SW5kZXggPSBvZmZzZXQ7CiAgICAgZm9yICh0ZXh0SXRlcmF0b3IuYWR2YW5jZShj
bHVzdGVyTGVuZ3RoKTsgdGV4dEl0ZXJhdG9yLmNvbnN1bWUoY2hhcmFjdGVyLCBjbHVzdGVyTGVu
Z3RoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoY2x1c3Rlckxlbmd0aCkpIHsKQEAgLTQzNSw3ICs0
MzUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SEJSdW4+IGZpbmROZXh0UnVuKGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogCiAgICAgICAgIGF1dG8gbmV4dFNjcmlw
dCA9IGNoYXJhY3RlclNjcmlwdChjaGFyYWN0ZXIpOwogICAgICAgICBpZiAoIW5leHRTY3JpcHQp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICAvLyDCpzUuMSBIYW5kbGluZyBDaGFyYWN0ZXJzIHdpdGgg
dGhlIENvbW1vbiBTY3JpcHQgUHJvcGVydHkuCiAgICAgICAgIC8vIFByb2dyYW1zIG11c3QgcmVz
b2x2ZSBhbnkgb2YgdGhlIHNwZWNpYWwgU2NyaXB0IHByb3BlcnR5IHZhbHVlcywgc3VjaCBhcyBD
b21tb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28v
SVNPQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3gu
Y3BwCmluZGV4IGUwYTQ0NjZiYmRmNTUyMGFjMzM4YjcxNGU1MGI3M2U3ODI2Mjc3NTAuLmMwNmUz
YTYzMzg4NjBmMTFlYjBlYmNmYTQzOGQzNTIwMjY2ZjVkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lzby9JU09Cb3guY3BwCkBAIC0zNiwxNCArMzYsMTQgQEAg
SVNPQm94OjpQZWVrUmVzdWx0IElTT0JveDo6cGVla0JveChEYXRhVmlldyYgdmlldywgdW5zaWdu
ZWQgb2Zmc2V0KQogewogICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAgIGlmICghY2hlY2tlZFJl
YWQ8dWludDMyX3Q+KHNpemUsIHZpZXcsIG9mZnNldCwgQmlnRW5kaWFuKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZv
dXJDQyB0eXBlID0geyB1aW50MzJfdCB7IDAgfSB9OwogICAgIGlmICghY2hlY2tlZFJlYWQ8dWlu
dDMyX3Q+KHR5cGUsIHZpZXcsIG9mZnNldCwgQmlnRW5kaWFuKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChzaXpl
ID09IDEgJiYgIWNoZWNrZWRSZWFkPHVpbnQ2NF90PihzaXplLCB2aWV3LCBvZmZzZXQsIEJpZ0Vu
ZGlhbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgZWxzZSBpZiAoIXNpemUpCiAgICAgICAgIHNpemUgPSB2aWV3LmJ5dGVM
ZW5ndGgoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aXNvL0lTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVh
ZGVyQm94LmNwcAppbmRleCAxNTg4OWM0ZWE1NDg1ZmYyYzZiNTIwNGQzMmU4MzhmMmFjMzg5MzE2
Li43NmM1NGRmMTBlYTI0NTMxMzgyM2EzNWMyMjUzZDk1YWQwMmE0YzRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNw
ZWNpZmljSGVhZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9pc28vSVNPUHJvdGVjdGlvblN5c3RlbVNwZWNpZmljSGVhZGVyQm94LmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVj
aWZpY0hlYWRlckJveDo6cGVla1N5c3RlbUlEKEpTQwogewogICAgIGF1dG8gcGVla1Jlc3VsdCA9
IElTT0JveDo6cGVla0JveCh2aWV3LCBvZmZzZXQpOwogICAgIGlmICghcGVla1Jlc3VsdCB8fCBw
ZWVrUmVzdWx0LnZhbHVlKCkuZmlyc3QgIT0gYm94VHlwZU5hbWUoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIElTT1By
b3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hlYWRlckJveCBwc3NoQm94OwogICAgIHBzc2hCb3gucGFy
c2Uodmlldywgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lzby9JU09WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2lzby9JU09WVFRDdWUuaAppbmRleCA3ZmE2M2M3NDMxNjU2MDM1ZmVmMDk3YWY5ZTFiMmQ0OWU1
ZmE1M2ZlLi5lMjBiMTkxNzZjOTNmMzIyNmEyNmZiM2ZlMDcwN2JiMGQ3M2RkMzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pc28vSVNPVlRUQ3VlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaXNvL0lTT1ZUVEN1ZS5oCkBAIC03
NSwzNyArNzUsMzcgQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IHByZXNl
bnRhdGlvblRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlc2VudGF0aW9uVGltZTsKICAgICAg
ICAgaWYgKCFwcmVzZW50YXRpb25UaW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
TWVkaWFUaW1lPiBkdXJhdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkdXJhdGlvbjsKICAgICAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
c291cmNlSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gc291cmNlSUQ7CiAgICAgICAgIGlmICghc291
cmNlSUQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGlkZW50aWZpZXI7
CiAgICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVy
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBvcmlnaW5hbFN0YXJ0VGlt
ZTsKICAgICAgICAgZGVjb2RlciA+PiBvcmlnaW5hbFN0YXJ0VGltZTsKICAgICAgICAgaWYgKCFv
cmlnaW5hbFN0YXJ0VGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
c2V0dGluZ3M7CiAgICAgICAgIGRlY29kZXIgPj4gc2V0dGluZ3M7CiAgICAgICAgIGlmICghc2V0
dGluZ3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGN1ZVRleHQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gY3VlVGV4dDsKICAgICAgICAgaWYgKCFjdWVUZXh0KQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpwcmVzZW50YXRp
b25UaW1lKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQppbmRleCA4OWQ4ODJjNTdmNDc2MWU1NDZkZDQyNDcwMWYzM2QyZmIyMDMxZjM0Li4w
N2FhZThhZmZjYjI0ODUzMDk4ZGI2YTAxZDE1Y2M5ZDI5YzE0YzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC02OSw3ICs2OSw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTUkdCQTx1aW50OF90Pj4gbWFrZVNpbXBsZUNvbG9yRnJvbU5T
Q29sb3IoTlNDb2xvciAqY29sb3IpCiAgICAgLy8gRklYTUU6IEV4dGVuZGVkQ29sb3IgLSBuZWVk
cyB0byBoYW5kbGUgY29sb3Igc3BhY2VzLgogCiAgICAgaWYgKCFjb2xvcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENH
RmxvYXQgcmVkQ29tcG9uZW50OwogICAgIENHRmxvYXQgZ3JlZW5Db21wb25lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTGVnYWN5RGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCmluZGV4IDRlODEyYzcwMDU5MzBj
NGI0N2Q1ZDE0M2EwYmRkZTg1ODExMTFmYzcuLmI2NWQ4MTc3Mzc5MzY0NjZhMGU5MGQ1YTBjNzE3
NmFjNDE4OTNiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9MZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMu
Y3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWM6OnN0b3BOb3RpZmljYXRpb25NZWNoYW5pc20oKQogT3B0aW9uYWw8RnJhbWVzUGVyU2Vjb25k
PiBMZWdhY3lEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OmRpc3BsYXlOb21pbmFsRnJhbWVzUGVy
U2Vjb25kKCkKIHsKICAgICBpZiAoIWVuc3VyZURpc3BsYXlMaW5rKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAog
ICAgIHJldHVybiBub21pbmFsRnJhbWVzUGVyU2Vjb25kRnJvbURpc3BsYXlMaW5rKG1fZGlzcGxh
eUxpbmspOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggYmRm
MGVjMjU3Zjg3MWEyNTU3MmNlZTdkZmE4MDgxNzk2ODQxOWJlOC4uODI1MWJlZTIyN2JmNjkzYTEx
MWZhMWQwYjc0ZjI4OGFiOWU4ZjY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCkBAIC0yMzEsMjUgKzIzMSwyNSBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvUGl4ZWxCdWZmZQogewog
ICAgIC8vIFJlYWRpbmcgcHJlbXVsdGlwbGllZCBhbHBoYSB3b3VsZCBpbnZvbHZlIHVucHJlbXVs
dGlwbHlpbmcsIHdoaWNoIGlzIGxvc3N5LgogICAgIGlmIChjb250ZXh0QXR0cmlidXRlcygpLnBy
ZW11bHRpcGxpZWRBbHBoYSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQ
YWludGluZygpOwogfQogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKQogewogICAgIGlmICghbWFr
ZUNvbnRleHRDdXJyZW50KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQog
CiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21w
b3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCkKIHsKICAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVu
dCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmIChnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gcmVhZENvbXBvc2l0ZWRSZXN1bHRzKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggY2U0YzBmYjlhMjM3YWM4Yzcy
YTBjMjNmNzlmMGMwMjM1MzBkOTBhYi4uMTg0MWM1MWVjNzIxNWI5OTUzYzdmZjI0MjQ5NjJjMmE2
NzgzYjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFs
RnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBHTGlu
dCBwYWNrQWxpZ25tZW50ID0gNDsKICAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAK
aW5kZXggODBiOWY1ZTY3NzQ2ZmU0NWY4MmYwNmYxYTA3YWViOWJkNThjM2I1MS4uMzdlNGY4MzM2
Mzg0NDhhNGNhMjc0ZDBkNTE3ODVjMmQ3NDdhYTIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCkBAIC05MTksMTIgKzkxOSwxMiBAQCBPcHRpb25h
bDxTdHJpbmc+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptYXBwZWRTeW1ib2xJblNoYWRlclNv
dXJjZU1hcChQbGF0Zm9ybQogewogICAgIGF1dG8gcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAu
ZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBjb25zdCBhdXRvJiBzeW1ib2xNYXAgPSByZXN1bHQtPnZhbHVlLnN5bWJvbE1h
cChzeW1ib2xUeXBlKTsKICAgICBhdXRvIHN5bWJvbEVudHJ5ID0gc3ltYm9sTWFwLmZpbmQobmFt
ZSk7CiAgICAgaWYgKHN5bWJvbEVudHJ5ID09IHN5bWJvbE1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1
dG8mIG1hcHBlZE5hbWUgPSBzeW1ib2xFbnRyeS0+dmFsdWUuZ2V0KCkubWFwcGVkTmFtZTsKICAg
ICByZXR1cm4gU3RyaW5nKG1hcHBlZE5hbWUuY19zdHIoKSwgbWFwcGVkTmFtZS5sZW5ndGgoKSk7
CkBAIC05NzcsMTQgKzk3NywxNCBAQCBPcHRpb25hbDxTdHJpbmc+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpvcmlnaW5hbFN5bWJvbEluU2hhZGVyU291cmNlTWFwKFBsYXRmbwogewogICAgIGF1
dG8gcmVzdWx0ID0gbV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogICAgIGlmIChyZXN1
bHQgPT0gbV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb25zdCBhdXRvJiBzeW1i
b2xNYXAgPSByZXN1bHQtPnZhbHVlLnN5bWJvbE1hcChzeW1ib2xUeXBlKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHN5bWJvbEVudHJ5IDogc3ltYm9sTWFwKSB7CiAgICAgICAgIGlmIChuYW1lID09
IHN5bWJvbEVudHJ5LnZhbHVlLmdldCgpLm1hcHBlZE5hbWUuY19zdHIoKSkKICAgICAgICAgICAg
IHJldHVybiBzeW1ib2xFbnRyeS5rZXk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpvcmlnaW5hbFN5bWJvbE5hbWUoUGxhdGZvcm1HTE9iamVjdCBwcm9ncmFtLCBBTkdM
RVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDdmZjExMzJiMGM3NWJiYTY5
ZTE4YzI5MWQ1YWM3MGZlZjA4MzdkNWIuLjIyNTU2OGM2NDVkNmEzNDUyNDhlZTk5ZWNlNDk0Njk1
NzQzY2IwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAg
LTY5LDcgKzY5LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBHTGludCBw
YWNrQWxpZ25tZW50ID0gNDsKICAgICBib29sIG11c3RSZXN0b3JlUGFja0FsaWdubWVudCA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4NzY0MGY2ZjQ3ZDUxMzY0ZGQ4
NjE1ZDgwMTM2YjMwYzFjYWM5OGY0Li5iMDBiMWM4ZWJlNGZlYTkxNWRiOTc1YThhOGZlZmQ3N2Vk
NmI5ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbldpdGhSZXBsaWNh
KFRleHR1cmVNYXBwZXJQYWludE9wdGlvCiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnJlcGxpY2FUcmFuc2Zvcm0oKQogewogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlv
bk1hdHJpeChtX3N0YXRlLnJlcGxpY2FMYXllci0+bV9sYXllclRyYW5zZm9ybXMuY29tYmluZWQp
Ci0gICAgICAgIC5tdWx0aXBseShtX2xheWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pbnZlcnNlKCku
dmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgICAgIC5tdWx0aXBseShtX2xh
eWVyVHJhbnNmb3Jtcy5jb21iaW5lZC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSkpOwogfQogCiBzdGF0aWMgdm9pZCByZXNvbHZlT3ZlcmxhcHMoY29uc3QgSW50UmVj
dCYgbmV3UmVnaW9uLCBSZWdpb24mIG92ZXJsYXBSZWdpb24sIFJlZ2lvbiYgbm9uT3ZlcmxhcFJl
Z2lvbikKQEAgLTc0NywxNSArNzQ3LDE1IEBAIGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzeW5j
QW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUpCiAgICAgTmljb3NpYTo6QW5pbWF0aW9uOjpB
cHBsaWNhdGlvblJlc3VsdCBhcHBsaWNhdGlvblJlc3VsdHM7CiAgICAgbV9hbmltYXRpb25zLmFw
cGx5KGFwcGxpY2F0aW9uUmVzdWx0cywgdGltZSk7CiAKLSAgICBtX2xheWVyVHJhbnNmb3Jtcy5s
b2NhbFRyYW5zZm9ybSA9IGFwcGxpY2F0aW9uUmVzdWx0cy50cmFuc2Zvcm0udmFsdWVPcihtX3N0
YXRlLnRyYW5zZm9ybSk7Ci0gICAgbV9jdXJyZW50T3BhY2l0eSA9IGFwcGxpY2F0aW9uUmVzdWx0
cy5vcGFjaXR5LnZhbHVlT3IobV9zdGF0ZS5vcGFjaXR5KTsKLSAgICBtX2N1cnJlbnRGaWx0ZXJz
ID0gYXBwbGljYXRpb25SZXN1bHRzLmZpbHRlcnMudmFsdWVPcihtX3N0YXRlLmZpbHRlcnMpOwor
ICAgIG1fbGF5ZXJUcmFuc2Zvcm1zLmxvY2FsVHJhbnNmb3JtID0gYXBwbGljYXRpb25SZXN1bHRz
LnRyYW5zZm9ybS52YWx1ZV9vcihtX3N0YXRlLnRyYW5zZm9ybSk7CisgICAgbV9jdXJyZW50T3Bh
Y2l0eSA9IGFwcGxpY2F0aW9uUmVzdWx0cy5vcGFjaXR5LnZhbHVlX29yKG1fc3RhdGUub3BhY2l0
eSk7CisgICAgbV9jdXJyZW50RmlsdGVycyA9IGFwcGxpY2F0aW9uUmVzdWx0cy5maWx0ZXJzLnZh
bHVlX29yKG1fc3RhdGUuZmlsdGVycyk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CiAgICAgLy8gQ2FsY3VsYXRlIGxvY2FsVHJhbnNmb3JtIDUwbXMgaW4gdGhlIGZ1dHVyZS4KICAg
ICBOaWNvc2lhOjpBbmltYXRpb246OkFwcGxpY2F0aW9uUmVzdWx0IGZ1dHVyZUFwcGxpY2F0aW9u
UmVzdWx0czsKICAgICBtX2FuaW1hdGlvbnMuYXBwbHlLZWVwaW5nSW50ZXJuYWxTdGF0ZShmdXR1
cmVBcHBsaWNhdGlvblJlc3VsdHMsIHRpbWUgKyA1MF9tcyk7Ci0gICAgbV9sYXllclRyYW5zZm9y
bXMuZnV0dXJlTG9jYWxUcmFuc2Zvcm0gPSBmdXR1cmVBcHBsaWNhdGlvblJlc3VsdHMudHJhbnNm
b3JtLnZhbHVlT3IobV9sYXllclRyYW5zZm9ybXMubG9jYWxUcmFuc2Zvcm0pOworICAgIG1fbGF5
ZXJUcmFuc2Zvcm1zLmZ1dHVyZUxvY2FsVHJhbnNmb3JtID0gZnV0dXJlQXBwbGljYXRpb25SZXN1
bHRzLnRyYW5zZm9ybS52YWx1ZV9vcihtX2xheWVyVHJhbnNmb3Jtcy5sb2NhbFRyYW5zZm9ybSk7
CiAjZW5kaWYKIAogICAgIHJldHVybiBhcHBsaWNhdGlvblJlc3VsdHMuaGFzUnVubmluZ0FuaW1h
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IGU4M2JmMmRiNDg3MTZiNzc1YzUzYTc5ZmFkNTkxNjZlZjczNTA5
ZmUuLjg0NDUyMDZkZmRlNzllY2E3MmFlNDQ5NTdiN2M4MWU1M2MwYzk3OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBA
IC03NzIsNyArNzcyLDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgaW52
ZXJzZSBvZiB0aGUgbGF5ZXIgdHJhbnNmb3JtYXRpb24uIFRoZSBpbnZlcnNlIHRyYW5zZm9ybSB3
aWxsIGhhdmUgdGhlIGludmVyc2Ugb2YgdGhlCiAgICAgICAgIC8vIHNjYWxlRmFjdG9yIGFwcGxp
ZWQsIHNvIHdlIG5lZWQgdG8gc2NhbGUgaXQgYmFjay4KLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKS5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpbnZlcnNlID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKS5zY2FsZShtX2NvbnRlbnRzU2NhbGUpOwogCiAgICAgICAgIC8vIEFwcGx5
IHRoZSBpbnZlcnNlIHRyYW5zZm9ybSB0byB0aGUgdmlzaWJsZSByZWN0YW5nbGUsIHNvIHdlIGhh
dmUgdGhlIHZpc2libGUgcmVjdGFuZ2xlIGluIGxheWVyIGNvb3JkaW5hdGVzLgogICAgICAgICBG
bG9hdFJlY3QgcmVjdCA9IGludmVyc2UuY2xhbXBlZEJvdW5kc09mUHJvamVjdGVkUXVhZChGbG9h
dFF1YWQobV92aXNpYmxlUmVjdCkpOwpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgSW50UmVjdCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQogICAgIC8vIFJl
dHVybiBhIHByb2plY3Rpb24gb2YgdGhlIHZpc2libGUgcmVjdCAoc3VyZmFjZSBjb29yZGluYXRl
cykgb250byB0aGUgbGF5ZXIncyBwbGFuZSAobGF5ZXIgY29vcmRpbmF0ZXMpLgogICAgIC8vIFRo
ZSByZXN1bHRpbmcgcXVhZCBtaWdodCBiZSBzcXVld2VkIGFuZCB0aGUgdmlzaWJsZSByZWN0IGlz
IHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBxdWFkLAogICAgIC8vIHNvIGl0IG1pZ2h0IHNwcmVh
ZCBmdXJ0aGVyIHRoYW4gdGhlIHJlYWwgdmlzaWJsZSBhcmVhIChhbmQgdGhlbiBldmVuIG1vcmUg
YW1wbGlmaWVkIGJ5IHRoZSBjb3ZlciByZWN0IG11bHRpcGxpZXIpLgotICAgIEFTU0VSVChtX2Nh
Y2hlZEludmVyc2VUcmFuc2Zvcm0gPT0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVy
c2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBBU1NFUlQobV9jYWNo
ZWRJbnZlcnNlVHJhbnNmb3JtID09IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkpOwogICAgIEZsb2F0UmVjdCByZWN0
ID0gbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtLmNsYW1wZWRCb3VuZHNPZlByb2plY3RlZFF1YWQo
RmxvYXRRdWFkKG1fY29vcmRpbmF0b3ItPnZpc2libGVDb250ZW50c1JlY3QoKSkpOwogICAgIGNs
YW1wVG9Db250ZW50c1JlY3RJZlJlY3RJc0luZmluaXRlKHJlY3QsIHNpemUoKSk7CiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ludFJlY3QocmVjdCk7CkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKQog
ICAgIG1fbGF5ZXJUcmFuc2Zvcm0uc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY2hpbGRyZW5UcmFuc2Zv
cm0oKSk7CiAgICAgbV9sYXllclRyYW5zZm9ybS5jb21iaW5lVHJhbnNmb3JtcyhwYXJlbnQoKSA/
IGRvd25jYXN0PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4oKnBhcmVudCgpKS5tX2xheWVyVHJh
bnNmb3JtLmNvbWJpbmVkRm9yQ2hpbGRyZW4oKSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwog
Ci0gICAgbV9jYWNoZWRJbnZlcnNlVHJhbnNmb3JtID0gbV9sYXllclRyYW5zZm9ybS5jb21iaW5l
ZCgpLmludmVyc2UoKS52YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG1fY2Fj
aGVkSW52ZXJzZVRyYW5zZm9ybSA9IG1fbGF5ZXJUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNl
KCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAvLyBUaGUgY29tYmlu
ZWQgdHJhbnNmb3JtIHdpbGwgYmUgdXNlZCBpbiB0aWxlZEJhY2tpbmdTdG9yZVZpc2libGVSZWN0
LgogICAgIHNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRy
YW5zZm9ybS5jcHAKaW5kZXggM2MyY2MyYWZjOWFiODdmNDEyN2JiZTMyYmFmNjQxMDAwOWFhZDhh
My4uZDNjZjgxMDAzOWU2MjZiMDNhNmU1NzdmMzgyMTBiZDQ0YjBiNTU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zv
cm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
QWZmaW5lVHJhbnNmb3JtLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIE9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gQWZmaW5lVHJhbnNmb3JtOjppbnZlcnNlKCkgY29uc3QKIHsKICAgICBkb3VibGUg
ZGV0ZXJtaW5hbnQgPSBkZXQobV90cmFuc2Zvcm0pOwogICAgIGlmICghc3RkOjppc2Zpbml0ZShk
ZXRlcm1pbmFudCkgfHwgZGV0ZXJtaW5hbnQgPT0gMCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFmZmluZVRyYW5zZm9y
bSByZXN1bHQ7CiAgICAgaWYgKGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1TdGF0ZS5jcHAKaW5kZXggMzYwN2Q4YWU1YTUyNmQyMDhjNTU1YzYwZjIyYzRiYjFh
M2UzM2Q4NC4uN2Q2NDEzMGI5Yjg5ZjgwMjRkOTUxOTFkMjI5Yzk4MzVjY2M5NTI3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCBGbG9hdFBvaW50IFRy
YW5zZm9ybVN0YXRlOjptYXBwZWRQb2ludChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgIGlm
IChtX2RpcmVjdGlvbiA9PSBBcHBseVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAgcmV0dXJu
IG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPm1hcFBvaW50KHBvaW50KTsKIAotICAgIHJldHVybiBt
X2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVPcihUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOworICAgIHJldHVybiBtX2Fj
Y3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkucHJvamVjdFBvaW50KHBvaW50LCB3YXNDbGFtcGVkKTsKIH0KIAogRmxvYXRRdWFkIFRy
YW5zZm9ybVN0YXRlOjptYXBwZWRRdWFkKGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CkBAIC0xODks
NyArMTg5LDcgQEAgT3B0aW9uYWw8RmxvYXRRdWFkPiBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkU2Vj
b25kYXJ5UXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgICAgICAqd2FzQ2xhbXBlZCA9
IGZhbHNlOwogCiAgICAgaWYgKCFtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
RmxvYXRRdWFkIHF1YWQgPSAqbV9sYXN0UGxhbmFyU2Vjb25kYXJ5UXVhZDsKICAgICBtYXBRdWFk
KHF1YWQsIG1fZGlyZWN0aW9uLCB3YXNDbGFtcGVkKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBPcHRp
b25hbDxGbG9hdFF1YWQ+IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRTZWNvbmRhcnlRdWFkKGJvb2wq
IHdhc0NsYW1wZWQpIGNvbnN0CiB2b2lkIFRyYW5zZm9ybVN0YXRlOjpzZXRMYXN0UGxhbmFyU2Vj
b25kYXJ5UXVhZChjb25zdCBPcHRpb25hbDxGbG9hdFF1YWQ+JiBxdWFkKQogewogICAgIGlmICgh
cXVhZCkgewotICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gV1RGOjpudWxsb3B0
OworICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgVHJhbnNm
b3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGly
ZWN0aW9uLCBib29sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBxdWFkID0gbV9hY2N1
bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlT3IoVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSkucHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CisgICAgcXVhZCA9IG1fYWNjdW11bGF0
ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5w
cm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVkKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6
ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wq
IHdhc0NsYW1wZWQpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6Zmxh
dHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHcK
ICAgICAgICAgICAgICAgICBtX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkID0gdC5tYXBRdWFkKCpt
X2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52
YWx1ZU9yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CiAgICAgICAgIGlmIChtX21hcFBvaW50KQogICAgICAgICAgICAgbV9sYXN0
UGxhbmFyUG9pbnQgPSBpbnZlcnNlVHJhbnNmb3JtLnByb2plY3RQb2ludChtX2xhc3RQbGFuYXJQ
b2ludCk7CiAgICAgICAgIGlmIChtX21hcFF1YWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAKaW5kZXggYjJlYzE0NTg0YjU2YzA2Yzg2ODhhNzU4NmI5NDBhMjY4MjFk
ODA5Yy4uOGFhMzNlOGU2MTllYmQwMzAyZTU4M2E1MmMzNzFkNTVjMzY3M2FjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE1OTEsNyArMTU5MSw3IEBAIE9w
dGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aW52ZXJz
ZSgpIGNvbnN0CiAgICAgICAgIGRvdWJsZSBmID0gbTQyKCk7CiAgICAgICAgIGRvdWJsZSBkZXRl
cm1pbmFudCA9IGEgKiBkIC0gYiAqIGM7CiAgICAgICAgIGlmIChmYWJzKGRldGVybWluYW50KSA8
IFNNQUxMX05VTUJFUikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGRvdWJsZSBpbnZlcnNlRGV0ZXJt
aW5hbnQgPSAxIC8gZGV0ZXJtaW5hbnQ7CiAgICAgICAgIHJldHVybiB7ewpAQCAtMTYwOCw3ICsx
NjA4LDcgQEAgT3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFRyYW5zZm9ybWF0aW9uTWF0
cml4OjppbnZlcnNlKCkgY29uc3QKICAgICAvLyBGSVhNRTogVXNlIExVIGRlY29tcG9zaXRpb24g
dG8gYXBwbHkgdGhlIGludmVyc2UgaW5zdGVhZCBvZiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSBl
eHBsaWNpdGx5LgogICAgIC8vIENhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIG9mIGEgNHg0IG1hdHJp
eCB1c2luZyBjb2ZhY3RvcnMgaXMgbnVtZXJpY2FsbHkgdW5zdGFibGUgYW5kIHVubmVjZXNzYXJ5
IHRvIGFwcGx5IHRoZSBpbnZlcnNlIHRyYW5zZm9ybWF0aW9uIHRvIGEgcG9pbnQuCiAgICAgaWYg
KCFXZWJDb3JlOjppbnZlcnNlKG1fbWF0cml4LCBpbnZNYXQubV9tYXRyaXgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIGludk1hdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggNDdiOTcxM2VlYzNkYjg5YjVkZTllZDVk
ZmUyNWYxZGRiYmM2NmVhNy4uODE0NWM0N2ZmOTFkODdhZDY0NGRkMDRkYTI3YmQ3NTFlMTNmYWZj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKQEAgLTcxNCw3ICs3MTQsNyBAQCBPcHRpb25hbDxBU0NJSUxpdGVyYWw+
IEZvbnRDYWNoZTo6cGxhdGZvcm1BbHRlcm5hdGVGYW1pbHlOYW1lKGNvbnN0IFN0cmluZyYgZmFt
aQogICAgICAgICAgICAgcmV0dXJuICJNaWNyb3NvZnQgU2FucyBTZXJpZiJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggMGYzMzQzMDky
ZjU5MWI3NjJkYmExMzYyZTgwY2RhZDQ3MDZhNzRkMS4uYjdmODQyYjY5NzZiYzBlZWE3YzMwN2M3
MmRiY2NmMGFkOWRhNGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0xMjUsNyAr
MTI1LDcgQEAgUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2RlckRpcmVjdDJEOjpyZXBldGl0aW9u
Q291bnQoKSBjb25zdAogCiBPcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyRGlyZWN0MkQ6
OmhvdFNwb3QoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogSW50U2l6ZSBJbWFnZURlY29kZXJEaXJlY3QyRDo6ZnJhbWVT
aXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKQEAgLTE3NCw3ICsxNzQsNyBAQCBJbWFnZURlY29kZXI6OkZyYW1lTWV0YWRhdGEg
SW1hZ2VEZWNvZGVyRGlyZWN0MkQ6OmZyYW1lTWV0YWRhdGFBdEluZGV4KHNpemVfdCkgYwogICAg
IFByb3BWYXJpYW50SW5pdCgmdmFsdWUpOwogICAgIGhyID0gbWV0YWRhdGEtPkdldE1ldGFkYXRh
QnlOYW1lKEwiU3lzdGVtLlBob3RvLk9yaWVudGF0aW9uIiwgJnZhbHVlKTsKICAgICBpZiAoU1VD
Q0VFREVEKGhyKSkKLSAgICAgICAgcmV0dXJuIHsgSW1hZ2VPcmllbnRhdGlvbihzdGF0aWNfY2Fz
dDxJbWFnZU9yaWVudGF0aW9uOjpPcmllbnRhdGlvbj4odmFsdWUudWlWYWwpKSwgV1RGOjpudWxs
b3B0IH07CisgICAgICAgIHJldHVybiB7IEltYWdlT3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8SW1h
Z2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24+KHZhbHVlLnVpVmFsKSksIHN0ZDo6bnVsbG9wdCB9
OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCmluZGV4IDU3
YzEyZmMxMzY2OWM4YmEwMTkzYWQ2YzUxOWY5ZGM1NjFiYmQ0ODMuLjk5ZDZhMjFlMjE4NzA2ZWQ5
N2ViNzE5YTJjZDUzNjBiYTNjMDk2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaApAQCAt
MTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJz
b3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQKICAgICAvLyBhbmQgcmV0dXJu
cyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KLSAgICBPcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjpu
dWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudD4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA3NDMzN2YxNTI0
NGZiMjJkMGZlZmY1MWYxZWZmZjFkYzk2OWNjZDEyLi5jMThkMjVjZmU2YjIxOGY0YjY4YjgyNjM5
YTgwZmQ0YjQzMWRiMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTIwLDcg
KzEyMCw3IEBAIE9wdGlvbmFsPEludFBvaW50PiBJQ09JbWFnZURlY29kZXI6OmhvdFNwb3QoKSBj
b25zdAogT3B0aW9uYWw8SW50UG9pbnQ+IElDT0ltYWdlRGVjb2Rlcjo6aG90U3BvdEF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA+PSBtX2RpckVudHJpZXMuc2l6
ZSgpIHx8IG1fZmlsZVR5cGUgIT0gQ1VSU09SKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1fZGlyRW50cmll
c1tpbmRleF0ubV9ob3RTcG90OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCmluZGV4IDIwY2I3
YjZmN2I5OTBmMjUyNDk0YWIxZDlkM2JhNzg0OGVlOWQxN2QuLjJkOWY5YTMzYjE1YTIwNTI4NDNi
YzZmZjM2Mjg2YzBkMjI3ZTQ5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIC8vIGNvdWxkIGJlIGRlY29kZWQuCiAgICAgYm9vbCBw
cm9jZXNzRGlyZWN0b3J5RW50cmllcygpOwogCi0gICAgLy8gUmV0dXJucyB0aGUgaG90LXNwb3Qg
Zm9yIHxpbmRleHwsIHJldHVybnMgV1RGOjpudWxsb3B0IGlmIHRoZXJlIGlzIG5vbmUuCisgICAg
Ly8gUmV0dXJucyB0aGUgaG90LXNwb3QgZm9yIHxpbmRleHwsIHJldHVybnMgc3RkOjpudWxsb3B0
IGlmIHRoZXJlIGlzIG5vbmUuCiAgICAgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3RBdEluZGV4
KHNpemVfdCkgY29uc3Q7CiAKICAgICAvLyBSZWFkcyBhbmQgcmV0dXJucyBhIGRpcmVjdG9yeSBl
bnRyeSBmcm9tIHRoZSBjdXJyZW50IG9mZnNldCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvTGVnYWN5VGlsZUNhY2hlLmgKaW5kZXggOWEyYWRhYmZlMDA0ZGEzOWY1YzFjODJj
MzE4YmRjODM1NGJiYzQ0OS4uNTc2MTZlODE1NGM3ZjhhZTIwY2EyYjFhYjIzNDRmY2Q1YTY0MjI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0xlZ2FjeVRpbGVDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9MZWdhY3lUaWxlQ2FjaGUuaApA
QCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0aWxlQ2FwYWNpdHlGb3JH
cmlkKExlZ2FjeVRpbGVHcmlkKik7CiAgICAgQ29sb3IgY29sb3JGb3JHcmlkVGlsZUJvcmRlcihM
ZWdhY3lUaWxlR3JpZCopIGNvbnN0OwogICAgIGJvb2wgc2V0T3ZlcnJpZGVWaXNpYmxlUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGNsZWFyT3ZlcnJpZGVWaXNpYmxlUmVjdCgpIHsg
bV9vdmVycmlkZVZpc2libGVSZWN0ID0gV1RGOjpudWxsb3B0OyB9CisgICAgdm9pZCBjbGVhck92
ZXJyaWRlVmlzaWJsZVJlY3QoKSB7IG1fb3ZlcnJpZGVWaXNpYmxlUmVjdCA9IHN0ZDo6bnVsbG9w
dDsgfQogCiAgICAgdm9pZCBkb1BlbmRpbmdSZXBhaW50cygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDc5ZjVhYmFiOGUyYTRkOGU2ZDI0
NjczNWNjOGY0NmFjZjliMDNkNGIuLjJkZTFiY2IwODdmNTNjZGJmNjNkMDFkM2FjMjkwNGNiZDg4
OThjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQog
CiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5U
ZXh0VVJMUmVhZGluZ1BvbGljeSBhbGxvd1VSTCwgT3B0aW9uYWw8c2l6ZV90PiBpdGVtSW5kZXgp
CiB7Ci0gICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlT3IoMCk7Cisg
ICAgYXV0byBpdGVtSW5kZXhUb1F1ZXJ5ID0gaXRlbUluZGV4LnZhbHVlX29yKDApOwogCiAgICAg
UGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFz
dGVib2FyZFN0cmF0ZWd5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGU3NTVjZDIyNmI0YWRlZGIyMzlhZjQ1
OGI2MGE0ZTMxZTMxM2M0ZGEuLmMyYzg4ZjBkMmQ0MGVlYjBkOTBkM2U0ZTAxNGZkNDAwNzFkNmMx
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbQpAQCAtMjAyLDEwICsyMDIsMTAgQEAgc3RhdGljIFBhc3RlYm9hcmRJdGVt
UHJlc2VudGF0aW9uU3R5bGUgcGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShVSVByZWZl
cnIKIE9wdGlvbmFsPFBhc3RlYm9hcmRJdGVtSW5mbz4gUGxhdGZvcm1QYXN0ZWJvYXJkOjppbmZv
cm1hdGlvbkZvckl0ZW1BdEluZGV4KHNpemVfdCBpbmRleCwgaW50NjRfdCBjaGFuZ2VDb3VudCkK
IHsKICAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oW21fcGFzdGVib2Fy
ZCBudW1iZXJPZkl0ZW1zXSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAodGhpcy0+Y2hhbmdlQ291bnQoKSAhPSBj
aGFuZ2VDb3VudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvOwogICAgIE5TSXRl
bVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbW21fcGFzdGVib2FyZCBpdGVtUHJvdmlkZXJzXSBv
YmplY3RBdEluZGV4OmluZGV4XTsKQEAgLTI4Myw3ICsyODMsNyBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKIAogT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90LCBpbnQ2NF90KQog
ewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29y
ZU1vdGlvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQ29yZU1v
dGlvbk1hbmFnZXIubW0KaW5kZXggZWRjOGIzYzMyZWEwMWY5ODZkY2I4YzllMjYzM2E0NGZkNjc0
NWRlMi4uNTc2OWU5YTUzZjQyZmNhMmQ0YjE4MTA0NDZkMmY4MGY1NjRmZjc1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQpA
QCAtMjIzLDcgKzIyMyw3IEBAIC0gKHZvaWQpc2VuZEFjY2VsZXJvbWV0ZXJEYXRhOihDTUFjY2Vs
ZXJvbWV0ZXJEYXRhICopbmV3QWNjZWxlcmF0aW9uCiAKICAgICAgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBtb3Rpb25DbGllbnRzKSB7CiAgICAgICAgICAgICBpZiAoY2xpZW50KQotICAgICAgICAg
ICAgICAgIGNsaWVudC0+bW90aW9uQ2hhbmdlZCgwLCAwLCAwLCBhY2NlbC54ICoga0dyYXZpdHks
IGFjY2VsLnkgKiBrR3Jhdml0eSwgYWNjZWwueiAqIGtHcmF2aXR5LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjbGllbnQtPm1vdGlv
bkNoYW5nZWQoMCwgMCwgMCwgYWNjZWwueCAqIGtHcmF2aXR5LCBhY2NlbC55ICoga0dyYXZpdHks
IGFjY2VsLnogKiBrR3Jhdml0eSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDY5YTgzMzY3MjRiNzMw
NDNmYmQzNWY2NjNmODkyZDZiOTA0NWFjNGUuLjU0ODIzYTJkMTU1ZmRiYjI1NmM4NDY2YzVhMTNi
ODUzNmI2MTZmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNTMzLDExICs1MzMsMTEgQEAgaW50NjRfdCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4m
IGl0ZW1EYXRhKQogT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoc2l6ZV90IGluZGV4LCBpbnQ2NF90IGNoYW5n
ZUNvdW50KQogewogICAgIGlmIChjaGFuZ2VDb3VudCAhPSBbbV9wYXN0ZWJvYXJkIGNoYW5nZUNv
dW50XSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE5TUGFzdGVib2FyZEl0ZW0gKml0ZW0gPSBpdGVtQXRJbmRleChpbmRl
eCk7CiAgICAgaWYgKCFpdGVtKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUGFzdGVib2FyZEl0ZW1JbmZvIGluZm87CiAg
ICAgTlNBcnJheTxOU1Bhc3RlYm9hcmRUeXBlPiAqcGxhdGZvcm1UeXBlcyA9IFtpdGVtIHR5cGVz
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxDb250cm9s
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0K
aW5kZXggMWM2Njg2ZjgxM2Y5NDhmNWUxMTg3YjRkNWY4ZDJlNGNlMzRjMjE3ZS4uZTUyZDZiYTJk
MWU1YmFhN2MwYjM0Mjg1ZjAwN2QwOTZiMDI2MmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbENvbnRyb2xsZXIubW0KQEAgLTM0Niw3ICszNDYsNyBAQCBPcHRp
b25hbDxTY3JvbGxEaXJlY3Rpb24+IFNjcm9sbENvbnRyb2xsZXI6OmRpcmVjdGlvbkZyb21FdmVu
dChjb25zdCBQbGF0Zm9ybVdoZQogICAgICAgICAgICAgICAgIHJldHVybiBTY3JvbGxSaWdodDsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgWSBmaXJzdCBiZWNhdXNlIHZl
cnRpY2FsIHNjcm9sbGluZyBkb21pbmF0ZXMuCkBAIC0zNjIsNyArMzYyLDcgQEAgT3B0aW9uYWw8
U2Nyb2xsRGlyZWN0aW9uPiBTY3JvbGxDb250cm9sbGVyOjpkaXJlY3Rpb25Gcm9tRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGUKICAgICBpZiAod2hlZWxEZWx0YS53aWR0aCgpIDwgMCkKICAgICAgICAg
cmV0dXJuIFNjcm9sbFJpZ2h0OwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IDMzNDRhMzQ4YjRiZDE2NWYzY2Y1
ZmViNjdhMjQ0MjAxYThmYjZkZDQuLmY3ZGMyMjAwYzdkNWI0YjNhYmNjMTAyZDc5ZTJlYmNhY2Y5
OWFlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTgwNCw3
ICs4MDQsNyBAQCBPcHRpb25hbDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBUaGVtZU1hYzo6Y29u
dHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRgogICAgICAgICByZXR1cm4gZm9udERl
c2NyaXB0aW9uOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvQXVkaW9Db25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRp
b0NvbmZpZ3VyYXRpb24uaAppbmRleCA1NzY3OWM0MjkyZjlhMDA1MjE4NWY2ZjkzOWU1ZmU1ODA4
YmJjOGVkLi5kMDk1NTY0NDQ0MGYyYmFkMzIyMjIwN2E1MTI2MzRlYzYxNDI1ZWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9BdWRpb0NvbmZp
Z3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGll
cy9BdWRpb0NvbmZpZ3VyYXRpb24uaApAQCAtNTcsMjcgKzU3LDI3IEBAIE9wdGlvbmFsPEF1ZGlv
Q29uZmlndXJhdGlvbj4gQXVkaW9Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOwogICAgIGRlY29kZXIgPj4gY29u
dGVudFR5cGU7CiAgICAgaWYgKCFjb250ZW50VHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmlu
Zz4gY2hhbm5lbHM7CiAgICAgZGVjb2RlciA+PiBjaGFubmVsczsKICAgICBpZiAoIWNoYW5uZWxz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDY0X3Q+PiBiaXRyYXRlOwogICAgIGRl
Y29kZXIgPj4gYml0cmF0ZTsKICAgICBpZiAoIWJpdHJhdGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxP
cHRpb25hbDx1aW50MzJfdD4+IHNhbXBsZVJhdGU7CiAgICAgZGVjb2RlciA+PiBzYW1wbGVSYXRl
OwogICAgIGlmICghc2FtcGxlUmF0ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPGJvb2w+
PiBzcGF0aWFsUmVuZGVyaW5nOwogICAgIGRlY29kZXIgPj4gc3BhdGlhbFJlbmRlcmluZzsKICAg
ICBpZiAoIXNwYXRpYWxSZW5kZXJpbmcpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgKmNv
bnRlbnRUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBh
YmlsaXRpZXMvTWVkaWFDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAppbmRleCBjMDg2OGU0YWI5ZDRl
MDk4YWJjNTE5MDQ3ZjFmNTZiYWYzNTQ0OGUxLi5hYTkwOWQzOGExYjdiY2FkODAxYzAyNTA2M2E1
ZmE1MDYwMWI1OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtNTIsMTIgKzUy
LDEyIEBAIE9wdGlvbmFsPE1lZGlhQ29uZmlndXJhdGlvbj4gTWVkaWFDb25maWd1cmF0aW9uOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxPcHRpb25hbDxWaWRlb0NvbmZp
Z3VyYXRpb24+PiB2aWRlbzsKICAgICBkZWNvZGVyID4+IHZpZGVvOwogICAgIGlmICghdmlkZW8p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxBdWRpb0NvbmZpZ3VyYXRpb24+PiBhdWRpbzsK
ICAgICBkZWNvZGVyID4+IGF1ZGlvOwogICAgIGlmICghYXVkaW8pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
e3sKICAgICAgICAgKnZpZGVvLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhY2FwYWJpbGl0aWVzL01lZGlhRGVjb2RpbmdDb25maWd1cmF0
aW9uLmgKaW5kZXggYTQ3YmQyNzgxOGIzMzliMDM4MzQ0ZWIzOWVmOGNmNjczNWM2M2EzZC4uMjI2
MzJjZjAxNmU4NTUxOGQxN2YxODljNDQ4YTYwMzVhZDcxZWY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVkaWFEZWNvZGluZ0NvbmZpZ3Vy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9N
ZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbi5oCkBAIC01MSwxNyArNTEsMTcgQEAgT3B0aW9uYWw8
TWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24+IE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uOjpk
ZWNvZGUoRGVjb2RlciYKIHsKICAgICBhdXRvIG1lZGlhQ29uZmlndXJhdGlvbiA9IE1lZGlhQ29u
ZmlndXJhdGlvbjo6ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghbWVkaWFDb25maWd1cmF0aW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgT3B0aW9uYWw8TWVkaWFEZWNvZGluZ1R5cGU+IHR5cGU7CiAgICAgZGVjb2Rl
ciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGNhbkV4
cG9zZVZQOTsKICAgICBkZWNvZGVyID4+IGNhbkV4cG9zZVZQOTsKICAgICBpZiAoIWNhbkV4cG9z
ZVZQOSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAqbWVkaWFDb25maWd1cmF0aW9uLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvTWVk
aWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
Y2FwYWJpbGl0aWVzL01lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uLmgKaW5kZXggYmY3ODhkM2Jm
YzA4MjcxN2M0YjBjZWIxMjZiZDBmMzUwYzRmM2JkZC4uMTY1ZGM0ZjJmODY2Yjk1MjIwYzdiYTY2
MGM4ZDQ3MWUwMTg3Y2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFjYXBhYmlsaXRpZXMvTWVkaWFFbmNvZGluZ0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9NZWRpYUVuY29kaW5nQ29uZmlndXJh
dGlvbi5oCkBAIC00OSwxMiArNDksMTIgQEAgT3B0aW9uYWw8TWVkaWFFbmNvZGluZ0NvbmZpZ3Vy
YXRpb24+IE1lZGlhRW5jb2RpbmdDb25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2RlciYKIHsKICAg
ICBhdXRvIG1lZGlhQ29uZmlndXJhdGlvbiA9IE1lZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKGRl
Y29kZXIpOwogICAgIGlmICghbWVkaWFDb25maWd1cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
TWVkaWFFbmNvZGluZ1R5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICgh
dHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAqbWVkaWFDb25maWd1cmF0aW9uLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFjYXBhYmlsaXRpZXMvVmlk
ZW9Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxp
dGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaAppbmRleCA0MTcwODZhNjUwNGQ3ZWE0ZDlmMTNkZWYw
MGQ4ZDNkMWU0NjAyNzJlLi43YTk1YmZiMjhhOTE4MmQ5M2FhYWI4NDVhMzQ4YzljOWNlODU0MTBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNhcGFiaWxpdGllcy9W
aWRlb0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYWNh
cGFiaWxpdGllcy9WaWRlb0NvbmZpZ3VyYXRpb24uaApAQCAtNjgsNDcgKzY4LDQ3IEBAIE9wdGlv
bmFsPFZpZGVvQ29uZmlndXJhdGlvbj4gVmlkZW9Db25maWd1cmF0aW9uOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlOwogICAgIGRlY29k
ZXIgPj4gY29udGVudFR5cGU7CiAgICAgaWYgKCFjb250ZW50VHlwZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPHVpbnQzMl90PiB3aWR0aDsKICAgICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lk
dGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50MzJfdD4gaGVpZ2h0OwogICAgIGRlY29kZXIgPj4g
aGVpZ2h0OwogICAgIGlmICghaGVpZ2h0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGJp
dHJhdGU7CiAgICAgZGVjb2RlciA+PiBiaXRyYXRlOwogICAgIGlmICghYml0cmF0ZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPGRvdWJsZT4gZnJhbWVyYXRlOwogICAgIGRlY29kZXIgPj4gZnJhbWVyYXRl
OwogICAgIGlmICghZnJhbWVyYXRlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+
IGFscGhhQ2hhbm5lbDsKICAgICBkZWNvZGVyID4+IGFscGhhQ2hhbm5lbDsKICAgICBpZiAoIWFs
cGhhQ2hhbm5lbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPENvbG9yR2FtdXQ+PiBjb2xv
ckdhbXV0OwogICAgIGRlY29kZXIgPj4gY29sb3JHYW11dDsKICAgICBpZiAoIWNvbG9yR2FtdXQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxIZHJNZXRhZGF0YVR5cGU+PiBoZHJNZXRhZGF0
YVR5cGU7CiAgICAgZGVjb2RlciA+PiBoZHJNZXRhZGF0YVR5cGU7CiAgICAgaWYgKCFoZHJNZXRh
ZGF0YVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxUcmFuc2ZlckZ1bmN0aW9uPj4g
dHJhbnNmZXJGdW5jdGlvbjsKICAgICBkZWNvZGVyID4+IHRyYW5zZmVyRnVuY3Rpb247CiAgICAg
aWYgKCF0cmFuc2ZlckZ1bmN0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgICpjb250
ZW50VHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9ucy5oCmluZGV4IDMxZWJk
NjhjMmRjNGIyNmMzOGY5NjYxNDAwYzdlNmRkYjllOTA0NjUuLmRlNzQ4NDM4OGFjZTIxYWQxNTRi
YWJjMjFjZDRhNWE1ZTM0NWQ2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVPcHRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU9wdGlv
bnMuaApAQCAtNTQsMjIgKzU0LDIyIEBAIGlubGluZSBPcHRpb25hbDxNZWRpYVJlY29yZGVyUHJp
dmF0ZU9wdGlvbnM+IE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9uczo6ZGVjb2RlCiB7CiAgICAg
U3RyaW5nIG1pbWVUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZVR5cGUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8dW5zaWduZWQ+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAg
ICAgZGVjb2RlciA+PiBhdWRpb0JpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFhdWRpb0JpdHNQZXJT
ZWNvbmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDx1bnNpZ25lZD4+IHZpZGVvQml0c1Bl
clNlY29uZDsKICAgICBkZWNvZGVyID4+IHZpZGVvQml0c1BlclNlY29uZDsKICAgICBpZiAoIXZp
ZGVvQml0c1BlclNlY29uZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVuc2lnbmVkPj4g
Yml0c1BlclNlY29uZDsKICAgICBkZWNvZGVyID4+IGJpdHNQZXJTZWNvbmQ7CiAgICAgaWYgKCFi
aXRzUGVyU2Vjb25kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIE1lZGlhUmVjb3JkZXJQcml2YXRlT3B0aW9u
cyB7IFdURk1vdmUobWltZVR5cGUpLCAqYXVkaW9CaXRzUGVyU2Vjb25kLCAqdmlkZW9CaXRzUGVy
U2Vjb25kLCAqYml0c1BlclNlY29uZCB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCBkOGI0MGI2MTE5MTNhZTViMjk1MjkxZTU1YmQ1
YTRiYTlhZDVjYTQwLi41MWEzZTE4YTJjZWRkM2NkNWRhOTNmMzRlYmYzNzExZTAyMGY4YjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1
ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAt
NTMwLDcgKzUzMCw3IEBAIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJlZj4gQXVkaW9TYW1wbGVC
dWZmZXJDb21wcmVzc29yOjp0YWtlT3V0cHV0U2FtcGxlQnVmZmVyCiAKIHVuc2lnbmVkIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6Yml0UmF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
b3V0cHV0Qml0UmF0ZS52YWx1ZU9yKDApOworICAgIHJldHVybiBtX291dHB1dEJpdFJhdGUudmFs
dWVfb3IoMCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNv
bXByZXNzb3IubW0KaW5kZXggYzdkNjk1YTAxNWJmN2VjZWFiYmQwZDIwYmY4MzU1MjQxYTk1YWUw
ZC4uNzZkNTZkN2I4ZDEzYzcyZWEzOWZjMzQ5OWQxNzk4OTk3MTdmMGU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1
ZmZlckNvbXByZXNzb3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTIxOCw3ICsyMTgs
NyBAQCBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+IFZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvcjo6dGFrZU91dHB1dFNhbXBsZUJ1ZmZlcgogCiB1bnNpZ25lZCBWaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3I6OmJpdFJhdGUoKSBjb25zdAogewotICAgIHJldHVybiBtX291dHB1dEJpdFJh
dGUudmFsdWVPcigwKTsKKyAgICByZXR1cm4gbV9vdXRwdXRCaXRSYXRlLnZhbHVlX29yKDApOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0
dXJlRGV2aWNlLmgKaW5kZXggOWE4OGQxNmViYmY5M2VjNWVlZDY5M2MxNzFhMjU4N2Y5MmUxNzll
Zi4uNWI4MWE0NjNkMDFhMWU4ZjRlOGI3OGQ4ZDBiMTA0YTZhMzhmZGFjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2UuaApAQCAt
OTUsMzcgKzk1LDM3IEBAIHB1YmxpYzoKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBwZXJzaXN0
ZW50SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAgICAgICBpZiAoIXBl
cnNpc3RlbnRJZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFiZWw7
CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGdyb3VwSWQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gZ3JvdXBJZDsKICAgICAgICAgaWYgKCFncm91cElkKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVkOwogICAg
ICAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBp
c0RlZmF1bHQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNEZWZhdWx0OwogICAgICAgICBpZiAoIWlz
RGVmYXVsdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U6OkRl
dmljZVR5cGU+IHR5cGU7CiAgICAgICAgIGRlY29kZXIgPj4gdHlwZTsKICAgICAgICAgaWYgKCF0
eXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNb2NrRGV2aWNlOwog
ICAgICAgICBkZWNvZGVyID4+IGlzTW9ja0RldmljZTsKICAgICAgICAgaWYgKCFpc01vY2tEZXZp
Y2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBkZXZpY2Ug
PSB7eyBXVEZNb3ZlKCpwZXJzaXN0ZW50SWQpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqbGFi
ZWwpLCBXVEZNb3ZlKCpncm91cElkKSB9fTsKICAgICAgICAgZGV2aWNlLT5zZXRFbmFibGVkKCpl
bmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCAxYTc1M2ExMGJlNzllN2M0Mzk4
NWIyZTU4MGQ1NDkxYjE4ZTU3NGYxLi4zNmQyNjFmYzk0NTlmZWZmMjU5MTMxNDNjZWVhNWQ5MDM3
ZTFlYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9D
YXB0dXJlRGV2aWNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCkBAIC00MCw2ICs0MCwxNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjp+Q2FwdHVyZURldmljZU1h
bmFnZXIoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgQ2FwdHVyZURldmljZU1hbmFnZXI6OmNvbXB1dGVD
YXB0dXJlRGV2aWNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7Cisg
ICAgY2FsbGJhY2soKTsKK30KKworc3RkOjpvcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBDYXB0dXJl
RGV2aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SUQoQ2FwdHVyZURldmlj
ZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworfQorCiBDYXB0dXJlRGV2aWNlIENhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJlRGV2aWNl
RnJvbVBlcnNpc3RlbnRJRChjb25zdCBTdHJpbmcmIGNhcHR1cmVEZXZpY2VJRCkKIHsKICAgICBm
b3IgKGF1dG8mIGRldmljZSA6IGNhcHR1cmVEZXZpY2VzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9DYXB0dXJlRGV2aWNlTWFuYWdlci5o
CmluZGV4IGM3YWZmYjY5MDg3OWFjMDA1NTdhNTgzMDQwYTM3YTgxNmFjODIzODguLmQxYzVjODc3
MDE4N2QwODZiODc0YzBkMjlkNzkwNWMyOTEzNmY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vQ2FwdHVyZURldmljZU1hbmFnZXIuaApA
QCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBDYXB0dXJlRGV2aWNlTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIGNhcHR1cmVEZXZpY2VzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxi
YWNrKSB7IGNhbGxiYWNrKCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPENhcHR1cmVEZXZpY2U+
IGNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUs
IGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlQ2FwdHVyZURldmljZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8Q2FwdHVyZURldmljZT4gY2FwdHVyZURldmljZVdpdGhQ
ZXJzaXN0ZW50SUQoQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSwgY29uc3QgU3RyaW5nJik7CiAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5DYXB0dXJlRGV2aWNlTWFuYWdlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50
cy5oCmluZGV4IGU5OTBhMzIxYTdkZDdlNjdlOGU1N2VkYWI3ZDAzZmM4YzVkZTYyMjMuLmViMjk0
OWY0ZTdjNWVkOWI1N2Q1M2NlOWZjZDc3NTNhN2M0YmRmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTcw
MCwzNCArNzAwLDM0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIE1lZGlhVHJhY2tDb25zdHJh
aW50U2V0TWFwIG1hcDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV93aWR0aCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9oZWlnaHQpKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fc2FtcGxlUmF0ZSkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXAubV9zYW1wbGVTaXpl
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fYXNwZWN0
UmF0aW8pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFwLm1fZnJh
bWVSYXRlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX3Zv
bHVtZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hcC5tX2Vj
aG9DYW5jZWxsYXRpb24pKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWFwLm1fZGlzcGxheVN1cmZhY2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWFwLm1fbG9naWNhbFN1cmZhY2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtYXAubV9mYWNpbmdNb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1hcC5tX2RldmljZUlkKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKG1hcC5tX2dyb3VwSWQpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIG1hcDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVxdWVzdC5oCmluZGV4IDUwYzgzYjBiMzIzMjgxNzg5NGYx
ZDI5NGIxOWE5YzE5NDY3ZmRiY2IuLjU5ZDVmYTNmMzcyZTRhZTcxODU1MDg0MjU3YWQ0NjRjYmIz
MWQyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVxdWVzdC5oCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBNZWRpYVN0
cmVhbVJlcXVlc3QgewogICAgICAgICBpZiAoZGVjb2Rlci5kZWNvZGUocmVxdWVzdC50eXBlKSAm
JiBkZWNvZGVyLmRlY29kZShyZXF1ZXN0LmF1ZGlvQ29uc3RyYWludHMpICYmIGRlY29kZXIuZGVj
b2RlKHJlcXVlc3QudmlkZW9Db25zdHJhaW50cykgJiYgZGVjb2Rlci5kZWNvZGUocmVxdWVzdC5p
c1VzZXJHZXN0dXJlUHJpdmlsZWRnZWQpKQogICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7CiAK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCmluZGV4IGUzNDAyZWJh
YWYzMzY0MjQ3YTQzMWFhZWViZWM5NDU4ZWQ1ZDBmNzkuLmY2M2Q4ZjY2MGRlNDI1ZTk1OWU3MzI2
NzBkNzk3MzU5ZTU2NjE5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSWRlbnRpZmllci5oCkBAIC01MSwx
MiArNTEsMTIgQEAgaW5saW5lIE9wdGlvbmFsPFJUQ0RhdGFDaGFubmVsSWRlbnRpZmllcj4gUlRD
RGF0YUNoYW5uZWxJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2QKICAgICBPcHRpb25hbDxQcm9jZXNz
SWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRl
bnRpZmllcjsKICAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
UlRDRGF0YUNoYW5uZWxMb2NhbElkZW50aWZpZXI+IGNoYW5uZWxJZGVudGlmaWVyOwogICAgIGRl
Y29kZXIgPj4gY2hhbm5lbElkZW50aWZpZXI7CiAgICAgaWYgKCFjaGFubmVsSWRlbnRpZmllcikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIHsgKnByb2Nlc3NJZGVudGlm
aWVyLCAqY2hhbm5lbElkZW50aWZpZXIgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lSW5jb21pbmdWaWRl
b1NvdXJjZS5jcHAKaW5kZXggZTY0ZjYwZTA0ODAzOWUwNzVmNTlhZTJiZjM5MmQyYWU1OGI4ZmE1
MS4uMjRiOGIxN2I2ODk3YjgzOTE5ODUzZTVjYmY4YTVjMzM1YWZhZTAwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2U6OnNl
dHRpbmdzKCkKIHZvaWQgUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlOjpzZXR0aW5nc0RpZENo
YW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnPiBzZXR0aW5n
cykKIHsKICAgICBpZiAoc2V0dGluZ3MuY29udGFpbnNBbnkoeyBSZWFsdGltZU1lZGlhU291cmNl
U2V0dGluZ3M6OkZsYWc6OldpZHRoLCBSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3M6OkZsYWc6
OkhlaWdodCB9KSkKLSAgICAgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IGM5YmMwNzcxMzhhODBiNThi
Y2M0OTdlMGM0MWExNWVlY2I3NjE0ZjEuLjk0MTZkZDgzZjM0ODZkNzcxNjlmMTdkNjZiMjYyYWZh
YmYwYWM5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCiAKIE9wdGlv
bmFsPFZlY3RvcjxpbnQ+PiBSZWFsdGltZU1lZGlhU291cmNlOjpkaXNjcmV0ZVNhbXBsZVJhdGVz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0U2FtcGxlU2l6ZShpbnQg
c2l6ZSkKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0
U2FtcGxlU2l6ZShpbnQgc2l6ZSkKIAogT3B0aW9uYWw8VmVjdG9yPGludD4+IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OmRpc2NyZXRlU2FtcGxlU2l6ZXMoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRFY2hvQ2FuY2VsbGF0aW9uKGJvb2wgZWNob0NhbmNlbGxhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9WaWRlb1ByZXNldC5oCmlu
ZGV4IDUzNmNkZTE4YzkzNjc5MzYwNjI3ODY5YzNmM2RjNmZkMWI5ODA4NzcuLmE4NDljNGM2ZWFh
YTI5ZWRjMDRmMDE0OTcxZThlM2Q5ZDBkOTE5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1ZpZGVvUHJlc2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vVmlkZW9QcmVzZXQuaApAQCAtNTYsMTIgKzU2LDEyIEBAIE9w
dGlvbmFsPEZyYW1lUmF0ZVJhbmdlPiBGcmFtZVJhdGVSYW5nZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgT3B0aW9uYWw8ZG91YmxlPiBtaW5pbXVtOwogICAgIGRlY29kZXIgPj4gbWlu
aW11bTsKICAgICBpZiAoIW1pbmltdW0pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxkb3VibGU+IG1heGlt
dW07CiAgICAgZGVjb2RlciA+PiBtYXhpbXVtOwogICAgIGlmICghbWF4aW11bSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IHJldHVybiBGcmFtZVJhdGVSYW5nZSB7ICptaW5pbXVtLCAqbWF4aW11bSB9OwogfQpAQCAtODcs
MTIgKzg3LDEyIEBAIE9wdGlvbmFsPFZpZGVvUHJlc2V0RGF0YT4gVmlkZW9QcmVzZXREYXRhOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOwogICAg
IGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0
b3I8RnJhbWVSYXRlUmFuZ2U+PiBmcmFtZVJhdGVSYW5nZXM7CiAgICAgZGVjb2RlciA+PiBmcmFt
ZVJhdGVSYW5nZXM7CiAgICAgaWYgKCFmcmFtZVJhdGVSYW5nZXMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
VmlkZW9QcmVzZXREYXRhIHsgKnNpemUsICpmcmFtZVJhdGVSYW5nZXMgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJDYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCmluZGV4
IGMwNmZlYjE1Y2ZmNWU3NjFlNWZkZWJiMzUyMjBiMmRhOGFmZTI0NjIuLjA4NWJiMDc5MDM0MTgz
NzU5YzI5NGJjNWM1NjBmZWJkOTcwMTRlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcApAQCAtODMsNyArODMsNyBAQCBPcHRp
b25hbDxHU3RyZWFtZXJDYXB0dXJlRGV2aWNlPiBHU3RyZWFtZXJDYXB0dXJlRGV2aWNlTWFuYWdl
cjo6Z3N0cmVhbWVyRGV2aWNlVwogICAgICAgICBpZiAoZGV2aWNlLnBlcnNpc3RlbnRJZCgpID09
IGRldmljZUlEKQogICAgICAgICAgICAgcmV0dXJuIGRldmljZTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBWZWN0
b3I8Q2FwdHVyZURldmljZT4mIEdTdHJlYW1lckNhcHR1cmVEZXZpY2VNYW5hZ2VyOjpjYXB0dXJl
RGV2aWNlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9pb3MvQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCmluZGV4IDhhZmQ0ZTQ1ZGM1MjBkNmFmZGE4OTU0YzYwMzFkMGU3Zjk2Y2UzZDAu
LmFlNmFkOGZhNTBhMzhiYjNiMDdmOWE2ZGI0MjNhOTEyZGJkMjE3Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1
cmVEZXZpY2VNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2lvcy9BVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCkBAIC0xMjksNyAr
MTI5LDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2
aWNlTWFuYWdlcjo6Y2FwdHVyZURldmljZVdpdGhQZXIKICAgICAgICAgaWYgKGRldmljZS5wZXJz
aXN0ZW50SWQoKSA9PSBkZXZpY2VJRCkKICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7CiAgICAg
fQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogT3B0aW9uYWw8QVZBdWRpb1Nlc3Npb25DYXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNh
cHR1cmVEZXZpY2VNYW5hZ2VyOjphdWRpb1Nlc3Npb25EZXZpY2VXaXRoVUlEKGNvbnN0IFN0cmlu
ZyYgZGV2aWNlSUQpCkBAIC0xNDEsNyArMTQxLDcgQEAgT3B0aW9uYWw8QVZBdWRpb1Nlc3Npb25D
YXB0dXJlRGV2aWNlPiBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZpY2VNYW5hZ2VyOjphdWRpb1MK
ICAgICAgICAgaWYgKGRldmljZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCkKICAgICAgICAg
ICAgIHJldHVybiBkZXZpY2U7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBBVkF1ZGlvU2Vzc2lvbkNhcHR1cmVEZXZp
Y2VNYW5hZ2VyOjpzY2hlZHVsZVVwZGF0ZUNhcHR1cmVEZXZpY2VzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVlZpZGVvQ2Fw
dHVyZVNvdXJjZS5tbQppbmRleCAyYjQ5YjJlOTNmZTUxZWJkNjhhMmJlZGZhNTdkZGE2ZmFjMmRm
MWIyLi40Yjc4OGFlNWFhODdiNzI5ZTViZGNmOWNmNzEzODEyYzY3NzBhMzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
VmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBBVlZpZGVvQ2Fw
dHVyZVNvdXJjZTo6Y29tbWl0Q29uZmlndXJhdGlvbigpCiAKIHZvaWQgQVZWaWRlb0NhcHR1cmVT
b3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNldDxSZWFsdGltZU1lZGlhU291cmNlU2V0
dGluZ3M6OkZsYWc+KQogewotICAgIG1fY3VycmVudFNldHRpbmdzID0gV1RGOjpudWxsb3B0Owor
ICAgIG1fY3VycmVudFNldHRpbmdzID0gc3RkOjpudWxsb3B0OwogfQogCiBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIEFWVmlkZW9DYXB0dXJlU291cmNlOjpzZXR0aW5ncygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1
ZGlvQ2FwdHVyZURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZS5jcHAKaW5kZXggMmRmNmY0N2NhY2ZlNjE2NjUx
MmJlMWE1NTlmOGUwYzgyNTgxZWU5MS4uNjM5NjBjNDU3YjVhOTMyZjlkNzllM2JhMWNlY2VhN2Qx
MTE1ZDU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0NvcmVBdWRpb0NhcHR1cmVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIE9wdGlvbmFsPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+IENvcmVBdWRpb0NhcHR1
cmVEZXZpY2U6OmNyZWF0ZSh1aW50MzJfdCBkZXZpY2VJCiAgICAgU3RyaW5nIHBlcnNpc3RlbnRJ
RDsKICAgICBTdHJpbmcgbGFiZWw7CiAgICAgaWYgKCFnZXREZXZpY2VJbmZvKGRldmljZUlELCB0
eXBlLCBwZXJzaXN0ZW50SUQsIGxhYmVsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDb3JlQXVkaW9DYXB0
dXJlRGV2aWNlKGRldmljZUlELCBwZXJzaXN0ZW50SUQsIHR5cGUsIGxhYmVsLCBncm91cElELmlz
TnVsbCgpID8gcGVyc2lzdGVudElEIDogZ3JvdXBJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZURldmljZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVB
dWRpb0NhcHR1cmVEZXZpY2VNYW5hZ2VyLmNwcAppbmRleCAzYjg0ZWQzZGM5ZmI4ZWVhMDZlOTM2
YWEyNjIyYzk1NmY0ZTRmYTRlLi5lZWI3MDA4ZjViMDk3N2ViNjMyMDE3YTNmYmMwODE2N2FjZjlj
ZTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
Q29yZUF1ZGlvQ2FwdHVyZURldmljZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3JlQXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gQ29yZUF1ZGlvQ2FwdHVy
ZURldmljZU1hbmFnZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGUKICAgICAgICAgaWYgKGRl
dmljZS5wZXJzaXN0ZW50SWQoKSA9PSBkZXZpY2VJRCkKICAgICAgICAgICAgIHJldHVybiBkZXZp
Y2U7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNlSGFzU3RyZWFtcyhBdWRpb09iamVjdElEIGRl
dmljZUlELCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyYgYWRkcmVzcykKQEAgLTI1
NCw3ICsyNTQsNyBAQCBPcHRpb25hbDxDb3JlQXVkaW9DYXB0dXJlRGV2aWNlPiBDb3JlQXVkaW9D
YXB0dXJlRGV2aWNlTWFuYWdlcjo6Y29yZUF1ZGlvRGV2aWNlVwogICAgICAgICBpZiAoZGV2aWNl
LnBlcnNpc3RlbnRJZCgpID09IGRldmljZUlEICYmIGRldmljZS5lbmFibGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZGV2aWNlOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNEZXZpY2Uo
Y29uc3QgVmVjdG9yPENvcmVBdWRpb0NhcHR1cmVEZXZpY2U+JiBkZXZpY2VzLCB1aW50MzJfdCBk
ZXZpY2VJRCwgQ2FwdHVyZURldmljZTo6RGV2aWNlVHlwZSBkZXZpY2VUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0NvcmVBdWRpb0NhcHR1
cmVTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Nv
cmVBdWRpb0NhcHR1cmVTb3VyY2UuY3BwCmluZGV4IDc3ZDgyYzFhNDA4YTVkN2JjNGFhMjllNjEw
YzlmODBmN2I1MGZlNjcuLjQyZTE4NDU2NjJmNmIyMDFlNWNhYjY5YjlkMDhmMTExMzdiNzEzMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Db3Jl
QXVkaW9DYXB0dXJlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZS5jcHAKQEAgLTgxMSw3ICs4MTEsNyBA
QCB2b2lkIENvcmVBdWRpb0NhcHR1cmVTb3VyY2U6OnNldHRpbmdzRGlkQ2hhbmdlKE9wdGlvblNl
dDxSZWFsdGltZU1lZGlhU291cmNlU2V0dAogICAgIGlmIChzaG91bGRSZWNvbmZpZ3VyZSkKICAg
ICAgICAgdW5pdCgpLnJlY29uZmlndXJlKCk7CiAKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAog
Ym9vbCBDb3JlQXVkaW9DYXB0dXJlU291cmNlOjppbnRlcnJ1cHRlZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvRGlzcGxheUNhcHR1
cmVNYW5hZ2VyQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL0Rpc3BsYXlDYXB0dXJlTWFuYWdlckNvY29hLmNwcAppbmRleCBmN2VjZGM4YWUwMGFjMDk2
NmUxN2E3MmQ5MWMxMjcyZDE2NGViNGY4Li5lMjA5YzE2OTliYWMzOTIyNzNlM2JhZDcwZWY2M2Fk
ZmZhYzE4MTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvRGlzcGxheUNhcHR1cmVNYW5hZ2VyQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9EaXNwbGF5Q2FwdHVyZU1hbmFnZXJDb2NvYS5jcHAK
QEAgLTc4LDcgKzc4LDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVN
YW5hZ2VyQ29jb2E6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICAgICByZXR1cm4gU2Ny
ZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpzY3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJ
RChkZXZpY2VJRCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkZXZpY2VJRCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAK
QEAgLTg4LDcgKzg4LDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gRGlzcGxheUNhcHR1cmVN
YW5hZ2VyQ29jb2E6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2kKICAgICByZXR1cm4gV2lu
ZG93RGlzcGxheUNhcHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJ
RChkZXZpY2VJRCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShkZXZpY2VJRCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAK
QEAgLTExMSw3ICsxMTEsNyBAQCBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBEaXNwbGF5Q2FwdHVy
ZU1hbmFnZXJDb2NvYTo6Y2FwdHVyZURldmljZVdpdGhQZXJzaXN0ZW50SQogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVyTWFjLm1tCmluZGV4IDhlZGFiMDdmY2ExOGU0OTk4M2YxZDA5ZjgxYmVlNmNiMzhj
YmMyOTEuLjhlMjk5NDIwMDk4ODFiNmIzMTAzZDUzOTYxMThmMDU1Mjg2MzEyZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5
Q2FwdHVyZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
bWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5tbQpAQCAtNTUsMTkgKzU1LDE5IEBAIHN0YXRp
YyBPcHRpb25hbDxDR0RpcmVjdERpc3BsYXlJRD4gdXBkYXRlRGlzcGxheUlEKENHRGlyZWN0RGlz
cGxheUlEIGRpc3BsYXlJRCkKICAgICBhdXRvIGVyciA9IENHR2V0QWN0aXZlRGlzcGxheUxpc3Qo
MCwgbnVsbHB0ciwgJmRpc3BsYXlDb3VudCk7CiAgICAgaWYgKGVycikgewogICAgICAgICBSRUxF
QVNFX0xPRyhXZWJSVEMsICJDR0dldEFjdGl2ZURpc3BsYXlMaXN0KCkgcmV0dXJuZWQgZXJyb3Ig
JWQgd2hlbiB0cnlpbmcgdG8gZ2V0IGRpc3BsYXkgY291bnQiLCBzdGF0aWNfY2FzdDxpbnQ+KGVy
cikpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAogICAgIGlmICghZGlzcGxheUNvdW50KSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKFdlYlJUQywgIkNHR2V0QWN0aXZlRGlzcGxheUxpc3QoKSByZXR1cm5lZCBhIGRpc3Bs
YXkgY291bnQgb2YgMCIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFZlY3RvcjxDR0RpcmVjdERpc3BsYXlJ
RD4gYWN0aXZlRGlzcGxheXMoZGlzcGxheUNvdW50KTsKICAgICBlcnIgPSBDR0dldEFjdGl2ZURp
c3BsYXlMaXN0KGRpc3BsYXlDb3VudCwgYWN0aXZlRGlzcGxheXMuZGF0YSgpLCAmZGlzcGxheUNv
dW50KTsKICAgICBpZiAoZXJyKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYlJUQywgIkNHR2V0
QWN0aXZlRGlzcGxheUxpc3QoKSByZXR1cm5lZCBlcnJvciAlZCB3aGVuIHRyeWluZyB0byBnZXQg
dGhlIGFjdGl2ZSBkaXNwbGF5IGxpc3QiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycikpOwotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAogICAgIGF1dG8gZGlzcGxheU1hc2sgPSBDR0Rpc3BsYXlJRFRvT3BlbkdMRGlzcGxheU1h
c2soZGlzcGxheUlEKTsKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIE9wdGlvbmFsPENHRGlyZWN0
RGlzcGxheUlEPiB1cGRhdGVEaXNwbGF5SUQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlEKQog
ICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBFeHBlY3RlZDxVbmlxdWVSZWY8
RGlzcGxheUNhcHR1cmVTb3VyY2VDb2NvYTo6Q2FwdHVyZXI+LCBTdHJpbmc+IFNjcmVlbkRpc3Bs
YXlDYXB0dXJlck1hYzo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGV2aWNlSUQpCkBAIC0yNjgsMTIg
KzI2OCwxMiBAQCBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBTY3JlZW5EaXNwbGF5Q2FwdHVyZXJN
YWM6OnNjcmVlbkNhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdAogICAgIGF1dG8gZGlzcGxheUlEID0g
cGFyc2VJbnRlZ2VyPHVpbnQzMl90PihkZXZpY2VJRCk7CiAgICAgaWYgKCFkaXNwbGF5SUQpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpz
Y3JlZW5DYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogZGlzcGxheSBJRCBkb2VzIG5vdCBj
b252ZXJ0IHRvIDMyLWJpdCBpbnRlZ2VyIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBhY3R1YWxE
aXNwbGF5SUQgPSB1cGRhdGVEaXNwbGF5SUQoKmRpc3BsYXlJRCk7CiAgICAgaWYgKCFhY3R1YWxE
aXNwbGF5SUQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGRldmljZSA9IENhcHR1cmVEZXZpY2UoU3RyaW5nOjpu
dW1iZXIoKmFjdHVhbERpc3BsYXlJRCksIENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU6OlNjcmVl
biwgIlNjcmVlbkNhcHR1cmVEZXZpY2UiX3MpOwogICAgIGRldmljZS5zZXRFbmFibGVkKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dp
bmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggN2UwMTMwM2Y5YWI5
ODc3ZjU0ZDgwYmZhNjk4YjY4MTYxYzNlMjZiZS4uNDE4ZjY5MzdkZTZjMTA3YWQ1ZDhhYmQwNGZk
ZGE0OTA1YjAxMGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBA
IC0xMzksNyArMTM5LDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmljZT4gV2luZG93RGlzcGxheUNh
cHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3QKICAgICBhdXRvIHdpbmRv
d0lEID0gcGFyc2VJbnRlZ2VyPHVpbnQzMl90PihpZFN0cmluZyk7CiAgICAgaWYgKCF3aW5kb3dJ
RCkgewogICAgICAgICBSRUxFQVNFX0xPRyhXZWJSVEMsICJXaW5kb3dEaXNwbGF5Q2FwdHVyZXJN
YWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdGVudElEOiB3aW5kb3cgSUQgZG9lcyBu
b3QgY29udmVydCB0byAzMi1iaXQgaW50ZWdlciIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFN0cmluZyB3
aW5kb3dUaXRsZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBPcHRpb25hbDxDYXB0dXJlRGV2aWNlPiBX
aW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWM6OndpbmRvd0NhcHR1cmVEZXZpY2VXaXRoUGVyc2lzdAog
CiAgICAgfSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiV2luZG93RGlzcGxheUNh
cHR1cmVyTWFjOjp3aW5kb3dDYXB0dXJlRGV2aWNlV2l0aFBlcnNpc3RlbnRJRDogd2luZG93IElE
IGlzIG5vdCB2YWxpZCIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gZGV2aWNlID0gQ2FwdHVyZURl
dmljZShTdHJpbmc6Om51bWJlcigqd2luZG93SUQpLCBDYXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBl
OjpXaW5kb3csIHdpbmRvd1RpdGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCAxZjUxOWQ0YmJmODBlY2Fm
NmFiMzUwYTYwNWJjMjE1MWE1ZTFlMzgzLi5jYmQ2YWQyZjNlZWQxMWFiZTgwMjEyMjM4ZGNlM2Uw
MGYwOGI0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhCiB7CiAgICAgbV9oYXNFcnJvciA9IHRydWU7CiAgICAgbV9lcnJvck1lc3NhZ2Ug
PSBlcnJvck1lc3NhZ2U7Ci0gICAgbV9sYXN0UG9zaXRpb24gPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9sYXN0UG9zaXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVy
KCk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6
cGVybWlzc2lvblRpbWVyRmlyZWQoKQogCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cmVz
ZXQoKQogewotICAgIG1fbGFzdFBvc2l0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fbGFzdFBv
c2l0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Np
b25TdGF0ZSA9IFBlcm1pc3Npb25TdGF0ZVVuc2V0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5TW9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlNb2NrLmNwcAppbmRleCBlNDI5NDI4OGEyM2JkN2RhZTAzMDQyOWYxZTg5MTI5ODg0
ZWE1Mjc2Li5jZjE4ZmU3NDZiYTNhZWQzZmUwZGI1YTNhMDA4ODk5ZDRlNmExNzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnlNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlNb2NrLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0
aWMgYm9vbCBjYW5EZWNvZGVNZWRpYShjb25zdCBNZWRpYURlY29kaW5nQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvLyBD
YW4gb25seSBzdXBwb3J0IHNwYXRpYWwgcmVuZGVyaW5nIG9mIHRyYWNrcyB3aXRoIG11bHRpY2hh
bm5lbCBhdWRpbzoKLSAgICAgICAgaWYgKGF1ZGlvQ29uZmlnLT5zcGF0aWFsUmVuZGVyaW5nLnZh
bHVlT3IoZmFsc2UpICYmIGF1ZGlvQ29uZmlnLT5jaGFubmVscy50b0RvdWJsZSgpIDw9IDIpCisg
ICAgICAgIGlmIChhdWRpb0NvbmZpZy0+c3BhdGlhbFJlbmRlcmluZy52YWx1ZV9vcihmYWxzZSkg
JiYgYXVkaW9Db25maWctPmNoYW5uZWxzLnRvRG91YmxlKCkgPD0gMikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja01lZGlhRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tNZWRpYURldmljZS5oCmluZGV4IGU5YTU4NmEyN2NkYjFiZjFjZDY5YzQxMGQ0NzYwNmRkYmI5
ZGIzZDEuLjVmYTc5YTlhYjUzOGJkNjQ5ZGE0ZTJkNTMyMThkODk4NTQ3MjFjZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtNDgsNyAr
NDgsNyBAQCBzdHJ1Y3QgTW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzIHsKICAgICAgICAgT3B0aW9u
YWw8aW50MzJfdD4gZGVmYXVsdFNhbXBsZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVs
dFNhbXBsZVJhdGU7CiAgICAgICAgIGlmICghZGVmYXVsdFNhbXBsZVJhdGUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgcmV0dXJuIE1vY2tNaWNyb3Bob25lUHJvcGVydGllcyB7ICpkZWZhdWx0U2FtcGxl
UmF0ZSB9OwogICAgIH0KIApAQCAtNjgsMTIgKzY4LDEyIEBAIHN0cnVjdCBNb2NrU3BlYWtlclBy
b3BlcnRpZXMgewogICAgICAgICBPcHRpb25hbDxpbnQzMl90PiBkZWZhdWx0U2FtcGxlUmF0ZTsK
ICAgICAgICAgZGVjb2RlciA+PiBkZWZhdWx0U2FtcGxlUmF0ZTsKICAgICAgICAgaWYgKCFkZWZh
dWx0U2FtcGxlUmF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gcmVs
YXRlZE1pY3JvcGhvbmVJZDsKICAgICAgICAgZGVjb2RlciA+PiByZWxhdGVkTWljcm9waG9uZUlk
OwogICAgICAgICBpZiAoIXJlbGF0ZWRNaWNyb3Bob25lSWQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICByZXR1cm4gTW9ja1NwZWFrZXJQcm9wZXJ0aWVzIHsgV1RGTW92ZSgqcmVsYXRlZE1pY3JvcGhv
bmVJZCksICpkZWZhdWx0U2FtcGxlUmF0ZSB9OwogICAgIH0KQEAgLTk5LDIyICs5OSwyMiBAQCBz
dHJ1Y3QgTW9ja0NhbWVyYVByb3BlcnRpZXMgewogICAgICAgICBPcHRpb25hbDxkb3VibGU+IGRl
ZmF1bHRGcmFtZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdEZyYW1lUmF0ZTsKICAg
ICAgICAgaWYgKCFkZWZhdWx0RnJhbWVSYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpWaWRlb0ZhY2luZ01vZGU+IGZhY2luZ01v
ZGU7CiAgICAgICAgIGRlY29kZXIgPj4gZmFjaW5nTW9kZTsKICAgICAgICAgaWYgKCFmYWNpbmdN
b2RlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFZpZGVvUHJlc2V0RGF0
YT4+IHByZXNldHM7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlc2V0czsKICAgICAgICAgaWYgKCFw
cmVzZXRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsK
ICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAgICAgICAgIGlmICghZmlsbENvbG9yKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIE1vY2tDYW1lcmFQcm9wZXJ0aWVzIHsgKmRlZmF1
bHRGcmFtZVJhdGUsICpmYWNpbmdNb2RlLCBXVEZNb3ZlKCpwcmVzZXRzKSwgKmZpbGxDb2xvciB9
OwogICAgIH0KQEAgLTEzOSwxNyArMTM5LDE3IEBAIHN0cnVjdCBNb2NrRGlzcGxheVByb3BlcnRp
ZXMgewogICAgIHsKICAgICAgICAgT3B0aW9uYWw8Q2FwdHVyZURldmljZTo6RGV2aWNlVHlwZT4g
dHlwZTsKICAgICAgICAgZGVjb2RlciA+PiB0eXBlOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Q29sb3I+IGZpbGxDb2xvcjsKICAgICAgICAgZGVjb2RlciA+PiBmaWxsQ29sb3I7CiAg
ICAgICAgIGlmICghZmlsbENvbG9yKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SW50
U2l6ZT4gZGVmYXVsdFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gZGVmYXVsdFNpemU7CiAgICAg
ICAgIGlmICghZGVmYXVsdFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4gTW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzIHsgKnR5cGUsICpmaWxsQ29sb3IsICpkZWZhdWx0U2l6ZSB9OwogICAg
IH0KQEAgLTIyMiw3ICsyMjIsNyBAQCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICAgICAg
T3B0aW9uYWw8UHJvcGVydGllcz4gcHJvcGVydGllczsKICAgICAgICAgZGVjb2RlciA+PiBwcm9w
ZXJ0aWVzOwogICAgICAgICBpZiAoIXByb3BlcnRpZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0
dXJuIE1vY2tNZWRpYURldmljZSB7IFdURk1vdmUocGVyc2lzdGVudElkKSwgV1RGTW92ZShsYWJl
bCksIFdURk1vdmUoKnByb3BlcnRpZXMpIH07CiAgICAgfQogCkBAIC0yMzIsMTcgKzIzMiwxNyBA
QCBzdHJ1Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBwZXJz
aXN0ZW50SWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudElkOwogICAgICAgICBpZiAo
IXBlcnNpc3RlbnRJZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFi
ZWw7CiAgICAgICAgIGRlY29kZXIgPj4gbGFiZWw7CiAgICAgICAgIGlmICghbGFiZWwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDx1aW50OF90PiBpbmRleDsKICAgICAgICAgZGVjb2Rl
ciA+PiBpbmRleDsKICAgICAgICAgaWYgKCFpbmRleCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHN3
aXRjaCAoKmluZGV4KSB7CiAgICAgICAgIGNhc2UgMToKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdHJ1
Y3QgTW9ja01lZGlhRGV2aWNlIHsKICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgcmV0dXJu
IGRlY29kZU1vY2tNZWRpYURldmljZTxNb2NrRGlzcGxheVByb3BlcnRpZXM+KGRlY29kZXIsIFdU
Rk1vdmUoKnBlcnNpc3RlbnRJZCksIFdURk1vdmUoKmxhYmVsKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBTdHJpbmcgcGVyc2lzdGVudElkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCBjNDll
NmZiZjE2Nzg5ZDk2OGNjMDU0NzM0YjcxNTUwYWVmZjllNWY5Li4wNWM4OGVhMTc5ZmM0MTcwN2Uy
NmE0NTY2NDBmYjM1YjJkYzg3NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtMTMwLDcgKzEzMCw3
IEBAIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjYXBhYmlsaXRpZXMoKQogCiB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
OjpzZXR0aW5nc0RpZENoYW5nZShPcHRpb25TZXQ8UmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
OjpGbGFnPikKIHsKLSAgICBtX2N1cnJlbnRTZXR0aW5ncyA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2N1cnJlbnRTZXR0aW5ncyA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKaW5kZXggMTRmNGM2ZWIxOGVhYmI5MjgwZGIwMTMzZDRkNDAxY2ZhOTllMWMxZi4uMjJlNGEx
NzdjNzUwNGFlNzc2ZTI4Y2E2NDVmZGY1NDNkMWVkYTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlci5jcHAKQEAgLTM0Myw3ICszNDMsNyBAQCBPcHRpb25hbDxNb2NrTWVkaWFEZXZpY2U+IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2aWNlV2l0aFBlcnNpc3RlbgogICAg
IGF1dG8mIG1hcCA9IGRldmljZU1hcCgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtYXAuZmluZChp
ZCk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpdGVy
YXRvci0+dmFsdWU7CiB9CkBAIC0zNTUsNyArMzU1LDcgQEAgT3B0aW9uYWw8Q2FwdHVyZURldmlj
ZT4gTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNhcHR1cmVEZXZpY2VXaXRoUGVyc2lz
dGUKICAgICBhdXRvJiBtYXAgPSBkZXZpY2VNYXAoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbWFw
LmZpbmQoaWQpOwogICAgIGlmIChpdGVyYXRvciA9PSBtYXAuZW5kKCkgfHwgaXRlcmF0b3ItPnZh
bHVlLnR5cGUoKSAhPSB0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRvQ2FwdHVyZURldmljZShpdGVy
YXRvci0+dmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAppbmRleCA0NmVhMTUxZWRiNzBhOTUwOTlh
MmUxNTkwNjFlNjUyZWEwODcxNTQ1Li4yMDczYTZjM2MyZmRhODY0MmU1ZmNmNTVhNTNiNzlkNjIy
ZmRhMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIEludFNpemUgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNhcHR1cmVTaXplKCkgY29uc3QKIAogdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6c2V0dGluZ3NEaWRDaGFuZ2UoT3B0aW9uU2V0PFJlYWx0aW1lTWVk
aWFTb3VyY2VTZXR0aW5nczo6RmxhZz4gc2V0dGluZ3MpCiB7Ci0gICAgbV9jdXJyZW50U2V0dGlu
Z3MgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50U2V0dGluZ3MgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKHNldHRpbmdzLmNvbnRhaW5zQW55KHsgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRp
bmdzOjpGbGFnOjpXaWR0aCwgUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzOjpGbGFnOjpIZWln
aHQgfSkpIHsKICAgICAgICAgbV9iYXNlRm9udFNpemUgPSBjYXB0dXJlU2l6ZSgpLmhlaWdodCgp
ICogLjA4OwogICAgICAgICBtX2JpcEJvcEZvbnRTaXplID0gbV9iYXNlRm9udFNpemUgKiAyLjU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCmluZGV4IDNiZWJj
ZDAyNTMwOWFkNGYyZmYyZTQ2MGZkOThkYzk2NmU2Nzg2ZTguLjg2Njc3YWVmZjY4MmQ4M2FhMjM4
ZTA4OWZiODZjMWYwOTdjNjhmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6c2Vla0NvbXBsZXRlZCgpCiAKIE9wdGlvbmFsPFZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnZpZGVvUGxheWJhY2tRdWFsaXR5
TWV0cmljcygpCiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQcml2YXRlID8gbV9tZWRpYVNv
dXJjZVByaXZhdGUtPnZpZGVvUGxheWJhY2tRdWFsaXR5TWV0cmljcygpIDogV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRl
LT52aWRlb1BsYXliYWNrUXVhbGl0eU1ldHJpY3MoKSA6IHN0ZDo6bnVsbG9wdDsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCAyYWRhODA3NGE4NTIw
ZTk0MmU0YzMwYTY1NGVjNGM5NmFhN2YzOGRhLi44OGNmMWJmMmFhYTg2OTM0Y2NhODJjNGZjYWE0
OTFkNzVhMDZjODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApA
QCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBzaXplSW5CeXRlcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KICAgICBTYW1wbGVGbGFncyBmbGFn
cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFuZ2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxCeXRlUmFuZ2U+IGJ5
dGVSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIEZs
b2F0U2l6ZSBwcmVzZW50YXRpb25TaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRT
aXplKCk7IH0KICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmIG9mZnNldCkgb3ZlcnJp
ZGUgeyBtX2JveC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zmc2V0KTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3Bw
CmluZGV4IDEyZjgyNzRlZGJmZWEwNzExZDUyYmNhOTExNWU5OTJlZGUyNmUwN2IuLjc0NjczNzBh
NjQyN2YxNmFjNWMyMzYwNzEwNjBhOGI0Mjk5MzlhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKQEAg
LTcxLDcgKzcxLDcgQEAgT3B0aW9uYWw8V2FsbFRpbWU+IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRy
YWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVyYXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEg
c25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0
aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBGaWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRh
dGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBjaGFuZ2UuCiAgICAgaWYgKG1fcmVwbGFjZW1lbnRT
aG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5k
aWYKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXgg
NmIwMTI5MGZjNGJmYjA4ZmQ4YTlhODllMGM3MzI3ODg2ZGRiMjRmZS4uZGE5ODZmMTY4N2NkODk5
NGU5N2FiZGVhYjMzYjIxMzczMWIxM2U4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIFNl
Y29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IFdhbGxUaW1lIHJlc3BvbnNlVGltCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5
IGFzIHRoYXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZS4KICAgICBhdXRv
IGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKICAgICBhdXRvIGFwcGFyZW50QWdlID0gZGF0
ZVZhbHVlID8gc3RkOjptYXgoMF91cywgcmVzcG9uc2VUaW1lIC0gKmRhdGVWYWx1ZSkgOiAwX3Vz
OwotICAgIGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZU9yKDBfdXMpOworICAg
IGF1dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKS52YWx1ZV9vcigwX3VzKTsKICAgICBhdXRv
IGNvcnJlY3RlZEluaXRpYWxBZ2UgPSBzdGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpOwog
ICAgIGF1dG8gcmVzaWRlbnRUaW1lID0gV2FsbFRpbWU6Om5vdygpIC0gcmVzcG9uc2VUaW1lOwog
ICAgIHJldHVybiBjb3JyZWN0ZWRJbml0aWFsQWdlICsgcmVzaWRlbnRUaW1lOwpAQCAtMTIzLDcg
KzEyMyw3IEBAIFNlY29uZHMgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICAgICAgcmV0dXJuICptYXhBZ2U7
CiAKICAgICBhdXRvIGRhdGUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgYXV0byBlZmZlY3RpdmVE
YXRlID0gZGF0ZS52YWx1ZU9yKHJlc3BvbnNlVGltZSk7CisgICAgYXV0byBlZmZlY3RpdmVEYXRl
ID0gZGF0ZS52YWx1ZV9vcihyZXNwb25zZVRpbWUpOwogICAgIGlmIChhdXRvIGV4cGlyZXMgPSBy
ZXNwb25zZS5leHBpcmVzKCkpCiAgICAgICAgIHJldHVybiAqZXhwaXJlcyAtIGVmZmVjdGl2ZURh
dGU7CiAKQEAgLTM0MCw3ICszNDAsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2Fj
aGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiBzdGF0
aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewot
ICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNl
Y3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmc6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVT
aXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNl
Y3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQ
OjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmlyc3Q7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29v
a2llSmFyKiBjb29raWVKYXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTM0
OCw3ICszNDgsNyBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBSZQogICAgIGlmICghY29va2llSmFy
KQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGNvb2tpZUphci0+Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1l
U2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVT
ZWN1cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8pLmZpcnN0OworICAg
IHJldHVybiBjb29raWVKYXItPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJl
cXVlc3QudXJsKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNl
Y3VyZUNvb2tpZXM6Ok5vKS5maXJzdDsKIH0KIAogc3RhdGljIFN0cmluZyBoZWFkZXJWYWx1ZUZv
clZhcnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGhlYWRl
ck5hbWUsIEZ1bmN0aW9uPFN0cmluZygpPiYmIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
RnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKaW5kZXggM2RmMTIwNmQyYzNi
YmE1NTY3N2JlNDEzY2EyY2RkYTE4OTA1MTc1Zi4uNjNiZWUxZGQ2MWVhZmZlZWNiMGM2ZjM3NzY1
OTllNmEwMmMzODRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAtNjEsMjkg
KzYxLDI5IEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiB7CiAgICAgVVJMIGZpcnN0UGFydHk7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaXJzdFBhcnR5KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzYW1lU2l0ZUluZm8p
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFtZUlEOwogICAgIGRl
Y29kZXIgPj4gZnJhbWVJRDsKICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsK
ICAgICBpZiAoIXBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5IHsgV1RG
TW92ZShmaXJzdFBhcnR5KSwgV1RGTW92ZShzYW1lU2l0ZUluZm8pLCBXVEZNb3ZlKHVybCksICpm
cmFtZUlELCAqcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCA2MTk5
ZGI5Yjc1NjIyNzkyMTFkOTJhN2U3OWMzOTg2YzFhYmVkMmY3Li43MWVlNmFlZWYyYzMzMTBlMWY1
ODZhODBlMTk1YzExNWM2ZWQ1MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTc1LDEyICsxNzUsMTIgQEAgc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBkZWNvZGVFc2NhcGVkKGNvbnN0IERlY29kZVRhc2smIHRhc2spCiBz
dGF0aWMgT3B0aW9uYWw8UmVzdWx0PiBkZWNvZGVTeW5jaHJvbm91c2x5KERlY29kZVRhc2smIHRh
c2ssIE1vZGUgbW9kZSkKIHsKICAgICBpZiAoIXRhc2sucHJvY2VzcygpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KHRhc2suaXNCYXNlNjQpIHsKICAgICAgICAgYXV0byBkZWNvZGVkRGF0YSA9IGRlY29kZUJhc2U2
NCh0YXNrLCBtb2RlKTsKICAgICAgICAgaWYgKCFkZWNvZGVkRGF0YSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICB0YXNrLnJlc3VsdC5kYXRhID0gV1RGTW92ZSgqZGVjb2RlZERhdGEpOwogICAgIH0gZWxz
ZQogICAgICAgICB0YXNrLnJlc3VsdC5kYXRhID0gZGVjb2RlRXNjYXBlZCh0YXNrKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNzEzMGEwYzgx
ZWY3MjBmNDkwZTg3MmM1ODBkOTdhN2JmZTM1NjE5MC4uMGZlOTRmNDI5ZDdjYzQwNGMzZTVkMjFh
ODNiMjUyZDZiMThjNmI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB1aW50NjRfdCBGb3JtRGF0YUVsZW1lbnQ6
Omxlbmd0aEluQnl0ZXMoY29uc3QgRnVuY3Rpb248dWludDY0X3QoY29uc3QgVVJMJik+JiBibAog
ICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkRmlsZURhdGEmIGZp
bGVEYXRhKSB7CiAgICAgICAgICAgICBpZiAoZmlsZURhdGEuZmlsZUxlbmd0aCAhPSBCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oZmlsZURhdGEuZmlsZUxlbmd0aCk7Ci0gICAgICAgICAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZmlsZVNpemUoZmlsZURhdGEuZmlsZW5hbWUpLnZhbHVlT3IoMCk7CisgICAgICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZVNpemUoZmlsZURhdGEuZmlsZW5hbWUpLnZhbHVlX29y
KDApOwogICAgICAgICB9LCBbJmJsb2JTaXplXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNv
ZGVkQmxvYkRhdGEmIGJsb2JEYXRhKSB7CiAgICAgICAgICAgICByZXR1cm4gYmxvYlNpemUoYmxv
YkRhdGEudXJsKTsKICAgICAgICAgfQpAQCAtMTc2LDcgKzE3Niw3IEBAIEZvcm1EYXRhRWxlbWVu
dCBGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIHZvaWQgRm9ybURhdGE6
OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgbV9sZW5n
dGhJbkJ5dGVzID0gV1RGOjpudWxsb3B0OworICAgIG1fbGVuZ3RoSW5CeXRlcyA9IHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIW1fZWxlbWVudHMuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChhdXRv
KiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KG1fZWxlbWVudHMubGFzdCgpLmRh
dGEpKSB7CiAgICAgICAgICAgICB2ZWN0b3ItPmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSk7CkBAIC0xODgsMjAgKzE4OCwyMCBAQCB2b2lkIEZvcm1EYXRh
OjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogCiB2b2lkIEZvcm1E
YXRhOjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7Ci0gICAgbV9lbGVtZW50
cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5k
T2ZGaWxlLCBXVEY6Om51bGxvcHQpKTsKLSAgICBtX2xlbmd0aEluQnl0ZXMgPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBC
bG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlLCBzdGQ6Om51bGxvcHQpKTsKKyAgICBtX2xlbmd0aElu
Qnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGVSYW5n
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5n
dGgsIE9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAg
bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCBzdGFydCwgbGVuZ3Ro
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKLSAgICBtX2xlbmd0aEluQnl0ZXMgPSBXVEY6
Om51bGxvcHQ7CisgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0OwogfQogCiB2b2lk
IEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsKICAgICBtX2VsZW1l
bnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoYmxvYlVSTCkpOwotICAgIG1fbGVuZ3RoSW5CeXRl
cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gbm9ybWFsaXplU3RyaW5nRGF0YShUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IDU1MzlhZjJlYjZkMGY1YWM3ODBjOGJiN2M5YjEy
MzNmN2NjYzljMTEuLjlkYWM2MGU3YWQzYmU0OTUwZjY5NzliYzZmNDNiNmM3NjA5ZjRjZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTY0LDcgKzY0
LDcgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgIE9wdGlvbmFsPERhdGE+IGRh
dGE7CiAgICAgICAgIGRlY29kZXIgPj4gZGF0YTsKICAgICAgICAgaWYgKCFkYXRhKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoV1RGTW92ZSgqZGF0YSkpOwogICAg
IH0KIApAQCAtOTcsMjIgKzk3LDIyIEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAg
ICAgICAgT3B0aW9uYWw8U3RyaW5nPiBmaWxlbmFtZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4g
ZmlsZW5hbWU7CiAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgT3B0aW9uYWw8aW50NjRfdD4gZmlsZVN0YXJ0Owog
ICAgICAgICAgICAgZGVjb2RlciA+PiBmaWxlU3RhcnQ7CiAgICAgICAgICAgICBpZiAoIWZpbGVT
dGFydCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE9wdGlv
bmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGZpbGVMZW5n
dGg7CiAgICAgICAgICAgICBpZiAoIWZpbGVMZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBPcHRpb25hbDxPcHRpb25hbDxXYWxsVGltZT4+IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGV4cGVjdGVk
RmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4ge3sK
ICAgICAgICAgICAgICAgICBXVEZNb3ZlKCpmaWxlbmFtZSksCkBAIC0xNDAsNyArMTQwLDcgQEAg
c3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgICAgICBPcHRpb25hbDxVUkw+IHVybDsK
ICAgICAgICAgICAgIGRlY29kZXIgPj4gdXJsOwogICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqdXJsKSB9fTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFk
ZXJNYXAuaAppbmRleCBhMGVjMjA2OWQ5Mjk3NzdjNGIyMWUyYTRlMzA4MGVhOTRkYWRkMzQxLi5m
NDQyMTcwOGUxNTY0OWViMTAwZWQ5OGEyYzQ3NGU0NzhhZmE0NGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtMTE5LDcgKzExOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmIChpdCA9PSBtX3RhYmxlLnVuY29tbW9uSGVhZGVy
cygpLmVuZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG1f
a2V5VmFsdWUua2V5ID0gaXQtPmtleTsKLSAgICAgICAgICAgIG1fa2V5VmFsdWUua2V5QXNIVFRQ
SGVhZGVyTmFtZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fa2V5VmFsdWUua2V5QXNI
VFRQSGVhZGVyTmFtZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIG1fa2V5VmFsdWUudmFs
dWUgPSBpdC0+dmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAt
MjI5LDEwICsyMjksMTAgQEAgYXV0byBIVFRQSGVhZGVyTWFwOjpDb21tb25IZWFkZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxDb21tb25IZWEKIHsKICAgICBIVFRQSGVh
ZGVyTmFtZSBuYW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3Ry
aW5nIHZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIENvbW1vbkhlYWRlciB7IG5hbWUsIFdURk1vdmUodmFsdWUpIH07CiB9CkBAIC0yNDksMTAg
KzI0OSwxMCBAQCBhdXRvIEhUVFBIZWFkZXJNYXA6OlVuY29tbW9uSGVhZGVyOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgLT4gT3B0aW9uYWw8VW5jb21tbwogewogICAgIFN0cmluZyBuYW1lOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgU3RyaW5nIHZhbHVlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFVuY29tbW9uSGVh
ZGVyIHsgV1RGTW92ZShuYW1lKSwgV1RGTW92ZSh2YWx1ZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggMzc2ZDVlNzYzY2Yy
N2E3YzZkZWQ3NDgzNTlkN2EzNDhiM2ZkMzZjMy4uYTMyYWQ3NzQ4NmY2MDdmZWQ3ZDg2NWUwY2Q0
OWJjNjM5M2JhMDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCBPcHRpb25hbDxXYWxsVGltZT4gcGFy
c2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGRvdWJsZSBkYXRlSW5NaWxs
aXNlY29uZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVy
cyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWls
bGlzZWNvbmRzU2luY2VFcG9jaCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gVGhpcyBhc3N1bWVzIHN5c3RlbV9jbG9j
ayBlcG9jaCBlcXVhbHMgVW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZvciBhbGwgaW1wbGVtZW50
YXRpb25zIGJ1dCB1bnNwZWNpZmllZC4KICAgICAvLyBGSVhNRTogVGhlIHBhcnNpbmcgZnVuY3Rp
b24gc2hvdWxkIGJlIHN3aXRjaGVkIHRvIFdhbGxUaW1lIHRvby4KICAgICByZXR1cm4gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKGRhdGVJbk1pbGxpc2Vjb25kc1NpbmNlRXBvY2ggLyAxMDAwLjAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrTG9h
ZEluZm9ybWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtM
b2FkSW5mb3JtYXRpb24uaAppbmRleCBjMWIyMjM3OGZlNTU2ZWQyMjc1ZjZkM2Q1YmE2Mzg3OTdh
ODJmNDJjLi42MTk1OWNjZDE0MDNhODcyNjZhNjA2YThmNzdjMDg1MmQ1NjVmYTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5mb3JtYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaApAQCAtNjQsMTMgKzY0LDEzIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlu
bGluZSBPcHRpb25hbDxOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj4gTmV0d29ya1RyCiAg
ICAgTmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24gaW5mb3JtYXRpb247CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGluZm9ybWF0aW9uLnR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW5mb3JtYXRpb24ucmVxdWVzdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShp
bmZvcm1hdGlvbi5yZXNwb25zZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbmZvcm1h
dGlvbi5tZXRyaWNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBpbmZvcm1hdGlvbjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmll
ci5jcHAKaW5kZXggYWNjZjk0NDFjM2M2NmFiOTI1OTliMzU4N2IxYjk5N2IxZTAzZGQ4Ny4uNDNi
ODExYzM5MzJkY2E0YTYxYWFkMDdjYTlkNTEzNWE1ZGU4ZmM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6b25MaW5lKCkKIHsK
ICAgICBpZiAoIW1faXNPbkxpbmUpCiAgICAgICAgIHVwZGF0ZVN0YXRlKCk7Ci0gICAgcmV0dXJu
IG1faXNPbkxpbmUudmFsdWVPcih0cnVlKTsKKyAgICByZXR1cm4gbV9pc09uTGluZS52YWx1ZV9v
cih0cnVlKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6YWRkTGlzdGVuZXIoV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGxpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4
IGY5NDRiNzc5YjVmYmEyYTBiNDEzNDIwNTI3YTgyYmE2N2JlNTcxNjMuLmRmMGZhZTllMGQ0NGJk
YzZkZTY1YzQxMWM0YmU4NjAwMWZkMzk3MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTE4MCw5
ICsxODAsOSBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkRXhlbXB0RG9tYWlu
UGFpckZyb21UaGlyZFBhcnR5Q29va2llQmxvY2tpbmcoYwogCiBPcHRpb25hbDxTZWNvbmRzPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykpCisgICAgaWYg
KG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29r
aWVzKHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZzo6Tm8pKQogICAgICAgICByZXR1cm4gbV9jYWNoZU1heEFnZUNh
cEZvclByZXZhbGVudFJlc291cmNlczsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRB
Z2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKQpAQCAt
MzM1LDcgKzMzNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uCiAgICAgCiB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cygpCiB7Ci0gICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzID0gc3Rk
OjpudWxsb3B0OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGlkQ29tbWl0Q3Jv
c3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCkBAIC00MTUs
NyArNDE1LDcgQEAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c3ViUmVzb3VyY2VEb21haW5zSW4KICAgICBhdXRvIGl0ID0gc3RvcmFn
ZUFjY2Vzc1F1aXJrcygpLmZpbmQodG9wRnJhbWVEb21haW4pOwogICAgIGlmIChpdCAhPSBzdG9y
YWdlQWNjZXNzUXVpcmtzKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRp
b25hbDxSZWdpc3RyYWJsZURvbWFpbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmaW5kQWRkaXRp
b25hbExvZ2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BEb21haW4sIGNvbnN0IFN1
YlJlc291cmNlRG9tYWluJiBzdWJEb21haW4pCkBAIC00MjYsNyArNDI2LDcgQEAgT3B0aW9uYWw8
UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZmluZEFkZGl0aW9uYWxM
b2dpbkRvbWFpbihjb24KICAgICBpZiAoc3ViRG9tYWluLnN0cmluZygpID09ICJzb255ZW50ZXJ0
YWlubWVudG5ldHdvcmsuY29tIl9zICYmIHRvcERvbWFpbi5zdHJpbmcoKSA9PSAicGxheXN0YXRp
b24uY29tIl9zKQogICAgICAgICByZXR1cm4gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygic29ueS5jb20iX3MpOwogCi0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDc4
ZWMwNmI3NGU0NzJiZDYzOGE5ZjVlOTM3MGJmMmY2YjhmOWIyNjMuLjk5YjUzMWY5N2E5YWIyMjVl
YTk0MjBjNTFmYjdlZjM5MjQwOTBjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMzAxLDcgKzMwMSw3
IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5F
Q1RJT04pCi1XRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIsIE9wdGlv
bmFsPEhUVFBDb29raWVBY2NlcHRQb2xpY3k+ID0gV1RGOjpudWxsb3B0KTsKK1dFQkNPUkVfRVhQ
T1JUIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVQcml2YXRlU3RvcmFn
ZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW9uYWw8SFRUUENvb2tpZUFjY2Vw
dFBvbGljeT4gPSBzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKaW5kZXggOTc1
ZGQzZTJlZTViY2M2ZDNkNDFkMDA1YTAwZTRhNTQ3ZDBkOGQwOS4uODYzMTRjNDY0M2VkOWI3NDIx
ZDM4NmNlNWU0YjYzMjQ5YjNlMjYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKQEAgLTMzMSwxMyArMzMxLDEzIEBA
IE9wdGlvbmFsPFBhcnNlZENvbnRlbnRUeXBlPiBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsCiB7CiAgICAgUGFyc2VkQ29udGVudFR5cGUgcGFyc2Vk
Q29udGVudFR5cGUobW9kZSA9PSBNb2RlOjpSZmMyMDQ1ID8gY29udGVudFR5cGUgOiBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoY29udGVudFR5cGUpKTsKICAgICBpZiAoIXBhcnNl
ZENvbnRlbnRUeXBlLnBhcnNlQ29udGVudFR5cGUobW9kZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgV1RG
TW92ZShwYXJzZWRDb250ZW50VHlwZSkgfTsKIH0KIAogYm9vbCBpc1ZhbGlkQ29udGVudFR5cGUo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgTW9kZSBtb2RlKQogewotICAgIHJldHVybiBQYXJz
ZWRDb250ZW50VHlwZTo6Y3JlYXRlKGNvbnRlbnRUeXBlLCBtb2RlKSAhPSBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIFBhcnNlZENvbnRlbnRUeXBlOjpjcmVhdGUoY29udGVudFR5cGUsIG1vZGUp
ICE9IHN0ZDo6bnVsbG9wdDsKIH0KIAogUGFyc2VkQ29udGVudFR5cGU6OlBhcnNlZENvbnRlbnRU
eXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKaW5kZXggMWM0ZDNjM2Yy
NDc3NDZmNGFmZjIwYWNjOWMyMDI2MWU2MTlhYWJkMC4uYzE5NDJhZmQ3ODRmOTgyYmQyZGExY2Vj
MGIyYjZkMWY1ZDRmODNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcApAQCAtMzQsMjkgKzM0LDI5IEBAIE9wdGlv
bmFsPFBhcnNlZFJlcXVlc3RSYW5nZT4gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShTdHJpbmdW
aWV3IGlucHV0KQogewogICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMz
I3NlY3Rpb24tMi4xIGJ1dCBhc3N1bWluZyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIGJlZ2luIGFu
ZCBhbiBlbmQgb3IgcGFyc2luZyB3aWxsIGZhaWwKICAgICBpZiAoIWlucHV0LnN0YXJ0c1dpdGgo
U3RyaW5nVmlldygiYnl0ZXM9Il9zKSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgYmVnaW4geyAwIH07CiAg
ICAgc2l6ZV90IGVuZCB7IDAgfTsKICAgICBzaXplX3QgcmFuZ2VCZWdpblBvc2l0aW9uID0gNjsK
ICAgICBzaXplX3QgZGFzaFBvc2l0aW9uID0gaW5wdXQuZmluZCgnLScsIHJhbmdlQmVnaW5Qb3Np
dGlvbik7CiAgICAgaWYgKGRhc2hQb3NpdGlvbiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
YmVnaW5TdHJpbmcgPSBpbnB1dC5zdWJzdHJpbmcocmFuZ2VCZWdpblBvc2l0aW9uLCBkYXNoUG9z
aXRpb24gLSByYW5nZUJlZ2luUG9zaXRpb24pOwogICAgIGF1dG8gb3B0aW9uYWxCZWdpbiA9IHBh
cnNlSW50ZWdlcjx1aW50NjRfdD4oYmVnaW5TdHJpbmcpOwogICAgIGlmICghb3B0aW9uYWxCZWdp
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBiZWdpbiA9ICpvcHRpb25hbEJlZ2luOwogCiAgICAgYXV0byBlbmRTdHJpbmcg
PSBpbnB1dC5zdWJzdHJpbmcoZGFzaFBvc2l0aW9uICsgMSk7CiAgICAgYXV0byBvcHRpb25hbEVu
ZCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4oZW5kU3RyaW5nKTsKICAgICBpZiAoIW9wdGlvbmFs
RW5kKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGVuZCA9ICpvcHRpb25hbEVuZDsKIAogICAgIGlmIChiZWdpbiA+IGVuZCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiB7eyBiZWdpbiwgZW5kIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXgg
ZTA2OTg2ODg2NTdiMWZjMWUzNTUxN2M3YjRlMjJjOWY3ZjEwYjhlYS4uMjA0NzU4MzFjNTkxMjU3
ZmMxMjlhZjJkY2Y4ODRiMmJkYjVhODkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC02MDksNyArNjA5
LDcgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc1N5c3RlbVByZXZpZXcoKSBjb25zdAog
CiBTeXN0ZW1QcmV2aWV3SW5mbyBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzeXN0ZW1QcmV2aWV3SW5m
bygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3lzdGVtUHJldmlld0luZm8udmFsdWVPcihTeXN0
ZW1QcmV2aWV3SW5mbyB7IH0pOworICAgIHJldHVybiBtX3N5c3RlbVByZXZpZXdJbmZvLnZhbHVl
X29yKFN5c3RlbVByZXZpZXdJbmZvIHsgfSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0U3lzdGVtUHJldmlld0luZm8oY29uc3QgU3lzdGVtUHJldmlld0luZm8mIGluZm8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCmluZGV4IGFhOTE2MmU0OTBmZWY2MTA2OTFkZTI0Njk0M2QzMWQ4MmExZTJl
NTQuLjUyNjUzMjMzMDE3MGUxNmYxOTAyOGFkOTM5M2JjNGIwNjQ0ODdlZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgUmVzb3VyY2VSZXNwb25zZSBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6ZmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogICAgIEFT
U0VSVChyZXNwb25zZS50YWludGluZygpID09IFRhaW50aW5nOjpDb3JzKTsKICAgICBmaWx0ZXJl
ZFJlc3BvbnNlLnNldFR5cGUoVHlwZTo6Q29ycyk7CiAKLSAgICBhdXRvIGFjY2Vzc0NvbnRyb2xF
eHBvc2VIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFj
Y2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVPcihIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiB7IH0pOworICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhl
YWRlclNldCA9IHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29u
dHJvbEV4cG9zZUhlYWRlcnMpKS52YWx1ZV9vcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiB7IH0pOwogICAgIGlmIChwZXJmb3JtQ2hlY2sgPT0gUGVyZm9ybUV4cG9z
ZUFsbEhlYWRlcnNDaGVjazo6WWVzICYmIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQuY29u
dGFpbnMoIioiKSkKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVzcG9uc2U7CiAKQEAgLTQ1NCw3
ICs0NTQsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZUhUVFBIZWFkZXJG
aWVsZHNBY2NvcmRpbmdUb1RhaW50aW5nKCkKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlRh
aW50aW5nOjpCYXNpYzoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25z
ZTo6VGFpbnRpbmc6OkNvcnM6IHsKLSAgICAgICAgYXV0byBjb3JzU2FmZUhlYWRlclNldCA9IHBh
cnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KGh0dHBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnMpKS52
YWx1ZU9yKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfSk7Cisg
ICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xp
c3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKICAgICAgICAgaWYgKGNvcnNTYWZlSGVh
ZGVyU2V0LmNvbnRhaW5zKCIqIikpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTY5Nyw3ICs2
OTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8V2FsbFRpbWU+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIo
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgSAogewogICAgIFN0cmluZyBoZWFkZXJWYWx1
ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlmIChoZWFkZXJWYWx1ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgLy8gVGhpcyBoYW5kbGVzIGFsbCBkYXRlIGZvcm1hdHMgcmVxdWlyZWQgYnkg
UkZDMjYxNjoKICAgICAvLyBTdW4sIDA2IE5vdiAxOTk0IDA4OjQ5OjM3IEdNVCAgOyBSRkMgODIy
LCB1cGRhdGVkIGJ5IFJGQyAxMTIzCiAgICAgLy8gU3VuZGF5LCAwNi1Ob3YtOTQgMDg6NDk6Mzcg
R01UIDsgUkZDIDg1MCwgb2Jzb2xldGVkIGJ5IFJGQyAxMDM2CkBAIC03NTMsNyArNzUzLDcgQEAg
T3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQoKSBj
b25zdAogICAgICAgICAvLyBhbiBpbnZhbGlkIHZhbHVlIChyZGFyOi8vcHJvYmxlbS8yMjM1Mjgz
OCkuCiAgICAgICAgIGNvbnN0IFdhbGxUaW1lIGVwb2NoID0gV2FsbFRpbWU6OmZyb21SYXdTZWNv
bmRzKDApOwogICAgICAgICBpZiAobV9sYXN0TW9kaWZpZWQgJiYgbV9sYXN0TW9kaWZpZWQudmFs
dWUoKSA9PSBlcG9jaCkKLSAgICAgICAgICAgIG1fbGFzdE1vZGlmaWVkID0gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgbV9sYXN0TW9kaWZpZWQgPSBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAg
ICAgICAgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyID0gdHJ1ZTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsLmNwcAppbmRleCAyMjNjMDcxODI3MDdiMTAzNmNlMjVlMTQ1Y2Q2MDNhNzEyNGE2
M2I1Li43MGZlMWRhNmFkMGYzZDY5NmVmMTk0ZmY0ZTIxZGZhYzg3ODNhNWMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHNpemVfdCByZW1vdmVUZXJtaW5h
dGlvbkNoYXJhY3RlcnMoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgKIHN0
YXRpYyBPcHRpb25hbDxzdGQ6OnBhaXI8VmVjdG9yPHVpbnQ4X3Q+LCBib29sPj4gY29va2llRGF0
YUZvckhhbmRzaGFrZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiwgY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZpZWxk
UHJveHkpCiB7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
YXV0byBbY29va2llRGF0YVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkXSA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQ
cm94eSk7CiAgICAgaWYgKGNvb2tpZURhdGFTdHJpbmcuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9DZXJ0aWZpY2F0ZUluZm9DRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NG
TmV0LmNwcAppbmRleCBiYTJmN2EwYzMzZDRjYjA2N2E5ZjViNWExODcxZTFiYzNlZmU3MTg1Li4y
MDFmYmQ5N2VmYmYzYTkwYzQ4OTAxOWE3NWQ2OWUyODllYjE5ZTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0NlcnRpZmljYXRlSW5mb0NG
TmV0LmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIE9wdGlvbmFsPENlcnRpZmljYXRlU3VtbWFyeT4g
Q2VydGlmaWNhdGVJbmZvOjpzdW1tYXJ5KCkgY29uc3QKIHsKICAgICBhdXRvIGNoYWluID0gY2Vy
dGlmaWNhdGVDaGFpbigpOwogICAgIGlmICghY2hhaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBDZXJ0aWZpY2F0ZVN1
bW1hcnkgc3VtbWFyeUluZm87CiAKQEAgLTIwNywxMSArMjA3LDExIEBAIHN0YXRpYyBPcHRpb25h
bDxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gZGVjb2RlQ0ZEYXRhKERlY29kZXImIGRlY29kZXIpCiAg
ICAgZGVjb2RlciA+PiBzaXplOwogCiAgICAgaWYgKFVOTElLRUxZKCFpc0luQm91bmRzPHNpemVf
dD4oKnNpemUpKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcG9pbnRlciA9IGRlY29kZXIuYnVmZmVyUG9pbnRl
ckZvckRpcmVjdFJlYWQoc3RhdGljX2Nhc3Q8c2l6ZV90Pigqc2l6ZSkpOwogICAgIGlmICghcG9p
bnRlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBwb2lu
dGVyLCAqc2l6ZSkpOwogfQpAQCAtMjM0LDE4ICsyMzQsMTggQEAgc3RhdGljIE9wdGlvbmFsPFJl
dGFpblB0cjxTZWNUcnVzdFJlZj4+IGRlY29kZVNlY1RydXN0UmVmKERlY29kZXImIGRlY29kZXIp
CiAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzVHJ1c3Q7CiAgICAgZGVjb2RlciA+PiBoYXNUcnVzdDsK
ICAgICBpZiAoIWhhc1RydXN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCEqaGFzVHJ1c3QpCiAgICAgICAgIHJl
dHVybiB7IG51bGxwdHIgfTsKIAogICAgIGF1dG8gdHJ1c3REYXRhID0gZGVjb2RlQ0ZEYXRhKGRl
Y29kZXIpOwogICAgIGlmICghdHJ1c3REYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byB0cnVzdCA9IGFkb3B0
Q0YoU2VjVHJ1c3REZXNlcmlhbGl6ZSh0cnVzdERhdGEtPmdldCgpLCBudWxscHRyKSk7CiAgICAg
aWYgKCF0cnVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0cnVzdDsKIH0KQEAgLTI3MywxNCArMjczLDE0
IEBAIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8Q0ZBcnJheVJlZj4+IGRlY29kZUNlcnRpZmlj
YXRlQ2hhaW4oRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDx1aW50NjRfdD4gc2l6ZTsK
ICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBhcnJh
eSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAqc2l6ZTsgKytpKSB7CiAgICAg
ICAgIGF1dG8gZGF0YSA9IGRlY29kZUNGRGF0YShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFkYXRh
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBjZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2Vy
dGlmaWNhdGVDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLT5nZXQoKSkpOwogICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIGNlcnRpZmljYXRlLmdldCgpKTsKQEAgLTMxNywxNCAr
MzE3LDE0IEBAIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gQ29kZXI8V2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKERlY29kCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvOjpUeXBlPiBjZXJ0aWZpY2F0ZUluZm9UeXBlOwogICAgIGRlY29kZXIg
Pj4gY2VydGlmaWNhdGVJbmZvVHlwZTsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mb1R5cGUpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBzd2l0Y2ggKCpjZXJ0aWZpY2F0ZUluZm9UeXBlKSB7CiAjaWYgSEFWRShTRUNfVFJV
U1RfU0VSSUFMSVpBVElPTikKICAgICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlw
ZTo6VHJ1c3Q6IHsKICAgICAgICAgYXV0byB0cnVzdCA9IGRlY29kZVNlY1RydXN0UmVmKGRlY29k
ZXIpOwogICAgICAgICBpZiAoIXRydXN0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhXVEZNb3ZlKCp0cnVzdCkpOwogICAgIH0KQEAgLTMzMyw3
ICszMzMsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENvZGVyPFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZAogICAgIGNhc2UgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvOjpUeXBlOjpDZXJ0aWZpY2F0ZUNoYWluOiB7CiAgICAgICAgIGF1dG8gY2Vy
dGlmaWNhdGVDaGFpbiA9IGRlY29kZUNlcnRpZmljYXRlQ2hhaW4oZGVjb2Rlcik7CiAgICAgICAg
IGlmICghY2VydGlmaWNhdGVDaGFpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm8oV1RGTW92ZSgqY2VydGlmaWNhdGVDaGFpbikpOwogICAgIH0K
QEAgLTM0Myw3ICszNDMsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IENv
ZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZShEZWNvZAogICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBQ
ZXJzaXN0ZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IDk5MTVm
MGNlYWNhZjk0NmViNGFmMmQ2Yjc0MGY3MjI2ZTM0NGI3OGQuLmU2N2U4M2M2YjE2ZWZiY2MyNTgy
YzNhODYyNDJmNTVmOWM0YjUyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAKQEAgLTcyNCw3ICs3MjQsNyBAQCBPcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqIGRhdAogCiAgICAgQ0ZJ
bmRleCByZXN1bHQgPSBDRldyaXRlU3RyZWFtV3JpdGUobV93cml0ZVN0cmVhbS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBsZW5ndGgpOwogICAgIGlmIChyZXN1
bHQgPT0gLTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBBU1NFUlQocmVzdWx0ID49IDApOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzaXplX3Q+KHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL0Nvb2tpZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9Db29raWVDb2NvYS5tbQppbmRleCBhYTM5MDI3MTgyZDc4NGE3ZDk0
Njc3YThlMDBmZjAwMDBkN2VmNTc1Li44YTUwNjUwY2VhODYyZTE1NWYyNTMzYjRmZGQ3MzlmN2I4
M2MxNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L0Nvb2tpZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvQ29va2llQ29jb2EubW0KQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIE9wdGlvbmFsPGRvdWJs
ZT4gY29va2llRXhwaXJ5KE5TSFRUUENvb2tpZSAqY29va2llKQogewogICAgIE5TRGF0ZSAqZXhw
aXJ5RGF0ZSA9IGNvb2tpZS5leHBpcmVzRGF0ZTsKICAgICBpZiAoIWV4cGlyeURhdGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIFtleHBpcnlEYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKiAxMDAwLjA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDExYzlhMjM4M2Nk
NmM4YzMwMWExYTA4ZGNkZWFmYWU3OWQyNjJiNDQuLmQ5NzgyYmIxMDcwNDY2MjVhZDA5MmNkYWY1
MjExOWY0MTRhOTJjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpA
QCAtNTE0LDcgKzUxNCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29r
aWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtCiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IHRoaXMtPmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBSZXRhaW5QdHI8
TlNBcnJheT4gY29va2llcyA9IGh0dHBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCks
IG5pbCwgV1RGOjpudWxsb3B0LCB1cmwpOworICAgIFJldGFpblB0cjxOU0FycmF5PiBjb29raWVz
ID0gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgbmlsLCBzdGQ6Om51bGxv
cHQsIHVybCk7CiAKICAgICBOU1N0cmluZyAqY29va2llTmFtZVN0cmluZyA9IGNvb2tpZU5hbWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFu
Z2VSZXNwb25zZUdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQppbmRleCAxNzUyMjZiZGZhOGQwODJkNjNk
OWE3ZTU5NTkwYjBjZGE1MmY0ZmI1Li5mZGUwZmZjZGJmNGRhZmE5YjJjYjA0NTBjNTkwNGU1Yzhl
Y2ZlYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCkBAIC0xNzIsNyArMTcyLDcg
QEAgT3B0aW9uYWw8c2l6ZV90PiBSYW5nZVJlc3BvbnNlR2VuZXJhdG9yOjpleHBlY3RlZENvbnRl
bnRMZW5ndGhGcm9tRGF0YShjb25zdCBEYXQKICAgICAvLyBGSVhNRTogUmVzb3VyY2VSZXNwb25z
ZUJhc2U6OmV4cGVjdGVkQ29udGVudExlbmd0aCgpIHNob3VsZCByZXR1cm4gT3B0aW9uYWw8c2l6
ZV90PiBpbnN0ZWFkIG9mIHVzIGRvaW5nIHRoaXMgY2hlY2sgaGVyZS4KICAgICBhdXRvIGV4cGVj
dGVkQ29udGVudExlbmd0aCA9IGRhdGEub3JpZ2luYWxSZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKTsKICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoID09IE5TVVJMUmVzcG9uc2VV
bmtub3duTGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBleHBlY3RlZENvbnRlbnRMZW5ndGg7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKaW5kZXggNDEwYTI3NmY0ZTA2
Mzk3NTZjZTRjMGMzZjNjZjMwNWM1NjM2MDQyMS4uOTNjZDg4ZjMwYTY3OTc2NGE5ODhjNDhlM2Vm
OWY4M2VmMjQ4N2I5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ3VybC5jcHAK
QEAgLTY4LDcgKzY4LDcgQEAgUHJvdGVjdGlvblNwYWNlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ojpwcm90ZWN0aW9uU3BhY2VGb3JQYXNzd29yZEJhc2VkKGNvbnN0IEMKICAgICBhdXRvIHNlcnZl
clR5cGUgPSBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSSSh1cmwsIGlzUHJveHlBdXRo
KTsKICAgICBhdXRvIGF1dGhlbnRpY2F0aW9uU2NoZW1lID0gYXV0aGVudGljYXRpb25TY2hlbWVG
cm9tQ3VybEF1dGgoaXNQcm94eUF1dGggPyBjdXJsUmVzcG9uc2UuYXZhaWxhYmxlUHJveHlBdXRo
IDogY3VybFJlc3BvbnNlLmF2YWlsYWJsZUh0dHBBdXRoKTsKIAotICAgIHJldHVybiBQcm90ZWN0
aW9uU3BhY2UodXJsLmhvc3QoKS50b1N0cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFs
dWVPcigwKSksIHNlcnZlclR5cGUsIHBhcnNlUmVhbG0ocmVzcG9uc2UpLCBhdXRoZW50aWNhdGlv
blNjaGVtZSk7CisgICAgcmV0dXJuIFByb3RlY3Rpb25TcGFjZSh1cmwuaG9zdCgpLnRvU3RyaW5n
KCksIHN0YXRpY19jYXN0PGludD4ocG9ydC52YWx1ZV9vcigwKSksIHNlcnZlclR5cGUsIHBhcnNl
UmVhbG0ocmVzcG9uc2UpLCBhdXRoZW50aWNhdGlvblNjaGVtZSk7CiB9CiAKIFByb3RlY3Rpb25T
cGFjZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6cHJvdGVjdGlvblNwYWNlRm9yU2VydmVyVHJ1
c3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
KQpAQCAtNzcsNyArNzcsNyBAQCBQcm90ZWN0aW9uU3BhY2UgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OnByb3RlY3Rpb25TcGFjZUZvclNlcnZlclRydXN0KGNvbnN0IFVSTAogICAgIGF1dG8gc2Vy
dmVyVHlwZSA9IHByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGVGcm9tVVJJKHVybCwgZmFsc2UpOwog
ICAgIGF1dG8gYXV0aGVudGljYXRpb25TY2hlbWUgPSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZDsKIAotICAgIHJldHVybiBQ
cm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKS50b1N0cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBv
cnQudmFsdWVPcigwKSksIHNlcnZlclR5cGUsIFN0cmluZygpLCBhdXRoZW50aWNhdGlvblNjaGVt
ZSwgY2VydGlmaWNhdGVJbmZvKTsKKyAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0
KCkudG9TdHJpbmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlX29yKDApKSwgc2VydmVy
VHlwZSwgU3RyaW5nKCksIGF1dGhlbnRpY2F0aW9uU2NoZW1lLCBjZXJ0aWZpY2F0ZUluZm8pOwog
fQogCiBPcHRpb25hbDx1aW50MTZfdD4gQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmRldGVybWlu
ZVByb3h5UG9ydChjb25zdCBVUkwmIHVybCkKQEAgLTkzLDcgKzkzLDcgQEAgT3B0aW9uYWw8dWlu
dDE2X3Q+IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpkZXRlcm1pbmVQcm94eVBvcnQoY29uc3Qg
VVJMJiB1cmwpCiAgICAgaWYgKHByb3RvY29sSXNJblNvY2tzRmFtaWx5KHVybCkpCiAgICAgICAg
IHJldHVybiBzb2Nrc1BvcnQ7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjphdXRoZW50aWNhdGlvblNjaGVtZUZyb21DdXJsQXV0
aChsb25nIGN1cmxBdXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mby5oCmluZGV4IDYzNGU0MWZiZGI3Zjc5MjE0MDhjNzA5
MDE1ZmVkYjkzMTRmNDM1N2UuLmRjYTIwYmEzYzU0MjE2MGEzMTg1NzBjNjdkYTUyMGQ3ZjNjZjJh
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0
aWZpY2F0ZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q2VydGlmaWNhdGVJbmZvLmgKQEAgLTg3LDE5ICs4NywxOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBD
b2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICAgICAgT3B0aW9uYWw8aW50PiB2
ZXJpZmljYXRpb25FcnJvcjsKICAgICAgICAgZGVjb2RlciA+PiB2ZXJpZmljYXRpb25FcnJvcjsK
ICAgICAgICAgaWYgKCF2ZXJpZmljYXRpb25FcnJvcikKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPHNpemVfdD4gbnVtT2ZDZXJ0czsKICAgICAgICAgZGVjb2RlciA+PiBudW1PZkNlcnRz
OwogICAgICAgICBpZiAoIW51bU9mQ2VydHMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlQ2hhaW4gY2VydGlmaWNhdGVDaGFpbjsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1PZkNlcnRzLnZhbHVlKCk7IGkrKykgewog
ICAgICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZT4gY2VydGlmaWNhdGU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGNlcnRpZmljYXRlOwogICAg
ICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
ICAgIGNlcnRpZmljYXRlQ2hhaW4uYXBwZW5kKFdURk1vdmUoY2VydGlmaWNhdGUudmFsdWUoKSkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKaW5kZXggMThmYTI3YWFlZGQzZjcz
ZjkwY2MwNjQ2MzEwNjcwYTdmYjYxN2RjOS4uZWMwZjRiYTBjYmU0MWZkMWVjZThhYjhmZjJmODM2
NWZiNmEwYTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtNjAsNyArNjAsNyBAQCBD
ZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5mbzo6bWFrZUNlcnRpZmlj
YXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZgogT3B0aW9uYWw8Q2VydGlmaWNhdGVTdW1tYXJ5PiBDZXJ0
aWZpY2F0ZUluZm86OnN1bW1hcnkoKSBjb25zdAogewogICAgIGlmICghbV9jZXJ0aWZpY2F0ZUNo
YWluLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBPcGVuU1NMOjpjcmVhdGVTdW1tYXJ5SW5mbyht
X2NlcnRpZmljYXRlQ2hhaW4uYXQoMCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggMDVkNjI1ZDAxNjFkY2Y0
YzI3MDAxMDczNDY1ZDI1MzFkNGYxNTkzOC4uZGJiMDU4Mzg1ZGFiN2I2ZTM5NWUxNTlkNTgxY2Y5
MDc0N2JkMTYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zNzIsMTQgKzM3MiwxNCBAQCBib29sIENvb2tpZUph
ckRCOjpoYXNDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogT3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+
IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiByZXF1ZXN0VXJsLCBjb25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9w
dGlvbmFsPGJvb2w+JiBzZWN1cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKQogewog
ICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fZGF0YWJhc2UuaXNPcGVuKCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBT
dHJpbmcgcmVxdWVzdEhvc3QgPSByZXF1ZXN0VXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2Vy
Y2FzZSgpOwogICAgIGlmIChyZXF1ZXN0SG9zdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWNo
ZWNrQ29va2llQWNjZXB0UG9saWN5KGZpcnN0UGFydHksIHJlcXVlc3RVcmwpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
U3RyaW5nIHJlcXVlc3RQYXRoID0gcmVxdWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBp
ZiAocmVxdWVzdFBhdGguaXNFbXB0eSgpKQpAQCAtMzk1LDcgKzM5NSw3IEBAIE9wdGlvbmFsPFZl
Y3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0CiAgICAgICAgICJBTkQgKChkb21haW4gPSA/KSBPUiAoZG9tYWluIEdMT0Ig
PykpICJcCiAgICAgICAgICJPUkRFUiBCWSBsZW5ndGgocGF0aCkgREVTQywgbGFzdHVwZGF0ZWQi
X3MpOwogICAgIGlmICghcHN0bXQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBwc3RtdC0+YmluZEludDY0KDEsIFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kcygpKTsKICAgICBwc3Rt
dC0+YmluZEludCgyLCBodHRwT25seSA/ICpodHRwT25seSA6IC0xKTsKQEAgLTUxMSw3ICs1MTEs
NyBAQCBib29sIENvb2tpZUphckRCOjpjYW5BY2NlcHRDb29raWUoY29uc3QgQ29va2llJiBjb29r
aWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgYwogCiBib29sIENvb2tpZUphckRCOjpzZXRDb29r
aWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgYXV0byBleHBpcmVzID0gY29va2llLmV4
cGlyZXMudmFsdWVPcigwLjApOworICAgIGF1dG8gZXhwaXJlcyA9IGNvb2tpZS5leHBpcmVzLnZh
bHVlX29yKDAuMCk7CiAgICAgaWYgKCFjb29raWUuc2Vzc2lvbiAmJiBNb25vdG9uaWNUaW1lOjpm
cm9tUmF3U2Vjb25kcyhleHBpcmVzIC8gV1RGOjptc1BlclNlY29uZCkgPD0gTW9ub3RvbmljVGlt
ZTo6bm93KCkpCiAgICAgICAgIHJldHVybiBkZWxldGVDb29raWVJbnRlcm5hbChjb29raWUubmFt
ZSwgY29va2llLmRvbWFpbiwgY29va2llLnBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IDQ4NDljNjY3YzJhMTI4
ODQxZmZiMDU3NmE2NjkwYzRkOGZkNDVlMjEuLjA5MWU5NDc3NzE4NmRiOWM2MDQ4ZjE3NzRhNzRm
Y2YxNTlhZTQ1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBIYXNoU2V0
PFN0cmluZz4gYWxsRG9tYWlucygpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBzZWFy
Y2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiByZXF1ZXN0VXJsLCBj
b25zdCBPcHRpb25hbDxib29sPiYgaHR0cE9ubHksIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZWN1
cmUsIGNvbnN0IE9wdGlvbmFsPGJvb2w+JiBzZXNzaW9uKTsKICAgICBWZWN0b3I8Q29va2llPiBn
ZXRBbGxDb29raWVzKCk7Ci0gICAgYm9vbCBzZXRDb29raWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwgU291cmNlLCBPcHRpb25hbDxTZWNv
bmRzPiBjYXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdCk7CisgICAgYm9vbCBzZXRDb29raWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZSwg
U291cmNlLCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdCk7
CiAgICAgYm9vbCBzZXRDb29raWUoY29uc3QgQ29va2llJik7CiAKICAgICBib29sIGRlbGV0ZUNv
b2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA1
ZDUyYzk4ODJhMzMxNTIwODU2YTFiNjIzMGYxZGRiMjEwODBkOWQ2Li5lMzUwNDQ4MjA2MjFmYmY3
OTJjZWQ3MDZkMWQwMTRmY2UzZDM1MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3Rh
dGljIHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBi
b29sJiBoYXNNYXhBZ2UsIENvb2sKIE9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIo
Y29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQogewogICAgIGlmIChjb29raWVMaW5lLmxlbmd0aCgp
ID49IE1BWF9DT09LSUVfTElORSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgQWxnb3JpdGhtIGlzIGJhc2Vk
IG9uIHRoZSBhbGdvcml0aG0gZGVmaW5lZCBpbiBSRkMgNjI2NSA1LjIgaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi01LjIvCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4IDJmNjU1NmVl
MDViMWQ3YzA1NjFkYmI1MjExYjZjYzBlYmNmNGFjMzkuLmZmZTc3MGFkYjhmMmIxY2YwNjAwZWNk
MzEzYjgzZjkwOTQ2NTc4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKIHBy
aXZhdGU6CkBAIC02NzYsNyArNjc2LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBDdXJsSGFuZGxlOjpn
ZXRQcm94eVVybCgpCiB7CiAgICAgYXV0byYgcHJveHkgPSBDdXJsQ29udGV4dDo6c2luZ2xldG9u
KCkucHJveHlTZXR0aW5ncygpOwogICAgIGlmIChwcm94eS5tb2RlKCkgPT0gQ3VybFByb3h5U2V0
dGluZ3M6Ok1vZGU6OkRlZmF1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcHJveHkudXJsKCk7CiB9CkBA
IC02ODQsMTIgKzY4NCwxMiBAQCBPcHRpb25hbDxTdHJpbmc+IEN1cmxIYW5kbGU6OmdldFByb3h5
VXJsKCkKIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgpCiB7CiAg
ICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGxvbmcgcmVzcG9uc2VDb2RlOwogICAgIENVUkxj
b2RlIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19SRVNQ
T05TRV9DT0RFLCAmcmVzcG9uc2VDb2RlKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09L
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHJlc3BvbnNlQ29kZTsKIH0KQEAgLTY5NywxMiArNjk3LDEyIEBA
IE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6OmdldFJlc3BvbnNlQ29kZSgpCiBPcHRpb25hbDxs
b25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwQ29ubmVjdENvZGUoKQogewogICAgIGlmICghbV9oYW5k
bGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBsb25nIGh0dHBDb25uZWN0Q29kZTsKICAgICBDVVJMY29kZSBlcnJvckNv
ZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fSFRUUF9DT05ORUNUQ09E
RSwgJmh0dHBDb25uZWN0Q29kZSk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBodHRwQ29ubmVjdENvZGU7CiB9CkBAIC03MTAsMTMgKzcxMCwxMyBAQCBP
cHRpb25hbDxsb25nPiBDdXJsSGFuZGxlOjpnZXRIdHRwQ29ubmVjdENvZGUoKQogT3B0aW9uYWw8
bG9uZyBsb25nPiBDdXJsSGFuZGxlOjpnZXRDb250ZW50TGVuZ3RoKCkKIHsKICAgICBpZiAoIW1f
aGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgZG91YmxlIGNvbnRlbnRMZW5ndGg7CiAKICAgICBDVVJMY29kZSBl
cnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fQ09OVEVOVF9M
RU5HVEhfRE9XTkxPQUQsICZjb250ZW50TGVuZ3RoKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENV
UkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oY29udGVudExl
bmd0aCk7CiB9CkBAIC03MjQsMTIgKzcyNCwxMiBAQCBPcHRpb25hbDxsb25nIGxvbmc+IEN1cmxI
YW5kbGU6OmdldENvbnRlbnRMZW5ndGgoKQogT3B0aW9uYWw8bG9uZz4gQ3VybEhhbmRsZTo6Z2V0
SHR0cEF1dGhBdmFpbCgpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGxvbmcgaHR0
cEF1dGhBdmFpbGFibGU7CiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGlu
Zm8obV9oYW5kbGUsIENVUkxJTkZPX0hUVFBBVVRIX0FWQUlMLCAmaHR0cEF1dGhBdmFpbGFibGUp
OwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gaHR0cEF1
dGhBdmFpbGFibGU7CiB9CkBAIC03MzcsMTIgKzczNywxMiBAQCBPcHRpb25hbDxsb25nPiBDdXJs
SGFuZGxlOjpnZXRIdHRwQXV0aEF2YWlsKCkKIE9wdGlvbmFsPGxvbmc+IEN1cmxIYW5kbGU6Omdl
dFByb3h5QXV0aEF2YWlsKCkKIHsKICAgICBpZiAoIW1faGFuZGxlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgbG9uZyBw
cm94eUF1dGhBdmFpbGFibGU7CiAgICAgQ1VSTGNvZGUgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dl
dGluZm8obV9oYW5kbGUsIENVUkxJTkZPX1BST1hZQVVUSF9BVkFJTCwgJnByb3h5QXV0aEF2YWls
YWJsZSk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBw
cm94eUF1dGhBdmFpbGFibGU7CiB9CkBAIC03NTAsMTIgKzc1MCwxMiBAQCBPcHRpb25hbDxsb25n
PiBDdXJsSGFuZGxlOjpnZXRQcm94eUF1dGhBdmFpbCgpCiBPcHRpb25hbDxsb25nPiBDdXJsSGFu
ZGxlOjpnZXRIdHRwVmVyc2lvbigpCiB7CiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGxv
bmcgdmVyc2lvbjsKICAgICBDVVJMY29kZSBlcnJvckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyht
X2hhbmRsZSwgQ1VSTElORk9fSFRUUF9WRVJTSU9OLCAmdmVyc2lvbik7CiAgICAgaWYgKGVycm9y
Q29kZSAhPSBDVVJMRV9PSykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB2ZXJzaW9uOwogfQpAQCAtNzY5LDI3
ICs3NjksMjcgQEAgT3B0aW9uYWw8TmV0d29ya0xvYWRNZXRyaWNzPiBDdXJsSGFuZGxlOjpnZXRO
ZXR3b3JrTG9hZE1ldHJpY3MoY29uc3QgV1RGOjpTZWNvbmQKICAgICBsb25nIHZlcnNpb24gPSAw
OwogCiAgICAgaWYgKCFtX2hhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENVUkxjb2RlIGVycm9yQ29kZSA9IGN1
cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19OQU1FTE9PS1VQX1RJTUUsICZuYW1l
TG9va3VwKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX09LKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXJyb3JD
b2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUsIENVUkxJTkZPX0NPTk5FQ1RfVElNRSwg
JmNvbm5lY3QpOwogICAgIGlmIChlcnJvckNvZGUgIT0gQ1VSTEVfT0spCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBlcnJv
ckNvZGUgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhtX2hhbmRsZSwgQ1VSTElORk9fQVBQQ09OTkVDVF9U
SU1FLCAmYXBwQ29ubmVjdCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGVycm9yQ29kZSA9IGN1cmxfZWFzeV9nZXRpbmZvKG1faGFuZGxlLCBDVVJMSU5GT19TVEFS
VFRSQU5TRkVSX1RJTUUsICZzdGFydFRyYW5zZmVyKTsKICAgICBpZiAoZXJyb3JDb2RlICE9IENV
UkxFX09LKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgZXJyb3JDb2RlID0gY3VybF9lYXN5X2dldGluZm8obV9oYW5kbGUs
IENVUkxJTkZPX0hUVFBfVkVSU0lPTiwgJnZlcnNpb24pOwogICAgIGlmIChlcnJvckNvZGUgIT0g
Q1VSTEVfT0spCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNz
OwogCkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBDdXJsSGFuZGxlOjphZGRFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcyhOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmkKIE9wdGlvbmFs
PENlcnRpZmljYXRlSW5mbz4gQ3VybEhhbmRsZTo6Y2VydGlmaWNhdGVJbmZvKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fc3NsVmVyaWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbV9zc2xWZXJpZmllci0+
Y2VydGlmaWNhdGVJbmZvKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybEZvcm1EYXRhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCmluZGV4IGNmZGJmMGEx
MWY0NTAzMmRlZTdhZWJjZWY0NGRiNTIwNTgyMjRiOWMuLjc5ZGRjMzk5MjhhODM5Y2NhNzU2ZDgy
MGM0YmUxY2U0YWRlZTNkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRm9ybURhdGFTdHJlYW0uY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgdm9pZCBDdXJsRm9ybURhdGFTdHJlYW06OmNvbXB1dGVDb250ZW50TGVuZ3RoKCkKIE9w
dGlvbmFsPHNpemVfdD4gQ3VybEZvcm1EYXRhU3RyZWFtOjpyZWFkKGNoYXIqIGJ1ZmZlciwgc2l6
ZV90IHNpemUpCiB7CiAgICAgaWYgKCFtX2Zvcm1EYXRhKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgYXV0byB0
b3RhbEVsZW1lbnRTaXplID0gbV9mb3JtRGF0YS0+ZWxlbWVudHMoKS5zaXplKCk7CiAgICAgaWYg
KG1fZWxlbWVudFBvc2l0aW9uID49IHRvdGFsRWxlbWVudFNpemUpCkBAIC0xMzAsMTIgKzEzMCwx
MiBAQCBPcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZChjaGFyKiBidWZm
ZXIsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgICAgIHJldHVybiByZWFkRnJvbUZpbGUoZmls
ZURhdGEsIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJTaXplKTsKICAgICAgICAgICAgIH0sIFtdIChj
b25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYpIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9
CiAgICAgICAgICk7CiAKICAgICAgICAgaWYgKCFyZWFkQnl0ZXMpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICB0b3RhbFJlYWRCeXRlcyArPSAqcmVhZEJ5dGVzOwogICAgIH0KQEAgLTE1Myw3ICsxNTMs
NyBAQCBPcHRpb25hbDxzaXplX3Q+IEN1cmxGb3JtRGF0YVN0cmVhbTo6cmVhZEZyb21GaWxlKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZAogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChtX2ZpbGVIYW5kbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ3VybCAtIEZh
aWxlZCB3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyBmb3IgdXBsb2FkXG4iLCBmaWxlRGF0YS5maWxl
bmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9maWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBhdXRvIHJlYWRCeXRl
cyA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5kbGUsIGJ1ZmZlciwgc2l6ZSk7
CkBAIC0xNjEsNyArMTYxLDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDdXJsRm9ybURhdGFTdHJlYW06
OnJlYWRGcm9tRmlsZShjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWQKICAgICAgICAgTE9H
KE5ldHdvcmssICJDdXJsIC0gRmFpbGVkIHdoaWxlIHRyeWluZyB0byByZWFkICVzIGZvciB1cGxv
YWRcbiIsIGZpbGVEYXRhLmZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgbV9maWxlSGFuZGxlID0gRmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAo
IXJlYWRCeXRlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCmluZGV4IGNjZGJiMjgyMzlmMjJj
MzYzNmNhYzE0YjA3ODVkNmY1NWFiMmY1YmMuLjcwMjRlYzdjMWViODJiNWNiMjNkYTU4MGIyZTM2
YmFiMTBkZWQzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAg
T3B0aW9uYWw8U3RyaW5nPiBDdXJsTXVsdGlwYXJ0SGFuZGxlOjpleHRyYWN0Qm91bmRhcnkoY29u
c3QgQ3VybFJlc3BvbnNlJiByZXNwb24KICAgICAgICAgcmV0dXJuIFN0cmluZygiLS0iICsgKmJv
dW5kYXJ5KTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
CkBAIC04MSw3ICs4MSw3IEBAIE9wdGlvbmFsPFN0cmluZz4gQ3VybE11bHRpcGFydEhhbmRsZTo6
ZXh0cmFjdEJvdW5kYXJ5RnJvbUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluCiAKICAgICBhdXRvIGJv
dW5kYXJ5U3RhcnQgPSBjb250ZW50VHlwZS5maW5kSWdub3JpbmdBU0NJSUNhc2UoImJvdW5kYXJ5
PSIpOwogICAgIGlmIChib3VuZGFyeVN0YXJ0ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm91bmRh
cnlTdGFydCArPSBsZW5ndGg7CiAgICAgc2l6ZV90IGJvdW5kYXJ5RW5kID0gMDsKQEAgLTkxLDEz
ICs5MSwxMyBAQCBPcHRpb25hbDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RC
b3VuZGFyeUZyb21Db250ZW50VHlwZShjb25zdCBTdHJpbgogICAgICAgICArK2JvdW5kYXJ5U3Rh
cnQ7CiAgICAgICAgIGJvdW5kYXJ5RW5kID0gY29udGVudFR5cGUuZmluZCgnIicsIGJvdW5kYXJ5
U3RhcnQpOwogICAgICAgICBpZiAoYm91bmRhcnlFbmQgPT0gbm90Rm91bmQpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICB9IGVsc2UgaWYgKGNvbnRlbnRUeXBlW2JvdW5kYXJ5U3RhcnRdID09ICdcJycpIHsKICAg
ICAgICAgLy8gQm91bmRhcnkgdmFsdWUgc3RhcnRzIHdpdGggYSAnIHF1b3RlLiBTZWFyY2ggZm9y
IHRoZSBjbG9zaW5nIG9uZS4KICAgICAgICAgKytib3VuZGFyeVN0YXJ0OwogICAgICAgICBib3Vu
ZGFyeUVuZCA9IGNvbnRlbnRUeXBlLmZpbmQoJ1wnJywgYm91bmRhcnlTdGFydCk7CiAgICAgICAg
IGlmIChib3VuZGFyeUVuZCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIENoZWNrIGZvciB0aGUgZW5kIG9mIHRoZSBib3VuZGFyeS4gVGhhdCBjYW4gYmUg
YSBzZW1pY29sb24gb3IgYSBuZXdsaW5lLgogICAgICAgICBib3VuZGFyeUVuZCA9IGNvbnRlbnRU
eXBlLmZpbmQoJzsnLCBib3VuZGFyeVN0YXJ0KTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBPcHRpb25h
bDxTdHJpbmc+IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmV4dHJhY3RCb3VuZGFyeUZyb21Db250ZW50
VHlwZShjb25zdCBTdHJpbgogCiAgICAgLy8gVGhlIGJvdW5kYXJ5IGVuZCBzaG91bGQgbm90IGJl
IGJlZm9yZSB0aGUgc3RhcnQKICAgICBpZiAoYm91bmRhcnlFbmQgPD0gYm91bmRhcnlTdGFydCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiBjb250ZW50VHlwZS5zdWJzdHJpbmcoYm91bmRhcnlTdGFydCwgYm91
bmRhcnlFbmQgLSBib3VuZGFyeVN0YXJ0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFByb3h5U2V0dGluZ3MuY3BwCmluZGV4IDE4
MzdkYjQ0Nzk3NTM2NDgwOTMxMzk1OWM5OWEzMWQ2OWYyNmY5YWQuLmRlMDkyN2ZlMWEzYTZkYTMx
NzgwYzU4NDk1M2EwYTk2MGQ0ZTFjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUHJveHlTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxQcm94eVNldHRpbmdzLmNwcApAQCAtMTAzLDIw
ICsxMDMsMjAgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQxNl90PiBnZXRQcm94eVBvcnQoY29uc3Qg
VVJMJiB1cmwpCiAgICAgaWYgKHByb3RvY29sSXNJblNvY2tzRmFtaWx5KHVybCkpCiAgICAgICAg
IHJldHVybiBTb2Nrc1Byb3h5UG9ydDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gY3JlYXRl
UHJveHlVcmwoY29uc3QgVVJMICZ1cmwpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkgfHwgdXJs
Lmhvc3QoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgJiYgIXByb3RvY29sSXNJblNvY2tzRmFtaWx5KHVybCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHBv
cnQgPSBnZXRQcm94eVBvcnQodXJsKTsKICAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHVz
ZXJwYXNzID0gdXJsLmhhc0NyZWRlbnRpYWxzKCkgPyBtYWtlU3RyaW5nKHVybC51c2VyKCksICI6
IiwgdXJsLnBhc3N3b3JkKCksICJAIikgOiBTdHJpbmcoKTsKICAgICByZXR1cm4gbWFrZVN0cmlu
Zyh1cmwucHJvdG9jb2woKSwgIjovLyIsIHVzZXJwYXNzLCB1cmwuaG9zdCgpLCAiOiIsICpwb3J0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U1NMSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U1NMSGFuZGxlLmNwcAppbmRleCBhZTg2ZDJiMTJkYjJlZGU1NDUyZDhiMmJhNWFiMjI3Y2JmZDkw
NTMyLi42OWVjMjYyZGNiMmJlODI2YTg4YjgwMDk3ZmQwOTdmNDRkYTM2NGM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIE9wdGlvbmFsPEN1cmxTU0xIYW5kbGU6OkNsaWVudENlcnRp
ZmljYXRlPiBDdXJsU1NMSGFuZGxlOjpnZXRTU0xDbGllbnRDZXJ0aWZpY2F0CiAKICAgICBhdXRv
IGl0ID0gbV9hbGxvd2VkQ2xpZW50SG9zdHMuZmluZChob3N0TmFtZSk7CiAgICAgaWYgKGl0ID09
IG1fYWxsb3dlZENsaWVudEhvc3RzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGl0LT52YWx1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCA3MDc3NDg0Mzg5M2Iz
MDYzNzEyMjhmZDY5MmZiNTQ0YTg2OGUyN2I2Li5iMjRlOWI2ZWQ5ZDQ1MDNjYzQwNTgyMDA0NTll
NzkxZDAxNzg3ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC01
NywxMCArNTcsMTAgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGNvb2tpZXM7CiAKLSAgICBhdXRvIHNlYXJjaEhUVFBPbmx5ID0gZm9ySFRUUEhlYWRlciA/
IFdURjo6bnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+IHsgZmFsc2UgfTsKLSAgICBhdXRvIHNlY3Vy
ZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpID8gV1RGOjpudWxsb3B0IDogT3B0aW9uYWw8Ym9v
bD4geyBmYWxzZSB9OworICAgIGF1dG8gc2VhcmNoSFRUUE9ubHkgPSBmb3JIVFRQSGVhZGVyID8g
c3RkOjpudWxsb3B0IDogT3B0aW9uYWw8Ym9vbD4geyBmYWxzZSB9OworICAgIGF1dG8gc2VjdXJl
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIikgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxib29s
PiB7IGZhbHNlIH07CiAKLSAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5LCBzZWN1
cmUsIFdURjo6bnVsbG9wdCkpIHsKKyAgICBpZiAoYXV0byByZXN1bHQgPSBzZXNzaW9uLmNvb2tp
ZURhdGFiYXNlKCkuc2VhcmNoQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIHNlYXJjaEhUVFBPbmx5
LCBzZWN1cmUsIHN0ZDo6bnVsbG9wdCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb29r
aWUgOiAqcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIWNvb2tpZXMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNvb2tpZXMuYXBwZW5kKCI7ICIpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTCiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRp
bWUgPSBjbGllbnRTaWRlQ29va2llQ2FwKFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eSB9
LCBwYWdlSUQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLSAgICBPcHRpb25h
bDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxT
ZWNvbmRzPiBjYXBwZWRMaWZldGltZSA9IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogICAgIGNvb2tp
ZURhdGFiYXNlKCkuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCwgY2FwcGVkTGlmZXRpbWUpOwogfQpAQCAtMjA2LDcgKzIwNiw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9j
a2luZywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgYXV0byBjb29r
aWVzID0gY29va2llRGF0YWJhc2UoKS5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBjb29raWVz
ID0gY29va2llRGF0YWJhc2UoKS5zZWFyY2hDb29raWVzKGZpcnN0UGFydHksIHVybCwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFjb29raWVzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCAyMWYwOGE5ZGIzYWRlODBl
YTViOWM4ZWFiZmNhNjIwNzM2YTI0MTBjLi44MTY0MjdiMGViNmUyODEwOWVhMjM3YjEyYWJkMzdi
NjM3MzVlYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAg
ICAgICB1aW50OF90KiBkYXRhIHsgbnVsbHB0ciB9OwogICAgICAgICBhdXRvIGxlbmd0aCA9IDo6
QklPX2dldF9tZW1fZGF0YShtX2JpbywgJmRhdGEpOwogICAgICAgICBpZiAobGVuZ3RoIDwgMCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBWZWN0b3IgeyBkYXRhLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxlbmd0aCkgfTsKICAgICB9CkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPiBwZW1EYXRhRnJvbUN0eChY
NTA5X1NUT1JFX0MKIE9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz4gY3JlYXRlQ2Vy
dGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYKiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFg1MDlfU1RPUkVfQ1RYX2dldF9l
cnJvcihjdHgpLCBwZW1EYXRhRnJvbUN0eChjdHgpKTsKIH0KQEAgLTIxOCwyMSArMjE4LDIxIEBA
IHN0YXRpYyBTdHJpbmcgZ2V0U3ViamVjdE5hbWUoY29uc3QgWDUwOSogeDUwOSkKIHN0YXRpYyBP
cHRpb25hbDxTZWNvbmRzPiBjb252ZXJ0QVNOMVRpbWVUb1NlY29uZHMoY29uc3QgQVNOMV9USU1F
KiBhbnMxVGltZSkKIHsKICAgICBpZiAoIWFuczFUaW1lKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKChhbnMxVGlt
ZS0+dHlwZSAhPSBWX0FTTjFfVVRDVElNRSAmJiBhbnMxVGltZS0+dHlwZSAhPSBWX0FTTjFfR0VO
RVJBTElaRURUSU1FKSB8fCAhYW5zMVRpbWUtPmRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBVVENUSU1FICAg
ICAgICAgOiBZWW1tZGRISE1NW1NTXQogICAgIC8vIEdFTkVSQUxJWkVEVElNRSA6IFlZWVltbWRk
SEhNTVtTU10KICAgICBpbnQgZGlnaXRMZW5ndGggPSBhbnMxVGltZS0+dHlwZSA9PSBWX0FTTjFf
VVRDVElNRSA/IDEwIDogMTI7CiAgICAgaWYgKGFuczFUaW1lLT5sZW5ndGggPCBkaWdpdExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gZGF0YSA9IGFuczFUaW1lLT5kYXRhOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZGlnaXRMZW5ndGg7IGkrKykgewogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChk
YXRhW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIHN0cnVjdCB0bSB0aW1lIHsgfTsKQEAg
LTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8U2Vjb25kcz4gY29udmVydEFTTjFUaW1l
VG9TZWNvbmRzKGNvbnN0IEFTTjFfVElNRSogYW5zMVRpbWUpCiAKICAgICB0aW1lLnRtX21vbiA9
IChkYXRhWzBdIC0gJzAnKSAqIDEwICsgKGRhdGFbMV0gLSAnMCcpIC0gMTsKICAgICBpZiAodGlt
ZS50bV9tb24gPCAwIHx8IHRpbWUudG1fbW9uID4gMTEpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgdGltZS50bV9tZGF5ID0g
KGRhdGFbMl0gLSAnMCcpICogMTAgKyAoZGF0YVszXSAtICcwJyk7CiAgICAgdGltZS50bV9ob3Vy
ID0gKGRhdGFbNF0gLSAnMCcpICogMTAgKyAoZGF0YVs1XSAtICcwJyk7CiAgICAgdGltZS50bV9t
aW4gPSAoZGF0YVs2XSAtICcwJykgKiAxMCArIChkYXRhWzddIC0gJzAnKTsKQEAgLTMwMiw3ICsz
MDIsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnk+IGNyZWF0ZVN1bW1h
cnlJbmZvKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcAogICAgIEJJTyBiaW8geyBwZW0gfTsKICAg
ICBhdXRvIHg1MDkgPSBiaW8ucmVhZFg1MDkoKTsKICAgICBpZiAoIXg1MDkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBX
ZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnkgc3VtbWFyeUluZm87CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKaW5kZXggZDRiZDljZTgwN2U5YzdmMTcwYzI4OTdkY2JmYTcwM2UwM2M5OWMwOC4uYjcx
NTg2MzcyYWI2NmI4ZjFhYWY1ODM0MDE1ZjlkNzQ4ZmE4ZWVmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZWY8Q3VybFJlcXVlc3Q+IFJlc291cmNlSGFuZGxl
OjpjcmVhdGVDdXJsUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZQogICAgICAg
ICBhZGRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKHJlcXVlc3QpOwogCiAgICAgICAgIGF1dG8gaW5j
bHVkZVNlY3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJ
bmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotICAg
ICAgICBTdHJpbmcgY29va2llSGVhZGVyRmllbGQgPSBkLT5tX2NvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCks
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQOjpZZXMsIFNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObykuZmly
c3Q7CisgICAgICAgIFN0cmluZyBjb29raWVIZWFkZXJGaWVsZCA9IGQtPm1fY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVz
dC51cmwoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6OlllcywgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmc6
Ok5vKS5maXJzdDsKICAgICAgICAgaWYgKCFjb29raWVIZWFkZXJGaWVsZC5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29v
a2llLCBjb29raWVIZWFkZXJGaWVsZCk7CiAgICAgfQpAQCAtMzQ5LDcgKzM0OSw3IEBAIE9wdGlv
bmFsPENyZWRlbnRpYWw+IFJlc291cmNlSGFuZGxlOjpnZXRDcmVkZW50aWFsKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgaWYgKCFkLT5tX2luaXRpYWxDcmVkZW50aWFsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGQtPm1faW5pdGlhbENyZWRlbnRpYWw7CiAKLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OnJlc3RhcnRSZXF1ZXN0V2l0aENyZWRlbnRpYWwoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCBjYWU4YzQzZDYwZmNmNmEz
ZDY5YzU4YTc0MzY1MTZmOTIzZDIyN2NiLi44YmViM2I1M2I5ZGJlNGE2NDdjYmIzMTczMWQxNmE5
NTMwZmZkMzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6flNvY2tldFN0cmVhbUhhbmRsZUlt
cGwoKQogT3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNl
bmRJbnRlcm5hbChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogewogICAgIGlm
IChpc1N0cmVhbUludmFsaWRhdGVkKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobV90b3RhbFNlbmREYXRhU2l6
ZSArIGxlbmd0aCA+IG1heEJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcAppbmRleCA0YjgyOWM2M2M4MDQ1YjQ2YjU0MTg5
Njg0YmQ4MzM5YTE2YTBhOGYyLi5hMGNmZWQwZDk4MGJmYWZhZGQ4NzcwNTY5NDU2MDZkN2E5N2Vj
NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZUZyb21Tb3VwQXV0
aEFuZFVSTChTb3VwQXV0aCogc291cEF1dGgsIGNvbgogICAgIGF1dG8gcG9ydCA9IGF1dGhVUkwu
cG9ydCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKGhvc3QudG9TdHJp
bmcoKSwgc3RhdGljX2Nhc3Q8aW50Pihwb3J0LnZhbHVlT3IoMCkpLAorICAgIHJldHVybiBQcm90
ZWN0aW9uU3BhY2UoaG9zdC50b1N0cmluZygpLCBzdGF0aWNfY2FzdDxpbnQ+KHBvcnQudmFsdWVf
b3IoMCkpLAogICAgICAgICBwcm90ZWN0aW9uU3BhY2VTZXJ2ZXJUeXBlRnJvbVVSTCh1cmwsIHNv
dXBfYXV0aF9pc19mb3JfcHJveHkoc291cEF1dGgpKSwKICAgICAgICAgU3RyaW5nOjpmcm9tVVRG
OChzb3VwX2F1dGhfZ2V0X3JlYWxtKHNvdXBBdXRoKSksIHNjaGVtZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgK
aW5kZXggYzQ0YjBhYzNhMjc0ZTZiMjJjOGUxNWU2NGYwYTI5ZTc0NTBhYjJiMy4uY2IyNjA4NDY2
NmI3MmU5YzhhZWY3ZTQwMjZkZGRmZTdlYjViYjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm8uaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICBPcHRpb25hbDxDZXJ0aWZpY2F0ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7IG5vdEltcGxl
bWVudGVkKCk7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRpb25hbDxDZXJ0aWZpY2F0
ZVN1bW1hcnk+IHN1bW1hcnkoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6
Om51bGxvcHQ7IH0KIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2NlcnRp
ZmljYXRlOyB9CiAKQEAgLTgzLDEyICs4MywxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxH
UmVmUHRyPEdCeXRlQXJyYXk+PiB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBzaXplOwog
ICAgICAgICBkZWNvZGVyID4+IHNpemU7CiAgICAgICAgIGlmICghc2l6ZSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gYnl0ZUFycmF5ID0gYWRvcHRHUmVmKGdfYnl0
ZV9hcnJheV9zaXplZF9uZXcoKnNpemUpKTsKICAgICAgICAgZ19ieXRlX2FycmF5X3NldF9zaXpl
KGJ5dGVBcnJheS5nZXQoKSwgKnNpemUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKGJ5dGVBcnJheS0+ZGF0YSwgKnNpemUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJldHVybiBieXRlQXJyYXk7CiAgICAgfQogfTsKQEAgLTE0OSw3ICsxNDksNyBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+IHsKICAgICAgICAgT3B0
aW9uYWw8VmVjdG9yPEdSZWZQdHI8R0J5dGVBcnJheT4+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsK
ICAgICAgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZXNEYXRhTGlzdDsKICAgICAgICAgaWYgKCFj
ZXJ0aWZpY2F0ZXNEYXRhTGlzdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIGlmIChjZXJ0aWZpY2F0ZXNEYXRh
TGlzdC0+aXNFbXB0eSgpKQpAQCAtMTU3LDEzICsxNTcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPiB7CiAKICAgICAgICAgYXV0byBjZXJ0aWZp
Y2F0ZSA9IGNlcnRpZmljYXRlRnJvbUNlcnRpZmljYXRlc0RhdGFMaXN0KGNlcnRpZmljYXRlc0Rh
dGFMaXN0LnZhbHVlKCkpOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGNlcnRpZmljYXRlSW5mby5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSk7
CiAKICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IHRsc0Vycm9yczsKICAgICAgICAgZGVjb2Rl
ciA+PiB0bHNFcnJvcnM7CiAgICAgICAgIGlmICghdGxzRXJyb3JzKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGNlcnRpZmljYXRlSW5mby5zZXRUTFNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmlj
YXRlRmxhZ3M+KCp0bHNFcnJvcnMpKTsKIAogICAgICAgICByZXR1cm4gY2VydGlmaWNhdGVJbmZv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNv
dXAuY3BwCmluZGV4IDFmM2NkMjY3MzE3OWUxYWUwZDhkODIyNzdmYTAxOWQ5MTllMTVmNGQuLjli
YjljNzEyNGQ0MGUyYjAzMjQ0MDFjODlmZjU4N2FkNTU2ZTcyMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU291cC5jcHAKQEAgLTcwLDkg
KzcwLDkgQEAgQ29va2llOjpDb29raWUoU291cENvb2tpZSogY29va2llKQogICAgICwgZG9tYWlu
KFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUpKSkKICAgICAs
IHBhdGgoU3RyaW5nOjpmcm9tVVRGOChzb3VwX2Nvb2tpZV9nZXRfcGF0aChjb29raWUpKSkKICNp
ZiBVU0UoU09VUDIpCi0gICAgLCBleHBpcmVzKHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tp
ZSkgPyBtYWtlT3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihzb3VwX2RhdGVfdG9fdGltZV90
KHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tpZSkpKSAqIDEwMDApIDogV1RGOjpudWxsb3B0
KQorICAgICwgZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpID8gc3RkOjpt
YWtlX29wdGlvbmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oc291cF9kYXRlX3RvX3RpbWVfdChzb3Vw
X2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IHN0ZDo6bnVsbG9wdCkKICNl
bHNlCi0gICAgLCBleHBpcmVzKHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tpZSkgPyBtYWtl
T3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihnX2RhdGVfdGltZV90b191bml4KHNvdXBfY29v
a2llX2dldF9leHBpcmVzKGNvb2tpZSkpKSAqIDEwMDApIDogV1RGOjpudWxsb3B0KQorICAgICwg
ZXhwaXJlcyhzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpID8gc3RkOjptYWtlX29wdGlv
bmFsKHN0YXRpY19jYXN0PGRvdWJsZT4oZ19kYXRlX3RpbWVfdG9fdW5peChzb3VwX2Nvb2tpZV9n
ZXRfZXhwaXJlcyhjb29raWUpKSkgKiAxMDAwKSA6IHN0ZDo6bnVsbG9wdCkKICNlbmRpZgogICAg
ICwgaHR0cE9ubHkoc291cF9jb29raWVfZ2V0X2h0dHBfb25seShjb29raWUpKQogICAgICwgc2Vj
dXJlKHNvdXBfY29va2llX2dldF9zZWN1cmUoY29va2llKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAK
aW5kZXggNTBhNWY4MGRiOWNkYmQxYWYxNmVmNjQ2ZWIyYWUyYWU2NTE4YjI2Yi4uZTcyOTIxYzM2
NjdlMDUwZTJkZWJiNDRhMTc3MDRiOGQ3OTg2MDI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAK
QEAgLTMyMywxMSArMzIzLDExIEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRJZ25vcmVU
TFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJvcnMpCiBPcHRpb25hbDxSZXNvdXJjZUVycm9yPiBT
b3VwTmV0d29ya1Nlc3Npb246OmNoZWNrVExTRXJyb3JzKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJy
b3JzKQogewogICAgIGlmIChtX2lnbm9yZVRMU0Vycm9ycyB8fCAhdGxzRXJyb3JzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgYXV0byBpdCA9IGFsbG93ZWRDZXJ0aWZpY2F0ZXMoKS5maW5kKHJlcXVlc3RVUkwuaG9zdCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CiAgICAgaWYgKGl0ICE9IGFsbG93ZWRDZXJ0aWZp
Y2F0ZXMoKS5lbmQoKSAmJiBpdC0+dmFsdWUuY29udGFpbnMoY2VydGlmaWNhdGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKHJlcXVlc3RVUkwsIHRsc0Vycm9ycywg
Y2VydGlmaWNhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9FbmNvZGluZ1RhYmxlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29k
aW5nVGFibGVzLmNwcAppbmRleCA1YzA4M2YxMTYzNzFhODQ3MTFjY2FmMTI3MmE0YjNkNzE4MzI5
NjBjLi42NTVkZjU2MjJlMWMzMDUyZGM1MWNlOGQxYmM3NTk1YjdhNDQ0ZmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmNwcApAQCAtNzA4Miw3
ICs3MDgyLDcgQEAgY29uc3Qgc3RkOjphcnJheTxzdGQ6OnBhaXI8dWludDE2X3QsIFVDaGFyPiwg
MTcwNDg+JiBldWNLUigpCiAgICAgICAgICAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VS
Uk9SOwogICAgICAgICAgICAgdWNudl90b1VuaWNvZGUoaWN1Q29udmVydGVyLmdldCgpLCAmb3V0
cHV0LCBvdXRwdXQgKyAyLCAmaW5wdXQsIGlucHV0ICsgc2l6ZW9mKGljdUlucHV0KSwgbnVsbHB0
ciwgdHJ1ZSwgJmVycm9yKTsKICAgICAgICAgICAgIGlmIChpY3VPdXRwdXRbMF0gPT0gMHhGRkZE
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB7eyBwb2ludGVyLCBpY3VP
dXRwdXRbMF0gfX07CiAgICAgICAgIH07CiAgICAgICAgIHNpemVfdCBhcnJheUluZGV4ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRW5jb2RpbmdUYWJsZXMuaAppbmRleCAz
ZjdkMGIwMmUwNzEyY2MxMWZlY2M2ZDRlYjFmNTgxMGQzYzE5MDQ0Li5lNWJkNTIyZjhhNjhkY2Vm
OGViZGY0ODk2ZTliMTI2NzA3NmIxZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0VuY29kaW5nVGFibGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9FbmNvZGluZ1RhYmxlcy5oCkBAIC0xMTYsMTEgKzExNiwxMSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xsZWN0aW9uVHlwZSwgdHlwZW5hbWUgS2V5VHlwZT4gc3RhdGljIGF1dG8gZmluZEZp
cnN0SW5Tb3J0ZQogewogICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19pbnRlZ3JhbF92PEtleVR5
cGU+KSB7CiAgICAgICAgIGlmIChrZXkgIT0gZGVjbHR5cGUoc3RkOjpiZWdpbihjb2xsZWN0aW9u
KS0+Zmlyc3QpKGtleSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgYXV0byBpdGVyYXRvciA9IHN0
ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihjb2xsZWN0aW9uKSwgc3RkOjplbmQoY29sbGVjdGlv
biksIG1ha2VGaXJzdEFkYXB0ZXIoa2V5KSwgQ29tcGFyZUZpcnN0IHsgfSk7CiAgICAgaWYgKGl0
ZXJhdG9yID09IHN0ZDo6ZW5kKGNvbGxlY3Rpb24pIHx8IGtleSA8IGl0ZXJhdG9yLT5maXJzdCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4gaXRlcmF0b3ItPnNlY29uZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNDSksuY3BwCmluZGV4IGZjMmE5MjExMDAyMGQ1OWU0M2E4
MzBhZTM0NTQxMDJiNzc5NzI0NTYuLjIxMTdlMWE0YjkwNTIzMzFjZGNkNjQxMjI0ZTc2MzUwYjJl
OWVkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVj
Q0pLLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0NKSy5j
cHAKQEAgLTE4Myw3ICsxODMsNyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjpkZWNvZGVDb21tb24o
Y29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1cwogICAgIFN0cmlu
Z0J1aWxkZXIgcmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAot
ICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3By
ZXBlbmRlZEJ5dGUsIFdURjo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olllcykgewor
ICAgIGlmIChtX3ByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3By
ZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6Olllcykgewog
ICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1l
bnRDaGFyYWN0ZXIpOwogICAgICAgICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTIwMCw3ICsyMDAs
NyBAQCBTdHJpbmcgVGV4dENvZGVjQ0pLOjpkZWNvZGVDb21tb24oY29uc3QgdWludDhfdCogYnl0
ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1cwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQudG9TdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAobV9w
cmVwZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRl
LCBXVEY6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsKKyAgICAgICAgaWYg
KG1fcHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVk
Qnl0ZSwgc3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CiAgICAgICAg
ICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlcGxhY2Vt
ZW50Q2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDI3LDcg
KzQyNyw3IEBAIFN0cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50
OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgaWYgKG1fcHJl
cGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVkQnl0ZSwg
V1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CisgICAgaWYgKG1fcHJl
cGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1fcHJlcGVuZGVkQnl0ZSwg
c3RkOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzKSB7CiAgICAgICAgIHNhd0Vy
cm9yID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7
CiAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDM1LDcgKzQzNSw3IEBAIFN0cmluZyBU
ZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90
IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgaWYgKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSAm
JiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0
ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzICYmIHN0b3BPbkVycm9y
KSB7CisgICAgaWYgKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2Vy
KCpzdGQ6OmV4Y2hhbmdlKG1faXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSwgc3RkOjpudWxs
b3B0KSwgcmVzdWx0KSA9PSBTYXdFcnJvcjo6WWVzICYmIHN0b3BPbkVycm9yKSB7CiAgICAgICAg
IHNhd0Vycm9yID0gdHJ1ZTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJh
Y3Rlcik7CiAgICAgICAgIGlmIChzdG9wT25FcnJvcikgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIFN0
cmluZyBUZXh0Q29kZWNDSks6OmlzbzIwMjJKUERlY29kZShjb25zdCB1aW50OF90KiBieXRlcywg
c2l6ZV90IGxlbmd0aCwgYm9vbCBmCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0
cmluZygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChtX3ByZXBlbmRl
ZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX3ByZXBlbmRlZEJ5dGUsIFdURjo6
bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6OlllcykgeworICAgICAgICBpZiAobV9wcmVw
ZW5kZWRCeXRlICYmIGJ5dGVQYXJzZXIoKnN0ZDo6ZXhjaGFuZ2UobV9wcmVwZW5kZWRCeXRlLCBz
dGQ6Om51bGxvcHQpLCByZXN1bHQpID09IFNhd0Vycm9yOjpZZXMpIHsKICAgICAgICAgICAgIHNh
d0Vycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnRDaGFy
YWN0ZXIpOwogICAgICAgICAgICAgaWYgKHN0b3BPbkVycm9yKSB7CkBAIC00NjAsNyArNDYwLDcg
QEAgU3RyaW5nIFRleHRDb2RlY0NKSzo6aXNvMjAyMkpQRGVjb2RlKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGYKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1faXNv
MjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSAmJiBieXRlUGFyc2VyKCpzdGQ6OmV4Y2hhbmdlKG1f
aXNvMjAyMkpQU2Vjb25kUHJlcGVuZGVkQnl0ZSwgV1RGOjpudWxsb3B0KSwgcmVzdWx0KSA9PSBT
YXdFcnJvcjo6WWVzICYmIHN0b3BPbkVycm9yKSB7CisgICAgICAgIGlmIChtX2lzbzIwMjJKUFNl
Y29uZFByZXBlbmRlZEJ5dGUgJiYgYnl0ZVBhcnNlcigqc3RkOjpleGNoYW5nZShtX2lzbzIwMjJK
UFNlY29uZFByZXBlbmRlZEJ5dGUsIHN0ZDo6bnVsbG9wdCksIHJlc3VsdCkgPT0gU2F3RXJyb3I6
OlllcyAmJiBzdG9wT25FcnJvcikgewogICAgICAgICAgICAgc2F3RXJyb3IgPSB0cnVlOwogICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgICAg
ICBpZiAoc3RvcE9uRXJyb3IpIHsKQEAgLTg1NCw3ICs4NTQsNyBAQCBzdGF0aWMgY29uc3Qgc3Rk
OjphcnJheTxzdGQ6OnBhaXI8dWludDMyX3QsIFVDaGFyMzI+LCAyMDc+JiBnYjE4MDMwUmFuZ2Vz
KCkKIHN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBnYjE4MDMwUmFuZ2VzQ29kZVBvaW50KHVpbnQz
Ml90IHBvaW50ZXIpCiB7CiAgICAgaWYgKChwb2ludGVyID4gMzk0MTkgJiYgcG9pbnRlciA8IDE4
OTAwMCkgfHwgcG9pbnRlciA+IDEyMzc1NzUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKHBvaW50ZXIgPT0gNzQ1NykK
ICAgICAgICAgcmV0dXJuIDB4RTdDNzsKICAgICBhdXRvIHVwcGVyQm91bmQgPSBzdGQ6OnVwcGVy
X2JvdW5kKGdiMTgwMzBSYW5nZXMoKS5iZWdpbigpLCBnYjE4MDMwUmFuZ2VzKCkuZW5kKCksIG1h
a2VGaXJzdEFkYXB0ZXIocG9pbnRlciksIENvbXBhcmVGaXJzdCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVVEYxNi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAppbmRleCAyNzE2MDlhZjM0
MmI2YTgxZjkxZTM5MmFkMmVkYTRjNjBlOTQxNjdiLi5jMWMwZDc1NGM0OGRlMzAxODBkOTc5NDM3
YTk3MGUwNWJjZmU1MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VURjE2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmNwcApAQCAtNzcsNyArNzcsNyBAQCBTdHJpbmcgVGV4dENvZGVjVVRGMTY6
OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwgYm9vbCBmbHVzaCwgYm9v
bAogICAgICAgICBpZiAoc3RkOjpleGNoYW5nZShtX3Nob3VsZFN0cmlwQnl0ZU9yZGVyTWFyaywg
ZmFsc2UpICYmIGNvZGVVbml0ID09IGJ5dGVPcmRlck1hcmspCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGlmIChtX2xlYWRTdXJyb2dhdGUpIHsKLSAgICAgICAgICAgIGF1dG8gbGVhZFN1
cnJvZ2F0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZFN1cnJvZ2F0ZSwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgIGF1dG8gbGVhZFN1cnJvZ2F0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZFN1
cnJvZ2F0ZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmIChVMTZfSVNfVFJBSUwoY29k
ZVVuaXQpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZENoYXJhY3RlcihVMTZfR0VU
X1NVUFBMRU1FTlRBUlkobGVhZFN1cnJvZ2F0ZSwgY29kZVVuaXQpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIFRleHRDb2RlY1VURjE2OjpkZWNv
ZGUoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2gsIGJvb2wKICAg
ICB9OwogCiAgICAgaWYgKG1fbGVhZEJ5dGUgJiYgcCA8IGVuZCkgewotICAgICAgICBhdXRvIGxl
YWRCeXRlID0gKnN0ZDo6ZXhjaGFuZ2UobV9sZWFkQnl0ZSwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgYXV0byBsZWFkQnl0ZSA9ICpzdGQ6OmV4Y2hhbmdlKG1fbGVhZEJ5dGUsIHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIGlmIChtX2xpdHRsZUVuZGlhbikKICAgICAgICAgICAgIHByb2Nlc3NCeXRl
c0xFKGxlYWRCeXRlLCBwWzBdKTsKICAgICAgICAgZWxzZQpAQCAtMTMzLDggKzEzMyw4IEBAIFN0
cmluZyBUZXh0Q29kZWNVVEYxNjo6ZGVjb2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVu
Z3RoLCBib29sIGZsdXNoLCBib29sCiAgICAgaWYgKGZsdXNoKSB7CiAgICAgICAgIG1fc2hvdWxk
U3RyaXBCeXRlT3JkZXJNYXJrID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2xlYWRCeXRlIHx8IG1f
bGVhZFN1cnJvZ2F0ZSkgewotICAgICAgICAgICAgbV9sZWFkQnl0ZSA9IFdURjo6bnVsbG9wdDsK
LSAgICAgICAgICAgIG1fbGVhZFN1cnJvZ2F0ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IG1fbGVhZEJ5dGUgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBtX2xlYWRTdXJyb2dhdGUg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICBzYXdFcnJvciA9IHRydWU7CiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHJlcGxhY2VtZW50Q2hhcmFjdGVyKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKaW5kZXggNjZlYTg2MjcwZWFjNzRmZTVh
MzQ5MmU4OTI0MTQ4ODUzMGZhNWQ5Zi4uODFkMjJmMmQzMDViZDhlY2I0YTA5MDZhMzFlMGFkZjJi
MTcxM2ViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Rmxh
Z3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCkBAIC0z
MTQsNzcgKzMxNCw3NyBAQCBPcHRpb25hbDxGb250VmFyaWFudFNldHRpbmdzPiBGb250VmFyaWFu
dFNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxGb250VmFy
aWFudExpZ2F0dXJlcz4gY29tbW9uTGlnYXR1cmVzOwogICAgIGRlY29kZXIgPj4gY29tbW9uTGln
YXR1cmVzOwogICAgIGlmICghY29tbW9uTGlnYXR1cmVzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9u
dFZhcmlhbnRMaWdhdHVyZXM+IGRpc2NyZXRpb25hcnlMaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+
PiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzOwogICAgIGlmICghZGlzY3JldGlvbmFyeUxpZ2F0dXJl
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBoaXN0b3JpY2FsTGln
YXR1cmVzOwogICAgIGRlY29kZXIgPj4gaGlzdG9yaWNhbExpZ2F0dXJlczsKICAgICBpZiAoIWhp
c3RvcmljYWxMaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJl
cz4gY29udGV4dHVhbEFsdGVybmF0ZXM7CiAgICAgZGVjb2RlciA+PiBjb250ZXh0dWFsQWx0ZXJu
YXRlczsKICAgICBpZiAoIWNvbnRleHR1YWxBbHRlcm5hdGVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Rm9udFZhcmlhbnRQb3NpdGlvbj4gcG9zaXRpb247CiAgICAgZGVjb2RlciA+PiBwb3NpdGlvbjsK
ICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRDYXBzPiBj
YXBzOwogICAgIGRlY29kZXIgPj4gY2FwczsKICAgICBpZiAoIWNhcHMpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDxGb250VmFyaWFudE51bWVyaWNGaWd1cmU+IG51bWVyaWNGaWd1cmU7CiAgICAgZGVjb2Rl
ciA+PiBudW1lcmljRmlndXJlOwogICAgIGlmICghbnVtZXJpY0ZpZ3VyZSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NwYWNpbmc+IG51bWVyaWNTcGFjaW5nOwogICAgIGRl
Y29kZXIgPj4gbnVtZXJpY1NwYWNpbmc7CiAgICAgaWYgKCFudW1lcmljU3BhY2luZykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZyYWN0aW9uPiBudW1lcmljRnJhY3Rpb247
CiAgICAgZGVjb2RlciA+PiBudW1lcmljRnJhY3Rpb247CiAgICAgaWYgKCFudW1lcmljRnJhY3Rp
b24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNPcmRpbmFsPiBudW1lcmlj
T3JkaW5hbDsKICAgICBkZWNvZGVyID4+IG51bWVyaWNPcmRpbmFsOwogICAgIGlmICghbnVtZXJp
Y09yZGluYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudE51bWVyaWNTbGFzaGVkWmVy
bz4gbnVtZXJpY1NsYXNoZWRaZXJvOwogICAgIGRlY29kZXIgPj4gbnVtZXJpY1NsYXNoZWRaZXJv
OwogICAgIGlmICghbnVtZXJpY1NsYXNoZWRaZXJvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZh
cmlhbnRBbHRlcm5hdGVzPiBhbHRlcm5hdGVzOwogICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRlczsK
ICAgICBpZiAoIWFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RB
c2lhblZhcmlhbnQ+IGVhc3RBc2lhblZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiBlYXN0QXNpYW5W
YXJpYW50OwogICAgIGlmICghZWFzdEFzaWFuVmFyaWFudCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZv
bnRWYXJpYW50RWFzdEFzaWFuV2lkdGg+IGVhc3RBc2lhbldpZHRoOwogICAgIGRlY29kZXIgPj4g
ZWFzdEFzaWFuV2lkdGg7CiAgICAgaWYgKCFlYXN0QXNpYW5XaWR0aCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieT4gZWFzdEFzaWFuUnVieTsKICAgICBkZWNvZGVy
ID4+IGVhc3RBc2lhblJ1Ynk7CiAgICAgaWYgKCFlYXN0QXNpYW5SdWJ5KQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHt7CiAgICAgICAgICpjb21tb25MaWdhdHVyZXMsCkBAIC00NDIsMjIgKzQ0MiwyMiBAQCBP
cHRpb25hbDxGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcz4gRm9udFZhcmlhbnRMaWdhdHVyZXNW
YWx1ZXM6OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVz
PiBjb21tb25MaWdhdHVyZXM7CiAgICAgZGVjb2RlciA+PiBjb21tb25MaWdhdHVyZXM7CiAgICAg
aWYgKCFjb21tb25MaWdhdHVyZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudExpZ2F0
dXJlcz4gZGlzY3JldGlvbmFyeUxpZ2F0dXJlczsKICAgICBkZWNvZGVyID4+IGRpc2NyZXRpb25h
cnlMaWdhdHVyZXM7CiAgICAgaWYgKCFkaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFZhcmlhbnRMaWdhdHVyZXM+IGhpc3RvcmljYWxMaWdhdHVyZXM7CiAgICAg
ZGVjb2RlciA+PiBoaXN0b3JpY2FsTGlnYXR1cmVzOwogICAgIGlmICghaGlzdG9yaWNhbExpZ2F0
dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TGlnYXR1cmVzPiBjb250ZXh0dWFs
QWx0ZXJuYXRlczsKICAgICBkZWNvZGVyID4+IGNvbnRleHR1YWxBbHRlcm5hdGVzOwogICAgIGlm
ICghY29udGV4dHVhbEFsdGVybmF0ZXMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmNvbW1vbkxpZ2F0
dXJlcywgKmRpc2NyZXRpb25hcnlMaWdhdHVyZXMsICpoaXN0b3JpY2FsTGlnYXR1cmVzLCAqY29u
dGV4dHVhbEFsdGVybmF0ZXMgfX07CiB9CkBAIC01MDMsMjcgKzUwMywyNyBAQCBPcHRpb25hbDxG
b250VmFyaWFudE51bWVyaWNWYWx1ZXM+IEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlczo6ZGVjb2Rl
KERlY29kZXImIGRlYwogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZT4gZmln
dXJlOwogICAgIGRlY29kZXIgPj4gZmlndXJlOwogICAgIGlmICghZmlndXJlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Rm9udFZhcmlhbnROdW1lcmljU3BhY2luZz4gc3BhY2luZzsKICAgICBkZWNvZGVy
ID4+IHNwYWNpbmc7CiAgICAgaWYgKCFzcGFjaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Rm9udFZh
cmlhbnROdW1lcmljRnJhY3Rpb24+IGZyYWN0aW9uOwogICAgIGRlY29kZXIgPj4gZnJhY3Rpb247
CiAgICAgaWYgKCFmcmFjdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJp
Y09yZGluYWw+IG9yZGluYWw7CiAgICAgZGVjb2RlciA+PiBvcmRpbmFsOwogICAgIGlmICghb3Jk
aW5hbCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvPiBz
bGFzaGVkWmVybzsKICAgICBkZWNvZGVyID4+IHNsYXNoZWRaZXJvOwogICAgIGlmICghc2xhc2hl
ZFplcm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKmZpZ3VyZSwgKnNwYWNpbmcsICpmcmFjdGlvbiwg
Km9yZGluYWwsICpzbGFzaGVkWmVybyB9fTsKIH0KQEAgLTU2MSwxNyArNTYxLDE3IEBAIE9wdGlv
bmFsPEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzPiBGb250VmFyaWFudEVhc3RBc2lhblZhbHVl
czo6ZGVjb2RlKERlY29kZXImCiAgICAgT3B0aW9uYWw8Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJp
YW50PiB2YXJpYW50OwogICAgIGRlY29kZXIgPj4gdmFyaWFudDsKICAgICBpZiAoIXZhcmlhbnQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxGb250VmFyaWFudEVhc3RBc2lhbldpZHRoPiB3aWR0aDsKICAg
ICBkZWNvZGVyID4+IHdpZHRoOwogICAgIGlmICghd2lkdGgpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxG
b250VmFyaWFudEVhc3RBc2lhblJ1Ynk+IHJ1Ynk7CiAgICAgZGVjb2RlciA+PiBydWJ5OwogICAg
IGlmICghcnVieSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyAqdmFyaWFudCwgKndpZHRoLCAqcnVieSB9
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCBjYzgwMDNmNWUxNTMyMDVhYzA3NWFkMDY5NTQyMTU5NTAxOTlkZWJjLi45Y2RhMzQ5MmI2
OTY1NjgyOGQ2MWU1NjM4NGVjMTY1YjZkMTllYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgT3B0aW9uYWw8
UGFzdGVib2FyZEN1c3RvbURhdGE+IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSgpCiAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIFZlY3RvcjxTdHJpbmc+
IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDBmNzc2YzQyODZkYWZk
ZmRkNjlmZjAyYTI1ZGViNzVmZWFhM2IxODMuLjJmYzIxMTE1N2RhM2UxYmZlMGRmMWE1ZmIwYzYy
OWJjYTgwODM3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRm
b3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAg
LTI5OCwxMyArMjk4LDEzIEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRl
cm5pb24+IERldmljZTo6RnJhbWVEYXRhOjpGbG9hdFF1YXRlcm5pb246CiB7CiAgICAgRGV2aWNl
OjpGcmFtZURhdGE6OkZsb2F0UXVhdGVybmlvbiBmbG9hdFF1YXRlcm5pb247CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5pb24ueCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmbG9hdFF1YXRlcm5pb24ueSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9h
dFF1YXRlcm5pb24ueikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmbG9hdFF1YXRlcm5p
b24udykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmV0dXJuIGZsb2F0UXVhdGVybmlvbjsKIH0KIApAQCAtMzE5LDkgKzMx
OSw5IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpQb3NlPiBEZXZpY2U6OkZyYW1lRGF0
YTo6UG9zZTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6
OlBvc2UgcG9zZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBvc2UucG9zaXRpb24pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocG9zZS5vcmllbnRhdGlvbikpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJu
IHBvc2U7CiB9CiAKQEAgLTMzNiwxMyArMzM2LDEzIEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVE
YXRhOjpGb3Y+IERldmljZTo6RnJhbWVEYXRhOjpGb3Y6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
CiB7CiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OkZvdiBmb3Y7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShmb3YudXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LmRvd24pKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm92LmxlZnQpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZm92LnJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gZm92OwogfQogCkBAIC0zNzQsMzAgKzM3
NCwzMCBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6Vmlldz4gRGV2aWNlOjpGcmFtZURh
dGE6OlZpZXc6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewogICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpWaWV3IHZpZXc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2aWV3Lm9m
ZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBib29sIGhhc0ZvdjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
c0ZvdikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzRm92KSB7CiAgICAgICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpGb3YgZm92OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvdikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgdmlldy5wcm9qZWN0aW9uID0geyBXVEZNb3ZlKGZvdikgfTsK
ICAgICAgICAgcmV0dXJuIHZpZXc7CiAgICAgfQogCiAgICAgYm9vbCBoYXNQcm9qZWN0aW9uTWF0
cml4OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUHJvamVjdGlvbk1hdHJpeCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoaGFzUHJvamVjdGlvbk1hdHJpeCkgewogICAgICAgICBQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeCBwcm9qZWN0aW9uTWF0cml4OwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpw
cm9qZWN0aW9uTWF0cml4U2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBmbG9hdCBmOwogICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBwcm9qZWN0aW9uTWF0cml4W2ldID0gZjsKICAgICAgICAgfQogICAgICAgICB2aWV3LnBy
b2plY3Rpb24gPSB7IFdURk1vdmUocHJvamVjdGlvbk1hdHJpeCkgfTsKQEAgLTQyMCw5ICs0MjAs
OSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzPiBEZXZpY2U6
OkZyYW1lRGF0YTo6U3RhZ2VQYXJhbWV0ZXJzOgogewogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpTdGFnZVBhcmFtZXRlcnMgc3RhZ2VQYXJhbWV0ZXJzOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhZ2VQYXJhbWV0ZXJzLmlkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YWdlUGFyYW1ldGVycy5ib3VuZHMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBzdGFnZVBhcmFtZXRl
cnM7CiB9CiAKQEAgLTQ0MSwxMSArNDQxLDExIEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRh
OjpMYXllckRhdGE+IERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZShEZWNvCiB7
CiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YSBsYXllckRhdGE7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllckRhdGEub3BhcXVlVGV4dHVyZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
aWYgVVNFKElPU1VSRkFDRV9GT1JfWFJfTEFZRVJfREFUQSkKICAgICBXVEY6Ok1hY2hTZW5kUmln
aHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VTZW5k
UmlnaHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXllckRh
dGE7CkBAIC00NzEsMjUgKzQ3MSwyNSBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YT4gRGV2
aWNlOjpGcmFtZURhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhIGZyYW1lRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGZyYW1lRGF0YS5pc1RyYWNraW5nVmFsaWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
ZnJhbWVEYXRhLmlzUG9zaXRpb25WYWxpZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShm
cmFtZURhdGEuaXNQb3NpdGlvbkVtdWxhdGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGZyYW1lRGF0YS5zaG91bGRSZW5kZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJh
bWVEYXRhLnByZWRpY3RlZERpc3BsYXlUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGZyYW1lRGF0YS5vcmlnaW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRh
LmZsb29yVHJhbnNmb3JtKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5z
dGFnZVBhcmFtZXRlcnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVEYXRhLnZp
ZXdzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lRGF0YS5sYXllcnMpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgcmV0dXJuIGZyYW1lRGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IGQzYTgwYjJlMzM5
N2U1N2VjODBiMjI1MzNjOWIxZTMzOTUyMjg3ZWMuLjNkZDE2Y2Y2MDBjNmEzNDVkZGJjZDFmM2I2
NzBlNjNkZmUyNzQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUklucHV0U291cmNlLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIE9wdGlv
bmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT4gT3BlblhSSW5wdXRTb3VyY2U6Omdl
dElucHV0U291cmNlKFhyU3BhCiAKICAgICAvLyBUcmlnZ2VyIGlzIG1hbmRhdG9yeSBpbiB4ci1z
dGFuZGFyZCBtYXBwaW5nLgogICAgIGlmIChidXR0b25zLmlzRW1wdHkoKSB8fCAhYnV0dG9ucy5m
aXJzdCgpLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1dHRv
bnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGJ1dHRvbnNbaV0pIHsKQEAgLTI5Myw3ICsy
OTMsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IE9w
ZW5YUklucHV0U291cmNlOjpnZXRCdXR0b24oT3BlbgogewogICAgIGF1dG8gaXQgPSBtX2J1dHRv
bkFjdGlvbnMuZmluZChidXR0b25UeXBlKTsKICAgICBpZiAoaXQgPT0gbV9idXR0b25BY3Rpb25z
LmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uIHJl
c3VsdDsKICAgICBib29sIGhhc1ZhbHVlID0gZmFsc2U7CkBAIC0zMTAsMTggKzMxMCwxOCBAQCBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0b24+IE9wZW5YUklucHV0
U291cmNlOjpnZXRCdXR0b24oT3BlbgogICAgIHF1ZXJ5QWN0aW9uU3RhdGUoYWN0aW9ucy50b3Vj
aCwgcmVzdWx0LnRvdWNoZWQsIHJlc3VsdC5wcmVzc2VkKTsKICAgICBxdWVyeUFjdGlvblN0YXRl
KGFjdGlvbnMudmFsdWUsIHJlc3VsdC5wcmVzc2VkVmFsdWUsIHJlc3VsdC5wcmVzc2VkID8gMS4w
IDogMC4wKTsKIAotICAgIHJldHVybiBoYXNWYWx1ZSA/ICBtYWtlT3B0aW9uYWwocmVzdWx0KSA6
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gaGFzVmFsdWUgPyAgc3RkOjptYWtlX29wdGlvbmFs
KHJlc3VsdCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPFhyVmVjdG9yMmY+IE9wZW5Y
UklucHV0U291cmNlOjpnZXRBeGlzKE9wZW5YUkF4aXNUeXBlIGF4aXNUeXBlKSBjb25zdAogewog
ICAgIGF1dG8gaXQgPSBtX2F4aXNBY3Rpb25zLmZpbmQoYXhpc1R5cGUpOwogICAgIGlmIChpdCA9
PSBtX2F4aXNBY3Rpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgWHJWZWN0b3IyZiBheGlzOwogICAgIGlm
IChYUl9GQUlMRUQoZ2V0QWN0aW9uU3RhdGUoaXQtPnZhbHVlLCAmYXhpcykpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIGF4aXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvT3BlblhSTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUkxheWVyLmNwcAppbmRleCA3ODNjMzM3ZTJlMDFlMWEyMDlkNTY1MmQ0MzljMzAwMTc5
NjI5M2EyLi5hZmUzNDczYTBlZjBkMGQ2MWNkNGRmZGZiZjg0NzVkYmRlM2Y1YmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJMYXllci5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gT3Bl
blhSTGF5ZXJQcm9qZWN0aW9uOjpzdGFydEZyYW1lKCkKIHsKICAgICBhdXRvIHRleHR1cmUgPSBt
X3N3YXBjaGFpbi0+YWNxdWlyZUltYWdlKCk7CiAgICAgaWYgKCF0ZXh0dXJlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGEgeyAqdGV4dHVyZSB9OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlN3YXBjaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWlu
LmNwcAppbmRleCA4ZTRhZGI2ZWQxMmE1MjcyMWVkMTA0YjhhM2UwOGNlNjk5MzFiOWZjLi5mZTlk
YWM5MWFmZmUyYjYzNjdjMmZiYjk3OTcwNDEzZjYwNjQ5OTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSU3dhcGNoYWluLmNwcApAQCAtODMs
MTQgKzgzLDE0IEBAIE9wdGlvbmFsPFBsYXRmb3JtR0xPYmplY3Q+IE9wZW5YUlN3YXBjaGFpbjo6
YWNxdWlyZUltYWdlKCkKICAgICBhdXRvIGFjcXVpcmVJbmZvID0gY3JlYXRlU3RydWN0dXJlPFhy
U3dhcGNoYWluSW1hZ2VBY3F1aXJlSW5mbywgWFJfVFlQRV9TV0FQQ0hBSU5fSU1BR0VfQUNRVUlS
RV9JTkZPPigpOwogICAgIHVpbnQzMl90IHN3YXBjaGFpbkltYWdlSW5kZXggPSAwOwogICAgIGF1
dG8gcmVzdWx0ID0geHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UobV9zd2FwY2hhaW4sICZhY3F1aXJl
SW5mbywgJnN3YXBjaGFpbkltYWdlSW5kZXgpOwotICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0
LCAieHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UiLCBtX2luc3RhbmNlLCBXVEY6Om51bGxvcHQpOwor
ICAgIFJFVFVSTl9JRl9GQUlMRUQocmVzdWx0LCAieHJBY3F1aXJlU3dhcGNoYWluSW1hZ2UiLCBt
X2luc3RhbmNlLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3dhcGNoYWlu
SW1hZ2VJbmRleCA8IG1faW1hZ2VCdWZmZXJzLnNpemUoKSk7CiAKICAgICBhdXRvIHdhaXRJbmZv
ID0gY3JlYXRlU3RydWN0dXJlPFhyU3dhcGNoYWluSW1hZ2VXYWl0SW5mbywgWFJfVFlQRV9TV0FQ
Q0hBSU5fSU1BR0VfV0FJVF9JTkZPPigpOwogICAgIHdhaXRJbmZvLnRpbWVvdXQgPSBYUl9JTkZJ
TklURV9EVVJBVElPTjsKICAgICByZXN1bHQgPSB4cldhaXRTd2FwY2hhaW5JbWFnZShtX3N3YXBj
aGFpbiwgJndhaXRJbmZvKTsKLSAgICBSRVRVUk5fSUZfRkFJTEVEKHJlc3VsdCwgInhyV2FpdFN3
YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgV1RGOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZf
RkFJTEVEKHJlc3VsdCwgInhyV2FpdFN3YXBjaGFpbkltYWdlIiwgbV9pbnN0YW5jZSwgc3RkOjpu
dWxsb3B0KTsKIAogICAgIG1fYWNxdWlyZWRUZXh0dXJlID0gbV9pbWFnZUJ1ZmZlcnNbc3dhcGNo
YWluSW1hZ2VJbmRleF0uaW1hZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3Bw
CmluZGV4IGE3ZTQ3YzZkZjkxYjMwZDBmOTliMWQzODMxYjdjM2YyZDhmMGJlZjkuLmZjMTFjYmNi
ZjE0MTJmMjE1ODdkODljMjU4M2EyNWMyOTM4MzY0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmNwcApAQCAtNTAsNyArNTAsNyBAQCBjb25zdCBWZWN0b3I8UGx1Z2luSW5mbz4m
IFBsdWdpbkRhdGE6OndlYlZpc2libGVQbHVnaW5zKCkgY29uc3QKICAgICBhdXRvIGRvY3VtZW50
VVJMID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkgPyBtX3BhZ2UubWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+dXJsKCkgOiBVUkwgeyB9OwogICAgIGlmICghZG9jdW1lbnRVUkwuaXNOdWxs
KCkgJiYgIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChtX2NhY2hlZFZpc2libGVQbHVnaW5z
LnBhZ2VVUkwsIGRvY3VtZW50VVJMKSkgewogICAgICAgICBtX2NhY2hlZFZpc2libGVQbHVnaW5z
LnBhZ2VVUkwgPSBXVEZNb3ZlKGRvY3VtZW50VVJMKTsKLSAgICAgICAgbV9jYWNoZWRWaXNpYmxl
UGx1Z2lucy5wbHVnaW5MaXN0ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2NhY2hlZFZpc2li
bGVQbHVnaW5zLnBsdWdpbkxpc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKCFt
X2NhY2hlZFZpc2libGVQbHVnaW5zLnBsdWdpbkxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YS5oCmluZGV4IGVhYTY0M2U0NWU4MTAzYjJhZTQ2ZWZiYzE1M2U3MjlhNzkyZGJjNWUuLmRj
YjBlNTNjMjczNzkwZjYxMzJmYWE3MmM0ZDZiNjdmZjk1Mjg3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luRGF0YS5oCkBAIC0xNDEsMTIgKzE0MSwxMiBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBpbmxpbmUgT3B0aW9uYWw8U3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllcj4gU3VwcG9ydGVk
UGx1ZwogICAgIE9wdGlvbmFsPFN0cmluZz4gbWF0Y2hpbmdEb21haW47CiAgICAgZGVjb2RlciA+
PiBtYXRjaGluZ0RvbWFpbjsKICAgICBpZiAoIW1hdGNoaW5nRG9tYWluKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8U3RyaW5nPiBwbHVnaW5JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcGx1Z2luSWRl
bnRpZmllcjsKICAgICBpZiAoIXBsdWdpbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllciB7IFdURk1vdmUobWF0Y2hpbmdEb21haW4udmFsdWUoKSks
IFdURk1vdmUocGx1Z2luSWRlbnRpZmllci52YWx1ZSgpKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcAppbmRleCBlMzUxOGJiNTJiYjE0MTMzYTli
ZTg5Mzc5MzUwNzRmY2VjNWNhNjJlLi5kNjg2ZmFjOTcwNzgwZWY3OTgyMDZjYzkwZjU3MDAzYWJk
MDEzY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNw
cApAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAg
ICAgICAgICAgICAgIG51bUF1dG9FbXB0eUNlbGxzT25seSsrOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgKytudW1iZXJPZk5vbkVtcHR5QXV0bzsKLSAgICAgICAgICAgICAg
ICB0b3RhbEF1dG8gPSB0b3RhbEF1dG8udmFsdWVPcigwLmYpICsgbV9sYXlvdXRTdHJ1Y3RbaV0u
ZWZmZWN0aXZlTWF4TG9naWNhbFdpZHRoOworICAgICAgICAgICAgICAgIHRvdGFsQXV0byA9IHRv
dGFsQXV0by52YWx1ZV9vcigwLmYpICsgbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWF4TG9n
aWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIGFsbG9jQXV0byArPSBjZWxsTG9naWNhbFdpZHRo
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0JyZWFrTGluZXMuaAppbmRleCAwNTM5YzZhNDMzZDlmYWViZjUxZjIxNDVlN2NmMzEyMzg5MDIw
MTEzLi5hZmI3MDA0Njg4YzQxMmU2MjY0YWFmYjJkZTFlOGNlMTQyNDZkMjI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQnJlYWtMaW5lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9CcmVha0xpbmVzLmgKQEAgLTEwOSw3ICsxMDksNyBAQCBpbmxpbmUgdW5z
aWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGF6eUJy
ZWFrSXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgIGlmIChicmVha0l0ZXJhdG9yKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0gdWJya19mb2xsb3dpbmcoYnJl
YWtJdGVyYXRvciwgaSAtIDEgKyBwcmlvckNvbnRleHRMZW5ndGgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBVQlJLX0RPTkUpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV4dEJyZWFrID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5leHRCcmVhayA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGNh
bmRpZGF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID49IHBy
aW9yQ29udGV4dExlbmd0aCk7CkBAIC0xOTUsNyArMTk1LDcgQEAgaW5saW5lIHVuc2lnbmVkIG5l
eHRCcmVha2FibGVQb3NpdGlvbkJyZWFrQ2hhcmFjdGVyKExhenlMaW5lQnJlYWtJdGVyYXRvciYg
bGF6eUIKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3
ODc2CiAgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdGVyYXRvcihzdHJpbmdW
aWV3KTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV4dCA9IHVicmtfZm9sbG93aW5nKGl0ZXJh
dG9yLCBzdGFydFBvc2l0aW9uKTsKLSAgICByZXR1cm4gbmV4dC52YWx1ZU9yKHN0cmluZ1ZpZXcu
bGVuZ3RoKCkpOworICAgIHJldHVybiBuZXh0LnZhbHVlX29yKHN0cmluZ1ZpZXcubGVuZ3RoKCkp
OwogfQogCiBpbmxpbmUgYm9vbCBpc0JyZWFrYWJsZShMYXp5TGluZUJyZWFrSXRlcmF0b3ImIGxh
enlCcmVha0l0ZXJhdG9yLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBPcHRpb25hbDx1bnNpZ25l
ZD4mIG5leHRCcmVha2FibGUsIGJvb2wgYnJlYWtOQlNQLCBib29sIGNhblVzZVNob3J0Y3V0LCBi
b29sIGtlZXBBbGxXb3JkcywgYm9vbCBicmVha0FueXdoZXJlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTVmFsdWVLZXkuaAppbmRleCAyZGJmNzQ2MDk4MjFmNTA1YjQwZjMzMWU2NmIxN2U2NzA2
YmFiZDE3Li4xNzY5NDcyMmU3MTYwMTAyYjdhMDJjMjMzMWJhZjRkNmY3Yzk4ODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFsdWVLZXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFsdWVLZXkuaApAQCAtNjAsMTUgKzYwLDE1IEBAIE9wdGlv
bmFsPENTU1ZhbHVlS2V5PiBDU1NWYWx1ZUtleTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNzc1ZhbHVlSUQ7CiAgICAgZGVjb2RlciA+PiBjc3NWYWx1
ZUlEOwogICAgIGlmICghY3NzVmFsdWVJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBPcHRpb25hbDxib29sPiB1c2VEYXJr
QXBwZWFyYW5jZTsKICAgICBkZWNvZGVyID4+IHVzZURhcmtBcHBlYXJhbmNlOwogICAgIGlmICgh
dXNlRGFya0FwcGVhcmFuY2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNlRWxldmF0ZWRVc2Vy
SW50ZXJmYWNlTGV2ZWw7CiAgICAgZGVjb2RlciA+PiB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VM
ZXZlbDsKICAgICBpZiAoIXVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqY3NzVmFsdWVJRCksIFdURk1vdmUoKnVzZURhcmtBcHBlYXJhbmNl
KSwgV1RGTW92ZSgqdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwpIH0gfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAppbmRleCAyZmY1ZTkzNjJmNmY0MjZmNzY5
Yjk2YzliOGEyYTMxMzc4YzRmNzE4Li42YTFhYzRlM2IzOTVmODI4NGVjN2E3YzZkYmE2MzEwOThl
ZWFkODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaApAQCAtMTQzLDcg
KzE0Myw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8UmVnaW9uPiByZWdpb247CiAgICAgZGVjb2RlciA+
PiByZWdpb247CiAgICAgaWYgKCFyZWdpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBFdmVudFJlZ2lvbiBldmVudFJl
Z2lvbjsKICAgICBldmVudFJlZ2lvbi5tX3JlZ2lvbiA9IFdURk1vdmUoKnJlZ2lvbik7CkBAIC0x
NTIsMTQgKzE1MiwxNCBAQCBPcHRpb25hbDxFdmVudFJlZ2lvbj4gRXZlbnRSZWdpb246OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlvbmFsPFJlZ2lvbj4gd2hlZWxFdmVudExpc3Rl
bmVyUmVnaW9uOwogICAgIGRlY29kZXIgPj4gd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uOwogICAg
IGlmICghd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZXZlbnRSZWdpb24ubV93
aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBXVEZNb3ZlKCp3aGVlbEV2ZW50TGlzdGVuZXJSZWdp
b24pOwogCiAgICAgT3B0aW9uYWw8UmVnaW9uPiBub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVy
UmVnaW9uOwogICAgIGRlY29kZXIgPj4gbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lv
bjsKICAgICBpZiAoIW5vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBldmVudFJlZ2lvbi5tX25vblBhc3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gPSBXVEZN
b3ZlKCpub25QYXNzaXZlV2hlZWxFdmVudExpc3RlbmVyUmVnaW9uKTsKICNlbmRpZgpAQCAtMTY4
LDcgKzE2OCw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8VmVjdG9yPFJlZ2lvbj4+IHRvdWNoQWN0aW9u
UmVnaW9uczsKICAgICBkZWNvZGVyID4+IHRvdWNoQWN0aW9uUmVnaW9uczsKICAgICBpZiAoIXRv
dWNoQWN0aW9uUmVnaW9ucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGV2ZW50UmVnaW9uLm1fdG91Y2hBY3Rpb25SZWdp
b25zID0gV1RGTW92ZSgqdG91Y2hBY3Rpb25SZWdpb25zKTsKICNlbmRpZgpAQCAtMTc3LDcgKzE3
Nyw3IEBAIE9wdGlvbmFsPEV2ZW50UmVnaW9uPiBFdmVudFJlZ2lvbjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8UmVnaW9uPj4gZWRpdGFibGVSZWdpb247
CiAgICAgZGVjb2RlciA+PiBlZGl0YWJsZVJlZ2lvbjsKICAgICBpZiAoIWVkaXRhYmxlUmVnaW9u
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGV2ZW50UmVnaW9uLm1fZWRpdGFibGVSZWdpb24gPSBXVEZNb3ZlKCplZGl0YWJs
ZVJlZ2lvbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcAppbmRleCBhYzU5ZTNjYWJmMTMxZmY2M2FmNGQ2ZTk3YzNhZWRjNjQ0NGZkNzRh
Li40MjljMGE5MjZmNzlhZWE2MjQ1NjBjNmExZWEzYmQwZTUyOTI2Mjg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMjIyLDggKzIyMiw4IEBA
IHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGhpZ2hWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIExheW91
dFVuaXQ6Om1heCgpOyB9CiAgICAgdm9pZCBjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50ZXJ2YWxU
eXBlJik7CiAKLSAgICBMYXlvdXRVbml0IG5leHRMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0TG9naWNhbEJvdHRvbS52YWx1ZU9yKDApOyB9Ci0gICAgTGF5b3V0VW5pdCBuZXh0
U2hhcGVMb2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2hhcGVMb2dpY2FsQm90
dG9tLnZhbHVlT3IobmV4dExvZ2ljYWxCb3R0b20oKSk7IH0KKyAgICBMYXlvdXRVbml0IG5leHRM
b2dpY2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0TG9naWNhbEJvdHRvbS52YWx1ZV9v
cigwKTsgfQorICAgIExheW91dFVuaXQgbmV4dFNoYXBlTG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV4dFNoYXBlTG9naWNhbEJvdHRvbS52YWx1ZV9vcihuZXh0TG9naWNhbEJvdHRv
bSgpKTsgfQogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8Y29uc3QgUmVuZGVyQmxvY2tGbG93PiBt
X3JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNl
bGluZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5l
QWxpZ25tZW50LmNwcAppbmRleCBhYjJjMDYzODVmYTM1NDkzYmUwYjA4MDA1YTQ2MmQ0M2RmMjA4
OGEzLi4yMjNlMDI4ZjJhM2Y3NzdkOWIyMjBjMDkxYTMyZTFhYjA3YzAzMjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAt
NjUsNyArNjUsNyBAQCBMYXlvdXRVbml0IEdyaWRCYXNlbGluZUFsaWdubWVudDo6bG9naWNhbEFz
Y2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiBMYXlvdXRVbml0IEdyaWRCYXNl
bGluZUFsaWdubWVudDo6YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3Jp
ZEF4aXMgYmFzZWxpbmVBeGlzKSBjb25zdAogewogICAgIExheW91dFVuaXQgbWFyZ2luID0gaXNE
ZXNjZW50QmFzZWxpbmVGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IG1hcmdpblVuZGVy
Rm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgOiBtYXJnaW5PdmVyRm9yQ2hpbGQoY2hpbGQs
IGJhc2VsaW5lQXhpcyk7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9CYXNl
bGluZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGluZUJh
c2VsaW5lKCkudmFsdWVPcihMYXlvdXRVbml0KC0xKSkgOiBMYXlvdXRVbml0KC0xKSk7CisgICAg
TGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNGb3JDaGlsZChjaGls
ZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3IoTGF5
b3V0VW5pdCgtMSkpIDogTGF5b3V0VW5pdCgtMSkpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJv
eCdzIHVuZGVyIGVkZ2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCiAgICAgaWYgKGJhc2VsaW5lID09
IC0xKSB7CiAgICAgICAgIGlmIChpc0hvcml6b250YWxCYXNlbGluZUF4aXMoYmFzZWxpbmVBeGlz
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0Fs
Z29yaXRobS5jcHAKaW5kZXggYTI3MGRiOGJkNmY4NGNkNzkwZGFmMjExNzY2OGY1ZWMyZGQyNjZm
ZS4uMzE0MjY1MzFlMjlhOGVmNDkwYjJjYTM4NGVkOTU1OGM3NDhkZGJhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBHcmlkVHJhY2s6OnNldEJhc2VTaXplKExheW91dFVuaXQg
YmFzZVNpemUpCiAKIHZvaWQgR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1pdChMYXlvdXRVbml0IGdy
b3d0aExpbWl0KQogewotICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9PSBpbmZpbml0
eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3RoTGltaXRDYXAu
dmFsdWVPcihncm93dGhMaW1pdCkpOworICAgIG1fZ3Jvd3RoTGltaXQgPSBncm93dGhMaW1pdCA9
PSBpbmZpbml0eSA/IGdyb3d0aExpbWl0IDogc3RkOjptaW4oZ3Jvd3RoTGltaXQsIG1fZ3Jvd3Ro
TGltaXRDYXAudmFsdWVfb3IoZ3Jvd3RoTGltaXQpKTsKICAgICBlbnN1cmVHcm93dGhMaW1pdElz
QmlnZ2VyVGhhbkJhc2VTaXplKCk7CiB9CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBMYXlvdXRVbml0
IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEJhc2VTaXplKGNvbnN0IEdyaWRUcmFj
a1NpemUmIHRyYWNrUwogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCA9IGdyaWRMZW5n
dGgubGVuZ3RoKCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVkKCkpCi0gICAgICAg
IHJldHVybiB2YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4o
YXZhaWxhYmxlU3BhY2UoKS52YWx1ZU9yKDApLCAwKSk7CisgICAgICAgIHJldHVybiB2YWx1ZUZv
ckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxhYmxlU3BhY2Uo
KS52YWx1ZV9vcigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3RoLmlzTWluQ29udGVu
dCgpIHx8IHRyYWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlzTWF4Q29udGVudCgp
KTsKICAgICByZXR1cm4gMDsKQEAgLTIzMSw3ICsyMzEsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobTo6aW5pdGlhbEdyb3d0aExpbWl0KGNvbnN0IEdyaWRUcmFja1NpemUm
IHRyYQogCiAgICAgY29uc3QgTGVuZ3RoJiB0cmFja0xlbmd0aCA9IGdyaWRMZW5ndGgubGVuZ3Ro
KCk7CiAgICAgaWYgKHRyYWNrTGVuZ3RoLmlzU3BlY2lmaWVkKCkpCi0gICAgICAgIHJldHVybiB2
YWx1ZUZvckxlbmd0aCh0cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxhYmxl
U3BhY2UoKS52YWx1ZU9yKDApLCAwKSk7CisgICAgICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aCh0
cmFja0xlbmd0aCwgc3RkOjptYXg8TGF5b3V0VW5pdD4oYXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9v
cigwKSwgMCkpOwogCiAgICAgQVNTRVJUKHRyYWNrTGVuZ3RoLmlzTWluQ29udGVudCgpIHx8IHRy
YWNrTGVuZ3RoLmlzQXV0bygpIHx8IHRyYWNrTGVuZ3RoLmlzTWF4Q29udGVudCgpKTsKICAgICBy
ZXR1cm4gaW5maW5pdHk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OnNpemVUcmFja1RvRml0Tm9uU3Bhbm5pbmdJdGVtKGNvbnN0IEdyaWRTcGFuJiBz
cGEKICAgICB9IGVsc2UgaWYgKHRyYWNrU2l6ZS5oYXNNYXhDb250ZW50T3JBdXRvTWF4VHJhY2tC
cmVhZHRoKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBncm93dGhMaW1pdCA9IG1fc3RyYXRlZ3kt
Pm1heENvbnRlbnRGb3JDaGlsZChncmlkSXRlbSk7CiAgICAgICAgIGlmICh0cmFja1NpemUuaXNG
aXRDb250ZW50KCkpCi0gICAgICAgICAgICBncm93dGhMaW1pdCA9IHN0ZDo6bWluKGdyb3d0aExp
bWl0LCB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUuZml0Q29udGVudFRyYWNrQnJlYWR0aCgpLmxl
bmd0aCgpLCBhdmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMCkpKTsKKyAgICAgICAgICAgIGdyb3d0
aExpbWl0ID0gc3RkOjptaW4oZ3Jvd3RoTGltaXQsIHZhbHVlRm9yTGVuZ3RoKHRyYWNrU2l6ZS5m
aXRDb250ZW50VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIGF2YWlsYWJsZVNwYWNlKCkudmFsdWVf
b3IoMCkpKTsKICAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXQoc3RkOjptYXgodHJhY2suZ3Jv
d3RoTGltaXQoKSwgZ3Jvd3RoTGltaXQpKTsKICAgICB9CiB9CkBAIC00ODUsOCArNDg1LDggQEAg
c3RhdGljIGJvb2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFj
ayogdHJhY2sxLCBjb25zdCBHcmlkVHIKICAgICBpZiAodHJhY2sxSGFzSW5maW5pdGVHcm93dGhQ
b3RlbnRpYWxXaXRob3V0Q2FwIHx8IHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFsV2l0
aG91dENhcCkKICAgICAgICAgcmV0dXJuIHRyYWNrMkhhc0luZmluaXRlR3Jvd3RoUG90ZW50aWFs
V2l0aG91dENhcDsKIAotICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdyb3d0
aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazEtPmdyb3d0aExpbWl0KCkpOwotICAgIExheW91dFVu
aXQgdHJhY2syTGltaXQgPSB0cmFjazItPmdyb3d0aExpbWl0Q2FwKCkudmFsdWVPcih0cmFjazIt
Pmdyb3d0aExpbWl0KCkpOworICAgIExheW91dFVuaXQgdHJhY2sxTGltaXQgPSB0cmFjazEtPmdy
b3d0aExpbWl0Q2FwKCkudmFsdWVfb3IodHJhY2sxLT5ncm93dGhMaW1pdCgpKTsKKyAgICBMYXlv
dXRVbml0IHRyYWNrMkxpbWl0ID0gdHJhY2syLT5ncm93dGhMaW1pdENhcCgpLnZhbHVlX29yKHRy
YWNrMi0+Z3Jvd3RoTGltaXQoKSk7CiAgICAgcmV0dXJuICh0cmFjazFMaW1pdCAtIHRyYWNrMS0+
YmFzZVNpemUoKSkgPCAodHJhY2syTGltaXQgLSB0cmFjazItPmJhc2VTaXplKCkpOwogfQogCkBA
IC01NjYsMTQgKzU2NiwxNCBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OmVzdGltYXRlZEdyaWRBcmVhQnJlYWR0aEZvckNoaWxkKAogICAgICAgICBpZiAo
bWF4VHJhY2tTaXplLmlzQ29udGVudFNpemVkKCkgfHwgbWF4VHJhY2tTaXplLmlzRmxleCgpIHx8
IGlzUmVsYXRpdmVHcmlkTGVuZ3RoQXNBdXRvKG1heFRyYWNrU2l6ZSwgZGlyZWN0aW9uKSkKICAg
ICAgICAgICAgIGdyaWRBcmVhSXNJbmRlZmluaXRlID0gdHJ1ZTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZ3JpZEFyZWFTaXplICs9IHZhbHVlRm9yTGVuZ3RoKG1heFRyYWNrU2l6ZS5sZW5n
dGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1ZU9yKDBfbHUpKTsKKyAgICAgICAgICAgIGdyaWRBcmVh
U2l6ZSArPSB2YWx1ZUZvckxlbmd0aChtYXhUcmFja1NpemUubGVuZ3RoKCksIGF2YWlsYWJsZVNp
emUudmFsdWVfb3IoMF9sdSkpOwogICAgIH0KIAogICAgIGdyaWRBcmVhU2l6ZSArPSBtX3JlbmRl
ckdyaWQtPmd1dHRlcnNTaXplKG1fZ3JpZCwgZGlyZWN0aW9uLCBzcGFuLnN0YXJ0TGluZSgpLCBz
cGFuLmludGVnZXJTcGFuKCksIGF2YWlsYWJsZVNpemUpOwogCiAgICAgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxv
d0F3YXJlRGlyZWN0aW9uRm9yQ2hpbGQoKm1fcmVuZGVyR3JpZCwgY2hpbGQsIEZvckNvbHVtbnMp
OwogICAgIGlmIChncmlkQXJlYUlzSW5kZWZpbml0ZSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdGlv
biA9PSBjaGlsZElubGluZURpcmVjdGlvbiA/IG1ha2VPcHRpb25hbChzdGQ6Om1heChjaGlsZC5t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSwgZ3JpZEFyZWFTaXplKSkgOiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBkaXJlY3Rpb24gPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBzdGQ6
Om1ha2Vfb3B0aW9uYWwoc3RkOjptYXgoY2hpbGQubWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCks
IGdyaWRBcmVhU2l6ZSkpIDogc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBncmlkQXJlYVNpemU7
CiB9CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6
Y29tcHV0ZUdyaWRDb250YWluZXJJbnRyaW5zaWNTaXplcygpCiAgICAgICAgIG1fbWF4Q29udGVu
dFNpemUgKz0gdHJhY2suZ3Jvd3RoTGltaXRJc0luZmluaXRlKCkgPyB0cmFjay5iYXNlU2l6ZSgp
IDogdHJhY2suZ3Jvd3RoTGltaXQoKTsKICAgICAgICAgLy8gVGhlIGdyb3d0aCBsaW1pdCBjYXBz
IG11c3QgYmUgY2xlYXJlZCBub3cgaW4gb3JkZXIgdG8gcHJvcGVybHkgc29ydAogICAgICAgICAv
LyB0cmFja3MgYnkgZ3Jvd3RoIHBvdGVudGlhbCBvbiBhbiBldmVudHVhbCAiTWF4aW1pemUgVHJh
Y2tzIi4KLSAgICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgdHJhY2suc2V0R3Jvd3RoTGltaXRDYXAoc3RkOjpudWxsb3B0KTsKICAgICB9CiB9CiAK
QEAgLTc1Miw3ICs3NTIsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0
cmF0ZWd5Ojpsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94JiBjaAogICAgIC8vIElmIHxj
aGlsZHwgaGFzIGEgcmVsYXRpdmUgbG9naWNhbCBoZWlnaHQsIHdlIHNob3VsZG4ndCBsZXQgaXQg
b3ZlcnJpZGUgaXRzIGludHJpbnNpYyBoZWlnaHQsIHdoaWNoIGlzCiAgICAgLy8gd2hhdCB3ZSBh
cmUgaW50ZXJlc3RlZCBpbiBoZXJlLiBUaHVzIHdlIG5lZWQgdG8gc2V0IHRoZSBibG9jay1heGlz
IG92ZXJyaWRlIHNpemUgdG8gbnVsbG9wdCAobm8gcG9zc2libGUgcmVzb2x1dGlvbikuCiAgICAg
aWYgKHNob3VsZENsZWFyT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hp
bGQoY2hpbGQsIEZvclJvd3MpKSB7Ci0gICAgICAgIHNldE92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50U2l6ZUZvckNoaWxkKGNoaWxkLCBjaGlsZEJsb2NrRGlyZWN0aW9uLCBXVEY6Om51
bGxvcHQpOworICAgICAgICBzZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVG
b3JDaGlsZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgY2hpbGQuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKICAgICB9CiAKQEAgLTgxNiw3
ICs4MTYsNyBAQCBMYXlvdXRVbml0IEdyaWRUcmFja1NpemluZ0FsZ29yaXRobVN0cmF0ZWd5Ojpt
aW5TaXplRm9yQ2hpbGQoUmVuZGVyQm94JiBjaGlsZCkgYwogICAgICAgICAgICAgY29uc3QgYXV0
byYgdHJhY2tTaXplID0gYWxsVHJhY2tzW3RyYWNrUG9zaXRpb25dLmNhY2hlZFRyYWNrU2l6ZSgp
OwogICAgICAgICAgICAgaWYgKCF0cmFja1NpemUuaGFzRml4ZWRNYXhUcmFja0JyZWFkdGgoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbWluU2l6ZTsKLSAgICAgICAgICAgIG1heEJyZWFkdGgg
Kz0gdmFsdWVGb3JMZW5ndGgodHJhY2tTaXplLm1heFRyYWNrQnJlYWR0aCgpLmxlbmd0aCgpLCBh
dmFpbGFibGVTcGFjZSgpLnZhbHVlT3IoMF9sdSkpOworICAgICAgICAgICAgbWF4QnJlYWR0aCAr
PSB2YWx1ZUZvckxlbmd0aCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCkubGVuZ3RoKCksIGF2
YWlsYWJsZVNwYWNlKCkudmFsdWVfb3IoMF9sdSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICht
aW5TaXplID4gbWF4QnJlYWR0aCkgewogICAgICAgICAgICAgYXV0byBtYXJnaW5BbmRCb3JkZXJB
bmRQYWRkaW5nID0gR3JpZExheW91dEZ1bmN0aW9uczo6bWFyZ2luTG9naWNhbFNpemVGb3JDaGls
ZCgqcmVuZGVyR3JpZCgpLCBkaXJlY3Rpb24oKSwgY2hpbGQpOwpAQCAtOTE0LDExICs5MTQsMTEg
QEAgTGF5b3V0VW5pdCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9naWNh
bFNpemVGb3JDaGlsZChSZW5kZXJCb3gmIGMKICAgICBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
Y2hpbGRJbmxpbmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpmbG93QXdhcmVEaXJl
Y3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgRm9yQ29sdW1ucyk7CiAgICAgYm9v
bCBpc1Jvd0F4aXMgPSBkaXJlY3Rpb24oKSA9PSBjaGlsZElubGluZURpcmVjdGlvbjsKICAgICBp
ZiAoaXNSb3dBeGlzKQotICAgICAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxXaWR0aElu
RnJhZ21lbnRVc2luZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIGF2YWlsYWJsZVNpemUudmFsdWVP
cigwKSwgKnJlbmRlckdyaWQoKSwgbnVsbHB0cikgKyBHcmlkTGF5b3V0RnVuY3Rpb25zOjptYXJn
aW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkSW5saW5lRGlyZWN0aW9u
LCBjaGlsZCk7CisgICAgICAgIHJldHVybiBjaGlsZC5jb21wdXRlTG9naWNhbFdpZHRoSW5GcmFn
bWVudFVzaW5nKE1pblNpemUsIGNoaWxkTWluU2l6ZSwgYXZhaWxhYmxlU2l6ZS52YWx1ZV9vcigw
KSwgKnJlbmRlckdyaWQoKSwgbnVsbHB0cikgKyBHcmlkTGF5b3V0RnVuY3Rpb25zOjptYXJnaW5M
b2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkSW5saW5lRGlyZWN0aW9uLCBj
aGlsZCk7CiAgICAgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkID0gdXBkYXRlT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoY2hpbGQsIGNoaWxkSW5saW5lRGly
ZWN0aW9uLCBhdmFpbGFibGVTaXplKTsKICAgICBsYXlvdXRHcmlkSXRlbUZvck1pblNpemVDb21w
dXRhdGlvbihjaGlsZCwgb3ZlcnJpZGVTaXplSGFzQ2hhbmdlZCk7CiAgICAgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGNoaWxkQmxvY2tEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVuY3Rpb25zOjpm
bG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwgRm9yUm93cyk7
Ci0gICAgcmV0dXJuIGNoaWxkLmNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWluU2l6ZSwgY2hp
bGRNaW5TaXplLCBXVEY6Om51bGxvcHQpLnZhbHVlT3IoMCkgKyBHcmlkTGF5b3V0RnVuY3Rpb25z
OjptYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCksIGNoaWxkQmxvY2tEaXJl
Y3Rpb24sIGNoaWxkKTsKKyAgICByZXR1cm4gY2hpbGQuY29tcHV0ZUxvZ2ljYWxIZWlnaHRVc2lu
ZyhNaW5TaXplLCBjaGlsZE1pblNpemUsIHN0ZDo6bnVsbG9wdCkudmFsdWVfb3IoMCkgKyBHcmlk
TGF5b3V0RnVuY3Rpb25zOjptYXJnaW5Mb2dpY2FsU2l6ZUZvckNoaWxkKCpyZW5kZXJHcmlkKCks
IGNoaWxkQmxvY2tEaXJlY3Rpb24sIGNoaWxkKTsKIH0KIAogY2xhc3MgSW5kZWZpbml0ZVNpemVT
dHJhdGVneSBmaW5hbCA6IHB1YmxpYyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneSB7
CkBAIC05OTgsOCArOTk4LDggQEAgYm9vbCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpyZWNvbXB1
dGVVc2VkRmxleEZyYWN0aW9uSWZOZWVkZWQoZG91YmxlJiBmbGV4RnJhY3QKIAogICAgIGNvbnN0
IFJlbmRlckdyaWQqIHJlbmRlckdyaWQgPSB0aGlzLT5yZW5kZXJHcmlkKCk7CiAKLSAgICBhdXRv
IG1pblNpemUgPSByZW5kZXJHcmlkLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWluU2l6
ZSwgcmVuZGVyR3JpZC0+c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCksIFdURjo6bnVsbG9wdCk7
Ci0gICAgYXV0byBtYXhTaXplID0gcmVuZGVyR3JpZC0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVp
Z2h0KE1heFNpemUsIHJlbmRlckdyaWQtPnN0eWxlKCkubG9naWNhbE1heEhlaWdodCgpLCBXVEY6
Om51bGxvcHQpOworICAgIGF1dG8gbWluU2l6ZSA9IHJlbmRlckdyaWQtPmNvbXB1dGVDb250ZW50
TG9naWNhbEhlaWdodChNaW5TaXplLCByZW5kZXJHcmlkLT5zdHlsZSgpLmxvZ2ljYWxNaW5IZWln
aHQoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIG1heFNpemUgPSByZW5kZXJHcmlkLT5jb21w
dXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgcmVuZGVyR3JpZC0+c3R5bGUoKS5sb2dp
Y2FsTWF4SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBSZWRvIHRoZSBmbGV4IGZy
YWN0aW9uIGNvbXB1dGF0aW9uIHVzaW5nIG1pbnxtYXgtaGVpZ2h0IGFzIGRlZmluaXRlIGF2YWls
YWJsZSBzcGFjZSBpbiBjYXNlCiAgICAgLy8gdGhlIHRvdGFsIGhlaWdodCBpcyBzbWFsbGVyIHRo
YW4gbWluLWhlaWdodCBvciBsYXJnZXIgdGhhbiBtYXgtaGVpZ2h0LgpAQCAtMTAxMSw3ICsxMDEx
LDcgQEAgYm9vbCBJbmRlZmluaXRlU2l6ZVN0cmF0ZWd5OjpyZWNvbXB1dGVVc2VkRmxleEZyYWN0
aW9uSWZOZWVkZWQoZG91YmxlJiBmbGV4RnJhY3QKIAogICAgIExheW91dFVuaXQgZnJlZVNwYWNl
ID0gY2hlY2tNYXhTaXplID8gbWF4U2l6ZS52YWx1ZSgpIDogLTFfbHU7CiAgICAgY29uc3QgR3Jp
ZCYgZ3JpZCA9IG1fYWxnb3JpdGhtLmdyaWQoKTsKLSAgICBmcmVlU3BhY2UgPSBzdGQ6Om1heChm
cmVlU3BhY2UsIG1pblNpemUudmFsdWVPcigwX2x1KSkgLSByZW5kZXJHcmlkLT5ndXR0ZXJzU2l6
ZShncmlkLCBGb3JSb3dzLCAwLCBncmlkLm51bVRyYWNrcyhGb3JSb3dzKSwgYXZhaWxhYmxlU3Bh
Y2UoKSk7CisgICAgZnJlZVNwYWNlID0gc3RkOjptYXgoZnJlZVNwYWNlLCBtaW5TaXplLnZhbHVl
X29yKDBfbHUpKSAtIHJlbmRlckdyaWQtPmd1dHRlcnNTaXplKGdyaWQsIEZvclJvd3MsIDAsIGdy
aWQubnVtVHJhY2tzKEZvclJvd3MpLCBhdmFpbGFibGVTcGFjZSgpKTsKIAogICAgIHNpemVfdCBu
dW1iZXJPZlRyYWNrcyA9IG1fYWxnb3JpdGhtLnRyYWNrcyhGb3JSb3dzKS5zaXplKCk7CiAgICAg
ZmxleEZyYWN0aW9uID0gZmluZEZyVW5pdFNpemUoR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0
ZUdyaWRTcGFuKDAsIG51bWJlck9mVHJhY2tzKSwgZnJlZVNwYWNlKTsKQEAgLTEwNDAsNyArMTA0
MCw3IEBAIExheW91dFVuaXQgSW5kZWZpbml0ZVNpemVTdHJhdGVneTo6ZnJlZVNwYWNlRm9yU3Ry
ZXRjaEF1dG9UcmFja3NTdGVwKCkgY29uc3QKICAgICBpZiAoZGlyZWN0aW9uKCkgPT0gRm9yQ29s
dW1ucykKICAgICAgICAgcmV0dXJuIDBfbHU7CiAKLSAgICBhdXRvIG1pblNpemUgPSByZW5kZXJH
cmlkKCktPmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChNaW5TaXplLCByZW5kZXJHcmlkKCkt
PnN0eWxlKCkubG9naWNhbE1pbkhlaWdodCgpLCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gbWlu
U2l6ZSA9IHJlbmRlckdyaWQoKS0+Y29tcHV0ZUNvbnRlbnRMb2dpY2FsSGVpZ2h0KE1pblNpemUs
IHJlbmRlckdyaWQoKS0+c3R5bGUoKS5sb2dpY2FsTWluSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7
CiAgICAgaWYgKCFtaW5TaXplKQogICAgICAgICByZXR1cm4gMF9sdTsKICAgICByZXR1cm4gbWlu
U2l6ZS52YWx1ZSgpIC0gY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7CkBAIC0xMDUxLDcgKzEwNTEs
NyBAQCBMYXlvdXRVbml0IERlZmluaXRlU2l6ZVN0cmF0ZWd5OjptaW5Mb2dpY2FsU2l6ZUZvckNo
aWxkKFJlbmRlckJveCYgY2hpbGQsIGNvbnN0CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGNoaWxkSW5saW5lRGlyZWN0aW9uID0gR3JpZExheW91dEZ1bmN0aW9uczo6Zmxvd0F3YXJlRGly
ZWN0aW9uRm9yQ2hpbGQoKnJlbmRlckdyaWQoKSwgY2hpbGQsIEZvckNvbHVtbnMpOwogICAgIEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBmbG93QXdhcmVEaXJlY3Rpb24gPSBHcmlkTGF5b3V0RnVu
Y3Rpb25zOjpmbG93QXdhcmVEaXJlY3Rpb25Gb3JDaGlsZCgqcmVuZGVyR3JpZCgpLCBjaGlsZCwg
ZGlyZWN0aW9uKCkpOwogICAgIGlmIChoYXNSZWxhdGl2ZU1hcmdpbk9yUGFkZGluZ0ZvckNoaWxk
KGNoaWxkLCBmbG93QXdhcmVEaXJlY3Rpb24pIHx8IChkaXJlY3Rpb24oKSAhPSBjaGlsZElubGlu
ZURpcmVjdGlvbiAmJiBoYXNSZWxhdGl2ZU9ySW50cmluc2ljU2l6ZUZvckNoaWxkKGNoaWxkLCBm
bG93QXdhcmVEaXJlY3Rpb24pKSkgewotICAgICAgICBhdXRvIGluZGVmaW5pdGVTaXplID0gZGly
ZWN0aW9uKCkgPT0gY2hpbGRJbmxpbmVEaXJlY3Rpb24gPyBtYWtlT3B0aW9uYWwoMF9sdSkgOiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gaW5kZWZpbml0ZVNpemUgPSBkaXJlY3Rpb24oKSA9
PSBjaGlsZElubGluZURpcmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbCgwX2x1KSA6IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgc2V0T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRTaXpl
Rm9yQ2hpbGQoY2hpbGQsIGRpcmVjdGlvbigpLCBpbmRlZmluaXRlU2l6ZSk7CiAgICAgfQogICAg
IHJldHVybiBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG1TdHJhdGVneTo6bWluTG9naWNhbFNpemVG
b3JDaGlsZChjaGlsZCwgY2hpbGRNaW5TaXplLCBhdmFpbGFibGVTaXplKTsKQEAgLTExMTksNyAr
MTExOSw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjppbml0aWFsaXplVHJhY2tT
aXplcygpCiAKICAgICBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJhY2tzID0gdHJhY2tzKG1fZGly
ZWN0aW9uKTsKICAgICBjb25zdCBib29sIGluZGVmaW5pdGVIZWlnaHQgPSBtX2RpcmVjdGlvbiA9
PSBGb3JSb3dzICYmICFtX3JlbmRlckdyaWQtPmhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpOwot
ICAgIExheW91dFVuaXQgbWF4U2l6ZSA9IHN0ZDo6bWF4KDBfbHUsIGF2YWlsYWJsZVNwYWNlKCku
dmFsdWVPcigwX2x1KSk7CisgICAgTGF5b3V0VW5pdCBtYXhTaXplID0gc3RkOjptYXgoMF9sdSwg
YXZhaWxhYmxlU3BhY2UoKS52YWx1ZV9vcigwX2x1KSk7CiAgICAgLy8gMS4gSW5pdGlhbGl6ZSBw
ZXIgR3JpZCB0cmFjayB2YXJpYWJsZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFs
bFRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gYWxsVHJh
Y2tzW2ldOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0
aG06OnNldHVwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmUKICAg
ICAgICAgTGF5b3V0VW5pdCBndXR0ZXJzU2l6ZSA9IG1fcmVuZGVyR3JpZC0+Z3V0dGVyc1NpemUo
bV9ncmlkLCBkaXJlY3Rpb24sIDAsIG1fZ3JpZC5udW1UcmFja3MoZGlyZWN0aW9uKSwgdGhpcy0+
YXZhaWxhYmxlU3BhY2UoZGlyZWN0aW9uKSk7CiAgICAgICAgIHNldEZyZWVTcGFjZShkaXJlY3Rp
b24sICphdmFpbGFibGVTcGFjZSAtIGd1dHRlcnNTaXplKTsKICAgICB9IGVsc2UKLSAgICAgICAg
c2V0RnJlZVNwYWNlKGRpcmVjdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgc2V0RnJlZVNw
YWNlKGRpcmVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICB0cmFja3MoZGlyZWN0aW9uKS5yZXNp
emUobnVtVHJhY2tzKTsKIAogICAgIG1fbmVlZHNTZXR1cCA9IGZhbHNlOwpAQCAtMTM3OSw4ICsx
Mzc5LDggQEAgdm9pZCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnJlc2V0KCkKICAgICBtX2Nv
bnRlbnRTaXplZFRyYWNrc0luZGV4LnNocmluaygwKTsKICAgICBtX2ZsZXhpYmxlU2l6ZWRUcmFj
a3NJbmRleC5zaHJpbmsoMCk7CiAgICAgbV9hdXRvU2l6ZWRUcmFja3NGb3JTdHJldGNoSW5kZXgu
c2hyaW5rKDApOwotICAgIHNldEF2YWlsYWJsZVNwYWNlKEZvclJvd3MsIFdURjo6bnVsbG9wdCk7
Ci0gICAgc2V0QXZhaWxhYmxlU3BhY2UoRm9yQ29sdW1ucywgV1RGOjpudWxsb3B0KTsKKyAgICBz
ZXRBdmFpbGFibGVTcGFjZShGb3JSb3dzLCBzdGQ6Om51bGxvcHQpOworICAgIHNldEF2YWlsYWJs
ZVNwYWNlKEZvckNvbHVtbnMsIHN0ZDo6bnVsbG9wdCk7CiAgICAgbV9oYXNQZXJjZW50U2l6ZWRS
b3dzSW5kZWZpbml0ZUhlaWdodCA9IGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgKaW5kZXggNmI3OTdlYTg3ODU0
MDlkZGViMThhMDU5ZjQxNjBkNTVkNjVkNThmZi4uM2VkMDVlNGZkNWQ4MjlhNDE1MGRlOTUwOTFj
M2IwYjMyYmFkMmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRU
cmFja1NpemluZ0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0uaApAQCAtMjcyLDcgKzI3Miw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0R3JpZEl0ZW1Gb3JNaW5TaXplQ29tcHV0YXRpb24oUmVuZGVy
Qm94JiwgYm9vbCBvdmVycmlkZVNpemVIYXNDaGFuZ2VkKSBjb25zdCA9IDA7CiAKICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gmKSBjb25zdDsKLSAgICBib29s
IHVwZGF0ZU92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50U2l6ZUZvckNoaWxkKFJlbmRl
ckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gPSBX
VEY6Om51bGxvcHQpIGNvbnN0OworICAgIGJvb2wgdXBkYXRlT3ZlcnJpZGluZ0NvbnRhaW5pbmdC
bG9ja0NvbnRlbnRTaXplRm9yQ2hpbGQoUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uLCBPcHRpb25hbDxMYXlvdXRVbml0PiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CiAKICAgICAv
LyBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0gYWNjZXNzb3JzIGZvciBzdWJjbGFzc2VzLgogICAg
IExheW91dFVuaXQgY29tcHV0ZVRyYWNrQmFzZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbGdv
cml0aG0uY29tcHV0ZVRyYWNrQmFzZWRTaXplKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCAyYmMxOWQxZTRkYWU2
MDA0YjM1MjA0OGEwNGE1ZmYxYTFiMTA5YTFhLi44OWFiY2E5YTRmMTA0ZDQ1NTc4Mjg3ZDkxZDg3
OGI1YjA2NmRhZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8SW50ZXJw
b2xhdGlvblF1YWxpdHk+IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmludGVycG9sYXRpb25RdWFs
aXR5RnJvbVMKICAgICBjYXNlIEltYWdlUmVuZGVyaW5nOjpBdXRvOgogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBJbnRlcnBvbGF0aW9uUXVhbGl0eSBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpjaG9v
c2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlJiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNv
bnN0IExheW91dFNpemUmIHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5k
ZXggOGU5OWM5NDEyZWM0MDQ2MzUzNzE3NmZkZTQyZmIzY2YxZGJkZTFkMC4uZDY0YzcyMzQ1MmZj
MzdiNzM3YWM5YTA4MWY5YmYxNzI4YWQ1ZjI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVCb3guaApAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVQ
YXJlbnRDaGlsZExpc3QoKTsKICNlbmRpZgogCi0gICAgYm9vbCB2aXNpYmxlVG9IaXRUZXN0aW5n
KE9wdGlvbmFsPEhpdFRlc3RSZXF1ZXN0PiBoaXRUZXN0UmVxdWVzdCA9IFdURjo6bnVsbG9wdCkg
Y29uc3QKKyAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9uYWw8SGl0VGVzdFJlcXVl
c3Q+IGhpdFRlc3RSZXF1ZXN0ID0gc3RkOjpudWxsb3B0KSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJs
ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcAppbmRleCAzYjE3NGZiZGJlM2IwNjg4ZTY2ZGMwNThkOThkYzJhNGM3
ZmNkNzE5Li41YTc0OTI2MDc0YmQxYzEyNzI2ZjcwYWIxMzM2M2FjZWZhNGU1M2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zOTYsNyArMzk2LDcg
QEAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lVGV4dEJveDo6ZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNB
Ym92ZShjb25zdCBSZW5kZXJTdHlsZSYgc3QKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVy
bnMgdHJ1ZSBpZiB0aGVyZSBhcmUgdGV4dCBlbXBoYXNpcyBtYXJrcyBhbmQgdGhleSBhcmUgc3Vw
cHJlc3NlZCBieSBydWJ5IHRleHQuCiAgICAgaWYgKHN0eWxlLnRleHRFbXBoYXNpc01hcmsoKSA9
PSBUZXh0RW1waGFzaXNNYXJrOjpOb25lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgT3B0aW9uU2V0PFRleHRF
bXBoYXNpc1Bvc2l0aW9uPiBob3Jpem9udGFsTWFzayB7IFRleHRFbXBoYXNpc1Bvc2l0aW9uOjpM
ZWZ0LCBUZXh0RW1waGFzaXNQb3NpdGlvbjo6UmlnaHQgfTsKIApAQCAtNDI4LDcgKzQyOCw3IEBA
IE9wdGlvbmFsPGJvb2w+IElubGluZVRleHRCb3g6OmVtcGhhc2lzTWFya0V4aXN0c0FuZElzQWJv
dmUoY29uc3QgUmVuZGVyU3R5bGUmIHN0CiAKICAgICAvLyBUaGUgZW1waGFzaXMgbWFya3Mgb3Zl
ciBhcmUgc3VwcHJlc3NlZCBvbmx5IGlmIHRoZXJlIGlzIGEgcnVieSB0ZXh0IGJveCBhbmQgaXQg
bm90IGVtcHR5LgogICAgIGlmIChydWJ5VGV4dCAmJiBydWJ5VGV4dC0+aGFzTGluZXMoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBpc0Fib3ZlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5o
CmluZGV4IDRkYjVhNDdjMTA1MmM3ZDJlOTBhZmI5OTcwYzYzN2I0M2RmYWRiZDguLjUxZWY0MWRj
ZmQ1ZTVkMTJhOWFiNTZkYmZiNTI0NDBjODUwY2Q3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UGFpbnRJbmZvLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAg
ICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAgICBG
bG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJl
Y3Quc2V0TG9jYXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwog
ICAgICAgICByZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA3ZmZm
ZTZiYzBiYTJmMzViM2ExNTkzOGVlNWU5ZDVlZDQxMTAyZWQ1Li43MTBjMTAxZjIzZDFkMDY4ODhm
Y2EzZjQyMzRiNzRlNzIxYjk0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI1NzksNyArMjU3OSw3IEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1p
bkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiBP
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAogewogICAgIGlmIChzaG91bGRBcHBseUxheW91dENvbnRhaW5tZW50KCp0aGlzKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CkBAIC0yNzUxLDcgKzI3NTEsNyBAQCBib29sIFJl
bmRlckJsb2NrOjpjYWNoZWRFbmNsb3NpbmdGcmFnbWVudGVkRmxvd05lZWRzVXBkYXRlKCkgY29u
c3QKIHZvaWQgUmVuZGVyQmxvY2s6OnNldENhY2hlZEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93TmVl
ZHNVcGRhdGUoKQogewogICAgIFJlbmRlckJsb2NrUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJl
QmxvY2tSYXJlRGF0YSgqdGhpcyk7Ci0gICAgcmFyZURhdGEubV9lbmNsb3NpbmdGcmFnbWVudGVk
RmxvdyA9IFdURjo6bnVsbG9wdDsKKyAgICByYXJlRGF0YS5tX2VuY2xvc2luZ0ZyYWdtZW50ZWRG
bG93ID0gc3RkOjpudWxsb3B0OwogfQogCiBSZW5kZXJGcmFnbWVudGVkRmxvdyogUmVuZGVyQmxv
Y2s6OnVwZGF0ZUNhY2hlZEVuY2xvc2luZ0ZyYWdtZW50ZWRGbG93KFJlbmRlckZyYWdtZW50ZWRG
bG93KiBmcmFnbWVudGVkRmxvdykgY29uc3QKQEAgLTMyNDQsNyArMzI0NCw3IEBAIE9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9yUGVyY2Vu
dGFnZUNvbXB1dGF0aW9uCiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG92ZXJyaWRpbmdDb250
ZW50TG9naWNhbEhlaWdodCgpOwogICAgIGVsc2UgaWYgKHN0eWxlVG9Vc2UubG9naWNhbEhlaWdo
dCgpLmlzRml4ZWQoKSkgewogICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRCb3hIZWlnaHQgPSBh
ZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZygoTGF5b3V0VW5pdClzdHls
ZVRvVXNlLmxvZ2ljYWxIZWlnaHQoKS52YWx1ZSgpKTsKLSAgICAgICAgYXZhaWxhYmxlSGVpZ2h0
ID0gc3RkOjptYXgoMF9sdSwgY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1h
eChjb250ZW50Qm94SGVpZ2h0IC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCBXVEY6Om51bGxv
cHQpKTsKKyAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gc3RkOjptYXgoMF9sdSwgY29uc3RyYWlu
Q29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94SGVpZ2h0IC0gc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpLCBzdGQ6Om51bGxvcHQpKTsKICAgICB9IGVsc2UgaWYgKHNob3Vs
ZENvbXB1dGVMb2dpY2FsSGVpZ2h0RnJvbUFzcGVjdFJhdGlvKCkpIHsKICAgICAgICAgYXZhaWxh
YmxlSGVpZ2h0ID0gYmxvY2tTaXplRnJvbUFzcGVjdFJhdGlvKGhvcml6b250YWxCb3JkZXJBbmRQ
YWRkaW5nRXh0ZW50KCksIHZlcnRpY2FsQm9yZGVyQW5kUGFkZGluZ0V4dGVudCgpLCBMYXlvdXRV
bml0KHN0eWxlKCkubG9naWNhbEFzcGVjdFJhdGlvKCkpLCBzdHlsZSgpLmJveFNpemluZ0ZvckFz
cGVjdFJhdGlvKCksIGxvZ2ljYWxXaWR0aCgpKTsKICAgICB9IGVsc2UgaWYgKGlzT3V0T2ZGbG93
UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKQEAgLTMyNjAsNyArMzI2MCw3IEBAIE9w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0Rm9y
UGVyY2VudGFnZUNvbXB1dGF0aW9uCiAgICAgICAgICAgICAvLyBoYW5kbGUgdGhlIG1pbi9tYXgg
b2YgdGhlIGN1cnJlbnQgYmxvY2ssIGl0cyBjYWxsZXIgZG9lcy4gU28gdGhlCiAgICAgICAgICAg
ICAvLyByZXR1cm4gdmFsdWUgZnJvbSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBub3QgaGF2ZSBi
ZWVuIGFkanVzdGVkCiAgICAgICAgICAgICAvLyB5ZXQuCi0gICAgICAgICAgICBMYXlvdXRVbml0
IGNvbnRlbnRCb3hIZWlnaHQgPSBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5TWlu
TWF4KGNvbnRlbnRCb3hIZWlnaHRXaXRoU2Nyb2xsYmFyIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdo
dCgpLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94SGVp
Z2h0ID0gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChjb250ZW50Qm94
SGVpZ2h0V2l0aFNjcm9sbGJhciAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSwgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHN0ZDo6bWF4KDBfbHUsIGNvbnRl
bnRCb3hIZWlnaHQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpc1JlbmRlclZpZXcoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMTRh
YmY2YmViZGNhOWMwMjlhZWQ1MGU4N2QxNzI3NWIzNTMyNTQ1Mi4uNjJkZTQxNjViNjEzZWMzY2Yw
OTM4ZGQxYzA3Y2Y1OWNjNDE0MWU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMzMsMTYgKzMxMzMsMTYgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKExheW91dFVuaXQgbG9naWNhbFRvcCwg
TGF5b3V0VW4KIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1
YnlSdW4oKSAmJiAhaXNHcmlkSXRlbSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHNob3VsZEFwcGx5TGF5b3V0
Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFjaGlsZHJlbklubGluZSgpKQogICAg
ICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7CiAKICAgICBpZiAo
IWhhc0xpbmVzKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkK
ICAgICBpZiAobW9kZXJuTGluZUxheW91dCgpKQpAQCAtMzE1OCw3ICszMTU4LDcgQEAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNX
cml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc2hvdWxkQXBw
bHlMYXlvdXRDb250YWlubWVudCgqdGhpcykpCiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6
aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKQEAgLTMxNjgsNyArMzE2OCw3IEBA
IE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lCiAgICAgICAgIC8vIHByb3BlcnR5IGhhcyBhIGNvbXB1
dGVkIHZhbHVlIG90aGVyIHRoYW4gJ3Zpc2libGUnLiBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RS
L0NTUzIyL3Zpc3VkZXQuaHRtbAogICAgICAgICBhdXRvIHNob3VsZFN5bnRoZXNpemVCYXNlbGlu
ZSA9ICFzdHlsZSgpLmlzT3ZlcmZsb3dWaXNpYmxlKCkgJiYgIWlzPEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ+KGVsZW1lbnQoKSk7CiAgICAgICAgIGlmIChzaG91bGRTeW50aGVzaXplQmFzZWxpbmUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgLy8gTm90ZSB0aGF0IGhlcmUgd2Ugb25seSB0YWtlIHRo
ZSBsZWZ0IGFuZCBib3R0b20gaW50byBjb25zaWRlcmF0aW9uLiBPdXIgY2FsbGVyIHRha2VzIHRo
ZSByaWdodCBhbmQgdG9wIGludG8gY29uc2lkZXJhdGlvbi4KICAgICBmbG9hdCBib3hIZWlnaHQg
PSBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqdGhpcywgbGluZURpcmVjdGlvbikg
KyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LmJvdHRvbSgp
IDogbV9tYXJnaW5Cb3gubGVmdCgpKTsKQEAgLTMxODEsNyArMzE4MSw3IEBAIE9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSBsaW5lCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFoYXNMaW5lcygpKSB7CiAg
ICAgICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICAgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRN
ZXRyaWNzKCk7CiAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQoZm9u
dE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxp
bmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
aW5kZXggYzdjOTQ2YmFmZDgxNWE0NzRkNzIzODhiNzdlMjIzODlmNDQ2Y2NjNC4uNmE0MmFhYWQ0
MWM1NWQ0NWE1MzFiYTVhMDBmNjA1MTBhZWEzY2JiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjczLDcgKzI3Myw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJNdWx0aUNvbHVtbkZsb3cqIG11bHRpQ29sdW1uRmxvd1Nsb3dDYXNlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3coUmVuZGVyTXVsdGlDb2x1bW5GbG93Jik7CiAgICAg
dm9pZCBjbGVhck11bHRpQ29sdW1uRmxvdygpOwotICAgIGJvb2wgd2lsbENyZWF0ZUNvbHVtbnMo
T3B0aW9uYWw8dW5zaWduZWQ+IGRlc2lyZWRDb2x1bW5Db3VudCA9IFdURjo6bnVsbG9wdCkgY29u
c3Q7CisgICAgYm9vbCB3aWxsQ3JlYXRlQ29sdW1ucyhPcHRpb25hbDx1bnNpZ25lZD4gZGVzaXJl
ZENvbHVtbkNvdW50ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNDb2x1bW5zKGludCkgY29uc3Q7CiAKICAgICBib29sIGNvbnRhaW5zRmxvYXRzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmpl
Y3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggMzgyNTkyNzc3M2NjZmFjY2U1NzhmNWY2OThhN2M2YmZlYjNlM2FkOC4uZGJhODg4
NmI5YzZiNDFmOGE0MzRkYTI5YzcxYWMyZDNlZDlmNmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTIwNDMsNyArMjA0Myw3IEBAIExheW91dFVuaXQgUmVuZGVy
Qm94OjpzaHJpbmtMb2dpY2FsV2lkdGhUb0F2b2lkRmxvYXRzKExheW91dFVuaXQgY2hpbGRNYXJn
aW5TdGFyCiBMYXlvdXRVbml0IFJlbmRlckJveDo6Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRo
Rm9yQ29udGVudCgpIGNvbnN0CiB7CiAgICAgaWYgKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbFdpZHRoKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpLnZhbHVlT3IoMF9sdSk7CisgICAgICAgIHJl
dHVybiBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aCgpLnZhbHVl
X29yKDBfbHUpOwogCiAgICAgaWYgKFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygp
KQogICAgICAgICByZXR1cm4gY2ItPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwpAQCAtMjA1NCw3
ICsyMDU0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxI
ZWlnaHRGb3JDb250ZW50KEF2YWlsYWJsZUxvZ2ljYWxIZWkKIHsKICAgICBpZiAoaGFzT3ZlcnJp
ZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAgICAgLy8g
RklYTUU6IENvbnRhaW5pbmcgYmxvY2sgZm9yIGEgZ3JpZCBpdGVtIGlzIHRoZSBncmlkIGFyZWEg
aXQncyBsb2NhdGVkIGluLiBXZSBuZWVkIHRvIHJldHVybiB3aGF0ZXZlcgotICAgICAgICAvLyBo
ZWlnaHQgdmFsdWUgd2UgZ2V0IGZyb20gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRM
b2dpY2FsSGVpZ2h0KCkgaGVyZSwgaW5jbHVkaW5nIFdURjo6bnVsbG9wdC4KKyAgICAgICAgLy8g
aGVpZ2h0IHZhbHVlIHdlIGdldCBmcm9tIG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50
TG9naWNhbEhlaWdodCgpIGhlcmUsIGluY2x1ZGluZyBzdGQ6Om51bGxvcHQuCiAgICAgICAgIGlm
IChhdXRvIGhlaWdodCA9IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhl
aWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGhlaWdodC52YWx1ZSgpOwogICAgIH0KQEAgLTI0
MjgsNyArMjQyOCw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckJveDo6Y29tcHV0ZVZp
c2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgYm9vbCBpc0Vt
cHR5ID0gIWNvbnRhaW5lckJveC5hcHBseUNhY2hlZENsaXBBbmRTY3JvbGxQb3NpdGlvbihhZGp1
c3RlZFJlY3QsIGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgICAgIGlmIChpc0VtcHR5KSB7CiAg
ICAgICAgICAgICBpZiAoY29udGV4dC5vcHRpb25zLmNvbnRhaW5zKFZpc2libGVSZWN0Q29udGV4
dE9wdGlvbjo6VXNlRWRnZUluY2x1c2l2ZUludGVyc2VjdGlvbikpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICAgICAgcmV0dXJuIGFkanVzdGVkUmVjdDsKICAgICAgICAgfQogICAgIH0KQEAg
LTI5NTYsNyArMjk1Niw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVz
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pCiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChpbnRyaW5zaWNIZWlnaHQpCiAgICAgICAgICAg
ICAgICAgICAgICppbnRyaW5zaWNIZWlnaHQgLT0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWln
aHQoKTsKLSAgICAgICAgICAgICAgICBoZWlnaHRSZXN1bHQgPSBjb21wdXRlTG9naWNhbEhlaWdo
dFVzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkubG9naWNhbEhlaWdodCgpLCBpbnRy
aW5zaWNIZWlnaHQpLnZhbHVlT3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOworICAgICAgICAg
ICAgICAgIGhlaWdodFJlc3VsdCA9IGNvbXB1dGVMb2dpY2FsSGVpZ2h0VXNpbmcoTWFpbk9yUHJl
ZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGludHJpbnNpY0hlaWdodCkudmFs
dWVfb3IoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaGVpZ2h0UmVzdWx0ID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KGhlaWdodFJl
c3VsdCwgaW50cmluc2ljSGVpZ2h0KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTMwMDcsMTQgKzMw
MDcsMTQgQEAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhl
aWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUsIGMKIHsKICAgICBpZiAoT3B0aW9uYWw8TGF5
b3V0VW5pdD4gbG9naWNhbEhlaWdodCA9IGNvbXB1dGVDb250ZW50QW5kU2Nyb2xsYmFyTG9naWNh
bEhlaWdodFVzaW5nKGhlaWdodFR5cGUsIGhlaWdodCwgaW50cmluc2ljQ29udGVudEhlaWdodCkp
CiAgICAgICAgIHJldHVybiBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5n
KGxvZ2ljYWxIZWlnaHQudmFsdWUoKSk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6
OmNvbXB1dGVDb250ZW50TG9naWNhbEhlaWdodChTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBM
ZW5ndGgmIGhlaWdodCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdo
dCkgY29uc3QKIHsKICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0SW5jbHVkaW5n
U2Nyb2xsYmFyID0gY29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmco
aGVpZ2h0VHlwZSwgaGVpZ2h0LCBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KDAsIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0
Rm9yQm94U2l6aW5nKGhlaWdodEluY2x1ZGluZ1Njcm9sbGJhcikgLSBzY3JvbGxiYXJMb2dpY2Fs
SGVpZ2h0KCkpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmlu
c2ljTG9naWNhbENvbnRlbnRIZWlnaHRVc2luZyhMZW5ndGggbG9naWNhbEhlaWdodExlbmd0aCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW50cmluc2ljQ29udGVudEhlaWdodCwgTGF5b3V0VW5pdCBi
b3JkZXJBbmRQYWRkaW5nKSBjb25zdApAQCAtMzAzNSw3ICszMDM1LDcgQEAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyQm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbENvbnRlbnRIZWlnaHRV
c2luZyhMZW5ndGgKIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRl
bnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVpZ2h0VXNpbmcoU2l6ZVR5cGUgaGVpZ2h0VHlwZSwgY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNpY0NvbnRlbnRI
ZWlnaHQpIGNvbnN0CiB7CiAgICAgaWYgKGhlaWdodC5pc0F1dG8oKSkKLSAgICAgICAgcmV0dXJu
IGhlaWdodFR5cGUgPT0gTWluU2l6ZSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KDApIDogV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gaGVpZ2h0VHlwZSA9PSBNaW5TaXplID8gT3B0aW9uYWw8
TGF5b3V0VW5pdD4oMCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgLy8gRklYTUU6IFRoZSBDU1Mgc2l6
aW5nIHNwZWMgaXMgY29uc2lkZXJpbmcgY2hhbmdpbmcgd2hhdCBtaW4tY29udGVudC9tYXgtY29u
dGVudCBzaG91bGQgcmVzb2x2ZSB0by4KICAgICAvLyBJZiB0aGF0IGhhcHBlbnMsIHRoaXMgY29k
ZSB3aWxsIGhhdmUgdG8gY2hhbmdlLgogICAgIGlmIChoZWlnaHQuaXNJbnRyaW5zaWMoKSB8fCBo
ZWlnaHQuaXNNaW5JbnRyaW5zaWMoKSkKQEAgLTMwNDQsNyArMzA0NCw3IEBAIE9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUNvbnRlbnRBbmRTY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0VXNpbmcoU2l6CiAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KGhlaWdodC52YWx1ZSgpKTsK
ICAgICBpZiAoaGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4g
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGhlaWdodCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBib29sIFJlbmRlckJveDo6
c2tpcENvbnRhaW5pbmdCbG9ja0ZvclBlcmNlbnRIZWlnaHRDYWxjdWxhdGlvbihjb25zdCBSZW5k
ZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgYm9vbCBpc1BlcnBlbmRpY3VsYXJXcml0aW5nTW9kZSkg
Y29uc3QKQEAgLTMxMzEsNyArMzEzMSw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJv
eDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpCiAgICAg
ICAgICAgICAvLyBkb24ndCBjYXJlIGlmIHRoZSBjZWxsIHNwZWNpZmllZCBhIGhlaWdodCBvciBu
b3QuIFdlIGp1c3QgYWx3YXlzIG1ha2Ugb3Vyc2VsdmVzCiAgICAgICAgICAgICAvLyBiZSBhIHBl
cmNlbnRhZ2Ugb2YgdGhlIGNlbGwncyBjdXJyZW50IGNvbnRlbnQgaGVpZ2h0LgogICAgICAgICAg
ICAgaWYgKCFjYi0+aGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGFibGVDZWxsU2hvdWxkSGF2ZVplcm9Jbml0aWFsU2l6ZSgqY2IsICp0aGlzLCBz
Y3JvbGxzT3ZlcmZsb3dZKCkpID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oMCkgOiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlQ2VsbFNob3VsZEhhdmVaZXJvSW5pdGlh
bFNpemUoKmNiLCAqdGhpcywgc2Nyb2xsc092ZXJmbG93WSgpKSA/IE9wdGlvbmFsPExheW91dFVu
aXQ+KDApIDogc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBj
Yi0+b3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdCZWZv
cmUoKSAtIGNiLT5jb21wdXRlZENTU1BhZGRpbmdBZnRlcigpIC0gY2ItPmJvcmRlckJlZm9yZSgp
IC0gY2ItPmJvcmRlckFmdGVyKCk7CiAgICAgICAgIH0KQEAgLTMyNzQsNyArMzI3NCw3IEBAIGJv
b2wgUmVuZGVyQm94OjpyZXBsYWNlZE1pbk1heExvZ2ljYWxIZWlnaHRDb21wdXRlc0FzTm9uZShT
aXplVHlwZSBzaXplVHlwZSkgY29uCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGlm
IChsb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpICYmIGhhc092ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKQotICAgICAgICByZXR1cm4gb3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgPT0gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCkgPT0gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gTWFrZSBzdXJlICUgbWluLWhl
aWdodCBhbmQgJSBtYXgtaGVpZ2h0IHJlc29sdmUgdG8gbm9uZSBpZiB0aGUgY29udGFpbmluZyBi
bG9jayBoYXMgYXV0byBoZWlnaHQuCiAgICAgLy8gTm90ZSB0aGF0IHRoZSAiaGVpZ2h0IiBjYXNl
IGZvciByZXBsYWNlZCBlbGVtZW50cyB3YXMgaGFuZGxlZCBieSBoYXNSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQsIHdoaWNoIGlzIHdoeQpAQCAtMzM3OSw3ICszMzc5LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCb3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRU
eXBlLCBMZW4KIAogTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQo
QXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29uc3RyYWluQ29udGVudEJveExvZ2ljYWxIZWlnaHRCeU1pbk1heChhdmFpbGFibGVMb2dp
Y2FsSGVpZ2h0VXNpbmcoc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIGhlaWdodFR5cGUpLCBXVEY6
Om51bGxvcHQpOworICAgIHJldHVybiBjb25zdHJhaW5Db250ZW50Qm94TG9naWNhbEhlaWdodEJ5
TWluTWF4KGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhzdHlsZSgpLmxvZ2ljYWxIZWlnaHQo
KSwgaGVpZ2h0VHlwZSksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQm94
OjphdmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVM
b2dpY2FsSGVpZ2h0VHlwZSBoZWlnaHRUeXBlKSBjb25zdApAQCAtMzQwNSw3ICszNDA1LDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyhjb25zdCBM
ZW5ndGgmIGgsIEF2YWlsYWJsZUxvZ2kKICAgICAgICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hM
b2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKHZhbHVlRm9yTGVuZ3RoKGgsIGF2YWlsYWJsZUhlaWdo
dCkpOwogICAgIH0KIAotICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRp
bmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudEFuZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2lu
ZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBXVEY6Om51bGxvcHQpKQorICAgIGlmIChPcHRpb25h
bDxMYXlvdXRVbml0PiBoZWlnaHRJbmNsdWRpbmdTY3JvbGxiYXIgPSBjb21wdXRlQ29udGVudEFu
ZFNjcm9sbGJhckxvZ2ljYWxIZWlnaHRVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBoLCBzdGQ6
Om51bGxvcHQpKQogICAgICAgICByZXR1cm4gc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgYWRqdXN0
Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcoaGVpZ2h0SW5jbHVkaW5nU2Nyb2xs
YmFyKSAtIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAvLyBGSVhNRTogQ2hlY2sg
bG9naWNhbFRvcC9sb2dpY2FsQm90dG9tIGhlcmUgdG8gY29ycmVjdGx5IGhhbmRsZSB2ZXJ0aWNh
bCB3cml0aW5nLW1vZGUuCkBAIC00ODUwLDcgKzQ4NTAsNyBAQCBib29sIFJlbmRlckJveDo6cGVy
Y2VudGFnZUxvZ2ljYWxIZWlnaHRJc1Jlc29sdmFibGUoKSBjb25zdAogICAgIC8vIERvIHRoaXMg
dG8gYXZvaWQgZHVwbGljYXRpbmcgYWxsIHRoZSBsb2dpYyB0aGF0IGFscmVhZHkgZXhpc3RzIHdo
ZW4gY29tcHV0aW5nCiAgICAgLy8gYW4gYWN0dWFsIHBlcmNlbnRhZ2UgaGVpZ2h0LgogICAgIExl
bmd0aCBmYWtlTGVuZ3RoKDEwMCwgTGVuZ3RoVHlwZTo6UGVyY2VudCk7Ci0gICAgcmV0dXJuIGNv
bXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChmYWtlTGVuZ3RoKSAhPSBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChmYWtlTGVuZ3RoKSAh
PSBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgUmVuZGVyQm94OjpoYXNVbnNwbGl0dGFibGVTY3Jv
bGxpbmdPdmVyZmxvdygpIGNvbnN0CkBAIC01MTgxLDggKzUxODEsOCBAQCBMYXlvdXRVbml0IFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbyhSZW5kZXJGcmFnbWVu
dENvbnRhaW5lcgogc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJveDo6
Y29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpIGNvbnN0CiB7CiAgICAg
YXV0byByYXRpbyA9IExheW91dFVuaXQgeyBzdHlsZSgpLmxvZ2ljYWxBc3BlY3RSYXRpbygpIH07
Ci0gICAgTGF5b3V0VW5pdCBibG9ja01pblNpemUgPSBjb25zdHJhaW5Mb2dpY2FsSGVpZ2h0QnlN
aW5NYXgoTGF5b3V0VW5pdCgpLCBXVEY6Om51bGxvcHQpOwotICAgIExheW91dFVuaXQgYmxvY2tN
YXhTaXplID0gY29uc3RyYWluTG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQ6Om1heCgp
LCBXVEY6Om51bGxvcHQpOworICAgIExheW91dFVuaXQgYmxvY2tNaW5TaXplID0gY29uc3RyYWlu
TG9naWNhbEhlaWdodEJ5TWluTWF4KExheW91dFVuaXQoKSwgc3RkOjpudWxsb3B0KTsKKyAgICBM
YXlvdXRVbml0IGJsb2NrTWF4U2l6ZSA9IGNvbnN0cmFpbkxvZ2ljYWxIZWlnaHRCeU1pbk1heChM
YXlvdXRVbml0OjptYXgoKSwgc3RkOjpudWxsb3B0KTsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVy
cmVkTWluU2l6ZSA9IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHRyYW5zZmVycmVkTWF4
U2l6ZSA9IExheW91dFVuaXQ6Om1heCgpOwogICAgIGlmIChibG9ja01pblNpemUgPiBMYXlvdXRV
bml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZGZhYzAwOWJiYTQ2
NDBhMGQyMGZkZGZkYmZkYWY1ZjcwN2VkMmJhZS4uMWRkNjg4ODQxZmYxYTMyMjQyNjJhNDNhOGVh
ZDM4N2ExNjFjNTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDUy
LDcgKzQ1Miw3IEBAIG92ZXJyaWRlOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IExheW91dFVu
aXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFJlc3BlY3RpbmdNaW5NYXhIZWlnaHQoVCBs
b2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
UmVzcGVjdGluZ01pbk1heEhlaWdodChMYXlvdXRVbml0KGxvZ2ljYWxIZWlnaHQpKTsgfQogCiAg
ICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRD
b21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KE9wdGlvbmFsPExheW91dFVuaXQ+
IGVzdGltYXRlZFVzZWRXaWR0aCA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdDsKIAogICAgIGVudW0g
Y2xhc3MgVXBkYXRlUGVyY2VudGFnZUhlaWdodERlc2NlbmRhbnRzIHsgWWVzICwgTm8gfTsKICAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlUGVyY2VudGFnZUxvZ2ljYWxIZWlnaHQoY29u
c3QgTGVuZ3RoJiBoZWlnaHQsIFVwZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50cyA9IFVw
ZGF0ZVBlcmNlbnRhZ2VIZWlnaHREZXNjZW5kYW50czo6WWVzKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDE0M2Ez
NTljYmFlODhlM2UzYzZiM2M2YTdjNzM1YmNmZmM1NWU0ZTcuLjg3MTFiYjk1ZWUzZGM2Nzk0N2Uz
Mjk3MWIxYmU5ZWI3ZWViMmMzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIGJvb2wgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6Omhhc0F1dG9IZWlnaHRPckNvbnRhaW5pbmdCbG9ja1dpdGhBdXRvSGVp
Z2h0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICh0aGlzQm94
ICYmIHRoaXNCb3gtPmlzR3JpZEl0ZW0oKSAmJiB0aGlzQm94LT5oYXNPdmVycmlkaW5nQ29udGFp
bmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuIHRoaXNCb3gt
Pm92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRoaXNCb3gtPm92ZXJyaWRpbmdDb250YWluaW5nQmxv
Y2tDb250ZW50TG9naWNhbEhlaWdodCgpID09IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAo
bG9naWNhbEhlaWdodExlbmd0aC5pc0F1dG8oKSAmJiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0
aEltcGxpY2l0SGVpZ2h0KCp0aGlzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yODksNyAr
Mjg5LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzQXV0b0hlaWdodE9yQ29udGFp
bmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25zdAogICAgIGlmICghY2IgfHwgKGRvY3VtZW50
KCkuaW5RdWlya3NNb2RlKCkgJiYgIWNiLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5nRGVwcmVjYXRl
ZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0aGlzQm94ICYmIHRoaXNCb3gt
Pmhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50TG9naWNhbEhlaWdodCgpKQotICAg
ICAgICByZXR1cm4gdGhpc0JveC0+b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dp
Y2FsSGVpZ2h0KCkgPT0gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gdGhpc0JveC0+b3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsSGVpZ2h0KCkgPT0gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiAhY2ItPmhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpOwogfQogCkBA
IC0zNDgsNyArMzQ4LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRp
dmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3Jn
L2Nzcy1ncmlkLyNncmlkLWl0ZW0tc2l6aW5nCiAgICAgaWYgKCFzdHlsZSgpLmxlZnQoKS5pc0F1
dG8oKSB8fCAhc3R5bGUoKS5yaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIExheW91dFVuaXQg
YXZhaWxhYmxlV2lkdGggPSBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRo
KCkKLSAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgp
LnZhbHVlT3IoTGF5b3V0VW5pdCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVXaWR0
aCgpOworICAgICAgICAgICAgPyBvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRo
KCkudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVX
aWR0aCgpOwogICAgICAgICBpZiAoIXN0eWxlKCkubGVmdCgpLmlzQXV0bygpKSB7CiAgICAgICAg
ICAgICBpZiAoIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSAmJiAhY29udGFpbmluZ0Jsb2NrKCkt
PnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgICAgIG9mZnNl
dC5zZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5yaWdodCgpLCAhc3R5bGUoKS5yaWdo
dCgpLmlzRml4ZWQoKSA/IGF2YWlsYWJsZVdpZHRoIDogMF9sdSkpOwpAQCAtMzc1LDcgKzM3NSw3
IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZz
ZXQoKSBjb25zdAogICAgICAgICAvLyBXZSBjb3VsZCByZWZhY3RvciB0aGlzIGFuZCBtb3ZlIGl0
IHRvIHNvbWUgY29tbW9uIGNvZGUgZm9yIGJvdGggaWZzLCBob3dldmVyIG1vdmluZyBpdCBvdXRz
aWRlIG9mIHRoZSBpZnMKICAgICAgICAgLy8gaXMgbm90IHBvc3NpYmxlIGFzIGl0J2QgY2F1c2Ug
cGVyZm9ybWFuY2UgcmVncmVzc2lvbnMuCiAgICAgICAgIG9mZnNldC5leHBhbmQoMF9sdSwgdmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS50b3AoKSwgIXN0eWxlKCkudG9wKCkuaXNGaXhlZCgpCi0gICAg
ICAgICAgICA/IChoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpID8g
b3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKS52YWx1ZU9yKDBfbHUpIDog
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQorICAgICAgICAgICAgPyAoaGFz
T3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRIZWlnaHQoKSA/IG92ZXJyaWRpbmdDb250
YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkudmFsdWVfb3IoMF9sdSkgOiBjb250YWluaW5nQmxv
Y2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkpCiAgICAgICAgICAgICA6IExheW91dFVuaXQoKSkpOwog
ICAgIH0gZWxzZSBpZiAoIXN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkKICAgICAgICAgJiYgKCFz
dHlsZSgpLmJvdHRvbSgpLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpCkBAIC0zODQsNyArMzg0LDcg
QEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNl
dCgpIGNvbnN0CiAgICAgICAgICAgICB8fCBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29u
dGVudEhlaWdodCgpKSkgewogICAgICAgICAvLyBGSVhNRTogQ2hlY2sgY29tbWVudCBhYm92ZSBm
b3IgInRvcCIsIGl0IGFwcGxpZXMgaGVyZSB0b28uCiAgICAgICAgIG9mZnNldC5leHBhbmQoMF9s
dSwgLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuYm90dG9tKCksICFzdHlsZSgpLmJvdHRvbSgpLmlz
Rml4ZWQoKQotICAgICAgICAgICAgPyAoaGFzT3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRl
bnRIZWlnaHQoKSA/IG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkudmFs
dWVPcigwX2x1KSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVIZWlnaHQoKSkKKyAgICAg
ICAgICAgID8gKGhhc092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50SGVpZ2h0KCkgPyBv
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudEhlaWdodCgpLnZhbHVlX29yKDBfbHUpIDog
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKQogICAgICAgICAgICAgOiBMYXlv
dXRVbml0KCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5jcHAKaW5kZXggYWU2YjIwMzEyODZlZTcyN2IwNWY4ZDkwNjZhMzM1YmZjN2M0NGM1Ny4uYTA1
ZWQ2M2FmMDNjMmM5ZDM1ZjdkNDM2Mzg5NzZhMDk2N2JmNDNjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBMYXlvdXRVbml0
IFJlbmRlckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgZm9udEJhc2VsaW5l
LCBib29sIGZpcnN0TAogICAgICAgICByZXR1cm4gUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5l
UG9zaXRpb24oZm9udEJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbW9kZSk7CiAgICAg
Ly8gV2UgY2Fubm90IHJlbHkgb24gUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24o
KSBiZWNhdXNlIG9mIGZsZXhib3hlcyBoYXZlIHNvbWUgc3BlY2lhbCBiZWhhdmlvcgogICAgIC8v
IHJlZ2FyZGluZyBiYXNlbGluZXMgdGhhdCBzaG91bGRuJ3QgYXBwbHkgdG8gYnV0dG9ucy4KLSAg
ICBMYXlvdXRVbml0IGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKHN5bnRo
ZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveCgqdGhpcywgZGlyZWN0aW9uKSk7CisgICAgTGF5
b3V0VW5pdCBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVfb3Ioc3ludGhlc2l6
ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KCp0aGlzLCBkaXJlY3Rpb24pKTsKICAgICBMYXlvdXRV
bml0IG1hcmdpbkFzY2VudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRv
cCgpIDogbWFyZ2luUmlnaHQoKTsKICAgICByZXR1cm4gYmFzZWxpbmUgKyBtYXJnaW5Bc2NlbnQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcApp
bmRleCA1YjFhMjg3NDI1ZDA2OTMzN2MwOWY4NTI5MjcyZDE4NDg0ZjE0YTQ1Li40NDBiNzljZDAz
MjQ4OGUxYjdhNzQ2ZjdiNjE4Yzk5MzFlZThhNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgZmxvYXQgUmVu
ZGVyQ29tYmluZVRleHQ6OndpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgRm9udENhc2NhZGUKIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IFJlbmRlckNvbWJpbmVUZXh0Ojpj
b21wdXRlVGV4dE9yaWdpbihjb25zdCBGbG9hdFJlY3QmIGJveFJlY3QpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2lzQ29tYmluZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBWaXN1YWxseSBjZW50ZXIgbV9jb21iaW5l
ZFRleHRXaWR0aC9Bc2NlbnQvRGVzY2VudCB3aXRoaW4gYm94UmVjdAogICAgIEZsb2F0UG9pbnQg
cmVzdWx0ID0gYm94UmVjdC5taW5YTWF4WUNvcm5lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IDQzNjk5ZmVhZDlmNjVjNTk3MmJmZGQ0MjljNzdh
ZWExMDE2YTY5OTAuLmQzYWMwYzM2MWUwY2Y1ZTA1OGQ3ODRjZjIxMDJjYzY5YjZmNGU1OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTEzMSw4ICsx
MzEsOCBAQCBzdGF0aWMgQ291bnRlckRpcmVjdGl2ZXMgbGlzdEl0ZW1Db3VudGVyRGlyZWN0aXZl
cyhSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJl
bmRlcmVyKSkgewogICAgICAgICBhdXRvJiBpdGVtID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+
KHJlbmRlcmVyKTsKICAgICAgICAgaWYgKGF1dG8gZXhwbGljaXRWYWx1ZSA9IGl0ZW0uZXhwbGlj
aXRWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHsgKmV4cGxpY2l0VmFsdWUsIFdURjo6bnVs
bG9wdCB9OwotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIGl0ZW0uaXNJblJldmVyc2Vk
T3JkZXJlZExpc3QoKSA/IC0xIDogMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgKmV4cGxpY2l0
VmFsdWUsIHN0ZDo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIGl0
ZW0uaXNJblJldmVyc2VkT3JkZXJlZExpc3QoKSA/IC0xIDogMSB9OwogICAgIH0KICAgICBpZiAo
YXV0byBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChpczxIVE1M
T0xpc3RFbGVtZW50PigqZWxlbWVudCkpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgQ291
bnRlckRpcmVjdGl2ZXMgbGlzdEl0ZW1Db3VudGVyRGlyZWN0aXZlcyhSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybiB7IGxpc3Quc3RhcnQoKSwgbGlzdC5pc1JldmVy
c2VkKCkgPyAxIDogLTEgfTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNIVE1MTGlzdEVsZW1l
bnQoKmVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIHsgMCwgV1RGOjpudWxsb3B0IH07Cisg
ICAgICAgICAgICByZXR1cm4geyAwLCBzdGQ6Om51bGxvcHQgfTsKICAgICB9CiAgICAgcmV0dXJu
IHsgfTsKIH0KQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q291bnRlclBsYW4+
IHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBBdG9tU3RyaQogICAg
IC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9kZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZl
IGEgY291bnRlci4KICAgICBFbGVtZW50KiBnZW5lcmF0aW5nRWxlbWVudCA9IHJlbmRlcmVyLmdl
bmVyYXRpbmdFbGVtZW50KCk7CiAgICAgaWYgKCFnZW5lcmF0aW5nRWxlbWVudCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKIApAQCAtMTY0LDEzICsxNjQsMTMgQEAg
c3RhdGljIE9wdGlvbmFsPENvdW50ZXJQbGFuPiBwbGFuQ291bnRlcihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgQXRvbVN0cmkKICAgICAgICAgLy8gU29tZXRpbWVzIGVsZW1lbnRzIGhh
dmUgbW9yZSB0aGVuIG9uZSByZW5kZXJlci4gT25seSB0aGUgZmlyc3Qgb25lIGdldHMgdGhlIGNv
dW50ZXIKICAgICAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jc3MvY291bnRlci1jcmFz
aC5odG1sCiAgICAgICAgIGlmIChnZW5lcmF0aW5nRWxlbWVudC0+cmVuZGVyZXIoKSAhPSAmcmVu
ZGVyZXIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6QmVm
b3JlOgogICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OyAvLyBDb3VudGVycyBhcmUgZm9yYmlk
ZGVuIGZyb20gYWxsIG90aGVyIHBzZXVkbyBlbGVtZW50cy4KKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgLy8gQ291bnRlcnMgYXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBwc2V1ZG8g
ZWxlbWVudHMuCiAgICAgfQogCiAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlczsKQEAg
LTE4NywxMCArMTg3LDEwIEBAIHN0YXRpYyBPcHRpb25hbDxDb3VudGVyUGxhbj4gcGxhbkNvdW50
ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEF0b21TdHJpCiAgICAgfQogCiAgICAg
aWYgKGRpcmVjdGl2ZXMucmVzZXRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIENvdW50ZXJQbGFuIHsg
dHJ1ZSwgc2F0dXJhdGVkU3VtPGludD4oKmRpcmVjdGl2ZXMucmVzZXRWYWx1ZSwgZGlyZWN0aXZl
cy5pbmNyZW1lbnRWYWx1ZS52YWx1ZU9yKDApKSB9OworICAgICAgICByZXR1cm4gQ291bnRlclBs
YW4geyB0cnVlLCBzYXR1cmF0ZWRTdW08aW50PigqZGlyZWN0aXZlcy5yZXNldFZhbHVlLCBkaXJl
Y3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlX29yKDApKSB9OwogICAgIGlmIChkaXJlY3RpdmVz
LmluY3JlbWVudFZhbHVlKQogICAgICAgICByZXR1cm4gQ291bnRlclBsYW4geyBmYWxzZSwgKmRp
cmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgfTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC8vIC0gRmluZHMgdGhlIGluc2VydGlvbiBwb2lu
dCBmb3IgdGhlIGNvdW50ZXIgZGVzY3JpYmVkIGJ5IGNvdW50ZXJPd25lciwgaXNSZXNldCBhbmQg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVk
RmxleGlibGVCb3guY3BwCmluZGV4IGZjMGM2NTQ2NzU0NDYwYzhlZWJjMjZlNmRhNzIxOGFkNDI2
MDFmMTguLjk5ZTkxYmI4MWUwNGI0ZjI3ZGI1NmJlZWJiMDVhODI3YTYyMzAxODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3guY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGli
bGVCb3g6OmxheW91dEhvcml6b250YWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogCiAgICAg
ICAgICAgICAvLyBVcGRhdGUgb3VyIGhlaWdodCBhbmQgb3ZlcmZsb3cgaGVpZ2h0LgogICAgICAg
ICAgICAgaWYgKHN0eWxlKCkuYm94QWxpZ24oKSA9PSBCb3hBbGlnbm1lbnQ6OkJhc2VsaW5lKSB7
Ci0gICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFz
ZWxpbmUoKS52YWx1ZU9yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0b20oKSk7
CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBhc2NlbnQgPSBjaGlsZC0+Zmlyc3RMaW5lQmFz
ZWxpbmUoKS52YWx1ZV9vcihjaGlsZC0+aGVpZ2h0KCkgKyBjaGlsZC0+bWFyZ2luQm90dG9tKCkp
OwogICAgICAgICAgICAgICAgIGFzY2VudCArPSBjaGlsZC0+bWFyZ2luVG9wKCk7CiAgICAgICAg
ICAgICAgICAgTGF5b3V0VW5pdCBkZXNjZW50ID0gKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT52
ZXJ0aWNhbE1hcmdpbkV4dGVudCgpKSAtIGFzY2VudDsKIApAQCAtNTE5LDcgKzUxOSw3IEBAIHZv
aWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wg
cmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdp
blRvcCgpICsgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgKGNvbnRlbnRIZWlnaHQoKSAtIChjaGls
ZC0+aGVpZ2h0KCkgKyBjaGlsZC0+dmVydGljYWxNYXJnaW5FeHRlbnQoKSkpIC8gMik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEJveEFsaWdubWVudDo6QmFzZWxp
bmU6IHsKLSAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQtPmhlaWdodCgpICsgY2hpbGQtPm1hcmdpbkJvdHRv
bSgpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLT5maXJzdExp
bmVCYXNlbGluZSgpLnZhbHVlX29yKGNoaWxkLT5oZWlnaHQoKSArIGNoaWxkLT5tYXJnaW5Cb3R0
b20oKSk7CiAgICAgICAgICAgICAgICAgYXNjZW50ICs9IGNoaWxkLT5tYXJnaW5Ub3AoKTsKICAg
ICAgICAgICAgICAgICBjaGlsZFkgKz0gY2hpbGQtPm1hcmdpblRvcCgpICsgKG1heEFzY2VudCAt
IGFzY2VudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaAppbmRleCBiMDcwMDY2MzE3MmU3NmFjMDZiNzg4YTg5NmJjZDgyY2I5
ZWI1MmFhLi5iYmNjYjcxN2E1N2JkM2E1ZGMwMjE4ODZmMTJhOWVkM2QzYjE0MmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS5v
cGFjaXR5KCkgPCAxLjBmOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCkub3BhY2l0eSgpOyB9CiAKLSAgICBib29sIHZpc2libGVUb0hpdFRlc3RpbmcoT3B0aW9u
YWw8SGl0VGVzdFJlcXVlc3Q+IGhpdFRlc3RSZXF1ZXN0ID0gV1RGOjpudWxsb3B0KSBjb25zdAor
ICAgIGJvb2wgdmlzaWJsZVRvSGl0VGVzdGluZyhPcHRpb25hbDxIaXRUZXN0UmVxdWVzdD4gaGl0
VGVzdFJlcXVlc3QgPSBzdGQ6Om51bGxvcHQpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCmluZGV4IGU5MGRjMWE4YWQyYzEyNDA4ZDgwMjY0ZmZkMTdiY2E5MGQyYTkyMzkuLjY3
N2M0NzgyNjc0ZjFmZGUyZmQzNDhmMTVkM2I3OGFjMjVjZDlkODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTE3NCw3ICsxMTc0LDcg
QEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6dXBkYXRlQXV0b01hcmdpbnNJbkNyb3NzQXhpcyhS
ZW5kZXJCb3gmIGNoaWxkLCBMYXlvdXRVbmkKIAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJv
eDo6bWFyZ2luQm94QXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKIHsKLSAg
ICBMYXlvdXRVbml0IGFzY2VudCA9IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihj
cm9zc0F4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCkpOworICAgIExheW91dFVuaXQgYXNjZW50ID0g
Y2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZV9vcihjcm9zc0F4aXNFeHRlbnRGb3JDaGls
ZChjaGlsZCkpOwogICAgIHJldHVybiBhc2NlbnQgKyBmbG93QXdhcmVNYXJnaW5CZWZvcmVGb3JD
aGlsZChjaGlsZCk7CiB9CiAKQEAgLTEyMDksMTYgKzEyMDksMTYgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6cHJlcGFyZU9yZGVySXRlcmF0b3JBbmRNYXJnaW5zKCkKIExheW91dFVuaXQgUmVu
ZGVyRmxleGlibGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChSZW5kZXJCb3gmIGNo
aWxkLCBMYXlvdXRVbml0IGNoaWxkU2l6ZSkKIHsKICAgICBMZW5ndGggbWF4ID0gbWFpblNpemVM
ZW5ndGhGb3JDaGlsZChNYXhTaXplLCBjaGlsZCk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
bWF4RXh0ZW50ID0gV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IG1heEV4
dGVudCA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAobWF4LmlzU3BlY2lmaWVkT3JJbnRyaW5zaWMo
KSkgewogICAgICAgICBtYXhFeHRlbnQgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChj
aGlsZCwgTWF4U2l6ZSwgbWF4KTsKLSAgICAgICAgY2hpbGRTaXplID0gc3RkOjptaW4oY2hpbGRT
aXplLCBtYXhFeHRlbnQudmFsdWVPcihjaGlsZFNpemUpKTsKKyAgICAgICAgY2hpbGRTaXplID0g
c3RkOjptaW4oY2hpbGRTaXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY2hpbGRTaXplKSk7CiAgICAg
fQogCiAgICAgTGVuZ3RoIG1pbiA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWluU2l6ZSwgY2hp
bGQpOwogICAgIC8vIEludHJpbnNpYyBzaXplcyBpbiBjaGlsZCdzIGJsb2NrIGF4aXMgYXJlIGhh
bmRsZWQgYnkgdGhlIG1pbi1zaXplOmF1dG8gY29kZSBwYXRoLgogICAgIGlmIChtaW4uaXNTcGVj
aWZpZWQoKSB8fCAobWluLmlzSW50cmluc2ljKCkgJiYgbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhp
cyhjaGlsZCkpKQotICAgICAgICByZXR1cm4gc3RkOjptYXgoY2hpbGRTaXplLCBzdGQ6Om1heCgw
X2x1LCBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JDaGlsZChjaGlsZCwgTWluU2l6ZSwgbWluKS52
YWx1ZU9yKGNoaWxkU2l6ZSkpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNoaWxkU2l6ZSwg
c3RkOjptYXgoMF9sdSwgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1pblNp
emUsIG1pbikudmFsdWVfb3IoY2hpbGRTaXplKSkpOwogICAgIAogICAgIGlmIChzaG91bGRBcHBs
eU1pblNpemVBdXRvRm9yQ2hpbGQoY2hpbGQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUg
bWluIHZhbHVlIGlzIGV4cGVjdGVkIHRvIGJlIHZhbGlkIGhlcmUsIHdlIG5lZWQgdG8gY29tZSB1
cCB3aXRoIGEgbm9uIG9wdGlvbmFsIHZlcnNpb24gb2YgY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9y
Q2hpbGQgYW5kCkBAIC0xMjI4LDE3ICsxMjI4LDE3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OmFkanVzdENoaWxkU2l6ZUZvck1pbkFuZE1heChSZW5kZXJCb3gmIGNoaWxkLCBMYXlv
CiAgICAgICAgIGlmIChjaGlsZC5pc1JlbmRlclJlcGxhY2VkKCkgJiYgdXNlQ2hpbGRBc3BlY3RS
YXRpbyhjaGlsZCkpCiAgICAgICAgICAgICBjb250ZW50U2l6ZSA9IGNvbXB1dGVNYWluU2l6ZUZy
b21Bc3BlY3RSYXRpb1VzaW5nKGNoaWxkLCBjaGlsZENyb3NzU2l6ZUxlbmd0aCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9y
Q2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50KSkudmFs
dWVPcigwKTsKKyAgICAgICAgICAgIGNvbnRlbnRTaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQoY2hpbGQsIE1pblNpemUsIExlbmd0aChMZW5ndGhUeXBlOjpNaW5Db250ZW50KSku
dmFsdWVfb3IoMCk7CiAgICAgICAgIGlmIChjaGlsZC5oYXNJbnRyaW5zaWNBc3BlY3RSYXRpbygp
ICYmIGNoaWxkLmludHJpbnNpY1NpemUoKS5oZWlnaHQoKSkKICAgICAgICAgICAgIGNvbnRlbnRT
aXplID0gYWRqdXN0Q2hpbGRTaXplRm9yQXNwZWN0UmF0aW9Dcm9zc0F4aXNNaW5BbmRNYXgoY2hp
bGQsIGNvbnRlbnRTaXplKTsKICAgICAgICAgQVNTRVJUKGNvbnRlbnRTaXplID49IDApOwotICAg
ICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRTaXplLCBtYXhFeHRlbnQudmFsdWVP
cihjb250ZW50U2l6ZSkpOworICAgICAgICBjb250ZW50U2l6ZSA9IHN0ZDo6bWluKGNvbnRlbnRT
aXplLCBtYXhFeHRlbnQudmFsdWVfb3IoY29udGVudFNpemUpKTsKICAgICAgICAgCiAgICAgICAg
IExlbmd0aCBtYWluU2l6ZSA9IG1haW5TaXplTGVuZ3RoRm9yQ2hpbGQoTWFpbk9yUHJlZmVycmVk
U2l6ZSwgY2hpbGQpOwogICAgICAgICBpZiAoY2hpbGRNYWluU2l6ZUlzRGVmaW5pdGUoY2hpbGQs
IG1haW5TaXplKSkgewotICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZlZE1haW5TaXplID0g
Y29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZlcnJlZFNpemUs
IG1haW5TaXplKS52YWx1ZU9yKDApOworICAgICAgICAgICAgTGF5b3V0VW5pdCByZXNvbHZlZE1h
aW5TaXplID0gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yQ2hpbGQoY2hpbGQsIE1haW5PclByZWZl
cnJlZFNpemUsIG1haW5TaXplKS52YWx1ZV9vcigwKTsKICAgICAgICAgICAgIEFTU0VSVChyZXNv
bHZlZE1haW5TaXplID49IDApOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXpl
ID0gc3RkOjptaW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlT3IocmVzb2x2ZWRN
YWluU2l6ZSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBzcGVjaWZpZWRTaXplID0gc3RkOjpt
aW4ocmVzb2x2ZWRNYWluU2l6ZSwgbWF4RXh0ZW50LnZhbHVlX29yKHJlc29sdmVkTWFpblNpemUp
KTsKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1heChjaGlsZFNpemUsIHN0ZDo6bWluKHNwZWNp
ZmllZFNpemUsIGNvbnRlbnRTaXplKSk7CiAgICAgICAgIH0KIApAQCAtMTMyNSw5ICsxMzI1LDkg
QEAgRmxleEl0ZW0gUmVuZGVyRmxleGlibGVCb3g6OmNvbnN0cnVjdEZsZXhJdGVtKFJlbmRlckJv
eCYgY2hpbGQsIGJvb2wgcmVsYXlvdXRDaGkKICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiB3ZSBo
YXZlIGFuIGluZGVmaW5pdGUgZmxleCBiYXNpcyBoZXJlIGFuZCB0aHVzIHBlcmNlbnRhZ2VzIHNo
b3VsZCBub3QgcmVzb2x2ZS4KICAgICAgICAgaWYgKGNoaWxkLm5lZWRzTGF5b3V0KCkgfHwgIW1f
aW50cmluc2ljU2l6ZUFsb25nTWFpbkF4aXMuY29udGFpbnMoJmNoaWxkKSkgewogICAgICAgICAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY2hpbGQuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAg
ICBjaGlsZC5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQo
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGlsZC5z
ZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgICAgIGNoaWxkLnNldE92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tD
b250ZW50TG9naWNhbFdpZHRoKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBjaGlsZC5jbGVh
ck92ZXJyaWRpbmdDb250ZW50U2l6ZSgpOwogICAgICAgICAgICAgY2hpbGQuc2V0Q2hpbGROZWVk
c0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICAgICAgY2hpbGQubGF5b3V0SWZOZWVkZWQo
KTsKQEAgLTIwODUsNyArMjA4NSw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNv
bXB1dGVHYXAoUmVuZGVyRmxleGlibGVCb3g6OkdhcFR5cGUgZ2FwVHlwZSkgY29uCiAgICAgaWYg
KExJS0VMWShnYXBMZW5ndGguaXNOb3JtYWwoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBhdXRvIGF2YWlsYWJsZVNpemUgPSB1c2VzUm93R2FwID8gYXZhaWxhYmxlTG9naWNhbEhlaWdo
dEZvclBlcmNlbnRhZ2VDb21wdXRhdGlvbigpLnZhbHVlT3IoMF9sdSkgOiBjb250ZW50TG9naWNh
bFdpZHRoKCk7CisgICAgYXV0byBhdmFpbGFibGVTaXplID0gdXNlc1Jvd0dhcCA/IGF2YWlsYWJs
ZUxvZ2ljYWxIZWlnaHRGb3JQZXJjZW50YWdlQ29tcHV0YXRpb24oKS52YWx1ZV9vcigwX2x1KSA6
IGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZSk7CiB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNjZiZWVkZDIxMWRiMDM2YzRiMDM5M2FkMmU2
NjU2NWM3MGZmNGFlOC4uOGJmYWNjNmVmMGE2OTQxZTM0MGFlZDg5NmQzZjZlMTgyNWM4YzFmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTM4LDcgKzEzOCw3
IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmF2YWlsYWJsZVNwYWNlRm9yR3V0
dGVycyhHcmlkVHJhY2tTaXppbmdEaXJlY3RpCiAgICAgYm9vbCBpc1Jvd0F4aXMgPSBkaXJlY3Rp
b24gPT0gRm9yQ29sdW1uczsKICAgICBjb25zdCBHYXBMZW5ndGgmIGdhcExlbmd0aCA9IGlzUm93
QXhpcyA/IHN0eWxlKCkuY29sdW1uR2FwKCkgOiBzdHlsZSgpLnJvd0dhcCgpOwogICAgIGlmIChn
YXBMZW5ndGguaXNOb3JtYWwoKSB8fCAhZ2FwTGVuZ3RoLmxlbmd0aCgpLmlzUGVyY2VudE9yQ2Fs
Y3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGlzUm93QXhpcyA/IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCgpIDogY29udGVudExvZ2ljYWxIZWlnaHQoKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2
b2lkIFJlbmRlckdyaWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgUmVuZGVyQmxvY2s6Omhhc0Rl
ZmluaXRlTG9naWNhbEhlaWdodCgpIG9ubHkgYnV0IGl0IGRvZXMgbm90IHdvcmsgZm9yIHBvc2l0
aW9uZWQgc3R1ZmYuCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBjYWNoaW5nIHRoZSBoYXNE
ZWZpbml0ZUxvZ2ljYWxIZWlnaHQgdmFsdWUgdGhyb3VnaG91dCB0aGUgbGF5b3V0LgogICAgICAg
ICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBjYWNoZSB0aGUgaGFzRGVmaW5pdGVMb2dpY2Fs
SGVpZ2h0IGlmIHRoZSBjYWxsIG9mIFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxvZ2ljYWxIZWln
aHQoKSBjYXVzZXMgYSByZWxldmFudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgotICAgICAgICBi
b29sIGhhc0RlZmluaXRlTG9naWNhbEhlaWdodCA9IFJlbmRlckJsb2NrOjpoYXNEZWZpbml0ZUxv
Z2ljYWxIZWlnaHQoKSB8fCBoYXNPdmVycmlkaW5nTG9naWNhbEhlaWdodCgpIHx8IGNvbXB1dGVD
b250ZW50TG9naWNhbEhlaWdodChNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmxvZ2ljYWxI
ZWlnaHQoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgYm9vbCBoYXNEZWZpbml0ZUxvZ2ljYWxI
ZWlnaHQgPSBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgfHwgaGFzT3Zl
cnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSB8fCBjb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWFp
bk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIG1faGFzQW55T3J0aG9nb25hbEl0ZW0gPSBmYWxzZTsKICAgICAgICAgZm9yIChh
dXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nQm94KCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCkBAIC0zMjQsNyArMzI0LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpncmlkR2Fw
KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIE9wdGlvbmFsPExheW8KICAgICBp
ZiAoZ2FwTGVuZ3RoLmlzTm9ybWFsKCkpCiAgICAgICAgIHJldHVybiAwX2x1OwogCi0gICAgcmV0
dXJuIHZhbHVlRm9yTGVuZ3RoKGdhcExlbmd0aC5sZW5ndGgoKSwgYXZhaWxhYmxlU2l6ZS52YWx1
ZU9yKDApKTsKKyAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgoZ2FwTGVuZ3RoLmxlbmd0aCgpLCBh
dmFpbGFibGVTaXplLnZhbHVlX29yKDApKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpn
cmlkR2FwKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CkBAIC00MTMs
NyArNDEzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW8KIAogICAgIEdyaWQgZ3JpZChjb25z
dF9jYXN0PFJlbmRlckdyaWQmPigqdGhpcykpOwogICAgIEdyaWRUcmFja1NpemluZ0FsZ29yaXRo
bSBhbGdvcml0aG0odGhpcywgZ3JpZCk7Ci0gICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0aG0s
IFdURjo6bnVsbG9wdCk7CisgICAgcGxhY2VJdGVtc09uR3JpZChhbGdvcml0aG0sIHN0ZDo6bnVs
bG9wdCk7CiAKICAgICBwZXJmb3JtR3JpZEl0ZW1zUHJlTGF5b3V0KGFsZ29yaXRobSk7CiAKQEAg
LTQ0MywxMSArNDQzLDExIEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvCiB2b2lkIFJlbmRlckdy
aWQ6OmNvbXB1dGVUcmFja1NpemVzRm9ySW5kZWZpbml0ZVNpemUoR3JpZFRyYWNrU2l6aW5nQWxn
b3JpdGhtJiBhbGdvcml0aG0sIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIExh
eW91dFVuaXQqIG1pbkludHJpbnNpY1NpemUsIExheW91dFVuaXQqIG1heEludHJpbnNpY1NpemUp
IGNvbnN0CiB7CiAgICAgY29uc3QgR3JpZCYgZ3JpZCA9IGFsZ29yaXRobS5ncmlkKCk7Ci0gICAg
YWxnb3JpdGhtLnNldHVwKGRpcmVjdGlvbiwgbnVtVHJhY2tzKGRpcmVjdGlvbiwgZ3JpZCksIElu
dHJpbnNpY1NpemVDb21wdXRhdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAgICBhbGdvcml0aG0uc2V0
dXAoZGlyZWN0aW9uLCBudW1UcmFja3MoZGlyZWN0aW9uLCBncmlkKSwgSW50cmluc2ljU2l6ZUNv
bXB1dGF0aW9uLCBzdGQ6Om51bGxvcHQpOwogICAgIGFsZ29yaXRobS5ydW4oKTsKIAogICAgIHNp
emVfdCBudW1iZXJPZlRyYWNrcyA9IGFsZ29yaXRobS50cmFja3MoZGlyZWN0aW9uKS5zaXplKCk7
Ci0gICAgTGF5b3V0VW5pdCB0b3RhbEd1dHRlcnNTaXplID0gZ3V0dGVyc1NpemUoZ3JpZCwgZGly
ZWN0aW9uLCAwLCBudW1iZXJPZlRyYWNrcywgV1RGOjpudWxsb3B0KTsKKyAgICBMYXlvdXRVbml0
IHRvdGFsR3V0dGVyc1NpemUgPSBndXR0ZXJzU2l6ZShncmlkLCBkaXJlY3Rpb24sIDAsIG51bWJl
ck9mVHJhY2tzLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgaWYgKG1pbkludHJpbnNpY1NpemUpCiAg
ICAgICAgICptaW5JbnRyaW5zaWNTaXplID0gYWxnb3JpdGhtLm1pbkNvbnRlbnRTaXplKCkgKyB0
b3RhbEd1dHRlcnNTaXplOwpAQCAtNDc1LDcgKzQ3NSw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6
OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRp
cmVjCiAgICAgICAgIGlmIChtYXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlm
IChtYXhTaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRh
aW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dp
Y2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29u
dGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0
IG1heFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNpemUsIGNvbnRhaW5pbmdCbG9ja0F2
YWlsYWJsZVNpemUudmFsdWVPcihMYXlvdXRVbml0KCkpKTsKKyAgICAgICAgICAgIExheW91dFVu
aXQgbWF4U2l6ZVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWF4U2l6ZSwgY29udGFpbmluZ0Jsb2Nr
QXZhaWxhYmxlU2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKICAgICAgICAgICAgIGF2YWls
YWJsZU1heFNpemUgPSBpc1Jvd0F4aXMgPyBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9y
Qm94U2l6aW5nKG1heFNpemVWYWx1ZSwgbWF4U2l6ZS50eXBlKCkpIDogYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcobWF4U2l6ZVZhbHVlKTsKICAgICAgICAgfQogCkBA
IC00ODcsMTMgKzQ4NywxMyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVh
dFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBpZiAo
bWluU2l6ZS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5pbmdCbG9j
a0F2YWlsYWJsZVNpemUgJiYgbWluU2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAg
ICAgICAgICAgICBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8gY29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2NrTG9n
aWNhbEhlaWdodEZvckNvbnRlbnQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAg
ICAgICAgTGF5b3V0VW5pdCBtaW5TaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtaW5TaXplLCBj
b250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlT3IoTGF5b3V0VW5pdCgpKSk7CisgICAg
ICAgICAgICBMYXlvdXRVbml0IG1pblNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pblNpemUs
IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CiAg
ICAgICAgICAgICBhdmFpbGFibGVNaW5TaXplID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVudEJv
eExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhtaW5TaXplVmFsdWUsIG1pblNpemUudHlwZSgpKSA6
IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG1pblNpemVWYWx1ZSk7
CiAgICAgICAgICAgICBpZiAoIW1heFNpemUuaXNTcGVjaWZpZWQoKSkKICAgICAgICAgICAgICAg
ICBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAg
IGF2YWlsYWJsZVNpemUgPSBzdGQ6Om1heChhdmFpbGFibGVNaW5TaXplLnZhbHVlT3IoTGF5b3V0
VW5pdCgpKSwgYXZhaWxhYmxlTWF4U2l6ZS52YWx1ZU9yKExheW91dFVuaXQoKSkpOworICAgICAg
ICBhdmFpbGFibGVTaXplID0gc3RkOjptYXgoYXZhaWxhYmxlTWluU2l6ZS52YWx1ZV9vcihMYXlv
dXRVbml0KCkpLCBhdmFpbGFibGVNYXhTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwogICAg
IH0KIAogICAgIExheW91dFVuaXQgYXV0b1JlcGVhdFRyYWNrc1NpemU7CkBAIC02MjMsNyArNjIz
LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0Fs
Z29yaXRobSYgYWxnb3JpdGhtLCBPcHRpb25hbDwKICAgICAgICAgaWYgKCFjaGlsZC0+aGFzT3Zl
cnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRMb2dpY2FsV2lkdGgoKSkKICAgICAgICAgICAg
IGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxXaWR0aChM
YXlvdXRVbml0KCkpOwogICAgICAgICBpZiAoIWNoaWxkLT5oYXNPdmVycmlkaW5nQ29udGFpbmlu
Z0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVy
cmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExvZ2ljYWxIZWlnaHQoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudExv
Z2ljYWxIZWlnaHQoc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBHcmlkQXJlYSBhcmVhID0gZ3Jp
ZC5ncmlkSXRlbUFyZWEoKmNoaWxkKTsKICAgICAgICAgaWYgKCFhcmVhLnJvd3MuaXNJbmRlZmlu
aXRlKCkpCkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmFwcGx5U3RyZXRj
aEFsaWdubWVudFRvQ2hpbGRJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogICAgIGJvb2wgYWxs
b3dlZFRvU3RyZXRjaENoaWxkQmxvY2tTaXplID0gYmxvY2tGbG93SXNDb2x1bW5BeGlzID8gYWxs
b3dlZFRvU3RyZXRjaENoaWxkQWxvbmdDb2x1bW5BeGlzKGNoaWxkKSA6IGFsbG93ZWRUb1N0cmV0
Y2hDaGlsZEFsb25nUm93QXhpcyhjaGlsZCk7CiAgICAgaWYgKGFsbG93ZWRUb1N0cmV0Y2hDaGls
ZEJsb2NrU2l6ZSkgewogICAgICAgICBMYXlvdXRVbml0IHN0cmV0Y2hlZExvZ2ljYWxIZWlnaHQg
PSBhdmFpbGFibGVBbGlnbm1lbnRTcGFjZUZvckNoaWxkQmVmb3JlU3RyZXRjaGluZyhHcmlkTGF5
b3V0RnVuY3Rpb25zOjpvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFNpemVGb3JDaGls
ZChjaGlsZCwgY2hpbGRCbG9ja0RpcmVjdGlvbikudmFsdWUoKSwgY2hpbGQpOwotICAgICAgICBM
YXlvdXRVbml0IGRlc2lyZWRMb2dpY2FsSGVpZ2h0ID0gY2hpbGQuY29uc3RyYWluTG9naWNhbEhl
aWdodEJ5TWluTWF4KHN0cmV0Y2hlZExvZ2ljYWxIZWlnaHQsIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIExheW91dFVuaXQgZGVzaXJlZExvZ2ljYWxIZWlnaHQgPSBjaGlsZC5jb25zdHJhaW5Mb2dp
Y2FsSGVpZ2h0QnlNaW5NYXgoc3RyZXRjaGVkTG9naWNhbEhlaWdodCwgc3RkOjpudWxsb3B0KTsK
ICAgICAgICAgY2hpbGQuc2V0T3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoZGVzaXJlZExvZ2ljYWxI
ZWlnaHQpOwogCiAgICAgICAgIC8vIENoZWNraW5nIHRoZSBsb2dpY2FsLWhlaWdodCBvZiBhIGNo
aWxkIGlzbid0IGVub3VnaC4gU2V0dGluZyBhbiBvdmVycmlkZSBsb2dpY2FsLWhlaWdodApAQCAt
MTI2Nyw3ICsxMjY3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGkKIE9wdGlvbmFsPExheW91
dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAo
aXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygpIHx8IHNob3VsZEFw
cGx5TGF5b3V0Q29udGFpbm1lbnQoKnRoaXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY29uc3QgUmVuZGVyQm94KiBi
YXNlbGluZUNoaWxkID0gbnVsbHB0cjsKICAgICAvLyBGaW5kaW5nIHRoZSBmaXJzdCBncmlkIGl0
ZW0gaW4gZ3JpZCBvcmRlci4KQEAgLTEyODcsOSArMTI4Nyw5IEBAIE9wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBp
ZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGJhc2VsaW5lID0gR3JpZExheW91dEZ1
bmN0aW9uczo6aXNPcnRob2dvbmFsQ2hpbGQoKnRoaXMsICpiYXNlbGluZUNoaWxkKSA/IFdURjo6
bnVsbG9wdCA6IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgYXV0byBi
YXNlbGluZSA9IEdyaWRMYXlvdXRGdW5jdGlvbnM6OmlzT3J0aG9nb25hbENoaWxkKCp0aGlzLCAq
YmFzZWxpbmVDaGlsZCkgPyBzdGQ6Om51bGxvcHQgOiBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVC
YXNlbGluZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIGJvdHRvbSBpZiBubyB2YWxp
ZCBiYXNlbGluZS4KICAgICBpZiAoIWJhc2VsaW5lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcGFzcyB8ZGlyZWN0aW9ufCBpbnRvIGZpcnN0TGluZUJhc2VsaW5lIGFuZCBzdG9wIGJh
aWxpbmcgb3V0IGlmIHdlJ3JlIGEgd3JpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaAppbmRleCAxMjk2NzU5MGI0YzMzODRkM2QxNTQxZTNhZDAwODljY2UzZTEzMmEyLi5i
YWQwYWRkMDQ2YmI5MjVhOWYyZmNiYmQ2NTdlMDVhOGI2YWUxMDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuaApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBoYXNTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNTaGFkb3dDb250cm9s
cyB8fCBtX2hhc0ltYWdlT3ZlcmxheTsgfQogCiAgICAgTGF5b3V0VW5pdCBjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCA9IENvbXB1dGVBY3R1YWwpIGNv
bnN0IG92ZXJyaWRlOwotICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdo
dChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBXVEY6Om51bGxvcHQp
IGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhl
aWdodChPcHRpb25hbDxMYXlvdXRVbml0PiBlc3RpbWF0ZWRVc2VkV2lkdGggPSBzdGQ6Om51bGxv
cHQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRDb2xsYXBzZVRvRW1wdHkoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAppbmRleCBl
N2EwYTI3YTViY2E3Mjg5OTkyMDJhNjVjM2UyOWQyYTY2OTY2NmU3Li41MjliMWM2NzA4OTQ4MDll
Mjc4Yzc1ZjZlZjNkYmQ0Zjc0NzI5Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcApAQCAtOTYzLDcgKzk2Myw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJl
bmRlcklubGluZTo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgTGF5b3V0UmVj
CiAgICAgICAgIGJvb2wgaXNFbXB0eSA9ICFkb3duY2FzdDxSZW5kZXJCb3g+KCpsb2NhbENvbnRh
aW5lcikuYXBwbHlDYWNoZWRDbGlwQW5kU2Nyb2xsUG9zaXRpb24oYWRqdXN0ZWRSZWN0LCBjb250
YWluZXIsIGNvbnRleHQpOwogICAgICAgICBpZiAoaXNFbXB0eSkgewogICAgICAgICAgICAgaWYg
KGNvbnRleHQub3B0aW9ucy5jb250YWlucyhWaXNpYmxlUmVjdENvbnRleHRPcHRpb246OlVzZUVk
Z2VJbmNsdXNpdmVJbnRlcnNlY3Rpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
IHJldHVybiBhZGp1c3RlZFJlY3Q7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlODBkNWU3MDMyY2NhZTJmZjI0MGE0ZDFiMTk2
M2Q0ZTU3YTNlNDU2Li4xODVmNmNmNmE5YTkzZmU4MDc5ZWM0MzVjNmVhNDZiMTZmNzhiOGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTk2Myw3ICs5NjMs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRy
eU1hcCogZ2VvbWV0cnlNYXAsIE9wdGlvblNldAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
c2hvdWxkUmVwYWludEFmdGVyTGF5b3V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHdpbGwgY29udmVydCB0aGlzIHRvIGp1c3QgdGFrZSB0aGUgb2xkIGFuZCBuZXcgUmVw
YWludExheW91dFJlY3RzIG9uY2UKICAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2hhbmdlIG90
aGVyIGNhbGxlcnMgdG8gdXNlIFJlcGFpbnRMYXlvdXRSZWN0cy4KLSAgICAgICAgICAgICAgICAg
ICAgYXV0byByZXNvbHZlZE9sZFJlY3RzID0gb2xkUmVjdHMudmFsdWVPcihMYXllclJlcGFpbnRS
ZWN0cyB7IH0pOworICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc29sdmVkT2xkUmVjdHMgPSBv
bGRSZWN0cy52YWx1ZV9vcihMYXllclJlcGFpbnRSZWN0cyB7IH0pOwogICAgICAgICAgICAgICAg
ICAgICByZW5kZXJlcigpLnJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKHJlcGFpbnRDb250YWlu
ZXIsIHJlc29sdmVkT2xkUmVjdHMuY2xpcHBlZE92ZXJmbG93UmVjdCwgcmVzb2x2ZWRPbGRSZWN0
cy5vdXRsaW5lQm91bmRzUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdSZWN0cy0+
Y2xpcHBlZE92ZXJmbG93UmVjdCwgJm5ld1JlY3RzLT5vdXRsaW5lQm91bmRzUmVjdCk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzQ2NCw3ICszNDY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dAogICAgIExheW91dFNpemUgYWRqdXN0ZWRTdWJwaXhlbE9mZnNldCA9IG9mZnNldEZvclRoaXNM
YXllciAtIExheW91dFNpemUoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsK
ICAgICBMYXllclBhaW50aW5nSW5mbyB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbyhwYWludGluZ0lu
Zm8pOwogICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnJvb3RMYXllciA9IHRoaXM7Ci0gICAg
dHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVuY2xv
c2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmljZVNj
YWxlRmFjdG9yKSk7CisgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Qg
PSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNmb3JtLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJ
bmZvLnN1YnBpeGVsT2Zmc2V0ID0gYWRqdXN0ZWRTdWJwaXhlbE9mZnNldDsKICAgICBwYWludExh
eWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZv
LCBwYWludEZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRl
eCA0Yjk5ZDgxMTk3MzExNjdiYmNmNzBjYjc3NDQyOGM3ZGVmNjgyZDY4Li45NTJhZTRkM2Y3ZWE2
MGE5Y2JjYjY4MWQ2NzJmZjUwMjkwZGUxNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaApAQCAtNjcyLDcgKzY3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBDcm9z
c2VzUGFpbnRpbmdCb3VuZGFyeSgpIGNvbnN0OwogCiAgICAgLy8gUGFzcyBvZmZzZXRGcm9tUm9v
dCBpZiBrbm93bi4KLSAgICBib29sIGludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJl
Y3QmIGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5k
ZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29u
c3QgT3B0aW9uYWw8TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94ID0gV1RGOjpudWxsb3B0
KSBjb25zdDsKKyAgICBib29sIGludGVyc2VjdHNEYW1hZ2VSZWN0KGNvbnN0IExheW91dFJlY3Qm
IGxheWVyQm91bmRzLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBSZW5kZXJM
YXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgY29uc3Qg
T3B0aW9uYWw8TGF5b3V0UmVjdD4mIGNhY2hlZEJvdW5kaW5nQm94ID0gc3RkOjpudWxsb3B0KSBj
b25zdDsKIAogICAgIGVudW0gQ2FsY3VsYXRlTGF5ZXJCb3VuZHNGbGFnIHsKICAgICAgICAgSW5j
bHVkZVNlbGZUcmFuc2Zvcm0gICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAz
MzY4MTZhMTA4NzQyOTY0OGZhNzI4OTk4YjM3MjUzYTU3MGE0NDg1Li40MTNhNmUwZjA0Zjg1Yzdk
NmMwZWQ3ODJhZTJiZGI3ZjU0OTMxZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjM0MiwxMSArMjM0MiwxMSBAQCBP
cHRpb25hbDxTdHJpbmc+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGxhdGZvcm1MYXllclRyZWVB
c1RleHQoRWxlbWVudCYgZWxlbWVudAogCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdGb3JMYXllclRy
ZWVBc1RleHREdW1wKCk7CiAgICAgaWYgKCFlbGVtZW50LnJlbmRlcmVyKCkgfHwgIWVsZW1lbnQu
cmVuZGVyZXIoKS0+aGFzTGF5ZXIoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIGxheWVyTW9kZWxPYmplY3Qg
PSBkb3duY2FzdDxSZW5kZXJMYXllck1vZGVsT2JqZWN0PigqZWxlbWVudC5yZW5kZXJlcigpKTsK
ICAgICBpZiAoIWxheWVyTW9kZWxPYmplY3QubGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvKiBiYWNraW5nID0gbGF5ZXJNb2RlbE9iamVjdC5sYXllcigpLT5iYWNraW5nKCk7
CiAgICAgcmV0dXJuIGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllclRyZWVB
c1RleHQoZmxhZ3MpOwpAQCAtNDQ0Miw3ICs0NDQyLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6YXR0YWNoU2Nyb2xsaW5nTm9kZShSZW5kZXJMYXllciYgbGF5ZXIs
IFMKICAgICAKICAgICBub2RlSUQgPSByZWdpc3RlclNjcm9sbGluZ05vZGVJRCgqc2Nyb2xsaW5n
Q29vcmRpbmF0b3IsIG5vZGVJRCwgbm9kZVR5cGUsIHRyZWVTdGF0ZSk7CiAKLSAgICBMT0dfV0lU
SF9TVFJFQU0oU2Nyb2xsaW5nVHJlZSwgc3RyZWFtIDw8ICJSZW5kZXJMYXllckNvbXBvc2l0b3Ig
IiA8PCB0aGlzIDw8ICIgYXR0YWNoU2Nyb2xsaW5nTm9kZSAiIDw8IG5vZGVJRCA8PCAiIChsYXll
ciAiIDw8IGJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cHJpbWFyeUxheWVySUQoKSA8PCAiKSB0
eXBlICIgPDwgbm9kZVR5cGUgPDwgIiBwYXJlbnQgIiA8PCB0cmVlU3RhdGUucGFyZW50Tm9kZUlE
LnZhbHVlT3IoMCkpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmdUcmVlLCBzdHJlYW0g
PDwgIlJlbmRlckxheWVyQ29tcG9zaXRvciAiIDw8IHRoaXMgPDwgIiBhdHRhY2hTY3JvbGxpbmdO
b2RlICIgPDwgbm9kZUlEIDw8ICIgKGxheWVyICIgPDwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigp
LT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIHR5cGUgIiA8PCBub2RlVHlwZSA8PCAiIHBhcmVudCAi
IDw8IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCkpOwogCiAgICAgaWYgKCFub2Rl
SUQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDQ2Nyw3ICs0NDY3LDcgQEAgU2Nyb2xsaW5nTm9k
ZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJTY3JvbGxpbmdOb2RlSUQoU2Nyb2xs
aW5nQ29vcmRpbmEKICAgICBpZiAobm9kZVR5cGUgPT0gU2Nyb2xsaW5nTm9kZVR5cGU6OlN1YmZy
YW1lICYmICF0cmVlU3RhdGUucGFyZW50Tm9kZUlEKQogICAgICAgICBub2RlSUQgPSBzY3JvbGxp
bmdDb29yZGluYXRvci5jcmVhdGVOb2RlKG5vZGVUeXBlLCBub2RlSUQpOwogICAgIGVsc2Ugewot
ICAgICAgICBhdXRvIG5ld05vZGVJRCA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLmluc2VydE5vZGUo
bm9kZVR5cGUsIG5vZGVJRCwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApLCB0cmVl
U3RhdGUubmV4dENoaWxkSW5kZXgpOworICAgICAgICBhdXRvIG5ld05vZGVJRCA9IHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmluc2VydE5vZGUobm9kZVR5cGUsIG5vZGVJRCwgdHJlZVN0YXRlLnBhcmVu
dE5vZGVJRC52YWx1ZV9vcigwKSwgdHJlZVN0YXRlLm5leHRDaGlsZEluZGV4KTsKICAgICAgICAg
aWYgKG5ld05vZGVJRCAhPSBub2RlSUQpIHsKICAgICAgICAgICAgIC8vIFdlJ2xsIGdldCBhIG5l
dyBub2RlSUQgaWYgdGhlIHR5cGUgY2hhbmdlZCAoYW5kIG5vdCBpZiB0aGUgbm9kZSBpcyBuZXcp
LgogICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3IudW5wYXJlbnRDaGlsZHJlbkFuZERl
c3Ryb3lOb2RlKG5vZGVJRCk7CkBAIC00NTg4LDcgKzQ1ODgsNyBAQCBTY3JvbGxpbmdOb2RlSUQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRpb25Gb3JMYXllcihS
ZW5kZXJMYQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhdXRvIG5ld05vZGVJRCA9
IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICBhdXRvIG5ld05vZGVJRCA9
IHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAKICAgICBTY3JvbGxpbmdUcmVl
U3RhdGUgY2hpbGRUcmVlU3RhdGU7CiAgICAgU2Nyb2xsaW5nVHJlZVN0YXRlKiBjdXJyZW50VHJl
ZVN0YXRlID0gJnRyZWVTdGF0ZTsKQEAgLTQ2NDQsMTAgKzQ2NDQsMTAgQEAgU2Nyb2xsaW5nTm9k
ZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9kZUZvclZpZXdwb3J0
Q29uc3RyYWluZWQKICAgICBhdXRvIG5ld05vZGVJRCA9IGF0dGFjaFNjcm9sbGluZ05vZGUobGF5
ZXIsIG5vZGVUeXBlLCB0cmVlU3RhdGUpOwogICAgIGlmICghbmV3Tm9kZUlEKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5v
ZGVJRC52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52
YWx1ZV9vcigwKTsKICAgICB9CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oQ29tcG9zaXRpbmcsIHN0
cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRDb25zdHJhaW5lZCAiIDw8IG5vZGVUeXBlIDw8
ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChsYXllciAiIDw8IGxheWVyLmJhY2tpbmcoKS0+
Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIGFzIGNoaWxkIG9mICIgPDwg
dHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDApKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0o
Q29tcG9zaXRpbmcsIHN0cmVhbSA8PCAiUmVnaXN0ZXJpbmcgVmlld3BvcnRDb25zdHJhaW5lZCAi
IDw8IG5vZGVUeXBlIDw8ICIgbm9kZSAiIDw8IG5ld05vZGVJRCA8PCAiIChsYXllciAiIDw8IGxh
eWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wcmltYXJ5TGF5ZXJJRCgpIDw8ICIpIGFz
IGNoaWxkIG9mICIgPDwgdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKSk7CiAKICAg
ICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCiAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgeyBsYXllci5i
YWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSB9KTsKQEAgLTQ3MjAsNyArNDcyMCw3IEBAIFNjcm9s
bGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JT
Y3JvbGxpbmdSb2xlKFJlbmRlCiAKICAgICAgICAgaWYgKCFuZXdOb2RlSUQpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5w
YXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFy
ZW50Tm9kZUlELnZhbHVlX29yKDApOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNoYW5nZXMg
JiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQpAQCAtNDczNCw3ICs0NzM0LDcgQEAg
U2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsaW5nTm9k
ZUZvclNjcm9sbGluZ1JvbGUoUmVuZGUKICAgICAgICAgbmV3Tm9kZUlEID0gYXR0YWNoU2Nyb2xs
aW5nTm9kZShsYXllciwgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93LCB0cmVlU3RhdGUpOwog
ICAgICAgICBpZiAoIW5ld05vZGVJRCkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDAp
OworICAgICAgICAgICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChjaGFuZ2VzICYgU2Nyb2xsaW5nTm9k
ZUNoYW5nZUZsYWdzOjpMYXllcikKQEAgLTQ3NTUsNyArNDc1NSw3IEBAIFNjcm9sbGluZ05vZGVJ
RCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdQ
cm94eVJvbGUoCiAgICAgYXV0byogY2xpcHBpbmdTdGFjayA9IGxheWVyLmJhY2tpbmcoKS0+YW5j
ZXN0b3JDbGlwcGluZ1N0YWNrKCk7CiAgICAgaWYgKCFjbGlwcGluZ1N0YWNrKSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5v
ZGVJRC52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52
YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEID0gMDsKQEAg
LTQ3NjYsNyArNDc2Niw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbGluZ05vZGVGb3JTY3JvbGxpbmdQcm94eVJvbGUoCiAgICAgICAgIG5vZGVJ
RCA9IHJlZ2lzdGVyU2Nyb2xsaW5nTm9kZUlEKCpzY3JvbGxpbmdDb29yZGluYXRvciwgZW50cnku
b3ZlcmZsb3dTY3JvbGxQcm94eU5vZGVJRCwgU2Nyb2xsaW5nTm9kZVR5cGU6Ok92ZXJmbG93UHJv
eHksIHRyZWVTdGF0ZSk7CiAgICAgICAgIGlmICghbm9kZUlEKSB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cmVlU3RhdGUucGFyZW50Tm9k
ZUlELnZhbHVlT3IoMCk7CisgICAgICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJ
RC52YWx1ZV9vcigwKTsKICAgICAgICAgfQogICAgICAgICBlbnRyeS5vdmVyZmxvd1Njcm9sbFBy
b3h5Tm9kZUlEID0gbm9kZUlEOwogI2lmIEVOQUJMRShTQ1JPTExJTkdfVEhSRUFEKQpAQCAtNDc5
NSw3ICs0Nzk1LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlU2Nyb2xsaW5nTm9kZUZvclNjcm9sbGluZ1Byb3h5Um9sZSgKICAgICAvLyBGSVhNRTogYWxz
byBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2sKIAogICAg
IGlmICghbm9kZUlEKQotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1
ZU9yKDApOworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigw
KTsKIAogICAgIHJldHVybiBub2RlSUQ7CiB9CkBAIC00ODA3LDcgKzQ4MDcsNyBAQCBTY3JvbGxp
bmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yRnJh
bWVIb3N0aW5nUm9sZShSZQogICAgIGF1dG8gbmV3Tm9kZUlEID0gYXR0YWNoU2Nyb2xsaW5nTm9k
ZShsYXllciwgU2Nyb2xsaW5nTm9kZVR5cGU6OkZyYW1lSG9zdGluZywgdHJlZVN0YXRlKTsKICAg
ICBpZiAoIW5ld05vZGVJRCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVPcigwKTsKKyAgICAgICAgcmV0
dXJuIHRyZWVTdGF0ZS5wYXJlbnROb2RlSUQudmFsdWVfb3IoMCk7CiAgICAgfQogCiAgICAgaWYg
KGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQpAQCAtNDgyMyw3ICs0
ODIzLDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Ny
b2xsaW5nTm9kZUZvclBvc2l0aW9uaW5nUm9sZShSZW4KICAgICBhdXRvIG5ld05vZGVJRCA9IGF0
dGFjaFNjcm9sbGluZ05vZGUobGF5ZXIsIFNjcm9sbGluZ05vZGVUeXBlOjpQb3NpdGlvbmVkLCB0
cmVlU3RhdGUpOwogICAgIGlmICghbmV3Tm9kZUlEKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZU9yKDAp
OworICAgICAgICByZXR1cm4gdHJlZVN0YXRlLnBhcmVudE5vZGVJRC52YWx1ZV9vcigwKTsKICAg
ICB9CiAKICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcAppbmRleCAyYmI1YTU1Mjg5ZjY0ODk4MDE0Zjc0NWViNGUxYjEzMDEwYTUxNDlmLi4w
YTM3MTlhMjM1OGQ1YWFjZjhlOWIxNjk2MTMxNmRlZGIzZWQ3NmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0yMjYs
NyArMjI2LDcgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91bGRQbGFjZVZlcnRp
Y2FsU2Nyb2xsYmFyT25MZWZ0KCkgY29uc3QKIAogT3B0aW9uYWw8TGF5ZXJSZXBhaW50UmVjdHM+
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmxheWVyUmVwYWludFJlY3RzKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gaGFzTGF5ZXIoKSA/IGxheWVyKCktPnJlcGFpbnRSZWN0cygpIDogV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBoYXNMYXllcigpID8gbGF5ZXIoKS0+cmVwYWludFJlY3RzKCkgOiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3RhcnRBbmlt
YXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25z
dCBLZXlmcmFtZUxpc3QmIGtleWZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcAppbmRleCBkZTJiY2U1MWZhOWI4
ZDExYTBlNDllOTFmNGZhOWZkMWQ1MDU4NTgzLi5jZGU0NTcxZmQ0OTY0ZWNmNWE3NThlOGJhMDkw
MWQ3N2YwMWMyN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjphcHBseVBvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbklmTmVl
ZGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2Nyb2xsVG9PZmZzZXQoc2Nyb2xsT2Zmc2V0
RnJvbVBvc2l0aW9uKG1fcG9zdExheW91dFNjcm9sbFBvc2l0aW9uLnZhbHVlKCkpKTsKLSAgICBt
X3Bvc3RMYXlvdXRTY3JvbGxQb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3Bvc3RMYXlv
dXRTY3JvbGxQb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhOjpzY3JvbGxUb1hQb3NpdGlvbihpbnQgeCwgY29uc3QgU2Nyb2xsUG9zaXRp
b25DaGFuZ2VPcHRpb25zJiBvcHRpb25zKQpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgT3B0aW9uYWw8
TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRp
b24oY29uc3QgU2Nyb2wKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoYm94LT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0U2Nyb2xsZWQpKSwg
VXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbEJ5UmVjdXJzaXZlbHkoY29uc3QgSW50U2l6ZSYgZGVsdGEs
IFNjcm9sbGFibGVBcmVhKiogc2Nyb2xsZWRBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDlkYWQ1MTcxMDc4ZmM2MjNlZDhjYjFhZjBhYzY0Y2Jj
YTQzZWM5OTMuLjI2YmIzY2JlMmY4OWY5MzY0MDY3MDczYmQ4ZTBhYTUwM2M5OTdmZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTI5Myw3ICsyOTMs
NyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpc3RCb3g6Oml0ZW1Cb3VuZGluZ0JveFJlY3QoY29uc3Qg
TGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZQogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0
ZW0oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
Y29uc3QgUGFpbnRGdW5jdGlvbiYgcGFpbnRGdW5jdGlvbikKIHsKICAgICBpbnQgbGlzdEl0ZW1z
U2l6ZSA9IG51bUl0ZW1zKCk7Ci0gICAgaW50IGZpcnN0VmlzaWJsZUl0ZW0gPSBtX2luZGV4T2ZG
aXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ1RvcEFyZWEudmFsdWVPcihtX2luZGV4T2Zmc2V0
KTsKKyAgICBpbnQgZmlyc3RWaXNpYmxlSXRlbSA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1J
bnNpZGVQYWRkaW5nVG9wQXJlYS52YWx1ZV9vcihtX2luZGV4T2Zmc2V0KTsKICAgICBpbnQgZW5k
SW5kZXggPSBmaXJzdFZpc2libGVJdGVtICsgbnVtVmlzaWJsZUl0ZW1zKENvbnNpZGVyUGFkZGlu
Zzo6WWVzKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RWaXNpYmxlSXRlbTsgaSA8IGxpc3RJdGVt
c1NpemUgJiYgaSA8IGVuZEluZGV4OyArK2kpCiAgICAgICAgIHBhaW50RnVuY3Rpb24ocGFpbnRJ
bmZvLCBwYWludE9mZnNldCwgaSk7CkBAIC02MTIsNyArNjEyLDcgQEAgYm9vbCBSZW5kZXJMaXN0
Qm94OjpzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChpbnQgaW5kZXgpCiAKIGJvb2wg
UmVuZGVyTGlzdEJveDo6bGlzdEluZGV4SXNWaXNpYmxlKGludCBpbmRleCkKIHsKLSAgICBpbnQg
Zmlyc3RJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJl
YS52YWx1ZU9yKG1faW5kZXhPZmZzZXQpOworICAgIGludCBmaXJzdEluZGV4ID0gbV9pbmRleE9m
Rmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdUb3BBcmVhLnZhbHVlX29yKG1faW5kZXhPZmZz
ZXQpOwogICAgIGludCBlbmRJbmRleCA9IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQ
YWRkaW5nQm90dG9tQXJlYQogICAgICAgICA/IG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nQm90dG9tQXJlYS52YWx1ZSgpICsgbnVtYmVyT2ZWaXNpYmxlSXRlbXNJblBhZGRp
bmdCb3R0b20oKQogICAgICAgICA6IG1faW5kZXhPZmZzZXQgKyBudW1WaXNpYmxlSXRlbXMoKTsK
QEAgLTY3OSw4ICs2NzksOCBAQCBpbnQgUmVuZGVyTGlzdEJveDo6bnVtYmVyT2ZWaXNpYmxlSXRl
bXNJblBhZGRpbmdCb3R0b20oKSBjb25zdAogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVG
aXJzdEluZGV4ZXNWaXNpYmxlSW5QYWRkaW5nVG9wQm90dG9tQXJlYXMoKQogewotICAgIG1faW5k
ZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNpZGVQYWRkaW5nVG9wQXJlYSA9IFdURjo6bnVsbG9wdDsK
LSAgICBtX2luZGV4T2ZGaXJzdFZpc2libGVJdGVtSW5zaWRlUGFkZGluZ0JvdHRvbUFyZWEgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9pbmRleE9mRmlyc3RWaXNpYmxlSXRlbUluc2lkZVBhZGRpbmdU
b3BBcmVhID0gc3RkOjpudWxsb3B0OworICAgIG1faW5kZXhPZkZpcnN0VmlzaWJsZUl0ZW1JbnNp
ZGVQYWRkaW5nQm90dG9tQXJlYSA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGludCBtYXhpbXVtTnVt
YmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BBcmVhID0gcGFkZGluZ1RvcCgpIC8gaXRlbUhl
aWdodCgpOwogICAgIGlmIChtYXhpbXVtTnVtYmVyT2ZJdGVtc1RoYXRGaXRJblBhZGRpbmdUb3BB
cmVhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0
ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcAppbmRl
eCBiMWIxNGE5ZDhjZTA5MzQ0ODRkYjQ3NjlhYTI2YWVkZjA5NTA3N2M4Li5mZGJlMTMwOWY3MTk2
OWNiMGVlYTE5ZDAxZTZhZDVkMjUxNmEyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0SXRlbS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFJlbmRlckxpc3RJ
dGVtOjp1cGRhdGVWYWx1ZU5vdygpIGNvbnN0CiB2b2lkIFJlbmRlckxpc3RJdGVtOjp1cGRhdGVW
YWx1ZSgpCiB7CiAgICAgaWYgKCFtX3ZhbHVlV2FzU2V0RXhwbGljaXRseSkgewotICAgICAgICBt
X3ZhbHVlID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX3ZhbHVlID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICBpZiAobV9tYXJrZXIpCiAgICAgICAgICAgICBtX21hcmtlci0+c2V0TmVlZHNMYXlv
dXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEl0ZW0uaAppbmRleCA0ZjEzYjgzOTU3NzNlN2Y3NjEwZDkwNjIwMDA1OGRlYTY2
MWYzMmEwLi5kNmQ5YjNlNzJiMTAwYzFkMjZmOTNhZDNmYTBiMWI3ZjFlYjcxZGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgaW50IHZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpOwog
Ci0gICAgT3B0aW9uYWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZVdhc1NldEV4cGxpY2l0bHkgPyBtX3ZhbHVlIDogV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9u
YWw8aW50PiBleHBsaWNpdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZVdhc1NldEV4cGxp
Y2l0bHkgPyBtX3ZhbHVlIDogc3RkOjpudWxsb3B0OyB9CiAgICAgdm9pZCBzZXRFeHBsaWNpdFZh
bHVlKE9wdGlvbmFsPGludD4pOwogCiAgICAgdm9pZCBzZXROb3RJbkxpc3QoYm9vbCBub3RJbkxp
c3QpIHsgbV9ub3RJbkxpc3QgPSBub3RJbkxpc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IDBlZmQ1OTM1OWI0Y2IyMDRj
N2Q1NjM3Njc5NDVlMTk3OWZiM2MzMTcuLmZmY2JhMDRhYTM0NWM0ODRhOTlkODNjNjZiYjRiZjRi
ZTBhMGRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRp
Q29sdW1uU2V0LmNwcApAQCAtNDI1LDcgKzQyNSw3IEBAIExheW91dFVuaXQgUmVuZGVyTXVsdGlD
b2x1bW5TZXQ6OmNhbGN1bGF0ZU1heENvbHVtbkhlaWdodCgpIGNvbnN0CiAgICAgTGF5b3V0VW5p
dCBhdmFpbGFibGVIZWlnaHQgPSBtdWx0aUNvbHVtbkZsb3coKS0+Y29sdW1uSGVpZ2h0QXZhaWxh
YmxlKCk7CiAgICAgTGF5b3V0VW5pdCBtYXhDb2x1bW5IZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQg
PyBhdmFpbGFibGVIZWlnaHQgOiBSZW5kZXJGcmFnbWVudGVkRmxvdzo6bWF4TG9naWNhbEhlaWdo
dCgpOwogICAgIGlmICghbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCkuaXNVbmRlZmlu
ZWQoKSkKLSAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4Q29sdW1uSGVpZ2h0
LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4U2l6ZSwgbXVs
dGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIFdURjo6bnVsbG9wdCkudmFsdWVPcihtYXhD
b2x1bW5IZWlnaHQpKTsKKyAgICAgICAgbWF4Q29sdW1uSGVpZ2h0ID0gc3RkOjptaW4obWF4Q29s
dW1uSGVpZ2h0LCBtdWx0aWNvbEJsb2NrLT5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoTWF4
U2l6ZSwgbXVsdGljb2xTdHlsZS5sb2dpY2FsTWF4SGVpZ2h0KCksIHN0ZDo6bnVsbG9wdCkudmFs
dWVfb3IobWF4Q29sdW1uSGVpZ2h0KSk7CiAgICAgcmV0dXJuIGhlaWdodEFkanVzdGVkRm9yU2V0
T2Zmc2V0KG1heENvbHVtbkhlaWdodCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKaW5kZXggYmFhMTMzZWY3YjM5NzY1YWZiZTI0YmUwZjdjOTQ3M2I5MmYw
ZjI2Yi4uYzhhMzFkY2Y5N2IzYWRlMTAyZTQ1MGNlODZjY2Q3ZjRjMjMyYjI2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEwMDgsNyArMTAwOCw3IEBA
IE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlck9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5D
b250YWluZXIoY29uc3QgTGF5b3V0UmVjCiAgICAgICAgIGJvb2wgaXNFbXB0eSA9ICFkb3duY2Fz
dDxSZW5kZXJCb3g+KCpwYXJlbnQpLmFwcGx5Q2FjaGVkQ2xpcEFuZFNjcm9sbFBvc2l0aW9uKGFk
anVzdGVkUmVjdCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICAgICAgaWYgKGlzRW1wdHkpIHsK
ICAgICAgICAgICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuY29udGFpbnMoVmlzaWJsZVJlY3RDb250
ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0aW9uKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRSZWN0OwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGRjYjRkZjUzMzhkZGNi
MDYxODE0ZDdmNmZiMDdmMmQ5NGNjNzRlOGQuLjY0NGUxODNiNDZjZmUwNjIxMzBkMGUzNTc1YmJj
ODVkMjdiZjU2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAg
LTY0NCw3ICs2NDQsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIpIGNvbnN0OwogCiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBv
YmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIHRoZSBsb2NhdGlvbiBpbiBjb250YWlu
ZXIgc3BhY2Ugd2hlcmUgdGhpcyByZWN0IGlzIHZpc2libGUsCi0gICAgLy8gd2hlbiBjbGlwcGlu
ZyBhbmQgc2Nyb2xsaW5nIGFzIHNwZWNpZmllZCBieSB0aGUgY29udGV4dC4gV2hlbiB1c2luZyBl
ZGdlLWluY2x1c2l2ZSBpbnRlcnNlY3Rpb24sIHJldHVybiBXVEY6Om51bGxvcHQKKyAgICAvLyB3
aGVuIGNsaXBwaW5nIGFuZCBzY3JvbGxpbmcgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb250ZXh0LiBX
aGVuIHVzaW5nIGVkZ2UtaW5jbHVzaXZlIGludGVyc2VjdGlvbiwgcmV0dXJuIHN0ZDo6bnVsbG9w
dAogICAgIC8vIHJhdGhlciB0aGFuIGFuIGVtcHR5IHJlY3QgaWYgdGhlIHJlY3QgaXMgY29tcGxl
dGVseSBjbGlwcGVkIG91dCBpbiBjb250YWluZXIgc3BhY2UuCiAgICAgdmlydHVhbCBPcHRpb25h
bDxMYXlvdXRSZWN0PiBjb21wdXRlVmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBMYXlvdXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVmlz
aWJsZVJlY3RDb250ZXh0KSBjb25zdDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4g
Y29tcHV0ZUZsb2F0VmlzaWJsZVJlY3RJbkNvbnRhaW5lcihjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBWaXNpYmxlUmVjdENv
bnRleHQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApp
bmRleCBjNWU5NzJjYTU1NTNlMTg1ODM4MjMzM2JkNzdmOTk1NGE5NzRjZTI3Li41MmNlNjQ5YjEz
ZjRkZDI5ZGIwYTEyNTczODI2MzEwN2ZhZmM2Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVuZGVyUmVwbGFjZWQoKTsKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBv
dmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gV1RGOjpudWxsb3B0KSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQo
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBj
b25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdChjb25z
dCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKSBjb25zdDsKICAgICBMYXlvdXRSZWN0IHJlcGxh
Y2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiByZXBsYWNlZENvbnRlbnRSZWN0KGludHJp
bnNpY1NpemUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmlu
ZGV4IDliOGNmYzQ4NTY4MmE1NGVkN2MxYWI1NWRmMTU0NzczYmZlMmE2MTEuLmY5MmM5MzE3MWVi
OWMyYjAyMTk0MTI2OWY3MDk0NWJjMzg2Yzc5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcApAQCAtMzU1LDkgKzM1NSw5IEBAIExheW91dFVuaXQgUmVuZGVyVGFi
bGU6OmNvbnZlcnRTdHlsZUxvZ2ljYWxIZWlnaHRUb0NvbXB1dGVkSGVpZ2h0KGNvbnN0IExlbmd0
aCYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdHlsZUxvZ2ljYWxIZWln
aHQudmFsdWUoKSAtIGJvcmRlcnMpOwogICAgIH0gZWxzZSBpZiAoc3R5bGVMb2dpY2FsSGVpZ2h0
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQotICAgICAgICByZXR1cm4gY29tcHV0ZVBlcmNlbnRh
Z2VMb2dpY2FsSGVpZ2h0KHN0eWxlTG9naWNhbEhlaWdodCkudmFsdWVPcigwKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChzdHlsZUxvZ2ljYWxIZWlnaHQp
LnZhbHVlX29yKDApOwogICAgIGVsc2UgaWYgKHN0eWxlTG9naWNhbEhlaWdodC5pc0ludHJpbnNp
YygpKQotICAgICAgICByZXR1cm4gY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0
VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRk
aW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gY29tcHV0
ZUludHJpbnNpY0xvZ2ljYWxDb250ZW50SGVpZ2h0VXNpbmcoc3R5bGVMb2dpY2FsSGVpZ2h0LCBs
b2dpY2FsSGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nLCBib3JkZXJBbmRQYWRkaW5nKS52YWx1
ZV9vcigwKTsKICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiAwX2x1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAppbmRleCBiNzU4YjllMzkzNzVhZmFhODFmYmZmNjgzYTFiZDk1MGQ0ZWYxYWM2Li4wZTNkNTg0
ZjZhNGRhMWIxMDg5N2NkNjA5MjlkMTViMzBkNTM0NTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIExheW91dFVu
aXQgUmVuZGVyVGFibGVDZWxsOjpjZWxsQmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0CiAgICAgLy8g
PGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDcvQ1ItQ1NTMjEtMjAwNzA3MTkvdGFibGVzLmh0bWwj
aGVpZ2h0LWxheW91dD46IFRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaXMgdGhlIGJhc2VsaW5lIG9m
CiAgICAgLy8gdGhlIGZpcnN0IGluLWZsb3cgbGluZSBib3ggaW4gdGhlIGNlbGwsIG9yIHRoZSBm
aXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2VsbCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0
LiBJZiB0aGVyZQogICAgIC8vIGlzIG5vIHN1Y2ggbGluZSBib3ggb3IgdGFibGUtcm93LCB0aGUg
YmFzZWxpbmUgaXMgdGhlIGJvdHRvbSBvZiBjb250ZW50IGVkZ2Ugb2YgdGhlIGNlbGwgYm94Lgot
ICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpICsgY29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJh
c2VsaW5lKCkudmFsdWVfb3IoYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY29udGVudExvZ2lj
YWxIZWlnaHQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtYXJrQ2VsbERpcnR5V2hlbkNv
bGxhcHNlZEJvcmRlckNoYW5nZXMoUmVuZGVyVGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjYjQ2NDFlZmZk
MWM2MzJhYjE5ZjkxNTk1MjhlYjk3ZGUwOTc4MTJiLi5jM2EwMTM5NmEyYmVmMzEwNmVhOTc3MWJk
ZmI5MGYxZjY0ZGI1ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcApAQCAtODg0LDcgKzg4NCw3IEBAIE9wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAv
LyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNl
bGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewogICAgICAgICAgICAgTGF5b3V0
VW5pdCBjYW5kaWRhdGUgPSBjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQYWRk
aW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpOwotICAgICAgICAgICAg
cmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlT3IoY2FuZGlkYXRlKSwgY2FuZGlkYXRlKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZV9vcihjYW5kaWRhdGUp
LCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAKaW5kZXggNTljYzBjNmI5MTlkZTgzYzg0M2EwM2VhOTlmZTkzNTQ0MTdi
YzhkNy4uNjQ1YTNlYjVjZTQ5YWQ1YjYyYzI0YzYwZmEzYWQ3ZDQxNjU1MTY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTE4Niw3ICsxMTg2LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lk
dGgsIEhhc2hTZXQ8Y29uc3QgRm8KICAgICAgICAgfQogICAgIH0KIAotICAgIGdseXBoT3ZlcmZs
b3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFsdWVPcihnbHlwaE92ZXJmbG93Lmxl
ZnQpOworICAgIGdseXBoT3ZlcmZsb3cubGVmdCA9IGZpcnN0R2x5cGhMZWZ0T3ZlcmZsb3cudmFs
dWVfb3IoZ2x5cGhPdmVyZmxvdy5sZWZ0KTsKIAogICAgIGlmICgobmVlZHNXb3JkU3BhY2luZyAm
JiBsZW5ndGggPiAxKSB8fCAoaWdub3JpbmdTcGFjZXMgJiYgIWZpcnN0V29yZCkpCiAgICAgICAg
IGN1cnJNYXhXaWR0aCArPSB3b3JkU3BhY2luZzsKQEAgLTE3NDAsMTMgKzE3NDAsMTMgQEAgaW50
IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdAogICAgICAgICBy
ZXR1cm4gY3VycmVudCAtIDE7CiAKICAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRvciBpdGVyYXRv
cih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwgbnVsbEF0b20oKSk7Ci0g
ICAgcmV0dXJuIGl0ZXJhdG9yLnByZWNlZGluZyhjdXJyZW50KS52YWx1ZU9yKGN1cnJlbnQgLSAx
KTsKKyAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVlX29yKGN1cnJl
bnQgLSAxKTsKIH0KIAogaW50IFJlbmRlclRleHQ6OnByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmRE
ZWxldGlvbihpbnQgY3VycmVudCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0QnJlYWtJdGVyYXRv
ciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpEZWxldGUsIG51bGxB
dG9tKCkpOwotICAgIHJldHVybiBpdGVyYXRvci5wcmVjZWRpbmcoY3VycmVudCkudmFsdWVPcigw
KTsKKyAgICByZXR1cm4gaXRlcmF0b3IucHJlY2VkaW5nKGN1cnJlbnQpLnZhbHVlX29yKDApOwog
fQogCiBpbnQgUmVuZGVyVGV4dDo6bmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3QKQEAgLTE3
NTUsNyArMTc1NSw3IEBAIGludCBSZW5kZXJUZXh0OjpuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBj
b25zdAogICAgICAgICByZXR1cm4gY3VycmVudCArIDE7CiAKICAgICBDYWNoZWRUZXh0QnJlYWtJ
dGVyYXRvciBpdGVyYXRvcih0ZXh0KCksIFRleHRCcmVha0l0ZXJhdG9yOjpNb2RlOjpDYXJldCwg
bnVsbEF0b20oKSk7Ci0gICAgcmV0dXJuIGl0ZXJhdG9yLmZvbGxvd2luZyhjdXJyZW50KS52YWx1
ZU9yKGN1cnJlbnQgKyAxKTsKKyAgICByZXR1cm4gaXRlcmF0b3IuZm9sbG93aW5nKGN1cnJlbnQp
LnZhbHVlX29yKGN1cnJlbnQgKyAxKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Ojpjb21wdXRlQ2Fu
VXNlU2ltcGxlRm9udENvZGVQYXRoKCkgY29uc3QKQEAgLTE3NzcsNyArMTc3Nyw3IEBAIHZvaWQg
UmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5zaWduZWQg
b2Zmc2V0QWZ0ZXJMYXN0VHlwCiAKIFN0cmluZ1ZpZXcgUmVuZGVyVGV4dDo6c3RyaW5nVmlldyh1
bnNpZ25lZCBzdGFydCwgT3B0aW9uYWw8dW5zaWduZWQ+IHN0b3ApIGNvbnN0CiB7Ci0gICAgdW5z
aWduZWQgZGVzdGluYXRpb24gPSBzdG9wLnZhbHVlT3IodGV4dCgpLmxlbmd0aCgpKTsKKyAgICB1
bnNpZ25lZCBkZXN0aW5hdGlvbiA9IHN0b3AudmFsdWVfb3IodGV4dCgpLmxlbmd0aCgpKTsKICAg
ICBBU1NFUlQoc3RhcnQgPD0gbGVuZ3RoKCkpOwogICAgIEFTU0VSVChkZXN0aW5hdGlvbiA8PSBs
ZW5ndGgoKSk7CiAgICAgQVNTRVJUKHN0YXJ0IDw9IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDdhNmY1NTFjZGQzMjlkNDVjMjRiN2NmNjNlMTFm
Njg1ZDJlYjI0NTYuLjFiMmJkM2VlNDY2Y2I2NTZmNjNmOTBjMjE2ZWZjOWQ5YmI2NWY0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtMTY5LDcgKzE2OSw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgdXNlc0NvbXBsZXhMaW5lTGF5b3V0UGF0aCgpIGNvbnN0OwogCi0g
ICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3KHVuc2lnbmVkIHN0YXJ0ID0gMCwgT3B0aW9uYWw8dW5z
aWduZWQ+IHN0b3AgPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIFN0cmluZ1ZpZXcgc3RyaW5n
Vmlldyh1bnNpZ25lZCBzdGFydCA9IDAsIE9wdGlvbmFsPHVuc2lnbmVkPiBzdG9wID0gc3RkOjpu
dWxsb3B0KSBjb25zdDsKICAgICAKICAgICBib29sIGNvbnRhaW5zT25seUhUTUxXaGl0ZXNwYWNl
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOTE1YmI1M2RhNzlkM2Q2MjQ5
MzcwMTY0MzUxOWFkODAwMDIxNTVhZC4uZTZmOGYyMmUxMzk2YTYyZDIzMGE1MDQ3MzU5Y2NjNTEz
Mzg1MmIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpA
QCAtNTc0LDcgKzU3NCw3IEBAIExlbmd0aEJveCBSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRlcm5h
bFBhZGRpbmdCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zCiAgICAgZmxvYXQgcGFk
ZGluZyA9IE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyOwogICAgIGlmIChzZXR0aW5ncy5pT1NG
b3JtQ29udHJvbFJlZnJlc2hFbmFibGVkKCkpIHsKICAgICAgICAgYXV0byBlbVNpemUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAgICAg
ICBwYWRkaW5nID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51
bGxvcHQpKTsKKyAgICAgICAgcGFkZGluZyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4o
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgmc3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIDEuMCwgc3RkOjpudWxsb3B0KSk7CiAgICAgfQogCiAgICAgaWYgKHN0eWxlLmFwcGVhcmFu
Y2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsKQEAgLTExMjMsNyArMTEyMyw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVJT1M6OmFkanVzdEJ1dHRvblN0eWxlKFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRWxlbWVudCogZWxlbWVuCiAgICAgLy8gU2luY2UgdGhlIGVsZW1lbnQgbWlnaHQgbm90IGJl
IGluIGEgZG9jdW1lbnQsIGp1c3QgcGFzcyBudWxscHRyIGZvciB0aGUgcm9vdCBlbGVtZW50IHN0
eWxlLAogICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBzdHlsZSwgYW5kIHRoZSByZW5kZXIgdmll
dy4KICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMS4wLCBDU1NV
bml0VHlwZTo6Q1NTX0VNUyk7Ci0gICAgaW50IHBpeGVscyA9IGVtU2l6ZS0+Y29tcHV0ZUxlbmd0
aDxpbnQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCAxLjAsIFdURjo6bnVsbG9wdCkpOworICAgIGludCBwaXhlbHMgPSBlbVNpemUt
PmNvbXB1dGVMZW5ndGg8aW50PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMS4wLCBzdGQ6Om51bGxvcHQpKTsKICAgICBzdHlsZS5z
ZXRQYWRkaW5nQm94KExlbmd0aEJveCgwLCBwaXhlbHMsIDAsIHBpeGVscykpOwogCiAgICAgaWYg
KCFlbGVtZW50KQpAQCAtMTM1NCw3ICsxMzU0LDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxD
b2xvcj4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uKENTU1YK
ICAgICAgICAgcmV0dXJuIHN5c3RlbUNvbG9yOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIE9wdGlvbmFsPENv
bG9yPiBzeXN0ZW1Db2xvckZyb21DU1NWYWx1ZUlEKENTU1ZhbHVlSUQgY3NzVmFsdWVJRCwgYm9v
bCB1c2VEYXJrQXBwZWFyYW5jZSwgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCkK
QEAgLTEzNjYsNyArMTM2Niw3IEBAIHN0YXRpYyBPcHRpb25hbDxDb2xvcj4gc3lzdGVtQ29sb3JG
cm9tQ1NTVmFsdWVJRChDU1NWYWx1ZUlEIGNzc1ZhbHVlSUQsIGJvb2wgdXNlCiAgICAgICAgICAg
ICByZXR1cm4gc3lzdGVtQ29sb3JGcm9tQ1NTVmFsdWVTeXN0ZW1Db2xvckluZm9ybWF0aW9uKGNz
c1ZhbHVlU3lzdGVtQ29sb3JJbmZvcm1hdGlvbiwgdXNlRGFya0FwcGVhcmFuY2UpOwogICAgIH0K
IAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAogc3RhdGljIFJlbmRlclRoZW1lSU9TOjpDU1NWYWx1ZVRvU3lzdGVtQ29sb3JNYXAmIGdsb2Jh
bENTU1ZhbHVlVG9TeXN0ZW1Db2xvck1hcCgpCkBAIC0yNTYyLDcgKzI1NjIsNyBAQCB2b2lkIFJl
bmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnNXaXRoRm9ybUNvbnRy
b2xSZWZyZXNoKGNvbnN0CiAgICAgfQogCiAgICAgYXV0byBlbVNpemUgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKDEuMCwgQ1NTVW5pdFR5cGU6OkNTU19FTVMpOwotICAgIGF1dG8gZW1QaXhl
bHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAxLjAsIFdURjo6bnVsbG9wdCkp
OworICAgIGF1dG8gZW1QaXhlbHMgPSBlbVNpemUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAx
LjAsIHN0ZDo6bnVsbG9wdCkpOwogICAgIGF1dG8gZ2x5cGhTY2FsZSA9IDAuNjVmICogZW1QaXhl
bHMgLyBnbHlwaFNpemUud2lkdGgoKTsKICAgICBnbHlwaFNpemUgPSBnbHlwaFNjYWxlICogZ2x5
cGhTaXplOwogCkBAIC0yNTkwLDcgKzI1OTAsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1
c3RTZWFyY2hGaWVsZERlY29yYXRpb25QYXJ0U3R5bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjbwog
ICAgIGNvbnN0ZXhwciBpbnQgc2VhcmNoRmllbGREZWNvcmF0aW9uRW1TaXplID0gMTsKICAgICBj
b25zdGV4cHIgaW50IHNlYXJjaEZpZWxkRGVjb3JhdGlvbk1hcmdpbiA9IDQ7CiAKLSAgICBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25EYXRhKCZzdHlsZSwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgMS4wLCBXVEY6Om51bGxvcHQpOworICAgIENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEgY29udmVyc2lvbkRhdGEoJnN0eWxlLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCAxLjAsIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvIGVtU2l6ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUoc2VhcmNoRmllbGREZWNvcmF0aW9uRW1TaXplLCBDU1NVbml0VHlwZTo6Q1NT
X0VNUyk7CiAgICAgYXV0byBzaXplID0gZW1TaXplLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252
ZXJzaW9uRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXgg
MjAyYjM0MmE3MTg1ZmZhYTBlZThlZDA1NmFlODMzOTgwNzY1ZWY3Ni4uMjM2NDFmZGZkMTdkNmUz
MGYxMTdhOGQ0NTg2YzJiN2MzMzBkYTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkK
ICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFN0
YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9wYWdlTG9naWNh
bFNpemUudmFsdWVPcihMYXlvdXRTaXplKCkpLmhlaWdodCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZCk7CisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCB7
IH0sIGZhbHNlLCBtX3BhZ2VMb2dpY2FsU2l6ZS52YWx1ZV9vcihMYXlvdXRTaXplKCkpLmhlaWdo
dCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2FsSGVp
Z2h0Q2hhbmdlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggMjI0ZWQ3Y2IzMTBjZWM3YWQ3NjJkN2ZmNjA2NTk4
MzVlZDg2NWI4MC4uMTIzNjZmODVmZTg2ZTg2YzRjN2ZjMzgxZTc3ZjQwMGJmODJiNDZmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApA
QCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXh0UnVuOwogY2xhc3MgVGV4dERlY29yYXRpb25QYWlu
dGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwotICAgIFRleHREZWNvcmF0aW9uUGFp
bnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IGRlY29yYXRp
b25zLCBjb25zdCBSZW5kZXJUZXh0JiwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2Nh
ZGUmLCBPcHRpb25hbDxTdHlsZXM+ID0gV1RGOjpudWxsb3B0KTsKKyAgICBUZXh0RGVjb3JhdGlv
blBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBkZWNv
cmF0aW9ucywgY29uc3QgUmVuZGVyVGV4dCYsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRD
YXNjYWRlJiwgT3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgCiAgICAgdm9p
ZCBzZXRJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsg
bV9pbmxpbmVUZXh0Qm94ID0gaW5saW5lVGV4dEJveDsgfQogICAgIHZvaWQgc2V0SXNIb3Jpem9u
dGFsKGJvb2wgaXNIb3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCmluZGV4IDE4ZTg0YmI0NWNiYzExYzUwYTlhMjBlOGIxZjIyYjk3MjBmMWQ0ZWMu
LmNkOTZiZDVhN2NjZDFkYjY5Yjg0OWQ2MDcwY2YxMjBmNWZmM2M0N2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGYKICAgICBpZiAobGluZVBv
c2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihSZW5kZXJCbG9j
azo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBs
aW5lUG9zaXRpb25Nb2RlKSk7CisgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVf
b3IoUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUs
IGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkpOwogfQogCiAjaWYgRU5BQkxFKERFQlVHX01B
VEhfTEFZT1VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oCmluZGV4IDNhNjFmZmVmMTNhZjVhN2M5OWU2ZDQ1MDk5OGY2MWI1YjI2
MTRhZWYuLjM1ZjY3YTkyOGNlNTI0MTZhZDBlZGEyNTljN2RiZjk1ZWY5YmQ0M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIExheW91dFVuaXQgYXNj
ZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdodCgp
LnRvSW50KCkpOworICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1
ZV9vcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkudG9JbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBs
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxI
ZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IDA4MTRlNTIzMWEyMzBj
NGM3NmJkOGNjYjJiMzgzMTg3YmQ3Yjk3MGQuLjRiMDFlYzIyNmFlMzZjYzU5NTQ4Y2Y5MjdjZThm
YzE2YTNlYzFiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtNzMsNyArNzMsNyBAQCBPcHRpb25hbDxS
ZW5kZXJNYXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0
czo6dmFsaWRhdGVBbgogICAgIC8vIFRoZSBmaXJzdCBjaGlsZCBpcyB0aGUgYmFzZS4KICAgICBh
dXRvIGJhc2UgPSBmaXJzdENoaWxkQm94KCk7CiAgICAgaWYgKCFiYXNlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgUmVm
ZXJlbmNlQ2hpbGRyZW4gcmVmZXJlbmNlOwogICAgIHJlZmVyZW5jZS5iYXNlID0gYmFzZTsKQEAg
LTk0LDcgKzk0LDcgQEAgT3B0aW9uYWw8UmVuZGVyTWF0aE1MU2NyaXB0czo6UmVmZXJlbmNlQ2hp
bGRyZW4+IFJlbmRlck1hdGhNTFNjcmlwdHM6OnZhbGlkYXRlQW4KICAgICAgICAgLy8gPG1vdmVy
PiBiYXNlIG92ZXJzY3JpcHQgPC9tb3Zlcj4KICAgICAgICAgYXV0byBzY3JpcHQgPSBiYXNlLT5u
ZXh0U2libGluZ0JveCgpOwogICAgICAgICBpZiAoIXNjcmlwdCB8fCBpc1ByZXNjcmlwdERlbGlt
aXRlcigqc2NyaXB0KSB8fCBzY3JpcHQtPm5leHRTaWJsaW5nQm94KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgcmVmZXJlbmNlLmZpcnN0UG9zdFNjcmlwdCA9IHNjcmlwdDsKICAgICAgICAgcmV0dXJu
IHJlZmVyZW5jZTsKICAgICB9CkBAIC0xMDYsMTAgKzEwNiwxMCBAQCBPcHRpb25hbDxSZW5kZXJN
YXRoTUxTY3JpcHRzOjpSZWZlcmVuY2VDaGlsZHJlbj4gUmVuZGVyTWF0aE1MU2NyaXB0czo6dmFs
aWRhdGVBbgogICAgICAgICAvLyA8bXVuZGVyb3Zlcj4gYmFzZSBzdWJzY3JpcHQgc3VwZXJzY3Jp
cHQgPC9tdW5kZXJvdmVyPgogICAgICAgICBhdXRvIHN1YlNjcmlwdCA9IGJhc2UtPm5leHRTaWJs
aW5nQm94KCk7CiAgICAgICAgIGlmICghc3ViU2NyaXB0IHx8IGlzUHJlc2NyaXB0RGVsaW1pdGVy
KCpzdWJTY3JpcHQpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gc3VwZXJTY3JpcHQgPSBzdWJT
Y3JpcHQtPm5leHRTaWJsaW5nQm94KCk7CiAgICAgICAgIGlmICghc3VwZXJTY3JpcHQgfHwgaXNQ
cmVzY3JpcHREZWxpbWl0ZXIoKnN1cGVyU2NyaXB0KSB8fCBzdXBlclNjcmlwdC0+bmV4dFNpYmxp
bmdCb3goKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZWZlcmVuY2UuZmlyc3RQb3N0U2NyaXB0ID0g
c3ViU2NyaXB0OwogICAgICAgICByZXR1cm4gcmVmZXJlbmNlOwogICAgIH0KQEAgLTEzOSwxOSAr
MTM5LDE5IEBAIE9wdGlvbmFsPFJlbmRlck1hdGhNTFNjcmlwdHM6OlJlZmVyZW5jZUNoaWxkcmVu
PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjp2YWxpZGF0ZUFuCiAgICAgICAgICAgICBpZiAoaXNQcmVz
Y3JpcHREZWxpbWl0ZXIoKnNjcmlwdCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEg
PG1wcmVzY3JpcHRzLz4uIExldCdzIGNoZWNrIDJhKSBhbmQgMmMpLgogICAgICAgICAgICAgICAg
IGlmICghbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gfHwgcmVmZXJlbmNlLmZpcnN0UHJlU2NyaXB0KQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIHJlZmVyZW5jZS5maXJz
dFByZVNjcmlwdCA9IHNjcmlwdC0+bmV4dFNpYmxpbmdCb3goKTsgLy8gV2UgZG8gMSkuCiAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlLnByZXNjcmlwdERlbGltaXRlciA9IHNjcmlwdDsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG51bWJlck9m
U2NyaXB0SXNFdmVuID0gIW51bWJlck9mU2NyaXB0SXNFdmVuOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBudW1iZXJPZlNjcmlwdElzRXZlbiA/IE9wdGlvbmFsPFJlZmVyZW5jZUNoaWxkcmVu
PihyZWZlcmVuY2UpIDogV1RGOjpudWxsb3B0OyAvLyBXZSB2ZXJpZnkgMmIpLgorICAgICAgICBy
ZXR1cm4gbnVtYmVyT2ZTY3JpcHRJc0V2ZW4gPyBPcHRpb25hbDxSZWZlcmVuY2VDaGlsZHJlbj4o
cmVmZXJlbmNlKSA6IHN0ZDo6bnVsbG9wdDsgLy8gV2UgdmVyaWZ5IDJiKS4KICAgICB9CiAgICAg
fQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBMYXlvdXRVbml0IFJlbmRlck1hdGhNTFNj
cmlwdHM6OnNwYWNlQWZ0ZXJTY3JpcHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCBkOTlmNTNlNmRjMDQyYzVh
MWUzYTVlNGQ4NTYyZTAxYjYxMWRmZWQ2Li41ZjljZmIzYzk3ODhkZDZhM2FjMTQwNjE0MWRlYjM0
NDA1M2JkMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcApAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MVG9rZW46OnVwZGF0ZU1hdGhWYXJpYW50R2x5cGgoKQogewogICAgIEFTU0VSVChtX21hdGhW
YXJpYW50R2x5cGhEaXJ0eSk7CiAKLSAgICBtX21hdGhWYXJpYW50Q29kZVBvaW50ID0gV1RGOjpu
dWxsb3B0OworICAgIG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
bV9tYXRoVmFyaWFudEdseXBoRGlydHkgPSBmYWxzZTsKIAogICAgIC8vIEVhcmx5IHJldHVybiBp
ZiB0aGUgdG9rZW4gZWxlbWVudCBjb250YWlucyBSZW5kZXJFbGVtZW50cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCBj
ZTUzZDU1NDMzODdjMjY3ZGQzNmU4MjUzYTAwZmZhNzhhZWEyYjVhLi44Y2IyMWVmZWZjZDEzODU2
OGRkNWFkNTAxMzZmZjJjNGQ5OWI4NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIG1fbWF0aFZhcmlhbnRHbHlwaERpcnR5ID0gdHJ1ZTsKICAgICAgICAgc2V0
TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQotICAgIE9wdGlvbmFsPFVD
aGFyMzI+IG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQgeyBXVEY6Om51bGxvcHQgfTsKKyAgICBPcHRp
b25hbDxVQ2hhcjMyPiBtX21hdGhWYXJpYW50Q29kZVBvaW50IHsgc3RkOjpudWxsb3B0IH07CiAg
ICAgYm9vbCBtX21hdGhWYXJpYW50SXNNaXJyb3JlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX21h
dGhWYXJpYW50R2x5cGhEaXJ0eSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAppbmRleCA3ZTJiMGI5NDRmNTZlZTNiZmM3
Njk0NWMwYjM1ZTNhOTU0YWY1ZGUyLi5kMjA0MTg5ODY3MTkzYzllNDE1ZDc5NWUxMmVjYjQwYzE5
MDRlNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uLmNwcApAQCAtODcsNyArODcsNyBAQCBpbnQgR3JpZFBvc2l0aW9uOjpzcGFuUG9zaXRpb24o
KSBjb25zdAogCiBpbnQgR3JpZFBvc2l0aW9uOjptYXgoKQogewotICAgIHJldHVybiBnTWF4UG9z
aXRpb25Gb3JUZXN0aW5nLnZhbHVlT3Ioa0dyaWRNYXhQb3NpdGlvbik7CisgICAgcmV0dXJuIGdN
YXhQb3NpdGlvbkZvclRlc3RpbmcudmFsdWVfb3Ioa0dyaWRNYXhQb3NpdGlvbik7CiB9CiAKIGlu
dCBHcmlkUG9zaXRpb246Om1pbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IGRmZTRhMjYzNjU3M2RhY2E2Njc4YjNhYjFkZGZiYWQx
MjIyNDk3ZmUuLjE0MTM3OWVkYTRmMGZhNmQ2ZTNjZGZmZmY3YWI5MTRmNWI0MjA1NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC05
MCw3ICs5MCw3IEBAIGlubGluZSBPcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNlSG9yaXpvbnRh
bFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKICAgICBpZiAocGllY2UgPT0gQm90dG9tTGVmdFBpZWNl
IHx8IHBpZWNlID09IEJvdHRvbVBpZWNlIHx8IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2UpCiAg
ICAgICAgIHJldHVybiBCb3hTaWRlOjpCb3R0b207CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBPcHRpb25hbDxCb3hTaWRl
PiBpbWFnZVBpZWNlVmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCkBAIC0xMDEsNyArMTAx
LDcgQEAgaW5saW5lIE9wdGlvbmFsPEJveFNpZGU+IGltYWdlUGllY2VWZXJ0aWNhbFNpZGUoSW1h
Z2VQaWVjZSBwaWVjZSkKICAgICBpZiAocGllY2UgPT0gVG9wUmlnaHRQaWVjZSB8fCBwaWVjZSA9
PSBSaWdodFBpZWNlIHx8IHBpZWNlID09IEJvdHRvbVJpZ2h0UGllY2UpCiAgICAgICAgIHJldHVy
biBCb3hTaWRlOjpSaWdodDsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogY2xhc3MgTmluZVBpZWNlSW1hZ2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA3Yzg3Y2IxM2JhZTJlYmJj
NjUxZTIyODljOGZjNzZkYjc2NTdhNTFlLi4xYTc1NjNkMDYxY2VlYjlmYTM2ZGI3NWE4NWQzOGZi
Mjk4M2M0MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaApAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQogICAgIFRleHRTaXplQWRqdXN0bWVudCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgQXV0b3NpemVT
dGF0dXMgYXV0b3NpemVTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlzSWRlbXBvdGVudFRleHRB
dXRvc2l6aW5nQ2FuZGlkYXRlKE9wdGlvbmFsPEF1dG9zaXplU3RhdHVzPiBvdmVycmlkZVN0YXR1
cyA9IFdURjo6bnVsbG9wdCkgY29uc3Q7CisgICAgYm9vbCBpc0lkZW1wb3RlbnRUZXh0QXV0b3Np
emluZ0NhbmRpZGF0ZShPcHRpb25hbDxBdXRvc2l6ZVN0YXR1cz4gb3ZlcnJpZGVTdGF0dXMgPSBz
dGQ6Om51bGxvcHQpIGNvbnN0OwogI2VuZGlmCiAKICAgICBUZXh0U2VjdXJpdHkgdGV4dFNlY3Vy
aXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFNlY3VyaXR5PihtX3JhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXggN2JmNDM5NmQ3N2QyYzBhNzFjMjkxNDM0YTY2ODEx
MzZkNjdiNjkzZC4uNDQwZjRhM2Q1MjMyYWFkMDA2NjBkOGIyODQxNzExZjNlYWFjYTJhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtNDEs
NyArNDEsNyBAQCBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCiBP
cHRpb25hbDxTaGFkb3dEYXRhPiBTaGFkb3dEYXRhOjpjbG9uZShjb25zdCBTaGFkb3dEYXRhKiBk
YXRhKQogewogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKmRhdGE7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNldC5o
CmluZGV4IDM4ZWQ5M2M5MWY2Y2I5ZjY0YzJjZjIwYjNjYmFmMDQyYjRhODFiNmIuLjgwN2U0ZGI4
Yjc5ODg0M2YzMzc1MzZmOTVlODg4Yzc4MGFmOTI0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaApAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCBsZW5ndGhPcihmbG9hdCBkZWZhdWx0VmFsdWUpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVPcihkZWZhdWx0VmFsdWUp
OworICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKICAgICB9
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAKaW5kZXggNDFlMjVmMTcyYjI2M2FiMzNmMjcwMWRiNDU0OGE0NzgwODU2M2Q2
Zi4uOTA5MGZmNTg5MzQxM2M4NzBjNjNlZTc2NWE4NTM4MzA4ODViYmQ1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAt
MTYxLDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElz
SW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCku
aW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVh
KCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
aW5kZXggNmIwM2NmMTFkMWY0NWM1YzYxY2UxYWNjY2Y4MGM1MzA3YjUwMTk3YS4uNDMwYjRiOTAz
N2NmY2JjYjZmN2YzYWU1OWM1YjEzYTdlMWJlNDlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgT3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
Y29tcHV0ZVZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QKICAgICBPcHRpb25hbDxGbG9hdFJl
Y3Q+IGFkanVzdGVkUmVjdCA9IGNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIocmVj
dCwgY29udGFpbmVyLCBjb250ZXh0KTsKICAgICBpZiAoYWRqdXN0ZWRSZWN0KQogICAgICAgICBy
ZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdCgqYWRqdXN0ZWRSZWN0KTsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0CkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpu
b2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBp
ZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7
CisgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAg
ICAgLy8gRWFybHkgZXhpdCBpZiBsb2NhbCBwb2ludCBpcyBub3QgY29udGFpbmVkIGluIGNsaXBw
ZWQgdmlld3BvcnQgYXJlYQogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlk
ZGVuKCp0aGlzKSAmJiAhbV92aWV3cG9ydC5jb250YWlucyhsb2NhbFBvaW50KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggOTU3Mzc4
MmM4ODU3ZjA5M2JhM2M5NjMwOTJkNjY2NDNlYTI2ZDMwOC4uOTExYjdmOGNhOGY2NWJjMGFhMmNl
ZGQ4M2ZkNTM5MjQ3OTAxZWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBib29sIFJlbmRlclNWR0lt
YWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdQogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRz
SGl0UnVsZXM6OlNWR19JTUFHRV9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJF
dmVudHMoKSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0g
VmlzaWJpbGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVx
dWlyZVZpc2libGUpIHsKLSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQ
b2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9j
YWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0o
KSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFT
VkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBjZjRhNzRj
Yjg4YTUyOWViYTIwZDc3NjI3OTg5ZTY2MmZjYzQxOTcyLi40MTliZjM0ZjRkM2RkZWY3MGVhOWE0
MTU1ZDBhMWU1OGIwMjMyZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNzQsMTAgKzI3NCwx
MCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNv
bnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94Lmxv
Y2F0aW9uKCkpOwogICAgICAgICB0cmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6
ZSgpKTsKLSAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgcG9pbnQgPSB0cmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CiAg
ICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
KTsKKyAgICBwb2ludCA9IGNsaXBQYXRoRWxlbWVudCgpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsK
IAogICAgIGZvciAoTm9kZSogY2hpbGROb2RlID0gY2xpcFBhdGhFbGVtZW50KCkuZmlyc3RDaGls
ZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkgewog
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGROb2RlLT5yZW5kZXJlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAppbmRleCBhZWM2Njk1YzI4NzhlZDI4YzM4OTQ5Y2Q5MGE1ODBlOTk2YTJh
NmFlLi40MTYyYjgxZmYzYmFjOGNjMWMyZDhmNDg5MTgxNDk5MWVjNzU1N2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljCiAKICAg
ICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gbGFzdEVmZmVjdC0+aW1hZ2VCdWZmZXJS
ZXN1bHQoKTsKICAgICAgICAgaWYgKHJlc3VsdEltYWdlKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5jb25jYXRDVE0oZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkpOworICAgICAgICAgICAgY29udGV4dC0+Y29u
Y2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0
aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkp
OwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKCpyZXN1bHRJbWFnZSwgbGFz
dEVmZmVjdC0+YWJzb2x1dGVQYWludFJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA4YTA5NzZjNjlmZTA3ODIyMWY5YmY1YjA1
Yjk2MDIzMmNkMjcyMmNjLi40N2IyNWExMGE3Mjg2NDkwYmI1MTE4NTRhMWJjNDcyZjhlMjhiYTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
QEAgLTM4Miw3ICszODIsNyBAQCBPcHRpb25hbDxGbG9hdFJlY3Q+IFJlbmRlclNWR1Jvb3Q6OmNv
bXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29uc3QgRmxvYQogICAgIGlmIChzaG91
bGRBcHBseVZpZXdwb3J0Q2xpcCgpKSB7CiAgICAgICAgIGlmIChjb250ZXh0Lm9wdGlvbnMuY29u
dGFpbnMoVmlzaWJsZVJlY3RDb250ZXh0T3B0aW9uOjpVc2VFZGdlSW5jbHVzaXZlSW50ZXJzZWN0
aW9uKSkgewogICAgICAgICAgICAgaWYgKCFhZGp1c3RlZFJlY3QuZWRnZUluY2x1c2l2ZUludGVy
c2VjdChzbmFwcGVkSW50UmVjdChib3JkZXJCb3hSZWN0KCkpKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LmludGVyc2VjdChzbmFw
cGVkSW50UmVjdChib3JkZXJCb3hSZWN0KCkpKTsKICAgICB9CkBAIC0zOTYsNyArMzk2LDcgQEAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBSZW5kZXJTVkdSb290Ojpjb21wdXRlRmxvYXRWaXNpYmxlUmVj
dEluQ29udGFpbmVyKGNvbnN0IEZsb2EKIAogICAgIGlmIChPcHRpb25hbDxMYXlvdXRSZWN0PiBy
ZWN0SW5Db250YWluZXIgPSBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVZpc2libGVSZWN0SW5Db250
YWluZXIoZW5jbG9zaW5nSW50UmVjdChhZGp1c3RlZFJlY3QpLCBjb250YWluZXIsIGNvbnRleHQp
KQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCpyZWN0SW5Db250YWluZXIpOwotICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gVGhpcyBt
ZXRob2QgZXhwZWN0cyBsb2NhbCBDU1MgYm94IGNvb3JkaW5hdGVzLgpAQCAtNDM0LDcgKzQzNCw3
IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgLy8gVGVzdCBTVkcgY29udGVudCBpZiB0
aGUgcG9pbnQgaXMgaW4gb3VyIGNvbnRlbnQgYm94IG9yIGl0IGlzIGluc2lkZSB0aGUgdmlzdWFs
T3ZlcmZsb3dSZWN0IGFuZCB0aGUgb3ZlcmZsb3cgaXMgdmlzaWJsZS4KICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMg
YXJlIHN1cHBvcnRlZCBieSBub2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94UmVj
dCgpLmNvbnRhaW5zKHBvaW50SW5Cb3JkZXJCb3gpIHx8ICghc2hvdWxkQXBwbHlWaWV3cG9ydENs
aXAoKSAmJiB2aXN1YWxPdmVyZmxvd1JlY3QoKS5jb250YWlucyhwb2ludEluUGFyZW50KSkpIHsK
LSAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50
KHBvaW50SW5QYXJlbnQpKTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxU
b1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSku
bWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFyZW50KSk7CiAKICAgICAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IG5vZGVBdEZsb2F0UG9pbnQo
KSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0ZXN0cyB5ZXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGI1MzkxNjI3ZDU4MDViZDZi
Y2UzMDAwOWI5OGE2YzBkOTQ3MjM5NTcuLjNkZmQyNTdkMjU1NGE2N2MwNDAxZDU1OThmNGJhOWRl
MjJlZDQ2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSb290IjsgfQogCiAgICAgTGF5
b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJl
ZCAgPSBDb21wdXRlQWN0dWFsKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRVbml0IGNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVkVXNl
ZFdpZHRoID0gV1RGOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNv
bXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQoT3B0aW9uYWw8TGF5b3V0VW5pdD4gZXN0aW1hdGVk
VXNlZFdpZHRoID0gc3RkOjpudWxsb3B0KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGZhMDNhY2JkY2Q3ZmQ2ZmEyMTY2OTM5YjNiY2Yw
ZTA3N2Y1OTlkMDQuLjJhMzUzMDk4N2Y0MGRhOTdkYWU0MjFkNTBlZDNkNDY3MjU3ZDUwNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBA
IC0zNDYsNyArMzQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAoaGl0VGVz
dEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVPcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgRmxv
YXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFT
VkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggODUwZWNmNzFmNjIzMjVjYWQxNmI2ZDk4ZTlhZWIwZTE1
N2M4ODFjNC4uZmJlOWY0ZmE5ZDY4MGEzN2FlNmZkMzhjYjYyMzE4NDBkOWJhNmJkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIE9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVWaXNp
YmxlUmVjdEluQ29udGFpbmVyKGNvbnN0IExheW91dFJlCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBhZGp1c3RlZFJlY3QgPSBjb21wdXRlRmxvYXRWaXNpYmxlUmVjdEluQ29udGFpbmVyKHJlY3Qs
IGNvbnRhaW5lciwgY29udGV4dCk7CiAgICAgaWYgKGFkanVzdGVkUmVjdCkKICAgICAgICAgcmV0
dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoKmFkanVzdGVkUmVjdCk7Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxGbG9hdFJl
Y3Q+IFJlbmRlclNWR1RleHQ6OmNvbXB1dGVGbG9hdFZpc2libGVSZWN0SW5Db250YWluZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdApAQCAtNDM1LDcgKzQzNSw3IEBA
IGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMu
cmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYg
KHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9r
ZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdT
dHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAg
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsK
KyAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zv
cm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50
SW5QYXJlbnQpOwogCiAgICAgICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5D
bGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAppbmRleCAwYzc4NTIwNGZlNjcyYjQ3ZDNmNTU0OGYzMTMzMzU3ODgwOTJh
NDU0Li43MTg1MzI2YjYwYzQzODI2Y2U1MGZjMjVjNDRkODhlNWQwYzI4YjhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTQw
MSw3ICs0MDEsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlw
cGluZ0FyZWEoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogICAgICAgICByZWZlcmVuY2VC
b3ggPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtLm1hcFJlY3QocmVmZXJlbmNlQm94KTsKIAogICAg
ICAgICBhdXRvIHBhdGggPSBjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VC
b3gpOwotICAgICAgICBwYXRoLnRyYW5zZm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtLmludmVy
c2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKSk7CisgICAgICAgIHBhdGgudHJhbnNmb3Jt
KGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKSk7CiAKICAgICAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoLCBjbGlwUGF0aC53aW5kUnVs
ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiMWQ5Njg3NDcwZWJlNzg3MzY1MTIyZDA1ODgzMjJl
YzQxNGNlZWI2Li4zODc4OGI4YTIzMDI3MDBlMDE1YjNlM2Q4YWE0ZTAzMjNjNTY0ZTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogCiAgICAg
Ly8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRp
bmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNv
IHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0
ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBj
b250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpKTsKICAgICBjb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0
ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGFhNGU5YzZkZjdhMDIyMTlkNTk2Nzc2
MmM2YThkZTRhYmM4Yjc1ZmUuLjdiYmFiNzcyY2Y3ZWNiNDI4NjY5NmVjZDdkNDRhNDRjMWJiZWQz
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1Jl
bmRlclRyZWVCdWlsZGVyLmNwcApAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBSZW5kZXJUcmVl
QnVpbGRlcjo6cmVwb3J0VmlzdWFsbHlOb25FbXB0eUNvbnRlbnQoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcGFyZW4KICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKICAg
ICAgICAgICAgIGlmICghc3R5bGUud2lkdGgoKS5pc0ZpeGVkKCkgfHwgIXN0eWxlLmhlaWdodCgp
LmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgcmV0
dXJuIG1ha2VPcHRpb25hbChJbnRTaXplIHsgc3R5bGUud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHls
ZS5oZWlnaHQoKS5pbnRWYWx1ZSgpIH0pOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9v
cHRpb25hbChJbnRTaXplIHsgc3R5bGUud2lkdGgoKS5pbnRWYWx1ZSgpLCBzdHlsZS5oZWlnaHQo
KS5pbnRWYWx1ZSgpIH0pOwogICAgICAgICB9OwogICAgICAgICAvLyBTVkcgY29udGVudCB0ZW5k
cyB0byBoYXZlIGEgZml4ZWQgc2l6ZSBjb25zdHJ1Y3QuIEhvd2V2ZXIgdGhpcyBpcyBrbm93biB0
byBiZSBpbmFjY3VyYXRlIGluIGNlcnRhaW4gY2FzZXMgKGJveC1zaXppbmc6IGJvcmRlci1ib3gp
IG9yIGVzcGVjaWFsbHkgd2hlbiB0aGUgcGFyZW50IGJveCBpcyBvdmVyc2l6ZWQuCiAgICAgICAg
IGF1dG8gY2FuZGlkYXRlU2l6ZSA9IEludFNpemUgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNzVj
YjcwZWIzODM2NjY5YTY5MzRjMmM2YWNiZDI0MThkMmRkZGFhMi4uMDJiYjJmYWNlNmU2MzE0MjY5
YWY1MzFiMWExNjRhZTY1NjNmOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290KQog
UmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcykKICAgICA6IGVsZW1lbnQoJmVsZW1lbnQp
CiAgICAgLCB1cGRhdGVzKHVwZGF0ZXMpCi0gICAgLCByZW5kZXJUcmVlUG9zaXRpb24oZWxlbWVu
dC5yZW5kZXJlcigpID8gbWFrZU9wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlvbigqZWxlbWVudC5y
ZW5kZXJlcigpKSkgOiBXVEY6Om51bGxvcHQpCisgICAgLCByZW5kZXJUcmVlUG9zaXRpb24oZWxl
bWVudC5yZW5kZXJlcigpID8gc3RkOjptYWtlX29wdGlvbmFsKFJlbmRlclRyZWVQb3NpdGlvbigq
ZWxlbWVudC5yZW5kZXJlcigpKSkgOiBzdGQ6Om51bGxvcHQpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5oCmluZGV4IDZmOTRmZjFjNmM4NTM3MGIx
MjM4YmExNDBkZTA4YzVhMDVjYTJiYWQuLjFiMzMyZmRjMDEyNjE4NzA3YjAzYjcwOTE3MGMwZmZh
ZjJkODEyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3Iu
aApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTY29wZVJ1bGVTZXRzOwogCiBjbGFzcyBQc2V1ZG9F
bGVtZW50UmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgUHNldWRvRWxlbWVudFJlcXVlc3QoUHNldWRv
SWQgcHNldWRvSWQsIE9wdGlvbmFsPFN0eWxlU2Nyb2xsYmFyU3RhdGU+IHNjcm9sbGJhclN0YXRl
ID0gV1RGOjpudWxsb3B0KQorICAgIFBzZXVkb0VsZW1lbnRSZXF1ZXN0KFBzZXVkb0lkIHBzZXVk
b0lkLCBPcHRpb25hbDxTdHlsZVNjcm9sbGJhclN0YXRlPiBzY3JvbGxiYXJTdGF0ZSA9IHN0ZDo6
bnVsbG9wdCkKICAgICAgICAgOiBwc2V1ZG9JZChwc2V1ZG9JZCkKICAgICAgICAgLCBzY3JvbGxi
YXJTdGF0ZShzY3JvbGxiYXJTdGF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUu
aAppbmRleCA0NDE4ZmY2YWJlMTg5NDNiMDAzNWJmMmE4NWY1MWM4NTQzODkzNWVlLi4xY2QyZTNm
ZjU3YzBiZTlhYzczZmIxOGFjNjVkYjc5NTc0OTE2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVG
ZWF0dXJlLmgKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBNYXRjaEVsZW1lbnQgOiB1aW50
OF90IHsgU3ViamVjdCwgUGFyZW50LCBBbmNlc3RvciwgRGlyZWN0U2libGluZywgSW4KIGNvbnN0
ZXhwciB1bnNpZ25lZCBtYXRjaEVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihN
YXRjaEVsZW1lbnQ6Okhvc3QpICsgMTsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKLSAgICBSdWxl
RmVhdHVyZShjb25zdCBSdWxlRGF0YSYsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gPSBXVEY6Om51
bGxvcHQpOworICAgIFJ1bGVGZWF0dXJlKGNvbnN0IFJ1bGVEYXRhJiwgT3B0aW9uYWw8TWF0Y2hF
bGVtZW50PiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBSZWZQdHI8Y29uc3QgU3R5bGVSdWxlPiBz
dHlsZVJ1bGU7CiAgICAgdWludDE2X3Qgc2VsZWN0b3JJbmRleDsgLy8gS2VlcCBpbiBzeW5jIHdp
dGggUnVsZURhdGEncyBzZWxlY3RvckluZGV4IHNpemUuCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVj
dCBSdWxlRmVhdHVyZSB7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihSdWxlRmVhdHVyZSkgPD0gMTYs
ICJSdWxlRmVhdHVyZSBpcyBhIGZycXVlbnRseSBhbG9jYXRlZCBvYmplY3QuIEtlZXAgaXQgc21h
bGwuIik7CiAKIHN0cnVjdCBSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3RvciA6IHB1
YmxpYyBSdWxlRmVhdHVyZSB7Ci0gICAgUnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0
b3IoY29uc3QgUnVsZURhdGEmIGRhdGEsIE9wdGlvbmFsPE1hdGNoRWxlbWVudD4gbWF0Y2hFbGVt
ZW50ID0gV1RGOjpudWxsb3B0LCBjb25zdCBDU1NTZWxlY3RvciogaW52YWxpZGF0aW9uU2VsZWN0
b3IgPSBudWxscHRyKQorICAgIFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yKGNv
bnN0IFJ1bGVEYXRhJiBkYXRhLCBPcHRpb25hbDxNYXRjaEVsZW1lbnQ+IG1hdGNoRWxlbWVudCA9
IHN0ZDo6bnVsbG9wdCwgY29uc3QgQ1NTU2VsZWN0b3IqIGludmFsaWRhdGlvblNlbGVjdG9yID0g
bnVsbHB0cikKICAgICAgICAgOiBSdWxlRmVhdHVyZShkYXRhLCBXVEZNb3ZlKG1hdGNoRWxlbWVu
dCkpCiAgICAgICAgICwgaW52YWxpZGF0aW9uU2VsZWN0b3IoaW52YWxpZGF0aW9uU2VsZWN0b3Ip
CiAgICAgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
CmluZGV4IDRmZmZhMmIwODEzZjRiOWQ1NmU2MzBiN2YyZmIwZTA5NWIzOTg0MDcuLjA4ZWU4NTI2
ZGU2NTE0ZDBlNzFjNTUzMDdiMmM2MTdhMWZkYjA0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBpbmxpbmUg
T3B0aW9uYWw8R3JpZFBvc2l0aW9uPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZFBvc2l0
aW9uKEJ1aWxkZXJTdGF0ZQogICAgIEdyaWRQb3NpdGlvbiBncmlkUG9zaXRpb247CiAgICAgaWYg
KGNyZWF0ZUdyaWRQb3NpdGlvbih2YWx1ZSwgZ3JpZFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJu
IGdyaWRQb3NpdGlvbjsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGlubGluZSBHcmlkQXV0b0Zsb3cgQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdyaWRBdXRvRmxvdyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBA
IC0xMjMzLDE0ICsxMjMzLDE0IEBAIGlubGluZSBPcHRpb25hbDxmbG9hdD4gQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlCiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgIHJldHVybiBwZXJzcGVjdGl2ZSA8
IDAgPyBPcHRpb25hbDxmbG9hdD4oV1RGOjpudWxsb3B0KSA6IE9wdGlvbmFsPGZsb2F0PihwZXJz
cGVjdGl2ZSk7CisgICAgcmV0dXJuIHBlcnNwZWN0aXZlIDwgMCA/IE9wdGlvbmFsPGZsb2F0Pihz
dGQ6Om51bGxvcHQpIDogT3B0aW9uYWw8ZmxvYXQ+KHBlcnNwZWN0aXZlKTsKIH0KIAogaW5saW5l
IE9wdGlvbmFsPExlbmd0aD4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1l
bnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBMZW5ndGggbGVuZ3RoID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
IHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwogICAgIGlmIChsZW5ndGguaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCkBAIC0xMjQ5LDcgKzEyNDks
NyBAQCBpbmxpbmUgT3B0aW9uYWw8RmlsdGVyT3BlcmF0aW9ucz4gQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEZpbHRlck9wZXJhdGlvbnMoQnVpbAogICAgIEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0
aW9uczsKICAgICBpZiAoYnVpbGRlclN0YXRlLmNyZWF0ZUZpbHRlck9wZXJhdGlvbnModmFsdWUs
IG9wZXJhdGlvbnMpKQogICAgICAgICByZXR1cm4gb3BlcmF0aW9uczsKLSAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGlubGluZSBGb250RmVh
dHVyZVNldHRpbmdzIEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdz
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTEzMDUsNyArMTMwNSw3
IEBAIGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZv
bnRTdHJldGNoRnJvbVZhbHVlKGNvbnN0IENTCiAgICAgcmV0dXJuIG5vcm1hbFN0cmV0Y2hWYWx1
ZSgpOwogfQogCi0vLyBUaGUgaW5wdXQgdmFsdWUgbmVlZHMgdG8gcGFyc2VkIGFuZCB2YWxpZCwg
dGhpcyBmdW5jdGlvbiByZXR1cm5zIFdURjo6bnVsbG9wdCBpZiB0aGUgaW5wdXQgd2FzICJub3Jt
YWwiLgorLy8gVGhlIGlucHV0IHZhbHVlIG5lZWRzIHRvIHBhcnNlZCBhbmQgdmFsaWQsIHRoaXMg
ZnVuY3Rpb24gcmV0dXJucyBzdGQ6Om51bGxvcHQgaWYgdGhlIGlucHV0IHdhcyAibm9ybWFsIi4K
IGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGb250U3R5bGVGcm9tVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIEFT
U0VSVChpczxDU1NGb250U3R5bGVWYWx1ZT4odmFsdWUpKTsKQEAgLTEzMTMsNyArMTMxMyw3IEBA
IGlubGluZSBPcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGb250U3R5bGVGcm9tVmFsdWUoCiAKICAgICBhdXRvIHZhbHVlSUQgPSBmb250U3R5bGVW
YWx1ZS5mb250U3R5bGVWYWx1ZS0+dmFsdWVJRCgpOwogICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlTm9ybWFsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlSXRhbGljKQogICAgICAg
ICByZXR1cm4gaXRhbGljVmFsdWUoKTsKICAgICBBU1NFUlQodmFsdWVJRCA9PSBDU1NWYWx1ZU9i
bGlxdWUpOwpAQCAtMTU1OCw3ICsxNTU4LDcgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoQnVpbGRlclN0YXRlJiBidWlsZGUKIAog
ICAgIC8vIEZJWE1FOiBUaGUgcGFyc2VyIHNob3VsZCBvbmx5IGVtaXQgdGhlIGFib3ZlIHR5cGVz
LCBzbyB0aGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLiBXZSBzaG91bGQgY2hhbmdlIHRoZQog
ICAgIC8vIHR5cGUgb2YgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4ganVzdCBhIExlbmd0aCAoYW5k
IG5vdCBhbiBPcHRpb25hbCkuCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgRm9udFN5bnRoZXNpcyBCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Rm9udFN5bnRoZXNpcyhCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20u
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDdmZjZj
NjJkZmUzM2Y3MDQ1NGE3MGI3MjZjZTM0OTI4ZWU5OGI5YTUuLjdmMDFmOWNiYTUwOWMzYzdkOWE4
ZTRjNzkxNzY3NDAxNDNlOGQ1ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ckN1c3RvbS5oCkBAIC0xMzQ0LDkgKzEzNDQsOSBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ291bnRlcihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQog
ICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIG1hcCA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmFjY2Vz
c0NvdW50ZXJEaXJlY3RpdmVzKCk7CiAgICAgZm9yIChhdXRvJiBrZXlWYWx1ZSA6IG1hcCkgewog
ICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQotICAgICAgICAgICAga2V5VmFs
dWUudmFsdWUucmVzZXRWYWx1ZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIGtleVZhbHVl
LnZhbHVlLnJlc2V0VmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGtleVZhbHVlLnZhbHVlLmluY3JlbWVudFZhbHVlID0gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAga2V5VmFsdWUudmFsdWUuaW5jcmVtZW50VmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgaWYgKHNldENvdW50ZXJJbmNyZW1lbnRUb05vbmUpCkBAIC0xMzYwLDcgKzEzNjAs
NyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcihCdWlsZGVy
U3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQogICAgICAgICBpZiAoY291bnRlckJlaGF2aW9y
ID09IFJlc2V0KQogICAgICAgICAgICAgZGlyZWN0aXZlcy5yZXNldFZhbHVlID0gdmFsdWU7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgPSBzYXR1
cmF0ZWRTdW08aW50PihkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlT3IoMCksIHZhbHVl
KTsKKyAgICAgICAgICAgIGRpcmVjdGl2ZXMuaW5jcmVtZW50VmFsdWUgPSBzYXR1cmF0ZWRTdW08
aW50PihkaXJlY3RpdmVzLmluY3JlbWVudFZhbHVlLnZhbHVlX29yKDApLCB2YWx1ZSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JG
b250UmF3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcu
Y3BwCmluZGV4IDRiM2VlYTMyNjQxYjUzMDdiOGM4MjdkODk1MzU0MjA3NTUzNGUzZGMuLjQzNjg3
MDkyNTQ3MDVlYTA5YzI5YmY5YWUyOWZiYmVlOTEyMTdkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwCkBAIC05MCw3ICs5MCw3IEBAIE9w
dGlvbmFsPEZvbnRDYXNjYWRlPiByZXNvbHZlRm9yRm9udFJhdyhjb25zdCBGb250UmF3JiBmb250
UmF3LCBGb250Q2FzY2FkZURlc2NyCiAgICAgfQogCiAgICAgaWYgKGZhbWlsaWVzLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBmb250RGVzY3JpcHRpb24uc2V0RmFtaWxpZXMoZmFtaWxpZXMpOwogCiAgICAg
aWYgKHVzZUZpeGVkRGVmYXVsdFNpemUoZm9udERlc2NyaXB0aW9uKSAhPSBvbGRGYW1pbHlVc2Vk
Rml4ZWREZWZhdWx0U2l6ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxl
U2V0cy5jcHAKaW5kZXggZjE2NzliYzI0NjJiZDdhYjJjNmExYmRhMTM4YmRmOGFlMTcyNDM3Mi4u
ZTdmNjI0MzY0YjY2YjczYmMzZjY2MmU1NjYzNWMzZGZhMWQyZjk4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9p
ZCBTY29wZVJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBjb25zdAogICAgIG1fYXR0cmlidXRl
SW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKICAgICBtX3BzZXVkb0NsYXNzSW52YWxpZGF0
aW9uUnVsZVNldHMuY2xlYXIoKTsKIAotICAgIG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0Zv
clN0eWxlQXR0cmlidXRlID0gV1RGOjpudWxsb3B0OworICAgIG1fY2FjaGVkSGFzQ29tcGxleFNl
bGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlID0gc3RkOjpudWxsb3B0OwogCiAgICAgbV9mZWF0dXJl
cy5zaHJpbmtUb0ZpdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKaW5kZXggZmZi
OGY3MzFlMjFlY2Y3ZTk3YzZmMmMyN2FhNjNmNDJiYmJjM2ViMy4uYjY0NTgzOGE1MDljOTQ5ODI1
YzY4ZTM5ZmIxNmFlNDBlZjIxMjJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCkBA
IC0zMjksNyArMzI5LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHls
ZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWIKICAgICAgICAgICAgIC8v
IElmIGEgdHJhbnNpdGlvbiBoYXMgbm90IHlldCBzdGFydGVkIG9yIHN0YXJ0ZWQgd2hlbiBhbmlt
YXRpb25zIHdlcmUgbGFzdCB1cGRhdGVkLCB1c2UgdGhlIHRpbWVsaW5lIHRpbWUgYXQgaXRzIGNy
ZWF0aW9uCiAgICAgICAgICAgICAvLyBhcyBpdHMgc3RhcnQgdGltZSB0byBlbnN1cmUgdGhhdCBp
dCB3aWxsIHByb2R1Y2UgYSBzdHlsZSB3aXRoIHByb2dyZXNzID4gMC4KICAgICAgICAgICAgIGJv
b2wgc2hvdWxkVXNlVGltZWxpbmVUaW1lQXRDcmVhdGlvbiA9IGlzPENTU1RyYW5zaXRpb24+KGFu
aW1hdGlvbikgJiYgKCFhbmltYXRpb24tPnN0YXJ0VGltZSgpIHx8ICphbmltYXRpb24tPnN0YXJ0
VGltZSgpID09IHN0eWxlYWJsZS5lbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUoKS5jdXJyZW50
VGltZSgpKTsKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBu
dWxscHRyLCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NTVHJh
bnNpdGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+cmVzb2x2ZShhbmltYXRlZFN0eWxlLCBudWxs
cHRyLCBzaG91bGRVc2VUaW1lbGluZVRpbWVBdENyZWF0aW9uID8gZG93bmNhc3Q8Q1NTVHJhbnNp
dGlvbj4oKmFuaW1hdGlvbikudGltZWxpbmVUaW1lQXRDcmVhdGlvbigpIDogc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybiBhbmltYXRlZFN0eWxlOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggMTdmZDYxNzk0ZGMzM2NhNTQyYjgyZDhjYmNjNzU1NWMx
YmRmYjE4Zi4uNjRjMTFhOTU2ZTJkNjlhNzk3ZmMwYmU2MDkwNWIxMmQzZWVlN2YzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IFN0eWxlYWJsZSB7
CiAgICAgewogICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmcm9tRWxlbWVudCgqZWxlbWVudCk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlYWJsZSYgb3RoZXIpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCAwYTJkYjFm
MmM1ZWJlYmM1ZDdkYjFkYTBhOWJhNDk5NmQxNTQ1ZTNlLi5kZTQxOGQzMWQzZGM5NDE4ZTliNzRl
ZGUwMGE3NjA5YjczYjAxYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAKQEAgLTE2MCwyNSArMTYwLDI1IEBAIHZvaWQgU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKIAog
Ym9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlVG9BdEVuZE9mRHVyYXRpb25W
YWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKQogewotICAgIG1fdG9Q
b2ludEF0RW5kT2ZEdXJhdGlvbiA9IHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcp
LnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9
IHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQg
eyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29u
c3QgU3RyaW5nJiB0b1N0cmluZykKIHsKLSAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBX
VEY6Om51bGxvcHQ7Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21TdHJpbmcpLnZh
bHVlT3IoRmxvYXRQb2ludCB7IH0pOwotICAgIG1fdG9Qb2ludCA9IHBhcnNlUG9pbnQodG9TdHJp
bmcpLnZhbHVlT3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlv
biA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX2Zyb21Qb2ludCA9IHBhcnNlUG9pbnQoZnJvbVN0cmlu
ZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludCA9IHBhcnNlUG9pbnQo
dG9TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ICAgICAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRCeVZh
bHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7
Ci0gICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gV1RGOjpudWxsb3B0OworICAgIG1fdG9Q
b2ludEF0RW5kT2ZEdXJhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoYW5pbWF0aW9uTW9k
ZSgpID09IEFuaW1hdGlvbk1vZGU6OkJ5ICYmICFpc0FkZGl0aXZlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBtX2Zyb21Qb2ludCA9IHBhcnNlUG9pbnQoZnJvbVN0cmluZykudmFsdWVP
cihGbG9hdFBvaW50IHsgfSk7Ci0gICAgYXV0byBieVBvaW50ID0gcGFyc2VQb2ludChieVN0cmlu
ZykudmFsdWVPcihGbG9hdFBvaW50IHsgfSk7CisgICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50
KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBhdXRvIGJ5UG9pbnQg
PSBwYXJzZVBvaW50KGJ5U3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CiAgICAgbV90
b1BvaW50ID0gRmxvYXRQb2ludChtX2Zyb21Qb2ludC54KCkgKyBieVBvaW50LngoKSwgbV9mcm9t
UG9pbnQueSgpICsgYnlQb2ludC55KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKaW5kZXggNTFj
YTQyZWFhMTAwMzk3OGVkNzQ0M2Y4YjdiNjA4MTdjZDc2ODA2ZS4uZDE1M2QxNGJiODZhYWQ2YjVk
MDliMjAxZDNhYTVmYTUzNGUyMTk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGJvb2wgU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQ6Omhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIGNvbnN0CiB2b2lk
IFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6dHlwZUF0dHIpIHsKLSAgICAgICAgbV90eXBlID0gU1ZHVHJhbnNmb3JtYWJs
ZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKHZhbHVlKS52YWx1ZU9yKFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdfVFJBTlNGT1JNX1VOS05PV04pOworICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm1hYmxl
OjpwYXJzZVRyYW5zZm9ybVR5cGUodmFsdWUpLnZhbHVlX29yKFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdfVFJBTlNGT1JNX1VOS05PV04pOwogICAgICAgICBpZiAobV90eXBlID09IFNWR1RyYW5zZm9y
bVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWCkKICAgICAgICAgICAgIG1fdHlwZSA9IFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV047CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAppbmRleCA4YjFlZGE4OWYy
ZDQ2MGNjMTAzZjllMTcxNDdkNzgwNzY1OTRlYTJlLi5iMTNjMTkyMWQ4ZjkxOTBhZjFjZTJkMDEy
YzRhNTRiMTk1YzdiYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGZhaWw6CiBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFVu
aXRCZXppZXI+PiBwYXJzZUtleVNwbGluZXMoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgaWYg
KHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJz
aW5nKHN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBPcHRpb25hbDxWZWN0b3I8VW5pdEJlemll
cj4+IHsKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGJ1ZmZlcik7CkBAIC05NCwxOSAr
OTQsMTkgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxp
bmVzKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgICAgICAgICAgZGVsaW1QYXJzZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGF1dG8gcG9zQSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgICAgICAg
ICBpZiAoIXBvc0EpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBhdXRvIHBvc0Ig
PSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICAgICAgaWYgKCFwb3NCKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBwb3NDID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsK
ICAgICAgICAgICAgIGlmICghcG9zQykKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAg
IGF1dG8gcG9zRCA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3k6OkRv
bnRTa2lwKTsKICAgICAgICAgICAgIGlmICghcG9zRCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwogCkBAIC0xMTksNyArMTE5
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxVbml0QmV6aWVyPj4gcGFyc2VLZXlTcGxpbmVz
KFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEoYnVmZmVyLmF0
RW5kKCkgJiYgIWRlbGltUGFyc2VkKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZWZmNDQzYzQwNmY2
MGM3MGIwY2EwYWYwMjgzNGFhOWIzMDY2NzUxZC4uN2QyYjlkYTdlNDAzMTgyODAwZjQ1OTA2OGNm
MTA5M2MxN2Q5NjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtMzA0LDcgKzMw
NCw3IEBAIE9wdGlvbmFsPEZsb2F0UmVjdD4gU1ZHRWxlbWVudDo6Z2V0Qm91bmRpbmdCb3goKSBj
b25zdAogICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXItPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgfQotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogVmVj
dG9yPFJlZjxTVkdFbGVtZW50Pj4gU1ZHRWxlbWVudDo6cmVmZXJlbmNpbmdFbGVtZW50cygpIGNv
bnN0CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWwKIAogICAgIGlm
IChuYW1lID09IEhUTUxOYW1lczo6dGFiaW5kZXhBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBzZXRUYWJJbmRleEV4cGxpY2l0bHkoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShzdGQ6Om51bGxvcHQpOwogICAg
ICAgICBlbHNlIGlmIChhdXRvIG9wdGlvbmFsVGFiSW5kZXggPSBwYXJzZUhUTUxJbnRlZ2VyKHZh
bHVlKSkKICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseShvcHRpb25hbFRhYkluZGV4
LnZhbHVlKCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBlYWM4ZWY4OTkxODI2MGIwNTZjOTE2
YTgxMmI0YWJiY2Q1N2YxYzQ5Li5mNzUwNTgxNWRlY2FiYjRlYTM0YjQzNWI0N2VhNWE4MGM2YTI2
ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKQEAgLTEwNiwxMiArMTA2LDEyIEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0CiAg
ICAgfQogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhBdHRyKSB7Ci0gICAgICAg
IG1fdGFyZ2V0WC0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFs
dWUpLnZhbHVlT3IoMCkpOworICAgICAgICBtX3RhcmdldFgtPnNldEJhc2VWYWxJbnRlcm5hbChw
YXJzZUludGVnZXI8dW5zaWduZWQ+KHZhbHVlKS52YWx1ZV9vcigwKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIpIHsKLSAg
ICAgICAgbV90YXJnZXRZLT5zZXRCYXNlVmFsSW50ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVk
Pih2YWx1ZSkudmFsdWVPcigwKSk7CisgICAgICAgIG1fdGFyZ2V0WS0+c2V0QmFzZVZhbEludGVy
bmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4odmFsdWUpLnZhbHVlX29yKDApKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCmluZGV4IGMzMjQyNDNhZDdhNDhjOTAyODk4ZWE5OGVkY2NjZWUzMDVkZWQyZmUu
LjExNTYxMTE5ZDgzZTNmYzc4OGE0MmIxNDg2N2M2NTY0MTIzMzRhNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG8KICAgICB9CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6bnVtT2N0YXZlc0F0dHIpIHsKLSAgICAgICAgbV9udW1PY3RhdmVzLT5zZXRCYXNlVmFsSW50
ZXJuYWwocGFyc2VJbnRlZ2VyPHVuc2lnbmVkPih2YWx1ZSkudmFsdWVPcigwKSk7CisgICAgICAg
IG1fbnVtT2N0YXZlcy0+c2V0QmFzZVZhbEludGVybmFsKHBhcnNlSW50ZWdlcjx1bnNpZ25lZD4o
dmFsdWUpLnZhbHVlX29yKDApKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAppbmRleCAzNzc4YjRmOTQwNTZhMGFjZmU0NDA1Y2Y0
YzFjMjVlYzU3OWQwOWRiLi5lNjFlNjFhZmVlZGFhM2E1NmE0NzViY2E1OTUxYjBjYWUwMGYwNTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcApAQCAtMTE4LDMwICsxMTgs
MzAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYWw8RmxvYXRSZWN0
PiBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0IKIAogICAgICAgICBpZiAoIXggfHwgIXkgfHwg
IXdpZHRoIHx8ICFoZWlnaHQpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS5yZXBvcnRXYXJuaW5nKG1ha2VTdHJpbmcoIlByb2JsZW0gcGFyc2luZyB2aWV3Qm94
PVwiIiwgc3RyaW5nVG9QYXJzZSwgIlwiIikpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBDaGVjayB0aGF0IHdpZHRoIGlzIHBvc2l0aXZlLgogICAgICAgICBpZiAoKndpZHRo
IDwgMC4wKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVw
b3J0RXJyb3IoIkEgbmVnYXRpdmUgdmFsdWUgZm9yIFZpZXdCb3ggd2lkdGggaXMgbm90IGFsbG93
ZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBoZWln
aHQgaXMgcG9zaXRpdmUuCiAgICAgICAgIGlmICgqaGVpZ2h0IDwgMC4wKSB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVwb3J0RXJyb3IoIkEgbmVnYXRpdmUg
dmFsdWUgZm9yIFZpZXdCb3ggaGVpZ2h0IGlzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIE5vdGhpbmcgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGxhc3Qs
IGZvdXJ0aCBudW1iZXIuCiAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwog
ICAgICAgICBpZiAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSkgewogICAgICAgICAg
ICAgZG9jdW1lbnQuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlcG9ydFdhcm5pbmcobWFrZVN0cmlu
ZygiUHJvYmxlbSBwYXJzaW5nIHZpZXdCb3g9XCIiLCBzdHJpbmdUb1BhcnNlLCAiXCIiKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBGbG9hdFJlY3QgeyB4LnZh
bHVlT3IoMCksIHkudmFsdWVPcigwKSwgd2lkdGgudmFsdWVPcigwKSwgaGVpZ2h0LnZhbHVlT3Io
MCkgfTsKKyAgICByZXR1cm4gRmxvYXRSZWN0IHsgeC52YWx1ZV9vcigwKSwgeS52YWx1ZV9vcigw
KSwgd2lkdGgudmFsdWVfb3IoMCksIGhlaWdodC52YWx1ZV9vcigwKSB9OwogfQogCiBBZmZpbmVU
cmFuc2Zvcm0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGNvbnN0IEZs
b2F0UmVjdCYgdmlld0JveFJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYg
cHJlc2VydmVBc3BlY3RSYXRpbywgZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcAppbmRleCAxN2Y3ZTA3Nzli
Y2MzMTI3YWNkNGZjNzRhZjZlNDQyODY2ODQxMTNjLi43ZWQ2M2MyZGYyMGE2NWY0ODM2MTM0ZjM3
NGFmODM0NDlmZDgwYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhS
ZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBib29sIFNWR0dseXBoUmVmRWxlbWVudDo6aGFzVmFsaWRH
bHlwaEVsZW1lbnQoU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0CiAKIHN0YXRpYyBmbG9hdCBwYXJz
ZUZsb2F0KGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBwYXJzZU51bWJl
cih2YWx1ZSkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gcGFyc2VOdW1iZXIodmFsdWUpLnZhbHVl
X29yKDApOwogfQogCiB2b2lkIFNWR0dseXBoUmVmRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCmluZGV4IGU0ZWJmZmJjNWQ3ZWQ2YzZmODBlOWVl
MTAzZDkwNDZjOGUwOWYxMGUuLjY4MDdmNmJiNGIyZDg0NDAwMTU0OTBkZGVlM2U5YzFmNGVkNTA4
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuY3BwCkBAIC00OSwzMCArNDks
MzAgQEAgT3B0aW9uYWw8U1ZHS2VybmluZ1BhaXI+IFNWR0hLZXJuRWxlbWVudDo6YnVpbGRIb3Jp
em9udGFsS2VybmluZ1BhaXIoKSBjb25zdAogICAgIGF1dG8mIHUxID0gYXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTFBdHRyKTsKICAgICBhdXRvJiBnMSA9IGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmcxQXR0cik7CiAgICAgaWYgKHUx
LmlzRW1wdHkoKSAmJiBnMS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvJiB1MiA9IGF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OnUyQXR0cik7CiAgICAgYXV0byYgZzIg
PSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjpnMkF0dHIpOwogICAg
IGlmICh1Mi5pc0VtcHR5KCkgJiYgZzIuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBnbHlwaE5h
bWUxID0gcGFyc2VHbHlwaE5hbWUoZzEpOwogICAgIGlmICghZ2x5cGhOYW1lMSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIGdseXBoTmFtZTIgPSBwYXJzZUdseXBoTmFtZShnMik7CiAgICAgaWYgKCFnbHlwaE5hbWUy
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmluZzEgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5n
KHUxKTsKICAgICBpZiAoIXVuaWNvZGVTdHJpbmcxKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gdW5pY29kZVN0cmlu
ZzIgPSBwYXJzZUtlcm5pbmdVbmljb2RlU3RyaW5nKHUyKTsKICAgICBpZiAoIXVuaWNvZGVTdHJp
bmcyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGF1dG8ga2VybmluZyA9IGF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmtBdHRyKS5zdHJpbmcoKS50b0Zs
b2F0KCZvayk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTVkdLZXJuaW5nUGFpciB7
CiAgICAgICAgIFdURk1vdmUodW5pY29kZVN0cmluZzEtPmZpcnN0KSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoVmFsdWUuY3BwCmluZGV4IGRjODIwMmQ0NjczMmI5OWZkMmNhMjc4MTU4Y2VhYzZi
MWNiNTczMjQuLjc3NGY0M2VkZDRhMWU2NDVkZGE2MzQwODUzMjNhNzcyYWFkMjJlMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIE9wdGlv
bmFsPFNWR0xlbmd0aFZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGUgbGVuZ3RoTW9kZSwgU3RyCiB7CiAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoIHsgbGVuZ3Ro
TW9kZSB9OwogICAgIGlmIChsZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKS5o
YXNFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCmluZGV4IGIyMGUzZTcxMDhlOWQ4NzZhNDE2Yzhl
YjJiYmYxMTI2YjUyNDRmMWEuLmU1NDY1MzVmZjgwYjRkMWYxZTg2M2VmZDBjOGIyYzQxN2U5YWU1
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9h
dFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZsCiAgICAgfSAKICAgICAKICAgICBpZiAo
YnVmZmVyLmF0RW5kKCkgfHwgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikgJiYgKmJ1ZmZlciAhPSAn
LicpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgLy8gcmVhZCB0aGUgaW50ZWdlciBwYXJ0LCBidWlsZCByaWdodC10by1s
ZWZ0CiAgICAgYXV0byBwdHJTdGFydEludFBhcnQgPSBidWZmZXIucG9zaXRpb24oKTsKQEAgLTc5
LDcgKzc5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZs
b2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwKICAgICAgICAgfQogICAgICAgICAv
LyBCYWlsIG91dCBlYXJseSBpZiB0aGlzIG92ZXJmbG93cy4KICAgICAgICAgaWYgKCFpc1ZhbGlk
UmFuZ2UoaW50ZWdlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICAvLyByZWFkIHRoZSBkZWNp
bWFscwpAQCAtODgsNyArODgsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwg
dHlwZW5hbWUgRmxvYXRUeXBlID0gZmxvYXQ+IHN0YXRpYyBPcHRpb25hbDxGbAogICAgICAgICAK
ICAgICAgICAgLy8gVGhlcmUgbXVzdCBiZSBhIGxlYXN0IG9uZSBkaWdpdCBmb2xsb3dpbmcgdGhl
IC4KICAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpIHx8ICFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIHdoaWxlIChidWZmZXIuaGFzQ2hhcmFjdGVy
c1JlbWFpbmluZygpICYmIGlzQVNDSUlEaWdpdCgqYnVmZmVyKSkKICAgICAgICAgICAgIGRlY2lt
YWwgKz0gKCooYnVmZmVyKyspIC0gJzAnKSAqIChmcmFjICo9IHN0YXRpY19jYXN0PEZsb2F0VHlw
ZT4oMC4xKSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0PiBzdGF0aWMgT3B0aW9uYWw8RmwKICAg
ICAgICAgCiAgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgYW4gZXhwb25lbnQKICAgICAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpIHx8ICFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1haW5pbmcoKSAmJiBpc0FTQ0lJ
RGlnaXQoKmJ1ZmZlcikpIHsKICAgICAgICAgICAgIGV4cG9uZW50ICo9IHN0YXRpY19jYXN0PEZs
b2F0VHlwZT4oMTApOwpAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlLCB0eXBlbmFtZSBGbG9hdFR5cGUgPSBmbG9hdD4gc3RhdGljIE9wdGlvbmFsPEZs
CiAgICAgICAgIH0KICAgICAgICAgLy8gTWFrZSBzdXJlIGV4cG9uZW50IGlzIHZhbGlkLgogICAg
ICAgICBpZiAoIWlzVmFsaWRSYW5nZShleHBvbmVudCkgfHwgZXhwb25lbnQgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPEZsb2F0VHlwZT46Om1heF9leHBvbmVudCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAog
ICAgIG51bWJlciA9IGludGVnZXIgKyBkZWNpbWFsOwpAQCAtMTI4LDEwICsxMjgsMTAgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIEZsb2F0VHlwZSA9IGZsb2F0
PiBzdGF0aWMgT3B0aW9uYWw8RmwKIAogICAgIC8vIERvbid0IHJldHVybiBJbmZpbml0eSgpIG9y
IE5hTigpLgogICAgIGlmICghaXNWYWxpZFJhbmdlKG51bWJlcikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc3Rh
cnQgPT0gYnVmZmVyLnBvc2l0aW9uKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoc2tpcCA9PSBTdWZmaXhTa2lw
cGluZ1BvbGljeTo6U2tpcCkKICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzT3JEZWxpbWl0
ZXIoYnVmZmVyKTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBPcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1i
ZXIoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQog
ICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbc2tpcF0oYXV0byBi
dWZmZXIpIC0+IE9wdGlvbmFsPGZsb2F0PiB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ2VuZXJp
Y1BhcnNlTnVtYmVyKGJ1ZmZlciwgc2tpcCk7CiAgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KTsKIH0KQEAgLTE2NCw3
ICsxNjQsNyBAQCBPcHRpb25hbDxmbG9hdD4gcGFyc2VOdW1iZXIoY29uc3QgU3RyaW5nVmlldyYg
c3RyaW5nLCBTdWZmaXhTa2lwcGluZ1BvbGljeSBza2lwKQogdGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IE9wdGlvbmFsPGJvb2w+IGdlbmVyaWNQYXJzZUFyY0ZsYWcoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmIChidWZmZXIuYXRF
bmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGNvbnN0IENoYXJhY3RlclR5cGUgZmxhZ0NoYXIgPSAqYnVmZmVyOwog
ICAgICsrYnVmZmVyOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBPcHRpb25hbDxib29sPiBnZW5lcmljUGFyc2VBcmNGbGFnKFN0cmluZ1BhcnNp
CiAgICAgZWxzZSBpZiAoZmxhZ0NoYXIgPT0gJzEnKQogICAgICAgICBmbGFnID0gdHJ1ZTsKICAg
ICBlbHNlCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXNPckRlbGltaXRlcihidWZmZXIp
OwogICAgIApAQCAtMTk1LDIyICsxOTUsMjIgQEAgT3B0aW9uYWw8Ym9vbD4gcGFyc2VBcmNGbGFn
KFN0cmluZ1BhcnNpbmdCdWZmZXI8VUNoYXI+JiBidWZmZXIpCiBPcHRpb25hbDxzdGQ6OnBhaXI8
ZmxvYXQsIGZsb2F0Pj4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
cmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IE9wdGlv
bmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAgICAgICAgIGF1dG8geCA9IHBhcnNlTnVt
YmVyKGJ1ZmZlcik7CiAgICAgICAgIGlmICgheCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChi
dWZmZXIuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigqeCwgKngp
OwogCiAgICAgICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQ
b2xpY3k6OkRvbnRTa2lwKTsKICAgICAgICAgaWYgKCF5KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
aWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcigqeCwgKnkpOwogICAgIH0pOwpAQCAtMjE5LDE1ICsyMTksMTUgQEAgT3B0aW9uYWw8
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoY29uc3Qg
U3RyaW5nVmlldyYgc3QKIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlUG9pbnQoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAt
PiBPcHRpb25hbDxGbG9hdFBvaW50PiB7CiAgICAgICAgIGlmICghc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzKGJ1ZmZlcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHBvaW50ID0gcGFyc2VGbG9h
dFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICAvLyBEaXNhbGxvdyBhbnl0aGluZyBleGNlcHQgc3BhY2VzIGF0IHRoZSBlbmQuCiAgICAgICAg
IHNraXBPcHRpb25hbFNWR1NwYWNlcyhidWZmZXIpOwpAQCAtMjQzLDE2ICsyNDMsMTYgQEAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBwYXJzZVJlY3QoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nKQogICAg
ICAgICAKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAgICAgaWYg
KCF4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAg
ICAgICAgIGlmICgheSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRvIHdpZHRoID0gcGFyc2VOdW1i
ZXIoYnVmZmVyKTsKICAgICAgICAgaWYgKCF3aWR0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IGhlaWdodCA9IHBhcnNlTnVtYmVyKGJ1ZmZlciwgU3VmZml4U2tpcHBpbmdQb2xpY3k6OkRvbnRT
a2lwKTsKICAgICAgICAgaWYgKCFoZWlnaHQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4g
RmxvYXRSZWN0IHsgKngsICp5LCAqd2lkdGgsICpoZWlnaHQgfTsKICAgICB9KTsKQEAgLTI5Myw3
ICsyOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgT3B0aW9u
YWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNvZGVSYW5nZQogewogICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKTsKICAgICBpZiAobGVuZ3RoIDwgMiB8fCBidWZm
ZXJbMF0gIT0gJ1UnIHx8IGJ1ZmZlclsxXSAhPSAnKycpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBidWZmZXIgKz0gMjsK
IApAQCAtMzA2LDcgKzMwNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBPcHRpb25hbDxVbmljb2RlUmFuZ2U+IHBhcnNlVW5pY29kZVJhbmdlCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgKytzdGFydExlbmd0aDsKICAgICAgICAgaWYgKHN0YXJ0TGVuZ3Ro
ID4gNikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzdGFydFJhbmdlID0gKHN0YXJ0UmFuZ2UgPDwgNCkg
fCB0b0FTQ0lJSGV4VmFsdWUoKmJ1ZmZlcik7CiAgICAgICAgICsrYnVmZmVyOwogICAgIH0KQEAg
LTMxNCw3ICszMTQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
T3B0aW9uYWw8VW5pY29kZVJhbmdlPiBwYXJzZVVuaWNvZGVSYW5nZQogICAgIC8vIEhhbmRsZSB0
aGUgY2FzZSBvZiByYW5nZXMgc2VwYXJhdGVkIGJ5ICItIiBzaWduLgogICAgIGlmICgyICsgc3Rh
cnRMZW5ndGggPCBsZW5ndGggJiYgKmJ1ZmZlciA9PSAnLScpIHsKICAgICAgICAgaWYgKCFzdGFy
dExlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgLy8gUGFyc2UgdGhlIGVuZGlu
ZyBoZXggbnVtYmVyIChvciBpdHMgcHJlZml4KS4KICAgICAgICAgdW5zaWduZWQgZW5kUmFuZ2Ug
PSAwOwpAQCAtMzI1LDEzICszMjUsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5nZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICsrZW5kTGVuZ3RoOwogICAgICAgICAgICAg
aWYgKGVuZExlbmd0aCA+IDYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgZW5kUmFu
Z2UgPSAoZW5kUmFuZ2UgPDwgNCkgfCB0b0FTQ0lJSGV4VmFsdWUoKmJ1ZmZlcik7CiAgICAgICAg
ICAgICArK2J1ZmZlcjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKCFlbmRMZW5n
dGgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgICAgIFVuaWNvZGVSYW5nZSByYW5nZTsKICAg
ICAgICAgcmFuZ2UuZmlyc3QgPSBzdGFydFJhbmdlOwpAQCAtMzQ2LDE0ICszNDYsMTQgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFVuaWNvZGVSYW5n
ZT4gcGFyc2VVbmljb2RlUmFuZ2UKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICArK3N0YXJ0
TGVuZ3RoOwogICAgICAgICBpZiAoc3RhcnRMZW5ndGggPiA2KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHN0YXJ0UmFuZ2UgPDw9IDQ7CiAgICAgICAgIGVuZFJhbmdlID0gKGVuZFJhbmdlIDw8IDQpIHwg
MHhGOwogICAgICAgICArK2J1ZmZlcjsKICAgICB9CiAgICAgCiAgICAgaWYgKCFzdGFydExlbmd0
aCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBVbmljb2RlUmFuZ2UgcmFuZ2U7CiAgICAgcmFuZ2UuZmlyc3QgPSBz
dGFydFJhbmdlOwpAQCAtMzk3LDExICszOTcsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxGbG9hdFBvaW50PiBnZW5lcmljUGFyc2VGbG9hdFAK
IHsKICAgICBhdXRvIHggPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgIGlmICgheCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8geSA9IHBhcnNlTnVtYmVyKGJ1ZmZlcik7CiAgICAgaWYgKCF5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIEZsb2F0UG9pbnQgeyAqeCwgKnkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJs
ZW5kZXIuY3BwCmluZGV4IDIxYzJhMjE3YjEyOWEzNjUzMzg1YzBiOTgwODY4NWI1ZWE2N2EzMTIu
LjUxNTBjODI3ZDU0NjNjOTYyMDE3OTFhZjk0NGU3Y2VlN2FiODllZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhCbGVuZGVyLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rpb24+IHN0YXRpYyBPcHRpb25hbDxSZXN1bHRQYWlyPEZ1bmN0aW9uPj4gcHVs
bEZyb21Tb3VyY2UKICAgICBpZiAoZnJvbVNvdXJjZS5oYXNNb3JlRGF0YSgpKSB7CiAgICAgICAg
IGF1dG8gcGFyc2VkRnJvbSA9IHN0ZDo6aW52b2tlKGZ1bmN0aW9uLCBmcm9tU291cmNlKTsKICAg
ICAgICAgaWYgKCFwYXJzZWRGcm9tKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGZyb21SZXN1bHQgPSBX
VEZNb3ZlKCpwYXJzZWRGcm9tKTsKICAgICB9CiAKICAgICBhdXRvIHBhcnNlZFRvID0gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0aW9uPihmdW5jdGlvbiksIHRvU291cmNlKTsKICAgICBp
ZiAoIXBhcnNlZFRvKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFJlc3VsdFBhaXI8RnVuY3Rpb24+IHsgV1RG
TW92ZShmcm9tUmVzdWx0KSwgV1RGTW92ZSgqcGFyc2VkVG8pIH07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdC5oCmluZGV4IDk0ZjZmMzllNGUxZjFiNjc0NDMzY2EyNTAxNTM4MThmNGY2
MmZlNDIuLmNlODdiMGI2MmU2NjlmODdkMzM5NDM0YzQ0ZjA3NDViNWQ5YzU3MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCkBAIC0yMTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICB2b2lkIGNsZWFyUGF0aEJ5dGVTdHJlYW0oKSB7IG1fcGF0aEJ5dGVTdHJlYW0u
Y2xlYXIoKTsgfQotICAgIHZvaWQgY2xlYXJQYXRoKCkgeyBtX3BhdGggPSBXVEY6Om51bGxvcHQ7
IH0KKyAgICB2b2lkIGNsZWFyUGF0aCgpIHsgbV9wYXRoID0gc3RkOjpudWxsb3B0OyB9CiAKICAg
ICB2b2lkIHBhdGhCeXRlU3RyZWFtV2lsbENoYW5nZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhTdHJpbmdTb3VyY2UuY3BwCmluZGV4IDQ2MWQyOGQ1NjZiMGU4ZjFiMGM2OTFh
YmQxNTljMDk1NjZhZDM2ZWQuLjliYmU5MzM5ZDYyYTVmMjMyYmNmYTA4OWY4ZjY3MzAxYmE0ZTJl
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRp
b25hbDxTVkdQYXRoU2VnVHlwZT4gbmV4dENvbW1hbmRIZWwKICAgICAgICAgcmV0dXJuIHByZXZp
b3VzQ29tbWFuZDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIFNWR1BhdGhTZWdUeXBlIFNWR1BhdGhTdHJpbmdTb3VyY2U6
Om5leHRDb21tYW5kKFNWR1BhdGhTZWdUeXBlIHByZXZpb3VzQ29tbWFuZCkKQEAgLTE0Miw3ICsx
NDIsNyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpNb3ZlVG9TZWdtZW50PiBTVkdQYXRoU3Ry
aW5nU291cmNlOjpwYXJzZU1vdmVUb1NlZ21lbnQoKQogICAgIHJldHVybiBwYXJzZShbXShhdXRv
JiBidWZmZXIpIC0+IE9wdGlvbmFsPE1vdmVUb1NlZ21lbnQ+IHsKICAgICAgICAgYXV0byB0YXJn
ZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBv
aW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBNb3ZlVG9TZWdtZW50IHNlZ21lbnQ7
CiAgICAgICAgIHNlZ21lbnQudGFyZ2V0UG9pbnQgPSBXVEZNb3ZlKCp0YXJnZXRQb2ludCk7CkBA
IC0xNTUsNyArMTU1LDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6TGluZVRvU2VnbWVudD4g
U1ZHUGF0aFN0cmluZ1NvdXJjZTo6cGFyc2VMaW5lVG9TZWdtZW50KCkKICAgICByZXR1cm4gcGFy
c2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxMaW5lVG9TZWdtZW50PiB7CiAgICAgICAg
IGF1dG8gdGFyZ2V0UG9pbnQgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYg
KCF0YXJnZXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgTGluZVRvU2VnbWVu
dCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gV1RGTW92ZSgqdGFyZ2V0
UG9pbnQpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkxpbmVU
b0hvcml6b250YWxTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUxpbmVUCiAgICAg
cmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8TGluZVRvSG9yaXpvbnRh
bFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byB4ID0gcGFyc2VOdW1iZXIoYnVmZmVyKTsKICAgICAg
ICAgaWYgKCF4KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnggPSAqeDsKQEAgLTE4MSw3ICsxODEs
NyBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpMaW5lVG9WZXJ0aWNhbFNlZ21lbnQ+IFNWR1Bh
dGhTdHJpbmdTb3VyY2U6OnBhcnNlTGluZVRvVgogICAgIHJldHVybiBwYXJzZShbXShhdXRvJiBi
dWZmZXIpIC0+IE9wdGlvbmFsPExpbmVUb1ZlcnRpY2FsU2VnbWVudD4gewogICAgICAgICBhdXRv
IHkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCiAgICAgICAgIExpbmVUb1ZlcnRpY2FsU2VnbWVudCBzZWdtZW50OwogICAgICAgICBz
ZWdtZW50LnkgPSAqeTsKQEAgLTE5NCwxNSArMTk0LDE1IEBAIE9wdGlvbmFsPFNWR1BhdGhTb3Vy
Y2U6OkN1cnZlVG9DdWJpY1NlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBhcnNlQ3VydmVU
b0N1CiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVU
b0N1YmljU2VnbWVudD4gewogICAgICAgICBhdXRvIHBvaW50MSA9IHBhcnNlRmxvYXRQb2ludChi
dWZmZXIpOwogICAgICAgICBpZiAoIXBvaW50MSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8g
cG9pbnQyID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghcG9pbnQyKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChi
dWZmZXIpOwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
Q3VydmVUb0N1YmljU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnBvaW50MSA9ICpw
b2ludDE7CkBAIC0yMTcsMTEgKzIxNywxMSBAQCBPcHRpb25hbDxTVkdQYXRoU291cmNlOjpDdXJ2
ZVRvQ3ViaWNTbW9vdGhTZWdtZW50PiBTVkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cgogICAg
IHJldHVybiBwYXJzZShbXShhdXRvJiBidWZmZXIpIC0+IE9wdGlvbmFsPEN1cnZlVG9DdWJpY1Nt
b290aFNlZ21lbnQ+IHsKICAgICAgICAgYXV0byBwb2ludDIgPSBwYXJzZUZsb2F0UG9pbnQoYnVm
ZmVyKTsKICAgICAgICAgaWYgKCFwb2ludDIpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHRh
cmdldFBvaW50ID0gcGFyc2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0
UG9pbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50IHNl
Z21lbnQ7CiAgICAgICAgIHNlZ21lbnQucG9pbnQyID0gKnBvaW50MjsKQEAgLTIzNSwxMSArMjM1
LDExIEBAIE9wdGlvbmFsPFNWR1BhdGhTb3VyY2U6OkN1cnZlVG9RdWFkcmF0aWNTZWdtZW50PiBT
VkdQYXRoU3RyaW5nU291cmNlOjpwYXJzZUN1cnZlCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8m
IGJ1ZmZlcikgLT4gT3B0aW9uYWw8Q3VydmVUb1F1YWRyYXRpY1NlZ21lbnQ+IHsKICAgICAgICAg
YXV0byBwb2ludDEgPSBwYXJzZUZsb2F0UG9pbnQoYnVmZmVyKTsKICAgICAgICAgaWYgKCFwb2lu
dDEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHRhcmdldFBvaW50ID0gcGFyc2VGbG9hdFBv
aW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0UG9pbnQpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCBzZWdtZW50OwogICAgICAgICBzZWdtZW50LnBv
aW50MSA9ICpwb2ludDE7CkBAIC0yNTMsNyArMjUzLDcgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJj
ZTo6Q3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQ+IFNWR1BhdGhTdHJpbmdTb3VyY2U6OnBh
cnMKICAgICByZXR1cm4gcGFyc2UoW10oYXV0byYgYnVmZmVyKSAtPiBPcHRpb25hbDxDdXJ2ZVRv
UXVhZHJhdGljU21vb3RoU2VnbWVudD4gewogICAgICAgICBhdXRvIHRhcmdldFBvaW50ID0gcGFy
c2VGbG9hdFBvaW50KGJ1ZmZlcik7CiAgICAgICAgIGlmICghdGFyZ2V0UG9pbnQpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCBzZWdtZW50OwogICAg
ICAgICBzZWdtZW50LnRhcmdldFBvaW50ID0gKnRhcmdldFBvaW50OwpAQCAtMjY2LDIyICsyNjYs
MjIgQEAgT3B0aW9uYWw8U1ZHUGF0aFNvdXJjZTo6QXJjVG9TZWdtZW50PiBTVkdQYXRoU3RyaW5n
U291cmNlOjpwYXJzZUFyY1RvU2VnbWVudCgpCiAgICAgcmV0dXJuIHBhcnNlKFtdKGF1dG8mIGJ1
ZmZlcikgLT4gT3B0aW9uYWw8QXJjVG9TZWdtZW50PiB7CiAgICAgICAgIGF1dG8gcnggPSBwYXJz
ZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXJ4KQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1
dG8gcnkgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAoIXJ5KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGF1dG8gYW5nbGUgPSBwYXJzZU51bWJlcihidWZmZXIpOwogICAgICAgICBpZiAo
IWFuZ2xlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gbGFyZ2VBcmMgPSBwYXJzZUFyY0ZsYWco
YnVmZmVyKTsKICAgICAgICAgaWYgKCFsYXJnZUFyYykKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBhdXRv
IHN3ZWVwID0gcGFyc2VBcmNGbGFnKGJ1ZmZlcik7CiAgICAgICAgIGlmICghc3dlZXApCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgYXV0byB0YXJnZXRQb2ludCA9IHBhcnNlRmxvYXRQb2ludChidWZmZXIp
OwogICAgICAgICBpZiAoIXRhcmdldFBvaW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgQXJjVG9T
ZWdtZW50IHNlZ21lbnQ7CiAgICAgICAgIHNlZ21lbnQucnggPSAqcng7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggNWYyMDM5NDNiMDU3YjVi
M2JmZGNlMmJhMmYxNDk5Y2Q4NDBjNGNiMy4uZTViOGZlZGQwMmYzNGVmMTliZDdjZWM2YmE3ODJl
ODA5NzYzOTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmNwcApAQCAtMTI5Miw3ICsxMjkyLDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhPck1pc3NpbmcKICAg
ICBpZiAoZ2x5cGhCb3VuZGluZ0JveCkKICAgICAgICAgbV9taW5SaWdodFNpZGVCZWFyaW5nID0g
c3RkOjptaW4obV9taW5SaWdodFNpZGVCZWFyaW5nLCBob3Jpem9udGFsQWR2YW5jZSAtIGdseXBo
Qm91bmRpbmdCb3gudmFsdWUoKS5tYXhYKCkpOwogCi0gICAgbV9nbHlwaHMuYXBwZW5kKEdseXBo
RGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0
aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSksIGNvZGVw
b2ludHMpKTsKKyAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCksIGds
eXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3Vu
ZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsKIH0KIAogdm9pZCBT
VkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhzKCkKQEAgLTE0MTYsNyAr
MTQxNiw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKGNv
bnN0IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAgICAgICAgICAgIHByb2Nlc3NHbHlw
aEVsZW1lbnQoZ2x5cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50LCBkZWZhdWx0SG9yaXpvbnRhbEFk
dmFuY2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNvZGVBdHRyaWJ1dGUsIGJvdW5kaW5n
Qm94KTsKICAgICB9CiAKLSAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVPcihG
bG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZhbHVlX29yKEZs
b2F0UmVjdCgpKTsKIAogICAgIGFwcGVuZExpZ2F0dXJlR2x5cGhzKCk7CiAKQEAgLTE1NTgsOSAr
MTU1OCw5IEBAIE9wdGlvbmFsPFZlY3RvcjxjaGFyPj4gY29udmVydFNWR1RvT1RGRm9udChjb25z
dCBTVkdGb250RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBTVkdUb09URkZvbnRDb252ZXJ0ZXIg
Y29udmVydGVyKGVsZW1lbnQpOwogICAgIGlmIChjb252ZXJ0ZXIuZXJyb3IoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWNvbnZlcnRlci5jb252ZXJ0U1ZHVG9PVEZGb250KCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGNvbnZl
cnRlci5yZWxlYXNlUmVzdWx0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlLmNwcAppbmRleCA3MWE1MWUyMTQ5NzZhM2ZiODBmZDEwZjZjYWI0OTk0Nzg3MGJhNjJmLi44
OWNiZDc5NjMzYjc2MGIxMDdjMDA0YTRmMmE1YzIwYzZjNDI4N2Y2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBzdGF0aWMgY29u
c3RleHByIGludCBvcHRpb25hbFZhbHVlc0ZvclR5cGVbXSA9ICB7IDAsIDAsIDEsIDEsIDIsIDAs
IDAgfTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxT
VkdUcmFuc2Zvcm1WYWx1ZT4gcGFyc2VUcmFuc2Zvcm1WYWx1ZUdlbmVyaWMoU1ZHVHJhbnNmb3Jt
VmFsdWU6OlNWR1RyYW5zZm9ybVR5cGUgdHlwZSwgU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPiYgYnVmZmVyKQogewogICAgIGlmICh0eXBlID09IFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdfVFJBTlNGT1JNX1VOS05PV04pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQgdmFsdWVDb3VudCA9IDA7CiAgICAg
ZmxvYXQgdmFsdWVzW10gPSB7MCwgMCwgMCwgMCwgMCwgMH07CiAgICAgaWYgKCh2YWx1ZUNvdW50
ID0gcGFyc2VUcmFuc2Zvcm1QYXJhbUxpc3QoYnVmZmVyLCB2YWx1ZXMsIHJlcXVpcmVkVmFsdWVz
Rm9yVHlwZVt0eXBlXSwgb3B0aW9uYWxWYWx1ZXNGb3JUeXBlW3R5cGVdKSkgPCAwKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgU1ZHVHJhbnNmb3JtVmFsdWUgdHJhbnNmb3JtOwogICAgIHN3aXRjaCAodHlwZSkgewpAQCAt
MTY2LDcgKzE2Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBj
b25zdGV4cHIgQ2hhcmFjdGVyVHlwZSBtYXRyaXhEZXNjW10gPQogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdUcmFu
c2Zvcm1UeXBlPiBwYXJzZVRyYW5zZm9ybVR5cGVHZW5lcmljKFN0cmluZ1BhcnNpbmdCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoKmJ1ZmZlciA9PSAncycpIHsKICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhh
Y3RseShidWZmZXIsIHNrZXdYRGVzYzxDaGFyYWN0ZXJUeXBlPikpCkBAIC0xNzUsNyArMTc1LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1Ry
YW5zZm9ybVZhbHVlOjpTVkdUcmFuc2Zvcm0KICAgICAgICAgICAgIHJldHVybiBTVkdUcmFuc2Zv
cm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9TS0VXWTsKICAgICAgICAgaWYgKHNraXBDaGFyYWN0ZXJz
RXhhY3RseShidWZmZXIsIHNjYWxlRGVzYzxDaGFyYWN0ZXJUeXBlPikpCiAgICAgICAgICAgICBy
ZXR1cm4gU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fU0NBTEU7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
CiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShidWZmZXIsIHRyYW5zbGF0ZURlc2M8Q2hh
cmFjdGVyVHlwZT4pKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3Jt
CiAgICAgaWYgKHNraXBDaGFyYWN0ZXJzRXhhY3RseShidWZmZXIsIG1hdHJpeERlc2M8Q2hhcmFj
dGVyVHlwZT4pKQogICAgICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZP
Uk1fTUFUUklYOwogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCiBPcHRpb25hbDxTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHVHJhbnNmb3JtVHlw
ZT4gU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zvcm1UeXBlKFN0cmluZ1ZpZXcgc3RyaW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcAppbmRleCBiYzM1NGRhMjM3Y2Vh
NmQ0YzFlMWI2N2Y3OWJmM2UyNDcxMTgwNDk4Li5kZDFiODkyMGNkNmYwYzBiODU2YzhmMmI0NjM0
YmFkYThjYmFhMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50LmNwcApAQCAt
NDgsMzAgKzQ4LDMwIEBAIE9wdGlvbmFsPFNWR0tlcm5pbmdQYWlyPiBTVkdWS2VybkVsZW1lbnQ6
OmJ1aWxkVmVydGljYWxLZXJuaW5nUGFpcigpIGNvbnN0CiAgICAgYXV0byYgdTEgPSBhdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFNWR05hbWVzOjp1MUF0dHIpOwogICAgIGF1dG8mIGcx
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6ZzFBdHRyKTsKICAg
ICBpZiAodTEuaXNFbXB0eSgpICYmIGcxLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHUyID0g
YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6dTJBdHRyKTsKICAgICBh
dXRvJiBnMiA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6OmcyQXR0
cik7CiAgICAgaWYgKHUyLmlzRW1wdHkoKSAmJiBnMi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGdseXBoTmFtZTEgPSBwYXJzZUdseXBoTmFtZShnMSk7CiAgICAgaWYgKCFnbHlwaE5hbWUxKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGF1dG8gZ2x5cGhOYW1lMiA9IHBhcnNlR2x5cGhOYW1lKGcyKTsKICAgICBpZiAoIWds
eXBoTmFtZTIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgYXV0byB1bmljb2RlU3RyaW5nMSA9IHBhcnNlS2VybmluZ1VuaWNv
ZGVTdHJpbmcodTEpOwogICAgIGlmICghdW5pY29kZVN0cmluZzEpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byB1bmlj
b2RlU3RyaW5nMiA9IHBhcnNlS2VybmluZ1VuaWNvZGVTdHJpbmcodTIpOwogICAgIGlmICghdW5p
Y29kZVN0cmluZzIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgYXV0byBrZXJuaW5n
ID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihTVkdOYW1lczo6a0F0dHIpLnN0cmlu
ZygpLnRvRmxvYXQoJm9rKTsKICAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFNWR0tlcm5p
bmdQYWlyIHsKICAgICAgICAgV1RGTW92ZSh1bmljb2RlU3RyaW5nMS0+Zmlyc3QpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCmluZGV4IGQ1ZDk3N2ZmYTVmY2I3ZTA1YjJhZjU1NjUx
MDE1ZWFiYzIzNDJjMjcuLmQyN2Y4ZTUyMmQ3NDYxZTZkZjkxNzgwYzVjOTc5N2QwODkxYTEyMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFNWR1pvb21BbmRQ
YW5UeXBlPiBwYXJzZVpvb21BbmQKICAgICBpZiAoc2tpcENoYXJhY3RlcnNFeGFjdGx5KGJ1ZmZl
ciwgbWFnbmlmeTxDaGFyYWN0ZXJUeXBlPikpCiAgICAgICAgIHJldHVybiBTVkdab29tQW5kUGFu
TWFnbmlmeTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogT3B0aW9uYWw8U1ZHWm9vbUFuZFBhblR5cGU+IFNWR1pvb21BbmRQYW46OnBh
cnNlWm9vbUFuZFBhbihTdHJpbmdQYXJzaW5nQnVmZmVyPExDaGFyPiYgYnVmZmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNvcmF0ZWRQ
cm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWREZWNv
cmF0ZWRQcm9wZXJ0eS5oCmluZGV4IDRjMTZkOGY5ZTUwNTRkYTAzMzlmYTA2MDUxMzliZmU2NzYx
ODczY2IuLjkwZDUyODY4YWNjMzIxNzcyNTk4NGViYWY0ZDFjNDY2NGMwZWE1MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRGVjb3JhdGVkUHJv
cGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZERl
Y29yYXRlZFByb3BlcnR5LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgT3B0aW9u
YWw8U3RyaW5nPiBzeW5jaHJvbml6ZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3N0
YXRlID0gU1ZHUHJvcGVydHlTdGF0ZTo6Q2xlYW47CiAgICAgICAgIHJldHVybiBiYXNlVmFsQXNT
dHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBbmltYXRlZFByb3BlcnR5LmgKaW5kZXggZDlhMTE1OTc0MzY2Mzc0ZjdlYThkZmJiMGE0NjNl
MDg2MWZhYmRhZC4uZDAxY2E0ZmJkZDg2NGZiMTQxOTQxODk3MjEzMWNiOGMzZTExZGQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHkuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ29udHJvbCB0aGUgc3luY2hy
b25pemF0aW9uIGJldHdlZW4gdGhlIGF0dHJpYnV0ZSBhbmQgaXRzIHJlZmxlY3Rpb24gaW4gYmFz
ZVZhbC4KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldERpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCBPcHRpb25hbDxT
dHJpbmc+IHN5bmNocm9uaXplKCkgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgdmlydHVh
bCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9
CiAgICAgCiAgICAgLy8gQ29udHJvbCB0aGUgYW5pbWF0aW9uIGxpZmUgY3ljbGUuCiAgICAgYm9v
bCBpc0FuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0b3JzLmNvbXB1dGVTaXplKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29ySW1wbC5oCmluZGV4IDU3ZTljNDkxYzI0
MzBiMzFjN2NlMTEwZDdmODFiNDE3M2E2ZjhjNTkuLjkzNGFjMWQzZGEyYTk2ZDVkNjg5N2U1Yzk0
NzQ5NjRlZDhjNzg3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVBhaXJBY2Nlc3NvckltcGwuaApA
QCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGRpcnR5MSA9IHByb3BlcnR5
MShvd25lciktPmlzRGlydHkoKTsKICAgICAgICAgYm9vbCBkaXJ0eTIgPSBwcm9wZXJ0eTIob3du
ZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGlmICghKGRpcnR5MSB8fCBkaXJ0eTIpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgYXV0byB0eXBlID0gcHJvcGVydHkyKG93bmVyKS0+YmFzZVZhbCgpOwog
CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBkaXJ0eTEgPSBwcm9w
ZXJ0eTEob3duZXIpLT5pc0RpcnR5KCk7CiAgICAgICAgIGJvb2wgZGlydHkyID0gcHJvcGVydHky
KG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBpZiAoIShkaXJ0eTEgfHwgZGlydHkyKSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIFN0cmluZyBzdHJpbmcxID0gZGlydHkxID8gKnByb3BlcnR5MShv
d25lciktPnN5bmNocm9uaXplKCkgOiBwcm9wZXJ0eTEob3duZXIpLT5iYXNlVmFsQXNTdHJpbmco
KTsKICAgICAgICAgU3RyaW5nIHN0cmluZzIgPSBkaXJ0eTIgPyAqcHJvcGVydHkyKG93bmVyKS0+
c3luY2hyb25pemUoKSA6IHByb3BlcnR5Mihvd25lciktPmJhc2VWYWxBc1N0cmluZygpOwpAQCAt
MTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZGlydHkxID0gcHJvcGVydHkx
KG93bmVyKS0+aXNEaXJ0eSgpOwogICAgICAgICBib29sIGRpcnR5MiA9IHByb3BlcnR5Mihvd25l
ciktPmlzRGlydHkoKTsKICAgICAgICAgaWYgKCEoZGlydHkxIHx8IGRpcnR5MikpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBTdHJpbmcgc3RyaW5nMSA9IGRpcnR5MSA/ICpwcm9wZXJ0eTEob3duZXIp
LT5zeW5jaHJvbml6ZSgpIDogcHJvcGVydHkxKG93bmVyKS0+YmFzZVZhbEFzU3RyaW5nKCk7CiAg
ICAgICAgIFN0cmluZyBzdHJpbmcyID0gZGlydHkyID8gKnByb3BlcnR5Mihvd25lciktPnN5bmNo
cm9uaXplKCkgOiBwcm9wZXJ0eTIob3duZXIpLT5iYXNlVmFsQXNTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKaW5kZXggMjY0YWI2MDE0OTk1NmE1
ZDFjZTQzZGU0NzU4ZDRlNzE1ZTRiNjYwNC4uNTQ4YjkzOWYxOGE2YzczZjdjYjFhYmM3Y2Y3ZDU4
M2I3MmJlOTBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ29sb3IgU1ZHQW5pbWF0aW9uQ29sb3JGdW5jdGlvbjo6Y29s
b3JGcm9tU3RyaW5nKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnMKIAogT3B0aW9uYWw8
ZmxvYXQ+IFNWR0FuaW1hdGlvbkludGVnZXJGdW5jdGlvbjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZH
RWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RkOjphYnMocGFyc2VJbnRlZ2VyPGludD4odG8pLnZhbHVlT3IoMCkgLSBw
YXJzZUludGVnZXI8aW50Pihmcm9tKS52YWx1ZU9yKDApKTsKKyAgICByZXR1cm4gc3RkOjphYnMo
cGFyc2VJbnRlZ2VyPGludD4odG8pLnZhbHVlX29yKDApIC0gcGFyc2VJbnRlZ2VyPGludD4oZnJv
bSkudmFsdWVfb3IoMCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rp
b25JbXBsLmgKaW5kZXggNGJhMzdhOWNhN2NmOGEzNDRiYTYzYjQ2MTcwYWM3YjI0NWEyYzY0ZS4u
OTY5Nzk5YmIwMGI1ZmRkOTk2NTE4NGJmYjdlMmY2NzI0MDQwMTUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0
aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoK
IAogICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6YWJzKHBhcnNlTnVtYmVyKHRvKS52YWx1ZU9yKDApIC0gcGFy
c2VOdW1iZXIoZnJvbSkudmFsdWVPcigwKSk7CisgICAgICAgIHJldHVybiBzdGQ6OmFicyhwYXJz
ZU51bWJlcih0bykudmFsdWVfb3IoMCkgLSBwYXJzZU51bWJlcihmcm9tKS52YWx1ZV9vcigwKSk7
CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR01lbWJlckFjY2Vzc29yLmgKaW5kZXggM2E3NmY5MTdmZDI0MGU5NWJkNjljNGM4ZmIzNjdi
MjBlZWFlZjZlOS4uMzNhZjViZWY5MjMwYTZmZTU0OWY3YjE3OTVhMDJiYzVmODUzY2UwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTWVtYmVyQWNjZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdNZW1iZXJBY2Nlc3Nvci5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbWF0Y2hlcyhjb25z
dCBPd25lclR5cGUmLCBjb25zdCBTVkdQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIG1hdGNoZXMoY29uc3QgT3duZXJUeXBlJiwgY29uc3QgU1ZHQW5p
bWF0ZWRQcm9wZXJ0eSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldERpcnR5KGNvbnN0IE93bmVyVHlwZSYsIFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVk
UHJvcGVydHkpIGNvbnN0IHsgYW5pbWF0ZWRQcm9wZXJ0eS5zZXREaXJ0eSgpOyB9Ci0gICAgdmly
dHVhbCBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKGNvbnN0IE93bmVyVHlwZSYpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIHZpcnR1YWwgT3B0aW9uYWw8U3RyaW5nPiBz
eW5jaHJvbml6ZShjb25zdCBPd25lclR5cGUmKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7
IH0KIAogICAgIHZpcnR1YWwgUmVmUHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmlt
YXRvcihPd25lclR5cGUmLCBjb25zdCBRdWFsaWZpZWROYW1lJiwgQW5pbWF0aW9uTW9kZSwgQ2Fs
Y01vZGUsIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmLCBTVkdBdHRyaWJ1dGVBbmlt
YXRvciYpIGNvbnN0IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3Bl
cnR5LmgKaW5kZXggNDA0M2ZmNDRmMjA2YTY3MTk1ZTliOWRjZGUwNjY2MGZlMjEzZDc1Ny4uY2Uz
YzJiMjcxZDlhMjMwYjRlZDAwYzA5ZWYxZTcxOGU1OTk1NjA3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoK
ICAgICBPcHRpb25hbDxTdHJpbmc+IHN5bmNocm9uaXplKCkKICAgICB7CiAgICAgICAgIGlmICht
X3N0YXRlID09IFNWR1Byb3BlcnR5U3RhdGU6OkNsZWFuKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1f
c3RhdGUgPSBTVkdQcm9wZXJ0eVN0YXRlOjpDbGVhbjsKICAgICAgICAgcmV0dXJuIHZhbHVlQXNT
dHJpbmcoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdQcm9wZXJ0eVRyYWl0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRyYWl0cy5jcHAKaW5kZXggYWU0ZjQ3OGQ3MTMyZjE5ZGZlYzZiOTAyNDAwNDA5
ZDNlMWM5NWViOC4uZGY1YmJiMTQ3YTMyYjJiNjU5MDNlZjkzYzg4MTFiZjE0N2M0Y2Y4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRz
LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGludCBTVkdQcm9w
ZXJ0eVRyYWl0czxpbnQ+Ojpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAg
IHJldHVybiBwYXJzZUludGVnZXI8aW50PihzdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgcmV0dXJu
IHBhcnNlSW50ZWdlcjxpbnQ+KHN0cmluZykudmFsdWVfb3IoMCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IDBj
YWRhN2EwMmNhZjAwNDMyNzIyMmIzOGUxY2FmZjkyYmNjYzIzNDAuLjYzMzBjM2M0NGEwMmFhODU1
NGQxZjI3NmU1OTcxNjUyZGY2YjZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgU1ZH
UHJvcGVydHlUcmFpdHM8Q29sb3I+IHsKICAgICB7CiAgICAgICAgIENvbG9yIGNvbG9yID0gQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHN0cmluZy5zdHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgICAgIGlm
ICghY29sb3IuaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBjb2xvcjsKICAg
ICB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBDb2xvciYgdHlwZSkgeyByZXR1
cm4gc2VyaWFsaXphdGlvbkZvckhUTUwodHlwZSk7IH0KQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0
IFNWR1Byb3BlcnR5VHJhaXRzPGZsb2F0PiB7CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxWYWx1
ZSgpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgZmxvYXQgZnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcpLnZh
bHVlT3IoMCk7CisgICAgICAgIHJldHVybiBwYXJzZU51bWJlcihzdHJpbmcpLnZhbHVlX29yKDAp
OwogICAgIH0KICAgICBzdGF0aWMgT3B0aW9uYWw8ZmxvYXQ+IHBhcnNlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBAIC0xMDQsNyArMTA0LDcgQEAg
c3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAgICAg
c3RhdGljIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsg
fTsgfQogICAgIHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyT3B0aW9u
YWxOdW1iZXIoc3RyaW5nKS52YWx1ZU9yKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsgfSk7Cisg
ICAgICAgIHJldHVybiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVfb3Io
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4geyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFs
PHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgp
OyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KQEAgLTExNSw3
ICsxMTUsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD4gewogICAgIHN0
YXRpYyBGbG9hdFBvaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQog
ICAgIHN0YXRpYyBGbG9hdFBvaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgewotICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlT3IoRmxvYXRQb2lu
dCB7IH0pOworICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZsb2F0
UG9pbnQgeyB9KTsKICAgICB9CiAgICAgc3RhdGljIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBAIC0x
MzIsNyArMTMyLDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4gewogICAg
IHN0YXRpYyBGbG9hdFJlY3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0K
ICAgICBzdGF0aWMgRmxvYXRSZWN0IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgewotICAgICAgICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZykudmFsdWVPcihGbG9hdFJlY3Qg
eyB9KTsKKyAgICAgICAgcmV0dXJuIHBhcnNlUmVjdChzdHJpbmcpLnZhbHVlX29yKEZsb2F0UmVj
dCB7IH0pOwogICAgIH0KICAgICBzdGF0aWMgT3B0aW9uYWw8RmxvYXRSZWN0PiBwYXJzZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggNmE5NzU1OTIwNWE2NGFk
Y2UwNGJhODVkNDFkYzMxYTVhYTc3MzhkYi4uMWM3MmE1MzVjYTg5ZjJhYzk0ZWEzZTY1NWQyNjYz
OTBlNWZmOTliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJl
c3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiAgICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5z
ZXRTaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmlsaXR5KG1fc2hvdWxkTW9ja0Jv
bGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0eSk7CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQot
ICAgIEF1ZGlvQ29udGV4dDo6c2V0RGVmYXVsdFNhbXBsZVJhdGVGb3JUZXN0aW5nKFdURjo6bnVs
bG9wdCk7CisgICAgQXVkaW9Db250ZXh0OjpzZXREZWZhdWx0U2FtcGxlUmF0ZUZvclRlc3Rpbmco
c3RkOjpudWxsb3B0KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggOGNmMDJiMTc5ZWJmYmRkMzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5Ni4uMmYxNDM2
MWY4OTZhYzg0MzkxNWQ5ZTQ5MDk3OGJkNDkyYjMyYjBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRv
Q29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogICAgIHBhZ2Uuc2V0U2hvd0Fs
bFBsdWdpbnMoZmFsc2UpOwotICAgIHBhZ2Uuc2V0TG93UG93ZXJNb2RlRW5hYmxlZE92ZXJyaWRl
Rm9yVGVzdGluZyhXVEY6Om51bGxvcHQpOworICAgIHBhZ2Uuc2V0TG93UG93ZXJNb2RlRW5hYmxl
ZE92ZXJyaWRlRm9yVGVzdGluZyhzdGQ6Om51bGxvcHQpOwogICAgIHBhZ2Uuc2V0T3V0c2lkZVZp
ZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlD
S19MT09LKQpAQCAtNjAxLDcgKzYwMSw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogICAgIEhUTUxDYW52YXNFbGVtZW50Ojpz
ZXRNYXhQaXhlbE1lbW9yeUZvclRlc3RpbmcoMCk7IC8vIFRoaXMgbWVhbnMgdXNlIHRoZSBkZWZh
dWx0IHZhbHVlLgotICAgIERPTVdpbmRvdzo6b3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0aW9uRHVy
YXRpb25Gb3JUZXN0aW5nKFdURjo6bnVsbG9wdCk7CisgICAgRE9NV2luZG93OjpvdmVycmlkZVRy
YW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3Rpbmcoc3RkOjpudWxsb3B0KTsKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBSZW5kZXJUaGVtZUlPUzo6c2V0Q29udGVudFNpemVDYXRlZ29y
eShrQ1RGb250Q29udGVudFNpemVDYXRlZ29yeUwpOwpAQCAtNjQ3LDEzICs2NDcsMTMgQEAgSW50
ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQmIGRvY3VtZW50KQogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVzVGVzdGluZ092ZXJyaWRlczo6c2lu
Z2xldG9uKCkuc2V0SGFzQUMoV1RGOjpudWxsb3B0KTsKLSAgICBTeXN0ZW1CYXR0ZXJ5U3RhdHVz
VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0SGFzQmF0dGVyeShXVEY6Om51bGxvcHQp
OworICAgIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5z
ZXRIYXNBQyhzdGQ6Om51bGxvcHQpOworICAgIFN5c3RlbUJhdHRlcnlTdGF0dXNUZXN0aW5nT3Zl
cnJpZGVzOjpzaW5nbGV0b24oKS5zZXRIYXNCYXR0ZXJ5KHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWUDkpICYmIFBMQVRGT1JNKENPQ09BKQotICAgIFZQOVRlc3RpbmdPdmVy
cmlkZXM6OnNpbmdsZXRvbigpLnNldEhhcmR3YXJlRGVjb2RlckRpc2FibGVkKFdURjo6bnVsbG9w
dCk7Ci0gICAgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xldG9uKCkuc2V0VlA5U2NyZWVuU2l6
ZUFuZFNjYWxlKFdURjo6bnVsbG9wdCk7CisgICAgVlA5VGVzdGluZ092ZXJyaWRlczo6c2luZ2xl
dG9uKCkuc2V0SGFyZHdhcmVEZWNvZGVyRGlzYWJsZWQoc3RkOjpudWxsb3B0KTsKKyAgICBWUDlU
ZXN0aW5nT3ZlcnJpZGVzOjpzaW5nbGV0b24oKS5zZXRWUDlTY3JlZW5TaXplQW5kU2NhbGUoc3Rk
OjpudWxsb3B0KTsKICNlbmRpZgogfQogCkBAIC0xMzg1LDcgKzEzODUsNyBAQCB2b2lkIEludGVy
bmFsczo6c2V0RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPdmVycmlkZShPcHRpb25hbDxFdmVudFRo
cm90dGxpbmdCZWhhdgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXZhbHVlKSB7Ci0gICAg
ICAgIGRvY3VtZW50LT5wYWdlKCktPnNldEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yT3ZlcnJpZGUo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0RXZlbnRUaHJvdHRs
aW5nQmVoYXZpb3JPdmVycmlkZShzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNDAzLDExICsxNDAzLDExIEBAIE9wdGlvbmFsPEludGVybmFsczo6RXZlbnRUaHJv
dHRsaW5nQmVoYXZpb3I+IEludGVybmFsczo6ZXZlbnRUaHJvdHRsaW5nQmVoYXZpb3JPCiB7CiAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1
bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gYmVoYXZpb3IgPSBkb2N1
bWVudC0+cGFnZSgpLT5ldmVudFRocm90dGxpbmdCZWhhdmlvck92ZXJyaWRlKCk7CiAgICAgaWYg
KCFiZWhhdmlvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoYmVoYXZpb3IudmFsdWUoKSkgewogICAgIGNh
c2UgV2ViQ29yZTo6RXZlbnRUaHJvdHRsaW5nQmVoYXZpb3I6OlJlc3BvbnNpdmU6CkBAIC0xNDE2
LDcgKzE0MTYsNyBAQCBPcHRpb25hbDxJbnRlcm5hbHM6OkV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
PiBJbnRlcm5hbHM6OmV2ZW50VGhyb3R0bGluZ0JlaGF2aW9yTwogICAgICAgICByZXR1cm4gSW50
ZXJuYWxzOjpFdmVudFRocm90dGxpbmdCZWhhdmlvcjo6VW5yZXNwb25zaXZlOwogICAgIH0KIAot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
U3RyaW5nIEludGVybmFsczo6dmlzaWJsZVBsYWNlaG9sZGVyKEVsZW1lbnQmIGVsZW1lbnQpCkBA
IC0yNjA1LDcgKzI2MDUsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3Vu
dE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVgogICAgICAgICByZXR1
cm4gcGFyc2VkT3B0aW9ucy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBib29sIG1hcmsgPSBt
YXJrTWF0Y2hlcyA9PSAibWFyayI7Ci0gICAgcmV0dXJuIGRvY3VtZW50LT5lZGl0b3IoKS5jb3Vu
dE1hdGNoZXNGb3JUZXh0KHRleHQsIFdURjo6bnVsbG9wdCwgcGFyc2VkT3B0aW9ucy5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgMTAwMCwgbWFyaywgbnVsbHB0cik7CisgICAgcmV0dXJuIGRvY3VtZW50
LT5lZGl0b3IoKS5jb3VudE1hdGNoZXNGb3JUZXh0KHRleHQsIHN0ZDo6bnVsbG9wdCwgcGFyc2Vk
T3B0aW9ucy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgMTAwMCwgbWFyaywgbnVsbHB0cik7CiB9CiAK
IEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OmNvdW50RmluZE1hdGNoZXMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmluZE9wdGlvbnMpCkBAIC0yNjk4
LDEzICsyNjk4LDEzIEBAIHVpbnQ2NF90IEludGVybmFsczo6ZWxlbWVudElkZW50aWZpZXIoRWxl
bWVudCYgZWxlbWVudCkgY29uc3QKIHVpbnQ2NF90IEludGVybmFsczo6ZnJhbWVJZGVudGlmaWVy
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogcGFnZSA9
IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRl
cigpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7Cisg
ICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVf
b3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKICAgICByZXR1cm4gMDsKIH0KIAog
dWludDY0X3QgSW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlk
ZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpOworICAgIHJldHVybiBkb2N1bWVudC5wYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7CiB9CiAKIGJvb2wgSW50ZXJu
YWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKQEAgLTM1OTMsNyArMzU5
Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0Q29tcG9zaXRpbmdQb2xpY3lP
dmVycmlkZShPcHRpb25hbDxDb21wb3NpdGluZ1BvCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKIAogICAgIGlmICghcG9saWN5T3ZlcnJpZGUpIHsKLSAg
ICAgICAgZG9jdW1lbnQtPnBhZ2UoKS0+c2V0Q29tcG9zaXRpbmdQb2xpY3lPdmVycmlkZShXVEY6
Om51bGxvcHQpOworICAgICAgICBkb2N1bWVudC0+cGFnZSgpLT5zZXRDb21wb3NpdGluZ1BvbGlj
eU92ZXJyaWRlKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0zNjE3LDcgKzM2MTcsNyBAQCBFeGNlcHRpb25PcjxPcHRpb25hbDxJbnRlcm5hbHM6OkNvbXBv
c2l0aW5nUG9saWN5Pj4gSW50ZXJuYWxzOjpjb21wb3NpdGluZ1BvbGljeQogCiAgICAgYXV0byBw
b2xpY3lPdmVycmlkZSA9IGRvY3VtZW50LT5wYWdlKCktPmNvbXBvc2l0aW5nUG9saWN5T3ZlcnJp
ZGUoKTsKICAgICBpZiAoIXBvbGljeU92ZXJyaWRlKQotICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAKICAgICBzd2l0Y2gg
KHBvbGljeU92ZXJyaWRlLnZhbHVlKCkpIHsKICAgICBjYXNlIFdlYkNvcmU6OkNvbXBvc2l0aW5n
UG9saWN5OjpOb3JtYWw6CkBAIC01MDYyLDcgKzUwNjIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VGFz
a1NvdXJjZT4gdGFza1NvdXJjZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiB0YXNrU291cmNlTmFt
ZSkKIHsKICAgICBpZiAodGFza1NvdXJjZU5hbWUgPT0gIkRPTU1hbmlwdWxhdGlvbiIpCiAgICAg
ICAgIHJldHVybiBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb247Ci0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBFeGNlcHRpb25Pcjx2b2lk
PiBJbnRlcm5hbHM6OnF1ZXVlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHRhc2tTb3VyY2VOYW1lLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxi
YWNrKQpAQCAtNTc1Nyw3ICs1NzU3LDcgQEAgYXV0byBJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycyhTdHJpbmdWaWV3IHN0cmluZykgLT4gT3B0aW9uYWw8RG9WaVBhcmEKIHsKICAg
ICBhdXRvIHBhcnNlUmVzdWx0ID0gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKHN0
cmluZyk7CiAgICAgaWYgKCFwYXJzZVJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBEb1ZpUGFyYW1ldGVyU2V0IGNv
bnZlcnRlZFJlc3VsdDsKICAgICBzd2l0Y2ggKHBhcnNlUmVzdWx0LT5jb2RlYykgewogICAgIGNh
c2UgRG9WaVBhcmFtZXRlcnM6OkNvZGVjOjpBVkMxOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggZjg3OWIyOGZjODllNjIzY2M2MTE5ZmFkODNiMmM3M2FlNmIwMWI1NC4uMTg0NTY0
NjQ2MWVkYzMxZmE5ZjU5Y2U3MGYwMWE1OWNlYWEwNjc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIHZh
bHVlKGNvb2tpZS52YWx1ZSkKICAgICAgICAgICAgICwgZG9tYWluKGNvb2tpZS5kb21haW4pCiAg
ICAgICAgICAgICAsIHBhdGgoY29va2llLnBhdGgpCi0gICAgICAgICAgICAsIGV4cGlyZXMoY29v
a2llLmV4cGlyZXMudmFsdWVPcigwKSkKKyAgICAgICAgICAgICwgZXhwaXJlcyhjb29raWUuZXhw
aXJlcy52YWx1ZV9vcigwKSkKICAgICAgICAgICAgICwgaXNIdHRwT25seShjb29raWUuaHR0cE9u
bHkpCiAgICAgICAgICAgICAsIGlzU2VjdXJlKGNvb2tpZS5zZWN1cmUpCiAgICAgICAgICAgICAs
IGlzU2Vzc2lvbihjb29raWUuc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RN
RmFjdG9yeS5jcHAKaW5kZXggODkxOTY0YmFkNTUwNDkzZGNkN2I4MThmNzAwYWVlYmY3Y2JmMmM4
Ny4uM2ViMTFmMDBiNDk0ZGYwMjc1OWIyYmUwYTYyMTc3OWIzYTEyZDExNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBPcHRp
b25hbDxTdHJpbmc+IE1vY2tDRE06OnNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkKSBjb25zdAogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShz
ZXNzaW9uSWQsICJ2YWxpZC1sb2FkZWQtc2Vzc2lvbiIpKQogICAgICAgICByZXR1cm4gc2Vzc2lv
bklkOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogTW9ja0NETUluc3RhbmNlOjpNb2NrQ0RNSW5zdGFuY2UoV2Vha1B0cjxNb2NrQ0RNPiBj
ZG0pCkBAIC0zMjcsMTQgKzMyNywxNCBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogewogICAg
IE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3Rv
cnkoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKGZh
bHNlLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBTdWNjZXNzVmFs
dWU6OkZhaWxlZCk7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBTdWNjZXNzVmFsdWU6OkZhaWxlZCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZVZlY3RvciA9IFN0cmlu
ZyhyZXNwb25zZS0+ZGF0YSgpLCByZXNwb25zZS0+c2l6ZSgpKS5zcGxpdCgnICcpOwogCiAgICAg
aWYgKHJlc3BvbnNlVmVjdG9yLmNvbnRhaW5zKFN0cmluZygiaW52YWxpZC1mb3JtYXQiX3MpKSkg
ewotICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQpOworICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVl
OjpGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNTQsMTQgKzM1NCwxNCBA
QCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLAogICAgIC8vIEZJWE1FOiBTZXNzaW9uIGNsb3N1cmUs
IGV4cGlyYXRpb24gYW5kIG1lc3NhZ2UgaGFuZGxpbmcgc2hvdWxkIGJlIGltcGxlbWVudGVkCiAg
ICAgLy8gb25jZSB0aGUgcmVsZXZhbnQgYWxnb3JpdGhtcyBhcmUgc3VwcG9ydGVkLgogCi0gICAg
Y2FsbGJhY2soZmFsc2UsIFdURk1vdmUoY2hhbmdlZEtleXMpLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOworICAgIGNhbGxiYWNrKGZhbHNlLCBX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NW
YWx1ZTo6U3VjY2VlZGVkKTsKIH0KIAogdm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIE1vY2tDRE1GYWN0b3J5KiBmYWN0b3J5
ID0gbV9pbnN0YW5jZSA/IG1faW5zdGFuY2UtPmZhY3RvcnkoKSA6IG51bGxwdHI7CiAgICAgaWYg
KCFmYWN0b3J5KSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
LCBXVEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkLCBTZXNzaW9uTG9hZEZhaWx1cmU6
Ok90aGVyKTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgU3VjY2Vzc1ZhbHVlOjpGYWlsZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3Ro
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNzAsNyArMzcwLDcgQEAgdm9pZCBN
b2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW4KICAgICBDU3RyaW5nIG1lc3NhZ2VEYXRhIHsgInNlc3Npb24gbG9h
ZGVkIiB9OwogICAgIE1lc3NhZ2UgbWVzc2FnZSB7IE1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdh
bCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUobWVzc2FnZURhdGEuZGF0YSgpLCBtZXNzYWdlRGF0YS5s
ZW5ndGgoKSkgfTsKIAotICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKG1lc3NhZ2UpLCBTdWNjZXNzVmFsdWU6OlN1Y2NlZWRlZCwgU2Vzc2lvbkxvYWRGYWls
dXJlOjpOb25lKTsKKyAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShtZXNzYWdlKSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQsIFNlc3Npb25Mb2FkRmFpbHVy
ZTo6Tm9uZSk7CiB9CiAKIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBDbG9zZVNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNr
KQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3Zl
U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBpZCwgTGljZW5zZVR5cGUsIFJlCiB7CiAgICAgTW9j
a0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9LCBX
VEY6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soeyB9
LCBzdGQ6Om51bGxvcHQsIFN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrTWVkaWFTZXNz
aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IGExMmQwZTgwZGNjMWJkMTRlZjQwMGU1MDU2ZDFiZjFh
N2ViNjVlZWEuLjQwMTRkMGJlOGY2NGYxY2VjZTMxNjg0ZTdmNDk0NmU4ODk3ZDk0NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tNZWRpYVNlc3Npb25Db29yZGlu
YXRvci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I6OnJlc3VsdCgpIGNvbnN0CiAgICAgaWYgKG1fZmFpbENvbW1hbmRz
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I6OmpvaW4oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggYmMzYWZlZDlhMzE0
MGI5MDMzYjk3NTBiNWNiZDBhMGNmMzJhYzRlYS4uOGQ3M2IxY2E4NWFlNTY0OTU1ZTg0YTg2OWJl
OGZkZjNhNGFjOWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCkBAIC02OCw3ICs2OCw3IEBAIE9wdGlvbmFsPFN0cmluZz4gTW9j
a1BheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5n
JiBwCiB7CiAgICAgYXV0byByZXN1bHQgPSBtX2F2YWlsYWJsZVBheW1lbnROZXR3b3Jrcy5maW5k
KHBheW1lbnROZXR3b3JrKTsKICAgICBpZiAocmVzdWx0ID09IG1fYXZhaWxhYmxlUGF5bWVudE5l
dHdvcmtzLmVuZCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiAqcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5oCmluZGV4IDQwYTQ5Mzc4Mzc4ZjJjZWUwM2IzMjJjNWI4YzNmYmZiM2M5N2U4ZGQuLjBj
NTI1YWZmZjNjNDcwOGRhMzUwOGQwYmFmMWNjYzgxNGM5MjUyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5oCkBAIC0xMzAsMzcgKzEzMCwzNyBAQCBPcHRpb25hbDxNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aQogICAg
IE9wdGlvbmFsPFVzZXJWZXJpZmljYXRpb24+IHVzZXJWZXJpZmljYXRpb247CiAgICAgZGVjb2Rl
ciA+PiB1c2VyVmVyaWZpY2F0aW9uOwogICAgIGlmICghdXNlclZlcmlmaWNhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQudXNlclZlcmlmaWNhdGlvbiA9ICp1c2VyVmVyaWZpY2F0aW9uOwogCiAgICAgT3B0
aW9uYWw8Ym9vbD4gYWNjZXB0QXR0ZXN0YXRpb247CiAgICAgZGVjb2RlciA+PiBhY2NlcHRBdHRl
c3RhdGlvbjsKICAgICBpZiAoIWFjY2VwdEF0dGVzdGF0aW9uKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5hY2Nl
cHRBdHRlc3RhdGlvbiA9ICphY2NlcHRBdHRlc3RhdGlvbjsKIAogICAgIE9wdGlvbmFsPFN0cmlu
Zz4gcHJpdmF0ZUtleUJhc2U2NDsKICAgICBkZWNvZGVyID4+IHByaXZhdGVLZXlCYXNlNjQ7CiAg
ICAgaWYgKCFwcml2YXRlS2V5QmFzZTY0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wcml2YXRlS2V5QmFzZTY0
ID0gV1RGTW92ZSgqcHJpdmF0ZUtleUJhc2U2NCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICBkZWNvZGVyID4+IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2
NDsKICAgICBpZiAoIXVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNlckNl
cnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqdXNlckNlcnRpZmljYXRlQmFzZTY0KTsKIAogICAg
IE9wdGlvbmFsPFN0cmluZz4gaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICBk
ZWNvZGVyID4+IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgaWYgKCFpbnRl
cm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5pbnRlcm1lZGlhdGVD
QUNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJh
c2U2NCk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2
NDsKICAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKICAgICBpZiAo
IXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQucHJlZmVycmVkQ3Jl
ZGVudGlhbElkQmFzZTY0ID0gV1RGTW92ZSgqcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0KTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzcsMjcgKzE3NywyNyBAQCBPcHRpb25hbDxNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpIaWRDb25maWd1cmF0aW9uPiBNb2NrV2Vi
QXV0aGVudGljYQogewogICAgIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Okhp
ZENvbmZpZ3VyYXRpb24gcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBh
eWxvYWRCYXNlNjQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YWdlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdWJTdGFnZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmlzVTJmKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5rZWVw
QWxpdmUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZhc3REYXRhQXJyaXZh
bCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGludWVBZnRlckVycm9y
RGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2FuRG93bmdyYWRlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5leHBlY3RDYW5jZWwpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN1cHBvcnRDbGllbnRQaW4pKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTIxMiwxMyArMjEyLDEzIEBAIE9wdGlvbmFsPE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246Ok5mY0NvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRo
ZW50aWNhCiB7CiAgICAgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TmZjQ29u
ZmlndXJhdGlvbiByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZXJyb3Ip
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBheWxvYWRCYXNlNjQpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm11bHRpcGxlVGFncykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQubXVsdGlwbGVQaHlzaWNhbFRhZ3MpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzNiwyNSArMjM2LDI1IEBAIE9wdGlvbmFsPE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24+IE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb246CiAgICAgT3B0aW9uYWw8Ym9vbD4gc2lsZW50RmFpbHVyZTsKICAgICBkZWNvZGVyID4+
IHNpbGVudEZhaWx1cmU7CiAgICAgaWYgKCFzaWxlbnRGYWlsdXJlKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5z
aWxlbnRGYWlsdXJlID0gKnNpbGVudEZhaWx1cmU7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxM
b2NhbENvbmZpZ3VyYXRpb24+PiBsb2NhbDsKICAgICBkZWNvZGVyID4+IGxvY2FsOwogICAgIGlm
ICghbG9jYWwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmxvY2FsID0gV1RGTW92ZSgqbG9jYWwpOwogCiAgICAg
T3B0aW9uYWw8T3B0aW9uYWw8SGlkQ29uZmlndXJhdGlvbj4+IGhpZDsKICAgICBkZWNvZGVyID4+
IGhpZDsKICAgICBpZiAoIWhpZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaGlkID0gV1RGTW92ZSgqaGlkKTsK
IAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPE5mY0NvbmZpZ3VyYXRpb24+PiBuZmM7CiAgICAgZGVj
b2RlciA+PiBuZmM7CiAgICAgaWYgKCFuZmMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm5mYyA9IFdURk1vdmUo
Km5mYyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJGYWtlWFJEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJEZXZpY2UuY3BwCmluZGV4IGVkNGY3MGRjYzA3NTRhNGExZjQ0ODU1YjEwMmM3OTU5YWY5
NTA1YzUuLjY3NDM2NGViZDAzNzE1YjJhN2VmZDFkOTg0OWJhOTEyNjg5ZDVlMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBPcHRpb25hbDxQbGF0Zm9ybVhSOjpMYXllckhhbmRsZT4gU2ltdWxhdGVkWFJEZXZpY2U6OmNy
ZWF0ZUxheWVyUHJvamVjdGlvbih1aW50MwogewogICAgIHVzaW5nIEdMID0gR3JhcGhpY3NDb250
ZXh0R0w7CiAgICAgaWYgKCFtX2dsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIFBsYXRmb3JtWFI6OkxheWVySGFuZGxlIGhh
bmRsZSA9ICsrbV9sYXllckluZGV4OwogICAgIGF1dG8gdGV4dHVyZSA9IG1fZ2wtPmNyZWF0ZVRl
eHR1cmUoKTsKICAgICBhdXRvIGNvbG9yRm9ybWF0ID0gYWxwaGEgPyBHTDo6UkdCQTggOiBHTDo6
UkdCODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5oCmluZGV4IDlmMzY2
Y2ExMWZlMDQ5OWIxMDFmNjY1MjA1Mjg2ZjYyN2MxYzZjYWQuLmY1OTdiM2Q5MTkyYzdmNjI3MjE1
NzgzNjU2MzNhMjc2NDA2MGNlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
V2ViRmFrZVhSRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJE
ZXZpY2UuaApAQCAtMTEyLDExICsxMTIsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlld3Mo
Y29uc3QgVmVjdG9yPEZha2VYUlZpZXdJbml0PiYpOwogICAgIHZvaWQgZGlzY29ubmVjdChET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBzZXRWaWV3ZXJPcmlnaW4oRmFrZVhS
UmlnaWRUcmFuc2Zvcm1Jbml0IG9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0gZmFsc2Up
OwotICAgIHZvaWQgY2xlYXJWaWV3ZXJPcmlnaW4oKSB7IG1fZGV2aWNlLnNldFZpZXdlck9yaWdp
bihXVEY6Om51bGxvcHQpOyB9CisgICAgdm9pZCBjbGVhclZpZXdlck9yaWdpbigpIHsgbV9kZXZp
Y2Uuc2V0Vmlld2VyT3JpZ2luKHN0ZDo6bnVsbG9wdCk7IH0KICAgICB2b2lkIHNpbXVsYXRlVmlz
aWJpbGl0eUNoYW5nZShYUlZpc2liaWxpdHlTdGF0ZSk7CiAgICAgdm9pZCBzZXRCb3VuZHNHZW9t
ZXRyeShWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+JiYgYm91bmRzKSB7IG1fZGV2aWNlLnNldE5h
dGl2ZUJvdW5kc0dlb21ldHJ5KFdURk1vdmUoYm91bmRzKSk7IH0KICAgICB2b2lkIHNldEZsb29y
T3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCk7Ci0gICAgdm9pZCBjbGVhckZsb29yT3Jp
Z2luKCkgeyBtX2RldmljZS5zZXRGbG9vck9yaWdpbihXVEY6Om51bGxvcHQpOyB9CisgICAgdm9p
ZCBjbGVhckZsb29yT3JpZ2luKCkgeyBtX2RldmljZS5zZXRGbG9vck9yaWdpbihzdGQ6Om51bGxv
cHQpOyB9CiAgICAgdm9pZCBzaW11bGF0ZVJlc2V0UG9zZSgpOwogICAgIFJlZjxXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI+IHNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKGNvbnN0IEZha2VY
UklucHV0U291cmNlSW5pdCYpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RmFrZVhSVmll
dz4+IHBhcnNlVmlldyhjb25zdCBGYWtlWFJWaWV3SW5pdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggOGI1YmNmMzY0N2Vm
Y2FkYzY5YmI2OGE2MTBhM2RjOTkzNDExY2JhYS4uNTM5NTllNTVhOTgyYzJiZGUxODZmYjI4OGYx
NWZhOTAxYzJkNTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UklucHV0Q29udHJvbGxlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRhcmdldFJheU1vZGUoWFJUYXJnZXRSYXlNb2RlIG1vZGUpIHsgbV90YXJnZXRSYXlNb2RlID0g
bW9kZTsgfQogICAgIHZvaWQgc2V0UHJvZmlsZXMoVmVjdG9yPFN0cmluZz4mJiBwcm9maWxlcykg
eyBtX3Byb2ZpbGVzID0gV1RGTW92ZShwcm9maWxlcyk7IH0KICAgICB2b2lkIHNldEdyaXBPcmln
aW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3Np
dGlvbiA9IGZhbHNlKTsKLSAgICB2b2lkIGNsZWFyR3JpcE9yaWdpbigpIHsgbV9ncmlwT3JpZ2lu
ID0gV1RGOjpudWxsb3B0OyB9CisgICAgdm9pZCBjbGVhckdyaXBPcmlnaW4oKSB7IG1fZ3JpcE9y
aWdpbiA9IHN0ZDo6bnVsbG9wdDsgfQogICAgIHZvaWQgc2V0UG9pbnRlck9yaWdpbihGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQgcG9pbnRlck9yaWdpbiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uID0g
ZmFsc2UpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgIHZvaWQgcmVjb25uZWN0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCBiOTVmNWM2ZDY5ZGFlNGM5Y2I3MTQzOTc4YzNkMzhmMGE0
ZThiMjQ0Li4yY2RiNzU1Nzk1OGJjODkzZTI2NmQ2ZmI5YzBjZWMxNzY3MGYyOTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5
KAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQ6Oldhc0Vy
cm9yZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0b3ItPm5vdGlmeUxvYWRGYWls
ZWQoTG9hZGFibGVTY3JpcHQ6OkVycm9yIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
b2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV1RGOjpudWxsb3B0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpudWxsb3B0CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIE1vZHVsZUZldGNoRmFpbHVy
ZUtpbmQ6Oldhc0NhbmNlbGVkOgpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgbW9k
dWxlVVJMCiAgICAgICAgIH0pOwogCiAgICAgICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpT
TmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgMSwgU3RyaW5nKCks
IFt0YXNrLCBzY3JpcHRGZXRjaGVyXShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgLT4gSlNDOjpFbmNvZGVkSlNWYWx1ZSB7Ci0gICAgICAgICAgICAv
LyB0YXNrLT5ydW4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIC8vIHRhc2stPnJ1bihzdGQ6
Om51bGxvcHQpOwogICAgICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OwogICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNDE1LDcgKzQxNSw3IEBAIHZvaWQgV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZEFuZEV2YWx1YXRlTW9kdWxlKGNvbnN0
IFVSTCYgbW9kdWxlVVJMCiAKICAgICAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBkb3duY2FzdDxX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIGlmICgh
Y29udGV4dCB8fCAhY29udGV4dC0+c2NyaXB0KCkpIHsKLSAgICAgICAgICAgICAgICB0YXNrLT5y
dW4oV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxsb3B0
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgfQogCkBAIC00MjQsNyArNDI0LDcgQEAgdm9pZCBXb3JrZXJPcldvcmts
ZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBtb2R1
bGVVUkwKICAgICAgICAgICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgdm0uaXNUZXJtaW5h
dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGNvbnRleHQtPnNjcmlwdCgpLT5p
c1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
c2NyaXB0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNjcmlwdCgpLT5mb3JiaWRF
eGVjdXRpb24oKTsKLSAgICAgICAgICAgICAgICB0YXNrLT5ydW4oV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgICAgICAgICB0YXNrLT5ydW4oc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgfQogCkBA
IC00MzksNyArNDM5LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjps
b2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBtb2R1bGVVUkwKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZXBvcnRFeGNlcHRpb24obWVzc2FnZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7
IH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0YXNrLT5ydW4oV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgICAgIHRhc2stPnJ1bihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA4YmU4MDgx
YTc3YTczMTNkMDFlOTc1MDE3NDhjMGVkODY1ZTQxMjMyLi4wZjE5NDU0NDhjNDVjYjExMWRjYzRh
MjVhNmM5YWJmNmYxNjQ0ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC02NywxNCArNjcsMTQgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQKICAgICAgICAgICAgIG1fc2NyaXB0ID0gc2NyaXB0UmVzb3VyY2UtPnNjcmlwdDsKICAgICAg
ICAgICAgIG1fcmVzcG9uc2VVUkwgPSBzY3JpcHRSZXNvdXJjZS0+cmVzcG9uc2VVUkw7CiAgICAg
ICAgICAgICBtX3Jlc3BvbnNlTUlNRVR5cGUgPSBzY3JpcHRSZXNvdXJjZS0+bWltZVR5cGU7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChjcmVhdGVSZXNvdXJjZVJlcXVlc3QoaW5pdGlhdG9y
SWRlbnRpZmllcikpOwogICAgIGlmICghcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGlzPFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSk7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtl
clNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAog
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNj
b3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBzY3JpcHQoKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBl
IH0pOwogICAgIH0KICNlbmRpZgotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBS
ZXNvdXJjZVJlcXVlc3QmJiBzY3JpcHRSZXF1ZXN0LCBGZXRjaE9wdGlvbnMmJiBmZXRjaE9wdGlv
bnMsIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50LCBTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlck1vZGUsIFdvcmtl
clNjcmlwdExvYWRlckNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiB0YXNrTW9kZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oCmluZGV4IDY0MWEzNWQyMWI4ODlhYzhjZjZmYTdmZmM0ODc1M2RmY2M5OTcwYzUuLjllNmNi
ZjJlY2QzMzBlOTU0NDgzYTFjMzgyYTIyY2Q4NzIyMzlmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9FeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaApAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEV4dGVu
ZGFibGVNZXNzYWdlRXZlbnQoc3RhdGUsIHR5cGUsIGluaXRpYWxpemVyLCBpc1RydXN0ZWQpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ+IGNyZWF0ZShW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQgPSB7IH0sIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNl
ID0gV1RGOjpudWxsb3B0KTsKKyAgICBzdGF0aWMgUmVmPEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ+
IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYg
bGFzdEV2ZW50SWQgPSB7IH0sIE9wdGlvbmFsPEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2U+
JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKIAogICAgIH5FeHRlbmRhYmxlTWVzc2FnZUV2ZW50
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKaW5kZXggMTE5ZjNjZmEwMjA0YzUyYzE5MjY4MTE2YTRhMDdiNDllMDFi
YmVmYS4uNzhkMGEzMzIwYjcxZjUwNTVjNjNjMjJhYzRlZTM1NGY2NmU1OWYwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXJQZW5k
aW5nSm9icygpCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50cygpCiB7CiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkgewotICAgICAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgPSBkb2N1bWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpID8gbWFrZU9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihkb2N1bWVudC0+YWN0
aXZlU2VydmljZVdvcmtlcigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDogV1RGOjpudWxs
b3B0OworICAgICAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPSBkb2N1bWVudC0+YWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihkb2N1bWVudC0+YWN0
aXZlU2VydmljZVdvcmtlcigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDogc3RkOjpudWxs
b3B0OwogICAgICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoZG9jdW1lbnQtPnRvcE9y
aWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqZG9jdW1lbnQsICp0aGlzKSwg
Y29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZG9jdW1lbnQt
PnVzZXJBZ2VudChkb2N1bWVudC0+dXJsKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmlu
ZGV4IDA5MDlhOTUzODE2NGQ5ZmQ0MGI0YmU1M2Y0Nzc5ZTA3OTNmNjU5ZjYuLjAzMzBiNDliZGMx
NDQwYTQ3Mjg4ZTM1ZjkyMDI3N2VmNmFiNTMzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC02Niwy
NyArNjYsMjcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50
aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlw
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU+IGZyYW1l
VHlwZTsKICAgICBkZWNvZGVyID4+IGZyYW1lVHlwZTsKICAgICBpZiAoIWZyYW1lVHlwZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFVSTD4gdXJsOwogICAgIGRlY29kZXIgPj4gdXJsOwogICAgIGlmICgh
dXJsKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ7CiAgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZy
YW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpIH0gfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuY3BwCmluZGV4IGE2ZDQ0N2Rh
YjU0YWM5NmVmNmUwYzc2NzdiMjVlMmM3MzQ0YTA4NGMuLjM1NTg0YjhhZjA0YzUyYjc2ODBjZDZi
ODc5NDVhNzY0ODhmMmE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmNwcApAQCAt
NDAsMTMgKzQwLDEzIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluCiAgICAgZm9yIChhdXRvIGl0
ZW0gOiBzdHJpbmcuc3BsaXQoJy0nKSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBwYXJz
ZUludGVnZXI8dWludDY0X3Q+KGl0ZW0pOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIgfHwgISpp
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGlmICghY291bnRlcisrKQogICAgICAgICAg
ICAgY2xpZW50SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVy
LnZhbHVlKCkpOwogICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIpCiAgICAgICAgICAgICBj
bGllbnRJZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
RG9jdW1lbnRJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKICAgICB9Ci0gICAg
cmV0dXJuIChjb3VudGVyID09IDIpID8gbWFrZU9wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRp
ZmllcikpIDogV1RGOjpudWxsb3B0OworICAgIHJldHVybiAoY291bnRlciA9PSAyKSA/IHN0ZDo6
bWFrZV9vcHRpb25hbChXVEZNb3ZlKGNsaWVudElkZW50aWZpZXIpKSA6IHN0ZDo6bnVsbG9wdDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaApp
bmRleCA5OGE0ZTM1NTZkMTc4MDAyMDJlNTNhMzBmYjQyMGRmZjY4ZmE4Mzg1Li5kNjM4MWQ3ZDVi
YzkyZmViN2Y5ZTA2OGMzN2EzYTRlNDIxODgxNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIuaApAQCAtNjMsMTIgKzYzLDEyIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZGVjb2RlKERlCiAgICAgT3B0
aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXI7CiAgICAgZGVjb2RlciA+PiBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBp
ZiAoIXNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8RG9jdW1l
bnRJZGVudGlmaWVyPiBjb250ZXh0SWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNvbnRleHRJ
ZGVudGlmaWVyOwogICAgIGlmICghY29udGV4dElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
eyB7ICpzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgKmNvbnRleHRJZGVudGlmaWVyIH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50UXVlcnlPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oCmluZGV4IGQ0MTg4MmE2YzE4YTNiZjE5
YTIwNGExNTNhMWQyZWNjOTJkYWIwZjYuLmQwMTg3Yzk4NzNhMjgxYTRlMmI3Mjk4Y2MyYzM1OWMw
MzhkZGQ0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaApAQCAtNTIsMTIgKzUy
LDEyIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnM+IFNlcnZpY2VX
b3JrZXJDbGllbnRRdWVyeU9wdGlvbnM6OmRlY29kCiAgICAgT3B0aW9uYWw8Ym9vbD4gaW5jbHVk
ZVVuY29udHJvbGxlZDsKICAgICBkZWNvZGVyID4+IGluY2x1ZGVVbmNvbnRyb2xsZWQ7CiAgICAg
aWYgKCFpbmNsdWRlVW5jb250cm9sbGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudFR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlwZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiB7IHsgKmluY2x1ZGVVbmNvbnRyb2xsZWQsICp0eXBlIH0gfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaAppbmRleCBlZmRmYTdjNTAyZTgwODQzMDk3MjViNjRjODcwMzNmNmVk
MDM2YWNjLi4yZGEyZGJiMTUzNmU5ODAwNTViZjk0YzA2YjZjYjI0ZDI1N2MxMjU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCkBAIC01NywxNyArNTcsMTcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSB7CiAgICAgICAgICAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+IHNjcmlwdDsKICAg
ICAgICAgICAgIGRlY29kZXIgPj4gc2NyaXB0OwogICAgICAgICAgICAgaWYgKCFzY3JpcHQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3BvbnNlVVJM
OwogICAgICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKICAgICAgICAgICAgIGlmICgh
cmVzcG9uc2VVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IG1pbWVUeXBlOwogICAgICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKICAgICAg
ICAgICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBy
ZXR1cm4ge3sKICAgICAgICAgICAgICAgICBXVEZNb3ZlKCpzY3JpcHQpLApAQCAtMTExLDU0ICsx
MTEsNTQgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxPcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+PiBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVnaXN0
cmF0aW9uOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uOwogICAgIGlmICghcmVnaXN0cmF0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNjcmlwdEJ1ZmZlcj4gc2NyaXB0OwogICAgIGRl
Y29kZXIgPj4gc2NyaXB0OwogICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcg
cmVmZXJyZXJQb2xpY3k7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlclBvbGljeSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0
VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHdvcmtlclR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBsb2FkZWRGcm9tRGlzazsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzY3JpcHRSZXNvdXJjZU1hcCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxD
ZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKICAgICBkZWNvZGVyID4+IGNlcnRpZmlj
YXRlSW5mbzsKICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewog
ICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllciksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRGF0YS5oCmluZGV4IGMzOGM5ZTdhNjAy
OWIyODVhYWJiZjJhZGI3ZTc4YTA3NDJjYTRkYWUuLmJjNTZlOWIwM2RkMGJmZmEwMmM2YWYzYTBm
NjY0NmFlZjgwNGNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyRGF0YS5oCkBAIC01OSwyNyArNTksMjcgQEAgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+IFNlcnZpY2VXb3JrZXJEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICBk
ZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8VVJMPiBzY3JpcHRVUkw7CiAgICAgZGVjb2RlciA+PiBzY3JpcHRVUkw7CiAgICAgaWYg
KCFzY3JpcHRVUkwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyU3RhdGU+IHN0YXRl
OwogICAgIGRlY29kZXIgPj4gc3RhdGU7CiAgICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFdvcmtlclR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwogICAgIGlmICghdHlw
ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
PiByZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uSWRl
bnRpZmllcjsKICAgICBpZiAoIXJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY3JpcHRVUkwpLCBXVEZNb3Zl
KCpzdGF0ZSksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpyZWdpc3RyYXRpb25JZGVudGlmaWVy
KSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IGI4MTU2MjQ3MmMzZTRmNjZhMDBmNjI1YmFlZWMwODk0
MmM2ZDE1YjEuLmI2Yzk1NjMzOGUxZGZkMjExZGFjMTdjMmIzMTA1OTUzMjlmODE4NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oCkBAIC05MSwzNyArOTEsMzcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+
IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGlkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiBpZGVudGlmaWVyOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFNlcnZp
Y2VXb3JrZXJKb2JEYXRhIGpvYkRhdGE7CiAgICAgam9iRGF0YS5tX2lkZW50aWZpZXIgPSAqaWRl
bnRpZmllcjsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5zY3JpcHRVUkwpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5jbGllbnRDcmVhdGlvblVSTCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKICAgICBkZWNv
ZGVyID4+IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBqb2JEYXRhLnRv
cE9yaWdpbiA9IFdURk1vdmUoKnRvcE9yaWdpbik7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGpvYkRhdGEuc2NvcGVVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS5z
b3VyY2VDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29ya2Vy
VHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnR5cGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgc3dpdGNoIChqb2JEYXRhLnR5cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpSZWdpc3RlcjogewogICAgICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
T3B0aW9ucz4gcmVnaXN0cmF0aW9uT3B0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiByZWdpc3Ry
YXRpb25PcHRpb25zOwogICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbk9wdGlvbnMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgam9iRGF0YS5yZWdpc3RyYXRpb25PcHRpb25zID0gV1RGTW92ZSgqcmVnaXN0
cmF0aW9uT3B0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXIuaAppbmRleCAxY2ZjNjEzNTM3YjZlOTJjYzQwMTE5NjliY2NlMTFlYzZhZGIzZGZj
Li43YTdkNjQ4NTNkZGM0NzE2ZGUyNWRlMDdhN2YwZjcxYTA3Y2QwZDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllci5oCkBAIC02MSwxMiArNjEsMTIgQEAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI6OmRl
Y29kZSgKICAgICBPcHRpb25hbDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyPiBjb25uZWN0
aW9uSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAg
IGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllcj4gam9iSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGpvYklkZW50
aWZpZXI7CiAgICAgaWYgKCFqb2JJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpjb25uZWN0aW9uSWRlbnRpZmllciksIFdURk1vdmUoKmpvYklkZW50aWZpZXIpIH0gfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCmluZGV4IDdlNzY5NWYyYTkyZTYxYTM3
ZWM1NDdjNGE3NzVmMTlkM2NjMjhlMDcuLmQ0MDY2OWQzZjYzMjY5ZDBmYWNiNzViZmVlNDBiNTc2
MzA0MzNjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMzgsOSArMzgs
OSBAQCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29ucwogICAgICAgICBzY29wZVVSTC5pc29sYXRlZENv
cHkoKSwKICAgICAgICAgdXBkYXRlVmlhQ2FjaGUsCiAgICAgICAgIGxhc3RVcGRhdGVUaW1lLAot
ICAgICAgICBpbnN0YWxsaW5nV29ya2VyID8gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+KGlu
c3RhbGxpbmdXb3JrZXItPmlzb2xhdGVkQ29weSgpKSA6IFdURjo6bnVsbG9wdCwKLSAgICAgICAg
d2FpdGluZ1dvcmtlciA/IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPih3YWl0aW5nV29ya2Vy
LT5pc29sYXRlZENvcHkoKSkgOiBXVEY6Om51bGxvcHQsCi0gICAgICAgIGFjdGl2ZVdvcmtlciA/
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPihhY3RpdmVXb3JrZXItPmlzb2xhdGVkQ29weSgp
KSA6IFdURjo6bnVsbG9wdCwKKyAgICAgICAgaW5zdGFsbGluZ1dvcmtlciA/IE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJEYXRhPihpbnN0YWxsaW5nV29ya2VyLT5pc29sYXRlZENvcHkoKSkgOiBzdGQ6
Om51bGxvcHQsCisgICAgICAgIHdhaXRpbmdXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4od2FpdGluZ1dvcmtlci0+aXNvbGF0ZWRDb3B5KCkpIDogc3RkOjpudWxsb3B0LAorICAg
ICAgICBhY3RpdmVXb3JrZXIgPyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4oYWN0aXZlV29y
a2VyLT5pc29sYXRlZENvcHkoKSkgOiBzdGQ6Om51bGxvcHQsCiAgICAgfTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEuaAppbmRleCBmM2JmMzJiOWZkNzg3NTllMTdiYjlkZjY4ZjBjYzgy
NGE5NjQwZDM1Li45ZjUzZmFkMmFiNWFlY2E2NmIyMjZkNTY5NjMzMjIyMGI1YjRjNWY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaApAQCAtNjgsNDIgKzY4LDQyIEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YTo6ZGVjb2RlKERlCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4g
a2V5OwogICAgIGRlY29kZXIgPj4ga2V5OwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBpZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxVUkw+IHNjb3BlVVJMOwogICAgIGRlY29kZXIgPj4gc2NvcGVVUkw7CiAgICAg
aWYgKCFzY29wZVVSTCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFD
YWNoZT4gdXBkYXRlVmlhQ2FjaGU7CiAgICAgZGVjb2RlciA+PiB1cGRhdGVWaWFDYWNoZTsKICAg
ICBpZiAoIXVwZGF0ZVZpYUNhY2hlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8ZG91YmxlPiByYXdXYWxs
VGltZTsKICAgICBkZWNvZGVyID4+IHJhd1dhbGxUaW1lOwogICAgIGlmICghcmF3V2FsbFRpbWUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4+IGluc3RhbGxp
bmdXb3JrZXI7CiAgICAgZGVjb2RlciA+PiBpbnN0YWxsaW5nV29ya2VyOwogICAgIGlmICghaW5z
dGFsbGluZ1dvcmtlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJE
YXRhPj4gd2FpdGluZ1dvcmtlcjsKICAgICBkZWNvZGVyID4+IHdhaXRpbmdXb3JrZXI7CiAgICAg
aWYgKCF3YWl0aW5nV29ya2VyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+PiBhY3RpdmVXb3JrZXI7CiAgICAgZGVjb2RlciA+PiBhY3RpdmVXb3JrZXI7CiAg
ICAgaWYgKCFhY3RpdmVXb3JrZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4geyB7IFdURk1vdmUoKmtleSks
IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY29wZVVSTCksIFdURk1vdmUoKnVwZGF0
ZVZpYUNhY2hlKSwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKCpyYXdXYWxsVGltZSksIFdURk1v
dmUoKmluc3RhbGxpbmdXb3JrZXIpLCBXVEZNb3ZlKCp3YWl0aW5nV29ya2VyKSwgV1RGTW92ZSgq
YWN0aXZlV29ya2VyKSB9IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKaW5kZXgg
ZTQ0NTJhN2Y0NWE4NDA0NmI1MzRmZjA0NWVhYmEwYmNjNjFkOGJiNi4uNzA1YjJlZjU2MDM0ZmM0
Y2E2M2Y1YmU3MGNhNzBmY2ExOWU4OTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNw
cApAQCAtMTAyLDcgKzEwMiw3IEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmZyb21EYXRhYmFzCiAgICAgYXV0byB0
aGlyZCA9IGtleS5maW5kKHNlcGFyYXRvckNoYXJhY3Rlciwgc2Vjb25kICsgMSk7CiAKICAgICBp
ZiAoZmlyc3QgPT0gc2Vjb25kIHx8IHNlY29uZCA9PSB0aGlyZCkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PHVpbnQxNl90PiBzaG9ydFBvcnQ7CiAKQEAgLTExMCwxMiArMTEwLDEyIEBAIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6
OmZyb21EYXRhYmFzCiAgICAgaWYgKHRoaXJkIC0gc2Vjb25kID4gMSkgewogICAgICAgICBzaG9y
dFBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyBrZXkgfS5zdWJzdHJp
bmcoc2Vjb25kICsgMSwgdGhpcmQgLSBzZWNvbmQgLSAxKSk7CiAgICAgICAgIGlmICghc2hvcnRQ
b3J0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBzY29wZSA9IFVSTCB7IFVSTCgpLCBr
ZXkuc3Vic3RyaW5nKHRoaXJkICsgMSkgfTsKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkuc3Vic3Ry
aW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0cmluZyhmaXJzdCArIDEsIHNlY29uZCAtIGZpcnN0IC0g
MSksIHNob3J0UG9ydCB9LCBXVEZNb3ZlKHNjb3BlKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgKaW5kZXggY2VhY2ZkNTkyYTZkZWZhYjVmMTA0NWRkNzJlYzlmMGJlNzBjYTcxNC4uZDBm
OWI0NDViNTI0M2U5MzA5MDMwOGQ3YTFlMzdhZDRiZGVmMTA3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleS5oCkBAIC04NiwxMSArODYsMTEgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZGVjb2RlKERlY28KICAg
ICBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbjsKICAgICBkZWNvZGVyID4+
IHRvcE9yaWdpbjsKICAgICBpZiAoIXRvcE9yaWdpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFVSTCBzY29wZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjb3BlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZSgqdG9wT3JpZ2luKSwgV1RGTW92ZShzY29wZSkg
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKaW5kZXggMmUzNTU3ZmE3ZGY2
N2YxYmY5OGM3YjdhNWRlNGIwYTVhN2JjY2NmNS4uZmUwMmJmN2ZjZDVmMTU4OWUxMmI1YmEyNjkw
NjIyNTdjNzRkNTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgKQEAgLTU3
LDE3ICs1NywxNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uT3B0aW9ucz4g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnM6OmRlYwogICAgIE9wdGlvbmFsPFN0cmlu
Zz4gc2NvcGU7CiAgICAgZGVjb2RlciA+PiBzY29wZTsKICAgICBpZiAoIXNjb3BlKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8V29ya2VyVHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAg
aWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
PiB1cGRhdGVWaWFDYWNoZTsKICAgICBkZWNvZGVyID4+IHVwZGF0ZVZpYUNhY2hlOwogICAgIGlm
ICghdXBkYXRlVmlhQ2FjaGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbk9wdGlvbnMgeyBXVEZNb3ZlKCpzY29wZSksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCp1
cGRhdGVWaWFDYWNoZSkgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZjQx
YmY4M2ZhYzM1NDMxOTNhMmFiOWNhNjEzN2MzOGY3NDkyNmNmMi4uNTAxZDJlZDhiOGE4ODNjMTBm
NTg2NTFiZDg4NmRkZDQzMDY4YzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQo
KSA9IGRlZmF1bHQ7CiBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2RhdGEpOwotICAgIHJldHVybiBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZSgqc3RkOjpleGNoYW5nZShtX2RhdGEsIFdURjo6bnVs
bG9wdCksIHBhcmFtcywgV1RGTW92ZShvcmlnaW4pLCAqdGhpcywgV1RGTW92ZSh0b3BPcmlnaW4p
LCBpZGJDb25uZWN0aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSk7CisgICAgcmV0dXJuIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCpzdGQ6OmV4Y2hhbmdlKG1fZGF0YSwgc3Rk
OjpudWxsb3B0KSwgcGFyYW1zLCBXVEZNb3ZlKG9yaWdpbiksICp0aGlzLCBXVEZNb3ZlKHRvcE9y
aWdpbiksIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IDM3YzRiN2EyMjBjMWI4NmY1MGM3Njk3YjRkN2U5MzNkMzhiMTczYzguLmJlMTdi
MmI4NTM5MTY5NWUxYTkwZjY3NTUwMTc3Mjc1NDg1ZjY1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiBtX2pvYkRhdGFJZGVudGlmaWVyOwotICAgIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9kYXRhOyAvLyBCZWNvbWVzIFdURjo6bnVsbG9w
dCBhZnRlciB0aGUgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGhhcyBiZWVuIGNyZWF0ZWQuCisg
ICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX2RhdGE7IC8vIEJlY29tZXMg
c3RkOjpudWxsb3B0IGFmdGVyIHRoZSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgaGFzIGJlZW4g
Y3JlYXRlZC4KICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKICAg
ICBib29sIG1fZG9lc0hhbmRsZUZldGNoIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAppbmRleCA2NTM3ZTk1MTczNmJlYWYxNzFmYjYxODVmYzdkMjhlZGUyNDg0NjA0Li5j
OWVjYjM1NTBmMDk3OTg1ZTA2YWRkYmQ5ODY4ZDkwZDk0OTM5OTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcApAQCAtMTE1LDEyICsxMTUsMTIgQEAgc3RydWN0IEltcG9ydGVkU2NyaXB0
QXR0cmlidXRlcyB7CiAgICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CiAgICAgICAg
IGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7CiAgICAgICAgIGlmICghcmVzcG9uc2VVUkwpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwogICAgICAgICBkZWNv
ZGVyID4+IG1pbWVUeXBlOwogICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCkBAIC0z
MjksNyArMzI5LDcgQEAgc3RhdGljIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZT4gc3RyaW5nVG9VcGRhdGVWaWFDYWNoZShjb25zdCBTdHJpbmcKICAgICBpZiAodXBkYXRlID09
ICJOb25lIikKICAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6Tm9u
ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogc3RhdGljIFN0cmluZyB3b3JrZXJUeXBlVG9TdHJpbmcoV29ya2VyVHlwZSB3b3JrZXJU
eXBlKQpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXb3JrZXJUeXBlPiBzdHJp
bmdUb1dvcmtlclR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIGlmICh0eXBlID09ICJNb2R1
bGUiKQogICAgICAgICByZXR1cm4gV29ya2VyVHlwZTo6TW9kdWxlOwogCi0gICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlZ2lzdHJh
dGlvbkRhdGFiYXNlOjpwdXNoQ2hhbmdlcyhjb25zdCBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXksIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4+JiBjaGFuZ2Vk
UmVnaXN0cmF0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtNTY4LDggKzU2OCw4IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1w
b3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gd29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
ICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29y
a2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwg
KndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsKLSAgICAgICAgYXV0byByZWdp
c3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSks
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2Fj
aGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlv
biksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNh
dGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJl
clBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OworICAg
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsg
V1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCks
ICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07CisgICAgICAgIGF1dG8gY29u
dGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1v
dmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZN
b3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBX
VEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwg
dHJ1ZSwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8sIFdURk1vdmUoc2NyaXB0UmVzb3Vy
Y2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9T
dG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDc0
YTVjZDJmNDM5NGNiMDMzMTQ0YjMyMTMzYTMwMGZlMWJjMTI1ODAuLjhmZjA2YWY1YzkyYTliMDBh
NjIyYmNmMzU1MWEwYjExMTBjMTA2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMTUs
NyArMTE1LDcgQEAgdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGsKICAgICBpZiAoa2V5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV91cGRhdGVkUmVnaXN0cmF0aW9ucy5zZXQoa2V5
LCBXVEY6Om51bGxvcHQpOworICAgIG1fdXBkYXRlZFJlZ2lzdHJhdGlvbnMuc2V0KGtleSwgc3Rk
OjpudWxsb3B0KTsKICAgICBzY2hlZHVsZURhdGFiYXNlUHVzaElmTmVjZXNzYXJ5KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
Y3JpcHRTdG9yYWdlLmNwcAppbmRleCAyNjBhNDVhMzVkZjc1MTQ2ODU4ZGJhYzJhYzIyODVlZDc5
MmMyYzc2Li44Zjc2MGQ2MmY3ZGIwMDdlNWM0YWJlZDM4YWEwOGNiZWZlMDE2NTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUZpbGVN
YXBwaW5nKHVpbnQ2NF90IGZpbGVTaXplKQogCiBTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3Rv
cmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9y
eSkKLSAgICAsIG1fc2FsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCgpKS52
YWx1ZU9yKEZpbGVTeXN0ZW06OlNhbHQoKSkpCisgICAgLCBtX3NhbHQoRmlsZVN5c3RlbTo6cmVh
ZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVfb3IoRmlsZVN5c3RlbTo6U2FsdCgpKSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYWZjNTg4NDM0Mjk1ODBj
N2ZjYWY4YWIwN2QxOGUxYTYyYTZkNDliZS4uZjdhZjA3ZDFiNGE5Yzc1NDM3OGRlMjM2ZTRhNGZi
OWZlMWYyZGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKQEAgLTk1LDEwICs5NSwxMCBAQCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2luQnlJ
RChjbwogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2lu
LmZpbmQoY2xpZW50T3JpZ2luKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVudGlm
aWVyc1Blck9yaWdpbi5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghaXRlcmF0b3ItPnZhbHVlLmlkZW50
aWZpZXJzLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBjbGllbnRJ
dGVyYXRvciA9IG1fY2xpZW50c0J5SWQuZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBBU1NF
UlQoY2xpZW50SXRlcmF0b3IgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMTIwMDUxNjk4YmY5Mzk4MThlNGQ0M2U4
NWM2OTU3MzAwYmE3ZGNhZi4uYjA1NjI4ZjQwMGVhOWQ5YzYzN2ZjM2FiNDU3ZjAwNGZkYzVmMjgw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA1LDcg
KzEwNSw3IEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlCiB7CiAgICAgYXV0byogd29ya2VyID0g
U1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgYXV0byogc2VydmVyID0gd29ya2VyID8gd29ya2VyLT5zZXJ2ZXIo
KSA6IG51bGxwdHI7Ci0gICAgY2FsbGJhY2soc2VydmVyID8gc2VydmVyLT5jbGFpbSgqd29ya2Vy
KSA6IFdURjo6bnVsbG9wdCk7CisgICAgY2FsbGJhY2soc2VydmVyID8gc2VydmVyLT5jbGFpbSgq
d29ya2VyKSA6IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpza2lwV2FpdGluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAppbmRleCA5NzI1NzAwNmU4YTI3Y2QwNWFjMzRiNDAwNWM5ZWNjOWJh
NGY3ZDg4Li4yNDA1Mjk4NzhiN2JiYTJkNWM4ZGUyNWNjYWMxNmY0NjAwY2Y5Y2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcApAQCAtODcsNyArODcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU1dT
ZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZWdpc3Ry
YXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3JlZ2lzdHJhdGlvbi0+ZGF0
YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJbmZvLCBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVSTCwg
bV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsIG1fc2NyaXB0
UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9u
LT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8s
IG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0
VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgbV9z
Y3JpcHRSZXNvdXJjZU1hcCB9OwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBC
b3VuZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDgwZGRkM2RlM2Vk
YzQyNGUzNzBlNTY5OWE4MTNkNmU5ZWU0ZmJlMDMuLmQ4NTI0NGNhNzIwNWIyYWY3MGFjZTI5MTVi
NDVhNTU3Yzg2NzUyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAt
NDA3LDggKzQwNyw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybCwKIAogT3B0aW9uYWw8RXhjZXB0
aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0OjpwcmVwYXJlVG9TZW5kKCkKIHsKLSAgICAvLyBB
IHJldHVybiB2YWx1ZSBvdGhlciB0aGFuIFdURjo6bnVsbG9wdCBtZWFucyB3ZSBzaG91bGQgbm90
IHRyeSB0byBzZW5kLCBhbmQgd2Ugc2hvdWxkIHJldHVybiB0aGF0IHZhbHVlIHRvIHRoZSBjYWxs
ZXIuCi0gICAgLy8gV1RGOjpudWxsb3B0IG1lYW5zIHdlIGFyZSByZWFkeSB0byBzZW5kIGFuZCBz
aG91bGQgY29udGludWUgd2l0aCB0aGUgc2VuZCBhbGdvcml0aG0uCisgICAgLy8gQSByZXR1cm4g
dmFsdWUgb3RoZXIgdGhhbiBzdGQ6Om51bGxvcHQgbWVhbnMgd2Ugc2hvdWxkIG5vdCB0cnkgdG8g
c2VuZCwgYW5kIHdlIHNob3VsZCByZXR1cm4gdGhhdCB2YWx1ZSB0byB0aGUgY2FsbGVyLgorICAg
IC8vIHN0ZDo6bnVsbG9wdCBtZWFucyB3ZSBhcmUgcmVhZHkgdG8gc2VuZCBhbmQgc2hvdWxkIGNv
bnRpbnVlIHdpdGggdGhlIHNlbmQgYWxnb3JpdGhtLgogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25Pcjx2b2lkPiB7IH07CkBAIC00
MzYsNyArNDM2LDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uT3I8dm9pZD4+IFhNTEh0dHBSZXF1ZXN0
OjpwcmVwYXJlVG9TZW5kKCkKICAgICB9CiAKICAgICBtX2Vycm9yID0gZmFsc2U7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChPcHRpb25hbDxTZW5kVHlwZXM+JiYgc2Vu
ZFR5cGUpCkBAIC02MjMsNyArNjIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6OmNyZWF0ZVJlcXVlc3QoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9leGNlcHRpb25D
b2RlID0gV1RGOjpudWxsb3B0OworICAgIG1fZXhjZXB0aW9uQ29kZSA9IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV91cGxvYWRDb21wbGV0ZSA9ICFyZXF1ZXN0Lmh0
dHBCb2R5KCk7CiAgICAgbV9zZW5kRmxhZyA9IHRydWU7CkBAIC02OTksOCArNjk5LDggQEAgYm9v
bCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgpCiAKICAgICAvLyBDYW5jZWxsaW5nIG1f
bG9hZGluZ0FjdGl2aXR5IG1heSB0cmlnZ2VyIGEgd2luZG93Lm9ubG9hZCBjYWxsYmFjayB3aGlj
aCBjYW4gY2FsbCBvcGVuKCkgb24gdGhlIHNhbWUgeGhyLgogICAgIC8vIFRoaXMgd291bGQgY3Jl
YXRlIGludGVybmFsQWJvcnQgcmVlbnRyYW50IGNhbGwuCi0gICAgLy8gbV9sb2FkaW5nQWN0aXZp
dHkgaXMgc2V0IHRvIFdURjo6bnVsbG9wdCBiZWZvcmUgYmVpbmcgY2FuY2VsbGVkIHRvIGV4aXQg
ZWFybHkgaW4gYW55IHJlZW50cmFudCBpbnRlcm5hbEFib3J0KCkgY2FsbC4KLSAgICBhdXRvIGxv
YWRpbmdBY3Rpdml0eSA9IHN0ZDo6ZXhjaGFuZ2UobV9sb2FkaW5nQWN0aXZpdHksIFdURjo6bnVs
bG9wdCk7CisgICAgLy8gbV9sb2FkaW5nQWN0aXZpdHkgaXMgc2V0IHRvIHN0ZDo6bnVsbG9wdCBi
ZWZvcmUgYmVpbmcgY2FuY2VsbGVkIHRvIGV4aXQgZWFybHkgaW4gYW55IHJlZW50cmFudCBpbnRl
cm5hbEFib3J0KCkgY2FsbC4KKyAgICBhdXRvIGxvYWRpbmdBY3Rpdml0eSA9IHN0ZDo6ZXhjaGFu
Z2UobV9sb2FkaW5nQWN0aXZpdHksIHN0ZDo6bnVsbG9wdCk7CiAgICAgbG9hZGluZ0FjdGl2aXR5
LT5sb2FkZXItPmNhbmNlbCgpOwogCiAgICAgLy8gSWYgd2luZG93Lm9ubG9hZCBjYWxsYmFjayBj
YWxscyBvcGVuKCkgYW5kIHNlbmQoKSBvbiB0aGUgc2FtZSB4aHIsIG1fbG9hZGluZ0FjdGl2aXR5
IGlzIG5vdyBzZXQgdG8gYSBuZXcgdmFsdWUuCkBAIC05MjIsNyArOTIyLDcgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nKQogCiAgICAgbV9yZXNw
b25zZUJ1aWxkZXIuc2hyaW5rVG9GaXQoKTsKIAotICAgIG1fbG9hZGluZ0FjdGl2aXR5ID0gV1RG
OjpudWxsb3B0OworICAgIG1fbG9hZGluZ0FjdGl2aXR5ID0gc3RkOjpudWxsb3B0OwogCiAgICAg
bV9zZW5kRmxhZyA9IGZhbHNlOwogICAgIGNoYW5nZVN0YXRlKERPTkUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmggYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1h
bmRSZXN1bHQuaAppbmRleCA2NzEzM2RmYzM0NmM3OTQzZWU4Nzk1YzY4NjViZDNhMmZkNTIzZjNj
Li41YjQzNTVkNzM1MmY5MTY0OGJmYzI0NWQ4MDY1MDEyYmFiNjg5NGFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0Nv
bW1hbmRSZXN1bHQuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBD
b21tYW5kUmVzdWx0KFdURk1vdmUocmVzdWx0KSwgQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpV
bmtub3duRXJyb3IpOwogICAgIH0KIAotICAgIHN0YXRpYyBDb21tYW5kUmVzdWx0IGZhaWwoRXJy
b3JDb2RlIGVycm9yQ29kZSwgT3B0aW9uYWw8U3RyaW5nPiBlcnJvck1lc3NhZ2UgPSBXVEY6Om51
bGxvcHQpCisgICAgc3RhdGljIENvbW1hbmRSZXN1bHQgZmFpbChFcnJvckNvZGUgZXJyb3JDb2Rl
LCBPcHRpb25hbDxTdHJpbmc+IGVycm9yTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBDb21tYW5kUmVzdWx0KGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAg
ICB9CkBAIC04Niw4ICs4Niw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYgYWRkaXRpb25hbEVycm9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JBZGRpdGlv
bmFsRGF0YTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbW1hbmRSZXN1bHQoUmVmUHRy
PEpTT046OlZhbHVlPiYmLCBPcHRpb25hbDxFcnJvckNvZGU+ID0gV1RGOjpudWxsb3B0KTsKLSAg
ICBleHBsaWNpdCBDb21tYW5kUmVzdWx0KEVycm9yQ29kZSwgT3B0aW9uYWw8U3RyaW5nPiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgZXhwbGljaXQgQ29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFs
dWU+JiYsIE9wdGlvbmFsPEVycm9yQ29kZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIGV4cGxpY2l0
IENvbW1hbmRSZXN1bHQoRXJyb3JDb2RlLCBPcHRpb25hbDxTdHJpbmc+ID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gbV9yZXN1bHQ7CiAgICAgT3B0aW9uYWw8RXJy
b3JDb2RlPiBtX2Vycm9yQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDQ5ZjA4MDc2NzBmYzcx
NjhiOTlkZDM4ZDQ1MGViMzI5ZjMzMzAyNDUuLjIwZmM5ODdhNGE4YmY3YmY0YTFlY2IwODQ5YTNk
YjYyMzU3YjE4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtODksNyArODksNyBAQCBzdGF0aWMg
T3B0aW9uYWw8U3RyaW5nPiBmaXJzdFdpbmRvd0hhbmRsZUluUmVzdWx0KEpTT046OlZhbHVlJiBy
ZXN1bHQpCiAgICAgICAgIGlmICghIWhhbmRsZSkKICAgICAgICAgICAgIHJldHVybiBoYW5kbGU7
CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBTZXNzaW9uOjpjbG9zZUFsbFRvcGxldmVsQnJvd3NpbmdDb250ZXh0cyhj
b25zdCBTdHJpbmcmIHRvcGxldmVsQnJvd3NpbmdDb250ZXh0LCBGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTA5LDkgKzEwOSw5IEBAIHZv
aWQgU2Vzc2lvbjo6Y2xvc2VBbGxUb3BsZXZlbEJyb3dzaW5nQ29udGV4dHMoY29uc3QgU3RyaW5n
JiB0b3BsZXZlbEJyb3dzaW5nQ29uCiAKIHZvaWQgU2Vzc2lvbjo6Y2xvc2UoRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0ID0gV1RGOjpudWxsb3B0OwotICAgIG1fY3VycmVudEJyb3dzaW5n
Q29udGV4dCA9IFdURjo6bnVsbG9wdDsKLSAgICBtX2N1cnJlbnRQYXJlbnRCcm93c2luZ0NvbnRl
eHQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dCA9IHN0ZDo6
bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRCcm93c2luZ0NvbnRleHQgPSBzdGQ6Om51bGxvcHQ7Cisg
ICAgbV9jdXJyZW50UGFyZW50QnJvd3NpbmdDb250ZXh0ID0gc3RkOjpudWxsb3B0OwogICAgIGdl
dFdpbmRvd0hhbmRsZXMoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKENvbW1hbmRSZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAocmVzdWx0LmlzRXJyb3IoKSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXN1bHQpKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNlc3Npb246OnN3aXRjaFRv
QnJvd3NpbmdDb250ZXh0KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0LCBGdW5jdGlvbjx2
bwogT3B0aW9uYWw8U3RyaW5nPiBTZXNzaW9uOjpwYWdlTG9hZFN0cmF0ZWd5U3RyaW5nKCkgY29u
c3QKIHsKICAgICBpZiAoIWNhcGFiaWxpdGllcygpLnBhZ2VMb2FkU3RyYXRlZ3kpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBzd2l0Y2ggKGNhcGFiaWxpdGllcygpLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWUoKSkgewogICAg
IGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKQEAgLTE4OCw3ICsxODgsNyBAQCBPcHRpb25h
bDxTdHJpbmc+IFNlc3Npb246OnBhZ2VMb2FkU3RyYXRlZ3lTdHJpbmcoKSBjb25zdAogICAgICAg
ICByZXR1cm4gU3RyaW5nKCJFYWdlciIpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBTZXNzaW9uOjpjcmVhdGVU
b3BMZXZlbEJyb3dzaW5nQ29udGV4dChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFu
ZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuCiAKIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVW5leHBlY3RlZEFsZXJ0T3BlbihGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHN3
aXRjaCAoY2FwYWJpbGl0aWVzKCkudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVPcihVbmhh
bmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKKyAgICBzd2l0Y2ggKGNh
cGFiaWxpdGllcygpLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgIGNhc2UgVW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I6OkRpc21pc3M6CiAgICAgICAgIGRpc21pc3NBbGVydChXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTU4LDkgKzU1OCw5IEBAIHZvaWQg
U2Vzc2lvbjo6Y2xvc2VXaW5kb3coRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byB0
b3BsZXZlbEJyb3dzaW5nQ29udGV4dCA9IHN0ZDo6ZXhjaGFuZ2UobV90b3BsZXZlbEJyb3dzaW5n
Q29udGV4dCwgV1RGOjpudWxsb3B0KTsKLSAgICAgICAgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0
ID0gV1RGOjpudWxsb3B0OwotICAgICAgICBtX2N1cnJlbnRQYXJlbnRCcm93c2luZ0NvbnRleHQg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQgPSBz
dGQ6OmV4Y2hhbmdlKG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQsIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dCA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
bV9jdXJyZW50UGFyZW50QnJvd3NpbmdDb250ZXh0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBj
bG9zZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KHRvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIH0KQEAgLTEwMDksMTkg
KzEwMDksMTkgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXkKIAogICAgIGF1dG8gcGFyYW1ldGVy
cyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJi
cm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7Ci0gICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJyZW50
QnJvd3NpbmdDb250ZXh0LnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOworICAgIHBhcmFtZXRlcnMt
PnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52YWx1
ZV9vcihlbXB0eVN0cmluZygpKSk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJub2RlSGFu
ZGxlIl9zLCBlbGVtZW50SUQpOwogICAgIHBhcmFtZXRlcnMtPnNldEJvb2xlYW4oInNjcm9sbElu
dG9WaWV3SWZOZWVkZWQiX3MsIG9wdGlvbnMuY29udGFpbnMoRWxlbWVudExheW91dE9wdGlvbjo6
U2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCkpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiY29v
cmRpbmF0ZVN5c3RlbSJfcywgb3B0aW9ucy5jb250YWlucyhFbGVtZW50TGF5b3V0T3B0aW9uOjpV
c2VWaWV3cG9ydENvb3JkaW5hdGVzKSA/ICJMYXlvdXRWaWV3cG9ydCJfcyA6ICJQYWdlIl9zKTsK
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJjb21wdXRlRWxlbWVudExheW91dCJf
cywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJl
c3BvbnNlLmlzRXJyb3IgfHwgIXJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0KSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgZmFsc2UsIFdU
Rk1vdmUocmVzcG9uc2UucmVzcG9uc2VPYmplY3QpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgV1RGTW92ZShyZXNwb25z
ZS5yZXNwb25zZU9iamVjdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgYXV0byByZWN0T2JqZWN0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgicmVjdCJfcyk7CiAgICAgICAgIGlmICghcmVjdE9iamVjdCkgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXkKICAgICAgICAgICAg
IGVsZW1lbnRZID0gZWxlbWVudFBvc2l0aW9uLT5nZXRJbnRlZ2VyKCJ5Il9zKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoIWVsZW1lbnRYIHx8ICFlbGVtZW50WSkgewotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlLCBudWxscHRy
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBTZXNzaW9uOjpjb21wdXRlRWxlbWVudExheW91dChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgT3B0aW9uU2V0PEVsZW1lbnRMYXkKICAgICAgICAgICAg
IGVsZW1lbnRIZWlnaHQgPSBlbGVtZW50U2l6ZS0+Z2V0SW50ZWdlcigiaGVpZ2h0Il9zKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoIWVsZW1lbnRXaWR0aCB8fCAhZWxlbWVudEhlaWdodCkgewot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IGZhbHNlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBmYWxzZSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMTA1MywyMCArMTA1MywyMCBAQCB2b2lkIFNlc3Npb246OmNvbXB1
dGVFbGVtZW50TGF5b3V0KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBPcHRpb25TZXQ8RWxlbWVu
dExheQogCiAgICAgICAgIGF1dG8gaXNPYnNjdXJlZCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
LT5nZXRCb29sZWFuKCJpc09ic2N1cmVkIl9zKTsKICAgICAgICAgaWYgKCFpc09ic2N1cmVkKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCwgZmFsc2UsIG51bGxwdHIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQsIGZhbHNlLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8gaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QgPSBy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJpblZpZXdDZW50ZXJQb2ludCJfcyk7
CiAgICAgICAgIGlmICghaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHJlY3QsIFdURjo6bnVsbG9wdCwgKmlzT2JzY3VyZWQsIG51bGxwdHIp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVjdCwgc3RkOjpudWxsb3B0LCAqaXNP
YnNjdXJlZCwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIGluVmlld0NlbnRlclBvaW50WCA9IGluVmlld0NlbnRlclBvaW50T2JqZWN0LT5n
ZXRJbnRlZ2VyKCJ4Il9zKTsKICAgICAgICAgYXV0byBpblZpZXdDZW50ZXJQb2ludFkgPSBpblZp
ZXdDZW50ZXJQb2ludE9iamVjdC0+Z2V0SW50ZWdlcigieSJfcyk7CiAgICAgICAgIGlmICghaW5W
aWV3Q2VudGVyUG9pbnRYIHx8ICFpblZpZXdDZW50ZXJQb2ludFkpIHsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCAqaXNPYnNjdXJlZCwg
bnVsbHB0cik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIHN0
ZDo6bnVsbG9wdCwgKmlzT2JzY3VyZWQsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTE2MTUsMTMgKzE2MTUsMTMgQEAgdm9pZCBTZXNzaW9uOjp3YWl0Rm9y
TmF2aWdhdGlvblRvQ29tcGxldGUoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b20KICAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0LmVycm9yQ29kZSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6Tm9TdWNoV2luZG93OgogICAgICAgICAg
ICAgICAgIC8vIFdpbmRvdyB3YXMgY2xvc2VkLCByZXNldCB0aGUgdG9wIGxldmVsIGJyb3dzaW5n
IGNvbnRleHQgYW5kIGlnbm9yZSB0aGUgZXJyb3IuCi0gICAgICAgICAgICAgICAgbV90b3BsZXZl
bEJyb3dzaW5nQ29udGV4dCA9IFdURjo6bnVsbG9wdDsKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCcm93c2luZ0NvbnRleHQgPSBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICAgICAgbV9jdXJy
ZW50UGFyZW50QnJvd3NpbmdDb250ZXh0ID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0ID0gc3RkOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgIG1fY3VycmVudFBhcmVudEJyb3dzaW5nQ29udGV4dCA9IHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpOb1N1Y2hGcmFtZToKICAgICAgICAgICAgICAgICAvLyBOYXZpZ2F0aW9uIGRlc3Ryb3ll
ZCB0aGUgY3VycmVudCBmcmFtZSwgcmVzZXQgdGhlIGN1cnJlbnQgYnJvd3NpbmcgY29udGV4dCBh
bmQgaWdub3JlIHRoZSBlcnJvci4KLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRCcm93c2luZ0Nv
bnRleHQgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50QnJvd3NpbmdD
b250ZXh0ID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOwpAQCAtMTY3NSwxNSArMTY3NSwxNSBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0Zp
bGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgog
T3B0aW9uYWw8U2Vzc2lvbjo6RmlsZVVwbG9hZFR5cGU+IFNlc3Npb246OnBhcnNlRWxlbWVudElz
RmlsZVVwbG9hZFJlc3VsdChjb25zdCBSZWZQdHI8SlNPTjo6VmFsdWU+JiByZXN1bHRWYWx1ZSkK
IHsKICAgICBpZiAoIXJlc3VsdFZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byByZXN1bHQgPSByZXN1bHRW
YWx1ZS0+YXNPYmplY3QoKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaXNGaWxl
VXBsb2FkID0gcmVzdWx0LT5nZXRCb29sZWFuKCJmaWxlVXBsb2FkIl9zKTsKICAgICBpZiAoIWlz
RmlsZVVwbG9hZCB8fCAhKmlzRmlsZVVwbG9hZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gbXVsdGlwbGUgPSBy
ZXN1bHQtPmdldEJvb2xlYW4oIm11bHRpcGxlIl9zKTsKICAgICBpZiAoIW11bHRpcGxlIHx8ICEq
bXVsdGlwbGUpCkBAIC0xNjk2LDcgKzE2OTYsNyBAQCB2b2lkIFNlc3Npb246OnNlbGVjdE9wdGlv
bkVsZW1lbnQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgog
ewogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxC
cm93c2luZ0NvbnRleHQudmFsdWUoKSk7Ci0gICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFt
ZUhhbmRsZSJfcywgbV9jdXJyZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlT3IoZW1wdHlTdHJpbmco
KSkpOworICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVu
dEJyb3dzaW5nQ29udGV4dC52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CiAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJub2RlSGFuZGxlIl9zLCBlbGVtZW50SUQpOwogICAgIG1faG9zdC0+c2Vu
ZENvbW1hbmRUb0JhY2tlbmQoInNlbGVjdE9wdGlvbkVsZW1lbnQiX3MsIFdURk1vdmUocGFyYW1l
dGVycyksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgewogICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvcikgewpAQCAtMTkw
MCw3ICsxOTAwLDcgQEAgdm9pZCBTZXNzaW9uOjpzZXRJbnB1dEZpbGVVcGxvYWRGaWxlcyhjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXgKIAogICAgIGF1dG8gcGFyYW1l
dGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFs
dWUoKSk7Ci0gICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJmcmFtZUhhbmRsZSJfcywgbV9jdXJy
ZW50QnJvd3NpbmdDb250ZXh0LnZhbHVlT3IoZW1wdHlTdHJpbmcoKSkpOworICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygiZnJhbWVIYW5kbGUiX3MsIG1fY3VycmVudEJyb3dzaW5nQ29udGV4dC52
YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJub2Rl
SGFuZGxlIl9zLCBlbGVtZW50SUQpOwogICAgIHBhcmFtZXRlcnMtPnNldEFycmF5KCJmaWxlbmFt
ZXMiX3MsIFdURk1vdmUoZmlsZW5hbWVzKSk7CiAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgic2V0RmlsZXNGb3JJbnB1dEZpbGVVcGxvYWQiX3MsIFdURk1vdmUocGFyYW1ldGVycyks
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVsZW1lbnRJRCwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oU2Vzc2lvbkhvc3Q6OkNvbW1hbmRS
ZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTIwODgsNyArMjA4OCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gZmls
ZVVwbG9hZFR5cGUgPSBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0LnJlc3Vs
dCgpKTsKLSAgICAgICAgICAgIGlmICghZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0aWVzKCku
c3RyaWN0RmlsZUludGVyYWN0YWJpbGl0eS52YWx1ZU9yKGZhbHNlKSkgeworICAgICAgICAgICAg
aWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3Rh
YmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3Zl
IHRoaXMgdG8gYW4gYXRvbS4KICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1
c1NjcmlwdFtdID0KICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvY3VzKGVsZW1lbnQp
IHsiCkBAIC0yMTUzLDEzICsyMTUzLDEzIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFJlc2V0IHN0aWNreSBtb2RpZmllcnMgaWYgbmVlZGVkLgogICAg
ICAgICAgICAgICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6OlNoaWZ0KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQoeyBLZXlib2FyZEludGVy
YWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgV1RGOjpudWxsb3B0LCBPcHRpb25hbDxTdHJpbmc+KCJT
aGlmdCJfcykgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFw
cGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQs
IE9wdGlvbmFsPFN0cmluZz4oIlNoaWZ0Il9zKSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdGlja3lNb2RpZmllcnMgJiBLZXlNb2RpZmllcjo6Q29udHJvbCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcmFjdGlvbnMuYXBwZW5kKHsgS2V5Ym9hcmRJbnRlcmFjdGlv
blR5cGU6OktleVJlbGVhc2UsIFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8U3RyaW5nPigiQ29udHJv
bCJfcykgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVu
ZCh7IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQsIE9w
dGlvbmFsPFN0cmluZz4oIkNvbnRyb2wiX3MpIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHN0aWNreU1vZGlmaWVycyAmIEtleU1vZGlmaWVyOjpBbHRlcm5hdGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rp
b25UeXBlOjpLZXlSZWxlYXNlLCBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFN0cmluZz4oIkFsdGVy
bmF0ZSJfcykgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFw
cGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rpb25UeXBlOjpLZXlSZWxlYXNlLCBzdGQ6Om51bGxvcHQs
IE9wdGlvbmFsPFN0cmluZz4oIkFsdGVybmF0ZSJfcykgfSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RpY2t5TW9kaWZpZXJzICYgS2V5TW9kaWZpZXI6Ok1ldGEpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ZXJhY3Rpb25zLmFwcGVuZCh7IEtleWJvYXJkSW50ZXJhY3Rp
b25UeXBlOjpLZXlSZWxlYXNlLCBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFN0cmluZz4oIk1ldGEi
X3MpIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyYWN0aW9ucy5hcHBlbmQo
eyBLZXlib2FyZEludGVyYWN0aW9uVHlwZTo6S2V5UmVsZWFzZSwgc3RkOjpudWxsb3B0LCBPcHRp
b25hbDxTdHJpbmc+KCJNZXRhIl9zKSB9KTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgIHBlcmZvcm1LZXlib2FyZEludGVyYWN0aW9ucyhXVEZNb3ZlKGludGVy
YWN0aW9ucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTIzODYsMTEgKzIzODYs
MTEgQEAgc3RhdGljIE9wdGlvbmFsPFNlc3Npb246OkNvb2tpZT4gcGFyc2VBdXRvbWF0aW9uQ29v
a2llKGNvbnN0IEpTT046Ok9iamVjdCYgY29va2kKIAogICAgIGNvb2tpZS5uYW1lID0gY29va2ll
T2JqZWN0LmdldFN0cmluZygibmFtZSJfcyk7CiAgICAgaWYgKCFjb29raWUubmFtZSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGNvb2tpZS52YWx1ZSA9IGNvb2tpZU9iamVjdC5nZXRTdHJpbmcoInZhbHVlIl9zKTsKICAg
ICBpZiAoIWNvb2tpZS52YWx1ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gcGF0aCA9IGNvb2tpZU9iamVjdC5n
ZXRTdHJpbmcoInBhdGgiX3MpOwogICAgIGlmICghIXBhdGgpCkBAIC0yNDI2LDEzICsyNDI2LDEz
IEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3Qg
U2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBj
b29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29r
aWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZU9yKCIvIikpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4i
X3MsIGNvb2tpZS5kb21haW4udmFsdWVPcihlbXB0eVN0cmluZygpKSk7Ci0gICAgY29va2llT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNvb2tpZS5zZWN1cmUudmFsdWVPcihmYWxzZSkp
OwotICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRw
T25seS52YWx1ZU9yKGZhbHNlKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgi
X3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3Ry
aW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZh
bHVlX29yKGZhbHNlKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJf
cywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7Ci0gICAgY29va2llT2JqZWN0
LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVPcigwKSk7Ci0gICAg
Y29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFs
dWVPcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldERvdWJsZSgiZXhwaXJlcyJfcywg
Y29va2llLmV4cGlyeS52YWx1ZV9vcigwKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmco
InNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiKSk7CiAgICAgcmV0
dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjYxNyw3ICsyNjE3LDcgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJj
ZSkKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgogICAgICAgICByZXR1cm4gIk51
bGwiOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHN3aXRj
aCAoaW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVPcihQb2ludGVyVHlwZTo6TW91c2UpKSB7
CisgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRl
clR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKICAgICAg
ICAgICAgIHJldHVybiAiTW91c2UiOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoK
QEAgLTI2OTEsNyArMjY5MSw3IEBAIHZvaWQgU2Vzc2lvbjo6cGVyZm9ybUFjdGlvbnMoVmVjdG9y
PFZlY3RvcjxBY3Rpb24+PiYmIGFjdGlvbnNCeVRpY2ssIEZ1bmN0aW9uPHZvCiAgICAgICAgICAg
ICAgICAgY2FzZSBBY3Rpb246OlR5cGU6OlBvaW50ZXI6IHsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChhY3Rpb24uc3VidHlwZSkgewogICAgICAgICAgICAgICAgICAgICBjYXNlIEFjdGlv
bjo6U3VidHlwZTo6UG9pbnRlclVwOgotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0
YXRlLnByZXNzZWRCdXR0b24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjdXJyZW50U3RhdGUucHJlc3NlZEJ1dHRvbiA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbjo6U3Vi
dHlwZTo6UG9pbnRlckRvd246CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhdGUu
cHJlc3NlZEJ1dHRvbiA9IGFjdGlvbi5idXR0b24udmFsdWUoKTsKQEAgLTI3MTEsNyArMjcxMSw3
IEBAIHZvaWQgU2Vzc2lvbjo6cGVyZm9ybUFjdGlvbnMoVmVjdG9yPFZlY3RvcjxBY3Rpb24+PiYm
IGFjdGlvbnNCeVRpY2ssIEZ1bmN0aW9uPHZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGUtPnNldERvdWJsZSgiZHVyYXRpb24iX3MsIGFjdGlvbi5kdXJhdGlvbi52YWx1ZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNl
IEFjdGlvbjo6U3VidHlwZTo6UG9pbnRlckNhbmNlbDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTdGF0ZS5wcmVzc2VkQnV0dG9uID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFN0YXRlLnByZXNzZWRCdXR0b24gPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBB
Y3Rpb246OlN1YnR5cGU6OktleVVwOgogICAgICAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbjo6
U3VidHlwZTo6S2V5RG93bjoKQEAgLTI3MzAsNyArMjczMCw3IEBAIHZvaWQgU2Vzc2lvbjo6cGVy
Zm9ybUFjdGlvbnMoVmVjdG9yPFZlY3RvcjxBY3Rpb24+PiYmIGFjdGlvbnNCeVRpY2ssIEZ1bmN0
aW9uPHZvCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZpcnR1YWxLZXkuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlLnByZXNzZWRWaXJ0dWFs
S2V5cy5yZW1vdmUodmlydHVhbEtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlLnByZXNzZWRLZXkgPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlLnByZXNz
ZWRLZXkgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIEFjdGlvbjo6U3Vi
dHlwZTo6S2V5RG93bjogewpAQCAtMjk0Myw3ICsyOTQzLDcgQEAgdm9pZCBTZXNzaW9uOjp0YWtl
U2NyZWVuc2hvdChPcHRpb25hbDxTdHJpbmc+IGVsZW1lbnRJRCwgT3B0aW9uYWw8Ym9vbD4gc2Ny
b2xsSW4KICAgICAgICAgaWYgKGVsZW1lbnRJRCkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dFN0cmluZygibm9kZUhhbmRsZSJfcywgZWxlbWVudElELnZhbHVlKCkpOwogICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRCb29sZWFuKCJjbGlwVG9WaWV3cG9ydCJfcywgdHJ1ZSk7Ci0gICAgICAgIGlm
IChzY3JvbGxJbnRvVmlldy52YWx1ZU9yKGZhbHNlKSkKKyAgICAgICAgaWYgKHNjcm9sbEludG9W
aWV3LnZhbHVlX29yKGZhbHNlKSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldEJvb2xlYW4o
InNjcm9sbEludG9WaWV3SWZOZWVkZWQiX3MsIHRydWUpOwogICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJ0YWtlU2NyZWVuc2hvdCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3Byb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNFcnJvciB8fCAhcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IGYxMWJmZWRj
MTQ3Y2RhM2VlNzI3MzMyYmYxNzlmMWVmMTYyMWEyZGYuLjQ2OGM4ODk3MzMwNWFhNTQyZTFhODI2
ZTkwNDIzNjVmNmViZGNmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogICAgICAgICBhdXRvIHBvc2l0aW9uID0gdGFyZ2V0U3RyaW5nLnJldmVyc2VG
aW5kKCI6Il9zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAg
ICAgICBtX3RhcmdldEFkZHJlc3MgPSB0YXJnZXRTdHJpbmcubGVmdChwb3NpdGlvbik7Ci0gICAg
ICAgICAgICBtX3RhcmdldFBvcnQgPSBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1
aW50MTZfdD4oU3RyaW5nVmlldyB7IHRhcmdldFN0cmluZyB9LnN1YnN0cmluZyhwb3NpdGlvbiAr
IDEpKS52YWx1ZU9yKDApOworICAgICAgICAgICAgbV90YXJnZXRQb3J0ID0gcGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KFN0cmluZ1ZpZXcgeyB0YXJnZXRTdHJpbmcg
fS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKSkudmFsdWVfb3IoMCk7CiAgICAgICAgIH0KICAgICB9
CiAjZW5kaWYKQEAgLTIyMyw3ICsyMjMsNyBAQCBPcHRpb25hbDxXZWJEcml2ZXJTZXJ2aWNlOjpI
VFRQTWV0aG9kPiBXZWJEcml2ZXJTZXJ2aWNlOjp0b0NvbW1hbmRIVFRQTWV0aG9kKGNvbgogICAg
IGlmIChsb3dlckNhc2VNZXRob2QgPT0gImRlbGV0ZSIpCiAgICAgICAgIHJldHVybiBXZWJEcml2
ZXJTZXJ2aWNlOjpIVFRQTWV0aG9kOjpEZWxldGU7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgV2ViRHJpdmVyU2VydmljZTo6
ZmluZENvbW1hbmQoSFRUUE1ldGhvZCBtZXRob2QsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tbWFu
ZEhhbmRsZXIqIGhhbmRsZXIsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBwYXJhbWV0ZXJzKQpA
QCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6c2VuZFJlc3BvbnNlKEZ1
bmN0aW9uPHZvaWQgKEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UmCiAgICAgICAgIC8vIExl
dCBib2R5IGJlIGEgbmV3IEpTT04gT2JqZWN0IGluaXRpYWxpc2VkIHdpdGggdGhlIGZvbGxvd2lu
ZyBwcm9wZXJ0aWVzOiAiZXJyb3IiLCAibWVzc2FnZSIsICJzdGFja3RyYWNlIi4KICAgICAgICAg
YXV0byBlcnJvck9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGVycm9y
T2JqZWN0LT5zZXRTdHJpbmcoImVycm9yIl9zLCByZXN1bHQuZXJyb3JTdHJpbmcoKSk7Ci0gICAg
ICAgIGVycm9yT2JqZWN0LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIHJlc3VsdC5lcnJvck1lc3Nh
Z2UoKS52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgZXJyb3JPYmplY3QtPnNldFN0
cmluZygibWVzc2FnZSJfcywgcmVzdWx0LmVycm9yTWVzc2FnZSgpLnZhbHVlX29yKGVtcHR5U3Ry
aW5nKCkpKTsKICAgICAgICAgZXJyb3JPYmplY3QtPnNldFN0cmluZygic3RhY2t0cmFjZSJfcywg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIC8vIElmIHRoZSBlcnJvciBkYXRhIGRpY3Rpb25hcnkg
Y29udGFpbnMgYW55IGVudHJpZXMsIHNldCB0aGUgImRhdGEiIGZpZWxkIG9uIGJvZHkgdG8gYSBu
ZXcgSlNPTiBPYmplY3QgcG9wdWxhdGVkIHdpdGggdGhlIGRpY3Rpb25hcnkuCiAgICAgICAgIGlm
IChhdXRvJiBhZGRpdGlvbmFsRGF0YSA9IHJlc3VsdC5hZGRpdGlvbmFsRXJyb3JEYXRhKCkpCkBA
IC0zMjgsMTMgKzMyOCwxMyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiB2YWx1ZUFzTnVtYmVy
SW5SYW5nZShjb25zdCBKU09OOjpWYWx1ZSYgdmFsdWUsIGRvdWJsZSBtaQogewogICAgIGF1dG8g
bnVtYmVyID0gdmFsdWUuYXNEb3VibGUoKTsKICAgICBpZiAoIW51bWJlcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlm
IChzdGQ6OmlzbmFuKCpudW1iZXIpIHx8IHN0ZDo6aXNpbmYoKm51bWJlcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoKm51bWJlciA8IG1pbkFsbG93ZWQgfHwgKm51bWJlciA+IG1heEFsbG93ZWQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gKm51bWJlcjsKIH0KQEAgLTM0MywxNCArMzQzLDE0IEBAIHN0YXRpYyBPcHRpb25h
bDx1aW50NjRfdD4gdW5zaWduZWRWYWx1ZShKU09OOjpWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0
byBudW1iZXIgPSB2YWx1ZUFzTnVtYmVySW5SYW5nZSh2YWx1ZSwgMCwgbWF4U2FmZUludGVnZXIp
OwogICAgIGlmICghbnVtYmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihudW1iZXIudmFsdWUoKSk7CiAgICAgLy8gSWYgdGhlIGNvbnRhaW5lZCB2YWx1
ZSBpcyBhIGRvdWJsZSwgYmFpbCBpbiBjYXNlIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIGludGVnZXIK
ICAgICAvLyB2YWx1ZSwgaS5lLiBpZiB0aGUgZG91YmxlIHZhbHVlIHdhcyBub3Qgb3JpZ2luYWxs
eSBpbiBpbnRlZ2VyIGZvcm0uCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZl
ci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1pbnRlZ2VyCiAgICAgaWYgKG51bWJlci52YWx1ZSgp
ICE9IGludFZhbHVlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGludFZhbHVlOwogfQpAQCAtMzc1LDcgKzM3
NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxUaW1lb3V0cz4gZGVzZXJpYWxpemVUaW1lb3V0cyhKU09O
OjpPYmplY3QmIHRpbWVvdXRzT2JqZWN0LCBJZ25vCiAgICAgICAgIC8vIElmIHZhbHVlIGlzIG5v
dCBhbiBpbnRlZ2VyLCBvciBpdCBpcyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gdGhlIG1h
eGltdW0gc2FmZSBpbnRlZ2VyLCByZXR1cm4gZXJyb3Igd2l0aCBlcnJvciBjb2RlIGludmFsaWQg
YXJndW1lbnQuCiAgICAgICAgIGF1dG8gdGltZW91dE1TID0gdW5zaWduZWRWYWx1ZShpdC0+dmFs
dWUpOwogICAgICAgICBpZiAoIXRpbWVvdXRNUykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChp
dC0+a2V5ID09ICJzY3JpcHQiKQogICAgICAgICAgICAgdGltZW91dHMuc2NyaXB0ID0gdGltZW91
dE1TLnZhbHVlKCk7CkBAIC0zODQsNyArMzg0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFRpbWVvdXRz
PiBkZXNlcmlhbGl6ZVRpbWVvdXRzKEpTT046Ok9iamVjdCYgdGltZW91dHNPYmplY3QsIElnbm8K
ICAgICAgICAgZWxzZSBpZiAoaXQtPmtleSA9PSAiaW1wbGljaXQiKQogICAgICAgICAgICAgdGlt
ZW91dHMuaW1wbGljaXQgPSB0aW1lb3V0TVMudmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoaWdu
b3JlVW5rbm93blRpbWVvdXQgPT0gSWdub3JlVW5rbm93blRpbWVvdXQ6Ok5vKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgfQogICAgIHJldHVybiB0aW1lb3V0czsKIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCBzdGF0
aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9i
amVjdCkKIAogICAgIHByb3h5LnR5cGUgPSBwcm94eU9iamVjdC5nZXRTdHJpbmcoInByb3h5VHlw
ZSJfcyk7CiAgICAgaWYgKCFwcm94eS50eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHByb3h5LnR5cGUgPT0g
ImRpcmVjdCIgfHwgcHJveHkudHlwZSA9PSAiYXV0b2RldGVjdCIgfHwgcHJveHkudHlwZSA9PSAi
c3lzdGVtIikKICAgICAgICAgcmV0dXJuIHByb3h5OwpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2Jq
ZWN0KQogICAgIGlmIChwcm94eS50eXBlID09ICJwYWMiKSB7CiAgICAgICAgIHByb3h5LmF1dG9j
b25maWdVUkwgPSBwcm94eU9iamVjdC5nZXRTdHJpbmcoInByb3h5QXV0b2NvbmZpZ1VybCJfcyk7
CiAgICAgICAgIGlmICghcHJveHkuYXV0b2NvbmZpZ1VSTCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IHJldHVybiBwcm94eTsKICAgICB9CkBAIC00MTQsNTggKzQxNCw1OCBAQCBzdGF0aWMgT3B0aW9u
YWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAg
ICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgiZnRwUHJveHkiX3Mp
KSB7CiAgICAgICAgICAgICBhdXRvIGZ0cFByb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAg
ICAgICAgICBpZiAoIWZ0cFByb3h5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAg
cHJveHkuZnRwVVJMID0gVVJMKHsgfSwgbWFrZVN0cmluZygiZnRwOi8vIiwgZnRwUHJveHkpKTsK
ICAgICAgICAgICAgIGlmICghcHJveHkuZnRwVVJMLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0
VmFsdWUoImh0dHBQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gaHR0cFByb3h5ID0gdmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIWh0dHBQcm94eSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgICAgIHByb3h5Lmh0dHBVUkwgPSBVUkwoeyB9LCBtYWtlU3RyaW5n
KCJodHRwOi8vIiwgaHR0cFByb3h5KSk7CiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBVUkwt
PmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1
dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic3NsUHJveHkiX3MpKSB7CiAgICAgICAg
ICAgICBhdXRvIHNzbFByb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAo
IXNzbFByb3h5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgcHJveHkuaHR0cHNV
UkwgPSBVUkwoeyB9LCBtYWtlU3RyaW5nKCJodHRwczovLyIsIHNzbFByb3h5KSk7CiAgICAgICAg
ICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUo
InNvY2tzUHJveHkiKSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFz
U3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgICAgICBwcm94eS5zb2Nrc1VSTCA9IFVSTCh7IH0sIG1ha2VTdHJpbmcoInNv
Y2tzOi8vIiwgc29ja3NQcm94eSkpOwogICAgICAgICAgICAgaWYgKCFwcm94eS5zb2Nrc1VSTC0+
aXNWYWxpZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBzb2Nrc1Zl
cnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iKTsKICAgICAg
ICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBhdXRvIHNvY2tzVmVyc2lvbiA9IHVuc2lnbmVkVmFsdWUoKnNvY2tzVmVyc2lvblZh
bHVlKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJzaW9uIHx8IHNvY2tzVmVyc2lvbi52YWx1
ZSgpID4gMjU1KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHByb3h5LnNvY2tzVmVy
c2lvbiA9IHNvY2tzVmVyc2lvbi52YWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRv
IHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoIm5vUHJveHkiX3MpKSB7CiAgICAgICAgICAg
ICBhdXRvIG5vUHJveHkgPSB2YWx1ZS0+YXNBcnJheSgpOwogICAgICAgICAgICAgaWYgKCFub1By
b3h5KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAgICAgYXV0byBub1Byb3h5TGVuZ3Ro
ID0gbm9Qcm94eS0+bGVuZ3RoKCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbm9Qcm94eUxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBhZGRyZXNzID0g
bm9Qcm94eS0+Z2V0KGkpLT5hc1N0cmluZygpOwogICAgICAgICAgICAgICAgIGlmICghYWRkcmVz
cykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICBwcm94eS5pZ25v
cmVBZGRyZXNzTGlzdC5hcHBlbmQoYWRkcmVzcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTQ3Myw3ICs0NzMsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJv
eHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgcmV0dXJuIHByb3h5OwogICAg
IH0KIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogc3RhdGljIE9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+IGRlc2VyaWFsaXplUGFnZUxv
YWRTdHJhdGVneShjb25zdCBTdHJpbmcmIHBhZ2VMb2FkU3RyYXRlZ3kpCkBAIC00ODQsNyArNDg0
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFBhZ2VMb2FkU3RyYXRlZ3k+IGRlc2VyaWFsaXplUGFnZUxv
YWRTdHJhdGVneShjb25zdCBTdHJpbmcmIHBhZ2UKICAgICAgICAgcmV0dXJuIFBhZ2VMb2FkU3Ry
YXRlZ3k6Ok5vcm1hbDsKICAgICBpZiAocGFnZUxvYWRTdHJhdGVneSA9PSAiZWFnZXIiKQogICAg
ICAgICByZXR1cm4gUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBzdGF0aWMgT3B0aW9uYWw8VW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I+IGRlc2VyaWFsaXplVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Io
Y29uc3QgU3RyaW5nJiB1bmhhbmRsZWRQcm9tcHRCZWhhdmlvcikKQEAgLTQ5OSw3ICs0OTksNyBA
QCBzdGF0aWMgT3B0aW9uYWw8VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I+IGRlc2VyaWFsaXplVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IoY29ucwogICAgICAgICByZXR1cm4gVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeTsKICAgICBpZiAodW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IgPT0gImlnbm9yZSIpCiAgICAgICAgIHJldHVybiBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
SWdub3JlOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIH0KIAogdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpwYXJzZUNhcGFiaWxpdGllcyhjb25zdCBK
U09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpZXMsIENhcGFiaWxpdGllcyYgY2FwYWJpbGl0
aWVzKSBjb25zdApAQCAtODYxLDEzICs4NjEsMTMgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpj
cmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QK
ICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKCJzZXNzaW9uSWQiX3MsIG1fc2Vz
c2lvbi0+aWQoKSk7CiAgICAgICAgICAgICBhdXRvIGNhcGFiaWxpdGllc09iamVjdCA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBjYXBhYmlsaXRpZXMg
PSBtX3Nlc3Npb24tPmNhcGFiaWxpdGllcygpOwotICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoImJyb3dzZXJOYW1lIl9zLCBjYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUu
dmFsdWVPcihlbXB0eVN0cmluZygpKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygiYnJvd3NlclZlcnNpb24iX3MsIGNhcGFiaWxpdGllcy5icm93c2VyVmVyc2lv
bi52YWx1ZU9yKGVtcHR5U3RyaW5nKCkpKTsKLSAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJwbGF0Zm9ybU5hbWUiX3MsIGNhcGFiaWxpdGllcy5wbGF0Zm9ybU5hbWUu
dmFsdWVPcihlbXB0eVN0cmluZygpKSk7Ci0gICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldEJvb2xlYW4oImFjY2VwdEluc2VjdXJlQ2VydHMiX3MsIGNhcGFiaWxpdGllcy5hY2NlcHRJ
bnNlY3VyZUNlcnRzLnZhbHVlT3IoZmFsc2UpKTsKLSAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0Qm9vbGVhbigic3RyaWN0RmlsZUludGVyYWN0YWJpbGl0eSJfcywgY2FwYWJpbGl0
aWVzLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVPcihmYWxzZSkpOwotICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBh
YmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZU9yKHRydWUpKTsKLSAgICAgICAgICAgIHN3aXRj
aCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlT3IoVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CisgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygiYnJvd3Nlck5hbWUiX3MsIGNhcGFiaWxpdGllcy5icm93
c2VyTmFtZS52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygiYnJvd3NlclZlcnNpb24iX3MsIGNhcGFiaWxpdGllcy5icm93
c2VyVmVyc2lvbi52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CisgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGxhdGZvcm1OYW1lIl9zLCBjYXBhYmlsaXRpZXMucGxh
dGZvcm1OYW1lLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0Qm9vbGVhbigiYWNjZXB0SW5zZWN1cmVDZXJ0cyJfcywgY2FwYWJpbGl0
aWVzLmFjY2VwdEluc2VjdXJlQ2VydHMudmFsdWVfb3IoZmFsc2UpKTsKKyAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic3RyaWN0RmlsZUludGVyYWN0YWJpbGl0eSJf
cywgY2FwYWJpbGl0aWVzLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2Up
KTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93
UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOworICAg
ICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFs
dWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAg
ICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgogICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MiKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg4NCw3ICs4
ODQsNyBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9y
ZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3dpdGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKFBhZ2VMb2FkU3Ry
YXRlZ3k6Ok5vcm1hbCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VM
b2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAg
ICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgogICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFN0cmluZz4gZmluZEVsZW1lbnRPckNvbXBsZXRlV2l0aEVycm9yKEpTT046Ok9iamVjdCYg
cGFyYW1ldGVycywKICAgICBhdXRvIGVsZW1lbnRJRCA9IHBhcmFtZXRlcnMuZ2V0U3RyaW5nKCJl
bGVtZW50SWQiX3MpOwogICAgIGlmIChlbGVtZW50SUQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpJbnZhbGlkQXJndW1lbnQpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgcmV0dXJuIGVsZW1lbnRJRDsK
IH0KQEAgLTE3MjQsNDYgKzE3MjQsNDYgQEAgc3RhdGljIE9wdGlvbmFsPFNlc3Npb246OkNvb2tp
ZT4gZGVzZXJpYWxpemVDb29raWUoSlNPTjo6T2JqZWN0JiBjb29raWVPYmplY3QpCiAKICAgICBj
b29raWUubmFtZSA9IGNvb2tpZU9iamVjdC5nZXRTdHJpbmcoIm5hbWUiX3MpOwogICAgIGlmIChj
b29raWUubmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBjb29raWUudmFsdWUgPSBjb29raWVPYmpl
Y3QuZ2V0U3RyaW5nKCJ2YWx1ZSJfcyk7CiAgICAgaWYgKGNvb2tpZS52YWx1ZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoYXV0byB2YWx1ZSA9IGNvb2tpZU9iamVjdC5nZXRWYWx1ZSgicGF0aCJf
cykpIHsKICAgICAgICAgYXV0byBwYXRoID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlm
ICghcGF0aCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb29raWUucGF0aCA9IHBhdGg7CiAgICAgfQog
ICAgIGlmIChhdXRvIHZhbHVlID0gY29va2llT2JqZWN0LmdldFZhbHVlKCJkb21haW4iX3MpKSB7
CiAgICAgICAgIGF1dG8gZG9tYWluID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICgh
ZG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGNvb2tpZS5kb21haW4gPSBkb21haW47CiAgICAg
fQogICAgIGlmIChhdXRvIHZhbHVlID0gY29va2llT2JqZWN0LmdldFZhbHVlKCJzZWN1cmUiX3Mp
KSB7CiAgICAgICAgIGF1dG8gc2VjdXJlID0gdmFsdWUtPmFzQm9vbGVhbigpOwogICAgICAgICBp
ZiAoIXNlY3VyZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb29raWUuc2VjdXJlID0gc2VjdXJlOwog
ICAgIH0KICAgICBpZiAoYXV0byB2YWx1ZSA9IGNvb2tpZU9iamVjdC5nZXRWYWx1ZSgiaHR0cE9u
bHkiX3MpKSB7CiAgICAgICAgIGF1dG8gaHR0cE9ubHkgPSB2YWx1ZS0+YXNCb29sZWFuKCk7CiAg
ICAgICAgIGlmICghaHR0cE9ubHkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgY29va2llLmh0dHBPbmx5
ID0gaHR0cE9ubHk7CiAgICAgfQogICAgIGlmIChhdXRvIHZhbHVlID0gY29va2llT2JqZWN0Lmdl
dFZhbHVlKCJleHBpcnkiX3MpKSB7CiAgICAgICAgIGF1dG8gZXhwaXJ5ID0gdW5zaWduZWRWYWx1
ZSgqdmFsdWUpOwogICAgICAgICBpZiAoIWV4cGlyeSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjb29r
aWUuZXhwaXJ5ID0gZXhwaXJ5LnZhbHVlKCk7CiAgICAgfQogICAgIGlmIChhdXRvIHZhbHVlID0g
Y29va2llT2JqZWN0LmdldFZhbHVlKCJzYW1lU2l0ZSJfcykpIHsKICAgICAgICAgYXV0byBzYW1l
U2l0ZSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoc2FtZVNpdGUgIT0gIk5vbmUi
X3MgJiYgc2FtZVNpdGUgIT0gIkxheCJfcyAmJiBzYW1lU2l0ZSAhPSAiU3RyaWN0Il9zKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIGNvb2tpZS5zYW1lU2l0ZSA9IHNhbWVTaXRlOwogICAgIH0KIApAQCAt
MTg1NywxMiArMTg1NywxMiBAQCBzdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzTnVsbEFj
dGlvbihjb25zdCBTdHJpbmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlvbgogICAgIGF1dG8gc3Vi
dHlwZSA9IGFjdGlvbkl0ZW0uZ2V0U3RyaW5nKCJ0eXBlIl9zKTsKICAgICBpZiAoc3VidHlwZSAh
PSAicGF1c2UiKSB7CiAgICAgICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZygiVGhlIHBhcmFtZXRl
ciAndHlwZScgaW4gbnVsbCBhY3Rpb24gaXMgaW52YWxpZCBvciBtaXNzaW5nIik7Ci0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
fQogCiAgICAgQWN0aW9uIGFjdGlvbihpZCwgQWN0aW9uOjpUeXBlOjpOb25lLCBBY3Rpb246OlN1
YnR5cGU6OlBhdXNlKTsKICAgICBpZiAoIXByb2Nlc3NQYXVzZUFjdGlvbihhY3Rpb25JdGVtLCBh
Y3Rpb24sIGVycm9yTWVzc2FnZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpAQCAtMTg3
OSw3ICsxODc5LDcgQEAgc3RhdGljIE9wdGlvbmFsPEFjdGlvbj4gcHJvY2Vzc0tleUFjdGlvbihj
b25zdCBTdHJpbmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlvbkkKICAgICAgICAgYWN0aW9uU3Vi
dHlwZSA9IEFjdGlvbjo6U3VidHlwZTo6S2V5RG93bjsKICAgICBlbHNlIHsKICAgICAgICAgZXJy
b3JNZXNzYWdlID0gU3RyaW5nKCJUaGUgcGFyYW1ldGVyICd0eXBlJyBvZiBrZXkgYWN0aW9uIGlz
IGludmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBY3Rpb24gYWN0aW9uKGlkLCBBY3Rpb246OlR5
cGU6OktleSwgYWN0aW9uU3VidHlwZSk7CkBAIC0xODg3LDE5ICsxODg3LDE5IEBAIHN0YXRpYyBP
cHRpb25hbDxBY3Rpb24+IHByb2Nlc3NLZXlBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6
T2JqZWN0JiBhY3Rpb25JCiAgICAgc3dpdGNoIChhY3Rpb25TdWJ0eXBlKSB7CiAgICAgY2FzZSBB
Y3Rpb246OlN1YnR5cGU6OlBhdXNlOgogICAgICAgICBpZiAoIXByb2Nlc3NQYXVzZUFjdGlvbihh
Y3Rpb25JdGVtLCBhY3Rpb24sIGVycm9yTWVzc2FnZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBBY3Rpb246OlN1YnR5cGU6OktleVVwOgogICAgIGNhc2UgQWN0aW9uOjpT
dWJ0eXBlOjpLZXlEb3duOiB7CiAgICAgICAgIGF1dG8ga2V5VmFsdWUgPSBhY3Rpb25JdGVtLmdl
dFZhbHVlKCJ2YWx1ZSJfcyk7CiAgICAgICAgIGlmICgha2V5VmFsdWUpIHsKICAgICAgICAgICAg
IGVycm9yTWVzc2FnZSA9IFN0cmluZygiVGhlIHBhcmFtYXRlciAndmFsdWUnIGlzIG1pc3Npbmcg
Zm9yIGtleSB1cC9kb3duIGFjdGlvbiIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAg
YXV0byBrZXkgPSBrZXlWYWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKGtleS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZygiVGhlIHBhcmFtYXRlciAn
dmFsdWUnIGlzIGludmFsaWQgZm9yIGtleSB1cC9kb3duIGFjdGlvbiIpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IGNoZWNrIHNpbmdsZSB1bmljb2RlIGNvZGUgcG9p
bnQuCiAgICAgICAgIGFjdGlvbi5rZXkgPSBrZXk7CkBAIC0xOTU0LDE2ICsxOTU0LDE2IEBAIHN0
YXRpYyBib29sIHByb2Nlc3NQb2ludGVyTW92ZUFjdGlvbihKU09OOjpPYmplY3QmIGFjdGlvbkl0
ZW0sIEFjdGlvbiYgYWN0aW9uLCBPCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IG9yaWdpbiA9IG9yaWdpblZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKG9yaWdp
biA9PSAidmlld3BvcnQiKQotICAgICAgICAgICAgICAgIGFjdGlvbi5vcmlnaW4gPSBQb2ludGVy
T3JpZ2luIHsgUG9pbnRlck9yaWdpbjo6VHlwZTo6Vmlld3BvcnQsIFdURjo6bnVsbG9wdCB9Owor
ICAgICAgICAgICAgICAgIGFjdGlvbi5vcmlnaW4gPSBQb2ludGVyT3JpZ2luIHsgUG9pbnRlck9y
aWdpbjo6VHlwZTo6Vmlld3BvcnQsIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICAgICAgZWxzZSBp
ZiAob3JpZ2luID09ICJwb2ludGVyIikKLSAgICAgICAgICAgICAgICBhY3Rpb24ub3JpZ2luID0g
UG9pbnRlck9yaWdpbiB7IFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXIsIFdURjo6bnVsbG9w
dCB9OworICAgICAgICAgICAgICAgIGFjdGlvbi5vcmlnaW4gPSBQb2ludGVyT3JpZ2luIHsgUG9p
bnRlck9yaWdpbjo6VHlwZTo6UG9pbnRlciwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBwYXJhbWV0
ZXIgJ29yaWdpbicgaXMgaW52YWxpZCBpbiBhY3Rpb24iKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAg
YWN0aW9uLm9yaWdpbiA9IFBvaW50ZXJPcmlnaW4geyBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3
cG9ydCwgV1RGOjpudWxsb3B0IH07CisgICAgICAgIGFjdGlvbi5vcmlnaW4gPSBQb2ludGVyT3Jp
Z2luIHsgUG9pbnRlck9yaWdpbjo6VHlwZTo6Vmlld3BvcnQsIHN0ZDo6bnVsbG9wdCB9OwogCiAg
ICAgaWYgKGF1dG8geFZhbHVlID0gYWN0aW9uSXRlbS5nZXRWYWx1ZSgieCJfcykpIHsKICAgICAg
ICAgYXV0byB4ID0gdmFsdWVBc051bWJlckluUmFuZ2UoKnhWYWx1ZSwgSU5UX01JTik7CkBAIC0y
MDAyLDcgKzIwMDIsNyBAQCBzdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzUG9pbnRlckFj
dGlvbihjb25zdCBTdHJpbmcmIGlkLCBQb2ludGVyUGFyYW1ldGVycwogICAgICAgICBhY3Rpb25T
dWJ0eXBlID0gQWN0aW9uOjpTdWJ0eXBlOjpQb2ludGVyQ2FuY2VsOwogICAgIGVsc2UgewogICAg
ICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBwYXJhbWV0ZXIgJ3R5cGUnIG9mIHBvaW50
ZXIgYWN0aW9uIGlzIGludmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBBY3Rpb24gYWN0aW9uKGlk
LCBBY3Rpb246OlR5cGU6OlBvaW50ZXIsIGFjdGlvblN1YnR5cGUpOwpAQCAtMjAxMSwyNiArMjAx
MSwyNiBAQCBzdGF0aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzUG9pbnRlckFjdGlvbihjb25z
dCBTdHJpbmcmIGlkLCBQb2ludGVyUGFyYW1ldGVycwogICAgIHN3aXRjaCAoYWN0aW9uU3VidHlw
ZSkgewogICAgIGNhc2UgQWN0aW9uOjpTdWJ0eXBlOjpQYXVzZToKICAgICAgICAgaWYgKCFwcm9j
ZXNzUGF1c2VBY3Rpb24oYWN0aW9uSXRlbSwgYWN0aW9uLCBlcnJvck1lc3NhZ2UpKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWN0aW9uOjpTdWJ0eXBlOjpQb2ludGVyVXA6
CiAgICAgY2FzZSBBY3Rpb246OlN1YnR5cGU6OlBvaW50ZXJEb3duOiB7CiAgICAgICAgIGF1dG8g
YnV0dG9uVmFsdWUgPSBhY3Rpb25JdGVtLmdldFZhbHVlKCJidXR0b24iX3MpOwogICAgICAgICBp
ZiAoIWJ1dHRvblZhbHVlKSB7CiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRo
ZSBwYXJhbWF0ZXIgJ2J1dHRvbicgaXMgbWlzc2luZyBmb3IgcG9pbnRlciB1cC9kb3duIGFjdGlv
biIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBidXR0b24gPSB1bnNpZ25l
ZFZhbHVlKCpidXR0b25WYWx1ZSk7CiAgICAgICAgIGlmICghYnV0dG9uKSB7CiAgICAgICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBwYXJhbWF0ZXIgJ2J1dHRvbicgaXMgaW52YWxp
ZCBmb3IgcG9pbnRlciB1cC9kb3duIGFjdGlvbiIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAg
ICAgICAgYWN0aW9uLmJ1dHRvbiA9IGFjdGlvbk1vdXNlQnV0dG9uKGJ1dHRvbi52YWx1ZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQWN0aW9uOjpTdWJ0eXBlOjpQb2ludGVy
TW92ZToKICAgICAgICAgaWYgKCFwcm9jZXNzUG9pbnRlck1vdmVBY3Rpb24oYWN0aW9uSXRlbSwg
YWN0aW9uLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQWN0aW9uOjpTdWJ0eXBlOjpQb2ludGVyQ2FuY2VsOgogICAgICAgICBicmVhazsKQEAgLTIw
NTMsNyArMjA1Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxBY3Rpb24+IHByb2Nlc3NXaGVlbEFjdGlv
bihjb25zdCBTdHJpbmcmIGlkLCBKU09OOjpPYmplY3QmIGFjdGlvCiAgICAgICAgIGFjdGlvblN1
YnR5cGUgPSBBY3Rpb246OlN1YnR5cGU6OlNjcm9sbDsKICAgICBlbHNlIHsKICAgICAgICAgZXJy
b3JNZXNzYWdlID0gU3RyaW5nKCJUaGUgcGFyYW1ldGVyICd0eXBlJyBvZiB3aGVlbCBhY3Rpb24g
aXMgaW52YWxpZCIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIEFjdGlvbiBhY3Rpb24oaWQsIEFjdGlvbjo6
VHlwZTo6V2hlZWwsIGFjdGlvblN1YnR5cGUpOwpAQCAtMjA2MSwxNyArMjA2MSwxNyBAQCBzdGF0
aWMgT3B0aW9uYWw8QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwg
SlNPTjo6T2JqZWN0JiBhY3RpbwogICAgIHN3aXRjaCAoYWN0aW9uU3VidHlwZSkgewogICAgIGNh
c2UgQWN0aW9uOjpTdWJ0eXBlOjpQYXVzZToKICAgICAgICAgaWYgKCFwcm9jZXNzUGF1c2VBY3Rp
b24oYWN0aW9uSXRlbSwgYWN0aW9uLCBlcnJvck1lc3NhZ2UpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQWN0aW9uOjpTdWJ0eXBlOjpTY3JvbGw6CiAgICAgICAgIGlmICgh
cHJvY2Vzc1BvaW50ZXJNb3ZlQWN0aW9uKGFjdGlvbkl0ZW0sIGFjdGlvbiwgZXJyb3JNZXNzYWdl
KSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChhdXRvIGRlbHRhWFZhbHVlID0gYWN0aW9uSXRl
bS5nZXRWYWx1ZSgiZGVsdGFYIl9zKSkgewogICAgICAgICAgICAgYXV0byBkZWx0YVggPSB2YWx1
ZUFzTnVtYmVySW5SYW5nZSgqZGVsdGFYVmFsdWUsIElOVF9NSU4pOwogICAgICAgICAgICAgaWYg
KCFkZWx0YVgpIHsKICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBw
YXJhbWF0ZXIgJ2RlbHRhWCcgaXMgaW52YWxpZCBmb3IgYWN0aW9uIik7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWN0aW9uLmRlbHRhWCA9IGRlbHRhWC52
YWx1ZSgpOwogICAgICAgICB9CkBAIC0yMDgwLDcgKzIwODAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
QWN0aW9uPiBwcm9jZXNzV2hlZWxBY3Rpb24oY29uc3QgU3RyaW5nJiBpZCwgSlNPTjo6T2JqZWN0
JiBhY3RpbwogICAgICAgICAgICAgYXV0byBkZWx0YVkgPSB2YWx1ZUFzTnVtYmVySW5SYW5nZSgq
ZGVsdGFZVmFsdWUsIElOVF9NSU4pOwogICAgICAgICAgICAgaWYgKCFkZWx0YVkpIHsKICAgICAg
ICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBwYXJhbWF0ZXIgJ2RlbHRhWScg
aXMgaW52YWxpZCBmb3IgYWN0aW9uIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYWN0aW9uLmRlbHRhWSA9IGRlbHRhWS52YWx1ZSgpOwogICAgICAgICB9
CkBAIC0yMTA4LDcgKzIxMDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UG9pbnRlclBhcmFtZXRlcnM+
IHByb2Nlc3NQb2ludGVyUGFyYW1ldGVycyhKU09OOjpPYmplY3QmIGFjdGlvbgogICAgIGF1dG8g
cGFyYW1ldGVyc0RhdGEgPSBwYXJhbWV0ZXJzRGF0YVZhbHVlLT5hc09iamVjdCgpOwogICAgIGlm
ICghcGFyYW1ldGVyc0RhdGEpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gU3RyaW5nKCJBY3Rp
b24gc2VxdWVuY2UgcG9pbnRlciBwYXJhbWV0ZXJzIGlzIG5vdCBhbiBvYmplY3QiKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBhdXRvIHBvaW50ZXJUeXBlID0gcGFyYW1ldGVyc0RhdGEtPmdldFN0cmluZygi
cG9pbnRlclR5cGUiX3MpOwpAQCAtMjEyMyw3ICsyMTIzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFBv
aW50ZXJQYXJhbWV0ZXJzPiBwcm9jZXNzUG9pbnRlclBhcmFtZXRlcnMoSlNPTjo6T2JqZWN0JiBh
Y3Rpb24KICAgICAgICAgcGFyYW1ldGVycy5wb2ludGVyVHlwZSA9IFBvaW50ZXJUeXBlOjpUb3Vj
aDsKICAgICBlbHNlIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0gU3RyaW5nKCJUaGUgcGFyYW1l
dGVyICdwb2ludGVyVHlwZScgaW4gYWN0aW9uIHNlcXVlbmNlIHBvaW50ZXIgcGFyYW1ldGVycyBp
cyBpbnZhbGlkIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CkBAIC0yMTM0
LDcgKzIxMzQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEFjdGlvbj4+IHByb2Nlc3NJbnB1
dEFjdGlvblNlcXVlbmNlKFNlc3Npb24mIHNlc3Npb24sIEpTTwogICAgIGF1dG8gYWN0aW9uU2Vx
dWVuY2UgPSBhY3Rpb25TZXF1ZW5jZVZhbHVlLmFzT2JqZWN0KCk7CiAgICAgaWYgKCFhY3Rpb25T
ZXF1ZW5jZSkgewogICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoIlRoZSBhY3Rpb24gc2Vx
dWVuY2UgaXMgbm90IGFuIG9iamVjdCIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gdHlwZSA9IGFj
dGlvblNlcXVlbmNlLT5nZXRTdHJpbmcoInR5cGUiX3MpOwpAQCAtMjE0OSwxMyArMjE0OSwxMyBA
QCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEFjdGlvbj4+IHByb2Nlc3NJbnB1dEFjdGlvblNlcXVl
bmNlKFNlc3Npb24mIHNlc3Npb24sIEpTTwogICAgICAgICBpbnB1dFNvdXJjZVR5cGUgPSBJbnB1
dFNvdXJjZTo6VHlwZTo6Tm9uZTsKICAgICBlbHNlIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0g
U3RyaW5nKCJUaGUgcGFyYW1ldGVyICd0eXBlJyBpcyBpbnZhbGlkIG9yIG1pc3NpbmcgaW4gYWN0
aW9uIHNlcXVlbmNlIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBpZCA9IGFjdGlvblNlcXVlbmNl
LT5nZXRTdHJpbmcoImlkIl9zKTsKICAgICBpZiAoIWlkKSB7CiAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9IFN0cmluZygiVGhlIHBhcmFtZXRlciAnaWQnIGlzIGludmFsaWQgb3IgbWlzc2luZyBpbiBh
Y3Rpb24gc2VxdWVuY2UiKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxQb2ludGVyUGFyYW1l
dGVycz4gcGFyYW1ldGVyczsKQEAgLTIxNjMsNyArMjE2Myw3IEBAIHN0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8QWN0aW9uPj4gcHJvY2Vzc0lucHV0QWN0aW9uU2VxdWVuY2UoU2Vzc2lvbiYgc2Vzc2lv
biwgSlNPCiAgICAgaWYgKGlucHV0U291cmNlVHlwZSA9PSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9p
bnRlcikgewogICAgICAgICBwYXJhbWV0ZXJzID0gcHJvY2Vzc1BvaW50ZXJQYXJhbWV0ZXJzKCph
Y3Rpb25TZXF1ZW5jZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcG9pbnRlclR5cGUgPSBwYXJhbWV0ZXJzLT5wb2ludGVyVHlw
ZTsKICAgICB9CkBAIC0yMTcxLDE4ICsyMTcxLDE4IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0b3I8
QWN0aW9uPj4gcHJvY2Vzc0lucHV0QWN0aW9uU2VxdWVuY2UoU2Vzc2lvbiYgc2Vzc2lvbiwgSlNP
CiAgICAgYXV0byYgaW5wdXRTb3VyY2UgPSBzZXNzaW9uLmdldE9yQ3JlYXRlSW5wdXRTb3VyY2Uo
aWQsIGlucHV0U291cmNlVHlwZSwgcG9pbnRlclR5cGUpOwogICAgIGlmIChpbnB1dFNvdXJjZS50
eXBlICE9IGlucHV0U291cmNlVHlwZSkgewogICAgICAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmco
IkFjdGlvbiBzZXF1ZW5jZSB0eXBlIGRvZXNuJ3QgbWF0Y2ggaW5wdXQgc291cmNlIHR5cGUiKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBpZiAoaW5wdXRTb3VyY2UudHlwZSA9PSAgSW5wdXRTb3VyY2U6OlR5
cGU6OlBvaW50ZXIgJiYgaW5wdXRTb3VyY2UucG9pbnRlclR5cGUgIT0gcG9pbnRlclR5cGUpIHsK
ICAgICAgICAgZXJyb3JNZXNzYWdlID0gU3RyaW5nKCJBY3Rpb24gc2VxdWVuY2UgcG9pbnRlciB0
eXBlIGRvZXNuJ3QgbWF0Y2ggaW5wdXQgc291cmNlIHBvaW50ZXIgdHlwZSIpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
IAogICAgIGF1dG8gYWN0aW9uSXRlbXMgPSBhY3Rpb25TZXF1ZW5jZS0+Z2V0QXJyYXkoImFjdGlv
bnMiX3MpOwogICAgIGlmICghYWN0aW9uSXRlbXMpIHsKICAgICAgICAgZXJyb3JNZXNzYWdlID0g
U3RyaW5nKCJUaGUgcGFyYW1ldGVyICdhY3Rpb25zJyBpcyBpbnZhbGlkIG9yIG5vdCBwcmVzZW50
IGluIGFjdGlvbiBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIFZlY3RvcjxBY3Rpb24+IGFj
dGlvbnM7CkBAIC0yMTkxLDcgKzIxOTEsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPEFjdGlv
bj4+IHByb2Nlc3NJbnB1dEFjdGlvblNlcXVlbmNlKFNlc3Npb24mIHNlc3Npb24sIEpTTwogICAg
ICAgICBhdXRvIGFjdGlvbkl0ZW0gPSBhY3Rpb25JdGVtcy0+Z2V0KGkpLT5hc09iamVjdCgpOwog
ICAgICAgICBpZiAoIWFjdGlvbkl0ZW0pIHsKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IFN0
cmluZygiQW4gYWN0aW9uIGluIGFjdGlvbiBzZXF1ZW5jZSBpcyBub3QgYW4gb2JqZWN0Iik7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogCiAgICAgICAgIE9wdGlvbmFsPEFjdGlvbj4gYWN0aW9uOwpA
QCAtMjIwNCw3ICsyMjA0LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxBY3Rpb24+PiBwcm9j
ZXNzSW5wdXRBY3Rpb25TZXF1ZW5jZShTZXNzaW9uJiBzZXNzaW9uLCBKU08KICAgICAgICAgZWxz
ZSBpZiAoaW5wdXRTb3VyY2VUeXBlID09IElucHV0U291cmNlOjpUeXBlOjpXaGVlbCkKICAgICAg
ICAgICAgIGFjdGlvbiA9IHByb2Nlc3NXaGVlbEFjdGlvbihpZCwgKmFjdGlvbkl0ZW0sIGVycm9y
TWVzc2FnZSk7CiAgICAgICAgIGlmICghYWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYWN0
aW9ucy5hcHBlbmQoYWN0aW9uLnZhbHVlKCkpOwogICAgIH0KQEAgLTIzMzcsNyArMjMzNyw3IEBA
IHZvaWQgV2ViRHJpdmVyU2VydmljZTo6dGFrZVNjcmVlbnNob3QoUmVmUHRyPEpTT046Ok9iamVj
dD4mJiBwYXJhbWV0ZXJzLCBGdW5jdGlvCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IG1fc2Vzc2lvbi0+dGFrZVNjcmVlbnNob3QoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9zZXNzaW9uLT50YWtlU2NyZWVu
c2hvdChzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL2dsaWIvU2Vz
c2lvbkhvc3RHbGliLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIu
Y3BwCmluZGV4IDU4OTgwOTdhNzdkYmVhMGM3OTNkYjhhZjZiOWFlYmM3OTIyZTg3MDIuLjI2NDEw
YmZlN2FlMzNmMWI1NmY3N2ZhOTk5NTEwNmVmODQ3YzEyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvZ2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
Z2xpYi9TZXNzaW9uSG9zdEdsaWIuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBTZXNzaW9u
SG9zdDo6Y29ubmVjdFRvQnJvd3NlcihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdFRvQnJvd3NlckFz
eW5jRGF0YT4mJgogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGRhdGEtPnNlc3Npb25Ib3N0LT5zZXR1cENvbm5lY3Rpb24oU29j
a2V0Q29ubmVjdGlvbjo6Y3JlYXRlKFdURk1vdmUoY29ubmVjdGlvbiksIG1lc3NhZ2VIYW5kbGVy
cygpLCBkYXRhLT5zZXNzaW9uSG9zdCkpOwotICAgICAgICAgICAgICAgIGRhdGEtPmNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgZGF0YS0+Y29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSwgZGF0YSk7CiAgICAgfSk7CiB9CkBA
IC0zMTcsNyArMzE3LDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6ZGlkU3RhcnRBdXRvbWF0aW9uU2Vz
c2lvbihHVmFyaWFudCogcGFyYW1ldGVycykKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9zdGFydFNlc3Npb25Db21wbGV0aW9u
SGFuZGxlciwgbnVsbHB0cik7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIFdURjo6bnVs
bG9wdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIHN0ZDo6bnVsbG9wdCk7CiB9CiAK
IHZvaWQgU2Vzc2lvbkhvc3Q6OnNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBW
ZWN0b3I8VGFyZ2V0PiYmIHRhcmdldExpc3QpCkBAIC0zNTMsNyArMzUzLDcgQEAgdm9pZCBTZXNz
aW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJn
ZXQ+JiYgdGFyZ2V0TGkKICAgICBtX3NvY2tldENvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKCJTZXR1
cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXQuaWQpKTsK
IAogICAgIGF1dG8gc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdl
KG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgIHN0YXJ0U2Vz
c2lvbkNvbXBsZXRpb25IYW5kbGVyKHRydWUsIFdURjo6bnVsbG9wdCk7CisgICAgc3RhcnRTZXNz
aW9uQ29tcGxldGlvbkhhbmRsZXIodHJ1ZSwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBTZXNz
aW9uSG9zdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWlu
dDY0X3QgdGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL2d0ay9XZWJEcml2ZXJTZXJ2aWNlR3RrLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
Z3RrL1dlYkRyaXZlclNlcnZpY2VHdGsuY3BwCmluZGV4IDgwNjU5ZjVlZjdhZGJmNGI5NmU4NTM0
MGQ2ZjEwNmFlNTQ2MWE5NTkuLmEwOWQwOTQxYmE3ZmQyOWViYmUzMWY3MzZmYzlhZGZkZWNlODk2
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvZ3RrL1dlYkRyaXZlclNlcnZpY2VHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvZ3RrL1dlYkRyaXZlclNlcnZpY2VHdGsuY3BwCkBA
IC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpwbGF0Zm9ybVBhcnNlQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGEKICAgICBhdXRvIGJyb3dz
ZXJCaW5hcnkgPSBicm93c2VyT3B0aW9ucy0+Z2V0U3RyaW5nKCJiaW5hcnkiX3MpOwogICAgIGlm
ICghIWJyb3dzZXJCaW5hcnkpIHsKICAgICAgICAgY2FwYWJpbGl0aWVzLmJyb3dzZXJCaW5hcnkg
PSBicm93c2VyQmluYXJ5OwotICAgICAgICBjYXBhYmlsaXRpZXMuYnJvd3NlckFyZ3VtZW50cyA9
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmJyb3dzZXJBcmd1bWVudHMgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgYXV0byBicm93c2VyQXJndW1lbnRzID0gYnJvd3Nl
ck9wdGlvbnMtPmdldEFycmF5KCJhcmdzIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBh
cnNlci5jcHAKaW5kZXggNzdmMzUxZDk1OGFmZjFhZmVhM2Y4ZDA3MTc0MDA5MjFjMmFlYzY0ZS4u
N2E1YjIyOGQ1ZmY3MTQ2ZGE3YjExNzdjYjE0Y2JhNGU0MzBiMzdmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBzaXplX3QgSFRUUFBh
cnNlcjo6ZXhwZWN0ZWRCb2R5TGVuZ3RoKCkgY29uc3QKIAogICAgIGZvciAoY29uc3QgYXV0byYg
aGVhZGVyIDogbV9tZXNzYWdlLnJlcXVlc3RIZWFkZXJzKSB7CiAgICAgICAgIGlmIChoZWFkZXIu
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHNpemVfdD4oU3RyaW5nVmlldyB7IGhlYWRl
ciB9LnN1YnN0cmluZyhuYW1lTGVuZ3RoKSkudmFsdWVPcigwKTsKKyAgICAgICAgICAgIHJldHVy
biBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxzaXplX3Q+KFN0cmluZ1ZpZXcgeyBo
ZWFkZXIgfS5zdWJzdHJpbmcobmFtZUxlbmd0aCkpLnZhbHVlX29yKDApOwogICAgIH0KIAogICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZl
clNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNw
cAppbmRleCA5M2M0YzBjMGE1YmY2ZWM1YzFkZjJjYmQwNTA0N2RkNTA1NWRiZWEyLi44MTFiMWY2
OWRiZDFhYzE3ZTJhNjRlZWQ3ZmM5YWFmYzZlMmY0MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIE9wdGlvbmFs
PENvbm5lY3Rpb25JRD4gSFRUUFNlcnZlcjo6ZG9BY2NlcHQoUmVtb3RlSW5zcGVjdG9yU29ja2V0
RW5kcG9pbnQmIGVuZHBvCiAgICAgICAgIHJldHVybiBpZDsKICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgSFRUUFNl
cnZlcjo6ZGlkQ2hhbmdlU3RhdHVzKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29u
bmVjdGlvbklELCBSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludDo6TGlzdGVuZXI6OlN0YXR1
cyBzdGF0dXMpCiB7CiAgICAgaWYgKHN0YXR1cyA9PSBTdGF0dXM6OkNsb3NlZCkKLSAgICAgICAg
bV9zZXJ2ZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fc2VydmVyID0gc3RkOjpudWxsb3B0
OwogfQogCiB2b2lkIEhUVFBSZXF1ZXN0SGFuZGxlcjo6Y29ubmVjdChDb25uZWN0aW9uSUQgaWQp
CkBAIC0xMzUsNyArMTM1LDcgQEAgU3RyaW5nIEhUVFBSZXF1ZXN0SGFuZGxlcjo6cGFja0hUVFBN
ZXNzYWdlKEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UmJiByZXNwb24KIAogdm9pZCBIVFRQ
UmVxdWVzdEhhbmRsZXI6OmRpZENsb3NlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Jiwg
Q29ubmVjdGlvbklEKQogewotICAgIG1fY2xpZW50ID0gV1RGOjpudWxsb3B0OworICAgIG1fY2xp
ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIHJlc2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCBjNDQ5ZTQwMWVkMGM0NjFmNTRl
ZWQ5MDczZDA4MmQxMjM4ODI4OGJjLi4wMDZlMWQzOGI4NTFjNWZkZTBmYzM4M2RkMzZlOWE3ODNk
ZDFhYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNv
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIo
RnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tCiAgICAgaWYgKCFt
X2NsaWVudElEKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlU3RyaW5nKHRhcmdldElw
LnV0ZjgoKS5kYXRhKCksICI6IiwgU3RyaW5nOjpudW1iZXIodGFyZ2V0UG9ydCksICIgaXMgbm90
IHJlYWNoYWJsZS4iKSk7CiAgICAgZWxzZQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQog
CiBib29sIFNlc3Npb25Ib3N0Ojppc0Nvbm5lY3RlZCgpIGNvbnN0CkBAIC04NywxNCArODcsMTQg
QEAgdm9pZCBTZXNzaW9uSG9zdDo6ZGlkQ2xvc2UoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JT
b2NrZXRFbmRwb2ludCYsIEluc3BlY3RvcjoKIHsKICAgICBpbnNwZWN0b3JEaXNjb25uZWN0ZWQo
KTsKIAotICAgIG1fY2xpZW50SUQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jbGllbnRJRCA9IHN0
ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8VmVjdG9yPFNlc3Npb25Ib3N0OjpUYXJnZXQ+PiBT
ZXNzaW9uSG9zdDo6cGFyc2VUYXJnZXRMaXN0KGNvbnN0IHN0cnVjdCBFdmVudCYgZXZlbnQpCiB7
CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRhcmdldExpc3RKU09OKCpldmVudC5tZXNzYWdlKTsK
ICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxTZXNzaW9uSG9zdDo6VGFyZ2V0PiB0
YXJnZXRMaXN0OwogICAgIGZvciAoY29uc3QgYXV0byYgaXRlbU9iamVjdCA6ICpyZXN1bHQpIHsK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZXRUYXJnZXRMaXN0KHVpbnQ2
NF90IGNvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4mJiB0YXJnZXRMaQogICAgIEFTU0VSVCh0
YXJnZXRMaXN0LnNpemUoKSA8PSAxKTsKICAgICBpZiAodGFyZ2V0TGlzdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gRGlzY29ubmVjdGVkIGZyb20gYmFja2VuZAotICAgICAgICBtX2NsaWVudElE
ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2NsaWVudElEID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpbnNwZWN0b3JEaXNjb25uZWN0ZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIFNlc3Npb25Ib3N0OjpzZXRUYXJnZXRMaXN0KHVpbnQ2NF90
IGNvbm5lY3Rpb25JRCwgVmVjdG9yPFRhcmdldD4mJiB0YXJnZXRMaQogICAgIHNlbmRXZWJJbnNw
ZWN0b3JFdmVudChzZW5kRXZlbnQtPnRvSlNPTlN0cmluZygpKTsKIAogICAgIGF1dG8gc3RhcnRT
ZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fc3RhcnRTZXNzaW9uQ29t
cGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOwotICAgIHN0YXJ0U2Vzc2lvbkNvbXBsZXRpb25IYW5k
bGVyKHRydWUsIFdURjo6bnVsbG9wdCk7CisgICAgc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6c2VuZE1lc3Nh
Z2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci93cGUvV2ViRHJpdmVyU2VydmljZVdQRS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3dw
ZS9XZWJEcml2ZXJTZXJ2aWNlV1BFLmNwcAppbmRleCA1MWQ0NjQ5NTFmOTFlZGUwMzQ1NThmOWUx
MTExMjBiMWZjMTMwNDllLi42NTZhNjc2YWIyY2ExMmEwMDVmYWMwOTBjN2U2NmUwZTYzNjU5M2Vh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3dwZS9XZWJEcml2ZXJTZXJ2aWNlV1BFLmNw
cAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3dwZS9XZWJEcml2ZXJTZXJ2aWNlV1BFLmNwcApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6cGxhdGZvcm1QYXJzZUNhcGFi
aWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhCiAgICAgYXV0byBicm93c2Vy
QmluYXJ5ID0gYnJvd3Nlck9wdGlvbnMtPmdldFN0cmluZygiYmluYXJ5Il9zKTsKICAgICBpZiAo
ISFicm93c2VyQmluYXJ5KSB7CiAgICAgICAgIGNhcGFiaWxpdGllcy5icm93c2VyQmluYXJ5ID0g
YnJvd3NlckJpbmFyeTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmJyb3dzZXJBcmd1bWVudHMgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIGNhcGFiaWxpdGllcy5icm93c2VyQXJndW1lbnRzID0gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAogICAgIGF1dG8gYnJvd3NlckFyZ3VtZW50cyA9IGJyb3dzZXJP
cHRpb25zLT5nZXRBcnJheSgiYXJncyJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVUHJvY2Vzc1Nlc3Npb25QYXJhbWV0ZXJzLmgKaW5kZXggOTgwZDY0MWNiMWU4
MTQ3OGY0NTkxOThlMjE2NzY3YTVkYTE4MzQ2Ny4uMTJhZWQ2Y2EzYTJhMTljMWFkZGFhMWYzNTVm
OTQ0ZDU4M2U2OGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3NTZXNzaW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMuaApAQCAtNTYsMjMgKzU2LDIzIEBAIHN0cnVjdCBH
UFVQcm9jZXNzU2Vzc2lvblBhcmFtZXRlcnMgewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1l
ZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9y
eTsKICAgICAgICAgaWYgKCFtZWRpYUNhY2hlRGlyZWN0b3J5KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUNhY2hlRGlyZWN0b3J5
U2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgZGVjb2RlciA+PiBtZWRpYUNhY2hlRGly
ZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFtZWRpYUNhY2hlRGly
ZWN0b3J5U2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgZGVjb2RlciA+PiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5OwogICAgICAgICBpZiAoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBkZWNvZGVy
ID4+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
ICAgICBpZiAoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICByZXR1cm4gR1BVUHJvY2Vzc1Nlc3Npb25Q
YXJhbWV0ZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvRGlzcGxheUxpc3RSZWFkZXJIYW5kbGUuY3BwCmluZGV4IDhmMTQ0ODcwN2MyYTBk
NjQwYjkzMGIxZGM1MmM5MmM2YTA4NjEzNjEuLjljZTQ1NjU5NGQ1N2ZkYmEyMDBjZDEwYjExNzc2
MWI3MmM0MzBhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmNwcApAQCAtMzUsNyArMzUsNyBA
QCBPcHRpb25hbDxzaXplX3Q+IERpc3BsYXlMaXN0UmVhZGVySGFuZGxlOjphZHZhbmNlKHNpemVf
dCBhbW91bnQpCiB7CiAgICAgYXV0byBwcmV2aW91c1VucmVhZEJ5dGVzID0gaGVhZGVyKCkudW5y
ZWFkQnl0ZXMuZXhjaGFuZ2VTdWIoYW1vdW50KTsKICAgICBpZiAoVU5MSUtFTFkocHJldmlvdXNV
bnJlYWRCeXRlcyA8IGFtb3VudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHByZXZpb3VzVW5yZWFkQnl0ZXMg
LSBhbW91bnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9EaXNwbGF5TGlzdFJlYWRlckhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKaW5kZXggNDc5NTc3NTNhZTI3M2Jh
NWViMTkzMWM3NWQ5ZjRkM2FhN2UxNTQ0ZS4uZWE3NjRmZGY3ZDY2OGU1MDdjMzdmZjM1OWQ5OTlm
MWFhZGJhZTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0UmVhZGVySGFuZGxlLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVi
bGljOgogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8U2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6Oldh
aXRpbmdTdGF0dXM+KHByZXZpb3VzU3RhdHVzKSA9PSBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6
V2FpdGluZ1N0YXR1czo6UmVzdW1pbmcpCiAgICAgICAgICAgICByZXR1cm4geyBoZWFkZXIucmVz
dW1lUmVhZGluZ0luZm8gfTsKIAotICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQgfTsKKyAg
ICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCmluZGV4IDVlZTUxY2NkNjIwNTVjN2IxMTYzMjE4MzhkZjEzMDFlMTRm
Mzg0ZDQuLmQzNDQ1ZmVhNzJkNWRjM2UxZGMzMzU2MWI4MTEyMzlmZTAxM2ZkNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUs
IFJlbgogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwogCiAgICAgaWYgKG1f
cGVuZGluZ1dha2V1cEluZm8gJiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdh
a2V1cChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBs
eURpc3BsYXlMaXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxs
b3B0KS0+YXJndW1lbnRzKTsKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6
OmV4Y2hhbmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7
CiB9CiAKIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdl
QnVmZmVyJiBkZXN0aW5hdGlvbikKQEAgLTIzOSw3ICsyMzksNyBAQCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyQWZ0
ZXJBcHBseQogICAgICAgICAgICAgZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcigqcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdl
QnVmZmVyKSk7CiAgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdXYWtldXBJbmZvKTsKLSAgICAgICAgICAgICAgICBtX3BlbmRp
bmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgKnJlc3VsdC5u
ZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgcmVhc29uIH0sIFdURjo6bnVsbG9wdCB9fTsKKyAg
ICAgICAgICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGhhbmRsZS5pZGVudGlmaWVy
KCksIG9mZnNldCwgKnJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgcmVhc29uIH0s
IHN0ZDo6bnVsbG9wdCB9fTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0yODAsNyAr
MjgwLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0
RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7
Ci0gICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBoYW5kbGUuaWRlbnRp
ZmllcigpLCBvZmZzZXQsIG5ld0Rlc3RpbmF0aW9uSWRlbnRpZmllciwgcmVhc29uIH0sIFdURjo6
bnVsbG9wdCB9fTsKKyAgICAgICAgICAgICAgICBtX3BlbmRpbmdXYWtldXBJbmZvID0ge3t7IGhh
bmRsZS5pZGVudGlmaWVyKCksIG9mZnNldCwgbmV3RGVzdGluYXRpb25JZGVudGlmaWVyLCByZWFz
b24gfSwgc3RkOjpudWxsb3B0IH19OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjp3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBN
ZXMKICAgICAgICAgfQogCiAgICAgICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgcmVhZGluZyB0
aGUgbmV4dCBkaXNwbGF5IGxpc3QgaXRlbSBidWZmZXIgZnJvbSB0aGUgc3RhcnQuCi0gICAgICAg
IGF1dG8gYXJndW1lbnRzID0gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6
Om51bGxvcHQpLT5hcmd1bWVudHM7CisgICAgICAgIGF1dG8gYXJndW1lbnRzID0gc3RkOjpleGNo
YW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHM7CiAgICAg
ICAgIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFm
dGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMoKmRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsIGFyZ3VtZW50
cy5vZmZzZXQsICpuZXh0SGFuZGxlLCBhcmd1bWVudHMucmVhc29uKTsKICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbkltYWdlQnVmZmVyKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMjUsMTYgKzMy
NSwxNiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ondha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lcwogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnNldE5leHRJdGVtQnVmZmVyVG9SZWFkKERpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25JZGVudGlmaWVyKQogewotICAgIG1fcGVuZGluZ1dha2V1cEluZm8gPSB7e3sg
aWRlbnRpZmllciwgU2hhcmVkRGlzcGxheUxpc3RIYW5kbGU6OmhlYWRlclNpemUoKSwgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpVbnNwZWNpZmllZCB9LCBX
VEY6Om51bGxvcHQgfX07CisgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7eyBpZGVudGlmaWVy
LCBTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6aGVhZGVyU2l6ZSgpLCBkZXN0aW5hdGlvbklkZW50
aWZpZXIsIEdQVVByb2Nlc3NXYWtldXBSZWFzb246OlVuc3BlY2lmaWVkIH0sIHN0ZDo6bnVsbG9w
dCB9fTsKIH0KIAogT3B0aW9uYWw8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVySGVscGVyKHNp
emVfdCBieXRlQ291bnQpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRSgh
bV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSB8fCBieXRlQ291bnQgPiBtX2dldFBpeGVsQnVm
ZmVyU2hhcmVkTWVtb3J5LT5zaXplKCksIFdURjo6bnVsbG9wdCwgIlRoZSBleGlzdGluZyBTaG1l
bSBmb3IgZ2V0UGl4ZWxCdWZmZXIoKSBpcyBhbHJlYWR5IGJpZyBlbm91Z2ggdG8gaGFuZGxlIHRo
ZSByZXF1ZXN0Iik7CisgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRSghbV9nZXRQ
aXhlbEJ1ZmZlclNoYXJlZE1lbW9yeSB8fCBieXRlQ291bnQgPiBtX2dldFBpeGVsQnVmZmVyU2hh
cmVkTWVtb3J5LT5zaXplKCksIHN0ZDo6bnVsbG9wdCwgIlRoZSBleGlzdGluZyBTaG1lbSBmb3Ig
Z2V0UGl4ZWxCdWZmZXIoKSBpcyBhbHJlYWR5IGJpZyBlbm91Z2ggdG8gaGFuZGxlIHRoZSByZXF1
ZXN0Iik7CiAKICAgICBpZiAoYnl0ZUNvdW50ID4gNjQgKiBNQikgewogICAgICAgICAvLyBKdXN0
IGEgc2FuaXR5IGNoZWNrLiBBIDRLIGltYWdlIGlzIDM2TUIuCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgZGVz
dHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5KCk7CkBAIC00NTAsNyArNDUwLDcgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBoYW4KICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRp
dmVJbWFnZShtYWtlUmVmKCppbWFnZSkpOwogCiAgICAgaWYgKG1fcGVuZGluZ1dha2V1cEluZm8g
JiYgbV9wZW5kaW5nV2FrZXVwSW5mby0+c2hvdWxkUGVyZm9ybVdha2V1cChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6
ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsK
KyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1fcGVuZGlu
Z1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCkBAIC00NjAsNyAr
NDYwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+
JiYgZm9udCkKICAgICBhdXRvIGlkZW50aWZpZXIgPSBmb250LT5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKTsKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1vdmUo
Zm9udCkpOwogICAgIGlmIChtX3BlbmRpbmdXYWtldXBJbmZvICYmIG1fcGVuZGluZ1dha2V1cElu
Zm8tPnNob3VsZFBlcmZvcm1XYWtldXAoaWRlbnRpZmllcikpCi0gICAgICAgIHdha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBXVEY6Om51
bGxvcHQpLT5hcmd1bWVudHMpOworICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0
ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgc3RkOjpudWxsb3B0KS0+YXJndW1lbnRz
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygpCkBA
IC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShEaXNwbGF5TGlzdDo6SXRlbUIKICAgICB9CiAKICAgICBp
ZiAobV9wZW5kaW5nV2FrZXVwSW5mbyAmJiBtX3BlbmRpbmdXYWtldXBJbmZvLT5zaG91bGRQZXJm
b3JtV2FrZXVwKGlkZW50aWZpZXIpKQotICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1l
bnRzKTsKKyAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hhbmdlKG1f
cGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAKIE9wdGlv
bmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBEaXNwbGF5TGlzdDo6SXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
CkBAIC01ODgsMTAgKzU4OCwxMCBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpUcmFuc2xhdGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6dXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CmluZGV4IDEwMDAzODk1YzA0OTQ4ODZiNGRhYzc0ZjQyMTM2NjAxYmE4NmM0YjQuLmRjY2M4MjA4
MjExYzFmYmM4ODgzYTgzMTQ4MGEyNGE0OWEzMTk5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApA
QCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBuZXcgKGhhbmRsZUxvY2F0
aW9uICsgc2l6ZW9mKHVpbnQ2NF90KSkgVChXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgICAgICBy
ZXR1cm4ge3sgaGFuZGxlTG9jYXRpb24gfX07CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggNzY4YTM4YmY4YjgxMDE2YTVkMTU0YTc0N2MyOTRhYzViZWQ0ZDdmNy4uOGFhYjc4
ZjY1YmE0ZTA3ZWJjODg2OTBlODBmNGExZGE5NmQ4ZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC01MCwyMiArNTAsMjIgQEAg
c3RydWN0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMgewogICAgICAg
ICBPcHRpb25hbDxSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcj4gaWRlbnRpZmllcjsKICAgICAg
ICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxJUEM6OlNlbWFwaG9yZT4gcmVzdW1lRGlzcGxheUxp
c3RTZW1hcGhvcmU7CiAgICAgICAgIGRlY29kZXIgPj4gcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhv
cmU7CiAgICAgICAgIGlmICghcmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBwYWdlUHJveHlJRDsK
ICAgICAgICAgZGVjb2RlciA+PiBwYWdlUHJveHlJRDsKICAgICAgICAgaWYgKCFwYWdlUHJveHlJ
RCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgICAgICBpZiAoIXBhZ2VJ
RCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7eyAqaWRlbnRpZmllciwgV1RGTW92ZSgq
cmVzdW1lRGlzcGxheUxpc3RTZW1hcGhvcmUpLCAqcGFnZVByb3h5SUQsICpwYWdlSUQgfX07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxp
emF0aW9uU2VnbWVudEluZm8uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9Jbml0
aWFsaXphdGlvblNlZ21lbnRJbmZvLmgKaW5kZXggMWQzNDhlZmQxZTM3YjcwNjdlMjhlZWJhZTY2
YTkyZTIwYTAzZTVkMi4uZDEyNzlhNDU0ZmVlODRlMDU3ZWQzYWZiMTBiNmI1Y2RiMjUzODg0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL0luaXRpYWxpemF0aW9u
U2VnbWVudEluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvSW5pdGlh
bGl6YXRpb25TZWdtZW50SW5mby5oCkBAIC01NywxMiArNTcsMTIgQEAgc3RydWN0IEluaXRpYWxp
emF0aW9uU2VnbWVudEluZm8gewogICAgICAgICAgICAgT3B0aW9uYWw8TWVkaWFEZXNjcmlwdGlv
bkluZm8+IG1lZGlhRGVzY3JpcHRpb247CiAgICAgICAgICAgICBkZWNvZGVyID4+IG1lZGlhRGVz
Y3JpcHRpb247CiAgICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgICAgICBPcHRpb25hbDxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyPiBpZGVudGlmaWVyOwogICAgICAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwogICAg
ICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICAg
ICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAgICAgV1RGTW92ZSgqbWVkaWFEZXNjcmlwdGlvbiks
CkBAIC05MCwyMiArOTAsMjIgQEAgc3RydWN0IEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gewog
ICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGR1cmF0aW9uOwogICAgICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8VmVjdG9yPFRyYWNrSW5mb3JtYXRpb24+PiBhdWRpb1RyYWNrczsKICAgICAgICAg
ZGVjb2RlciA+PiBhdWRpb1RyYWNrczsKICAgICAgICAgaWYgKCFhdWRpb1RyYWNrcykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFZlY3RvcjxUcmFja0luZm9ybWF0aW9uPj4gdmlkZW9U
cmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gdmlkZW9UcmFja3M7CiAgICAgICAgIGlmICghdmlk
ZW9UcmFja3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8VHJhY2tJbmZv
cm1hdGlvbj4+IHRleHRUcmFja3M7CiAgICAgICAgIGRlY29kZXIgPj4gdGV4dFRyYWNrczsKICAg
ICAgICAgaWYgKCF0ZXh0VHJhY2tzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBXVEZNb3ZlKCpkdXJhdGlvbiksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
LmNwcAppbmRleCA4MjQ2ZDljNzU2ZWYzYjcxZDBmODhiY2RjYTQ4NjhjZjFiYjg3YzI2Li4xMzY4
OTNhMGNkMzkwZDQ5MDZjMDhjYTYyNjhjM2FiMjE0MWEyZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKQEAgLTc4LDE0ICs3OCwxNCBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5n
CiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKFN0cmlu
ZyBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQogewogICAgIGlmICgh
cmVzcG9uc2UuYnVmZmVyKCkpIHsKLSAgICAgICAgY29tcGxldGlvbih0cnVlLCB7IH0sIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIGNvbXBsZXRpb24odHJ1ZSwg
eyB9LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6ZVJlc3Bv
bnNlKCkgY2hlY2sgaGVyZToKICAgICBhdXRvIHNhbml0aXplZFJlc3BvbnNlID0gbV9jZG0tPnNh
bml0aXplUmVzcG9uc2UoKnJlc3BvbnNlLmJ1ZmZlcigpKTsKICAgICBpZiAoIXNhbml0aXplZFJl
c3BvbnNlKSB7Ci0gICAgICAgIGNvbXBsZXRpb24oZmFsc2UsIHsgfSwgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQsIGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSwgeyB9LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6Omxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlIHR5cGUsIFN0cmluZyBzZXNzaW9uCiAgICAgLy8gSW1wbGVt
ZW50IHRoZSBDRE1Qcml2YXRlOjpzYW5pdGl6ZVNlc3Npb25JZCgpIGNoZWNrIGhlcmU6CiAgICAg
YXV0byBzYW5pdGl6ZWRTZXNzaW9uSWQgPSBtX2NkbS0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lv
bklkKTsKICAgICBpZiAoIXNhbml0aXplZFNlc3Npb25JZCkgewotICAgICAgICBjb21wbGV0aW9u
KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIGZhbHNlLCBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hlZFNlc3Npb25UeXBlKTsK
KyAgICAgICAgY29tcGxldGlvbihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0LCBmYWxzZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21h
dGNoZWRTZXNzaW9uVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCmluZGV4IDFmN2UxNDMwYTdkNzY0OWQ5NjVlMjg5MWFjMmU4ZTUyOWEyMDE3
YWQuLmQ3NmZjZjFhNmZjODE2NmU1MzRhOTVkZjIyNTM2MGViNjRmODRjMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjpzZXREYXRhKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
cwogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwog
ICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKDAsIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKDAsIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKaW5kZXggYjI5MDg5
ODFlNDc3NzNhNTdjMjg2Y2I2MzViZDkyY2NmMzBmNzU2ZC4uOGVlOWVlOGUxMzIyNDI0MTQ2NjZl
OGJlZGM5OGZkNjRlMjIxZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGF0aWMgT3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJDb3B5PiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkK
IHsKICAgICBpZiAoIWFycmF5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OwogfQog
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVw
ZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiB1cGRhdGUsIFVwZGF0ZUMKIHsKICAgICBhdXRv
IHVwZGF0ZUFycmF5ID0gY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKHVwZGF0ZSkpOwogICAg
IGlmICghdXBkYXRlQXJyYXkpIHsKLSAgICAgICAgY29tcGxldGlvbihmYWxzZSwgV1RGOjpudWxs
b3B0LCAwLCAwKTsKKyAgICAgICAgY29tcGxldGlvbihmYWxzZSwgc3RkOjpudWxsb3B0LCAwLCAw
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYURlc2NyaXB0aW9uLmgKaW5kZXggOTA2Y2RmNjdm
YjczMjFkNWUwMjJmNzNkMWU5ZDMzY2UxZTlmNTg3Ni4uYTM5MDAxZmZiNzk5NTliYTc1NzhiYjYw
M2JmMGY4ODlhOGUzMWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFEZXNjcmlwdGlvbi5oCkBAIC03MywyMiArNzMsMjIgQEAgc3Ry
dWN0IE1lZGlhRGVzY3JpcHRpb25JbmZvIHsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2Rl
YzsKICAgICAgICAgZGVjb2RlciA+PiBjb2RlYzsKICAgICAgICAgaWYgKCFjb2RlYykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzVmlkZW87CiAgICAgICAgIGRlY29kZXIg
Pj4gaXNWaWRlbzsKICAgICAgICAgaWYgKCFpc1ZpZGVvKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gaXNBdWRpbzsKICAgICAgICAgZGVjb2RlciA+PiBpc0F1ZGlvOwogICAg
ICAgICBpZiAoIWlzQXVkaW8pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBp
c1RleHQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNUZXh0OwogICAgICAgICBpZiAoIWlzVGV4dCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqY29k
ZWMpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGY4ZTE5MmIyY2M2NTlkYWY0OGQ4MDE5YWI5NjEz
OWMyZGU4MTY0ZDguLjVmMmI2NWIyOWQ4YzBkMDRkZWY5Y2RiNzUzNWYyNjAzOTk1ZjgxN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eShSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYg
bWEKIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6On5SZW1vdGVNZWRpYVBsYXllclByb3h5KCkKIHsK
ICAgICBpZiAobV9wZXJmb3JtVGFza0F0TWVkaWFUaW1lQ29tcGxldGlvbkhhbmRsZXIpCi0gICAg
ICAgIG1fcGVyZm9ybVRhc2tBdE1lZGlhVGltZUNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgbV9wZXJmb3JtVGFza0F0TWVkaWFUaW1lQ29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIHNldFNob3VsZEVu
YWJsZUF1ZGlvU291cmNlUHJvdmlkZXIoZmFsc2UpOwogfQogCkBAIC05ODQsNyArOTg0LDcgQEAg
dm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKGNvbnN0
IE1lZGlhVGltZSYgdGFza1RpbWUsIE0KICAgICAgICAgLy8gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGVyZm9ybVRhc2tBdE1lZGlhVGltZSksIHNvIGNhbmNlbCB0aGUgZXhp
c3RpbmcKICAgICAgICAgLy8gQ29tcGxldGlvbkhhbmRsZXIuCiAgICAgICAgIGF1dG8gaGFuZGxl
ciA9IFdURk1vdmUobV9wZXJmb3JtVGFza0F0TWVkaWFUaW1lQ29tcGxldGlvbkhhbmRsZXIpOwot
ICAgICAgICBoYW5kbGVyKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgaGFu
ZGxlcihzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgYXV0byBub3cg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0
aW9uLmgKaW5kZXggZDhmOGM3ZTdlMWY1MWY2MGQ2ODNiOGQyNGJmNTM5MTcyMmYzZDFhNC4uMmVm
YTE0ZWI3NTMxNGRkOGQ2OWVmNzhhODE0ZjIzYzViNjc0MzY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHlDb25maWd1cmF0aW9uLmgKQEAgLTczLDU5ICs3Myw1OSBAQCBzdHJ1Y3QgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+
IHJlZmVycmVyOwogICAgICAgICBkZWNvZGVyID4+IHJlZmVycmVyOwogICAgICAgICBpZiAoIXJl
ZmVycmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB1c2VyQWdlbnQ7
CiAgICAgICAgIGRlY29kZXIgPj4gdXNlckFnZW50OwogICAgICAgICBpZiAoIXVzZXJBZ2VudCkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc291cmNlQXBwbGljYXRpb25J
ZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmll
cjsKICAgICAgICAgaWYgKCFzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtJbnRlcmZhY2VOYW1lOwogICAgICAg
ICBkZWNvZGVyID4+IG5ldHdvcmtJbnRlcmZhY2VOYW1lOwogICAgICAgICBpZiAoIW5ldHdvcmtJ
bnRlcmZhY2VOYW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNv
cmU6OkNvbnRlbnRUeXBlPj4gbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1cHBv
cnQ7CiAgICAgICAgIGRlY29kZXIgPj4gbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQ7CiAgICAgICAgIGlmICghbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2Fy
ZVN1cHBvcnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4g
cHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3M7CiAgICAgICAgIGRlY29kZXIgPj4gcHJlZmVy
cmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3M7CiAgICAgICAgIGlmICghcHJlZmVycmVkQXVkaW9DaGFy
YWN0ZXJpc3RpY3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCiAgICAg
ICAgIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpQbGF0Zm9ybVRleHRUcmFja0RhdGE+PiBvdXRP
ZkJhbmRUcmFja0RhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gb3V0T2ZCYW5kVHJhY2tEYXRhOwog
ICAgICAgICBpZiAoIW91dE9mQmFuZFRyYWNrRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAg
ICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBkb2N1bWVudFNlY3Vy
aXR5T3JpZ2luOwogICAgICAgICBkZWNvZGVyID4+IGRvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAg
ICAgICAgIGlmICghZG9jdW1lbnRTZWN1cml0eU9yaWdpbikKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBsb2dJZGVudGlmaWVyOwogICAgICAgICBkZWNvZGVyID4+IGxv
Z0lkZW50aWZpZXI7CiAgICAgICAgIGlmICghbG9nSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZTsKICAgICAgICAg
ZGVjb2RlciA+PiBzaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGU7CiAgICAgICAgIGlmICghc2hvdWxk
VXNlUGVyc2lzdGVudENhY2hlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
aXNWaWRlbzsKICAgICAgICAgZGVjb2RlciA+PiBpc1ZpZGVvOwogICAgICAgICBpZiAoIWlzVmlk
ZW8pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUo
KnJlZmVycmVyKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXgg
OGE3ZGY2MzkyZjUyOTdiOGY4OTM1YTBhNzU5ZWQ4Yjk4MTczMWIyZC4uZTlmZGY3MDE0MDA0MDk5
NGZlMDVkZjFlNzhhYjRlNmI1YzNlZjk0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uLmgKQEAgLTc2LDcyICs3Niw3MiBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lk
OwogICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CiAgICAgICAgIGlmICghdHJhY2tJZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwogICAgICAgICBk
ZWNvZGVyID4+IGxhYmVsOwogICAgICAgICBpZiAoIWxhYmVsKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFuZ3VhZ2U7CiAgICAgICAgIGRlY29kZXIgPj4gbGFu
Z3VhZ2U7CiAgICAgICAgIGlmICghbGFuZ3VhZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwogICAgICAg
ICBkZWNvZGVyID4+IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CiAgICAgICAgIGlm
ICghaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPE1lZGlhVGltZT4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGRlY29kZXIg
Pj4gc3RhcnRUaW1lVmFyaWFuY2U7CiAgICAgICAgIGlmICghc3RhcnRUaW1lVmFyaWFuY2UpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxpbnQ+IHRyYWNrSW5kZXg7CiAgICAgICAgIGRl
Y29kZXIgPj4gdHJhY2tJbmRleDsKICAgICAgICAgaWYgKCF0cmFja0luZGV4KQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q3Vl
Rm9ybWF0PiBjdWVGb3JtYXQ7CiAgICAgICAgIGRlY29kZXIgPj4gY3VlRm9ybWF0OwogICAgICAg
ICBpZiAoIWN1ZUZvcm1hdCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQ+IGtpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4g
a2luZDsKICAgICAgICAgaWYgKCFraW5kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaXNDbG9zZWRDYXB0aW9uczsKICAgICAgICAgZGVjb2RlciA+PiBpc0Nsb3NlZENhcHRp
b25zOwogICAgICAgICBpZiAoIWlzQ2xvc2VkQ2FwdGlvbnMpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxib29sPiBpc1NESDsKICAgICAgICAgZGVjb2RlciA+PiBpc1NESDsKICAgICAg
ICAgaWYgKCFpc1NESCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGNvbnRh
aW5zT25seUZvcmNlZFN1YnRpdGxlczsKICAgICAgICAgZGVjb2RlciA+PiBjb250YWluc09ubHlG
b3JjZWRTdWJ0aXRsZXM7CiAgICAgICAgIGlmICghY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVz
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNNYWluUHJvZ3JhbUNvbnRl
bnQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNNYWluUHJvZ3JhbUNvbnRlbnQ7CiAgICAgICAgIGlm
ICghaXNNYWluUHJvZ3JhbUNvbnRlbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxi
b29sPiBpc0Vhc3lUb1JlYWQ7CiAgICAgICAgIGRlY29kZXIgPj4gaXNFYXN5VG9SZWFkOwogICAg
ICAgICBpZiAoIWlzRWFzeVRvUmVhZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJv
b2w+IGlzRGVmYXVsdDsKICAgICAgICAgZGVjb2RlciA+PiBpc0RlZmF1bHQ7CiAgICAgICAgIGlm
ICghaXNEZWZhdWx0KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAg
ICBXVEZNb3ZlKCp0cmFja0lkKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCmluZGV4
IGE4ZjA1ZDE4ZmQ5OTg4ZWJiOTljNzY3M2I2ODdhNjcwZDkyZTAxNDguLjI5ZGYyMzVmZjFkMzFl
NmRlOTIzYmFlYTRhYzc3ZDYyODE5ODU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24uaApAQCAtNjYsNDcgKzY2LDQ3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uIHsKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKICAgICAgICAg
ZGVjb2RlciA+PiB0cmFja0lkOwogICAgICAgICBpZiAoIXRyYWNrSWQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKICAgICAgICAgZGVjb2RlciA+PiBs
YWJlbDsKICAgICAgICAgaWYgKCFsYWJlbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFs
PEF0b21TdHJpbmc+IGxhbmd1YWdlOwogICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlOwogICAg
ICAgICBpZiAoIWxhbmd1YWdlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8TWVkaWFU
aW1lPiBzdGFydFRpbWVWYXJpYW5jZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydFRpbWVWYXJp
YW5jZTsKICAgICAgICAgaWYgKCFzdGFydFRpbWVWYXJpYW5jZSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgIE9wdGlvbmFsPGludD4gdHJhY2tJbmRleDsKICAgICAgICAgZGVjb2RlciA+PiB0cmFja0lu
ZGV4OwogICAgICAgICBpZiAoIXRyYWNrSW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxib29sPiBlbmFibGVkOwogICAgICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAg
IGlmICghZW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF1
ZGlvVHJhY2tQcml2YXRlOjpLaW5kPiBhdWRpb0tpbmQ7CiAgICAgICAgIGRlY29kZXIgPj4gYXVk
aW9LaW5kOwogICAgICAgICBpZiAoIWF1ZGlvS2luZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPGJvb2w+IHNlbGVjdGVkOwogICAgICAgICBkZWNvZGVyID4+IHNlbGVjdGVkOwogICAg
ICAgICBpZiAoIXNlbGVjdGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6VmlkZW9UcmFja1ByaXZhdGU6OktpbmQ+IHZpZGVvS2luZDsKICAgICAgICAgZGVjb2RlciA+
PiB2aWRlb0tpbmQ7CiAgICAgICAgIGlmICghdmlkZW9LaW5kKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgcmV0dXJuIHt7CiAgICAgICAgICAgICBXVEZNb3ZlKCp0cmFja0lkKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvY29jb2EvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmluZGV4IDBlMGNkMmNkYzZhNDkwNTM0NDZjNmQxMWNm
NzZmYWRlZDYzOWRlNmQuLjRiMzM3NWZkZTMyMDFiOTcwMWQyMDBlYmFmZjYwYWIwOTBhMzAxZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL2NvY29hL1JlbW90ZU1lZGlhUGxheWVyUHJveHlDb2NvYS5tbQpAQCAtODEsMjUgKzgxLDI1
IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0VmlkZW9JbmxpbmVTaXplRmVuY2Vk
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFtX3BsYXllcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBuYXRpdmVJbWFnZSA9IG1fcGxheWVyLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6
Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBwbGF0Zm9ybUlt
YWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1h
Z2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdl
KHBsYXRmb3JtSW1hZ2UuZ2V0KCkpOwogICAgIGlmICghc3VyZmFjZSkgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDksMjIgKzEwOSwy
MiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiAh
VVNFKEFWRk9VTkRBVElPTikKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAjZWxzZQogICAgIGlmICghbV9w
bGF5ZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBtX3BsYXllci0+cGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZSgpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpKTsK
ICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNTU3ZDdmMjY5Mzk3MTdmNjE2ODVhYjUzMzQxZTZk
ZWJjMTU5OTM4ZC4uMjI1ZjcxZTI0M2Q2MzIzNTExOGM5YmM1YzFhN2M4NGZlM2UxNWI0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwCkBAIC0zMDUsOCArMzA1LDggQEAgc3RhdGljIFN0cmluZyBzdHJpcEluZGV4UXVlcnlUb01h
dGNoU3RvcmVkVmFsdWUoY29uc3QgY2hhciogb3JpZ2luYWxRdWVyeSkKIHN0YXRpYyBjb25zdCBN
ZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZElu
ZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKQogewogICAgIHN0YXRpYyBh
dXRvIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRl
eFBhaXI+IHsKLSAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxT
dHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9ic2VydmVkRG9tYWluLCBXVEY6Om51bGxv
cHQpIH0sCi0gICAgICAgIHsgIlRvcExldmVsRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BMZXZlbERvbWFpbnMsIFdURjo6bnVsbG9w
dCkgfSwKKyAgICAgICAgeyAiT2JzZXJ2ZWREb21haW5zIl9zLCBzdGQ6Om1ha2VfcGFpcjxTdHJp
bmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZU9ic2VydmVkRG9tYWluLCBzdGQ6Om51bGxvcHQp
IH0sCisgICAgICAgIHsgIlRvcExldmVsRG9tYWlucyJfcywgc3RkOjptYWtlX3BhaXI8U3RyaW5n
LCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BMZXZlbERvbWFpbnMsIHN0ZDo6bnVsbG9wdCkg
fSwKICAgICAgICAgeyAiU3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBzdGQ6
Om1ha2VfcGFpcjxTdHJpbmcsIE9wdGlvbmFsPFN0cmluZz4+KGNyZWF0ZVN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucywgc3RyaXBJbmRleFF1ZXJ5VG9NYXRjaFN0b3JlZFZhbHVlKGNy
ZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zKSkgfSwKICAg
ICAgICAgeyAiVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBz
dHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVkVmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvKSkgfSwKICAgICAgICAgeyAiVG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCJfcywgc3RkOjptYWtlX3BhaXI8U3Ry
aW5nLCBPcHRpb25hbDxTdHJpbmc+PihjcmVhdGVUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2lu
Y2VTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50LCBzdHJpcEluZGV4UXVlcnlUb01hdGNoU3RvcmVk
VmFsdWUoY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1l
U2l0ZVN0cmljdEVuZm9yY2VtZW50KSkgfSwKQEAgLTQwNCwxMyArNDA0LDEzIEBAIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2hl
Y2tGb3JNaXNzaW5nVGFiCiAgICAgYXV0byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVT
dGF0ZW1lbnQoIlNFTEVDVCAxIGZyb20gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScg
YW5kIHRibF9uYW1lPT8iX3MpOwogICAgIGlmICghc3RhdGVtZW50KSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSBmYWlsZWQgdG8gcHJlcGFyZSwg
ZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdGFibGUgOiBleHBlY3Rl
ZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkua2V5cygpKSB7CiAgICAgICAgIGlmIChzdGF0ZW1lbnQt
PmJpbmRUZXh0KDEsIHRhYmxlKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSBmYWlsZWQgdG8gYmluZCwgZXJyb3Ig
bWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0YXRlbWVudC0+c3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1p
c3NpbmdUYWJsZXNJblNjaGVtYSBzY2hlbWEgaXMgbWlzc2luZyB0YWJsZTogJXMiLCB0aGlzLCB0
YWJsZS5hc2NpaSgpLmRhdGEoKSk7CkBAIC00MTksNyArNDE5LDcgQEAgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjaGVja0Zvck1p
c3NpbmdUYWIKICAgICAgICAgc3RhdGVtZW50LT5yZXNldCgpOwogICAgIH0KICAgICBpZiAobWlz
c2luZ1RhYmxlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gbWlzc2luZ1RhYmxlczsKIH0K
QEAgLTEwMTgsMTEgKzEwMTgsMTEgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JRChjb25zdCBSZWdpc3RyYWIKICAgICBpZiAo
IXNjb3BlZFN0YXRlbWVudCB8fCBzY29wZWRTdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGRvbWFpbi5z
dHJpbmcoKSkgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpkb21haW5JREZyb21TdHJpbmcgZmFpbGVkLiBFcnJvciBtZXNzYWdlOiAlIiBQUklWQVRF
X0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAgICAgCiAgICAgaWYgKHNjb3BlZFN0YXRl
bWVudC0+c3RlcCgpICE9IFNRTElURV9ST1cpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2NvcGVkU3RhdGVt
ZW50LT5jb2x1bW5JbnQoMCk7CiB9CkBAIC0xNTYxLDcgKzE1NjEsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbgogICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OklUUERlYnVnLCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltJVFBdIFN0
b3JhZ2UgYWNjZXNzIHdhcyBncmFudGVkIGZvciAnIl9zLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3Muc3RyaW5nKCksICInIHVuZGVyIG9wZW5lciBwYWdlIGZyb20gJyJfcywgb3BlbmVyRG9t
YWluLnN0cmluZygpLCAiJywgd2l0aCB1c2VyIGludGVyYWN0aW9uIGluIHRoZSBvcGVuZWQgd2lu
ZG93LiJfcykpOwogICAgIH0KIAotICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1v
dmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBX
VEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
bywgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQZXJQYWdlLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCkgeyB9KTsKKyAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgc3RkOjpudWxsb3B0
LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFN0b3JhZ2VB
Y2Nlc3NTY29wZTo6UGVyUGFnZSwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIFN0b3Jh
Z2VBY2Nlc3NTY29wZSBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMjA1LDcgKzIyMDUsNyBAQCBz
dGQ6OnBhaXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OkFkZGVkUmVjb3Jk
LCBPcHRpb25hbDx1bnNpZ25lZD4+CiAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJh
YmxlRG9tYWluIGluc2VydE9ic2VydmVkRG9tYWluIGZhaWxlZCB0byBjb21wbGV0ZSwgZXJyb3Ig
bWVzc2FnZTogJSIgUFJJVkFURV9MT0dfU1RSSU5HLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7
IEFkZGVkUmVjb3JkOjpObywgV1RGOjpudWxsb3B0IH07CisgICAgICAgIHJldHVybiB7IEFkZGVk
UmVjb3JkOjpObywgc3RkOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgcmV0dXJuIHsgQWRkZWRS
ZWNvcmQ6OlllcywgZG9tYWluSUQoZG9tYWluKS52YWx1ZSgpIH07CkBAIC0yNTE5LDcgKzI1MTks
NyBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzaG91bGRFbmZv
cmNlU2FtZVNpdGVTdHJpY3RGb3IoRG9tYWluRAogT3B0aW9uYWw8V2FsbFRpbWU+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZShjb25zdCBEb21haW5EYXRhJiBzdGF0aXN0aWMpCiB7CiAgICAgaWYgKHN0YXRpc3RpYy5tb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgPD0g
MCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWU7CiB9CkBAIC0yOTM2LDcgKzI5MzYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAgIH0KIAog
ICAgIGlmIChtX29wZXJhdGluZ0RhdGVzU2l6ZSA8PSBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0
IC0gMSkKLSAgICAgICAgbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGUgPSBXVEY6Om51bGxvcHQ7
CisgICAgICAgIG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlID0gc3RkOjpudWxsb3B0OwogICAg
IGVsc2UgewogICAgICAgICBpZiAoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+Ymlu
ZEludCgxLCBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0IC0gMSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgICAgICB8fCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LT5zdGVwKCkgIT0gU1FM
SVRFX1JPVykgewpAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKCkKICAgICB9
CiAKICAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUgPD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dM
b25nIC0gMSkKLSAgICAgICAgbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSA9IFdURjo6bnVsbG9w
dDsKKyAgICAgICAgbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBlbHNlIHsKICAgICAgICAgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC0+cmVzZXQo
KTsKICAgICAgICAgaWYgKGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQtPmJpbmRJbnQo
MSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIC0gMSkgIT0gU1FMSVRFX09LCkBAIC0zMTE2LDcg
KzMxMTYsNyBAQCBzdGQ6OnBhaXI8T3B0aW9uYWw8VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ+LCBPcHRpb25hbDxBdHRyaWJ1dGVkUHJpdgogICAgIGF1dG8gZGVzdGluYXRpb25T
aXRlRG9tYWluSUQgPSBkb21haW5JRChkZXN0aW5hdGlvblNpdGUucmVnaXN0cmFibGVEb21haW4p
OwogCiAgICAgaWYgKCFzb3VyY2VTaXRlRG9tYWluSUQgfHwgIWRlc3RpbmF0aW9uU2l0ZURvbWFp
bklEKQotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQpOwogCiAgICAgYXV0byBmaW5kVW5hdHRyaWJ1dGVkU2NvcGVkU3RhdGVtZW50ID0g
dGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZmluZFVuYXR0cmlidXRlZFN0YXRlbWVudCwgZmluZFVu
YXR0cmlidXRlZFF1ZXJ5LCAiZmluZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKICAgICBp
ZiAoIWZpbmRVbmF0dHJpYnV0ZWRTY29wZWRTdGF0ZW1lbnQKQEAgLTMyMzcsNyArMzIzNyw3IEBA
IE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRp
bFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IGFuIGludmFsaWQgYXR0cmlidXRpb24uIik7CiAg
ICAgICAgICAgICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIEdvdCBhbiBpbnZhbGlkIGF0dHJpYnV0aW9uLiJfcyk7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CiAKICAgICBhdXRvIGRhdGEgPSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRh
dGE7CkBAIC0zMjQ4LDcgKzMyNDgsNyBAQCBPcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YT4gUmVzb3VyY2VMb2FkUwogICAgICAg
ICBkZWJ1Z0Jyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcoIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBHb3QgYW4gYXR0cmlidXRpb24gd2l0aCBhdHRyaWJ1dGlvbiB0cmln
Z2VyIGRhdGE6ICciX3MsIGRhdGEsICInIGFuZCBwcmlvcml0eTogJyJfcywgcHJpb3JpdHksICIn
LiJfcykpOwogICAgIH0KIAotICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blNlY29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNl
Y29uZHNVbnRpbFNlbmREYXRhIHNlY29uZHNVbnRpbFNlbmQgeyBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCB9OwogCiAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGZpbmRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChzb3VyY2VTaXRlLCBkZXN0aW5hdGlvblNpdGUpOwogICAgIGF1dG8mIHByZXZpb3Vz
bHlVbmF0dHJpYnV0ZWQgPSBhdHRyaWJ1dGlvbi5maXJzdDsKQEAgLTMyNjIsNyArMzI2Miw3IEBA
IE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRp
bFNlbmREYXRhPiBSZXNvdXJjZUxvYWRTCiAgICAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGF2
ZSBhIHZhbGlkIHNlY29uZHNVbnRpbFNlbmQgdmFsdWUgZm9yIGEgcHJldmlvdXNseVVuYXR0cmli
dXRlZCB2YWx1ZSBiZWNhdXNlIHRoZXJlIGNhbiBiZSBubyBwcmV2aW91cyBhdHRyaWJ1dGlvbiB3
aXRoIGEgaGlnaGVyIHByaW9yaXR5LgogICAgICAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFz
VmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFko
ZGVidWdNb2RlRW5hYmxlZCgpKSkgewpAQCAtMzI4NSw3ICszMjg1LDcgQEAgT3B0aW9uYWw8UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGE+IFJl
c291cmNlTG9hZFMKICAgICAgICAgaWYgKCFwcmV2aW91c2x5QXR0cmlidXRlZC52YWx1ZSgpLmhh
c1ByZXZpb3VzbHlCZWVuUmVwb3J0ZWQoKSkgewogICAgICAgICAgICAgYXV0byBzZWNvbmRzVW50
aWxTZW5kID0gcHJldmlvdXNseUF0dHJpYnV0ZWQudmFsdWUoKS5hdHRyaWJ1dGVBbmRHZXRFYXJs
aWVzdFRpbWVUb1NlbmQoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSk7CiAgICAgICAg
ICAgICBpZiAoIXNlY29uZHNVbnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVz
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXVEZNb3ZlKCpwcmV2aW91c2x5QXR0cmlidXRlZCksIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlOjpBdHRyaWJ1dGVkKTsKIApAQCAtMzI5Nyw3ICszMjk3
LDcgQEAgT3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uU2Vjb25k
c1VudGlsU2VuZERhdGE+IFJlc291cmNlTG9hZFMKICAgICB9CiAKICAgICBpZiAoIXNlY29uZHNV
bnRpbFNlbmQuaGFzVmFsaWRTZWNvbmRzVW50aWxTZW5kVmFsdWVzKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gc2Vjb25kc1VudGlsU2VuZDsKIH0KQEAgLTM0NDUsNyArMzQ0NSw3IEBAIHN0ZDo6cGFpcjxP
cHRpb25hbDxTb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQ+LCBPcHRpb25hbDxEZXN0aW5hdGlvbkVh
cmxpZXN0VGltZVRvCiAgICAgYXV0byBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9IGRvbWFpbklE
KGF0dHJpYnV0aW9uLmRlc3RpbmF0aW9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluKTsKIAogICAg
IGlmICghc291cmNlU2l0ZURvbWFpbklEIHx8ICFkZXN0aW5hdGlvblNpdGVEb21haW5JRCkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0
KTsKIAogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1f
ZWFybGllc3RUaW1lc1RvU2VuZFN0YXRlbWVudCwgZWFybGllc3RUaW1lc1RvU2VuZFF1ZXJ5LCAi
ZWFybGllc3RUaW1lc1RvU2VuZCJfcyk7CiAKQEAgLTM1MTUsNyArMzUxNSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFdl
YkNvcmU6OlByaXZhdGVDCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
bWFya1JlcG9ydEFzU2VudFRvU291cmNlKCpzb3VyY2VTaXRlRG9tYWluSUQsICpkZXN0aW5hdGlv
blNpdGVEb21haW5JRCk7Ci0gICAgICAgIHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgc291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gc3RkOjpudWxsb3B0
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbjoKICAgICAgICAgaWYgKCFkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZCkgewpAQCAtMzUyMyw3ICszNTIzLDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2xlYXJTZW50QXR0cmlidXRpb24oV2Vi
Q29yZTo6UHJpdmF0ZUMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBt
YXJrUmVwb3J0QXNTZW50VG9EZXN0aW5hdGlvbigqc291cmNlU2l0ZURvbWFpbklELCAqZGVzdGlu
YXRpb25TaXRlRG9tYWluSUQpOwotICAgICAgICBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2Vu
ZCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIGF0dHJpYnV0
ZSBmcm9tIHRoZSBkYXRhYmFzZSB1bmxlc3MgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgYm90aCB0byB0
aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBzaXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2MGM2NjI0ZTI5NTRhNzhjOTRi
OTk1MTU4YmMyNWVlMmRhOTllZGEwLi45MzBlMmI0NTUxYWZlMjE5YWQwMTdhZDU0MTUyNTY0NzU4
ZmI3MjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlLmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAg
ICAgICAgIGRlYnVnQnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SVRQRGVi
dWcsIE1lc3NhZ2VMZXZlbDo6SW5mbywgbWFrZVN0cmluZygiW0lUUF0gU3RvcmFnZSBhY2Nlc3Mg
d2FzIGdyYW50ZWQgZm9yICciX3MsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcy5zdHJpbmco
KSwgIicgdW5kZXIgb3BlbmVyIHBhZ2UgZnJvbSAnIl9zLCBvcGVuZXJEb21haW4uc3RyaW5nKCks
ICInLCB3aXRoIHVzZXIgaW50ZXJhY3Rpb24gaW4gdGhlIG9wZW5lZCB3aW5kb3cuIl9zKSk7CiAg
ICAgfQogCi0gICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwg
b3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBTdG9yYWdlQWNj
ZXNzU2NvcGU6OlBlclBhZ2UsIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOworICAg
IGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51bGxvcHQsIG9wZW5lclBhZ2VJ
RCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgU3RvcmFnZUFjY2Vzc1Njb3BlOjpQ
ZXJQYWdlLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAogdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWlu
LCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIFN0b3JhZ2VBY2Nlc3NTY29wZSBz
Y29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzIsNyArOTMyLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvcihSZXNv
dXJjZUwKIE9wdGlvbmFsPFdhbGxUaW1lPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6Om1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHN0YXRpc3RpYykKIHsKICAgICBpZiAoc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA8PSAwKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggNDUwMGI4NWI2Zjk2
OTJmMjhhMDE1ZWExZGFjZGM0YTE3NWU0YTk5ZC4uYmYxYzc1MzdiYjM0M2NlMTRhMWNjYzk3Nzg0
NTlhNDUzZjJlZTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2FuY2VsUGVuZGluZ1N0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdCgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBtX3BlbmRpbmdTdGF0aXN0aWNzUHJvY2Vz
c2luZ1JlcXVlc3RJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ1N0YXRp
c3RpY3NQcm9jZXNzaW5nUmVxdWVzdElkZW50aWZpZXIgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKFNlY29uZHMgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKaW5kZXggMjFmOGRlOTYwOTQ5YWEwOGIwZTY1MGE5Mjc2NTExOGZmZDdi
YWQ0NS4uZmEwZjk3MmQwZTc2OTY1ZDQwNGRhZjMzNjY1ZjBhMDkwYmY4ZWU4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTUzMiw3ICs1
MzIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lckVwaGVtZXJhbChSZQogCiAgICAgaWYgKG1fbmV0d29ya1Nlc3Np
b24pIHsKICAgICAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lv
bi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCk7CisgICAg
ICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z3JhbnRTdG9yYWdlQWNjZXNzKFdURk1vdmUoZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBzdGQ6Om51bGxv
cHQsIG9wZW5lclBhZ2VJRCk7CiAgICAgfQogfQogCkBAIC01NzcsNyArNTc3LDcgQEAgU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3NJblN0b3IKIAogICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpKSB7Ci0gICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Z3JhbnRTdG9yYWdl
QWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCAoc2NvcGUgPT0gU3RvcmFn
ZUFjY2Vzc1Njb3BlOjpQZXJGcmFtZSA/IGZyYW1lSUQgOiBXVEY6Om51bGxvcHQpLCBwYWdlSUQp
OworICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmdyYW50U3RvcmFnZUFjY2VzcyhyZXNvdXJj
ZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgKHNjb3BlID09IFN0b3JhZ2VBY2Nlc3NTY29wZTo6
UGVyRnJhbWUgPyBmcmFtZUlEIDogc3RkOjpudWxsb3B0KSwgcGFnZUlEKTsKICAgICAgICAgICAg
IEFTU0VSVChzdG9yYWdlU2Vzc2lvbi0+aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwg
Zmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlEKSk7CiAgICAgICAgICAgICBpc1N0b3Jh
Z2VHcmFudGVkID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50KGNvbnN0IFByaXYKICAgICBwb3N0VGFzayhbdGhpcywgc291cmNlU2l0ZSwgZGVzdGlu
YXRpb25TaXRlLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAg
ICAgICAgcG9zdFRhc2tSZXBseShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTU5MSw3ICsxNTkxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKQogICAgICAgICBpZiAoIW1fc3RhdGlz
dGljc1N0b3JlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fc3RhdGlzdGljc1N0
b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURjo6bnVsbG9wdCk7CisgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlLT5jbGVhclByaXZhdGVDbGlja01lYXN1cmVtZW50KHN0ZDo6bnVs
bG9wdCk7CiAgICAgfSk7CiB9CiAgICAgCkBAIC0xNjk4LDE3ICsxNjk4LDE3IEBAIGF1dG8gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eTo6ZGVjb2RlCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRlY29kZWREb21haW47CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkRG9tYWluOwogICAgIGlmICgh
ZGVjb2RlZERvbWFpbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGRlY29kZWRTdG9yYWdlQWNj
ZXNzOwogICAgIGRlY29kZXIgPj4gZGVjb2RlZFN0b3JhZ2VBY2Nlc3M7CiAgICAgaWYgKCFkZWNv
ZGVkU3RvcmFnZUFjY2VzcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNlY29uZHM+IGRlY29kZWRUaW1l
TGFzdFVwZGF0ZWQ7CiAgICAgZGVjb2RlciA+PiBkZWNvZGVkVGltZUxhc3RVcGRhdGVkOwogICAg
IGlmICghZGVjb2RlZFRpbWVMYXN0VXBkYXRlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpkZWNvZGVkRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KCpkZWNvZGVkVGltZUxhc3RVcGRhdGVkKSB9fTsKIH0KQEAgLTE3MzksMTIgKzE3MzksMTIgQEAg
YXV0byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGUKICAgICBPcHRpb25hbDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gZGVjb2RlZERvbWFpbjsKICAgICBkZWNvZGVyID4+IGRlY29kZWREb21haW47CiAg
ICAgaWYgKCFkZWNvZGVkRG9tYWluKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPFRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5Pj4gZGVjb2RlZEZpcnN0UGFydGllczsKICAgICBk
ZWNvZGVyID4+IGRlY29kZWRGaXJzdFBhcnRpZXM7CiAgICAgaWYgKCFkZWNvZGVkRmlyc3RQYXJ0
aWVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWREb21haW4pLCBXVEZNb3Zl
KCpkZWNvZGVkRmlyc3RQYXJ0aWVzKSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggYzQ0YTQ4MzhmYzk3NDllYTY1N2FjMGVmZjAyZTU5ODdlYWU1NjdjOS4uYjQ4Yzg0M2Jj
YTQ4ZWE1OTdhNTBlMTk5NTYzZGYyYTFhOThhMDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAo
c2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTSIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZW1wdHlTdHJpbmcoKSwgZnJhbWVJRCwgcGFnZUlELCBXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbigqdGhpcywgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
IiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBlbXB0eVN0cmluZygpLCBmcmFt
ZUlELCBwYWdlSUQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKQEAgLTcwOCw3
ICs3MDgsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbgogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxk
TG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMsICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q29va2llc0Zyb21ET00iLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0
aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBhZ2VJRCwgV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKnRoaXMs
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00iLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGVtcHR5U3RyaW5nKCksIGZyYW1lSUQsIHBh
Z2VJRCwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTk4OCw3ICs5ODgsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc0Fs
bG93TGlzdHMoKQogT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNUb3BS
ZXNvdXJjZSkKIHsKICAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IC8vIEVpdGhlciBnZXQgdGhlIGV4aXN0aW5nIHJvb3QgYWN0aXZpdHkgdHJhY2tlciBmb3IgdGhp
cyBwYWdlIG9yIGNyZWF0ZSBhCiAgICAgLy8gbmV3IG9uZSBpZiB0aGlzIGlzIHRoZSBtYWluIHJl
c291cmNlLgpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXMKICAg
ICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaWYgdGhlIE5ldHdvcmtpbmcgcHJvY2VzcyBjcmFz
aGVzLCB0YWtpbmcgaXRzCiAgICAgICAgIC8vIHByZXZpb3VzIHN0YXRlIHdpdGggaXQuCiAgICAg
ICAgIGlmIChyb290QWN0aXZpdHlJbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYg
SEFWRShOV19BQ1RJVklUWSkKICAgICAgICAgQVNTRVJUKG1fbmV0d29ya0FjdGl2aXR5VHJhY2tl
cnNbcm9vdEFjdGl2aXR5SW5kZXhdLm5ldHdvcmtBY3Rpdml0eS5nZXRQbGF0Zm9ybU9iamVjdCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggMzY0YzIzNjE4YjNjZTI1ZTBjNDNiNTRiZjUzODU4MmFkYWI4MzE5Mi4uZmYwZmY0YWYx
Y2ZjYzczMjAwOWYwZjlhNmJkMTFiNzQ1YWIwY2Y3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE2MDgsNyArMTYwOCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpCiAjZW5kaWYKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtT
ZXNzaW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgV1RGOjpudWxs
b3B0LCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5y
ZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEobW9kaWZpZWRTaW5jZSwgc3RkOjpudWxsb3B0LCBbY2xl
YXJUYXNrc0hhbmRsZXJdIHsgfSk7CiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkgJiYgIXNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQogICAgICAgICBjbGVhckRpc2tDYWNoZShtb2RpZmllZFNpbmNlLCBbY2xlYXJUYXNrc0hhbmRs
ZXIgPSBXVEZNb3ZlKGNsZWFyVGFza3NIYW5kbGVyKV0geyB9KTsKQEAgLTE3NDIsNyArMTc0Miw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDog
cmVnaXN0cmFibGVEb21haW5zKQogICAgICAgICAgICAgZG9tYWluc1RvRGVsZXRlTmV0d29ya0Rh
dGFGb3IuYWRkKGRvbWFpbik7CiAKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPnJlbW92ZU5ldHdv
cmtXZWJzaXRlRGF0YShXVEY6Om51bGxvcHQsIFdURk1vdmUoZG9tYWluc1RvRGVsZXRlTmV0d29y
a0RhdGFGb3IpLCBbY2xlYXJUYXNrc0hhbmRsZXJdIHsgfSk7CisgICAgICAgIG5ldHdvcmtTZXNz
aW9uLT5yZW1vdmVOZXR3b3JrV2Vic2l0ZURhdGEoc3RkOjpudWxsb3B0LCBXVEZNb3ZlKGRvbWFp
bnNUb0RlbGV0ZU5ldHdvcmtEYXRhRm9yKSwgW2NsZWFyVGFza3NIYW5kbGVyXSB7IH0pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCAzOWExNDI3ZTBiNjU1YWI1
ODRhYzJmZGRjN2YzMmY1MDc2ZGZlNTQwLi5jZjExN2FhOTc1N2YyZjBiZTRlMTUyNTlhYWI5OGJi
MjkxYTFkMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTMxLDQzICsxMzEs
NDMgQEAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyByZXN1bHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlm
aWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgCiAgICAgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
d2ViUGFnZVByb3h5SUQ7CiAgICAgZGVjb2RlciA+PiB3ZWJQYWdlUHJveHlJRDsKICAgICBpZiAo
IXdlYlBhZ2VQcm94eUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC53ZWJQYWdlUHJveHlJRCA9ICp3ZWJQYWdl
UHJveHlJRDsKIAogICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CiAgICAg
ZGVjb2RlciA+PiB3ZWJQYWdlSUQ7CiAgICAgaWYgKCF3ZWJQYWdlSUQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0
LndlYlBhZ2VJRCA9ICp3ZWJQYWdlSUQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC53ZWJGcmFtZUlEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhcmVu
dFBJRCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yZXF1ZXN0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGJvb2wgaGFzSFRUUEJvZHk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNIVFRQ
Qm9keSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoaGFzSFRUUEJvZHkpIHsKICAgICAgICAgUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSA9IEZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICgh
Zm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnJlcXVlc3Quc2V0SFRUUEJvZHko
V1RGTW92ZShmb3JtRGF0YSkpOwogCiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5PiByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgICAg
ICBkZWNvZGVyID4+IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAg
IGlmICghcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbkhh
bmRsZXMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShyZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNp
b25IYW5kbGVzLT5hdChpKSkpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5yZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKGV4dGVuc2lvbikpOwpAQCAtMTc4LDE0NSAr
MTc4LDE0NSBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgICAgICBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+IHJlc291cmNlU2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAg
ICAgICAgZGVjb2RlciA+PiByZXNvdXJjZVNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAg
IGlmICghcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHJlc3VsdC5yZXNvdXJjZVNhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGUoV1RGTW92ZSgqcmVzb3VyY2VTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgfQogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNuaWZmaW5nUG9saWN5KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWVudENyZWRl
bnRpYWxQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZFBy
ZWNvbm5lY3RPbmx5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5uZWVkc0NlcnRpZmljYXRlSW5mbykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1heGltdW1C
dWZmZXJpbmdUaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzU291cmNlT3JpZ2luOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzU291cmNlT3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzU291cmNlT3Jp
Z2luKSB7CiAgICAgICAgIHJlc3VsdC5zb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6ZGVj
b2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoIXJlc3VsdC5zb3VyY2VPcmlnaW4pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CiAKICAgICBib29sIGhhc1RvcE9yaWdpbjsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc1RvcE9yaWdpbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1RvcE9yaWdpbikgewogICAgICAgICBy
ZXN1bHQudG9wT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmRlY29kZShkZWNvZGVyKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQudG9wT3JpZ2luKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgT3B0aW9u
YWw8RmV0Y2hPcHRpb25zPiBvcHRpb25zOwogICAgIGRlY29kZXIgPj4gb3B0aW9uczsKICAgICBp
ZiAoIW9wdGlvbnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm9wdGlvbnMgPSAqb3B0aW9uczsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNzcFJlc3BvbnNlSGVhZGVycykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luYWxSZXF1ZXN0SGVhZGVycykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxib29sPiBzaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzczsKICAgICBk
ZWNvZGVyID4+IHNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzOwogICAgIGlmICghc2hv
dWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNob3VsZFJlc3Ry
aWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gKnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNz
OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucHJlZmxpZ2h0UG9saWN5KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZEVuYWJsZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xp
Y3k7CiAgICAgZGVjb2RlciA+PiBzaG91bGRFbmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5
OwogICAgIGlmICghc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICByZXN1bHQuc2hvdWxkRW5hYmxlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeSA9ICpzaG91bGRF
bmFibGVDcm9zc09yaWdpblJlc291cmNlUG9saWN5OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZnJhbWVBbmNlc3Rvck9yaWdpbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4g
cGFnZUhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICBkZWNvZGVyID4+IHBhZ2VIYXNSZXNvdXJj
ZUxvYWRDbGllbnQ7CiAgICAgaWYgKCFwYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50KQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IHJlc3VsdC5wYWdlSGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gKnBhZ2VIYXNSZXNvdXJjZUxvYWRD
bGllbnQ7CiAgICAgCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4gcGFy
ZW50RnJhbWVJRDsKICAgICBkZWNvZGVyID4+IHBhcmVudEZyYW1lSUQ7CiAgICAgaWYgKCFwYXJl
bnRGcmFtZUlEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJlbnRGcmFtZUlEID0gV1RGTW92ZSgqcGFyZW50
RnJhbWVJRCk7CiAKICAgICBPcHRpb25hbDxib29sPiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xD
aGVja0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQ7CiAgICAgaWYgKCFjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmVzdWx0LmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9ICpj
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgCiAgICAgT3B0aW9uYWw8
VVJMPiBkb2N1bWVudFVSTDsKICAgICBkZWNvZGVyID4+IGRvY3VtZW50VVJMOwogICAgIGlmICgh
ZG9jdW1lbnRVUkwpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmRvY3VtZW50VVJMID0gKmRvY3VtZW50VVJMOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJz
TW9kZT4gc2VydmljZVdvcmtlcnNNb2RlOwogICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNN
b2RlOwogICAgIGlmICghc2VydmljZVdvcmtlcnNNb2RlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5zZXJ2aWNl
V29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOwogCiAgICAgT3B0aW9uYWw8T3B0aW9u
YWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyOwogICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
ID0gKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uU2V0PEhUVFBIZWFkZXJzVG9LZWVwRnJvbUNsZWFuaW5nPj4gaHR0cEhlYWRlcnNUb0tl
ZXA7CiAgICAgZGVjb2RlciA+PiBodHRwSGVhZGVyc1RvS2VlcDsKICAgICBpZiAoIWh0dHBIZWFk
ZXJzVG9LZWVwKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5odHRwSGVhZGVyc1RvS2VlcCA9IFdURk1vdmUoKmh0
dHBIZWFkZXJzVG9LZWVwKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4+
IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCiAKICAgICBPcHRp
b25hbDxPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOwogICAgIGlmICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1
bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkPj4gcGNtRGF0YUNhcnJpZWQ7CiAgICAgZGVjb2RlciA+
PiBwY21EYXRhQ2FycmllZDsKICAgICBpZiAoIXBjbURhdGFDYXJyaWVkKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3Vs
dC5wY21EYXRhQ2FycmllZCA9ICpwY21EYXRhQ2FycmllZDsKICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ5OTc5MTZkN2JmZTE1ZTdhNDYwZGYwMzQ2ODdlNjQzM2U5
YTJmNDIuLmNjYmUzMWM0ZjIwNTMwN2I5MzYzMzk5ZDAxOTdhN2ZlMDAzMGQxNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTgxMiw3ICs4MTIsNyBAQCBPcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpbwogICAgICAg
ICAgICAgcmV0dXJuIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+bWF4QWdlQ2FjaGVDYXAocmVxdWVz
dCk7CiAgICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25J
bnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICAgICAgICAg
TE9DQUxfTE9HKFIiKCAgICAiZG9tYWluIjogIiV7cHVibGljfXMiLCkiLCBlc2NhcGVkRG9tYWlu
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJwYXRoIjogIiV7cHVi
bGljfXMiLCkiLCBlc2NhcGVkUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgTE9DQUxfTE9H
KFIiKCAgICAiY3JlYXRlZCI6ICVmLCkiLCBjb29raWUuY3JlYXRlZCk7Ci0gICAgICAgIExPQ0FM
X0xPRyhSIiggICAgImV4cGlyZXMiOiAlZiwpIiwgY29va2llLmV4cGlyZXMudmFsdWVPcigwKSk7
CisgICAgICAgIExPQ0FMX0xPRyhSIiggICAgImV4cGlyZXMiOiAlZiwpIiwgY29va2llLmV4cGly
ZXMudmFsdWVfb3IoMCkpOwogICAgICAgICBMT0NBTF9MT0coUiIoICAgICJodHRwT25seSI6ICV7
cHVibGljfXMsKSIsIGNvb2tpZS5odHRwT25seSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgICAg
ICBMT0NBTF9MT0coUiIoICAgICJzZWN1cmUiOiAle3B1YmxpY31zLCkiLCBjb29raWUuc2VjdXJl
ID8gInRydWUiIDogImZhbHNlIik7CiAgICAgICAgIExPQ0FMX0xPRyhSIiggICAgInNlc3Npb24i
OiAle3B1YmxpY31zLCkiLCBjb29raWUuc2Vzc2lvbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAw
ZmVkNmM0YTZjOGNjNjBiOTUxYTcxNDYyODk3MjBiMzkxYTQ1N2ZhLi4xNDM5NjI0Yjc5MjhkMmJl
MjFhZTcwM2E4MGFhMzkyMGY1OTBiMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjgzLDIyICsyODMsMjIgQEAgT3B0aW9uYWw8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTZXNzaW9uOjpmaXJzdFBhcnR5SG9z
dENOQU1FRG9tYWluKGMKIHsKICNpZiBIQVZFKENGTkVUV09SS19DTkFNRV9BTkRfQ09PS0lFX1RS
QU5TRk9STV9TUEkpCiAgICAgaWYgKCFkZWNsdHlwZShtX2ZpcnN0UGFydHlIb3N0Q05BTUVEb21h
aW5zKTo6aXNWYWxpZEtleShmaXJzdFBhcnR5SG9zdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5maW5kKGZpcnN0UGFydHlIb3N0KTsKICAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZmly
c3RQYXJ0eUhvc3QpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZXNldENOQU1FRG9t
YWluRGF0YSgpCiB7CiAgICAgbV9maXJzdFBhcnR5SG9zdENOQU1FRG9tYWlucy5jbGVhcigpOwot
ICAgIG1fdGhpcmRQYXJ0eUNOQU1FRG9tYWluRm9yVGVzdGluZyA9IFdURjo6bnVsbG9wdDsKKyAg
ICBtX3RoaXJkUGFydHlDTkFNRURvbWFpbkZvclRlc3RpbmcgPSBzdGQ6Om51bGxvcHQ7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAyZmZmOGQ1MDRiZDIyNTExMzA2OTc5NGE4NmIzZmVj
ZGQzZDI3YTViLi42ZjhhYzM5NjgyOGYxOGZmOTAxODJkMWJjZmQ1MjIwN2M0MmEzM2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTQsMjA0ICs5NCwyMDQgQEAgT3B0
aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lv
bklEOwogICAgIGRlY29kZXIgPj4gc2Vzc2lvbklEOwogICAgIGlmICghc2Vzc2lvbklEKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAg
IGRlY29kZXIgPj4gYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwogICAgIGlmICghYm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPEFsbG93c0NlbGx1bGFyQWNj
ZXNzPiBhbGxvd3NDZWxsdWxhckFjY2VzczsKICAgICBkZWNvZGVyID4+IGFsbG93c0NlbGx1bGFy
QWNjZXNzOwogICAgIGlmICghYWxsb3dzQ2VsbHVsYXJBY2Nlc3MpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlDb25maWd1
cmF0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJveHlDb25maWd1cmF0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcjsKICAgICBkZWNvZGVyID4+IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsK
ICAgICBpZiAoIXNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAg
ICBPcHRpb25hbDxTdHJpbmc+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICAg
ICBpZiAoIXNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcikKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9w
dGlvbmFsPFN0cmluZz4gYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+
PiBhdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcjsKICAgICBpZiAoIWF0dHJpYnV0ZWRCdW5kbGVJ
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IHNob3VsZExvZ0Nvb2tpZUlu
Zm9ybWF0aW9uOwogICAgIGRlY29kZXIgPj4gc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247CiAg
ICAgaWYgKCFzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFVS
TD4gaHR0cFByb3h5OwogICAgIGRlY29kZXIgPj4gaHR0cFByb3h5OwogICAgIGlmICghaHR0cFBy
b3h5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VVJMPiBodHRwc1Byb3h5OwogICAgIGRlY29kZXIgPj4g
aHR0cHNQcm94eTsKICAgICBpZiAoIWh0dHBzUHJveHkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBhbHRl
cm5hdGl2ZVNlcnZpY2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBhbHRlcm5hdGl2ZVNlcnZp
Y2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGFsdGVybmF0aXZlU2Vy
dmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBo
dHRwM0VuYWJsZWQ7CiAgICAgZGVjb2RlciA+PiBodHRwM0VuYWJsZWQ7CiAgICAgaWYgKCFodHRw
M0VuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gaHN0c1N0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBpZiAo
IWhzdHNTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBoc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNv
ZGVyID4+IGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghaHN0
c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAjaWYgVVNFKFNPVVAp
CiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAg
ZGVjb2RlciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgaWYgKCFjb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVBhdGgpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTb3VwQ29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlPiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CiAgICAgZGVjb2Rl
ciA+PiBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CiAgICAgaWYgKCFjb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBwZXJzaXN0ZW50Q3JlZGVu
dGlhbFN0b3JhZ2VFbmFibGVkOwogICAgIGRlY29kZXIgPj4gcGVyc2lzdGVudENyZWRlbnRpYWxT
dG9yYWdlRW5hYmxlZDsKICAgICBpZiAoIXBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZUVuYWJs
ZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpZ25vcmVUTFNFcnJvcnM7CiAgICAgZGVjb2Rl
ciA+PiBpZ25vcmVUTFNFcnJvcnM7CiAgICAgaWYgKCFpZ25vcmVUTFNFcnJvcnMpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M+IHByb3h5U2V0dGlu
Z3M7CiAgICAgZGVjb2RlciA+PiBwcm94eVNldHRpbmdzOwogICAgIGlmICghcHJveHlTZXR0aW5n
cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICNlbmRpZgogCiAjaWYgVVNFKENVUkwpCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb29r
aWVQZXJzaXN0ZW50U3RvcmFnZUZpbGU7CiAgICAgZGVjb2RlciA+PiBjb29raWVQZXJzaXN0ZW50
U3RvcmFnZUZpbGU7CiAgICAgaWYgKCFjb29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpDdXJsUHJveHlTZXR0aW5ncz4gcHJveHlTZXR0aW5nczsK
ICAgICBkZWNvZGVyID4+IHByb3h5U2V0dGluZ3M7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsK
ICAgICBkZWNvZGVyID4+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIW5ldHdvcmtD
YWNoZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVy
ID4+IG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIW5ldHdv
cmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+
IGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkOwogICAgIGRlY29kZXIgPj4gZGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQ7CiAgICAgaWYgKCFkZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGFsbExvYWRz
QmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmc7CiAgICAgZGVj
b2RlciA+PiBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JU
ZXN0aW5nOwogICAgIGlmICghYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRm9yVGVzdGluZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gZGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZTsKICAgICBkZWNvZGVyID4+IGRhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7
CiAgICAgaWYgKCFkYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlv
bmFsPGJvb2w+IGZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkOwogICAgIGRlY29kZXIg
Pj4gZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQ7CiAgICAgaWYgKCFmYXN0U2VydmVy
VHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBuZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkOwogICAgIGRlY29kZXIgPj4gbmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZDsKICAgICBpZiAoIW5ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8
Ym9vbD4gc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uOwogICAgIGRlY29kZXIgPj4gc2hv
dWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uOwogICAgIGlmICghc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc3RhbGVXaGlsZVJldmFsaWRh
dGVFbmFibGVkOwogICAgIGRlY29kZXIgPj4gc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkOwog
ICAgIGlmICghc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IHRlc3RTcGVlZE11bHRpcGxpZXI7CiAgICAgZGVjb2RlciA+PiB0ZXN0U3BlZWRN
dWx0aXBsaWVyOwogICAgIGlmICghdGVzdFNwZWVkTXVsdGlwbGllcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxib29sPiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFu
Z2U7CiAgICAgZGVjb2RlciA+PiBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0
ZW1DaGFuZ2U7CiAgICAgaWYgKCFzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0
ZW1DaGFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0
OwogICAgIGRlY29kZXIgPj4gYWxsb3dzU2VydmVyUHJlY29ubmVjdDsKICAgICBpZiAoIWFsbG93
c1NlcnZlclByZWNvbm5lY3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiByZXF1aXJlc1NlY3Vy
ZUhUVFBTUHJveHlDb25uZWN0aW9uOwogICAgIGRlY29kZXIgPj4gcmVxdWlyZXNTZWN1cmVIVFRQ
U1Byb3h5Q29ubmVjdGlvbjsKICAgICBpZiAoIXJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5l
Y3Rpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Ym9vbD4gcHJldmVudHNTeXN0ZW1IVFRQUHJv
eHlBdXRoZW50aWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5
QXV0aGVudGljYXRpb247CiAgICAgaWYgKCFwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRp
Y2F0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPGJvb2w+IGFwcEhhc1JlcXVlc3RlZENyb3Nz
V2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBkZWNvZGVyID4+IGFwcEhhc1JlcXVlc3Rl
ZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBpZiAoIWFwcEhhc1JlcXVlc3Rl
ZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+
IHVzZU5ldHdvcmtMb2FkZXI7CiAgICAgZGVjb2RlciA+PiB1c2VOZXR3b3JrTG9hZGVyOwogICAg
IGlmICghdXNlTmV0d29ya0xvYWRlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzPiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVyczsKICAg
ICBkZWNvZGVyID4+IHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzOwogICAgIGlmICgh
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7
CiAgICAgICAgICpzZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCA4
NzExZmY4N2M2NjdkZDk5M2U3ZmUzYTdlZGE4YjQyODE1NGZiZjlhLi44N2YxMzc0Y2FhNmY1NDgw
YjBmMWVjYTk5ZWQyMjg3NTgwMTc3NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3Bw
CkBAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OnNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZyhVUkwmJiB0ZXN0VVIKIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0
aW5nKFVSTCYmIHNvdXJjZVVSTCwgVVJMJiYgZGVzdGluYXRpb25VUkwpCiB7CiAgICAgaWYgKHNv
dXJjZVVSTC5pc0VtcHR5KCkgfHwgZGVzdGluYXRpb25VUkwuaXNFbXB0eSgpKQotICAgICAgICBt
X2F0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9h
dHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWcgPSBzdGQ6Om51bGxvcHQ7CiAgICAgZWxzZQogICAg
ICAgICBtX2F0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyA9IEF0dHJpYnV0aW9uUmVwb3J0VGVz
dENvbmZpZyB7IFdURk1vdmUoc291cmNlVVJMKSwgV1RGTW92ZShkZXN0aW5hdGlvblVSTCkgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYjI0M2QxNGNi
MjNjNjNjYTc1YTI0M2U1M2Y4NTA1Mjc1MDNjMjIzOC4uZjNjYzY3MDMyMmMwZWVkZDA3ZTNlODcx
Y2ZiYjFiZjdiY2ZjOWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6bWF0Y2hS
ZWdpc3RyYXRpb24odWludDY0X3QgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SQogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9u
IHsgcmVnaXN0cmF0aW9uTWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLT5kYXRh
KCkgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
bGllbnRDb25uZWN0aW9uOjpEaWRNYXRjaFJlZ2lzdHJhdGlvbiB7IHJlZ2lzdHJhdGlvbk1hdGNo
UmVxdWVzdElkZW50aWZpZXIsIFdURjo6bnVsbG9wdCB9KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OkRpZE1hdGNoUmVnaXN0cmF0aW9uIHsgcmVnaXN0cmF0aW9u
TWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpudWxsb3B0IH0pOwogfQogCiB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9u
UmVhZHlSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBy
ZWdpc3RyYXRpb25EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5o
CmluZGV4IDMxZGI0YTA5YmZlNjMxZTJjOWI0YWM2MDg3Mzk3MmFlMGI1MzA1NmEuLjNiNmI0MWQx
NjUyNzQ0MWNkODM0ZWEzNWRhMTg0YzI4ZWJhMzQ4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTkzLDEzICs5MywxMyBAQCBPcHRpb25hbDxMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcgogewogICAgIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cyByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQub3JpZ2luSWRlbnRpZmll
cikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3JlYXRpb25UaW1l
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tb2RpZmljYXRpb25U
aW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYS5jcHAKaW5kZXgg
M2YzZWQ0NDkzMDQyYjE5YTQwMzFhZTQzZDY5MDAyMGYyZjRhMDg2MC4uNjEzMzVhNzkzZTM1Njhh
M2I1ZGZlOGNiNTkwMmQ2ODExMDA5NDdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWEuY3BwCkBAIC0xOTAsNyArMTkw
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYTo6ZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uOjpV
bmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCBTdG8KICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBBU1NFUlQoc3RvcmFnZUFyZWFJbXBsSUQpOwogICAgIGZvciAoYXV0byBpdCA9
IG1fZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKSwgZW5kID0gbV9ldmVudExpc3RlbmVycy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50
aWZpZXI+IG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQgPSAqaXQgPT0gc291cmNlQ29ubmVjdGlv
biA/IG1ha2VPcHRpb25hbChzdG9yYWdlQXJlYUltcGxJRCkgOiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIE9wdGlvbmFsPFN0b3JhZ2VBcmVhSW1wbElkZW50aWZpZXI+IG9wdGlvbmFsU3RvcmFnZUFy
ZWFJbXBsSUQgPSAqaXQgPT0gc291cmNlQ29ubmVjdGlvbiA/IHN0ZDo6bWFrZV9vcHRpb25hbChz
dG9yYWdlQXJlYUltcGxJRCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtjb25uZWN0aW9uSUQgPSAqaXQsIGRlc3RpbmF0aW9uU3RvcmFnZUFyZWFJ
RCA9IG1faWRlbnRpZmllciwga2V5ID0ga2V5Lmlzb2xhdGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9s
ZFZhbHVlLmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgp
LCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbmFsU3RvcmFnZUFy
ZWFJbXBsSUQgPSBXVEZNb3ZlKG9wdGlvbmFsU3RvcmFnZUFyZWFJbXBsSUQpXSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y29ubmVjdGlvbihj
b25uZWN0aW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5kZXggZjllODQzZGUzNzMx
OWRkNmM1YzEwNjNhM2NkY2Y1YzFkNGJiYTE5NS4uNDY1NTQ4N2E2ZWNkMzAwYzQxM2MxYWE1NjEz
YmRmZmI0OGNlOGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXJTZXQuY3BwCkBAIC0zMTIsMTMgKzMx
MiwxMyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyU2V0Ojpjb25uZWN0VG9Mb2NhbFN0b3JhZ2VBcmVh
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUAogCiAgICAgYXV0byogc3RvcmFnZU1hbmFn
ZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKICAgICBpZiAoIXN0b3JhZ2VN
YW5hZ2VyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBhdXRvKiBzdG9yYWdlQXJlYSA9IHN0b3JhZ2VNYW5hZ2VyLT5jcmVhdGVMb2Nh
bFN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSwgbV9x
dWV1ZS5jb3B5UmVmKCkpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzM3LDEzICszMzcsMTMg
QEAgdm9pZCBTdG9yYWdlTWFuYWdlclNldDo6Y29ubmVjdFRvVHJhbnNpZW50TG9jYWxTdG9yYWdl
QXJlYShJUEM6OkNvbm5lY3Rpb24mIGNvbm4KIAogICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0g
bV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNlc3Npb25JRCk7CiAgICAgaWYgKCFzdG9yYWdlTWFuYWdl
cikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgYXV0byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlQXJlYShzdG9yYWdlTmFtZXNwYWNlSUQsIFdURk1vdmUodG9wTGV2ZWxPcmln
aW5EYXRhKSwgV1RGTW92ZShvcmlnaW5EYXRhKSwgbV9xdWV1ZS5jb3B5UmVmKCkpOwogICAgIGlm
ICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzYyLDEzICszNjIsMTMgQEAgdm9pZCBTdG9yYWdlTWFuYWdlclNl
dDo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwKIAogICAgIGF1dG8qIHN0b3JhZ2VNYW5hZ2VyID0gbV9zdG9yYWdlTWFuYWdlcnMuZ2V0KHNl
c3Npb25JRCk7CiAgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogc3RvcmFnZUFyZWEg
PSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVhKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSwgbV9xdWV1ZS5jb3B5UmVmKCkpOwogICAgIGlmICgh
c3RvcmFnZUFyZWEpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IDJhY2U1MWM2MTA4ZTIzNWY4MDYxZGMy
ZTg4OTliZDU2YmQ3ODIzODIuLmNkNjgwZjAzZGYyNjE2ZWU5Y2FhM2ZlY2E1Y2RhNzk0NDg5OWY0
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBzdGF0aWMgdWludDY0
X3QgZ2V0RGlyZWN0b3J5U2l6ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBkaXJlY3Rv
cnlTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgICAg
IGRpcmVjdG9yeVNpemUgKz0gRmlsZVN5c3RlbTo6ZmlsZVNpemUocGF0aCkudmFsdWVfb3IoMCk7
CiAgICAgfQogICAgIHJldHVybiBkaXJlY3RvcnlTaXplOwogfQpAQCAtMzUyLDEzICszNTIsMTMg
QEAgdm9pZCBFbmdpbmU6OmluaXRpYWxpemUoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2sp
CiAgICAgfQogCiAgICAgaWYgKG1fc2FsdCkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAgICAgbV9zYWx0ID0gTmV0
d29ya0NhY2hlOjpTYWx0IHsgfTsKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKENvbXBsZXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKQogCiAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrcyA9IFdURk1vdmUo
bV9pbml0aWFsaXphdGlvbkNhbGxiYWNrcyk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogY2FsbGJhY2tzKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fc2FsdCA/IFdURjo6
bnVsbG9wdCA6IG1ha2VPcHRpb25hbChFcnJvcjo6V3JpdGVEaXNrKSk7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sobV9zYWx0ID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEVy
cm9yOjpXcml0ZURpc2spKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NTMsNyArNDUz
LDcgQEAgQ2FjaGUqIEVuZ2luZTo6Y2FjaGUodWludDY0X3QgY2FjaGVJZGVudGlmaWVyKQogdm9p
ZCBFbmdpbmU6OndyaXRlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBOZXR3b3JrQ2FjaGU6
OkRhdGEmJiBkYXRhLCBXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6Q29tcGxldGlvbkNhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKLSAgICAgICAgY2Fs
bGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgRW5naW5lOjp3
cml0ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgTmV0d29ya0NhY2hlOjpEYXRhJiYgZGF0
YSwgV2ViQ29yCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3I6OldyaXRlRGlzayk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNTYxLDIxICs1NjEsMjEgQEAgT3B0aW9uYWw8dWlu
dDY0X3Q+IEVuZ2luZTo6cmVhZFNpemVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICB9KTsK
IAogICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlSGFuZGxlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZU9yKDAp
OworICAgIGF1dG8gZmlsZVNpemUgPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZV9v
cigwKTsKICAgICBpZiAoIWZpbGVTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdW5zaWduZWQgYnl0ZXNUb1JlYWQ7
CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUsIGJ5dGVzVG9SZWFkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIC8vIEZJWE1FOiBObyByZWFzb24gd2UgbmVlZCBhIGhlYXAgYnVmZmVyIHRvIHJlYWQg
YW4gYXJiaXRyYXJ5IG51bWJlciBvZiBieXRlcyB3aGVuIHdlIG9ubHkgc3VwcG9ydCBzbWFsbCBm
aWxlcyB0aGF0IGNvbnRhaW4gbnVtZXJhbHMuCiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRl
c1RvUmVhZCk7CiAgICAgdW5zaWduZWQgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFk
RnJvbUZpbGUoZmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAg
aWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHBhcnNl
SW50ZWdlcjx1aW50NjRfdD4oeyBidWZmZXIuZGF0YSgpLCB0b3RhbEJ5dGVzUmVhZCB9KTsKIH0K
QEAgLTc3NCw3ICs3NzQsNyBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJNZW1vcnlSZXByZXNlbnRhdGlv
bihjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgV2ViQwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdC52YWx1ZSgpLmdldCgpLmNsZWFyTWVt
b3J5UmVwcmVzZW50YXRpb24oKTsKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlLmNwcAppbmRleCA5NDA5ZDhmMjRjMzE4Y2RhYjRmYzJiYmM1ODFkOWQ1N2M2MmE0
ZmQ1Li4xZmVmNWU2MTZkNzVjNzA0NzVjZDNkNzNjMzkzZWNhOTc3MzA4ZTM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBUcmF2ZXJzYWxS
ZXN1bHQgaXNvbGF0ZWRDb3B5KFRyYXZlcnNhbFJlc3VsdCYmIHJlc3VsdCkKIHZvaWQgQ2FjaGU6
Om9wZW4oQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6Ok9wZW4pIHsKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6T3BlbmluZykgewpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
Q2FjaGU6Om9wZW4oQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FjaGUt
Pm1fcmVjb3JkcyA9IFdURk1vdmUodHJhdmVyc2FsUmVzdWx0LnJlY29yZHMpOwotICAgICAgICAg
ICAgICAgIGNhY2hlLT5maW5pc2hPcGVuaW5nKFdURk1vdmUoY2FsbGJhY2spLCBXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgICAgIGNhY2hlLT5maW5pc2hPcGVuaW5nKFdURk1vdmUoY2FsbGJh
Y2spLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTIyNywxMCArMjI3LDEwIEBAIHZvaWQgQ2FjaGU6OmZpbmlzaE9wZW5p
bmcoQ29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2ssIE9wdGlvbmFsPEVycm9yPiYmIGVycm9y
CiAgICAgfQogICAgIG1fc3RhdGUgPSBTdGF0ZTo6T3BlbjsKIAotICAgIGNhbGxiYWNrKFdURjo6
bnVsbG9wdCk7CisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICBhdXRvIGNhbGxiYWNr
cyA9IFdURk1vdmUobV9wZW5kaW5nT3BlbmluZ0NhbGxiYWNrcyk7CiAgICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IGNhbGxiYWNrcykKLSAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKIH0KIAogY2xhc3MgUmVhZFJlY29yZFRhc2tD
b3VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZFJlY29yZFRhc2tDb3VudGVyPiB7CkBAIC01
ODIsMzcgKzU4MiwzNyBAQCBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlY29yZD4gZGVjb2RlRE9NQ2FjaGVSZWNvcmQoV1RGOjpQZXJzaQogICAgIE9wdGlvbmFsPEZl
dGNoSGVhZGVyczo6R3VhcmQ+IHJlcXVlc3RIZWFkZXJzR3VhcmQ7CiAgICAgZGVjb2RlciA+PiBy
ZXF1ZXN0SGVhZGVyc0d1YXJkOwogICAgIGlmICghcmVxdWVzdEhlYWRlcnNHdWFyZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QuZGVjb2Rl
V2l0aG91dFBsYXRmb3JtRGF0YShkZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBGZXRjaE9wdGlvbnMg
b3B0aW9uczsKICAgICBpZiAoIUZldGNoT3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVudChkZWNvZGVy
LCBvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IHJlZmVycmVyOwogICAg
IGRlY29kZXIgPj4gcmVmZXJyZXI7CiAgICAgaWYgKCFyZWZlcnJlcikKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDxGZXRjaEhlYWRlcnM6Okd1YXJkPiByZXNwb25zZUhlYWRlcnNHdWFyZDsKICAgICBk
ZWNvZGVyID4+IHJlc3BvbnNlSGVhZGVyc0d1YXJkOwogICAgIGlmICghcmVzcG9uc2VIZWFkZXJz
R3VhcmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOwogICAgIGlmICghUmVz
b3VyY2VSZXNwb25zZTo6ZGVjb2RlKGRlY29kZXIsIHJlc3BvbnNlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gcmVzcG9uc2VCb2R5U2l6ZTsKICAgICBkZWNvZGVyID4+IHJlc3Bv
bnNlQm9keVNpemU7CiAgICAgaWYgKCFyZXNwb25zZUJvZHlTaXplKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFk
ZWNvZGVyLnZlcmlmeUNoZWNrc3VtKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAgICAgICAgMCwK
QEAgLTYzNSwxNiArNjM1LDE2IEBAIE9wdGlvbmFsPENhY2hlOjpEZWNvZGVkUmVjb3JkPiBDYWNo
ZTo6ZGVjb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYKICAgICBPcHRpb25h
bDxkb3VibGU+IGluc2VydGlvblRpbWU7CiAgICAgZGVjb2RlciA+PiBpbnNlcnRpb25UaW1lOwog
ICAgIGlmICghaW5zZXJ0aW9uVGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBzaXpl
OwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6UmVjb3JkPiByZWNvcmQgPSBkZWNvZGVET01DYWNo
ZVJlY29yZChkZWNvZGVyKTsKICAgICBpZiAoIXJlY29yZCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewog
ICAgICAgICBXVEZNb3ZlKCppbnNlcnRpb25UaW1lKSwKQEAgLTY1OCw3ICs2NTgsNyBAQCBPcHRp
b25hbDxSZWNvcmQ+IENhY2hlOjpkZWNvZGUoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiBzdG9yYWdl
KQogICAgIGF1dG8gcmVzdWx0ID0gZGVjb2RlUmVjb3JkSGVhZGVyKHN0b3JhZ2UpOwogCiAgICAg
aWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHJlY29yZCA9IFdURk1vdmUocmVzdWx0LT5yZWNv
cmQpOwogICAgIHJlY29yZC5yZXNwb25zZUJvZHkgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdG9yYWdlLmJvZHkuZGF0YSgpLCBzdG9yYWdlLmJvZHkuc2l6ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9y
YWdlRW5naW5lQ2FjaGVzLmNwcAppbmRleCBmY2VmYmY3MTIwMzRmNzNkNzU0Yjg5YjE5YTI0Nzcx
NTFmMjc3Y2JmLi44NzU1MTUzYWM4M2E5NGI5NTIyY2IzZGRlODYyNjM0YzM3ZGFmNzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBX
b3JrUXVldWUmIHF1CiAgICAgcXVldWUuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZpbGVuYW1lID0gY2FjaGVzT3JpZ2luRmlsZW5hbWUo
Zm9sZGVyUGF0aCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhmaWxlbmFtZSkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODgsNyArODgsNyBAQCB2
b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9s
ZGVyUGF0aCwgV29ya1F1ZXVlJiBxdQogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKENhY2hlU3RvcmFnZSwgIkNhY2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0
b3J5IGZhaWxlZCByZWFkaW5nIGNoYW5uZWwgd2l0aCBlcnJvciAlZCIsIGVycm9yKTsKLSAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVhZE9y
aWdpbihkYXRhKSk7CkBAIC0xMTcsMTIgKzExNywxMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpDbGll
bnRPcmlnaW4+IENhY2hlczo6cmVhZE9yaWdpbihjb25zdCBEYXRhJiBkYXRhKQogICAgIE9wdGlv
bmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luOwogICAgIGRlY29kZXIg
Pj4gdG9wT3JpZ2luOwogICAgIGlmICghdG9wT3JpZ2luKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBjbGllbnRPcmlnaW47CiAgICAgZGVjb2RlciA+PiBj
bGllbnRPcmlnaW47CiAgICAgaWYgKCFjbGllbnRPcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sK
ICAgICAgICAgV1RGTW92ZSgqdG9wT3JpZ2luKSwKQEAgLTEzMywxNCArMTMzLDE0IEBAIE9wdGlv
bmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gQ2FjaGVzOjpyZWFkT3JpZ2luKGNvbnN0IERhdGEm
IGRhdGEpCiB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZShXZWJDb3JlOjpET01DYWNoZUVuZ2luZTo6
Q29tcGxldGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKG1faXNJbml0aWFsaXpl
ZCkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKG1fcm9vdFBh
dGguaXNOdWxsKCkpIHsKICAgICAgICAgbWFrZURpcnR5KCk7CiAgICAgICAgIG1faXNJbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyNSw3
ICsyMjUsNyBAQCB2b2lkIENhY2hlczo6aW5pdGlhbGl6ZVNpemUoKQogICAgICAgICAgICAgICAg
IG1faXNJbml0aWFsaXplZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYXV0byBwZW5kaW5nQ2Fs
bGJhY2tzID0gV1RGTW92ZShtX3BlbmRpbmdJbml0aWFsaXphdGlvbkNhbGxiYWNrcyk7CiAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHBlbmRpbmdDYWxsYmFja3MpCi0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgQ2FjaGVzOjp3cml0
ZUNhY2hlc1RvRGlzayhDb21wbGV0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICBBU1NFUlQo
IW1faXNXcml0aW5nQ2FjaGVzVG9EaXNrKTsKICAgICBBU1NFUlQobV9pc0luaXRpYWxpemVkKTsK
ICAgICBpZiAoIXNob3VsZFBlcnNpc3QoKSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNr
KENvbXBsZXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogCiAgICAgaWYgKG1fY2FjaGVzLmlzRW1w
dHkoKSkgewogICAgICAgICBtX2VuZ2luZS0+cmVtb3ZlRmlsZShjYWNoZXNMaXN0RmlsZW5hbWUo
bV9yb290UGF0aCkpOwotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MDAs
NyArNTAwLDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlQ2FjaGVzVG9EaXNrKENvbXBsZXRpb25DYWxs
YmFjayYmIGNhbGxiYWNrKQogCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoZXJyb3IpKTsKICAg
ICAgICAgd2hpbGUgKCFtX3BlbmRpbmdXcml0aW5nQ2FjaGVzVG9EaXNrQ2FsbGJhY2tzLmlzRW1w
dHkoKSAmJiAhbV9pc1dyaXRpbmdDYWNoZXNUb0Rpc2spCi0gICAgICAgICAgICBtX3BlbmRpbmdX
cml0aW5nQ2FjaGVzVG9EaXNrQ2FsbGJhY2tzLnRha2VGaXJzdCgpKFdURjo6bnVsbG9wdCk7Cisg
ICAgICAgICAgICBtX3BlbmRpbmdXcml0aW5nQ2FjaGVzVG9EaXNrQ2FsbGJhY2tzLnRha2VGaXJz
dCgpKHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lk
IENhY2hlczo6d3JpdGVSZWNvcmQoY29uc3QgQ2FjaGUmIGNhY2hlLCBjb25zdCBSZWNvcmRJbmZv
cm1hdGlvbiYgcmVjb3JkSW5mbwogCiAgICAgaWYgKCFzaG91bGRQZXJzaXN0KCkpIHsKICAgICAg
ICAgbV92b2xhdGlsZVN0b3JhZ2Uuc2V0KHJlY29yZEluZm9ybWF0aW9uLmtleSwgbWFrZVVuaXF1
ZTxSZWNvcmQ+KFdURk1vdmUocmVjb3JkKSkpOwotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxv
cHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBDYWNoZXM6OndyaXRlUmVjb3JkKGNvbnN0
IENhY2hlJiBjYWNoZSwgY29uc3QgUmVjb3JkSW5mb3JtYXRpb24mIHJlY29yZEluZm8KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB1cGRhdGVTaXplRmlsZShbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggMmFh
YjdiMDYyY2RjODRkMTA2OTczNDlkODkyYmFjYTk4MDRmNzA4Ni4uNzBmODM1ODQ3M2U5YzE2ZWVi
NzlhZjM3ZGY2MDE0OGQ0NTI2NWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICBp
ZiAobGlua0NvdW50ICYmICpsaW5rQ291bnQgPT0gMSkKICAgICAgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXBwcm94aW1h
dGVTaXplICs9IEZpbGVTeXN0ZW06OmZpbGVTaXplKHBhdGgpLnZhbHVlT3IoMCk7CisgICAgICAg
ICAgICBtX2FwcHJveGltYXRlU2l6ZSArPSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1
ZV9vcigwKTsKICAgICB9KTsKIAogICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdv
cmtQcm9jZXNzKSBibG9iIHN5bmNocm9uaXphdGlvbiBjb21wbGV0ZWQgYXBwcm94aW1hdGVTaXpl
PSV6dSIsIGFwcHJveGltYXRlU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcAppbmRleCBhYWJiNWJl
YTg5MTM4ZjQxZWRhMzg0M2EyZjdmNWFhMDk3NTY0MTBhLi4yY2RjNDIyZjMwOGZhMDBlNjY2NmVh
ODc1ZWRlZjZmYTViMDM2ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuY3BwCkBAIC00NSwxOCArNDUsMTgg
QEAgT3B0aW9uYWw8V2ViQ29yZTo6SFRUUEhlYWRlck1hcD4gQ29kZXI8V2ViQ29yZTo6SFRUUEhl
YWRlck1hcD46OmRlY29kZShEZWNvZGVyJgogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBoZWFkZXJz
U2l6ZTsKICAgICBkZWNvZGVyID4+IGhlYWRlcnNTaXplOwogICAgIGlmICghaGVhZGVyc1NpemUp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIGhlYWRlcnM7CiAgICAgZm9yICh1aW50
NjRfdCBpID0gMDsgaSA8ICpoZWFkZXJzU2l6ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbmFsPFN0
cmluZz4gbmFtZTsKICAgICAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgICAgICBpZiAoIW5hbWUp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiB2YWx1ZTsKICAgICAgICAgZGVj
b2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBo
ZWFkZXJzLmFwcGVuZChXVEZNb3ZlKCpuYW1lKSwgV1RGTW92ZSgqdmFsdWUpKTsKICAgICB9CiAg
ICAgcmV0dXJuIGhlYWRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCAzYmQwYzc0
ODdiNjAwMzRlMmY0MmJjMDAyOTdmYjgyNGIwMzZlNTJlLi5jODc1YzkzNjRlZTA1MzUyNmQzZjll
N2MzNjI3NWQ5MzE5YzVjMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTg0LDcg
Kzg0LDcgQEAgRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxpZiBP
UyhXSU5ET1dTKQogICAgIGF1dG8gY3JlYXRlVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVDcmVhdGlv
blRpbWUocGF0aCk7CiAgICAgYXV0byBtb2RpZnlUaW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlm
aWNhdGlvblRpbWUocGF0aCk7Ci0gICAgcmV0dXJuIHsgY3JlYXRlVGltZS52YWx1ZU9yKFdhbGxU
aW1lKCkpLCBtb2RpZnlUaW1lLnZhbHVlT3IoV2FsbFRpbWUoKSkgfTsKKyAgICByZXR1cm4geyBj
cmVhdGVUaW1lLnZhbHVlX29yKFdhbGxUaW1lKCkpLCBtb2RpZnlUaW1lLnZhbHVlX29yKFdhbGxU
aW1lKCkpIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5k
ZXggNWEzZDkyOTRiMTRkOWRmMWZhNjk1NzJkYWYzYjJmNGM2YzY1ODkxZC4uODk3OWIxNDM0NDRh
ZGMxYjUwZmNiOGU2ZTkxNjhmODc0MmRmZDkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENv
Y29hLm1tCkBAIC02NiwxNyArNjYsMTcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlLCBPcHRpb25hbDxXb3JrUXVldWU6OlFPUz4KICAgICAg
ICAgdW5saW5rKHBhdGguZGF0YSgpKTsKICAgICAgICAgb2ZsYWcgPSBPX1JEV1IgfCBPX0NSRUFU
IHwgT19OT05CTE9DSzsKICAgICAgICAgbW9kZSA9IFNfSVJVU1IgfCBTX0lXVVNSOwotICAgICAg
ICBkaXNwYXRjaFFPUyA9IHFvcy52YWx1ZU9yKFdvcmtRdWV1ZTo6UU9TOjpCYWNrZ3JvdW5kKTsK
KyAgICAgICAgZGlzcGF0Y2hRT1MgPSBxb3MudmFsdWVfb3IoV29ya1F1ZXVlOjpRT1M6OkJhY2tn
cm91bmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OldyaXRlOgogICAgICAgICBv
ZmxhZyA9IE9fV1JPTkxZIHwgT19OT05CTE9DSzsKICAgICAgICAgbW9kZSA9IFNfSVJVU1IgfCBT
X0lXVVNSOwotICAgICAgICBkaXNwYXRjaFFPUyA9IHFvcy52YWx1ZU9yKFdvcmtRdWV1ZTo6UU9T
OjpCYWNrZ3JvdW5kKTsKKyAgICAgICAgZGlzcGF0Y2hRT1MgPSBxb3MudmFsdWVfb3IoV29ya1F1
ZXVlOjpRT1M6OkJhY2tncm91bmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OlJl
YWQ6CiAgICAgICAgIG9mbGFnID0gT19SRE9OTFkgfCBPX05PTkJMT0NLOwogICAgICAgICBtb2Rl
ID0gMDsKLSAgICAgICAgZGlzcGF0Y2hRT1MgPSBxb3MudmFsdWVPcihXb3JrUXVldWU6OlFPUzo6
RGVmYXVsdCk7CisgICAgICAgIGRpc3BhdGNoUU9TID0gcW9zLnZhbHVlX29yKFdvcmtRdWV1ZTo6
UU9TOjpEZWZhdWx0KTsKICAgICB9CiAKICAgICBpbnQgZmQgPSA6Om9wZW4ocGF0aC5kYXRhKCks
IG9mbGFnLCBtb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCAyMjY1YWUxZDE4MTVlZDlkZTYzZGU1MWEy
ZTVkNzNiOTNhOTlkMTA0Li41OGRkM2U3MzMyY2IwOTc4YWQ5NmNiNmRjYjlhYzBiMDY5NWU4OTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVLZXkuY3BwCkBAIC0xODAsMzcgKzE4MCwzNyBAQCBPcHRpb25hbDxLZXk+IEtleTo6
ZGVjb2RlKFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8
U3RyaW5nPiBwYXJ0aXRpb247CiAgICAgZGVjb2RlciA+PiBwYXJ0aXRpb247CiAgICAgaWYgKCFw
YXJ0aXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAga2V5Lm1fcGFydGl0aW9uID0gV1RGTW92ZSgqcGFydGl0aW9uKTsK
IAogICAgIE9wdGlvbmFsPFN0cmluZz4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAg
aWYgKCF0eXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGtleS5tX3R5cGUgPSBXVEZNb3ZlKCp0eXBlKTsKIAogICAgIE9w
dGlvbmFsPFN0cmluZz4gaWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAg
ICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtleS5tX2lkZW50aWZpZXIgPSBXVEZNb3ZlKCpp
ZGVudGlmaWVyKTsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4gcmFuZ2U7CiAgICAgZGVjb2RlciA+
PiByYW5nZTsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtleS5tX3JhbmdlID0gV1RGTW92ZSgq
cmFuZ2UpOwogCiAgICAgT3B0aW9uYWw8SGFzaFR5cGU+IGhhc2g7CiAgICAgZGVjb2RlciA+PiBo
YXNoOwogICAgIGlmICghaGFzaCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBrZXkubV9oYXNoID0gV1RGTW92ZSgqaGFzaCk7
CiAKICAgICBPcHRpb25hbDxIYXNoVHlwZT4gcGFydGl0aW9uSGFzaDsKICAgICBkZWNvZGVyID4+
IHBhcnRpdGlvbkhhc2g7CiAgICAgaWYgKCFwYXJ0aXRpb25IYXNoKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGtleS5tX3Bh
cnRpdGlvbkhhc2ggPSBXVEZNb3ZlKCpwYXJ0aXRpb25IYXNoKTsKIAogICAgIHJldHVybiB7IFdU
Rk1vdmUoa2V5KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
aAppbmRleCA4NTZjZDVkNDUwOTM2NmU1OGJmZDY1YWFmYjc1MzlmYzkwZGNkNmYxLi5lZjc2YTlh
YmJlNmRjOTg1YzdjNjA2ZmRlZTc1NDZlNWQ3ZTY1N2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAg
IGNsYXNzIFByZWxvYWRlZEVudHJ5OwogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUmVnaXN0ZXJM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgYWRkUHJlbG9h
ZGVkRW50cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE9w
dGlvbmFsPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4mJiByZXZhbGlkYXRpb25SZXF1ZXN0ID0g
V1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q+JiYgcmV2YWxpZGF0aW9uUmVxdWVzdCA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBwcmVsb2FkRW50cnkoY29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7CiAg
ICAgdm9pZCByZXRyaWV2ZUVudHJ5RnJvbVN0b3JhZ2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwg
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIHJldmFsaWRhdGVTdWJyZXNv
dXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGQwNWFlOWJkMmRiNzliMzEzNDg2YjA2MmEyNTg4ZTky
YjhhODg4NDkuLjc0Y2RiN2QxMjU0Nzc4N2QwNDFlYWRmYzg4NGFhNTg4MDQ2ODJiNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcApAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0
Y2hXcml0ZU9wZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3Bl
cmF0CiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKICAgICAgICAgYm9v
bCBzaG91bGRTdG9yZUFzQmxvYiA9IHNob3VsZFN0b3JlQm9keUFzQmxvYih3cml0ZU9wZXJhdGlv
bi5yZWNvcmQuYm9keSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IHNob3VsZFN0b3JlQXNCbG9iID8g
c3RvcmVCb2R5QXNCbG9iKHdyaXRlT3BlcmF0aW9uKSA6IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
YXV0byBibG9iID0gc2hvdWxkU3RvcmVBc0Jsb2IgPyBzdG9yZUJvZHlBc0Jsb2Iod3JpdGVPcGVy
YXRpb24pIDogc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGF1dG8gcmVjb3JkRGF0YSA9IGVuY29k
ZVJlY29yZCh3cml0ZU9wZXJhdGlvbi5yZWNvcmQsIGJsb2IpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0Vu
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwCmluZGV4IGZiYzVkMDJjMmE4NTkyMmQ1ZmMyNjNkZGM1ODI5
OTJhZDBlMzk1ZmUuLmRmNGYxNjgxMGY5MzE0YThhZGEzMDBkNDA4MTdkYzc1YTJiNmZkODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3VicmVzb3VyY2VzRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC01OSwyNSArNTksMjUg
QEAgT3B0aW9uYWw8U3VicmVzb3VyY2VJbmZvPiBTdWJyZXNvdXJjZUluZm86OmRlY29kZShXVEY6
OlBlcnNpc3RlbmNlOjpEZWNvZGVyJiBkZWMKICAgICBPcHRpb25hbDxLZXk+IGtleTsKICAgICBk
ZWNvZGVyID4+IGtleTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1fa2V5ID0gV1RGTW92
ZSgqa2V5KTsKIAogICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBsYXN0U2VlbjsKICAgICBkZWNvZGVy
ID4+IGxhc3RTZWVuOwogICAgIGlmICghbGFzdFNlZW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaW5mby5tX2xhc3RTZWVu
ID0gV1RGTW92ZSgqbGFzdFNlZW4pOwogCiAgICAgT3B0aW9uYWw8V2FsbFRpbWU+IGZpcnN0U2Vl
bjsKICAgICBkZWNvZGVyID4+IGZpcnN0U2VlbjsKICAgICBpZiAoIWZpcnN0U2VlbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpbmZvLm1fZmlyc3RTZWVuID0gV1RGTW92ZSgqZmlyc3RTZWVuKTsKIAogICAgIE9wdGlvbmFs
PGJvb2w+IGlzVHJhbnNpZW50OwogICAgIGRlY29kZXIgPj4gaXNUcmFuc2llbnQ7CiAgICAgaWYg
KCFpc1RyYW5zaWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZvLm1faXNUcmFuc2llbnQgPSBXVEZNb3ZlKCppc1Ry
YW5zaWVudCk7CiAKICAgICBpZiAoaW5mby5tX2lzVHJhbnNpZW50KQpAQCAtODYsMjUgKzg2LDI1
IEBAIE9wdGlvbmFsPFN1YnJlc291cmNlSW5mbz4gU3VicmVzb3VyY2VJbmZvOjpkZWNvZGUoV1RG
OjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYgZGVjCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNTYW1lU2l0
ZTsKICAgICBkZWNvZGVyID4+IGlzU2FtZVNpdGU7CiAgICAgaWYgKCFpc1NhbWVTaXRlKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGluZm8ubV9pc1NhbWVTaXRlID0gV1RGTW92ZSgqaXNTYW1lU2l0ZSk7CiAKICAgICBPcHRp
b25hbDxVUkw+IGZpcnN0UGFydHlGb3JDb29raWVzOwogICAgIGRlY29kZXIgPj4gZmlyc3RQYXJ0
eUZvckNvb2tpZXM7CiAgICAgaWYgKCFmaXJzdFBhcnR5Rm9yQ29va2llcykKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbmZv
Lm1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBXVEZNb3ZlKCpmaXJzdFBhcnR5Rm9yQ29va2llcyk7
CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpIVFRQSGVhZGVyTWFwPiByZXF1ZXN0SGVhZGVyczsK
ICAgICBkZWNvZGVyID4+IHJlcXVlc3RIZWFkZXJzOwogICAgIGlmICghcmVxdWVzdEhlYWRlcnMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaW5mby5tX3JlcXVlc3RIZWFkZXJzID0gV1RGTW92ZSgqcmVxdWVzdEhlYWRlcnMp
OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHk+IHByaW9yaXR5
OwogICAgIGRlY29kZXIgPj4gcHJpb3JpdHk7CiAgICAgaWYgKCFwcmlvcml0eSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
bmZvLm1fcHJpb3JpdHkgPSBXVEZNb3ZlKCpwcmlvcml0eSk7CiAgICAgCiAgICAgcmV0dXJuIHsg
V1RGTW92ZShpbmZvKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IGU5ZmRmMzU3ZDY0Zjg5MTZi
MzVlNWUwMDQ2OWI5OTc1ODBkYjNhYmQuLjJjOTMxZWExZDMzZjhmMzQxN2EyYTVlZmJmNDNlNzdm
MjY3ZDg0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9O
ZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza0N1cmw6OnJlc3RhcnRXaXRoQ3JlZGVudGlhbChjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpbwogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjphcHBlbmRDb29raWVI
ZWFkZXIoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGF1dG8gaW5j
bHVkZVNlY3VyZUNvb2tpZXMgPSByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJ
bmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vOwotICAg
IGF1dG8gY29va2llSGVhZGVyRmllbGQgPSBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIFdlYkNvcmU6OlNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0
LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFza0lUUDo6WWVzLCBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZzo6Tm8pLmZpcnN0OworICAgIGF1dG8gY29va2llSGVhZGVyRmllbGQgPSBtX3Nlc3Np
b24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFdlYkNvcmU6OlNhbWVTaXRlSW5mbzo6
Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzLCBXZWJDb3JlOjpTaG91
bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZzo6Tm8pLmZpcnN0OwogICAgIGlmICghY29v
a2llSGVhZGVyRmllbGQuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6Q29va2llLCBjb29raWVIZWFkZXJGaWVsZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAppbmRleCAyNGRh
Mzg4NzljYjA0MjZlMTlmNGZiYzcxZGE5MmU4MzE0ZmZjYjY0Li5hOGJlMmYzZDM1ZTBkZDcyYjI0
MWM3ZTNkOTU2NDE3MzljYmUwY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvZ2xpYi9ETlNDYWNoZS5jcHAKQEAgLTY4LDEyICs2OCwxMiBAQCBPcHRpb25hbDxWZWN0b3I8
R1JlZlB0cjxHSW5ldEFkZHJlc3M+Pj4gRE5TQ2FjaGU6Omxvb2t1cChjb25zdCBDU3RyaW5nJiBo
b3N0LCBUeQogICAgIGF1dG8mIG1hcCA9IG1hcEZvclR5cGUodHlwZSk7CiAgICAgYXV0byBpdCA9
IG1hcC5maW5kKGhvc3QpOwogICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
JiByZXNwb25zZSA9IGl0LT52YWx1ZTsKICAgICBpZiAocmVzcG9uc2UuZXhwaXJhdGlvblRpbWUg
PD0gTW9ub3RvbmljVGltZTo6bm93KCkpIHsKICAgICAgICAgbWFwLnJlbW92ZShpdCk7Ci0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHJlc3BvbnNlLmFkZHJlc3NMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3Bw
CmluZGV4IDIyODJjYjU1OGUyNDE5YjhjMWUzYTdjNGUzMDU4YjYzZjVmYWM1OTIuLjVmOTY2OTlj
NTc4M2NmMWQyY2JjMjhhM2Q0ZjllNTRiZmQ4MTJhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNsZWFyUmVxdWVzdCgp
CiAKICAgICBzdG9wVGltZW91dCgpOwogICAgIG1fcGVuZGluZ1Jlc3VsdCA9IG51bGxwdHI7Ci0g
ICAgbV9wZW5kaW5nRGF0YVVSTFJlc3VsdCA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BlbmRpbmdE
YXRhVVJMUmVzdWx0ID0gc3RkOjpudWxsb3B0OwogICAgIG1fZmlsZSA9IG51bGxwdHI7CiAgICAg
bV9pbnB1dFN0cmVhbSA9IG51bGxwdHI7CiAgICAgbV9tdWx0aXBhcnRJbnB1dFN0cmVhbSA9IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVyLmgKaW5kZXgg
NWVmZDMyNmViZmZhMTNiMjMwNTZiY2E0MTVjN2NhNjZiMDE1ZDY5Mi4uZDI4YTAzMWE4NTNlNDc5
MDA3OThkMTk3OTA0OGE0ZmQzYWNlYzc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXIuaApAQCAtNTcsNyArNTcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHZvaWQ+IHN0cnVjdCBBcmd1bWVudENvZGVyIHsKICAgICAgICAgICAgIFQgdDsK
ICAgICAgICAgICAgIGlmIChUOjpkZWNvZGUoZGVjb2RlciwgdCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFdURk1vdmUodCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApAQCAtODgs
NyArODgsNyBAQCBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfYXJpdGhtZXRpY192PFQ+Pj4gewogICAgICAgICBUIHJlc3VsdDsKICAgICAg
ICAgaWYgKGRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KCZyZXN1bHQpLCBzaXplb2YoVCksIGFsaWdub2YoVCkpKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9OwogCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RydWN0IEFy
Z3VtZW50Q29kZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2VudW1fdjxU
Pj4+IHsKICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgaWYgKHZhbHVlICYmIFdU
Rjo6aXNWYWxpZEVudW08VD4oKnZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUPigqdmFsdWUpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBiNjI5MzllNmJhY2MyZmViNGEzNTEzZGFkMjk3
ZTk5YWZjMWMzMzFmLi42YTg1NmFlZmY0MzRmNDAzNjg2YjgxYjdkNGE0OWMzNGYyYzhmYTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxXYWxsVGltZT4gQXJndW1l
bnRDb2RlcjxXYWxsVGltZT46OmRlY29kZShEZWNvZGVyJiBkCiAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB0aW1lOwogICAgIGRlY29kZXIgPj4gdGltZTsKICAgICBpZiAoIXRpbWUpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygqdGltZSk7CiB9CiAKQEAgLTEzOSwxMiArMTM5
LDEyIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U3RyaW5nPiBkZWNvZGVTdHJpbmdUZXh0KERl
Y29kZXImIGRlY29kZXIsIHVpbnQzMl90IGxlbmd0CiB7CiAgICAgLy8gQmVmb3JlIGFsbG9jYXRp
bmcgdGhlIHN0cmluZywgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIgYnVmZmVyIGlzIGJpZyBl
bm91Z2guCiAgICAgaWYgKCFkZWNvZGVyLmJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48Q2hh
cmFjdGVyVHlwZT4obGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXI7
CiAgICAgU3RyaW5nIHN0cmluZyA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgs
IGJ1ZmZlcik7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihidWZmZXIpLCBsZW5ndGggKiBzaXplb2YoQ2hhcmFjdGVyVHlw
ZSksIGFsaWdub2YoQ2hhcmFjdGVyVHlwZSkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiBzdHJpbmc7
CiB9CkBAIC0xNTMsNyArMTUzLDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIE9wdGlvbmFsPFN0cmlu
Zz4gQXJndW1lbnRDb2RlcjxTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKIHsKICAgICB1
aW50MzJfdCBsZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIGlmIChsZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG51bGwgc3RyaW5nLgpAQCAtMTYyLDcgKzE2Miw3
IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBPcHRpb25hbDxTdHJpbmc+IEFyZ3VtZW50Q29kZXI8U3Ry
aW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgCiAgICAgYm9vbCBpczhCaXQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpczhCaXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmIChpczhCaXQpCiAg
ICAgICAgIHJldHVybiBkZWNvZGVTdHJpbmdUZXh0PExDaGFyPihkZWNvZGVyLCBsZW5ndGgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggMzdlZjRk
YTczODNhM2NmYjVhNGViOGEwYzdhMmY2OWMzYjRkMjA2NS4uYTZmZTU5MDBkZDg4NjY2NzQwMGRl
YzgyOTgxOTYyYWI2NjAwZDg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1
bWVudENvZGVycy5oCkBAIC02OSw3ICs2OSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBFeHRlbnQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVuCiAg
ICAgICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKCk7CiAgICAgICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKEV4dGVudCAq
IHNpemVvZihUKSwgYWxpZ25vZihUKSk7CiAgICAgICAgIGlmICghZGF0YSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VCo+KGRhdGEpLCBFeHRlbnQpOwogICAgIH0KIH07CkBAIC04OCwxNyArODgsMTcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8QXJyYXlSZWZlcmVuY2U8VCwgYXJy
YXlSZWZlcmVuY2VEeW5hbWkKICAgICB7CiAgICAgICAgIHVpbnQ2NF90IHNpemU7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCFzaXpl
KQogICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOwogCiAgICAgICAgIGF1
dG8gZGF0YVNpemUgPSBDaGVja2VkU2l6ZSB7IHNpemUgfSAqIHNpemVvZihUKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKGRhdGFTaXplLmhhc092ZXJmbG93ZWQoKSkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICBjb25zdCB1aW50OF90KiBkYXRhID0gZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aFJlZmVy
ZW5jZShkYXRhU2l6ZS51bnNhZmVHZXQoKSwgYWxpZ25vZihUKSk7CiAgICAgICAgIGlmICghZGF0
YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gQXJyYXlSZWZlcmVuY2VUeXBlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHNpemUpKTsKICAg
ICB9CiB9OwpAQCAtMTI2LDEwICsxMjYsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8T3B0aW9uU2V0PFQ+PiB7CiAgICAgICAgIE9wdGlvbmFsPHR5cGVuYW1l
IE9wdGlvblNldDxUPjo6U3RvcmFnZVR5cGU+IHZhbHVlOwogICAgICAgICBkZWNvZGVyID4+IHZh
bHVlOwogICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gb3B0aW9u
U2V0ID0gT3B0aW9uU2V0PFQ+Ojpmcm9tUmF3KCp2YWx1ZSk7CiAgICAgICAgIGlmICghV1RGOjpp
c1ZhbGlkT3B0aW9uU2V0KG9wdGlvblNldCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIG9w
dGlvblNldDsKICAgICB9CiB9OwpAQCAtMTU0LDcgKzE1NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPE9wdGlvbmFsPFQ+PiB7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpIHsKLSAgICAgICAgICAgIG9wdGlv
bmFsID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgb3B0aW9uYWwgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xNzEsMTUgKzE3MSwx
NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxPcHRpb25hbDxU
Pj4gewogICAgICAgICBPcHRpb25hbDxib29sPiBpc0VuZ2FnZWQ7CiAgICAgICAgIGRlY29kZXIg
Pj4gaXNFbmdhZ2VkOwogICAgICAgICBpZiAoIWlzRW5nYWdlZCkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBpZiAoKmlzRW5nYWdlZCkgewogICAgICAgICAgICAgT3B0aW9uYWw8VD4gdmFsdWU7CiAgICAg
ICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8T3B0aW9uYWw8VD4+KFdU
Rk1vdmUoKnZhbHVlKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPE9wdGlv
bmFsPFQ+PihPcHRpb25hbDxUPihXVEY6Om51bGxvcHQpKTsKKyAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPE9wdGlvbmFsPFQ+PihPcHRpb25hbDxUPihzdGQ6Om51bGxvcHQpKTsKICAgICB9CiB9Owog
CkBAIC0yMTksMTIgKzIxOSwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxCb3g8VD4+IHsKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNFbmdhZ2VkOwogICAg
ICAgICBkZWNvZGVyID4+IGlzRW5nYWdlZDsKICAgICAgICAgaWYgKCFpc0VuZ2FnZWQpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgaWYgKCppc0VuZ2FnZWQpIHsKICAgICAgICAgICAgIE9wdGlvbmFsPFQ+
IHZhbHVlOwogICAgICAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKICAgICAgICAgICAgIGlmICgh
dmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPEJv
eDxUPj4oQm94PFQ+OjpjcmVhdGUoV1RGTW92ZSgqdmFsdWUpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPEJveDxUPj4oQm94PFQ+KG51bGxwdHIpKTsKQEAgLTI1NywxMiAr
MjU3LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPHN0ZDo6cGFpcjxULCBVPj4gewogICAgICAgICBPcHRpb25hbDxUPiBmaXJzdDsKICAg
ICAgICAgZGVjb2RlciA+PiBmaXJzdDsKICAgICAgICAgaWYgKCFmaXJzdCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICAKICAgICAgICAgT3B0aW9uYWw8VT4gc2Vjb25kOwogICAgICAgICBkZWNvZGVyID4+
IHNlY29uZDsKICAgICAgICAgaWYgKCFzZWNvbmQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAg
ICAgIHJldHVybiB7eyBXVEZNb3ZlKCpmaXJzdCksIFdURk1vdmUoKnNlY29uZCkgfX07CiAgICAg
fQpAQCAtMzA1LDExICszMDUsMTEgQEAgc3RydWN0IFR1cGxlRGVjb2RlckltcGwgewogICAgICAg
ICBPcHRpb25hbDxUeXBlPiBvcHRpb25hbDsKICAgICAgICAgZGVjb2RlciA+PiBvcHRpb25hbDsK
ICAgICAgICAgaWYgKCFvcHRpb25hbCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHN0
ZDo6dHVwbGU8VHlwZXMuLi4+PiBzdWJUdXBsZSA9IFR1cGxlRGVjb2RlckltcGw8VHlwZXMuLi4+
OjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmICghc3ViVHVwbGUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICByZXR1cm4gdHVwbGVGcm9tVHVwbGVBbmRPYmplY3QoV1RGTW92ZSgqb3B0aW9uYWwp
LCBXVEZNb3ZlKCpzdWJUdXBsZSkpOwogICAgIH0KQEAgLTMyMiw3ICszMjIsNyBAQCBzdHJ1Y3Qg
VHVwbGVEZWNvZGVySW1wbDxUeXBlPiB7CiAgICAgICAgIE9wdGlvbmFsPFR5cGU+IG9wdGlvbmFs
OwogICAgICAgICBkZWNvZGVyID4+IG9wdGlvbmFsOwogICAgICAgICBpZiAoIW9wdGlvbmFsKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZSgqb3B0aW9u
YWwpKTsKICAgICB9CiB9OwpAQCAtNDAzLDE0ICs0MDMsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVf
dCBtaW4KICAgICB7CiAgICAgICAgIHVpbnQ2NF90IHNpemU7CiAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc2l6ZSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+IHZlY3RvcjsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgIE9wdGlvbmFsPFQ+
IGVsZW1lbnQ7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGVsZW1lbnQ7CiAgICAgICAgICAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgdmVjdG9yLmFwcGVu
ZChXVEZNb3ZlKCplbGVtZW50KSk7CiAgICAgICAgIH0KICAgICAgICAgdmVjdG9yLnNocmlua1Rv
Rml0KCk7CkBAIC00NTcsMTAgKzQ1NywxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbgogICAg
IHsKICAgICAgICAgdWludDY0X3QgZGVjb2RlZFNpemU7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGVjb2RlZFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKCFpc0luQm91bmRz
PHNpemVfdD4oZGVjb2RlZFNpemUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byBzaXplID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihkZWNvZGVkU2l6ZSk7CiAKQEAgLTQ2OCwxMyArNDY4LDEzIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3Zl
cmZsb3dIYW5kbGVyLCBzaXplX3QgbWluCiAgICAgICAgIC8vIG9uZSBmZWxsIHN3b29wLiBCZWZv
cmUgYWxsb2NhdGluZyB3ZSBtdXN0IGhvd2V2ZXIgbWFrZSBzdXJlIHRoYXQgdGhlIGRlY29kZXIg
YnVmZmVyCiAgICAgICAgIC8vIGlzIGJpZyBlbm91Z2guCiAgICAgICAgIGlmICghZGVjb2Rlci5i
dWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPFQ+KHNpemUpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IAogICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWlu
Q2FwYWNpdHk+IHZlY3RvcjsKICAgICAgICAgdmVjdG9yLmdyb3coc2l6ZSk7CiAKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPih2ZWN0b3IuZGF0YSgpKSwgc2l6ZSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICByZXR1cm4gdmVjdG9yOwogICAgIH0KQEAgLTQ5NiwyNiArNDk2LDI2
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpCiAgICAgewogICAgICAgICB1aW50MzJfdCBoYXNo
TWFwU2l6ZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNoTWFwU2l6ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICBIYXNoTWFwVHlwZSBoYXNoTWFwOwogICAgICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgaGFzaE1hcFNpemU7ICsraSkgewogICAgICAgICAgICAgT3B0aW9uYWw8
S2V5QXJnPiBrZXk7CiAgICAgICAgICAgICBkZWNvZGVyID4+IGtleTsKICAgICAgICAgICAgIGlm
IChVTkxJS0VMWSgha2V5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIE9wdGlv
bmFsPE1hcHBlZEFyZz4gdmFsdWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
ICAgICAgICBpZiAoVU5MSUtFTFkoIUhhc2hNYXBUeXBlOjppc1ZhbGlkS2V5KCprZXkpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaGFzaE1hcC5hZGQo
V1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqdmFsdWUpKS5pc05ld0VudHJ5KSkgewogICAgICAgICAg
ICAgICAgIC8vIFRoZSBoYXNoIG1hcCBhbHJlYWR5IGhhcyB0aGUgc3BlY2lmaWVkIGtleSwgYmFp
bC4KLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTU4
LDIxICs1NTgsMjEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJn
LCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIEhhc2gKICAgICB7CiAgICAgICAgIHVp
bnQ2NF90IGhhc2hTZXRTaXplOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc2hTZXRT
aXplKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIEhhc2hTZXRUeXBlIGhhc2hTZXQ7CiAgICAgICAg
IGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBoYXNoU2V0U2l6ZTsgKytpKSB7CiAgICAgICAgICAg
ICBPcHRpb25hbDxLZXlBcmc+IGtleTsKICAgICAgICAgICAgIGRlY29kZXIgPj4ga2V5OwogICAg
ICAgICAgICAgaWYgKCFrZXkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoIUhhc2hTZXRUeXBlOjppc1ZhbGlkVmFsdWUoKmtleSkpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFoYXNoU2V0LmFkZChXVEZNb3ZlKCpr
ZXkpKS5pc05ld0VudHJ5KSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBoYXNoIHNldCBhbHJl
YWR5IGhhcyB0aGUgc3BlY2lmaWVkIGtleSwgYmFpbC4KLSAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjQwLDEzICs2NDAsMTMgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBFcnJvclR5cGU+IHN0cnVjdCBBcmd1bWVudENvZGVy
PEV4cGVjdGVkPFYKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzVmFsdWU7CiAgICAgICAgIGRl
Y29kZXIgPj4gaGFzVmFsdWU7CiAgICAgICAgIGlmICghaGFzVmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgCiAgICAgICAgIGlmICgqaGFzVmFsdWUpIHsKICAgICAgICAgICAgIE9wdGlvbmFsPFZh
bHVlVHlwZT4gdmFsdWU7CiAgICAgICAgICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgICAgICAg
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEV4cGVjdGVkPFZhbHVlVHlwZSwgRXJyb3JUeXBlPiBleHBlY3RlZChXVEZNb3ZlKCp2YWx1
ZSkpOwogICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkOwpAQCAtNjU0LDcgKzY1NCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXJyb3JUeXBlPiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxFeHBlY3RlZDxWCiAgICAgICAgIE9wdGlvbmFsPEVycm9yVHlwZT4gZXJyb3I7
CiAgICAgICAgIGRlY29kZXIgPj4gZXJyb3I7CiAgICAgICAgIGlmICghZXJyb3IpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIHsgbWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZXJyb3IpKSB9Owog
ICAgIH0KIH07CkBAIC02NzYsNyArNjc2LDcgQEAgc3RydWN0IFZhcmlhbnRDb2RlciB7CiAgICAg
ICAgICAgICBPcHRpb25hbDx0eXBlbmFtZSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmU8aW5kZXgs
IFdURjo6VmFyaWFudDxUeXBlcy4uLj4+Ojp0eXBlPiBvcHRpb25hbDsKICAgICAgICAgICAgIGRl
Y29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgICAgICBpZiAoIW9wdGlvbmFsKQotICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiB7IFdURk1vdmUoKm9wdGlvbmFsKSB9OwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBWYXJpYW50Q29kZXI8aW5kZXggLSAxLCBUeXBlcy4uLj46
OmRlY29kZShkZWNvZGVyLCBpKTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCBzdHJ1Y3QgVmFyaWFudENv
ZGVyPDAsIFR5cGVzLi4uPiB7CiAgICAgICAgIE9wdGlvbmFsPHR5cGVuYW1lIFdURjo6dmFyaWFu
dF9hbHRlcm5hdGl2ZTwwLCBXVEY6OlZhcmlhbnQ8VHlwZXMuLi4+Pjo6dHlwZT4gb3B0aW9uYWw7
CiAgICAgICAgIGRlY29kZXIgPj4gb3B0aW9uYWw7CiAgICAgICAgIGlmICghb3B0aW9uYWwpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSgqb3B0aW9uYWwpIH07CiAgICAgfQog
fTsKQEAgLTcxNSw3ICs3MTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V1RGOjpWYXJpYW50PFR5cGVzLi4uPj4gewogICAgICAgICBPcHRpb25h
bDx1bnNpZ25lZD4gaTsKICAgICAgICAgZGVjb2RlciA+PiBpOwogICAgICAgICBpZiAoIWkpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIFZhcmlhbnRDb2RlcjxzaXplb2YuLi4oVHlwZXMpIC0g
MSwgVHlwZXMuLi4+OjpkZWNvZGUoZGVjb2RlciwgKmkpOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EZWNvZGVyLmgKaW5kZXggOTlmODFjMzQxOThhOGUyNTExNjBlMjNkZTAyOThj
MmQwNzQ1MmEyNy4uN2ViY2FlZjNmYzIzNDE1YzU0MjkxYTNmYTY2ZmY2OWUwNGU2ZTc3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RlY29kZXIuaApAQCAtMTQ1LDcgKzE0NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgT3B0aW9uYWw8VD4gcmVzdWx0OwogICAgICAgICBEZWNvZGVyIGRlY29kZXIo
c291cmNlLCBudW1iZXJPZkJ5dGVzLCBDb25zdHJ1Y3RXaXRob3V0SGVhZGVyKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGRlY29kZXIgPj4g
cmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Zvcm1EYXRhUmVmZXJlbmNlLmgKaW5kZXggMTE2MTU3ZDE3YjZjMDBjMzQ2ZjNkOGQy
ODU1NTVhMmM3YmVlOWE3Yi4uZWM2OGRmYWRkOWI3ZTRkNzhhZDc2M2ZlNjU4NjEzNTk0MDA4MjM1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRm9ybURhdGFSZWZlcmVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Gb3JtRGF0YVJlZmVyZW5jZS5o
CkBAIC03MiwxOCArNzIsMTggQEAgcHVibGljOgogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNG
b3JtRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNGb3JtRGF0YTsKICAgICAgICAgaWYgKCFo
YXNGb3JtRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpZiAoIWhhc0Zvcm1EYXRhLnZhbHVlKCkp
CiAgICAgICAgICAgICByZXR1cm4gRm9ybURhdGFSZWZlcmVuY2UgeyB9OwogCiAgICAgICAgIGF1
dG8gZm9ybURhdGEgPSBXZWJDb3JlOjpGb3JtRGF0YTo6ZGVjb2RlKGRlY29kZXIpOwogICAgICAg
ICBpZiAoIWZvcm1EYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAg
ICAgICAgIGRlY29kZXIgPj4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAgICAgIGlmICgh
c2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSgqc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRp
bmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5oCmluZGV4IDhj
MjMxNzczMDUxZDQ0YjJkYjhiZTBjYzkzZjAzYjVlZjA0YjI4NzIuLjJkY2Q5NWE3ZGE2NGZlNTNk
ZWJhZTU5YWVlN2M3ZTZkZTE1ODUzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0pTSVBDQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pT
SVBDQmluZGluZy5oCkBAIC0xMzMsNyArMTMzLDcgQEAgT3B0aW9uYWw8SlNDOjpKU1ZhbHVlPiBw
dXRKU1ZhbHVlRm9yRGVjb2RlQXJndW1lbnRJbkFycmF5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGcK
ICAgICBPcHRpb25hbDxUPiB2YWx1ZTsKICAgICBkZWNvZGVyID4+IHZhbHVlOwogICAgIGlmICgh
dmFsdWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBhdXRvIGpzVmFsdWUgPSBqc1ZhbHVlRm9yRGVjb2RlZEFyZ3VtZW50
VmFsdWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKCp2YWx1ZSkpOwogICAgIGlmIChqc1ZhbHVlLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRl
eCBiZDcyODJiZDVmMTFmNmFlYWQ1ODg1N2Y3NzI2YzE1OTUxNjk4ZGMwLi4wZTVhZDNkOTQ4MGZl
ZTkzMDU0YmQxY2U0NTdkMDI4Mzk5YzRmZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvTWVzc2FnZVNlbmRlci5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbGlzdGVuZXJJRDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2Uo
VW5pcXVlUmVmPEVuY29kZXI+JiYsIE9wdGlvblNldDxTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3Rk
OjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+
JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVS
ZWY8RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiA9IHN0
ZDo6bnVsbG9wdCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAKaW5kZXggNTAwZjgzOWRmYWFlOTI5N2Y0ZGM2M2Rj
NjYzMDU4NzdiMjJkZjJmOC4uMDYxNjAxZjcyMTAyOTM0NjBmMjk2NDQ4ZjNlNDE4MDhiM2U4ZmRj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5j
cHAKQEAgLTUwLDcgKzUwLDcgQEAgT3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVm
ZmVyQ29weTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGRhdGEuc2l6ZSgpKQogICAgICAgICBidWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5o
CmluZGV4IDBkYmE4NzVlNzFhYThiYWNlOWVkOWI1OGE1YzEzMDk1NjM2NzA2NDYuLmQ4MWU1NDZj
YjYyYmZiNWNhMDZhN2EwMGFjNjA4YzY5Yzg0Y2UyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1N0cmVhbUNsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1DbGllbnRDb25uZWN0aW9uLmgKQEAgLTE1OSw3ICsxNTks
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmRTeW5jU3Ry
ZWFtKFQmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiByZXBseSwgVGltZW91dCB0aW1lb3V0
LCBTcGFuJiBzcGFuKQogewogICAgIC8vIEluIHRoaXMgZnVuY3Rpb24sIFNlbmRTeW5jUmVzdWx0
IHsgfSBtZWFucyBlcnJvciBoYXBwZW5lZCBhbmQgY2FsbGVyIHNob3VsZCBzdG9wIHByb2Nlc3Np
bmcuCi0gICAgLy8gV1RGOjpudWxsb3B0IG1lYW5zIHdlIGNvdWxkbid0IHNlbmQgdGhyb3VnaCB0
aGUgc3RyZWFtLCBzbyB0cnkgc2VuZGluZyBvdXQgb2Ygc3RyZWFtLgorICAgIC8vIHN0ZDo6bnVs
bG9wdCBtZWFucyB3ZSBjb3VsZG4ndCBzZW5kIHRocm91Z2ggdGhlIHN0cmVhbSwgc28gdHJ5IHNl
bmRpbmcgb3V0IG9mIHN0cmVhbS4KICAgICBhdXRvIHN5bmNSZXF1ZXN0SUQgPSBtX2Nvbm5lY3Rp
b24ubWFrZVN5bmNSZXF1ZXN0SUQoKTsKICAgICBpZiAoIW1fY29ubmVjdGlvbi5wdXNoUGVuZGlu
Z1N5bmNSZXF1ZXN0SUQoc3luY1JlcXVlc3RJRCkpCiAgICAgICAgIHJldHVybiBTZW5kU3luY1Jl
c3VsdCB7IH07CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8U3RyZWFtQ2xpZW50Q29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQ+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeVNlbmQKICAg
ICBhdXRvIHJlc3VsdCA9IFsmXSgpIC0+IE9wdGlvbmFsPFNlbmRTeW5jUmVzdWx0PiB7CiAgICAg
ICAgIFN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyIG1lc3NhZ2VFbmNvZGVyIHsgVDo6bmFtZSgpLCBz
cGFuLmRhdGEsIHNwYW4uc2l6ZSB9OwogICAgICAgICBpZiAoIShtZXNzYWdlRW5jb2RlciA8PCBz
eW5jUmVxdWVzdElEIDw8IG1lc3NhZ2UuYXJndW1lbnRzKCkpKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGF1dG8gd2FrZXVwUmVzdWx0ID0gcmVsZWFzZShtZXNzYWdlRW5jb2Rlci5zaXplKCkpOwogCiAg
ICAgICAgIGlmICh3YWtldXBSZXN1bHQgPT0gU3RyZWFtQ2xpZW50Q29ubmVjdGlvbjo6V2FrZVVw
U2VydmVyOjpZZXMpCkBAIC0yNTAsNyArMjUwLDcgQEAgaW5saW5lIE9wdGlvbmFsPFN0cmVhbUNs
aWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVpcmUK
ICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgY2xpZW50T2Zmc2V0IDwgY2xpZW50TGltaXQg
d2UgY2FuIGFycml2ZSB0byBhIHNpdHVhdGlvbiB3aGVyZQogICAgICAgICAvLyAwIDwgcmVzdWx0
LnNpemUgPCBtaW5pbXVtTWVzc2FnZVNpemUuCiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogaW5saW5lIE9wdGlvbmFsPFN0cmVh
bUNsaWVudENvbm5lY3Rpb246OlNwYW4+IFN0cmVhbUNsaWVudENvbm5lY3Rpb246OnRyeUFjcXVp
cmVBbGwoVGltZW91dCB0aW1lb3V0KQpAQCAtMjczLDcgKzI3Myw3IEBAIGlubGluZSBPcHRpb25h
bDxTdHJlYW1DbGllbnRDb25uZWN0aW9uOjpTcGFuPiBTdHJlYW1DbGllbnRDb25uZWN0aW9uOjp0
cnlBY3F1aXJlCiAKICAgICAgICAgbV9idWZmZXIuY2xpZW50V2FpdFNlbWFwaG9yZSgpLndhaXRG
b3IodGltZW91dCk7CiAgICAgICAgIGlmICh0aW1lb3V0LmRpZFRpbWVPdXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KICAgICAvLyBJbiBjYXNlIHRoZSB0cmFuc2FjdGlvbiB3YXMgY2FuY2VsbGVkLCB1
bmRvIHRoZSB0cmFuc2FjdGlvbiBtYXJrZXIuCiAgICAgc2hhcmVkQ2xpZW50TGltaXQoKS5zdG9y
ZShzdGF0aWNfY2FzdDxDbGllbnRMaW1pdD4oMCksIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlv
bkJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9u
QnVmZmVyLmNwcAppbmRleCBjMjFiZGM2OGY4ZmQ3NWFmY2VhODllMWQ2YjA2OWQ1Yzc4ZjRhYTBk
Li4wMjEwMmY4MjI2ZDkzNzRhNmQ2OGFiMDcyM2U5ZWViOTkzMTdiNzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uQnVmZmVyLmNwcApA
QCAtODIsMTkgKzgyLDE5IEBAIE9wdGlvbmFsPFN0cmVhbUNvbm5lY3Rpb25CdWZmZXI+IFN0cmVh
bUNvbm5lY3Rpb25CdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyCiAgICAgT3B0aW9uYWw8
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gaXBjSGFuZGxlOwogICAgIGRlY29kZXIg
Pj4gaXBjSGFuZGxlOwogICAgIGlmICghaXBjSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIE9wdGlvbmFsPFNlbWFw
aG9yZT4gc2VtYXBob3JlOwogICAgIGRlY29kZXIgPj4gc2VtYXBob3JlOwogICAgIGlmICghc2Vt
YXBob3JlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHNpemVfdCBkYXRhU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oaXBj
SGFuZGxlLT5kYXRhU2l6ZSk7CiAgICAgaWYgKGRhdGFTaXplIDwgaGVhZGVyU2l6ZSgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGlmIChkYXRhU2l6ZSA+IGhlYWRlclNpemUoKSArIG1heGltdW1TaXplKCkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
YXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS0+
aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZFdyaXRlKTsKICAg
ICBpZiAoc2hhcmVkTWVtb3J5LT5zaXplKCkgPCBkYXRhU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gU3Ry
ZWFtQ29ubmVjdGlvbkJ1ZmZlciB7IHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCBkYXRh
U2l6ZSwgIFdURk1vdmUoKnNlbWFwaG9yZSkgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAwNzU0OTZj
YjE0Mjk3OTI5ZmZiMzZiODRiMmQxOWRmNWRiODNmYmQxLi44ZDNmZmI0N2EyMGVkOWZlYzIyNDZm
MWE1NjZmZjRjMmI0MDBmYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNjMsNyArNjMsNyBAQCBPcHRpb25h
bDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlv
bkJhc2U6OnRyeUFjcXVpcgogewogICAgIFNlcnZlckxpbWl0IHNlcnZlckxpbWl0ID0gc2hhcmVk
U2VydmVyTGltaXQoKS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpOwogICAgIGlmIChz
ZXJ2ZXJMaW1pdCA9PSBTZXJ2ZXJMaW1pdDo6c2VydmVySXNTbGVlcGluZ1RhZykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGF1dG8gcmVzdWx0ID0gYWxpZ25lZFNwYW4obV9zZXJ2ZXJPZmZzZXQsIGNsYW1wZWRMaW1pdChz
ZXJ2ZXJMaW1pdCkpOwogICAgIGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkg
ewpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6
U3Bhbj4gU3RyZWFtU2VydmVyQ29ubmVjdGlvbkJhc2U6OnRyeUFjcXVpcgogICAgIH0KIAogICAg
IGlmIChyZXN1bHQuc2l6ZSA8IG1pbmltdW1NZXNzYWdlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25u
ZWN0aW9uQ29jb2EubW0KaW5kZXggMmQ5YjcxZWFlNDk2ZjYwY2I5ZGUyNzM4OWE2NGVhNWFmYjkz
NTdiYy4uNWVjOGZmMzNjYWRmOWQyZjRlNjFmNmZiYWNlMmQ3ZGJmMThhNTgxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQpA
QCAtNTk4LDcgKzU5OCw3IEBAIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBDb25uZWN0aW9u
OjppZGVudGlmaWVyKCkgY29uc3QKIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IENvbm5lY3Rpb246
OmdldEF1ZGl0VG9rZW4oKQogewogICAgIGlmICghbV94cGNDb25uZWN0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVk
aXRfdG9rZW4obV94cGNDb25uZWN0aW9uLmdldCgpLCAmYXVkaXRUb2tlbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9kYXJ3aW4vSVBDU2VtYXBob3JlRGFyd2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4u
Y3BwCmluZGV4IGEzM2U5MzJlY2I5YThlZDJmODY1YjFmZGI2MjEzMWI0ODUzZGFjNjAuLmJjMDhm
NjAxYTcxNTAwN2U1YTcwNzcwYWI4NTM5ODZkMTU5ZTliYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2Rhcndpbi9JUENTZW1hcGhvcmVEYXJ3aW4uY3BwCkBA
IC0xMDIsNyArMTAyLDcgQEAgT3B0aW9uYWw8U2VtYXBob3JlPiBTZW1hcGhvcmU6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE1hY2hTZW5kUmlnaHQgc2VuZFJpZ2h0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gT3B0aW9uYWw8U2Vt
YXBob3JlPiB7IHN0ZDo6aW5fcGxhY2UsIFdURk1vdmUoc2VuZFJpZ2h0KSB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy93aW4vSVBDU2VtYXBob3JlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwCmlu
ZGV4IDdhYmE1YzQ4NTc2NjhhZjdmMmQ1MDhhZjYyMzdkYTRhYTc2ODliNWQuLmM5ZTY1NmQyNjE2
NDUyZjQ2NWVjNDljMGFlYzI0MThiYTM1N2U2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3dpbi9JUENTZW1hcGhvcmVXaW4uY3BwCkBAIC05NSw3ICs5NSw3IEBAIE9w
dGlvbmFsPFNlbWFwaG9yZT4gU2VtYXBob3JlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBhdXRvIGhhbmRsZSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhh
bmRsZShkZWNvZGVyKTsKICAgICBpZiAoIWhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gU2VtYXBob3Jl
KCpoYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0lu
aXRpYWxpemF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ0luaXRpYWxpemF0aW9u
LmgKaW5kZXggZThiNjRjZTJmNTQwMmZhNWEwZjE2OTc2OTY4MTMzOTZlM2U2NzMzYi4uYzk5OGY5
Nzk2MWIxODQ0YTZiMGZhYmZmZGU5Y2MyMDRmNDY3NjI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9Mb2dJbml0aWFsaXphdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vTG9nSW5pdGlhbGl6YXRpb24uaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25h
bDxTdHJpbmc+ID0gV1RGOjpudWxsb3B0KTsKK3ZvaWQgaW5pdGlhbGl6ZUxvZ0NoYW5uZWxzSWZO
ZWNlc3NhcnkoT3B0aW9uYWw8U3RyaW5nPiA9IHN0ZDo6bnVsbG9wdCk7CiBTdHJpbmcgbG9nTGV2
ZWxTdHJpbmcoKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCmluZGV4IDE1YTZlN2RiMDAz
YTZhNGQyNTFjZmFiZGRiZjZjOTc5Nzk2Y2VlN2QuLjhkZjY2OGQwZTMwMzVmMDJmNDlmMmJlNmEx
ZTg3MzcwYTc2NGU5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
U2hhcmVkTWVtb3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
U2hhcmVkTWVtb3J5Q29jb2EuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0
aW9uYWw8c2l6ZV90PiBzYWZlUm91bmRQYWdlKHNpemVfdCBzaXplKQogewogICAgIHNpemVfdCBy
b3VuZGVkU2l6ZTsKICAgICBpZiAoX19idWlsdGluX2FkZF9vdmVyZmxvdyhzaXplLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFBBR0VfTUFTSyksICZyb3VuZGVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcm91bmRlZFNp
emUgJj0gfnN0YXRpY19jYXN0PHNpemVfdD4oUEFHRV9NQVNLKTsKICAgICByZXR1cm4gcm91bmRl
ZFNpemU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVk
TWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5
VW5peC5jcHAKaW5kZXggYWZmN2IwZDE4ZGE4ZTMyZjE2ZTBiNDM0Yzk4MDVjYWFlYmJkZGY4My4u
OTk4YTJhNzY3OTMwNWE0MzVmYTM1Y2MxYWVlYjcwOGYzNDY3NTU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtMjAwLDcgKzIw
MCw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6bWFwKGNvbnN0IEhhbmRs
ZSYgaGFuZGxlLCBQcm90ZWN0aW9uIHByb3RlY3RpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gaW5zdGFuY2UgPSB3cmFwTWFwKGRhdGEsIGhhbmRs
ZS5tX2F0dGFjaG1lbnQuc2l6ZSgpLCAtMSk7Ci0gICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0
b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0b3IgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgaW5zdGFuY2UtPm1faXNXcmFwcGluZ01hcCA9IGZhbHNlOwogICAgIHJl
dHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L1NoYXJlZE1lbW9yeVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9TaGFyZWRN
ZW1vcnlXaW4uY3BwCmluZGV4IDI0Y2ZkZDdlMDJkZDQ3ZTM1NDA0ZjFkYjRjYjNiZDZmY2Y3NmFh
YWQuLjE1YjllNDI1NjQyNWQ3NjhkYTRhYjk1NDk4M2FmYjZhMTY0M2E5OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL1NoYXJlZE1lbW9yeVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vU2hhcmVkTWVtb3J5V2luLmNwcApAQCAtMTQyLDE1ICsx
NDIsMTUgQEAgT3B0aW9uYWw8SEFORExFPiBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFu
ZGxlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICB1aW50NjRfdCBzb3VyY2VIYW5kbGU7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2VIYW5kbGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgdWludDMy
X3Qgc291cmNlUElEOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlUElEKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEhBTkRMRSBkdXBsaWNhdGVkSGFuZGxlOwogICAgIGlmICghZ2V0RHVwbGljYXRlZEhhbmRs
ZShyZWludGVycHJldF9jYXN0PEhBTkRMRT4oc291cmNlSGFuZGxlKSwgc291cmNlUElELCBkdXBs
aWNhdGVkSGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBkdXBsaWNhdGVkSGFuZGxlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2RmYTdiZjQxZWRiN2Iz
NjliZjE4YzU3OGFiMmQ2Yjg3YjY1ZWM3OC4uODMwZGFlZDFlZGYwNDY2NDFlOTJjM2M5MmRiMTQ2
YjlmYTU4ZmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0xMTU0LDcgKzExNTQsNyBAQCBkZWYgZ2VuZXJhdGVfanNfdmFsdWVfY29udmVyc2lvbl9mdW5j
dGlvbihyZXN1bHQsIHJlY2VpdmVycywgZnVuY3Rpb25fbmFtZSwgYXJndQogICAgIHJlc3VsdC5h
cHBlbmQoJyAgICBkZWZhdWx0OlxuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJyZWFr
O1xuJykKICAgICByZXN1bHQuYXBwZW5kKCcgICAgfVxuJykKLSAgICByZXN1bHQuYXBwZW5kKCcg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDtcbicpCisgICAgcmVzdWx0LmFwcGVuZCgnICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7XG4nKQogICAgIHJlc3VsdC5hcHBlbmQoJ31cbicpCiAKIApAQCAtMTIw
Nyw3ICsxMjA3LDcgQEAgZGVmIGdlbmVyYXRlX2pzX2FyZ3VtZW50X2Rlc2NyaXB0aW9ucyhyZWNl
aXZlcnMsIGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50c19mcm9tX20KICAgICByZXN1bHQuYXBwZW5k
KCcgICAgZGVmYXVsdDpcbicpCiAgICAgcmVzdWx0LmFwcGVuZCgnICAgICAgICBicmVhaztcbicp
CiAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cbicpCi0gICAgcmVzdWx0LmFwcGVuZCgnICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7XG4nKQorICAgIHJlc3VsdC5hcHBlbmQoJyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0O1xuJykKICAgICByZXN1bHQuYXBwZW5kKCd9XG4nKQogICAgIHJldHVybiByZXN1
bHQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC90ZXN0cy9NZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC90ZXN0cy9NZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwCmluZGV4IGNhZjc2Nzk3Mjg3
OWVhOTU2ZmY5ZGFhY2ZiYmFiNDcxMGRjYmJhYjIuLjA4NmFkOTlmYWY1MzExMTI0ZDYwZWMyODcx
OTU3NjVhYzJhY2RkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
dGVzdHMvTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L3Rlc3RzL01lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAKQEAg
LTI1Miw3ICsyNTIsNyBAQCBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JBcmd1bWVu
dHMoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNZQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4ganNWYWx1ZUZvclJl
cGx5QXJndW1lbnRzKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTWVzc2FnZU5h
bWUgbmFtZSwgRGVjb2RlciYgZGVjb2RlcikKQEAgLTI4Nyw3ICsyODcsNyBAQCBPcHRpb25hbDxK
U0M6OkpTVmFsdWU+IGpzVmFsdWVGb3JSZXBseUFyZ3VtZW50cyhKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlv
bmFsPFZlY3RvcjxBcmd1bWVudERlc2NyaXB0aW9uPj4gbWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRp
b25zKE1lc3NhZ2VOYW1lIG5hbWUpCkBAIC01ODksNyArNTg5LDcgQEAgT3B0aW9uYWw8VmVjdG9y
PEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMoTWVzc2Fn
ZU5hbWUgbmEKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxW
ZWN0b3I8QXJndW1lbnREZXNjcmlwdGlvbj4+IG1lc3NhZ2VSZXBseUFyZ3VtZW50RGVzY3JpcHRp
b25zKE1lc3NhZ2VOYW1lIG5hbWUpCkBAIC02MzksNyArNjM5LDcgQEAgT3B0aW9uYWw8VmVjdG9y
PEFyZ3VtZW50RGVzY3JpcHRpb24+PiBtZXNzYWdlUmVwbHlBcmd1bWVudERlc2NyaXB0aW9ucyhN
ZXNzYWdlTmEKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2Vj
dXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0
eU9yaWdpblJlZi5jcHAKaW5kZXggODQ3YmQ1YmU4MTY0YjlhZTM2YWM2ZjQwMTE2ZDhkOGY1MDBh
MWYyMC4uNGExN2MyN2MwYWMyOWE5ODI3ZTJkNzcxMjQ3Y2JkMWM3MThkY2E4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAg
LTc5LDUgKzc5LDUgQEAgV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdLU2Vj
dXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJp
dHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5wb3J0LnZhbHVlT3IoMCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0LnZhbHVlX29yKDApOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJl
cy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L0FwcGxlUGF5UGF5bWVudFNldHVw
RmVhdHVyZXMubW0KaW5kZXggMzM5ODEwMDJjMTAyYzVlMGJiODE4YzViNDdmNWI1YWJiNDBlMzRj
OC4uMmQ0MDhkODUxMzBiYWMzNzI2NTg2NGJiNmJjNGIxOTRjZTE0OWM3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvQXBwbGVQYXlQYXltZW50U2V0dXBGZWF0dXJl
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9BcHBsZVBheVBheW1lbnRT
ZXR1cEZlYXR1cmVzLm1tCkBAIC03Niw3ICs3Niw3IEBAIE9wdGlvbmFsPFBheW1lbnRTZXR1cEZl
YXR1cmVzPiBQYXltZW50U2V0dXBGZWF0dXJlczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
CiAKICAgICBhdXRvIHBsYXRmb3JtRmVhdHVyZXMgPSBJUEM6OmRlY29kZTxOU0FycmF5PFBLUGF5
bWVudFNldHVwRmVhdHVyZSAqPj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMuZ2V0KCkuZ2V0KCkp
OwogICAgIGlmICghcGxhdGZvcm1GZWF0dXJlcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBQYXltZW50U2V0
dXBGZWF0dXJlcyB7IFdURk1vdmUoKnBsYXRmb3JtRmVhdHVyZXMpIH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvUGF5bWVudFNldHVwQ29uZmlndXJh
dGlvbi5tbQppbmRleCAwNTg3ODk2ODQ1ZDdiN2NmMTM1MDZjOTlkNjFiZTliOWU0MzFlNjg4Li41
MGNkZGE1MTFiYjhkMDI1YThjM2YxYmMwYzI1MzEwMWNhZjM5ZTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9QYXltZW50U2V0dXBDb25maWd1cmF0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1BheW1lbnRTZXR1cENvbmZpZ3VyYXRp
b24ubW0KQEAgLTk1LDcgKzk1LDcgQEAgT3B0aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVjb2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMuZ2V0KCkuZ2V0KCkpOwogICAgIGlmICghY29uZmln
dXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBQYXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RG
TW92ZSgqY29uZmlndXJhdGlvbikgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCAz
YjI0ZmRhOTFiZGI0ZjkxODNkNmRiZDk1MmUyMmFkNGEzMmI3NDhiLi45MDVkZWMzNWNkZWU3ODQw
NTFkOGI3MWY1YmQ2MTA5MjM3OTViYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0z
NjQsNyArMzY0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkUmVhY2hG
aW5hbFN0YXRlKFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3IKICAgICBwbGF0Zm9ybUhpZGVQ
YXltZW50VUkoKTsKIAogICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG51bGxwdHI7Ci0g
ICAgbV9kZXN0aW5hdGlvbklEID0gV1RGOjpudWxsb3B0OworICAgIG1fZGVzdGluYXRpb25JRCA9
IHN0ZDo6bnVsbG9wdDsKICAgICBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID0gTWVyY2hhbnRW
YWxpZGF0aW9uU3RhdGU6OklkbGU7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50U2V0dXBD
b25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvUGF5
bWVudFNldHVwQ29uZmlndXJhdGlvbi5tbQppbmRleCAzMWM4MDU5OWU5NzAwMmM0MDAzMTlmNDVk
ZTY5MDRjMTM0NDA5OTczLi44ZDdiNWMzMzM3MTBhNmMyZTA2Y2Y0MmQ3MjM1ZmQxMjA1MzZiZjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9QYXltZW50
U2V0dXBDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1BheW1lbnRTZXR1cENvbmZpZ3VyYXRpb24ubW0KQEAgLTcyLDcgKzcyLDcgQEAgT3B0
aW9uYWw8UGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4gUGF5bWVudFNldHVwQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKElQQzo6RGVjb2QKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IElQQzo6ZGVj
b2RlPFBLUGF5bWVudFNldHVwQ29uZmlndXJhdGlvbj4oZGVjb2RlciwgYWxsb3dlZENsYXNzZXMu
Z2V0KCkuZ2V0KCkpOwogICAgIGlmICghY29uZmlndXJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBQ
YXltZW50U2V0dXBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29uZmlndXJhdGlvbikgfTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAppbmRleCAwNjMwNWM3ZmNkMGE1ODE0MmQ3MzY4OWI2
YjMzOTM2MWU1YjU4ODhiLi5lOGZjZmRjYWNhNzNhMDI2NTQzNmNlMzdiYjU0OTMxYzMxNmM3YzQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzVmFsaWRDYWxsYmFja0lEKCppZGVudGlmaWVyKSk7CiAgICAg
ICAgIHJldHVybiBmcm9tSW50ZWdlcigqaWRlbnRpZmllcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCmluZGV4IGU2YjIzNWI3
NGY5NDM5MmY1ZTYyNWU2MjdjMzZkODM0ZWY3OTFhZjAuLjcxMWRmYmU2MDI1YjliNDcwYjg5NTlm
OGIyZjVmM2Q4NTZiMjk0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FyZ3VtZW50Q29kZXJzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLmgKQEAgLTc2LDcgKzc2LDcgQEAgT3B0aW9uYWw8UmV0YWluUHRy
PFQ+PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFz
c2VzKQogewogICAgIGF1dG8gcmVzdWx0ID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRD
bGFzc2VzKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBBU1NFUlQoISpyZXN1bHQgfHwgaXNP
YmplY3RDbGFzc0FsbG93ZWQoKCpyZXN1bHQpLmdldCgpLCBhbGxvd2VkQ2xhc3NlcykpOwogICAg
IHJldHVybiB7ICpyZXN1bHQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IGY1ZGU0ZjJlYjkzYmU4MzQ3NDYxNGYxMTRm
MjgwYjRhNzUyNTEwNGUuLmM1NGI1M2I2ZmI2MTQzYmJlZDBiNzAwMWIxN2Q3YTA5MjQ4YTA4ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbQpAQCAtMjU5LDEzICsyNTksMTMgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+
IGRlY29kZUFycmF5SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGEKIHsKICAg
ICB1aW50NjRfdCBzaXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAg
ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBhdXRvIHZh
bHVlID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKICAgICAgICAgaWYg
KCF2YWx1ZSB8fCAhdmFsdWUudmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBbYXJyYXkgYWRk
T2JqZWN0OnZhbHVlLnZhbHVlKCkuZ2V0KCldOwogICAgIH0KIApAQCAtMjg0LDcgKzI4NCw3IEBA
IHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQ29sb3JJbnRlcm5h
bChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENvbG9yIGNvbG9yOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IG5zQ29sb3IoY29sb3IpIH07CiB9CiAj
ZWxzZQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRy
PGlkPj4gZGVjb2RlQ29sb3JJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIENvbG9y
IGNvbG9yOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3IpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7
IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihj
b2xvcildKSB9OwogfQogI2VuZGlmCkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIGlubGluZSBP
cHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVEYXRhSW50ZXJuYWwoRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUygoTlNEYXRhICopZGF0YS5sZWFr
UmVmKCkpIH07CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFs
PFJldGFpblB0cjxpZD4+IGRlY29kZURhdGVJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIFJldGFpblB0cjxDRkRhdGVSZWY+IGRhdGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
YXRlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICByZXR1cm4geyBhZG9wdE5TKChOU0RhdGUgKilkYXRlLmxlYWtSZWYoKSkg
fTsKIH0KIApAQCAtMzcwLDE3ICszNzAsMTcgQEAgc3RhdGljIE9wdGlvbmFsPFJldGFpblB0cjxp
ZD4+IGRlY29kZURpY3Rpb25hcnlJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FycmEKIHsK
ICAgICB1aW50NjRfdCBzaXplOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gZGljdGlvbmFyeSA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdKTsKICAg
ICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGF1dG8ga2V5
ID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIGFsbG93ZWRDbGFzc2VzKTsKICAgICAgICAgaWYgKCFr
ZXkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHZhbHVlID0gZGVjb2RlT2JqZWN0KGRlY29k
ZXIsIGFsbG93ZWRDbGFzc2VzKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp2YWx1ZS52YWx1ZSgpLmdldCgpIGZvcktleTpr
ZXkudmFsdWUoKS5nZXQoKV07CiAgICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBPcHRp
b25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVGb250SW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0cmlidXRlczsKICAgICBpZiAo
IWRlY29kZShkZWNvZGVyLCBmb250QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIApAQCAtNDIxLDcgKzQyMSw3IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9u
YWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlTnVtYmVySW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IG51bWJlcjsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG51bWJlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUygoTlNOdW1iZXIgKiludW1i
ZXIubGVha1JlZigpKSB9OwogfQogCkBAIC00NDUsMTEgKzQ0NSwxMSBAQCBzdGF0aWMgT3B0aW9u
YWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRGVjb2RlciYgZGVj
b2RlciwgTlNBcgogewogICAgIEFTU0VSVChhbGxvd2VkQ2xhc3NlcyAmJiBhbGxvd2VkQ2xhc3Nl
cy5jb3VudCk7CiAgICAgaWYgKCFhbGxvd2VkQ2xhc3NlcyB8fCAhYWxsb3dlZENsYXNzZXMuY291
bnQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNL
ZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6KF9fYnJpZGdlIE5T
RGF0YSAqKWRhdGEuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pOwogICAgIHVuYXJjaGl2ZXIuZ2V0KCku
ZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2Vw
dGlvbjsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4g
ZGVjb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwoRGVjb2RlciYgZGVjb2RlciwgTlNBcgogICAgICAg
ICByZXR1cm4geyByZXN1bHQgfTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlv
bikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgb2JqZWN0IG9mIGNsYXNz
ZXMgJUA6ICVAIiwgYWxsb3dlZENsYXNzZXMsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfSBAZmluYWxs
eSB7CiAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKICAgICAgICAgdW5hcmNo
aXZlci5nZXQoKS5kZWxlZ2F0ZSA9IG5pbDsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZVN0cmluZ0ludGVybmFsKERlY29kZXIm
IGRlY29kZXIpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmc7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IGFkb3B0TlMoKE5TU3Ry
aW5nICopc3RyaW5nLmxlYWtSZWYoKSkgfTsKIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRp
YyBpbmxpbmUgT3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlVVJMSW50ZXJuYWwoRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKFVSTCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHsgYWRvcHROUygoTlNVUkwgKilVUkwu
bGVha1JlZigpKSB9OwogfQogCkBAIC01NTYsMTMgKzU1NiwxMyBAQCBPcHRpb25hbDxSZXRhaW5Q
dHI8aWQ+PiBkZWNvZGVPYmplY3QoRGVjb2RlciYgZGVjb2RlciwgTlNBcnJheTxDbGFzcz4gKmFs
bG93ZWRDbAogewogICAgIGJvb2wgaXNOdWxsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNO
dWxsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4geyBudWxscHRyIH07CiAK
ICAgICBOU1R5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBOU1R5cGU6OkFycmF5OgpAQCAtNTkwLDcgKzU5
MCw3IEBAIE9wdGlvbmFsPFJldGFpblB0cjxpZD4+IGRlY29kZU9iamVjdChEZWNvZGVyJiBkZWNv
ZGVyLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsCiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCmluZGV4IGE3YTJhOTRiZTQ0MzZlMzMyNDRk
YmUwNThmYmJhNmEyZWRiNjIyNmEuLjRlNjA4YjhhYWY1Njg5YjFjMWYwMmRkM2Q3NmE2ZGE2MTk0
ZDJmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rp
b25SZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlv
blJlc3VsdC5tbQpAQCAtNDcsNyArNDcsNyBAQCBPcHRpb25hbDxEYXRhRGV0ZWN0aW9uUmVzdWx0
PiBEYXRhRGV0ZWN0aW9uUmVzdWx0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewog
ICAgIGF1dG8gcmVzdWx0cyA9IElQQzo6ZGVjb2RlPE5TQXJyYXk+KGRlY29kZXIsIEBbIFtOU0Fy
cmF5IGNsYXNzXSwgZ2V0RERTY2FubmVyUmVzdWx0Q2xhc3MoKSBdKTsKICAgICBpZiAoIXJlc3Vs
dHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IHJlc3VsdDsKICAgICByZXN1bHQucmVz
dWx0cyA9IFdURk1vdmUoKnJlc3VsdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9EZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbQppbmRleCBhYmM4ZDcxMzkwY2VjMjkw
MjllM2YwZWU2NjQ0YjQ4ODE1NDg1ZjU1Li5mMzFiY2ExYTAyYzEzYWRmNTk1MjdjYzdiZmRmY2Nh
YTNmNmQyYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZhdWx0
V2ViQnJvd3NlckNoZWNrcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EZWZh
dWx0V2ViQnJvd3NlckNoZWNrcy5tbQpAQCAtNjAsNyArNjAsNyBAQCBib29sIGlzUnVubmluZ1Rl
c3QoY29uc3QgU3RyaW5nJiBidW5kbGVJRCkKIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4+IGdldEFwcEJvdW5kRG9tYWluc1Rlc3RpbmcoY29uc3QgU3RyaW5nJiBi
dW5kbGVJRCkKIHsKICAgICBpZiAoYnVuZGxlSUQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGF0aWMg
YXV0byBhcHBCb3VuZERvbWFpbkxpc3QgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPj4gewogICAgICAgICB7ImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRp
ZmllciJfcywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiB7IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoIjEyNy4wLjAuMSIpIH19LApAQCAtNzAsNyArNzAsNyBAQCBPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBnZXRBcHBCb3VuZERvbWFpbnNUZXN0aW5nKGNvbnN0
IFN0cgogICAgIGlmIChhcHBCb3VuZERvbWFpbkl0ZXIgIT0gYXBwQm91bmREb21haW5MaXN0LT5l
bmQoKSkKICAgICAgICAgcmV0dXJuIGFwcEJvdW5kRG9tYWluSXRlci0+dmFsdWU7CiAKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKICNpZiBB
U1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5z
ZXJ0VGV4dE9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvSW5zZXJ0VGV4
dE9wdGlvbnMuY3BwCmluZGV4IGE5ODI3ZDc5NTNlZTkyNzc0MjMzMGZjYjkwNjU0MzNhN2VkNGFm
NmEuLjhmMGI3Njk2ZGM0YWZlMjA2YzcxY2UzZTNjZDlhMmVjMTc0YjE0MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0luc2VydFRleHRPcHRpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9JbnNlcnRUZXh0T3B0aW9ucy5jcHAKQEAgLTQxLDE1
ICs0MSwxNSBAQCBPcHRpb25hbDxXZWJLaXQ6Okluc2VydFRleHRPcHRpb25zPiBBcmd1bWVudENv
ZGVyPFdlYktpdDo6SW5zZXJ0VGV4dE9wdGlvbnM+OjpkZQogewogICAgIFdlYktpdDo6SW5zZXJ0
VGV4dE9wdGlvbnMgb3B0aW9uczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbnMucmVn
aXN0ZXJVbmRvR3JvdXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9ucy5zdXBw
cmVzc1NlbGVjdGlvblVwZGF0ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb25z
LnByb2Nlc3NpbmdVc2VyR2VzdHVyZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRp
b25zLnNob3VsZFNpbXVsYXRlS2V5Ym9hcmRJbnB1dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShvcHRpb25zLmVkaXRpbmdSYW5nZUlzUmVsYXRpdmVUbykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG9w
dGlvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hF
eHRlbnNpb25Db2NvYS5tbQppbmRleCAxZWU4ZTg2Mjg0NDdhNzczOGRjNjhlMzU3YzY4Y2Y1MDI0
MzUxOWQwLi4xMTBjM2YxZmQyYjBjOGZhMzU0YTVhNzMzMzRjZDVhYjljMDIyNzZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1t
CkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2FuZGJveEV4dGVu
c2lvbkltcGwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShjb25zdCBj
aGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUsIE9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW4gPSBXVEY6Om51bGxvcHQsIE9wdGlvblNldDxTYW5kYm94RXh0ZW5z
aW9uOjpGbGFncz4gZmxhZ3MgPSBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RGVmYXVsdCkKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBjcmVhdGUoY29u
c3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0eXBlLCBPcHRpb25hbDxhdWRp
dF90b2tlbl90PiBhdWRpdFRva2VuID0gc3RkOjpudWxsb3B0LCBPcHRpb25TZXQ8U2FuZGJveEV4
dGVuc2lvbjo6RmxhZ3M+IGZsYWdzID0gU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6OkRlZmF1bHQp
CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGlt
cGwgeyBuZXcgU2FuZGJveEV4dGVuc2lvbkltcGwocGF0aCwgdHlwZSwgYXVkaXRUb2tlbiwgZmxh
Z3MpIH07CiAgICAgICAgIGlmICghaW1wbC0+bV90b2tlbikKQEAgLTE2Miw3ICsxNjIsNyBAQCBh
dXRvIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
cikgLT4gT3B0aW9uYWw8SGFuZGxlPgogewogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVm
ZXJlbmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7eyB9fTsKQEAg
LTIyNCwxNCArMjI0LDE0IEBAIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
PiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQCiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IHNpemU7CiAgICAgZGVjb2RlciA+PiBzaXplOwogICAgIGlmICghc2l6ZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IGhhbmRsZXM7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCAqc2l6ZTsgKytpKSB7CiAgICAgICAgIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gaGFuZGxlOwogICAgICAgICBkZWNvZGVyID4+IGhhbmRsZTsKICAg
ICAgICAgaWYgKCFoYW5kbGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaGFuZGxlcy5hcHBlbmQoV1RG
TW92ZSgqaGFuZGxlKSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZXMpOwpAQCAt
MjgwLDcgKzI4MCw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiB7CiAgICAgQVNTRVJUKCFo
YW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlw
ZSwgV1RGOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpGbGFnczo6RG9Ob3RDYW5vbmljYWxp
emUpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEoKSwgdHlwZSwgc3RkOjpudWxsb3B0LCBTYW5kYm94
RXh0ZW5zaW9uOjpGbGFnczo6RG9Ob3RDYW5vbmljYWxpemUpOwogICAgIGlmICghaGFuZGxlLm1f
c2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUg
YSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMmI2NjVlZWQxNTk2N2Y5NzBm
ZTZmNDlhOGM3OWVlODc5MmQwZTgyZi4uMzY0MzY4ODZlZTdhYWU3ZGJjZmQ5ZmIxODY1ZWM5MDdm
YzAxZjdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTgwLDEwICs4MCwxMCBAQCBPcHRpb25hbDxX
ZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkF0dHJpYnV0
ZWRTdHJpbmc+OjpkZQogewogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJp
YnV0ZWRTdHJpbmc7CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBhdHRyaWJ1dGVkU3Ry
aW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkb2N1bWVudEF0dHJpYnV0ZXM7
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkb2N1bWVudEF0dHJpYnV0ZXMpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIHJldHVybiB7IHsgV1RGTW92ZShhdHRyaWJ1dGVkU3RyaW5nKSwgV1RGTW92ZShkb2N1bWVu
dEF0dHJpYnV0ZXMpIH0gfTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIE9wdGlvbmFsPFdlYkNv
cmU6OlBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRpb24+IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UGF5bWVuCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gSVBDOjpkZWNvZGU8UEtQYXlt
ZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudElu
c3RhbGxtZW50Q29uZmlndXJhdGlvbkNsYXNzKCkpOwogICAgIGlmICghY29uZmlndXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIHJldHVybiB7IFdURk1vdmUoKmNvbmZpZ3VyYXRpb24pIH07CiB9CkBAIC0xMTYs
NyArMTE2LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudD4gQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpQYXltZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY28KIHsKICAgICBhdXRvIHBheW1lbnQg
PSBJUEM6OmRlY29kZTxQS1BheW1lbnQ+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50Q2xhc3Mo
KSk7CiAgICAgaWYgKCFwYXltZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFBheW1lbnQgeyBXVEZNb3Zl
KCpwYXltZW50KSB9OwogfQpAQCAtMTMyLDEyICsxMzIsMTIgQEAgT3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVu
dEF1dGgKICAgICBPcHRpb25hbDxQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cz4gc3RhdHVzOwog
ICAgIGRlY29kZXIgPj4gc3RhdHVzOwogICAgIGlmICghc3RhdHVzKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9u
YWw8VmVjdG9yPFJlZlB0cjxBcHBsZVBheUVycm9yPj4+IGVycm9yczsKICAgICBkZWNvZGVyID4+
IGVycm9yczsKICAgICBpZiAoIWVycm9ycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpz
dGF0dXMpLCBXVEZNb3ZlKCplcnJvcnMpIH19OwogfQpAQCAtMTUxLDcgKzE1MSw3IEBAIE9wdGlv
bmFsPFdlYkNvcmU6OlBheW1lbnRDb250YWN0PiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRDb250YWN0Pjo6ZGVjb2RlCiB7CiAgICAgYXV0byBjb250YWN0ID0gSVBDOjpkZWNvZGU8UEtD
b250YWN0PihkZWNvZGVyLCBQQUw6OmdldFBLQ29udGFjdENsYXNzKCkpOwogICAgIGlmICghY29u
dGFjdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBXZWJDb3JlOjpQYXltZW50Q29udGFjdCB7IFdURk1vdmUo
KmNvbnRhY3QpIH07CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbj4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnQKIHsKICAgICBhdXRvIHBheW1lbnRNZXJjaGFudFNlc3Npb24gPSBJUEM6OmRlY29kZTxQS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uQ2xhc3MoKSk7CiAgICAgaWYgKCFwYXltZW50TWVyY2hhbnRTZXNzaW9uKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24geyBXVEZNb3ZlKCpwYXlt
ZW50TWVyY2hhbnRTZXNzaW9uKSB9OwogfQpAQCAtMTc5LDcgKzE3OSw3IEBAIE9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRNZXRob2Q+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhv
ZD46OmRlY29kZShECiB7CiAgICAgYXV0byBwYXltZW50TWV0aG9kID0gSVBDOjpkZWNvZGU8UEtQ
YXltZW50TWV0aG9kPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVudE1ldGhvZENsYXNzKCkpOwog
ICAgIGlmICghcGF5bWVudE1ldGhvZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBQYXltZW50TWV0aG9kIHsg
V1RGTW92ZSgqcGF5bWVudE1ldGhvZCkgfTsKIH0KQEAgLTM2NCw3ICszNjQsNyBAQCBPcHRpb25h
bDxSZWZQdHI8QXBwbGVQYXlFcnJvcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPEFwcGxlUGF5RXJy
b3I+Pjo6ZGVjb2RlKERlYwogICAgIE9wdGlvbmFsPGJvb2w+IGlzVmFsaWQ7CiAgICAgZGVjb2Rl
ciA+PiBpc1ZhbGlkOwogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFJlZlB0cjxBcHBsZVBh
eUVycm9yPiBlcnJvcjsKICAgICBpZiAoISppc1ZhbGlkKQpAQCAtMzcyLDcgKzM3Miw3IEBAIE9w
dGlvbmFsPFJlZlB0cjxBcHBsZVBheUVycm9yPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8QXBwbGVQ
YXlFcnJvcj4+OjpkZWNvZGUoRGVjCiAKICAgICBlcnJvciA9IEFwcGxlUGF5RXJyb3I6OmRlY29k
ZShkZWNvZGVyKTsKICAgICBpZiAoIWVycm9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBlcnJvcjsKIH0KIApA
QCAtMzg1LDcgKzM4NSw3IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRTZXNzaW9uRXJyb3I+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudFNlc3Npb25FcnJvCiB7CiAgICAgYXV0byBw
bGF0Zm9ybUVycm9yID0gSVBDOjpkZWNvZGU8TlNFcnJvcj4oZGVjb2Rlcik7CiAgICAgaWYgKCFw
bGF0Zm9ybUVycm9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgV1RGTW92ZSgqcGxhdGZvcm1FcnJvcikg
fTsKIH0KQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYgZW5jb2RlcgogT3B0aW9u
YWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXM+
OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMpCiB7CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBhdHRy
aWJ1dGVzLmZvbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQogCkBAIC00NzIsNjAg
KzQ3Miw2MCBAQCBPcHRpb25hbDxGb250UGxhdGZvcm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxG
b250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJgogICAgIE9wdGlvbmFsPEZvbnRPcmll
bnRhdGlvbj4gb3JpZW50YXRpb247CiAgICAgZGVjb2RlciA+PiBvcmllbnRhdGlvbjsKICAgICBp
ZiAoIW9yaWVudGF0aW9uLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250V2lkdGhW
YXJpYW50PiB3aWR0aFZhcmlhbnQ7CiAgICAgZGVjb2RlciA+PiB3aWR0aFZhcmlhbnQ7CiAgICAg
aWYgKCF3aWR0aFZhcmlhbnQuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFRleHRSZW5k
ZXJpbmdNb2RlPiB0ZXh0UmVuZGVyaW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHRleHRSZW5kZXJp
bmdNb2RlOwogICAgIGlmICghdGV4dFJlbmRlcmluZ01vZGUuaGFzVmFsdWUoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPGZsb2F0PiBzaXplOwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAgICBpZiAoIXNp
emUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHN5bnRoZXRpY0JvbGQ7CiAg
ICAgZGVjb2RlciA+PiBzeW50aGV0aWNCb2xkOwogICAgIGlmICghc3ludGhldGljQm9sZC5oYXNW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc3ludGhldGljT2JsaXF1ZTsKICAgICBk
ZWNvZGVyID4+IHN5bnRoZXRpY09ibGlxdWU7CiAgICAgaWYgKCFzeW50aGV0aWNPYmxpcXVlLmhh
c1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4g
YXR0cmlidXRlczsKICAgICBkZWNvZGVyID4+IGF0dHJpYnV0ZXM7CiAgICAgaWYgKCFhdHRyaWJ1
dGVzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaW5jbHVkZXNDcmVhdGlvbkRhdGE7CiAgICAg
ZGVjb2RlciA+PiBpbmNsdWRlc0NyZWF0aW9uRGF0YTsKICAgICBpZiAoIWluY2x1ZGVzQ3JlYXRp
b25EYXRhLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoaW5jbHVkZXNDcmVhdGlvbkRhdGEudmFs
dWUoKSkgewogICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gZm9udEZhY2VEYXRh
OwogICAgICAgICBkZWNvZGVyID4+IGZvbnRGYWNlRGF0YTsKICAgICAgICAgaWYgKCFmb250RmFj
ZURhdGEuaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4g
aXRlbUluQ29sbGVjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBpdGVtSW5Db2xsZWN0aW9uOwog
ICAgICAgICBpZiAoIWl0ZW1JbkNvbGxlY3Rpb24uaGFzVmFsdWUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIGF1dG8gZm9udEN1c3RvbVBsYXRmb3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0
Zm9ybURhdGEoZm9udEZhY2VEYXRhLnZhbHVlKCksIGl0ZW1JbkNvbGxlY3Rpb24udmFsdWUoKSk7
CiAgICAgICAgIGlmICghZm9udEN1c3RvbVBsYXRmb3JtRGF0YSkKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICBhdXRvIGJhc2VGb250RGVzY3JpcHRvciA9IGZvbnRDdXN0b21QbGF0Zm9ybURhdGEtPmZvbnRE
ZXNjcmlwdG9yLmdldCgpOwogICAgICAgICBpZiAoIWJhc2VGb250RGVzY3JpcHRvcikKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGJhc2VGb250RGVzY3JpcHRvciwgYXR0cmlidXRl
cy0+Z2V0KCkpKTsKICAgICAgICAgYXV0byBjdEZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdp
dGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZS52YWx1ZSgpLCBudWxs
cHRyKSk7CiAKQEAgLTUzNiwxNiArNTM2LDE2IEBAIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+
IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImCiAg
ICAgT3B0aW9uYWw8U3RyaW5nPiByZWZlcmVuY2VVUkw7CiAgICAgZGVjb2RlciA+PiByZWZlcmVu
Y2VVUkw7CiAgICAgaWYgKCFyZWZlcmVuY2VVUkwuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlv
bmFsPFN0cmluZz4gcG9zdFNjcmlwdE5hbWU7CiAgICAgZGVjb2RlciA+PiBwb3N0U2NyaXB0TmFt
ZTsKICAgICBpZiAoIXBvc3RTY3JpcHROYW1lLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZXRhaW5Q
dHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3IgPSBmaW5kRm9udERlc2NyaXB0
b3IocmVmZXJlbmNlVVJMLnZhbHVlKCksIHBvc3RTY3JpcHROYW1lLnZhbHVlKCkpOwogICAgIGlm
ICghZm9udERlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0KCks
IGF0dHJpYnV0ZXMtPmdldCgpKSk7CiAgICAgYXV0byBjdEZvbnQgPSBhZG9wdENGKENURm9udENy
ZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvci5nZXQoKSwgc2l6ZS52YWx1ZSgp
LCBudWxscHRyKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hS
RGV2aWNlSW5mby5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hSRGV2aWNlSW5mby5t
bQppbmRleCBkOTZlZjAwNDExNzM5MTllYTk1YjJlMTQ2ZTM1MzcyNmQ1OTc3YWM3Li5iNzY3M2Jk
MjdlZjAwOTdkNjEwNTAzMzk3ZWQ5MjMwZDQ1NjJlYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZUluZm8ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvWFJEZXZpY2VJbmZvLm1tCkBAIC00MSwxNiArNDEsMTYgQEAgT3B0aW9uYWw8WFJE
ZXZpY2VJbmZvPiBYUkRldmljZUluZm86OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgWFJEZXZpY2VJbmZvIGRldmljZUZlYXR1cmVzOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoZGV2aWNlRmVhdHVyZXMuaWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzT3JpZW50YXRpb25UcmFja2luZykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRldmljZUZlYXR1cmVzLnN1cHBvcnRzU3RlcmVvUmVuZGVy
aW5nKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGV2aWNlRmVhdHVyZXMuZmVhdHVy
ZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIGRldmljZUZlYXR1cmVzOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hSRGV2aWNlUHJveHkubW0KaW5kZXggNDkyZDAyYzcxNWE5Mzk2YWU0Mjhj
NTMzMDFkZDkyMmZjZWFjNTM3MC4uNmJhMDJmYTA0ZDljMTBkMjdhYjI4NDQ0ZGM0MTE0MWMwZWJj
ZmU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFJEZXZpY2VQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUkRldmljZVByb3h5Lm1tCkBA
IC05MCw3ICs5MCw3IEBAIHZvaWQgWFJEZXZpY2VQcm94eTo6cmVxdWVzdEZyYW1lKFBsYXRmb3Jt
WFI6OkRldmljZTo6UmVxdWVzdEZyYW1lQ2FsbGJhY2smJiBjYWxsCiAKIE9wdGlvbmFsPFBsYXRm
b3JtWFI6OkxheWVySGFuZGxlPiBYUkRldmljZVByb3h5OjpjcmVhdGVMYXllclByb2plY3Rpb24o
dWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgYm9vbCBhbHBoYSkKIHsKLSAgICByZXR1
cm4gbV94clN5c3RlbSA/IG1feHJTeXN0ZW0tPmNyZWF0ZUxheWVyUHJvamVjdGlvbih3aWR0aCwg
aGVpZ2h0LCBhbHBoYSkgOiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1feHJTeXN0ZW0gPyBt
X3hyU3lzdGVtLT5jcmVhdGVMYXllclByb2plY3Rpb24od2lkdGgsIGhlaWdodCwgYWxwaGEpIDog
c3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFhSRGV2aWNlUHJveHk6OnN1Ym1pdEZyYW1lKFZlY3Rv
cjxQbGF0Zm9ybVhSOjpEZXZpY2U6OkxheWVyPiYmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rl
YnVnZ2FibGVJbmZvRGF0YS5jcHAKaW5kZXggZWQ3NDNhZjM2MzZhNDUyYjViODZkYTJkZDJlNTAw
YjcyODZhNGYxYy4uZjYwNmZmNGI4MTRlYTY5NGQ5YjI3M2RmNGEzY2Q0NDk2YmIxOGU4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGVidWdnYWJsZUluZm9EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwCkBAIC01NiwyNyAr
NTYsMjcgQEAgT3B0aW9uYWw8RGVidWdnYWJsZUluZm9EYXRhPiBEZWJ1Z2dhYmxlSW5mb0RhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8SW5zcGVjdG9yOjpE
ZWJ1Z2dhYmxlVHlwZT4gZGVidWdnYWJsZVR5cGU7CiAgICAgZGVjb2RlciA+PiBkZWJ1Z2dhYmxl
VHlwZTsKICAgICBpZiAoIWRlYnVnZ2FibGVUeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiB0YXJnZXRQbGF0Zm9ybU5hbWU7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRQbGF0Zm9ybU5hbWU7
CiAgICAgaWYgKCF0YXJnZXRQbGF0Zm9ybU5hbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+
IHRhcmdldEJ1aWxkVmVyc2lvbjsKICAgICBkZWNvZGVyID4+IHRhcmdldEJ1aWxkVmVyc2lvbjsK
ICAgICBpZiAoIXRhcmdldEJ1aWxkVmVyc2lvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4g
dGFyZ2V0UHJvZHVjdFZlcnNpb247CiAgICAgZGVjb2RlciA+PiB0YXJnZXRQcm9kdWN0VmVyc2lv
bjsKICAgICBpZiAoIXRhcmdldFByb2R1Y3RWZXJzaW9uKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9v
bD4gdGFyZ2V0SXNTaW11bGF0b3I7CiAgICAgZGVjb2RlciA+PiB0YXJnZXRJc1NpbXVsYXRvcjsK
ICAgICBpZiAoIXRhcmdldElzU2ltdWxhdG9yKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAg
ICpkZWJ1Z2dhYmxlVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3Vt
ZW50RWRpdGluZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Eb2N1bWVudEVkaXRp
bmdDb250ZXh0Lm1tCmluZGV4IDE5ZmU3YTgzMWJhMzU5MzQxMTEzYmMyMGI3ZjUwZDYxNDI3ODRl
MGMuLjQxYjkyYWI0NjZiMzYwYWZhYWJiMTAyNjJhYTAyZDY1YjE2ODMyNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQpAQCAtODUsOSArODUs
OSBAQCBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlJhbmdlPiBBcmd1
bWVudENvZGVyPFdlYktpdDo6RG9jdW1lbnRFZAogICAgIFdlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dDo6UmFuZ2UgcmFuZ2U7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJhbmdlLmxv
Y2F0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJhbmdlLmxlbmd0aCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gcmFuZ2U7CiB9CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBPcHRpb25hbDxXZWJL
aXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6OlRleHRSZWN0QW5kUmFuZ2U+IEFyZ3VtZW50Q29k
ZXI8V2ViS2l0OgogICAgIFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dDo6VGV4dFJlY3RB
bmRSYW5nZSByZWN0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWN0LnJlY3QpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0OjpSYW5nZT4gcmFu
Z2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlY3Qu
cmFuZ2UgPSAqcmFuZ2U7CiAKICAgICByZXR1cm4gcmVjdDsKQEAgLTEzNCw0MSArMTM0LDQxIEBA
IE9wdGlvbmFsPFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dD4gQXJndW1lbnRDb2RlcjxX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRl
ZFN0cmluZz4gY29udGV4dEJlZm9yZTsKICAgICBkZWNvZGVyID4+IGNvbnRleHRCZWZvcmU7CiAg
ICAgaWYgKCFjb250ZXh0QmVmb3JlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuY29udGV4dEJlZm9yZSA9ICpj
b250ZXh0QmVmb3JlOwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6QXR0cmlidXRlZFN0cmluZz4g
c2VsZWN0ZWRUZXh0OwogICAgIGRlY29kZXIgPj4gc2VsZWN0ZWRUZXh0OwogICAgIGlmICghc2Vs
ZWN0ZWRUZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGNvbnRleHQuc2VsZWN0ZWRUZXh0ID0gKnNlbGVjdGVkVGV4dDsK
IAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkF0dHJpYnV0ZWRTdHJpbmc+IGNvbnRleHRBZnRlcjsK
ICAgICBkZWNvZGVyID4+IGNvbnRleHRBZnRlcjsKICAgICBpZiAoIWNvbnRleHRBZnRlcikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBjb250ZXh0LmNvbnRleHRBZnRlciA9ICpjb250ZXh0QWZ0ZXI7CiAKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nPiBtYXJrZWRUZXh0OwogICAgIGRlY29kZXIgPj4g
bWFya2VkVGV4dDsKICAgICBpZiAoIW1hcmtlZFRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5tYXJrZWRU
ZXh0ID0gKm1hcmtlZFRleHQ7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpBdHRyaWJ1dGVkU3Ry
aW5nPiBhbm5vdGF0ZWRUZXh0OwogICAgIGRlY29kZXIgPj4gYW5ub3RhdGVkVGV4dDsKICAgICBp
ZiAoIWFubm90YXRlZFRleHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY29udGV4dC5hbm5vdGF0ZWRUZXh0ID0gKmFubm90
YXRlZFRleHQ7CiAKICAgICBPcHRpb25hbDxXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHQ6
OlJhbmdlPiBzZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0OwogICAgIGRlY29kZXIgPj4gc2VsZWN0
ZWRSYW5nZUluTWFya2VkVGV4dDsKICAgICBpZiAoIXNlbGVjdGVkUmFuZ2VJbk1hcmtlZFRleHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgY29udGV4dC5zZWxlY3RlZFJhbmdlSW5NYXJrZWRUZXh0ID0gKnNlbGVjdGVkUmFu
Z2VJbk1hcmtlZFRleHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRleHQudGV4dFJl
Y3RzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIHJldHVybiBjb250ZXh0OwogfQpAQCAtMTg3LDIxICsxODcsMjEgQEAg
T3B0aW9uYWw8V2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdD4gQXJndW1lbnRD
b2RlcjxXZWJLaXQ6OkRvY3VtZW50RWQKICAgICBXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRl
eHRSZXF1ZXN0IHJlcXVlc3Q7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3Qub3B0
aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3Quc3Vycm91bmRpbmdH
cmFudWxhcml0eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QuZ3JhbnVs
YXJpdHlDb3VudCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QucmVjdCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpFbGVtZW50Q29udGV4dD4+IG9w
dGlvbmFsVGV4dElucHV0Q29udGV4dDsKICAgICBkZWNvZGVyID4+IG9wdGlvbmFsVGV4dElucHV0
Q29udGV4dDsKICAgICBpZiAoIW9wdGlvbmFsVGV4dElucHV0Q29udGV4dCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJl
cXVlc3QudGV4dElucHV0Q29udGV4dCA9IG9wdGlvbmFsVGV4dElucHV0Q29udGV4dC52YWx1ZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFuZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRWRpdGluZ1JhbmdlLmNwcAppbmRleCA5ZjdjNzMxMDkzY2Y4
NzFhN2U0YzYzZjFiMWYxYTZjMzA1M2YzNTM0Li5jNDQ3OWUxYTYwNDEzODg5NjQ5OWU5NDkxMWU0
MTNjZDQzYTliZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FZGl0aW5nUmFu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgT3B0aW9uYWw8V2ViQ29yZTo6U2ltcGxlUmFuZ2U+IEVkaXRpbmdSYW5nZTo6
dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnMKICAgICAgICAgLy8gVGhhdCBmaXRz
IHdpdGggQXBwS2l0J3MgaWRlYSBvZiBhbiBpbnB1dCBjb250ZXh0LgogICAgICAgICBhdXRvKiBl
bGVtZW50ID0gZnJhbWUuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1
cm4gcmVzb2x2ZUNoYXJhY3RlclJhbmdlKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygq
ZWxlbWVudCksIHJhbmdlKTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgT3B0aW9uYWw8V2Vi
Q29yZTo6U2ltcGxlUmFuZ2U+IEVkaXRpbmdSYW5nZTo6dG9SYW5nZShXZWJDb3JlOjpGcmFtZSYg
ZnJhbWUsIGNvbnMKIAogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2lu
dChzdGFydE9mUGFyYWdyYXBoKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVT
dGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2NvcGVF
bmQgPSBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0YXJ0LT5j
b250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpOwogICAgIHJldHVybiBXZWJDb3JlOjpy
ZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdURk1vdmUo
c2NvcGVFbmQpIH0sIHJhbmdlKTsKQEAgLTkxLDkgKzkxLDkgQEAgT3B0aW9uYWw8V2ViS2l0OjpF
ZGl0aW5nUmFuZ2U+IEFyZ3VtZW50Q29kZXI8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+OjpkZWNvZGUo
RGVjb2QKICAgICBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBlZGl0aW5nUmFuZ2U7CiAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGVkaXRpbmdSYW5nZS5sb2NhdGlvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShlZGl0aW5nUmFuZ2UubGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBlZGl0aW5n
UmFuZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2UvWFBDU2Vy
dmljZUVudHJ5UG9pbnQubW0KaW5kZXggM2Q4ZTRmODc1MTVlYzRhM2UyYzNjZjBmODliYzBjNGVi
MDU3NTU4NC4uYzkxZGNmY2IyODY5Yjk3ZWQ2YzEyYWZjMjA3OGJkMjJiNGQyMzkwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2lu
dC5tbQpAQCAtODQsNyArODQsNyBAQCBib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRl
OjpnZXRDbGllbnRCdW5kbGVJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50QnVuZAogYm9vbCBYUENT
ZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50U0RLVmVyc2lvbih1aW50MzJfdCYg
Y2xpZW50U0RLVmVyc2lvbikKIHsKICAgICBhdXRvIHZlcnNpb24gPSBwYXJzZUludGVnZXI8dWlu
dDMyX3Q+KHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJj
bGllbnQtc2RrLXZlcnNpb24iKSk7Ci0gICAgY2xpZW50U0RLVmVyc2lvbiA9IHZlcnNpb24udmFs
dWVPcigwKTsKKyAgICBjbGllbnRTREtWZXJzaW9uID0gdmVyc2lvbi52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdmVyc2lvbi5oYXNWYWx1ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCmluZGV4IGIzOWYzZjU2NTJjY2E2
ZDgzZWYwMmVjY2NkMTAwZWZiN2VmNTI4NDEuLjA3NjRkYThhNjBlY2JjODg3ZTM1MTcyMWVkNTM4
MjUxMGRhYjU3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uY3BwCkBAIC00NCwxOSArNDQsMTkgQEAgT3B0aW9uYWw8T3B0aW9uSXRl
bT4gT3B0aW9uSXRlbTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBPcHRp
b25JdGVtIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzR3JvdXApKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNTZWxlY3RlZCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5kaXNhYmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5wYXJlbnRHcm91cElEKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVJbmZvRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAppbmRleCBhZjZkOWU0
ZjhhZmRhYTIyODRkYTI2N2UzMTBmODNlMTlhZGVmOGJmLi44ZGNmN2Q3NDdiNDA4Mjc0OWY1MTdk
ODliYzIxODNhZjllOGI0NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFt
ZUluZm9EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZUluZm9EYXRhLmNw
cApAQCAtNDQsMjcgKzQ0LDI3IEBAIE9wdGlvbmFsPEZyYW1lSW5mb0RhdGE+IEZyYW1lSW5mb0Rh
dGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNN
YWluRnJhbWU7CiAgICAgZGVjb2RlciA+PiBpc01haW5GcmFtZTsKICAgICBpZiAoIWlzTWFpbkZy
YW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
OwogICAgIGRlY29kZXIgPj4gcmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luOwogICAg
IGRlY29kZXIgPj4gc2VjdXJpdHlPcmlnaW47CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IGZyYW1l
SUQ7CiAgICAgZGVjb2RlciA+PiBmcmFtZUlEOwogICAgIGlmICghZnJhbWVJRCkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4+IHBhcmVudEZyYW1l
SUQ7CiAgICAgZGVjb2RlciA+PiBwYXJlbnRGcmFtZUlEOwogICAgIGlmICghcGFyZW50RnJhbWVJ
RCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCppc01haW5GcmFtZSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZVRyZWVOb2RlRGF0YS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRnJhbWVUcmVlTm9kZURhdGEuaAppbmRleCAyNzA1MzcwNGZkMGYw
ZTM3M2VhMzZiYTg0NWFhYjc0NjYyNDM2ZTZmLi45YjdmYjY1MjE5ZDlmOTQ3NjRiYTcxZDdiN2Nk
MTA3MTk3ZjdhYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9GcmFtZVRyZWVO
b2RlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0ZyYW1lVHJlZU5vZGVEYXRhLmgK
QEAgLTQ2LDEyICs0NiwxMiBAQCBzdHJ1Y3QgRnJhbWVUcmVlTm9kZURhdGEgewogICAgICAgICBP
cHRpb25hbDxGcmFtZUluZm9EYXRhPiBpbmZvOwogICAgICAgICBkZWNvZGVyID4+IGluZm87CiAg
ICAgICAgIGlmICghaW5mbykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgT3B0aW9uYWw8
VmVjdG9yPEZyYW1lVHJlZU5vZGVEYXRhPj4gY2hpbGRyZW47CiAgICAgICAgIGRlY29kZXIgPj4g
Y2hpbGRyZW47CiAgICAgICAgIGlmICghY2hpbGRyZW4pCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAg
ICAgICAgIHJldHVybiB7ewogICAgICAgICAgICAgV1RGTW92ZSgqaW5mbyksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IDBlNDM5MjIxNWJiM2U1MjkzYWU5YTQ4ZWM2OGY1NWRlYmZlNzE5NTguLmJiZDIwZTJmNzhj
Nzg0N2VlOTVkODFkZDNmOTI3Njk2MGE5NDQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0dQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycy5oCkBAIC01NywxOSArNTcs
MTkgQEAgc3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyB7CiAgICAgICAgIE9w
dGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHdlYlByb2Nlc3NJZGVudGl0eVRva2VuOwogICAgICAgICBk
ZWNvZGVyID4+IHdlYlByb2Nlc3NJZGVudGl0eVRva2VuOwogICAgICAgICBpZiAoIXdlYlByb2Nl
c3NJZGVudGl0eVRva2VuKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICBPcHRpb25hbDxW
ZWN0b3I8U3RyaW5nPj4gb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgICAgIGRlY29kZXIgPj4gb3Zl
cnJpZGVMYW5ndWFnZXM7CiAgICAgICAgIGlmICghb3ZlcnJpZGVMYW5ndWFnZXMpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIEVOQUJMRShJUENfVEVTVElOR19BUEkpCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+
IGlnbm9yZUludmFsaWRNZXNzYWdlRm9yVGVzdGluZzsKICAgICAgICAgZGVjb2RlciA+PiBpZ25v
cmVJbnZhbGlkTWVzc2FnZUZvclRlc3Rpbmc7CiAgICAgICAgIGlmICghaWdub3JlSW52YWxpZE1l
c3NhZ2VGb3JUZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgICAgICByZXR1cm4gR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0dQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9HUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oCmluZGV4IGMyOWNmMjUx
MjAxNmNkYTJkZmU3MGQ5ZTE0MGE5MGYwM2MxOWU2MDQuLmM1YjdkMTcxODZiODcyOWJjYzk1YTgw
MDM0MjVjNjU3YTQyMzBhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dQVVBy
b2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
R1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaApAQCAtNjIsMjIgKzYyLDIyIEBAIE9w
dGlvbmFsPEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzPiBHUFVQcm9jZXNzV2FrZXVw
TWVzc2FnZUFyZ3VtZW50czo6ZGVjCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyPiBpdGVtQnVmZmVySWRlbnRpZmllcjsKICAgICBkZWNvZGVy
ID4+IGl0ZW1CdWZmZXJJZGVudGlmaWVyOwogICAgIGlmICghaXRlbUJ1ZmZlcklkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gb2Zmc2V0OwogICAgIGRlY29kZXIgPj4gb2Zm
c2V0OwogICAgIGlmICghb2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBkZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyOwogICAgIGlm
ICghZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxH
UFVQcm9jZXNzV2FrZXVwUmVhc29uPiByZWFzb247CiAgICAgZGVjb2RlciA+PiByZWFzb247CiAg
ICAgaWYgKCFyZWFzb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgKml0ZW1CdWZmZXJJZGVudGlmaWVy
LCAqb2Zmc2V0LCAqZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIsICpyZWFzb24gfX07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9HYW1lcGFkL0dhbWVwYWREYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCmluZGV4
IGE5Y2VjNDI2OGI3YzFhNTY2NzMwMGExYzVjMTVmYzdlMDE5OTk2MzMuLjQ3NGE1NDNkMjZiZmM5
ZWFkYmIxM2JlNGUwNmIyZjE5YTRjYzc3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0dhbWVwYWQvR2FtZXBhZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0dh
bWVwYWQvR2FtZXBhZERhdGEuY3BwCkBAIC01OCwyOCArNTgsMjggQEAgT3B0aW9uYWw8R2FtZXBh
ZERhdGE+IEdhbWVwYWREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAg
IEdhbWVwYWREYXRhIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1faXNOdWxs
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmIChkYXRhLm1faXNOdWxsKQogICAgICAgICByZXR1cm4gZGF0YTsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5tX2luZGV4KSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5tX2lkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0
YS5tX21hcHBpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fYXhpc1Zh
bHVlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEubV9idXR0b25WYWx1ZXMp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLm1fbGFzdFVwZGF0ZVRpbWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIGRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCBjYTcwYTVhMGVjYTdkY2MzNDZhYzA1OGYz
MGQ4Y2U3YjJmNzJhYjZmLi5jZmU4ZjNlMzRmM2E4OTdmMjhjMTYyZjBhNjdmYjY2ZDc3YTE1Y2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLmgKQEAgLTc1LDIyICs3NSwyMiBAQCBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgewogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nOwogICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmc7CiAgICAgICAgIGlmICghaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3Rpbmc7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZzsKICAgICAgICAgaWYgKCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5n
KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxib29sPiBkaWRQZXJmb3Jt
U29mdFVwZGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKICAg
ICAgICAgaWYgKCFkaWRQZXJmb3JtU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRh
OwogICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRhOwogICAgICAgICBpZiAoIWNvbnRleHRE
YXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nLCAqaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgKmRpZFBl
cmZvcm1Tb2Z0VXBkYXRlLCBXVEZNb3ZlKCpjb250ZXh0RGF0YSkgfX07CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCmluZGV4IDRiMmE1NjJj
NGE3ZDc1OGJjNDc1OWEyZDZkNmFjMjMyN2M1ZjEwZjAuLjgwNDE0MTRlYjUwMGI2ZGMwMzY1YzU5
ZTg3MzFjMDBkNDM1OWM1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAKQEAgLTYxLDk1ICs2MSw5NSBAQCBPcHRpb25hbDxOYXZpZ2F0aW9uQWN0
aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZQogewogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobmF2aWdhdGlvblR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvblNl
dDxXZWJFdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVyczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KG1vZGlmaWVycykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b247
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb3VzZUJ1dHRvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2Vi
TW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN5bnRoZXRpY0NsaWNrVHlwZSkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IHVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyOwogICAgIGRlY29kZXIg
Pj4gdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXI7CiAgICAgaWYgKCF1c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxib29sPiBjYW5IYW5kbGVSZXF1ZXN0
OwogICAgIGRlY29kZXIgPj4gY2FuSGFuZGxlUmVxdWVzdDsKICAgICBpZiAoIWNhbkhhbmRsZVJl
cXVlc3QpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8U3Ry
aW5nPiBkb3dubG9hZEF0dHJpYnV0ZTsKICAgICBkZWNvZGVyID4+IGRvd25sb2FkQXR0cmlidXRl
OwogICAgIGlmICghZG93bmxvYWRBdHRyaWJ1dGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6Rmxv
YXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgT3B0aW9uYWw8Ym9vbD4gaXNSZWRpcmVjdDsKICAgICBkZWNvZGVyID4+IGlzUmVkaXJl
Y3Q7CiAgICAgaWYgKCFpc1JlZGlyZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gdHJlYXRB
c1NhbWVPcmlnaW5OYXZpZ2F0aW9uOwogICAgIGRlY29kZXIgPj4gdHJlYXRBc1NhbWVPcmlnaW5O
YXZpZ2F0aW9uOwogICAgIGlmICghdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gaGFzT3BlbmVkRnJhbWVzOwogICAgIGRlY29kZXIgPj4gaGFzT3Bl
bmVkRnJhbWVzOwogICAgIGlmICghaGFzT3BlbmVkRnJhbWVzKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8
Ym9vbD4gb3BlbmVkQnlET01XaXRoT3BlbmVyOwogICAgIGRlY29kZXIgPj4gb3BlbmVkQnlET01X
aXRoT3BlbmVyOwogICAgIGlmICghb3BlbmVkQnlET01XaXRoT3BlbmVyKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiByZXF1ZXN0ZXJPcmlnaW47CiAgICAg
ZGVjb2RlciA+PiByZXF1ZXN0ZXJPcmlnaW47CiAgICAgaWYgKCFyZXF1ZXN0ZXJPcmlnaW4pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyPj4gdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHRh
cmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiAgICAgaWYgKCF0YXJnZXRCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcj4+IHNvdXJjZUJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiBzb3VyY2VCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOwogICAgIGlm
ICghc291cmNlQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFdlYkNvcmU6Okxv
Y2tIaXN0b3J5IGxvY2tIaXN0b3J5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9ja0hpc3Rv
cnkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zvcndh
cmRMaXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9ja0JhY2tGb3J3YXJkTGlzdCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsK
ICAgICBkZWNvZGVyID4+IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBpZiAo
IWNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ7CiAgICAgZGVjb2RlciA+PiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBpZiAo
IXByaXZhdGVDbGlja01lYXN1cmVtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUobmF2
aWdhdGlvblR5cGUpLCBtb2RpZmllcnMsIFdURk1vdmUobW91c2VCdXR0b24pLCBXVEZNb3ZlKHN5
bnRoZXRpY0NsaWNrVHlwZSksIFdURk1vdmUoKnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKSwK
ICAgICAgICAgV1RGTW92ZSgqY2FuSGFuZGxlUmVxdWVzdCksIFdURk1vdmUoc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSksIFdURk1vdmUoKmRvd25sb2FkQXR0cmlidXRlKSwgV1RGTW92ZShj
bGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BlcnNpc3RlbmN5VXRpbHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UGVyc2lzdGVuY3lVdGlscy5jcHAKaW5kZXggNDc4Njk3NDdlMGZjMTU0NjEzNjE0ZWIwNmUxMTQ0
YzZkNDJlZTA2My4uYzc4MGJjNGY4MTFhZjhmYjM4N2ZiMGQyMmM3ZmRlNGYxZDEzNjA4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUGVyc2lzdGVuY3lVdGlscy5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRm9yRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gZmlsZVNpemUg
PSBGaWxlU3lzdGVtOjpmaWxlU2l6ZShoYW5kbGUpLnZhbHVlT3IoMCk7CisgICAgYXV0byBmaWxl
U2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVTaXplKGhhbmRsZSkudmFsdWVfb3IoMCk7CiAgICAgaWYg
KCFmaWxlU2l6ZSkgewogICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRleCBkOTE1NjcyMmIzMTU5NjYyZGEzZDU3ZGUz
ODQ1MDA2NDNiOTg5M2Y4Li4zZTQyNzBkY2FmMzBmODYzOWVmZTEyNjI1MzZiYTllNmY1ZGQwYjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAK
QEAgLTEwMyw3ICsxMDMsNyBAQCBPcHRpb25hbDxQbGF0Zm9ybVBvcHVwTWVudURhdGE+IFBsYXRm
b3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjbwogewogICAgIFBsYXRm
b3JtUG9wdXBNZW51RGF0YSBkYXRhOwogICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGRhdGEpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiBkYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcAppbmRleCA5M2E5MTQ5ODhjOTJhNzJiMGY2ZDNjYWFi
YTFhOTBhZGExNmQzN2IzLi4yNjY4OGU5OTE3ZGVlNWRkYTU2MzQ4NDc3MmQyNTJmMTE0YWQ5ZDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0
YS5jcHAKQEAgLTc5LDE2ICs3OSwxNiBAQCBPcHRpb25hbDxOUElkZW50aWZpZXJEYXRhPiBOUElk
ZW50aWZpZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIE5QSWRl
bnRpZmllckRhdGEgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1faXNT
dHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgICAgICAKICAgICBpZiAocmVzdWx0Lm1faXNTdHJpbmcpIHsKICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9zdHJpbmcpKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubV9udW1iZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBWYXJpYW50RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9QbHVnaW5zL05QVmFyaWFudERhdGEuY3BwCmluZGV4IDliMzBlN2YxM2U5ODUw
Njg3M2U1ZjYzOGE0MTg2N2NmYWQzMjhmOWEuLmUwZGViMzYwMjY4MGI5ODRlYzVhOTBhMzRmYzRl
NzhjZjBhNzM4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBW
YXJpYW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUFZhcmlh
bnREYXRhLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIE9wdGlvbmFsPE5QVmFyaWFudERhdGE+IE5Q
VmFyaWFudERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgTlBWYXJpYW50
RGF0YSByZXN1bHQ7CiAgICAgdWludDMyX3QgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gV2Ugc3BlY2lhbC1jYXNlIExvY2FsTlBPYmplY3RJRCBhbmQg
UmVtb3RlTlBPYmplY3RJRCBoZXJlIHNvIGEgTG9jYWxOUE9iamVjdElEIGlzCiAgICAgLy8gZGVj
b2RlZCBhcyBhIFJlbW90ZU5QT2JqZWN0SUQgYW5kIHZpY2UgdmVyc2EuCkBAIC0xNzEsMzEgKzE3
MSwzMSBAQCBPcHRpb25hbDxOUFZhcmlhbnREYXRhPiBOUFZhcmlhbnREYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGNhc2UgTlBW
YXJpYW50RGF0YTo6Qm9vbDoKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9i
b29sVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgY2FzZSBO
UFZhcmlhbnREYXRhOjpJbnQzMjoKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9pbnQzMlZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGNh
c2UgTlBWYXJpYW50RGF0YTo6RG91YmxlOgogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX2RvdWJsZVZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6U3RyaW5nOgogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX3N0cmluZ1ZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6TG9jYWxOUE9iamVjdElEOgogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2xvY2FsTlBPYmplY3RJRFZhbHVlKSkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGNhc2UgTlBWYXJpYW50RGF0YTo6UmVt
b3RlTlBPYmplY3RJRDoKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9yZW1v
dGVOUE9iamVjdElEVmFsdWUpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNp
c2lvbi5oCmluZGV4IGY0NTZkYzk4ODMzMWQzMjM4N2ZjMTI1NjYxMzJlZDY2NDUxM2VjM2UuLjE5
MDExMjIxZGNmYjVhNDNmOWJkMDNiOWRmMmUwYjg1YjE0OWUzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzUsMTIgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyIHsgfTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9Owor
ICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIHsgc3RkOjpudWxsb3B0IH07CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlIH07CiAgICAgdWlu
dDY0X3QgbmF2aWdhdGlvbklEIHsgMCB9OwotICAgIE9wdGlvbmFsPERvd25sb2FkSUQ+IGRvd25s
b2FkSUQgeyBXVEY6Om51bGxvcHQgfTsKLSAgICBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiB3ZWJzaXRlUG9saWNpZXNEYXRhIHsgV1RGOjpudWxsb3B0IH07Ci0gICAgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlIHsgV1RGOjpudWxs
b3B0IH07CisgICAgT3B0aW9uYWw8RG93bmxvYWRJRD4gZG93bmxvYWRJRCB7IHN0ZDo6bnVsbG9w
dCB9OworICAgIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llc0Rh
dGEgeyBzdGQ6Om51bGxvcHQgfTsKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUgeyBzdGQ6Om51bGxvcHQgfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKQEAgLTYwLDM3ICs2MCwzNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBP
cHRpb25hbDxXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXI+IGRlY29kZWRJZGVudGlmaWVy
OwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRl
Y29kZWRJZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIAogICAgICAgICBPcHRpb25hbDxP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4+IGRlY29kZWRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogICAgICAgICBpZiAoIWRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5
QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRQ
b2xpY3lBY3Rpb247CiAgICAgICAgIGlmICghZGVjb2RlZFBvbGljeUFjdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBkZWNvZGVkTmF2aWdhdGlvbklEOwogICAg
ICAgICBkZWNvZGVyID4+IGRlY29kZWROYXZpZ2F0aW9uSUQ7CiAgICAgICAgIGlmICghZGVjb2Rl
ZE5hdmlnYXRpb25JRCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPERv
d25sb2FkSUQ+PiBkZWNvZGVkRG93bmxvYWRJRDsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVk
RG93bmxvYWRJRDsKICAgICAgICAgaWYgKCFkZWNvZGVkRG93bmxvYWRJRCkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+PiBkZWNvZGVk
V2Vic2l0ZVBvbGljaWVzRGF0YTsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkV2Vic2l0ZVBv
bGljaWVzRGF0YTsKICAgICAgICAgaWYgKCFkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4+IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWRJZGVudGlmaWVy
KSwgV1RGTW92ZSgqZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pLCBXVEZNb3Zl
KCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdU
Rk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RGTW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2ll
c0RhdGEpLCBXVEZNb3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKX19OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JUQ05ldHdvcmsuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvUlRDTmV0d29yay5jcHAKaW5kZXggYWE5ZGY4NDc0MmM3NjUzMDZhZThlYzBhMjEw
MThlOGUzODhlODE3Ni4uYjg0YWYzN2I3MThmYWU4YWFiMDNkNTBlYzZmMmZkYWQzMjE4OWM5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDTmV0d29yay5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUlRDTmV0d29yay5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYXV0byBS
VENOZXR3b3JrOjpJUEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9w
dGlvbmFsPElQQWRkcmVzcz4KICAgICBJUEFkZHJlc3MgcmVzdWx0OwogICAgIGludCBmYW1pbHk7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmYW1pbHkpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKGZhbWls
eSA9PSBBRl9JTkVUIHx8IGZhbWlseSA9PSBBRl9JTkVUNiB8fCBmYW1pbHkgPT0gQUZfVU5TUEVD
KTsKIApAQCAtNzUsMTcgKzc1LDE3IEBAIGF1dG8gUlRDTmV0d29yazo6SVBBZGRyZXNzOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxJUEFkZHJlc3M+CiAKICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKSB7CiAgICAgICAgIGlmIChkYXRhLnNpemUo
KSAhPSBzaXplb2YoaW5fYWRkcikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVzdWx0LnZhbHVlID0g
cnRjOjpJUEFkZHJlc3MoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW5fYWRkcio+KGRhdGEuZGF0
YSgpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgaWYgKGRhdGEuc2l6
ZSgpICE9IHNpemVvZihpbjZfYWRkcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnZhbHVlID0gcnRjOjpJUEFk
ZHJlc3MoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW42X2FkZHIqPihkYXRhLmRhdGEoKSkpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjUsMjggKzEyNSwyOCBAQCBhdXRvIFJUQ05ldHdv
cms6OlNvY2tldEFkZHJlc3M6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpIC0+IE9wdGlv
bmFsPFNvY2tldAogICAgIFNvY2tldEFkZHJlc3MgcmVzdWx0OwogICAgIHVpbnQxNl90IHBvcnQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3J0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpbnQgc2NvcGVJZDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjb3BlSWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC52YWx1ZS5TZXRQ
b3J0KHBvcnQpOwogICAgIHJlc3VsdC52YWx1ZS5TZXRTY29wZUlEKHNjb3BlSWQpOwogCiAgICAg
SVBDOjpEYXRhUmVmZXJlbmNlIGhvc3RuYW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaG9z
dG5hbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIHJlc3VsdC52YWx1ZS5TZXRJUChzdGQ6OnN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihob3N0bmFtZS5kYXRhKCkpLCBob3N0bmFtZS5zaXplKCkpKTsK
IAogICAgIGJvb2wgaXNVbnJlc29sdmVkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNVbnJl
c29sdmVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoaXNVbnJlc29sdmVkKQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogCiAgICAgT3B0aW9uYWw8SVBBZGRyZXNzPiBpcEFkZHJlc3M7CiAgICAgZGVjb2RlciA+PiBp
cEFkZHJlc3M7CiAgICAgaWYgKCFpcEFkZHJlc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnZhbHVlLlNldFJl
c29sdmVkSVAoaXBBZGRyZXNzLT52YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE3
Miw0MyArMTcyLDQzIEBAIE9wdGlvbmFsPFJUQ05ldHdvcms+IFJUQ05ldHdvcms6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgUlRDTmV0d29yayByZXN1bHQ7CiAgICAgSVBDOjpE
YXRhUmVmZXJlbmNlIG5hbWUsIGRlc2NyaXB0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihuYW1lLmRhdGEoKSksIG5hbWUuc2l6ZSgpKTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRlc2NyaXB0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBzdGQ6
OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkZXNjcmlwdGlvbi5kYXRhKCkp
LCBkZXNjcmlwdGlvbi5zaXplKCkpOwogICAgIE9wdGlvbmFsPElQQWRkcmVzcz4gcHJlZml4Owog
ICAgIGRlY29kZXIgPj4gcHJlZml4OwogICAgIGlmICghcHJlZml4KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5w
cmVmaXggPSBXVEZNb3ZlKCpwcmVmaXgpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
LnByZWZpeExlbmd0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudHlwZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWQpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnByZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmFjdGl2ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWdu
b3JlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2NvcGVJRCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICB1aW50NjRfdCBsZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsZW5ndGgpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJlc3VsdC5pcHMucmVzZXJ2ZShsZW5ndGgpOwogICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBsZW5ndGg7ICsraW5kZXgpIHsKICAgICAgICAgT3B0aW9uYWw8SVBBZGRy
ZXNzPiBhZGRyZXNzOwogICAgICAgICBkZWNvZGVyID4+IGFkZHJlc3M7CiAgICAgICAgIGlmICgh
YWRkcmVzcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBpbnQgZmxhZ3M7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZmxhZ3MpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHJlc3VsdC5pcHMucHVzaF9i
YWNrKHsgYWRkcmVzcy0+dmFsdWUsIGZsYWdzIH0pOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUlRDUGFja2V0T3B0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQYWNrZXRPcHRpb25zLmNwcAppbmRleCBhMTMxNmI2
NGQ0M2UxZTUzY2FlOTgyZjQ4NDg5N2FmZmI3NjYwYmU1Li45ZTI5ODMwMTJkMzM1NDYzZWRmNTI3
N2MyYjU3ZTI5YzQzODBiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQ
YWNrZXRPcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SVENQYWNrZXRPcHRp
b25zLmNwcApAQCAtNTUsMzEgKzU1LDMxIEBAIE9wdGlvbmFsPFJUQ1BhY2tldE9wdGlvbnM+IFJU
Q1BhY2tldE9wdGlvbnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAKICAgICBydGM6
OkRpZmZTZXJ2Q29kZVBvaW50IGRzY3A7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkc2NwKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBvcHRpb25zLmRzY3AgPSBkc2NwOwogCiAgICAgT3B0aW9uYWw8aW50MzJfdD4gcGFj
a2V0SWQ7CiAgICAgZGVjb2RlciA+PiBwYWNrZXRJZDsKICAgICBpZiAoIXBhY2tldElkKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIG9wdGlvbnMucGFja2V0X2lkID0gcGFja2V0SWQudmFsdWUoKTsKIAogICAgIE9wdGlvbmFs
PGludD4gcnRwU2VuZHRpbWVFeHRlbnNpb25JZDsKICAgICBkZWNvZGVyID4+IHJ0cFNlbmR0aW1l
RXh0ZW5zaW9uSWQ7CiAgICAgaWYgKCFydHBTZW5kdGltZUV4dGVuc2lvbklkKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtcy5ydHBfc2VuZHRpbWVfZXh0ZW5zaW9uX2lkID0gcnRwU2VuZHRpbWVFeHRlbnNpb25JZC52
YWx1ZSgpOwogCiAgICAgT3B0aW9uYWw8aW50NjRfdD4gc3J0cEF1dGhUYWdMZW5ndGg7CiAgICAg
ZGVjb2RlciA+PiBzcnRwQXV0aFRhZ0xlbmd0aDsKICAgICBpZiAoIXNydHBBdXRoVGFnTGVuZ3Ro
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtcy5zcnRwX2F1dGhfdGFnX2xlbiA9IHNydHBBdXRoVGFnTGVuZ3RoLnZh
bHVlKCk7CiAKICAgICBpZiAocGFyYW1zLnNydHBfYXV0aF90YWdfbGVuID4gMCkgewogICAgICAg
ICBJUEM6OkRhdGFSZWZlcmVuY2Ugc3J0cEF1dGhLZXk7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3J0cEF1dGhLZXkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcGFyYW1zLnNydHBfYXV0
aF9rZXkgPSBzdGQ6OnZlY3RvcjxjaGFyPihzdGF0aWNfY2FzdDxzaXplX3Q+KHNydHBBdXRoS2V5
LnNpemUoKSkpOwogICAgICAgICBtZW1jcHkocGFyYW1zLnNydHBfYXV0aF9rZXkuZGF0YSgpLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzcnRwQXV0aEtleS5kYXRhKCkpLCBzcnRwQXV0
aEtleS5zaXplKCkgKiBzaXplb2YoY2hhcikpOwpAQCAtODgsNyArODgsNyBAQCBPcHRpb25hbDxS
VENQYWNrZXRPcHRpb25zPiBSVENQYWNrZXRPcHRpb25zOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIE9wdGlvbmFsPGludDY0X3Q+IHNydHBQYWNrZXRJbmRleDsKICAgICBkZWNv
ZGVyID4+IHNydHBQYWNrZXRJbmRleDsKICAgICBpZiAoIXNydHBQYWNrZXRJbmRleCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbXMuc3J0cF9wYWNrZXRfaW5kZXggPSBzcnRwUGFja2V0SW5kZXgudmFsdWUoKTsKIAog
ICAgIG9wdGlvbnMucGFja2V0X3RpbWVfcGFyYW1zID0gV1RGTW92ZShwYXJhbXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDE3YjJkYTljY2EzNTIwYjNlZmMxNDZk
OWVjZmY3ZWYwODAzMGQwOTEuLjEwNDdiN2Q0ZDIzNTI3ZTk0NGQwOWZlMzU1YThjYTM1Nzk1NmFm
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTcyLDI3ICs3Miwy
NyBAQCBhdXRvIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVy
dGllczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZAogewogICAgIExheWVyQ3JlYXRpb25Qcm9wZXJ0
aWVzIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5sYXllcklEKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIC8v
IFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lmhvc3RpbmdDb250ZXh0SUQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaG9zdGluZ0RldmljZVNjYWxlRmFjdG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoTU9ERUxf
RUxFTUVOVCkKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVNb2RlbEhvc3RpbmcKICAgICBi
b29sIGhhc01vZGVsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzTW9kZWwpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmIChoYXNNb2RlbCkgewogICAgICAgICBhdXRvIG1vZGVsID0gV2ViQ29yZTo6TW9kZWw6OmRl
Y29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKCFtb2RlbCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBy
ZXN1bHQubW9kZWwgPSBtb2RlbDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdVSVN0
YXRlLmNwcAppbmRleCAwNmRiYzg3MjI1NGRmY2I1MDllZWQxMmQwNjY2NDk4ZmE3NjZlM2Q3Li5l
OGVhMzg3OTViNWQ5MTcxYWMwY2NlMzYxNjM2ZjRjOTVmY2M2Y2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ1VJU3RhdGUuY3BwCkBAIC00NywxNiArNDcsMTYgQEAgT3B0aW9uYWw8UmVtb3RlU2Nyb2xs
aW5nVUlTdGF0ZT4gUmVtb3RlU2Nyb2xsaW5nVUlTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGUKICAgICBSZW1vdGVTY3JvbGxpbmdVSVN0YXRlIHVpU3RhdGU7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHVpU3RhdGUubV9jaGFuZ2VzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh1aVN0YXRlLm1fY2hh
bmdlcy5jb250YWlucyhDaGFuZ2VzOjpTY3JvbGxTbmFwTm9kZXMpKSB7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodWlTdGF0ZS5tX25vZGVzV2l0aEFjdGl2ZVNjcm9sbFNuYXApKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCiAgICAgaWYgKHVpU3RhdGUubV9jaGFuZ2VzLmNvbnRhaW5zKENoYW5n
ZXM6OlVzZXJTY3JvbGxOb2RlcykpIHsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1aVN0
YXRlLm1fbm9kZXNXaXRoQWN0aXZlVXNlclNjcm9sbHMpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHVpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNv
dXJjZUxvYWRJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZXNvdXJjZUxvYWRJbmZvLmgK
aW5kZXggYjE4OGEyNDYyOTM2MzI0NzcyNjlhZmE0Nzk5NWMyZmYxNzQ1OGZiMC4uMDA4NjVjNjlk
YmJkNjI0Y2Q1Mjc0Yjk1M2UzZmVlMDdhMmVmMThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVzb3VyY2VMb2FkSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
c291cmNlTG9hZEluZm8uaApAQCAtNzksNDIgKzc5LDQyIEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRJ
bmZvIHsKICAgICAgICAgT3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IHJl
c291cmNlTG9hZElEOwogICAgICAgICBkZWNvZGVyID4+IHJlc291cmNlTG9hZElEOwogICAgICAg
ICBpZiAoIXJlc291cmNlTG9hZElEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJRDsKICAgICAgICAgZGVjb2Rl
ciA+PiBmcmFtZUlEOwogICAgICAgICBpZiAoIWZyYW1lSUQpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+PiBwYXJlbnRGcmFt
ZUlEOwogICAgICAgICBkZWNvZGVyID4+IHBhcmVudEZyYW1lSUQ7CiAgICAgICAgIGlmICghcGFy
ZW50RnJhbWVJRCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFVSTD4gb3JpZ2luYWxV
Ukw7CiAgICAgICAgIGRlY29kZXIgPj4gb3JpZ2luYWxVUkw7CiAgICAgICAgIGlmICghb3JpZ2lu
YWxVUkwpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG9yaWdpbmFsSFRU
UE1ldGhvZDsKICAgICAgICAgZGVjb2RlciA+PiBvcmlnaW5hbEhUVFBNZXRob2Q7CiAgICAgICAg
IGlmICghb3JpZ2luYWxIVFRQTWV0aG9kKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
V2FsbFRpbWU+IGV2ZW50VGltZXN0YW1wOwogICAgICAgICBkZWNvZGVyID4+IGV2ZW50VGltZXN0
YW1wOwogICAgICAgICBpZiAoIWV2ZW50VGltZXN0YW1wKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gbG9hZGVkRnJvbUNhY2hlOwogICAgICAgICBkZWNvZGVyID4+IGxvYWRl
ZEZyb21DYWNoZTsKICAgICAgICAgaWYgKCFsb2FkZWRGcm9tQ2FjaGUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxUeXBlPiB0eXBlOwogICAgICAgICBkZWNvZGVyID4+IHR5cGU7CiAg
ICAgICAgIGlmICghdHlwZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAgICAg
ICAgICAgV1RGTW92ZSgqcmVzb3VyY2VMb2FkSUQpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmgKaW5kZXggNjBkZTM1
ZjZhZTk1N2Q3MDY3NTk0OTY0NzNjZTM1MTY0MjQxZTJlYi4uZjNmOWU2ZjUxM2FkMmZkODQxZGE5
OTE1MTg0OGVjZWMzNzE0NjgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oCkBAIC03NSw2OSArNzUsNjkgQEAg
c3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHsKICAgICAgICAgT3B0aW9u
YWw8U3RyaW5nPiBkaXJlY3Rvcnk7CiAgICAgICAgIGRlY29kZXIgPj4gZGlyZWN0b3J5OwogICAg
ICAgICBpZiAoIWRpcmVjdG9yeSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBkaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gZGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAo
IWRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICAgICAg
T3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKICAgICAgICAgZGVjb2RlciA+PiBlbmFibGVkOwogICAg
ICAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBp
c0l0cFN0YXRlRXhwbGljaXRseVNldDsKICAgICAgICAgZGVjb2RlciA+PiBpc0l0cFN0YXRlRXhw
bGljaXRseVNldDsKICAgICAgICAgaWYgKCFpc0l0cFN0YXRlRXhwbGljaXRseVNldCkKLSAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZUxvZ1Rlc3RpbmdFdmVudDsKICAg
ICAgICAgZGVjb2RlciA+PiBlbmFibGVMb2dUZXN0aW5nRXZlbnQ7CiAgICAgICAgIGlmICghZW5h
YmxlTG9nVGVzdGluZ0V2ZW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4g
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdDsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRJbmNsdWRl
TG9jYWxob3N0OwogICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVEZWJ1Z01vZGU7CiAgICAgICAgIGRl
Y29kZXIgPj4gZW5hYmxlRGVidWdNb2RlOwogICAgICAgICBpZiAoIWVuYWJsZURlYnVnTW9kZSkK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICAgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOwogICAgICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZD4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAg
ICAgICAgIGRlY29kZXIgPj4gc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQ7CiAgICAg
ICAgIGlmICghc2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNl
bmRpZgogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgZGVj
b2RlciA+PiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgaWYgKCFm
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBzdGFuZGFsb25lQXBwbGljYXRpb25E
b21haW47CiAgICAgICAgIGRlY29kZXIgPj4gc3RhbmRhbG9uZUFwcGxpY2F0aW9uRG9tYWluOwog
ICAgICAgICBpZiAoIXN0YW5kYWxvbmVBcHBsaWNhdGlvbkRvbWFpbikKLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgICAgIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBhcHBC
b3VuZERvbWFpbnM7CiAgICAgICAgIGRlY29kZXIgPj4gYXBwQm91bmREb21haW5zOwogICAgICAg
ICBpZiAoIWFwcEJvdW5kRG9tYWlucykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAg
ICAgZGVjb2RlciA+PiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgaWYgKCFtYW51
YWxQcmV2YWxlbnRSZXNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewogICAg
ICAgICAgICAgV1RGTW92ZSgqZGlyZWN0b3J5KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NlcnZpY2VXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKaW5kZXggZTA2M2Mx
ZjFiZDk5YTAwMmI0MmFhM2YyNmEzYWJhYTIyYWIzZDg3YS4uZmMzMGU1ODhjMzQ5ODI3YjNiZmJl
ZGJmNjljYmE2ZTdjYWZhNjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vy
dmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2VydmljZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAKQEAgLTQ2LDEzICs0NiwxMyBA
QCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhPiBTZXJ2aWNlV29ya2Vy
SW5pdGlhbGl6YXRpb25EYXRhOjpkZWNvZAogICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlmICghdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAgICAgCiAgICAgcmV0dXJuIHt7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNw
cAppbmRleCA5Yzc3ZjczNzQwNTY0ODk2OWE2ZjZlYmVkMmNlOTU4YjUyMjI1ZTBiLi42YWJjODRk
YWNkMTA2YWI1ZTc5MzJmNDNmNGU2YzhkMTQ2YWY1OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5jcHAKQEAgLTU5LDE5ICs1OSwxOSBAQCBhdXRvIEhUVFBCb2R5OjpFbGVtZW50
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxFbGVtZW50Pgogewog
ICAgIEVsZW1lbnQgcmVzdWx0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUp
IHx8ICFpc1ZhbGlkRW51bShyZXN1bHQudHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlsZVBh
dGgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZpbGVTdGFydCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZmlsZUxlbmd0aCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuYmxvYlVSTFN0cmluZykpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMTI3LDUzICsxMjcsNTMgQEAgT3B0aW9uYWw8RnJhbWVTdGF0
ZT4gRnJhbWVTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBGcmFt
ZVN0YXRlIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxTdHJpbmcp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9yaWdpbmFsVVJMU3RyaW5nKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5yZWZlcnJlcikpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQudGFyZ2V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fZG9jdW1lbnRTdGF0ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmVzdWx0LnZhbGlkYXRlRG9j
dW1lbnRTdGF0ZSgpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc3RhdGVPYmpl
Y3REYXRhKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lml0ZW1TZXF1
ZW5jZU51bWJlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zY3JvbGxQ
b3NpdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
U2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaHR0cEJv
ZHkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5leHBvc2VkQ29udGVudFJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnVub2JzY3VyZWRDb250ZW50UmVjdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubWluaW11bUxheW91dFNpemVJblNjcm9sbFZpZXdDb29yZGluYXRlcykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY29udGVudFNpemUpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjYWxlSXNJbml0aWFsKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5vYnNjdXJlZEluc2V0cykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNoaWxkcmVuKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CkBAIC0yMzIsMTQgKzIzMiwxNCBAQCBPcHRpb25hbDxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlcgogCiAg
ICAgYXV0byBpZGVudGlmaWVyID0gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKGRl
Y29kZXIpOwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuaWRlbnRpZmllciA9
ICppZGVudGlmaWVyOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVN0YXRl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmhhc0NhY2hlZFBhZ2UpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1NSwxMSArMjU1LDExIEBAIE9wdGlvbmFs
PEJhY2tGb3J3YXJkTGlzdFN0YXRlPiBCYWNrRm9yd2FyZExpc3RTdGF0ZTo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlCiAgICAgT3B0aW9uYWw8VmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZT4+IGl0ZW1zOwogICAgIGRlY29kZXIgPj4gaXRlbXM7CiAgICAgaWYgKCFpdGVtcykKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBjdXJyZW50SW5kZXg7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjdXJyZW50SW5kZXgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKml0ZW1z
KSwgV1RGTW92ZShjdXJyZW50SW5kZXgpIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCmluZGV4IDNiMmQzNGQxOGU3M2Y4MzExMGMzYmVlZTZl
MTUyNmVlOTUwNTUxYWMuLmJhOTkzN2E5ZGM4MTMzODUyYzFmYzM1Zjg4OWNjMTFhZjZmYmM4YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKQEAg
LTYxLDE1ICs2MSwxNSBAQCBPcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJN
ZW51SXRlbURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZQogewogICAgIFRvdWNoQmFy
TWVudUl0ZW1EYXRhIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmlvcml0eSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgcmV0dXJuIG1ha2VPcHRpb25hbChXVEZNb3ZlKHJlc3VsdCkpOworICAgIHJldHVy
biBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVHJhbnNhY3Rpb25JRC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVHJhbnNhY3Rpb25JRC5oCmluZGV4IGRjMTZjNzc4YTBiYTAwM2IxZTM2NmZhNDA2MjJl
NTY5YWQwMjJmZjAuLjUzNjQwODk0MDhlMTYxY2ZiM2MwMDZhNDIzMzJmYzY4M2UzMjQ2NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RyYW5zYWN0aW9uSUQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9UcmFuc2FjdGlvbklELmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAgICAgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOwogICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgQVNTRVJUKGlzVmFsaWRJZGVudGlmaWVyKCppZGVudGlmaWVyKSk7CiAgICAgICAgIHJl
dHVybiBNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyIHsgKmlkZW50aWZpZXIgfTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAKaW5k
ZXggZGM4NTJhNzA4MGI5MTYzNGNiMjlkYjUzZjlmOTA3ZDc4Zjg5MDdlOS4uYWNjMmViODkzNGFj
MWM3OGFiMDgxYjJkMjE2NWI4ZDU0OTc2NDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcApAQCAtNTAsMzIgKzUwLDMyIEBAIE9wdGlv
bmFsPFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzPiBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYKICAgICBPcHRpb25hbDx1aW50NjRfdD4gaGFuZGxlcklkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiBoYW5kbGVySWRlbnRpZmllcjsKICAgICBpZiAoIWhhbmRsZXJJ
ZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB0YXNrSWRlbnRpZmll
cjsKICAgICBkZWNvZGVyID4+IHRhc2tJZGVudGlmaWVyOwogICAgIGlmICghdGFza0lkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzSFRU
UEJvZHk7CiAgICAgZGVjb2RlciA+PiBoYXNIVFRQQm9keTsKICAgICBpZiAoIWhhc0hUVFBCb2R5
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICgqaGFzSFRUUEJvZHkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkZv
cm1EYXRhPiBmb3JtRGF0YSA9IFdlYkNvcmU6OkZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgICAgIGlmICghZm9ybURhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
Qm9keShXVEZNb3ZlKGZvcm1EYXRhKSk7CiAgICAgfQogICAgIAogICAgIE9wdGlvbmFsPEZyYW1l
SW5mb0RhdGE+IGZyYW1lSW5mbzsKICAgICBkZWNvZGVyID4+IGZyYW1lSW5mbzsKICAgICBpZiAo
IWZyYW1lSW5mbykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICBXVEZNb3ZlKCpoYW5kbGVy
SWRlbnRpZmllciksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRyb2xsZXJQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnMuY3BwCmluZGV4IGFlOTRiMGFkZDVjODNjNDM3YmZkNTQ1
OTg0NDNmMWFjOGY3ZGZlMWYuLmUzYzljZGJiNmI3ZmMwMmYzM2Q4ZmJiOGNkYjk4NWFmMWEwY2Q1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29udHJvbGxl
clBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJDb250ZW50Q29u
dHJvbGxlclBhcmFtZXRlcnMuY3BwCkBAIC00OSwzMyArNDksMzMgQEAgT3B0aW9uYWw8VXNlckNv
bnRlbnRDb250cm9sbGVyUGFyYW1ldGVycz4gVXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVy
czo6ZGVjb2QKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiBp
ZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAgICBpZiAoIWlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPHN0ZDo6cGFpcjxDb250ZW50V29ybGRJ
ZGVudGlmaWVyLCBTdHJpbmc+Pj4gdXNlckNvbnRlbnRXb3JsZHM7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ29udGVudFdvcmxkczsKICAgICBpZiAoIXVzZXJDb250ZW50V29ybGRzKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8VmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPj4gdXNlclNjcmlwdHM7CiAgICAgZGVj
b2RlciA+PiB1c2VyU2NyaXB0czsKICAgICBpZiAoIXVzZXJTY3JpcHRzKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJVc2VyU3R5bGVTaGVldERhdGE+PiB1c2VyU3R5bGVTaGVldHM7
CiAgICAgZGVjb2RlciA+PiB1c2VyU3R5bGVTaGVldHM7CiAgICAgaWYgKCF1c2VyU3R5bGVTaGVl
dHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVy
RGF0YT4+IG1lc3NhZ2VIYW5kbGVyczsKICAgICBkZWNvZGVyID4+IG1lc3NhZ2VIYW5kbGVyczsK
ICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIE9wdGlvbmFsPFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdERhdGE+Pj4gY29udGVudFJ1bGVMaXN0czsKICAgICBkZWNvZGVy
ID4+IGNvbnRlbnRSdWxlTGlzdHM7CiAgICAgaWYgKCFjb250ZW50UnVsZUxpc3RzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiAKICAgICByZXR1cm4ge3sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdENvdW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzLmgKaW5kZXggNDQ3NWM4ZDA1ZDRmY2M4ZmI3NTFhNTI2OWRiNjFiMzA4
MzJjMzQyMS4uNmI2ZTFlZWE5MTQ0MWU5ODA4NTBhZDFlM2M0YzY3YWRhNzRhZjE5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzLmgKQEAgLTQ2
LDEyICs0NiwxMiBAQCBzdHJ1Y3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzIHsKICAgICAgICAg
T3B0aW9uYWw8dWludDMyX3Q+IGJhY2tDb3VudDsKICAgICAgICAgZGVjb2RlciA+PiBiYWNrQ291
bnQ7CiAgICAgICAgIGlmICghYmFja0NvdW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8dWludDMyX3Q+IGZvcndhcmRDb3VudDsKICAgICAgICAgZGVjb2RlciA+PiBmb3J3YXJkQ291
bnQ7CiAgICAgICAgIGlmICghZm9yd2FyZENvdW50KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0
dXJuIFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyB7ICpiYWNrQ291bnQsICpmb3J3YXJkQ291bnQg
fTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhLmNwcAppbmRleCBlOGIwM2Q2OWU1Y2QyMWE4OTcyNjQ1YzAyODAz
MjEzMjU2ZjUyNGE0Li45MmM4NjM3MDRkOTdmYWFmYzI4MWEzOTc0MTYxMTIzNWRhMGIzMTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YS5jcHAKQEAgLTYyLDUzICs2Miw1MyBAQCBPcHRpb25hbDxXZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdERhdGE+IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YTo6ZGVjb2Rl
KAogewogICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlwY0hhbmRsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gZGF0
YSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpOwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbk9mZnNldDsKICAgICBkZWNvZGVyID4+IGNvbmRpdGlvbnNBcHBseU9u
bHlUb0RvbWFpbk9mZnNldDsKICAgICBpZiAoIWNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9m
ZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBhY3Rpb25zT2Zmc2V0OwogICAgIGRl
Y29kZXIgPj4gYWN0aW9uc09mZnNldDsKICAgICBpZiAoIWFjdGlvbnNPZmZzZXQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBPcHRpb25hbDx1bnNpZ25lZD4gYWN0aW9uc1NpemU7CiAgICAgZGVjb2RlciA+PiBhY3Rpb25z
U2l6ZTsKICAgICBpZiAoIWFjdGlvbnNTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+
IGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0OwogICAgIGRlY29kZXIgPj4g
ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiAgICAgaWYgKCFmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZU9mZnNldCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2ln
bmVkPiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgZGVjb2RlciA+
PiBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemU7CiAgICAgaWYgKCFmaWx0ZXJz
V2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNpemUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1bnNpZ25l
ZD4gZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiBm
aWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZU9mZnNldDsKICAgICBpZiAoIWZpbHRlcnNXaXRo
Q29uZGl0aW9uc0J5dGVjb2RlT2Zmc2V0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGZp
bHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBkZWNvZGVyID4+IGZpbHRlcnNX
aXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBpZiAoIWZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlU2l6ZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiB0b3BVUkxGaWx0ZXJz
Qnl0ZWNvZGVPZmZzZXQ7CiAgICAgZGVjb2RlciA+PiB0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZz
ZXQ7CiAgICAgaWYgKCF0b3BVUkxGaWx0ZXJzQnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRp
b25hbDx1bnNpZ25lZD4gdG9wVVJMRmlsdGVyc0J5dGVjb2RlU2l6ZTsKICAgICBkZWNvZGVyID4+
IHRvcFVSTEZpbHRlcnNCeXRlY29kZVNpemU7CiAgICAgaWYgKCF0b3BVUkxGaWx0ZXJzQnl0ZWNv
ZGVTaXplKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7CiAgICAgICAgIFdURk1vdmUoZGF0YSksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCmluZGV4IDBj
NWRjNzk1NmE4ZTMxNjY0MDhiMDAyZTAwNWY3YjU0YjcwNjVlYmMuLjY0YzE1N2NlNDdjOWRiMDQx
YzMxODk3ZDgxYmNhNmIwNzdiN2ZhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbURhdGEuY3BwCkBAIC0xMTcsMzIgKzExNywzMiBAQCBPcHRpb25hbDxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZQogewogICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgdHlwZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6Q29udGV4
dE1lbnVBY3Rpb24gYWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aW9uKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFN0cmluZyB0aXRsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRpdGxlKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGJvb2wgY2hlY2tlZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNoZWNrZWQpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgYm9vbCBlbmFibGVkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZW5hYmxlZCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICB1bnNpZ25lZCBpbmRlbnRhdGlvbkxldmVsOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaW5kZW50YXRpb25MZXZlbCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29u
dGV4dE1lbnVJdGVtRGF0YT4+IHN1Ym1lbnU7CiAgICAgZGVjb2RlciA+PiBzdWJtZW51OwogICAg
IGlmICghc3VibWVudSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV2ViQ29y
ZTo6QWN0aW9uVHlwZToKQEAgLTE1NSw3ICsxNTUsNyBAQCBPcHRpb25hbDxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4ga2l0SXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtVmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMzVjMmNkMzNkZjNkMzczMTYyMDM3
NDY4MWExMzFhZTUyZTA5OWUxYi4uZjFhOGFjODg1ZjQ2MTAwZmRjNjU2NTg4YmRhMTcxOTJlYTY2
NDNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC0yODMsMTIgKzI4MywxMiBAQCBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4gQXJndW1l
bnRDb2RlcjxDaGFyYWN0ZXJSYW5nZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBsb2NhdGlvbjsKICAgICBkZWNvZGVyID4+IGxvY2F0aW9uOwogICAg
IGlmICghbG9jYXRpb24pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbGVuZ3RoOwogICAg
IGRlY29kZXIgPj4gbGVuZ3RoOwogICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsg
eyAqbG9jYXRpb24sICpsZW5ndGggfSB9OwogfQpAQCAtMzA0LDEyICszMDQsMTIgQEAgYXV0byBB
cmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8+OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikgLT4gT3B0aW8KICAgICBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcjsKICAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7CiAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAog
ICAgIE9wdGlvbmFsPFN0cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYg
KCFuYW1lKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RG
TW92ZSgqbmFtZSkgfX07CiB9CkBAIC0zNDUsNjAgKzM0NSw2MCBAQCBPcHRpb25hbDxET01DYWNo
ZUVuZ2luZTo6UmVjb3JkPiBBcmd1bWVudENvZGVyPERPTUNhY2hlRW5naW5lOjpSZWNvcmQ+Ojpk
ZWNvZGUoRAogewogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEZldGNoSGVhZGVyczo6R3VhcmQgcmVxdWVzdEhl
YWRlcnNHdWFyZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3RIZWFkZXJzR3VhcmQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZldGNo
T3B0aW9ucz4gb3B0aW9uczsKICAgICBkZWNvZGVyID4+IG9wdGlvbnM7CiAgICAgaWYgKCFvcHRp
b25zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVmZXJyZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCByZXNwb25zZUhlYWRlcnNH
dWFyZDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlSGVhZGVyc0d1YXJkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXNwb25zZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICB1aW50NjRfdCB1cGRhdGVSZXNwb25zZUNv
dW50ZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cGRhdGVSZXNwb25zZUNvdW50ZXIpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgdWludDY0X3QgcmVzcG9uc2VCb2R5U2l6ZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3BvbnNlQm9keVNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6RE9NQ2FjaGVFbmdpbmU6
OlJlc3BvbnNlQm9keSByZXNwb25zZUJvZHk7CiAgICAgYm9vbCBoYXNTaGFyZWRCdWZmZXJCb2R5
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzU2hhcmVkQnVmZmVyQm9keSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoaGFzU2hhcmVkQnVmZmVyQm9keSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZl
cikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgICAgIHJlc3BvbnNl
Qm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJv
b2wgaGFzRm9ybURhdGFCb2R5OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0Zvcm1E
YXRhQm9keSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKGhhc0Zvcm1EYXRhQm9keSkgewogICAg
ICAgICAgICAgYXV0byBmb3JtRGF0YSA9IEZvcm1EYXRhOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAg
ICAgICAgICBpZiAoIWZvcm1EYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJl
c3BvbnNlQm9keSA9IGZvcm1EYXRhLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC02MzIsNyArNjMyLDcgQEAgT3B0aW9uYWw8RmxvYXRQb2ludD4gQXJndW1lbnRDb2RlcjxG
bG9hdFBvaW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgRmxvYXRQb2ludCBm
bG9hdFBvaW50OwogICAgIGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50Pjo6ZGVj
b2RlKGRlY29kZXIsIGZsb2F0UG9pbnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBmbG9hdFBvaW50OwogfQog
CkBAIC02NjEsNyArNjYxLDcgQEAgT3B0aW9uYWw8RmxvYXRSZWN0PiBBcmd1bWVudENvZGVyPEZs
b2F0UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIEZsb2F0UmVjdCBmbG9h
dFJlY3Q7CiAgICAgaWYgKCFTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UmVjdD46OmRlY29kZShk
ZWNvZGVyLCBmbG9hdFJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBmbG9hdFJlY3Q7CiB9CiAKQEAgLTcx
Myw3ICs3MTMsNyBAQCBPcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4gQXJndW1lbnRDb2RlcjxW
aWV3cG9ydEFyZ3VtZW50cz46OmRlY29kZShEZWNvZGVyJiBkZQogewogICAgIFZpZXdwb3J0QXJn
dW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzOwogICAgIGlmICghU2ltcGxlQXJndW1lbnRDb2RlcjxW
aWV3cG9ydEFyZ3VtZW50cz46OmRlY29kZShkZWNvZGVyLCB2aWV3cG9ydEFyZ3VtZW50cykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcmV0dXJuIHZpZXdwb3J0QXJndW1lbnRzOwogfQogCkBAIC03NDMsNyArNzQzLDcgQEAg
T3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBJbnRQb2ludCBpbnRQb2ludDsKICAgICBpZiAo
IVNpbXBsZUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgaW50UG9pbnQp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHJldHVybiBpbnRQb2ludDsKIH0KIApAQCAtNzYxLDcgKzc2MSw3IEBAIE9wdGlv
bmFsPEludFJlY3Q+IEFyZ3VtZW50Q29kZXI8SW50UmVjdD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewogICAgIEludFJlY3QgcmVjdDsKICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCByZWN0
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXR1cm4gcmVjdDsKIH0KIApAQCAtNzg1LDcgKzc4NSw3IEBAIE9wdGlvbmFs
PEludFNpemU+IEFyZ3VtZW50Q29kZXI8SW50U2l6ZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIEludFNpemUgaW50U2l6ZTsKICAgICBpZiAoIVNpbXBsZUFyZ3VtZW50Q29kZXI8
SW50U2l6ZT46OmRlY29kZShkZWNvZGVyLCBpbnRTaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gaW50U2l6
ZTsKIH0KIApAQCAtODIwLDEyICs4MjAsMTIgQEAgT3B0aW9uYWw8UmVjZW50U2VhcmNoPiBBcmd1
bWVudENvZGVyPFJlY2VudFNlYXJjaD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9w
dGlvbmFsPFN0cmluZz4gc3RyaW5nOwogICAgIGRlY29kZXIgPj4gc3RyaW5nOwogICAgIGlmICgh
c3RyaW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFdhbGxUaW1lPiB0aW1lOwogICAgIGRlY29k
ZXIgPj4gdGltZTsKICAgICBpZiAoIXRpbWUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7IFdURk1v
dmUoKnN0cmluZyksIFdURk1vdmUoKnRpbWUpIH19OwogfQpAQCAtODgwLDExICs4ODAsMTEgQEAg
T3B0aW9uYWw8TWltZUNsYXNzSW5mbz4gQXJndW1lbnRDb2RlcjxNaW1lQ2xhc3NJbmZvPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7CiAgICAgTWltZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZv
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWltZUNsYXNzSW5mby50eXBlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1pbWVDbGFzc0luZm8uZGVzYykpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIG1p
bWVDbGFzc0luZm87CiB9CkBAIC05MDgsMjIgKzkwOCwyMiBAQCBPcHRpb25hbDxXZWJDb3JlOjpQ
bHVnaW5JbmZvPiBBcmd1bWVudENvZGVyPFBsdWdpbkluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcgogewogICAgIFBsdWdpbkluZm8gcGx1Z2luSW5mbzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBsdWdpbkluZm8ubmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5J
bmZvLmZpbGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5kZXNjKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8ubWltZXMpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGx1Z2luSW5mby5pc0FwcGxpY2F0aW9uUGx1Z2luKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8uY2xpZW50TG9hZFBvbGljeSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwbHVnaW5JbmZvLmJ1bmRsZUlkZW50aWZpZXIpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
I2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBsdWdpbkluZm8udmVy
c2lvblN0cmluZykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIHJldHVybiBwbHVnaW5JbmZvOwpAQCAtMTEy
MiwzMSArMTEyMiwzMSBAQCBPcHRpb25hbDxSZWY8Rm9udD4+IEFyZ3VtZW50Q29kZXI8UmVmPEZv
bnQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Rm9udDo6T3JpZ2lu
PiBvcmlnaW47CiAgICAgZGVjb2RlciA+PiBvcmlnaW47CiAgICAgaWYgKCFvcmlnaW4uaGFzVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnQ6OkludGVyc3RpdGlhbD4gaXNJbnRlcnN0aXRp
YWw7CiAgICAgZGVjb2RlciA+PiBpc0ludGVyc3RpdGlhbDsKICAgICBpZiAoIWlzSW50ZXJzdGl0
aWFsLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxGb250OjpWaXNpYmlsaXR5PiB2aXNp
YmlsaXR5OwogICAgIGRlY29kZXIgPj4gdmlzaWJpbGl0eTsKICAgICBpZiAoIXZpc2liaWxpdHku
aGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPEZvbnQ6Ok9yaWVudGF0aW9uRmFsbGJhY2s+
IGlzVGV4dE9yaWVudGF0aW9uRmFsbGJhY2s7CiAgICAgZGVjb2RlciA+PiBpc1RleHRPcmllbnRh
dGlvbkZhbGxiYWNrOwogICAgIGlmICghaXNUZXh0T3JpZW50YXRpb25GYWxsYmFjay5oYXNWYWx1
ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5k
ZXJpbmdSZXJzb3VjZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXJzb3Vj
ZUlkZW50aWZpZXI7CiAgICAgaWYgKCFyZW5kZXJpbmdSZXJzb3VjZUlkZW50aWZpZXIuaGFzVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGF1dG8gcGxhdGZvcm1EYXRhID0gZGVjb2RlUGxhdGZvcm1EYXRhKGRl
Y29kZXIpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YS52YWx1ZSgpLCBvcmlnaW4udmFsdWUoKSwgaXNJ
bnRlcnN0aXRpYWwudmFsdWUoKSwgdmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlv
bkZhbGxiYWNrLnZhbHVlKCksIHJlbmRlcmluZ1JlcnNvdWNlSWRlbnRpZmllcik7CiB9CkBAIC0x
MzI4LDYwICsxMzI4LDYwIEBAIE9wdGlvbmFsPFNlbGVjdGlvbkdlb21ldHJ5PiBBcmd1bWVudENv
ZGVyPFNlbGVjdGlvbkdlb21ldHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlCiAgICAgU2VsZWN0aW9u
R2VvbWV0cnkgc2VsZWN0aW9uR2VvbWV0cnk7CiAgICAgRmxvYXRRdWFkIHF1YWQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShxdWFkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRRdWFk
KHF1YWQpOwogCiAgICAgT3B0aW9uYWw8U2VsZWN0aW9uUmVuZGVyaW5nQmVoYXZpb3I+IGJlaGF2
aW9yOwogICAgIGRlY29kZXIgPj4gYmVoYXZpb3I7CiAgICAgaWYgKCFiZWhhdmlvcikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRCZWhhdmlvcigqYmVoYXZpb3IpOwogCiAgICAgdWludDMy
X3QgZGlyZWN0aW9uOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGlyZWN0aW9uKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBzZWxlY3Rpb25HZW9tZXRyeS5zZXREaXJlY3Rpb24oKFRleHREaXJlY3Rpb24pZGlyZWN0aW9u
KTsKIAogICAgIGludCBpbnRWYWx1ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGludFZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRNaW5YKGludFZhbHVlKTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNl
dE1heFgoaW50VmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbnRWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0TWF4WShpbnRWYWx1ZSk7CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGludFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRMaW5l
TnVtYmVyKGludFZhbHVlKTsKIAogICAgIGJvb2wgYm9vbFZhbHVlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRJc0xpbmVC
cmVhayhib29sVmFsdWUpOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShib29sVmFsdWUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHNlbGVjdGlvbkdlb21ldHJ5LnNldElzRmlyc3RPbkxpbmUoYm9vbFZhbHVlKTsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9t
ZXRyeS5zZXRJc0xhc3RPbkxpbmUoYm9vbFZhbHVlKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5zZXRDb250YWluc1N0YXJ0
KGJvb2xWYWx1ZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJvb2xWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgc2VsZWN0aW9uR2VvbWV0cnkuc2V0Q29udGFpbnNFbmQoYm9vbFZhbHVlKTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoYm9vbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzZWxlY3Rpb25HZW9tZXRyeS5z
ZXRJc0hvcml6b250YWwoYm9vbFZhbHVlKTsKIAogICAgIHJldHVybiBzZWxlY3Rpb25HZW9tZXRy
eTsKQEAgLTE1MDYsMTUgKzE1MDYsMTUgQEAgT3B0aW9uYWw8Q29tcG9zaXRpb25VbmRlcmxpbmU+
IEFyZ3VtZW50Q29kZXI8Q29tcG9zaXRpb25VbmRlcmxpbmU+OjpkZWNvZGUoRGVjb2QKICAgICBD
b21wb3NpdGlvblVuZGVybGluZSB1bmRlcmxpbmU7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHVuZGVybGluZS5zdGFydE9mZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmRl
cmxpbmUuZW5kT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVuZGVybGluZS50
aGljaykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmRlcmxpbmUuY29tcG9zaXRpb25V
bmRlcmxpbmVDb2xvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1bmRlcmxpbmUuY29s
b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHVuZGVybGluZTsKIH0KQEAgLTE4MTAsMTIgKzE4MTAsMTIg
QEAgT3B0aW9uYWw8RGljdGF0aW9uQWx0ZXJuYXRpdmU+IEFyZ3VtZW50Q29kZXI8RGljdGF0aW9u
QWx0ZXJuYXRpdmU+OjpkZWNvZGUoRGVjb2QKICAgICBPcHRpb25hbDxDaGFyYWN0ZXJSYW5nZT4g
cmFuZ2U7CiAgICAgZGVjb2RlciA+PiByYW5nZTsKICAgICBpZiAoIXJhbmdlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8RGljdGF0aW9uQ29udGV4dD4gY29udGV4dDsKICAgICBkZWNvZGVyID4+IGNvbnRl
eHQ7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICpyYW5nZSwgKmNvbnRl
eHQgfX07CiB9CkBAIC0xOTE1LDE3ICsxOTE1LDE3IEBAIE9wdGlvbmFsPEdyYW1tYXJEZXRhaWw+
IEFyZ3VtZW50Q29kZXI8R3JhbW1hckRldGFpbD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIE9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiByYW5nZTsKICAgICBkZWNvZGVyID4+IHJhbmdl
OwogICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gZ3Vl
c3NlczsKICAgICBkZWNvZGVyID4+IGd1ZXNzZXM7CiAgICAgaWYgKCFndWVzc2VzKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgT3B0aW9uYWw8U3RyaW5nPiB1c2VyRGVzY3JpcHRpb247CiAgICAgZGVjb2RlciA+PiB1c2Vy
RGVzY3JpcHRpb247CiAgICAgaWYgKCF1c2VyRGVzY3JpcHRpb24pCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
eyB7ICpyYW5nZSwgV1RGTW92ZSgqZ3Vlc3NlcyksIFdURk1vdmUoKnVzZXJEZXNjcmlwdGlvbikg
fSB9OwogfQpAQCAtMTk3MiwyMiArMTk3MiwyMiBAQCBPcHRpb25hbDxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IEFyZ3VtZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZGVjb2RlKERlY29kZXImCiB7
CiAgICAgVGV4dENoZWNraW5nVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlw
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Q2hhcmFjdGVyUmFuZ2U+IHJhbmdlOwogICAgIGRl
Y29kZXIgPj4gcmFuZ2U7CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZlY3Rv
cjxHcmFtbWFyRGV0YWlsPj4gZGV0YWlsczsKICAgICBkZWNvZGVyID4+IGRldGFpbHM7CiAgICAg
aWYgKCFkZXRhaWxzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiByZXBsYWNlbWVudDsKICAg
ICBkZWNvZGVyID4+IHJlcGxhY2VtZW50OwogICAgIGlmICghcmVwbGFjZW1lbnQpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4geyB7IHR5cGUsICpyYW5nZSwgV1RGTW92ZSgqZGV0YWlscyksIFdURk1vdmUoKnJl
cGxhY2VtZW50KSB9IH07CiB9CkBAIC0yNDA3LDI2ICsyNDA3LDI2IEBAIE9wdGlvbmFsPEJsb2JQ
YXJ0PiBBcmd1bWVudENvZGVyPEJsb2JQYXJ0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8QmxvYlBhcnQ6OlR5cGU+IHR5cGU7CiAgICAgZGVjb2RlciA+PiB0eXBlOwog
ICAgIGlmICghdHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN3aXRjaCAoKnR5cGUpIHsKICAgICBjYXNlIEJsb2JQ
YXJ0OjpUeXBlOjpEYXRhOiB7CiAgICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0
YTsKICAgICAgICAgZGVjb2RlciA+PiBkYXRhOwogICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgcmV0dXJuIEJsb2JQYXJ0KFdURk1vdmUoKmRhdGEpKTsKICAgICB9CiAgICAg
Y2FzZSBCbG9iUGFydDo6VHlwZTo6QmxvYjogewogICAgICAgICBVUkwgdXJsOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIEJsb2JQ
YXJ0KHVybCk7CiAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9p
ZCBBcmd1bWVudENvZGVyPFRleHRJbmRpY2F0b3JEYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFRleHRJbmRpY2F0b3JEYXRhJiB0ZXh0SW5kaWNhdG9yRGF0YSkKQEAgLTI0NDks
MzcgKzI0NDksMzcgQEAgT3B0aW9uYWw8VGV4dEluZGljYXRvckRhdGE+IEFyZ3VtZW50Q29kZXI8
VGV4dEluZGljYXRvckRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGUKIHsKICAgICBUZXh0SW5kaWNh
dG9yRGF0YSB0ZXh0SW5kaWNhdG9yRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJ
bmRpY2F0b3JEYXRhLnNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS50ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4
dEluZGljYXRvckRhdGEudGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlcykpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHRJbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdp
dGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlU2NhbGVGYWN0b3Ip
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5kaWNhdG9yRGF0YS5lc3RpbWF0
ZWRCYWNrZ3JvdW5kQ29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0ZXh0SW5k
aWNhdG9yRGF0YS5wcmVzZW50YXRpb25UcmFuc2l0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUodGV4dEluZGljYXRvckRhdGEub3B0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgdGV4dEluZGljYXRvckRhdGEuY29udGVudEltYWdlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVyLCB0ZXh0SW5kaWNhdG9y
RGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2RlT3B0
aW9uYWxJbWFnZShkZWNvZGVyLCB0ZXh0SW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0
U2VsZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0ZXh0SW5kaWNhdG9yRGF0YTsKIH0KQEAgLTI2
NDMsMTA2ICsyNjQzLDEwNiBAQCBPcHRpb25hbDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBBcmd1
bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoRAogICAgIE9wdGlvbmFs
PFJlZ2lzdHJhYmxlRG9tYWluPiByZWdpc3RyYWJsZURvbWFpbjsKICAgICBkZWNvZGVyID4+IHJl
Z2lzdHJhYmxlRG9tYWluOwogICAgIGlmICghcmVnaXN0cmFibGVEb21haW4pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgc3Rh
dGlzdGljcy5yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUoKnJlZ2lzdHJhYmxlRG9tYWluKTsK
IAogICAgIGRvdWJsZSBsYXN0U2VlblRpbWVBc0RvdWJsZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGxhc3RTZWVuVGltZUFzRG91YmxlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLmxhc3RTZWVuID0g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGxhc3RTZWVuVGltZUFzRG91YmxlKTsKICAgICAKICAg
ICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmhhZFVzZXJJbnRlcmFjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWVBc0RvdWJsZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lQXNEb3VibGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3MubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWVBc0RvdWJsZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MuZ3JhbmRmYXRoZXJlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBTdG9yYWdlIGFjY2Vzcwog
ICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgZGVjb2RlciA+PiBzdG9yYWdlQWNjZXNzVW5kZXJUb3BG
cmFtZURvbWFpbnM7CiAgICAgaWYgKCFzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgc3RhdGlzdGljcy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgPSBX
VEZNb3ZlKCpzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMpOwogCiAgICAgLy8gVG9w
IGZyYW1lIHN0YXRzCiAgICAgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHRv
cEZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CiAgICAgZGVjb2RlciA+PiB0b3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvOwogICAgIGlmICghdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBz
dGF0aXN0aWNzLnRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gPSBXVEZNb3ZlKCp0b3BGcmFtZVVu
aXF1ZVJlZGlyZWN0c1RvKTsKIAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+PiB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgZGVjb2RlciA+PiB0b3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c0Zyb207CiAgICAgaWYgKCF0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zy
b20pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgc3RhdGlzdGljcy50b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSBXVEZN
b3ZlKCp0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20pOwogCiAgICAgT3B0aW9uYWw8SGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4+IHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHM7CiAg
ICAgZGVjb2RlciA+PiB0b3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzOwogICAgIGlmICgh
dG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnRvcEZy
YW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHMgPSBXVEZNb3ZlKCp0b3BGcmFtZUxvYWRlZFRoaXJk
UGFydHlTY3JpcHRzKTsKIAogICAgIC8vIFN1YmZyYW1lIHN0YXRzCiAgICAgT3B0aW9uYWw8SGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAg
ICAgZGVjb2RlciA+PiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGlmICghc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5z
KTsKIAogICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCiAgICAgT3B0aW9uYWw8SGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnM7CiAgICAgZGVj
b2RlciA+PiBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zOwogICAgIGlmICghc3VicmVz
b3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZURvbWFpbnMgPSBXVEZNb3ZlKCpzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zKTsKIAogICAgIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBzdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwogICAgIGRlY29kZXIgPj4gc3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbzsKICAgICBpZiAoIXN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID0gV1RGTW92ZSgq
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGRl
Y29kZXIgPj4gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tOwogICAgIGlmICghc3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tID0gV1RGTW92ZSgqc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tKTsKIAogICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RhdGlzdGljcy5pc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmRhdGFSZWNvcmRzUmVtb3ZlZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgCiAjaWYgRU5BQkxFKFdFQl9BUElfU1RBVElTVElDUykKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3MuZm9udHNGYWlsZWRUb0xvYWQpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5mb250c1N1Y2Nlc3NmdWxseUxvYWRlZCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lUmVnaXN0cmFi
bGVEb21haW5zV2hpY2hBY2Nlc3NlZFdlYkFQSXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RhdGlzdGljcy5jYW52YXNBY3Rpdml0eVJlY29yZCkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLm5hdmlnYXRvckZ1bmN0aW9uc0FjY2Vzc2Vk
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc2NyZWVuRnVu
Y3Rpb25zQWNjZXNzZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICByZXR1cm4gc3RhdGlzdGljczsKQEAg
LTI4NzcsMTIgKzI4NzcsMTIgQEAgT3B0aW9uYWw8TWVkaWFTZWxlY3Rpb25PcHRpb24+IEFyZ3Vt
ZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+OjpkZWNvZGUoRGVjb2QKICAgICBPcHRpb25h
bDxTdHJpbmc+IGRpc3BsYXlOYW1lOwogICAgIGRlY29kZXIgPj4gZGlzcGxheU5hbWU7CiAgICAg
aWYgKCFkaXNwbGF5TmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxNZWRpYVNlbGVjdGlvbk9w
dGlvbjo6VHlwZT4gdHlwZTsKICAgICBkZWNvZGVyID4+IHR5cGU7CiAgICAgaWYgKCF0eXBlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIAogICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkaXNwbGF5TmFtZSksIFdURk1vdmUoKnR5
cGUpIH19OwogfQpAQCAtMjkxNyw3ICsyOTE3LDcgQEAgT3B0aW9uYWw8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+Pjo6ZGVjb2RlKEQK
IHsKICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG9yaWdpbjsKIH0KIApAQCAtMjkzOSwzMiAr
MjkzOSwzMiBAQCBPcHRpb25hbDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0
cmlidXRlcz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIEZvbnRBdHRyaWJ1dGVzIGF0
dHJpYnV0ZXM7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuYmFja2dyb3Vu
ZENvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5mb3JlZ3Jv
dW5kQ29sb3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZvbnRT
aGFkb3cpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmhhc1VuZGVy
bGluZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuaGFzU3RyaWtl
VGhyb3VnaCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMudGV4dExp
c3RzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5ob3Jpem9udGFs
QWxpZ25tZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5zdWJz
Y3JpcHRPclN1cGVyc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzUGxhdGZvcm1EYXRhKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzUGxh
dGZvcm1EYXRhKQogICAgICAgICByZXR1cm4gZGVjb2RlUGxhdGZvcm1EYXRhKGRlY29kZXIsIGF0
dHJpYnV0ZXMpOwogCkBAIC0yOTgyLDE1ICsyOTgyLDE1IEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVu
dERhCiB7CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShp
ZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG1pbWVUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgV1RGTW92ZShp
ZGVudGlmaWVyKSwgV1RGTW92ZShtaW1lVHlwZSksIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgfX07CiB9CkBAIC0zMDEyLDExICszMDEyLDEx
IEBAIE9wdGlvbmFsPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvCiB7CiAgICAgYm9vbCBoYXNQbGF0Zm9ybURhdGE7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNQbGF0Zm9ybURhdGEpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQbGF0Zm9ybVR5cGUgdHlwZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1BsYXRmb3Jt
RGF0YSkKICAgICAgICAgcmV0dXJuIGRlY29kZVBsYXRmb3JtRGF0YShkZWNvZGVyLCB0eXBlKTsK
QEAgLTMwMzUsNyArMzAzNSw3IEBAIE9wdGlvbmFsPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBBcmd1
bWVudENvZGVyPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjCiB7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRl
Y29kZXIsIGJ1ZmZlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQpAQCAtMzA0OSw3ICsz
MDQ5LDcgQEAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGUKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVy
KSB8fCAhYnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwog
fQpAQCAtMzA3OCwxMCArMzA3OCwxMCBAQCBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0
QnVmZmVyPiBkZWNvZGVTY3JpcHRCdWZmZXJBc1NoYXJlYWJsZVJlc291cmNlSGFuZAogewogICAg
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFuZGxlKSB8fCBoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBidWZmZXIgPSBoYW5k
bGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQogI2VuZGlm
CkBAIC0zMTA2LDE0ICszMTA2LDE0IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4g
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUoRGVjCiAgICAgT3B0
aW9uYWw8Ym9vbD4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKICAgICBkZWNvZGVyID4+IGlz
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiAgICAgaWYgKCFpc1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICgqaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkKICAgICAgICAgcmV0
dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7
CiAjZW5kaWYKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9OwogfQpAQCAtMzEzMSwxMyArMzEz
MSwxMyBAQCBPcHRpb25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+ICBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbgogewogICAgIFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZVR5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5
cGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYnVmZmVyKSB8fCAhYnVmZmVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIG1ha2VPcHRp
b25hbDxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkgfSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbDxXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+KHsgdHlwZSwgYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCkgfSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIApAQCAt
MzE2NiwzNCArMzE2NiwzNCBAQCBPcHRpb25hbDxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NDbwogewogICAgIEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHRyaWJ1dGVzOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYXR0cmlidXRlcy5hbHBoYSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1
dGVzLmRlcHRoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGF0dHJpYnV0ZXMuc3RlbmNp
bCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmFudGlhbGlhcykpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1
ZmZlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmZhaWxJZk1ham9y
UGVyZm9ybWFuY2VDYXZlYXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5wb3dlclByZWZlcmVuY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRl
cy5zaGFyZVJlc291cmNlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVz
LndlYkdMVmVyc2lvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLm5v
RXh0ZW5zaW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhdHRyaWJ1dGVzLmRldmlj
ZVBpeGVsUmF0aW8pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0cmlidXRlcy5pbml0
aWFsUG93ZXJQcmVmZXJlbmNlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShhdHRyaWJ1dGVzLnhyQ29tcGF0aWJsZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICByZXR1
cm4gYXR0cmlidXRlczsKIH0KQEAgLTMyMTUsMTEgKzMyMTUsMTEgQEAgT3B0aW9uYWw8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w6OkFjdGl2ZUluZm8+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3MKIHsKICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTDo6QWN0aXZlSW5mbyBh
Y3RpdmVJbmZvOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWN0aXZlSW5mby5uYW1lKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFjdGl2ZUluZm8udHlwZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhY3RpdmVJbmZvLnNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBhY3RpdmVJbmZv
OwogfQogCkBAIC0zMjM3LDEyICszMjM3LDEyIEBAIE9wdGlvbmFsPEltYWdlRXh0cmFjdGlvbkRh
dGFEZXRlY3RvckluZm8+IEFyZ3VtZW50Q29kZXI8SW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjCiB7
CiAgICAgSW1hZ2VFeHRyYWN0aW9uRGF0YURldGVjdG9ySW5mbyByZXN1bHQ7CiAgICAgaWYgKCFk
ZWNvZGVQbGF0Zm9ybURhdGEoZGVjb2RlciwgcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFZl
Y3RvcjxGbG9hdFF1YWQ+PiBub3JtYWxpemVkUXVhZHM7CiAgICAgZGVjb2RlciA+PiBub3JtYWxp
emVkUXVhZHM7CiAgICAgaWYgKCFub3JtYWxpemVkUXVhZHMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXN1bHQubm9y
bWFsaXplZFF1YWRzID0gV1RGTW92ZSgqbm9ybWFsaXplZFF1YWRzKTsKICAgICByZXR1cm4gV1RG
TW92ZShyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCBmYjJhNmZiOTE0YzdmOTZkY2M5Mzc0MzdhMDI0ODM5OTk3
YjU3MmI1Li5hYjg2OWI0MTA3N2IyZGJhMjgxZDQyYzE0NjFkOWVlM2Q5YWU4ODMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtMTkyLDE2MyArMTkyLDE2MyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
PiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy52aWV3U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmFjdGl2aXR5U3RhdGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zdG9yZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRyYXdp
bmdBcmVhVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8RHJhd2luZ0FyZWFJZGVudGlmaWVyPiBkcmF3
aW5nQXJlYUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBkcmF3aW5nQXJlYUlkZW50aWZpZXI7
CiAgICAgaWYgKCFkcmF3aW5nQXJlYUlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5kcmF3
aW5nQXJlYUlkZW50aWZpZXIgPSAqZHJhd2luZ0FyZWFJZGVudGlmaWVyOwogICAgIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IHdlYlBhZ2VQcm94eUlkZW50aWZpZXI7CiAgICAgZGVj
b2RlciA+PiB3ZWJQYWdlUHJveHlJZGVudGlmaWVyOwogICAgIGlmICghd2ViUGFnZVByb3h5SWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlkZW50aWZpZXIgPSBXVEZN
b3ZlKCp3ZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKICAgICBPcHRpb25hbDxXZWJQYWdlR3JvdXBE
YXRhPiBwYWdlR3JvdXBEYXRhOwogICAgIGRlY29kZXIgPj4gcGFnZUdyb3VwRGF0YTsKICAgICBp
ZiAoIXBhZ2VHcm91cERhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5wYWdlR3JvdXBEYXRhID0gV1RG
TW92ZSgqcGFnZUdyb3VwRGF0YSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LmlzRWRpdGFibGUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51bmRl
cmxheUNvbG9yKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlRml4
ZWRMYXlvdXQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5maXhlZExh
eW91dFNpemUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3RXhw
b3NlZFJlY3QpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbHdheXNT
aG93c0hvcml6b250YWxTY3JvbGxlcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnBhZ2luYXRpb25Nb2RlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMucGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucykpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnBhZ2VMZW5ndGgpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5nYXBCZXR3ZWVuUGFnZXMpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIE9wdGlvbmFsPFN0cmluZz4gdXNlckFnZW50OwogICAgIGRlY29kZXIgPj4gdXNlckFn
ZW50OwogICAgIGlmICghdXNlckFnZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXNlckFnZW50ID0g
V1RGTW92ZSgqdXNlckFnZW50KTsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGl0ZW1TdGF0ZXNXZXJl
UmVzdG9yZWRCeUFQSVJlcXVlc3Q7CiAgICAgZGVjb2RlciA+PiBpdGVtU3RhdGVzV2VyZVJlc3Rv
cmVkQnlBUElSZXF1ZXN0OwogICAgIGlmICghaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVx
dWVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLml0ZW1TdGF0ZXNXZXJlUmVzdG9yZWRCeUFQSVJlcXVl
c3QgPSAqaXRlbVN0YXRlc1dlcmVSZXN0b3JlZEJ5QVBJUmVxdWVzdDsKIAogICAgIE9wdGlvbmFs
PFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+PiBpdGVtU3RhdGVzOwogICAgIGRlY29k
ZXIgPj4gaXRlbVN0YXRlczsKICAgICBpZiAoIWl0ZW1TdGF0ZXMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5pdGVtU3RhdGVzID0gV1RGTW92ZSgqaXRlbVN0YXRlcyk7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY2FuUnVuTW9kYWwpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5kZXZpY2VTY2FsZUZhY3RvcikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpZXdTY2FsZUZhY3RvcikpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnRleHRab29tRmFjdG9yKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucGFnZVpvb21GYWN0b3IpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRpYVZvbHVtZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBP
cHRpb25hbDxXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3M+IG11dGVkU3Rh
dGVGbGFnczsKICAgICBkZWNvZGVyID4+IG11dGVkU3RhdGVGbGFnczsKICAgICBpZiAoIW11dGVk
U3RhdGVGbGFncykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm11dGVkID0gKm11dGVkU3RhdGVGbGFnczsK
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tYXlTdGFydE1lZGlhV2hlbklu
V2luZG93KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFQbGF5
YmFja0lzU3VzcGVuZGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
bWluaW11bVNpemVGb3JBdXRvTGF5b3V0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4aW11bVNpemUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVp
Z2h0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNjcm9sbFBpbm5pbmdCZWhhdmlvcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDx1
aW50MzJfdD4+IHNjcm9sbGJhck92ZXJsYXlTdHlsZTsKICAgICBkZWNvZGVyID4+IHNjcm9sbGJh
ck92ZXJsYXlTdHlsZTsKICAgICBpZiAoIXNjcm9sbGJhck92ZXJsYXlTdHlsZSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSA9IFdURk1vdmUoKnNjcm9sbGJhck92ZXJs
YXlTdHlsZSk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dyb3Vu
ZEV4dGVuZHNCZXlvbmRQYWdlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMubGF5ZXJIb3N0aW5nTW9kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1pbWVUeXBlc1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29udHJvbGxlZEJ5QXV0b21hdGlvbikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmlzUHJvY2Vzc1N3YXApKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VEYXJrQXBwZWFyYW5jZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxl
dmVsKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IGhhc1Jlc291cmNlTG9hZENsaWVudDsKICAg
ICBkZWNvZGVyID4+IGhhc1Jlc291cmNlTG9hZENsaWVudDsKICAgICBpZiAoIWhhc1Jlc291cmNl
TG9hZENsaWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdU
Rk1vdmUoKmhhc1Jlc291cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
T3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsKICAg
ICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFjb2xvclNwYWNlKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuY29sb3JTcGFjZSA9IFdURk1vdmUoKmNvbG9yU3BhY2UpOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3cG9ydENvbmZpZ3VyYXRp
b25MYXlvdXRTaXplU2NhbGVGYWN0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy52aWV3cG9ydENvbmZpZ3VyYXRpb25NaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aWV3cG9ydENvbmZpZ3Vy
YXRpb25WaWV3U2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHM+PiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogICAgIGRlY29kZXIgPj4g
b3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKICAgICBpZiAoIW92ZXJyaWRlVmlld3BvcnRBcmd1
bWVudHMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzID0gV1RG
TW92ZSgqb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyk7CiAjZW5kaWYKIApAQCAtMzU2LDYxICsz
NTYsNjEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBPcHRpb25hbDxPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9u
SGFuZGxlczsKICAgICBkZWNvZGVyID4+IGF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBpZiAoIWF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcykKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBw
YXJhbWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKmF0
dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNjcmVlblNp
emUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hdmFpbGFibGVTY3Jl
ZW5TaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGVT
Y3JlZW5TaXplKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudGV4dEF1
dG9zaXppbmdXaWR0aCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1h
eGltdW1Vbm9ic2N1cmVkU2l6ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLmRldmljZU9yaWVudGF0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuY2FuU2hvd1doaWxlTG9ja2VkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuaXNDYXB0dXJpbmdTY3JlZW4pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUUoMjA3NzE2KTog
VGhlIGZvbGxvd2luZyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoZSBHUFUgcHJvY2VzcyBpcyBj
b21wbGV0ZS4KICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheT4gbWVk
aWFFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gbWVkaWFFeHRlbnNpb25IYW5kbGVz
OwogICAgIGlmICghbWVkaWFFeHRlbnNpb25IYW5kbGVzKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMubWVk
aWFFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqbWVkaWFFeHRlbnNpb25IYW5kbGVzKTsKIAog
ICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBtZWRpYUlPS2l0RXh0
ZW5zaW9uSGFuZGxlczsKICAgICBkZWNvZGVyID4+IG1lZGlhSU9LaXRFeHRlbnNpb25IYW5kbGVz
OwogICAgIGlmICghbWVkaWFJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5tZWRpYUlPS2l0RXh0ZW5zaW9uSGFuZGxlcyA9IFdURk1vdmUoKm1lZGlhSU9LaXRFeHRlbnNp
b25IYW5kbGVzKTsKICAgICAvLyBGSVhNRSgyMDc3MTYpOiBFbmQgcmVnaW9uIHRvIHJlbW92ZS4K
IAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5PiBncHVJT0tpdEV4
dGVuc2lvbkhhbmRsZXM7CiAgICAgZGVjb2RlciA+PiBncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXM7
CiAgICAgaWYgKCFncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5n
cHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBXVEZNb3ZlKCpncHVJT0tpdEV4dGVuc2lvbkhhbmRs
ZXMpOwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk+IGdwdU1h
Y2hFeHRlbnNpb25IYW5kbGVzOwogICAgIGRlY29kZXIgPj4gZ3B1TWFjaEV4dGVuc2lvbkhhbmRs
ZXM7CiAgICAgaWYgKCFncHVNYWNoRXh0ZW5zaW9uSGFuZGxlcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmdwdU1hY2hFeHRlbnNpb25IYW5kbGVzID0gV1RGTW92ZSgqZ3B1TWFjaEV4dGVuc2lvbkhhbmRs
ZXMpOwogI2VuZGlmCiAKQEAgLTQxOCwxODUgKzQxOCwxODUgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2QKICAgICBPcHRpb25hbDxPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+PiBm
b250TWFjaEV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGZvbnRNYWNoRXh0ZW5zaW9u
SGFuZGxlOwogICAgIGlmICghZm9udE1hY2hFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1l
dGVycy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmZvbnRNYWNoRXh0ZW5zaW9u
SGFuZGxlKTsKICNlbmRpZgogCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9SUykKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYWNjZW50Q29sb3IpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNp
ZiBVU0UoV1BFX1JFTkRFUkVSKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5o
b3N0RmlsZURlc2NyaXB0b3IpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvd0hhbmRsZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAj
ZW5kaWYKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHBhcmFtZXRlcnMub2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxkb3VibGU+PiBjcHVMaW1pdDsKICAgICBkZWNv
ZGVyID4+IGNwdUxpbWl0OwogICAgIGlmICghY3B1TGltaXQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5j
cHVMaW1pdCA9IFdURk1vdmUoKmNwdUxpbWl0KTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+IHVybFNjaGVtZXNXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xIYW5kbGVyczsK
ICAgICBkZWNvZGVyID4+IHVybFNjaGVtZXNXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xIYW5kbGVy
czsKICAgICBpZiAoIXVybFNjaGVtZXNXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xIYW5kbGVycykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xIYW5k
bGVycyA9IFdURk1vdmUoKnVybFNjaGVtZXNXaXRoTGVnYWN5Q3VzdG9tUHJvdG9jb2xIYW5kbGVy
cyk7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgT3B0aW9uYWw8T3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4+IGFwcGxpY2F0aW9uTWFuaWZlc3Q7
CiAgICAgZGVjb2RlciA+PiBhcHBsaWNhdGlvbk1hbmlmZXN0OwogICAgIGlmICghYXBwbGljYXRp
b25NYW5pZmVzdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBXVEZN
b3ZlKCphcHBsaWNhdGlvbk1hbmlmZXN0KTsKICNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5uZWVkc0ZvbnRBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5pY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5lbnVtZXJhdGluZ0FsbE5ldHdvcmtJ
bnRlcmZhY2VzRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJQYXJhbWV0ZXJzPiB1c2VyQ29udGVudENvbnRyb2xsZXJQYXJhbWV0ZXJzOwogICAgIGRlY29k
ZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1ldGVyczsKICAgICBpZiAoIXVzZXJDb250
ZW50Q29udHJvbGxlclBhcmFtZXRlcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENv
bnRyb2xsZXJQYXJhbWV0ZXJzID0gV1RGTW92ZSgqdXNlckNvbnRlbnRDb250cm9sbGVyUGFyYW1l
dGVycyk7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4+IGJhY2tncm91
bmRDb2xvcjsKICAgICBkZWNvZGVyID4+IGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoIWJhY2tn
cm91bmRDb2xvcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1vdmUo
KmJhY2tncm91bmRDb2xvcik7CiAKICAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+IG9sZFBhZ2VJRDsKICAgICBp
ZiAoIW9sZFBhZ2VJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLm9sZFBhZ2VJRCA9IFdURk1vdmUoKm9s
ZFBhZ2VJRCk7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGRl
bk1lZGlhVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zOwogICAgIGRlY29kZXIgPj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOwogICAg
IGlmICghY29yc0Rpc2FibGluZ1BhdHRlcm5zKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAogICAgIE9w
dGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGRlY29kZXIgPj4gbG9hZHNTdWJy
ZXNvdXJjZXM7CiAgICAgaWYgKCFsb2Fkc1N1YnJlc291cmNlcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJz
LmxvYWRzU3VicmVzb3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOwogCiAgICAgT3B0aW9uYWw8
T3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+Pj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBkZWNv
ZGVyID4+IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgaWYgKCFhbGxvd2VkTmV0d29ya0hvc3Rz
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0cyA9ICphbGxvd2VkTmV0d29y
a0hvc3RzOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxO
b3RpZmljYXRpb247CiAgICAgZGVjb2RlciA+PiB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjsKICAgICBpZiAoIXVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmlj
YXRpb24gPSAqdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgCiAg
ICAgT3B0aW9uYWw8Ym9vbD4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwog
ICAgIGRlY29kZXIgPj4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAg
IGlmICghY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFt
ZXRlcnMuY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gKmNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICAKICAgICBPcHRpb25hbDxTdHJpbmc+IHBy
b2Nlc3NEaXNwbGF5TmFtZTsKICAgICBkZWNvZGVyID4+IHByb2Nlc3NEaXNwbGF5TmFtZTsKICAg
ICBpZiAoIXByb2Nlc3NEaXNwbGF5TmFtZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnByb2Nlc3NEaXNw
bGF5TmFtZSA9IFdURk1vdmUoKnByb2Nlc3NEaXNwbGF5TmFtZSk7CiAgICAgCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVBdWRpb0luVUlQcm9jZXNzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRDYXB0dXJlQXVk
aW9JbkdQVVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNob3VsZENhcHR1cmVWaWRlb0luVUlQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5zaG91bGRDYXB0dXJlVmlkZW9JbkdQVVByb2Nlc3MpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZENhcHR1cmVEaXNwbGF5SW5V
SVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3Vs
ZFJlbmRlckNhbnZhc0luR1BVUHJvY2VzcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMuc2hvdWxkUmVuZGVyRE9NSW5HUFVQcm9jZXNzKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRQbGF5TWVkaWFJbkdQVVByb2Nlc3MpKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
c2hvdWxkUmVuZGVyV2ViR0xJbkdQVVByb2Nlc3MpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA4RGVjb2RlcikpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5RGVjb2Rlcikp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlVlA5
U1dEZWNvZGVyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9t
YWlucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMudGhlbWVOYW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmh0dHBzVXBncmFkZUVuYWJsZWQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5hbGxvd3NEZXByZWNhdGVkU3luY2hyb25v
dXNYTUxIdHRwUmVxdWVzdER1cmluZ1VubG9hZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRl
eCAwNmRkYmVmNWQ3NWEzYWQ2NzVlMTEyMmM4ZDIxYTk0NTMzNjE4ZDI2Li5iMDlmMWMyOWE3MjEw
NTk1MDMzNzFjOWFlZGNhYTBhNzM1ZDRjNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcApAQCAtNDEsMTIgKzQxLDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91
cERhdGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAg
ICAgT3B0aW9uYWw8U3RyaW5nPiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VHcm91cElEOwogICAgIGRlY29kZXIgPj4gcGFnZUdyb3VwSUQ7CiAgICAgaWYgKCFwYWdl
R3JvdXBJRCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCAqcGFnZUdyb3VwSUQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGxhdGZv
cm1Ub3VjaFBvaW50LmNwcAppbmRleCBjZTc0YWJmZjkxY2M2OWNiMDkyODQzNDkzMjRmYTQ4MDhh
NjNmZjkwLi45ZDQ0MDZhNDBhNGZhZGRmYjMwYzJlNjAxODVmMjhmM2FhMzJmODc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQbGF0Zm9ybVRvdWNoUG9pbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBsYXRmb3JtVG91Y2hQb2ludC5jcHAKQEAgLTY5LDE5
ICs2OSwxOSBAQCBPcHRpb25hbDxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjbwogewogICAgIFdlYlBsYXRmb3JtVG91
Y2hQb2ludCByZXN1bHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9pZCkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9zdGF0ZSkpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubV9zY3JlZW5Qb3NpdGlvbikpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9wb3NpdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQubV9yYWRpdXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
cm90YXRpb25BbmdsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9mb3Jj
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVw
SXRlbS5jcHAKaW5kZXggNmZiN2E1Y2IwNDhlZmExZTJiZDViYzVhN2E4YTA2ODI1M2EzMmUwZS4u
MTM4MTY1YTM1MDQ1NGE1ZTM2MmY3YWI2OTAwNGIzMmU4ZmUzOTMyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQb3B1cEl0ZW0uY3BwCkBAIC04MCwzOSArODAsMzkgQEAgT3B0aW9uYWw8V2ViUG9w
dXBJdGVtPiBXZWJQb3B1cEl0ZW06OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgVHlwZSB0eXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBT
dHJpbmcgdGV4dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHRleHQpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAg
IFdlYkNvcmU6OlRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbjsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHRleHREaXJlY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3Zl
cnJpZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgU3RyaW5nIHRvb2xUaXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0b29s
VGlwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGFjY2Vzc2liaWxpdHlUZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaXNFbmFibGVkOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wgaXNMYWJl
bDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzTGFiZWwpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYm9vbCBpc1Nl
bGVjdGVkOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNTZWxlY3RlZCkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4ge3sgdHlwZSwgdGV4dCwgdGV4dERpcmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJy
aWRlLCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsLCBpc1Nl
bGVjdGVkIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgKaW5kZXggNmYxMjVmOTgyZDBjY2U2ZTM3MWQ2ZDhkYWI4ZGNl
MzY4M2M5ZjUxNC4uMWRhNWUzMGEyNDM2ZTlmMGZiNWMwMDM5MDAyMWU5ZjQzZTA4ZDdmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycy5oCkBAIC04NSw2OCArODUsNjggQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBP
cHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEOwogICAgIGRlY29kZXIgPj4gc2Vzc2lv
bklEOwogICAgIGlmICghc2Vzc2lvbklEKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3Rvcnk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBkZWNvZGVyID4+IGFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFhcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShhcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVk
aWFDYWNoZURpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+
PiBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghbWVkaWFDYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFN0cmluZyBtZWRpYUtleVN0b3Jh
Z2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnkpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBtZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFtZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBTdHJpbmcgamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogICAgIGRlY29kZXIgPj4gamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gdGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAgICAgZGVjb2RlciA+PiBkb21h
aW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICAgICBpZiAoIWRvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPEhhc2hNYXA8VG9wRnJhbWVEb21haW4sIFN1YlJl
c291cmNlRG9tYWluPj4gZG9tYWluc1dpdGhTdG9yYWdlQWNjZXNzUXVpcms7CiAgICAgZGVjb2Rl
ciA+PiBkb21haW5zV2l0aFN0b3JhZ2VBY2Nlc3NRdWlyazsKICAgICBpZiAoIWRvbWFpbnNXaXRo
U3RvcmFnZUFjY2Vzc1F1aXJrKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBib29sIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMgewogICAgICAgICBXVEZNb3ZlKCpzZXNzaW9uSUQpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5jcHAKaW5kZXggMjIwYjVmOTAwOTJlZmQ2YzkzMGExODkwM2Q1OWQ5ZjlhZmExZGM3YS4u
NjgwYjYyZjIxNjcwOTBkMDgzMGQ4NTlhNmRlZmM2Yzk3MTcyOGRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuY3BwCkBAIC00MiwxNyArNDIsMTcgQEAgT3B0aW9uYWw8V2ViVXNlclNjcmlwdERhdGE+IFdl
YlVzZXJTY3JpcHREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKICAg
ICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Q29udGVudFdvcmxkSWRl
bnRpZmllcj4gd29ybGRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gd29ybGRJZGVudGlmaWVy
OwogICAgIGlmICghd29ybGRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlVzZXJTY3JpcHQ+IHVzZXJTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiB1c2VyU2NyaXB0Owog
ICAgIGlmICghdXNlclNjcmlwdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRl
bnRpZmllciksIFdURk1vdmUoKndvcmxkSWRlbnRpZmllciksIFdURk1vdmUoKnVzZXJTY3JpcHQp
IH19OwogfQpAQCAtNjksMTYgKzY5LDE2IEBAIE9wdGlvbmFsPFdlYlVzZXJTdHlsZVNoZWV0RGF0
YT4gV2ViVXNlclN0eWxlU2hlZXREYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvCiAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVy
OwogICAgIGlmICghaWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBPcHRpb25hbDxDb250ZW50V29y
bGRJZGVudGlmaWVyPiB3b3JsZElkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB3b3JsZElkZW50
aWZpZXI7CiAgICAgaWYgKCF3b3JsZElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQgdXNlclN0eWxlU2hlZXQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1
c2VyU3R5bGVTaGVldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCBXVEZNb3ZlKCp3b3JsZElkZW50aWZpZXIpLCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSB9
fTsKIH0KQEAgLTk2LDE3ICs5NiwxNyBAQCBPcHRpb25hbDxXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ckRhdGE+IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyRGF0YTo6ZGVjb2RlKElQQzo6RAogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsK
ICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8Q29udGVudFdvcmxk
SWRlbnRpZmllcj4gd29ybGRJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gd29ybGRJZGVudGlm
aWVyOwogICAgIGlmICghd29ybGRJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gbmFtZTsKICAgICBkZWNvZGVyID4+IG5hbWU7CiAgICAgaWYgKCFuYW1lKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp3b3JsZElkZW50aWZp
ZXIpLCBXVEZNb3ZlKCpuYW1lKSB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYldoZWVsRXZlbnRDb2FsZXNjZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
V2hlZWxFdmVudENvYWxlc2Nlci5jcHAKaW5kZXggYjUwZjk5OTM2ZGM4MDI2MTA4NWE5YzA3YjJj
ZTQ4ZmE3MzNlOTM3ZC4uYzRmODNlYzI2OWY3ZjdjMWNmMjYxMTI4OTZjODRiNzlkZGUyMTliMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViV2hlZWxFdmVudENvYWxlc2Nlci5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCBib29sIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI6OnNob3VsZERp
c3BhdGNoRXZlbnROb3coY29uc3QgV2ViV2hlZWxFdmVudCYgZXZlbnQpCiBPcHRpb25hbDxXZWJX
aGVlbEV2ZW50PiBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOjpuZXh0RXZlbnRUb0Rpc3BhdGNoKCkK
IHsKICAgICBpZiAobV93aGVlbEV2ZW50UXVldWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBj
b2FsZXNjZWRFdmVudCA9IG1fd2hlZWxFdmVudFF1ZXVlLnRha2VGaXJzdCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKaW5kZXggN2Nl
NGViMzRiM2U1NWFmMWVhZDQ3MDlkYmQyYTliY2I1Y2UwZGVhYi4uOGRmYWEzZGM5MDkwNGEyYmMx
ZjFhYjNhMjIxNzRiZDFiNTBlOWU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcApAQCAtNDksMTQgKzQ5LDE0IEBAIGF1dG8gV2Vic2l0
ZURhdGE6OkVudHJ5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSAtPiBPcHRpb25hbDxF
bnRyeT4KICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5
T3JpZ2luRGF0YTsKICAgICBkZWNvZGVyID4+IHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBpZiAo
IXNlY3VyaXR5T3JpZ2luRGF0YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQub3JpZ2luID0gV1RGTW92ZSgqc2Vj
dXJpdHlPcmlnaW5EYXRhKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUp
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2l6ZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMuY3BwCmluZGV4IGYwNTkyZDZiNmU2NjhiNmI3N2UzMmNiNWVmMjIz
ZWNiZmE5NGVhYTguLmNiMmU2NzBmMTU3NDU1MTMxZDNlZGE1MmUzYmMzM2Y4NGIxODAyYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cy5jcHAKQEAgLTYxLDg3ICs2MSw4NyBAQCBPcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycz4gV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlYwogICAgIE9w
dGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXR3b3JrU2Vzc2lvblBh
cmFtZXRlcnM7CiAgICAgZGVjb2RlciA+PiBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAg
aWYgKCFuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMgPSBXVEZNb3ZlKCpuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMpOwog
CiAgICAgT3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRl
bnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVpUHJvY2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVy
OwogICAgIGlmICghdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFy
YW1ldGVycy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllciA9IFdURk1vdmUoKnVpUHJv
Y2Vzc0Nvb2tpZVN0b3JhZ2VJZGVudGlmaWVyKTsKIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVj
b2RlciA+PiBjb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWNvb2tp
ZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29va2llU3Rv
cmFnZVBhdGhFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjb29raWVTdG9yYWdlUGF0aEV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IGluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeTsKICAgICBkZWNvZGVyID4+IGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICBpZiAo
IWluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRh
YmFzZURpcmVjdG9yeSA9IFdURk1vdmUoKmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSk7CiAgICAg
CiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBpbmRleGVkRGF0YWJhc2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFpbmRleGVkRGF0YWJhc2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCppbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIE9wdGlv
bmFsPFN0cmluZz4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeTsKICAgICBkZWNv
ZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3Rvcnk7CiAgICAgaWYgKCFzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnkpOwogICAgIAogICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIAogICAgIE9wdGlvbmFsPGJv
b2w+IHNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQ7CiAgICAgZGVj
b2RlciA+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkOwogICAg
IGlmICghc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQg
PSBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKTsK
ICNlbmRpZgogCiAgICAgT3B0aW9uYWw8U3RyaW5nPiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFsb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBX
VEZNb3ZlKCpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlPiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAg
ICAgZGVjb2RlciA+PiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAg
aWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1l
dGVycy5sb2NhbFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpsb2Nh
bFN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgT3B0aW9uYWw8U3RyaW5n
PiBjYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJl
Y3Rvcnk7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVy
cy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3Rvcnkp
OwogCiAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjYWNoZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZGVjb2RlciA+PiBjYWNoZVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpjYWNoZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAg
ICBkZWNvZGVyID4+IHBlck9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBpZiAoIXBlck9yaWdpblN0
b3JhZ2VRdW90YSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLnBlck9yaWdpblN0b3JhZ2VRdW90YSA9ICpw
ZXJPcmlnaW5TdG9yYWdlUXVvdGE7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gcGVyVGhpcmRQ
YXJ0eU9yaWdpblN0b3JhZ2VRdW90YTsKICAgICBkZWNvZGVyID4+IHBlclRoaXJkUGFydHlPcmln
aW5TdG9yYWdlUXVvdGE7CiAgICAgaWYgKCFwZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3Rh
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMucGVyVGhpcmRQYXJ0eU9yaWdpblN0b3JhZ2VRdW90YSA9ICpw
ZXJUaGlyZFBhcnR5T3JpZ2luU3RvcmFnZVF1b3RhOwogICAgIAogICAgIHJldHVybiBwYXJhbWV0
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAppbmRl
eCBkNDc3NTNiMzkwNGQ4YjI5Y2VlMmNhYTViZWQ4ZjIxZjEwZmE0MGQzLi40YTVmZTE0ZjJlYTRm
ODU4ZmRhMmM3ZGVhOWNkZjc4YmYxYTNhZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcApAQCAtNjEsODkgKzYxLDg5IEBAIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCiAgICAgT3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5hYmxlZDsKICAg
ICBkZWNvZGVyID4+IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7CiAgICAgaWYgKCFjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIE9wdGlvbmFsPFdlYnNpdGVBdXRvcGxheVBvbGlj
eT4gYXV0b3BsYXlQb2xpY3k7CiAgICAgZGVjb2RlciA+PiBhdXRvcGxheVBvbGljeTsKICAgICBp
ZiAoIWF1dG9wbGF5UG9saWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lv
blN0YXRlPiBkZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1N0YXRlOwogICAgIGRlY29k
ZXIgPj4gZGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NTdGF0ZTsKICAgICBpZiAoIWRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzU3RhdGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKICAgICAKICAg
ICBPcHRpb25hbDxPcHRpb25TZXQ8V2Vic2l0ZUF1dG9wbGF5UXVpcms+PiBhbGxvd2VkQXV0b3Bs
YXlRdWlya3M7CiAgICAgZGVjb2RlciA+PiBhbGxvd2VkQXV0b3BsYXlRdWlya3M7CiAgICAgaWYg
KCFhbGxvd2VkQXV0b3BsYXlRdWlya3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OkN1c3RvbUhlYWRlckZpZWxkcz4+IGN1c3RvbUhlYWRlckZpZWxkczsKICAgICBkZWNv
ZGVyID4+IGN1c3RvbUhlYWRlckZpZWxkczsKICAgICBpZiAoIWN1c3RvbUhlYWRlckZpZWxkcykK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIE9wdGlvbmFsPFdlYnNpdGVQb3BVcFBvbGljeT4gcG9wVXBQb2xpY3k7CiAgICAg
ZGVjb2RlciA+PiBwb3BVcFBvbGljeTsKICAgICBpZiAoIXBvcFVwUG9saWN5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8U3RyaW5nPiBjdXN0b21Vc2VyQWdlbnQ7CiAgICAgZGVjb2RlciA+PiBjdXN0b21V
c2VyQWdlbnQ7CiAgICAgaWYgKCFjdXN0b21Vc2VyQWdlbnQpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxT
dHJpbmc+IGN1c3RvbVVzZXJBZ2VudEFzU2l0ZVNwZWNpZmljUXVpcmtzOwogICAgIGRlY29kZXIg
Pj4gY3VzdG9tVXNlckFnZW50QXNTaXRlU3BlY2lmaWNRdWlya3M7CiAgICAgaWYgKCFjdXN0b21V
c2VyQWdlbnRBc1NpdGVTcGVjaWZpY1F1aXJrcykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0cmluZz4g
Y3VzdG9tTmF2aWdhdG9yUGxhdGZvcm07CiAgICAgZGVjb2RlciA+PiBjdXN0b21OYXZpZ2F0b3JQ
bGF0Zm9ybTsKICAgICBpZiAoIWN1c3RvbU5hdmlnYXRvclBsYXRmb3JtKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0
aW9uYWw8V2Vic2l0ZU1ldGFWaWV3cG9ydFBvbGljeT4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAg
IGRlY29kZXIgPj4gbWV0YVZpZXdwb3J0UG9saWN5OwogICAgIGlmICghbWV0YVZpZXdwb3J0UG9s
aWN5KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vic2l0ZU1lZGlhU291cmNlUG9saWN5PiBtZWRpYVNv
dXJjZVBvbGljeTsKICAgICBkZWNvZGVyID4+IG1lZGlhU291cmNlUG9saWN5OwogICAgIGlmICgh
bWVkaWFTb3VyY2VQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgT3B0aW9uYWw8V2Vic2l0ZVNpbXVsYXRl
ZE1vdXNlRXZlbnRzRGlzcGF0Y2hQb2xpY3k+IHNpbXVsYXRlZE1vdXNlRXZlbnRzRGlzcGF0Y2hQ
b2xpY3k7CiAgICAgZGVjb2RlciA+PiBzaW11bGF0ZWRNb3VzZUV2ZW50c0Rpc3BhdGNoUG9saWN5
OwogICAgIGlmICghc2ltdWxhdGVkTW91c2VFdmVudHNEaXNwYXRjaFBvbGljeSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPFdlYnNpdGVMZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5PiBsZWdh
Y3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoUG9saWN5OwogICAgIGRlY29kZXIgPj4gbGVnYWN5T3Zl
cmZsb3dTY3JvbGxpbmdUb3VjaFBvbGljeTsKICAgICBpZiAoIWxlZ2FjeU92ZXJmbG93U2Nyb2xs
aW5nVG91Y2hQb2xpY3kpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBhbGxvd0NvbnRlbnRDaGFu
Z2VPYnNlcnZlclF1aXJrOwogICAgIGRlY29kZXIgPj4gYWxsb3dDb250ZW50Q2hhbmdlT2JzZXJ2
ZXJRdWlyazsKICAgICBpZiAoIWFsbG93Q29udGVudENoYW5nZU9ic2VydmVyUXVpcmspCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdD4gYWxsb3dzQ29u
dGVudEphdmFTY3JpcHQ7CiAgICAgZGVjb2RlciA+PiBhbGxvd3NDb250ZW50SmF2YVNjcmlwdDsK
ICAgICBpZiAoIWFsbG93c0NvbnRlbnRKYXZhU2NyaXB0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6TW91c2VFdmVudFBvbGljeT4gbW91c2VFdmVudFBvbGljeTsKICAgICBkZWNvZGVyID4+
IG1vdXNlRXZlbnRQb2xpY3k7CiAgICAgaWYgKCFtb3VzZUV2ZW50UG9saWN5KQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
T3B0aW9uYWw8Ym9vbD4gaWRlbXBvdGVudE1vZGVBdXRvc2l6aW5nT25seUhvbm9yc1BlcmNlbnRh
Z2VzOwogICAgIGRlY29kZXIgPj4gaWRlbXBvdGVudE1vZGVBdXRvc2l6aW5nT25seUhvbm9yc1Bl
cmNlbnRhZ2VzOwogICAgIGlmICghaWRlbXBvdGVudE1vZGVBdXRvc2l6aW5nT25seUhvbm9yc1Bl
cmNlbnRhZ2VzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCpjb250ZW50
QmxvY2tlcnNFbmFibGVkKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jdXJs
L1dlYkNvcmVBcmd1bWVudENvZGVyc0N1cmwuY3BwCmluZGV4IDU3YjYzOTUzMmRhMTFhN2QxZTVl
NjhmYzRjMTMzNjRhMzgyYzhjYjYuLmFlOWM5NjllZjg5YjQ1YjFlZWM3MzYyNTNlMGFmZTQzOTI0
ZDdhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2N1cmwvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY3VybC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDdXJsLmNwcApAQCAtMTk1LDE4ICsxOTUsMTggQEAgT3B0aW9uYWw8Q3Vy
bFByb3h5U2V0dGluZ3M+IEFyZ3VtZW50Q29kZXI8Q3VybFByb3h5U2V0dGluZ3M+OjpkZWNvZGUo
RGVjb2RlciYgZGUKIHsKICAgICBDdXJsUHJveHlTZXR0aW5nczo6TW9kZSBtb2RlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobW9kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAobW9kZSAhPSBDdXJsUHJveHlT
ZXR0aW5nczo6TW9kZTo6Q3VzdG9tKQogICAgICAgICByZXR1cm4gQ3VybFByb3h5U2V0dGluZ3Mg
eyBtb2RlIH07CiAKICAgICBVUkwgdXJsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIFN0cmluZyBpZ25vcmVIb3N0czsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGln
bm9yZUhvc3RzKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBDdXJsUHJveHlTZXR0aW5ncyB7IFdURk1vdmUo
dXJsKSwgV1RGTW92ZShpZ25vcmVIb3N0cykgfTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lk
IEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlPjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEVuY29kZXImCiBPcHRpb25hbDxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWU+ICBBcmd1bWVudENvZGVyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlVmFsdWU6OlBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
QXJndW1lbnRDb2RlcnNHTGliLmNwcAppbmRleCAzMDhhNzVhYzEzMjc5YTlmMjcxODBhNjYzNTVk
YmY5ZTJlZmRhY2UzLi4xOGZlYmI4YjM4MmY2NjQ2NzcyMmQ2M2Y4MjZlMGZkNWQzMWMyOTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3Bw
CkBAIC00OCwxNyArNDgsMTcgQEAgT3B0aW9uYWw8R1JlZlB0cjxHVmFyaWFudD4+IEFyZ3VtZW50
Q29kZXI8R1JlZlB0cjxHVmFyaWFudD4+OjpkZWNvZGUoRGVjb2RlciYgZGUKIHsKICAgICBDU3Ry
aW5nIHZhcmlhbnRUeXBlU3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFyaWFudFR5
cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKHZhcmlhbnRUeXBlU3RyaW5nLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gR1JlZlB0cjxHVmFyaWFudD4oKTsKIAogICAgIGlmICghZ192YXJpYW50X3R5
cGVfc3RyaW5nX2lzX3ZhbGlkKHZhcmlhbnRUeXBlU3RyaW5nLmRhdGEoKSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBE
YXRhUmVmZXJlbmNlIGRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIEdVbmlxdWVQdHI8R1ZhcmlhbnRUeXBlPiB2YXJpYW50VHlwZShnX3ZhcmlhbnRfdHlwZV9u
ZXcodmFyaWFudFR5cGVTdHJpbmcuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVz
ID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOwpAQCAt
MTAwLDcgKzEwMCw3IEBAIE9wdGlvbmFsPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj4gQXJndW1l
bnRDb2RlcjxHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4+OjpkZWNvCiB7CiAgICAgdWludDMyX3Qg
Y2hhaW5MZW5ndGg7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFpbkxlbmd0aCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWNoYWluTGVuZ3RoKQogICAgICAgICByZXR1cm4gR1JlZlB0cjxHVGxzQ2VydGlm
aWNhdGU+KCk7CkBAIC0xMTEsNyArMTExLDcgQEAgT3B0aW9uYWw8R1JlZlB0cjxHVGxzQ2VydGlm
aWNhdGU+PiBBcmd1bWVudENvZGVyPEdSZWZQdHI8R1Rsc0NlcnRpZmljYXRlPj46OmRlY28KICAg
ICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY2hhaW5MZW5ndGg7IGkrKykgewogICAgICAgICBJ
UEM6OkRhdGFSZWZlcmVuY2UgY2VydGlmaWNhdGVEYXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBHUmVmUHRyPEdCeXRlQXJyYXk+IGNlcnRpZmljYXRlRGF0YSA9IGFkb3B0R1JlZihn
X2J5dGVfYXJyYXlfc2l6ZWRfbmV3KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZS5zaXplKCkpKTsK
ICAgICAgICAgZ19ieXRlX2FycmF5X2FwcGVuZChjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIGNlcnRp
ZmljYXRlRGF0YVJlZmVyZW5jZS5kYXRhKCksIGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZS5zaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAK
aW5kZXggMTJjODNiZjY3NzFmMTdjMzQzMzFkNTIwZTg5OWEzY2EwMjAwMmE2OC4uNDEwZjhmYTM4
YzhmMGEzNzkzZWRkZjQwMWMxZTU4YzBlZDFjYmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCkBAIC0xMTMsOSArMTEzLDkgQEAgT3B0aW9u
YWw8SW5wdXRNZXRob2RTdGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGUucHVycG9zZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0ZS5oaW50cykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHN0YXRlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCmluZGV4IGYxZThiMTQ1MTM3OWRmZTA4MjljODExYzU3
MTBhY2FhNTY5MjgzM2UuLmE3MzllODI2YmU0ODkyNzNlZGZhOWEyMTA3NmEwNTU2ZjlhMzY0OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCkBAIC02MCwxOSAr
NjAsMTkgQEAgT3B0aW9uYWw8VXNlck1lc3NhZ2U+IFVzZXJNZXNzYWdlOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFVzZXJNZXNzYWdlIHJlc3VsdDsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChyZXN1bHQudHlwZSA9PSBU
eXBlOjpOdWxsKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubmFtZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAocmVzdWx0LnR5cGUgPT0gVHlwZTo6RXJy
b3IpIHsKICAgICAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGVycm9yQ29kZTsKICAgICAgICAgZGVj
b2RlciA+PiBlcnJvckNvZGU7CiAgICAgICAgIGlmICghZXJyb3JDb2RlKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgcmVzdWx0LmVycm9yQ29kZSA9IGVycm9yQ29kZS52YWx1ZSgpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwpAQCAtODEsMTggKzgxLDE4IEBAIE9wdGlvbmFsPFVzZXJNZXNzYWdlPiBV
c2VyTWVzc2FnZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBPcHRpb25hbDxH
UmVmUHRyPEdWYXJpYW50Pj4gcGFyYW1ldGVyczsKICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7
CiAgICAgaWYgKCFwYXJhbWV0ZXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gV1RGTW92
ZSgqcGFyYW1ldGVycyk7CiAKICAgICBPcHRpb25hbDxWZWN0b3I8SVBDOjpBdHRhY2htZW50Pj4g
YXR0YWNobWVudHM7CiAgICAgZGVjb2RlciA+PiBhdHRhY2htZW50czsKICAgICBpZiAoIWF0dGFj
aG1lbnRzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogICAgIGlmICghYXR0YWNobWVudHMtPmlzRW1wdHkoKSkgewogICAgICAgICBy
ZXN1bHQuZmlsZURlc2NyaXB0b3JzID0gYWRvcHRHUmVmKGdfdW5peF9mZF9saXN0X25ldygpKTsK
ICAgICAgICAgZm9yIChhdXRvJiBhdHRhY2htZW50IDogKmF0dGFjaG1lbnRzKSB7CiAgICAgICAg
ICAgICBpZiAoZ191bml4X2ZkX2xpc3RfYXBwZW5kKHJlc3VsdC5maWxlRGVzY3JpcHRvcnMuZ2V0
KCksIGF0dGFjaG1lbnQucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCksIG51bGxwdHIpID09IC0xKQot
ICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggOTg3MGVmZmRhNTg1MTJhOTAw
Mzc4N2IxYWU2YjU1NTU5YjMyZmE4Yy4uNzM1Mjg4OWFmM2RkODM2YjBmYzA5ODU1YjNlNDZjY2Fj
MWMxMmMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29k
ZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNH
dGsuY3BwCkBAIC0xMDcsNjcgKzEwNyw2NyBAQCBPcHRpb25hbDxTZWxlY3Rpb25EYXRhPiBBcmd1
bWVudENvZGVyPFNlbGVjdGlvbkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIAogICAg
IGJvb2wgaGFzVGV4dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc1RleHQpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmIChoYXNUZXh0KSB7CiAgICAgICAgIFN0cmluZyB0ZXh0OwogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHRleHQpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRUZXh0KHRl
eHQpOwogICAgIH0KIAogICAgIGJvb2wgaGFzTWFya3VwOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzTWFya3VwKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoaGFzTWFya3VwKSB7CiAgICAgICAgIFN0cmluZyBt
YXJrdXA7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWFya3VwKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBzZWxlY3Rpb24uc2V0TWFya3VwKG1hcmt1cCk7CiAgICAgfQogCiAgICAgYm9vbCBo
YXNVUkw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNVUkwpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChoYXNV
UkwpIHsKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1
cmwpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlbGVjdGlvbi5zZXRVUkwoVVJMKFVSTCgpLCB1cmwp
LCBTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVUklMaXN0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzVVJJTGlzdCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGhhc1VSSUxpc3QpIHsKICAgICAg
ICAgU3RyaW5nIHVyaUxpc3Q7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJpTGlzdCkp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgc2VsZWN0aW9uLnNldFVSSUxpc3QodXJpTGlzdCk7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNJbWFnZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0ltYWdl
KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoaGFzSW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZTsK
ICAgICAgICAgaWYgKCFkZWNvZGVJbWFnZShkZWNvZGVyLCBpbWFnZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgc2VsZWN0aW9uLnNldEltYWdlKGltYWdlLmdldCgpKTsKICAgICB9CiAKICAgICBib29s
IGhhc0N1c3RvbURhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDdXN0b21EYXRhKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoaGFzQ3VzdG9tRGF0YSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYnVmZmVyKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICBzZWxlY3Rpb24uc2V0Q3VzdG9tRGF0YShSZWY8U2hhcmVkQnVmZmVyPigqYnVm
ZmVyKSk7CiAgICAgfQogCiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjYW5TbWFydFJlcGxhY2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHNlbGVjdGlvbi5zZXRDYW5TbWFy
dFJlcGxhY2UoY2FuU21hcnRSZXBsYWNlKTsKIAogICAgIHJldHVybiBzZWxlY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0
ay5jcHAKaW5kZXggYzc2YTllMWY3ZGFlN2EzMWM0MDQ4ZDhmMDBkODQ5YTE4ZWJhZmYyMy4uODNj
YjQxYTRiMGJmY2Y5MjA2ZWJjMjI3NGE1MTNhM2UwYTUxNWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZlbnQqIGV2ZW50LCBjb25zdCBTdHJpbmcm
IHRleHQsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMpCi0gICAgOiBXZWJLZXlib2FyZEV2ZW50
KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgdGV4dCwgZmFs
c2UsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNvbW1hbmRzKSkpCisgICAg
OiBXZWJLZXlib2FyZEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVu
dChldmVudCwgdGV4dCwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KGNvbW1hbmRzKSkpCiAgICAgLCBtX25hdGl2ZUV2ZW50KGdka19ldmVudF9jb3B5KGV2ZW50KSkK
IHsKIH0KQEAgLTQ1LDcgKzQ1LDcgQEAgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudChjb25zdCBTdHJpbmcmIHRleHQsIE9wdGlvbmFsPFZlY3QKIH0KIAogTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgY29kZSwg
Y29uc3QgU3RyaW5nJiBrZXlJZGVudGlmaWVyLCBpbnQgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBp
bnQgbmF0aXZlVmlydHVhbEtleUNvZGUsIFZlY3RvcjxTdHJpbmc+JiYgY29tbWFuZHMsIGJvb2wg
aXNLZXlwYWQsIE9wdGlvblNldDxNb2RpZmllcj4gbW9kaWZpZXJzKQotICAgIDogV2ViS2V5Ym9h
cmRFdmVudCh0eXBlLCB0ZXh0LCBrZXksIGNvZGUsIGtleUlkZW50aWZpZXIsIHdpbmRvd3NWaXJ0
dWFsS2V5Q29kZSwgbmF0aXZlVmlydHVhbEtleUNvZGUsIGZhbHNlLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShjb21tYW5kcyksIGlzS2V5cGFkLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSkKKyAgICA6IFdlYktleWJvYXJkRXZlbnQodHlwZSwgdGV4dCwga2V5LCBjb2Rl
LCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5hdGl2ZVZpcnR1YWxLZXlD
b2RlLCBmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUoY29tbWFuZHMp
LCBpc0tleXBhZCwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9OYXRpdmVXZWJNb3VzZUV2ZW50R3RrLmNwcAppbmRl
eCA0NmVmM2IzNzFmNTJjMTA1NDUxZDkxN2ZmOGZkMzg0ZGI1MThiMzlmLi44ZGJlN2FkNzFjM2Rk
MGY5YmNhYTFjNzRjMTRiMWNhZWE0YTMwZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9ndGsvTmF0aXZlV2ViTW91c2VFdmVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCkBAIC00OSw3ICs0OSw3IEBAIE5h
dGl2ZVdlYk1vdXNlRXZlbnQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvc2l0aW9uKQogfQogCiBOYXRpdmVXZWJNb3VzZUV2ZW50OjpOYXRpdmVXZWJNb3Vz
ZUV2ZW50KFR5cGUgdHlwZSwgQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgc2hvcnQgYnV0dG9ucywg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIGludCBjbGlja0NvdW50LCBPcHRpb25TZXQ8TW9kaWZpZXI+IG1v
ZGlmaWVycywgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRTaXplPiBkZWx0YSwgV2ViQ29yZTo6UG9p
bnRlcklEIHBvaW50ZXJJZCwgY29uc3QgU3RyaW5nJiBwb2ludGVyVHlwZSkKLSAgICA6IFdlYk1v
dXNlRXZlbnQodHlwZSwgYnV0dG9uLCBidXR0b25zLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGRlbHRhLnZhbHVlT3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpLndpZHRoKCksIGRlbHRhLnZhbHVl
T3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0NvdW50LCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXAsIHBvaW50ZXJJZCwgcG9pbnRlclR5cGUpCisg
ICAgOiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgYnV0dG9ucywgcG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uLCBkZWx0YS52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUoKSkud2lkdGgoKSwg
ZGVsdGEudmFsdWVfb3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpLmhlaWdodCgpLCAwLCBjbGlja0Nv
dW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXAsIHBvaW50ZXJJZCwgcG9p
bnRlclR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9X
ZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQuaAppbmRleCA1ZmFiMDU0ZWE4M2VhMmM3NDY1ZjAxYTk3OGQ4
YjE2NzM1ZGNlOTdiLi45NGE5YzUwYzRiNDc1YWU4ODNkODdkMjk5MWIwNjhlZDBmMTBhZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dC5oCkBAIC01NywxNSArNTcsMTUgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9u
YWw8V2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0PiBXZWJBdXRvY29ycmVjdGlvbkNvbnQKIHsKICAg
ICBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQgY29ycmVjdGlvbjsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvcnJlY3Rpb24uY29udGV4dEJlZm9yZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShjb3JyZWN0aW9uLm1hcmtlZFRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29ycmVjdGlvbi5zZWxlY3RlZFRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29y
cmVjdGlvbi5jb250ZXh0QWZ0ZXIpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29ycmVj
dGlvbi5tYXJrZWRUZXh0UmFuZ2UpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBjb3JyZWN0aW9uOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbQpp
bmRleCA1MzI0ZjYzODgzNDY0ODY1YTNhZTA1OGJhOTQ3Njk2MDNhMjM4Mzk5Li5jMTI4N2QxYjc2
MTBmZjViMjI1MGU1M2Y3MGQ3ZDUwZTVhYzNmZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW0KQEAgLTQ5LDExICs0OSwxMSBAQCBP
cHRpb25hbDxXZWJBdXRvY29ycmVjdGlvbkRhdGE+IFdlYkF1dG9jb3JyZWN0aW9uRGF0YTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjbwogICAgIE9wdGlvbmFsPFZlY3RvcjxGbG9hdFJlY3Q+PiB0
ZXh0UmVjdHM7CiAgICAgZGVjb2RlciA+PiB0ZXh0UmVjdHM7CiAgICAgaWYgKCF0ZXh0UmVjdHMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBSZXRhaW5QdHI8VUlGb250PiBmb250OwogICAgIGlmICghSVBDOjpkZWNvZGUo
ZGVjb2RlciwgZm9udCwgQFsgVUlGb250LmNsYXNzIF0pKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7ICp0
ZXh0UmVjdHMsIGZvbnQgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvV2ViSU9TRXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvV2ViSU9T
RXZlbnRGYWN0b3J5LmgKaW5kZXggYTQxOWQ4MDIzZTc1YTMzZDM1NjNkMGY1MjAyYmM4Y2I2YTc5
NDlmYS4uMjYxMGMxMTRhNzI2N2U1ZWZjZTJiNjlmOTFiYjgyZWY5ZjE4YmE2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYktpdDo6V2ViTW91c2VFdmVudCBjcmVhdGVXZWJN
b3VzZUV2ZW50KDo6V2ViRXZlbnQgKik7CiAKICNpZiBIQVZFKFVJU0NST0xMVklFV19BU1lOQ0hS
T05PVVNfU0NST0xMX0VWRU5UX0hBTkRMSU5HKQotICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVs
RXZlbnQgY3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVu
dFZpZXcsIE9wdGlvbmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhh
c2UgPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyBXZWJLaXQ6OldlYldoZWVsRXZlbnQgY3Jl
YXRlV2ViV2hlZWxFdmVudChVSVNjcm9sbEV2ZW50ICosIFVJVmlldyAqY29udGVudFZpZXcsIE9w
dGlvbmFsPFdlYktpdDo6V2ViV2hlZWxFdmVudDo6UGhhc2U+IG92ZXJyaWRlUGhhc2UgPSBzdGQ6
Om51bGxvcHQpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgVUlLZXlNb2RpZmllckZsYWdzIHRvVUlL
ZXlNb2RpZmllckZsYWdzKE9wdGlvblNldDxXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcj4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJJT1NFdmVudEZhY3RvcnkubW0KaW5kZXgg
OTgxZWM0N2YxNTNlNGUwMzM3ZDMyMTA4OGY3OWUyNjZmYjFkNzA4OS4uYWRiZDUxNThlMzNmZjQ4
NmRkYzQxNDJiNmU2YTFmMzY5NjNiODNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL1dlYklPU0V2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9p
b3MvV2ViSU9TRXZlbnRGYWN0b3J5Lm1tCkBAIC0xNzAsNyArMTcwLDcgQEAgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IFdlYklPU0V2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChVSVNjcm9s
bEV2ZW50ICpldmUKICAgICAgICAgd2hlZWxUaWNrcywKICAgICAgICAgV2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpHcmFudWxhcml0eTo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCiAgICAgICAgIGZh
bHNlLAotICAgICAgICBvdmVycmlkZVBoYXNlLnZhbHVlT3IodG9XZWJQaGFzZShldmVudC5waGFz
ZSkpLAorICAgICAgICBvdmVycmlkZVBoYXNlLnZhbHVlX29yKHRvV2ViUGhhc2UoZXZlbnQucGhh
c2UpKSwKICAgICAgICAgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpQaGFzZU5vbmUsCiAgICAgICAg
IHRydWUsCiAgICAgICAgIDEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3Mv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9X
ZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwCmluZGV4IDJhOWRiNGY4YWNhZmU5ZDY0ZDVkNGVi
ZDk5MTNhYTE2MWVhMGY0YzAuLmU0YzgxMWIxN2NjMGI4YTgzMjFjNzc0NjBkNWExZDUzNDhiMTI3
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0Zm9ybVRvdWNo
UG9pbnRJT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9XZWJQbGF0Zm9ybVRv
dWNoUG9pbnRJT1MuY3BwCkBAIC01MywyNiArNTMsMjYgQEAgT3B0aW9uYWw8V2ViUGxhdGZvcm1U
b3VjaFBvaW50PiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y28KIHsKICAgICBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQgcmVzdWx0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1faWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQubV9sb2NhdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9waGFzZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9yYWRpdXNYKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5tX3JhZGl1c1kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
cm90YXRpb25BbmdsZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9mb3Jj
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9hbHRpdHVkZUFuZ2xlKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2F6aW11dGhBbmdsZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV90b3VjaFR5cGUpKQotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZGFhZmQ4ZDhiZDMyNzFlNDhhNTljMDYw
OGNhY2RmZWFlNjc3NTZlMi4uMWM4NTU3MWJkZGQ4Y2Q1NGEwMTI2NTZlYjcwMGRiZDQyOTE2MDVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPGNoYXI+PiBmaWxl
Q29udGVudHMoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIHNob3VsZExvY2sgPQogICAgIEZpbGVI
YW5kbGUgZmlsZSA9IHNob3VsZExvY2sgPyBGaWxlSGFuZGxlKHBhdGgsIEZpbGVTeXN0ZW06OkZp
bGVPcGVuTW9kZTo6UmVhZCwgbG9ja01vZGUpIDogRmlsZUhhbmRsZShwYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGZpbGUub3BlbigpOwogICAgIGlmICghZmlsZSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGNoYXIgY2h1bmtbNDA5Nl07CiAgICAgY29uc3RleHByIHNpemVfdCBjaHVua1Np
emUgPSBXVEZfQVJSQVlfTEVOR1RIKGNodW5rKTsKQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFsaXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3Qg
U2FuZGJveEluaXRpYWxpegogICAgIGlmIChpc1Byb2ZpbGVQYXRoKSB7CiAgICAgICAgIGF1dG8g
Y29udGVudHMgPSBmaWxlQ29udGVudHMocHJvZmlsZU9yUHJvZmlsZVBhdGgpOwogICAgICAgICBp
ZiAoIWNvbnRlbnRzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVy
cyhjb250ZW50cy0+ZGF0YSgpLCBjb250ZW50cy0+c2l6ZSgpKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQocHJvZmlsZU9yUHJvZmlsZVBhdGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKaW5kZXggMGRlYTA5NmQ5YWEwN2FiYTliNmFkYzM0Yjc0MTdiYjViNWYz
NjU4OS4uYzM4Y2EyZTBiN2U3NDc0MTExYzhiMzllMWQ5NDFjZDA2NzU0YzI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0
UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBNZWRpYUZv
cm1hdFJlYWRlcjo6cGFyc2VCeXRlU291cmNlKFJldGFpblB0cjxNVFBsdWdpbkJ5dGVTb3VyY2VS
ZWY+JiYgYnl0ZVMKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNlVHJhY2tzTG9jayB9Owog
ICAgIG1fYnl0ZVNvdXJjZSA9IFdURk1vdmUoYnl0ZVNvdXJjZSk7Ci0gICAgbV9wYXJzZVRyYWNr
c1N0YXR1cyA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3BhcnNlVHJhY2tzU3RhdHVzID0gc3RkOjpu
dWxsb3B0OwogICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CiAgICAg
bV90cmFja1JlYWRlcnMuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAK
aW5kZXggNzU3YWI2YjZmMDJiNDFlZjJmNmYwZTJjYzljN2JlN2JmODBmNTFhOC4uZTU0M2UwM2Uy
ZjRlZjA0NTdjMjE3ZWZjNjAzMDM4MzFjNjY5ZmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgT3B0aW9uYWw8dHlwZW5hbWUgT3JkZXJlZE1h
cDo6aXRlcmF0b3I+IE1lZGlhU2FtcGxlQ3Vyc29yOjpsb2NhdGVJdGVyYXRvcihPcmRlcmUKICAg
ICAgICAgICAgIGVsc2UgaWYgKGhhc0FsbFNhbXBsZXMgfHwgaXRlcmF0b3IgIT0gc2FtcGxlcy5l
bmQoKSkKICAgICAgICAgICAgICAgICBtX2xvY2F0b3IgPSBzdGQ6OnByZXYoaXRlcmF0b3IpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIHJldHVybiBs
b2NhdGVJdGVyYXRvcihzYW1wbGVzLCBoYXNBbGxTYW1wbGVzKTsKICAgICAgICAgfSwKICAgICAg
ICAgWyZdKGNvbnN0IGF1dG8mIG90aGVySXRlcmF0b3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGQxYWE1Y2QzMjZiNmU4ZGIxM2Q0Njc5MDcz
YzQ5MzNkM2E5YjljZGQuLjcwYTVjODA0NDZjZWM4ZWVlNDczNTY5M2UxYzg2ZTRiNjMxNTgzY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHN0YXRpYyBPcHRpb25hbDxPYmpDVHlwZT4gdHlwZUZyb21PYmplY3QoaWQg
b2JqZWN0KQogICAgICAgICByZXR1cm4gT2JqQ1R5cGU6OldLVHlwZVJlZldyYXBwZXI7CiAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgT2JqQ09iamVjdEdyYXBo
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUERGQ29udGV4dE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCmluZGV4IDdkMThmMDliMDA3YTFmNmEyOTEzMDBm
NWViODBhMjUyYmM2NzhlMTIuLjgxY2RiZTgwMWMyZmNjNzZjYjk4YmQzMzYxMzNhMjdkNWFjOWMw
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QREZDb250ZXh0TWVudS5oCkBAIC00Niwz
MiArNDYsMzIgQEAgc3RydWN0IFBERkNvbnRleHRNZW51SXRlbSB7CiAgICAgICAgIE9wdGlvbmFs
PFN0cmluZz4gdGl0bGU7CiAgICAgICAgIGRlY29kZXIgPj4gdGl0bGU7CiAgICAgICAgIGlmICgh
dGl0bGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBlbmFibGVkOwogICAg
ICAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CiAgICAgICAgIGlmICghZW5hYmxlZCkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHNlcGFyYXRvcjsKICAgICAgICAgZGVjb2RlciA+
PiBzZXBhcmF0b3I7CiAgICAgICAgIGlmICghc2VwYXJhdG9yKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8aW50PiBzdGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGF0ZTsKICAgICAg
ICAgaWYgKCFzdGF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0Fj
dGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBoYXNBY3Rpb247CiAgICAgICAgIGlmICghaGFzQWN0
aW9uKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8aW50PiB0YWc7CiAgICAgICAgIGRl
Y29kZXIgPj4gdGFnOwogICAgICAgICBpZiAoIXRhZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqdGl0bGUpLCBXVEZNb3ZlKCplbmFibGVkKSwgV1RGTW92ZSgqc2Vw
YXJhdG9yKSwgV1RGTW92ZSgqc3RhdGUpLCBXVEZNb3ZlKCpoYXNBY3Rpb24pLCBXVEZNb3ZlKCp0
YWcpIH0gfTsKICAgICB9CkBAIC05MiwxNyArOTIsMTcgQEAgc3RydWN0IFBERkNvbnRleHRNZW51
IHsKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IHBvaW50OwogICAgICAgICBk
ZWNvZGVyID4+IHBvaW50OwogICAgICAgICBpZiAoIXBvaW50KQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8VmVjdG9yPFBERkNvbnRleHRNZW51SXRlbT4+IGl0ZW1zOwogICAgICAgICBk
ZWNvZGVyID4+IGl0ZW1zOwogICAgICAgICBpZiAoIWl0ZW1zKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8aW50Pj4gb3BlbkluUHJldmlld0luZGV4OwogICAgICAgICBk
ZWNvZGVyID4+IG9wZW5JblByZXZpZXdJbmRleDsKICAgICAgICAgaWYgKCFvcGVuSW5QcmV2aWV3
SW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1v
dmUoKnBvaW50KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcAppbmRleCAwZTA4NDAyYjFhNWZmNzkzMTEzNTY5MWIxOWZhZjA2MWY5NmY3NjU1
Li5kOGJhZjlmZWM5YTE3MzM0MjczMWIwZDRmMzBhYmVjMGFiOTE2ZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1SZXNwb25zZURhdGEuY3BwCkBAIC00OSwxNSAr
NDksMTUgQEAgT3B0aW9uYWw8U2VjSXRlbVJlc3BvbnNlRGF0YT4gU2VjSXRlbVJlc3BvbnNlRGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpbnQ2NF90IHJlc3VsdENv
ZGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHRDb2RlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGJvb2wg
ZXhwZWN0UmVzdWx0T2JqZWN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZXhwZWN0UmVzdWx0
T2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IHJlc3VsdDsKICAgICBpZiAo
ZXhwZWN0UmVzdWx0T2JqZWN0ICYmICFkZWNvZGVyLmRlY29kZShyZXN1bHQpKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHt7IHN0YXRpY19jYXN0PE9TU3RhdHVzPihyZXN1bHRDb2RlKSwgV1RGTW92ZShyZXN1
bHQpIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NlY0l0ZW1T
aGltLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5jcHAKaW5kZXgg
OTBhZDk5OTNkOGUwY2QzMWVmN2E5OGJlMzdiNTg3YjRhMTVlZDIzMy4uZWZlMmYyMjM3N2VlYmE5
MjNlZWFhZTcyOGIxYTg2ZGE5NWU5MTMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1NlY0l0ZW1TaGltLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2Vj
SXRlbVNoaW0uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxTZWNJdGVtUmVz
cG9uc2VEYXRhPiBzZW5kU2VjSXRlbVJlcXVlc3QoU2VjSXRlbVJlcXVlc3REYXRhOjpUeXBlCiAK
ICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgaWYgKCFnbG9iYWxOZXR3b3Jr
UHJvY2VzcygpLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
U2VjSXRlbVNoaW1Qcm94eTo6U2VjSXRlbVJlcXVlc3RTeW5jKFNlY0l0ZW1SZXF1ZXN0RGF0YShy
ZXF1ZXN0VHlwZSwgcXVlcnksIGF0dHJpYnV0ZXNUb01hdGNoKSksIE1lc3NhZ2VzOjpTZWNJdGVt
U2hpbVByb3h5OjpTZWNJdGVtUmVxdWVzdFN5bmM6OlJlcGx5KHJlc3BvbnNlKSwgMCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0KaW5kZXggZTBi
MTI1YWViODJlY2RhNzg5Zjc1MTQzYWExZGZmZmJkYWE2Y2FmMC4uNTZiNThmODM0NWJlZjJiMjc2
ZjQzOGRkODczMTNkOGJmMmRiOWRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJzTWFjLm1tCkBAIC0yODUsMTIgKzI4NSwxMiBAQCBP
cHRpb25hbDxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
S2V5cHJlc3NDb21tYW5kPjo6ZGVjbwogICAgIE9wdGlvbmFsPFN0cmluZz4gY29tbWFuZE5hbWU7
CiAgICAgZGVjb2RlciA+PiBjb21tYW5kTmFtZTsKICAgICBpZiAoIWNvbW1hbmROYW1lKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIAogICAgIE9wdGlvbmFsPFN0cmluZz4gdGV4dDsKICAgICBkZWNvZGVyID4+IHRleHQ7CiAg
ICAgaWYgKCF0ZXh0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIFdlYkNvcmU6OktleXByZXNzQ29tbWFuZCBjb21t
YW5kOwogICAgIGNvbW1hbmQuY29tbWFuZE5hbWUgPSBXVEZNb3ZlKCpjb21tYW5kTmFtZSk7CkBA
IC00MTAsMTEgKzQxMCwxMSBAQCBPcHRpb25hbDxXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+ICBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcmlhbAogICAgIEFTU0VSVChw
bGF0Zm9ybVR5cGUgPT0gV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlOjpQ
bGF0Zm9ybVR5cGU6Ok9iakMpOwogCiAgICAgaWYgKHBsYXRmb3JtVHlwZSAhPSBXZWJDb3JlOjpT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWU6OlBsYXRmb3JtVHlwZTo6T2JqQykKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGF1dG8gb2JqZWN0ID0gZGVjb2RlT2JqZWN0KGRlY29kZXIsIFdlYkNvcmU6OlNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmFsbG93ZWRDbGFzc2VzRm9yTmF0aXZlVmFsdWVzKCkpOwog
ICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVWYWx1ZSB7IHBsYXRmb3JtVHlwZSwgb2JqZWN0LnZhbHVlKCkuZ2V0KCkgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlzdGF0aW9uL1dlYkNvcmVB
cmd1bWVudENvZGVyc1BsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3BsYXlz
dGF0aW9uL1dlYkNvcmVBcmd1bWVudENvZGVyc1BsYXlTdGF0aW9uLmNwcAppbmRleCAyMTJhOGUw
NWViNWYzZjg4OWMzNTgxNWFlN2ViYzVjYWM1NDJhY2IwLi5jYmViNDAwZGFjZTU2Yjg4MmQyZTdj
NDQzYWVkZGI3YmU0OWQ5ZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9wbGF5
c3RhdGlvbi9XZWJDb3JlQXJndW1lbnRDb2RlcnNQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvcGxheXN0YXRpb24vV2ViQ29yZUFyZ3VtZW50Q29kZXJzUGxheVN0YXRp
b24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRl
cz46OmVuY29kZVBsYXRmb3JtRGF0YShFbmNvZGVyJiwgY29uc3QgRm9udEF0dHJpCiBPcHRpb25h
bDxGb250QXR0cmlidXRlcz4gQXJndW1lbnRDb2RlcjxGb250QXR0cmlidXRlcz46OmRlY29kZVBs
YXRmb3JtRGF0YShEZWNvZGVyJiwgRm9udEF0dHJpYnV0ZXMmKQogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZVBsYXRmb3Jt
RGF0YShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8Rm9udD4mIGZvbnQpCkBAIC01Miw3ICs1
Miw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGVQbGF0Zm9ybURhdGEo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPEZvCiBPcHRpb25hbDxGb250UGxhdGZvcm1EYXRh
PiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENv
ZGVyc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRD
b2RlcnNTb3VwLmNwcAppbmRleCA0NDkyMzRiMDgxMTcyZWFjZjEzMTdhNWMxZTEyY2YwZGQxOTkz
ZjAxLi45ODdmOGI1NTUyMTgxYTI4ODNiMWE2NDQ0NWQ4ZmE2ODFjMGU5N2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0
ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IEZvbnRBdHRyaQogT3B0aW9u
YWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjpkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYsIEZvbnRBdHRyaWJ1dGVzJikKIHsKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxEaWN0aW9uYXJ5UG9wdXBJbmZvPjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJikKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlUGxh
dGZvcm1EYXRhKEVuY29kZXImLCBjb25zdCBSZWY8Rm9udD4mKQogT3B0aW9uYWw8Rm9udFBsYXRm
b3JtRGF0YT4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQpA
QCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlVmFsdWU+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYKIE9wdGlvbmFsPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZT4gIEFyZ3VtZW50Q29kZXI8U2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZVZhbHVlPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZXIsIFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZTo6UGxhdGZvcm1UeXBlIHBsYXRm
b3JtVHlwZSkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9BdXhpbGlhcnlQcm9jZXNzTWFpbldpbi5jcHAKaW5k
ZXggZGJlMGQwM2M5MjE5MGViMGJjMjllYjY2YzQ3NTNhMGFhOWMwYjQ3Yy4uNjIxODgzMDA0OGJh
MjVmZTQ0NDNhNWNhYjEzNjY2OGYzYWViZjQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvd2luL0F1eGlsaWFyeVByb2Nlc3NNYWluV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC93aW4vQXV4aWxpYXJ5UHJvY2Vzc01haW5XaW4uY3BwCkBAIC0zNiw5ICszNiw5IEBA
IGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc01haW5Db21tb246OnBhcnNlQ29tbWFuZExpbmUoaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7
CiAgICAgICAgIGlmICghc3RyY21wKGFyZ3ZbaV0sICItY2xpZW50SWRlbnRpZmllciIpICYmIGkg
KyAxIDwgYXJnYykKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmll
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1ZU9yKDApKTsKKyAgICAgICAgICAgIG1fcGFy
YW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEFORExFPihw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50NjRfdD4oYXJndlsrK2ldKS52YWx1
ZV9vcigwKSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1wcm9jZXNzSWRl
bnRpZmllciIpICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycy5wcm9j
ZXNzSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyVHlwZT4ocGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KGFy
Z3ZbKytpXSkudmFsdWVPcigwKSk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMucHJvY2Vzc0lk
ZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
clR5cGU+KHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90Pihhcmd2Wysr
aV0pLnZhbHVlX29yKDApKTsKICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWNv
bmZpZ3VyZS1qc2MtZm9yLXRlc3RpbmciKSkKICAgICAgICAgICAgIEpTQzo6Q29uZmlnOjpjb25m
aWd1cmVGb3JUZXN0aW5nKCk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1k
aXNhYmxlLWppdCIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkNv
cmVBcmd1bWVudENvZGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzV2luLmNwcAppbmRleCBiZDE5MDgwNjZiZDEyNWVkODEwYWNkMDE3YjNk
YzFjNjQ3OWVmZTAzLi4wMDAzYWIzN2QxMzY1MWZmODdkZjM2MjdhNGY2NTNmYzRhZGVkYmRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29kZXJz
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzV2luLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJp
YnV0ZXM+OjplbmNvZGVQbGF0Zm9ybURhdGEoRW5jb2RlciYsIGNvbnN0IEZvbnRBdHRyaQogT3B0
aW9uYWw8Rm9udEF0dHJpYnV0ZXM+IEFyZ3VtZW50Q29kZXI8Rm9udEF0dHJpYnV0ZXM+OjpkZWNv
ZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYsIEZvbnRBdHRyaWJ1dGVzJikKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8TE9HRk9OVD4g
ewpAQCAtNTcsNyArNTcsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPExPR0ZP
TlQ+IHsKICAgICB7CiAgICAgICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmbG9n
Rm9udCksIHNpemVvZihsb2dGb250KSwgMSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGxv
Z0ZvbnQ7CiAgICAgfQogfTsKQEAgLTg2LDIyICs4NiwyMiBAQCBPcHRpb25hbDxGb250UGxhdGZv
cm1EYXRhPiBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZVBsYXRmb3JtRGF0YShEZWNv
ZGVyJgogICAgIE9wdGlvbmFsPGZsb2F0PiBzaXplOwogICAgIGRlY29kZXIgPj4gc2l6ZTsKICAg
ICBpZiAoIXNpemUuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPGJvb2w+IHN5bnRoZXRp
Y0JvbGQ7CiAgICAgZGVjb2RlciA+PiBzeW50aGV0aWNCb2xkOwogICAgIGlmICghc3ludGhldGlj
Qm9sZC5oYXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gc3ludGhldGljT2JsaXF1
ZTsKICAgICBkZWNvZGVyID4+IHN5bnRoZXRpY09ibGlxdWU7CiAgICAgaWYgKCFzeW50aGV0aWNP
YmxpcXVlLmhhc1ZhbHVlKCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxib29sPiBpbmNsdWRlc0NyZWF0
aW9uRGF0YTsKICAgICBkZWNvZGVyID4+IGluY2x1ZGVzQ3JlYXRpb25EYXRhOwogICAgIGlmICgh
aW5jbHVkZXNDcmVhdGlvbkRhdGEuaGFzVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGb250Q3VzdG9tUGxhdGZvcm1EYXRhPiBmb250Q3VzdG9tUGxhdGZvcm1EYXRhOwogICAgIEZv
bnRQbGF0Zm9ybURhdGE6OkNyZWF0aW9uRGF0YSogY3JlYXRpb25EYXRhID0gbnVsbHB0cjsKQEAg
LTExMCwzMCArMTEwLDMwIEBAIE9wdGlvbmFsPEZvbnRQbGF0Zm9ybURhdGE+IEFyZ3VtZW50Q29k
ZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImCiAgICAgICAgIE9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBmb250RmFjZURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4g
Zm9udEZhY2VEYXRhOwogICAgICAgICBpZiAoIWZvbnRGYWNlRGF0YS5oYXNWYWx1ZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBpdGVtSW5Db2xsZWN0aW9uOwogICAg
ICAgICBkZWNvZGVyID4+IGl0ZW1JbkNvbGxlY3Rpb247CiAgICAgICAgIGlmICghaXRlbUluQ29s
bGVjdGlvbi5oYXNWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZm9udEN1c3RvbVBsYXRm
b3JtRGF0YSA9IGNyZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoZm9udEZhY2VEYXRhLnZhbHVl
KCksIGl0ZW1JbkNvbGxlY3Rpb24udmFsdWUoKSk7CiAgICAgICAgIGlmICghZm9udEN1c3RvbVBs
YXRmb3JtRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBjcmVhdGlvbkRhdGEgPSAmZm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS0+Y3JlYXRpb25EYXRhOwogICAgIH0KIAogICAgIE9wdGlvbmFsPExPR0ZP
TlQ+IGxvZ0ZvbnQ7CiAgICAgZGVjb2RlciA+PiBsb2dGb250OwogICAgIGlmICghbG9nRm9udC5o
YXNWYWx1ZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGZvbnRDdXN0b21QbGF0Zm9ybURhdGEpCiAgICAgICAg
IHdjc2NweV9zKGxvZ0ZvbnQtPmxmRmFjZU5hbWUsIExGX0ZBQ0VTSVpFLCBmb250Q3VzdG9tUGxh
dGZvcm1EYXRhLT5uYW1lLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpKTsKICAgICAKICAgICBhdXRv
IGdkaUZvbnQgPSBhZG9wdEdESU9iamVjdChDcmVhdGVGb250SW5kaXJlY3QoJipsb2dGb250KSk7
CiAgICAgaWYgKCFnZGlGb250KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoV1RG
TW92ZShnZGlGb250KSwgKnNpemUsICpzeW50aGV0aWNCb2xkLCAqc3ludGhldGljT2JsaXF1ZSwg
ZmFsc2UsIGNyZWF0aW9uRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKaW5kZXggYjE4MjBlMDQ4YzA3NzU2MWM5ODFiMTkzZmYzYjVkMzQ2
NzAwMTgwMS4uYTI3ZDEyNTRiZTc2NTgyZGVjODE2ZmUzYmQ5MzY2YjY3MzNmMDBkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtOTUsNyAr
OTUsNyBAQCBXVEY6OlN0cmluZyBBdHRhY2htZW50OjpmaWxlTmFtZSgpIGNvbnN0CiAKIE9wdGlv
bmFsPHVpbnQ2NF90PiBBdHRhY2htZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogewot
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAog
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gQXR0YWNobWVudDo6ZW5jbG9zaW5nSW1hZ2VE
YXRhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElB
dXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmgKaW5kZXggMmFlMmE1MDM0YzNhNDE3MWNjZjQ3N2I5
Nzg1YjczYTZmMjRkYjgxNi4uZjQ2OTExNjc2Y2Q5OGE2YTE3NDdlODAxZTg4ZGIyOGNmMWZjOWEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhY2NlcHRDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShXZWJLaXQ6OldlYkF1
dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIG1lc3NhZ2VPZkN1cnJlbnRKYXZhU2NyaXB0RGlhbG9nT25QYWdlKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJu
IFdURjo6U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlcklucHV0Rm9yQ3VycmVu
dEphdmFTY3JpcHRQcm9tcHRPblBhZ2UoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFs
IE9wdGlvbmFsPEphdmFTY3JpcHREaWFsb2dUeXBlPiB0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERp
YWxvZ09uUGFnZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdl
UHJveHkmKSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPEph
dmFTY3JpcHREaWFsb2dUeXBlPiB0eXBlT2ZDdXJyZW50SmF2YVNjcmlwdERpYWxvZ09uUGFnZShX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uJiwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEJyb3dzaW5nQ29udGV4dFByZXNlbnRh
dGlvbiBjdXJyZW50UHJlc2VudGF0aW9uT2ZQYWdlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Np
b24mLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIEJyb3dzaW5nQ29udGV4dFByZXNl
bnRhdGlvbjo6V2luZG93OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCBiMjcxMGJmZmM0MTQ4
ZmJmYmE2NGM5ZWFlZmVmNGVlMzY2NDFhZjlhLi44ZGJlNzk1ZWQ5ZWEzNGJmZWUzZjEyOTY1ZTVm
MDMzMDBkYmZhOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMg
T3B0aW9uYWw8Q29udGVudFJ1bGVMaXN0TWV0YURhdGE+IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1l
dGFEYXRhKGNvbnN0IFQmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9KTsKICAgICBpZiAo
IXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFEYXRhOwogfQogCkBAIC0yMTgsMTAgKzIxOCwx
MCBAQCBzdGF0aWMgT3B0aW9uYWw8TWFwcGVkRGF0YT4gb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlz
dChjb25zdCBXVEY6OlN0cmluZyYgcGF0aCkKICAgICBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNl
TWVtb3J5TWFwRm9yUGF0aChwYXRoKTsKICAgICBXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YSBm
aWxlRGF0YSA9IG1hcEZpbGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gbWV0YURhdGEgPSBkZWNv
ZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShmaWxlRGF0YSk7CiAgICAgaWYgKCFtZXRhRGF0YSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICByZXR1cm4ge3sgV1RGTW92ZSgqbWV0YURhdGEpLCB7IFdURk1vdmUoZmlsZURhdGEp
IH19fTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IDFmNTA3OWM4NWZkYjk1NGNkNmE2Yzdj
OWNmNzAxOWI0ZDJjMTZmNzkuLmJmZDc1ZGJlYjgzZjdiNGNiYjgzMzU4NzQzOTg0NDkzNmRhZmUz
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZCgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50LnZh
bHVlT3IobV9jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcp
OworICAgICAgICByZXR1cm4gbV9pc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xp
ZW50LnZhbHVlX29yKG1fY2xpZW50V291bGRCZW5lZml0RnJvbUF1dG9tYXRpY1Byb2Nlc3NQcmV3
YXJtaW5nKTsKICAgICB9CiAKICAgICBib29sIHdhc0F1dG9tYXRpY1Byb2Nlc3NXYXJtaW5nU2V0
QnlDbGllbnQoKSBjb25zdCB7IHJldHVybiAhIW1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0Vu
YWJsZWRCeUNsaWVudDsgfQpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
cHJvY2Vzc1N3YXBzT25OYXZpZ2F0aW9uKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQudmFsdWVPcihtX3Byb2Nlc3NTd2Fw
c09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0dXJlcyk7CisgICAgICAgIHJldHVybiBt
X3Byb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21DbGllbnQudmFsdWVfb3IobV9wcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJpbWVudGFsRmVhdHVyZXMpOwogICAgIH0KICAgICB2b2lk
IHNldFByb2Nlc3NTd2Fwc09uTmF2aWdhdGlvbihib29sIHN3YXBzKSB7IG1fcHJvY2Vzc1N3YXBz
T25OYXZpZ2F0aW9uRnJvbUNsaWVudCA9IHN3YXBzOyB9CiAgICAgdm9pZCBzZXRQcm9jZXNzU3dh
cHNPbk5hdmlnYXRpb25Gcm9tRXhwZXJpbWVudGFsRmVhdHVyZXMoYm9vbCBzd2FwcykgeyBtX3By
b2Nlc3NTd2Fwc09uTmF2aWdhdGlvbkZyb21FeHBlcmltZW50YWxGZWF0dXJlcyA9IHN3YXBzOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBkNDgyZDNjMzRk
OGY0YTFjOGRiNjUxZDk3NzA2MjVjMzJkNTA3ZWMyLi43YjI2OWFiMDc0MjY3MzBjODUyNTY5MjE2
ZTJhOTBjOTJlNjAxMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKQEAgLTI2MDAsNyArMjYwMCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVN0YXRlQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBXS1BhZ2VTdGF0ZUNsaWVudEJhc2UqIGNsaWVudCkKIHZvaWQgV0tQ
YWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1Jl
ZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkphdmFTY3JpcHRGdW5jdGlvbiBj
YWxsYmFjaykKIHsKICAgICBDUkFTSF9JRl9TVVNQRU5ERUQ7Ci0gICAgdG9JbXBsKHBhZ2VSZWYp
LT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoeyB0b0ltcGwoc2NyaXB0UmVmKS0+c3RyaW5nKCks
IFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUgfSwgW2NvbnRleHQsIGNhbGxiYWNr
XSAoYXV0byYmIHJlc3VsdCkgeworICAgIHRvSW1wbChwYWdlUmVmKS0+cnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHsgdG9JbXBsKHNjcmlwdFJlZiktPnN0cmluZygpLCBVUkwgeyB9LCBmYWxzZSwg
c3RkOjpudWxsb3B0LCB0cnVlIH0sIFtjb250ZXh0LCBjYWxsYmFja10gKGF1dG8mJiByZXN1bHQp
IHsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAgICAgICAgIGNhbGxiYWNr
KHRvQVBJKHJlc3VsdC52YWx1ZSgpLmdldCgpKSwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElB
dHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
QXR0YWNobWVudENvY29hLm1tCmluZGV4IDEyOTJjY2NjZjg4ZTg4OTM5ZmY5ZmRlNDQ5NWEzNGYy
OWRhOTJiYTIuLjIzN2ZiN2VmYWY1N2ZlZDI3NDZiODY3YmNkNDA4MzU3M2QyOWNkNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1l
bnRDb2NvYS5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIE9wdGlvbmFsPHVpbnQ2NF90PiBBdHRhY2ht
ZW50OjpmaWxlU2l6ZUZvckRpc3BsYXkoKSBjb25zdAogCiAgICAgaWYgKCFbZmlsZVdyYXBwZXIg
aXNSZWd1bGFyRmlsZV0pIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkaXNwbGF5IGEg
c2l6ZSBlc3RpbWF0ZSBmb3IgZGlyZWN0b3J5LXR5cGUgZmlsZSB3cmFwcGVycy4KLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBpZiAoYXV0byBmaWxlU2l6ZSA9IFtbZmlsZVdyYXBwZXIgZmlsZUF0dHJpYnV0ZXNd
W05TRmlsZVNpemVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCmluZGV4IDRmOWY5
ZmY5OWI5NGRjMzljYmNmNmFjMmU3MTNjMjczMmI4OThiOTguLjAwZmVjYmJlMzI5ZmZmYjQxMDk2
OWE2ODhlMjI2MDdiODkzNzI2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1NlY3VyaXR5T3JpZ2luLm1tCkBAIC02MCw3ICs2MCw3IEBAIC0gKE5T
U3RyaW5nICopaG9zdAogCiAtIChOU0ludGVnZXIpcG9ydAogewotICAgIHJldHVybiBfc2VjdXJp
dHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydC52YWx1ZU9yKDApOworICAgIHJldHVybiBf
c2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydC52YWx1ZV9vcigwKTsKIH0KIAog
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmMzBjNWVjM2Vi
MjViZDU5ODQ4YjE3Zjg3NDAzOGVkMGU0OWRkY2EzLi5hZGJiMmRhMjcxYzMxZTA1NTQ5NDcyNTcw
MzM5MGNhZGM5NTM2YWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTIwNzAsNyArMjA3MCw3IEBAIC0gKHZvaWQpX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRpb246
KHZvCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1h
bmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CiAgICAgZm9yIChfV0tUZXh0TWFuaXB1bGF0aW9uVG9r
ZW4gKndrVG9rZW4gaW4gaXRlbS50b2tlbnMpCi0gICAgICAgIHRva2Vucy5hcHBlbmQoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuIHsgY29yZVRl
eHRNYW5pcHVsYXRpb25Ub2tlbklkZW50aWZpZXJGcm9tU3RyaW5nKHdrVG9rZW4uaWRlbnRpZmll
ciksIHdrVG9rZW4uY29udGVudCwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICB0b2tlbnMuYXBw
ZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tl
biB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uVG9rZW5JZGVudGlmaWVyRnJvbVN0cmluZyh3a1Rva2Vu
LmlkZW50aWZpZXIpLCB3a1Rva2VuLmNvbnRlbnQsIHN0ZDo6bnVsbG9wdCB9KTsKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRl
bT4gY29yZUl0ZW1zOwogICAgIGNvcmVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwpA
QCAtMjEzMCw3ICsyMTMwLDcgQEAgLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKikKICAgICAgICAgVmVj
dG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tl
bj4gY29yZVRva2VuczsKICAgICAgICAgY29yZVRva2Vucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHdrSXRlbS50b2tlbnMuY291bnQpOwogICAgICAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25U
b2tlbiAqd2tUb2tlbiBpbiB3a0l0ZW0udG9rZW5zKQotICAgICAgICAgICAgY29yZVRva2Vucy51
bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvblRva2VuIHsgY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklkZW50aWZpZXJGcm9tU3Ry
aW5nKHdrVG9rZW4uaWRlbnRpZmllciksIHdrVG9rZW4uY29udGVudCwgV1RGOjpudWxsb3B0IH0p
OworICAgICAgICAgICAgY29yZVRva2Vucy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuIHsgY29yZVRleHRNYW5pcHVs
YXRpb25Ub2tlbklkZW50aWZpZXJGcm9tU3RyaW5nKHdrVG9rZW4uaWRlbnRpZmllciksIHdrVG9r
ZW4uY29udGVudCwgc3RkOjpudWxsb3B0IH0pOwogICAgICAgICBjb3JlSXRlbXMudW5jaGVja2Vk
QXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25J
dGVtIHsgY29yZVRleHRNYW5pcHVsYXRpb25JdGVtSWRlbnRpZmllckZyb21TdHJpbmcod2tJdGVt
LmlkZW50aWZpZXIpLCBXVEZNb3ZlKGNvcmVUb2tlbnMpIH0pOwogICAgIH0KIApAQCAtMjI4OCw3
ICsyMjg4LDcgQEAgLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRh
ICo+ICopaGlnaGxpZ2h0cwogICAgIGZvciAoTlNEYXRhICpoaWdobGlnaHQgaW4gaGlnaGxpZ2h0
cykKICAgICAgICAgY29udmVydEFuZEFkZEhpZ2hsaWdodChidWZmZXJzLCBoaWdobGlnaHQpOwog
ICAgIAotICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoYnVm
ZmVycywgV1RGOjpudWxsb3B0KTsKKyAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRT
Y3JvbGxUb0luZGV4KGJ1ZmZlcnMsIHN0ZDo6bnVsbG9wdCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjZTVi
N2JkNWIwMWFiYzgyMTA5NWQwNTU5NWFhZTk2OWI2OGNmNWZlLi43MzY3ZTg4MDI3NmZhNjQxN2E5
ZTQ5ZmU4OTg3OWNmY2U5ODljMTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNTM3LDEy
ICs1MzcsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0QXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50KCkKIAogLSAoTlNTdHJpbmcgKilfYXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJB
Z2VudAogewotICAgIHJldHVybiBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LnZhbHVlT3Io
bmlsKS5nZXQoKTsKKyAgICByZXR1cm4gX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC52YWx1
ZV9vcihuaWwpLmdldCgpOwogfQogCiAtIChOU1N0cmluZyAqKWFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudAogewotICAgIHJldHVybiBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LnZhbHVl
T3IoZGVmYXVsdEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCgpKS5nZXQoKTsKKyAgICByZXR1
cm4gX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC52YWx1ZV9vcihkZWZhdWx0QXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50KCkpLmdldCgpOwogfQogCiAtICh2b2lkKXNldEFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudDooTlNTdHJpbmcgKilhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQK
QEAgLTk1MiwxOCArOTUyLDE4IEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczoo
TlNBcnJheTxOU1N0cmluZyAqPiAqKXBhdHRlcm5zCiAKIC0gKHZvaWQpX3NldExvYWRzRnJvbU5l
dHdvcms6KEJPT0wpbG9hZHMKIHsKLSAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFsbG93ZWRO
ZXR3b3JrSG9zdHMobG9hZHMgPyBXVEY6Om51bGxvcHQgOiBPcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNl
dEFsbG93ZWROZXR3b3JrSG9zdHMobG9hZHMgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxIYXNo
U2V0PFN0cmluZz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKIH0KIAogLSAoQk9PTClfbG9h
ZHNGcm9tTmV0d29yawogewotICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmFsbG93ZWRO
ZXR3b3JrSG9zdHMoKSA9PSBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIF9wYWdlQ29uZmlndXJh
dGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpID09IHN0ZDo6bnVsbG9wdDsKIH0KIAogLSAodm9p
ZClfc2V0QWxsb3dlZE5ldHdvcmtIb3N0czooTlNTZXQ8TlNTdHJpbmcgKj4gKilob3N0cwogewog
ICAgIGlmICghaG9zdHMpCi0gICAgICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFs
bG93ZWROZXR3b3JrSG9zdHMoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhzdGQ6Om51bGxvcHQpOwogICAgIEhh
c2hTZXQ8U3RyaW5nPiBzZXQ7CiAgICAgZm9yIChOU1N0cmluZyAqaG9zdCBpbiBob3N0cykKICAg
ICAgICAgc2V0LmFkZChob3N0KTsKQEAgLTExNTYsNyArMTE1Niw3IEBAIC0gKHZvaWQpX3NldENQ
VUxpbWl0Oihkb3VibGUpY3B1TGltaXQKIAogLSAoZG91YmxlKV9jcHVMaW1pdAogewotICAgIHJl
dHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmNwdUxpbWl0KCkudmFsdWVPcigwKTsKKyAgICByZXR1
cm4gX3BhZ2VDb25maWd1cmF0aW9uLT5jcHVMaW1pdCgpLnZhbHVlX29yKDApOwogfQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IGFl
NmE0ZDI2ZTcwYzA0YWJiNmZmZDlmNjJjYjg0NTZkZTBlN2IwNTMuLjZjZmViOWVjYzRkYjgxMWQ3
NWMzY2JjZjM3Y2JlMmJlNGQ1OWEzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgK
QEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+
IHRvV2Vic2l0ZURhdGFUeXBlKE5TU3RyaW5nICp3ZWJzaXRlRGF0YVQKICAgICBpZiAoW3dlYnNp
dGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVT
ZXJ2aWNlc10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vy
dmljZXM7CiAjZW5kaWYKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURh
dGFUeXBlPiB0b1dlYnNpdGVEYXRhVHlwZXMoTlNTZXQgKndlYnNpdGVEYXRhVHlwZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbQppbmRleCBkNzQyMDQ1OTdjNzlmNTBiNmEzZWNhZGVmYmI5Y2ZjNTAwNzNl
NjBjLi4zYmFiZWJmODE1N2EzYWY5ZmU5OTE0NzNjZWUwNzkyZTg0YTkwMjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW0KQEAgLTgzLDggKzgzLDggQEAgLSAodm9pZCljcmVhdGVUYWJXaXRoTmFtZToo
TlNTdHJpbmcgKil0YWJOYW1lIHRhYkljb25VUkw6KE5TVVJMICopdGFiSWNvblVSTCBzb3UKIAog
LSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6
KE5TVVJMICopZnJhbWVVUkwgY29udGV4dFNlY3VyaXR5T3JpZ2luOihOU1VSTCAqKWNvbnRleHRT
ZWN1cml0eU9yaWdpbiB1c2VDb250ZW50U2NyaXB0Q29udGV4dDooQk9PTCl1c2VDb250ZW50U2Ny
aXB0Q29udGV4dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIE5TRGljdGlv
bmFyeSAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxG
cmFtZVVSTCA9IGZyYW1lVVJMID8gbWFrZU9wdGlvbmFsKFVSTChmcmFtZVVSTCkpIDogV1RGOjpu
dWxsb3B0OwotICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlPcmlnaW4g
PSBjb250ZXh0U2VjdXJpdHlPcmlnaW4gPyBtYWtlT3B0aW9uYWwoVVJMKGNvbnRleHRTZWN1cml0
eU9yaWdpbikpIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxGcmFt
ZVVSTCA9IGZyYW1lVVJMID8gc3RkOjptYWtlX29wdGlvbmFsKFVSTChmcmFtZVVSTCkpIDogc3Rk
OjpudWxsb3B0OworICAgIE9wdGlvbmFsPFVSTD4gb3B0aW9uYWxDb250ZXh0U2VjdXJpdHlPcmln
aW4gPSBjb250ZXh0U2VjdXJpdHlPcmlnaW4gPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoVVJMKGNvbnRl
eHRTZWN1cml0eU9yaWdpbikpIDogc3RkOjpudWxsb3B0OwogICAgIF9leHRlbnNpb24tPmV2YWx1
YXRlU2NyaXB0KHNjcmlwdFNvdXJjZSwgb3B0aW9uYWxGcmFtZVVSTCwgb3B0aW9uYWxDb250ZXh0
U2VjdXJpdHlPcmlnaW4sIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBbcHJvdGVjdGVkU2VsZiA9
IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSldIChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQm
JiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAg
Y2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9y
S2V5OiBJbnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0s
IG5pbCk7CkBAIC0xMDQsOCArMTA0LDggQEAgLSAodm9pZClldmFsdWF0ZVNjcmlwdDooTlNTdHJp
bmcgKilzY3JpcHRTb3VyY2UgZnJhbWVVUkw6KE5TVVJMICopZnJhbWVVUkwgY29udGUKIAogLSAo
dm9pZClyZWxvYWRJZ25vcmluZ0NhY2hlOihCT09MKWlnbm9yZUNhY2hlIHVzZXJBZ2VudDooTlNT
dHJpbmcgKil1c2VyQWdlbnQgaW5qZWN0ZWRTY3JpcHQ6KE5TU3RyaW5nICopaW5qZWN0ZWRTY3Jp
cHQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
cgogewotICAgIE9wdGlvbmFsPFN0cmluZz4gb3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQg
PyBtYWtlT3B0aW9uYWwoU3RyaW5nKHVzZXJBZ2VudCkpIDogV1RGOjpudWxsb3B0OwotICAgIE9w
dGlvbmFsPFN0cmluZz4gb3B0aW9uYWxJbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0ID8g
bWFrZU9wdGlvbmFsKFN0cmluZyhpbmplY3RlZFNjcmlwdCkpIDogV1RGOjpudWxsb3B0OworICAg
IE9wdGlvbmFsPFN0cmluZz4gb3B0aW9uYWxVc2VyQWdlbnQgPSB1c2VyQWdlbnQgPyBzdGQ6Om1h
a2Vfb3B0aW9uYWwoU3RyaW5nKHVzZXJBZ2VudCkpIDogc3RkOjpudWxsb3B0OworICAgIE9wdGlv
bmFsPFN0cmluZz4gb3B0aW9uYWxJbmplY3RlZFNjcmlwdCA9IGluamVjdGVkU2NyaXB0ID8gc3Rk
OjptYWtlX29wdGlvbmFsKFN0cmluZyhpbmplY3RlZFNjcmlwdCkpIDogc3RkOjpudWxsb3B0Owog
ICAgIF9leHRlbnNpb24tPnJlbG9hZElnbm9yaW5nQ2FjaGUoaWdub3JlQ2FjaGUsIG9wdGlvbmFs
VXNlckFnZW50LCBvcHRpb25hbEluamVjdGVkU2NyaXB0LCBbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSldIChJbnNwZWN0b3I6OkV4dGVuc2lvbkV2YWx1YXRpb25SZXN1bHQmJiByZXN1
bHQpIG11dGFibGUgewogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgY2FwdHVy
ZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBJ
bnNwZWN0b3I6OmV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpIH1dKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5tbQppbmRleCA4ZmI1MWRhNGM2NGU1MzVlMzQ4YjJlYTJjNDU5MGU4ODQ0OWJkY2NjLi4w
ZTM0OTRiMzcxYTVmZmJkNmM5ODdlZWE0ZDk2ZDAwMGE3NGU5NmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBA
IC01Nyw3ICs1Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNvdXJjZTooTlNTdHJpbmcg
Kilzb3VyY2UgZm9yV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWCiAKICAgICBXZWJLaXQ6Oklu
aXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVy
PEFQSTo6VXNlclN0eWxlU2hlZXQ+KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgc291
cmNlLCBiYXNlVVJMLCBtYWtlVmVjdG9yPFN0cmluZz4oaW5jbHVkZU1hdGNoUGF0dGVyblN0cmlu
Z3MpLCBtYWtlVmVjdG9yPFN0cmluZz4oZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3MpLCBmb3JN
YWluRnJhbWVPbmx5ID8gV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lczo6SW5qZWN0
SW5Ub3BGcmFtZU9ubHkgOiBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmpl
Y3RJbkFsbEZyYW1lcywgQVBJOjp0b1dlYkNvcmVVc2VyU3R5bGVMZXZlbChsZXZlbCksIHdlYlZp
ZXcgPyBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4oW3dlYlZpZXcgX3BhZ2VdLT53
ZWJQYWdlSUQoKSkgOiBXVEY6Om51bGxvcHQgfSwgY29udGVudFdvcmxkID8gKmNvbnRlbnRXb3Js
ZC0+X2NvbnRlbnRXb3JsZCA6IEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkp
OworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVl
dD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBzb3VyY2UsIGJhc2VVUkwsIG1ha2VW
ZWN0b3I8U3RyaW5nPihpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIG1ha2VWZWN0b3I8U3Ry
aW5nPihleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5ncyksIGZvck1haW5GcmFtZU9ubHkgPyBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdl
YkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluQWxsRnJhbWVzLCBBUEk6
OnRvV2ViQ29yZVVzZXJTdHlsZUxldmVsKGxldmVsKSwgd2ViVmlldyA/IE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPihbd2ViVmlldyBfcGFnZV0tPndlYlBhZ2VJRCgpKSA6IHN0ZDo6
bnVsbG9wdCB9LCBjb250ZW50V29ybGQgPyAqY29udGVudFdvcmxkLT5fY29udGVudFdvcmxkIDog
QVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggYmJlMTM1OThhOWEzMjYwODkz
MmM4ODNmMGJhNDQzZDliMmQxMzA5OC4uYjIwY2MyOWM4ZDRjZGQ0NGFkYTA4NTQ3ZGI3MmI1Nzc2
NDdlNjRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTM2OCwxNCArMzY4LDE0
IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXR0YWNobWVudD4gYXV0
aGVudGljYXRvckF0dGFjaG1lbnQoX1dLQXV0CiB7CiAgICAgc3dpdGNoIChhdHRhY2htZW50KSB7
CiAgICAgY2FzZSBfV0tBdXRoZW50aWNhdG9yQXR0YWNobWVudEFsbDoKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIF9X
S0F1dGhlbnRpY2F0b3JBdHRhY2htZW50UGxhdGZvcm06CiAgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6UGxhdGZvcm07CiAgICAgY2FzZSBfV0tBdXRoZW50
aWNhdG9yQXR0YWNobWVudENyb3NzUGxhdGZvcm06CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTQ3MSw3ICs0NzEs
NyBAQCAtICh2b2lkKW1ha2VDcmVkZW50aWFsV2l0aENoYWxsZW5nZTooTlNEYXRhICopY2hhbGxl
bmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaQogICAgICAgICAgICAgaGFuZGxlcihuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24g
dXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5oYW5kbGVS
ZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVy
dFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBudWxscHRyLCBXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBX
VEY6Om51bGxvcHQsIHsgfSwgdHJ1ZSwgU3RyaW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIF9wYW5lbC0+aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0
aW9uczpvcHRpb25zXSwgbnVsbHB0ciwgV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0OjpVbmF2YWlsYWJsZSwgbnVsbHB0ciwgc3RkOjpudWxsb3B0LCB7IH0sIHRydWUsIFN0cmlu
ZygpLCBudWxscHRyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKICNlbmRpZgogfQogCkBAIC01MjEs
NyArNTIxLDcgQEAgLSAodm9pZClnZXRBc3NlcnRpb25XaXRoQ2hhbGxlbmdlOihOU0RhdGEgKilj
aGFsbGVuZ2Ugb3JpZ2luOihOU1N0cmluZyAqKW9yaWdpbgogICAgICAgICAgICAgaGFuZGxlcihu
aWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86bmlsXSk7CiAgICAgICAgIH0pOwogICAgIH07Ci0gICAgX3BhbmVsLT5o
YW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
Y29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIs
IFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxw
dHIsIFdURjo6bnVsbG9wdCwgeyB9LCB0cnVlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgX3BhbmVsLT5oYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwg
W19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0
aE9wdGlvbnM6b3B0aW9uc10sIG51bGxwdHIsIFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5l
bFJlc3VsdDo6VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCB0cnVlLCBT
dHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5k
ZXggM2FiODMzYzhlMDdjZmZmYmQ1ODczNDA3M2FhYzc4MWM3MGNiZWFjMS4uZDY0YTE4MzgwMjJm
YWMwMjQ0YmJmNTZhODc2YzkzOWEyY2I2NmRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yOTQsMTQgKzI5NCwxNCBAQCBP
cHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJhc2U6Omljb25JREZvckljb25VUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBib29sJiBleAogICAgICAgICBhdXRvIGljb25JREZvckljb25VUkxTdGF0
ZW1lbnQgPSBtX2RiLnByZXBhcmVIZWFwU3RhdGVtZW50KCJTRUxFQ1QgSWNvbkluZm8uaWNvbklE
LCBJY29uSW5mby5zdGFtcCBGUk9NIEljb25JbmZvIFdIRVJFIEljb25JbmZvLnVybCA9ICg/KTsi
X3MpOwogICAgICAgICBpZiAoIWljb25JREZvckljb25VUkxTdGF0ZW1lbnQpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiUHJlcGFyaW5nIHN0YXRlbWVudCBpY29uSURGb3JJY29uVVJMIGZhaWxl
ZCIpOwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICAgICAgbV9pY29uSURGb3JJY29uVVJMU3Rh
dGVtZW50ID0gaWNvbklERm9ySWNvblVSTFN0YXRlbWVudC52YWx1ZSgpLm1vdmVUb1VuaXF1ZVB0
cigpOwogICAgIH0KIAogICAgIGlmIChtX2ljb25JREZvckljb25VUkxTdGF0ZW1lbnQtPmJpbmRU
ZXh0KDEsIGljb25VUkwpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkZhdmlj
b25EYXRhYnNlOjppY29uSURGb3JJY29uVVJMIGZhaWxlZDogJXMiLCBtX2RiLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CiAKICAgICBPcHRpb25hbDxpbnQ2NF90PiByZXN1bHQ7CkBAIC0zNzYs
NyArMzc2LDcgQEAgT3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGRJY29uKGNvbnN0
IFN0cmluZyYgaWNvblVSTCwgY29uc3QgVmVjdG9yPGNoYXIKICAgICAgICAgYXV0byBhZGRJY29u
U3RhdGVtZW50ID0gbV9kYi5wcmVwYXJlSGVhcFN0YXRlbWVudCgiSU5TRVJUIElOVE8gSWNvbklu
Zm8gKHVybCwgc3RhbXApIFZBTFVFUyAoPywgMCk7Il9zKTsKICAgICAgICAgaWYgKCFhZGRJY29u
U3RhdGVtZW50KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlByZXBhcmluZyBzdGF0ZW1lbnQg
YWRkSWNvbiBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9CiAgICAgICAgIG1fYWRkSWNv
blN0YXRlbWVudCA9IGFkZEljb25TdGF0ZW1lbnQudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsK
ICAgICB9CkBAIC0zODQsMTQgKzM4NCwxNCBAQCBPcHRpb25hbDxpbnQ2NF90PiBJY29uRGF0YWJh
c2U6OmFkZEljb24oY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBWZWN0b3I8Y2hhcgogICAg
ICAgICBhdXRvIGFkZEljb25EYXRhU3RhdGVtZW50ID0gbV9kYi5wcmVwYXJlSGVhcFN0YXRlbWVu
dCgiSU5TRVJUIElOVE8gSWNvbkRhdGEgKGljb25JRCwgZGF0YSkgVkFMVUVTICg/LCA/KTsiX3Mp
OwogICAgICAgICBpZiAoIWFkZEljb25EYXRhU3RhdGVtZW50KSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIlByZXBhcmluZyBzdGF0ZW1lbnQgYWRkSWNvbkRhdGEgZmFpbGVkIik7Ci0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQogICAgICAgICBtX2FkZEljb25EYXRhU3RhdGVtZW50ID0gYWRkSWNvbkRh
dGFTdGF0ZW1lbnQudmFsdWUoKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICB9CiAKICAgICBpZiAo
bV9hZGRJY29uU3RhdGVtZW50LT5iaW5kVGV4dCgxLCBpY29uVVJMKSAhPSBTUUxJVEVfT0spIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJJY29uRGF0YWJhc2U6OmFkZEljb24gZmFpbGVkOiAlcyIsIG1f
ZGIubGFzdEVycm9yTXNnKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIG1fYWRkSWNvblN0YXRlbWVudC0+
c3RlcCgpOwpAQCAtNDAwLDcgKzQwMCw3IEBAIE9wdGlvbmFsPGludDY0X3Q+IEljb25EYXRhYmFz
ZTo6YWRkSWNvbihjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFZlY3RvcjxjaGFyCiAgICAg
YXV0byBpY29uSUQgPSBtX2RiLmxhc3RJbnNlcnRSb3dJRCgpOwogICAgIGlmIChtX2FkZEljb25E
YXRhU3RhdGVtZW50LT5iaW5kSW50NjQoMSwgaWNvbklEKSAhPSBTUUxJVEVfT0sgfHwgbV9hZGRJ
Y29uRGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMiwgaWNvbkRhdGEuZGF0YSgpLCBpY29uRGF0YS5z
aXplKCkpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkljb25EYXRhYmFzZTo6
YWRkSWNvbiBmYWlsZWQ6ICVzIiwgbV9kYi5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgbV9hZGRJY29uRGF0YVN0YXRlbWVudC0+c3RlcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVx
dWVzdC5jcHAKaW5kZXggOGFkOGM1Mzg5ZTM3ZDhmOTczZTViZDQ2MzZkZmJmMzVmOTcwYTVmOC4u
NTAxYTcwODFmOWY3Mjk2NzZmY2RjYjI2OTFiYmJiMzI0NmQyMGUwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSogd2Via2l0QXV0aGVudGljYXRpb25SZXF1ZXN0R2V0QXV0aGVudGljYXRpb25D
aGFsbGUKIAogdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVlc3REaWRBdXRoZW50aWNhdGUo
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGF1dG8qIGNyZWRl
bnRpYWwgPSB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3Jl
ZGVudGlhbC52YWx1ZU9yKFdlYkNvcmU6OkNyZWRlbnRpYWwoKSkpOworICAgIGF1dG8qIGNyZWRl
bnRpYWwgPSB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3Jl
ZGVudGlhbC52YWx1ZV9vcihXZWJDb3JlOjpDcmVkZW50aWFsKCkpKTsKICAgICBnX3NpZ25hbF9l
bWl0KHJlcXVlc3QsIHNpZ25hbHNbQVVUSEVOVElDQVRFRF0sIDAsIGNyZWRlbnRpYWwpOwogICAg
IHdlYmtpdF9jcmVkZW50aWFsX2ZyZWUoY3JlZGVudGlhbCk7CiB9CkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9zZXRfcHJvcG9zZWRfY3JlZGVu
dGlhbChXZWJLaXRBdXRoZW50aWNhdGlvblIKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19BVVRIRU5USUNBVElPTl9SRVFVRVNUKHJlcXVlc3QpKTsKIAogICAgIGlmICghY3JlZGVudGlh
bCkgewotICAgICAgICByZXF1ZXN0LT5wcml2LT5wcm9wb3NlZENyZWRlbnRpYWwgPSBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJlcXVlc3QtPnByaXYtPnByb3Bvc2VkQ3JlZGVudGlhbCA9IHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDU1LDggKzQ1NSw4IEBAIHZv
aWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfYXV0aGVudGljYXRlKFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCogcmVxCiAgICAgaWYgKGNyZWRlbnRpYWwpCiAgICAgICAgIHJlcXVl
c3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbCA9IHdlYmtpdENyZWRlbnRpYWxHZXRDcmVkZW50
aWFsKGNyZWRlbnRpYWwpOwogICAgIGVsc2UKLSAgICAgICAgcmVxdWVzdC0+cHJpdi0+YWNjZXB0
ZWRDcmVkZW50aWFsID0gV1RGOjpudWxsb3B0OwotICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgcmVxdWVzdC0+
cHJpdi0+YWNjZXB0ZWRDcmVkZW50aWFsLnZhbHVlT3IoV2ViQ29yZTo6Q3JlZGVudGlhbCgpKSk7
CisgICAgICAgIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbCA9IHN0ZDo6bnVsbG9w
dDsKKyAgICByZXF1ZXN0LT5wcml2LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwsIHJlcXVlc3QtPnByaXYtPmFjY2VwdGVkQ3JlZGVudGlhbC52
YWx1ZV9vcihXZWJDb3JlOjpDcmVkZW50aWFsKCkpKTsKICAgICByZXF1ZXN0LT5wcml2LT5oYW5k
bGVkUmVxdWVzdCA9IHRydWU7CiB9CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9yZXF1ZXN0X2NhbmNlbChXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qq
IHJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKLSAgICByZXF1ZXN0LT5w
cml2LT5hY2NlcHRlZENyZWRlbnRpYWwgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVxdWVzdC0+cHJp
di0+YWNjZXB0ZWRDcmVkZW50aWFsID0gc3RkOjpudWxsb3B0OwogICAgIHJlcXVlc3QtPnByaXYt
PmhhbmRsZWRSZXF1ZXN0ID0gdHJ1ZTsKIAogICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2ln
bmFsc1tDQU5DRUxMRURdLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA0M2FmZDM1
NDk3NzVkMWEzZTBhOTMxNzMwYjE4ZmVhODRmOTcyN2ZmLi42ZmZmZTU5ZGRkNjI3NGMwNDFkOTIw
Y2EzMjk2Nzc4NGFlMGNlYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xNjksMTAg
KzE2OSwxMCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgYXV0byogd2ViVmlldyA9IHdlYmtp
dFdlYkNvbnRleHRHZXRXZWJWaWV3Rm9yUGFnZShtX3Nlc3Npb24tPnByaXYtPndlYkNvbnRleHQs
ICZwYWdlKTsKICAgICAgICAgaWYgKCF3ZWJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8g
ZGlhbG9nVHlwZSA9IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZSh3ZWJW
aWV3KTsKICAgICAgICAgaWYgKCFkaWFsb2dUeXBlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHN3aXRj
aCAoZGlhbG9nVHlwZS52YWx1ZSgpKSB7CiAgICAgICAgIGNhc2UgV0VCS0lUX1NDUklQVF9ESUFM
T0dfQUxFUlQ6CiAgICAgICAgICAgICByZXR1cm4gQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dDo6SmF2YVNjcmlwdERpYWxvZ1R5cGU6OkFsZXJ0OwpAQCAtMTg1LDcgKzE4NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKICAgICBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpCcm93c2luZ0NvbnRleHRQcmVz
ZW50YXRpb24gY3VycmVudFByZXNlbnRhdGlvbk9mUGFnZShXZWJBdXRvbWF0aW9uU2Vzc2lvbiYs
IFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAyNWFl
OTM3NDBjMGJhOWEwYTc3YTc2OWJiYTk1OWU3OTI1MzZlNTgyLi42NjVlMGVlNzYxZDQyMjlkYjgw
ZWM4NDE4ZDI3ODFlNTYwM2NjNGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yMTYsNyArMjE2
LDcgQEAgZ3VpbnQxNiB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KFdlYktpdFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob3JpZ2luLCAw
KTsKIAotICAgIHJldHVybiBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0LnZhbHVlT3Io
MCk7CisgICAgcmV0dXJuIG9yaWdpbi0+c2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQudmFsdWVfb3Io
MCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3NmVlNmQyNzliN2E3MjY1NTY5NmIxZjgxMDQ4YTVhYTkx
NDk3ZGYyLi42NzNkOTU0YzdlYTFlYTBlZjg0M2FlNTM0NmQ1MDE1ZGZjM2UwMTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApA
QCAtMjU2NCw3ICsyNTY0LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3RGlzbWlzc0N1cnJlbnRTY3Jp
cHREaWFsb2coV2ViS2l0V2ViVmlldyogd2ViVmlldykKIE9wdGlvbmFsPFdlYktpdFNjcmlwdERp
YWxvZ1R5cGU+IHdlYmtpdFdlYlZpZXdHZXRDdXJyZW50U2NyaXB0RGlhbG9nVHlwZShXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGlmICghd2ViVmlldy0+cHJpdi0+Y3VycmVudFNjcmlw
dERpYWxvZykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRTY3JpcHREaWFsb2dU
eXBlPih3ZWJWaWV3LT5wcml2LT5jdXJyZW50U2NyaXB0RGlhbG9nLT50eXBlKTsKIH0KQEAgLTI4
MzYsNyArMjgzNiw3IEBAIHZvaWQgd2Via2l0V2ViVmlld1NldENvbXBvc2l0aW9uKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAKIHZvaWQgd2Via2l0V2Vi
Vmlld0NvbmZpcm1Db21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBTdHJp
bmcmIHRleHQpCiB7Ci0gICAgd2Via2l0V2ViVmlld1N5bnRoZXNpemVDb21wb3NpdGlvbktleVBy
ZXNzKHdlYlZpZXcsIHRleHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICB3ZWJr
aXRXZWJWaWV3U3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3Mod2ViVmlldywgdGV4dCwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdDYW5jZWxD
b21wb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBTdHJpbmcmIHRleHQpCkBA
IC0zODE1LDcgKzM4MTUsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhc2NyaXB0V2l0aG91
dEZvcmNlZFVzZXJHZXN0dXJlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LAogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNjcmlwdCk7CiAKLSAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbXMgPSB7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZmFs
c2UgfTsKKyAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbXMgPSB7IFN0cmluZzo6ZnJv
bVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVsbG9wdCwgZmFsc2UgfTsKICAg
ICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFdpdGhQYXJhbXMod2ViVmlldywgc2NyaXB0LCBX
VEZNb3ZlKHBhcmFtcyksIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpOwogfQogCkBA
IC0zODM4LDcgKzM4MzgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0LAogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9pZl9m
YWlsKHNjcmlwdCk7CiAKLSAgICBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbXMgPSB7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9OworICAgIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtcyA9IHsgU3RyaW5nOjpmcm9t
VVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCB0cnVlIH07CiAgICAg
d2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRXaXRoUGFyYW1zKHdlYlZpZXcsIHNjcmlwdCwgV1RG
TW92ZShwYXJhbXMpLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKIH0KIApAQCAt
MzkzNiw3ICszOTM2LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfaW5f
d29ybGQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIKIAogICAgIEdSZWZQdHI8
R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwg
Y2FsbGJhY2ssIHVzZXJEYXRhKSk7CiAgICAgYXV0byB3b3JsZCA9IEFQSTo6Q29udGVudFdvcmxk
OjpzaGFyZWRXb3JsZFdpdGhOYW1lKFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSk7Ci0gICAg
Z2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoeyBTdHJp
bmc6OmZyb21VVEY4KHNjcmlwdCksIFVSTCB7IH0sIGZhbHNlLCBXVEY6Om51bGxvcHQsIHRydWUg
fSwgV1RGOjpudWxsb3B0LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSAoYXV0
byYmIHJlc3VsdCkgeworICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBVUkwgeyB9LCBmYWxzZSwg
c3RkOjpudWxsb3B0LCB0cnVlIH0sIHN0ZDo6bnVsbG9wdCwgd29ybGQuZ2V0KCksIFt0YXNrID0g
V1RGTW92ZSh0YXNrKV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgUmVmUHRyPEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgICAgIEV4Y2Vw
dGlvbkRldGFpbHMgZXhjZXB0aW9uRGV0YWlsczsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFs
dWUoKSkKQEAgLTM5ODEsNyArMzk4MSw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlc1N0cmVhbVJl
YWRDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBnCiAKICAg
ICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291
cmNlX29iamVjdCh0YXNrLmdldCgpKSk7CiAgICAgZ3BvaW50ZXIgb3V0cHV0U3RyZWFtRGF0YSA9
IGdfbWVtb3J5X291dHB1dF9zdHJlYW1fZ2V0X2RhdGEoR19NRU1PUllfT1VUUFVUX1NUUkVBTShv
YmplY3QpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7
IFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0
cmVhbURhdGEpKSwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LAorICAgIGdl
dFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHsgU3RyaW5nOjpmcm9tVVRG
OChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0U3RyZWFtRGF0YSkpLCBVUkwg
eyB9LCBmYWxzZSwgc3RkOjpudWxsb3B0LCB0cnVlIH0sCiAgICAgICAgIFt0YXNrXSAoYXV0byYm
IHJlc3VsdCkgewogICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4
Y2VwdGlvbkRldGFpbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0RyYWdTb3VyY2VHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJhZ1NvdXJjZUd0azMuY3BwCmluZGV4IGEzOTI0ZTljYWE0OTRlNTg5YTkwOGM0NzkwOTljNTdk
NDU3MzVhM2MuLjYxZjA3MTNmMTE2ZGVkMzVhYTg2OWQzNzlhYzQ4MzAyMmY0ZDQxOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIERyYWdTb3VyY2U6OkRyYWdTb3VyY2UoR3RrV2lkZ2V0KiB3ZWJW
aWV3KQogICAgICAgICBpZiAoIWRyYWcubV9zZWxlY3Rpb25EYXRhKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGRyYWcubV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBkcmFnLm1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZHJhZy5t
X2RyYWcgPSBudWxscHRyOwogCiAgICAgICAgIEdka0RldmljZSogZGV2aWNlID0gZ2RrX2RyYWdf
Y29udGV4dF9nZXRfZGV2aWNlKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCBkNTVkZmIzMGY5MjA5N2UzOWQz
YTNjNzg2ZTIxMmYyZmY0MDUxZjE4Li5mZmVlMWIwNDkyNWZjMGI1MjYwOWNhY2ViNzYxZTZhY2Mz
NjE5ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGs0LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4o
U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBv
CiAgICAgICAgIGlmIChkcmFnLm1fZHJhZy5nZXQoKSAhPSBndGtEcmFnKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGRyYWcubV9zZWxlY3Rpb25EYXRhID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBkcmFnLm1fc2VsZWN0aW9uRGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgZHJh
Zy5tX2RyYWcgPSBudWxscHRyOwogCiAgICAgICAgIEdka0RldmljZSogZGV2aWNlID0gZ2RrX2Ry
YWdfZ2V0X2RldmljZShndGtEcmFnKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERyYWdTb3Vy
Y2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gbwogICAgICAgICBpZiAoZHJhZy5tX2RyYWcuZ2V0KCkgIT0gZ3RrRHJhZykKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBkcmFnLm1fc2VsZWN0aW9uRGF0YSA9IFdURjo6
bnVsbG9wdDsKKyAgICAgICAgZHJhZy5tX3NlbGVjdGlvbkRhdGEgPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGRyYWcubV9kcmFnID0gbnVsbHB0cjsKICAgICB9KSwgdGhpcyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKaW5kZXggZjljNWRkNzYwOGEw
OWExMTIzNGIzNDE5NDVmNmZlNjU4OWU0MDNkYy4uZTllNDhmYjA4N2ZlYjdkOWE2M2IyNzk4N2Yy
OWRmY2I2YWUwMzg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUGVyZm9ybUFj
dGlvbigpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYWNjZXB0KFBsYXRmb3JtRHJvcENvbnRleHQq
LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gPSBXVEY6Om51bGxvcHQsIHVuc2lnbmVkID0g
MCk7CisgICAgdm9pZCBhY2NlcHQoUGxhdGZvcm1Ecm9wQ29udGV4dCosIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiA9IHN0ZDo6bnVsbG9wdCwgdW5zaWduZWQgPSAwKTsKICAgICB2b2lkIGVu
dGVyKFdlYkNvcmU6OkludFBvaW50JiYsIHVuc2lnbmVkID0gMCk7CiAgICAgdm9pZCB1cGRhdGUo
V2ViQ29yZTo6SW50UG9pbnQmJiwgdW5zaWduZWQgPSAwKTsKICAgICB2b2lkIGxlYXZlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3Bw
CmluZGV4IDZiZjQ5YTQxMjg5YzFmNzk5ZjQ3YzNlODFjOTJmZmVjNzIwMDMwMzguLjhjZmE3MGI4
MjhhMjA0NTNiNzkzMzhkZDBiNGNmNDViMzlmN2MwYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEcm9wVGFyZ2V0OjphY2NlcHQoR2RrRHJhZ0NvbnRleHQqIGRyb3AsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiBwb3NpdGkKICAgICBtX2Ryb3AgPSBkcm9wOwogICAgIG1fcG9z
aXRpb24gPSBwb3NpdGlvbjsKICAgICBtX2RhdGFSZXF1ZXN0Q291bnQgPSAwOwotICAgIG1fc2Vs
ZWN0aW9uRGF0YSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX3NlbGVjdGlvbkRhdGEgPSBzdGQ6Om51
bGxvcHQ7CiAKICAgICAvLyBXZWJDb3JlIG5lZWRzIHRoZSBzZWxlY3Rpb24gZGF0YSB0byBkZWNp
ZGUsIHNvIHdlIG5lZWQgdG8gcHJlbG9hZCB0aGUKICAgICAvLyBkYXRhIG9mIHRhcmdldHMgd2Ug
c3VwcG9ydC4gT25jZSBhbGwgZGF0YSByZXF1ZXN0cyBhcmUgZG9uZSB3ZSBzdGFydApAQCAtMjQ2
LDggKzI0Niw4IEBAIHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1lckZpcmVkKCkKICAgICBwYWdl
LT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIAogICAgIG1fZHJvcCA9IG51bGxwdHI7
Ci0gICAgbV9wb3NpdGlvbiA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3NlbGVjdGlvbkRhdGEgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9wb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3NlbGVj
dGlvbkRhdGEgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQpA
QCAtMjc3LDggKzI3Nyw4IEBAIHZvaWQgRHJvcFRhcmdldDo6ZHJvcChJbnRQb2ludCYmIHBvc2l0
aW9uLCB1bnNpZ25lZCB0aW1lKQogICAgIGd0a19kcmFnX2ZpbmlzaChtX2Ryb3AuZ2V0KCksIFRS
VUUsIEZBTFNFLCB0aW1lKTsKIAogICAgIG1fZHJvcCA9IG51bGxwdHI7Ci0gICAgbV9wb3NpdGlv
biA9IFdURjo6bnVsbG9wdDsKLSAgICBtX3NlbGVjdGlvbkRhdGEgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgbV9wb3NpdGlvbiA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX3NlbGVjdGlvbkRhdGEgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAppbmRleCAxY2RhM2FhMjM4
OGUwNzY4YmI0NmM3OTU1YmEyZGUxMDBmY2I4Njk5Li4yNDA2ZTBmODY3MzZlNWQ5MDJlYWUxM2Ew
YjkxMDQxM2NiMTBmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtMjk0LDE0ICsyOTQsMTQgQEAgdm9pZCBEcm9wVGFy
Z2V0OjpsZWF2ZSgpCiAgICAgYXV0byogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShX
RUJLSVRfV0VCX1ZJRVdfQkFTRShtX3dlYlZpZXcpKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAg
ICBhdXRvIHBvc2l0aW9uID0gbV9wb3NpdGlvbi52YWx1ZU9yKEludFBvaW50KCkpOworICAgIGF1
dG8gcG9zaXRpb24gPSBtX3Bvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpOwogICAgIERyYWdE
YXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgcG9zaXRpb24sIHBvc2l0aW9u
LCB7IH0pOwogICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0
Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogCiAgICAgbV9kcm9wID0gbnVsbHB0cjsKLSAgICBt
X3Bvc2l0aW9uID0gV1RGOjpudWxsb3B0OwotICAgIG1fc2VsZWN0aW9uRGF0YSA9IFdURjo6bnVs
bG9wdDsKKyAgICBtX3Bvc2l0aW9uID0gc3RkOjpudWxsb3B0OworICAgIG1fc2VsZWN0aW9uRGF0
YSA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX2NhbmNlbGxhYmxlID0gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQb3B1cE1lbnUuY3Bw
CmluZGV4IDhiMTFlYWM2ZGQ4YWUzZmQ3MjJiMjNlMzQwN2VkZTc3MjY4MjRhNzcuLmJlZjgzNGJm
NDZiNzgzYTY4YzhiNzk1ZDhiMTU3Yzc0MmJkNjNiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBvcHVwTWVudS5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAgV2ViS2l0UG9wdXBNZW51OjpXZWJLaXRQb3B1cE1lbnUoR3RrV2lkZ2V0KiB3ZWJWaWV3LCBX
ZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50JgogCiBzdGF0aWMgdm9pZCBtZW51Q2xvc2VDYWxsYmFj
ayhXZWJLaXRQb3B1cE1lbnUqIHBvcHVwTWVudSkKIHsKLSAgICBwb3B1cE1lbnUtPmFjdGl2YXRl
SXRlbShXVEY6Om51bGxvcHQpOworICAgIHBvcHVwTWVudS0+YWN0aXZhdGVJdGVtKHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIHZvaWQgV2ViS2l0UG9wdXBNZW51OjpzaG93UG9wdXBNZW51KGNvbnN0IElu
dFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYgcGxhdGZvcm1EYXRhLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggMDlmNzYyM2JmMmRi
NGVkOTlkYWI1N2UzNzNlNjg0MTFkMzZkYWJkNS4uNDgzODhkNjkxMGUzNDllNjk4YTEwNzQzMTVm
ODYyNjI1YjkwZDQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51
cmwoKSk7Ci0gICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmluc3BlY3QocmVxdWVz
dFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50
NjRfdD4odG9rZW5zWzBdKS52YWx1ZU9yKDApLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazx1aW50NjRfdD4odG9rZW5zWzFdKS52YWx1ZU9yKDApLCB0b2tlbnNbMl0pOworICAgICAg
ICBtX2luc3BlY3RvclByb3RvY29sSGFuZGxlci5pbnNwZWN0KHJlcXVlc3RVUkwuaG9zdEFuZFBv
cnQoKSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDY0X3Q+KHRva2Vuc1sw
XSkudmFsdWVfb3IoMCksIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQ2NF90
Pih0b2tlbnNbMV0pLnZhbHVlX29yKDApLCB0b2tlbnNbMl0pOwogICAgIH0KIAogICAgIGJvb2wg
c3VwcG9ydHNBc3luY1JlcGx5KCkgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZTc4Mjg1NDk0Yzgy
OWMwNWI4NjA0OWM1OWU1ZDRlZmYzZmRjOWRmOS4uZjU3MzdlZDliMzI0OTkxNWJiNDQxNmE5MjU2
M2U0YjU4YWE2NWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTEyMjMsNyArMTIyMyw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJlc3NlZChXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UsIGludCBjCiAgICAgaWYgKGJ1dHRvbiA9PSBHREtfQlVUVE9OX1NFQ09OREFSWSkK
ICAgICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVudC5yZXNldChnZGtfZXZlbnRfY29weShldmVu
dCkpOwogCi0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQoZXZlbnQsIHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0s
IGNsaWNrQ291bnQsIFdURjo6bnVsbG9wdCkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxl
TW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCB7IGNsYW1wVG9JbnRlZ2VyKHgp
LCBjbGFtcFRvSW50ZWdlcih5KSB9LCBjbGlja0NvdW50LCBzdGQ6Om51bGxvcHQpKTsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VCdXR0b25SZWxlYXNlZChXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIGludCBjbGlja0NvdW50LCBkb3VibGUgeCwgZG91YmxlIHksIEd0
a0dlc3R1cmUqIGdlc3R1cmUpCkBAIC0xMjM5LDcgKzEyMzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZUJ1dHRvblJlbGVhc2VkKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgaW50CiAgICAgYXV0byogc2VxdWVuY2UgPSBndGtfZ2VzdHVyZV9zaW5nbGVfZ2V0X2N1cnJl
bnRfc2VxdWVuY2UoR1RLX0dFU1RVUkVfU0lOR0xFKGdlc3R1cmUpKTsKICAgICBndGtfZ2VzdHVy
ZV9zZXRfc2VxdWVuY2Vfc3RhdGUoZ2VzdHVyZSwgc2VxdWVuY2UsIEdUS19FVkVOVF9TRVFVRU5D
RV9DTEFJTUVEKTsKIAotICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRp
dmVXZWJNb3VzZUV2ZW50KGd0a19nZXN0dXJlX2dldF9sYXN0X2V2ZW50KGdlc3R1cmUsIHNlcXVl
bmNlKSwgeyBjbGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSwgY2xpY2tDb3Vu
dCwgV1RGOjpudWxsb3B0KSk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZ3RrX2dlc3R1cmVfZ2V0X2xhc3RfZXZlbnQoZ2VzdHVyZSwg
c2VxdWVuY2UpLCB7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9LCBjbGlj
a0NvdW50LCBzdGQ6Om51bGxvcHQpKTsKIH0KICNlbmRpZgogCkBAIC0xMjU5LDcgKzEyNTksNyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRJbnZlcnREaXJlY3Rpb25Gb3JTY3JvbGxFdmVudChXZWJIaXRU
ZXN0UmVzdWx0RGF0YTo6SXNTY3JvbGxiYQogfQogCiAjaWYgIVVTRShHVEs0KQotc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VIYW5kbGVXaGVlbEV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgR2RrRXZlbnQqIGV2ZW50LCBPcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFz
ZT4gcGhhc2UgPSBXVEY6Om51bGxvcHQsIE9wdGlvbmFsPFdlYldoZWVsRXZlbnQ6OlBoYXNlPiBt
b21lbnR1bSA9IFdURjo6bnVsbG9wdCkKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlSGFu
ZGxlV2hlZWxFdmVudChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50KiBl
dmVudCwgT3B0aW9uYWw8V2ViV2hlZWxFdmVudDo6UGhhc2U+IHBoYXNlID0gc3RkOjpudWxsb3B0
LCBPcHRpb25hbDxXZWJXaGVlbEV2ZW50OjpQaGFzZT4gbW9tZW50dW0gPSBzdGQ6Om51bGxvcHQp
CiB7CiAgICAgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyID0gd2Via2l0V2ViVmll
d0Jhc2VWaWV3R2VzdHVyZUNvbnRyb2xsZXIod2ViVmlld0Jhc2UpOwogICAgIGlmIChjb250cm9s
bGVyICYmIGNvbnRyb2xsZXItPmlzU3dpcGVHZXN0dXJlRW5hYmxlZCgpKSB7CkBAIC0xMjc1LDcg
KzEyNzUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUhhbmRsZVdoZWVsRXZlbnQo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZAogICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIEFTU0VSVCghcHJpdi0+ZGlh
bG9nKTsKICAgICBpZiAocGhhc2UpCi0gICAgICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hl
ZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2ZW50LCBwaGFzZS52YWx1ZSgpLCBtb21lbnR1
bS52YWx1ZU9yKFdlYldoZWVsRXZlbnQ6OlBoYXNlOjpQaGFzZU5vbmUpKSk7CisgICAgICAgIHBy
aXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2ZW50
LCBwaGFzZS52YWx1ZSgpLCBtb21lbnR1bS52YWx1ZV9vcihXZWJXaGVlbEV2ZW50OjpQaGFzZTo6
UGhhc2VOb25lKSkpOwogICAgIGVsc2UKICAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVX
aGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdHdGsuY3BwCmluZGV4IDhi
MGM4OTBjMjFiZDJlNTNkNzgwM2YyMGU4ZGZhNDBjN2MyMTAyYmMuLjk3ZDA5ZGZmYmM2NzZjYzVj
ZDM4NTU1YzExMjViNDQwYmVjN2QxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3R3RrLmNwcApAQCAtNDYzLDUgKzQ2Myw1IEBAIHZv
aWQgd2Via2l0X3dlYl92aWV3X2dldF9iYWNrZ3JvdW5kX2NvbG9yKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIEdka1JHQkEqIHJnYmEpCiAgICAgZ19yZXR1cm5faWZfZmFpbChyZ2JhKTsKIAogICAg
IGF1dG8mIHBhZ2UgPSAqd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8
V2ViS2l0V2ViVmlld0Jhc2UqPih3ZWJWaWV3KSk7Ci0gICAgKnJnYmEgPSBwYWdlLmJhY2tncm91
bmRDb2xvcigpLnZhbHVlT3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKKyAgICAqcmdiYSA9IHBh
Z2UuYmFja2dyb3VuZENvbG9yKCkudmFsdWVfb3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5k
ZXggOGNjMzM5NzZjMzM0NjUzMzdkNTYwMDAyMDVjM2Y1M2UxNjI4NjE0OS4uYzcyM2E3M2I4YTZl
MDdhNGMxOTMxNzdkZWVhMzkxMDhhNDVhMTk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KQEAgLTY1OCwyMyArNjU4LDIzIEBAIC0gKHZv
aWQpX3Byb2Nlc3NXaWxsU3dhcE9yRGlkRXhpdAogICAgIF9hbmltYXRlZFJlc2l6ZU9yaWdpbmFs
Q29udGVudFdpZHRoID0gMDsKICAgICBfYW5pbWF0ZWRSZXNpemVPbGRCb3VuZHMgPSB7IH07CiAg
ICAgW19jb250ZW50VmlldyBzZXRIaWRkZW46Tk9dOwotICAgIF9zY3JvbGxPZmZzZXRUb1Jlc3Rv
cmUgPSBXVEY6Om51bGxvcHQ7Ci0gICAgX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmUgPSBXVEY6
Om51bGxvcHQ7CisgICAgX3Njcm9sbE9mZnNldFRvUmVzdG9yZSA9IHN0ZDo6bnVsbG9wdDsKKyAg
ICBfdW5vYnNjdXJlZENlbnRlclRvUmVzdG9yZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBfc2Nyb2xs
Vmlld0JhY2tncm91bmRDb2xvciA9IFdlYkNvcmU6OkNvbG9yKCk7CiAgICAgX2ludm9raW5nVUlT
Y3JvbGxWaWV3RGVsZWdhdGVDYWxsYmFjayA9IE5POwogICAgIF9kaWREZWZlclVwZGF0ZVZpc2li
bGVDb250ZW50UmVjdHNGb3JVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrID0gTk87CiAgICAg
X2RpZERlZmVyVXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c0ZvckFueVJlYXNvbiA9IE5POwogICAg
IF9kaWREZWZlclVwZGF0ZVZpc2libGVDb250ZW50UmVjdHNGb3JVbnN0YWJsZVNjcm9sbFZpZXcg
PSBOTzsKICAgICBfY3VycmVudGx5QWRqdXN0aW5nU2Nyb2xsVmlld0luc2V0c0ZvcktleWJvYXJk
ID0gTk87Ci0gICAgX2xhc3RTZW50Vmlld0xheW91dFNpemUgPSBXVEY6Om51bGxvcHQ7Ci0gICAg
X2xhc3RTZW50TWF4aW11bVVub2JzY3VyZWRTaXplID0gV1RGOjpudWxsb3B0OwotICAgIF9sYXN0
U2VudERldmljZU9yaWVudGF0aW9uID0gV1RGOjpudWxsb3B0OworICAgIF9sYXN0U2VudFZpZXdM
YXlvdXRTaXplID0gc3RkOjpudWxsb3B0OworICAgIF9sYXN0U2VudE1heGltdW1Vbm9ic2N1cmVk
U2l6ZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBfbGFzdFNlbnREZXZpY2VPcmllbnRhdGlvbiA9IHN0
ZDo6bnVsbG9wdDsKIAotICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA9IFdURjo6bnVsbG9wdDsKKyAg
ICBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID0gc3RkOjpudWxsb3B0OworICAgIF9mcm96ZW5V
bm9ic2N1cmVkQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfZmlyc3RQYWludEFm
dGVyQ29tbWl0TG9hZFRyYW5zYWN0aW9uSUQgPSB7IH07Ci0gICAgX2ZpcnN0VHJhbnNhY3Rpb25J
REFmdGVyUGFnZVJlc3RvcmUgPSBXVEY6Om51bGxvcHQ7CisgICAgX2ZpcnN0VHJhbnNhY3Rpb25J
REFmdGVyUGFnZVJlc3RvcmUgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBfbGFzdFRyYW5zYWN0aW9u
SUQgPSB7IH07CiAKQEAgLTc5NCw3ICs3OTQsNyBAQCAtICh2b2lkKV90cmFja1RyYW5zYWN0aW9u
Q29tbWl0Oihjb25zdCBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJilsYXllcgog
ICAgICAgICBhdXRvIHRpbWVTaW5jZUZpcnN0UmVxdWVzdFdpdGhQZW5kaW5nQ29tbWl0ID0gTW9u
b3RvbmljVGltZTo6bm93KCkgLSAqX3RpbWVPZkZpcnN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
V2l0aFBlbmRpbmdDb21taXQ7CiAgICAgICAgIGlmICh0aW1lU2luY2VGaXJzdFJlcXVlc3RXaXRo
UGVuZGluZ0NvbW1pdCA+IGRlbGF5QmVmb3JlTm9Db21taXRzTG9nZ2luZykKICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIiVwIChwYWdlUHJveHlJRD0lbGx1KSAtW1dLV2ViVmll
dyBfZGlkQ29tbWl0TGF5ZXJUcmVlOl0gLSBmaW5hbGx5IHJlY2VpdmVkIGNvbW1pdCAlLjJmcyBh
ZnRlciB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGUgcmVxdWVzdDsgdHJhbnNhY3Rpb25JRCAl
bGx1Iiwgc2VsZiwgX3BhZ2UtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCB0aW1lU2luY2VGaXJz
dFJlcXVlc3RXaXRoUGVuZGluZ0NvbW1pdC52YWx1ZSgpLCBsYXllclRyZWVUcmFuc2FjdGlvbi50
cmFuc2FjdGlvbklEKCkudG9VSW50NjQoKSk7Ci0gICAgICAgIF90aW1lT2ZGaXJzdFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZVdpdGhQZW5kaW5nQ29tbWl0ID0gV1RGOjpudWxsb3B0OworICAgICAg
ICBfdGltZU9mRmlyc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVXaXRoUGVuZGluZ0NvbW1pdCA9
IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAgLTgzMSwxMyArODMxLDEzIEBAIC0gKEJPT0wp
X3Jlc3RvcmVTY3JvbGxBbmRab29tU3RhdGVGb3JUcmFuc2FjdGlvbjooY29uc3QgV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUCiAgICAgaWYgKCFfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVz
dG9yZSB8fCBsYXllclRyZWVUcmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkgPCBfZmlyc3RUcmFu
c2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZS52YWx1ZSgpKQogICAgICAgICByZXR1cm4gTk87CiAK
LSAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IFdURjo6bnVsbG9wdDsK
KyAgICBfZmlyc3RUcmFuc2FjdGlvbklEQWZ0ZXJQYWdlUmVzdG9yZSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIEJPT0wgbmVlZFVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMgPSBOTzsKIAogICAgIGlm
IChfc2Nyb2xsT2Zmc2V0VG9SZXN0b3JlKSB7CiAgICAgICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
c2NhbGVkU2Nyb2xsT2Zmc2V0ID0gX3Njcm9sbE9mZnNldFRvUmVzdG9yZS52YWx1ZSgpOwotICAg
ICAgICBfc2Nyb2xsT2Zmc2V0VG9SZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgICAgICBfc2Ny
b2xsT2Zmc2V0VG9SZXN0b3JlID0gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChXVEY6OmFy
ZUVzc2VudGlhbGx5RXF1YWw8ZmxvYXQ+KGNvbnRlbnRab29tU2NhbGUoc2VsZiksIF9zY2FsZVRv
UmVzdG9yZSkpIHsKICAgICAgICAgICAgIHNjYWxlZFNjcm9sbE9mZnNldC5zY2FsZShfc2NhbGVU
b1Jlc3RvcmUpOwpAQCAtODUyLDcgKzg1Miw3IEBAIC0gKEJPT0wpX3Jlc3RvcmVTY3JvbGxBbmRa
b29tU3RhdGVGb3JUcmFuc2FjdGlvbjooY29uc3QgV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUCiAK
ICAgICBpZiAoX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmUpIHsKICAgICAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludCB1bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlID0gX3Vub2JzY3VyZWRDZW50ZXJU
b1Jlc3RvcmUudmFsdWUoKTsKLSAgICAgICAgX3Vub2JzY3VyZWRDZW50ZXJUb1Jlc3RvcmUgPSBX
VEY6Om51bGxvcHQ7CisgICAgICAgIF91bm9ic2N1cmVkQ2VudGVyVG9SZXN0b3JlID0gc3RkOjpu
dWxsb3B0OwogCiAgICAgICAgIGlmIChXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWw8ZmxvYXQ+KGNv
bnRlbnRab29tU2NhbGUoc2VsZiksIF9zY2FsZVRvUmVzdG9yZSkpIHsKICAgICAgICAgICAgIENH
UmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVjdChzZWxmLmJvdW5kcywg
X29ic2N1cmVkSW5zZXRzKTsKQEAgLTk3MSw3ICs5NzEsNyBAQCAtICh2b2lkKV9yZXN0b3JlUGFn
ZVNjcm9sbFBvc2l0aW9uOihPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PilzY3JvbGxQb3Np
dGlvbgogICAgIGlmIChzY3JvbGxQb3NpdGlvbikKICAgICAgICAgX3Njcm9sbE9mZnNldFRvUmVz
dG9yZSA9IFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9tUG9zaXRpb24o
V2ViQ29yZTo6RmxvYXRQb2ludChzY3JvbGxQb3NpdGlvbi52YWx1ZSgpKSwgV2ViQ29yZTo6dG9G
bG9hdFNpemUoc2Nyb2xsT3JpZ2luKSk7CiAgICAgZWxzZQotICAgICAgICBfc2Nyb2xsT2Zmc2V0
VG9SZXN0b3JlID0gV1RGOjpudWxsb3B0OworICAgICAgICBfc2Nyb2xsT2Zmc2V0VG9SZXN0b3Jl
ID0gc3RkOjpudWxsb3B0OwogCiAgICAgX29ic2N1cmVkSW5zZXRzV2hlblNhdmVkID0gb2JzY3Vy
ZWRJbnNldHM7CiAgICAgX3NjYWxlVG9SZXN0b3JlID0gc2NhbGU7CkBAIC0xNjQ2LDcgKzE2NDYs
NyBAQCAtICh2b2lkKV9zY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IGFzeW5j
aHJvbm91c2x5SGFuZGxlU2Nyb2xsRXZlbnQ6KAogICAgIH0KIAogICAgIGlmIChzY3JvbGxFdmVu
dC5waGFzZSA9PSBVSVNjcm9sbFBoYXNlQmVnYW4pIHsKLSAgICAgICAgX2N1cnJlbnRTY3JvbGxH
ZXN0dXJlU3RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9jdXJyZW50U2Nyb2xsR2VzdHVy
ZVN0YXRlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBfd2hlZWxFdmVudENvdW50SW5DdXJyZW50
U2Nyb2xsR2VzdHVyZSA9IDA7CiAgICAgfQogCkBAIC0yMTY5LDcgKzIxNjksNyBAQCAtICh2b2lk
KV9kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZQogCiBzdGF0aWMgV2ViQ29yZTo6
RmxvYXRTaXplIGFjdGl2ZU1heGltdW1Vbm9ic2N1cmVkU2l6ZShXS1dlYlZpZXcgKndlYlZpZXcs
IGNvbnN0IENHUmVjdCYgYm91bmRzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFNpemUo
d2ViVmlldy0+X21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlLnZhbHVlT3IoYm91bmRzLnNp
emUpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmxvYXRTaXplKHdlYlZpZXctPl9tYXhpbXVtVW5v
YnNjdXJlZFNpemVPdmVycmlkZS52YWx1ZV9vcihib3VuZHMuc2l6ZSkpOwogfQogCiBzdGF0aWMg
aW50MzJfdCBhY3RpdmVPcmllbnRhdGlvbihXS1dlYlZpZXcgKndlYlZpZXcpCkBAIC0yNDE5LDgg
KzI0MTksOCBAQCAtICh2b2lkKV9uYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luCiAKIC0gKHZvaWQp
X25hdmlnYXRpb25HZXN0dXJlRGlkRW5kCiB7Ci0gICAgX2Zyb3plblZpc2libGVDb250ZW50UmVj
dCA9IFdURjo6bnVsbG9wdDsKLSAgICBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gV1RG
OjpudWxsb3B0OworICAgIF9mcm96ZW5WaXNpYmxlQ29udGVudFJlY3QgPSBzdGQ6Om51bGxvcHQ7
CisgICAgX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChfY29udGVudFZpZXdTaG91bGRCZWNvbWVGaXJzdFJlc3BvbmRlckFmdGVyTmF2aWdhdGlv
bkdlc3R1cmUpIHsKICAgICAgICAgaWYgKHNlbGYud2luZG93ICYmICFbX2NvbnRlbnRWaWV3IGlz
Rmlyc3RSZXNwb25kZXJdKQpAQCAtMjU0Myw3ICsyNTQzLDcgQEAgLSAodm9pZClfc2V0VUlFdmVu
dEF0dHJpYnV0aW9uOihVSUV2ZW50QXR0cmlidXRpb24gKilhdHRyaWJ1dGlvbgogICAgICAgICAp
OwogICAgICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFz
dXJlbWVudCkpOwogICAgIH0gZWxzZQotICAgICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgX3BhZ2UtPnNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50KHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KIApAQCAtMjU3MSw3ICsyNTcxLDcg
QEAgLSAoQ0dSZWN0KV9jb250ZW50VmlzaWJsZVJlY3QKIC0gKENHU2l6ZSlfbWluaW11bUxheW91
dFNpemVPdmVycmlkZQogewogICAgIEFTU0VSVChfdmlld0xheW91dFNpemVPdmVycmlkZSk7Ci0g
ICAgcmV0dXJuIF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlT3IoQ0dTaXplWmVybyk7Cisg
ICAgcmV0dXJuIF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlLnZhbHVlX29yKENHU2l6ZVplcm8pOwog
fQogCiAtICh2b2lkKV9zZXRWaWV3TGF5b3V0U2l6ZU92ZXJyaWRlOihDR1NpemUpdmlld0xheW91
dFNpemVPdmVycmlkZQpAQCAtMjU4Niw3ICsyNTg2LDcgQEAgLSAodm9pZClfc2V0Vmlld0xheW91
dFNpemVPdmVycmlkZTooQ0dTaXplKXZpZXdMYXlvdXRTaXplT3ZlcnJpZGUKIC0gKENHU2l6ZSlf
bWF4aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGUKIHsKICAgICBBU1NFUlQoX21heGltdW1Vbm9i
c2N1cmVkU2l6ZU92ZXJyaWRlKTsKLSAgICByZXR1cm4gX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92
ZXJyaWRlLnZhbHVlT3IoQ0dTaXplWmVybyk7CisgICAgcmV0dXJuIF9tYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZS52YWx1ZV9vcihDR1NpemVaZXJvKTsKIH0KIAogLSAodm9pZClfc2V0TWF4
aW11bVVub2JzY3VyZWRTaXplT3ZlcnJpZGU6KENHU2l6ZSlzaXplCkBAIC0zMTM4LDE0ICszMTM4
LDE0IEBAIC0gKHZvaWQpX292ZXJyaWRlTGF5b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0
U2l6ZTooQ0dTaXplKW1pbmltdW1MYXlvdXRTaXplCiAKIC0gKHZvaWQpX2NsZWFyT3ZlcnJpZGVM
YXlvdXRQYXJhbWV0ZXJzCiB7Ci0gICAgX3ZpZXdMYXlvdXRTaXplT3ZlcnJpZGUgPSBXVEY6Om51
bGxvcHQ7Ci0gICAgX21heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlID0gV1RGOjpudWxsb3B0
OworICAgIF92aWV3TGF5b3V0U2l6ZU92ZXJyaWRlID0gc3RkOjpudWxsb3B0OworICAgIF9tYXhp
bXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZSA9IHN0ZDo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRz
RnJvbURpY3Rpb25hcnkoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICp2aWV3
cG9ydEFyZ3VtZW50UGFpcnMsIGJvb2wgdmlld3BvcnRGaXRFbmFibGVkKQorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IHZpZXdwb3J0QXJndW1lbnRzRnJv
bURpY3Rpb25hcnkoTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICp2aWV3cG9y
dEFyZ3VtZW50UGFpcnMsIGJvb2wgdmlld3BvcnRGaXRFbmFibGVkKQogewogICAgIGlmICghdmll
d3BvcnRBcmd1bWVudFBhaXJzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHMoV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZpZXdwb3J0TWV0
YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3VGVzdGluZ0lPUy5tbQppbmRleCBkYTBlNGY4ZTE0ZTJjZTFhOWI3ZThiMzljYTlkMjE2ZDEw
MGQyNWVkLi5jZTFmYmUwYWQ5ZTdlZTZjZDM3YTYwMjk3YjZhMmY1ZTdiZjRhYjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5n
SU9TLm1tCkBAIC00MDQsNyArNDA0LDcgQEAgLSAodm9pZClfc2V0VUlFdmVudEF0dHJpYnV0aW9u
Rm9yVGVzdGluZzooVUlFdmVudEF0dHJpYnV0aW9uICopYXR0cmlidXRpb24gd2l0aE4KIAogICAg
ICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVu
dCkpOwogICAgIH0gZWxzZQotICAgICAgICBfcGFnZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgX3BhZ2UtPnNldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL21hYy9XS1dlYlZpZXdNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQppbmRleCA0M2QxNmFkMjhmNTQxYTZm
ZjdiZWMyMzI4MDI1ODYyODgzM2MzYWE0Li5hNmUyMGE1MzllMGI3NzI5MmFhMGRlYzNkYTg5ZjBm
NjE2NWFkOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dL
V2ViVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLV2Vi
Vmlld01hYy5tbQpAQCAtNzIsNyArNzIsNyBAQCBPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJP
dmVybGF5U3R5bGU+IHRvQ29yZVNjcm9sbGJhclN0eWxlKF9XS092ZXJsYXlTY3JvbGxiYQogICAg
IGNhc2UgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlQXV0b21hdGljOgogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tJbXBsZW1lbnRhdGlvbk1hYykgPE5TVGV4
dElucHV0Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNw
cAppbmRleCBkNTMzYTE0OWJkNjI4MDc0MDYyNDRlNTE1MGFhZTk5MGZlZDRlMWNhLi5lNjk5NWUy
NjJkY2U3YWI0MTFkMmEyYjc3YzNhZjkxMTM2ZmZlNDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFZpZXc6
OmhhbmRsZUtleWJvYXJkRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCogZXZl
bnQpCiAgICAgaWYgKGZpbHRlclJlc3VsdC5oYW5kbGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwYWdlKCkuaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZl
bnQoZXZlbnQsIGV2ZW50LT5wcmVzc2VkID8gZmlsdGVyUmVzdWx0LmtleVRleHQgOiBTdHJpbmco
KSwgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCkpOworICAgIHBhZ2UoKS5oYW5kbGVLZXlib2FyZEV2ZW50
KFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCwgZXZlbnQtPnByZXNzZWQgPyBm
aWx0ZXJSZXN1bHQua2V5VGV4dCA6IFN0cmluZygpLCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpI
YW5kbGVkQnlJbnB1dE1ldGhvZDo6Tm8sIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KSk7CiB9
CiAKIHZvaWQgVmlldzo6c3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoY29uc3QgU3RyaW5n
JiB0ZXh0LCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYm
IHVuZGVybGluZXMsIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4mJiBzZWxlY3Rpb25SYW5nZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0UG9wdXBNZW51LmNw
cAppbmRleCA1ZWRmZTc2YTA3NjYwZTUwMmE1MjZhMGQ3YTlkOWFjODVjZDI5ODQxLi45OTE2ZjNk
N2EwNzg3YmMxZTMzNmIzNDU4ZTY0MDQxYzE3ODY0MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRQb3B1cE1lbnUuY3BwCkBAIC00Miw3ICs0Miw3
IEBAIFdlYktpdFBvcHVwTWVudTo6V2ViS2l0UG9wdXBNZW51KFdLV1BFOjpWaWV3JiB2aWV3LCBX
ZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50JiBjCiAKIHN0YXRpYyB2b2lkIG1lbnVDbG9zZUNhbGxi
YWNrKFdlYktpdFBvcHVwTWVudSogcG9wdXBNZW51KQogewotICAgIHBvcHVwTWVudS0+YWN0aXZh
dGVJdGVtKFdURjo6bnVsbG9wdCk7CisgICAgcG9wdXBNZW51LT5hY3RpdmF0ZUl0ZW0oc3RkOjpu
dWxsb3B0KTsKIH0KIAogdm9pZCBXZWJLaXRQb3B1cE1lbnU6OnNob3dQb3B1cE1lbnUoY29uc3Qg
SW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVG
YWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhJiBwbGF0Zm9ybURhdGEsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKQEAgLTc4
LDcgKzc4LDcgQEAgdm9pZCBXZWJLaXRQb3B1cE1lbnU6OnNlbGVjdEl0ZW0odW5zaWduZWQgaXRl
bUluZGV4KQogdm9pZCBXZWJLaXRQb3B1cE1lbnU6OmFjdGl2YXRlSXRlbShPcHRpb25hbDx1bnNp
Z25lZD4gaXRlbUluZGV4KQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBpdGVtSW5kZXgudmFsdWVPcihtX3NlbGVj
dGVkSXRlbS52YWx1ZU9yKC0xKSkpOworICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9y
UG9wdXBNZW51KHRoaXMsIGl0ZW1JbmRleC52YWx1ZV9vcihtX3NlbGVjdGVkSXRlbS52YWx1ZV9v
cigtMSkpKTsKICAgICBpZiAobV9tZW51KSB7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfbWF0Y2hlZChtX21lbnUuZ2V0KCksIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAs
IG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOwogICAgICAgICBtX21lbnUgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BF
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0V2ViVmlld1dQRS5j
cHAKaW5kZXggNTk2MzY2ODU1YmYzNWVlNTQxMDFjNjBkZTVkNWEzOTU2NzEwYjBjMS4uMjI0MDMw
NGM5NjFlMTAzODkyZGViZjI4MzNiMDAxYmYwMDFkYmIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRXZWJWaWV3V1BFLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdFdlYlZpZXdXUEUuY3BwCkBAIC0yMjUsNSAr
MjI1LDUgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tncm91bmRfY29sb3IoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29sb3IqIGMKICAgICBhdXRvJiBwYWdlID0gd2Via2l0
V2ViVmlld0dldFBhZ2Uod2ViVmlldyk7CiAKICAgICBhdXRvJiB3ZWJDb3JlQ29sb3IgPSBwYWdl
LmJhY2tncm91bmRDb2xvcigpOwotICAgIHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Io
d2ViQ29yZUNvbG9yLnZhbHVlT3IoV2ViQ29yZTo6Q29sb3I6OndoaXRlKSwgY29sb3IpOworICAg
IHdlYmtpdENvbG9yRmlsbEZyb21XZWJDb3JlQ29sb3Iod2ViQ29yZUNvbG9yLnZhbHVlX29yKFdl
YkNvcmU6OkNvbG9yOjp3aGl0ZSksIGNvbG9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcAppbmRleCA4MDQ5MTgyZTY4N2M5MWQ3MjY0MDNhN2IzMTg0ZjU0OWJkNjcyNTdjLi5lMzVl
NTE0YjMzMmJkM2UwYjM5MWMyNWEzYWY3MDY0NWQ5YzliMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFNlY29uZHMgU2ltdWxhdGVkSW5wdXRLZXlG
cmFtZTo6bWF4aW11bUR1cmF0aW9uKCkgY29uc3QKICAgICAvLyBUaGUgImNvbXB1dGUgdGhlIHRp
Y2sgZHVyYXRpb24iIGFsZ29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgogICAg
IFNlY29uZHMgcmVzdWx0OwogICAgIGZvciAoYXV0byYgZW50cnkgOiBzdGF0ZXMpCi0gICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdCwgZW50cnkuc2Vjb25kLmR1cmF0aW9uLnZhbHVlT3Io
U2Vjb25kcygwKSkpOworICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQsIGVudHJ5LnNl
Y29uZC5kdXJhdGlvbi52YWx1ZV9vcihTZWNvbmRzKDApKSk7CiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6a2V5RnJhbWVUcmFuc2l0aW9uRHVyYXRpb25UaW1lckZpcmVkKCkKIAogICAgIGlmIChpc0tl
eUZyYW1lVHJhbnNpdGlvbkNvbXBsZXRlKCkpIHsKICAgICAgICAgYXV0byBmaW5pc2ggPSBzdGQ6
OmV4Y2hhbmdlKG1fa2V5RnJhbWVUcmFuc2l0aW9uQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIp
OwotICAgICAgICBmaW5pc2goV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZmluaXNoKHN0ZDo6bnVs
bG9wdCk7CiAgICAgfQogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXI6OnRyYW5zaXRpb25Ub05leHRLZXlGcmFtZSgpCiB7CiAgICAgKyttX2tleWZy
YW1lSW5kZXg7CiAgICAgaWYgKG1fa2V5ZnJhbWVJbmRleCA9PSBtX2tleWZyYW1lcy5zaXplKCkp
IHsKLSAgICAgICAgZmluaXNoRGlzcGF0Y2hpbmcoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgZmlu
aXNoRGlzcGF0Y2hpbmcoc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0
aW9uVG9OZXh0SW5wdXRTb3VyY2VTdGF0ZSgpCiB7CiAgICAgaWYgKGlzS2V5RnJhbWVUcmFuc2l0
aW9uQ29tcGxldGUoKSkgewogICAgICAgICBhdXRvIGZpbmlzaCA9IHN0ZDo6ZXhjaGFuZ2UobV9r
ZXlGcmFtZVRyYW5zaXRpb25Db21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7Ci0gICAgICAgIGZp
bmlzaChXVEY6Om51bGxvcHQpOworICAgICAgICBmaW5pc2goc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA3LDM0ICsyMDcsMzQgQEAgdm9pZCBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25CZXR3ZWVuS2V5RnJhbWVzKGNvbnN0IFNpbXVsYXRl
ZElucHV0S2UKIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpyZXNvbHZlTG9jYXRpb24o
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGN1cnJlbnRMb2NhdGlvbiwgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBNb3VzZU1vdmVPcmlnaW4gb3JpZ2luLCBPcHRpb25hbDxT
dHJpbmc+IG5vZGVIYW5kbGUsIEZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y3VycmVudExvY2F0aW9uLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjdXJyZW50TG9jYXRpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBzd2l0Y2ggKG9yaWdpbikgewogICAgIGNhc2UgTW91c2VNb3ZlT3JpZ2luOjpWaWV3
cG9ydDoKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYXRpb24udmFsdWUoKSwgV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYXRpb24udmFsdWUoKSwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNb3VzZU1vdmVPcmlnaW46OlBv
aW50ZXI6IHsKICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgZGVzdGluYXRpb24oY3VycmVudExv
Y2F0aW9uKTsKICAgICAgICAgZGVzdGluYXRpb24ubW92ZUJ5KGxvY2F0aW9uLnZhbHVlKCkpOwot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZXN0aW5hdGlvbiwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1vdXNlTW92ZU9yaWdpbjo6RWxlbWVudDogewog
ICAgICAgICBtX2NsaWVudC52aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KG1fcGFn
ZSwgbV9mcmFtZUlELCBub2RlSGFuZGxlLnZhbHVlKCksIFtkZXN0aW5hdGlvbiA9IGxvY2F0aW9u
LnZhbHVlKCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
LCBlcnJvcik7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
LCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoIWluVmlld0NlbnRlclBvaW50KSB7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9O
QU1FKEVsZW1lbnROb3RJbnRlcmFjdGFibGUpKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX05BTUUo
RWxlbWVudE5vdEludGVyYWN0YWJsZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgZGVzdGluYXRpb24ubW92ZUJ5KGluVmlld0NlbnRlclBv
aW50LnZhbHVlKCkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24s
IFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZXN0aW5hdGlv
biwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTI2MiwyMCArMjYyLDIwIEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0
aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjZW5kaWYKIAogICAg
ICAgICBpbnB1dFNvdXJjZS5zdGF0ZSA9IG5ld1N0YXRlOwotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxv
cHQpOwogICAgIH07CiAKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNl
IFNpbXVsYXRlZElucHV0U291cmNlVHlwZTo6TnVsbDoKICAgICAgICAgLy8gVGhlIG1heGltdW0g
ZHVyYXRpb24gaXMgaGFuZGxlZCBhdCB0aGUga2V5ZnJhbWUgbGV2ZWwgYnkgbV9rZXlGcmFtZVRy
YW5zaXRpb25EdXJhdGlvblRpbWVyLgotICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2ltdWxhdGVkSW5wdXRTb3VyY2VUeXBlOjpNb3Vz
ZToKICAgICBjYXNlIFNpbXVsYXRlZElucHV0U291cmNlVHlwZTo6UGVuOiB7CiAjaWYgIUVOQUJM
RShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24u
dmFsdWVPcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVP
cihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZi
LCBpbnB1dFNvdXJjZSA9IGlucHV0U291cmNlLnR5cGUsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9
IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9p
bnQ+IGxvY2F0aW9uLCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0
YWJsZSB7CisgICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNv
cmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVP
cmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBpbnB1dFNvdXJj
ZSA9IGlucHV0U291cmNlLnR5cGUsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZl
bnREaXNwYXRjaEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9u
LCBPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNo
ZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNSw5ICszMDUsOSBAQCB2
b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0
ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgICAgICAgICAgfSBlbHNlIGlmIChhLmxvY2F0aW9u
ICE9IGIubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICBMT0coQXV0b21hdGlvbiwgIlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcgTW91c2VNb3ZlIGZyb20gKCVkLCAl
ZCkgdG8gKCVkLCAlZCkgZm9yIHRyYW5zaXRpb24gdG8gJWQuJWQiLCB0aGlzLCBhLmxvY2F0aW9u
LnZhbHVlKCkueCgpLCBhLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBiLmxvY2F0aW9uLnZhbHVlKCku
eCgpLCBiLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBtX2tleWZyYW1lSW5kZXgsIG1faW5wdXRTb3Vy
Y2VTdGF0ZUluZGV4KTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBp
bnRlcnBvbGF0ZSBtb3VzZW1vdmVzIHBlciB0aGUgInBlcmZvcm0gYSBwb2ludGVyIG1vdmUiIGFs
Z29yaXRobSAowqcxNy40IERpc3BhdGNoaW5nIEFjdGlvbnMpLgotICAgICAgICAgICAgICAgIG1f
Y2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246
Ok1vdmUsIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZhbHVlT3IoTW91c2VCdXR0b246Ok5vbmUpLCBi
LmxvY2F0aW9uLnZhbHVlKCksIHBvaW50ZXJUeXBlLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlTW91c2VJbnRlcmFjdGlv
bihtX3BhZ2UsIE1vdXNlSW50ZXJhY3Rpb246Ok1vdmUsIGIucHJlc3NlZE1vdXNlQnV0dG9uLnZh
bHVlX29yKE1vdXNlQnV0dG9uOjpOb25lKSwgYi5sb2NhdGlvbi52YWx1ZSgpLCBwb2ludGVyVHlw
ZSwgV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChXVEY6Om51bGxvcHQpOworICAg
ICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOwogICAgICAg
ICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykKICAg
ICAgICAgYnJlYWs7CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UK
ICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICByZXNvbHZlTG9jYXRpb24o
YS5sb2NhdGlvbi52YWx1ZU9yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9y
aWdpbi52YWx1ZU9yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0
aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKV0oT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHJlc29s
dmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxv
Y2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5u
b2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3Zl
KGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2Nh
dGlvbiwgT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZp
bmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzEsMTUgKzMzMSwx
NSBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNl
VG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogICAgICAgICAgICAgLy8gVGhlICJkaXNwYXRj
aCBhIHBvaW50ZXJ7RG93bixVcCxNb3ZlfSBhY3Rpb24iIGFsZ29yaXRobXMgKMKnMTcuNCBEaXNw
YXRjaGluZyBBY3Rpb25zKS4KICAgICAgICAgICAgIGlmICghYS5wcmVzc2VkTW91c2VCdXR0b24g
JiYgYi5wcmVzc2VkTW91c2VCdXR0b24pIHsKICAgICAgICAgICAgICAgICBMT0coQXV0b21hdGlv
biwgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlclslcF06IHNpbXVsYXRpbmcgVG91Y2hEb3duIEAg
KCVkLCAlZCkgZm9yIHRyYW5zaXRpb24gdG8gJWQuJWQiLCB0aGlzLCBiLmxvY2F0aW9uLnZhbHVl
KCkueCgpLCBiLmxvY2F0aW9uLnZhbHVlKCkueSgpLCBtX2tleWZyYW1lSW5kZXgsIG1faW5wdXRT
b3VyY2VTdGF0ZUluZGV4KTsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5zaW11bGF0ZVRvdWNo
SW50ZXJhY3Rpb24obV9wYWdlLCBUb3VjaEludGVyYWN0aW9uOjpUb3VjaERvd24sIGIubG9jYXRp
b24udmFsdWUoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3Bh
Z2UsIFRvdWNoSW50ZXJhY3Rpb246OlRvdWNoRG93biwgYi5sb2NhdGlvbi52YWx1ZSgpLCBzdGQ6
Om51bGxvcHQsIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGEucHJlc3NlZE1vdXNlQnV0dG9uICYmICFiLnByZXNzZWRNb3VzZUJ1dHRvbikg
ewogICAgICAgICAgICAgICAgIExPRyhBdXRvbWF0aW9uLCAiU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyWyVwXTogc2ltdWxhdGluZyBMaWZ0VXAgQCAoJWQsICVkKSBmb3IgdHJhbnNpdGlvbiB0byAl
ZC4lZCIsIHRoaXMsIGIubG9jYXRpb24udmFsdWUoKS54KCksIGIubG9jYXRpb24udmFsdWUoKS55
KCksIG1fa2V5ZnJhbWVJbmRleCwgbV9pbnB1dFNvdXJjZVN0YXRlSW5kZXgpOwotICAgICAgICAg
ICAgICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRvdWNoSW50
ZXJhY3Rpb246OkxpZnRVcCwgYi5sb2NhdGlvbi52YWx1ZSgpLCBXVEY6Om51bGxvcHQsIFdURk1v
dmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuc2lt
dWxhdGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwgVG91Y2hJbnRlcmFjdGlvbjo6TGlmdFVwLCBi
LmxvY2F0aW9uLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShldmVudERpc3BhdGNoRmlu
aXNoZWQpKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYS5sb2NhdGlvbiAhPSBiLmxvY2F0aW9u
KSB7CiAgICAgICAgICAgICAgICAgTE9HKEF1dG9tYXRpb24sICJTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXJbJXBdOiBzaW11bGF0aW5nIE1vdmVUbyBmcm9tICglZCwgJWQpIHRvICglZCwgJWQpIGZv
ciB0cmFuc2l0aW9uIHRvICVkLiVkIiwgdGhpcywgYS5sb2NhdGlvbi52YWx1ZSgpLngoKSwgYS5s
b2NhdGlvbi52YWx1ZSgpLnkoKSwgYi5sb2NhdGlvbi52YWx1ZSgpLngoKSwgYi5sb2NhdGlvbi52
YWx1ZSgpLnkoKSwgbV9rZXlmcmFtZUluZGV4LCBtX2lucHV0U291cmNlU3RhdGVJbmRleCk7Ci0g
ICAgICAgICAgICAgICAgbV9jbGllbnQuc2ltdWxhdGVUb3VjaEludGVyYWN0aW9uKG1fcGFnZSwg
VG91Y2hJbnRlcmFjdGlvbjo6TW92ZVRvLCBiLmxvY2F0aW9uLnZhbHVlKCksIGEuZHVyYXRpb24u
dmFsdWVPcigwX3MpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LnNpbXVsYXRlVG91Y2hJbnRlcmFjdGlvbihtX3BhZ2UsIFRvdWNoSW50
ZXJhY3Rpb246Ok1vdmVUbywgYi5sb2NhdGlvbi52YWx1ZSgpLCBhLmR1cmF0aW9uLnZhbHVlX29y
KDBfcyksIFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKSk7CiAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoc3RkOjpudWxsb3B0KTsKICAg
ICAgICAgfSk7CiAjZW5kaWYgLy8gIUVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05T
KQogICAgICAgICBicmVhazsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNv
dXJjZQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoV1RGOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChzdGQ6Om51bGxvcHQpOwogI2VuZGlmIC8vICFFTkFC
TEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFu
c2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJM
RShXRUJEUklWRVJfV0hFRUxfSU5URVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24u
dmFsdWVPcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVP
cihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZi
LCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCld
KE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgT3B0aW9uYWw8QXV0b21hdGlv
bkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24o
YS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5v
cmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwg
W3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3Bh
dGNoRmluaXNoZWQpXShPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJv
cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVs
YXRlZElucHV0U291cmNlCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3Qg
aW50ZXJwb2xhdGUgbW91c2Ugc2Nyb2xscyBwZXIgdGhlICJwZXJmb3JtIGEgc2Nyb2xsIiBhbGdv
cml0aG0gKMKnMTUuNC40IFdoZWVsIGFjdGlvbnMpLgogICAgICAgICAgICAgICAgIG1fY2xpZW50
LnNpbXVsYXRlV2hlZWxJbnRlcmFjdGlvbihtX3BhZ2UsIGIubG9jYXRpb24udmFsdWUoKSwgYi5z
Y3JvbGxEZWx0YS52YWx1ZSgpLCBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCkpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIH0pOwogI2VuZGlmIC8vICFFTkFCTEUoV0VCRFJJVkVSX1dIRUVM
X0lOVEVSQUNUSU9OUykKICAgICAgICAgYnJlYWs7CkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OmZpbmlzaERpc3BhdGNoaW5nKE9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3IKICAgICBMT0coQXV0b21hdGlvbiwgIlNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlclslcF06IGZpbmlzaGVkIGFsbCBpbnB1dCBzaW11bGF0aW9uIGF0IFsldS4ldV0iLCB0
aGlzLCBtX2tleWZyYW1lSW5kZXgsIG1faW5wdXRTb3VyY2VTdGF0ZUluZGV4KTsKIAogICAgIGF1
dG8gZmluaXNoID0gc3RkOjpleGNoYW5nZShtX3J1bkNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRy
KTsKLSAgICBtX2ZyYW1lSUQgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9mcmFtZUlEID0gc3RkOjpu
dWxsb3B0OwogICAgIG1fa2V5ZnJhbWVzLmNsZWFyKCk7CiAgICAgbV9rZXlmcmFtZUluZGV4ID0g
MDsKICAgICBtX2lucHV0U291cmNlU3RhdGVJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CmluZGV4IGU5NGUwNmNmMjAyZTQxOTE5MTIxNDRkYjE3MTUyMWYzYTM3ZjA1ZTcuLmQ4NmYyZjEx
YjUxMWJjOWY0YjUxNWJhNDQwMDgyMzI0OGIyMTlkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
CkBAIC0yMDgsMTIgKzIwOCwxMiBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWREZXN0
cm95RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3ZWJGcmFtZUlERm9ySGFuZGxlKGNvbnN0IFN0cmlu
ZyYgaGFuZGxlLCBib29sJiBmcmFtZU5vdEZvdW5kKQogewogICAgIGlmIChoYW5kbGUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBpdGVyID0gbV9oYW5kbGVXZWJGcmFtZU1hcC5maW5kKGhhbmRs
ZSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9oYW5kbGVXZWJGcmFtZU1hcC5lbmQoKSkgewogICAgICAg
ICBmcmFtZU5vdEZvdW5kID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICByZXR1cm4gaXRlci0+dmFs
dWU7CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0V2lu
ZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3QKICAgICAgICAg
dGhpcy0+cmVzdG9yZVdpbmRvd0ZvclBhZ2Uod2ViUGFnZSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIHBhZ2UgPSBXVEZNb3ZlKHBhZ2UpLCB3aWR0aCwgaGVpZ2h0LCB4LCB5XSgpIG11
dGFibGUgewogICAgICAgICAgICAgYXV0byYgd2ViUGFnZSA9ICpwYWdlOwogICAgICAgICAgICAg
d2ViUGFnZS5nZXRXaW5kb3dGcmFtZVdpdGhDYWxsYmFjayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgcGFnZSA9IFdURk1vdmUocGFnZSksIHdpZHRoLCBoZWlnaHQsIHgsIHldKFdlYkNv
cmU6OkZsb2F0UmVjdCBvcmlnaW5hbEZyYW1lKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgbmV3RnJhbWUgPSBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6
RmxvYXRQb2ludCh4LnZhbHVlT3Iob3JpZ2luYWxGcmFtZS5sb2NhdGlvbigpLngoKSksIHkudmFs
dWVPcihvcmlnaW5hbEZyYW1lLmxvY2F0aW9uKCkueSgpKSksIFdlYkNvcmU6OkZsb2F0U2l6ZSh3
aWR0aC52YWx1ZU9yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLndpZHRoKCkpLCBoZWlnaHQudmFsdWVP
cihvcmlnaW5hbEZyYW1lLnNpemUoKS5oZWlnaHQoKSkpKTsKKyAgICAgICAgICAgICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbmV3RnJhbWUgPSBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6Rmxv
YXRQb2ludCh4LnZhbHVlX29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS54KCkpLCB5LnZhbHVl
X29yKG9yaWdpbmFsRnJhbWUubG9jYXRpb24oKS55KCkpKSwgV2ViQ29yZTo6RmxvYXRTaXplKHdp
ZHRoLnZhbHVlX29yKG9yaWdpbmFsRnJhbWUuc2l6ZSgpLndpZHRoKCkpLCBoZWlnaHQudmFsdWVf
b3Iob3JpZ2luYWxGcmFtZS5zaXplKCkuaGVpZ2h0KCkpKSk7CiAgICAgICAgICAgICAgICAgaWYg
KG5ld0ZyYW1lICE9IG9yaWdpbmFsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPnNl
dFdpbmRvd0ZyYW1lKG5ld0ZyYW1lKTsKICAgICAgICAgICAgICAgICAKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxl
dGUoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZ
TkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgYXV0
byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZhbHVlT3IoZGVm
YXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVneSA9IG9wdGlv
bmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihkZWZhdWx0UGFnZUxvYWRTdHJhdGVneSk7CiAg
ICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91dCA/IFNlY29u
ZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6IGRlZmF1bHRQ
YWdlTG9hZFRpbWVvdXQ7CiAKICAgICAvLyBJZiBwYWdlIGlzIGxvYWRpbmcgYW5kIHRoZXJlJ3Mg
YW4gYWN0aXZlIEphdmFTY3JpcHQgZGlhbG9nIGlzIHByb2JhYmx5IGJlY2F1c2UgdGhlCkBAIC02
NTYsNyArNjU2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbFNob3dKYXZhU2Ny
aXB0RGlhbG9nKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgaWYgKCFtX3BlbmRpbmdNb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
Zm9yIChhdXRvIGtleSA6IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlLmtleXMoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNr
ID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKGtleSk7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCkBAIC02NjUsNyArNjY1
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbFNob3dKYXZhU2NyaXB0RGlhbG9n
KFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgaWYgKCFtX3BlbmRpbmdLZXlib2FyZEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yIChh
dXRvIGtleSA6IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxs
YmFja3NQZXJQYWdlLmtleXMoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0g
bV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKGtleSk7
Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCkBAIC02NzUsNyAr
Njc1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbFNob3dKYXZhU2NyaXB0RGlh
bG9nKFdlYlBhZ2VQcm94eSYgcGFnZSkKICAgICAgICAgaWYgKCFtX3BlbmRpbmdXaGVlbEV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZm9yIChh
dXRvIGtleSA6IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdXaGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlLmtleXMoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gbV9w
ZW5kaW5nV2hlZWxFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtlKGtleSk7Ci0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRFUkFDVElPTlMpCkBAIC02OTksNyArNjk5LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6bmF2aWdhdGVCcm93c2luZ0NvbnRleHQoY29uc3Qg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXUKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKIAotICAgIGF1dG8gcGFn
ZUxvYWRTdHJhdGVneSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZU9yKGRlZmF1bHRQ
YWdlTG9hZFN0cmF0ZWd5KTsKKyAgICBhdXRvIHBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRpb25hbFBh
Z2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOwogICAgIGF1
dG8gcGFnZUxvYWRUaW1lb3V0ID0gb3B0aW9uYWxQYWdlTG9hZFRpbWVvdXQgPyBTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKCpvcHRpb25hbFBhZ2VMb2FkVGltZW91dCkgOiBkZWZhdWx0UGFnZUxv
YWRUaW1lb3V0OwogCiAgICAgcGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCB1cmwpKTsKQEAg
LTcxMiw3ICs3MTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnb0JhY2tJbkJyb3dz
aW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdQogICAgIGlmICghcGFnZSkK
ICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQp
OwogCi0gICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5
LnZhbHVlT3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAgIGF1dG8gcGFnZUxvYWRTdHJh
dGVneSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihkZWZhdWx0UGFnZUxvYWRT
dHJhdGVneSk7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGlt
ZW91dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0
KSA6IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5nb0JhY2soKTsKQEAgLTcy
NSw3ICs3MjUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpnb0ZvcndhcmRJbkJyb3dz
aW5nQ29udGV4dChjb25zdCBJbnNwZWN0b3I6OlByb3RvY29sOgogICAgIGlmICghcGFnZSkKICAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwog
Ci0gICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlT3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVn
eSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihkZWZhdWx0UGFnZUxvYWRTdHJh
dGVneSk7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91
dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6
IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5nb0ZvcndhcmQoKTsKQEAgLTcz
OCw3ICs3MzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZWxvYWRCcm93c2luZ0Nv
bnRleHQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0bwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwog
Ci0gICAgYXV0byBwYWdlTG9hZFN0cmF0ZWd5ID0gb3B0aW9uYWxQYWdlTG9hZFN0cmF0ZWd5LnZh
bHVlT3IoZGVmYXVsdFBhZ2VMb2FkU3RyYXRlZ3kpOworICAgIGF1dG8gcGFnZUxvYWRTdHJhdGVn
eSA9IG9wdGlvbmFsUGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihkZWZhdWx0UGFnZUxvYWRTdHJh
dGVneSk7CiAgICAgYXV0byBwYWdlTG9hZFRpbWVvdXQgPSBvcHRpb25hbFBhZ2VMb2FkVGltZW91
dCA/IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoKm9wdGlvbmFsUGFnZUxvYWRUaW1lb3V0KSA6
IGRlZmF1bHRQYWdlTG9hZFRpbWVvdXQ7CiAKICAgICBwYWdlLT5yZWxvYWQoeyB9KTsKQEAgLTgw
Myw3ICs4MDMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjptb3VzZUV2ZW50c0ZsdXNo
ZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICNpZiBFTkFCTEUoV0VCRFJJ
VkVSX01PVVNFX0lOVEVSQUNUSU9OUykKICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fcGVuZGlu
Z01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIo
KSkpCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgpAQCAt
ODEzLDcgKzgxMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmtleWJvYXJkRXZlbnRz
Rmx1c2hlZEZvclBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlCiB7CiAjaWYgRU5BQkxFKFdF
QkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBt
X3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlLnRha2UocGFnZS5p
ZGVudGlmaWVyKCkpKQotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOworICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAj
ZW5kaWYKQEAgLTgyMyw3ICs4MjMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aGVl
bEV2ZW50c0ZsdXNoZWRGb3JQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIHsKICNpZiBF
TkFCTEUoV0VCRFJJVkVSX1dIRUVMX0lOVEVSQUNUSU9OUykKICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IG1fcGVuZGluZ1doZWVsRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdl
LmlkZW50aWZpZXIoKSkpCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bnVsbG9wdCk7CisgICAgICAg
IGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsK
ICNlbmRpZgpAQCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6CiAgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQr
KzsKICAgICBtX2V2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJhY2tzLnNldChjYWxsYmFj
a0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24ocGFnZS0+d2ViUGFnZUlEKCksIGZyYW1lSUQsIGZ1bmN0aW9uLCBhcmd1bWVudHNWZWN0b3Is
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQudmFsdWVPcihmYWxzZSksIFdURk1vdmUo
Y2FsbGJhY2tUaW1lb3V0KSwgY2FsbGJhY2tJRCksIDApOworICAgIHBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbihwYWdlLT53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgZnVuY3Rpb24sIGFyZ3VtZW50
c1ZlY3RvciwgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudC52YWx1ZV9vcihmYWxzZSks
IFdURk1vdmUoY2FsbGJhY2tUaW1lb3V0KSwgY2FsbGJhY2tJRCksIDApOwogfQogCiB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRf
dCBjYWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5
cGUpCkBAIC0xMDU0LDcgKzEwNTQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8Q29vcmRpbmF0ZVN5c3Rl
bT4gcHJvdG9jb2xTdHJpbmdUb0Nvb3JkaW5hdGVTeXN0ZW0oSW5zcGVjdG9yOjpQcgogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
Y29tcHV0ZUVsZW1lbnRMYXlvdXQoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGNvbnN0IElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkZyYW1lSGFuZGxlJiBmcmFtZUhhbmRsZSwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Tm9kZUhhbmRsZSYgbm9kZUhh
bmRsZSwgT3B0aW9uYWw8Ym9vbD4mJiBvcHRpb25hbFNjcm9sbEludG9WaWV3SWZOZWVkZWQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0
ZVN5c3RlbVZhbHVlLCBSZWY8Q29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFjaz4mJiBjYWxsYmFj
aykKQEAgLTEzNjgsNyArMTM2OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEFs
bENvb2tpZXMoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6CiAgICAgICAg
IGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhidWlsZEFycmF5Rm9yQ29va2llcyhjb29raWVzKSk7CiAg
ICAgfTsKIAotICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkdldENvb2tpZXNGb3JGcmFtZShwYWdlLT53ZWJQ
YWdlSUQoKSwgV1RGOjpudWxsb3B0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OkdldENvb2tpZXNGb3JGcmFtZShwYWdlLT53ZWJQYWdlSUQoKSwgc3Rk
OjpudWxsb3B0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpkZWxldGVTaW5nbGVDb29raWUoY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdDb250ZXh0SGFuZGxlJiBicm93c2luZ0NvbnRleHRI
YW5kbGUsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgUmVmPERlbGV0ZVNpbmdsZUNvb2tpZUNh
bGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMTM4Niw3ICsxMzg2LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6ZGVsZXRlU2luZ2xlQ29va2llKGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXQKICAgICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKCk7CiAgICAgfTsKIAotICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OkRlbGV0ZUNvb2tpZShwYWdlLT53ZWJQYWdlSUQoKSwgV1RGOjpudWxs
b3B0LCBjb29raWVOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBhZ2Ut
PnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OkRlbGV0ZUNvb2tpZShwYWdlLT53ZWJQYWdlSUQoKSwgc3RkOjpudWxsb3B0LCBj
b29raWVOYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBzdGF0aWMgU3Ry
aW5nIGRvbWFpbkJ5QWRkaW5nRG90UHJlZml4SWZOZWVkZWQoU3RyaW5nIGRvbWFpbikKQEAgLTE1
NzEsMTYgKzE1NzEsMTYgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6dmlld3BvcnRJblZp
ZXdDZW50ZXJQb2ludE9mRWxlbWVudChXZWJQYWdlUHJveHkmIHBhZ2UKIHsKICAgICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwg
T3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4gZGlkQ29tcHV0ZUVsZW1lbnRMYXlv
dXRIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wpIG11dGFibGUgewog
ICAgICAgICBpZiAoZXJyb3JUeXBlKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQsIEFVVE9NQVRJT05fQ09NTUFORF9FUlJPUl9XSVRIX01FU1NBR0UoKmVycm9y
VHlwZSkpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBBVVRP
TUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9NRVNTQUdFKCplcnJvclR5cGUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaW5WaWV3Q2VudGVyUG9pbnQp
IHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgQVVUT01BVElP
Tl9DT01NQU5EX0VSUk9SX1dJVEhfTkFNRShUYXJnZXRPdXRPZkJvdW5kcykpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRfRVJS
T1JfV0lUSF9OQU1FKFRhcmdldE91dE9mQm91bmRzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpblZpZXdDZW50ZXJQb2ludCwg
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaW5WaWV3Q2VudGVyUG9p
bnQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfTsKIAogICAgIHBhZ2UucHJvY2VzcygpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Q29tcHV0ZUVs
ZW1lbnRMYXlvdXQocGFnZS53ZWJQYWdlSUQoKSwgZnJhbWVJRCwgbm9kZUhhbmRsZSwgZmFsc2Us
IENvb3JkaW5hdGVTeXN0ZW06OkxheW91dFZpZXdwb3J0KSwgV1RGTW92ZShkaWRDb21wdXRlRWxl
bWVudExheW91dEhhbmRsZXIpKTsKQEAgLTE2MzQsNyArMTYzNCw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OnNpbXVsYXRlTW91c2VJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2Us
IE1vdXNlSW50CiAgICAgICAgIC8vIElmIHRoZSBldmVudCBkb2VzIG5vdCBoaXQgdGVzdCBhbnl0
aGluZyBpbiB0aGUgd2luZG93LCB0aGVuIGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4K
ICAgICAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYgIXBhZ2UtPmlzUHJvY2Vzc2luZ01vdXNlRXZl
bnRzKCkpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgY2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gT3RoZXJ3aXNlLCB3YWl0IGZvciBtb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4g
d2hlbiBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgS2V5Ym8KICAgICAvLyBUaGlzIGhhcHBlbnMgaW4gc29tZSBjb3JuZXIgY2Fz
ZXMgb24gbWFjT1MsIHN1Y2ggYXMgcmVsZWFzaW5nIGEga2V5IHdoaWxlIENvbW1hbmQgaXMgcHJl
c3NlZC4KICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS5pc1Byb2Nlc3NpbmdLZXlib2Fy
ZEV2ZW50cygpKSB7CiAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1fcGVuZGluZ0tl
eWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLmlkZW50aWZpZXIo
KSk7Ci0gICAgICAgIGNhbGxiYWNrVG9DYW5jZWwoV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2Fs
bGJhY2tUb0NhbmNlbChzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwg
d2FpdCBmb3Iga2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2sgdG8gcnVuIHdoZW4gYWxsIGV2
ZW50cyBhcmUgaGFuZGxlZC4KQEAgLTE3MTMsNyArMTcxMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OnNpbXVsYXRlV2hlZWxJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIGNv
bnN0IFdlCiAgICAgICAgIC8vIElmIHRoZSBldmVudCBkb2VzIG5vdCBoaXQgdGVzdCBhbnl0aGlu
ZyBpbiB0aGUgd2luZG93LCB0aGVuIGl0IG1heSBub3QgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4KICAg
ICAgICAgaWYgKGNhbGxiYWNrSW5NYXAgJiYgIXBhZ2UtPmlzUHJvY2Vzc2luZ1doZWVsRXZlbnRz
KCkpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2tUb0NhbmNlbCA9IG1fcGVuZGluZ1doZWVs
RXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2UudGFrZShwYWdlLT5pZGVudGlmaWVyKCkpOwot
ICAgICAgICAgICAgY2FsbGJhY2tUb0NhbmNlbChXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
Y2FsbGJhY2tUb0NhbmNlbChzdGQ6Om51bGxvcHQpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
T3RoZXJ3aXNlLCB3YWl0IGZvciB3aGVlbEV2ZW50c0ZsdXNoZWRDYWxsYmFjayB0byBydW4gd2hl
biBhbGwgZXZlbnRzIGFyZSBoYW5kbGVkLgpAQCAtMTgwNSw3ICsxODA1LDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybU1vdXNlSW50ZXJhY3Rpb24oY29uc3QgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXUKICAgICAgICAgLy8gSW4gVzNDLW9ubHkgY29kZSBwYXRocywgd2UgY2Fu
IHJlamVjdCBhbnkgcG9pbnRlciBhY3Rpb25zIHdob3NlIGNvb3JkaW5hdGVzIGFyZSBvdXRzaWRl
IHRoZSB2aWV3cG9ydCByZWN0LgogICAgICAgICBpZiAoY2FsbGJhY2tJbk1hcCAmJiAhcGFnZS0+
aXNQcm9jZXNzaW5nTW91c2VFdmVudHMoKSkgewogICAgICAgICAgICAgYXV0byBjYWxsYmFja1Rv
Q2FuY2VsID0gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZS50YWtl
KHBhZ2UtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKFdURjo6
bnVsbG9wdCk7CisgICAgICAgICAgICBjYWxsYmFja1RvQ2FuY2VsKHN0ZDo6bnVsbG9wdCk7CiAg
ICAgICAgIH0KICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVS
QUNUSU9OUykKQEAgLTE5NjUsNyArMTk2NSw3IEBAIHN0YXRpYyBPcHRpb25hbDxVQ2hhcjMyPiBw
cmVzc2VkQ2hhcktleShjb25zdCBTdHJpbmcmIHByZXNzZWRDaGFyS2V5U3RyaW5nKQogICAgIH0K
ICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkRSSVZFUl9BQ1RJT05TX0FQSSkKIApAQCAtMjEw
OCw3ICsyMTA4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGVyZm9ybUludGVyYWN0
aW9uU2VxdWVuY2UoY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDoKICAgICAgICAgICAgIGF1dG8g
cHJlc3NlZEJ1dHRvblN0cmluZyA9IHN0YXRlT2JqZWN0LT5nZXRTdHJpbmcoInByZXNzZWRCdXR0
b24iX3MpOwogICAgICAgICAgICAgaWYgKCEhcHJlc3NlZEJ1dHRvblN0cmluZykgewogICAgICAg
ICAgICAgICAgIGF1dG8gcHJvdG9jb2xCdXR0b24gPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uSGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246Ok1vdXNlQnV0dG9uPihwcmVzc2VkQnV0dG9uU3RyaW5nKTsKLSAgICAg
ICAgICAgICAgICBzb3VyY2VTdGF0ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBwcm90b2NvbEJ1dHRv
bi52YWx1ZU9yKE1vdXNlQnV0dG9uOjpOb25lKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VTdGF0
ZS5wcmVzc2VkTW91c2VCdXR0b24gPSBwcm90b2NvbEJ1dHRvbi52YWx1ZV9vcihNb3VzZUJ1dHRv
bjo6Tm9uZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1dG8gb3JpZ2luU3RyaW5n
ID0gc3RhdGVPYmplY3QtPmdldFN0cmluZygib3JpZ2luIl9zKTsKQEAgLTIyMjQsNyArMjIyNCw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnRha2VTY3JlZW5zaG90KGNvbnN0IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246CiAgICAgfTsKIAogICAgIGlmIChub2RlSGFuZGxl
LmlzRW1wdHkoKSkgewotICAgICAgICB0YWtlVmlld1NuYXBzb3QoKnBhZ2UsIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB0YWtlVmlld1NuYXBzb3QoKnBhZ2UsIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yMjY3LDE5ICsyMjY3LDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRpZFRh
a2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsCiAjaWYgIVBM
QVRGT1JNKENPQ09BKSAmJiAhVVNFKENBSVJPKQogT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cGxhdGZvcm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYpCiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCiBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNz
aW9uOjpwbGF0Zm9ybUdldEJhc2U2NEVuY29kZWRQTkdEYXRhKGNvbnN0IFZpZXdTbmFwc2hvdCYp
CiB7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
fQogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShDQUlSTykKIAogI2lmICFQTEFU
Rk9STShDT0NPQSkKIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtR2VuZXJhdGVMb2NhbEZpbGVQYXRoRm9yUmVtb3RlRmlsZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKQogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24u
aAppbmRleCA1NmY0YTQwM2Y3Zjk1MWNjODBhZjY2ZjVmMDY4ZmE0MmZlMzkwZGI1Li44YjcxYTg4
M2U4MzVmNWJjMjY0MjA2YmYxNTFjY2ZkMzViOWM0ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBA
IC04NSw3ICs4NSw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgQXV0b21hdGlvbkNv
bW1hbmRFcnJvciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlIHR5cGU7Ci0gICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgV1RG
OjpudWxsb3B0IH07CisgICAgT3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlIHsgc3RkOjpudWxsb3B0
IH07CiAgICAgCiAgICAgQXV0b21hdGlvbkNvbW1hbmRFcnJvcihJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2UgdHlwZSkKICAgICAgICAgOiB0eXBlKHR5cGUpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oCmluZGV4IDRkMzZkNjRmZDQwZjQzZjNlNzgx
ZDVlNTk1YTNiZTg0Y2NlZWQ2NTMuLmRhYjdhMDZmMzViNGMzYTY0ODBkOTM5ZmVmNzIyOTk5ODlk
NmVlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25NYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmgKQEAgLTI4LDcgKzI4LDcgQEAK
ICNkZWZpbmUgZXJyb3JOYW1lQW5kRGV0YWlsc1NlcGFyYXRvciAiOyIKIAogLy8gTWFrZSBzdXJl
IHRoZSBwcmVkZWZpbmVkIGVycm9yIG5hbWUgaXMgdmFsaWQsIG90aGVyd2lzZSB1c2UgSW50ZXJu
YWxFcnJvci4KLSNkZWZpbmUgVkFMSURBVEVEX0VSUk9SX01FU1NBR0UoZXJyb3JTdHJpbmcpIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlPihlcnJv
clN0cmluZykudmFsdWVPcihJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1l
c3NhZ2U6OkludGVybmFsRXJyb3IpCisjZGVmaW5lIFZBTElEQVRFRF9FUlJPUl9NRVNTQUdFKGVy
cm9yU3RyaW5nKSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6cGFyc2VF
bnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9y
TWVzc2FnZT4oZXJyb3JTdHJpbmcpLnZhbHVlX29yKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OkVycm9yTWVzc2FnZTo6SW50ZXJuYWxFcnJvcikKIAogLy8gSWYgdGhlIGVycm9yIG5h
bWUgaXMgaW5jb3JyZWN0IGZvciB0aGVzZSBtYWNyb3MsIGl0IHdpbGwgYmUgYSBjb21waWxlLXRp
bWUgZXJyb3IuCiAjZGVmaW5lIFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKGVycm9y
TmFtZSkgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25z
dGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6
ZXJyb3JOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Npb25DYWlyby5jcHAKaW5k
ZXggZjM0MmU2MWQ5MDg4ZDU4MWI4YTg0N2Y2NGI4YmZhZjViOWY0YmI3ZS4uOWY2YmQwMTkwODk5
NzgxMzg4ODMzMjgzMWMxNzBlYTBkMzRlOWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRp
b25TZXNzaW9uQ2Fpcm8uY3BwCkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gYmFzZTY0RW5jb2RlZFBOR0RhdGEoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlKQogewogICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiBwbmdEYXRhOwogICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5n
X3N0cmVhbShzdXJmYWNlLCBbXSh2b2lkKiB1c2VyRGF0YSwgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSAtPiBjYWlyb19zdGF0dXNfdCB7CkBAIC00Nyw3ICs0Nyw3
IEBAIHN0YXRpYyBPcHRpb25hbDxTdHJpbmc+IGJhc2U2NEVuY29kZWRQTkdEYXRhKGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSkKICAgICB9LCAmcG5nRGF0YSk7CiAKICAgICBpZiAocG5nRGF0YS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlVG9TdHJpbmcocG5nRGF0YSk7
CiB9CkBAIC01Niw3ICs1Niw3IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Np
b246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBOR0RhdGEoY29uc3QgU2hhCiB7CiAgICAgYXV0
byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgYXV0byBz
dXJmYWNlID0gYml0bWFwLT5jcmVhdGVDYWlyb1N1cmZhY2UoKTsKICAgICByZXR1cm4gYmFzZTY0
RW5jb2RlZFBOR0RhdGEoc3VyZmFjZS5nZXQoKSk7CkBAIC02Nyw3ICs2Nyw3IEBAIE9wdGlvbmFs
PFN0cmluZz4gV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtR2V0QmFzZTY0RW5jb2RlZFBO
R0RhdGEoY29uc3QgVmllCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHJldHVybiBiYXNlNjRFbmNv
ZGVkUE5HRGF0YShzbmFwc2hvdC5zdXJmYWNlKCkpOwogI2Vsc2UKLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2NvYS9XZWJBdXRvbWF0aW9u
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9jb2Nv
YS9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tCmluZGV4IDExYmI4ZWY1YzY1YjA0NmIwODgx
NjRmNmIxM2IyZmQ4OTM1YWJkYTkuLjhhMTVmZTZjZjU0NDQzMWU5YzY0NWQ3ZDhhY2UzMDJjZGMw
ZDE3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vY29j
b2EvV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2NvY29hL1dlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0KQEAgLTQz
LDcgKzQzLDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1HZXRCYXNlNjRFbmNvZGVkUE5HRGF0YShjb25zdCBTaGEKIHsKICAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGltYWdlRGF0YUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgaWYgKCFiaXRtYXApCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IGJpdG1hcC0+bWFrZUNHSW1hZ2UoKTsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlRGF0YT4gaW1hZ2VEYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEg
YWxsb2NdIGluaXRdKTsKQEAgLTUxLDcgKzUxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBkZXN0aW5h
dGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoKENGTXV0YWJs
ZURhdGFSZWYpaW1hZ2VEYXRhLmdldCgpLCBrVVRUeXBlUE5HLCAxLCAwKSk7CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Q0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoZGVzdGluYXRpb24uZ2V0KCksIGNnSW1hZ2UuZ2V0
KCksIDApOwogICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGRlc3RpbmF0aW9uLmdldCgp
KTsKQEAgLTY0LDcgKzY0LDcgQEAgT3B0aW9uYWw8U3RyaW5nPiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1HZW5lcmF0ZUxvY2FsRmlsZVBhdGhGb3JSZW1vdGVGaWwKICAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBmaWxlQ29udGVudHMgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6YmFzZTY0RW5jb2RlZEZpbGVDb250ZW50cyBvcHRpb25zOjBd
KTsKICAgICBpZiAoIWZpbGVDb250ZW50cykgewogICAgICAgICBMT0dfRVJST1IoIldlYkF1dG9t
YXRpb25TZXNzaW9uOiB1bmFibGUgdG8gZGVjb2RlIGJhc2U2NC1lbmNvZGVkIGZpbGUgY29udGVu
dHMuIik7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCiAgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYkRyaXZlciIpOwpAQCAtNzUs
NyArNzUsNyBAQCBPcHRpb25hbDxTdHJpbmc+IFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bUdlbmVyYXRlTG9jYWxGaWxlUGF0aEZvclJlbW90ZUZpbAogICAgIFtmaWxlQ29udGVudHMuZ2V0
KCkgd3JpdGVUb0ZpbGU6bG9jYWxGaWxlUGF0aCBvcHRpb25zOk5TRGF0YVdyaXRpbmdBdG9taWMg
ZXJyb3I6JmZpbGVXcml0ZUVycm9yXTsKICAgICBpZiAoZmlsZVdyaXRlRXJyb3IpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJXZWJBdXRvbWF0aW9uU2Vzc2lvbjogRXJyb3Igd3JpdGluZyBpbWFnZSBk
YXRhIHRvIHRlbXBvcmFyeSBmaWxlOiAlQCIsIGZpbGVXcml0ZUVycm9yKTsKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
ICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRmlsZVBhdGgpOwpAQCAtODksNyArODksNyBAQCBPcHRp
b25hbDx1bmljaGFyPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y2hhckNvZGVGb3JWaXJ0dWFsS2V5
KEluc3BlY3Rvcjo6UHJvdG9jbwogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6QWx0ZXJuYXRlOgogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TWV0YToKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmQ6Ci0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIZWxwOgogICAgICAgICBy
ZXR1cm4gTlNIZWxwRnVuY3Rpb25LZXk7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpCYWNrc3BhY2U6CkBAIC0xOTMsNyArMTkzLDcgQEAgT3B0
aW9uYWw8dW5pY2hhcj4gV2ViQXV0b21hdGlvblNlc3Npb246OmNoYXJDb2RlRm9yVmlydHVhbEtl
eShJbnNwZWN0b3I6OlByb3RvY28KICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMTI6CiAgICAgICAgIHJldHVybiBOU0YxMkZ1bmN0
aW9uS2V5OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25T
ZXNzaW9uSU9TLm1tCmluZGV4IDA4MWJhOTk0NmFkNzRhNjBjODViNzBlM2YxNDIxOGU1ZmY4YWYz
Y2YuLmI4NTQ0ZmZhNDVkODJiMTAyOTE5MjkzZmFjZWE2NzE2MWUxN2ZjM2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dl
YkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCkBAIC0xOTcsMTAgKzE5NywxMCBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVG91Y2hJbnRlcmFjdGlvbiBpbnRl
cmFjdGlvbikKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVUb3Vj
aEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgVG91Y2hJbnRlcmFjdGlvbiBpbnRlcmFj
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5WaWV3cG9ydCwgT3B0aW9u
YWw8U2Vjb25kcz4gZHVyYXRpb24sIEF1dG9tYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGxvY2F0aW9uT25TY3JlZW4g
PSBwYWdlLnN5bmNSb290Vmlld1RvU2NyZWVuKEludFJlY3QobG9jYXRpb25JblZpZXdwb3J0LCBJ
bnRTaXplKCkpKS5sb2NhdGlvbigpOwotICAgIExPR19XSVRIX1NUUkVBTShBdXRvbWF0aW9uSW50
ZXJhY3Rpb25zLCBzdHJlYW0gPDwgInBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uOiBp
bnRlcmFjdGlvbj0iIDw8IGludGVyYWN0aW9uIDw8ICIsIGxvY2F0aW9uSW5WaWV3cG9ydD0iIDw8
IGxvY2F0aW9uSW5WaWV3cG9ydCA8PCAiLCBsb2NhdGlvbk9uU2NyZWVuPSIgPDwgbG9jYXRpb25P
blNjcmVlbiA8PCAiLCBkdXJhdGlvbj0iIDw8IGR1cmF0aW9uLnZhbHVlT3IoMF9zKS5zZWNvbmRz
KCkpOworICAgIExPR19XSVRIX1NUUkVBTShBdXRvbWF0aW9uSW50ZXJhY3Rpb25zLCBzdHJlYW0g
PDwgInBsYXRmb3JtU2ltdWxhdGVUb3VjaEludGVyYWN0aW9uOiBpbnRlcmFjdGlvbj0iIDw8IGlu
dGVyYWN0aW9uIDw8ICIsIGxvY2F0aW9uSW5WaWV3cG9ydD0iIDw8IGxvY2F0aW9uSW5WaWV3cG9y
dCA8PCAiLCBsb2NhdGlvbk9uU2NyZWVuPSIgPDwgbG9jYXRpb25PblNjcmVlbiA8PCAiLCBkdXJh
dGlvbj0iIDw8IGR1cmF0aW9uLnZhbHVlX29yKDBfcykuc2Vjb25kcygpKTsKIAogICAgIGF1dG8g
aW50ZXJhY3Rpb25GaW5pc2hlZCA9IG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CiAgICAgfSk7CiAKICAgICBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yICpnZW5lcmF0
b3IgPSBbX1dLVG91Y2hFdmVudEdlbmVyYXRvciBzaGFyZWRUb3VjaEV2ZW50R2VuZXJhdG9yXTsK
QEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlVG91Y2hJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgICAgIFtnZW5l
cmF0b3IgbGlmdFVwOmxvY2F0aW9uT25TY3JlZW4gY29tcGxldGlvbkJsb2NrOmludGVyYWN0aW9u
RmluaXNoZWQuZ2V0KCldOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRvdWNoSW50ZXJhY3Rp
b246Ok1vdmVUbzoKLSAgICAgICAgW2dlbmVyYXRvciBtb3ZlVG9Qb2ludDpsb2NhdGlvbk9uU2Ny
ZWVuIGR1cmF0aW9uOmR1cmF0aW9uLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkgY29tcGxldGlvbkJs
b2NrOmludGVyYWN0aW9uRmluaXNoZWQuZ2V0KCldOworICAgICAgICBbZ2VuZXJhdG9yIG1vdmVU
b1BvaW50OmxvY2F0aW9uT25TY3JlZW4gZHVyYXRpb246ZHVyYXRpb24udmFsdWVfb3IoMF9zKS5z
ZWNvbmRzKCkgY29tcGxldGlvbkJsb2NrOmludGVyYWN0aW9uRmluaXNoZWQuZ2V0KCldOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IGQ5NTM3NDQ4N2E0ZTgxMGZhM2QyZWE0NWY5ZTZlYmI0
NTBlYWFmZDMuLjEyMjQ3Y2VhOWE1NWE4N2Q5ZThmODNlOTNmYzk4MjBkMTk4NTVmOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0x
MTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnBy
b2Nlc3NJZGVudGlmaWVyKCkgOiAwOyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGUoKSAhPSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNv
ZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBXVEY6Om51bGxvcHQsIFNob3Vs
ZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHk6Olllcyk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWly
PENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5
bmNSZXBseUluZm8gPSBzdGQ6Om51bGxvcHQsIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFj
dGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAKICAg
ICB2b2lkIHJlcGx5VG9QZW5kaW5nTWVzc2FnZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQppbmRleCBl
Yzg5YWNlZWM3MGE1ZGE2MDY3NDU5MTJlNmViZjIxNWI2ZjNhNTIzLi5kZjE2MTM4YzU0NjBjZTVi
MTVkYWVhOGU4YmE4MjA4YmE5MjJkYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbQpAQCAtMTUxLDcgKzE1
MSw3IEBAIHN0YXRpYyBPcHRpb25hbDxBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZh
U2NyaXB0RGlhbG9nVHlwZT4gdG9JbXBsKF9XS0F1CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgY2FzZSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkphdmFTY3JpcHREaWFsb2dUeXBlTm9uZToKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICBjYXNlIF9XS0F1dG9tYXRpb25TZXNzaW9uSmF2YVNjcmlwdERpYWxvZ1R5cGVQcm9tcHQ6
CiAgICAgICAgIHJldHVybiBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50OjpKYXZhU2NyaXB0
RGlhbG9nVHlwZTo6UHJvbXB0OwogICAgIGNhc2UgX1dLQXV0b21hdGlvblNlc3Npb25KYXZhU2Ny
aXB0RGlhbG9nVHlwZUNvbmZpcm06CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1NoYXJlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
U2hhcmVTaGVldC5oCmluZGV4IGM5N2RjNGI0ZGVjNGZhNTgwZDQ5MGYxZDRjZmM4NmNkZmNlMGJj
YzIuLjFkNWVjMjk2MmJkZmUzY2JkNjk4Y2QwMjM0OTBiYjk5ZTZhM2IzNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2hhcmVTaGVldC5oCkBAIC0zOCw3ICszOCw3IEBA
IHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhWaWV3OihXS1dlYlZpZXcgKil2aWV3OwogCi0tICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVy
czooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYpZGF0YSBpblJlY3Q6KFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7Cist
ICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCYpZGF0YSBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKWRpc21pc3M7CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tTaGFyZVNoZWV0RGVsZWdhdGU+IGRlbGVnYXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTaGFyZVNoZWV0Lm1tCmluZGV4IGU0NzU3
YWI4Yzg4OTg1YTA4NGI3NzUxMDE4NWU4M2U2YmQwZDcxMmMuLmQ0MTM0MWExYjk3NDhmYzUyOGQ0
YTYyNjc0MzNkYTkxMjA4YzI5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2hhcmVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NoYXJlU2hlZXQubW0KQEAgLTg5LDcgKzg5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVmlldzooV0tXZWJWaWV3ICopdmlldwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lk
KXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCAmKWRhdGEgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVj
dCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXByZXNlbnRXaXRoUGFyYW1ldGVyczooY29uc3Qg
V2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCAmKWRhdGEgaW5SZWN0OihzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBjb21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgYXV0
byBzaGFyZURhdGFBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogICAgIApAQCAtMTUyLDcgKzE1Miw3IEBAIC0gKHZvaWQpcHJlc2VudFdpdGhQYXJhbWV0ZXJz
Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMICYpZGF0YSBpblJlCiAgICAg
W3NlbGYgcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTpzaGFyZURhdGFBcnJheS5nZXQoKSBpblJl
Y3Q6cmVjdF07CiB9CiAKLS0gKHZvaWQpcHJlc2VudFdpdGhTaGFyZURhdGFBcnJheTooTlNBcnJh
eSAqKXNoYXJpbmdJdGVtcyBpblJlY3Q6KFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0
PilyZWN0CistICh2b2lkKXByZXNlbnRXaXRoU2hhcmVEYXRhQXJyYXk6KE5TQXJyYXkgKilzaGFy
aW5nSXRlbXMgaW5SZWN0OihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdAog
ewogICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IF93ZWJWaWV3LmdldEF1dG9yZWxlYXNlZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tCmluZGV4IDJkMTAzZjBlZDBhN2QyNjE0MWVjMmYzM2IyYmY2NjUwYmM4YzVlMmYuLjM0Njgw
M2E5ZThiMDU5NGY4NDAzMDIyMTI3N2E5NzdiYmM3MTAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0xNzIsMTEgKzE3
MiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIExvYWRQYXJhbQogI2lmIFBMQVRGT1JNKElPUykKICAgICBp
ZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZp
bHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5h
cHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBXVEY6Om51bGxvcHQsIGhhbmRsZSk7
CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1v
dGVVSSJfcywgc3RkOjpudWxsb3B0LCBoYW5kbGUpOwogICAgICAgICBsb2FkUGFyYW1ldGVycy5j
b250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOwogCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZUV4dGVuc2lvbkhhbmRs
ZTsKLSAgICAgICAgaWYgKFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBXVEY6Om51bGxv
cHQsIGZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgaWYgKFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQsIGZyb250Ym9hcmRTZXJ2aWNl
RXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRT
ZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShmcm9udGJvYXJkU2VydmljZUV4dGVuc2lv
bkhhbmRsZSk7CiAKICAgICAgICAgcHJvY2Vzcy5tYXJrSGFzTWFuYWdlZFNlc3Npb25TYW5kYm94
QWNjZXNzKCk7CkBAIC02MDEsNyArNjAxLDcgQEAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnMKICNl
bHNlCiAgICAgICAgIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgbmVTZXNzaW9uTWFuYWdlclNlcnZp
Y2UgeyAiY29tLmFwcGxlLm5lc2Vzc2lvbm1hbmFnZXIuY29udGVudC1maWx0ZXIiX3MgfTsKICNl
bmRpZgotICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoeyBuZUhlbHBlclNlcnZpY2UsIG5lU2Vzc2lvbk1hbmFnZXJTZXJ2aWNlIH0sIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cCh7IG5lSGVscGVyU2VydmljZSwgbmVTZXNzaW9uTWFuYWdlclNlcnZp
Y2UgfSwgc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkoKTsKQEAgLTY1NSw3ICs2NTUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbQogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2Vz
KCkKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRIYW5kbGVWMjsK
LSAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUubW9iaWxlYXNzZXRkLnYyIl9zLCBXVEY6Om51bGxvcHQsIG1vYmlsZUFzc2V0SGFuZGxlVjIp
OworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5h
cHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0ZDo6bnVsbG9wdCwgbW9iaWxlQXNzZXRIYW5kbGVW
Mik7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdyYW50QWNjZXNz
VG9Bc3NldFNlcnZpY2VzKG1vYmlsZUFzc2V0SGFuZGxlVjIpLCAwKTsKIH0KIApAQCAtNjcyLDcg
KzY3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5
VG9Vc2VyRm9udFJlZ2lzdHJ5KCkKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJv
eHk6OmZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwotICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgV1RGOjpudWxsb3B0
LCBmb250TWFjaEV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51bGxvcHQsIGZv
bnRNYWNoRXh0ZW5zaW9uSGFuZGxlKTsKICAgICByZXR1cm4gZm9udE1hY2hFeHRlbnNpb25IYW5k
bGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggYzE3ZDM4ZmE0ZGJjZWZmNjI4NTcxNDNhMTJj
NGQ1YzAzZjUxOWU4NC4uMGRhYTExY2QyZWI3NzJiNzE2OGY3M2VjZjEyZWE3M2FlNmM2MDQ4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW0KQEAgLTk3LDEwICs5NywxMCBAQCBib29sIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Y2FuQWNjZXNzUGFzdGVib2FyZERhdGEoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjbwogCiBPcHRpb25hbDxXZWJQYXN0ZWJvYXJkUHJveHk6OlBhc3RlYm9hcmRBY2Nlc3NUeXBl
PiBXZWJQYXN0ZWJvYXJkUHJveHk6OmFjY2Vzc1R5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBjb25zdAogewotICAgIE1FU1NBR0Vf
Q0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUoIXBhc3RlYm9hcmROYW1lLmlzRW1wdHkoKSwgV1RGOjpu
dWxsb3B0KTsKKyAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFwYXN0ZWJvYXJk
TmFtZS5pc0VtcHR5KCksIHN0ZDo6bnVsbG9wdCk7CiAKICAgICBhdXRvKiBwcm9jZXNzID0gd2Vi
UHJvY2Vzc1Byb3h5Rm9yQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKLSAgICBNRVNTQUdFX0NIRUNL
X1dJVEhfUkVUVVJOX1ZBTFVFKHByb2Nlc3MsIFdURjo6bnVsbG9wdCk7CisgICAgTUVTU0FHRV9D
SEVDS19XSVRIX1JFVFVSTl9WQUxVRShwcm9jZXNzLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgZm9y
IChhdXRvKiBwYWdlIDogcHJvY2Vzcy0+cGFnZXMoKSkgewogICAgICAgICBhdXRvJiBwcmVmZXJl
bmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzKCk7CkBAIC0xMTgsMTEgKzExOCwxMSBAQCBPcHRpb25h
bDxXZWJQYXN0ZWJvYXJkUHJveHk6OlBhc3RlYm9hcmRBY2Nlc3NUeXBlPiBXZWJQYXN0ZWJvYXJk
UHJveHk6OmFjY2Vzc1R5cAogCiAgICAgYXV0byBjaGFuZ2VDb3VudEFuZFByb2Nlc3NlcyA9IG1f
cGFzdGVib2FyZE5hbWVUb0FjY2Vzc0luZm9ybWF0aW9uTWFwLmZpbmQocGFzdGVib2FyZE5hbWUp
OwogICAgIGlmIChjaGFuZ2VDb3VudEFuZFByb2Nlc3NlcyA9PSBtX3Bhc3RlYm9hcmROYW1lVG9B
Y2Nlc3NJbmZvcm1hdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIGluZm9ybWF0aW9uID0g
Y2hhbmdlQ291bnRBbmRQcm9jZXNzZXMtPnZhbHVlOwogICAgIGlmIChpbmZvcm1hdGlvbi5jaGFu
Z2VDb3VudCAhPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50
KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICByZXR1cm4gaW5mb3JtYXRpb24uYWNjZXNzVHlwZSgqcHJvY2Vzcyk7CiB9
CkBAIC00ODYsMTAgKzQ4NiwxMCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVi
b2FyZEl0ZW1JbmZvKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29ucwogdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBzaXplX3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGludDY0X3QgY2hhbmdlQ291bnQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhbkFjY2Vzc1Bhc3RlYm9hcmRUeXBlcyhj
b25uZWN0aW9uLCBwYXN0ZWJvYXJkTmFtZSkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpudWxsb3B0KTsKIAogICAgIGF1dG8gZGF0YU93bmVyID0gZGV0ZXJtaW5lRGF0YU93bmVyKGNv
bm5lY3Rpb24sIHBhc3RlYm9hcmROYW1lLCBwYWdlSUQsIFBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQ6
OlJlYWQpOwotICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihkYXRhT3duZXIsIGNvbXBsZXRp
b25IYW5kbGVyKFdURjo6bnVsbG9wdCkpOworICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihk
YXRhT3duZXIsIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCkpOwogCiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpwZXJmb3JtQXNEYXRhT3duZXIoKmRhdGFPd25lciwgWyZdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5p
bmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBjaGFuZ2VDb3VudCkpOwpAQCAtNjU2LDEw
ICs2NTYsMTAgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJ
ZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWQKIAogT3B0aW9uYWw8RGF0YU93bmVy
VHlwZT4gV2ViUGFzdGVib2FyZFByb3h5OjpkZXRlcm1pbmVEYXRhT3duZXIoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBQYXN0ZWJvYXJkQWNjZXNzSW50ZW50IGludGVudCkgY29u
c3QKIHsKLSAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZBTFVFKCFwYXN0ZWJvYXJkTmFt
ZS5pc0VtcHR5KCksIFdURjo6bnVsbG9wdCk7CisgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVS
Tl9WQUxVRSghcGFzdGVib2FyZE5hbWUuaXNFbXB0eSgpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAg
YXV0byogcHJvY2VzcyA9IHdlYlByb2Nlc3NQcm94eUZvckNvbm5lY3Rpb24oY29ubmVjdGlvbik7
Ci0gICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShwcm9jZXNzLCBXVEY6Om51bGxv
cHQpOworICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUocHJvY2Vzcywgc3RkOjpu
dWxsb3B0KTsKIAogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gRGF0YU93bmVyVHlw
ZTo6VW5kZWZpbmVkOwpAQCAtNjc0LDcgKzY3NCw3IEBAIE9wdGlvbmFsPERhdGFPd25lclR5cGU+
IFdlYlBhc3RlYm9hcmRQcm94eTo6ZGV0ZXJtaW5lRGF0YU93bmVyKElQQzo6Q29ubmVjdGlvbiYK
ICAgICB9CiAgICAgLy8gSWYgdGhpcyBtZXNzYWdlIGNoZWNrIGlzIGhpdCwgdGhlbiB0aGUgaW5j
b21pbmcgd2ViIHBhZ2UgSUQgZG9lc24ndCBjb3JyZXNwb25kIHRvIGFueSBwYWdlCiAgICAgLy8g
Y3VycmVudGx5IGtub3duIHRvIHRoZSBVSSBwcm9jZXNzLgotICAgIE1FU1NBR0VfQ0hFQ0tfV0lU
SF9SRVRVUk5fVkFMVUUocmVzdWx0Lmhhc1ZhbHVlKCksIFdURjo6bnVsbG9wdCk7CisgICAgTUVT
U0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxVRShyZXN1bHQuaGFzVmFsdWUoKSwgc3RkOjpudWxs
b3B0KTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW50ZW50
KTsKQEAgLTcxNSw3ICs3MTUsNyBAQCBPcHRpb25hbDxXZWJQYXN0ZWJvYXJkUHJveHk6OlBhc3Rl
Ym9hcmRBY2Nlc3NUeXBlPiBXZWJQYXN0ZWJvYXJkUHJveHk6OlBhc3RlYm9hcgogICAgIH0pOwog
CiAgICAgaWYgKG1hdGNoSW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gcHJvY2Vz
c2VzW21hdGNoSW5kZXhdLnNlY29uZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IDA5Y2U0YzdmNTBiYTA2Nzk3
OWEyMzNjMTZiN2QwMWMwN2NmODRkNzkuLjVmYWM2NjJjOTJiZWE2NmI1ZGRlZDljN2ZlNTRjYjRi
MDA1MjI4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQog
ICAgIGlmIChXZWJQcm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBlbmFibGVSZW1vdGVXZWJJbnNwZWN0
b3JFeHRlbnNpb25IYW5kbGU7Ci0gICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2ViaW5zcGVjdG9yIl9zLCBXVEY6Om51bGxv
cHQsIGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSkpCisgICAgICAgIGlm
IChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
d2ViaW5zcGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQsIGVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4
dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYklu
c3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoZW5hYmxlUmVtb3RlV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICB9CiAjZW5kaWYKQEAgLTM3OCwyNiArMzc4LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChX
ZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKSkKLSAgICAgICAgcGFyYW1ldGVy
cy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBX
VEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lv
bkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChX
ZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKCFXZWJDb3JlOjpJT1NBcHBsaWNhdGlv
bjo6aXNNb2JpbGVTYWZhcmkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVu
c2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cChub25Ccm93c2VyU2VydmljZXMoKSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVy
cy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVzRm9yTWFjaExvb2t1cChub25Ccm93c2VyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsK
IAogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKSkKLSAgICAg
ICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFdlYkNvcmU6OmFneENv
bXBpbGVyQ2xhc3NlcygpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIHN0
ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogICAgIGlmIChpc0ludGVybmFsSW5zdGFsbCgpKQotICAg
ICAgICBwYXJhbWV0ZXJzLmRpYWdub3N0aWNzRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGRpYWdub3N0aWNTZXJ2aWNlcygpLCBX
VEY6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OkZsYWdzOjpOb1JlcG9ydCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZGlhZ25vc3RpY3NFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoZGlhZ25vc3RpY1NlcnZpY2VzKCksIHN0ZDo6
bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6RmxhZ3M6Ok5vUmVwb3J0KTsKIAogICAgIHBhcmFt
ZXRlcnMuc3lzdGVtSGFzQmF0dGVyeSA9IHN5c3RlbUhhc0JhdHRlcnkoKTsKLSAgICBwYXJhbWV0
ZXJzLnN5c3RlbUhhc0FDID0gY2FjaGVkU3lzdGVtSGFzQUMoKS52YWx1ZU9yKHRydWUpOworICAg
IHBhcmFtZXRlcnMuc3lzdGVtSGFzQUMgPSBjYWNoZWRTeXN0ZW1IYXNBQygpLnZhbHVlX29yKHRy
dWUpOwogCiAgICAgaWYgKHJlcXVpcmVzQ29udGFpbmVyTWFuYWdlckFjY2VzcygpKSB7CiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb250YWluZXJtYW5h
Z2VyZCJfcywgV1RGOjpudWxsb3B0LCBoYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29udGFpbmVybWFuYWdlcmQi
X3MsIHN0ZDo6bnVsbG9wdCwgaGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5jb250YWluZXJN
YW5hZ2VyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOwogICAgIH0KIApAQCAtNDEy
LDIwICs0MTIsMjAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogI2lmIEVOQUJMRShDRlBS
RUZTX0RJUkVDVF9NT0RFKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChfQVhTQXBw
bGljYXRpb25BY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAgICBwYXJhbWV0ZXJzLnByZWZl
cmVuY2VzRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNG
b3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5jZnByZWZzZC5hZ2VudCJfcywgImNvbS5hcHBsZS5j
ZnByZWZzZC5kYWVtb24iX3MgfSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5w
cmVmZXJlbmNlc0V4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuY2ZwcmVmc2QuYWdlbnQiX3MsICJjb20uYXBw
bGUuY2ZwcmVmc2QuZGFlbW9uIl9zIH0sIHN0ZDo6bnVsbG9wdCk7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAgICBpZiAoIV9N
R0NhY2hlVmFsaWQoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxl
OwotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUubW9iaWxlZ2VzdGFsdC54cGMiX3MsIFdURjo6bnVsbG9wdCwgaGFuZGxlKTsKKyAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLm1vYmlsZWdlc3RhbHQueHBjIl9zLCBzdGQ6Om51bGxvcHQsIGhhbmRsZSk7CiAgICAgICAg
IHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoaGFuZGxl
KTsKICAgICB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGU7Ci0gICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmNvcmVzZXJ2aWNl
cy5sYXVuY2hzZXJ2aWNlc2QiX3MsIFdURjo6bnVsbG9wdCwgbGF1bmNoU2VydmljZXNFeHRlbnNp
b25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBzdGQ6Om51bGxv
cHQsIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlKTsKICAgICBwYXJhbWV0ZXJzLmxhdW5j
aFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShsYXVuY2hTZXJ2aWNlc0V4dGVuc2lv
bkhhbmRsZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCA3YjE0NzNjNWQyZWRhOTQ4MjIwNGFi
YWIwMmQ2ZTBmNmNkZDNlYTYxLi4xY2UyNjVmZjljZDNhYWY3ZTc0OTJmZjg0MDM2OTBlNzU1NzNj
N2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcklmTmVlZGVkKCkKIAogICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20u
YXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBj
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IFdURjo6bnVsbG9wdCk7CisgICAgaGFuZGxl
QXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJj
b20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRi
b2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5
LnNpemUoKSA9PSAyKTsKICNlbmRpZgogCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVuYmxvY2tQcmVmZXJlbmNlU2VydmljZUlmTmVlZGVkKCkKICAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaGFuZGxlQXJyYXkg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBw
bGUuY2ZwcmVmc2QuYWdlbnQiX3MsICJjb20uYXBwbGUuY2ZwcmVmc2QuZGFlbW9uIl9zIH0sIGNv
bm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogV1RGOjpudWxsb3B0
KTsKKyAgICBhdXRvIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmNmcHJlZnNkLmFnZW50Il9zLCAiY29tLmFwcGxl
LmNmcHJlZnNkLmRhZW1vbiJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNpemUo
KSA9PSAyKTsKICAgICAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVbmJsb2NrUHJl
ZmVyZW5jZVNlcnZpY2UoV1RGTW92ZShoYW5kbGVBcnJheSkpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggODg4ODIxNTdjMGIxNzZjNjVh
MTZmNjhhNTg5ZDcwYmRjYWY0ZGExMi4uNWE4YTYzMjFhNGRiOGRmYzNkYTM4NWViYTBkMTE5NjU0
MDI3N2NlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KQEAgLTE5OTcsNyArMTk5Nyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZVZpZXdFeHBv
c2VkUmVjdCgpCiAgICAgaWYgKG1fdXNlQ29udGVudFByZXBhcmF0aW9uUmVjdEZvclZpc2libGVS
ZWN0KQogICAgICAgICBleHBvc2VkUmVjdCA9IENHUmVjdFVuaW9uKG1fY29udGVudFByZXBhcmF0
aW9uUmVjdCwgZXhwb3NlZFJlY3QpOwogCi0gICAgbV9wYWdlLT5zZXRWaWV3RXhwb3NlZFJlY3Qo
bV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KGV4cG9z
ZWRSZWN0KSA6IFdURjo6bnVsbG9wdCk7CisgICAgbV9wYWdlLT5zZXRWaWV3RXhwb3NlZFJlY3Qo
bV9jbGlwc1RvVmlzaWJsZVJlY3QgPyBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+KGV4cG9z
ZWRSZWN0KSA6IHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldENsaXBz
VG9WaXNpYmxlUmVjdChib29sIGNsaXBzVG9WaXNpYmxlUmVjdCkKQEAgLTMwMTQsNyArMzAxNCw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNob3dTaGFyZVNoZWV0KGNvbnN0IFdlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwmIGRhdGEsIFdUCiAgICAgX3NoYXJlU2hlZXQgPSBhZG9wdE5TKFtb
V0tTaGFyZVNoZWV0IGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOwogICAgIFtfc2hhcmVTaGVl
dCBzZXREZWxlZ2F0ZTp2aWV3XTsKIAotICAgIFtfc2hhcmVTaGVldCBwcmVzZW50V2l0aFBhcmFt
ZXRlcnM6ZGF0YSBpblJlY3Q6V1RGOjpudWxsb3B0IGNvbXBsZXRpb25IYW5kbGVyOldURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXTsKKyAgICBbX3NoYXJlU2hlZXQgcHJlc2VudFdpdGhQYXJhbWV0
ZXJzOmRhdGEgaW5SZWN0OnN0ZDo6bnVsbG9wdCBjb21wbGV0aW9uSGFuZGxlcjpXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNoYXJlU2hlZXREaWRE
aXNtaXNzKFdLU2hhcmVTaGVldCAqc2hhcmVTaGVldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0RldmljZUlkSGFzaFNhbHRTdG9yYWdlLmNwcAppbmRleCBjMzU2ZGI4ZmYzN2Vi
NDA2OTc2ZWU0MjRkYTdlYmYzYmY2ZDc1OTAxLi45MjI4NTg3NDAyNGFjMmFkOWE2OWQyMThlZDQw
Nzk2NTMxYjA3NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EZXZpY2VJ
ZEhhc2hTYWx0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRGV2aWNl
SWRIYXNoU2FsdFN0b3JhZ2UuY3BwCkBAIC05MywxNiArOTMsMTYgQEAgRGV2aWNlSWRIYXNoU2Fs
dFN0b3JhZ2U6On5EZXZpY2VJZEhhc2hTYWx0U3RvcmFnZSgpCiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKLXN0YXRpYyBXVEY6Ok9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4g
Z2V0U2VjdXJpdHlPcmlnaW5EYXRhKGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVj
b2RlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0U2VjdXJp
dHlPcmlnaW5EYXRhKGNvbnN0IGNoYXIqIG5hbWUsIEtleWVkRGVjb2RlciogZGVjb2RlcikKIHsK
ICAgICBTdHJpbmcgb3JpZ2luOwogCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcobmFt
ZSwgb3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2VjdXJpdHlPcmlnaW5EYXRhID0gU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbik7CiAgICAgaWYgKCFzZWN1
cml0eU9yaWdpbkRhdGEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5EYXRhOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAwYzBhNjlkMmRiM2FiZTI1YzJkNWQxMDViNWRiMWY3NzM4NmRhZDgzLi5iODkyYzk2N2Q4MGVm
ZjUwYTQzMGUwZjUzNWQ2OTE2NDliZmJlMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYyLDEyICsxNjIsMTIgQEAgR1BVUHJv
Y2Vzc1Byb3h5OjpHUFVQcm9jZXNzUHJveHkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFzQUdYQ29tcGlsZXJTZXJ2aWNlKCkpIHsK
LSAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29yZTo6YWd4Q29t
cGlsZXJTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwotICAgICAgICBwYXJhbWV0ZXJzLmR5bmFt
aWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29tcGlsZXJDbGFzc2VzKCksIFdU
Rjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuY29tcGlsZXJTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFdl
YkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcGFy
YW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFdlYkNvcmU6OmFneENvbXBpbGVy
Q2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGlmICghV2ViQ29yZTo6SU9T
QXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZHluYW1p
Y01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAg
IHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIHN0ZDo6
bnVsbG9wdCk7CiAjZW5kaWYKIAogI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECkBAIC0yMDksMTMgKzIwOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWRkQ2FtZXJh
U2FuZGJveEV4dGVuc2lvbnMoVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mCiAjaWYg
SEFWRShBVURJVF9UT0tFTikKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUFwcGxlQ2FtZXJhU2Vy
dmljZVNhbmRib3hFeHRlbnNpb24oKSkgewogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAg
ICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBXVEY6Om51bGxvcHQsIGFwcGxlQ2FtZXJhU2Vy
dmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSkgeworICAgICAgICAgICAgaWYgKCFTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVj
YW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIGFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJU
QywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5kYm94IGV4dGVu
c2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICNp
ZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCiAgICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlOwotICAgICAgICAgICAgaWYgKCFTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIl9zLCBX
VEY6Om51bGxvcHQsIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkpIHsKKyAgICAgICAgICAgIGlmICghU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlaDEzY2FtZXJhZCJfcywgc3RkOjpu
dWxsb3B0LCBhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKSB7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5h
YmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUuYXBwbGVoMTNjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9u
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCAwMzU0MTlkMDIxOTQzNGU1
NzBmZDdiZDUzYzBlOTQwZWZiZGUxMWQzLi5lMjczYWZjNmVmNjZiNWJjMmIwOTUzM2FiOGRhMjQ0
OTBjZTViMDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApA
QCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6OmV4Y2hhbmdl
KG1fY2FsbGJhY2ssIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBzdGQ6
OmV4Y2hhbmdlKG1fY2FsbGJhY2ssIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGNhbGxiYWNrLnZh
bHVlKCkocmV0dXJuVmFsdWUuLi4sIEVycm9yOjpOb25lKTsKICAgICB9CiAKQEAgLTEyMSw3ICsx
MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9jYWxsYmFjaykKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShtX2NhbGxiYWNr
LCBXVEY6Om51bGxvcHQpOworICAgICAgICBhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZSht
X2NhbGxiYWNrLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICBjYWxsYmFjay52YWx1ZSgpKHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSgpLi4uLCBlcnJvcik7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1Jl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5k
ZXggYTllYTYyOGZkMTk4NWEyZWU3Y2IxNjAwY2QxNzgyOGYwNmY0YmJhOC4uNDE4ODc4NjUzOTM2
ZDQyYWZmMWQ0ZDllMDEyMzcxZDE0MGMwMzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgVVJMIHJlcXVlc3RVUkwgeyB7IH0sIHBhZ2Uu
cGFnZUxvYWRTdGF0ZSgpLnVybCgpIH07Ci0gICAgICAgIG1faW5zcGVjdG9yUHJvdG9jb2xIYW5k
bGVyLmluc3BlY3QocmVxdWVzdFVSTC5ob3N0QW5kUG9ydCgpLCBwYXJzZUludGVnZXI8aW50Pih0
b2tlbnNbMF0pLnZhbHVlT3IoMCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1sxXSkudmFsdWVP
cigwKSwgdG9rZW5zWzJdKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuaW5z
cGVjdChyZXF1ZXN0VVJMLmhvc3RBbmRQb3J0KCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1sw
XSkudmFsdWVfb3IoMCksIHBhcnNlSW50ZWdlcjxpbnQ+KHRva2Vuc1sxXSkudmFsdWVfb3IoMCks
IHRva2Vuc1syXSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc3VwcG9ydHNBc3luY1JlcGx5KCkg
b3ZlcnJpZGUKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8SW5zcGVjdG9yOjpE
ZWJ1Z2dhYmxlVHlwZT4gcGFyc2VEZWJ1Z2dhYmxlVHlwZUZyb21TdHJpbmcoY29uc3QgUwogICAg
IGlmIChkZWJ1Z2dhYmxlVHlwZVN0cmluZyA9PSAid2ViLXBhZ2UiX3MpCiAgICAgICAgIHJldHVy
biBJbnNwZWN0b3I6OkRlYnVnZ2FibGVUeXBlOjpXZWJQYWdlOwogCi0gICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIFJlbW90ZUluc3Bl
Y3RvclByb3RvY29sSGFuZGxlcjo6aW5zcGVjdChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0LCBD
b25uZWN0aW9uSUQgY29ubmVjdGlvbklELCBUYXJnZXRJRCB0YXJnZXRJRCwgY29uc3QgU3RyaW5n
JiB0eXBlKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyOjppbnNwZWN0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQsIENvbm5lY3RpCiAKIHZv
aWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpydW5TY3JpcHQoY29uc3QgU3RyaW5n
JiBzY3JpcHQpCiB7Ci0gICAgbV9wYWdlLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHNjcmlw
dCwgVVJMIHsgfSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZmFsc2UgfSwgCisgICAgbV9wYWdlLnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZSh7IHNjcmlwdCwgVVJMIHsgfSwgZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgZmFsc2UgfSwgCiAgICAgICAgIFtdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgIGlm
ICghcmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJFeGNlcHRpb24g
cnVubmluZyBzY3JpcHQgXCIlc1wiIiwgcmVzdWx0LmVycm9yKCkubWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY4YzlmYWI0OGI4OWRkMTdhODQyNDY2YTFjODRkYzEx
MjU1NTE0MjcuLjk4NjJlZjI1OTU5ZGExYzI2ZjVhNDJjYzkzZjg4NDY5Njg0ZDZhYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
bmV0d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogCiAg
ICAgbV9hY3Rpdml0eUZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKLSAgICBtX3Vw
bG9hZEFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgIG1fdXBsb2FkQWN0aXZpdHkgPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICBpZiAoZGVmYXVsdE5ldHdvcmtQcm9jZXNzKCkgPT0gdGhpcykKICAg
ICAgICAgZGVmYXVsdE5ldHdvcmtQcm9jZXNzKCkgPSBudWxscHRyOwpAQCAtMTQzNiw3ICsxNDM2
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm8KIAogICAgICAgICBpZiAobV91cGxvYWRBY3Rp
dml0eS0+d2ViUHJvY2Vzc0Fzc2VydGlvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFdlYlBy
b2Nlc3NIYXNVcGxvYWRzOiBUaGUgbnVtYmVyIG9mIHVwbG9hZHMgaW4gcHJvZ3Jlc3MgaXMgbm93
IHplcm8uIFJlbGVhc2luZyBOZXR3b3JraW5nIGFuZCBVSSBwcm9jZXNzIGFzc2VydGlvbnMuIik7
Ci0gICAgICAgICAgICBtX3VwbG9hZEFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgbV91cGxvYWRBY3Rpdml0eSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUERGL1dL
UERGSFVEVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BERi9XS1BERkhVRFZpZXcu
bW0KaW5kZXggYTU1MWEyYzNmNDllMmM2N2E3Nzk0YTIzN2Q0ZTdhMDE4Yjk4MWU5Ny4uMWE2NDY2
MDViYjU5N2M4ODU5NmE3MmZiOGI2Mjk5ZmU0NWEyZTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUERGL1dLUERGSFVEVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QREYvV0tQREZIVURWaWV3Lm1tCkBAIC0yMjQsNyArMjI0LDcgQEAgLSAoT3B0aW9u
YWw8TlNVSW50ZWdlcj4pX2NvbnRyb2xJbmRleEZvckV2ZW50OihOU0V2ZW50ICopZXZlbnQKICAg
ICAgICAgaWYgKENHUmVjdENvbnRhaW5zUG9pbnQod2luZG93U3BhY2VSZWN0LCBpbml0aWFsUG9p
bnQpKQogICAgICAgICAgICAgcmV0dXJuIGluZGV4OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKE5TU3RyaW5nICopX2Nv
bnRyb2xGb3JFdmVudDooTlNFdmVudCAqKWV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKaW5kZXggN2Y5MzM4YzJhMWIzZTdiOGEzMWYwZDQ1OWU0YjEzZDU0ZjQyZTFkNy4uYjQ5
MTI3MDg5ZDQyODc5NTBmNTRkNjI0ODhjMDlkOTgwNDM4ZTljOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc2hvd1NoYXJlU2hlZXQoY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVS
TCYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb250YWN0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkNv
bnRhY3RzUmVxdWVzdERhdGEmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbnRhY3RJbmZvPj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG93
Q29udGFjdFBpY2tlcihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJiwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb250YWN0SW5m
bz4+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgPSAwOwogCkBAIC02MDksNyArNjA5LDcgQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBvaW50ZXJzRm9yR2Vz
dHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIHsgfQotICAgIHZpcnR1YWwgV1RG
OjpPcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29n
bml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9y
R2VzdHVyZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQogI2VuZGlmCiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDdiZDhj
MTljMjYzYWNkYWRkYjE2ZTk1MDA4YTFjYjdhMjhhY2IyODAuLjc5ZjMxYzYwNDE0ZmZiNDY1MDFj
ZDI1YTY0YTZiZTc2NjM1ZTQ2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29sIFBs
dWdpbkluZm9TdG9yZTo6aXNTdXBwb3J0ZWRQbHVnaW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgVVJMJiBwbHVnaQogT3B0aW9uYWw8VmVjdG9yPFN1cHBvcnRlZFBsdWdpbklkZW50aWZp
ZXI+PiBQbHVnaW5JbmZvU3RvcmU6OnN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKCkKIHsKICAg
ICBpZiAoIW1fc3VwcG9ydGVkUGx1Z2lucykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXVEY6Om1hcCgqbV9z
dXBwb3J0ZWRQbHVnaW5zLCBbXSAoYXV0byYmIGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIFN1cHBv
cnRlZFBsdWdpbklkZW50aWZpZXIgeyBpdGVtLm1hdGNoaW5nRG9tYWluLCBpdGVtLmlkZW50aWZp
ZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
SW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5oCmluZGV4IDdmODFlZDc0Yzg0NWIwMWRjYTRhY2EyZjhjZjJhNDhiOWM3MmE3NTcuLjc1
YWU2YmI2MmQ4NGNhNDE5ZDI4ZmZkZjY4MDAyZjBmZjJlZGQ0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtNjMsNyArNjMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N1cHBvcnRlZFBsdWdpbihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBVUkwmIHBsdWdpblVSTCwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgVVJMJiBwYWdlVVJMKTsKICAgICBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6U3Vw
cG9ydGVkUGx1Z2luSWRlbnRpZmllcj4+IHN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXJzKCk7CiAg
ICAgdm9pZCBhZGRTdXBwb3J0ZWRQbHVnaW4oU3RyaW5nJiYgbWF0Y2hpbmdEb21haW4sIFN0cmlu
ZyYmIGlkZW50aWZpZXIsIEhhc2hTZXQ8U3RyaW5nPiYmIG1pbWVUeXBlcywgSGFzaFNldDxTdHJp
bmc+IGV4dGVuc2lvbnMpOwotICAgIHZvaWQgY2xlYXJTdXBwb3J0ZWRQbHVnaW5zKCkgeyBtX3N1
cHBvcnRlZFBsdWdpbnMgPSBXVEY6Om51bGxvcHQ7IH0KKyAgICB2b2lkIGNsZWFyU3VwcG9ydGVk
UGx1Z2lucygpIHsgbV9zdXBwb3J0ZWRQbHVnaW5zID0gc3RkOjpudWxsb3B0OyB9CiAKIHByaXZh
dGU6CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKaW5k
ZXggMzUzZmM5NTQ1NTY0NTc5NGFjZDg4YmE4NTQ3OTA4NWM2MmQwNzQ0YS4uYzA5MTU5ZmE4ZTAw
MGJlNDc3Nzc2ZTNkMzZkYmY1YmRkMjY3MTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFByb2Nlc3NU
aHJvdHRsZXI6OnByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCiB2b2lkIFByb2Nlc3NUaHJvdHRsZXI6
OmNsZWFyUGVuZGluZ1JlcXVlc3RUb1N1c3BlbmQoKQogewogICAgIG1fcHJlcGFyZVRvU3VzcGVu
ZFRpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgbV9wZW5kaW5nUmVxdWVzdFRvU3VzcGVuZElEID0g
V1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRCA9IHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjpzZW5kUHJlcGFyZVRvU3VzcGVuZElQ
QyhJc1N1c3BlbnNpb25JbW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAyMjZkMjkz
MzQwNWVhNWI2ZjBiYzM2OWU1MWZkMDc4NjJlMzdhZjc2Li5hY2ZmOTBjODhmZGFlNzZiMjljNDdl
ZTgyMjY0MzVjY2MwY2Q2ZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICAgICAgbV9yZXF1ZXN0LAogICAgICAgICBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwobV9yZXF1ZXN0LnVybCgpKSwKICAgICAgICAgbV9tYWluRnJh
bWUtPmZyYW1lSUQoKSwKLSAgICAgICAgV1RGOjpudWxsb3B0LAorICAgICAgICBzdGQ6Om51bGxv
cHQsCiAgICAgfTsKICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9tYWluRnJh
bWUtPmZyYW1lSUQoKSwgV1RGTW92ZShmcmFtZUluZm8pLCBSZXNvdXJjZVJlcXVlc3QgeyBtX3Jl
cXVlc3QgfSwgbV9uYXZpZ2F0aW9uSUQsIG1fcHJvdmlzaW9uYWxMb2FkVVJMLnN0cmluZygpLCBl
cnJvciwgV2ViQ29yZTo6V2lsbENvbnRpbnVlTG9hZGluZzo6Tm8sIFVzZXJEYXRhIHsgfSk7IC8v
IFdpbGwgZGVsZXRlIHx0aGlzfC4KIH0KQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlk
ZW50aWZpZXIgZgogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSYmIHJlcGx5KQogewogICAgIGlmICghaXNNYWluRnJhbWUgfHwgKG1fbWFpbkZyYW1lICYmIG1f
bWFpbkZyYW1lLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCkgfHwgbmF2aWdhdGlvbklEICE9IG1fbmF2
aWdhdGlvbklEKSB7Ci0gICAgICAgIHJlcGx5KFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwg
V1RGOjpudWxsb3B0LCBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbklE
LCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgcmVwbHkoUG9saWN5RGVj
aXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
SWdub3JlLCBuYXZpZ2F0aW9uSUQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAppbmRleCAwZTI2ZGI3OWFiMzRlMjZmODMyODcyYmE5MmE5YzJlYzNj
MDJjNWYwLi41YzNiNmZiMGQxNjEzMWNiOTcyMDcwYjMxMGQxMDI1ZGY3ZjA1NzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk4LDgg
Kzk4LDggQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7Ci0gICAg
dm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQp
OworICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24m
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCkBAIC0xNTMsNyArMTUzLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZShSZWZQdHI8
QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwotICAgIGJvb2wgdmFsaWRhdGVJbnB1dChXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgbmF2aWdhdGlvbklE
ID0gV1RGOjpudWxsb3B0KTsKKyAgICBib29sIHZhbGlkYXRlSW5wdXQoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDx1aW50NjRfdD4mIG5hdmlnYXRpb25JRCA9IHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3dlYlBhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbk1hbmFnZXIuaAppbmRleCA0Nzdj
NTdmN2NmNGYyMDE4NjNlMDhkMjIwZDNhMjdhNjhlYmMyMDRlLi40MGE5ZjI5MDdlNTE4YmMxNzhm
Mjg2OTRhYThkZjlkNWZlZTRjNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uTWFuYWdlci5oCkBAIC00OCw3
ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE5leHRSZXF1ZXN0KCk7CiAgICAgdm9p
ZCBzdGFydFByb2Nlc3NpbmdSZXF1ZXN0KCk7CiAgICAgdm9pZCBjb250aW51ZVByb2Nlc3NpbmdS
ZXF1ZXN0KCk7Ci0gICAgdm9pZCBjb21wbGV0ZUN1cnJlbnRSZXF1ZXN0KE9wdGlvbmFsPFdlYkNv
cmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
Y29tcGxldGVDdXJyZW50UmVxdWVzdChPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yPiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHJlcXVlc3RNaWNyb3Bob25lQWNj
ZXNzKCk7CiAgICAgdm9pZCByZXF1ZXN0U3BlZWNoUmVjb2duaXRpb25TZXJ2aWNlQWNjZXNzKCk7
CiAgICAgdm9pZCByZXF1ZXN0VXNlclBlcm1pc3Npb24oV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0JiByZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1NwZWVjaFJlY29nbml0aW9uU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oCmluZGV4IGExOTEyOTkwMmIwZWE4ZDExM2RiNDVkOTBkNGQx
NDdjMWY3MzVmZDAuLjUwNjExOWFlYmY4MmIzZGRjOWU0MzE2ZWY0MTk3Yjk3NjdjNmIwNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIu
aApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcmVxdWVzdFBl
cm1pc3Npb25Gb3JSZXF1ZXN0KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVxdWVzdCYpOwog
ICAgIHZvaWQgaGFuZGxlUmVxdWVzdChVbmlxdWVSZWY8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25SZXF1ZXN0PiYmKTsKLSAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yPiA9
IFdURjo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
UmVzdWx0RGF0YT4+ID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIHNlbmRVcGRhdGUoV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlLCBPcHRpb25hbDxXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkVycm9yPiA9IHN0ZDo6bnVsbG9wdCwgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YT4+ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIHNl
bmRVcGRhdGUoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCmluZGV4IGYwZGNjN2UxNzc3NWQxMDU0MDBj
ZDVlNmQyM2ZiNzJkODczZWMwNDUuLjk0NjAyYmM0NWM1MTllZDllMjBjN2M0YjM1ZWZkNzJhMmQ1
ZWRhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlci5jcHAKQEAgLTEwNywxMCArMTA3LDEwIEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbShVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hCiAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZCh2aWRlb0V4dGVuc2lvblBh
dGgpOwogCiAgICAgICAgICAgICBpZiAobmVlZHNBcHBsZUNhbWVyYVNhbmRib3hFeHRlbnNpb24p
IHsKLSAgICAgICAgICAgICAgICBpZiAoU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBXVEY6Om51bGxvcHQsIGhhbmRsZXNb
LS1leHRlbnNpb25Db3VudF0pKQorICAgICAgICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6
bnVsbG9wdCwgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSkpCiAgICAgICAgICAgICAgICAgICAg
IGlkcy51bmNoZWNrZWRBcHBlbmQoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAjaWYgSEFWRShB
RERJVElPTkFMX0FQUExFX0NBTUVSQV9TRVJWSUNFKQotICAgICAgICAgICAgICAgIGlmIChTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNh
bWVyYVNlcnZpY2VQYXRoLCBXVEY6Om51bGxvcHQsIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0p
KQorICAgICAgICAgICAgICAgIGlmIChTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQs
IGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0pKQogICAgICAgICAgICAgICAgICAgICBpZHMudW5j
aGVja2VkQXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICNlbmRpZgog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1Nu
YXBzaG90U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3Rv
cmUuY3BwCmluZGV4IDIzMzE5MmE4ZjE0MTFlOTU2OWM5MGExODAwODRiODEzYTdiMGQxMjcuLjYy
N2FmZjY2OWJjODU3YjYyMjJlYWYxOWE4NDdmNTE1OTUxMzE5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBWaWV3U25hcHNob3RTdG9yZTo6cmVjb3JkU25hcHNob3QoV2ViUGFnZVByb3h5JiB3ZWJQYWdl
UHJveHksIFdlYkJhY2tGb3J3YXIKIAogICAgIHdlYlBhZ2VQcm94eS53aWxsUmVjb3JkTmF2aWdh
dGlvblNuYXBzaG90KGl0ZW0pOwogCi0gICAgYXV0byBzbmFwc2hvdCA9IHdlYlBhZ2VQcm94eS50
YWtlVmlld1NuYXBzaG90KFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBzbmFwc2hvdCA9IHdlYlBh
Z2VQcm94eS50YWtlVmlld1NuYXBzaG90KHN0ZDo6bnVsbG9wdCk7CiAgICAgaWYgKCFzbmFwc2hv
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAK
aW5kZXggN2E5MzQ4NDc1OWYyZGI4NGYyNWI0ZDlkOTdiOTgyYjI0MWE3ODJlNC4uODM0NGZkZDQx
MmM1OTY3ZmMyNTQ4NGJiYTdjZjMwNWViYTMzNTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgQXV0aGVudGljYXRvck1hbmFn
ZXI6OmluaXRUaW1lT3V0VGltZXIoKQogICAgICAgICB0aW1lT3V0SW5NcyA9IG9wdGlvbnMudGlt
ZW91dDsKICAgICB9KTsKIAotICAgIHVuc2lnbmVkIHRpbWVPdXRJbk1zVmFsdWUgPSBzdGQ6Om1p
bihtYXhUaW1lT3V0VmFsdWUsIHRpbWVPdXRJbk1zLnZhbHVlT3IobWF4VGltZU91dFZhbHVlKSk7
CisgICAgdW5zaWduZWQgdGltZU91dEluTXNWYWx1ZSA9IHN0ZDo6bWluKG1heFRpbWVPdXRWYWx1
ZSwgdGltZU91dEluTXMudmFsdWVfb3IobWF4VGltZU91dFZhbHVlKSk7CiAgICAgbV9yZXF1ZXN0
VGltZU91dFRpbWVyLnN0YXJ0T25lU2hvdChTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHRpbWVP
dXRJbk1zVmFsdWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9y
Lm1tCmluZGV4IGEyMWVmMDBjYTFhZGQxYTdiODYxYTM3ZmFlNWYzZDgzYzM0NzRhZGYuLjFhYWMx
Y2EyNjFlYzNhOWMyOTdiMWM5M2IzMzQwODMyMmY3ZGJlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2Nv
YS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgT3B0aW9u
YWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3Rp
bmdDcmVkZW50aQogICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwog
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGlj
dGlvbmFyeVJlZilxdWVyeS5nZXQoKSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7CiAgICAgaWYgKHN0
YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcmV0YWlu
QXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOwogICAgIE5TQXJy
YXkgKnNvcnRlZEF0dHJpYnV0ZXNBcnJheSA9IFsoTlNBcnJheSAqKWF0dHJpYnV0ZXNBcnJheVJl
ZiBzb3J0ZWRBcnJheVVzaW5nQ29tcGFyYXRvcjpeKE5TRGljdGlvbmFyeSAqYSwgTlNEaWN0aW9u
YXJ5ICpiKSB7CiAgICAgICAgIHJldHVybiBbYlsoaWQpa1NlY0F0dHJNb2RpZmljYXRpb25EYXRl
XSBjb21wYXJlOmFbKGlkKWtTZWNBdHRyTW9kaWZpY2F0aW9uRGF0ZV1dOwpAQCAtMTQ5LDIxICsx
NDksMjEgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPj4+IGdldEV4aXN0aW5nQ3JlZGVudGkKICAgICAgICAgYXV0byBkZWNvZGVkUmVz
cG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKHZlY3RvckZyb21OU0RhdGEoYXR0cmlidXRl
c1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ10pKTsKICAgICAgICAgaWYgKCFkZWNvZGVkUmVz
cG9uc2UgfHwgIWRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSkgewogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBhdXRvJiByZXNw
b25zZU1hcCA9IGRlY29kZWRSZXNwb25zZS0+Z2V0TWFwKCk7CiAKICAgICAgICAgYXV0byBpdCA9
IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihmaWRvOjprRW50aXR5SWRNYXBLZXkpKTsKICAgICAgICAg
aWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygp
KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9CiAgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBpdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmco
KTsKIAogICAgICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUihmaWRvOjprRW50aXR5TmFt
ZU1hcEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5z
ZWNvbmQuaXNTdHJpbmcoKSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQu
Z2V0U3RyaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0hpZENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKaW5k
ZXggOGU5Yzc2ZGMwZTg4Y2U1Nzg1NDcxY2IxNTRhNTAxODliZDE1OTgyMi4uODQ4ZjUzMTljODY3
YzczOGU0NmUxN2U5NjE2ZTE2Mzg2ZGQxOTEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlkQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrSGlk
Q29ubmVjdGlvbi5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIE1vY2tIaWRDb25uZWN0aW9u
OjpwYXJzZVJlcXVlc3QoKQogICAgIH0KIAogICAgIG1fY3VycmVudENoYW5uZWwgPSBtX3JlcXVl
c3RNZXNzYWdlLT5jaGFubmVsSWQoKTsKLSAgICBtX3JlcXVlc3RNZXNzYWdlID0gV1RGOjpudWxs
b3B0OworICAgIG1fcmVxdWVzdE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKG1fY29u
ZmlndXJhdGlvbi5oaWQtPmZhc3REYXRhQXJyaXZhbCkKICAgICAgICAgZmVlZFJlcG9ydHMoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuaAppbmRleCBj
MjVkOTA1YjVkMDFlODA0M2ZiMmI1YzMxM2VhMDQxYTEwZGE1NzA1Li40YzNiYmFhYWY4ZmM5NDhl
ZDA1NmViOGE3NmRjOWNmMWNlOGE0NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGlj
YXRpb25SZXF1ZXN0RGF0YS5oCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBXZWJBdXRoZW50aWNh
dGlvblJlcXVlc3REYXRhIHsKICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gcGFnZTsKICAgICBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHBhbmVsUmVzdWx0IHsgV2ViQXV0aGVudGljYXRp
b25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUgfTsKICAgICBSZWZQdHI8QVBJOjpXZWJBdXRoZW50
aWNhdGlvblBhbmVsPiBwYW5lbDsKLSAgICBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6Okdsb2JhbEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Okdsb2Jh
bEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKICAgICBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvOwogCiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBIaWREcml2
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9D
dGFwSGlkRHJpdmVyLmNwcAppbmRleCAwNmYyMzE1NTI2YWYxZjIzODRiNTUwYWRlZmE5ZjE5ZTEw
ZWVkNWFmLi5kYmZiZTYzOTdmYzEyMDE1OTk0MDI5NzZjYzc3YzRjM2Y1NTFlYjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBI
aWREcml2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL2ZpZG8vQ3RhcEhpZERyaXZlci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBDdGFwSGlk
RHJpdmVyOjpXb3JrZXI6OndyaXRlKEhpZENvbm5lY3Rpb246OkRhdGFTZW50IHNlbnQpCiAgICAg
aWYgKG1fc3RhdGUgIT0gU3RhdGU6OldyaXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHNl
bnQgIT0gSGlkQ29ubmVjdGlvbjo6RGF0YVNlbnQ6OlllcykgewotICAgICAgICBtX3Jlc3BvbnNl
TWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9yZXNwb25zZU1lc3NhZ2UgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIHJldHVybk1lc3NhZ2UoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEN0YXBIaWREcml2ZXI6Oldvcmtlcjo6cmVhZChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFt
X3Jlc3BvbnNlTWVzc2FnZS0+YWRkQ29udGludWF0aW9uUGFja2V0KGRhdGEpKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkbid0IHBhcnNlIGEgaGlkIGNvbnRpbnVhdGlvbiBwYWNrZXQu
Iik7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlTWVzc2FnZSA9IFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgcmV0
dXJuTWVzc2FnZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDEsOCAr
MTQxLDggQEAgdm9pZCBDdGFwSGlkRHJpdmVyOjpXb3JrZXI6OnJlc2V0KCkKIHsKICAgICBtX2Nv
bm5lY3Rpb24tPnVucmVnaXN0ZXJEYXRhUmVjZWl2ZWRDYWxsYmFjaygpOwogICAgIG1fY2FsbGJh
Y2sgPSBudWxscHRyOwotICAgIG1fcmVzcG9uc2VNZXNzYWdlID0gV1RGOjpudWxsb3B0OwotICAg
IG1fcmVxdWVzdE1lc3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9yZXNwb25zZU1lc3NhZ2Ug
PSBzdGQ6Om51bGxvcHQ7CisgICAgbV9yZXF1ZXN0TWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGU0OGY1OTkyMGZlNGEzYWIzOTExMjZhMzdj
NjMyNzIxOThhMDQ0ZTMuLjRjNTRjNmFmMDcwMWNjOWIzZjI2Y2RhMzU1MTYwZDM1ZDM1MWM0MDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApA
QCAtODUsNyArODUsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cGFnZUNsb3NlZCgpCiAK
ICAgICBtX3BhZ2UgPSBudWxscHRyOwogICAgIG1fZW50cmllcy5jbGVhcigpOwotICAgIG1fY3Vy
cmVudEluZGV4ID0gV1RGOjpudWxsb3B0OworICAgIG1fY3VycmVudEluZGV4ID0gc3RkOjpudWxs
b3B0OwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8V2ViQmFja0Zv
cndhcmRMaXN0SXRlbT4mJiBuZXdJdGVtKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0
ZW0pCiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlKDApOwogCiAgICAgICAgICAgICBpZiAo
bV9lbnRyaWVzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAtLSptX2N1cnJlbnRJbmRleDsK
ICAgICAgICAgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpy
ZW1vdmVBbGxJdGVtcygpCiAgICAgfQogCiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9j
dXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jdXJyZW50SW5kZXggPSBzdGQ6Om51
bGxvcHQ7CiAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobnVsbHB0ciwgV1RG
TW92ZShyZW1vdmVkSXRlbXMpKTsKIH0KIApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0OjpjbGVhcigpCiAgICAgICAgIH0KIAogICAgICAgICBtX2VudHJpZXMuY2xl
YXIoKTsKLSAgICAgICAgbV9jdXJyZW50SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1f
Y3VycmVudEluZGV4ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBtX3BhZ2UtPmRpZENoYW5nZUJh
Y2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwogCiAgICAgICAg
IHJldHVybjsKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y2xl
YXIoKQogICAgIGlmIChjdXJyZW50SXRlbSkKICAgICAgICAgbV9lbnRyaWVzLmFwcGVuZChjdXJy
ZW50SXRlbS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY3VycmVudElu
ZGV4ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2N1cnJlbnRJbmRleCA9IHN0ZDo6bnVsbG9w
dDsKICAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3Zl
KHJlbW92ZWRJdGVtcykpOwogfQogCkBAIC00MjYsNyArNDI2LDcgQEAgQmFja0ZvcndhcmRMaXN0
U3RhdGUgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrRm9yd2FyZExpc3RTdGF0ZShXVEY6OkZ1bmN0
aW9uPGJvb2wKICAgICB9CiAKICAgICBpZiAoYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMuaXNF
bXB0eSgpKQotICAgICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBXVEY6
Om51bGxvcHQ7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA9IHN0
ZDo6bnVsbG9wdDsKICAgICBlbHNlIGlmIChiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcy5zaXpl
KCkgPD0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlKCkpCiAgICAgICAg
IGJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRl
Lml0ZW1zLnNpemUoKSAtIDE7CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2Fy
ZExpc3RTdAogICAgICAgICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IHsg
UHJvY2Vzczo6aWRlbnRpZmllcigpLCBPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT46OmdlbmVyYXRlKCkgfTsKICAgICAgICAgaXRl
bXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3Zl
KGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+aWRlbnRpZmllcigpKSk7CiAgICAg
fQotICAgIG1fY3VycmVudEluZGV4ID0gYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4
ID8gT3B0aW9uYWw8c2l6ZV90PigqYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4KSA6
IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnRJbmRleCA9IGJhY2tGb3J3YXJkTGlzdFN0YXRl
LmN1cnJlbnRJbmRleCA/IE9wdGlvbmFsPHNpemVfdD4oKmJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1
cnJlbnRJbmRleCkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgbV9lbnRyaWVzID0gV1RGTW92ZShpdGVt
cyk7CiAKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBXZWJCYWNrRm9yd2Fy
ZExpc3QgJXAgcmVzdG9yZWQgZnJvbSBzdGF0ZSAoaGFzICV6dSBlbnRyaWVzKSIsIHRoaXMsIG1f
ZW50cmllcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggYzUyZTJiOGUwOWY5YjBhZTRhMzQwNDRmMjJkNjgzMmM4MGVjMzM4NC4uYWZkNzYyN2M5
MDA3Yzc0NGQ2MjUwMDdlMTUyYTZmNjFhYzFmYmRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDYwLDcgKzEwNjAsNyBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIH0KIAog
ICAgIC8vIFdlIGFsbG93IHN0YWxlIGNvbnRlbnQgd2hlbiByZWxvYWRpbmcgYSBXZWJQcm9jZXNz
IHRoYXQncyBiZWVuIGtpbGxlZCBvciBjcmFzaGVkLgotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVt
KG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgc3RkOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNz
LT5zdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpA
QCAtMTQ0NCw3ICsxNDQ0LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoc2hv
dWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAg
IG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0
bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykpOwogCi0gICAg
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2Vy
RGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
OworICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVS
TCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSwgc3RkOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIApAQCAtMTc0MSw3ICsxNzQxLDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdl
TG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdB
UElSZXF1ZXN0KHRyYW5zYWN0aW9uLCB7IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0
aW9uSUQoKSA6IDAsIGl0ZW0udXJsKCkgfSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkOjpObywgc3RkOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNzLT5zdGFydFJl
c3BvbnNpdmVuZXNzVGltZXIoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMjY1Niw3
ICsyNjU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZERyYWdnaW5nKCkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpCiB7Ci0gICAgbV9jdXJy
ZW50RHJhZ09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0
aW9uID0gc3RkOjpudWxsb3B0OwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCA9IERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0
ID0gZmFsc2U7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQgPSAw
OwpAQCAtMjc1Miw3ICsyNzUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVl
dWVkTW91c2VFdmVudCgpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgZXZlbnRNYXlTdGFy
dERyYWcgPSAhbV9jdXJyZW50RHJhZ09wZXJhdGlvbiAmJiBldmVudFR5cGUgPT0gV2ViRXZlbnQ6
Ok1vdXNlTW92ZSAmJiBldmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpCdXR0b246Ok5v
QnV0dG9uOwogICAgIGlmIChldmVudE1heVN0YXJ0RHJhZykKLSAgICAgICAgc2FuZGJveEV4dGVu
c2lvbnMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJj
b20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJf
cyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2Vy
dmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHN0ZDo6bnVsbG9w
dCk7CiAjZW5kaWYKICAgICAKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2Vu
dCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJp
bmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKQEAgLTMyOTAsNyArMzI5
MCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
QW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpCiAgICAgfQogCiAgICAgaWYgKCFpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKSB7Ci0gICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucykKQEAgLTM0NDUsNyArMzQ0NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJl
ZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFZhcmlhbnQ8UmVm
PEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYg
bmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBz
ZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBz
ZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQ5Myw3ICszNDkzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgRnJhbWVJbmZvRGF0YSYKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFBhZ2UpOwogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogbmV3
UElEPSVpIiwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigp
KTsKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZyYW1lSURJblByZXZpb3Vz
UHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlE
KCkpIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gbWFpbkZy
YW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gc3RkOjptYWtlX29wdGlvbmFs
KG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogc3RkOjpudWxsb3B0OwogCiAgICAgQVNTRVJUKG1f
cHJvY2Vzcy5wdHIoKSAhPSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSk7CiAKQEAgLTM4
OTgsNyArMzg5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlELCBPcHRpb25hbDx1CiAKIGZsb2F0IFdlYlBhZ2VQ
cm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX2N1c3RvbURl
dmljZVNjYWxlRmFjdG9yLnZhbHVlT3IobV9pbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcik7Cisg
ICAgcmV0dXJuIG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IudmFsdWVfb3IobV9pbnRyaW5zaWNE
ZXZpY2VTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21EZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBjdXN0b21TY2FsZUZhY3RvcikKQEAgLTM5MTIsNyArMzkxMiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21EZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBj
dXN0b21TY2FsZUZhY3RvcikKICAgICBpZiAoY3VzdG9tU2NhbGVGYWN0b3IpCiAgICAgICAgIG1f
Y3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IgPSBjdXN0b21TY2FsZUZhY3RvcjsKICAgICBlbHNlCi0g
ICAgICAgIG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IG1fY3VzdG9tRGV2aWNlU2NhbGVGYWN0b3IgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQyNDgsNyArNDI0OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
UmVmUHRyPEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGV0
YWlscz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBydW5KYXZhU2NyaXB0SW5GcmFt
ZUluU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBBUEk6OkNv
bnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
KTsKKyAgICBydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoV1RGTW92ZShwYXJhbWV0
ZXJzKSwgc3RkOjpudWxsb3B0LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
QVBJOjpDb250ZW50V29ybGQmIHdvcmxkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFJlZlB0cjxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHM+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC01MjE1LDcgKzUyMTUsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJl
bnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCByZXF1ZXN0LnVybCgpKSkgewogICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0
IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2Fu
ZGJveCIpOwotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlk
ZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNlbmRl
ci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBzdGQ6Om51bGxv
cHQsIHN0ZDo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTI3Niw3
ICs1Mjc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJh
Y2tGb3J3YXJkOwogCiAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51
c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpOwotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFt
ZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFJl
c291cmNlUmVxdWVzdChyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVu
QXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdh
dGlvbik7CisgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5n
ZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIHN0ZDo6bnVsbG9wdCwgUmVzb3VyY2VS
ZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxl
Q29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7CkBAIC01NDczLDcgKzU0
NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV1RGTW92ZShwcm9jZXNzKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyks
IG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3Jp
Z2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNs
aWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2Fk
LgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6VXNlLCBuYXZp
Z2F0aW9uSUQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOworICAgIHNlbmRlci0+c2Vu
ZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6VXNlLCBuYXZpZ2F0aW9uSUQsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTU2OTQsNyArNTY5NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIFdlYlBhCiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFp
bkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3Qs
IHJlcGx5ID0gV1RGTW92ZShyZXBseSksIHByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbmF2aWdh
dGlvbkFjdGlvbkRhdGEucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRdIChSZWZQdHI8V2ViUGFnZVBy
b3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAg
ICAgICByZXBseShXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXBs
eShzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtNTcyMiw3ICs1NzIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5l
d1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICAg
ICAgICAgdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0
aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwog
CiAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVx
dWVzdCgpLnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICBhdXRvIG5h
dmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIs
IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICBhdXRvIG5hdmlnYXRpb25B
Y3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIHN0ZDo6bnVs
bG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAogICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCAqdGhpcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdpbmRvd0ZlYXR1cmVzID0g
V1RGTW92ZSh3aW5kb3dGZWF0dXJlcyldIChSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5h
dmlnYXRpb25BY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYlBhZ2VQcm94
eT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBtX3VpQ2xpZW50
LT5jcmVhdGVOZXdQYWdlKCp0aGlzLCBXVEZNb3ZlKHdpbmRvd0ZlYXR1cmVzKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNjUyOSw3
ICs2NTI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50
MzJfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBpZiAoYXV0byogaXRlbSA9
IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtQXRJbmRleChpbmRleCkpCiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGl0ZW0tPml0ZW1JRCgpKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZExpc3RDb3VudHMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRMaXN0Q291bnRzRGVsYXllZFJlcGx5JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC02OTEzLDkgKzY5MTMsOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29u
c3QgVmVjdAogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CiAjaWYgSEFW
RShGUk9OVEJPQVJEX1NZU1RFTV9BUFBfU0VSVklDRVMpCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBw
c2VydmljZXMiX3MsIFdURjo6bnVsbG9wdCwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVu
c2lvbik7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCwg
ZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbik7CiAjZW5kaWYKLSAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZp
Y2VzIl9zLCBXVEY6Om51bGxvcHQsIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24pOworICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5p
Y29uc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lv
bik7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNv
bkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCks
IGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hF
eHRlbnNpb24pKTsKIApAQCAtNzc2MSw3ICs3NzYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YXV0aGVudGljYXRv
ck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0KG1fd2ViUGFnZUlELCBXVEY6Om51bGxvcHQpOworICAg
IG1fd2Vic2l0ZURhdGFTdG9yZS0+YXV0aGVudGljYXRvck1hbmFnZXIoKS5jYW5jZWxSZXF1ZXN0
KG1fd2ViUGFnZUlELCBzdGQ6Om51bGxvcHQpOwogI2VuZGlmCiAKICAgICBtX3NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbk1hbmFnZXIgPSBudWxscHRyOwpAQCAtODAxNCw3ICs4MDE0LDcgQEAg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVy
cyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICAgICBpZiAobV9zY3JvbGxiYXJPdmVybGF5U3R5bGUp
CiAgICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gbV9zY3JvbGxiYXJP
dmVybGF5U3R5bGUudmFsdWUoKTsKICAgICBlbHNlCi0gICAgICAgIHBhcmFtZXRlcnMuc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlID0gV1RGOjpudWxsb3B0OworICAgICAgICBwYXJhbWV0ZXJzLnNjcm9s
bGJhck92ZXJsYXlTdHlsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZSA9IG1fYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOwogICAg
IHBhcmFtZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSA9IG1fbGF5ZXJIb3N0aW5nTW9kZTsKICAgICBw
YXJhbWV0ZXJzLmNvbnRyb2xsZWRCeUF1dG9tYXRpb24gPSBtX2NvbnRyb2xsZWRCeUF1dG9tYXRp
b247CkBAIC04MDU2LDggKzgwNTYsOCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBh
Z2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogCiAgICAg
aWYgKG5lZWRXZWJQcm9jZXNzRXh0ZW5zaW9ucykgewogICAgICAgICAvLyBGSVhNRSgyMDc3MTYp
OiBUaGUgZm9sbG93aW5nIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIEdQVSBwcm9jZXNzIGlz
IGNvbXBsZXRlLgotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG1lZGlhUmVsYXRlZE1h
Y2hTZXJ2aWNlcygpLCBXVEY6Om51bGxvcHQpOwotICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9L
aXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklP
S2l0Q2xhc3NFeHRlbnNpb25zKG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpLCBXVEY6Om51bGxv
cHQpOworICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG1lZGlhUmVsYXRlZE1hY2hTZXJ2
aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhSU9LaXRFeHRl
bnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xh
c3NFeHRlbnNpb25zKG1lZGlhUmVsYXRlZElPS2l0Q2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwog
ICAgIH0KIAogICAgIGlmICghcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yTWVkaWFFbmFi
bGVkKCkKQEAgLTgwNjUsOCArODA2NSw4IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAg
ICAgIHx8ICghcHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkKCkg
JiYgIXByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NFbmFibGVkKCkpCiAgICAg
ICAgIHx8ICFwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFi
bGVkKCkKICAgICAgICAgfHwgIXByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5h
YmxlZCgpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGdw
dUlPS2l0Q2xhc3NlcygpLCBXVEY6Om51bGxvcHQpOwotICAgICAgICBwYXJhbWV0ZXJzLmdwdU1h
Y2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoZ3B1TWFjaFNlcnZpY2VzKCksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFt
ZXRlcnMuZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGdwdUlPS2l0Q2xhc3NlcygpLCBzdGQ6Om51
bGxvcHQpOworICAgICAgICBwYXJhbWV0ZXJzLmdwdU1hY2hFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoZ3B1TWFjaFNlcnZpY2Vz
KCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogI2VuZGlmCiAjaWYgSEFWRShTVEFUSUNfRk9OVF9S
RUdJU1RSWSkKQEAgLTgxMDQsNyArODEwNCw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBwYXJhbWV0ZXJz
LmFwcGxpY2F0aW9uTWFuaWZlc3QgPSBtX2NvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZl
c3QoKSA/IE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KG1fY29uZmlndXJh
dGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkpIDogV1RG
OjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25NYW5pZmVzdCA9IG1fY29uZmln
dXJhdGlvbi0+YXBwbGljYXRpb25NYW5pZmVzdCgpID8gT3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4obV9jb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0KCktPmFw
cGxpY2F0aW9uTWFuaWZlc3QoKSkgOiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIAogICAgIHBhcmFt
ZXRlcnMubmVlZHNGb250QXR0cmlidXRlcyA9IG1fbmVlZHNGb250QXR0cmlidXRlczsKQEAgLTgx
NjUsNyArODE2NSw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5Ojpj
cmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKSAmJiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcmVmZXJlbmNl
cy0+YXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYgIW1fcHJvY2Vzcy0+aGFzSXNzdWVkQXR0
YWNobWVudEVsZW1lbnRSZWxhdGVkU2FuZGJveEV4dGVuc2lvbnMoKSkgewotICAgICAgICBwYXJh
bWV0ZXJzLmF0dGFjaG1lbnRFbGVtZW50RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKGF0dGFjaG1lbnRFbGVtZW50U2VydmljZXMo
KSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5hdHRhY2htZW50RWxlbWVudEV4
dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExv
b2t1cChhdHRhY2htZW50RWxlbWVudFNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAg
IG1fcHJvY2Vzcy0+c2V0SGFzSXNzdWVkQXR0YWNobWVudEVsZW1lbnRSZWxhdGVkU2FuZGJveEV4
dGVuc2lvbnMoKTsKICAgICB9CiAjZW5kaWYKQEAgLTEwMTQ0LDcgKzEwMTQ0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHBhZ2VMb2FkVGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpIC0gKm1fcGFnZUxvYWRTdGFydDsKLSAgICBtX3BhZ2VMb2FkU3RhcnQgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9wYWdlTG9hZFN0YXJ0ID0gc3RkOjpudWxsb3B0OwogCiAgICAg
Q29tcGxldGlvbkNvbmRpdGlvbiBjb25kaXRpb24geyBDb21wbGV0aW9uQ29uZGl0aW9uOjpTdWNj
ZXNzIH07CiAgICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY3NmM3YzMwMGM0NDg2MGZjODIyMzZiYzY0YWY2ZjUw
NGI4MzVhZTUuLjAzMjNmNjlmMGQ2MTI3MGM3Y2ZhNzJiNjNiNWZhZjcyOTQ4Nzk0YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJv
b2wpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6ZUZv
ckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMudmFsdWVPcihXZWJDb3JlOjpJbnRTaXplKCkpOyB9CisgICAgV2ViQ29yZTo6
SW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4g
bV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLnZhbHVlX29yKFdlYkNvcmU6OkludFNp
emUoKSk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkoUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYsIE5lZ290aWF0ZWRMZWdhY3lU
TFMpOwogICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpOwpAQCAtMTczMCw4ICsxNzMwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBs
aXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24m
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBs
b2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENv
dW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
Ym9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYp
OwogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMTgzMyw3ICsxODMzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNUb3BGcmFtZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9p
c1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KICNlbHNlCi0gICAgICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgICAgIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2Fy
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5j
cHAKaW5kZXggMTJlMjBiYTdlNmFjZWZlNjdmM2MxZWU4YjZkNjQzMGJhMjQyZGEwYi4uNGJjMjUx
ZjVjNjU3YjkwZDljZjc2ZjQ2YjkwMzFkOTUwNjFmOTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuY3BwCkBAIC05MywxMiArOTMsMTIgQEAgdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBWZWN0b3I8V2ViQ29yZToKIAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3Rl
Ym9hcmRJdGVtSW5mbyhJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbz4+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoSVBDOjpDb25uZWN0aW9uJiwgc2l6
ZV90LCBjb25zdCBTdHJpbmcmLCBpbnQ2NF90LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChJ
UEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IGJhOTMwZmE0ZTc2NzNiNWQ1MmUyZjRkNWFjMzlhNWNjNGZjM2MzMTYuLmI1MjRjMjRkMTg5YTVk
MDczYzZlMzA5ZjVhMTI5YjY2MDE4MTMzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTIwNTYsNyArMjA1Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKQogewogICAgIGlmICghbV93ZWJQcm9j
ZXNzV2l0aEF1ZGlibGVNZWRpYUNvdW50ZXIudmFsdWUoKSkgewogICAgICAgICBXRUJQUk9DRVNT
UE9PTF9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZUF1ZGlibGVNZWRpYUFz
c2VydGlvbnM6IFRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIHBsYXlpbmcgYXVkaWJsZSBtZWRpYSBu
b3cgemVyby4gUmVsZWFzaW5nIFVJIHByb2Nlc3MgYXNzZXJ0aW9uLiIpOwotICAgICAgICBtX2F1
ZGlibGVNZWRpYUFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2F1ZGlibGVNZWRp
YUFjdGl2aXR5ID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNWJhNTBiOTlh
ZWM2NDc3MmRiZmExMGVhODhjYTVjNzMzNDJlYzVmLi5kNmJiMzM3MzdiYmY5OWRjNzQzYTc3Nzc2
ZjM1MTA4ZjM5ZTZjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERv
d24oKQogICAgIG1fcmVzcG9uc2l2ZW5lc3NUaW1lci5pbnZhbGlkYXRlKCk7CiAgICAgbV9iYWNr
Z3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lci5pbnZhbGlkYXRlKCk7CiAgICAgbV9hY3Rpdml0eUZv
ckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7Ci0gICAgbV9hdWRpYmxlTWVkaWFBY3Rpdml0
eSA9IFdURjo6bnVsbG9wdDsKKyAgICBtX2F1ZGlibGVNZWRpYUFjdGl2aXR5ID0gc3RkOjpudWxs
b3B0OwogCiAgICAgZm9yIChhdXRvJiBmcmFtZSA6IGNvcHlUb1ZlY3RvcihtX2ZyYW1lTWFwLnZh
bHVlcygpKSkKICAgICAgICAgZnJhbWUtPndlYlByb2Nlc3NXaWxsU2h1dERvd24oKTsKQEAgLTEw
NTEsNyArMTA1MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
UHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0CiAjZW5kaWYKIAogICAgIGlm
IChtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcldoZW5MYXVuY2hlZCkgewotICAgICAg
ICBhdXRvIHVzZUxhenlTdG9wID0gKnN0ZDo6ZXhjaGFuZ2UobV9zaG91bGRTdGFydFJlc3BvbnNp
dmVuZXNzVGltZXJXaGVuTGF1bmNoZWQsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gdXNl
TGF6eVN0b3AgPSAqc3RkOjpleGNoYW5nZShtX3Nob3VsZFN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1l
cldoZW5MYXVuY2hlZCwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgc3RhcnRSZXNwb25zaXZlbmVz
c1RpbWVyKHVzZUxhenlTdG9wKTsKICAgICB9CiB9CkBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpCiAgICAgICAg
IH07CiAgICAgfSBlbHNlIHsKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIFJlbGVhc2luZyBNZWRpYVBsYXliYWNrIGFzc2VydGlvbiBmb3IgV2ViUHJvY2VzcyB3
aXRoIFBJRCAlZCIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBtX2F1ZGli
bGVNZWRpYUFjdGl2aXR5ID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2F1ZGlibGVNZWRpYUFj
dGl2aXR5ID0gc3RkOjpudWxsb3B0OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwOGI4NDY3Y2M4YWUyNzJkOTQxYzE1Mjc5NDIzMTA2
NGY2ZDlmNDRhLi5lMjUzODc2NjFiNDYzNjkwYWI0ODhhYWU4ZGEzNjQ5MGE5YzlmYTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTQ4LDcgKzE0OCw3
IEBAIHB1YmxpYzoKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4g
PyAqbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBkb21haW4gOiBmYWxzZTsgfQotICAgIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfSk7
IH0KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4udmFsdWVfb3IoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4geyB9KTsgfQogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sKTsK
ICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNz
Q2FjaGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGNmY2Q5
ZjNjMDNjOWM2YTFhM2QzNGVkMWNjOTc3N2E4MDcyN2U5OTAuLmIzOTc4ZjI0ZTRhYjk0Njk4MjQ1
NzQ4ZDFhN2JjYWY1YzYxY2NlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmJlZ2luQXBwQm91
bmREb21haW5DaGVjayhjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZwogICAgICAgICAv
LyBiZWNhdXNlIHRlc3QgY2FzZXMgbWF5IGhhdmUgYXBwIGJvdW5kIGRvbWFpbnMgYnV0IG5vIGtl
eS4KICAgICAgICAgYm9vbCBoYXNBcHBCb3VuZERvbWFpbnMgPSBrZXlFeGlzdHMgfHwgIWRvbWFp
bnMuaXNFbXB0eSgpOwogICAgICAgICBpZiAoIWhhc0FwcEJvdW5kRG9tYWlucykgewotICAgICAg
ICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChXVEY6Om51bGxv
cHQpOworICAgICAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3Vs
dChzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGxpc3RlbmVyLT5kaWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoc2NoZW1lT3JEb21haW5J
c0FwcEJvdW5kKGhvc3QsIHByb3RvY29sLCBkb21haW5zLCBzY2hlbWVzKSk7CkBAIC01NTIsNyAr
NTUyLDcgQEAgT3B0aW9uYWw8SGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4+IFdl
YnNpdGVEYXRhU3RvcmU6OmFwcEJvdW5kRG9tYWluc0kKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIGlmICghaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgcmV0dXJuIGFwcEJvdW5kRG9tYWlucygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDYz
YmVhYTE2OTg1MmNkZjVhYWM3NWU2MGEyYTY3NzQxMzY5OWY0ZjQuLmJkOTZhYjFlY2Q0MWE5ZjQ5
ODRmMWJmNmFkZDlmNmQ3MTkwYmVlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xOTQ4LDcgKzE5
NDgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3Vu
ZERvbWFpbnM7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChpc0FwcEJv
dW5kSVRQUmVsYXhhdGlvbkVuYWJsZWQpCi0gICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IGFwcEJv
dW5kRG9tYWluc0lmSW5pdGlhbGl6ZWQoKS52YWx1ZU9yKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IHsgfSk7CisgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IGFwcEJvdW5kRG9t
YWluc0lmSW5pdGlhbGl6ZWQoKS52YWx1ZV9vcihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiB7IH0pOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJz
ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2VvY2x1ZS9HZW9jbHVl
R2VvbG9jYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVl
L0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAppbmRleCA0MTEwNTZkNDNlYTc2NGM0MmJj
ZTA0MDNlNmM2OWRkYjhiMjRiMDRlLi42OTJhNDVhNDhmYTAyN2Y5MjIxMzM4ZDc0ZjUzNTFiZWY0
YmFmMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nZW9jbHVlL0dlb2Ns
dWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
ZW9jbHVlL0dlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgR2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXI6OmxvY2F0aW9uVXBkYXRlZChHUmVmUHRy
PEdEQnVzUHJveHk+JiYgcHJveHkpCiAgICAgZ3VpbnQ2NCB0aW1lc3RhbXA7CiAgICAgZ192YXJp
YW50X2dldChwcm9wZXJ0eS5nZXQoKSwgIih0dCkiLCAmdGltZXN0YW1wLCBudWxscHRyKTsKICAg
ICBwb3NpdGlvbi50aW1lc3RhbXAgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWVzdGFtcCk7Ci0g
ICAgbV91cGRhdGVOb3RpZnlGdW5jdGlvbihXVEZNb3ZlKHBvc2l0aW9uKSwgV1RGOjpudWxsb3B0
KTsKKyAgICBtX3VwZGF0ZU5vdGlmeUZ1bmN0aW9uKFdURk1vdmUocG9zaXRpb24pLCBzdGQ6Om51
bGxvcHQpOwogfQogCiB2b2lkIEdlb2NsdWVHZW9sb2NhdGlvblByb3ZpZGVyOjpkaWRGYWlsKENT
dHJpbmcgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5jcHAKaW5kZXggNWI0NjA5OTc5MmI2OTllMGFlMDQ3OWMy
OGFhMDNjM2E3OTM0YjExZS4uNGEzZGEyZDU2YzUzMzZjM2Y0ODA1MTQ5M2ZlMTNkYmQxMzRkMjA3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVBy
b3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51
UHJveHlHdGsuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6
OnNlbGVjdEl0ZW0odW5zaWduZWQgaXRlbUluZGV4KQogdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0
azo6YWN0aXZhdGVJdGVtKE9wdGlvbmFsPHVuc2lnbmVkPiBpdGVtSW5kZXgpCiB7CiAgICAgaWYg
KG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRo
aXMsIGl0ZW1JbmRleC52YWx1ZU9yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlT3IoLTEpKSk7CisgICAg
ICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgaXRlbUluZGV4LnZh
bHVlX29yKG1fc2VsZWN0ZWRJdGVtLnZhbHVlX29yKC0xKSkpOwogfQogCiBib29sIFdlYlBvcHVw
TWVudVByb3h5R3RrOjphY3RpdmF0ZUl0ZW1BdFBhdGgoR3RrVHJlZVBhdGgqIHBhdGgpCkBAIC00
MDQsNyArNDA0LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6aGlkZVBvcHVwTWVudSgp
CiAgICAgfQogI2VuZGlmCiAKLSAgICBhY3RpdmF0ZUl0ZW0oV1RGOjpudWxsb3B0KTsKKyAgICBh
Y3RpdmF0ZUl0ZW0oc3RkOjpudWxsb3B0KTsKIAogICAgIGlmIChtX2N1cnJlbnRTZWFyY2hTdHJp
bmcpIHsKICAgICAgICAgZ19zdHJpbmdfZnJlZShtX2N1cnJlbnRTZWFyY2hTdHJpbmcsIFRSVUUp
OwpAQCAtNDMyLDEwICs0MzIsMTAgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlBvcHVwTWVudVBy
b3h5R3RrOjp0eXBlQWhlYWRGaW5kSW5kZXgodW5zaWduZWQga2V5dmFsLCB1aW4KIHsKICAgICBn
dW5pY2hhciBrZXljaGFyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGtleXZhbCk7CiAgICAgaWYg
KCFnX3VuaWNoYXJfaXNwcmludChrZXljaGFyKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh0aW1lIDwgbV9wcmV2
aW91c0tleUV2ZW50VGltZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlYWhl
YWRUaW1lb3V0TXMgPSAxMDAwOwogICAgIGlmICh0aW1lIC0gbV9wcmV2aW91c0tleUV2ZW50VGlt
ZSA+IHR5cGVhaGVhZFRpbWVvdXRNcykgewpAQCAtNDY5LDcgKzQ2OSw3IEBAIE9wdGlvbmFsPHVu
c2lnbmVkPiBXZWJQb3B1cE1lbnVQcm94eUd0azo6dHlwZUFoZWFkRmluZEluZGV4KHVuc2lnbmVk
IGtleXZhbCwgdWluCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBub3JtYWxpemVkUHJlZml4KGdfdXRm
OF9ub3JtYWxpemUobV9jdXJyZW50U2VhcmNoU3RyaW5nLT5zdHIsIHByZWZpeExlbmd0aCwgR19O
T1JNQUxJWkVfQUxMKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcmVmaXgobm9ybWFsaXplZFBy
ZWZpeCA/IGdfdXRmOF9jYXNlZm9sZChub3JtYWxpemVkUHJlZml4LmdldCgpLCAtMSkgOiBudWxs
cHRyKTsKICAgICBpZiAoIXByZWZpeCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIG1vZGVsID0gZ3RrX3RyZWVfdmlld19n
ZXRfbW9kZWwoR1RLX1RSRUVfVklFVyhtX3RyZWVWaWV3KSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGl0ZW1Db3VudDsgaSsrLCBpbmRleCA9IChpbmRleCArIDEpICUgaXRlbUNvdW50
KSB7CkBAIC00OTIsNyArNDkyLDcgQEAgT3B0aW9uYWw8dW5zaWduZWQ+IFdlYlBvcHVwTWVudVBy
b3h5R3RrOjp0eXBlQWhlYWRGaW5kSW5kZXgodW5zaWduZWQga2V5dmFsLCB1aW4KICAgICAgICAg
ICAgIHJldHVybiBpbmRleDsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgV2ViUG9wdXBNZW51UHJveHlHdGs6OnR5
cGVBaGVhZEZpbmQodW5zaWduZWQga2V5dmFsLCB1aW50MzJfdCB0aW1lc3RhbXApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5tbQppbmRleCAwZDNkYTkyY2Q0MTU1MDdhOGIxODg5MjQ3MzM2MTY3YjhjODVkNmI0Li5mODJi
ZTAxOTVjYzdiN2EwYjVmYmM1ZjY2N2NkYWE3ZWQ0ZGVmYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAg
LTE1NCwxNCArMTU0LDE0IEBAIHN0YXRpYyBib29sIGNhblVwZGF0ZVByZXZpZXdGb3JBY3RpdmVE
cmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQogT3B0aW9uYWw8RHJhZ1Nv
dXJjZVN0YXRlPiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFjdGl2ZURyYWdTb3VyY2VGb3JJ
dGVtKFVJRHJhZ0l0ZW0gKml0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKCFbaXRlbS5wcml2YXRlTG9j
YWxDb250ZXh0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRv
IGlkZW50aWZpZXIgPSBbKE5TTnVtYmVyICopaXRlbS5wcml2YXRlTG9jYWxDb250ZXh0IGludGVn
ZXJWYWx1ZV07CiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtX2FjdGl2ZURyYWdTb3VyY2VzKSB7
CiAgICAgICAgIGlmIChzb3VyY2UuaXRlbUlkZW50aWZpZXIgPT0gaWRlbnRpZmllcikKICAgICAg
ICAgICAgIHJldHVybiBzb3VyY2U7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGU6OmFueUFjdGl2ZURyYWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlv
bikgY29uc3QKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRCZWNvbWVBYwogewog
ICAgIGlmIChkaWRCZWNvbWVBY3RpdmUgPT0gRGlkQmVjb21lQWN0aXZlOjpZZXMpCiAgICAgICAg
IG1fYWN0aXZlRHJhZ1NvdXJjZXMuYXBwZW5kKHN0YWdlZERyYWdTb3VyY2UoKSk7Ci0gICAgbV9z
dGFnZWREcmFnU291cmNlID0gV1RGOjpudWxsb3B0OworICAgIG1fc3RhZ2VkRHJhZ1NvdXJjZSA9
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmRyYWdB
bmREcm9wU2Vzc2lvbnNEaWRFbmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MuaAppbmRleCAwNDlhZGM1YTljYTZiYmVjOTE2YWMyMTVmNzhlZTg1
OThmZWZjNjVjLi5kNjM4OGMwODUwMTc5ZDk2YWEzMGM3Mjc0ZTU5MGMzZWNlMTVhNTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAt
MjkwLDcgKzI5MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgY2FuY2VsUG9pbnRl
cnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1cmVSZWNvZ25pemVyKikgb3ZlcnJpZGU7Ci0g
ICAgV1RGOjpPcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVy
ZVJlY29nbml6ZXIoVUlHZXN0dXJlUmVjb2duaXplciopIG92ZXJyaWRlOworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IGFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVSZWNvZ25pemVy
KFVJR2VzdHVyZVJlY29nbml6ZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2hvd0RpY3RhdGlv
bkFsdGVybmF0aXZlVUkoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6RGljdGF0
aW9uQ29udGV4dCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA1MGM5YTAxYzQwOGQ0NmIxN2E0NzU4MDUxNDRmNWI0
OGY0NTcyNGRhLi5lNDI4ZGFjMGEwYjQyZmZkNmQ4MmMyOWQ2N2MzNzcxYjVmNjUxOGVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBA
IC02NzIsNyArNjcyLDcgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlUnVuT3BlblBhbmVs
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBGcmEKIAogYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hh
cmVEYXRhLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgW21fY29udGVudFZpZXcgX3Nob3dTaGFyZVNoZWV0OnNoYXJlRGF0YSBp
blJlY3Q6V1RGOjpudWxsb3B0IGNvbXBsZXRpb25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXTsKKyAgICBbbV9jb250ZW50VmlldyBfc2hvd1NoYXJlU2hlZXQ6c2hhcmVEYXRhIGlu
UmVjdDpzdGQ6Om51bGxvcHQgY29tcGxldGlvbkhhbmRsZXI6V1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05NjIsNyArOTYyLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6Y2FuY2VsUG9pbnRlcnNGb3JHZXN0dXJlUmVjb2duaXplcihVSUdlc3R1
cmVSZWNvZ25pemVyKiBnZXMKICAgICBbbV9jb250ZW50VmlldyBjYW5jZWxQb2ludGVyc0Zvckdl
c3R1cmVSZWNvZ25pemVyOmdlc3R1cmVSZWNvZ25pemVyXTsKIH0KIAotV1RGOjpPcHRpb25hbDx1
bnNpZ25lZD4gUGFnZUNsaWVudEltcGw6OmFjdGl2ZVRvdWNoSWRlbnRpZmllckZvckdlc3R1cmVS
ZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVyKQorc3RkOjpv
cHRpb25hbDx1bnNpZ25lZD4gUGFnZUNsaWVudEltcGw6OmFjdGl2ZVRvdWNoSWRlbnRpZmllckZv
ckdlc3R1cmVSZWNvZ25pemVyKFVJR2VzdHVyZVJlY29nbml6ZXIqIGdlc3R1cmVSZWNvZ25pemVy
KQogewogICAgIHJldHVybiBbbV9jb250ZW50VmlldyBhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JH
ZXN0dXJlUmVjb2duaXplcjpnZXN0dXJlUmVjb2duaXplcl07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCmluZGV4IDdk
YmMwMTMyZDgyZWQwY2Q2NTgxMGYwZmNlZmJmM2ZjNGQyODVmZGMuLmIwOGZiMzY5ODUwZmIyOGVh
ZGU0OWFlMTY0MDM0YWQ4Y2YwZWFkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCkBAIC0xMDQ5LDcgKzEwNDksNyBA
QCAtICh2b2lkKWNsZWFudXBTaGVldAogICAgIFtfaW50ZXJhY3Rpb25TaGVldCBzZXRTaGVldERl
bGVnYXRlOm5pbF07CiAgICAgX2ludGVyYWN0aW9uU2hlZXQgPSBuaWw7CiAgICAgX2VsZW1lbnRJ
bmZvID0gbmlsOwotICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uID0gV1RGOjpudWxsb3B0OworICAg
IF9wb3NpdGlvbkluZm9ybWF0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIF9uZWVkc0xpbmtJbmRp
Y2F0b3IgPSBOTzsKICAgICBfaXNQcmVzZW50aW5nRERVc2VySW50ZXJmYWNlID0gTk87CiAgICAg
X2hhc1BlbmRpbmdBY3Rpb25TaGVldCA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbQppbmRleCA0Y2U1MTViMThkOTBjMTI0NTk0MzY0YjJmYzg3MGFh
YWVhNGQ0ZjE1Li42YjA0OWI0MDdiMTIxZTg5MzA0MmRmMzlhMTUxZmM5NjI5MTBlYTJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTgwLDcg
KzE4MCw3IEBAIC0gKGluc3RhbmNldHlwZSlfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vz
c1Bvb2w6KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmKXByCiAgICAgLy8gRklYTUU6IFdoaWxlIHVz
aW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxp
c2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERp
c3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEKICAgICAvLyBjb2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAgIF9wYWdlLT53aW5k
b3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC0g
X3BhZ2UtPndlYlBhZ2VJRCgpLnRvVUludDY0KCksIFdURjo6bnVsbG9wdCk7CisgICAgX3BhZ2Ut
PndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkgLSBfcGFnZS0+d2ViUGFnZUlEKCkudG9VSW50NjQoKSwgc3RkOjpudWxsb3B0KTsKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBfcGFnZS0+c2V0RnVsbHNjcmVlbkNsaWVudCht
YWtlVW5pcXVlPFdlYktpdDo6RnVsbHNjcmVlbkNsaWVudD4oc2VsZi53ZWJWaWV3KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmgKaW5kZXggYmI0NTQzYzM2ODExODdmMjcyYjQwOTNkODc2N2ZiYThjODRmYjNhZi4uNzI3
NTk0YjNmMzQwNTY2MDNmNzBlYWM4Y2IyZDJlNTVjMzM1MTRjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAt
NTU4LDcgKzU1OCw3IEBAIHVzaW5nIEltYWdlRXh0cmFjdGlvblJlcXVlc3RJZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxJbWFnZUV4dHJhY3Rpb25SZXF1ZXN0CiAtICh2b2lkKV96b29tVG9S
ZXZlYWxGb2N1c2VkRWxlbWVudDsKIAogLSAodm9pZCljYW5jZWxQb2ludGVyc0Zvckdlc3R1cmVS
ZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXI7Ci0tIChX
VEY6Ok9wdGlvbmFsPHVuc2lnbmVkPilhY3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVj
b2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyOworLSAoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4pYWN0aXZlVG91Y2hJZGVudGlmaWVyRm9yR2VzdHVyZVJlY29n
bml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcjsKIAogI2RlZmlu
ZSBERUNMQVJFX1dLQ09OVEVOVFZJRVdfQUNUSU9OX0ZPUl9XRUJfVklFVyhfYWN0aW9uKSBcCiAg
ICAgLSAodm9pZClfYWN0aW9uICMjIEZvcldlYlZpZXc6KGlkKXNlbmRlcjsKQEAgLTYwNCw3ICs2
MDQsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tD
T05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogLSAodm9pZClfc2Nyb2xsaW5nTm9kZVNj
cm9sbGluZ0RpZEVuZDsKIC0gKHZvaWQpX3Nob3dQbGF5YmFja1RhcmdldFBpY2tlcjooQk9PTClo
YXNWaWRlbyBmcm9tUmVjdDooY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpZWxlbWVudFJlY3Qgcm91
dGVTaGFyaW5nUG9saWN5OihXZWJDb3JlOjpSb3V0ZVNoYXJpbmdQb2xpY3kpcG9saWN5IHJvdXRp
bmdDb250ZXh0VUlEOihOU1N0cmluZyAqKWNvbnRleHRVSUQ7CiAtICh2b2lkKV9zaG93UnVuT3Bl
blBhbmVsOihBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqKXBhcmFtZXRlcnMgZnJhbWVJbmZvOihj
b25zdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEmKWZyYW1lSW5mbyByZXN1bHRMaXN0ZW5lcjooV2Vi
S2l0OjpXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KilsaXN0ZW5lcjsKLS0gKHZvaWQp
X3Nob3dTaGFyZVNoZWV0Oihjb25zdCBXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilz
aGFyZURhdGEgaW5SZWN0OihXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4pcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjooV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfc2hvd1NoYXJlU2hlZXQ6KGNvbnN0IFdlYkNvcmU6
OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmKXNoYXJlRGF0YSBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9zaG93
Q29udGFjdFBpY2tlcjooY29uc3QgV2ViQ29yZTo6Q29udGFjdHNSZXF1ZXN0RGF0YSYpcmVxdWVz
dERhdGEgY29tcGxldGlvbkhhbmRsZXI6KFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6Q29udGFjdEluZm8+PiYmKT4mJiljb21wbGV0aW9uSGFuZGxl
cjsKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilmaWxlUGlja2VyQWNjZXB0ZWRUeXBlSWRlbnRp
ZmllcnM7CiAtICh2b2lkKWRpc21pc3NGaWxlUGlja2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMThh
MWNkZTljZTg5Y2QyZjQ2YzYyNTAxMDY4MTExODZlZDRiNGRjMC4uYTdhZTFiNDk3NGNjYjllNmU2
ZjkwNGJjNDFlYTI2NWVjNTNlMDM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05NzEsNyArOTcxLDcg
QEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBbX2Zvcm1JbnB1dFNlc3Npb24gaW52
YWxpZGF0ZV07CiAgICAgX2Zvcm1JbnB1dFNlc3Npb24gPSBuaWw7CiAgICAgW19oaWdobGlnaHRW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIF9sYXN0T3V0c3RhbmRpbmdQb3NpdGlvbklu
Zm9ybWF0aW9uUmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICBfbGFzdE91dHN0YW5kaW5nUG9z
aXRpb25JbmZvcm1hdGlvblJlcXVlc3QgPSBzdGQ6Om51bGxvcHQ7CiAgICAgX2lzV2FpdGluZ09u
UG9zaXRpb25JbmZvcm1hdGlvbiA9IE5POwogCiAgICAgX2ZvY3VzUmVxdWlyZXNTdHJvbmdQYXNz
d29yZEFzc2lzdGFuY2UgPSBOTzsKQEAgLTEwMDAsNyArMTAwMCw3IEBAIC0gKHZvaWQpY2xlYW5V
cEludGVyYWN0aW9uCiAgICAgICAgIF9pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyA9IG5p
bDsKICAgICB9CiAKLSAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICBfbGFzdEluc2VydGVkQ2hhcmFj
dGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlvbiA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIFtfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAg
W3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXpl
ci5nZXQoKV07CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCAtICh2b2lkKWNhbmNlbFBvaW50ZXJzRm9y
R2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaQog
ICAgIH0KIH0KIAotLSAoV1RGOjpPcHRpb25hbDx1bnNpZ25lZD4pYWN0aXZlVG91Y2hJZGVudGlm
aWVyRm9yR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2duaXplcgorLSAoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4pYWN0aXZlVG91Y2hJZGVudGlmaWVy
Rm9yR2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgogewogICAgIE5TTWFwVGFibGU8TlNOdW1iZXIgKiwgVUlUb3VjaCAqPiAqYWN0aXZlVG91
Y2hlcyA9IFtfdG91Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyIGFjdGl2ZVRvdWNoZXNCeUlkZW50
aWZpZXJdOwogICAgIGZvciAoTlNOdW1iZXIgKnRvdWNoSWRlbnRpZmllciBpbiBhY3RpdmVUb3Vj
aGVzKSB7CkBAIC0xNTUyLDcgKzE1NTIsNyBAQCAtIChXVEY6Ok9wdGlvbmFsPHVuc2lnbmVkPilh
Y3RpdmVUb3VjaElkZW50aWZpZXJGb3JHZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUgogICAg
ICAgICBpZiAoW3RvdWNoLmdlc3R1cmVSZWNvZ25pemVycyBjb250YWluc09iamVjdDpnZXN0dXJl
UmVjb2duaXplcl0pCiAgICAgICAgICAgICByZXR1cm4gW3RvdWNoSWRlbnRpZmllciB1bnNpZ25l
ZEludFZhbHVlXTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCiBpbmxpbmUgc3RhdGljIFVJS2V5TW9kaWZpZXJGbGFncyBnZXN0
dXJlUmVjb2duaXplck1vZGlmaWVyRmxhZ3MoVUlHZXN0dXJlUmVjb2duaXplciAqcmVjb2duaXpl
cikKQEAgLTI1MjUsNyArMjUyNSw3IEBAIC0gKHZvaWQpX2ludm9rZUFuZFJlbW92ZVBlbmRpbmdI
YW5kbGVyc1ZhbGlkRm9yQ3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb24KICAgICAgICAgaWYgKCFb
c2VsZiBfY3VycmVudFBvc2l0aW9uSW5mb3JtYXRpb25Jc1ZhbGlkRm9yUmVxdWVzdDpyZXF1ZXN0
QW5kSGFuZGxlci0+Zmlyc3RdKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgX3Bl
bmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uSGFuZGxlcnNbaW5kZXhdID0gV1RGOjpudWxsb3B0Owor
ICAgICAgICBfcGVuZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25IYW5kbGVyc1tpbmRleF0gPSBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKHJlcXVlc3RBbmRIYW5kbGVyLT5zZWNvbmQpCiAgICAg
ICAgICAgICByZXF1ZXN0QW5kSGFuZGxlci0+c2Vjb25kKHVwZGF0ZWRQb3NpdGlvbkluZm9ybWF0
aW9uKTsKQEAgLTI2MjQsNyArMjYyNCw3IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXJTaG91
bGRCZWdpbjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiAgICAgICAg
ICAgICBpZiAoIVtzZWxmIGVuc3VyZVBvc2l0aW9uSW5mb3JtYXRpb25Jc1VwVG9EYXRlOnJlcXVl
c3RdKQogICAgICAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb24ubm9kZUF0UG9zaXRpb25IYXNEb3VibGVDbGlja0hhbmRs
ZXIudmFsdWVPcihmYWxzZSk7CisgICAgICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5u
b2RlQXRQb3NpdGlvbkhhc0RvdWJsZUNsaWNrSGFuZGxlci52YWx1ZV9vcihmYWxzZSk7CiAgICAg
fQogCiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplcgpAQCAtMzEzNiw3ICszMTM2LDcgQEAgLSAodm9pZClfaW52YWxpZGF0ZUN1
cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9uCiAtICh2b2lkKV9wb3NpdGlvbkluZm9ybWF0aW9uRGlk
Q2hhbmdlOihjb25zdCBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilp
bmZvCiB7CiAgICAgaWYgKF9sYXN0T3V0c3RhbmRpbmdQb3NpdGlvbkluZm9ybWF0aW9uUmVxdWVz
dCAmJiBpbmZvLnJlcXVlc3QuaXNWYWxpZEZvclJlcXVlc3QoKl9sYXN0T3V0c3RhbmRpbmdQb3Np
dGlvbkluZm9ybWF0aW9uUmVxdWVzdCkpCi0gICAgICAgIF9sYXN0T3V0c3RhbmRpbmdQb3NpdGlv
bkluZm9ybWF0aW9uUmVxdWVzdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX2xhc3RPdXRzdGFu
ZGluZ1Bvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0ID0gc3RkOjpudWxsb3B0OwogCiAgICAgX2lz
V2FpdGluZ09uUG9zaXRpb25JbmZvcm1hdGlvbiA9IE5POwogCkBAIC00NDIwLDcgKzQ0MjAsNyBA
QCAtICh2b2lkKXVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludDooQ0dQb2ludClwb2ludCB3
aXRoQm91bmRhcnk6KFVJVGV4dEdyYW51bAogCiAtIChVVEYzMkNoYXIpX2NoYXJhY3RlckJlZm9y
ZUNhcmV0U2VsZWN0aW9uCiB7Ci0gICAgcmV0dXJuIF9sYXN0SW5zZXJ0ZWRDaGFyYWN0ZXJUb092
ZXJyaWRlQ2hhcmFjdGVyQmVmb3JlU2VsZWN0aW9uLnZhbHVlT3IoX3BhZ2UtPmVkaXRvclN0YXRl
KCkucG9zdExheW91dERhdGEoKS5jaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24pOworICAgIHJldHVy
biBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3RlckJlZm9yZVNlbGVjdGlv
bi52YWx1ZV9vcihfcGFnZS0+ZWRpdG9yU3RhdGUoKS5wb3N0TGF5b3V0RGF0YSgpLmNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbik7CiB9CiAKIC0gKFVURjMyQ2hhcilfY2hhcmFjdGVySW5SZWxhdGlv
blRvQ2FyZXRTZWxlY3Rpb246KGludClhbW91bnQKQEAgLTY0MjksNyArNjQyOSw3IEBAIC0gKHZv
aWQpX2VsZW1lbnREaWRCbHVyCiAgICAgaWYgKCFfaXNDaGFuZ2luZ0ZvY3VzKQogICAgICAgICBf
ZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1cyA9IE5POwogCi0gICAgX2xhc3RJbnNlcnRlZENo
YXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24gPSBXVEY6Om51bGxvcHQ7
CisgICAgX2xhc3RJbnNlcnRlZENoYXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxl
Y3Rpb24gPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZUlucHV0Q29udGV4dEFm
dGVyQmx1cnJpbmdBbmRSZWZvY3VzaW5nRWxlbWVudApAQCAtNzAyOSw3ICs3MDI5LDcgQEAgLSAo
dm9pZClfc2VsZWN0aW9uQ2hhbmdlZAogICAgIFtfd2ViVmlldyBfZGlkQ2hhbmdlRWRpdG9yU3Rh
dGVdOwogCiAgICAgaWYgKCFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5pc01pc3NpbmdQb3N0TGF5b3V0
RGF0YSkgewotICAgICAgICBfbGFzdEluc2VydGVkQ2hhcmFjdGVyVG9PdmVycmlkZUNoYXJhY3Rl
ckJlZm9yZVNlbGVjdGlvbiA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgX2xhc3RJbnNlcnRlZENo
YXJhY3RlclRvT3ZlcnJpZGVDaGFyYWN0ZXJCZWZvcmVTZWxlY3Rpb24gPSBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGlmICghX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiAmJiBfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5hdXRvY2FwaXRhbGl6ZVR5cGUgPT0gV2ViQ29yZTo6QXV0b2NhcGl0YWxp
emVUeXBlOjpXb3JkcykKICAgICAgICAgICAgIFtVSUtleWJvYXJkSW1wbC5zaGFyZWRJbnN0YW5j
ZSBjbGVhclNoaWZ0U3RhdGVdOwogICAgIH0KQEAgLTcyNDEsNyArNzI0MSw3IEBAIC0gKEJPT0wp
ZmlsZVVwbG9hZFBhbmVsRGVzdGluYXRpb25Jc01hbmFnZWQ6KFdLRmlsZVVwbG9hZFBhbmVsICop
ZmlsZVVwbG9hZFBhbmVsCiAgICAgICAgICYmIFt1aURlbGVnYXRlIF93ZWJWaWV3OndlYlZpZXcu
Z2V0KCkgZmlsZVVwbG9hZFBhbmVsQ29udGVudElzTWFuYWdlZFdpdGhJbml0aWF0aW5nRnJhbWU6
d3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoX2ZyYW1lSW5mb0ZvckZpbGVV
cGxvYWRQYW5lbCksIF9wYWdlLmdldCgpKSldOwogfQogCi0tICh2b2lkKV9zaG93U2hhcmVTaGVl
dDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYpZGF0YSBpblJlY3Q6KFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBsZXRpb25IYW5kbGVyOihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lk
KV9zaG93U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYp
ZGF0YSBpblJlY3Q6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PilyZWN0IGNvbXBs
ZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
ICAgIGlmIChfc2hhcmVTaGVldCkKQEAgLTcyOTAsNyArNzI5MCw3IEBAIC0gKHZvaWQpX3Nob3dD
b250YWN0UGlja2VyOihjb25zdCBXZWJDb3JlOjpDb250YWN0c1JlcXVlc3REYXRhJilyZXF1ZXN0
RGF0YSBjb21wCiAgICAgW19jb250YWN0UGlja2VyIHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtf
Y29udGFjdFBpY2tlciBwcmVzZW50V2l0aFJlcXVlc3REYXRhOnJlcXVlc3REYXRhIGNvbXBsZXRp
b25IYW5kbGVyOldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXTsKICNlbHNlCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOwogI2VuZGlmCiB9CiAKQEAgLTc0MDUsNyArNzQwNSw3IEBAIC0gKE9wdGlvbmFsPFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24+KXBvc2l0aW9uSW5mb3JtYXRp
b25Gb3JBY3RpCiAgICAgcmVxdWVzdC5pbmNsdWRlTGlua0luZGljYXRvciA9IGFzc2lzdGFudC5u
ZWVkc0xpbmtJbmRpY2F0b3I7CiAgICAgcmVxdWVzdC5saW5rSW5kaWNhdG9yU2hvdWxkSGF2ZUxl
Z2FjeU1hcmdpbnMgPSAhc2VsZi5fc2hvdWxkVXNlQ29udGV4dE1lbnVzOwogICAgIGlmICghW3Nl
bGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cmVxdWVzdF0pCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICByZXR1cm4gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9CkBAIC03OTk5LDcgKzc5OTksNyBAQCBz
dGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25G
b3JVSURyb3BPcGVyYXRpb24oVUlEcgogewogICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgewog
ICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgVUlEcm9wT3BlcmF0
aW9uRm9yYmlkZGVuOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6UHJp
dmF0ZTsKICAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNvcHk6CkBAIC04MDA4LDcgKzgwMDgsNyBA
QCBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRp
b25Gb3JVSURyb3BPcGVyYXRpb24oVUlEcgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbjo6TW92ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCiAtIChXZWJD
b3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4p
c2Vzc2lvbiBkcmFnRGVzdGluYXRpb25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRy
YWdEZXN0aW5hdGlvbkFjdGlvbgpAQCAtOTM5Niw3ICs5Mzk2LDcgQEAgLSAodm9pZClfcG9pbnRl
ckludGVyYWN0aW9uOihVSVBvaW50ZXJJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHJlZ2lvbkZv
clJlcXVlc3QKICAgICAgICAgY29tcGxldGlvbihbc2VsZiBwb2ludGVyUmVnaW9uRm9yUG9zaXRp
b25JbmZvcm1hdGlvbjppbnRlcmFjdGlvbkluZm9ybWF0aW9uIHBvaW50OnJlcXVlc3QubG9jYXRp
b25dKTsKIAogICAgICAgICBpZiAoX2RlZmVycmVkUG9pbnRlckludGVyYWN0aW9uUmVxdWVzdCkg
ewotICAgICAgICAgICAgYXV0byBkZWZlcnJlZFJlcXVlc3QgPSBzdGQ6OmV4Y2hhbmdlKF9kZWZl
cnJlZFBvaW50ZXJJbnRlcmFjdGlvblJlcXVlc3QsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAg
ICBhdXRvIGRlZmVycmVkUmVxdWVzdCA9IHN0ZDo6ZXhjaGFuZ2UoX2RlZmVycmVkUG9pbnRlcklu
dGVyYWN0aW9uUmVxdWVzdCwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIFtzZWxmIGRvQWZ0
ZXJQb3NpdGlvbkluZm9ybWF0aW9uVXBkYXRlOl4oV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0
aW9uQXRQb3NpdGlvbiBpbnRlcmFjdGlvbkluZm9ybWF0aW9uKSB7CiAgICAgICAgICAgICAgICAg
cmVwbHlIYW5kbGVyKGludGVyYWN0aW9uSW5mb3JtYXRpb24sIGRlZmVycmVkUmVxdWVzdC0+c2Vj
b25kLmdldCgpKTsKICAgICAgICAgICAgIH0gZm9yUmVxdWVzdDpkZWZlcnJlZFJlcXVlc3QtPmZp
cnN0XTsKQEAgLTk2MzMsOCArOTYzMyw4IEBAIC0gKHZvaWQpX2RvQWZ0ZXJQZW5kaW5nSW1hZ2VF
eHRyYWN0aW9uOih2b2lkKF4pKFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3RpCiAKIC0g
KHZvaWQpX2ludm9rZUFsbEFjdGlvbnNUb1BlcmZvcm1BZnRlclBlbmRpbmdJbWFnZUV4dHJhY3Rp
b246KFdlYktpdDo6UHJvY2VlZFdpdGhJbWFnZUV4dHJhY3Rpb24pcHJvY2VlZFdpdGhJbWFnZUV4
dHJhY3Rpb24KIHsKLSAgICBfcGVuZGluZ0ltYWdlRXh0cmFjdGlvblJlcXVlc3RJZGVudGlmaWVy
ID0gV1RGOjpudWxsb3B0OwotICAgIF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiA9IFdU
Rjo6bnVsbG9wdDsKKyAgICBfcGVuZGluZ0ltYWdlRXh0cmFjdGlvblJlcXVlc3RJZGVudGlmaWVy
ID0gc3RkOjpudWxsb3B0OworICAgIF9lbGVtZW50UGVuZGluZ0ltYWdlRXh0cmFjdGlvbiA9IHN0
ZDo6bnVsbG9wdDsKICAgICBmb3IgKGF1dG8gYmxvY2sgOiBzdGQ6OmV4Y2hhbmdlKF9hY3Rpb25z
VG9QZXJmb3JtQWZ0ZXJQZW5kaW5nSW1hZ2VFeHRyYWN0aW9uLCB7IH0pKQogICAgICAgICBibG9j
ayhwcm9jZWVkV2l0aEltYWdlRXh0cmFjdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRvci5tbQppbmRl
eCBiNzkxY2ZlYWFlMGMzY2ZiMDU5YmNkNDcyNzc2YzhjMzlmNGVlNzJlLi43YjY1MDVmYTc4ZTY2
MzE0Njc5ZDQ4ZjY2ZWMyZDkwZGFkNzE0NGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IubW0KQEAgLTE4
MiwxNCArMTgyLDE0IEBAIC0gKE9wdGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJv
YXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBrV2ViU3BhY2VLZXkgPSAweDIwOwogCiAgICAgaWYgKCFbX3Njcm9sbGFibGUgaXNL
ZXlib2FyZFNjcm9sbGFibGVdKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGV2ZW50LmtleWJvYXJkRmxhZ3MgJiBX
ZWJFdmVudEtleWJvYXJkSW5wdXRNb2RpZmllckZsYWdzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE5TU3Ry
aW5nICpjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgPSBldmVudC5jaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM7CiAgICAgaWYgKCFjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMubGVuZ3Ro
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgZW51bSBjbGFzcyBLZXkgOiB1aW50OF90IHsgT3RoZXIsIExlZnRBcnJvdywg
UmlnaHRBcnJvdywgVXBBcnJvdywgRG93bkFycm93LCBQYWdlVXAsIFBhZ2VEb3duLCBTcGFjZSB9
OwogICAgIApAQCAtMjE2LDcgKzIxNiw3IEBAIC0gKE9wdGlvbmFsPFdlYktpdDo6S2V5Ym9hcmRT
Y3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKilldmVudAogICAgIH0o
KTsKICAgICAKICAgICBpZiAoa2V5ID09IEtleTo6T3RoZXIpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgQk9PTCBz
aGlmdFByZXNzZWQgPSBldmVudC5tb2RpZmllckZsYWdzICYgV2ViRXZlbnRGbGFnTWFza1NoaWZ0
S2V5OwogICAgIEJPT0wgYWx0UHJlc3NlZCA9IGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiBXZWJFdmVu
dEZsYWdNYXNrT3B0aW9uS2V5OwpAQCAtMjI1LDcgKzIyNSw3IEBAIC0gKE9wdGlvbmFsPFdlYktp
dDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQgKill
dmVudAogICAgIC8vIE5vIHNob3J0Y3V0cyBpbmNsdWRlIG1vcmUgdGhhbiBvbmUgbW9kaWZpZXI7
IHdlIHNob3VsZCBub3QgZWF0IGtleSBldmVudHMKICAgICAvLyB0aGF0IGNvbnRhaW4gbW9yZSB0
aGFuIG9uZSBtb2RpZmllciBiZWNhdXNlIHRoZXkgbWlnaHQgYmUgdXNlZCBmb3Igb3RoZXIgc2hv
cnRjdXRzLgogICAgIGlmIChzaGlmdFByZXNzZWQgKyBhbHRQcmVzc2VkICsgY21kUHJlc3NlZCA+
IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICBhdXRvIGFsbG93ZWRNb2RpZmllcnMgPSBeIFdlYkV2ZW50RmxhZ3Mgewog
ICAgICAgICBzd2l0Y2ggKGtleSkgewpAQCAtMjQ4LDcgKzI0OCw3IEBAIC0gKE9wdGlvbmFsPFdl
YktpdDo6S2V5Ym9hcmRTY3JvbGw+KWtleWJvYXJkU2Nyb2xsRm9yRXZlbnQ6KDo6V2ViRXZlbnQg
KilldmVudAogCiAgICAgYXV0byByZWxldmFudE1vZGlmaWVyRmxhZ3MgPSBXZWJFdmVudEZsYWdN
YXNrT3B0aW9uS2V5IHwgV2ViRXZlbnRGbGFnTWFza0NvbW1hbmRLZXkgfCBXZWJFdmVudEZsYWdN
YXNrU2hpZnRLZXk7CiAgICAgaWYgKGV2ZW50Lm1vZGlmaWVyRmxhZ3MgJiByZWxldmFudE1vZGlm
aWVyRmxhZ3MgJiB+YWxsb3dlZE1vZGlmaWVycykKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gaW5jcmVtZW50ID0g
XnsKICAgICAgICAgc3dpdGNoIChrZXkpIHsKQEAgLTM5Nyw3ICszOTcsNyBAQCAtICh2b2lkKXN0
b3BBbmltYXRlZFNjcm9sbAogICAgIC8vIG91dCB0byB0aGF0IHBvaW50LgogICAgIF9pZGVhbFBv
c2l0aW9uID0gW19zY3JvbGxhYmxlIGJvdW5kZWRDb250ZW50T2Zmc2V0OmZhcnRoZXN0UG9pbnRJ
bkRpcmVjdGlvbihfY3VycmVudFBvc2l0aW9uICsgZGlzcGxhY2VtZW50LCBfaWRlYWxQb3NpdGlv
bkZvck1pbmltdW1UcmF2ZWwsIF9jdXJyZW50U2Nyb2xsLT5kaXJlY3Rpb24pXTsKIAotICAgIF9j
dXJyZW50U2Nyb2xsID0gV1RGOjpudWxsb3B0OworICAgIF9jdXJyZW50U2Nyb2xsID0gc3RkOjpu
dWxsb3B0OwogfQogCiAtIChCT09MKXNjcm9sbFRyaWdnZXJpbmdLZXlJc1ByZXNzZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6
ZXIuaAppbmRleCA2OTBlM2NlZTkwY2ExNTVmNTY0NzgxZWI2YTAwOTllYTI4ZDk2ZjViLi5mZjQ4
NDExNmY3NjRiNTRiMTM5OWM4NDQ2YWIxYjk3ODRlOWFhMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCkBAIC0z
MCw3ICszMCw3IEBACiAKIEBpbnRlcmZhY2UgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIDogVUlI
b3Zlckdlc3R1cmVSZWNvZ25pemVyCiAKLS0gKFdURjo6T3B0aW9uYWw8Q0dQb2ludD4pbGFzdE1v
dXNlTG9jYXRpb247CistIChzdGQ6Om9wdGlvbmFsPENHUG9pbnQ+KWxhc3RNb3VzZUxvY2F0aW9u
OwogLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50ICopbGFzdE1vdXNlRXZlbnQ7CiAKIC0g
KFVJVG91Y2ggKiltb3VzZVRvdWNoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0KaW5kZXggYjlmN2VkN2ZmOTI3ZWY1
MDYzZDdkOTJiMTc4YThmNTZiZWQzMmU1ZS4uMjgxYzJmYzhhMGQwOWY2M2Q1MjdhNjIwOGM4ODc5
ZmE5NzJkZDU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91
c2VHZXN0dXJlUmVjb2duaXplci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCkBAIC04Miw4ICs4Miw4IEBAIC0gKHZvaWQpc2V0
RW5hYmxlZDooQk9PTCllbmFibGVkCiAgICAgICAgIF9jdXJyZW50VG91Y2ggPSBuaWw7CiAgICAg
ICAgIF90b3VjaGluZyA9IE5POwogICAgICAgICBfbGFzdEV2ZW50ID0gbmlsOwotICAgICAgICBf
bGFzdExvY2F0aW9uID0gV1RGOjpudWxsb3B0OwotICAgICAgICBfcHJlc3NlZEJ1dHRvbk1hc2sg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIF9sYXN0TG9jYXRpb24gPSBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiB9CiAKQEAg
LTkyLDcgKzkyLDcgQEAgLSAoV2ViS2l0OjpOYXRpdmVXZWJNb3VzZUV2ZW50ICopbGFzdE1vdXNl
RXZlbnQKICAgICByZXR1cm4gX2xhc3RFdmVudC5nZXQoKTsKIH0KIAotLSAoV1RGOjpPcHRpb25h
bDxDR1BvaW50PilsYXN0TW91c2VMb2NhdGlvbgorLSAoc3RkOjpvcHRpb25hbDxDR1BvaW50Pils
YXN0TW91c2VMb2NhdGlvbgogewogICAgIHJldHVybiBfbGFzdExvY2F0aW9uOwogfQpAQCAtMTYz
LDcgKzE2Myw3IEBAIC0gKHZvaWQpdG91Y2hlc0VuZGVkOihOU1NldDxVSVRvdWNoICo+ICopdG91
Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAogICAgIF9sYXN0TG9jYXRpb24gPSBbc2Vs
ZiBsb2NhdGlvbkluVmlldzpzZWxmLnZpZXddOwogCiAgICAgX3RvdWNoaW5nID0gTk87Ci0gICAg
X3ByZXNzZWRCdXR0b25NYXNrID0gV1RGOjpudWxsb3B0OworICAgIF9wcmVzc2VkQnV0dG9uTWFz
ayA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIHNlbGYuc3RhdGUgPSBVSUdlc3R1cmVSZWNvZ25pemVy
U3RhdGVDaGFuZ2VkOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIC0gKHZvaWQpdG91Y2hlc0NhbmNl
bGxlZDooTlNTZXQ8VUlUb3VjaCAqPiAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZl
bnQKICAgICBfbGFzdExvY2F0aW9uID0gW3NlbGYgbG9jYXRpb25JblZpZXc6c2VsZi52aWV3XTsK
IAogICAgIF90b3VjaGluZyA9IE5POwotICAgIF9wcmVzc2VkQnV0dG9uTWFzayA9IFdURjo6bnVs
bG9wdDsKKyAgICBfcHJlc3NlZEJ1dHRvbk1hc2sgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBzZWxm
LnN0YXRlID0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IDAyMmNkYzdmZjQzODg2ZWU1ZTNjOGVi
NmJjZjQ0YzkyN2M0ODA3NTYuLmQwMTAyYmM4ZTY0ODFmMjQ0NTY1MmFiNjI4ODU3MTQ0MDExOTdh
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAtMjU4LDcg
KzI1OCw3IEBAIC0gKHZvaWQpX3Jlc2V0RmluZAogICAgIF9maW5kU3RyaW5nID0gbmlsOwogICAg
IF9maW5kU3RyaW5nQ291bnQgPSAwOwogICAgIF9maW5kU3RyaW5nTWF4Q291bnQgPSAwOwotICAg
IF9mb2N1c2VkU2VhcmNoUmVzdWx0SW5kZXggPSBXVEY6Om51bGxvcHQ7CisgICAgX2ZvY3VzZWRT
ZWFyY2hSZXN1bHRJbmRleCA9IHN0ZDo6bnVsbG9wdDsKICAgICBfZm9jdXNlZFNlYXJjaFJlc3Vs
dFBlbmRpbmdPZmZzZXQgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAzMmIwZjI4YTU2ZjZlNzVlZWJmNThlNzU1OTU2MzZj
ZGM2MTgxOWFjLi44MTBiZTE3YzFjOTZkNjljMmU0OWU5ZTM3YThhZjllOTZmZTY0YzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTg4
Nyw3ICs4ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlSW5wdXRDb250ZXh0QWZ0ZXJC
bHVycmluZ0FuZFJlZm9jdXNpbmdFbGVtZW50KCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmVsZW1l
bnREaWRGb2N1cyhjb25zdCBGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uJiBpbmZvcm1hdGlvbiwg
Ym9vbCB1c2VySXNJbnRlcmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBtX3BlbmRpbmdJbnB1dE1vZGVDaGFuZ2UgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9wZW5kaW5nSW5wdXRNb2RlQ2hhbmdlID0gc3RkOjpudWxsb3B0
OwogCiAgICAgQVBJOjpPYmplY3QqIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2VzcygpLnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpOwogICAgIHBhZ2VDbGll
bnQoKS5lbGVtZW50RGlkRm9jdXMoaW5mb3JtYXRpb24sIHVzZXJJc0ludGVyYWN0aW5nLCBibHVy
UHJldmlvdXNOb2RlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlcywgdXNlckRhdGFPYmplY3QpOwpAQCAt
ODk1LDcgKzg5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbGVtZW50RGlkRm9jdXMoY29uc3Qg
Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbiYgaW5mb3JtYXRpb24sCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjplbGVtZW50RGlkQmx1cigpCiB7Ci0gICAgbV9wZW5kaW5nSW5wdXRNb2RlQ2hhbmdlID0g
V1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICBwYWdlQ2xpZW50KCkuZWxlbWVudERpZEJsdXIoKTsKIH0KIApAQCAtOTE3LDcgKzkx
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWxlYXNlQWxsVG91Y2hQb2ludHMoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBwYWdlQ2xpZW50KCkuZm9jdXNlZEVsZW1lbnREaWRDaGFuZ2VJ
bnB1dE1vZGUoKm1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZSk7Ci0gICAgbV9wZW5kaW5nSW5wdXRN
b2RlQ2hhbmdlID0gV1RGOjpudWxsb3B0OworICAgIG1fcGVuZGluZ0lucHV0TW9kZUNoYW5nZSA9
IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmF1dG9maWxsTG9naW5DcmVk
ZW50aWFscyhjb25zdCBTdHJpbmcmIHVzZXJuYW1lLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQpA
QCAtMTE5Miw3ICsxMTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFn
ZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2kKICAgICBpZiAoaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoaW1hZ2VTaXplcyksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBz
dGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFJlY2VpdmVFZGl0RHJh
Z1NuYXBzaG90KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3Lm1tCmluZGV4IGU2NmRmODRhMjJiODM4
MTNiZWVlNDUxMGQ1YjllZWU3ODgwMjI1ZjYuLjQ3ZjA0NTkzM2ZkMTY3NWJjYTViMjkwZmJjOWEw
MjNmYzgzOGUyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9jdXNlZEZvcm1Db250cm9sVmlldy5tbQpAQCAtMTI2LDcgKzEyNiw3
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUgZGVsZWdhdGU6
KGlkIDxXS0ZvY3VzZWRGb3JtQ29udHJvbFZpCiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc3VibWl0
QnV0dG9uQmFja2dyb3VuZFZpZXcuZ2V0KCldOwogCiAgICAgX2hhc1BlbmRpbmdGb2N1c1JlcXVl
c3QgPSBOTzsKLSAgICBfaW5pdGlhbFNjcm9sbFZpZXdDb250ZW50T2Zmc2V0ID0gV1RGOjpudWxs
b3B0OworICAgIF9pbml0aWFsU2Nyb2xsVmlld0NvbnRlbnRPZmZzZXQgPSBzdGQ6Om51bGxvcHQ7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVySU9TLm1tCmluZGV4IDMwNGJmMDQ5MmFkYzE3ZjNmMDQ2OGQyZDZmYmM3ZmQ4YzZl
NzYxYTcuLjI1ODU2NmFmZWZiNmNhMDlkMGY3NmIwNWQ5Njk5ZDE3OTI5ZDczZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1
bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtODE4LDcgKzgx
OCw3IEBAIC0gKHZvaWQpX2NvbXBsZXRlZEV4aXRGdWxsU2NyZWVuCiAKICAgICBfdmlld1N0YXRl
LmFwcGx5VG8od2ViVmlldy5nZXQoKSk7CiAgICAgaWYgKGF1dG8gcGFnZSA9IFt3ZWJWaWV3IF9w
YWdlXSkKLSAgICAgICAgcGFnZS0+c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhXVEY6Om51
bGxvcHQpOworICAgICAgICBwYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHN0ZDo6
bnVsbG9wdCk7CiAKICAgICBbd2ViVmlldyBzZXROZWVkc0xheW91dF07CiAgICAgW3dlYlZpZXcg
bGF5b3V0SWZOZWVkZWRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L0Rpc3BsYXlMaW5rLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9EaXNwbGF5TGlu
ay5jcHAKaW5kZXggNWIwMGVjNTgyZDE0MmViZTMzMjE5MWExZmJmNjFhYjg4ZTg5YWVhMC4uMGU3
ZDQ5NDEwY2Q2NzE5ZDQyZjAxMTc4MmNhZGFlOGUwZTRmMTY0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0Rpc3BsYXlMaW5rLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvRGlzcGxheUxpbmsuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBE
aXNwbGF5TGluazo6bm90aWZ5T2JzZXJ2ZXJzRGlzcGxheVdhc1JlZnJlc2hlZCgpCiAgICAgYXV0
byBtYXhGcmFtZXNQZXJTZWNvbmQgPSBbXShjb25zdCBWZWN0b3I8T2JzZXJ2ZXJJbmZvPiYgb2Jz
ZXJ2ZXJzKSB7CiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lc1BlclNlY29uZD4gb2Jz
ZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25kOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9ic2Vy
dmVyIDogb2JzZXJ2ZXJzKQotICAgICAgICAgICAgb2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25k
ID0gc3RkOjptYXgob2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25kLnZhbHVlT3IoMCksIG9ic2Vy
dmVyLnByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CisgICAgICAgICAgICBvYnNlcnZlcnNNYXhG
cmFtZXNQZXJTZWNvbmQgPSBzdGQ6Om1heChvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQudmFs
dWVfb3IoMCksIG9ic2VydmVyLnByZWZlcnJlZEZyYW1lc1BlclNlY29uZCk7CiAgICAgICAgIHJl
dHVybiBvYnNlcnZlcnNNYXhGcmFtZXNQZXJTZWNvbmQ7CiAgICAgfTsKIApAQCAtMjI1LDcgKzIy
NSw3IEBAIHZvaWQgRGlzcGxheUxpbms6Om5vdGlmeU9ic2VydmVyc0Rpc3BsYXlXYXNSZWZyZXNo
ZWQoKQogICAgICAgICBhbnlDb25uZWN0aW9uSGFkT2JzZXJ2ZXJzID0gdHJ1ZTsKIAogICAgICAg
ICBhdXRvIG9ic2VydmVyc01heEZyYW1lc1BlclNlY29uZCA9IG1heEZyYW1lc1BlclNlY29uZChj
b25uZWN0aW9uSW5mby5vYnNlcnZlcnMpOwotICAgICAgICBhdXRvIG1haW5UaHJlYWRXYW50c1Vw
ZGF0ZSA9IG1fY3VycmVudFVwZGF0ZS5yZWxldmFudEZvclVwZGF0ZUZyZXF1ZW5jeShvYnNlcnZl
cnNNYXhGcmFtZXNQZXJTZWNvbmQudmFsdWVPcihXZWJDb3JlOjpGdWxsU3BlZWRGcmFtZXNQZXJT
ZWNvbmQpKTsKKyAgICAgICAgYXV0byBtYWluVGhyZWFkV2FudHNVcGRhdGUgPSBtX2N1cnJlbnRV
cGRhdGUucmVsZXZhbnRGb3JVcGRhdGVGcmVxdWVuY3kob2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vj
b25kLnZhbHVlX29yKFdlYkNvcmU6OkZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCkpOwogCiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGluaywgc3RyZWFtIDw8ICJbVUkgXSBEaXNwbGF5
TGluayAiIDw8IHRoaXMgPDwgIiBmb3IgZGlzcGxheSAiIDw8IG1fZGlzcGxheUlEIDw8ICIgKGRp
c3BsYXkgZnBzICIgPDwgbV9kaXNwbGF5Tm9taW5hbEZyYW1lc1BlclNlY29uZCA8PCAiKSB1cGRh
dGUgIiA8PCBtX2N1cnJlbnRVcGRhdGUgPDwgIiAiIDw8IGNvbm5lY3Rpb25JbmZvLm9ic2VydmVy
cy5zaXplKCkKICAgICAgICAgICAgIDw8ICIgb2JzZXJ2ZXJzLCBvbiBiYWNrZ3JvdW5kIHF1ZXVl
ICIgPDwgc2hvdWxkU2VuZElQQ09uQmFja2dyb3VuZFF1ZXVlIDw8ICIgbWF4RnJhbWVzUGVyU2Vj
b25kICIgPDwgb2JzZXJ2ZXJzTWF4RnJhbWVzUGVyU2Vjb25kIDw8ICIgZnVsbCBzcGVlZCBjbGll
bnRzICIgPDwgY29ubmVjdGlvbkluZm8uZnVsbFNwZWVkVXBkYXRlc0NsaWVudENvdW50IDw8ICIg
cmVsZXZhbnQgIiA8PCBtYWluVGhyZWFkV2FudHNVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAppbmRl
eCBhMzk0MDY0OWZkYmYyZGVkNDg0YTRlMjYxMDJiOTIxY2MyODA3OGY3Li5lYWRhZDRlOGZhMzM2
NjU4NDdlMTcyZmY1ZTkyYzBlNDZiOWExNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcApAQCAtMjg5LDgg
KzI4OSw4IEBAIHN0YXRpYyB2b2lkIGVuY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50cnlE
YXRhRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSFRUUEJvCiAgICAgICAgIGVuY29kZXIgPDwgZmFs
c2U7CiAKICAgICAgICAgZW5jb2RlciA8PCBlbGVtZW50LmZpbGVTdGFydDsKLSAgICAgICAgZW5j
b2RlciA8PCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVPcigtMSk7Ci0gICAgICAgIGVuY29kZXIg
PDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlT3IoV2FsbFRpbWU6
Om5hbigpKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCk7CisgICAgICAgIGVuY29kZXIgPDwg
ZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKC0xKTsKKyAgICAgICAgZW5jb2RlciA8PCBlbGVt
ZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoV2FsbFRpbWU6Om5hbigp
KS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKQEAgLTcxOCw3ICs3MTgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICp0aGlzID4+IHVuZGVybHlpbmdFbnVtVmFsdWU7CiAKICAgICAgICAgaWYg
KCFpc1ZhbGlkKCkgfHwgIWlzVmFsaWRFbnVtKHN0YXRpY19jYXN0PFQ+KHVuZGVybHlpbmdFbnVt
VmFsdWUpKSkKLSAgICAgICAgICAgIHZhbHVlID0gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
dmFsdWUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHZhbHVlID0g
c3RhdGljX2Nhc3Q8VD4odW5kZXJseWluZ0VudW1WYWx1ZSk7CiAKQEAgLTEwNzcsNyArMTA3Nyw3
IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVWMVNlc3Npb25IaXN0b3J5
KENGRGljdGlvbmFyeVJlZiBzZXNzaW9uSGlzCiAgICAgYXV0byBjdXJyZW50SW5kZXhOdW1iZXIg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHNlc3Np
b25IaXN0b3J5RGljdGlvbmFyeSwgc2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXhLZXkpKTsKICAg
ICBpZiAoIWN1cnJlbnRJbmRleE51bWJlcikgewogICAgICAgICAvLyBObyBjdXJyZW50IGluZGV4
IG1lYW5zIHRoZSBkaWN0aW9uYXJ5IHJlcHJlc2VudHMgYW4gZW1wdHkgc2Vzc2lvbi4KLSAgICAg
ICAgYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4ID0gV1RGOjpudWxsb3B0OworICAg
ICAgICBiYWNrRm9yd2FyZExpc3RTdGF0ZS5jdXJyZW50SW5kZXggPSBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIGJhY2tGb3J3YXJkTGlzdFN0YXRlLml0ZW1zID0geyB9OwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQppbmRleCBhMzM3NzNhYjljMGE0MWEyZjllYzM5ODZmZGM0MTBiMWI0YmJmODczLi4y
MTdlOWRjZjgwOTQyZjcyZjljNjI5NjRiNTEyZjZkMzliYzRlNGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTUxNSw3ICs1MTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6b3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZl
QXBwbGljYXRpb24oRnJhbWVJbmZvRGF0YQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQREZDb250
ZXh0TWVudShjb25zdCBXZWJLaXQ6OlBERkNvbnRleHRNZW51JiBjb250ZXh0TWVudSwgUERGUGx1
Z2luSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PGludDMyX3Q+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY29udGV4dE1l
bnUuaXRlbXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgCiAgICAgUmV0YWluUHRyPFdLUERGTWVudVRhcmdldD4gbWVudVRhcmdldCA9IGFkb3B0
TlMoW1tXS1BERk1lbnVUYXJnZXQgYWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8TlNNZW51
PiBuc01lbnUgPSBhZG9wdE5TKFtbTlNNZW51IGFsbG9jXSBpbml0XSk7CkBAIC01NTcsNyArNTU3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQREZDb250ZXh0TWVudShjb25zdCBXZWJLaXQ6
OlBERkNvbnRleHRNZW51JiBjb250ZXh0TWVudSwKICNlbmRpZgogICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIodGFnKTsKICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYkF1dGhuUHJvY2Vzcy9X
ZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDUxZTczYTZmMmY5NzJjNzY2
M2UyODYwMDJkNDlhNDdkMzhjMWRmMTUuLjY0Y2JhZmM5MzE5YmNmYTQ4MTVkYzk1ZjFlNTQ3ODQz
NmZhNGEyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViQXV0aG5Qcm9jZXNzL1dlYkF1
dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJBdXRo
blByb2Nlc3MvV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNjksMTIgKzY5
LDEyIEBAIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlSW52
YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjCiAKIHZvaWQgV2ViQXV0aG5Db25uZWN0aW9u
VG9XZWJQcm9jZXNzOjptYWtlQ3JlZGVudGlhbChWZWN0b3I8dWludDhfdD4mJiBoYXNoLCBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiYgb3B0aW9ucywgYm9vbCBwcm9jZXNzaW5n
VXNlckdlc3R1cmUsIFJlcXVlc3RDb21wbGV0aW9uSGFuZGxlciYmIGhhbmRsZXIpCiB7Ci0gICAg
aGFuZGxlUmVxdWVzdCh7IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIs
IFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBXVEY6
Om51bGxvcHQsIHsgfSwgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9
LCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBoYW5kbGVSZXF1ZXN0KHsgV1RGTW92ZShoYXNoKSwg
V1RGTW92ZShvcHRpb25zKSwgbnVsbHB0ciwgV2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdDo6
VW5hdmFpbGFibGUsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgeyB9LCBwcm9jZXNzaW5nVXNlckdl
c3R1cmUsIFN0cmluZygpLCBudWxscHRyIH0sIFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lk
IFdlYkF1dGhuQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0QXNzZXJ0aW9uKFZlY3Rvcjx1aW50
OF90PiYmIGhhc2gsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyYmIG9wdGlvbnMs
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBSZXF1ZXN0Q29tcGxldGlvbkhhbmRsZXImJiBo
YW5kbGVyKQogewotICAgIGhhbmRsZVJlcXVlc3QoeyBXVEZNb3ZlKGhhc2gpLCBXVEZNb3ZlKG9w
dGlvbnMpLCBudWxscHRyLCBXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJs
ZSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCB7IH0sIHByb2Nlc3NpbmdVc2VyR2VzdHVyZSwgU3Ry
aW5nKCksIG51bGxwdHIgfSwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgaGFuZGxlUmVxdWVzdCh7
IFdURk1vdmUoaGFzaCksIFdURk1vdmUob3B0aW9ucyksIG51bGxwdHIsIFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxhYmxlLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIHsgfSwg
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCBTdHJpbmcoKSwgbnVsbHB0ciB9LCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmhhbmRsZVJl
cXVlc3QoV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSYmIGRhdGEsIFJlcXVlc3RDb21wbGV0
aW9uSGFuZGxlciYmIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDIyMDNkNjhi
NzgxYzEzZTMxZDlhYzY4MGIzYWQ4ZDY4MGYwNTY3MjUuLmE0YjNmYzU0YmUwY2YxNWZlNWMyOWY0
YjEwNDRiZGU2MTE2ZWEyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIE9wdGlvbmFsPFN0cmluZz4gV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZWRQYXlt
ZW50TmV0d29yayhjb25zdCBTdHJpbmcmIHBhCiAKICAgICBhdXRvIHJlc3VsdCA9IG1fYXZhaWxh
YmxlUGF5bWVudE5ldHdvcmtzLT5maW5kKHBheW1lbnROZXR3b3JrKTsKICAgICBpZiAocmVzdWx0
ID09IG1fYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzLT5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXR1cm4gKnJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCBiMmVmYzhm
ZjhkM2IyM2YxOTE2NDFjNjFhOGYyMTNmMTBiMTNiMjdmLi4xM2ZjNTY1NGJhMzk2YzkxMmQ1OTNj
NTY5N2Q5MjA3NTFkNDgyM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpCiAgICAgICAgIEpTVmFs
dWVNYWtlTnVtYmVyKGNvbnRleHQsIGZyYW1lSUQudG9VSW50NjQoKSksCiAgICAgICAgIEpTVmFs
dWVNYWtlTnVtYmVyKGNvbnRleHQsIGNhbGxiYWNrSUQpLAogICAgICAgICBKU09iamVjdE1ha2VG
dW5jdGlvbldpdGhDYWxsYmFjayhjb250ZXh0LCBudWxscHRyLCBldmFsdWF0ZUphdmFTY3JpcHRD
YWxsYmFjayksCi0gICAgICAgIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIGNhbGxiYWNrVGlt
ZW91dC52YWx1ZU9yKC0xKSkKKyAgICAgICAgSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgY2Fs
bGJhY2tUaW1lb3V0LnZhbHVlX29yKC0xKSkKICAgICB9OwogCiAgICAgewpAQCAtNDE3LDcgKzQx
Nyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVX
aXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpCiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAg
ICAgICAgU3RyaW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyNSwyOSArNDI1LDI5
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpCiAKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lSUQg
PyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAmcGFnZS0+bWFp
bldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1l
LT5jb3JlRnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVDaGlsZEZy
YW1lID0gY29yZUZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQob3JkaW5hbCk7CiAgICAgaWYgKCFj
b3JlQ2hpbGRGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5k
RXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFt
ZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgV2ViRnJhbWUqIGNoaWxkRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
Y29yZUNoaWxkRnJhbWUpOwogICAgIGlmICghY2hpbGRGcmFtZSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
ZDo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6
OlBhZ2VJZGUKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90
Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdp
bmRvd05vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNDYzLDQxICs0NjMsNDEgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBh
Z2VJZGUKIAogICAgIGF1dG8qIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAo
IWZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIWlzVmFsaWROb2RlSGFuZGxlKG5vZGVIYW5kbGUpKSB7CiAgICAgICAgIFN0cmluZyBp
bnZhbGlkTm9kZUlkZW50aWZpZXJycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWROb2RlSWRlbnRpZmllcik7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlLCBXVEY6Om51
bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpbnZhbGlkTm9kZUlkZW50aWZpZXJy
cm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdl
YkNvcmU6OkVsZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1l
LCBub2RlSGFuZGxlKTsKICAgICBpZiAoIWNvcmVFbGVtZW50KSB7CiAgICAgICAgIFN0cmluZyBu
b2RlTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlOjpOb2RlTm90Rm91bmQpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihub2RlTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJh
c2U+KGNvcmVFbGVtZW50KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZv
dW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZUZyb21FbGVtZW50ID0gZG93bmNh
c3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U+KCpjb3JlRWxlbWVudCkuY29udGVudEZy
YW1lKCk7CiAgICAgaWYgKCFjb3JlRnJhbWVGcm9tRWxlbWVudCkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViRnJhbWUqIGZyYW1lRnJvbUVsZW1l
bnQgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lRnJvbUVsZW1lbnQpOwogICAg
IGlmICghZnJhbWVGcm9tRWxlbWVudCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFt
ZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFtZUZy
b21FbGVtZW50LT5mcmFtZUlEKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5k
b3dOb3RGb3VuZCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJy
b3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dO
b3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTEzLDI5ICs1MTMsMjkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKIAogICAgIGF1
dG8qIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpm
cmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9w
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFt
ZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJDb3Jl
OjpGcmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5zY29wZWRDaGlsZChu
YW1lKTsKICAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKCpjb3JlQ2hpbGRGcmFtZSk7CiAgICAgaWYgKCFjaGlsZEZyYW1lKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6
bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQog
CiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSQogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZv
dW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUs
IFdURjo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5k
RXJyb3JUeXBlLCBzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
NTEsMTcgKzU1MSwxNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQ
YXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSQogCiAgICAgYXV0byogZnJh
bWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQp
IDogJnBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3RkOjpudWxs
b3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkZyYW1lKiBwYXJlbnRGcmFt
ZSA9IGZyYW1lLT5wYXJlbnRGcmFtZSgpOwogICAgIGlmICghcGFyZW50RnJhbWUpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAogc3Rh
dGljIFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KFdlYkNvcmU6
OkVsZW1lbnQmIGVsZW1lbnQpCkBAIC02MTgsMjcgKzYxOCwyNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZwogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5kb3dOb3RG
b3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJv
ck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2lu
ZG93Tm90Rm91bmRFcnJvclR5cGUsIHsgfSwgV1RGOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCB7IH0sIHN0ZDo6bnVs
bG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogZnJhbWUg
PSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDog
JnBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJh
bWUoKSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgU3RyaW5nIGZy
YW1lTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBXVEY6Om51bGxvcHQsIGZhbHNlKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBzdGQ6
Om51bGxvcHQsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNW
YWxpZE5vZGVIYW5kbGUobm9kZUhhbmRsZSkpIHsKICAgICAgICAgU3RyaW5nIGludmFsaWROb2Rl
SWRlbnRpZmllcnJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBl
cnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkVycm9yTWVzc2FnZTo6SW52YWxpZE5vZGVJZGVudGlmaWVyKTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoaW52YWxpZE5vZGVJZGVudGlmaWVycnJvclR5cGUsIHsgfSwgV1RGOjpudWxsb3B0
LCBmYWxzZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmll
cnJyb3JUeXBlLCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogY29yZUVsZW1lbnQgPSBlbGVtZW50Rm9yTm9k
ZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOwogICAgIGlmICghY29yZUVsZW1lbnQpIHsKICAg
ICAgICAgU3RyaW5nIG5vZGVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBXVEY6Om51bGxvcHQs
IGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZU5vdEZvdW5kRXJyb3JUeXBl
LCB7IH0sIHN0ZDo6bnVsbG9wdCwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRl
RWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWcKIAogICAgIC8vIElmIHRo
ZSBlbGVtZW50IGlzIGVudGlyZWx5IG91dHNpZGUgdGhlIHZpZXdwb3J0LCBzdGlsbCBjYWxjdWxh
dGUgaXQncyBib3VuZHMuCiAgICAgaWYgKHZpc2libGVQb3J0aW9uT2ZFbGVtZW50UmVjdC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCByZXN1bHRF
bGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5kcywg
cmVzdWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWcKICAgICB9
CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCByZXN1bHRFbGVt
ZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJ
blZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2UKICAgICAgICAgLy8gb3B0aW9uU2VsZWN0ZWRCeVVzZXIoKSB3aWxsIGZpcmUgaW5wdXQg
YW5kIGNoYW5nZSBldmVudHMgaWYgbmVlZGVkLCBidXQgYWxsIG90aGVyIGV2ZW50cyBzaG91bGQg
YmUgZmlyZWQgbWFudWFsbHkgaGVyZS4KICAgICAgICAgc2VsZWN0RWxlbWVudC0+b3B0aW9uU2Vs
ZWN0ZWRCeVVzZXIob3B0aW9uRWxlbWVudC5pbmRleCgpLCB0cnVlLCBzZWxlY3RFbGVtZW50LT5t
dWx0aXBsZSgpKTsKICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnNldEZpbGVzRm9ySW5wdXRGaWxlVXBsb2FkKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgVmVjdG9yPFN0cmluZz4mJiBmaWxlbmFtZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpz
ZXRGaWxlc0ZvcklucHV0RmlsZVVwbG9hZChXZWJDb3JlOjpQYWdlSWRlbnRpZmkKICAgICAgICAg
ZmlsZU9iamVjdHMuYXBwZW5kKFdlYkNvcmU6OkZpbGU6OmNyZWF0ZSgmaW5wdXRFbGVtZW50LmRv
Y3VtZW50KCksIHBhdGgpKTsKICAgICBpbnB1dEVsZW1lbnQuc2V0RmlsZXMoV2ViQ29yZTo6Rmls
ZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3RzKSkpOwogCi0gICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwogfQogCiBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdEVsZW1lbnRSZWN0Rm9yU2Ny
ZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50LCBib29sIGNs
aXBUb1ZpZXdwb3J0KQpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6c25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQsIFdlYkNvcmU6OkludFJlY3QoZnJhbWUtPmNvcmVGcmFtZSgpLT5tYWluRnJhbWUoKS52
aWV3KCktPmRvY3VtZW50VG9DbGllbnRSZWN0KHNuYXBzaG90UmVjdCkpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQsIFdlYkNvcmU6OkludFJlY3QoZnJhbWUtPmNvcmVGcmFt
ZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmRvY3VtZW50VG9DbGllbnRSZWN0KHNuYXBzaG90UmVj
dCkpKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9y
RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtOTM0LDcgKzkzNCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29v
a2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJCiAgICAgaWYgKCFkb2N1
bWVudC5jb29raWVVUkwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHBhZ2UtPmNvcmVQYWdlKCktPmNv
b2tpZUphcigpLmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LmNvb2tpZVVSTCgpLCBm
b3VuZENvb2tpZXMpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmb3Vu
ZENvb2tpZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCwgZm91bmRDb29r
aWVzKTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtOTU2LDcgKzk1
Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3B0CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIHBhZ2UtPmNvcmVQYWdlKCktPmNvb2tp
ZUphcigpLmRlbGV0ZUNvb2tpZShkb2N1bWVudCwgZG9jdW1lbnQuY29va2llVVJMKCksIGNvb2tp
ZU5hbWUpOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDM0YWZhNDBhZmY2OWFjODMyNDM4NGE3
ZDZkMzZiMTA1NzNmNjFiMS4uMTIzZDUzOWM4MmE0NjUyM2U2ZWE4OGMwOTRjY2Q5YzFiN2ZiOWNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTE2NCw3ICsxNjQsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0
RGF0YVVSTEZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCBwcmVzZXJ2ZVJlc29sdXRp
b24sIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBWZWN0b3I8dWludDhf
dD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChVTkxJ
S0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKQEAgLTE5OCwxNyArMTk4LDE3IEBAIHByb3RlY3RlZDoKICAgICBPcHRpb25hbDxXZWJD
b3JlOjpQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZmZXIoY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZm
ZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNS
ZWN0KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBhdXRvIHBpeGVs
QnVmZmVyID0gV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShkZXN0aW5hdGlvbkZvcm1h
dCwgc3JjUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZSA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuYnl0ZUxlbmd0
aCgpOwogCiAgICAgICAgIElQQzo6VGltZW91dCB0aW1lb3V0ID0gNV9zOwogICAgICAgICBTaGFy
ZWRNZW1vcnkqIHNoYXJlZE1lbW9yeSA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5z
aGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcihkYXRhU2l6ZSwgdGltZW91dCk7CiAgICAgICAg
IGlmICghc2hhcmVkTWVtb3J5KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgYXV0byYgbXV0YWJsZVRo
aXMgPSBjb25zdF9jYXN0PFJlbW90ZUltYWdlQnVmZmVyUHJveHkmPigqdGhpcyk7CiAgICAgICAg
IG11dGFibGVUaGlzLm1fZHJhd2luZ0NvbnRleHQucmVjb3JkZXIoKS5nZXRQaXhlbEJ1ZmZlcihk
ZXN0aW5hdGlvbkZvcm1hdCwgc3JjUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKaW5kZXggNzk0YzhiYmYyYjgyNTg0ZWY2YzlkNmRjZDViMjNiODA5YzExZTNm
OC4uNzE5OGFkZTAxNjg2Y2UyMmEyMjc2ZTIyYmRkMjg5MzFkMTI1MTMwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtOTAsMTMgKzkwLDEzIEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3Nl
KEdQVVByb2Nlc3NDb25uZWN0CiAKICAgICBtX2lkZW50aWZpZXJzT2ZSZXVzYWJsZUhhbmRsZXMu
Y2xlYXIoKTsKICAgICBtX3NoYXJlZERpc3BsYXlMaXN0SGFuZGxlcy5jbGVhcigpOwotICAgIG1f
Y3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0Owot
ICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gV1RGOjpudWxsb3B0OworICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0
OworICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzID0gc3RkOjpudWxsb3B0Owog
ICAgIG1fcmVtYWluaW5nSXRlbXNUb0FwcGVuZEJlZm9yZVNlbmRpbmdXYWtldXAgPSAwOwogCiAg
ICAgaWYgKG1fZGVzdHJveUdldFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5VGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgbV9kZXN0cm95R2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnlUaW1lci5zdG9w
KCk7Ci0gICAgbV9nZXRQaXhlbEJ1ZmZlclNlbWFwaG9yZSA9IFdURjo6bnVsbG9wdDsKKyAgICBt
X2dldFBpeGVsQnVmZmVyU2VtYXBob3JlID0gc3RkOjpudWxsb3B0OwogICAgIG1fZ2V0UGl4ZWxC
dWZmZXJTaGFyZWRNZW1vcnlMZW5ndGggPSAwOwogICAgIG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRN
ZW1vcnkgPSBudWxscHRyOwogfQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpkZWxldGVBbGxGb250cygpCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciA9PSBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdlQnVmZmVySWRlbnRp
ZmllcikKLSAgICAgICAgbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KQEAgLTMwNyw3
ICszMDcsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c2VuZFdha2V1cE1l
c3NhZ2UoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZwogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6c2VuZERlZmVycmVkV2FrZXVwTWVzc2FnZUlmTmVlZGVkKCkKIHsKLSAg
ICBhdXRvIGFyZ3VtZW50cyA9IHN0ZDo6ZXhjaGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VB
cmd1bWVudHMsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBhcmd1bWVudHMgPSBzdGQ6OmV4Y2hh
bmdlKG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBzdGQ6Om51bGxvcHQpOwogICAg
IGlmICghYXJndW1lbnRzKQogICAgICAgICByZXR1cm47CiAKQEAgLTMyNiwxMSArMzI2LDExIEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkaWRBcHBlbmREYXRhKGNvbnN0IERp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySGFuCiAgICAgICAgIGlmIChtX2RlZmVycmVkV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cykgewogICAgICAgICAgICAgaWYgKHNoYXJlZEhhbmRsZS0+dHJ5VG9SZXN1
bWUoeyBtX2RlZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+b2Zmc2V0LCBtX2RlZmVycmVk
V2FrZXVwTWVzc2FnZUFyZ3VtZW50cy0+ZGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIu
dG9VSW50NjQoKSB9KSkgewogICAgICAgICAgICAgICAgIG1fcGFyYW1ldGVycy5yZXN1bWVEaXNw
bGF5TGlzdFNlbWFwaG9yZS5zaWduYWwoKTsKLSAgICAgICAgICAgICAgICBtX2RlZmVycmVkV2Fr
ZXVwTWVzc2FnZUFyZ3VtZW50cyA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBtX2Rl
ZmVycmVkV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAg
ICAgICBtX3JlbWFpbmluZ0l0ZW1zVG9BcHBlbmRCZWZvcmVTZW5kaW5nV2FrZXVwID0gMDsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIS0tbV9yZW1haW5pbmdJdGVtc1RvQXBwZW5kQmVmb3JlU2Vu
ZGluZ1dha2V1cCkgewogICAgICAgICAgICAgICAgIG1fZGVmZXJyZWRXYWtldXBNZXNzYWdlQXJn
dW1lbnRzLT5yZWFzb24gPSBHUFVQcm9jZXNzV2FrZXVwUmVhc29uOjpJdGVtQ291bnRIeXN0ZXJl
c2lzRXhjZWVkZWQ7Ci0gICAgICAgICAgICAgICAgc2VuZFdha2V1cE1lc3NhZ2UoKnN0ZDo6ZXhj
aGFuZ2UobV9kZWZlcnJlZFdha2V1cE1lc3NhZ2VBcmd1bWVudHMsIFdURjo6bnVsbG9wdCkpOwor
ICAgICAgICAgICAgICAgIHNlbmRXYWtldXBNZXNzYWdlKCpzdGQ6OmV4Y2hhbmdlKG1fZGVmZXJy
ZWRXYWtldXBNZXNzYWdlQXJndW1lbnRzLCBzdGQ6Om51bGxvcHQpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYU92ZXJyaWRlc0ZvclRlc3RpbmcuaAppbmRl
eCBlMzFmOWRhN2M5NzM5NjNjMzRiMmVhM2UyOWUxYWNkNmM2ZGZlMTkwLi4xZGM1OTBhNTU3OGU0
N2NiZWI4MzE1M2FiZDczNGNkYWFiOWQ3MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhT3ZlcnJpZGVzRm9yVGVzdGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nLmgK
QEAgLTUzLDIyICs1MywyMiBAQCBzdHJ1Y3QgTWVkaWFPdmVycmlkZXNGb3JUZXN0aW5nIHsKICAg
ICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IHN5c3RlbUhhc0FDOwogICAgICAgICBkZWNv
ZGVyID4+IHN5c3RlbUhhc0FDOwogICAgICAgICBpZiAoIXN5c3RlbUhhc0FDKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+IHN5c3RlbUhhc0JhdHRlcnk7CiAg
ICAgICAgIGRlY29kZXIgPj4gc3lzdGVtSGFzQmF0dGVyeTsKICAgICAgICAgaWYgKCFzeXN0ZW1I
YXNCYXR0ZXJ5KQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8Ym9vbD4+
IHZwOUhhcmR3YXJlRGVjb2RlckRpc2FibGVkOwogICAgICAgICBkZWNvZGVyID4+IHZwOUhhcmR3
YXJlRGVjb2RlckRpc2FibGVkOwogICAgICAgICBpZiAoIXZwOUhhcmR3YXJlRGVjb2RlckRpc2Fi
bGVkKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6U2Ny
ZWVuRGF0YU92ZXJyaWRlcz4+IHZwOVNjcmVlblNpemVBbmRTY2FsZTsKICAgICAgICAgZGVjb2Rl
ciA+PiB2cDlTY3JlZW5TaXplQW5kU2NhbGU7CiAgICAgICAgIGlmICghdnA5U2NyZWVuU2l6ZUFu
ZFNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAgICAgICAgICAgICAqc3lz
dGVtSGFzQUMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggYjk1ZTU5MWIxODJk
ZTM0NjNlZTdlMThmMDU1YTEzZmFjOTQwZTliNC4uYWZjZDRiNWIzMWNkMDVmNTA0ZjVmYjk2NTA0
MjhkNzUyNzIzYzcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtOTg1LDcg
Kzk4NSw3IEBAIE9wdGlvbmFsPGJvb2w+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6d291bGRU
YWludE9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYKIAogICAgIE9wdGlvbmFsPGJvb2w+IHdv
dWxkVGFpbnQ7CiAgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OldvdWxkVGFpbnRPcmlnaW4ob3JpZ2luLmRhdGEoKSksIE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpXb3VsZFRhaW50T3JpZ2luOjpSZXBseSh3b3Vs
ZFRhaW50KSwgbV9pZCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBtX3dvdWxkVGFpbnRPcmlnaW5DYWNoZS5hZGQob3Jp
Z2luLmRhdGEoKSwgd291bGRUYWludCk7CiAKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE0oTGVnYWN5Q0RNKiBjZG0pCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNz
aW9uKQogewogICAgIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLT50eXBlKCkgIT0gQ0RNU2Vzc2lv
blR5cGVSZW1vdGUpIHsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24oV1RGOjpudWxsb3B0KSwgbV9p
ZCk7CisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpTZXRMZWdhY3lDRE1TZXNzaW9uKHN0ZDo6bnVsbG9wdCksIG1faWQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5o
CmluZGV4IDZmYzhiYThiNjlkOTA4OTY3NWNiNTZlN2VlNDZhMjA4ODFlYWI5MmMuLmFiNTZkNjNh
YzM4MWU0YmE5YWRiZWQ4NTBjMmQ4OTYxMzFkNTkzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9TZXNz
aW9uQ29uZmlndXJhdGlvbi5oCkBAIC02MCw0MiArNjAsNDIgQEAgc3RydWN0IFJlbW90ZUF1ZGlv
U2Vzc2lvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHJvdXRpbmdD
b250ZXh0VUlEOwogICAgICAgICBkZWNvZGVyID4+IHJvdXRpbmdDb250ZXh0VUlEOwogICAgICAg
ICBpZiAoIXJvdXRpbmdDb250ZXh0VUlEKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
ZmxvYXQ+IHNhbXBsZVJhdGU7CiAgICAgICAgIGRlY29kZXIgPj4gc2FtcGxlUmF0ZTsKICAgICAg
ICAgaWYgKCFzYW1wbGVSYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8c2l6ZV90
PiBidWZmZXJTaXplOwogICAgICAgICBkZWNvZGVyID4+IGJ1ZmZlclNpemU7CiAgICAgICAgIGlm
ICghYnVmZmVyU2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gbnVt
YmVyT2ZPdXRwdXRDaGFubmVsczsKICAgICAgICAgZGVjb2RlciA+PiBudW1iZXJPZk91dHB1dENo
YW5uZWxzOwogICAgICAgICBpZiAoIW51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCi0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgICAgICBPcHRpb25hbDxzaXplX3Q+IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxz
OwogICAgICAgICBkZWNvZGVyID4+IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzOwogICAg
ICAgICBpZiAoIW1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8c2l6ZV90PiBwcmVmZXJyZWRCdWZmZXJTaXplOwogICAgICAgICBkZWNv
ZGVyID4+IHByZWZlcnJlZEJ1ZmZlclNpemU7CiAgICAgICAgIGlmICghcHJlZmVycmVkQnVmZmVy
U2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGlzTXV0ZWQ7CiAgICAg
ICAgIGRlY29kZXIgPj4gaXNNdXRlZDsKICAgICAgICAgaWYgKCFpc011dGVkKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaXNBY3RpdmU7CiAgICAgICAgIGRlY29kZXIgPj4g
aXNBY3RpdmU7CiAgICAgICAgIGlmICghaXNBY3RpdmUpCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBy
ZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKnJvdXRpbmdDb250ZXh0VUlEKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAppbmRleCA3
Mzc1ZmI0MTZlOTQ0ZjIzZTE0ODM3YzZjYjUxNzU2YWE2MTU1NDdkLi40MjI0NDZiOWE4MTI1YzRh
ZjZmOWQzMDNkMTUwYjUyZGY5NzA1MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCkBAIC01OCw3ICs1OCw3IEBAIFJlbW90ZUNETTo6
UmVtb3RlQ0RNKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVDRE1J
ZGVudGlmaWVyJiYKIHZvaWQgUmVtb3RlQ0RNOjpnZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uLCBMb2NhbFN0b3JhZ2VBY2Nl
c3MgYWNjZXNzLCBTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsK
ICAgICBpZiAoIW1fZmFjdG9yeSkgewotICAgICAgICBjYWxsYmFjayhXVEY6Om51bGxvcHQpOwor
ICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oCmluZGV4IGU2NDUwODRiY2Q2MGM0NWNlNzZmM2EwM2NmZDNm
NzgzZjE2OTM0OTEuLmRjYjQxYmFhMTliZjE2NWUxZDNiNjQyMDE2Yjk5YTRhMDk3MjU3YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNQ29uZmlndXJhdGlvbi5oCkBAIC01MiwyMiArNTIsMjIgQEAgc3RydWN0IFJlbW90ZUNE
TUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRpb25hbDxWZWN0b3I8QXRvbVN0cmluZz4+IHN1
cHBvcnRlZEluaXREYXRhVHlwZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkSW5pdERh
dGFUeXBlczsKICAgICAgICAgaWYgKCFzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICAgICAgT3B0aW9uYWw8VmVjdG9yPEF0b21TdHJpbmc+PiBzdXBwb3J0ZWRSb2J1c3Ru
ZXNzZXM7CiAgICAgICAgIGRlY29kZXIgPj4gc3VwcG9ydGVkUm9idXN0bmVzc2VzOwogICAgICAg
ICBpZiAoIXN1cHBvcnRlZFJvYnVzdG5lc3NlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlv
bmFsPGJvb2w+IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOwogICAgICAgICBkZWNvZGVyID4+
IHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzOwogICAgICAgICBpZiAoIXN1cHBvcnRzU2VydmVy
Q2VydGlmaWNhdGVzKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc3VwcG9y
dHNTZXNzaW9uczsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c1Nlc3Npb25zOwogICAgICAg
ICBpZiAoIXN1cHBvcnRzU2Vzc2lvbnMpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sK
ICAgICAgICAgICAgIFdURk1vdmUoKnN1cHBvcnRlZEluaXREYXRhVHlwZXMpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZUNv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VDb25maWd1cmF0aW9uLmgKaW5kZXggYTg2NTgwYmYxODYzMWJiM2JjODI2YjUz
YWYxZjJkNTQ4NmU0NjI1NC4uZTg4OTYxMmFlZDA5YzEzOWQyZTY5MDZiOGNkNTI5NjVhMmZjODgz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbi5oCkBAIC00Niw3ICs0Niw3
IEBAIHN0cnVjdCBSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24gewogICAgICAgICBPcHRp
b25hbDxTdHJpbmc+IGtleVN5c3RlbTsKICAgICAgICAgZGVjb2RlciA+PiBrZXlTeXN0ZW07CiAg
ICAgICAgIGlmICgha2V5U3lzdGVtKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7CiAg
ICAgICAgICAgICBXVEZNb3ZlKCprZXlTeXN0ZW0pLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
Y3BwCmluZGV4IDBhN2M2OGFlNTEwZGU0M2U4MjVjNDI0YzdkMmY0OGUzYzhjYzEzYTYuLjkxYWQ0
ZjkyOWNhNWRmZmQ5YzFiMmU2MzY0ZTM4OWI5Nzk0ZTk1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbi5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYg
c2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNl
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9y
eSkgewotICAgICAgICBjYWxsYmFjayhmYWxzZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCwgRmFpbGVkKTsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXAKIHZv
aWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNz
aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewotICAgICAg
ICBjYWxsYmFjayhXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBGYWls
ZWQsIFNlc3Npb25Mb2FkRmFpbHVyZTo6T3RoZXIpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBGYWlsZWQsIFNlc3Npb25Mb2FkRmFp
bHVyZTo6T3RoZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDUsMTIgKzEwNSwx
MiBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6Y2xvc2VTZXNzaW9uKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklkLCBDbG9zZVNlc3Npbwogdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Np
b246OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSB0eXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFtX2ZhY3RvcnkpIHsKLSAgICAgICAgY2FsbGJhY2soeyB9LCBXVEY6Om51bGxvcHQsIEZhaWxl
ZCk7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBGYWlsZWQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlz
LCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVk
ZWQpIG11dGFibGUgewotICAgICAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gcmVhbE1l
c3NhZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+
PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVz
c2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdl
LnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNj
ZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXggYWIyMmVhYWIzM2ZiNTVm
YTkwMzllMjc2MDM0MjQ5NjhhYjZlYTdlNC4uZGU5ZGMzM2YwOWQ1Njg3NTk3NTg1NzI5NDI5N2Y1
ZTdiZDE3NWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBXZWJDb3JlOjpSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qg
ZmluYWw7CiAgICAgU3RyaW5nIHV0aSgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBmaWxlbmFt
ZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiBob3RTcG90KCkgY29uc3QgZmluYWwgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBz
dGQ6Om51bGxvcHQ7IH0KICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIFdlYkNvcmU6OkludFNpemUgZnJh
bWVTaXplQXRJbmRleChzaXplX3QsIFdlYkNvcmU6OlN1YnNhbXBsaW5nTGV2ZWwgPSBXZWJDb3Jl
OjpTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZh
Y3RvcnkuY3BwCmluZGV4IGNiOTFlNTZlM2E1ZTE5ZjQwMTI1MmRlODUyZTk4MjgwZDk0YTdiODUu
LjhhMTk3ZTFkYTZkYjljY2U2N2NjNzVhN2ZlM2JjMTVmY2RiZWNjNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgICAgICBy
ZXR1cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKIAogICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7
Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lz
dGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAgICBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIHN0ZDo6bnVs
bG9wdCksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5
U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOwogICAgIG1fc3VwcG9ydHNLZXlTeXN0ZW1D
YWNoZS5zZXQoa2V5U3lzdGVtLCBzdXBwb3J0ZWQpOwogICAgIHJldHVybiBzdXBwb3J0ZWQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaAppbmRleCBjMDZmODgzMjQ5ZDUx
OGM3OTkxM2M1YzJlNzQ4NWEzN2MxYWY4NDEyLi4wZGU5NWVkNWVkMjZjZjhhNmQwNzA0NmY2NjRj
ZjE1OGVkMWQ4YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgKQEAg
LTYyLDQyICs2Miw0MiBAQCBzdHJ1Y3QgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHsK
ICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBlbmdpbmVEZXNjcmlwdGlvbjsKICAgICAgICAgZGVj
b2RlciA+PiBlbmdpbmVEZXNjcmlwdGlvbjsKICAgICAgICAgaWYgKCFlbmdpbmVEZXNjcmlwdGlv
bikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bUR1cmF0aW9u
VG9DYWNoZU1lZGlhVGltZTsKICAgICAgICAgZGVjb2RlciA+PiBtYXhpbXVtRHVyYXRpb25Ub0Nh
Y2hlTWVkaWFUaW1lOwogICAgICAgICBpZiAoIW1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRp
bWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c1NjYW5uaW5n
OwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzU2Nhbm5pbmc7CiAgICAgICAgIGlmICghc3Vw
cG9ydHNTY2FubmluZykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IHN1cHBv
cnRzRnVsbHNjcmVlbjsKICAgICAgICAgZGVjb2RlciA+PiBzdXBwb3J0c0Z1bGxzY3JlZW47CiAg
ICAgICAgIGlmICghc3VwcG9ydHNGdWxsc2NyZWVuKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8Ym9vbD4gc3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlOwogICAgICAgICBkZWNvZGVyID4+
IHN1cHBvcnRzUGljdHVyZUluUGljdHVyZTsKICAgICAgICAgaWYgKCFzdXBwb3J0c1BpY3R1cmVJ
blBpY3R1cmUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBzdXBwb3J0c0Fj
Y2VsZXJhdGVkUmVuZGVyaW5nOwogICAgICAgICBkZWNvZGVyID4+IHN1cHBvcnRzQWNjZWxlcmF0
ZWRSZW5kZXJpbmc7CiAgICAgICAgIGlmICghc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGNhblBsYXlUb1dpcmVsZXNzUGxh
eWJhY2tUYXJnZXQ7CiAgICAgICAgIGRlY29kZXIgPj4gY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFj
a1RhcmdldDsKICAgICAgICAgaWYgKCFjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KQot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkSWdub3JlSW50cmluc2lj
U2l6ZTsKICAgICAgICAgZGVjb2RlciA+PiBzaG91bGRJZ25vcmVJbnRyaW5zaWNTaXplOwogICAg
ICAgICBpZiAoIXNob3VsZElnbm9yZUludHJpbnNpY1NpemUpCi0gICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAg
ICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmVuZ2luZURlc2NyaXB0aW9uKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclN0YXRlLmgKaW5kZXggMWY3OWNlNTM4MTdiMDVhNzY1YzJhN2NmOTNjZWI0Mzc1
NzUyMzA3My4uYTYyN2E3MzcwYzJiYzFmMjUzOTFjMGJlYjIxMDhlYmRlYWIxMjk5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclN0YXRlLmgKQEAgLTEwNywxNDMgKzEwNywxNDMgQEAgc3RydWN0IFJlbW90ZU1l
ZGlhUGxheWVyU3RhdGUgewogICAgICAgICBPcHRpb25hbDxNZWRpYVRpbWU+IGR1cmF0aW9uOwog
ICAgICAgICBkZWNvZGVyID4+IGR1cmF0aW9uOwogICAgICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1lPiBtaW5UaW1lU2Vla2FibGU7CiAg
ICAgICAgIGRlY29kZXIgPj4gbWluVGltZVNlZWthYmxlOwogICAgICAgICBpZiAoIW1pblRpbWVT
ZWVrYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPE1lZGlhVGltZT4gbWF4VGlt
ZVNlZWthYmxlOwogICAgICAgICBkZWNvZGVyID4+IG1heFRpbWVTZWVrYWJsZTsKICAgICAgICAg
aWYgKCFtYXhUaW1lU2Vla2FibGUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxNZWRp
YVRpbWU+IHN0YXJ0RGF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBzdGFydERhdGU7CiAgICAgICAg
IGlmICghc3RhcnREYXRlKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8TWVkaWFUaW1l
PiBzdGFydFRpbWU7CiAgICAgICAgIGRlY29kZXIgPj4gc3RhcnRUaW1lOwogICAgICAgICBpZiAo
IXN0YXJ0VGltZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gbGFuZ3Vh
Z2VPZlByaW1hcnlBdWRpb1RyYWNrOwogICAgICAgICBkZWNvZGVyID4+IGxhbmd1YWdlT2ZQcmlt
YXJ5QXVkaW9UcmFjazsKICAgICAgICAgaWYgKCFsYW5ndWFnZU9mUHJpbWFyeUF1ZGlvVHJhY2sp
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHdpcmVsZXNzUGxheWJhY2tU
YXJnZXROYW1lOwogICAgICAgICBkZWNvZGVyID4+IHdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1l
OwogICAgICAgICBpZiAoIXdpcmVsZXNzUGxheWJhY2tUYXJnZXROYW1lKQotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZFJh
bmdlczsKICAgICAgICAgZGVjb2RlciA+PiBidWZmZXJlZFJhbmdlczsKICAgICAgICAgaWYgKCFi
dWZmZXJlZFJhbmdlcykKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGU7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobmV0d29ya1N0YXRlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZTsKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZWFkeVN0YXRlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtb3ZpZUxvYWRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OldpcmVsZXNzUGxheWJhY2tUYXJnZXRUeXBlIHdpcmVsZXNz
UGxheWJhY2tUYXJnZXRUeXBlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHdpcmVsZXNz
UGxheWJhY2tUYXJnZXRUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkZsb2F0U2l6ZT4gbmF0dXJhbFNpemU7CiAgICAgICAgIGRlY29kZXIgPj4gbmF0dXJhbFNp
emU7CiAgICAgICAgIGlmICghbmF0dXJhbFNpemUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxkb3VibGU+IG1heEZhc3RGb3J3YXJkUmF0ZTsKICAgICAgICAgZGVjb2RlciA+PiBtYXhG
YXN0Rm9yd2FyZFJhdGU7CiAgICAgICAgIGlmICghbWF4RmFzdEZvcndhcmRSYXRlKQotICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICAgICAgT3B0aW9uYWw8ZG91YmxlPiBtaW5GYXN0UmV2ZXJzZVJhdGU7CiAgICAg
ICAgIGRlY29kZXIgPj4gbWluRmFzdFJldmVyc2VSYXRlOwogICAgICAgICBpZiAoIW1pbkZhc3RS
ZXZlcnNlUmF0ZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGRvdWJsZT4gc2Vla2Fi
bGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICAgICAgZGVjb2RlciA+PiBzZWVrYWJs
ZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lOwogICAgICAgICBpZiAoIXNlZWthYmxlVGltZVJh
bmdlc0xhc3RNb2RpZmllZFRpbWUpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxkb3Vi
bGU+IGxpdmVVcGRhdGVJbnRlcnZhbDsKICAgICAgICAgZGVjb2RlciA+PiBsaXZlVXBkYXRlSW50
ZXJ2YWw7CiAgICAgICAgIGlmICghbGl2ZVVwZGF0ZUludGVydmFsKQotICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IHRvdGFsQnl0ZXM7CiAgICAgICAgIGRlY29kZXIgPj4g
dG90YWxCeXRlczsKICAgICAgICAgaWYgKCF0b3RhbEJ5dGVzKQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6VmlkZW9QbGF5YmFja1F1YWxpdHlNZXRyaWNz
Pj4gdmlkZW9NZXRyaWNzOwogICAgICAgICBkZWNvZGVyID4+IHZpZGVvTWV0cmljczsKICAgICAg
ICAgaWYgKCF2aWRlb01ldHJpY3MpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxPcHRp
b25hbDxib29sPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGRl
Y29kZXIgPj4gd291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGlmICgh
d291bGRUYWludERvY3VtZW50U2VjdXJpdHlPcmlnaW4pCi0gICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxib29sPiBwYXVzZWQ7CiAgICAgICAgIGRlY29kZXIgPj4gcGF1c2VkOwogICAgICAg
ICBpZiAoIXBhdXNlZCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGNhblNh
dmVNZWRpYURhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gY2FuU2F2ZU1lZGlhRGF0YTsKICAgICAg
ICAgaWYgKCFjYW5TYXZlTWVkaWFEYXRhKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaGFzQXVkaW87CiAgICAgICAgIGRlY29kZXIgPj4gaGFzQXVkaW87CiAgICAgICAgIGlm
ICghaGFzQXVkaW8pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNWaWRl
bzsKICAgICAgICAgZGVjb2RlciA+PiBoYXNWaWRlbzsKICAgICAgICAgaWYgKCFoYXNWaWRlbykK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc0Nsb3NlZENhcHRpb25zOwog
ICAgICAgICBkZWNvZGVyID4+IGhhc0Nsb3NlZENhcHRpb25zOwogICAgICAgICBpZiAoIWhhc0Ns
b3NlZENhcHRpb25zKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZTsKICAgICAgICAgZGVjb2RlciA+PiBoYXNBdmFpbGFibGVWaWRlb0Zy
YW1lOwogICAgICAgICBpZiAoIWhhc0F2YWlsYWJsZVZpZGVvRnJhbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxib29sPiB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKICAg
ICAgICAgZGVjb2RlciA+PiB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKICAgICAgICAg
aWYgKCF3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAg
IE9wdGlvbmFsPGJvb2w+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOwogICAgICAgICBkZWNvZGVy
ID4+IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luOwogICAgICAgICBpZiAoIWhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkUGFzc0NP
UlNBY2Nlc3NDaGVjazsKICAgICAgICAgZGVjb2RlciA+PiBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNr
OwogICAgICAgICBpZiAoIWRpZFBhc3NDT1JTQWNjZXNzQ2hlY2spCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
ICAgICByZXR1cm4ge3sKICAgICAgICAgICAgIFdURk1vdmUoKmR1cmF0aW9uKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAppbmRleCAxMjA3OGUyMzk3N2I2NDEyMWRj
M2YzN2JhMWYxMDM0NWYwZTE4MWE4Li44MjM4ZTY0MzBlZDdmOTQ3ODkyMWM2MGI3MWMzYjViNDgw
ODYyYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC0x
MzIsMTIgKzEzMiwxMiBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZU92
ZXJsYXk6OkFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KFdlYktp
dDo6V2ViUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBXZWJDb3JlOjpGbG9hdFBvaW50IGxvY2F0
aW9uKSBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKCFtX2NsaWVudC5hY3Rpb25Db250ZXh0Rm9y
UmVzdWx0QXRQb2ludCkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIFdLQnVuZGxlUmFuZ2VIYW5kbGVS
ZWYgYXBpUmFuZ2UgPSBudWxscHRyOwogICAgICAgICBhdXRvIGFjdGlvbkNvbnRleHQgPSAoRERB
Y3Rpb25Db250ZXh0ICopbV9jbGllbnQuYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQodG9B
UEkoJnBhZ2VPdmVybGF5KSwgV0tQb2ludE1ha2UobG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCkp
LCAmYXBpUmFuZ2UsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIGlmICghYWN0
aW9uQ29udGV4dCB8fCAhYXBpUmFuZ2UpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4geyB7
IGFjdGlvbkNvbnRleHQsIG1ha2VTaW1wbGVSYW5nZShXZWJLaXQ6OnRvSW1wbChhcGlSYW5nZSkt
PmNvcmVSYW5nZSgpKSB9IH07CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmgKaW5kZXggZjMzMWJlMDMyMzQ2ZDhiNDVhYWI3ZjJiYmRkNzAxODZjNTg1NTkz
Mi4uODliNjNmZjg2MTkwNGIwMzVhYWViYzQxZTMzMGYyYjZjOTk3YmFiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICAvLyBOb3RlOiBUaGVzZSBzaG91bGQgb25seSBiZSBvcGVyYXRpb25zIHRoYXQgYXJl
IG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgV2ViQ29yZTo6SW50UmVjdCBlbGVtZW50
Qm91bmRzKCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZW5kZXJSZWN0KGJvb2wqKTsKLSAgICBS
ZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zLCBib29sIHNob3Vs
ZEV4Y2x1ZGVPdmVyZmxvdywgY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiBiaXRtYXBXaWR0aCA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgUmVmUHRyPFdlYkltYWdlPiByZW5kZXJlZEltYWdlKFNuYXBzaG90
T3B0aW9ucywgYm9vbCBzaG91bGRFeGNsdWRlT3ZlcmZsb3csIGNvbnN0IE9wdGlvbmFsPGZsb2F0
PiYgYml0bWFwV2lkdGggPSBzdGQ6Om51bGxvcHQpOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlPiB2aXNpYmxlUmFuZ2UoKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1l
bnRWYWx1ZUZvclVzZXIoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRIVE1MSW5wdXRFbGVt
ZW50U3BlbGxjaGVja0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTQ3NGZhMjkyMmFhNmM3MmRhMTE4NDRlNGFlY2IyZDE1
YjQ3OTMxZS4uYWM5NGNjMGI4MmU4MTI4Zjc3N2ExMDk2NjAyNzNjYjI3ODUyNTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIE9wdGlvbmFsPEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VFeHRlCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3I6
OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogLy8gV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6Y3JlYXRlVGFiRm9yRXh0ZW5z
aW9uKGNvbnN0IEluc3BlY3Rvcjo6RQogdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3Rvcjo6RXh0ZW5z
aW9uSUQmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgT3B0
aW9uYWw8VVJMPiYgZnJhbWVVUkwsIGNvbnN0IE9wdGlvbmFsPFVSTD4mIGNvbnRleHRTZWN1cml0
eU9yaWdpbiwgY29uc3QgT3B0aW9uYWw8Ym9vbD4mIHVzZUNvbnRlbnRTY3JpcHRDb250ZXh0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+JiwgY29uc3QgT3B0aW9uYWw8SW5zcGVj
dG9yOjpFeHRlbnNpb25FcnJvcj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
IW1fZnJvbnRlbmRDbGllbnQpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6
Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMjM2LDIwICsyMzYsMjAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKIAogICAgIG1fZnJv
bnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhS
ZXN1bHRBc3luYygiZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1l
bnRzKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hl
cjo6RXZhbHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVu
c2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8qIGZyb250ZW5kR2xvYmFsT2JqZWN0ID0gd2Vha1RoaXMtPm1f
ZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgICAgIGlmICghZnJvbnRlbmRHbG9iYWxPYmplY3QpIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChh
dXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlRXh0ZW5zaW9uRXJyb3JGcm9tRXZhbHVh
dGlvblJlc3VsdChyZXN1bHQpKSB7CiAgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkRldGFpbHMg
PSByZXN1bHQudmFsdWUoKS5lcnJvcigpOwogICAgICAgICAgICAgTE9HKEluc3BlY3RvciwgIklu
dGVybmFsIGVycm9yIGVuY291bnRlcmVkIHdoaWxlIGV2YWx1YXRpbmcgdXBvbiB0aGUgZnJvbnRl
bmQ6IGF0ICVzOiVkOiVkOiAlcyIsIGV4Y2VwdGlvbkRldGFpbHMuc291cmNlVVJMLnV0ZjgoKS5k
YXRhKCksIGV4Y2VwdGlvbkRldGFpbHMubGluZU51bWJlciwgZXhjZXB0aW9uRGV0YWlscy5jb2x1
bW5OdW1iZXIsIGV4Y2VwdGlvbkRldGFpbHMubWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgV1RGOjpudWxsb3B0LCBwYXJzZWRFcnJvcik7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIHN0ZDo6bnVsbG9wdCwgcGFyc2Vk
RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI1Nyw3ICsyNTcs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb24oY29uc3QgSW5zcGVjdAogICAgICAgICBhdXRvIG9iamVjdFJlc3VsdCA9
IHdlYWtUaGlzLT51bndyYXBFdmFsdWF0aW9uUmVzdWx0QXNPYmplY3QocmVzdWx0KTsKICAgICAg
ICAgaWYgKCFvYmplY3RSZXN1bHQpIHsKICAgICAgICAgICAgIExPRyhJbnNwZWN0b3IsICJVbmV4
cGVjdGVkIG5vbi1vYmplY3QgdmFsdWUgcmV0dXJuZWQgZnJvbSBJbnNwZWN0b3JGcm9udGVuZEFQ
SS5jcmVhdGVUYWJGb3JFeHRlbnNpb24oKS4iKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgV1RGOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5h
bEVycm9yKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0
LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQocmVzdWx0LnZhbHVlKCkpOwpAQCAt
MjY1LDIyICsyNjUsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgSlNDOjpK
U1ZhbHVlIGVycm9yUGF5bG9hZCA9IG9iamVjdFJlc3VsdC0+Z2V0KGZyb250ZW5kR2xvYmFsT2Jq
ZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoZnJvbnRlbmRHbG9iYWxPYmplY3QtPnZt
KCksICJlcnJvciJfcykpOwogICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yUGF5bG9hZC5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6
RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgfSwgc3RkOjpudWxsb3B0LCBJbnNwZWN0b3I6OkV4dGVuc2lvbkVycm9yOjpJ
bnRlcm5hbEVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7IGVy
cm9yUGF5bG9hZC50b1dURlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkgfSwgV1RGOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWls
cyB7IGVycm9yUGF5bG9hZC50b1dURlN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVjdCkgfSwgc3Rk
OjpudWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHRQYXlsb2FkID0gb2JqZWN0UmVzdWx0LT5nZXQoZnJvbnRlbmRHbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhmcm9udGVuZEdsb2JhbE9iamVj
dC0+dm0oKSwgInJlc3VsdCJfcykpOwogICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSgqZnJvbnRlbmRHbG9iYWxPYmplY3QsIHJlc3VsdFBheWxvYWQpOwogICAgICAgICBpZiAoIXNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9
LCBXVEY6Om51bGxvcHQsIEluc3BlY3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3Ip
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBzdGQ6Om51bGxvcHQsIEluc3Bl
Y3Rvcjo6RXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJlc3Vs
dFZhbHVlLT5kYXRhKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCksIHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KIApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWxvYWRGb3JFeHRlbnNpb24oY29u
c3QgSW5zcGVjdG9yOjpFeHRlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNjU3
NzRlMTQ1OWU4YzQyMDM0MTgwMWNhYTYxZjA2MDg2ZDgyZGUzOC4uNTI0MjM0OGE5MjhjZmVlODY1
NDAwMjVmZjA0NDQ0MTRiNzZiYWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgUmVzCiAgICAgICAgIGlmIChsb2FkZXIpCiAgICAgICAgICAg
ICBzY2hlZHVsZUxvYWQoKmxvYWRlciwgcmVzb3VyY2UuZ2V0KCksIHJlZmVycmVyUG9saWN5ID09
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKFJFTEVBU0VfTE9HX0lTX0FMTE9XRUQsIE5ldHdv
cmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVzb3Vy
Y2VMb2FkZXIiLCB0aGlzLCBmcmFtZS0+cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpLCBmcmFtZS0+ZnJhbWVJRCgpLnZhbHVlT3IoRnJhbWVJZGVudGlmaWVyKCkp
LnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoUkVMRUFTRV9MT0dfSVNf
QUxMT1dFRCwgTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0l
IiBQUkl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZTogVW5hYmxlIHRvIGNy
ZWF0ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1lLT5wYWdlSUQoKS52YWx1ZV9vcihQ
YWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpLCBmcmFtZS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShsb2FkZXIpKTsKICAgICB9KTsKIH0KQEAgLTE4MSwxMyArMTgxLDEzIEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VM
b2FkZXIsIENhY2hlZFJlc291CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJh
bWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKICAgICBpZiAoYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyQ2xpZW50KSkKLSAgICAg
ICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYlBhZ2VQcm94eUlEKCkudmFsdWVPcihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHsgfSk7
CisgICAgICAgIHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJQYWdlUHJveHlJRCgpLnZhbHVlX29yKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgeyB9KTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZWxzZSBpZiAoaXM8U2Vy
dmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxvYWRlckNsaWVudCkpCiAgICAgICAg
IHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWVMb2FkZXJDbGllbnQpLndlYlBhZ2VQcm94eUlEKCk7
CiAjZW5kaWYKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGll
bnQucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwotICAgIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoRnJh
bWVJZGVudGlmaWVyIHsgfSk7CisgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZyYW1l
TG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSk7CisgICAg
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCku
dmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQgPSBpZGVudGlmaWVyOwogCiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCkBAIC01NjUsMTEgKzU2NSwxMSBAQCBPcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVn
eTo6U3luY0xvYWRSZXN1bHQ+IFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hybwog
ICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyAmd2ViRnJhbWVMb2Fk
ZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8qIGhhbmRsZXIgPSB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1l
KHJlcXVlc3QudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOwogICAg
IGlmICghaGFuZGxlcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9j
ZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCBzeW5jIGxvYWQgdG8gVVJMICcl
cycgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlci4iLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggYjJlYjQ3ZTM5MTFlNTQ2NmZjNjgzNTVjN2MxZGFlYzZi
MjM3MzY3NS4uMDA2Nzg5OTA5MzJjNDM4MmJiNjFmZjAwNDk4NGM0YjM5OTBmYjRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRp
YyBOUEVycm9yIHBhcnNlUG9zdEJ1ZmZlcihib29sIGlzRmlsZSwgY29uc3QgY2hhciAqYnVmZmVy
LCB1aW50MzJfdCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbnRlbnRMZW5ndGgg
PSBoZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDb250ZW50TGVuZ3RoKTsKIAogICAg
ICAgICAgICAgICAgIGlmICghY29udGVudExlbmd0aC5pc051bGwoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52YWx1ZU9yKDApLCBkYXRhTGVuZ3RoKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0ZDo6bWluKHBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVuc2lnbmVkPihjb250ZW50TGVuZ3RoKS52YWx1ZV9vcigwKSwgZGF0
YUxlbmd0aCk7CiAgICAgICAgICAgICAgICAgaGVhZGVyRmllbGRzLnJlbW92ZShIVFRQSGVhZGVy
TmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAgICAgICAgICAgICBwb3N0QnVmZmVyICs9IGxv
Y2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KaW5kZXggZTQ3YTQ0Y2M0N2U5OTFkZWU5OGY5YjRhMzZjNWEyY2RmNmYwZDA2Ny4u
ZmFiMDBkYWRjNjY0NjM1M2M2ODJmOTE5YjA1ZTFlYWFjMmIzMWJjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0yMDEzLDEz
ICsyMDEzLDEzIEBAIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUGx1
Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIEludFBvaW50IFBERlBsdWdpbjo6Y29u
dmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
CiAgICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKHBvaW50LngoKSwgc2l6ZSgp
LmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICByZXR1cm4gbV9yb290Vmlld1RvUGx1Z2luVHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZU9yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBJbnRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZy
b21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewogICAgIElu
dFJlY3QgcmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlT3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdElu
UGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zv
cm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3RJblBs
dWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVJv
b3RWaWV3VG9QREZWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTIwNTIsNyAr
MjA1Miw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVPcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOwogICAgIGF1dG8qIHBhZ2Ug
PSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIHsgfTsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRy
eURpZENoYW5nZShjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29u
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290
Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVPcihBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJh
bnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpOwogICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6
cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CkBAIC0yNjA2LDcgKzI2
MDYsNyBAQCB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbigpCiB2b2lk
IFBERlBsdWdpbjo6d3JpdGVJdGVtc1RvUGFzdGVib2FyZChOU1N0cmluZyAqcGFzdGVib2FyZE5h
bWUsIE5TQXJyYXkgKml0ZW1zLCBOU0FycmF5ICp0eXBlcykKIHsKICAgICBhdXRvIHBhc3RlYm9h
cmRUeXBlcyA9IG1ha2VWZWN0b3I8U3RyaW5nPih0eXBlcyk7Ci0gICAgYXV0byBwYWdlSWRlbnRp
ZmllciA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+Y29yZUZyYW1lKCkgPyBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+cGFnZUlEKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgYXV0byBwYWdlSWRlbnRpZmllciA9
IG1fZnJhbWUgJiYgbV9mcmFtZS0+Y29yZUZyYW1lKCkgPyBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
cGFnZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQ2NF90IG5ld0NoYW5nZUNvdW50Owog
ICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNDU5OWY1
N2FiYmMwNjBmNmE4ODdjZDBjNmExYTVlZmYzNDE4YjBiNS4uYjZmZDQ0NDA3YzI5Nzc1NGJiMjFi
ZDQwNmVlYTIwZGRlN2M2ZDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTExNTcsNyArMTE1Nyw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3QoVVJMUmVxdWVzdCogcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IocmVxdWVzdC0+YWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAgICBV
c2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPmFsbG93UG9wdXBz
KCkgPyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAKICAgICAvLyBGaXJzdCwgdHJ5IHRvIGZpbmQgYSB0
YXJnZXQgZnJhbWUuCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gZnJhbWUtPmxvYWRlcigpLmZp
bmRGcmFtZUZvck5hdmlnYXRpb24ocmVxdWVzdC0+dGFyZ2V0KCkpOwpAQCAtMTQzNyw3ICsxNDM3
LDcgQEAgYm9vbCBQbHVnaW5WaWV3OjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0
IFN0cmluZyYgc2NyaXB0U3RyaW5nLCBOUFZhcmkKICAgICAvLyBwcm90ZWN0IHRoZSBwbHVnLWlu
IHZpZXcgZnJvbSBkZXN0cnVjdGlvbi4KICAgICBOUFJ1bnRpbWVPYmplY3RNYXA6OlBsdWdpblBy
b3RlY3RvciBwbHVnaW5Qcm90ZWN0b3IoJm1fbnBSdW50aW1lT2JqZWN0TWFwKTsKIAotICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoYWxsb3dQb3B1cHMgPyBPcHRpb25h
bDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6IFdU
Rjo6bnVsbG9wdCk7CisgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihh
bGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNz
aW5nVXNlckdlc3R1cmUpIDogc3RkOjpudWxsb3B0KTsKICAgICByZXR1cm4gbV9ucFJ1bnRpbWVP
YmplY3RNYXAuZXZhbHVhdGUobnBPYmplY3QsIHNjcmlwdFN0cmluZywgcmVzdWx0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMTNmM2I5NjY1ZTgzNWU5NjRlYmQwZTI2NGJmNDcwMjE1
M2ExMWNlOC4uYWI1NzBiZmUyOTNmNjRhYzcyNzMwM2M5YWVmNmYwNzg0NDNmMzY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246Om1hdGNoUmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwg
Y28KICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIGlmICghbWF5SGF2ZVNlcnZp
Y2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKHRvcE9yaWdpbikpIHsKLSAgICAgICAgY2FsbGJh
Y2soV1RGOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpjbGVhcigpCiB7CiAgICAgYXV0byByZWdpc3RyYXRpb25UYXNrcyA9IFdURk1v
dmUobV9vbmdvaW5nTWF0Y2hSZWdpc3RyYXRpb25UYXNrcyk7CiAgICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IHJlZ2lzdHJhdGlvblRhc2tzLnZhbHVlcygpKQotICAgICAgICBjYWxsYmFjayhXVEY6
Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogCiAgICAgYXV0byBn
ZXRSZWdpc3RyYXRpb25UYXNrcyA9IFdURk1vdmUobV9vbmdvaW5nR2V0UmVnaXN0cmF0aW9uc1Rh
c2tzKTsKICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogZ2V0UmVnaXN0cmF0aW9uVGFza3MudmFs
dWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDFjYmM4
MDYxZjQ0MmU0OGYxZDVhNDZjNjIyYTVlOGQ3MDcxNzAzODUuLjg1NDFkZjNjYjIyMzljYWQ4YWM3
ZDU2ZjNlNDYyZDBkNWE3MWVjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICAg
ICAgbV9ibG9iTG9hZGVyLmVtcGxhY2UoKnRoaXMpOwogICAgICAgICBhdXRvIGxvYWRlciA9IHNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+Y3JlYXRlQmxvYkxvYWRlcigqbV9ibG9iTG9hZGVyLCBi
bG9iVVJMKTsKICAgICAgICAgaWYgKCFsb2FkZXIpIHsKLSAgICAgICAgICAgIG1fYmxvYkxvYWRl
ciA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIG1fYmxvYkxvYWRlciA9IHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgICAgIGRpZEZhaWwoaW50ZXJuYWxFcnJvcihibG9iVVJMKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKIHsKICAgICBk
aWRGaW5pc2goKTsKIAotICAgIHN0ZDo6ZXhjaGFuZ2UobV9ibG9iTG9hZGVyLCBXVEY6Om51bGxv
cHQpOworICAgIHN0ZDo6ZXhjaGFuZ2UobV9ibG9iTG9hZGVyLCBzdGQ6Om51bGxvcHQpOwogfQog
CiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IDA0MjlkYWQ2YWY2YTg5OTJiOWUyZWY5Nzc1MmFlZjE5ZWRkMzkyOWQuLmZiNjM5ZWE2NzFhY2Zk
MWQ0MjFmN2Q4ZGVkNDk4ZTgwZDBlZjU2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OmFkZFVzZXJTY3JpcHRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJgogCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclNjcmlwdChJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkJiB3b3JsZCwgVXNlclNjcmlwdCYmIHVzZXJTY3JpcHQpCiB7Ci0gICAgYWRkVXNl
clNjcmlwdEludGVybmFsKHdvcmxkLCBXVEY6Om51bGxvcHQsIFdURk1vdmUodXNlclNjcmlwdCks
IEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseTo6Tm8pOworICAgIGFkZFVzZXJTY3JpcHRJbnRl
cm5hbCh3b3JsZCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHVzZXJTY3JpcHQpLCBJbmplY3RVc2Vy
U2NyaXB0SW1tZWRpYXRlbHk6Ok5vKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OnJlbW92ZVVzZXJTY3JpcHRXaXRoVVJMKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmIHdv
cmxkLCBjb25zdCBVUkwmIHVybCkKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbChJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcgogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlclN0eWxlU2hl
ZXQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYgd29ybGQsIFVzZXJTdHlsZVNoZWV0JiYgdXNl
clN0eWxlU2hlZXQpCiB7Ci0gICAgYWRkVXNlclN0eWxlU2hlZXRJbnRlcm5hbCh3b3JsZCwgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7CisgICAgYWRkVXNlclN0eWxlU2hl
ZXRJbnRlcm5hbCh3b3JsZCwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHVzZXJTdHlsZVNoZWV0KSk7
CiAgICAgaW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXNJbkFsbFBh
Z2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBkNWUy
MGY0MTE3YWE1MWVjNmJiNzEzZjE2MDc3YWNmMWRiZTJhYmMyLi44MzNjODJjNTRkMzdhZTAxNWEx
ODFhN2I5MzI0ZjcwNTMwN2M2OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShj
b25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEt
PmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxl
bWVudC5maWxlTGVuZ3RoLnZhbHVlT3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1l
bnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+
YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVt
ZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1l
bnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJl
YWJsZUJpdG1hcFV0aWxpdGllcy5oCmluZGV4IDgwYmRlNWMzMDEzYjBmYjhjMzg1ZDM3NWU1Yjky
MTdmZmM2NjBkNjUuLmFmM2Q5ZThhZDRiNmU2ZDQxNGQ0MjM1NDhhMzI5NDcyMmYxNzE3NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFi
bGVCaXRtYXBVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmgKQEAgLTM4LDYgKzM4LDYgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiAKIGVudW0gY2xhc3MgQWxs
b3dBbmltYXRlZEltYWdlcyA6IGJvb2wgeyBObywgWWVzIH07Ci1SZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6UmVuZGVySW1hZ2UmLCBPcHRpb25h
bDxXZWJDb3JlOjpGbG9hdFNpemU+IHNjcmVlblNpemVJblBpeGVscyA9IFdURjo6bnVsbG9wdCwg
QWxsb3dBbmltYXRlZEltYWdlcyA9IEFsbG93QW5pbWF0ZWRJbWFnZXM6Olllcyk7CitSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCaXRtYXAoV2ViQ29yZTo6UmVuZGVySW1h
Z2UmLCBPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFNpemU+IHNjcmVlblNpemVJblBpeGVscyA9IHN0
ZDo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlcyA9IEFsbG93QW5pbWF0ZWRJbWFnZXM6Olll
cyk7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDRlN2I5ODFlMTIxMWJmZjI5ZTdk
NzMwMmEyMGQ1M2NiN2JmZDczYTUuLjMyNTNhYTBhYjgzODlmMjk1ZjJlYWU2OTdhMDAyYTQ4NDFj
MTEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUqIGZyYW1lKQogewogICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGZyYW1lID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZy
YW1lKSA6IG51bGxwdHI7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRGcmFt
ZUNoYW5nZWQod2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBX
VEY6Om51bGxvcHQpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQod2ViRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
d2ViRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQpLCBtX3BhZ2UuaWRlbnRpZmllcigp
KTsKIH0KIAogUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1l
LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBhMDBkZGM4YTY2OTQ4Nzk3MzEwNDkyMWE5NzljZDJlODk3MjA1MDA4Li4zZWExY2EwNjcw
YmNjMDQ0NGQxMDQxMjE3NGU2OGVmMDk4YzllMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlm
aWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViUGFnZVByb3h5SUQoKSBjb25zdAogICAgIGlm
IChtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPndlYlBh
Z2VQcm94eUlkZW50aWZpZXIoKTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdApAQCAtMTM0LDcgKzEzNCw3IEBAIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKICAg
ICBpZiAobV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5p
ZGVudGlmaWVyKCk7CiAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZyYW1lSUQoKSBjb25zdApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRldGFjaGVkRnJvbVBhcmVudDIoKQogICAgIGlmIChtX2ZyYW1lU3BlY2lm
aWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcikgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZSgKICAgICAgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVu
dGlmaWVyLT5mcmFtZUlELCBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllci0+
cGFnZUlEKSwgMCk7Ci0gICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlm
aWVyID0gV1RGOjpudWxsb3B0OworICAgICAgICBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
SWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAjZW5kaWYKIApAQCAtNDM2LDcgKzQz
Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENoYW5nZURvY3Vt
ZW50KGNvbnN0IFVSTCYgY3VycmVudFVybCwgY29uCiAgICAgaWYgKG1fZnJhbWVTcGVjaWZpY1N0
b3JhZ2VBY2Nlc3NJZGVudGlmaWVyICYmICFXZWJDb3JlOjphcmVSZWdpc3RyYWJsZURvbWFpbnNF
cXVhbChjdXJyZW50VXJsLCBuZXdVcmwpKSB7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVtb3ZlU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKAogICAgICAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50
aWZpZXItPmZyYW1lSUQsIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyLT5w
YWdlSUQpLCAwKTsKLSAgICAgICAgbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZp
ZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG1fZnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NJ
ZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogICAgIH0KICNlbmRpZgogfQpAQCAtODQ4LDcgKzg0
OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlv
biksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRl
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJG
UkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlIGZhaWxlZCIpOwotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBXVEY6Om51
bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9
LCB7IH0gfSk7CiAgICAgfQogfQogCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgTmF2aWdhdAogCiAgICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+
ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pc01haW5GcmFtZSgpLCBtX2ZyYW1lLT5pbmZvKCksIHJlcXVl
c3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7CiAgICAg
ICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBpZ25vcmluZyBiZWNhdXNl
IG9mIGZhaWxpbmcgdG8gc2VuZCBzeW5jIElQQyIpOwotICAgICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVz
dElkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwg
eyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6bnVsbG9w
dCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTEwMjcsNyArMTAyNyw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0CiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1v
ZGU6OkFzeW5jaHJvbm91cyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9h
ZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBC
b2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0
ZW5lcklEKSkpIHsKICAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjogaWdu
b3JpbmcgYmVjYXVzZSBvZiBmYWlsaW5nIHRvIHNlbmQgYXN5bmMgSVBDIik7Ci0gICAgICAgIG1f
ZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lv
biB7IHJlcXVlc3RJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6
bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggNmIxODhiYjk3NTViMzk3YzVi
YjlhNjc0NzMwMzc2ZDQ4Y2Q0Y2Q2NC4uNWM4YzA5ZDdmZTYzMWQxZDQwZjUzODljZWEwN2Y2MTAx
NjIxNzNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6OnNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29s
IGVuYWJsZWQpCiAKIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJHZW9sb2Nh
dGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnQ6
OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uJiBnZW9sb2NhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggNDk1NDA0M2JjMDgxMTdmNWU3MjcwMjAyYmNhMTBj
OThlMmYzYWJmNy4uYTY5ZGQ2NTIzYjFjZjZkYzlmNWFkNThjNjlkOWQzY2M1YjE1Y2MxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBCbG9i
UmVnaXN0cnkqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlQmxvYlJlZ2lzdHJ5KCkKIHN0
YXRpYyBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXIoY29uc3QgUGFzdGVi
b2FyZENvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgaWYgKCFpczxQYWdlUGFzdGVib2FyZENvbnRl
eHQ+KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIGRvd25jYXN0PFBhZ2VQYXN0ZWJvYXJkQ29u
dGV4dD4oKmNvbnRleHQpLnBhZ2VJRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaAppbmRleCAwMjUzOGNkM2IwNjg3ZTVlYmY4YzdmZjY0MTA3MjhlZGMwYmJiZTFiLi5mNDc1
Y2IzM2VhODk3NDJjYTRlMzM3ZWNkNTYwYzhmYzkwMzk0NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2UuaApAQCAtNTYsMjcgKzU2LDI3IEBAIE9wdGlvbmFsPFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlPiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kCiAgICAgT3B0aW9uYWw8U3RyaW5nPiB2b2ljZVVSSTsKICAgICBkZWNvZGVyID4+IHZvaWNl
VVJJOwogICAgIGlmICghdm9pY2VVUkkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5hbWU7
CiAgICAgZGVjb2RlciA+PiBuYW1lOwogICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFs
PFN0cmluZz4gbGFuZzsKICAgICBkZWNvZGVyID4+IGxhbmc7CiAgICAgaWYgKCFsYW5nKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8Ym9vbD4gbG9jYWxTZXJ2aWNlOwogICAgIGRlY29kZXIgPj4gbG9jYWxT
ZXJ2aWNlOwogICAgIGlmICghbG9jYWxTZXJ2aWNlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8Ym9vbD4g
ZGVmYXVsdExhbmc7CiAgICAgZGVjb2RlciA+PiBkZWZhdWx0TGFuZzsKICAgICBpZiAoIWRlZmF1
bHRMYW5nKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHt7IFdURk1vdmUoKnZvaWNlVVJJKSwgV1RGTW92ZSgq
bmFtZSksIFdURk1vdmUoKmxhbmcpLCBXVEZNb3ZlKCpsb2NhbFNlcnZpY2UpLCBXVEZNb3ZlKCpk
ZWZhdWx0TGFuZykgfX07fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ2xpYi9XZWJFZGl0b3JDbGllbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3Bw
CmluZGV4IDQ4NWYxZmQwOTk2OTAxMTEzNGU1Nzc2OTVkYzJiMDRkM2IxZmQxM2UuLjBhNTEzYmYy
ZWVkYzk2OTBlMmY5ZmMzMTVlMmYzMWI1ZDQwMTZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVkaXRvckNsaWVudEdMaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9nbGliL1dlYkVk
aXRvckNsaWVudEdMaWIuY3BwCkBAIC00Niw4ICs0Niw4IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpkaWREaXNwYXRjaElucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50JiBldmVudCkKICAg
ICBBU1NFUlQoZnJhbWUpOwogCiAgICAgaWYgKGNvbnN0IGF1dG8mIHVuZGVybGluZXMgPSBwbGF0
Zm9ybUV2ZW50LT5wcmVlZGl0VW5kZXJsaW5lcygpKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2VTdGFy
dCA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZVN0YXJ0KCkudmFsdWVPcigw
KTsKLSAgICAgICAgYXV0byByYW5nZUxlbmd0aCA9IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRTZWxl
Y3Rpb25SYW5nZUxlbmd0aCgpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VTdGFydCA9
IHBsYXRmb3JtRXZlbnQtPnByZWVkaXRTZWxlY3Rpb25SYW5nZVN0YXJ0KCkudmFsdWVfb3IoMCk7
CisgICAgICAgIGF1dG8gcmFuZ2VMZW5ndGggPSBwbGF0Zm9ybUV2ZW50LT5wcmVlZGl0U2VsZWN0
aW9uUmFuZ2VMZW5ndGgoKS52YWx1ZV9vcigwKTsKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnNl
dENvbXBvc2l0aW9uKHBsYXRmb3JtRXZlbnQtPnRleHQoKSwgdW5kZXJsaW5lcy52YWx1ZSgpLCB7
IH0sIHJhbmdlU3RhcnQsIHJhbmdlU3RhcnQgKyByYW5nZUxlbmd0aCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb25maXJtQ29tcG9zaXRpb24ocGxhdGZvcm1FdmVudC0+
dGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCA3
OGYxZGQxMDk1NzEwNWUyMTU2NmE4MjNmMmEyNTBjNTg5NjEzYjA0Li40ZWQzZWY5NTA1ZjUxZjMy
ODU1NDMwMTQ5MmFjNWE0ZTY5MjRkY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJv
bGxlclByb3h5Lm1tCkBAIC03OCwxNyArNzgsMTcgQEAgT3B0aW9uYWw8VGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5OjpSYW5nZUFuZE9mZnNldD4gVGV4dENoZWNraW5nQ29udHJvbGxlclByb3gK
IAogICAgIGF1dG8gcm9vdCA9IGZyYW1lU2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc2VsZWN0aW9u
TGl2ZVJhbmdlID0gc2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKCFzZWxl
Y3Rpb25MaXZlUmFuZ2UpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBzZWxlY3Rpb25SYW5nZSA9IFNpbXBsZVJhbmdl
IHsgKnNlbGVjdGlvbkxpdmVSYW5nZSB9OwogCiAgICAgYXV0byBzY29wZSA9IG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cygqcm9vdCk7CiAgICAgaW50NjRfdCBhZGp1c3RlZFN0YXJ0TG9j
YXRpb24gPSBjaGFyYWN0ZXJDb3VudCh7IHNjb3BlLnN0YXJ0LCBzZWxlY3Rpb25SYW5nZS5zdGFy
dCB9KSArIG9mZnNldDsKICAgICBpZiAoYWRqdXN0ZWRTdGFydExvY2F0aW9uIDwgMCkKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICBhdXRvIGFkanVzdGVkU2VsZWN0aW9uQ2hhcmFjdGVyUmFuZ2UgPSBDaGFyYWN0ZXJSYW5nZSB7
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihhZGp1c3RlZFN0YXJ0TG9jYXRpb24pLCBsZW5ndGggfTsK
IAogICAgIHJldHVybiB7IHsgcmVzb2x2ZUNoYXJhY3RlclJhbmdlKHNjb3BlLCBhZGp1c3RlZFNl
bGVjdGlvbkNoYXJhY3RlclJhbmdlKSwgYWRqdXN0ZWRTZWxlY3Rpb25DaGFyYWN0ZXJSYW5nZS5s
b2NhdGlvbiB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Ry
YXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggZTk5NDU3Yzc0MjMyMWI1M2Ux
ZjZlYTVkYzkwZGRlYTg2NTIzZWI4NC4uYmM2ZDkzN2JkNjJjMWM5YTgwMTA4MGYyNDJiNDBkYTZk
NGM4MGMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJh
d2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKEdyYXBoaWNzTGF5CiAgICAgYXV0byBjaGFuZ2VXaW5kb3dTY3JlZW4gPSBbJl0gewog
ICAgICAgICAvLyBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCB3ZSBnZXQgYSB1bmlxdWUgRGlzcGxh
eVJlZnJlc2hNb25pdG9yIHBlci1EcmF3aW5nQXJlYSAobmVjZXNzYXJ5IGJlY2F1c2UgVGhyZWFk
ZWREaXNwbGF5UmVmcmVzaE1vbml0b3IKICAgICAgICAgLy8gaXMgZHJpdmVuIGJ5IHRoZSBUaHJl
YWRlZENvbXBvc2l0b3Igb2YgdGhlIGRyYXdpbmcgYXJlYSksIGdpdmUgZWFjaCBwYWdlIGEgdW5p
cXVlIERpc3BsYXlJRCBkZXJpdmVkIGZyb20gV2ViUGFnZSdzIHVuaXF1ZSBJRC4KLSAgICAgICAg
bV93ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShtX2xheWVyVHJlZUhvc3QtPmRpc3BsYXlJ
RCgpLCBXVEY6Om51bGxvcHQpOworICAgICAgICBtX3dlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hh
bmdlKG1fbGF5ZXJUcmVlSG9zdC0+ZGlzcGxheUlEKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfTsK
IAogICAgIEFTU0VSVCghbV9sYXllclRyZWVIb3N0KTsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lk
IERyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljczo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCkKICAgICBtX2Rpc2NhcmRQcmV2aW91c0xheWVyVHJlZUhvc3RUaW1lci5zdGFydE9u
ZVNob3QoNV9zKTsKIAogICAgIC8vIEFsd2F5cyB1c2UgdGhlIHByaW1hcnkgZGlzcGxheSBJRCAo
MCkgd2hlbiBub3QgaW4gYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbW9kZS4KLSAgICBtX3dlYlBh
Z2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKDAsIFdURjo6bnVsbG9wdCk7CisgICAgbV93ZWJQYWdl
LndpbmRvd1NjcmVlbkRpZENoYW5nZSgwLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgbV9kaXJ0eVJl
Z2lvbiA9IG1fd2ViUGFnZS5ib3VuZHMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBkZTY3MjNiNzk0ZTkyMDgzNGU1
NDg4MDU5NGZjYTJiMzA5NDRhNzg2Li5iNjI5OGQ1ZGQ3ZjQ2YTdmOGE1ZjQyMTM3MDIwN2FhNTdj
M2RjNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENU
ZXN0aW5nQVBJLmNwcApAQCAtMjE0LDEyICsyMTQsMTIgQEAgc3RhdGljIE9wdGlvbmFsPHVpbnQ2
NF90PiBjb252ZXJ0VG9VaW50NjQoSlNDOjpKU1ZhbHVlIGpzVmFsdWUpCiAgICAgaWYgKGpzVmFs
dWUuaXNOdW1iZXIoKSkgewogICAgICAgICBkb3VibGUgdmFsdWUgPSBqc1ZhbHVlLmFzTnVtYmVy
KCk7CiAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdHJ1bmModmFsdWUpICE9IHZhbHVlKQotICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAgICAgaWYgKGpzVmFsdWUuaXNC
aWdJbnQoKSkKICAgICAgICAgcmV0dXJuIEpTQzo6SlNCaWdJbnQ6OnRvQmlnVUludDY0KGpzVmFs
dWUpOwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogSlNPYmplY3RSZWYgSlNJUENTZW1hcGhvcmU6OmNyZWF0ZUpTV3JhcHBlcihKU0NvbnRl
eHRSZWYgY29udGV4dCkKQEAgLTc0OCwxMCArNzQ4LDEwIEBAIE9wdGlvbmFsPE9iamVjdElkZW50
aWZpZXI8T2JqZWN0SWRlbnRpZmllclR5cGU+PiBnZXRPYmplY3RJZGVudGlmaWVyRnJvbVByb3Bl
cnR5CiB7CiAgICAgYXV0byBqc1Byb3BlcnR5VmFsdWUgPSBqc09iamVjdC0+Z2V0KGdsb2JhbE9i
amVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+dm0oKSwgcHJv
cGVydHlOYW1lKSk7CiAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gbnVt
YmVyID0gY29udmVydFRvVWludDY0KGpzUHJvcGVydHlWYWx1ZSk7CiAgICAgaWYgKCFudW1iZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPE9iamVjdElkZW50aWZpZXJUeXBl
PigqbnVtYmVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZS5tbQppbmRleCAxZjQ0ZDI4NTQ2ODIyZDA0NTVhNTI2ZDIyNmY1YzZkN2Zk
MmQ1NzExLi5lMjU1MTAxMDZlOTEwOGE3ODFjNjQ4MzJmZWRmODIxYTJjYjU3NjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQpAQCAt
MTIzLDMyICsxMjMsMzIgQEAgc3RhdGljIE9wdGlvbmFsPFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4+
IGRlY29kZVRpbWluZ0Z1bmN0aW9uKElQQzo6RGVjb2RlciYgZGVjb2QKIHsKICAgICBUaW1pbmdG
dW5jdGlvbjo6VGltaW5nRnVuY3Rpb25UeXBlIHR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh0eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb247
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVu
Y3Rpb246CiAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gTGluZWFyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpzdGF0aWNfY2FzdDxMaW5lYXJU
aW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uLmdldCgpKSkpCi0gICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpDdWJpY0JlemllckZ1bmN0aW9u
OgogICAgICAgICB0aW1pbmdGdW5jdGlvbiA9IEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgpOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpzdGF0aWNfY2FzdDxDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24uZ2V0KCkpKSkKLSAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246
CiAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCk7
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKnN0YXRpY19jYXN0PFN0ZXBzVGltaW5nRnVu
Y3Rpb24qPih0aW1pbmdGdW5jdGlvbi5nZXQoKSkpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3ByaW5nRnVuY3Rpb246CiAgICAgICAgIHRp
bWluZ0Z1bmN0aW9uID0gU3ByaW5nVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKCpzdGF0aWNfY2FzdDxTcHJpbmdUaW1pbmdGdW5jdGlvbio+KHRp
bWluZ0Z1bmN0aW9uLmdldCgpKSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC0xOTQsNjcgKzE5NCw2NyBAQCBPcHRpb25hbDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
OjpQcm9wZXJ0aWVzPiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZQogewogICAgIFBs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5UGF0aCkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHByb3BlcnRpZXMuYW5pbWF0aW9uVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHByb3BlcnRpZXMuYmVnaW5UaW1lKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocHJvcGVydGllcy5kdXJhdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHByb3BlcnRpZXMudGltZU9mZnNldCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBy
b3BlcnRpZXMucmVwZWF0Q291bnQpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9w
ZXJ0aWVzLnNwZWVkKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5m
aWxsTW9kZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMudmFsdWVG
dW5jdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBib29sIGhhc1RpbWluZ0Z1bmN0aW9uOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFzVGltaW5nRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGhhc1RpbWluZ0Z1
bmN0aW9uKSB7CiAgICAgICAgIGlmIChhdXRvIHRpbWluZ0Z1bmN0aW9uID0gZGVjb2RlVGltaW5n
RnVuY3Rpb24oZGVjb2RlcikpCiAgICAgICAgICAgICBwcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9u
ID0gV1RGTW92ZSgqdGltaW5nRnVuY3Rpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMuYXV0b1JldmVyc2VzKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5yZW1vdmVkT25Db21wbGV0
aW9uKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5hZGRpdGl2ZSkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1
bmN0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMuaGFzRXhw
bGljaXRCZWdpblRpbWUpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwcm9wZXJ0aWVz
LmtleVZhbHVlcykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHByb3BlcnRpZXMua2V5
VGltZXMpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgdWludDY0X3QgbnVtVGltaW5nRnVuY3Rpb25zOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobnVtVGltaW5nRnVuY3Rpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBpZiAobnVt
VGltaW5nRnVuY3Rpb25zKSB7CiAgICAgICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobnVtVGltaW5nRnVuY3Rpb25zKTsKQEAgLTI2MywxMiArMjYz
LDEyIEBAIE9wdGlvbmFsPFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+IFBs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlCiAgICAgICAgICAgICBpZiAoYXV0byB0aW1p
bmdGdW5jdGlvbiA9IGRlY29kZVRpbWluZ0Z1bmN0aW9uKGRlY29kZXIpKQogICAgICAgICAgICAg
ICAgIHByb3BlcnRpZXMudGltaW5nRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCp0
aW1pbmdGdW5jdGlvbikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocHJvcGVydGllcy5hbmlt
YXRpb25zKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiBXVEZNb3ZlKHByb3BlcnRpZXMpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCmluZGV4
IGVjZGE2M2IwYzIyZGVmYThlN2ViYTE4MTg4MDk2ZjE0NTg5MzAzMWMuLjJkOGVkNTdmZWIwOWM2
ODY3ZjU4MmUyODI1MTlhNzE0NGEzZWFhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpidWlsZFRyYW5zYWN0aW9uKFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbgogLy8gTm90aWZpY2F0aW9uIGZyb20gdGhlIFVJIHByb2Nlc3Mg
dGhhdCB3ZSBzY3JvbGxlZC4KIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9s
bFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgc3luY0xheWVyUG9zaXRpb24pCiB7Ci0gICAg
YXBwbHlTY3JvbGxVcGRhdGUobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgV1RGOjpudWxsb3B0LCBT
Y3JvbGxUeXBlOjpVc2VyLCBzeW5jTGF5ZXJQb3NpdGlvbiA/IFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOworICAg
IGFwcGx5U2Nyb2xsVXBkYXRlKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIHN0ZDo6bnVsbG9wdCwg
U2Nyb2xsVHlwZTo6VXNlciwgc3luY0xheWVyUG9zaXRpb24gPyBTY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uOjpTeW5jIDogU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U2V0KTsKIH0K
IAogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3VycmVudFNuYXBQb2ludEluZGlj
ZXNDaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1bnNpZ25lZCBob3Jpem9u
dGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAK
aW5kZXggZTE2MGNlYTYwMTEzMDMwMTg0M2ZiZDAyZTFlM2JjOTEyYzlhNmZiMS4uZDZhMDA3ZmVm
MGZjZjdlYWNlYjJhMWFlY2I4ZGNiMzMzZjY4NjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHAKQEAgLTE1Miw3ICsxNTIsNyBAQCBPcHRpb25hbDxzdGQ6OnBhaXI8ZG91Ymxl
LCBkb3VibGU+PiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb21wdXRlVGV4dExlZwog
CiAgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV93ZWJQYWdlLm1haW5GcmFtZSgpLT5k
b2N1bWVudCgpKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgZG9jdW1lbnQtPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKaW5kZXggOTc3ZDY5OWMxZDFkOWNjZjkyMDYzNDdjODA2NjJjMTc0ZjUyOGY3OS4uZWEzNWU0
OWVmYjUyNDJlYjc3MTA0MTM2YTI2YWYzNjEzZGMxZGI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYg
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNhY2hlTGlzdENvdW50c0lmTmVjZXNzCiAKIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNsZWFyQ2FjaGVkTGlzdENvdW50cygpCiB7Ci0gICAg
bV9jYWNoZWRCYWNrRm9yd2FyZExpc3RDb3VudHMgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9jYWNo
ZWRCYWNrRm9yd2FyZExpc3RDb3VudHMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDI1ZDllZmM1MzljOGI3YjIxYTcwNDFi
Y2YxODIzMDg2OGY4Y2M3NzYuLjRlNTQ1OTUxZjgyZjI0OWMxY2U3MTY4YmU3ZWY3ODBkZTQxZGRj
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
SmFyLmNwcApAQCAtMjM4LDggKzIzOCw4IEBAIGJvb2wgV2ViQ29va2llSmFyOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1CiAgICAg
ICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5mcmFtZUlEKCkpIDog
V1RGOjpudWxsb3B0OwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSB3ZWJG
cmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgpID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5wYWdlKCkt
PmlkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwod2ViRnJhbWUtPmZy
YW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
d2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2Ft
ZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUElu
TmV0d29ya1Byb2Nlc3MsIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHdlYkZy
YW1lKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29v
a2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKaW5kZXggMTM0MjI5MzMzNTI2NmRjMjk5MDllMDYxYTk2MTg3MDYxZjIzY2ZkZS4uYjcy
ZmQ5MjA2NjU3Y2U3YmYyNDc4MjRiNzRjMTdiMjYwZDk2MDIyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIEZy
YW1lSW5mb0RhdGEgV2ViRnJhbWU6OmluZm8oKSBjb25zdAogICAgICAgICBSZXNvdXJjZVJlcXVl
c3QodXJsKCkpLAogICAgICAgICBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShtX2NvcmVG
cmFtZS5nZXQoKSksCiAgICAgICAgIG1fZnJhbWVJRCwKLSAgICAgICAgcGFyZW50ID8gT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiB7IHBhcmVudC0+ZnJhbWVJRCgpIH0gOiBXVEY6
Om51bGxvcHQsCisgICAgICAgIHBhcmVudCA/IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4geyBwYXJlbnQtPmZyYW1lSUQoKSB9IDogc3RkOjpudWxsb3B0LAogICAgIH07CiAKICAg
ICByZXR1cm4gaW5mbzsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlk
YXRlUG9saWN5TGlzdGVuZXIoKQogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAgICBt
X3BvbGljeUxpc3RlbmVySUQgPSAwOwogICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcG9saWN5SWRl
bnRpZmllcjsKLSAgICBtX3BvbGljeUlkZW50aWZpZXIgPSBXVEY6Om51bGxvcHQ7CisgICAgbV9w
b2xpY3lJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogICAgIGlmIChhdXRvIGZ1bmN0aW9uID0g
c3RkOjpleGNoYW5nZShtX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKICAgICAgICAgZnVuY3Rp
b24oUG9saWN5QWN0aW9uOjpJZ25vcmUsICppZGVudGlmaWVyKTsKICAgICBtX3BvbGljeUZ1bmN0
aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiYmIHBvCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVChwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyID09IG1fcG9saWN5SWRlbnRpZmll
cik7Ci0gICAgbV9wb2xpY3lJZGVudGlmaWVyID0gV1RGOjpudWxsb3B0OworICAgIG1fcG9saWN5
SWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24gPSBXVEZNb3ZlKG1fcG9saWN5RnVuY3Rpb24pOwogICAgIGJvb2wgZm9yTmF2aWdhdGlv
bkFjdGlvbiA9IG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID09IEZvck5hdmln
YXRpb25BY3Rpb246OlllczsKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
U3RyaQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURv
d25sb2FkSUQsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gKnN0
ZDo6ZXhjaGFuZ2UobV9wb2xpY3lEb3dubG9hZElELCBzdGQ6Om51bGxvcHQpOwogCiAgICAgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmQgPSBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjo6Tm87CiAgICAgaXNBcHBCb3VuZCA9IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
LAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvIHBvbGljeURvd25sb2FkSUQgPSAqc3RkOjpleGNoYW5nZShtX3BvbGljeURvd25s
b2FkSUQsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBwb2xpY3lEb3dubG9hZElEID0gKnN0ZDo6
ZXhjaGFuZ2UobV9wb2xpY3lEb3dubG9hZElELCBzdGQ6Om51bGxvcHQpOwogCiAgICAgU3VicmVz
b3VyY2VMb2FkZXIqIG1haW5SZXNvdXJjZUxvYWRlciA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVz
b3VyY2VMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA1NWFjZDI1N2MxNWI3MGQ1NzNlM2M1YmI3NzA3NTRkMjFjNmNkODc1Li4w
NjZkNzA5NzJmOTJlMzM0ZWVhOTdiMzI4YTQxZTU2NDVjYzU5YTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTAzNiw3ICsxMDM2LDcgQEAg
V2ViUGFnZTo6fldlYlBhZ2UoKQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICAg
ICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0
Y2hDYWxsYmFja01hcC52YWx1ZXMoKSkgewogICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICB9CiAjZW5kaWYKIH0KQEAg
LTM3MTgsNyArMzcxOCw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSog
ZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycywgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBjb25zdCBzdGQ6OnBhaXI8Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29y
bGREYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC52
YWx1ZU9yKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3Jp
cHRXb3JsZDogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudmFsdWVfb3IoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CiAgICAgYXV0byB3ZWJGcmFtZSA9IG1ha2VS
ZWZQdHIoZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlE
KSA6ICZtYWluV2ViRnJhbWUoKSk7CiAKICAgICBpZiAoYXV0byogbmV3V29ybGQgPSBtX3VzZXJD
b250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFdvcmxkKHdvcmxkRGF0YSkpIHsKQEAgLTQwOTcs
NyArNDA5Nyw3IEBAIHZvaWQgV2ViUGFnZTo6d2lsbENvbW1pdExheWVyVHJlZShSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYgbGF5ZXJUcmFuc2FjdGlvbikKICAgICBsYXllclRyYW5zYWN0aW9u
LnNldEFsbG93c1VzZXJTY2FsaW5nKGFsbG93c1VzZXJTY2FsaW5nKCkpOwogICAgIGlmIChtX3Bl
bmRpbmdEeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQpIHsKICAgICAgICAgbGF5ZXJUcmFuc2Fj
dGlvbi5zZXREeW5hbWljVmlld3BvcnRTaXplVXBkYXRlSUQoKm1fcGVuZGluZ0R5bmFtaWNWaWV3
cG9ydFNpemVVcGRhdGVJRCk7Ci0gICAgICAgIG1fcGVuZGluZ0R5bmFtaWNWaWV3cG9ydFNpemVV
cGRhdGVJRCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9wZW5kaW5nRHluYW1pY1ZpZXdwb3J0
U2l6ZVVwZGF0ZUlEID0gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICBpZiAobV9sYXN0VHJhbnNh
Y3Rpb25QYWdlU2NhbGVGYWN0b3IgIT0gbGF5ZXJUcmFuc2FjdGlvbi5wYWdlU2NhbGVGYWN0b3Io
KSkgewogICAgICAgICBtX2xhc3RUcmFuc2FjdGlvblBhZ2VTY2FsZUZhY3RvciA9IGxheWVyVHJh
bnNhY3Rpb24ucGFnZVNjYWxlRmFjdG9yKCk7CkBAIC00MjgzLDcgKzQyODMsNyBAQCBOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYQogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVj
dGlvbkRhdGEsIE9wdGlvblNldDxEcmFnQXBwbGljYXRpb25GbGFncz4gZmxhZ3MpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRo
b2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQs
IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTQzMTQsNyArNDMxNCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29u
c3QgSW50CiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQog
ewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRs
aW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oc3RkOjpu
dWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MzMxLDcgKzQzMzEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rp
b24sIGNvbnN0IFdlYgogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0
ZWQ6CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRh
KTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZh
bHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihzdGQ6Om51bGxvcHQsIERyYWdIYW5kbGlu
Z01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRp
b246IHsKQEAgLTU1MjgsMTggKzU1MjgsMTggQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVBbHRlcm5h
dGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHZvaWQgV2ViUGFnZTo6c2lt
dWxhdGVNb3VzZURvd24oaW50IGJ1dHRvbiwgV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24sIGlu
dCBjbGlja0NvdW50LCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV2FsbFRpbWUgdGltZSkK
IHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXS0V2ZW50TW9kaWZpZXJzKSA+PSBzaXplb2Yo
V2ViRXZlbnQ6Ok1vZGlmaWVyKSwgIldLRXZlbnRNb2RpZmllcnMgbXVzdCBiZSBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgV2ViRXZlbnQ6Ok1vZGlmaWVyIik7Ci0gICAgbW91
c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlRG93biwgc3RhdGljX2Nh
c3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24s
IDAsIDAsIDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9t
UmF3KG1vZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVu
dDo6Tm9UYXApLCBXVEY6Om51bGxvcHQpOworICAgIG1vdXNlRXZlbnQoV2ViTW91c2VFdmVudChX
ZWJNb3VzZUV2ZW50OjpNb3VzZURvd24sIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OkJ1dHRv
bj4oYnV0dG9uKSwgMCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCBjbGlja0NvdW50LCBP
cHRpb25TZXQ8V2ViRXZlbnQ6Ok1vZGlmaWVyPjo6ZnJvbVJhdyhtb2RpZmllcnMpLCB0aW1lLCBX
ZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgc3RkOjpudWxsb3B0
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzaW11bGF0ZU1vdXNlVXAoaW50IGJ1dHRvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgcG9zaXRpb24sIGludCBjbGlja0NvdW50LCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgV2FsbFRpbWUgdGltZSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXS0V2
ZW50TW9kaWZpZXJzKSA+PSBzaXplb2YoV2ViRXZlbnQ6Ok1vZGlmaWVyKSwgIldLRXZlbnRNb2Rp
ZmllcnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgV2ViRXZl
bnQ6Ok1vZGlmaWVyIik7Ci0gICAgbW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZl
bnQ6Ok1vdXNlVXAsIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbj4oYnV0dG9uKSwg
MCwgcG9zaXRpb24sIHBvc2l0aW9uLCAwLCAwLCAwLCBjbGlja0NvdW50LCBPcHRpb25TZXQ8V2Vi
RXZlbnQ6Ok1vZGlmaWVyPjo6ZnJvbVJhdyhtb2RpZmllcnMpLCB0aW1lLCBXZWJDb3JlOjpGb3Jj
ZUF0Q2xpY2ssIFdlYk1vdXNlRXZlbnQ6Ok5vVGFwKSwgV1RGOjpudWxsb3B0KTsKKyAgICBtb3Vz
ZUV2ZW50KFdlYk1vdXNlRXZlbnQoV2ViTW91c2VFdmVudDo6TW91c2VVcCwgc3RhdGljX2Nhc3Q8
V2ViTW91c2VFdmVudDo6QnV0dG9uPihidXR0b24pLCAwLCBwb3NpdGlvbiwgcG9zaXRpb24sIDAs
IDAsIDAsIGNsaWNrQ291bnQsIE9wdGlvblNldDxXZWJFdmVudDo6TW9kaWZpZXI+Ojpmcm9tUmF3
KG1vZGlmaWVycyksIHRpbWUsIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViTW91c2VFdmVudDo6
Tm9UYXApLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNpbXVsYXRlTW91c2VN
b3Rpb24oV2ViQ29yZTo6SW50UG9pbnQgcG9zaXRpb24sIFdhbGxUaW1lIHRpbWUpCiB7Ci0gICAg
bW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1vdXNlRXZlbnQ6Ok1vdXNlTW92ZSwgV2ViTW91
c2VFdmVudDo6Tm9CdXR0b24sIDAsIHBvc2l0aW9uLCBwb3NpdGlvbiwgMCwgMCwgMCwgMCwgT3B0
aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4geyB9LCB0aW1lLCAwLCBXZWJNb3VzZUV2ZW50OjpO
b1RhcCksIFdURjo6bnVsbG9wdCk7CisgICAgbW91c2VFdmVudChXZWJNb3VzZUV2ZW50KFdlYk1v
dXNlRXZlbnQ6Ok1vdXNlTW92ZSwgV2ViTW91c2VFdmVudDo6Tm9CdXR0b24sIDAsIHBvc2l0aW9u
LCBwb3NpdGlvbiwgMCwgMCwgMCwgMCwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4geyB9
LCB0aW1lLCAwLCBXZWJNb3VzZUV2ZW50OjpOb1RhcCksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Gb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgY29tcG9z
aXRpb25TdHJpbmcsIHVpbnQ2NF90IGZyb20sIHVpbnQ2NF90IGxlbmd0aCwgYm9vbCBzdXBwcmVz
c1VuZGVybGluZSwgY29uc3QgVmVjdG9yPENvbXBvc2l0aW9uSGlnaGxpZ2h0PiYgaGlnaGxpZ2h0
cykKQEAgLTYzMTAsNyArNjMxMCw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJG
cmFtZSogZnJhbWUpCiAgICAgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3RvciA9IGZhbHNl
OwogICAgIG1fZXN0aW1hdGVkTGF0ZW5jeSA9IFNlY29uZHMoMS4wIC8gNjApOwogICAgIG1fc2hv
dWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uID0gdHJ1ZTsKLSAgICBtX2xh
c3RMYXllclRyZWVUcmFuc2FjdGlvbklkQW5kUGFnZVNjYWxlQmVmb3JlU2NhbGluZ1BhZ2UgPSBX
VEY6Om51bGxvcHQ7CisgICAgbV9sYXN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEFuZFBhZ2VTY2Fs
ZUJlZm9yZVNjYWxpbmdQYWdlID0gc3RkOjpudWxsb3B0OwogCiAjaWYgRU5BQkxFKElPU19UT1VD
SF9FVkVOVFMpCiAgICAgRXZlbnREaXNwYXRjaGVyOjpUb3VjaEV2ZW50UXVldWUgcXVldWVkRXZl
bnRzOwpAQCAtNjQyNCw3ICs2NDI0LDcgQEAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IFdlYlBhZ2U6
OmN1cnJlbnRTZWxlY3Rpb25Bc1JhbmdlKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IGZyYW1lV2l0
aFNlbGVjdGlvbihtX3BhZ2UuZ2V0KCkpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1
cm4gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiB9
CkBAIC02NjA1LDcgKzY2MDUsNyBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0
ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBp
ZiAobV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKSB7CiAgICAgICAgICAgICBtX2FsbG93c0NvbnRl
bnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uID0gbV9wZW5kaW5nV2Vic2l0ZVBv
bGljaWVzLT5hbGxvd3NDb250ZW50SmF2YVNjcmlwdDsKICAgICAgICAgICAgIFdlYnNpdGVQb2xp
Y2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihXVEZNb3ZlKCptX3BlbmRpbmdXZWJzaXRl
UG9saWNpZXMpLCBkb2N1bWVudExvYWRlcik7Ci0gICAgICAgICAgICBtX3BlbmRpbmdXZWJzaXRl
UG9saWNpZXMgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICBtX3BlbmRpbmdXZWJzaXRlUG9s
aWNpZXMgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTY3MjIsNyArNjcy
Miw3IEBAIHZvaWQgV2ViUGFnZTo6cmVtb3ZlQWxsVXNlckNvbnRlbnQoKQogCiB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplSWZOZWVkZWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3BlbmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZSA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3BlbmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZSA9IHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoIW1pbmltdW1TaXplRm9yQXV0b0xheW91dCgpLndpZHRoKCkgJiYgIXNpemVU
b0NvbnRlbnRBdXRvU2l6ZU1heGltdW1TaXplKCkud2lkdGgoKSAmJiAhc2l6ZVRvQ29udGVudEF1
dG9TaXplTWF4aW11bVNpemUoKS5oZWlnaHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VS
VChtYWluRnJhbWVWaWV3KCkpOwpAQCAtNjczNiw3ICs2NzM2LDcgQEAgdm9pZCBXZWJQYWdlOjp1
cGRhdGVJbnRyaW5zaWNDb250ZW50U2l6ZUlmTmVlZGVkKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNpemUpCiAKIHZvaWQgV2ViUGFnZTo6Zmx1c2hQZW5kaW5nSW50cmluc2ljQ29udGVudFNpemVV
cGRhdGUoKQogewotICAgIGlmIChhdXRvIHBlbmRpbmdTaXplID0gc3RkOjpleGNoYW5nZShtX3Bl
bmRpbmdJbnRyaW5zaWNDb250ZW50U2l6ZSwgV1RGOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBw
ZW5kaW5nU2l6ZSA9IHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nSW50cmluc2ljQ29udGVudFNpemUs
IHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIHVwZGF0ZUludHJpbnNpY0NvbnRlbnRTaXplSWZOZWVk
ZWQoKnBlbmRpbmdTaXplKTsKIH0KIApAQCAtNzE0MSwxMSArNzE0MSwxMSBAQCB2b2lkIFdlYlBh
Z2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBP
cHRpb25hbDxXZWJDbwogICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1fbWFpbkZy
YW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVy
ID0gbWFpbkZyYW1lRG9jdW1lbnQgPyBtYWluRnJhbWVEb2N1bWVudC0+bG9hZGVyKCkgOiBudWxs
cHRyOwogICAgIGlmICghbG9hZGVyKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CiAKICAgICBhdXRvIGNvcmVDYWxsYmFja0lEID0gbG9hZGVyLT5sb2FkQXBwbGljYXRp
b25NYW5pZmVzdCgpOwogICAgIGlmICghY29yZUNhbGxiYWNrSUQpCi0gICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAogICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNo
Q2FsbGJhY2tNYXAuYWRkKGNvcmVDYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CkBAIC03MjAxLDExICs3MjAxLDExIEBAIE9wdGlvbmFsPFdlYkNvcmU6OkVsZW1lbnRD
b250ZXh0PiBXZWJQYWdlOjpjb250ZXh0Rm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50JiBlCiB7
CiAgICAgYXV0byYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3VtZW50KCk7CiAgICAgaWYgKCFtX3Bh
Z2UgfHwgZG9jdW1lbnQucGFnZSgpICE9IG1fcGFnZS5nZXQoKSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4g
V2ViQ29yZTo6RWxlbWVudENvbnRleHQgeyBlbGVtZW50LmNsaWVudFJlY3QoKSwgbV9pZGVudGlm
aWVyLCBkb2N1bWVudC5pZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXJGb3JFbGVtZW50
KGVsZW1lbnQpIH07CiB9CkBAIC03Mzk5LDcgKzczOTksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVl
c3RJbWFnZUV4dHJhY3Rpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhh
bmRsZQogICAgIH0KIAogICAgIGF1dG8mIHJlbmRlckltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1h
Z2U+KCpyZW5kZXJlcik7Ci0gICAgYXV0byBiaXRtYXAgPSBjcmVhdGVTaGFyZWFibGVCaXRtYXAo
cmVuZGVySW1hZ2UsIFdURjo6bnVsbG9wdCwgQWxsb3dBbmltYXRlZEltYWdlczo6Tm8pOworICAg
IGF1dG8gYml0bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKHJlbmRlckltYWdlLCBzdGQ6Om51
bGxvcHQsIEFsbG93QW5pbWF0ZWRJbWFnZXM6Ok5vKTsKICAgICBpZiAoIWJpdG1hcCkgewogICAg
ICAgICBpZiAoY29tcGxldGlvbikKICAgICAgICAgICAgIGNvbXBsZXRpb24oeyB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5oCmluZGV4
IGEzZTY4NjI2YmI5Yjc2OWY4NjA5Njk1YjA5N2JlMDc1N2MyYTNiMTguLmRiZTNlOGJiNjEwODFl
ZTNiNDczZTM1ZGU3MmFmZTRhMzczZTc0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTY3JvbGxGcmFtZShXZWJQYWdlT3ZlcmxheSYsIFdl
YkZyYW1lKikgeyB9CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHZpcnR1YWwgT3B0aW9u
YWw8QWN0aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dEZvclJlc3VsdEF0UG9pbnQoV2ViUGFnZU92
ZXJsYXkmLCBXZWJDb3JlOjpGbG9hdFBvaW50KSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAg
ICAgICAgdmlydHVhbCBPcHRpb25hbDxBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0Rm9yUmVz
dWx0QXRQb2ludChXZWJQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YURldGVjdG9yc0RpZFBy
ZXNlbnRVSShXZWJQYWdlT3ZlcmxheSYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YURl
dGVjdG9yc0RpZENoYW5nZVVJKFdlYlBhZ2VPdmVybGF5JikgeyB9CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKFdlYlBhZ2VPdmVybGF5JikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3Bw
CmluZGV4IDM3MzkzZTE3YTQxN2E4ZmE3ZTU5Y2ZkNTUxOGE0YWFkNmY0Y2UyMTAuLjM3ODNiNDdh
MDM0NDA3NGFiN2Y3OTc4MDE5MDg3MWQzMDg5OGQ5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC0xMjgsNyAr
MTI4LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKIHN0YXRpYyBPcHRpb25hbDxJbnB1dE1ldGhv
ZFN0YXRlPiBpbnB1dE1ldGhvZFNhdGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgSW5wdXRNZXRob2RTdGF0ZSBzdGF0ZTsKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oKmVsZW1lbnQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDNhYzM2ZDg2NDcyYzA3YjE4N2I5YTQ2OWE2MzAzMThj
ZjlkMDdkNzcuLjU5OGQ2MGI4Yjg0MTcyNjkwMzExYzk3NGVjZDE5Nzk2OTQwNjEwYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0xMDEyLDEzICsxMDEyLDEzIEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywKICAgICBhdXRv
IGltYWdlUGxhY2Vob2xkZXJSYW5nZSA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlclJhbmdlKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyUmVjdHMuc2l6ZSgp
ICE9IGltYWdlU2l6ZXMuc2l6ZSgpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9w
LCAiRmFpbGVkIHRvIGluc2VydCBkcm9wcGVkIGltYWdlIHBsYWNlaG9sZGVyczogcGxhY2Vob2xk
ZXIgcmVjdCBjb3VudCAoJXR1KSBkb2VzIG5vdCBtYXRjaCBpbWFnZSBzaXplIGNvdW50ICgldHUp
LiIsIHBsYWNlaG9sZGVyUmVjdHMuc2l6ZSgpLCBpbWFnZVNpemVzLnNpemUoKSk7Ci0gICAgICAg
IHJlcGx5KHsgfSwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgcmVwbHkoeyB9LCBzdGQ6Om51bGxv
cHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpbWFnZVBsYWNlaG9sZGVy
UmFuZ2UpIHsKICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJGYWlsZWQgdG8gaW5z
ZXJ0IGRyb3BwZWQgaW1hZ2UgcGxhY2Vob2xkZXJzOiBubyBpbWFnZSBwbGFjZWhvbGRlciByYW5n
ZS4iKTsKLSAgICAgICAgcmVwbHkoeyB9LCBXVEY6Om51bGxvcHQpOworICAgICAgICByZXBseSh7
IH0sIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwMzgsNyAr
MTAzOCw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNv
bnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywKIAogdm9pZCBXZWJQYWdlOjpkaWRDb25j
bHVkZURyb3AoKQogewotICAgIG1fcmFuZ2VGb3JEcm9wU25hcHNob3QgPSBXVEY6Om51bGxvcHQ7
CisgICAgbV9yYW5nZUZvckRyb3BTbmFwc2hvdCA9IHN0ZDo6bnVsbG9wdDsKICAgICBtX3BlbmRp
bmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7CiB9CiAKQEAgLTEwODYsNyAr
MTA4Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCkK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbjo6VXNlU2VsZWN0aW9uUmVjdEZvclNpemluZywK
ICAgICAgICAgVGV4dEluZGljYXRvck9wdGlvbjo6SW5jbHVkZVNuYXBzaG90V2l0aFNlbGVjdGlv
bkhpZ2hsaWdodAogICAgIH07Ci0gICAgaWYgKGF1dG8gcmFuZ2UgPSBzdGQ6OmV4Y2hhbmdlKG1f
cmFuZ2VGb3JEcm9wU25hcHNob3QsIFdURjo6bnVsbG9wdCkpIHsKKyAgICBpZiAoYXV0byByYW5n
ZSA9IHN0ZDo6ZXhjaGFuZ2UobV9yYW5nZUZvckRyb3BTbmFwc2hvdCwgc3RkOjpudWxsb3B0KSkg
ewogICAgICAgICBpZiAoYXV0byB0ZXh0SW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6Y3JlYXRl
V2l0aFJhbmdlKCpyYW5nZSwgZGVmYXVsdFRleHRJbmRpY2F0b3JPcHRpb25zRm9yRWRpdERyYWcs
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpOb25lLCB7IH0pKQogICAgICAg
ICAgICAgdGV4dEluZGljYXRvckRhdGEgPSB0ZXh0SW5kaWNhdG9yLT5kYXRhKCk7CiAgICAgfQpA
QCAtMTQ4Miw3ICsxNDgyLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25z
dCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLAogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRl
ZDoKICAgICAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2FuY2VsbGVkOgot
ICAgICAgICAgICAgICAgIG1fc3RhcnRpbmdHZXN0dXJlUmFuZ2UgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgICAgICAgICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9IHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RmFpbGVkOgogICAgICAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQ
b3NzaWJsZToKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdl
c3R1cmUoY29uc3QgSW50UG9pbnQmIHBvaW50LCBHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwKICAg
ICAgICAgICAgIGlmIChyYW5nZSkKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRXb3JkUmFuZ2Ug
PSB7IHsgKnJhbmdlIH0gfTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2N1
cnJlbnRXb3JkUmFuZ2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50
V29yZFJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2hhbmdlZDoKICAgICAgICAgICAgIGlmICghbV9j
dXJyZW50V29yZFJhbmdlKQpAQCAtMTUxMyw3ICsxNTEzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxl
Y3RXaXRoR2VzdHVyZShjb25zdCBJbnRQb2ludCYgcG9pbnQsIEdlc3R1cmVUeXBlIGdlc3R1cmVU
eXBlLAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZTo6RW5kZWQ6CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2FuY2Vs
bGVkOgotICAgICAgICAgICAgbV9jdXJyZW50V29yZFJhbmdlID0gV1RGOjpudWxsb3B0OworICAg
ICAgICAgICAgbV9jdXJyZW50V29yZFJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6RmFpbGVkOgogICAg
ICAgICBjYXNlIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OlBvc3NpYmxlOgpAQCAtMTU5Myw3ICsx
NTkzLDcgQEAgc3RhdGljIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBvaW50SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKEZyYW1lJiBmcmFtZSwgY28KIAogICAgIGF1dG8gdGFyZ2V0Tm9kZSA9
IG1ha2VSZWZQdHIoaGl0VGVzdC50YXJnZXROb2RlKCkpOwogICAgIGlmICh0YXJnZXROb2RlICYm
ICFIVE1MRWxlbWVudDo6c2hvdWxkRXh0ZW5kU2VsZWN0aW9uVG9UYXJnZXROb2RlKCp0YXJnZXRO
b2RlLCBleGlzdGluZ1NlbGVjdGlvbikpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4g
cmFuZ2U7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHJlc3VsdDsKQEAgLTE2MzUsNyArMTYzNSw3IEBA
IHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0
aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QKIAogICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0
eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBzYW1lRGlyZWN0aW9u
KSkgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29yZCBib3VuZGFyeS4gTGVhdmUgc2VsZWN0aW9u
IHdoZXJlIGl0IGlzLgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChhdEJvdW5kYXJ5T2ZHcmFudWxhcml0
eShleHRlbnQsIFRleHRHcmFudWxhcml0eTo6V29yZEdyYW51bGFyaXR5LCBvcHBvc2l0ZURpcmVj
dGlvbikpIHsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHN0YXRpYyBPcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VBdFdvcmRCb3VuZGFyeUZvclBvc2l0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QKICAg
ICBpZiAoZXh0ZW50LmlzTnVsbCgpIHx8IGV4dGVudCA9PSBiYXNlKQogICAgICAgICBleHRlbnQg
PSB3b3JkQm91bmRhcnk7CiAgICAgaWYgKGV4dGVudC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICgh
KGJhc2UgPCBleHRlbnQpKQogICAgICAgICBzdGQ6OnN3YXAoYmFzZSwgZXh0ZW50KTsKQEAgLTE3
NDYsNyArMTc0Niw3IEBAIEludFJlY3QgV2ViUGFnZTo6cm9vdFZpZXdJbnRlcmFjdGlvbkJvdW5k
c0ZvckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIAogdm9pZCBXZWJQYWdlOjpjbGVh
clNlbGVjdGlvbigpCiB7Ci0gICAgbV9zdGFydGluZ0dlc3R1cmVSYW5nZSA9IFdURjo6bnVsbG9w
dDsKKyAgICBtX3N0YXJ0aW5nR2VzdHVyZVJhbmdlID0gc3RkOjpudWxsb3B0OwogICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuc2VsZWN0aW9uKCkuY2xl
YXIoKTsKIH0KIApAQCAtMjA3NSwxMSArMjA3NSwxMSBAQCBzdGF0aWMgT3B0aW9uYWw8U2ltcGxl
UmFuZ2U+IHJhbmdlTmVhclBvc2l0aW9uTWF0Y2hlc1RleHQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JgogewogICAgIGF1dG8gbGl2ZVJhbmdlID0gc2VsZWN0aW9uLmZpcnN0UmFuZ2UoKTsKICAgICBp
ZiAoIWxpdmVSYW5nZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBTaW1wbGVSYW5nZSByYW5nZSB7ICpsaXZlUmFuZ2UgfTsK
ICAgICBhdXRvIGJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChwb3NpdGlvbik7CiAg
ICAgaWYgKCFib3VuZGFyeVBvaW50KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBmaW5kQ2xvc2VzdFBsYWluVGV4
dChyYW5nZSwgbWF0Y2hUZXh0LCB7IH0sIGNoYXJhY3RlckNvdW50KHsgcmFuZ2Uuc3RhcnQsICpi
b3VuZGFyeVBvaW50IH0sIFRleHRJdGVyYXRvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zKSk7CiB9CiAKQEAgLTIxNjksMjUgKzIxNjksMjUgQEAgT3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yR3JhbnVsYXJpdHlBdFBvaW50KEZyYW1lJiBmcmFt
ZSwgY29uc3QgV2UKICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRHcmFudWxhcml0
eToKICAgICAgICAgLy8gRklYTUU6IE1ha2VzIG5vIHNlbnNlIHRoYXQgdGhpcyBtdXRhdGVzIHRo
ZSBjdXJyZW50IHNlbGVjdGlvbiBhbmQgcmV0dXJucyBudWxsLgogICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3RBbGwoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6TGluZUdy
YW51bGFyaXR5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBjYXNlIFRl
eHRHcmFudWxhcml0eTo6TGluZUJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBjYXNlIFRleHRHcmFudWxhcml0eTo6U2VudGVuY2VCb3VuZGFyeToKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgY2FzZSBUZXh0R3JhbnVsYXJpdHk6OlBh
cmFncmFwaEJvdW5kYXJ5OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBj
YXNlIFRleHRHcmFudWxhcml0eTo6RG9jdW1lbnRCb3VuZGFyeToKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihjb25zdCBJbnRSZWN0JiBibG9j
a1JlY3QsIGNvbnN0IEZyYW1lJiBmcmFtZSkKQEAgLTI0OTUsNyArMjQ5NSw3IEBAIGJvb2wgV2Vi
UGFnZTo6YXBwbHlBdXRvY29ycmVjdGlvbkludGVybmFsKGNvbnN0IFN0cmluZyYgY29ycmVjdGlv
biwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICB3aGlsZSAodGV4dEZvclJhbmdlLmxlbmd0aCgp
ICYmIHRleHRGb3JSYW5nZS5sZW5ndGgoKSA+IG9yaWdpbmFsVGV4dC5sZW5ndGgoKSAmJiBsb29w
Q291bnQgPCBtYXhQb3NpdGlvbnNBdHRlbXB0cykgewogICAgICAgICAgICAgICAgIHBvc2l0aW9u
ID0gcG9zaXRpb24ubmV4dCgpOwogICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51
bGwoKSAmJiBwb3NpdGlvbiA+PSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
KQotICAgICAgICAgICAgICAgICAgICByYW5nZSA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAg
ICAgICAgICAgcmFuZ2UgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgICAgICByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShwb3NpdGlvbiwgZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAgICAgICAgICAgICAgICAgdGV4dEZv
clJhbmdlID0gcGxhaW5UZXh0Rm9yQ29udGV4dChyYW5nZSk7CkBAIC0yNzY3LDE1ICsyNzY3LDE1
IEBAIHN0YXRpYyB2b2lkIGRhdGFEZXRlY3RvckxpbmtQb3NpdGlvbkluZm9ybWF0aW9uKEVsZW1l
bnQmIGVsZW1lbnQsIEludGVyYWN0aW9uSW5mCiBzdGF0aWMgT3B0aW9uYWw8c3RkOjpwYWlyPFJl
bmRlckltYWdlJiwgSW1hZ2UmPj4gaW1hZ2VSZW5kZXJlckFuZEltYWdlKEVsZW1lbnQmIGVsZW1l
bnQpCiB7CiAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oZWxlbWVudC5yZW5kZXJlcigpKSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIGF1dG8mIHJlbmRlckltYWdlID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCplbGVtZW50
LnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVySW1hZ2UuY2FjaGVkSW1hZ2UoKSB8fCByZW5k
ZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvKiBp
bWFnZSA9IHJlbmRlckltYWdlLmNhY2hlZEltYWdlKCktPmltYWdlRm9yUmVuZGVyZXIoJnJlbmRl
ckltYWdlKTsKICAgICBpZiAoIWltYWdlIHx8IGltYWdlLT53aWR0aCgpIDw9IDEgfHwgaW1hZ2Ut
PmhlaWdodCgpIDw9IDEpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sgcmVuZGVySW1hZ2UsICppbWFnZSB9
fTsKIH0KQEAgLTMxODIsNyArMzE4Miw3IEBAIE9wdGlvbmFsPEZvY3VzZWRFbGVtZW50SW5mb3Jt
YXRpb24+IFdlYlBhZ2U6OmZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oKQogewogICAgIFJlZlB0
cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZm9jdXNlZEVsZW1lbnQgPSBtX2ZvY3VzZWRFbGVtZW50
LmNvcHlSZWYoKTsKICAgICBib29sIHdpbGxMYXlvdXQgPSBkb2N1bWVudC0+dmlldygpLT5uZWVk
c0xheW91dCgpOwpAQCAtMzE5MCw3ICszMTkwLDcgQEAgT3B0aW9uYWw8Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbj4gV2ViUGFnZTo6Zm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbigpCiAKICAgICAv
LyBMYXlvdXQgbWF5IGhhdmUgZGV0YWNoZWQgdGhlIGRvY3VtZW50IG9yIGNhdXNlZCBhIGNoYW5n
ZSBvZiBmb2N1cy4KICAgICBpZiAoIWRvY3VtZW50LT52aWV3KCkgfHwgZm9jdXNlZEVsZW1lbnQg
IT0gbV9mb2N1c2VkRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICh3aWxsTGF5b3V0KQogICAgICAgICBz
ZW5kRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBkb3ViCiAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8
ICJXZWJQYWdlICIgPDwgbV9pZGVudGlmaWVyIDw8ICIgc2V0Vmlld3BvcnRDb25maWd1cmF0aW9u
Vmlld0xheW91dFNpemUgIiA8PCBzaXplIDw8ICIgc2NhbGVGYWN0b3IgIiA8PCBzY2FsZUZhY3Rv
ciA8PCAiIG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCAiIDw8IG1pbmltdW1FZmZlY3RpdmVE
ZXZpY2VXaWR0aCk7CiAKICAgICBhdXRvIHByZXZpb3VzTGF5b3V0U2l6ZVNjYWxlRmFjdG9yID0g
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24ubGF5b3V0U2l6ZVNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0
byBjbGFtcGVkTWluaW11bUVmZmVjdGl2ZURldmljZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9u
LmlzS25vd25Ub0xheU91dFdpZGVyVGhhblZpZXdwb3J0KCkgPyBXVEY6Om51bGxvcHQgOiBPcHRp
b25hbDxkb3VibGU+KG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CisgICAgYXV0byBjbGFt
cGVkTWluaW11bUVmZmVjdGl2ZURldmljZSA9IG1fdmlld3BvcnRDb25maWd1cmF0aW9uLmlzS25v
d25Ub0xheU91dFdpZGVyVGhhblZpZXdwb3J0KCkgPyBzdGQ6Om51bGxvcHQgOiBPcHRpb25hbDxk
b3VibGU+KG1pbmltdW1FZmZlY3RpdmVEZXZpY2VXaWR0aCk7CiAgICAgaWYgKCFtX3ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5zZXRWaWV3TGF5b3V0U2l6ZShzaXplLCBzY2FsZUZhY3RvciwgV1RGTW92
ZShjbGFtcGVkTWluaW11bUVmZmVjdGl2ZURldmljZSkpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTM0ODEsNyArMzQ4MSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0
ZShjb25zdCBGbG9hdFNpemUmIHZpZXdMYXlvdXRTaXplLCBjb25zdCBXCiAKICAgICBMT0dfV0lU
SF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2U6OmR5bmFtaWNWaWV3cG9y
dFNpemVVcGRhdGUgc2V0dGluZyB2aWV3IGxheW91dCBzaXplIHRvICIgPDwgdmlld0xheW91dFNp
emUpOwogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gbV92aWV3cG9ydENvbmZpZ3VyYXRpb24u
c2V0SXNLbm93blRvTGF5T3V0V2lkZXJUaGFuVmlld3BvcnQoZmFsc2UpOwotICAgIHZpZXdwb3J0
Q2hhbmdlZCB8PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRWaWV3TGF5b3V0U2l6ZSh2aWV3
TGF5b3V0U2l6ZSwgV1RGOjpudWxsb3B0LCBtaW5pbXVtRWZmZWN0aXZlRGV2aWNlV2lkdGgpOwor
ICAgIHZpZXdwb3J0Q2hhbmdlZCB8PSBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRWaWV3TGF5
b3V0U2l6ZSh2aWV3TGF5b3V0U2l6ZSwgc3RkOjpudWxsb3B0LCBtaW5pbXVtRWZmZWN0aXZlRGV2
aWNlV2lkdGgpOwogICAgIGlmICh2aWV3cG9ydENoYW5nZWQpCiAgICAgICAgIHZpZXdwb3J0Q29u
ZmlndXJhdGlvbkNoYW5nZWQoKTsKIApAQCAtMzkzMSw3ICszOTMxLDcgQEAgT3B0aW9uYWw8Zmxv
YXQ+IFdlYlBhZ2U6OnNjYWxlRnJvbVVJUHJvY2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RV
cGRhdGVJbmZvJgogewogICAgIGF1dG8gdHJhbnNhY3Rpb25JREZvckxhc3RTY2FsZUZyb21VSVBy
b2Nlc3MgPSB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmxhc3RMYXllclRyZWVUcmFuc2Fj
dGlvbklEKCk7CiAgICAgaWYgKG1fbGFzdFRyYW5zYWN0aW9uSURXaXRoU2NhbGVDaGFuZ2UgPiB0
cmFuc2FjdGlvbklERm9yTGFzdFNjYWxlRnJvbVVJUHJvY2VzcykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGZsb2F0IHNj
YWxlRnJvbVVJUHJvY2VzcyA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uc2NhbGUoKTsK
ICAgICBmbG9hdCBjdXJyZW50U2NhbGUgPSBtX3BhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwpAQCAt
Mzk0NSw3ICszOTQ1LDcgQEAgT3B0aW9uYWw8ZmxvYXQ+IFdlYlBhZ2U6OnNjYWxlRnJvbVVJUHJv
Y2Vzcyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJgogICAgIAogICAgIHNjYWxl
RnJvbVVJUHJvY2VzcyA9IHN0ZDo6bWluPGZsb2F0PihtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5t
YXhpbXVtU2NhbGUoKSwgc3RkOjptYXg8ZmxvYXQ+KG1fdmlld3BvcnRDb25maWd1cmF0aW9uLm1p
bmltdW1TY2FsZSgpLCBzY2FsZUZyb21VSVByb2Nlc3MpKTsKICAgICBpZiAoYXJlRXNzZW50aWFs
bHlFcXVhbEFzRmxvYXQoY3VycmVudFNjYWxlLCBzY2FsZUZyb21VSVByb2Nlc3MpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgcmV0dXJuIHNjYWxlRnJvbVVJUHJvY2VzczsKIH0KQEAgLTM5OTQsNyArMzk5NCw3IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvJiB2aXNpCiAgICAgICAgICAgICBtX29sZGVzdE5vblN0YWJsZVVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHNUaW1lc3RhbXAgPSBvbGRlc3RUaW1lc3RhbXA7CiAgICAgfQog
Ci0gICAgZmxvYXQgc2NhbGVUb1VzZSA9IHNjYWxlRnJvbVVJUHJvY2Vzcy52YWx1ZU9yKG1fcGFn
ZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIGZsb2F0IHNjYWxlVG9Vc2UgPSBzY2FsZUZyb21V
SVByb2Nlc3MudmFsdWVfb3IobV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiAgICAgRmxvYXRS
ZWN0IGV4cG9zZWRDb250ZW50UmVjdCA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uZXhw
b3NlZENvbnRlbnRSZWN0KCk7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkRXhwb3NlZENvbnRlbnRS
ZWN0ID0gYWRqdXN0RXhwb3NlZFJlY3RGb3JOZXdTY2FsZShleHBvc2VkQ29udGVudFJlY3QsIHZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uc2NhbGUoKSwgc2NhbGVUb1VzZSk7CiAgICAgbV9k
cmF3aW5nQXJlYS0+c2V0RXhwb3NlZENvbnRlbnRSZWN0KGFkanVzdGVkRXhwb3NlZENvbnRlbnRS
ZWN0KTsKQEAgLTQwODIsNyArNDA4Miw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpCiAgICAg
ICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnVub2JzY3VyZWRDb250ZW50UmVj
dCgpICE9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0
UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpKQogICAgICAgICAgICAgZnJhbWVWaWV3LnNldFZp
c3VhbFZpZXdwb3J0T3ZlcnJpZGVSZWN0KExheW91dFJlY3QodmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJhbWVWaWV3LnNldFZpc3VhbFZpZXdwb3J0
T3ZlcnJpZGVSZWN0KFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICBmcmFtZVZpZXcuc2V0Vmlz
dWFsVmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpudWxsb3B0KTsKIAogICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2U6OnVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHMgLSBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCAiIDw8IHZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8ubGF5b3V0Vmlld3BvcnRSZWN0KCkpOwogICAgICAgICBmcmFt
ZVZpZXcuc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoTGF5b3V0UmVjdCh2aXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvLmxheW91dFZpZXdwb3J0UmVjdCgpKSk7CkBAIC00MjgxLDcgKzQy
ODEsNyBAQCB2b2lkIFdlYlBhZ2U6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogICAgIC8vIEluc2VydGluZyB0aGUgcGxh
Y2Vob2xkZXIgbWF5IHJ1biBKYXZhU2NyaXB0LCB3aGljaCBjYW4gZG8gYW55dGhpbmcsIGluY2x1
ZGluZyBmcmFtZSBkZXN0cnVjdGlvbi4KICAgICBSZWY8RnJhbWU+IGZyYW1lID0gY29yZVBhZ2Uo
KS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgYXV0byBwbGFj
ZWhvbGRlciA9IGZyYW1lLT5lZGl0b3IoKS5pbnNlcnRUZXh0UGxhY2Vob2xkZXIoc2l6ZSk7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIocGxhY2Vob2xkZXIgPyBjb250ZXh0Rm9yRWxlbWVudCgqcGxh
Y2Vob2xkZXIpIDogV1RGOjpudWxsb3B0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihwbGFjZWhv
bGRlciA/IGNvbnRleHRGb3JFbGVtZW50KCpwbGFjZWhvbGRlcikgOiBzdGQ6Om51bGxvcHQpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBFbGVtZW50Q29u
dGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKaW5kZXggYjcwMmQ3OTJh
OThmNDcxM2MzOTcwMzBjNGQ4YTBkMTYxMWFjZDAwOC4uMTY0YzRjYzNiNmEzZGU3ZmJiNjEwOTk1
YzE1OGRhMTg4NTRiOTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgYm9vbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWM6OnN0YXJ0Tm90aWZp
Y2F0aW9uTWVjaGFuaXNtKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBMT0dfV0lUSF9T
VFJFQU0oRGlzcGxheUxpbmssIHN0cmVhbSA8PCAiW1dlYl0gRGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrIGZvciBkaXNwbGF5ICIgPDwgZGlzcGxheUlEKCkg
PDwgIiAtIHN0YXJ0aW5nIik7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpTdGFydERp
c3BsYXlMaW5rKG1fb2JzZXJ2ZXJJRCwgZGlzcGxheUlEKCksIG1heENsaWVudFByZWZlcnJlZEZy
YW1lc1BlclNlY29uZCgpLnZhbHVlT3IoRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kKSksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RhcnREaXNwbGF5TGluayhtX29ic2VydmVy
SUQsIGRpc3BsYXlJRCgpLCBtYXhDbGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoKS52YWx1
ZV9vcihGdWxsU3BlZWRGcmFtZXNQZXJTZWNvbmQpKSwgMCk7CiAgICAgaWYgKCFtX3J1bkxvb3BP
YnNlcnZlcikgewogICAgICAgICAvLyBUaGUgUnVuTG9vcE9ic2VydmVyIHJlcGVhdHMuCiAgICAg
ICAgIG1fcnVuTG9vcE9ic2VydmVyID0gbWFrZVVuaXF1ZTxSdW5Mb29wT2JzZXJ2ZXI+KGtDRlJ1
bkxvb3BFbnRyeSwgW3RoaXNdKCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAwYWM4Yjg3NjA3M2M4Y2EzOTFjZjY0Y2Fk
ODI3MDJlMTc2OTZmNWUwLi41NzljNGU4OTQ5MWQyYWE0NWZmZWVlMDQ5YWIwZTI1NjQxMjE5Y2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQpAQCAtOTYwLDcgKzk2MCw3IEBAIE9wdGlvbmFsPHN0ZDo6dHVwbGU8V2ViQ29yZTo6
U2ltcGxlUmFuZ2UsIE5TRGljdGlvbmFyeSAqPj4gV2ViUGFnZTo6bG9va3VwVGV4dEF0CiB7CiAg
ICAgYXV0byYgbWFpbkZyYW1lID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFt
YWluRnJhbWUudmlldygpIHx8ICFtYWluRnJhbWUudmlldygpLT5yZW5kZXJWaWV3KCkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gRGljdGlvbmFyeUxvb2t1cDo6cmFuZ2VBdEhpdFRlc3RSZXN1bHQobWFpbkZy
YW1lLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbkluVmll
d0Nvb3JkaW5hdGVzKSksIHsKICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDM5MTM4M2QzNmVlNWY4ZTBlYmIwN2VlZTI3
MjZlYzI0OWQzZDU2YzQuLmExNDIwYTE4ZWE2YmE4YjVlNGE0NTMwOGQxNzQ5N2NmMjJlNTM3MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTU5LDEyICs1OSwxMiBAQCBSZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShJZAogCiBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoSWRlbnRpZmllciBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3Rv
cmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OkxvY2FsLCBpZGVudGlmaWVyLCBXVEY6Om51
bGxvcHQsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpMb2NhbCwgaWRlbnRpZmllciwgc3Rk
OjpudWxsb3B0LCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAogUmVmPFN0b3JhZ2VOYW1l
c3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9y
YWdlTmFtZXNwYWNlKElkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlRyYW5zaWVu
dExvY2FsLCBpZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsICZ0b3BMZXZlbE9yaWdpbiwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlRyYW5zaWVudExvY2FsLCBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsICZ0
b3BMZXZlbE9yaWdpbiwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpTdG9yYWdlTmFtZXNwYWNlSW1wbChXZWJDb3JlOjpTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwg
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIGNvbnN0IE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiYgcGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9y
aWdpbiwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMGI0MmU1
NjgyYTRkNDcwMWY5ODM3ZTcyNDRlODgzNDU4NjZkOTk5Li5iNjIxYTYyYmI1N2EyYzJiNzEzY2M1
M2E2YTk2OTY2Y2ZjY2QzNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtNDc3LDcgKzQ3Nyw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNr
U2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJl
SW5QaWN0dXJlKHNpemUudmFsdWVPcihXZWJDb3JlOjpGbG9hdFNpemUoKSkpOworICAgIHZpZGVv
RWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKHNpemUudmFsdWVf
b3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpKTsKIAogICAgIGlmIChpbnRlcmZhY2UtPnRhcmdldElz
RnVsbHNjcmVlbigpIHx8IGludGVyZmFjZS0+ZnVsbHNjcmVlblN0YW5kYnkoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KaW5kZXggNzAyMjI3YzE5MmMzMDQxMjk1M2VmMTRmN2Y2MTJlNGUzNDlhOWIzMC4u
NDE4YTRhNTczMTk5ZmU3N2I3OGJmY2ViMzQ0ZTQ1YzQ4MzljMzlhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC04MTksNyAr
ODE5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVMaW1pdCgpCiAgICAgICAgIGZvciAo
YXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgewogICAgICAgICAgICAgYXV0byBwYWdl
Q1BVTGltaXQgPSBwYWdlLT5jcHVMaW1pdCgpOwogICAgICAgICAgICAgaWYgKCFwYWdlQ1BVTGlt
aXQpIHsKLSAgICAgICAgICAgICAgICBjcHVMaW1pdCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAg
ICAgICAgICBjcHVMaW1pdCA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghY3B1TGltaXQgfHwgcGFnZUNQVUxpbWl0
ID4gY3B1TGltaXQudmFsdWUoKSkKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJlYXNvbikKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFtX2NwdUxpbWl0KSB7CiAgICAgICAgIGlmIChtX2Nw
dU1vbml0b3IpCi0gICAgICAgICAgICBtX2NwdU1vbml0b3ItPnNldENQVUxpbWl0KFdURjo6bnVs
bG9wdCk7CisgICAgICAgICAgICBtX2NwdU1vbml0b3ItPnNldENQVUxpbWl0KHN0ZDo6bnVsbG9w
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uIHJl
YXNvbikKICAgICB9IGVsc2UgaWYgKHJlYXNvbiA9PSBDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpW
aXNpYmlsaXR5SGFzQ2hhbmdlZCkgewogICAgICAgICAvLyBJZiB0aGUgdmlzaWJpbGl0eSBoYXMg
Y2hhbmdlZCwgc3RvcCB0aGUgQ1BVIG1vbml0b3IgYmVmb3JlIHNldHRpbmcgaXRzIGxpbWl0LiBU
aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBDUFUgdXNhZ2UgY2FuIHZhcnkgd2lsZGx5IGJhc2Vk
IG9uIHZpc2liaWxpdHkgYW5kIHdlIHdvdWxkCiAgICAgICAgIC8vIG5vdCB3YW50IHRvIHJlcG9y
dCB0aGF0IGEgcHJvY2VzcyBoYXMgZXhjZWVkZWQgaXRzIGJhY2tncm91bmQgQ1BVIGxpbWl0IGV2
ZW4gdGhvdWdoIG1vc3Qgb2YgdGhlIENQVSB0aW1lIHdhcyB1c2VkIHdoaWxlIHRoZSBwcm9jZXNz
IHdhcyB2aXNpYmxlLgotICAgICAgICBtX2NwdU1vbml0b3ItPnNldENQVUxpbWl0KFdURjo6bnVs
bG9wdCk7CisgICAgICAgIG1fY3B1TW9uaXRvci0+c2V0Q1BVTGltaXQoc3RkOjpudWxsb3B0KTsK
ICAgICB9CiAgICAgbV9jcHVNb25pdG9yLT5zZXRDUFVMaW1pdChtX2NwdUxpbWl0KTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9Vc2VyTWVkaWFDYXB0
dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ2xpYi9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlci5jcHAKaW5kZXggY2ZlY2YwYTA1MzgwMjkzNTI1ZjhmZmMwNTFjZmM2ZWMw
YjJlOWU4Zi4uNWI4MTMzMjUzM2Y2OWVlNmY4YjVlNjA1YTI0Y2I1MjdiM2RhMjFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2dsaWIvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9nbGliL1VzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyLmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFVzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyOjp2YWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25zdHJhaW50cyhXZWJDb3JlOjpNZWRpYQog
ICAgIH07CiAKICAgICBhdXRvIHZhbGlkSGFuZGxlciA9IFt0aGlzXShWZWN0b3I8Q2FwdHVyZURl
dmljZT4mJiBhdWRpb0RldmljZXMsIFZlY3RvcjxDYXB0dXJlRGV2aWNlPiYmIHZpZGVvRGV2aWNl
cywgU3RyaW5nJiYgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSBtdXRhYmxlIHsKLSAgICAgICAg
bV92YWxpZGF0ZVVzZXJNZWRpYVJlcXVlc3RDb25zdHJhaW50c0NhbGxiYWNrKFdURjo6bnVsbG9w
dCwgYXVkaW9EZXZpY2VzLCB2aWRlb0RldmljZXMsIGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7
CisgICAgICAgIG1fdmFsaWRhdGVVc2VyTWVkaWFSZXF1ZXN0Q29uc3RyYWludHNDYWxsYmFjayhz
dGQ6Om51bGxvcHQsIGF1ZGlvRGV2aWNlcywgdmlkZW9EZXZpY2VzLCBkZXZpY2VJZGVudGlmaWVy
SGFzaFNhbHQpOwogICAgIH07CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5n
bGV0b24oKS52YWxpZGF0ZVJlcXVlc3RDb25zdHJhaW50cyhXVEZNb3ZlKHZhbGlkSGFuZGxlciks
IFdURk1vdmUoaW52YWxpZEhhbmRsZXIpLCByZXF1ZXN0LCBXVEZNb3ZlKGhhc2hTYWx0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCAx
ZGU4ZTQ2ODgxZmNjMTEzYTZiZmJiZTQwYTg5ZGI0ZTVmNDA2NTg0Li5lZWEwMDA0NGJhZmJmYmYz
NWNlZjg4NjY4OWY0MDk1NGFkOWM0ZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTY0MCw3ICs2NDAsNyBAQCB1aW50NjRfdCBTdG9y
YWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAg
ICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBG
aWxlU3lzdGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZU9yKDApOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpmaWxlU2l6ZShwYXRoKS52YWx1ZV9vcigwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmluZGV4IGRkYmE0
MjY1NGQ2MmNmMGVhMDUyYjZkMGYxNWJkMGI3M2QxNmUxM2IuLjliMTAyZjFlNDJiZGUwNTE5MGU5
NWVjNWU5NzA0YTk5ZmE5YWZhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KQEAgLTg4Myw3ICs4ODMsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogCiAg
ICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3Qodm0sIGZyYW1lLT5zY3JpcHQo
KS5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSkpOwogCi0gICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgZ2VzdHVyZUluZGljYXRvcihhbGxvd1BvcHVwcyA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2Vy
R2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKGFsbG93UG9wdXBzID8gT3B0
aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+KFByb2Nlc3NpbmdVc2VyR2VzdHVyZSkg
OiBzdGQ6Om51bGxvcHQpOwogICAgIAogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0
ZShnbG9iYWxPYmplY3QuZ2V0KCksIEpTQzo6bWFrZVNvdXJjZShzY3JpcHQsIHsgfSkpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNj
YXBlUGx1Z2luVmlldy5tbQppbmRleCA4ZmZmMjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcx
MTA3N2I2Li5lNDk0ZmM3ZGZiNmI5YmE0NjI3ODg3MzkzNGIwOGI1MGQwODIzZGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luVmlldy5tbQpAQCAtMzYzLDcgKzM2Myw3IEBAIC0gKEJPT0wpc2VuZEV2ZW50Oih2b2lkKill
dmVudCBpc0RyYXdSZWN0OihCT09MKWV2ZW50SXNEcmF3UmVjdAogICAgIEFTU0VSVChfZXZlbnRI
YW5kbGVyKTsKICAgICB7CiAgICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFs
bExvY2tzKGNvbW1vblZNKCkpOwotICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKF9ldmVudEhhbmRsZXItPmN1cnJlbnRFdmVudElzVXNlckdlc3R1cmUoKSA/IE9w
dGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
IDogV1RGOjpudWxsb3B0KTsKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUlu
ZGljYXRvcihfZXZlbnRIYW5kbGVyLT5jdXJyZW50RXZlbnRJc1VzZXJHZXN0dXJlKCkgPyBPcHRp
b25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6
IHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIGFjY2VwdGVkRXZlbnQgPSBbX3BsdWdpblBhY2thZ2Uu
Z2V0KCkgcGx1Z2luRnVuY3NdLT5ldmVudChwbHVnaW4sIGV2ZW50KTsKICAgICB9CiAgICAgW3Nl
bGYgZGlkQ2FsbFBsdWdJbkZ1bmN0aW9uXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggNWNiZGZiMGM0MzRhMjVmYTE3YTdiMTE4NTYzMDY4MzYyMzE5MGJjOS4uNzJhNTI4OWQwZjZh
ZGZiMDU5NTRlMGFkYWRmM2E4ZmZhNDU3MWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTIwNywxMiArMjA3LDEyIEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxv
YWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiAKIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1l
SUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogV2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJGcmFtZUxvYWRlckNsaWVu
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQubW0KaW5kZXggY2ZjNDQ0
NTJlZjIzYWJmODY3ODUzZDdjMzA3YzNjZDM4NTVjZGRkYi4uNGExYmEzYzY3YWVmNzY1MTAwZmNh
MTIzNTIxYzk4ZGRhMWY1MGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudC5tbQpAQCAtNDEsNyArNDEsNyBAQCBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQ6On5X
ZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKQogCiBPcHRpb25hbDxTdHJpbmc+IFdlYlBheW1l
bnRDb29yZGluYXRvckNsaWVudDo6dmFsaWRhdGVkUGF5bWVudE5ldHdvcmsoY29uc3QgU3RyaW5n
JikKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKIGJvb2wgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OjpjYW5NYWtlUGF5bWVudHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbQppbmRleCAyZDQxNDFlZGIyMTk2MTk2MTc4Mjk3NjgwMWUw
YWYxMzMzNjgwMjBiLi5iNTI1YmIwZDhiNDg1MWNkMWFhNTMzMjc5NzlkMTA2NGY2ZWVlNzM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1
cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtOTIsNyArOTIsNyBAQCAtIChOU1N0cmluZyAqKXN0
cmluZ1ZhbHVlCiAKIC0gKHVuc2lnbmVkIHNob3J0KXBvcnQKIHsKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxTZWN1cml0eU9yaWdpbio+KF9wcml2YXRlKS0+cG9ydCgpLnZhbHVlT3IoMCk7
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihfcHJpdmF0ZSkt
PnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KIAogLy8gRklYTUU6IE92ZXJyaWRpbmcgaXNFcXVhbDog
d2l0aG91dCBvdmVycmlkaW5nIGhhc2ggd2lsbCBjYXVzZSB0cm91YmxlIGlmIHRoaXMgZXZlciBn
b2VzIGludG8gYW4gTlNTZXQgb3IgaXMgdGhlIGtleSBpbiBhbiBOU0RpY3Rpb25hcnksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0
aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEZXZpY2VPcmllbnRh
dGlvbi5tbQppbmRleCA2MzM3NmU2ODhhZmJhZTljY2M2YThiNDRlYTUzMTk1MDYxNmM4MDVjLi43
ZDEyYmU2NmJjNWQyODEzYTYwY2NiYWJjZmQ5YzA1ZTk5OTIxYjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRldmljZU9yaWVudGF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGV2aWNlT3JpZW50YXRpb24ubW0K
QEAgLTYzLDcgKzYzLDcgQEAgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBjb3JlKFdlYkRldmljZU9y
aWVudGF0aW9uKiBvcmllbnRhdGlvbikKIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGNvbnZlcnQo
Ym9vbCBjYW5Qcm92aWRlLCBkb3VibGUgdmFsdWUpCiB7CiAgICAgaWYgKCFjYW5Qcm92aWRlKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtNzUsOSArNzUsOSBAQCAtIChpZClpbml0V2l0
aENhblByb3ZpZGVBbHBoYTooYm9vbCljYW5Qcm92aWRlQWxwaGEgYWxwaGE6KGRvdWJsZSlhbHBo
YSBjYW5Qcm92aQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gV2UgZG9uJ3QgdXNl
IHRoaXMgQVBJLCBidXQgbWFrZSBzdXJlIHRoYXQgaXQgY29tcGlsZXMgd2l0aCB0aGUgbmV3CiAg
ICAgLy8gY29tcGFzcyBwYXJhbWV0ZXJzLgotICAgIG1faW50ZXJuYWwgPSBbW1dlYkRldmljZU9y
aWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmljZU9yaWVudGF0aW9uOkRl
dmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJvdmlkZUFscGhhLCBhbHBo
YSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0KGNhblByb3ZpZGVHYW1t
YSwgZ2FtbWEpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCldOworICAgIG1faW50ZXJuYWwg
PSBbW1dlYkRldmljZU9yaWVudGF0aW9uSW50ZXJuYWwgYWxsb2NdIGluaXRXaXRoQ29yZURldmlj
ZU9yaWVudGF0aW9uOkRldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKGNvbnZlcnQoY2FuUHJv
dmlkZUFscGhhLCBhbHBoYSksIGNvbnZlcnQoY2FuUHJvdmlkZUJldGEsIGJldGEpLCBjb252ZXJ0
KGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCldOwog
I2Vsc2UKLSAgICBtX2ludGVybmFsID0gW1tXZWJEZXZpY2VPcmllbnRhdGlvbkludGVybmFsIGFs
bG9jXSBpbml0V2l0aENvcmVEZXZpY2VPcmllbnRhdGlvbjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6
OmNyZWF0ZShjb252ZXJ0KGNhblByb3ZpZGVBbHBoYSwgYWxwaGEpLCBjb252ZXJ0KGNhblByb3Zp
ZGVCZXRhLCBiZXRhKSwgY29udmVydChjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKSwgV1RGOjpudWxs
b3B0KV07CisgICAgbV9pbnRlcm5hbCA9IFtbV2ViRGV2aWNlT3JpZW50YXRpb25JbnRlcm5hbCBh
bGxvY10gaW5pdFdpdGhDb3JlRGV2aWNlT3JpZW50YXRpb246RGV2aWNlT3JpZW50YXRpb25EYXRh
OjpjcmVhdGUoY29udmVydChjYW5Qcm92aWRlQWxwaGEsIGFscGhhKSwgY29udmVydChjYW5Qcm92
aWRlQmV0YSwgYmV0YSksIGNvbnZlcnQoY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSksIHN0ZDo6bnVs
bG9wdCldOwogI2VuZGlmCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA5NWJkYTM5MGNhNjliYTZiOTYyMGY1MWJl
ZTY5NmIyMTIzOWFiMTRkLi42MTk5YThjNDdiNGIwZmVmNGU5YjIzNTA0YjI0OTIzNTQ1YjJjZGUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTgx
Miw3ICs4MTIsNyBAQCAtIChPcHRpb25hbDxXZWJDb3JlOjpTaW1wbGVSYW5nZT4pX2NvbnZlcnRU
b0RPTVJhbmdlOihOU1JhbmdlKW5zcmFuZ2UKIC0gKE9wdGlvbmFsPFdlYkNvcmU6OlNpbXBsZVJh
bmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmFuZ2VJc1JlbGF0aXZlVG86
KFdlYlJhbmdlSXNSZWxhdGl2ZVRvKXJhbmdlSXNSZWxhdGl2ZVRvCiB7CiAgICAgaWYgKHJhbmdl
LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAocmFuZ2VJc1JlbGF0aXZlVG8g
PT0gV2ViUmFuZ2VJc1JlbGF0aXZlVG86OkVkaXRhYmxlUm9vdCkgewogICAgICAgICAvLyBPdXIg
Y3JpdGljYWwgYXNzdW1wdGlvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIG9ubHkgY2FsbGVk
IGJ5IGlucHV0IG1ldGhvZHMgdGhhdApAQCAtODIzLDcgKzgyMyw3IEBAIC0gKE9wdGlvbmFsPFdl
YkNvcmU6OlNpbXBsZVJhbmdlPilfY29udmVydFRvRE9NUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgcmFu
Z2VJc1JlbGF0CiAgICAgICAgIC8vIFRoYXQgZml0cyB3aXRoIEFwcEtpdCdzIGlkZWEgb2YgYW4g
aW5wdXQgY29udGV4dC4KICAgICAgICAgYXV0byogZWxlbWVudCA9IF9wcml2YXRlLT5jb3JlRnJh
bWUtPnNlbGVjdGlvbigpLnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudCgpOwog
ICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHJlc29sdmVD
aGFyYWN0ZXJSYW5nZShtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoKmVsZW1lbnQpLCBy
YW5nZSk7CiAgICAgfQogCkBAIC04MzEsNyArODMxLDcgQEAgLSAoT3B0aW9uYWw8V2ViQ29yZTo6
U2ltcGxlUmFuZ2U+KV9jb252ZXJ0VG9ET01SYW5nZTooTlNSYW5nZSlyYW5nZSByYW5nZUlzUmVs
YXQKIAogICAgIGF1dG8gcGFyYWdyYXBoU3RhcnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydE9m
UGFyYWdyYXBoKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnZp
c2libGVTdGFydCgpKSk7CiAgICAgaWYgKCFwYXJhZ3JhcGhTdGFydCkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
c2NvcGVFbmQgPSBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZUNvbnRlbnRzKHBhcmFncmFwaFN0
YXJ0LT5jb250YWluZXItPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpOwogICAgIHJldHVybiBXZWJD
b3JlOjpyZXNvbHZlQ2hhcmFjdGVyUmFuZ2UoeyBXVEZNb3ZlKCpwYXJhZ3JhcGhTdGFydCksIFdU
Rk1vdmUoc2NvcGVFbmQpIH0sIHJhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5tbQppbmRleCA1ZGJmZDM1
NWE4NWM5N2UwMjliZTUxZjc0NTc1NWQzMTVkNDBlOTJkLi40M2M0N2NlMWM1NDU5ZmEwZTc5MDI1
MWJiMmM5Yzg0M2FkNWE4NjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLm1tCkBAIC01OSw3ICs1OSw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uCiBPcHRpb25hbDxHZW9sb2Nh
dGlvblBvc2l0aW9uRGF0YT4gY29yZShXZWJHZW9sb2NhdGlvblBvc2l0aW9uICpwb3NpdGlvbikK
IHsKICAgICBpZiAoIXBvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBwb3NpdGlvbi0+X2ludGVybmFs
LT5fcG9zaXRpb247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCmluZGV4IDYxZDZmNGU4NjU5NGRjYWI3ZTYxNzkwNzA0YjcwOWVmNWNjYzJi
ZTAuLjA4NGFiNzMxNGY5NDM2ZWYxMzQ4MTQxODM3ZWEyZTY5Y2RmNjYxMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDI5LDcgKzQy
OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4gdG9BY3Rp
b24oTlNJbnRlZ2VyIHRhZykKICAgICBjYXNlIFdlYk1lbnVJdGVtVGFnVHJhbnNsYXRlOgogICAg
ICAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtVGFnVHJhbnNsYXRlOwogICAgIH0KLSAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBP
cHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlv
bikKQEAgLTQzNyw3ICs0MzcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TlNJbnRlZ2VyPiB0b1RhZyhX
ZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiAgICAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z05vQWN0aW9uOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3
V2luZG93OgogICAgICAgICByZXR1cm4gV2ViTWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93
OwpAQCAtNjA5LDcgKzYwOSw3IEBAIHN0YXRpYyBPcHRpb25hbDxOU0ludGVnZXI+IHRvVGFnKFdl
YkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKICAgICAgICAgcmV0dXJuIFdlYk1lbnVJ
dGVtVGFnVG9nZ2xlVmlkZW9GdWxsc2NyZWVuOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
QWRkSGlnaGxpZ2h0VG9DdXJyZW50R3JvdXA6CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdB
ZGRIaWdobGlnaHRUb05ld0dyb3VwOgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU2hh
cmVNZW51OgogICAgICAgICByZXR1cm4gV2ViTWVudUl0ZW1UYWdTaGFyZU1lbnU7CiAgICAgY2Fz
ZSBDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVWaWRlb0VuaGFuY2VkRnVsbHNjcmVlbjoKQEAgLTYx
Nyw3ICs2MTcsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TlNJbnRlZ2VyPiB0b1RhZyhXZWJDb3JlOjpD
b250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdUcmFu
c2xhdGU6CiAgICAgICAgIHJldHVybiBXZWJNZW51SXRlbVRhZ1RyYW5zbGF0ZTsKICAgICBjYXNl
IENvbnRleHRNZW51SXRlbVRhZ1JldmVhbEltYWdlOgotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1CYXNlQ3VzdG9tVGFnIC4uLiBDb250ZXh0TWVudUl0ZW1MYXN0Q3VzdG9tVGFnOgogICAg
ICAgICAvLyBXZSBqdXN0IHBhc3MgdGhlc2UgdGhyb3VnaC4KQEAgLTYyNyw3ICs2MjcsNyBAQCBz
dGF0aWMgT3B0aW9uYWw8TlNJbnRlZ2VyPiB0b1RhZyhXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24pCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogQGltcGxl
bWVudGF0aW9uIFdlYk1lbnVUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCAzMDEwYTZhODhiOTU3YzkwNzc5MTQ2ODg4YzY2ODkzYzRiNWQ3YjE3
Li4xYmFkM2Y4YWY2OTYyMGJjZDUzMGMwZWJmOTczMmJiMzVjM2IzZGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01NjgyLDcgKzU2ODIsNyBAQCAt
ICh2b2lkKXZpZXdEaWRNb3ZlVG9XaW5kb3cKIC0gKHZvaWQpZG9XaW5kb3dEaWRDaGFuZ2VTY3Jl
ZW4KIHsKICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZhdGUtPnBhZ2UpCi0gICAgICAgIF9wcml2
YXRlLT5wYWdlLT5jaHJvbWUoKS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoV2ViQ29yZTo6ZGlzcGxh
eUlEKHNlbGYud2luZG93LnNjcmVlbiksIFdURjo6bnVsbG9wdCk7CisgICAgICAgIF9wcml2YXRl
LT5wYWdlLT5jaHJvbWUoKS53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoV2ViQ29yZTo6ZGlzcGxheUlE
KHNlbGYud2luZG93LnNjcmVlbiksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIC0gKHZvaWQpX3dpbmRv
d0NoYW5nZWRLZXlTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCBmNjMzYzM0YTEzNGIwYjY1YmU4YWExMWI2
NTZiM2ZlOTBlMjFlMDYyLi44NDI3MDgxY2FjOWE3ZDA4ZTdiZjE2NzAzNTk3Yjg0ZjNhMDk3Nzk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFi
YXNlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlV2luLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBpbmxpbmUgVmVjdG9yPGlu
dD4gcGFyc2VWZXJzaW9uU3RyaW5nKGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZykKICAgICAg
ICAgZm9yIChlbmRQb3MgPSBzdGFydFBvczsgZW5kUG9zIDwgdmVyc2lvblN0cmluZy5sZW5ndGgo
KTsgKytlbmRQb3MpCiAgICAgICAgICAgICBpZiAodmVyc2lvblN0cmluZ1tlbmRQb3NdID09ICcu
JyB8fCB2ZXJzaW9uU3RyaW5nW2VuZFBvc10gPT0gJ18nKQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB2ZXJzaW9uLmFwcGVuZChwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KFN0cmluZ1ZpZXcgeyB2ZXJzaW9uU3RyaW5nIH0uc3Vic3RyaW5nKHN0YXJ0UG9zLCBl
bmRQb3MgLSBzdGFydFBvcykpLnZhbHVlT3IoMCkpOworICAgICAgICB2ZXJzaW9uLmFwcGVuZChw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KFN0cmluZ1ZpZXcgeyB2ZXJzaW9u
U3RyaW5nIH0uc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpLnZhbHVlX29y
KDApKTsKICAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3MgKyAxOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTM4NDAyMmMz
NDAyM2IxZTM1ZTJhMmUwOTZhMjI5YmI5ZTAzMDdhNi4uYzBjNDA1N2Y2YmVmODNjODJjYjc3ZGM2
NzM0OTg4MTA4ODFlZDA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJm
b3JtUmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIFVSTCByZXF1ZXN0VVJMID0g
cmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAg
IFN0cmluZyBqc1N0cmluZyA9IHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJM
KTsKIAotICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+
c2hvdWxkQWxsb3dQb3B1cHMoKSA/IE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDogV1RGOjpudWxsb3B0KTsKKyAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkg
PyBPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKSA6IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBpZiAoanNTdHJpbmcuaXNOdWxsKCkpIHsKICAg
ICAgICAgLy8gaWYgdGhpcyBpcyBub3QgYSB0YXJnZXRlZCByZXF1ZXN0LCBjcmVhdGUgYSBzdHJl
YW0gZm9yIGl0LiBvdGhlcndpc2UsCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVp
bnQzMl90IGxlbgogICAgICAgICAgICAgICAgIFN0cmluZyBjb250ZW50TGVuZ3RoID0gaGVhZGVy
RmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6Q29udGVudExlbmd0aCk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoIWNvbnRlbnRMZW5ndGguaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgIGRh
dGFMZW5ndGggPSBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1bnNp
Z25lZD4oY29udGVudExlbmd0aCkudmFsdWVPcigwKSwgZGF0YUxlbmd0aCk7CisgICAgICAgICAg
ICAgICAgICAgIGRhdGFMZW5ndGggPSBzdGQ6Om1pbihwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1bnNpZ25lZD4oY29udGVudExlbmd0aCkudmFsdWVfb3IoMCksIGRhdGFMZW5ndGgp
OwogICAgICAgICAgICAgICAgIGhlYWRlckZpZWxkcy5yZW1vdmUoSFRUUEhlYWRlck5hbWU6OkNv
bnRlbnRMZW5ndGgpOwogCiAgICAgICAgICAgICAgICAgcG9zdERhdGEgKz0gbG9jYXRpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMGU2NjkwODI3ZjgwYWIxN2UzZTMwYjdl
MmE4OTI1ZDEzN2M2NmQzNS4uYTczMTk2ODIxMGNkNzA5YzUzOGJiMjMxZjNhNTUxZTU2YmE3NGY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTIwLDEyICsxMjAsMTIgQEAg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJGcmFtZUxvYWRlckNsaWVudCgpCiAKIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZyYW1lSUQoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
aGFzV2ViVmlldygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKaW5kZXggNzIx
ZmM5MDg0YmY2ODMxNTY4NDZkNjJhNDZlMTU4YzJjYmY2ZTMyZC4uMzhjYTE3MWNjNmI4ODJhNGQ5
NTVlNDUwYjgzMzc1MjZjMjcwZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcApA
QCAtNjksMTAgKzY5LDEwIEBAIE9wdGlvbmFsPEdlb2xvY2F0aW9uUG9zaXRpb25EYXRhPiBXZWJH
ZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKIHsKICAgICBDT01QdHI8SVdlYkdlb2xv
Y2F0aW9uUHJvdmlkZXI+IHByb3ZpZGVyOwogICAgIGlmIChGQUlMRUQobV93ZWJWaWV3LT5nZW9s
b2NhdGlvblByb3ZpZGVyKCZwcm92aWRlcikpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIENPTVB0cjxJV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbj4gcG9zaXRpb247CiAgICAgaWYgKEZBSUxFRChwcm92aWRlci0+bGFzdFBvc2l0
aW9uKCZwb3NpdGlvbikpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBjb3JlKHBvc2l0aW9uLmdldCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmNwcAppbmRleCBlNjBlYjIxZmRjMDE2MjE1ZTc2MmVmOTAzOGYzZDQ1OWQwYjQ3M2FiLi5kNjRl
NzZhODU2NTkyMDQyMWExOGI0NmRhOGQxNTRlMmEwMDFlZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtODYsMTEgKzg2
LDExIEBAIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6aW5pdFdpdGhUaW1lc3RhbXAo
ZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGxhdGl0CiBPcHRpb25hbDxHZW9sb2NhdGlvblBvc2l0
aW9uRGF0YT4gY29yZShJV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiB7CiAgICAg
aWYgKCFwb3NpdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiB3
ZWJHZW9sb2NhdGlvblBvc2l0aW9uKFF1ZXJ5LCBwb3NpdGlvbik7CiAgICAgaWYgKCF3ZWJHZW9s
b2NhdGlvblBvc2l0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHdlYkdlb2xvY2F0aW9uUG9zaXRpb24t
PmltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA1N2NhODBlMTczZGQ5YjUzMjVmOTJmMzQ5ZmE4OTRkMWFlNjQyNjg0Li45NDVi
ODY5MjNmNmIxZmNhN2QwYjQ3NzdmMGNkMDYwMDI0NmExMDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgSFJF
U1VMVCBXZWJTZWN1cml0eU9yaWdpbjo6cG9ydChfT3V0XyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0
KQogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCi0gICAgKnJl
c3VsdCA9IG1fc2VjdXJpdHlPcmlnaW4tPnBvcnQoKS52YWx1ZU9yKDApOworICAgICpyZXN1bHQg
PSBtX3NlY3VyaXR5T3JpZ2luLT5wb3J0KCkudmFsdWVfb3IoMCk7CiAKICAgICByZXR1cm4gU19P
SzsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA0NzJkMzExZjlhZDNkMmRmZWI2YWZjZGE0ZDM5MjNmNDMyNGNiNDlkLi42YzdhOTFhNjE2YjU0
OWJlZTc0NjU3MDFhNzllMjkxNmNhNDk0MzQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjcgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE5leHQgc3RlcCB0b3dhcmQgdXNp
bmcgc3RkOjpvcHRpb25hbCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRocm91Z2ggV1RGOjpPcHRpb25h
bCB0eXBlZGVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYyODAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAq
IFNjcmlwdHMvZG8td2ViY29yZS1yZW5hbWU6IFVzZSBzY3JpcHQgdG8gcmVuYW1lIHZhbHVlT3Is
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0X3QsCisgICAgICAgIFdURjo6T3B0aW9uYWwsIFdU
Rjo6bWFrZU9wdGlvbmFsLCBhbmQgbWFrZU9wdGlvbmFsLiBPdGhlciByZW5hbWluZ3MgY2FuJ3Qg
bmVjZXNzYXJpbHkKKyAgICAgICAgYmUgZG9uZSBieSB0aGUgc2NyaXB0IGFuZCBzbyB3aWxsIGJl
IGRvbmUgaW4gbGF0ZXIgcGFzc2VzLgorCisgICAgICAgICogPG1hbnkgZmlsZXM+OiBBY2NlcHQg
dGhlIHJlbmFtaW5nIGRvbmUgYnkgZG8td2ViY29yZS1yZW5hbWUuCisKIDIwMjEtMDUtMjcgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW3J1bi13
ZWJraXQtdGVzdHNdW1dpbl0gU3RyaXAgUEhQIHN1cHBvcnQgZnJvbSB3ZWJzZXJ2ZXIKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9Db21tb24uY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd2luL0NvbW1vbi5jcHAKaW5kZXggYTM5NjBlOWFkYjQ0ZDdhNjI1Y2YzODRiM2QzZjY2MWUz
YzAzZjU4ZC4uNDZlZjg1OTI5MjgyNmUwYjU4ZDAyYzQwYTFlYTAzMTBjNjkyOWViOCAxMDA2NDQK
LS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL0NvbW1vbi5jcHAKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvd2luL0NvbW1vbi5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCBPcHRpb25hbDxDcmVkZW50
aWFsPiBhc2tDcmVkZW50aWFsKEhXTkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiByZWFsbSkK
IAogICAgIGlmIChkaWFsb2cucnVuKGhJbnN0LCBod25kLCBJRERfQVVUSCkpCiAgICAgICAgIHJl
dHVybiBkaWFsb2cuY3JlZGVudGlhbDsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIGJvb2wgYXNrU2VydmVyVHJ1c3RFdmFsdWF0aW9uKEhX
TkQgaHduZCwgY29uc3Qgc3RkOjp3c3RyaW5nJiB0ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUK
aW5kZXggMmE5MWU1N2U1YWYwNThmMTFlZTNiMTBmNGM4YmY1Y2U5NjgyMmM0My4uOTBjZDMwZTc1
NjEwMmFlYmVjYTVkMzRhODdiZDZlODI2NTZiZDI2MSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9kby13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1l
CkBAIC03NCwxMiArNzQsMTYgQEAgbXkgQHBhdGhzOwogZmluZChcJndhbnRlZCwgIlNvdXJjZS9K
YXZhU2NyaXB0Q29yZSIpOwogZmluZChcJndhbnRlZCwgIlNvdXJjZS9XVEYiKTsKIGZpbmQoXCZ3
YW50ZWQsICJTb3VyY2UvV2ViQ29yZSIpOworZmluZChcJndhbnRlZCwgIlNvdXJjZS9XZWJEcml2
ZXIiKTsKIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0TGVnYWN5Iik7CiBmaW5kKFwmd2Fu
dGVkLCAiU291cmNlL1dlYktpdCIpOwogZmluZChcJndhbnRlZCwgIlRvb2xzL2dkYiIpOwogZmlu
ZChcJndhbnRlZCwgIlRvb2xzL2xsZGIiKTsKIGZpbmQoXCZ3YW50ZWQsICJUb29scy9EdW1wUmVu
ZGVyVHJlZSIpOworZmluZChcJndhbnRlZCwgIlRvb2xzL01pbmlCcm93c2VyIik7CitmaW5kKFwm
d2FudGVkLCAiVG9vbHMvVGVzdFJ1bm5lclNoYXJlZCIpOwogZmluZChcJndhbnRlZCwgIlRvb2xz
L1Rlc3RXZWJLaXRBUEkiKTsKK2ZpbmQoXCZ3YW50ZWQsICJUb29scy9XZWJLaXRUZXN0UnVubmVy
Iik7CiAKIHN1YiB3YW50ZWQKIHsKQEAgLTEwMiwxMiArMTA2LDEyIEBAIHN1YiB3YW50ZWQKIG15
ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5hbWVzIGdv
IGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0gICAgIkRyYWdPcGVyYXRpb25Db3B5IiA9PiAiRHJhZ09w
ZXJhdGlvbjo6Q29weSIsCi0gICAgIkRyYWdPcGVyYXRpb25MaW5rIiA9PiAiRHJhZ09wZXJhdGlv
bjo6TGluayIsCi0gICAgIkRyYWdPcGVyYXRpb25HZW5lcmljIiA9PiAiRHJhZ09wZXJhdGlvbjo6
R2VuZXJpYyIsCi0gICAgIkRyYWdPcGVyYXRpb25Qcml2YXRlIiA9PiAiRHJhZ09wZXJhdGlvbjo6
UHJpdmF0ZSIsCi0gICAgIkRyYWdPcGVyYXRpb25Nb3ZlIiA9PiAiRHJhZ09wZXJhdGlvbjo6TW92
ZSIsCi0gICAgIkRyYWdPcGVyYXRpb25EZWxldGUiID0+ICJEcmFnT3BlcmF0aW9uOjpEZWxldGUi
LAorICAgICJ2YWx1ZU9yIiA9PiAidmFsdWVfb3IiLAorICAgICJXVEY6Om51bGxvcHQiID0+ICJz
dGQ6Om51bGxvcHQiLAorICAgICJXVEY6Om51bGxvcHRfdCIgPT4gInN0ZDo6bnVsbG9wdF90IiwK
KyAgICAiV1RGOjpPcHRpb25hbCIgPT4gInN0ZDo6b3B0aW9uYWwiLAorICAgICJXVEY6Om1ha2VP
cHRpb25hbCIgPT4gInN0ZDo6bWFrZV9vcHRpb25hbCIsCisgICAgIm1ha2VPcHRpb25hbCIgPT4g
InN0ZDo6bWFrZV9vcHRpb25hbCIsCiApOwogCiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRo
ZUZ1dHVyZSA9ICgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3Mv
SlNCYXNpY3MuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5j
cHAKaW5kZXggYzRjMGFlN2VhMjE3NjBmYTFkMWY1MTljNmI3MDhkMTEyYTkwOWNiZS4uNTYzZDA5
MDI4NjQzMTY3MDdmYzE2ZDU1NjFmNjY1YTQ4YWIzMDVjOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9CaW5kaW5ncy9KU0Jhc2ljcy5jcHAKQEAgLTMwLDEyICszMCwxMiBAQCBuYW1lc3Bh
Y2UgV1RSIHsKIAogT3B0aW9uYWw8Ym9vbD4gdG9PcHRpb25hbEJvb2woSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5l
ZChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBXVEY6
Om51bGxvcHQgOiBtYWtlT3B0aW9uYWwoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkp
OworICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFs
dWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlv
bmFsKEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKIH0KIAogT3B0aW9uYWw8ZG91
YmxlPiB0b09wdGlvbmFsRG91YmxlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZh
bHVlKQogewotICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8
IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gV1RGOjpudWxsb3B0IDogbWFrZU9wdGlv
bmFsKEpTVmFsdWVUb051bWJlcihjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpOworICAgIHJldHVy
biBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051bGwoY29u
dGV4dCwgdmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjptYWtlX29wdGlvbmFsKEpTVmFsdWVU
b051bWJlcihjb250ZXh0LCB2YWx1ZSwgbnVsbHB0cikpOwogfQogCiBKU1ZhbHVlUmVmIG1ha2VW
YWx1ZShKU0NvbnRleHRSZWYgY29udGV4dCwgT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRy
b2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5oCmluZGV4IGYxNjViYjQ5NTM1NWRlYWIzOWQ1NjdhNzU4OGM0OWZjY2VmNmRh
NzMuLjg0MWU1MzBlNTVmOTk3MzA2ODUxMWM5NGU5YWJkMWQxZjc4NzFiMTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5oCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TWluaW11bUVmZmVjdGl2ZVdpZHRoKGRvdWJsZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFsbG93c1ZpZXdwb3J0U2hyaW5rVG9GaXQoYm9vbCkgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRl
T3ZlcnJpZGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBXVEY6Om51bGxvcHQ7
IH0KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25z
dCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPikgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CiAKICAgICB2aXJ0dWFsIEpTT2JqZWN0UmVmIGNvbnRlbnRWaXNpYmxlUmVjdCgp
IGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VENQU2VydmVyLmNwcAppbmRleCAwMDRiMmRhMDNhOTVhM2ZkY2EwY2Y3ODZkMjkwZDY1YTFkZWMx
N2ZhLi42NmQ3ZWFlMzkyZjA1OTEwYjcwOTRhYzk0NjNmYWIwYThlOTIyZDMzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UQ1BTZXJ2ZXIuY3BwCkBAIC0yNjMsNyArMjYzLDcgQEAgYXV0byBUQ1BTZXJ2ZXI6OnNv
Y2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKSAtPiBPcHRpb25hbDxTb2NrZXQ+CiB7
CiAgICAgU29ja2V0IGxpc3RlbmluZ1NvY2tldCA9IHNvY2tldChQRl9JTkVULCBTT0NLX1NUUkVB
TSwgMCk7CiAgICAgaWYgKGxpc3RlbmluZ1NvY2tldCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICAvLyBQ
b3J0cyA0OTE1Mi02NTUzNSBhcmUgdW5hbGxvY2F0ZWQgcG9ydHMuIFRyeSB1bnRpbCB3ZSBmaW5k
IG9uZSB0aGF0J3MgZnJlZS4KICAgICBmb3IgKFBvcnQgcG9ydCA9IDQ5MTUyOyBwb3J0OyBwb3J0
KyspIHsKQEAgLTI3OSw3ICsyNzksNyBAQCBhdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3Rl
bihzaXplX3QgY29ubmVjdGlvbnMpIC0+IE9wdGlvbmFsPFNvY2tldD4KICAgICAgICAgaWYgKGxp
c3RlbihsaXN0ZW5pbmdTb2NrZXQsIGNvbm5lY3Rpb25zKSA9PSAtMSkgewogICAgICAgICAgICAg
Ly8gTGlzdGVuaW5nIGZhaWxlZC4KICAgICAgICAgICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBtX3BvcnQgPSBwb3J0OwogICAgICAgICBy
ZXR1cm4gbGlzdGVuaW5nU29ja2V0OyAvLyBTdWNjZXNzZnVsbHkgc2V0IHVwIGxpc3RlbmluZyBw
b3J0LgpAQCAtMjg3LDcgKzI4Nyw3IEBAIGF1dG8gVENQU2VydmVyOjpzb2NrZXRCaW5kTGlzdGVu
KHNpemVfdCBjb25uZWN0aW9ucykgLT4gT3B0aW9uYWw8U29ja2V0PgogICAgIAogICAgIC8vIENv
dWxkbid0IGZpbmQgYW4gYXZhaWxhYmxlIHBvcnQuCiAgICAgY2xvc2UobGlzdGVuaW5nU29ja2V0
KTsKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHRlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTb2NrZXQgc29j
a2V0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgKaW5kZXggOTBlMmUzMThiMGYyYTRkYThhZGRjNGMy
MTEzZDliZGUyNjhlNjYwZi4uMzM2NGFjZDNlMTg2NTYwMmFjZGMwNWFlY2JmMjVjYjY3Y2QxNzA0
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAgICAgICAgIEhUVFBTLCBIVFRQU1By
b3h5LCBIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QKICAgICB9OwotICAgIFRDUFNl
cnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2X3Q+
IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9ucyA9IDEpOwor
ICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8
dWludDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBzdGQ6Om51bGxvcHQsIHNpemVfdCBjb25uZWN0aW9u
cyA9IDEpOwogI2VuZGlmIC8vIEhBVkUoU1NMKQogICAgIH5UQ1BTZXJ2ZXIoKTsKICAgICAKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIAogI2lmIEhBVkUoU1NMKQogICAgIHN0YXRpYyB2
b2lkIHJlc3BvbmRXaXRoT0soU1NMKik7Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRTZWN1cmVDb25u
ZWN0aW9uKFNvY2tldCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFu
ZGxlciwgYm9vbCByZXF1ZXN0Q2xpZW50Q2VydGlmaWNhdGUgPSBmYWxzZSwgT3B0aW9uYWw8dWlu
dDE2X3Q+IG1heFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOworICAgIHN0YXRpYyB2b2lkIHN0
YXJ0U2VjdXJlQ29ubmVjdGlvbihTb2NrZXQsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJl
Q29ubmVjdGlvbkhhbmRsZXIsIGJvb2wgcmVxdWVzdENsaWVudENlcnRpZmljYXRlID0gZmFsc2Us
IE9wdGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uID0gc3RkOjpudWxsb3B0KTsKICNlbmRp
ZgogICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Z1bmN0aW9uLmNwcAppbmRleCBmY2Y4ZTZi
YjM4YTJkM2JmNTA1MmViNTIzNTc4ZWQzMTg5MzgxZDkwLi4wZDU5ZDNlYmI0MDMyZTgwYjk4NDc1
Y2ZiNTE3YTEwYjllNmRlYTRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9GdW5jdGlvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRnVu
Y3Rpb24uY3BwCkBAIC0yMDksOCArMjA5LDggQEAgVEVTVChXVEZfRnVuY3Rpb24sIEFzc2lnbkJl
Zm9yZURlc3Ryb3kpCiAgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oRnVuY3Rpb25E
ZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0KSk7CiAgICAgRVhQRUNUX1RSVUUoRnVu
Y3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uQXNCb29sLnZhbHVlKCkpOwogICAgIEVY
UEVDVF9FUSgxVSwgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0LnZh
bHVlKCkpOwotICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9
IFdURjo6bnVsbG9wdDsKLSAgICBGdW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25S
ZXN1bHQgPSBXVEY6Om51bGxvcHQ7CisgICAgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1
bmN0aW9uQXNCb29sID0gc3RkOjpudWxsb3B0OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVj
a2VyOjpmdW5jdGlvblJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKIAogICAgIGEgPSBGdW5jdGlvbkRl
c3RydWN0aW9uQ2hlY2tlcihhKTsKICAgICBhID0gTW92ZU9ubHkgeyAyIH07CkBAIC0yMTgsOCAr
MjE4LDggQEAgVEVTVChXVEZfRnVuY3Rpb24sIEFzc2lnbkJlZm9yZURlc3Ryb3kpCiAgICAgRVhQ
RUNUX1RSVUUoc3RhdGljX2Nhc3Q8Ym9vbD4oRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1
bmN0aW9uUmVzdWx0KSk7CiAgICAgRVhQRUNUX1RSVUUoRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNr
ZXI6OmZ1bmN0aW9uQXNCb29sLnZhbHVlKCkpOwogICAgIEVYUEVDVF9FUSgyVSwgRnVuY3Rpb25E
ZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uUmVzdWx0LnZhbHVlKCkpOwotICAgIEZ1bmN0aW9u
RGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvbkFzQm9vbCA9IFdURjo6bnVsbG9wdDsKLSAgICBG
dW5jdGlvbkRlc3RydWN0aW9uQ2hlY2tlcjo6ZnVuY3Rpb25SZXN1bHQgPSBXVEY6Om51bGxvcHQ7
CisgICAgRnVuY3Rpb25EZXN0cnVjdGlvbkNoZWNrZXI6OmZ1bmN0aW9uQXNCb29sID0gc3RkOjpu
dWxsb3B0OworICAgIEZ1bmN0aW9uRGVzdHJ1Y3Rpb25DaGVja2VyOjpmdW5jdGlvblJlc3VsdCA9
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RhdGljIGludCByZXR1cm5UaHJlZSgpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaGVyLmNwcAppbmRleCA0MTdmNjRiMDJkMzBjNjhhOWMzNTVk
OTc5NzVlZTcyMGJhMjFmNjBhLi4wZTc3MDNlNmYzMGRkMDI1Yzc1MGY1MzU4YzgyZTI1NDFjODg2
NjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hlci5jcHAKQEAgLTE2OCw3
ICsxNjgsNyBAQCBURVNUKFdURiwgSGFzaGVyX211bHRpcGxlKQogICAgIEVYUEVDVF9FUSh6ZXJv
MzJCaXRIYXNoLCBjb21wdXRlSGFzaChzdGQ6OmFycmF5PGludCwgMT4geyB7IDAgfSB9KSk7CiAg
ICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKFZlY3RvcjxpbnQ+IHsgMCB9
KSk7CiAgICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKFZlY3RvcjxpbnQs
IDE+IHsgMCB9KSk7Ci0gICAgRVhQRUNUX0VRKHplcm8zMkJpdEhhc2gsIGNvbXB1dGVIYXNoKE9w
dGlvbmFsPGludD4geyBXVEY6Om51bGxvcHQgfSkpOworICAgIEVYUEVDVF9FUSh6ZXJvMzJCaXRI
YXNoLCBjb21wdXRlSGFzaChPcHRpb25hbDxpbnQ+IHsgc3RkOjpudWxsb3B0IH0pKTsKICAgICBF
WFBFQ1RfRVEoemVybzMyQml0SGFzaCwgY29tcHV0ZUhhc2goc3RkOjptYWtlX3R1cGxlKDApKSk7
CiAKICAgICBFWFBFQ1RfRVEob25lNjRCaXRIYXNoLCBjb21wdXRlSGFzaCgxLCAwKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9NYXJrYWJsZS5jcHAKaW5kZXggYjkzNTU3NTIyOGRi
OTI1MjVhZWZlMzIzOTIyMzQ5ZDQ4ZWEyZGY3Yi4uNWI3ZTE1MzE3Y2JmZTliNjNkZTM4ZjRhZDA3
OWRkZTg3NWM0YjgyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
TWFya2FibGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL01hcmthYmxl
LmNwcApAQCAtMzksNyArMzksNyBAQCBURVNUKFdURl9NYXJrYWJsZSwgRGlzZW5nYWdlZCkKICAg
ICB9CiAKICAgICB7Ci0gICAgICAgIE1hcmthYmxlPGludCwgSW50ZWdyYWxNYXJrYWJsZVRyYWl0
czxpbnQsIDQyPj4gb3B0aW9uYWwgeyBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgTWFya2FibGU8
aW50LCBJbnRlZ3JhbE1hcmthYmxlVHJhaXRzPGludCwgNDI+PiBvcHRpb25hbCB7IHN0ZDo6bnVs
bG9wdCB9OwogCiAgICAgICAgIEVYUEVDVF9GQUxTRShzdGF0aWNfY2FzdDxib29sPihvcHRpb25h
bCkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgVEVTVChXVEZfTWFya2FibGUsIEVuZ2FnZWQp
CiAgICAgICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PGJvb2w+KG9wdGlvbmFsKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSg0MSwgb3B0aW9uYWwudmFsdWUoKSk7CiAKLSAgICAgICAgb3B0aW9uYWwg
PSBXVEY6Om51bGxvcHQ7CisgICAgICAgIG9wdGlvbmFsID0gc3RkOjpudWxsb3B0OwogICAgICAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8Ym9vbD4ob3B0aW9uYWwpKTsKIAogICAgICAgICBv
cHRpb25hbCA9IDQyOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcAppbmRleCBiNGM2YzllOWZiY2Y5ZGZl
NDk4YjU1NjBlODc1ZTdjZWEwZDFjN2RlLi5kMzE2MGRhZDY0YzcxMzFhMjU4YzhkNjcyYzgyMzE5
MmYwOTlhNzBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJp
bmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmNwcApAQCAtMzAsOCArMzAsOCBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV1RGLCBQYXJzZUludGVnZXIpCiB7Ci0gICAg
RVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KG51bGxwdHIpKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFyc2VJ
bnRlZ2VyPGludD4oIiIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVn
ZXI8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1Rf
RVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiIikpOwogICAgIEVYUEVDVF9FUSgw
LCBwYXJzZUludGVnZXI8aW50PigiMCIpKTsKICAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2Vy
PGludD4oIjEiKSk7CiAgICAgRVhQRUNUX0VRKDMsIHBhcnNlSW50ZWdlcjxpbnQ+KCIzIikpOwpA
QCAtMzksMjYgKzM5LDI2IEBAIFRFU1QoV1RGLCBQYXJzZUludGVnZXIpCiAgICAgRVhQRUNUX0VR
KDEyMzQ1LCBwYXJzZUludGVnZXI8aW50PigiMTIzNDUiKSk7CiAgICAgRVhQRUNUX0VRKC0xMjM0
NSwgcGFyc2VJbnRlZ2VyPGludD4oIi0xMjM0NSIpKTsKICAgICBFWFBFQ1RfRVEoMjE0NzQ4MzY0
NywgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDciKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6
bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VR
KHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIjIxNDc0ODM2NDgiKSk7CiAgICAgRVhQ
RUNUX0VRKC0yMTQ3NDgzNjQ3IC0gMSwgcGFyc2VJbnRlZ2VyPGludD4oIi0yMTQ3NDgzNjQ4Iikp
OwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCItMjE0NzQ4
MzY0OSIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50Pigi
eDEiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyPGludD4oIi0y
MTQ3NDgzNjQ5IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxp
bnQ+KCJ4MSIpKTsKICAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyPGludD4oIiAxIikpOwot
ICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjxpbnQ+KCIxeCIpKTsKKyAg
ICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXI8aW50PigiMXgiKSk7CiAKICAg
ICBFWFBFQ1RfRVEoMFUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjAiKSk7CiAgICAg
RVhQRUNUX0VRKDNVLCAwVSArICpwYXJzZUludGVnZXI8dWludDE2X3Q+KCIzIikpOwogICAgIEVY
UEVDVF9FUSgxMjM0NVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjEyMzQ1IikpOwog
ICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlcjx1aW50MTZfdD4oIjY1NTM1
IikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50MTZfdD4o
Ii0xIikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50MTZf
dD4oIi0zIikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlcjx1aW50
MTZfdD4oIjY1NTM2IikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdl
cjx1aW50MTZfdD4oIi0xIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNlSW50
ZWdlcjx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIHBhcnNl
SW50ZWdlcjx1aW50MTZfdD4oIjY1NTM2IikpOwogfQogCiBURVNUKFdURiwgUGFyc2VJbnRlZ2Vy
QWxsb3dpbmdUcmFpbGluZ0p1bmspCiB7Ci0gICAgRVhQRUNUX0VRKFdURjo6bnVsbG9wdCwgcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4obnVsbHB0cikpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9w
dCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PihzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4obnVsbHB0cikpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUlu
dGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIiKSk7CiAgICAgRVhQRUNUX0VRKDAsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjAiKSk7CiAgICAgRVhQRUNUX0VR
KDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjEiKSk7CiAgICAgRVhQ
RUNUX0VRKDMsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oIjMiKSk7CkBA
IC02NiwxMCArNjYsMTAgQEAgVEVTVChXVEYsIFBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rKQogICAgIEVYUEVDVF9FUSgxMjM0NSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1
bms8aW50PigiMTIzNDUiKSk7CiAgICAgRVhQRUNUX0VRKC0xMjM0NSwgcGFyc2VJbnRlZ2VyQWxs
b3dpbmdUcmFpbGluZ0p1bms8aW50PigiLTEyMzQ1IikpOwogICAgIEVYUEVDVF9FUSgyMTQ3NDgz
NjQ3LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCIyMTQ3NDgzNjQ3Iikp
OwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxp
bmdKdW5rPGludD4oIjIxNDc0ODM2NDgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwg
cGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50PigiMjE0NzQ4MzY0OCIpKTsKICAg
ICBFWFBFQ1RfRVEoLTIxNDc0ODM2NDcgLSAxLCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5n
SnVuazxpbnQ+KCItMjE0NzQ4MzY0OCIpKTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBw
YXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKLSAg
ICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVu
azxpbnQ+KCJ4MSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJB
bGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCItMjE0NzQ4MzY0OSIpKTsKKyAgICBFWFBFQ1RfRVEo
c3RkOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxpbnQ+KCJ4MSIp
KTsKICAgICBFWFBFQ1RfRVEoMSwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8aW50
PigiIDEiKSk7CiAgICAgRVhQRUNUX0VRKDEsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdK
dW5rPGludD4oIjF4IikpOwogCkBAIC03Nyw5ICs3Nyw5IEBAIFRFU1QoV1RGLCBQYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuaykKICAgICBFWFBFQ1RfRVEoM1UsIDBVICsgKnBhcnNlSW50
ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiMyIpKTsKICAgICBFWFBFQ1RfRVEo
MTIzNDVVLCAwVSArICpwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4o
IjEyMzQ1IikpOwogICAgIEVYUEVDVF9FUSg2NTUzNVUsIDBVICsgKnBhcnNlSW50ZWdlckFsbG93
aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzUiKSk7Ci0gICAgRVhQRUNUX0VRKFdURjo6
bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8dWludDE2X3Q+KCItMSIp
KTsKLSAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWls
aW5nSnVuazx1aW50MTZfdD4oIi0zIikpOwotICAgIEVYUEVDVF9FUShXVEY6Om51bGxvcHQsIHBh
cnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90PigiNjU1MzYiKSk7CisgICAg
RVhQRUNUX0VRKHN0ZDo6bnVsbG9wdCwgcGFyc2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8
dWludDE2X3Q+KCItMSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpudWxsb3B0LCBwYXJzZUludGVn
ZXJBbGxvd2luZ1RyYWlsaW5nSnVuazx1aW50MTZfdD4oIi0zIikpOworICAgIEVYUEVDVF9FUShz
dGQ6Om51bGxvcHQsIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPHVpbnQxNl90Pigi
NjU1MzYiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCmluZGV4IDVmYzM5MzNhMjQ5YjA1MjUy
MDllOTcxZjFiNTEyNzgzMTE1ZjQ3ZDIuLjk4MWYyZDcwYzNiMzBmZjJkMWQxZjA5M2VkZTQ4MWI5
MTc3YzNjZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBh
cnNlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNw
cApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgRXhwZWN0ZWRQYXJ0cyYgcGFydHMsIFRlc3RUYQogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5o
b3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCku
dmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVf
b3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CkBAIC0x
MjEsNyArMTIxLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW4KICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy51c2VyLCB1cmwudXNlcigpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGFz
c3dvcmQsIHVybC5wYXNzd29yZCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwg
dXJsLmhvc3QoKSkpOwotICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVl
T3IoMCkpOworICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDAp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQ
RUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMuZnJhZ21lbnQsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IEV4cGVjdGVkUGFydHMmIHBhCiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBh
c3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhv
c3QsIHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQo
KS52YWx1ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52
YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgo
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlm
aWVyKCkpKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBjaGVja1JlbGF0aXZlVVJM
RGlmZmVyZW5jZXMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYgogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRz
TmV3LnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigwKSk7CisgICAgRVhQRUNUX0VRKHBhcnRzTmV3
LnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
TmV3LnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5xdWVy
eSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5mcmFnbWVudCwg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VmVjdG9yLmNwcAppbmRleCAyMmNlY2E1N2U1YTA0YmJlMGE3YjA0N2U0OWI2Y2QxNGM5YTAxZWJl
Li5mZGFiYTk0NzAzOTVlYTgwMTk4NTBlOGZiOGFlYTA5YWZlMzdhZjg3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTg5OCwxMCArODk4LDEwIEBAIFRFU1Qo
V1RGX1ZlY3RvciwgTWFwRnJvbUhhc2hNYXApCiAKIH0KIAotV1RGOjpPcHRpb25hbDxpbnQ+IGV2
ZW5NdWx0aXBsaWVkQnlGaXZlKGludCBpbnB1dCkKK3N0ZDo6b3B0aW9uYWw8aW50PiBldmVuTXVs
dGlwbGllZEJ5Rml2ZShpbnQgaW5wdXQpCiB7CiAgICAgaWYgKGlucHV0ICUgMikKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBy
ZXR1cm4gaW5wdXQgKiA1OwogfQogCkBAIC05NjUsNyArOTY1LDcgQEAgVEVTVChXVEZfVmVjdG9y
LCBDb21wYWN0TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5SZWZQdHIpCiBPcHRpb25hbDxSZWY8UmVm
Q291bnRlZE9iamVjdD4+IGNyZWF0ZVJlZkNvdW50ZWRGb3JFdmVuKGludCBpbnB1dCkKIHsKICAg
ICBpZiAoaW5wdXQgJSAyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiBSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUo
aW5wdXQpOwogfQogCkBAIC05ODcsNyArOTg3LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0
TWFwU3RhdGljRnVuY3Rpb25SZXR1cm5PcHRpb25hbFJlZikKIE9wdGlvbmFsPFJlZlB0cjxSZWZD
b3VudGVkT2JqZWN0Pj4gY3JlYXRlUmVmQ291bnRlZFdoZW5EaXZpc2libGVCeVRocmVlKGludCBp
bnB1dCkKIHsKICAgICBpZiAoaW5wdXQgJSAzKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmIChpbnB1dCAlIDIpCiAgICAg
ICAgIHJldHVybiBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oKTsKICAgICByZXR1cm4gUmVmUHRy
PFJlZkNvdW50ZWRPYmplY3Q+KFJlZkNvdW50ZWRPYmplY3Q6OmNyZWF0ZShpbnB1dCkpOwpAQCAt
MTAxNSw3ICsxMDE1LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhUmV0dXJu
T3B0aW9uYWwpCiAKICAgICBhdXRvIGZ1bmN0aW9uID0gW10oY29uc3QgU3RyaW5nJiB2YWx1ZSkg
LT4gT3B0aW9uYWw8U3RyaW5nPiB7CiAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA8IDUpCi0g
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7
CiAgICAgfTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShXVEY6OmNv
bXBhY3RNYXAodmVjdG9yLCBmdW5jdGlvbikpLCB0eXBlbmFtZSBXVEY6OlZlY3RvcjxTdHJpbmc+
Pjo6dmFsdWUsCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RN
YXBMYW1iZGFDb3B5VmVjdG9yUmV0dXJuT3B0aW9uYWxDb3VudGVkT2JqZWN0KQogICAgIGF1dG8g
ZnVuY3Rpb24gPSBbXShjb25zdCBDb3VudGVkT2JqZWN0JiBvYmplY3QpIC0+IE9wdGlvbmFsPENv
dW50ZWRPYmplY3Q+IHsKICAgICAgICAgaWYgKG9iamVjdC52YWx1ZSgpICUgMikKICAgICAgICAg
ICAgIHJldHVybiBvYmplY3Q7Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfTsKIAogICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c19zYW1lPGRlY2x0eXBlKFdURjo6Y29tcGFjdE1hcCh2ZWN0b3IsIGZ1bmN0aW9uKSksIHR5cGVu
YW1lIFdURjo6VmVjdG9yPENvdW50ZWRPYmplY3Q+Pjo6dmFsdWUsCkBAIC0xMDg2LDcgKzEwODYs
NyBAQCBURVNUKFdURl9WZWN0b3IsIENvbXBhY3RNYXBMYW1iZGFNb3ZlVmVjdG9yUmV0dXJuT3B0
aW9uYWxDb3VudGVkT2JqZWN0KQogICAgIGF1dG8gZnVuY3Rpb24gPSBbXShDb3VudGVkT2JqZWN0
JiYgb2JqZWN0KSAtPiBPcHRpb25hbDxDb3VudGVkT2JqZWN0PiB7CiAgICAgICAgIGlmIChvYmpl
Y3QudmFsdWUoKSAlIDIpCiAgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShvYmplY3QpOwotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH07CiAKICAgICBSZWZDb3VudGVkT2JqZWN0OjpzX3RvdGFsUmVmQ291bnQgPSAwOwpAQCAt
MTE1Nyw3ICsxMTU3LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBDb21wYWN0TWFwTGFtYmRhUmV0dXJu
T3B0aW9uYWxSZWZQdHIpCiAKICAgICBhdXRvIGZ1bmN0aW9uID0gWyZdKGludCB2YWx1ZSkgLT4g
T3B0aW9uYWw8UmVmUHRyPFJlZkNvdW50ZWRPYmplY3Q+PiB7CiAgICAgICAgIGlmICghKHZhbHVl
ICUgMikpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKCEodmFsdWUgJSAzKSkKICAgICAgICAgICAg
IHJldHVybiBSZWZQdHI8UmVmQ291bnRlZE9iamVjdD4oKTsKICAgICAgICAgcmV0dXJuIFJlZlB0
cjxSZWZDb3VudGVkT2JqZWN0PihSZWZDb3VudGVkT2JqZWN0OjpjcmVhdGUodmFsdWUpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BYm9ydGFibGVUYXNr
UXVldWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRh
c2tRdWV1ZS5jcHAKaW5kZXggMTE0NzkxYjM2YWE5NWZkYzE4NmRhYjU2ZDA4ZTEyOWY1NGU1NTZh
NS4uOTc2ZDY4MzI2OGZhNDI1ZTU3Njc5OTBhMTU1NTZlOWVjMmIxY2ExNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1ZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Fib3J0YWJsZVRhc2tRdWV1
ZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBURVNUKEFib3J0YWJsZVRhc2tRdWV1ZSwgU3luY1Rh
c2tzKQogICAgICAgICBFWFBFQ1RfVFJVRShyZXNwb25zZSk7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShkZXN0cnVjdGVkUmVzcG9uc2VGbGFnKTsKICAgICAgICAgRVhQRUNUX0VRKDEwMCwgcmVzcG9u
c2UtPmZhbmN5SW50KTsKLSAgICAgICAgcmVzcG9uc2UgPSBXVEY6Om51bGxvcHQ7CisgICAgICAg
IHJlc3BvbnNlID0gc3RkOjpudWxsb3B0OwogICAgICAgICBFWFBFQ1RfVFJVRShkZXN0cnVjdGVk
UmVzcG9uc2VGbGFnKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFsmXSgpIHsK
ICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQW5pbWF0aW9uRnJhbWVSYXRlLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCmluZGV4IGVk
OGU2YzJiYzBhOWY1YjkyMDIyMGE3ZWU4YjQ4ODZlZDliZGMyYzEuLjgwOWE5MGFhOGFmOTUyMzVk
ZWU0ZTljZGZmM2RjYzIyYmFiOWJkZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9BbmltYXRpb25GcmFtZVJhdGUuY3BwCkBAIC0xOTIsNyArMTky
LDcgQEAgVEVTVChBbmltYXRpb25GcmFtZVJhdGUsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZE1h
dGNoTm9taW5hbEZyYW1lUmF0ZSkKICAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vj
b25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDkwLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQ
ZXJTZWNvbmQoNDUpKTsKICAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsg
VGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0sIDUwLCBwcmVmZXJyZWRGcmFtZXNQZXJT
ZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNv
bmQoMjUpKTsKIAotICAgIEFTU0VSVF9FUShwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQoeyBUaHJv
dHRsaW5nUmVhc29uOjpPdXRzaWRlVmlld3BvcnQgfSwgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25k
LCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRNYXRjaE5vbWluYWxGcmFtZVJhdGVTZXR0aW5nKSwg
V1RGOjpudWxsb3B0KTsKKyAgICBBU1NFUlRfRVEocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsg
VGhyb3R0bGluZ1JlYXNvbjo6T3V0c2lkZVZpZXdwb3J0IH0sIEZ1bGxTcGVlZEZyYW1lc1BlclNl
Y29uZCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kTWF0Y2hOb21pbmFsRnJhbWVSYXRlU2V0dGlu
ZyksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQUykKQEAgLTIwNyw3ICsyMDcsNyBAQCBURVNUKEFu
aW1hdGlvbkZyYW1lUmF0ZSwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFMpCiAg
ICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCh7IFRocm90dGxpbmdSZWFzb246
Okxvd1Bvd2VyTW9kZSB9LCA5MCwgcHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kVGFyZ2V0NjBGUFNT
ZXR0aW5nKS52YWx1ZSgpLCBGcmFtZXNQZXJTZWNvbmQoNDUpKTsKICAgICBBU1NFUlRfRVEocHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kKHsgVGhyb3R0bGluZ1JlYXNvbjo6TG93UG93ZXJNb2RlIH0s
IDUwLCBwcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRUYXJnZXQ2MEZQU1NldHRpbmcpLnZhbHVlKCks
IEZyYW1lc1BlclNlY29uZCgyNSkpOwogCi0gICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1Bl
clNlY29uZCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRG
cmFtZXNQZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGlu
ZyksIFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX0VRKHByZWZlcnJlZEZyYW1lc1BlclNlY29u
ZCh7IFRocm90dGxpbmdSZWFzb246Ok91dHNpZGVWaWV3cG9ydCB9LCBGdWxsU3BlZWRGcmFtZXNQ
ZXJTZWNvbmQsIHByZWZlcnJlZEZyYW1lc1BlclNlY29uZFRhcmdldDYwRlBTU2V0dGluZyksIHN0
ZDo6bnVsbG9wdCk7CiB9CiAKIFRFU1QoQW5pbWF0aW9uRnJhbWVSYXRlLCBwcmVmZXJyZWRGcmFt
ZXNQZXJTZWNvbmRGcm9tSW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwCmluZGV4IDY1ZWFjZDAzOTJmN2VjMWJk
NDBhNDUzNjMwNGMyZDMyODEzMTZjZDkuLmU0ZjdlM2MxY2NiMTgzOWZlOGUzZjZjNjA3NzcyMDQx
NTBhZjE1MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9D
dGFwUmVxdWVzdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9DdGFwUmVxdWVzdFRlc3QuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RU
ZXN0LCBUZXN0Q29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0UGFyYW0pCiAgICAgVmVjdG9y
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFtcyB7
IHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXksIDI1NyB9IH07CiAgICAgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9uczo6QXV0aGVudGljYXRvclNlbGVjdGlvbkNyaXRlcmlhIHNlbGVjdGlv
biB7IEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpQbGF0Zm9ybSwgdHJ1ZSwgVXNlclZlcmlmaWNh
dGlvblJlcXVpcmVtZW50OjpQcmVmZXJyZWQgfTsKIAotICAgIFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgV1RGOjpudWxs
b3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9u
ZSwgV1RGOjpudWxsb3B0IH07CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2Vs
ZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxv
cHQgfTsKICAgICBWZWN0b3I8dWludDhfdD4gaGFzaDsKICAgICBoYXNoLmFwcGVuZChUZXN0RGF0
YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpOwog
ICAgIGF1dG8gc2VyaWFsaXplZERhdGEgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NC
T1IoaGFzaCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJp
ZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkKTsKQEAgLTg0LDcg
Kzg0LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlh
bFJlcXVlc3RQYXJhbU5vVVZOb1JLKQogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zOjpQYXJhbWV0ZXJzPiBwYXJhbXMgeyB7IFB1YmxpY0tleUNyZWRlbnRpYWxU
eXBlOjpQdWJsaWNLZXksIDcgfSwgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5
LCAyNTcgfSB9OwogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OkF1dGhl
bnRpY2F0b3JTZWxlY3Rpb25Dcml0ZXJpYSBzZWxlY3Rpb24geyBBdXRoZW50aWNhdG9yQXR0YWNo
bWVudDo6UGxhdGZvcm0sIGZhbHNlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OkRpc2Nv
dXJhZ2VkIH07CiAKLSAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlv
bnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24s
IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9Owor
ICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2Vy
LCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25D
b252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwg
c2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWRE
YXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1
dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5
OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgVEVTVChDVEFQ
UmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVVWUmVx
dWlyZWRCdXROb3RTdXAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVi
bGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgMjU3IH0g
fTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9y
U2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBs
YXRmb3JtLCBmYWxzZSwgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCB9Owog
Ci0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVz
ZXIsIHsgfSwgcGFyYW1zLCBXVEY6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlv
bkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBXVEY6Om51bGxvcHQgfTsKKyAgICBQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJh
bXMsIHN0ZDo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6bnVsbG9wdCB9OwogICAgIFZlY3Rvcjx1aW50OF90PiBoYXNo
OwogICAgIGhhc2guYXBwZW5kKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0
RGF0YTo6a0NsaWVudERhdGFIYXNoKSk7CiAgICAgYXV0byBzZXJpYWxpemVkRGF0YSA9IGVuY29k
ZU1ha2VDcmVkZW5pdGFsUmVxdWVzdEFzQ0JPUihoYXNoLCBvcHRpb25zLCBBdXRoZW50aWNhdG9y
U3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a05vdFN1cHBv
cnRlZCk7CkBAIC0xMzQsNyArMTM0LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25z
dHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVdpdGhQaW4pCiAgICAgcGluLnByb3RvY29s
ID0gcGluOjprUHJvdG9jb2xWZXJzaW9uOwogICAgIHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0YTo6
a0N0YXAyUGluQXV0aCwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoKSk7CiAKLSAgICBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9
LCBwYXJhbXMsIFdURjo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5
YW5jZVByZWZlcmVuY2U6Ok5vbmUsIFdURjo6bnVsbG9wdCB9OworICAgIFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgc3Rk
OjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5j
ZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAg
aGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjpr
Q2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNy
ZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0
ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kQ29u
ZmlndXJlZCwgcGluKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9QYXJzZWRDb250ZW50UmFuZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKaW5kZXggMjVkMmQ2NzdmYjg4ODYyMjVmZTMx
ZGI0OThlNWQ3NWQ2YzYwMGY0MC4uNjRmZTAxNzQxYTM4MmIxNzVmODI4MjMyMzI5YzNmYWVmYjQ2
ODk4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BhcnNl
ZENvbnRlbnRSYW5nZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1BhcnNlZENvbnRlbnRSYW5nZS5jcHAKQEAgLTExMiwxMSArMTEyLDExIEBAIFRFU1QoV2ViQ29y
ZSwgUGFyc2VkUmVxdWVzdFJhbmdlKQogICAgICAgICAiYnl0ZXM9MS05OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTkiCiAgICAgfTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGlucHV0IDogZmFpbHVyZUNh
c2VzKQotICAgICAgICBFWFBFQ1RfRVEoV1RGOjpudWxsb3B0LCBQYXJzZWRSZXF1ZXN0UmFuZ2U6
OnBhcnNlKGlucHV0KSk7CisgICAgICAgIEVYUEVDVF9FUShzdGQ6Om51bGxvcHQsIFBhcnNlZFJl
cXVlc3RSYW5nZTo6cGFyc2UoaW5wdXQpKTsKIAogICAgIGF1dG8gY29tcGFyZSA9IFtdIChjb25z
dCBTdHJpbmcmIGlucHV0LCBPcHRpb25hbDxzaXplX3Q+IGJlZ2luLCBPcHRpb25hbDxzaXplX3Q+
IGVuZCkgewogICAgICAgICBhdXRvIHJhbmdlID0gUGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZShp
bnB1dCk7Ci0gICAgICAgIEVYUEVDVF9ORShXVEY6Om51bGxvcHQsIHJhbmdlKTsKKyAgICAgICAg
RVhQRUNUX05FKHN0ZDo6bnVsbG9wdCwgcmFuZ2UpOwogICAgICAgICAKICAgICB9OwogICAgIGNv
bXBhcmUoImJ5dGVzPTEtMSIsIDEsIDEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NhbXBsZU1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2FtcGxlTWFwLmNwcAppbmRleCA0YmI0MmVlYWRiYzQ0ZmE4Nzg0ZWRjMmQ4OTQ0
YmM1MjE2NjdmZDMzLi40ODE4ZjNmODEzZjMyZTFiNWNlY2NjZjA4MDk3ODk4ZmY4YWU4ODcyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2FtcGxlTWFwLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIFNhbXBsZUZsYWdzIGZsYWdzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRm
b3JtU2FtcGxlKCkgZmluYWwgeyByZXR1cm4geyBQbGF0Zm9ybVNhbXBsZTo6Tm9uZSwge251bGxw
dHJ9fTsgfQotICAgIE9wdGlvbmFsPEJ5dGVSYW5nZT4gYnl0ZVJhbmdlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8Qnl0ZVJhbmdlPiBieXRlUmFu
Z2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0IGZpbmFsIHsgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCmlu
ZGV4IGUyNjE3OTMzNDI1MjI0M2JhNWYxNDE4MGY3MjI0ZWI3NzU0ZGNhMWYuLmViMjFiY2RiZTdh
YjA4ZWQ2ZmVkZTQxN2U0ZmZhYWU2NTJlNjUxYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCkBA
IC05Niw3ICs5Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nLCBjb25zCiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzc3dvcmQoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3Qs
IHVybC5ob3N0KCkpKTsKLSAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1
ZU9yKDApKTsKKyAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwogICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzLmZyYWdtZW50LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKTsKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBjaGVja1VSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBjb25zdAogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29y
ZCwgdXJsLnBhc3N3b3JkKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwu
aG9zdCgpKSk7Ci0gICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVPcigw
KSk7CisgICAgRVhQRUNUX0VRKHBhcnRzLnBvcnQsIHVybC5wb3J0KCkudmFsdWVfb3IoMCkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhdGgsIHVybC5wYXRoKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5xdWVyeSwgdXJsLnF1ZXJ5KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5mcmFnbWVudCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwCmluZGV4IGE1OThkNTRhMjc1Mjk1OGM0MmU0ZTJiNzllNTMzN2M1N2IxNzRiNDYuLjBl
MGU0MDQ3NjY4NWI2OTI3MzMwOWE1Nzg2OGQ3ZTZhZmQyOTllZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0
aE1pc3NpbmdSZXNvdXJjZSkKICAgICAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXko
KTsKICAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCwgbGlzdC5zaXpl
SW5CeXRlcygpKTsKICAgICAgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZywg
U3RvcFJlcGxheVJlYXNvbjo6UmVwbGF5ZWRBbGxJdGVtcyk7Ci0gICAgICAgIEVYUEVDVF9FUShy
ZXN1bHQubWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgRVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBz
dGQ6Om51bGxvcHQpOwogICAgIH0KIH0KIApAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAg
IE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAogICAgIHsK
ICAgICAgICAgRVhQRUNUX0VRKHR5cGUsIEl0ZW1UeXBlOjpGaWxsUGF0aCk7Ci0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQog
fTsKIApAQCAtMTM0LDggKzEzNCw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgT3V0T2ZMaW5l
SXRlbURlY29kaW5nRmFpbHVyZSkKICAgICBSZXBsYXllciByZXBsYXllciB7IGNvbnRleHQsIHNo
YWxsb3dDb3B5IH07CiAgICAgYXV0byByZXN1bHQgPSByZXBsYXllci5yZXBsYXkoKTsKICAgICBF
WFBFQ1RfR1QocmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHJl
c3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgV1RGOjpudWxsb3B0KTsKLSAgICBFWFBF
Q1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIsIFdURjo6bnVsbG9w
dCk7CisgICAgRVhQRUNUX0VRKHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgc3Rk
OjpudWxsb3B0KTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5yZWFzb25Gb3JT
dG9wcGluZywgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCk7CiB9CiAKQEAg
LTE1OCw4ICsxNTgsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIElubGluZUl0ZW1WYWxpZGF0
aW9uRmFpbHVyZSkKICAgICAgICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjb250ZXh0LCBsaXN0IH07
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIEVYUEVD
VF9FUShyZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQsIDBVKTsKLSAgICAgICAgRVhQRUNUX0VRKHJl
c3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciwgV1RGOjpudWxsb3B0KTsKLSAgICAgICAg
RVhQRUNUX0VRKHJlc3VsdC5taXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyLCBXVEY6Om51
bGxvcHQpOworICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBFWFBFQ1RfRVEocmVzdWx0Lm1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgIEVYUEVDVF9FUShy
ZXN1bHQucmVhc29uRm9yU3RvcHBpbmcsIFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JF
eHRlbnQpOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggNzU3ZWMy
NDI1ODUxMWE3ZjkxMjExYWFjY2ExNDUxZjNhYmRlMmIxMS4uMDkwNWM3ZTAwMThlZDQ4YmU3MDQ4
ZTQxMjAxMGU2NDcwOTJlY2Q5MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTQ0
LDcgKzQ0LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1w
dHkpCiAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUpOwogICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogCi0gICAgYXV0byBmaWxlU2l6ZSA9IEZpbGVTeXN0ZW06OmZpbGVT
aXplKGRhdGFiYXNlRmlsZVBhdGgpLnZhbHVlT3IoMCk7CisgICAgYXV0byBmaWxlU2l6ZSA9IEZp
bGVTeXN0ZW06OmZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgpLnZhbHVlX29yKDApOwogICAgIEVY
UEVDVF9FUSgwVSwgZmlsZVNpemUpOwogCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGRhdGFiYXNlRmlsZVBhdGgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KaW5kZXgg
YmRlYWNiNDRjODZlNjM5YTk0YTYwODg0MmVhYjI3ZjZjYThmMGI3Yi4uNGQ3YjA0Mzg0Yjc1MDUy
ZjBiOGViMmY4NTE1NWY1ODY5MzY1ZDZmZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KQEAgLTU1MSw3ICs1NTEsNyBAQCBURVNU
KFdlYktpdCwgRmFzdFNlcnZlclRydXN0KQogI2Vsc2UKICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRD
UFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wqIHNzbCkgewogICAgICAgICBFWFBFQ1Rf
RkFMU0Uoc3NsKTsKLSAgICB9LCBXVEY6Om51bGxvcHQsIDIpOworICAgIH0sIHN0ZDo6bnVsbG9w
dCwgMik7CiAjZW5kaWYKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggN2M0ZDFlNTRkYjc1Yzky
ODYxMDg0NjEzNTgxNzZkODU0ZjcyYzMzYS4uNjExMWY2YjM2N2FjMzY2YTM1MmRjZjY1NjlkM2I5
MmI4MDRiNTE0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0xMTUyLDggKzExNTIs
OCBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdvcmspCiAgICAgfV07CiAg
ICAgCiAgICAgYXV0byBydW5UZXN0ID0gWyZdIHsKLSAgICAgICAgbG9hZFN1Y2Nlc3MgPSBXVEY6
Om51bGxvcHQ7Ci0gICAgICAgIHdlYlNvY2tldFN1Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAg
ICAgIGxvYWRTdWNjZXNzID0gc3RkOjpudWxsb3B0OworICAgICAgICB3ZWJTb2NrZXRTdWNjZXNz
ID0gc3RkOjpudWxsb3B0OwogICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAg
ICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKQEAgLTEy
MzAsNyArMTIzMCw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0
c1JlZGlyZWN0KQogICAgIH1dOwogCiAgICAgYXV0byBydW5UZXN0ID0gWyZdIHsKLSAgICAgICAg
bG9hZFN1Y2Nlc3MgPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGxvYWRTdWNjZXNzID0gc3RkOjpu
dWxsb3B0OwogICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0xNjAyLDggKzE2MDIsOCBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIFJhbmdlcykKIAogICAgICAgICBhdXRvIHJhbmdlQmVnaW5TdHJpbmcgPSBy
ZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGJlZ2luICsgcmFuZ2VCeXRlcy5sZW5ndGgoKSwg
ZGFzaCAtIGJlZ2luIC0gcmFuZ2VCeXRlcy5sZW5ndGgoKSk7CiAgICAgICAgIGF1dG8gcmFuZ2VF
bmRTdHJpbmcgPSByZXF1ZXN0UmFuZ2VTdHJpbmcuc3Vic3RyaW5nKGRhc2ggKyAxLCBlbmQgLSBk
YXNoIC0gMSk7Ci0gICAgICAgIGF1dG8gcmFuZ2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRf
dD4ocmFuZ2VCZWdpblN0cmluZykudmFsdWVPcigwKTsKLSAgICAgICAgYXV0byByYW5nZUVuZCA9
IHJhbmdlRW5kU3RyaW5nID09ICIqIiA/IFt2aWRlb0RhdGEgbGVuZ3RoXSA6IHBhcnNlSW50ZWdl
cjx1aW50NjRfdD4ocmFuZ2VFbmRTdHJpbmcpLnZhbHVlT3IoMCk7CisgICAgICAgIGF1dG8gcmFu
Z2VCZWdpbiA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocmFuZ2VCZWdpblN0cmluZykudmFsdWVf
b3IoMCk7CisgICAgICAgIGF1dG8gcmFuZ2VFbmQgPSByYW5nZUVuZFN0cmluZyA9PSAiKiIgPyBb
dmlkZW9EYXRhIGxlbmd0aF0gOiBwYXJzZUludGVnZXI8dWludDY0X3Q+KHJhbmdlRW5kU3RyaW5n
KS52YWx1ZV9vcigwKTsKIAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRU
UFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vd2Via2l0Lm9yZy8iXSBzdGF0dXNDb2RlOjIwNiBIVFRQVmVyc2lvbjpAIkhUVFAvMS4x
IiBoZWFkZXJGaWVsZHM6QHsKICAgICAgICAgICAgIEAiQ29udGVudC1SYW5nZSIgOiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImJ5dGVzICVsbHUtJWxsdS8lbHUiLCByYW5nZUJlZ2luLCBy
YW5nZUVuZCwgKHVuc2lnbmVkIGxvbmcpW3ZpZGVvRGF0YSBsZW5ndGhdXSwKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW0KaW5kZXggMjkzMjE0MGQ2M2Y3MWRjMDc0OTEzNmU0NzIzOTAzZjNhZGIzZmIxMC4uNjY0ZDk1
NzNhYmRlOTIwNzEzZmQ5ZGYwYmU1N2VlNTYwNDNiMTk2NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAg
LTM3MSw3ICszNzEsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVz
UGxheUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCiAKICAgICBOU1BvaW50IHBsYXlCdXR0b25DbGlj
a1BvaW50ID0gTlNNYWtlUG9pbnQoMjAsIDI1Nik7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZl
bnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxs
b3B0OwogICAgIE5TVVJMUmVxdWVzdCAqanNQbGF5UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImpzLXBs
YXktd2l0aC1jb250cm9scyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxh
eVJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07CkBAIC0z
ODMsNyArMzgzLDcgQEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1Bs
YXlBZnRlclByZXZlbnRlZEF1dG9wbGF5KQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9w
bGF5RXZlbnRGbGFncyAmIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NF
UlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50Rmxh
Z3NQbGF5YmFja1dhc1ByZXZlbnRlZCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBX
VEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0Owog
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VS
TFJlcXVlc3QgKmF1dG9wbGF5UmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9wbGF5LXdpdGgtY29u
dHJvbHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKQEAgLTM5OCw3ICszOTgsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNl
cywgV2Vic2l0ZVBvbGljaWVzUGxheUFmdGVyUHJldmVudGVkQXV0b3BsYXkpCiAgICAgQVNTRVJU
X1RSVUUoKnJlY2VpdmVkQXV0b3BsYXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdz
SGFzQXVkaW8pOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAm
IF9XS0F1dG9wbGF5RXZlbnRGbGFnc1BsYXliYWNrV2FzUHJldmVudGVkKTsKIAotICAgIHJlY2Vp
dmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZl
bnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VV
Ukw6bmlsXTsKIAogICAgIE5TVVJMUmVxdWVzdCAqbm9BdXRvcGxheVJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJuby1hdXRvcGxheS13aXRoLWNvbnRyb2xzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC00MDcsOSArNDA3LDkg
QEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlBZnRlclByZXZl
bnRlZEF1dG9wbGF5KQogICAgIFt3ZWJWaWV3IG1vdXNlRG93bkF0UG9pbnQ6cGxheUJ1dHRvbkNs
aWNrUG9pbnQgc2ltdWxhdGVQcmVzc3VyZTpOT107CiAgICAgW3dlYlZpZXcgbW91c2VVcEF0UG9p
bnQ6cGxheUJ1dHRvbkNsaWNrUG9pbnRdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
cGxheWVkIl07Ci0gICAgQVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6
bnVsbG9wdCk7CisgICAgQVNTRVJUX1RSVUUocmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6
bnVsbG9wdCk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7Cisg
ICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBbZGVsZWdhdGUgc2V0QXV0b3Bs
YXlQb2xpY3lGb3JVUkw6XihOU1VSTCAqKSB7CkBAIC00NDYsNyArNDQ2LDcgQEAgVEVTVChXZWJw
YWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BsYXlpbmdXaXRoVXNlckdlc3R1cmUpCiAg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBb
d2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIHJlY2VpdmVkQXV0
b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBz
dGQ6Om51bGxvcHQ7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNQb2ludCBwbGF5QnV0dG9u
Q2xpY2tQb2ludCA9IE5TTWFrZVBvaW50KDIwLCA1ODApOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIFRF
U1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aFVzZXJHZXN0
dXJlKQogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRGbGFncyAmIF9XS0F1
dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKICAgICBBU1NFUlRfRkFMU0UoKnJlY2VpdmVkQXV0
b3BsYXlFdmVudEZsYWdzICYgX1dLQXV0b3BsYXlFdmVudEZsYWdzTWVkaWFJc01haW5Db250ZW50
KTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNl
aXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICByZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAidmlkZW8td2l0aC1wbGF5LWJ1dHRvbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNTAyLDcgKzUwMiw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVu
Y2VzLCBXZWJzaXRlUG9saWNpZXNQbGF5aW5nV2l0aG91dEludGVyZmVyZW5jZSkKICAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgcmVjZWl2ZWRBdXRvcGxheUV2
ZW50ID0gV1RGOjpudWxsb3B0OworICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IHN0ZDo6bnVs
bG9wdDsKICAgICBOU1VSTFJlcXVlc3QgKmpzUGxheVJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJqcy1h
dXRvcGxheS1hdWRpbyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJl
cXVlc3RdOwogICAgIHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1dG9wbGF5RXZl
bnREaWRBdXRvcGxheU1lZGlhUGFzdFRocmVzaG9sZFdpdGhvdXRVc2VySW50ZXJmZXJlbmNlKTsK
QEAgLTUyNiwyMCArNTI2LDIwIEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9s
aWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBsYXlpbmcpCiAgICAgW3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVs
bG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgTlNV
UkxSZXF1ZXN0ICpqc1BsYXlSZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAianMtcGxheS13aXRoLWNvbnRy
b2xzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6anNQbGF5UmVxdWVzdF07CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07Ci0gICAgQVNTRVJUX1RSVUUo
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX1RSVUUo
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBXS1BhZ2VTZXRN
dXRlZChbd2ViVmlldyBfcGFnZUZvclRlc3RpbmddLCBfV0tNZWRpYUF1ZGlvTXV0ZWQpOwogICAg
IHJ1blVudGlsUmVjZWl2ZXNBdXRvcGxheUV2ZW50KF9XS0F1dG9wbGF5RXZlbnRVc2VyRGlkSW50
ZXJmZXJlV2l0aFBsYXliYWNrKTsKICAgICBBU1NFUlRfVFJVRSgqcmVjZWl2ZWRBdXRvcGxheUV2
ZW50RmxhZ3MgJiBfV0tBdXRvcGxheUV2ZW50RmxhZ3NIYXNBdWRpbyk7CiAKLSAgICByZWNlaXZl
ZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50
ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmpzUGxheVJlcXVlc3Rd
OwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwotICAgIEFTU0VSVF9U
UlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBXVEY6Om51bGxvcHQpOworICAgIEFTU0VSVF9U
UlVFKHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9PSBzdGQ6Om51bGxvcHQpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGNvbnN0IE5TUG9pbnQgbXV0ZUJ1dHRvbkNsaWNrUG9pbnQgPSBOU01ha2VQ
b2ludCg4MCwgMjU2KTsKQEAgLTU1MiwxMCArNTUyLDEwIEBAIFRFU1QoV2VicGFnZVByZWZlcmVu
Y2VzLCBXZWJzaXRlUG9saWNpZXNVc2VySW50ZXJmZXJlbmNlV2l0aFBsYXlpbmcpCiAgICAgcnVu
VW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoX1dLQXV0b3BsYXlFdmVudFVzZXJEaWRJbnRlcmZl
cmVXaXRoUGxheWJhY2spOwogICAgIEFTU0VSVF9UUlVFKCpyZWNlaXZlZEF1dG9wbGF5RXZlbnRG
bGFncyAmIF9XS0F1dG9wbGF5RXZlbnRGbGFnc0hhc0F1ZGlvKTsKIAotICAgIHJlY2VpdmVkQXV0
b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBz
dGQ6Om51bGxvcHQ7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6anNQbGF5UmVxdWVzdF07CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07Ci0gICAgQVNTRVJUX1RSVUUo
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IFdURjo6bnVsbG9wdCk7CisgICAgQVNTRVJUX1RSVUUo
cmVjZWl2ZWRBdXRvcGxheUV2ZW50ID09IHN0ZDo6bnVsbG9wdCk7CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgY29uc3QgTlNQb2ludCBwbGF5QnV0dG9uQ2xpY2tQb2ludCA9IE5TTWFrZVBvaW50
KDIwLCAyNTYpOwpAQCAtNzY1LDcgKzc2NSw3IEBAIFRFU1QoV2VicGFnZVByZWZlcmVuY2VzLCBX
ZWJzaXRlUG9saWNpZXNVcGRhdGVzKQogICAgIFt3ZWJWaWV3IF91cGRhdGVXZWJwYWdlUHJlZmVy
ZW5jZXM6cHJlZmVyZW5jZXMuZ2V0KCldOwogCiAgICAgLy8gQSBzY3JpcHQgc2hvdWxkIG5vIGxv
bmdlciBiZSBhYmxlIHRvIGF1dG9wbGF5IG1lZGlhLgotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVu
dCA9IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxv
cHQ7CiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInBsYXlWaWRl
bygpIl07CiAgICAgcnVuVW50aWxSZWNlaXZlc0F1dG9wbGF5RXZlbnQoX1dLQXV0b3BsYXlFdmVu
dERpZFByZXZlbnRGcm9tQXV0b3BsYXlpbmcpOwogfQpAQCAtODI4LDcgKzgyOCw3IEBAIFRFU1Qo
V2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrcykKICAgICBb
d2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImRpZC1ub3QtcGxheSJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAib24tcGF1c2UiXTsKIAotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9
IFdURjo6bnVsbG9wdDsKKyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7
CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKIAogICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhBdWRpb0luRnJhbWUgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJhdXRvcGxh
eS1jaGVjay1pbi1pZnJhbWUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKQEAgLTg0Niw3ICs4NDYsNyBAQCBURVNUKFdlYnBh
Z2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzQXV0b3BsYXlRdWlya3MpCiAgICAgW3dlYlZp
ZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBsYXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAIm9uLXBhdXNlIl07CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6
Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3RUaGF0SW5oZXJpdHNHZXN0dXJlID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXV0b3BsYXkt
aW5oZXJpdHMtZ2VzdHVyZS1mcm9tLWRvY3VtZW50IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CkBAIC04NzQsNyArODc0LDcg
QEAgVEVTVChXZWJwYWdlUHJlZmVyZW5jZXMsIFdlYnNpdGVQb2xpY2llc1BlckRvY3VtZW50QXV0
b3BsYXlCZWhhdmlvclF1aXJrcykKICAgICBXS1ByZWZlcmVuY2VzU2V0TmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwogICAgIFdLUGFnZUdyb3VwU2V0UHJl
ZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKFt3ZWJWaWV3IF9wYWdlRm9yVGVzdGluZ10pLCBw
cmVmZXJlbmNlcy5nZXQoKSk7CiAKLSAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51
bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxheUV2ZW50ID0gc3RkOjpudWxsb3B0OwogCiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aE11bHRpcGxlTWVkaWFFbGVtZW50cyA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CiAKQEAgLTkw
Myw3ICs5MDMsNyBAQCBURVNUKFdlYnBhZ2VQcmVmZXJlbmNlcywgV2Vic2l0ZVBvbGljaWVzUGVy
RG9jdW1lbnRBdXRvcGxheUJlaGF2aW9yUXVpcmtzKQogCiAgICAgLy8gTm93IGxldCdzIHRlc3Qg
dGhpcyB3aXRob3V0IHRoZSBxdWlyay4KICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIiIg
YmFzZVVSTDpuaWxdOwotICAgIHJlY2VpdmVkQXV0b3BsYXlFdmVudCA9IFdURjo6bnVsbG9wdDsK
KyAgICByZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBzdGQ6Om51bGxvcHQ7CiAKICAgICBbZGVsZWdh
dGUgc2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzRm9yVVJMOl5fV0tXZWJzaXRlQXV0b3BsYXlRdWly
ayhOU1VSTCAqdXJsKSB7CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTUxLDcgKzk1MSw3IEBAIFRF
U1QoV2VicGFnZVByZWZlcmVuY2VzLCBXZWJzaXRlUG9saWNpZXNBdXRvcGxheVF1aXJrc0FzeW5j
UG9saWN5RGVsZWdhdGUpCiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJkaWQtbm90LXBs
YXkiXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm9uLXBhdXNlIl07CiAKLSAgICBy
ZWNlaXZlZEF1dG9wbGF5RXZlbnQgPSBXVEY6Om51bGxvcHQ7CisgICAgcmVjZWl2ZWRBdXRvcGxh
eUV2ZW50ID0gc3RkOjpudWxsb3B0OwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBi
YXNlVVJMOm5pbF07CiAKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoQXVkaW9JbkZyYW1l
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAiYXV0b3BsYXktY2hlY2staW4taWZyYW1lIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggYjkyMjk3N2UwMDRkM2Y4ZjBmNWExZjQ5
ZGZiZjIwNmQ1M2RlZjk5Ny4uOWEzMTgzMzkxNThhYWU5YjM1YWVhZjVjZGY3YjkyOWMyOWM3NmM2
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMTUyNCw5ICsxNTI0
LDkgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zTWluaW11bikKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJh
bXNbMF0udHlwZSwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSk7
CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1zWzBdLmFsZywgLTcpOwogCi0g
ICAgRVhQRUNUX0VRKHJlc3VsdC50aW1lb3V0LCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9F
UShyZXN1bHQudGltZW91dCwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4
Y2x1ZGVDcmVkZW50aWFscy5zaXplKCksIDBsdSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRo
ZW50aWNhdG9yU2VsZWN0aW9uLCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShyZXN1bHQu
YXV0aGVudGljYXRvclNlbGVjdGlvbiwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1RfRVEocmVz
dWx0LmF0dGVzdGF0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsK
ICAgICBFWFBFQ1RfVFJVRShyZXN1bHQuZXh0ZW5zaW9ucy0+YXBwaWQuaXNOdWxsKCkpOwogICAg
IEVYUEVDVF9FUShyZXN1bHQuZXh0ZW5zaW9ucy0+Z29vZ2xlTGVnYWN5QXBwaWRTdXBwb3J0LCBm
YWxzZSk7CkBAIC0xNTc3LDcgKzE1NzcsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNNYXhpbXVtRGVmYXVsdCkKICAgICBF
WFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5zaXplKCksIHNp
emVvZihpZGVudGlmaWVyKSk7CiAgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQuZXhjbHVkZUNy
ZWRlbnRpYWxzWzBdLmlkVmVjdG9yLmRhdGEoKSwgaWRlbnRpZmllciwgc2l6ZW9mKGlkZW50aWZp
ZXIpKSwgMCk7CiAKLSAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24t
PmF1dGhlbnRpY2F0b3JBdHRhY2htZW50LCBXVEY6Om51bGxvcHQpOworICAgIEVYUEVDVF9FUShy
ZXN1bHQuYXV0aGVudGljYXRvclNlbGVjdGlvbi0+YXV0aGVudGljYXRvckF0dGFjaG1lbnQsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9u
LT5yZXF1aXJlUmVzaWRlbnRLZXksIGZhbHNlKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhl
bnRpY2F0b3JTZWxlY3Rpb24tPnVzZXJWZXJpZmljYXRpb24sIFVzZXJWZXJpZmljYXRpb25SZXF1
aXJlbWVudDo6UHJlZmVycmVkKTsKIApAQCAtMTc5OCw3ICsxNzk4LDcgQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNNaW5pbXVu
KQogICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMoW1tfV0tQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnMgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHJlc3VsdCA9IFtfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9w
dGlvbnMuZ2V0KCldOwogCi0gICAgRVhQRUNUX0VRKHJlc3VsdC50aW1lb3V0LCBXVEY6Om51bGxv
cHQpOworICAgIEVYUEVDVF9FUShyZXN1bHQudGltZW91dCwgc3RkOjpudWxsb3B0KTsKICAgICBF
WFBFQ1RfVFJVRShyZXN1bHQucnBJZC5pc051bGwoKSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5h
bGxvd0NyZWRlbnRpYWxzLnNpemUoKSwgMGx1KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXJW
ZXJpZmljYXRpb24sIFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6UHJlZmVycmVkKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCA4MDRhNGYyMTJlNGUzOTc5ZDEwYzgwZDgx
YjY0YWJkMDQ5NDZhODQzLi42ZjZlZGQxMWY2ZjhlNWUzZjljZjc3NmViMTNhY2U0Mjk5YzhjNzcy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdl
YktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0xMTUsMTQgKzExNSwxNCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGxvYWRVUklBbmRXYWl0Rm9yQXV0b1BsYXllZChjb25zdCBjaGFy
KiB1cmksIFdlYktpdEF1dG9wbGF5UG9saWN5IHBvbGljeSkKICAgICB7Ci0gICAgICAgIG1fYXV0
b3BsYXllZCA9IFdURjo6bnVsbG9wdDsKKyAgICAgICAgbV9hdXRvcGxheWVkID0gc3RkOjpudWxs
b3B0OwogICAgICAgICBtX3dlYnNpdGVQb2xpY2llcyA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0
ZV9wb2xpY2llc19uZXdfd2l0aF9wb2xpY2llcygiYXV0b3BsYXkiLCBwb2xpY3ksIG51bGxwdHIp
KTsKICAgICAgICAgbV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6
VXNlV2l0aFBvbGljeTsKIAogICAgICAgICBsb2FkVVJJKHVyaSk7CiAgICAgICAgIC8vIFJ1biB1
bnRpbCB0aGUgdXNlciBjb250ZW50IG1lc3NhZ2VzIGNvbWUgYmFjayBmcm9tIHRoZSB0ZXN0IEhU
TUwuCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgcmV0dXJu
IG1fYXV0b3BsYXllZC52YWx1ZU9yKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fYXV0b3BsYXll
ZC52YWx1ZV9vcihmYWxzZSk7CiAgICAgfQogCiAgICAgYm9vbCBydW5KU0FuZFdhaXRGb3JBdXRv
UGxheWVkKGNvbnN0IGNoYXIqIHNjcmlwdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKaW5kZXggZmYwNDNkYjYz
ZGY2YTViYTlhZGI3OGEwNjllNjZiMGE3MGU5Mzk0NC4uN2QwY2FlM2RhMzM4YzFjYjIxNTJjNzAz
MDY5ZjI0YzZmZDJiYjMzYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAgLTEwOCw1ICsxMDgsNSBAQCBD
U3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkg
Y29uc3QKIAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fYmFzZVVSTC5wb3J0KCkudmFsdWVPcigwKTsKKyAgICByZXR1cm4gbV9iYXNlVVJM
LnBvcnQoKS52YWx1ZV9vcigwKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvRGljdGlvbmFyeUZ1bmN0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EaWN0aW9u
YXJ5RnVuY3Rpb25zLmgKaW5kZXggYmEzMzBmMGZjNjIwODMxODhlZjcwMjk5NGVlNGQyMWMwOTFl
NDU4NS4uODRjOWQ5MTMxOTExZWI2NzcxNjgyNjc0NWZiY2VkYmFhZWE3ZDdiYSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EaWN0aW9uYXJ5RnVuY3Rpb25zLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9EaWN0aW9uYXJ5RnVuY3Rpb25zLmgKQEAgLTg3LDcgKzg3LDcg
QEAgaW5saW5lIGRvdWJsZSBkb3VibGVWYWx1ZShXS1R5cGVSZWYgdmFsdWUpCiAKIGlubGluZSBP
cHRpb25hbDxkb3VibGU+IG9wdGlvbmFsRG91YmxlVmFsdWUoV0tUeXBlUmVmIHZhbHVlKQogewot
ICAgIHJldHVybiB2YWx1ZSAmJiBXS0dldFR5cGVJRCh2YWx1ZSkgPT0gV0tEb3VibGVHZXRUeXBl
SUQoKSA/IG1ha2VPcHRpb25hbChXS0RvdWJsZUdldFZhbHVlKHN0YXRpY19jYXN0PFdLRG91Ymxl
UmVmPih2YWx1ZSkpKSA6IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gdmFsdWUgJiYgV0tHZXRU
eXBlSUQodmFsdWUpID09IFdLRG91YmxlR2V0VHlwZUlEKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwo
V0tEb3VibGVHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4odmFsdWUpKSkgOiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIGlubGluZSBXS1N0cmluZ1JlZiBzdHJpbmdWYWx1ZShXS1R5cGVSZWYg
dmFsdWUpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dlb2xvY2F0aW9uUHJv
dmlkZXJNb2NrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRl
ck1vY2suY3BwCmluZGV4IGM0MjUxYjMwMWZiNTU0YzdlYWU2MDMxNjI3NTk2ZjUwYjc4YTI1OWQu
LmMyYTYzYjM4YjU1NzhkODRiNmUyMDRmNzQwYjM0YzViM2NhYTg2YjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvR2VvbG9jYXRpb25Qcm92aWRlck1vY2suY3BwCkBAIC02NSw3
ICs2NSw3IEBAIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrOjp+R2VvbG9jYXRpb25Qcm92aWRlck1v
Y2soKQogCiB2b2lkIEdlb2xvY2F0aW9uUHJvdmlkZXJNb2NrOjpzZXRQb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgT3B0aW9uYWw8ZG91
YmxlPiBhbHRpdHVkZSwgT3B0aW9uYWw8ZG91YmxlPiBhbHRpdHVkZUFjY3VyYWN5LCBPcHRpb25h
bDxkb3VibGU+IGhlYWRpbmcsIE9wdGlvbmFsPGRvdWJsZT4gc3BlZWQsIE9wdGlvbmFsPGRvdWJs
ZT4gZmxvb3JMZXZlbCkKIHsKLSAgICBtX3Bvc2l0aW9uLmFkb3B0KFdLR2VvbG9jYXRpb25Qb3Np
dGlvbkNyZWF0ZV9jKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMo
KSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlLmhhc1ZhbHVlKCksIGFs
dGl0dWRlLnZhbHVlT3IoMCksIGFsdGl0dWRlQWNjdXJhY3kuaGFzVmFsdWUoKSwgYWx0aXR1ZGVB
Y2N1cmFjeS52YWx1ZU9yKDApLCBoZWFkaW5nLmhhc1ZhbHVlKCksIGhlYWRpbmcudmFsdWVPcigw
KSwgc3BlZWQuaGFzVmFsdWUoKSwgc3BlZWQudmFsdWVPcigwKSwgZmxvb3JMZXZlbC5oYXNWYWx1
ZSgpLCBmbG9vckxldmVsLnZhbHVlT3IoMCkpKTsKKyAgICBtX3Bvc2l0aW9uLmFkb3B0KFdLR2Vv
bG9jYXRpb25Qb3NpdGlvbkNyZWF0ZV9jKFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3ksIGFsdGl0dWRlLmhh
c1ZhbHVlKCksIGFsdGl0dWRlLnZhbHVlX29yKDApLCBhbHRpdHVkZUFjY3VyYWN5Lmhhc1ZhbHVl
KCksIGFsdGl0dWRlQWNjdXJhY3kudmFsdWVfb3IoMCksIGhlYWRpbmcuaGFzVmFsdWUoKSwgaGVh
ZGluZy52YWx1ZV9vcigwKSwgc3BlZWQuaGFzVmFsdWUoKSwgc3BlZWQudmFsdWVfb3IoMCksIGZs
b29yTGV2ZWwuaGFzVmFsdWUoKSwgZmxvb3JMZXZlbC52YWx1ZV9vcigwKSkpOwogCiAgICAgbV9o
YXNFcnJvciA9IGZhbHNlOwogICAgIG1fZXJyb3JNZXNzYWdlLmNsZWFyKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5l
cmF0b3JUZXN0UnVubmVyLnBtIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQppbmRleCA3OWU2ZDQ4ZjJmNTlh
ZTJmOGQ2ZmIzNzkxYmQ4YzhhZWU1Mjc2MzQ0Li45NTFiYzBhZjU5ZWIxZjU4ODZjNzEzMTMxOWNm
NjZlZGY3OGM1MTJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RS
dW5uZXIucG0KQEAgLTUyOSw3ICs1MjksNyBAQCBzdWIgX3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVj
bGFyYXRpb24KICAgICBpZiAoJHBsYXRmb3JtVHlwZSBlcSAiSlNWYWx1ZVJlZiIpIHsKICAgICAg
ICAgJG51bGxWYWx1ZSA9ICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSI7CiAgICAgfSBl
bHNpZiAoZGVmaW5lZCAkbm9uUG9pbnRlclR5cGVzeyRwbGF0Zm9ybVR5cGV9IHx8ICQkc2VsZntj
b2RlR2VuZXJhdG9yfS0+SXNOdW1lcmljVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJG51bGxWYWx1
ZSA9ICR0eXBlLT5pc051bGxhYmxlID8gIldURjo6bnVsbG9wdCIgOiAiJHBsYXRmb3JtVHlwZSgp
IjsKKyAgICAgICAgJG51bGxWYWx1ZSA9ICR0eXBlLT5pc051bGxhYmxlID8gInN0ZDo6bnVsbG9w
dCIgOiAiJHBsYXRmb3JtVHlwZSgpIjsKICAgICB9CiAKICAgICByZXR1cm4gImJvb2wgJHZhcmlh
YmxlTmFtZSA9ICRjb25kaXRpb24gJiYgJGNvbnN0cnVjdG9yOyIgaWYgJGNvbmRpdGlvbiAmJiAk
cGxhdGZvcm1UeXBlIGVxICJib29sIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKaW5kZXggNjVhM2EwNGU2MzNkYzc4NzJhN2QwNWM5YjRlYTEyYTBmMzBlYTU4
ZC4uZWNlMzJlYTM3YTc2YzJkMDRlN2Y0Mjc3ODRjNDA5MzQzM2YwZGYxNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTEwOTQsNyArMTA5NCw3IEBA
IGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0a0F0dHJpYnV0ZU5hbWUuc3RhcnRzV2l0aCgi
cm93IikgfHwgYXRrQXR0cmlidXRlTmFtZS5zdGFydHNXaXRoKCJjb2wiKSkgewogICAgICAgICBT
dHJpbmcgYXR0cmlidXRlVmFsdWUgPSBnZXRBdHRyaWJ1dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpF
Q1QobV9lbGVtZW50LmdldCgpKSwgT2JqZWN0QXR0cmlidXRlVHlwZSwgYXRrQXR0cmlidXRlTmFt
ZSk7CiAgICAgICAgIGlmICghYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
cmV0dXJuIHBhcnNlSW50ZWdlckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oYXR0cmlidXRlVmFs
dWUpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyQWxsb3dpbmdU
cmFpbGluZ0p1bms8aW50PihhdHRyaWJ1dGVWYWx1ZSkudmFsdWVfb3IoMCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIDA7CkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdl
ckFsbG93aW5nVHJhaWxpbmdKdW5rPGludD4oZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtf
T0JKRUNUKG1fZWxlbWVudC5nZXQoKSksIE9iamVjdEF0dHJpYnV0ZVR5cGUsICJsZXZlbCIpKS52
YWx1ZU9yKDApOworICAgIHJldHVybiBwYXJzZUludGVnZXJBbGxvd2luZ1RyYWlsaW5nSnVuazxp
bnQ+KGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVDVChtX2VsZW1lbnQuZ2V0KCkp
LCBPYmplY3RBdHRyaWJ1dGVUeXBlLCAibGV2ZWwiKSkudmFsdWVfb3IoMCk7CiB9CiAKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXgg
ZjY4MmNhMjk4NzViMzY2ZWIxNmI1ZTc5ZjA2ZGQwZTBhNTFmYmQwNy4uMWU0YjI2MDFiZTkzNGMx
YjVmOTQ5OWMxNTQ5ZDg1ZjFmOGJhOWE5YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTgzNyw3ICs4MzcsNyBAQCBzdGF0aWMgT3B0
aW9uYWw8dWludDMyX3Q+IGtleUNvZGVGb3JET01GdW5jdGlvbktleShOU1N0cmluZyAqa2V5KQog
ICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJGJWQiLCBpXV0pCiAgICAgICAgICAgICByZXR1cm4ga0hJRFVzYWdlX0tleWJvYXJkRjEz
ICsgaSAtIDEzOwogICAgIH0KLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaGlkVXNhZ2VDb2RlRm9y
Q2hhcmFjdGVyKE5TU3RyaW5nICprZXkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggZTJkZDdkOGRhZGM0ZDc5MTc1NmE5
M2RmODI0MjE5MGQzOWIwNTAzOS4uYmNmNGJiYzY1M2U2MzNhMTVlNDExZmYxMTc4NThlODcyYTc5
ODgyOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQpAQCAtNzU4LDcgKzc1OCw3IEBAIE9wdGlvbmFsPGJvb2w+IFVJU2NyaXB0
Q29udHJvbGxlcklPUzo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0CiAgICAgaWYgKHdlYlZp
ZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUpCiAgICAgICAgIHJldHVybiB3ZWJWaWV3Ll9zdGFibGVT
dGF0ZU92ZXJyaWRlLmJvb2xWYWx1ZTsKIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNl
dFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gb3ZlcnJpZGVWYWx1ZSkK
</data>
<flag name="review"
          id="451229"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>